[Pkg-mozext-commits] [firebug] 01/04: Imported Upstream version 1.12.2
David Prévot
taffit at alioth.debian.org
Sun Sep 29 14:38:51 UTC 2013
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository firebug.
commit 3b09f43c0713fcdbb0787d583acbab1c1c6ee6c1
Author: David Prévot <taffit at debian.org>
Date: Sun Sep 29 10:15:16 2013 -0400
Imported Upstream version 1.12.2
---
bootstrap.js | 280 +-
build.js | 894 +-
chrome.manifest | 110 +-
content/firebug/accessible/a11y.js | 6284 ++++++-------
content/firebug/branch.properties | 14 +-
content/firebug/bti/inProcess/browser.js | 1784 ++--
content/firebug/bti/inProcess/compilationunit.js | 442 +-
content/firebug/bti/inProcess/javascripttool.js | 488 +-
content/firebug/bti/inProcess/webApp.js | 66 +-
content/firebug/chrome/activation.js | 788 +-
content/firebug/chrome/annotations.js | 454 +-
content/firebug/chrome/balloonNote.js | 118 +-
content/firebug/chrome/chrome.js | 4480 +++++-----
content/firebug/chrome/firefox.js | 332 +-
content/firebug/chrome/infotip.js | 372 +-
content/firebug/chrome/knownIssues.js | 84 +-
content/firebug/chrome/menu.js | 490 +-
content/firebug/chrome/navigationHistory.js | 588 +-
content/firebug/chrome/panelActivation.js | 808 +-
content/firebug/chrome/plugin.js | 276 +-
content/firebug/chrome/privacy.js | 228 +-
content/firebug/chrome/reps.js | 6140 ++++++-------
content/firebug/chrome/searchBox.js | 630 +-
content/firebug/chrome/shortcuts.js | 314 +-
content/firebug/chrome/tabContext.js | 1384 +--
content/firebug/chrome/tabWatcher.js | 2604 +++---
content/firebug/chrome/tableRep.js | 686 +-
content/firebug/chrome/toggleSidePanels.js | 310 +-
content/firebug/chrome/toolbar.js | 220 +-
content/firebug/chrome/window.js | 504 +-
content/firebug/console/autoCompleter.js | 4876 +++++-----
content/firebug/console/closureInspector.js | 852 +-
content/firebug/console/commandEditor.js | 802 +-
content/firebug/console/commandHistory.js | 448 +-
content/firebug/console/commandLine.js | 1500 ++--
content/firebug/console/commandLineAPI.js | 514 +-
content/firebug/console/commandLineExposed.js | 1016 +--
content/firebug/console/commandLinePopup.js | 490 +-
.../firebug/console/commands/commandLineHelp.js | 642 +-
.../firebug/console/commands/commandLineInclude.js | 1220 +--
content/firebug/console/commands/eventMonitor.js | 824 +-
.../firebug/console/commands/getEventListeners.js | 188 +-
.../console/commands/lastCommandLineResult.js | 142 +-
content/firebug/console/commands/profiler.js | 1178 +--
.../firebug/console/commands/useInCommandLine.js | 268 +-
content/firebug/console/console.js | 935 +-
content/firebug/console/consoleExposed.js | 1128 +--
content/firebug/console/consoleInjector.js | 226 +-
content/firebug/console/consolePanel.js | 2138 ++---
content/firebug/console/errorCopy.js | 68 +-
content/firebug/console/errorMessageObj.js | 210 +-
content/firebug/console/errorMessageRep.js | 940 +-
content/firebug/console/errors.js | 1870 ++--
content/firebug/console/exceptionRep.js | 196 +-
content/firebug/console/functionMonitor.js | 382 +-
content/firebug/console/memoryProfiler.js | 1728 ++--
content/firebug/console/performanceTiming.js | 1265 +--
content/firebug/cookies/baseObserver.js | 74 +-
content/firebug/cookies/breakpoints.js | 814 +-
content/firebug/cookies/cookie.js | 356 +-
content/firebug/cookies/cookieClipboard.js | 326 +-
content/firebug/cookies/cookieEvents.js | 116 +-
content/firebug/cookies/cookieModule.js | 2878 +++---
content/firebug/cookies/cookieObserver.js | 910 +-
content/firebug/cookies/cookiePanel.js | 1182 +--
content/firebug/cookies/cookiePanel.xul | 306 +-
content/firebug/cookies/cookiePermissions.js | 480 +-
content/firebug/cookies/cookieReps.js | 2894 +++---
content/firebug/cookies/cookieUtils.js | 376 +-
content/firebug/cookies/cookies.css | 10 +-
content/firebug/cookies/dateTimePicker.xml | 104 +-
content/firebug/cookies/editCookie.css | 22 +-
content/firebug/cookies/editCookie.js | 564 +-
content/firebug/cookies/editCookie.xul | 150 +-
content/firebug/cookies/headerResizer.js | 458 +-
content/firebug/cookies/httpObserver.js | 532 +-
content/firebug/cookies/legacy.js | 168 +-
content/firebug/cookies/menuUtils.js | 152 +-
content/firebug/cookies/popupFilterPanel.xml | 94 +-
content/firebug/css/computedPanel.js | 1817 ++--
content/firebug/css/cssModule.js | 910 +-
content/firebug/css/cssPanel.js | 6480 +++++++-------
content/firebug/css/cssPanelMutationObserver.js | 356 +-
content/firebug/css/cssPanelUpdater.js | 430 +-
content/firebug/css/cssReps.js | 446 +-
content/firebug/css/loadHandler.js | 128 +-
content/firebug/css/selectorEditor.js | 504 +-
content/firebug/css/selectorModule.js | 212 +-
content/firebug/css/selectorPanel.js | 928 +-
content/firebug/css/stylePanel.js | 1950 ++--
content/firebug/debugger/debuggerLib.js | 306 +-
content/firebug/dom/domBasePanel.js | 2114 ++---
content/firebug/dom/domBreakpointGroup.js | 620 +-
content/firebug/dom/domEditor.js | 136 +-
content/firebug/dom/domMemberProvider.js | 1092 +--
content/firebug/dom/domModule.js | 158 +-
content/firebug/dom/domPanel.js | 360 +-
content/firebug/dom/domReps.js | 718 +-
content/firebug/dom/domSidePanel.js | 84 +-
content/firebug/dom/toggleBranch.js | 226 +-
content/firebug/editor/editor.js | 2976 +++----
content/firebug/editor/editorSelector.js | 230 +-
content/firebug/firebug.css | 846 +-
content/firebug/firebug.js | 5616 ++++++------
content/firebug/firebugOverlay.xul | 1078 +--
content/firebug/firebugui/filters.svg | 36 -
content/firebug/firebugui/panel.html | 26 +-
content/firebug/firefox/bindings.xml | 3904 ++++----
content/firebug/firefox/browserCommands.js | 214 +-
content/firebug/firefox/browserMenu.js | 1064 +--
content/firebug/firefox/browserOverlay.css | 360 +-
content/firebug/firefox/browserOverlay.js | 1112 +--
content/firebug/firefox/browserOverlayLib.js | 554 +-
content/firebug/firefox/browserToolbar.js | 278 +-
content/firebug/firefox/customizeShortcuts.js | 622 +-
content/firebug/firefox/customizeShortcuts.xul | 64 +-
.../firefox/external-editors/changeeditor.js | 538 +-
.../firefox/external-editors/changeeditor.xul | 108 +-
.../firebug/firefox/external-editors/editors.js | 904 +-
.../firebug/firefox/external-editors/editors.xul | 186 +-
.../firefox/external-editors/externalEditors.js | 1490 ++--
content/firebug/firefox/firebug.xul | 164 +-
content/firebug/firefox/firebugFrame.xul | 166 +-
content/firebug/firefox/firebugMenuOverlay.xul | 216 +-
content/firebug/firefox/macBrowserOverlay.css | 88 +-
content/firebug/firefox/panelBarWaiter.js | 254 +-
.../firebug/firefox/start-button/startButton.xml | 52 +-
.../firefox/start-button/startButtonOverlay.js | 470 +-
content/firebug/html/highlighter.css | 260 +-
content/firebug/html/highlighterCache.js | 318 +-
content/firebug/html/htmlLib.js | 1720 ++--
content/firebug/html/htmlPanel.js | 6332 ++++++-------
content/firebug/html/insideOutBox.js | 1468 +--
content/firebug/html/inspector.js | 3196 +++----
content/firebug/html/layout.js | 1186 +--
content/firebug/html/quickInfoBox.js | 558 +-
content/firebug/js/breakpoint.js | 2792 +++---
content/firebug/js/callstack.js | 920 +-
content/firebug/js/debugger.js | 5980 ++++++-------
content/firebug/js/fbs.js | 52 +-
content/firebug/js/scriptPanel.js | 3972 ++++-----
content/firebug/js/sourceBox.js | 2460 ++---
content/firebug/js/sourceCache.js | 860 +-
content/firebug/js/sourceFile.js | 2140 ++---
content/firebug/js/sourceLink.js | 84 +-
content/firebug/js/stackFrame.js | 1476 +--
content/firebug/js/tabCache.js | 1268 +--
content/firebug/js/watchPanel.js | 920 +-
content/firebug/legacy.js | 158 +-
content/firebug/lib/array.js | 418 +-
content/firebug/lib/css.js | 5758 ++++++------
content/firebug/lib/deprecated.js | 136 +-
content/firebug/lib/dom.js | 5530 ++++++------
content/firebug/lib/domplate.js | 2652 +++---
content/firebug/lib/dragdrop.js | 432 +-
content/firebug/lib/events.js | 1136 +--
content/firebug/lib/fonts.js | 232 +-
content/firebug/lib/http.js | 1068 +--
content/firebug/lib/json.js | 198 +-
content/firebug/lib/keywords.js | 126 +-
content/firebug/lib/lib.js | 324 +-
content/firebug/lib/locale.js | 28 +-
content/firebug/lib/object.js | 530 +-
content/firebug/lib/options.js | 912 +-
content/firebug/lib/persist.js | 280 +-
content/firebug/lib/search.js | 700 +-
content/firebug/lib/string.js | 1878 ++--
content/firebug/lib/system.js | 352 +-
content/firebug/lib/tool.js | 70 +-
content/firebug/lib/trace.js | 124 +-
content/firebug/lib/url.js | 1154 +--
content/firebug/lib/wrapper.js | 316 +-
content/firebug/lib/xml.js | 696 +-
content/firebug/lib/xpath.js | 488 +-
content/firebug/lib/xpcom.js | 170 +-
content/firebug/main.js | 378 +-
content/firebug/moduleConfig.js | 398 +-
content/firebug/net/fontViewer.js | 1412 +--
content/firebug/net/httpActivityObserver.js | 692 +-
content/firebug/net/jsonViewer.js | 566 +-
content/firebug/net/netCacheReader.js | 626 +-
content/firebug/net/netDebugger.js | 510 +-
content/firebug/net/netMonitor.js | 1622 ++--
content/firebug/net/netPanel.js | 3424 +++----
content/firebug/net/netProgress.js | 2344 ++---
content/firebug/net/netReps.js | 3798 ++++----
content/firebug/net/netUtils.js | 1310 +--
content/firebug/net/requestObserver.js | 434 +-
content/firebug/net/responseObserver.js | 794 +-
content/firebug/net/spy.js | 2752 +++---
content/firebug/net/svgViewer.js | 366 +-
content/firebug/net/timeInfoTip.js | 520 +-
content/firebug/net/xmlViewer.js | 382 +-
content/firebug/trace.js | 94 +-
content/firebug/trace/debug.js | 124 +-
content/firebug/trace/traceListener.js | 110 +-
content/firebug/trace/traceModule.js | 74 +-
defaults/preferences/cookies.js | 34 +-
defaults/preferences/firebug.js | 344 +-
defaults/preferences/tracingConsole.js | 132 +-
install.rdf | 193 +-
license.txt | 60 +-
locale/bg/cookies.properties | 544 +-
locale/bg/firebug-amo.properties | 14 +-
locale/bg/firebug-tracing.properties | 188 +-
locale/bg/firebug.properties | 3012 +++----
locale/ca-AD/cookies.properties | 544 +-
locale/ca-AD/firebug-amo.properties | 14 +-
locale/ca-AD/firebug-tracing.properties | 188 +-
locale/ca-AD/firebug.properties | 3012 +++----
locale/cs/cookies.properties | 544 +-
locale/cs/firebug-amo.properties | 14 +-
locale/cs/firebug-tracing.properties | 188 +-
locale/cs/firebug.properties | 3012 +++----
locale/da/cookies.properties | 544 +-
locale/da/firebug-amo.properties | 14 +-
locale/da/firebug-tracing.properties | 188 +-
locale/da/firebug.properties | 3012 +++----
locale/de/cookies.properties | 552 +-
locale/de/firebug-amo.properties | 14 +-
locale/de/firebug-tracing.properties | 188 +-
locale/de/firebug.properties | 3404 +++----
locale/de/selectors.properties | 52 +-
locale/el/cookies.properties | 544 +-
locale/el/firebug-amo.properties | 14 +-
locale/el/firebug-tracing.properties | 188 +-
locale/el/firebug.properties | 3012 +++----
locale/en-US/cookies.properties | 554 +-
locale/en-US/firebug-amo.properties | 14 +-
locale/en-US/firebug-tracing.properties | 188 +-
locale/en-US/firebug.properties | 3510 ++++----
locale/en-US/selectors.properties | 50 +-
locale/es-AR/cookies.properties | 544 +-
locale/es-AR/firebug-amo.properties | 14 +-
locale/es-AR/firebug-tracing.properties | 188 +-
locale/es-AR/firebug.properties | 3012 +++----
locale/es-ES/cookies.properties | 276 +-
locale/es-ES/firebug-amo.properties | 6 +-
locale/es-ES/firebug-tracing.properties | 182 +-
locale/es-ES/firebug.properties | 2026 ++---
locale/es-ES/selectors.properties | 20 +-
locale/es/cookies.properties | 544 +-
locale/es/firebug-amo.properties | 14 +-
locale/es/firebug-tracing.properties | 188 +-
locale/es/firebug.properties | 3012 +++----
locale/eu/cookies.properties | 544 +-
locale/eu/firebug-amo.properties | 14 +-
locale/eu/firebug-tracing.properties | 188 +-
locale/eu/firebug.properties | 3012 +++----
locale/fa/cookies.properties | 544 +-
locale/fa/firebug-amo.properties | 14 +-
locale/fa/firebug-tracing.properties | 188 +-
locale/fa/firebug.properties | 3012 +++----
locale/fr/cookies.properties | 544 +-
locale/fr/firebug-amo.properties | 14 +-
locale/fr/firebug-tracing.properties | 188 +-
locale/fr/firebug.properties | 3012 +++----
locale/he/cookies.properties | 544 +-
locale/he/firebug-amo.properties | 14 +-
locale/he/firebug-tracing.properties | 188 +-
locale/he/firebug.properties | 3012 +++----
locale/hr-HR/cookies.properties | 544 +-
locale/hr-HR/firebug-amo.properties | 14 +-
locale/hr-HR/firebug-tracing.properties | 188 +-
locale/hr-HR/firebug.properties | 3012 +++----
locale/hu-HU/cookies.properties | 544 +-
locale/hu-HU/firebug-amo.properties | 14 +-
locale/hu-HU/firebug-tracing.properties | 188 +-
locale/hu-HU/firebug.properties | 3012 +++----
locale/hy-AM/cookies.properties | 544 +-
locale/hy-AM/firebug-amo.properties | 14 +-
locale/hy-AM/firebug-tracing.properties | 188 +-
locale/hy-AM/firebug.properties | 3012 +++----
locale/is-IS/cookies.properties | 544 +-
locale/is-IS/firebug-amo.properties | 14 +-
locale/is-IS/firebug-tracing.properties | 188 +-
locale/is-IS/firebug.properties | 3012 +++----
locale/it/cookies.properties | 544 +-
locale/it/firebug-amo.properties | 14 +-
locale/it/firebug-tracing.properties | 188 +-
locale/it/firebug.properties | 3012 +++----
locale/ja-JP/cookies.properties | 552 +-
locale/ja-JP/firebug-amo.properties | 14 +-
locale/ja-JP/firebug-tracing.properties | 188 +-
locale/ja-JP/firebug.properties | 3404 +++----
locale/ja-JP/selectors.properties | 52 +-
locale/ko-KR/cookies.properties | 544 +-
locale/ko-KR/firebug-amo.properties | 14 +-
locale/ko-KR/firebug-tracing.properties | 188 +-
locale/ko-KR/firebug.properties | 3012 +++----
locale/nl/cookies.properties | 544 +-
locale/nl/firebug-amo.properties | 14 +-
locale/nl/firebug-tracing.properties | 188 +-
locale/nl/firebug.properties | 3012 +++----
locale/pl/cookies.properties | 552 +-
locale/pl/firebug-amo.properties | 12 +-
locale/pl/firebug-tracing.properties | 188 +-
locale/pl/firebug.properties | 3106 +++----
locale/pl/selectors.properties | 20 +-
locale/pt-BR/cookies.properties | 544 +-
locale/pt-BR/firebug-amo.properties | 14 +-
locale/pt-BR/firebug-tracing.properties | 188 +-
locale/pt-BR/firebug.properties | 3012 +++----
locale/pt-PT/cookies.properties | 544 +-
locale/pt-PT/firebug-amo.properties | 14 +-
locale/pt-PT/firebug-tracing.properties | 188 +-
locale/pt-PT/firebug.properties | 3012 +++----
locale/ro-RO/cookies.properties | 544 +-
locale/ro-RO/firebug-amo.properties | 14 +-
locale/ro-RO/firebug-tracing.properties | 188 +-
locale/ro-RO/firebug.properties | 3012 +++----
locale/ru/cookies.properties | 276 +-
locale/ru/firebug-amo.properties | 6 +-
locale/ru/firebug-tracing.properties | 182 +-
locale/ru/firebug.properties | 2026 ++---
locale/ru/selectors.properties | 52 +-
locale/sk-SK/cookies.properties | 554 +-
locale/sk-SK/firebug-amo.properties | 14 +-
locale/sk-SK/firebug-tracing.properties | 188 +-
locale/sk-SK/firebug.properties | 3492 ++++----
locale/sk-SK/selectors.properties | 50 +-
locale/sl-SI/cookies.properties | 544 +-
locale/sl-SI/firebug-amo.properties | 14 +-
locale/sl-SI/firebug-tracing.properties | 188 +-
locale/sl-SI/firebug.properties | 3012 +++----
locale/sr/cookies.properties | 544 +-
locale/sr/firebug-amo.properties | 14 +-
locale/sr/firebug-tracing.properties | 188 +-
locale/sr/firebug.properties | 3012 +++----
locale/sv-SE/cookies.properties | 276 +-
locale/sv-SE/firebug-amo.properties | 6 +-
locale/sv-SE/firebug-tracing.properties | 188 +-
locale/sv-SE/firebug.properties | 2192 ++---
locale/sv-SE/selectors.properties | 20 +-
locale/tr/cookies.properties | 544 +-
locale/tr/firebug-amo.properties | 14 +-
locale/tr/firebug-tracing.properties | 188 +-
locale/tr/firebug.properties | 3012 +++----
locale/uk-UA/cookies.properties | 544 +-
locale/uk-UA/firebug-amo.properties | 14 +-
locale/uk-UA/firebug-tracing.properties | 188 +-
locale/uk-UA/firebug.properties | 3012 +++----
locale/vi/cookies.properties | 544 +-
locale/vi/firebug-amo.properties | 14 +-
locale/vi/firebug-tracing.properties | 188 +-
locale/vi/firebug.properties | 3012 +++----
locale/zh-CN/cookies.properties | 552 +-
locale/zh-CN/firebug-amo.properties | 14 +-
locale/zh-CN/firebug-tracing.properties | 188 +-
locale/zh-CN/firebug.properties | 3404 +++----
locale/zh-CN/selectors.properties | 52 +-
locale/zh-TW/cookies.properties | 552 +-
locale/zh-TW/firebug-amo.properties | 6 +-
locale/zh-TW/firebug-tracing.properties | 188 +-
locale/zh-TW/firebug.properties | 3404 +++----
locale/zh-TW/selectors.properties | 52 +-
modules/debuggerHalter.js | 14 +-
modules/fbtrace.js | 24 +-
modules/firebug-http-observer.js | 452 +-
modules/firebug-service.js | 9396 ++++++++++----------
modules/firebug-trace-service.js | 578 +-
modules/gcli.js | 346 +-
modules/loader.js | 414 +-
modules/locale.js | 554 +-
modules/mini-require.js | 458 +-
modules/observer-service.js | 254 +-
modules/prefLoader.js | 310 +-
modules/require-debug.js | 370 +-
modules/require.js | 4106 ++++-----
modules/storageService.js | 776 +-
skin/classic/balloonNote.css | 264 +-
skin/classic/bindings.xml | 38 +-
skin/classic/breakpoint.css | 250 +-
skin/classic/callstack.css | 164 +-
skin/classic/commandLinePopup.png | Bin 0 -> 310 bytes
skin/classic/commandLinePopup.svg | 237 -
skin/classic/console.css | 1852 ++--
skin/classic/cookies/cookies.css | 980 +-
skin/classic/cookies/editCookie.css | 10 +-
skin/classic/cookies/trace.css | 12 +-
skin/classic/css.css | 458 +-
skin/classic/customizeShortcuts.css | 20 +-
skin/classic/debugger.css | 578 +-
skin/classic/dom.css | 450 +-
skin/classic/firebug.css | 1149 +--
skin/classic/fontViewer.css | 178 +-
skin/classic/html.css | 490 +-
skin/classic/jsonViewer.css | 86 +-
skin/classic/layout.css | 482 +-
skin/classic/linux/firebug.css | 12 +-
skin/classic/mac/debugger.css | 778 +-
skin/classic/mac/firebug.css | 1114 +--
skin/classic/mac/left.svg | 53 -
skin/classic/mac/panel.css | 332 +-
skin/classic/mac/right.svg | 53 -
skin/classic/mac/window.css | 22 +-
skin/classic/migrationArrow.svg | 15 -
skin/classic/net.css | 1576 ++--
skin/classic/orion-firebug.css | 58 +-
skin/classic/panel.css | 40 +-
skin/classic/panelbase.css | 836 +-
skin/classic/performanceTiming.css | 384 +-
skin/classic/quickInfoBox.css | 176 +-
skin/classic/selectors.css | 100 +-
skin/classic/tableRep.css | 137 +-
skin/classic/timeInfoTip.css | 116 +-
skin/classic/warning.svg | 49 -
skin/classic/win/debugger.css | 64 +-
skin/classic/win/firebug.css | 906 +-
skin/classic/win/left.svg | 166 -
skin/classic/win/panel.css | 138 +-
skin/classic/win/right.svg | 188 -
skin/classic/win/window.css | 4 +-
skin/classic/window.css | 8 +-
414 files changed, 184630 insertions(+), 185307 deletions(-)
diff --git a/bootstrap.js b/bootstrap.js
index 637a48d..05740fc 100644
--- a/bootstrap.js
+++ b/bootstrap.js
@@ -1,140 +1,140 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-// List of firebug modules that must be loaded at startup and unloaded on shutdown.
-// !important every new module loaded with Cu.import must be added here
-var FIREBUG_MODULES = [
- "resource://firebug/debuggerHalter.js",
- "resource://firebug/fbtrace.js",
- "resource://firebug/firebug-http-observer.js",
- "resource://firebug/firebug-service.js",
- "resource://firebug/firebug-trace-service.js",
- "resource://firebug/gcli.js",
- "resource://firebug/loader.js",
- "resource://firebug/locale.js",
- "resource://firebug/mini-require.js",
- "resource://firebug/observer-service.js",
- "resource://firebug/prefLoader.js",
- "resource://firebug/require-debug.js",
- "resource://firebug/require.js",
- "resource://firebug/storageService.js"
-];
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-// ********************************************************************************************* //
-// Bootstrap API
-
-function install(params, reason)
-{
-}
-
-function uninstall(params, reason)
-{
-}
-
-function startup(params, reason)
-{
- // Register the resource:// mappings
- var res = Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler);
- var uiURI = Services.io.newURI(__SCRIPT_URI_SPEC__ + "/../content/firebug/firebugui/", null, null);
- var resourceURI = Services.io.newURI(__SCRIPT_URI_SPEC__ + "/../modules/", null, null);
- res.setSubstitution("firebug", resourceURI);
- res.setSubstitution("firebugui", uiURI);
- res.setSubstitution("moduleloader", resourceURI);
-
- Cu.import("resource://firebug/prefLoader.js");
-
- // Register default preferences
- PrefLoader.loadDefaultPrefs(params.installPath, "firebug.js");
- PrefLoader.loadDefaultPrefs(params.installPath, "cookies.js");
- PrefLoader.loadDefaultPrefs(params.installPath, "tracingConsole.js");
-
- // Load the overlay manager
- Cu.import("resource://firebug/loader.js");
-
- //register extensions
- FirebugLoader.startup();
-
- // Load Firebug into all existing browser windows.
- var enumerator = Services.wm.getEnumerator("navigator:browser");
- while (enumerator.hasMoreElements())
- FirebugLoader.loadIntoWindow(enumerator.getNext(), reason);
-
- // Listen for new windows, Firebug must be loaded into them too.
- Services.obs.addObserver(windowWatcher, "chrome-document-global-created", false);
-
- // GCLI commands
- Cu.import("resource://firebug/gcli.js");
- FirebugGCLICommands.startup();
-}
-
-function shutdown(params, reason)
-{
- // Don't need to clean anything up if the application is shutting down
- if (reason == APP_SHUTDOWN)
- return;
-
- // Remove "new window" listener.
- Services.obs.removeObserver(windowWatcher, "chrome-document-global-created");
-
- // remove from all windows
- try
- {
- FirebugLoader.shutdown();
- }
- catch(e)
- {
- Cu.reportError(e);
- }
-
- // Unregister all GCLI commands
- FirebugGCLICommands.shutdown();
-
- // xxxHonza: I think this shouldn't be here (perhaps in firebug-service.js)
- // Shutdown Firebug's JSD debugger service.
- var fbs = Cu.import("resource://firebug/firebug-service.js", {}).fbs;
- fbs.disableDebugger();
- fbs.shutdown();
-
- // remove default preferences
- PrefLoader.clearDefaultPrefs();
-
- // Unload all Firebug modules added with Cu.import
- FIREBUG_MODULES.forEach(Cu.unload, Cu);
-
- // Clear our resource registration
- var res = Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler);
- res.setSubstitution("firebug", null);
- res.setSubstitution("firebugui", null);
- res.setSubstitution("moduleloader", null);
-}
-
-// ********************************************************************************************* //
-// Window Listener
-
-var windowWatcher =
-{
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
- observe: function windowWatcher(win, topic, data)
- {
- // https://bugzil.la/795961 ?
- win.addEventListener("load", function onLoad(evt)
- {
- // load listener not necessary once https://bugzil.la/800677 is fixed
- var win = evt.currentTarget;
- win.removeEventListener("load", onLoad, false);
- if (win.document.documentElement.getAttribute("windowtype") == "navigator:browser")
- FirebugLoader.loadIntoWindow(win);
- }, false);
- }
-};
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+
+// List of firebug modules that must be loaded at startup and unloaded on shutdown.
+// !important every new module loaded with Cu.import must be added here
+var FIREBUG_MODULES = [
+ "resource://firebug/debuggerHalter.js",
+ "resource://firebug/fbtrace.js",
+ "resource://firebug/firebug-http-observer.js",
+ "resource://firebug/firebug-service.js",
+ "resource://firebug/firebug-trace-service.js",
+ "resource://firebug/gcli.js",
+ "resource://firebug/loader.js",
+ "resource://firebug/locale.js",
+ "resource://firebug/mini-require.js",
+ "resource://firebug/observer-service.js",
+ "resource://firebug/prefLoader.js",
+ "resource://firebug/require-debug.js",
+ "resource://firebug/require.js",
+ "resource://firebug/storageService.js"
+];
+
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+Cu.import("resource://gre/modules/Services.jsm");
+
+// ********************************************************************************************* //
+// Bootstrap API
+
+function install(params, reason)
+{
+}
+
+function uninstall(params, reason)
+{
+}
+
+function startup(params, reason)
+{
+ // Register the resource:// mappings
+ var res = Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler);
+ var uiURI = Services.io.newURI(__SCRIPT_URI_SPEC__ + "/../content/firebug/firebugui/", null, null);
+ var resourceURI = Services.io.newURI(__SCRIPT_URI_SPEC__ + "/../modules/", null, null);
+ res.setSubstitution("firebug", resourceURI);
+ res.setSubstitution("firebugui", uiURI);
+ res.setSubstitution("moduleloader", resourceURI);
+
+ Cu.import("resource://firebug/prefLoader.js");
+
+ // Register default preferences
+ PrefLoader.loadDefaultPrefs(params.installPath, "firebug.js");
+ PrefLoader.loadDefaultPrefs(params.installPath, "cookies.js");
+ PrefLoader.loadDefaultPrefs(params.installPath, "tracingConsole.js");
+
+ // Load the overlay manager
+ Cu.import("resource://firebug/loader.js");
+
+ //register extensions
+ FirebugLoader.startup();
+
+ // Load Firebug into all existing browser windows.
+ var enumerator = Services.wm.getEnumerator("navigator:browser");
+ while (enumerator.hasMoreElements())
+ FirebugLoader.loadIntoWindow(enumerator.getNext(), reason);
+
+ // Listen for new windows, Firebug must be loaded into them too.
+ Services.obs.addObserver(windowWatcher, "chrome-document-global-created", false);
+
+ // GCLI commands
+ Cu.import("resource://firebug/gcli.js");
+ FirebugGCLICommands.startup();
+}
+
+function shutdown(params, reason)
+{
+ // Don't need to clean anything up if the application is shutting down
+ if (reason == APP_SHUTDOWN)
+ return;
+
+ // Remove "new window" listener.
+ Services.obs.removeObserver(windowWatcher, "chrome-document-global-created");
+
+ // remove from all windows
+ try
+ {
+ FirebugLoader.shutdown();
+ }
+ catch(e)
+ {
+ Cu.reportError(e);
+ }
+
+ // Unregister all GCLI commands
+ FirebugGCLICommands.shutdown();
+
+ // xxxHonza: I think this shouldn't be here (perhaps in firebug-service.js)
+ // Shutdown Firebug's JSD debugger service.
+ var fbs = Cu.import("resource://firebug/firebug-service.js", {}).fbs;
+ fbs.disableDebugger();
+ fbs.shutdown();
+
+ // remove default preferences
+ PrefLoader.clearDefaultPrefs();
+
+ // Unload all Firebug modules added with Cu.import
+ FIREBUG_MODULES.forEach(Cu.unload, Cu);
+
+ // Clear our resource registration
+ var res = Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler);
+ res.setSubstitution("firebug", null);
+ res.setSubstitution("firebugui", null);
+ res.setSubstitution("moduleloader", null);
+}
+
+// ********************************************************************************************* //
+// Window Listener
+
+var windowWatcher =
+{
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
+ observe: function windowWatcher(win, topic, data)
+ {
+ // https://bugzil.la/795961 ?
+ win.addEventListener("load", function onLoad(evt)
+ {
+ // load listener not necessary once https://bugzil.la/800677 is fixed
+ var win = evt.currentTarget;
+ win.removeEventListener("load", onLoad, false);
+ if (win.document.documentElement.getAttribute("windowtype") == "navigator:browser")
+ FirebugLoader.loadIntoWindow(win);
+ }, false);
+ }
+};
+
+// ********************************************************************************************* //
diff --git a/build.js b/build.js
index 0c46d20..dcbde4e 100644
--- a/build.js
+++ b/build.js
@@ -1,447 +1,447 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Dependencies
-
-var path = require("path");
-var fs = require("fs");
-var shell = require("shelljs");
-var copy = require("dryice").copy;
-var os = require("os");
-var spawn = require("child_process").spawn;
-
-// ********************************************************************************************* //
-
-function help()
-{
- console.log('Usage:');
- console.log('');
- console.log('1. In order to build Firebug (including tracing) xpi run:');
- console.log(' $ node build.js');
- console.log(' The final xpi + update.rdf file will be located in the \'release\' sub directory.');
- console.log('');
- console.log(' If GETFIREBUG is properly specified in content/firebug/branch.properties');
- console.log(' (it assumes you have fbug and getfirebug.com directories at the same level)');
- console.log(' The xpi + update.rdf will be also deployed for you there and so you can');
- console.log(' just commit.');
- console.log('');
- console.log(' The release directory should contain two files:');
- console.log(' - firebug<version>.xpi (including updateURL) for getfirebug.com');
- console.log(' - firebug<version>-amo.xpi (disabled update) for AMO');
- console.log('');
- /*
- TODO: There were no targets for release ...
- console.log('2. In order to build Firebug final release (no tracing) run:');
- console.log(' $ node build.js release');
- console.log(' Again xpi files will be located in the \'release\' directory.');
- console.log('');
- */
- console.log('2. To check GETFIREBUG value run:');
- console.log(' $ node build.js echo');
- console.log('');
- console.log('3. To build xpi and generate JS doc (from source comments) run:');
- console.log(' $ node build.js jsdoc');
- console.log('');
- console.log('4. To build xpi for Babelzilla run:');
- console.log(' $ node build.js bz');
- console.log(' - All BZ locales should be stored in "bz-locale" directory.');
-}
-
-// ********************************************************************************************* //
-
-function main()
-{
- var args = process.argv;
-
- if (args.length < 3)
- build();
- else if (args.length >= 4 || args[2] === "help")
- help();
- else if (args[2] === "echo")
- echo();
- else if (args[2] === "jsdoc")
- jsdoc();
- else if (args[2] === "bz")
- bz();
- else if (args[2] === "clean")
- clean();
- else
- help();
-}
-
-// ********************************************************************************************* //
-// Globals
-
-// <property file="content/firebug/branch.properties"/>
-var getfirebugDir = "none";
-var packageFile = fs.readFileSync(__dirname + "/package.json", "utf8");
-var versionString = JSON.parse(packageFile).version;
-
-// Parse Firebug version string (e.e. "1.10.0a5" -> version: "1.10", release ".0a5")
-var result = versionString.match(/^(\d+\.\d+)?(\S*)$/);
-if (result.length != 3)
- throw new Error("Wrong version string!");
-
-var version = result[1];
-var release = result[2];
-
-// Compute various target directories.
-var buildDir = "./build";
-var releaseDir = "./release";
-var deployXpiDir = getfirebugDir + "/releases/firebug/" + version + "";
-var deployJsdocDir = getfirebugDir + "/developer/api/firebug" + version + "";
-var bzLocaleDir = "./bz-locale";
-
-var deployDirAvailable = path.existsSync(getfirebugDir) && fs.statSync(getfirebugDir).isDirectory;
-
-// ********************************************************************************************* //
-
-function prepareBuild()
-{
- shell.mkdir(buildDir);
- shell.mkdir(releaseDir);
-
- // Copy non JS resources
- copy({
- source: {
- root: '.',
- // TODO: Previously we copied everything that matched this set of
- // extensions: js, xul, properties, css, html, xml, dtd, ong, gif, ico,
- // manifest, txt, html
- // and then deleted. Now we copy everything with exclusions, but
- // we don't know what extra exclusions were missing
- exclude: [
- /.*\.graphml/, /build\.xml/, /node_modules/, /build\.js/,
- /install\.rdf\.tpl\.xml/, /update\.rdf\.tpl\.xml/
- ]
- },
- dest: buildDir
- });
-
- var project = copy.createCommonJsProject({
- roots: [
- __dirname + "/content"
- ],
- aliases: {
- "arch": "firebug/bti/inProcess"
- }
- });
-
- copy({
- source: [
- //copy.getMiniRequire(),
- {
- project: project,
- require: [
- "firebug/chrome/chrome",
- "firebug/lib/lib",
- "firebug/firebug",
- "firebug/bti/inProcess/browser",
- "firebug/trace/traceModule",
- "firebug/chrome/navigationHistory",
- "firebug/chrome/knownIssues",
- "firebug/js/sourceFile",
- "firebug/chrome/shortcuts",
- "firebug/firefox/start-button/startButtonOverlay",
- "firebug/firefox/external-editors/externalEditors",
- "firebug/firefox/firebugMenu",
- "firebug/chrome/panelActivation",
- //"firebug/console/memoryProfiler", xxxHonza: removed from 1.10 (issue 5599)
- "firebug/chrome/tableRep",
- "firebug/html/htmlPanel",
- "firebug/console/commandLinePopup",
- "firebug/accessible/a11y",
- "firebug/js/scriptPanel",
- "firebug/js/callstack",
- "firebug/console/consoleInjector",
- "firebug/net/spy",
- "firebug/js/tabCache",
- "firebug/chrome/activation",
- "firebug/css/stylePanel",
- "firebug/css/computedPanel"
- ],
- },
- __dirname + "/content/firebug/main.js"
- ],
- filter: moduleDefines,
- dest: buildDir + "/content/firebug/main.js"
- });
-
- // Compress main.js file (all extension modules)
- // xxxHonza: do not use uglify for build, there is missing ';' somewhere
- /*copy({
- source: buildDir + "/content/firebug/main.js",
- filter: copy.filter.uglifyjs,
- dest: buildDir + "/content/firebug/main.js"
- });*/
-
- /*copy({
- source: {value:project.getDependencyGraphML()},
- dest: "netpanel.graphml"
- });*/
-
- // Copy install.rdf template into the build dir
- copy({
- source: "install.rdf.tpl.xml",
- dest: buildDir + "/install.rdf"
- });
-}
-
-// ********************************************************************************************* //
-
-/**
- * Munge define lines to add module names
- */
-function moduleDefines(input, source)
-{
- if (!source)
- {
- console.log("- Source without filename passed to moduleDefines()." +
- " Skipping addition of define(...) wrapper.");
- console.log(input.substr(0, 300));
- return input;
- }
-
- input = (typeof input !== 'string') ? input.toString() : input;
- var deps = source.deps ? Object.keys(source.deps) : [];
- deps = deps.length ? (", '" + deps.join("', '") + "'") : "";
-
- var module = source.isLocation ? source.path : source;
- module = module.replace(/\.js$/, '');
-
- return input.replace(/define\(\[/, 'define("' + module + '", [');
-};
-
-moduleDefines.onRead = true;
-
-// ********************************************************************************************* //
-
-/**
- * Build Firebug XPI
- */
-function build()
-{
- clean();
- prepareBuild();
-
- // Update install.rdf with updated release version info
- copy({
- source: buildDir + "/install.rdf",
- filter: function(data) {
- return data
- .replace(/@VERSION@/gm, version)
- .replace(/@RELEASE@/gm, release);
- },
- dest: buildDir + "/install.rdf"
- });
-
- // Remove template for manifest file that is used for Babelzilla builds
- shell.rm(buildDir + "/chrome.bz.tpl.manifest");
-
- // Create XPI for getfirebug.com (zipping is asynchronous)
- createFirebugXPI("firebug-" + version + release + ".xpi", function()
- {
- // Remove update URL, it's needed only for alpha versions. All the other
- // versions updates from AMO.
- copy({
- source: buildDir + "/install.rdf",
- filter: function(data)
- {
- var re = new RegExp("(.*)https:\/\/getfirebug.com\/releases\/firebug\/" +
- version + "\/update.rdf(.*)");
- return data.replace(re, '');
- },
- dest: buildDir + "/install.rdf"
- });
-
- // Create XPI for AMO (no update URL)
- createFirebugXPI("firebug-" + version + release + "-amo.xpi", function()
- {
- shell.rm("-rf", buildDir);
-
- deploy();
-
- console.log("Firebug version: " + version + release + " in " + releaseDir);
- });
- });
-}
-
-// ********************************************************************************************* //
-
-/**
- * Create final xpi package
- */
-function createFirebugXPI(filename, callback)
-{
- zip(releaseDir + "/" + filename, buildDir, callback);
-
- copy({
- source: 'update.rdf.tpl.xml',
- filter: function(data) {
- return data
- .replace(/@VERSION@/gm, version)
- .replace(/@RELEASE@/gm, release)
- .replace(/@LEAF@/gm, "firebug-" + version + release + ".xpi");
- },
- dest: releaseDir + "/update.rdf"
- });
-}
-
-// ********************************************************************************************* //
-
-function deploy()
-{
- if (deployDirAvailable) {
- /*
- <copy file="${releaseDir}/update.rdf" todir="${deployXpiDir}" overwrite="true"/>
- <copy file="${releaseDir}/firebug-" + version + release + ".xpi" todir="${deployXpiDir}" overwrite="true"/>
- <copy file="${releaseDir}/firebug-" + version + release + "-amo.xpi" todir="${deployXpiDir}" overwrite="true"/>
- <echo message="XPI deployed to: " + version + release + " to ${deployXpiDir}"/>
- */
- }
-}
-
-// ********************************************************************************************* //
-
-function echo()
-{
- console.log("Build directory: " + buildDir);
- console.log("Deploy directory: " + getfirebugDir + " available: " + deployDirAvailable);
-}
-
-// ********************************************************************************************* //
-
-/**
- * Support for generating docs from Firebug source code using js-doc-toolkit
- * See the output in $svn/jsdoc/out directory
- */
-function jsdoc()
-{
- build();
- /*
- <property name="jsdoc.dir" value="../../jsdoc/"/>
- <property name="jsdoc-toolkit.dir" value="${jsdoc.dir}/jsdoc-toolkit-2.3.0/"/>
- <property name="jsdoc-output.dir" value="${releaseDir}/jsdoc/"/>
-
- <path id="jsdoctoolkit">
- <!-- Rhino js.jar 1.7.R2 must be used with jsdoctoolkit-ant-task-1.0.1.jar -->
- <fileset dir="${jsdoc.dir}" includes="*.jar"/>
- </path>
-
- <taskdef name="jsdoctoolkit"
- classpathref="jsdoctoolkit"
- classname="uk.co.darrenhurley.ant.tasks.JsDocToolkit"/>
-
- <echo message="Generate doc from Firebug source."/>
-
- <!-- Clean the output direcotory -->
- <delete dir="${jsdoc-output.dir}"/>
-
- <!-- Parse all source files -->
- <jsdoctoolkit jsdochome="${jsdoc-toolkit.dir}"
- template="firebug"
- outputdir="${jsdoc-output.dir}"
- inputdir="." />
- */
- deployJsdoc();
-}
-
-// ********************************************************************************************* //
-
-function deployJsdoc()
-{
- if (deployDirAvailable) {
- /*
- <copy todir="${deployJsdocDir}">
- <fileset dir="${releaseDir}/jsdoc"/>
- </copy>
-
- <echo message="JSDoc deployed to: " + version + release + " to ${deployXpiDir}"/>
- */
- }
-}
-
-// ********************************************************************************************* //
-
-function bz()
-{
- clean();
- prepareBuild();
- /*
- <!-- Use Babelzila manifest file (with all locales) -->
- <copy file="chrome.bz.tpl.manifest" tofile="${buildDir}/chrome.manifest"
- overwrite="true"/>
- <delete file="${buildDir}/chrome.bz.tpl.manifest"/>
-
- <!-- Use all BZ locales -->
- <copy todir="${buildDir}/locale" overwrite="true">
- <fileset dir="${bzLocaleDir}">
- <include name="**[ ]/*.properties"/>
- <exclude name="en-US/*.properties"/>
- </fileset>
- </copy>
-
- <!-- Modify version number (append BZ) -->
- <replace file="${buildDir}/install.rdf" propertyFile="content/firebug/branch.properties">
- <replacefilter token="@version@" value="" + version + "" />
- <replacefilter token="@RELEASE@" value="" + release + "-bz" />
- </replace>
-
- <!-- Delete the helper dir with Babelzilla locales from the build directory -->
- <delete dir="${buildDir}/${bzLocaleDir}" />
-
- <!-- Create XPI for getfirebug.com -->
- <antcall target="createFirebugXPI">
- <param name="file-name" value="firebug-" + version + release + "-bz.xpi" />
- </antcall>
-
- <delete dir="${buildDir}" />
-
- <echo message="Firebug Release for Babelzilla: " + version + release + "-bz in ${releaseDir}" />
- */
-}
-
-// ********************************************************************************************* //
-
-function clean()
-{
- shell.rm("-rf", buildDir);
- shell.rm("-rf", releaseDir);
-}
-
-// ********************************************************************************************* //
-
-function zip(filename, directory, callback)
-{
- // Create final XPI package.
- var zip = null;
- if (os.platform() === "win32")
- {
- var params = "a -tzip " + filename + " " + directory + "/*";
- zip = spawn("7z.exe", params.split(" "), { cwd: "." });
- }
- else
- {
- // not tested
- //zip = spawn("zip", [ "-r", __dirname + "/" + xpiFileName, release ]);
- }
-
- if (zip)
- {
- zip.on("exit", function()
- {
- callback();
- });
- }
- else
- {
- callback();
- }
-}
-
-// ********************************************************************************************* //
-// Startup
-
-main();
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Dependencies
+
+var path = require("path");
+var fs = require("fs");
+var shell = require("shelljs");
+var copy = require("dryice").copy;
+var os = require("os");
+var spawn = require("child_process").spawn;
+
+// ********************************************************************************************* //
+
+function help()
+{
+ console.log('Usage:');
+ console.log('');
+ console.log('1. In order to build Firebug (including tracing) xpi run:');
+ console.log(' $ node build.js');
+ console.log(' The final xpi + update.rdf file will be located in the \'release\' sub directory.');
+ console.log('');
+ console.log(' If GETFIREBUG is properly specified in content/firebug/branch.properties');
+ console.log(' (it assumes you have fbug and getfirebug.com directories at the same level)');
+ console.log(' The xpi + update.rdf will be also deployed for you there and so you can');
+ console.log(' just commit.');
+ console.log('');
+ console.log(' The release directory should contain two files:');
+ console.log(' - firebug<version>.xpi (including updateURL) for getfirebug.com');
+ console.log(' - firebug<version>-amo.xpi (disabled update) for AMO');
+ console.log('');
+ /*
+ TODO: There were no targets for release ...
+ console.log('2. In order to build Firebug final release (no tracing) run:');
+ console.log(' $ node build.js release');
+ console.log(' Again xpi files will be located in the \'release\' directory.');
+ console.log('');
+ */
+ console.log('2. To check GETFIREBUG value run:');
+ console.log(' $ node build.js echo');
+ console.log('');
+ console.log('3. To build xpi and generate JS doc (from source comments) run:');
+ console.log(' $ node build.js jsdoc');
+ console.log('');
+ console.log('4. To build xpi for Babelzilla run:');
+ console.log(' $ node build.js bz');
+ console.log(' - All BZ locales should be stored in "bz-locale" directory.');
+}
+
+// ********************************************************************************************* //
+
+function main()
+{
+ var args = process.argv;
+
+ if (args.length < 3)
+ build();
+ else if (args.length >= 4 || args[2] === "help")
+ help();
+ else if (args[2] === "echo")
+ echo();
+ else if (args[2] === "jsdoc")
+ jsdoc();
+ else if (args[2] === "bz")
+ bz();
+ else if (args[2] === "clean")
+ clean();
+ else
+ help();
+}
+
+// ********************************************************************************************* //
+// Globals
+
+// <property file="content/firebug/branch.properties"/>
+var getfirebugDir = "none";
+var packageFile = fs.readFileSync(__dirname + "/package.json", "utf8");
+var versionString = JSON.parse(packageFile).version;
+
+// Parse Firebug version string (e.e. "1.10.0a5" -> version: "1.10", release ".0a5")
+var result = versionString.match(/^(\d+\.\d+)?(\S*)$/);
+if (result.length != 3)
+ throw new Error("Wrong version string!");
+
+var version = result[1];
+var release = result[2];
+
+// Compute various target directories.
+var buildDir = "./build";
+var releaseDir = "./release";
+var deployXpiDir = getfirebugDir + "/releases/firebug/" + version + "";
+var deployJsdocDir = getfirebugDir + "/developer/api/firebug" + version + "";
+var bzLocaleDir = "./bz-locale";
+
+var deployDirAvailable = path.existsSync(getfirebugDir) && fs.statSync(getfirebugDir).isDirectory;
+
+// ********************************************************************************************* //
+
+function prepareBuild()
+{
+ shell.mkdir(buildDir);
+ shell.mkdir(releaseDir);
+
+ // Copy non JS resources
+ copy({
+ source: {
+ root: '.',
+ // TODO: Previously we copied everything that matched this set of
+ // extensions: js, xul, properties, css, html, xml, dtd, ong, gif, ico,
+ // manifest, txt, html
+ // and then deleted. Now we copy everything with exclusions, but
+ // we don't know what extra exclusions were missing
+ exclude: [
+ /.*\.graphml/, /build\.xml/, /node_modules/, /build\.js/,
+ /install\.rdf\.tpl\.xml/, /update\.rdf\.tpl\.xml/
+ ]
+ },
+ dest: buildDir
+ });
+
+ var project = copy.createCommonJsProject({
+ roots: [
+ __dirname + "/content"
+ ],
+ aliases: {
+ "arch": "firebug/bti/inProcess"
+ }
+ });
+
+ copy({
+ source: [
+ //copy.getMiniRequire(),
+ {
+ project: project,
+ require: [
+ "firebug/chrome/chrome",
+ "firebug/lib/lib",
+ "firebug/firebug",
+ "firebug/bti/inProcess/browser",
+ "firebug/trace/traceModule",
+ "firebug/chrome/navigationHistory",
+ "firebug/chrome/knownIssues",
+ "firebug/js/sourceFile",
+ "firebug/chrome/shortcuts",
+ "firebug/firefox/start-button/startButtonOverlay",
+ "firebug/firefox/external-editors/externalEditors",
+ "firebug/firefox/firebugMenu",
+ "firebug/chrome/panelActivation",
+ //"firebug/console/memoryProfiler", xxxHonza: removed from 1.10 (issue 5599)
+ "firebug/chrome/tableRep",
+ "firebug/html/htmlPanel",
+ "firebug/console/commandLinePopup",
+ "firebug/accessible/a11y",
+ "firebug/js/scriptPanel",
+ "firebug/js/callstack",
+ "firebug/console/consoleInjector",
+ "firebug/net/spy",
+ "firebug/js/tabCache",
+ "firebug/chrome/activation",
+ "firebug/css/stylePanel",
+ "firebug/css/computedPanel"
+ ],
+ },
+ __dirname + "/content/firebug/main.js"
+ ],
+ filter: moduleDefines,
+ dest: buildDir + "/content/firebug/main.js"
+ });
+
+ // Compress main.js file (all extension modules)
+ // xxxHonza: do not use uglify for build, there is missing ';' somewhere
+ /*copy({
+ source: buildDir + "/content/firebug/main.js",
+ filter: copy.filter.uglifyjs,
+ dest: buildDir + "/content/firebug/main.js"
+ });*/
+
+ /*copy({
+ source: {value:project.getDependencyGraphML()},
+ dest: "netpanel.graphml"
+ });*/
+
+ // Copy install.rdf template into the build dir
+ copy({
+ source: "install.rdf.tpl.xml",
+ dest: buildDir + "/install.rdf"
+ });
+}
+
+// ********************************************************************************************* //
+
+/**
+ * Munge define lines to add module names
+ */
+function moduleDefines(input, source)
+{
+ if (!source)
+ {
+ console.log("- Source without filename passed to moduleDefines()." +
+ " Skipping addition of define(...) wrapper.");
+ console.log(input.substr(0, 300));
+ return input;
+ }
+
+ input = (typeof input !== 'string') ? input.toString() : input;
+ var deps = source.deps ? Object.keys(source.deps) : [];
+ deps = deps.length ? (", '" + deps.join("', '") + "'") : "";
+
+ var module = source.isLocation ? source.path : source;
+ module = module.replace(/\.js$/, '');
+
+ return input.replace(/define\(\[/, 'define("' + module + '", [');
+};
+
+moduleDefines.onRead = true;
+
+// ********************************************************************************************* //
+
+/**
+ * Build Firebug XPI
+ */
+function build()
+{
+ clean();
+ prepareBuild();
+
+ // Update install.rdf with updated release version info
+ copy({
+ source: buildDir + "/install.rdf",
+ filter: function(data) {
+ return data
+ .replace(/@VERSION@/gm, version)
+ .replace(/@RELEASE@/gm, release);
+ },
+ dest: buildDir + "/install.rdf"
+ });
+
+ // Remove template for manifest file that is used for Babelzilla builds
+ shell.rm(buildDir + "/chrome.bz.tpl.manifest");
+
+ // Create XPI for getfirebug.com (zipping is asynchronous)
+ createFirebugXPI("firebug-" + version + release + ".xpi", function()
+ {
+ // Remove update URL, it's needed only for alpha versions. All the other
+ // versions updates from AMO.
+ copy({
+ source: buildDir + "/install.rdf",
+ filter: function(data)
+ {
+ var re = new RegExp("(.*)https:\/\/getfirebug.com\/releases\/firebug\/" +
+ version + "\/update.rdf(.*)");
+ return data.replace(re, '');
+ },
+ dest: buildDir + "/install.rdf"
+ });
+
+ // Create XPI for AMO (no update URL)
+ createFirebugXPI("firebug-" + version + release + "-amo.xpi", function()
+ {
+ shell.rm("-rf", buildDir);
+
+ deploy();
+
+ console.log("Firebug version: " + version + release + " in " + releaseDir);
+ });
+ });
+}
+
+// ********************************************************************************************* //
+
+/**
+ * Create final xpi package
+ */
+function createFirebugXPI(filename, callback)
+{
+ zip(releaseDir + "/" + filename, buildDir, callback);
+
+ copy({
+ source: 'update.rdf.tpl.xml',
+ filter: function(data) {
+ return data
+ .replace(/@VERSION@/gm, version)
+ .replace(/@RELEASE@/gm, release)
+ .replace(/@LEAF@/gm, "firebug-" + version + release + ".xpi");
+ },
+ dest: releaseDir + "/update.rdf"
+ });
+}
+
+// ********************************************************************************************* //
+
+function deploy()
+{
+ if (deployDirAvailable) {
+ /*
+ <copy file="${releaseDir}/update.rdf" todir="${deployXpiDir}" overwrite="true"/>
+ <copy file="${releaseDir}/firebug-" + version + release + ".xpi" todir="${deployXpiDir}" overwrite="true"/>
+ <copy file="${releaseDir}/firebug-" + version + release + "-amo.xpi" todir="${deployXpiDir}" overwrite="true"/>
+ <echo message="XPI deployed to: " + version + release + " to ${deployXpiDir}"/>
+ */
+ }
+}
+
+// ********************************************************************************************* //
+
+function echo()
+{
+ console.log("Build directory: " + buildDir);
+ console.log("Deploy directory: " + getfirebugDir + " available: " + deployDirAvailable);
+}
+
+// ********************************************************************************************* //
+
+/**
+ * Support for generating docs from Firebug source code using js-doc-toolkit
+ * See the output in $svn/jsdoc/out directory
+ */
+function jsdoc()
+{
+ build();
+ /*
+ <property name="jsdoc.dir" value="../../jsdoc/"/>
+ <property name="jsdoc-toolkit.dir" value="${jsdoc.dir}/jsdoc-toolkit-2.3.0/"/>
+ <property name="jsdoc-output.dir" value="${releaseDir}/jsdoc/"/>
+
+ <path id="jsdoctoolkit">
+ <!-- Rhino js.jar 1.7.R2 must be used with jsdoctoolkit-ant-task-1.0.1.jar -->
+ <fileset dir="${jsdoc.dir}" includes="*.jar"/>
+ </path>
+
+ <taskdef name="jsdoctoolkit"
+ classpathref="jsdoctoolkit"
+ classname="uk.co.darrenhurley.ant.tasks.JsDocToolkit"/>
+
+ <echo message="Generate doc from Firebug source."/>
+
+ <!-- Clean the output direcotory -->
+ <delete dir="${jsdoc-output.dir}"/>
+
+ <!-- Parse all source files -->
+ <jsdoctoolkit jsdochome="${jsdoc-toolkit.dir}"
+ template="firebug"
+ outputdir="${jsdoc-output.dir}"
+ inputdir="." />
+ */
+ deployJsdoc();
+}
+
+// ********************************************************************************************* //
+
+function deployJsdoc()
+{
+ if (deployDirAvailable) {
+ /*
+ <copy todir="${deployJsdocDir}">
+ <fileset dir="${releaseDir}/jsdoc"/>
+ </copy>
+
+ <echo message="JSDoc deployed to: " + version + release + " to ${deployXpiDir}"/>
+ */
+ }
+}
+
+// ********************************************************************************************* //
+
+function bz()
+{
+ clean();
+ prepareBuild();
+ /*
+ <!-- Use Babelzila manifest file (with all locales) -->
+ <copy file="chrome.bz.tpl.manifest" tofile="${buildDir}/chrome.manifest"
+ overwrite="true"/>
+ <delete file="${buildDir}/chrome.bz.tpl.manifest"/>
+
+ <!-- Use all BZ locales -->
+ <copy todir="${buildDir}/locale" overwrite="true">
+ <fileset dir="${bzLocaleDir}">
+ <include name="**[ ]/*.properties"/>
+ <exclude name="en-US/*.properties"/>
+ </fileset>
+ </copy>
+
+ <!-- Modify version number (append BZ) -->
+ <replace file="${buildDir}/install.rdf" propertyFile="content/firebug/branch.properties">
+ <replacefilter token="@version@" value="" + version + "" />
+ <replacefilter token="@RELEASE@" value="" + release + "-bz" />
+ </replace>
+
+ <!-- Delete the helper dir with Babelzilla locales from the build directory -->
+ <delete dir="${buildDir}/${bzLocaleDir}" />
+
+ <!-- Create XPI for getfirebug.com -->
+ <antcall target="createFirebugXPI">
+ <param name="file-name" value="firebug-" + version + release + "-bz.xpi" />
+ </antcall>
+
+ <delete dir="${buildDir}" />
+
+ <echo message="Firebug Release for Babelzilla: " + version + release + "-bz in ${releaseDir}" />
+ */
+}
+
+// ********************************************************************************************* //
+
+function clean()
+{
+ shell.rm("-rf", buildDir);
+ shell.rm("-rf", releaseDir);
+}
+
+// ********************************************************************************************* //
+
+function zip(filename, directory, callback)
+{
+ // Create final XPI package.
+ var zip = null;
+ if (os.platform() === "win32")
+ {
+ var params = "a -tzip " + filename + " " + directory + "/*";
+ zip = spawn("7z.exe", params.split(" "), { cwd: "." });
+ }
+ else
+ {
+ // not tested
+ //zip = spawn("zip", [ "-r", __dirname + "/" + xpiFileName, release ]);
+ }
+
+ if (zip)
+ {
+ zip.on("exit", function()
+ {
+ callback();
+ });
+ }
+ else
+ {
+ callback();
+ }
+}
+
+// ********************************************************************************************* //
+// Startup
+
+main();
+
+// ********************************************************************************************* //
diff --git a/chrome.manifest b/chrome.manifest
index 8ce2113..705a152 100644
--- a/chrome.manifest
+++ b/chrome.manifest
@@ -1,55 +1,55 @@
-content firebug content/firebug/ contentaccessible=yes
-
-# Moved to bootstrap.js:
-# resource firebug modules/
-# resource firebugui content/firebug/firebugui/
-# resource moduleloader modules/
-
-skin firebug classic/1.0 skin/classic/
-skin firebug-os classic/1.0 skin/classic/win/
-
-locale firebug bg locale/bg/
-locale firebug ca-AD locale/ca-AD/
-locale firebug cs locale/cs/
-locale firebug da locale/da/
-locale firebug de locale/de/
-locale firebug el locale/el/
-locale firebug es locale/es/
-locale firebug en-US locale/en-US/
-locale firebug es-AR locale/es-AR/
-locale firebug es-ES locale/es-ES/
-locale firebug eu locale/eu/
-locale firebug fa locale/fa/
-locale firebug fr locale/fr/
-locale firebug he locale/he/
-locale firebug hr-HR locale/hr-HR/
-locale firebug hu-HU locale/hu-HU/
-locale firebug hy-AM locale/hy-AM/
-locale firebug is-IS locale/is-IS/
-locale firebug it locale/it/
-locale firebug ja-JP locale/ja-JP/
-locale firebug ko-KR locale/ko-KR/
-locale firebug nl locale/nl/
-locale firebug pl locale/pl/
-locale firebug pt-BR locale/pt-BR/
-locale firebug pt-PT locale/pt-PT/
-locale firebug ro-RO locale/ro-RO/
-locale firebug ru-RU locale/ru/
-locale firebug sk-SK locale/sk-SK/
-locale firebug sl-SI locale/sl-SI/
-locale firebug sr locale/sr/
-locale firebug sv-SE locale/sv-SE/
-locale firebug tr locale/tr/
-locale firebug uk-UA locale/uk-UA/
-locale firebug vi locale/vi/
-locale firebug zh-CN locale/zh-CN/
-locale firebug zh-TW locale/zh-TW/
-
-# Support for Mac
-override chrome://firebug-os/skin/debugger.css chrome://firebug/skin/mac/debugger.css os=Darwin
-override chrome://firebug-os/skin/firebug.css chrome://firebug/skin/mac/firebug.css os=Darwin
-override chrome://firebug-os/skin/panel.css chrome://firebug/skin/mac/panel.css os=Darwin
-override chrome://firebug-os/skin/window.css chrome://firebug/skin/mac/window.css os=Darwin
-
-# Support for Linux
-override chrome://firebug-os/skin/firebug.css chrome://firebug/skin/linux/firebug.css os=Linux
+content firebug content/firebug/ contentaccessible=yes
+
+# Moved to bootstrap.js:
+# resource firebug modules/
+# resource firebugui content/firebug/firebugui/
+# resource moduleloader modules/
+
+skin firebug classic/1.0 skin/classic/
+skin firebug-os classic/1.0 skin/classic/win/
+
+locale firebug bg locale/bg/
+locale firebug ca-AD locale/ca-AD/
+locale firebug cs locale/cs/
+locale firebug da locale/da/
+locale firebug de locale/de/
+locale firebug el locale/el/
+locale firebug es locale/es/
+locale firebug en-US locale/en-US/
+locale firebug es-AR locale/es-AR/
+locale firebug es-ES locale/es-ES/
+locale firebug eu locale/eu/
+locale firebug fa locale/fa/
+locale firebug fr locale/fr/
+locale firebug he locale/he/
+locale firebug hr-HR locale/hr-HR/
+locale firebug hu-HU locale/hu-HU/
+locale firebug hy-AM locale/hy-AM/
+locale firebug is-IS locale/is-IS/
+locale firebug it locale/it/
+locale firebug ja-JP locale/ja-JP/
+locale firebug ko-KR locale/ko-KR/
+locale firebug nl locale/nl/
+locale firebug pl locale/pl/
+locale firebug pt-BR locale/pt-BR/
+locale firebug pt-PT locale/pt-PT/
+locale firebug ro-RO locale/ro-RO/
+locale firebug ru-RU locale/ru/
+locale firebug sk-SK locale/sk-SK/
+locale firebug sl-SI locale/sl-SI/
+locale firebug sr locale/sr/
+locale firebug sv-SE locale/sv-SE/
+locale firebug tr locale/tr/
+locale firebug uk-UA locale/uk-UA/
+locale firebug vi locale/vi/
+locale firebug zh-CN locale/zh-CN/
+locale firebug zh-TW locale/zh-TW/
+
+# Support for Mac
+override chrome://firebug-os/skin/debugger.css chrome://firebug/skin/mac/debugger.css os=Darwin
+override chrome://firebug-os/skin/firebug.css chrome://firebug/skin/mac/firebug.css os=Darwin
+override chrome://firebug-os/skin/panel.css chrome://firebug/skin/mac/panel.css os=Darwin
+override chrome://firebug-os/skin/window.css chrome://firebug/skin/mac/window.css os=Darwin
+
+# Support for Linux
+override chrome://firebug-os/skin/firebug.css chrome://firebug/skin/linux/firebug.css os=Linux
diff --git a/content/firebug/accessible/a11y.js b/content/firebug/accessible/a11y.js
index 6bab8ea..b1e53e9 100644
--- a/content/firebug/accessible/a11y.js
+++ b/content/firebug/accessible/a11y.js
@@ -1,3142 +1,3142 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/url",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/xml",
- "firebug/lib/xpath",
- "firebug/console/console",
- "firebug/chrome/infotip",
-],
-function(Obj, Firebug, Domplate, Locale, Events, Url, Css, Dom, Xml, Xpath) {
-
-// ************************************************************************************************
-// Constants
-
-var singleSpaceTag = Domplate.DIV({"class" : "a11y1emSize"}, "x");
-
-var KeyEvent = window.KeyEvent;
-
-// ************************************************************************************************
-// Module Management
-
-Firebug.A11yModel = Obj.extend(Firebug.Module,
-{
- dispatchName: "a11y",
-
- initialize: function()
- {
- Firebug.Module.initialize.apply(this, arguments);
-
- this.handleTabBarFocus = Obj.bind(this.handleTabBarFocus, this);
- this.handleTabBarBlur = Obj.bind(this.handleTabBarBlur, this);
- this.handlePanelBarKeyPress = Obj.bind(this.handlePanelBarKeyPress, this);
- this.onNavigablePanelKeyPress = Obj.bind(this.onNavigablePanelKeyPress, this);
- this.onConsoleMouseDown = Obj.bind(this.onConsoleMouseDown, this);
- this.onLayoutKeyPress = Obj.bind(this.onLayoutKeyPress, this);
- this.onCSSKeyPress = Obj.bind(this.onCSSKeyPress, this);
- this.onCSSMouseDown = Obj.bind(this.onCSSMouseDown, this);
- this.onHTMLKeyPress = Obj.bind(this.onHTMLKeyPress, this);
- this.onHTMLFocus = Obj.bind(this.onHTMLFocus, this);
- this.onHTMLBlur = Obj.bind(this.onHTMLBlur, this);
- this.onPanelFocus = Obj.bind(this.onPanelFocus, this);
- this.onLayoutFocus = Obj.bind(this.onLayoutFocus, this);
- this.onLayoutBlur = Obj.bind(this.onLayoutBlur, this);
- this.onScriptContextMenu = Obj.bind(this.onScriptContextMenu, this);
- this.onCSSPanelContextMenu = Obj.bind(this.onCSSPanelContextMenu, this);
- this.onScriptKeyPress = Obj.bind(this.onScriptKeyPress, this);
- this.onScriptKeyUp = Obj.bind(this.onScriptKeyUp, this);
- this.onScriptMouseUp = Obj.bind(this.onScriptMouseUp, this);
- this.onNetMouseDown = Obj.bind(this.onNetMouseDown, this);
- this.onNetFocus = Obj.bind(this.onNetFocus, this);
- this.onNetBlur = Obj.bind(this.onNetBlur, this);
-
- // Mark ourselves disabled, so we don't performDisable() if we are not enabled.
- Firebug.chrome.window.a11yEnabled = false;
-
- Firebug.connection.addListener(this);
- Firebug.Console.addListener(this);
- Firebug.DOMModule.addListener(this);
- },
-
- shutdown: function()
- {
- Firebug.connection.removeListener(this);
- Firebug.Console.removeListener(this);
- Firebug.DOMModule.removeListener(this);
-
- Firebug.Module.shutdown.apply(this, arguments);
- },
-
- initializeUI: function()
- {
- //Initialize according to the current pref value.
- this.updateOption("a11y.enable", this.isEnabled());
- },
-
- isEnabled: function()
- {
- return Firebug.Options.get("a11y.enable");
- },
-
- updateOption: function(name, value)
- {
- if (FBTrace.DBG_A11Y)
- {
- FBTrace.sysout("a11y.updateOption; " + name + ": " + value +
- ", Current chrome: " + Firebug.chrome.getName() +
- ", Original chrome: " + Firebug.originalChrome.getName());
- }
-
- if (name == "a11y.enable")
- {
- // Update for current chrome
- this.set(value, Firebug.chrome);
- // If the current chrome is an external window, update also the original chrome.
- if (Firebug.chrome != Firebug.originalChrome)
- {
- this.set(value, Firebug.originalChrome);
- if (FBTrace.DBG_A11Y)
- FBTrace.sysout("a11y.updateOption; (original chrome)");
- }
- }
- },
-
- set: function(enable, chrome)
- {
- if (chrome.window.a11yEnabled == enable)
- return;
-
- if (enable)
- this.performEnable(chrome);
- else
- this.performDisable(chrome);
- chrome.window.a11yEnabled = enable;
- },
-
- performEnable: function(chrome)
- {
- var tmpElem;
- //add class used by all a11y related css styles (e.g. :focus and -moz-user-focus styles)
- Css.setClass(chrome.$("fbContentBox"), "useA11y");
- //Css.setClass(chrome.$("fbStatusBar"), "useA11y");
- tmpElem = chrome.$("fbStatusPrefix");
- if (tmpElem) tmpElem.setAttribute("value", Locale.$STR("a11y.labels.firebug status"));
-
- //manage all key events in toolbox (including tablists)
- tmpElem = chrome.$("fbContentBox");
- if (tmpElem)
- Events.addEventListener(tmpElem, "keypress", this.handlePanelBarKeyPress, true);
-
- //make focus stick to inspect button when clicked
- tmpElem = chrome.$("fbInspectButton");
- if (tmpElem)
- Events.addEventListener(tmpElem, "mousedown", this.focusTarget, true);
-
- tmpElem = chrome.$("fbPanelBar1-panelTabs");
- if (tmpElem)
- Events.addEventListener(tmpElem, "focus", this.handleTabBarFocus, true);
-
- tmpElem = chrome.$("fbPanelBar1-panelTabs");
- if (tmpElem)
- Events.addEventListener(tmpElem, "blur", this.handleTabBarBlur, true);
-
- tmpElem = chrome.$("fbPanelBar2-panelTabs");
- if (tmpElem)
- Events.addEventListener(tmpElem, "focus", this.handleTabBarFocus, true);
-
- tmpElem = chrome.$("fbPanelBar2-panelTabs");
- if (tmpElem)
- Events.addEventListener(tmpElem, "blur", this.handleTabBarBlur, true);
-
- tmpElem = chrome.$("fbPanelBar1");
- if (tmpElem)
- Css.setClass(tmpElem.browser.contentDocument.body, "useA11y");
-
- tmpElem = chrome.$("fbPanelBar2");
- if (tmpElem)
- Css.setClass(tmpElem.browser.contentDocument.body, "useA11y");
- Firebug.Editor.addListener(this);
- this.listeningToEditor = true;
- },
-
- performDisable: function(chrome)
- {
- var tmpElem;
- //undo everything we did in performEnable
- Css.removeClass(chrome.$("fbContentBox"), "useA11y");
- Css.removeClass(chrome.$("fbStatusBar"), "useA11y");
-
- tmpElem = chrome.$("fbPanelBar1");
- if (tmpElem)
- Events.removeEventListener(tmpElem, "keypress", this.handlePanelBarKeyPress, true);
-
- tmpElem = chrome.$("fbInspectButton");
- if (tmpElem)
- Events.removeEventListener(tmpElem, "mousedown", this.focusTarget, true);
-
- tmpElem = chrome.$("fbPanelBar1-panelTabs");
- if (tmpElem)
- Events.removeEventListener(tmpElem, "focus", this.handleTabBarFocus, true);
-
- tmpElem = chrome.$("fbPanelBar1-panelTabs");
- if (tmpElem)
- Events.removeEventListener(tmpElem, "blur", this.handleTabBarBlur, true);
-
- tmpElem = chrome.$("fbPanelBar2-panelTabs");
- if (tmpElem)
- Events.removeEventListener(tmpElem, "focus", this.handleTabBarFocus, true);
-
- tmpElem = chrome.$("fbPanelBar2-panelTabs");
- if (tmpElem)
- Events.removeEventListener(tmpElem, "blur", this.handleTabBarBlur, true);
-
- tmpElem = chrome.$("fbPanelBar1");
- if (tmpElem)
- {
- Css.removeClass(tmpElem.browser.contentDocument.body, "useA11y");
- tmpElem.browser.setAttribute("showcaret", false);
- }
-
- tmpElem = chrome.$("fbPanelBar2");
- if (tmpElem)
- Css.removeClass(tmpElem.browser.contentDocument.body, "useA11y");
-
- if (this.listeningToEditor)
- Firebug.Editor.removeListener(this);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
- onCreatePanel: function(context, panel, panelType)
- {
- if (!panel.enableA11y)
- return;
-
- if (panel.addListener)
- panel.addListener(this);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Context & Panel Management
-
- onInitializeNode: function(panel)
- {
- var panelA11y = this.getPanelA11y(panel, true);
- if (!panelA11y)
- return;
-
- panelA11y.tabStop = null;
- panelA11y.manageFocus = false;
- panelA11y.lastIsDefault = false;
- panelA11y.type = panel.deriveA11yFrom ? panel.deriveA11yFrom : panel.name;
-
- //panel.context.chrome.$("fbContentBox").addEventListener("focus", this.reportFocus, true);
- this.makeFocusable(panel.panelNode, false);
-
- switch (panelA11y.type)
- {
- case "console":
- panelA11y.manageFocus = true;
- switch (panel.name)
- {
- case "console":
- panel.panelNode.setAttribute("aria-label",
- Locale.$STR("a11y.labels.log rows"));
- panelA11y.lastIsDefault = true;
- panel.panelNode.setAttribute("role", "list");
- break;
-
- case "callstack":
- panel.panelNode.setAttribute("role", "list");
- panel.panelNode.setAttribute("aria-label",
- Locale.$STR("a11y.labels.call stack"));
- break;
-
- default:
- panel.panelNode.setAttribute("role", "presentation");
- }
- panel.panelNode.setAttribute("aria-live", "polite");
- panel.panelNode.setAttribute("aria-relevant", "additions");
- Events.addEventListener(panel.panelNode, "keypress", this.onNavigablePanelKeyPress, false);
- Events.addEventListener(panel.panelNode, "focus", this.onPanelFocus, true);
- Events.addEventListener(panel.panelNode, "mousedown", this.onConsoleMouseDown, false);
- if (panel.name == "breakpoints")
- panel.panelNode.style.overflowX = "hidden";
- break;
-
- case "html":
- panel.panelNode.setAttribute("role", "tree");
- panel.panelNode.setAttribute("aria-label",
- Locale.$STR("a11y.labels.document structure"));
- Events.addEventListener(panel.panelNode, "keypress", this.onHTMLKeyPress, false);
- Events.addEventListener(panel.panelNode, "focus", this.onHTMLFocus, true);
- Events.addEventListener(panel.panelNode, "blur", this.onHTMLBlur, true);
- break;
-
- case "css":
- panelA11y.manageFocus = true;
- Events.addEventListener(panel.panelNode, "keypress", this.onCSSKeyPress, false);
- Events.addEventListener(panel.panelNode, "mousedown", this.onCSSMouseDown, false);
- Events.addEventListener(panel.panelNode, "focus", this.onPanelFocus, true);
- Events.addEventListener(panel.panelNode, "contextmenu", this.onCSSPanelContextMenu, false);
- this.insertHiddenText(panel, panel.panelNode,
- Locale.$STR("a11y.labels.overridden"), false, "CSSOverriddenDescription");
- panel.panelNode.setAttribute("role", panel.name == "stylesheet" ?
- "list" : "presentation");
- break;
-
- case "layout":
- panelA11y.manageFocus = true;
- Events.addEventListener(panel.panelNode, "keypress", this.onLayoutKeyPress, false);
- Events.addEventListener(panel.panelNode, "focus", this.onLayoutFocus, true);
- Events.addEventListener(panel.panelNode, "blur", this.onLayoutBlur, true);
- break;
-
- case "script":
- Events.addEventListener(panel.panelNode, "contextmenu", this.onScriptContextMenu, true);
- Events.addEventListener(panel.panelNode, "keypress", this.onScriptKeyPress, true);
- Events.addEventListener(panel.panelNode, "keyup", this.onScriptKeyUp, true);
- Events.addEventListener(panel.panelNode, "mouseup", this.onScriptMouseUp, true);
- panelA11y.oneEmElem = this.addSingleSpaceElem(panel.panelNode);
- break;
-
- case "net":
- panelA11y.manageFocus = true;
- Events.addEventListener(panel.panelNode, "keypress", this.onNavigablePanelKeyPress, false);
- Events.addEventListener(panel.panelNode, "focus", this.onPanelFocus, true);
- Events.addEventListener(panel.panelNode, "focus", this.onNetFocus, true);
- Events.addEventListener(panel.panelNode, "blur", this.onNetBlur, true);
- Events.addEventListener(panel.panelNode, "mousedown", this.onNetMouseDown, false);
- break;
- }
- },
-
- onDestroyNode: function(panel)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- panelA11y = null;
-
- // Remove all event handlers we added in onInitializeNode.
- var actAsPanel = panel.deriveA11yFrom ? panel.deriveA11yFrom : panel.name;
- switch (actAsPanel)
- {
- case "console":
- Events.removeEventListener(panel.panelNode, "keypress", this.onNavigablePanelKeyPress,
- false);
- Events.removeEventListener(panel.panelNode, "focus", this.onPanelFocus, true);
- Events.removeEventListener(panel.panelNode, "mousedown", this.onConsoleMouseDown, false);
- break;
-
- case "html":
- Events.removeEventListener(panel.panelNode, "keypress", this.onHTMLKeyPress, false);
- Events.removeEventListener(panel.panelNode, "focus", this.onHTMLFocus, true);
- Events.removeEventListener(panel.panelNode, "blur", this.onHTMLBlur, true);
- break;
-
- case "css":
- Events.removeEventListener(panel.panelNode, "keypress", this.onCSSKeyPress, false);
- Events.removeEventListener(panel.panelNode, "mousedown", this.onCSSMouseDown, false);
- Events.removeEventListener(panel.panelNode, "focus", this.onPanelFocus, true);
- Events.removeEventListener(panel.panelNode, "blur", this.onPanelBlur, true);
- Events.removeEventListener(panel.panelNode, "contextmenu", this.onCSSPanelContextMenu,
- false);
- break;
-
- case "layout":
- Events.removeEventListener(panel.panelNode, "keypress", this.onLayoutKeyPress, false);
- Events.removeEventListener(panel.panelNode, "focus", this.onLayoutFocus, true);
- Events.removeEventListener(panel.panelNode, "blur", this.onLayoutBlur, true);
- break;
-
- case "script":
- Events.removeEventListener(panel.panelNode, "contextmenu", this.onScriptContextMenu, true);
- Events.removeEventListener(panel.panelNode, "keypress", this.onScriptKeyPress, true);
- Events.removeEventListener(panel.panelNode, "keyup", this.onScriptKeyUp, true);
- Events.removeEventListener(panel.panelNode, "mouseup", this.onScriptMouseUp, true);
- break;
-
- case "net":
- Events.removeEventListener(panel.panelNode, "keypress", this.onNavigablePanelKeyPress,
- false);
- Events.removeEventListener(panel.panelNode, "focus", this.onPanelFocus, true);
- Events.removeEventListener(panel.panelNode, "focus", this.onNetFocus, true);
- Events.removeEventListener(panel.panelNode, "blur", this.onNetBlur, true);
- Events.removeEventListener(panel.panelNode, "mousedown", this.onNetMouseDown, false);
- break;
- }
- },
-
- showPanel: function(browser, panel)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
- var title = panel.name;
- var panelType = Firebug.getPanelType(panel.name);
- if (panelType)
- title = Firebug.getPanelTitle(panelType);
- Firebug.chrome.$("fbToolbar").setAttribute("aria-label", title + " " +
- Locale.$STR("a11y.labels.panel tools"));
- var panelBrowser = Firebug.chrome.getPanelBrowser(panel);
- panelBrowser.setAttribute("showcaret", (panel.name == "script"));
- panelBrowser.contentDocument.body.setAttribute("aria-label",
- Locale.$STRF("a11y.labels.title panel", [title]));
- },
-
- showSidePanel: function(browser, sidePanel)
- {
- var panelA11y = this.getPanelA11y(sidePanel);
- if (!panelA11y)
- return;
- var panelBrowser = Firebug.chrome.getPanelBrowser(sidePanel);
- var panelType = Firebug.getPanelType(sidePanel.name);
- if (panelType)
- title = Firebug.getPanelTitle(panelType);
- panelBrowser.contentDocument.body.setAttribute("aria-label",
- Locale.$STRF("a11y.labels.title side panel", [title]));
- },
-
- addLiveElem: function(panel, role, politeness)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
- if (panelA11y.liveElem && Dom.isElement(panelA11y.liveElem))
- return;
-
- var attrName = attrValue = "";
- if (role)
- {
- attrName = "role";
- attrValue = role;
- }
- else
- {
- attrName = "aria-live";
- attrValue = politeness ? politeness : "polite";
- }
- var elem = panel.document.createElement("div");
- elem.setAttribute(attrName, attrValue);
- elem.className = "offScreen";
- panel.document.body.appendChild(elem);
- panelA11y.liveElem = elem;
- return elem;
- },
-
- updateLiveElem: function(panel, msg, useAlert)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
- var elem = panelA11y.liveElem;
- if (!elem)
- elem = this.addLiveElem(panel);
- elem.textContent = msg;
- if (useAlert)
- elem.setAttribute("role", "alert");
- },
-
- addSingleSpaceElem: function(parent)
- {
- return singleSpaceTag.append({}, parent, this);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Toolbars & Tablists
-
- focusTarget: function(event)
- {
- this.focus(event.target);
- },
-
- handlePanelBarKeyPress: function (event)
- {
- var target = event.originalTarget;
- var isTab = target.nodeName.toLowerCase() == "paneltab";
- var isButton = target.nodeName.search(/(xul:)?((toolbar)?button)|(checkbox)/) != -1;
- var isDropDownMenu = isButton && (target.getAttribute("type") == "menu" ||
- target.id == "fbLocationList");
- var siblingTab, forward, toolbar;
- var keyCode = event.keyCode || (event.type == "keypress" ? event.charCode : null);
- if (keyCode == KeyEvent.DOM_VK_TAB)
- this.ensurePanelTabStops(); //TODO: need a better solution to prevent loss of panel tabstop
- if (isTab || isButton)
- {
- switch (keyCode)
- {
- case KeyEvent.DOM_VK_LEFT:
- case KeyEvent.DOM_VK_RIGHT:
- case KeyEvent.DOM_VK_UP:
- case KeyEvent.DOM_VK_DOWN:
- forward = (event.keyCode == KeyEvent.DOM_VK_RIGHT ||
- event.keyCode == KeyEvent.DOM_VK_DOWN);
- if (isTab)
- {
- //will only work as long as long as siblings only consist of paneltab elements
- siblingTab = target[forward ? "nextSibling" : "previousSibling"];
- if (!siblingTab)
- siblingTab = target.parentNode[forward ? "firstChild" : "lastChild"];
- if (siblingTab)
- {
- var panelBar = Dom.getAncestorByClass(target, "panelBar");
- setTimeout(Obj.bindFixed(function()
- {
- panelBar.selectTab(siblingTab);
- this.focus(siblingTab);
- }, this));
- }
- }
- else if (isButton)
- {
- if (target.id == "fbFirebugMenu" && !forward)
- {
- Events.cancelEvent(event);
- return;
- }
- toolbar = Dom.getAncestorByClass(target, "innerToolbar");
- if (toolbar)
- {
- var doc = target.ownerDocument;
- //temporarily make all buttons in the toolbar part of the tab order,
- //to allow smooth, native focus advancement
- Css.setClass(toolbar, "hasTabOrder");
- setTimeout(Obj.bindFixed(function() // time out needed to fix this behavior in 3.6
- {
- doc.commandDispatcher[forward ? "advanceFocus" : "rewindFocus"]();
- //remove the buttons from the tab order again, so that it will remain uncluttered
- //Very ugly hack, but it works well. This prevents focus to 'spill out' of a
- //toolbar when using the left and right arrow keys
- if (!Dom.isAncestor(doc.commandDispatcher.focusedElement, toolbar))
- {
- //we moved focus to somewhere out of the toolbar: not good. Move it back to where it was.
- doc.commandDispatcher[!forward ?
- "advanceFocus" : "rewindFocus"]();
- }
- Css.removeClass(toolbar, "hasTabOrder");
- }, this));
- }
- Events.cancelEvent(event);
- return;
- }
- break;
-
- case KeyEvent.DOM_VK_RETURN:
- case KeyEvent.DOM_VK_SPACE:
- if (isTab && target.tabMenu)
- {
- target.tabMenu.popup.showPopup(target.tabMenu, -1, -1, "popup",
- "bottomleft", "topleft");
- }
- else if (isButton && isDropDownMenu)
- {
- if (target.id == "fbLocationList")
- target.showPopup();
- else
- target.open = true;
- Events.cancelEvent(event);
- return false;
- }
- break;
-
- case KeyEvent.DOM_VK_F4:
- if (isTab && target.tabMenu)
- {
- target.tabMenu.popup.showPopup(target.tabMenu, -1, -1, "popup",
- "bottomleft", "topleft");
- }
- break;
- }
- }
- },
-
- handleTabBarFocus: function(event)
- {
- this.tabFocused = true;
- },
-
- handleTabBarBlur: function(event)
- {
- this.tabFocused = false;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Panel Focus & Tab Order Management
-
- getPanelTabStop: function(panel)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (panelA11y)
- return panelA11y.tabStop;
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("a11y.getPanelTabStop null panel.context");
- return null;
- },
-
- ensurePanelTabStops: function()
- {
- // XXXjjb: seems like this should be !Firebug.chrome
- if (!Firebug.currentContext || !Firebug.currentContext.chrome)
- return;
- var panel = Firebug.chrome.getSelectedPanel();
- var sidePanel = Firebug.chrome.getSelectedSidePanel();
- this.ensurePanelTabStop(panel);
- if (sidePanel)
- this.ensurePanelTabStop(sidePanel);
- },
-
- ensurePanelTabStop: function(panel)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- if (panelA11y.manageFocus)
- {
- var tabStop = this.getPanelTabStop(panel);
- if (!tabStop || !this.isVisibleByStyle(tabStop) || !Xml.isVisible(tabStop))
- {
- this.tabStop = null;
- this.findPanelTabStop(panel, "focusRow", panelA11y.lastIsDefault);
- }
- else if (tabStop.getAttribute("tabindex") !== "0")
- {
- tabStop.setAttribute("tabindex", "0");
- }
-
- if (tabStop)
- this.checkModifiedState(panel, tabStop, true);
- }
- },
-
- checkModifiedState: function(panel, elem, makeTab)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y || !elem)
- return;
-
- if (panelA11y.type == "console" && Css.hasClass(elem, "focusRow"))
- this.modifyPanelRow(panel, elem, makeTab);
- },
-
- setPanelTabStop: function (panel, elem)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var tabStop = this.getPanelTabStop(panel);
- if (tabStop)
- {
- this.makeFocusable(tabStop, false);
- if (["treeitem", "listitem", "option"].indexOf(tabStop.getAttribute("role")) != -1)
- tabStop.setAttribute("aria-selected", "false");
- }
- panelA11y.tabStop = elem;
- if (elem)
- {
- panelA11y.reFocusId = null;
- this.makeFocusable(elem, true);
- if (["treeitem", "listitem", "option"].indexOf(elem.getAttribute("role")) != -1)
- elem.setAttribute("aria-selected", "true");
- }
- },
-
- findPanelTabStop: function(panel, className, last)
- {
- var candidates = panel.panelNode.getElementsByClassName(className);
- candidates= Array.filter(candidates, function(e, i, a){return this.isVisibleByStyle(e)
- && Xml.isVisible(e);}, this);
- if (candidates.length > 0)
- {
- var chosenRow = candidates[last ? candidates.length -1 : 0];
- this.modifyPanelRow(panel, chosenRow, true);
- this.setPanelTabStop(panel, chosenRow);
- }
- else
- {
- this.setPanelTabStop(panel, null);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Console Panel
-
- onLogRowCreated: function(panel, row)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- if (Css.hasClass(row, "logRow-dir"))
- {
- row.setAttribute("role", "listitem");
- Css.setClass(row, "outerFocusRow");
- var memberRows = row.getElementsByClassName("memberRow");
- if (memberRows.length > 0)
- this.onMemberRowsAdded(panel, memberRows);
- }
- else if (Css.hasClass(row, "logRow-group") || Css.hasClass(row, "logRow-profile"))
- {
- row.setAttribute("role", "presentation");
- var focusRow = row.getElementsByClassName("logGroupLabel").item(0);
- if (focusRow)
- {
- this.setPanelTabStop(panel, focusRow);
- focusRow.setAttribute("aria-expanded", Css.hasClass(row, "opened") + "");
- if (!Css.hasClass(row, "logRow-profile"))
- this.insertHiddenText(panel, focusRow, "group label: ");
- }
- }
- else if (Css.hasClass(row, "logRow-errorMessage") || Css.hasClass(row,
- "logRow-warningMessage"))
- {
- Css.setClass(row, "outerFocusRow");
- row.setAttribute("role", "presentation");
- var focusRow = row.getElementsByClassName("errorTitle").item(0);
- if (focusRow)
- {
- this.setPanelTabStop(panel, focusRow);
- focusRow.setAttribute("aria-expanded",
- Css.hasClass(focusRow.parentNode, "opened") + "");
- }
- }
- else if (Css.hasClass(row, "logRow-stackTrace"))
- {
- Css.setClass(row, "outerFocusRow");
- row.setAttribute("role", "listitem");
- var stackFrames = row.getElementsByClassName("focusRow");
- Array.forEach(stackFrames, function(e, i, a)
- {
- e.setAttribute("role", "listitem");
- if ((panelA11y.lastIsDefault && i === stackFrames.length - 1) ||
- (!panelA11y.lastIsDefault && i === 0))
- {
- this.setPanelTabStop(panel, e);
- }
- else
- {
- this.makeFocusable(e, false);
- }
- }, this);
- }
- else if (Css.hasClass(row, "logRow-spy"))
- {
- var focusRow = Dom.getChildByClass(row, "spyHeadTable");
- if (focusRow)
- this.makeFocusable(focusRow, true);
- }
- else
- {
- row.setAttribute("role", "listitem");
- Css.setClass(row, "focusRow");
- Css.setClass(row, "outerFocusRow");
- if (Xml.isVisible(row))
- this.setPanelTabStop(panel, row);
- }
- },
-
- modifyLogRow: function(panel, row, inTabOrder)
- {
- this.makeFocusable(row, inTabOrder);
- var logRowType = this.getLogRowType(row);
- if (logRowType)
- this.insertHiddenText(panel, row, logRowType + ": ");
- var arrayNode = Dom.getChildByClass(row, "objectBox-array");
- if (arrayNode)
- {
- arrayNode.setAttribute("role", "group");
- this.insertHiddenText(panel, row, "array" + ": ");
- }
- var focusObjects = this.getFocusObjects(row);
- Array.forEach(focusObjects, function(e, i, a)
- {
- this.makeFocusable(e);
- var prepend = "";
- var append = " (" + this.getObjectType(e) + ") ";
- if (e.textContent != "")
- e.setAttribute("aria-label", prepend + e.textContent + append);
- if (arrayNode)
- e.setAttribute("role", "listitem");
- }, this);
- },
-
- onNavigablePanelKeyPress: function(event)
- {
- var target = event.target;
- var keyCode = event.keyCode || (event.type == "keypress" ? event.charCode : null);
- if (!this.isTabWorthy(target) && !this.isFocusNoTabObject(target))
- return;
- else if (event.shiftKey || event.altKey)
- return;
- else if ([13, 32, 33, 34, 35, 36, 37, 38, 39, 40, 46].indexOf(keyCode) == -1)
- return; //not interested in any other keys, than arrows, pg, home/end, del space & enter
- var panel = Firebug.getElementPanel(target);
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var newTarget = target;
- if (!this.isOuterFocusRow(target))
- {
- if (Events.isControl(event))
- {
- newTarget = this.getAncestorRow(target);
- if (newTarget)
- {
- newTarget = [33, 38].indexOf(keyCode) == -1 ?
- this.getLastFocusChild(newTarget) : this.getFirstFocusChild(newTarget);
- }
- }
- else if (!this.isDirCell(target) || Css.hasClass(target, "netInfoTab") ||
- Css.hasClass(target, "netCol"))
- {
- newTarget = this.getAncestorRow(target, true);
- }
-
- if (!newTarget)
- newTarget = target;
- }
- switch (keyCode)
- {
- case KeyEvent.DOM_VK_UP:
- case KeyEvent.DOM_VK_DOWN:
- if (!this.isFocusNoTabObject(target))
- {
- this.focusSiblingRow(panel, newTarget, keyCode == 38);
- Events.cancelEvent(event);
- }
- break;
-
- case KeyEvent.DOM_VK_LEFT:
- case KeyEvent.DOM_VK_RIGHT:
- var goLeft = keyCode == KeyEvent.DOM_VK_LEFT;
- if (this.isDirCell(target))
- {
- var row = Dom.getAncestorByClass(target, "memberRow");
- var toggleElem = Dom.getChildByClass(row.cells[1], "memberLabel");
- if (!goLeft && Css.hasClass(row, "hasChildren"))
- {
- if (Css.hasClass(row, "opened"))
- {
- this.focusSiblingRow(panel, target, false);
- }
- else if (toggleElem)
- {
- if (Css.hasClass(row, "hasChildren"))
- target.setAttribute("aria-expanded", "true");
- this.dispatchMouseEvent(toggleElem, "click");
- }
- }
- else if (goLeft)
- {
- var level = parseInt(row.getAttribute("level"));
- if (Css.hasClass(row, "opened"))
- {
- if (Css.hasClass(row, "hasChildren"))
- target.setAttribute("aria-expanded", "false");
- this.dispatchMouseEvent(toggleElem, "click");
- }
- else if (level > 0)
- {
- var targetLevel = (level - 1) + "";
- var newRows = Array.filter(row.parentNode.rows, function(e, i, a)
- {
- return e.rowIndex < row.rowIndex &&
- e.getAttribute("level") == targetLevel;
- }, this);
-
- if (newRows.length)
- this.focus(newRows[newRows.length -1].cells[2].firstChild);
- }
- }
- Events.cancelEvent(event);
- }
- else if (this.isOuterFocusRow(target, true))
- {
- if (target.hasAttribute("aria-expanded"))
- {
- if (target.getAttribute("role") == "row" ||
- Css.hasClass(target, "spyHeadTable"))
- {
- if (goLeft && target.getAttribute("aria-expanded") == "true")
- {
- var toggleElem = Css.hasClass(target, "spyHeadTable") ?
- target.getElementsByClassName("spyTitleCol").item(0) : target;
- if (toggleElem)
- this.dispatchMouseEvent(toggleElem, "click");
- }
- }
- else if (target.getAttribute("aria-expanded") == (goLeft ?
- "true" : "false"))
- {
- this.dispatchMouseEvent(target, Css.hasClass(target, "logGroupLabel") ?
- "mousedown" : "click");
- }
- }
- if (goLeft)
- {
- //check if we"re in an expanded section
- var inExpanded = false, groupClass, groupLabelClass, group, groupLabel;
- if (Css.hasClass(target, "objectBox-stackFrame"))
- {
- inExpanded = true;
- groupClass = "errorTrace";
- groupLabelClass = "errorTitle";
- }
- else if (Dom.getAncestorByClass(target, "logGroupBody"))
- {
- inExpanded = true;
- groupClass = "logGroupBody";
- groupLabelClass = "logGroupLabel";
- }
- if (inExpanded)
- {
- group = Dom.getAncestorByClass(target, groupClass);
- if (group)
- {
- groupLabel = this.getPreviousByClass(target, groupLabelClass,
- false, panel.panelNode);
- if (groupLabel)
- {
- this.modifyPanelRow(panel, groupLabel);
- this.focus(groupLabel);
- }
- }
- }
- }
- else if (!goLeft)
- {
-
- var focusItems = this.getFocusObjects(target);
- if (focusItems.length > 0)
- {
- this.focus(Events.isControl(event) ?
- focusItems[focusItems.length -1] : focusItems[0]);
- }
- }
- }
- else if (this.isFocusObject(target))
- {
- var parentRow = this.getAncestorRow(target, true);
- var focusObjects = this.getFocusObjects(parentRow);
- if (!Events.isControl(event))
- {
- var focusIndex = Array.indexOf(focusObjects, target);
- var newIndex = goLeft ? --focusIndex : ++focusIndex;
- this.focus(goLeft && newIndex < 0 ? parentRow : focusObjects[newIndex]);
- }
- else
- {
- this.focus(goLeft ? parentRow : focusObjects[focusObjects.length -1]);
- }
- Events.cancelEvent(event);
- }
- break;
-
- case KeyEvent.DOM_VK_END:
- case KeyEvent.DOM_VK_HOME:
- this.focusEdgeRow(panel, newTarget, keyCode == KeyEvent.DOM_VK_HOME);
- Events.cancelEvent(event);
- break;
-
- case KeyEvent.DOM_VK_PAGE_UP:
- case KeyEvent.DOM_VK_PAGE_DOWN:
- this.focusPageSiblingRow(panel, newTarget, keyCode == KeyEvent.DOM_VK_PAGE_UP);
- Events.cancelEvent(event);
- break;
-
- case KeyEvent.DOM_VK_RETURN:
- if (this.isFocusObject(target))
- {
- this.dispatchMouseEvent(target, "click");
- }
- else if (Css.hasClass(target, "watchEditBox"))
- {
- this.dispatchMouseEvent(target, "mousedown");
- Events.cancelEvent(event);
- }
- else if (Css.hasClass(target, "breakpointRow"))
- {
- var sourceLink =
- target.getElementsByClassName("objectLink-sourceLink").item(0);
- if (sourceLink)
- this.dispatchMouseEvent(sourceLink, "click");
- }
- else if (target.hasAttribute("aria-expanded") &&
- (target.getAttribute("role") == "row" ||
- target.getAttribute("role") == "listitem"))
- {
- var toggleElem = Css.hasClass(target, "spyHeadTable") ?
- target.getElementsByClassName("spyTitleCol").item(0) : target;
- if (toggleElem)
- this.dispatchMouseEvent(toggleElem, "click");
- }
- break;
-
- case KeyEvent.DOM_VK_SPACE:
- if (this.isFocusObject(target) && target.hasAttribute("role", "checkbox"))
- {
- this.dispatchMouseEvent(target, "click");
- var objectBox = Dom.getAncestorByClass(target, "hasBreakSwitch");
- if (objectBox)
- {
- target.setAttribute("aria-checked",
- Css.hasClass(objectBox, "breakForError") + "");
- }
- }
- else if (Css.hasClass(target, "breakpointRow"))
- {
- var checkbox = target.getElementsByClassName("breakpointCheckbox").item(0);
- if (checkbox)
- {
- target.setAttribute("aria-checked", checkbox.checked ? "false" : "true");
- this.dispatchMouseEvent(checkbox, "click");
- }
- }
- break;
-
- case KeyEvent.DOM_VK_DELETE:
- if (Css.hasClass(target, "breakpointRow"))
- {
- var closeBtn = target.getElementsByClassName("closeButton").item(0);
- if (closeBtn)
- {
- var prevBreakpoint = Dom.getPreviousByClass(target, "breakpointRow");
- if (prevBreakpoint)
- this.makeFocusable(prevBreakpoint, true);
- Firebug.chrome.window.document.commandDispatcher.rewindFocus();
- this.dispatchMouseEvent(closeBtn, "click");
- }
- }
- break;
- }
- },
-
- focusPanelRow: function(panel, row)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y || !row)
- return;
- this.modifyPanelRow(panel, row, false);
-
- //allows up / down navigation in columns, if columns are used in this panel
- if (panelA11y.cellIndex !== undefined && row.cells && row.cells[panelA11y.cellIndex])
- {
- var cell = row.cells[panelA11y.cellIndex];
- if (!Css.hasClass(cell, "a11yFocus"))
- cell = Dom.getChildByClass(cell, "a11yFocus");
- this.focus(cell);
- }
- // for Net Panel. Focus selected tab rather than the tab list
- else if (Css.hasClass(row, "netInfoTabs"))
- {
- var tabs = row.getElementsByClassName("netInfoTab");
- tabs = Array.filter(tabs, function(e, i, a)
- {
- return e.hasAttribute("selected");
- });
- this.focus(tabs.length > 0 ? tabs[0] : row);
- }
- else
- {
- this.focus(row);
- }
- },
-
- getRowIndex: function(rows, target)
- {
- return Array.indexOf(rows, target);
- },
-
- getAncestorRow: function(elem, useSubRow)
- {
- return Dom.getAncestorByClass(elem, useSubRow ? "focusRow" : "outerFocusRow");
- },
-
- onConsoleMouseDown: function(event)
- {
- var node = Dom.getAncestorByClass(event.target, "focusRow");
- if (node)
- {
- this.modifyPanelRow(Firebug.getElementPanel(node), node, false);
- }
- else
- {
- node = Dom.getAncestorByClass(event.target, "memberRow");
- if (!node)
- return;
- var focusRow = node.getElementsByClassName("focusRow").item(0);
- if (!focusRow)
- return;
-
- this.focusPanelRow(Firebug.getElementPanel(focusRow), focusRow);
- node = Dom.getAncestorByClass(event.target, "memberLabel");
- if (!(node && Css.hasClass(node, "hasChildren")))
- Events.cancelEvent(event);
- }
- },
-
- getValidRow: function(rows, index)
- {
- var min = 0; var max = rows.length -1;
- if (index < min || index > max)
- index = index < min ? 0 : max;
- return rows[index];
- },
-
- getFocusObjects: function(container)
- {
- var nodes = container.getElementsByClassName("a11yFocus");
- return Array.filter(nodes, this.isVisibleByStyle, this);
- },
-
- modifyConsoleRow: function(panel, row, inTabOrder)
- {
- if (this.isDirCell(row))
- {
- this.modifyMemberRow(panel, row, inTabOrder);
- }
- else if (this.isProfileRow(row))
- {
- this.modifyProfileRow(panel, row, inTabOrder);
- }
- else if (this.isOuterFocusRow(row, true))
- {
- if (Css.hasClass(row, "spyHeadTable") || Css.hasClass(row, "netInfoTabs"))
- this.modifyNetRow(panel, row, row.getAttribute("tabindex") === "0");
- else
- this.modifyLogRow(panel, row, row.getAttribute("tabindex") === "0");
- }
- else return;
- },
-
- modifyProfileRow: function(panel, row, inTabOrder)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y || !row)
- return;
-
- this.makeFocusable(row, inTabOrder);
- var focusObjects = this.getFocusObjects(row);
- Array.forEach(focusObjects, function(e, i, a)
- {
- this.makeFocusable(e);
- if (Css.hasClass(e.parentNode, "profileCell"))
- e.setAttribute("role", "gridcell");
- }, this);
- },
-
- onConsoleSearchMatchFound: function(panel, text, matches)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var matchFeedback = "";
- if (!matches || matches.length == 0)
- {
- matchFeedback = Locale.$STRF("a11y.updates.no matches found", [text]);
- }
- else
- {
- matchFeedback = Locale.$STRF("a11y.updates.match found in logrows",
- [text, matches.length]);
- }
- this.updateLiveElem(panel, matchFeedback, true); //should not use alert
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // HTML Panel
-
- onHTMLKeyPress: function(event)
- {
- var target = event.target;
- var keyCode = event.keyCode || (event.type == "keypress" ? event.charCode : null);
- if ([KeyEvent.DOM_VK_RETURN, KeyEvent.DOM_VK_SPACE,
- KeyEvent.DOM_VK_F2].indexOf(keyCode) == -1)
- {
- return;
- }
- if (!Css.hasClass(target, "nodeLabelBox"))
- return;
-
- var panel = Firebug.getElementPanel(target);
- switch (keyCode)
- {
- case KeyEvent.DOM_VK_RETURN:
- case KeyEvent.DOM_VK_SPACE:
- var isEnter = (keyCode == KeyEvent.DOM_VK_RETURN);
- var nodeLabels = [];
- if (isEnter)
- {
- nodeLabels = target.getElementsByClassName("nodeName");
- if (nodeLabels.length > 0)
- {
- Firebug.Editor.startEditing(nodeLabels[0]);
- Events.cancelEvent(event);
- }
- }
- if (!isEnter || nodeLabels.length == 0)
- {
- var nodeBox = Dom.getAncestorByClass(target, "nodeBox");
- if (nodeBox.repObject && panel.editNewAttribute)
- {
- panel.editNewAttribute(nodeBox.repObject);
- Events.cancelEvent(event);
- }
- }
- break;
-
- case KeyEvent.DOM_VK_F2:
- if (Css.hasClass(target.parentNode.parentNode, "textNodeBox"))
- {
- var textNode = Dom.getChildByClass(target, "nodeText");
- if (textNode)
- Firebug.Editor.startEditing(textNode);
- }
- break;
- }
- },
-
- onHTMLFocus: function(event)
- {
- if (Css.hasClass(event.target, "nodeLabelBox"))
- {
- this.dispatchMouseEvent(event.target, "mouseover");
- var nodeLabel = Dom.getAncestorByClass(event.target, "nodeLabel");
- if (nodeLabel)
- Css.setClass(nodeLabel, "focused");
- event.target.setAttribute("aria-selected", "true");
- Events.cancelEvent(event);
- }
- },
-
- onHTMLBlur: function(event)
- {
- if (Css.hasClass(event.target, "nodeLabelBox"))
- {
- this.dispatchMouseEvent(event.target, "mouseout");
- var nodeLabel = Dom.getAncestorByClass(event.target, "nodeLabel");
- if (nodeLabel)
- Css.removeClass(nodeLabel, "focused");
- event.target.setAttribute("aria-selected", "false");
- Events.cancelEvent(event);
- }
- },
-
- onObjectBoxSelected: function(objectBox, forceFocus)
- {
- var panel = Firebug.getElementPanel(objectBox);
-
- // See issue 5934
- if (panel.editing)
- return;
-
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
- var label = objectBox.firstChild.getElementsByClassName("nodeLabelBox").item(0);
- if (label)
- {
- this.makeFocusable(label, true);
- if (this.panelHasFocus(panel) || forceFocus)
- this.focus(label);
- }
- },
-
- onObjectBoxUnselected: function(objectBox)
- {
- if (!this.isEnabled() || !objectBox)
- return;
- var label = objectBox.firstChild.getElementsByClassName("nodeLabelBox").item(0);
- if (label)
- this.makeUnfocusable(label, true);
- },
-
- onHTMLSearchMatchFound: function(panel, match)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var node = match.node;
- var elem;
- var matchFeedback = "";
- switch (node.nodeType)
- {
- case Node.ELEMENT_NODE:
- elem = node;
- matchFeedback += Locale.$STRF("a11y.updates.match found in element",
- [match.match[0], elem.nodeName, Xpath.getElementTreeXPath(elem)]);
- break;
-
- case Node.ATTRIBUTE_NODE:
- elem = node.ownerElement;
- matchFeedback += Locale.$STRF("a11y.updates.match found in attribute",
- [match.match[0], node.name, node.value, elem.nodeName,
- Xpath.getElementTreeXPath(elem)]);
- break;
-
- case Node.TEXT_NODE:
- elem = node.parentNode;
- matchFeedback += Locale.$STRF("a11y.updates.match found in text content",
- [match.match[0], match.match.input]);
- break;
- }
- this.updateLiveElem(panel, matchFeedback, true); //should not use alert
- },
-
- onHTMLSearchNoMatchFound: function(panel, text)
- {
- this.updateLiveElem(panel, Locale.$STRF("a11y.updates.no matches found", [text]), true);
- },
-
- moveToSearchMatch: function()
- {
- if (!this.isEnabled())
- return;
- var panel = Firebug.chrome.getSelectedPanel();
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y || !panel.searchable)
- return;
-
- var popup = Firebug.chrome.$("fbSearchOptionsPopup");
- if (popup)
- popup.hidePopup();
- var type = panel.searchType ? panel.searchType : panelA11y.type;
- switch (type)
- {
- case "html":
- var match = panel.lastSearch.lastMatch;
- if (!match)
- return;
- var nodeBox = panel.lastSearch.openToNode(match.node, match.isValue);
- if (!nodeBox)
- return;
-
- nodeBox = Dom.getAncestorByClass(nodeBox, "nodeBox");
- //select call will not trigger focus because focus is outside the HTML panel (i.e. the search field),
- panel.select(nodeBox.repObject, true);
- // Manually force selected node to be focused
- this.onObjectBoxSelected(nodeBox, true);
- break;
-
- case "css":
- if (panel.currentSearch && panel.currentSearch.currentNode)
- {
- var focusRow = Dom.getAncestorByClass(panel.currentSearch.currentNode,
- "focusRow");
- if (focusRow)
- this.focusPanelRow(panel, focusRow);
- }
- break;
-
- case "script":
- if (panel.currentSearch && panel.selectedSourceBox)
- {
- var box = panel.selectedSourceBox;
- var lineNo = panel.currentSearch.mark;
- box.a11yCaretLine = lineNo + 1;
- box.a11yCaretOffset = 0;
- panel.scrollToLine(box.repObject.href, lineNo,
- panel.jumpHighlightFactory(lineNo+1, panel.context));
- var viewport = box.getElementsByClassName("sourceViewport").item(0);
- if (viewport)
- {
- this.focus(viewport);
- this.insertCaretIntoLine(panel, box);
- }
- }
- break;
-
- case "dom":
- if (panel.currentSearch && panel.currentSearch.currentNode)
- {
- var focusRow =
- panel.currentSearch.currentNode.getElementsByClassName("focusRow").item(0);
- if (focusRow)
- this.focusPanelRow(panel, focusRow);
- }
- break;
-
- case "net":
- if (panel.currentSearch && panel.currentSearch.currentNode)
- {
- var focusRow = Dom.getAncestorByClass(panel.currentSearch.currentNode,
- "focusRow");
- if (focusRow)
- this.focusPanelRow(panel, focusRow);
- }
- break;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // CSS Panel
-
- onCSSKeyPress: function(event)
- {
- var target = event.target;
- var keyCode = event.keyCode || (event.type == "keypress" ? event.charCode : null);
- if (!this.isFocusRow(target) || event.altKey)
- return;
-
- if ([KeyEvent.DOM_VK_RETURN, KeyEvent.DOM_VK_SPACE, KeyEvent.DOM_VK_PAGE_UP,
- KeyEvent.DOM_VK_PAGE_DOWN, KeyEvent.DOM_VK_END, KeyEvent.DOM_VK_HOME,
- KeyEvent.DOM_VK_UP, KeyEvent.DOM_VK_DOWN].indexOf(keyCode) == -1)
- {
- return; //not interested in any other keys than arrows, pg, home/end, space & enter
- }
- var panel = Firebug.getElementPanel(target);
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- switch (keyCode)
- {
- case KeyEvent.DOM_VK_UP:
- case KeyEvent.DOM_VK_DOWN:
- var goUp = keyCode == 38;
- if (Events.isControl(event))
- {
- if (event.shiftKey)
- {
- var node = this[goUp ? "getPreviousByClass" : "getNextByClass"](target,
- "cssInheritHeader", panel.panelNode);
- if (node)
- this.focusPanelRow(panel, node);
- else if (goUp)
- this.focusEdgeCSSRow(panel, target, true);
- }
- else
- this.focusSiblingHeadRow(panel, target, goUp);
- }
- else
- this.focusSiblingCSSRow(panel, target, goUp);
- break;
-
- case KeyEvent.DOM_VK_END:
- case KeyEvent.DOM_VK_HOME:
- if (Events.isControl(event))
- this.focusEdgeHeadRow(panel, target, keyCode == 36);
- else
- this.focusEdgeCSSRow(panel, target, keyCode == 36);
- break;
-
- case KeyEvent.DOM_VK_PAGE_UP:
- case KeyEvent.DOM_VK_PAGE_DOWN:
- if (Events.isControl(event))
- this.focusPageSiblingHeadRow(panel, target, keyCode == 33);
- else
- this.focusPageSiblingCSSRow(panel, target, keyCode == 33);
- break;
-
- case KeyEvent.DOM_VK_RETURN:
- if (Css.hasClass(target, "cssProp"))
- {
- var node = Dom.getChildByClass(target, "cssPropName");
- if (node)
- Firebug.Editor.startEditing(node);
- Events.cancelEvent(event);
- }
- else if (Css.hasClass(target, "cssHead"))
- {
- var node = Dom.getChildByClass(target, "cssSelector");
- if (node && Css.hasClass(node, "editable"))
- Firebug.Editor.startEditing(node);
- Events.cancelEvent(event);
- }
- else if (Css.hasClass(target, "importRule"))
- {
- var node = Dom.getChildByClass(target, "objectLink");
- if (node)
- this.dispatchMouseEvent(node, "click");
- }
- break;
-
- case KeyEvent.DOM_VK_SPACE:
- if (Css.hasClass(target, "cssProp"))
- {
- //our focus is about to be wiped out, we'll try to get it back after
- panelA11y.reFocusId = Xpath.getElementXPath(target);
- panel.disablePropertyRow(target);
- if (panel.name == "stylesheet")
- {
- target.setAttribute("aria-checked",
- !Css.hasClass(target, "disabledStyle"));
- }
- Events.cancelEvent(event);
- }
- break;
- }
- if (!event.shiftKey)
- event.preventDefault();
- },
-
- onCSSMouseDown: function(event)
- {
- var row = Dom.getAncestorByClass(event.target, "focusRow");
- if (row)
- this.modifyPanelRow(Firebug.getElementPanel(row), row, false);
- },
-
- focusSiblingCSSRow: function(panel, target, goUp)
- {
- var newRow = this[goUp ? "getPreviousByClass" : "getNextByClass"](target, "focusRow",
- panel.panelNode);
- if (!newRow)
- return;
- this.focusPanelRow(panel, newRow, false);
- },
-
- focusPageSiblingCSSRow: function(panel, target, goUp)
- {
- var rows = this.getFocusRows(panel);
- var index = this.getRowIndex(rows, target);
- var newRow = this.getValidRow(rows, goUp ? index - 10 : index + 10);
- this.focusPanelRow(panel, newRow, false);
- },
-
- focusEdgeCSSRow: function(panel, target, goUp)
- {
- var rows = this.getFocusRows(panel);
- var newRow = this.getValidRow(rows, goUp ? 0 : rows.length -1);
- this.focusPanelRow(panel, newRow, false);
- },
-
- getHeadRowsAndIndex: function(panel, elem)
- {
- var rows = this.getFocusRows(panel);
- var headRow = Css.hasClass(elem, "cssHead") ?
- elem : Dom.getPreviousByClass(elem, "cssHead");
- var headRows = Array.filter(rows, function(e, i, a) {
- return Css.hasClass(e, "cssHead");
- });
- var index = Array.indexOf(headRows, headRow);
- if (index == -1)
- index = 0;
- return [headRows, index];
- },
-
- focusSiblingHeadRow: function(panel, elem, goUp)
- {
- var rowInfo = this.getHeadRowsAndIndex(panel, elem);
- var newRow = this.getValidRow(rowInfo[0], goUp ? rowInfo[1] - 1 : rowInfo[1] + 1);
- this.focusPanelRow(panel, newRow, false);
- },
-
- focusPageSiblingHeadRow: function(panel, elem, goUp)
- {
- var rowInfo = this.getHeadRowsAndIndex(panel, elem);
- var newRow = this.getValidRow(rowInfo[0], goUp ? rowInfo[1] - 10 : rowInfo[1] + 10);
- this.focusPanelRow(panel, newRow, false);
- },
-
- focusEdgeHeadRow: function(panel, elem, goUp)
- {
- var rowInfo = this.getHeadRowsAndIndex(panel, elem);
- var newRow = this.getValidRow(rowInfo[0], goUp ? 0 : rowInfo[0].length - 1);
- this.focusPanelRow(panel, newRow, false);
- },
-
- onBeforeCSSRulesAdded: function(panel)
- {
- // Panel content is about to be recreated, possibly wiping out focus.
- // Use the focused element's xpath to remember which rule had focus,
- // so that it can be refocused when the panel content is drawn again
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y || !this.panelHasFocus(panel))
- return;
- if (panelA11y.tabStop && Css.hasClass(panelA11y.tabStop, "focusRow"))
- panelA11y.reFocusId = Xpath.getElementXPath(panelA11y.tabStop);
- },
-
- onCSSRulesAdded: function(panel, rootNode)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
- var row;
- if (panelA11y.reFocusId)
- { //we need to put focus back to where it was before it was wiped out
- var reFocusRows = Xpath.getElementsByXPath(rootNode.ownerDocument,
- panelA11y.reFocusId);
- panelA11y.reFocusId = null;
- if (reFocusRows.length > 0)
- {
- row = reFocusRows[0];
- this.modifyPanelRow(panel, row, true);
- this.focus(row, true);
- this.setPanelTabStop(panel, row);
- return;
- }
- }
- //no refocus needed, just make first rule the panel's tab stop
- row = rootNode.getElementsByClassName("focusRow").item(0);
- this.modifyPanelRow(panel, row, true);
- return;
- },
- //applies a11y changes (keyboard and screen reader related) to an individual row
- //To improve performance, this only happens when absolutely necessary, e.g. when the user navigates to the row in question
-
- modifyCSSRow: function(panel, row, inTabOrder)
- {
- if (!panel || !row)
- return;
- var rule = Dom.getAncestorByClass(row, "cssRule");
- if (inTabOrder)
- this.setPanelTabStop(panel, row);
- else
- this.makeFocusable(row);
- if (rule && !Css.hasClass(rule, "a11yModified"))
- {
- var listBox = rule.getElementsByClassName("cssPropertyListBox").item(0);
- var selector = rule.getElementsByClassName("cssSelector").item(0);
- if (listBox && selector)
- {
- listBox.setAttribute("aria-label",
- Locale.$STRF("a11y.labels.declarations for selector", [selector.textContent]));
- }
- Css.setClass(rule, "a11yModified");
- }
- if (Css.hasClass(row, "cssHead"))
- {
- if (panel.name == "css")
- {
- var sourceLink = rule.parentNode.lastChild;
- if (sourceLink && Css.hasClass(sourceLink, "objectLink"))
- {
- row.setAttribute("aria-label", row.textContent + " " +
- Locale.$STRF("a11y.labels.defined in file", [sourceLink.textContent]));
- }
- }
- }
- else if (Css.hasClass(row, "cssProp"))
- {
- row.setAttribute("aria-checked", !Css.hasClass(row, "disabledStyle"));
- if (Css.hasClass(row, "cssOverridden"))
- {
- row.setAttribute("aria-label", Locale.$STR("aria.labels.overridden") + " " +
- row.textContent);
- }
- }
- return;
- },
-
- onCSSPanelContextMenu: function(event)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- if (event.button == 0) //the event was created by keyboard, not right mouse click
- {
- var panel = Firebug.getElementPanel(event.target);
- if (panel && Css.hasClass(event.target, "focusRow"))
- {
- var node = event.target;
- if (panel.name == "css")
- {
- if (Css.hasClass(event.target, "cssHead"))
- {
- node = event.target.parentNode.getElementsByClassName("objectLink")
- .item(0);
- }
- else if (Css.hasClass(event.target, "cssInheritHeader"))
- {
- node = event.target.getElementsByClassName("objectLink").item(0);
- }
-
- if (!node || Css.hasClass(node, "collapsed"))
- {
- node = event.target;
- }
- }
- //these context menu options are likely to destroy current focus
- panelA11y.reFocusId = Xpath.getElementXPath(event.target);
- document.popupNode = node;
- Firebug.chrome.$("fbContextMenu").openPopup(node, "overlap", 0,0,true);
- Events.cancelEvent(event); //no need for default handlers anymore
- }
- }
- },
-
- onCSSSearchMatchFound: function(panel, text, matchRow)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y || !text)
- return;
-
- if (!matchRow)
- {
- this.updateLiveElem(panel,
- Locale.$STRF("a11y.updates.no matches found", [text]), true); //should not use alert
- return;
- }
- var matchFeedback = "";
- var selector;
- if (Css.hasClass(matchRow, "cssSelector"))
- {
- matchFeedback = " " + Locale.$STRF("a11y.updates.match found in selector",
- [text, matchRow.textContent]);
- }
- else
- {
- selector = Dom.getPreviousByClass(matchRow, "cssSelector");
- selector = selector ? selector.textContent : "";
- if (Css.hasClass(matchRow, "cssPropName") || Css.hasClass(matchRow, "cssPropValue"))
- {
- var propRow = Dom.getAncestorByClass(matchRow, "cssProp");
- if (propRow)
- {
- matchFeedback = Locale.$STRF("a11y.updates.match found in style declaration",
- [text, propRow.textContent, selector]);
- }
- }
- }
- this.updateLiveElem(panel, matchFeedback, true); // should not use alert
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Layout Panel
-
- onLayoutBoxCreated: function(panel, node, detailsObj)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var focusGroups = node.getElementsByClassName("focusGroup");
- Array.forEach(focusGroups, function(e, i, a) {
- this.makeFocusable(e, Css.hasClass(e, "positionLayoutBox"));
- e.setAttribute("role", "group");
- e.setAttribute("aria-label", this.getLayoutBoxLabel(e, detailsObj));
- e.setAttribute("aria-setsize", a.length);
- e.setAttribute("aria-posinset", i + 1);
- }, this);
- },
-
- getLayoutBoxLabel: function(elem, detailsObj)
- {
- var className = elem.className.match(/\b(\w+)LayoutBox\b/);
- if (!className)
- return "";
-
- var styleName = className[1];
- var output = "";
- switch (styleName)
- {
- case "position":
- output += Css.hasClass(elem, "blankEdge") ?
- "" : Locale.$STR("a11y.layout.position");
- styleName = "outer";
- break;
-
- case "margin":
- output += Locale.$STR("a11y.layout.margin");
- break;
-
- case "border":
- output += Locale.$STR("a11y.layout.border");
- break;
-
- case "padding":
- output += Locale.$STR("a11y.layout.padding");
- break;
-
- case "content":
- output += Locale.$STR("a11y.layout.size");
- break;
- }
- output += ": ";
- var valNames = [];
- var vals = {};
- switch (styleName)
- {
- case "outer":
- valNames = ["top", "left", "position", "z-index"];
- vals.top = detailsObj[styleName + "Top"];
- vals.left = detailsObj[styleName + "Left"];
- vals.position = detailsObj.position;
- vals["z-index"] = detailsObj.zIndex;
- break;
-
- case "content":
- valNames = ["width", "height"];
- vals.width = detailsObj["width"];
- vals.height = detailsObj["height"];
- break;
-
- default:
- valNames = ["top", "right", "bottom", "left"];
- vals.top = detailsObj[styleName + "Top"];
- vals.right = detailsObj[styleName + "Right"];
- vals.bottom = detailsObj[styleName + "Bottom"];
- vals.left = detailsObj[styleName + "Left"];
- break;
- }
-
- for (var i = 0; i < valNames.length; i++)
- {
- output += Locale.$STR("a11y.layout." + valNames[i]) + " = " + vals[valNames[i]];
- output += i == valNames.length -1 ? "" : ", ";
- }
- return output;
- },
-
- onLayoutKeyPress: function(event)
- {
- var target = event.target;
- var keyCode = event.keyCode || (event.type == "keypress" ? event.charCode : null);
- if ([KeyEvent.DOM_VK_RETURN, KeyEvent.DOM_VK_LEFT, KeyEvent.DOM_VK_UP,
- KeyEvent.DOM_VK_RIGHT, KeyEvent.DOM_VK_DOWN].indexOf(keyCode) == -1)
- {
- return;
- }
- if (!Css.hasClass(target, "focusGroup"))
- return;
-
- switch (keyCode)
- {
- case KeyEvent.DOM_VK_LEFT:
- case KeyEvent.DOM_VK_UP:
- case KeyEvent.DOM_VK_RIGHT:
- case KeyEvent.DOM_VK_DOWN:
- var node, goLeft = (keyCode == KeyEvent.DOM_VK_LEFT ||
- keyCode == KeyEvent.DOM_VK_UP);
- if (goLeft)
- node = Dom.getAncestorByClass(target.parentNode, "focusGroup");
- else
- node = Dom.getChildByClass(target, "focusGroup");
-
- if (node)
- this.focus(node);
- break;
-
- case KeyEvent.DOM_VK_RETURN:
- var editable = target.getElementsByClassName("editable").item(0);
- if (editable)
- Firebug.Editor.startEditing(editable);
- Events.cancelEvent(event);
- break;
- }
- },
-
- onLayoutFocus: function(event)
- {
- if (Css.hasClass(event.target, "focusGroup"))
- {
- this.dispatchMouseEvent(event.target, "mouseover");
- this.setPanelTabStop(Firebug.getElementPanel(event.target), event.target);
- }
- },
-
- onLayoutBlur: function(event)
- {
- if (Css.hasClass(event.target, "focusGroup"))
- this.dispatchMouseEvent(event.target, "mouseout");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Inline Editing
- onInlineEditorShow: function(panel, editor)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- //recreate the input element rather than reusing the old one, otherwise AT won't pick it up
- editor.input.onkeypress = editor.input.oninput = editor.input.onoverflow = null;
- editor.inputTag.replace({}, editor.box.childNodes[1].firstChild, editor);
- editor.input = editor.box.childNodes[1].firstChild.firstChild;
- },
-
- onBeginEditing: function(panel, editor, target, value)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- switch (panelA11y.type)
- {
- case "html":
- var nodeName = null;
- var setSize = posInSet = 0; var setElems;
- var label = Locale.$STR("a11y.labels.inline editor") + ": ";
- if (Css.hasClass(target, "nodeName") || Css.hasClass(target, "nodeValue"))
- {
- var isName = Css.hasClass(target, "nodeName");
- setElems = target.parentNode.parentNode
- .getElementsByClassName(isName ? "nodeName" : "nodeValue");
- setSize = (setElems.length * 2);
- posInSet = ((Array.indexOf(setElems, target) + 1) * 2) - (isName ? 1 : 0);
- editor.input.setAttribute("role", "listitem");
- editor.input.setAttribute("aria-setsize", setSize);
- editor.input.setAttribute("aria-posinset", posInSet);
- nodeTag = Dom.getPreviousByClass(target, "nodeTag");
- if (!isName)
- {
- nodeName = Dom.getPreviousByClass(target, "nodeName");
- label += Locale.$STRF("a11y.labels.value for attribute in element",
- [nodeName.textContent, nodeTag.textContent]);
- }
- else
- {
- label += Locale.$STRF("a11y.label.attribute for element",
- [nodeTag.textContent]);
- }
- }
- else if (Css.hasClass(target, "nodeText"))
- {
- nodeTag = Dom.getPreviousByClass(target, "nodeTag");
- label += Locale.$STRF("a11y.labels.text contents for element",
- [nodeTag.textContent]);
- }
- editor.input.setAttribute("aria-label", label);
- break;
-
- case "css":
- case "stylesheet":
- var selector = Dom.getPreviousByClass(target, "cssSelector");
- selector = selector ? selector.textContent : "";
- var label = Locale.$STR("a11y.labels.inline editor") + ": ";
- if (Css.hasClass(target, "cssPropName"))
- {
- label += Locale.$STRF("a11y.labels.property for selector", [selector]);
- }
- else if (Css.hasClass(target, "cssPropValue"))
- {
- var propName = Dom.getPreviousByClass(target, "cssPropName");
- propName = propName ? propName.textContent : "";
- label += Locale.$STRF("a11y.labels.value property in selector",
- [propName, selector]);
- }
- else if (Css.hasClass(target, "cssSelector"))
- {
- label += Locale.$STR("a11y.labels.css selector");
- }
-
- editor.input.setAttribute("aria-label", label);
- editor.setAttribute("aria-autocomplete", "inline");
- break;
-
- case "layout":
- editor.input.setAttribute("aria-label", target.getAttribute("aria-label"));
- break;
-
- case "dom":
- case "domSide":
- if (target.cells && target.cells[1])
- editor.input.setAttribute("aria-label", target.cells[1].textContent);
- break;
- }
- },
-
- onInlineEditorClose: function(panel, target, removeGroup)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- switch (panelA11y.type)
- {
- case "layout":
- var box = Dom.getAncestorByClass(target, "focusGroup");
- if (box)
- this.focus(box, true);
- break;
-
- case "css":
- case "stylesheet":
- var node = target.parentNode;
- if (removeGroup)
- node = this.getPreviousByClass(node, "focusRow", panel.panelNode);
- if (node)
- this.focusPanelRow(panel, node, true);
- break;
-
- case "html":
- var box = Dom.getAncestorByClass(target, "nodeBox");
- if (box)
- panel.select(box.repObject, true);
- break;
-
- case "watches":
- var node = target.getElementsByClassName("watchEditBox").item(0);
- if (node)
- this.focus(node, true);
- break;
-
- case "script":
- panel.selectedSourceBox.focus();
- break;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Script Panel
-
- onStartDebugging: function(context)
- {
- if (!context)
- return;
-
- var panel = context.getPanel("script");
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var frame = context.stoppedFrame;
- var fileName = frame.script.fileName.split("/"); // XXXjjb I think this should be contxt.executingSourceFile.href
- fileName = fileName.pop();
- // XXXjjb the frame.functionName is often anonymous, since the compiler is lame.
- var alertString = Locale.$STRF("a11y.updates.script_suspended_on_line_in_file",
- [frame.line, frame.functionName, fileName]);
- this.updateLiveElem(panel, alertString, true);
- this.onShowSourceLink(panel, frame.line);
- },
-
- onShowSourceLink: function (panel, lineNo)
- {
- if (!this.isEnabled())
- return;
-
- var box = panel.selectedSourceBox;
- var viewport = box.getElementsByClassName("sourceViewport").item(0);
- box.a11yCaretLine = lineNo;
- if (viewport && this.panelHasFocus(panel))
- {
- this.focus(viewport);
- this.insertCaretIntoLine(panel, box, lineNo);
- }
- },
-
- onScriptKeyPress: function(event)
- {
- var target = event.target;
- var keyCode = event.keyCode || (event.type == "keypress" ? event.charCode : null);
- if (!Css.hasClass(target, "sourceViewport"))
- return;
-
- if ([KeyEvent.DOM_VK_RETURN, KeyEvent.DOM_VK_PAGE_UP, KeyEvent.DOM_VK_PAGE_DOWN,
- KeyEvent.DOM_VK_END, KeyEvent.DOM_VK_HOME, KeyEvent.DOM_VK_LEFT, KeyEvent.DOM_VK_UP,
- KeyEvent.DOM_VK_RIGHT, KeyEvent.DOM_VK_DOWN].indexOf(keyCode) == -1)
- {
- return;
- }
-
- var panel = Firebug.getElementPanel(target);
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var box = panel.selectedSourceBox;
- var lastLineNo = box.lastViewableLine;
- var firstLineNo = box.firstViewableLine;
- var caretDetails = this.getCaretDetails(event.target.ownerDocument);
- if (!caretDetails || caretDetails.length != 2)
- return;
-
- var lineNode = Dom.getAncestorByClass(caretDetails[0].parentNode, "sourceRow");
- if (!lineNode)
- return;
-
- var lineNo = parseInt(lineNode.getElementsByClassName("sourceLine").item(0).textContent);
- box.a11yCaretLine = lineNo;
- box.a11yCaretOffset = caretDetails[1];
- var linesToScroll = 0;
- var goUp;
- switch (keyCode)
- {
- case KeyEvent.DOM_VK_UP:
- case KeyEvent.DOM_VK_DOWN:
- goUp = (keyCode == KeyEvent.DOM_VK_UP);
- linesToScroll = goUp ? -1 : 1;
- if (!Events.isControl(event))
- {
- if ((goUp && lineNo > firstLineNo + 1) ||
- (!goUp && lineNo < lastLineNo - 1))
- {
- return;
- }
-
- box.a11yCaretLine = goUp ? lineNo - 1 : lineNo +1;
- }
- box.scrollTop = box.scrollTop + (linesToScroll * box.lineHeight);
- break;
-
- case KeyEvent.DOM_VK_PAGE_UP:
- case KeyEvent.DOM_VK_PAGE_DOWN:
- goUp = (keyCode == KeyEvent.DOM_VK_PAGE_UP);
- if ((goUp && box.scrollTop == 0) ||
- (!goUp && box.scrollTop == box.scrollHeight - box.clientHeight))
- {
- box.a11yCaretLine = goUp ? 0 : box.totalMax;
- box.a11yCaretOffset = 0;
- this.insertCaretIntoLine(panel, box);
- Events.cancelEvent(event);
- return;
- }
- box.a11yCaretLine = goUp ? lineNo - box.viewableLines : lineNo + box.viewableLines;
- linesToScroll = goUp ? -box.viewableLines : box.viewableLines;
- box.scrollTop = box.scrollTop + (linesToScroll * box.lineHeight);
- Events.cancelEvent(event);
- break;
-
- case KeyEvent.DOM_VK_HOME:
- case KeyEvent.DOM_VK_END:
- goUp = (keyCode == KeyEvent.DOM_VK_HOME);
- if (Events.isControl(event))
- {
- box.a11yCaretLine = goUp ? 0 : box.totalMax;
- box.a11yCaretOffset = 0;
- if ((goUp && box.scrollTop == 0) ||
- (!goUp && box.scrollTop == box.scrollHeight - box.clientHeight))
- {
- this.insertCaretIntoLine(panel, box);
- }
- else
- {
- box.scrollTop = goUp ? 0 : box.scrollHeight - box.clientHeight;;
- }
- Events.cancelEvent(event);
- return;
- }
-
- if (goUp)
- {
- //move caret to beginning of line. Override default behavior, as that would take the caret into the line number
- this.insertCaretIntoLine(panel, box, lineNo, 0);
- box.scrollLeft = 0; //in case beginning of line is scrolled out of view
- Events.cancelEvent(event);
- }
- break;
-
- case KeyEvent.DOM_VK_RETURN:
- var liveString = "";
- var caretDetails = this.getCaretDetails(event.target.ownerDocument);
- var lineNode = Dom.getAncestorByClass(caretDetails[0].parentNode, "sourceRow");
- var lineNo = parseInt(lineNode.getElementsByClassName("sourceLine").item(0)
- .textContent);
- liveString += "Line " + lineNo;
- if (lineNode.getAttribute("breakpoint") == "true")
- {
- var breakpointStr = "";
- if (lineNode.getAttribute("disabledbreakpoint") == "true")
- breakpointStr = "a11y.updates.has disabled breakpoint";
- if (lineNode.getAttribute("condition") == "true")
- breakpointStr = "a11y.updates.has conditional breakpoint";
- liveString += ", " + Locale.$STR(breakpointStr);
- }
- if (lineNode.getAttribute("executable") == "true")
- liveString += ", executable";
- if (lineNode.getAttribute("exe_line") == "true")
- liveString += ", currently stopped";
- var sourceText = lineNode.getElementsByClassName("sourceRowText").item(0);
- if (sourceText)
- liveString += ": " + sourceText.textContent;
- this.updateLiveElem(panel, liveString, true); //should not use alert
- break;
- }
- },
-
- onScriptKeyUp: function(event)
- {
- var target = event.target;
- var keyCode = event.keyCode || (event.type == "keypress" ? event.charCode : null);
- if (!Css.hasClass(target, "sourceViewport"))
- return;
-
- if ([KeyEvent.DOM_VK_RETURN, KeyEvent.DOM_VK_PAGE_UP, KeyEvent.DOM_VK_PAGE_DOWN,
- KeyEvent.DOM_VK_END, KeyEvent.DOM_VK_HOME, KeyEvent.DOM_VK_LEFT, KeyEvent.DOM_VK_UP,
- KeyEvent.DOM_VK_RIGHT, KeyEvent.DOM_VK_DOWN].indexOf(keyCode) == -1)
- {
- return;
- }
-
- var panel = Firebug.getElementPanel(target);
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var box = panel.selectedSourceBox;
- var caretDetails = this.getCaretDetails(target.ownerDocument);
- var lineNode = Dom.getAncestorByClass(caretDetails[0].parentNode, "sourceRow");
- if (!lineNode)
- return;
-
- var lineNo = parseInt(lineNode.getElementsByClassName("sourceLine").item(0).textContent);
- box.a11yCaretLine = lineNo;
- box.a11yCaretOffset = caretDetails[1];
- },
-
- onScriptMouseUp: function(event)
- {
- var target = event.target;
- if (event.button !== 0)
- return;
-
- var panel = Firebug.getElementPanel(target);
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var box = panel.selectedSourceBox;
- var caretDetails = this.getCaretDetails(target.ownerDocument);
- var lineNode = null;
- if (caretDetails[0] && caretDetails[0].parentNode)
- lineNode = Dom.getAncestorByClass(caretDetails[0].parentNode, "sourceRow");
- if (!lineNode)
- return;
-
- var lineNo = parseInt(lineNode.getElementsByClassName("sourceLine").item(0).textContent);
- box.a11yCaretLine = lineNo;
- box.a11yCaretOffset = caretDetails[1];
- },
-
- onBeforeViewportChange: function(panel)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var box = panel.selectedSourceBox;
- if (!box)
- return;
-
- this.insertCaretIntoLine(panel, box);
- },
-
- insertCaretIntoLine: function(panel, box, lineNo, offset)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y || !box)
- return;
-
- if (typeof lineNo == "undefined")
- lineNo = box.a11yCaretLine ? box.a11yCaretLine : 0;
- //to prevent the caret from (partially) being placed just out of sight,
- //adjust the viewable line boundaries by 1 (unless the current line is the first or last line)
- var lineAdjust = lineNo == 0 || lineNo == box.totalMax ? 0 : 1;
- var firstLine = box.firstViewableLine + lineAdjust;
- var lastLine = box.lastViewableLine - lineAdjust;
- if (lineNo < (firstLine) || lineNo > lastLine)
- box.a11yCaretLine = lineNo = lineNo < firstLine ? firstLine : lastLine;
- var node = box.getLineNode(lineNo);
- if (!node)
- return;
-
- if (typeof offset == "undefined")
- {
- if (box.a11yCaretOffset)
- offset = box.a11yCaretOffset;
- else
- box.a11yCaretOffset = offset = 0;
- }
- var startNode = node.getElementsByClassName("sourceRowText").item(0);
- if (startNode && startNode.firstChild && startNode.firstChild.nodeType == Node.TEXT_NODE)
- {
- startNode = startNode.firstChild;
- if (offset >= startNode.length)
- box.a11yCaretOffset = offset = startNode.length - 1;
- }
- else
- {
- startNode = node; //offset is now the number of nodes, not characters within a text node
- offset = 1;
- }
- this.insertCaretToNode(panel, startNode, offset);
- },
-
- getCaretDetails: function(doc)
- {
- var sel = doc.defaultView.getSelection();
- return [sel.focusNode, sel.focusOffset];
- },
-
- onUpdateScriptLocation: function(panel, file)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var box = panel.selectedSourceBox;
- var viewport = panel.selectedSourceBox.getElementsByClassName("sourceViewport").item(0);
- box.tabIndex = -1;
- viewport.tabIndex = 0;
- viewport.setAttribute("role", "textbox");
- viewport.setAttribute("aria-multiline", "true");
- viewport.setAttribute("aria-readonly", "true");
- fileName = Url.getFileName(file.href);
- viewport.setAttribute("aria-label", Locale.$STRF("a11y.labels.source code for file",
- [fileName]));
- //bit ugly, but not sure how else I can get the caret into the sourcebox without a mouse
- var focusElem = Firebug.chrome.window.document.commandDispatcher.focusedElement;
- var line = box.getLineNode(box.firstViewableLine);
- if (!line)
- return;
-
- var node = line.getElementsByClassName("sourceRowText").item(0);
- this.insertCaretToNode(panel, node);
- // move focus back to where it was
- this.focus(focusElem);
- },
-
- insertCaretToNode: function(panel, node, startOffset)
- {
- if (!startOffset)
- startOffset = 0;
- var sel = panel.document.defaultView.getSelection();
- sel.removeAllRanges();
- var range = panel.document.createRange();
- range.setStart(node, startOffset);
- range.setEnd(node, startOffset);
- sel.addRange(range);
- },
-
- onScriptContextMenu: function(event)
- {
- if (event.button == 0) //i.e. keyboard, not right mouse click
- {
- //Try to find the line node based on the caret and manually trigger the context menu
- var panel = Firebug.getElementPanel(event.target);
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var sel = event.target.ownerDocument.defaultView.getSelection();
- var node = sel.focusNode.parentNode;
- var x = event.pageX;
- if (x == 0)
- {
- //TODO: This is ugly and way too inaccurate, how to get xy coordinates from selection object?
- var charWidth = panelA11y.oneEmElem ? panelA11y.oneEmElem.clientWidth * 0.65 : 7.5;
- x = node.offsetLeft + sel.focusOffset * charWidth;
- }
- var y = event.pageY;
- if (y >= event.target.clientHeight)
- y = node.offsetTop;
- Firebug.chrome.window.document.popupNode = node;
- Firebug.chrome.$("fbContextMenu").openPopup(node.ownerDocument.body, "overlap", x, y,
- true);
- Events.cancelEvent(event);
- }
- },
-
- onWatchPanelRefreshed: function(panel)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var watchEditTrigger = panel.panelNode.getElementsByClassName("watchEditCell").item(0);
- if (watchEditTrigger)
- this.makeFocusable(watchEditTrigger, true);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Call Stack Panel
-
- onStackCreated: function(panel)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
- var rows = panel.panelNode.getElementsByClassName("focusRow");
- Array.forEach(rows, function(e, i, a) {
- if ((panelA11y.lastIsDefault && i === rows.length - 1) ||
- (!panelA11y.lastIsDefault && i === 0))
- {
- this.setPanelTabStop(panel, e);
- }
- else
- {
- this.makeFocusable(e, false);
- }
- }, this);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Breakpoints Panel
-
- onBreakRowsRefreshed: function(panel, rootNode)
- {
- var rows = rootNode.getElementsByClassName("focusRow");
- for (var i = 0; i < rows.length; i++)
- {
- this.makeFocusable(rows[i], i == 0);
- if (i == 0)
- this.setPanelTabStop(panel, rows[i]);
- }
- var groupHeaders = rootNode.getElementsByClassName("breakpointHeader");
- for (var i = 0; i < groupHeaders.length; i++)
- {
- var listBox = Dom.getNextByClass(groupHeaders[i], "breakpointsGroupListBox");
- if (listBox)
- listBox.setAttribute("aria-label", groupHeaders[i].textContent);
- }
- },
-
- onScriptSearchMatchFound: function(panel, text, sourceBox, lineNo)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y || !text)
- return;
-
- var matchFeedback = "";
- if (!sourceBox || lineNo === null)
- {
- matchFeedback = Locale.$STRF("a11y.updates.no matches found", [text]);
- }
- else
- {
- var line = sourceBox.getLine(panel.context, lineNo + 1);
- if (!line)
- line = "";
- matchFeedback = Locale.$STRF("a11y.updates.match found for on line",
- [text, lineNo + 1, Url.getFileName(sourceBox.href)]);
- }
- this.updateLiveElem(panel, matchFeedback, true);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // DOM Panel
-
- onMemberRowsAdded: function(panel, rows)
- {
- if (!panel)
- panel = Firebug.getElementPanel(rows[0]);
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y || !rows)
- return;
-
- var setSize = rows.length;
- var posInset = 0;
- for (var i = 0; i < rows.length; i++)
- {
- var makeTab = (panelA11y.lastIsDefault && i === rows.length - 1) ||
- (!panelA11y.lastIsDefault && i === 0);
- this.prepareMemberRow(panel, rows[i], makeTab, ++posInset, setSize);
- }
- },
-
- onMemberRowSliceAdded: function(panel, borderRows, posInSet, setSize)
- {
- if (!borderRows)
- return;
- var startRow = borderRows[0];
- var endRow = borderRows[1];
- if (!panel)
- panel = Firebug.getElementPanel(startRow);
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var reFocusId = panelA11y.reFocusId;
- var row = startRow;
- do
- {
- this.prepareMemberRow(panel, row, false, posInSet++, setSize, reFocusId);
- if (row === endRow)
- break;
- }
- while (row = row.nextSibling);
- },
-
- prepareMemberRow: function(panel, row, makeTab, posInSet, setSize, reFocusId)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y|| !row)
- return;
-
- if (!row.cells[2])
- return;
-
- var cellChild = row.cells[2].firstChild;
- if (cellChild)
- {
- if (Css.hasClass(row, "hasChildren"))
- cellChild.setAttribute("aria-expanded", Css.hasClass(row, "opened"));
- if (makeTab)
- this.modifyPanelRow(panel, cellChild, true);
- cellChild.setAttribute("role", "treeitem");
- cellChild.setAttribute("aria-level", parseInt(row.getAttribute("level")) + 1);
- if (posInSet && setSize)
- {
- cellChild.setAttribute("aria-setsize", setSize);
- cellChild.setAttribute("aria-posinset", posInSet);
- }
- Css.setClass(cellChild, "focusRow");
- if (typeof reFocusId == "number" && row.rowIndex == reFocusId)
- {
- this.modifyMemberRow(panel, cellChild, true);
- this.focus(cellChild, true, true);
- panelA11y.reFocusId = null;
- }
- }
- },
-
- modifyMemberRow: function(panel, row, inTabOrder)
- {
- var type = this.getObjectType(row);
- var labelCell = row.parentNode.previousSibling;
- row.setAttribute("aria-label", labelCell.textContent +
- ": " + " " + row.textContent + (type ? " (" + type + ")" : ""));
- if (inTabOrder)
- this.setPanelTabStop(panel, row);
- else
- this.makeFocusable(row, false);
- },
-
- onBeforeDomUpdateSelection: function (panel)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var focusNode = panel.document.activeElement;
- if (this.isDirCell(focusNode))
- panelA11y.reFocusId = focusNode.parentNode.parentNode.rowIndex;
- },
-
- onWatchEndEditing: function(panel, row)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- panelA11y.reFocusId = 2;
- },
-
- onDomSearchMatchFound: function (panel, text, matchRow)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y || !text)
- return;
-
- var matchFeedback = "";
- if (matchRow && matchRow.cells)
- {
- var dirCell = matchRow.getElementsByClassName("focusRow").item(0);
- if (dirCell)
- {
- this.modifyPanelRow(panel, dirCell);
- var rowLabel = dirCell.getAttribute("aria-label");
- matchFeedback = Locale.$STRF("a11y.updates.match found in dom property",
- [text, rowLabel]);
- }
- }
- else
- {
- matchFeedback = Locale.$STRF("a11y.updates.no matches found", [text]);
- }
- this.updateLiveElem(panel, matchFeedback, true);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Net Panel
-
- isSubFocusRow: function(elem)
- {
- return Css.hasClass(elem, "focusRow") || Css.hasClass(elem, "wrappedText");
- },
-
- modifyNetRow: function(panel, row, inTabOrder)
- {
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y || !row)
- return;
-
- if (this.isOuterFocusRow(row, true))
- {
- if (!Css.hasClass(row, "netInfoTabs"))
- this.makeFocusable(row, inTabOrder);
- if ((Css.hasClass(row, "netRow") ||
- Css.hasClass(row, "spyHeadTable")) && !row.hasAttribute("aria-expanded"))
- {
- row.setAttribute("aria-expanded", Css.hasClass(row, "opened") + "");
- }
- var focusObjects = this.getFocusObjects(row);
- Array.forEach(focusObjects, function(e, i, a) {
- this.makeFocusable(e);
- if (Css.hasClass(e, "netTimeCol") && Dom.getAncestorByClass(e, "fromCache"))
- {
- e.setAttribute("aria-label", e.textContent + " (" +
- Locale.$STR("a11y.labels.cached") +")");
- }
- }, this);
- }
- else return;
- },
-
- getNetAncestorRow: function(elem, useSubRow)
- {
- return useSubRow ? Dom.getAncestorByClass(elem, "subFocusRow") ||
- Dom.getAncestorByClass(elem, "netRow") : Dom.getAncestorByClass(elem, "netRow");
- },
-
- onNetMouseDown: function(event)
- {
- var node = Dom.getAncestorByClass(event.target, "focusRow");
- if (node)
- {
- this.modifyPanelRow(Firebug.getElementPanel(node), node, false);
- }
- else
- {
- node = Dom.getAncestorByClass(event.target, "subFocusRow");
- if (!node)
- return;
-
- var focusRow = node.getElementsByClassName("focusRow").item(0);
- if (!focusRow)
- return;
-
- this.modifyPanelRow(Firebug.getElementPanel(focusRow), focusRow, false);
- this.focus(focusRow);
- }
- },
-
- onNetFocus: function(e) {
- var target = e.target;
- var panel = Firebug.getElementPanel(target);
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- if (!Css.hasClass(target, "netCol") && !Css.hasClass(target, "netHeaderCell"))
- return;
-
- if (Css.hasClass(target, "netHrefCol"))
- {
- var hrefLabel = target.getElementsByClassName("netHrefLabel").item(0);
- var fullHrefLabel = target.getElementsByClassName("netFullHrefLabel").item(0);
- if (hrefLabel && fullHrefLabel)
- {
- Css.setClass(fullHrefLabel, "a11yShowFullLabel");
- fullHrefLabel.style.marginTop = (hrefLabel.offsetHeight + 4) + "px";
- return;
- }
- }
- var rangeParent = Dom.getAncestorByClass(target, "netRow");
- var browser = Firebug.chrome.getPanelBrowser(panel);
- // these two lines are necessary, because otherwise the info tip will not have the correct
- // dimensions when it's positioned, and the contentscould be placed outside of Firebug's
- // viewport (making it impossible to read for keyboard users)
- // This will be called again in showInfoTip
- panel.showInfoTip(browser.infoTip, target, target.offsetLeft, target.offsetTop,
- rangeParent, 0);
- browser.infoTip.setAttribute("active", "true");
- var left = Css.hasClass(target, "netTimeCol") ?
- target.offsetLeft - browser.infoTip.offsetWidth - 12 :
- target.offsetLeft + target.offsetWidth - 4;
- Firebug.InfoTip.showInfoTip(browser.infoTip, panel, target, left,
- target.offsetTop - panel.panelNode.scrollTop - 12, rangeParent, 0);
- },
-
- onNetBlur: function(e) {
- var target = e.target;
- var panel = Firebug.getElementPanel(target);
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- if (Css.hasClass(target, "netHrefCol"))
- {
- var hrefLabel = target.getElementsByClassName("netHrefLabel").item(0);
- var fullHrefLabel = target.getElementsByClassName("netFullHrefLabel").item(0);
- if (hrefLabel && fullHrefLabel)
- {
- Css.removeClass(fullHrefLabel, "a11yShowFullLabel");
- fullHrefLabel.style.marginTop = "0px";
- }
- }
- var browser = Firebug.chrome.getPanelBrowser(panel);
- Firebug.InfoTip.hideInfoTip(browser.infoTip);
- },
-
- onNetMatchFound: function(panel, text, row)
- {
- //TODO localize for 1.5
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var matchFeedback = "";
- if (!row)
- {
- matchFeedback = Locale.$STRF("a11y.updates.no matches found", [text]);
- }
- else
- {
- var foundWhere = "";
- var parentRow = Dom.getAncestorByClass(row, "netRow");
- if (!parentRow)
- {
- parentRow = Dom.getAncestorByClass(row, "netInfoRow");
- if (parentRow)
- parentRow = parentRow.previousSibling;
- }
- if (Css.hasClass(row, "netHrefLabel"))
- foundWhere = Locale.$STR("net.header.URL");
- else if (Css.hasClass(row, "netStatusLabel"))
- foundWhere = Locale.$STR("net.header.Status");
- else if (Css.hasClass(row, "netDomainLabel"))
- foundWhere = Locale.$STR("net.header.Domain");
- else if (Css.hasClass(row, "netSizeLabel"))
- foundWhere = Locale.$STR("net.header.Size");
- else if (Css.hasClass(row, "netTimeLabel"))
- foundWhere = Locale.$STR("net.header.Timeline");
- else
- foundWhere = "request details";
- if (parentRow && parentRow.repObject)
- {
- var file = parentRow.repObject;
- var href = (file.method ? file.method.toUpperCase() : "?") + " " +
- Url.getFileName(file.href);
- matchFeedback = Locale.$STRF("a11y.updates.match found in net row",
- [text, href, foundWhere, row.textContent]);
- }
- else if (Dom.getAncestorByClass(row, "netSummaryRow"))
- {
- matchFeedback = Locale.$STRF("a11y.updates.match found in net summary row",
- [text, row.textContent]);
- }
- }
- this.updateLiveElem(panel, matchFeedback, true); //should not use alert
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Panel Navigation
-
- insertHiddenText: function(panel, elem, text, asLastNode, id)
- {
- var span = panel.document.createElement("span");
- span.className ="offScreen";
- span.textContent = text;
-
- if (id)
- span.id = id;
-
- if (asLastNode)
- elem.appendChild(span);
- else
- elem.insertBefore(span, elem.firstChild);
- },
-
- getLogRowType: function(elem)
- {
- var type = "";
- if (!elem)
- return type;
-
- var className = elem.className.match(/\logRow-(\w+)\b/);
- if (className)
- type = className[1];
-
- if (!type)
- {
- if (Css.hasClass(elem, "errorTitle"))
- type = "detailed error";
- else if (Css.hasClass(elem, "errorSourceBox"))
- type = "error source line";
- else
- type = this.getObjectType(elem);
- }
-
- if (type == "stackFrame")
- type="";
-
- return type;
- },
-
- getObjectType: function(elem)
- {
- var type = "";
- if (elem.nodeName == "img")
- return type;
-
- var className = elem.className.match(/\bobject(Box|Link)-(\w+)/);
- if (className)
- type = className[2];
-
- switch (type)
- {
- case "null":
- case "undefined":
- type = "";
- break;
-
- case "number":
- if (elem.textContent == "true" || elem.textContent == "false")
- type = "boolean";
-
- case "":
- case "object":
- if (elem.repObject)
- {
- try
- {
- var obj = elem.repObject;
- if (!obj)
- return type;
-
- type = typeof obj;
- if (obj instanceof Array)
- type = "array";
-
- if (typeof obj.lineNo != "undefined")
- type = "function call";
- }
- catch(e) {}
- }
- }
-
- return type;
- },
-
- modifyPanelRow: function (panel, row, inTabOrder)
- {
- if (Css.hasClass(row, "a11yModified"))
- return;
-
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y || !row)
- return;
-
- switch (panelA11y.type)
- {
- case "console":
- this.modifyConsoleRow(panel,row, inTabOrder);
- break;
-
- case "css":
- this.modifyCSSRow(panel, row, inTabOrder);
- break;
-
- case "net":
- this.modifyNetRow(panel, row, inTabOrder);
- break;
- }
- Css.setClass(row, "a11yModified");
- },
-
- focusSiblingRow: function(panel, target, goUp)
- {
- var newRow = this[goUp ? "getPreviousByClass" : "getNextByClass"](target, "focusRow",
- true, panel.panelNode);
- if (!newRow)
- return;
-
- this.focusPanelRow(panel, newRow);
- },
-
- focusPageSiblingRow: function(panel, target, goUp)
- {
- var rows = this.getFocusRows(panel);
- var index = this.getRowIndex(rows, target);
- var newRow = this.getValidRow(rows, goUp ? index - 10 : index + 10);
- this.focusPanelRow(panel, newRow);
- },
-
- focusEdgeRow: function(panel, target, goUp)
- {
- var rows = this.getFocusRows(panel);
- var newRow = this.getValidRow(rows, goUp ? 0 : rows.length -1);
- this.focusPanelRow(panel, newRow);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Utils
-
- onPanelFocus: function(event)
- {
- var panel = Firebug.getElementPanel(event.target);
- var panelA11y = this.getPanelA11y(panel);
- if (!panelA11y)
- return;
-
- var target = event.target;
- if (this.isTabWorthy(target) && target !== this.getPanelTabStop(panel))
- this.setPanelTabStop(panel, target);
- if (target.getAttribute("role").match(/gridcell|rowheader|columnheader/))
- {
- var cell = (target.nodeName.toLowerCase() == "td" ||
- (target.nodeName.toLowerCase() == "th" ? target : target.parentNode));
- panelA11y.cellIndex = (cell.cellIndex !== undefined ? cell.cellIndex : undefined);
- }
- else
- {
- if (Css.hasClass(target, "netInfoTab"))
- this.dispatchMouseEvent(target, "click");
- panelA11y.cellIndex = undefined; //reset if no longer in grid
- }
- },
-
- getFocusRows: function(panel)
- {
- var nodes = panel.panelNode.getElementsByClassName("focusRow");
- return Array.filter(nodes, function(e, i, a)
- {
- return this.isVisibleByStyle(e) && Xml.isVisible(e);
- }, this);
- },
-
- getLastFocusChild: function(target)
- {
- var focusChildren = target.getElementsByClassName("focusRow");
- return focusChildren.length > 0 ? focusChildren[focusChildren.length -1] : null;
- },
-
- getFirstFocusChild: function(target)
- {
- var focusChildren = target.getElementsByClassName("focusRow");
- return focusChildren.length > 0 ? focusChildren[0] : null;
- },
-
- focus: function(elem, noVisiCheck, needsMoreTime)
- {
- if (Dom.isElement(elem) && (noVisiCheck || this.isVisibleByStyle(elem)))
- {
- Firebug.currentContext.setTimeout(function() {
- elem.focus();
- }, needsMoreTime ? 500 : 10
- );
- }
- },
-
- makeFocusable: function(elem, inTabOrder)
- {
- if (elem)
- elem.setAttribute("tabindex", inTabOrder ? "0" : "-1");
- },
-
- makeUnfocusable: function(elem)
- {
- if (elem)
- elem.removeAttribute("tabindex");
- },
-
- reportFocus: function(event)
- {
- FBTrace.sysout("focus: " + event.target.nodeName + "#" + event.target.id + "." +
- event.target.className, event.target);
- },
-
- dispatchMouseEvent: function (node, eventType, clientX, clientY, button)
- {
- if (!clientX)
- clientX = 0;
- if (!clientY)
- clientY = 0;
- if (!button)
- button = 0;
- if (typeof node == "string")
- throw new Error("a11y.dispatchMouseEvent obsolete API");
- var doc = node.ownerDocument;
- var event = doc.createEvent("MouseEvents");
- event.initMouseEvent(eventType, true, true, doc.defaultView,
- 0, 0, 0, clientX, clientY, false, false, false, false, button, null);
- node.dispatchEvent(event);
- },
-
- isVisibleByStyle: function (elem)
- {
- if (!elem || elem.nodeType != Node.ELEMENT_NODE)
- return false;
- var style = elem.ownerDocument.defaultView.getComputedStyle(elem, null);
- return style.visibility !== "hidden" && style.display !== "none";
- },
-
- isTabWorthy: function (elem)
- {
- return this.isFocusRow(elem) || this.isFocusObject(elem);
- },
-
- isOuterFocusRow: function(elem, includeSubRow)
- {
- return includeSubRow ? this.isSubFocusRow(elem) : Css.hasClass(elem, "outerFocusRow");
- },
-
- isProfileRow: function(elem)
- {
- return Css.hasClass(elem, "profileRow");
- },
-
- isFocusRow: function(elem)
- {
- return Css.hasClass(elem, "focusRow");
- },
-
- isFocusObject: function(elem)
- {
- return Css.hasClass(elem, "a11yFocus");
- },
-
- isFocusNoTabObject: function(elem)
- {
- return Css.hasClass(elem, "a11yFocusNoTab");
- },
-
- isDirCell: function(elem)
- {
- return Css.hasClass(elem.parentNode, "memberValueCell");
- },
-
- panelHasFocus: function(panel)
- {
- if (!panel || !panel.context)
- return false;
- var focusedElement = Firebug.chrome.window.document.commandDispatcher.focusedElement;
- var focusedPanel = Firebug.getElementPanel(focusedElement);
- return focusedPanel && (focusedPanel.name == panel.name);
- },
-
- getPanelA11y: function(panel, create)
- {
- var a11yPanels, panelA11y;
- if (!this.isEnabled() || !panel || !panel.name || !panel.context)
- return false;
-
- a11yPanels = panel.context.a11yPanels;
- if (!a11yPanels)
- a11yPanels = panel.context.a11yPanels = {};
- panelA11y = a11yPanels[panel.name];
- if (!panelA11y)
- {
- if (create)
- panelA11y = a11yPanels[panel.name] = {};
- else
- return false;
- }
- return panelA11y;
- },
-
- // These utils are almost the same as their DOM namesakes,
- // except that the routine skips invisible containers
- // (rather than wasting time on their child nodes)
- getPreviousByClass: function (node, className, downOnly, maxRoot)
- {
- if (!node)
- return null;
-
- function criteria(node) {
- return node.nodeType == Node.ELEMENT_NODE && Css.hasClass(node, className);
- }
-
- for (var sib = node.previousSibling; sib; sib = sib.previousSibling)
- {
- if (!this.isVisibleByStyle(sib) || !Xml.isVisible(sib))
- continue;
-
- var prev = this.findPreviousUp(sib, criteria);
- if (prev)
- return prev;
-
- if (criteria(sib))
- return sib;
- }
- if (!downOnly)
- {
- var next = this.findPreviousUp(node, criteria);
- if (next)
- return next;
- }
- if (node.parentNode && node.parentNode != maxRoot)
- {
- if (criteria(node.parentNode))
- return node.parentNode;
- return this.getPreviousByClass(node.parentNode, className, true);
- }
- },
-
- getNextByClass: function (node, className, upOnly, maxRoot)
- {
- if (!node)
- return null;
-
- function criteria(node) {
- return node.nodeType == Node.ELEMENT_NODE && Css.hasClass(node, className);
- }
-
- if (!upOnly)
- {
- var next = this.findNextDown(node, criteria);
- if (next)
- return next;
- }
-
- for (var sib = node.nextSibling; sib; sib = sib.nextSibling)
- {
- if (!this.isVisibleByStyle(sib) || !Xml.isVisible(sib))
- continue;
- if (criteria(sib))
- return sib;
-
- var next = this.findNextDown(sib, criteria);
- if (next)
- return next;
- }
-
- if (node.parentNode && node.parentNode != maxRoot)
- return this.getNextByClass(node.parentNode, className, true);
- },
-
- findNextDown: function(node, criteria)
- {
- if (!node)
- return null;
-
- for (var child = node.firstChild; child; child = child.nextSibling)
- {
- if (!this.isVisibleByStyle(child) || !Xml.isVisible(child))
- continue;
-
- if (criteria(child))
- return child;
-
- var next = this.findNextDown(child, criteria);
- if (next)
- return next;
- }
- },
-
- findPreviousUp: function(node, criteria)
- {
- if (!node)
- return null;
-
- for (var child = node.lastChild; child; child = child.previousSibling)
- {
- if (!this.isVisibleByStyle(child) || !Xml.isVisible(child))
- continue;
-
- var next = this.findPreviousUp(child, criteria);
- if (next)
- return next;
-
- if (criteria(child))
- return child;
- }
- }
-});
-
-// ************************************************************************************************
-// Registration
-
-Firebug.registerModule(Firebug.A11yModel);
-
-return Firebug.A11yModel;
-
-// ************************************************************************************************
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/url",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/xml",
+ "firebug/lib/xpath",
+ "firebug/console/console",
+ "firebug/chrome/infotip",
+],
+function(Obj, Firebug, Domplate, Locale, Events, Url, Css, Dom, Xml, Xpath) {
+
+// ************************************************************************************************
+// Constants
+
+var singleSpaceTag = Domplate.DIV({"class" : "a11y1emSize"}, "x");
+
+var KeyEvent = window.KeyEvent;
+
+// ************************************************************************************************
+// Module Management
+
+Firebug.A11yModel = Obj.extend(Firebug.Module,
+{
+ dispatchName: "a11y",
+
+ initialize: function()
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+
+ this.handleTabBarFocus = Obj.bind(this.handleTabBarFocus, this);
+ this.handleTabBarBlur = Obj.bind(this.handleTabBarBlur, this);
+ this.handlePanelBarKeyPress = Obj.bind(this.handlePanelBarKeyPress, this);
+ this.onNavigablePanelKeyPress = Obj.bind(this.onNavigablePanelKeyPress, this);
+ this.onConsoleMouseDown = Obj.bind(this.onConsoleMouseDown, this);
+ this.onLayoutKeyPress = Obj.bind(this.onLayoutKeyPress, this);
+ this.onCSSKeyPress = Obj.bind(this.onCSSKeyPress, this);
+ this.onCSSMouseDown = Obj.bind(this.onCSSMouseDown, this);
+ this.onHTMLKeyPress = Obj.bind(this.onHTMLKeyPress, this);
+ this.onHTMLFocus = Obj.bind(this.onHTMLFocus, this);
+ this.onHTMLBlur = Obj.bind(this.onHTMLBlur, this);
+ this.onPanelFocus = Obj.bind(this.onPanelFocus, this);
+ this.onLayoutFocus = Obj.bind(this.onLayoutFocus, this);
+ this.onLayoutBlur = Obj.bind(this.onLayoutBlur, this);
+ this.onScriptContextMenu = Obj.bind(this.onScriptContextMenu, this);
+ this.onCSSPanelContextMenu = Obj.bind(this.onCSSPanelContextMenu, this);
+ this.onScriptKeyPress = Obj.bind(this.onScriptKeyPress, this);
+ this.onScriptKeyUp = Obj.bind(this.onScriptKeyUp, this);
+ this.onScriptMouseUp = Obj.bind(this.onScriptMouseUp, this);
+ this.onNetMouseDown = Obj.bind(this.onNetMouseDown, this);
+ this.onNetFocus = Obj.bind(this.onNetFocus, this);
+ this.onNetBlur = Obj.bind(this.onNetBlur, this);
+
+ // Mark ourselves disabled, so we don't performDisable() if we are not enabled.
+ Firebug.chrome.window.a11yEnabled = false;
+
+ Firebug.connection.addListener(this);
+ Firebug.Console.addListener(this);
+ Firebug.DOMModule.addListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.connection.removeListener(this);
+ Firebug.Console.removeListener(this);
+ Firebug.DOMModule.removeListener(this);
+
+ Firebug.Module.shutdown.apply(this, arguments);
+ },
+
+ initializeUI: function()
+ {
+ //Initialize according to the current pref value.
+ this.updateOption("a11y.enable", this.isEnabled());
+ },
+
+ isEnabled: function()
+ {
+ return Firebug.Options.get("a11y.enable");
+ },
+
+ updateOption: function(name, value)
+ {
+ if (FBTrace.DBG_A11Y)
+ {
+ FBTrace.sysout("a11y.updateOption; " + name + ": " + value +
+ ", Current chrome: " + Firebug.chrome.getName() +
+ ", Original chrome: " + Firebug.originalChrome.getName());
+ }
+
+ if (name == "a11y.enable")
+ {
+ // Update for current chrome
+ this.set(value, Firebug.chrome);
+ // If the current chrome is an external window, update also the original chrome.
+ if (Firebug.chrome != Firebug.originalChrome)
+ {
+ this.set(value, Firebug.originalChrome);
+ if (FBTrace.DBG_A11Y)
+ FBTrace.sysout("a11y.updateOption; (original chrome)");
+ }
+ }
+ },
+
+ set: function(enable, chrome)
+ {
+ if (chrome.window.a11yEnabled == enable)
+ return;
+
+ if (enable)
+ this.performEnable(chrome);
+ else
+ this.performDisable(chrome);
+ chrome.window.a11yEnabled = enable;
+ },
+
+ performEnable: function(chrome)
+ {
+ var tmpElem;
+ //add class used by all a11y related css styles (e.g. :focus and -moz-user-focus styles)
+ Css.setClass(chrome.$("fbContentBox"), "useA11y");
+ //Css.setClass(chrome.$("fbStatusBar"), "useA11y");
+ tmpElem = chrome.$("fbStatusPrefix");
+ if (tmpElem) tmpElem.setAttribute("value", Locale.$STR("a11y.labels.firebug status"));
+
+ //manage all key events in toolbox (including tablists)
+ tmpElem = chrome.$("fbContentBox");
+ if (tmpElem)
+ Events.addEventListener(tmpElem, "keypress", this.handlePanelBarKeyPress, true);
+
+ //make focus stick to inspect button when clicked
+ tmpElem = chrome.$("fbInspectButton");
+ if (tmpElem)
+ Events.addEventListener(tmpElem, "mousedown", this.focusTarget, true);
+
+ tmpElem = chrome.$("fbPanelBar1-panelTabs");
+ if (tmpElem)
+ Events.addEventListener(tmpElem, "focus", this.handleTabBarFocus, true);
+
+ tmpElem = chrome.$("fbPanelBar1-panelTabs");
+ if (tmpElem)
+ Events.addEventListener(tmpElem, "blur", this.handleTabBarBlur, true);
+
+ tmpElem = chrome.$("fbPanelBar2-panelTabs");
+ if (tmpElem)
+ Events.addEventListener(tmpElem, "focus", this.handleTabBarFocus, true);
+
+ tmpElem = chrome.$("fbPanelBar2-panelTabs");
+ if (tmpElem)
+ Events.addEventListener(tmpElem, "blur", this.handleTabBarBlur, true);
+
+ tmpElem = chrome.$("fbPanelBar1");
+ if (tmpElem)
+ Css.setClass(tmpElem.browser.contentDocument.body, "useA11y");
+
+ tmpElem = chrome.$("fbPanelBar2");
+ if (tmpElem)
+ Css.setClass(tmpElem.browser.contentDocument.body, "useA11y");
+ Firebug.Editor.addListener(this);
+ this.listeningToEditor = true;
+ },
+
+ performDisable: function(chrome)
+ {
+ var tmpElem;
+ //undo everything we did in performEnable
+ Css.removeClass(chrome.$("fbContentBox"), "useA11y");
+ Css.removeClass(chrome.$("fbStatusBar"), "useA11y");
+
+ tmpElem = chrome.$("fbPanelBar1");
+ if (tmpElem)
+ Events.removeEventListener(tmpElem, "keypress", this.handlePanelBarKeyPress, true);
+
+ tmpElem = chrome.$("fbInspectButton");
+ if (tmpElem)
+ Events.removeEventListener(tmpElem, "mousedown", this.focusTarget, true);
+
+ tmpElem = chrome.$("fbPanelBar1-panelTabs");
+ if (tmpElem)
+ Events.removeEventListener(tmpElem, "focus", this.handleTabBarFocus, true);
+
+ tmpElem = chrome.$("fbPanelBar1-panelTabs");
+ if (tmpElem)
+ Events.removeEventListener(tmpElem, "blur", this.handleTabBarBlur, true);
+
+ tmpElem = chrome.$("fbPanelBar2-panelTabs");
+ if (tmpElem)
+ Events.removeEventListener(tmpElem, "focus", this.handleTabBarFocus, true);
+
+ tmpElem = chrome.$("fbPanelBar2-panelTabs");
+ if (tmpElem)
+ Events.removeEventListener(tmpElem, "blur", this.handleTabBarBlur, true);
+
+ tmpElem = chrome.$("fbPanelBar1");
+ if (tmpElem)
+ {
+ Css.removeClass(tmpElem.browser.contentDocument.body, "useA11y");
+ tmpElem.browser.setAttribute("showcaret", false);
+ }
+
+ tmpElem = chrome.$("fbPanelBar2");
+ if (tmpElem)
+ Css.removeClass(tmpElem.browser.contentDocument.body, "useA11y");
+
+ if (this.listeningToEditor)
+ Firebug.Editor.removeListener(this);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+ onCreatePanel: function(context, panel, panelType)
+ {
+ if (!panel.enableA11y)
+ return;
+
+ if (panel.addListener)
+ panel.addListener(this);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Context & Panel Management
+
+ onInitializeNode: function(panel)
+ {
+ var panelA11y = this.getPanelA11y(panel, true);
+ if (!panelA11y)
+ return;
+
+ panelA11y.tabStop = null;
+ panelA11y.manageFocus = false;
+ panelA11y.lastIsDefault = false;
+ panelA11y.type = panel.deriveA11yFrom ? panel.deriveA11yFrom : panel.name;
+
+ //panel.context.chrome.$("fbContentBox").addEventListener("focus", this.reportFocus, true);
+ this.makeFocusable(panel.panelNode, false);
+
+ switch (panelA11y.type)
+ {
+ case "console":
+ panelA11y.manageFocus = true;
+ switch (panel.name)
+ {
+ case "console":
+ panel.panelNode.setAttribute("aria-label",
+ Locale.$STR("a11y.labels.log rows"));
+ panelA11y.lastIsDefault = true;
+ panel.panelNode.setAttribute("role", "list");
+ break;
+
+ case "callstack":
+ panel.panelNode.setAttribute("role", "list");
+ panel.panelNode.setAttribute("aria-label",
+ Locale.$STR("a11y.labels.call stack"));
+ break;
+
+ default:
+ panel.panelNode.setAttribute("role", "presentation");
+ }
+ panel.panelNode.setAttribute("aria-live", "polite");
+ panel.panelNode.setAttribute("aria-relevant", "additions");
+ Events.addEventListener(panel.panelNode, "keypress", this.onNavigablePanelKeyPress, false);
+ Events.addEventListener(panel.panelNode, "focus", this.onPanelFocus, true);
+ Events.addEventListener(panel.panelNode, "mousedown", this.onConsoleMouseDown, false);
+ if (panel.name == "breakpoints")
+ panel.panelNode.style.overflowX = "hidden";
+ break;
+
+ case "html":
+ panel.panelNode.setAttribute("role", "tree");
+ panel.panelNode.setAttribute("aria-label",
+ Locale.$STR("a11y.labels.document structure"));
+ Events.addEventListener(panel.panelNode, "keypress", this.onHTMLKeyPress, false);
+ Events.addEventListener(panel.panelNode, "focus", this.onHTMLFocus, true);
+ Events.addEventListener(panel.panelNode, "blur", this.onHTMLBlur, true);
+ break;
+
+ case "css":
+ panelA11y.manageFocus = true;
+ Events.addEventListener(panel.panelNode, "keypress", this.onCSSKeyPress, false);
+ Events.addEventListener(panel.panelNode, "mousedown", this.onCSSMouseDown, false);
+ Events.addEventListener(panel.panelNode, "focus", this.onPanelFocus, true);
+ Events.addEventListener(panel.panelNode, "contextmenu", this.onCSSPanelContextMenu, false);
+ this.insertHiddenText(panel, panel.panelNode,
+ Locale.$STR("a11y.labels.overridden"), false, "CSSOverriddenDescription");
+ panel.panelNode.setAttribute("role", panel.name == "stylesheet" ?
+ "list" : "presentation");
+ break;
+
+ case "layout":
+ panelA11y.manageFocus = true;
+ Events.addEventListener(panel.panelNode, "keypress", this.onLayoutKeyPress, false);
+ Events.addEventListener(panel.panelNode, "focus", this.onLayoutFocus, true);
+ Events.addEventListener(panel.panelNode, "blur", this.onLayoutBlur, true);
+ break;
+
+ case "script":
+ Events.addEventListener(panel.panelNode, "contextmenu", this.onScriptContextMenu, true);
+ Events.addEventListener(panel.panelNode, "keypress", this.onScriptKeyPress, true);
+ Events.addEventListener(panel.panelNode, "keyup", this.onScriptKeyUp, true);
+ Events.addEventListener(panel.panelNode, "mouseup", this.onScriptMouseUp, true);
+ panelA11y.oneEmElem = this.addSingleSpaceElem(panel.panelNode);
+ break;
+
+ case "net":
+ panelA11y.manageFocus = true;
+ Events.addEventListener(panel.panelNode, "keypress", this.onNavigablePanelKeyPress, false);
+ Events.addEventListener(panel.panelNode, "focus", this.onPanelFocus, true);
+ Events.addEventListener(panel.panelNode, "focus", this.onNetFocus, true);
+ Events.addEventListener(panel.panelNode, "blur", this.onNetBlur, true);
+ Events.addEventListener(panel.panelNode, "mousedown", this.onNetMouseDown, false);
+ break;
+ }
+ },
+
+ onDestroyNode: function(panel)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ panelA11y = null;
+
+ // Remove all event handlers we added in onInitializeNode.
+ var actAsPanel = panel.deriveA11yFrom ? panel.deriveA11yFrom : panel.name;
+ switch (actAsPanel)
+ {
+ case "console":
+ Events.removeEventListener(panel.panelNode, "keypress", this.onNavigablePanelKeyPress,
+ false);
+ Events.removeEventListener(panel.panelNode, "focus", this.onPanelFocus, true);
+ Events.removeEventListener(panel.panelNode, "mousedown", this.onConsoleMouseDown, false);
+ break;
+
+ case "html":
+ Events.removeEventListener(panel.panelNode, "keypress", this.onHTMLKeyPress, false);
+ Events.removeEventListener(panel.panelNode, "focus", this.onHTMLFocus, true);
+ Events.removeEventListener(panel.panelNode, "blur", this.onHTMLBlur, true);
+ break;
+
+ case "css":
+ Events.removeEventListener(panel.panelNode, "keypress", this.onCSSKeyPress, false);
+ Events.removeEventListener(panel.panelNode, "mousedown", this.onCSSMouseDown, false);
+ Events.removeEventListener(panel.panelNode, "focus", this.onPanelFocus, true);
+ Events.removeEventListener(panel.panelNode, "blur", this.onPanelBlur, true);
+ Events.removeEventListener(panel.panelNode, "contextmenu", this.onCSSPanelContextMenu,
+ false);
+ break;
+
+ case "layout":
+ Events.removeEventListener(panel.panelNode, "keypress", this.onLayoutKeyPress, false);
+ Events.removeEventListener(panel.panelNode, "focus", this.onLayoutFocus, true);
+ Events.removeEventListener(panel.panelNode, "blur", this.onLayoutBlur, true);
+ break;
+
+ case "script":
+ Events.removeEventListener(panel.panelNode, "contextmenu", this.onScriptContextMenu, true);
+ Events.removeEventListener(panel.panelNode, "keypress", this.onScriptKeyPress, true);
+ Events.removeEventListener(panel.panelNode, "keyup", this.onScriptKeyUp, true);
+ Events.removeEventListener(panel.panelNode, "mouseup", this.onScriptMouseUp, true);
+ break;
+
+ case "net":
+ Events.removeEventListener(panel.panelNode, "keypress", this.onNavigablePanelKeyPress,
+ false);
+ Events.removeEventListener(panel.panelNode, "focus", this.onPanelFocus, true);
+ Events.removeEventListener(panel.panelNode, "focus", this.onNetFocus, true);
+ Events.removeEventListener(panel.panelNode, "blur", this.onNetBlur, true);
+ Events.removeEventListener(panel.panelNode, "mousedown", this.onNetMouseDown, false);
+ break;
+ }
+ },
+
+ showPanel: function(browser, panel)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+ var title = panel.name;
+ var panelType = Firebug.getPanelType(panel.name);
+ if (panelType)
+ title = Firebug.getPanelTitle(panelType);
+ Firebug.chrome.$("fbToolbar").setAttribute("aria-label", title + " " +
+ Locale.$STR("a11y.labels.panel tools"));
+ var panelBrowser = Firebug.chrome.getPanelBrowser(panel);
+ panelBrowser.setAttribute("showcaret", (panel.name == "script"));
+ panelBrowser.contentDocument.body.setAttribute("aria-label",
+ Locale.$STRF("a11y.labels.title panel", [title]));
+ },
+
+ showSidePanel: function(browser, sidePanel)
+ {
+ var panelA11y = this.getPanelA11y(sidePanel);
+ if (!panelA11y)
+ return;
+ var panelBrowser = Firebug.chrome.getPanelBrowser(sidePanel);
+ var panelType = Firebug.getPanelType(sidePanel.name);
+ if (panelType)
+ title = Firebug.getPanelTitle(panelType);
+ panelBrowser.contentDocument.body.setAttribute("aria-label",
+ Locale.$STRF("a11y.labels.title side panel", [title]));
+ },
+
+ addLiveElem: function(panel, role, politeness)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+ if (panelA11y.liveElem && Dom.isElement(panelA11y.liveElem))
+ return;
+
+ var attrName = attrValue = "";
+ if (role)
+ {
+ attrName = "role";
+ attrValue = role;
+ }
+ else
+ {
+ attrName = "aria-live";
+ attrValue = politeness ? politeness : "polite";
+ }
+ var elem = panel.document.createElement("div");
+ elem.setAttribute(attrName, attrValue);
+ elem.className = "offScreen";
+ panel.document.body.appendChild(elem);
+ panelA11y.liveElem = elem;
+ return elem;
+ },
+
+ updateLiveElem: function(panel, msg, useAlert)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+ var elem = panelA11y.liveElem;
+ if (!elem)
+ elem = this.addLiveElem(panel);
+ elem.textContent = msg;
+ if (useAlert)
+ elem.setAttribute("role", "alert");
+ },
+
+ addSingleSpaceElem: function(parent)
+ {
+ return singleSpaceTag.append({}, parent, this);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Toolbars & Tablists
+
+ focusTarget: function(event)
+ {
+ this.focus(event.target);
+ },
+
+ handlePanelBarKeyPress: function (event)
+ {
+ var target = event.originalTarget;
+ var isTab = target.nodeName.toLowerCase() == "paneltab";
+ var isButton = target.nodeName.search(/(xul:)?((toolbar)?button)|(checkbox)/) != -1;
+ var isDropDownMenu = isButton && (target.getAttribute("type") == "menu" ||
+ target.id == "fbLocationList");
+ var siblingTab, forward, toolbar;
+ var keyCode = event.keyCode || (event.type == "keypress" ? event.charCode : null);
+ if (keyCode == KeyEvent.DOM_VK_TAB)
+ this.ensurePanelTabStops(); //TODO: need a better solution to prevent loss of panel tabstop
+ if (isTab || isButton)
+ {
+ switch (keyCode)
+ {
+ case KeyEvent.DOM_VK_LEFT:
+ case KeyEvent.DOM_VK_RIGHT:
+ case KeyEvent.DOM_VK_UP:
+ case KeyEvent.DOM_VK_DOWN:
+ forward = (event.keyCode == KeyEvent.DOM_VK_RIGHT ||
+ event.keyCode == KeyEvent.DOM_VK_DOWN);
+ if (isTab)
+ {
+ //will only work as long as long as siblings only consist of paneltab elements
+ siblingTab = target[forward ? "nextSibling" : "previousSibling"];
+ if (!siblingTab)
+ siblingTab = target.parentNode[forward ? "firstChild" : "lastChild"];
+ if (siblingTab)
+ {
+ var panelBar = Dom.getAncestorByClass(target, "panelBar");
+ setTimeout(Obj.bindFixed(function()
+ {
+ panelBar.selectTab(siblingTab);
+ this.focus(siblingTab);
+ }, this));
+ }
+ }
+ else if (isButton)
+ {
+ if (target.id == "fbFirebugMenu" && !forward)
+ {
+ Events.cancelEvent(event);
+ return;
+ }
+ toolbar = Dom.getAncestorByClass(target, "innerToolbar");
+ if (toolbar)
+ {
+ var doc = target.ownerDocument;
+ //temporarily make all buttons in the toolbar part of the tab order,
+ //to allow smooth, native focus advancement
+ Css.setClass(toolbar, "hasTabOrder");
+ setTimeout(Obj.bindFixed(function() // time out needed to fix this behavior in 3.6
+ {
+ doc.commandDispatcher[forward ? "advanceFocus" : "rewindFocus"]();
+ //remove the buttons from the tab order again, so that it will remain uncluttered
+ //Very ugly hack, but it works well. This prevents focus to 'spill out' of a
+ //toolbar when using the left and right arrow keys
+ if (!Dom.isAncestor(doc.commandDispatcher.focusedElement, toolbar))
+ {
+ //we moved focus to somewhere out of the toolbar: not good. Move it back to where it was.
+ doc.commandDispatcher[!forward ?
+ "advanceFocus" : "rewindFocus"]();
+ }
+ Css.removeClass(toolbar, "hasTabOrder");
+ }, this));
+ }
+ Events.cancelEvent(event);
+ return;
+ }
+ break;
+
+ case KeyEvent.DOM_VK_RETURN:
+ case KeyEvent.DOM_VK_SPACE:
+ if (isTab && target.tabMenu)
+ {
+ target.tabMenu.popup.showPopup(target.tabMenu, -1, -1, "popup",
+ "bottomleft", "topleft");
+ }
+ else if (isButton && isDropDownMenu)
+ {
+ if (target.id == "fbLocationList")
+ target.showPopup();
+ else
+ target.open = true;
+ Events.cancelEvent(event);
+ return false;
+ }
+ break;
+
+ case KeyEvent.DOM_VK_F4:
+ if (isTab && target.tabMenu)
+ {
+ target.tabMenu.popup.showPopup(target.tabMenu, -1, -1, "popup",
+ "bottomleft", "topleft");
+ }
+ break;
+ }
+ }
+ },
+
+ handleTabBarFocus: function(event)
+ {
+ this.tabFocused = true;
+ },
+
+ handleTabBarBlur: function(event)
+ {
+ this.tabFocused = false;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Panel Focus & Tab Order Management
+
+ getPanelTabStop: function(panel)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (panelA11y)
+ return panelA11y.tabStop;
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("a11y.getPanelTabStop null panel.context");
+ return null;
+ },
+
+ ensurePanelTabStops: function()
+ {
+ // XXXjjb: seems like this should be !Firebug.chrome
+ if (!Firebug.currentContext || !Firebug.currentContext.chrome)
+ return;
+ var panel = Firebug.chrome.getSelectedPanel();
+ var sidePanel = Firebug.chrome.getSelectedSidePanel();
+ this.ensurePanelTabStop(panel);
+ if (sidePanel)
+ this.ensurePanelTabStop(sidePanel);
+ },
+
+ ensurePanelTabStop: function(panel)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ if (panelA11y.manageFocus)
+ {
+ var tabStop = this.getPanelTabStop(panel);
+ if (!tabStop || !this.isVisibleByStyle(tabStop) || !Xml.isVisible(tabStop))
+ {
+ this.tabStop = null;
+ this.findPanelTabStop(panel, "focusRow", panelA11y.lastIsDefault);
+ }
+ else if (tabStop.getAttribute("tabindex") !== "0")
+ {
+ tabStop.setAttribute("tabindex", "0");
+ }
+
+ if (tabStop)
+ this.checkModifiedState(panel, tabStop, true);
+ }
+ },
+
+ checkModifiedState: function(panel, elem, makeTab)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y || !elem)
+ return;
+
+ if (panelA11y.type == "console" && Css.hasClass(elem, "focusRow"))
+ this.modifyPanelRow(panel, elem, makeTab);
+ },
+
+ setPanelTabStop: function (panel, elem)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var tabStop = this.getPanelTabStop(panel);
+ if (tabStop)
+ {
+ this.makeFocusable(tabStop, false);
+ if (["treeitem", "listitem", "option"].indexOf(tabStop.getAttribute("role")) != -1)
+ tabStop.setAttribute("aria-selected", "false");
+ }
+ panelA11y.tabStop = elem;
+ if (elem)
+ {
+ panelA11y.reFocusId = null;
+ this.makeFocusable(elem, true);
+ if (["treeitem", "listitem", "option"].indexOf(elem.getAttribute("role")) != -1)
+ elem.setAttribute("aria-selected", "true");
+ }
+ },
+
+ findPanelTabStop: function(panel, className, last)
+ {
+ var candidates = panel.panelNode.getElementsByClassName(className);
+ candidates= Array.filter(candidates, function(e, i, a){return this.isVisibleByStyle(e)
+ && Xml.isVisible(e);}, this);
+ if (candidates.length > 0)
+ {
+ var chosenRow = candidates[last ? candidates.length -1 : 0];
+ this.modifyPanelRow(panel, chosenRow, true);
+ this.setPanelTabStop(panel, chosenRow);
+ }
+ else
+ {
+ this.setPanelTabStop(panel, null);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Console Panel
+
+ onLogRowCreated: function(panel, row)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ if (Css.hasClass(row, "logRow-dir"))
+ {
+ row.setAttribute("role", "listitem");
+ Css.setClass(row, "outerFocusRow");
+ var memberRows = row.getElementsByClassName("memberRow");
+ if (memberRows.length > 0)
+ this.onMemberRowsAdded(panel, memberRows);
+ }
+ else if (Css.hasClass(row, "logRow-group") || Css.hasClass(row, "logRow-profile"))
+ {
+ row.setAttribute("role", "presentation");
+ var focusRow = row.getElementsByClassName("logGroupLabel").item(0);
+ if (focusRow)
+ {
+ this.setPanelTabStop(panel, focusRow);
+ focusRow.setAttribute("aria-expanded", Css.hasClass(row, "opened") + "");
+ if (!Css.hasClass(row, "logRow-profile"))
+ this.insertHiddenText(panel, focusRow, "group label: ");
+ }
+ }
+ else if (Css.hasClass(row, "logRow-errorMessage") || Css.hasClass(row,
+ "logRow-warningMessage"))
+ {
+ Css.setClass(row, "outerFocusRow");
+ row.setAttribute("role", "presentation");
+ var focusRow = row.getElementsByClassName("errorTitle").item(0);
+ if (focusRow)
+ {
+ this.setPanelTabStop(panel, focusRow);
+ focusRow.setAttribute("aria-expanded",
+ Css.hasClass(focusRow.parentNode, "opened") + "");
+ }
+ }
+ else if (Css.hasClass(row, "logRow-stackTrace"))
+ {
+ Css.setClass(row, "outerFocusRow");
+ row.setAttribute("role", "listitem");
+ var stackFrames = row.getElementsByClassName("focusRow");
+ Array.forEach(stackFrames, function(e, i, a)
+ {
+ e.setAttribute("role", "listitem");
+ if ((panelA11y.lastIsDefault && i === stackFrames.length - 1) ||
+ (!panelA11y.lastIsDefault && i === 0))
+ {
+ this.setPanelTabStop(panel, e);
+ }
+ else
+ {
+ this.makeFocusable(e, false);
+ }
+ }, this);
+ }
+ else if (Css.hasClass(row, "logRow-spy"))
+ {
+ var focusRow = Dom.getChildByClass(row, "spyHeadTable");
+ if (focusRow)
+ this.makeFocusable(focusRow, true);
+ }
+ else
+ {
+ row.setAttribute("role", "listitem");
+ Css.setClass(row, "focusRow");
+ Css.setClass(row, "outerFocusRow");
+ if (Xml.isVisible(row))
+ this.setPanelTabStop(panel, row);
+ }
+ },
+
+ modifyLogRow: function(panel, row, inTabOrder)
+ {
+ this.makeFocusable(row, inTabOrder);
+ var logRowType = this.getLogRowType(row);
+ if (logRowType)
+ this.insertHiddenText(panel, row, logRowType + ": ");
+ var arrayNode = Dom.getChildByClass(row, "objectBox-array");
+ if (arrayNode)
+ {
+ arrayNode.setAttribute("role", "group");
+ this.insertHiddenText(panel, row, "array" + ": ");
+ }
+ var focusObjects = this.getFocusObjects(row);
+ Array.forEach(focusObjects, function(e, i, a)
+ {
+ this.makeFocusable(e);
+ var prepend = "";
+ var append = " (" + this.getObjectType(e) + ") ";
+ if (e.textContent != "")
+ e.setAttribute("aria-label", prepend + e.textContent + append);
+ if (arrayNode)
+ e.setAttribute("role", "listitem");
+ }, this);
+ },
+
+ onNavigablePanelKeyPress: function(event)
+ {
+ var target = event.target;
+ var keyCode = event.keyCode || (event.type == "keypress" ? event.charCode : null);
+ if (!this.isTabWorthy(target) && !this.isFocusNoTabObject(target))
+ return;
+ else if (event.shiftKey || event.altKey)
+ return;
+ else if ([13, 32, 33, 34, 35, 36, 37, 38, 39, 40, 46].indexOf(keyCode) == -1)
+ return; //not interested in any other keys, than arrows, pg, home/end, del space & enter
+ var panel = Firebug.getElementPanel(target);
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var newTarget = target;
+ if (!this.isOuterFocusRow(target))
+ {
+ if (Events.isControl(event))
+ {
+ newTarget = this.getAncestorRow(target);
+ if (newTarget)
+ {
+ newTarget = [33, 38].indexOf(keyCode) == -1 ?
+ this.getLastFocusChild(newTarget) : this.getFirstFocusChild(newTarget);
+ }
+ }
+ else if (!this.isDirCell(target) || Css.hasClass(target, "netInfoTab") ||
+ Css.hasClass(target, "netCol"))
+ {
+ newTarget = this.getAncestorRow(target, true);
+ }
+
+ if (!newTarget)
+ newTarget = target;
+ }
+ switch (keyCode)
+ {
+ case KeyEvent.DOM_VK_UP:
+ case KeyEvent.DOM_VK_DOWN:
+ if (!this.isFocusNoTabObject(target))
+ {
+ this.focusSiblingRow(panel, newTarget, keyCode == 38);
+ Events.cancelEvent(event);
+ }
+ break;
+
+ case KeyEvent.DOM_VK_LEFT:
+ case KeyEvent.DOM_VK_RIGHT:
+ var goLeft = keyCode == KeyEvent.DOM_VK_LEFT;
+ if (this.isDirCell(target))
+ {
+ var row = Dom.getAncestorByClass(target, "memberRow");
+ var toggleElem = Dom.getChildByClass(row.cells[1], "memberLabel");
+ if (!goLeft && Css.hasClass(row, "hasChildren"))
+ {
+ if (Css.hasClass(row, "opened"))
+ {
+ this.focusSiblingRow(panel, target, false);
+ }
+ else if (toggleElem)
+ {
+ if (Css.hasClass(row, "hasChildren"))
+ target.setAttribute("aria-expanded", "true");
+ this.dispatchMouseEvent(toggleElem, "click");
+ }
+ }
+ else if (goLeft)
+ {
+ var level = parseInt(row.getAttribute("level"));
+ if (Css.hasClass(row, "opened"))
+ {
+ if (Css.hasClass(row, "hasChildren"))
+ target.setAttribute("aria-expanded", "false");
+ this.dispatchMouseEvent(toggleElem, "click");
+ }
+ else if (level > 0)
+ {
+ var targetLevel = (level - 1) + "";
+ var newRows = Array.filter(row.parentNode.rows, function(e, i, a)
+ {
+ return e.rowIndex < row.rowIndex &&
+ e.getAttribute("level") == targetLevel;
+ }, this);
+
+ if (newRows.length)
+ this.focus(newRows[newRows.length -1].cells[2].firstChild);
+ }
+ }
+ Events.cancelEvent(event);
+ }
+ else if (this.isOuterFocusRow(target, true))
+ {
+ if (target.hasAttribute("aria-expanded"))
+ {
+ if (target.getAttribute("role") == "row" ||
+ Css.hasClass(target, "spyHeadTable"))
+ {
+ if (goLeft && target.getAttribute("aria-expanded") == "true")
+ {
+ var toggleElem = Css.hasClass(target, "spyHeadTable") ?
+ target.getElementsByClassName("spyTitleCol").item(0) : target;
+ if (toggleElem)
+ this.dispatchMouseEvent(toggleElem, "click");
+ }
+ }
+ else if (target.getAttribute("aria-expanded") == (goLeft ?
+ "true" : "false"))
+ {
+ this.dispatchMouseEvent(target, Css.hasClass(target, "logGroupLabel") ?
+ "mousedown" : "click");
+ }
+ }
+ if (goLeft)
+ {
+ //check if we"re in an expanded section
+ var inExpanded = false, groupClass, groupLabelClass, group, groupLabel;
+ if (Css.hasClass(target, "objectBox-stackFrame"))
+ {
+ inExpanded = true;
+ groupClass = "errorTrace";
+ groupLabelClass = "errorTitle";
+ }
+ else if (Dom.getAncestorByClass(target, "logGroupBody"))
+ {
+ inExpanded = true;
+ groupClass = "logGroupBody";
+ groupLabelClass = "logGroupLabel";
+ }
+ if (inExpanded)
+ {
+ group = Dom.getAncestorByClass(target, groupClass);
+ if (group)
+ {
+ groupLabel = this.getPreviousByClass(target, groupLabelClass,
+ false, panel.panelNode);
+ if (groupLabel)
+ {
+ this.modifyPanelRow(panel, groupLabel);
+ this.focus(groupLabel);
+ }
+ }
+ }
+ }
+ else if (!goLeft)
+ {
+
+ var focusItems = this.getFocusObjects(target);
+ if (focusItems.length > 0)
+ {
+ this.focus(Events.isControl(event) ?
+ focusItems[focusItems.length -1] : focusItems[0]);
+ }
+ }
+ }
+ else if (this.isFocusObject(target))
+ {
+ var parentRow = this.getAncestorRow(target, true);
+ var focusObjects = this.getFocusObjects(parentRow);
+ if (!Events.isControl(event))
+ {
+ var focusIndex = Array.indexOf(focusObjects, target);
+ var newIndex = goLeft ? --focusIndex : ++focusIndex;
+ this.focus(goLeft && newIndex < 0 ? parentRow : focusObjects[newIndex]);
+ }
+ else
+ {
+ this.focus(goLeft ? parentRow : focusObjects[focusObjects.length -1]);
+ }
+ Events.cancelEvent(event);
+ }
+ break;
+
+ case KeyEvent.DOM_VK_END:
+ case KeyEvent.DOM_VK_HOME:
+ this.focusEdgeRow(panel, newTarget, keyCode == KeyEvent.DOM_VK_HOME);
+ Events.cancelEvent(event);
+ break;
+
+ case KeyEvent.DOM_VK_PAGE_UP:
+ case KeyEvent.DOM_VK_PAGE_DOWN:
+ this.focusPageSiblingRow(panel, newTarget, keyCode == KeyEvent.DOM_VK_PAGE_UP);
+ Events.cancelEvent(event);
+ break;
+
+ case KeyEvent.DOM_VK_RETURN:
+ if (this.isFocusObject(target))
+ {
+ this.dispatchMouseEvent(target, "click");
+ }
+ else if (Css.hasClass(target, "watchEditBox"))
+ {
+ this.dispatchMouseEvent(target, "mousedown");
+ Events.cancelEvent(event);
+ }
+ else if (Css.hasClass(target, "breakpointRow"))
+ {
+ var sourceLink =
+ target.getElementsByClassName("objectLink-sourceLink").item(0);
+ if (sourceLink)
+ this.dispatchMouseEvent(sourceLink, "click");
+ }
+ else if (target.hasAttribute("aria-expanded") &&
+ (target.getAttribute("role") == "row" ||
+ target.getAttribute("role") == "listitem"))
+ {
+ var toggleElem = Css.hasClass(target, "spyHeadTable") ?
+ target.getElementsByClassName("spyTitleCol").item(0) : target;
+ if (toggleElem)
+ this.dispatchMouseEvent(toggleElem, "click");
+ }
+ break;
+
+ case KeyEvent.DOM_VK_SPACE:
+ if (this.isFocusObject(target) && target.hasAttribute("role", "checkbox"))
+ {
+ this.dispatchMouseEvent(target, "click");
+ var objectBox = Dom.getAncestorByClass(target, "hasBreakSwitch");
+ if (objectBox)
+ {
+ target.setAttribute("aria-checked",
+ Css.hasClass(objectBox, "breakForError") + "");
+ }
+ }
+ else if (Css.hasClass(target, "breakpointRow"))
+ {
+ var checkbox = target.getElementsByClassName("breakpointCheckbox").item(0);
+ if (checkbox)
+ {
+ target.setAttribute("aria-checked", checkbox.checked ? "false" : "true");
+ this.dispatchMouseEvent(checkbox, "click");
+ }
+ }
+ break;
+
+ case KeyEvent.DOM_VK_DELETE:
+ if (Css.hasClass(target, "breakpointRow"))
+ {
+ var closeBtn = target.getElementsByClassName("closeButton").item(0);
+ if (closeBtn)
+ {
+ var prevBreakpoint = Dom.getPreviousByClass(target, "breakpointRow");
+ if (prevBreakpoint)
+ this.makeFocusable(prevBreakpoint, true);
+ Firebug.chrome.window.document.commandDispatcher.rewindFocus();
+ this.dispatchMouseEvent(closeBtn, "click");
+ }
+ }
+ break;
+ }
+ },
+
+ focusPanelRow: function(panel, row)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y || !row)
+ return;
+ this.modifyPanelRow(panel, row, false);
+
+ //allows up / down navigation in columns, if columns are used in this panel
+ if (panelA11y.cellIndex !== undefined && row.cells && row.cells[panelA11y.cellIndex])
+ {
+ var cell = row.cells[panelA11y.cellIndex];
+ if (!Css.hasClass(cell, "a11yFocus"))
+ cell = Dom.getChildByClass(cell, "a11yFocus");
+ this.focus(cell);
+ }
+ // for Net Panel. Focus selected tab rather than the tab list
+ else if (Css.hasClass(row, "netInfoTabs"))
+ {
+ var tabs = row.getElementsByClassName("netInfoTab");
+ tabs = Array.filter(tabs, function(e, i, a)
+ {
+ return e.hasAttribute("selected");
+ });
+ this.focus(tabs.length > 0 ? tabs[0] : row);
+ }
+ else
+ {
+ this.focus(row);
+ }
+ },
+
+ getRowIndex: function(rows, target)
+ {
+ return Array.indexOf(rows, target);
+ },
+
+ getAncestorRow: function(elem, useSubRow)
+ {
+ return Dom.getAncestorByClass(elem, useSubRow ? "focusRow" : "outerFocusRow");
+ },
+
+ onConsoleMouseDown: function(event)
+ {
+ var node = Dom.getAncestorByClass(event.target, "focusRow");
+ if (node)
+ {
+ this.modifyPanelRow(Firebug.getElementPanel(node), node, false);
+ }
+ else
+ {
+ node = Dom.getAncestorByClass(event.target, "memberRow");
+ if (!node)
+ return;
+ var focusRow = node.getElementsByClassName("focusRow").item(0);
+ if (!focusRow)
+ return;
+
+ this.focusPanelRow(Firebug.getElementPanel(focusRow), focusRow);
+ node = Dom.getAncestorByClass(event.target, "memberLabel");
+ if (!(node && Css.hasClass(node, "hasChildren")))
+ Events.cancelEvent(event);
+ }
+ },
+
+ getValidRow: function(rows, index)
+ {
+ var min = 0; var max = rows.length -1;
+ if (index < min || index > max)
+ index = index < min ? 0 : max;
+ return rows[index];
+ },
+
+ getFocusObjects: function(container)
+ {
+ var nodes = container.getElementsByClassName("a11yFocus");
+ return Array.filter(nodes, this.isVisibleByStyle, this);
+ },
+
+ modifyConsoleRow: function(panel, row, inTabOrder)
+ {
+ if (this.isDirCell(row))
+ {
+ this.modifyMemberRow(panel, row, inTabOrder);
+ }
+ else if (this.isProfileRow(row))
+ {
+ this.modifyProfileRow(panel, row, inTabOrder);
+ }
+ else if (this.isOuterFocusRow(row, true))
+ {
+ if (Css.hasClass(row, "spyHeadTable") || Css.hasClass(row, "netInfoTabs"))
+ this.modifyNetRow(panel, row, row.getAttribute("tabindex") === "0");
+ else
+ this.modifyLogRow(panel, row, row.getAttribute("tabindex") === "0");
+ }
+ else return;
+ },
+
+ modifyProfileRow: function(panel, row, inTabOrder)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y || !row)
+ return;
+
+ this.makeFocusable(row, inTabOrder);
+ var focusObjects = this.getFocusObjects(row);
+ Array.forEach(focusObjects, function(e, i, a)
+ {
+ this.makeFocusable(e);
+ if (Css.hasClass(e.parentNode, "profileCell"))
+ e.setAttribute("role", "gridcell");
+ }, this);
+ },
+
+ onConsoleSearchMatchFound: function(panel, text, matches)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var matchFeedback = "";
+ if (!matches || matches.length == 0)
+ {
+ matchFeedback = Locale.$STRF("a11y.updates.no matches found", [text]);
+ }
+ else
+ {
+ matchFeedback = Locale.$STRF("a11y.updates.match found in logrows",
+ [text, matches.length]);
+ }
+ this.updateLiveElem(panel, matchFeedback, true); //should not use alert
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // HTML Panel
+
+ onHTMLKeyPress: function(event)
+ {
+ var target = event.target;
+ var keyCode = event.keyCode || (event.type == "keypress" ? event.charCode : null);
+ if ([KeyEvent.DOM_VK_RETURN, KeyEvent.DOM_VK_SPACE,
+ KeyEvent.DOM_VK_F2].indexOf(keyCode) == -1)
+ {
+ return;
+ }
+ if (!Css.hasClass(target, "nodeLabelBox"))
+ return;
+
+ var panel = Firebug.getElementPanel(target);
+ switch (keyCode)
+ {
+ case KeyEvent.DOM_VK_RETURN:
+ case KeyEvent.DOM_VK_SPACE:
+ var isEnter = (keyCode == KeyEvent.DOM_VK_RETURN);
+ var nodeLabels = [];
+ if (isEnter)
+ {
+ nodeLabels = target.getElementsByClassName("nodeName");
+ if (nodeLabels.length > 0)
+ {
+ Firebug.Editor.startEditing(nodeLabels[0]);
+ Events.cancelEvent(event);
+ }
+ }
+ if (!isEnter || nodeLabels.length == 0)
+ {
+ var nodeBox = Dom.getAncestorByClass(target, "nodeBox");
+ if (nodeBox.repObject && panel.editNewAttribute)
+ {
+ panel.editNewAttribute(nodeBox.repObject);
+ Events.cancelEvent(event);
+ }
+ }
+ break;
+
+ case KeyEvent.DOM_VK_F2:
+ if (Css.hasClass(target.parentNode.parentNode, "textNodeBox"))
+ {
+ var textNode = Dom.getChildByClass(target, "nodeText");
+ if (textNode)
+ Firebug.Editor.startEditing(textNode);
+ }
+ break;
+ }
+ },
+
+ onHTMLFocus: function(event)
+ {
+ if (Css.hasClass(event.target, "nodeLabelBox"))
+ {
+ this.dispatchMouseEvent(event.target, "mouseover");
+ var nodeLabel = Dom.getAncestorByClass(event.target, "nodeLabel");
+ if (nodeLabel)
+ Css.setClass(nodeLabel, "focused");
+ event.target.setAttribute("aria-selected", "true");
+ Events.cancelEvent(event);
+ }
+ },
+
+ onHTMLBlur: function(event)
+ {
+ if (Css.hasClass(event.target, "nodeLabelBox"))
+ {
+ this.dispatchMouseEvent(event.target, "mouseout");
+ var nodeLabel = Dom.getAncestorByClass(event.target, "nodeLabel");
+ if (nodeLabel)
+ Css.removeClass(nodeLabel, "focused");
+ event.target.setAttribute("aria-selected", "false");
+ Events.cancelEvent(event);
+ }
+ },
+
+ onObjectBoxSelected: function(objectBox, forceFocus)
+ {
+ var panel = Firebug.getElementPanel(objectBox);
+
+ // See issue 5934
+ if (panel.editing)
+ return;
+
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+ var label = objectBox.firstChild.getElementsByClassName("nodeLabelBox").item(0);
+ if (label)
+ {
+ this.makeFocusable(label, true);
+ if (this.panelHasFocus(panel) || forceFocus)
+ this.focus(label);
+ }
+ },
+
+ onObjectBoxUnselected: function(objectBox)
+ {
+ if (!this.isEnabled() || !objectBox)
+ return;
+ var label = objectBox.firstChild.getElementsByClassName("nodeLabelBox").item(0);
+ if (label)
+ this.makeUnfocusable(label, true);
+ },
+
+ onHTMLSearchMatchFound: function(panel, match)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var node = match.node;
+ var elem;
+ var matchFeedback = "";
+ switch (node.nodeType)
+ {
+ case Node.ELEMENT_NODE:
+ elem = node;
+ matchFeedback += Locale.$STRF("a11y.updates.match found in element",
+ [match.match[0], elem.nodeName, Xpath.getElementTreeXPath(elem)]);
+ break;
+
+ case Node.ATTRIBUTE_NODE:
+ elem = node.ownerElement;
+ matchFeedback += Locale.$STRF("a11y.updates.match found in attribute",
+ [match.match[0], node.name, node.value, elem.nodeName,
+ Xpath.getElementTreeXPath(elem)]);
+ break;
+
+ case Node.TEXT_NODE:
+ elem = node.parentNode;
+ matchFeedback += Locale.$STRF("a11y.updates.match found in text content",
+ [match.match[0], match.match.input]);
+ break;
+ }
+ this.updateLiveElem(panel, matchFeedback, true); //should not use alert
+ },
+
+ onHTMLSearchNoMatchFound: function(panel, text)
+ {
+ this.updateLiveElem(panel, Locale.$STRF("a11y.updates.no matches found", [text]), true);
+ },
+
+ moveToSearchMatch: function()
+ {
+ if (!this.isEnabled())
+ return;
+ var panel = Firebug.chrome.getSelectedPanel();
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y || !panel.searchable)
+ return;
+
+ var popup = Firebug.chrome.$("fbSearchOptionsPopup");
+ if (popup)
+ popup.hidePopup();
+ var type = panel.searchType ? panel.searchType : panelA11y.type;
+ switch (type)
+ {
+ case "html":
+ var match = panel.lastSearch.lastMatch;
+ if (!match)
+ return;
+ var nodeBox = panel.lastSearch.openToNode(match.node, match.isValue);
+ if (!nodeBox)
+ return;
+
+ nodeBox = Dom.getAncestorByClass(nodeBox, "nodeBox");
+ //select call will not trigger focus because focus is outside the HTML panel (i.e. the search field),
+ panel.select(nodeBox.repObject, true);
+ // Manually force selected node to be focused
+ this.onObjectBoxSelected(nodeBox, true);
+ break;
+
+ case "css":
+ if (panel.currentSearch && panel.currentSearch.currentNode)
+ {
+ var focusRow = Dom.getAncestorByClass(panel.currentSearch.currentNode,
+ "focusRow");
+ if (focusRow)
+ this.focusPanelRow(panel, focusRow);
+ }
+ break;
+
+ case "script":
+ if (panel.currentSearch && panel.selectedSourceBox)
+ {
+ var box = panel.selectedSourceBox;
+ var lineNo = panel.currentSearch.mark;
+ box.a11yCaretLine = lineNo + 1;
+ box.a11yCaretOffset = 0;
+ panel.scrollToLine(box.repObject.href, lineNo,
+ panel.jumpHighlightFactory(lineNo+1, panel.context));
+ var viewport = box.getElementsByClassName("sourceViewport").item(0);
+ if (viewport)
+ {
+ this.focus(viewport);
+ this.insertCaretIntoLine(panel, box);
+ }
+ }
+ break;
+
+ case "dom":
+ if (panel.currentSearch && panel.currentSearch.currentNode)
+ {
+ var focusRow =
+ panel.currentSearch.currentNode.getElementsByClassName("focusRow").item(0);
+ if (focusRow)
+ this.focusPanelRow(panel, focusRow);
+ }
+ break;
+
+ case "net":
+ if (panel.currentSearch && panel.currentSearch.currentNode)
+ {
+ var focusRow = Dom.getAncestorByClass(panel.currentSearch.currentNode,
+ "focusRow");
+ if (focusRow)
+ this.focusPanelRow(panel, focusRow);
+ }
+ break;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // CSS Panel
+
+ onCSSKeyPress: function(event)
+ {
+ var target = event.target;
+ var keyCode = event.keyCode || (event.type == "keypress" ? event.charCode : null);
+ if (!this.isFocusRow(target) || event.altKey)
+ return;
+
+ if ([KeyEvent.DOM_VK_RETURN, KeyEvent.DOM_VK_SPACE, KeyEvent.DOM_VK_PAGE_UP,
+ KeyEvent.DOM_VK_PAGE_DOWN, KeyEvent.DOM_VK_END, KeyEvent.DOM_VK_HOME,
+ KeyEvent.DOM_VK_UP, KeyEvent.DOM_VK_DOWN].indexOf(keyCode) == -1)
+ {
+ return; //not interested in any other keys than arrows, pg, home/end, space & enter
+ }
+ var panel = Firebug.getElementPanel(target);
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ switch (keyCode)
+ {
+ case KeyEvent.DOM_VK_UP:
+ case KeyEvent.DOM_VK_DOWN:
+ var goUp = keyCode == 38;
+ if (Events.isControl(event))
+ {
+ if (event.shiftKey)
+ {
+ var node = this[goUp ? "getPreviousByClass" : "getNextByClass"](target,
+ "cssInheritHeader", panel.panelNode);
+ if (node)
+ this.focusPanelRow(panel, node);
+ else if (goUp)
+ this.focusEdgeCSSRow(panel, target, true);
+ }
+ else
+ this.focusSiblingHeadRow(panel, target, goUp);
+ }
+ else
+ this.focusSiblingCSSRow(panel, target, goUp);
+ break;
+
+ case KeyEvent.DOM_VK_END:
+ case KeyEvent.DOM_VK_HOME:
+ if (Events.isControl(event))
+ this.focusEdgeHeadRow(panel, target, keyCode == 36);
+ else
+ this.focusEdgeCSSRow(panel, target, keyCode == 36);
+ break;
+
+ case KeyEvent.DOM_VK_PAGE_UP:
+ case KeyEvent.DOM_VK_PAGE_DOWN:
+ if (Events.isControl(event))
+ this.focusPageSiblingHeadRow(panel, target, keyCode == 33);
+ else
+ this.focusPageSiblingCSSRow(panel, target, keyCode == 33);
+ break;
+
+ case KeyEvent.DOM_VK_RETURN:
+ if (Css.hasClass(target, "cssProp"))
+ {
+ var node = Dom.getChildByClass(target, "cssPropName");
+ if (node)
+ Firebug.Editor.startEditing(node);
+ Events.cancelEvent(event);
+ }
+ else if (Css.hasClass(target, "cssHead"))
+ {
+ var node = Dom.getChildByClass(target, "cssSelector");
+ if (node && Css.hasClass(node, "editable"))
+ Firebug.Editor.startEditing(node);
+ Events.cancelEvent(event);
+ }
+ else if (Css.hasClass(target, "importRule"))
+ {
+ var node = Dom.getChildByClass(target, "objectLink");
+ if (node)
+ this.dispatchMouseEvent(node, "click");
+ }
+ break;
+
+ case KeyEvent.DOM_VK_SPACE:
+ if (Css.hasClass(target, "cssProp"))
+ {
+ //our focus is about to be wiped out, we'll try to get it back after
+ panelA11y.reFocusId = Xpath.getElementXPath(target);
+ panel.disablePropertyRow(target);
+ if (panel.name == "stylesheet")
+ {
+ target.setAttribute("aria-checked",
+ !Css.hasClass(target, "disabledStyle"));
+ }
+ Events.cancelEvent(event);
+ }
+ break;
+ }
+ if (!event.shiftKey)
+ event.preventDefault();
+ },
+
+ onCSSMouseDown: function(event)
+ {
+ var row = Dom.getAncestorByClass(event.target, "focusRow");
+ if (row)
+ this.modifyPanelRow(Firebug.getElementPanel(row), row, false);
+ },
+
+ focusSiblingCSSRow: function(panel, target, goUp)
+ {
+ var newRow = this[goUp ? "getPreviousByClass" : "getNextByClass"](target, "focusRow",
+ panel.panelNode);
+ if (!newRow)
+ return;
+ this.focusPanelRow(panel, newRow, false);
+ },
+
+ focusPageSiblingCSSRow: function(panel, target, goUp)
+ {
+ var rows = this.getFocusRows(panel);
+ var index = this.getRowIndex(rows, target);
+ var newRow = this.getValidRow(rows, goUp ? index - 10 : index + 10);
+ this.focusPanelRow(panel, newRow, false);
+ },
+
+ focusEdgeCSSRow: function(panel, target, goUp)
+ {
+ var rows = this.getFocusRows(panel);
+ var newRow = this.getValidRow(rows, goUp ? 0 : rows.length -1);
+ this.focusPanelRow(panel, newRow, false);
+ },
+
+ getHeadRowsAndIndex: function(panel, elem)
+ {
+ var rows = this.getFocusRows(panel);
+ var headRow = Css.hasClass(elem, "cssHead") ?
+ elem : Dom.getPreviousByClass(elem, "cssHead");
+ var headRows = Array.filter(rows, function(e, i, a) {
+ return Css.hasClass(e, "cssHead");
+ });
+ var index = Array.indexOf(headRows, headRow);
+ if (index == -1)
+ index = 0;
+ return [headRows, index];
+ },
+
+ focusSiblingHeadRow: function(panel, elem, goUp)
+ {
+ var rowInfo = this.getHeadRowsAndIndex(panel, elem);
+ var newRow = this.getValidRow(rowInfo[0], goUp ? rowInfo[1] - 1 : rowInfo[1] + 1);
+ this.focusPanelRow(panel, newRow, false);
+ },
+
+ focusPageSiblingHeadRow: function(panel, elem, goUp)
+ {
+ var rowInfo = this.getHeadRowsAndIndex(panel, elem);
+ var newRow = this.getValidRow(rowInfo[0], goUp ? rowInfo[1] - 10 : rowInfo[1] + 10);
+ this.focusPanelRow(panel, newRow, false);
+ },
+
+ focusEdgeHeadRow: function(panel, elem, goUp)
+ {
+ var rowInfo = this.getHeadRowsAndIndex(panel, elem);
+ var newRow = this.getValidRow(rowInfo[0], goUp ? 0 : rowInfo[0].length - 1);
+ this.focusPanelRow(panel, newRow, false);
+ },
+
+ onBeforeCSSRulesAdded: function(panel)
+ {
+ // Panel content is about to be recreated, possibly wiping out focus.
+ // Use the focused element's xpath to remember which rule had focus,
+ // so that it can be refocused when the panel content is drawn again
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y || !this.panelHasFocus(panel))
+ return;
+ if (panelA11y.tabStop && Css.hasClass(panelA11y.tabStop, "focusRow"))
+ panelA11y.reFocusId = Xpath.getElementXPath(panelA11y.tabStop);
+ },
+
+ onCSSRulesAdded: function(panel, rootNode)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+ var row;
+ if (panelA11y.reFocusId)
+ { //we need to put focus back to where it was before it was wiped out
+ var reFocusRows = Xpath.getElementsByXPath(rootNode.ownerDocument,
+ panelA11y.reFocusId);
+ panelA11y.reFocusId = null;
+ if (reFocusRows.length > 0)
+ {
+ row = reFocusRows[0];
+ this.modifyPanelRow(panel, row, true);
+ this.focus(row, true);
+ this.setPanelTabStop(panel, row);
+ return;
+ }
+ }
+ //no refocus needed, just make first rule the panel's tab stop
+ row = rootNode.getElementsByClassName("focusRow").item(0);
+ this.modifyPanelRow(panel, row, true);
+ return;
+ },
+ //applies a11y changes (keyboard and screen reader related) to an individual row
+ //To improve performance, this only happens when absolutely necessary, e.g. when the user navigates to the row in question
+
+ modifyCSSRow: function(panel, row, inTabOrder)
+ {
+ if (!panel || !row)
+ return;
+ var rule = Dom.getAncestorByClass(row, "cssRule");
+ if (inTabOrder)
+ this.setPanelTabStop(panel, row);
+ else
+ this.makeFocusable(row);
+ if (rule && !Css.hasClass(rule, "a11yModified"))
+ {
+ var listBox = rule.getElementsByClassName("cssPropertyListBox").item(0);
+ var selector = rule.getElementsByClassName("cssSelector").item(0);
+ if (listBox && selector)
+ {
+ listBox.setAttribute("aria-label",
+ Locale.$STRF("a11y.labels.declarations for selector", [selector.textContent]));
+ }
+ Css.setClass(rule, "a11yModified");
+ }
+ if (Css.hasClass(row, "cssHead"))
+ {
+ if (panel.name == "css")
+ {
+ var sourceLink = rule.parentNode.lastChild;
+ if (sourceLink && Css.hasClass(sourceLink, "objectLink"))
+ {
+ row.setAttribute("aria-label", row.textContent + " " +
+ Locale.$STRF("a11y.labels.defined in file", [sourceLink.textContent]));
+ }
+ }
+ }
+ else if (Css.hasClass(row, "cssProp"))
+ {
+ row.setAttribute("aria-checked", !Css.hasClass(row, "disabledStyle"));
+ if (Css.hasClass(row, "cssOverridden"))
+ {
+ row.setAttribute("aria-label", Locale.$STR("aria.labels.overridden") + " " +
+ row.textContent);
+ }
+ }
+ return;
+ },
+
+ onCSSPanelContextMenu: function(event)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ if (event.button == 0) //the event was created by keyboard, not right mouse click
+ {
+ var panel = Firebug.getElementPanel(event.target);
+ if (panel && Css.hasClass(event.target, "focusRow"))
+ {
+ var node = event.target;
+ if (panel.name == "css")
+ {
+ if (Css.hasClass(event.target, "cssHead"))
+ {
+ node = event.target.parentNode.getElementsByClassName("objectLink")
+ .item(0);
+ }
+ else if (Css.hasClass(event.target, "cssInheritHeader"))
+ {
+ node = event.target.getElementsByClassName("objectLink").item(0);
+ }
+
+ if (!node || Css.hasClass(node, "collapsed"))
+ {
+ node = event.target;
+ }
+ }
+ //these context menu options are likely to destroy current focus
+ panelA11y.reFocusId = Xpath.getElementXPath(event.target);
+ document.popupNode = node;
+ Firebug.chrome.$("fbContextMenu").openPopup(node, "overlap", 0,0,true);
+ Events.cancelEvent(event); //no need for default handlers anymore
+ }
+ }
+ },
+
+ onCSSSearchMatchFound: function(panel, text, matchRow)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y || !text)
+ return;
+
+ if (!matchRow)
+ {
+ this.updateLiveElem(panel,
+ Locale.$STRF("a11y.updates.no matches found", [text]), true); //should not use alert
+ return;
+ }
+ var matchFeedback = "";
+ var selector;
+ if (Css.hasClass(matchRow, "cssSelector"))
+ {
+ matchFeedback = " " + Locale.$STRF("a11y.updates.match found in selector",
+ [text, matchRow.textContent]);
+ }
+ else
+ {
+ selector = Dom.getPreviousByClass(matchRow, "cssSelector");
+ selector = selector ? selector.textContent : "";
+ if (Css.hasClass(matchRow, "cssPropName") || Css.hasClass(matchRow, "cssPropValue"))
+ {
+ var propRow = Dom.getAncestorByClass(matchRow, "cssProp");
+ if (propRow)
+ {
+ matchFeedback = Locale.$STRF("a11y.updates.match found in style declaration",
+ [text, propRow.textContent, selector]);
+ }
+ }
+ }
+ this.updateLiveElem(panel, matchFeedback, true); // should not use alert
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Layout Panel
+
+ onLayoutBoxCreated: function(panel, node, detailsObj)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var focusGroups = node.getElementsByClassName("focusGroup");
+ Array.forEach(focusGroups, function(e, i, a) {
+ this.makeFocusable(e, Css.hasClass(e, "positionLayoutBox"));
+ e.setAttribute("role", "group");
+ e.setAttribute("aria-label", this.getLayoutBoxLabel(e, detailsObj));
+ e.setAttribute("aria-setsize", a.length);
+ e.setAttribute("aria-posinset", i + 1);
+ }, this);
+ },
+
+ getLayoutBoxLabel: function(elem, detailsObj)
+ {
+ var className = elem.className.match(/\b(\w+)LayoutBox\b/);
+ if (!className)
+ return "";
+
+ var styleName = className[1];
+ var output = "";
+ switch (styleName)
+ {
+ case "position":
+ output += Css.hasClass(elem, "blankEdge") ?
+ "" : Locale.$STR("a11y.layout.position");
+ styleName = "outer";
+ break;
+
+ case "margin":
+ output += Locale.$STR("a11y.layout.margin");
+ break;
+
+ case "border":
+ output += Locale.$STR("a11y.layout.border");
+ break;
+
+ case "padding":
+ output += Locale.$STR("a11y.layout.padding");
+ break;
+
+ case "content":
+ output += Locale.$STR("a11y.layout.size");
+ break;
+ }
+ output += ": ";
+ var valNames = [];
+ var vals = {};
+ switch (styleName)
+ {
+ case "outer":
+ valNames = ["top", "left", "position", "z-index"];
+ vals.top = detailsObj[styleName + "Top"];
+ vals.left = detailsObj[styleName + "Left"];
+ vals.position = detailsObj.position;
+ vals["z-index"] = detailsObj.zIndex;
+ break;
+
+ case "content":
+ valNames = ["width", "height"];
+ vals.width = detailsObj["width"];
+ vals.height = detailsObj["height"];
+ break;
+
+ default:
+ valNames = ["top", "right", "bottom", "left"];
+ vals.top = detailsObj[styleName + "Top"];
+ vals.right = detailsObj[styleName + "Right"];
+ vals.bottom = detailsObj[styleName + "Bottom"];
+ vals.left = detailsObj[styleName + "Left"];
+ break;
+ }
+
+ for (var i = 0; i < valNames.length; i++)
+ {
+ output += Locale.$STR("a11y.layout." + valNames[i]) + " = " + vals[valNames[i]];
+ output += i == valNames.length -1 ? "" : ", ";
+ }
+ return output;
+ },
+
+ onLayoutKeyPress: function(event)
+ {
+ var target = event.target;
+ var keyCode = event.keyCode || (event.type == "keypress" ? event.charCode : null);
+ if ([KeyEvent.DOM_VK_RETURN, KeyEvent.DOM_VK_LEFT, KeyEvent.DOM_VK_UP,
+ KeyEvent.DOM_VK_RIGHT, KeyEvent.DOM_VK_DOWN].indexOf(keyCode) == -1)
+ {
+ return;
+ }
+ if (!Css.hasClass(target, "focusGroup"))
+ return;
+
+ switch (keyCode)
+ {
+ case KeyEvent.DOM_VK_LEFT:
+ case KeyEvent.DOM_VK_UP:
+ case KeyEvent.DOM_VK_RIGHT:
+ case KeyEvent.DOM_VK_DOWN:
+ var node, goLeft = (keyCode == KeyEvent.DOM_VK_LEFT ||
+ keyCode == KeyEvent.DOM_VK_UP);
+ if (goLeft)
+ node = Dom.getAncestorByClass(target.parentNode, "focusGroup");
+ else
+ node = Dom.getChildByClass(target, "focusGroup");
+
+ if (node)
+ this.focus(node);
+ break;
+
+ case KeyEvent.DOM_VK_RETURN:
+ var editable = target.getElementsByClassName("editable").item(0);
+ if (editable)
+ Firebug.Editor.startEditing(editable);
+ Events.cancelEvent(event);
+ break;
+ }
+ },
+
+ onLayoutFocus: function(event)
+ {
+ if (Css.hasClass(event.target, "focusGroup"))
+ {
+ this.dispatchMouseEvent(event.target, "mouseover");
+ this.setPanelTabStop(Firebug.getElementPanel(event.target), event.target);
+ }
+ },
+
+ onLayoutBlur: function(event)
+ {
+ if (Css.hasClass(event.target, "focusGroup"))
+ this.dispatchMouseEvent(event.target, "mouseout");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Inline Editing
+ onInlineEditorShow: function(panel, editor)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ //recreate the input element rather than reusing the old one, otherwise AT won't pick it up
+ editor.input.onkeypress = editor.input.oninput = editor.input.onoverflow = null;
+ editor.inputTag.replace({}, editor.box.childNodes[1].firstChild, editor);
+ editor.input = editor.box.childNodes[1].firstChild.firstChild;
+ },
+
+ onBeginEditing: function(panel, editor, target, value)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ switch (panelA11y.type)
+ {
+ case "html":
+ var nodeName = null;
+ var setSize = posInSet = 0; var setElems;
+ var label = Locale.$STR("a11y.labels.inline editor") + ": ";
+ if (Css.hasClass(target, "nodeName") || Css.hasClass(target, "nodeValue"))
+ {
+ var isName = Css.hasClass(target, "nodeName");
+ setElems = target.parentNode.parentNode
+ .getElementsByClassName(isName ? "nodeName" : "nodeValue");
+ setSize = (setElems.length * 2);
+ posInSet = ((Array.indexOf(setElems, target) + 1) * 2) - (isName ? 1 : 0);
+ editor.input.setAttribute("role", "listitem");
+ editor.input.setAttribute("aria-setsize", setSize);
+ editor.input.setAttribute("aria-posinset", posInSet);
+ nodeTag = Dom.getPreviousByClass(target, "nodeTag");
+ if (!isName)
+ {
+ nodeName = Dom.getPreviousByClass(target, "nodeName");
+ label += Locale.$STRF("a11y.labels.value for attribute in element",
+ [nodeName.textContent, nodeTag.textContent]);
+ }
+ else
+ {
+ label += Locale.$STRF("a11y.label.attribute for element",
+ [nodeTag.textContent]);
+ }
+ }
+ else if (Css.hasClass(target, "nodeText"))
+ {
+ nodeTag = Dom.getPreviousByClass(target, "nodeTag");
+ label += Locale.$STRF("a11y.labels.text contents for element",
+ [nodeTag.textContent]);
+ }
+ editor.input.setAttribute("aria-label", label);
+ break;
+
+ case "css":
+ case "stylesheet":
+ var selector = Dom.getPreviousByClass(target, "cssSelector");
+ selector = selector ? selector.textContent : "";
+ var label = Locale.$STR("a11y.labels.inline editor") + ": ";
+ if (Css.hasClass(target, "cssPropName"))
+ {
+ label += Locale.$STRF("a11y.labels.property for selector", [selector]);
+ }
+ else if (Css.hasClass(target, "cssPropValue"))
+ {
+ var propName = Dom.getPreviousByClass(target, "cssPropName");
+ propName = propName ? propName.textContent : "";
+ label += Locale.$STRF("a11y.labels.value property in selector",
+ [propName, selector]);
+ }
+ else if (Css.hasClass(target, "cssSelector"))
+ {
+ label += Locale.$STR("a11y.labels.css selector");
+ }
+
+ editor.input.setAttribute("aria-label", label);
+ editor.setAttribute("aria-autocomplete", "inline");
+ break;
+
+ case "layout":
+ editor.input.setAttribute("aria-label", target.getAttribute("aria-label"));
+ break;
+
+ case "dom":
+ case "domSide":
+ if (target.cells && target.cells[1])
+ editor.input.setAttribute("aria-label", target.cells[1].textContent);
+ break;
+ }
+ },
+
+ onInlineEditorClose: function(panel, target, removeGroup)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ switch (panelA11y.type)
+ {
+ case "layout":
+ var box = Dom.getAncestorByClass(target, "focusGroup");
+ if (box)
+ this.focus(box, true);
+ break;
+
+ case "css":
+ case "stylesheet":
+ var node = target.parentNode;
+ if (removeGroup)
+ node = this.getPreviousByClass(node, "focusRow", panel.panelNode);
+ if (node)
+ this.focusPanelRow(panel, node, true);
+ break;
+
+ case "html":
+ var box = Dom.getAncestorByClass(target, "nodeBox");
+ if (box)
+ panel.select(box.repObject, true);
+ break;
+
+ case "watches":
+ var node = target.getElementsByClassName("watchEditBox").item(0);
+ if (node)
+ this.focus(node, true);
+ break;
+
+ case "script":
+ panel.selectedSourceBox.focus();
+ break;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Script Panel
+
+ onStartDebugging: function(context)
+ {
+ if (!context)
+ return;
+
+ var panel = context.getPanel("script");
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var frame = context.stoppedFrame;
+ var fileName = frame.script.fileName.split("/"); // XXXjjb I think this should be contxt.executingSourceFile.href
+ fileName = fileName.pop();
+ // XXXjjb the frame.functionName is often anonymous, since the compiler is lame.
+ var alertString = Locale.$STRF("a11y.updates.script_suspended_on_line_in_file",
+ [frame.line, frame.functionName, fileName]);
+ this.updateLiveElem(panel, alertString, true);
+ this.onShowSourceLink(panel, frame.line);
+ },
+
+ onShowSourceLink: function (panel, lineNo)
+ {
+ if (!this.isEnabled())
+ return;
+
+ var box = panel.selectedSourceBox;
+ var viewport = box.getElementsByClassName("sourceViewport").item(0);
+ box.a11yCaretLine = lineNo;
+ if (viewport && this.panelHasFocus(panel))
+ {
+ this.focus(viewport);
+ this.insertCaretIntoLine(panel, box, lineNo);
+ }
+ },
+
+ onScriptKeyPress: function(event)
+ {
+ var target = event.target;
+ var keyCode = event.keyCode || (event.type == "keypress" ? event.charCode : null);
+ if (!Css.hasClass(target, "sourceViewport"))
+ return;
+
+ if ([KeyEvent.DOM_VK_RETURN, KeyEvent.DOM_VK_PAGE_UP, KeyEvent.DOM_VK_PAGE_DOWN,
+ KeyEvent.DOM_VK_END, KeyEvent.DOM_VK_HOME, KeyEvent.DOM_VK_LEFT, KeyEvent.DOM_VK_UP,
+ KeyEvent.DOM_VK_RIGHT, KeyEvent.DOM_VK_DOWN].indexOf(keyCode) == -1)
+ {
+ return;
+ }
+
+ var panel = Firebug.getElementPanel(target);
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var box = panel.selectedSourceBox;
+ var lastLineNo = box.lastViewableLine;
+ var firstLineNo = box.firstViewableLine;
+ var caretDetails = this.getCaretDetails(event.target.ownerDocument);
+ if (!caretDetails || caretDetails.length != 2)
+ return;
+
+ var lineNode = Dom.getAncestorByClass(caretDetails[0].parentNode, "sourceRow");
+ if (!lineNode)
+ return;
+
+ var lineNo = parseInt(lineNode.getElementsByClassName("sourceLine").item(0).textContent);
+ box.a11yCaretLine = lineNo;
+ box.a11yCaretOffset = caretDetails[1];
+ var linesToScroll = 0;
+ var goUp;
+ switch (keyCode)
+ {
+ case KeyEvent.DOM_VK_UP:
+ case KeyEvent.DOM_VK_DOWN:
+ goUp = (keyCode == KeyEvent.DOM_VK_UP);
+ linesToScroll = goUp ? -1 : 1;
+ if (!Events.isControl(event))
+ {
+ if ((goUp && lineNo > firstLineNo + 1) ||
+ (!goUp && lineNo < lastLineNo - 1))
+ {
+ return;
+ }
+
+ box.a11yCaretLine = goUp ? lineNo - 1 : lineNo +1;
+ }
+ box.scrollTop = box.scrollTop + (linesToScroll * box.lineHeight);
+ break;
+
+ case KeyEvent.DOM_VK_PAGE_UP:
+ case KeyEvent.DOM_VK_PAGE_DOWN:
+ goUp = (keyCode == KeyEvent.DOM_VK_PAGE_UP);
+ if ((goUp && box.scrollTop == 0) ||
+ (!goUp && box.scrollTop == box.scrollHeight - box.clientHeight))
+ {
+ box.a11yCaretLine = goUp ? 0 : box.totalMax;
+ box.a11yCaretOffset = 0;
+ this.insertCaretIntoLine(panel, box);
+ Events.cancelEvent(event);
+ return;
+ }
+ box.a11yCaretLine = goUp ? lineNo - box.viewableLines : lineNo + box.viewableLines;
+ linesToScroll = goUp ? -box.viewableLines : box.viewableLines;
+ box.scrollTop = box.scrollTop + (linesToScroll * box.lineHeight);
+ Events.cancelEvent(event);
+ break;
+
+ case KeyEvent.DOM_VK_HOME:
+ case KeyEvent.DOM_VK_END:
+ goUp = (keyCode == KeyEvent.DOM_VK_HOME);
+ if (Events.isControl(event))
+ {
+ box.a11yCaretLine = goUp ? 0 : box.totalMax;
+ box.a11yCaretOffset = 0;
+ if ((goUp && box.scrollTop == 0) ||
+ (!goUp && box.scrollTop == box.scrollHeight - box.clientHeight))
+ {
+ this.insertCaretIntoLine(panel, box);
+ }
+ else
+ {
+ box.scrollTop = goUp ? 0 : box.scrollHeight - box.clientHeight;;
+ }
+ Events.cancelEvent(event);
+ return;
+ }
+
+ if (goUp)
+ {
+ //move caret to beginning of line. Override default behavior, as that would take the caret into the line number
+ this.insertCaretIntoLine(panel, box, lineNo, 0);
+ box.scrollLeft = 0; //in case beginning of line is scrolled out of view
+ Events.cancelEvent(event);
+ }
+ break;
+
+ case KeyEvent.DOM_VK_RETURN:
+ var liveString = "";
+ var caretDetails = this.getCaretDetails(event.target.ownerDocument);
+ var lineNode = Dom.getAncestorByClass(caretDetails[0].parentNode, "sourceRow");
+ var lineNo = parseInt(lineNode.getElementsByClassName("sourceLine").item(0)
+ .textContent);
+ liveString += "Line " + lineNo;
+ if (lineNode.getAttribute("breakpoint") == "true")
+ {
+ var breakpointStr = "";
+ if (lineNode.getAttribute("disabledbreakpoint") == "true")
+ breakpointStr = "a11y.updates.has disabled breakpoint";
+ if (lineNode.getAttribute("condition") == "true")
+ breakpointStr = "a11y.updates.has conditional breakpoint";
+ liveString += ", " + Locale.$STR(breakpointStr);
+ }
+ if (lineNode.getAttribute("executable") == "true")
+ liveString += ", executable";
+ if (lineNode.getAttribute("exe_line") == "true")
+ liveString += ", currently stopped";
+ var sourceText = lineNode.getElementsByClassName("sourceRowText").item(0);
+ if (sourceText)
+ liveString += ": " + sourceText.textContent;
+ this.updateLiveElem(panel, liveString, true); //should not use alert
+ break;
+ }
+ },
+
+ onScriptKeyUp: function(event)
+ {
+ var target = event.target;
+ var keyCode = event.keyCode || (event.type == "keypress" ? event.charCode : null);
+ if (!Css.hasClass(target, "sourceViewport"))
+ return;
+
+ if ([KeyEvent.DOM_VK_RETURN, KeyEvent.DOM_VK_PAGE_UP, KeyEvent.DOM_VK_PAGE_DOWN,
+ KeyEvent.DOM_VK_END, KeyEvent.DOM_VK_HOME, KeyEvent.DOM_VK_LEFT, KeyEvent.DOM_VK_UP,
+ KeyEvent.DOM_VK_RIGHT, KeyEvent.DOM_VK_DOWN].indexOf(keyCode) == -1)
+ {
+ return;
+ }
+
+ var panel = Firebug.getElementPanel(target);
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var box = panel.selectedSourceBox;
+ var caretDetails = this.getCaretDetails(target.ownerDocument);
+ var lineNode = Dom.getAncestorByClass(caretDetails[0].parentNode, "sourceRow");
+ if (!lineNode)
+ return;
+
+ var lineNo = parseInt(lineNode.getElementsByClassName("sourceLine").item(0).textContent);
+ box.a11yCaretLine = lineNo;
+ box.a11yCaretOffset = caretDetails[1];
+ },
+
+ onScriptMouseUp: function(event)
+ {
+ var target = event.target;
+ if (event.button !== 0)
+ return;
+
+ var panel = Firebug.getElementPanel(target);
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var box = panel.selectedSourceBox;
+ var caretDetails = this.getCaretDetails(target.ownerDocument);
+ var lineNode = null;
+ if (caretDetails[0] && caretDetails[0].parentNode)
+ lineNode = Dom.getAncestorByClass(caretDetails[0].parentNode, "sourceRow");
+ if (!lineNode)
+ return;
+
+ var lineNo = parseInt(lineNode.getElementsByClassName("sourceLine").item(0).textContent);
+ box.a11yCaretLine = lineNo;
+ box.a11yCaretOffset = caretDetails[1];
+ },
+
+ onBeforeViewportChange: function(panel)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var box = panel.selectedSourceBox;
+ if (!box)
+ return;
+
+ this.insertCaretIntoLine(panel, box);
+ },
+
+ insertCaretIntoLine: function(panel, box, lineNo, offset)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y || !box)
+ return;
+
+ if (typeof lineNo == "undefined")
+ lineNo = box.a11yCaretLine ? box.a11yCaretLine : 0;
+ //to prevent the caret from (partially) being placed just out of sight,
+ //adjust the viewable line boundaries by 1 (unless the current line is the first or last line)
+ var lineAdjust = lineNo == 0 || lineNo == box.totalMax ? 0 : 1;
+ var firstLine = box.firstViewableLine + lineAdjust;
+ var lastLine = box.lastViewableLine - lineAdjust;
+ if (lineNo < (firstLine) || lineNo > lastLine)
+ box.a11yCaretLine = lineNo = lineNo < firstLine ? firstLine : lastLine;
+ var node = box.getLineNode(lineNo);
+ if (!node)
+ return;
+
+ if (typeof offset == "undefined")
+ {
+ if (box.a11yCaretOffset)
+ offset = box.a11yCaretOffset;
+ else
+ box.a11yCaretOffset = offset = 0;
+ }
+ var startNode = node.getElementsByClassName("sourceRowText").item(0);
+ if (startNode && startNode.firstChild && startNode.firstChild.nodeType == Node.TEXT_NODE)
+ {
+ startNode = startNode.firstChild;
+ if (offset >= startNode.length)
+ box.a11yCaretOffset = offset = startNode.length - 1;
+ }
+ else
+ {
+ startNode = node; //offset is now the number of nodes, not characters within a text node
+ offset = 1;
+ }
+ this.insertCaretToNode(panel, startNode, offset);
+ },
+
+ getCaretDetails: function(doc)
+ {
+ var sel = doc.defaultView.getSelection();
+ return [sel.focusNode, sel.focusOffset];
+ },
+
+ onUpdateScriptLocation: function(panel, file)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var box = panel.selectedSourceBox;
+ var viewport = panel.selectedSourceBox.getElementsByClassName("sourceViewport").item(0);
+ box.tabIndex = -1;
+ viewport.tabIndex = 0;
+ viewport.setAttribute("role", "textbox");
+ viewport.setAttribute("aria-multiline", "true");
+ viewport.setAttribute("aria-readonly", "true");
+ fileName = Url.getFileName(file.href);
+ viewport.setAttribute("aria-label", Locale.$STRF("a11y.labels.source code for file",
+ [fileName]));
+ //bit ugly, but not sure how else I can get the caret into the sourcebox without a mouse
+ var focusElem = Firebug.chrome.window.document.commandDispatcher.focusedElement;
+ var line = box.getLineNode(box.firstViewableLine);
+ if (!line)
+ return;
+
+ var node = line.getElementsByClassName("sourceRowText").item(0);
+ this.insertCaretToNode(panel, node);
+ // move focus back to where it was
+ this.focus(focusElem);
+ },
+
+ insertCaretToNode: function(panel, node, startOffset)
+ {
+ if (!startOffset)
+ startOffset = 0;
+ var sel = panel.document.defaultView.getSelection();
+ sel.removeAllRanges();
+ var range = panel.document.createRange();
+ range.setStart(node, startOffset);
+ range.setEnd(node, startOffset);
+ sel.addRange(range);
+ },
+
+ onScriptContextMenu: function(event)
+ {
+ if (event.button == 0) //i.e. keyboard, not right mouse click
+ {
+ //Try to find the line node based on the caret and manually trigger the context menu
+ var panel = Firebug.getElementPanel(event.target);
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var sel = event.target.ownerDocument.defaultView.getSelection();
+ var node = sel.focusNode.parentNode;
+ var x = event.pageX;
+ if (x == 0)
+ {
+ //TODO: This is ugly and way too inaccurate, how to get xy coordinates from selection object?
+ var charWidth = panelA11y.oneEmElem ? panelA11y.oneEmElem.clientWidth * 0.65 : 7.5;
+ x = node.offsetLeft + sel.focusOffset * charWidth;
+ }
+ var y = event.pageY;
+ if (y >= event.target.clientHeight)
+ y = node.offsetTop;
+ Firebug.chrome.window.document.popupNode = node;
+ Firebug.chrome.$("fbContextMenu").openPopup(node.ownerDocument.body, "overlap", x, y,
+ true);
+ Events.cancelEvent(event);
+ }
+ },
+
+ onWatchPanelRefreshed: function(panel)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var watchEditTrigger = panel.panelNode.getElementsByClassName("watchEditCell").item(0);
+ if (watchEditTrigger)
+ this.makeFocusable(watchEditTrigger, true);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Call Stack Panel
+
+ onStackCreated: function(panel)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+ var rows = panel.panelNode.getElementsByClassName("focusRow");
+ Array.forEach(rows, function(e, i, a) {
+ if ((panelA11y.lastIsDefault && i === rows.length - 1) ||
+ (!panelA11y.lastIsDefault && i === 0))
+ {
+ this.setPanelTabStop(panel, e);
+ }
+ else
+ {
+ this.makeFocusable(e, false);
+ }
+ }, this);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Breakpoints Panel
+
+ onBreakRowsRefreshed: function(panel, rootNode)
+ {
+ var rows = rootNode.getElementsByClassName("focusRow");
+ for (var i = 0; i < rows.length; i++)
+ {
+ this.makeFocusable(rows[i], i == 0);
+ if (i == 0)
+ this.setPanelTabStop(panel, rows[i]);
+ }
+ var groupHeaders = rootNode.getElementsByClassName("breakpointHeader");
+ for (var i = 0; i < groupHeaders.length; i++)
+ {
+ var listBox = Dom.getNextByClass(groupHeaders[i], "breakpointsGroupListBox");
+ if (listBox)
+ listBox.setAttribute("aria-label", groupHeaders[i].textContent);
+ }
+ },
+
+ onScriptSearchMatchFound: function(panel, text, sourceBox, lineNo)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y || !text)
+ return;
+
+ var matchFeedback = "";
+ if (!sourceBox || lineNo === null)
+ {
+ matchFeedback = Locale.$STRF("a11y.updates.no matches found", [text]);
+ }
+ else
+ {
+ var line = sourceBox.getLine(panel.context, lineNo + 1);
+ if (!line)
+ line = "";
+ matchFeedback = Locale.$STRF("a11y.updates.match found for on line",
+ [text, lineNo + 1, Url.getFileName(sourceBox.href)]);
+ }
+ this.updateLiveElem(panel, matchFeedback, true);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // DOM Panel
+
+ onMemberRowsAdded: function(panel, rows)
+ {
+ if (!panel)
+ panel = Firebug.getElementPanel(rows[0]);
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y || !rows)
+ return;
+
+ var setSize = rows.length;
+ var posInset = 0;
+ for (var i = 0; i < rows.length; i++)
+ {
+ var makeTab = (panelA11y.lastIsDefault && i === rows.length - 1) ||
+ (!panelA11y.lastIsDefault && i === 0);
+ this.prepareMemberRow(panel, rows[i], makeTab, ++posInset, setSize);
+ }
+ },
+
+ onMemberRowSliceAdded: function(panel, borderRows, posInSet, setSize)
+ {
+ if (!borderRows)
+ return;
+ var startRow = borderRows[0];
+ var endRow = borderRows[1];
+ if (!panel)
+ panel = Firebug.getElementPanel(startRow);
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var reFocusId = panelA11y.reFocusId;
+ var row = startRow;
+ do
+ {
+ this.prepareMemberRow(panel, row, false, posInSet++, setSize, reFocusId);
+ if (row === endRow)
+ break;
+ }
+ while (row = row.nextSibling);
+ },
+
+ prepareMemberRow: function(panel, row, makeTab, posInSet, setSize, reFocusId)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y|| !row)
+ return;
+
+ if (!row.cells[2])
+ return;
+
+ var cellChild = row.cells[2].firstChild;
+ if (cellChild)
+ {
+ if (Css.hasClass(row, "hasChildren"))
+ cellChild.setAttribute("aria-expanded", Css.hasClass(row, "opened"));
+ if (makeTab)
+ this.modifyPanelRow(panel, cellChild, true);
+ cellChild.setAttribute("role", "treeitem");
+ cellChild.setAttribute("aria-level", parseInt(row.getAttribute("level")) + 1);
+ if (posInSet && setSize)
+ {
+ cellChild.setAttribute("aria-setsize", setSize);
+ cellChild.setAttribute("aria-posinset", posInSet);
+ }
+ Css.setClass(cellChild, "focusRow");
+ if (typeof reFocusId == "number" && row.rowIndex == reFocusId)
+ {
+ this.modifyMemberRow(panel, cellChild, true);
+ this.focus(cellChild, true, true);
+ panelA11y.reFocusId = null;
+ }
+ }
+ },
+
+ modifyMemberRow: function(panel, row, inTabOrder)
+ {
+ var type = this.getObjectType(row);
+ var labelCell = row.parentNode.previousSibling;
+ row.setAttribute("aria-label", labelCell.textContent +
+ ": " + " " + row.textContent + (type ? " (" + type + ")" : ""));
+ if (inTabOrder)
+ this.setPanelTabStop(panel, row);
+ else
+ this.makeFocusable(row, false);
+ },
+
+ onBeforeDomUpdateSelection: function (panel)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var focusNode = panel.document.activeElement;
+ if (this.isDirCell(focusNode))
+ panelA11y.reFocusId = focusNode.parentNode.parentNode.rowIndex;
+ },
+
+ onWatchEndEditing: function(panel, row)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ panelA11y.reFocusId = 2;
+ },
+
+ onDomSearchMatchFound: function (panel, text, matchRow)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y || !text)
+ return;
+
+ var matchFeedback = "";
+ if (matchRow && matchRow.cells)
+ {
+ var dirCell = matchRow.getElementsByClassName("focusRow").item(0);
+ if (dirCell)
+ {
+ this.modifyPanelRow(panel, dirCell);
+ var rowLabel = dirCell.getAttribute("aria-label");
+ matchFeedback = Locale.$STRF("a11y.updates.match found in dom property",
+ [text, rowLabel]);
+ }
+ }
+ else
+ {
+ matchFeedback = Locale.$STRF("a11y.updates.no matches found", [text]);
+ }
+ this.updateLiveElem(panel, matchFeedback, true);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Net Panel
+
+ isSubFocusRow: function(elem)
+ {
+ return Css.hasClass(elem, "focusRow") || Css.hasClass(elem, "wrappedText");
+ },
+
+ modifyNetRow: function(panel, row, inTabOrder)
+ {
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y || !row)
+ return;
+
+ if (this.isOuterFocusRow(row, true))
+ {
+ if (!Css.hasClass(row, "netInfoTabs"))
+ this.makeFocusable(row, inTabOrder);
+ if ((Css.hasClass(row, "netRow") ||
+ Css.hasClass(row, "spyHeadTable")) && !row.hasAttribute("aria-expanded"))
+ {
+ row.setAttribute("aria-expanded", Css.hasClass(row, "opened") + "");
+ }
+ var focusObjects = this.getFocusObjects(row);
+ Array.forEach(focusObjects, function(e, i, a) {
+ this.makeFocusable(e);
+ if (Css.hasClass(e, "netTimeCol") && Dom.getAncestorByClass(e, "fromCache"))
+ {
+ e.setAttribute("aria-label", e.textContent + " (" +
+ Locale.$STR("a11y.labels.cached") +")");
+ }
+ }, this);
+ }
+ else return;
+ },
+
+ getNetAncestorRow: function(elem, useSubRow)
+ {
+ return useSubRow ? Dom.getAncestorByClass(elem, "subFocusRow") ||
+ Dom.getAncestorByClass(elem, "netRow") : Dom.getAncestorByClass(elem, "netRow");
+ },
+
+ onNetMouseDown: function(event)
+ {
+ var node = Dom.getAncestorByClass(event.target, "focusRow");
+ if (node)
+ {
+ this.modifyPanelRow(Firebug.getElementPanel(node), node, false);
+ }
+ else
+ {
+ node = Dom.getAncestorByClass(event.target, "subFocusRow");
+ if (!node)
+ return;
+
+ var focusRow = node.getElementsByClassName("focusRow").item(0);
+ if (!focusRow)
+ return;
+
+ this.modifyPanelRow(Firebug.getElementPanel(focusRow), focusRow, false);
+ this.focus(focusRow);
+ }
+ },
+
+ onNetFocus: function(e) {
+ var target = e.target;
+ var panel = Firebug.getElementPanel(target);
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ if (!Css.hasClass(target, "netCol") && !Css.hasClass(target, "netHeaderCell"))
+ return;
+
+ if (Css.hasClass(target, "netHrefCol"))
+ {
+ var hrefLabel = target.getElementsByClassName("netHrefLabel").item(0);
+ var fullHrefLabel = target.getElementsByClassName("netFullHrefLabel").item(0);
+ if (hrefLabel && fullHrefLabel)
+ {
+ Css.setClass(fullHrefLabel, "a11yShowFullLabel");
+ fullHrefLabel.style.marginTop = (hrefLabel.offsetHeight + 4) + "px";
+ return;
+ }
+ }
+ var rangeParent = Dom.getAncestorByClass(target, "netRow");
+ var browser = Firebug.chrome.getPanelBrowser(panel);
+ // these two lines are necessary, because otherwise the info tip will not have the correct
+ // dimensions when it's positioned, and the contentscould be placed outside of Firebug's
+ // viewport (making it impossible to read for keyboard users)
+ // This will be called again in showInfoTip
+ panel.showInfoTip(browser.infoTip, target, target.offsetLeft, target.offsetTop,
+ rangeParent, 0);
+ browser.infoTip.setAttribute("active", "true");
+ var left = Css.hasClass(target, "netTimeCol") ?
+ target.offsetLeft - browser.infoTip.offsetWidth - 12 :
+ target.offsetLeft + target.offsetWidth - 4;
+ Firebug.InfoTip.showInfoTip(browser.infoTip, panel, target, left,
+ target.offsetTop - panel.panelNode.scrollTop - 12, rangeParent, 0);
+ },
+
+ onNetBlur: function(e) {
+ var target = e.target;
+ var panel = Firebug.getElementPanel(target);
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ if (Css.hasClass(target, "netHrefCol"))
+ {
+ var hrefLabel = target.getElementsByClassName("netHrefLabel").item(0);
+ var fullHrefLabel = target.getElementsByClassName("netFullHrefLabel").item(0);
+ if (hrefLabel && fullHrefLabel)
+ {
+ Css.removeClass(fullHrefLabel, "a11yShowFullLabel");
+ fullHrefLabel.style.marginTop = "0px";
+ }
+ }
+ var browser = Firebug.chrome.getPanelBrowser(panel);
+ Firebug.InfoTip.hideInfoTip(browser.infoTip);
+ },
+
+ onNetMatchFound: function(panel, text, row)
+ {
+ //TODO localize for 1.5
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var matchFeedback = "";
+ if (!row)
+ {
+ matchFeedback = Locale.$STRF("a11y.updates.no matches found", [text]);
+ }
+ else
+ {
+ var foundWhere = "";
+ var parentRow = Dom.getAncestorByClass(row, "netRow");
+ if (!parentRow)
+ {
+ parentRow = Dom.getAncestorByClass(row, "netInfoRow");
+ if (parentRow)
+ parentRow = parentRow.previousSibling;
+ }
+ if (Css.hasClass(row, "netHrefLabel"))
+ foundWhere = Locale.$STR("net.header.URL");
+ else if (Css.hasClass(row, "netStatusLabel"))
+ foundWhere = Locale.$STR("net.header.Status");
+ else if (Css.hasClass(row, "netDomainLabel"))
+ foundWhere = Locale.$STR("net.header.Domain");
+ else if (Css.hasClass(row, "netSizeLabel"))
+ foundWhere = Locale.$STR("net.header.Size");
+ else if (Css.hasClass(row, "netTimeLabel"))
+ foundWhere = Locale.$STR("net.header.Timeline");
+ else
+ foundWhere = "request details";
+ if (parentRow && parentRow.repObject)
+ {
+ var file = parentRow.repObject;
+ var href = (file.method ? file.method.toUpperCase() : "?") + " " +
+ Url.getFileName(file.href);
+ matchFeedback = Locale.$STRF("a11y.updates.match found in net row",
+ [text, href, foundWhere, row.textContent]);
+ }
+ else if (Dom.getAncestorByClass(row, "netSummaryRow"))
+ {
+ matchFeedback = Locale.$STRF("a11y.updates.match found in net summary row",
+ [text, row.textContent]);
+ }
+ }
+ this.updateLiveElem(panel, matchFeedback, true); //should not use alert
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Panel Navigation
+
+ insertHiddenText: function(panel, elem, text, asLastNode, id)
+ {
+ var span = panel.document.createElement("span");
+ span.className ="offScreen";
+ span.textContent = text;
+
+ if (id)
+ span.id = id;
+
+ if (asLastNode)
+ elem.appendChild(span);
+ else
+ elem.insertBefore(span, elem.firstChild);
+ },
+
+ getLogRowType: function(elem)
+ {
+ var type = "";
+ if (!elem)
+ return type;
+
+ var className = elem.className.match(/\logRow-(\w+)\b/);
+ if (className)
+ type = className[1];
+
+ if (!type)
+ {
+ if (Css.hasClass(elem, "errorTitle"))
+ type = "detailed error";
+ else if (Css.hasClass(elem, "errorSourceBox"))
+ type = "error source line";
+ else
+ type = this.getObjectType(elem);
+ }
+
+ if (type == "stackFrame")
+ type="";
+
+ return type;
+ },
+
+ getObjectType: function(elem)
+ {
+ var type = "";
+ if (elem.nodeName == "img")
+ return type;
+
+ var className = elem.className.match(/\bobject(Box|Link)-(\w+)/);
+ if (className)
+ type = className[2];
+
+ switch (type)
+ {
+ case "null":
+ case "undefined":
+ type = "";
+ break;
+
+ case "number":
+ if (elem.textContent == "true" || elem.textContent == "false")
+ type = "boolean";
+
+ case "":
+ case "object":
+ if (elem.repObject)
+ {
+ try
+ {
+ var obj = elem.repObject;
+ if (!obj)
+ return type;
+
+ type = typeof obj;
+ if (obj instanceof Array)
+ type = "array";
+
+ if (typeof obj.lineNo != "undefined")
+ type = "function call";
+ }
+ catch(e) {}
+ }
+ }
+
+ return type;
+ },
+
+ modifyPanelRow: function (panel, row, inTabOrder)
+ {
+ if (Css.hasClass(row, "a11yModified"))
+ return;
+
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y || !row)
+ return;
+
+ switch (panelA11y.type)
+ {
+ case "console":
+ this.modifyConsoleRow(panel,row, inTabOrder);
+ break;
+
+ case "css":
+ this.modifyCSSRow(panel, row, inTabOrder);
+ break;
+
+ case "net":
+ this.modifyNetRow(panel, row, inTabOrder);
+ break;
+ }
+ Css.setClass(row, "a11yModified");
+ },
+
+ focusSiblingRow: function(panel, target, goUp)
+ {
+ var newRow = this[goUp ? "getPreviousByClass" : "getNextByClass"](target, "focusRow",
+ true, panel.panelNode);
+ if (!newRow)
+ return;
+
+ this.focusPanelRow(panel, newRow);
+ },
+
+ focusPageSiblingRow: function(panel, target, goUp)
+ {
+ var rows = this.getFocusRows(panel);
+ var index = this.getRowIndex(rows, target);
+ var newRow = this.getValidRow(rows, goUp ? index - 10 : index + 10);
+ this.focusPanelRow(panel, newRow);
+ },
+
+ focusEdgeRow: function(panel, target, goUp)
+ {
+ var rows = this.getFocusRows(panel);
+ var newRow = this.getValidRow(rows, goUp ? 0 : rows.length -1);
+ this.focusPanelRow(panel, newRow);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Utils
+
+ onPanelFocus: function(event)
+ {
+ var panel = Firebug.getElementPanel(event.target);
+ var panelA11y = this.getPanelA11y(panel);
+ if (!panelA11y)
+ return;
+
+ var target = event.target;
+ if (this.isTabWorthy(target) && target !== this.getPanelTabStop(panel))
+ this.setPanelTabStop(panel, target);
+ if (target.getAttribute("role").match(/gridcell|rowheader|columnheader/))
+ {
+ var cell = (target.nodeName.toLowerCase() == "td" ||
+ (target.nodeName.toLowerCase() == "th" ? target : target.parentNode));
+ panelA11y.cellIndex = (cell.cellIndex !== undefined ? cell.cellIndex : undefined);
+ }
+ else
+ {
+ if (Css.hasClass(target, "netInfoTab"))
+ this.dispatchMouseEvent(target, "click");
+ panelA11y.cellIndex = undefined; //reset if no longer in grid
+ }
+ },
+
+ getFocusRows: function(panel)
+ {
+ var nodes = panel.panelNode.getElementsByClassName("focusRow");
+ return Array.filter(nodes, function(e, i, a)
+ {
+ return this.isVisibleByStyle(e) && Xml.isVisible(e);
+ }, this);
+ },
+
+ getLastFocusChild: function(target)
+ {
+ var focusChildren = target.getElementsByClassName("focusRow");
+ return focusChildren.length > 0 ? focusChildren[focusChildren.length -1] : null;
+ },
+
+ getFirstFocusChild: function(target)
+ {
+ var focusChildren = target.getElementsByClassName("focusRow");
+ return focusChildren.length > 0 ? focusChildren[0] : null;
+ },
+
+ focus: function(elem, noVisiCheck, needsMoreTime)
+ {
+ if (Dom.isElement(elem) && (noVisiCheck || this.isVisibleByStyle(elem)))
+ {
+ Firebug.currentContext.setTimeout(function() {
+ elem.focus();
+ }, needsMoreTime ? 500 : 10
+ );
+ }
+ },
+
+ makeFocusable: function(elem, inTabOrder)
+ {
+ if (elem)
+ elem.setAttribute("tabindex", inTabOrder ? "0" : "-1");
+ },
+
+ makeUnfocusable: function(elem)
+ {
+ if (elem)
+ elem.removeAttribute("tabindex");
+ },
+
+ reportFocus: function(event)
+ {
+ FBTrace.sysout("focus: " + event.target.nodeName + "#" + event.target.id + "." +
+ event.target.className, event.target);
+ },
+
+ dispatchMouseEvent: function (node, eventType, clientX, clientY, button)
+ {
+ if (!clientX)
+ clientX = 0;
+ if (!clientY)
+ clientY = 0;
+ if (!button)
+ button = 0;
+ if (typeof node == "string")
+ throw new Error("a11y.dispatchMouseEvent obsolete API");
+ var doc = node.ownerDocument;
+ var event = doc.createEvent("MouseEvents");
+ event.initMouseEvent(eventType, true, true, doc.defaultView,
+ 0, 0, 0, clientX, clientY, false, false, false, false, button, null);
+ node.dispatchEvent(event);
+ },
+
+ isVisibleByStyle: function (elem)
+ {
+ if (!elem || elem.nodeType != Node.ELEMENT_NODE)
+ return false;
+ var style = elem.ownerDocument.defaultView.getComputedStyle(elem, null);
+ return style.visibility !== "hidden" && style.display !== "none";
+ },
+
+ isTabWorthy: function (elem)
+ {
+ return this.isFocusRow(elem) || this.isFocusObject(elem);
+ },
+
+ isOuterFocusRow: function(elem, includeSubRow)
+ {
+ return includeSubRow ? this.isSubFocusRow(elem) : Css.hasClass(elem, "outerFocusRow");
+ },
+
+ isProfileRow: function(elem)
+ {
+ return Css.hasClass(elem, "profileRow");
+ },
+
+ isFocusRow: function(elem)
+ {
+ return Css.hasClass(elem, "focusRow");
+ },
+
+ isFocusObject: function(elem)
+ {
+ return Css.hasClass(elem, "a11yFocus");
+ },
+
+ isFocusNoTabObject: function(elem)
+ {
+ return Css.hasClass(elem, "a11yFocusNoTab");
+ },
+
+ isDirCell: function(elem)
+ {
+ return Css.hasClass(elem.parentNode, "memberValueCell");
+ },
+
+ panelHasFocus: function(panel)
+ {
+ if (!panel || !panel.context)
+ return false;
+ var focusedElement = Firebug.chrome.window.document.commandDispatcher.focusedElement;
+ var focusedPanel = Firebug.getElementPanel(focusedElement);
+ return focusedPanel && (focusedPanel.name == panel.name);
+ },
+
+ getPanelA11y: function(panel, create)
+ {
+ var a11yPanels, panelA11y;
+ if (!this.isEnabled() || !panel || !panel.name || !panel.context)
+ return false;
+
+ a11yPanels = panel.context.a11yPanels;
+ if (!a11yPanels)
+ a11yPanels = panel.context.a11yPanels = {};
+ panelA11y = a11yPanels[panel.name];
+ if (!panelA11y)
+ {
+ if (create)
+ panelA11y = a11yPanels[panel.name] = {};
+ else
+ return false;
+ }
+ return panelA11y;
+ },
+
+ // These utils are almost the same as their DOM namesakes,
+ // except that the routine skips invisible containers
+ // (rather than wasting time on their child nodes)
+ getPreviousByClass: function (node, className, downOnly, maxRoot)
+ {
+ if (!node)
+ return null;
+
+ function criteria(node) {
+ return node.nodeType == Node.ELEMENT_NODE && Css.hasClass(node, className);
+ }
+
+ for (var sib = node.previousSibling; sib; sib = sib.previousSibling)
+ {
+ if (!this.isVisibleByStyle(sib) || !Xml.isVisible(sib))
+ continue;
+
+ var prev = this.findPreviousUp(sib, criteria);
+ if (prev)
+ return prev;
+
+ if (criteria(sib))
+ return sib;
+ }
+ if (!downOnly)
+ {
+ var next = this.findPreviousUp(node, criteria);
+ if (next)
+ return next;
+ }
+ if (node.parentNode && node.parentNode != maxRoot)
+ {
+ if (criteria(node.parentNode))
+ return node.parentNode;
+ return this.getPreviousByClass(node.parentNode, className, true);
+ }
+ },
+
+ getNextByClass: function (node, className, upOnly, maxRoot)
+ {
+ if (!node)
+ return null;
+
+ function criteria(node) {
+ return node.nodeType == Node.ELEMENT_NODE && Css.hasClass(node, className);
+ }
+
+ if (!upOnly)
+ {
+ var next = this.findNextDown(node, criteria);
+ if (next)
+ return next;
+ }
+
+ for (var sib = node.nextSibling; sib; sib = sib.nextSibling)
+ {
+ if (!this.isVisibleByStyle(sib) || !Xml.isVisible(sib))
+ continue;
+ if (criteria(sib))
+ return sib;
+
+ var next = this.findNextDown(sib, criteria);
+ if (next)
+ return next;
+ }
+
+ if (node.parentNode && node.parentNode != maxRoot)
+ return this.getNextByClass(node.parentNode, className, true);
+ },
+
+ findNextDown: function(node, criteria)
+ {
+ if (!node)
+ return null;
+
+ for (var child = node.firstChild; child; child = child.nextSibling)
+ {
+ if (!this.isVisibleByStyle(child) || !Xml.isVisible(child))
+ continue;
+
+ if (criteria(child))
+ return child;
+
+ var next = this.findNextDown(child, criteria);
+ if (next)
+ return next;
+ }
+ },
+
+ findPreviousUp: function(node, criteria)
+ {
+ if (!node)
+ return null;
+
+ for (var child = node.lastChild; child; child = child.previousSibling)
+ {
+ if (!this.isVisibleByStyle(child) || !Xml.isVisible(child))
+ continue;
+
+ var next = this.findPreviousUp(child, criteria);
+ if (next)
+ return next;
+
+ if (criteria(child))
+ return child;
+ }
+ }
+});
+
+// ************************************************************************************************
+// Registration
+
+Firebug.registerModule(Firebug.A11yModel);
+
+return Firebug.A11yModel;
+
+// ************************************************************************************************
+});
diff --git a/content/firebug/branch.properties b/content/firebug/branch.properties
index 18bfc28..93206c3 100644
--- a/content/firebug/branch.properties
+++ b/content/firebug/branch.properties
@@ -1,8 +1,8 @@
-# DO NOT MERGE INTO TRUNK
-RELEASE=.1
-VERSION=1.12
-TRUNK=
-# To allow build.xml to drop the xpi directly into the svn working copy for getfirebug.com
-# the root of the fbug svn tree must be be at the same level as the root of getfirebug.com
-# Otherwise specify your own path.
+# DO NOT MERGE INTO TRUNK
+RELEASE=.2
+VERSION=1.12
+TRUNK=
+# To allow build.xml to drop the xpi directly into the svn working copy for getfirebug.com
+# the root of the fbug svn tree must be be at the same level as the root of getfirebug.com
+# Otherwise specify your own path.
GETFIREBUG=../../../../getfirebug.com/tags/production
\ No newline at end of file
diff --git a/content/firebug/bti/inProcess/browser.js b/content/firebug/bti/inProcess/browser.js
index 0a6386c..d623f40 100644
--- a/content/firebug/bti/inProcess/browser.js
+++ b/content/firebug/bti/inProcess/browser.js
@@ -1,892 +1,892 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Module
-
-define([
- "firebug/lib/lib",
- "firebug/lib/events",
- "firebug/chrome/firefox",
- "firebug/chrome/window",
- "arch/webApp",
- "firebug/lib/options",
- "firebug/chrome/tabWatcher",
-],
-function factoryBrowser(FBL, Events, Firefox, Win, WebApp, Options, TabWatcher) {
-
-// ********************************************************************************************* //
-// Browser
-
-/**
- * Proxy to a debuggable web browser. A browser may be remote and contain one or more
- * JavaScript execution contexts. Each JavaScript execution context may contain one or
- * more compilation units. A browser provides notification to registered listeners describing
- * events that occur in the browser.
- *
- * @constructor
- * @type Browser
- * @return a new Browser
- * @version 1.0
- */
-function Browser()
-{
- //this.contexts = []; // metadata instances
- this.activeContext = null;
- this.listeners = []; // array of Browser.listener objects
- this.tools = {}; // registry of known tools
- this.connected = false;
-}
-
-// ********************************************************************************************* //
-// API
-
-Browser.debug = {handlers: true};
-Browser.onDebug = function()
-{
- if (Browser.debug)
- throw new Error("Browser.debug set but no Brower.onDebug is defined");
-};
-
-Browser.unimplementedHandler = function()
-{
- if (Browser.debug && Browser.debug.handlers)
- Browser.onDebug("Browser.listener unimplemented event handler called ",
- {handler: this, args: arguments});
-};
-
-Browser.listener =
-{
- onBreak: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onConsoleDebug: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onConsoleError: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onConsoleInfo: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onConsoleLog: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onConsoleWarn: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onContextCreated: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onContextDestroyed: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onContextChanged: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onContextLoaded: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onInspectNode: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onResume: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onScript: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onSuspend: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onToggleBreakpoint: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onBreakpointError: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- },
-
- onDisconnect: function()
- {
- Browser.unimplementedHandler.apply(this, arguments);
- }
-};
-
-/**
- * Testing and sanity: clearAllBreakpoints
- */
-Browser.prototype.clearAllBreakpoints = function()
-{
- Firebug.Debugger.clearAllBreakpoints();
-};
-
-/**
- * Command: clearAnnotations
- */
-Browser.prototype.clearAnnotations = function()
-{
- // should trigger event onClearAnnotations
- Firebug.Activation.clearAnnotations();
-};
-
-Browser.prototype.getWebAppByWindow = function(win)
-{
- if (win && win.top)
- return new WebApp(win.top);
-};
-
-Browser.prototype.getContextByWebApp = function(webApp)
-{
- var topMost = webApp.getTopMostWindow();
- var context = TabWatcher.getContextByWindow(topMost);
- return context;
-
- /*for (var i = 0; i < this.contexts.length; i++)
- {
- var context = this.contexts[i];
- if (context.window === topMost)
- return context
- }*/
-};
-
-Browser.prototype.getContextByWindow = function(win)
-{
- var webApp = this.getWebAppByWindow(win);
- if (webApp)
- return this.getContextByWebApp(webApp);
-};
-
-/**
- * get local metadata for the remote WebApp if it exists
- * @return ToolInterface.WebAppContext or null if the webApp is not being debugged
- */
-Browser.prototype.setContextByWebApp = function(webApp, context)
-{
- var topMost = webApp.getTopMostWindow();
- if (context.window !== topMost)
- {
- FBTrace.sysout("Browser setContextByWebApp mismatched context ",
- {context: context, win: topMost});
- }
-
- // xxxHonza: possible mem leak, the context object isn't removed from the array sometimes
- // Do not use for now (this will be used for remoting).
- //this.contexts.push(context);
-};
-
-/**
- * Stop debugging a WebApp and cause the destruction of a ToolsInterface.WebAppContext
- * @param webAppContext metadata for the page that we are not going to debug any more
- * @param userCommands true if the user of this UI said to close (vs algorithm)
- */
-Browser.prototype.closeContext = function(context, userCommands)
-{
- if (context)
- {
- var topWindow = context.window;
-
- /*if (index === -1)
- {
- if (FBTrace.DBG_ERRORS)
- {
- var loc = Win.safeGetWindowLocation(topWindow);
- FBTrace.sysout("Browser.closeContext ERROR, no context matching " + loc);
- }
- }
- else
- {
- this.contexts.splice(index, 1);
- }*/
-
- // TEMP
- TabWatcher.unwatchWindow(topWindow);
-
- var browser = Win.getBrowserByWindow(topWindow);
- if (!browser)
- throw new Error("Browser.closeContext ERROR, no browser for top most window of context "+
- context.getName());
-
- delete browser.showFirebug;
-
- var shouldDispatch = TabWatcher.unwatchTopWindow(browser.contentWindow);
-
- if (shouldDispatch)
- {
- // TODO remove
- Events.dispatch(TabWatcher.fbListeners, "unwatchBrowser", [browser, null]);
- return true;
- }
- return false;
- }
-};
-
-/**
- * get local metadata for the remote WebApp or create one
- * @param webApp, ToolsInterface.WebApp representing top level window
- * @return ToolInterface.WebAppContext
- */
-Browser.prototype.getOrCreateContextByWebApp = function(webApp)
-{
- var context = this.getContextByWebApp(webApp);
- if (!context)
- {
- var topWindow = webApp.getTopMostWindow();
- var browser = Win.getBrowserByWindow(topWindow);
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("BTI.tabWatcher.watchBrowser for: " + (topWindow.location));
-
- // TEMP
- var context = TabWatcher.watchTopWindow(topWindow, browser.currentURI, true);
- this.setContextByWebApp(webApp, context);
-
- // TEMP; Watch also all iframes. Firebug has been initialized when the page is already
- // loaded and so, we can't rely on auto-registration done by FrameProgressListener.
- Win.iterateWindows(context.window, function (win)
- {
- TabWatcher.watchWindow(win, context, false);
- });
-
- browser.showFirebug = true;
-
- // TODO remove
- Events.dispatch(TabWatcher.fbListeners, "watchBrowser", [browser]);
- }
- return context;
-};
-
-/**
- * The WebApp on the selected tab of the selected window of this Browser
- * @return WebApp ( never null )
- */
-Browser.prototype.getCurrentSelectedWebApp = function()
-{
- // Remote version must seek selected XUL window first.
- var browser = Firefox.getCurrentBrowser();
- var webApp = new WebApp(browser.contentWindow);
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("BTI.WebApp ", {browser: browser, webApp: webApp});
- return webApp;
-};
-
-
-/**
- * Returns current status of tools
- *
- * @function
- * @returns an array of Tools, an object with {toolName: string, enabled: boolean,
- * enable:function(boolean, fnOfBoolean),}
- */
-Browser.prototype.getTools = function()
-{
- return [];
-};
-
-/**
- * Return the status of a tool
- * @param name, eg "console"
- * @returns an object with properties including toolName and enabled
- */
-Browser.prototype.getTool = function(name)
-{
- // This pollutes the FBTrace console too much.
- //if (FBTrace.DBG_ERRORS && !this.tools[name])
- // FBTrace.sysout("BTI.Browser.getTool; Unknown tool: " + name);
-
- return this.tools[name];
-};
-
-/**
- * Call on the backend
- */
-Browser.prototype.registerTool = function(tool)
-{
- var name = tool.getName();
- if (name)
- {
- if (FBTrace.DBG_ERRORS && this.tools[name])
- FBTrace.sysout("BTI.Browser.unregisterTool; Already registered tool: " + name);
-
- this.tools[name] = tool;
- }
-};
-
-Browser.prototype.unregisterTool = function(tool)
-{
- var name = tool.getName();
- if (name)
- {
- if (FBTrace.DBG_ERRORS && !this.tools[name])
- FBTrace.sysout("BTI.Browser.unregisterTool; Unknown tool: " + name);
- else
- delete this.tools[name];
- }
-};
-
-Browser.prototype.eachContext = function(fnOfContext)
-{
- try
- {
- return Firebug.TabWatcher.iterateContexts(fnOfContext);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("BTI.browser.eachContext; EXCEPTION " + e, e);
- }
-};
-
-/**
- * Returns the {@link BrowserContext} that currently has focus in the browser
- * or <code>null</code> if none.
- *
- * @function
- * @returns the {@link BrowserContext} that has focus or <code>null</code>
- */
-Browser.prototype.getFocusBrowserContext = function()
-{
- return this.activeContext;
-};
-
-/**
- * Returns whether this proxy is currently connected to the underlying browser it
- * represents.
- *
- * @function
- * @returns whether connected to the underlying browser
- */
-Browser.prototype.isConnected = function()
-{
- return this.connected;
-};
-
-/**
- * Registers a listener (function) for a specific type of event. Listener
- * call back functions are specified in {@link BrowserEventListener}.
- * <p>
- * The supported event types are:
- * <ul>
- * <li>onBreak</li>
- * <li>onConsoleDebug</li>
- * <li>onConsoleError</li>
- * <li>onConsoleInfo</li>
- * <li>onConsoleLog</li>
- * <li>onConsoleWarn</li>
- * <li>onContextCreated</li>
- * <li>onContextChanged</li>
- * <li>onContextDestroyed</li>
- * <li>onDisconnect</li>
- * <li>onInspectNode</li>
- * <li>onResume</li>
- * <li>onScript</li>
- * <li>onToggleBreakpoint</li>
- * </ul>
- * <ul>
- * <li>TODO: how can clients remove (deregister) listeners?</li>
- * </ul>
- * </p>
- * @function
- * @param eventType an event type ({@link String}) listed above
- * @param listener a listener (function) that handles the event as specified
- * by {@link BrowserEventListener}
- * @exception Error if an unsupported event type is specified
- */
-Browser.prototype.addListener = function(listener)
-{
- var list = this.listeners;
- var i = list.indexOf(listener);
- if (i === -1)
- list.push(listener);
- else
- FBTrace.sysout("BTI.Browser.addListener; ERROR The listener is already appended " +
- (listener.dispatchName ? listener.dispatchName : ""));
-};
-
-Browser.prototype.removeListener = function(listener)
-{
- var list = this.listeners;
- var i = list.indexOf(listener);
- if (i !== -1)
- list.splice(i, 1);
- else
- FBTrace.sysout("BTI.Browser.removeListener; ERROR Unknown listener " +
- (listener.dispatchName ? listener.dispatchName : ""));
-};
-
-/**
- * Among listeners, return the first truthy value of eventName(args) or false
- */
-Browser.prototype.dispatch = function(eventName, args)
-{
- try
- {
- return Events.dispatch2(this.listeners, eventName, args);
- }
- catch (exc)
- {
- FBTrace.sysout("BTI.Browser.dispatch; EXCEPTION " + exc, exc);
- }
-};
-
-/**
- * Disconnects this client from the browser it is associated with.
- *
- * @function
- */
-Browser.prototype.disconnect = function()
-{
- this.removeListener(Firebug);
- TabWatcher.destroy();
-
- // Remove the listener after the Firebug.TabWatcher.destroy() method is called, so
- // that the destroyContext event is properly dispatched to the Firebug object and
- // consequently to all registered modules.
- TabWatcher.removeListener(this);
-
- this._setConnected(false);
-};
-
-// ********************************************************************************************* //
-// Private, subclasses may call these functions
-
-/**
- * Command to resume/suspend backend
- */
-Browser.prototype.toggleResume = function(resume)
-{
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("BTI.toggleResume" + (Firebug.getSuspended() ? "OFF" : "ON") +
- " -> " + (!!resume ? "ON" : "OFF"));
-
- // This should be the only method to call suspend() and resume().
- // either a new context or revisiting an old one
- if (resume)
- {
- if (Firebug.getSuspended())
- {
- // This will cause onResumeFirebug for every context including this one.
- Firebug.resume();
- }
- }
- // this browser has no context
- else
- {
- Firebug.suspend();
- }
-},
-
-/**
- * Sets the browser context that has focus, possibly <code>null</code>.
- *
- * @function
- * @param context a {@link BrowserContext} or <code>null</code>
- */
-Browser.prototype._setFocusContext = function(context)
-{
- var prev = this.activeContext;
- this.activeContext = context;
- if (prev !== context)
- this.dispatch("onContextChanged", [prev, this.activeContext]);
-};
-
-/**
- * Sets whether this proxy is connected to its underlying browser.
- * Sends 'onDisconnect' notification when the browser becomes disconnected.
- *
- * @function
- * @param connected whether this proxy is connected to its underlying browser
- */
-Browser.prototype._setConnected = function(connected)
-{
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("BTI.Browser._setConnected " + connected + " this.connected " +
- this.connected);
-
- var wasConnected = this.connected;
- this.connected = connected;
-
- if (wasConnected && !connected)
- this.dispatch("onDisconnect", [this]);
- else if (!wasConnected && connected)
- this.dispatch("onConnect", [this]);
-};
-
-// ********************************************************************************************* //
-// Event Listener
-
-/**
- * Describes the event listener functions supported by a {@link Browser}.
- *
- * @constructor
- * @type BrowserEventListener
- * @return a new {@link BrowserEventListener}
- * @version 1.0
- */
-Browser.EventListener = {
-
- /**
- * Notification that execution has suspended in the specified
- * compilation unit.
- *
- * @function
- * @param compilationUnit the {@link CompilationUnit} execution has suspended in
- * @param lineNumber the line number execution has suspended at
- */
- onBreak: function(compilationUnit, lineNumber) {},
-
- /**
- * TODO:
- */
- onConsoleDebug: function() {},
-
- /**
- * TODO:
- */
- onConsoleError: function() {},
-
- /**
- * Notification the specified information messages have been logged.
- *
- * @function
- * @param browserContext the {@link BrowserContext} the messages were logged from
- * @param messages array of messages as {@link String}'s
- */
- onConsoleInfo: function(browserContext, messages) {},
-
- /**
- * Notification the specified messages have been logged.
- *
- * @function
- * @param browserContext the {@link BrowserContext} the messages were logged from
- * @param messages array of messages as {@link String}'s
- */
- onConsoleLog: function(browserContext, messages) {},
-
- /**
- * Notification the specified warning messages have been logged.
- *
- * @function
- * @param browserContext the {@link BrowserContext} the messages were logged from
- * @param messages array of messages as {@link String}'s
- */
- onConsoleWarn: function(browserContext, messages) {},
-
- /**
- * Notification the specified browser context has been created. This notification
- * is sent when a new context is created and before any scripts are compiled in
- * the new context.
- *
- * @function
- * @param browserContext the {@link BrowserContext} that was created
- */
- onContextCreated: function(browserContext) {},
-
- /**
- * Notification the focus browser context has been changed.
- *
- * @function
- * @param fromContext the previous {@link BrowserContext} that had focus or <code>null</code>
- * @param toContext the {@link BrowserContext} that now has focus or <code>null</code>
- */
- onContextChanged: function(fromContext, toContext) {},
-
- /**
- * Notification the specified browser context has been destroyed.
- *
- * @function
- * @param browserContext the {@link BrowserContext} that was destroyed
- */
- onContextDestroyed: function(browserContext) {},
-
- /**
- * Notification the specified browser context has completed loading.
- *
- * @function
- * @param browserContext the {@link BrowserContext} that has completed loading
- */
- onContextLoaded: function(browserContext) {},
-
- /**
- * Notification the connection to the remote browser has been closed.
- *
- * @function
- * @param browser the {@link Browser} that has been disconnected
- */
- onDisconnect: function(browser) {},
-
- /**
- * TODO:
- */
- onInspectNode: function() {},
-
- /**
- * Notification the specified execution context has resumed execution.
- *
- * @function
- * @param stack the {@link JavaScriptStack} that has resumed
- */
- onResume: function(stack) {},
-
- /**
- * Notification the specified compilation unit has been compiled (loaded)
- * in its browser context.
- *
- * @function
- * @param compilationUnit the {@link CompilationUnit} that has been compiled
- */
- onScript: function(compilationUnit) {},
-
- /**
- * Notification the specified breakpoint has been installed or cleared.
- * State can be retrieved from the breakpoint to determine whether the
- * breakpoint is installed or cleared.
- *
- * @function
- * @param breakpoint the {@link Breakpoint} that has been toggled
- */
- onToggleBreakpoint: function(breakpoint) {},
-
- /**
- * Notification the specified breakpoint has failed to install or clear.
- * State can be retrieved from the breakpoint to determine what failed.
- *
- * @function
- * @param breakpoint the {@link Breakpoint} that failed to install or clear
- */
- onBreakpointError: function(breakpoint) {}
-};
-
-// ********************************************************************************************* //
-
-/**
- * @object
- */
-var TabWatchListener =
-/** @lends TabWatchListener */
-{
- dispatchName: "TabWatchListener",
-
- // called after a context is created.
- initContext: function(context, persistedState)
- {
- context.panelName = context.browser.panelName;
- if (context.browser.sidePanelNames)
- context.sidePanelNames = context.browser.sidePanelNames;
-
- if (FBTrace.DBG_ERRORS && !context.sidePanelNames)
- FBTrace.sysout("BTI.firebug.initContext sidePanelNames:", context.sidePanelNames);
-
- Events.dispatch(Firebug.modules, "initContext", [context, persistedState]);
-
- // a newly created context becomes the default for the view
- Firebug.chrome.setFirebugContext(context);
-
- // a newly created context is active
- Firebug.connection.toggleResume(context);
- },
-
- // To be called from Firebug.TabWatcher only, see selectContext
- // null as context means we don't debug that browser
- showContext: function(browser, context)
- {
- // the context becomes the default for its view
- Firebug.chrome.setFirebugContext(context);
-
- // resume, after setting Firebug.currentContext
- // The condition is appended to solve issue 5916
- // 1) If a new tab is opened by clicking a link in an existing tab, HTTP request
- // is started in the existing tab.
- // 2) New tab is always set to about:blank at the beginning and there is no
- // context for it.
- // 3) Consequently the tab watcher calls 'showContext' with context == null
- // and Firebug.connection.toggleResume suspends Firebug for all existing
- // contexts including the one which started the new tab.
- // 4) The request displayed in the HTTP panel never finishes since even the
- // Net panel stops listening and calls unmonitorContext, see
- // {@Firebug.NetMonitor.onSuspendFirebug}
- //
- // So, do not resume/suspend for "about:blank" pages.
- if (browser.contentWindow.location.href != "about:blank")
- Firebug.connection.toggleResume(context);
-
- // tell modules we may show UI
- Events.dispatch(Firebug.modules, "showContext", [browser, context]);
-
- Firebug.showContext(browser, context);
- },
-
- // The context for this browser has been destroyed and removed.
- unwatchBrowser: function(browser)
- {
- Firebug.connection.toggleResume(false);
- },
-
- // Either a top level or a frame (interior window) for an existing context is seen by the TabWatcher.
- watchWindow: function(context, win)
- {
- for (var panelName in context.panelMap)
- {
- var panel = context.panelMap[panelName];
- panel.watchWindow(context, win);
- }
-
- Events.dispatch(Firebug.modules, "watchWindow", [context, win]);
- },
-
- unwatchWindow: function(context, win)
- {
- for (var panelName in context.panelMap)
- {
- var panel = context.panelMap[panelName];
- panel.unwatchWindow(context, win);
- }
-
- Events.dispatch(Firebug.modules, "unwatchWindow", [context, win]);
- },
-
- loadWindow: function(context, win)
- {
- for (var panelName in context.panelMap)
- {
- var panel = context.panelMap[panelName];
- panel.loadWindow(context, win);
- }
-
- Events.dispatch(Firebug.modules, "loadWindow", [context, win]);
- },
-
- loadedContext: function(context)
- {
- if (!context.browser.currentURI)
- FBTrace.sysout("BTI.firebug.loadedContext problem browser ", context.browser);
-
- Events.dispatch(Firebug.modules, "loadedContext", [context]);
- },
-
- destroyContext: function(context, persistedState, browser)
- {
- // then we are called just to clean up
- if (!context)
- return;
-
- Events.dispatch(Firebug.modules, "destroyContext", [context, persistedState]);
-
- // xxxHonza: Not sure if this code is correct. Test case: Firebug active, reload
- // 1) The Firebug.currentContext can be already set to the new one
- // 2) The Firebug.currentContext can be already null.
- // Calling clearPanels() is important, because it also clears the statusPath, which
- // contains references to panel objects (e.g. the page document in case of the HTML panel)
- if (Firebug.currentContext == context || !Firebug.currentContext)
- {
- // disconnect the to-be-destroyed panels from the panelBar
- Firebug.chrome.clearPanels();
- // Firebug.currentContext is about to be destroyed
- Firebug.chrome.setFirebugContext(null);
- }
-
- var browser = context.browser;
-
- // Persist remnants of the context for restoration if the user reloads
- try
- {
- browser.panelName = context.panelName;
- browser.sidePanelNames = context.sidePanelNames;
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("browser.destroyContext; " + e, e);
- }
-
- // Next time the context is deleted and removed from the Firebug.TabWatcher,
- // we clean up in unWatchBrowser.
- },
-
- onSourceFileCreated: function()
- {
- Events.dispatch(Firebug.modules, "onSourceFileCreated", arguments);
- },
-
- shouldCreateContext: function()
- {
- if (Events.dispatch2(Firebug.modules, "shouldCreateContext", arguments))
- return true;
- else
- return false;
- },
-
- shouldNotCreateContext: function()
- {
- if (Events.dispatch2(Firebug.modules, "shouldNotCreateContext", arguments))
- return true;
- else
- return false;
- },
-
- shouldShowContext: function()
- {
- if (Events.dispatch2(Firebug.modules, "shouldShowContext", arguments))
- return true;
- else
- return false;
- }
-};
-
-// ********************************************************************************************* //
-
-Browser.prototype.connect = function ()
-{
- // Events fired on browser are re-broadcasted to Firebug.modules
- Firebug.connection.addListener(Firebug);
-
- // Listen for preference changes. This way the options module is not dependent on tools
- // xxxHonza: can this be in Browser interface?
- Options.addListener(
- {
- updateOption: function(name, value)
- {
- Firebug.connection.dispatch("updateOption", [name, value]);
- }
- });
-
- TabWatcher.initialize();
- TabWatcher.addListener(TabWatchListener);
-
- this._setConnected(true);
-};
-
-// ********************************************************************************************* //
-
-return exports = Browser;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Module
+
+define([
+ "firebug/lib/lib",
+ "firebug/lib/events",
+ "firebug/chrome/firefox",
+ "firebug/chrome/window",
+ "arch/webApp",
+ "firebug/lib/options",
+ "firebug/chrome/tabWatcher",
+],
+function factoryBrowser(FBL, Events, Firefox, Win, WebApp, Options, TabWatcher) {
+
+// ********************************************************************************************* //
+// Browser
+
+/**
+ * Proxy to a debuggable web browser. A browser may be remote and contain one or more
+ * JavaScript execution contexts. Each JavaScript execution context may contain one or
+ * more compilation units. A browser provides notification to registered listeners describing
+ * events that occur in the browser.
+ *
+ * @constructor
+ * @type Browser
+ * @return a new Browser
+ * @version 1.0
+ */
+function Browser()
+{
+ //this.contexts = []; // metadata instances
+ this.activeContext = null;
+ this.listeners = []; // array of Browser.listener objects
+ this.tools = {}; // registry of known tools
+ this.connected = false;
+}
+
+// ********************************************************************************************* //
+// API
+
+Browser.debug = {handlers: true};
+Browser.onDebug = function()
+{
+ if (Browser.debug)
+ throw new Error("Browser.debug set but no Brower.onDebug is defined");
+};
+
+Browser.unimplementedHandler = function()
+{
+ if (Browser.debug && Browser.debug.handlers)
+ Browser.onDebug("Browser.listener unimplemented event handler called ",
+ {handler: this, args: arguments});
+};
+
+Browser.listener =
+{
+ onBreak: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onConsoleDebug: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onConsoleError: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onConsoleInfo: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onConsoleLog: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onConsoleWarn: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onContextCreated: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onContextDestroyed: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onContextChanged: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onContextLoaded: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onInspectNode: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onResume: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onScript: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onSuspend: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onToggleBreakpoint: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onBreakpointError: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ },
+
+ onDisconnect: function()
+ {
+ Browser.unimplementedHandler.apply(this, arguments);
+ }
+};
+
+/**
+ * Testing and sanity: clearAllBreakpoints
+ */
+Browser.prototype.clearAllBreakpoints = function()
+{
+ Firebug.Debugger.clearAllBreakpoints();
+};
+
+/**
+ * Command: clearAnnotations
+ */
+Browser.prototype.clearAnnotations = function()
+{
+ // should trigger event onClearAnnotations
+ Firebug.Activation.clearAnnotations();
+};
+
+Browser.prototype.getWebAppByWindow = function(win)
+{
+ if (win && win.top)
+ return new WebApp(win.top);
+};
+
+Browser.prototype.getContextByWebApp = function(webApp)
+{
+ var topMost = webApp.getTopMostWindow();
+ var context = TabWatcher.getContextByWindow(topMost);
+ return context;
+
+ /*for (var i = 0; i < this.contexts.length; i++)
+ {
+ var context = this.contexts[i];
+ if (context.window === topMost)
+ return context
+ }*/
+};
+
+Browser.prototype.getContextByWindow = function(win)
+{
+ var webApp = this.getWebAppByWindow(win);
+ if (webApp)
+ return this.getContextByWebApp(webApp);
+};
+
+/**
+ * get local metadata for the remote WebApp if it exists
+ * @return ToolInterface.WebAppContext or null if the webApp is not being debugged
+ */
+Browser.prototype.setContextByWebApp = function(webApp, context)
+{
+ var topMost = webApp.getTopMostWindow();
+ if (context.window !== topMost)
+ {
+ FBTrace.sysout("Browser setContextByWebApp mismatched context ",
+ {context: context, win: topMost});
+ }
+
+ // xxxHonza: possible mem leak, the context object isn't removed from the array sometimes
+ // Do not use for now (this will be used for remoting).
+ //this.contexts.push(context);
+};
+
+/**
+ * Stop debugging a WebApp and cause the destruction of a ToolsInterface.WebAppContext
+ * @param webAppContext metadata for the page that we are not going to debug any more
+ * @param userCommands true if the user of this UI said to close (vs algorithm)
+ */
+Browser.prototype.closeContext = function(context, userCommands)
+{
+ if (context)
+ {
+ var topWindow = context.window;
+
+ /*if (index === -1)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ var loc = Win.safeGetWindowLocation(topWindow);
+ FBTrace.sysout("Browser.closeContext ERROR, no context matching " + loc);
+ }
+ }
+ else
+ {
+ this.contexts.splice(index, 1);
+ }*/
+
+ // TEMP
+ TabWatcher.unwatchWindow(topWindow);
+
+ var browser = Win.getBrowserByWindow(topWindow);
+ if (!browser)
+ throw new Error("Browser.closeContext ERROR, no browser for top most window of context "+
+ context.getName());
+
+ delete browser.showFirebug;
+
+ var shouldDispatch = TabWatcher.unwatchTopWindow(browser.contentWindow);
+
+ if (shouldDispatch)
+ {
+ // TODO remove
+ Events.dispatch(TabWatcher.fbListeners, "unwatchBrowser", [browser, null]);
+ return true;
+ }
+ return false;
+ }
+};
+
+/**
+ * get local metadata for the remote WebApp or create one
+ * @param webApp, ToolsInterface.WebApp representing top level window
+ * @return ToolInterface.WebAppContext
+ */
+Browser.prototype.getOrCreateContextByWebApp = function(webApp)
+{
+ var context = this.getContextByWebApp(webApp);
+ if (!context)
+ {
+ var topWindow = webApp.getTopMostWindow();
+ var browser = Win.getBrowserByWindow(topWindow);
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("BTI.tabWatcher.watchBrowser for: " + (topWindow.location));
+
+ // TEMP
+ var context = TabWatcher.watchTopWindow(topWindow, browser.currentURI, true);
+ this.setContextByWebApp(webApp, context);
+
+ // TEMP; Watch also all iframes. Firebug has been initialized when the page is already
+ // loaded and so, we can't rely on auto-registration done by FrameProgressListener.
+ Win.iterateWindows(context.window, function (win)
+ {
+ TabWatcher.watchWindow(win, context, false);
+ });
+
+ browser.showFirebug = true;
+
+ // TODO remove
+ Events.dispatch(TabWatcher.fbListeners, "watchBrowser", [browser]);
+ }
+ return context;
+};
+
+/**
+ * The WebApp on the selected tab of the selected window of this Browser
+ * @return WebApp ( never null )
+ */
+Browser.prototype.getCurrentSelectedWebApp = function()
+{
+ // Remote version must seek selected XUL window first.
+ var browser = Firefox.getCurrentBrowser();
+ var webApp = new WebApp(browser.contentWindow);
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("BTI.WebApp ", {browser: browser, webApp: webApp});
+ return webApp;
+};
+
+
+/**
+ * Returns current status of tools
+ *
+ * @function
+ * @returns an array of Tools, an object with {toolName: string, enabled: boolean,
+ * enable:function(boolean, fnOfBoolean),}
+ */
+Browser.prototype.getTools = function()
+{
+ return [];
+};
+
+/**
+ * Return the status of a tool
+ * @param name, eg "console"
+ * @returns an object with properties including toolName and enabled
+ */
+Browser.prototype.getTool = function(name)
+{
+ // This pollutes the FBTrace console too much.
+ //if (FBTrace.DBG_ERRORS && !this.tools[name])
+ // FBTrace.sysout("BTI.Browser.getTool; Unknown tool: " + name);
+
+ return this.tools[name];
+};
+
+/**
+ * Call on the backend
+ */
+Browser.prototype.registerTool = function(tool)
+{
+ var name = tool.getName();
+ if (name)
+ {
+ if (FBTrace.DBG_ERRORS && this.tools[name])
+ FBTrace.sysout("BTI.Browser.unregisterTool; Already registered tool: " + name);
+
+ this.tools[name] = tool;
+ }
+};
+
+Browser.prototype.unregisterTool = function(tool)
+{
+ var name = tool.getName();
+ if (name)
+ {
+ if (FBTrace.DBG_ERRORS && !this.tools[name])
+ FBTrace.sysout("BTI.Browser.unregisterTool; Unknown tool: " + name);
+ else
+ delete this.tools[name];
+ }
+};
+
+Browser.prototype.eachContext = function(fnOfContext)
+{
+ try
+ {
+ return Firebug.TabWatcher.iterateContexts(fnOfContext);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("BTI.browser.eachContext; EXCEPTION " + e, e);
+ }
+};
+
+/**
+ * Returns the {@link BrowserContext} that currently has focus in the browser
+ * or <code>null</code> if none.
+ *
+ * @function
+ * @returns the {@link BrowserContext} that has focus or <code>null</code>
+ */
+Browser.prototype.getFocusBrowserContext = function()
+{
+ return this.activeContext;
+};
+
+/**
+ * Returns whether this proxy is currently connected to the underlying browser it
+ * represents.
+ *
+ * @function
+ * @returns whether connected to the underlying browser
+ */
+Browser.prototype.isConnected = function()
+{
+ return this.connected;
+};
+
+/**
+ * Registers a listener (function) for a specific type of event. Listener
+ * call back functions are specified in {@link BrowserEventListener}.
+ * <p>
+ * The supported event types are:
+ * <ul>
+ * <li>onBreak</li>
+ * <li>onConsoleDebug</li>
+ * <li>onConsoleError</li>
+ * <li>onConsoleInfo</li>
+ * <li>onConsoleLog</li>
+ * <li>onConsoleWarn</li>
+ * <li>onContextCreated</li>
+ * <li>onContextChanged</li>
+ * <li>onContextDestroyed</li>
+ * <li>onDisconnect</li>
+ * <li>onInspectNode</li>
+ * <li>onResume</li>
+ * <li>onScript</li>
+ * <li>onToggleBreakpoint</li>
+ * </ul>
+ * <ul>
+ * <li>TODO: how can clients remove (deregister) listeners?</li>
+ * </ul>
+ * </p>
+ * @function
+ * @param eventType an event type ({@link String}) listed above
+ * @param listener a listener (function) that handles the event as specified
+ * by {@link BrowserEventListener}
+ * @exception Error if an unsupported event type is specified
+ */
+Browser.prototype.addListener = function(listener)
+{
+ var list = this.listeners;
+ var i = list.indexOf(listener);
+ if (i === -1)
+ list.push(listener);
+ else
+ FBTrace.sysout("BTI.Browser.addListener; ERROR The listener is already appended " +
+ (listener.dispatchName ? listener.dispatchName : ""));
+};
+
+Browser.prototype.removeListener = function(listener)
+{
+ var list = this.listeners;
+ var i = list.indexOf(listener);
+ if (i !== -1)
+ list.splice(i, 1);
+ else
+ FBTrace.sysout("BTI.Browser.removeListener; ERROR Unknown listener " +
+ (listener.dispatchName ? listener.dispatchName : ""));
+};
+
+/**
+ * Among listeners, return the first truthy value of eventName(args) or false
+ */
+Browser.prototype.dispatch = function(eventName, args)
+{
+ try
+ {
+ return Events.dispatch2(this.listeners, eventName, args);
+ }
+ catch (exc)
+ {
+ FBTrace.sysout("BTI.Browser.dispatch; EXCEPTION " + exc, exc);
+ }
+};
+
+/**
+ * Disconnects this client from the browser it is associated with.
+ *
+ * @function
+ */
+Browser.prototype.disconnect = function()
+{
+ this.removeListener(Firebug);
+ TabWatcher.destroy();
+
+ // Remove the listener after the Firebug.TabWatcher.destroy() method is called, so
+ // that the destroyContext event is properly dispatched to the Firebug object and
+ // consequently to all registered modules.
+ TabWatcher.removeListener(this);
+
+ this._setConnected(false);
+};
+
+// ********************************************************************************************* //
+// Private, subclasses may call these functions
+
+/**
+ * Command to resume/suspend backend
+ */
+Browser.prototype.toggleResume = function(resume)
+{
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("BTI.toggleResume" + (Firebug.getSuspended() ? "OFF" : "ON") +
+ " -> " + (!!resume ? "ON" : "OFF"));
+
+ // This should be the only method to call suspend() and resume().
+ // either a new context or revisiting an old one
+ if (resume)
+ {
+ if (Firebug.getSuspended())
+ {
+ // This will cause onResumeFirebug for every context including this one.
+ Firebug.resume();
+ }
+ }
+ // this browser has no context
+ else
+ {
+ Firebug.suspend();
+ }
+},
+
+/**
+ * Sets the browser context that has focus, possibly <code>null</code>.
+ *
+ * @function
+ * @param context a {@link BrowserContext} or <code>null</code>
+ */
+Browser.prototype._setFocusContext = function(context)
+{
+ var prev = this.activeContext;
+ this.activeContext = context;
+ if (prev !== context)
+ this.dispatch("onContextChanged", [prev, this.activeContext]);
+};
+
+/**
+ * Sets whether this proxy is connected to its underlying browser.
+ * Sends 'onDisconnect' notification when the browser becomes disconnected.
+ *
+ * @function
+ * @param connected whether this proxy is connected to its underlying browser
+ */
+Browser.prototype._setConnected = function(connected)
+{
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("BTI.Browser._setConnected " + connected + " this.connected " +
+ this.connected);
+
+ var wasConnected = this.connected;
+ this.connected = connected;
+
+ if (wasConnected && !connected)
+ this.dispatch("onDisconnect", [this]);
+ else if (!wasConnected && connected)
+ this.dispatch("onConnect", [this]);
+};
+
+// ********************************************************************************************* //
+// Event Listener
+
+/**
+ * Describes the event listener functions supported by a {@link Browser}.
+ *
+ * @constructor
+ * @type BrowserEventListener
+ * @return a new {@link BrowserEventListener}
+ * @version 1.0
+ */
+Browser.EventListener = {
+
+ /**
+ * Notification that execution has suspended in the specified
+ * compilation unit.
+ *
+ * @function
+ * @param compilationUnit the {@link CompilationUnit} execution has suspended in
+ * @param lineNumber the line number execution has suspended at
+ */
+ onBreak: function(compilationUnit, lineNumber) {},
+
+ /**
+ * TODO:
+ */
+ onConsoleDebug: function() {},
+
+ /**
+ * TODO:
+ */
+ onConsoleError: function() {},
+
+ /**
+ * Notification the specified information messages have been logged.
+ *
+ * @function
+ * @param browserContext the {@link BrowserContext} the messages were logged from
+ * @param messages array of messages as {@link String}'s
+ */
+ onConsoleInfo: function(browserContext, messages) {},
+
+ /**
+ * Notification the specified messages have been logged.
+ *
+ * @function
+ * @param browserContext the {@link BrowserContext} the messages were logged from
+ * @param messages array of messages as {@link String}'s
+ */
+ onConsoleLog: function(browserContext, messages) {},
+
+ /**
+ * Notification the specified warning messages have been logged.
+ *
+ * @function
+ * @param browserContext the {@link BrowserContext} the messages were logged from
+ * @param messages array of messages as {@link String}'s
+ */
+ onConsoleWarn: function(browserContext, messages) {},
+
+ /**
+ * Notification the specified browser context has been created. This notification
+ * is sent when a new context is created and before any scripts are compiled in
+ * the new context.
+ *
+ * @function
+ * @param browserContext the {@link BrowserContext} that was created
+ */
+ onContextCreated: function(browserContext) {},
+
+ /**
+ * Notification the focus browser context has been changed.
+ *
+ * @function
+ * @param fromContext the previous {@link BrowserContext} that had focus or <code>null</code>
+ * @param toContext the {@link BrowserContext} that now has focus or <code>null</code>
+ */
+ onContextChanged: function(fromContext, toContext) {},
+
+ /**
+ * Notification the specified browser context has been destroyed.
+ *
+ * @function
+ * @param browserContext the {@link BrowserContext} that was destroyed
+ */
+ onContextDestroyed: function(browserContext) {},
+
+ /**
+ * Notification the specified browser context has completed loading.
+ *
+ * @function
+ * @param browserContext the {@link BrowserContext} that has completed loading
+ */
+ onContextLoaded: function(browserContext) {},
+
+ /**
+ * Notification the connection to the remote browser has been closed.
+ *
+ * @function
+ * @param browser the {@link Browser} that has been disconnected
+ */
+ onDisconnect: function(browser) {},
+
+ /**
+ * TODO:
+ */
+ onInspectNode: function() {},
+
+ /**
+ * Notification the specified execution context has resumed execution.
+ *
+ * @function
+ * @param stack the {@link JavaScriptStack} that has resumed
+ */
+ onResume: function(stack) {},
+
+ /**
+ * Notification the specified compilation unit has been compiled (loaded)
+ * in its browser context.
+ *
+ * @function
+ * @param compilationUnit the {@link CompilationUnit} that has been compiled
+ */
+ onScript: function(compilationUnit) {},
+
+ /**
+ * Notification the specified breakpoint has been installed or cleared.
+ * State can be retrieved from the breakpoint to determine whether the
+ * breakpoint is installed or cleared.
+ *
+ * @function
+ * @param breakpoint the {@link Breakpoint} that has been toggled
+ */
+ onToggleBreakpoint: function(breakpoint) {},
+
+ /**
+ * Notification the specified breakpoint has failed to install or clear.
+ * State can be retrieved from the breakpoint to determine what failed.
+ *
+ * @function
+ * @param breakpoint the {@link Breakpoint} that failed to install or clear
+ */
+ onBreakpointError: function(breakpoint) {}
+};
+
+// ********************************************************************************************* //
+
+/**
+ * @object
+ */
+var TabWatchListener =
+/** @lends TabWatchListener */
+{
+ dispatchName: "TabWatchListener",
+
+ // called after a context is created.
+ initContext: function(context, persistedState)
+ {
+ context.panelName = context.browser.panelName;
+ if (context.browser.sidePanelNames)
+ context.sidePanelNames = context.browser.sidePanelNames;
+
+ if (FBTrace.DBG_ERRORS && !context.sidePanelNames)
+ FBTrace.sysout("BTI.firebug.initContext sidePanelNames:", context.sidePanelNames);
+
+ Events.dispatch(Firebug.modules, "initContext", [context, persistedState]);
+
+ // a newly created context becomes the default for the view
+ Firebug.chrome.setFirebugContext(context);
+
+ // a newly created context is active
+ Firebug.connection.toggleResume(context);
+ },
+
+ // To be called from Firebug.TabWatcher only, see selectContext
+ // null as context means we don't debug that browser
+ showContext: function(browser, context)
+ {
+ // the context becomes the default for its view
+ Firebug.chrome.setFirebugContext(context);
+
+ // resume, after setting Firebug.currentContext
+ // The condition is appended to solve issue 5916
+ // 1) If a new tab is opened by clicking a link in an existing tab, HTTP request
+ // is started in the existing tab.
+ // 2) New tab is always set to about:blank at the beginning and there is no
+ // context for it.
+ // 3) Consequently the tab watcher calls 'showContext' with context == null
+ // and Firebug.connection.toggleResume suspends Firebug for all existing
+ // contexts including the one which started the new tab.
+ // 4) The request displayed in the HTTP panel never finishes since even the
+ // Net panel stops listening and calls unmonitorContext, see
+ // {@Firebug.NetMonitor.onSuspendFirebug}
+ //
+ // So, do not resume/suspend for "about:blank" pages.
+ if (browser.contentWindow.location.href != "about:blank")
+ Firebug.connection.toggleResume(context);
+
+ // tell modules we may show UI
+ Events.dispatch(Firebug.modules, "showContext", [browser, context]);
+
+ Firebug.showContext(browser, context);
+ },
+
+ // The context for this browser has been destroyed and removed.
+ unwatchBrowser: function(browser)
+ {
+ Firebug.connection.toggleResume(false);
+ },
+
+ // Either a top level or a frame (interior window) for an existing context is seen by the TabWatcher.
+ watchWindow: function(context, win)
+ {
+ for (var panelName in context.panelMap)
+ {
+ var panel = context.panelMap[panelName];
+ panel.watchWindow(context, win);
+ }
+
+ Events.dispatch(Firebug.modules, "watchWindow", [context, win]);
+ },
+
+ unwatchWindow: function(context, win)
+ {
+ for (var panelName in context.panelMap)
+ {
+ var panel = context.panelMap[panelName];
+ panel.unwatchWindow(context, win);
+ }
+
+ Events.dispatch(Firebug.modules, "unwatchWindow", [context, win]);
+ },
+
+ loadWindow: function(context, win)
+ {
+ for (var panelName in context.panelMap)
+ {
+ var panel = context.panelMap[panelName];
+ panel.loadWindow(context, win);
+ }
+
+ Events.dispatch(Firebug.modules, "loadWindow", [context, win]);
+ },
+
+ loadedContext: function(context)
+ {
+ if (!context.browser.currentURI)
+ FBTrace.sysout("BTI.firebug.loadedContext problem browser ", context.browser);
+
+ Events.dispatch(Firebug.modules, "loadedContext", [context]);
+ },
+
+ destroyContext: function(context, persistedState, browser)
+ {
+ // then we are called just to clean up
+ if (!context)
+ return;
+
+ Events.dispatch(Firebug.modules, "destroyContext", [context, persistedState]);
+
+ // xxxHonza: Not sure if this code is correct. Test case: Firebug active, reload
+ // 1) The Firebug.currentContext can be already set to the new one
+ // 2) The Firebug.currentContext can be already null.
+ // Calling clearPanels() is important, because it also clears the statusPath, which
+ // contains references to panel objects (e.g. the page document in case of the HTML panel)
+ if (Firebug.currentContext == context || !Firebug.currentContext)
+ {
+ // disconnect the to-be-destroyed panels from the panelBar
+ Firebug.chrome.clearPanels();
+ // Firebug.currentContext is about to be destroyed
+ Firebug.chrome.setFirebugContext(null);
+ }
+
+ var browser = context.browser;
+
+ // Persist remnants of the context for restoration if the user reloads
+ try
+ {
+ browser.panelName = context.panelName;
+ browser.sidePanelNames = context.sidePanelNames;
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("browser.destroyContext; " + e, e);
+ }
+
+ // Next time the context is deleted and removed from the Firebug.TabWatcher,
+ // we clean up in unWatchBrowser.
+ },
+
+ onSourceFileCreated: function()
+ {
+ Events.dispatch(Firebug.modules, "onSourceFileCreated", arguments);
+ },
+
+ shouldCreateContext: function()
+ {
+ if (Events.dispatch2(Firebug.modules, "shouldCreateContext", arguments))
+ return true;
+ else
+ return false;
+ },
+
+ shouldNotCreateContext: function()
+ {
+ if (Events.dispatch2(Firebug.modules, "shouldNotCreateContext", arguments))
+ return true;
+ else
+ return false;
+ },
+
+ shouldShowContext: function()
+ {
+ if (Events.dispatch2(Firebug.modules, "shouldShowContext", arguments))
+ return true;
+ else
+ return false;
+ }
+};
+
+// ********************************************************************************************* //
+
+Browser.prototype.connect = function ()
+{
+ // Events fired on browser are re-broadcasted to Firebug.modules
+ Firebug.connection.addListener(Firebug);
+
+ // Listen for preference changes. This way the options module is not dependent on tools
+ // xxxHonza: can this be in Browser interface?
+ Options.addListener(
+ {
+ updateOption: function(name, value)
+ {
+ Firebug.connection.dispatch("updateOption", [name, value]);
+ }
+ });
+
+ TabWatcher.initialize();
+ TabWatcher.addListener(TabWatchListener);
+
+ this._setConnected(true);
+};
+
+// ********************************************************************************************* //
+
+return exports = Browser;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/bti/inProcess/compilationunit.js b/content/firebug/bti/inProcess/compilationunit.js
index 810c85e..75088a3 100644
--- a/content/firebug/bti/inProcess/compilationunit.js
+++ b/content/firebug/bti/inProcess/compilationunit.js
@@ -1,221 +1,221 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Module
-
-var EXPORTED_SYMBOLS = ["CompilationUnit"];
-
-define([], function(){
-
-// ********************************************************************************************* //
-// Compilation Unit
-
-/**
- * Describes a compilation unit in a browser context. A compilation unit
- * may originate from a JavaScript source file or a script element in HTML.
- *
- * @constructor
- * @param url compilation unit URL - a {@link String} or <code>null</code> if none
- * @param context the {@link BrowserContext} this compilation unit is contained in
- * @type CompilationUnit
- * @return a new CompilationUnit
- * @version 1.0
- */
-function CompilationUnit(url, context)
-{
- this.url = url;
- this.context = context;
- this.breakpoints = [];
- this.numberOfLines = 0;
- this.kind = CompilationUnit.SCRIPT_TAG;
-
- // Compatibility with SourceLink. There are places where 'href' field is expected.
- // xxxHonza: should be investigated in 1.9
- this.href = url;
-}
-
-/**
- * Kinds of Compilation Units
- */
-CompilationUnit.SCRIPT_TAG = "script_tag";
-CompilationUnit.EVAL = "eval";
-CompilationUnit.BROWSER_GENERATED = "event";
-
-// ********************************************************************************************* //
-// API
-
-/**
- * Returns the Kind of Compilation Unit
- * <p>
- * This function does not require communication with
- * the browser.
- * </p>
- */
-CompilationUnit.prototype.getKind = function getKind()
-{
- return this.kind;
-};
-
-CompilationUnit.prototype.isExecutableLine = function isExecutableLine(lineNo)
-{
- // TODO no sourceFiles!
- return this.sourceFile.isExecutableLine(lineNo);
-};
-
-/**
- * Returns the URL of this compilation unit.
- * <p>
- * This function does not require communication with
- * the browser.
- * </p>
- *
- * @function
- * @returns compilation unit identifier as a {@link String}
- */
-CompilationUnit.prototype.getURL = function()
-{
- return this.url;
-};
-
-/**
- * Returns the browser context this compilation unit was compiled in.
- * <p>
- * This function does not require communication with
- * the browser.
- * </p>
- *
- * @function
- * @returns a {@link BrowserContext}
- */
-CompilationUnit.prototype.getBrowserContext = function()
-{
- return this.context;
-};
-
-/**
- * Returns the breakpoints that have been created in this compilation unit and
- * have not been cleared.
- * <p>
- * This function does not require communication with
- * the browser.
- * </p>
- * @function
- * @returns an array of {@link Breakpoint}'s
- */
-CompilationUnit.prototype.getBreakpoints = function()
-{
- // Return a copy of the breakpoints, so the master copy is not corrupted.
- var bps = [];
- for ( var i = 0; i < this.breakpoints.length; i++)
- bps.push(this.breakpoints[i]);
- return bps;
-};
-
-CompilationUnit.prototype.eachBreakpoint = function( fnOfLineProps )
-{
- Firebug.Debugger.fbs.enumerateBreakpoints(this.getURL(), { call:
- function(url, line, props, scripts)
- {
- fnOfLineProps(line, props);
- }
- });
-};
-
-/**
- * Requests the source of this compilation unit asynchronously. Source will be
- * retrieved from the browser and reported back to the listener function when available.
- * The handler may be called before or after this function returns.
- * <p>
- * TODO: what if the compilation unit no longer exists in the browser
- * </p>
- * @function
- * @param firstLineNumber requested line number starting point; < 1 means from lowest line number
- * @param lastLineNumber request last line number; < 1 means up to maximum line
- * @param listener a listener (function) that accepts (compilationUnit, firstLineNumber,
- * lastLineNumber, array of source code lines)
- */
-CompilationUnit.prototype.getSourceLines = function(firstLine, lastLine, listener)
-{
- // xxxHonza: Do not cache the source lines in the compilation unit.
- // The Script panel doesn't display the whole script if it's downloaded
- // partially and the following caching happens sooner.
- // Or tabCache.storeSplitLines should trigger an update.
- //if (!this.lines)
-
- // TODO remove - a comment from xxxJJB.
- this.lines = this.sourceFile.loadScriptLines(this.context);
-
- this.numberOfLines = (this.lines ? this.lines.length : 0);
- listener(this, 1, this.numberOfLines, this.lines);
-};
-
-/**
- * Request the current estimated number of source lines in the entire compilationUnit
- */
-CompilationUnit.prototype.getNumberOfLines = function()
-{
- return this.numberOfLines;
-};
-
-/**
- * Requests to create a breakpoint in this compilation unit asynchronously. A breakpoint
- * creation request will be sent to the browser and an <code>onToggleBreakpoint</code>
- * event will be sent by the browser when the breakpoint is installed.
- * <p>
- * <ul>
- * <li>TODO: onToggleBreakpoint event is not spec'd - is this the intended use?</li>
- * <li>TODO: line number out of range</li>
- * <li>TODO: compilation unit no longer exists in the browser</li>
- * <li>TODO: breakpoint already set</li>
- * <li>TODO: is line number 0 or 1 based</li>
- * </ul>
- * </p>
- * @function
- * @param lineNumber the source line number in this compilation unit to set the breakpoint on
- * @return the {@link Breakpoint} that was created
- */
-
-// ********************************************************************************************* //
-// Private
-
-/**
- * Adds the specified breakpoint to this compilation unit's collection of breakpoints.
- * Implementation should call this method when a breakpoint is created in a compilation
- * unit.
- *
- * @param breakpoint the breakpoint that was created
- * @function
- */
-CompilationUnit.prototype._addBreakpoint = function(breakpoint)
-{
- this.breakpoints.push(breakpoint);
-};
-
-/**
- * Removes the specified breakpoint from this compilation unit's collection of breakpoints.
- * Implementation should call this method when a breakpoint is cleared from a compilation
- * unit.
- *
- * @param breakpoint the breakpoint that was removed
- * @function
- */
-CompilationUnit.prototype._removeBreakpoint = function(breakpoint)
-{
- for ( var i = 0; i < this.breakpoints.length; i++)
- {
- if (this.breakpoints[i] === breakpoint)
- {
- this.breakpoints.splice(i, 1);
- return;
- }
- }
-};
-
-// ********************************************************************************************* //
-// CommonJS
-
-exports = CompilationUnit;
-return CompilationUnit;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Module
+
+var EXPORTED_SYMBOLS = ["CompilationUnit"];
+
+define([], function(){
+
+// ********************************************************************************************* //
+// Compilation Unit
+
+/**
+ * Describes a compilation unit in a browser context. A compilation unit
+ * may originate from a JavaScript source file or a script element in HTML.
+ *
+ * @constructor
+ * @param url compilation unit URL - a {@link String} or <code>null</code> if none
+ * @param context the {@link BrowserContext} this compilation unit is contained in
+ * @type CompilationUnit
+ * @return a new CompilationUnit
+ * @version 1.0
+ */
+function CompilationUnit(url, context)
+{
+ this.url = url;
+ this.context = context;
+ this.breakpoints = [];
+ this.numberOfLines = 0;
+ this.kind = CompilationUnit.SCRIPT_TAG;
+
+ // Compatibility with SourceLink. There are places where 'href' field is expected.
+ // xxxHonza: should be investigated in 1.9
+ this.href = url;
+}
+
+/**
+ * Kinds of Compilation Units
+ */
+CompilationUnit.SCRIPT_TAG = "script_tag";
+CompilationUnit.EVAL = "eval";
+CompilationUnit.BROWSER_GENERATED = "event";
+
+// ********************************************************************************************* //
+// API
+
+/**
+ * Returns the Kind of Compilation Unit
+ * <p>
+ * This function does not require communication with
+ * the browser.
+ * </p>
+ */
+CompilationUnit.prototype.getKind = function getKind()
+{
+ return this.kind;
+};
+
+CompilationUnit.prototype.isExecutableLine = function isExecutableLine(lineNo)
+{
+ // TODO no sourceFiles!
+ return this.sourceFile.isExecutableLine(lineNo);
+};
+
+/**
+ * Returns the URL of this compilation unit.
+ * <p>
+ * This function does not require communication with
+ * the browser.
+ * </p>
+ *
+ * @function
+ * @returns compilation unit identifier as a {@link String}
+ */
+CompilationUnit.prototype.getURL = function()
+{
+ return this.url;
+};
+
+/**
+ * Returns the browser context this compilation unit was compiled in.
+ * <p>
+ * This function does not require communication with
+ * the browser.
+ * </p>
+ *
+ * @function
+ * @returns a {@link BrowserContext}
+ */
+CompilationUnit.prototype.getBrowserContext = function()
+{
+ return this.context;
+};
+
+/**
+ * Returns the breakpoints that have been created in this compilation unit and
+ * have not been cleared.
+ * <p>
+ * This function does not require communication with
+ * the browser.
+ * </p>
+ * @function
+ * @returns an array of {@link Breakpoint}'s
+ */
+CompilationUnit.prototype.getBreakpoints = function()
+{
+ // Return a copy of the breakpoints, so the master copy is not corrupted.
+ var bps = [];
+ for ( var i = 0; i < this.breakpoints.length; i++)
+ bps.push(this.breakpoints[i]);
+ return bps;
+};
+
+CompilationUnit.prototype.eachBreakpoint = function( fnOfLineProps )
+{
+ Firebug.Debugger.fbs.enumerateBreakpoints(this.getURL(), { call:
+ function(url, line, props, scripts)
+ {
+ fnOfLineProps(line, props);
+ }
+ });
+};
+
+/**
+ * Requests the source of this compilation unit asynchronously. Source will be
+ * retrieved from the browser and reported back to the listener function when available.
+ * The handler may be called before or after this function returns.
+ * <p>
+ * TODO: what if the compilation unit no longer exists in the browser
+ * </p>
+ * @function
+ * @param firstLineNumber requested line number starting point; < 1 means from lowest line number
+ * @param lastLineNumber request last line number; < 1 means up to maximum line
+ * @param listener a listener (function) that accepts (compilationUnit, firstLineNumber,
+ * lastLineNumber, array of source code lines)
+ */
+CompilationUnit.prototype.getSourceLines = function(firstLine, lastLine, listener)
+{
+ // xxxHonza: Do not cache the source lines in the compilation unit.
+ // The Script panel doesn't display the whole script if it's downloaded
+ // partially and the following caching happens sooner.
+ // Or tabCache.storeSplitLines should trigger an update.
+ //if (!this.lines)
+
+ // TODO remove - a comment from xxxJJB.
+ this.lines = this.sourceFile.loadScriptLines(this.context);
+
+ this.numberOfLines = (this.lines ? this.lines.length : 0);
+ listener(this, 1, this.numberOfLines, this.lines);
+};
+
+/**
+ * Request the current estimated number of source lines in the entire compilationUnit
+ */
+CompilationUnit.prototype.getNumberOfLines = function()
+{
+ return this.numberOfLines;
+};
+
+/**
+ * Requests to create a breakpoint in this compilation unit asynchronously. A breakpoint
+ * creation request will be sent to the browser and an <code>onToggleBreakpoint</code>
+ * event will be sent by the browser when the breakpoint is installed.
+ * <p>
+ * <ul>
+ * <li>TODO: onToggleBreakpoint event is not spec'd - is this the intended use?</li>
+ * <li>TODO: line number out of range</li>
+ * <li>TODO: compilation unit no longer exists in the browser</li>
+ * <li>TODO: breakpoint already set</li>
+ * <li>TODO: is line number 0 or 1 based</li>
+ * </ul>
+ * </p>
+ * @function
+ * @param lineNumber the source line number in this compilation unit to set the breakpoint on
+ * @return the {@link Breakpoint} that was created
+ */
+
+// ********************************************************************************************* //
+// Private
+
+/**
+ * Adds the specified breakpoint to this compilation unit's collection of breakpoints.
+ * Implementation should call this method when a breakpoint is created in a compilation
+ * unit.
+ *
+ * @param breakpoint the breakpoint that was created
+ * @function
+ */
+CompilationUnit.prototype._addBreakpoint = function(breakpoint)
+{
+ this.breakpoints.push(breakpoint);
+};
+
+/**
+ * Removes the specified breakpoint from this compilation unit's collection of breakpoints.
+ * Implementation should call this method when a breakpoint is cleared from a compilation
+ * unit.
+ *
+ * @param breakpoint the breakpoint that was removed
+ * @function
+ */
+CompilationUnit.prototype._removeBreakpoint = function(breakpoint)
+{
+ for ( var i = 0; i < this.breakpoints.length; i++)
+ {
+ if (this.breakpoints[i] === breakpoint)
+ {
+ this.breakpoints.splice(i, 1);
+ return;
+ }
+ }
+};
+
+// ********************************************************************************************* //
+// CommonJS
+
+exports = CompilationUnit;
+return CompilationUnit;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/bti/inProcess/javascripttool.js b/content/firebug/bti/inProcess/javascripttool.js
index fcacf95..58185f6 100644
--- a/content/firebug/bti/inProcess/javascripttool.js
+++ b/content/firebug/bti/inProcess/javascripttool.js
@@ -1,244 +1,244 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Module
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/tool",
- "firebug/js/debugger", // TODO firefox/jsdebugger
- "arch/compilationunit"
-],
-function initializeJavaScriptTool(Obj, Firebug, Tool, JSDebugger, CompilationUnit) {
-
-// ********************************************************************************************* //
-// Implement JavaScript tool for Firefox inProcess
-
-var JavaScriptTool = Obj.extend(Firebug.Module,
-{
- dispatchName: "JavaScriptTool",
-});
-
-/**
- * A Turn is an call stack for an active being-handled event, similar to a thread.
- * Currently it only makes sense, when we have stopped the server.
- * Currently only one or zero Turn objects can exist ("single-threaded").
- */
-JavaScriptTool.Turn =
-{
-};
-
-JavaScriptTool.breakOnNext = function(context, enable)
-{
- if (enable)
- JSDebugger.suspend(context);
- else
- JSDebugger.unSuspend(context);
-};
-
-JavaScriptTool.setBreakpoint = function(context, url, lineNumber)
-{
- // TODO we should be sending URLs over, not compilation units
- var compilationUnit = context.getCompilationUnit(url);
- JSDebugger.setBreakpoint(compilationUnit, lineNumber);
-};
-
-JavaScriptTool.clearBreakpoint = function(context, url, lineNumber)
-{
- // This is more correct, but bypasses Debugger
- JSDebugger.fbs.clearBreakpoint(url, lineNumber);
-};
-
-JavaScriptTool.enableBreakpoint = function(context, url, lineNumber)
-{
- JSDebugger.fbs.enableBreakpoint(url, lineNumber);
-};
-
-JavaScriptTool.disableBreakpoint = function(context, url, lineNumber)
-{
- JSDebugger.fbs.disableBreakpoint(url, lineNumber);
-};
-
-JavaScriptTool.isBreakpointDisabled = function(context, url, lineNumber)
-{
- return JSDebugger.fbs.isBreakpointDisabled(url, lineNumber);
-};
-
-JavaScriptTool.getBreakpointCondition = function(context, url, lineNumber)
-{
- return JSDebugger.fbs.getBreakpointCondition(url, lineNumber);
-};
-
-// ********************************************************************************************* //
-// These functions should be on the stack instead.
-
-JavaScriptTool.rerun = function(context)
-{
- JSDebugger.rerun(context);
-};
-
-JavaScriptTool.resumeJavaScript = function(context)
-{
- JSDebugger.resume(context);
-};
-
-JavaScriptTool.stepOver = function(context)
-{
- JSDebugger.stepOver(context);
-};
-
-JavaScriptTool.stepInto = function(context)
-{
- JSDebugger.stepInto(context);
-};
-
-JavaScriptTool.stepOut = function(context)
-{
- JSDebugger.stepOut(context);
-};
-
-JavaScriptTool.runUntil = function(compilationUnit, lineNumber)
-{
- JSDebugger.runUntil(compilationUnit.getBrowserContext(), compilationUnit,
- lineNumber, JSDebugger);
-};
-
-/**
- * Browser connection
- */
-JavaScriptTool.onConnect = function(connection)
-{
- if (!Firebug.connection.getTool("script"))
- {
- // this is the script tool
- JavaScriptTool.asTool = new Tool("script"),
- connection.registerTool(JavaScriptTool.asTool);
- }
- else
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("JavaScriptTool onConnect ERROR script tool already registered");
- }
-};
-
-JavaScriptTool.onDisconnect = function(connection)
-{
- if (JavaScriptTool.asTool)
- connection.unregisterTool(JavaScriptTool.asTool);
-};
-
-/**
- * Command the backend to enable JS
- */
-JavaScriptTool.setActivation = function(enable)
-{
- if (FBTrace.DBG_CONSOLE || FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("ScriptPanel.onActivationChanged; " + enable);
-
- if (enable)
- JSDebugger.addObserver(this);
- else
- JSDebugger.removeObserver(this);
-};
-
-/**
- * A previously enabled tool becomes active and sends us an event.
- */
-JavaScriptTool.onActivateTool = function(toolname, active)
-{
- if (FBTrace.DBG_ACTIVATION)
- {
- FBTrace.sysout("JavaScriptTool.onActivateTool "+toolname+" = "+active+" asTool "+
- JavaScriptTool.asTool);
- }
-
- if (toolname === "script")
- {
- Firebug.ScriptPanel.prototype.onJavaScriptDebugging(active);
- Firebug.connection.eachContext(function refresh(context)
- {
- context.invalidatePanels('script');
- });
- JavaScriptTool.asTool.setActive(active);
- Firebug.connection.dispatch("onDebuggerEnabled", [active]);
- }
-},
-
-/**
- * @param context context of the newest frame, where the breakpoint hit
- * @param frame newest StackFrame (crossbrowser) eg where the break point hit
- */
-JavaScriptTool.onStartDebugging = function(context, frame)
-{
- Firebug.selectContext(context);
- var panel = Firebug.chrome.selectPanel("script");
- if (!panel)
- {
- // Bail out if there is no UI
- JavaScriptTool.resumeJavaScript(context);
- return;
- }
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("javascripttool currentFrame ", frame);
-
- JavaScriptTool.Turn.currentFrame = frame;
- panel.onStartDebugging(frame);
-};
-
-JavaScriptTool.onStopDebugging = function(context)
-{
- var panel = context.getPanel("script", true);
- // Then we are looking at the Script panel.
- if (panel && panel === Firebug.chrome.getSelectedPanel())
- {
- // unhighlight and remove toolbar-status line
- panel.showNoStackFrame();
- }
-
- if (panel)
- panel.onStopDebugging();
-
- delete JavaScriptTool.Turn.currentFrame;
-};
-
-JavaScriptTool.onCompilationUnit = function(context, url, kind)
-{
- var compilationUnit = new CompilationUnit(url, context);
-
- compilationUnit.kind = kind;
-
- context.compilationUnits[url] = compilationUnit;
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- {
- FBTrace.sysout("JavaScriptTool.onCompilationUnit "+url+" added to "+context.getName(),
- compilationUnit);
- }
-};
-
-JavaScriptTool.initialize = function()
-{
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("JavaScriptTool initialize");
-
- // This is how we get events.
- Firebug.connection.addListener(JavaScriptTool);
-};
-
-JavaScriptTool.shutdown = function()
-{
- // This is how we get events.
- Firebug.connection.removeListener(JavaScriptTool);
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(JavaScriptTool);
-
-return JavaScriptTool;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Module
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/tool",
+ "firebug/js/debugger", // TODO firefox/jsdebugger
+ "arch/compilationunit"
+],
+function initializeJavaScriptTool(Obj, Firebug, Tool, JSDebugger, CompilationUnit) {
+
+// ********************************************************************************************* //
+// Implement JavaScript tool for Firefox inProcess
+
+var JavaScriptTool = Obj.extend(Firebug.Module,
+{
+ dispatchName: "JavaScriptTool",
+});
+
+/**
+ * A Turn is an call stack for an active being-handled event, similar to a thread.
+ * Currently it only makes sense, when we have stopped the server.
+ * Currently only one or zero Turn objects can exist ("single-threaded").
+ */
+JavaScriptTool.Turn =
+{
+};
+
+JavaScriptTool.breakOnNext = function(context, enable)
+{
+ if (enable)
+ JSDebugger.suspend(context);
+ else
+ JSDebugger.unSuspend(context);
+};
+
+JavaScriptTool.setBreakpoint = function(context, url, lineNumber)
+{
+ // TODO we should be sending URLs over, not compilation units
+ var compilationUnit = context.getCompilationUnit(url);
+ JSDebugger.setBreakpoint(compilationUnit, lineNumber);
+};
+
+JavaScriptTool.clearBreakpoint = function(context, url, lineNumber)
+{
+ // This is more correct, but bypasses Debugger
+ JSDebugger.fbs.clearBreakpoint(url, lineNumber);
+};
+
+JavaScriptTool.enableBreakpoint = function(context, url, lineNumber)
+{
+ JSDebugger.fbs.enableBreakpoint(url, lineNumber);
+};
+
+JavaScriptTool.disableBreakpoint = function(context, url, lineNumber)
+{
+ JSDebugger.fbs.disableBreakpoint(url, lineNumber);
+};
+
+JavaScriptTool.isBreakpointDisabled = function(context, url, lineNumber)
+{
+ return JSDebugger.fbs.isBreakpointDisabled(url, lineNumber);
+};
+
+JavaScriptTool.getBreakpointCondition = function(context, url, lineNumber)
+{
+ return JSDebugger.fbs.getBreakpointCondition(url, lineNumber);
+};
+
+// ********************************************************************************************* //
+// These functions should be on the stack instead.
+
+JavaScriptTool.rerun = function(context)
+{
+ JSDebugger.rerun(context);
+};
+
+JavaScriptTool.resumeJavaScript = function(context)
+{
+ JSDebugger.resume(context);
+};
+
+JavaScriptTool.stepOver = function(context)
+{
+ JSDebugger.stepOver(context);
+};
+
+JavaScriptTool.stepInto = function(context)
+{
+ JSDebugger.stepInto(context);
+};
+
+JavaScriptTool.stepOut = function(context)
+{
+ JSDebugger.stepOut(context);
+};
+
+JavaScriptTool.runUntil = function(compilationUnit, lineNumber)
+{
+ JSDebugger.runUntil(compilationUnit.getBrowserContext(), compilationUnit,
+ lineNumber, JSDebugger);
+};
+
+/**
+ * Browser connection
+ */
+JavaScriptTool.onConnect = function(connection)
+{
+ if (!Firebug.connection.getTool("script"))
+ {
+ // this is the script tool
+ JavaScriptTool.asTool = new Tool("script"),
+ connection.registerTool(JavaScriptTool.asTool);
+ }
+ else
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("JavaScriptTool onConnect ERROR script tool already registered");
+ }
+};
+
+JavaScriptTool.onDisconnect = function(connection)
+{
+ if (JavaScriptTool.asTool)
+ connection.unregisterTool(JavaScriptTool.asTool);
+};
+
+/**
+ * Command the backend to enable JS
+ */
+JavaScriptTool.setActivation = function(enable)
+{
+ if (FBTrace.DBG_CONSOLE || FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("ScriptPanel.onActivationChanged; " + enable);
+
+ if (enable)
+ JSDebugger.addObserver(this);
+ else
+ JSDebugger.removeObserver(this);
+};
+
+/**
+ * A previously enabled tool becomes active and sends us an event.
+ */
+JavaScriptTool.onActivateTool = function(toolname, active)
+{
+ if (FBTrace.DBG_ACTIVATION)
+ {
+ FBTrace.sysout("JavaScriptTool.onActivateTool "+toolname+" = "+active+" asTool "+
+ JavaScriptTool.asTool);
+ }
+
+ if (toolname === "script")
+ {
+ Firebug.ScriptPanel.prototype.onJavaScriptDebugging(active);
+ Firebug.connection.eachContext(function refresh(context)
+ {
+ context.invalidatePanels('script');
+ });
+ JavaScriptTool.asTool.setActive(active);
+ Firebug.connection.dispatch("onDebuggerEnabled", [active]);
+ }
+},
+
+/**
+ * @param context context of the newest frame, where the breakpoint hit
+ * @param frame newest StackFrame (crossbrowser) eg where the break point hit
+ */
+JavaScriptTool.onStartDebugging = function(context, frame)
+{
+ Firebug.selectContext(context);
+ var panel = Firebug.chrome.selectPanel("script");
+ if (!panel)
+ {
+ // Bail out if there is no UI
+ JavaScriptTool.resumeJavaScript(context);
+ return;
+ }
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("javascripttool currentFrame ", frame);
+
+ JavaScriptTool.Turn.currentFrame = frame;
+ panel.onStartDebugging(frame);
+};
+
+JavaScriptTool.onStopDebugging = function(context)
+{
+ var panel = context.getPanel("script", true);
+ // Then we are looking at the Script panel.
+ if (panel && panel === Firebug.chrome.getSelectedPanel())
+ {
+ // unhighlight and remove toolbar-status line
+ panel.showNoStackFrame();
+ }
+
+ if (panel)
+ panel.onStopDebugging();
+
+ delete JavaScriptTool.Turn.currentFrame;
+};
+
+JavaScriptTool.onCompilationUnit = function(context, url, kind)
+{
+ var compilationUnit = new CompilationUnit(url, context);
+
+ compilationUnit.kind = kind;
+
+ context.compilationUnits[url] = compilationUnit;
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ {
+ FBTrace.sysout("JavaScriptTool.onCompilationUnit "+url+" added to "+context.getName(),
+ compilationUnit);
+ }
+};
+
+JavaScriptTool.initialize = function()
+{
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("JavaScriptTool initialize");
+
+ // This is how we get events.
+ Firebug.connection.addListener(JavaScriptTool);
+};
+
+JavaScriptTool.shutdown = function()
+{
+ // This is how we get events.
+ Firebug.connection.removeListener(JavaScriptTool);
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(JavaScriptTool);
+
+return JavaScriptTool;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/bti/inProcess/webApp.js b/content/firebug/bti/inProcess/webApp.js
index 407b1d3..60b6137 100644
--- a/content/firebug/bti/inProcess/webApp.js
+++ b/content/firebug/bti/inProcess/webApp.js
@@ -1,34 +1,34 @@
-/* See license.txt for terms of usage */
-
-define([
-],
-function webAppFactory() {
-
-// ********************************************************************************************* //
-
-// WebApp: unit of related browsing contexts.
-// http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#groupings-of-browsing-contexts
-var WebApp = function(win)
-{
- this.topMostWindow = win;
-};
-
-/**
- * The Window of the top-level browsing context, aka 'top'
- * http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#top-level-browsing-context
- */
-WebApp.prototype =
-{
- getTopMostWindow: function()
- {
- return this.topMostWindow;
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return WebApp;
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+define([
+],
+function webAppFactory() {
+
+// ********************************************************************************************* //
+
+// WebApp: unit of related browsing contexts.
+// http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#groupings-of-browsing-contexts
+var WebApp = function(win)
+{
+ this.topMostWindow = win;
+};
+
+/**
+ * The Window of the top-level browsing context, aka 'top'
+ * http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#top-level-browsing-context
+ */
+WebApp.prototype =
+{
+ getTopMostWindow: function()
+ {
+ return this.topMostWindow;
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return WebApp;
+
+// ********************************************************************************************* //
});
\ No newline at end of file
diff --git a/content/firebug/chrome/activation.js b/content/firebug/chrome/activation.js
index 7ddf5d9..e77104e 100644
--- a/content/firebug/chrome/activation.js
+++ b/content/firebug/chrome/activation.js
@@ -1,394 +1,394 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/locale",
- "firebug/lib/url",
- "firebug/chrome/tabWatcher",
- "firebug/chrome/annotations",
- "firebug/chrome/firefox",
-],
-function(Obj, Firebug, Locale, Url, TabWatcher, Annotations, Firefox) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-
-/**
- * @module Implements Firebug activation logic.
- *
- * 1) Part of the logic is based on annotation service (see components/firebug-annotations.js)
- * in order to remember whether Firebug is activated for given site or not.
- * If there is "firebugged.showFirebug" annotation for a given site Firbug is activated.
- * If there is "firebugged.closed" annotation for a given site Firbug is not activated.
- *
- * 2) Other part is based on extensions.firebug.allPagesActivation option. This option
- * can be set to the following values:
- * none: The option isn't used (default value)
- * on: Firebug is activated for all URLs.
- * off: Firebug is never activated.
- *
- * This logic has higher priority over the URL annotations.
- * If "off" options is selected, all existing URL annotations are removed.
- */
-Firebug.Activation = Obj.extend(Firebug.Module,
-{
- dispatchName: "activation",
-
- // called once
- initializeUI: function()
- {
- Firebug.Module.initializeUI.apply(this, arguments);
-
- TabWatcher.initializeUI();
- TabWatcher.addListener(this);
- },
-
- shutdown: function()
- {
- Firebug.Module.shutdown.apply(this, arguments);
-
- TabWatcher.removeListener(this);
- },
-
- // true if the Places annotation the URI "firebugged"
- shouldCreateContext: function(browser, url, userCommands)
- {
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("shouldCreateContext allPagesActivation " +
- Firebug.allPagesActivation);
-
- if (Firebug.allPagesActivation == "on")
- return true;
-
- // if about:blank gets through, issue 1483 fails
- if (Firebug.filterSystemURLs && Url.isSystemURL(url))
- return false;
-
- if (userCommands)
- return true;
-
- // document.open on a firebugged page
- if (browser && browser.showFirebug && url.substr(0, 8) === "wyciwyg:")
- return true;
-
- try
- {
- var uri = this.convertToURIKey(url, Firebug.activateSameOrigin);
- if (!uri)
- return false;
-
- var hasAnnotation = Annotations.pageHasAnnotation(uri);
-
- if (FBTrace.DBG_ACTIVATION)
- {
- FBTrace.sysout("shouldCreateContext hasAnnotation " + hasAnnotation +
- " for " + uri.spec + " in " +
- (browser ? browser.contentWindow.location : "no browser") +
- " using activateSameOrigin: " + Firebug.activateSameOrigin);
- }
-
- // Annotated, so return the value.
- if (hasAnnotation)
- return this.checkAnnotation(browser, uri);
-
- // Then Firebug.TabWatcher found a connection.
- if (browser.FirebugLink)
- {
- var dst = browser.FirebugLink.dst;
- var dstURI = this.convertToURIKey(dst.spec, Firebug.activateSameOrigin);
-
- if (FBTrace.DBG_ACTIVATION)
- {
- FBTrace.sysout("shouldCreateContext found FirebugLink pointing to " +
- dstURI.spec, browser.FirebugLink);
- }
-
- // And it matches us now.
- if (dstURI && dstURI.equals(uri))
- {
- var srcURI = this.convertToURIKey(browser.FirebugLink.src.spec,
- Firebug.activateSameOrigin);
-
- if (srcURI)
- {
- if (FBTrace.DBG_ACTIVATION)
- {
- FBTrace.sysout("shouldCreateContext found FirebugLink pointing from " +
- srcURI.spec, browser.FirebugLink);
- }
-
- // And it's on the same domain.
- if (srcURI.schemeIs("file") || (dstURI.host == srcURI.host))
- {
- hasAnnotation = Annotations.pageHasAnnotation(srcURI);
- // And the source page was annotated.
- if (hasAnnotation)
- {
- var srcShow = this.checkAnnotation(browser, srcURI);
- // And the source annotation said show it.
- if (srcShow)
- {
- // So we show dst as well.
- this.watchBrowser(browser);
- }
- return srcShow;
- }
- }
- }
- }
- else
- {
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("shouldCreateContext FirebugLink does not match " +
- uri.spec, browser.FirebugLink);
- }
- }
- else if (browser.contentWindow.opener)
- {
- var openerContext = Firebug.TabWatcher.getContextByWindow(
- browser.contentWindow.opener);
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("shouldCreateContext opener found, has " +
- (openerContext ? "a " : "no ") + " context: " +
- browser.contentWindow.opener.location);
-
- if (openerContext)
- {
- // popup windows of Firebugged windows are Firebugged
- return true;
- }
- }
-
- // don't createContext
- return false;
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("pageHasAnnotation FAILS for url: " + url + " which gave uri " +
- (uri ? uri.spec : "null"), exc);
- }
- }
- },
-
- shouldShowContext: function(context)
- {
- return this.shouldCreateContext(context.browser, context.getWindowLocation().toString());
- },
-
- // Firebug is opened in the browser.
- watchBrowser: function(browser)
- {
- try
- {
- var annotation = "firebugged.showFirebug";
- this.setPageAnnotation(browser.currentURI.spec, annotation);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("activation.watchBrowser; EXCEPTION " + e, e);
- }
- },
-
- // Firebug closes in the browser.
- unwatchBrowser: function(browser, userCommands)
- {
- var uri = browser.currentURI.spec;
- // Then mark to not open virally.
- if (userCommands)
- {
- this.setPageAnnotation(uri, "firebugged.closed");
- }
- else
- {
- // unmark this URI
- this.removePageAnnotation(uri);
- }
- },
-
- clearAnnotations: function()
- {
- Annotations.clear();
- Annotations.flush();
-
- Firebug.connection.dispatch("onClearAnnotations", []);
- },
-
- // Process the URL to canonicalize it. This needs not be reversible.
- convertToURIKey: function(url, sameOrigin)
- {
- // Remove the fragment. It shouldn't have any impact on the activation.
- url = url.replace(/#.*/, "");
-
- var uri = Url.makeURI(Url.normalizeURL(url));
-
- if (Firebug.filterSystemURLs && Url.isSystemURL(url))
- return uri;
-
- // avoid exceptions
- if (url == "about:blank")
- return uri;
-
- if (uri && sameOrigin)
- {
- try
- {
- // Returns the string before the path (such as "scheme://user:password@host:port").
- var prePath = uri.prePath;
- var shortURI = Url.makeURI(prePath);
- if (!shortURI)
- return uri;
-
- // Annoying "about" URIs throw if .host is accessed
- if (shortURI.scheme === "about")
- return shortURI;
-
- if (shortURI.scheme === "file")
- return shortURI;
-
- return shortURI;
-
- // This makes a.co.uk -> co.uk, mail.cn.mozilla.com -> cn.mozilla.com and
- // blog.getfirebug.com -> getfirebug.com, which is wrong. See issue 2202.)
- /*
- var host = shortURI.host;
- if (host)
- {
- // Slice the subdomain (if any) from the URL so that activateSameOrigin works
- // for domains (including TLD domains). So we want:
- // 1) www.google.com -> google.com
- // 2) www.stuff.co.nz -> stuff.co.nz
- // 3) getfirebug.com -> getfirebug.com
- var levels = host.split('.');
- if (levels.length > 2)
- levels = levels.slice(1);
- shortURI.host = levels.join('.');
- return shortURI;
- }
- */
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("activation.convertToURIKey returning full URI, " +
- "activateSameOrigin FAILS for shortURI " + shortURI + " because: " + exc,
- exc);
-
- return uri;
- }
- }
-
- return uri;
- },
-
- checkAnnotation: function(browser, uri)
- {
- var annotation = Annotations.getPageAnnotation(uri);
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("shouldCreateContext read back annotation " + annotation +
- " for uri " + uri.spec);
-
- // Then the user closed Firebug on this page last time.
- if ((Firebug.allPagesActivation != "on") && (annotation.indexOf("closed") > 0))
- {
- // annotated as 'closed', don't create
- return false;
- }
- else
- {
- // annotated, createContext
- return true;
- }
- },
-
- setPageAnnotation: function(currentURI, annotation)
- {
- var uri = this.convertToURIKey(currentURI, Firebug.activateSameOrigin);
- if (uri)
- Annotations.setPageAnnotation(uri, annotation);
-
- if (FBTrace.DBG_ACTIVATION || FBTrace.DBG_ANNOTATION)
- FBTrace.sysout("setPageAnnotation currentURI " + currentURI + " becomes URI key "+
- (uri ? uri.spec : "ERROR"));
-
- if (Firebug.activateSameOrigin)
- {
- uri = this.convertToURIKey(currentURI, false);
- if (uri)
- Annotations.setPageAnnotation(uri, annotation);
-
- if (FBTrace.DBG_ACTIVATION || FBTrace.DBG_ANNOTATION)
- FBTrace.sysout("setPageAnnotation with activeSameOrigin currentURI " +
- currentURI.spec + " becomes URI key " + (uri ? uri.spec : "ERROR"));
- }
- },
-
- removePageAnnotation: function(currentURI)
- {
- var uri = this.convertToURIKey(currentURI, Firebug.activateSameOrigin);
- if (uri)
- Annotations.removePageAnnotation(uri);
-
- if (Firebug.activateSameOrigin)
- {
- uri = this.convertToURIKey(currentURI, false);
- if (uri)
- Annotations.removePageAnnotation(uri);
- }
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("Firebug.Activation.unwatchBrowser untagged "+uri.spec);
- },
-
- // Stops at the first fn(uri) that returns a true value.
- iterateAnnotations: function(fn)
- {
- var annotations = Annotations.getAnnotations(this.annotationName);
- for (var uri in annotations)
- {
- var rc = fn(uri, annotations[uri]);
- if (rc)
- return rc;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Options
-
- /**
- * After all options (and annotations) have been reset make sure to set
- * a new annotation for the current URL.
- * The annotation will ensure Firebug to be visible after refresh.
- */
- afterResetAllOptions: function()
- {
- // Only reset the annotation if Firebug is active for the current URL.
- if (!Firebug.currentContext)
- return;
-
- var currentURI = Firefox.getCurrentURI();
- var annotation = "firebugged.showFirebug";
-
- this.setPageAnnotation(currentURI.spec, annotation);
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.Activation);
-
-return Firebug.Activation;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/locale",
+ "firebug/lib/url",
+ "firebug/chrome/tabWatcher",
+ "firebug/chrome/annotations",
+ "firebug/chrome/firefox",
+],
+function(Obj, Firebug, Locale, Url, TabWatcher, Annotations, Firefox) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+
+/**
+ * @module Implements Firebug activation logic.
+ *
+ * 1) Part of the logic is based on annotation service (see components/firebug-annotations.js)
+ * in order to remember whether Firebug is activated for given site or not.
+ * If there is "firebugged.showFirebug" annotation for a given site Firbug is activated.
+ * If there is "firebugged.closed" annotation for a given site Firbug is not activated.
+ *
+ * 2) Other part is based on extensions.firebug.allPagesActivation option. This option
+ * can be set to the following values:
+ * none: The option isn't used (default value)
+ * on: Firebug is activated for all URLs.
+ * off: Firebug is never activated.
+ *
+ * This logic has higher priority over the URL annotations.
+ * If "off" options is selected, all existing URL annotations are removed.
+ */
+Firebug.Activation = Obj.extend(Firebug.Module,
+{
+ dispatchName: "activation",
+
+ // called once
+ initializeUI: function()
+ {
+ Firebug.Module.initializeUI.apply(this, arguments);
+
+ TabWatcher.initializeUI();
+ TabWatcher.addListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.Module.shutdown.apply(this, arguments);
+
+ TabWatcher.removeListener(this);
+ },
+
+ // true if the Places annotation the URI "firebugged"
+ shouldCreateContext: function(browser, url, userCommands)
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("shouldCreateContext allPagesActivation " +
+ Firebug.allPagesActivation);
+
+ if (Firebug.allPagesActivation == "on")
+ return true;
+
+ // if about:blank gets through, issue 1483 fails
+ if (Firebug.filterSystemURLs && Url.isSystemURL(url))
+ return false;
+
+ if (userCommands)
+ return true;
+
+ // document.open on a firebugged page
+ if (browser && browser.showFirebug && url.substr(0, 8) === "wyciwyg:")
+ return true;
+
+ try
+ {
+ var uri = this.convertToURIKey(url, Firebug.activateSameOrigin);
+ if (!uri)
+ return false;
+
+ var hasAnnotation = Annotations.pageHasAnnotation(uri);
+
+ if (FBTrace.DBG_ACTIVATION)
+ {
+ FBTrace.sysout("shouldCreateContext hasAnnotation " + hasAnnotation +
+ " for " + uri.spec + " in " +
+ (browser ? browser.contentWindow.location : "no browser") +
+ " using activateSameOrigin: " + Firebug.activateSameOrigin);
+ }
+
+ // Annotated, so return the value.
+ if (hasAnnotation)
+ return this.checkAnnotation(browser, uri);
+
+ // Then Firebug.TabWatcher found a connection.
+ if (browser.FirebugLink)
+ {
+ var dst = browser.FirebugLink.dst;
+ var dstURI = this.convertToURIKey(dst.spec, Firebug.activateSameOrigin);
+
+ if (FBTrace.DBG_ACTIVATION)
+ {
+ FBTrace.sysout("shouldCreateContext found FirebugLink pointing to " +
+ dstURI.spec, browser.FirebugLink);
+ }
+
+ // And it matches us now.
+ if (dstURI && dstURI.equals(uri))
+ {
+ var srcURI = this.convertToURIKey(browser.FirebugLink.src.spec,
+ Firebug.activateSameOrigin);
+
+ if (srcURI)
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ {
+ FBTrace.sysout("shouldCreateContext found FirebugLink pointing from " +
+ srcURI.spec, browser.FirebugLink);
+ }
+
+ // And it's on the same domain.
+ if (srcURI.schemeIs("file") || (dstURI.host == srcURI.host))
+ {
+ hasAnnotation = Annotations.pageHasAnnotation(srcURI);
+ // And the source page was annotated.
+ if (hasAnnotation)
+ {
+ var srcShow = this.checkAnnotation(browser, srcURI);
+ // And the source annotation said show it.
+ if (srcShow)
+ {
+ // So we show dst as well.
+ this.watchBrowser(browser);
+ }
+ return srcShow;
+ }
+ }
+ }
+ }
+ else
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("shouldCreateContext FirebugLink does not match " +
+ uri.spec, browser.FirebugLink);
+ }
+ }
+ else if (browser.contentWindow.opener)
+ {
+ var openerContext = Firebug.TabWatcher.getContextByWindow(
+ browser.contentWindow.opener);
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("shouldCreateContext opener found, has " +
+ (openerContext ? "a " : "no ") + " context: " +
+ browser.contentWindow.opener.location);
+
+ if (openerContext)
+ {
+ // popup windows of Firebugged windows are Firebugged
+ return true;
+ }
+ }
+
+ // don't createContext
+ return false;
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("pageHasAnnotation FAILS for url: " + url + " which gave uri " +
+ (uri ? uri.spec : "null"), exc);
+ }
+ }
+ },
+
+ shouldShowContext: function(context)
+ {
+ return this.shouldCreateContext(context.browser, context.getWindowLocation().toString());
+ },
+
+ // Firebug is opened in the browser.
+ watchBrowser: function(browser)
+ {
+ try
+ {
+ var annotation = "firebugged.showFirebug";
+ this.setPageAnnotation(browser.currentURI.spec, annotation);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("activation.watchBrowser; EXCEPTION " + e, e);
+ }
+ },
+
+ // Firebug closes in the browser.
+ unwatchBrowser: function(browser, userCommands)
+ {
+ var uri = browser.currentURI.spec;
+ // Then mark to not open virally.
+ if (userCommands)
+ {
+ this.setPageAnnotation(uri, "firebugged.closed");
+ }
+ else
+ {
+ // unmark this URI
+ this.removePageAnnotation(uri);
+ }
+ },
+
+ clearAnnotations: function()
+ {
+ Annotations.clear();
+ Annotations.flush();
+
+ Firebug.connection.dispatch("onClearAnnotations", []);
+ },
+
+ // Process the URL to canonicalize it. This needs not be reversible.
+ convertToURIKey: function(url, sameOrigin)
+ {
+ // Remove the fragment. It shouldn't have any impact on the activation.
+ url = url.replace(/#.*/, "");
+
+ var uri = Url.makeURI(Url.normalizeURL(url));
+
+ if (Firebug.filterSystemURLs && Url.isSystemURL(url))
+ return uri;
+
+ // avoid exceptions
+ if (url == "about:blank")
+ return uri;
+
+ if (uri && sameOrigin)
+ {
+ try
+ {
+ // Returns the string before the path (such as "scheme://user:password@host:port").
+ var prePath = uri.prePath;
+ var shortURI = Url.makeURI(prePath);
+ if (!shortURI)
+ return uri;
+
+ // Annoying "about" URIs throw if .host is accessed
+ if (shortURI.scheme === "about")
+ return shortURI;
+
+ if (shortURI.scheme === "file")
+ return shortURI;
+
+ return shortURI;
+
+ // This makes a.co.uk -> co.uk, mail.cn.mozilla.com -> cn.mozilla.com and
+ // blog.getfirebug.com -> getfirebug.com, which is wrong. See issue 2202.)
+ /*
+ var host = shortURI.host;
+ if (host)
+ {
+ // Slice the subdomain (if any) from the URL so that activateSameOrigin works
+ // for domains (including TLD domains). So we want:
+ // 1) www.google.com -> google.com
+ // 2) www.stuff.co.nz -> stuff.co.nz
+ // 3) getfirebug.com -> getfirebug.com
+ var levels = host.split('.');
+ if (levels.length > 2)
+ levels = levels.slice(1);
+ shortURI.host = levels.join('.');
+ return shortURI;
+ }
+ */
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("activation.convertToURIKey returning full URI, " +
+ "activateSameOrigin FAILS for shortURI " + shortURI + " because: " + exc,
+ exc);
+
+ return uri;
+ }
+ }
+
+ return uri;
+ },
+
+ checkAnnotation: function(browser, uri)
+ {
+ var annotation = Annotations.getPageAnnotation(uri);
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("shouldCreateContext read back annotation " + annotation +
+ " for uri " + uri.spec);
+
+ // Then the user closed Firebug on this page last time.
+ if ((Firebug.allPagesActivation != "on") && (annotation.indexOf("closed") > 0))
+ {
+ // annotated as 'closed', don't create
+ return false;
+ }
+ else
+ {
+ // annotated, createContext
+ return true;
+ }
+ },
+
+ setPageAnnotation: function(currentURI, annotation)
+ {
+ var uri = this.convertToURIKey(currentURI, Firebug.activateSameOrigin);
+ if (uri)
+ Annotations.setPageAnnotation(uri, annotation);
+
+ if (FBTrace.DBG_ACTIVATION || FBTrace.DBG_ANNOTATION)
+ FBTrace.sysout("setPageAnnotation currentURI " + currentURI + " becomes URI key "+
+ (uri ? uri.spec : "ERROR"));
+
+ if (Firebug.activateSameOrigin)
+ {
+ uri = this.convertToURIKey(currentURI, false);
+ if (uri)
+ Annotations.setPageAnnotation(uri, annotation);
+
+ if (FBTrace.DBG_ACTIVATION || FBTrace.DBG_ANNOTATION)
+ FBTrace.sysout("setPageAnnotation with activeSameOrigin currentURI " +
+ currentURI.spec + " becomes URI key " + (uri ? uri.spec : "ERROR"));
+ }
+ },
+
+ removePageAnnotation: function(currentURI)
+ {
+ var uri = this.convertToURIKey(currentURI, Firebug.activateSameOrigin);
+ if (uri)
+ Annotations.removePageAnnotation(uri);
+
+ if (Firebug.activateSameOrigin)
+ {
+ uri = this.convertToURIKey(currentURI, false);
+ if (uri)
+ Annotations.removePageAnnotation(uri);
+ }
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("Firebug.Activation.unwatchBrowser untagged "+uri.spec);
+ },
+
+ // Stops at the first fn(uri) that returns a true value.
+ iterateAnnotations: function(fn)
+ {
+ var annotations = Annotations.getAnnotations(this.annotationName);
+ for (var uri in annotations)
+ {
+ var rc = fn(uri, annotations[uri]);
+ if (rc)
+ return rc;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Options
+
+ /**
+ * After all options (and annotations) have been reset make sure to set
+ * a new annotation for the current URL.
+ * The annotation will ensure Firebug to be visible after refresh.
+ */
+ afterResetAllOptions: function()
+ {
+ // Only reset the annotation if Firebug is active for the current URL.
+ if (!Firebug.currentContext)
+ return;
+
+ var currentURI = Firefox.getCurrentURI();
+ var annotation = "firebugged.showFirebug";
+
+ this.setPageAnnotation(currentURI.spec, annotation);
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.Activation);
+
+return Firebug.Activation;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/annotations.js b/content/firebug/chrome/annotations.js
index 052f3d0..f41f70b 100644
--- a/content/firebug/chrome/annotations.js
+++ b/content/firebug/chrome/annotations.js
@@ -1,227 +1,227 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/object",
- "firebug/chrome/privacy",
-],
-function(FBTrace, Obj, Privacy) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-var dirService = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties);
-
-// ********************************************************************************************* //
-// Annotation
-
-/**
- * @class Represents an internal Firebug annotation service. This service is used to
- * annotate sites with an info whether Firebug should be activated for them or not.
- */
-var Annotations = Obj.extend(Firebug.Module,
-{
- annotations: [],
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- initialize: function()
- {
- // Get annotation file stored within the profile directory.
- this.file = dirService.get("ProfD", Ci.nsIFile);
- this.file.append("firebug");
- this.file.append("annotations.json");
-
- // Load annotations.
- this.loadAnnotations();
-
- Privacy.addListener(this);
- },
-
- shutdown: function()
- {
- this.flush();
-
- Privacy.removeListener(this);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Public Methods
-
- setPageAnnotation: function(uri, value)
- {
- if (FBTrace.DBG_ANNOTATIONS)
- FBTrace.sysout("Annotations.setPageAnnotation; " + value + ", " + uri.spec);
-
- this.annotations[uri.spec] = value;
- },
-
- getPageAnnotation: function(uri)
- {
- return this.annotations[uri.spec];
- },
-
- pageHasAnnotation: function(uri)
- {
- return this.annotations[uri.spec] ? true : false;
- },
-
- removePageAnnotation: function(uri)
- {
- if (FBTrace.DBG_ANNOTATIONS)
- FBTrace.sysout("Annotations.removePageAnnotation; " + uri.spec);
-
- delete this.annotations[uri.spec];
- },
-
- getAnnotations: function()
- {
- return this.annotations;
- },
-
- clear: function()
- {
- this.annotations = [];
- },
-
- flush: function(force)
- {
- // Do not store anything if private-browsing mode is on.
- if (!force && Privacy.isPrivateBrowsing())
- return;
-
- try
- {
- // Initialize output stream.
- var outputStream = Cc["@mozilla.org/network/file-output-stream;1"]
- .createInstance(Ci.nsIFileOutputStream);
- // write, create, truncate
- // see https://developer.mozilla.org/en-US/docs/PR_Open#Parameters
- outputStream.init(this.file, 0x02 | 0x08 | 0x20, 0666, 0);
-
- // Convert data to JSON.
- var arr = [];
- for (var uri in this.annotations)
- {
- arr.push({
- uri: uri,
- value: this.annotations[uri]
- });
- }
-
- var jsonString = JSON.stringify(arr);
-
- // Store annotations
- outputStream.write(jsonString, jsonString.length);
- outputStream.close();
-
- if (FBTrace.DBG_ANNOTATIONS)
- FBTrace.sysout("Annotations.loadAnnotations; Annotations stored to " +
- this.file.path, jsonString);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS || FBTrace.DBG_ANNOTATIONS)
- FBTrace.sysout("Annotations.flush; EXCEPTION", err);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Internals
-
- // Persistence
- loadAnnotations: function()
- {
- try
- {
- this.clear();
-
- if (!this.file.exists())
- {
- this.file.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
- if (FBTrace.DBG_ANNOTATIONS)
- FBTrace.sysout("Annotations.loadAnnotations; Annotations file created " +
- this.file.path);
- return;
- }
-
- var inputStream = Cc["@mozilla.org/network/file-input-stream;1"]
- .createInstance(Ci.nsIFileInputStream);
- var cstream = Cc["@mozilla.org/intl/converter-input-stream;1"]
- .createInstance(Ci.nsIConverterInputStream);
-
- // loadAnnotations input stream
- // read, create
- inputStream.init(this.file, 0x01 | 0x08, 0666, 0);
- cstream.init(inputStream, "UTF-8", 0, 0);
-
- // Load annotations
- var json = "";
- var data = {};
- while (cstream.readString(-1, data) != 0)
- json += data.value;
-
- if (!json.length)
- return;
-
- var arr = JSON.parse(json);
- if (!arr)
- return;
-
- // convert to map for faster lookup
- for (var i=0; i<arr.length; i++)
- this.annotations[arr[i].uri] = arr[i].value;
-
- if (FBTrace.DBG_ANNOTATIONS)
- FBTrace.sysout("Annotations.loadAnnotations; Annotations loaded from " +
- this.file.path, arr);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS || FBTrace.DBG_ANNOTATIONS)
- FBTrace.sysout("Annotations.loadAnnotations; EXCEPTION", err);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Privacy
-
- onPrivateBrowsingChange: function(enabled)
- {
- if (enabled)
- {
- this.flush(true);
- this.clear();
- }
- else
- {
- this.loadAnnotations();
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Options
-
- resetAllOptions: function()
- {
- // "Reset all options" removes all annotations even if the browser window
- // is currently in private mode.
- this.clear();
- this.flush(true);
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.Annotations = Annotations;
-
-Firebug.registerModule(Annotations);
-
-return Annotations;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/object",
+ "firebug/chrome/privacy",
+],
+function(FBTrace, Obj, Privacy) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+var dirService = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties);
+
+// ********************************************************************************************* //
+// Annotation
+
+/**
+ * @class Represents an internal Firebug annotation service. This service is used to
+ * annotate sites with an info whether Firebug should be activated for them or not.
+ */
+var Annotations = Obj.extend(Firebug.Module,
+{
+ annotations: [],
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ initialize: function()
+ {
+ // Get annotation file stored within the profile directory.
+ this.file = dirService.get("ProfD", Ci.nsIFile);
+ this.file.append("firebug");
+ this.file.append("annotations.json");
+
+ // Load annotations.
+ this.loadAnnotations();
+
+ Privacy.addListener(this);
+ },
+
+ shutdown: function()
+ {
+ this.flush();
+
+ Privacy.removeListener(this);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Public Methods
+
+ setPageAnnotation: function(uri, value)
+ {
+ if (FBTrace.DBG_ANNOTATIONS)
+ FBTrace.sysout("Annotations.setPageAnnotation; " + value + ", " + uri.spec);
+
+ this.annotations[uri.spec] = value;
+ },
+
+ getPageAnnotation: function(uri)
+ {
+ return this.annotations[uri.spec];
+ },
+
+ pageHasAnnotation: function(uri)
+ {
+ return this.annotations[uri.spec] ? true : false;
+ },
+
+ removePageAnnotation: function(uri)
+ {
+ if (FBTrace.DBG_ANNOTATIONS)
+ FBTrace.sysout("Annotations.removePageAnnotation; " + uri.spec);
+
+ delete this.annotations[uri.spec];
+ },
+
+ getAnnotations: function()
+ {
+ return this.annotations;
+ },
+
+ clear: function()
+ {
+ this.annotations = [];
+ },
+
+ flush: function(force)
+ {
+ // Do not store anything if private-browsing mode is on.
+ if (!force && Privacy.isPrivateBrowsing())
+ return;
+
+ try
+ {
+ // Initialize output stream.
+ var outputStream = Cc["@mozilla.org/network/file-output-stream;1"]
+ .createInstance(Ci.nsIFileOutputStream);
+ // write, create, truncate
+ // see https://developer.mozilla.org/en-US/docs/PR_Open#Parameters
+ outputStream.init(this.file, 0x02 | 0x08 | 0x20, 0666, 0);
+
+ // Convert data to JSON.
+ var arr = [];
+ for (var uri in this.annotations)
+ {
+ arr.push({
+ uri: uri,
+ value: this.annotations[uri]
+ });
+ }
+
+ var jsonString = JSON.stringify(arr);
+
+ // Store annotations
+ outputStream.write(jsonString, jsonString.length);
+ outputStream.close();
+
+ if (FBTrace.DBG_ANNOTATIONS)
+ FBTrace.sysout("Annotations.loadAnnotations; Annotations stored to " +
+ this.file.path, jsonString);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_ANNOTATIONS)
+ FBTrace.sysout("Annotations.flush; EXCEPTION", err);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Internals
+
+ // Persistence
+ loadAnnotations: function()
+ {
+ try
+ {
+ this.clear();
+
+ if (!this.file.exists())
+ {
+ this.file.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+ if (FBTrace.DBG_ANNOTATIONS)
+ FBTrace.sysout("Annotations.loadAnnotations; Annotations file created " +
+ this.file.path);
+ return;
+ }
+
+ var inputStream = Cc["@mozilla.org/network/file-input-stream;1"]
+ .createInstance(Ci.nsIFileInputStream);
+ var cstream = Cc["@mozilla.org/intl/converter-input-stream;1"]
+ .createInstance(Ci.nsIConverterInputStream);
+
+ // loadAnnotations input stream
+ // read, create
+ inputStream.init(this.file, 0x01 | 0x08, 0666, 0);
+ cstream.init(inputStream, "UTF-8", 0, 0);
+
+ // Load annotations
+ var json = "";
+ var data = {};
+ while (cstream.readString(-1, data) != 0)
+ json += data.value;
+
+ if (!json.length)
+ return;
+
+ var arr = JSON.parse(json);
+ if (!arr)
+ return;
+
+ // convert to map for faster lookup
+ for (var i=0; i<arr.length; i++)
+ this.annotations[arr[i].uri] = arr[i].value;
+
+ if (FBTrace.DBG_ANNOTATIONS)
+ FBTrace.sysout("Annotations.loadAnnotations; Annotations loaded from " +
+ this.file.path, arr);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_ANNOTATIONS)
+ FBTrace.sysout("Annotations.loadAnnotations; EXCEPTION", err);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Privacy
+
+ onPrivateBrowsingChange: function(enabled)
+ {
+ if (enabled)
+ {
+ this.flush(true);
+ this.clear();
+ }
+ else
+ {
+ this.loadAnnotations();
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Options
+
+ resetAllOptions: function()
+ {
+ // "Reset all options" removes all annotations even if the browser window
+ // is currently in private mode.
+ this.clear();
+ this.flush(true);
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.Annotations = Annotations;
+
+Firebug.registerModule(Annotations);
+
+return Annotations;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/balloonNote.js b/content/firebug/chrome/balloonNote.js
index d162924..ba5a6c7 100644
--- a/content/firebug/chrome/balloonNote.js
+++ b/content/firebug/chrome/balloonNote.js
@@ -1,59 +1,59 @@
-/* See license.txt for terms of usage */
-
-define(["firebug/lib/domplate"], function(Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-Firebug.BalloonNote = function(doc, object)
-{
- this.initialize(doc, object);
-};
-
-with (Domplate) {
-Firebug.BalloonNote.prototype = domplate(
-{
- tag:
- DIV({"class": "balloon", onclick: "$onClick"},
- DIV({"class": "balloonTop1"},
- DIV({"class": "balloonTop2"})
- ),
- DIV({"class": "balloonInner1"},
- DIV({"class": "balloonInner2"},
- DIV({"class": "balloonInner3"},
- DIV({"class": "balloonInner4"},
- SPAN({"class": "balloonCloseButton closeButton",
- onclick: "$onCloseAction"}),
- DIV({"class": "balloonContent"},
- TAG("$cause|getContentTag", {cause: "$cause"})
- )
- )
- )
- )
- ),
- DIV({"class": "balloonBottom1"},
- DIV({"class": "balloonBottom2"})
- )
- ),
-
- getContentTag: function(object)
- {
- return DIV(object.message);
- },
-
- onCloseAction: function()
- {
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- initialize: function(doc, object)
- {
- // xxxHonza: TODO: this object should implement the whole show/hide logic
- // move from Firebug.BreakNotification
- }
-});
-};
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define(["firebug/lib/domplate"], function(Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+Firebug.BalloonNote = function(doc, object)
+{
+ this.initialize(doc, object);
+};
+
+with (Domplate) {
+Firebug.BalloonNote.prototype = domplate(
+{
+ tag:
+ DIV({"class": "balloon", onclick: "$onClick"},
+ DIV({"class": "balloonTop1"},
+ DIV({"class": "balloonTop2"})
+ ),
+ DIV({"class": "balloonInner1"},
+ DIV({"class": "balloonInner2"},
+ DIV({"class": "balloonInner3"},
+ DIV({"class": "balloonInner4"},
+ SPAN({"class": "balloonCloseButton closeButton",
+ onclick: "$onCloseAction"}),
+ DIV({"class": "balloonContent"},
+ TAG("$cause|getContentTag", {cause: "$cause"})
+ )
+ )
+ )
+ )
+ ),
+ DIV({"class": "balloonBottom1"},
+ DIV({"class": "balloonBottom2"})
+ )
+ ),
+
+ getContentTag: function(object)
+ {
+ return DIV(object.message);
+ },
+
+ onCloseAction: function()
+ {
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ initialize: function(doc, object)
+ {
+ // xxxHonza: TODO: this object should implement the whole show/hide logic
+ // move from Firebug.BreakNotification
+ }
+});
+};
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/chrome.js b/content/firebug/chrome/chrome.js
index b52e87d..2ff3eb1 100644
--- a/content/firebug/chrome/chrome.js
+++ b/content/firebug/chrome/chrome.js
@@ -1,2240 +1,2240 @@
-/* See license.txt for terms of usage */
-
-/**
- * The 'context' in this file is always 'Firebug.currentContext'
- */
-define([
- "firebug/lib/object",
- "firebug/chrome/firefox",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/lib/system",
- "firebug/chrome/menu",
- "firebug/chrome/toolbar",
- "firebug/lib/url",
- "firebug/lib/locale",
- "firebug/lib/string",
- "firebug/lib/events",
- "firebug/js/fbs",
- "firebug/chrome/window",
- "firebug/lib/options"
-],
-function chromeFactory(Obj, Firefox, Dom, Css, System, Menu, Toolbar, Url, Locale, String,
- Events, FBS, Win, Options) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const nsIWebNavigation = Ci.nsIWebNavigation;
-
-const wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
-
-const LOAD_FLAGS_BYPASS_PROXY = nsIWebNavigation.LOAD_FLAGS_BYPASS_PROXY;
-const LOAD_FLAGS_BYPASS_CACHE = nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE;
-const LOAD_FLAGS_NONE = nsIWebNavigation.LOAD_FLAGS_NONE;
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-// URLs used in the Firebug Menu and several other places
-const firebugURLs =
-{
- main: "https://getfirebug.com",
- help: "https://getfirebug.com/help",
- FAQ: "https://getfirebug.com/wiki/index.php/FAQ",
- docs: "https://getfirebug.com/docs.html",
- keyboard: "https://getfirebug.com/wiki/index.php/Keyboard_and_Mouse_Shortcuts",
- discuss: "https://groups.google.com/forum/#!forum/firebug",
- issues: "http://code.google.com/p/fbug/issues/list?can=1",
- donate: "https://getfirebug.com/getinvolved",
- extensions: "https://getfirebug.com/wiki/index.php/Firebug_Extensions",
- issue5110: "http://code.google.com/p/fbug/issues/detail?id=5110"
-};
-
-const statusCropSize = 20;
-
-// ********************************************************************************************* //
-
-// factory is global in module loading window
-var ChromeFactory =
-{
-
-// chrome is created in caller window.
-createFirebugChrome: function(win)
-{
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Private
-
- var panelSplitter, sidePanelDeck, panelBar1, panelBar2;
-
-var FirebugChrome =
-{
- // TODO: remove this property, add getters for location, title, focusedElement, setter popup
- dispatchName: "FirebugChrome",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Initialization
-
- /**
- * Called by panelBarWaiter when XUL panelBar(s) (main and side) are constructed
- * (i.e. the constructor of panelBar binding is executed twice) and when all Firebug
- * modules + extension modules (if any) are loaded.
- */
- initialize: function()
- {
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("chrome.initialize;");
-
- this.window = win;
-
- panelSplitter = this.getElementById("fbPanelSplitter");
- sidePanelDeck = this.getElementById("fbSidePanelDeck");
- panelBar1 = this.getElementById("fbPanelBar1");
- panelBar2 = this.getElementById("fbPanelBar2");
-
- // Firebug has not been initialized yet
- if (!Firebug.isInitialized)
- Firebug.initialize(this);
-
- // FBL should be available at this moment.
- if (FBTrace.sysout && (!FBL || !FBL.initialize))
- {
- FBTrace.sysout("Firebug is broken, FBL incomplete, if the last function is QI, " +
- "check lib.js:", FBL);
- }
-
- var browser1Complete = false;
- var browser2Complete = false;
-
- if (panelBar1)
- {
- var browser1 = panelBar1.browser;
- browser1Complete = browser1.complete;
-
- if (!browser1Complete)
- Events.addEventListener(browser1, "load", browser1Loaded, true);
-
- browser1.droppedLinkHandler = function()
- {
- return false;
- };
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("chrome.browser1.complete; " + browser1Complete);
- }
-
- if (panelBar2)
- {
- var browser2 = panelBar2.browser;
- browser2Complete = browser2.complete;
-
- if (!browser2Complete)
- Events.addEventListener(browser2, "load", browser2Loaded, true);
-
- browser2.droppedLinkHandler = function()
- {
- return false;
- };
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("chrome.browser2.complete; " + browser2Complete);
- }
-
- Events.addEventListener(win, "blur", onBlur, true);
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("chrome.initialized in " + win.location + " with " +
- (panelBar1 ? panelBar1.browser.ownerDocument.documentURI : "no panel bar"), win);
-
- // At this point both panelBars can be loaded already, since the src is specified
- // in firebugOverlay.xul (asynchronously loaded). If yes, start up the initialization
- // sequence now.
- if (browser1Complete && browser2Complete)
- {
- setTimeout(function()
- {
- // chrome bound into this scope
- FirebugChrome.initializeUI();
- });
- }
- },
-
- /**
- * Called when the UI is ready to be initialized, once the panel browsers are loaded.
- */
- initializeUI: function()
- {
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("chrome.initializeUI;");
-
- // listen for panel updates
- Firebug.registerUIListener(this);
-
- try
- {
- var cmdPopupBrowser = this.getElementById("fbCommandPopupBrowser");
-
- this.applyTextSize(Firebug.textSize);
-
- var doc1 = panelBar1.browser.contentDocument;
- Events.addEventListener(doc1, "mouseover", onPanelMouseOver, false);
- Events.addEventListener(doc1, "mouseout", onPanelMouseOut, false);
- Events.addEventListener(doc1, "mousedown", onPanelMouseDown, false);
- Events.addEventListener(doc1, "mouseup", onPanelMouseUp, false);
- Events.addEventListener(doc1, "click", onPanelClick, false);
- Events.addEventListener(panelBar1, "selectingPanel", onSelectingPanel, false);
- Events.addEventListener(panelBar1, "DOMMouseScroll", onMouseScroll, false);
-
- var doc2 = panelBar2.browser.contentDocument;
- Events.addEventListener(doc2, "mouseover", onPanelMouseOver, false);
- Events.addEventListener(doc2, "mouseout", onPanelMouseOut, false);
- Events.addEventListener(doc2, "click", onPanelClick, false);
- Events.addEventListener(doc2, "mousedown", onPanelMouseDown, false);
- Events.addEventListener(doc2, "mouseup", onPanelMouseUp, false);
- Events.addEventListener(panelBar2, "selectPanel", onSelectedSidePanel, false);
-
- var doc3 = cmdPopupBrowser.contentDocument;
- Events.addEventListener(doc3, "mouseover", onPanelMouseOver, false);
- Events.addEventListener(doc3,"mouseout", onPanelMouseOut, false);
- Events.addEventListener(doc3, "mousedown", onPanelMouseDown, false);
- Events.addEventListener(doc3, "click", onPanelClick, false);
-
- var mainTabBox = panelBar1.ownerDocument.getElementById("fbPanelBar1-tabBox");
- Events.addEventListener(mainTabBox, "mousedown", onMainTabBoxMouseDown, false);
-
- // The side panel bar doesn't care about this event. It must, however,
- // prevent it from bubbling now that we allow the side panel bar to be
- // *inside* the main panel bar.
- Events.addEventListener(panelBar2, "selectingPanel", stopBubble, false);
-
- var locationList = this.getElementById("fbLocationList");
- Events.addEventListener(locationList, "selectObject", onSelectLocation, false);
-
- this.updatePanelBar1(Firebug.panelTypes);
-
- // Internationalize Firebug UI before firing initializeUI
- // (so putting version into Firebug About menu operates with correct label)
- Firebug.internationalizeUI(win.document);
- Firebug.internationalizeUI(top.document);
-
- // xxxHonza: Is there any reason why we don't distribute "initializeUI"?
- // event to modules?
- Firebug.initializeUI();
-
- // Append all registered stylesheets into Firebug UI
- for (var i=0; i<Firebug.stylesheets.length; i++)
- {
- var uri = Firebug.stylesheets[i];
- this.appendStylesheet(uri);
- }
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("chrome.initializeUI; Custom stylesheet appended " +
- Firebug.stylesheets.length, Firebug.stylesheets);
-
- // Fire event for window event listeners
- Firebug.sendLoadEvent();
- }
- catch (exc)
- {
- fatalError("chrome.initializeUI ERROR "+exc, exc);
- }
- },
-
- shutdown: function()
- {
- var doc1 = panelBar1.browser.contentDocument;
- Events.removeEventListener(doc1, "mouseover", onPanelMouseOver, false);
- Events.removeEventListener(doc1, "mouseout", onPanelMouseOut, false);
- Events.removeEventListener(doc1, "mousedown", onPanelMouseDown, false);
- Events.removeEventListener(doc1, "mouseup", onPanelMouseUp, false);
- Events.removeEventListener(doc1, "click", onPanelClick, false);
- Events.removeEventListener(panelBar1, "selectingPanel", onSelectingPanel, false);
- Events.removeEventListener(panelBar1, "DOMMouseScroll", onMouseScroll, false);
-
- var doc2 = panelBar2.browser.contentDocument;
- Events.removeEventListener(doc2, "mouseover", onPanelMouseOver, false);
- Events.removeEventListener(doc2, "mouseout", onPanelMouseOut, false);
- Events.removeEventListener(doc2, "mousedown", onPanelMouseDown, false);
- Events.removeEventListener(doc2, "mouseup", onPanelMouseUp, false);
- Events.removeEventListener(doc2, "click", onPanelClick, false);
- Events.removeEventListener(panelBar2, "selectPanel", onSelectedSidePanel, false);
- Events.removeEventListener(panelBar2, "selectingPanel", stopBubble, false);
-
- var cmdPopupBrowser = this.getElementById("fbCommandPopupBrowser");
- var doc3 = cmdPopupBrowser.contentDocument;
- Events.removeEventListener(doc3, "mouseover", onPanelMouseOver, false);
- Events.removeEventListener(doc3, "mouseout", onPanelMouseOut, false);
- Events.removeEventListener(doc3, "mousedown", onPanelMouseDown, false);
- Events.removeEventListener(doc3, "click", onPanelClick, false);
-
- var mainTabBox = panelBar1.ownerDocument.getElementById("fbPanelBar1-tabBox");
- Events.removeEventListener(mainTabBox, "mousedown", onMainTabBoxMouseDown, false);
-
- var locationList = this.getElementById("fbLocationList");
- Events.removeEventListener(locationList, "selectObject", onSelectLocation, false);
-
- Events.removeEventListener(win, "blur", onBlur, true);
-
- Firebug.unregisterUIListener(this);
-
- Firebug.shutdown();
-
- if (FBTrace.DBG_EVENTLISTENERS)
- {
- var info = [];
- var listeners = Firebug.Events.getRegisteredListeners();
- for (var i=0; i<listeners.length; i++)
- {
- var listener = listeners[i];
- info.push({
- parentId: listener.parentId,
- evendId: listener.eventId,
- capturing: listener.capturing,
- stack: listener.stack,
- });
- }
-
- FBTrace.sysout("firebug.shutdownFirebug; listeners: " + info.length, info);
- }
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("chrome.shutdown; Done for " + win.location);
- },
-
- /**
- * Checks if the Firebug window has the focus (is the most recent window)
- */
- hasFocus: function()
- {
- try
- {
- // If the ID of the active element is related to Firebug, it must have the focus
- var windowID = wm.getMostRecentWindow(null).document.activeElement.id;
- return ["firebug", "fbMainContainer"].indexOf(windowID) !== -1;
- }
- catch(ex)
- {
- return false;
- }
- },
-
- appendStylesheet: function(uri)
- {
- var cmdPopupBrowser = this.getElementById("fbCommandPopupBrowser");
-
- var doc1 = panelBar1.browser.contentDocument;
- var doc2 = panelBar2.browser.contentDocument;
- var doc3 = cmdPopupBrowser.contentDocument;
-
- Css.appendStylesheet(doc1, uri);
- Css.appendStylesheet(doc2, uri);
- Css.appendStylesheet(doc3, uri);
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("chrome.appendStylesheet; " + uri);
- },
-
- updateOption: function(name, value)
- {
- if (panelBar1 && panelBar1.selectedPanel)
- panelBar1.selectedPanel.updateOption(name, value);
-
- if (panelBar2 && panelBar2.selectedPanel)
- panelBar2.selectedPanel.updateOption(name, value);
-
- if (name == "textSize")
- this.applyTextSize(value);
-
- if (name == "omitObjectPathStack")
- this.obeyOmitObjectPathStack(value);
-
- if (name == "viewPanelOrient")
- this.updateOrient(value);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- disableOff: function(collapse)
- {
- // disable/enable this button in the Firebug.chrome window
- Dom.collapse(FirebugChrome.$("fbCloseButton"), collapse);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getPanelDocument: function(panelType)
- {
- var cmdPopup = this.getElementById("fbCommandPopup");
- var cmdPopupBrowser = this.getElementById("fbCommandPopupBrowser");
-
- // Command Line Popup can be displayed for all the other panels
- // (except for the Console panel)
- // XXXjjb, xxxHonza, xxxsz: this should be somehow better, more generic and extensible,
- // e.g. by asking each panel if it supports the Command Line Popup
- var consolePanelType = Firebug.getPanelType("console");
- if (consolePanelType == panelType)
- {
- if (!Dom.isCollapsed(cmdPopup))
- return cmdPopupBrowser.contentDocument;
- }
-
- // Standard panel and side panel documents.
- if (!panelType.prototype.parentPanel)
- return panelBar1.browser.contentDocument;
- else
- return panelBar2.browser.contentDocument;
- },
-
- getPanelBrowser: function(panel)
- {
- if (!panel.parentPanel)
- return panelBar1.browser;
- else
- return panelBar2.browser;
- },
-
- savePanels: function()
- {
- var path = this.writePanels(panelBar1.browser.contentDocument);
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("Wrote panels to "+path+"\n");
- },
-
- writePanels: function(doc)
- {
- var serializer = new XMLSerializer();
- var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
- .createInstance(Components.interfaces.nsIFileOutputStream);
- var file = Components.classes["@mozilla.org/file/directory_service;1"]
- .getService(Components.interfaces.nsIProperties)
- .get("TmpD", Components.interfaces.nsIFile);
-
- // extensions sub-directory
- file.append("firebug");
- file.append("panelSave.html");
- file.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0666);
- // write, create, truncate
- foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0);
- // remember, doc is the DOM tree
- serializer.serializeToStream(doc, foStream, "");
- foStream.close();
- return file.path;
- },
-
- // part of initializeUI
- updatePanelBar1: function(panelTypes)
- {
- var mainPanelTypes = [];
- for (var i = 0; i < panelTypes.length; ++i)
- {
- var panelType = panelTypes[i];
- if (!panelType.prototype.parentPanel && !panelType.hidden)
- mainPanelTypes.push(panelType);
- }
- panelBar1.updatePanels(mainPanelTypes);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getName: function()
- {
- return win ? win.location.href : null;
- },
-
- close: function()
- {
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("chrome.close closing window "+win.location);
- win.close();
- },
-
- focus: function()
- {
- win.focus();
- panelBar1.browser.contentWindow.focus();
- },
-
- isFocused: function()
- {
- return wm.getMostRecentWindow(null) == win;
- },
-
- focusWatch: function(context)
- {
- if (Firebug.isDetached())
- Firebug.chrome.focus();
- else
- Firebug.toggleBar(true);
-
- Firebug.chrome.selectPanel("script");
-
- var watchPanel = context.getPanel("watches", true);
- if (watchPanel)
- {
- watchPanel.editNewWatch();
- }
- },
-
- isOpen: function()
- {
- return !(FirebugChrome.$("fbContentBox").collapsed);
- },
-
- toggleOpen: function(shouldShow)
- {
- var contentBox = Firebug.chrome.$("fbContentBox");
- contentBox.setAttribute("collapsed", !shouldShow);
-
- if (!this.inDetachedScope)
- {
- Dom.collapse(Firefox.getElementById('fbMainFrame'), !shouldShow);
-
- var contentSplitter = Firefox.getElementById('fbContentSplitter');
- if (contentSplitter)
- contentSplitter.setAttribute("collapsed", !shouldShow);
- }
-
- if (shouldShow && !this.positionInitialzed)
- {
- this.positionInitialzed = true;
- if (Firebug.framePosition != "detached" && Firebug.framePosition != "bottom")
- {
- // null only updates frame position without side effects
- this.setPosition();
- }
- }
- },
-
- onDetach: function()
- {
- if(!Firebug.currentContext)
- Firebug.toggleBar(true);
- else
- Firebug.showBar(true);
- },
-
- onUndetach: function()
- {
- Dom.collapse(Firebug.chrome.$('fbResumeBox'), true);
- Dom.collapse(Firebug.chrome.$("fbContentBox"), false);
- },
-
- // only called when detached
- syncResumeBox: function(context)
- {
- var resumeBox = Firebug.chrome.$('fbResumeBox');
-
- // xxxHonza: Don't focus the Firebug window now. It would bring the detached Firebug window
- // to the top every time the attached Firefox page is refreshed, which is annoying.
- //this.focus(); // bring to users attention
-
- if (context)
- {
- Firebug.chrome.toggleOpen(true);
- Firebug.chrome.syncPanel();
- Dom.collapse(resumeBox, true);
- }
- else
- {
- Firebug.chrome.toggleOpen(false);
- Dom.collapse(resumeBox, false);
-
- Firebug.chrome.window.parent.document.title =
- Locale.$STR("Firebug - inactive for current website");
- }
- },
-
- reload: function(skipCache)
- {
- var reloadFlags = skipCache
- ? LOAD_FLAGS_BYPASS_PROXY | LOAD_FLAGS_BYPASS_CACHE
- : LOAD_FLAGS_NONE;
-
- // Make sure the selected tab in the attached browser window is refreshed.
- var browser = Firefox.getCurrentBrowser();
- browser.firebugReload = true;
- browser.webNavigation.reload(reloadFlags);
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("chrome.reload; " + skipCache + ", " + browser.currentURI.spec);
- },
-
- gotoPreviousTab: function()
- {
- if (Firebug.currentContext.previousPanelName)
- this.selectPanel(Firebug.currentContext.previousPanelName);
- },
-
- gotoSiblingTab : function(goRight)
- {
- if (FirebugChrome.$("fbContentBox").collapsed)
- return;
- var i, currentIndex = newIndex = -1, currentPanel = this.getSelectedPanel(), newPanel;
- var panelTypes = Firebug.getMainPanelTypes(Firebug.currentContext);
-
- // get the current panel's index (is there a simpler way for this?)
- for (i = 0; i < panelTypes.length; i++)
- {
- if (panelTypes[i].prototype.name === currentPanel.name)
- {
- currentIndex = i;
- break;
- }
- }
-
- if (currentIndex != -1)
- {
- newIndex = goRight ? (currentIndex == panelTypes.length - 1 ?
- 0 : ++currentIndex) : (currentIndex == 0 ? panelTypes.length - 1 : --currentIndex);
-
- newPanel = panelTypes[newIndex].prototype;
- if (newPanel && newPanel.name)
- {
- this.selectPanel(newPanel.name);
- }
- }
- },
-
- getNextObject: function(reverse)
- {
- var panel = Firebug.currentContext.getPanel(Firebug.currentContext.panelName);
- if (panel)
- {
- var panelStatus = this.getElementById("fbPanelStatus");
- var item = panelStatus.getItemByObject(panel.selection);
- if (item)
- {
- if (reverse)
- item = item.previousSibling ? item.previousSibling.previousSibling : null;
- else
- item = item.nextSibling ? item.nextSibling.nextSibling : null;
-
- if (item)
- return item.repObject;
- }
- }
- },
-
- gotoNextObject: function(reverse)
- {
- var nextObject = this.getNextObject(reverse);
- if (nextObject)
- this.select(nextObject);
- else
- System.beep();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Panels
-
- /**
- * Set this.location on the current panel or one given by name.
- * The location object should be known to the caller to be of the correct type for the panel,
- * e.g. SourceFile for Script panel
- * @param object location object, null selects default location
- * @param panelName name of the panel to select, null means current panel
- * @param sidePanelName name of the side panel to select
- */
- navigate: function(object, panelName, sidePanelName)
- {
- var panel;
- if (panelName || sidePanelName)
- panel = this.selectPanel(panelName, sidePanelName);
- else
- panel = this.getSelectedPanel();
-
- if (panel)
- panel.navigate(object);
- },
-
- /**
- * Set this.selection by object type analysis, passing the object to all panels to
- * find the best match
- * @param object new this.selection object
- * @param panelName matching panel.name will be used, if its supportsObject returns true
- * @param sidePanelName default side panel name used, if its supportsObject returns true
- * @param forceUpdate if true, then (object === this.selection) is ignored and
- * updateSelection is called
- */
- select: function(object, panelName, sidePanelName, forceUpdate)
- {
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("chrome.select object:"+object+" panelName:"+panelName+
- " sidePanelName:"+sidePanelName+" forceUpdate:"+forceUpdate+"\n");
-
- var bestPanelName = getBestPanelName(object, Firebug.currentContext, panelName);
-
- // allow refresh if needed (last argument)
- var panel = this.selectPanel(bestPanelName, sidePanelName/*, true*/);
- if (panel)
- panel.select(object, forceUpdate);
-
- // issue 4778
- this.syncLocationList();
- },
-
- selectPanel: function(panelName, sidePanelName, noRefresh)
- {
- if (panelName && sidePanelName)
- Firebug.currentContext.sidePanelNames[panelName] = sidePanelName;
-
- // cause panel visibility changes and events
- return panelBar1.selectPanel(panelName, false, noRefresh);
- },
-
- selectSidePanel: function(panelName)
- {
- return panelBar2.selectPanel(panelName);
- },
-
- selectSupportingPanel: function(object, context, forceUpdate)
- {
- var bestPanelName = getBestPanelSupportingObject(object, context);
- var panel = this.selectPanel(bestPanelName, false, true);
- if (panel)
- panel.select(object, forceUpdate);
- },
-
- clearPanels: function()
- {
- panelBar1.hideSelectedPanel();
- panelBar1.selectedPanel = null;
- panelBar2.selectedPanel = null;
- },
-
- getSelectedPanel: function()
- {
- return panelBar1 ? panelBar1.selectedPanel : null;
- },
-
- getSelectedSidePanel: function()
- {
- return panelBar2 ? panelBar2.selectedPanel : null;
- },
-
- switchToPanel: function(context, switchToPanelName)
- {
- // Remember the previous panel and bar state so we can revert if the user cancels.
- this.previousPanelName = context.panelName;
- this.previousSidePanelName = context.sidePanelName;
- this.previouslyCollapsed = FirebugChrome.$("fbContentBox").collapsed;
-
- // TODO previouslyMinimized
- this.previouslyFocused = Firebug.isDetached() && this.isFocused();
-
- var switchPanel = this.selectPanel(switchToPanelName);
- if (switchPanel)
- this.previousObject = switchPanel.selection;
-
- return switchPanel;
- },
-
- unswitchToPanel: function(context, switchToPanelName, canceled)
- {
- var switchToPanel = context.getPanel(switchToPanelName);
-
- if (this.previouslyFocused)
- this.focus();
-
- if (canceled && this.previousPanelName)
- {
- // revert
- if (this.previouslyCollapsed)
- Firebug.showBar(false);
-
- if (this.previousPanelName == switchToPanelName)
- switchToPanel.select(this.previousObject);
- else
- this.selectPanel(this.previousPanelName, this.previousSidePanelName);
- }
- else
- {
- // else stay on the switchToPanel
- this.selectPanel(switchToPanelName);
- if (switchToPanel.selection)
- this.select(switchToPanel.selection);
- this.getSelectedPanel().panelNode.focus();
- }
-
- delete this.previousObject;
- delete this.previousPanelName;
- delete this.previousSidePanelName;
- delete this.inspectingChrome;
-
- return switchToPanel;
- },
-
- getSelectedPanelURL: function()
- {
- var location = null;
- if (Firebug.currentContext)
- {
- var panel = Firebug.chrome.getSelectedPanel();
- if (panel)
- {
- location = panel.location;
- if (!location && panel.name == "html")
- location = Firebug.currentContext.window.document.location;
-
- if (location && (location instanceof Firebug.SourceFile ||
- location instanceof CSSStyleSheet))
- location = location.href;
- }
- }
-
- if (!location)
- {
- var currentURI = Firefox.getCurrentURI();
- if (currentURI)
- location = currentURI.asciiSpec;
- }
-
- if (!location)
- return;
-
- location = location.href || location.url || location.toString();
- if (Firebug.filterSystemURLs && Url.isSystemURL(location))
- return;
-
- return location;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Location interface provider for binding.xml panelFileList
-
- getLocationProvider: function()
- {
- // a function that returns an object with .getObjectDescription() and .getLocationList()
- return function getSelectedPanelFromCurrentContext()
- {
- // panels provide location, use the selected panel
- return Firebug.chrome.getSelectedPanel();
- };
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // UI Synchronization
-
- setFirebugContext: function(context)
- {
- // This sets the global value of Firebug.currentContext in the window, that this
- // chrome is compiled into. Note, that for firebug.xul the Firebug object is shared
- // across windows, but not FirebugChrome and Firebug.currentContext.
- Firebug.currentContext = context;
-
- if (FBTrace.DBG_WINDOWS || FBTrace.DBG_DISPATCH || FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("setFirebugContext "+(Firebug.currentContext?
- Firebug.currentContext.getName():" **> NULL <** ") + " in "+win.location);
- },
-
- hidePanel: function()
- {
- if (panelBar1.selectedPanel)
- panelBar1.hideSelectedPanel();
-
- if (panelBar2.selectedPanel)
- panelBar2.hideSelectedPanel();
- },
-
- syncPanel: function(panelName)
- {
- var context = Firebug.currentContext;
-
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("chrome.syncPanel Firebug.currentContext=" +
- (context ? context.getName() : "undefined"));
-
- var panelStatus = this.getElementById("fbPanelStatus");
- panelStatus.clear();
-
- if (context)
- {
- if (!panelName)
- panelName = context.panelName? context.panelName : Firebug.defaultPanelName;
-
- // Make the HTML panel the default panel, which is displayed
- // to the user the very first time.
- if (!panelName || !Firebug.getPanelType(panelName))
- panelName = "html";
-
- this.syncMainPanels();
- panelBar1.selectPanel(panelName, true);
- }
- else
- {
- panelBar1.selectPanel(null, true);
- }
-
- if (Firebug.isDetached())
- this.syncTitle();
- },
-
- syncMainPanels: function()
- {
- if (Firebug.currentContext)
- {
- var panelTypes = Firebug.getMainPanelTypes(Firebug.currentContext);
- panelBar1.updatePanels(panelTypes);
-
- // Update also BON tab flag (orange background if BON is active)
- // every time the user changes the current tab in Firefox.
- Firebug.Breakpoint.updatePanelTabs(Firebug.currentContext);
- }
- },
-
- syncSidePanels: function()
- {
- if (FBTrace.DBG_PANELS)
- {
- FBTrace.sysout("chrome.syncSidePanels; main panel: " +
- (panelBar1.selectedPanel ? panelBar1.selectedPanel.name : "no panel") +
- ", side panel: " +
- (panelBar2.selectedPanel ? panelBar2.selectedPanel.name : "no panel"));
- }
-
- if (!panelBar1.selectedPanel)
- return;
-
- var panelTypes;
- if (Firebug.currentContext)
- {
- panelTypes = Firebug.getSidePanelTypes(Firebug.currentContext,
- panelBar1.selectedPanel);
- panelBar2.updatePanels(panelTypes);
- }
-
- if (Firebug.currentContext && Firebug.currentContext.sidePanelNames)
- {
- if (!panelBar2.selectedPanel ||
- (panelBar2.selectedPanel.parentPanel !== panelBar1.selectedPanel.name))
- {
- var sidePanelName = Firebug.currentContext.sidePanelNames[
- Firebug.currentContext.panelName];
- sidePanelName = getBestSidePanelName(sidePanelName, panelTypes);
- panelBar2.selectPanel(sidePanelName, true);
- }
- else
- {
- // If the context changes, we need to refresh the panel.
- panelBar2.selectPanel(panelBar2.selectedPanel.name, true);
- }
- }
- else
- {
- panelBar2.selectPanel(null);
- }
-
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("chrome.syncSidePanels; selected side panel " + panelBar1.selectedPanel);
-
- sidePanelDeck.selectedPanel = panelBar2;
-
- Dom.collapse(sidePanelDeck, !panelBar2.selectedPanel);
- Dom.collapse(panelSplitter, !panelBar2.selectedPanel);
-
- Events.dispatch(Firebug.uiListeners, "updateSidePanels", [panelBar1.selectedPanel]);
- },
-
- syncTitle: function()
- {
- if (Firebug.currentContext)
- {
- var title = Firebug.currentContext.getTitle();
- win.parent.document.title = Locale.$STRF("WindowTitle", [title]);
- }
- else
- {
- win.parent.document.title = Locale.$STR("Firebug");
- }
- },
-
- focusLocationList: function()
- {
- var locationList = this.getElementById("fbLocationList");
- locationList.popup.showPopup(locationList, -1, -1, "popup", "bottomleft", "topleft");
- },
-
- syncLocationList: function()
- {
- var locationButtons = this.getElementById("fbLocationButtons");
-
- var panel = panelBar1.selectedPanel;
- if (panel && panel.location)
- {
- var locationList = this.getElementById("fbLocationList");
- locationList.location = panel.location;
-
- Dom.collapse(locationButtons, false);
- }
- else
- {
- Dom.collapse(locationButtons, true);
- }
- },
-
- clearStatusPath: function()
- {
- var panelStatus = this.getElementById("fbPanelStatus");
- panelStatus.clear();
- },
-
- syncStatusPath: function()
- {
- var panelStatus = this.getElementById("fbPanelStatus");
- var panelStatusSeparator = this.getElementById("fbStatusSeparator");
- var panel = panelBar1.selectedPanel;
-
- if (!panel || (panel && !panel.selection))
- {
- panelStatus.clear();
- }
- else
- {
- var path = panel.getObjectPath(panel.selection);
- if (!path || !path.length)
- {
- Dom.hide(panelStatusSeparator, true);
- panelStatus.clear();
- }
- else
- {
- // Update the visibility of the separator. The separator
- // is displayed only if there are some other buttons on the left side.
- // Before showing the status separator let's see whether there are any other
- // buttons on the left.
- var hide = true;
- var sibling = panelStatusSeparator.parentNode.previousSibling;
- while (sibling)
- {
- if (!Dom.isCollapsed(sibling))
- {
- hide = false;
- break;
- }
- sibling = sibling.previousSibling;
- }
- Dom.hide(panelStatusSeparator, hide);
-
- if (panel.name != panelStatus.lastPanelName)
- panelStatus.clear();
-
- panelStatus.lastPanelName = panel.name;
-
- // If the object already exists in the list, just select it and keep the path.
- var selection = panel.selection;
- var existingItem = panelStatus.getItemByObject(panel.selection);
- if (existingItem)
- {
- // Update the labels of the status path elements, because it can be,
- // that the elements changed even when the selected element exists
- // inside the path (issue 4826)
- var statusItems = panelStatus.getItems();
- for (var i = 0; i < statusItems.length; ++i)
- {
- var object = Firebug.getRepObject(statusItems[i]);
- var rep = Firebug.getRep(object, Firebug.currentContext);
- var objectTitle = rep.getTitle(object, Firebug.currentContext);
- var title = String.cropMultipleLines(objectTitle, statusCropSize);
-
- statusItems[i].label = title;
- }
- panelStatus.selectItem(existingItem);
- }
- else
- {
- panelStatus.clear();
-
- for (var i = 0; i < path.length; ++i)
- {
- var object = path[i];
-
- var rep = Firebug.getRep(object, Firebug.currentContext);
- var objectTitle = rep.getTitle(object, Firebug.currentContext);
-
- var title = String.cropMultipleLines(objectTitle, statusCropSize);
- panelStatus.addItem(title, object, rep, panel.statusSeparator);
- }
-
- panelStatus.selectObject(panel.selection);
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("syncStatusPath "+path.length+" items ", path);
- }
- }
- }
- },
-
- toggleOrient: function(preferredValue)
- {
- var value = Options.get("viewPanelOrient");
- if (value == preferredValue)
- return;
-
- Options.togglePref("viewPanelOrient");
- },
-
- updateOrient: function(value)
- {
- var panelPane = FirebugChrome.$("fbPanelPane");
- if (!panelPane)
- return;
-
- var newOrient = value ? "vertical" : "horizontal";
- if (panelPane.orient == newOrient)
- return;
-
- panelSplitter.orient = panelPane.orient = newOrient;
- },
-
- setPosition: function(pos)
- {
- if (Firebug.framePosition == pos)
- return;
-
- if (pos)
- {
- if (Firebug.getSuspended())
- Firebug.toggleBar();
- }
- else
- {
- pos = Firebug.framePosition;
- }
-
- if (pos == "detached")
- {
- Firebug.toggleDetachBar(true, true);
- return;
- }
-
- if (Firebug.isDetached())
- Firebug.toggleDetachBar(false, true);
-
- pos && this.syncPositionPref(pos);
-
- var vertical = pos == "top" || pos == "bottom";
- var after = pos == "bottom" || pos == "right";
-
- var document = window.parent.document;
- var container = document.getElementById(vertical ? "appcontent" : "browser");
-
- var splitter = Firefox.getElementById("fbContentSplitter");
- splitter.setAttribute("orient", vertical ? "vertical" : "horizontal");
- splitter.setAttribute("dir", after ? "" : "reverse");
- container.insertBefore(splitter, after ? null: container.firstChild);
-
- var frame = document.getElementById("fbMainFrame");
-
- var newFrame = frame.cloneNode(true);
- var newBrowser = newFrame.querySelector("#fbMainContainer");
- var oldBrowser = frame.querySelector("#fbMainContainer");
-
- newBrowser.removeAttribute("src");
- container.insertBefore(newFrame, after ? null: container.firstChild);
-
- this.swapBrowsers(oldBrowser, newBrowser);
- this.browser = newBrowser;
-
- frame.parentNode.removeChild(frame);
- this.framePosition = pos;
- },
-
- syncPositionPref: function(pos)
- {
- if (!pos)
- {
- if (Firebug.isDetached())
- pos = "detached";
- else
- pos = this.framePosition || 'bottom';
- }
-
- Firebug.Options.set("framePosition", pos);
- return Firebug.framePosition = pos;
- },
-
- swapBrowsers: function(oldBrowser, newBrowser)
- {
- var oldDoc = oldBrowser.contentDocument;
- // Panels remember the top window, for which they were first opened.
- // So we need to destroy their views.
- var styleSheet = oldDoc.styleSheets[0];
- var rulePos = styleSheet.cssRules.length;
- styleSheet.insertRule(
- "panel{display:-moz-box!important; visibility:collapse!important;}", rulePos);
-
- // We need to deal with inner frames first since swapFrameLoaders
- // doesn't work for type="chrome" browser containing type="content" browsers
- var frames = oldDoc.querySelectorAll("browser[type*=content], iframe[type*=content]");
- var tmpFrames = [], placeholders = [];
-
- var topDoc = oldBrowser.ownerDocument;
- var temp = topDoc.createElement("box");
- topDoc.documentElement.appendChild(temp);
-
- var swapDocShells = function(a, b)
- {
- // important! must touch browser.contentDocument to initialize it
- a.contentDocument == b.contentDocument;
- if (a.nodeName == "iframe")
- a.QueryInterface(Ci.nsIFrameLoaderOwner).swapFrameLoaders(b);
- else
- a.swapDocShells(b);
- };
-
- for (var i = frames.length - 1; i >= 0; i--)
- {
- placeholders[i] = document.createElement("placeholder");
- tmpFrames[i] = frames[i].cloneNode(true);
- tmpFrames[i].removeAttribute("src");
- frames[i].removeAttribute("src");
- temp.appendChild(tmpFrames[i]);
- }
-
- for (var i = tmpFrames.length - 1; i >= 0; i--)
- {
- swapDocShells(tmpFrames[i], frames[i]);
- frames[i].parentNode.replaceChild(placeholders[i], frames[i]);
- }
-
- swapDocShells(oldBrowser, newBrowser);
-
- for (var i = placeholders.length - 1; i >= 0; i--)
- placeholders[i].parentNode.replaceChild(frames[i], placeholders[i]);
-
- for (var i = frames.length - 1; i >= 0; i--)
- swapDocShells(tmpFrames[i], frames[i]);
-
- temp.parentNode.removeChild(temp);
-
- styleSheet.deleteRule(rulePos);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Global Attributes
-
- getGlobalAttribute: function(id, name)
- {
- var elt = FirebugChrome.$(id);
- return elt.getAttribute(name);
- },
-
- setGlobalAttribute: function(id, name, value)
- {
- var elt = FirebugChrome.$(id);
- if (elt)
- {
- if (value == null)
- elt.removeAttribute(name);
- else
- elt.setAttribute(name, value);
- }
-
- if (Firebug.externalChrome)
- Firebug.externalChrome.setGlobalAttribute(id, name, value);
- },
-
- setChromeDocumentAttribute: function(id, name, value)
- {
- // call as Firebug.chrome.setChromeDocumentAttribute() to set attributes
- // in another window
- var elt = FirebugChrome.$(id);
- if (elt)
- elt.setAttribute(name, value);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- keyCodeListen: function(key, filter, listener, capture)
- {
- if (!filter)
- filter = Events.noKeyModifiers;
-
- var keyCode = KeyEvent["DOM_VK_"+key];
-
- function fn(event)
- {
- if (event.keyCode == keyCode && (!filter || filter(event)))
- {
- listener();
- Events.cancelEvent(event);
- }
- }
-
- Events.addEventListener(win, "keypress", fn, capture);
-
- return [fn, capture];
- },
-
- keyListen: function(ch, filter, listener, capture)
- {
- if (!filter)
- filter = Events.noKeyModifiers;
-
- var charCode = ch.charCodeAt(0);
-
- function fn(event)
- {
- if (event.charCode == charCode && (!filter || filter(event)))
- {
- listener();
- Events.cancelEvent(event);
- }
- }
-
- Events.addEventListener(win, "keypress", fn, capture);
-
- return [fn, capture];
- },
-
- keyIgnore: function(listener)
- {
- Events.removeEventListener(win, "keypress", listener[0], listener[1]);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- $: function(id)
- {
- return this.getElementById(id);
- },
-
- getElementById: function(id)
- {
- // The document we close over, not the global.
- return win.document.getElementById(id);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- applyTextSize: function(value)
- {
- if (!panelBar1)
- return;
-
- var zoom = Firebug.Options.getZoomByTextSize(value);
- var zoomString = (zoom * 100) + "%";
-
- // scale the aspect relative to 11pt Lucida Grande
- // xxxsz: The magic number 0.547 should be replaced some logic retrieving this value.
- var fontSizeAdjust = zoom * 0.547;
- var contentBox = Firebug.chrome.$("fbContentBox");
- contentBox.style.fontSizeAdjust = fontSizeAdjust;
-
- //panelBar1.browser.contentDocument.documentElement.style.fontSizeAdjust = fontSizeAdjust;
- //panelBar2.browser.contentDocument.documentElement.style.fontSizeAdjust = fontSizeAdjust;
-
- panelBar1.browser.markupDocumentViewer.textZoom = zoom;
- panelBar2.browser.markupDocumentViewer.textZoom = zoom;
-
- var cmdPopupBrowser = this.getElementById("fbCommandPopupBrowser");
- cmdPopupBrowser.markupDocumentViewer.textZoom = zoom;
-
- var box = Firebug.chrome.$("fbCommandBox");
- box.style.fontSizeAdjust = fontSizeAdjust;
- if (Firebug.CommandLine)
- {
- Firebug.CommandLine.getSingleRowCommandLine().style.fontSizeAdjust = fontSizeAdjust;
- Firebug.chrome.$("fbCommandLineCompletion").style.fontSizeAdjust = fontSizeAdjust;
- Firebug.chrome.$("fbCommandLineCompletionList").style.fontSizeAdjust = fontSizeAdjust;
-
- Firebug.CommandEditor.fontSizeAdjust(fontSizeAdjust);
- }
-
- Firebug.dispatchToPanels("onTextSizeChange", [zoom, fontSizeAdjust]);
- },
-
- obeyOmitObjectPathStack: function(value)
- {
- var panelStatus = this.getElementById("fbPanelStatus");
- // The element does not exist immediately at start-up.
- if (!panelStatus)
- return;
- Dom.hide(panelStatus, (value ? true : false));
- },
-
- getPanelStatusElements: function()
- {
- return this.getElementById("fbPanelStatus");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // UI Event Listeners uilisteners or "panelListeners"
-
- onPanelNavigate: function(object, panel)
- {
- this.syncLocationList();
- },
-
- onObjectSelected: function(object, panel)
- {
- if (panel == panelBar1.selectedPanel)
- {
- this.syncStatusPath();
-
- var sidePanel = panelBar2.selectedPanel;
- if (sidePanel)
- sidePanel.select(object);
- }
- },
-
- onObjectChanged: function(object, panel)
- {
- if (panel == panelBar1.selectedPanel)
- {
- this.syncStatusPath();
-
- var sidePanel = panelBar2.selectedPanel;
- if (sidePanel)
- sidePanel.refresh();
- }
- },
-
- // called on setTimeout() after sourceBox viewport has been repainted
- onApplyDecorator: function(sourceBox)
- {
- },
-
- // called on scrollTo() passing in the selected line
- onViewportChange: function(sourceLink)
- {
- },
-
- // called when the Firebug UI comes up in browser
- showUI: function(browser, context)
- {
- },
-
- // called when the Firebug UI comes down; context may be null
- hideUI: function(browser, context)
- {
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onMenuShowing: function(popup)
- {
- var detachFirebug = Dom.getElementsByAttribute(popup, "id", "menu_firebug_detachFirebug")[0];
- if (detachFirebug)
- {
- detachFirebug.setAttribute("label", (Firebug.isDetached() ?
- Locale.$STR("firebug.AttachFirebug") : Locale.$STR("firebug.DetachFirebug")));
- }
-
- var toggleFirebug = Dom.getElementsByAttribute(popup, "id", "menu_firebug_toggleFirebug")[0];
- if (toggleFirebug)
- {
- var fbContentBox = FirebugChrome.$("fbContentBox");
- var collapsed = fbContentBox.getAttribute("collapsed");
- if (collapsed == "true")
- {
- toggleFirebug.setAttribute("label", Locale.$STR("inBrowser"));
- toggleFirebug.setAttribute("tooltiptext", Locale.$STR("inBrowser"));
- }
- else
- {
- toggleFirebug.setAttribute("label", Locale.$STR("firebug.menu.Minimize_Firebug"));
- toggleFirebug.setAttribute("tooltiptext", Locale.$STR("firebug.menu.tip.Minimize_Firebug"));
- }
-
- // If Firebug is detached, hide the menu. ('Open Firebug' shortcut doesn't hide
- // but just focuses the external window)
- if (Firebug.isDetached())
- toggleFirebug.setAttribute("collapsed", (collapsed == "true" ? "false" : "true"));
- }
- },
-
- onOptionsShowing: function(popup)
- {
- for (var child = popup.firstChild; child; child = child.nextSibling)
- {
- if (child.localName == "menuitem")
- {
- var option = child.getAttribute("option");
- if (option)
- {
- var checked = false;
- if (option == "profiling")
- checked = FBS.profiling;
- else
- checked = Firebug.Options.get(option);
-
- child.setAttribute("checked", checked);
- }
- }
- }
- },
-
- onToggleOption: function(menuitem)
- {
- var option = menuitem.getAttribute("option");
- var checked = menuitem.getAttribute("checked") == "true";
-
- Firebug.Options.set(option, checked);
- },
-
- onContextShowing: function(event)
- {
- // xxxHonza: This context menu support can be used even in a separate window, which
- // doesn't contain the Firebug UI (panels).
- //if (!panelBar1.selectedPanel)
- // return false;
-
- var popup = event.target;
- if (popup.id != "fbContextMenu")
- return;
-
- var target = win.document.popupNode;
- var panel = target ? Firebug.getElementPanel(target) : null;
-
- // The event must be on our chrome not inside the panel.
- if (!panel)
- panel = panelBar1 ? panelBar1.selectedPanel : null;
-
- Dom.eraseNode(popup);
-
- // Make sure the Copy action is only available if there is actually something
- // selected in the panel.
- var sel = target.ownerDocument.defaultView.getSelection();
- if (!this.contextMenuObject &&
- !FirebugChrome.$("cmd_copy").getAttribute("disabled") &&
- !sel.isCollapsed)
- {
- var menuitem = Menu.createMenuItem(popup, {label: "Copy"});
- menuitem.setAttribute("command", "cmd_copy");
- }
-
- var object;
- if (this.contextMenuObject)
- object = this.contextMenuObject;
- else if (target && target.ownerDocument == document)
- object = Firebug.getRepObject(target);
- else if (target && panel)
- object = panel.getPopupObject(target);
- else if (target)
- // xxxHonza: What about a node from a different document? Is that OK?
- object = Firebug.getRepObject(target);
-
- this.contextMenuObject = null;
-
- var rep = Firebug.getRep(object, Firebug.currentContext);
- var realObject = rep ? rep.getRealObject(object, Firebug.currentContext) : null;
- var realRep = realObject ? Firebug.getRep(realObject, Firebug.currentContext) : null;
-
- if (FBTrace.DBG_MENU)
- {
- FBTrace.sysout("chrome.onContextShowing object:"+object+", rep: "+rep+
- ", realObject: "+realObject+", realRep:"+realRep);
- }
-
- // 1. Add the custom menu items from the realRep
- if (realObject && realRep)
- {
- var items = realRep.getContextMenuItems(realObject, target, Firebug.currentContext);
- if (items)
- Menu.createMenuItems(popup, items);
- }
-
- // 2. Add the custom menu items from the original rep
- if (object && rep && rep != realRep)
- {
- var items = rep.getContextMenuItems(object, target, Firebug.currentContext);
- if (items)
- Menu.createMenuItems(popup, items);
- }
-
- // 3. Add the custom menu items from the panel
- if (panel)
- {
- var items = panel.getContextMenuItems(realObject, target);
- if (items)
- Menu.createMenuItems(popup, items);
- }
-
- // 4. Add the inspect menu items
- if (realObject && rep && rep.inspectable)
- {
- var items = this.getInspectMenuItems(realObject);
-
- // Separate existing menu items from 'inspect' menu items.
- if (popup.firstChild && items.length > 0)
- Menu.createMenuSeparator(popup);
-
- Menu.createMenuItems(popup, items);
- }
-
- // 5. Add menu items from uiListeners
- var items = [];
- Events.dispatch(Firebug.uiListeners, "onContextMenu", [items, object, target,
- Firebug.currentContext, panel, popup]);
- Menu.createMenuItems(popup, items);
-
- // Make sure there are no unnecessary separators (e.g. at the top or bottom
- // of the popup)
- Menu.optimizeSeparators(popup);
-
- if (!popup.firstChild)
- return false;
- },
-
- getInspectMenuItems: function(object)
- {
- var items = [];
-
- // Domplate (+ support for context menus) can be used even in separate
- // windows when Firebug.currentContext doesn't have to be defined.
- if (!Firebug.currentContext)
- return items;
-
- for (var i = 0; i < Firebug.panelTypes.length; ++i)
- {
- var panelType = Firebug.panelTypes[i];
- if (!panelType.prototype.parentPanel
- && panelType.prototype.name != Firebug.currentContext.panelName
- && panelSupportsObject(panelType, object, Firebug.currentContext))
- {
- var panelName = panelType.prototype.name;
-
- var title = Firebug.getPanelTitle(panelType);
- var label = Locale.$STRF("panel.Inspect_In_Panel", [title]);
- var tooltiptext = Locale.$STRF("panel.tip.Inspect_In_Panel", [title]);
- var id = "InspectIn" + panelName + "Panel";
-
- var command = Obj.bindFixed(this.select, this, object, panelName);
- items.push({label: label, tooltiptext: tooltiptext, command: command, nol10n: true,
- id: id});
- }
- }
-
- return items;
- },
-
- onTooltipShowing: function(event)
- {
- // xxxHonza: This tooltip support can be used even in a separate window, which
- // doesn't contain the Firebug UI (panels).
- //if (!panelBar1.selectedPanel)
- // return false;
-
- var tooltip = FirebugChrome.$("fbTooltip");
- var target = win.document.tooltipNode;
-
- var panel = target ? Firebug.getElementPanel(target) : null;
-
- var object;
-
- /* XXXjjb: This causes the Script panel to show the function body over and over.
- * We need to clear it at least, but actually we need to understand why the tooltip
- * should show the context menu object at all. One thing the contextMenuObject supports
- * is peeking at function bodies when stopped at a breakpoint.
- * That case could be supported with clearing the contextMenuObject, but we don't
- * know if that breaks something else. So maybe a popupMenuObject should be set
- * on the context if that is what we want to support.
- * The other complication is that there seems to be another tooltip.
- if (this.contextMenuObject)
- {
- object = this.contextMenuObject;
- FBTrace.sysout("tooltip by contextMenuObject");
- }
- else*/
-
- if (target && target.ownerDocument == document)
- object = Firebug.getRepObject(target);
- else if (panel)
- object = panel.getTooltipObject(target);
-
- var rep = object ? Firebug.getRep(object, Firebug.currentContext) : null;
- object = rep ? rep.getRealObject(object, Firebug.currentContext) : null;
- rep = object ? Firebug.getRep(object) : null;
-
- if (object && rep)
- {
- var label = rep.getTooltip(object, Firebug.currentContext, target);
- if (label)
- {
- tooltip.setAttribute("label", label);
- return true;
- }
- }
-
- if (Css.hasClass(target, 'noteInToolTip'))
- Css.setClass(tooltip, 'noteInToolTip');
- else
- Css.removeClass(tooltip, 'noteInToolTip');
-
- if (target && target.hasAttribute("title"))
- {
- tooltip.setAttribute("label", target.getAttribute("title"));
- return true;
- }
-
- return false;
- },
-
- openAboutDialog: function()
- {
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("Firebug.openAboutDialog");
-
- try
- {
- // Firefox 4.0+ implements a new AddonManager. In case of Firefox 3.6 the module
- // is not available and there is an exception.
- Components.utils["import"]("resource://gre/modules/AddonManager.jsm");
- }
- catch (err)
- {
- }
-
- if (typeof(AddonManager) != "undefined")
- {
- AddonManager.getAddonByID("firebug at software.joehewitt.com", function(addon)
- {
- openDialog("chrome://mozapps/content/extensions/about.xul", "",
- "chrome,centerscreen,modal", addon);
- });
- }
- else
- {
- var extensionManager = Cc["@mozilla.org/extensions/manager;1"].getService(
- Ci.nsIExtensionManager);
-
- openDialog("chrome://mozapps/content/extensions/about.xul", "",
- "chrome,centerscreen,modal", "urn:mozilla:item:firebug at software.joehewitt.com",
- extensionManager.datasource);
- }
- },
-
- breakOnNext: function(context, event)
- {
- // avoid bubbling from associated options
- if (event.target.id != "cmd_firebug_toggleBreakOn")
- return;
-
- if (!context)
- {
- if (FBTrace.DBG_BP)
- FBTrace.sysout("Firebug chrome: breakOnNext with no context??");
- return;
- }
-
- var panel = panelBar1.selectedPanel;
-
- if (FBTrace.DBG_BP)
- FBTrace.sysout("Firebug chrome: breakOnNext for panel " +
- (panel ? panel.name : "NO panel"), panel);
-
- if (panel && panel.breakable)
- Firebug.Breakpoint.toggleBreakOnNext(panel);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- visitWebsite: function(which, arg)
- {
- var url = firebugURLs[which];
- if (url)
- {
- if (arg)
- url += arg;
-
- Win.openNewTab(url);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Main Toolbar
-
- appendToolbarButton: function(button, before)
- {
- var toolbar = FirebugChrome.$("fbPanelBar1-buttons");
- var element = Toolbar.createToolbarButton(toolbar, button, before);
- element.repObject = button;
- },
-
- removeToolbarButton: function(button)
- {
- var toolbar = FirebugChrome.$("fbPanelBar1-buttons");
- for (var child = toolbar.firstChild; child; child = child.nextSibling)
- {
- if (child.repObject == button)
- {
- toolbar.removeChild(child);
- break;
- }
- }
- }
-};
-
-// ********************************************************************************************* //
-// Local Helpers
-
-function panelSupportsObject(panelType, object, context)
-{
- if (panelType)
- {
- try {
- // This tends to throw exceptions often because some objects are weird
- return panelType.prototype.supportsObject(object, typeof object, context)
- } catch (exc) {}
- }
-
- return 0;
-}
-
-function getBestPanelName(object, context, panelName)
-{
- if (!panelName && context)
- panelName = context.panelName;
-
- // Check if the panel type of the suggested panel supports the object, and if so, go with it.
- if (panelName)
- {
- var panelType = Firebug.getPanelType(panelName);
- if (panelSupportsObject(panelType, object, context))
- return panelType.prototype.name;
- }
-
- // The suggested name didn't pan out, so search for the panel type with the
- // most specific level of support.
- return getBestPanelSupportingObject(object, context);
-}
-
-function getBestPanelSupportingObject(object, context)
-{
- var bestLevel = 0;
- var bestPanel = null;
-
- for (var i = 0; i < Firebug.panelTypes.length; ++i)
- {
- var panelType = Firebug.panelTypes[i];
- if (!panelType.prototype.parentPanel)
- {
- var level = panelSupportsObject(panelType, object, context);
- if (!bestLevel || (level && (level > bestLevel) ))
- {
- bestLevel = level;
- bestPanel = panelType;
- }
-
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("chrome.getBestPanelName panelType: " + panelType.prototype.name +
- " level: " + level + " bestPanel: " +
- (bestPanel ? bestPanel.prototype.name : "null") +
- " bestLevel: " + bestLevel);
- }
- }
-
- return bestPanel ? bestPanel.prototype.name : null;
-}
-
-function getBestSidePanelName(sidePanelName, panelTypes)
-{
- if (sidePanelName)
- {
- // Verify, that the suggested panel name is in the acceptable list.
- for (var i = 0; i < panelTypes.length; ++i)
- {
- if (panelTypes[i].prototype.name == sidePanelName)
- return sidePanelName;
- }
- }
-
- // Default to the first panel type in the list.
- return panelTypes.length ? panelTypes[0].prototype.name : null;
-}
-
-// ********************************************************************************************* //
-// Event listeners
-
-function browser1Loaded()
-{
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("browse1Loaded\n");
-
- var browser1 = panelBar1.browser;
- var browser2 = panelBar2.browser;
- Events.removeEventListener(browser1, "load", browser1Loaded, true);
-
- browser1.contentDocument.title = "Firebug Main Panel";
- browser1.complete = true;
-
- if (browser1.complete && browser2.complete)
- {
- // initializeUI() is executed asynchronously (solves issue 3442)
- // The problem has been introduced (for an unknown reason) by revision R12210
- setTimeout(function() {
- // chrome bound into this scope
- FirebugChrome.initializeUI();
- });
- }
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("browse1Loaded complete\n");
-}
-
-function browser2Loaded()
-{
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("browse2Loaded\n");
-
- var browser1 = panelBar1.browser;
- var browser2 = panelBar2.browser;
- Events.removeEventListener(browser2, "load", browser2Loaded, true);
-
- browser2.contentDocument.title = "Firebug Side Panel";
- browser2.complete = true;
-
- if (browser1.complete && browser2.complete)
- {
- // See browser1Loaded for more info.
- setTimeout(function() {
- // chrome bound into this scope
- FirebugChrome.initializeUI();
- });
- }
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("browse2Loaded complete\n");
-}
-
-function onBlur(event)
-{
- // XXXjjb: this seems like a waste: called continuously to clear possible highlight I guess.
- // XXXhh: Is this really necessary? I disabled it for now as this was preventing me
- // to show highlights on focus
- //Firebug.Inspector.highlightObject(null, Firebug.currentContext);
-}
-
-function onSelectLocation(event)
-{
- try
- {
- var locationList = FirebugChrome.getElementById("fbLocationList");
- var location = locationList.repObject;
-
- FirebugChrome.navigate(location);
- }
- catch (err)
- {
- FBTrace.sysout("chrome.onSelectLocation; EXCEPTION " + err, err);
- }
-}
-
-function onSelectingPanel(event)
-{
- try
- {
- doSelectingPanel(event);
- }
- catch (err)
- {
- FBTrace.sysout("chrome.onSelectingPanel; EXCEPTION " + err, err);
- }
-}
-
-function doSelectingPanel(event)
-{
- var panel = panelBar1.selectedPanel;
- var panelName = panel ? panel.name : null;
-
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("chrome.onSelectingPanel=" + panelName + " Firebug.currentContext=" +
- (Firebug.currentContext ? Firebug.currentContext.getName() : "undefined"));
-
- if (Firebug.currentContext)
- {
- Firebug.currentContext.previousPanelName = Firebug.currentContext.panelName;
- Firebug.currentContext.panelName = panelName;
-
- Firebug.currentContext.sidePanelName =
- Firebug.currentContext.sidePanelNames &&
- panelName in Firebug.currentContext.sidePanelNames
- ? Firebug.currentContext.sidePanelNames[panelName]
- : null;
- }
-
- if (panel)
- panel.navigate(panel.location);
-
- // Hide all toolbars now. It's a responsibility of the new selected panel to show
- // those toolbars, that are necessary. This avoids the situation when a naughty panel
- // doesn't clean up its toolbars. This must be done before 'showPanel' is dispatched,
- // where the visibility of the BON buttons is managed.
- var toolbar = FirebugChrome.$("fbToolbarInner");
- var child = toolbar.firstChild;
- while (child)
- {
- Dom.collapse(child, true);
- child = child.nextSibling;
- }
-
- // Those extensions that don't use XUL overlays (i.e. bootstrapped extensions)
- // can provide toolbar buttons throug Firebug APIs.
- var panelToolbar = FirebugChrome.$("fbPanelToolbar");
- Dom.eraseNode(panelToolbar);
-
- if (panel)
- {
- // get buttons from current panel
- var buttons;
- if (panel.getPanelToolbarButtons)
- buttons = panel.getPanelToolbarButtons();
-
- if (!buttons)
- buttons = [];
-
- Events.dispatch(Firebug.uiListeners, "onGetPanelToolbarButtons", [panel, buttons]);
-
- for (var i=0; i<buttons.length; ++i)
- Toolbar.createToolbarButton(panelToolbar, buttons[i]);
-
- Dom.collapse(panelToolbar, buttons.length == 0);
- }
-
- // Calling Firebug.showPanel causes dispatching 'showPanel' to all modules.
- var browser = panel ? panel.context.browser : Firefox.getCurrentBrowser();
- Firebug.showPanel(browser, panel);
-
- // Synchronize UI around panels. Execute the sync after 'showPanel' so the logic
- // can decide whether to display separators or not.
- // xxxHonza: The command line should be synced here as well.
- Firebug.chrome.syncLocationList();
- Firebug.chrome.syncStatusPath();
-
- //xxxjjb: unfortunately the Stack side panel depends on the status path (sync after.)
- Firebug.chrome.syncSidePanels();
-}
-
-function onMouseScroll(event)
-{
- if (Events.isControlAlt(event))
- {
- Events.cancelEvent(event);
- Firebug.Options.changeTextSize(-event.detail);
- }
-}
-
-function onSelectedSidePanel(event)
-{
- var sidePanel = panelBar2.selectedPanel;
- if (Firebug.currentContext)
- {
- var panelName = Firebug.currentContext.panelName;
- if (panelName)
- {
- var sidePanelName = sidePanel ? sidePanel.name : null;
- Firebug.currentContext.sidePanelNames[panelName] = sidePanelName;
- }
- }
-
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("chrome.onSelectedSidePanel name=" +
- (sidePanel ? sidePanel.name : "undefined"));
-
- var panel = panelBar1.selectedPanel;
- if (panel && sidePanel)
- sidePanel.select(panel.selection);
-
- var browser = sidePanel ? sidePanel.context.browser : Firefox.getCurrentBrowser();
- // dispatch to modules
- Firebug.showSidePanel(browser, sidePanel);
-}
-
-function onPanelMouseOver(event)
-{
- var object = Firebug.getRepObject(event.target);
- if (!object)
- return;
-
- var rep = Firebug.getRep(object, Firebug.currentContext);
- if (rep)
- rep.highlightObject(object, Firebug.currentContext, event.target);
-}
-
-function onPanelMouseOut(event)
-{
- var object = Firebug.getRepObject(event.target);
- if (!object)
- return;
-
- var rep = Firebug.getRep(object, Firebug.currentContext);
- if (rep)
- rep.unhighlightObject(object, Firebug.currentContext, event.target);
-}
-
-function onPanelClick(event)
-{
- var repNode = Firebug.getRepNode(event.target);
- if (repNode)
- {
- var object = repNode.repObject;
- var rep = Firebug.getRep(object, Firebug.currentContext);
- var realObject = rep ? rep.getRealObject(object, Firebug.currentContext) : null;
- var realRep = realObject ? Firebug.getRep(realObject, Firebug.currentContext) : rep;
- if (!realObject)
- realObject = object;
-
- if (Events.isLeftClick(event))
- {
- if (Css.hasClass(repNode, "objectLink"))
- {
- if (realRep)
- {
- realRep.inspectObject(realObject, Firebug.currentContext);
- Events.cancelEvent(event);
- }
- }
- }
- }
-}
-
-var lastMouseDownPosition = {x: -1000, y: -1000};
-function onPanelMouseDown(event)
-{
- if (Events.isLeftClick(event))
- {
- lastMouseDownPosition.x = event.screenX;
- lastMouseDownPosition.y = event.screenY;
- }
- else if (Events.isMiddleClick(event, true) && Events.isControlAlt(event))
- {
- Events.cancelEvent(event);
- Firebug.Options.setTextSize(0);
- }
- else if (Events.isMiddleClick(event) && Firebug.getRepNode(event.target))
- {
- // Prevent auto-scroll when middle-clicking a rep object
- Events.cancelEvent(event);
- }
-}
-
-function onPanelMouseUp(event)
-{
- if (Events.isLeftClick(event))
- {
- var selection = event.target.ownerDocument.defaultView.getSelection();
- var target = selection.focusNode || event.target;
-
- if (Dom.getAncestorByClass(selection.focusNode, "editable") ===
- Dom.getAncestorByClass(selection.anchorNode, "editable"))
- {
- var editable = Dom.getAncestorByClass(target, "editable");
- if (editable || Css.hasClass(event.target, "inlineExpander"))
- {
- var selectionData;
- var unselectedRange = event.target.ownerDocument.createRange();
- var selectedRange = selection.getRangeAt(0);
- unselectedRange.setStart(editable.firstElementChild || editable, 0);
- unselectedRange.setEnd(selectedRange.startContainer, selectedRange.startOffset);
-
- if (selectedRange.collapsed)
- {
- var distance = Math.abs(event.screenX - lastMouseDownPosition.x) +
- Math.abs(event.screenY - lastMouseDownPosition.y);
-
- // If mouse has moved far enough, set selection at that point
- if (distance > 3)
- {
- selectionData =
- {
- start: selectedRange.startOffset,
- end: selectedRange.endOffset
- };
- }
- // otherwise leave selectionData undefined to select all text
- }
- else
- {
- var unselectedRangeLength = unselectedRange.toString().length;
- var selectedRangeLength = selection.getRangeAt(0).toString().length;
- selectionData =
- {
- start: unselectedRangeLength,
- end: unselectedRangeLength + selectedRangeLength
- };
- }
-
- if (editable)
- {
- Firebug.Editor.startEditing(editable, null, null, selectionData);
- }
- else
- {
- Firebug.Editor.setSelection(selectionData);
- selection.removeAllRanges();
- }
-
- Events.cancelEvent(event);
- }
- }
- }
- else if (Events.isControlClick(event) || Events.isMiddleClick(event))
- {
- var repNode = Firebug.getRepNode(event.target);
- if (!repNode)
- return;
-
- var object = repNode.repObject;
- var rep = Firebug.getRep(object, Firebug.currentContext);
- var realObject = rep ? rep.getRealObject(object, Firebug.currentContext) : null;
- var realRep = realObject ? Firebug.getRep(realObject, Firebug.currentContext) : rep;
- if (!realObject)
- realObject = object;
-
- if (!realRep || !realRep.browseObject(realObject, Firebug.currentContext))
- {
- if (rep && !(rep != realRep && rep.browseObject(object, Firebug.currentContext)))
- {
- var panel = Firebug.getElementPanel(event.target);
- if (!panel || !panel.browseObject(realObject))
- return;
- }
- }
- Events.cancelEvent(event);
- }
-}
-
-function onMainTabBoxMouseDown(event)
-{
- if (Firebug.isInBrowser())
- {
- var contentSplitter = FirebugChrome.$("fbContentSplitter");
- // TODO: grab the splitter here.
- }
-}
-
-function stopBubble(event)
-{
- event.stopPropagation();
-}
-
-function getRealObject(object)
-{
- var rep = Firebug.getRep(object, Firebug.currentContext);
- var realObject = rep ? rep.getRealObject(object, Firebug.currentContext) : null;
- return realObject ? realObject : object;
-}
-
-function fatalError(summary, exc)
-{
- if (typeof(FBTrace) !== undefined)
- FBTrace.sysout.apply(FBTrace, arguments);
-
- Components.utils.reportError(summary);
-
- throw exc;
-}
-
-return FirebugChrome;
-
-} // end of createFirebugChrome(win)
-}; // end of var ChromeFactory object
-
-// ********************************************************************************************* //
-
-return ChromeFactory;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+/**
+ * The 'context' in this file is always 'Firebug.currentContext'
+ */
+define([
+ "firebug/lib/object",
+ "firebug/chrome/firefox",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/lib/system",
+ "firebug/chrome/menu",
+ "firebug/chrome/toolbar",
+ "firebug/lib/url",
+ "firebug/lib/locale",
+ "firebug/lib/string",
+ "firebug/lib/events",
+ "firebug/js/fbs",
+ "firebug/chrome/window",
+ "firebug/lib/options"
+],
+function chromeFactory(Obj, Firefox, Dom, Css, System, Menu, Toolbar, Url, Locale, String,
+ Events, FBS, Win, Options) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const nsIWebNavigation = Ci.nsIWebNavigation;
+
+const wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
+
+const LOAD_FLAGS_BYPASS_PROXY = nsIWebNavigation.LOAD_FLAGS_BYPASS_PROXY;
+const LOAD_FLAGS_BYPASS_CACHE = nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE;
+const LOAD_FLAGS_NONE = nsIWebNavigation.LOAD_FLAGS_NONE;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// URLs used in the Firebug Menu and several other places
+const firebugURLs =
+{
+ main: "https://getfirebug.com",
+ help: "https://getfirebug.com/help",
+ FAQ: "https://getfirebug.com/wiki/index.php/FAQ",
+ docs: "https://getfirebug.com/docs.html",
+ keyboard: "https://getfirebug.com/wiki/index.php/Keyboard_and_Mouse_Shortcuts",
+ discuss: "https://groups.google.com/forum/#!forum/firebug",
+ issues: "http://code.google.com/p/fbug/issues/list?can=1",
+ donate: "https://getfirebug.com/getinvolved",
+ extensions: "https://getfirebug.com/wiki/index.php/Firebug_Extensions",
+ issue5110: "http://code.google.com/p/fbug/issues/detail?id=5110"
+};
+
+const statusCropSize = 20;
+
+// ********************************************************************************************* //
+
+// factory is global in module loading window
+var ChromeFactory =
+{
+
+// chrome is created in caller window.
+createFirebugChrome: function(win)
+{
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Private
+
+ var panelSplitter, sidePanelDeck, panelBar1, panelBar2;
+
+var FirebugChrome =
+{
+ // TODO: remove this property, add getters for location, title, focusedElement, setter popup
+ dispatchName: "FirebugChrome",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Initialization
+
+ /**
+ * Called by panelBarWaiter when XUL panelBar(s) (main and side) are constructed
+ * (i.e. the constructor of panelBar binding is executed twice) and when all Firebug
+ * modules + extension modules (if any) are loaded.
+ */
+ initialize: function()
+ {
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("chrome.initialize;");
+
+ this.window = win;
+
+ panelSplitter = this.getElementById("fbPanelSplitter");
+ sidePanelDeck = this.getElementById("fbSidePanelDeck");
+ panelBar1 = this.getElementById("fbPanelBar1");
+ panelBar2 = this.getElementById("fbPanelBar2");
+
+ // Firebug has not been initialized yet
+ if (!Firebug.isInitialized)
+ Firebug.initialize(this);
+
+ // FBL should be available at this moment.
+ if (FBTrace.sysout && (!FBL || !FBL.initialize))
+ {
+ FBTrace.sysout("Firebug is broken, FBL incomplete, if the last function is QI, " +
+ "check lib.js:", FBL);
+ }
+
+ var browser1Complete = false;
+ var browser2Complete = false;
+
+ if (panelBar1)
+ {
+ var browser1 = panelBar1.browser;
+ browser1Complete = browser1.complete;
+
+ if (!browser1Complete)
+ Events.addEventListener(browser1, "load", browser1Loaded, true);
+
+ browser1.droppedLinkHandler = function()
+ {
+ return false;
+ };
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("chrome.browser1.complete; " + browser1Complete);
+ }
+
+ if (panelBar2)
+ {
+ var browser2 = panelBar2.browser;
+ browser2Complete = browser2.complete;
+
+ if (!browser2Complete)
+ Events.addEventListener(browser2, "load", browser2Loaded, true);
+
+ browser2.droppedLinkHandler = function()
+ {
+ return false;
+ };
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("chrome.browser2.complete; " + browser2Complete);
+ }
+
+ Events.addEventListener(win, "blur", onBlur, true);
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("chrome.initialized in " + win.location + " with " +
+ (panelBar1 ? panelBar1.browser.ownerDocument.documentURI : "no panel bar"), win);
+
+ // At this point both panelBars can be loaded already, since the src is specified
+ // in firebugOverlay.xul (asynchronously loaded). If yes, start up the initialization
+ // sequence now.
+ if (browser1Complete && browser2Complete)
+ {
+ setTimeout(function()
+ {
+ // chrome bound into this scope
+ FirebugChrome.initializeUI();
+ });
+ }
+ },
+
+ /**
+ * Called when the UI is ready to be initialized, once the panel browsers are loaded.
+ */
+ initializeUI: function()
+ {
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("chrome.initializeUI;");
+
+ // listen for panel updates
+ Firebug.registerUIListener(this);
+
+ try
+ {
+ var cmdPopupBrowser = this.getElementById("fbCommandPopupBrowser");
+
+ this.applyTextSize(Firebug.textSize);
+
+ var doc1 = panelBar1.browser.contentDocument;
+ Events.addEventListener(doc1, "mouseover", onPanelMouseOver, false);
+ Events.addEventListener(doc1, "mouseout", onPanelMouseOut, false);
+ Events.addEventListener(doc1, "mousedown", onPanelMouseDown, false);
+ Events.addEventListener(doc1, "mouseup", onPanelMouseUp, false);
+ Events.addEventListener(doc1, "click", onPanelClick, false);
+ Events.addEventListener(panelBar1, "selectingPanel", onSelectingPanel, false);
+ Events.addEventListener(panelBar1, "DOMMouseScroll", onMouseScroll, false);
+
+ var doc2 = panelBar2.browser.contentDocument;
+ Events.addEventListener(doc2, "mouseover", onPanelMouseOver, false);
+ Events.addEventListener(doc2, "mouseout", onPanelMouseOut, false);
+ Events.addEventListener(doc2, "click", onPanelClick, false);
+ Events.addEventListener(doc2, "mousedown", onPanelMouseDown, false);
+ Events.addEventListener(doc2, "mouseup", onPanelMouseUp, false);
+ Events.addEventListener(panelBar2, "selectPanel", onSelectedSidePanel, false);
+
+ var doc3 = cmdPopupBrowser.contentDocument;
+ Events.addEventListener(doc3, "mouseover", onPanelMouseOver, false);
+ Events.addEventListener(doc3,"mouseout", onPanelMouseOut, false);
+ Events.addEventListener(doc3, "mousedown", onPanelMouseDown, false);
+ Events.addEventListener(doc3, "click", onPanelClick, false);
+
+ var mainTabBox = panelBar1.ownerDocument.getElementById("fbPanelBar1-tabBox");
+ Events.addEventListener(mainTabBox, "mousedown", onMainTabBoxMouseDown, false);
+
+ // The side panel bar doesn't care about this event. It must, however,
+ // prevent it from bubbling now that we allow the side panel bar to be
+ // *inside* the main panel bar.
+ Events.addEventListener(panelBar2, "selectingPanel", stopBubble, false);
+
+ var locationList = this.getElementById("fbLocationList");
+ Events.addEventListener(locationList, "selectObject", onSelectLocation, false);
+
+ this.updatePanelBar1(Firebug.panelTypes);
+
+ // Internationalize Firebug UI before firing initializeUI
+ // (so putting version into Firebug About menu operates with correct label)
+ Firebug.internationalizeUI(win.document);
+ Firebug.internationalizeUI(top.document);
+
+ // xxxHonza: Is there any reason why we don't distribute "initializeUI"?
+ // event to modules?
+ Firebug.initializeUI();
+
+ // Append all registered stylesheets into Firebug UI
+ for (var i=0; i<Firebug.stylesheets.length; i++)
+ {
+ var uri = Firebug.stylesheets[i];
+ this.appendStylesheet(uri);
+ }
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("chrome.initializeUI; Custom stylesheet appended " +
+ Firebug.stylesheets.length, Firebug.stylesheets);
+
+ // Fire event for window event listeners
+ Firebug.sendLoadEvent();
+ }
+ catch (exc)
+ {
+ fatalError("chrome.initializeUI ERROR "+exc, exc);
+ }
+ },
+
+ shutdown: function()
+ {
+ var doc1 = panelBar1.browser.contentDocument;
+ Events.removeEventListener(doc1, "mouseover", onPanelMouseOver, false);
+ Events.removeEventListener(doc1, "mouseout", onPanelMouseOut, false);
+ Events.removeEventListener(doc1, "mousedown", onPanelMouseDown, false);
+ Events.removeEventListener(doc1, "mouseup", onPanelMouseUp, false);
+ Events.removeEventListener(doc1, "click", onPanelClick, false);
+ Events.removeEventListener(panelBar1, "selectingPanel", onSelectingPanel, false);
+ Events.removeEventListener(panelBar1, "DOMMouseScroll", onMouseScroll, false);
+
+ var doc2 = panelBar2.browser.contentDocument;
+ Events.removeEventListener(doc2, "mouseover", onPanelMouseOver, false);
+ Events.removeEventListener(doc2, "mouseout", onPanelMouseOut, false);
+ Events.removeEventListener(doc2, "mousedown", onPanelMouseDown, false);
+ Events.removeEventListener(doc2, "mouseup", onPanelMouseUp, false);
+ Events.removeEventListener(doc2, "click", onPanelClick, false);
+ Events.removeEventListener(panelBar2, "selectPanel", onSelectedSidePanel, false);
+ Events.removeEventListener(panelBar2, "selectingPanel", stopBubble, false);
+
+ var cmdPopupBrowser = this.getElementById("fbCommandPopupBrowser");
+ var doc3 = cmdPopupBrowser.contentDocument;
+ Events.removeEventListener(doc3, "mouseover", onPanelMouseOver, false);
+ Events.removeEventListener(doc3, "mouseout", onPanelMouseOut, false);
+ Events.removeEventListener(doc3, "mousedown", onPanelMouseDown, false);
+ Events.removeEventListener(doc3, "click", onPanelClick, false);
+
+ var mainTabBox = panelBar1.ownerDocument.getElementById("fbPanelBar1-tabBox");
+ Events.removeEventListener(mainTabBox, "mousedown", onMainTabBoxMouseDown, false);
+
+ var locationList = this.getElementById("fbLocationList");
+ Events.removeEventListener(locationList, "selectObject", onSelectLocation, false);
+
+ Events.removeEventListener(win, "blur", onBlur, true);
+
+ Firebug.unregisterUIListener(this);
+
+ Firebug.shutdown();
+
+ if (FBTrace.DBG_EVENTLISTENERS)
+ {
+ var info = [];
+ var listeners = Firebug.Events.getRegisteredListeners();
+ for (var i=0; i<listeners.length; i++)
+ {
+ var listener = listeners[i];
+ info.push({
+ parentId: listener.parentId,
+ evendId: listener.eventId,
+ capturing: listener.capturing,
+ stack: listener.stack,
+ });
+ }
+
+ FBTrace.sysout("firebug.shutdownFirebug; listeners: " + info.length, info);
+ }
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("chrome.shutdown; Done for " + win.location);
+ },
+
+ /**
+ * Checks if the Firebug window has the focus (is the most recent window)
+ */
+ hasFocus: function()
+ {
+ try
+ {
+ // If the ID of the active element is related to Firebug, it must have the focus
+ var windowID = wm.getMostRecentWindow(null).document.activeElement.id;
+ return ["firebug", "fbMainContainer"].indexOf(windowID) !== -1;
+ }
+ catch(ex)
+ {
+ return false;
+ }
+ },
+
+ appendStylesheet: function(uri)
+ {
+ var cmdPopupBrowser = this.getElementById("fbCommandPopupBrowser");
+
+ var doc1 = panelBar1.browser.contentDocument;
+ var doc2 = panelBar2.browser.contentDocument;
+ var doc3 = cmdPopupBrowser.contentDocument;
+
+ Css.appendStylesheet(doc1, uri);
+ Css.appendStylesheet(doc2, uri);
+ Css.appendStylesheet(doc3, uri);
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("chrome.appendStylesheet; " + uri);
+ },
+
+ updateOption: function(name, value)
+ {
+ if (panelBar1 && panelBar1.selectedPanel)
+ panelBar1.selectedPanel.updateOption(name, value);
+
+ if (panelBar2 && panelBar2.selectedPanel)
+ panelBar2.selectedPanel.updateOption(name, value);
+
+ if (name == "textSize")
+ this.applyTextSize(value);
+
+ if (name == "omitObjectPathStack")
+ this.obeyOmitObjectPathStack(value);
+
+ if (name == "viewPanelOrient")
+ this.updateOrient(value);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ disableOff: function(collapse)
+ {
+ // disable/enable this button in the Firebug.chrome window
+ Dom.collapse(FirebugChrome.$("fbCloseButton"), collapse);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getPanelDocument: function(panelType)
+ {
+ var cmdPopup = this.getElementById("fbCommandPopup");
+ var cmdPopupBrowser = this.getElementById("fbCommandPopupBrowser");
+
+ // Command Line Popup can be displayed for all the other panels
+ // (except for the Console panel)
+ // XXXjjb, xxxHonza, xxxsz: this should be somehow better, more generic and extensible,
+ // e.g. by asking each panel if it supports the Command Line Popup
+ var consolePanelType = Firebug.getPanelType("console");
+ if (consolePanelType == panelType)
+ {
+ if (!Dom.isCollapsed(cmdPopup))
+ return cmdPopupBrowser.contentDocument;
+ }
+
+ // Standard panel and side panel documents.
+ if (!panelType.prototype.parentPanel)
+ return panelBar1.browser.contentDocument;
+ else
+ return panelBar2.browser.contentDocument;
+ },
+
+ getPanelBrowser: function(panel)
+ {
+ if (!panel.parentPanel)
+ return panelBar1.browser;
+ else
+ return panelBar2.browser;
+ },
+
+ savePanels: function()
+ {
+ var path = this.writePanels(panelBar1.browser.contentDocument);
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("Wrote panels to "+path+"\n");
+ },
+
+ writePanels: function(doc)
+ {
+ var serializer = new XMLSerializer();
+ var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
+ .createInstance(Components.interfaces.nsIFileOutputStream);
+ var file = Components.classes["@mozilla.org/file/directory_service;1"]
+ .getService(Components.interfaces.nsIProperties)
+ .get("TmpD", Components.interfaces.nsIFile);
+
+ // extensions sub-directory
+ file.append("firebug");
+ file.append("panelSave.html");
+ file.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0666);
+ // write, create, truncate
+ foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0);
+ // remember, doc is the DOM tree
+ serializer.serializeToStream(doc, foStream, "");
+ foStream.close();
+ return file.path;
+ },
+
+ // part of initializeUI
+ updatePanelBar1: function(panelTypes)
+ {
+ var mainPanelTypes = [];
+ for (var i = 0; i < panelTypes.length; ++i)
+ {
+ var panelType = panelTypes[i];
+ if (!panelType.prototype.parentPanel && !panelType.hidden)
+ mainPanelTypes.push(panelType);
+ }
+ panelBar1.updatePanels(mainPanelTypes);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getName: function()
+ {
+ return win ? win.location.href : null;
+ },
+
+ close: function()
+ {
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("chrome.close closing window "+win.location);
+ win.close();
+ },
+
+ focus: function()
+ {
+ win.focus();
+ panelBar1.browser.contentWindow.focus();
+ },
+
+ isFocused: function()
+ {
+ return wm.getMostRecentWindow(null) == win;
+ },
+
+ focusWatch: function(context)
+ {
+ if (Firebug.isDetached())
+ Firebug.chrome.focus();
+ else
+ Firebug.toggleBar(true);
+
+ Firebug.chrome.selectPanel("script");
+
+ var watchPanel = context.getPanel("watches", true);
+ if (watchPanel)
+ {
+ watchPanel.editNewWatch();
+ }
+ },
+
+ isOpen: function()
+ {
+ return !(FirebugChrome.$("fbContentBox").collapsed);
+ },
+
+ toggleOpen: function(shouldShow)
+ {
+ var contentBox = Firebug.chrome.$("fbContentBox");
+ contentBox.setAttribute("collapsed", !shouldShow);
+
+ if (!this.inDetachedScope)
+ {
+ Dom.collapse(Firefox.getElementById('fbMainFrame'), !shouldShow);
+
+ var contentSplitter = Firefox.getElementById('fbContentSplitter');
+ if (contentSplitter)
+ contentSplitter.setAttribute("collapsed", !shouldShow);
+ }
+
+ if (shouldShow && !this.positionInitialzed)
+ {
+ this.positionInitialzed = true;
+ if (Firebug.framePosition != "detached" && Firebug.framePosition != "bottom")
+ {
+ // null only updates frame position without side effects
+ this.setPosition();
+ }
+ }
+ },
+
+ onDetach: function()
+ {
+ if(!Firebug.currentContext)
+ Firebug.toggleBar(true);
+ else
+ Firebug.showBar(true);
+ },
+
+ onUndetach: function()
+ {
+ Dom.collapse(Firebug.chrome.$('fbResumeBox'), true);
+ Dom.collapse(Firebug.chrome.$("fbContentBox"), false);
+ },
+
+ // only called when detached
+ syncResumeBox: function(context)
+ {
+ var resumeBox = Firebug.chrome.$('fbResumeBox');
+
+ // xxxHonza: Don't focus the Firebug window now. It would bring the detached Firebug window
+ // to the top every time the attached Firefox page is refreshed, which is annoying.
+ //this.focus(); // bring to users attention
+
+ if (context)
+ {
+ Firebug.chrome.toggleOpen(true);
+ Firebug.chrome.syncPanel();
+ Dom.collapse(resumeBox, true);
+ }
+ else
+ {
+ Firebug.chrome.toggleOpen(false);
+ Dom.collapse(resumeBox, false);
+
+ Firebug.chrome.window.parent.document.title =
+ Locale.$STR("Firebug - inactive for current website");
+ }
+ },
+
+ reload: function(skipCache)
+ {
+ var reloadFlags = skipCache
+ ? LOAD_FLAGS_BYPASS_PROXY | LOAD_FLAGS_BYPASS_CACHE
+ : LOAD_FLAGS_NONE;
+
+ // Make sure the selected tab in the attached browser window is refreshed.
+ var browser = Firefox.getCurrentBrowser();
+ browser.firebugReload = true;
+ browser.webNavigation.reload(reloadFlags);
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("chrome.reload; " + skipCache + ", " + browser.currentURI.spec);
+ },
+
+ gotoPreviousTab: function()
+ {
+ if (Firebug.currentContext.previousPanelName)
+ this.selectPanel(Firebug.currentContext.previousPanelName);
+ },
+
+ gotoSiblingTab : function(goRight)
+ {
+ if (FirebugChrome.$("fbContentBox").collapsed)
+ return;
+ var i, currentIndex = newIndex = -1, currentPanel = this.getSelectedPanel(), newPanel;
+ var panelTypes = Firebug.getMainPanelTypes(Firebug.currentContext);
+
+ // get the current panel's index (is there a simpler way for this?)
+ for (i = 0; i < panelTypes.length; i++)
+ {
+ if (panelTypes[i].prototype.name === currentPanel.name)
+ {
+ currentIndex = i;
+ break;
+ }
+ }
+
+ if (currentIndex != -1)
+ {
+ newIndex = goRight ? (currentIndex == panelTypes.length - 1 ?
+ 0 : ++currentIndex) : (currentIndex == 0 ? panelTypes.length - 1 : --currentIndex);
+
+ newPanel = panelTypes[newIndex].prototype;
+ if (newPanel && newPanel.name)
+ {
+ this.selectPanel(newPanel.name);
+ }
+ }
+ },
+
+ getNextObject: function(reverse)
+ {
+ var panel = Firebug.currentContext.getPanel(Firebug.currentContext.panelName);
+ if (panel)
+ {
+ var panelStatus = this.getElementById("fbPanelStatus");
+ var item = panelStatus.getItemByObject(panel.selection);
+ if (item)
+ {
+ if (reverse)
+ item = item.previousSibling ? item.previousSibling.previousSibling : null;
+ else
+ item = item.nextSibling ? item.nextSibling.nextSibling : null;
+
+ if (item)
+ return item.repObject;
+ }
+ }
+ },
+
+ gotoNextObject: function(reverse)
+ {
+ var nextObject = this.getNextObject(reverse);
+ if (nextObject)
+ this.select(nextObject);
+ else
+ System.beep();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Panels
+
+ /**
+ * Set this.location on the current panel or one given by name.
+ * The location object should be known to the caller to be of the correct type for the panel,
+ * e.g. SourceFile for Script panel
+ * @param object location object, null selects default location
+ * @param panelName name of the panel to select, null means current panel
+ * @param sidePanelName name of the side panel to select
+ */
+ navigate: function(object, panelName, sidePanelName)
+ {
+ var panel;
+ if (panelName || sidePanelName)
+ panel = this.selectPanel(panelName, sidePanelName);
+ else
+ panel = this.getSelectedPanel();
+
+ if (panel)
+ panel.navigate(object);
+ },
+
+ /**
+ * Set this.selection by object type analysis, passing the object to all panels to
+ * find the best match
+ * @param object new this.selection object
+ * @param panelName matching panel.name will be used, if its supportsObject returns true
+ * @param sidePanelName default side panel name used, if its supportsObject returns true
+ * @param forceUpdate if true, then (object === this.selection) is ignored and
+ * updateSelection is called
+ */
+ select: function(object, panelName, sidePanelName, forceUpdate)
+ {
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("chrome.select object:"+object+" panelName:"+panelName+
+ " sidePanelName:"+sidePanelName+" forceUpdate:"+forceUpdate+"\n");
+
+ var bestPanelName = getBestPanelName(object, Firebug.currentContext, panelName);
+
+ // allow refresh if needed (last argument)
+ var panel = this.selectPanel(bestPanelName, sidePanelName/*, true*/);
+ if (panel)
+ panel.select(object, forceUpdate);
+
+ // issue 4778
+ this.syncLocationList();
+ },
+
+ selectPanel: function(panelName, sidePanelName, noRefresh)
+ {
+ if (panelName && sidePanelName)
+ Firebug.currentContext.sidePanelNames[panelName] = sidePanelName;
+
+ // cause panel visibility changes and events
+ return panelBar1.selectPanel(panelName, false, noRefresh);
+ },
+
+ selectSidePanel: function(panelName)
+ {
+ return panelBar2.selectPanel(panelName);
+ },
+
+ selectSupportingPanel: function(object, context, forceUpdate)
+ {
+ var bestPanelName = getBestPanelSupportingObject(object, context);
+ var panel = this.selectPanel(bestPanelName, false, true);
+ if (panel)
+ panel.select(object, forceUpdate);
+ },
+
+ clearPanels: function()
+ {
+ panelBar1.hideSelectedPanel();
+ panelBar1.selectedPanel = null;
+ panelBar2.selectedPanel = null;
+ },
+
+ getSelectedPanel: function()
+ {
+ return panelBar1 ? panelBar1.selectedPanel : null;
+ },
+
+ getSelectedSidePanel: function()
+ {
+ return panelBar2 ? panelBar2.selectedPanel : null;
+ },
+
+ switchToPanel: function(context, switchToPanelName)
+ {
+ // Remember the previous panel and bar state so we can revert if the user cancels.
+ this.previousPanelName = context.panelName;
+ this.previousSidePanelName = context.sidePanelName;
+ this.previouslyCollapsed = FirebugChrome.$("fbContentBox").collapsed;
+
+ // TODO previouslyMinimized
+ this.previouslyFocused = Firebug.isDetached() && this.isFocused();
+
+ var switchPanel = this.selectPanel(switchToPanelName);
+ if (switchPanel)
+ this.previousObject = switchPanel.selection;
+
+ return switchPanel;
+ },
+
+ unswitchToPanel: function(context, switchToPanelName, canceled)
+ {
+ var switchToPanel = context.getPanel(switchToPanelName);
+
+ if (this.previouslyFocused)
+ this.focus();
+
+ if (canceled && this.previousPanelName)
+ {
+ // revert
+ if (this.previouslyCollapsed)
+ Firebug.showBar(false);
+
+ if (this.previousPanelName == switchToPanelName)
+ switchToPanel.select(this.previousObject);
+ else
+ this.selectPanel(this.previousPanelName, this.previousSidePanelName);
+ }
+ else
+ {
+ // else stay on the switchToPanel
+ this.selectPanel(switchToPanelName);
+ if (switchToPanel.selection)
+ this.select(switchToPanel.selection);
+ this.getSelectedPanel().panelNode.focus();
+ }
+
+ delete this.previousObject;
+ delete this.previousPanelName;
+ delete this.previousSidePanelName;
+ delete this.inspectingChrome;
+
+ return switchToPanel;
+ },
+
+ getSelectedPanelURL: function()
+ {
+ var location = null;
+ if (Firebug.currentContext)
+ {
+ var panel = Firebug.chrome.getSelectedPanel();
+ if (panel)
+ {
+ location = panel.location;
+ if (!location && panel.name == "html")
+ location = Firebug.currentContext.window.document.location;
+
+ if (location && (location instanceof Firebug.SourceFile ||
+ location instanceof CSSStyleSheet))
+ location = location.href;
+ }
+ }
+
+ if (!location)
+ {
+ var currentURI = Firefox.getCurrentURI();
+ if (currentURI)
+ location = currentURI.asciiSpec;
+ }
+
+ if (!location)
+ return;
+
+ location = location.href || location.url || location.toString();
+ if (Firebug.filterSystemURLs && Url.isSystemURL(location))
+ return;
+
+ return location;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Location interface provider for binding.xml panelFileList
+
+ getLocationProvider: function()
+ {
+ // a function that returns an object with .getObjectDescription() and .getLocationList()
+ return function getSelectedPanelFromCurrentContext()
+ {
+ // panels provide location, use the selected panel
+ return Firebug.chrome.getSelectedPanel();
+ };
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // UI Synchronization
+
+ setFirebugContext: function(context)
+ {
+ // This sets the global value of Firebug.currentContext in the window, that this
+ // chrome is compiled into. Note, that for firebug.xul the Firebug object is shared
+ // across windows, but not FirebugChrome and Firebug.currentContext.
+ Firebug.currentContext = context;
+
+ if (FBTrace.DBG_WINDOWS || FBTrace.DBG_DISPATCH || FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("setFirebugContext "+(Firebug.currentContext?
+ Firebug.currentContext.getName():" **> NULL <** ") + " in "+win.location);
+ },
+
+ hidePanel: function()
+ {
+ if (panelBar1.selectedPanel)
+ panelBar1.hideSelectedPanel();
+
+ if (panelBar2.selectedPanel)
+ panelBar2.hideSelectedPanel();
+ },
+
+ syncPanel: function(panelName)
+ {
+ var context = Firebug.currentContext;
+
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("chrome.syncPanel Firebug.currentContext=" +
+ (context ? context.getName() : "undefined"));
+
+ var panelStatus = this.getElementById("fbPanelStatus");
+ panelStatus.clear();
+
+ if (context)
+ {
+ if (!panelName)
+ panelName = context.panelName? context.panelName : Firebug.defaultPanelName;
+
+ // Make the HTML panel the default panel, which is displayed
+ // to the user the very first time.
+ if (!panelName || !Firebug.getPanelType(panelName))
+ panelName = "html";
+
+ this.syncMainPanels();
+ panelBar1.selectPanel(panelName, true);
+ }
+ else
+ {
+ panelBar1.selectPanel(null, true);
+ }
+
+ if (Firebug.isDetached())
+ this.syncTitle();
+ },
+
+ syncMainPanels: function()
+ {
+ if (Firebug.currentContext)
+ {
+ var panelTypes = Firebug.getMainPanelTypes(Firebug.currentContext);
+ panelBar1.updatePanels(panelTypes);
+
+ // Update also BON tab flag (orange background if BON is active)
+ // every time the user changes the current tab in Firefox.
+ Firebug.Breakpoint.updatePanelTabs(Firebug.currentContext);
+ }
+ },
+
+ syncSidePanels: function()
+ {
+ if (FBTrace.DBG_PANELS)
+ {
+ FBTrace.sysout("chrome.syncSidePanels; main panel: " +
+ (panelBar1.selectedPanel ? panelBar1.selectedPanel.name : "no panel") +
+ ", side panel: " +
+ (panelBar2.selectedPanel ? panelBar2.selectedPanel.name : "no panel"));
+ }
+
+ if (!panelBar1.selectedPanel)
+ return;
+
+ var panelTypes;
+ if (Firebug.currentContext)
+ {
+ panelTypes = Firebug.getSidePanelTypes(Firebug.currentContext,
+ panelBar1.selectedPanel);
+ panelBar2.updatePanels(panelTypes);
+ }
+
+ if (Firebug.currentContext && Firebug.currentContext.sidePanelNames)
+ {
+ if (!panelBar2.selectedPanel ||
+ (panelBar2.selectedPanel.parentPanel !== panelBar1.selectedPanel.name))
+ {
+ var sidePanelName = Firebug.currentContext.sidePanelNames[
+ Firebug.currentContext.panelName];
+ sidePanelName = getBestSidePanelName(sidePanelName, panelTypes);
+ panelBar2.selectPanel(sidePanelName, true);
+ }
+ else
+ {
+ // If the context changes, we need to refresh the panel.
+ panelBar2.selectPanel(panelBar2.selectedPanel.name, true);
+ }
+ }
+ else
+ {
+ panelBar2.selectPanel(null);
+ }
+
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("chrome.syncSidePanels; selected side panel " + panelBar1.selectedPanel);
+
+ sidePanelDeck.selectedPanel = panelBar2;
+
+ Dom.collapse(sidePanelDeck, !panelBar2.selectedPanel);
+ Dom.collapse(panelSplitter, !panelBar2.selectedPanel);
+
+ Events.dispatch(Firebug.uiListeners, "updateSidePanels", [panelBar1.selectedPanel]);
+ },
+
+ syncTitle: function()
+ {
+ if (Firebug.currentContext)
+ {
+ var title = Firebug.currentContext.getTitle();
+ win.parent.document.title = Locale.$STRF("WindowTitle", [title]);
+ }
+ else
+ {
+ win.parent.document.title = Locale.$STR("Firebug");
+ }
+ },
+
+ focusLocationList: function()
+ {
+ var locationList = this.getElementById("fbLocationList");
+ locationList.popup.showPopup(locationList, -1, -1, "popup", "bottomleft", "topleft");
+ },
+
+ syncLocationList: function()
+ {
+ var locationButtons = this.getElementById("fbLocationButtons");
+
+ var panel = panelBar1.selectedPanel;
+ if (panel && panel.location)
+ {
+ var locationList = this.getElementById("fbLocationList");
+ locationList.location = panel.location;
+
+ Dom.collapse(locationButtons, false);
+ }
+ else
+ {
+ Dom.collapse(locationButtons, true);
+ }
+ },
+
+ clearStatusPath: function()
+ {
+ var panelStatus = this.getElementById("fbPanelStatus");
+ panelStatus.clear();
+ },
+
+ syncStatusPath: function()
+ {
+ var panelStatus = this.getElementById("fbPanelStatus");
+ var panelStatusSeparator = this.getElementById("fbStatusSeparator");
+ var panel = panelBar1.selectedPanel;
+
+ if (!panel || (panel && !panel.selection))
+ {
+ panelStatus.clear();
+ }
+ else
+ {
+ var path = panel.getObjectPath(panel.selection);
+ if (!path || !path.length)
+ {
+ Dom.hide(panelStatusSeparator, true);
+ panelStatus.clear();
+ }
+ else
+ {
+ // Update the visibility of the separator. The separator
+ // is displayed only if there are some other buttons on the left side.
+ // Before showing the status separator let's see whether there are any other
+ // buttons on the left.
+ var hide = true;
+ var sibling = panelStatusSeparator.parentNode.previousSibling;
+ while (sibling)
+ {
+ if (!Dom.isCollapsed(sibling))
+ {
+ hide = false;
+ break;
+ }
+ sibling = sibling.previousSibling;
+ }
+ Dom.hide(panelStatusSeparator, hide);
+
+ if (panel.name != panelStatus.lastPanelName)
+ panelStatus.clear();
+
+ panelStatus.lastPanelName = panel.name;
+
+ // If the object already exists in the list, just select it and keep the path.
+ var selection = panel.selection;
+ var existingItem = panelStatus.getItemByObject(panel.selection);
+ if (existingItem)
+ {
+ // Update the labels of the status path elements, because it can be,
+ // that the elements changed even when the selected element exists
+ // inside the path (issue 4826)
+ var statusItems = panelStatus.getItems();
+ for (var i = 0; i < statusItems.length; ++i)
+ {
+ var object = Firebug.getRepObject(statusItems[i]);
+ var rep = Firebug.getRep(object, Firebug.currentContext);
+ var objectTitle = rep.getTitle(object, Firebug.currentContext);
+ var title = String.cropMultipleLines(objectTitle, statusCropSize);
+
+ statusItems[i].label = title;
+ }
+ panelStatus.selectItem(existingItem);
+ }
+ else
+ {
+ panelStatus.clear();
+
+ for (var i = 0; i < path.length; ++i)
+ {
+ var object = path[i];
+
+ var rep = Firebug.getRep(object, Firebug.currentContext);
+ var objectTitle = rep.getTitle(object, Firebug.currentContext);
+
+ var title = String.cropMultipleLines(objectTitle, statusCropSize);
+ panelStatus.addItem(title, object, rep, panel.statusSeparator);
+ }
+
+ panelStatus.selectObject(panel.selection);
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("syncStatusPath "+path.length+" items ", path);
+ }
+ }
+ }
+ },
+
+ toggleOrient: function(preferredValue)
+ {
+ var value = Options.get("viewPanelOrient");
+ if (value == preferredValue)
+ return;
+
+ Options.togglePref("viewPanelOrient");
+ },
+
+ updateOrient: function(value)
+ {
+ var panelPane = FirebugChrome.$("fbPanelPane");
+ if (!panelPane)
+ return;
+
+ var newOrient = value ? "vertical" : "horizontal";
+ if (panelPane.orient == newOrient)
+ return;
+
+ panelSplitter.orient = panelPane.orient = newOrient;
+ },
+
+ setPosition: function(pos)
+ {
+ if (Firebug.framePosition == pos)
+ return;
+
+ if (pos)
+ {
+ if (Firebug.getSuspended())
+ Firebug.toggleBar();
+ }
+ else
+ {
+ pos = Firebug.framePosition;
+ }
+
+ if (pos == "detached")
+ {
+ Firebug.toggleDetachBar(true, true);
+ return;
+ }
+
+ if (Firebug.isDetached())
+ Firebug.toggleDetachBar(false, true);
+
+ pos && this.syncPositionPref(pos);
+
+ var vertical = pos == "top" || pos == "bottom";
+ var after = pos == "bottom" || pos == "right";
+
+ var document = window.parent.document;
+ var container = document.getElementById(vertical ? "appcontent" : "browser");
+
+ var splitter = Firefox.getElementById("fbContentSplitter");
+ splitter.setAttribute("orient", vertical ? "vertical" : "horizontal");
+ splitter.setAttribute("dir", after ? "" : "reverse");
+ container.insertBefore(splitter, after ? null: container.firstChild);
+
+ var frame = document.getElementById("fbMainFrame");
+
+ var newFrame = frame.cloneNode(true);
+ var newBrowser = newFrame.querySelector("#fbMainContainer");
+ var oldBrowser = frame.querySelector("#fbMainContainer");
+
+ newBrowser.removeAttribute("src");
+ container.insertBefore(newFrame, after ? null: container.firstChild);
+
+ this.swapBrowsers(oldBrowser, newBrowser);
+ this.browser = newBrowser;
+
+ frame.parentNode.removeChild(frame);
+ this.framePosition = pos;
+ },
+
+ syncPositionPref: function(pos)
+ {
+ if (!pos)
+ {
+ if (Firebug.isDetached())
+ pos = "detached";
+ else
+ pos = this.framePosition || 'bottom';
+ }
+
+ Firebug.Options.set("framePosition", pos);
+ return Firebug.framePosition = pos;
+ },
+
+ swapBrowsers: function(oldBrowser, newBrowser)
+ {
+ var oldDoc = oldBrowser.contentDocument;
+ // Panels remember the top window, for which they were first opened.
+ // So we need to destroy their views.
+ var styleSheet = oldDoc.styleSheets[0];
+ var rulePos = styleSheet.cssRules.length;
+ styleSheet.insertRule(
+ "panel{display:-moz-box!important; visibility:collapse!important;}", rulePos);
+
+ // We need to deal with inner frames first since swapFrameLoaders
+ // doesn't work for type="chrome" browser containing type="content" browsers
+ var frames = oldDoc.querySelectorAll("browser[type*=content], iframe[type*=content]");
+ var tmpFrames = [], placeholders = [];
+
+ var topDoc = oldBrowser.ownerDocument;
+ var temp = topDoc.createElement("box");
+ topDoc.documentElement.appendChild(temp);
+
+ var swapDocShells = function(a, b)
+ {
+ // important! must touch browser.contentDocument to initialize it
+ a.contentDocument == b.contentDocument;
+ if (a.nodeName == "iframe")
+ a.QueryInterface(Ci.nsIFrameLoaderOwner).swapFrameLoaders(b);
+ else
+ a.swapDocShells(b);
+ };
+
+ for (var i = frames.length - 1; i >= 0; i--)
+ {
+ placeholders[i] = document.createElement("placeholder");
+ tmpFrames[i] = frames[i].cloneNode(true);
+ tmpFrames[i].removeAttribute("src");
+ frames[i].removeAttribute("src");
+ temp.appendChild(tmpFrames[i]);
+ }
+
+ for (var i = tmpFrames.length - 1; i >= 0; i--)
+ {
+ swapDocShells(tmpFrames[i], frames[i]);
+ frames[i].parentNode.replaceChild(placeholders[i], frames[i]);
+ }
+
+ swapDocShells(oldBrowser, newBrowser);
+
+ for (var i = placeholders.length - 1; i >= 0; i--)
+ placeholders[i].parentNode.replaceChild(frames[i], placeholders[i]);
+
+ for (var i = frames.length - 1; i >= 0; i--)
+ swapDocShells(tmpFrames[i], frames[i]);
+
+ temp.parentNode.removeChild(temp);
+
+ styleSheet.deleteRule(rulePos);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Global Attributes
+
+ getGlobalAttribute: function(id, name)
+ {
+ var elt = FirebugChrome.$(id);
+ return elt.getAttribute(name);
+ },
+
+ setGlobalAttribute: function(id, name, value)
+ {
+ var elt = FirebugChrome.$(id);
+ if (elt)
+ {
+ if (value == null)
+ elt.removeAttribute(name);
+ else
+ elt.setAttribute(name, value);
+ }
+
+ if (Firebug.externalChrome)
+ Firebug.externalChrome.setGlobalAttribute(id, name, value);
+ },
+
+ setChromeDocumentAttribute: function(id, name, value)
+ {
+ // call as Firebug.chrome.setChromeDocumentAttribute() to set attributes
+ // in another window
+ var elt = FirebugChrome.$(id);
+ if (elt)
+ elt.setAttribute(name, value);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ keyCodeListen: function(key, filter, listener, capture)
+ {
+ if (!filter)
+ filter = Events.noKeyModifiers;
+
+ var keyCode = KeyEvent["DOM_VK_"+key];
+
+ function fn(event)
+ {
+ if (event.keyCode == keyCode && (!filter || filter(event)))
+ {
+ listener();
+ Events.cancelEvent(event);
+ }
+ }
+
+ Events.addEventListener(win, "keypress", fn, capture);
+
+ return [fn, capture];
+ },
+
+ keyListen: function(ch, filter, listener, capture)
+ {
+ if (!filter)
+ filter = Events.noKeyModifiers;
+
+ var charCode = ch.charCodeAt(0);
+
+ function fn(event)
+ {
+ if (event.charCode == charCode && (!filter || filter(event)))
+ {
+ listener();
+ Events.cancelEvent(event);
+ }
+ }
+
+ Events.addEventListener(win, "keypress", fn, capture);
+
+ return [fn, capture];
+ },
+
+ keyIgnore: function(listener)
+ {
+ Events.removeEventListener(win, "keypress", listener[0], listener[1]);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ $: function(id)
+ {
+ return this.getElementById(id);
+ },
+
+ getElementById: function(id)
+ {
+ // The document we close over, not the global.
+ return win.document.getElementById(id);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ applyTextSize: function(value)
+ {
+ if (!panelBar1)
+ return;
+
+ var zoom = Firebug.Options.getZoomByTextSize(value);
+ var zoomString = (zoom * 100) + "%";
+
+ // scale the aspect relative to 11pt Lucida Grande
+ // xxxsz: The magic number 0.547 should be replaced some logic retrieving this value.
+ var fontSizeAdjust = zoom * 0.547;
+ var contentBox = Firebug.chrome.$("fbContentBox");
+ contentBox.style.fontSizeAdjust = fontSizeAdjust;
+
+ //panelBar1.browser.contentDocument.documentElement.style.fontSizeAdjust = fontSizeAdjust;
+ //panelBar2.browser.contentDocument.documentElement.style.fontSizeAdjust = fontSizeAdjust;
+
+ panelBar1.browser.markupDocumentViewer.textZoom = zoom;
+ panelBar2.browser.markupDocumentViewer.textZoom = zoom;
+
+ var cmdPopupBrowser = this.getElementById("fbCommandPopupBrowser");
+ cmdPopupBrowser.markupDocumentViewer.textZoom = zoom;
+
+ var box = Firebug.chrome.$("fbCommandBox");
+ box.style.fontSizeAdjust = fontSizeAdjust;
+ if (Firebug.CommandLine)
+ {
+ Firebug.CommandLine.getSingleRowCommandLine().style.fontSizeAdjust = fontSizeAdjust;
+ Firebug.chrome.$("fbCommandLineCompletion").style.fontSizeAdjust = fontSizeAdjust;
+ Firebug.chrome.$("fbCommandLineCompletionList").style.fontSizeAdjust = fontSizeAdjust;
+
+ Firebug.CommandEditor.fontSizeAdjust(fontSizeAdjust);
+ }
+
+ Firebug.dispatchToPanels("onTextSizeChange", [zoom, fontSizeAdjust]);
+ },
+
+ obeyOmitObjectPathStack: function(value)
+ {
+ var panelStatus = this.getElementById("fbPanelStatus");
+ // The element does not exist immediately at start-up.
+ if (!panelStatus)
+ return;
+ Dom.hide(panelStatus, (value ? true : false));
+ },
+
+ getPanelStatusElements: function()
+ {
+ return this.getElementById("fbPanelStatus");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // UI Event Listeners uilisteners or "panelListeners"
+
+ onPanelNavigate: function(object, panel)
+ {
+ this.syncLocationList();
+ },
+
+ onObjectSelected: function(object, panel)
+ {
+ if (panel == panelBar1.selectedPanel)
+ {
+ this.syncStatusPath();
+
+ var sidePanel = panelBar2.selectedPanel;
+ if (sidePanel)
+ sidePanel.select(object);
+ }
+ },
+
+ onObjectChanged: function(object, panel)
+ {
+ if (panel == panelBar1.selectedPanel)
+ {
+ this.syncStatusPath();
+
+ var sidePanel = panelBar2.selectedPanel;
+ if (sidePanel)
+ sidePanel.refresh();
+ }
+ },
+
+ // called on setTimeout() after sourceBox viewport has been repainted
+ onApplyDecorator: function(sourceBox)
+ {
+ },
+
+ // called on scrollTo() passing in the selected line
+ onViewportChange: function(sourceLink)
+ {
+ },
+
+ // called when the Firebug UI comes up in browser
+ showUI: function(browser, context)
+ {
+ },
+
+ // called when the Firebug UI comes down; context may be null
+ hideUI: function(browser, context)
+ {
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onMenuShowing: function(popup)
+ {
+ var detachFirebug = Dom.getElementsByAttribute(popup, "id", "menu_firebug_detachFirebug")[0];
+ if (detachFirebug)
+ {
+ detachFirebug.setAttribute("label", (Firebug.isDetached() ?
+ Locale.$STR("firebug.AttachFirebug") : Locale.$STR("firebug.DetachFirebug")));
+ }
+
+ var toggleFirebug = Dom.getElementsByAttribute(popup, "id", "menu_firebug_toggleFirebug")[0];
+ if (toggleFirebug)
+ {
+ var fbContentBox = FirebugChrome.$("fbContentBox");
+ var collapsed = fbContentBox.getAttribute("collapsed");
+ if (collapsed == "true")
+ {
+ toggleFirebug.setAttribute("label", Locale.$STR("inBrowser"));
+ toggleFirebug.setAttribute("tooltiptext", Locale.$STR("inBrowser"));
+ }
+ else
+ {
+ toggleFirebug.setAttribute("label", Locale.$STR("firebug.menu.Minimize_Firebug"));
+ toggleFirebug.setAttribute("tooltiptext", Locale.$STR("firebug.menu.tip.Minimize_Firebug"));
+ }
+
+ // If Firebug is detached, hide the menu. ('Open Firebug' shortcut doesn't hide
+ // but just focuses the external window)
+ if (Firebug.isDetached())
+ toggleFirebug.setAttribute("collapsed", (collapsed == "true" ? "false" : "true"));
+ }
+ },
+
+ onOptionsShowing: function(popup)
+ {
+ for (var child = popup.firstChild; child; child = child.nextSibling)
+ {
+ if (child.localName == "menuitem")
+ {
+ var option = child.getAttribute("option");
+ if (option)
+ {
+ var checked = false;
+ if (option == "profiling")
+ checked = FBS.profiling;
+ else
+ checked = Firebug.Options.get(option);
+
+ child.setAttribute("checked", checked);
+ }
+ }
+ }
+ },
+
+ onToggleOption: function(menuitem)
+ {
+ var option = menuitem.getAttribute("option");
+ var checked = menuitem.getAttribute("checked") == "true";
+
+ Firebug.Options.set(option, checked);
+ },
+
+ onContextShowing: function(event)
+ {
+ // xxxHonza: This context menu support can be used even in a separate window, which
+ // doesn't contain the Firebug UI (panels).
+ //if (!panelBar1.selectedPanel)
+ // return false;
+
+ var popup = event.target;
+ if (popup.id != "fbContextMenu")
+ return;
+
+ var target = win.document.popupNode;
+ var panel = target ? Firebug.getElementPanel(target) : null;
+
+ // The event must be on our chrome not inside the panel.
+ if (!panel)
+ panel = panelBar1 ? panelBar1.selectedPanel : null;
+
+ Dom.eraseNode(popup);
+
+ // Make sure the Copy action is only available if there is actually something
+ // selected in the panel.
+ var sel = target.ownerDocument.defaultView.getSelection();
+ if (!this.contextMenuObject &&
+ !FirebugChrome.$("cmd_copy").getAttribute("disabled") &&
+ !sel.isCollapsed)
+ {
+ var menuitem = Menu.createMenuItem(popup, {label: "Copy"});
+ menuitem.setAttribute("command", "cmd_copy");
+ }
+
+ var object;
+ if (this.contextMenuObject)
+ object = this.contextMenuObject;
+ else if (target && target.ownerDocument == document)
+ object = Firebug.getRepObject(target);
+ else if (target && panel)
+ object = panel.getPopupObject(target);
+ else if (target)
+ // xxxHonza: What about a node from a different document? Is that OK?
+ object = Firebug.getRepObject(target);
+
+ this.contextMenuObject = null;
+
+ var rep = Firebug.getRep(object, Firebug.currentContext);
+ var realObject = rep ? rep.getRealObject(object, Firebug.currentContext) : null;
+ var realRep = realObject ? Firebug.getRep(realObject, Firebug.currentContext) : null;
+
+ if (FBTrace.DBG_MENU)
+ {
+ FBTrace.sysout("chrome.onContextShowing object:"+object+", rep: "+rep+
+ ", realObject: "+realObject+", realRep:"+realRep);
+ }
+
+ // 1. Add the custom menu items from the realRep
+ if (realObject && realRep)
+ {
+ var items = realRep.getContextMenuItems(realObject, target, Firebug.currentContext);
+ if (items)
+ Menu.createMenuItems(popup, items);
+ }
+
+ // 2. Add the custom menu items from the original rep
+ if (object && rep && rep != realRep)
+ {
+ var items = rep.getContextMenuItems(object, target, Firebug.currentContext);
+ if (items)
+ Menu.createMenuItems(popup, items);
+ }
+
+ // 3. Add the custom menu items from the panel
+ if (panel)
+ {
+ var items = panel.getContextMenuItems(realObject, target);
+ if (items)
+ Menu.createMenuItems(popup, items);
+ }
+
+ // 4. Add the inspect menu items
+ if (realObject && rep && rep.inspectable)
+ {
+ var items = this.getInspectMenuItems(realObject);
+
+ // Separate existing menu items from 'inspect' menu items.
+ if (popup.firstChild && items.length > 0)
+ Menu.createMenuSeparator(popup);
+
+ Menu.createMenuItems(popup, items);
+ }
+
+ // 5. Add menu items from uiListeners
+ var items = [];
+ Events.dispatch(Firebug.uiListeners, "onContextMenu", [items, object, target,
+ Firebug.currentContext, panel, popup]);
+ Menu.createMenuItems(popup, items);
+
+ // Make sure there are no unnecessary separators (e.g. at the top or bottom
+ // of the popup)
+ Menu.optimizeSeparators(popup);
+
+ if (!popup.firstChild)
+ return false;
+ },
+
+ getInspectMenuItems: function(object)
+ {
+ var items = [];
+
+ // Domplate (+ support for context menus) can be used even in separate
+ // windows when Firebug.currentContext doesn't have to be defined.
+ if (!Firebug.currentContext)
+ return items;
+
+ for (var i = 0; i < Firebug.panelTypes.length; ++i)
+ {
+ var panelType = Firebug.panelTypes[i];
+ if (!panelType.prototype.parentPanel
+ && panelType.prototype.name != Firebug.currentContext.panelName
+ && panelSupportsObject(panelType, object, Firebug.currentContext))
+ {
+ var panelName = panelType.prototype.name;
+
+ var title = Firebug.getPanelTitle(panelType);
+ var label = Locale.$STRF("panel.Inspect_In_Panel", [title]);
+ var tooltiptext = Locale.$STRF("panel.tip.Inspect_In_Panel", [title]);
+ var id = "InspectIn" + panelName + "Panel";
+
+ var command = Obj.bindFixed(this.select, this, object, panelName);
+ items.push({label: label, tooltiptext: tooltiptext, command: command, nol10n: true,
+ id: id});
+ }
+ }
+
+ return items;
+ },
+
+ onTooltipShowing: function(event)
+ {
+ // xxxHonza: This tooltip support can be used even in a separate window, which
+ // doesn't contain the Firebug UI (panels).
+ //if (!panelBar1.selectedPanel)
+ // return false;
+
+ var tooltip = FirebugChrome.$("fbTooltip");
+ var target = win.document.tooltipNode;
+
+ var panel = target ? Firebug.getElementPanel(target) : null;
+
+ var object;
+
+ /* XXXjjb: This causes the Script panel to show the function body over and over.
+ * We need to clear it at least, but actually we need to understand why the tooltip
+ * should show the context menu object at all. One thing the contextMenuObject supports
+ * is peeking at function bodies when stopped at a breakpoint.
+ * That case could be supported with clearing the contextMenuObject, but we don't
+ * know if that breaks something else. So maybe a popupMenuObject should be set
+ * on the context if that is what we want to support.
+ * The other complication is that there seems to be another tooltip.
+ if (this.contextMenuObject)
+ {
+ object = this.contextMenuObject;
+ FBTrace.sysout("tooltip by contextMenuObject");
+ }
+ else*/
+
+ if (target && target.ownerDocument == document)
+ object = Firebug.getRepObject(target);
+ else if (panel)
+ object = panel.getTooltipObject(target);
+
+ var rep = object ? Firebug.getRep(object, Firebug.currentContext) : null;
+ object = rep ? rep.getRealObject(object, Firebug.currentContext) : null;
+ rep = object ? Firebug.getRep(object) : null;
+
+ if (object && rep)
+ {
+ var label = rep.getTooltip(object, Firebug.currentContext, target);
+ if (label)
+ {
+ tooltip.setAttribute("label", label);
+ return true;
+ }
+ }
+
+ if (Css.hasClass(target, 'noteInToolTip'))
+ Css.setClass(tooltip, 'noteInToolTip');
+ else
+ Css.removeClass(tooltip, 'noteInToolTip');
+
+ if (target && target.hasAttribute("title"))
+ {
+ tooltip.setAttribute("label", target.getAttribute("title"));
+ return true;
+ }
+
+ return false;
+ },
+
+ openAboutDialog: function()
+ {
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("Firebug.openAboutDialog");
+
+ try
+ {
+ // Firefox 4.0+ implements a new AddonManager. In case of Firefox 3.6 the module
+ // is not available and there is an exception.
+ Components.utils["import"]("resource://gre/modules/AddonManager.jsm");
+ }
+ catch (err)
+ {
+ }
+
+ if (typeof(AddonManager) != "undefined")
+ {
+ AddonManager.getAddonByID("firebug at software.joehewitt.com", function(addon)
+ {
+ openDialog("chrome://mozapps/content/extensions/about.xul", "",
+ "chrome,centerscreen,modal", addon);
+ });
+ }
+ else
+ {
+ var extensionManager = Cc["@mozilla.org/extensions/manager;1"].getService(
+ Ci.nsIExtensionManager);
+
+ openDialog("chrome://mozapps/content/extensions/about.xul", "",
+ "chrome,centerscreen,modal", "urn:mozilla:item:firebug at software.joehewitt.com",
+ extensionManager.datasource);
+ }
+ },
+
+ breakOnNext: function(context, event)
+ {
+ // avoid bubbling from associated options
+ if (event.target.id != "cmd_firebug_toggleBreakOn")
+ return;
+
+ if (!context)
+ {
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("Firebug chrome: breakOnNext with no context??");
+ return;
+ }
+
+ var panel = panelBar1.selectedPanel;
+
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("Firebug chrome: breakOnNext for panel " +
+ (panel ? panel.name : "NO panel"), panel);
+
+ if (panel && panel.breakable)
+ Firebug.Breakpoint.toggleBreakOnNext(panel);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ visitWebsite: function(which, arg)
+ {
+ var url = firebugURLs[which];
+ if (url)
+ {
+ if (arg)
+ url += arg;
+
+ Win.openNewTab(url);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Main Toolbar
+
+ appendToolbarButton: function(button, before)
+ {
+ var toolbar = FirebugChrome.$("fbPanelBar1-buttons");
+ var element = Toolbar.createToolbarButton(toolbar, button, before);
+ element.repObject = button;
+ },
+
+ removeToolbarButton: function(button)
+ {
+ var toolbar = FirebugChrome.$("fbPanelBar1-buttons");
+ for (var child = toolbar.firstChild; child; child = child.nextSibling)
+ {
+ if (child.repObject == button)
+ {
+ toolbar.removeChild(child);
+ break;
+ }
+ }
+ }
+};
+
+// ********************************************************************************************* //
+// Local Helpers
+
+function panelSupportsObject(panelType, object, context)
+{
+ if (panelType)
+ {
+ try {
+ // This tends to throw exceptions often because some objects are weird
+ return panelType.prototype.supportsObject(object, typeof object, context)
+ } catch (exc) {}
+ }
+
+ return 0;
+}
+
+function getBestPanelName(object, context, panelName)
+{
+ if (!panelName && context)
+ panelName = context.panelName;
+
+ // Check if the panel type of the suggested panel supports the object, and if so, go with it.
+ if (panelName)
+ {
+ var panelType = Firebug.getPanelType(panelName);
+ if (panelSupportsObject(panelType, object, context))
+ return panelType.prototype.name;
+ }
+
+ // The suggested name didn't pan out, so search for the panel type with the
+ // most specific level of support.
+ return getBestPanelSupportingObject(object, context);
+}
+
+function getBestPanelSupportingObject(object, context)
+{
+ var bestLevel = 0;
+ var bestPanel = null;
+
+ for (var i = 0; i < Firebug.panelTypes.length; ++i)
+ {
+ var panelType = Firebug.panelTypes[i];
+ if (!panelType.prototype.parentPanel)
+ {
+ var level = panelSupportsObject(panelType, object, context);
+ if (!bestLevel || (level && (level > bestLevel) ))
+ {
+ bestLevel = level;
+ bestPanel = panelType;
+ }
+
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("chrome.getBestPanelName panelType: " + panelType.prototype.name +
+ " level: " + level + " bestPanel: " +
+ (bestPanel ? bestPanel.prototype.name : "null") +
+ " bestLevel: " + bestLevel);
+ }
+ }
+
+ return bestPanel ? bestPanel.prototype.name : null;
+}
+
+function getBestSidePanelName(sidePanelName, panelTypes)
+{
+ if (sidePanelName)
+ {
+ // Verify, that the suggested panel name is in the acceptable list.
+ for (var i = 0; i < panelTypes.length; ++i)
+ {
+ if (panelTypes[i].prototype.name == sidePanelName)
+ return sidePanelName;
+ }
+ }
+
+ // Default to the first panel type in the list.
+ return panelTypes.length ? panelTypes[0].prototype.name : null;
+}
+
+// ********************************************************************************************* //
+// Event listeners
+
+function browser1Loaded()
+{
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("browse1Loaded\n");
+
+ var browser1 = panelBar1.browser;
+ var browser2 = panelBar2.browser;
+ Events.removeEventListener(browser1, "load", browser1Loaded, true);
+
+ browser1.contentDocument.title = "Firebug Main Panel";
+ browser1.complete = true;
+
+ if (browser1.complete && browser2.complete)
+ {
+ // initializeUI() is executed asynchronously (solves issue 3442)
+ // The problem has been introduced (for an unknown reason) by revision R12210
+ setTimeout(function() {
+ // chrome bound into this scope
+ FirebugChrome.initializeUI();
+ });
+ }
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("browse1Loaded complete\n");
+}
+
+function browser2Loaded()
+{
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("browse2Loaded\n");
+
+ var browser1 = panelBar1.browser;
+ var browser2 = panelBar2.browser;
+ Events.removeEventListener(browser2, "load", browser2Loaded, true);
+
+ browser2.contentDocument.title = "Firebug Side Panel";
+ browser2.complete = true;
+
+ if (browser1.complete && browser2.complete)
+ {
+ // See browser1Loaded for more info.
+ setTimeout(function() {
+ // chrome bound into this scope
+ FirebugChrome.initializeUI();
+ });
+ }
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("browse2Loaded complete\n");
+}
+
+function onBlur(event)
+{
+ // XXXjjb: this seems like a waste: called continuously to clear possible highlight I guess.
+ // XXXhh: Is this really necessary? I disabled it for now as this was preventing me
+ // to show highlights on focus
+ //Firebug.Inspector.highlightObject(null, Firebug.currentContext);
+}
+
+function onSelectLocation(event)
+{
+ try
+ {
+ var locationList = FirebugChrome.getElementById("fbLocationList");
+ var location = locationList.repObject;
+
+ FirebugChrome.navigate(location);
+ }
+ catch (err)
+ {
+ FBTrace.sysout("chrome.onSelectLocation; EXCEPTION " + err, err);
+ }
+}
+
+function onSelectingPanel(event)
+{
+ try
+ {
+ doSelectingPanel(event);
+ }
+ catch (err)
+ {
+ FBTrace.sysout("chrome.onSelectingPanel; EXCEPTION " + err, err);
+ }
+}
+
+function doSelectingPanel(event)
+{
+ var panel = panelBar1.selectedPanel;
+ var panelName = panel ? panel.name : null;
+
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("chrome.onSelectingPanel=" + panelName + " Firebug.currentContext=" +
+ (Firebug.currentContext ? Firebug.currentContext.getName() : "undefined"));
+
+ if (Firebug.currentContext)
+ {
+ Firebug.currentContext.previousPanelName = Firebug.currentContext.panelName;
+ Firebug.currentContext.panelName = panelName;
+
+ Firebug.currentContext.sidePanelName =
+ Firebug.currentContext.sidePanelNames &&
+ panelName in Firebug.currentContext.sidePanelNames
+ ? Firebug.currentContext.sidePanelNames[panelName]
+ : null;
+ }
+
+ if (panel)
+ panel.navigate(panel.location);
+
+ // Hide all toolbars now. It's a responsibility of the new selected panel to show
+ // those toolbars, that are necessary. This avoids the situation when a naughty panel
+ // doesn't clean up its toolbars. This must be done before 'showPanel' is dispatched,
+ // where the visibility of the BON buttons is managed.
+ var toolbar = FirebugChrome.$("fbToolbarInner");
+ var child = toolbar.firstChild;
+ while (child)
+ {
+ Dom.collapse(child, true);
+ child = child.nextSibling;
+ }
+
+ // Those extensions that don't use XUL overlays (i.e. bootstrapped extensions)
+ // can provide toolbar buttons throug Firebug APIs.
+ var panelToolbar = FirebugChrome.$("fbPanelToolbar");
+ Dom.eraseNode(panelToolbar);
+
+ if (panel)
+ {
+ // get buttons from current panel
+ var buttons;
+ if (panel.getPanelToolbarButtons)
+ buttons = panel.getPanelToolbarButtons();
+
+ if (!buttons)
+ buttons = [];
+
+ Events.dispatch(Firebug.uiListeners, "onGetPanelToolbarButtons", [panel, buttons]);
+
+ for (var i=0; i<buttons.length; ++i)
+ Toolbar.createToolbarButton(panelToolbar, buttons[i]);
+
+ Dom.collapse(panelToolbar, buttons.length == 0);
+ }
+
+ // Calling Firebug.showPanel causes dispatching 'showPanel' to all modules.
+ var browser = panel ? panel.context.browser : Firefox.getCurrentBrowser();
+ Firebug.showPanel(browser, panel);
+
+ // Synchronize UI around panels. Execute the sync after 'showPanel' so the logic
+ // can decide whether to display separators or not.
+ // xxxHonza: The command line should be synced here as well.
+ Firebug.chrome.syncLocationList();
+ Firebug.chrome.syncStatusPath();
+
+ //xxxjjb: unfortunately the Stack side panel depends on the status path (sync after.)
+ Firebug.chrome.syncSidePanels();
+}
+
+function onMouseScroll(event)
+{
+ if (Events.isControlAlt(event))
+ {
+ Events.cancelEvent(event);
+ Firebug.Options.changeTextSize(-event.detail);
+ }
+}
+
+function onSelectedSidePanel(event)
+{
+ var sidePanel = panelBar2.selectedPanel;
+ if (Firebug.currentContext)
+ {
+ var panelName = Firebug.currentContext.panelName;
+ if (panelName)
+ {
+ var sidePanelName = sidePanel ? sidePanel.name : null;
+ Firebug.currentContext.sidePanelNames[panelName] = sidePanelName;
+ }
+ }
+
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("chrome.onSelectedSidePanel name=" +
+ (sidePanel ? sidePanel.name : "undefined"));
+
+ var panel = panelBar1.selectedPanel;
+ if (panel && sidePanel)
+ sidePanel.select(panel.selection);
+
+ var browser = sidePanel ? sidePanel.context.browser : Firefox.getCurrentBrowser();
+ // dispatch to modules
+ Firebug.showSidePanel(browser, sidePanel);
+}
+
+function onPanelMouseOver(event)
+{
+ var object = Firebug.getRepObject(event.target);
+ if (!object)
+ return;
+
+ var rep = Firebug.getRep(object, Firebug.currentContext);
+ if (rep)
+ rep.highlightObject(object, Firebug.currentContext, event.target);
+}
+
+function onPanelMouseOut(event)
+{
+ var object = Firebug.getRepObject(event.target);
+ if (!object)
+ return;
+
+ var rep = Firebug.getRep(object, Firebug.currentContext);
+ if (rep)
+ rep.unhighlightObject(object, Firebug.currentContext, event.target);
+}
+
+function onPanelClick(event)
+{
+ var repNode = Firebug.getRepNode(event.target);
+ if (repNode)
+ {
+ var object = repNode.repObject;
+ var rep = Firebug.getRep(object, Firebug.currentContext);
+ var realObject = rep ? rep.getRealObject(object, Firebug.currentContext) : null;
+ var realRep = realObject ? Firebug.getRep(realObject, Firebug.currentContext) : rep;
+ if (!realObject)
+ realObject = object;
+
+ if (Events.isLeftClick(event))
+ {
+ if (Css.hasClass(repNode, "objectLink"))
+ {
+ if (realRep)
+ {
+ realRep.inspectObject(realObject, Firebug.currentContext);
+ Events.cancelEvent(event);
+ }
+ }
+ }
+ }
+}
+
+var lastMouseDownPosition = {x: -1000, y: -1000};
+function onPanelMouseDown(event)
+{
+ if (Events.isLeftClick(event))
+ {
+ lastMouseDownPosition.x = event.screenX;
+ lastMouseDownPosition.y = event.screenY;
+ }
+ else if (Events.isMiddleClick(event, true) && Events.isControlAlt(event))
+ {
+ Events.cancelEvent(event);
+ Firebug.Options.setTextSize(0);
+ }
+ else if (Events.isMiddleClick(event) && Firebug.getRepNode(event.target))
+ {
+ // Prevent auto-scroll when middle-clicking a rep object
+ Events.cancelEvent(event);
+ }
+}
+
+function onPanelMouseUp(event)
+{
+ if (Events.isLeftClick(event))
+ {
+ var selection = event.target.ownerDocument.defaultView.getSelection();
+ var target = selection.focusNode || event.target;
+
+ if (Dom.getAncestorByClass(selection.focusNode, "editable") ===
+ Dom.getAncestorByClass(selection.anchorNode, "editable"))
+ {
+ var editable = Dom.getAncestorByClass(target, "editable");
+ if (editable || Css.hasClass(event.target, "inlineExpander"))
+ {
+ var selectionData;
+ var unselectedRange = event.target.ownerDocument.createRange();
+ var selectedRange = selection.getRangeAt(0);
+ unselectedRange.setStart(editable.firstElementChild || editable, 0);
+ unselectedRange.setEnd(selectedRange.startContainer, selectedRange.startOffset);
+
+ if (selectedRange.collapsed)
+ {
+ var distance = Math.abs(event.screenX - lastMouseDownPosition.x) +
+ Math.abs(event.screenY - lastMouseDownPosition.y);
+
+ // If mouse has moved far enough, set selection at that point
+ if (distance > 3)
+ {
+ selectionData =
+ {
+ start: selectedRange.startOffset,
+ end: selectedRange.endOffset
+ };
+ }
+ // otherwise leave selectionData undefined to select all text
+ }
+ else
+ {
+ var unselectedRangeLength = unselectedRange.toString().length;
+ var selectedRangeLength = selection.getRangeAt(0).toString().length;
+ selectionData =
+ {
+ start: unselectedRangeLength,
+ end: unselectedRangeLength + selectedRangeLength
+ };
+ }
+
+ if (editable)
+ {
+ Firebug.Editor.startEditing(editable, null, null, selectionData);
+ }
+ else
+ {
+ Firebug.Editor.setSelection(selectionData);
+ selection.removeAllRanges();
+ }
+
+ Events.cancelEvent(event);
+ }
+ }
+ }
+ else if (Events.isControlClick(event) || Events.isMiddleClick(event))
+ {
+ var repNode = Firebug.getRepNode(event.target);
+ if (!repNode)
+ return;
+
+ var object = repNode.repObject;
+ var rep = Firebug.getRep(object, Firebug.currentContext);
+ var realObject = rep ? rep.getRealObject(object, Firebug.currentContext) : null;
+ var realRep = realObject ? Firebug.getRep(realObject, Firebug.currentContext) : rep;
+ if (!realObject)
+ realObject = object;
+
+ if (!realRep || !realRep.browseObject(realObject, Firebug.currentContext))
+ {
+ if (rep && !(rep != realRep && rep.browseObject(object, Firebug.currentContext)))
+ {
+ var panel = Firebug.getElementPanel(event.target);
+ if (!panel || !panel.browseObject(realObject))
+ return;
+ }
+ }
+ Events.cancelEvent(event);
+ }
+}
+
+function onMainTabBoxMouseDown(event)
+{
+ if (Firebug.isInBrowser())
+ {
+ var contentSplitter = FirebugChrome.$("fbContentSplitter");
+ // TODO: grab the splitter here.
+ }
+}
+
+function stopBubble(event)
+{
+ event.stopPropagation();
+}
+
+function getRealObject(object)
+{
+ var rep = Firebug.getRep(object, Firebug.currentContext);
+ var realObject = rep ? rep.getRealObject(object, Firebug.currentContext) : null;
+ return realObject ? realObject : object;
+}
+
+function fatalError(summary, exc)
+{
+ if (typeof(FBTrace) !== undefined)
+ FBTrace.sysout.apply(FBTrace, arguments);
+
+ Components.utils.reportError(summary);
+
+ throw exc;
+}
+
+return FirebugChrome;
+
+} // end of createFirebugChrome(win)
+}; // end of var ChromeFactory object
+
+// ********************************************************************************************* //
+
+return ChromeFactory;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/firefox.js b/content/firebug/chrome/firefox.js
index 1f1a13f..42480ab 100644
--- a/content/firebug/chrome/firefox.js
+++ b/content/firebug/chrome/firefox.js
@@ -1,166 +1,166 @@
-/* See license.txt for terms of usage */
-
-define([], function() {
-
-// ********************************************************************************************* //
-// Constants
-
-var Ci = Components.interfaces;
-var Cc = Components.classes;
-var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
-
-// ********************************************************************************************* //
-// Browser.xul dependent code
-
-function getBrowserDocument()
-{
- // TODO: this function is called very frequently, worth optimizing
- try
- {
- var chrome = Firebug.chrome;
- return chrome.inDetachedScope ? chrome.originalBrowser.ownerDocument : top.document;
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("firefox.getBrowserDocument; EXCEPTION " + e, e);
- }
-}
-
-// ********************************************************************************************* //
-// Browser.xul independent code
-
-var Firefox =
-{
- getElementById: function(id)
- {
- return getBrowserDocument().getElementById(id);
- },
-
- $: function(id)
- {
- return this.getElementById(id);
- },
-
- getTabBrowser: function()
- {
- if (window.gBrowser)
- return window.gBrowser;
-
- var tabBrowser = Firefox.getElementById("content");
- if (tabBrowser)
- return tabBrowser;
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("Firefox.getTabBrowser no window.gBrowser in "+window.location);
- },
-
- getCurrentBrowser: function()
- {
- var tabBrowser = Firefox.getTabBrowser();
- return tabBrowser ? tabBrowser.selectedBrowser : undefined;
- },
-
- getBrowsers: function()
- {
- var tabBrowser = Firefox.getTabBrowser();
- return tabBrowser ? tabBrowser.browsers : undefined;
- },
-
- selectTabByWindow: function(win)
- {
- var tabBrowser = Firefox.getTabBrowser();
- if (tabBrowser)
- {
- var index = tabBrowser.getBrowserIndexForDocument(win.document);
- tabBrowser.selectTabAtIndex(index);
- }
- },
-
- getCurrentURI: function()
- {
- try
- {
- return Firefox.getTabBrowser().currentURI;
- }
- catch (exc)
- {
- return null;
- }
- },
-
- /**
- * Returns <browser> element for specified content window.
- * @param {Object} win - Content window
- */
- getBrowserForWindow: function(win)
- {
- var tabBrowser = Firefox.getTabBrowser();
- if (tabBrowser && win.document)
- return tabBrowser.getBrowserForDocument(win.document);
- },
-
- openWindow: function(windowType, url, features, params)
- {
- var win = windowType ? wm.getMostRecentWindow(windowType) : null;
- if (win)
- {
- if ("initWithParams" in win)
- win.initWithParams(params);
- win.focus();
- }
- else
- {
- var winFeatures = "resizable,dialog=no,centerscreen" +
- (features != "" ? ("," + features) : "");
- var parentWindow = (this.instantApply || !window.opener || window.opener.closed) ?
- window : window.opener;
-
- win = parentWindow.openDialog(url, "_blank", winFeatures, params);
- }
- return win;
- },
-
- viewSource: function(url, lineNo)
- {
- window.openDialog("chrome://global/content/viewSource.xul", "_blank",
- "all,dialog=no", url, null, null, lineNo);
- },
-};
-
-// ********************************************************************************************* //
-
-//XXXjoe This horrible hack works around a focus bug in Firefox which is caused when
-//the HTML Validator extension and Firebug are installed. It causes the keyboard to
-//behave erratically when typing, and the only solution I've found is to delay
-//the initialization of HTML Validator by overriding this function with a timeout.
-//XXXrobc Do we still need this? Does this extension even exist anymore?
-//xxxHonza: The extension still exists, but I think we should remove this hack.
-try
-{
- if (top.hasOwnProperty('TidyBrowser'))
- {
- var prev = TidyBrowser.prototype.updateStatusBar;
- TidyBrowser.prototype.updateStatusBar = function()
- {
- var self = this, args = arguments;
- setTimeout(function()
- {
- prev.apply(self, args);
- });
- };
- }
-}
-catch (err)
-{
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("firefox; EXCEPTION HTML Validator collision!", err);
-}
-
-// ********************************************************************************************* //
-// Registration
-
-return Firefox;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([], function() {
+
+// ********************************************************************************************* //
+// Constants
+
+var Ci = Components.interfaces;
+var Cc = Components.classes;
+var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
+
+// ********************************************************************************************* //
+// Browser.xul dependent code
+
+function getBrowserDocument()
+{
+ // TODO: this function is called very frequently, worth optimizing
+ try
+ {
+ var chrome = Firebug.chrome;
+ return chrome.inDetachedScope ? chrome.originalBrowser.ownerDocument : top.document;
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("firefox.getBrowserDocument; EXCEPTION " + e, e);
+ }
+}
+
+// ********************************************************************************************* //
+// Browser.xul independent code
+
+var Firefox =
+{
+ getElementById: function(id)
+ {
+ return getBrowserDocument().getElementById(id);
+ },
+
+ $: function(id)
+ {
+ return this.getElementById(id);
+ },
+
+ getTabBrowser: function()
+ {
+ if (window.gBrowser)
+ return window.gBrowser;
+
+ var tabBrowser = Firefox.getElementById("content");
+ if (tabBrowser)
+ return tabBrowser;
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("Firefox.getTabBrowser no window.gBrowser in "+window.location);
+ },
+
+ getCurrentBrowser: function()
+ {
+ var tabBrowser = Firefox.getTabBrowser();
+ return tabBrowser ? tabBrowser.selectedBrowser : undefined;
+ },
+
+ getBrowsers: function()
+ {
+ var tabBrowser = Firefox.getTabBrowser();
+ return tabBrowser ? tabBrowser.browsers : undefined;
+ },
+
+ selectTabByWindow: function(win)
+ {
+ var tabBrowser = Firefox.getTabBrowser();
+ if (tabBrowser)
+ {
+ var index = tabBrowser.getBrowserIndexForDocument(win.document);
+ tabBrowser.selectTabAtIndex(index);
+ }
+ },
+
+ getCurrentURI: function()
+ {
+ try
+ {
+ return Firefox.getTabBrowser().currentURI;
+ }
+ catch (exc)
+ {
+ return null;
+ }
+ },
+
+ /**
+ * Returns <browser> element for specified content window.
+ * @param {Object} win - Content window
+ */
+ getBrowserForWindow: function(win)
+ {
+ var tabBrowser = Firefox.getTabBrowser();
+ if (tabBrowser && win.document)
+ return tabBrowser.getBrowserForDocument(win.document);
+ },
+
+ openWindow: function(windowType, url, features, params)
+ {
+ var win = windowType ? wm.getMostRecentWindow(windowType) : null;
+ if (win)
+ {
+ if ("initWithParams" in win)
+ win.initWithParams(params);
+ win.focus();
+ }
+ else
+ {
+ var winFeatures = "resizable,dialog=no,centerscreen" +
+ (features != "" ? ("," + features) : "");
+ var parentWindow = (this.instantApply || !window.opener || window.opener.closed) ?
+ window : window.opener;
+
+ win = parentWindow.openDialog(url, "_blank", winFeatures, params);
+ }
+ return win;
+ },
+
+ viewSource: function(url, lineNo)
+ {
+ window.openDialog("chrome://global/content/viewSource.xul", "_blank",
+ "all,dialog=no", url, null, null, lineNo);
+ },
+};
+
+// ********************************************************************************************* //
+
+//XXXjoe This horrible hack works around a focus bug in Firefox which is caused when
+//the HTML Validator extension and Firebug are installed. It causes the keyboard to
+//behave erratically when typing, and the only solution I've found is to delay
+//the initialization of HTML Validator by overriding this function with a timeout.
+//XXXrobc Do we still need this? Does this extension even exist anymore?
+//xxxHonza: The extension still exists, but I think we should remove this hack.
+try
+{
+ if (top.hasOwnProperty('TidyBrowser'))
+ {
+ var prev = TidyBrowser.prototype.updateStatusBar;
+ TidyBrowser.prototype.updateStatusBar = function()
+ {
+ var self = this, args = arguments;
+ setTimeout(function()
+ {
+ prev.apply(self, args);
+ });
+ };
+ }
+}
+catch (err)
+{
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("firefox; EXCEPTION HTML Validator collision!", err);
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return Firefox;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/infotip.js b/content/firebug/chrome/infotip.js
index 47d6f79..cc824d9 100644
--- a/content/firebug/chrome/infotip.js
+++ b/content/firebug/chrome/infotip.js
@@ -1,186 +1,186 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/dom"
-],
-function(Obj, Firebug, Domplate, Locale, Events, Dom) {
-
-// ********************************************************************************************* //
-// Constants
-
-const infoTipMargin = 10;
-
-// ********************************************************************************************* //
-
-with (Domplate) {
-Firebug.InfoTip = Obj.extend(Firebug.Module,
-{
- dispatchName: "infoTip",
- tags: domplate(
- {
- infoTipTag: DIV({"class": "infoTip"}),
- }),
-
- initializeBrowser: function(browser)
- {
- browser.onInfoTipMouseOut = Obj.bind(this.onMouseOut, this, browser);
- browser.onInfoTipMouseMove = Obj.bind(this.onMouseMove, this, browser);
-
- var doc = browser.contentDocument;
- if (!doc)
- return;
-
- doc.addEventListener("mouseover", browser.onInfoTipMouseMove, true);
- doc.addEventListener("mouseout", browser.onInfoTipMouseOut, true);
- doc.addEventListener("mousemove", browser.onInfoTipMouseMove, true);
-
- return browser.infoTip = this.tags.infoTipTag.append({}, Dom.getBody(doc));
- },
-
- uninitializeBrowser: function(browser)
- {
- if (browser.infoTip)
- {
- var doc = browser.contentDocument;
- doc.removeEventListener("mouseover", browser.onInfoTipMouseMove, true);
- doc.removeEventListener("mouseout", browser.onInfoTipMouseOut, true);
- doc.removeEventListener("mousemove", browser.onInfoTipMouseMove, true);
-
- browser.infoTip.parentNode.removeChild(browser.infoTip);
- delete browser.infoTip;
- delete browser.onInfoTipMouseMove;
- }
- },
-
- showInfoTip: function(infoTip, panel, target, x, y, rangeParent, rangeOffset)
- {
- if (!Firebug.showInfoTips)
- return;
-
- var scrollParent = Dom.getOverflowParent(target);
- var scrollX = x + (scrollParent ? scrollParent.scrollLeft : 0);
-
- var show = panel.showInfoTip(infoTip, target, scrollX, y, rangeParent, rangeOffset);
- if (!show && this.fbListeners)
- {
- show = Events.dispatch2(this.fbListeners, "showInfoTip", [infoTip, target, scrollX, y,
- rangeParent, rangeOffset]);
- }
-
- if (show)
- {
- var htmlElt = infoTip.ownerDocument.documentElement;
- var panelWidth = htmlElt.clientWidth;
- var panelHeight = htmlElt.clientHeight;
-
- if (x+infoTip.offsetWidth+infoTipMargin > panelWidth)
- {
- infoTip.style.left = Math.max(0, panelWidth -
- (infoTip.offsetWidth + infoTipMargin)) + "px";
- infoTip.style.right = "auto";
- }
- else
- {
- infoTip.style.left = (x+infoTipMargin) + "px";
- infoTip.style.right = "auto";
- }
-
- if (y+infoTip.offsetHeight+infoTipMargin > panelHeight)
- {
- infoTip.style.top = Math.max(0, panelHeight -
- (infoTip.offsetHeight+infoTipMargin)) + "px";
- infoTip.style.bottom = "auto";
- }
- else
- {
- infoTip.style.top = (y+infoTipMargin) + "px";
- infoTip.style.bottom = "auto";
- }
-
- if (FBTrace.DBG_INFOTIP)
- FBTrace.sysout("infotip.showInfoTip; top: " + infoTip.style.top +
- ", left: " + infoTip.style.left + ", bottom: " + infoTip.style.bottom +
- ", right:" + infoTip.style.right + ", offsetHeight: " + infoTip.offsetHeight +
- ", offsetWidth: " + infoTip.offsetWidth +
- ", x: " + x + ", panelWidth: " + panelWidth +
- ", y: " + y + ", panelHeight: " + panelHeight);
-
- infoTip.setAttribute("active", "true");
- }
- else
- {
- this.hideInfoTip(infoTip);
- }
- },
-
- hideInfoTip: function(infoTip)
- {
- if (infoTip)
- infoTip.removeAttribute("active");
- },
-
- onMouseOut: function(event, browser)
- {
- if (!event.relatedTarget)
- this.hideInfoTip(browser.infoTip);
- },
-
- onMouseMove: function(event, browser)
- {
- // Ignore if the mouse is moving over the existing info tip.
- if (Dom.getAncestorByClass(event.target, "infoTip"))
- return;
-
- if (browser.currentPanel)
- {
- var x = event.clientX, y = event.clientY;
- this.showInfoTip(browser.infoTip, browser.currentPanel, event.target, x, y,
- event.rangeParent, event.rangeOffset);
- }
- else
- {
- this.hideInfoTip(browser.infoTip);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Module
-
- disable: function()
- {
- // XXXjoe For each browser, call uninitializeBrowser
- },
-
- showPanel: function(browser, panel)
- {
- if (panel)
- {
- var infoTip = panel.panelBrowser.infoTip;
- if (!infoTip)
- infoTip = this.initializeBrowser(panel.panelBrowser);
- this.hideInfoTip(infoTip);
- }
-
- },
-
- showSidePanel: function(browser, panel)
- {
- this.showPanel(browser, panel);
- }
-});
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.InfoTip);
-
-return Firebug.InfoTip;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/dom"
+],
+function(Obj, Firebug, Domplate, Locale, Events, Dom) {
+
+// ********************************************************************************************* //
+// Constants
+
+const infoTipMargin = 10;
+
+// ********************************************************************************************* //
+
+with (Domplate) {
+Firebug.InfoTip = Obj.extend(Firebug.Module,
+{
+ dispatchName: "infoTip",
+ tags: domplate(
+ {
+ infoTipTag: DIV({"class": "infoTip"}),
+ }),
+
+ initializeBrowser: function(browser)
+ {
+ browser.onInfoTipMouseOut = Obj.bind(this.onMouseOut, this, browser);
+ browser.onInfoTipMouseMove = Obj.bind(this.onMouseMove, this, browser);
+
+ var doc = browser.contentDocument;
+ if (!doc)
+ return;
+
+ doc.addEventListener("mouseover", browser.onInfoTipMouseMove, true);
+ doc.addEventListener("mouseout", browser.onInfoTipMouseOut, true);
+ doc.addEventListener("mousemove", browser.onInfoTipMouseMove, true);
+
+ return browser.infoTip = this.tags.infoTipTag.append({}, Dom.getBody(doc));
+ },
+
+ uninitializeBrowser: function(browser)
+ {
+ if (browser.infoTip)
+ {
+ var doc = browser.contentDocument;
+ doc.removeEventListener("mouseover", browser.onInfoTipMouseMove, true);
+ doc.removeEventListener("mouseout", browser.onInfoTipMouseOut, true);
+ doc.removeEventListener("mousemove", browser.onInfoTipMouseMove, true);
+
+ browser.infoTip.parentNode.removeChild(browser.infoTip);
+ delete browser.infoTip;
+ delete browser.onInfoTipMouseMove;
+ }
+ },
+
+ showInfoTip: function(infoTip, panel, target, x, y, rangeParent, rangeOffset)
+ {
+ if (!Firebug.showInfoTips)
+ return;
+
+ var scrollParent = Dom.getOverflowParent(target);
+ var scrollX = x + (scrollParent ? scrollParent.scrollLeft : 0);
+
+ var show = panel.showInfoTip(infoTip, target, scrollX, y, rangeParent, rangeOffset);
+ if (!show && this.fbListeners)
+ {
+ show = Events.dispatch2(this.fbListeners, "showInfoTip", [infoTip, target, scrollX, y,
+ rangeParent, rangeOffset]);
+ }
+
+ if (show)
+ {
+ var htmlElt = infoTip.ownerDocument.documentElement;
+ var panelWidth = htmlElt.clientWidth;
+ var panelHeight = htmlElt.clientHeight;
+
+ if (x+infoTip.offsetWidth+infoTipMargin > panelWidth)
+ {
+ infoTip.style.left = Math.max(0, panelWidth -
+ (infoTip.offsetWidth + infoTipMargin)) + "px";
+ infoTip.style.right = "auto";
+ }
+ else
+ {
+ infoTip.style.left = (x+infoTipMargin) + "px";
+ infoTip.style.right = "auto";
+ }
+
+ if (y+infoTip.offsetHeight+infoTipMargin > panelHeight)
+ {
+ infoTip.style.top = Math.max(0, panelHeight -
+ (infoTip.offsetHeight+infoTipMargin)) + "px";
+ infoTip.style.bottom = "auto";
+ }
+ else
+ {
+ infoTip.style.top = (y+infoTipMargin) + "px";
+ infoTip.style.bottom = "auto";
+ }
+
+ if (FBTrace.DBG_INFOTIP)
+ FBTrace.sysout("infotip.showInfoTip; top: " + infoTip.style.top +
+ ", left: " + infoTip.style.left + ", bottom: " + infoTip.style.bottom +
+ ", right:" + infoTip.style.right + ", offsetHeight: " + infoTip.offsetHeight +
+ ", offsetWidth: " + infoTip.offsetWidth +
+ ", x: " + x + ", panelWidth: " + panelWidth +
+ ", y: " + y + ", panelHeight: " + panelHeight);
+
+ infoTip.setAttribute("active", "true");
+ }
+ else
+ {
+ this.hideInfoTip(infoTip);
+ }
+ },
+
+ hideInfoTip: function(infoTip)
+ {
+ if (infoTip)
+ infoTip.removeAttribute("active");
+ },
+
+ onMouseOut: function(event, browser)
+ {
+ if (!event.relatedTarget)
+ this.hideInfoTip(browser.infoTip);
+ },
+
+ onMouseMove: function(event, browser)
+ {
+ // Ignore if the mouse is moving over the existing info tip.
+ if (Dom.getAncestorByClass(event.target, "infoTip"))
+ return;
+
+ if (browser.currentPanel)
+ {
+ var x = event.clientX, y = event.clientY;
+ this.showInfoTip(browser.infoTip, browser.currentPanel, event.target, x, y,
+ event.rangeParent, event.rangeOffset);
+ }
+ else
+ {
+ this.hideInfoTip(browser.infoTip);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Module
+
+ disable: function()
+ {
+ // XXXjoe For each browser, call uninitializeBrowser
+ },
+
+ showPanel: function(browser, panel)
+ {
+ if (panel)
+ {
+ var infoTip = panel.panelBrowser.infoTip;
+ if (!infoTip)
+ infoTip = this.initializeBrowser(panel.panelBrowser);
+ this.hideInfoTip(infoTip);
+ }
+
+ },
+
+ showSidePanel: function(browser, panel)
+ {
+ this.showPanel(browser, panel);
+ }
+});
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.InfoTip);
+
+return Firebug.InfoTip;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/knownIssues.js b/content/firebug/chrome/knownIssues.js
index 80b3fdd..1ffc1b6 100644
--- a/content/firebug/chrome/knownIssues.js
+++ b/content/firebug/chrome/knownIssues.js
@@ -1,42 +1,42 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/lib/options",
- "firebug/firebug",
- "firebug/lib/dom",
- "firebug/chrome/firefox",
-],
-function(Obj, Options, Firebug, Dom, Firefox) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-
-/**
- * This module is responsible for varisous hacky solutions related to known issues.
- */
-Firebug.KnownIssues = Obj.extend(Firebug.Module,
-/** @lends Firebug.KnownIssues */
-{
- dispatchName: "knownIssues",
-
- initialize: function()
- {
- // TODO: put any workarounds here
- },
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.KnownIssues);
-
-return Firebug.KnownIssues;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/lib/options",
+ "firebug/firebug",
+ "firebug/lib/dom",
+ "firebug/chrome/firefox",
+],
+function(Obj, Options, Firebug, Dom, Firefox) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+
+/**
+ * This module is responsible for varisous hacky solutions related to known issues.
+ */
+Firebug.KnownIssues = Obj.extend(Firebug.Module,
+/** @lends Firebug.KnownIssues */
+{
+ dispatchName: "knownIssues",
+
+ initialize: function()
+ {
+ // TODO: put any workarounds here
+ },
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.KnownIssues);
+
+return Firebug.KnownIssues;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/menu.js b/content/firebug/chrome/menu.js
index 02becde..4672b2e 100644
--- a/content/firebug/chrome/menu.js
+++ b/content/firebug/chrome/menu.js
@@ -1,245 +1,245 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/locale",
- "firebug/lib/options",
- "firebug/lib/css",
- "firebug/lib/deprecated"
-],
-function(FBTrace, Locale, Options, Css, Deprecated) {
-
-"use strict";
-
-// ********************************************************************************************* //
-// Constants
-
-var Menu = {};
-
-// ********************************************************************************************* //
-
-Menu.createMenu = function(popup, item)
-{
- if (typeof item == "string")
- {
- return Deprecated.deprecated("The function's header changed to "+
- "createMenu(popup, item)",
- Menu.createMenu, [popup, {label: item}])();
- }
-
- var menu = popup.ownerDocument.createElement("menu");
- popup.appendChild(menu);
-
- Menu.setItemIntoElement(menu, item);
-
- this.createMenuPopup(menu, item);
-
- return menu;
-};
-
-Menu.createMenuPopup = function(parent, item)
-{
- var menuPopup = parent.ownerDocument.createElement("menupopup");
- parent.appendChild(menuPopup);
-
- if (item.items)
- {
- for (var i = 0, len = item.items.length; i < len; ++i)
- Menu.createMenuItem(menuPopup, item.items[i]);
- }
-
- return menuPopup;
-}
-
-// Menu.createMenuItems(popup, items[, before])
-Menu.createMenuItems = function(popup, items, before)
-{
- for (var i=0; i<items.length; i++)
- {
- var item = items[i];
-
- // Override existing items to avoid duplicates.
- var existingItem = popup.querySelector("#" + item.id);
- if (existingItem)
- {
- Menu.createMenuItem(popup, item, existingItem);
- popup.removeChild(existingItem);
- continue;
- }
-
- Menu.createMenuItem(popup, item, before);
- }
-};
-
-Menu.createMenuItem = function(popup, item, before)
-{
- if ((typeof(item) == "string" && item == "-") || item.label == "-")
- return Menu.createMenuSeparator(popup, item, before);
-
- var menuitem;
-
- if (item.items)
- menuitem = Menu.createMenu(popup, item);
- else
- menuitem = popup.ownerDocument.createElement("menuitem");
-
- Menu.setItemIntoElement(menuitem, item);
-
- if (before)
- popup.insertBefore(menuitem, before);
- else
- popup.appendChild(menuitem);
-
- return menuitem;
-};
-
-Menu.setItemIntoElement = function(element, item)
-{
- var label = item.nol10n ? item.label : Locale.$STR(item.label);
-
- element.setAttribute("label", label);
-
- if (item.id)
- element.setAttribute("id", item.id);
-
- if (item.type)
- element.setAttribute("type", item.type);
-
- // Avoid closing the popup menu if a preference has been changed.
- // This allows to quickly change more options.
- if (item.type == "checkbox" && !item.closemenu)
- element.setAttribute("closemenu", "none");
-
- if (item.disabled)
- element.setAttribute("disabled", "true");
-
- if (item.image)
- {
- element.setAttribute("class", "menuitem-iconic");
- element.setAttribute("image", item.image);
- }
-
- if (item.command)
- element.addEventListener("command", item.command, false);
-
- if (item.commandID)
- element.setAttribute("command", item.commandID);
-
- if (item.option)
- element.setAttribute("option", item.option);
-
- if (item.tooltiptext)
- {
- var tooltiptext = item.nol10n ? item.tooltiptext : Locale.$STR(item.tooltiptext);
- element.setAttribute("tooltiptext", tooltiptext);
- }
-
- if (item.className)
- Css.setClass(element, item.className);
-
- if (item.acceltext)
- element.setAttribute("acceltext", item.acceltext);
- else if (item.key)
- element.setAttribute("key", item.key);
-
- if (item.name)
- element.setAttribute("name", item.name);
-
- if (item.items && (item.command || item.commandID))
- {
- element.setAttribute("type", "splitmenu");
- element.setAttribute("iconic", "true");
- }
-
- // xxxHonza: must be done after 'type' == 'splitmenu' otherwise the menu-item
- // is not checked (the check icon is not displayed from some reason).
- if (item.checked)
- element.setAttribute("checked", "true");
-
- return element;
-};
-
-Menu.createMenuHeader = function(popup, item)
-{
- var header = popup.ownerDocument.createElement("label");
- header.setAttribute("class", "menuHeader");
-
- var label = item.nol10n ? item.label : Locale.$STR(item.label);
-
- header.setAttribute("value", label);
-
- popup.appendChild(header);
- return header;
-};
-
-Menu.createMenuSeparator = function(popup, item, before)
-{
- if (item instanceof Node)
- {
- return Deprecated.deprecated("The function's header changed to "+
- "createMenuSeparator(popup, item, before)",
- Menu.createMenuSeparator, [popup, null, before])();
- }
-
- if (!popup.firstChild)
- return;
-
- if (FBTrace.DBG_MENU)
- FBTrace.sysout("createMenuSeparator", {popup: popup, item: item, before: before});
-
- var menuItem = popup.ownerDocument.createElement("menuseparator");
- if (typeof item == "object" && item.id)
- menuItem.setAttribute("id", item.id);
-
- if (before)
- popup.insertBefore(menuItem, before);
- else
- popup.appendChild(menuItem);
-
- return menuItem;
-};
-
-/**
- * Create an option menu item definition. This method is usually used in methods like:
- * {@link Firebug.Panel.getOptionsMenuItems} or {@link Firebug.Panel.getContextMenuItems}.
- *
- * @param {String} label Name of the string from *.properties file.
- * @param {String} option Name of the associated option.
- * @param {String, Optional} tooltiptext Optional name of the string from *.properties file
- * that should be used as a tooltip for the menu.
- */
-Menu.optionMenu = function(label, option, tooltiptext)
-{
- return {
- label: label,
- type: "checkbox",
- checked: Options.get(option),
- option: option,
- tooltiptext: tooltiptext,
- command: function() {
- return Options.togglePref(option);
- }
- };
-};
-
-/**
- * Remove unnecessary separators (at the top or at the bottom of the menu).
- */
-Menu.optimizeSeparators = function(popup)
-{
- while (popup.firstChild && popup.firstChild.tagName == "menuseparator")
- popup.removeChild(popup.firstChild);
-
- while (popup.lastChild && popup.lastChild.tagName == "menuseparator")
- popup.removeChild(popup.lastChild);
-
- // xxxHonza: We should also check double-separators
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return Menu;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/locale",
+ "firebug/lib/options",
+ "firebug/lib/css",
+ "firebug/lib/deprecated"
+],
+function(FBTrace, Locale, Options, Css, Deprecated) {
+
+"use strict";
+
+// ********************************************************************************************* //
+// Constants
+
+var Menu = {};
+
+// ********************************************************************************************* //
+
+Menu.createMenu = function(popup, item)
+{
+ if (typeof item == "string")
+ {
+ return Deprecated.deprecated("The function's header changed to "+
+ "createMenu(popup, item)",
+ Menu.createMenu, [popup, {label: item}])();
+ }
+
+ var menu = popup.ownerDocument.createElement("menu");
+ popup.appendChild(menu);
+
+ Menu.setItemIntoElement(menu, item);
+
+ this.createMenuPopup(menu, item);
+
+ return menu;
+};
+
+Menu.createMenuPopup = function(parent, item)
+{
+ var menuPopup = parent.ownerDocument.createElement("menupopup");
+ parent.appendChild(menuPopup);
+
+ if (item.items)
+ {
+ for (var i = 0, len = item.items.length; i < len; ++i)
+ Menu.createMenuItem(menuPopup, item.items[i]);
+ }
+
+ return menuPopup;
+}
+
+// Menu.createMenuItems(popup, items[, before])
+Menu.createMenuItems = function(popup, items, before)
+{
+ for (var i=0; i<items.length; i++)
+ {
+ var item = items[i];
+
+ // Override existing items to avoid duplicates.
+ var existingItem = popup.querySelector("#" + item.id);
+ if (existingItem)
+ {
+ Menu.createMenuItem(popup, item, existingItem);
+ popup.removeChild(existingItem);
+ continue;
+ }
+
+ Menu.createMenuItem(popup, item, before);
+ }
+};
+
+Menu.createMenuItem = function(popup, item, before)
+{
+ if ((typeof(item) == "string" && item == "-") || item.label == "-")
+ return Menu.createMenuSeparator(popup, item, before);
+
+ var menuitem;
+
+ if (item.items)
+ menuitem = Menu.createMenu(popup, item);
+ else
+ menuitem = popup.ownerDocument.createElement("menuitem");
+
+ Menu.setItemIntoElement(menuitem, item);
+
+ if (before)
+ popup.insertBefore(menuitem, before);
+ else
+ popup.appendChild(menuitem);
+
+ return menuitem;
+};
+
+Menu.setItemIntoElement = function(element, item)
+{
+ var label = item.nol10n ? item.label : Locale.$STR(item.label);
+
+ element.setAttribute("label", label);
+
+ if (item.id)
+ element.setAttribute("id", item.id);
+
+ if (item.type)
+ element.setAttribute("type", item.type);
+
+ // Avoid closing the popup menu if a preference has been changed.
+ // This allows to quickly change more options.
+ if (item.type == "checkbox" && !item.closemenu)
+ element.setAttribute("closemenu", "none");
+
+ if (item.disabled)
+ element.setAttribute("disabled", "true");
+
+ if (item.image)
+ {
+ element.setAttribute("class", "menuitem-iconic");
+ element.setAttribute("image", item.image);
+ }
+
+ if (item.command)
+ element.addEventListener("command", item.command, false);
+
+ if (item.commandID)
+ element.setAttribute("command", item.commandID);
+
+ if (item.option)
+ element.setAttribute("option", item.option);
+
+ if (item.tooltiptext)
+ {
+ var tooltiptext = item.nol10n ? item.tooltiptext : Locale.$STR(item.tooltiptext);
+ element.setAttribute("tooltiptext", tooltiptext);
+ }
+
+ if (item.className)
+ Css.setClass(element, item.className);
+
+ if (item.acceltext)
+ element.setAttribute("acceltext", item.acceltext);
+ else if (item.key)
+ element.setAttribute("key", item.key);
+
+ if (item.name)
+ element.setAttribute("name", item.name);
+
+ if (item.items && (item.command || item.commandID))
+ {
+ element.setAttribute("type", "splitmenu");
+ element.setAttribute("iconic", "true");
+ }
+
+ // xxxHonza: must be done after 'type' == 'splitmenu' otherwise the menu-item
+ // is not checked (the check icon is not displayed from some reason).
+ if (item.checked)
+ element.setAttribute("checked", "true");
+
+ return element;
+};
+
+Menu.createMenuHeader = function(popup, item)
+{
+ var header = popup.ownerDocument.createElement("label");
+ header.setAttribute("class", "menuHeader");
+
+ var label = item.nol10n ? item.label : Locale.$STR(item.label);
+
+ header.setAttribute("value", label);
+
+ popup.appendChild(header);
+ return header;
+};
+
+Menu.createMenuSeparator = function(popup, item, before)
+{
+ if (item instanceof Node)
+ {
+ return Deprecated.deprecated("The function's header changed to "+
+ "createMenuSeparator(popup, item, before)",
+ Menu.createMenuSeparator, [popup, null, before])();
+ }
+
+ if (!popup.firstChild)
+ return;
+
+ if (FBTrace.DBG_MENU)
+ FBTrace.sysout("createMenuSeparator", {popup: popup, item: item, before: before});
+
+ var menuItem = popup.ownerDocument.createElement("menuseparator");
+ if (typeof item == "object" && item.id)
+ menuItem.setAttribute("id", item.id);
+
+ if (before)
+ popup.insertBefore(menuItem, before);
+ else
+ popup.appendChild(menuItem);
+
+ return menuItem;
+};
+
+/**
+ * Create an option menu item definition. This method is usually used in methods like:
+ * {@link Firebug.Panel.getOptionsMenuItems} or {@link Firebug.Panel.getContextMenuItems}.
+ *
+ * @param {String} label Name of the string from *.properties file.
+ * @param {String} option Name of the associated option.
+ * @param {String, Optional} tooltiptext Optional name of the string from *.properties file
+ * that should be used as a tooltip for the menu.
+ */
+Menu.optionMenu = function(label, option, tooltiptext)
+{
+ return {
+ label: label,
+ type: "checkbox",
+ checked: Options.get(option),
+ option: option,
+ tooltiptext: tooltiptext,
+ command: function() {
+ return Options.togglePref(option);
+ }
+ };
+};
+
+/**
+ * Remove unnecessary separators (at the top or at the bottom of the menu).
+ */
+Menu.optimizeSeparators = function(popup)
+{
+ while (popup.firstChild && popup.firstChild.tagName == "menuseparator")
+ popup.removeChild(popup.firstChild);
+
+ while (popup.lastChild && popup.lastChild.tagName == "menuseparator")
+ popup.removeChild(popup.lastChild);
+
+ // xxxHonza: We should also check double-separators
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return Menu;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/navigationHistory.js b/content/firebug/chrome/navigationHistory.js
index 8739805..0960a0e 100644
--- a/content/firebug/chrome/navigationHistory.js
+++ b/content/firebug/chrome/navigationHistory.js
@@ -1,294 +1,294 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/lib/locale",
- "firebug/firebug",
- "firebug/lib/dom",
- "firebug/chrome/menu",
-],
-function(Obj, Locale, Firebug, Dom, Menu) {
-
-// ************************************************************************************************
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const MAX_HISTORY_MENU_ITEMS = 15;
-
-// ************************************************************************************************
-
-/**
- * @class Support for back and forward pattern for navigating within Firebug UI (panels).
- */
-Firebug.NavigationHistory = Obj.extend(Firebug.Module,
-{
- dispatchName: "navigationHistory",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Extending Module
-
- initContext: function(context, persistedState)
- {
- Firebug.Module.initContext.apply(this, arguments);
-
- // Initialize context members.
- context.navigationHistory = [];
- context.navigationHistoryIndex = 0;
-
- if (persistedState && persistedState.navigationHistory)
- {
- context.navigationHistory = persistedState.navigationHistory;
- context.navigationHistoryIndex = persistedState.navigationHistoryIndex;
- }
- },
-
- destroyContext: function(context, persistedState)
- {
- Firebug.Module.destroyContext.apply(this, arguments);
-
- if (persistedState)
- {
- persistedState.navigationHistory = context.navigationHistory;
- persistedState.navigationHistoryIndex = context.navigationHistoryIndex;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // History popup menu
-
- onPopupShowing: function(popup, context)
- {
- var currIndex = this.getCurrentIndex(context);
-
- if (FBTrace.DBG_HISTORY)
- FBTrace.sysout("history.onPopupShowing; " + currIndex + ", " + context.getName(), context);
-
- Dom.eraseNode(popup);
-
- var list = this.getHistory(context);
-
- // Don't display the popup for a single item.
- var count = list.length;
- if (count <= 1)
- return false;
-
- var maxItems = MAX_HISTORY_MENU_ITEMS;
- var half = Math.floor(maxItems / 2);
- var start = Math.max(currIndex - half, 0);
- var end = Math.min(start == 0 ? maxItems : currIndex + half + 1, count);
-
- if (end == count)
- start = Math.max(count - maxItems, 0);
-
- var tooltipBack = Locale.$STR("firebug.history.Go back to this panel");
- var tooltipCurrent = Locale.$STR("firebug.history.Stay on this panel");
- var tooltipForward = Locale.$STR("firebug.history.Go forward to this panel");
-
- for (var i=end-1; i>=start; i--)
- {
- var historyItem = list[i];
- var panelType = Firebug.getPanelType(historyItem.panelName);
- var label = Firebug.getPanelTitle(panelType);
- if (historyItem.location && historyItem.location.url)
- label += " - " + historyItem.location.url;
-
- var menuInfo = {
- label: label,
- nol10n: true,
- className: "menuitem-iconic fbURLMenuItem",
- };
-
- if (i < currIndex)
- {
- menuInfo.className += " navigationHistoryMenuItemBack";
- menuInfo.tooltiptext = tooltipBack;
- }
- else if (i == currIndex)
- {
- menuInfo.type = "radio";
- menuInfo.checked = "true";
- menuInfo.className = "navigationHistoryMenuItemCurrent";
- menuInfo.tooltiptext = tooltipCurrent;
- }
- else
- {
- menuInfo.className += " navigationHistoryMenuItemForward";
- menuInfo.tooltiptext = tooltipForward;
- }
-
- var menuItem = Menu.createMenuItem(popup, menuInfo);
- menuItem.repObject = location;
- menuItem.setAttribute("index", i);
- }
-
- return true;
- },
-
- onHistoryCommand: function(event, context)
- {
- var menuItem = event.target;
- var index = menuItem.getAttribute("index");
- if (!index)
- return false;
-
- this.gotoHistoryIndex(context, index);
- return true;
- },
-
- goBack: function(context)
- {
- var currIndex = this.getCurrentIndex(context);
-
- if (FBTrace.DBG_HISTORY)
- FBTrace.sysout("history.goBack; " + currIndex + ", " + context.getName(), context);
-
- this.gotoHistoryIndex(context, currIndex - 1);
- },
-
- goForward: function(context)
- {
- var currIndex = this.getCurrentIndex(context);
-
- if (FBTrace.DBG_HISTORY)
- FBTrace.sysout("history.goForward; " + currIndex + ", " + context.getName(), context);
-
- this.gotoHistoryIndex(context, currIndex + 1);
- },
-
- gotoHistoryIndex: function(context, index)
- {
- var list = this.getHistory(context);
- if (index < 0 || index >= list.length)
- return;
-
- var historyItem = list[index];
-
- try
- {
- this.navInProgress = true;
- Firebug.chrome.navigate(historyItem.location, historyItem.panelName);
- context.navigationHistoryIndex = index;
- }
- catch (e)
- {
- }
- finally
- {
- this.navInProgress = false;
- }
-
- this.updateButtons(context);
- },
-
-
- updateButtons: function(context)
- {
- var list = this.getHistory(context);
-
- var backButton = Firebug.chrome.$("fbNavigateBackButton");
- var forwardButton = Firebug.chrome.$("fbNavigateForwardButton");
-
- backButton.setAttribute("disabled", "true");
- forwardButton.setAttribute("disabled", "true");
-
- if (list.length <= 1)
- return;
-
- var currIndex = this.getCurrentIndex(context);
-
- if (currIndex > 0)
- backButton.removeAttribute("disabled");
-
- if (currIndex < list.length-1)
- forwardButton.removeAttribute("disabled");
- },
-
- getHistory: function(context)
- {
- if (!context.navigationHistory)
- context.navigationHistory = [];
-
- return context.navigationHistory;
- },
-
- getCurrentIndex: function(context)
- {
- if (typeof(context.navigationHistoryIndex) == "undefined")
- context.navigationHistoryIndex = 0;
-
- return context.navigationHistoryIndex;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // UI Listener
-
- onPanelNavigate: function(location, panel)
- {
- var context = panel.context;
- var currIndex = this.getCurrentIndex(context);
-
- if (FBTrace.DBG_HISTORY)
- FBTrace.sysout("history.onPanelNavigate; " + currIndex + ", " +
- "Panel: " + (panel ? panel.name : "Unknown Panel") + ", " +
- "Location: " + (location ? location.url : "No Location") + ", " +
- context.getName());
-
- // The panel must be always there
- if (!panel)
- return;
-
- // Ignore side panel navigation.
- if (panel.parentPanel)
- return;
-
- // The user is navigating using the history UI, this action doesn't affect
- // the history list.
- if (this.navInProgress)
- return;
-
- var list = this.getHistory(context);
-
- // If the last item in the history is the same bail out.
- var lastHistoryItem = list.length ? list[list.length-1] : null;
- if (lastHistoryItem && lastHistoryItem.panelName == panel.name &&
- lastHistoryItem.location == location)
- return;
-
- if (lastHistoryItem && lastHistoryItem.location && location &&
- lastHistoryItem.location.url == location.url)
- return;
-
- // If the panel is the same, bail out.
- var currHistoryItem = list.length ? list[currIndex] : null;
- if (currHistoryItem && currHistoryItem.panelName == panel.name &&
- currHistoryItem.location == location)
- return;
-
- // Remove forward history.
- list.splice(currIndex+1, list.length-(currIndex+1));
-
- // New back history record.
- list.push({panelName: panel.name, location: location});
- context.navigationHistoryIndex = list.length-1;
-
- if (FBTrace.DBG_HISTORY)
- FBTrace.sysout("history.onPanelNavigate; New history record created " + currIndex +
- ", " + panel.name + ", " + (location ? location.url : "No Location"), list);
-
- // Update back and forward buttons in the UI.
- this.updateButtons(context);
- }
-});
-
-// ************************************************************************************************
-// Registration
-
-Firebug.registerModule(Firebug.NavigationHistory);
-Firebug.registerUIListener(Firebug.NavigationHistory);
-
-return Firebug.NavigationHistory;
-
-// ************************************************************************************************
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/lib/locale",
+ "firebug/firebug",
+ "firebug/lib/dom",
+ "firebug/chrome/menu",
+],
+function(Obj, Locale, Firebug, Dom, Menu) {
+
+// ************************************************************************************************
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+const MAX_HISTORY_MENU_ITEMS = 15;
+
+// ************************************************************************************************
+
+/**
+ * @class Support for back and forward pattern for navigating within Firebug UI (panels).
+ */
+Firebug.NavigationHistory = Obj.extend(Firebug.Module,
+{
+ dispatchName: "navigationHistory",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Extending Module
+
+ initContext: function(context, persistedState)
+ {
+ Firebug.Module.initContext.apply(this, arguments);
+
+ // Initialize context members.
+ context.navigationHistory = [];
+ context.navigationHistoryIndex = 0;
+
+ if (persistedState && persistedState.navigationHistory)
+ {
+ context.navigationHistory = persistedState.navigationHistory;
+ context.navigationHistoryIndex = persistedState.navigationHistoryIndex;
+ }
+ },
+
+ destroyContext: function(context, persistedState)
+ {
+ Firebug.Module.destroyContext.apply(this, arguments);
+
+ if (persistedState)
+ {
+ persistedState.navigationHistory = context.navigationHistory;
+ persistedState.navigationHistoryIndex = context.navigationHistoryIndex;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // History popup menu
+
+ onPopupShowing: function(popup, context)
+ {
+ var currIndex = this.getCurrentIndex(context);
+
+ if (FBTrace.DBG_HISTORY)
+ FBTrace.sysout("history.onPopupShowing; " + currIndex + ", " + context.getName(), context);
+
+ Dom.eraseNode(popup);
+
+ var list = this.getHistory(context);
+
+ // Don't display the popup for a single item.
+ var count = list.length;
+ if (count <= 1)
+ return false;
+
+ var maxItems = MAX_HISTORY_MENU_ITEMS;
+ var half = Math.floor(maxItems / 2);
+ var start = Math.max(currIndex - half, 0);
+ var end = Math.min(start == 0 ? maxItems : currIndex + half + 1, count);
+
+ if (end == count)
+ start = Math.max(count - maxItems, 0);
+
+ var tooltipBack = Locale.$STR("firebug.history.Go back to this panel");
+ var tooltipCurrent = Locale.$STR("firebug.history.Stay on this panel");
+ var tooltipForward = Locale.$STR("firebug.history.Go forward to this panel");
+
+ for (var i=end-1; i>=start; i--)
+ {
+ var historyItem = list[i];
+ var panelType = Firebug.getPanelType(historyItem.panelName);
+ var label = Firebug.getPanelTitle(panelType);
+ if (historyItem.location && historyItem.location.url)
+ label += " - " + historyItem.location.url;
+
+ var menuInfo = {
+ label: label,
+ nol10n: true,
+ className: "menuitem-iconic fbURLMenuItem",
+ };
+
+ if (i < currIndex)
+ {
+ menuInfo.className += " navigationHistoryMenuItemBack";
+ menuInfo.tooltiptext = tooltipBack;
+ }
+ else if (i == currIndex)
+ {
+ menuInfo.type = "radio";
+ menuInfo.checked = "true";
+ menuInfo.className = "navigationHistoryMenuItemCurrent";
+ menuInfo.tooltiptext = tooltipCurrent;
+ }
+ else
+ {
+ menuInfo.className += " navigationHistoryMenuItemForward";
+ menuInfo.tooltiptext = tooltipForward;
+ }
+
+ var menuItem = Menu.createMenuItem(popup, menuInfo);
+ menuItem.repObject = location;
+ menuItem.setAttribute("index", i);
+ }
+
+ return true;
+ },
+
+ onHistoryCommand: function(event, context)
+ {
+ var menuItem = event.target;
+ var index = menuItem.getAttribute("index");
+ if (!index)
+ return false;
+
+ this.gotoHistoryIndex(context, index);
+ return true;
+ },
+
+ goBack: function(context)
+ {
+ var currIndex = this.getCurrentIndex(context);
+
+ if (FBTrace.DBG_HISTORY)
+ FBTrace.sysout("history.goBack; " + currIndex + ", " + context.getName(), context);
+
+ this.gotoHistoryIndex(context, currIndex - 1);
+ },
+
+ goForward: function(context)
+ {
+ var currIndex = this.getCurrentIndex(context);
+
+ if (FBTrace.DBG_HISTORY)
+ FBTrace.sysout("history.goForward; " + currIndex + ", " + context.getName(), context);
+
+ this.gotoHistoryIndex(context, currIndex + 1);
+ },
+
+ gotoHistoryIndex: function(context, index)
+ {
+ var list = this.getHistory(context);
+ if (index < 0 || index >= list.length)
+ return;
+
+ var historyItem = list[index];
+
+ try
+ {
+ this.navInProgress = true;
+ Firebug.chrome.navigate(historyItem.location, historyItem.panelName);
+ context.navigationHistoryIndex = index;
+ }
+ catch (e)
+ {
+ }
+ finally
+ {
+ this.navInProgress = false;
+ }
+
+ this.updateButtons(context);
+ },
+
+
+ updateButtons: function(context)
+ {
+ var list = this.getHistory(context);
+
+ var backButton = Firebug.chrome.$("fbNavigateBackButton");
+ var forwardButton = Firebug.chrome.$("fbNavigateForwardButton");
+
+ backButton.setAttribute("disabled", "true");
+ forwardButton.setAttribute("disabled", "true");
+
+ if (list.length <= 1)
+ return;
+
+ var currIndex = this.getCurrentIndex(context);
+
+ if (currIndex > 0)
+ backButton.removeAttribute("disabled");
+
+ if (currIndex < list.length-1)
+ forwardButton.removeAttribute("disabled");
+ },
+
+ getHistory: function(context)
+ {
+ if (!context.navigationHistory)
+ context.navigationHistory = [];
+
+ return context.navigationHistory;
+ },
+
+ getCurrentIndex: function(context)
+ {
+ if (typeof(context.navigationHistoryIndex) == "undefined")
+ context.navigationHistoryIndex = 0;
+
+ return context.navigationHistoryIndex;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // UI Listener
+
+ onPanelNavigate: function(location, panel)
+ {
+ var context = panel.context;
+ var currIndex = this.getCurrentIndex(context);
+
+ if (FBTrace.DBG_HISTORY)
+ FBTrace.sysout("history.onPanelNavigate; " + currIndex + ", " +
+ "Panel: " + (panel ? panel.name : "Unknown Panel") + ", " +
+ "Location: " + (location ? location.url : "No Location") + ", " +
+ context.getName());
+
+ // The panel must be always there
+ if (!panel)
+ return;
+
+ // Ignore side panel navigation.
+ if (panel.parentPanel)
+ return;
+
+ // The user is navigating using the history UI, this action doesn't affect
+ // the history list.
+ if (this.navInProgress)
+ return;
+
+ var list = this.getHistory(context);
+
+ // If the last item in the history is the same bail out.
+ var lastHistoryItem = list.length ? list[list.length-1] : null;
+ if (lastHistoryItem && lastHistoryItem.panelName == panel.name &&
+ lastHistoryItem.location == location)
+ return;
+
+ if (lastHistoryItem && lastHistoryItem.location && location &&
+ lastHistoryItem.location.url == location.url)
+ return;
+
+ // If the panel is the same, bail out.
+ var currHistoryItem = list.length ? list[currIndex] : null;
+ if (currHistoryItem && currHistoryItem.panelName == panel.name &&
+ currHistoryItem.location == location)
+ return;
+
+ // Remove forward history.
+ list.splice(currIndex+1, list.length-(currIndex+1));
+
+ // New back history record.
+ list.push({panelName: panel.name, location: location});
+ context.navigationHistoryIndex = list.length-1;
+
+ if (FBTrace.DBG_HISTORY)
+ FBTrace.sysout("history.onPanelNavigate; New history record created " + currIndex +
+ ", " + panel.name + ", " + (location ? location.url : "No Location"), list);
+
+ // Update back and forward buttons in the UI.
+ this.updateButtons(context);
+ }
+});
+
+// ************************************************************************************************
+// Registration
+
+Firebug.registerModule(Firebug.NavigationHistory);
+Firebug.registerUIListener(Firebug.NavigationHistory);
+
+return Firebug.NavigationHistory;
+
+// ************************************************************************************************
+});
diff --git a/content/firebug/chrome/panelActivation.js b/content/firebug/chrome/panelActivation.js
index 58b9819..8b04ab7 100644
--- a/content/firebug/chrome/panelActivation.js
+++ b/content/firebug/chrome/panelActivation.js
@@ -1,404 +1,404 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/firefox",
- "firebug/lib/locale",
- "firebug/lib/domplate",
- "firebug/lib/xpcom",
- "firebug/lib/url",
- "firebug/lib/dom",
- "firebug/lib/options",
-],
-function(Obj, Firebug, Firefox, Locale, Domplate, Xpcom, Url, Dom, Options) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const prefs = Xpcom.CCSV("@mozilla.org/preferences-service;1", "nsIPrefBranch");
-const prompts = Xpcom.CCSV("@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService");
-
-// ********************************************************************************************* //
-// Panel Activation Implementation
-
-/**
- * @module Implements Panel activation logic. A Firebug panel can support activation in order
- * to avoid performance penalties in cases when panel's features are not necessary at the moment.
- * Such panel must be derived from {@link Firebug.ActivablePanel} and appropriate activable
- * module from {@link Firebug.ActivableModule}
- */
-Firebug.PanelActivation = Obj.extend(Firebug.Module,
-/** @lends Firebug.PanelActivation */
-{
- dispatchName: "panelActivation",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- initialize: function()
- {
- prefs.addObserver(Firebug.Options.getPrefDomain(), this, false);
- Firebug.connection.addListener(this);
- },
-
- initializeUI: function()
- {
- // The "off" option is removed so make sure to convert previous value
- // into "none" if necessary.
- if (Firebug.allPagesActivation == "off")
- Firebug.allPagesActivation = "none";
-
- // Update option menu item.
- this.updateAllPagesActivation();
- },
-
- shutdown: function()
- {
- prefs.removeObserver(Firebug.Options.getPrefDomain(), this, false);
- Firebug.connection.removeListener(this);
- },
-
- showPanel: function(browser, panel)
- {
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("PanelActivation.showPanel; " + (panel ? panel.name : "null panel"));
-
- // Panel toolbar is not displayed for disabled panels.
- var chrome = Firebug.chrome;
- Dom.collapse(chrome.$("fbToolbar"), !panel);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- activatePanelTypes: function(panelTypes)
- {
- for (var i=0; i<panelTypes.length; i++)
- {
- var panelType = panelTypes[i];
- if (!this.isPanelActivable(panelType))
- continue;
-
- if (this.isPanelEnabled(panelType))
- panelType.prototype.onActivationChanged(true);
- }
- },
-
- deactivatePanelTypes: function(panelTypes)
- {
- for (var i=0; i<panelTypes.length; i++)
- {
- var panelType = panelTypes[i];
- if (!this.isPanelActivable(panelType))
- continue;
-
- if (this.isPanelEnabled(panelType))
- panelType.prototype.onActivationChanged(false);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- isPanelActivable: function(panelType)
- {
- return panelType.prototype.activable ? true : false;
- },
-
- isPanelEnabled: function(panelType)
- {
- if (typeof(panelType) == "string")
- panelType = Firebug.getPanelType("script");
-
- if (!this.isPanelActivable(panelType))
- return true;
-
- // Panel "class" object is used to decide whether a panel is disabled
- // or not (i.e.: isEnabled is a static method of Firebug.Panel)
- return panelType ? panelType.prototype.isEnabled() : false;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Enable & disable methods.
-
- enablePanel: function(panelType)
- {
- this.setPanelState(panelType, true);
- },
-
- disablePanel: function(panelType)
- {
- this.setPanelState(panelType, false);
- },
-
- enableAllPanels: function()
- {
- for (var i = 0; i < Firebug.panelTypes.length; ++i)
- {
- var panelType = Firebug.panelTypes[i];
- this.setPanelState(panelType, true);
- }
- },
-
- disableAllPanels: function()
- {
- for (var i = 0; i < Firebug.panelTypes.length; ++i)
- {
- var panelType = Firebug.panelTypes[i];
- this.setPanelState(panelType, false);
- }
- },
-
- setPanelState: function(panelType, enable)
- {
- if (panelType && panelType.prototype.setEnabled)
- panelType.prototype.setEnabled(enable);
-
- this.updateTab(panelType);
- },
-
- updateTab: function(panelType)
- {
- var panelName = panelType.prototype.name;
- var panelBar = Firebug.chrome.$("fbPanelBar1");
- var tab = panelBar.updateTab(panelType);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Observer activation changes (preference)
-
- /**
- * Observer for activation preferences changes.
- */
- observe: function(subject, topic, data)
- {
- if (topic != "nsPref:changed")
- return;
-
- if (data.indexOf(".enableSites") == -1)
- return;
-
- var parts = data.split(".");
- if (parts.length != 4)
- return;
-
- try
- {
- var panelName = parts[2];
- var enable = Firebug.Options.get(panelName + ".enableSites");
-
- var panelType = Firebug.getPanelType(panelName, enable);
- if (panelType)
- this.onActivationChanged(panelType, enable);
- }
- catch (e)
- {
- if (FBTrace.DBG_ACTIVATION || FBTrace.DBG_ERRORS)
- FBTrace.sysout("PanelActivation.observe; EXCEPTION " + e, e);
- }
- },
-
- onActivationChanged: function(panelType, enable)
- {
- if (!enable)
- {
- // Iterate all contexts and destroy all instances of the specified panel.
- var self = this;
- Firebug.connection.eachContext(function(context) {
- context.destroyPanel(panelType, context.persistedState);
- });
- }
-
- panelType.prototype.onActivationChanged(enable);
-
- this.dispatch("activationChanged", [panelType, enable]);
-
- Firebug.chrome.$("fbPanelBar1").updateTab(panelType);
- Firebug.chrome.syncPanel();
- },
-
- // respond to event
- onClearAnnotations: function()
- {
- Firebug.closeFirebug(true); // and we turn off as it now cannot be enabled
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // UI commands
-
- clearAnnotations: function(force)
- {
- // If 'force' is set to true, ignore preference and skip the confirmation dialog.
- // Note that the argument is used by automated tests.
- var skipConfirmation = (typeof(force) == "boolean" && force === true);
- if (skipConfirmation)
- {
- Firebug.connection.clearAnnotations();
- return;
- }
-
- // Show the confirmation dialog only if the preference/user says so.
- var clearConfirmationPref = "clearAnnotationsConfirmation";
- if (Options.get(clearConfirmationPref))
- {
- var check = {value: false};
- var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_YES +
- prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_NO;
-
- if (!prompts.confirmEx(Firebug.chrome.window, Locale.$STR("Firebug"),
- Locale.$STR("annotations.confirm.clear"), flags, "", "", "",
- Locale.$STR("Do_not_show_this_message_again"), check) == 0)
- {
- return;
- }
-
- Options.set(clearConfirmationPref, !check.value);
- }
-
- Firebug.connection.clearAnnotations();
- },
-
- toggleAll: function(state)
- {
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("Firebug.toggleAll("+state+") with allPagesActivation: " +
- Firebug.allPagesActivation);
-
- if (state == "on")
- {
- if (Firebug.allPagesActivation == state) // then we were armed
- Firebug.allPagesActivation = "none";
- else
- this.allOn();
- }
- else
- {
- Firebug.allPagesActivation = "none";
- }
-
- Firebug.Options.set("allPagesActivation", Firebug.allPagesActivation);
- this.updateAllPagesActivation();
- },
-
- updateOption: function(name, value)
- {
- if (name == "allPagesActivation")
- this.updateAllPagesActivation();
- },
-
- updateAllPagesActivation: function()
- {
- // don't show Off button if we are always on
- var allOn = Firebug.allPagesActivation == "on";
- Firebug.chrome.disableOff(allOn);
-
- Firebug.StartButton.resetTooltip();
- },
-
- allOn: function()
- {
- Firebug.allPagesActivation = "on"; // In future we always create contexts,
- Firebug.toggleBar(true); // and we turn on for the current page
- }
-});
-
-// ********************************************************************************************* //
-
-/**
- * @domplate This template renders default content for disabled panels.
- */
-with (Domplate) {
-Firebug.DisabledPanelBox = domplate(Firebug.Rep,
-/** @lends Firebug.DisabledPanelBox */
-{
- tag:
- DIV({"class": "disabledPanelBox"},
- H1({"class": "disabledPanelHead"},
- SPAN("$pageTitle")
- ),
- P({"class": "disabledPanelDescription", style: "margin-top: 15px;"},
- Locale.$STR("moduleManager.desc3"),
- SPAN(" "),
- SPAN({"class": "descImage descImage-$panelName"})
- ),
- A({"class": "objectLink", onclick: "$onEnable"},
- Locale.$STR("moduleManager.Enable")
- )
- /* need something here that pushes down any thing appended to the panel */
- ),
-
- onEnable: function(event)
- {
- var view = event.target.ownerDocument.defaultView;
- var isMainPanel = (view.name == "fbPanelBar1-browser");
- var panelBar = Firebug.chrome.$(isMainPanel ? "fbPanelBar1" : "fbPanelBar2");
-
- var panelType = panelBar.selectedTab.panelType;
- if (panelType.prototype.setEnabled)
- {
- panelType.prototype.setEnabled(true);
- panelBar.updateTab(panelType);
- }
- else
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("panelActivation.onEnable; panel is not activable: " +
- Firebug.getPanelTitle(panelType));
- }
- },
-
- /**
- * Show default content saying that this panel type (specified by name) is disabled.
- * The parent node is specified in panel.html file.
- */
- show: function(browser, panelName)
- {
- if (!panelName)
- return;
-
- var panel = Firebug.getPanelType(panelName);
- var panelTitle = Firebug.getPanelTitle(panel);
- var args = {
- pageTitle: Locale.$STRF("moduleManager.title", [panelTitle]),
- panelName: panelName
- };
-
- var parentNode = this.getParentNode(browser);
- this.tag.replace(args, parentNode, this);
- parentNode.removeAttribute("collapsed");
- },
-
- /**
- * Hide currently displayed default content.
- */
- hide: function(browser)
- {
- var parentNode = this.getParentNode(browser);
-
- // xxxHonza: I am seeing null parentNode when Firebug initializes
- // Could it be because the panel.html can sometimes take more time to load?
- if (!parentNode)
- return;
-
- Dom.clearNode(parentNode);
- parentNode.setAttribute("collapsed", true);
- },
-
- getParentNode: function(browser)
- {
- var doc = browser.contentDocument;
- return doc.documentElement.querySelector(".disabledPanelNode");
- },
-});
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.PanelActivation);
-
-return Firebug.PanelActivation;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/firefox",
+ "firebug/lib/locale",
+ "firebug/lib/domplate",
+ "firebug/lib/xpcom",
+ "firebug/lib/url",
+ "firebug/lib/dom",
+ "firebug/lib/options",
+],
+function(Obj, Firebug, Firefox, Locale, Domplate, Xpcom, Url, Dom, Options) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+const prefs = Xpcom.CCSV("@mozilla.org/preferences-service;1", "nsIPrefBranch");
+const prompts = Xpcom.CCSV("@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService");
+
+// ********************************************************************************************* //
+// Panel Activation Implementation
+
+/**
+ * @module Implements Panel activation logic. A Firebug panel can support activation in order
+ * to avoid performance penalties in cases when panel's features are not necessary at the moment.
+ * Such panel must be derived from {@link Firebug.ActivablePanel} and appropriate activable
+ * module from {@link Firebug.ActivableModule}
+ */
+Firebug.PanelActivation = Obj.extend(Firebug.Module,
+/** @lends Firebug.PanelActivation */
+{
+ dispatchName: "panelActivation",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ initialize: function()
+ {
+ prefs.addObserver(Firebug.Options.getPrefDomain(), this, false);
+ Firebug.connection.addListener(this);
+ },
+
+ initializeUI: function()
+ {
+ // The "off" option is removed so make sure to convert previous value
+ // into "none" if necessary.
+ if (Firebug.allPagesActivation == "off")
+ Firebug.allPagesActivation = "none";
+
+ // Update option menu item.
+ this.updateAllPagesActivation();
+ },
+
+ shutdown: function()
+ {
+ prefs.removeObserver(Firebug.Options.getPrefDomain(), this, false);
+ Firebug.connection.removeListener(this);
+ },
+
+ showPanel: function(browser, panel)
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("PanelActivation.showPanel; " + (panel ? panel.name : "null panel"));
+
+ // Panel toolbar is not displayed for disabled panels.
+ var chrome = Firebug.chrome;
+ Dom.collapse(chrome.$("fbToolbar"), !panel);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ activatePanelTypes: function(panelTypes)
+ {
+ for (var i=0; i<panelTypes.length; i++)
+ {
+ var panelType = panelTypes[i];
+ if (!this.isPanelActivable(panelType))
+ continue;
+
+ if (this.isPanelEnabled(panelType))
+ panelType.prototype.onActivationChanged(true);
+ }
+ },
+
+ deactivatePanelTypes: function(panelTypes)
+ {
+ for (var i=0; i<panelTypes.length; i++)
+ {
+ var panelType = panelTypes[i];
+ if (!this.isPanelActivable(panelType))
+ continue;
+
+ if (this.isPanelEnabled(panelType))
+ panelType.prototype.onActivationChanged(false);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ isPanelActivable: function(panelType)
+ {
+ return panelType.prototype.activable ? true : false;
+ },
+
+ isPanelEnabled: function(panelType)
+ {
+ if (typeof(panelType) == "string")
+ panelType = Firebug.getPanelType("script");
+
+ if (!this.isPanelActivable(panelType))
+ return true;
+
+ // Panel "class" object is used to decide whether a panel is disabled
+ // or not (i.e.: isEnabled is a static method of Firebug.Panel)
+ return panelType ? panelType.prototype.isEnabled() : false;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Enable & disable methods.
+
+ enablePanel: function(panelType)
+ {
+ this.setPanelState(panelType, true);
+ },
+
+ disablePanel: function(panelType)
+ {
+ this.setPanelState(panelType, false);
+ },
+
+ enableAllPanels: function()
+ {
+ for (var i = 0; i < Firebug.panelTypes.length; ++i)
+ {
+ var panelType = Firebug.panelTypes[i];
+ this.setPanelState(panelType, true);
+ }
+ },
+
+ disableAllPanels: function()
+ {
+ for (var i = 0; i < Firebug.panelTypes.length; ++i)
+ {
+ var panelType = Firebug.panelTypes[i];
+ this.setPanelState(panelType, false);
+ }
+ },
+
+ setPanelState: function(panelType, enable)
+ {
+ if (panelType && panelType.prototype.setEnabled)
+ panelType.prototype.setEnabled(enable);
+
+ this.updateTab(panelType);
+ },
+
+ updateTab: function(panelType)
+ {
+ var panelName = panelType.prototype.name;
+ var panelBar = Firebug.chrome.$("fbPanelBar1");
+ var tab = panelBar.updateTab(panelType);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Observer activation changes (preference)
+
+ /**
+ * Observer for activation preferences changes.
+ */
+ observe: function(subject, topic, data)
+ {
+ if (topic != "nsPref:changed")
+ return;
+
+ if (data.indexOf(".enableSites") == -1)
+ return;
+
+ var parts = data.split(".");
+ if (parts.length != 4)
+ return;
+
+ try
+ {
+ var panelName = parts[2];
+ var enable = Firebug.Options.get(panelName + ".enableSites");
+
+ var panelType = Firebug.getPanelType(panelName, enable);
+ if (panelType)
+ this.onActivationChanged(panelType, enable);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ACTIVATION || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("PanelActivation.observe; EXCEPTION " + e, e);
+ }
+ },
+
+ onActivationChanged: function(panelType, enable)
+ {
+ if (!enable)
+ {
+ // Iterate all contexts and destroy all instances of the specified panel.
+ var self = this;
+ Firebug.connection.eachContext(function(context) {
+ context.destroyPanel(panelType, context.persistedState);
+ });
+ }
+
+ panelType.prototype.onActivationChanged(enable);
+
+ this.dispatch("activationChanged", [panelType, enable]);
+
+ Firebug.chrome.$("fbPanelBar1").updateTab(panelType);
+ Firebug.chrome.syncPanel();
+ },
+
+ // respond to event
+ onClearAnnotations: function()
+ {
+ Firebug.closeFirebug(true); // and we turn off as it now cannot be enabled
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // UI commands
+
+ clearAnnotations: function(force)
+ {
+ // If 'force' is set to true, ignore preference and skip the confirmation dialog.
+ // Note that the argument is used by automated tests.
+ var skipConfirmation = (typeof(force) == "boolean" && force === true);
+ if (skipConfirmation)
+ {
+ Firebug.connection.clearAnnotations();
+ return;
+ }
+
+ // Show the confirmation dialog only if the preference/user says so.
+ var clearConfirmationPref = "clearAnnotationsConfirmation";
+ if (Options.get(clearConfirmationPref))
+ {
+ var check = {value: false};
+ var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_YES +
+ prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_NO;
+
+ if (!prompts.confirmEx(Firebug.chrome.window, Locale.$STR("Firebug"),
+ Locale.$STR("annotations.confirm.clear"), flags, "", "", "",
+ Locale.$STR("Do_not_show_this_message_again"), check) == 0)
+ {
+ return;
+ }
+
+ Options.set(clearConfirmationPref, !check.value);
+ }
+
+ Firebug.connection.clearAnnotations();
+ },
+
+ toggleAll: function(state)
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("Firebug.toggleAll("+state+") with allPagesActivation: " +
+ Firebug.allPagesActivation);
+
+ if (state == "on")
+ {
+ if (Firebug.allPagesActivation == state) // then we were armed
+ Firebug.allPagesActivation = "none";
+ else
+ this.allOn();
+ }
+ else
+ {
+ Firebug.allPagesActivation = "none";
+ }
+
+ Firebug.Options.set("allPagesActivation", Firebug.allPagesActivation);
+ this.updateAllPagesActivation();
+ },
+
+ updateOption: function(name, value)
+ {
+ if (name == "allPagesActivation")
+ this.updateAllPagesActivation();
+ },
+
+ updateAllPagesActivation: function()
+ {
+ // don't show Off button if we are always on
+ var allOn = Firebug.allPagesActivation == "on";
+ Firebug.chrome.disableOff(allOn);
+
+ Firebug.StartButton.resetTooltip();
+ },
+
+ allOn: function()
+ {
+ Firebug.allPagesActivation = "on"; // In future we always create contexts,
+ Firebug.toggleBar(true); // and we turn on for the current page
+ }
+});
+
+// ********************************************************************************************* //
+
+/**
+ * @domplate This template renders default content for disabled panels.
+ */
+with (Domplate) {
+Firebug.DisabledPanelBox = domplate(Firebug.Rep,
+/** @lends Firebug.DisabledPanelBox */
+{
+ tag:
+ DIV({"class": "disabledPanelBox"},
+ H1({"class": "disabledPanelHead"},
+ SPAN("$pageTitle")
+ ),
+ P({"class": "disabledPanelDescription", style: "margin-top: 15px;"},
+ Locale.$STR("moduleManager.desc3"),
+ SPAN(" "),
+ SPAN({"class": "descImage descImage-$panelName"})
+ ),
+ A({"class": "objectLink", onclick: "$onEnable"},
+ Locale.$STR("moduleManager.Enable")
+ )
+ /* need something here that pushes down any thing appended to the panel */
+ ),
+
+ onEnable: function(event)
+ {
+ var view = event.target.ownerDocument.defaultView;
+ var isMainPanel = (view.name == "fbPanelBar1-browser");
+ var panelBar = Firebug.chrome.$(isMainPanel ? "fbPanelBar1" : "fbPanelBar2");
+
+ var panelType = panelBar.selectedTab.panelType;
+ if (panelType.prototype.setEnabled)
+ {
+ panelType.prototype.setEnabled(true);
+ panelBar.updateTab(panelType);
+ }
+ else
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("panelActivation.onEnable; panel is not activable: " +
+ Firebug.getPanelTitle(panelType));
+ }
+ },
+
+ /**
+ * Show default content saying that this panel type (specified by name) is disabled.
+ * The parent node is specified in panel.html file.
+ */
+ show: function(browser, panelName)
+ {
+ if (!panelName)
+ return;
+
+ var panel = Firebug.getPanelType(panelName);
+ var panelTitle = Firebug.getPanelTitle(panel);
+ var args = {
+ pageTitle: Locale.$STRF("moduleManager.title", [panelTitle]),
+ panelName: panelName
+ };
+
+ var parentNode = this.getParentNode(browser);
+ this.tag.replace(args, parentNode, this);
+ parentNode.removeAttribute("collapsed");
+ },
+
+ /**
+ * Hide currently displayed default content.
+ */
+ hide: function(browser)
+ {
+ var parentNode = this.getParentNode(browser);
+
+ // xxxHonza: I am seeing null parentNode when Firebug initializes
+ // Could it be because the panel.html can sometimes take more time to load?
+ if (!parentNode)
+ return;
+
+ Dom.clearNode(parentNode);
+ parentNode.setAttribute("collapsed", true);
+ },
+
+ getParentNode: function(browser)
+ {
+ var doc = browser.contentDocument;
+ return doc.documentElement.querySelector(".disabledPanelNode");
+ },
+});
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.PanelActivation);
+
+return Firebug.PanelActivation;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/plugin.js b/content/firebug/chrome/plugin.js
index 4b7defb..9405d62 100644
--- a/content/firebug/chrome/plugin.js
+++ b/content/firebug/chrome/plugin.js
@@ -1,138 +1,138 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/trace/debug",
-],
-function(Obj, Firebug, Debug) {
-
-// ************************************************************************************************
-// This is a panel implemented as its own browser with its own URL
-
-Firebug.PluginPanel = function() {};
-
-Firebug.PluginPanel.prototype = Obj.extend(Firebug.Panel,
-{
- createBrowser: function()
- {
- var doc = Firebug.chrome.window.document;
- this.browser = doc.createElement("browser");
- this.browser.addEventListener("DOMContentLoaded", this.browserReady, false);
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("plugin.createBrowser DOMContentLoaded addEventListener\n");
- this.browser.className = "pluginBrowser";
- this.browser.setAttribute("src", this.url); // see tabContext.createPanelType
- },
-
- destroyBrowser: function()
- {
- if (this.browser)
- {
- this.browser.parentNode.removeChild(this.browser);
- delete this.browser;
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("plugin.destroyBrowser \n");
- }
- },
-
- browserReady: function()
- {
- this.browser.removeEventListener("DOMContentLoaded", this.browserReady, false);
- if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("plugin.browserReady DOMContentLoaded addEventListener\n");
- this.innerPanel = this.browser.contentWindow.FirebugPanel; // XXXjjb ?
- if (this.visible)
- {
- if (this.innerPanel)
- innerCall(this.innerPanel, "initialize", [this.context.window]);
- this.updateSelection(this.selection);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // extends Panel
-
- initialize: function()
- {
- this.browserReady = Obj.bindFixed(this.browserReady, this);
- Firebug.Panel.initialize.apply(this, arguments);
- },
-
- destroy: function(state)
- {
- this.destroyBrowser();
- Firebug.Panel.destroy.apply(this, arguments);
- },
-
- show: function(state)
- {
- if (!this.browser)
- this.createBrowser();
- },
-
- hide: function()
- {
- },
-
- supportsObject: function(object, type)
- {
- if (this.innerPanel)
- return innerCall(this.innerPanel, "supportsObject", [object, type]);
- else
- return 0;
- },
-
- updateSelection: function(object)
- {
- if (!this.innerPanel)
- return;
-
- innerCall(this.innerPanel, "select", [object]);
- },
-
- getObjectPath: function(object)
- {
- },
-
- getDefaultSelection: function()
- {
- },
-
- updateOption: function(name, value)
- {
- },
-
- getOptionsMenuItems: function()
- {
- },
-
- getContextMenuItems: function(object, target)
- {
- },
-
- getEditor: function(target, value)
- {
- }
-});
-
-// ************************************************************************************************
-
-function innerCall(innerPanel, name, args)
-{
- try
- {
- innerPanel[name].apply(innerPanel, args);
- }
- catch (exc)
- {
- Debug.ERROR(exc);
- }
-}
-
-// ************************************************************************************************
-// Registration
-
-return Firebug.PluginPanel;
-
-// ************************************************************************************************
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/trace/debug",
+],
+function(Obj, Firebug, Debug) {
+
+// ************************************************************************************************
+// This is a panel implemented as its own browser with its own URL
+
+Firebug.PluginPanel = function() {};
+
+Firebug.PluginPanel.prototype = Obj.extend(Firebug.Panel,
+{
+ createBrowser: function()
+ {
+ var doc = Firebug.chrome.window.document;
+ this.browser = doc.createElement("browser");
+ this.browser.addEventListener("DOMContentLoaded", this.browserReady, false);
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("plugin.createBrowser DOMContentLoaded addEventListener\n");
+ this.browser.className = "pluginBrowser";
+ this.browser.setAttribute("src", this.url); // see tabContext.createPanelType
+ },
+
+ destroyBrowser: function()
+ {
+ if (this.browser)
+ {
+ this.browser.parentNode.removeChild(this.browser);
+ delete this.browser;
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("plugin.destroyBrowser \n");
+ }
+ },
+
+ browserReady: function()
+ {
+ this.browser.removeEventListener("DOMContentLoaded", this.browserReady, false);
+ if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("plugin.browserReady DOMContentLoaded addEventListener\n");
+ this.innerPanel = this.browser.contentWindow.FirebugPanel; // XXXjjb ?
+ if (this.visible)
+ {
+ if (this.innerPanel)
+ innerCall(this.innerPanel, "initialize", [this.context.window]);
+ this.updateSelection(this.selection);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // extends Panel
+
+ initialize: function()
+ {
+ this.browserReady = Obj.bindFixed(this.browserReady, this);
+ Firebug.Panel.initialize.apply(this, arguments);
+ },
+
+ destroy: function(state)
+ {
+ this.destroyBrowser();
+ Firebug.Panel.destroy.apply(this, arguments);
+ },
+
+ show: function(state)
+ {
+ if (!this.browser)
+ this.createBrowser();
+ },
+
+ hide: function()
+ {
+ },
+
+ supportsObject: function(object, type)
+ {
+ if (this.innerPanel)
+ return innerCall(this.innerPanel, "supportsObject", [object, type]);
+ else
+ return 0;
+ },
+
+ updateSelection: function(object)
+ {
+ if (!this.innerPanel)
+ return;
+
+ innerCall(this.innerPanel, "select", [object]);
+ },
+
+ getObjectPath: function(object)
+ {
+ },
+
+ getDefaultSelection: function()
+ {
+ },
+
+ updateOption: function(name, value)
+ {
+ },
+
+ getOptionsMenuItems: function()
+ {
+ },
+
+ getContextMenuItems: function(object, target)
+ {
+ },
+
+ getEditor: function(target, value)
+ {
+ }
+});
+
+// ************************************************************************************************
+
+function innerCall(innerPanel, name, args)
+{
+ try
+ {
+ innerPanel[name].apply(innerPanel, args);
+ }
+ catch (exc)
+ {
+ Debug.ERROR(exc);
+ }
+}
+
+// ************************************************************************************************
+// Registration
+
+return Firebug.PluginPanel;
+
+// ************************************************************************************************
+});
diff --git a/content/firebug/chrome/privacy.js b/content/firebug/chrome/privacy.js
index 66c81b9..f1ab5aa 100644
--- a/content/firebug/chrome/privacy.js
+++ b/content/firebug/chrome/privacy.js
@@ -1,114 +1,114 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/object",
- "firebug/lib/array",
- "firebug/lib/events",
-],
-function(FBTrace, Obj, Arr, Events) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-var Cu = Components.utils;
-
-try
-{
- Cu["import"]("resource://gre/modules/PrivateBrowsingUtils.jsm");
-}
-catch (err)
-{
-}
-
-// ********************************************************************************************* //
-
-/**
- * No data should be written if Firefox is set to privatebrowsing.
- * don't forget to check it before access (issue 2923).
- *
- * xxxHonza: as soon as Fx 22 is the min for Firebug most of the methods can be removed.
- * The most important one will be the isPrivateBrowsing
- */
-var Privacy = Obj.extend(Firebug.Module,
-{
- initialize: function()
- {
- if (this.observerService)
- return;
-
- this.observerService = Cc["@mozilla.org/observer-service;1"]
- .getService(Ci.nsIObserverService);
-
- this.observerService.addObserver(this, "private-browsing", false);
-
- this.update();
- },
-
- shutdown: function()
- {
- this.observerService.removeObserver(this, "private-browsing");
- },
-
- update: function(data)
- {
- try
- {
- // xxxHonza: this component has been removed in Firefox 22
- // https://bugzilla.mozilla.org/show_bug.cgi?id=845063
- var pbs = Cc["@mozilla.org/privatebrowsing;1"]
- .getService(Ci.nsIPrivateBrowsingService);
-
- this.privateBrowsingEnabled = pbs.privateBrowsingEnabled;
-
- Events.dispatch(this.fbListeners, "onPrivateBrowsingChange",
- [this.privateBrowsingEnabled]);
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("Privacy.update " + this.isPrivateBrowsing());
- }
- catch (e)
- {
- // nsIPrivateBrowsingService has been removed since Fx 22 so, don't display
- // the error message.
- //if (FBTrace.DBG_ERRORS)
- // FBTrace.sysout("Privacy.update EXCEPTION " + e, e);
- }
- },
-
- observe: function (subject, topic, data)
- {
- if (topic == "private-browsing")
- Privacy.update(data);
- },
-
- isPrivateBrowsing: function()
- {
- try
- {
- // First check existence of the new PB API. Get firebugFrame.xul and check
- // private mode (it's the same as for the top parent window).
- if (typeof PrivateBrowsingUtils != "undefined")
- return PrivateBrowsingUtils.isWindowPrivate(Firebug.chrome.window);
- }
- catch (e)
- {
- }
-
- // OK, use nsIPrivateBrowsingService, it should still exist and the following
- // property should be properly initialized in update() method
- return this.privateBrowsingEnabled;
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Privacy);
-
-return Privacy;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/object",
+ "firebug/lib/array",
+ "firebug/lib/events",
+],
+function(FBTrace, Obj, Arr, Events) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cu = Components.utils;
+
+try
+{
+ Cu["import"]("resource://gre/modules/PrivateBrowsingUtils.jsm");
+}
+catch (err)
+{
+}
+
+// ********************************************************************************************* //
+
+/**
+ * No data should be written if Firefox is set to privatebrowsing.
+ * don't forget to check it before access (issue 2923).
+ *
+ * xxxHonza: as soon as Fx 22 is the min for Firebug most of the methods can be removed.
+ * The most important one will be the isPrivateBrowsing
+ */
+var Privacy = Obj.extend(Firebug.Module,
+{
+ initialize: function()
+ {
+ if (this.observerService)
+ return;
+
+ this.observerService = Cc["@mozilla.org/observer-service;1"]
+ .getService(Ci.nsIObserverService);
+
+ this.observerService.addObserver(this, "private-browsing", false);
+
+ this.update();
+ },
+
+ shutdown: function()
+ {
+ this.observerService.removeObserver(this, "private-browsing");
+ },
+
+ update: function(data)
+ {
+ try
+ {
+ // xxxHonza: this component has been removed in Firefox 22
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=845063
+ var pbs = Cc["@mozilla.org/privatebrowsing;1"]
+ .getService(Ci.nsIPrivateBrowsingService);
+
+ this.privateBrowsingEnabled = pbs.privateBrowsingEnabled;
+
+ Events.dispatch(this.fbListeners, "onPrivateBrowsingChange",
+ [this.privateBrowsingEnabled]);
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("Privacy.update " + this.isPrivateBrowsing());
+ }
+ catch (e)
+ {
+ // nsIPrivateBrowsingService has been removed since Fx 22 so, don't display
+ // the error message.
+ //if (FBTrace.DBG_ERRORS)
+ // FBTrace.sysout("Privacy.update EXCEPTION " + e, e);
+ }
+ },
+
+ observe: function (subject, topic, data)
+ {
+ if (topic == "private-browsing")
+ Privacy.update(data);
+ },
+
+ isPrivateBrowsing: function()
+ {
+ try
+ {
+ // First check existence of the new PB API. Get firebugFrame.xul and check
+ // private mode (it's the same as for the top parent window).
+ if (typeof PrivateBrowsingUtils != "undefined")
+ return PrivateBrowsingUtils.isWindowPrivate(Firebug.chrome.window);
+ }
+ catch (e)
+ {
+ }
+
+ // OK, use nsIPrivateBrowsingService, it should still exist and the following
+ // property should be properly initialized in update() method
+ return this.privateBrowsingEnabled;
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Privacy);
+
+return Privacy;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/reps.js b/content/firebug/chrome/reps.js
index ab824e8..72fa169 100644
--- a/content/firebug/chrome/reps.js
+++ b/content/firebug/chrome/reps.js
@@ -1,3070 +1,3070 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/lib/array",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/chrome/firefox",
- "firebug/lib/xpcom",
- "firebug/lib/locale",
- "firebug/html/htmlLib",
- "firebug/lib/events",
- "firebug/lib/wrapper",
- "firebug/lib/options",
- "firebug/lib/url",
- "firebug/js/sourceLink",
- "firebug/js/stackFrame",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/chrome/window",
- "firebug/lib/system",
- "firebug/lib/xpath",
- "firebug/lib/string",
- "firebug/lib/xml",
- "firebug/dom/toggleBranch",
- "firebug/console/closureInspector",
- "firebug/chrome/menu",
- "arch/compilationunit",
- "firebug/net/netUtils",
- "firebug/chrome/panelActivation",
-],
-function(Obj, Arr, Firebug, Domplate, Firefox, Xpcom, Locale, HTMLLib, Events, Wrapper, Options,
- Url, SourceLink, StackFrame, Css, Dom, Win, System, Xpath, Str, Xml, ToggleBranch,
- ClosureInspector, Menu, CompilationUnit, NetUtils, PanelActivation) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// xxxHonza: the only global should be Firebug object.
-var FirebugReps = window.FirebugReps = {};
-
-try
-{
- // xxxHonza: RJS
- var FBS = {};
- Components.utils["import"]("resource://firebug/firebug-service.js", FBS);
- var jsd = Cc["@mozilla.org/js/jsd/debugger-service;1"].getService(Ci.jsdIDebuggerService);
-}
-catch (err)
-{
-}
-
-// ********************************************************************************************* //
-// Common Tags
-
-var OBJECTBOX = FirebugReps.OBJECTBOX =
- SPAN({"class": "objectBox objectBox-$className", role: "presentation"});
-
-var PREOBJECTBOX =
- PRE({"class": "objectBox inline objectBox-$className", role: "presentation"});
-
-var OBJECTBLOCK = FirebugReps.OBJECTBLOCK =
- DIV({"class": "objectBox objectBox-$className focusRow subLogRow", role: "listitem"});
-
-var OBJECTLINK = FirebugReps.OBJECTLINK =
- A({
- "class": "objectLink objectLink-$className a11yFocus",
- _repObject: "$object"
- });
-
-// ********************************************************************************************* //
-
-FirebugReps.Undefined = domplate(Firebug.Rep,
-{
- tag: OBJECTBOX("undefined"),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "undefined",
-
- supportsObject: function(object, type)
- {
- return type == "undefined";
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Null = domplate(Firebug.Rep,
-{
- tag: OBJECTBOX("null"),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "null",
-
- supportsObject: function(object, type)
- {
- return object == null;
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Hint = domplate(Firebug.Rep,
-{
- tag: OBJECTBOX("$object"),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "hint",
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Nada = domplate(Firebug.Rep,
-{
- tag: SPAN(""),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "nada"
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Number = domplate(Firebug.Rep,
-{
- tag: OBJECTBOX({"_repObject": "$object"}, "$object"),
- tinyTag: OBJECTBOX("$object"),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "number",
-
- supportsObject: function(object, type)
- {
- return type == "boolean" || type == "number";
- }
-});
-
-// ********************************************************************************************* //
-
-// To support copying strings with multiple spaces, tabs, newlines etc. correctly
-// we are unfortunately required by Firefox to use a <pre> tag (bug 116083).
-// Don't do that with all OBJECTBOX's though - it inserts newlines *everywhere*.
-// (See issues 3816, 6130.)
-// XXX: This would look much nicer with support for IF in domplate.
-var reSpecialWhitespace = / |[\t\n]/;
-FirebugReps.SpecialWhitespaceString = domplate(Firebug.Rep,
-{
- tag: PREOBJECTBOX({"_repObject": "$object"}, ""$object""),
-
- shortTag: OBJECTBOX({"_repObject": "$object"}, ""$object|cropMultipleLines""),
- tinyTag: OBJECTBOX(""$object|cropMultipleLines""),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "string",
-
- supportsObject: function(object, type)
- {
- return (type == "string" && reSpecialWhitespace.test(object));
- }
-});
-
-FirebugReps.String = domplate(Firebug.Rep,
-{
- tag: OBJECTBOX({"_repObject": "$object"}, ""$object""),
-
- shortTag: OBJECTBOX({"_repObject": "$object"}, ""$object|cropMultipleLines""),
- tinyTag: OBJECTBOX(""$object|cropMultipleLines""),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "string",
-
- supportsObject: function(object, type)
- {
- return type == "string";
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.XML = domplate(Firebug.Rep,
-{
- tag: OBJECTBOX("$object|asString"),
-
- shortTag: OBJECTBOX("$object|asShortString"),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "xml",
-
- supportsObject: function(object, type)
- {
- return type == "xml";
- },
-
- asString: function(object)
- {
- return object.toXMLString();
- },
-
- asShortString: function(object)
- {
- return cropMultipleLines(this.asString(object));
- },
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Text = domplate(Firebug.Rep,
-{
- tag: OBJECTBOX("$object"),
-
- // Refer to SpecialWhitespaceString above.
- specialWhitespaceTag: PREOBJECTBOX("$object"),
-
- shortTag: OBJECTBOX("$object|cropMultipleLines"),
-
- getWhitespaceCorrectedTag: function(str)
- {
- return reSpecialWhitespace.test(str) ? this.specialWhitespaceTag : this.tag;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "text"
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Caption = domplate(Firebug.Rep,
-{
- tag: SPAN({"class": "caption"}, "$object")
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Warning = domplate(Firebug.Rep,
-{
- tag: DIV({"class": "warning focusRow", role: "listitem"}, "$object|STR")
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Func = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK("$object|summarizeFunction"),
-
- summarizeFunction: function(fn)
- {
- var fnText = Str.safeToString(fn);
- var namedFn = /^function ([^(]+\([^)]*\))/.exec(fnText);
- var anonFn = /^function \(/.test(fnText);
- var displayName = fn.displayName;
-
- return namedFn ? namedFn[1] : (displayName ? displayName + "()" :
- (anonFn ? "function()" : fnText));
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- copySource: function(fn)
- {
- if (fn && typeof (fn['toSource']) == 'function')
- System.copyToClipboard(fn.toSource());
- },
-
- monitor: function(fn, monitored)
- {
- if (monitored)
- Firebug.Debugger.unmonitorFunction(fn, "monitor");
- else
- Firebug.Debugger.monitorFunction(fn, "monitor");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "function",
-
- supportsObject: function(object, type)
- {
- return type == "function";
- },
-
- inspectObject: function(fn, context)
- {
- var sourceLink = Firebug.SourceFile.findSourceForFunction(fn, context);
- if (sourceLink)
- Firebug.chrome.select(sourceLink);
-
- if (FBTrace.DBG_FUNCTION_NAMES)
- FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink);
- },
-
- getTooltip: function(fn, context)
- {
- var script = Firebug.SourceFile.findScriptForFunctionInContext(context, fn);
- if (script)
- {
- return Locale.$STRF("Line", [Url.normalizeURL(script.fileName),
- script.baseLineNumber]);
- }
- else
- {
- if (fn.toString)
- return fn.toString();
- }
- },
-
- getTitle: function(fn, context)
- {
- var name = fn.name ? fn.name : "function";
- return name + "()";
- },
-
- getContextMenuItems: function(fn, target, context, script)
- {
- if (!script)
- script = Firebug.SourceFile.findScriptForFunctionInContext(context, fn);
- if (!script)
- return;
-
- var scriptInfo = Firebug.SourceFile.getSourceFileAndLineByScript(context, script);
- var monitored = scriptInfo ? FBS.fbs.isMonitored(scriptInfo.sourceFile.href,
- scriptInfo.lineNo) : false;
-
- var self = this;
- var name = script ? StackFrame.getFunctionName(script, context) : fn.name;
- return [
- {
- label: Locale.$STRF("ShowCallsInConsole", [name]),
- tooltiptext: Locale.$STRF("dom.tip.Log_Calls_To_Function", [name]),
- nol10n: true,
- type: "checkbox",
- checked: monitored,
- command: function()
- {
- var checked = this.hasAttribute("checked");
- self.monitor(fn, !checked);
- }
- },
- "-",
- {
- label: "CopySource",
- tooltiptext: "dom.tip.Copy_Source",
- command: Obj.bindFixed(this.copySource, this, fn)
- }
- ];
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Obj = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK(
- SPAN({"class": "objectTitle"}, "$object|getTitle "),
- SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"),
- FOR("prop", "$object|shortPropIterator",
- " $prop.name",
- SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
- TAG("$prop.tag", {object: "$prop.object"}),
- SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
- ),
- SPAN({"class": "objectRightBrace"}, "}")
- ),
-
- shortTag:
- OBJECTLINK(
- SPAN({"class": "objectTitle"}, "$object|getTitle "),
- SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"),
- FOR("prop", "$object|shortPropIterator",
- " $prop.name",
- SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
- TAG("$prop.tag", {object: "$prop.object"}),
- SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
- ),
- SPAN({"class": "objectRightBrace"}, "}")
- ),
-
- titleTag:
- SPAN({"class": "objectTitle"}, "$object|getTitleTag"),
-
- getTitleTag: function(object)
- {
- var title;
- if (typeof(object) == "string")
- title = object;
- else
- title = this.getTitle(object);
-
- if (title == "Object")
- title = "{...}";
-
- return title;
- },
-
- longPropIterator: function (object)
- {
- return this.propIterator(object, 100);
- },
-
- shortPropIterator: function (object)
- {
- return this.propIterator(object, Options.get("ObjectShortIteratorMax"));
- },
-
- propIterator: function (object, max)
- {
- function isInterestingProp(t, value)
- {
- return (t == "boolean" || t == "number" || (t == "string" && value) ||
- (t == "object" && value && value.toString));
- };
-
- // Object members with non-empty values are preferred since it gives the
- // user a better overview of the object.
- var props = [];
- this.getProps(props, object, max, isInterestingProp);
-
- if (props.length <= max)
- {
- // There is not enough props yet (or at least, not enough props to
- // be able to know whether we should print "more..." or not).
- // Let's display also empty members and functions.
- this.getProps(props, object, max, function(t, value)
- {
- return !isInterestingProp(t, value);
- });
- }
-
- if (props.length > max)
- {
- props[props.length-1] = {
- object: Locale.$STR("firebug.reps.more") + "...",
- tag: FirebugReps.Caption.tag,
- name: "",
- equal: "",
- delim: ""
- };
- }
- else if (props.length > 0)
- {
- props[props.length-1].delim = '';
- }
-
- return props;
- },
-
- getProps: function (props, object, max, filter)
- {
- max = max || 3;
- if (!object)
- return [];
-
- var len = 0;
-
- try
- {
- for (var name in object)
- {
- var value;
- try
- {
- value = object[name];
- }
- catch (exc)
- {
- continue;
- }
-
- var t = typeof(value);
- if (filter(t, value))
- {
- var rep = Firebug.getRep(value);
- var tag = rep.tinyTag || rep.shortTag || rep.tag;
- if ((t == "object" || t == "function") && value)
- {
- value = rep.getTitle(value);
- if (rep.titleTag)
- tag = rep.titleTag;
- else
- tag = FirebugReps.Obj.titleTag;
- }
-
- if (props.length <= max)
- props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "});
- else
- break;
- }
- }
- }
- catch (exc)
- {
- // Sometimes we get exceptions when trying to read from certain objects, like
- // StorageList, but don't let that gum up the works
- // XXXjjb also History.previous fails because object is a web-page object
- // which does not have permission to read the history
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "object",
-
- supportsObject: function(object, type)
- {
- return true;
- }
-});
-
-// ********************************************************************************************* //
-// Reference
-
-/**
- * A placeholder used instead of cycle reference within arrays.
- * @param {Object} target The original referenced object
- */
-FirebugReps.ReferenceObj = function(target)
-{
- this.target = target;
-};
-
-/**
- * Rep for cycle reference in an array.
- */
-FirebugReps.Reference = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK({_repObject: "$object"},
- SPAN({title: "$object|getTooltip"},
- "[...]")
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "Reference",
-
- supportsObject: function(object, type)
- {
- return (object instanceof FirebugReps.ReferenceObj);
- },
-
- getTooltip: function(object)
- {
- return Locale.$STR("firebug.reps.reference");
- },
-
- getRealObject: function(object)
- {
- return object.target;
- },
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.ArrBase = domplate(FirebugReps.Obj,
-{
- className: "array",
- toggles: new ToggleBranch.ToggleBranch(),
-
- titleTag:
- SPAN({"class": "objectTitle"}, "$object|getTitleTag"),
-
- getTitle: function(object, context)
- {
- return "[" + object.length + "]";
- },
-
- supportsObject: function(object, type)
- {
- return this.isArray(object);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- longArrayIterator: function(array)
- {
- return this.arrayIterator(array, 300);
- },
-
- shortArrayIterator: function(array)
- {
- return this.arrayIterator(array, Options.get("ObjectShortIteratorMax"));
- },
-
- arrayIterator: function(array, max)
- {
- var items = [];
- for (var i = 0; i < array.length && i <= max; ++i)
- {
- try
- {
- var delim = (i == array.length-1 ? "" : ", ");
- var value = array[i];
-
- // Cycle detected
- if (value === array)
- value = new FirebugReps.ReferenceObj(value);
-
- var rep = Firebug.getRep(value);
- var tag = rep.shortTag || rep.tag;
- items.push({object: value, tag: tag, delim: delim});
- }
- catch (exc)
- {
- var rep = Firebug.getRep(exc);
- var tag = rep.shortTag || rep.tag;
-
- items.push({object: exc, tag: tag, delim: delim});
- }
- }
-
- if (array.length > max + 1)
- {
- items[max] = {
- object: (array.length-max) + " " + Locale.$STR("firebug.reps.more") + "...",
- tag: FirebugReps.Caption.tag,
- delim: ""
- };
- }
-
- return items;
- },
-
- getItemIndex: function(child)
- {
- var arrayIndex = 0;
- for (child = child.previousSibling; child; child = child.previousSibling)
- {
- if (child.repObject)
- ++arrayIndex;
- }
- return arrayIndex;
- },
-
- /**
- * Returns true if the passed object is an array with additional (custom) properties,
- * otherwise returns false. Custom properties should be displayed in extra expandable
- * section.
- *
- * Example array with a custom property.
- * var arr = [0, 1];
- * arr.myProp = "Hello";
- *
- * @param {Array} array The array object.
- */
- hasSpecialProperties: function(array)
- {
- function isInteger(x)
- {
- var y = parseInt(x, 10);
- if (isNaN(y))
- return false;
- return x === y.toString();
- }
-
- var n = 0;
- var props = Object.getOwnPropertyNames(array);
- for (var i=0; i<props.length; i++)
- {
- var p = props[i];
-
- // Valid indexes are skipped
- if (isInteger(p))
- continue;
-
- // Ignore standard 'length' property, anything else is custom.
- if (p != "length")
- return true;
- }
-
- return false;
- },
-
- onToggleProperties: function(event)
- {
- var target = event.originalTarget;
- if (Css.hasClass(target, "objectBox-array"))
- {
- Events.cancelEvent(event);
-
- Css.toggleClass(target, "opened");
-
- var propBox = target.getElementsByClassName("arrayProperties").item(0);
- if (Css.hasClass(target, "opened"))
- {
- Firebug.DOMPanel.DirTable.tag.replace(
- {object: target.repObject, toggles: this.toggles}, propBox);
- }
- else
- {
- Dom.clearNode(propBox);
- }
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- highlightObject: function(object, context, target)
- {
- // Highlighting huge amount of elements on the page can cause serious performance
- // problems (see issue 4736). So, avoid highlighting if the number of elements in
- // the array exceeds specified limit.
- var arr = this.getRealObject(object, context);
- var limit = Options.get("multiHighlightLimit");
- if (!arr || (limit > 0 && arr.length > limit))
- {
- if (Css.hasClass(target, "arrayLeftBracket") ||
- Css.hasClass(target, "arrayRightBracket"))
- {
- var tooltip = Locale.$STRF("console.multiHighlightLimitExceeded", [limit]);
- target.setAttribute("title", tooltip);
- }
-
- // Do not highlight, a tooltip will be displayed instead.
- return;
- }
-
- target.removeAttribute("title");
-
- // Highlight multiple elements on the page.
- Firebug.Inspector.highlightObject(arr, context);
- },
-
- isArray: function(obj)
- {
- return false;
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Arr = domplate(FirebugReps.ArrBase,
-{
- tag:
- OBJECTBOX({_repObject: "$object",
- $hasTwisty: "$object|hasSpecialProperties",
- onclick: "$onToggleProperties"},
- SPAN({"class": "arrayLeftBracket", role: "presentation"}, "["),
- FOR("item", "$object|longArrayIterator",
- TAG("$item.tag", {object: "$item.object"}),
- SPAN({"class": "arrayComma", role: "presentation"}, "$item.delim")
- ),
- SPAN({"class": "arrayRightBracket", role: "presentation"}, "]"),
- SPAN({"class": "arrayProperties", role: "group"})
- ),
-
- shortTag:
- OBJECTBOX({_repObject: "$object",
- $hasTwisty: "$object|hasSpecialProperties",
- onclick: "$onToggleProperties"},
- SPAN({"class": "arrayLeftBracket", role: "presentation"}, "["),
- FOR("item", "$object|shortArrayIterator",
- TAG("$item.tag", {object: "$item.object"}),
- SPAN({"class": "arrayComma", role: "presentation"}, "$item.delim")
- ),
- SPAN({"class": "arrayRightBracket"}, "]"),
- SPAN({"class": "arrayProperties", role: "group"})
- ),
-
- // http://code.google.com/p/fbug/issues/detail?id=874
- isArray: function(obj)
- {
- try
- {
- if (Arr.isArray(obj))
- return true;
- else if (isFinite(obj.length) && typeof obj.callee === "function") // arguments
- return true;
- }
- catch (exc) {}
- return false;
- }
-});
-
-// ********************************************************************************************* //
-
-/**
- * Any arrayish object that is not directly Array type (e.g. HTMLCollection, NodeList, etc.)
- */
-FirebugReps.ArrayLikeObject = domplate(FirebugReps.ArrBase,
-{
- tag:
- OBJECTBOX({_repObject: "$object",
- $hasTwisty: "$object|hasSpecialProperties",
- onclick: "$onToggleProperties"},
- A({"class": "objectTitle objectLink", onclick: "$onClickTitle"},
- "$object|getTitle"
- ),
- SPAN({"class": "arrayLeftBracket", role: "presentation"}, "["),
- FOR("item", "$object|longArrayIterator",
- TAG("$item.tag", {object: "$item.object"}),
- SPAN({"class": "arrayComma", role: "presentation"}, "$item.delim")
- ),
- SPAN({"class": "arrayRightBracket", role: "presentation"}, "]"),
- SPAN({"class": "arrayProperties", role: "group"})
- ),
-
- shortTag:
- OBJECTBOX({_repObject: "$object",
- $hasTwisty: "$object|hasSpecialProperties",
- onclick: "$onToggleProperties"},
- A({"class": "objectTitle objectLink", onclick: "$onClickTitle"},
- "$object|getTitle"
- ),
- SPAN({"class": "arrayLeftBracket", role: "presentation"}, "["),
- FOR("item", "$object|shortArrayIterator",
- TAG("$item.tag", {object: "$item.object"}),
- SPAN({"class": "arrayComma", role: "presentation"}, "$item.delim")
- ),
- SPAN({"class": "arrayRightBracket"}, "]"),
- SPAN({"class": "arrayProperties", role: "group"})
- ),
-
- onClickTitle: function(event)
- {
- var obj = Firebug.getRepObject(event.target);
- Firebug.chrome.select(obj);
- },
-
- getTitle: function(obj, context)
- {
- const re = /\[object ([^\]]*)/;
- var label = Object.prototype.toString.call(obj);
- var m = re.exec(label);
- return (m ? m[1] : label);
- },
-
- isArray: function(obj)
- {
- return Arr.isArrayLike(obj);
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Property = domplate(Firebug.Rep,
-{
- supportsObject: function(object, type)
- {
- return object instanceof FirebugReps.PropertyObj;
- },
-
- getRealObject: function(prop, context)
- {
- return prop.object[prop.name];
- },
-
- getTitle: function(prop, context)
- {
- return prop.name;
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.PropertyObj = function(object, name)
-{
- this.object = object;
- this.name = name;
-
- this.getObject = function()
- {
- return object[name];
- };
-};
-
-// ********************************************************************************************* //
-
-FirebugReps.NetFile = domplate(FirebugReps.Obj,
-{
- supportsObject: function(object, type)
- {
- if (typeof(Firebug.NetFile) == "undefined")
- return false;
-
- return object instanceof Firebug.NetFile;
- },
-
- browseObject: function(file, context)
- {
- Win.openNewTab(file.href);
- return true;
- },
-
- getRealObject: function(file, context)
- {
- return NetUtils.getRealObject(file, context);
- }
-});
-
-// ********************************************************************************************* //
-
-function instanceOf(object, Klass)
-{
- while (object != null)
- {
- if (object == Klass.prototype)
- return true;
-
- if (typeof(object) === "xml")
- return (Klass.prototype === Xml.prototype);
-
- object = object.__proto__;
- }
-
- return false;
-}
-
-// ********************************************************************************************* //
-
-FirebugReps.Element = domplate(Firebug.Rep,
-{
- className: "element",
-
- tag:
- OBJECTLINK(
- "<",
- SPAN({"class": "nodeTag"}, "$object|getLocalName"),
- FOR("attr", "$object|attrIterator",
- " $attr.localName="",
- SPAN({"class": "nodeValue"}, "$attr|getAttrValue"),
- """
- ),
- ">"
- ),
-
- shortTag:
- OBJECTLINK(
- SPAN({"class": "$object|getVisible"},
- SPAN({"class": "selectorTag"}, "$object|getSelectorTag"),
- SPAN({"class": "selectorId"}, "$object|getSelectorId"),
- SPAN({"class": "selectorClass"}, "$object|getSelectorClass"),
- TAG("$object|getValueTag", {object: "$object"})
- )
- ),
-
- // Generic template for various element values
- valueTag:
- SPAN({"class": "selectorValue"}, "$object|getValue"),
-
- // Template for <input> element with a single value coming from attribute.
- singleInputTag:
- SPAN(
- SPAN(" "),
- SPAN({"class": "selectorValue"},
- Locale.$STR("firebug.reps.element.attribute_value") + " = "
- ),
- SPAN({"class": "attributeValue inputValue"},
- TAG(FirebugReps.String.tag, {object: "$object|getValueFromAttribute"})
- )
- ),
-
- // Template for <input> element with two different values (attribute and property)
- multipleInputTag:
- SPAN(
- SPAN(" "),
- SPAN({"class": "selectorValue"},
- Locale.$STR("firebug.reps.element.property_value") + " = "
- ),
- SPAN({"class": "propertyValue inputValue"},
- TAG(FirebugReps.String.tag, {object: "$object|getValueFromProperty"})
- ),
- SPAN(" "),
- SPAN({"class": "selectorValue"},
- Locale.$STR("firebug.reps.element.attribute_value") + " = "
- ),
- SPAN({"class": "attributeValue inputValue"},
- TAG(FirebugReps.String.tag, {object: "$object|getValueFromAttribute"})
- )
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getValueTag: function(elt)
- {
- // Use proprietary template for <input> elements that can have two
- // different values. One coming from attribute 'value' and one coming
- // from property 'value'.
- if (elt instanceof window.HTMLInputElement)
- {
- var attrValue = elt.getAttribute("value");
- var propValue = elt.value;
-
- if (attrValue != propValue)
- return this.multipleInputTag;
- else
- return this.singleInputTag;
- }
-
- return this.valueTag;
- },
-
- getValueFromAttribute: function(elt)
- {
- var limit = Options.get("stringCropLength");
- var value = elt.getAttribute("value");
- return Str.cropString(value, limit);
- },
-
- getValueFromProperty: function(elt)
- {
- var limit = Options.get("stringCropLength");
- return Str.cropString(elt.value, limit);
- },
-
- getValue: function(elt)
- {
- var value;
-
- if (elt instanceof window.HTMLImageElement)
- value = Url.getFileName(elt.getAttribute("src"));
- else if (elt instanceof window.HTMLAnchorElement)
- value = Url.getFileName(elt.getAttribute("href"));
- else if (elt instanceof window.HTMLInputElement)
- value = elt.getAttribute("value");
- else if (elt instanceof window.HTMLFormElement)
- value = Url.getFileName(elt.getAttribute("action"));
- else if (elt instanceof window.HTMLScriptElement)
- value = Url.getFileName(elt.getAttribute("src"));
-
- return value ? " " + Str.cropMultipleLines(value, 20) : "";
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getLocalName: function(object)
- {
- try
- {
- return Xml.getLocalName(object);
- }
- catch (err)
- {
- return "";
- }
- },
-
- getNodeName: function(object)
- {
- try
- {
- return Xml.getNodeName(object);
- }
- catch (err)
- {
- return "";
- }
- },
-
- getAttrValue: function(attr)
- {
- var limit = Firebug.displayedAttributeValueLimit;
- return (limit > 0) ? Str.cropString(attr.value, limit) : attr.value;
- },
-
- getVisible: function(elt)
- {
- return Xml.isVisible(elt) ? "" : "selectorHidden";
- },
-
- getSelectorTag: function(elt)
- {
- return this.getLocalName(elt);
- },
-
- getSelectorId: function(elt)
- {
- try
- {
- return elt.id ? ("#" + elt.id) : "";
- }
- catch (e)
- {
- return "";
- }
- },
-
- getSelectorClass: function(elt)
- {
- try
- {
- return elt.classList.length > 0 ? ("." + elt.classList[0]) : "";
- }
- catch (err)
- {
- return "";
- }
- },
-
- attrIterator: function(elt)
- {
- var attrs = [];
- var idAttr, classAttr;
- if (elt.attributes)
- {
- for (var i = 0; i < elt.attributes.length; ++i)
- {
- var attr = elt.attributes[i];
- if (attr.localName.indexOf("-moz-math") != -1)
- continue;
- if (attr.localName.indexOf("firebug-") != -1)
- continue;
- else if (attr.localName == "id")
- idAttr = attr;
- else if (attr.localName == "class")
- classAttr = attr;
- else
- attrs.push(attr);
- }
- }
-
- // Make sure 'id' and 'class' attributes are displayed first.
- if (classAttr)
- attrs.splice(0, 0, classAttr);
- if (idAttr)
- attrs.splice(0, 0, idAttr);
-
- return attrs;
- },
-
- shortAttrIterator: function(elt)
- {
- // Short version returns only 'id' and 'class' attributes.
- var attrs = [];
- if (elt.attributes)
- {
- for (var i = 0; i < elt.attributes.length; ++i)
- {
- var attr = elt.attributes[i];
- if (attr.localName == "id" || attr.localName == "class")
- attrs.push(attr);
- }
- }
- return attrs;
- },
-
- getHidden: function(elt)
- {
- return Xml.isVisible(elt) ? "" : "nodeHidden";
- },
-
- getXPath: function(elt)
- {
- return Xpath.getElementTreeXPath(elt);
- },
-
- getNodeTextGroups: function(element)
- {
- var text = element.textContent;
- if (!Firebug.showFullTextNodes)
- {
- text = Str.cropString(text,50);
- }
-
- var escapeGroups=[];
-
- if (Firebug.showTextNodesWithWhitespace)
- escapeGroups.push({
- "group": "whitespace",
- "class": "nodeWhiteSpace",
- "extra": {
- "\t": "_Tab",
- "\n": "_Para",
- " " : "_Space"
- }
- });
-
- if (Firebug.entityDisplay != "symbols")
- escapeGroups.push({
- "group": "text",
- "class": "nodeTextEntity",
- "extra": {}
- });
-
- if (escapeGroups.length)
- return Str.escapeGroupsForEntities(text, escapeGroups, Options.get("entityDisplay"));
- else
- return [{str:text, "class": "", extra: ""}];
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- copyHTML: function(elt)
- {
- var html = Xml.getElementHTML(elt);
- System.copyToClipboard(html);
- },
-
- copyInnerHTML: function(elt)
- {
- System.copyToClipboard(elt.innerHTML);
- },
-
- copyXPath: function(elt)
- {
- var xpath = Xpath.getElementXPath(elt);
- System.copyToClipboard(xpath);
- },
-
- copyCSSPath: function(elt)
- {
- var csspath = Css.getElementCSSPath(elt);
- System.copyToClipboard(csspath);
- },
-
- paste: function(elt, clipboardContent, mode)
- {
- if (elt instanceof window.HTMLElement)
- return this.pasteHTML.apply(this, arguments);
- else
- return this.pasteXML.apply(this, arguments);
- },
-
- pasteHTML: function(elt, clipboardContent, mode)
- {
- if (mode === "replaceInner")
- elt.innerHTML = clipboardContent;
- else if (mode === "replaceOuter")
- elt.outerHTML = clipboardContent;
- else
- elt.insertAdjacentHTML(mode, clipboardContent);
- },
-
- pasteXML: function(elt, clipboardContent, mode)
- {
- var contextNode, parentNode = elt.parentNode;
- if (["beforeBegin", "afterEnd", "replaceOuter"].indexOf(mode) >= 0)
- contextNode = parentNode;
- else
- contextNode = elt;
-
- var pastedElements = Dom.markupToDocFragment(clipboardContent, contextNode);
- switch (mode)
- {
- case "beforeBegin":
- parentNode.insertBefore(pastedElements, elt);
- break;
- case "afterBegin":
- elt.insertBefore(pastedElements, elt.firstChild);
- break;
- case "beforeEnd":
- elt.appendChild(pastedElements);
- break;
- case "afterEnd":
- Dom.insertAfter(pastedElements, elt);
- break;
- case "replaceInner":
- Dom.eraseNode(elt);
- elt.appendChild(pastedElements);
- break;
- case "replaceOuter":
- parentNode.replaceChild(pastedElements, elt);
- break;
- }
- },
-
- persistor: function(context, xpath)
- {
- var elts = xpath
- ? Xpath.getElementsByXPath(context.window.document, xpath)
- : null;
-
- return elts && elts.length ? elts[0] : null;
- },
-
- reloadFrame: function(frame)
- {
- frame.contentDocument.location.reload();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- supportsObject: function(object, type)
- {
- return object instanceof window.Element;
- },
-
- browseObject: function(elt, context)
- {
- var tag = elt.localName.toLowerCase();
- if (tag == "script" || tag == "img" || tag == "iframe" || tag == "frame")
- Win.openNewTab(elt.src);
- else if (tag == "link" || tag == "a")
- Win.openNewTab(elt.href);
-
- return true;
- },
-
- ignoreTarget: function(target)
- {
- // XXX: Temporary fix for issue 5577.
- var repNode = target && Firebug.getRepNode(target);
- return (repNode && repNode.classList.contains("cssRule"));
- },
-
- highlightObject: function(object, context, target)
- {
- if (this.ignoreTarget(target))
- return;
- Firebug.Inspector.highlightObject(object, context);
- },
-
- persistObject: function(elt, context)
- {
- var xpath = Xpath.getElementXPath(elt);
-
- return Obj.bind(this.persistor, window.top, xpath);
- },
-
- getTitle: function(element, context)
- {
- return Css.getElementCSSSelector(element);
- },
-
- getTooltip: function(elt, context, target)
- {
- // If the mouse cursor hovers over cropped value of an input element
- // display the full value in the tooltip.
- if (Css.hasClass(target, "objectBox-string"))
- {
- var inputValue = Dom.getAncestorByClass(target, "inputValue");
- if (inputValue)
- {
- var limit = Options.get("stringCropLength");
- var value;
- if (Css.hasClass(inputValue, "attributeValue"))
- value = elt.getAttribute("value");
- else if (Css.hasClass(inputValue, "propertyValue"))
- value = elt.value;
-
- if (value && value.length > limit)
- return value;
- }
- }
-
- // Display xpath of the element.
- var tooltip = this.getXPath(elt);
- if (elt.namespaceURI)
- tooltip += " (" + elt.namespaceURI + ")";
-
- return tooltip;
- },
-
- getContextMenuItems: function(elt, target, context)
- {
- if (this.ignoreTarget(target))
- return;
-
- var type;
- var items = [];
- var clipboardContent = System.getStringDataFromClipboard();
- var isEltRoot = (elt === elt.ownerDocument.documentElement);
-
- if (Xml.isElementHTML(elt) || Xml.isElementXHTML(elt))
- type = "HTML";
- else if (Xml.isElementMathML(elt))
- type = "MathML";
- else if (Xml.isElementSVG(elt))
- type = "SVG";
- else if (Xml.isElementXUL(elt))
- type = "XUL";
- else
- type = "XML";
-
- items.push(
- {
- label: Locale.$STRF("html.Copy_Node", [type]),
- tooltiptext: Locale.$STRF("html.tip.Copy_Node", [type]),
- command: Obj.bindFixed(this.copyHTML, this, elt)
- });
-
- if (Xml.isElementHTML(elt) || Xml.isElementXHTML(elt))
- {
- items.push(
- {
- label: "CopyInnerHTML",
- tooltiptext: "html.tip.Copy_innerHTML",
- command: Obj.bindFixed(this.copyInnerHTML, this, elt)
- });
- }
-
- items = items.concat([
- {
- label: "CopyXPath",
- tooltiptext: "html.tip.Copy_XPath",
- id: "fbCopyXPath",
- command: Obj.bindFixed(this.copyXPath, this, elt)
- },
- {
- label: "Copy_CSS_Path",
- tooltiptext: "html.tip.Copy_CSS_Path",
- id: "fbCopyCSSPath",
- command: Obj.bindFixed(this.copyCSSPath, this, elt)
- },
- {
- label: Locale.$STRF("html.menu.Paste", [type]),
- tooltiptext: Locale.$STRF("html.tip.Paste", [type]),
- disabled: !clipboardContent,
- id: "fbPaste",
- items: [
- {
- label: "html.menu.Paste_Replace_Content",
- tooltiptext: "html.tip.Paste_Replace_Content",
- id: "fbPasteReplaceInner",
- command: Obj.bindFixed(this.paste, this, elt, clipboardContent,
- "replaceInner")
- },
- {
- label: "html.menu.Paste_Replace_Node",
- tooltiptext: "html.tip.Paste_Replace_Node",
- id: "fbPasteReplaceOuter",
- disabled: isEltRoot,
- command: Obj.bindFixed(this.paste, this, elt, clipboardContent,
- "replaceOuter")
- },
- {
- label: "html.menu.Paste_AsFirstChild",
- tooltiptext: "html.tip.Paste_AsFirstChild",
- id: "fbPasteFirstChild",
- command: Obj.bindFixed(this.paste, this, elt, clipboardContent,
- "afterBegin")
- },
- {
- label: "html.menu.Paste_AsLastChild",
- tooltiptext: "html.tip.Paste_AsLastChild",
- id: "fbPasteLastChild",
- command: Obj.bindFixed(this.paste, this, elt, clipboardContent, "beforeEnd")
- },
- {
- label: "html.menu.Paste_Before",
- tooltiptext: "html.tip.Paste_Before",
- id: "fbPasteBefore",
- disabled: isEltRoot,
- command: Obj.bindFixed(this.paste, this, elt, clipboardContent,
- "beforeBegin")
- },
- {
- label: "html.menu.Paste_After",
- tooltiptext: "html.tip.Paste_After",
- id: "fbPasteAfter",
- disabled: isEltRoot,
- command: Obj.bindFixed(this.paste, this, elt, clipboardContent, "afterEnd")
- }
- ]
- }
- ]);
-
- var tag = elt.localName.toLowerCase();
- if (tag == "script" || tag == "link" || tag == "a" || tag == "img" || tag == "iframe" ||
- tag == "frame")
- {
- items = items.concat([
- "-",
- {
- label: "OpenInTab",
- tooltiptext: "firebug.tip.Open_In_Tab",
- command: Obj.bindFixed(this.browseObject, this, elt, context)
- }
- ]);
- }
-
- if (tag == "iframe" || tag == "frame")
- {
- items = items.concat([
- {
- label: "html.menu.Reload_Frame",
- tooltiptext: "html.menu.tip.Reload_Frame",
- command: Obj.bindFixed(this.reloadFrame, this, elt)
- }
- ]);
- }
-
- items = items.concat([
- "-",
- {
- label: "ScrollIntoView",
- tooltiptext: "html.tip.Scroll_Into_View",
- id: "fbScrollIntoView",
- command: Obj.bindFixed(elt.scrollIntoView, elt)
- }
- ]);
-
- return items;
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.TextNode = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK(
- "<",
- SPAN({"class": "nodeTag"}, "TextNode"),
- " textContent="",
- SPAN({"class": "nodeValue"}, "$object.textContent|cropMultipleLines"),
- """,
- ">"
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "textNode",
-
- inspectObject: function(node, context)
- {
- // Text nodes have two displays in HTML panel, inline and distinct
- // node. We need to examine which case we are dealing with in order to
- // select the proper object.
- if (HTMLLib.hasNoElementChildren(node.parentNode))
- {
- node = node.parentNode;
- }
-
- Firebug.chrome.select(node, "html", "domSide");
- },
-
- supportsObject: function(object, type)
- {
- return object instanceof window.Text;
- },
-
- getTitle: function(win, context)
- {
- return "textNode";
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.RegExp = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK(
- SPAN({"class": "objectTitle"}, "$object|getTitle"),
- SPAN(" "),
- SPAN({"class": "regexpSource"}, "$object|getSource")
- ),
-
- className: "regexp",
-
- supportsObject: function(object, type)
- {
- try
- {
- return type == "object" && Object.prototype.toString.call(object) === "[object RegExp]";
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("reps.RegExp.supportsObject; EXCEPTION " + err, err);
- }
- },
-
- getSource: function(object)
- {
- var source = "/" + object.source + "/";
- source += object.ignoreCase ? "i" : "";
- source += object.global ? "g" : "";
- source += object.multiline ? "m" : "";
- return source;
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Document = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
-
- getLocation: function(doc)
- {
- return doc.location ? Url.getFileName(doc.location.href) : "";
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "object",
-
- supportsObject: function(object, type)
- {
- return object instanceof window.Document || object instanceof window.XMLDocument;
- },
-
- browseObject: function(doc, context)
- {
- Win.openNewTab(doc.location.href);
- return true;
- },
-
- persistObject: function(doc, context)
- {
- return this.persistor;
- },
-
- persistor: function(context)
- {
- return context.window.document;
- },
-
- getTitle: function(win, context)
- {
- return "document";
- },
-
- getTooltip: function(doc)
- {
- return doc.location.href;
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.StyleSheet = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
-
- getLocation: function(styleSheet)
- {
- return Url.getFileName(styleSheet.href);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- copyURL: function(styleSheet)
- {
- var url = Css.getURLForStyleSheet(styleSheet);
- if (url)
- System.copyToClipboard(url);
-
- if (FBTrace.DBG_ERRORS && !url)
- FBTrace.sysout("reps.StyleSheet.copyURL; ERROR no URL", styleSheet);
- },
-
- openInTab: function(styleSheet)
- {
- var url = Css.getURLForStyleSheet(styleSheet);
- if (url)
- Win.openNewTab(url);
-
- if (FBTrace.DBG_ERRORS && !url)
- FBTrace.sysout("reps.StyleSheet.openInTab; ERROR no URL", styleSheet);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "object",
-
- supportsObject: function(object, type)
- {
- return object instanceof window.CSSStyleSheet;
- },
-
- browseObject: function(styleSheet, context)
- {
- Win.openNewTab(styleSheet.href);
- return true;
- },
-
- persistObject: function(styleSheet, context)
- {
- return Obj.bind(this.persistor, top, styleSheet.href);
- },
-
- getTooltip: function(styleSheet)
- {
- return styleSheet.href;
- },
-
- getContextMenuItems: function(styleSheet, target, context)
- {
- return [
- {
- label: "CopyLocation",
- tooltiptext: "clipboard.tip.Copy_Location",
- command: Obj.bindFixed(this.copyURL, this, styleSheet)
- },
- "-",
- {
- label: "OpenInTab",
- tooltiptext: "firebug.tip.Open_In_Tab",
- command: Obj.bindFixed(this.openInTab, this, styleSheet)
- }
- ];
- },
-
- persistor: function(context, href)
- {
- return Css.getStyleSheetByHref(href, context);
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.CSSRule = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK("$object|getType ", SPAN({"class": "objectPropValue"}, "$object|getDescription")),
-
- getType: function(rule)
- {
- if (rule instanceof window.CSSStyleRule)
- {
- return "CSSStyleRule";
- }
- else if (window.CSSSupportsRule && rule instanceof window.CSSSupportsRule)
- {
- return "CSSSupportsRule";
- }
- else if ((window.CSSDocumentRule && rule instanceof window.CSSDocumentRule) ||
- (window.CSSMozDocumentRule && rule instanceof window.CSSMozDocumentRule))
- {
- return "CSSDocumentRule";
- }
- else if (rule instanceof window.CSSFontFaceRule)
- {
- return "CSSFontFaceRule";
- }
- else if (rule instanceof window.CSSImportRule)
- {
- return "CSSImportRule";
- }
- else if (rule instanceof window.CSSMediaRule)
- {
- return "CSSMediaRule";
- }
- else if (rule instanceof window.CSSCharsetRule)
- {
- return "CSSCharsetRule";
- }
- else if ((window.CSSKeyframesRule && rule instanceof window.CSSKeyframesRule) ||
- rule instanceof window.MozCSSKeyframesRule)
- {
- return "CSSKeyframesRule";
- }
- else if ((window.CSSKeyframeRule && rule instanceof window.CSSKeyframeRule) ||
- rule instanceof window.MozCSSKeyframeRule)
- {
- return "CSSKeyframeRule";
- }
- else if (window.CSSPageRule && rule instanceof window.CSSPageRule)
- {
- return "CSSPageRule";
- }
- else if (rule instanceof window.CSSNameSpaceRule)
- {
- return "CSSNameSpaceRule";
- }
-
- return "CSSRule";
- },
-
- getDescription: function(rule)
- {
- if (rule instanceof window.CSSStyleRule)
- {
- return rule.selectorText;
- }
- else if (window.CSSSupportsRule && rule instanceof window.CSSSupportsRule)
- {
- return rule.conditionText;
- }
- else if ((window.CSSDocumentRule && rule instanceof window.CSSDocumentRule) ||
- (window.CSSMozDocumentRule && rule instanceof window.CSSMozDocumentRule))
- {
- return rule.conditionText;
- }
- else if (rule instanceof window.CSSFontFaceRule)
- {
- return rule.style.getPropertyValue("font-family");
- }
- else if (rule instanceof window.CSSImportRule)
- {
- return Url.getFileName(rule.href);
- }
- else if (rule instanceof window.CSSMediaRule)
- {
- return rule.media.mediaText;
- }
- else if (rule instanceof window.CSSCharsetRule)
- {
- return rule.encoding;
- }
- else if ((window.CSSKeyframesRule && rule instanceof window.CSSKeyframesRule) ||
- rule instanceof window.MozCSSKeyframesRule)
- {
- return rule.name;
- }
- else if ((window.CSSKeyframeRule && rule instanceof window.CSSKeyframeRule) ||
- rule instanceof window.MozCSSKeyframeRule)
- {
- return rule.keyText;
- }
- else if (window.CSSPageRule && rule instanceof window.CSSPageRule)
- {
- return rule.selectorText || "";
- }
- else if (rule instanceof window.CSSNameSpaceRule)
- {
- var reNamespace = /^@namespace (.+ )?url\("(.*?)"\);$/;
- var namespace = rule.cssText.match(reNamespace);
- var prefix = namespace[1] || "";
- var name = namespace[2];
- return prefix + name;
- }
-
- return "";
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "object",
-
- supportsObject: function(object, type)
- {
- return object instanceof window.CSSRule;
- },
-
- getTooltip: function(rule)
- {
- if (rule instanceof CSSFontFaceRule)
- return Css.extractURLs(rule.style.getPropertyValue("src")).join(", ");
- else if (rule instanceof window.CSSImportRule)
- return rule.href;
-
- return "";
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Window = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK("$object|getWindowTitle ",
- SPAN({"class": "objectPropValue"},
- "$object|getLocation"
- )
- ),
-
- getLocation: function(win)
- {
- try
- {
- return (win && win.location && !win.closed) ? Url.getFileName(win.location.href) : "";
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("reps.Window window closed? "+exc, exc);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "object",
-
- supportsObject: function(object, type)
- {
- return object instanceof window.Window;
- },
-
- browseObject: function(win, context)
- {
- Win.openNewTab(win.location.href);
- return true;
- },
-
- persistObject: function(win, context)
- {
- return this.persistor;
- },
-
- persistor: function(context)
- {
- return context.window;
- },
-
- getTitle: function(win, context)
- {
- return "window";
- },
-
- getWindowTitle: function(win)
- {
- if (Firebug.viewChrome)
- {
- if (win.toString().indexOf('XrayWrapper') !== -1)
- return "XrayWrapper[Window]";
- }
- return "Window";
- },
-
- getTooltip: function(win)
- {
- if (win && !win.closed)
- return win.location.href;
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Event = domplate(Firebug.Rep,
-{
- className: "event",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- tag:
- TAG("$copyEventTag", {object: "$object|copyEvent"}),
-
- copyEventTag:
- OBJECTLINK("$object|summarizeEvent"),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- summarizeEvent: function(event)
- {
- var info = [event.type, " "];
-
- var eventFamily = Events.getEventFamily(event.type);
- if (eventFamily == "mouse")
- info.push("clientX=", event.clientX, ", clientY=", event.clientY);
- else if (eventFamily == "key")
- info.push("charCode=", event.charCode, ", keyCode=", event.keyCode);
- else if (event.type == "message")
- info.push("origin=", event.origin, ", data=", event.data);
-
- return info.join("");
- },
-
- copyEvent: function(event)
- {
- return new Dom.EventCopy(event);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- supportsObject: function(object, type)
- {
- return object instanceof window.Event || object instanceof Dom.EventCopy;
- },
-
- getTitle: function(event, context)
- {
- return "Event " + event.type;
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.SourceLink = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK(
- {$collapsed: "$object|hideSourceLink"},
- DIV("$object|getSourceLinkTitle"),
- DIV({$systemLink: "$object|isSystemLink"}, "$object|getSystemFlagTitle")),
-
- isSystemLink: function(sourceLink)
- {
- return sourceLink && Url.isSystemURL(sourceLink.href);
- },
-
- hideSourceLink: function(sourceLink)
- {
- try
- {
- return (sourceLink && sourceLink.href && sourceLink.href.indexOf) ?
- (sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1) : true;
- }
- catch (e)
- {
- // xxxHonza: I see "Security error" code: "1000" nsresult:
- // "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)"
- // when accessing globalStorage property of a page.
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("reps.hideSourceLink; EXCEPTION " + sourceLink + ", " + e, e);
- }
-
- return true;
- },
-
- getSourceLinkTitle: function(sourceLink)
- {
- if (!sourceLink || !sourceLink.href || typeof(sourceLink.href) !== 'string')
- return "";
-
- try
- {
- // XXX This is wrong for at least data: URLs. E.g. evaluating
- // "%2f" in the command line shows as "/".
- var fileName = sourceLink.href;
- fileName = Url.getFileName(fileName);
- fileName = decodeURIComponent(fileName);
- }
- catch(exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'" +
- sourceLink.href + "\': " + exc, exc);
- }
-
- var maxWidth = Firebug.sourceLinkLabelWidth;
- if (maxWidth > 0)
- fileName = Str.cropString(fileName, maxWidth);
-
- if (sourceLink.instance)
- {
- return Locale.$STRF("InstanceLine", [fileName, sourceLink.instance + 1,
- sourceLink.line]);
- }
- else if (sourceLink.line && typeof(sourceLink.col) != "undefined")
- {
- return Locale.$STRF("LineAndCol", [fileName, sourceLink.line, sourceLink.col]);
- }
- else if (sourceLink.line)
- {
- return Locale.$STRF("Line", [fileName, sourceLink.line]);
- }
- else
- {
- return fileName;
- }
- },
-
- getSystemFlagTitle: function(sourceLink)
- {
- if (this.isSystemLink(sourceLink))
- return Locale.$STRF("SystemItem", [""]);
- else
- return "";
- },
-
- copyLink: function(sourceLink)
- {
- System.copyToClipboard(sourceLink.href);
- },
-
- openInTab: function(sourceLink)
- {
- Win.openNewTab(sourceLink.href);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "sourceLink",
-
- supportsObject: function(object, type)
- {
- return object instanceof SourceLink.SourceLink;
- },
-
- getTooltip: function(sourceLink)
- {
- var text;
- try
- {
- text = decodeURI(sourceLink.href);
- }
- catch(exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("reps.getTooltip decodeURI fails for " + sourceLink.href, exc);
- }
-
- text = unescape(sourceLink.href);
-
- var lines = Str.splitLines(text);
- if (lines.length < 10)
- return text;
-
- lines.splice(10);
- return lines.join("") + "...";
- },
-
- inspectObject: function(sourceLink, context)
- {
- if (sourceLink.type == "js")
- {
- var scriptFile = Firebug.SourceFile.getSourceFileByHref(sourceLink.href, context);
- if (scriptFile)
- return Firebug.chrome.select(sourceLink);
- }
- else if (sourceLink.type == "css")
- {
- // If an object is defined, treat it as the highest priority for
- // inspect actions
- if (sourceLink.object) {
- Firebug.chrome.select(sourceLink.object);
- return;
- }
-
- var stylesheet = Css.getStyleSheetByHref(sourceLink.href, context);
- if (stylesheet)
- {
- var ownerNode = stylesheet.ownerNode;
- if (ownerNode)
- {
- Firebug.chrome.select(sourceLink, "html");
- return;
- }
-
- var panel = context.getPanel("stylesheet");
- if (panel && panel.getRuleByLine(stylesheet, sourceLink.line))
- return Firebug.chrome.select(sourceLink);
- }
- }
- else if (sourceLink.type == "net")
- {
- return Firebug.chrome.select(sourceLink);
- }
-
- // Fallback is to just open the view-source window on the file
- Firefox.viewSource(sourceLink.href, sourceLink.line);
- },
-
- browseObject: function(sourceLink, context)
- {
- Win.openNewTab(sourceLink.href);
- return true;
- },
-
- getContextMenuItems: function(sourceLink, target, context)
- {
- return [
- {
- label: "CopyLocation",
- tooltiptext: "clipboard.tip.Copy_Location",
- command: Obj.bindFixed(this.copyLink, this, sourceLink)
- },
- "-",
- {
- label: "OpenInTab",
- tooltiptext: "firebug.tip.Open_In_Tab",
- command: Obj.bindFixed(this.openInTab, this, sourceLink)
- }
- ];
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.CompilationUnit = domplate(FirebugReps.SourceLink,
-{
- tag:
- OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
-
- persistor: function(context, href)
- {
- return context.getCompilationUnit(href);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "CompilationUnit",
- inspectable: false,
-
- supportsObject: function(object, type)
- {
- return (object instanceof CompilationUnit) ? 2 : 0;
- },
-
- persistObject: function(compilationUnit)
- {
- var href = compilationUnit.getURL();
- return Obj.bind(this.persistor, top, href);
- },
-
- browseObject: function(sourceLink, context)
- {
- },
-
- getTooltip: function(compilationUnit)
- {
- return compilationUnit.getURL();
- }
-});
-
-// ********************************************************************************************* //
-
-// XXXjjb Since the repObject is fn the stack does not have correct line numbers
-FirebugReps.StackFrame = domplate(Firebug.Rep,
-{
- tag:
- OBJECTBLOCK({$hasTwisty: "$object|hasArguments", _repObject: "$object",
- onclick: "$onToggleArguments"},
- SPAN({"class":"stackFrameMarker"}, ""),
- A({"class": "objectLink a11yFocus", _repObject: "$object"}, "$object|getCallName"),
- SPAN("("),
- SPAN({"class": "arguments"},
- FOR("arg", "$object|argIterator",
- SPAN({"class": "argName"}, "$arg.name"),
- SPAN("="),
- TAG("$arg.tag", {object: "$arg.value"}),
- SPAN({"class": "arrayComma"}, "$arg.delim")
- )
- ),
- SPAN(")"),
- SPAN({"class": "objectLink-sourceLink objectLink a11yFocus",
- _repObject: "$object|getSourceLink",
- role: "link"},
- "$object|getSourceLinkTitle"),
- DIV({"class": "argList"})
- ),
-
- argList:
- DIV({"class": "argListBox", onclick: "$onSelectFrame"},
- FOR("arg", "$object|argIterator",
- DIV({"class": "argBox"},
- SPAN({"class": "argName"}, "$arg.name"),
- SPAN(" = "),
- TAG("$arg.tag", {object: "$arg.value"})
- )
- )
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getTitle: function(frame)
- {
- return frame.getFunctionName();
- },
-
- hasArguments: function(frame)
- {
- return frame.args.length;
- },
-
- getCallName: function(frame)
- {
- return frame.getFunctionName();
- },
-
- getSourceLinkTitle: function(frame)
- {
- var fileName = Url.getFileName(frame.href);
-
- var maxWidth = Firebug.sourceLinkLabelWidth;
- if (maxWidth > 0)
- var fileName = Str.cropString(fileName, maxWidth);
-
- return Locale.$STRF("Line", [fileName, frame.line]);
- },
-
- argIterator: function(frame)
- {
- if (!frame.args)
- return [];
-
- var items = [];
-
- for (var i = 0; i < frame.args.length; ++i)
- {
- var arg = frame.args[i];
-
- if (!arg)
- break;
-
- if (arg.hasOwnProperty('value')) // then we got these from jsd
- {
- var rep = Firebug.getRep(arg.value);
- var tag = rep.shortTag ? rep.shortTag : rep.tag;
-
- var delim = (i == frame.args.length-1 ? "" : ", ");
-
- items.push({name: arg.name, value: arg.value, tag: tag, delim: delim});
- }
- else if (arg.hasOwnProperty('name'))
- {
- items.push({name: arg.name, delim: delim});
- }
- else // eg from Error object
- {
- var delim = (i == frame.args.length-1 ? "" : ", ");
- var rep = Firebug.getRep(arg);
- var tag = rep.shortTag ? rep.shortTag : rep.tag;
-
- items.push({value: arg, tag: tag, delim: delim});
- }
-
- if (FBTrace.DBG_DOMPLATE)
- FBTrace.sysout("reps.stackframe args[" + i + "]: " + arg.name + " = " +
- arg.value, {arg: arg, item: items[items.length - 1]});
- }
-
- return items;
- },
-
- getSourceLink: function(stackFrame)
- {
- var sourceLink = new SourceLink.SourceLink(stackFrame.href, stackFrame.line, "js");
- return sourceLink;
- },
-
- onToggleArguments: function(event)
- {
- this.toggleArguments(event.originalTarget);
- },
-
- toggleArguments: function(target)
- {
- if (Css.hasClass(target, "objectBox-stackFrame"))
- {
- if (Css.hasClass(target, "opened"))
- this.collapseArguments(target);
- else
- this.expandArguments(target);
- }
- },
-
- collapseArguments: function(target)
- {
- if (!Css.hasClass(target, "opened"))
- return;
-
- Css.toggleClass(target, "opened");
-
- var argList = target.getElementsByClassName("argList").item(0);
- Dom.clearNode(argList);
- },
-
- expandArguments: function(target)
- {
- if (Css.hasClass(target, "opened"))
- return;
-
- var frame = target.repObject;
- if (!this.hasArguments(frame))
- return;
-
- Css.toggleClass(target, "opened");
-
- var argList = target.getElementsByClassName("argList").item(0);
- this.argList.replace({object: frame}, argList);
- },
-
- onSelectFrame: function(event)
- {
- var target = event.currentTarget;
- if (Css.hasClass(target, "argListBox"))
- {
- var stackFrame = Dom.getAncestorByClass(target, "objectBox-stackFrame");
- var panel = Firebug.getElementPanel(target);
- this.inspectObject(stackFrame.repObject, panel.context);
- Events.cancelEvent(event);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Rep
-
- className: "stackFrame",
-
- supportsObject: function(object, type)
- {
- return object instanceof StackFrame.StackFrame;
- },
-
- inspectObject: function(stackFrame, context)
- {
- if (context.stopped)
- Firebug.chrome.select(stackFrame);
- else
- Firebug.chrome.select(this.getSourceLink(stackFrame));
- },
-
- getTooltip: function(stackFrame, context)
- {
- return Locale.$STRF("Line", [stackFrame.href, stackFrame.line]);
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.StackTrace = domplate(Firebug.Rep,
-{
- tag:
- DIV({role : "group", "aria-label" : Locale.$STR("aria.labels.stack trace")},
- FOR("frame", "$object.frames|frameIterator",
- TAG(FirebugReps.StackFrame.tag, {object: "$frame"})
- )
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "stackTrace",
-
- supportsObject: function(object, type)
- {
- return object instanceof StackFrame.StackTrace;
- },
-
- frameIterator: function(frames)
- {
- // Skip Firebug internal frames.
- // xxxHonza: this is another place where we peel off stack frames.
- var result = [];
- for (var i=0; frames && i<frames.length; i++)
- {
- var frame = frames[i];
- var sf = frame.sourceFile;
- if ((sf && sf.href && Str.hasPrefix(sf.href, "chrome")) ||
- (frame.fn === "_firebugRerun") ||
- (frame.fn === "jsdbug_NoScriptFunctionName") ||
- (frame.fn === "(debugger)"))
- {
- continue;
- }
-
- result.push(frames[i]);
- }
- return result;
- }
-});
-
-// ********************************************************************************************* //
-
-// xxxsz: Is this code still in use?
-FirebugReps.Assert = domplate(Firebug.Rep,
-{
- tag:
- DIV(
- DIV({"class": "errorTitle"}),
- DIV({"class": "assertDescription"})
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "assert",
-
- inspectObject: function(error, context)
- {
- var sourceLink = this.getSourceLink(error);
- Firebug.chrome.select(sourceLink);
- },
-
- getContextMenuItems: function(error, target, context)
- {
- var breakOnThisError = this.hasErrorBreak(error);
-
- return [
- {
- label: "CopyError",
- tooltiptext: "console.tip.Copy_Error",
- command: Obj.bindFixed(this.copyError, this, error)
- },
- "-",
- {
- label: "BreakOnThisError",
- tooltiptext: "console.menu.tip.Break_On_This_Error",
- type: "checkbox",
- checked: breakOnThisError,
- command: Obj.bindFixed(this.breakOnThisError, this, error, context)
- },
- Menu.optionMenu("BreakOnAllErrors", "breakOnErrors",
- "console.menu.tip.Break_On_All_Errors")
- ];
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.SourceText = domplate(Firebug.Rep,
-{
- tag:
- DIV(
- FOR("line", "$object|lineIterator",
- DIV({"class": "sourceRow", role : "presentation"},
- SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"),
- SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text")
- )
- )
- ),
-
- lineIterator: function(sourceText)
- {
- var maxLineNoChars = (sourceText.lines.length + "").length;
- var list = [];
-
- for (var i = 0; i < sourceText.lines.length; ++i)
- {
- // Make sure all line numbers are the same width (with a fixed-width font)
- var lineNo = (i+1) + "";
- while (lineNo.length < maxLineNoChars)
- lineNo = " " + lineNo;
-
- list.push({lineNo: lineNo, text: sourceText.lines[i]});
- }
-
- return list;
- },
-
- getHTML: function(sourceText)
- {
- return getSourceLineRange(sourceText, 1, sourceText.lines.length);
- }
-});
-
-//********************************************************************************************** //
-
-FirebugReps.nsIDOMHistory = domplate(Firebug.Rep,
-{
- tag:
- OBJECTBOX({onclick: "$showHistory", _repObject: "$object"},
- OBJECTLINK("$object|summarizeHistory")
- ),
-
- className: "nsIDOMHistory",
-
- summarizeHistory: function(history)
- {
- try
- {
- var items = history.length;
- return Locale.$STRP("firebug.reps.historyEntries", [items]);
- }
- catch (exc)
- {
- return "object does not support history (nsIDOMHistory)";
- }
- },
-
- showHistory: function(event)
- {
- try
- {
- var history = event.currentTarget.repObject;
- history.length; // if this throws, then unsupported
- Firebug.chrome.select(history);
- }
- catch (exc)
- {
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- supportsObject: function(object, type)
- {
- return (object instanceof Ci.nsIDOMHistory);
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.ApplicationCache = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK("$object|summarizeCache"),
-
- summarizeCache: function(applicationCache)
- {
- try
- {
- return applicationCache.mozItems.length + " items in offline cache";
- }
- catch(exc)
- {
- return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264";
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "applicationCache",
-
- supportsObject: function(object, type)
- {
- if (Ci.nsIDOMOfflineResourceList)
- return (object instanceof Ci.nsIDOMOfflineResourceList);
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Storage = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK(
- SPAN({"class": "storageTitle"}, "$object|summarize "),
- FOR("prop", "$object|longPropIterator",
- "$prop.name",
- SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
- TAG("$prop.tag", {object: "$prop.object"}),
- SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
- )
- ),
-
- shortTag:
- OBJECTLINK(
- SPAN({"class": "storageTitle"}, "$object|summarize "),
- FOR("prop", "$object|shortPropIterator",
- "$prop.name",
- SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
- TAG("$prop.tag", {object: "$prop.object"}),
- SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
- )
- ),
-
- summarize: function(storage)
- {
- var object = this.objectView(storage);
- return Locale.$STRP("firebug.storage.totalItems", [Object.keys(object).length]);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "Storage",
-
- supportsObject: function(object, type)
- {
- return (object instanceof window.Storage);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Iterator
-
- longPropIterator: function(object)
- {
- return this.propIterator(object, 100);
- },
-
- shortPropIterator: function(object)
- {
- return this.propIterator(object, Options.get("ObjectShortIteratorMax"));
- },
-
- propIterator: function(storage, max)
- {
- var object = this.objectView(storage);
- return FirebugReps.Obj.propIterator(object, max);
- },
-
- objectView: function(storage)
- {
- var object = this.makeObject(storage);
- for (var any in object)
- return object;
-
- // We might have hit upon an https site (bug 709238).
- // As a hack, we'll check if the current context's window
- // contains the object as localStorage or sessionStorage.
- try {
- var context = Firebug.currentContext;
- var win = context && context.window;
- if (win && win.location.protocol === "https:")
- {
- var names = ["localStorage", "sessionStorage"], done = false;
- for (var i = 0; i < 2; ++i)
- {
- if (win[names[i]] !== storage)
- continue;
- Firebug.CommandLine.evaluate(
- "((" + this.makeObject + ")(" + names[i] + "))",
- context,
- null, null,
- function(result) {
- object = result;
- done = true;
- },
- function() {},
- true
- );
- if (done)
- break;
- }
- }
- }
- catch(e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("reps.Storage.objectView; EXCEPTION " + e, e);
- }
-
- return object;
- },
-
- makeObject: function(storage)
- {
- // Create a raw object, free from getItem etc., from a storage.
- // May be serialized and run in page scope.
- var object = {};
- try
- {
- for (var name in storage)
- {
- var value = storage.getItem(name);
- Object.defineProperty(object, name, {value: value, enumerable: true});
- }
- }
- catch(e)
- {
- // We can't log an error in page scope.
- }
- return object;
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.XPathResult = domplate(FirebugReps.Arr,
-{
- className: "array xPathResult",
- toggles: new ToggleBranch.ToggleBranch(),
-
- tag:
- SPAN(FirebugReps.Arr.tag),
-
- shortTag:
- SPAN(FirebugReps.Arr.shortTag),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- hasSpecialProperties: function(array)
- {
- // xxxHonza: fix for test console/api/log-xpathresult
- // FirebugReps.Arr.hasSpecialProperties iterates object properties
- // (using Object.getOwnPropertyNames), but misses 'constructor' if the property
- // is not explicitely accessed before. Any explanation for such behavior?
- // (btw. it was actually accessed, but order of 'supportsObject' calls changed when
- // 'Exception' rep moved into its own module, see issue: 6606)
- var ctor = array && array.constructor;
- return FirebugReps.Arr.hasSpecialProperties.apply(this, arguments);
- },
-
- supportsObject: function(xpathresult, type)
- {
- return (xpathresult instanceof window.XPathResult);
- },
-
- arrayIterator: function(xpathresult, max)
- {
- var items = [];
- for (var i=0; i<xpathresult.snapshotLength && i<=max; i++)
- {
- var value = xpathresult.snapshotItem(i);
- var rep = Firebug.getRep(value);
- var tag = rep.shortTag || rep.tag;
- var delim = (i == xpathresult.snapshotLength-1 ? "" : ", ");
-
- items.push({object: value, tag: tag, delim: delim});
- }
-
- if (xpathresult.snapshotLength > max + 1)
- {
- items[max] = {
- object: (xpathresult.snapshotLength-max) + " " +
- Locale.$STR("firebug.reps.more") + "...",
- tag: FirebugReps.Caption.tag,
- delim: ""
- };
- }
-
- return items;
- },
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Description = domplate(Firebug.Rep,
-{
- className: "Description",
-
- // Use SPAN to make sure the description is nicely inserted into existing text inline.
- tag:
- SPAN({"class": "descriptionBox", onclick: "$onClickLink"}),
-
- render: function(text, parentNode, listener)
- {
- var params = {};
- params.onClickLink = function(event)
- {
- // Only clicks on links are passed to the original listener.
- var localName = event.target.localName;
- if (listener && localName && localName.toLowerCase() == "a")
- listener(event);
- };
-
- var rootNode = this.tag.replace(params, parentNode, this);
-
- var parser = Xpcom.CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
- var doc = parser.parseFromString("<div>" + text + "</div>", "text/xml");
- var root = doc.documentElement;
-
- // Error handling
- var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
- if (root.namespaceURI == nsURI && root.nodeName == "parsererror")
- {
- FBTrace.sysout("reps.Description; parse ERROR " + root.firstChild.nodeValue, root);
-
- return FirebugReps.Warning.tag.replace({object: "css.EmptyElementCSS"},
- parentNode, FirebugReps.Warning);
- }
-
- // Nodes from external documents need to be imported.
- root = rootNode.ownerDocument.importNode(root, true);
-
- rootNode.appendChild(root);
- return rootNode;
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Attr = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK(
- SPAN(
- SPAN({"class": "attrTitle"}, "$object|getTitle"),
- SPAN({"class": "attrEqual"}, "="),
- TAG("$object|getValueTag", {object: "$object.value"})
- )
- ),
-
- getTitle: function(attr)
- {
- return attr.name;
- },
-
- getValueTag: function(object)
- {
- return Firebug.getRep(object.value).tag;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "Attr",
-
- supportsObject: function(object, type)
- {
- return (object instanceof window.Attr);
- },
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.Date = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK(
- SPAN({"class": "objectTitle"}, "$object|getTitle "),
- SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"),
- SPAN({"class": "attrEqual"}, "$object|getValue"),
- SPAN({"class": "objectRightBrace"}, "}")
- ),
-
- getValue: function(object)
- {
- return object.toString();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "Date",
-
- supportsObject: function(object, type)
- {
- return object && object.constructor && object.constructor.name == "Date";
- },
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.NamedNodeMap = domplate(Firebug.Rep,
-{
- tag:
- OBJECTLINK(
- SPAN({"class": "arrayLeftBracket", role: "presentation"}, "["),
- FOR("prop", "$object|longPropIterator",
- SPAN({"class": "nodeName"}, "$prop.name"),
- SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
- TAG("$prop.tag", {object: "$prop.object"}),
- SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
- ),
- SPAN({"class": "arrayRightBracket", role: "presentation"}, "]")
- ),
-
- shortTag:
- OBJECTLINK(
- SPAN({"class": "arrayLeftBracket", role: "presentation"}, "["),
- FOR("prop", "$object|shortPropIterator",
- SPAN({"class": "nodeName"}, "$prop.name"),
- SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
- TAG("$prop.tag", {object: "$prop.object"}),
- SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
- ),
- SPAN({"class": "arrayRightBracket", role: "presentation"}, "]")
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "NamedNodeMap",
-
- supportsObject: function(object, type)
- {
- // NamedNodeMap is no more since Fx 22 - see https://bugzilla.mozilla.org/show_bug.cgi?id=847195.
- // The temporary Attr-only replacement is MozNamedAttrMap.
- return (object instanceof (window.NamedNodeMap || window.MozNamedAttrMap));
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Iterator
-
- longPropIterator: function(object)
- {
- return this.propIterator(object, 100);
- },
-
- shortPropIterator: function(object)
- {
- return this.propIterator(object, Options.get("ObjectShortIteratorMax"));
- },
-
- propIterator: function (object, max)
- {
- max = max || 3;
- if (!object)
- return [];
-
- var props = [];
- for (var i=0; i<object.length && i<max; i++)
- {
- var item = object.item(i);
- var name = item.name;
- var value = item.value;
-
- var rep = Firebug.getRep(value);
- var tag = rep.tag;
-
- props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "});
- }
-
- if (object.length > max)
- {
- var index = max - 1, more = object.length - max + 1;
- if (index < 1)
- {
- index = 1;
- more++;
- }
- props[index] = {
- object: more + " " + Locale.$STR("firebug.reps.more") + "...",
- tag: FirebugReps.Caption.tag,
- name: "",
- equal: "",
- delim: ""
- };
- }
- else if (props.length > 0)
- {
- props[props.length-1].delim = '';
- }
-
- return props;
- },
-});
-
-//********************************************************************************************** //
-
-FirebugReps.ClosureScope = domplate(Firebug.Rep,
-{
- tag: OBJECTBOX({_repObject: "$object"}, "$object|getTitle"),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "scope",
-
- getTitle: function(object)
- {
- var scope = ClosureInspector.getScopeFromWrapper(object);
- var type = scope.type, title;
- if (type === "declarative")
- title = Locale.$STR("firebug.reps.declarativeScope");
- else if (type === "object")
- title = Locale.$STR("firebug.reps.objectScope");
- else if (type === "with")
- title = Locale.$STR("firebug.reps.withScope");
- else
- title = "<unknown scope \"" + type + "\">"; // shouldn't happen
- return title;
- },
-
- supportsObject: function(object, type)
- {
- return ClosureInspector.isScopeWrapper(object);
- }
-});
-
-// ********************************************************************************************* //
-
-FirebugReps.OptimizedAway = domplate(Firebug.Rep,
-{
- tag: OBJECTBOX({_repObject: "$object"}, "$object|getTitle"),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "optimizedAway",
-
- getTitle: function(object)
- {
- return Locale.$STR("firebug.reps.optimizedAway");
- },
-
- supportsObject: function(object, type)
- {
- return ClosureInspector.isOptimizedAway(object);
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerRep(
- FirebugReps.Undefined,
- FirebugReps.Null,
- FirebugReps.Number,
- FirebugReps.SpecialWhitespaceString,
- FirebugReps.String,
- FirebugReps.nsIDOMHistory, // make this early to avoid exceptions
- FirebugReps.ApplicationCache, // this also
- FirebugReps.RegExp,
- FirebugReps.Window,
- FirebugReps.Element,
- FirebugReps.TextNode,
- FirebugReps.Document,
- FirebugReps.StyleSheet,
- FirebugReps.CSSRule,
- FirebugReps.Event,
- FirebugReps.SourceLink,
- FirebugReps.CompilationUnit,
- FirebugReps.StackTrace,
- FirebugReps.StackFrame,
- FirebugReps.NetFile,
- FirebugReps.Property,
- FirebugReps.XML,
- FirebugReps.Arr,
- FirebugReps.ArrayLikeObject,
- FirebugReps.XPathResult,
- FirebugReps.Storage,
- FirebugReps.Attr,
- FirebugReps.Date,
- FirebugReps.NamedNodeMap,
- FirebugReps.Reference,
- FirebugReps.ClosureScope,
- FirebugReps.OptimizedAway
-);
-
-Firebug.setDefaultReps(FirebugReps.Func, FirebugReps.Obj);
-
-return Firebug.Reps = FirebugReps;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/lib/array",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/chrome/firefox",
+ "firebug/lib/xpcom",
+ "firebug/lib/locale",
+ "firebug/html/htmlLib",
+ "firebug/lib/events",
+ "firebug/lib/wrapper",
+ "firebug/lib/options",
+ "firebug/lib/url",
+ "firebug/js/sourceLink",
+ "firebug/js/stackFrame",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/chrome/window",
+ "firebug/lib/system",
+ "firebug/lib/xpath",
+ "firebug/lib/string",
+ "firebug/lib/xml",
+ "firebug/dom/toggleBranch",
+ "firebug/console/closureInspector",
+ "firebug/chrome/menu",
+ "arch/compilationunit",
+ "firebug/net/netUtils",
+ "firebug/chrome/panelActivation",
+],
+function(Obj, Arr, Firebug, Domplate, Firefox, Xpcom, Locale, HTMLLib, Events, Wrapper, Options,
+ Url, SourceLink, StackFrame, Css, Dom, Win, System, Xpath, Str, Xml, ToggleBranch,
+ ClosureInspector, Menu, CompilationUnit, NetUtils, PanelActivation) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// xxxHonza: the only global should be Firebug object.
+var FirebugReps = window.FirebugReps = {};
+
+try
+{
+ // xxxHonza: RJS
+ var FBS = {};
+ Components.utils["import"]("resource://firebug/firebug-service.js", FBS);
+ var jsd = Cc["@mozilla.org/js/jsd/debugger-service;1"].getService(Ci.jsdIDebuggerService);
+}
+catch (err)
+{
+}
+
+// ********************************************************************************************* //
+// Common Tags
+
+var OBJECTBOX = FirebugReps.OBJECTBOX =
+ SPAN({"class": "objectBox objectBox-$className", role: "presentation"});
+
+var PREOBJECTBOX =
+ PRE({"class": "objectBox inline objectBox-$className", role: "presentation"});
+
+var OBJECTBLOCK = FirebugReps.OBJECTBLOCK =
+ DIV({"class": "objectBox objectBox-$className focusRow subLogRow", role: "listitem"});
+
+var OBJECTLINK = FirebugReps.OBJECTLINK =
+ A({
+ "class": "objectLink objectLink-$className a11yFocus",
+ _repObject: "$object"
+ });
+
+// ********************************************************************************************* //
+
+FirebugReps.Undefined = domplate(Firebug.Rep,
+{
+ tag: OBJECTBOX("undefined"),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "undefined",
+
+ supportsObject: function(object, type)
+ {
+ return type == "undefined";
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Null = domplate(Firebug.Rep,
+{
+ tag: OBJECTBOX("null"),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "null",
+
+ supportsObject: function(object, type)
+ {
+ return object == null;
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Hint = domplate(Firebug.Rep,
+{
+ tag: OBJECTBOX("$object"),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "hint",
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Nada = domplate(Firebug.Rep,
+{
+ tag: SPAN(""),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "nada"
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Number = domplate(Firebug.Rep,
+{
+ tag: OBJECTBOX({"_repObject": "$object"}, "$object"),
+ tinyTag: OBJECTBOX("$object"),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "number",
+
+ supportsObject: function(object, type)
+ {
+ return type == "boolean" || type == "number";
+ }
+});
+
+// ********************************************************************************************* //
+
+// To support copying strings with multiple spaces, tabs, newlines etc. correctly
+// we are unfortunately required by Firefox to use a <pre> tag (bug 116083).
+// Don't do that with all OBJECTBOX's though - it inserts newlines *everywhere*.
+// (See issues 3816, 6130.)
+// XXX: This would look much nicer with support for IF in domplate.
+var reSpecialWhitespace = / |[\t\n]/;
+FirebugReps.SpecialWhitespaceString = domplate(Firebug.Rep,
+{
+ tag: PREOBJECTBOX({"_repObject": "$object"}, ""$object""),
+
+ shortTag: OBJECTBOX({"_repObject": "$object"}, ""$object|cropMultipleLines""),
+ tinyTag: OBJECTBOX(""$object|cropMultipleLines""),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "string",
+
+ supportsObject: function(object, type)
+ {
+ return (type == "string" && reSpecialWhitespace.test(object));
+ }
+});
+
+FirebugReps.String = domplate(Firebug.Rep,
+{
+ tag: OBJECTBOX({"_repObject": "$object"}, ""$object""),
+
+ shortTag: OBJECTBOX({"_repObject": "$object"}, ""$object|cropMultipleLines""),
+ tinyTag: OBJECTBOX(""$object|cropMultipleLines""),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "string",
+
+ supportsObject: function(object, type)
+ {
+ return type == "string";
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.XML = domplate(Firebug.Rep,
+{
+ tag: OBJECTBOX("$object|asString"),
+
+ shortTag: OBJECTBOX("$object|asShortString"),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "xml",
+
+ supportsObject: function(object, type)
+ {
+ return type == "xml";
+ },
+
+ asString: function(object)
+ {
+ return object.toXMLString();
+ },
+
+ asShortString: function(object)
+ {
+ return cropMultipleLines(this.asString(object));
+ },
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Text = domplate(Firebug.Rep,
+{
+ tag: OBJECTBOX("$object"),
+
+ // Refer to SpecialWhitespaceString above.
+ specialWhitespaceTag: PREOBJECTBOX("$object"),
+
+ shortTag: OBJECTBOX("$object|cropMultipleLines"),
+
+ getWhitespaceCorrectedTag: function(str)
+ {
+ return reSpecialWhitespace.test(str) ? this.specialWhitespaceTag : this.tag;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "text"
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Caption = domplate(Firebug.Rep,
+{
+ tag: SPAN({"class": "caption"}, "$object")
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Warning = domplate(Firebug.Rep,
+{
+ tag: DIV({"class": "warning focusRow", role: "listitem"}, "$object|STR")
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Func = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK("$object|summarizeFunction"),
+
+ summarizeFunction: function(fn)
+ {
+ var fnText = Str.safeToString(fn);
+ var namedFn = /^function ([^(]+\([^)]*\))/.exec(fnText);
+ var anonFn = /^function \(/.test(fnText);
+ var displayName = fn.displayName;
+
+ return namedFn ? namedFn[1] : (displayName ? displayName + "()" :
+ (anonFn ? "function()" : fnText));
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ copySource: function(fn)
+ {
+ if (fn && typeof (fn['toSource']) == 'function')
+ System.copyToClipboard(fn.toSource());
+ },
+
+ monitor: function(fn, monitored)
+ {
+ if (monitored)
+ Firebug.Debugger.unmonitorFunction(fn, "monitor");
+ else
+ Firebug.Debugger.monitorFunction(fn, "monitor");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "function",
+
+ supportsObject: function(object, type)
+ {
+ return type == "function";
+ },
+
+ inspectObject: function(fn, context)
+ {
+ var sourceLink = Firebug.SourceFile.findSourceForFunction(fn, context);
+ if (sourceLink)
+ Firebug.chrome.select(sourceLink);
+
+ if (FBTrace.DBG_FUNCTION_NAMES)
+ FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink);
+ },
+
+ getTooltip: function(fn, context)
+ {
+ var script = Firebug.SourceFile.findScriptForFunctionInContext(context, fn);
+ if (script)
+ {
+ return Locale.$STRF("Line", [Url.normalizeURL(script.fileName),
+ script.baseLineNumber]);
+ }
+ else
+ {
+ if (fn.toString)
+ return fn.toString();
+ }
+ },
+
+ getTitle: function(fn, context)
+ {
+ var name = fn.name ? fn.name : "function";
+ return name + "()";
+ },
+
+ getContextMenuItems: function(fn, target, context, script)
+ {
+ if (!script)
+ script = Firebug.SourceFile.findScriptForFunctionInContext(context, fn);
+ if (!script)
+ return;
+
+ var scriptInfo = Firebug.SourceFile.getSourceFileAndLineByScript(context, script);
+ var monitored = scriptInfo ? FBS.fbs.isMonitored(scriptInfo.sourceFile.href,
+ scriptInfo.lineNo) : false;
+
+ var self = this;
+ var name = script ? StackFrame.getFunctionName(script, context) : fn.name;
+ return [
+ {
+ label: Locale.$STRF("ShowCallsInConsole", [name]),
+ tooltiptext: Locale.$STRF("dom.tip.Log_Calls_To_Function", [name]),
+ nol10n: true,
+ type: "checkbox",
+ checked: monitored,
+ command: function()
+ {
+ var checked = this.hasAttribute("checked");
+ self.monitor(fn, !checked);
+ }
+ },
+ "-",
+ {
+ label: "CopySource",
+ tooltiptext: "dom.tip.Copy_Source",
+ command: Obj.bindFixed(this.copySource, this, fn)
+ }
+ ];
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Obj = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK(
+ SPAN({"class": "objectTitle"}, "$object|getTitle "),
+ SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"),
+ FOR("prop", "$object|shortPropIterator",
+ " $prop.name",
+ SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
+ TAG("$prop.tag", {object: "$prop.object"}),
+ SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
+ ),
+ SPAN({"class": "objectRightBrace"}, "}")
+ ),
+
+ shortTag:
+ OBJECTLINK(
+ SPAN({"class": "objectTitle"}, "$object|getTitle "),
+ SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"),
+ FOR("prop", "$object|shortPropIterator",
+ " $prop.name",
+ SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
+ TAG("$prop.tag", {object: "$prop.object"}),
+ SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
+ ),
+ SPAN({"class": "objectRightBrace"}, "}")
+ ),
+
+ titleTag:
+ SPAN({"class": "objectTitle"}, "$object|getTitleTag"),
+
+ getTitleTag: function(object)
+ {
+ var title;
+ if (typeof(object) == "string")
+ title = object;
+ else
+ title = this.getTitle(object);
+
+ if (title == "Object")
+ title = "{...}";
+
+ return title;
+ },
+
+ longPropIterator: function (object)
+ {
+ return this.propIterator(object, 100);
+ },
+
+ shortPropIterator: function (object)
+ {
+ return this.propIterator(object, Options.get("ObjectShortIteratorMax"));
+ },
+
+ propIterator: function (object, max)
+ {
+ function isInterestingProp(t, value)
+ {
+ return (t == "boolean" || t == "number" || (t == "string" && value) ||
+ (t == "object" && value && value.toString));
+ };
+
+ // Object members with non-empty values are preferred since it gives the
+ // user a better overview of the object.
+ var props = [];
+ this.getProps(props, object, max, isInterestingProp);
+
+ if (props.length <= max)
+ {
+ // There is not enough props yet (or at least, not enough props to
+ // be able to know whether we should print "more..." or not).
+ // Let's display also empty members and functions.
+ this.getProps(props, object, max, function(t, value)
+ {
+ return !isInterestingProp(t, value);
+ });
+ }
+
+ if (props.length > max)
+ {
+ props[props.length-1] = {
+ object: Locale.$STR("firebug.reps.more") + "...",
+ tag: FirebugReps.Caption.tag,
+ name: "",
+ equal: "",
+ delim: ""
+ };
+ }
+ else if (props.length > 0)
+ {
+ props[props.length-1].delim = '';
+ }
+
+ return props;
+ },
+
+ getProps: function (props, object, max, filter)
+ {
+ max = max || 3;
+ if (!object)
+ return [];
+
+ var len = 0;
+
+ try
+ {
+ for (var name in object)
+ {
+ var value;
+ try
+ {
+ value = object[name];
+ }
+ catch (exc)
+ {
+ continue;
+ }
+
+ var t = typeof(value);
+ if (filter(t, value))
+ {
+ var rep = Firebug.getRep(value);
+ var tag = rep.tinyTag || rep.shortTag || rep.tag;
+ if ((t == "object" || t == "function") && value)
+ {
+ value = rep.getTitle(value);
+ if (rep.titleTag)
+ tag = rep.titleTag;
+ else
+ tag = FirebugReps.Obj.titleTag;
+ }
+
+ if (props.length <= max)
+ props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "});
+ else
+ break;
+ }
+ }
+ }
+ catch (exc)
+ {
+ // Sometimes we get exceptions when trying to read from certain objects, like
+ // StorageList, but don't let that gum up the works
+ // XXXjjb also History.previous fails because object is a web-page object
+ // which does not have permission to read the history
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "object",
+
+ supportsObject: function(object, type)
+ {
+ return true;
+ }
+});
+
+// ********************************************************************************************* //
+// Reference
+
+/**
+ * A placeholder used instead of cycle reference within arrays.
+ * @param {Object} target The original referenced object
+ */
+FirebugReps.ReferenceObj = function(target)
+{
+ this.target = target;
+};
+
+/**
+ * Rep for cycle reference in an array.
+ */
+FirebugReps.Reference = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK({_repObject: "$object"},
+ SPAN({title: "$object|getTooltip"},
+ "[...]")
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "Reference",
+
+ supportsObject: function(object, type)
+ {
+ return (object instanceof FirebugReps.ReferenceObj);
+ },
+
+ getTooltip: function(object)
+ {
+ return Locale.$STR("firebug.reps.reference");
+ },
+
+ getRealObject: function(object)
+ {
+ return object.target;
+ },
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.ArrBase = domplate(FirebugReps.Obj,
+{
+ className: "array",
+ toggles: new ToggleBranch.ToggleBranch(),
+
+ titleTag:
+ SPAN({"class": "objectTitle"}, "$object|getTitleTag"),
+
+ getTitle: function(object, context)
+ {
+ return "[" + object.length + "]";
+ },
+
+ supportsObject: function(object, type)
+ {
+ return this.isArray(object);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ longArrayIterator: function(array)
+ {
+ return this.arrayIterator(array, 300);
+ },
+
+ shortArrayIterator: function(array)
+ {
+ return this.arrayIterator(array, Options.get("ObjectShortIteratorMax"));
+ },
+
+ arrayIterator: function(array, max)
+ {
+ var items = [];
+ for (var i = 0; i < array.length && i <= max; ++i)
+ {
+ try
+ {
+ var delim = (i == array.length-1 ? "" : ", ");
+ var value = array[i];
+
+ // Cycle detected
+ if (value === array)
+ value = new FirebugReps.ReferenceObj(value);
+
+ var rep = Firebug.getRep(value);
+ var tag = rep.shortTag || rep.tag;
+ items.push({object: value, tag: tag, delim: delim});
+ }
+ catch (exc)
+ {
+ var rep = Firebug.getRep(exc);
+ var tag = rep.shortTag || rep.tag;
+
+ items.push({object: exc, tag: tag, delim: delim});
+ }
+ }
+
+ if (array.length > max + 1)
+ {
+ items[max] = {
+ object: (array.length-max) + " " + Locale.$STR("firebug.reps.more") + "...",
+ tag: FirebugReps.Caption.tag,
+ delim: ""
+ };
+ }
+
+ return items;
+ },
+
+ getItemIndex: function(child)
+ {
+ var arrayIndex = 0;
+ for (child = child.previousSibling; child; child = child.previousSibling)
+ {
+ if (child.repObject)
+ ++arrayIndex;
+ }
+ return arrayIndex;
+ },
+
+ /**
+ * Returns true if the passed object is an array with additional (custom) properties,
+ * otherwise returns false. Custom properties should be displayed in extra expandable
+ * section.
+ *
+ * Example array with a custom property.
+ * var arr = [0, 1];
+ * arr.myProp = "Hello";
+ *
+ * @param {Array} array The array object.
+ */
+ hasSpecialProperties: function(array)
+ {
+ function isInteger(x)
+ {
+ var y = parseInt(x, 10);
+ if (isNaN(y))
+ return false;
+ return x === y.toString();
+ }
+
+ var n = 0;
+ var props = Object.getOwnPropertyNames(array);
+ for (var i=0; i<props.length; i++)
+ {
+ var p = props[i];
+
+ // Valid indexes are skipped
+ if (isInteger(p))
+ continue;
+
+ // Ignore standard 'length' property, anything else is custom.
+ if (p != "length")
+ return true;
+ }
+
+ return false;
+ },
+
+ onToggleProperties: function(event)
+ {
+ var target = event.originalTarget;
+ if (Css.hasClass(target, "objectBox-array"))
+ {
+ Events.cancelEvent(event);
+
+ Css.toggleClass(target, "opened");
+
+ var propBox = target.getElementsByClassName("arrayProperties").item(0);
+ if (Css.hasClass(target, "opened"))
+ {
+ Firebug.DOMPanel.DirTable.tag.replace(
+ {object: target.repObject, toggles: this.toggles}, propBox);
+ }
+ else
+ {
+ Dom.clearNode(propBox);
+ }
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ highlightObject: function(object, context, target)
+ {
+ // Highlighting huge amount of elements on the page can cause serious performance
+ // problems (see issue 4736). So, avoid highlighting if the number of elements in
+ // the array exceeds specified limit.
+ var arr = this.getRealObject(object, context);
+ var limit = Options.get("multiHighlightLimit");
+ if (!arr || (limit > 0 && arr.length > limit))
+ {
+ if (Css.hasClass(target, "arrayLeftBracket") ||
+ Css.hasClass(target, "arrayRightBracket"))
+ {
+ var tooltip = Locale.$STRF("console.multiHighlightLimitExceeded", [limit]);
+ target.setAttribute("title", tooltip);
+ }
+
+ // Do not highlight, a tooltip will be displayed instead.
+ return;
+ }
+
+ target.removeAttribute("title");
+
+ // Highlight multiple elements on the page.
+ Firebug.Inspector.highlightObject(arr, context);
+ },
+
+ isArray: function(obj)
+ {
+ return false;
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Arr = domplate(FirebugReps.ArrBase,
+{
+ tag:
+ OBJECTBOX({_repObject: "$object",
+ $hasTwisty: "$object|hasSpecialProperties",
+ onclick: "$onToggleProperties"},
+ SPAN({"class": "arrayLeftBracket", role: "presentation"}, "["),
+ FOR("item", "$object|longArrayIterator",
+ TAG("$item.tag", {object: "$item.object"}),
+ SPAN({"class": "arrayComma", role: "presentation"}, "$item.delim")
+ ),
+ SPAN({"class": "arrayRightBracket", role: "presentation"}, "]"),
+ SPAN({"class": "arrayProperties", role: "group"})
+ ),
+
+ shortTag:
+ OBJECTBOX({_repObject: "$object",
+ $hasTwisty: "$object|hasSpecialProperties",
+ onclick: "$onToggleProperties"},
+ SPAN({"class": "arrayLeftBracket", role: "presentation"}, "["),
+ FOR("item", "$object|shortArrayIterator",
+ TAG("$item.tag", {object: "$item.object"}),
+ SPAN({"class": "arrayComma", role: "presentation"}, "$item.delim")
+ ),
+ SPAN({"class": "arrayRightBracket"}, "]"),
+ SPAN({"class": "arrayProperties", role: "group"})
+ ),
+
+ // http://code.google.com/p/fbug/issues/detail?id=874
+ isArray: function(obj)
+ {
+ try
+ {
+ if (Arr.isArray(obj))
+ return true;
+ else if (isFinite(obj.length) && typeof obj.callee === "function") // arguments
+ return true;
+ }
+ catch (exc) {}
+ return false;
+ }
+});
+
+// ********************************************************************************************* //
+
+/**
+ * Any arrayish object that is not directly Array type (e.g. HTMLCollection, NodeList, etc.)
+ */
+FirebugReps.ArrayLikeObject = domplate(FirebugReps.ArrBase,
+{
+ tag:
+ OBJECTBOX({_repObject: "$object",
+ $hasTwisty: "$object|hasSpecialProperties",
+ onclick: "$onToggleProperties"},
+ A({"class": "objectTitle objectLink", onclick: "$onClickTitle"},
+ "$object|getTitle"
+ ),
+ SPAN({"class": "arrayLeftBracket", role: "presentation"}, "["),
+ FOR("item", "$object|longArrayIterator",
+ TAG("$item.tag", {object: "$item.object"}),
+ SPAN({"class": "arrayComma", role: "presentation"}, "$item.delim")
+ ),
+ SPAN({"class": "arrayRightBracket", role: "presentation"}, "]"),
+ SPAN({"class": "arrayProperties", role: "group"})
+ ),
+
+ shortTag:
+ OBJECTBOX({_repObject: "$object",
+ $hasTwisty: "$object|hasSpecialProperties",
+ onclick: "$onToggleProperties"},
+ A({"class": "objectTitle objectLink", onclick: "$onClickTitle"},
+ "$object|getTitle"
+ ),
+ SPAN({"class": "arrayLeftBracket", role: "presentation"}, "["),
+ FOR("item", "$object|shortArrayIterator",
+ TAG("$item.tag", {object: "$item.object"}),
+ SPAN({"class": "arrayComma", role: "presentation"}, "$item.delim")
+ ),
+ SPAN({"class": "arrayRightBracket"}, "]"),
+ SPAN({"class": "arrayProperties", role: "group"})
+ ),
+
+ onClickTitle: function(event)
+ {
+ var obj = Firebug.getRepObject(event.target);
+ Firebug.chrome.select(obj);
+ },
+
+ getTitle: function(obj, context)
+ {
+ const re = /\[object ([^\]]*)/;
+ var label = Object.prototype.toString.call(obj);
+ var m = re.exec(label);
+ return (m ? m[1] : label);
+ },
+
+ isArray: function(obj)
+ {
+ return Arr.isArrayLike(obj);
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Property = domplate(Firebug.Rep,
+{
+ supportsObject: function(object, type)
+ {
+ return object instanceof FirebugReps.PropertyObj;
+ },
+
+ getRealObject: function(prop, context)
+ {
+ return prop.object[prop.name];
+ },
+
+ getTitle: function(prop, context)
+ {
+ return prop.name;
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.PropertyObj = function(object, name)
+{
+ this.object = object;
+ this.name = name;
+
+ this.getObject = function()
+ {
+ return object[name];
+ };
+};
+
+// ********************************************************************************************* //
+
+FirebugReps.NetFile = domplate(FirebugReps.Obj,
+{
+ supportsObject: function(object, type)
+ {
+ if (typeof(Firebug.NetFile) == "undefined")
+ return false;
+
+ return object instanceof Firebug.NetFile;
+ },
+
+ browseObject: function(file, context)
+ {
+ Win.openNewTab(file.href);
+ return true;
+ },
+
+ getRealObject: function(file, context)
+ {
+ return NetUtils.getRealObject(file, context);
+ }
+});
+
+// ********************************************************************************************* //
+
+function instanceOf(object, Klass)
+{
+ while (object != null)
+ {
+ if (object == Klass.prototype)
+ return true;
+
+ if (typeof(object) === "xml")
+ return (Klass.prototype === Xml.prototype);
+
+ object = object.__proto__;
+ }
+
+ return false;
+}
+
+// ********************************************************************************************* //
+
+FirebugReps.Element = domplate(Firebug.Rep,
+{
+ className: "element",
+
+ tag:
+ OBJECTLINK(
+ "<",
+ SPAN({"class": "nodeTag"}, "$object|getLocalName"),
+ FOR("attr", "$object|attrIterator",
+ " $attr.localName="",
+ SPAN({"class": "nodeValue"}, "$attr|getAttrValue"),
+ """
+ ),
+ ">"
+ ),
+
+ shortTag:
+ OBJECTLINK(
+ SPAN({"class": "$object|getVisible"},
+ SPAN({"class": "selectorTag"}, "$object|getSelectorTag"),
+ SPAN({"class": "selectorId"}, "$object|getSelectorId"),
+ SPAN({"class": "selectorClass"}, "$object|getSelectorClass"),
+ TAG("$object|getValueTag", {object: "$object"})
+ )
+ ),
+
+ // Generic template for various element values
+ valueTag:
+ SPAN({"class": "selectorValue"}, "$object|getValue"),
+
+ // Template for <input> element with a single value coming from attribute.
+ singleInputTag:
+ SPAN(
+ SPAN(" "),
+ SPAN({"class": "selectorValue"},
+ Locale.$STR("firebug.reps.element.attribute_value") + " = "
+ ),
+ SPAN({"class": "attributeValue inputValue"},
+ TAG(FirebugReps.String.tag, {object: "$object|getValueFromAttribute"})
+ )
+ ),
+
+ // Template for <input> element with two different values (attribute and property)
+ multipleInputTag:
+ SPAN(
+ SPAN(" "),
+ SPAN({"class": "selectorValue"},
+ Locale.$STR("firebug.reps.element.property_value") + " = "
+ ),
+ SPAN({"class": "propertyValue inputValue"},
+ TAG(FirebugReps.String.tag, {object: "$object|getValueFromProperty"})
+ ),
+ SPAN(" "),
+ SPAN({"class": "selectorValue"},
+ Locale.$STR("firebug.reps.element.attribute_value") + " = "
+ ),
+ SPAN({"class": "attributeValue inputValue"},
+ TAG(FirebugReps.String.tag, {object: "$object|getValueFromAttribute"})
+ )
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getValueTag: function(elt)
+ {
+ // Use proprietary template for <input> elements that can have two
+ // different values. One coming from attribute 'value' and one coming
+ // from property 'value'.
+ if (elt instanceof window.HTMLInputElement)
+ {
+ var attrValue = elt.getAttribute("value");
+ var propValue = elt.value;
+
+ if (attrValue != propValue)
+ return this.multipleInputTag;
+ else
+ return this.singleInputTag;
+ }
+
+ return this.valueTag;
+ },
+
+ getValueFromAttribute: function(elt)
+ {
+ var limit = Options.get("stringCropLength");
+ var value = elt.getAttribute("value");
+ return Str.cropString(value, limit);
+ },
+
+ getValueFromProperty: function(elt)
+ {
+ var limit = Options.get("stringCropLength");
+ return Str.cropString(elt.value, limit);
+ },
+
+ getValue: function(elt)
+ {
+ var value;
+
+ if (elt instanceof window.HTMLImageElement)
+ value = Url.getFileName(elt.getAttribute("src"));
+ else if (elt instanceof window.HTMLAnchorElement)
+ value = Url.getFileName(elt.getAttribute("href"));
+ else if (elt instanceof window.HTMLInputElement)
+ value = elt.getAttribute("value");
+ else if (elt instanceof window.HTMLFormElement)
+ value = Url.getFileName(elt.getAttribute("action"));
+ else if (elt instanceof window.HTMLScriptElement)
+ value = Url.getFileName(elt.getAttribute("src"));
+
+ return value ? " " + Str.cropMultipleLines(value, 20) : "";
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getLocalName: function(object)
+ {
+ try
+ {
+ return Xml.getLocalName(object);
+ }
+ catch (err)
+ {
+ return "";
+ }
+ },
+
+ getNodeName: function(object)
+ {
+ try
+ {
+ return Xml.getNodeName(object);
+ }
+ catch (err)
+ {
+ return "";
+ }
+ },
+
+ getAttrValue: function(attr)
+ {
+ var limit = Firebug.displayedAttributeValueLimit;
+ return (limit > 0) ? Str.cropString(attr.value, limit) : attr.value;
+ },
+
+ getVisible: function(elt)
+ {
+ return Xml.isVisible(elt) ? "" : "selectorHidden";
+ },
+
+ getSelectorTag: function(elt)
+ {
+ return this.getLocalName(elt);
+ },
+
+ getSelectorId: function(elt)
+ {
+ try
+ {
+ return elt.id ? ("#" + elt.id) : "";
+ }
+ catch (e)
+ {
+ return "";
+ }
+ },
+
+ getSelectorClass: function(elt)
+ {
+ try
+ {
+ return elt.classList.length > 0 ? ("." + elt.classList[0]) : "";
+ }
+ catch (err)
+ {
+ return "";
+ }
+ },
+
+ attrIterator: function(elt)
+ {
+ var attrs = [];
+ var idAttr, classAttr;
+ if (elt.attributes)
+ {
+ for (var i = 0; i < elt.attributes.length; ++i)
+ {
+ var attr = elt.attributes[i];
+ if (attr.localName.indexOf("-moz-math") != -1)
+ continue;
+ if (attr.localName.indexOf("firebug-") != -1)
+ continue;
+ else if (attr.localName == "id")
+ idAttr = attr;
+ else if (attr.localName == "class")
+ classAttr = attr;
+ else
+ attrs.push(attr);
+ }
+ }
+
+ // Make sure 'id' and 'class' attributes are displayed first.
+ if (classAttr)
+ attrs.splice(0, 0, classAttr);
+ if (idAttr)
+ attrs.splice(0, 0, idAttr);
+
+ return attrs;
+ },
+
+ shortAttrIterator: function(elt)
+ {
+ // Short version returns only 'id' and 'class' attributes.
+ var attrs = [];
+ if (elt.attributes)
+ {
+ for (var i = 0; i < elt.attributes.length; ++i)
+ {
+ var attr = elt.attributes[i];
+ if (attr.localName == "id" || attr.localName == "class")
+ attrs.push(attr);
+ }
+ }
+ return attrs;
+ },
+
+ getHidden: function(elt)
+ {
+ return Xml.isVisible(elt) ? "" : "nodeHidden";
+ },
+
+ getXPath: function(elt)
+ {
+ return Xpath.getElementTreeXPath(elt);
+ },
+
+ getNodeTextGroups: function(element)
+ {
+ var text = element.textContent;
+ if (!Firebug.showFullTextNodes)
+ {
+ text = Str.cropString(text,50);
+ }
+
+ var escapeGroups=[];
+
+ if (Firebug.showTextNodesWithWhitespace)
+ escapeGroups.push({
+ "group": "whitespace",
+ "class": "nodeWhiteSpace",
+ "extra": {
+ "\t": "_Tab",
+ "\n": "_Para",
+ " " : "_Space"
+ }
+ });
+
+ if (Firebug.entityDisplay != "symbols")
+ escapeGroups.push({
+ "group": "text",
+ "class": "nodeTextEntity",
+ "extra": {}
+ });
+
+ if (escapeGroups.length)
+ return Str.escapeGroupsForEntities(text, escapeGroups, Options.get("entityDisplay"));
+ else
+ return [{str:text, "class": "", extra: ""}];
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ copyHTML: function(elt)
+ {
+ var html = Xml.getElementHTML(elt);
+ System.copyToClipboard(html);
+ },
+
+ copyInnerHTML: function(elt)
+ {
+ System.copyToClipboard(elt.innerHTML);
+ },
+
+ copyXPath: function(elt)
+ {
+ var xpath = Xpath.getElementXPath(elt);
+ System.copyToClipboard(xpath);
+ },
+
+ copyCSSPath: function(elt)
+ {
+ var csspath = Css.getElementCSSPath(elt);
+ System.copyToClipboard(csspath);
+ },
+
+ paste: function(elt, clipboardContent, mode)
+ {
+ if (elt instanceof window.HTMLElement)
+ return this.pasteHTML.apply(this, arguments);
+ else
+ return this.pasteXML.apply(this, arguments);
+ },
+
+ pasteHTML: function(elt, clipboardContent, mode)
+ {
+ if (mode === "replaceInner")
+ elt.innerHTML = clipboardContent;
+ else if (mode === "replaceOuter")
+ elt.outerHTML = clipboardContent;
+ else
+ elt.insertAdjacentHTML(mode, clipboardContent);
+ },
+
+ pasteXML: function(elt, clipboardContent, mode)
+ {
+ var contextNode, parentNode = elt.parentNode;
+ if (["beforeBegin", "afterEnd", "replaceOuter"].indexOf(mode) >= 0)
+ contextNode = parentNode;
+ else
+ contextNode = elt;
+
+ var pastedElements = Dom.markupToDocFragment(clipboardContent, contextNode);
+ switch (mode)
+ {
+ case "beforeBegin":
+ parentNode.insertBefore(pastedElements, elt);
+ break;
+ case "afterBegin":
+ elt.insertBefore(pastedElements, elt.firstChild);
+ break;
+ case "beforeEnd":
+ elt.appendChild(pastedElements);
+ break;
+ case "afterEnd":
+ Dom.insertAfter(pastedElements, elt);
+ break;
+ case "replaceInner":
+ Dom.eraseNode(elt);
+ elt.appendChild(pastedElements);
+ break;
+ case "replaceOuter":
+ parentNode.replaceChild(pastedElements, elt);
+ break;
+ }
+ },
+
+ persistor: function(context, xpath)
+ {
+ var elts = xpath
+ ? Xpath.getElementsByXPath(context.window.document, xpath)
+ : null;
+
+ return elts && elts.length ? elts[0] : null;
+ },
+
+ reloadFrame: function(frame)
+ {
+ frame.contentDocument.location.reload();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof window.Element;
+ },
+
+ browseObject: function(elt, context)
+ {
+ var tag = elt.localName.toLowerCase();
+ if (tag == "script" || tag == "img" || tag == "iframe" || tag == "frame")
+ Win.openNewTab(elt.src);
+ else if (tag == "link" || tag == "a")
+ Win.openNewTab(elt.href);
+
+ return true;
+ },
+
+ ignoreTarget: function(target)
+ {
+ // XXX: Temporary fix for issue 5577.
+ var repNode = target && Firebug.getRepNode(target);
+ return (repNode && repNode.classList.contains("cssRule"));
+ },
+
+ highlightObject: function(object, context, target)
+ {
+ if (this.ignoreTarget(target))
+ return;
+ Firebug.Inspector.highlightObject(object, context);
+ },
+
+ persistObject: function(elt, context)
+ {
+ var xpath = Xpath.getElementXPath(elt);
+
+ return Obj.bind(this.persistor, window.top, xpath);
+ },
+
+ getTitle: function(element, context)
+ {
+ return Css.getElementCSSSelector(element);
+ },
+
+ getTooltip: function(elt, context, target)
+ {
+ // If the mouse cursor hovers over cropped value of an input element
+ // display the full value in the tooltip.
+ if (Css.hasClass(target, "objectBox-string"))
+ {
+ var inputValue = Dom.getAncestorByClass(target, "inputValue");
+ if (inputValue)
+ {
+ var limit = Options.get("stringCropLength");
+ var value;
+ if (Css.hasClass(inputValue, "attributeValue"))
+ value = elt.getAttribute("value");
+ else if (Css.hasClass(inputValue, "propertyValue"))
+ value = elt.value;
+
+ if (value && value.length > limit)
+ return value;
+ }
+ }
+
+ // Display xpath of the element.
+ var tooltip = this.getXPath(elt);
+ if (elt.namespaceURI)
+ tooltip += " (" + elt.namespaceURI + ")";
+
+ return tooltip;
+ },
+
+ getContextMenuItems: function(elt, target, context)
+ {
+ if (this.ignoreTarget(target))
+ return;
+
+ var type;
+ var items = [];
+ var clipboardContent = System.getStringDataFromClipboard();
+ var isEltRoot = (elt === elt.ownerDocument.documentElement);
+
+ if (Xml.isElementHTML(elt) || Xml.isElementXHTML(elt))
+ type = "HTML";
+ else if (Xml.isElementMathML(elt))
+ type = "MathML";
+ else if (Xml.isElementSVG(elt))
+ type = "SVG";
+ else if (Xml.isElementXUL(elt))
+ type = "XUL";
+ else
+ type = "XML";
+
+ items.push(
+ {
+ label: Locale.$STRF("html.Copy_Node", [type]),
+ tooltiptext: Locale.$STRF("html.tip.Copy_Node", [type]),
+ command: Obj.bindFixed(this.copyHTML, this, elt)
+ });
+
+ if (Xml.isElementHTML(elt) || Xml.isElementXHTML(elt))
+ {
+ items.push(
+ {
+ label: "CopyInnerHTML",
+ tooltiptext: "html.tip.Copy_innerHTML",
+ command: Obj.bindFixed(this.copyInnerHTML, this, elt)
+ });
+ }
+
+ items = items.concat([
+ {
+ label: "CopyXPath",
+ tooltiptext: "html.tip.Copy_XPath",
+ id: "fbCopyXPath",
+ command: Obj.bindFixed(this.copyXPath, this, elt)
+ },
+ {
+ label: "Copy_CSS_Path",
+ tooltiptext: "html.tip.Copy_CSS_Path",
+ id: "fbCopyCSSPath",
+ command: Obj.bindFixed(this.copyCSSPath, this, elt)
+ },
+ {
+ label: Locale.$STRF("html.menu.Paste", [type]),
+ tooltiptext: Locale.$STRF("html.tip.Paste", [type]),
+ disabled: !clipboardContent,
+ id: "fbPaste",
+ items: [
+ {
+ label: "html.menu.Paste_Replace_Content",
+ tooltiptext: "html.tip.Paste_Replace_Content",
+ id: "fbPasteReplaceInner",
+ command: Obj.bindFixed(this.paste, this, elt, clipboardContent,
+ "replaceInner")
+ },
+ {
+ label: "html.menu.Paste_Replace_Node",
+ tooltiptext: "html.tip.Paste_Replace_Node",
+ id: "fbPasteReplaceOuter",
+ disabled: isEltRoot,
+ command: Obj.bindFixed(this.paste, this, elt, clipboardContent,
+ "replaceOuter")
+ },
+ {
+ label: "html.menu.Paste_AsFirstChild",
+ tooltiptext: "html.tip.Paste_AsFirstChild",
+ id: "fbPasteFirstChild",
+ command: Obj.bindFixed(this.paste, this, elt, clipboardContent,
+ "afterBegin")
+ },
+ {
+ label: "html.menu.Paste_AsLastChild",
+ tooltiptext: "html.tip.Paste_AsLastChild",
+ id: "fbPasteLastChild",
+ command: Obj.bindFixed(this.paste, this, elt, clipboardContent, "beforeEnd")
+ },
+ {
+ label: "html.menu.Paste_Before",
+ tooltiptext: "html.tip.Paste_Before",
+ id: "fbPasteBefore",
+ disabled: isEltRoot,
+ command: Obj.bindFixed(this.paste, this, elt, clipboardContent,
+ "beforeBegin")
+ },
+ {
+ label: "html.menu.Paste_After",
+ tooltiptext: "html.tip.Paste_After",
+ id: "fbPasteAfter",
+ disabled: isEltRoot,
+ command: Obj.bindFixed(this.paste, this, elt, clipboardContent, "afterEnd")
+ }
+ ]
+ }
+ ]);
+
+ var tag = elt.localName.toLowerCase();
+ if (tag == "script" || tag == "link" || tag == "a" || tag == "img" || tag == "iframe" ||
+ tag == "frame")
+ {
+ items = items.concat([
+ "-",
+ {
+ label: "OpenInTab",
+ tooltiptext: "firebug.tip.Open_In_Tab",
+ command: Obj.bindFixed(this.browseObject, this, elt, context)
+ }
+ ]);
+ }
+
+ if (tag == "iframe" || tag == "frame")
+ {
+ items = items.concat([
+ {
+ label: "html.menu.Reload_Frame",
+ tooltiptext: "html.menu.tip.Reload_Frame",
+ command: Obj.bindFixed(this.reloadFrame, this, elt)
+ }
+ ]);
+ }
+
+ items = items.concat([
+ "-",
+ {
+ label: "ScrollIntoView",
+ tooltiptext: "html.tip.Scroll_Into_View",
+ id: "fbScrollIntoView",
+ command: Obj.bindFixed(elt.scrollIntoView, elt)
+ }
+ ]);
+
+ return items;
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.TextNode = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK(
+ "<",
+ SPAN({"class": "nodeTag"}, "TextNode"),
+ " textContent="",
+ SPAN({"class": "nodeValue"}, "$object.textContent|cropMultipleLines"),
+ """,
+ ">"
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "textNode",
+
+ inspectObject: function(node, context)
+ {
+ // Text nodes have two displays in HTML panel, inline and distinct
+ // node. We need to examine which case we are dealing with in order to
+ // select the proper object.
+ if (HTMLLib.hasNoElementChildren(node.parentNode))
+ {
+ node = node.parentNode;
+ }
+
+ Firebug.chrome.select(node, "html", "domSide");
+ },
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof window.Text;
+ },
+
+ getTitle: function(win, context)
+ {
+ return "textNode";
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.RegExp = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK(
+ SPAN({"class": "objectTitle"}, "$object|getTitle"),
+ SPAN(" "),
+ SPAN({"class": "regexpSource"}, "$object|getSource")
+ ),
+
+ className: "regexp",
+
+ supportsObject: function(object, type)
+ {
+ try
+ {
+ return type == "object" && Object.prototype.toString.call(object) === "[object RegExp]";
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("reps.RegExp.supportsObject; EXCEPTION " + err, err);
+ }
+ },
+
+ getSource: function(object)
+ {
+ var source = "/" + object.source + "/";
+ source += object.ignoreCase ? "i" : "";
+ source += object.global ? "g" : "";
+ source += object.multiline ? "m" : "";
+ return source;
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Document = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
+
+ getLocation: function(doc)
+ {
+ return doc.location ? Url.getFileName(doc.location.href) : "";
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "object",
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof window.Document || object instanceof window.XMLDocument;
+ },
+
+ browseObject: function(doc, context)
+ {
+ Win.openNewTab(doc.location.href);
+ return true;
+ },
+
+ persistObject: function(doc, context)
+ {
+ return this.persistor;
+ },
+
+ persistor: function(context)
+ {
+ return context.window.document;
+ },
+
+ getTitle: function(win, context)
+ {
+ return "document";
+ },
+
+ getTooltip: function(doc)
+ {
+ return doc.location.href;
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.StyleSheet = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
+
+ getLocation: function(styleSheet)
+ {
+ return Url.getFileName(styleSheet.href);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ copyURL: function(styleSheet)
+ {
+ var url = Css.getURLForStyleSheet(styleSheet);
+ if (url)
+ System.copyToClipboard(url);
+
+ if (FBTrace.DBG_ERRORS && !url)
+ FBTrace.sysout("reps.StyleSheet.copyURL; ERROR no URL", styleSheet);
+ },
+
+ openInTab: function(styleSheet)
+ {
+ var url = Css.getURLForStyleSheet(styleSheet);
+ if (url)
+ Win.openNewTab(url);
+
+ if (FBTrace.DBG_ERRORS && !url)
+ FBTrace.sysout("reps.StyleSheet.openInTab; ERROR no URL", styleSheet);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "object",
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof window.CSSStyleSheet;
+ },
+
+ browseObject: function(styleSheet, context)
+ {
+ Win.openNewTab(styleSheet.href);
+ return true;
+ },
+
+ persistObject: function(styleSheet, context)
+ {
+ return Obj.bind(this.persistor, top, styleSheet.href);
+ },
+
+ getTooltip: function(styleSheet)
+ {
+ return styleSheet.href;
+ },
+
+ getContextMenuItems: function(styleSheet, target, context)
+ {
+ return [
+ {
+ label: "CopyLocation",
+ tooltiptext: "clipboard.tip.Copy_Location",
+ command: Obj.bindFixed(this.copyURL, this, styleSheet)
+ },
+ "-",
+ {
+ label: "OpenInTab",
+ tooltiptext: "firebug.tip.Open_In_Tab",
+ command: Obj.bindFixed(this.openInTab, this, styleSheet)
+ }
+ ];
+ },
+
+ persistor: function(context, href)
+ {
+ return Css.getStyleSheetByHref(href, context);
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.CSSRule = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK("$object|getType ", SPAN({"class": "objectPropValue"}, "$object|getDescription")),
+
+ getType: function(rule)
+ {
+ if (rule instanceof window.CSSStyleRule)
+ {
+ return "CSSStyleRule";
+ }
+ else if (window.CSSSupportsRule && rule instanceof window.CSSSupportsRule)
+ {
+ return "CSSSupportsRule";
+ }
+ else if ((window.CSSDocumentRule && rule instanceof window.CSSDocumentRule) ||
+ (window.CSSMozDocumentRule && rule instanceof window.CSSMozDocumentRule))
+ {
+ return "CSSDocumentRule";
+ }
+ else if (rule instanceof window.CSSFontFaceRule)
+ {
+ return "CSSFontFaceRule";
+ }
+ else if (rule instanceof window.CSSImportRule)
+ {
+ return "CSSImportRule";
+ }
+ else if (rule instanceof window.CSSMediaRule)
+ {
+ return "CSSMediaRule";
+ }
+ else if (rule instanceof window.CSSCharsetRule)
+ {
+ return "CSSCharsetRule";
+ }
+ else if ((window.CSSKeyframesRule && rule instanceof window.CSSKeyframesRule) ||
+ rule instanceof window.MozCSSKeyframesRule)
+ {
+ return "CSSKeyframesRule";
+ }
+ else if ((window.CSSKeyframeRule && rule instanceof window.CSSKeyframeRule) ||
+ rule instanceof window.MozCSSKeyframeRule)
+ {
+ return "CSSKeyframeRule";
+ }
+ else if (window.CSSPageRule && rule instanceof window.CSSPageRule)
+ {
+ return "CSSPageRule";
+ }
+ else if (rule instanceof window.CSSNameSpaceRule)
+ {
+ return "CSSNameSpaceRule";
+ }
+
+ return "CSSRule";
+ },
+
+ getDescription: function(rule)
+ {
+ if (rule instanceof window.CSSStyleRule)
+ {
+ return rule.selectorText;
+ }
+ else if (window.CSSSupportsRule && rule instanceof window.CSSSupportsRule)
+ {
+ return rule.conditionText;
+ }
+ else if ((window.CSSDocumentRule && rule instanceof window.CSSDocumentRule) ||
+ (window.CSSMozDocumentRule && rule instanceof window.CSSMozDocumentRule))
+ {
+ return rule.conditionText;
+ }
+ else if (rule instanceof window.CSSFontFaceRule)
+ {
+ return rule.style.getPropertyValue("font-family");
+ }
+ else if (rule instanceof window.CSSImportRule)
+ {
+ return Url.getFileName(rule.href);
+ }
+ else if (rule instanceof window.CSSMediaRule)
+ {
+ return rule.media.mediaText;
+ }
+ else if (rule instanceof window.CSSCharsetRule)
+ {
+ return rule.encoding;
+ }
+ else if ((window.CSSKeyframesRule && rule instanceof window.CSSKeyframesRule) ||
+ rule instanceof window.MozCSSKeyframesRule)
+ {
+ return rule.name;
+ }
+ else if ((window.CSSKeyframeRule && rule instanceof window.CSSKeyframeRule) ||
+ rule instanceof window.MozCSSKeyframeRule)
+ {
+ return rule.keyText;
+ }
+ else if (window.CSSPageRule && rule instanceof window.CSSPageRule)
+ {
+ return rule.selectorText || "";
+ }
+ else if (rule instanceof window.CSSNameSpaceRule)
+ {
+ var reNamespace = /^@namespace (.+ )?url\("(.*?)"\);$/;
+ var namespace = rule.cssText.match(reNamespace);
+ var prefix = namespace[1] || "";
+ var name = namespace[2];
+ return prefix + name;
+ }
+
+ return "";
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "object",
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof window.CSSRule;
+ },
+
+ getTooltip: function(rule)
+ {
+ if (rule instanceof CSSFontFaceRule)
+ return Css.extractURLs(rule.style.getPropertyValue("src")).join(", ");
+ else if (rule instanceof window.CSSImportRule)
+ return rule.href;
+
+ return "";
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Window = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK("$object|getWindowTitle ",
+ SPAN({"class": "objectPropValue"},
+ "$object|getLocation"
+ )
+ ),
+
+ getLocation: function(win)
+ {
+ try
+ {
+ return (win && win.location && !win.closed) ? Url.getFileName(win.location.href) : "";
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("reps.Window window closed? "+exc, exc);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "object",
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof window.Window;
+ },
+
+ browseObject: function(win, context)
+ {
+ Win.openNewTab(win.location.href);
+ return true;
+ },
+
+ persistObject: function(win, context)
+ {
+ return this.persistor;
+ },
+
+ persistor: function(context)
+ {
+ return context.window;
+ },
+
+ getTitle: function(win, context)
+ {
+ return "window";
+ },
+
+ getWindowTitle: function(win)
+ {
+ if (Firebug.viewChrome)
+ {
+ if (win.toString().indexOf('XrayWrapper') !== -1)
+ return "XrayWrapper[Window]";
+ }
+ return "Window";
+ },
+
+ getTooltip: function(win)
+ {
+ if (win && !win.closed)
+ return win.location.href;
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Event = domplate(Firebug.Rep,
+{
+ className: "event",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ tag:
+ TAG("$copyEventTag", {object: "$object|copyEvent"}),
+
+ copyEventTag:
+ OBJECTLINK("$object|summarizeEvent"),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ summarizeEvent: function(event)
+ {
+ var info = [event.type, " "];
+
+ var eventFamily = Events.getEventFamily(event.type);
+ if (eventFamily == "mouse")
+ info.push("clientX=", event.clientX, ", clientY=", event.clientY);
+ else if (eventFamily == "key")
+ info.push("charCode=", event.charCode, ", keyCode=", event.keyCode);
+ else if (event.type == "message")
+ info.push("origin=", event.origin, ", data=", event.data);
+
+ return info.join("");
+ },
+
+ copyEvent: function(event)
+ {
+ return new Dom.EventCopy(event);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof window.Event || object instanceof Dom.EventCopy;
+ },
+
+ getTitle: function(event, context)
+ {
+ return "Event " + event.type;
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.SourceLink = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK(
+ {$collapsed: "$object|hideSourceLink"},
+ DIV("$object|getSourceLinkTitle"),
+ DIV({$systemLink: "$object|isSystemLink"}, "$object|getSystemFlagTitle")),
+
+ isSystemLink: function(sourceLink)
+ {
+ return sourceLink && Url.isSystemURL(sourceLink.href);
+ },
+
+ hideSourceLink: function(sourceLink)
+ {
+ try
+ {
+ return (sourceLink && sourceLink.href && sourceLink.href.indexOf) ?
+ (sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1) : true;
+ }
+ catch (e)
+ {
+ // xxxHonza: I see "Security error" code: "1000" nsresult:
+ // "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)"
+ // when accessing globalStorage property of a page.
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("reps.hideSourceLink; EXCEPTION " + sourceLink + ", " + e, e);
+ }
+
+ return true;
+ },
+
+ getSourceLinkTitle: function(sourceLink)
+ {
+ if (!sourceLink || !sourceLink.href || typeof(sourceLink.href) !== 'string')
+ return "";
+
+ try
+ {
+ // XXX This is wrong for at least data: URLs. E.g. evaluating
+ // "%2f" in the command line shows as "/".
+ var fileName = sourceLink.href;
+ fileName = Url.getFileName(fileName);
+ fileName = decodeURIComponent(fileName);
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'" +
+ sourceLink.href + "\': " + exc, exc);
+ }
+
+ var maxWidth = Firebug.sourceLinkLabelWidth;
+ if (maxWidth > 0)
+ fileName = Str.cropString(fileName, maxWidth);
+
+ if (sourceLink.instance)
+ {
+ return Locale.$STRF("InstanceLine", [fileName, sourceLink.instance + 1,
+ sourceLink.line]);
+ }
+ else if (sourceLink.line && typeof(sourceLink.col) != "undefined")
+ {
+ return Locale.$STRF("LineAndCol", [fileName, sourceLink.line, sourceLink.col]);
+ }
+ else if (sourceLink.line)
+ {
+ return Locale.$STRF("Line", [fileName, sourceLink.line]);
+ }
+ else
+ {
+ return fileName;
+ }
+ },
+
+ getSystemFlagTitle: function(sourceLink)
+ {
+ if (this.isSystemLink(sourceLink))
+ return Locale.$STRF("SystemItem", [""]);
+ else
+ return "";
+ },
+
+ copyLink: function(sourceLink)
+ {
+ System.copyToClipboard(sourceLink.href);
+ },
+
+ openInTab: function(sourceLink)
+ {
+ Win.openNewTab(sourceLink.href);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "sourceLink",
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof SourceLink.SourceLink;
+ },
+
+ getTooltip: function(sourceLink)
+ {
+ var text;
+ try
+ {
+ text = decodeURI(sourceLink.href);
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("reps.getTooltip decodeURI fails for " + sourceLink.href, exc);
+ }
+
+ text = unescape(sourceLink.href);
+
+ var lines = Str.splitLines(text);
+ if (lines.length < 10)
+ return text;
+
+ lines.splice(10);
+ return lines.join("") + "...";
+ },
+
+ inspectObject: function(sourceLink, context)
+ {
+ if (sourceLink.type == "js")
+ {
+ var scriptFile = Firebug.SourceFile.getSourceFileByHref(sourceLink.href, context);
+ if (scriptFile)
+ return Firebug.chrome.select(sourceLink);
+ }
+ else if (sourceLink.type == "css")
+ {
+ // If an object is defined, treat it as the highest priority for
+ // inspect actions
+ if (sourceLink.object) {
+ Firebug.chrome.select(sourceLink.object);
+ return;
+ }
+
+ var stylesheet = Css.getStyleSheetByHref(sourceLink.href, context);
+ if (stylesheet)
+ {
+ var ownerNode = stylesheet.ownerNode;
+ if (ownerNode)
+ {
+ Firebug.chrome.select(sourceLink, "html");
+ return;
+ }
+
+ var panel = context.getPanel("stylesheet");
+ if (panel && panel.getRuleByLine(stylesheet, sourceLink.line))
+ return Firebug.chrome.select(sourceLink);
+ }
+ }
+ else if (sourceLink.type == "net")
+ {
+ return Firebug.chrome.select(sourceLink);
+ }
+
+ // Fallback is to just open the view-source window on the file
+ Firefox.viewSource(sourceLink.href, sourceLink.line);
+ },
+
+ browseObject: function(sourceLink, context)
+ {
+ Win.openNewTab(sourceLink.href);
+ return true;
+ },
+
+ getContextMenuItems: function(sourceLink, target, context)
+ {
+ return [
+ {
+ label: "CopyLocation",
+ tooltiptext: "clipboard.tip.Copy_Location",
+ command: Obj.bindFixed(this.copyLink, this, sourceLink)
+ },
+ "-",
+ {
+ label: "OpenInTab",
+ tooltiptext: "firebug.tip.Open_In_Tab",
+ command: Obj.bindFixed(this.openInTab, this, sourceLink)
+ }
+ ];
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.CompilationUnit = domplate(FirebugReps.SourceLink,
+{
+ tag:
+ OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
+
+ persistor: function(context, href)
+ {
+ return context.getCompilationUnit(href);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "CompilationUnit",
+ inspectable: false,
+
+ supportsObject: function(object, type)
+ {
+ return (object instanceof CompilationUnit) ? 2 : 0;
+ },
+
+ persistObject: function(compilationUnit)
+ {
+ var href = compilationUnit.getURL();
+ return Obj.bind(this.persistor, top, href);
+ },
+
+ browseObject: function(sourceLink, context)
+ {
+ },
+
+ getTooltip: function(compilationUnit)
+ {
+ return compilationUnit.getURL();
+ }
+});
+
+// ********************************************************************************************* //
+
+// XXXjjb Since the repObject is fn the stack does not have correct line numbers
+FirebugReps.StackFrame = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTBLOCK({$hasTwisty: "$object|hasArguments", _repObject: "$object",
+ onclick: "$onToggleArguments"},
+ SPAN({"class":"stackFrameMarker"}, ""),
+ A({"class": "objectLink a11yFocus", _repObject: "$object"}, "$object|getCallName"),
+ SPAN("("),
+ SPAN({"class": "arguments"},
+ FOR("arg", "$object|argIterator",
+ SPAN({"class": "argName"}, "$arg.name"),
+ SPAN("="),
+ TAG("$arg.tag", {object: "$arg.value"}),
+ SPAN({"class": "arrayComma"}, "$arg.delim")
+ )
+ ),
+ SPAN(")"),
+ SPAN({"class": "objectLink-sourceLink objectLink a11yFocus",
+ _repObject: "$object|getSourceLink",
+ role: "link"},
+ "$object|getSourceLinkTitle"),
+ DIV({"class": "argList"})
+ ),
+
+ argList:
+ DIV({"class": "argListBox", onclick: "$onSelectFrame"},
+ FOR("arg", "$object|argIterator",
+ DIV({"class": "argBox"},
+ SPAN({"class": "argName"}, "$arg.name"),
+ SPAN(" = "),
+ TAG("$arg.tag", {object: "$arg.value"})
+ )
+ )
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getTitle: function(frame)
+ {
+ return frame.getFunctionName();
+ },
+
+ hasArguments: function(frame)
+ {
+ return frame.args.length;
+ },
+
+ getCallName: function(frame)
+ {
+ return frame.getFunctionName();
+ },
+
+ getSourceLinkTitle: function(frame)
+ {
+ var fileName = Url.getFileName(frame.href);
+
+ var maxWidth = Firebug.sourceLinkLabelWidth;
+ if (maxWidth > 0)
+ var fileName = Str.cropString(fileName, maxWidth);
+
+ return Locale.$STRF("Line", [fileName, frame.line]);
+ },
+
+ argIterator: function(frame)
+ {
+ if (!frame.args)
+ return [];
+
+ var items = [];
+
+ for (var i = 0; i < frame.args.length; ++i)
+ {
+ var arg = frame.args[i];
+
+ if (!arg)
+ break;
+
+ if (arg.hasOwnProperty('value')) // then we got these from jsd
+ {
+ var rep = Firebug.getRep(arg.value);
+ var tag = rep.shortTag ? rep.shortTag : rep.tag;
+
+ var delim = (i == frame.args.length-1 ? "" : ", ");
+
+ items.push({name: arg.name, value: arg.value, tag: tag, delim: delim});
+ }
+ else if (arg.hasOwnProperty('name'))
+ {
+ items.push({name: arg.name, delim: delim});
+ }
+ else // eg from Error object
+ {
+ var delim = (i == frame.args.length-1 ? "" : ", ");
+ var rep = Firebug.getRep(arg);
+ var tag = rep.shortTag ? rep.shortTag : rep.tag;
+
+ items.push({value: arg, tag: tag, delim: delim});
+ }
+
+ if (FBTrace.DBG_DOMPLATE)
+ FBTrace.sysout("reps.stackframe args[" + i + "]: " + arg.name + " = " +
+ arg.value, {arg: arg, item: items[items.length - 1]});
+ }
+
+ return items;
+ },
+
+ getSourceLink: function(stackFrame)
+ {
+ var sourceLink = new SourceLink.SourceLink(stackFrame.href, stackFrame.line, "js");
+ return sourceLink;
+ },
+
+ onToggleArguments: function(event)
+ {
+ this.toggleArguments(event.originalTarget);
+ },
+
+ toggleArguments: function(target)
+ {
+ if (Css.hasClass(target, "objectBox-stackFrame"))
+ {
+ if (Css.hasClass(target, "opened"))
+ this.collapseArguments(target);
+ else
+ this.expandArguments(target);
+ }
+ },
+
+ collapseArguments: function(target)
+ {
+ if (!Css.hasClass(target, "opened"))
+ return;
+
+ Css.toggleClass(target, "opened");
+
+ var argList = target.getElementsByClassName("argList").item(0);
+ Dom.clearNode(argList);
+ },
+
+ expandArguments: function(target)
+ {
+ if (Css.hasClass(target, "opened"))
+ return;
+
+ var frame = target.repObject;
+ if (!this.hasArguments(frame))
+ return;
+
+ Css.toggleClass(target, "opened");
+
+ var argList = target.getElementsByClassName("argList").item(0);
+ this.argList.replace({object: frame}, argList);
+ },
+
+ onSelectFrame: function(event)
+ {
+ var target = event.currentTarget;
+ if (Css.hasClass(target, "argListBox"))
+ {
+ var stackFrame = Dom.getAncestorByClass(target, "objectBox-stackFrame");
+ var panel = Firebug.getElementPanel(target);
+ this.inspectObject(stackFrame.repObject, panel.context);
+ Events.cancelEvent(event);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Rep
+
+ className: "stackFrame",
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof StackFrame.StackFrame;
+ },
+
+ inspectObject: function(stackFrame, context)
+ {
+ if (context.stopped)
+ Firebug.chrome.select(stackFrame);
+ else
+ Firebug.chrome.select(this.getSourceLink(stackFrame));
+ },
+
+ getTooltip: function(stackFrame, context)
+ {
+ return Locale.$STRF("Line", [stackFrame.href, stackFrame.line]);
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.StackTrace = domplate(Firebug.Rep,
+{
+ tag:
+ DIV({role : "group", "aria-label" : Locale.$STR("aria.labels.stack trace")},
+ FOR("frame", "$object.frames|frameIterator",
+ TAG(FirebugReps.StackFrame.tag, {object: "$frame"})
+ )
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "stackTrace",
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof StackFrame.StackTrace;
+ },
+
+ frameIterator: function(frames)
+ {
+ // Skip Firebug internal frames.
+ // xxxHonza: this is another place where we peel off stack frames.
+ var result = [];
+ for (var i=0; frames && i<frames.length; i++)
+ {
+ var frame = frames[i];
+ var sf = frame.sourceFile;
+ if ((sf && sf.href && Str.hasPrefix(sf.href, "chrome")) ||
+ (frame.fn === "_firebugRerun") ||
+ (frame.fn === "jsdbug_NoScriptFunctionName") ||
+ (frame.fn === "(debugger)"))
+ {
+ continue;
+ }
+
+ result.push(frames[i]);
+ }
+ return result;
+ }
+});
+
+// ********************************************************************************************* //
+
+// xxxsz: Is this code still in use?
+FirebugReps.Assert = domplate(Firebug.Rep,
+{
+ tag:
+ DIV(
+ DIV({"class": "errorTitle"}),
+ DIV({"class": "assertDescription"})
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "assert",
+
+ inspectObject: function(error, context)
+ {
+ var sourceLink = this.getSourceLink(error);
+ Firebug.chrome.select(sourceLink);
+ },
+
+ getContextMenuItems: function(error, target, context)
+ {
+ var breakOnThisError = this.hasErrorBreak(error);
+
+ return [
+ {
+ label: "CopyError",
+ tooltiptext: "console.tip.Copy_Error",
+ command: Obj.bindFixed(this.copyError, this, error)
+ },
+ "-",
+ {
+ label: "BreakOnThisError",
+ tooltiptext: "console.menu.tip.Break_On_This_Error",
+ type: "checkbox",
+ checked: breakOnThisError,
+ command: Obj.bindFixed(this.breakOnThisError, this, error, context)
+ },
+ Menu.optionMenu("BreakOnAllErrors", "breakOnErrors",
+ "console.menu.tip.Break_On_All_Errors")
+ ];
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.SourceText = domplate(Firebug.Rep,
+{
+ tag:
+ DIV(
+ FOR("line", "$object|lineIterator",
+ DIV({"class": "sourceRow", role : "presentation"},
+ SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"),
+ SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text")
+ )
+ )
+ ),
+
+ lineIterator: function(sourceText)
+ {
+ var maxLineNoChars = (sourceText.lines.length + "").length;
+ var list = [];
+
+ for (var i = 0; i < sourceText.lines.length; ++i)
+ {
+ // Make sure all line numbers are the same width (with a fixed-width font)
+ var lineNo = (i+1) + "";
+ while (lineNo.length < maxLineNoChars)
+ lineNo = " " + lineNo;
+
+ list.push({lineNo: lineNo, text: sourceText.lines[i]});
+ }
+
+ return list;
+ },
+
+ getHTML: function(sourceText)
+ {
+ return getSourceLineRange(sourceText, 1, sourceText.lines.length);
+ }
+});
+
+//********************************************************************************************** //
+
+FirebugReps.nsIDOMHistory = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTBOX({onclick: "$showHistory", _repObject: "$object"},
+ OBJECTLINK("$object|summarizeHistory")
+ ),
+
+ className: "nsIDOMHistory",
+
+ summarizeHistory: function(history)
+ {
+ try
+ {
+ var items = history.length;
+ return Locale.$STRP("firebug.reps.historyEntries", [items]);
+ }
+ catch (exc)
+ {
+ return "object does not support history (nsIDOMHistory)";
+ }
+ },
+
+ showHistory: function(event)
+ {
+ try
+ {
+ var history = event.currentTarget.repObject;
+ history.length; // if this throws, then unsupported
+ Firebug.chrome.select(history);
+ }
+ catch (exc)
+ {
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ supportsObject: function(object, type)
+ {
+ return (object instanceof Ci.nsIDOMHistory);
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.ApplicationCache = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK("$object|summarizeCache"),
+
+ summarizeCache: function(applicationCache)
+ {
+ try
+ {
+ return applicationCache.mozItems.length + " items in offline cache";
+ }
+ catch(exc)
+ {
+ return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264";
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "applicationCache",
+
+ supportsObject: function(object, type)
+ {
+ if (Ci.nsIDOMOfflineResourceList)
+ return (object instanceof Ci.nsIDOMOfflineResourceList);
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Storage = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK(
+ SPAN({"class": "storageTitle"}, "$object|summarize "),
+ FOR("prop", "$object|longPropIterator",
+ "$prop.name",
+ SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
+ TAG("$prop.tag", {object: "$prop.object"}),
+ SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
+ )
+ ),
+
+ shortTag:
+ OBJECTLINK(
+ SPAN({"class": "storageTitle"}, "$object|summarize "),
+ FOR("prop", "$object|shortPropIterator",
+ "$prop.name",
+ SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
+ TAG("$prop.tag", {object: "$prop.object"}),
+ SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
+ )
+ ),
+
+ summarize: function(storage)
+ {
+ var object = this.objectView(storage);
+ return Locale.$STRP("firebug.storage.totalItems", [Object.keys(object).length]);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "Storage",
+
+ supportsObject: function(object, type)
+ {
+ return (object instanceof window.Storage);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Iterator
+
+ longPropIterator: function(object)
+ {
+ return this.propIterator(object, 100);
+ },
+
+ shortPropIterator: function(object)
+ {
+ return this.propIterator(object, Options.get("ObjectShortIteratorMax"));
+ },
+
+ propIterator: function(storage, max)
+ {
+ var object = this.objectView(storage);
+ return FirebugReps.Obj.propIterator(object, max);
+ },
+
+ objectView: function(storage)
+ {
+ var object = this.makeObject(storage);
+ for (var any in object)
+ return object;
+
+ // We might have hit upon an https site (bug 709238).
+ // As a hack, we'll check if the current context's window
+ // contains the object as localStorage or sessionStorage.
+ try {
+ var context = Firebug.currentContext;
+ var win = context && context.window;
+ if (win && win.location.protocol === "https:")
+ {
+ var names = ["localStorage", "sessionStorage"], done = false;
+ for (var i = 0; i < 2; ++i)
+ {
+ if (win[names[i]] !== storage)
+ continue;
+ Firebug.CommandLine.evaluate(
+ "((" + this.makeObject + ")(" + names[i] + "))",
+ context,
+ null, null,
+ function(result) {
+ object = result;
+ done = true;
+ },
+ function() {},
+ true
+ );
+ if (done)
+ break;
+ }
+ }
+ }
+ catch(e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("reps.Storage.objectView; EXCEPTION " + e, e);
+ }
+
+ return object;
+ },
+
+ makeObject: function(storage)
+ {
+ // Create a raw object, free from getItem etc., from a storage.
+ // May be serialized and run in page scope.
+ var object = {};
+ try
+ {
+ for (var name in storage)
+ {
+ var value = storage.getItem(name);
+ Object.defineProperty(object, name, {value: value, enumerable: true});
+ }
+ }
+ catch(e)
+ {
+ // We can't log an error in page scope.
+ }
+ return object;
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.XPathResult = domplate(FirebugReps.Arr,
+{
+ className: "array xPathResult",
+ toggles: new ToggleBranch.ToggleBranch(),
+
+ tag:
+ SPAN(FirebugReps.Arr.tag),
+
+ shortTag:
+ SPAN(FirebugReps.Arr.shortTag),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ hasSpecialProperties: function(array)
+ {
+ // xxxHonza: fix for test console/api/log-xpathresult
+ // FirebugReps.Arr.hasSpecialProperties iterates object properties
+ // (using Object.getOwnPropertyNames), but misses 'constructor' if the property
+ // is not explicitely accessed before. Any explanation for such behavior?
+ // (btw. it was actually accessed, but order of 'supportsObject' calls changed when
+ // 'Exception' rep moved into its own module, see issue: 6606)
+ var ctor = array && array.constructor;
+ return FirebugReps.Arr.hasSpecialProperties.apply(this, arguments);
+ },
+
+ supportsObject: function(xpathresult, type)
+ {
+ return (xpathresult instanceof window.XPathResult);
+ },
+
+ arrayIterator: function(xpathresult, max)
+ {
+ var items = [];
+ for (var i=0; i<xpathresult.snapshotLength && i<=max; i++)
+ {
+ var value = xpathresult.snapshotItem(i);
+ var rep = Firebug.getRep(value);
+ var tag = rep.shortTag || rep.tag;
+ var delim = (i == xpathresult.snapshotLength-1 ? "" : ", ");
+
+ items.push({object: value, tag: tag, delim: delim});
+ }
+
+ if (xpathresult.snapshotLength > max + 1)
+ {
+ items[max] = {
+ object: (xpathresult.snapshotLength-max) + " " +
+ Locale.$STR("firebug.reps.more") + "...",
+ tag: FirebugReps.Caption.tag,
+ delim: ""
+ };
+ }
+
+ return items;
+ },
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Description = domplate(Firebug.Rep,
+{
+ className: "Description",
+
+ // Use SPAN to make sure the description is nicely inserted into existing text inline.
+ tag:
+ SPAN({"class": "descriptionBox", onclick: "$onClickLink"}),
+
+ render: function(text, parentNode, listener)
+ {
+ var params = {};
+ params.onClickLink = function(event)
+ {
+ // Only clicks on links are passed to the original listener.
+ var localName = event.target.localName;
+ if (listener && localName && localName.toLowerCase() == "a")
+ listener(event);
+ };
+
+ var rootNode = this.tag.replace(params, parentNode, this);
+
+ var parser = Xpcom.CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
+ var doc = parser.parseFromString("<div>" + text + "</div>", "text/xml");
+ var root = doc.documentElement;
+
+ // Error handling
+ var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
+ if (root.namespaceURI == nsURI && root.nodeName == "parsererror")
+ {
+ FBTrace.sysout("reps.Description; parse ERROR " + root.firstChild.nodeValue, root);
+
+ return FirebugReps.Warning.tag.replace({object: "css.EmptyElementCSS"},
+ parentNode, FirebugReps.Warning);
+ }
+
+ // Nodes from external documents need to be imported.
+ root = rootNode.ownerDocument.importNode(root, true);
+
+ rootNode.appendChild(root);
+ return rootNode;
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Attr = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK(
+ SPAN(
+ SPAN({"class": "attrTitle"}, "$object|getTitle"),
+ SPAN({"class": "attrEqual"}, "="),
+ TAG("$object|getValueTag", {object: "$object.value"})
+ )
+ ),
+
+ getTitle: function(attr)
+ {
+ return attr.name;
+ },
+
+ getValueTag: function(object)
+ {
+ return Firebug.getRep(object.value).tag;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "Attr",
+
+ supportsObject: function(object, type)
+ {
+ return (object instanceof window.Attr);
+ },
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.Date = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK(
+ SPAN({"class": "objectTitle"}, "$object|getTitle "),
+ SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"),
+ SPAN({"class": "attrEqual"}, "$object|getValue"),
+ SPAN({"class": "objectRightBrace"}, "}")
+ ),
+
+ getValue: function(object)
+ {
+ return object.toString();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "Date",
+
+ supportsObject: function(object, type)
+ {
+ return object && object.constructor && object.constructor.name == "Date";
+ },
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.NamedNodeMap = domplate(Firebug.Rep,
+{
+ tag:
+ OBJECTLINK(
+ SPAN({"class": "arrayLeftBracket", role: "presentation"}, "["),
+ FOR("prop", "$object|longPropIterator",
+ SPAN({"class": "nodeName"}, "$prop.name"),
+ SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
+ TAG("$prop.tag", {object: "$prop.object"}),
+ SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
+ ),
+ SPAN({"class": "arrayRightBracket", role: "presentation"}, "]")
+ ),
+
+ shortTag:
+ OBJECTLINK(
+ SPAN({"class": "arrayLeftBracket", role: "presentation"}, "["),
+ FOR("prop", "$object|shortPropIterator",
+ SPAN({"class": "nodeName"}, "$prop.name"),
+ SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
+ TAG("$prop.tag", {object: "$prop.object"}),
+ SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
+ ),
+ SPAN({"class": "arrayRightBracket", role: "presentation"}, "]")
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "NamedNodeMap",
+
+ supportsObject: function(object, type)
+ {
+ // NamedNodeMap is no more since Fx 22 - see https://bugzilla.mozilla.org/show_bug.cgi?id=847195.
+ // The temporary Attr-only replacement is MozNamedAttrMap.
+ return (object instanceof (window.NamedNodeMap || window.MozNamedAttrMap));
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Iterator
+
+ longPropIterator: function(object)
+ {
+ return this.propIterator(object, 100);
+ },
+
+ shortPropIterator: function(object)
+ {
+ return this.propIterator(object, Options.get("ObjectShortIteratorMax"));
+ },
+
+ propIterator: function (object, max)
+ {
+ max = max || 3;
+ if (!object)
+ return [];
+
+ var props = [];
+ for (var i=0; i<object.length && i<max; i++)
+ {
+ var item = object.item(i);
+ var name = item.name;
+ var value = item.value;
+
+ var rep = Firebug.getRep(value);
+ var tag = rep.tag;
+
+ props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "});
+ }
+
+ if (object.length > max)
+ {
+ var index = max - 1, more = object.length - max + 1;
+ if (index < 1)
+ {
+ index = 1;
+ more++;
+ }
+ props[index] = {
+ object: more + " " + Locale.$STR("firebug.reps.more") + "...",
+ tag: FirebugReps.Caption.tag,
+ name: "",
+ equal: "",
+ delim: ""
+ };
+ }
+ else if (props.length > 0)
+ {
+ props[props.length-1].delim = '';
+ }
+
+ return props;
+ },
+});
+
+//********************************************************************************************** //
+
+FirebugReps.ClosureScope = domplate(Firebug.Rep,
+{
+ tag: OBJECTBOX({_repObject: "$object"}, "$object|getTitle"),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "scope",
+
+ getTitle: function(object)
+ {
+ var scope = ClosureInspector.getScopeFromWrapper(object);
+ var type = scope.type, title;
+ if (type === "declarative")
+ title = Locale.$STR("firebug.reps.declarativeScope");
+ else if (type === "object")
+ title = Locale.$STR("firebug.reps.objectScope");
+ else if (type === "with")
+ title = Locale.$STR("firebug.reps.withScope");
+ else
+ title = "<unknown scope \"" + type + "\">"; // shouldn't happen
+ return title;
+ },
+
+ supportsObject: function(object, type)
+ {
+ return ClosureInspector.isScopeWrapper(object);
+ }
+});
+
+// ********************************************************************************************* //
+
+FirebugReps.OptimizedAway = domplate(Firebug.Rep,
+{
+ tag: OBJECTBOX({_repObject: "$object"}, "$object|getTitle"),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "optimizedAway",
+
+ getTitle: function(object)
+ {
+ return Locale.$STR("firebug.reps.optimizedAway");
+ },
+
+ supportsObject: function(object, type)
+ {
+ return ClosureInspector.isOptimizedAway(object);
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerRep(
+ FirebugReps.Undefined,
+ FirebugReps.Null,
+ FirebugReps.Number,
+ FirebugReps.SpecialWhitespaceString,
+ FirebugReps.String,
+ FirebugReps.nsIDOMHistory, // make this early to avoid exceptions
+ FirebugReps.ApplicationCache, // this also
+ FirebugReps.RegExp,
+ FirebugReps.Window,
+ FirebugReps.Element,
+ FirebugReps.TextNode,
+ FirebugReps.Document,
+ FirebugReps.StyleSheet,
+ FirebugReps.CSSRule,
+ FirebugReps.Event,
+ FirebugReps.SourceLink,
+ FirebugReps.CompilationUnit,
+ FirebugReps.StackTrace,
+ FirebugReps.StackFrame,
+ FirebugReps.NetFile,
+ FirebugReps.Property,
+ FirebugReps.XML,
+ FirebugReps.Arr,
+ FirebugReps.ArrayLikeObject,
+ FirebugReps.XPathResult,
+ FirebugReps.Storage,
+ FirebugReps.Attr,
+ FirebugReps.Date,
+ FirebugReps.NamedNodeMap,
+ FirebugReps.Reference,
+ FirebugReps.ClosureScope,
+ FirebugReps.OptimizedAway
+);
+
+Firebug.setDefaultReps(FirebugReps.Func, FirebugReps.Obj);
+
+return Firebug.Reps = FirebugReps;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/chrome/searchBox.js b/content/firebug/chrome/searchBox.js
index e143d2d..c27acfb 100644
--- a/content/firebug/chrome/searchBox.js
+++ b/content/firebug/chrome/searchBox.js
@@ -1,315 +1,315 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/css",
- "firebug/lib/search",
- "firebug/lib/system",
- "firebug/lib/string",
- "firebug/lib/locale",
- "firebug/lib/options"
-],
-function(Obj, Firebug, Css, Search, System, Str, Locale, Options) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const searchDelay = 150;
-
-// ********************************************************************************************* //
-
-/**
- * @module Implements basic search box functionality. The box is displayed on the right side
- * of the Firebug's toolbar. Specific search capabilities depends on the current panel
- * and implemented in <code>panel.search</code> method. The search-box is automatically
- * available for panels that have <code>searchable<code> property set to true (set to
- * false by default).
- */
-Firebug.Search = Obj.extend(Firebug.Module,
-{
- dispatchName: "search",
-
- onSearchCommand: function(document)
- {
- var el = document.activeElement;
- var id = el.id;
-
- if (id == "fbPanelBar1-browser" || id == "fbPanelBar2-browser")
- {
- var sel = el.contentWindow.getSelection().toString();
- if (!sel)
- {
- var input = el.contentDocument.activeElement;
- if (input instanceof Ci.nsIDOMNSEditableElement)
- {
- sel = input.QueryInterface(Ci.nsIDOMNSEditableElement).
- editor.selection.toString();
- }
- }
-
- this.search(sel, Firebug.currentContext);
- this.focus();
- }
- },
-
- search: function(text, context)
- {
- var searchBox = Firebug.chrome.$("fbSearchBox");
- searchBox.value = text;
- this.update(context);
- },
-
- searchNext: function(context)
- {
- return this.update(context, true, false);
- },
-
- searchPrev: function(context)
- {
- return this.update(context, true, true);
- },
-
- displayOnly: function(text, context)
- {
- var searchBox = Firebug.chrome.$("fbSearchBox");
-
- if (text && text.length > 0)
- Css.setClass(searchBox, "fbSearchBox-attention");
- else
- Css.removeClass(searchBox, "fbSearchBox-attention");
-
- searchBox.value = text;
- },
-
- focus: function(context)
- {
- if (Firebug.isDetached())
- Firebug.chrome.focus();
- else
- Firebug.toggleBar(true);
-
- var searchBox = Firebug.chrome.$("fbSearchBox");
- searchBox.focus();
- searchBox.select();
- },
-
- update: function(context, immediate, reverse)
- {
- var panel = Firebug.chrome.getSelectedPanel();
- if (!panel || !panel.searchable)
- return;
-
- var searchBox = Firebug.chrome.$("fbSearchBox");
- var panelNode = panel.panelNode;
-
- var value = searchBox.value;
-
- this.addToHistory(value);
-
- // This sucks, but the find service won't match nodes that are invisible, so we
- // have to make sure to make them all visible unless the user is appending to the
- // last string, in which case it's ok to just search the set of visible nodes
- if (!panel.searchText || value == panel.searchText ||
- !Str.hasPrefix(value, panel.searchText))
- {
- Css.removeClass(panelNode, "searching");
- }
-
- if (Firebug.Search.isCaseSensitive(value))
- Css.setClass(searchBox, "fbSearchBox-autoSensitive");
- else
- Css.removeClass(searchBox, "fbSearchBox-autoSensitive");
-
- if (FBTrace.DBG_SEARCH)
- {
- FBTrace.sysout("search Firebug.Search.isAutoSensitive(value): " +
- Firebug.Search.isAutoSensitive(value) + " for " + value, searchBox);
- }
-
- // Cancel the previous search to keep typing smooth
- clearTimeout(panelNode.searchTimeout);
-
- if (immediate)
- {
- var found = panel.search(value, reverse);
- if (!found && value)
- this.onNotFound();
-
- if (value)
- {
- // Hides all nodes that didn't pass the filter
- Css.setClass(panelNode, "searching");
- }
- else
- {
- // Makes all nodes visible again
- Css.removeClass(panelNode, "searching");
- }
-
- panel.searchText = value;
-
- return found;
- }
- else
- {
- // After a delay, perform the search
- panelNode.searchTimeout = setTimeout(function()
- {
- var found = panel.search(value, reverse);
- if (!found && value)
- Firebug.Search.onNotFound(value);
-
- if (value)
- {
- // Hides all nodes that didn't pass the filter
- Css.setClass(panelNode, "searching");
- }
- else
- {
- // Makes all nodes visible again
- Css.removeClass(panelNode, "searching");
- }
-
- panel.searchText = value;
- searchBox.status = (found ? "found" : "notfound");
-
- if (FBTrace.DBG_SEARCH)
- FBTrace.sysout("search " + searchBox.status + " " + value);
-
- }, searchDelay);
- }
- },
-
- onNotFound: function()
- {
- if (this.status != "notfound")
- System.beep();
- },
-
- isCaseSensitive: function(text)
- {
- return !!Options.get("searchCaseSensitive") || this.isAutoSensitive(text);
- },
-
- isAutoSensitive: function(text)
- {
- return (text.toLowerCase() !== text);
- },
-
- getTestingRegex: function(text)
- {
- var caseSensitive = Firebug.Search.isCaseSensitive(text);
-
- try
- {
- if (Options.get("searchUseRegularExpression"))
- return new RegExp(text, caseSensitive ? "g" : "gi");
- else
- return new Search.LiteralRegExp(text, false, caseSensitive);
- }
- catch (err)
- {
- // The user entered an invalid regex. Duck type the regex object
- // to support literal searches when an invalid regex is entered
- return new Search.LiteralRegExp(text, false, caseSensitive);
- }
- },
-
- searchOptionMenu: function(label, option, tooltiptext)
- {
- return {
- label: label,
- tooltiptext: tooltiptext,
- checked: Options.get(option),
- option: option,
- command: Obj.bindFixed(this.onToggleSearchOption, this, option)
- };
- },
-
- onToggleSearchOption: function(option)
- {
- Options.togglePref(option);
-
- // Make sure the "Case Sensitive || Case Insensitive" label is updated.
- this.update();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // History
-
- history: [""],
-
- addToHistory: function(val)
- {
- var history = this.history;
-
- if (!history[0] || Str.hasPrefix(val, history[0]))
- history[0] = val;
- else if (Str.hasPrefix(history[0], val))
- return;
- else
- history.unshift(val);
- },
-
- cycleHistory: function(dir)
- {
- var history = this.history;
- if (dir > 0)
- history.unshift(history.pop());
- else
- history.push(history.shift());
-
- return history[0];
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Module
-
- internationalizeUI: function()
- {
- var sensitive = Firebug.chrome.$("fbSearchBoxIsSensitive");
- sensitive.value = Locale.$STR("search.Case_Sensitive");
- sensitive.setAttribute("tooltiptext", Locale.$STR("search.tip.Case_Sensitive"));
-
- var notSensitive = Firebug.chrome.$("fbSearchBoxIsNotSensitive");
- notSensitive.value = Locale.$STR("search.Case_Insensitive");
- notSensitive.setAttribute("tooltiptext", Locale.$STR("search.tip.Case_Insensitive"));
- },
-
- shutdown: function()
- {
- },
-
- showPanel: function(browser, panel)
- {
- // Manage visibility of the search-box according to the searchable flag.
- var searchBox = Firebug.chrome.$("fbSearchBox");
- searchBox.status = "noSearch";
- Css.removeClass(searchBox, "fbSearchBox-attention");
- Css.removeClass(searchBox, "fbSearchBox-autoSensitive");
-
- if (panel)
- {
- searchBox.collapsed = !panel.searchable;
- searchBox.updateOptions(panel.getSearchOptionsMenuItems());
- }
- else
- {
- searchBox.collapsed = false;
- }
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.Search);
-
-return Firebug.Search;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/css",
+ "firebug/lib/search",
+ "firebug/lib/system",
+ "firebug/lib/string",
+ "firebug/lib/locale",
+ "firebug/lib/options"
+],
+function(Obj, Firebug, Css, Search, System, Str, Locale, Options) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+const searchDelay = 150;
+
+// ********************************************************************************************* //
+
+/**
+ * @module Implements basic search box functionality. The box is displayed on the right side
+ * of the Firebug's toolbar. Specific search capabilities depends on the current panel
+ * and implemented in <code>panel.search</code> method. The search-box is automatically
+ * available for panels that have <code>searchable<code> property set to true (set to
+ * false by default).
+ */
+Firebug.Search = Obj.extend(Firebug.Module,
+{
+ dispatchName: "search",
+
+ onSearchCommand: function(document)
+ {
+ var el = document.activeElement;
+ var id = el.id;
+
+ if (id == "fbPanelBar1-browser" || id == "fbPanelBar2-browser")
+ {
+ var sel = el.contentWindow.getSelection().toString();
+ if (!sel)
+ {
+ var input = el.contentDocument.activeElement;
+ if (input instanceof Ci.nsIDOMNSEditableElement)
+ {
+ sel = input.QueryInterface(Ci.nsIDOMNSEditableElement).
+ editor.selection.toString();
+ }
+ }
+
+ this.search(sel, Firebug.currentContext);
+ this.focus();
+ }
+ },
+
+ search: function(text, context)
+ {
+ var searchBox = Firebug.chrome.$("fbSearchBox");
+ searchBox.value = text;
+ this.update(context);
+ },
+
+ searchNext: function(context)
+ {
+ return this.update(context, true, false);
+ },
+
+ searchPrev: function(context)
+ {
+ return this.update(context, true, true);
+ },
+
+ displayOnly: function(text, context)
+ {
+ var searchBox = Firebug.chrome.$("fbSearchBox");
+
+ if (text && text.length > 0)
+ Css.setClass(searchBox, "fbSearchBox-attention");
+ else
+ Css.removeClass(searchBox, "fbSearchBox-attention");
+
+ searchBox.value = text;
+ },
+
+ focus: function(context)
+ {
+ if (Firebug.isDetached())
+ Firebug.chrome.focus();
+ else
+ Firebug.toggleBar(true);
+
+ var searchBox = Firebug.chrome.$("fbSearchBox");
+ searchBox.focus();
+ searchBox.select();
+ },
+
+ update: function(context, immediate, reverse)
+ {
+ var panel = Firebug.chrome.getSelectedPanel();
+ if (!panel || !panel.searchable)
+ return;
+
+ var searchBox = Firebug.chrome.$("fbSearchBox");
+ var panelNode = panel.panelNode;
+
+ var value = searchBox.value;
+
+ this.addToHistory(value);
+
+ // This sucks, but the find service won't match nodes that are invisible, so we
+ // have to make sure to make them all visible unless the user is appending to the
+ // last string, in which case it's ok to just search the set of visible nodes
+ if (!panel.searchText || value == panel.searchText ||
+ !Str.hasPrefix(value, panel.searchText))
+ {
+ Css.removeClass(panelNode, "searching");
+ }
+
+ if (Firebug.Search.isCaseSensitive(value))
+ Css.setClass(searchBox, "fbSearchBox-autoSensitive");
+ else
+ Css.removeClass(searchBox, "fbSearchBox-autoSensitive");
+
+ if (FBTrace.DBG_SEARCH)
+ {
+ FBTrace.sysout("search Firebug.Search.isAutoSensitive(value): " +
+ Firebug.Search.isAutoSensitive(value) + " for " + value, searchBox);
+ }
+
+ // Cancel the previous search to keep typing smooth
+ clearTimeout(panelNode.searchTimeout);
+
+ if (immediate)
+ {
+ var found = panel.search(value, reverse);
+ if (!found && value)
+ this.onNotFound();
+
+ if (value)
+ {
+ // Hides all nodes that didn't pass the filter
+ Css.setClass(panelNode, "searching");
+ }
+ else
+ {
+ // Makes all nodes visible again
+ Css.removeClass(panelNode, "searching");
+ }
+
+ panel.searchText = value;
+
+ return found;
+ }
+ else
+ {
+ // After a delay, perform the search
+ panelNode.searchTimeout = setTimeout(function()
+ {
+ var found = panel.search(value, reverse);
+ if (!found && value)
+ Firebug.Search.onNotFound(value);
+
+ if (value)
+ {
+ // Hides all nodes that didn't pass the filter
+ Css.setClass(panelNode, "searching");
+ }
+ else
+ {
+ // Makes all nodes visible again
+ Css.removeClass(panelNode, "searching");
+ }
+
+ panel.searchText = value;
+ searchBox.status = (found ? "found" : "notfound");
+
+ if (FBTrace.DBG_SEARCH)
+ FBTrace.sysout("search " + searchBox.status + " " + value);
+
+ }, searchDelay);
+ }
+ },
+
+ onNotFound: function()
+ {
+ if (this.status != "notfound")
+ System.beep();
+ },
+
+ isCaseSensitive: function(text)
+ {
+ return !!Options.get("searchCaseSensitive") || this.isAutoSensitive(text);
+ },
+
+ isAutoSensitive: function(text)
+ {
+ return (text.toLowerCase() !== text);
+ },
+
+ getTestingRegex: function(text)
+ {
+ var caseSensitive = Firebug.Search.isCaseSensitive(text);
+
+ try
+ {
+ if (Options.get("searchUseRegularExpression"))
+ return new RegExp(text, caseSensitive ? "g" : "gi");
+ else
+ return new Search.LiteralRegExp(text, false, caseSensitive);
+ }
+ catch (err)
+ {
+ // The user entered an invalid regex. Duck type the regex object
+ // to support literal searches when an invalid regex is entered
+ return new Search.LiteralRegExp(text, false, caseSensitive);
+ }
+ },
+
+ searchOptionMenu: function(label, option, tooltiptext)
+ {
+ return {
+ label: label,
+ tooltiptext: tooltiptext,
+ checked: Options.get(option),
+ option: option,
+ command: Obj.bindFixed(this.onToggleSearchOption, this, option)
+ };
+ },
+
+ onToggleSearchOption: function(option)
+ {
+ Options.togglePref(option);
+
+ // Make sure the "Case Sensitive || Case Insensitive" label is updated.
+ this.update();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // History
+
+ history: [""],
+
+ addToHistory: function(val)
+ {
+ var history = this.history;
+
+ if (!history[0] || Str.hasPrefix(val, history[0]))
+ history[0] = val;
+ else if (Str.hasPrefix(history[0], val))
+ return;
+ else
+ history.unshift(val);
+ },
+
+ cycleHistory: function(dir)
+ {
+ var history = this.history;
+ if (dir > 0)
+ history.unshift(history.pop());
+ else
+ history.push(history.shift());
+
+ return history[0];
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Module
+
+ internationalizeUI: function()
+ {
+ var sensitive = Firebug.chrome.$("fbSearchBoxIsSensitive");
+ sensitive.value = Locale.$STR("search.Case_Sensitive");
+ sensitive.setAttribute("tooltiptext", Locale.$STR("search.tip.Case_Sensitive"));
+
+ var notSensitive = Firebug.chrome.$("fbSearchBoxIsNotSensitive");
+ notSensitive.value = Locale.$STR("search.Case_Insensitive");
+ notSensitive.setAttribute("tooltiptext", Locale.$STR("search.tip.Case_Insensitive"));
+ },
+
+ shutdown: function()
+ {
+ },
+
+ showPanel: function(browser, panel)
+ {
+ // Manage visibility of the search-box according to the searchable flag.
+ var searchBox = Firebug.chrome.$("fbSearchBox");
+ searchBox.status = "noSearch";
+ Css.removeClass(searchBox, "fbSearchBox-attention");
+ Css.removeClass(searchBox, "fbSearchBox-autoSensitive");
+
+ if (panel)
+ {
+ searchBox.collapsed = !panel.searchable;
+ searchBox.updateOptions(panel.getSearchOptionsMenuItems());
+ }
+ else
+ {
+ searchBox.collapsed = false;
+ }
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.Search);
+
+return Firebug.Search;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/shortcuts.js b/content/firebug/chrome/shortcuts.js
index 9a4d678..a810d43 100644
--- a/content/firebug/chrome/shortcuts.js
+++ b/content/firebug/chrome/shortcuts.js
@@ -1,157 +1,157 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/lib",
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/firefox",
-],
-function(FBL, Obj, Firebug, Firefox) {
-
-// ************************************************************************************************
-// Constants
-
-Components.utils.import("resource://gre/modules/Services.jsm");
-
-var KeyEvent = window.KeyEvent;
-
-// ************************************************************************************************
-
-/**
- * ShortcutsModel object implements keyboard shortcuts logic.
- */
-Firebug.ShortcutsModel = Obj.extend(Firebug.Module,
-{
- dispatchName: "shortcuts",
-
- initializeUI: function()
- {
- if (FBTrace.DBG_SHORTCUTS)
- FBTrace.sysout("shortcuts.initializeUI; Shortcuts module initialization.");
-
- this.initShortcuts();
- },
-
- initShortcuts: function()
- {
- var branch = Services.prefs.getBranch("extensions.firebug.key.shortcut.");
- var shortcutNames = branch.getChildList("", {});
-
- // We need to touch keyset to apply keychanges without restart
- this.keysets = [];
- this.disabledKeyElements = [];
- shortcutNames.forEach(this.initShortcut, this);
-
- this.keysets.forEach(function(keyset) {
- keyset.parentNode.insertBefore(keyset, keyset.nextSibling);
- });
-
- for (var i=0; i<this.disabledKeyElements.length; i++)
- {
- var elem = this.disabledKeyElements[i];
- elem.removeAttribute("disabled");
- }
-
- this.keysets = this.disabledKeyElements = null;
- },
-
- initShortcut: function(element, index, array)
- {
- var branch = Services.prefs.getBranch("extensions.firebug.key.");
- var shortcut = branch.getCharPref("shortcut." + element);
- var tokens = shortcut.split(" ");
- var key = tokens.pop();
- var modifiers = tokens.join(",");
-
- var keyElem = document.getElementById("key_firebug_" + element);
- if (!keyElem)
- {
- // If key is not defined in xul, add it
- keyElem = document.createElement("key");
- keyElem.className = "fbOnlyKey";
- keyElem.id = "key_firebug_" + element;
- keyElem.command = "cmd_firebug_" + element;
- document.getElementById("mainKeyset").appendChild(keyElem);
- }
-
- // invalidAttr needed in case default shortcut uses key rather than keycode
- var attr = "key";
- var invalidAttr = "key";
-
- // Choose between key or keycode attribute
- if (key.length <= 1)
- {
- invalidAttr = "keycode";
- }
- else if (KeyEvent["DOM_"+key])
- {
- attr = "keycode";
- }
- else
- {
- // Only set valid keycodes
- return;
- }
-
- keyElem.setAttribute("modifiers", modifiers);
- keyElem.setAttribute(attr, key);
- keyElem.removeAttribute(invalidAttr);
-
- if (this.keysets.indexOf(keyElem.parentNode) == -1)
- this.keysets.push(keyElem.parentNode);
-
- // Modify shortcut for global key, if it exists
- var keyElem = Firefox.getElementById("key_firebug_" + element);
- if (!keyElem)
- return;
-
- if (FBTrace.DBG_SHORTCUTS)
- {
- FBTrace.sysout("Firebug.ShortcutsModel.initShortcut; global shortcut",
- {key: key, modifiers: modifiers});
- }
-
- // Disable existing global shortcuts
- var selector = "key[" + attr + "='" + key + "'][modifiers='" + modifiers + "']"
- + ":not([id='key_firebug_" + element + "']):not([disabled='true'])";
-
- var existingKeyElements = keyElem.ownerDocument.querySelectorAll(selector);
- for (var i=existingKeyElements.length-1; i>=0; i--)
- {
- var existingKeyElement = existingKeyElements[i];
- existingKeyElement.setAttribute("disabled", "true");
- this.disabledKeyElements.push(existingKeyElement);
- }
-
- keyElem.setAttribute("modifiers", modifiers);
- keyElem.setAttribute(attr, key);
- keyElem.removeAttribute(invalidAttr);
-
- if (this.keysets.indexOf(keyElem.parentNode) == -1)
- this.keysets.push(keyElem.parentNode);
- },
-
- // UI Commands
- customizeShortcuts: function()
- {
- var args = {
- FBL: FBL,
- FBTrace: FBTrace
- };
-
- // Open the "customize shortcuts" dialog. Pass FBL into the XUL window so that
- // common APIs can be used (e.g. localization).
- window.openDialog("chrome://firebug/content/firefox/customizeShortcuts.xul", "",
- "chrome,centerscreen,dialog,modal,resizable=yes", args);
- }
-});
-
-// ************************************************************************************************
-// Registration
-
-Firebug.registerModule(Firebug.ShortcutsModel);
-
-return Firebug.ShortcutsModel;
-
-// ************************************************************************************************
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/lib",
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/firefox",
+],
+function(FBL, Obj, Firebug, Firefox) {
+
+// ************************************************************************************************
+// Constants
+
+Components.utils.import("resource://gre/modules/Services.jsm");
+
+var KeyEvent = window.KeyEvent;
+
+// ************************************************************************************************
+
+/**
+ * ShortcutsModel object implements keyboard shortcuts logic.
+ */
+Firebug.ShortcutsModel = Obj.extend(Firebug.Module,
+{
+ dispatchName: "shortcuts",
+
+ initializeUI: function()
+ {
+ if (FBTrace.DBG_SHORTCUTS)
+ FBTrace.sysout("shortcuts.initializeUI; Shortcuts module initialization.");
+
+ this.initShortcuts();
+ },
+
+ initShortcuts: function()
+ {
+ var branch = Services.prefs.getBranch("extensions.firebug.key.shortcut.");
+ var shortcutNames = branch.getChildList("", {});
+
+ // We need to touch keyset to apply keychanges without restart
+ this.keysets = [];
+ this.disabledKeyElements = [];
+ shortcutNames.forEach(this.initShortcut, this);
+
+ this.keysets.forEach(function(keyset) {
+ keyset.parentNode.insertBefore(keyset, keyset.nextSibling);
+ });
+
+ for (var i=0; i<this.disabledKeyElements.length; i++)
+ {
+ var elem = this.disabledKeyElements[i];
+ elem.removeAttribute("disabled");
+ }
+
+ this.keysets = this.disabledKeyElements = null;
+ },
+
+ initShortcut: function(element, index, array)
+ {
+ var branch = Services.prefs.getBranch("extensions.firebug.key.");
+ var shortcut = branch.getCharPref("shortcut." + element);
+ var tokens = shortcut.split(" ");
+ var key = tokens.pop();
+ var modifiers = tokens.join(",");
+
+ var keyElem = document.getElementById("key_firebug_" + element);
+ if (!keyElem)
+ {
+ // If key is not defined in xul, add it
+ keyElem = document.createElement("key");
+ keyElem.className = "fbOnlyKey";
+ keyElem.id = "key_firebug_" + element;
+ keyElem.command = "cmd_firebug_" + element;
+ document.getElementById("mainKeyset").appendChild(keyElem);
+ }
+
+ // invalidAttr needed in case default shortcut uses key rather than keycode
+ var attr = "key";
+ var invalidAttr = "key";
+
+ // Choose between key or keycode attribute
+ if (key.length <= 1)
+ {
+ invalidAttr = "keycode";
+ }
+ else if (KeyEvent["DOM_"+key])
+ {
+ attr = "keycode";
+ }
+ else
+ {
+ // Only set valid keycodes
+ return;
+ }
+
+ keyElem.setAttribute("modifiers", modifiers);
+ keyElem.setAttribute(attr, key);
+ keyElem.removeAttribute(invalidAttr);
+
+ if (this.keysets.indexOf(keyElem.parentNode) == -1)
+ this.keysets.push(keyElem.parentNode);
+
+ // Modify shortcut for global key, if it exists
+ var keyElem = Firefox.getElementById("key_firebug_" + element);
+ if (!keyElem)
+ return;
+
+ if (FBTrace.DBG_SHORTCUTS)
+ {
+ FBTrace.sysout("Firebug.ShortcutsModel.initShortcut; global shortcut",
+ {key: key, modifiers: modifiers});
+ }
+
+ // Disable existing global shortcuts
+ var selector = "key[" + attr + "='" + key + "'][modifiers='" + modifiers + "']"
+ + ":not([id='key_firebug_" + element + "']):not([disabled='true'])";
+
+ var existingKeyElements = keyElem.ownerDocument.querySelectorAll(selector);
+ for (var i=existingKeyElements.length-1; i>=0; i--)
+ {
+ var existingKeyElement = existingKeyElements[i];
+ existingKeyElement.setAttribute("disabled", "true");
+ this.disabledKeyElements.push(existingKeyElement);
+ }
+
+ keyElem.setAttribute("modifiers", modifiers);
+ keyElem.setAttribute(attr, key);
+ keyElem.removeAttribute(invalidAttr);
+
+ if (this.keysets.indexOf(keyElem.parentNode) == -1)
+ this.keysets.push(keyElem.parentNode);
+ },
+
+ // UI Commands
+ customizeShortcuts: function()
+ {
+ var args = {
+ FBL: FBL,
+ FBTrace: FBTrace
+ };
+
+ // Open the "customize shortcuts" dialog. Pass FBL into the XUL window so that
+ // common APIs can be used (e.g. localization).
+ window.openDialog("chrome://firebug/content/firefox/customizeShortcuts.xul", "",
+ "chrome,centerscreen,dialog,modal,resizable=yes", args);
+ }
+});
+
+// ************************************************************************************************
+// Registration
+
+Firebug.registerModule(Firebug.ShortcutsModel);
+
+return Firebug.ShortcutsModel;
+
+// ************************************************************************************************
+});
diff --git a/content/firebug/chrome/tabContext.js b/content/firebug/chrome/tabContext.js
index fdc6e05..8544aa9 100644
--- a/content/firebug/chrome/tabContext.js
+++ b/content/firebug/chrome/tabContext.js
@@ -1,692 +1,692 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "arch/compilationunit",
- "firebug/lib/events",
- "firebug/lib/url",
- "firebug/chrome/window",
- "firebug/lib/css",
- "firebug/chrome/plugin",
-],
-function(Obj, CompilationUnit, Events, Url, Win, Css) {
-
-// ********************************************************************************************* //
-// Constants
-
-const throttleTimeWindow = 200;
-const throttleMessageLimit = 30;
-const throttleInterval = 30;
-const throttleFlushCount = 20;
-const refreshDelay = 300;
-
-// ********************************************************************************************* //
-
-Firebug.TabContext = function(win, browser, chrome, persistedState)
-{
- this.window = win;
- this.browser = browser;
- this.persistedState = persistedState;
-
- this.name = Url.normalizeURL(this.getWindowLocation().toString());
-
- this.windows = [];
- this.panelMap = {};
- this.sidePanelNames = {};
-
- this.compilationUnits = {};
- this.sourceFileByTag = {}; // mozilla only
-
- // New nsITraceableChannel interface (introduced in FF3.0.4) makes possible
- // to re-implement source-cache so that it solves the double-load problem.
- // Anyway, keep the previous cache implementation for backward compatibility
- // (with Firefox 3.0.3 and lower)
- if (Components.interfaces.nsITraceableChannel)
- this.sourceCache = new Firebug.TabCache(this);
- else
- this.sourceCache = new Firebug.SourceCache(this);
-
- this.global = win; // used by chromebug
-
- // -- Back end support --
- this.sourceFileMap = {}; // backend
-};
-
-Firebug.TabContext.prototype =
-{
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Browser Tools Interface BrowserContext
-
- getCompilationUnit: function(url)
- {
- return this.compilationUnits[url];
- },
-
- getAllCompilationUnits: function()
- {
- return Firebug.SourceFile.mapAsArray(this.compilationUnits);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getWindowLocation: function()
- {
- return Win.safeGetWindowLocation(this.window);
- },
-
- getTitle: function()
- {
- if (this.window && this.window.document)
- return this.window.document.title;
- else
- return "";
- },
-
- getName: function()
- {
- if (!this.name || this.name === "about:blank")
- {
- var url = this.getWindowLocation().toString();
- if (Url.isDataURL(url))
- {
- var props = Url.splitDataURL(url);
- if (props.fileName)
- this.name = "data url from "+props.fileName;
- }
- else
- {
- this.name = Url.normalizeURL(url);
- if (this.name === "about:blank" && this.window.frameElement)
- this.name += " in "+Css.getElementCSSSelector(this.window.frameElement);
- }
- }
- return this.name;
- },
-
- getGlobalScope: function()
- {
- return this.window;
- },
-
- addSourceFile: function(sourceFile)
- {
- if (!this.sourceFileMap)
- {
- FBTrace.sysout("tabContext.addSourceFile; ERROR no source map!");
- return;
- }
-
- this.sourceFileMap[sourceFile.href] = sourceFile;
- sourceFile.context = this;
-
- this.addTags(sourceFile);
-
- var kind = CompilationUnit.SCRIPT_TAG;
- if (sourceFile.compilation_unit_type == "event")
- kind = CompilationUnit.BROWSER_GENERATED;
-
- if (sourceFile.compilation_unit_type == "eval")
- kind = CompilationUnit.EVAL;
-
- var url = sourceFile.href;
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("onCompilationUnit " + url, [this, url, kind] );
-
- Firebug.connection.dispatch("onCompilationUnit", [this, url, kind]);
-
- // HACKs
- var compilationUnit = this.getCompilationUnit(url);
- if (!compilationUnit)
- {
- if (FBTrace.DBG_COMPILATION_UNITS || FBTrace.DBG_ERRORS)
- FBTrace.sysout("tabContext.addSourceFile; ERROR Unknown URL: " + url,
- this.compilationUnits);
- return;
- }
-
- compilationUnit.sourceFile = sourceFile;
-
- compilationUnit.getSourceLines(-1, -1, function onLines(compilationUnit,
- firstLineNumber, lastLineNumber, lines)
- {
- Firebug.connection.dispatch("onSourceLines", arguments);
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("onSourceLines "+compilationUnit.getURL() + " " + lines.length +
- " lines", compilationUnit);
- });
- },
-
- removeSourceFile: function(sourceFile)
- {
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("tabContext.removeSourceFile " + sourceFile.href + " in context " +
- sourceFile.context.getName());
-
- delete this.sourceFileMap[sourceFile.href];
- delete sourceFile.context;
-
- // ?? Firebug.onSourceFileDestroyed(this, sourceFile);
- },
-
- addTags: function(sourceFile)
- {
- if (sourceFile.outerScript)
- this.sourceFileByTag[sourceFile.outerScript.tag] = sourceFile;
-
- for (var innerTag in sourceFile.innerScripts)
- this.sourceFileByTag[innerTag] = sourceFile;
- },
-
- getSourceFileByTag: function(tag)
- {
- return this.sourceFileByTag[tag];
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- // backward compat
- get chrome()
- {
- return Firebug.chrome;
- },
-
- getCurrentGlobal: function()
- {
- return this.stoppedGlobal || this.baseWindow || this.window;
- },
-
- destroy: function(state)
- {
- // All existing timeouts need to be cleared
- if (this.timeouts)
- {
- for (var timeout in this.timeouts)
- clearTimeout(timeout);
- }
-
- // Also all waiting intervals must be cleared.
- if (this.intervals)
- {
- for (var timeout in this.intervals)
- clearInterval(timeout);
- }
-
- if (this.throttleTimeout)
- clearTimeout(this.throttleTimeout);
-
- // All existing DOM listeners need to be cleared. Note that context is destroyed
- // when the top level window is unloaded. However, some listeners can be registered
- // to iframes (documents), which can be already unloaded at this point.
- // Removing listeners from such 'unloaded' documents (or window) can throw
- // "TypeError: can't access dead object"
- // We should avoid these exceptions (even if they are not representing memory leaks)
- this.unregisterAllListeners();
-
- state.panelState = {};
-
- // Inherit panelStates that have not been restored yet
- if (this.persistedState)
- {
- for (var panelName in this.persistedState.panelState)
- state.panelState[panelName] = this.persistedState.panelState[panelName];
- }
-
- // Destroy all panels in this context.
- for (var panelName in this.panelMap)
- {
- var panelType = Firebug.getPanelType(panelName);
- this.destroyPanel(panelType, state);
- }
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("tabContext.destroy " + this.getName() + " set state ", state);
- },
-
- getPanelType: function(panelName)
- {
- // Get "global" panelType, registered using Firebug.registerPanel
- var panelType = Firebug.getPanelType(panelName);
-
- // The panelType can be "local", available only within the context.
- if (!panelType && this.panelTypeMap && this.panelTypeMap.hasOwnProperty(panelName))
- panelType = this.panelTypeMap[panelName];
-
- if (panelType && !panelType.prototype)
- {
- FBTrace.sysout("tabContext.getPanel no prototype " + panelType, panelType);
- return null;
- }
-
- return panelType || null;
- },
-
- getPanel: function(panelName, noCreate)
- {
- var panelType = this.getPanelType(panelName);
- if (!panelType)
- return null;
-
- // Create instance of the panelType only if it's enabled.
- var enabled = panelType.prototype.isEnabled ? panelType.prototype.isEnabled() : true;
- if (enabled)
- return this.getPanelByType(panelType, noCreate);
-
- return null;
- },
-
- isPanelEnabled: function(panelName)
- {
- var panelType = this.getPanelType(panelName);
- if (!panelType)
- return false;
- return (!panelType.prototype.isEnabled || panelType.prototype.isEnabled());
- },
-
- getPanelByType: function(panelType, noCreate)
- {
- if (!panelType || !this.panelMap)
- return null;
-
- var panelName = panelType.prototype.name;
- if ( this.panelMap.hasOwnProperty(panelName) )
- return this.panelMap[panelName];
- else if (!noCreate)
- return this.createPanel(panelType);
- },
-
- eachPanelInContext: function(callback)
- {
- for (var panelName in this.panelMap)
- {
- if (this.panelMap.hasOwnProperty(panelName))
- {
- var panel = this.panelMap[panelName];
- var rc = callback(panel);
- if (rc)
- return rc;
- }
- }
- },
-
- createPanel: function(panelType)
- {
- // Instantiate a panel object. This is why panels are defined by prototype inheritance
- var panel = new panelType();
- this.panelMap[panel.name] = panel;
-
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("tabContext.createPanel; Panel created: " + panel.name, panel);
-
- Events.dispatch(Firebug.modules, "onCreatePanel", [this, panel, panelType]);
-
- // Initialize panel and associate with a document.
- if (panel.parentPanel)
- {
- // then this new panel is a side panel
- panel.mainPanel = this.panelMap[panel.parentPanel];
- if (panel.mainPanel)
- {
- // then our panel map is consistent
- // wire the side panel to get UI events from the main panel
- panel.mainPanel.addListener(panel);
- }
- else
- {
- // then our panel map is broken, maybe by an extension failure.
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("tabContext.createPanel panel.mainPanel missing " +
- panel.name + " from " + panel.parentPanel.name);
- }
- }
-
- var doc = this.chrome.getPanelDocument(panelType);
- panel.initialize(this, doc);
-
- return panel;
- },
-
- destroyPanel: function(panelType, state)
- {
- var panelName = panelType.prototype.name;
- var panel = this.panelMap[panelName];
- if (!panel)
- return;
-
- // Create an object to persist state, re-using old one if it was never restored
- var panelState = panelName in state.panelState ? state.panelState[panelName] : {};
- state.panelState[panelName] = panelState;
-
- try
- {
- // Destroy the panel and allow it to persist extra info to the state object
- var dontRemove = panel.destroy(panelState);
- delete this.panelMap[panelName];
-
- if (dontRemove)
- return;
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("tabContext.destroy FAILS (" + panelName + ") " + exc, exc);
-
- // the destroy failed, don't keep the bad state
- delete state.panelState[panelName];
- }
-
- // Remove the panel node from the DOM and so delete its content.
- var panelNode = panel.panelNode;
- if (panelNode && panelNode.parentNode)
- panelNode.parentNode.removeChild(panelNode);
- },
-
- removePanel: function(panelType, state)
- {
- var panelName = panelType.prototype.name;
- if (!this.panelMap.hasOwnProperty(panelName))
- return null;
-
- state.panelState = {};
-
- this.destroyPanel(panelType, state);
- },
-
- // allows a panel from one context to be used in other contexts.
- setPanel: function(panelName, panel)
- {
- if (panel)
- this.panelMap[panelName] = panel;
- else
- delete this.panelMap[panelName];
- },
-
- invalidatePanels: function()
- {
- if (!this.invalidPanels)
- this.invalidPanels = {};
-
- for (var i = 0; i < arguments.length; ++i)
- {
- var panelName = arguments[i];
- var panel = this.getPanel(panelName, true);
- if (panel && !panel.noRefresh)
- this.invalidPanels[panelName] = 1;
- }
-
- if (this.refreshTimeout)
- {
- this.clearTimeout(this.refreshTimeout);
- delete this.refreshTimeout;
- }
-
- this.refreshTimeout = this.setTimeout(Obj.bindFixed(function()
- {
- var invalids = [];
-
- for (var panelName in this.invalidPanels)
- {
- var panel = this.getPanel(panelName, true);
- if (panel)
- {
- if (panel.visible && !panel.editing)
- panel.refresh();
- else
- panel.needsRefresh = true;
-
- // If the panel is being edited, we'll keep trying to
- // refresh it until editing is done
- if (panel.editing)
- invalids.push(panelName);
- }
- }
-
- delete this.invalidPanels;
- delete this.refreshTimeout;
-
- // Keep looping until every tab is valid
- if (invalids.length)
- this.invalidatePanels.apply(this, invalids);
-
- }, this), refreshDelay);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Timeouts and Intervals
-
- setTimeout: function(fn, delay)
- {
- if (setTimeout == this.setTimeout)
- throw new Error("setTimeout recursion");
-
- // we're using a sandboxed setTimeout function
- var timeout = setTimeout(fn, delay);
-
- if (!this.timeouts)
- this.timeouts = {};
-
- this.timeouts[timeout] = 1;
-
- return timeout;
- },
-
- clearTimeout: function(timeout)
- {
- // we're using a sandboxed clearTimeout function
- clearTimeout(timeout);
-
- if (this.timeouts)
- delete this.timeouts[timeout];
- },
-
- setInterval: function(fn, delay)
- {
- // we're using a sandboxed setInterval function
- var timeout = setInterval(fn, delay);
-
- if (!this.intervals)
- this.intervals = {};
-
- this.intervals[timeout] = 1;
-
- return timeout;
- },
-
- clearInterval: function(timeout)
- {
- // we're using a sandboxed clearInterval function
- clearInterval(timeout);
-
- if (this.intervals)
- delete this.intervals[timeout];
- },
-
- delay: function(message, object)
- {
- this.throttle(message, object, null, true);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- // queue the call |object.message(arg)| or just delay it if forceDelay
- throttle: function(message, object, args, forceDelay)
- {
- if (!this.throttleInit)
- {
- this.throttleBuildup = 0;
- this.throttleQueue = [];
- this.throttleTimeout = 0;
- this.lastMessageTime = 0;
- this.throttleInit = true;
- }
-
- if (!forceDelay)
- {
- if (!Firebug.throttleMessages)
- {
- message.apply(object, args);
- return false;
- }
-
- // Count how many messages have been logged during the throttle period
- var logTime = Date.now();
- if (logTime - this.lastMessageTime < throttleTimeWindow)
- ++this.throttleBuildup;
- else
- this.throttleBuildup = 0;
-
- this.lastMessageTime = logTime;
-
- // If the throttle limit has been passed, enqueue the message to be
- // logged later on a timer, otherwise just execute it now
- if (!this.throttleQueue.length && this.throttleBuildup <= throttleMessageLimit)
- {
- try
- {
- message.apply(object, args);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("tabContext.throttle; EXCEPTION " + e, e);
- }
-
- return false;
- }
- }
-
- this.throttleQueue.push(message, object, args);
-
- if (this.throttleTimeout)
- this.clearTimeout(this.throttleTimeout);
-
- var self = this;
- this.throttleTimeout =
- this.setTimeout(function() { self.flushThrottleQueue(); }, throttleInterval);
-
- return true;
- },
-
- flushThrottleQueue: function()
- {
- var queue = this.throttleQueue;
-
- if (!queue[0])
- FBTrace.sysout("tabContext.flushThrottleQueue no queue[0]", queue);
-
- var max = throttleFlushCount * 3;
- if (max > queue.length)
- max = queue.length;
-
- for (var i = 0; i < max; i += 3)
- {
- try
- {
- queue[i].apply(queue[i+1], queue[i+2]);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("tabContext.flushThrottleQueue; EXCEPTION " + e, e);
- }
- }
-
- queue.splice(0, throttleFlushCount*3);
-
- if (queue.length)
- {
- var self = this;
- this.throttleTimeout =
- this.setTimeout(function f() { self.flushThrottleQueue(); }, throttleInterval);
- }
- else
- {
- this.throttleTimeout = 0;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Event Listeners
-
- addEventListener: function(parent, eventId, listener, capturing)
- {
- if (!this.listeners)
- this.listeners = [];
-
- for (var i=0; i<this.listeners.length; i++)
- {
- var l = this.listeners[i];
- if (l.parent == parent && l.eventId == eventId && l.listener == listener &&
- l.capturing == capturing)
- {
- // Listener already registered!
- return;
- }
- }
-
- parent.addEventListener(eventId, listener, capturing);
-
- this.listeners.push({
- parent: parent,
- eventId: eventId,
- listener: listener,
- capturing: capturing,
- });
- },
-
- removeEventListener: function(parent, eventId, listener, capturing)
- {
- parent.removeEventListener(eventId, listener, capturing);
-
- if (!this.listeners)
- this.listeners = [];
-
- for (var i=0; i<this.listeners.length; i++)
- {
- var l = this.listeners[i];
- if (l.parent == parent && l.eventId == eventId && l.listener == listener &&
- l.capturing == capturing)
- {
- this.listeners.splice(i, 1);
- break;
- }
- }
- },
-
- /**
- * Executed by the framework when the context is about to be destroyed.
- */
- unregisterAllListeners: function()
- {
- if (!this.listeners)
- return;
-
- for (var i=0; i<this.listeners.length; i++)
- {
- var l = this.listeners[i];
-
- try
- {
- l.parent.removeEventListener(l.eventId, l.listener, l.capturing);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("tabContext.unregisterAllListeners; (" + l.eventId +
- ") " + e, e);
- }
- }
- }
-
- this.listeners = null;
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return Firebug.TabContext;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "arch/compilationunit",
+ "firebug/lib/events",
+ "firebug/lib/url",
+ "firebug/chrome/window",
+ "firebug/lib/css",
+ "firebug/chrome/plugin",
+],
+function(Obj, CompilationUnit, Events, Url, Win, Css) {
+
+// ********************************************************************************************* //
+// Constants
+
+const throttleTimeWindow = 200;
+const throttleMessageLimit = 30;
+const throttleInterval = 30;
+const throttleFlushCount = 20;
+const refreshDelay = 300;
+
+// ********************************************************************************************* //
+
+Firebug.TabContext = function(win, browser, chrome, persistedState)
+{
+ this.window = win;
+ this.browser = browser;
+ this.persistedState = persistedState;
+
+ this.name = Url.normalizeURL(this.getWindowLocation().toString());
+
+ this.windows = [];
+ this.panelMap = {};
+ this.sidePanelNames = {};
+
+ this.compilationUnits = {};
+ this.sourceFileByTag = {}; // mozilla only
+
+ // New nsITraceableChannel interface (introduced in FF3.0.4) makes possible
+ // to re-implement source-cache so that it solves the double-load problem.
+ // Anyway, keep the previous cache implementation for backward compatibility
+ // (with Firefox 3.0.3 and lower)
+ if (Components.interfaces.nsITraceableChannel)
+ this.sourceCache = new Firebug.TabCache(this);
+ else
+ this.sourceCache = new Firebug.SourceCache(this);
+
+ this.global = win; // used by chromebug
+
+ // -- Back end support --
+ this.sourceFileMap = {}; // backend
+};
+
+Firebug.TabContext.prototype =
+{
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Browser Tools Interface BrowserContext
+
+ getCompilationUnit: function(url)
+ {
+ return this.compilationUnits[url];
+ },
+
+ getAllCompilationUnits: function()
+ {
+ return Firebug.SourceFile.mapAsArray(this.compilationUnits);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getWindowLocation: function()
+ {
+ return Win.safeGetWindowLocation(this.window);
+ },
+
+ getTitle: function()
+ {
+ if (this.window && this.window.document)
+ return this.window.document.title;
+ else
+ return "";
+ },
+
+ getName: function()
+ {
+ if (!this.name || this.name === "about:blank")
+ {
+ var url = this.getWindowLocation().toString();
+ if (Url.isDataURL(url))
+ {
+ var props = Url.splitDataURL(url);
+ if (props.fileName)
+ this.name = "data url from "+props.fileName;
+ }
+ else
+ {
+ this.name = Url.normalizeURL(url);
+ if (this.name === "about:blank" && this.window.frameElement)
+ this.name += " in "+Css.getElementCSSSelector(this.window.frameElement);
+ }
+ }
+ return this.name;
+ },
+
+ getGlobalScope: function()
+ {
+ return this.window;
+ },
+
+ addSourceFile: function(sourceFile)
+ {
+ if (!this.sourceFileMap)
+ {
+ FBTrace.sysout("tabContext.addSourceFile; ERROR no source map!");
+ return;
+ }
+
+ this.sourceFileMap[sourceFile.href] = sourceFile;
+ sourceFile.context = this;
+
+ this.addTags(sourceFile);
+
+ var kind = CompilationUnit.SCRIPT_TAG;
+ if (sourceFile.compilation_unit_type == "event")
+ kind = CompilationUnit.BROWSER_GENERATED;
+
+ if (sourceFile.compilation_unit_type == "eval")
+ kind = CompilationUnit.EVAL;
+
+ var url = sourceFile.href;
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("onCompilationUnit " + url, [this, url, kind] );
+
+ Firebug.connection.dispatch("onCompilationUnit", [this, url, kind]);
+
+ // HACKs
+ var compilationUnit = this.getCompilationUnit(url);
+ if (!compilationUnit)
+ {
+ if (FBTrace.DBG_COMPILATION_UNITS || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("tabContext.addSourceFile; ERROR Unknown URL: " + url,
+ this.compilationUnits);
+ return;
+ }
+
+ compilationUnit.sourceFile = sourceFile;
+
+ compilationUnit.getSourceLines(-1, -1, function onLines(compilationUnit,
+ firstLineNumber, lastLineNumber, lines)
+ {
+ Firebug.connection.dispatch("onSourceLines", arguments);
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("onSourceLines "+compilationUnit.getURL() + " " + lines.length +
+ " lines", compilationUnit);
+ });
+ },
+
+ removeSourceFile: function(sourceFile)
+ {
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("tabContext.removeSourceFile " + sourceFile.href + " in context " +
+ sourceFile.context.getName());
+
+ delete this.sourceFileMap[sourceFile.href];
+ delete sourceFile.context;
+
+ // ?? Firebug.onSourceFileDestroyed(this, sourceFile);
+ },
+
+ addTags: function(sourceFile)
+ {
+ if (sourceFile.outerScript)
+ this.sourceFileByTag[sourceFile.outerScript.tag] = sourceFile;
+
+ for (var innerTag in sourceFile.innerScripts)
+ this.sourceFileByTag[innerTag] = sourceFile;
+ },
+
+ getSourceFileByTag: function(tag)
+ {
+ return this.sourceFileByTag[tag];
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ // backward compat
+ get chrome()
+ {
+ return Firebug.chrome;
+ },
+
+ getCurrentGlobal: function()
+ {
+ return this.stoppedGlobal || this.baseWindow || this.window;
+ },
+
+ destroy: function(state)
+ {
+ // All existing timeouts need to be cleared
+ if (this.timeouts)
+ {
+ for (var timeout in this.timeouts)
+ clearTimeout(timeout);
+ }
+
+ // Also all waiting intervals must be cleared.
+ if (this.intervals)
+ {
+ for (var timeout in this.intervals)
+ clearInterval(timeout);
+ }
+
+ if (this.throttleTimeout)
+ clearTimeout(this.throttleTimeout);
+
+ // All existing DOM listeners need to be cleared. Note that context is destroyed
+ // when the top level window is unloaded. However, some listeners can be registered
+ // to iframes (documents), which can be already unloaded at this point.
+ // Removing listeners from such 'unloaded' documents (or window) can throw
+ // "TypeError: can't access dead object"
+ // We should avoid these exceptions (even if they are not representing memory leaks)
+ this.unregisterAllListeners();
+
+ state.panelState = {};
+
+ // Inherit panelStates that have not been restored yet
+ if (this.persistedState)
+ {
+ for (var panelName in this.persistedState.panelState)
+ state.panelState[panelName] = this.persistedState.panelState[panelName];
+ }
+
+ // Destroy all panels in this context.
+ for (var panelName in this.panelMap)
+ {
+ var panelType = Firebug.getPanelType(panelName);
+ this.destroyPanel(panelType, state);
+ }
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("tabContext.destroy " + this.getName() + " set state ", state);
+ },
+
+ getPanelType: function(panelName)
+ {
+ // Get "global" panelType, registered using Firebug.registerPanel
+ var panelType = Firebug.getPanelType(panelName);
+
+ // The panelType can be "local", available only within the context.
+ if (!panelType && this.panelTypeMap && this.panelTypeMap.hasOwnProperty(panelName))
+ panelType = this.panelTypeMap[panelName];
+
+ if (panelType && !panelType.prototype)
+ {
+ FBTrace.sysout("tabContext.getPanel no prototype " + panelType, panelType);
+ return null;
+ }
+
+ return panelType || null;
+ },
+
+ getPanel: function(panelName, noCreate)
+ {
+ var panelType = this.getPanelType(panelName);
+ if (!panelType)
+ return null;
+
+ // Create instance of the panelType only if it's enabled.
+ var enabled = panelType.prototype.isEnabled ? panelType.prototype.isEnabled() : true;
+ if (enabled)
+ return this.getPanelByType(panelType, noCreate);
+
+ return null;
+ },
+
+ isPanelEnabled: function(panelName)
+ {
+ var panelType = this.getPanelType(panelName);
+ if (!panelType)
+ return false;
+ return (!panelType.prototype.isEnabled || panelType.prototype.isEnabled());
+ },
+
+ getPanelByType: function(panelType, noCreate)
+ {
+ if (!panelType || !this.panelMap)
+ return null;
+
+ var panelName = panelType.prototype.name;
+ if ( this.panelMap.hasOwnProperty(panelName) )
+ return this.panelMap[panelName];
+ else if (!noCreate)
+ return this.createPanel(panelType);
+ },
+
+ eachPanelInContext: function(callback)
+ {
+ for (var panelName in this.panelMap)
+ {
+ if (this.panelMap.hasOwnProperty(panelName))
+ {
+ var panel = this.panelMap[panelName];
+ var rc = callback(panel);
+ if (rc)
+ return rc;
+ }
+ }
+ },
+
+ createPanel: function(panelType)
+ {
+ // Instantiate a panel object. This is why panels are defined by prototype inheritance
+ var panel = new panelType();
+ this.panelMap[panel.name] = panel;
+
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("tabContext.createPanel; Panel created: " + panel.name, panel);
+
+ Events.dispatch(Firebug.modules, "onCreatePanel", [this, panel, panelType]);
+
+ // Initialize panel and associate with a document.
+ if (panel.parentPanel)
+ {
+ // then this new panel is a side panel
+ panel.mainPanel = this.panelMap[panel.parentPanel];
+ if (panel.mainPanel)
+ {
+ // then our panel map is consistent
+ // wire the side panel to get UI events from the main panel
+ panel.mainPanel.addListener(panel);
+ }
+ else
+ {
+ // then our panel map is broken, maybe by an extension failure.
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("tabContext.createPanel panel.mainPanel missing " +
+ panel.name + " from " + panel.parentPanel.name);
+ }
+ }
+
+ var doc = this.chrome.getPanelDocument(panelType);
+ panel.initialize(this, doc);
+
+ return panel;
+ },
+
+ destroyPanel: function(panelType, state)
+ {
+ var panelName = panelType.prototype.name;
+ var panel = this.panelMap[panelName];
+ if (!panel)
+ return;
+
+ // Create an object to persist state, re-using old one if it was never restored
+ var panelState = panelName in state.panelState ? state.panelState[panelName] : {};
+ state.panelState[panelName] = panelState;
+
+ try
+ {
+ // Destroy the panel and allow it to persist extra info to the state object
+ var dontRemove = panel.destroy(panelState);
+ delete this.panelMap[panelName];
+
+ if (dontRemove)
+ return;
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("tabContext.destroy FAILS (" + panelName + ") " + exc, exc);
+
+ // the destroy failed, don't keep the bad state
+ delete state.panelState[panelName];
+ }
+
+ // Remove the panel node from the DOM and so delete its content.
+ var panelNode = panel.panelNode;
+ if (panelNode && panelNode.parentNode)
+ panelNode.parentNode.removeChild(panelNode);
+ },
+
+ removePanel: function(panelType, state)
+ {
+ var panelName = panelType.prototype.name;
+ if (!this.panelMap.hasOwnProperty(panelName))
+ return null;
+
+ state.panelState = {};
+
+ this.destroyPanel(panelType, state);
+ },
+
+ // allows a panel from one context to be used in other contexts.
+ setPanel: function(panelName, panel)
+ {
+ if (panel)
+ this.panelMap[panelName] = panel;
+ else
+ delete this.panelMap[panelName];
+ },
+
+ invalidatePanels: function()
+ {
+ if (!this.invalidPanels)
+ this.invalidPanels = {};
+
+ for (var i = 0; i < arguments.length; ++i)
+ {
+ var panelName = arguments[i];
+ var panel = this.getPanel(panelName, true);
+ if (panel && !panel.noRefresh)
+ this.invalidPanels[panelName] = 1;
+ }
+
+ if (this.refreshTimeout)
+ {
+ this.clearTimeout(this.refreshTimeout);
+ delete this.refreshTimeout;
+ }
+
+ this.refreshTimeout = this.setTimeout(Obj.bindFixed(function()
+ {
+ var invalids = [];
+
+ for (var panelName in this.invalidPanels)
+ {
+ var panel = this.getPanel(panelName, true);
+ if (panel)
+ {
+ if (panel.visible && !panel.editing)
+ panel.refresh();
+ else
+ panel.needsRefresh = true;
+
+ // If the panel is being edited, we'll keep trying to
+ // refresh it until editing is done
+ if (panel.editing)
+ invalids.push(panelName);
+ }
+ }
+
+ delete this.invalidPanels;
+ delete this.refreshTimeout;
+
+ // Keep looping until every tab is valid
+ if (invalids.length)
+ this.invalidatePanels.apply(this, invalids);
+
+ }, this), refreshDelay);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Timeouts and Intervals
+
+ setTimeout: function(fn, delay)
+ {
+ if (setTimeout == this.setTimeout)
+ throw new Error("setTimeout recursion");
+
+ // we're using a sandboxed setTimeout function
+ var timeout = setTimeout(fn, delay);
+
+ if (!this.timeouts)
+ this.timeouts = {};
+
+ this.timeouts[timeout] = 1;
+
+ return timeout;
+ },
+
+ clearTimeout: function(timeout)
+ {
+ // we're using a sandboxed clearTimeout function
+ clearTimeout(timeout);
+
+ if (this.timeouts)
+ delete this.timeouts[timeout];
+ },
+
+ setInterval: function(fn, delay)
+ {
+ // we're using a sandboxed setInterval function
+ var timeout = setInterval(fn, delay);
+
+ if (!this.intervals)
+ this.intervals = {};
+
+ this.intervals[timeout] = 1;
+
+ return timeout;
+ },
+
+ clearInterval: function(timeout)
+ {
+ // we're using a sandboxed clearInterval function
+ clearInterval(timeout);
+
+ if (this.intervals)
+ delete this.intervals[timeout];
+ },
+
+ delay: function(message, object)
+ {
+ this.throttle(message, object, null, true);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ // queue the call |object.message(arg)| or just delay it if forceDelay
+ throttle: function(message, object, args, forceDelay)
+ {
+ if (!this.throttleInit)
+ {
+ this.throttleBuildup = 0;
+ this.throttleQueue = [];
+ this.throttleTimeout = 0;
+ this.lastMessageTime = 0;
+ this.throttleInit = true;
+ }
+
+ if (!forceDelay)
+ {
+ if (!Firebug.throttleMessages)
+ {
+ message.apply(object, args);
+ return false;
+ }
+
+ // Count how many messages have been logged during the throttle period
+ var logTime = Date.now();
+ if (logTime - this.lastMessageTime < throttleTimeWindow)
+ ++this.throttleBuildup;
+ else
+ this.throttleBuildup = 0;
+
+ this.lastMessageTime = logTime;
+
+ // If the throttle limit has been passed, enqueue the message to be
+ // logged later on a timer, otherwise just execute it now
+ if (!this.throttleQueue.length && this.throttleBuildup <= throttleMessageLimit)
+ {
+ try
+ {
+ message.apply(object, args);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("tabContext.throttle; EXCEPTION " + e, e);
+ }
+
+ return false;
+ }
+ }
+
+ this.throttleQueue.push(message, object, args);
+
+ if (this.throttleTimeout)
+ this.clearTimeout(this.throttleTimeout);
+
+ var self = this;
+ this.throttleTimeout =
+ this.setTimeout(function() { self.flushThrottleQueue(); }, throttleInterval);
+
+ return true;
+ },
+
+ flushThrottleQueue: function()
+ {
+ var queue = this.throttleQueue;
+
+ if (!queue[0])
+ FBTrace.sysout("tabContext.flushThrottleQueue no queue[0]", queue);
+
+ var max = throttleFlushCount * 3;
+ if (max > queue.length)
+ max = queue.length;
+
+ for (var i = 0; i < max; i += 3)
+ {
+ try
+ {
+ queue[i].apply(queue[i+1], queue[i+2]);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("tabContext.flushThrottleQueue; EXCEPTION " + e, e);
+ }
+ }
+
+ queue.splice(0, throttleFlushCount*3);
+
+ if (queue.length)
+ {
+ var self = this;
+ this.throttleTimeout =
+ this.setTimeout(function f() { self.flushThrottleQueue(); }, throttleInterval);
+ }
+ else
+ {
+ this.throttleTimeout = 0;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Event Listeners
+
+ addEventListener: function(parent, eventId, listener, capturing)
+ {
+ if (!this.listeners)
+ this.listeners = [];
+
+ for (var i=0; i<this.listeners.length; i++)
+ {
+ var l = this.listeners[i];
+ if (l.parent == parent && l.eventId == eventId && l.listener == listener &&
+ l.capturing == capturing)
+ {
+ // Listener already registered!
+ return;
+ }
+ }
+
+ parent.addEventListener(eventId, listener, capturing);
+
+ this.listeners.push({
+ parent: parent,
+ eventId: eventId,
+ listener: listener,
+ capturing: capturing,
+ });
+ },
+
+ removeEventListener: function(parent, eventId, listener, capturing)
+ {
+ parent.removeEventListener(eventId, listener, capturing);
+
+ if (!this.listeners)
+ this.listeners = [];
+
+ for (var i=0; i<this.listeners.length; i++)
+ {
+ var l = this.listeners[i];
+ if (l.parent == parent && l.eventId == eventId && l.listener == listener &&
+ l.capturing == capturing)
+ {
+ this.listeners.splice(i, 1);
+ break;
+ }
+ }
+ },
+
+ /**
+ * Executed by the framework when the context is about to be destroyed.
+ */
+ unregisterAllListeners: function()
+ {
+ if (!this.listeners)
+ return;
+
+ for (var i=0; i<this.listeners.length; i++)
+ {
+ var l = this.listeners[i];
+
+ try
+ {
+ l.parent.removeEventListener(l.eventId, l.listener, l.capturing);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("tabContext.unregisterAllListeners; (" + l.eventId +
+ ") " + e, e);
+ }
+ }
+ }
+
+ this.listeners = null;
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return Firebug.TabContext;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/tabWatcher.js b/content/firebug/chrome/tabWatcher.js
index 06c95f2..1066d8a 100644
--- a/content/firebug/chrome/tabWatcher.js
+++ b/content/firebug/chrome/tabWatcher.js
@@ -1,1302 +1,1302 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/firefox",
- "firebug/lib/xpcom",
- "firebug/net/requestObserver",
- "firebug/lib/events",
- "firebug/lib/url",
- "firebug/lib/http",
- "firebug/chrome/window",
- "firebug/lib/string",
- "firebug/lib/array",
- "firebug/trace/debug",
- "firebug/trace/traceListener",
- "firebug/trace/traceModule",
- "firebug/chrome/tabContext",
-],
-function(Obj, Firebug, Firefox, Xpcom, HttpRequestObserver, Events, Url, Http, Win,
- Str, Arr, Debug, TraceListener, TraceModule) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const nsIWebNavigation = Ci.nsIWebNavigation;
-const nsIWebProgressListener = Ci.nsIWebProgressListener;
-const nsIWebProgress = Ci.nsIWebProgress;
-const nsISupportsWeakReference = Ci.nsISupportsWeakReference;
-const nsISupports = Ci.nsISupports;
-const nsIURI = Ci.nsIURI;
-
-const NOTIFY_STATE_DOCUMENT = nsIWebProgress.NOTIFY_STATE_DOCUMENT;
-
-const STATE_IS_WINDOW = nsIWebProgressListener.STATE_IS_WINDOW;
-const STATE_IS_DOCUMENT = nsIWebProgressListener.STATE_IS_DOCUMENT;
-const STATE_IS_REQUEST = nsIWebProgressListener.STATE_IS_REQUEST;
-
-const STATE_START = nsIWebProgressListener.STATE_START;
-const STATE_STOP = nsIWebProgressListener.STATE_STOP;
-const STATE_TRANSFERRING = nsIWebProgressListener.STATE_TRANSFERRING;
-
-const STOP_ALL = nsIWebNavigation.STOP_ALL;
-
-const dummyURI = "about:layout-dummy-request";
-const aboutBlank = "about:blank";
-
-// ********************************************************************************************* //
-// Globals
-
-var contexts = [];
-
-var showContextTimeout = 200;
-
-// ********************************************************************************************* //
-
-/**
- * @object TabWatcher object is responsible for monitoring page load/unload events
- * and triggering proper Firebug UI refresh by firing events. This object is also
- * responsible for creation of a context object that contains meta-data about currently
- * debugged page.
- */
-Firebug.TabWatcher = Obj.extend(new Firebug.Listener(),
-/** @lends Firebug.TabWatcher */
-{
- // Store contexts where they can be accessed externally
- contexts: contexts,
-
- initialize: function()
- {
- this.traceListener = new TraceListener("->", "DBG_WINDOWS", true);
- TraceModule.addListener(this.traceListener);
-
- HttpRequestObserver.addObserver(TabWatcherHttpObserver, "firebug-http-event", false);
- },
-
- initializeUI: function()
- {
- var tabBrowser = Firefox.getElementById("content");
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("-> tabWatcher initializeUI "+tabBrowser);
-
- if (tabBrowser)
- tabBrowser.addProgressListener(TabProgressListener);
- },
-
- destroy: function()
- {
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher destroy");
-
- this.shuttingDown = true;
-
- HttpRequestObserver.removeObserver(TabWatcherHttpObserver, "firebug-http-event");
-
- var tabBrowser = Firefox.getElementById("content");
- if (tabBrowser)
- {
- try
- {
- // Exception thrown: tabBrowser.removeProgressListener is not a function
- // when Firebug is in detached state and the origin browser window is closed.
- tabBrowser.removeProgressListener(TabProgressListener);
- }
- catch (e)
- {
- FBTrace.sysout("tabWatcher.destroy; EXCEPTION " + e, e);
- }
-
- var browsers = Firefox.getBrowsers();
- for (var i = 0; i < browsers.length; ++i)
- {
- var browser = browsers[i];
- this.unwatchTopWindow(browser.contentWindow);
- unregisterFrameListener(browser);
- }
- }
-
- TraceModule.removeListener(this.traceListener);
-
- var listeners = TabWatcherUnloader.listeners;
- if (listeners.length > 0)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("-> tabWatcher.destroy; ERROR unregistered listeners! (" +
- listeners.length + ")", listeners);
- }
-
- TabWatcherUnloader.unregisterAll();
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /**
- * Called when tabBrowser browsers get a new location OR when we get a explicit user op
- * to open Firebug.
- * Attaches to a top-level window. Creates context unless we just re-activated on an
- * existing context.
- */
- watchTopWindow: function(win, uri, userCommands)
- {
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher.watchTopWindow for: " +
- (uri instanceof nsIURI?uri.spec:uri) + ", tab: " +
- Win.getWindowProxyIdForWindow(win));
-
- if (!win)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("-> tabWatcher.watchTopWindow should not have a null window!");
- return false;
- }
-
- // Do not use Firefox.getCurrentBrowser(); since the current tab can be already
- // different from what is passed into this function (see issue 4681)
- // Can be also null, if the window is just closing.
- var selectedBrowser = Win.getBrowserByWindow(win);
-
- var context = this.getContextByWindow(win);
- if (context) // then we've looked at this window before in this FF session...
- {
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("-> tabWatcher.watchTopWindow context exists "+context.getName());
-
- if (!this.shouldShowContext(context))
- {
- // ...but now it is not wanted.
- if (context.browser)
- delete context.browser.showFirebug;
- this.unwatchContext(win, context);
-
- return; // did not create a context
- }
-
- // Special case for about:blank (see issue 5120)
- // HTML panel's edit mode can cause onStateChange changes and context
- // recreation.
- if (context.loaded && context == Firebug.currentContext &&
- context.getName() == "about:blank")
- {
- FBTrace.sysout("tabWatcher.watchTopWindow; page already watched");
- return;
- }
- }
- else // then we've not looked this window in this session
- {
- // decide whether this window will be debugged or not
- var url = (uri instanceof nsIURI) ? uri.spec : uri;
- if (!this.shouldCreateContext(selectedBrowser, url, userCommands))
- {
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("-> tabWatcher will not create context ");
-
- delete selectedBrowser.showFirebug;
- this.watchContext(win, null);
-
- return false; // we did not create a context
- }
-
- var browser = this.getBrowserByWindow(win);
-
- context = this.createContext(win, browser, Firebug.getContextType());
- }
-
- if (win instanceof Ci.nsIDOMWindow && win.parent == win && context)
- {
- // xxxHonza: This place can be called multiple times for one window, so
- // make sure event listeners are not registered twice.
- // There should be a better way to find out whether the listeners are actually
- // registered for the window.
- context.removeEventListener(win, "pageshow", onLoadWindowContent,
- onLoadWindowContent.capturing);
- context.removeEventListener(win, "DOMContentLoaded", onLoadWindowContent,
- onLoadWindowContent.capturing);
-
- // Re-register again since it could have been done too soon before.
- context.addEventListener(win, "pageshow", onLoadWindowContent,
- onLoadWindowContent.capturing);
- context.addEventListener(win, "DOMContentLoaded", onLoadWindowContent,
- onLoadWindowContent.capturing);
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher.watchTopWindow addEventListener for pageshow, " +
- "DomContentLoaded " + Win.safeGetWindowLocation(win));
- }
-
- // Dispatch watchWindow for the outer most DOM window
- this.watchWindow(win, context);
-
- // This is one of two places that loaded is set. The other is in watchLoadedTopWindow
- if (context && !context.loaded)
- {
- context.loaded = !context.browser.webProgress.isLoadingDocument;
-
- // If the loaded flag is set, the proper event should be dispatched.
- if (context.loaded)
- Events.dispatch(this.fbListeners, "loadedContext", [context]);
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher context " +
- (context.loaded ? '*** LOADED ***' : 'isLoadingDocument') +
- " in watchTopWindow, id: "+context.uid+", uri: "+
- (uri instanceof nsIURI ? uri.spec : uri));
- }
-
- if (context && !context.loaded && !context.showContextTimeout)
- {
- this.rushShowContextTimeout(win, context, 20);
- }
- else
- {
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> watchTopWindow context.loaded:" + context.loaded + " for " +
- context.getName());
-
- this.rushShowContext(win, context);
- }
-
- return context; // we did create or find a context
- },
-
- rushShowContextTimeout: function(win, context, tryAgain)
- {
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> rushShowContextTimeout: tryAgain: " + tryAgain);
-
- // still loading, we want to showContext one time but not too aggressively
- var handler = Obj.bindFixed(function delayShowContext()
- {
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> watchTopWindow delayShowContext id:" +
- context.showContextTimeout, context);
-
- if (context.browser && context.browser.webProgress.isLoadingDocument && --tryAgain > 0)
- {
- this.rushShowContextTimeout(win, context, tryAgain);
- return;
- }
-
- // Sometimes context.window is not defined, especially when running tests.
- if (context.window)
- {
- this.rushShowContext(win, context); // calls showContext
- }
- else
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("tabWatcher watchTopWindow no context.window " +
- (context.browser? context.browser.currentURI.spec :
- " and no context.browser"));
- }
- }, this);
-
- context.showContextTimeout = window.setTimeout(handler, showContextTimeout);
- },
-
- rushShowContext: function(win, context)
- {
- // then the timeout even has not run, we'll not need it after all.
- if (context.showContextTimeout)
- clearTimeout(context.showContextTimeout);
- delete context.showContextTimeout;
-
- // Call showContext only for currently active tab.
- var currentURI = Firefox.getCurrentURI();
- if (!currentURI || currentURI.spec != context.browser.currentURI.spec)
- {
- if (FBTrace.DBG_WINDOWS)
- {
- FBTrace.sysout("-> rushShowContext: Do not show context as it's not " +
- "the active tab: " + context.browser.currentURI.spec);
- }
- return;
- }
-
- this.watchContext(win, context); // calls showContext
- },
-
- // Listeners decide to show or not
- shouldShowContext: function(context)
- {
- if (Events.dispatch2(this.fbListeners, "shouldShowContext", [context]))
- return true;
- else
- return false;
- },
-
- // Listeners given force-in and veto on URIs/Window.
- shouldCreateContext: function(browser, url, userCommands)
- {
- // called when win has no context, answers the question: create one, true or false?
-
- if (!this.fbListeners)
- return userCommands;
-
- // Do not Create if any Listener says true to shouldNotCreateContext
- if (Events.dispatch2(this.fbListeners, "shouldNotCreateContext",
- [browser, url, userCommands]))
- {
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("-> shouldNotCreateContext vetos create context for: " + url);
- return false;
- }
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("-> shouldCreateContext FBLISTENERS", this.fbListeners);
-
- // Create if any listener says true to showCreateContext
- if (Events.dispatch2(this.fbListeners, "shouldCreateContext",
- [browser, url, userCommands]))
- {
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("-> shouldCreateContext with user: "+userCommands+
- " one listener says yes to "+ url, this.fbListeners);
- return true;
- }
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("-> shouldCreateContext with user: "+userCommands +
- " no opinion for: "+ url);
-
- // create if user said so and no one else has an opinion.
- return userCommands;
- },
-
- createContext: function(win, browser, contextType)
- {
- // If the page is reloaded, store the persisted state from the previous
- // page on the new context
- var persistedState = browser.persistedState;
- delete browser.persistedState;
- var location = Win.safeGetWindowLocation(win).toString();
- //if (!persistedState || persistedState.location != location)
- // persistedState = null;
-
- // xxxHonza, xxxJJB: web application detection. Based on domain check.
- var prevDomain = persistedState ? Url.getDomain(persistedState.location) : null;
- var domain = Url.getDomain(location);
- // Remove this, see 3484
- //if (!persistedState || prevDomain != domain)
- // persistedState = null;
-
- // The proper instance of Firebug.chrome object (different for detached Firebug and
- // accessible as Firebug.chrome property) must be used for the context object.
- // (the global context object Firebug.currentContext is also different for
- // detached firebug).
- var context = new contextType(win, browser, Firebug.chrome, persistedState);
- contexts.push(context);
-
- context.uid = Obj.getUniqueId();
-
- browser.showFirebug = true; // this is the only place we should set showFirebug.
-
- if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ACTIVATION)
- {
- FBTrace.sysout("-> tabWatcher *** INIT *** context, id: " + context.uid +
- ", " + context.getName() + " browser " + browser.currentURI.spec +
- " Firebug.chrome.window: " + Firebug.chrome.window.location +
- " context.window: " + Win.safeGetWindowLocation(context.window));
- }
-
- Events.dispatch(this.fbListeners, "initContext", [context, persistedState]);
-
- return context;
- },
-
- /**
- * Called once the document within a tab is completely loaded.
- */
- watchLoadedTopWindow: function(win)
- {
- var isSystem = Url.isSystemPage(win);
-
- var context = this.getContextByWindow(win);
- if (context && !context.window)
- {
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher.watchLoadedTopWindow bailing !!!, context.window: " +
- context.window + ", isSystem: " + isSystem);
-
- this.unwatchTopWindow(win);
- this.watchContext(win, null, isSystem);
- return;
- }
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> watchLoadedTopWindow context: " +
- (context ? (context.uid + ", loaded=" + context.loaded) : "undefined")+
- ", " + Win.safeGetWindowLocation(win));
-
- if (context && !context.loaded)
- {
- context.loaded = true;
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> Context *** LOADED *** in watchLoadedTopWindow, id: " +
- context.uid + ", uri: " + Win.safeGetWindowLocation(win));
-
- Events.dispatch(this.fbListeners, "loadedContext", [context]);
-
- // DOMContentLoaded arrived. Whether or not we did showContext at 400ms, do it now.
- this.rushShowContext(win, context);
- }
- },
-
- /**
- * Attaches to a window that may be either top-level or a frame within the page.
- */
- watchWindow: function(win, context, skipCompletedDocuments)
- {
- if (!context)
- context = this.getContextByWindow(Win.getRootWindow(win));
-
- var location = Win.safeGetWindowLocation(win);
-
- // For every window we watch, prepare for unwatch. It's OK if this is called
- // more times (see 2695).
- if (context)
- TabWatcherUnloader.registerWindow(win);
-
- try
- {
- // If the documents is already completed do not register the window
- // it should be registered already at this point
- // This condition avoids situation when "about:document-onload-blocker"
- // and STATE_START is fired for a window, which is consequently never
- // firing "unload" and so, stays registered within context.windows
- // See issue 5582 (comment #4)
- if (skipCompletedDocuments && win.document.readyState == "complete")
- return;
- }
- catch (err)
- {
- }
-
- // Unfortunately, dummy requests that trigger the call to watchWindow
- // are called several times, so we have to avoid dispatching watchWindow
- // more than once
- if (context && context.windows.indexOf(win) == -1)
- {
- context.windows.push(win);
-
- if (FBTrace.DBG_WINDOWS)
- {
- FBTrace.sysout("-> tabWatcher.watchWindow; " + Win.safeGetWindowLocation(win) +
- " [" + Win.getWindowId(win).toString() + "] " + context.windows.length +
- " - " + win.document.readyState);
- }
-
- Events.dispatch(this.fbListeners, "watchWindow", [context, win]);
-
- if (FBTrace.DBG_WINDOWS)
- {
- FBTrace.sysout("-> watchWindow for: " + location + ", context: " + context.uid);
-
- if (context)
- {
- for (var i = 0; i < context.windows.length; i++)
- FBTrace.sysout("context: " + context.uid + ", window in context: " +
- context.windows[i].location.href);
- }
- }
-
- context.addEventListener(win, "load", onLoadWindow, false);
- }
- },
-
- /**
- * Detaches from a top-level window. Destroys context
- * Called when windows are closed, or user closes firebug
- */
- unwatchTopWindow: function(win)
- {
- var context = this.getContextByWindow(win);
- if (FBTrace.DBG_WINDOWS)
- {
- FBTrace.sysout("-> tabWatcher.unwatchTopWindow for: " +
- (context ? context.getWindowLocation() : "NULL Context") +
- ", context: " + context);
- }
-
- this.unwatchContext(win, context);
-
- // Make sure all listeners ('unload' and 'pagehide') are removed.
- Win.iterateWindows(win, function(win)
- {
- TabWatcherUnloader.unregisterWindow(win);
- });
-
- // we might later allow extensions to reject unwatch
- return true;
- },
-
- /**
- * Detaches from a window, top-level or frame (interior)
- */
- unwatchWindow: function(win)
- {
- var context = this.getContextByWindow(win);
-
- if (!context)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("unwatchWindow: ERROR no context for win " +
- Win.safeGetWindowLocation(win));
- }
- return;
- }
-
- var index = context.windows.indexOf(win);
- if (FBTrace.DBG_WINDOWS)
- {
- FBTrace.sysout("-> tabWatcher.unwatchWindow; " + Win.safeGetWindowLocation(win) +
- " [" + Win.getWindowId(win).toString() + "] " + context.windows.length +
- " - " + win.document.readyState);
- }
-
- if (index != -1)
- {
- context.windows.splice(index, 1);
- Events.dispatch(this.fbListeners, "unwatchWindow", [context, win]);
- }
- },
-
- /**
- * Attaches to the window inside a browser because of user-activation
- * returns false if no context was created by the attach attempt, eg extension rejected page
- */
- watchBrowser: function(browser)
- {
- if (FBTrace.DBG_WINDOWS)
- {
- var uri = Http.safeGetURI(browser);
- FBTrace.sysout("-> tabWatcher.watchBrowser for: " +
- (uri instanceof nsIURI?uri.spec:uri));
- }
-
- registerFrameListener(browser);
-
- var shouldDispatch = this.watchTopWindow(browser.contentWindow,
- Http.safeGetURI(browser), true);
- if (shouldDispatch)
- {
- Events.dispatch(this.fbListeners, "watchBrowser", [browser]);
- return true;
- }
-
- return false;
- },
-
- /**
- * User closes Firebug
- */
- unwatchBrowser: function(browser, userCommands)
- {
- if (FBTrace.DBG_WINDOWS)
- {
- var uri = Http.safeGetURI(browser);
- FBTrace.sysout("-> tabWatcher.unwatchBrowser for: " +
- (uri instanceof nsIURI ? uri.spec : uri) + " user commands: " + userCommands +
- (browser ? "" : "NULL BROWSER"));
- }
-
- if (!browser)
- return;
-
- delete browser.showFirebug;
-
- unregisterFrameListener(browser);
-
- var shouldDispatch = this.unwatchTopWindow(browser.contentWindow);
-
- if (shouldDispatch)
- {
- Events.dispatch(this.fbListeners, "unwatchBrowser", [browser, userCommands]);
- return true;
- }
- return false;
- },
-
- // called when tabs change in firefox
- watchContext: function(win, context, isSystem)
- {
- if (this.shuttingDown)
- return;
-
- var browser = context ? context.browser : this.getBrowserByWindow(win);
- if (browser)
- browser.isSystemPage = isSystem;
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher context *** SHOW *** (watchContext), id: " +
- (context?context.uid:"null")+", uri: "+win.location.href);
-
- // context is null if we don't want to debug this browser
- Events.dispatch(this.fbListeners, "showContext", [browser, context]);
- },
-
- unwatchContext: function(win, context)
- {
- if (!context)
- {
- var browser = this.getBrowserByWindow(win);
- if (browser)
- {
- browser.persistedState = {};
- delete browser.showFirebug;
-
- // context is null if we don't want to debug this browser
- Events.dispatch(this.fbListeners, "showContext", [browser, null]);
- }
-
- Events.dispatch(this.fbListeners, "destroyContext",
- [null, (browser ? browser.persistedState : null), browser]);
- return;
- }
-
- var persistedState = {location: context.getWindowLocation()};
- context.browser.persistedState = persistedState; // store our state on FF browser elt
-
- Win.iterateWindows(context.window, function(win)
- {
- Events.dispatch(Firebug.TabWatcher.fbListeners, "unwatchWindow", [context, win]);
- });
-
- Events.dispatch(this.fbListeners, "destroyContext", [context, persistedState, context.browser]);
-
- if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ACTIVATION)
- {
- FBTrace.sysout("-> tabWatcher.unwatchContext *** DESTROY *** context " + context.uid +
- " for: " + (context.window && !context.window.closed?context.window.location :
- "no window or closed ") + " aborted: " + context.aborted);
- }
-
- context.destroy(persistedState);
-
- // Remove context from the list of contexts.
- Arr.remove(contexts, context);
-
- for (var name in context)
- delete context[name];
-
- // unwatchContext can be called on an unload event after another tab is selected
- var currentBrowser = Firefox.getCurrentBrowser();
- if (!currentBrowser.showFirebug)
- {
- // context is null if we don't want to debug this browser
- Events.dispatch(this.fbListeners, "showContext", [currentBrowser, null]);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getContextByWindow: function(winIn)
- {
- if (!winIn)
- return;
-
- var rootWindow = Win.getRootWindow(winIn);
-
- if (FBTrace.DBG_ROOT_WINDOW) // too much output to use INITIALIZE
- FBTrace.sysout("winIn: "+Win.safeGetWindowLocation(winIn).substr(0,50)+
- " rootWindow: "+Win.safeGetWindowLocation(rootWindow));
-
- if (rootWindow)
- {
- for (var i = 0; i < contexts.length; ++i)
- {
- var context = contexts[i];
- if (context.window == rootWindow)
- return context;
- }
- }
- },
-
- getContextBySandbox: function(sandbox)
- {
- for (var i = 0; i < contexts.length; ++i)
- {
- var context = contexts[i];
- if (context.sandboxes)
- {
- for (var iframe = 0; iframe < context.sandboxes.length; iframe++)
- {
- if (context.sandboxes[iframe] == sandbox)
- return context;
- }
- }
- }
- return null;
- },
-
- getContextByGlobal: function(global)
- {
- return this.getContextByWindow(global) || this.getContextBySandbox(global);
- },
-
- // deprecated, use Win.getBrowserByWindow
- getBrowserByWindow: function(win)
- {
- if (this.shuttingDown)
- return null;
-
- var browsers = Firefox.getBrowsers();
- for (var i = 0; i < browsers.length; ++i)
- {
- var browser = browsers[i];
- if (browser.contentWindow == win)
- {
- registerFrameListener(browser); // Yikes side effect!
- return browser;
- }
- }
-
- return null;
- },
-
- iterateContexts: function(fn)
- {
- for (var i = 0; i < contexts.length; ++i)
- {
- var rc = fn(contexts[i]);
- if (rc)
- return rc;
- }
- },
-
- // Called by script panel, not sure where this belongs.
- reloadPageFromMemory: function(context)
- {
- if (!context)
- context = Firebug.currentContext;
-
- if (context.browser)
- context.browser.reloadWithFlags(Ci.nsIWebNavigation.LOAD_FLAGS_CHARSET_CHANGE);
- else
- context.window.location.reload();
- },
-});
-
-// ********************************************************************************************* //
-
-var TabWatcherUnloader =
-{
- listeners: [],
-
- registerWindow: function(win)
- {
- var root = (win.parent == win);
- var eventName = (root && (win.location.href !== "about:blank")) ? "pagehide" : "unload";
- var listener = Obj.bind(root ? this.onPageHide : this.onUnload, this);
- Events.addEventListener(win, eventName, listener, false);
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher.registerWindow; addEventListener for " + eventName+
- " on " + Win.safeGetWindowLocation(win));
-
- this.listeners.push({
- window: win,
- listener: listener,
- eventName: eventName
- });
- },
-
- unregisterWindow: function(win)
- {
- var newListeners = [];
- for (var i=0; i<this.listeners.length; i++)
- {
- var listener = this.listeners[i];
- if (listener.window != win)
- {
- newListeners.push(listener);
- }
- else
- {
- Events.removeEventListener(win, listener.eventName, listener.listener, false);
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher.unregisterWindow; removeEventListener for " +
- listener.eventName + " on " + Win.safeGetWindowLocation(win));
- }
- }
- this.listeners = newListeners;
- },
-
- unregisterAll: function()
- {
- for (var i=0; i<this.listeners.length; i++)
- {
- var listener = this.listeners[i];
- Events.removeEventListener(listener.win, listener.eventName, listener.listener, false);
- }
-
- this.listeners = [];
- },
-
- onPageHide: function(event)
- {
- var win = event.currentTarget;
- this.unregisterWindow(win);
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher.Unloader; PAGE HIDE (" +
- this.listeners.length + ") " + win.location, event);
-
- onPageHideTopWindow(event);
- },
-
- onUnload: function(event)
- {
- var win = event.currentTarget;
- this.unregisterWindow(win);
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher.Unloader; PAGE UNLOAD (" +
- this.listeners.length + ") " + win.location, event);
-
- onUnloadWindow(event);
- },
-};
-
-Firebug.TabWatcherUnloader = TabWatcherUnloader;
-
-// ********************************************************************************************* //
-
-var TabProgressListener = Obj.extend(Http.BaseProgressListener,
-{
- onLocationChange: function(progress, request, uri)
- {
- // Only watch windows that are their own parent - e.g. not frames
- if (progress.DOMWindow.parent == progress.DOMWindow)
- {
- var srcWindow = Http.getWindowForRequest(request);
- var browser = srcWindow ? Firebug.TabWatcher.getBrowserByWindow(srcWindow) : null;
-
- if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ACTIVATION)
- {
- var requestFromFirebuggedWindow = browser && browser.showFirebug;
- FBTrace.sysout("-> TabProgressListener.onLocationChange "+
- progress.DOMWindow.location+" to: "+
- (uri?uri.spec:"null location")+
- (requestFromFirebuggedWindow?" from firebugged window":" no firebug"));
- }
-
- // 1) We don't want to skip about:blank since Firebug UI is not update when
- // switching to about:blank tab, see issue 4040
- //
- // 2) But we also want to skip "about:blank" in case a new tab is opened
- // (new tab is about:blank at the beggining), no context exists and Firebug
- // is suspended for all contexts, see issue5916
- // There is a workaround for this case in {@TabWatchListener.showContext]
- //
- // the onStateChange will deal with this troublesome case
- //if (uri && uri.spec === "about:blank")
- // return;
-
- // document.open() was called, the document was cleared.
- if (uri && uri.scheme === "wyciwyg")
- evictTopWindow(progress.DOMWindow, uri);
-
- if (uri)
- Firebug.TabWatcher.watchTopWindow(progress.DOMWindow, uri);
- else // the location change to a non-uri means we need to hide
- Firebug.TabWatcher.watchContext(progress.DOMWindow, null, true);
- }
- },
-
- onStateChange: function(progress, request, flag, status)
- {
- if (FBTrace.DBG_WINDOWS)
- {
- var win = progress.DOMWindow;
- FBTrace.sysout("-> TabProgressListener.onStateChanged for: " +
- Http.safeGetRequestName(request) + ", win: " + win.location.href +
- ", content URL: " + (win.document ? win.document.URL : "no content URL") +
- " " + Http.getStateDescription(flag));
- }
- }
-});
-
-// ********************************************************************************************* //
-// Obsolete
-
-var FrameProgressListener = Obj.extend(Http.BaseProgressListener,
-{
- onStateChange: function(progress, request, flag, status)
- {
- if (FBTrace.DBG_WINDOWS)
- {
- var win = progress.DOMWindow;
- FBTrace.sysout("-> FrameProgressListener.onStateChanged for: " +
- Http.safeGetRequestName(request) + ", win: " + win.location.href +
- ", content URL: " + (win.document ? win.document.URL : "no content URL") +
- " " + Http.getStateDescription(flag) + ", " + status);
- }
-
- if (flag & STATE_IS_REQUEST && flag & STATE_START)
- {
- // We need to get the hook in as soon as the new DOMWindow is created, but before
- // it starts executing any scripts in the page. After lengthy analysis, it seems
- // that the start of these "dummy" requests is the only state that works.
-
- var safeName = Http.safeGetRequestName(request);
- if (safeName && ((safeName == dummyURI) || safeName == "about:document-onload-blocker"))
- {
- var win = progress.DOMWindow;
- // Another weird edge case here - when opening a new tab with about:blank,
- // "unload" is dispatched to the document, but onLocationChange is not called
- // again, so we have to call watchTopWindow here
-
- if (win.parent == win && (win.location.href == "about:blank"))
- {
- Firebug.TabWatcher.watchTopWindow(win, win.location.href);
- return;
- }
- else
- {
- Firebug.TabWatcher.watchWindow(win, null, true);
- }
- }
- }
-
- // Later I discovered that XHTML documents don't dispatch the dummy requests, so this
- // is our best shot here at hooking them.
- if (flag & STATE_IS_DOCUMENT && flag & STATE_TRANSFERRING)
- {
- Firebug.TabWatcher.watchWindow(progress.DOMWindow);
- return;
- }
-
- }
-});
-
-// Obsolete
-// Registers frame listener for specified tab browser.
-function registerFrameListener(browser)
-{
- if (browser.frameListener)
- return;
-
- browser.frameListener = FrameProgressListener; // just a mark saying we've registered. TODO remove!
- browser.addProgressListener(FrameProgressListener);
-
- if (FBTrace.DBG_WINDOWS)
- {
- var win = browser.contentWindow;
- FBTrace.sysout("-> tabWatcher register FrameProgressListener for: "+
- Win.safeGetWindowLocation(win)+", tab: "+Win.getWindowProxyIdForWindow(win));
- }
-}
-
-function unregisterFrameListener(browser)
-{
- if (browser.frameListener)
- {
- delete browser.frameListener;
- browser.removeProgressListener(FrameProgressListener);
- }
-
- if (FBTrace.DBG_WINDOWS)
- {
- var win = browser.contentWindow;
- FBTrace.sysout("-> tabWatcher unregister FrameProgressListener for: "+
- Win.safeGetWindowLocation(win)+", tab: "+Win.getWindowProxyIdForWindow(win));
- }
-}
-
-// ********************************************************************************************* //
-
-function getRefererHeader(request)
-{
- var http = Xpcom.QI(request, Ci.nsIHttpChannel);
- var referer = null;
- http.visitRequestHeaders({
- visitHeader: function(name, value)
- {
- if (name == 'referer')
- referer = value;
- }
- });
- return referer;
-}
-
-// ********************************************************************************************* //
-
-var TabWatcherHttpObserver = Obj.extend(Object,
-{
- dispatchName: "TabWatcherHttpObserver",
-
- // nsIObserver
- observe: function(aSubject, aTopic, aData)
- {
- try
- {
- if (aTopic == "http-on-modify-request")
- {
- aSubject = aSubject.QueryInterface(Ci.nsIHttpChannel);
- this.onModifyRequest(aSubject);
- }
- }
- catch (err)
- {
- Debug.ERROR(err);
- }
- },
-
- onModifyRequest: function(request)
- {
- var win = Http.getWindowForRequest(request);
- if (win)
- var tabId = Win.getWindowProxyIdForWindow(win);
-
- // Tab watcher is only interested in tab related requests.
- if (!tabId)
- return;
-
- // Ignore redirects
- if (request.URI.spec != request.originalURI.spec)
- return;
-
- // A document request for the specified tab is here. It can be a top window
- // request (win == win.parent) or embedded iframe request.
- if (request.loadFlags & Ci.nsIHttpChannel.LOAD_DOCUMENT_URI)
- {
- if ((FBTrace.DBG_ACTIVATION || FBTrace.DBG_WINDOWS) && win == win.parent)
- {
- FBTrace.sysout("-> tabWatcher Firebug.TabWatcherHttpObserver *** START *** " +
- "document request for: " + request.URI.spec + " window for request is "+
- Win.safeGetWindowLocation(win));
- }
-
- if (win == win.parent)
- {
- // Make sure the frame listener is registered for top level window, so
- // we can get all onStateChange events and init context for all opened tabs.
- var browser = Firebug.TabWatcher.getBrowserByWindow(win);
-
- if (!browser)
- return;
-
- delete browser.FirebugLink;
-
- // then this page is opened in new tab or window
- if (Win.safeGetWindowLocation(win).toString() == "about:blank")
- {
- var referer = getRefererHeader(request);
- if (referer)
- {
- try
- {
- var srcURI = Url.makeURI(referer);
- browser.FirebugLink = {src: srcURI, dst: request.URI};
- }
- catch(e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("tabWatcher.onModifyRequest failed to make URI from "+
- referer+" because "+exc, exc);
- }
- }
- }
- else
- {
- // Here we know the source of the request is 'win'. For viral activation
- // and web app tracking
- browser.FirebugLink = {src: browser.currentURI, dst: request.URI};
- }
- if (FBTrace.DBG_ACTIVATION && browser.FirebugLink)
- FBTrace.sysout("tabWatcher.onModifyRequest created FirebugLink from "+
- browser.FirebugLink.src.spec + " to "+browser.FirebugLink.dst.spec);
- }
- }
- },
-
- QueryInterface : function (aIID)
- {
- if (aIID.equals(Ci.nsIObserver) ||
- aIID.equals(Ci.nsISupportsWeakReference) ||
- aIID.equals(Ci.nsISupports))
- {
- return this;
- }
-
- throw Components.results.NS_NOINTERFACE;
- }
-});
-
-// ********************************************************************************************* //
-// Local Helpers
-
-function onPageHideTopWindow(event)
-{
- var win = event.currentTarget; // we set the handler on a window
- var doc = event.target; // the pagehide is sent to the document.
- if (doc.defaultView != win)
- return; // ignore page hides on interior windows
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher pagehide event.currentTarget "+
- Win.safeGetWindowLocation(win), event);
-
- // http://developer.mozilla.org/en/docs/Using_Firefox_1.5_caching#pagehide_event
- // then the page is cached and there cannot be an unload handler
- if (event.persisted || Win.safeGetWindowLocation(win) === aboutBlank)
- {
- // see Bug 484710 - add pageIgnore event for pages that are ejected from the bfcache
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher onPageHideTopWindow for: " +
- Win.safeGetWindowLocation(win));
-
- Firebug.TabWatcher.unwatchTopWindow(win);
- }
- else
- {
- // Page is not cached, there may be an unload
- Events.addEventListener(win, "unload", onUnloadTopWindow, true);
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher onPageHideTopWindow set unload handler " +
- Win.safeGetWindowLocation(win));
- }
-}
-
-function evictTopWindow(win, uri)
-{
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher evictTopWindow win "+Win.safeGetWindowLocation(win) +
- " uri "+uri.spec);
-
- Firebug.TabWatcher.unwatchTopWindow(win);
-}
-
-function onUnloadTopWindow(event)
-{
- var win = event.currentTarget;
- Events.removeEventListener(win, "unload", onUnloadTopWindow, true);
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher onUnloadTopWindow for: " + Win.safeGetWindowLocation(win) +
- " typeof: " + typeof(win));
-
- Firebug.TabWatcher.unwatchTopWindow(win);
-}
-
-function onLoadWindowContent(event)
-{
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher.onLoadWindowContent event.type: " + event.type);
-
- var win = event.currentTarget;
- try
- {
- Events.removeEventListener(win, "pageshow", onLoadWindowContent,
- onLoadWindowContent.capturing);
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher.onLoadWindowContent pageshow removeEventListener " +
- Win.safeGetWindowLocation(win));
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("-> tabWatcher.onLoadWindowContent removeEventListener pageshow fails",
- exc);
- }
-
- try
- {
- Events.removeEventListener(win, "DOMContentLoaded", onLoadWindowContent,
- onLoadWindowContent.capturing);
-
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher.onLoadWindowContent DOMContentLoaded " +
- "removeEventListener " + Win.safeGetWindowLocation(win));
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("-> tabWatcher.onLoadWindowContent removeEventListener " +
- "DOMContentLoaded fails", exc);
- }
-
- // Signal that we got the onLoadWindowContent event. This prevents the
- // FrameProgressListener from sending it.
- var context = Firebug.TabWatcher.getContextByWindow(win);
- if (context)
- context.onLoadWindowContent = true;
-
- try
- {
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("-> tabWatcher.onLoadWindowContent:" +
- Win.safeGetWindowLocation(win), win);
-
- Firebug.TabWatcher.watchLoadedTopWindow(win);
- }
- catch(exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("-> tabWatchter onLoadWindowContent FAILS: "+exc, exc);
- }
-}
-
-onLoadWindowContent.capturing = false;
-
-function onUnloadWindow(event)
-{
- var win = event.currentTarget;
- var eventType = "unload";
-
- if (FBTrace.DBG_WINDOWS)
- {
- FBTrace.sysout("-> tabWatcher.onUnloadWindow for: " + Win.safeGetWindowLocation(win) +
- " removeEventListener: "+ eventType);
- }
-
- Firebug.TabWatcher.unwatchWindow(win);
-}
-
-// ********************************************************************************************* //
-
-function onLoadWindow(event)
-{
- var win = event.currentTarget;
-
- Events.removeEventListener(win, "load", onLoadWindow, false);
-
- var context = Firebug.TabWatcher.getContextByWindow(win);
- if (!context)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("-> onLoadWindow: ERROR No context for loaded window!");
- return;
- }
-
- Events.dispatch(Firebug.TabWatcher.fbListeners, "loadWindow", [context, win]);
-}
-
-// ********************************************************************************************* //
-
-window.__defineGetter__("TabWatcher", function deprecatedTabWatcher()
-{
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("deprecated TabWatcher global accessed");
-
- return Firebug.TabWatcher;
-});
-
-// ********************************************************************************************* //
-// Registration
-
-return Firebug.TabWatcher;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/firefox",
+ "firebug/lib/xpcom",
+ "firebug/net/requestObserver",
+ "firebug/lib/events",
+ "firebug/lib/url",
+ "firebug/lib/http",
+ "firebug/chrome/window",
+ "firebug/lib/string",
+ "firebug/lib/array",
+ "firebug/trace/debug",
+ "firebug/trace/traceListener",
+ "firebug/trace/traceModule",
+ "firebug/chrome/tabContext",
+],
+function(Obj, Firebug, Firefox, Xpcom, HttpRequestObserver, Events, Url, Http, Win,
+ Str, Arr, Debug, TraceListener, TraceModule) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const nsIWebNavigation = Ci.nsIWebNavigation;
+const nsIWebProgressListener = Ci.nsIWebProgressListener;
+const nsIWebProgress = Ci.nsIWebProgress;
+const nsISupportsWeakReference = Ci.nsISupportsWeakReference;
+const nsISupports = Ci.nsISupports;
+const nsIURI = Ci.nsIURI;
+
+const NOTIFY_STATE_DOCUMENT = nsIWebProgress.NOTIFY_STATE_DOCUMENT;
+
+const STATE_IS_WINDOW = nsIWebProgressListener.STATE_IS_WINDOW;
+const STATE_IS_DOCUMENT = nsIWebProgressListener.STATE_IS_DOCUMENT;
+const STATE_IS_REQUEST = nsIWebProgressListener.STATE_IS_REQUEST;
+
+const STATE_START = nsIWebProgressListener.STATE_START;
+const STATE_STOP = nsIWebProgressListener.STATE_STOP;
+const STATE_TRANSFERRING = nsIWebProgressListener.STATE_TRANSFERRING;
+
+const STOP_ALL = nsIWebNavigation.STOP_ALL;
+
+const dummyURI = "about:layout-dummy-request";
+const aboutBlank = "about:blank";
+
+// ********************************************************************************************* //
+// Globals
+
+var contexts = [];
+
+var showContextTimeout = 200;
+
+// ********************************************************************************************* //
+
+/**
+ * @object TabWatcher object is responsible for monitoring page load/unload events
+ * and triggering proper Firebug UI refresh by firing events. This object is also
+ * responsible for creation of a context object that contains meta-data about currently
+ * debugged page.
+ */
+Firebug.TabWatcher = Obj.extend(new Firebug.Listener(),
+/** @lends Firebug.TabWatcher */
+{
+ // Store contexts where they can be accessed externally
+ contexts: contexts,
+
+ initialize: function()
+ {
+ this.traceListener = new TraceListener("->", "DBG_WINDOWS", true);
+ TraceModule.addListener(this.traceListener);
+
+ HttpRequestObserver.addObserver(TabWatcherHttpObserver, "firebug-http-event", false);
+ },
+
+ initializeUI: function()
+ {
+ var tabBrowser = Firefox.getElementById("content");
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("-> tabWatcher initializeUI "+tabBrowser);
+
+ if (tabBrowser)
+ tabBrowser.addProgressListener(TabProgressListener);
+ },
+
+ destroy: function()
+ {
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher destroy");
+
+ this.shuttingDown = true;
+
+ HttpRequestObserver.removeObserver(TabWatcherHttpObserver, "firebug-http-event");
+
+ var tabBrowser = Firefox.getElementById("content");
+ if (tabBrowser)
+ {
+ try
+ {
+ // Exception thrown: tabBrowser.removeProgressListener is not a function
+ // when Firebug is in detached state and the origin browser window is closed.
+ tabBrowser.removeProgressListener(TabProgressListener);
+ }
+ catch (e)
+ {
+ FBTrace.sysout("tabWatcher.destroy; EXCEPTION " + e, e);
+ }
+
+ var browsers = Firefox.getBrowsers();
+ for (var i = 0; i < browsers.length; ++i)
+ {
+ var browser = browsers[i];
+ this.unwatchTopWindow(browser.contentWindow);
+ unregisterFrameListener(browser);
+ }
+ }
+
+ TraceModule.removeListener(this.traceListener);
+
+ var listeners = TabWatcherUnloader.listeners;
+ if (listeners.length > 0)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("-> tabWatcher.destroy; ERROR unregistered listeners! (" +
+ listeners.length + ")", listeners);
+ }
+
+ TabWatcherUnloader.unregisterAll();
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /**
+ * Called when tabBrowser browsers get a new location OR when we get a explicit user op
+ * to open Firebug.
+ * Attaches to a top-level window. Creates context unless we just re-activated on an
+ * existing context.
+ */
+ watchTopWindow: function(win, uri, userCommands)
+ {
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher.watchTopWindow for: " +
+ (uri instanceof nsIURI?uri.spec:uri) + ", tab: " +
+ Win.getWindowProxyIdForWindow(win));
+
+ if (!win)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("-> tabWatcher.watchTopWindow should not have a null window!");
+ return false;
+ }
+
+ // Do not use Firefox.getCurrentBrowser(); since the current tab can be already
+ // different from what is passed into this function (see issue 4681)
+ // Can be also null, if the window is just closing.
+ var selectedBrowser = Win.getBrowserByWindow(win);
+
+ var context = this.getContextByWindow(win);
+ if (context) // then we've looked at this window before in this FF session...
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("-> tabWatcher.watchTopWindow context exists "+context.getName());
+
+ if (!this.shouldShowContext(context))
+ {
+ // ...but now it is not wanted.
+ if (context.browser)
+ delete context.browser.showFirebug;
+ this.unwatchContext(win, context);
+
+ return; // did not create a context
+ }
+
+ // Special case for about:blank (see issue 5120)
+ // HTML panel's edit mode can cause onStateChange changes and context
+ // recreation.
+ if (context.loaded && context == Firebug.currentContext &&
+ context.getName() == "about:blank")
+ {
+ FBTrace.sysout("tabWatcher.watchTopWindow; page already watched");
+ return;
+ }
+ }
+ else // then we've not looked this window in this session
+ {
+ // decide whether this window will be debugged or not
+ var url = (uri instanceof nsIURI) ? uri.spec : uri;
+ if (!this.shouldCreateContext(selectedBrowser, url, userCommands))
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("-> tabWatcher will not create context ");
+
+ delete selectedBrowser.showFirebug;
+ this.watchContext(win, null);
+
+ return false; // we did not create a context
+ }
+
+ var browser = this.getBrowserByWindow(win);
+
+ context = this.createContext(win, browser, Firebug.getContextType());
+ }
+
+ if (win instanceof Ci.nsIDOMWindow && win.parent == win && context)
+ {
+ // xxxHonza: This place can be called multiple times for one window, so
+ // make sure event listeners are not registered twice.
+ // There should be a better way to find out whether the listeners are actually
+ // registered for the window.
+ context.removeEventListener(win, "pageshow", onLoadWindowContent,
+ onLoadWindowContent.capturing);
+ context.removeEventListener(win, "DOMContentLoaded", onLoadWindowContent,
+ onLoadWindowContent.capturing);
+
+ // Re-register again since it could have been done too soon before.
+ context.addEventListener(win, "pageshow", onLoadWindowContent,
+ onLoadWindowContent.capturing);
+ context.addEventListener(win, "DOMContentLoaded", onLoadWindowContent,
+ onLoadWindowContent.capturing);
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher.watchTopWindow addEventListener for pageshow, " +
+ "DomContentLoaded " + Win.safeGetWindowLocation(win));
+ }
+
+ // Dispatch watchWindow for the outer most DOM window
+ this.watchWindow(win, context);
+
+ // This is one of two places that loaded is set. The other is in watchLoadedTopWindow
+ if (context && !context.loaded)
+ {
+ context.loaded = !context.browser.webProgress.isLoadingDocument;
+
+ // If the loaded flag is set, the proper event should be dispatched.
+ if (context.loaded)
+ Events.dispatch(this.fbListeners, "loadedContext", [context]);
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher context " +
+ (context.loaded ? '*** LOADED ***' : 'isLoadingDocument') +
+ " in watchTopWindow, id: "+context.uid+", uri: "+
+ (uri instanceof nsIURI ? uri.spec : uri));
+ }
+
+ if (context && !context.loaded && !context.showContextTimeout)
+ {
+ this.rushShowContextTimeout(win, context, 20);
+ }
+ else
+ {
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> watchTopWindow context.loaded:" + context.loaded + " for " +
+ context.getName());
+
+ this.rushShowContext(win, context);
+ }
+
+ return context; // we did create or find a context
+ },
+
+ rushShowContextTimeout: function(win, context, tryAgain)
+ {
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> rushShowContextTimeout: tryAgain: " + tryAgain);
+
+ // still loading, we want to showContext one time but not too aggressively
+ var handler = Obj.bindFixed(function delayShowContext()
+ {
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> watchTopWindow delayShowContext id:" +
+ context.showContextTimeout, context);
+
+ if (context.browser && context.browser.webProgress.isLoadingDocument && --tryAgain > 0)
+ {
+ this.rushShowContextTimeout(win, context, tryAgain);
+ return;
+ }
+
+ // Sometimes context.window is not defined, especially when running tests.
+ if (context.window)
+ {
+ this.rushShowContext(win, context); // calls showContext
+ }
+ else
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("tabWatcher watchTopWindow no context.window " +
+ (context.browser? context.browser.currentURI.spec :
+ " and no context.browser"));
+ }
+ }, this);
+
+ context.showContextTimeout = window.setTimeout(handler, showContextTimeout);
+ },
+
+ rushShowContext: function(win, context)
+ {
+ // then the timeout even has not run, we'll not need it after all.
+ if (context.showContextTimeout)
+ clearTimeout(context.showContextTimeout);
+ delete context.showContextTimeout;
+
+ // Call showContext only for currently active tab.
+ var currentURI = Firefox.getCurrentURI();
+ if (!currentURI || currentURI.spec != context.browser.currentURI.spec)
+ {
+ if (FBTrace.DBG_WINDOWS)
+ {
+ FBTrace.sysout("-> rushShowContext: Do not show context as it's not " +
+ "the active tab: " + context.browser.currentURI.spec);
+ }
+ return;
+ }
+
+ this.watchContext(win, context); // calls showContext
+ },
+
+ // Listeners decide to show or not
+ shouldShowContext: function(context)
+ {
+ if (Events.dispatch2(this.fbListeners, "shouldShowContext", [context]))
+ return true;
+ else
+ return false;
+ },
+
+ // Listeners given force-in and veto on URIs/Window.
+ shouldCreateContext: function(browser, url, userCommands)
+ {
+ // called when win has no context, answers the question: create one, true or false?
+
+ if (!this.fbListeners)
+ return userCommands;
+
+ // Do not Create if any Listener says true to shouldNotCreateContext
+ if (Events.dispatch2(this.fbListeners, "shouldNotCreateContext",
+ [browser, url, userCommands]))
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("-> shouldNotCreateContext vetos create context for: " + url);
+ return false;
+ }
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("-> shouldCreateContext FBLISTENERS", this.fbListeners);
+
+ // Create if any listener says true to showCreateContext
+ if (Events.dispatch2(this.fbListeners, "shouldCreateContext",
+ [browser, url, userCommands]))
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("-> shouldCreateContext with user: "+userCommands+
+ " one listener says yes to "+ url, this.fbListeners);
+ return true;
+ }
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("-> shouldCreateContext with user: "+userCommands +
+ " no opinion for: "+ url);
+
+ // create if user said so and no one else has an opinion.
+ return userCommands;
+ },
+
+ createContext: function(win, browser, contextType)
+ {
+ // If the page is reloaded, store the persisted state from the previous
+ // page on the new context
+ var persistedState = browser.persistedState;
+ delete browser.persistedState;
+ var location = Win.safeGetWindowLocation(win).toString();
+ //if (!persistedState || persistedState.location != location)
+ // persistedState = null;
+
+ // xxxHonza, xxxJJB: web application detection. Based on domain check.
+ var prevDomain = persistedState ? Url.getDomain(persistedState.location) : null;
+ var domain = Url.getDomain(location);
+ // Remove this, see 3484
+ //if (!persistedState || prevDomain != domain)
+ // persistedState = null;
+
+ // The proper instance of Firebug.chrome object (different for detached Firebug and
+ // accessible as Firebug.chrome property) must be used for the context object.
+ // (the global context object Firebug.currentContext is also different for
+ // detached firebug).
+ var context = new contextType(win, browser, Firebug.chrome, persistedState);
+ contexts.push(context);
+
+ context.uid = Obj.getUniqueId();
+
+ browser.showFirebug = true; // this is the only place we should set showFirebug.
+
+ if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ACTIVATION)
+ {
+ FBTrace.sysout("-> tabWatcher *** INIT *** context, id: " + context.uid +
+ ", " + context.getName() + " browser " + browser.currentURI.spec +
+ " Firebug.chrome.window: " + Firebug.chrome.window.location +
+ " context.window: " + Win.safeGetWindowLocation(context.window));
+ }
+
+ Events.dispatch(this.fbListeners, "initContext", [context, persistedState]);
+
+ return context;
+ },
+
+ /**
+ * Called once the document within a tab is completely loaded.
+ */
+ watchLoadedTopWindow: function(win)
+ {
+ var isSystem = Url.isSystemPage(win);
+
+ var context = this.getContextByWindow(win);
+ if (context && !context.window)
+ {
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher.watchLoadedTopWindow bailing !!!, context.window: " +
+ context.window + ", isSystem: " + isSystem);
+
+ this.unwatchTopWindow(win);
+ this.watchContext(win, null, isSystem);
+ return;
+ }
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> watchLoadedTopWindow context: " +
+ (context ? (context.uid + ", loaded=" + context.loaded) : "undefined")+
+ ", " + Win.safeGetWindowLocation(win));
+
+ if (context && !context.loaded)
+ {
+ context.loaded = true;
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> Context *** LOADED *** in watchLoadedTopWindow, id: " +
+ context.uid + ", uri: " + Win.safeGetWindowLocation(win));
+
+ Events.dispatch(this.fbListeners, "loadedContext", [context]);
+
+ // DOMContentLoaded arrived. Whether or not we did showContext at 400ms, do it now.
+ this.rushShowContext(win, context);
+ }
+ },
+
+ /**
+ * Attaches to a window that may be either top-level or a frame within the page.
+ */
+ watchWindow: function(win, context, skipCompletedDocuments)
+ {
+ if (!context)
+ context = this.getContextByWindow(Win.getRootWindow(win));
+
+ var location = Win.safeGetWindowLocation(win);
+
+ // For every window we watch, prepare for unwatch. It's OK if this is called
+ // more times (see 2695).
+ if (context)
+ TabWatcherUnloader.registerWindow(win);
+
+ try
+ {
+ // If the documents is already completed do not register the window
+ // it should be registered already at this point
+ // This condition avoids situation when "about:document-onload-blocker"
+ // and STATE_START is fired for a window, which is consequently never
+ // firing "unload" and so, stays registered within context.windows
+ // See issue 5582 (comment #4)
+ if (skipCompletedDocuments && win.document.readyState == "complete")
+ return;
+ }
+ catch (err)
+ {
+ }
+
+ // Unfortunately, dummy requests that trigger the call to watchWindow
+ // are called several times, so we have to avoid dispatching watchWindow
+ // more than once
+ if (context && context.windows.indexOf(win) == -1)
+ {
+ context.windows.push(win);
+
+ if (FBTrace.DBG_WINDOWS)
+ {
+ FBTrace.sysout("-> tabWatcher.watchWindow; " + Win.safeGetWindowLocation(win) +
+ " [" + Win.getWindowId(win).toString() + "] " + context.windows.length +
+ " - " + win.document.readyState);
+ }
+
+ Events.dispatch(this.fbListeners, "watchWindow", [context, win]);
+
+ if (FBTrace.DBG_WINDOWS)
+ {
+ FBTrace.sysout("-> watchWindow for: " + location + ", context: " + context.uid);
+
+ if (context)
+ {
+ for (var i = 0; i < context.windows.length; i++)
+ FBTrace.sysout("context: " + context.uid + ", window in context: " +
+ context.windows[i].location.href);
+ }
+ }
+
+ context.addEventListener(win, "load", onLoadWindow, false);
+ }
+ },
+
+ /**
+ * Detaches from a top-level window. Destroys context
+ * Called when windows are closed, or user closes firebug
+ */
+ unwatchTopWindow: function(win)
+ {
+ var context = this.getContextByWindow(win);
+ if (FBTrace.DBG_WINDOWS)
+ {
+ FBTrace.sysout("-> tabWatcher.unwatchTopWindow for: " +
+ (context ? context.getWindowLocation() : "NULL Context") +
+ ", context: " + context);
+ }
+
+ this.unwatchContext(win, context);
+
+ // Make sure all listeners ('unload' and 'pagehide') are removed.
+ Win.iterateWindows(win, function(win)
+ {
+ TabWatcherUnloader.unregisterWindow(win);
+ });
+
+ // we might later allow extensions to reject unwatch
+ return true;
+ },
+
+ /**
+ * Detaches from a window, top-level or frame (interior)
+ */
+ unwatchWindow: function(win)
+ {
+ var context = this.getContextByWindow(win);
+
+ if (!context)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("unwatchWindow: ERROR no context for win " +
+ Win.safeGetWindowLocation(win));
+ }
+ return;
+ }
+
+ var index = context.windows.indexOf(win);
+ if (FBTrace.DBG_WINDOWS)
+ {
+ FBTrace.sysout("-> tabWatcher.unwatchWindow; " + Win.safeGetWindowLocation(win) +
+ " [" + Win.getWindowId(win).toString() + "] " + context.windows.length +
+ " - " + win.document.readyState);
+ }
+
+ if (index != -1)
+ {
+ context.windows.splice(index, 1);
+ Events.dispatch(this.fbListeners, "unwatchWindow", [context, win]);
+ }
+ },
+
+ /**
+ * Attaches to the window inside a browser because of user-activation
+ * returns false if no context was created by the attach attempt, eg extension rejected page
+ */
+ watchBrowser: function(browser)
+ {
+ if (FBTrace.DBG_WINDOWS)
+ {
+ var uri = Http.safeGetURI(browser);
+ FBTrace.sysout("-> tabWatcher.watchBrowser for: " +
+ (uri instanceof nsIURI?uri.spec:uri));
+ }
+
+ registerFrameListener(browser);
+
+ var shouldDispatch = this.watchTopWindow(browser.contentWindow,
+ Http.safeGetURI(browser), true);
+ if (shouldDispatch)
+ {
+ Events.dispatch(this.fbListeners, "watchBrowser", [browser]);
+ return true;
+ }
+
+ return false;
+ },
+
+ /**
+ * User closes Firebug
+ */
+ unwatchBrowser: function(browser, userCommands)
+ {
+ if (FBTrace.DBG_WINDOWS)
+ {
+ var uri = Http.safeGetURI(browser);
+ FBTrace.sysout("-> tabWatcher.unwatchBrowser for: " +
+ (uri instanceof nsIURI ? uri.spec : uri) + " user commands: " + userCommands +
+ (browser ? "" : "NULL BROWSER"));
+ }
+
+ if (!browser)
+ return;
+
+ delete browser.showFirebug;
+
+ unregisterFrameListener(browser);
+
+ var shouldDispatch = this.unwatchTopWindow(browser.contentWindow);
+
+ if (shouldDispatch)
+ {
+ Events.dispatch(this.fbListeners, "unwatchBrowser", [browser, userCommands]);
+ return true;
+ }
+ return false;
+ },
+
+ // called when tabs change in firefox
+ watchContext: function(win, context, isSystem)
+ {
+ if (this.shuttingDown)
+ return;
+
+ var browser = context ? context.browser : this.getBrowserByWindow(win);
+ if (browser)
+ browser.isSystemPage = isSystem;
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher context *** SHOW *** (watchContext), id: " +
+ (context?context.uid:"null")+", uri: "+win.location.href);
+
+ // context is null if we don't want to debug this browser
+ Events.dispatch(this.fbListeners, "showContext", [browser, context]);
+ },
+
+ unwatchContext: function(win, context)
+ {
+ if (!context)
+ {
+ var browser = this.getBrowserByWindow(win);
+ if (browser)
+ {
+ browser.persistedState = {};
+ delete browser.showFirebug;
+
+ // context is null if we don't want to debug this browser
+ Events.dispatch(this.fbListeners, "showContext", [browser, null]);
+ }
+
+ Events.dispatch(this.fbListeners, "destroyContext",
+ [null, (browser ? browser.persistedState : null), browser]);
+ return;
+ }
+
+ var persistedState = {location: context.getWindowLocation()};
+ context.browser.persistedState = persistedState; // store our state on FF browser elt
+
+ Win.iterateWindows(context.window, function(win)
+ {
+ Events.dispatch(Firebug.TabWatcher.fbListeners, "unwatchWindow", [context, win]);
+ });
+
+ Events.dispatch(this.fbListeners, "destroyContext", [context, persistedState, context.browser]);
+
+ if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ACTIVATION)
+ {
+ FBTrace.sysout("-> tabWatcher.unwatchContext *** DESTROY *** context " + context.uid +
+ " for: " + (context.window && !context.window.closed?context.window.location :
+ "no window or closed ") + " aborted: " + context.aborted);
+ }
+
+ context.destroy(persistedState);
+
+ // Remove context from the list of contexts.
+ Arr.remove(contexts, context);
+
+ for (var name in context)
+ delete context[name];
+
+ // unwatchContext can be called on an unload event after another tab is selected
+ var currentBrowser = Firefox.getCurrentBrowser();
+ if (!currentBrowser.showFirebug)
+ {
+ // context is null if we don't want to debug this browser
+ Events.dispatch(this.fbListeners, "showContext", [currentBrowser, null]);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getContextByWindow: function(winIn)
+ {
+ if (!winIn)
+ return;
+
+ var rootWindow = Win.getRootWindow(winIn);
+
+ if (FBTrace.DBG_ROOT_WINDOW) // too much output to use INITIALIZE
+ FBTrace.sysout("winIn: "+Win.safeGetWindowLocation(winIn).substr(0,50)+
+ " rootWindow: "+Win.safeGetWindowLocation(rootWindow));
+
+ if (rootWindow)
+ {
+ for (var i = 0; i < contexts.length; ++i)
+ {
+ var context = contexts[i];
+ if (context.window == rootWindow)
+ return context;
+ }
+ }
+ },
+
+ getContextBySandbox: function(sandbox)
+ {
+ for (var i = 0; i < contexts.length; ++i)
+ {
+ var context = contexts[i];
+ if (context.sandboxes)
+ {
+ for (var iframe = 0; iframe < context.sandboxes.length; iframe++)
+ {
+ if (context.sandboxes[iframe] == sandbox)
+ return context;
+ }
+ }
+ }
+ return null;
+ },
+
+ getContextByGlobal: function(global)
+ {
+ return this.getContextByWindow(global) || this.getContextBySandbox(global);
+ },
+
+ // deprecated, use Win.getBrowserByWindow
+ getBrowserByWindow: function(win)
+ {
+ if (this.shuttingDown)
+ return null;
+
+ var browsers = Firefox.getBrowsers();
+ for (var i = 0; i < browsers.length; ++i)
+ {
+ var browser = browsers[i];
+ if (browser.contentWindow == win)
+ {
+ registerFrameListener(browser); // Yikes side effect!
+ return browser;
+ }
+ }
+
+ return null;
+ },
+
+ iterateContexts: function(fn)
+ {
+ for (var i = 0; i < contexts.length; ++i)
+ {
+ var rc = fn(contexts[i]);
+ if (rc)
+ return rc;
+ }
+ },
+
+ // Called by script panel, not sure where this belongs.
+ reloadPageFromMemory: function(context)
+ {
+ if (!context)
+ context = Firebug.currentContext;
+
+ if (context.browser)
+ context.browser.reloadWithFlags(Ci.nsIWebNavigation.LOAD_FLAGS_CHARSET_CHANGE);
+ else
+ context.window.location.reload();
+ },
+});
+
+// ********************************************************************************************* //
+
+var TabWatcherUnloader =
+{
+ listeners: [],
+
+ registerWindow: function(win)
+ {
+ var root = (win.parent == win);
+ var eventName = (root && (win.location.href !== "about:blank")) ? "pagehide" : "unload";
+ var listener = Obj.bind(root ? this.onPageHide : this.onUnload, this);
+ Events.addEventListener(win, eventName, listener, false);
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher.registerWindow; addEventListener for " + eventName+
+ " on " + Win.safeGetWindowLocation(win));
+
+ this.listeners.push({
+ window: win,
+ listener: listener,
+ eventName: eventName
+ });
+ },
+
+ unregisterWindow: function(win)
+ {
+ var newListeners = [];
+ for (var i=0; i<this.listeners.length; i++)
+ {
+ var listener = this.listeners[i];
+ if (listener.window != win)
+ {
+ newListeners.push(listener);
+ }
+ else
+ {
+ Events.removeEventListener(win, listener.eventName, listener.listener, false);
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher.unregisterWindow; removeEventListener for " +
+ listener.eventName + " on " + Win.safeGetWindowLocation(win));
+ }
+ }
+ this.listeners = newListeners;
+ },
+
+ unregisterAll: function()
+ {
+ for (var i=0; i<this.listeners.length; i++)
+ {
+ var listener = this.listeners[i];
+ Events.removeEventListener(listener.win, listener.eventName, listener.listener, false);
+ }
+
+ this.listeners = [];
+ },
+
+ onPageHide: function(event)
+ {
+ var win = event.currentTarget;
+ this.unregisterWindow(win);
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher.Unloader; PAGE HIDE (" +
+ this.listeners.length + ") " + win.location, event);
+
+ onPageHideTopWindow(event);
+ },
+
+ onUnload: function(event)
+ {
+ var win = event.currentTarget;
+ this.unregisterWindow(win);
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher.Unloader; PAGE UNLOAD (" +
+ this.listeners.length + ") " + win.location, event);
+
+ onUnloadWindow(event);
+ },
+};
+
+Firebug.TabWatcherUnloader = TabWatcherUnloader;
+
+// ********************************************************************************************* //
+
+var TabProgressListener = Obj.extend(Http.BaseProgressListener,
+{
+ onLocationChange: function(progress, request, uri)
+ {
+ // Only watch windows that are their own parent - e.g. not frames
+ if (progress.DOMWindow.parent == progress.DOMWindow)
+ {
+ var srcWindow = Http.getWindowForRequest(request);
+ var browser = srcWindow ? Firebug.TabWatcher.getBrowserByWindow(srcWindow) : null;
+
+ if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ACTIVATION)
+ {
+ var requestFromFirebuggedWindow = browser && browser.showFirebug;
+ FBTrace.sysout("-> TabProgressListener.onLocationChange "+
+ progress.DOMWindow.location+" to: "+
+ (uri?uri.spec:"null location")+
+ (requestFromFirebuggedWindow?" from firebugged window":" no firebug"));
+ }
+
+ // 1) We don't want to skip about:blank since Firebug UI is not update when
+ // switching to about:blank tab, see issue 4040
+ //
+ // 2) But we also want to skip "about:blank" in case a new tab is opened
+ // (new tab is about:blank at the beggining), no context exists and Firebug
+ // is suspended for all contexts, see issue5916
+ // There is a workaround for this case in {@TabWatchListener.showContext]
+ //
+ // the onStateChange will deal with this troublesome case
+ //if (uri && uri.spec === "about:blank")
+ // return;
+
+ // document.open() was called, the document was cleared.
+ if (uri && uri.scheme === "wyciwyg")
+ evictTopWindow(progress.DOMWindow, uri);
+
+ if (uri)
+ Firebug.TabWatcher.watchTopWindow(progress.DOMWindow, uri);
+ else // the location change to a non-uri means we need to hide
+ Firebug.TabWatcher.watchContext(progress.DOMWindow, null, true);
+ }
+ },
+
+ onStateChange: function(progress, request, flag, status)
+ {
+ if (FBTrace.DBG_WINDOWS)
+ {
+ var win = progress.DOMWindow;
+ FBTrace.sysout("-> TabProgressListener.onStateChanged for: " +
+ Http.safeGetRequestName(request) + ", win: " + win.location.href +
+ ", content URL: " + (win.document ? win.document.URL : "no content URL") +
+ " " + Http.getStateDescription(flag));
+ }
+ }
+});
+
+// ********************************************************************************************* //
+// Obsolete
+
+var FrameProgressListener = Obj.extend(Http.BaseProgressListener,
+{
+ onStateChange: function(progress, request, flag, status)
+ {
+ if (FBTrace.DBG_WINDOWS)
+ {
+ var win = progress.DOMWindow;
+ FBTrace.sysout("-> FrameProgressListener.onStateChanged for: " +
+ Http.safeGetRequestName(request) + ", win: " + win.location.href +
+ ", content URL: " + (win.document ? win.document.URL : "no content URL") +
+ " " + Http.getStateDescription(flag) + ", " + status);
+ }
+
+ if (flag & STATE_IS_REQUEST && flag & STATE_START)
+ {
+ // We need to get the hook in as soon as the new DOMWindow is created, but before
+ // it starts executing any scripts in the page. After lengthy analysis, it seems
+ // that the start of these "dummy" requests is the only state that works.
+
+ var safeName = Http.safeGetRequestName(request);
+ if (safeName && ((safeName == dummyURI) || safeName == "about:document-onload-blocker"))
+ {
+ var win = progress.DOMWindow;
+ // Another weird edge case here - when opening a new tab with about:blank,
+ // "unload" is dispatched to the document, but onLocationChange is not called
+ // again, so we have to call watchTopWindow here
+
+ if (win.parent == win && (win.location.href == "about:blank"))
+ {
+ Firebug.TabWatcher.watchTopWindow(win, win.location.href);
+ return;
+ }
+ else
+ {
+ Firebug.TabWatcher.watchWindow(win, null, true);
+ }
+ }
+ }
+
+ // Later I discovered that XHTML documents don't dispatch the dummy requests, so this
+ // is our best shot here at hooking them.
+ if (flag & STATE_IS_DOCUMENT && flag & STATE_TRANSFERRING)
+ {
+ Firebug.TabWatcher.watchWindow(progress.DOMWindow);
+ return;
+ }
+
+ }
+});
+
+// Obsolete
+// Registers frame listener for specified tab browser.
+function registerFrameListener(browser)
+{
+ if (browser.frameListener)
+ return;
+
+ browser.frameListener = FrameProgressListener; // just a mark saying we've registered. TODO remove!
+ browser.addProgressListener(FrameProgressListener);
+
+ if (FBTrace.DBG_WINDOWS)
+ {
+ var win = browser.contentWindow;
+ FBTrace.sysout("-> tabWatcher register FrameProgressListener for: "+
+ Win.safeGetWindowLocation(win)+", tab: "+Win.getWindowProxyIdForWindow(win));
+ }
+}
+
+function unregisterFrameListener(browser)
+{
+ if (browser.frameListener)
+ {
+ delete browser.frameListener;
+ browser.removeProgressListener(FrameProgressListener);
+ }
+
+ if (FBTrace.DBG_WINDOWS)
+ {
+ var win = browser.contentWindow;
+ FBTrace.sysout("-> tabWatcher unregister FrameProgressListener for: "+
+ Win.safeGetWindowLocation(win)+", tab: "+Win.getWindowProxyIdForWindow(win));
+ }
+}
+
+// ********************************************************************************************* //
+
+function getRefererHeader(request)
+{
+ var http = Xpcom.QI(request, Ci.nsIHttpChannel);
+ var referer = null;
+ http.visitRequestHeaders({
+ visitHeader: function(name, value)
+ {
+ if (name == 'referer')
+ referer = value;
+ }
+ });
+ return referer;
+}
+
+// ********************************************************************************************* //
+
+var TabWatcherHttpObserver = Obj.extend(Object,
+{
+ dispatchName: "TabWatcherHttpObserver",
+
+ // nsIObserver
+ observe: function(aSubject, aTopic, aData)
+ {
+ try
+ {
+ if (aTopic == "http-on-modify-request")
+ {
+ aSubject = aSubject.QueryInterface(Ci.nsIHttpChannel);
+ this.onModifyRequest(aSubject);
+ }
+ }
+ catch (err)
+ {
+ Debug.ERROR(err);
+ }
+ },
+
+ onModifyRequest: function(request)
+ {
+ var win = Http.getWindowForRequest(request);
+ if (win)
+ var tabId = Win.getWindowProxyIdForWindow(win);
+
+ // Tab watcher is only interested in tab related requests.
+ if (!tabId)
+ return;
+
+ // Ignore redirects
+ if (request.URI.spec != request.originalURI.spec)
+ return;
+
+ // A document request for the specified tab is here. It can be a top window
+ // request (win == win.parent) or embedded iframe request.
+ if (request.loadFlags & Ci.nsIHttpChannel.LOAD_DOCUMENT_URI)
+ {
+ if ((FBTrace.DBG_ACTIVATION || FBTrace.DBG_WINDOWS) && win == win.parent)
+ {
+ FBTrace.sysout("-> tabWatcher Firebug.TabWatcherHttpObserver *** START *** " +
+ "document request for: " + request.URI.spec + " window for request is "+
+ Win.safeGetWindowLocation(win));
+ }
+
+ if (win == win.parent)
+ {
+ // Make sure the frame listener is registered for top level window, so
+ // we can get all onStateChange events and init context for all opened tabs.
+ var browser = Firebug.TabWatcher.getBrowserByWindow(win);
+
+ if (!browser)
+ return;
+
+ delete browser.FirebugLink;
+
+ // then this page is opened in new tab or window
+ if (Win.safeGetWindowLocation(win).toString() == "about:blank")
+ {
+ var referer = getRefererHeader(request);
+ if (referer)
+ {
+ try
+ {
+ var srcURI = Url.makeURI(referer);
+ browser.FirebugLink = {src: srcURI, dst: request.URI};
+ }
+ catch(e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("tabWatcher.onModifyRequest failed to make URI from "+
+ referer+" because "+exc, exc);
+ }
+ }
+ }
+ else
+ {
+ // Here we know the source of the request is 'win'. For viral activation
+ // and web app tracking
+ browser.FirebugLink = {src: browser.currentURI, dst: request.URI};
+ }
+ if (FBTrace.DBG_ACTIVATION && browser.FirebugLink)
+ FBTrace.sysout("tabWatcher.onModifyRequest created FirebugLink from "+
+ browser.FirebugLink.src.spec + " to "+browser.FirebugLink.dst.spec);
+ }
+ }
+ },
+
+ QueryInterface : function (aIID)
+ {
+ if (aIID.equals(Ci.nsIObserver) ||
+ aIID.equals(Ci.nsISupportsWeakReference) ||
+ aIID.equals(Ci.nsISupports))
+ {
+ return this;
+ }
+
+ throw Components.results.NS_NOINTERFACE;
+ }
+});
+
+// ********************************************************************************************* //
+// Local Helpers
+
+function onPageHideTopWindow(event)
+{
+ var win = event.currentTarget; // we set the handler on a window
+ var doc = event.target; // the pagehide is sent to the document.
+ if (doc.defaultView != win)
+ return; // ignore page hides on interior windows
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher pagehide event.currentTarget "+
+ Win.safeGetWindowLocation(win), event);
+
+ // http://developer.mozilla.org/en/docs/Using_Firefox_1.5_caching#pagehide_event
+ // then the page is cached and there cannot be an unload handler
+ if (event.persisted || Win.safeGetWindowLocation(win) === aboutBlank)
+ {
+ // see Bug 484710 - add pageIgnore event for pages that are ejected from the bfcache
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher onPageHideTopWindow for: " +
+ Win.safeGetWindowLocation(win));
+
+ Firebug.TabWatcher.unwatchTopWindow(win);
+ }
+ else
+ {
+ // Page is not cached, there may be an unload
+ Events.addEventListener(win, "unload", onUnloadTopWindow, true);
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher onPageHideTopWindow set unload handler " +
+ Win.safeGetWindowLocation(win));
+ }
+}
+
+function evictTopWindow(win, uri)
+{
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher evictTopWindow win "+Win.safeGetWindowLocation(win) +
+ " uri "+uri.spec);
+
+ Firebug.TabWatcher.unwatchTopWindow(win);
+}
+
+function onUnloadTopWindow(event)
+{
+ var win = event.currentTarget;
+ Events.removeEventListener(win, "unload", onUnloadTopWindow, true);
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher onUnloadTopWindow for: " + Win.safeGetWindowLocation(win) +
+ " typeof: " + typeof(win));
+
+ Firebug.TabWatcher.unwatchTopWindow(win);
+}
+
+function onLoadWindowContent(event)
+{
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher.onLoadWindowContent event.type: " + event.type);
+
+ var win = event.currentTarget;
+ try
+ {
+ Events.removeEventListener(win, "pageshow", onLoadWindowContent,
+ onLoadWindowContent.capturing);
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher.onLoadWindowContent pageshow removeEventListener " +
+ Win.safeGetWindowLocation(win));
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("-> tabWatcher.onLoadWindowContent removeEventListener pageshow fails",
+ exc);
+ }
+
+ try
+ {
+ Events.removeEventListener(win, "DOMContentLoaded", onLoadWindowContent,
+ onLoadWindowContent.capturing);
+
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher.onLoadWindowContent DOMContentLoaded " +
+ "removeEventListener " + Win.safeGetWindowLocation(win));
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("-> tabWatcher.onLoadWindowContent removeEventListener " +
+ "DOMContentLoaded fails", exc);
+ }
+
+ // Signal that we got the onLoadWindowContent event. This prevents the
+ // FrameProgressListener from sending it.
+ var context = Firebug.TabWatcher.getContextByWindow(win);
+ if (context)
+ context.onLoadWindowContent = true;
+
+ try
+ {
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("-> tabWatcher.onLoadWindowContent:" +
+ Win.safeGetWindowLocation(win), win);
+
+ Firebug.TabWatcher.watchLoadedTopWindow(win);
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("-> tabWatchter onLoadWindowContent FAILS: "+exc, exc);
+ }
+}
+
+onLoadWindowContent.capturing = false;
+
+function onUnloadWindow(event)
+{
+ var win = event.currentTarget;
+ var eventType = "unload";
+
+ if (FBTrace.DBG_WINDOWS)
+ {
+ FBTrace.sysout("-> tabWatcher.onUnloadWindow for: " + Win.safeGetWindowLocation(win) +
+ " removeEventListener: "+ eventType);
+ }
+
+ Firebug.TabWatcher.unwatchWindow(win);
+}
+
+// ********************************************************************************************* //
+
+function onLoadWindow(event)
+{
+ var win = event.currentTarget;
+
+ Events.removeEventListener(win, "load", onLoadWindow, false);
+
+ var context = Firebug.TabWatcher.getContextByWindow(win);
+ if (!context)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("-> onLoadWindow: ERROR No context for loaded window!");
+ return;
+ }
+
+ Events.dispatch(Firebug.TabWatcher.fbListeners, "loadWindow", [context, win]);
+}
+
+// ********************************************************************************************* //
+
+window.__defineGetter__("TabWatcher", function deprecatedTabWatcher()
+{
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("deprecated TabWatcher global accessed");
+
+ return Firebug.TabWatcher;
+});
+
+// ********************************************************************************************* //
+// Registration
+
+return Firebug.TabWatcher;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/tableRep.js b/content/firebug/chrome/tableRep.js
index 41b25f5..e6ec6e4 100644
--- a/content/firebug/chrome/tableRep.js
+++ b/content/firebug/chrome/tableRep.js
@@ -1,343 +1,343 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/chrome/reps",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/lib/object",
- "firebug/lib/array",
-],
-function(Domplate, Locale, FirebugReps, Dom, Css, Obj, Arr) {
-
-// ********************************************************************************************* //
-// Constants
-
-// ********************************************************************************************* //
-
-with (Domplate) {
-FirebugReps.Table = domplate(Firebug.Rep,
-{
- className: "table",
- tableClassName: "dataTable",
- tag:
- DIV({"class": "dataTableSizer", "tabindex": "-1" },
- TABLE({"class": "$tableClassName", cellspacing: 0, cellpadding: 0, width: "100%",
- "role": "grid"},
- THEAD({"class": "dataTableThead", "role": "presentation"},
- TR({"class": "headerRow focusRow dataTableRow subFocusRow", "role": "row",
- onclick: "$onClickHeader"},
- FOR("column", "$object.columns",
- TH({"class": "headerCell a11yFocus", "role": "columnheader",
- $alphaValue: "$column.alphaValue"},
- DIV({"class": "headerCellBox"},
- "$column.label"
- )
- )
- )
- )
- ),
- TBODY({"class": "dataTableTbody", "role": "presentation"},
- FOR("row", "$object.data|getRows",
- TR({"class": "focusRow dataTableRow subFocusRow", "role": "row"},
- FOR("column", "$row|getColumns",
- TD({"class": "a11yFocus dataTableCell", "role": "gridcell"},
- TAG("$column|getValueTag", {object: "$column"})
- )
- )
- )
- )
- )
- )
- ),
-
- getValueTag: function(object)
- {
- var rep = Firebug.getRep(object);
- return rep.shortTag || rep.tag;
- },
-
- getRows: function(data)
- {
- var props = this.getProps(data);
- if (!props.length)
- return [];
- return props;
- },
-
- getColumns: function(row)
- {
- if (typeof(row) != "object")
- return [row];
-
- var cols = [];
- var value = null;
- for (var i=0; i<this.columns.length; i++)
- {
- var prop = this.columns[i].property;
-
- // Object property is not set for this column, so display entire
- // row-value in the cell. This can happen in cases where a generic
- // object is logged using table layout. In such case there is one
- // column (no property associated) and each row represents a member
- // of the object.
- if (typeof prop == "undefined")
- {
- value = row;
- }
- else if (typeof row[prop] == "undefined")
- {
- var props = (typeof(prop) == "string") ? prop.split(".") : [prop];
-
- value = row;
- for (var p in props)
- value = (value && value[props[p]]) || undefined;
- }
- else
- {
- value = row[prop];
- }
-
- cols.push(value);
- }
- return cols;
- },
-
- getProps: function(obj)
- {
- if (typeof(obj) != "object")
- return [obj];
-
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("FirebugReps.Table.getProps", {obj: obj, arr: Arr.cloneArray(obj)});
-
- if (obj.length)
- return Arr.cloneArray(obj);
-
- var arr = [];
- for (var p in obj)
- {
- var value = obj[p];
- if (this.domFilter(value, p))
- arr.push(value);
- }
-
- return arr;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Sorting
-
- onClickHeader: function(event)
- {
- var table = Dom.getAncestorByClass(event.target, "dataTable");
- var header = Dom.getAncestorByClass(event.target, "headerCell");
- if (!header)
- return;
-
- var numerical = !Css.hasClass(header, "alphaValue");
-
- var colIndex = 0;
- for (header = header.previousSibling; header; header = header.previousSibling)
- ++colIndex;
-
- this.sort(table, colIndex, numerical);
- },
-
- sort: function(table, colIndex, numerical)
- {
- var tbody = Dom.getChildByClass(table, "dataTableTbody");
- var thead = Dom.getChildByClass(table, "dataTableThead");
-
- var values = [];
- for (var row = tbody.childNodes[0]; row; row = row.nextSibling)
- {
- var cell = row.childNodes[colIndex];
- var value = numerical ? parseFloat(cell.textContent) : cell.textContent;
- values.push({row: row, value: value});
- }
-
- values.sort(function(a, b) { return a.value < b.value ? -1 : 1; });
-
- var headerRow = thead.firstChild;
- var headerSorted = Dom.getChildByClass(headerRow, "headerSorted");
- Css.removeClass(headerSorted, "headerSorted");
- if (headerSorted)
- headerSorted.removeAttribute('aria-sort');
-
- var header = headerRow.childNodes[colIndex];
- Css.setClass(header, "headerSorted");
-
- if (!header.sorted || header.sorted == 1)
- {
- Css.removeClass(header, "sortedDescending");
- Css.setClass(header, "sortedAscending");
- header.setAttribute("aria-sort", "ascending");
-
- header.sorted = -1;
-
- for (var i = 0; i < values.length; ++i)
- tbody.appendChild(values[i].row);
- }
- else
- {
- Css.removeClass(header, "sortedAscending");
- Css.setClass(header, "sortedDescending");
- header.setAttribute("aria-sort", "descending");
-
- header.sorted = 1;
-
- for (var i = values.length-1; i >= 0; --i)
- tbody.appendChild(values[i].row);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Console logging
-
- log: function(data, cols, context, object)
- {
- // No arguments passed into console.table method, bail out for now,
- // but some error message could be displayed in the future.
- if (!data)
- return;
-
- var columns = this.computeColumns(data, cols);
-
- // Don't limit strings in the table. It should be mostly ok. In case of
- // complaints we need an option.
- var prevValue = Firebug.stringCropLength;
- Firebug.stringCropLength = -1;
-
- try
- {
- this.columns = columns;
-
- var obj = object || {};
- obj.data = data;
- obj.columns = columns;
-
- var row = Firebug.Console.log(obj, context, "table", this, true);
-
- // Set vertical height for scroll bar.
- var tBody = row.querySelector(".dataTableTbody");
- var maxHeight = Firebug.tabularLogMaxHeight;
- if (maxHeight > 0 && tBody.clientHeight > maxHeight)
- tBody.style.height = maxHeight + "px";
- }
- catch (err)
- {
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("consoleInjector.table; EXCEPTION " + err, err);
- }
- finally
- {
- Firebug.stringCropLength = prevValue;
- delete this.columns;
- }
- },
-
- computeColumns: function(data, cols)
- {
- // Get header info from passed argument (can be null).
- var columns = [];
- for (var i=0; cols && i<cols.length; i++)
- {
- var col = cols[i];
- var prop = (typeof(col.property) != "undefined") ? col.property : col;
- var label = (typeof(col.label) != "undefined") ? col.label : prop;
-
- columns.push({
- property: prop,
- label: label,
- alphaValue: true
- });
- }
-
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("consoleInjector.table; columns", columns);
-
- // Generate header info from the data dynamically.
- if (!columns.length)
- columns = this.getHeaderColumns(data);
-
- return columns;
- },
-
- /**
- * Analyse data and return dynamically created list of columns.
- * @param {Object} data
- */
- getHeaderColumns: function(data)
- {
- // Get the first row in the object.
- var firstRow = null;
- for (var p in data)
- {
- firstRow = data[p];
- break;
- }
-
- if (typeof(firstRow) != "object")
- return [{label: Locale.$STR("firebug.reps.table.ObjectProperties")}];
-
- // Put together a column property, label and type (type for default sorting logic).
- var header = [];
- for (var p in firstRow)
- {
- var value = firstRow[p];
- if (!this.domFilter(value, p))
- continue;
-
- header.push({
- property: p,
- label: p,
- alphaValue: (typeof(value) != "number")
- });
- }
-
- return header;
- },
-
- /**
- * Filtering based on options set in the DOM panel.
- * @param {Object} value - a property value under inspection.
- * @param {String} name - name of the property.
- * @returns true if the value should be displayed, otherwise false.
- */
- domFilter: function(object, name)
- {
- if (typeof(object) == "function")
- {
- if (Dom.isDOMMember(object, name) && !Firebug.showDOMFuncs)
- return false;
- else if (!Firebug.showUserFuncs)
- return false;
- }
- else
- {
- if (Dom.isDOMMember(object, name) && !Firebug.showDOMProps)
- return false;
- else if (Dom.isDOMConstant(object, name) && !Firebug.showDOMConstants)
- return false;
- else if (!Firebug.showUserProps)
- return false;
- }
-
- return true;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- groupable: false
-});
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return FirebugReps.Table;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/chrome/reps",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/lib/object",
+ "firebug/lib/array",
+],
+function(Domplate, Locale, FirebugReps, Dom, Css, Obj, Arr) {
+
+// ********************************************************************************************* //
+// Constants
+
+// ********************************************************************************************* //
+
+with (Domplate) {
+FirebugReps.Table = domplate(Firebug.Rep,
+{
+ className: "table",
+ tableClassName: "dataTable",
+ tag:
+ DIV({"class": "dataTableSizer", "tabindex": "-1" },
+ TABLE({"class": "$tableClassName", cellspacing: 0, cellpadding: 0, width: "100%",
+ "role": "grid"},
+ THEAD({"class": "dataTableThead", "role": "presentation"},
+ TR({"class": "headerRow focusRow dataTableRow subFocusRow", "role": "row",
+ onclick: "$onClickHeader"},
+ FOR("column", "$object.columns",
+ TH({"class": "headerCell a11yFocus", "role": "columnheader",
+ $alphaValue: "$column.alphaValue"},
+ DIV({"class": "headerCellBox"},
+ "$column.label"
+ )
+ )
+ )
+ )
+ ),
+ TBODY({"class": "dataTableTbody", "role": "presentation"},
+ FOR("row", "$object.data|getRows",
+ TR({"class": "focusRow dataTableRow subFocusRow", "role": "row"},
+ FOR("column", "$row|getColumns",
+ TD({"class": "a11yFocus dataTableCell", "role": "gridcell"},
+ TAG("$column|getValueTag", {object: "$column"})
+ )
+ )
+ )
+ )
+ )
+ )
+ ),
+
+ getValueTag: function(object)
+ {
+ var rep = Firebug.getRep(object);
+ return rep.shortTag || rep.tag;
+ },
+
+ getRows: function(data)
+ {
+ var props = this.getProps(data);
+ if (!props.length)
+ return [];
+ return props;
+ },
+
+ getColumns: function(row)
+ {
+ if (typeof(row) != "object")
+ return [row];
+
+ var cols = [];
+ var value = null;
+ for (var i=0; i<this.columns.length; i++)
+ {
+ var prop = this.columns[i].property;
+
+ // Object property is not set for this column, so display entire
+ // row-value in the cell. This can happen in cases where a generic
+ // object is logged using table layout. In such case there is one
+ // column (no property associated) and each row represents a member
+ // of the object.
+ if (typeof prop == "undefined")
+ {
+ value = row;
+ }
+ else if (typeof row[prop] == "undefined")
+ {
+ var props = (typeof(prop) == "string") ? prop.split(".") : [prop];
+
+ value = row;
+ for (var p in props)
+ value = (value && value[props[p]]) || undefined;
+ }
+ else
+ {
+ value = row[prop];
+ }
+
+ cols.push(value);
+ }
+ return cols;
+ },
+
+ getProps: function(obj)
+ {
+ if (typeof(obj) != "object")
+ return [obj];
+
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("FirebugReps.Table.getProps", {obj: obj, arr: Arr.cloneArray(obj)});
+
+ if (obj.length)
+ return Arr.cloneArray(obj);
+
+ var arr = [];
+ for (var p in obj)
+ {
+ var value = obj[p];
+ if (this.domFilter(value, p))
+ arr.push(value);
+ }
+
+ return arr;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Sorting
+
+ onClickHeader: function(event)
+ {
+ var table = Dom.getAncestorByClass(event.target, "dataTable");
+ var header = Dom.getAncestorByClass(event.target, "headerCell");
+ if (!header)
+ return;
+
+ var numerical = !Css.hasClass(header, "alphaValue");
+
+ var colIndex = 0;
+ for (header = header.previousSibling; header; header = header.previousSibling)
+ ++colIndex;
+
+ this.sort(table, colIndex, numerical);
+ },
+
+ sort: function(table, colIndex, numerical)
+ {
+ var tbody = Dom.getChildByClass(table, "dataTableTbody");
+ var thead = Dom.getChildByClass(table, "dataTableThead");
+
+ var values = [];
+ for (var row = tbody.childNodes[0]; row; row = row.nextSibling)
+ {
+ var cell = row.childNodes[colIndex];
+ var value = numerical ? parseFloat(cell.textContent) : cell.textContent;
+ values.push({row: row, value: value});
+ }
+
+ values.sort(function(a, b) { return a.value < b.value ? -1 : 1; });
+
+ var headerRow = thead.firstChild;
+ var headerSorted = Dom.getChildByClass(headerRow, "headerSorted");
+ Css.removeClass(headerSorted, "headerSorted");
+ if (headerSorted)
+ headerSorted.removeAttribute('aria-sort');
+
+ var header = headerRow.childNodes[colIndex];
+ Css.setClass(header, "headerSorted");
+
+ if (!header.sorted || header.sorted == 1)
+ {
+ Css.removeClass(header, "sortedDescending");
+ Css.setClass(header, "sortedAscending");
+ header.setAttribute("aria-sort", "ascending");
+
+ header.sorted = -1;
+
+ for (var i = 0; i < values.length; ++i)
+ tbody.appendChild(values[i].row);
+ }
+ else
+ {
+ Css.removeClass(header, "sortedAscending");
+ Css.setClass(header, "sortedDescending");
+ header.setAttribute("aria-sort", "descending");
+
+ header.sorted = 1;
+
+ for (var i = values.length-1; i >= 0; --i)
+ tbody.appendChild(values[i].row);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Console logging
+
+ log: function(data, cols, context, object)
+ {
+ // No arguments passed into console.table method, bail out for now,
+ // but some error message could be displayed in the future.
+ if (!data)
+ return;
+
+ var columns = this.computeColumns(data, cols);
+
+ // Don't limit strings in the table. It should be mostly ok. In case of
+ // complaints we need an option.
+ var prevValue = Firebug.stringCropLength;
+ Firebug.stringCropLength = -1;
+
+ try
+ {
+ this.columns = columns;
+
+ var obj = object || {};
+ obj.data = data;
+ obj.columns = columns;
+
+ var row = Firebug.Console.log(obj, context, "table", this, true);
+
+ // Set vertical height for scroll bar.
+ var tBody = row.querySelector(".dataTableTbody");
+ var maxHeight = Firebug.tabularLogMaxHeight;
+ if (maxHeight > 0 && tBody.clientHeight > maxHeight)
+ tBody.style.height = maxHeight + "px";
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("consoleInjector.table; EXCEPTION " + err, err);
+ }
+ finally
+ {
+ Firebug.stringCropLength = prevValue;
+ delete this.columns;
+ }
+ },
+
+ computeColumns: function(data, cols)
+ {
+ // Get header info from passed argument (can be null).
+ var columns = [];
+ for (var i=0; cols && i<cols.length; i++)
+ {
+ var col = cols[i];
+ var prop = (typeof(col.property) != "undefined") ? col.property : col;
+ var label = (typeof(col.label) != "undefined") ? col.label : prop;
+
+ columns.push({
+ property: prop,
+ label: label,
+ alphaValue: true
+ });
+ }
+
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("consoleInjector.table; columns", columns);
+
+ // Generate header info from the data dynamically.
+ if (!columns.length)
+ columns = this.getHeaderColumns(data);
+
+ return columns;
+ },
+
+ /**
+ * Analyse data and return dynamically created list of columns.
+ * @param {Object} data
+ */
+ getHeaderColumns: function(data)
+ {
+ // Get the first row in the object.
+ var firstRow = null;
+ for (var p in data)
+ {
+ firstRow = data[p];
+ break;
+ }
+
+ if (typeof(firstRow) != "object")
+ return [{label: Locale.$STR("firebug.reps.table.ObjectProperties")}];
+
+ // Put together a column property, label and type (type for default sorting logic).
+ var header = [];
+ for (var p in firstRow)
+ {
+ var value = firstRow[p];
+ if (!this.domFilter(value, p))
+ continue;
+
+ header.push({
+ property: p,
+ label: p,
+ alphaValue: (typeof(value) != "number")
+ });
+ }
+
+ return header;
+ },
+
+ /**
+ * Filtering based on options set in the DOM panel.
+ * @param {Object} value - a property value under inspection.
+ * @param {String} name - name of the property.
+ * @returns true if the value should be displayed, otherwise false.
+ */
+ domFilter: function(object, name)
+ {
+ if (typeof(object) == "function")
+ {
+ if (Dom.isDOMMember(object, name) && !Firebug.showDOMFuncs)
+ return false;
+ else if (!Firebug.showUserFuncs)
+ return false;
+ }
+ else
+ {
+ if (Dom.isDOMMember(object, name) && !Firebug.showDOMProps)
+ return false;
+ else if (Dom.isDOMConstant(object, name) && !Firebug.showDOMConstants)
+ return false;
+ else if (!Firebug.showUserProps)
+ return false;
+ }
+
+ return true;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ groupable: false
+});
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return FirebugReps.Table;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/toggleSidePanels.js b/content/firebug/chrome/toggleSidePanels.js
index 28384cc..c49e045 100644
--- a/content/firebug/chrome/toggleSidePanels.js
+++ b/content/firebug/chrome/toggleSidePanels.js
@@ -1,155 +1,155 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/object",
- "firebug/lib/trace",
- "firebug/lib/dom",
- "firebug/lib/options",
- "firebug/lib/css",
-],
-function(Firebug, Obj, FBTrace, Dom, Options, Css) {
-
-// ********************************************************************************************* //
-// Constants
-
-// ********************************************************************************************* //
-// ToggleSidePanels Implementation
-
-/**
- * @module Implements 'Toggle Side Panels' feature that is available on panel's toolbar.
- * Visibility of the side-panel-area is panel specific. So, if the user hides it e.g. for
- * the HTML panel it applies to the HTML panel only.
- *
- * Visibility is toggled by 'fbToggleSidePanels' button that is created
- * in firebugOverlay.xul
- *
- * Visibility is persisted across Firefox restarts and stored in preferences. All Firebug
- * side panels are visible by default. Preference names are generated according to the
- * main panel name |panel.name|. For example, the HTML panel is using:
- * extensions.firebug.htmlHideSidePanels (false by default or non existing)
- *
- * Side panels visibility is updated upon 'updateSidePanels' event fired to all
- * UI listeners by Firebug chrome object.
- */
-var ToggleSidePanels = Obj.extend(Firebug.Module,
-/** @lends ToggleSidePanels */
-{
- dispatchName: "ToggleSidePanels",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Module
-
- initialize: function()
- {
- Firebug.Module.initialize.apply(this, arguments);
-
- // Register as a listener for 'updateSidePanels' event.
- Firebug.registerUIListener(this);
-
- // Register a command handler dynamically, so we don't have to
- // expose this object into the firebugOverlay.xul scope.
- var button = Firebug.chrome.$("fbToggleSidePanels");
- button.addEventListener("command", this.toggle.bind(this), false);
- },
-
- shutdown: function()
- {
- Firebug.Module.shutdown.apply(this, arguments);
-
- Firebug.unregisterUIListener(this);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // UI Listener
-
- updateSidePanels: function(panel)
- {
- // If no current panel bail out (the current panel can be disabled i.e. null).
- if (!panel)
- return;
-
- var context = panel.context;
-
- // Get list of side panels for the current main panel.
- var selectedPanel = Firebug.chrome.getSelectedPanel();
- var panelTypes = Firebug.getSidePanelTypes(context, selectedPanel);
-
- // Hide the toggle-side-panels button if there are no side panels
- // for the current main panel.
- var hasSidePanels = (panelTypes.length > 0);
- var box = Firebug.chrome.$("fbToggleSidePanelsBox");
- Dom.collapse(box, !hasSidePanels);
-
- if (!hasSidePanels)
- return;
-
- var prefName = this.getPanelPrefName(panel);
- var currentlyVisible = this.isVisible();
-
- // True preference value means hide the side panels.
- var shouldBeVisible = !Options.get(prefName);
-
- // Update visibility of the side area.
- if (currentlyVisible != shouldBeVisible)
- this.toggle();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // State
-
- getPanelPrefName: function(panel)
- {
- // Return preference name for given panel object.
- return panel.name + "HideSidePanels";
- },
-
- isVisible: function()
- {
- var splitter = Firebug.chrome.$("fbPanelSplitter");
- return !Dom.isCollapsed(splitter);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // XUL Command
-
- /**
- * Executed when the user presses 'fbToggleSidePanels' button on panel's toolbar.
- *
- * @event XULCommandEvent
- */
- toggle: function(event)
- {
- var splitter = Firebug.chrome.$("fbPanelSplitter");
- var panelDeck = Firebug.chrome.$("fbSidePanelDeck");
-
- // Get the current state (e.g. if the side panel area is visible it'll be hidden)
- var hide = this.isVisible();
-
- // Update UI
- Dom.collapse(splitter, hide);
- Dom.collapse(panelDeck, hide);
-
- // Update preferences
- var selectedPanel = Firebug.chrome.getSelectedPanel();
- var prefName = this.getPanelPrefName(selectedPanel);
- Options.set(prefName, hide);
-
- // Update button style (its image is changing according to the current state).
- var button = Firebug.chrome.$("fbToggleSidePanels");
- if (hide)
- Css.setClass(button, "closed");
- else
- Css.removeClass(button, "closed");
- },
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(ToggleSidePanels);
-
-return ToggleSidePanels;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/object",
+ "firebug/lib/trace",
+ "firebug/lib/dom",
+ "firebug/lib/options",
+ "firebug/lib/css",
+],
+function(Firebug, Obj, FBTrace, Dom, Options, Css) {
+
+// ********************************************************************************************* //
+// Constants
+
+// ********************************************************************************************* //
+// ToggleSidePanels Implementation
+
+/**
+ * @module Implements 'Toggle Side Panels' feature that is available on panel's toolbar.
+ * Visibility of the side-panel-area is panel specific. So, if the user hides it e.g. for
+ * the HTML panel it applies to the HTML panel only.
+ *
+ * Visibility is toggled by 'fbToggleSidePanels' button that is created
+ * in firebugOverlay.xul
+ *
+ * Visibility is persisted across Firefox restarts and stored in preferences. All Firebug
+ * side panels are visible by default. Preference names are generated according to the
+ * main panel name |panel.name|. For example, the HTML panel is using:
+ * extensions.firebug.htmlHideSidePanels (false by default or non existing)
+ *
+ * Side panels visibility is updated upon 'updateSidePanels' event fired to all
+ * UI listeners by Firebug chrome object.
+ */
+var ToggleSidePanels = Obj.extend(Firebug.Module,
+/** @lends ToggleSidePanels */
+{
+ dispatchName: "ToggleSidePanels",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Module
+
+ initialize: function()
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+
+ // Register as a listener for 'updateSidePanels' event.
+ Firebug.registerUIListener(this);
+
+ // Register a command handler dynamically, so we don't have to
+ // expose this object into the firebugOverlay.xul scope.
+ var button = Firebug.chrome.$("fbToggleSidePanels");
+ button.addEventListener("command", this.toggle.bind(this), false);
+ },
+
+ shutdown: function()
+ {
+ Firebug.Module.shutdown.apply(this, arguments);
+
+ Firebug.unregisterUIListener(this);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // UI Listener
+
+ updateSidePanels: function(panel)
+ {
+ // If no current panel bail out (the current panel can be disabled i.e. null).
+ if (!panel)
+ return;
+
+ var context = panel.context;
+
+ // Get list of side panels for the current main panel.
+ var selectedPanel = Firebug.chrome.getSelectedPanel();
+ var panelTypes = Firebug.getSidePanelTypes(context, selectedPanel);
+
+ // Hide the toggle-side-panels button if there are no side panels
+ // for the current main panel.
+ var hasSidePanels = (panelTypes.length > 0);
+ var box = Firebug.chrome.$("fbToggleSidePanelsBox");
+ Dom.collapse(box, !hasSidePanels);
+
+ if (!hasSidePanels)
+ return;
+
+ var prefName = this.getPanelPrefName(panel);
+ var currentlyVisible = this.isVisible();
+
+ // True preference value means hide the side panels.
+ var shouldBeVisible = !Options.get(prefName);
+
+ // Update visibility of the side area.
+ if (currentlyVisible != shouldBeVisible)
+ this.toggle();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // State
+
+ getPanelPrefName: function(panel)
+ {
+ // Return preference name for given panel object.
+ return panel.name + "HideSidePanels";
+ },
+
+ isVisible: function()
+ {
+ var splitter = Firebug.chrome.$("fbPanelSplitter");
+ return !Dom.isCollapsed(splitter);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // XUL Command
+
+ /**
+ * Executed when the user presses 'fbToggleSidePanels' button on panel's toolbar.
+ *
+ * @event XULCommandEvent
+ */
+ toggle: function(event)
+ {
+ var splitter = Firebug.chrome.$("fbPanelSplitter");
+ var panelDeck = Firebug.chrome.$("fbSidePanelDeck");
+
+ // Get the current state (e.g. if the side panel area is visible it'll be hidden)
+ var hide = this.isVisible();
+
+ // Update UI
+ Dom.collapse(splitter, hide);
+ Dom.collapse(panelDeck, hide);
+
+ // Update preferences
+ var selectedPanel = Firebug.chrome.getSelectedPanel();
+ var prefName = this.getPanelPrefName(selectedPanel);
+ Options.set(prefName, hide);
+
+ // Update button style (its image is changing according to the current state).
+ var button = Firebug.chrome.$("fbToggleSidePanels");
+ if (hide)
+ Css.setClass(button, "closed");
+ else
+ Css.removeClass(button, "closed");
+ },
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(ToggleSidePanels);
+
+return ToggleSidePanels;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/toolbar.js b/content/firebug/chrome/toolbar.js
index a2f6627..a37bbdf 100644
--- a/content/firebug/chrome/toolbar.js
+++ b/content/firebug/chrome/toolbar.js
@@ -1,110 +1,110 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/locale",
- "firebug/lib/options",
- "firebug/lib/css",
- "firebug/chrome/menu"
-],
-function(FBTrace, Locale, Options, Css, Menu) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Toolbar = {};
-
-// ********************************************************************************************* //
-// Implementation
-
-Toolbar.createToolbarButton = function(toolbar, button, before)
-{
- if (typeof(button) == "string" && button.charAt(0) == "-")
- return Toolbar.createToolbarSeparator(toolbar, before);
-
- var toolbarButton = toolbar.ownerDocument.createElement("toolbarbutton");
-
- Toolbar.setItemIntoElement(toolbarButton, button);
-
- if (before)
- toolbar.insertBefore(toolbarButton, before);
- else
- toolbar.appendChild(toolbarButton);
-
- return toolbarButton;
-};
-
-Toolbar.setItemIntoElement = function(element, item)
-{
- if (item.label)
- {
- var label = item.nol10n ? item.label : Locale.$STR(item.label);
- element.setAttribute("label", label);
- }
-
- if (item.id)
- element.setAttribute("id", item.id);
-
- if (item.type)
- element.setAttribute("type", item.type);
-
- if (item.checked)
- element.setAttribute("checked", "true");
-
- if (item.disabled)
- element.setAttribute("disabled", "true");
-
- if (item.image)
- element.setAttribute("image", item.image);
-
- if (item.command)
- element.addEventListener("command", item.command, false);
-
- if (item.commandID)
- element.setAttribute("command", item.commandID);
-
- if (item.option)
- element.setAttribute("option", item.option);
-
- if (item.tooltiptext)
- {
- var tooltiptext = item.nol10n ? item.tooltiptext : Locale.$STR(item.tooltiptext);
- element.setAttribute("tooltiptext", tooltiptext);
- }
-
- if (item.className)
- Css.setClass(element, item.className);
-
- if (item.key)
- element.setAttribute("accesskey", item.key);
-
- if (item.name)
- element.setAttribute("name", item.name);
-
- if (item.items)
- Menu.createMenuPopup(element, item);
-
- return element;
-};
-
-Toolbar.createToolbarSeparator = function(toolbar, before)
-{
- if (!toolbar.firstChild)
- return;
-
- var separator = toolbar.ownerDocument.createElement("toolbarseparator");
- if (before)
- toolbar.insertBefore(separator, before);
- else
- toolbar.appendChild(separator);
-
- return separator;
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return Toolbar;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/locale",
+ "firebug/lib/options",
+ "firebug/lib/css",
+ "firebug/chrome/menu"
+],
+function(FBTrace, Locale, Options, Css, Menu) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Toolbar = {};
+
+// ********************************************************************************************* //
+// Implementation
+
+Toolbar.createToolbarButton = function(toolbar, button, before)
+{
+ if (typeof(button) == "string" && button.charAt(0) == "-")
+ return Toolbar.createToolbarSeparator(toolbar, before);
+
+ var toolbarButton = toolbar.ownerDocument.createElement("toolbarbutton");
+
+ Toolbar.setItemIntoElement(toolbarButton, button);
+
+ if (before)
+ toolbar.insertBefore(toolbarButton, before);
+ else
+ toolbar.appendChild(toolbarButton);
+
+ return toolbarButton;
+};
+
+Toolbar.setItemIntoElement = function(element, item)
+{
+ if (item.label)
+ {
+ var label = item.nol10n ? item.label : Locale.$STR(item.label);
+ element.setAttribute("label", label);
+ }
+
+ if (item.id)
+ element.setAttribute("id", item.id);
+
+ if (item.type)
+ element.setAttribute("type", item.type);
+
+ if (item.checked)
+ element.setAttribute("checked", "true");
+
+ if (item.disabled)
+ element.setAttribute("disabled", "true");
+
+ if (item.image)
+ element.setAttribute("image", item.image);
+
+ if (item.command)
+ element.addEventListener("command", item.command, false);
+
+ if (item.commandID)
+ element.setAttribute("command", item.commandID);
+
+ if (item.option)
+ element.setAttribute("option", item.option);
+
+ if (item.tooltiptext)
+ {
+ var tooltiptext = item.nol10n ? item.tooltiptext : Locale.$STR(item.tooltiptext);
+ element.setAttribute("tooltiptext", tooltiptext);
+ }
+
+ if (item.className)
+ Css.setClass(element, item.className);
+
+ if (item.key)
+ element.setAttribute("accesskey", item.key);
+
+ if (item.name)
+ element.setAttribute("name", item.name);
+
+ if (item.items)
+ Menu.createMenuPopup(element, item);
+
+ return element;
+};
+
+Toolbar.createToolbarSeparator = function(toolbar, before)
+{
+ if (!toolbar.firstChild)
+ return;
+
+ var separator = toolbar.ownerDocument.createElement("toolbarseparator");
+ if (before)
+ toolbar.insertBefore(separator, before);
+ else
+ toolbar.appendChild(separator);
+
+ return separator;
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return Toolbar;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/chrome/window.js b/content/firebug/chrome/window.js
index e3b4ab6..b715dec 100644
--- a/content/firebug/chrome/window.js
+++ b/content/firebug/chrome/window.js
@@ -1,252 +1,252 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/http",
- "firebug/chrome/firefox"
-],
-function(FBTrace, Http, Firefox) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Ci = Components.interfaces;
-var Cc = Components.classes;
-
-var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
-
-var Win = {};
-
-var window = {}; // these declarations exist to cause errors if we accidently
-var document = {}; // reference these globals
-
-// ********************************************************************************************* //
-// Crossbrowser API
-
-Win.getWindowProxyIdForWindow = function(win)
-{
- if (!win)
- return null;
-
- var id = Win.getWindowId(win).outerWindowID;
-
- // xxxJJB, xxxHonza: the id is often null, what could be the problem?
- // jjb: My guess: just another Mozilla bug
- if (!id)
- return Win.getTabIdForWindow(win);
-
- return id;
-};
-
-Win.getTabForWindow = function(aWindow)
-{
- aWindow = Win.getRootWindow(aWindow);
-
- var tabBrowser = Firefox.getTabBrowser();
- if (!aWindow || !tabBrowser || !tabBrowser.getBrowserIndexForDocument)
- {
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("getTabForWindow FAIL aWindow: "+aWindow+" tabBrowser: "+tabBrowser, tabBrowser);
- return null;
- }
-
- try
- {
- var targetDoc = aWindow.document;
-
- var tab = null;
- var targetBrowserIndex = tabBrowser.getBrowserIndexForDocument(targetDoc);
- if (targetBrowserIndex != -1)
- {
- tab = tabBrowser.tabContainer.childNodes[targetBrowserIndex];
- return tab;
- }
- }
- catch (ex)
- {
- }
-
- return null;
-};
-
-Win.getTabIdForWindow = function(win)
-{
- var tab = Win.getTabForWindow(win);
- return tab ? tab.linkedPanel : null;
-};
-
-// ********************************************************************************************* //
-// Window iteration
-
-Win.iterateWindows = function(win, handler)
-{
- if (!win || !win.document)
- return;
-
- handler(win);
-
- if (win == top || !win.frames)
- return; // XXXjjb hack for chromeBug
-
- for (var i = 0; i < win.frames.length; ++i)
- {
- var subWin = win.frames[i];
- if (subWin != win)
- Win.iterateWindows(subWin, handler);
- }
-};
-
-Win.getRootWindow = function(win)
-{
- for (; win; win = win.parent)
- {
- if (!win.parent || win == win.parent)
- return win;
-
- // When checking the 'win.parent' type we need to use the target
- // type from the same scope. i.e. from win.parent
- // Iframes from different domains can use different Window type than
- // the top level window.
- if (!(win.parent instanceof win.parent.Window))
- return win;
- }
-
- return null;
-};
-
-// ********************************************************************************************* //
-// Firefox browsing
-
-Win.openNewTab = function(url, postText)
-{
- if (!url)
- return;
-
- var postData = null;
- if (postText)
- {
- var stringStream = Http.getInputStreamFromString(postText);
- postData = Cc["@mozilla.org/network/mime-input-stream;1"].createInstance(Ci.nsIMIMEInputStream);
- postData.addHeader("Content-Type", "application/x-www-form-urlencoded");
- postData.addContentLength = true;
- postData.setData(stringStream);
- }
-
- var tabBrowser = Firefox.getTabBrowser();
- if (!tabBrowser)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("window.openNewTab; ERROR No tabBrowser!");
- return;
- }
-
- return tabBrowser.selectedTab = tabBrowser.addTab(url, null, null, postData);
-};
-
-// Iterate over all opened firefox windows of the given type. If the callback returns true
-// the iteration is stopped.
-Win.iterateBrowserWindows = function(windowType, callback)
-{
- var windowList = wm.getZOrderDOMWindowEnumerator(windowType, true);
- if (!windowList.hasMoreElements())
- windowList = wm.getEnumerator(windowType);
-
- while (windowList.hasMoreElements())
- {
- if (callback(windowList.getNext()))
- return true;
- }
-
- return false;
-};
-
-Win.iterateBrowserTabs = function(browserWindow, callback)
-{
- var tabBrowser = browserWindow.getBrowser();
- var numTabs = tabBrowser.browsers.length;
-
- for(var index=0; index<numTabs; index++)
- {
- var currentBrowser = tabBrowser.getBrowserAtIndex(index);
- if (callback(tabBrowser.mTabs[index], currentBrowser))
- return true;
- }
-
- return false;
-};
-
-
-Win.getBrowserByWindow = function(win)
-{
- var browsers = Firefox.getBrowsers();
- for (var i = 0; i < browsers.length; ++i)
- {
- var browser = browsers[i];
- if (browser.contentWindow === win)
- return browser;
- }
-
- return null;
-};
-
-// ********************************************************************************************* //
-
-Win.getWindowId = function(win)
-{
- var util = win.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
- var outerWindowID = null;
- var innerWindowID = "(none)";
-
- try
- {
- outerWindowID = util.outerWindowID;
- innerWindowID = util.currentInnerWindowID;
- }
- catch(exc)
- {
- // no - op
- }
-
- return {
- outer: outerWindowID,
- inner: innerWindowID,
- toString: function() {
- return this.outer+"."+this.inner;
- }
- };
-};
-
-Win.safeGetWindowLocation = function(window)
-{
- try
- {
- if (window)
- {
- if (window.closed)
- return "(window.closed)";
- if ("location" in window)
- return window.location+"";
- else
- return "(no window.location)";
- }
- else
- return "(no context.window)";
- }
- catch (exc)
- {
- if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("TabContext.getWindowLocation failed "+exc, exc);
- FBTrace.sysout("TabContext.getWindowLocation failed window:", window);
- }
-
- return "(getWindowLocation: "+exc+")";
- }
-};
-
-// ********************************************************************************************* //
-
-return Win;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/http",
+ "firebug/chrome/firefox"
+],
+function(FBTrace, Http, Firefox) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Ci = Components.interfaces;
+var Cc = Components.classes;
+
+var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
+
+var Win = {};
+
+var window = {}; // these declarations exist to cause errors if we accidently
+var document = {}; // reference these globals
+
+// ********************************************************************************************* //
+// Crossbrowser API
+
+Win.getWindowProxyIdForWindow = function(win)
+{
+ if (!win)
+ return null;
+
+ var id = Win.getWindowId(win).outerWindowID;
+
+ // xxxJJB, xxxHonza: the id is often null, what could be the problem?
+ // jjb: My guess: just another Mozilla bug
+ if (!id)
+ return Win.getTabIdForWindow(win);
+
+ return id;
+};
+
+Win.getTabForWindow = function(aWindow)
+{
+ aWindow = Win.getRootWindow(aWindow);
+
+ var tabBrowser = Firefox.getTabBrowser();
+ if (!aWindow || !tabBrowser || !tabBrowser.getBrowserIndexForDocument)
+ {
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("getTabForWindow FAIL aWindow: "+aWindow+" tabBrowser: "+tabBrowser, tabBrowser);
+ return null;
+ }
+
+ try
+ {
+ var targetDoc = aWindow.document;
+
+ var tab = null;
+ var targetBrowserIndex = tabBrowser.getBrowserIndexForDocument(targetDoc);
+ if (targetBrowserIndex != -1)
+ {
+ tab = tabBrowser.tabContainer.childNodes[targetBrowserIndex];
+ return tab;
+ }
+ }
+ catch (ex)
+ {
+ }
+
+ return null;
+};
+
+Win.getTabIdForWindow = function(win)
+{
+ var tab = Win.getTabForWindow(win);
+ return tab ? tab.linkedPanel : null;
+};
+
+// ********************************************************************************************* //
+// Window iteration
+
+Win.iterateWindows = function(win, handler)
+{
+ if (!win || !win.document)
+ return;
+
+ handler(win);
+
+ if (win == top || !win.frames)
+ return; // XXXjjb hack for chromeBug
+
+ for (var i = 0; i < win.frames.length; ++i)
+ {
+ var subWin = win.frames[i];
+ if (subWin != win)
+ Win.iterateWindows(subWin, handler);
+ }
+};
+
+Win.getRootWindow = function(win)
+{
+ for (; win; win = win.parent)
+ {
+ if (!win.parent || win == win.parent)
+ return win;
+
+ // When checking the 'win.parent' type we need to use the target
+ // type from the same scope. i.e. from win.parent
+ // Iframes from different domains can use different Window type than
+ // the top level window.
+ if (!(win.parent instanceof win.parent.Window))
+ return win;
+ }
+
+ return null;
+};
+
+// ********************************************************************************************* //
+// Firefox browsing
+
+Win.openNewTab = function(url, postText)
+{
+ if (!url)
+ return;
+
+ var postData = null;
+ if (postText)
+ {
+ var stringStream = Http.getInputStreamFromString(postText);
+ postData = Cc["@mozilla.org/network/mime-input-stream;1"].createInstance(Ci.nsIMIMEInputStream);
+ postData.addHeader("Content-Type", "application/x-www-form-urlencoded");
+ postData.addContentLength = true;
+ postData.setData(stringStream);
+ }
+
+ var tabBrowser = Firefox.getTabBrowser();
+ if (!tabBrowser)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("window.openNewTab; ERROR No tabBrowser!");
+ return;
+ }
+
+ return tabBrowser.selectedTab = tabBrowser.addTab(url, null, null, postData);
+};
+
+// Iterate over all opened firefox windows of the given type. If the callback returns true
+// the iteration is stopped.
+Win.iterateBrowserWindows = function(windowType, callback)
+{
+ var windowList = wm.getZOrderDOMWindowEnumerator(windowType, true);
+ if (!windowList.hasMoreElements())
+ windowList = wm.getEnumerator(windowType);
+
+ while (windowList.hasMoreElements())
+ {
+ if (callback(windowList.getNext()))
+ return true;
+ }
+
+ return false;
+};
+
+Win.iterateBrowserTabs = function(browserWindow, callback)
+{
+ var tabBrowser = browserWindow.getBrowser();
+ var numTabs = tabBrowser.browsers.length;
+
+ for(var index=0; index<numTabs; index++)
+ {
+ var currentBrowser = tabBrowser.getBrowserAtIndex(index);
+ if (callback(tabBrowser.mTabs[index], currentBrowser))
+ return true;
+ }
+
+ return false;
+};
+
+
+Win.getBrowserByWindow = function(win)
+{
+ var browsers = Firefox.getBrowsers();
+ for (var i = 0; i < browsers.length; ++i)
+ {
+ var browser = browsers[i];
+ if (browser.contentWindow === win)
+ return browser;
+ }
+
+ return null;
+};
+
+// ********************************************************************************************* //
+
+Win.getWindowId = function(win)
+{
+ var util = win.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
+ var outerWindowID = null;
+ var innerWindowID = "(none)";
+
+ try
+ {
+ outerWindowID = util.outerWindowID;
+ innerWindowID = util.currentInnerWindowID;
+ }
+ catch(exc)
+ {
+ // no - op
+ }
+
+ return {
+ outer: outerWindowID,
+ inner: innerWindowID,
+ toString: function() {
+ return this.outer+"."+this.inner;
+ }
+ };
+};
+
+Win.safeGetWindowLocation = function(window)
+{
+ try
+ {
+ if (window)
+ {
+ if (window.closed)
+ return "(window.closed)";
+ if ("location" in window)
+ return window.location+"";
+ else
+ return "(no window.location)";
+ }
+ else
+ return "(no context.window)";
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("TabContext.getWindowLocation failed "+exc, exc);
+ FBTrace.sysout("TabContext.getWindowLocation failed window:", window);
+ }
+
+ return "(getWindowLocation: "+exc+")";
+ }
+};
+
+// ********************************************************************************************* //
+
+return Win;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/autoCompleter.js b/content/firebug/console/autoCompleter.js
index 369a60b..33b3ebb 100644
--- a/content/firebug/console/autoCompleter.js
+++ b/content/firebug/console/autoCompleter.js
@@ -1,2438 +1,2438 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/wrapper",
- "firebug/lib/dom",
- "firebug/lib/string",
- "firebug/lib/array",
- "firebug/console/closureInspector",
- "firebug/console/commandLineExposed",
- "firebug/editor/editor"
-],
-function(Obj, Firebug, Domplate, Locale, Events, Wrapper, Dom, Str, Arr, ClosureInspector,
- CommandLineExposed, Editor) {
-
-// ********************************************************************************************* //
-// Constants
-
-const kwActions = ["throw", "return", "in", "instanceof", "delete", "new",
- "typeof", "void", "yield"];
-const kwAll = ["break", "case", "catch", "const", "continue", "debugger",
- "default", "delete", "do", "else", "false", "finally", "for", "function",
- "get", "if", "in", "instanceof", "let", "new", "null", "return", "set",
- "switch", "this", "throw", "true", "try", "typeof", "var", "void", "while",
- "with", "yield"];
-const reOpenBracket = /[\[\(\{]/;
-const reCloseBracket = /[\]\)\}]/;
-const reJSChar = /[a-zA-Z0-9$_]/;
-const reLiteralExpr = /^[ "0-9,]*$/;
-
-var measureCache = {};
-
-// ********************************************************************************************* //
-// JavaScript auto-completion
-
-Firebug.JSAutoCompleter = function(textBox, completionBox, options)
-{
- var popupSize = 40;
-
- this.textBox = textBox;
- this.options = options;
-
- this.completionBox = completionBox;
- this.popupTop = this.popupBottom = null;
-
- this.completionBase = {
- pre: null,
- expr: null,
- forceShowPopup: false,
- candidates: [],
- hiddenCandidates: []
- };
- this.completions = null;
-
- this.revertValue = null;
-
- this.showCompletionPopup = options.showCompletionPopup;
- this.completionPopup = options.completionPopup;
- this.selectedPopupElement = null;
-
- /**
- * If a completion was just performed, revert it. Otherwise do nothing.
- * Returns true iff the completion was reverted.
- */
- this.revert = function(context)
- {
- if (this.revertValue === null)
- return false;
-
- this.textBox.value = this.revertValue;
- var len = this.textBox.value.length;
- setCursorToEOL(this.textBox);
-
- this.complete(context);
- return true;
- };
-
- /**
- * Hide completions temporarily, so they show up again on the next key press.
- */
- this.hide = function()
- {
- this.completionBase = {
- pre: null,
- expr: null,
- forceShowPopup: false,
- candidates: [],
- hiddenCandidates: []
- };
- this.completions = null;
-
- this.showCompletions(false);
- };
-
- /**
- * Completely reset the auto-completer.
- */
- this.reset = function()
- {
- this.hide();
- this.revertValue = null;
- };
-
- /**
- * Hide completions for this expression (/completion base). Appending further
- * characters to the variable name will not make completions appear, but
- * adding, say, a semicolon and typing something else will.
- */
- this.hideForExpression = function()
- {
- this.completionBase.candidates = [];
- this.completionBase.hiddenCandidates = [];
- this.completions = null;
-
- this.showCompletions(false);
- };
-
- /**
- * Check whether it would be acceptable for the return key to evaluate the
- * expression instead of completing things.
- */
- this.acceptReturn = function()
- {
- if (!this.completions)
- return true;
-
- if (this.getCompletionValue() === this.textBox.value)
- {
- // The user wouldn't see a difference if we completed. This can
- // happen for example if you type 'alert' and press enter,
- // regardless of whether or not there exist other completions.
- return true;
- }
-
- return false;
- };
-
- /**
- * Show completions for the current contents of the text box. Either this or
- * hide() must be called when the contents change.
- */
- this.complete = function(context)
- {
- this.revertValue = null;
- this.createCandidates(context);
- this.showCompletions(false);
- };
-
- /**
- * Update the completion base and create completion candidates for the
- * current value of the text box.
- */
- this.createCandidates = function(context)
- {
- var offset = this.textBox.selectionStart;
- if (offset !== this.textBox.value.length)
- {
- this.hide();
- return;
- }
-
- var value = this.textBox.value;
-
- // Create a simplified expression by redacting contents/normalizing
- // delimiters of strings and regexes, to make parsing easier.
- // Give up if the syntax is too weird.
- var svalue = simplifyExpr(value);
- if (svalue === null)
- {
- this.hide();
- return;
- }
-
- if (killCompletions(svalue, value))
- {
- this.hide();
- return;
- }
-
- // Find the expression to be completed.
- var parseStart = getExpressionOffset(svalue);
- var parsed = value.substr(parseStart);
- var sparsed = svalue.substr(parseStart);
-
- // Find which part of it represents the property access.
- var propertyStart = getPropertyOffset(sparsed);
- var prop = parsed.substring(propertyStart);
- var spreExpr = sparsed.substr(0, propertyStart);
- var preExpr = parsed.substr(0, propertyStart);
-
- var spreParsed = svalue.substr(0, parseStart);
- var preParsed = value.substr(0, parseStart);
-
- if (FBTrace.DBG_COMMANDLINE)
- {
- var sep = (parsed.indexOf("|") > -1) ? "^" : "|";
- FBTrace.sysout("Completing: " + preParsed + sep + preExpr + sep + prop);
- }
-
- var prevCompletions = this.completions;
-
- // We only need to calculate a new candidate list if the expression has changed.
- if (preExpr !== this.completionBase.expr || preParsed !== this.completionBase.pre)
- {
- this.completionBase.expr = preExpr;
- this.completionBase.pre = preParsed;
- var ev = autoCompleteEval(context, preExpr, spreExpr,
- preParsed, spreParsed, this.options);
- prevCompletions = null;
- this.completionBase.candidates = ev.completions;
- this.completionBase.hiddenCandidates = ev.hiddenCompletions;
- this.completionBase.forceShowPopup = false;
- }
-
- this.createCompletions(prop, prevCompletions);
- };
-
- /**
- * From a valid completion base, create a list of completions (containing
- * those completion candidates that share a (sometimes case-insensitive)
- * prefix with the user's input) and a default completion. The completions
- * for the previous expression (null if none) are used to help with the
- * latter.
- */
- this.createCompletions = function(prefix, prevCompletions)
- {
- if (!this.completionBase.expr && !prefix)
- {
- // Don't complete "".
- this.completions = null;
- return;
- }
- if (!this.completionBase.candidates.length && !prefix)
- {
- // Don't complete empty objects -> toString.
- this.completions = null;
- return;
- }
-
- var mustMatchFirstLetter = (this.completionBase.expr === "");
- var clist = [
- this.completionBase.candidates,
- this.completionBase.hiddenCandidates
- ], cind = 0;
- var valid = [], ciValid = [];
- var lowPrefix = prefix.toLowerCase();
- while (ciValid.length === 0 && cind < 2)
- {
- var candidates = clist[cind];
- for (var i = 0; i < candidates.length; ++i)
- {
- // Mark a candidate as matching if it matches the prefix case-
- // insensitively, and shares its upper-case characters. The
- // exception to this is that for global completions, the first
- // character must match exactly (see issue 6030).
- var cand = candidates[i], name = cand.name;
- if (!Str.hasPrefix(name.toLowerCase(), lowPrefix))
- continue;
-
- if (mustMatchFirstLetter && name.charAt(0) !== prefix.charAt(0))
- continue;
-
- var fail = false;
- for (var j = 0; j < prefix.length; ++j)
- {
- var ch = prefix.charAt(j);
- if (ch !== ch.toLowerCase() && ch !== name.charAt(j))
- {
- fail = true;
- break;
- }
- }
- if (!fail)
- {
- ciValid.push(cand);
- if (Str.hasPrefix(name, prefix))
- valid.push(cand);
- }
- }
- ++cind;
- }
-
- if (ciValid.length > 0)
- {
- // If possible, default to a candidate matching the case by picking
- // a default from 'valid' and correcting its index.
- var hasMatchingCase = (valid.length > 0);
-
- this.completions = {
- list: (hasMatchingCase ? valid : ciValid),
- prefix: prefix,
- hidePopup: (cind === 2)
- };
- this.completions.index = this.pickDefaultCandidate(prevCompletions);
-
- if (hasMatchingCase)
- {
- var find = valid[this.completions.index];
- this.completions.list = ciValid;
- this.completions.index = ciValid.indexOf(find);
- }
- }
- else
- {
- this.completions = null;
- }
- };
-
- /**
- * Choose a default candidate from the list of completions. The first of all
- * shortest completions is currently used for this, except in some very hacky,
- * but useful, special cases.
- */
- this.pickDefaultCandidate = function(prevCompletions)
- {
- var list = this.completions.list.map(function(x)
- {
- return x.name;
- }), ind;
-
- // If the typed expression is an extension of the previous completion, keep it.
- if (prevCompletions && Str.hasPrefix(this.completions.prefix, prevCompletions.prefix))
- {
- var lastCompletion = prevCompletions.list[prevCompletions.index].name;
- ind = list.indexOf(lastCompletion);
- if (ind !== -1)
- return ind;
- }
-
- // Special-case certain expressions. (But remember to pick prefix-free
- // candidates; otherwise "validVariable<return>" can auto-complete
- // instead of run.)
- var prefixFree = function(name)
- {
- return !list.some(function(x)
- {
- return x.length < name.length && Str.hasPrefix(name, x);
- });
- };
- var special = {
- "": ["document", "console", "frames", "window", "parseInt", "undefined", "navigator",
- "Array", "Math", "Object", "String", "XMLHttpRequest", "Window"],
- "window.": ["console"],
- "location.": ["href"],
- "console.": ["log"],
- "document.": ["getElementById", "addEventListener", "createElement", "documentElement"],
- "Object.prototype.toString.": ["call"]
- };
- if (special.hasOwnProperty(this.completionBase.expr))
- {
- var ar = special[this.completionBase.expr];
- for (var i = 0; i < ar.length; ++i)
- {
- var prop = ar[i];
- if (Str.hasPrefix(prop, this.completions.prefix))
- {
- // Use 'prop' as a completion, if it exists.
- ind = list.indexOf(prop);
- if (ind !== -1 && prefixFree(prop))
- return ind;
- }
- }
- }
-
- // 'prototype' is a good default if it exists.
- ind = list.indexOf("prototype");
- if (ind !== -1 && prefixFree("prototype"))
- return ind;
-
- // Simply pick out the shortest candidate. This works remarkably well.
- ind = 0;
- for (var i = 1; i < list.length; ++i)
- {
- if (list[i].length < list[ind].length)
- ind = i;
- }
-
- // Avoid some completions in favor of others.
- var replacements = {
- "toSource": "toString",
- "toFixed": "toString",
- "watch": "toString",
- "pattern": "parentNode",
- "getSelection": "getEventListeners",
- "inspect": "include",
- "home": "history"
- };
- if (replacements.hasOwnProperty(list[ind]))
- {
- var ind2 = list.indexOf(replacements[list[ind]]);
- if (ind2 !== -1)
- return ind2;
- }
-
- return ind;
- };
-
- /**
- * Go backward or forward by some number of steps in the list of completions.
- * dir is the relative movement in the list (negative for backwards movement).
- */
- this.cycle = function(dir, clamp)
- {
- var ind = this.completions.index + dir;
- if (clamp)
- ind = Math.max(Math.min(ind, this.completions.list.length - 1), 0);
- else if (ind >= this.completions.list.length)
- ind = 0;
- else if (ind < 0)
- ind = this.completions.list.length - 1;
- this.completions.index = ind;
- this.showCompletions(true);
- };
-
- /**
- * Get the property name that is currently selected as a completion (or
- * null if there is none).
- */
- this.getCurrentCompletion = function()
- {
- return (this.completions ? this.completions.list[this.completions.index].name : null);
- };
-
- /**
- * See if we have any completions.
- */
- this.hasCompletions = function()
- {
- return !!this.completions;
- };
-
- /**
- * Get the value the completion box should have for some value of the
- * text box and a selected completion.
- */
- this.getCompletionBoxValue = function()
- {
- var completion = this.getCurrentCompletion();
- if (completion === null)
- return "";
- var userTyped = this.textBox.value;
- var value = this.completionBase.pre + this.completionBase.expr + completion;
- return userTyped + value.substr(userTyped.length);
- };
-
- /**
- * Update the completion box and popup to be consistent with the current
- * state of the auto-completer. If just cycling, the old scolling state
- * for the popup is preserved.
- */
- this.showCompletions = function(cycling)
- {
- this.completionBox.value = this.getCompletionBoxValue();
-
- if (this.completions && (this.completionBase.forceShowPopup ||
- (this.completions.list.length > 1 && this.showCompletionPopup &&
- !this.completions.hidePopup)))
- {
- this.popupCandidates(cycling);
- }
- else
- {
- this.closePopup();
- }
- };
-
- /**
- * Handle a keypress event. Returns true if the auto-completer used up
- * the event and does not want it to propagate further.
- */
- this.handleKeyPress = function(event, context)
- {
- var clearedTabWarning = this.clearTabWarning();
-
- if (Events.isAlt(event))
- return false;
-
- if (event.keyCode === KeyEvent.DOM_VK_TAB &&
- !Events.isControl(event) && !Events.isControlShift(event) &&
- this.textBox.value !== "")
- {
- if (this.completions)
- {
- this.acceptCompletion();
- Events.cancelEvent(event);
- return true;
- }
- else if (this.options.tabWarnings)
- {
- if (clearedTabWarning)
- {
- // Send tab along if the user was warned.
- return false;
- }
-
- this.setTabWarning();
- Events.cancelEvent(event);
- return true;
- }
- }
- else if (event.keyCode === KeyEvent.DOM_VK_RETURN && !this.acceptReturn())
- {
- // Completion on return, when one is user-visible.
- this.acceptCompletion();
- Events.cancelEvent(event);
- return true;
- }
- else if (event.keyCode === KeyEvent.DOM_VK_RIGHT && this.completions &&
- this.textBox.selectionStart === this.textBox.value.length)
- {
- // Complete on right arrow at end of line.
- this.acceptCompletion();
- Events.cancelEvent(event);
- return true;
- }
- else if (event.keyCode === KeyEvent.DOM_VK_ESCAPE)
- {
- if (this.completions)
- {
- this.hideForExpression();
- Events.cancelEvent(event);
- return true;
- }
- else
- {
- // There are no visible completions, but we might still be able to
- // revert a recently performed completion.
- if (this.revert(context))
- {
- Events.cancelEvent(event);
- return true;
- }
- }
- }
- else if (event.keyCode === KeyEvent.DOM_VK_UP ||
- event.keyCode === KeyEvent.DOM_VK_DOWN)
- {
- if (this.completions)
- {
- this.cycle(event.keyCode === KeyEvent.DOM_VK_UP ? -1 : 1, false);
- Events.cancelEvent(event);
- return true;
- }
- }
- else if (event.keyCode === KeyEvent.DOM_VK_PAGE_UP ||
- event.keyCode === KeyEvent.DOM_VK_PAGE_DOWN)
- {
- if (this.completions)
- {
- this.pageCycle(event.keyCode === KeyEvent.DOM_VK_PAGE_UP ? -1 : 1);
- Events.cancelEvent(event);
- return true;
- }
- }
- else if (event.keyCode === KeyEvent.DOM_VK_HOME ||
- event.keyCode === KeyEvent.DOM_VK_END)
- {
- if (this.isPopupOpen())
- {
- this.topCycle(event.keyCode === KeyEvent.DOM_VK_HOME ? -1 : 1);
- Events.cancelEvent(event);
- return true;
- }
- }
- return false;
- };
-
- /**
- * Handle a keydown event.
- */
- this.handleKeyDown = function(event, context)
- {
- if (event.keyCode === KeyEvent.DOM_VK_ESCAPE && this.completions)
- {
- // Close the completion popup on escape in keydown, so that the popup
- // does not close itself and prevent event propagation on keypress.
- // (Unless the popup is only open due to Ctrl+Space, in which case
- // that's precisely what we want.)
- if (!this.forceShowPopup)
- this.closePopup();
- }
- else if (event.keyCode === KeyEvent.DOM_VK_SPACE && Events.isControl(event))
- {
- if (!this.completions)
- {
- // If completions have been hidden, show them again.
- this.hide();
- this.complete(context);
- }
-
- if (this.completions && !this.isPopupOpen())
- {
- // Force-show the completion popup.
- this.completionBase.forceShowPopup = true;
- this.popupCandidates(false);
- }
- }
- };
-
- this.clearTabWarning = function()
- {
- if (this.tabWarning)
- {
- this.completionBox.value = "";
- delete this.tabWarning;
- return true;
- }
- return false;
- };
-
- this.setTabWarning = function()
- {
- this.completionBox.value = this.textBox.value + " " +
- Locale.$STR("firebug.completion.empty");
-
- this.tabWarning = true;
- };
-
- /**
- * Get what should be completed to; this is only vaguely related to what is
- * shown in the completion box.
- */
- this.getCompletionValue = function()
- {
- var property = this.getCurrentCompletion();
- var preParsed = this.completionBase.pre, preExpr = this.completionBase.expr;
- var res = preParsed + preExpr + property;
-
- // Don't adjust index completions.
- if (/^\[['"]$/.test(preExpr.slice(-2)))
- return res;
-
- if (!isValidProperty(property))
- {
- // The property name is actually invalid in free form, so replace
- // it with array syntax.
-
- if (preExpr)
- {
- res = preParsed + preExpr.slice(0, -1);
- }
- else
- {
- // Global variable access - assume the variable is a member of 'window'.
- res = preParsed + "window";
- }
- res += '["' + Str.escapeJS(property) + '"]';
- }
- return res;
- };
-
- /**
- * Accept the current completion into the text box.
- */
- this.acceptCompletion = function()
- {
- var completion = this.getCompletionValue();
- var originalValue = this.textBox.value;
- this.textBox.value = completion;
- setCursorToEOL(this.textBox);
-
- this.hide();
- this.revertValue = originalValue;
- };
-
- this.pageCycle = function(dir)
- {
- var length = this.completions.list.length, selIndex = this.completions.index;
-
- if (!this.isPopupOpen())
- {
- // When no popup is open, cycle by a fixed amount and stop at edges.
- this.cycle(dir * 15, true);
- return;
- }
-
- var top = this.popupTop, bottom = this.popupBottom;
- if (top === 0 && bottom === length)
- {
- // For a single scroll page, act like home/end.
- this.topCycle(dir);
- return;
- }
-
- var immediateTarget;
- if (dir === -1)
- immediateTarget = (top === 0 ? top : top + 2);
- else
- immediateTarget = (bottom === length ? bottom: bottom - 2) - 1;
- if ((selIndex - immediateTarget) * dir < 0)
- {
- // The selection has not yet reached the edge target, so jump to it.
- selIndex = immediateTarget;
- }
- else
- {
- // Show the next page.
- if (dir === -1 && top - popupSize <= 0)
- selIndex = 0;
- else if (dir === 1 && bottom + popupSize >= length)
- selIndex = length - 1;
- else
- selIndex = immediateTarget + dir*popupSize;
- }
-
- this.completions.index = selIndex;
- this.showCompletions(true);
- };
-
- this.topCycle = function(dir)
- {
- if (dir === -1)
- this.completions.index = 0;
- else
- this.completions.index = this.completions.list.length - 1;
- this.showCompletions(true);
- };
-
- this.popupCandidates = function(cycling)
- {
- Dom.eraseNode(this.completionPopup);
- this.selectedPopupElement = null;
-
- var vbox = this.completionPopup.ownerDocument.createElement("vbox");
- vbox.classList.add("fbCommandLineCompletions");
- this.completionPopup.appendChild(vbox);
-
- var title = this.completionPopup.ownerDocument.
- createElementNS("http://www.w3.org/1999/xhtml", "div");
- title.textContent = Locale.$STR("console.Use Arrow keys, Tab or Enter");
- title.classList.add("fbPopupTitle");
- vbox.appendChild(title);
-
- var list = this.completions.list, selIndex = this.completions.index;
-
- if (list.length <= popupSize)
- {
- this.popupTop = 0;
- this.popupBottom = list.length;
- }
- else
- {
- var self = this;
- var setTop = function(val)
- {
- if (val < 0)
- val = 0;
- self.popupTop = val;
- self.popupBottom = val + popupSize;
- if (self.popupBottom > list.length)
- setBottom(list.length);
- };
- var setBottom = function(val)
- {
- if (val > list.length)
- val = list.length;
- self.popupBottom = val;
- self.popupTop = val - popupSize;
- if (self.popupTop < 0)
- setTop(0);
- };
-
- if (!cycling)
- {
- // Show the selection at nearly the bottom of the popup, where
- // it is more local.
- setBottom(selIndex + 3);
- }
- else
- {
- // Scroll the popup such that selIndex fits.
- if (selIndex - 2 < this.popupTop)
- setTop(selIndex - 2);
- else if (selIndex + 3 > this.popupBottom)
- setBottom(selIndex + 3);
- }
- }
-
- var separatorInserted = false;
-
- for (var i = this.popupTop; i < this.popupBottom; i++)
- {
- var prefixLen = this.completions.prefix.length;
- var completion = list[i], name = completion.name;
-
- var hbox = this.completionPopup.ownerDocument.
- createElementNS("http://www.w3.org/1999/xhtml", "div");
- hbox.completionIndex = i;
- hbox.classList.add("completionLine");
- hbox.classList.add("fbPopupEntry");
-
- var pre = this.completionPopup.ownerDocument.
- createElementNS("http://www.w3.org/1999/xhtml", "span");
- var preText = this.completionBase.expr + name.substr(0, prefixLen);
- pre.textContent = preText;
- pre.classList.add("userTypedText");
-
- var post = this.completionPopup.ownerDocument.
- createElementNS("http://www.w3.org/1999/xhtml", "span");
- var postText = name.substr(prefixLen);
- post.textContent = postText;
- post.classList.add("completionText");
-
- if (i === selIndex)
- this.selectedPopupElement = hbox;
-
- if (completion.type === CompletionType.API)
- {
- hbox.classList.add("apiCompletion");
-
- if (!separatorInserted)
- {
- var separator = this.completionPopup.ownerDocument.
- createElementNS("http://www.w3.org/1999/xhtml", "div");
- separator.textContent = Locale.$STR("Firebug Command Line API");
- separator.classList.add("fbPopupSeparator");
- vbox.appendChild(separator);
-
- separatorInserted = true;
- }
- }
-
- if (completion.type === CompletionType.API)
- hbox.classList.add("cmd");
- else
- hbox.classList.add("dom");
-
- hbox.appendChild(pre);
- hbox.appendChild(post);
- vbox.appendChild(hbox);
- }
-
- if (this.selectedPopupElement)
- this.selectedPopupElement.setAttribute("selected", "true");
-
- // Open the popup at the pixel position of the start of the completed
- // expression. The text length times the width of a single character,
- // plus apparent padding, is a good enough approximation of this.
- var chWidth = this.getCharWidth(this.completionBase.pre);
- var offsetX = Math.round(this.completionBase.pre.length * chWidth) + 2;
-
- // xxxHonza: needs to be properly calculated
- offsetX -= 5;
-
- this.completionPopup.openPopup(this.textBox, "before_start", offsetX, 0, false, false);
- };
-
- this.getCharWidth = function(text)
- {
- var size = Firebug.textSize;
- if (!measureCache[size])
- {
- var measurer = this.options.popupMeasurer;
- measurer.style.fontSizeAdjust = this.textBox.style.fontSizeAdjust;
- measureCache[size] = measurer.offsetWidth / 60;
- }
- return measureCache[size];
- };
-
- this.isPopupOpen = function()
- {
- return (this.completionPopup && this.completionPopup.state !== "closed");
- };
-
- this.closePopup = function()
- {
- if (!this.isPopupOpen())
- return;
-
- try
- {
- this.completionPopup.hidePopup();
- this.selectedPopupElement = null;
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("Firebug.JSAutoCompleter.closePopup; EXCEPTION " + err, err);
- }
- };
-
- this.getCompletionPopupElementFromEvent = function(event)
- {
- var selected = event.target;
- while (selected && selected.localName !== "div")
- selected = selected.parentNode;
-
- return (selected && typeof selected.completionIndex !== "undefined" ? selected : null);
- };
-
- this.popupMousedown = function(event)
- {
- var el = this.getCompletionPopupElementFromEvent(event);
- if (!el)
- return;
-
- if (this.selectedPopupElement)
- this.selectedPopupElement.removeAttribute("selected");
-
- this.selectedPopupElement = el;
- this.selectedPopupElement.setAttribute("selected", "true");
- this.completions.index = el.completionIndex;
- this.completionBox.value = this.getCompletionBoxValue();
- };
-
- this.popupScroll = function(event)
- {
- if (event.axis !== event.VERTICAL_AXIS)
- return;
- if (!this.getCompletionPopupElementFromEvent(event))
- return;
- this.cycle(event.detail, true);
- };
-
- this.popupClick = function(event)
- {
- var el = this.getCompletionPopupElementFromEvent(event);
- if (!el)
- return;
-
- this.completions.index = el.completionIndex;
- this.acceptCompletion();
- };
-
- this.popupMousedown = Obj.bind(this.popupMousedown, this);
- this.popupScroll = Obj.bind(this.popupScroll, this);
- this.popupClick = Obj.bind(this.popupClick, this);
-
- /**
- * A destructor function, to be called when the auto-completer is destroyed.
- */
- this.shutdown = function()
- {
- this.completionBox.value = "";
-
- if (this.completionPopup)
- {
- Events.removeEventListener(this.completionPopup, "mousedown", this.popupMousedown, true);
- Events.removeEventListener(this.completionPopup, "DOMMouseScroll", this.popupScroll, true);
- Events.removeEventListener(this.completionPopup, "click", this.popupClick, true);
- }
- };
-
- if (this.completionPopup)
- {
- Events.addEventListener(this.completionPopup, "mousedown", this.popupMousedown, true);
- Events.addEventListener(this.completionPopup, "DOMMouseScroll", this.popupScroll, true);
- Events.addEventListener(this.completionPopup, "click", this.popupClick, true);
- }
-};
-
-/**
- * Transform expressions that use .% into more JavaScript-friendly function calls.
- * (This is unrelated to the auto-completer, but autoCompleter.js has so many nice
- * helper functions.)
- */
-Firebug.JSAutoCompleter.transformScopeOperator = function(expr, fname)
-{
- var sexpr = simplifyExpr(expr);
- if (!sexpr)
- return expr;
- var search = 0;
- for (;;)
- {
- // Find the next occurrance of .%.
- var end = sexpr.indexOf(".%", search);
- if (end === -1)
- break;
-
- var start = getExpressionOffset(sexpr, end);
- if (/^-?[0-9]*$/.test(expr.substring(start, end)))
- {
- // False alarm - the operator was actually a number and the modulo operator.
- search = end + 1;
- }
- else
- {
- // Substitute "expr.%prop" with "scopeGetter(expr).prop", or, if used
- // in a "new" expression, "(scopeGetter(expr)).prop" (so that the scope
- // getter isn't used as a constructor). We don't want to use the first
- // thing unconditionally though, because it messes with ASI.
- var newPos = (start === 0 ? -1 : sexpr.lastIndexOf("new", start-1));
- var hasNew = (newPos !== -1 && !/[a-zA-Z0-9_$.]/.test(sexpr.charAt(newPos-1)) &&
- sexpr.substring(newPos + 3, start).trim() === "");
- var subst = function(expr)
- {
- return expr.substr(0, start) + (hasNew ? "(" : "") + fname + "(" +
- expr.substring(start, end) + ")" + (hasNew ? ")" : "") + "." +
- expr.substr(end+2);
- };
- expr = subst(expr);
- sexpr = subst(sexpr);
-
- search = end + fname.length + (hasNew ? 5 : 3); // |(()).| or |().|
- }
- }
- return expr;
-};
-
-// ********************************************************************************************* //
-
-/**
- * An (abstract) editor with simple JavaScript auto-completion.
- */
-Firebug.JSEditor = function()
-{
-};
-
-with (Domplate) {
-Firebug.JSEditor.prototype = domplate(Firebug.InlineEditor.prototype,
-{
- setupCompleter: function(completionBox, options)
- {
- this.tabNavigation = false;
- this.arrowCompletion = false;
- this.fixedWidth = true;
- this.completionBox = completionBox;
-
- this.autoCompleter = new EditorJSAutoCompleter(this.input, this.completionBox, options);
- },
-
- updateLayout: function()
- {
- // Make sure the completion box stays in sync with the input box.
- Firebug.InlineEditor.prototype.updateLayout.apply(this, arguments);
- this.completionBox.style.width = this.input.style.width;
- this.completionBox.style.height = this.input.style.height;
- },
-
- destroy: function()
- {
- this.autoCompleter.destroy();
- Firebug.InlineEditor.prototype.destroy.call(this);
- },
-
- onKeyPress: function(event)
- {
- var context = this.panel.context;
-
- if (this.getAutoCompleter().handleKeyPress(event, context))
- return;
-
- if (event.keyCode === KeyEvent.DOM_VK_TAB ||
- event.keyCode === KeyEvent.DOM_VK_RETURN)
- {
- Firebug.Editor.stopEditing();
- Events.cancelEvent(event);
- }
- },
-
- onInput: function()
- {
- var context = this.panel.context;
- this.getAutoCompleter().complete(context);
- Firebug.Editor.update();
- }
-});
-}
-
-function EditorJSAutoCompleter(box, completionBox, options)
-{
- var ac = new Firebug.JSAutoCompleter(box, completionBox, options);
-
- this.destroy = Obj.bindFixed(ac.shutdown, ac);
- this.reset = Obj.bindFixed(ac.reset, ac);
- this.complete = Obj.bind(ac.complete, ac);
- this.handleKeyPress = Obj.bind(ac.handleKeyPress, ac);
-}
-
-// ********************************************************************************************* //
-// Auto-completion helpers
-
-/**
- * Try to find the position at which the expression to be completed starts.
- */
-function getExpressionOffset(command, start)
-{
- if (typeof start === "undefined")
- start = command.length;
-
- var bracketCount = 0, instr = false;
-
- // When completing []-accessed properties, start instead from the last [.
- var lastBr = command.lastIndexOf("[", start);
- if (lastBr !== -1 && /^" *$/.test(command.substring(lastBr+1, start)))
- start = lastBr;
-
- for (var i = start-1; i >= 0; --i)
- {
- var c = command[i];
- if (reOpenBracket.test(c))
- {
- if (bracketCount)
- --bracketCount;
- else
- break;
- }
- else if (reCloseBracket.test(c))
- {
- var next = command[i + 1];
- if (bracketCount === 0 && next !== "." && next !== "[")
- break;
- else
- ++bracketCount;
- }
- else if (bracketCount === 0)
- {
- if (c === '"') instr = !instr;
- else if (instr || reJSChar.test(c) || c === "." ||
- (c === "%" && command[i-1] === "."))
- ;
- else
- break;
- }
- }
- ++i;
-
- // The 'new' operator has higher precedence than function calls, so, if
- // present, it should be included if the expression contains a parenthesis.
- var ind = command.indexOf("(", i+1);
- if (i-4 >= 0 && ind !== -1 && ind < start && command.substr(i-4, 4) === "new ")
- {
- i -= 4;
- }
-
- return i;
-}
-
-/**
- * Try to find the position at which the property name of the final property
- * access in an expression starts (for example, 2 in 'a.b').
- */
-function getPropertyOffset(expr)
-{
- var lastBr = expr.lastIndexOf("[");
- if (lastBr !== -1 && /^" *$/.test(expr.substr(lastBr+1)))
- return lastBr+2;
-
- var lastDot = expr.lastIndexOf(".");
- if (lastDot !== -1 && expr.charAt(lastDot+1) === "%")
- return lastDot+2;
-
- return (lastDot === -1 ? 0 : lastDot+1);
-}
-
-/**
- * Get the index of the last non-whitespace character in the range [0, from)
- * in str, or -1 if there is none.
- */
-function prevNonWs(str, from)
-{
- for (var i = from-1; i >= 0; --i)
- {
- if (str.charAt(i) !== " ")
- return i;
- }
- return -1;
-}
-
-/**
- * Find the start of a word consisting of characters matching reJSChar, if
- * str[from] is the last character in the word. (This can be used together
- * with prevNonWs to traverse words backwards from a position.)
- */
-function prevWord(str, from)
-{
- for (var i = from-1; i >= 0; --i)
- {
- if (!reJSChar.test(str.charAt(i)))
- return i+1;
- }
- return 0;
-}
-
-/**
- * Check if a position 'pos', marking the start of a property name, is
- * preceded by a function-declaring keyword.
- */
-function isFunctionName(expr, pos)
-{
- var ind = prevNonWs(expr, pos);
- if (ind === -1 || !reJSChar.test(expr.charAt(ind)))
- return false;
- var word = expr.substring(prevWord(expr, ind), ind+1);
- return (word === "function" || word === "get" || word === "set");
-}
-
-function bwFindMatchingParen(expr, from)
-{
- var bcount = 1;
- for (var i = from-1; i >= 0; --i)
- {
- if (reCloseBracket.test(expr.charAt(i)))
- ++bcount;
- else if (reOpenBracket.test(expr.charAt(i)))
- if (--bcount === 0)
- return i;
- }
- return -1;
-}
-
-/**
- * Check if a '/' at the end of 'expr' would be a regex or a division.
- * May also return null if the expression seems invalid.
- */
-function endingDivIsRegex(expr)
-{
- var kwCont = ["function", "if", "while", "for", "switch", "catch", "with"];
-
- var ind = prevNonWs(expr, expr.length), ch = (ind === -1 ? "{" : expr.charAt(ind));
- if (reJSChar.test(ch))
- {
- // Test if the previous word is a keyword usable like 'kw <expr>'.
- // If so, we have a regex, otherwise, we have a division (a variable
- // or literal being divided by something).
- var w = expr.substring(prevWord(expr, ind), ind+1);
- return (kwActions.indexOf(w) !== -1 || w === "do" || w === "else");
- }
- else if (ch === ")")
- {
- // We have a regex in the cases 'if (...) /blah/' and 'function name(...) /blah/'.
- ind = bwFindMatchingParen(expr, ind);
- if (ind === -1)
- return null;
- ind = prevNonWs(expr, ind);
- if (ind === -1)
- return false;
- if (!reJSChar.test(expr.charAt(ind)))
- return false;
- var wind = prevWord(expr, ind);
- if (kwCont.indexOf(expr.substring(wind, ind+1)) !== -1)
- return true;
- return isFunctionName(expr, wind);
- }
- else if (ch === "]")
- {
- return false;
- }
- return true;
-}
-
-// Check if a "{" in an expression is an object declaration.
-function isObjectDecl(expr, pos)
-{
- var ind = prevNonWs(expr, pos);
- if (ind === -1)
- return false;
- var ch = expr.charAt(ind);
- if (ch === ")" || ch === "{" || ch === "}" || ch === ";")
- return false;
- if (!reJSChar.test(ch))
- return true;
- var w = expr.substring(prevWord(expr, ind), ind+1);
- return (kwActions.indexOf(w) !== -1);
-}
-
-function isCommaProp(expr, start)
-{
- var beg = expr.lastIndexOf(",")+1;
- if (beg < start)
- beg = start;
- while (expr.charAt(beg) === " ")
- ++beg;
- var prop = expr.substr(beg);
- return isValidProperty(prop);
-}
-
-function simplifyExpr(expr)
-{
- var ret = "", len = expr.length, instr = false, strend, inreg = false, inclass, brackets = [];
-
- for (var i = 0; i < len; ++i)
- {
- var ch = expr.charAt(i);
- if (instr)
- {
- if (ch === strend)
- {
- ret += '"';
- instr = false;
- }
- else
- {
- if (ch === "\\" && i+1 !== len)
- {
- ret += " ";
- ++i;
- }
- ret += " ";
- }
- }
- else if (inreg)
- {
- if (inclass && ch === "]")
- inclass = false;
- else if (!inclass && ch === "[")
- inclass = true;
- else if (!inclass && ch === "/")
- {
- // End of regex, eat regex flags
- inreg = false;
- while (i+1 !== len && reJSChar.test(expr.charAt(i+1)))
- {
- ret += " ";
- ++i;
- }
- ret += '"';
- }
- if (inreg)
- {
- if (ch === "\\" && i+1 !== len)
- {
- ret += " ";
- ++i;
- }
- ret += " ";
- }
- }
- else
- {
- if (ch === "'" || ch === '"')
- {
- instr = true;
- strend = ch;
- ret += '"';
- }
- else if (ch === "/")
- {
- var re = endingDivIsRegex(ret);
- if (re === null)
- return null;
- if (re)
- {
- inreg = true;
- ret += '"';
- }
- else
- ret += "/";
- }
- else
- {
- if (reOpenBracket.test(ch))
- brackets.push(ch);
- else if (reCloseBracket.test(ch))
- {
- // Check for mismatched brackets
- if (!brackets.length)
- return null;
- var br = brackets.pop();
- if (br === "(" && ch !== ")")
- return null;
- if (br === "[" && ch !== "]")
- return null;
- if (br === "{" && ch !== "}")
- return null;
- }
- ret += ch;
- }
- }
- }
-
- return ret;
-}
-
-// Check if auto-completion should be killed.
-function killCompletions(expr, origExpr)
-{
- // Make sure there is actually something to complete at the end.
- if (expr.length === 0)
- return true;
-
- if (reJSChar.test(expr[expr.length-1]) ||
- expr.slice(-1) === "." ||
- expr.slice(-2) === ".%")
- {
- // An expression at the end - we're fine.
- }
- else
- {
- var lastBr = expr.lastIndexOf("[");
- if (lastBr !== -1 && /^" *$/.test(expr.substr(lastBr+1)) &&
- origExpr.charAt(lastBr+1) !== "/")
- {
- // Array completions - we're fine.
- }
- else {
- return true;
- }
- }
-
- // Check for 'function i'.
- var ind = expr.lastIndexOf(" ");
- if (isValidProperty(expr.substr(ind+1)) && isFunctionName(expr, ind+1))
- return true;
-
- // Check for '{prop: ..., i'.
- var bwp = bwFindMatchingParen(expr, expr.length);
- if (bwp !== -1 && expr.charAt(bwp) === "{" &&
- isObjectDecl(expr, bwp) && isCommaProp(expr, bwp+1))
- {
- return true;
- }
-
- // Check for 'var prop..., i'.
- var vind = expr.lastIndexOf("var ");
- if (bwp < vind && isCommaProp(expr, vind+4))
- {
- // Note: This doesn't strictly work, because it kills completions even
- // when we have started a new expression and used the comma operator
- // in it (ie. 'var a; a, i'). This happens very seldom though, so it's
- // not really a problem.
- return true;
- }
-
- // Check for 'function f(i'.
- while (bwp !== -1 && expr.charAt(bwp) !== "(")
- {
- bwp = bwFindMatchingParen(expr, bwp);
- }
- if (bwp !== -1)
- {
- var ind = prevNonWs(expr, bwp);
- if (ind !== -1 && reJSChar.test(expr.charAt(ind)))
- {
- var stw = prevWord(expr, ind);
- if (expr.substring(stw, ind+1) === "function")
- return true;
- if (isFunctionName(expr, stw))
- return true;
- }
- }
- return false;
-}
-
-// Types the autocompletion knows about, some of their non-enumerable properties,
-// and the return types of some member functions.
-
-var AutoCompletionKnownTypes = {
- "void": {
- "_fb_ignorePrototype": true
- },
- "Array": {
- "pop": "|void",
- "push": "|void",
- "shift": "|void",
- "unshift": "|void",
- "reverse": "|Array",
- "sort": "|Array",
- "splice": "|Array",
- "concat": "|Array",
- "slice": "|Array",
- "join": "|String",
- "indexOf": "|Number",
- "lastIndexOf": "|Number",
- "filter": "|Array",
- "map": "|Array",
- "reduce": "|void",
- "reduceRight": "|void",
- "every": "|void",
- "forEach": "|void",
- "some": "|void",
- "length": "Number"
- },
- "String": {
- "_fb_contType": "String",
- "split": "|Array",
- "substr": "|String",
- "substring": "|String",
- "charAt": "|String",
- "charCodeAt": "|String",
- "concat": "|String",
- "indexOf": "|Number",
- "lastIndexOf": "|Number",
- "localeCompare": "|Number",
- "match": "|Array",
- "search": "|Number",
- "slice": "|String",
- "replace": "|String",
- "toLowerCase": "|String",
- "toLocaleLowerCase": "|String",
- "toUpperCase": "|String",
- "toLocaleUpperCase": "|String",
- "trim": "|String",
- "length": "Number"
- },
- "RegExp": {
- "test": "|void",
- "exec": "|Array",
- "lastIndex": "Number",
- "ignoreCase": "void",
- "global": "void",
- "multiline": "void",
- "source": "String"
- },
- "Date": {
- "getTime": "|Number",
- "getYear": "|Number",
- "getFullYear": "|Number",
- "getMonth": "|Number",
- "getDate": "|Number",
- "getDay": "|Number",
- "getHours": "|Number",
- "getMinutes": "|Number",
- "getSeconds": "|Number",
- "getMilliseconds": "|Number",
- "getUTCFullYear": "|Number",
- "getUTCMonth": "|Number",
- "getUTCDate": "|Number",
- "getUTCDay": "|Number",
- "getUTCHours": "|Number",
- "getUTCMinutes": "|Number",
- "getUTCSeconds": "|Number",
- "getUTCMilliseconds": "|Number",
- "setTime": "|void",
- "setYear": "|void",
- "setFullYear": "|void",
- "setMonth": "|void",
- "setDate": "|void",
- "setHours": "|void",
- "setMinutes": "|void",
- "setSeconds": "|void",
- "setMilliseconds": "|void",
- "setUTCFullYear": "|void",
- "setUTCMonth": "|void",
- "setUTCDate": "|void",
- "setUTCHours": "|void",
- "setUTCMinutes": "|void",
- "setUTCSeconds": "|void",
- "setUTCMilliseconds": "|void",
- "toUTCString": "|String",
- "toLocaleDateString": "|String",
- "toLocaleTimeString": "|String",
- "toLocaleFormat": "|String",
- "toDateString": "|String",
- "toTimeString": "|String",
- "toISOString": "|String",
- "toGMTString": "|String",
- "toJSON": "|String",
- "toString": "|String",
- "toLocaleString": "|String",
- "getTimezoneOffset": "|Number"
- },
- "Function": {
- "call": "|void",
- "apply": "|void",
- "length": "Number",
- "prototype": "void"
- },
- "HTMLElement": {
- "getElementsByClassName": "|NodeList",
- "getElementsByTagName": "|NodeList",
- "getElementsByTagNameNS": "|NodeList",
- "querySelector": "|HTMLElement",
- "querySelectorAll": "|NodeList",
- "firstChild": "HTMLElement",
- "lastChild": "HTMLElement",
- "firstElementChild": "HTMLElement",
- "lastElementChild": "HTMLElement",
- "parentNode": "HTMLElement",
- "previousSibling": "HTMLElement",
- "nextSibling": "HTMLElement",
- "previousElementSibling": "HTMLElement",
- "nextElementSibling": "HTMLElement",
- "children": "NodeList",
- "childNodes": "NodeList"
- },
- "NodeList": {
- "_fb_contType": "HTMLElement",
- "length": "Number",
- "item": "|HTMLElement",
- "namedItem": "|HTMLElement"
- },
- "Window": {
- "encodeURI": "|String",
- "encodeURIComponent": "|String",
- "decodeURI": "|String",
- "decodeURIComponent": "|String",
- "eval": "|void",
- "parseInt": "|Number",
- "parseFloat": "|Number",
- "isNaN": "|void",
- "isFinite": "|void",
- "NaN": "Number",
- "Math": "Math",
- "undefined": "void",
- "Infinity": "Number"
- },
- "HTMLDocument": {
- "querySelector": "|HTMLElement",
- "querySelectorAll": "|NodeList"
- },
- "Math": {
- "E": "Number",
- "LN2": "Number",
- "LN10": "Number",
- "LOG2E": "Number",
- "LOG10E": "Number",
- "PI": "Number",
- "SQRT1_2": "Number",
- "SQRT2": "Number",
- "abs": "|Number",
- "acos": "|Number",
- "asin": "|Number",
- "atan": "|Number",
- "atan2": "|Number",
- "ceil": "|Number",
- "cos": "|Number",
- "exp": "|Number",
- "floor": "|Number",
- "log": "|Number",
- "max": "|Number",
- "min": "|Number",
- "pow": "|Number",
- "random": "|Number",
- "round": "|Number",
- "sin": "|Number",
- "sqrt": "|Number",
- "tan": "|Number"
- },
- "Number": {
- "valueOf": "|Number",
- "toFixed": "|String",
- "toExponential": "|String",
- "toPrecision": "|String",
- "toLocaleString": "|String",
- "toString": "|String"
- }
-};
-
-var LinkType = {
- "PROPERTY": 0,
- "SCOPED_VARS": 1,
- "INDEX": 2,
- "CALL": 3,
- "RETVAL_HEURISTIC": 4
-};
-
-function getKnownType(t)
-{
- var known = AutoCompletionKnownTypes;
- if (known.hasOwnProperty(t))
- return known[t];
- return null;
-}
-
-function getKnownTypeInfo(r)
-{
- if (r.charAt(0) === "|")
- return {"val": "Function", "ret": r.substr(1)};
- return {"val": r};
-}
-
-function getFakeCompleteKeys(name)
-{
- var ret = [], type = getKnownType(name);
- if (!type)
- return ret;
- for (var prop in type) {
- if (prop.substr(0, 4) !== "_fb_")
- ret.push(prop);
- }
- return ret;
-}
-
-function eatProp(expr, start)
-{
- for (var i = start; i < expr.length; ++i)
- if (!reJSChar.test(expr.charAt(i)))
- break;
- return i;
-}
-
-function matchingBracket(expr, start)
-{
- var count = 1;
- for (var i = start + 1; i < expr.length; ++i) {
- var ch = expr.charAt(i);
- if (reOpenBracket.test(ch))
- ++count;
- else if (reCloseBracket.test(ch))
- if (!--count)
- return i;
- }
- return -1;
-}
-
-function getTypeExtractionExpression(command)
-{
- // Return a JavaScript expression for determining the type / [[Class]] of
- // an object given by another JavaScript expression. For DOM nodes, return
- // HTMLElement instead of HTML[node type]Element, for simplicity.
- var ret = "(function() { var v = " + command + "; ";
- ret += "if (window.HTMLElement && v instanceof HTMLElement) return 'HTMLElement'; ";
- ret += "return Object.prototype.toString.call(v).slice(8, -1);})()";
- return ret;
-}
-
-/**
- * Compare two property names a and b with a custom sort order. The comparison
- * is lexicographical, but treats _ as higher than other letters in the
- * beginning of the word, so that:
- * $ < AutoCompleter < add_widget < additive < _ < _priv < __proto__
- * @return -1, 0 or 1 depending on whether (a < b), (a == b) or (a > b).
- */
-function comparePropertyNames(lhs, rhs)
-{
- var len = Math.min(lhs.length, rhs.length);
- for (var i = 0; i < len; ++i)
- {
- var u1 = (lhs.charAt(i) === "_");
- var u2 = (rhs.charAt(i) === "_");
- if (!u1 && !u2)
- break;
- if (!u1 || !u2)
- return (u1 ? 1 : -1);
- }
-
- if (lhs < rhs)
- return -1;
- return (lhs === rhs ? 0 : 1);
-}
-
-// See autoCompleteEval. This reorders a sorted array to look as if it had been
-// sorted by comparePropertyNames.
-function reorderPropertyNames(ar)
-{
- var buckets = [];
- for (var i = 0; i < ar.length; ++i)
- {
- var s = ar[i];
- if (s.charAt(0) === "_")
- {
- var count = 0, j = 0;
- while (count < s.length && s.charAt(count) === "_")
- ++count;
- --count;
- if (!buckets[count])
- buckets[count] = [];
- buckets[count].push(s);
- }
- }
-
- if (!buckets.length)
- return ar;
-
- var res = [];
- for (var i = 0; i < ar.length; ++i)
- {
- if (ar[i].charAt(0) !== "_")
- res.push(ar[i]);
- }
- for (var i = 0; i < buckets.length; ++i)
- {
- var ar2 = buckets[i];
- if (ar2)
- res.push.apply(res, ar2);
- }
- return res;
-}
-
-function propertiesToHide(expr, obj)
-{
- var ret = [];
-
- // __{define,lookup}[SG]etter__ appear as own properties on lots of DOM objects.
- ret.push("__defineGetter__", "__defineSetter__",
- "__lookupGetter__", "__lookupSetter__");
-
- // function.caller/arguments are deprecated and ugly.
- if (typeof obj === "function")
- ret.push("caller", "arguments");
-
- if (Object.prototype.toString.call(obj) === "[object String]")
- {
- // Unused, cluttery.
- ret.push("toLocaleLowerCase", "toLocaleUpperCase", "quote", "bold",
- "italics", "fixed", "fontsize", "fontcolor", "link", "anchor",
- "strike", "small", "big", "blink", "sup", "sub");
- }
-
- if (expr === "" || expr === "window.")
- {
- // Internal Firefox things.
- ret.push("getInterface", "Components", "XPCNativeWrapper",
- "InstallTrigger", "WindowInternal", "DocumentXBL",
- "startProfiling", "stopProfiling", "pauseProfilers",
- "resumeProfilers", "dumpProfile", "netscape",
- "BoxObject", "BarProp", "BrowserFeedWriter", "ChromeWindow",
- "ElementCSSInlineStyle", "JSWindow", "NSEditableElement",
- "NSRGBAColor", "NSEvent", "NSXPathExpression", "ToString",
- "OpenWindowEventDetail", "Parser", "ParserJS", "Rect",
- "RGBColor", "ROCSSPrimitiveValue", "RequestService",
- "PaintRequest", "PaintRequestList", "WindowUtils",
- "GlobalPropertyInitializer", "GlobalObjectConstructor"
- );
-
- // Hide ourselves.
- ret.push("_firebug", "_firebugUnwrappedDebuggerObject", "__fb_scopedVars");
- }
-
- // Old and ugly.
- if (expr === "document.")
- ret.push("fgColor", "vlinkColor", "linkColor");
- if (expr === "document.body.")
- ret.push("link", "aLink", "vLink");
-
- // Rather universal and feel like built-ins.
- ret.push("valueOf", "toSource", "constructor", "QueryInterface");
-
- return ret;
-}
-
-function setCompletionsFromObject(out, object, context)
-{
- // 'object' is a user-level, non-null object.
- try
- {
- var isObjectPrototype = function(obj)
- {
- // Check if an object is "Object.prototype". This isn't as simple
- // as 'obj === context.window.wrappedJSObject.Object.prototype' due
- // to cross-window properties, nor just '!Object.getPrototypeOf(obj)'
- // because of Object.create.
- return !Object.getPrototypeOf(obj) && "hasOwnProperty" in obj;
- };
-
- var obj = object;
- while (obj !== null)
- {
- var target = (isObjectPrototype(obj) ?
- out.hiddenCompletions : out.completions);
- if (Array.isArray(obj) && obj.length > 4000)
- {
- // The object is a large array. To avoid RangeErrors from
- // `target.push.apply` and a slow `Object.getOwnPropertyNames`,
- // we just skip this level ("length" is also on the prototype,
- // and numeric property would get hidden later anyway).
- }
- else
- {
- target.push.apply(target, Object.getOwnPropertyNames(obj));
- }
- obj = Object.getPrototypeOf(obj);
- }
-
- // As a special case, when completing "Object.prototype." no properties
- // should be hidden.
- if (isObjectPrototype(object))
- {
- out.completions = out.hiddenCompletions;
- out.hiddenCompletions = [];
- }
- else
- {
- // Hide a list of well-chosen annoying properties.
- var hide = propertiesToHide(out.spreExpr, object);
- var hideMap = Object.create(null);
- for (var i = 0; i < hide.length; ++i)
- hideMap[hide[i]] = 1;
- var hideRegex = /^XUL[A-Za-z]+$/;
-
- var newCompletions = [];
- out.completions.forEach(function(prop)
- {
- if (prop in hideMap || hideRegex.test(prop))
- out.hiddenCompletions.push(prop);
- else
- newCompletions.push(prop);
- });
- out.completions = newCompletions;
- }
-
- // Firefox hides __proto__ - add it back.
- if ("__proto__" in object)
- out.hiddenCompletions.push("__proto__");
- }
- catch (exc)
- {
- if (FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("autoCompleter.setCompletionsFromObject failed", exc);
- }
-}
-
-function setCompletionsFromScope(out, object, context)
-{
- out.completions = ClosureInspector.getClosureVariablesList(object, context);
-
- // Hide "arguments"; it almost never holds a value.
- out.completions = Arr.unique(out.completions);
- var ind = out.completions.indexOf("arguments");
- if (ind !== -1)
- {
- out.completions.splice(ind, 1);
- out.hiddenCompletions.push("arguments");
- }
-}
-
-function getNewlyDeclaredNames(js)
-{
- // XXXsimon: In the future, machinery from issue 5291 could perhaps replace this.
- var re = /\b[a-zA-Z_$][a-zA-Z0-9_$]*\b/g;
- var ar = [], match;
- while ((match = re.exec(js)) !== null)
- {
- if (!/[.%]/.test(js.charAt(match.index - 1)) &&
- js.charAt(re.lastIndex) !== ":" && kwAll.indexOf(match[0]) === -1)
- {
- ar.push(match[0]);
- }
- }
- return ar;
-}
-
-function propChainBuildComplete(out, context, tempExpr, result)
-{
- if (out.scopeCompletion)
- {
- if (tempExpr.fake)
- return;
- if (typeof result !== "object" && typeof result !== "function")
- return;
- setCompletionsFromScope(out, result, context);
- return;
- }
-
- var done = function(result)
- {
- if (result == null)
- return;
-
- if (typeof result !== "object" && typeof result !== "function")
- {
- // To avoid slow completions, convert strings to length 0 (numeric
- // properties are hidden anyway).
- if (typeof result === "string")
- result = "";
-
- // Convert the primitive into its scope's matching object type.
- result = Wrapper.getContentView(out.window).Object(result);
- }
- setCompletionsFromObject(out, result, context);
- };
-
- if (tempExpr.fake)
- {
- var name = tempExpr.value.val;
- if (getKnownType(name)._fb_ignorePrototype)
- return;
- var command = name + ".prototype";
- Firebug.CommandLine.evaluate(name + ".prototype", context, context.thisValue, null,
- function found(result, context)
- {
- done(result);
- },
- function failed(result, context) { }
- );
- }
- else
- {
- done(result);
- }
-}
-
-function evalPropChainStep(step, tempExpr, evalChain, out, context)
-{
- if (tempExpr.fake)
- {
- if (step === evalChain.length)
- {
- propChainBuildComplete(out, context, tempExpr);
- return;
- }
-
- var link = evalChain[step], type = link.type;
- if (type === LinkType.PROPERTY || type === LinkType.INDEX)
- {
- // Use the accessed property if it exists, otherwise abort. It
- // would be possible to continue with a 'real' expression of
- // `tempExpr.value.val`.prototype, but since prototypes seldom
- // contain actual values of things this doesn't work very well.
- var mem = (type === LinkType.INDEX ? "_fb_contType" : link.name);
- var t = getKnownType(tempExpr.value.val);
- if (t.hasOwnProperty(mem))
- tempExpr.value = getKnownTypeInfo(t[mem]);
- else
- return;
- }
- else if (type === LinkType.CALL)
- {
- if (tempExpr.value.ret)
- tempExpr.value = getKnownTypeInfo(tempExpr.value.ret);
- else
- return;
- }
- else
- {
- return;
- }
- evalPropChainStep(step+1, tempExpr, evalChain, out, context);
- }
- else
- {
- var funcCommand = null, link, type;
- while (step !== evalChain.length)
- {
- link = evalChain[step];
- type = link.type;
- if (type === LinkType.PROPERTY)
- {
- tempExpr.thisCommand = tempExpr.command;
- tempExpr.command += "." + link.name;
- }
- else if (type === LinkType.SCOPED_VARS)
- {
- tempExpr.thisCommand = "window";
- tempExpr.command += ".%" + link.name;
- }
- else if (type === LinkType.INDEX)
- {
- tempExpr.thisCommand = "window";
- tempExpr.command += "[" + link.cont + "]";
- }
- else if (type === LinkType.CALL)
- {
- if (link.origCont !== null &&
- (link.name.substr(0, 3) === "get" ||
- (link.name.charAt(0) === "$" && link.cont.indexOf(",") === -1)))
- {
- // Names beginning with get or $ are almost always getters, so
- // assume we can safely just call it.
- tempExpr.thisCommand = "window";
- tempExpr.command += "(" + link.origCont + ")";
- }
- else if (!link.name)
- {
- // We cannot know about functions without name; try the
- // heuristic directly.
- link.type = LinkType.RETVAL_HEURISTIC;
- evalPropChainStep(step, tempExpr, evalChain, out, context);
- return;
- }
- else
- {
- funcCommand = getTypeExtractionExpression(tempExpr.thisCommand);
- break;
- }
- }
- else if (type === LinkType.RETVAL_HEURISTIC)
- {
- funcCommand = "Function.prototype.toString.call(" + tempExpr.command + ")";
- break;
- }
- ++step;
- }
-
- var isFunc = (funcCommand !== null), command = (isFunc ? funcCommand : tempExpr.command);
- Firebug.CommandLine.evaluate(command, context, context.thisValue, null,
- function found(result, context)
- {
- if (isFunc)
- {
- if (type === LinkType.CALL)
- {
- if (typeof result !== "string")
- return;
-
- var t = getKnownType(result);
- if (t && t.hasOwnProperty(link.name))
- {
- var propVal = getKnownTypeInfo(t[link.name]);
-
- // Make sure the property is a callable function
- if (!propVal.ret)
- return;
-
- tempExpr.fake = true;
- tempExpr.value = getKnownTypeInfo(propVal.ret);
- evalPropChainStep(step+1, tempExpr, evalChain, out, context);
- }
- else
- {
- // Unknown 'this' type or function name, use
- // heuristics on the function instead.
- link.type = LinkType.RETVAL_HEURISTIC;
- evalPropChainStep(step, tempExpr, evalChain, out, context);
- }
- }
- else if (type === LinkType.RETVAL_HEURISTIC)
- {
- if (typeof result !== "string")
- return;
-
- // Perform some crude heuristics for figuring out the
- // return value of a function based on its contents.
- // It's certainly not perfect, and it's easily fooled
- // into giving wrong results, but it might work in
- // some common cases.
-
- // Check for chaining functions. This is done before
- // checking for nested functions, because completing
- // results of member functions containing nested
- // functions that use 'return this' seems uncommon,
- // and being wrong is not a huge problem.
- if (result.indexOf("return this;") !== -1)
- {
- tempExpr.command = tempExpr.thisCommand;
- tempExpr.thisCommand = "window";
- evalPropChainStep(step+1, tempExpr, evalChain, out, context);
- return;
- }
-
- // Don't support nested functions.
- if (result.lastIndexOf("function") !== 0)
- return;
-
- // Check for arrays.
- if (result.indexOf("return [") !== -1)
- {
- tempExpr.fake = true;
- tempExpr.value = getKnownTypeInfo("Array");
- evalPropChainStep(step+1, tempExpr, evalChain, out, context);
- return;
- }
-
- // Check for 'return new Type(...);', and use the
- // prototype as a pseudo-object for those (since it
- // is probably not a known type that we can fake).
- var newPos = result.indexOf("return new ");
- if (newPos !== -1)
- {
- var rest = result.substr(newPos + 11),
- epos = rest.search(/[^a-zA-Z0-9_$.]/);
- if (epos !== -1 && /[; \t\n(}]/.test(rest.charAt(epos)))
- {
- rest = rest.substring(0, epos);
- var func = tempExpr.command, expr = rest + ".prototype";
- tempExpr.command = "(function() { " +
- "try { return " + func + ".%" + expr + "; } " +
- "catch(e) { return " + expr + "; } " +
- "})()";
- evalPropChainStep(step+1, tempExpr, evalChain, out, context);
- return;
- }
- }
- }
- }
- else
- {
- propChainBuildComplete(out, context, tempExpr, result);
- }
- },
- function failed(result, context) { }
- );
- }
-}
-
-function evalPropChain(out, preExpr, origExpr, context)
-{
- var evalChain = [], linkStart = 0, len = preExpr.length, lastProp = "";
- var tempExpr = {"fake": false, "command": "window", "thisCommand": "window"};
- while (linkStart !== len)
- {
- var ch = preExpr.charAt(linkStart);
- if (linkStart === 0)
- {
- if (preExpr.substr(0, 4) === "new ")
- {
- var parInd = preExpr.indexOf("(");
- tempExpr.command = preExpr.substring(4, parInd) + ".prototype";
- linkStart = matchingBracket(preExpr, parInd) + 1;
- }
- else if (ch === "[")
- {
- tempExpr.fake = true;
- tempExpr.value = getKnownTypeInfo("Array");
- linkStart = matchingBracket(preExpr, linkStart) + 1;
- }
- else if (ch === '"')
- {
- var isRegex = (origExpr.charAt(0) === "/");
- tempExpr.fake = true;
- tempExpr.value = getKnownTypeInfo(isRegex ? "RegExp" : "String");
- linkStart = preExpr.indexOf('"', 1) + 1;
- }
- else if (!isNaN(ch))
- {
- // The expression is really a decimal number.
- return false;
- }
- else if (reJSChar.test(ch))
- {
- // The expression begins with a regular property name
- var nextLink = eatProp(preExpr, linkStart);
- lastProp = preExpr.substring(linkStart, nextLink);
- linkStart = nextLink;
- tempExpr.command = lastProp;
- }
-
- // Syntax error (like '.') or a too complicated expression.
- if (linkStart === 0)
- return false;
- }
- else
- {
- if (ch === ".")
- {
- // Property access
- var scope = (preExpr.charAt(linkStart+1) === "%");
- linkStart += (scope ? 2 : 1);
- var nextLink = eatProp(preExpr, linkStart);
- lastProp = preExpr.substring(linkStart, nextLink);
- linkStart = nextLink;
- evalChain.push({
- "type": (scope ? LinkType.SCOPED_VARS : LinkType.PROPERTY),
- "name": lastProp
- });
- }
- else if (ch === "(")
- {
- // Function call. Save the function name and the arguments if
- // they are safe to evaluate. Currently literals and single
- // variables not occurring previously on the command line are
- // treated as safe.
- var endCont = matchingBracket(preExpr, linkStart);
- var cont = preExpr.substring(linkStart+1, endCont), origCont = null;
- if (reLiteralExpr.test(cont) || (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(cont) &&
- preExpr.lastIndexOf(cont, linkStart) === -1))
- {
- origCont = origExpr.substring(linkStart+1, endCont);
- }
- linkStart = endCont + 1;
- evalChain.push({
- "type": LinkType.CALL,
- "name": lastProp,
- "origCont": origCont,
- "cont": cont
- });
-
- lastProp = "";
- }
- else if (ch === "[")
- {
- // Index. Use the supplied index if it is a literal; otherwise
- // it is probably a loop index with a variable not yet defined
- // (like 'for(var i = 0; i < ar.length; ++i) ar[i].prop'), and
- // '0' seems like a reasonably good guess at a valid index.
- var endInd = matchingBracket(preExpr, linkStart);
- var ind = preExpr.substring(linkStart+1, endInd);
- if (reLiteralExpr.test(ind))
- ind = origExpr.substring(linkStart+1, endInd);
- else
- ind = "0";
- linkStart = endInd+1;
- evalChain.push({"type": LinkType.INDEX, "cont": ind});
- lastProp = "";
- }
- else
- {
- // Syntax error
- return false;
- }
- }
- }
-
- evalPropChainStep(0, tempExpr, evalChain, out, context);
- return true;
-}
-
-
-var CompletionType = {
- "NORMAL": 0,
- "API": 1
-};
-
-function autoCompleteEval(context, preExpr, spreExpr, preParsed, spreParsed, options)
-{
- var out = {
- spreExpr: spreExpr,
- completions: [],
- hiddenCompletions: [],
- window: context.getCurrentGlobal()
- };
- var indexCompletion = false;
-
- try
- {
- if (spreExpr)
- {
- // Complete member variables of some .-chained expression
-
- // In case of array indexing, remove the bracket and set a flag to
- // escape completions.
- out.scopeCompletion = false;
- var len = spreExpr.length;
- if (len >= 2 && spreExpr[len-2] === "[" && spreExpr[len-1] === '"')
- {
- indexCompletion = true;
- out.indexQuoteType = preExpr[len-1];
- len -= 2;
- }
- else if (spreExpr.slice(-2) === ".%")
- {
- out.scopeCompletion = true;
- len -= 2;
- }
- else
- {
- len -= 1;
- }
- spreExpr = spreExpr.substr(0, len);
- preExpr = preExpr.substr(0, len);
-
- if (FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("commandLine.autoCompleteEval pre:'" + preExpr +
- "' spre:'" + spreExpr + "'.");
-
- // Don't auto-complete '.'.
- if (spreExpr === "")
- return out;
-
- evalPropChain(out, spreExpr, preExpr, context);
- }
- else
- {
- // Complete variables from the local scope
-
- var contentView = Wrapper.getContentView(out.window);
- if (context.stopped && options.includeCurrentScope)
- {
- out.completions = Firebug.Debugger.getCurrentFrameKeys(context);
- }
- else if (contentView && contentView.Window &&
- contentView.constructor.toString() === contentView.Window.toString())
- // Cross window type pseudo-comparison
- {
- setCompletionsFromObject(out, contentView, context);
- }
- else // hopefully sandbox in Chromebug
- {
- setCompletionsFromObject(out, context.global, context);
- }
-
- // Add names of variables declared previously in the typed code.
- var previousDeclarations = getNewlyDeclaredNames(spreParsed);
- out.completions.push.apply(out.completions, previousDeclarations);
- }
-
- if (indexCompletion)
- {
- // If we are doing index-completions, add "] to everything.
- function convertQuotes(x)
- {
- x = (out.indexQuoteType === '"') ? Str.escapeJS(x): Str.escapeSingleQuoteJS(x);
- return x + out.indexQuoteType + "]";
- }
- out.completions = out.completions.map(convertQuotes);
- out.hiddenCompletions = out.hiddenCompletions.map(convertQuotes);
- }
- else if (out.completions.indexOf("length") !== -1 && out.completions.indexOf("0") !== -1)
- {
- // ... otherwise remove numeric keys from array-like things.
- var rePositiveNumber = /^[1-9][0-9]*$/;
- out.completions = out.completions.filter(function(x)
- {
- return !rePositiveNumber.test(x) && x !== "0";
- });
- }
-
- // Sort the completions, and avoid duplicates.
- // Note: If we make it possible to show both regular and hidden completions
- // at the same time, completions should shadow hiddenCompletions here.
- // XXX Normally we'd just do sortUnique(completions, comparePropertyNames),
- // but JSD makes that slow (issue 6256). Sort and do manual reordering instead.
- out.completions = reorderPropertyNames(Arr.sortUnique(out.completions));
- out.hiddenCompletions = reorderPropertyNames(Arr.sortUnique(out.hiddenCompletions));
-
- var wrap = function(x)
- {
- return {type: CompletionType.NORMAL, name: x};
- };
- out.completions = out.completions.map(wrap);
- out.hiddenCompletions = out.hiddenCompletions.map(wrap);
-
- // Add things from the Command Line API, if we are signalled to,
- // and it is not unavailable due to being stopped in the debugger
- // (issue 5321).
- if (!spreExpr && options.includeCommandLineAPI && !context.stopped)
- {
- var global = Wrapper.unwrapObject(out.window);
- CommandLineExposed.getAutoCompletionList().forEach(function(name)
- {
- if (!(name in global))
- out.completions.push({type: CompletionType.API, name: name});
- });
- }
-
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS && FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("commandLine.autoCompleteEval FAILED", exc);
- }
- return out;
-}
-
-var reValidJSToken = /^[A-Za-z_$][A-Za-z_$0-9]*$/;
-function isValidProperty(value)
-{
- // Use only string props
- if (typeof(value) != "string")
- return false;
-
- // Use only those props that don't contain unsafe charactes and so need
- // quotation (e.g. object["my prop"] notice the space character).
- // Following expression checks that the name starts with a letter or $_,
- // and there are only letters, numbers or $_ character in the string (no spaces).
-
- return reValidJSToken.test(value);
-}
-
-function setCursorToEOL(input)
-{
- // textbox version, https://developer.mozilla.org/en/XUL/Property/inputField
- // input.inputField.setSelectionRange(len, len);
- input.setSelectionRange(input.value.length, input.value.length);
-}
-
-// ********************************************************************************************* //
-// Registration
-
-return Firebug.JSAutoCompleter;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/wrapper",
+ "firebug/lib/dom",
+ "firebug/lib/string",
+ "firebug/lib/array",
+ "firebug/console/closureInspector",
+ "firebug/console/commandLineExposed",
+ "firebug/editor/editor"
+],
+function(Obj, Firebug, Domplate, Locale, Events, Wrapper, Dom, Str, Arr, ClosureInspector,
+ CommandLineExposed, Editor) {
+
+// ********************************************************************************************* //
+// Constants
+
+const kwActions = ["throw", "return", "in", "instanceof", "delete", "new",
+ "typeof", "void", "yield"];
+const kwAll = ["break", "case", "catch", "const", "continue", "debugger",
+ "default", "delete", "do", "else", "false", "finally", "for", "function",
+ "get", "if", "in", "instanceof", "let", "new", "null", "return", "set",
+ "switch", "this", "throw", "true", "try", "typeof", "var", "void", "while",
+ "with", "yield"];
+const reOpenBracket = /[\[\(\{]/;
+const reCloseBracket = /[\]\)\}]/;
+const reJSChar = /[a-zA-Z0-9$_]/;
+const reLiteralExpr = /^[ "0-9,]*$/;
+
+var measureCache = {};
+
+// ********************************************************************************************* //
+// JavaScript auto-completion
+
+Firebug.JSAutoCompleter = function(textBox, completionBox, options)
+{
+ var popupSize = 40;
+
+ this.textBox = textBox;
+ this.options = options;
+
+ this.completionBox = completionBox;
+ this.popupTop = this.popupBottom = null;
+
+ this.completionBase = {
+ pre: null,
+ expr: null,
+ forceShowPopup: false,
+ candidates: [],
+ hiddenCandidates: []
+ };
+ this.completions = null;
+
+ this.revertValue = null;
+
+ this.showCompletionPopup = options.showCompletionPopup;
+ this.completionPopup = options.completionPopup;
+ this.selectedPopupElement = null;
+
+ /**
+ * If a completion was just performed, revert it. Otherwise do nothing.
+ * Returns true iff the completion was reverted.
+ */
+ this.revert = function(context)
+ {
+ if (this.revertValue === null)
+ return false;
+
+ this.textBox.value = this.revertValue;
+ var len = this.textBox.value.length;
+ setCursorToEOL(this.textBox);
+
+ this.complete(context);
+ return true;
+ };
+
+ /**
+ * Hide completions temporarily, so they show up again on the next key press.
+ */
+ this.hide = function()
+ {
+ this.completionBase = {
+ pre: null,
+ expr: null,
+ forceShowPopup: false,
+ candidates: [],
+ hiddenCandidates: []
+ };
+ this.completions = null;
+
+ this.showCompletions(false);
+ };
+
+ /**
+ * Completely reset the auto-completer.
+ */
+ this.reset = function()
+ {
+ this.hide();
+ this.revertValue = null;
+ };
+
+ /**
+ * Hide completions for this expression (/completion base). Appending further
+ * characters to the variable name will not make completions appear, but
+ * adding, say, a semicolon and typing something else will.
+ */
+ this.hideForExpression = function()
+ {
+ this.completionBase.candidates = [];
+ this.completionBase.hiddenCandidates = [];
+ this.completions = null;
+
+ this.showCompletions(false);
+ };
+
+ /**
+ * Check whether it would be acceptable for the return key to evaluate the
+ * expression instead of completing things.
+ */
+ this.acceptReturn = function()
+ {
+ if (!this.completions)
+ return true;
+
+ if (this.getCompletionValue() === this.textBox.value)
+ {
+ // The user wouldn't see a difference if we completed. This can
+ // happen for example if you type 'alert' and press enter,
+ // regardless of whether or not there exist other completions.
+ return true;
+ }
+
+ return false;
+ };
+
+ /**
+ * Show completions for the current contents of the text box. Either this or
+ * hide() must be called when the contents change.
+ */
+ this.complete = function(context)
+ {
+ this.revertValue = null;
+ this.createCandidates(context);
+ this.showCompletions(false);
+ };
+
+ /**
+ * Update the completion base and create completion candidates for the
+ * current value of the text box.
+ */
+ this.createCandidates = function(context)
+ {
+ var offset = this.textBox.selectionStart;
+ if (offset !== this.textBox.value.length)
+ {
+ this.hide();
+ return;
+ }
+
+ var value = this.textBox.value;
+
+ // Create a simplified expression by redacting contents/normalizing
+ // delimiters of strings and regexes, to make parsing easier.
+ // Give up if the syntax is too weird.
+ var svalue = simplifyExpr(value);
+ if (svalue === null)
+ {
+ this.hide();
+ return;
+ }
+
+ if (killCompletions(svalue, value))
+ {
+ this.hide();
+ return;
+ }
+
+ // Find the expression to be completed.
+ var parseStart = getExpressionOffset(svalue);
+ var parsed = value.substr(parseStart);
+ var sparsed = svalue.substr(parseStart);
+
+ // Find which part of it represents the property access.
+ var propertyStart = getPropertyOffset(sparsed);
+ var prop = parsed.substring(propertyStart);
+ var spreExpr = sparsed.substr(0, propertyStart);
+ var preExpr = parsed.substr(0, propertyStart);
+
+ var spreParsed = svalue.substr(0, parseStart);
+ var preParsed = value.substr(0, parseStart);
+
+ if (FBTrace.DBG_COMMANDLINE)
+ {
+ var sep = (parsed.indexOf("|") > -1) ? "^" : "|";
+ FBTrace.sysout("Completing: " + preParsed + sep + preExpr + sep + prop);
+ }
+
+ var prevCompletions = this.completions;
+
+ // We only need to calculate a new candidate list if the expression has changed.
+ if (preExpr !== this.completionBase.expr || preParsed !== this.completionBase.pre)
+ {
+ this.completionBase.expr = preExpr;
+ this.completionBase.pre = preParsed;
+ var ev = autoCompleteEval(context, preExpr, spreExpr,
+ preParsed, spreParsed, this.options);
+ prevCompletions = null;
+ this.completionBase.candidates = ev.completions;
+ this.completionBase.hiddenCandidates = ev.hiddenCompletions;
+ this.completionBase.forceShowPopup = false;
+ }
+
+ this.createCompletions(prop, prevCompletions);
+ };
+
+ /**
+ * From a valid completion base, create a list of completions (containing
+ * those completion candidates that share a (sometimes case-insensitive)
+ * prefix with the user's input) and a default completion. The completions
+ * for the previous expression (null if none) are used to help with the
+ * latter.
+ */
+ this.createCompletions = function(prefix, prevCompletions)
+ {
+ if (!this.completionBase.expr && !prefix)
+ {
+ // Don't complete "".
+ this.completions = null;
+ return;
+ }
+ if (!this.completionBase.candidates.length && !prefix)
+ {
+ // Don't complete empty objects -> toString.
+ this.completions = null;
+ return;
+ }
+
+ var mustMatchFirstLetter = (this.completionBase.expr === "");
+ var clist = [
+ this.completionBase.candidates,
+ this.completionBase.hiddenCandidates
+ ], cind = 0;
+ var valid = [], ciValid = [];
+ var lowPrefix = prefix.toLowerCase();
+ while (ciValid.length === 0 && cind < 2)
+ {
+ var candidates = clist[cind];
+ for (var i = 0; i < candidates.length; ++i)
+ {
+ // Mark a candidate as matching if it matches the prefix case-
+ // insensitively, and shares its upper-case characters. The
+ // exception to this is that for global completions, the first
+ // character must match exactly (see issue 6030).
+ var cand = candidates[i], name = cand.name;
+ if (!Str.hasPrefix(name.toLowerCase(), lowPrefix))
+ continue;
+
+ if (mustMatchFirstLetter && name.charAt(0) !== prefix.charAt(0))
+ continue;
+
+ var fail = false;
+ for (var j = 0; j < prefix.length; ++j)
+ {
+ var ch = prefix.charAt(j);
+ if (ch !== ch.toLowerCase() && ch !== name.charAt(j))
+ {
+ fail = true;
+ break;
+ }
+ }
+ if (!fail)
+ {
+ ciValid.push(cand);
+ if (Str.hasPrefix(name, prefix))
+ valid.push(cand);
+ }
+ }
+ ++cind;
+ }
+
+ if (ciValid.length > 0)
+ {
+ // If possible, default to a candidate matching the case by picking
+ // a default from 'valid' and correcting its index.
+ var hasMatchingCase = (valid.length > 0);
+
+ this.completions = {
+ list: (hasMatchingCase ? valid : ciValid),
+ prefix: prefix,
+ hidePopup: (cind === 2)
+ };
+ this.completions.index = this.pickDefaultCandidate(prevCompletions);
+
+ if (hasMatchingCase)
+ {
+ var find = valid[this.completions.index];
+ this.completions.list = ciValid;
+ this.completions.index = ciValid.indexOf(find);
+ }
+ }
+ else
+ {
+ this.completions = null;
+ }
+ };
+
+ /**
+ * Choose a default candidate from the list of completions. The first of all
+ * shortest completions is currently used for this, except in some very hacky,
+ * but useful, special cases.
+ */
+ this.pickDefaultCandidate = function(prevCompletions)
+ {
+ var list = this.completions.list.map(function(x)
+ {
+ return x.name;
+ }), ind;
+
+ // If the typed expression is an extension of the previous completion, keep it.
+ if (prevCompletions && Str.hasPrefix(this.completions.prefix, prevCompletions.prefix))
+ {
+ var lastCompletion = prevCompletions.list[prevCompletions.index].name;
+ ind = list.indexOf(lastCompletion);
+ if (ind !== -1)
+ return ind;
+ }
+
+ // Special-case certain expressions. (But remember to pick prefix-free
+ // candidates; otherwise "validVariable<return>" can auto-complete
+ // instead of run.)
+ var prefixFree = function(name)
+ {
+ return !list.some(function(x)
+ {
+ return x.length < name.length && Str.hasPrefix(name, x);
+ });
+ };
+ var special = {
+ "": ["document", "console", "frames", "window", "parseInt", "undefined", "navigator",
+ "Array", "Math", "Object", "String", "XMLHttpRequest", "Window"],
+ "window.": ["console"],
+ "location.": ["href"],
+ "console.": ["log"],
+ "document.": ["getElementById", "addEventListener", "createElement", "documentElement"],
+ "Object.prototype.toString.": ["call"]
+ };
+ if (special.hasOwnProperty(this.completionBase.expr))
+ {
+ var ar = special[this.completionBase.expr];
+ for (var i = 0; i < ar.length; ++i)
+ {
+ var prop = ar[i];
+ if (Str.hasPrefix(prop, this.completions.prefix))
+ {
+ // Use 'prop' as a completion, if it exists.
+ ind = list.indexOf(prop);
+ if (ind !== -1 && prefixFree(prop))
+ return ind;
+ }
+ }
+ }
+
+ // 'prototype' is a good default if it exists.
+ ind = list.indexOf("prototype");
+ if (ind !== -1 && prefixFree("prototype"))
+ return ind;
+
+ // Simply pick out the shortest candidate. This works remarkably well.
+ ind = 0;
+ for (var i = 1; i < list.length; ++i)
+ {
+ if (list[i].length < list[ind].length)
+ ind = i;
+ }
+
+ // Avoid some completions in favor of others.
+ var replacements = {
+ "toSource": "toString",
+ "toFixed": "toString",
+ "watch": "toString",
+ "pattern": "parentNode",
+ "getSelection": "getEventListeners",
+ "inspect": "include",
+ "home": "history"
+ };
+ if (replacements.hasOwnProperty(list[ind]))
+ {
+ var ind2 = list.indexOf(replacements[list[ind]]);
+ if (ind2 !== -1)
+ return ind2;
+ }
+
+ return ind;
+ };
+
+ /**
+ * Go backward or forward by some number of steps in the list of completions.
+ * dir is the relative movement in the list (negative for backwards movement).
+ */
+ this.cycle = function(dir, clamp)
+ {
+ var ind = this.completions.index + dir;
+ if (clamp)
+ ind = Math.max(Math.min(ind, this.completions.list.length - 1), 0);
+ else if (ind >= this.completions.list.length)
+ ind = 0;
+ else if (ind < 0)
+ ind = this.completions.list.length - 1;
+ this.completions.index = ind;
+ this.showCompletions(true);
+ };
+
+ /**
+ * Get the property name that is currently selected as a completion (or
+ * null if there is none).
+ */
+ this.getCurrentCompletion = function()
+ {
+ return (this.completions ? this.completions.list[this.completions.index].name : null);
+ };
+
+ /**
+ * See if we have any completions.
+ */
+ this.hasCompletions = function()
+ {
+ return !!this.completions;
+ };
+
+ /**
+ * Get the value the completion box should have for some value of the
+ * text box and a selected completion.
+ */
+ this.getCompletionBoxValue = function()
+ {
+ var completion = this.getCurrentCompletion();
+ if (completion === null)
+ return "";
+ var userTyped = this.textBox.value;
+ var value = this.completionBase.pre + this.completionBase.expr + completion;
+ return userTyped + value.substr(userTyped.length);
+ };
+
+ /**
+ * Update the completion box and popup to be consistent with the current
+ * state of the auto-completer. If just cycling, the old scolling state
+ * for the popup is preserved.
+ */
+ this.showCompletions = function(cycling)
+ {
+ this.completionBox.value = this.getCompletionBoxValue();
+
+ if (this.completions && (this.completionBase.forceShowPopup ||
+ (this.completions.list.length > 1 && this.showCompletionPopup &&
+ !this.completions.hidePopup)))
+ {
+ this.popupCandidates(cycling);
+ }
+ else
+ {
+ this.closePopup();
+ }
+ };
+
+ /**
+ * Handle a keypress event. Returns true if the auto-completer used up
+ * the event and does not want it to propagate further.
+ */
+ this.handleKeyPress = function(event, context)
+ {
+ var clearedTabWarning = this.clearTabWarning();
+
+ if (Events.isAlt(event))
+ return false;
+
+ if (event.keyCode === KeyEvent.DOM_VK_TAB &&
+ !Events.isControl(event) && !Events.isControlShift(event) &&
+ this.textBox.value !== "")
+ {
+ if (this.completions)
+ {
+ this.acceptCompletion();
+ Events.cancelEvent(event);
+ return true;
+ }
+ else if (this.options.tabWarnings)
+ {
+ if (clearedTabWarning)
+ {
+ // Send tab along if the user was warned.
+ return false;
+ }
+
+ this.setTabWarning();
+ Events.cancelEvent(event);
+ return true;
+ }
+ }
+ else if (event.keyCode === KeyEvent.DOM_VK_RETURN && !this.acceptReturn())
+ {
+ // Completion on return, when one is user-visible.
+ this.acceptCompletion();
+ Events.cancelEvent(event);
+ return true;
+ }
+ else if (event.keyCode === KeyEvent.DOM_VK_RIGHT && this.completions &&
+ this.textBox.selectionStart === this.textBox.value.length)
+ {
+ // Complete on right arrow at end of line.
+ this.acceptCompletion();
+ Events.cancelEvent(event);
+ return true;
+ }
+ else if (event.keyCode === KeyEvent.DOM_VK_ESCAPE)
+ {
+ if (this.completions)
+ {
+ this.hideForExpression();
+ Events.cancelEvent(event);
+ return true;
+ }
+ else
+ {
+ // There are no visible completions, but we might still be able to
+ // revert a recently performed completion.
+ if (this.revert(context))
+ {
+ Events.cancelEvent(event);
+ return true;
+ }
+ }
+ }
+ else if (event.keyCode === KeyEvent.DOM_VK_UP ||
+ event.keyCode === KeyEvent.DOM_VK_DOWN)
+ {
+ if (this.completions)
+ {
+ this.cycle(event.keyCode === KeyEvent.DOM_VK_UP ? -1 : 1, false);
+ Events.cancelEvent(event);
+ return true;
+ }
+ }
+ else if (event.keyCode === KeyEvent.DOM_VK_PAGE_UP ||
+ event.keyCode === KeyEvent.DOM_VK_PAGE_DOWN)
+ {
+ if (this.completions)
+ {
+ this.pageCycle(event.keyCode === KeyEvent.DOM_VK_PAGE_UP ? -1 : 1);
+ Events.cancelEvent(event);
+ return true;
+ }
+ }
+ else if (event.keyCode === KeyEvent.DOM_VK_HOME ||
+ event.keyCode === KeyEvent.DOM_VK_END)
+ {
+ if (this.isPopupOpen())
+ {
+ this.topCycle(event.keyCode === KeyEvent.DOM_VK_HOME ? -1 : 1);
+ Events.cancelEvent(event);
+ return true;
+ }
+ }
+ return false;
+ };
+
+ /**
+ * Handle a keydown event.
+ */
+ this.handleKeyDown = function(event, context)
+ {
+ if (event.keyCode === KeyEvent.DOM_VK_ESCAPE && this.completions)
+ {
+ // Close the completion popup on escape in keydown, so that the popup
+ // does not close itself and prevent event propagation on keypress.
+ // (Unless the popup is only open due to Ctrl+Space, in which case
+ // that's precisely what we want.)
+ if (!this.forceShowPopup)
+ this.closePopup();
+ }
+ else if (event.keyCode === KeyEvent.DOM_VK_SPACE && Events.isControl(event))
+ {
+ if (!this.completions)
+ {
+ // If completions have been hidden, show them again.
+ this.hide();
+ this.complete(context);
+ }
+
+ if (this.completions && !this.isPopupOpen())
+ {
+ // Force-show the completion popup.
+ this.completionBase.forceShowPopup = true;
+ this.popupCandidates(false);
+ }
+ }
+ };
+
+ this.clearTabWarning = function()
+ {
+ if (this.tabWarning)
+ {
+ this.completionBox.value = "";
+ delete this.tabWarning;
+ return true;
+ }
+ return false;
+ };
+
+ this.setTabWarning = function()
+ {
+ this.completionBox.value = this.textBox.value + " " +
+ Locale.$STR("firebug.completion.empty");
+
+ this.tabWarning = true;
+ };
+
+ /**
+ * Get what should be completed to; this is only vaguely related to what is
+ * shown in the completion box.
+ */
+ this.getCompletionValue = function()
+ {
+ var property = this.getCurrentCompletion();
+ var preParsed = this.completionBase.pre, preExpr = this.completionBase.expr;
+ var res = preParsed + preExpr + property;
+
+ // Don't adjust index completions.
+ if (/^\[['"]$/.test(preExpr.slice(-2)))
+ return res;
+
+ if (!isValidProperty(property))
+ {
+ // The property name is actually invalid in free form, so replace
+ // it with array syntax.
+
+ if (preExpr)
+ {
+ res = preParsed + preExpr.slice(0, -1);
+ }
+ else
+ {
+ // Global variable access - assume the variable is a member of 'window'.
+ res = preParsed + "window";
+ }
+ res += '["' + Str.escapeJS(property) + '"]';
+ }
+ return res;
+ };
+
+ /**
+ * Accept the current completion into the text box.
+ */
+ this.acceptCompletion = function()
+ {
+ var completion = this.getCompletionValue();
+ var originalValue = this.textBox.value;
+ this.textBox.value = completion;
+ setCursorToEOL(this.textBox);
+
+ this.hide();
+ this.revertValue = originalValue;
+ };
+
+ this.pageCycle = function(dir)
+ {
+ var length = this.completions.list.length, selIndex = this.completions.index;
+
+ if (!this.isPopupOpen())
+ {
+ // When no popup is open, cycle by a fixed amount and stop at edges.
+ this.cycle(dir * 15, true);
+ return;
+ }
+
+ var top = this.popupTop, bottom = this.popupBottom;
+ if (top === 0 && bottom === length)
+ {
+ // For a single scroll page, act like home/end.
+ this.topCycle(dir);
+ return;
+ }
+
+ var immediateTarget;
+ if (dir === -1)
+ immediateTarget = (top === 0 ? top : top + 2);
+ else
+ immediateTarget = (bottom === length ? bottom: bottom - 2) - 1;
+ if ((selIndex - immediateTarget) * dir < 0)
+ {
+ // The selection has not yet reached the edge target, so jump to it.
+ selIndex = immediateTarget;
+ }
+ else
+ {
+ // Show the next page.
+ if (dir === -1 && top - popupSize <= 0)
+ selIndex = 0;
+ else if (dir === 1 && bottom + popupSize >= length)
+ selIndex = length - 1;
+ else
+ selIndex = immediateTarget + dir*popupSize;
+ }
+
+ this.completions.index = selIndex;
+ this.showCompletions(true);
+ };
+
+ this.topCycle = function(dir)
+ {
+ if (dir === -1)
+ this.completions.index = 0;
+ else
+ this.completions.index = this.completions.list.length - 1;
+ this.showCompletions(true);
+ };
+
+ this.popupCandidates = function(cycling)
+ {
+ Dom.eraseNode(this.completionPopup);
+ this.selectedPopupElement = null;
+
+ var vbox = this.completionPopup.ownerDocument.createElement("vbox");
+ vbox.classList.add("fbCommandLineCompletions");
+ this.completionPopup.appendChild(vbox);
+
+ var title = this.completionPopup.ownerDocument.
+ createElementNS("http://www.w3.org/1999/xhtml", "div");
+ title.textContent = Locale.$STR("console.Use Arrow keys, Tab or Enter");
+ title.classList.add("fbPopupTitle");
+ vbox.appendChild(title);
+
+ var list = this.completions.list, selIndex = this.completions.index;
+
+ if (list.length <= popupSize)
+ {
+ this.popupTop = 0;
+ this.popupBottom = list.length;
+ }
+ else
+ {
+ var self = this;
+ var setTop = function(val)
+ {
+ if (val < 0)
+ val = 0;
+ self.popupTop = val;
+ self.popupBottom = val + popupSize;
+ if (self.popupBottom > list.length)
+ setBottom(list.length);
+ };
+ var setBottom = function(val)
+ {
+ if (val > list.length)
+ val = list.length;
+ self.popupBottom = val;
+ self.popupTop = val - popupSize;
+ if (self.popupTop < 0)
+ setTop(0);
+ };
+
+ if (!cycling)
+ {
+ // Show the selection at nearly the bottom of the popup, where
+ // it is more local.
+ setBottom(selIndex + 3);
+ }
+ else
+ {
+ // Scroll the popup such that selIndex fits.
+ if (selIndex - 2 < this.popupTop)
+ setTop(selIndex - 2);
+ else if (selIndex + 3 > this.popupBottom)
+ setBottom(selIndex + 3);
+ }
+ }
+
+ var separatorInserted = false;
+
+ for (var i = this.popupTop; i < this.popupBottom; i++)
+ {
+ var prefixLen = this.completions.prefix.length;
+ var completion = list[i], name = completion.name;
+
+ var hbox = this.completionPopup.ownerDocument.
+ createElementNS("http://www.w3.org/1999/xhtml", "div");
+ hbox.completionIndex = i;
+ hbox.classList.add("completionLine");
+ hbox.classList.add("fbPopupEntry");
+
+ var pre = this.completionPopup.ownerDocument.
+ createElementNS("http://www.w3.org/1999/xhtml", "span");
+ var preText = this.completionBase.expr + name.substr(0, prefixLen);
+ pre.textContent = preText;
+ pre.classList.add("userTypedText");
+
+ var post = this.completionPopup.ownerDocument.
+ createElementNS("http://www.w3.org/1999/xhtml", "span");
+ var postText = name.substr(prefixLen);
+ post.textContent = postText;
+ post.classList.add("completionText");
+
+ if (i === selIndex)
+ this.selectedPopupElement = hbox;
+
+ if (completion.type === CompletionType.API)
+ {
+ hbox.classList.add("apiCompletion");
+
+ if (!separatorInserted)
+ {
+ var separator = this.completionPopup.ownerDocument.
+ createElementNS("http://www.w3.org/1999/xhtml", "div");
+ separator.textContent = Locale.$STR("Firebug Command Line API");
+ separator.classList.add("fbPopupSeparator");
+ vbox.appendChild(separator);
+
+ separatorInserted = true;
+ }
+ }
+
+ if (completion.type === CompletionType.API)
+ hbox.classList.add("cmd");
+ else
+ hbox.classList.add("dom");
+
+ hbox.appendChild(pre);
+ hbox.appendChild(post);
+ vbox.appendChild(hbox);
+ }
+
+ if (this.selectedPopupElement)
+ this.selectedPopupElement.setAttribute("selected", "true");
+
+ // Open the popup at the pixel position of the start of the completed
+ // expression. The text length times the width of a single character,
+ // plus apparent padding, is a good enough approximation of this.
+ var chWidth = this.getCharWidth(this.completionBase.pre);
+ var offsetX = Math.round(this.completionBase.pre.length * chWidth) + 2;
+
+ // xxxHonza: needs to be properly calculated
+ offsetX -= 5;
+
+ this.completionPopup.openPopup(this.textBox, "before_start", offsetX, 0, false, false);
+ };
+
+ this.getCharWidth = function(text)
+ {
+ var size = Firebug.textSize;
+ if (!measureCache[size])
+ {
+ var measurer = this.options.popupMeasurer;
+ measurer.style.fontSizeAdjust = this.textBox.style.fontSizeAdjust;
+ measureCache[size] = measurer.offsetWidth / 60;
+ }
+ return measureCache[size];
+ };
+
+ this.isPopupOpen = function()
+ {
+ return (this.completionPopup && this.completionPopup.state !== "closed");
+ };
+
+ this.closePopup = function()
+ {
+ if (!this.isPopupOpen())
+ return;
+
+ try
+ {
+ this.completionPopup.hidePopup();
+ this.selectedPopupElement = null;
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Firebug.JSAutoCompleter.closePopup; EXCEPTION " + err, err);
+ }
+ };
+
+ this.getCompletionPopupElementFromEvent = function(event)
+ {
+ var selected = event.target;
+ while (selected && selected.localName !== "div")
+ selected = selected.parentNode;
+
+ return (selected && typeof selected.completionIndex !== "undefined" ? selected : null);
+ };
+
+ this.popupMousedown = function(event)
+ {
+ var el = this.getCompletionPopupElementFromEvent(event);
+ if (!el)
+ return;
+
+ if (this.selectedPopupElement)
+ this.selectedPopupElement.removeAttribute("selected");
+
+ this.selectedPopupElement = el;
+ this.selectedPopupElement.setAttribute("selected", "true");
+ this.completions.index = el.completionIndex;
+ this.completionBox.value = this.getCompletionBoxValue();
+ };
+
+ this.popupScroll = function(event)
+ {
+ if (event.axis !== event.VERTICAL_AXIS)
+ return;
+ if (!this.getCompletionPopupElementFromEvent(event))
+ return;
+ this.cycle(event.detail, true);
+ };
+
+ this.popupClick = function(event)
+ {
+ var el = this.getCompletionPopupElementFromEvent(event);
+ if (!el)
+ return;
+
+ this.completions.index = el.completionIndex;
+ this.acceptCompletion();
+ };
+
+ this.popupMousedown = Obj.bind(this.popupMousedown, this);
+ this.popupScroll = Obj.bind(this.popupScroll, this);
+ this.popupClick = Obj.bind(this.popupClick, this);
+
+ /**
+ * A destructor function, to be called when the auto-completer is destroyed.
+ */
+ this.shutdown = function()
+ {
+ this.completionBox.value = "";
+
+ if (this.completionPopup)
+ {
+ Events.removeEventListener(this.completionPopup, "mousedown", this.popupMousedown, true);
+ Events.removeEventListener(this.completionPopup, "DOMMouseScroll", this.popupScroll, true);
+ Events.removeEventListener(this.completionPopup, "click", this.popupClick, true);
+ }
+ };
+
+ if (this.completionPopup)
+ {
+ Events.addEventListener(this.completionPopup, "mousedown", this.popupMousedown, true);
+ Events.addEventListener(this.completionPopup, "DOMMouseScroll", this.popupScroll, true);
+ Events.addEventListener(this.completionPopup, "click", this.popupClick, true);
+ }
+};
+
+/**
+ * Transform expressions that use .% into more JavaScript-friendly function calls.
+ * (This is unrelated to the auto-completer, but autoCompleter.js has so many nice
+ * helper functions.)
+ */
+Firebug.JSAutoCompleter.transformScopeOperator = function(expr, fname)
+{
+ var sexpr = simplifyExpr(expr);
+ if (!sexpr)
+ return expr;
+ var search = 0;
+ for (;;)
+ {
+ // Find the next occurrance of .%.
+ var end = sexpr.indexOf(".%", search);
+ if (end === -1)
+ break;
+
+ var start = getExpressionOffset(sexpr, end);
+ if (/^-?[0-9]*$/.test(expr.substring(start, end)))
+ {
+ // False alarm - the operator was actually a number and the modulo operator.
+ search = end + 1;
+ }
+ else
+ {
+ // Substitute "expr.%prop" with "scopeGetter(expr).prop", or, if used
+ // in a "new" expression, "(scopeGetter(expr)).prop" (so that the scope
+ // getter isn't used as a constructor). We don't want to use the first
+ // thing unconditionally though, because it messes with ASI.
+ var newPos = (start === 0 ? -1 : sexpr.lastIndexOf("new", start-1));
+ var hasNew = (newPos !== -1 && !/[a-zA-Z0-9_$.]/.test(sexpr.charAt(newPos-1)) &&
+ sexpr.substring(newPos + 3, start).trim() === "");
+ var subst = function(expr)
+ {
+ return expr.substr(0, start) + (hasNew ? "(" : "") + fname + "(" +
+ expr.substring(start, end) + ")" + (hasNew ? ")" : "") + "." +
+ expr.substr(end+2);
+ };
+ expr = subst(expr);
+ sexpr = subst(sexpr);
+
+ search = end + fname.length + (hasNew ? 5 : 3); // |(()).| or |().|
+ }
+ }
+ return expr;
+};
+
+// ********************************************************************************************* //
+
+/**
+ * An (abstract) editor with simple JavaScript auto-completion.
+ */
+Firebug.JSEditor = function()
+{
+};
+
+with (Domplate) {
+Firebug.JSEditor.prototype = domplate(Firebug.InlineEditor.prototype,
+{
+ setupCompleter: function(completionBox, options)
+ {
+ this.tabNavigation = false;
+ this.arrowCompletion = false;
+ this.fixedWidth = true;
+ this.completionBox = completionBox;
+
+ this.autoCompleter = new EditorJSAutoCompleter(this.input, this.completionBox, options);
+ },
+
+ updateLayout: function()
+ {
+ // Make sure the completion box stays in sync with the input box.
+ Firebug.InlineEditor.prototype.updateLayout.apply(this, arguments);
+ this.completionBox.style.width = this.input.style.width;
+ this.completionBox.style.height = this.input.style.height;
+ },
+
+ destroy: function()
+ {
+ this.autoCompleter.destroy();
+ Firebug.InlineEditor.prototype.destroy.call(this);
+ },
+
+ onKeyPress: function(event)
+ {
+ var context = this.panel.context;
+
+ if (this.getAutoCompleter().handleKeyPress(event, context))
+ return;
+
+ if (event.keyCode === KeyEvent.DOM_VK_TAB ||
+ event.keyCode === KeyEvent.DOM_VK_RETURN)
+ {
+ Firebug.Editor.stopEditing();
+ Events.cancelEvent(event);
+ }
+ },
+
+ onInput: function()
+ {
+ var context = this.panel.context;
+ this.getAutoCompleter().complete(context);
+ Firebug.Editor.update();
+ }
+});
+}
+
+function EditorJSAutoCompleter(box, completionBox, options)
+{
+ var ac = new Firebug.JSAutoCompleter(box, completionBox, options);
+
+ this.destroy = Obj.bindFixed(ac.shutdown, ac);
+ this.reset = Obj.bindFixed(ac.reset, ac);
+ this.complete = Obj.bind(ac.complete, ac);
+ this.handleKeyPress = Obj.bind(ac.handleKeyPress, ac);
+}
+
+// ********************************************************************************************* //
+// Auto-completion helpers
+
+/**
+ * Try to find the position at which the expression to be completed starts.
+ */
+function getExpressionOffset(command, start)
+{
+ if (typeof start === "undefined")
+ start = command.length;
+
+ var bracketCount = 0, instr = false;
+
+ // When completing []-accessed properties, start instead from the last [.
+ var lastBr = command.lastIndexOf("[", start);
+ if (lastBr !== -1 && /^" *$/.test(command.substring(lastBr+1, start)))
+ start = lastBr;
+
+ for (var i = start-1; i >= 0; --i)
+ {
+ var c = command[i];
+ if (reOpenBracket.test(c))
+ {
+ if (bracketCount)
+ --bracketCount;
+ else
+ break;
+ }
+ else if (reCloseBracket.test(c))
+ {
+ var next = command[i + 1];
+ if (bracketCount === 0 && next !== "." && next !== "[")
+ break;
+ else
+ ++bracketCount;
+ }
+ else if (bracketCount === 0)
+ {
+ if (c === '"') instr = !instr;
+ else if (instr || reJSChar.test(c) || c === "." ||
+ (c === "%" && command[i-1] === "."))
+ ;
+ else
+ break;
+ }
+ }
+ ++i;
+
+ // The 'new' operator has higher precedence than function calls, so, if
+ // present, it should be included if the expression contains a parenthesis.
+ var ind = command.indexOf("(", i+1);
+ if (i-4 >= 0 && ind !== -1 && ind < start && command.substr(i-4, 4) === "new ")
+ {
+ i -= 4;
+ }
+
+ return i;
+}
+
+/**
+ * Try to find the position at which the property name of the final property
+ * access in an expression starts (for example, 2 in 'a.b').
+ */
+function getPropertyOffset(expr)
+{
+ var lastBr = expr.lastIndexOf("[");
+ if (lastBr !== -1 && /^" *$/.test(expr.substr(lastBr+1)))
+ return lastBr+2;
+
+ var lastDot = expr.lastIndexOf(".");
+ if (lastDot !== -1 && expr.charAt(lastDot+1) === "%")
+ return lastDot+2;
+
+ return (lastDot === -1 ? 0 : lastDot+1);
+}
+
+/**
+ * Get the index of the last non-whitespace character in the range [0, from)
+ * in str, or -1 if there is none.
+ */
+function prevNonWs(str, from)
+{
+ for (var i = from-1; i >= 0; --i)
+ {
+ if (str.charAt(i) !== " ")
+ return i;
+ }
+ return -1;
+}
+
+/**
+ * Find the start of a word consisting of characters matching reJSChar, if
+ * str[from] is the last character in the word. (This can be used together
+ * with prevNonWs to traverse words backwards from a position.)
+ */
+function prevWord(str, from)
+{
+ for (var i = from-1; i >= 0; --i)
+ {
+ if (!reJSChar.test(str.charAt(i)))
+ return i+1;
+ }
+ return 0;
+}
+
+/**
+ * Check if a position 'pos', marking the start of a property name, is
+ * preceded by a function-declaring keyword.
+ */
+function isFunctionName(expr, pos)
+{
+ var ind = prevNonWs(expr, pos);
+ if (ind === -1 || !reJSChar.test(expr.charAt(ind)))
+ return false;
+ var word = expr.substring(prevWord(expr, ind), ind+1);
+ return (word === "function" || word === "get" || word === "set");
+}
+
+function bwFindMatchingParen(expr, from)
+{
+ var bcount = 1;
+ for (var i = from-1; i >= 0; --i)
+ {
+ if (reCloseBracket.test(expr.charAt(i)))
+ ++bcount;
+ else if (reOpenBracket.test(expr.charAt(i)))
+ if (--bcount === 0)
+ return i;
+ }
+ return -1;
+}
+
+/**
+ * Check if a '/' at the end of 'expr' would be a regex or a division.
+ * May also return null if the expression seems invalid.
+ */
+function endingDivIsRegex(expr)
+{
+ var kwCont = ["function", "if", "while", "for", "switch", "catch", "with"];
+
+ var ind = prevNonWs(expr, expr.length), ch = (ind === -1 ? "{" : expr.charAt(ind));
+ if (reJSChar.test(ch))
+ {
+ // Test if the previous word is a keyword usable like 'kw <expr>'.
+ // If so, we have a regex, otherwise, we have a division (a variable
+ // or literal being divided by something).
+ var w = expr.substring(prevWord(expr, ind), ind+1);
+ return (kwActions.indexOf(w) !== -1 || w === "do" || w === "else");
+ }
+ else if (ch === ")")
+ {
+ // We have a regex in the cases 'if (...) /blah/' and 'function name(...) /blah/'.
+ ind = bwFindMatchingParen(expr, ind);
+ if (ind === -1)
+ return null;
+ ind = prevNonWs(expr, ind);
+ if (ind === -1)
+ return false;
+ if (!reJSChar.test(expr.charAt(ind)))
+ return false;
+ var wind = prevWord(expr, ind);
+ if (kwCont.indexOf(expr.substring(wind, ind+1)) !== -1)
+ return true;
+ return isFunctionName(expr, wind);
+ }
+ else if (ch === "]")
+ {
+ return false;
+ }
+ return true;
+}
+
+// Check if a "{" in an expression is an object declaration.
+function isObjectDecl(expr, pos)
+{
+ var ind = prevNonWs(expr, pos);
+ if (ind === -1)
+ return false;
+ var ch = expr.charAt(ind);
+ if (ch === ")" || ch === "{" || ch === "}" || ch === ";")
+ return false;
+ if (!reJSChar.test(ch))
+ return true;
+ var w = expr.substring(prevWord(expr, ind), ind+1);
+ return (kwActions.indexOf(w) !== -1);
+}
+
+function isCommaProp(expr, start)
+{
+ var beg = expr.lastIndexOf(",")+1;
+ if (beg < start)
+ beg = start;
+ while (expr.charAt(beg) === " ")
+ ++beg;
+ var prop = expr.substr(beg);
+ return isValidProperty(prop);
+}
+
+function simplifyExpr(expr)
+{
+ var ret = "", len = expr.length, instr = false, strend, inreg = false, inclass, brackets = [];
+
+ for (var i = 0; i < len; ++i)
+ {
+ var ch = expr.charAt(i);
+ if (instr)
+ {
+ if (ch === strend)
+ {
+ ret += '"';
+ instr = false;
+ }
+ else
+ {
+ if (ch === "\\" && i+1 !== len)
+ {
+ ret += " ";
+ ++i;
+ }
+ ret += " ";
+ }
+ }
+ else if (inreg)
+ {
+ if (inclass && ch === "]")
+ inclass = false;
+ else if (!inclass && ch === "[")
+ inclass = true;
+ else if (!inclass && ch === "/")
+ {
+ // End of regex, eat regex flags
+ inreg = false;
+ while (i+1 !== len && reJSChar.test(expr.charAt(i+1)))
+ {
+ ret += " ";
+ ++i;
+ }
+ ret += '"';
+ }
+ if (inreg)
+ {
+ if (ch === "\\" && i+1 !== len)
+ {
+ ret += " ";
+ ++i;
+ }
+ ret += " ";
+ }
+ }
+ else
+ {
+ if (ch === "'" || ch === '"')
+ {
+ instr = true;
+ strend = ch;
+ ret += '"';
+ }
+ else if (ch === "/")
+ {
+ var re = endingDivIsRegex(ret);
+ if (re === null)
+ return null;
+ if (re)
+ {
+ inreg = true;
+ ret += '"';
+ }
+ else
+ ret += "/";
+ }
+ else
+ {
+ if (reOpenBracket.test(ch))
+ brackets.push(ch);
+ else if (reCloseBracket.test(ch))
+ {
+ // Check for mismatched brackets
+ if (!brackets.length)
+ return null;
+ var br = brackets.pop();
+ if (br === "(" && ch !== ")")
+ return null;
+ if (br === "[" && ch !== "]")
+ return null;
+ if (br === "{" && ch !== "}")
+ return null;
+ }
+ ret += ch;
+ }
+ }
+ }
+
+ return ret;
+}
+
+// Check if auto-completion should be killed.
+function killCompletions(expr, origExpr)
+{
+ // Make sure there is actually something to complete at the end.
+ if (expr.length === 0)
+ return true;
+
+ if (reJSChar.test(expr[expr.length-1]) ||
+ expr.slice(-1) === "." ||
+ expr.slice(-2) === ".%")
+ {
+ // An expression at the end - we're fine.
+ }
+ else
+ {
+ var lastBr = expr.lastIndexOf("[");
+ if (lastBr !== -1 && /^" *$/.test(expr.substr(lastBr+1)) &&
+ origExpr.charAt(lastBr+1) !== "/")
+ {
+ // Array completions - we're fine.
+ }
+ else {
+ return true;
+ }
+ }
+
+ // Check for 'function i'.
+ var ind = expr.lastIndexOf(" ");
+ if (isValidProperty(expr.substr(ind+1)) && isFunctionName(expr, ind+1))
+ return true;
+
+ // Check for '{prop: ..., i'.
+ var bwp = bwFindMatchingParen(expr, expr.length);
+ if (bwp !== -1 && expr.charAt(bwp) === "{" &&
+ isObjectDecl(expr, bwp) && isCommaProp(expr, bwp+1))
+ {
+ return true;
+ }
+
+ // Check for 'var prop..., i'.
+ var vind = expr.lastIndexOf("var ");
+ if (bwp < vind && isCommaProp(expr, vind+4))
+ {
+ // Note: This doesn't strictly work, because it kills completions even
+ // when we have started a new expression and used the comma operator
+ // in it (ie. 'var a; a, i'). This happens very seldom though, so it's
+ // not really a problem.
+ return true;
+ }
+
+ // Check for 'function f(i'.
+ while (bwp !== -1 && expr.charAt(bwp) !== "(")
+ {
+ bwp = bwFindMatchingParen(expr, bwp);
+ }
+ if (bwp !== -1)
+ {
+ var ind = prevNonWs(expr, bwp);
+ if (ind !== -1 && reJSChar.test(expr.charAt(ind)))
+ {
+ var stw = prevWord(expr, ind);
+ if (expr.substring(stw, ind+1) === "function")
+ return true;
+ if (isFunctionName(expr, stw))
+ return true;
+ }
+ }
+ return false;
+}
+
+// Types the autocompletion knows about, some of their non-enumerable properties,
+// and the return types of some member functions.
+
+var AutoCompletionKnownTypes = {
+ "void": {
+ "_fb_ignorePrototype": true
+ },
+ "Array": {
+ "pop": "|void",
+ "push": "|void",
+ "shift": "|void",
+ "unshift": "|void",
+ "reverse": "|Array",
+ "sort": "|Array",
+ "splice": "|Array",
+ "concat": "|Array",
+ "slice": "|Array",
+ "join": "|String",
+ "indexOf": "|Number",
+ "lastIndexOf": "|Number",
+ "filter": "|Array",
+ "map": "|Array",
+ "reduce": "|void",
+ "reduceRight": "|void",
+ "every": "|void",
+ "forEach": "|void",
+ "some": "|void",
+ "length": "Number"
+ },
+ "String": {
+ "_fb_contType": "String",
+ "split": "|Array",
+ "substr": "|String",
+ "substring": "|String",
+ "charAt": "|String",
+ "charCodeAt": "|String",
+ "concat": "|String",
+ "indexOf": "|Number",
+ "lastIndexOf": "|Number",
+ "localeCompare": "|Number",
+ "match": "|Array",
+ "search": "|Number",
+ "slice": "|String",
+ "replace": "|String",
+ "toLowerCase": "|String",
+ "toLocaleLowerCase": "|String",
+ "toUpperCase": "|String",
+ "toLocaleUpperCase": "|String",
+ "trim": "|String",
+ "length": "Number"
+ },
+ "RegExp": {
+ "test": "|void",
+ "exec": "|Array",
+ "lastIndex": "Number",
+ "ignoreCase": "void",
+ "global": "void",
+ "multiline": "void",
+ "source": "String"
+ },
+ "Date": {
+ "getTime": "|Number",
+ "getYear": "|Number",
+ "getFullYear": "|Number",
+ "getMonth": "|Number",
+ "getDate": "|Number",
+ "getDay": "|Number",
+ "getHours": "|Number",
+ "getMinutes": "|Number",
+ "getSeconds": "|Number",
+ "getMilliseconds": "|Number",
+ "getUTCFullYear": "|Number",
+ "getUTCMonth": "|Number",
+ "getUTCDate": "|Number",
+ "getUTCDay": "|Number",
+ "getUTCHours": "|Number",
+ "getUTCMinutes": "|Number",
+ "getUTCSeconds": "|Number",
+ "getUTCMilliseconds": "|Number",
+ "setTime": "|void",
+ "setYear": "|void",
+ "setFullYear": "|void",
+ "setMonth": "|void",
+ "setDate": "|void",
+ "setHours": "|void",
+ "setMinutes": "|void",
+ "setSeconds": "|void",
+ "setMilliseconds": "|void",
+ "setUTCFullYear": "|void",
+ "setUTCMonth": "|void",
+ "setUTCDate": "|void",
+ "setUTCHours": "|void",
+ "setUTCMinutes": "|void",
+ "setUTCSeconds": "|void",
+ "setUTCMilliseconds": "|void",
+ "toUTCString": "|String",
+ "toLocaleDateString": "|String",
+ "toLocaleTimeString": "|String",
+ "toLocaleFormat": "|String",
+ "toDateString": "|String",
+ "toTimeString": "|String",
+ "toISOString": "|String",
+ "toGMTString": "|String",
+ "toJSON": "|String",
+ "toString": "|String",
+ "toLocaleString": "|String",
+ "getTimezoneOffset": "|Number"
+ },
+ "Function": {
+ "call": "|void",
+ "apply": "|void",
+ "length": "Number",
+ "prototype": "void"
+ },
+ "HTMLElement": {
+ "getElementsByClassName": "|NodeList",
+ "getElementsByTagName": "|NodeList",
+ "getElementsByTagNameNS": "|NodeList",
+ "querySelector": "|HTMLElement",
+ "querySelectorAll": "|NodeList",
+ "firstChild": "HTMLElement",
+ "lastChild": "HTMLElement",
+ "firstElementChild": "HTMLElement",
+ "lastElementChild": "HTMLElement",
+ "parentNode": "HTMLElement",
+ "previousSibling": "HTMLElement",
+ "nextSibling": "HTMLElement",
+ "previousElementSibling": "HTMLElement",
+ "nextElementSibling": "HTMLElement",
+ "children": "NodeList",
+ "childNodes": "NodeList"
+ },
+ "NodeList": {
+ "_fb_contType": "HTMLElement",
+ "length": "Number",
+ "item": "|HTMLElement",
+ "namedItem": "|HTMLElement"
+ },
+ "Window": {
+ "encodeURI": "|String",
+ "encodeURIComponent": "|String",
+ "decodeURI": "|String",
+ "decodeURIComponent": "|String",
+ "eval": "|void",
+ "parseInt": "|Number",
+ "parseFloat": "|Number",
+ "isNaN": "|void",
+ "isFinite": "|void",
+ "NaN": "Number",
+ "Math": "Math",
+ "undefined": "void",
+ "Infinity": "Number"
+ },
+ "HTMLDocument": {
+ "querySelector": "|HTMLElement",
+ "querySelectorAll": "|NodeList"
+ },
+ "Math": {
+ "E": "Number",
+ "LN2": "Number",
+ "LN10": "Number",
+ "LOG2E": "Number",
+ "LOG10E": "Number",
+ "PI": "Number",
+ "SQRT1_2": "Number",
+ "SQRT2": "Number",
+ "abs": "|Number",
+ "acos": "|Number",
+ "asin": "|Number",
+ "atan": "|Number",
+ "atan2": "|Number",
+ "ceil": "|Number",
+ "cos": "|Number",
+ "exp": "|Number",
+ "floor": "|Number",
+ "log": "|Number",
+ "max": "|Number",
+ "min": "|Number",
+ "pow": "|Number",
+ "random": "|Number",
+ "round": "|Number",
+ "sin": "|Number",
+ "sqrt": "|Number",
+ "tan": "|Number"
+ },
+ "Number": {
+ "valueOf": "|Number",
+ "toFixed": "|String",
+ "toExponential": "|String",
+ "toPrecision": "|String",
+ "toLocaleString": "|String",
+ "toString": "|String"
+ }
+};
+
+var LinkType = {
+ "PROPERTY": 0,
+ "SCOPED_VARS": 1,
+ "INDEX": 2,
+ "CALL": 3,
+ "RETVAL_HEURISTIC": 4
+};
+
+function getKnownType(t)
+{
+ var known = AutoCompletionKnownTypes;
+ if (known.hasOwnProperty(t))
+ return known[t];
+ return null;
+}
+
+function getKnownTypeInfo(r)
+{
+ if (r.charAt(0) === "|")
+ return {"val": "Function", "ret": r.substr(1)};
+ return {"val": r};
+}
+
+function getFakeCompleteKeys(name)
+{
+ var ret = [], type = getKnownType(name);
+ if (!type)
+ return ret;
+ for (var prop in type) {
+ if (prop.substr(0, 4) !== "_fb_")
+ ret.push(prop);
+ }
+ return ret;
+}
+
+function eatProp(expr, start)
+{
+ for (var i = start; i < expr.length; ++i)
+ if (!reJSChar.test(expr.charAt(i)))
+ break;
+ return i;
+}
+
+function matchingBracket(expr, start)
+{
+ var count = 1;
+ for (var i = start + 1; i < expr.length; ++i) {
+ var ch = expr.charAt(i);
+ if (reOpenBracket.test(ch))
+ ++count;
+ else if (reCloseBracket.test(ch))
+ if (!--count)
+ return i;
+ }
+ return -1;
+}
+
+function getTypeExtractionExpression(command)
+{
+ // Return a JavaScript expression for determining the type / [[Class]] of
+ // an object given by another JavaScript expression. For DOM nodes, return
+ // HTMLElement instead of HTML[node type]Element, for simplicity.
+ var ret = "(function() { var v = " + command + "; ";
+ ret += "if (window.HTMLElement && v instanceof HTMLElement) return 'HTMLElement'; ";
+ ret += "return Object.prototype.toString.call(v).slice(8, -1);})()";
+ return ret;
+}
+
+/**
+ * Compare two property names a and b with a custom sort order. The comparison
+ * is lexicographical, but treats _ as higher than other letters in the
+ * beginning of the word, so that:
+ * $ < AutoCompleter < add_widget < additive < _ < _priv < __proto__
+ * @return -1, 0 or 1 depending on whether (a < b), (a == b) or (a > b).
+ */
+function comparePropertyNames(lhs, rhs)
+{
+ var len = Math.min(lhs.length, rhs.length);
+ for (var i = 0; i < len; ++i)
+ {
+ var u1 = (lhs.charAt(i) === "_");
+ var u2 = (rhs.charAt(i) === "_");
+ if (!u1 && !u2)
+ break;
+ if (!u1 || !u2)
+ return (u1 ? 1 : -1);
+ }
+
+ if (lhs < rhs)
+ return -1;
+ return (lhs === rhs ? 0 : 1);
+}
+
+// See autoCompleteEval. This reorders a sorted array to look as if it had been
+// sorted by comparePropertyNames.
+function reorderPropertyNames(ar)
+{
+ var buckets = [];
+ for (var i = 0; i < ar.length; ++i)
+ {
+ var s = ar[i];
+ if (s.charAt(0) === "_")
+ {
+ var count = 0, j = 0;
+ while (count < s.length && s.charAt(count) === "_")
+ ++count;
+ --count;
+ if (!buckets[count])
+ buckets[count] = [];
+ buckets[count].push(s);
+ }
+ }
+
+ if (!buckets.length)
+ return ar;
+
+ var res = [];
+ for (var i = 0; i < ar.length; ++i)
+ {
+ if (ar[i].charAt(0) !== "_")
+ res.push(ar[i]);
+ }
+ for (var i = 0; i < buckets.length; ++i)
+ {
+ var ar2 = buckets[i];
+ if (ar2)
+ res.push.apply(res, ar2);
+ }
+ return res;
+}
+
+function propertiesToHide(expr, obj)
+{
+ var ret = [];
+
+ // __{define,lookup}[SG]etter__ appear as own properties on lots of DOM objects.
+ ret.push("__defineGetter__", "__defineSetter__",
+ "__lookupGetter__", "__lookupSetter__");
+
+ // function.caller/arguments are deprecated and ugly.
+ if (typeof obj === "function")
+ ret.push("caller", "arguments");
+
+ if (Object.prototype.toString.call(obj) === "[object String]")
+ {
+ // Unused, cluttery.
+ ret.push("toLocaleLowerCase", "toLocaleUpperCase", "quote", "bold",
+ "italics", "fixed", "fontsize", "fontcolor", "link", "anchor",
+ "strike", "small", "big", "blink", "sup", "sub");
+ }
+
+ if (expr === "" || expr === "window.")
+ {
+ // Internal Firefox things.
+ ret.push("getInterface", "Components", "XPCNativeWrapper",
+ "InstallTrigger", "WindowInternal", "DocumentXBL",
+ "startProfiling", "stopProfiling", "pauseProfilers",
+ "resumeProfilers", "dumpProfile", "netscape",
+ "BoxObject", "BarProp", "BrowserFeedWriter", "ChromeWindow",
+ "ElementCSSInlineStyle", "JSWindow", "NSEditableElement",
+ "NSRGBAColor", "NSEvent", "NSXPathExpression", "ToString",
+ "OpenWindowEventDetail", "Parser", "ParserJS", "Rect",
+ "RGBColor", "ROCSSPrimitiveValue", "RequestService",
+ "PaintRequest", "PaintRequestList", "WindowUtils",
+ "GlobalPropertyInitializer", "GlobalObjectConstructor"
+ );
+
+ // Hide ourselves.
+ ret.push("_firebug", "_firebugUnwrappedDebuggerObject", "__fb_scopedVars");
+ }
+
+ // Old and ugly.
+ if (expr === "document.")
+ ret.push("fgColor", "vlinkColor", "linkColor");
+ if (expr === "document.body.")
+ ret.push("link", "aLink", "vLink");
+
+ // Rather universal and feel like built-ins.
+ ret.push("valueOf", "toSource", "constructor", "QueryInterface");
+
+ return ret;
+}
+
+function setCompletionsFromObject(out, object, context)
+{
+ // 'object' is a user-level, non-null object.
+ try
+ {
+ var isObjectPrototype = function(obj)
+ {
+ // Check if an object is "Object.prototype". This isn't as simple
+ // as 'obj === context.window.wrappedJSObject.Object.prototype' due
+ // to cross-window properties, nor just '!Object.getPrototypeOf(obj)'
+ // because of Object.create.
+ return !Object.getPrototypeOf(obj) && "hasOwnProperty" in obj;
+ };
+
+ var obj = object;
+ while (obj !== null)
+ {
+ var target = (isObjectPrototype(obj) ?
+ out.hiddenCompletions : out.completions);
+ if (Array.isArray(obj) && obj.length > 4000)
+ {
+ // The object is a large array. To avoid RangeErrors from
+ // `target.push.apply` and a slow `Object.getOwnPropertyNames`,
+ // we just skip this level ("length" is also on the prototype,
+ // and numeric property would get hidden later anyway).
+ }
+ else
+ {
+ target.push.apply(target, Object.getOwnPropertyNames(obj));
+ }
+ obj = Object.getPrototypeOf(obj);
+ }
+
+ // As a special case, when completing "Object.prototype." no properties
+ // should be hidden.
+ if (isObjectPrototype(object))
+ {
+ out.completions = out.hiddenCompletions;
+ out.hiddenCompletions = [];
+ }
+ else
+ {
+ // Hide a list of well-chosen annoying properties.
+ var hide = propertiesToHide(out.spreExpr, object);
+ var hideMap = Object.create(null);
+ for (var i = 0; i < hide.length; ++i)
+ hideMap[hide[i]] = 1;
+ var hideRegex = /^XUL[A-Za-z]+$/;
+
+ var newCompletions = [];
+ out.completions.forEach(function(prop)
+ {
+ if (prop in hideMap || hideRegex.test(prop))
+ out.hiddenCompletions.push(prop);
+ else
+ newCompletions.push(prop);
+ });
+ out.completions = newCompletions;
+ }
+
+ // Firefox hides __proto__ - add it back.
+ if ("__proto__" in object)
+ out.hiddenCompletions.push("__proto__");
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("autoCompleter.setCompletionsFromObject failed", exc);
+ }
+}
+
+function setCompletionsFromScope(out, object, context)
+{
+ out.completions = ClosureInspector.getClosureVariablesList(object, context);
+
+ // Hide "arguments"; it almost never holds a value.
+ out.completions = Arr.unique(out.completions);
+ var ind = out.completions.indexOf("arguments");
+ if (ind !== -1)
+ {
+ out.completions.splice(ind, 1);
+ out.hiddenCompletions.push("arguments");
+ }
+}
+
+function getNewlyDeclaredNames(js)
+{
+ // XXXsimon: In the future, machinery from issue 5291 could perhaps replace this.
+ var re = /\b[a-zA-Z_$][a-zA-Z0-9_$]*\b/g;
+ var ar = [], match;
+ while ((match = re.exec(js)) !== null)
+ {
+ if (!/[.%]/.test(js.charAt(match.index - 1)) &&
+ js.charAt(re.lastIndex) !== ":" && kwAll.indexOf(match[0]) === -1)
+ {
+ ar.push(match[0]);
+ }
+ }
+ return ar;
+}
+
+function propChainBuildComplete(out, context, tempExpr, result)
+{
+ if (out.scopeCompletion)
+ {
+ if (tempExpr.fake)
+ return;
+ if (typeof result !== "object" && typeof result !== "function")
+ return;
+ setCompletionsFromScope(out, result, context);
+ return;
+ }
+
+ var done = function(result)
+ {
+ if (result == null)
+ return;
+
+ if (typeof result !== "object" && typeof result !== "function")
+ {
+ // To avoid slow completions, convert strings to length 0 (numeric
+ // properties are hidden anyway).
+ if (typeof result === "string")
+ result = "";
+
+ // Convert the primitive into its scope's matching object type.
+ result = Wrapper.getContentView(out.window).Object(result);
+ }
+ setCompletionsFromObject(out, result, context);
+ };
+
+ if (tempExpr.fake)
+ {
+ var name = tempExpr.value.val;
+ if (getKnownType(name)._fb_ignorePrototype)
+ return;
+ var command = name + ".prototype";
+ Firebug.CommandLine.evaluate(name + ".prototype", context, context.thisValue, null,
+ function found(result, context)
+ {
+ done(result);
+ },
+ function failed(result, context) { }
+ );
+ }
+ else
+ {
+ done(result);
+ }
+}
+
+function evalPropChainStep(step, tempExpr, evalChain, out, context)
+{
+ if (tempExpr.fake)
+ {
+ if (step === evalChain.length)
+ {
+ propChainBuildComplete(out, context, tempExpr);
+ return;
+ }
+
+ var link = evalChain[step], type = link.type;
+ if (type === LinkType.PROPERTY || type === LinkType.INDEX)
+ {
+ // Use the accessed property if it exists, otherwise abort. It
+ // would be possible to continue with a 'real' expression of
+ // `tempExpr.value.val`.prototype, but since prototypes seldom
+ // contain actual values of things this doesn't work very well.
+ var mem = (type === LinkType.INDEX ? "_fb_contType" : link.name);
+ var t = getKnownType(tempExpr.value.val);
+ if (t.hasOwnProperty(mem))
+ tempExpr.value = getKnownTypeInfo(t[mem]);
+ else
+ return;
+ }
+ else if (type === LinkType.CALL)
+ {
+ if (tempExpr.value.ret)
+ tempExpr.value = getKnownTypeInfo(tempExpr.value.ret);
+ else
+ return;
+ }
+ else
+ {
+ return;
+ }
+ evalPropChainStep(step+1, tempExpr, evalChain, out, context);
+ }
+ else
+ {
+ var funcCommand = null, link, type;
+ while (step !== evalChain.length)
+ {
+ link = evalChain[step];
+ type = link.type;
+ if (type === LinkType.PROPERTY)
+ {
+ tempExpr.thisCommand = tempExpr.command;
+ tempExpr.command += "." + link.name;
+ }
+ else if (type === LinkType.SCOPED_VARS)
+ {
+ tempExpr.thisCommand = "window";
+ tempExpr.command += ".%" + link.name;
+ }
+ else if (type === LinkType.INDEX)
+ {
+ tempExpr.thisCommand = "window";
+ tempExpr.command += "[" + link.cont + "]";
+ }
+ else if (type === LinkType.CALL)
+ {
+ if (link.origCont !== null &&
+ (link.name.substr(0, 3) === "get" ||
+ (link.name.charAt(0) === "$" && link.cont.indexOf(",") === -1)))
+ {
+ // Names beginning with get or $ are almost always getters, so
+ // assume we can safely just call it.
+ tempExpr.thisCommand = "window";
+ tempExpr.command += "(" + link.origCont + ")";
+ }
+ else if (!link.name)
+ {
+ // We cannot know about functions without name; try the
+ // heuristic directly.
+ link.type = LinkType.RETVAL_HEURISTIC;
+ evalPropChainStep(step, tempExpr, evalChain, out, context);
+ return;
+ }
+ else
+ {
+ funcCommand = getTypeExtractionExpression(tempExpr.thisCommand);
+ break;
+ }
+ }
+ else if (type === LinkType.RETVAL_HEURISTIC)
+ {
+ funcCommand = "Function.prototype.toString.call(" + tempExpr.command + ")";
+ break;
+ }
+ ++step;
+ }
+
+ var isFunc = (funcCommand !== null), command = (isFunc ? funcCommand : tempExpr.command);
+ Firebug.CommandLine.evaluate(command, context, context.thisValue, null,
+ function found(result, context)
+ {
+ if (isFunc)
+ {
+ if (type === LinkType.CALL)
+ {
+ if (typeof result !== "string")
+ return;
+
+ var t = getKnownType(result);
+ if (t && t.hasOwnProperty(link.name))
+ {
+ var propVal = getKnownTypeInfo(t[link.name]);
+
+ // Make sure the property is a callable function
+ if (!propVal.ret)
+ return;
+
+ tempExpr.fake = true;
+ tempExpr.value = getKnownTypeInfo(propVal.ret);
+ evalPropChainStep(step+1, tempExpr, evalChain, out, context);
+ }
+ else
+ {
+ // Unknown 'this' type or function name, use
+ // heuristics on the function instead.
+ link.type = LinkType.RETVAL_HEURISTIC;
+ evalPropChainStep(step, tempExpr, evalChain, out, context);
+ }
+ }
+ else if (type === LinkType.RETVAL_HEURISTIC)
+ {
+ if (typeof result !== "string")
+ return;
+
+ // Perform some crude heuristics for figuring out the
+ // return value of a function based on its contents.
+ // It's certainly not perfect, and it's easily fooled
+ // into giving wrong results, but it might work in
+ // some common cases.
+
+ // Check for chaining functions. This is done before
+ // checking for nested functions, because completing
+ // results of member functions containing nested
+ // functions that use 'return this' seems uncommon,
+ // and being wrong is not a huge problem.
+ if (result.indexOf("return this;") !== -1)
+ {
+ tempExpr.command = tempExpr.thisCommand;
+ tempExpr.thisCommand = "window";
+ evalPropChainStep(step+1, tempExpr, evalChain, out, context);
+ return;
+ }
+
+ // Don't support nested functions.
+ if (result.lastIndexOf("function") !== 0)
+ return;
+
+ // Check for arrays.
+ if (result.indexOf("return [") !== -1)
+ {
+ tempExpr.fake = true;
+ tempExpr.value = getKnownTypeInfo("Array");
+ evalPropChainStep(step+1, tempExpr, evalChain, out, context);
+ return;
+ }
+
+ // Check for 'return new Type(...);', and use the
+ // prototype as a pseudo-object for those (since it
+ // is probably not a known type that we can fake).
+ var newPos = result.indexOf("return new ");
+ if (newPos !== -1)
+ {
+ var rest = result.substr(newPos + 11),
+ epos = rest.search(/[^a-zA-Z0-9_$.]/);
+ if (epos !== -1 && /[; \t\n(}]/.test(rest.charAt(epos)))
+ {
+ rest = rest.substring(0, epos);
+ var func = tempExpr.command, expr = rest + ".prototype";
+ tempExpr.command = "(function() { " +
+ "try { return " + func + ".%" + expr + "; } " +
+ "catch(e) { return " + expr + "; } " +
+ "})()";
+ evalPropChainStep(step+1, tempExpr, evalChain, out, context);
+ return;
+ }
+ }
+ }
+ }
+ else
+ {
+ propChainBuildComplete(out, context, tempExpr, result);
+ }
+ },
+ function failed(result, context) { }
+ );
+ }
+}
+
+function evalPropChain(out, preExpr, origExpr, context)
+{
+ var evalChain = [], linkStart = 0, len = preExpr.length, lastProp = "";
+ var tempExpr = {"fake": false, "command": "window", "thisCommand": "window"};
+ while (linkStart !== len)
+ {
+ var ch = preExpr.charAt(linkStart);
+ if (linkStart === 0)
+ {
+ if (preExpr.substr(0, 4) === "new ")
+ {
+ var parInd = preExpr.indexOf("(");
+ tempExpr.command = preExpr.substring(4, parInd) + ".prototype";
+ linkStart = matchingBracket(preExpr, parInd) + 1;
+ }
+ else if (ch === "[")
+ {
+ tempExpr.fake = true;
+ tempExpr.value = getKnownTypeInfo("Array");
+ linkStart = matchingBracket(preExpr, linkStart) + 1;
+ }
+ else if (ch === '"')
+ {
+ var isRegex = (origExpr.charAt(0) === "/");
+ tempExpr.fake = true;
+ tempExpr.value = getKnownTypeInfo(isRegex ? "RegExp" : "String");
+ linkStart = preExpr.indexOf('"', 1) + 1;
+ }
+ else if (!isNaN(ch))
+ {
+ // The expression is really a decimal number.
+ return false;
+ }
+ else if (reJSChar.test(ch))
+ {
+ // The expression begins with a regular property name
+ var nextLink = eatProp(preExpr, linkStart);
+ lastProp = preExpr.substring(linkStart, nextLink);
+ linkStart = nextLink;
+ tempExpr.command = lastProp;
+ }
+
+ // Syntax error (like '.') or a too complicated expression.
+ if (linkStart === 0)
+ return false;
+ }
+ else
+ {
+ if (ch === ".")
+ {
+ // Property access
+ var scope = (preExpr.charAt(linkStart+1) === "%");
+ linkStart += (scope ? 2 : 1);
+ var nextLink = eatProp(preExpr, linkStart);
+ lastProp = preExpr.substring(linkStart, nextLink);
+ linkStart = nextLink;
+ evalChain.push({
+ "type": (scope ? LinkType.SCOPED_VARS : LinkType.PROPERTY),
+ "name": lastProp
+ });
+ }
+ else if (ch === "(")
+ {
+ // Function call. Save the function name and the arguments if
+ // they are safe to evaluate. Currently literals and single
+ // variables not occurring previously on the command line are
+ // treated as safe.
+ var endCont = matchingBracket(preExpr, linkStart);
+ var cont = preExpr.substring(linkStart+1, endCont), origCont = null;
+ if (reLiteralExpr.test(cont) || (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(cont) &&
+ preExpr.lastIndexOf(cont, linkStart) === -1))
+ {
+ origCont = origExpr.substring(linkStart+1, endCont);
+ }
+ linkStart = endCont + 1;
+ evalChain.push({
+ "type": LinkType.CALL,
+ "name": lastProp,
+ "origCont": origCont,
+ "cont": cont
+ });
+
+ lastProp = "";
+ }
+ else if (ch === "[")
+ {
+ // Index. Use the supplied index if it is a literal; otherwise
+ // it is probably a loop index with a variable not yet defined
+ // (like 'for(var i = 0; i < ar.length; ++i) ar[i].prop'), and
+ // '0' seems like a reasonably good guess at a valid index.
+ var endInd = matchingBracket(preExpr, linkStart);
+ var ind = preExpr.substring(linkStart+1, endInd);
+ if (reLiteralExpr.test(ind))
+ ind = origExpr.substring(linkStart+1, endInd);
+ else
+ ind = "0";
+ linkStart = endInd+1;
+ evalChain.push({"type": LinkType.INDEX, "cont": ind});
+ lastProp = "";
+ }
+ else
+ {
+ // Syntax error
+ return false;
+ }
+ }
+ }
+
+ evalPropChainStep(0, tempExpr, evalChain, out, context);
+ return true;
+}
+
+
+var CompletionType = {
+ "NORMAL": 0,
+ "API": 1
+};
+
+function autoCompleteEval(context, preExpr, spreExpr, preParsed, spreParsed, options)
+{
+ var out = {
+ spreExpr: spreExpr,
+ completions: [],
+ hiddenCompletions: [],
+ window: context.getCurrentGlobal()
+ };
+ var indexCompletion = false;
+
+ try
+ {
+ if (spreExpr)
+ {
+ // Complete member variables of some .-chained expression
+
+ // In case of array indexing, remove the bracket and set a flag to
+ // escape completions.
+ out.scopeCompletion = false;
+ var len = spreExpr.length;
+ if (len >= 2 && spreExpr[len-2] === "[" && spreExpr[len-1] === '"')
+ {
+ indexCompletion = true;
+ out.indexQuoteType = preExpr[len-1];
+ len -= 2;
+ }
+ else if (spreExpr.slice(-2) === ".%")
+ {
+ out.scopeCompletion = true;
+ len -= 2;
+ }
+ else
+ {
+ len -= 1;
+ }
+ spreExpr = spreExpr.substr(0, len);
+ preExpr = preExpr.substr(0, len);
+
+ if (FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("commandLine.autoCompleteEval pre:'" + preExpr +
+ "' spre:'" + spreExpr + "'.");
+
+ // Don't auto-complete '.'.
+ if (spreExpr === "")
+ return out;
+
+ evalPropChain(out, spreExpr, preExpr, context);
+ }
+ else
+ {
+ // Complete variables from the local scope
+
+ var contentView = Wrapper.getContentView(out.window);
+ if (context.stopped && options.includeCurrentScope)
+ {
+ out.completions = Firebug.Debugger.getCurrentFrameKeys(context);
+ }
+ else if (contentView && contentView.Window &&
+ contentView.constructor.toString() === contentView.Window.toString())
+ // Cross window type pseudo-comparison
+ {
+ setCompletionsFromObject(out, contentView, context);
+ }
+ else // hopefully sandbox in Chromebug
+ {
+ setCompletionsFromObject(out, context.global, context);
+ }
+
+ // Add names of variables declared previously in the typed code.
+ var previousDeclarations = getNewlyDeclaredNames(spreParsed);
+ out.completions.push.apply(out.completions, previousDeclarations);
+ }
+
+ if (indexCompletion)
+ {
+ // If we are doing index-completions, add "] to everything.
+ function convertQuotes(x)
+ {
+ x = (out.indexQuoteType === '"') ? Str.escapeJS(x): Str.escapeSingleQuoteJS(x);
+ return x + out.indexQuoteType + "]";
+ }
+ out.completions = out.completions.map(convertQuotes);
+ out.hiddenCompletions = out.hiddenCompletions.map(convertQuotes);
+ }
+ else if (out.completions.indexOf("length") !== -1 && out.completions.indexOf("0") !== -1)
+ {
+ // ... otherwise remove numeric keys from array-like things.
+ var rePositiveNumber = /^[1-9][0-9]*$/;
+ out.completions = out.completions.filter(function(x)
+ {
+ return !rePositiveNumber.test(x) && x !== "0";
+ });
+ }
+
+ // Sort the completions, and avoid duplicates.
+ // Note: If we make it possible to show both regular and hidden completions
+ // at the same time, completions should shadow hiddenCompletions here.
+ // XXX Normally we'd just do sortUnique(completions, comparePropertyNames),
+ // but JSD makes that slow (issue 6256). Sort and do manual reordering instead.
+ out.completions = reorderPropertyNames(Arr.sortUnique(out.completions));
+ out.hiddenCompletions = reorderPropertyNames(Arr.sortUnique(out.hiddenCompletions));
+
+ var wrap = function(x)
+ {
+ return {type: CompletionType.NORMAL, name: x};
+ };
+ out.completions = out.completions.map(wrap);
+ out.hiddenCompletions = out.hiddenCompletions.map(wrap);
+
+ // Add things from the Command Line API, if we are signalled to,
+ // and it is not unavailable due to being stopped in the debugger
+ // (issue 5321).
+ if (!spreExpr && options.includeCommandLineAPI && !context.stopped)
+ {
+ var global = Wrapper.unwrapObject(out.window);
+ CommandLineExposed.getAutoCompletionList().forEach(function(name)
+ {
+ if (!(name in global))
+ out.completions.push({type: CompletionType.API, name: name});
+ });
+ }
+
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS && FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("commandLine.autoCompleteEval FAILED", exc);
+ }
+ return out;
+}
+
+var reValidJSToken = /^[A-Za-z_$][A-Za-z_$0-9]*$/;
+function isValidProperty(value)
+{
+ // Use only string props
+ if (typeof(value) != "string")
+ return false;
+
+ // Use only those props that don't contain unsafe charactes and so need
+ // quotation (e.g. object["my prop"] notice the space character).
+ // Following expression checks that the name starts with a letter or $_,
+ // and there are only letters, numbers or $_ character in the string (no spaces).
+
+ return reValidJSToken.test(value);
+}
+
+function setCursorToEOL(input)
+{
+ // textbox version, https://developer.mozilla.org/en/XUL/Property/inputField
+ // input.inputField.setSelectionRange(len, len);
+ input.setSelectionRange(input.value.length, input.value.length);
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return Firebug.JSAutoCompleter;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/closureInspector.js b/content/firebug/console/closureInspector.js
index db209c0..e965e39 100644
--- a/content/firebug/console/closureInspector.js
+++ b/content/firebug/console/closureInspector.js
@@ -1,426 +1,426 @@
-/* See license.txt for terms of usage */
-/*jshint esnext:true, es5:true, curly:false */
-/*global FBTrace:true, Components:true, Proxy:true, define:true */
-
-// A note on terminology: here a "closure"/"environment" is generally thought
-// of as a container of "scopes".
-
-define([
- "firebug/firebug",
- "firebug/lib/wrapper",
- "firebug/debugger/debuggerLib",
- "firebug/console/commandLineExposed",
-],
-function(Firebug, Wrapper, DebuggerLib, CommandLineExposed) {
-"use strict";
-
-// ********************************************************************************************* //
-// Constants
-
-const Cu = Components.utils;
-
-const ScopeProxy = function() {};
-const OptimizedAway = Object.create(null);
-Object.freeze(OptimizedAway);
-
-// ********************************************************************************************* //
-
-var ClosureInspector =
-{
- getVariableOrOptimizedAway: function(scope, name)
- {
- try
- {
- var ret = scope.getVariable(name);
- if (ret !== undefined)
- return ret;
-
- if (scope.type === "declarative")
- {
- // The variable is either optimized away or actually set to
- // undefined. Optimized-away ones are apparently not settable,
- // so try to detect them by that (it seems rather safe).
- scope.setVariable(name, 0);
- if (scope.getVariable(name) === undefined)
- return OptimizedAway;
- scope.setVariable(name, undefined);
- }
-
- return undefined;
- }
- catch (exc)
- {
- // E.g. optimized-away "arguments" can throw "Debugger scope is not live".
- if (FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("ClosureInspector; getVariableOrOptimizedAway caught an exception", exc);
- return OptimizedAway;
- }
- },
-
- isOptimizedAway: function(obj)
- {
- return obj === OptimizedAway;
- },
-
- isSimple: function(dobj)
- {
- return (typeof dobj !== "object" || dobj === OptimizedAway);
- },
-
- isScopeInteresting: function(scope)
- {
- return !!scope.parent;
- },
-
- getFunctionFromObject: function(obj)
- {
- var first = true;
- while (obj)
- {
- var names = obj.getOwnPropertyNames(), pd;
-
- // "constructor" is boring, use it last
- var ind = names.indexOf("constructor");
- if (ind !== -1)
- {
- names.splice(ind, 1);
- names.push("constructor");
- }
-
- for (var i = 0; i < names.length; ++i)
- {
- // We assume that the first own property, or the first
- // enumerable property of the prototype (or "constructor"),
- // that is a function with some scope (i.e., it is interpreted,
- // JSScript-backed, and without optimized-away scope) shares
- // this scope with 'obj'.
- // (Since, in the current implementation, Firefox seems to give
- // all functions in a particular scope (except self-contained
- // ones) the same environment, the first is as good as any,
- // and it's probably near the definition of 'obj').
-
- var name = names[i];
- try
- {
- pd = obj.getOwnPropertyDescriptor(name);
- }
- catch (e)
- {
- // getOwnPropertyDescriptor sometimes fails with
- // "Illegal operation on WrappedNative prototype object",
- // for instance on [window].proto.gopd("localStorage").
- continue;
- }
- if (!pd || (!first && !pd.enumerable && name !== "constructor"))
- continue;
-
- var toTest = [pd.get, pd.set, pd.value];
- for (var j = 0; j < toTest.length; ++j)
- {
- var f = toTest[j];
- if (f && f.environment && this.isScopeInteresting(f.environment))
- return f;
- }
- }
-
- if (!first)
- break;
- first = false;
- obj = obj.proto;
- }
-
- // None found. :(
- return undefined;
- },
-
- // Within the security context of the (wrapped) window 'win', find a relevant
- // closure for the content object 'obj' (may be from another frame).
- // Throws exceptions on error.
- getEnvironmentForObject: function(win, obj, context)
- {
- if (!obj || !(typeof obj === "object" || typeof obj === "function"))
- throw new TypeError("can't get scope of non-object");
-
- var objGlobal = Cu.getGlobalForObject(obj);
- if (win !== objGlobal && !(win.document && objGlobal.document &&
- win.document.nodePrincipal.subsumes(objGlobal.document.nodePrincipal)))
- {
- throw new Error("permission denied to access cross origin scope");
- }
-
- // Create a view of the object as seen from its own global - 'environment'
- // will not be accessible otherwise.
- var dglobal = DebuggerLib.getDebuggeeGlobal(context, objGlobal);
-
- var dobj = dglobal.makeDebuggeeValue(obj);
-
- if (typeof obj === "object")
- dobj = this.getFunctionFromObject(dobj);
-
- if (!dobj || !dobj.environment || !this.isScopeInteresting(dobj.environment))
- throw new Error("missing closure");
-
- return dobj.environment;
- },
-
- getClosureVariablesList: function(obj, context)
- {
- var ret = [];
-
- // Avoid 'window' and 'document' getting associated with closures.
- var win = context.getCurrentGlobal();
- if (obj === win || obj === win.document)
- return ret;
-
- try
- {
- var env = this.getEnvironmentForObject(win, obj, context);
- for (var scope = env; scope; scope = scope.parent)
- {
- if (!this.isScopeInteresting(scope))
- break;
-
- // Probably the scope of the bindings for our (or Mozilla's) Command
- // Line API, which is at the top of the scope chain on objects defined
- // through the console. Hide it for a nicer display.
- if (scope.type === "object" && !this.isScopeInteresting(scope.parent) &&
- scope.getVariable("cd") && scope.getVariable("inspect"))
- {
- break;
- }
-
- ret.push.apply(ret, scope.names());
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("ClosureInspector; getClosureVariablesList failed", exc);
- }
- return ret;
- },
-
- getClosureWrapper: function(obj, win, context)
- {
- var env, dglobal;
- env = this.getEnvironmentForObject(win, obj, context);
-
- dglobal = DebuggerLib.getDebuggeeGlobal(context, win);
-
- // Return a wrapper for its scoped variables.
- var self = this;
- var handler = {};
- handler.getOwnPropertyDescriptor = function(name)
- {
- if (name === "__exposedProps__")
- {
- // Expose mostly everything, rw, through another proxy.
- return {
- value: Proxy.create({
- getPropertyDescriptor: function(name)
- {
- if (name === "__exposedProps__" || name === "__proto__")
- return;
- return {value: "rw", enumerable: true};
- }
- })
- };
- }
-
- return {
- get: function()
- {
- try
- {
- var scope = env.find(name);
- if (!scope)
- return undefined;
- var dval = self.getVariableOrOptimizedAway(scope, name);
- if (self.isSimple(dval))
- return dval;
- var uwWin = Wrapper.getContentView(win);
- return DebuggerLib.unwrapDebuggeeValue(dval, uwWin, dglobal);
- }
- catch (exc)
- {
- if (FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("ClosureInspector; failed to return value from getter", exc);
- return undefined;
- }
- },
-
- set: function(value)
- {
- var dvalue = dglobal.makeDebuggeeValue(value);
- var scope = env.find(name);
- if (!scope)
- throw new Error("can't create new closure variable");
- if (self.getVariableOrOptimizedAway(scope, name) === OptimizedAway)
- throw new Error("can't set optimized-away closure variable");
- scope.setVariable(name, dvalue);
- }
- };
- };
- handler.getPropertyDescriptor = handler.getOwnPropertyDescriptor;
- handler.delete = function(name)
- {
- throw new Error("can't delete closure variable");
- };
- // Other traps are syntactically inaccessible, so we don't need to implement them.
- return Proxy.create(handler);
- },
-
- getScopeWrapper: function(obj, win, context, isScope)
- {
- var scope;
- try
- {
- if (isScope)
- scope = Object.getPrototypeOf(obj).scope.parent;
- else
- scope = this.getEnvironmentForObject(win, obj, context);
- if (!scope || !this.isScopeInteresting(scope))
- return;
- }
- catch (exc)
- {
- if (FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("ClosureInspector; getScopeWrapper failed", exc);
- return;
- }
-
- var dwin = DebuggerLib.getDebuggeeGlobal(context, win);
-
- var scopeDataHolder = Object.create(ScopeProxy.prototype);
- scopeDataHolder.scope = scope;
-
- var self = this;
- var names, namesSet;
- var lazyCreateNames = function()
- {
- lazyCreateNames = function() {};
- names = scope.names();
-
- // Due to weird Firefox behavior, we sometimes have to skip over duplicate
- // scopes (see issue 6184).
- if (names.length === 1 && scope.type === "declarative" &&
- scope.parent && scope.parent.type === "declarative")
- {
- var par = scope.parent, parNames = par.names();
- if (parNames.length === 1 && parNames[0] === names[0])
- scopeDataHolder.scope = scope = par;
- }
-
- // "arguments" is almost always present and optimized away, so hide it
- // for a nicer display.
- var ind = names.indexOf("arguments");
- if (ind !== -1 && self.getVariableOrOptimizedAway(scope, "arguments") === OptimizedAway)
- names.splice(ind, 1);
-
- namesSet = new Set();
- for (var i = 0; i < names.length; ++i)
- namesSet.add(names[i]);
- };
-
- return Proxy.create({
- desc: function(name)
- {
- if (!this.has(name))
- return;
- var dval = self.getVariableOrOptimizedAway(scope, name);
- return {
- get: function() {
- if (self.isSimple(dval))
- return dval;
- var uwWin = Wrapper.getContentView(win);
- return DebuggerLib.unwrapDebuggeeValue(dval, uwWin, dwin);
- },
- set: (dval === OptimizedAway ? undefined : function(value) {
- dval = dwin.makeDebuggeeValue(value);
- scope.setVariable(name, dval);
- }),
- enumerable: true,
- configurable: false
- };
- },
- has: function(name)
- {
- lazyCreateNames();
- return namesSet.has(name);
- },
- hasOwn: function(name) { return this.has(name); },
- getOwnPropertyDescriptor: function(name) { return this.desc(name); },
- getPropertyDescriptor: function(name) { return this.desc(name); },
- keys: function()
- {
- lazyCreateNames();
- return names;
- },
- enumerate: function() { return this.keys(); },
- getOwnPropertyNames: function() { return this.keys(); },
- getPropertyNames: function() { return this.keys(); }
- }, scopeDataHolder);
- },
-
- isScopeWrapper: function(obj)
- {
- return obj instanceof ScopeProxy;
- },
-
- getScopeFromWrapper: function(obj)
- {
- return Object.getPrototypeOf(obj).scope;
- },
-
- extendLanguageSyntax: function(expr, win, context)
- {
- // Temporary FireClosure compatibility.
- if (Firebug.JSAutoCompleter.transformScopeExpr)
- return expr;
-
- // Note: this is also hard-coded elsewhere.
- var fname = "__fb_scopedVars";
-
- var newExpr = Firebug.JSAutoCompleter.transformScopeOperator(expr, fname);
- if (expr === newExpr)
- return expr;
-
- if (FBTrace.DBG_COMMANDLINE)
- {
- FBTrace.sysout("ClosureInspector; transforming expression: `" +
- expr + "` -> `" + newExpr + "`");
- }
-
- // Stick the helper function for .%-expressions on the window object.
- // This really belongs on the command line object, but that doesn't
- // work when stopped in the debugger (issue 5321, which depends on
- // integrating JSD2) and we really need this to work there.
- // To avoid leaking capabilities into arbitrary web pages, this is
- // only injected when needed.
- try
- {
- var self = this;
- Object.defineProperty(Wrapper.getContentView(win), fname, {
- value: function(obj)
- {
- return self.getClosureWrapper(obj, win, context);
- },
- writable: true,
- configurable: true
- });
- }
- catch (exc)
- {
- if (FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("ClosureInspector; failed to inject " + fname, exc);
- }
-
- return newExpr;
- }
-};
-
-Firebug.ClosureInspector = ClosureInspector;
-return ClosureInspector;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+/*jshint esnext:true, es5:true, curly:false */
+/*global FBTrace:true, Components:true, Proxy:true, define:true */
+
+// A note on terminology: here a "closure"/"environment" is generally thought
+// of as a container of "scopes".
+
+define([
+ "firebug/firebug",
+ "firebug/lib/wrapper",
+ "firebug/debugger/debuggerLib",
+ "firebug/console/commandLineExposed",
+],
+function(Firebug, Wrapper, DebuggerLib, CommandLineExposed) {
+"use strict";
+
+// ********************************************************************************************* //
+// Constants
+
+const Cu = Components.utils;
+
+const ScopeProxy = function() {};
+const OptimizedAway = Object.create(null);
+Object.freeze(OptimizedAway);
+
+// ********************************************************************************************* //
+
+var ClosureInspector =
+{
+ getVariableOrOptimizedAway: function(scope, name)
+ {
+ try
+ {
+ var ret = scope.getVariable(name);
+ if (ret !== undefined)
+ return ret;
+
+ if (scope.type === "declarative")
+ {
+ // The variable is either optimized away or actually set to
+ // undefined. Optimized-away ones are apparently not settable,
+ // so try to detect them by that (it seems rather safe).
+ scope.setVariable(name, 0);
+ if (scope.getVariable(name) === undefined)
+ return OptimizedAway;
+ scope.setVariable(name, undefined);
+ }
+
+ return undefined;
+ }
+ catch (exc)
+ {
+ // E.g. optimized-away "arguments" can throw "Debugger scope is not live".
+ if (FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("ClosureInspector; getVariableOrOptimizedAway caught an exception", exc);
+ return OptimizedAway;
+ }
+ },
+
+ isOptimizedAway: function(obj)
+ {
+ return obj === OptimizedAway;
+ },
+
+ isSimple: function(dobj)
+ {
+ return (typeof dobj !== "object" || dobj === OptimizedAway);
+ },
+
+ isScopeInteresting: function(scope)
+ {
+ return !!scope.parent;
+ },
+
+ getFunctionFromObject: function(obj)
+ {
+ var first = true;
+ while (obj)
+ {
+ var names = obj.getOwnPropertyNames(), pd;
+
+ // "constructor" is boring, use it last
+ var ind = names.indexOf("constructor");
+ if (ind !== -1)
+ {
+ names.splice(ind, 1);
+ names.push("constructor");
+ }
+
+ for (var i = 0; i < names.length; ++i)
+ {
+ // We assume that the first own property, or the first
+ // enumerable property of the prototype (or "constructor"),
+ // that is a function with some scope (i.e., it is interpreted,
+ // JSScript-backed, and without optimized-away scope) shares
+ // this scope with 'obj'.
+ // (Since, in the current implementation, Firefox seems to give
+ // all functions in a particular scope (except self-contained
+ // ones) the same environment, the first is as good as any,
+ // and it's probably near the definition of 'obj').
+
+ var name = names[i];
+ try
+ {
+ pd = obj.getOwnPropertyDescriptor(name);
+ }
+ catch (e)
+ {
+ // getOwnPropertyDescriptor sometimes fails with
+ // "Illegal operation on WrappedNative prototype object",
+ // for instance on [window].proto.gopd("localStorage").
+ continue;
+ }
+ if (!pd || (!first && !pd.enumerable && name !== "constructor"))
+ continue;
+
+ var toTest = [pd.get, pd.set, pd.value];
+ for (var j = 0; j < toTest.length; ++j)
+ {
+ var f = toTest[j];
+ if (f && f.environment && this.isScopeInteresting(f.environment))
+ return f;
+ }
+ }
+
+ if (!first)
+ break;
+ first = false;
+ obj = obj.proto;
+ }
+
+ // None found. :(
+ return undefined;
+ },
+
+ // Within the security context of the (wrapped) window 'win', find a relevant
+ // closure for the content object 'obj' (may be from another frame).
+ // Throws exceptions on error.
+ getEnvironmentForObject: function(win, obj, context)
+ {
+ if (!obj || !(typeof obj === "object" || typeof obj === "function"))
+ throw new TypeError("can't get scope of non-object");
+
+ var objGlobal = Cu.getGlobalForObject(obj);
+ if (win !== objGlobal && !(win.document && objGlobal.document &&
+ win.document.nodePrincipal.subsumes(objGlobal.document.nodePrincipal)))
+ {
+ throw new Error("permission denied to access cross origin scope");
+ }
+
+ // Create a view of the object as seen from its own global - 'environment'
+ // will not be accessible otherwise.
+ var dglobal = DebuggerLib.getDebuggeeGlobal(context, objGlobal);
+
+ var dobj = dglobal.makeDebuggeeValue(obj);
+
+ if (typeof obj === "object")
+ dobj = this.getFunctionFromObject(dobj);
+
+ if (!dobj || !dobj.environment || !this.isScopeInteresting(dobj.environment))
+ throw new Error("missing closure");
+
+ return dobj.environment;
+ },
+
+ getClosureVariablesList: function(obj, context)
+ {
+ var ret = [];
+
+ // Avoid 'window' and 'document' getting associated with closures.
+ var win = context.getCurrentGlobal();
+ if (obj === win || obj === win.document)
+ return ret;
+
+ try
+ {
+ var env = this.getEnvironmentForObject(win, obj, context);
+ for (var scope = env; scope; scope = scope.parent)
+ {
+ if (!this.isScopeInteresting(scope))
+ break;
+
+ // Probably the scope of the bindings for our (or Mozilla's) Command
+ // Line API, which is at the top of the scope chain on objects defined
+ // through the console. Hide it for a nicer display.
+ if (scope.type === "object" && !this.isScopeInteresting(scope.parent) &&
+ scope.getVariable("cd") && scope.getVariable("inspect"))
+ {
+ break;
+ }
+
+ ret.push.apply(ret, scope.names());
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("ClosureInspector; getClosureVariablesList failed", exc);
+ }
+ return ret;
+ },
+
+ getClosureWrapper: function(obj, win, context)
+ {
+ var env, dglobal;
+ env = this.getEnvironmentForObject(win, obj, context);
+
+ dglobal = DebuggerLib.getDebuggeeGlobal(context, win);
+
+ // Return a wrapper for its scoped variables.
+ var self = this;
+ var handler = {};
+ handler.getOwnPropertyDescriptor = function(name)
+ {
+ if (name === "__exposedProps__")
+ {
+ // Expose mostly everything, rw, through another proxy.
+ return {
+ value: Proxy.create({
+ getPropertyDescriptor: function(name)
+ {
+ if (name === "__exposedProps__" || name === "__proto__")
+ return;
+ return {value: "rw", enumerable: true};
+ }
+ })
+ };
+ }
+
+ return {
+ get: function()
+ {
+ try
+ {
+ var scope = env.find(name);
+ if (!scope)
+ return undefined;
+ var dval = self.getVariableOrOptimizedAway(scope, name);
+ if (self.isSimple(dval))
+ return dval;
+ var uwWin = Wrapper.getContentView(win);
+ return DebuggerLib.unwrapDebuggeeValue(dval, uwWin, dglobal);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("ClosureInspector; failed to return value from getter", exc);
+ return undefined;
+ }
+ },
+
+ set: function(value)
+ {
+ var dvalue = dglobal.makeDebuggeeValue(value);
+ var scope = env.find(name);
+ if (!scope)
+ throw new Error("can't create new closure variable");
+ if (self.getVariableOrOptimizedAway(scope, name) === OptimizedAway)
+ throw new Error("can't set optimized-away closure variable");
+ scope.setVariable(name, dvalue);
+ }
+ };
+ };
+ handler.getPropertyDescriptor = handler.getOwnPropertyDescriptor;
+ handler.delete = function(name)
+ {
+ throw new Error("can't delete closure variable");
+ };
+ // Other traps are syntactically inaccessible, so we don't need to implement them.
+ return Proxy.create(handler);
+ },
+
+ getScopeWrapper: function(obj, win, context, isScope)
+ {
+ var scope;
+ try
+ {
+ if (isScope)
+ scope = Object.getPrototypeOf(obj).scope.parent;
+ else
+ scope = this.getEnvironmentForObject(win, obj, context);
+ if (!scope || !this.isScopeInteresting(scope))
+ return;
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("ClosureInspector; getScopeWrapper failed", exc);
+ return;
+ }
+
+ var dwin = DebuggerLib.getDebuggeeGlobal(context, win);
+
+ var scopeDataHolder = Object.create(ScopeProxy.prototype);
+ scopeDataHolder.scope = scope;
+
+ var self = this;
+ var names, namesSet;
+ var lazyCreateNames = function()
+ {
+ lazyCreateNames = function() {};
+ names = scope.names();
+
+ // Due to weird Firefox behavior, we sometimes have to skip over duplicate
+ // scopes (see issue 6184).
+ if (names.length === 1 && scope.type === "declarative" &&
+ scope.parent && scope.parent.type === "declarative")
+ {
+ var par = scope.parent, parNames = par.names();
+ if (parNames.length === 1 && parNames[0] === names[0])
+ scopeDataHolder.scope = scope = par;
+ }
+
+ // "arguments" is almost always present and optimized away, so hide it
+ // for a nicer display.
+ var ind = names.indexOf("arguments");
+ if (ind !== -1 && self.getVariableOrOptimizedAway(scope, "arguments") === OptimizedAway)
+ names.splice(ind, 1);
+
+ namesSet = new Set();
+ for (var i = 0; i < names.length; ++i)
+ namesSet.add(names[i]);
+ };
+
+ return Proxy.create({
+ desc: function(name)
+ {
+ if (!this.has(name))
+ return;
+ var dval = self.getVariableOrOptimizedAway(scope, name);
+ return {
+ get: function() {
+ if (self.isSimple(dval))
+ return dval;
+ var uwWin = Wrapper.getContentView(win);
+ return DebuggerLib.unwrapDebuggeeValue(dval, uwWin, dwin);
+ },
+ set: (dval === OptimizedAway ? undefined : function(value) {
+ dval = dwin.makeDebuggeeValue(value);
+ scope.setVariable(name, dval);
+ }),
+ enumerable: true,
+ configurable: false
+ };
+ },
+ has: function(name)
+ {
+ lazyCreateNames();
+ return namesSet.has(name);
+ },
+ hasOwn: function(name) { return this.has(name); },
+ getOwnPropertyDescriptor: function(name) { return this.desc(name); },
+ getPropertyDescriptor: function(name) { return this.desc(name); },
+ keys: function()
+ {
+ lazyCreateNames();
+ return names;
+ },
+ enumerate: function() { return this.keys(); },
+ getOwnPropertyNames: function() { return this.keys(); },
+ getPropertyNames: function() { return this.keys(); }
+ }, scopeDataHolder);
+ },
+
+ isScopeWrapper: function(obj)
+ {
+ return obj instanceof ScopeProxy;
+ },
+
+ getScopeFromWrapper: function(obj)
+ {
+ return Object.getPrototypeOf(obj).scope;
+ },
+
+ extendLanguageSyntax: function(expr, win, context)
+ {
+ // Temporary FireClosure compatibility.
+ if (Firebug.JSAutoCompleter.transformScopeExpr)
+ return expr;
+
+ // Note: this is also hard-coded elsewhere.
+ var fname = "__fb_scopedVars";
+
+ var newExpr = Firebug.JSAutoCompleter.transformScopeOperator(expr, fname);
+ if (expr === newExpr)
+ return expr;
+
+ if (FBTrace.DBG_COMMANDLINE)
+ {
+ FBTrace.sysout("ClosureInspector; transforming expression: `" +
+ expr + "` -> `" + newExpr + "`");
+ }
+
+ // Stick the helper function for .%-expressions on the window object.
+ // This really belongs on the command line object, but that doesn't
+ // work when stopped in the debugger (issue 5321, which depends on
+ // integrating JSD2) and we really need this to work there.
+ // To avoid leaking capabilities into arbitrary web pages, this is
+ // only injected when needed.
+ try
+ {
+ var self = this;
+ Object.defineProperty(Wrapper.getContentView(win), fname, {
+ value: function(obj)
+ {
+ return self.getClosureWrapper(obj, win, context);
+ },
+ writable: true,
+ configurable: true
+ });
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("ClosureInspector; failed to inject " + fname, exc);
+ }
+
+ return newExpr;
+ }
+};
+
+Firebug.ClosureInspector = ClosureInspector;
+return ClosureInspector;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/commandEditor.js b/content/firebug/console/commandEditor.js
index 4f3823e..7ae9d3e 100644
--- a/content/firebug/console/commandEditor.js
+++ b/content/firebug/console/commandEditor.js
@@ -1,401 +1,401 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/events",
- "firebug/chrome/menu",
- "firebug/lib/dom",
- "firebug/lib/locale",
- "firebug/lib/css",
- "firebug/lib/options",
-],
-function(Obj, Firebug, Events, Menu, Dom, Locale, Css, Options) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Cu = Components.utils;
-
-var MODE_JAVASCRIPT = "js";
-var CONTEXT_MENU = "";
-var TEXT_CHANGED = "";
-
-try
-{
- // Introduced in Firefox 8
- Cu["import"]("resource:///modules/source-editor.jsm");
-
- MODE_JAVASCRIPT = SourceEditor.MODES.JAVASCRIPT;
- CONTEXT_MENU = SourceEditor.EVENTS.CONTEXT_MENU;
- TEXT_CHANGED = SourceEditor.EVENTS.TEXT_CHANGED;
-}
-catch (err)
-{
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("commandEditor: EXCEPTION source-editors is not available!");
-}
-
-// ********************************************************************************************* //
-// Command Editor
-
-Firebug.CommandEditor = Obj.extend(Firebug.Module,
-{
- dispatchName: "commandEditor",
-
- editor: null,
-
- initialize: function()
- {
- Firebug.Module.initialize.apply(this, arguments);
-
- if (this.editor)
- return;
-
- // The current implementation of the SourceEditor (based on Orion) doesn't
- // support zooming. So, the TextEditor (based on textarea) can be used
- // by setting extensions.firebug.enableOrion pref to false.
- // See issue 5678
- if (typeof(SourceEditor) != "undefined" && Options.get("enableOrion"))
- this.editor = new SourceEditor();
- else
- this.editor = new TextEditor();
-
- var config =
- {
- mode: MODE_JAVASCRIPT,
- showLineNumbers: false,
- theme: "chrome://firebug/skin/orion-firebug.css"
- };
-
- // Custom shortcuts for Orion editor
- config.keys = [{
- action: "firebug-cmdEditor-execute",
- code: KeyEvent.DOM_VK_RETURN,
- accel: true,
- callback: this.onExecute.bind(this),
- },{
- action: "firebug-cmdEditor-escape",
- code: KeyEvent.DOM_VK_ESCAPE,
- callback: this.onEscape.bind(this),
- }];
-
- // Initialize Orion editor.
- this.parent = document.getElementById("fbCommandEditor");
- this.editor.init(this.parent, config, this.onEditorLoad.bind(this));
-
- if (FBTrace.DBG_COMMANDEDITOR)
- FBTrace.sysout("commandEditor: SourceEditor initialized");
- },
-
- shutdown: function()
- {
- if (!this.editor)
- return;
-
- this.editor.removeEventListener(CONTEXT_MENU, this.onContextMenu);
- this.editor.removeEventListener(TEXT_CHANGED, this.onTextChanged);
-
- this.editor.destroy();
- this.editor = null;
- },
-
- /**
- * The load event handler for the source editor. This method does post-load
- * editor initialization.
- */
- onEditorLoad: function()
- {
- // xxxHonza: Context menu support is going to change in SourceEditor
- this.editor.addEventListener(CONTEXT_MENU, this.onContextMenu);
- this.editor.addEventListener(TEXT_CHANGED, this.onTextChanged);
-
- this.editor.setCaretOffset(this.editor.getCharCount());
-
- Firebug.chrome.applyTextSize(Firebug.textSize);
-
- if (FBTrace.DBG_COMMANDEDITOR)
- FBTrace.sysout("commandEditor.onEditorLoad; SourceEditor loaded");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Keyboard shortcuts
-
- onExecute: function()
- {
- var context = Firebug.currentContext;
- Firebug.CommandLine.update(context);
- Firebug.CommandLine.enter(context);
- return true;
- },
-
- onEscape: function()
- {
- var context = Firebug.currentContext;
- Firebug.CommandLine.update(context);
- Firebug.CommandLine.cancel(context);
- return true;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Other Events
-
- onTextChanged: function(event)
- {
- // Ignore changes that are triggered by Firebug's restore logic.
- if (Firebug.CommandEditor.ignoreChanges)
- return;
-
- var context = Firebug.currentContext;
- Firebug.CommandLine.update(context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Context Menu
-
- onContextMenu: function(event)
- {
- var popup = document.getElementById("fbCommandEditorPopup");
- Dom.eraseNode(popup);
-
- var items = Firebug.CommandEditor.getContextMenuItems();
- Menu.createMenuItems(popup, items);
-
- if (!popup.childNodes.length)
- return;
-
- popup.openPopupAtScreen(event.screenX, event.screenY, true);
- },
-
- getContextMenuItems: function()
- {
- var items = [];
- items.push({label: Locale.$STR("Cut"), commandID: "cmd_cut"});
- items.push({label: Locale.$STR("Copy"), commandID: "cmd_copy"});
- items.push({label: Locale.$STR("Paste"), commandID: "cmd_paste"});
- items.push({label: Locale.$STR("Delete"), commandID: "cmd_delete"});
- items.push("-");
- items.push({label: Locale.$STR("SelectAll"), commandID: "cmd_selectAll"});
- return items;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Public API
-
- setText: function(text)
- {
- try
- {
- // When manually setting the text, ignore the TEXT_CHANGED event.
- this.ignoreChanges = true;
-
- if (this.editor)
- this.editor.setText(text);
- }
- catch (err)
- {
- // No exception is really expected, we just need the finally clause.
- }
- finally
- {
- this.ignoreChanges = false;
- }
- },
-
- getText: function()
- {
- if (this.editor)
- return this.editor.getText();
- },
-
- setSelectionRange: function(start, end)
- {
- if (this.editor)
- this.editor.setSelection(start, end);
- },
-
- select: function()
- {
- // TODO xxxHonza
- },
-
- // returns the applicable commands
- getExpression: function()
- {
- if (this.editor)
- {
- if (this.isCollapsed())
- return this.getText();
- else
- return this.editor.getSelectedText();
- }
- },
-
- isCollapsed: function()
- {
- var selection;
- if (this.editor)
- {
- selection = this.editor.getSelection();
- return selection.start === selection.end;
- }
- return true;
- },
-
- hasFocus: function()
- {
- try
- {
- if (this.editor)
- return this.editor.hasFocus();
- }
- catch (e)
- {
- }
- },
-
- focus: function()
- {
- if (this.editor)
- this.editor.focus();
- },
-
- fontSizeAdjust: function(adjust)
- {
- if (!this.editor || !this.editor._view)
- return;
-
- if (typeof(SourceEditor) != "undefined")
- {
- // See issue 5488
- // var doc = this.editor._view._frame.contentDocument;
-
- //doc.body.style.fontSizeAdjust = adjust;
- }
- else
- {
- this.editor.textBox.style.fontSizeAdjust = adjust;
- }
- }
-});
-
-// ********************************************************************************************* //
-// Getters/setters
-
-Firebug.CommandEditor.__defineGetter__("value", function()
-{
- return this.getText();
-});
-
-Firebug.CommandEditor.__defineSetter__("value", function(val)
-{
- this.setText(val);
-});
-
-// ********************************************************************************************* //
-// Text Editor
-
-/**
- * A simple <textbox> element is used in environments where the Orion SourceEditor is not
- * available (such as SeaMonkey)
- */
-function TextEditor() {}
-TextEditor.prototype =
-{
- init: function(editorElement, config, callback)
- {
- var commandEditorBox = editorElement.parentNode;
-
- this.textBox = commandEditorBox.ownerDocument.createElement("textbox");
- this.textBox.setAttribute("id", "fbCommandEditor");
- this.textBox.setAttribute("multiline", "true");
- this.textBox.setAttribute("flex", "1");
- this.textBox.setAttribute("newlines", "pasteintact");
- this.textBox.setAttribute("label", "CommandEditor");
-
- commandEditorBox.replaceChild(this.textBox, editorElement);
-
- // The original source editor is also loaded asynchronously.
- setTimeout(callback);
- },
-
- destroy: function()
- {
- },
-
- addEventListener: function(type, callback)
- {
- if (!type)
- return;
-
- Events.addEventListener(this.textBox, type, callback, true);
- },
-
- removeEventListener: function(type, callback)
- {
- if (!type)
- return;
-
- Events.removeEventListener(this.textBox, type, callback, true);
- },
-
- setCaretOffset: function(offset)
- {
- },
-
- getCharCount: function()
- {
- return this.textBox.value ? this.textBox.value.length : 0;
- },
-
- setText: function(text)
- {
- this.textBox.value = text;
- },
-
- getText: function()
- {
- return this.textBox.value;
- },
-
- setSelection: function(start, end)
- {
- this.textBox.setSelectionRange(start, end);
- },
-
- getSelection: function()
- {
- return {
- start: this.textBox.selectionStart,
- end: this.textBox.selectionEnd
- };
- },
-
- hasFocus: function()
- {
- return this.textBox.getAttribute("focused") == "true";
- },
-
- focus: function()
- {
- this.textBox.focus();
- },
-
- getSelectedText: function()
- {
- var start = this.textBox.selectionStart;
- var end = this.textBox.selectionEnd;
-
- return this.textBox.value.substring(start, end);
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.CommandEditor);
-
-return Firebug.CommandEditor;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/events",
+ "firebug/chrome/menu",
+ "firebug/lib/dom",
+ "firebug/lib/locale",
+ "firebug/lib/css",
+ "firebug/lib/options",
+],
+function(Obj, Firebug, Events, Menu, Dom, Locale, Css, Options) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Cu = Components.utils;
+
+var MODE_JAVASCRIPT = "js";
+var CONTEXT_MENU = "";
+var TEXT_CHANGED = "";
+
+try
+{
+ // Introduced in Firefox 8
+ Cu["import"]("resource:///modules/source-editor.jsm");
+
+ MODE_JAVASCRIPT = SourceEditor.MODES.JAVASCRIPT;
+ CONTEXT_MENU = SourceEditor.EVENTS.CONTEXT_MENU;
+ TEXT_CHANGED = SourceEditor.EVENTS.TEXT_CHANGED;
+}
+catch (err)
+{
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("commandEditor: EXCEPTION source-editors is not available!");
+}
+
+// ********************************************************************************************* //
+// Command Editor
+
+Firebug.CommandEditor = Obj.extend(Firebug.Module,
+{
+ dispatchName: "commandEditor",
+
+ editor: null,
+
+ initialize: function()
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+
+ if (this.editor)
+ return;
+
+ // The current implementation of the SourceEditor (based on Orion) doesn't
+ // support zooming. So, the TextEditor (based on textarea) can be used
+ // by setting extensions.firebug.enableOrion pref to false.
+ // See issue 5678
+ if (typeof(SourceEditor) != "undefined" && Options.get("enableOrion"))
+ this.editor = new SourceEditor();
+ else
+ this.editor = new TextEditor();
+
+ var config =
+ {
+ mode: MODE_JAVASCRIPT,
+ showLineNumbers: false,
+ theme: "chrome://firebug/skin/orion-firebug.css"
+ };
+
+ // Custom shortcuts for Orion editor
+ config.keys = [{
+ action: "firebug-cmdEditor-execute",
+ code: KeyEvent.DOM_VK_RETURN,
+ accel: true,
+ callback: this.onExecute.bind(this),
+ },{
+ action: "firebug-cmdEditor-escape",
+ code: KeyEvent.DOM_VK_ESCAPE,
+ callback: this.onEscape.bind(this),
+ }];
+
+ // Initialize Orion editor.
+ this.parent = document.getElementById("fbCommandEditor");
+ this.editor.init(this.parent, config, this.onEditorLoad.bind(this));
+
+ if (FBTrace.DBG_COMMANDEDITOR)
+ FBTrace.sysout("commandEditor: SourceEditor initialized");
+ },
+
+ shutdown: function()
+ {
+ if (!this.editor)
+ return;
+
+ this.editor.removeEventListener(CONTEXT_MENU, this.onContextMenu);
+ this.editor.removeEventListener(TEXT_CHANGED, this.onTextChanged);
+
+ this.editor.destroy();
+ this.editor = null;
+ },
+
+ /**
+ * The load event handler for the source editor. This method does post-load
+ * editor initialization.
+ */
+ onEditorLoad: function()
+ {
+ // xxxHonza: Context menu support is going to change in SourceEditor
+ this.editor.addEventListener(CONTEXT_MENU, this.onContextMenu);
+ this.editor.addEventListener(TEXT_CHANGED, this.onTextChanged);
+
+ this.editor.setCaretOffset(this.editor.getCharCount());
+
+ Firebug.chrome.applyTextSize(Firebug.textSize);
+
+ if (FBTrace.DBG_COMMANDEDITOR)
+ FBTrace.sysout("commandEditor.onEditorLoad; SourceEditor loaded");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Keyboard shortcuts
+
+ onExecute: function()
+ {
+ var context = Firebug.currentContext;
+ Firebug.CommandLine.update(context);
+ Firebug.CommandLine.enter(context);
+ return true;
+ },
+
+ onEscape: function()
+ {
+ var context = Firebug.currentContext;
+ Firebug.CommandLine.update(context);
+ Firebug.CommandLine.cancel(context);
+ return true;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Other Events
+
+ onTextChanged: function(event)
+ {
+ // Ignore changes that are triggered by Firebug's restore logic.
+ if (Firebug.CommandEditor.ignoreChanges)
+ return;
+
+ var context = Firebug.currentContext;
+ Firebug.CommandLine.update(context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Context Menu
+
+ onContextMenu: function(event)
+ {
+ var popup = document.getElementById("fbCommandEditorPopup");
+ Dom.eraseNode(popup);
+
+ var items = Firebug.CommandEditor.getContextMenuItems();
+ Menu.createMenuItems(popup, items);
+
+ if (!popup.childNodes.length)
+ return;
+
+ popup.openPopupAtScreen(event.screenX, event.screenY, true);
+ },
+
+ getContextMenuItems: function()
+ {
+ var items = [];
+ items.push({label: Locale.$STR("Cut"), commandID: "cmd_cut"});
+ items.push({label: Locale.$STR("Copy"), commandID: "cmd_copy"});
+ items.push({label: Locale.$STR("Paste"), commandID: "cmd_paste"});
+ items.push({label: Locale.$STR("Delete"), commandID: "cmd_delete"});
+ items.push("-");
+ items.push({label: Locale.$STR("SelectAll"), commandID: "cmd_selectAll"});
+ return items;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Public API
+
+ setText: function(text)
+ {
+ try
+ {
+ // When manually setting the text, ignore the TEXT_CHANGED event.
+ this.ignoreChanges = true;
+
+ if (this.editor)
+ this.editor.setText(text);
+ }
+ catch (err)
+ {
+ // No exception is really expected, we just need the finally clause.
+ }
+ finally
+ {
+ this.ignoreChanges = false;
+ }
+ },
+
+ getText: function()
+ {
+ if (this.editor)
+ return this.editor.getText();
+ },
+
+ setSelectionRange: function(start, end)
+ {
+ if (this.editor)
+ this.editor.setSelection(start, end);
+ },
+
+ select: function()
+ {
+ // TODO xxxHonza
+ },
+
+ // returns the applicable commands
+ getExpression: function()
+ {
+ if (this.editor)
+ {
+ if (this.isCollapsed())
+ return this.getText();
+ else
+ return this.editor.getSelectedText();
+ }
+ },
+
+ isCollapsed: function()
+ {
+ var selection;
+ if (this.editor)
+ {
+ selection = this.editor.getSelection();
+ return selection.start === selection.end;
+ }
+ return true;
+ },
+
+ hasFocus: function()
+ {
+ try
+ {
+ if (this.editor)
+ return this.editor.hasFocus();
+ }
+ catch (e)
+ {
+ }
+ },
+
+ focus: function()
+ {
+ if (this.editor)
+ this.editor.focus();
+ },
+
+ fontSizeAdjust: function(adjust)
+ {
+ if (!this.editor || !this.editor._view)
+ return;
+
+ if (typeof(SourceEditor) != "undefined")
+ {
+ // See issue 5488
+ // var doc = this.editor._view._frame.contentDocument;
+
+ //doc.body.style.fontSizeAdjust = adjust;
+ }
+ else
+ {
+ this.editor.textBox.style.fontSizeAdjust = adjust;
+ }
+ }
+});
+
+// ********************************************************************************************* //
+// Getters/setters
+
+Firebug.CommandEditor.__defineGetter__("value", function()
+{
+ return this.getText();
+});
+
+Firebug.CommandEditor.__defineSetter__("value", function(val)
+{
+ this.setText(val);
+});
+
+// ********************************************************************************************* //
+// Text Editor
+
+/**
+ * A simple <textbox> element is used in environments where the Orion SourceEditor is not
+ * available (such as SeaMonkey)
+ */
+function TextEditor() {}
+TextEditor.prototype =
+{
+ init: function(editorElement, config, callback)
+ {
+ var commandEditorBox = editorElement.parentNode;
+
+ this.textBox = commandEditorBox.ownerDocument.createElement("textbox");
+ this.textBox.setAttribute("id", "fbCommandEditor");
+ this.textBox.setAttribute("multiline", "true");
+ this.textBox.setAttribute("flex", "1");
+ this.textBox.setAttribute("newlines", "pasteintact");
+ this.textBox.setAttribute("label", "CommandEditor");
+
+ commandEditorBox.replaceChild(this.textBox, editorElement);
+
+ // The original source editor is also loaded asynchronously.
+ setTimeout(callback);
+ },
+
+ destroy: function()
+ {
+ },
+
+ addEventListener: function(type, callback)
+ {
+ if (!type)
+ return;
+
+ Events.addEventListener(this.textBox, type, callback, true);
+ },
+
+ removeEventListener: function(type, callback)
+ {
+ if (!type)
+ return;
+
+ Events.removeEventListener(this.textBox, type, callback, true);
+ },
+
+ setCaretOffset: function(offset)
+ {
+ },
+
+ getCharCount: function()
+ {
+ return this.textBox.value ? this.textBox.value.length : 0;
+ },
+
+ setText: function(text)
+ {
+ this.textBox.value = text;
+ },
+
+ getText: function()
+ {
+ return this.textBox.value;
+ },
+
+ setSelection: function(start, end)
+ {
+ this.textBox.setSelectionRange(start, end);
+ },
+
+ getSelection: function()
+ {
+ return {
+ start: this.textBox.selectionStart,
+ end: this.textBox.selectionEnd
+ };
+ },
+
+ hasFocus: function()
+ {
+ return this.textBox.getAttribute("focused") == "true";
+ },
+
+ focus: function()
+ {
+ this.textBox.focus();
+ },
+
+ getSelectedText: function()
+ {
+ var start = this.textBox.selectionStart;
+ var end = this.textBox.selectionEnd;
+
+ return this.textBox.value.substring(start, end);
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.CommandEditor);
+
+return Firebug.CommandEditor;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/commandHistory.js b/content/firebug/console/commandHistory.js
index 05dbf4e..68172fa 100644
--- a/content/firebug/console/commandHistory.js
+++ b/content/firebug/console/commandHistory.js
@@ -1,224 +1,224 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/events",
- "firebug/lib/wrapper",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/string",
- "firebug/console/autoCompleter"
-],
-function(Firebug, Events, Wrapper, Css, Dom, Str) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-
-Firebug.CommandHistory = function()
-{
- const commandHistoryMax = 1000;
-
- var commandsPopup = Firebug.chrome.$("fbCommandHistory");
- var commands = this.commands = [];
- var commandPointer = 0;
- var commandInsertPointer = -1;
-
- this.getLastCommand = function()
- {
- var command = commands[commandInsertPointer];
- if (!command)
- return "";
-
- return command;
- };
-
- this.appendToHistory = function(command)
- {
- if (commands[commandInsertPointer] != command)
- {
- commandInsertPointer++;
- if (commandInsertPointer >= commandHistoryMax)
- commandInsertPointer = 0;
-
- commands[commandInsertPointer] = command;
- }
-
- commandPointer = commandInsertPointer + 1;
-
- if (Firebug.chrome.$("fbCommandLineHistoryButton").hasAttribute("disabled"))
- {
- Firebug.chrome.$("fbCommandLineHistoryButton").removeAttribute("disabled");
- Firebug.chrome.$("fbCommandEditorHistoryButton").removeAttribute("disabled");
-
- this.attachListeners();
- }
- };
-
- this.attachListeners = function()
- {
- Events.addEventListener(commandsPopup, "mouseover", this.onMouseOver, true);
- Events.addEventListener(commandsPopup, "mouseup", this.onMouseUp, true);
- Events.addEventListener(commandsPopup, "popuphidden", this.onPopupHidden, true);
- };
-
- this.detachListeners = function()
- {
- Events.removeEventListener(commandsPopup, "mouseover", this.onMouseOver, true);
- Events.removeEventListener(commandsPopup, "mouseup", this.onMouseUp, true);
- Events.removeEventListener(commandsPopup, "popuphidden", this.onPopupHidden, true);
- };
-
- this.cycleCommands = function(context, dir)
- {
- var command;
- var commandLine = Firebug.CommandLine.getCommandLine(context);
-
- commandPointer += dir;
- if (commandPointer < 0)
- commandPointer = 0;
- else if (commandPointer > commands.length)
- commandPointer = commands.length;
-
- if (commandPointer < commands.length)
- {
- command = commands[commandPointer];
- if (commandsPopup.state == "open")
- {
- var commandElement = commandsPopup.children[commandPointer];
- this.selectCommand(commandElement);
-
- Dom.scrollMenupopup(commandsPopup, commandElement);
- }
- }
- else
- {
- command = "";
- this.removeCommandSelection();
- }
-
- commandLine.value = command;
- Firebug.CommandLine.autoCompleter.hide();
- Firebug.CommandLine.update(context);
- setCursorToEOL(commandLine);
- };
-
- this.isShown = function()
- {
- return commandsPopup.state == "open";
- };
-
- this.show = function(element)
- {
- if (this.isShown())
- return this.hide();
-
- Dom.eraseNode(commandsPopup);
-
- if(commands.length == 0)
- return;
-
- var doc = commandsPopup.ownerDocument;
-
- for (var i = 0; i < commands.length; i++)
- {
- var hbox = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
-
- hbox.classList.add("commandHistoryItem");
- var shortExpr = Str.cropString(Str.stripNewLines(commands[i]), 50);
- hbox.textContent = shortExpr;
- hbox.value = i;
- commandsPopup.appendChild(hbox);
-
- if (i === commandPointer)
- this.selectCommand(hbox);
- }
-
- commandsPopup.openPopup(element, "before_start", 0, 0, false, false);
-
- // make sure last element is visible
- setTimeout(Dom.scrollMenupopup, 10, commandsPopup, hbox);
- this.isOpen = true;
-
- return true;
- };
-
- this.hide = function()
- {
- commandsPopup.hidePopup();
- this.isOpen = false;
- return true;
- };
-
- this.toggle = function(element)
- {
- this.isShown() ? this.hide() : this.show(element);
- };
-
- this.removeCommandSelection = function()
- {
- var selected = commandsPopup.ownerDocument.getElementsByClassName("selected")[0];
- Css.removeClass(selected, "selected");
- };
-
- this.selectCommand = function(element)
- {
- this.removeCommandSelection();
-
- Css.setClass(element, "selected");
- };
-
- this.onMouseOver = function(event)
- {
- var hovered = event.target;
-
- if (hovered.localName == "vbox")
- return;
-
- Firebug.CommandLine.commandHistory.selectCommand(hovered);
- };
-
- this.onMouseUp = function(event)
- {
- var i = event.target.value;
- if (i == undefined)
- return;
-
- var commandLine = Firebug.CommandLine.getCommandLine(Firebug.currentContext);
-
- commandLine.value = commands[i];
- commandPointer = event.target.value;
-
- Firebug.CommandLine.commandHistory.hide();
- };
-
- this.onPopupHidden = function(event)
- {
- Firebug.chrome.setGlobalAttribute("fbCommandLineHistoryButton", "checked", "false");
- Firebug.chrome.setGlobalAttribute("fbCommandEditorHistoryButton", "checked", "false");
- this.isOpen = false;
- };
-};
-
-// ********************************************************************************************* //
-// Helpers
-
-//xxxHonza: duplicated in console/autoCompleter.js
-function setCursorToEOL(input)
-{
- // textbox version, https://developer.mozilla.org/en/XUL/Property/inputField
- // input.inputField.setSelectionRange(len, len);
- input.setSelectionRange(input.value.length, input.value.length);
-}
-
-// ********************************************************************************************* //
-// Registration
-
-return Firebug.CommandHistory;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/events",
+ "firebug/lib/wrapper",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/string",
+ "firebug/console/autoCompleter"
+],
+function(Firebug, Events, Wrapper, Css, Dom, Str) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+
+Firebug.CommandHistory = function()
+{
+ const commandHistoryMax = 1000;
+
+ var commandsPopup = Firebug.chrome.$("fbCommandHistory");
+ var commands = this.commands = [];
+ var commandPointer = 0;
+ var commandInsertPointer = -1;
+
+ this.getLastCommand = function()
+ {
+ var command = commands[commandInsertPointer];
+ if (!command)
+ return "";
+
+ return command;
+ };
+
+ this.appendToHistory = function(command)
+ {
+ if (commands[commandInsertPointer] != command)
+ {
+ commandInsertPointer++;
+ if (commandInsertPointer >= commandHistoryMax)
+ commandInsertPointer = 0;
+
+ commands[commandInsertPointer] = command;
+ }
+
+ commandPointer = commandInsertPointer + 1;
+
+ if (Firebug.chrome.$("fbCommandLineHistoryButton").hasAttribute("disabled"))
+ {
+ Firebug.chrome.$("fbCommandLineHistoryButton").removeAttribute("disabled");
+ Firebug.chrome.$("fbCommandEditorHistoryButton").removeAttribute("disabled");
+
+ this.attachListeners();
+ }
+ };
+
+ this.attachListeners = function()
+ {
+ Events.addEventListener(commandsPopup, "mouseover", this.onMouseOver, true);
+ Events.addEventListener(commandsPopup, "mouseup", this.onMouseUp, true);
+ Events.addEventListener(commandsPopup, "popuphidden", this.onPopupHidden, true);
+ };
+
+ this.detachListeners = function()
+ {
+ Events.removeEventListener(commandsPopup, "mouseover", this.onMouseOver, true);
+ Events.removeEventListener(commandsPopup, "mouseup", this.onMouseUp, true);
+ Events.removeEventListener(commandsPopup, "popuphidden", this.onPopupHidden, true);
+ };
+
+ this.cycleCommands = function(context, dir)
+ {
+ var command;
+ var commandLine = Firebug.CommandLine.getCommandLine(context);
+
+ commandPointer += dir;
+ if (commandPointer < 0)
+ commandPointer = 0;
+ else if (commandPointer > commands.length)
+ commandPointer = commands.length;
+
+ if (commandPointer < commands.length)
+ {
+ command = commands[commandPointer];
+ if (commandsPopup.state == "open")
+ {
+ var commandElement = commandsPopup.children[commandPointer];
+ this.selectCommand(commandElement);
+
+ Dom.scrollMenupopup(commandsPopup, commandElement);
+ }
+ }
+ else
+ {
+ command = "";
+ this.removeCommandSelection();
+ }
+
+ commandLine.value = command;
+ Firebug.CommandLine.autoCompleter.hide();
+ Firebug.CommandLine.update(context);
+ setCursorToEOL(commandLine);
+ };
+
+ this.isShown = function()
+ {
+ return commandsPopup.state == "open";
+ };
+
+ this.show = function(element)
+ {
+ if (this.isShown())
+ return this.hide();
+
+ Dom.eraseNode(commandsPopup);
+
+ if(commands.length == 0)
+ return;
+
+ var doc = commandsPopup.ownerDocument;
+
+ for (var i = 0; i < commands.length; i++)
+ {
+ var hbox = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
+
+ hbox.classList.add("commandHistoryItem");
+ var shortExpr = Str.cropString(Str.stripNewLines(commands[i]), 50);
+ hbox.textContent = shortExpr;
+ hbox.value = i;
+ commandsPopup.appendChild(hbox);
+
+ if (i === commandPointer)
+ this.selectCommand(hbox);
+ }
+
+ commandsPopup.openPopup(element, "before_start", 0, 0, false, false);
+
+ // make sure last element is visible
+ setTimeout(Dom.scrollMenupopup, 10, commandsPopup, hbox);
+ this.isOpen = true;
+
+ return true;
+ };
+
+ this.hide = function()
+ {
+ commandsPopup.hidePopup();
+ this.isOpen = false;
+ return true;
+ };
+
+ this.toggle = function(element)
+ {
+ this.isShown() ? this.hide() : this.show(element);
+ };
+
+ this.removeCommandSelection = function()
+ {
+ var selected = commandsPopup.ownerDocument.getElementsByClassName("selected")[0];
+ Css.removeClass(selected, "selected");
+ };
+
+ this.selectCommand = function(element)
+ {
+ this.removeCommandSelection();
+
+ Css.setClass(element, "selected");
+ };
+
+ this.onMouseOver = function(event)
+ {
+ var hovered = event.target;
+
+ if (hovered.localName == "vbox")
+ return;
+
+ Firebug.CommandLine.commandHistory.selectCommand(hovered);
+ };
+
+ this.onMouseUp = function(event)
+ {
+ var i = event.target.value;
+ if (i == undefined)
+ return;
+
+ var commandLine = Firebug.CommandLine.getCommandLine(Firebug.currentContext);
+
+ commandLine.value = commands[i];
+ commandPointer = event.target.value;
+
+ Firebug.CommandLine.commandHistory.hide();
+ };
+
+ this.onPopupHidden = function(event)
+ {
+ Firebug.chrome.setGlobalAttribute("fbCommandLineHistoryButton", "checked", "false");
+ Firebug.chrome.setGlobalAttribute("fbCommandEditorHistoryButton", "checked", "false");
+ this.isOpen = false;
+ };
+};
+
+// ********************************************************************************************* //
+// Helpers
+
+//xxxHonza: duplicated in console/autoCompleter.js
+function setCursorToEOL(input)
+{
+ // textbox version, https://developer.mozilla.org/en/XUL/Property/inputField
+ // input.inputField.setSelectionRange(len, len);
+ input.setSelectionRange(input.value.length, input.value.length);
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return Firebug.CommandHistory;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/commandLine.js b/content/firebug/console/commandLine.js
index a19b68b..74680f0 100644
--- a/content/firebug/console/commandLine.js
+++ b/content/firebug/console/commandLine.js
@@ -1,750 +1,750 @@
-/* See license.txt for terms of usage */
-/*jshint forin:false, noempty:false, esnext:true, es5:true, curly:false */
-/*global FBTrace:true, Components:true, define:true, KeyEvent:true */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/reps",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/url",
- "firebug/lib/dom",
- "firebug/chrome/firefox",
- "firebug/chrome/window",
- "firebug/lib/system",
- "firebug/lib/string",
- "firebug/lib/persist",
- "firebug/console/console",
- "firebug/console/commandLineExposed",
- "firebug/console/closureInspector",
- "firebug/console/commandLineAPI",
- "firebug/console/autoCompleter",
- "firebug/console/commandHistory",
- "firebug/console/commands/commandLineHelp",
- "firebug/console/commands/commandLineInclude",
-],
-function(Obj, Firebug, FirebugReps, Locale, Events, Url, Dom, Firefox, Win, System, Str,
- Persist, Console, CommandLineExposed, ClosureInspector, CommandLineAPI) {
-
-"use strict";
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-
-const commandPrefix = ">>> ";
-
-// ********************************************************************************************* //
-// Command Line
-
-Firebug.CommandLine = Obj.extend(Firebug.Module,
-{
- dispatchName: "commandLine",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- evaluate: function(expr, context, thisValue, targetWindow, successConsoleFunction,
- exceptionFunction, noStateChange)
- {
- if (!context)
- return;
-
- targetWindow = targetWindow || context.getCurrentGlobal();
-
- var debuggerState, result = null;
- try
- {
- debuggerState = Firebug.Debugger.beginInternalOperation();
-
- var newExpr = ClosureInspector.extendLanguageSyntax(expr, targetWindow, context);
-
- if (this.isSandbox(context))
- {
- this.evaluateInSandbox(newExpr, context, thisValue, targetWindow,
- successConsoleFunction, exceptionFunction, expr);
- }
- else if (Firebug.Debugger.hasValidStack(context))
- {
- this.evaluateInDebugFrame(newExpr, context, thisValue, targetWindow,
- successConsoleFunction, exceptionFunction, expr);
- }
- else
- {
- this.evaluateInGlobal(newExpr, context, thisValue, targetWindow,
- successConsoleFunction, exceptionFunction, expr);
- }
-
- if (!noStateChange)
- context.invalidatePanels("dom", "html");
- }
- catch (exc)
- {
- // XXX jjb, I don't expect this to be taken, the try here is for the finally
- if (FBTrace.DBG_ERRORS && FBTrace.DBG_COMMANDLINE)
- {
- FBTrace.sysout("commandLine.evaluate with context.stopped:" + context.stopped +
- " EXCEPTION " + exc, exc);
- }
- }
- finally
- {
- Firebug.Debugger.endInternalOperation(debuggerState);
- }
- },
-
- evaluateInGlobal: function(expr, context, thisValue, targetWindow,
- successConsoleFunction, exceptionFunction, origExpr)
- {
- var win = targetWindow || context.getCurrentGlobal();
-
- if (!win)
- {
- if (FBTrace.DBG_ERRORS && FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("commandLine.evaluateInGlobal: no targetWindow!");
- return;
- }
-
- context.baseWindow = context.baseWindow || context.window;
- var onSuccess, onError;
-
- if (successConsoleFunction)
- {
- onSuccess = function(result)
- {
- if (FBTrace.DBG_COMMANDLINE)
- {
- FBTrace.sysout("commandLine.evaluateInGlobal; the evaluation succeeded "+
- "and returned: "+ result, result);
- }
-
- if (Console.isDefaultReturnValue(result))
- return;
-
- successConsoleFunction(result, context);
- }
- }
-
- if (!exceptionFunction)
- {
- exceptionFunction = function(result, context)
- {
- Firebug.Console.logFormatted([result], context, "error", true);
- }
- }
-
- onError = function(result)
- {
- if (FBTrace.DBG_COMMANDLINE)
- {
- FBTrace.sysout("commandLine.evaluateInGlobal; the evaluation threw "+
- "an exception:" + result, result);
- }
-
- exceptionFunction(result, context, "errorMessage");
- };
-
- origExpr = origExpr || expr;
- CommandLineExposed.evaluate(context, win, expr, origExpr, onSuccess, onError);
- },
-
- evaluateInDebugFrame: function(expr, context, thisValue, targetWindow,
- successConsoleFunction, exceptionFunction)
- {
- var result = null;
-
- if (!context.commandLineAPI)
- context.commandLineAPI = CommandLineAPI.getCommandLineAPI(context);
-
- var htmlPanel = context.getPanel("html", true);
- var scope = {
- api : context.commandLineAPI,
- vars : htmlPanel ? htmlPanel.getInspectorVars() : null,
- thisValue : thisValue
- };
-
- try
- {
- result = Firebug.Debugger.evaluate(expr, context, scope);
-
- successConsoleFunction(result, context);
- }
- catch (e)
- {
- exceptionFunction(e, context);
- }
-
- return result;
- },
-
- evaluateInWebPage: function(expr, context, targetWindow)
- {
- var win = targetWindow || context.getCurrentGlobal();
-
- var element = Dom.addScript(win.document, "_firebugInWebPage", expr);
- if (!element)
- return;
-
- setTimeout(function delayRemoveScriptTag()
- {
- // we don't need the script element, result is in DOM object
- if (element.parentNode)
- element.parentNode.removeChild(element);
- });
-
- return "true";
- },
-
- // isSandbox(context) true, => context.global is a Sandbox
- evaluateInSandbox: function(expr, context, thisValue, targetWindow, successConsoleFunction,
- exceptionFunction)
- {
- var result,
- scriptToEval = expr;
-
- try
- {
- result = Components.utils.evalInSandbox(scriptToEval, context.global);
-
- if (FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("commandLine.evaluateInSandbox success for sandbox ", scriptToEval);
-
- successConsoleFunction(result, context);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS && FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("commandLine.evaluateInSandbox FAILED in "+context.getName()+
- " because "+e, e);
-
- exceptionFunction(e, context);
-
- result = new FirebugReps.ErrorMessageObj("commandLine.evaluateInSandbox FAILED: " + e,
- Url.getDataURLForContent(scriptToEval, "FirebugCommandLineEvaluate"),
- e.lineNumber, 0, "js", context, null);
- }
-
- return result;
- },
-
- isSandbox: function (context)
- {
- return (context.global && context.global+"" === "[object Sandbox]");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- enter: function(context, command)
- {
- var expr = command ? command : this.getExpression(context);
- if (expr === "")
- return;
-
- var mozJSEnabled = Firebug.Options.getPref("javascript", "enabled");
- if (!mozJSEnabled)
- {
- Firebug.Console.log(Locale.$STR("console.JSDisabledInFirefoxPrefs"), context, "info");
- return;
- }
-
- if (!Firebug.commandEditor || context.panelName !== "console")
- {
- this.clear(context);
- Firebug.Console.log(commandPrefix + expr, context, "command", FirebugReps.Text);
- }
- else
- {
- var shortExpr = Str.cropString(Str.stripNewLines(expr), 100);
- Firebug.Console.log(commandPrefix + shortExpr, context, "command",
- FirebugReps.Text);
- }
-
- this.commandHistory.appendToHistory(expr);
-
- var noscript = getNoScript(), noScriptURI;
- if (noscript)
- {
- var currentURI = Firefox.getCurrentURI();
- noScriptURI = currentURI ? noscript.getSite(currentURI.spec) : null;
- if (noScriptURI)
- noScriptURI = (noscript.jsEnabled || noscript.isJSEnabled(noScriptURI)) ?
- null : noScriptURI;
- }
-
- if (noscript && noScriptURI)
- noscript.setJSEnabled(noScriptURI, true);
-
- var self = this;
- var logResult = Firebug.Console.log.bind(Firebug.Console);
-
- function successHandler(result, context)
- {
- self.dispatch("expressionEvaluated", [context, expr, result, true]);
- logResult.apply(this, arguments);
- }
-
- function exceptionHandler(err, context)
- {
- self.dispatch("expressionEvaluated", [context, expr, err, false]);
- logResult.apply(this, arguments);
- }
-
- // Finally, let's evaluate the use expression!
- this.evaluate(expr, context, null, null, successHandler, exceptionHandler);
-
- if (noscript && noScriptURI)
- noscript.setJSEnabled(noScriptURI, false);
-
- var consolePanel = context.getPanel("console");
- if (consolePanel)
- Dom.scrollToBottom(consolePanel.panelNode);
- },
-
- enterInspect: function(context)
- {
- var expr = this.getCommandLine(context).value;
- if (expr === "")
- return;
-
- this.clear(context);
- this.commandHistory.appendToHistory(expr);
-
- this.evaluate(expr, context, null, null, function(result)
- {
- if (typeof result !== "undefined")
- Firebug.chrome.select(result);
- });
- },
-
- reenter: function(context)
- {
- var command = this.commandHistory.getLastCommand();
- this.enter(context, command);
- },
-
- copyBookmarklet: function(context)
- {
- // XXXsilin: This needs escaping, and stripNewLines is exactly the
- // wrong thing to do when it comes to JavaScript.
- var commandLine = this.getCommandLine(context);
- var expr = "javascript: " + Str.stripNewLines(commandLine.value);
- System.copyToClipboard(expr);
- },
-
- focus: function(context)
- {
- if (Firebug.isDetached())
- Firebug.chrome.focus();
- else
- Firebug.toggleBar(true);
-
- var commandLine = this.getCommandLine(context);
-
- if (!context.panelName)
- {
- Firebug.chrome.selectPanel("console");
- }
- else if (context.panelName !== "console")
- {
- this.Popup.toggle(Firebug.currentContext);
- setTimeout(function() { commandLine.select(); });
- }
- else
- {
- // We are already on the console, if the command line has also
- // the focus, toggle back. But only if the UI has been already
- // opened.
- if (Firebug.commandEditor)
- commandLine.focus();
- else if (commandLine.getAttribute("focused") !== "true")
- setTimeout(function() { commandLine.select(); });
- }
- },
-
- clear: function(context)
- {
- var commandLine = this.getCommandLine(context);
-
- if (commandLine.value)
- {
- commandLine.value = "";
- this.autoCompleter.hide();
- this.update(context);
- return true;
- }
-
- return false;
- },
-
- cancel: function(context)
- {
- return this.clear(context);
- },
-
- update: function(context)
- {
- var commandLine = this.getCommandLine(context);
- context.commandLineText = commandLine.value;
- },
-
- // xxxsz: setMultiLine should just be called when switching between Command Line
- // and Command Editor
- // xxxHonza: it is called for me when switching between the Command Line and
- // Command Editor
- setMultiLine: function(multiLine, chrome, saveMultiLine)
- {
- var context = Firebug.currentContext;
-
- if (FBTrace.DBG_COMMANDLINE)
- {
- FBTrace.sysout("commandLine.setMultiline; multiLine: " + multiLine + " for: " +
- (context ? context.getName() : "no contet"));
- }
-
- if (context && context.panelName !== "console")
- return;
-
- Dom.collapse(chrome.$("fbCommandBox"), multiLine);
- Dom.collapse(chrome.$("fbPanelSplitter"), !multiLine);
- Dom.collapse(chrome.$("fbSidePanelDeck"), !multiLine);
-
- if (multiLine)
- chrome.$("fbSidePanelDeck").selectedPanel = chrome.$("fbCommandEditorBox");
-
- var commandLine = this.getSingleRowCommandLine();
- var commandEditor = this.getCommandEditor();
-
- // we are just closing the view
- if (saveMultiLine)
- {
- commandLine.value = commandEditor.value;
- return;
- }
-
- if (context)
- {
- var text = context.commandLineText || "";
- context.commandLineText = text;
-
- if (multiLine)
- commandEditor.value = Str.cleanIndentation(text);
- else
- commandLine.value = Str.stripNewLines(text);
- }
- // else we may be hiding a panel while turning Firebug off
- },
-
- toggleMultiLine: function(forceCommandEditor)
- {
- var showCommandEditor = !!forceCommandEditor || !Firebug.commandEditor;
- if (showCommandEditor != Firebug.commandEditor)
- Firebug.Options.set("commandEditor", showCommandEditor);
- },
-
- checkOverflow: function(context)
- {
- if (!context)
- return;
-
- var commandLine = this.getCommandLine(context);
- if (commandLine.value.indexOf("\n") >= 0)
- {
- setTimeout(Obj.bindFixed(function()
- {
- Firebug.Options.set("commandEditor", true);
-
- // Switch to the Console panel, where the multiline command line
- // is actually displayed. This should be improved see issue 5146
- Firebug.chrome.selectPanel("console");
- }, this));
- }
- },
-
- onCommandLineOverflow: function(event)
- {
- this.checkOverflow(Firebug.currentContext);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Module
-
- initialize: function()
- {
- Firebug.Module.initialize.apply(this, arguments);
-
- this.setAutoCompleter();
- this.commandHistory = new Firebug.CommandHistory();
-
- if (Firebug.commandEditor)
- this.setMultiLine(true, Firebug.chrome);
- },
-
- // (Re)create the auto-completer for the small command line.
- setAutoCompleter: function()
- {
- if (this.autoCompleter)
- this.autoCompleter.shutdown();
-
- var commandLine = this.getSingleRowCommandLine();
- var completionBox = this.getCompletionBox();
-
- var options = {
- showCompletionPopup: Firebug.Options.get("commandLineShowCompleterPopup"),
- completionPopup: Firebug.chrome.$("fbCommandLineCompletionList"),
- popupMeasurer: Firebug.chrome.$("fbCommandLineMeasurer"),
- tabWarnings: true,
- includeCurrentScope: true,
- includeCommandLineAPI: true
- };
-
- this.autoCompleter = new Firebug.JSAutoCompleter(commandLine, completionBox, options);
- },
-
- initializeUI: function()
- {
- this.onCommandLineInput = Obj.bind(this.onCommandLineInput, this);
- this.onCommandLineOverflow = Obj.bind(this.onCommandLineOverflow, this);
- this.onCommandLineKeyUp = Obj.bind(this.onCommandLineKeyUp, this);
- this.onCommandLineKeyDown = Obj.bind(this.onCommandLineKeyDown, this);
- this.onCommandLineKeyPress = Obj.bind(this.onCommandLineKeyPress, this);
- this.attachListeners();
- },
-
- attachListeners: function()
- {
- var commandLine = this.getSingleRowCommandLine();
-
- Events.addEventListener(commandLine, "input", this.onCommandLineInput, true);
- Events.addEventListener(commandLine, "overflow", this.onCommandLineOverflow, true);
- Events.addEventListener(commandLine, "keyup", this.onCommandLineKeyUp, true);
- Events.addEventListener(commandLine, "keydown", this.onCommandLineKeyDown, true);
- Events.addEventListener(commandLine, "keypress", this.onCommandLineKeyPress, true);
- },
-
- shutdown: function()
- {
- var commandLine = this.getSingleRowCommandLine();
-
- if (this.autoCompleter)
- this.autoCompleter.shutdown();
-
- if (this.commandHistory)
- this.commandHistory.detachListeners();
-
- Events.removeEventListener(commandLine, "input", this.onCommandLineInput, true);
- Events.removeEventListener(commandLine, "overflow", this.onCommandLineOverflow, true);
- Events.removeEventListener(commandLine, "keyup", this.onCommandLineKeyUp, true);
- Events.removeEventListener(commandLine, "keydown", this.onCommandLineKeyDown, true);
- Events.removeEventListener(commandLine, "keypress", this.onCommandLineKeyPress, true);
- },
-
- destroyContext: function(context, persistedState)
- {
- var panelState = Persist.getPersistedState(this, "console");
- panelState.commandLineText = context.commandLineText;
-
- var commandLine = this.getCommandLine(context);
- commandLine.value = "";
-
- this.autoCompleter.hide();
- Persist.persistObjects(this, panelState);
- // more of our work is done in the Console
-
- // All command line handlers should be removed at this moment.
- for (var handler in context.activeCommandLineHandlers)
- {
- FBTrace.sysout("commandLine.destroyContext; ERROR active commandlinehandler for: " +
- context.getName());
- }
- },
-
- showPanel: function(browser, panel)
- {
- var context = Firebug.currentContext;
- if (!context)
- return;
-
- // Warn that FireClosure is integrated and will conflict.
- if (Firebug.JSAutoCompleter && Firebug.JSAutoCompleter.transformScopeExpr &&
- !this.hasWarnedAboutFireClosure)
- {
- this.hasWarnedAboutFireClosure = true;
- // Use English because this only reaches ~200 users anyway.
- var msg = "FireClosure has been integrated into Firebug. To avoid conflicts, please" +
- " uninstall it and restart your browser.";
- Firebug.Console.logFormatted([msg], context, "warn");
- }
-
- var panelState = Persist.getPersistedState(this, "console");
- if (panelState.commandLineText)
- {
- var value = panelState.commandLineText;
- var commandLine = this.getCommandLine(browser);
- context.commandLineText = value;
-
- commandLine.value = value;
-
- // We don't need the persistent value in this session/context any more. The showPanel
- // method is called every time the panel is selected and the text could have been
- // changed in this session/context already.
- delete panelState.commandLineText;
- }
-
- this.autoCompleter.hide();
- },
-
- updateOption: function(name, value)
- {
- if (name === "commandEditor")
- this.setMultiLine(value, Firebug.chrome);
- else if (name === "commandLineShowCompleterPopup")
- this.setAutoCompleter();
- },
-
- onCommandLineKeyUp: function(event)
- {
- },
-
- onCommandLineKeyDown: function(event)
- {
- var context = Firebug.currentContext;
-
- this.autoCompleter.handleKeyDown(event, context);
-
- if (event.keyCode === KeyEvent.DOM_VK_H && Events.isControl(event))
- {
- event.preventDefault();
- this.autoCompleter.hide();
- this.commandHistory.show(Firebug.chrome.$("fbCommandLineHistoryButton"));
- return true;
- }
-
- // Parts of the code moved into key-press handler due to bug 613752
- },
-
- onCommandLineKeyPress: function(event)
- {
- var context = Firebug.currentContext;
-
- if (!this.autoCompleter.handleKeyPress(event, context))
- {
- this.handleKeyPress(event);
- }
- },
-
- handleKeyPress: function(event)
- {
- switch (event.keyCode)
- {
- case KeyEvent.DOM_VK_RETURN:
- case KeyEvent.DOM_VK_ENTER:
- event.preventDefault();
-
- if (!event.metaKey && !event.shiftKey)
- {
- Firebug.CommandLine.enter(Firebug.currentContext);
- this.commandHistory.hide();
- return true;
- }
- else if(!event.metaKey && event.shiftKey)
- {
- Firebug.CommandLine.enterInspect(Firebug.currentContext);
- this.commandHistory.hide();
- return true;
- }
- break;
-
- case KeyEvent.DOM_VK_UP:
- event.preventDefault();
- this.commandHistory.cycleCommands(Firebug.currentContext, -1);
- return true;
-
- case KeyEvent.DOM_VK_DOWN:
- event.preventDefault();
- this.commandHistory.cycleCommands(Firebug.currentContext, 1);
- return true;
-
- case KeyEvent.DOM_VK_ESCAPE:
- event.preventDefault();
- if (Firebug.CommandLine.cancel(Firebug.currentContext))
- Events.cancelEvent(event);
- this.commandHistory.hide();
- return true;
- }
-
- if (this.commandHistory.isOpen && !event.metaKey && !event.ctrlKey && !event.altKey)
- this.commandHistory.hide();
-
- return false;
- },
-
- onCommandLineInput: function(event)
- {
- var context = Firebug.currentContext;
-
- this.autoCompleter.complete(context);
- this.update(context);
- },
-
- getCommandLine: function(context)
- {
- return (!this.isInOtherPanel(context) && Firebug.commandEditor) ?
- this.getCommandEditor():
- this.getSingleRowCommandLine();
- },
-
- isInOtherPanel: function(context)
- {
- // Command line on other panels is never multiline.
- var visible = Firebug.CommandLine.Popup.isVisible();
- return visible && context.panelName !== "console";
- },
-
- getExpression: function(context)
- {
- return (!this.isInOtherPanel(context) && Firebug.commandEditor) ?
- this.getCommandEditor().getExpression() :
- this.getSingleRowCommandLine().value;
- },
-
- getCompletionBox: function()
- {
- return Firebug.chrome.$("fbCommandLineCompletion");
- },
-
- getSingleRowCommandLine: function()
- {
- return Firebug.chrome.$("fbCommandLine");
- },
-
- getCommandEditor: function()
- {
- return Firebug.CommandEditor;
- }
-});
-
-// ********************************************************************************************* //
-// Helpers
-
-var getNoScript = function()
-{
- // The wrappedJSObject here is not a security wrapper, it is a property set by the service.
- var noscript = Cc["@maone.net/noscript-service;1"] &&
- Cc["@maone.net/noscript-service;1"].getService().wrappedJSObject;
- getNoScript = function()
- {
- return noscript;
- };
- return noscript;
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.CommandLine);
-
-return Firebug.CommandLine;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+/*jshint forin:false, noempty:false, esnext:true, es5:true, curly:false */
+/*global FBTrace:true, Components:true, define:true, KeyEvent:true */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/reps",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/url",
+ "firebug/lib/dom",
+ "firebug/chrome/firefox",
+ "firebug/chrome/window",
+ "firebug/lib/system",
+ "firebug/lib/string",
+ "firebug/lib/persist",
+ "firebug/console/console",
+ "firebug/console/commandLineExposed",
+ "firebug/console/closureInspector",
+ "firebug/console/commandLineAPI",
+ "firebug/console/autoCompleter",
+ "firebug/console/commandHistory",
+ "firebug/console/commands/commandLineHelp",
+ "firebug/console/commands/commandLineInclude",
+],
+function(Obj, Firebug, FirebugReps, Locale, Events, Url, Dom, Firefox, Win, System, Str,
+ Persist, Console, CommandLineExposed, ClosureInspector, CommandLineAPI) {
+
+"use strict";
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+
+const commandPrefix = ">>> ";
+
+// ********************************************************************************************* //
+// Command Line
+
+Firebug.CommandLine = Obj.extend(Firebug.Module,
+{
+ dispatchName: "commandLine",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ evaluate: function(expr, context, thisValue, targetWindow, successConsoleFunction,
+ exceptionFunction, noStateChange)
+ {
+ if (!context)
+ return;
+
+ targetWindow = targetWindow || context.getCurrentGlobal();
+
+ var debuggerState, result = null;
+ try
+ {
+ debuggerState = Firebug.Debugger.beginInternalOperation();
+
+ var newExpr = ClosureInspector.extendLanguageSyntax(expr, targetWindow, context);
+
+ if (this.isSandbox(context))
+ {
+ this.evaluateInSandbox(newExpr, context, thisValue, targetWindow,
+ successConsoleFunction, exceptionFunction, expr);
+ }
+ else if (Firebug.Debugger.hasValidStack(context))
+ {
+ this.evaluateInDebugFrame(newExpr, context, thisValue, targetWindow,
+ successConsoleFunction, exceptionFunction, expr);
+ }
+ else
+ {
+ this.evaluateInGlobal(newExpr, context, thisValue, targetWindow,
+ successConsoleFunction, exceptionFunction, expr);
+ }
+
+ if (!noStateChange)
+ context.invalidatePanels("dom", "html");
+ }
+ catch (exc)
+ {
+ // XXX jjb, I don't expect this to be taken, the try here is for the finally
+ if (FBTrace.DBG_ERRORS && FBTrace.DBG_COMMANDLINE)
+ {
+ FBTrace.sysout("commandLine.evaluate with context.stopped:" + context.stopped +
+ " EXCEPTION " + exc, exc);
+ }
+ }
+ finally
+ {
+ Firebug.Debugger.endInternalOperation(debuggerState);
+ }
+ },
+
+ evaluateInGlobal: function(expr, context, thisValue, targetWindow,
+ successConsoleFunction, exceptionFunction, origExpr)
+ {
+ var win = targetWindow || context.getCurrentGlobal();
+
+ if (!win)
+ {
+ if (FBTrace.DBG_ERRORS && FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("commandLine.evaluateInGlobal: no targetWindow!");
+ return;
+ }
+
+ context.baseWindow = context.baseWindow || context.window;
+ var onSuccess, onError;
+
+ if (successConsoleFunction)
+ {
+ onSuccess = function(result)
+ {
+ if (FBTrace.DBG_COMMANDLINE)
+ {
+ FBTrace.sysout("commandLine.evaluateInGlobal; the evaluation succeeded "+
+ "and returned: "+ result, result);
+ }
+
+ if (Console.isDefaultReturnValue(result))
+ return;
+
+ successConsoleFunction(result, context);
+ }
+ }
+
+ if (!exceptionFunction)
+ {
+ exceptionFunction = function(result, context)
+ {
+ Firebug.Console.logFormatted([result], context, "error", true);
+ }
+ }
+
+ onError = function(result)
+ {
+ if (FBTrace.DBG_COMMANDLINE)
+ {
+ FBTrace.sysout("commandLine.evaluateInGlobal; the evaluation threw "+
+ "an exception:" + result, result);
+ }
+
+ exceptionFunction(result, context, "errorMessage");
+ };
+
+ origExpr = origExpr || expr;
+ CommandLineExposed.evaluate(context, win, expr, origExpr, onSuccess, onError);
+ },
+
+ evaluateInDebugFrame: function(expr, context, thisValue, targetWindow,
+ successConsoleFunction, exceptionFunction)
+ {
+ var result = null;
+
+ if (!context.commandLineAPI)
+ context.commandLineAPI = CommandLineAPI.getCommandLineAPI(context);
+
+ var htmlPanel = context.getPanel("html", true);
+ var scope = {
+ api : context.commandLineAPI,
+ vars : htmlPanel ? htmlPanel.getInspectorVars() : null,
+ thisValue : thisValue
+ };
+
+ try
+ {
+ result = Firebug.Debugger.evaluate(expr, context, scope);
+
+ successConsoleFunction(result, context);
+ }
+ catch (e)
+ {
+ exceptionFunction(e, context);
+ }
+
+ return result;
+ },
+
+ evaluateInWebPage: function(expr, context, targetWindow)
+ {
+ var win = targetWindow || context.getCurrentGlobal();
+
+ var element = Dom.addScript(win.document, "_firebugInWebPage", expr);
+ if (!element)
+ return;
+
+ setTimeout(function delayRemoveScriptTag()
+ {
+ // we don't need the script element, result is in DOM object
+ if (element.parentNode)
+ element.parentNode.removeChild(element);
+ });
+
+ return "true";
+ },
+
+ // isSandbox(context) true, => context.global is a Sandbox
+ evaluateInSandbox: function(expr, context, thisValue, targetWindow, successConsoleFunction,
+ exceptionFunction)
+ {
+ var result,
+ scriptToEval = expr;
+
+ try
+ {
+ result = Components.utils.evalInSandbox(scriptToEval, context.global);
+
+ if (FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("commandLine.evaluateInSandbox success for sandbox ", scriptToEval);
+
+ successConsoleFunction(result, context);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS && FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("commandLine.evaluateInSandbox FAILED in "+context.getName()+
+ " because "+e, e);
+
+ exceptionFunction(e, context);
+
+ result = new FirebugReps.ErrorMessageObj("commandLine.evaluateInSandbox FAILED: " + e,
+ Url.getDataURLForContent(scriptToEval, "FirebugCommandLineEvaluate"),
+ e.lineNumber, 0, "js", context, null);
+ }
+
+ return result;
+ },
+
+ isSandbox: function (context)
+ {
+ return (context.global && context.global+"" === "[object Sandbox]");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ enter: function(context, command)
+ {
+ var expr = command ? command : this.getExpression(context);
+ if (expr === "")
+ return;
+
+ var mozJSEnabled = Firebug.Options.getPref("javascript", "enabled");
+ if (!mozJSEnabled)
+ {
+ Firebug.Console.log(Locale.$STR("console.JSDisabledInFirefoxPrefs"), context, "info");
+ return;
+ }
+
+ if (!Firebug.commandEditor || context.panelName !== "console")
+ {
+ this.clear(context);
+ Firebug.Console.log(commandPrefix + expr, context, "command", FirebugReps.Text);
+ }
+ else
+ {
+ var shortExpr = Str.cropString(Str.stripNewLines(expr), 100);
+ Firebug.Console.log(commandPrefix + shortExpr, context, "command",
+ FirebugReps.Text);
+ }
+
+ this.commandHistory.appendToHistory(expr);
+
+ var noscript = getNoScript(), noScriptURI;
+ if (noscript)
+ {
+ var currentURI = Firefox.getCurrentURI();
+ noScriptURI = currentURI ? noscript.getSite(currentURI.spec) : null;
+ if (noScriptURI)
+ noScriptURI = (noscript.jsEnabled || noscript.isJSEnabled(noScriptURI)) ?
+ null : noScriptURI;
+ }
+
+ if (noscript && noScriptURI)
+ noscript.setJSEnabled(noScriptURI, true);
+
+ var self = this;
+ var logResult = Firebug.Console.log.bind(Firebug.Console);
+
+ function successHandler(result, context)
+ {
+ self.dispatch("expressionEvaluated", [context, expr, result, true]);
+ logResult.apply(this, arguments);
+ }
+
+ function exceptionHandler(err, context)
+ {
+ self.dispatch("expressionEvaluated", [context, expr, err, false]);
+ logResult.apply(this, arguments);
+ }
+
+ // Finally, let's evaluate the use expression!
+ this.evaluate(expr, context, null, null, successHandler, exceptionHandler);
+
+ if (noscript && noScriptURI)
+ noscript.setJSEnabled(noScriptURI, false);
+
+ var consolePanel = context.getPanel("console");
+ if (consolePanel)
+ Dom.scrollToBottom(consolePanel.panelNode);
+ },
+
+ enterInspect: function(context)
+ {
+ var expr = this.getCommandLine(context).value;
+ if (expr === "")
+ return;
+
+ this.clear(context);
+ this.commandHistory.appendToHistory(expr);
+
+ this.evaluate(expr, context, null, null, function(result)
+ {
+ if (typeof result !== "undefined")
+ Firebug.chrome.select(result);
+ });
+ },
+
+ reenter: function(context)
+ {
+ var command = this.commandHistory.getLastCommand();
+ this.enter(context, command);
+ },
+
+ copyBookmarklet: function(context)
+ {
+ // XXXsilin: This needs escaping, and stripNewLines is exactly the
+ // wrong thing to do when it comes to JavaScript.
+ var commandLine = this.getCommandLine(context);
+ var expr = "javascript: " + Str.stripNewLines(commandLine.value);
+ System.copyToClipboard(expr);
+ },
+
+ focus: function(context)
+ {
+ if (Firebug.isDetached())
+ Firebug.chrome.focus();
+ else
+ Firebug.toggleBar(true);
+
+ var commandLine = this.getCommandLine(context);
+
+ if (!context.panelName)
+ {
+ Firebug.chrome.selectPanel("console");
+ }
+ else if (context.panelName !== "console")
+ {
+ this.Popup.toggle(Firebug.currentContext);
+ setTimeout(function() { commandLine.select(); });
+ }
+ else
+ {
+ // We are already on the console, if the command line has also
+ // the focus, toggle back. But only if the UI has been already
+ // opened.
+ if (Firebug.commandEditor)
+ commandLine.focus();
+ else if (commandLine.getAttribute("focused") !== "true")
+ setTimeout(function() { commandLine.select(); });
+ }
+ },
+
+ clear: function(context)
+ {
+ var commandLine = this.getCommandLine(context);
+
+ if (commandLine.value)
+ {
+ commandLine.value = "";
+ this.autoCompleter.hide();
+ this.update(context);
+ return true;
+ }
+
+ return false;
+ },
+
+ cancel: function(context)
+ {
+ return this.clear(context);
+ },
+
+ update: function(context)
+ {
+ var commandLine = this.getCommandLine(context);
+ context.commandLineText = commandLine.value;
+ },
+
+ // xxxsz: setMultiLine should just be called when switching between Command Line
+ // and Command Editor
+ // xxxHonza: it is called for me when switching between the Command Line and
+ // Command Editor
+ setMultiLine: function(multiLine, chrome, saveMultiLine)
+ {
+ var context = Firebug.currentContext;
+
+ if (FBTrace.DBG_COMMANDLINE)
+ {
+ FBTrace.sysout("commandLine.setMultiline; multiLine: " + multiLine + " for: " +
+ (context ? context.getName() : "no contet"));
+ }
+
+ if (context && context.panelName !== "console")
+ return;
+
+ Dom.collapse(chrome.$("fbCommandBox"), multiLine);
+ Dom.collapse(chrome.$("fbPanelSplitter"), !multiLine);
+ Dom.collapse(chrome.$("fbSidePanelDeck"), !multiLine);
+
+ if (multiLine)
+ chrome.$("fbSidePanelDeck").selectedPanel = chrome.$("fbCommandEditorBox");
+
+ var commandLine = this.getSingleRowCommandLine();
+ var commandEditor = this.getCommandEditor();
+
+ // we are just closing the view
+ if (saveMultiLine)
+ {
+ commandLine.value = commandEditor.value;
+ return;
+ }
+
+ if (context)
+ {
+ var text = context.commandLineText || "";
+ context.commandLineText = text;
+
+ if (multiLine)
+ commandEditor.value = Str.cleanIndentation(text);
+ else
+ commandLine.value = Str.stripNewLines(text);
+ }
+ // else we may be hiding a panel while turning Firebug off
+ },
+
+ toggleMultiLine: function(forceCommandEditor)
+ {
+ var showCommandEditor = !!forceCommandEditor || !Firebug.commandEditor;
+ if (showCommandEditor != Firebug.commandEditor)
+ Firebug.Options.set("commandEditor", showCommandEditor);
+ },
+
+ checkOverflow: function(context)
+ {
+ if (!context)
+ return;
+
+ var commandLine = this.getCommandLine(context);
+ if (commandLine.value.indexOf("\n") >= 0)
+ {
+ setTimeout(Obj.bindFixed(function()
+ {
+ Firebug.Options.set("commandEditor", true);
+
+ // Switch to the Console panel, where the multiline command line
+ // is actually displayed. This should be improved see issue 5146
+ Firebug.chrome.selectPanel("console");
+ }, this));
+ }
+ },
+
+ onCommandLineOverflow: function(event)
+ {
+ this.checkOverflow(Firebug.currentContext);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Module
+
+ initialize: function()
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+
+ this.setAutoCompleter();
+ this.commandHistory = new Firebug.CommandHistory();
+
+ if (Firebug.commandEditor)
+ this.setMultiLine(true, Firebug.chrome);
+ },
+
+ // (Re)create the auto-completer for the small command line.
+ setAutoCompleter: function()
+ {
+ if (this.autoCompleter)
+ this.autoCompleter.shutdown();
+
+ var commandLine = this.getSingleRowCommandLine();
+ var completionBox = this.getCompletionBox();
+
+ var options = {
+ showCompletionPopup: Firebug.Options.get("commandLineShowCompleterPopup"),
+ completionPopup: Firebug.chrome.$("fbCommandLineCompletionList"),
+ popupMeasurer: Firebug.chrome.$("fbCommandLineMeasurer"),
+ tabWarnings: true,
+ includeCurrentScope: true,
+ includeCommandLineAPI: true
+ };
+
+ this.autoCompleter = new Firebug.JSAutoCompleter(commandLine, completionBox, options);
+ },
+
+ initializeUI: function()
+ {
+ this.onCommandLineInput = Obj.bind(this.onCommandLineInput, this);
+ this.onCommandLineOverflow = Obj.bind(this.onCommandLineOverflow, this);
+ this.onCommandLineKeyUp = Obj.bind(this.onCommandLineKeyUp, this);
+ this.onCommandLineKeyDown = Obj.bind(this.onCommandLineKeyDown, this);
+ this.onCommandLineKeyPress = Obj.bind(this.onCommandLineKeyPress, this);
+ this.attachListeners();
+ },
+
+ attachListeners: function()
+ {
+ var commandLine = this.getSingleRowCommandLine();
+
+ Events.addEventListener(commandLine, "input", this.onCommandLineInput, true);
+ Events.addEventListener(commandLine, "overflow", this.onCommandLineOverflow, true);
+ Events.addEventListener(commandLine, "keyup", this.onCommandLineKeyUp, true);
+ Events.addEventListener(commandLine, "keydown", this.onCommandLineKeyDown, true);
+ Events.addEventListener(commandLine, "keypress", this.onCommandLineKeyPress, true);
+ },
+
+ shutdown: function()
+ {
+ var commandLine = this.getSingleRowCommandLine();
+
+ if (this.autoCompleter)
+ this.autoCompleter.shutdown();
+
+ if (this.commandHistory)
+ this.commandHistory.detachListeners();
+
+ Events.removeEventListener(commandLine, "input", this.onCommandLineInput, true);
+ Events.removeEventListener(commandLine, "overflow", this.onCommandLineOverflow, true);
+ Events.removeEventListener(commandLine, "keyup", this.onCommandLineKeyUp, true);
+ Events.removeEventListener(commandLine, "keydown", this.onCommandLineKeyDown, true);
+ Events.removeEventListener(commandLine, "keypress", this.onCommandLineKeyPress, true);
+ },
+
+ destroyContext: function(context, persistedState)
+ {
+ var panelState = Persist.getPersistedState(this, "console");
+ panelState.commandLineText = context.commandLineText;
+
+ var commandLine = this.getCommandLine(context);
+ commandLine.value = "";
+
+ this.autoCompleter.hide();
+ Persist.persistObjects(this, panelState);
+ // more of our work is done in the Console
+
+ // All command line handlers should be removed at this moment.
+ for (var handler in context.activeCommandLineHandlers)
+ {
+ FBTrace.sysout("commandLine.destroyContext; ERROR active commandlinehandler for: " +
+ context.getName());
+ }
+ },
+
+ showPanel: function(browser, panel)
+ {
+ var context = Firebug.currentContext;
+ if (!context)
+ return;
+
+ // Warn that FireClosure is integrated and will conflict.
+ if (Firebug.JSAutoCompleter && Firebug.JSAutoCompleter.transformScopeExpr &&
+ !this.hasWarnedAboutFireClosure)
+ {
+ this.hasWarnedAboutFireClosure = true;
+ // Use English because this only reaches ~200 users anyway.
+ var msg = "FireClosure has been integrated into Firebug. To avoid conflicts, please" +
+ " uninstall it and restart your browser.";
+ Firebug.Console.logFormatted([msg], context, "warn");
+ }
+
+ var panelState = Persist.getPersistedState(this, "console");
+ if (panelState.commandLineText)
+ {
+ var value = panelState.commandLineText;
+ var commandLine = this.getCommandLine(browser);
+ context.commandLineText = value;
+
+ commandLine.value = value;
+
+ // We don't need the persistent value in this session/context any more. The showPanel
+ // method is called every time the panel is selected and the text could have been
+ // changed in this session/context already.
+ delete panelState.commandLineText;
+ }
+
+ this.autoCompleter.hide();
+ },
+
+ updateOption: function(name, value)
+ {
+ if (name === "commandEditor")
+ this.setMultiLine(value, Firebug.chrome);
+ else if (name === "commandLineShowCompleterPopup")
+ this.setAutoCompleter();
+ },
+
+ onCommandLineKeyUp: function(event)
+ {
+ },
+
+ onCommandLineKeyDown: function(event)
+ {
+ var context = Firebug.currentContext;
+
+ this.autoCompleter.handleKeyDown(event, context);
+
+ if (event.keyCode === KeyEvent.DOM_VK_H && Events.isControl(event))
+ {
+ event.preventDefault();
+ this.autoCompleter.hide();
+ this.commandHistory.show(Firebug.chrome.$("fbCommandLineHistoryButton"));
+ return true;
+ }
+
+ // Parts of the code moved into key-press handler due to bug 613752
+ },
+
+ onCommandLineKeyPress: function(event)
+ {
+ var context = Firebug.currentContext;
+
+ if (!this.autoCompleter.handleKeyPress(event, context))
+ {
+ this.handleKeyPress(event);
+ }
+ },
+
+ handleKeyPress: function(event)
+ {
+ switch (event.keyCode)
+ {
+ case KeyEvent.DOM_VK_RETURN:
+ case KeyEvent.DOM_VK_ENTER:
+ event.preventDefault();
+
+ if (!event.metaKey && !event.shiftKey)
+ {
+ Firebug.CommandLine.enter(Firebug.currentContext);
+ this.commandHistory.hide();
+ return true;
+ }
+ else if(!event.metaKey && event.shiftKey)
+ {
+ Firebug.CommandLine.enterInspect(Firebug.currentContext);
+ this.commandHistory.hide();
+ return true;
+ }
+ break;
+
+ case KeyEvent.DOM_VK_UP:
+ event.preventDefault();
+ this.commandHistory.cycleCommands(Firebug.currentContext, -1);
+ return true;
+
+ case KeyEvent.DOM_VK_DOWN:
+ event.preventDefault();
+ this.commandHistory.cycleCommands(Firebug.currentContext, 1);
+ return true;
+
+ case KeyEvent.DOM_VK_ESCAPE:
+ event.preventDefault();
+ if (Firebug.CommandLine.cancel(Firebug.currentContext))
+ Events.cancelEvent(event);
+ this.commandHistory.hide();
+ return true;
+ }
+
+ if (this.commandHistory.isOpen && !event.metaKey && !event.ctrlKey && !event.altKey)
+ this.commandHistory.hide();
+
+ return false;
+ },
+
+ onCommandLineInput: function(event)
+ {
+ var context = Firebug.currentContext;
+
+ this.autoCompleter.complete(context);
+ this.update(context);
+ },
+
+ getCommandLine: function(context)
+ {
+ return (!this.isInOtherPanel(context) && Firebug.commandEditor) ?
+ this.getCommandEditor():
+ this.getSingleRowCommandLine();
+ },
+
+ isInOtherPanel: function(context)
+ {
+ // Command line on other panels is never multiline.
+ var visible = Firebug.CommandLine.Popup.isVisible();
+ return visible && context.panelName !== "console";
+ },
+
+ getExpression: function(context)
+ {
+ return (!this.isInOtherPanel(context) && Firebug.commandEditor) ?
+ this.getCommandEditor().getExpression() :
+ this.getSingleRowCommandLine().value;
+ },
+
+ getCompletionBox: function()
+ {
+ return Firebug.chrome.$("fbCommandLineCompletion");
+ },
+
+ getSingleRowCommandLine: function()
+ {
+ return Firebug.chrome.$("fbCommandLine");
+ },
+
+ getCommandEditor: function()
+ {
+ return Firebug.CommandEditor;
+ }
+});
+
+// ********************************************************************************************* //
+// Helpers
+
+var getNoScript = function()
+{
+ // The wrappedJSObject here is not a security wrapper, it is a property set by the service.
+ var noscript = Cc["@maone.net/noscript-service;1"] &&
+ Cc["@maone.net/noscript-service;1"].getService().wrappedJSObject;
+ getNoScript = function()
+ {
+ return noscript;
+ };
+ return noscript;
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.CommandLine);
+
+return Firebug.CommandLine;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/commandLineAPI.js b/content/firebug/console/commandLineAPI.js
index 71d5fd6..6683565 100644
--- a/content/firebug/console/commandLineAPI.js
+++ b/content/firebug/console/commandLineAPI.js
@@ -1,257 +1,257 @@
-/* See license.txt for terms of usage */
-/*jshint esnext:true, es5:true, curly:false, evil:true*/
-/*global Firebug:true, FBTrace:true, define:true */
-
-define([
- "firebug/lib/xpath",
- "firebug/lib/array",
- "firebug/lib/locale",
- "firebug/lib/system",
- "firebug/lib/wrapper",
-],
-function(Xpath, Arr, Locale, System, Wrapper) {
-"use strict";
-
-// ********************************************************************************************* //
-// Command Line API
-
-var CommandLineAPI = {};
-
-/**
- * Gets the command line API for a context.
- *
- * @param {*} context The context
- *
- * @return {*} The command line object
- */
-CommandLineAPI.getCommandLineAPI = function(context)
-{
- var commands = Object.create(null);
-
- // returns unwrapped elements from the page
- commands.$ = function(selector, start)
- {
- if (start && start.querySelector && (
- start.nodeType === Node.ELEMENT_NODE ||
- start.nodeType === Node.DOCUMENT_NODE ||
- start.nodeType === Node.DOCUMENT_FRAGMENT_NODE))
- {
- return start.querySelector(selector);
- }
-
- var result = context.baseWindow.document.querySelector(selector);
- if (result === null && (selector || "")[0] !== "#")
- {
- if (context.baseWindow.document.getElementById(selector))
- {
- // This should be removed in the next minor (non-bugfix) version
- var msg = Locale.$STRF("warning.dollar_change", [selector]);
- Firebug.Console.log(msg, context, "warn");
- result = null;
- }
- }
-
- return result;
- };
-
- // returns unwrapped elements from the page
- commands.$$ = function(selector, start)
- {
- var result;
-
- if (start && start.querySelectorAll && (
- start.nodeType === Node.ELEMENT_NODE ||
- start.nodeType === Node.DOCUMENT_NODE ||
- start.nodeType === Node.DOCUMENT_FRAGMENT_NODE))
- {
- result = start.querySelectorAll(selector);
- }
- else
- {
- result = context.baseWindow.document.querySelectorAll(selector);
- }
-
- return Arr.cloneArray(result);
- };
-
- // returns unwrapped elements from the page
- commands.$x = function(xpath, contextNode, resultType)
- {
- var XPathResultType = XPathResult.ANY_TYPE;
-
- switch (resultType)
- {
- case "number":
- XPathResultType = XPathResult.NUMBER_TYPE;
- break;
-
- case "string":
- XPathResultType = XPathResult.STRING_TYPE;
- break;
-
- case "bool":
- XPathResultType = XPathResult.BOOLEAN_TYPE;
- break;
-
- case "node":
- XPathResultType = XPathResult.FIRST_ORDERED_NODE_TYPE;
- break;
-
- case "nodes":
- XPathResultType = XPathResult.UNORDERED_NODE_ITERATOR_TYPE;
- break;
- }
-
- var doc = Wrapper.unwrapObject(context.baseWindow.document);
- try
- {
- return Xpath.evaluateXPath(doc, xpath, contextNode, XPathResultType);
- }
- catch(ex)
- {
- throw new Error(ex.message);
- }
- };
-
- // values from the extension space
- commands.$n = function(index)
- {
- var htmlPanel = context.getPanel("html", true);
- if (!htmlPanel)
- return null;
-
- if (index < 0 || index >= htmlPanel.inspectorHistory.length)
- return null;
-
- var node = htmlPanel.inspectorHistory[index];
- if (!node)
- return node;
-
- return Wrapper.unwrapObject(node);
- };
-
- commands.cd = function(object)
- {
- if (!(object instanceof window.Window))
- throw new Error("The cd() argument must be a window.");
-
- if (FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("commandLine.cd; console ready: " + consoleReady);
-
- // The window object parameter uses XPCSafeJSObjectWrapper, but we need XrayWrapper.
- // So use Wrapper.wrapObject() to get the XrayWrapper instance of that object.
- // Note: Wrapper.wrapObject always returns the same instance for a given object.
- context.baseWindow = Wrapper.wrapObject(object);
-
- var format = Locale.$STR("commandline.CurrentWindow") + " %o";
- Firebug.Console.logFormatted([format, context.baseWindow], context, "info");
- return Firebug.Console.getDefaultReturnValue();
- };
-
- // no web page interaction
- commands.clear = function()
- {
- Firebug.Console.clear(context);
- return Firebug.Console.getDefaultReturnValue();
- };
-
- // no web page interaction
- commands.inspect = function(obj, panelName)
- {
- Firebug.chrome.select(obj, panelName);
- return Firebug.Console.getDefaultReturnValue();
- };
-
- commands.keys = function(o)
- {
- // the object is from the page, unwrapped
- return Arr.keys(o);
- };
-
- commands.values = function(o)
- {
- // the object is from the page, unwrapped
- return Arr.values(o);
- };
-
- commands.debug = function(fn)
- {
- Firebug.Debugger.monitorFunction(fn, "debug");
- return Firebug.Console.getDefaultReturnValue();
- };
-
- commands.undebug = function(fn)
- {
- Firebug.Debugger.unmonitorFunction(fn, "debug");
- return Firebug.Console.getDefaultReturnValue();
- };
-
- commands.monitor = function(fn)
- {
- Firebug.Debugger.monitorFunction(fn, "monitor");
- return Firebug.Console.getDefaultReturnValue();
- };
-
- commands.unmonitor = function(fn)
- {
- Firebug.Debugger.unmonitorFunction(fn, "monitor");
- return Firebug.Console.getDefaultReturnValue();
- };
-
- commands.traceAll = function()
- {
- // See issue 6220
- Firebug.Console.log(Locale.$STR("commandline.MethodDisabled"));
- //Firebug.Debugger.traceAll(Firebug.currentContext);
- return Firebug.Console.getDefaultReturnValue();
- };
-
- commands.untraceAll = function()
- {
- // See issue 6220
- Firebug.Console.log(Locale.$STR("commandline.MethodDisabled"));
- //Firebug.Debugger.untraceAll(Firebug.currentContext);
- return Firebug.Console.getDefaultReturnValue();
- };
-
- commands.traceCalls = function(/*fn*/)
- {
- // See issue 6220
- Firebug.Console.log(Locale.$STR("commandline.MethodDisabled"));
- //Firebug.Debugger.traceCalls(Firebug.currentContext, fn);
- return Firebug.Console.getDefaultReturnValue();
- };
-
- commands.untraceCalls = function(/*fn*/)
- {
- // See issue 6220
- Firebug.Console.log(Locale.$STR("commandline.MethodDisabled"));
- //Firebug.Debugger.untraceCalls(Firebug.currentContext, fn);
- return Firebug.Console.getDefaultReturnValue();
- };
-
- commands.copy = function(x)
- {
- System.copyToClipboard(x);
- return Firebug.Console.getDefaultReturnValue();
- };
-
- // xxxHonza: removed from 1.10 (issue 5599)
- /*commands.memoryProfile = function(title)
- {
- Firebug.MemoryProfiler.start(context, title);
- return Firebug.Console.getDefaultReturnValue();
- };
-
- commands.memoryProfileEnd = function()
- {
- Firebug.MemoryProfiler.stop(context);
- return Firebug.Console.getDefaultReturnValue();
- };*/
-
- return commands;
-};
-
-return CommandLineAPI;
-
-});
+/* See license.txt for terms of usage */
+/*jshint esnext:true, es5:true, curly:false, evil:true*/
+/*global Firebug:true, FBTrace:true, define:true */
+
+define([
+ "firebug/lib/xpath",
+ "firebug/lib/array",
+ "firebug/lib/locale",
+ "firebug/lib/system",
+ "firebug/lib/wrapper",
+],
+function(Xpath, Arr, Locale, System, Wrapper) {
+"use strict";
+
+// ********************************************************************************************* //
+// Command Line API
+
+var CommandLineAPI = {};
+
+/**
+ * Gets the command line API for a context.
+ *
+ * @param {*} context The context
+ *
+ * @return {*} The command line object
+ */
+CommandLineAPI.getCommandLineAPI = function(context)
+{
+ var commands = Object.create(null);
+
+ // returns unwrapped elements from the page
+ commands.$ = function(selector, start)
+ {
+ if (start && start.querySelector && (
+ start.nodeType === Node.ELEMENT_NODE ||
+ start.nodeType === Node.DOCUMENT_NODE ||
+ start.nodeType === Node.DOCUMENT_FRAGMENT_NODE))
+ {
+ return start.querySelector(selector);
+ }
+
+ var result = context.baseWindow.document.querySelector(selector);
+ if (result === null && (selector || "")[0] !== "#")
+ {
+ if (context.baseWindow.document.getElementById(selector))
+ {
+ // This should be removed in the next minor (non-bugfix) version
+ var msg = Locale.$STRF("warning.dollar_change", [selector]);
+ Firebug.Console.log(msg, context, "warn");
+ result = null;
+ }
+ }
+
+ return result;
+ };
+
+ // returns unwrapped elements from the page
+ commands.$$ = function(selector, start)
+ {
+ var result;
+
+ if (start && start.querySelectorAll && (
+ start.nodeType === Node.ELEMENT_NODE ||
+ start.nodeType === Node.DOCUMENT_NODE ||
+ start.nodeType === Node.DOCUMENT_FRAGMENT_NODE))
+ {
+ result = start.querySelectorAll(selector);
+ }
+ else
+ {
+ result = context.baseWindow.document.querySelectorAll(selector);
+ }
+
+ return Arr.cloneArray(result);
+ };
+
+ // returns unwrapped elements from the page
+ commands.$x = function(xpath, contextNode, resultType)
+ {
+ var XPathResultType = XPathResult.ANY_TYPE;
+
+ switch (resultType)
+ {
+ case "number":
+ XPathResultType = XPathResult.NUMBER_TYPE;
+ break;
+
+ case "string":
+ XPathResultType = XPathResult.STRING_TYPE;
+ break;
+
+ case "bool":
+ XPathResultType = XPathResult.BOOLEAN_TYPE;
+ break;
+
+ case "node":
+ XPathResultType = XPathResult.FIRST_ORDERED_NODE_TYPE;
+ break;
+
+ case "nodes":
+ XPathResultType = XPathResult.UNORDERED_NODE_ITERATOR_TYPE;
+ break;
+ }
+
+ var doc = Wrapper.unwrapObject(context.baseWindow.document);
+ try
+ {
+ return Xpath.evaluateXPath(doc, xpath, contextNode, XPathResultType);
+ }
+ catch(ex)
+ {
+ throw new Error(ex.message);
+ }
+ };
+
+ // values from the extension space
+ commands.$n = function(index)
+ {
+ var htmlPanel = context.getPanel("html", true);
+ if (!htmlPanel)
+ return null;
+
+ if (index < 0 || index >= htmlPanel.inspectorHistory.length)
+ return null;
+
+ var node = htmlPanel.inspectorHistory[index];
+ if (!node)
+ return node;
+
+ return Wrapper.unwrapObject(node);
+ };
+
+ commands.cd = function(object)
+ {
+ if (!(object instanceof window.Window))
+ throw new Error("The cd() argument must be a window.");
+
+ if (FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("commandLine.cd; console ready: " + consoleReady);
+
+ // The window object parameter uses XPCSafeJSObjectWrapper, but we need XrayWrapper.
+ // So use Wrapper.wrapObject() to get the XrayWrapper instance of that object.
+ // Note: Wrapper.wrapObject always returns the same instance for a given object.
+ context.baseWindow = Wrapper.wrapObject(object);
+
+ var format = Locale.$STR("commandline.CurrentWindow") + " %o";
+ Firebug.Console.logFormatted([format, context.baseWindow], context, "info");
+ return Firebug.Console.getDefaultReturnValue();
+ };
+
+ // no web page interaction
+ commands.clear = function()
+ {
+ Firebug.Console.clear(context);
+ return Firebug.Console.getDefaultReturnValue();
+ };
+
+ // no web page interaction
+ commands.inspect = function(obj, panelName)
+ {
+ Firebug.chrome.select(obj, panelName);
+ return Firebug.Console.getDefaultReturnValue();
+ };
+
+ commands.keys = function(o)
+ {
+ // the object is from the page, unwrapped
+ return Arr.keys(o);
+ };
+
+ commands.values = function(o)
+ {
+ // the object is from the page, unwrapped
+ return Arr.values(o);
+ };
+
+ commands.debug = function(fn)
+ {
+ Firebug.Debugger.monitorFunction(fn, "debug");
+ return Firebug.Console.getDefaultReturnValue();
+ };
+
+ commands.undebug = function(fn)
+ {
+ Firebug.Debugger.unmonitorFunction(fn, "debug");
+ return Firebug.Console.getDefaultReturnValue();
+ };
+
+ commands.monitor = function(fn)
+ {
+ Firebug.Debugger.monitorFunction(fn, "monitor");
+ return Firebug.Console.getDefaultReturnValue();
+ };
+
+ commands.unmonitor = function(fn)
+ {
+ Firebug.Debugger.unmonitorFunction(fn, "monitor");
+ return Firebug.Console.getDefaultReturnValue();
+ };
+
+ commands.traceAll = function()
+ {
+ // See issue 6220
+ Firebug.Console.log(Locale.$STR("commandline.MethodDisabled"));
+ //Firebug.Debugger.traceAll(Firebug.currentContext);
+ return Firebug.Console.getDefaultReturnValue();
+ };
+
+ commands.untraceAll = function()
+ {
+ // See issue 6220
+ Firebug.Console.log(Locale.$STR("commandline.MethodDisabled"));
+ //Firebug.Debugger.untraceAll(Firebug.currentContext);
+ return Firebug.Console.getDefaultReturnValue();
+ };
+
+ commands.traceCalls = function(/*fn*/)
+ {
+ // See issue 6220
+ Firebug.Console.log(Locale.$STR("commandline.MethodDisabled"));
+ //Firebug.Debugger.traceCalls(Firebug.currentContext, fn);
+ return Firebug.Console.getDefaultReturnValue();
+ };
+
+ commands.untraceCalls = function(/*fn*/)
+ {
+ // See issue 6220
+ Firebug.Console.log(Locale.$STR("commandline.MethodDisabled"));
+ //Firebug.Debugger.untraceCalls(Firebug.currentContext, fn);
+ return Firebug.Console.getDefaultReturnValue();
+ };
+
+ commands.copy = function(x)
+ {
+ System.copyToClipboard(x);
+ return Firebug.Console.getDefaultReturnValue();
+ };
+
+ // xxxHonza: removed from 1.10 (issue 5599)
+ /*commands.memoryProfile = function(title)
+ {
+ Firebug.MemoryProfiler.start(context, title);
+ return Firebug.Console.getDefaultReturnValue();
+ };
+
+ commands.memoryProfileEnd = function()
+ {
+ Firebug.MemoryProfiler.stop(context);
+ return Firebug.Console.getDefaultReturnValue();
+ };*/
+
+ return commands;
+};
+
+return CommandLineAPI;
+
+});
diff --git a/content/firebug/console/commandLineExposed.js b/content/firebug/console/commandLineExposed.js
index 34913cc..935abf1 100644
--- a/content/firebug/console/commandLineExposed.js
+++ b/content/firebug/console/commandLineExposed.js
@@ -1,508 +1,508 @@
-/* See license.txt for terms of usage */
-/*jshint esnext:true, es5:true, curly:false, evil:true, forin: false*/
-/*global Firebug:true, FBTrace:true, Components:true, define:true */
-
-define([
- "firebug/lib/wrapper",
- "firebug/debugger/debuggerLib",
- "firebug/lib/object",
- "firebug/console/commandLineAPI",
- "firebug/lib/locale",
-],
-function(Wrapper, DebuggerLib, Obj, CommandLineAPI, Locale) {
-"use strict";
-
-// ********************************************************************************************* //
-// Constants
-
-const Cu = Components.utils;
-
-// ********************************************************************************************* //
-// Command Line APIs
-
-// List of command line APIs
-var commandNames = ["$", "$$", "$n", "$x", "cd", "clear", "inspect", "keys",
- "values", "debug", "undebug", "monitor", "unmonitor", "traceCalls", "untraceCalls",
- "traceAll", "untraceAll", "copy" /*, "memoryProfile", "memoryProfileEnd"*/];
-
-// List of shortcuts for some console methods
-var consoleShortcuts = ["dir", "dirxml", "table"];
-
-// List of console variables.
-var props = ["$0", "$1", "$2", "$3", "$4"];
-
-// Registered commands, name -> config object.
-var userCommands = Object.create(null);
-
-// List of command line APIs to auto-complete, kept equal to the concatenation
-// of the above minus trace*.
-var completionList = [
- "$", "$$", "$n", "$x", "cd", "clear", "inspect", "keys",
- "values", "debug", "undebug", "monitor", "unmonitor", "copy"
-].concat(consoleShortcuts, props);
-var unsortedCompletionList = true;
-
-// ********************************************************************************************* //
-// Command Line Implementation
-
-/**
- * Returns a command line object (bundled with passed window through closure). The object
- * provides all necessary APIs as described here:
- * http://getfirebug.com/wiki/index.php/Command_Line_API
- *
- * @param {Object} context
- * @param {Object} win
- */
-function createFirebugCommandLine(context, win)
-{
- var contentView = Wrapper.getContentView(win);
- if (!contentView)
- {
- if (FBTrace.DBG_COMMANDLINE || FBTrace.DBG_ERRORS)
- FBTrace.sysout("createFirebugCommandLine ERROR no contentView " + context.getName());
-
- return null;
- }
-
- // The debuggee global.
- var dglobal = DebuggerLib.getDebuggeeGlobal(context, win);
-
- if (!context.commandLineCache)
- context.commandLineCache = new WeakMap();
- var commandLineCache = context.commandLineCache;
-
- var commandLine = commandLineCache.get(win.document);
- if (commandLine)
- return copyCommandLine(commandLine, dglobal);
-
- // The commandLine object.
- commandLine = dglobal.makeDebuggeeValue(Object.create(null));
-
- var console = Firebug.ConsoleExposed.createFirebugConsole(context, win);
- // The command line API instance.
- var commands = CommandLineAPI.getCommandLineAPI(context);
-
- // Helpers for command creation.
- function createCommandHandler(command)
- {
- var wrappedCommand = function()
- {
- try
- {
- return command.apply(null, arguments);
- }
- catch(ex)
- {
- throw new Error(ex.message, ex.fileName, ex.lineNumber);
- }
- };
- return dglobal.makeDebuggeeValue(wrappedCommand);
- }
-
- function createVariableHandler(handler, config)
- {
- var debuggeeObj = {}, object;
-
- // Callable getters are commands whose syntax are both `command` and `command()`.
- // The help command has this syntax for example.
- if (config.isCallableGetter === true)
- debuggeeObj = function(){ return object.handle(); };
-
- object = dglobal.makeDebuggeeValue(debuggeeObj);
- object.handle = function()
- {
- try
- {
- return handler(context);
- }
- catch(ex)
- {
- throw new Error(ex.message, ex.fileName, ex.lineNumber);
- }
- };
- return object;
- }
-
- function createUserCommandHandler(config, name)
- {
- return function()
- {
- try
- {
- return config.handler.call(null, context, arguments);
- }
- catch(ex)
- {
- throw new Error(ex.message, ex.fileName, ex.lineNumber);
- }
- };
- }
-
- // Define command line methods.
- for (var commandName in commands)
- {
- var command = commands[commandName];
- commandLine[commandName] = createCommandHandler(command);
- }
-
- // Register shortcut.
- consoleShortcuts.forEach(function(name)
- {
- var command = console[name].bind(console);
- commandLine[name] = createCommandHandler(command);
- });
-
- // Register user commands.
- for (var name in userCommands)
- {
- var config = userCommands[name];
- var command = createUserCommandHandler(config, name);
- if (userCommands[name].getter)
- commandLine[name] = createVariableHandler(command, config);
- else
- commandLine[name] = createCommandHandler(command);
- }
-
- commandLineCache.set(win.document, commandLine);
-
- // Return a copy so the original one is preserved from changes.
- return copyCommandLine(commandLine, dglobal);
-}
-
-// ********************************************************************************************* //
-// User Commands
-
-/**
- * Registers a command.
- *
- * @param {string} name The name of the command
- * @param {object} config The configuration. See some examples in commandLineHelp.js
- * and commandLineInclude.js
- */
-function registerCommand(name, config)
-{
- if (commandNames[name] || consoleShortcuts[name] || props[name] || userCommands[name])
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("firebug.registerCommand; ERROR This command is already " +
- "registered: " + name);
- }
-
- return false;
- }
-
- userCommands[name] = config;
- completionList.push(name);
- unsortedCompletionList = true;
- return true;
-}
-
-/**
- * Unregisters a command.
- *
- * @param {string} name The name of the command to unregister
- */
-function unregisterCommand(name)
-{
- if (!userCommands[name])
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("firebug.unregisterCommand; ERROR This command is not " +
- "registered: " + name);
- }
-
- return false;
- }
-
- delete userCommands[name];
- var ind = completionList.indexOf(name);
- if (ind !== -1)
- completionList.splice(ind, 1);
- return true;
-}
-
-/**
- * Evaluates an expression in the thread of the webpage, so the Firebug UI is not frozen
- * when the expression calls a function which will be paused.
- *
- *
- * @param {object} context
- * @param {Window} win
- * @param {string} expr The expression (transformed if needed)
- * @param {string} origExpr The expression as typed by the user
- * @param {function} onSuccess The function to trigger in case of success
- * @param {function} onError The function to trigger in case of exception
- *
- * @see CommandLine.evaluate
- */
-function evaluateInPageContext(context, win)
-{
- executeInWindowContext(win, evaluate, arguments);
-}
-
-/**
- * Evaluates an expression.
- *
- * @param {object} context
- * @param {Window} win
- * @param {string} expr The expression (transformed if needed)
- * @param {string} origExpr The expression as typed by the user
- * @param {function} onSuccess The function to trigger in case of success
- * @param {function} onError The function to trigger in case of exception
- */
-function evaluate(context, win, expr, origExpr, onSuccess, onError)
-{
- var result;
- var contentView = Wrapper.getContentView(win);
- var commandLine = createFirebugCommandLine(context, win);
- var dglobal = DebuggerLib.getDebuggeeGlobal(context, win);
- var resObj;
-
- updateVars(commandLine, dglobal, context);
- removeConflictingNames(commandLine, context, contentView);
-
- resObj = dglobal.evalInGlobalWithBindings(expr, commandLine);
-
- var unwrap = function(obj)
- {
- return DebuggerLib.unwrapDebuggeeValue(obj, contentView, dglobal);
- };
-
- // In case of abnormal termination, as if by the "slow script" dialog box,
- // do not print anything in the console.
- if (!resObj)
- {
- if (FBTrace.DBG_ERROR)
- FBTrace.sysout("CommandLineExposed.evaluate; something went wrong when evaluating this"+
- " expression: "+expr);
- return;
- }
-
- if (resObj.hasOwnProperty("return"))
- {
- result = unwrap(resObj.return);
- if (resObj.return && resObj.return.handle)
- {
- resObj.return.handle();
- // Do not print anything in the console in case of getter commands.
- return;
- }
- }
- else if (resObj.hasOwnProperty("yield"))
- {
- result = unwrap(resObj.yield);
- }
- else if (resObj.hasOwnProperty("throw"))
- {
- // Change source and line number of exceptions from commandline code
- // create new error since properties of nsIXPCException are not modifiable.
- // Example of code raising nsIXPCException: `alert({toString: function(){ throw "blah"; }})`
-
- // xxxFlorent: FIXME: we can't get the right stack trace with this example:
- // function a(){
- // throw new Error("error");
- // }
- // <ENTER>
- // a();
- // <ENTER>
- var exc = unwrap(resObj.throw);
-
- if (exc === null || exc === undefined)
- return;
-
- if (typeof exc !== "object")
- {
- exc = new Error(exc, null, null);
- exc.fileName = exc.lineNumber = exc.stack = null;
- }
-
- var shouldModify = false, isXPCException = false;
- var fileName = exc.filename || exc.fileName || "";
- var isInternalError = fileName.lastIndexOf("chrome://", 0) === 0;
- var lineNumber = null;
- var stack = null;
- var splitStack;
- var isFileNameMasked = DebuggerLib.isFrameLocationEval(fileName);
- if (isInternalError || isFileNameMasked)
- {
- shouldModify = true;
- isXPCException = (exc.filename !== undefined);
-
- // Lie and show the pre-transformed expression instead.
- fileName = "data:,/* " + Locale.$STR("commandline.errorSourceHeader") + " */"+
- encodeURIComponent("\n"+origExpr);
-
- if (isInternalError && typeof exc.stack === "string")
- {
- splitStack = exc.stack.split("\n");
- var correctionSucceeded = correctStackTrace(splitStack);
- if (correctionSucceeded)
- {
- // correct the line number so we take into account the comment prepended above
- lineNumber = findLineNumberInExceptionStack(splitStack) + 1;
-
- // correct the first trace
- splitStack.splice(0, 1, "@" + fileName + ":" + lineNumber);
- stack = splitStack.join("\n");
- }
- else
- shouldModify = false;
- }
- else
- {
- // correct the line number so we take into account the comment prepended above
- lineNumber = exc.lineNumber + 1;
- }
- }
-
- result = new Error();
-
- if (shouldModify)
- {
- result.stack = stack;
- result.source = origExpr;
- result.message = exc.message;
- result.lineNumber = lineNumber;
- result.fileName = fileName;
-
- // The error message can also contain post-transform details about the
- // source, but it's harder to lie about. Make it prettier, at least.
- if (typeof result.message === "string")
- result.message = result.message.replace(/__fb_scopedVars\(/g, "<get closure>(");
-
- if (!isXPCException)
- result.name = exc.name;
- }
- else
- {
- Obj.getPropertyNames(exc).forEach(function(prop)
- {
- result[prop] = exc[prop];
- });
- result.stack = exc.stack;
- result.source = exc.source;
- }
-
- executeInWindowContext(window, onError, [result, context]);
- return;
- }
-
- executeInWindowContext(window, onSuccess, [result, context]);
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-// Helpers (not accessible from web content)
-
-function copyCommandLine(commandLine, dglobal)
-{
- var copy = dglobal.makeDebuggeeValue(Object.create(null));
- for (var name in commandLine)
- copy[name] = commandLine[name];
- return copy;
-}
-
-function findLineNumberInExceptionStack(splitStack)
-{
- var m = splitStack[0].match(/:(\d+)$/);
- return m !== null ? +m[1] : null;
-}
-
-function correctStackTrace(splitStack)
-{
- var filename = Components.stack.filename;
- // remove the frames over the evaluated expression
- for (var i = 0; i < splitStack.length-1 &&
- splitStack[i+1].indexOf(evaluate.name + "@" + filename, 0) === -1 ; i++);
-
- if (i >= splitStack.length)
- return false;
- splitStack.splice(0, i);
- return true;
-}
-
-function updateVars(commandLine, dglobal, context)
-{
- var htmlPanel = context.getPanel("html", true);
- var vars = htmlPanel ? htmlPanel.getInspectorVars() : null;
-
- for (var prop in vars)
- commandLine[prop] = dglobal.makeDebuggeeValue(vars[prop]);
-
- // Iterate all registered commands and pick those which represents a 'variable'.
- // These needs to be available as variables within the Command Line namespace.
- for (var prop in userCommands)
- {
- var cmd = userCommands[prop];
- if (cmd.variable)
- {
- var value = cmd.handler.call(null, context);
- commandLine[prop] = dglobal.makeDebuggeeValue(value);
- }
- }
-}
-
-function removeConflictingNames(commandLine, context, contentView)
-{
- for (var name in commandLine)
- {
- // Note: we cannot trust contentView.hasOwnProperty, so we use the "in" operator.
- if (name in contentView)
- delete commandLine[name];
- }
-}
-
-/**
- * Executes a function in another window execution context.
- *
- * Useful when we have to pause some debuggee functions without freezing
- * the Firebug UI.
- *
- * @param {Window} win The window having the thread in which we want to execute the function
- * @param {function} func The function to execute
- * @param {Array or Array-Like object} args The arguments to pass to the function
- */
-function executeInWindowContext(win, func, args)
-{
- var listener = function()
- {
- win.document.removeEventListener("firebugCommandLine", listener);
- func.apply(null, args);
- };
- win.document.addEventListener("firebugCommandLine", listener);
- var event = document.createEvent("Events");
- event.initEvent("firebugCommandLine", true, false);
- win.document.dispatchEvent(event);
-}
-
-function getAutoCompletionList()
-{
- if (unsortedCompletionList)
- {
- unsortedCompletionList = false;
- completionList.sort();
- }
- return completionList;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.CommandLineExposed =
-{
- createFirebugCommandLine: createFirebugCommandLine,
- commands: commandNames,
- consoleShortcuts: consoleShortcuts,
- properties: props,
- userCommands: userCommands,
- registerCommand: registerCommand,
- unregisterCommand: unregisterCommand,
- evaluate: evaluateInPageContext,
- getAutoCompletionList: getAutoCompletionList,
-};
-
-return Firebug.CommandLineExposed;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+/*jshint esnext:true, es5:true, curly:false, evil:true, forin: false*/
+/*global Firebug:true, FBTrace:true, Components:true, define:true */
+
+define([
+ "firebug/lib/wrapper",
+ "firebug/debugger/debuggerLib",
+ "firebug/lib/object",
+ "firebug/console/commandLineAPI",
+ "firebug/lib/locale",
+],
+function(Wrapper, DebuggerLib, Obj, CommandLineAPI, Locale) {
+"use strict";
+
+// ********************************************************************************************* //
+// Constants
+
+const Cu = Components.utils;
+
+// ********************************************************************************************* //
+// Command Line APIs
+
+// List of command line APIs
+var commandNames = ["$", "$$", "$n", "$x", "cd", "clear", "inspect", "keys",
+ "values", "debug", "undebug", "monitor", "unmonitor", "traceCalls", "untraceCalls",
+ "traceAll", "untraceAll", "copy" /*, "memoryProfile", "memoryProfileEnd"*/];
+
+// List of shortcuts for some console methods
+var consoleShortcuts = ["dir", "dirxml", "table"];
+
+// List of console variables.
+var props = ["$0", "$1", "$2", "$3", "$4"];
+
+// Registered commands, name -> config object.
+var userCommands = Object.create(null);
+
+// List of command line APIs to auto-complete, kept equal to the concatenation
+// of the above minus trace*.
+var completionList = [
+ "$", "$$", "$n", "$x", "cd", "clear", "inspect", "keys",
+ "values", "debug", "undebug", "monitor", "unmonitor", "copy"
+].concat(consoleShortcuts, props);
+var unsortedCompletionList = true;
+
+// ********************************************************************************************* //
+// Command Line Implementation
+
+/**
+ * Returns a command line object (bundled with passed window through closure). The object
+ * provides all necessary APIs as described here:
+ * http://getfirebug.com/wiki/index.php/Command_Line_API
+ *
+ * @param {Object} context
+ * @param {Object} win
+ */
+function createFirebugCommandLine(context, win)
+{
+ var contentView = Wrapper.getContentView(win);
+ if (!contentView)
+ {
+ if (FBTrace.DBG_COMMANDLINE || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("createFirebugCommandLine ERROR no contentView " + context.getName());
+
+ return null;
+ }
+
+ // The debuggee global.
+ var dglobal = DebuggerLib.getDebuggeeGlobal(context, win);
+
+ if (!context.commandLineCache)
+ context.commandLineCache = new WeakMap();
+ var commandLineCache = context.commandLineCache;
+
+ var commandLine = commandLineCache.get(win.document);
+ if (commandLine)
+ return copyCommandLine(commandLine, dglobal);
+
+ // The commandLine object.
+ commandLine = dglobal.makeDebuggeeValue(Object.create(null));
+
+ var console = Firebug.ConsoleExposed.createFirebugConsole(context, win);
+ // The command line API instance.
+ var commands = CommandLineAPI.getCommandLineAPI(context);
+
+ // Helpers for command creation.
+ function createCommandHandler(command)
+ {
+ var wrappedCommand = function()
+ {
+ try
+ {
+ return command.apply(null, arguments);
+ }
+ catch(ex)
+ {
+ throw new Error(ex.message, ex.fileName, ex.lineNumber);
+ }
+ };
+ return dglobal.makeDebuggeeValue(wrappedCommand);
+ }
+
+ function createVariableHandler(handler, config)
+ {
+ var debuggeeObj = {}, object;
+
+ // Callable getters are commands whose syntax are both `command` and `command()`.
+ // The help command has this syntax for example.
+ if (config.isCallableGetter === true)
+ debuggeeObj = function(){ return object.handle(); };
+
+ object = dglobal.makeDebuggeeValue(debuggeeObj);
+ object.handle = function()
+ {
+ try
+ {
+ return handler(context);
+ }
+ catch(ex)
+ {
+ throw new Error(ex.message, ex.fileName, ex.lineNumber);
+ }
+ };
+ return object;
+ }
+
+ function createUserCommandHandler(config, name)
+ {
+ return function()
+ {
+ try
+ {
+ return config.handler.call(null, context, arguments);
+ }
+ catch(ex)
+ {
+ throw new Error(ex.message, ex.fileName, ex.lineNumber);
+ }
+ };
+ }
+
+ // Define command line methods.
+ for (var commandName in commands)
+ {
+ var command = commands[commandName];
+ commandLine[commandName] = createCommandHandler(command);
+ }
+
+ // Register shortcut.
+ consoleShortcuts.forEach(function(name)
+ {
+ var command = console[name].bind(console);
+ commandLine[name] = createCommandHandler(command);
+ });
+
+ // Register user commands.
+ for (var name in userCommands)
+ {
+ var config = userCommands[name];
+ var command = createUserCommandHandler(config, name);
+ if (userCommands[name].getter)
+ commandLine[name] = createVariableHandler(command, config);
+ else
+ commandLine[name] = createCommandHandler(command);
+ }
+
+ commandLineCache.set(win.document, commandLine);
+
+ // Return a copy so the original one is preserved from changes.
+ return copyCommandLine(commandLine, dglobal);
+}
+
+// ********************************************************************************************* //
+// User Commands
+
+/**
+ * Registers a command.
+ *
+ * @param {string} name The name of the command
+ * @param {object} config The configuration. See some examples in commandLineHelp.js
+ * and commandLineInclude.js
+ */
+function registerCommand(name, config)
+{
+ if (commandNames[name] || consoleShortcuts[name] || props[name] || userCommands[name])
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("firebug.registerCommand; ERROR This command is already " +
+ "registered: " + name);
+ }
+
+ return false;
+ }
+
+ userCommands[name] = config;
+ completionList.push(name);
+ unsortedCompletionList = true;
+ return true;
+}
+
+/**
+ * Unregisters a command.
+ *
+ * @param {string} name The name of the command to unregister
+ */
+function unregisterCommand(name)
+{
+ if (!userCommands[name])
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("firebug.unregisterCommand; ERROR This command is not " +
+ "registered: " + name);
+ }
+
+ return false;
+ }
+
+ delete userCommands[name];
+ var ind = completionList.indexOf(name);
+ if (ind !== -1)
+ completionList.splice(ind, 1);
+ return true;
+}
+
+/**
+ * Evaluates an expression in the thread of the webpage, so the Firebug UI is not frozen
+ * when the expression calls a function which will be paused.
+ *
+ *
+ * @param {object} context
+ * @param {Window} win
+ * @param {string} expr The expression (transformed if needed)
+ * @param {string} origExpr The expression as typed by the user
+ * @param {function} onSuccess The function to trigger in case of success
+ * @param {function} onError The function to trigger in case of exception
+ *
+ * @see CommandLine.evaluate
+ */
+function evaluateInPageContext(context, win)
+{
+ executeInWindowContext(win, evaluate, arguments);
+}
+
+/**
+ * Evaluates an expression.
+ *
+ * @param {object} context
+ * @param {Window} win
+ * @param {string} expr The expression (transformed if needed)
+ * @param {string} origExpr The expression as typed by the user
+ * @param {function} onSuccess The function to trigger in case of success
+ * @param {function} onError The function to trigger in case of exception
+ */
+function evaluate(context, win, expr, origExpr, onSuccess, onError)
+{
+ var result;
+ var contentView = Wrapper.getContentView(win);
+ var commandLine = createFirebugCommandLine(context, win);
+ var dglobal = DebuggerLib.getDebuggeeGlobal(context, win);
+ var resObj;
+
+ updateVars(commandLine, dglobal, context);
+ removeConflictingNames(commandLine, context, contentView);
+
+ resObj = dglobal.evalInGlobalWithBindings(expr, commandLine);
+
+ var unwrap = function(obj)
+ {
+ return DebuggerLib.unwrapDebuggeeValue(obj, contentView, dglobal);
+ };
+
+ // In case of abnormal termination, as if by the "slow script" dialog box,
+ // do not print anything in the console.
+ if (!resObj)
+ {
+ if (FBTrace.DBG_ERROR)
+ FBTrace.sysout("CommandLineExposed.evaluate; something went wrong when evaluating this"+
+ " expression: "+expr);
+ return;
+ }
+
+ if (resObj.hasOwnProperty("return"))
+ {
+ result = unwrap(resObj.return);
+ if (resObj.return && resObj.return.handle)
+ {
+ resObj.return.handle();
+ // Do not print anything in the console in case of getter commands.
+ return;
+ }
+ }
+ else if (resObj.hasOwnProperty("yield"))
+ {
+ result = unwrap(resObj.yield);
+ }
+ else if (resObj.hasOwnProperty("throw"))
+ {
+ // Change source and line number of exceptions from commandline code
+ // create new error since properties of nsIXPCException are not modifiable.
+ // Example of code raising nsIXPCException: `alert({toString: function(){ throw "blah"; }})`
+
+ // xxxFlorent: FIXME: we can't get the right stack trace with this example:
+ // function a(){
+ // throw new Error("error");
+ // }
+ // <ENTER>
+ // a();
+ // <ENTER>
+ var exc = unwrap(resObj.throw);
+
+ if (exc === null || exc === undefined)
+ return;
+
+ if (typeof exc !== "object")
+ {
+ exc = new Error(exc, null, null);
+ exc.fileName = exc.lineNumber = exc.stack = null;
+ }
+
+ var shouldModify = false, isXPCException = false;
+ var fileName = exc.filename || exc.fileName || "";
+ var isInternalError = fileName.lastIndexOf("chrome://", 0) === 0;
+ var lineNumber = null;
+ var stack = null;
+ var splitStack;
+ var isFileNameMasked = DebuggerLib.isFrameLocationEval(fileName);
+ if (isInternalError || isFileNameMasked)
+ {
+ shouldModify = true;
+ isXPCException = (exc.filename !== undefined);
+
+ // Lie and show the pre-transformed expression instead.
+ fileName = "data:,/* " + Locale.$STR("commandline.errorSourceHeader") + " */"+
+ encodeURIComponent("\n"+origExpr);
+
+ if (isInternalError && typeof exc.stack === "string")
+ {
+ splitStack = exc.stack.split("\n");
+ var correctionSucceeded = correctStackTrace(splitStack);
+ if (correctionSucceeded)
+ {
+ // correct the line number so we take into account the comment prepended above
+ lineNumber = findLineNumberInExceptionStack(splitStack) + 1;
+
+ // correct the first trace
+ splitStack.splice(0, 1, "@" + fileName + ":" + lineNumber);
+ stack = splitStack.join("\n");
+ }
+ else
+ shouldModify = false;
+ }
+ else
+ {
+ // correct the line number so we take into account the comment prepended above
+ lineNumber = exc.lineNumber + 1;
+ }
+ }
+
+ result = new Error();
+
+ if (shouldModify)
+ {
+ result.stack = stack;
+ result.source = origExpr;
+ result.message = exc.message;
+ result.lineNumber = lineNumber;
+ result.fileName = fileName;
+
+ // The error message can also contain post-transform details about the
+ // source, but it's harder to lie about. Make it prettier, at least.
+ if (typeof result.message === "string")
+ result.message = result.message.replace(/__fb_scopedVars\(/g, "<get closure>(");
+
+ if (!isXPCException)
+ result.name = exc.name;
+ }
+ else
+ {
+ Obj.getPropertyNames(exc).forEach(function(prop)
+ {
+ result[prop] = exc[prop];
+ });
+ result.stack = exc.stack;
+ result.source = exc.source;
+ }
+
+ executeInWindowContext(window, onError, [result, context]);
+ return;
+ }
+
+ executeInWindowContext(window, onSuccess, [result, context]);
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Helpers (not accessible from web content)
+
+function copyCommandLine(commandLine, dglobal)
+{
+ var copy = dglobal.makeDebuggeeValue(Object.create(null));
+ for (var name in commandLine)
+ copy[name] = commandLine[name];
+ return copy;
+}
+
+function findLineNumberInExceptionStack(splitStack)
+{
+ var m = splitStack[0].match(/:(\d+)$/);
+ return m !== null ? +m[1] : null;
+}
+
+function correctStackTrace(splitStack)
+{
+ var filename = Components.stack.filename;
+ // remove the frames over the evaluated expression
+ for (var i = 0; i < splitStack.length-1 &&
+ splitStack[i+1].indexOf(evaluate.name + "@" + filename, 0) === -1 ; i++);
+
+ if (i >= splitStack.length)
+ return false;
+ splitStack.splice(0, i);
+ return true;
+}
+
+function updateVars(commandLine, dglobal, context)
+{
+ var htmlPanel = context.getPanel("html", true);
+ var vars = htmlPanel ? htmlPanel.getInspectorVars() : null;
+
+ for (var prop in vars)
+ commandLine[prop] = dglobal.makeDebuggeeValue(vars[prop]);
+
+ // Iterate all registered commands and pick those which represents a 'variable'.
+ // These needs to be available as variables within the Command Line namespace.
+ for (var prop in userCommands)
+ {
+ var cmd = userCommands[prop];
+ if (cmd.variable)
+ {
+ var value = cmd.handler.call(null, context);
+ commandLine[prop] = dglobal.makeDebuggeeValue(value);
+ }
+ }
+}
+
+function removeConflictingNames(commandLine, context, contentView)
+{
+ for (var name in commandLine)
+ {
+ // Note: we cannot trust contentView.hasOwnProperty, so we use the "in" operator.
+ if (name in contentView)
+ delete commandLine[name];
+ }
+}
+
+/**
+ * Executes a function in another window execution context.
+ *
+ * Useful when we have to pause some debuggee functions without freezing
+ * the Firebug UI.
+ *
+ * @param {Window} win The window having the thread in which we want to execute the function
+ * @param {function} func The function to execute
+ * @param {Array or Array-Like object} args The arguments to pass to the function
+ */
+function executeInWindowContext(win, func, args)
+{
+ var listener = function()
+ {
+ win.document.removeEventListener("firebugCommandLine", listener);
+ func.apply(null, args);
+ };
+ win.document.addEventListener("firebugCommandLine", listener);
+ var event = document.createEvent("Events");
+ event.initEvent("firebugCommandLine", true, false);
+ win.document.dispatchEvent(event);
+}
+
+function getAutoCompletionList()
+{
+ if (unsortedCompletionList)
+ {
+ unsortedCompletionList = false;
+ completionList.sort();
+ }
+ return completionList;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.CommandLineExposed =
+{
+ createFirebugCommandLine: createFirebugCommandLine,
+ commands: commandNames,
+ consoleShortcuts: consoleShortcuts,
+ properties: props,
+ userCommands: userCommands,
+ registerCommand: registerCommand,
+ unregisterCommand: unregisterCommand,
+ evaluate: evaluateInPageContext,
+ getAutoCompletionList: getAutoCompletionList,
+};
+
+return Firebug.CommandLineExposed;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/commandLinePopup.js b/content/firebug/console/commandLinePopup.js
index 19e6e47..532c6f6 100644
--- a/content/firebug/console/commandLinePopup.js
+++ b/content/firebug/console/commandLinePopup.js
@@ -1,245 +1,245 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/console/commandLine",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/string",
- "firebug/lib/xml",
- "firebug/lib/events",
-],
-function(Obj, Firebug, CommandLine, Css, Dom, Str, Xml, Events) {
-
-// ************************************************************************************************
-// Constants
-
-// ************************************************************************************************
-// Implementation
-
-/**
- * @module Command Line availability in other panels.
- */
-Firebug.CommandLine.Popup = Obj.extend(Firebug.Module,
-{
- dispatchName: "commandLinePopup",
- lastFocused : null,
-
- initializeUI: function()
- {
- Firebug.Module.initializeUI.apply(this, arguments);
-
- this.setPopupBrowserStyle(Firebug.chrome);
-
- this.onKeyPress = Obj.bind(this.onKeyPress, this);
-
- this.attachListeners();
- },
-
- shutdown: function()
- {
- var contentBox = Firebug.chrome.$("fbContentBox");
- Events.removeEventListener(contentBox, "keypress", this.onKeyPress, false);
- },
-
- initContext: function(context)
- {
- Firebug.Module.showContext.apply(this, arguments);
-
- var show = Firebug.Options.get("alwaysShowCommandLine");
- if (show && !this.isVisible())
- this.toggle(context);
- },
-
- showPanel: function(browser, panel)
- {
- if (FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("commandLine.Popup.showPanel; " + (panel?panel.name:"null panel"));
-
- var chrome = Firebug.chrome;
- var visible = this.isVisible();
- var isConsole = (panel && panel.name == "console");
- var showCommandEditor = Firebug.commandEditor;
-
- // Disable the console popup button (Firebug toolbar) if the Console panel
- // is disabled or selected.
- var consolePanelType = Firebug.getPanelType("console");
- var disabled = consolePanelType.prototype.isEnabled() ? "false" : "true";
- if (isConsole || !panel)
- disabled = "true";
-
- chrome.$("fbCommandPopupButton").setAttribute("disabled", disabled);
-
- if ((showCommandEditor && isConsole) || !panel)
- {
- Dom.collapse(chrome.$("fbPanelSplitter"), panel ? false : true);
- Dom.collapse(chrome.$("fbSidePanelDeck"), panel ? false : true);
- Dom.collapse(chrome.$("fbCommandBox"), true);
- chrome.$("fbSidePanelDeck").selectedPanel = chrome.$("fbCommandEditorBox");
- }
-
- // The console can't be multiline on other panels, so hide the toggle-to-multiline
- // button (displayed at the end of the one line command line)
- Dom.collapse(chrome.$("fbToggleCommandLine"), !isConsole);
-
- // Update visibility of the console-popup (hidden if the Console panel is selected).
- this.updateVisibility(visible && !isConsole && panel && disabled != "true");
-
- // Make sure the console panel is attached to the proper document
- // (the one used by all panels, or the one used by console popup and available
- // for all the panels).
- if (panel)
- this.reattach(panel.context);
-
- // If the the console panel is opened on another panel, simulate show event for it.
- if (panel && !isConsole && visible)
- this.showPopupPanel(panel.context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
- setPopupBrowserStyle: function(chrome)
- {
- // Set additional style so we can make the panelNode-console node
- // always visible regardless of the currently selected panel.
- var doc = chrome.$("fbCommandPopupBrowser").contentDocument;
- var body = Dom.getBody(doc);
- Css.setClass(body, "commandPopup");
- },
-
- attachListeners: function()
- {
- // Register event listeners.
- var contentBox = Firebug.chrome.$("fbContentBox");
- Events.addEventListener(contentBox, "keypress", this.onKeyPress, false);
- },
-
- toggle: function(context)
- {
- var panel = Firebug.chrome.getSelectedPanel();
- if (panel && panel.name == "console")
- return;
-
- if (FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("commandLine.Popup.toggle;");
-
- var newState = !this.isVisible();
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleCommandPopup", "checked", newState);
- Firebug.Options.set("alwaysShowCommandLine", newState);
-
- this.updateVisibility(newState);
-
- this.reattach(context);
- this.showPopupPanel(context);
- },
-
- showPopupPanel: function(context)
- {
- // If the the console panel is opened on another panel, simulate show event for it.
- if (this.isVisible())
- {
- var panel = context.getPanel("console", true);
- if (panel)
- {
- var state = Firebug.getPanelState(panel);
- panel.showPanel(state);
- }
- }
- },
-
- updateVisibility: function(visible)
- {
- var chrome = Firebug.chrome;
- var popup = chrome.$("fbCommandPopup");
- var splitter = chrome.$("fbCommandPopupSplitter");
- var cmdbox = chrome.$("fbCommandBox");
- var toggle = chrome.$("fbToggleCommandLine");
-
- // If all the visual parts are already visible then bail out.
- if (visible && !Dom.isCollapsed(popup) && !Dom.isCollapsed(splitter) &&
- !Dom.isCollapsed(cmdbox) && Dom.isCollapsed(toggle))
- return;
-
- Dom.collapse(popup, !visible);
- Dom.collapse(splitter, !visible);
- Dom.collapse(cmdbox, !visible);
-
- // The command line can't be multiline in other panels.
- Dom.collapse(toggle, visible);
-
- var commandLine = Firebug.CommandLine.getSingleRowCommandLine();
- var commandEditor = Firebug.CommandLine.getCommandEditor();
-
- // Focus the command line if it has been just displayed.
- if (visible)
- {
- this.lastFocused = document.commandDispatcher.focusedElement;
- commandLine.focus();
- }
- else if (this.lastFocused && Xml.isVisible(this.lastFocused) &&
- typeof this.lastFocused.focus == "function")
- {
- this.lastFocused.focus();
- this.lastFocused = null;
- }
-
- if (Firebug.commandEditor)
- {
- if (visible)
- commandLine.value = Str.stripNewLines(commandEditor.value);
- else
- commandEditor.value = Str.cleanIndentation(commandLine.value);
- }
- },
-
- isVisible: function()
- {
- var checked = Firebug.chrome.getGlobalAttribute("cmd_firebug_toggleCommandPopup", "checked");
- return (checked == "true") ? true : false;
- },
-
- reattach: function(context)
- {
- if (!context)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("commandLinePopup.reattach; ERROR No context");
- return;
- }
-
- var consolePanelType = Firebug.getPanelType("console");
- var doc = Firebug.chrome.getPanelDocument(consolePanelType);
-
- // Console doesn't have to be available (e.g. disabled)
- var panel = context.getPanel("console", true);
- if (panel)
- panel.reattach(doc);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Event Listeners
-
- onKeyPress: function(event)
- {
- if (!Events.noKeyModifiers(event))
- return false;
-
- // ESC
- var target = event.target;
- // prevent conflict with inline editors being closed
- if (this.isVisible() && target && event.keyCode == KeyEvent.DOM_VK_ESCAPE
- && !Css.hasClass(target, "textEditorInner"))
- this.toggle(Firebug.currentContext);
- }
-});
-
-// ************************************************************************************************
-// Registration
-
-Firebug.registerModule(Firebug.CommandLine.Popup);
-
-return Firebug.CommandLine.Popup;
-
-// ************************************************************************************************
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/console/commandLine",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/string",
+ "firebug/lib/xml",
+ "firebug/lib/events",
+],
+function(Obj, Firebug, CommandLine, Css, Dom, Str, Xml, Events) {
+
+// ************************************************************************************************
+// Constants
+
+// ************************************************************************************************
+// Implementation
+
+/**
+ * @module Command Line availability in other panels.
+ */
+Firebug.CommandLine.Popup = Obj.extend(Firebug.Module,
+{
+ dispatchName: "commandLinePopup",
+ lastFocused : null,
+
+ initializeUI: function()
+ {
+ Firebug.Module.initializeUI.apply(this, arguments);
+
+ this.setPopupBrowserStyle(Firebug.chrome);
+
+ this.onKeyPress = Obj.bind(this.onKeyPress, this);
+
+ this.attachListeners();
+ },
+
+ shutdown: function()
+ {
+ var contentBox = Firebug.chrome.$("fbContentBox");
+ Events.removeEventListener(contentBox, "keypress", this.onKeyPress, false);
+ },
+
+ initContext: function(context)
+ {
+ Firebug.Module.showContext.apply(this, arguments);
+
+ var show = Firebug.Options.get("alwaysShowCommandLine");
+ if (show && !this.isVisible())
+ this.toggle(context);
+ },
+
+ showPanel: function(browser, panel)
+ {
+ if (FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("commandLine.Popup.showPanel; " + (panel?panel.name:"null panel"));
+
+ var chrome = Firebug.chrome;
+ var visible = this.isVisible();
+ var isConsole = (panel && panel.name == "console");
+ var showCommandEditor = Firebug.commandEditor;
+
+ // Disable the console popup button (Firebug toolbar) if the Console panel
+ // is disabled or selected.
+ var consolePanelType = Firebug.getPanelType("console");
+ var disabled = consolePanelType.prototype.isEnabled() ? "false" : "true";
+ if (isConsole || !panel)
+ disabled = "true";
+
+ chrome.$("fbCommandPopupButton").setAttribute("disabled", disabled);
+
+ if ((showCommandEditor && isConsole) || !panel)
+ {
+ Dom.collapse(chrome.$("fbPanelSplitter"), panel ? false : true);
+ Dom.collapse(chrome.$("fbSidePanelDeck"), panel ? false : true);
+ Dom.collapse(chrome.$("fbCommandBox"), true);
+ chrome.$("fbSidePanelDeck").selectedPanel = chrome.$("fbCommandEditorBox");
+ }
+
+ // The console can't be multiline on other panels, so hide the toggle-to-multiline
+ // button (displayed at the end of the one line command line)
+ Dom.collapse(chrome.$("fbToggleCommandLine"), !isConsole);
+
+ // Update visibility of the console-popup (hidden if the Console panel is selected).
+ this.updateVisibility(visible && !isConsole && panel && disabled != "true");
+
+ // Make sure the console panel is attached to the proper document
+ // (the one used by all panels, or the one used by console popup and available
+ // for all the panels).
+ if (panel)
+ this.reattach(panel.context);
+
+ // If the the console panel is opened on another panel, simulate show event for it.
+ if (panel && !isConsole && visible)
+ this.showPopupPanel(panel.context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+ setPopupBrowserStyle: function(chrome)
+ {
+ // Set additional style so we can make the panelNode-console node
+ // always visible regardless of the currently selected panel.
+ var doc = chrome.$("fbCommandPopupBrowser").contentDocument;
+ var body = Dom.getBody(doc);
+ Css.setClass(body, "commandPopup");
+ },
+
+ attachListeners: function()
+ {
+ // Register event listeners.
+ var contentBox = Firebug.chrome.$("fbContentBox");
+ Events.addEventListener(contentBox, "keypress", this.onKeyPress, false);
+ },
+
+ toggle: function(context)
+ {
+ var panel = Firebug.chrome.getSelectedPanel();
+ if (panel && panel.name == "console")
+ return;
+
+ if (FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("commandLine.Popup.toggle;");
+
+ var newState = !this.isVisible();
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleCommandPopup", "checked", newState);
+ Firebug.Options.set("alwaysShowCommandLine", newState);
+
+ this.updateVisibility(newState);
+
+ this.reattach(context);
+ this.showPopupPanel(context);
+ },
+
+ showPopupPanel: function(context)
+ {
+ // If the the console panel is opened on another panel, simulate show event for it.
+ if (this.isVisible())
+ {
+ var panel = context.getPanel("console", true);
+ if (panel)
+ {
+ var state = Firebug.getPanelState(panel);
+ panel.showPanel(state);
+ }
+ }
+ },
+
+ updateVisibility: function(visible)
+ {
+ var chrome = Firebug.chrome;
+ var popup = chrome.$("fbCommandPopup");
+ var splitter = chrome.$("fbCommandPopupSplitter");
+ var cmdbox = chrome.$("fbCommandBox");
+ var toggle = chrome.$("fbToggleCommandLine");
+
+ // If all the visual parts are already visible then bail out.
+ if (visible && !Dom.isCollapsed(popup) && !Dom.isCollapsed(splitter) &&
+ !Dom.isCollapsed(cmdbox) && Dom.isCollapsed(toggle))
+ return;
+
+ Dom.collapse(popup, !visible);
+ Dom.collapse(splitter, !visible);
+ Dom.collapse(cmdbox, !visible);
+
+ // The command line can't be multiline in other panels.
+ Dom.collapse(toggle, visible);
+
+ var commandLine = Firebug.CommandLine.getSingleRowCommandLine();
+ var commandEditor = Firebug.CommandLine.getCommandEditor();
+
+ // Focus the command line if it has been just displayed.
+ if (visible)
+ {
+ this.lastFocused = document.commandDispatcher.focusedElement;
+ commandLine.focus();
+ }
+ else if (this.lastFocused && Xml.isVisible(this.lastFocused) &&
+ typeof this.lastFocused.focus == "function")
+ {
+ this.lastFocused.focus();
+ this.lastFocused = null;
+ }
+
+ if (Firebug.commandEditor)
+ {
+ if (visible)
+ commandLine.value = Str.stripNewLines(commandEditor.value);
+ else
+ commandEditor.value = Str.cleanIndentation(commandLine.value);
+ }
+ },
+
+ isVisible: function()
+ {
+ var checked = Firebug.chrome.getGlobalAttribute("cmd_firebug_toggleCommandPopup", "checked");
+ return (checked == "true") ? true : false;
+ },
+
+ reattach: function(context)
+ {
+ if (!context)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("commandLinePopup.reattach; ERROR No context");
+ return;
+ }
+
+ var consolePanelType = Firebug.getPanelType("console");
+ var doc = Firebug.chrome.getPanelDocument(consolePanelType);
+
+ // Console doesn't have to be available (e.g. disabled)
+ var panel = context.getPanel("console", true);
+ if (panel)
+ panel.reattach(doc);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Event Listeners
+
+ onKeyPress: function(event)
+ {
+ if (!Events.noKeyModifiers(event))
+ return false;
+
+ // ESC
+ var target = event.target;
+ // prevent conflict with inline editors being closed
+ if (this.isVisible() && target && event.keyCode == KeyEvent.DOM_VK_ESCAPE
+ && !Css.hasClass(target, "textEditorInner"))
+ this.toggle(Firebug.currentContext);
+ }
+});
+
+// ************************************************************************************************
+// Registration
+
+Firebug.registerModule(Firebug.CommandLine.Popup);
+
+return Firebug.CommandLine.Popup;
+
+// ************************************************************************************************
+});
diff --git a/content/firebug/console/commands/commandLineHelp.js b/content/firebug/console/commands/commandLineHelp.js
index 2358e99..14096cf 100644
--- a/content/firebug/console/commands/commandLineHelp.js
+++ b/content/firebug/console/commands/commandLineHelp.js
@@ -1,321 +1,321 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/dom",
- "firebug/console/commandLineExposed",
- "firebug/chrome/window",
- "firebug/lib/xpcom",
- "firebug/lib/events",
- "firebug/lib/object",
-],
-function(Firebug, Domplate, Locale, Dom, CommandLineExposed, Win, Xpcom, Events, Obj) {
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-var CMD_TYPE_COMMAND = 1;
-var CMD_TYPE_SHORTCUT = 2;
-var CMD_TYPE_PROPERTY = 3;
-
-const prompts = Xpcom.CCSV("@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService");
-
-var CLOSURE_INSPECTOR_HELP_URL = "https://getfirebug.com/wiki/index.php/Closure_Inspector";
-
-// ********************************************************************************************* //
-// Command Line Help
-
-var HelpCaption = domplate(
-{
- tag:
- SPAN({"class": "helpTitle"},
- SPAN({"class": "helpCaption"},
- Locale.$STR("console.cmd.help_title")
- ),
- SPAN({"class": "helpCaptionDesc"},
- Locale.$STR("console.cmd.help_title_desc")
- )
- ),
-
- groupable: false
-});
-
-// The table UI should be based on tableRep
-var HelpTable = domplate(
-{
- tag:
- TABLE({"class": "helpTable", cellspacing: 0, cellpadding: 0, width: "100%",
- "role": "grid"},
- THEAD({"class": "helpThead", "role": "presentation"},
- TR({"class": "headerRow focusRow helpRow subFocusRow", onclick: "$onClick",
- "role": "row"},
- TH({"class": "headerCell a11yFocus", "role": "columnheader", width: "10%"},
- DIV({"class": "headerCellBox"},
- Locale.$STR("Name")
- )
- ),
- TH({"class": "headerCell a11yFocus", "role": "columnheader", width: "90%"},
- DIV({"class": "headerCellBox"},
- Locale.$STR("Description")
- )
- )
- )
- ),
- TBODY({"class": "helpTbody", "role": "presentation"})
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onClick: function(event)
- {
- }
-});
-
-var HelpEntry = domplate(
-{
- tag:
- FOR("command", "$commands",
- TR({"class": "focusRow helpRow subFocusRow", "role": "row"},
- TD({"class": "a11yFocus helpCell commandName", "role": "presentation"},
- A({"class": "objectLink", onclick: "$onClick", _repObject: "$command"},
- "$command|getName"
- )
- ),
- TD({"class": "a11yFocus helpCell commandDesc", "role": "gridcell"},
- "$command|getDesc"
- )
- )
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onClick: function(event)
- {
- Events.cancelEvent(event);
-
- var object = Firebug.getRepObject(event.target);
-
- if (object.noUserHelpUrl)
- {
- prompts.alert(null, Locale.$STR("Firebug"),
- Locale.$STR("console.cmd.helpUrlNotAvailable"));
- return;
- }
-
- var helpUrl = "http://getfirebug.com/wiki/index.php/" + object.name;
- if (object.helpUrl)
- helpUrl = object.helpUrl;
-
- Win.openNewTab(helpUrl);
- },
-
- getName: function(object)
- {
- var name = object.name;
- if (object.type != CMD_TYPE_PROPERTY)
- name = name + "()";
- return name;
- },
-
- getDesc: function(object)
- {
- if (object.nol10n)
- return object.desc;
-
- return Locale.$STR(object.desc);
- }
-});
-
-// ********************************************************************************************* //
-// Command Line Tips
-
-var TipsCaption = domplate(
-{
- tag:
- SPAN({"class": "helpTitle"},
- SPAN({"class": "helpCaption"},
- Locale.$STR("console.cmd.tip_title")
- ),
- SPAN({"class": "helpCaptionDesc"},
- Locale.$STR("console.cmd.tip_title_desc")
- )
- ),
-
- groupable: false
-});
-
-var TipsList = domplate(
-{
- tag:
- UL({"class": "tipsList"})
-});
-
-var Tip = domplate(
-{
- loop:
- FOR("tip", "$tips",
- TAG("$tag", "$tip")
- ),
-
- tag:
- LI({"class": "tip"},
- SPAN({"class": "text"}, "$tip|getText"),
- SPAN(" "),
- SPAN({"class": "example"},"$tip|getExample")
- ),
-
- getText: function(object)
- {
- return object.nol10n ? object.text : Locale.$STR(object.text);
- },
-
- getExample: function(object)
- {
- return object.example;
- }
-});
-
-// ********************************************************************************************* //
-// Help Object
-
-var CommandLineHelp = domplate(
-{
- render: function(context)
- {
- this.renderHelp(context);
- this.renderTips(context);
- },
-
- renderHelp: function(context)
- {
- var row = Firebug.Console.openGroup("help", context, "help",
- HelpCaption, true, null, true);
- Firebug.Console.closeGroup(context, true);
-
- var logGroupBody = row.getElementsByClassName("logGroupBody")[0];
- var logContent = logGroupBody.getElementsByClassName("logContent")[0];
- var table = HelpTable.tag.append({}, logContent);
- var tBody = table.getElementsByClassName("helpTbody")[0];
-
- var commands = [];
-
- var ignore = ["traceCalls", "untraceCalls", "traceAll", "untraceAll"];
- for (var i=0; i<CommandLineExposed.commands.length; i++)
- {
- var cmd = CommandLineExposed.commands[i];
-
- // See Issue 5221
- if (ignore.indexOf(cmd) >= 0)
- continue;
-
- commands.push({
- name: cmd,
- desc: "console.cmd.help." + cmd,
- type: CMD_TYPE_COMMAND,
- });
- }
-
- for (var i=0; i<CommandLineExposed.consoleShortcuts.length; i++)
- {
- commands.push({
- name: CommandLineExposed.consoleShortcuts[i],
- desc: "console.cmd.help." + CommandLineExposed.consoleShortcuts[i],
- type: CMD_TYPE_SHORTCUT,
- });
- }
-
- for (var i=0; i<CommandLineExposed.properties.length; i++)
- {
- commands.push({
- name: CommandLineExposed.properties[i],
- desc: "console.cmd.help." + CommandLineExposed.properties[i],
- type: CMD_TYPE_PROPERTY,
- });
- }
-
- for (var name in CommandLineExposed.userCommands)
- {
- var config = CommandLineExposed.userCommands[name];
- var prop = config.getter || config.variable;
-
- commands.push({
- name: name,
- desc: config.description,
- nol10n: true,
- noUserHelpUrl: !config.helpUrl,
- helpUrl: config.helpUrl ? config.helpUrl: null,
- type: prop ? CMD_TYPE_PROPERTY : CMD_TYPE_COMMAND,
- });
- }
-
- // Sort commands
- commands.sort(function sortName(a, b) { return a.name > b.name ? 1 : -1; });
-
- // Generate table
- HelpEntry.tag.insertRows({commands: commands}, tBody);
- },
-
- renderTips: function(context)
- {
- var row = Firebug.Console.openGroup("help", context, "help",
- TipsCaption, true, null, true);
- Firebug.Console.closeGroup(context, true);
-
- var logGroupBody = row.getElementsByClassName("logGroupBody")[0];
- var logContent = logGroupBody.getElementsByClassName("logContent")[0];
- var list = TipsList.tag.append({}, logContent);
-
- // #1) Render basic command line syntax tip
- var tip = {
- example: "1 + 1",
- text: "console.cmd.tip.javascript"
- };
- Tip.tag.append({tip: tip}, list);
-
- // #2) Render closure syntax tip
- tip = {
- example: "myObject.%closureVarName",
- text: "console.cmd.tip.closures"
- };
-
- function onClickLink()
- {
- Win.openNewTab(CLOSURE_INSPECTOR_HELP_URL);
- }
-
- var node = Tip.tag.append({tip: tip}, list);
- var textNode = node.getElementsByClassName("text").item(0);
- FirebugReps.Description.render(Locale.$STR(tip.text), textNode, onClickLink);
- }
-});
-
-// ********************************************************************************************* //
-// Command Implementation
-
-function onExecuteCommand(context)
-{
- CommandLineHelp.render(context);
- return Firebug.Console.getDefaultReturnValue();
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerCommand("help", {
- helpUrl: "http://getfirebug.com/wiki/index.php/help",
- handler: onExecuteCommand,
- description: Locale.$STR("console.cmd.help.help"),
- getter: true,
- isCallableGetter: true,
-});
-
-return CommandLineHelp;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/dom",
+ "firebug/console/commandLineExposed",
+ "firebug/chrome/window",
+ "firebug/lib/xpcom",
+ "firebug/lib/events",
+ "firebug/lib/object",
+],
+function(Firebug, Domplate, Locale, Dom, CommandLineExposed, Win, Xpcom, Events, Obj) {
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+var CMD_TYPE_COMMAND = 1;
+var CMD_TYPE_SHORTCUT = 2;
+var CMD_TYPE_PROPERTY = 3;
+
+const prompts = Xpcom.CCSV("@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService");
+
+var CLOSURE_INSPECTOR_HELP_URL = "https://getfirebug.com/wiki/index.php/Closure_Inspector";
+
+// ********************************************************************************************* //
+// Command Line Help
+
+var HelpCaption = domplate(
+{
+ tag:
+ SPAN({"class": "helpTitle"},
+ SPAN({"class": "helpCaption"},
+ Locale.$STR("console.cmd.help_title")
+ ),
+ SPAN({"class": "helpCaptionDesc"},
+ Locale.$STR("console.cmd.help_title_desc")
+ )
+ ),
+
+ groupable: false
+});
+
+// The table UI should be based on tableRep
+var HelpTable = domplate(
+{
+ tag:
+ TABLE({"class": "helpTable", cellspacing: 0, cellpadding: 0, width: "100%",
+ "role": "grid"},
+ THEAD({"class": "helpThead", "role": "presentation"},
+ TR({"class": "headerRow focusRow helpRow subFocusRow", onclick: "$onClick",
+ "role": "row"},
+ TH({"class": "headerCell a11yFocus", "role": "columnheader", width: "10%"},
+ DIV({"class": "headerCellBox"},
+ Locale.$STR("Name")
+ )
+ ),
+ TH({"class": "headerCell a11yFocus", "role": "columnheader", width: "90%"},
+ DIV({"class": "headerCellBox"},
+ Locale.$STR("Description")
+ )
+ )
+ )
+ ),
+ TBODY({"class": "helpTbody", "role": "presentation"})
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onClick: function(event)
+ {
+ }
+});
+
+var HelpEntry = domplate(
+{
+ tag:
+ FOR("command", "$commands",
+ TR({"class": "focusRow helpRow subFocusRow", "role": "row"},
+ TD({"class": "a11yFocus helpCell commandName", "role": "presentation"},
+ A({"class": "objectLink", onclick: "$onClick", _repObject: "$command"},
+ "$command|getName"
+ )
+ ),
+ TD({"class": "a11yFocus helpCell commandDesc", "role": "gridcell"},
+ "$command|getDesc"
+ )
+ )
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onClick: function(event)
+ {
+ Events.cancelEvent(event);
+
+ var object = Firebug.getRepObject(event.target);
+
+ if (object.noUserHelpUrl)
+ {
+ prompts.alert(null, Locale.$STR("Firebug"),
+ Locale.$STR("console.cmd.helpUrlNotAvailable"));
+ return;
+ }
+
+ var helpUrl = "http://getfirebug.com/wiki/index.php/" + object.name;
+ if (object.helpUrl)
+ helpUrl = object.helpUrl;
+
+ Win.openNewTab(helpUrl);
+ },
+
+ getName: function(object)
+ {
+ var name = object.name;
+ if (object.type != CMD_TYPE_PROPERTY)
+ name = name + "()";
+ return name;
+ },
+
+ getDesc: function(object)
+ {
+ if (object.nol10n)
+ return object.desc;
+
+ return Locale.$STR(object.desc);
+ }
+});
+
+// ********************************************************************************************* //
+// Command Line Tips
+
+var TipsCaption = domplate(
+{
+ tag:
+ SPAN({"class": "helpTitle"},
+ SPAN({"class": "helpCaption"},
+ Locale.$STR("console.cmd.tip_title")
+ ),
+ SPAN({"class": "helpCaptionDesc"},
+ Locale.$STR("console.cmd.tip_title_desc")
+ )
+ ),
+
+ groupable: false
+});
+
+var TipsList = domplate(
+{
+ tag:
+ UL({"class": "tipsList"})
+});
+
+var Tip = domplate(
+{
+ loop:
+ FOR("tip", "$tips",
+ TAG("$tag", "$tip")
+ ),
+
+ tag:
+ LI({"class": "tip"},
+ SPAN({"class": "text"}, "$tip|getText"),
+ SPAN(" "),
+ SPAN({"class": "example"},"$tip|getExample")
+ ),
+
+ getText: function(object)
+ {
+ return object.nol10n ? object.text : Locale.$STR(object.text);
+ },
+
+ getExample: function(object)
+ {
+ return object.example;
+ }
+});
+
+// ********************************************************************************************* //
+// Help Object
+
+var CommandLineHelp = domplate(
+{
+ render: function(context)
+ {
+ this.renderHelp(context);
+ this.renderTips(context);
+ },
+
+ renderHelp: function(context)
+ {
+ var row = Firebug.Console.openGroup("help", context, "help",
+ HelpCaption, true, null, true);
+ Firebug.Console.closeGroup(context, true);
+
+ var logGroupBody = row.getElementsByClassName("logGroupBody")[0];
+ var logContent = logGroupBody.getElementsByClassName("logContent")[0];
+ var table = HelpTable.tag.append({}, logContent);
+ var tBody = table.getElementsByClassName("helpTbody")[0];
+
+ var commands = [];
+
+ var ignore = ["traceCalls", "untraceCalls", "traceAll", "untraceAll"];
+ for (var i=0; i<CommandLineExposed.commands.length; i++)
+ {
+ var cmd = CommandLineExposed.commands[i];
+
+ // See Issue 5221
+ if (ignore.indexOf(cmd) >= 0)
+ continue;
+
+ commands.push({
+ name: cmd,
+ desc: "console.cmd.help." + cmd,
+ type: CMD_TYPE_COMMAND,
+ });
+ }
+
+ for (var i=0; i<CommandLineExposed.consoleShortcuts.length; i++)
+ {
+ commands.push({
+ name: CommandLineExposed.consoleShortcuts[i],
+ desc: "console.cmd.help." + CommandLineExposed.consoleShortcuts[i],
+ type: CMD_TYPE_SHORTCUT,
+ });
+ }
+
+ for (var i=0; i<CommandLineExposed.properties.length; i++)
+ {
+ commands.push({
+ name: CommandLineExposed.properties[i],
+ desc: "console.cmd.help." + CommandLineExposed.properties[i],
+ type: CMD_TYPE_PROPERTY,
+ });
+ }
+
+ for (var name in CommandLineExposed.userCommands)
+ {
+ var config = CommandLineExposed.userCommands[name];
+ var prop = config.getter || config.variable;
+
+ commands.push({
+ name: name,
+ desc: config.description,
+ nol10n: true,
+ noUserHelpUrl: !config.helpUrl,
+ helpUrl: config.helpUrl ? config.helpUrl: null,
+ type: prop ? CMD_TYPE_PROPERTY : CMD_TYPE_COMMAND,
+ });
+ }
+
+ // Sort commands
+ commands.sort(function sortName(a, b) { return a.name > b.name ? 1 : -1; });
+
+ // Generate table
+ HelpEntry.tag.insertRows({commands: commands}, tBody);
+ },
+
+ renderTips: function(context)
+ {
+ var row = Firebug.Console.openGroup("help", context, "help",
+ TipsCaption, true, null, true);
+ Firebug.Console.closeGroup(context, true);
+
+ var logGroupBody = row.getElementsByClassName("logGroupBody")[0];
+ var logContent = logGroupBody.getElementsByClassName("logContent")[0];
+ var list = TipsList.tag.append({}, logContent);
+
+ // #1) Render basic command line syntax tip
+ var tip = {
+ example: "1 + 1",
+ text: "console.cmd.tip.javascript"
+ };
+ Tip.tag.append({tip: tip}, list);
+
+ // #2) Render closure syntax tip
+ tip = {
+ example: "myObject.%closureVarName",
+ text: "console.cmd.tip.closures"
+ };
+
+ function onClickLink()
+ {
+ Win.openNewTab(CLOSURE_INSPECTOR_HELP_URL);
+ }
+
+ var node = Tip.tag.append({tip: tip}, list);
+ var textNode = node.getElementsByClassName("text").item(0);
+ FirebugReps.Description.render(Locale.$STR(tip.text), textNode, onClickLink);
+ }
+});
+
+// ********************************************************************************************* //
+// Command Implementation
+
+function onExecuteCommand(context)
+{
+ CommandLineHelp.render(context);
+ return Firebug.Console.getDefaultReturnValue();
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerCommand("help", {
+ helpUrl: "http://getfirebug.com/wiki/index.php/help",
+ handler: onExecuteCommand,
+ description: Locale.$STR("console.cmd.help.help"),
+ getter: true,
+ isCallableGetter: true,
+});
+
+return CommandLineHelp;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/console/commands/commandLineInclude.js b/content/firebug/console/commands/commandLineInclude.js
index 8c9fe7b..b7b7b6c 100644
--- a/content/firebug/console/commands/commandLineInclude.js
+++ b/content/firebug/console/commands/commandLineInclude.js
@@ -1,610 +1,610 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/chrome/reps",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/dom",
- "firebug/chrome/window",
- "firebug/lib/css",
- "firebug/lib/string",
- "firebug/lib/options",
- "firebug/chrome/menu",
- "firebug/lib/system",
- "firebug/lib/xpcom",
- "firebug/lib/object",
- "firebug/editor/editor",
-],
-function(FirebugReps, Domplate, Locale, Dom, Win, Css, Str, Options, Menu, System, Xpcom, Obj) {
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-const removeConfirmation = "commandline.include.removeConfirmation";
-const prompts = Xpcom.CCSV("@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService");
-const storeFilename = "includeAliases.json";
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-var ScratchpadManager;
-
-try
-{
- var scope = {};
- Cu.import("resource:///modules/devtools/scratchpad-manager.jsm", scope);
- ScratchpadManager = scope.ScratchpadManager;
-}
-catch(ex)
-{
- // Scratchpad does not exists (when using Seamonkey ...)
-}
-
-var storageScope = {}, StorageService;
-Cu.import("resource://firebug/storageService.js", storageScope);
-StorageService = storageScope.StorageService;
-
-var defaultAliases = {
- "jquery": "http://code.jquery.com/jquery-latest.js"
-};
-
-// ********************************************************************************************* //
-// Implementation
-
-var CommandLineIncludeRep = domplate(FirebugReps.Table,
-{
- tableClassName: "tableCommandLineInclude dataTable",
-
- tag:
- FirebugReps.OBJECTBOX({_repObject: "$object"},
- FirebugReps.Table.tag
- ),
-
- inspectable: false,
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Domplate Handlers
-
- getValueTag: function(object)
- {
- if (object.cons === DomplateTag)
- return object;
- else
- return FirebugReps.Table.getValueTag(object);
- },
-
- getUrlTag: function(href, aliasName)
- {
- var urlTag =
- SPAN({style:"height:100%"},
- A({"href": href, "target": "_blank", "class": "url"},
- Str.cropString(href, 100)
- ),
- SPAN({"class": "commands"}
- // xxxFlorent: temporarily disabled, see:
- // http://code.google.com/p/fbug/issues/detail?id=5878#c27
- /*,
- SPAN({
- "class":"closeButton",
- onclick: this.deleteAlias.bind(this, aliasName),
- })*/
- )
- );
-
- return urlTag;
- },
-
- displayAliases: function(context)
- {
- var store = CommandLineInclude.getStore();
- var keys = store.getKeys();
- var arrayToDisplay = [];
- var returnValue = Firebug.Console.getDefaultReturnValue();
-
- if (keys.length === 0)
- {
- var msg = Locale.$STR("commandline.include.noDefinedAlias");
- Firebug.Console.log(msg, context, null, FirebugReps.Hint);
- return returnValue;
- }
-
- for (var i=0; i<keys.length; i++)
- {
- var aliasName = keys[i];
- arrayToDisplay.push({
- "alias": SPAN({"class":"aliasName", "data-aliasname": aliasName}, aliasName),
- "URL": this.getUrlTag(store.getItem(aliasName), aliasName, context)
- });
- }
-
- var input = new CommandLineIncludeObject();
- this.log(arrayToDisplay, ["alias", "URL"], context, input);
- return returnValue;
- },
-
- deleteAlias: function(aliasName, ev)
- {
- // NOTE: that piece of code has not been tested since deleting aliases through the table
- // has been disabled.
- // Once it is enabled again, make sure FBTests is available for this feature
- var store = CommandLineInclude.getStore();
- if (!Options.get(removeConfirmation))
- {
- var check = {value: false};
- var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_YES +
- prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_NO;
-
- if (prompts.confirmEx(context.chrome.window, Locale.$STR("Firebug"),
- Locale.$STR("commandline.include.confirmDelete"), flags, "", "", "",
- Locale.$STR("Do_not_show_this_message_again"), check) > 0)
- {
- return;
- }
-
- // Update 'Remove Cookies' confirmation option according to the value
- // of the dialog's "do not show again" checkbox.
- Options.set(removeConfirmation, !check.value);
- }
- store.removeItem(aliasName);
- },
-
- startEditing: function(target)
- {
- var editor = this.getEditor(target.ownerDocument);
- Firebug.Editor.startEditing(target, target.dataset.aliasname, editor);
- },
-
- editAliasName: function(tr)
- {
- var target = tr.querySelector(".aliasName");
- this.startEditing(target);
- },
-
- editAliasURL: function(tr)
- {
- var target = tr.querySelector(".url");
- this.startEditing(target);
- },
-
- openInScratchpad: function(url)
- {
- var spWin = ScratchpadManager.openScratchpad();
- var scriptContent = null;
- var editor = null;
-
- spWin.onload = function()
- {
- var spInstance = spWin.Scratchpad;
- //intro = spInstance.strings.GetStringFromName("scratchpadIntro");
- spInstance.addObserver(
- {
- onReady: function()
- {
- editor = spInstance.editor;
-
- // if the content of the script is loaded, we write the content in the editor
- // otherwise, we write a text that asks the user to wait
- if (scriptContent)
- editor.setText(scriptContent);
- else
- editor.setText("// "+Locale.$STR("scratchpad.loading"));
- }
- });
- };
-
- var xhr = new XMLHttpRequest({mozAnon: true});
- xhr.open("GET", url, true);
-
- xhr.onload = function()
- {
- if (spWin.closed)
- return;
-
- scriptContent = xhr.responseText;
-
- // if the editor is ready, we put the content on it now
- // otherwise, we wait for the editor
- if (editor)
- editor.setText(scriptContent);
- };
-
- xhr.onerror = function()
- {
- if (spWin.closed)
- return;
-
- spInstance.setText("// "+Locale.$STR("scratchpad.failLoading"));
- };
-
- xhr.send(null);
- },
-
- supportsObject: function(object, type)
- {
- return object instanceof CommandLineIncludeObject;
- },
-
- getContextMenuItems: function(object, target, context)
- {
- var tr = Dom.getAncestorByTagName(target, "tr");
- if (!tr)
- return [];
-
- var url = tr.querySelector("a.url").href;
- var aliasName = tr.querySelector(".aliasName").dataset.aliasname;
- var context = Firebug.currentContext;
- var items = [
- {
- label: "CopyLocation",
- id: "fbCopyLocation",
- tooltiptext: "clipboard.tip.Copy_Location",
- command: Obj.bindFixed(System.copyToClipboard, System, url)
- },
- // xxxFlorent: temporarily disabled, see:
- // http://code.google.com/p/fbug/issues/detail?id=5878#c27
- /*"-",
- {
- label: "commandline.label.EditAliasName",
- id: "fbEditAliasName",
- tooltiptext: "commandline.tip.Edit_Alias_Name",
- command: this.editAliasName.bind(this, tr)
- },
- {
- label: "commandline.label.EditAliasURL",
- id: "fbEditAliasUrl",
- tooltiptext: "commandline.tip.Edit_Alias_URL",
- command: this.editAliasURL.bind(this, tr)
- },
- {
- label: "commandline.label.DeleteAlias",
- id: "fbDeleteAlias",
- tooltiptext: "commandline.tip.Delete_Alias",
- command: this.deleteAlias.bind(this, aliasName, ev)
- },*/
- "-",
- {
- label: Locale.$STRF("commandline.label.IncludeScript", [aliasName]),
- id: "fbInclude",
- tooltiptext: "commandline.tip.Include_Script",
- command: Obj.bindFixed(CommandLineInclude.include, CommandLineInclude,
- context, aliasName)
- },
- "-",
- {
- label: "OpenInTab",
- id: "fbOpenInTab",
- tooltiptext: "firebug.tip.Open_In_Tab",
- command: Obj.bindFixed(Win.openNewTab, Win, url)
- }
- ];
-
- if (ScratchpadManager)
- {
- items.push({
- label: "commandline.label.OpenInScratchpad",
- id: "fbOpenInScratchpad",
- tooltiptext: "commandline.tip.Open_In_Scratchpad",
- command: this.openInScratchpad.bind(this, url)
- });
- }
-
- return items;
- },
-
- getEditor: function(doc)
- {
- if (!this.editor)
- this.editor = new IncludeEditor(doc);
- return this.editor;
- }
-});
-
-// ********************************************************************************************* //
-
-function CommandLineIncludeObject()
-{
-}
-
-// ********************************************************************************************* //
-
-var CommandLineInclude = Obj.extend(Firebug.Module,
-{
- onSuccess: function(newAlias, context, loadingMsgRow, xhr, hasWarnings)
- {
- var urlComponent = xhr.channel.URI.QueryInterface(Ci.nsIURL);
- var filename = urlComponent.fileName, url = urlComponent.spec;
- // clear the message saying "loading..."
- this.clearLoadingMessage(loadingMsgRow);
-
- if (newAlias)
- {
- var store = this.getStore();
- store.setItem(newAlias, url);
- this.log("aliasCreated", [newAlias], [context, "info"]);
- }
-
- if (!hasWarnings)
- this.log("includeSuccess", [filename], [context, "info", true]);
- },
-
- onError: function(context, url, loadingMsgRow)
- {
- this.clearLoadingMessage(loadingMsgRow);
- this.log("loadFail", [url], [context, "error"]);
- },
-
- clearLoadingMessage: function(loadingMsgRow)
- {
- if (loadingMsgRow && loadingMsgRow.parentNode)
- loadingMsgRow.parentNode.removeChild(loadingMsgRow);
- },
-
- getStore: function()
- {
- if (!this.store)
- {
- var isNewStore = !StorageService.hasStorage(storeFilename);
- // Pass also the parent window to the new storage. The window will be
- // used to figure out whether the browser is running in private mode.
- // If yes, no data will be persisted.
- this.store = StorageService.getStorage(storeFilename,
- Firebug.chrome.window);
-
- // If the file did not exist, we put in there the default aliases.
- if (isNewStore)
- {
- for (var alias in defaultAliases)
- this.store.setItem(alias, defaultAliases[alias]);
- }
- }
-
- // Let's log when the store could not be opened.
- if (!this.store)
- {
- if (FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("CommandLineInclude.getStore; can't open or create the store");
- }
-
- return this.store;
- },
-
- log: function(localeStr, localeArgs, logArgs, noAutoPrefix)
- {
- var prefixedLocaleStr = (noAutoPrefix ? localeStr : "commandline.include."+localeStr);
-
- var msg = Locale.$STRF(prefixedLocaleStr, localeArgs);
- logArgs.unshift([msg]);
- return Firebug.Console.logFormatted.apply(Firebug.Console, logArgs);
- },
-
- // include(context, url[, newAlias])
- // includes a remote script
- include: function(context, url, newAlias)
- {
- var reNotAlias = /[\.\/]/;
- var urlIsAlias = url !== null && !reNotAlias.test(url);
- var returnValue = Firebug.Console.getDefaultReturnValue();
-
- // checking arguments:
- if ((newAlias !== undefined && typeof newAlias !== "string") || newAlias === "")
- {
- this.log("invalidAliasArgumentType", [], [context, "error"]);
- return returnValue;
- }
-
- if (url !== null && typeof url !== "string" || !url && !newAlias)
- {
- this.log("invalidUrlArgumentType", [], [context, "error"]);
- return returnValue;
- }
-
- if (newAlias !== undefined)
- newAlias = newAlias.toLowerCase();
-
- if ((urlIsAlias && url.length > 30) || (newAlias && newAlias.length > 30))
- {
- this.log("tooLongAliasName", [newAlias || url], [context, "error"]);
- return returnValue;
- }
-
- if (newAlias !== undefined && reNotAlias.test(newAlias))
- {
- this.log("invalidAliasName", [newAlias], [context, "error"]);
- return returnValue;
- }
-
- if (urlIsAlias)
- {
- var store = this.getStore();
- var aliasName = url.toLowerCase();
- url = store.getItem(aliasName);
- if (url === undefined)
- {
- this.log("aliasNotFound", [aliasName], [context, "error"]);
- return returnValue;
- }
- }
-
- // if the URL is null, we delete the alias
- if (newAlias !== undefined && url === null)
- {
- var store = this.getStore();
- if (store.getItem(newAlias) === undefined)
- {
- this.log("aliasNotFound", [newAlias], [context, "error"]);
- return returnValue;
- }
-
- store.removeItem(newAlias);
- this.log("aliasRemoved", [newAlias], [context, "info"]);
- return returnValue;
- }
- var loadingMsgRow = this.log("Loading", [], [context, "loading", true], true);
- var onSuccess = this.onSuccess.bind(this, newAlias, context, loadingMsgRow);
- var onError = Obj.bindFixed(this.onError, this, context, url, loadingMsgRow);
- this.evaluateRemoteScript(url, context, onSuccess, onError, loadingMsgRow);
-
- return returnValue;
- },
-
- evaluateRemoteScript: function(url, context, successFunction, errorFunction, loadingMsgRow)
- {
- var xhr = new XMLHttpRequest({ mozAnon: true, timeout:30});
- var acceptedSchemes = ["http", "https"];
- var absoluteURL = context.browser.currentURI.resolve(url);
-
- xhr.onload = function()
- {
- if (xhr.status !== 200)
- return errorFunction.apply(this, arguments);
- var codeToEval = xhr.responseText;
- var hasWarnings = false;
-
- // test if the content is an HTML file, which is the most current after a mistake
- if (!isValidJS(codeToEval))
- {
- CommandLineInclude.log("invalidSyntax", [], [context, "warn"]);
- CommandLineInclude.clearLoadingMessage(loadingMsgRow);
- hasWarnings = true;
- }
-
- Firebug.CommandLine.evaluateInWebPage(codeToEval, context);
- if (successFunction)
- successFunction(xhr, hasWarnings);
- };
-
- if (errorFunction)
- {
- xhr.ontimeout = xhr.onerror = errorFunction;
- }
-
- try
- {
- xhr.open("GET", absoluteURL, true);
- }
- catch(ex)
- {
- this.clearLoadingMessage(loadingMsgRow);
- if (ex.name === "NS_ERROR_UNKNOWN_PROTOCOL")
- {
- this.log("invalidRequestProtocol", [], [context, "error"]);
- return;
- }
- throw ex;
- }
-
- if (!~acceptedSchemes.indexOf(xhr.channel.URI.scheme))
- {
- this.log("invalidRequestProtocol", [], [context, "error"]);
- this.clearLoadingMessage(loadingMsgRow);
- return;
- }
-
- xhr.send(null);
-
- // xxxFlorent: TODO show XHR progress
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Module events:
-
- resetAllOptions: function()
- {
- if (StorageService.hasStorage(storeFilename))
- {
- StorageService.removeStorage(storeFilename);
- this.store = null;
- }
- }
-});
-
-// ********************************************************************************************* //
-// Command Handler
-
-function onCommand(context, args)
-{
- if (args.length === 0)
- return CommandLineIncludeRep.displayAliases(context);
-
- var self = CommandLineInclude;
- Array.unshift(args, context);
- return CommandLineInclude.include.apply(self, args);
-}
-
-// ********************************************************************************************* //
-// Local Helpers
-
-function IncludeEditor(doc)
-{
- Firebug.InlineEditor.call(this, doc);
-}
-
-IncludeEditor.prototype = domplate(Firebug.InlineEditor.prototype,
-{
- endEditing: function(target, value, cancel)
- {
- if (cancel)
- return;
-
- var context = Firebug.currentContext;
- if (Css.hasClass(target, "aliasName"))
- this.updateAliasName(target, value, context);
- else if (Css.hasClass(target, "url"))
- this.updateURL(target, value, context);
- },
-
- updateURL: function(target, value, context)
- {
- var tr = Dom.getAncestorByTagName(target, "tr");
- var aliasName = tr.querySelector(".aliasName").textContent;
- CommandLineInclude.include(context, value, aliasName, {"onlyUpdate":true});
- target.textContent = value;
- },
-
- updateAliasName: function(target, value, context)
- {
- var oldAliasName = target.textContent;
- var store = CommandLineInclude.getStore();
- var url = store.getItem(oldAliasName);
- store.removeItem(oldAliasName);
- store.setItem(value, url);
- target.dataset.aliasname = value;
- target.textContent = value;
- }
-});
-
-function isValidJS(codeToCheck)
-{
- try
- {
- new Function(codeToCheck);
- return true;
- }
- catch(ex)
- {
- if (ex instanceof SyntaxError)
- return false;
- else
- throw ex;
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerCommand("include", {
- handler: onCommand,
- description: Locale.$STR("console.cmd.help.include"),
- helpUrl: "http://getfirebug.com/wiki/index.php/include"
-});
-
-Firebug.registerRep(CommandLineIncludeRep);
-
-Firebug.registerModule(CommandLineInclude);
-
-return CommandLineInclude;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/chrome/reps",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/dom",
+ "firebug/chrome/window",
+ "firebug/lib/css",
+ "firebug/lib/string",
+ "firebug/lib/options",
+ "firebug/chrome/menu",
+ "firebug/lib/system",
+ "firebug/lib/xpcom",
+ "firebug/lib/object",
+ "firebug/editor/editor",
+],
+function(FirebugReps, Domplate, Locale, Dom, Win, Css, Str, Options, Menu, System, Xpcom, Obj) {
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+const removeConfirmation = "commandline.include.removeConfirmation";
+const prompts = Xpcom.CCSV("@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService");
+const storeFilename = "includeAliases.json";
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+var ScratchpadManager;
+
+try
+{
+ var scope = {};
+ Cu.import("resource:///modules/devtools/scratchpad-manager.jsm", scope);
+ ScratchpadManager = scope.ScratchpadManager;
+}
+catch(ex)
+{
+ // Scratchpad does not exists (when using Seamonkey ...)
+}
+
+var storageScope = {}, StorageService;
+Cu.import("resource://firebug/storageService.js", storageScope);
+StorageService = storageScope.StorageService;
+
+var defaultAliases = {
+ "jquery": "http://code.jquery.com/jquery-latest.js"
+};
+
+// ********************************************************************************************* //
+// Implementation
+
+var CommandLineIncludeRep = domplate(FirebugReps.Table,
+{
+ tableClassName: "tableCommandLineInclude dataTable",
+
+ tag:
+ FirebugReps.OBJECTBOX({_repObject: "$object"},
+ FirebugReps.Table.tag
+ ),
+
+ inspectable: false,
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Domplate Handlers
+
+ getValueTag: function(object)
+ {
+ if (object.cons === DomplateTag)
+ return object;
+ else
+ return FirebugReps.Table.getValueTag(object);
+ },
+
+ getUrlTag: function(href, aliasName)
+ {
+ var urlTag =
+ SPAN({style:"height:100%"},
+ A({"href": href, "target": "_blank", "class": "url"},
+ Str.cropString(href, 100)
+ ),
+ SPAN({"class": "commands"}
+ // xxxFlorent: temporarily disabled, see:
+ // http://code.google.com/p/fbug/issues/detail?id=5878#c27
+ /*,
+ SPAN({
+ "class":"closeButton",
+ onclick: this.deleteAlias.bind(this, aliasName),
+ })*/
+ )
+ );
+
+ return urlTag;
+ },
+
+ displayAliases: function(context)
+ {
+ var store = CommandLineInclude.getStore();
+ var keys = store.getKeys();
+ var arrayToDisplay = [];
+ var returnValue = Firebug.Console.getDefaultReturnValue();
+
+ if (keys.length === 0)
+ {
+ var msg = Locale.$STR("commandline.include.noDefinedAlias");
+ Firebug.Console.log(msg, context, null, FirebugReps.Hint);
+ return returnValue;
+ }
+
+ for (var i=0; i<keys.length; i++)
+ {
+ var aliasName = keys[i];
+ arrayToDisplay.push({
+ "alias": SPAN({"class":"aliasName", "data-aliasname": aliasName}, aliasName),
+ "URL": this.getUrlTag(store.getItem(aliasName), aliasName, context)
+ });
+ }
+
+ var input = new CommandLineIncludeObject();
+ this.log(arrayToDisplay, ["alias", "URL"], context, input);
+ return returnValue;
+ },
+
+ deleteAlias: function(aliasName, ev)
+ {
+ // NOTE: that piece of code has not been tested since deleting aliases through the table
+ // has been disabled.
+ // Once it is enabled again, make sure FBTests is available for this feature
+ var store = CommandLineInclude.getStore();
+ if (!Options.get(removeConfirmation))
+ {
+ var check = {value: false};
+ var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_YES +
+ prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_NO;
+
+ if (prompts.confirmEx(context.chrome.window, Locale.$STR("Firebug"),
+ Locale.$STR("commandline.include.confirmDelete"), flags, "", "", "",
+ Locale.$STR("Do_not_show_this_message_again"), check) > 0)
+ {
+ return;
+ }
+
+ // Update 'Remove Cookies' confirmation option according to the value
+ // of the dialog's "do not show again" checkbox.
+ Options.set(removeConfirmation, !check.value);
+ }
+ store.removeItem(aliasName);
+ },
+
+ startEditing: function(target)
+ {
+ var editor = this.getEditor(target.ownerDocument);
+ Firebug.Editor.startEditing(target, target.dataset.aliasname, editor);
+ },
+
+ editAliasName: function(tr)
+ {
+ var target = tr.querySelector(".aliasName");
+ this.startEditing(target);
+ },
+
+ editAliasURL: function(tr)
+ {
+ var target = tr.querySelector(".url");
+ this.startEditing(target);
+ },
+
+ openInScratchpad: function(url)
+ {
+ var spWin = ScratchpadManager.openScratchpad();
+ var scriptContent = null;
+ var editor = null;
+
+ spWin.onload = function()
+ {
+ var spInstance = spWin.Scratchpad;
+ //intro = spInstance.strings.GetStringFromName("scratchpadIntro");
+ spInstance.addObserver(
+ {
+ onReady: function()
+ {
+ editor = spInstance.editor;
+
+ // if the content of the script is loaded, we write the content in the editor
+ // otherwise, we write a text that asks the user to wait
+ if (scriptContent)
+ editor.setText(scriptContent);
+ else
+ editor.setText("// "+Locale.$STR("scratchpad.loading"));
+ }
+ });
+ };
+
+ var xhr = new XMLHttpRequest({mozAnon: true});
+ xhr.open("GET", url, true);
+
+ xhr.onload = function()
+ {
+ if (spWin.closed)
+ return;
+
+ scriptContent = xhr.responseText;
+
+ // if the editor is ready, we put the content on it now
+ // otherwise, we wait for the editor
+ if (editor)
+ editor.setText(scriptContent);
+ };
+
+ xhr.onerror = function()
+ {
+ if (spWin.closed)
+ return;
+
+ spInstance.setText("// "+Locale.$STR("scratchpad.failLoading"));
+ };
+
+ xhr.send(null);
+ },
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof CommandLineIncludeObject;
+ },
+
+ getContextMenuItems: function(object, target, context)
+ {
+ var tr = Dom.getAncestorByTagName(target, "tr");
+ if (!tr)
+ return [];
+
+ var url = tr.querySelector("a.url").href;
+ var aliasName = tr.querySelector(".aliasName").dataset.aliasname;
+ var context = Firebug.currentContext;
+ var items = [
+ {
+ label: "CopyLocation",
+ id: "fbCopyLocation",
+ tooltiptext: "clipboard.tip.Copy_Location",
+ command: Obj.bindFixed(System.copyToClipboard, System, url)
+ },
+ // xxxFlorent: temporarily disabled, see:
+ // http://code.google.com/p/fbug/issues/detail?id=5878#c27
+ /*"-",
+ {
+ label: "commandline.label.EditAliasName",
+ id: "fbEditAliasName",
+ tooltiptext: "commandline.tip.Edit_Alias_Name",
+ command: this.editAliasName.bind(this, tr)
+ },
+ {
+ label: "commandline.label.EditAliasURL",
+ id: "fbEditAliasUrl",
+ tooltiptext: "commandline.tip.Edit_Alias_URL",
+ command: this.editAliasURL.bind(this, tr)
+ },
+ {
+ label: "commandline.label.DeleteAlias",
+ id: "fbDeleteAlias",
+ tooltiptext: "commandline.tip.Delete_Alias",
+ command: this.deleteAlias.bind(this, aliasName, ev)
+ },*/
+ "-",
+ {
+ label: Locale.$STRF("commandline.label.IncludeScript", [aliasName]),
+ id: "fbInclude",
+ tooltiptext: "commandline.tip.Include_Script",
+ command: Obj.bindFixed(CommandLineInclude.include, CommandLineInclude,
+ context, aliasName)
+ },
+ "-",
+ {
+ label: "OpenInTab",
+ id: "fbOpenInTab",
+ tooltiptext: "firebug.tip.Open_In_Tab",
+ command: Obj.bindFixed(Win.openNewTab, Win, url)
+ }
+ ];
+
+ if (ScratchpadManager)
+ {
+ items.push({
+ label: "commandline.label.OpenInScratchpad",
+ id: "fbOpenInScratchpad",
+ tooltiptext: "commandline.tip.Open_In_Scratchpad",
+ command: this.openInScratchpad.bind(this, url)
+ });
+ }
+
+ return items;
+ },
+
+ getEditor: function(doc)
+ {
+ if (!this.editor)
+ this.editor = new IncludeEditor(doc);
+ return this.editor;
+ }
+});
+
+// ********************************************************************************************* //
+
+function CommandLineIncludeObject()
+{
+}
+
+// ********************************************************************************************* //
+
+var CommandLineInclude = Obj.extend(Firebug.Module,
+{
+ onSuccess: function(newAlias, context, loadingMsgRow, xhr, hasWarnings)
+ {
+ var urlComponent = xhr.channel.URI.QueryInterface(Ci.nsIURL);
+ var filename = urlComponent.fileName, url = urlComponent.spec;
+ // clear the message saying "loading..."
+ this.clearLoadingMessage(loadingMsgRow);
+
+ if (newAlias)
+ {
+ var store = this.getStore();
+ store.setItem(newAlias, url);
+ this.log("aliasCreated", [newAlias], [context, "info"]);
+ }
+
+ if (!hasWarnings)
+ this.log("includeSuccess", [filename], [context, "info", true]);
+ },
+
+ onError: function(context, url, loadingMsgRow)
+ {
+ this.clearLoadingMessage(loadingMsgRow);
+ this.log("loadFail", [url], [context, "error"]);
+ },
+
+ clearLoadingMessage: function(loadingMsgRow)
+ {
+ if (loadingMsgRow && loadingMsgRow.parentNode)
+ loadingMsgRow.parentNode.removeChild(loadingMsgRow);
+ },
+
+ getStore: function()
+ {
+ if (!this.store)
+ {
+ var isNewStore = !StorageService.hasStorage(storeFilename);
+ // Pass also the parent window to the new storage. The window will be
+ // used to figure out whether the browser is running in private mode.
+ // If yes, no data will be persisted.
+ this.store = StorageService.getStorage(storeFilename,
+ Firebug.chrome.window);
+
+ // If the file did not exist, we put in there the default aliases.
+ if (isNewStore)
+ {
+ for (var alias in defaultAliases)
+ this.store.setItem(alias, defaultAliases[alias]);
+ }
+ }
+
+ // Let's log when the store could not be opened.
+ if (!this.store)
+ {
+ if (FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("CommandLineInclude.getStore; can't open or create the store");
+ }
+
+ return this.store;
+ },
+
+ log: function(localeStr, localeArgs, logArgs, noAutoPrefix)
+ {
+ var prefixedLocaleStr = (noAutoPrefix ? localeStr : "commandline.include."+localeStr);
+
+ var msg = Locale.$STRF(prefixedLocaleStr, localeArgs);
+ logArgs.unshift([msg]);
+ return Firebug.Console.logFormatted.apply(Firebug.Console, logArgs);
+ },
+
+ // include(context, url[, newAlias])
+ // includes a remote script
+ include: function(context, url, newAlias)
+ {
+ var reNotAlias = /[\.\/]/;
+ var urlIsAlias = url !== null && !reNotAlias.test(url);
+ var returnValue = Firebug.Console.getDefaultReturnValue();
+
+ // checking arguments:
+ if ((newAlias !== undefined && typeof newAlias !== "string") || newAlias === "")
+ {
+ this.log("invalidAliasArgumentType", [], [context, "error"]);
+ return returnValue;
+ }
+
+ if (url !== null && typeof url !== "string" || !url && !newAlias)
+ {
+ this.log("invalidUrlArgumentType", [], [context, "error"]);
+ return returnValue;
+ }
+
+ if (newAlias !== undefined)
+ newAlias = newAlias.toLowerCase();
+
+ if ((urlIsAlias && url.length > 30) || (newAlias && newAlias.length > 30))
+ {
+ this.log("tooLongAliasName", [newAlias || url], [context, "error"]);
+ return returnValue;
+ }
+
+ if (newAlias !== undefined && reNotAlias.test(newAlias))
+ {
+ this.log("invalidAliasName", [newAlias], [context, "error"]);
+ return returnValue;
+ }
+
+ if (urlIsAlias)
+ {
+ var store = this.getStore();
+ var aliasName = url.toLowerCase();
+ url = store.getItem(aliasName);
+ if (url === undefined)
+ {
+ this.log("aliasNotFound", [aliasName], [context, "error"]);
+ return returnValue;
+ }
+ }
+
+ // if the URL is null, we delete the alias
+ if (newAlias !== undefined && url === null)
+ {
+ var store = this.getStore();
+ if (store.getItem(newAlias) === undefined)
+ {
+ this.log("aliasNotFound", [newAlias], [context, "error"]);
+ return returnValue;
+ }
+
+ store.removeItem(newAlias);
+ this.log("aliasRemoved", [newAlias], [context, "info"]);
+ return returnValue;
+ }
+ var loadingMsgRow = this.log("Loading", [], [context, "loading", true], true);
+ var onSuccess = this.onSuccess.bind(this, newAlias, context, loadingMsgRow);
+ var onError = Obj.bindFixed(this.onError, this, context, url, loadingMsgRow);
+ this.evaluateRemoteScript(url, context, onSuccess, onError, loadingMsgRow);
+
+ return returnValue;
+ },
+
+ evaluateRemoteScript: function(url, context, successFunction, errorFunction, loadingMsgRow)
+ {
+ var xhr = new XMLHttpRequest({ mozAnon: true, timeout:30});
+ var acceptedSchemes = ["http", "https"];
+ var absoluteURL = context.browser.currentURI.resolve(url);
+
+ xhr.onload = function()
+ {
+ if (xhr.status !== 200)
+ return errorFunction.apply(this, arguments);
+ var codeToEval = xhr.responseText;
+ var hasWarnings = false;
+
+ // test if the content is an HTML file, which is the most current after a mistake
+ if (!isValidJS(codeToEval))
+ {
+ CommandLineInclude.log("invalidSyntax", [], [context, "warn"]);
+ CommandLineInclude.clearLoadingMessage(loadingMsgRow);
+ hasWarnings = true;
+ }
+
+ Firebug.CommandLine.evaluateInWebPage(codeToEval, context);
+ if (successFunction)
+ successFunction(xhr, hasWarnings);
+ };
+
+ if (errorFunction)
+ {
+ xhr.ontimeout = xhr.onerror = errorFunction;
+ }
+
+ try
+ {
+ xhr.open("GET", absoluteURL, true);
+ }
+ catch(ex)
+ {
+ this.clearLoadingMessage(loadingMsgRow);
+ if (ex.name === "NS_ERROR_UNKNOWN_PROTOCOL")
+ {
+ this.log("invalidRequestProtocol", [], [context, "error"]);
+ return;
+ }
+ throw ex;
+ }
+
+ if (!~acceptedSchemes.indexOf(xhr.channel.URI.scheme))
+ {
+ this.log("invalidRequestProtocol", [], [context, "error"]);
+ this.clearLoadingMessage(loadingMsgRow);
+ return;
+ }
+
+ xhr.send(null);
+
+ // xxxFlorent: TODO show XHR progress
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Module events:
+
+ resetAllOptions: function()
+ {
+ if (StorageService.hasStorage(storeFilename))
+ {
+ StorageService.removeStorage(storeFilename);
+ this.store = null;
+ }
+ }
+});
+
+// ********************************************************************************************* //
+// Command Handler
+
+function onCommand(context, args)
+{
+ if (args.length === 0)
+ return CommandLineIncludeRep.displayAliases(context);
+
+ var self = CommandLineInclude;
+ Array.unshift(args, context);
+ return CommandLineInclude.include.apply(self, args);
+}
+
+// ********************************************************************************************* //
+// Local Helpers
+
+function IncludeEditor(doc)
+{
+ Firebug.InlineEditor.call(this, doc);
+}
+
+IncludeEditor.prototype = domplate(Firebug.InlineEditor.prototype,
+{
+ endEditing: function(target, value, cancel)
+ {
+ if (cancel)
+ return;
+
+ var context = Firebug.currentContext;
+ if (Css.hasClass(target, "aliasName"))
+ this.updateAliasName(target, value, context);
+ else if (Css.hasClass(target, "url"))
+ this.updateURL(target, value, context);
+ },
+
+ updateURL: function(target, value, context)
+ {
+ var tr = Dom.getAncestorByTagName(target, "tr");
+ var aliasName = tr.querySelector(".aliasName").textContent;
+ CommandLineInclude.include(context, value, aliasName, {"onlyUpdate":true});
+ target.textContent = value;
+ },
+
+ updateAliasName: function(target, value, context)
+ {
+ var oldAliasName = target.textContent;
+ var store = CommandLineInclude.getStore();
+ var url = store.getItem(oldAliasName);
+ store.removeItem(oldAliasName);
+ store.setItem(value, url);
+ target.dataset.aliasname = value;
+ target.textContent = value;
+ }
+});
+
+function isValidJS(codeToCheck)
+{
+ try
+ {
+ new Function(codeToCheck);
+ return true;
+ }
+ catch(ex)
+ {
+ if (ex instanceof SyntaxError)
+ return false;
+ else
+ throw ex;
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerCommand("include", {
+ handler: onCommand,
+ description: Locale.$STR("console.cmd.help.include"),
+ helpUrl: "http://getfirebug.com/wiki/index.php/include"
+});
+
+Firebug.registerRep(CommandLineIncludeRep);
+
+Firebug.registerModule(CommandLineInclude);
+
+return CommandLineInclude;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/console/commands/eventMonitor.js b/content/firebug/console/commands/eventMonitor.js
index 6b30ef6..b9f2e26 100644
--- a/content/firebug/console/commands/eventMonitor.js
+++ b/content/firebug/console/commands/eventMonitor.js
@@ -1,412 +1,412 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/trace",
- "firebug/lib/events",
- "firebug/lib/locale",
- "firebug/lib/dom",
- "firebug/lib/domplate",
- "firebug/chrome/reps",
- "firebug/chrome/menu",
-],
-function(Obj, Firebug, FBTrace, Events, Locale, Dom, Domplate, FirebugReps, Menu) {
-
-// ********************************************************************************************* //
-// EventMonitor Module
-
-var EventMonitor = Obj.extend(Firebug.Module,
-{
- dispatchName: "eventMonitor",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Module
-
- initialize: function()
- {
- Firebug.Module.initialize.apply(this, arguments);
- Firebug.registerUIListener(this);
- },
-
- shutdown: function()
- {
- Firebug.unregisterUIListener(this);
- Firebug.Module.shutdown.apply(this, arguments);
- },
-
- destroyContext: function(context, persistedState)
- {
- // Clean up all existing monitors.
- var monitoredEvents = context.monitoredEvents;
- if (monitoredEvents)
- {
- for (var i=0; i<monitoredEvents.length; ++i)
- {
- var m = monitoredEvents[i];
-
- if (!m.type)
- Events.detachAllListeners(m.object, context.onMonitorEvent, context);
- else
- Events.removeEventListener(m.object, m.type, context.onMonitorEvent, false);
- }
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Event Monitor
-
- toggleMonitorEvents: function(object, types, monitor, context)
- {
- if (monitor)
- this.monitorEvents(object, types, context);
- else
- this.unmonitorEvents(object, types, context);
- },
-
- monitorEvents: function(object, types, context)
- {
- if (object && object.addEventListener)
- {
- if (!context.onMonitorEvent)
- {
- var self = this;
- context.onMonitorEvent = function(event) {
- self.onMonitorEvent(event, context);
- };
- }
-
- if (!context.monitoredEvents)
- context.monitoredEvents = new Map();
-
- var monitoredEvents = context.monitoredEvents;
- var eventTypes = getMonitoredEventTypes(types);
-
- if (FBTrace.DBG_EVENTS)
- FBTrace.sysout("EventMonitor.monitorEvents", eventTypes);
-
- if (!context.monitoredEvents.has(object))
- context.monitoredEvents.set(object, new Set());
-
- var monitoredEventTypes = monitoredEvents.get(object);
- for (var i = 0, len = eventTypes.length; i < len; ++i)
- {
- if (!this.areEventsMonitored(object, eventTypes[i], context))
- {
- Events.addEventListener(object, eventTypes[i], context.onMonitorEvent, false);
- monitoredEventTypes.add(eventTypes[i]);
- }
- }
- }
- },
-
- unmonitorEvents: function(object, types, context)
- {
- var monitoredEvents = context.monitoredEvents;
-
- if (!monitoredEvents)
- return;
-
- var eventTypes = getMonitoredEventTypes(types);
-
- if (FBTrace.DBG_EVENTS)
- FBTrace.sysout("EventMonitor.unmonitorEvents", eventTypes);
-
- if (object)
- {
- if (monitoredEvents.has(object))
- {
- var monitoredObjectEvents = monitoredEvents.get(object);
- for (var i = 0, len = eventTypes.length; i < len; ++i)
- {
- if (monitoredObjectEvents.has(eventTypes[i]))
- {
- Events.removeEventListener(object, eventTypes[i],
- context.onMonitorEvent, false);
- monitoredObjectEvents["delete"](eventTypes[i]);
- }
- }
- }
- }
- },
-
- areEventsMonitored: function(object, types, context, allMonitored)
- {
- var monitoredEvents = context.monitoredEvents;
- if (!monitoredEvents)
- {
- if (FBTrace.DBG_EVENTS)
- FBTrace.sysout("EventMonitor.areEventsMonitored - No events monitored", object);
-
- return false;
- }
-
- var eventTypes = getMonitoredEventTypes(types);
- var monitoredObjectEvents = monitoredEvents.get(object);
- if (!monitoredObjectEvents)
- return;
-
- if (typeof allMonitored == "undefined")
- allMonitored = true;
-
- for (var i = 0, len = eventTypes.length; i < len; ++i)
- {
- var monitored = monitoredObjectEvents.has(eventTypes[i]);
-
- if (!monitored)
- {
- if (FBTrace.DBG_EVENTS)
- {
- FBTrace.sysout("EventMonitor.areEventsMonitored - Events not monitored for '" +
- eventTypes[i] + "'");
- }
-
- if (allMonitored)
- return false;
- }
- else
- {
- if (FBTrace.DBG_EVENTS)
- {
- FBTrace.sysout("EventMonitor.areEventsMonitored - Events monitored for '" +
- eventTypes[i] + "'");
- }
-
- if (!allMonitored)
- return true;
- }
- }
-
- return allMonitored;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Logging
-
- onMonitorEvent: function(event, context)
- {
- var obj = new EventLog(event);
- Firebug.Console.log(obj, context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // UI Listener
-
- onContextMenu: function(items, object, target, context, panel, popup)
- {
- if (panel.name != "html")
- return items;
-
- var before = popup.querySelector("#fbScrollIntoView");
- if (!before)
- return items;
-
- var elt = object;
-
- // Create sub-menu-items for "Log Event"
- var logEventItems = [];
- var eventFamilies = Events.getEventFamilies();
- for (var i=0, count=eventFamilies.length; i<count; ++i)
- {
- var family = eventFamilies[i];
-
- // Compose a tooltip for the menu item.
- var tooltipText = "Monitor " + eventFamilies[i] + " events:";
- var types = Events.getEventTypes(family);
- tooltipText += "\n" + types.join(", ");
-
- // xxxHonza: there could be a helper for getting the CSS selector
- var Element = FirebugReps.Element;
- var selector = Element.getSelectorTag(elt) +
- Element.getSelectorId(elt) +
- Element.getSelectorClass(elt);
-
- // xxxHonza: localization?
- tooltipText += "\n\nCommand Line Example:\n" +
- "monitorEvents($('" + selector + "'), '" + family + "')";
-
- logEventItems.push({
- nol10n: true,
- label: Locale.$STR(family),
- tooltiptext: tooltipText,
- id: "monitor" + family + "Events",
- type: "checkbox",
- checked: this.areEventsMonitored(elt, family, context),
- command: Obj.bind(this.onToggleMonitorEvents, this, elt, family, context)
- });
- }
-
- function onCommand(event)
- {
- Events.cancelEvent(event);
-
- var checked = this.areEventsMonitored(elt, null, context, false);
- this.toggleMonitorEvents(elt, null, !checked, context);
- }
-
- var item = {
- label: "ShowEventsInConsole",
- tooltiptext: "html.tip.Show_Events_In_Console",
- id: "fbShowEventsInConsole",
- type: "checkbox",
- checked: this.areEventsMonitored(elt, null, context, false),
- command: onCommand.bind(this),
- items: logEventItems
- };
-
- var logEventsItem = Menu.createMenuItem(popup, item, before);
- var separator = Menu.createMenuItem(popup, "-", before);
-
- return items;
- },
-
- onToggleMonitorEvents: function(event, elt, type, context)
- {
- var checked = event.target.getAttribute("checked") == "true";
- this.toggleMonitorEvents(elt, type, checked, context);
-
- Events.cancelEvent(event);
-
- // Toggle the main "Log Events" option depending on whether all events are monitored.
- var doc = event.target.ownerDocument;
- var logEvents = doc.getElementById("fbShowEventsInConsole");
- logEvents.setAttribute("checked", this.areEventsMonitored(elt, null, context, false));
- },
-});
-
-// ********************************************************************************************* //
-// Helpers
-
-function getMonitoredEventTypes(types)
-{
- var eventTypes = [];
- if (!types)
- {
- eventTypes = Events.getEventTypes();
- }
- else
- {
- if (typeof types == "string")
- {
- eventTypes = Events.isEventFamily(types) ? Events.getEventTypes(types) : [types];
- }
- else
- {
- for (var i = 0; i < types.length; ++i)
- {
- if (Events.isEventFamily(types[i]))
- {
- var familyEventTypes = Events.getEventTypes(types[i]);
- for (var j = 0; j < familyEventTypes.length; ++j)
- eventTypes.push(familyEventTypes[j]);
- }
- else
- {
- eventTypes.push(types[i]);
- }
- }
- }
- }
-
- return eventTypes;
-}
-
-// ********************************************************************************************* //
-// Rep Object
-
-var EventLog = function(event)
-{
- this.event = event;
-};
-
-// ********************************************************************************************* //
-// Rep Template
-
-with (Domplate) {
-var EventLogRep = domplate(FirebugReps.Event,
-{
- className: "eventLog",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- tag:
- TAG("$copyEventTag", {object: "$object|copyEvent"}),
-
- copyEventTag:
- SPAN(
- FirebugReps.OBJECTLINK("$object|summarizeEvent"),
- SPAN(" "),
- SPAN("»"),
- SPAN(" "),
- TAG("$object|getTargetTag", {object: "$object|getTarget"})
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- copyEvent: function(log)
- {
- return new Dom.EventCopy(log.event);
- },
-
- getTarget: function(event)
- {
- return event.target;
- },
-
- getTargetTag: function(event)
- {
- var rep = Firebug.getRep(event.target);
- return rep.shortTag ? rep.shortTag : rep.tag;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- supportsObject: function(object, type)
- {
- return object instanceof EventLog;
- },
-})};
-
-// ********************************************************************************************* //
-// CommandLine Support
-
-function monitorEvents(context, args)
-{
- var object = args[0];
- var types = args[1];
-
- EventMonitor.monitorEvents(object, types, context);
- return Firebug.Console.getDefaultReturnValue();
-}
-
-function unmonitorEvents(context, args)
-{
- var object = args[0];
- var types = args[1];
-
- EventMonitor.unmonitorEvents(object, types, context);
- return Firebug.Console.getDefaultReturnValue();
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(EventMonitor);
-Firebug.registerRep(EventLogRep);
-
-Firebug.registerCommand("monitorEvents", {
- handler: monitorEvents.bind(this),
- helpUrl: "http://getfirebug.com/wiki/index.php/monitorEvents",
- description: Locale.$STR("console.cmd.help.monitorEvents")
-});
-
-Firebug.registerCommand("unmonitorEvents", {
- handler: unmonitorEvents.bind(this),
- helpUrl: "http://getfirebug.com/wiki/index.php/unmonitorEvents",
- description: Locale.$STR("console.cmd.help.unmonitorEvents")
-});
-
-return EventMonitor;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/trace",
+ "firebug/lib/events",
+ "firebug/lib/locale",
+ "firebug/lib/dom",
+ "firebug/lib/domplate",
+ "firebug/chrome/reps",
+ "firebug/chrome/menu",
+],
+function(Obj, Firebug, FBTrace, Events, Locale, Dom, Domplate, FirebugReps, Menu) {
+
+// ********************************************************************************************* //
+// EventMonitor Module
+
+var EventMonitor = Obj.extend(Firebug.Module,
+{
+ dispatchName: "eventMonitor",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Module
+
+ initialize: function()
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+ Firebug.registerUIListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.unregisterUIListener(this);
+ Firebug.Module.shutdown.apply(this, arguments);
+ },
+
+ destroyContext: function(context, persistedState)
+ {
+ // Clean up all existing monitors.
+ var monitoredEvents = context.monitoredEvents;
+ if (monitoredEvents)
+ {
+ for (var i=0; i<monitoredEvents.length; ++i)
+ {
+ var m = monitoredEvents[i];
+
+ if (!m.type)
+ Events.detachAllListeners(m.object, context.onMonitorEvent, context);
+ else
+ Events.removeEventListener(m.object, m.type, context.onMonitorEvent, false);
+ }
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Event Monitor
+
+ toggleMonitorEvents: function(object, types, monitor, context)
+ {
+ if (monitor)
+ this.monitorEvents(object, types, context);
+ else
+ this.unmonitorEvents(object, types, context);
+ },
+
+ monitorEvents: function(object, types, context)
+ {
+ if (object && object.addEventListener)
+ {
+ if (!context.onMonitorEvent)
+ {
+ var self = this;
+ context.onMonitorEvent = function(event) {
+ self.onMonitorEvent(event, context);
+ };
+ }
+
+ if (!context.monitoredEvents)
+ context.monitoredEvents = new Map();
+
+ var monitoredEvents = context.monitoredEvents;
+ var eventTypes = getMonitoredEventTypes(types);
+
+ if (FBTrace.DBG_EVENTS)
+ FBTrace.sysout("EventMonitor.monitorEvents", eventTypes);
+
+ if (!context.monitoredEvents.has(object))
+ context.monitoredEvents.set(object, new Set());
+
+ var monitoredEventTypes = monitoredEvents.get(object);
+ for (var i = 0, len = eventTypes.length; i < len; ++i)
+ {
+ if (!this.areEventsMonitored(object, eventTypes[i], context))
+ {
+ Events.addEventListener(object, eventTypes[i], context.onMonitorEvent, false);
+ monitoredEventTypes.add(eventTypes[i]);
+ }
+ }
+ }
+ },
+
+ unmonitorEvents: function(object, types, context)
+ {
+ var monitoredEvents = context.monitoredEvents;
+
+ if (!monitoredEvents)
+ return;
+
+ var eventTypes = getMonitoredEventTypes(types);
+
+ if (FBTrace.DBG_EVENTS)
+ FBTrace.sysout("EventMonitor.unmonitorEvents", eventTypes);
+
+ if (object)
+ {
+ if (monitoredEvents.has(object))
+ {
+ var monitoredObjectEvents = monitoredEvents.get(object);
+ for (var i = 0, len = eventTypes.length; i < len; ++i)
+ {
+ if (monitoredObjectEvents.has(eventTypes[i]))
+ {
+ Events.removeEventListener(object, eventTypes[i],
+ context.onMonitorEvent, false);
+ monitoredObjectEvents["delete"](eventTypes[i]);
+ }
+ }
+ }
+ }
+ },
+
+ areEventsMonitored: function(object, types, context, allMonitored)
+ {
+ var monitoredEvents = context.monitoredEvents;
+ if (!monitoredEvents)
+ {
+ if (FBTrace.DBG_EVENTS)
+ FBTrace.sysout("EventMonitor.areEventsMonitored - No events monitored", object);
+
+ return false;
+ }
+
+ var eventTypes = getMonitoredEventTypes(types);
+ var monitoredObjectEvents = monitoredEvents.get(object);
+ if (!monitoredObjectEvents)
+ return;
+
+ if (typeof allMonitored == "undefined")
+ allMonitored = true;
+
+ for (var i = 0, len = eventTypes.length; i < len; ++i)
+ {
+ var monitored = monitoredObjectEvents.has(eventTypes[i]);
+
+ if (!monitored)
+ {
+ if (FBTrace.DBG_EVENTS)
+ {
+ FBTrace.sysout("EventMonitor.areEventsMonitored - Events not monitored for '" +
+ eventTypes[i] + "'");
+ }
+
+ if (allMonitored)
+ return false;
+ }
+ else
+ {
+ if (FBTrace.DBG_EVENTS)
+ {
+ FBTrace.sysout("EventMonitor.areEventsMonitored - Events monitored for '" +
+ eventTypes[i] + "'");
+ }
+
+ if (!allMonitored)
+ return true;
+ }
+ }
+
+ return allMonitored;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Logging
+
+ onMonitorEvent: function(event, context)
+ {
+ var obj = new EventLog(event);
+ Firebug.Console.log(obj, context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // UI Listener
+
+ onContextMenu: function(items, object, target, context, panel, popup)
+ {
+ if (panel.name != "html")
+ return items;
+
+ var before = popup.querySelector("#fbScrollIntoView");
+ if (!before)
+ return items;
+
+ var elt = object;
+
+ // Create sub-menu-items for "Log Event"
+ var logEventItems = [];
+ var eventFamilies = Events.getEventFamilies();
+ for (var i=0, count=eventFamilies.length; i<count; ++i)
+ {
+ var family = eventFamilies[i];
+
+ // Compose a tooltip for the menu item.
+ var tooltipText = "Monitor " + eventFamilies[i] + " events:";
+ var types = Events.getEventTypes(family);
+ tooltipText += "\n" + types.join(", ");
+
+ // xxxHonza: there could be a helper for getting the CSS selector
+ var Element = FirebugReps.Element;
+ var selector = Element.getSelectorTag(elt) +
+ Element.getSelectorId(elt) +
+ Element.getSelectorClass(elt);
+
+ // xxxHonza: localization?
+ tooltipText += "\n\nCommand Line Example:\n" +
+ "monitorEvents($('" + selector + "'), '" + family + "')";
+
+ logEventItems.push({
+ nol10n: true,
+ label: Locale.$STR(family),
+ tooltiptext: tooltipText,
+ id: "monitor" + family + "Events",
+ type: "checkbox",
+ checked: this.areEventsMonitored(elt, family, context),
+ command: Obj.bind(this.onToggleMonitorEvents, this, elt, family, context)
+ });
+ }
+
+ function onCommand(event)
+ {
+ Events.cancelEvent(event);
+
+ var checked = this.areEventsMonitored(elt, null, context, false);
+ this.toggleMonitorEvents(elt, null, !checked, context);
+ }
+
+ var item = {
+ label: "ShowEventsInConsole",
+ tooltiptext: "html.tip.Show_Events_In_Console",
+ id: "fbShowEventsInConsole",
+ type: "checkbox",
+ checked: this.areEventsMonitored(elt, null, context, false),
+ command: onCommand.bind(this),
+ items: logEventItems
+ };
+
+ var logEventsItem = Menu.createMenuItem(popup, item, before);
+ var separator = Menu.createMenuItem(popup, "-", before);
+
+ return items;
+ },
+
+ onToggleMonitorEvents: function(event, elt, type, context)
+ {
+ var checked = event.target.getAttribute("checked") == "true";
+ this.toggleMonitorEvents(elt, type, checked, context);
+
+ Events.cancelEvent(event);
+
+ // Toggle the main "Log Events" option depending on whether all events are monitored.
+ var doc = event.target.ownerDocument;
+ var logEvents = doc.getElementById("fbShowEventsInConsole");
+ logEvents.setAttribute("checked", this.areEventsMonitored(elt, null, context, false));
+ },
+});
+
+// ********************************************************************************************* //
+// Helpers
+
+function getMonitoredEventTypes(types)
+{
+ var eventTypes = [];
+ if (!types)
+ {
+ eventTypes = Events.getEventTypes();
+ }
+ else
+ {
+ if (typeof types == "string")
+ {
+ eventTypes = Events.isEventFamily(types) ? Events.getEventTypes(types) : [types];
+ }
+ else
+ {
+ for (var i = 0; i < types.length; ++i)
+ {
+ if (Events.isEventFamily(types[i]))
+ {
+ var familyEventTypes = Events.getEventTypes(types[i]);
+ for (var j = 0; j < familyEventTypes.length; ++j)
+ eventTypes.push(familyEventTypes[j]);
+ }
+ else
+ {
+ eventTypes.push(types[i]);
+ }
+ }
+ }
+ }
+
+ return eventTypes;
+}
+
+// ********************************************************************************************* //
+// Rep Object
+
+var EventLog = function(event)
+{
+ this.event = event;
+};
+
+// ********************************************************************************************* //
+// Rep Template
+
+with (Domplate) {
+var EventLogRep = domplate(FirebugReps.Event,
+{
+ className: "eventLog",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ tag:
+ TAG("$copyEventTag", {object: "$object|copyEvent"}),
+
+ copyEventTag:
+ SPAN(
+ FirebugReps.OBJECTLINK("$object|summarizeEvent"),
+ SPAN(" "),
+ SPAN("»"),
+ SPAN(" "),
+ TAG("$object|getTargetTag", {object: "$object|getTarget"})
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ copyEvent: function(log)
+ {
+ return new Dom.EventCopy(log.event);
+ },
+
+ getTarget: function(event)
+ {
+ return event.target;
+ },
+
+ getTargetTag: function(event)
+ {
+ var rep = Firebug.getRep(event.target);
+ return rep.shortTag ? rep.shortTag : rep.tag;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof EventLog;
+ },
+})};
+
+// ********************************************************************************************* //
+// CommandLine Support
+
+function monitorEvents(context, args)
+{
+ var object = args[0];
+ var types = args[1];
+
+ EventMonitor.monitorEvents(object, types, context);
+ return Firebug.Console.getDefaultReturnValue();
+}
+
+function unmonitorEvents(context, args)
+{
+ var object = args[0];
+ var types = args[1];
+
+ EventMonitor.unmonitorEvents(object, types, context);
+ return Firebug.Console.getDefaultReturnValue();
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(EventMonitor);
+Firebug.registerRep(EventLogRep);
+
+Firebug.registerCommand("monitorEvents", {
+ handler: monitorEvents.bind(this),
+ helpUrl: "http://getfirebug.com/wiki/index.php/monitorEvents",
+ description: Locale.$STR("console.cmd.help.monitorEvents")
+});
+
+Firebug.registerCommand("unmonitorEvents", {
+ handler: unmonitorEvents.bind(this),
+ helpUrl: "http://getfirebug.com/wiki/index.php/unmonitorEvents",
+ description: Locale.$STR("console.cmd.help.unmonitorEvents")
+});
+
+return EventMonitor;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/commands/getEventListeners.js b/content/firebug/console/commands/getEventListeners.js
index 7699912..3d07f10 100644
--- a/content/firebug/console/commands/getEventListeners.js
+++ b/content/firebug/console/commands/getEventListeners.js
@@ -1,94 +1,94 @@
-/* See license.txt for terms of usage */
-/*global define:1*/
-
-define([
- "firebug/firebug",
- "firebug/lib/trace",
- "firebug/lib/locale",
- "firebug/lib/wrapper",
- "firebug/lib/xpcom",
- "firebug/lib/events",
-],
-function(Firebug, FBTrace, Locale, Wrapper, Xpcom, Events) {
-"use strict";
-
-const versionChecker = Xpcom.CCSV("@mozilla.org/xpcom/version-comparator;1", "nsIVersionComparator");
-const appInfo = Xpcom.CCSV("@mozilla.org/xre/app-info;1", "nsIXULAppInfo");
-var pre23 = (versionChecker.compare(appInfo.version, "23.0*") < 0);
-
-// ********************************************************************************************* //
-// Command Implementation
-
-function onExecuteCommand(context, args)
-{
- var target = args[0];
- if (typeof target !== "object" || target === null)
- return undefined;
-
- if (pre23 && !context.getPanel("script", true))
- {
- // XXXsimon: Don't bother translating this, it will go away in one release,
- // happen very seldom, and English error messages look better anyway.
- throw new Error("getEventListeners requires the Script panel to be enabled (or the use of Firefox 23 or higher)");
- }
-
- var listeners;
- try
- {
- listeners = Events.getEventListenersForTarget(target);
- }
- catch (exc)
- {
- if (FBTrace.DBG_COMMANDLINE)
- FBTrace.sysout("getEventListenersForTarget threw an exception", exc);
- return undefined;
- }
-
- // Sort listeners by type in alphabetical order, so they show up as such
- // in the returned object.
- listeners.sort(function(a, b)
- {
- if (a.type === b.type)
- return 0;
- return (a.type < b.type ? -1 : 1);
- });
-
- try
- {
- var global = context.getCurrentGlobal();
- var ret = {};
- for (let li of listeners)
- {
- if (!ret[li.type])
- ret[li.type] = [];
-
- ret[li.type].push(Wrapper.cloneIntoContentScope(global, {
- listener: li.func,
- useCapture: li.capturing
- }));
- }
- return Wrapper.cloneIntoContentScope(global, ret);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("getEventListeners FAILS to create content view" + exc, exc);
- }
- return undefined;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerCommand("getEventListeners", {
- helpUrl: "https://getfirebug.com/wiki/index.php/getEventListeners",
- handler: onExecuteCommand.bind(this),
- description: Locale.$STR("console.cmd.help.getEventListeners")
-});
-
-return {
- getEventListeners: onExecuteCommand
-};
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+/*global define:1*/
+
+define([
+ "firebug/firebug",
+ "firebug/lib/trace",
+ "firebug/lib/locale",
+ "firebug/lib/wrapper",
+ "firebug/lib/xpcom",
+ "firebug/lib/events",
+],
+function(Firebug, FBTrace, Locale, Wrapper, Xpcom, Events) {
+"use strict";
+
+const versionChecker = Xpcom.CCSV("@mozilla.org/xpcom/version-comparator;1", "nsIVersionComparator");
+const appInfo = Xpcom.CCSV("@mozilla.org/xre/app-info;1", "nsIXULAppInfo");
+var pre23 = (versionChecker.compare(appInfo.version, "23.0*") < 0);
+
+// ********************************************************************************************* //
+// Command Implementation
+
+function onExecuteCommand(context, args)
+{
+ var target = args[0];
+ if (typeof target !== "object" || target === null)
+ return undefined;
+
+ if (pre23 && !context.getPanel("script", true))
+ {
+ // XXXsimon: Don't bother translating this, it will go away in one release,
+ // happen very seldom, and English error messages look better anyway.
+ throw new Error("getEventListeners requires the Script panel to be enabled (or the use of Firefox 23 or higher)");
+ }
+
+ var listeners;
+ try
+ {
+ listeners = Events.getEventListenersForTarget(target);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_COMMANDLINE)
+ FBTrace.sysout("getEventListenersForTarget threw an exception", exc);
+ return undefined;
+ }
+
+ // Sort listeners by type in alphabetical order, so they show up as such
+ // in the returned object.
+ listeners.sort(function(a, b)
+ {
+ if (a.type === b.type)
+ return 0;
+ return (a.type < b.type ? -1 : 1);
+ });
+
+ try
+ {
+ var global = context.getCurrentGlobal();
+ var ret = {};
+ for (let li of listeners)
+ {
+ if (!ret[li.type])
+ ret[li.type] = [];
+
+ ret[li.type].push(Wrapper.cloneIntoContentScope(global, {
+ listener: li.func,
+ useCapture: li.capturing
+ }));
+ }
+ return Wrapper.cloneIntoContentScope(global, ret);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("getEventListeners FAILS to create content view" + exc, exc);
+ }
+ return undefined;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerCommand("getEventListeners", {
+ helpUrl: "https://getfirebug.com/wiki/index.php/getEventListeners",
+ handler: onExecuteCommand.bind(this),
+ description: Locale.$STR("console.cmd.help.getEventListeners")
+});
+
+return {
+ getEventListeners: onExecuteCommand
+};
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/commands/lastCommandLineResult.js b/content/firebug/console/commands/lastCommandLineResult.js
index f74debd..14ac9a3 100644
--- a/content/firebug/console/commands/lastCommandLineResult.js
+++ b/content/firebug/console/commands/lastCommandLineResult.js
@@ -1,71 +1,71 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/trace",
- "firebug/console/console",
- "firebug/console/commandLine",
- "firebug/lib/locale",
- "firebug/lib/object",
-],
-function(Firebug, FBTrace, Console, CommandLine, Locale, Obj) {
-
-// ********************************************************************************************* //
-// CommandLine Listener
-
-var LastCommandLineResult = Obj.extend(Firebug.Module,
-{
- dispatchName: "LastCommandLineResult",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Extends Module
-
- initialize: function()
- {
- Firebug.Module.initialize.apply(this, arguments);
-
- CommandLine.addListener(this);
- },
-
- shutdown: function()
- {
- Firebug.Module.shutdown.apply(this, arguments);
-
- CommandLine.removeListener(this);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // CommandLine Listener
-
- expressionEvaluated: function(context, expr, result, success)
- {
- // Remember the last evaluated result (only in case of success).
- if (success)
- context.lastCommandLineResult = result;
- }
-});
-
-// ********************************************************************************************* //
-// Command Implementation
-
-function onExecuteCommand(context)
-{
- return context.lastCommandLineResult;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(LastCommandLineResult);
-
-Firebug.registerCommand("$_", {
- variable: true,
- helpUrl: "https://getfirebug.com/wiki/index.php/Dollar-underscore",
- handler: onExecuteCommand.bind(this),
- description: Locale.$STR("console.cmd.help.$_")
-});
-
-return LastCommandLineResult;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/trace",
+ "firebug/console/console",
+ "firebug/console/commandLine",
+ "firebug/lib/locale",
+ "firebug/lib/object",
+],
+function(Firebug, FBTrace, Console, CommandLine, Locale, Obj) {
+
+// ********************************************************************************************* //
+// CommandLine Listener
+
+var LastCommandLineResult = Obj.extend(Firebug.Module,
+{
+ dispatchName: "LastCommandLineResult",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Extends Module
+
+ initialize: function()
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+
+ CommandLine.addListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.Module.shutdown.apply(this, arguments);
+
+ CommandLine.removeListener(this);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // CommandLine Listener
+
+ expressionEvaluated: function(context, expr, result, success)
+ {
+ // Remember the last evaluated result (only in case of success).
+ if (success)
+ context.lastCommandLineResult = result;
+ }
+});
+
+// ********************************************************************************************* //
+// Command Implementation
+
+function onExecuteCommand(context)
+{
+ return context.lastCommandLineResult;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(LastCommandLineResult);
+
+Firebug.registerCommand("$_", {
+ variable: true,
+ helpUrl: "https://getfirebug.com/wiki/index.php/Dollar-underscore",
+ handler: onExecuteCommand.bind(this),
+ description: Locale.$STR("console.cmd.help.$_")
+});
+
+return LastCommandLineResult;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/commands/profiler.js b/content/firebug/console/commands/profiler.js
index 4f86993..cea0816 100644
--- a/content/firebug/console/commands/profiler.js
+++ b/content/firebug/console/commands/profiler.js
@@ -1,589 +1,589 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/chrome/reps",
- "firebug/lib/locale",
- "firebug/lib/wrapper",
- "firebug/lib/url",
- "firebug/js/stackFrame",
- "firebug/lib/events",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/string",
- "firebug/js/fbs",
-],
-function(Obj, Firebug, Domplate, FirebugReps, Locale, Wrapper, Url, StackFrame, Events,
- Css, Dom, Str, FBS) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-// Profiler
-
-Firebug.Profiler = Obj.extend(Firebug.Module,
-{
- dispatchName: "profiler",
-
- profilerEnabled: false,
-
- initialize: function()
- {
- Firebug.connection.addListener(this);
- },
-
- shutdown: function()
- {
- Firebug.connection.removeListener(this);
- },
-
- showContext: function(browser, context)
- {
- this.setEnabled(context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Activation
-
- showPanel: function(browser, panel)
- {
- if (FBTrace.DBG_PROFILER)
- FBTrace.sysout("Profiler.showPanel");
- this.setEnabled();
- },
-
- setEnabled: function()
- {
- var context = Firebug.currentContext;
- if (!context)
- return;
-
- // The profiler is available only if the Script panel and Console are enabled
- var enabled = context.isPanelEnabled("script") && context.isPanelEnabled("console");
-
- if (enabled)
- {
- // The profiler is available only if the Debugger is activated
- var debuggerTool = Firebug.connection.getTool("script");
- enabled = debuggerTool && debuggerTool.getActive();
- }
-
- this.profilerEnabled = enabled;
-
- if (!enabled && this.isProfiling())
- this.stopProfiling(context);
-
- // Attributes must be modified on the <command> element. All toolbar buttons
- // and menuitems are hooked up to the command.
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleProfiling", "disabled",
- enabled ? "false" : "true");
-
- // Update the button's tooltip.
- var tooltipText = Locale.$STR("ProfileButton.Tooltip");
- if (!enabled)
- tooltipText = Locale.$STRF("script.Script_panel_must_be_enabled", [tooltipText]);
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleProfiling", "tooltiptext", tooltipText);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onConsoleCleared: function(context)
- {
- if (this.isProfiling())
- this.stopProfiling(context, true);
- },
-
- onDebuggerEnabled: function()
- {
- this.setEnabled();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- toggleProfiling: function(context)
- {
- if (FBS.profiling)
- this.stopProfiling(context);
- else
- this.startProfiling(context);
- },
-
- startProfiling: function(context, title)
- {
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleProfiling", "checked", "true");
-
- if (FBS.profiling)
- return;
-
- FBS.startProfiling();
-
- var originalTitle = title;
- var isCustomMessage = !!title;
- if (!isCustomMessage)
- title = Locale.$STR("ProfilerStarted");
-
- context.profileRow = this.logProfileRow(context, title);
- context.profileRow.customMessage = isCustomMessage;
- context.profileRow.originalTitle = originalTitle;
-
- Events.dispatch(this.fbListeners, "startProfiling", [context, originalTitle]);
- Firebug.Console.addListener(this);
- },
-
- stopProfiling: function(context, cancelReport)
- {
- var totalTime = FBS.stopProfiling();
- if (totalTime == -1)
- return;
-
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleProfiling", "checked", "false");
-
- if (cancelReport)
- delete context.profileRow;
- else
- this.logProfileReport(context, cancelReport);
-
- Firebug.Console.removeListener(this);
-
- // stopProfiling event fired within logProfileReport
- },
-
- isProfiling: function()
- {
- return (Firebug.chrome.getGlobalAttribute("cmd_firebug_toggleProfiling", "checked") === "true");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- logProfileRow: function(context, title)
- {
- var objects =
- {
- title: title
- };
- var row = Firebug.Console.openGroup(objects, context, "profile",
- Firebug.Profiler.ProfileCaption, true, null, true);
- Css.setClass(row, "profilerRunning");
-
- Firebug.Console.closeGroup(context, true);
-
- return row;
- },
-
- logProfileReport: function(context, cancelReport)
- {
- var calls = [];
- var totalCalls = 0;
- var totalTime = 0;
-
- var sourceFileMap = context.sourceFileMap;
- if (FBTrace.DBG_PROFILER)
- {
- for (var url in sourceFileMap)
- FBTrace.sysout("logProfileReport: "+sourceFileMap[url]+"\n");
- }
-
- var jsd = Cc["@mozilla.org/js/jsd/debugger-service;1"].getService(Ci.jsdIDebuggerService);
- jsd.enumerateScripts({enumerateScript: function(script)
- {
- if (script.callCount)
- {
- if (!Firebug.filterSystemURLs || !Url.isSystemURL(script.fileName))
- {
- var sourceLink = Firebug.SourceFile.getSourceLinkForScript(script, context);
- if (sourceLink && sourceLink.href in sourceFileMap)
- {
- var call = new ProfileCall(script, context, script.callCount,
- script.totalExecutionTime, script.totalOwnExecutionTime,
- script.minExecutionTime, script.maxExecutionTime, sourceLink);
-
- calls.push(call);
-
- totalCalls += script.callCount;
- totalTime += script.totalOwnExecutionTime;
- }
- }
- script.clearProfileData();
- }
- }});
-
- for (var i = 0; i < calls.length; ++i)
- calls[i].percent = Math.round((calls[i].totalOwnTime/totalTime) * 100 * 100) / 100;
-
- calls.sort(function(a, b)
- {
- return a.totalOwnTime < b.totalOwnTime ? 1 : -1;
- });
-
- totalTime = Math.round(totalTime * 1000) / 1000;
-
- var groupRow = context.profileRow && context.profileRow.ownerDocument
- ? context.profileRow
- : this.logProfileRow(context, "");
- delete context.profileRow;
-
- Css.removeClass(groupRow, "profilerRunning");
-
- if (totalCalls > 0)
- {
- var captionBox = groupRow.getElementsByClassName("profileCaption").item(0);
- if (!groupRow.customMessage)
- captionBox.textContent = Locale.$STR("Profile");
-
- var timeBox = groupRow.getElementsByClassName("profileTime").item(0);
- timeBox.textContent = Locale.$STRP("plural.Profile_Time2", [totalTime, totalCalls], 1);
-
- var groupBody = groupRow.getElementsByClassName("logGroupBody")[0];
- var sizer = Firebug.Profiler.ProfileTable.tag.replace({}, groupBody);
- var table = sizer.firstChild;
- var tHeader = table.lastChild; // no rows inserted.
-
- var tag = Firebug.Profiler.ProfileCall.tag;
- var insert = tag.insertRows;
-
- for (var i = 0; i < calls.length; ++i)
- {
- calls[i].index = i;
- context.throttle(insert, tag, [{object: calls[i]}, tHeader]);
- }
-
- context.throttle(groupRow.scrollIntoView, groupRow, []);
- }
- else
- {
- var captionBox = groupRow.getElementsByClassName("profileCaption").item(0);
- captionBox.textContent = Locale.$STR("NothingToProfile");
- }
-
- Events.dispatch(this.fbListeners, "stopProfiling", [context,
- groupRow.originalTitle, calls, cancelReport]);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- commandLineProfileStart: function(context, title)
- {
- if (!this.profilerEnabled)
- {
- var msg = Locale.$STR("ProfilerRequiresTheScriptPanel");
- Firebug.Console.logFormatted([msg], context, "warn");
- return;
- }
- Firebug.Profiler.startProfiling(context, title);
- },
-
- commandLineProfileEnd: function(context)
- {
- if (this.profilerEnabled)
- this.stopProfiling(context);
- }
-});
-
-// ********************************************************************************************* //
-
-with (Domplate) {
-Firebug.Profiler.ProfileTable = domplate(
-{
- tag:
- DIV({"class": "profileSizer", "tabindex": "-1" },
- TABLE({"class": "profileTable", cellspacing: 0, cellpadding: 0, width: "100%",
- "role": "grid"},
- THEAD({"class": "profileThead", "role": "presentation"},
- TR({"class": "headerRow focusRow profileRow subFocusRow", onclick: "$onClick",
- "role": "row"},
- TH({"class": "headerCell alphaValue a11yFocus", "role": "columnheader"},
- DIV({"class": "headerCellBox"},
- Locale.$STR("Function")
- )
- ),
- TH({"class": "headerCell a11yFocus", "role": "columnheader"},
- DIV({"class": "headerCellBox", title: Locale.$STR("CallsHeaderTooltip")},
- Locale.$STR("Calls")
- )
- ),
- TH({"class": "headerCell headerSorted a11yFocus", "role": "columnheader",
- "aria-sort": "descending"},
- DIV({"class": "headerCellBox", title: Locale.$STR("PercentTooltip")},
- Locale.$STR("Percent")
- )
- ),
- TH({"class": "headerCell a11yFocus", "role": "columnheader"},
- DIV({"class": "headerCellBox", title: Locale.$STR("OwnTimeHeaderTooltip")},
- Locale.$STR("OwnTime")
- )
- ),
- TH({"class": "headerCell a11yFocus", "role": "columnheader"},
- DIV({"class": "headerCellBox", title: Locale.$STR("TimeHeaderTooltip")},
- Locale.$STR("Time")
- )
- ),
- TH({"class": "headerCell a11yFocus", "role": "columnheader"},
- DIV({"class": "headerCellBox", title: Locale.$STR("AvgHeaderTooltip")},
- Locale.$STR("Avg")
- )
- ),
- TH({"class": "headerCell a11yFocus", "role": "columnheader"},
- DIV({"class": "headerCellBox", title: Locale.$STR("MinHeaderTooltip")},
- Locale.$STR("Min")
- )
- ),
- TH({"class": "headerCell a11yFocus", "role": "columnheader"},
- DIV({"class": "headerCellBox", title: Locale.$STR("MaxHeaderTooltip")},
- Locale.$STR("Max")
- )
- ),
- TH({"class": "headerCell alphaValue a11yFocus", "role": "columnheader"},
- DIV({"class": "headerCellBox"},
- Locale.$STR("File")
- )
- )
- )
- ),
- TBODY({"class": "profileTbody", "role": "presentation"})
- )
- ),
-
- onClick: function(event)
- {
- var table = Dom.getAncestorByClass(event.target, "profileTable");
- var header = Dom.getAncestorByClass(event.target, "headerCell");
- if (!header)
- return;
-
- var numerical = !Css.hasClass(header, "alphaValue");
-
- var colIndex = 0;
- for (header = header.previousSibling; header; header = header.previousSibling)
- ++colIndex;
-
- this.sort(table, colIndex, numerical);
- },
-
- sort: function(table, colIndex, numerical)
- {
- sortAscending = function()
- {
- Css.removeClass(header, "sortedDescending");
- Css.setClass(header, "sortedAscending");
- header.setAttribute("aria-sort", "ascending");
-
- header.sorted = -1;
-
- for (var i = 0; i < values.length; ++i)
- tbody.appendChild(values[i].row);
- },
-
- sortDescending = function()
- {
- Css.removeClass(header, "sortedAscending");
- Css.setClass(header, "sortedDescending");
- header.setAttribute("aria-sort", "descending");
-
- header.sorted = 1;
-
- for (var i = values.length-1; i >= 0; --i)
- tbody.appendChild(values[i].row);
- };
-
- var tbody = Dom.getChildByClass(table, "profileTbody");
- var thead = Dom.getChildByClass(table, "profileThead");
-
- var values = [];
- for (var row = tbody.childNodes[0]; row; row = row.nextSibling)
- {
- var cell = row.childNodes[colIndex];
- var value = numerical ? parseFloat(cell.textContent) : cell.textContent;
- values.push({row: row, value: value});
- }
-
- values.sort(function(a, b) { return a.value < b.value ? -1 : 1; });
-
- var headerRow = thead.firstChild;
- var headerSorted = Dom.getChildByClass(headerRow, "headerSorted");
- Css.removeClass(headerSorted, "headerSorted");
- if (headerSorted)
- headerSorted.removeAttribute('aria-sort');
-
- var header = headerRow.childNodes[colIndex];
- Css.setClass(header, "headerSorted");
-
- if (numerical)
- {
- if (!header.sorted || header.sorted == -1)
- {
- sortDescending();
- }
- else
- {
- sortAscending();
- }
- }
- else
- {
- if (!header.sorted || header.sorted == -1)
- {
- sortAscending();
- }
- else
- {
- sortDescending();
- }
- }
- }
-});
-
-// ********************************************************************************************* //
-
-Firebug.Profiler.ProfileCaption = domplate(Firebug.Rep,
-{
- tag:
- SPAN({"class": "profileTitle", "role": "status"},
- SPAN({"class": "profileCaption"}, "$object.title"),
- " ",
- SPAN({"class": "profileTime"}, "")
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- groupable: false
-});
-
-// ********************************************************************************************* //
-
-Firebug.Profiler.ProfileCall = domplate(Firebug.Rep,
-{
- tag:
- TR({"class": "focusRow profileRow subFocusRow", "role": "row"},
- TD({"class": "profileCell", "role": "presentation"},
- FirebugReps.OBJECTLINK("$object|getCallName")
- ),
- TD({"class": "a11yFocus profileCell", "role": "gridcell"}, "$object.callCount"),
- TD({"class": "a11yFocus profileCell", "role": "gridcell"}, "$object.percent%"),
- TD({"class": "a11yFocus profileCell", "role": "gridcell"}, "$object.totalOwnTime|roundTime\\ms"),
- TD({"class": "a11yFocus profileCell", "role": "gridcell"}, "$object.totalTime|roundTime\\ms"),
- TD({"class": "a11yFocus profileCell", "role": "gridcell"}, "$object|avgTime|roundTime\\ms"),
- TD({"class": "a11yFocus profileCell", "role": "gridcell"}, "$object.minTime|roundTime\\ms"),
- TD({"class": "a11yFocus profileCell", "role": "gridcell"}, "$object.maxTime|roundTime\\ms"),
- TD({"class": "linkCell profileCell", "role": "presentation"},
- TAG(FirebugReps.SourceLink.tag, {object: "$object|getSourceLink"})
- )
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getCallName: function(call)
- {
- return Str.cropString(StackFrame.getFunctionName(call.script, call.context), 60);
- },
-
- avgTime: function(call)
- {
- return call.totalTime / call.callCount;
- },
-
- getSourceLink: function(call)
- {
- return call.sourceLink;
- },
-
- roundTime: function(ms)
- {
- return Math.round(ms * 1000) / 1000;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "profile",
-
- supportsObject: function(object, type)
- {
- return object instanceof ProfileCall;
- },
-
- inspectObject: function(call, context)
- {
- var sourceLink = this.getSourceLink(call);
- Firebug.chrome.select(sourceLink);
- },
-
- getTooltip: function(call)
- {
- try
- {
- var fn = StackFrame.getFunctionName(call.script, call.context);
- return FirebugReps.Func.getTooltip(fn, call.context);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("profiler.getTooltip FAILS ", exc);
- }
- },
-
- getContextMenuItems: function(call, target, context)
- {
- var fn = Wrapper.unwrapIValue(call.script.functionObject);
- return FirebugReps.Func.getContextMenuItems(fn, call.script, context);
- }
-});
-
-} // END Domplate
-
-// ********************************************************************************************* //
-
-function ProfileCall(script, context, callCount, totalTime, totalOwnTime, minTime, maxTime, sourceLink)
-{
- this.script = script;
- this.context = context;
- this.callCount = callCount;
- this.totalTime = totalTime;
- this.totalOwnTime = totalOwnTime;
- this.minTime = minTime;
- this.maxTime = maxTime;
- this.sourceLink = sourceLink;
-}
-
-// ********************************************************************************************* //
-// CommandLine Support
-
-function profile(context, args)
-{
- var title = args[0];
- Firebug.Profiler.commandLineProfileStart(context, title);
- return Firebug.Console.getDefaultReturnValue();
-};
-
-function profileEnd(context)
-{
- Firebug.Profiler.commandLineProfileEnd(context);
- return Firebug.Console.getDefaultReturnValue();
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.Profiler);
-Firebug.registerRep(Firebug.Profiler.ProfileCall);
-
-Firebug.registerCommand("profile", {
- handler: profile.bind(this),
- helpUrl: "http://getfirebug.com/wiki/index.php/profile",
- description: Locale.$STR("console.cmd.help.profile")
-});
-
-Firebug.registerCommand("profileEnd", {
- handler: profileEnd.bind(this),
- helpUrl: "http://getfirebug.com/wiki/index.php/profileEnd",
- description: Locale.$STR("console.cmd.help.profileEnd")
-});
-
-return Firebug.Profiler;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/chrome/reps",
+ "firebug/lib/locale",
+ "firebug/lib/wrapper",
+ "firebug/lib/url",
+ "firebug/js/stackFrame",
+ "firebug/lib/events",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/string",
+ "firebug/js/fbs",
+],
+function(Obj, Firebug, Domplate, FirebugReps, Locale, Wrapper, Url, StackFrame, Events,
+ Css, Dom, Str, FBS) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+// Profiler
+
+Firebug.Profiler = Obj.extend(Firebug.Module,
+{
+ dispatchName: "profiler",
+
+ profilerEnabled: false,
+
+ initialize: function()
+ {
+ Firebug.connection.addListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.connection.removeListener(this);
+ },
+
+ showContext: function(browser, context)
+ {
+ this.setEnabled(context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Activation
+
+ showPanel: function(browser, panel)
+ {
+ if (FBTrace.DBG_PROFILER)
+ FBTrace.sysout("Profiler.showPanel");
+ this.setEnabled();
+ },
+
+ setEnabled: function()
+ {
+ var context = Firebug.currentContext;
+ if (!context)
+ return;
+
+ // The profiler is available only if the Script panel and Console are enabled
+ var enabled = context.isPanelEnabled("script") && context.isPanelEnabled("console");
+
+ if (enabled)
+ {
+ // The profiler is available only if the Debugger is activated
+ var debuggerTool = Firebug.connection.getTool("script");
+ enabled = debuggerTool && debuggerTool.getActive();
+ }
+
+ this.profilerEnabled = enabled;
+
+ if (!enabled && this.isProfiling())
+ this.stopProfiling(context);
+
+ // Attributes must be modified on the <command> element. All toolbar buttons
+ // and menuitems are hooked up to the command.
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleProfiling", "disabled",
+ enabled ? "false" : "true");
+
+ // Update the button's tooltip.
+ var tooltipText = Locale.$STR("ProfileButton.Tooltip");
+ if (!enabled)
+ tooltipText = Locale.$STRF("script.Script_panel_must_be_enabled", [tooltipText]);
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleProfiling", "tooltiptext", tooltipText);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onConsoleCleared: function(context)
+ {
+ if (this.isProfiling())
+ this.stopProfiling(context, true);
+ },
+
+ onDebuggerEnabled: function()
+ {
+ this.setEnabled();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ toggleProfiling: function(context)
+ {
+ if (FBS.profiling)
+ this.stopProfiling(context);
+ else
+ this.startProfiling(context);
+ },
+
+ startProfiling: function(context, title)
+ {
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleProfiling", "checked", "true");
+
+ if (FBS.profiling)
+ return;
+
+ FBS.startProfiling();
+
+ var originalTitle = title;
+ var isCustomMessage = !!title;
+ if (!isCustomMessage)
+ title = Locale.$STR("ProfilerStarted");
+
+ context.profileRow = this.logProfileRow(context, title);
+ context.profileRow.customMessage = isCustomMessage;
+ context.profileRow.originalTitle = originalTitle;
+
+ Events.dispatch(this.fbListeners, "startProfiling", [context, originalTitle]);
+ Firebug.Console.addListener(this);
+ },
+
+ stopProfiling: function(context, cancelReport)
+ {
+ var totalTime = FBS.stopProfiling();
+ if (totalTime == -1)
+ return;
+
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleProfiling", "checked", "false");
+
+ if (cancelReport)
+ delete context.profileRow;
+ else
+ this.logProfileReport(context, cancelReport);
+
+ Firebug.Console.removeListener(this);
+
+ // stopProfiling event fired within logProfileReport
+ },
+
+ isProfiling: function()
+ {
+ return (Firebug.chrome.getGlobalAttribute("cmd_firebug_toggleProfiling", "checked") === "true");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ logProfileRow: function(context, title)
+ {
+ var objects =
+ {
+ title: title
+ };
+ var row = Firebug.Console.openGroup(objects, context, "profile",
+ Firebug.Profiler.ProfileCaption, true, null, true);
+ Css.setClass(row, "profilerRunning");
+
+ Firebug.Console.closeGroup(context, true);
+
+ return row;
+ },
+
+ logProfileReport: function(context, cancelReport)
+ {
+ var calls = [];
+ var totalCalls = 0;
+ var totalTime = 0;
+
+ var sourceFileMap = context.sourceFileMap;
+ if (FBTrace.DBG_PROFILER)
+ {
+ for (var url in sourceFileMap)
+ FBTrace.sysout("logProfileReport: "+sourceFileMap[url]+"\n");
+ }
+
+ var jsd = Cc["@mozilla.org/js/jsd/debugger-service;1"].getService(Ci.jsdIDebuggerService);
+ jsd.enumerateScripts({enumerateScript: function(script)
+ {
+ if (script.callCount)
+ {
+ if (!Firebug.filterSystemURLs || !Url.isSystemURL(script.fileName))
+ {
+ var sourceLink = Firebug.SourceFile.getSourceLinkForScript(script, context);
+ if (sourceLink && sourceLink.href in sourceFileMap)
+ {
+ var call = new ProfileCall(script, context, script.callCount,
+ script.totalExecutionTime, script.totalOwnExecutionTime,
+ script.minExecutionTime, script.maxExecutionTime, sourceLink);
+
+ calls.push(call);
+
+ totalCalls += script.callCount;
+ totalTime += script.totalOwnExecutionTime;
+ }
+ }
+ script.clearProfileData();
+ }
+ }});
+
+ for (var i = 0; i < calls.length; ++i)
+ calls[i].percent = Math.round((calls[i].totalOwnTime/totalTime) * 100 * 100) / 100;
+
+ calls.sort(function(a, b)
+ {
+ return a.totalOwnTime < b.totalOwnTime ? 1 : -1;
+ });
+
+ totalTime = Math.round(totalTime * 1000) / 1000;
+
+ var groupRow = context.profileRow && context.profileRow.ownerDocument
+ ? context.profileRow
+ : this.logProfileRow(context, "");
+ delete context.profileRow;
+
+ Css.removeClass(groupRow, "profilerRunning");
+
+ if (totalCalls > 0)
+ {
+ var captionBox = groupRow.getElementsByClassName("profileCaption").item(0);
+ if (!groupRow.customMessage)
+ captionBox.textContent = Locale.$STR("Profile");
+
+ var timeBox = groupRow.getElementsByClassName("profileTime").item(0);
+ timeBox.textContent = Locale.$STRP("plural.Profile_Time2", [totalTime, totalCalls], 1);
+
+ var groupBody = groupRow.getElementsByClassName("logGroupBody")[0];
+ var sizer = Firebug.Profiler.ProfileTable.tag.replace({}, groupBody);
+ var table = sizer.firstChild;
+ var tHeader = table.lastChild; // no rows inserted.
+
+ var tag = Firebug.Profiler.ProfileCall.tag;
+ var insert = tag.insertRows;
+
+ for (var i = 0; i < calls.length; ++i)
+ {
+ calls[i].index = i;
+ context.throttle(insert, tag, [{object: calls[i]}, tHeader]);
+ }
+
+ context.throttle(groupRow.scrollIntoView, groupRow, []);
+ }
+ else
+ {
+ var captionBox = groupRow.getElementsByClassName("profileCaption").item(0);
+ captionBox.textContent = Locale.$STR("NothingToProfile");
+ }
+
+ Events.dispatch(this.fbListeners, "stopProfiling", [context,
+ groupRow.originalTitle, calls, cancelReport]);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ commandLineProfileStart: function(context, title)
+ {
+ if (!this.profilerEnabled)
+ {
+ var msg = Locale.$STR("ProfilerRequiresTheScriptPanel");
+ Firebug.Console.logFormatted([msg], context, "warn");
+ return;
+ }
+ Firebug.Profiler.startProfiling(context, title);
+ },
+
+ commandLineProfileEnd: function(context)
+ {
+ if (this.profilerEnabled)
+ this.stopProfiling(context);
+ }
+});
+
+// ********************************************************************************************* //
+
+with (Domplate) {
+Firebug.Profiler.ProfileTable = domplate(
+{
+ tag:
+ DIV({"class": "profileSizer", "tabindex": "-1" },
+ TABLE({"class": "profileTable", cellspacing: 0, cellpadding: 0, width: "100%",
+ "role": "grid"},
+ THEAD({"class": "profileThead", "role": "presentation"},
+ TR({"class": "headerRow focusRow profileRow subFocusRow", onclick: "$onClick",
+ "role": "row"},
+ TH({"class": "headerCell alphaValue a11yFocus", "role": "columnheader"},
+ DIV({"class": "headerCellBox"},
+ Locale.$STR("Function")
+ )
+ ),
+ TH({"class": "headerCell a11yFocus", "role": "columnheader"},
+ DIV({"class": "headerCellBox", title: Locale.$STR("CallsHeaderTooltip")},
+ Locale.$STR("Calls")
+ )
+ ),
+ TH({"class": "headerCell headerSorted a11yFocus", "role": "columnheader",
+ "aria-sort": "descending"},
+ DIV({"class": "headerCellBox", title: Locale.$STR("PercentTooltip")},
+ Locale.$STR("Percent")
+ )
+ ),
+ TH({"class": "headerCell a11yFocus", "role": "columnheader"},
+ DIV({"class": "headerCellBox", title: Locale.$STR("OwnTimeHeaderTooltip")},
+ Locale.$STR("OwnTime")
+ )
+ ),
+ TH({"class": "headerCell a11yFocus", "role": "columnheader"},
+ DIV({"class": "headerCellBox", title: Locale.$STR("TimeHeaderTooltip")},
+ Locale.$STR("Time")
+ )
+ ),
+ TH({"class": "headerCell a11yFocus", "role": "columnheader"},
+ DIV({"class": "headerCellBox", title: Locale.$STR("AvgHeaderTooltip")},
+ Locale.$STR("Avg")
+ )
+ ),
+ TH({"class": "headerCell a11yFocus", "role": "columnheader"},
+ DIV({"class": "headerCellBox", title: Locale.$STR("MinHeaderTooltip")},
+ Locale.$STR("Min")
+ )
+ ),
+ TH({"class": "headerCell a11yFocus", "role": "columnheader"},
+ DIV({"class": "headerCellBox", title: Locale.$STR("MaxHeaderTooltip")},
+ Locale.$STR("Max")
+ )
+ ),
+ TH({"class": "headerCell alphaValue a11yFocus", "role": "columnheader"},
+ DIV({"class": "headerCellBox"},
+ Locale.$STR("File")
+ )
+ )
+ )
+ ),
+ TBODY({"class": "profileTbody", "role": "presentation"})
+ )
+ ),
+
+ onClick: function(event)
+ {
+ var table = Dom.getAncestorByClass(event.target, "profileTable");
+ var header = Dom.getAncestorByClass(event.target, "headerCell");
+ if (!header)
+ return;
+
+ var numerical = !Css.hasClass(header, "alphaValue");
+
+ var colIndex = 0;
+ for (header = header.previousSibling; header; header = header.previousSibling)
+ ++colIndex;
+
+ this.sort(table, colIndex, numerical);
+ },
+
+ sort: function(table, colIndex, numerical)
+ {
+ sortAscending = function()
+ {
+ Css.removeClass(header, "sortedDescending");
+ Css.setClass(header, "sortedAscending");
+ header.setAttribute("aria-sort", "ascending");
+
+ header.sorted = -1;
+
+ for (var i = 0; i < values.length; ++i)
+ tbody.appendChild(values[i].row);
+ },
+
+ sortDescending = function()
+ {
+ Css.removeClass(header, "sortedAscending");
+ Css.setClass(header, "sortedDescending");
+ header.setAttribute("aria-sort", "descending");
+
+ header.sorted = 1;
+
+ for (var i = values.length-1; i >= 0; --i)
+ tbody.appendChild(values[i].row);
+ };
+
+ var tbody = Dom.getChildByClass(table, "profileTbody");
+ var thead = Dom.getChildByClass(table, "profileThead");
+
+ var values = [];
+ for (var row = tbody.childNodes[0]; row; row = row.nextSibling)
+ {
+ var cell = row.childNodes[colIndex];
+ var value = numerical ? parseFloat(cell.textContent) : cell.textContent;
+ values.push({row: row, value: value});
+ }
+
+ values.sort(function(a, b) { return a.value < b.value ? -1 : 1; });
+
+ var headerRow = thead.firstChild;
+ var headerSorted = Dom.getChildByClass(headerRow, "headerSorted");
+ Css.removeClass(headerSorted, "headerSorted");
+ if (headerSorted)
+ headerSorted.removeAttribute('aria-sort');
+
+ var header = headerRow.childNodes[colIndex];
+ Css.setClass(header, "headerSorted");
+
+ if (numerical)
+ {
+ if (!header.sorted || header.sorted == -1)
+ {
+ sortDescending();
+ }
+ else
+ {
+ sortAscending();
+ }
+ }
+ else
+ {
+ if (!header.sorted || header.sorted == -1)
+ {
+ sortAscending();
+ }
+ else
+ {
+ sortDescending();
+ }
+ }
+ }
+});
+
+// ********************************************************************************************* //
+
+Firebug.Profiler.ProfileCaption = domplate(Firebug.Rep,
+{
+ tag:
+ SPAN({"class": "profileTitle", "role": "status"},
+ SPAN({"class": "profileCaption"}, "$object.title"),
+ " ",
+ SPAN({"class": "profileTime"}, "")
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ groupable: false
+});
+
+// ********************************************************************************************* //
+
+Firebug.Profiler.ProfileCall = domplate(Firebug.Rep,
+{
+ tag:
+ TR({"class": "focusRow profileRow subFocusRow", "role": "row"},
+ TD({"class": "profileCell", "role": "presentation"},
+ FirebugReps.OBJECTLINK("$object|getCallName")
+ ),
+ TD({"class": "a11yFocus profileCell", "role": "gridcell"}, "$object.callCount"),
+ TD({"class": "a11yFocus profileCell", "role": "gridcell"}, "$object.percent%"),
+ TD({"class": "a11yFocus profileCell", "role": "gridcell"}, "$object.totalOwnTime|roundTime\\ms"),
+ TD({"class": "a11yFocus profileCell", "role": "gridcell"}, "$object.totalTime|roundTime\\ms"),
+ TD({"class": "a11yFocus profileCell", "role": "gridcell"}, "$object|avgTime|roundTime\\ms"),
+ TD({"class": "a11yFocus profileCell", "role": "gridcell"}, "$object.minTime|roundTime\\ms"),
+ TD({"class": "a11yFocus profileCell", "role": "gridcell"}, "$object.maxTime|roundTime\\ms"),
+ TD({"class": "linkCell profileCell", "role": "presentation"},
+ TAG(FirebugReps.SourceLink.tag, {object: "$object|getSourceLink"})
+ )
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getCallName: function(call)
+ {
+ return Str.cropString(StackFrame.getFunctionName(call.script, call.context), 60);
+ },
+
+ avgTime: function(call)
+ {
+ return call.totalTime / call.callCount;
+ },
+
+ getSourceLink: function(call)
+ {
+ return call.sourceLink;
+ },
+
+ roundTime: function(ms)
+ {
+ return Math.round(ms * 1000) / 1000;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "profile",
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof ProfileCall;
+ },
+
+ inspectObject: function(call, context)
+ {
+ var sourceLink = this.getSourceLink(call);
+ Firebug.chrome.select(sourceLink);
+ },
+
+ getTooltip: function(call)
+ {
+ try
+ {
+ var fn = StackFrame.getFunctionName(call.script, call.context);
+ return FirebugReps.Func.getTooltip(fn, call.context);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("profiler.getTooltip FAILS ", exc);
+ }
+ },
+
+ getContextMenuItems: function(call, target, context)
+ {
+ var fn = Wrapper.unwrapIValue(call.script.functionObject);
+ return FirebugReps.Func.getContextMenuItems(fn, call.script, context);
+ }
+});
+
+} // END Domplate
+
+// ********************************************************************************************* //
+
+function ProfileCall(script, context, callCount, totalTime, totalOwnTime, minTime, maxTime, sourceLink)
+{
+ this.script = script;
+ this.context = context;
+ this.callCount = callCount;
+ this.totalTime = totalTime;
+ this.totalOwnTime = totalOwnTime;
+ this.minTime = minTime;
+ this.maxTime = maxTime;
+ this.sourceLink = sourceLink;
+}
+
+// ********************************************************************************************* //
+// CommandLine Support
+
+function profile(context, args)
+{
+ var title = args[0];
+ Firebug.Profiler.commandLineProfileStart(context, title);
+ return Firebug.Console.getDefaultReturnValue();
+};
+
+function profileEnd(context)
+{
+ Firebug.Profiler.commandLineProfileEnd(context);
+ return Firebug.Console.getDefaultReturnValue();
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.Profiler);
+Firebug.registerRep(Firebug.Profiler.ProfileCall);
+
+Firebug.registerCommand("profile", {
+ handler: profile.bind(this),
+ helpUrl: "http://getfirebug.com/wiki/index.php/profile",
+ description: Locale.$STR("console.cmd.help.profile")
+});
+
+Firebug.registerCommand("profileEnd", {
+ handler: profileEnd.bind(this),
+ helpUrl: "http://getfirebug.com/wiki/index.php/profileEnd",
+ description: Locale.$STR("console.cmd.help.profileEnd")
+});
+
+return Firebug.Profiler;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/commands/useInCommandLine.js b/content/firebug/console/commands/useInCommandLine.js
index 07913c2..88ec0df 100644
--- a/content/firebug/console/commands/useInCommandLine.js
+++ b/content/firebug/console/commands/useInCommandLine.js
@@ -1,134 +1,134 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/trace",
- "firebug/console/commandLine",
- "firebug/lib/locale",
- "firebug/lib/object",
- "firebug/chrome/menu",
- "firebug/js/sourceLink",
- "firebug/lib/string",
-],
-function(Firebug, FBTrace, CommandLine, Locale, Obj, Menu, SourceLink, Str) {
-
-"use strict";
-
-// ********************************************************************************************* //
-// UseInCommandLine Implementation
-
-/**
- * @module Responsible for implementing 'Use in Command Line' feature.
- * See also: https://getfirebug.com/wiki/index.php/$p
- */
-var UseInCommandLine = Obj.extend(Firebug.Module,
-/** @lends UseInCommandLine */
-{
- dispatchName: "UseInCommandLine",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Extends Module
-
- initialize: function()
- {
- Firebug.Module.initialize.apply(this, arguments);
-
- Firebug.registerUIListener(this);
- },
-
- shutdown: function()
- {
- Firebug.Module.shutdown.apply(this, arguments);
-
- Firebug.unregisterUIListener(this);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // UI Listener
-
- onContextMenu: function(items, object, target, context, panel, popup)
- {
- if (typeof object === "boolean" || object === undefined || object === null)
- return;
-
- var rep = Firebug.getRep(object, context);
- if (!rep || !rep.inspectable)
- return;
-
- // Get the object that should be associated with '$p' variable.
- // The same way is used by e.g. 'Inspect In DOM panel' command.
- object = rep.getRealObject(object, context);
- if (object instanceof SourceLink.SourceLink)
- return;
-
- var item = {
- label: "commandline.Use_in_Command_Line",
- tooltiptext: "commandline.tip.Use_in_Command_Line",
- id: "fbUseInCommandLine",
- command: this.useInCommandLine.bind(this, context, object)
- };
-
- // Add the item before the first "Inspect in * Panel" option (or at the bottom
- // together with a separator if there is none).
- var before = Array.prototype.filter.call(popup.childNodes, function(node)
- {
- return Str.hasPrefix(node.id, "InspectIn");
- })[0];
-
- if (!before)
- Menu.createMenuSeparator(popup);
-
- Menu.createMenuItem(popup, item, before);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Context Menu Actions
-
- useInCommandLine: function(context, object)
- {
- context.rememberedObject = object;
-
- var panel = Firebug.chrome.getSelectedPanel();
-
- var hasConsole = !!context.getPanel("console", true);
- if (!hasConsole)
- Firebug.chrome.selectPanel("console");
- else if (panel && panel.name != "console" && !CommandLine.Popup.isVisible())
- CommandLine.Popup.toggle(context);
-
- var commandLine = CommandLine.getCommandLine(context);
- var valueLength = commandLine.value.length;
- var ins = "$p";
-
- commandLine.value += ins;
- commandLine.focus();
- commandLine.setSelectionRange(valueLength, valueLength + ins.length);
-
- CommandLine.autoCompleter.hide();
- CommandLine.update(context);
- }
-});
-
-// ********************************************************************************************* //
-// Command Implementation
-
-function onExecuteCommand(context)
-{
- return context.rememberedObject;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(UseInCommandLine);
-
-Firebug.registerCommand("$p", {
- variable: true,
- handler: onExecuteCommand.bind(this),
- description: Locale.$STR("console.cmd.help.$p")
-});
-
-return UseInCommandLine;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/trace",
+ "firebug/console/commandLine",
+ "firebug/lib/locale",
+ "firebug/lib/object",
+ "firebug/chrome/menu",
+ "firebug/js/sourceLink",
+ "firebug/lib/string",
+],
+function(Firebug, FBTrace, CommandLine, Locale, Obj, Menu, SourceLink, Str) {
+
+"use strict";
+
+// ********************************************************************************************* //
+// UseInCommandLine Implementation
+
+/**
+ * @module Responsible for implementing 'Use in Command Line' feature.
+ * See also: https://getfirebug.com/wiki/index.php/$p
+ */
+var UseInCommandLine = Obj.extend(Firebug.Module,
+/** @lends UseInCommandLine */
+{
+ dispatchName: "UseInCommandLine",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Extends Module
+
+ initialize: function()
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+
+ Firebug.registerUIListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.Module.shutdown.apply(this, arguments);
+
+ Firebug.unregisterUIListener(this);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // UI Listener
+
+ onContextMenu: function(items, object, target, context, panel, popup)
+ {
+ if (typeof object === "boolean" || object === undefined || object === null)
+ return;
+
+ var rep = Firebug.getRep(object, context);
+ if (!rep || !rep.inspectable)
+ return;
+
+ // Get the object that should be associated with '$p' variable.
+ // The same way is used by e.g. 'Inspect In DOM panel' command.
+ object = rep.getRealObject(object, context);
+ if (object instanceof SourceLink.SourceLink)
+ return;
+
+ var item = {
+ label: "commandline.Use_in_Command_Line",
+ tooltiptext: "commandline.tip.Use_in_Command_Line",
+ id: "fbUseInCommandLine",
+ command: this.useInCommandLine.bind(this, context, object)
+ };
+
+ // Add the item before the first "Inspect in * Panel" option (or at the bottom
+ // together with a separator if there is none).
+ var before = Array.prototype.filter.call(popup.childNodes, function(node)
+ {
+ return Str.hasPrefix(node.id, "InspectIn");
+ })[0];
+
+ if (!before)
+ Menu.createMenuSeparator(popup);
+
+ Menu.createMenuItem(popup, item, before);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Context Menu Actions
+
+ useInCommandLine: function(context, object)
+ {
+ context.rememberedObject = object;
+
+ var panel = Firebug.chrome.getSelectedPanel();
+
+ var hasConsole = !!context.getPanel("console", true);
+ if (!hasConsole)
+ Firebug.chrome.selectPanel("console");
+ else if (panel && panel.name != "console" && !CommandLine.Popup.isVisible())
+ CommandLine.Popup.toggle(context);
+
+ var commandLine = CommandLine.getCommandLine(context);
+ var valueLength = commandLine.value.length;
+ var ins = "$p";
+
+ commandLine.value += ins;
+ commandLine.focus();
+ commandLine.setSelectionRange(valueLength, valueLength + ins.length);
+
+ CommandLine.autoCompleter.hide();
+ CommandLine.update(context);
+ }
+});
+
+// ********************************************************************************************* //
+// Command Implementation
+
+function onExecuteCommand(context)
+{
+ return context.rememberedObject;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(UseInCommandLine);
+
+Firebug.registerCommand("$p", {
+ variable: true,
+ handler: onExecuteCommand.bind(this),
+ description: Locale.$STR("console.cmd.help.$p")
+});
+
+return UseInCommandLine;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/console.js b/content/firebug/console/console.js
index 94f5708..a66d29e 100644
--- a/content/firebug/console/console.js
+++ b/content/firebug/console/console.js
@@ -1,449 +1,486 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/firefox",
- "firebug/lib/events",
- "firebug/lib/locale",
- "firebug/chrome/window",
- "firebug/lib/search",
- "firebug/lib/xml",
- "firebug/lib/options",
- "firebug/console/commands/profiler",
- "firebug/chrome/searchBox",
- "firebug/console/consolePanel",
- "firebug/console/commandEditor",
- "firebug/console/functionMonitor",
- "firebug/console/commands/eventMonitor",
- "firebug/console/performanceTiming",
-],
-function(Obj, Firebug, Firefox, Events, Locale, Win, Search, Xml, Options) {
-
-// ********************************************************************************************* //
-// Constants
-
-var maxQueueRequests = 500;
-
-// Note: createDefaultReturnValueInstance() is a local helper (see below).
-var defaultReturnValue = createDefaultReturnValueInstance();
-
-// ********************************************************************************************* //
-
-Firebug.ConsoleBase =
-{
- log: function(object, context, className, rep, noThrottle, sourceLink)
- {
- Events.dispatch(this.fbListeners,"log",[context, object, className, sourceLink]);
- return this.logRow(appendObject, object, context, className, rep, sourceLink, noThrottle);
- },
-
- logFormatted: function(objects, context, className, noThrottle, sourceLink)
- {
- Events.dispatch(this.fbListeners,"logFormatted",[context, objects, className, sourceLink]);
- return this.logRow(appendFormatted, objects, context, className, null, sourceLink,
- noThrottle);
- },
-
- openGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush)
- {
- return this.logRow(appendOpenGroup, objects, context, className, rep, sourceLink,
- noThrottle);
- },
-
- openCollapsedGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush)
- {
- return this.logRow(appendCollapsedGroup, objects, context, className, rep, sourceLink,
- noThrottle);
- },
-
- closeGroup: function(context, noThrottle)
- {
- return this.logRow(appendCloseGroup, null, context, null, null, null, noThrottle, true);
- },
-
- logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
- {
- if (!context)
- context = Firebug.currentContext;
-
- if (FBTrace.DBG_ERRORS && FBTrace.DBG_CONSOLE && !context)
- FBTrace.sysout("Console.logRow has no context, skipping objects", objects);
-
- if (!context)
- return;
-
- if (noThrottle || !context)
- {
- var panel = this.getPanel(context);
- if (panel)
- {
- var row = panel.append(appender, objects, className, rep, sourceLink, noRow);
- var container = panel.panelNode;
- var template = Firebug.NetMonitor.NetLimit;
-
- while (container.childNodes.length > maxQueueRequests + 1)
- {
- container.removeChild(container.firstChild.nextSibling);
- panel.limit.limitInfo.totalCount++;
- template.updateCounter(panel.limit);
- }
- Events.dispatch(this.fbListeners, "onLogRowCreated", [panel, row]);
- return row;
- }
- }
- else
- {
- if (!context.throttle)
- {
- FBTrace.sysout("console.logRow has not context.throttle! ");
- return;
- }
- var args = [appender, objects, context, className, rep, sourceLink, true, noRow];
- context.throttle(this.logRow, this, args);
- }
- },
-
- appendFormatted: function(args, row, context)
- {
- if (!context)
- context = Firebug.currentContext;
-
- var panel = this.getPanel(context);
- panel.appendFormatted(args, row);
- },
-
- clear: function(context)
- {
- if (!context)
- context = Firebug.currentContext;
-
- if (context)
- {
- // There could be some logs waiting in the throttle queue, so
- // clear asynchronously after the queue is flushed.
- context.throttle(this.clearPanel, this, [context]);
-
- // Also clear now
- this.clearPanel(context);
-
- // Let listeners react to console clearing
- Events.dispatch(this.fbListeners, "onConsoleCleared", [context]);
- }
- },
-
- clearPanel: function(context)
- {
- Firebug.Errors.clear(context);
-
- var panel = this.getPanel(context, true);
- if (panel)
- panel.clear();
- },
-
- // Override to direct output to your panel
- getPanel: function(context, noCreate)
- {
- if (context)
- return context.getPanel("console", noCreate);
- },
-};
-
-// ********************************************************************************************* //
-
-/**
- * @module Represents module for the Console panel. Responsible e.g. for handling
- * user actions related to Console panel filter.
- */
-var ActivableConsole = Obj.extend(Firebug.ActivableModule, Firebug.ConsoleBase);
-Firebug.Console = Obj.extend(ActivableConsole,
-/** @lends Firebug.Console */
-{
- dispatchName: "console",
- toolName: "console",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Module
-
- showPanel: function(browser, panel)
- {
- },
-
- getExposedConsole: function(win)
- {
- return this.injector.getExposedConsole(win);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Module
-
- initialize: function()
- {
- // Initialize log limit.
- this.updateMaxLimit();
-
- Firebug.ActivableModule.initialize.apply(this, arguments);
-
- Firebug.connection.addListener(this);
- },
-
- initializeUI: function()
- {
- // Synchronize UI buttons with the current filter
- this.syncFilterButtons(Firebug.chrome);
-
- // Initialize filter button tooltips
- var doc = Firebug.chrome.window.document;
- var filterButtons = doc.getElementsByClassName("fbConsoleFilter");
- for (var i=0, len=filterButtons.length; i<len; ++i)
- {
- if (filterButtons[i].id != "fbConsoleFilter-all")
- {
- filterButtons[i].tooltipText = Locale.$STRF("firebug.labelWithShortcut",
- [filterButtons[i].tooltipText, Locale.$STR("tooltip.multipleFiltersHint")]);
- }
- }
- },
-
- shutdown: function()
- {
- Firebug.connection.removeListener(this);
- Firebug.ActivableModule.shutdown.apply(this, arguments);
- },
-
- initContext: function(context, persistedState)
- {
- Firebug.ActivableModule.initContext.apply(this, arguments);
- },
-
- togglePersist: function(context)
- {
- var panel = context.getPanel("console");
- panel.persistContent = panel.persistContent ? false : true;
-
- Firebug.chrome.setGlobalAttribute("cmd_firebug_togglePersistConsole", "checked",
- panel.persistContent);
- },
-
- showContext: function(browser, context)
- {
- Firebug.chrome.setGlobalAttribute("cmd_firebug_clearConsole", "disabled", !context);
-
- Firebug.ActivableModule.showContext.apply(this, arguments);
- },
-
- watchWindow: function(context, win)
- {
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("console.watchWindow; " + Win.safeGetWindowLocation(win));
-
- Firebug.Console.injector.attachConsoleInjector(context, win);
- },
-
- updateOption: function(name, value)
- {
- if (name == "console.logLimit")
- this.updateMaxLimit();
- },
-
- updateMaxLimit: function()
- {
- var value = Options.get("console.logLimit");
- maxQueueRequests = value ? value : maxQueueRequests;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extend ActivableModule
-
- onObserverChange: function(observer)
- {
- if (!Firebug.getSuspended()) // then Firebug is in action
- this.onResumeFirebug(); // and we need to test to see if we need to addObserver
- else
- this.onSuspendFirebug();
- },
-
- onSuspendFirebug: function()
- {
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("console.onSuspendFirebug isAlwaysEnabled:" +
- Firebug.Console.isAlwaysEnabled());
-
- if (Firebug.Errors.toggleWatchForErrors(false))
- {
- this.setStatus();
- // Make sure possible errors coming from the page and displayed in the Firefox
- // status bar are removed.
- this.clear();
- }
- },
-
- onResumeFirebug: function()
- {
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("console.onResumeFirebug\n");
-
- var watchForErrors = Firebug.Console.isAlwaysEnabled() || Firebug.Console.hasObservers();
- if (Firebug.Errors.toggleWatchForErrors(watchForErrors))
- this.setStatus();
- },
-
- onToggleFilter: function(event, context, filterType)
- {
- if (!context)
- context = Firebug.currentContext;
-
- var filterTypes = [];
- if (Events.isControl(event) && filterType != "all")
- {
- filterTypes = Options.get("consoleFilterTypes").split(" ");
- var filterTypeIndex = filterTypes.indexOf(filterType);
- if (filterTypeIndex == -1)
- filterTypes.push(filterType);
- else
- filterTypes.splice(filterTypeIndex, 1);
- }
- else
- {
- filterTypes.push(filterType);
- }
-
- // Remove "all" filter in case several filters are selected
- if (filterTypes.length > 1)
- {
- var allIndex = filterTypes.indexOf("all");
- if (allIndex != -1)
- filterTypes.splice(allIndex, 1);
- }
-
- // If no filter categories are selected, use the default
- if (filterTypes.length == 0)
- filterTypes = Options.getDefault("consoleFilterTypes").split(" ");
-
- Options.set("consoleFilterTypes", filterTypes.join(" "));
-
- this.syncFilterButtons(Firebug.chrome);
-
- Events.dispatch(Firebug.Console.fbListeners, "onFiltersSet", [filterTypes]);
- },
-
- syncFilterButtons: function(chrome)
- {
- var filterTypes = new Set();
- Options.get("consoleFilterTypes").split(" ").forEach(function(element)
- {
- filterTypes.add(element);
- });
- var doc = chrome.window.document;
- var buttons = doc.getElementsByClassName("fbConsoleFilter");
-
- for (var i=0, len=buttons.length; i<len; ++i)
- {
- var filterType = buttons[i].id.substr(buttons[i].id.search("-") + 1);
- buttons[i].checked = filterTypes.has(filterType);
- }
- },
-
- setStatus: function()
- {
- var fbStatus = Firefox.getElementById("firebugStatus");
- if (fbStatus)
- {
- if (Firebug.Errors.watchForErrors)
- fbStatus.setAttribute("console", "on");
- else
- fbStatus.removeAttribute("console");
- }
- else
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("console.setStatus ERROR no firebugStatus element");
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
- {
- if (!context)
- context = Firebug.currentContext;
-
- if (FBTrace.DBG_WINDOWS && !context)
- FBTrace.sysout("Console.logRow: no context \n");
-
- if (this.isAlwaysEnabled())
- return Firebug.ConsoleBase.logRow.apply(this, arguments);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- /**
- * Returns the value that the console must ignore.
- *
- * @return {*} The default value
- */
- getDefaultReturnValue: function()
- {
- return defaultReturnValue;
- },
-
- /**
- * Returns true if the passed object has to be ignored by the console.
- *
- * @param {*} o The object to test
- *
- * @return {boolean} The result of the test
- */
- isDefaultReturnValue: function(obj)
- {
- return obj === defaultReturnValue;
- }
-});
-
-// ********************************************************************************************* //
-
-Firebug.ConsoleListener =
-{
- log: function(context, object, className, sourceLink)
- {
- },
-
- logFormatted: function(context, objects, className, sourceLink)
- {
- }
-};
-
-// ********************************************************************************************* //
-
-var appendObject = Firebug.ConsolePanel.prototype.appendObject;
-var appendFormatted = Firebug.ConsolePanel.prototype.appendFormatted;
-var appendOpenGroup = Firebug.ConsolePanel.prototype.appendOpenGroup;
-var appendCollapsedGroup = Firebug.ConsolePanel.prototype.appendCollapsedGroup;
-var appendCloseGroup = Firebug.ConsolePanel.prototype.appendCloseGroup;
-
-// ********************************************************************************************* //
-// Local Helpers
-
-function createDefaultReturnValueInstance()
-{
- var proto = {
- __exposedProps__: {
- "toString": "rw"
- },
- toString: function()
- {
- return undefined;
- }
- };
-
- return Object.preventExtensions(Object.create(proto));
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerActivableModule(Firebug.Console);
-
-return Firebug.Console;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/firefox",
+ "firebug/lib/events",
+ "firebug/lib/locale",
+ "firebug/chrome/window",
+ "firebug/lib/search",
+ "firebug/lib/xml",
+ "firebug/lib/options",
+ "firebug/console/commands/profiler",
+ "firebug/chrome/searchBox",
+ "firebug/console/consolePanel",
+ "firebug/console/commandEditor",
+ "firebug/console/functionMonitor",
+ "firebug/console/commands/eventMonitor",
+ "firebug/console/performanceTiming",
+],
+function(Obj, Firebug, Firefox, Events, Locale, Win, Search, Xml, Options) {
+
+// ********************************************************************************************* //
+// Constants
+
+var maxQueueRequests = 500;
+
+// Note: createDefaultReturnValueInstance() is a local helper (see below).
+var defaultReturnValue = createDefaultReturnValueInstance();
+
+// ********************************************************************************************* //
+
+Firebug.ConsoleBase =
+{
+ log: function(object, context, className, rep, noThrottle, sourceLink)
+ {
+ Events.dispatch(this.fbListeners,"log",[context, object, className, sourceLink]);
+ return this.logRow(appendObject, object, context, className, rep, sourceLink, noThrottle);
+ },
+
+ logFormatted: function(objects, context, className, noThrottle, sourceLink)
+ {
+ Events.dispatch(this.fbListeners,"logFormatted",[context, objects, className, sourceLink]);
+ return this.logRow(appendFormatted, objects, context, className, null, sourceLink,
+ noThrottle);
+ },
+
+ openGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush)
+ {
+ return this.logRow(appendOpenGroup, objects, context, className, rep, sourceLink,
+ noThrottle);
+ },
+
+ openCollapsedGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush)
+ {
+ return this.logRow(appendCollapsedGroup, objects, context, className, rep, sourceLink,
+ noThrottle);
+ },
+
+ closeGroup: function(context, noThrottle)
+ {
+ return this.logRow(appendCloseGroup, null, context, null, null, null, noThrottle, true);
+ },
+
+ logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
+ {
+ if (!context)
+ context = Firebug.currentContext;
+
+ if (FBTrace.DBG_ERRORS && FBTrace.DBG_CONSOLE && !context)
+ FBTrace.sysout("Console.logRow has no context, skipping objects", objects);
+
+ if (!context)
+ return;
+
+ if (noThrottle || !context)
+ {
+ var panel = this.getPanel(context);
+ if (panel)
+ {
+ var row = panel.append(appender, objects, className, rep, sourceLink, noRow);
+ var container = panel.panelNode;
+ var template = Firebug.NetMonitor.NetLimit;
+
+ while (container.childNodes.length > maxQueueRequests + 1)
+ {
+ container.removeChild(container.firstChild.nextSibling);
+ panel.limit.limitInfo.totalCount++;
+ template.updateCounter(panel.limit);
+ }
+ Events.dispatch(this.fbListeners, "onLogRowCreated", [panel, row]);
+ return row;
+ }
+ }
+ else
+ {
+ if (!context.throttle)
+ {
+ FBTrace.sysout("console.logRow has not context.throttle! ");
+ return;
+ }
+ var args = [appender, objects, context, className, rep, sourceLink, true, noRow];
+ context.throttle(this.logRow, this, args);
+ }
+ },
+
+ appendFormatted: function(args, row, context)
+ {
+ if (!context)
+ context = Firebug.currentContext;
+
+ var panel = this.getPanel(context);
+ panel.appendFormatted(args, row);
+ },
+
+ clear: function(context)
+ {
+ if (!context)
+ context = Firebug.currentContext;
+
+ if (context)
+ {
+ // There could be some logs waiting in the throttle queue, so
+ // clear asynchronously after the queue is flushed.
+ context.throttle(this.clearPanel, this, [context]);
+
+ // Also clear now
+ this.clearPanel(context);
+
+ // Let listeners react to console clearing
+ Events.dispatch(this.fbListeners, "onConsoleCleared", [context]);
+ }
+ },
+
+ clearPanel: function(context)
+ {
+ Firebug.Errors.clear(context);
+
+ var panel = this.getPanel(context, true);
+ if (panel)
+ panel.clear();
+ },
+
+ // Override to direct output to your panel
+ getPanel: function(context, noCreate)
+ {
+ if (context)
+ return context.getPanel("console", noCreate);
+ },
+};
+
+// ********************************************************************************************* //
+
+/**
+ * @module Represents module for the Console panel. Responsible e.g. for handling
+ * user actions related to Console panel filter.
+ */
+var ActivableConsole = Obj.extend(Firebug.ActivableModule, Firebug.ConsoleBase);
+Firebug.Console = Obj.extend(ActivableConsole,
+/** @lends Firebug.Console */
+{
+ dispatchName: "console",
+ toolName: "console",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Module
+
+ showPanel: function(browser, panel)
+ {
+ },
+
+ getExposedConsole: function(win)
+ {
+ return this.injector.getExposedConsole(win);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Module
+
+ initialize: function()
+ {
+ // Initialize log limit.
+ this.updateMaxLimit();
+
+ Firebug.ActivableModule.initialize.apply(this, arguments);
+
+ Firebug.connection.addListener(this);
+ },
+
+ initializeUI: function()
+ {
+ // Synchronize UI buttons with the current filter
+ this.syncFilterButtons(Firebug.chrome);
+
+ // Initialize filter button tooltips
+ var doc = Firebug.chrome.window.document;
+ var filterButtons = doc.getElementsByClassName("fbConsoleFilter");
+ for (var i=0, len=filterButtons.length; i<len; ++i)
+ {
+ if (filterButtons[i].id != "fbConsoleFilter-all")
+ {
+ filterButtons[i].tooltipText = Locale.$STRF("firebug.labelWithShortcut",
+ [filterButtons[i].tooltipText, Locale.$STR("tooltip.multipleFiltersHint")]);
+ }
+ }
+ },
+
+ shutdown: function()
+ {
+ Firebug.connection.removeListener(this);
+ Firebug.ActivableModule.shutdown.apply(this, arguments);
+ },
+
+ initContext: function(context, persistedState)
+ {
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("Console.initContext");
+
+ Firebug.ActivableModule.initContext.apply(this, arguments);
+
+ this.attachConsoleToWindows(context);
+ },
+
+ destroyContext: function(context)
+ {
+ if (context && context.consoleOnDOMWindowCreated)
+ {
+ context.browser.removeEventListener("DOMWindowCreated",
+ context.consoleOnDOMWindowCreated);
+
+ context.consoleOnDOMWindowCreated = null;
+ }
+ },
+
+ /**
+ * Attach the `console` object to the window of the context and its iframes.
+ * Also listen to iframe creations to attach it automatically.
+ *
+ * *Caution*: Designed to be used only in Firebug.Console. Should not be used elsewhere.
+ *
+ * @param {Context} context
+ */
+ attachConsoleToWindows: function(context)
+ {
+ // Attach the Console for the window and its iframes.
+ Win.iterateWindows(context.window, function(win)
+ {
+ Firebug.Console.injector.attachConsoleInjector(context, win);
+ });
+
+ // Listen to DOMWindowCreated for future iframes. Also necessary when Firebug is enabled at
+ // page load.
+ if (!context.consoleOnDOMWindowCreated)
+ {
+ context.consoleOnDOMWindowCreated = function(ev)
+ {
+ if (ev && ev.target)
+ Firebug.Console.injector.attachConsoleInjector(context, ev.target.defaultView);
+ };
+ context.browser.addEventListener("DOMWindowCreated", context.consoleOnDOMWindowCreated);
+ }
+ },
+
+ togglePersist: function(context)
+ {
+ var panel = context.getPanel("console");
+ panel.persistContent = panel.persistContent ? false : true;
+
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_togglePersistConsole", "checked",
+ panel.persistContent);
+ },
+
+ showContext: function(browser, context)
+ {
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_clearConsole", "disabled", !context);
+
+ Firebug.ActivableModule.showContext.apply(this, arguments);
+ },
+
+ updateOption: function(name, value)
+ {
+ if (name == "console.logLimit")
+ this.updateMaxLimit();
+ },
+
+ updateMaxLimit: function()
+ {
+ var value = Options.get("console.logLimit");
+ maxQueueRequests = value ? value : maxQueueRequests;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extend ActivableModule
+
+ onObserverChange: function(observer)
+ {
+ if (!Firebug.getSuspended()) // then Firebug is in action
+ this.onResumeFirebug(); // and we need to test to see if we need to addObserver
+ else
+ this.onSuspendFirebug();
+ },
+
+ onSuspendFirebug: function()
+ {
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("console.onSuspendFirebug isAlwaysEnabled:" +
+ Firebug.Console.isAlwaysEnabled());
+
+ if (Firebug.Errors.toggleWatchForErrors(false))
+ {
+ this.setStatus();
+ // Make sure possible errors coming from the page and displayed in the Firefox
+ // status bar are removed.
+ this.clear();
+ }
+ },
+
+ onResumeFirebug: function()
+ {
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("console.onResumeFirebug\n");
+
+ var watchForErrors = Firebug.Console.isAlwaysEnabled() || Firebug.Console.hasObservers();
+ if (Firebug.Errors.toggleWatchForErrors(watchForErrors))
+ this.setStatus();
+ },
+
+ onToggleFilter: function(event, context, filterType)
+ {
+ if (!context)
+ context = Firebug.currentContext;
+
+ var filterTypes = [];
+ if (Events.isControl(event) && filterType != "all")
+ {
+ filterTypes = Options.get("consoleFilterTypes").split(" ");
+ var filterTypeIndex = filterTypes.indexOf(filterType);
+ if (filterTypeIndex == -1)
+ filterTypes.push(filterType);
+ else
+ filterTypes.splice(filterTypeIndex, 1);
+ }
+ else
+ {
+ filterTypes.push(filterType);
+ }
+
+ // Remove "all" filter in case several filters are selected
+ if (filterTypes.length > 1)
+ {
+ var allIndex = filterTypes.indexOf("all");
+ if (allIndex != -1)
+ filterTypes.splice(allIndex, 1);
+ }
+
+ // If no filter categories are selected, use the default
+ if (filterTypes.length == 0)
+ filterTypes = Options.getDefault("consoleFilterTypes").split(" ");
+
+ Options.set("consoleFilterTypes", filterTypes.join(" "));
+
+ this.syncFilterButtons(Firebug.chrome);
+
+ Events.dispatch(Firebug.Console.fbListeners, "onFiltersSet", [filterTypes]);
+ },
+
+ syncFilterButtons: function(chrome)
+ {
+ var filterTypes = new Set();
+ Options.get("consoleFilterTypes").split(" ").forEach(function(element)
+ {
+ filterTypes.add(element);
+ });
+ var doc = chrome.window.document;
+ var buttons = doc.getElementsByClassName("fbConsoleFilter");
+
+ for (var i=0, len=buttons.length; i<len; ++i)
+ {
+ var filterType = buttons[i].id.substr(buttons[i].id.search("-") + 1);
+ buttons[i].checked = filterTypes.has(filterType);
+ }
+ },
+
+ setStatus: function()
+ {
+ var fbStatus = Firefox.getElementById("firebugStatus");
+ if (fbStatus)
+ {
+ if (Firebug.Errors.watchForErrors)
+ fbStatus.setAttribute("console", "on");
+ else
+ fbStatus.removeAttribute("console");
+ }
+ else
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("console.setStatus ERROR no firebugStatus element");
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
+ {
+ if (!context)
+ context = Firebug.currentContext;
+
+ if (FBTrace.DBG_WINDOWS && !context)
+ FBTrace.sysout("Console.logRow: no context \n");
+
+ if (this.isAlwaysEnabled())
+ return Firebug.ConsoleBase.logRow.apply(this, arguments);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ /**
+ * Returns the value that the console must ignore.
+ *
+ * @return {*} The default value
+ */
+ getDefaultReturnValue: function()
+ {
+ return defaultReturnValue;
+ },
+
+ /**
+ * Returns true if the passed object has to be ignored by the console.
+ *
+ * @param {*} o The object to test
+ *
+ * @return {boolean} The result of the test
+ */
+ isDefaultReturnValue: function(obj)
+ {
+ return obj === defaultReturnValue;
+ }
+});
+
+// ********************************************************************************************* //
+
+Firebug.ConsoleListener =
+{
+ log: function(context, object, className, sourceLink)
+ {
+ },
+
+ logFormatted: function(context, objects, className, sourceLink)
+ {
+ }
+};
+
+// ********************************************************************************************* //
+
+var appendObject = Firebug.ConsolePanel.prototype.appendObject;
+var appendFormatted = Firebug.ConsolePanel.prototype.appendFormatted;
+var appendOpenGroup = Firebug.ConsolePanel.prototype.appendOpenGroup;
+var appendCollapsedGroup = Firebug.ConsolePanel.prototype.appendCollapsedGroup;
+var appendCloseGroup = Firebug.ConsolePanel.prototype.appendCloseGroup;
+
+// ********************************************************************************************* //
+// Local Helpers
+
+function createDefaultReturnValueInstance()
+{
+ var proto = {
+ __exposedProps__: {
+ "toString": "rw"
+ },
+ toString: function()
+ {
+ return undefined;
+ }
+ };
+
+ return Object.preventExtensions(Object.create(proto));
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerActivableModule(Firebug.Console);
+
+return Firebug.Console;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/consoleExposed.js b/content/firebug/console/consoleExposed.js
index 898a5f3..c5cca94 100644
--- a/content/firebug/console/consoleExposed.js
+++ b/content/firebug/console/consoleExposed.js
@@ -1,564 +1,564 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/chrome/reps",
- "firebug/lib/locale",
- "firebug/lib/wrapper",
- "firebug/lib/url",
- "firebug/lib/string",
- "firebug/js/stackFrame",
- "firebug/console/errors",
- "firebug/trace/debug",
- "firebug/console/console",
- "firebug/lib/options",
- "firebug/debugger/debuggerLib",
-],
-function(FirebugReps, Locale, Wrapper, Url, Str, StackFrame, Errors, Debug, Console, Options,
- DebuggerLib) {
-
-// Note: since we are using .caller and .arguments for stack walking, we can not use strict mode.
-//"use strict";
-
-// ********************************************************************************************* //
-
-/**
- * Returns a console object (bundled with passed window through closure). The object
- * provides all necessary APIs as described here: http://getfirebug.com/wiki/index.php/Console_API
- *
- * @param {Object} context
- * @param {Object} win
- */
-function createFirebugConsole(context, win)
-{
- // Defined as a chrome object, but exposed into the web content scope.
- var console = {
- __exposedProps__: {}
- };
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Exposed Properties
-
- console.log = function log()
- {
- return logFormatted(arguments, "log", true);
- };
-
- console.debug = function debug()
- {
- return logFormatted(arguments, "debug", true);
- };
-
- console.info = function info()
- {
- return logFormatted(arguments, "info", true);
- };
-
- console.warn = function warn()
- {
- return logFormatted(arguments, "warn", true);
- };
-
- console.exception = function exception()
- {
- return logAssert("error", arguments);
- };
-
- console.assert = function assert(x)
- {
- if (!x)
- {
- var rest = [];
- for (var i = 1; i < arguments.length; i++)
- rest.push(arguments[i]);
- return logAssert("assert", rest);
- }
-
- return Console.getDefaultReturnValue();
- };
-
- console.dir = function dir(o)
- {
- Firebug.Console.log(o, context, "dir", Firebug.DOMPanel.DirTable);
- return Console.getDefaultReturnValue();
- };
-
- console.dirxml = function dirxml(o)
- {
- if (o instanceof Wrapper.getContentView(win).Window)
- o = o.document.documentElement;
- else if (o instanceof Wrapper.getContentView(win).Document)
- o = o.documentElement;
-
- Firebug.Console.log(o, context, "dirxml", Firebug.HTMLPanel.SoloElement);
- return Console.getDefaultReturnValue();
- };
-
- console.trace = function firebugDebuggerTracer()
- {
- var trace = getJSDUserStack();
- if (!trace)
- trace = getComponentsUserStack();
-
- // This should never happen, but inform the user if it does.
- if (!trace)
- trace = "(No stack trace available)";
-
- Firebug.Console.log(trace, context, "stackTrace");
- return Console.getDefaultReturnValue();
- };
-
- console.group = function group()
- {
- var sourceLink = getStackLink();
- Firebug.Console.openGroup(arguments, null, "group", null, false, sourceLink);
- return Console.getDefaultReturnValue();
- };
-
- console.groupEnd = function()
- {
- Firebug.Console.closeGroup(context);
- return Console.getDefaultReturnValue();
- };
-
- console.groupCollapsed = function()
- {
- var sourceLink = getStackLink();
-
- // noThrottle true can't be used here (in order to get the result row now)
- // because there can be some logs delayed in the queue and they would end up
- // in a different group.
- // Use rather a different method that causes auto collapsing of the group
- // when it's created.
- Firebug.Console.openCollapsedGroup(arguments, null, "group", null, false, sourceLink);
- return Console.getDefaultReturnValue();
- };
-
- console.profile = function(title)
- {
- Firebug.Profiler.commandLineProfileStart(context, title);
- return Console.getDefaultReturnValue();
- };
-
- console.profileEnd = function()
- {
- Firebug.Profiler.commandLineProfileEnd(context);
- return Console.getDefaultReturnValue();
- };
-
- console.count = function(key)
- {
- var frameId = getStackFrameId();
- if (frameId)
- {
- if (!context.frameCounters)
- context.frameCounters = {};
-
- if (key != undefined)
- frameId += key;
-
- var frameCounter = context.frameCounters[frameId];
- if (!frameCounter)
- {
- var logRow = logFormatted(["0"], null, true, true);
-
- frameCounter = {logRow: logRow, count: 1};
- context.frameCounters[frameId] = frameCounter;
- }
- else
- {
- ++frameCounter.count;
- }
-
- var label = key == undefined
- ? frameCounter.count
- : key + " " + frameCounter.count;
-
- var node = frameCounter.logRow.getElementsByClassName("objectBox-text")[0];
- node.firstChild.nodeValue = label;
- }
- return Console.getDefaultReturnValue();
- };
-
- console.clear = function()
- {
- Firebug.Console.clear(context);
- return Console.getDefaultReturnValue();
- };
-
- console.time = function(name, reset)
- {
- if (!name)
- return Console.getDefaultReturnValue();
-
- var time = new Date().getTime();
-
- if (!this.timeCounters)
- this.timeCounters = {};
-
- var key = "KEY"+name.toString();
-
- if (!reset && this.timeCounters[key])
- return Console.getDefaultReturnValue();
-
- this.timeCounters[key] = time;
- return Console.getDefaultReturnValue();
- };
-
- console.timeEnd = function(name)
- {
- var time = new Date().getTime();
- var diff = undefined;
-
- if (!this.timeCounters)
- return Console.getDefaultReturnValue();
-
- var key = "KEY"+name.toString();
-
- var timeCounter = this.timeCounters[key];
- if (timeCounter)
- {
- diff = time - timeCounter;
- var label = name + ": " + diff + "ms";
-
- this.info(label);
-
- delete this.timeCounters[key];
- }
- return diff;
- };
-
- console.timeStamp = function(label)
- {
- label = label || "";
-
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("consoleExposed.timeStamp; " + label);
-
- var now = new Date();
- Firebug.NetMonitor.addTimeStamp(context, now.getTime(), label);
-
- var formattedTime = now.getHours() + ":" + now.getMinutes() + ":" +
- now.getSeconds() + "." + now.getMilliseconds();
- return logFormatted([formattedTime, label], "timeStamp");
- };
-
- console.table = function(data, columns)
- {
- FirebugReps.Table.log(data, columns, context);
- return Console.getDefaultReturnValue();
- };
-
- console.error = function error()
- {
- if (arguments.length == 1)
- {
- return logAssert("error", arguments); // add more info based on stack trace
- }
- else
- {
- Errors.increaseCount(context);
- return logFormatted(arguments, "error", true); // user already added info
- }
- };
-
- // xxxHonza: removed from 1.10 (issue 5599)
- /*console.memoryProfile = function(title)
- {
- Firebug.MemoryProfiler.start(context, title);
- return Console.getDefaultReturnValue();
- };
-
- console.memoryProfileEnd = function()
- {
- Firebug.MemoryProfiler.stop(context);
- return Console.getDefaultReturnValue();
- };*/
-
- // Expose only these properties to the content scope (read only).
- console.__exposedProps__.log = "r";
- console.__exposedProps__.debug = "r";
- console.__exposedProps__.info = "r";
- console.__exposedProps__.warn = "r";
- console.__exposedProps__.exception = "r";
- console.__exposedProps__.assert = "r";
- console.__exposedProps__.dir = "r";
- console.__exposedProps__.dirxml = "r";
- console.__exposedProps__.trace = "r";
- console.__exposedProps__.group = "r";
- console.__exposedProps__.groupEnd = "r";
- console.__exposedProps__.groupCollapsed = "r";
- console.__exposedProps__.time = "r";
- console.__exposedProps__.timeEnd = "r";
- console.__exposedProps__.timeStamp = "r";
- console.__exposedProps__.profile = "r";
- console.__exposedProps__.profileEnd = "r";
- console.__exposedProps__.count = "r";
- console.__exposedProps__.clear = "r";
- console.__exposedProps__.table = "r";
- console.__exposedProps__.error = "r";
- //console.__exposedProps__.memoryProfile = "r";
- //console.__exposedProps__.memoryProfileEnd = "r";
-
- // DBG console.uid = Math.random();
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Helpers (not accessible from web content)
-
- function logFormatted(args, className, linkToSource, noThrottle)
- {
- var sourceLink = null;
-
- // Using JSD to get user stack is time consuming, so there is a pref.
- if (Options.get("preferJSDSourceLinks"))
- {
- var stack = getJSDUserStack();
- if (stack && stack.toSourceLink)
- sourceLink = stack.toSourceLink();
- }
-
- if (!sourceLink)
- sourceLink = linkToSource ? getStackLink() : null;
-
- var ignoreReturnValue = Firebug.Console.getDefaultReturnValue();
- var rc = Firebug.Console.logFormatted(args, context, className, noThrottle, sourceLink);
- return rc ? rc : ignoreReturnValue;
- }
-
- function logAssert(category, args)
- {
- Errors.increaseCount(context);
-
- var msg = (!args || !args.length || args.length == 0) ?
- [Locale.$STR("Assertion")] : args[0];
-
- // If there's no error message, there's also no stack trace. See Issue 4700.
- var trace;
- if (msg && msg.stack)
- {
- trace = StackFrame.parseToStackTrace(msg.stack, context);
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("logAssert trace from msg.stack", trace);
- }
- else
- {
- trace = getJSDUserStack();
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("logAssert trace from getJSDUserStack", trace);
-
- if (!trace)
- {
- trace = getComponentsUserStack();
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("logAssert trace from getComponentsUserStack", trace);
- }
- }
-
- trace = StackFrame.cleanStackTraceOfFirebug(trace);
-
- var url = msg && msg.fileName ? msg.fileName : win.location.href;
-
- // we may have only the line popped above
- var lineNo = (trace && msg && msg.lineNumber) ? msg.lineNumber : 0;
- var errorObject = new FirebugReps.ErrorMessageObj(msg, url, lineNo, "",
- category, context, trace);
-
- if (trace && trace.frames && trace.frames[0])
- errorObject.correctWithStackTrace(trace);
-
- errorObject.resetSource();
-
- if (args.length > 1)
- {
- errorObject.objects = [];
- for (var i = 1; i < args.length; i++)
- errorObject.objects.push(args[i]);
- }
-
- var row = Firebug.Console.log(errorObject, context, "errorMessage");
- if (row)
- row.scrollIntoView();
-
- return Console.getDefaultReturnValue();
- }
-
- function getComponentsStackDump()
- {
- // Starting with our stack, walk back to the user-level code
- var frame = Components.stack;
- var userURL = win.location.href.toString();
-
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL " +
- userURL, frame);
-
- // Drop frames until we get into user code.
- while (frame && Url.isSystemURL(frame.filename) )
- frame = frame.caller;
-
- // Drop two more frames, the injected console function and firebugAppendConsole()
- //if (frame)
- // frame = frame.caller;
- //if (frame)
- // frame = frame.caller;
-
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL " +
- userURL, frame);
-
- return frame;
- }
-
- function getStackLink()
- {
- var sourceLink = StackFrame.getFrameSourceLink(getComponentsStackDump());
- // xxxFlorent: should be reverted if we integrate
- // https://github.com/fflorent/firebug/commit/d5c65e8 (related to issue6268)
- if (DebuggerLib.isFrameLocationEval(sourceLink.href))
- return null;
- return sourceLink;
- }
-
- function removeChromeFrames(trace)
- {
- var frames = trace ? trace.frames : null;
- if (!frames || !frames.length)
- return null;
-
- var filteredFrames = [];
- for (var i = 0; i < frames.length; i++)
- {
- if (Str.hasPrefix(frames[i].href, "chrome:"))
- continue;
-
- if (Str.hasPrefix(frames[i].href, "resource:"))
- continue;
-
- // firebug-service scope reached, in some cases the url starts with file://
- if (frames[i].href.indexOf("modules/firebug-service.js") != -1)
- continue;
-
- // xxxFlorent: should be reverted if we integrate
- // https://github.com/fflorent/firebug/commit/d5c65e8 (related to issue6268)
- if (DebuggerLib.isFrameLocationEval(frames[i].href))
- continue;
-
- // command line
- var fn = frames[i].getFunctionName() + "";
- if (fn && (fn.indexOf("_firebugEvalEvent") != -1))
- continue;
-
- filteredFrames.push(frames[i]);
- }
-
- trace.frames = filteredFrames;
-
- return trace;
- }
-
- function getJSDUserStack()
- {
- if (!Firebug.Debugger.isAlwaysEnabled())
- return null;
- var trace = Firebug.Debugger.getCurrentStackTrace(context);
- return removeChromeFrames(trace);
- }
-
- function getComponentsUserStack()
- {
- // Walk Components.stack and function.caller/arguments simultaneously.
- var func = arguments.callee;
- var seenFunctions = new Set();
- seenFunctions.add(func);
-
- var trace = new StackFrame.StackTrace();
- var frame = Components.stack;
- while (frame)
- {
- var fileName = frame.filename;
- if (fileName)
- {
- var frameName = frame.name;
- var args = [];
- if (func)
- {
- try
- {
- if (func.name && func.name !== frameName)
- {
- // Something is off, abort!
- func = null;
- }
- else
- {
- var argValues = Array.prototype.slice.call(func.arguments);
- var argNames = StackFrame.guessFunctionArgNamesFromSource(func + "");
- if (argNames && argNames.length === func.length)
- {
- for (var i = 0; i < func.length; i++)
- args.push({name: argNames[i], value: argValues[i]});
- }
- }
- }
- catch (exc) {} // strict mode etc.
- }
-
- var sframe = new StackFrame.StackFrame({href: fileName},
- frame.lineNumber, frameName, args, null, null, context);
- trace.frames.push(sframe);
- }
-
- frame = frame.caller;
- if (func)
- {
- try
- {
- func = func.caller;
- if (seenFunctions.has(func))
- {
- // Recursion; we cannot go on unfortunately.
- func = null;
- }
- else
- {
- seenFunctions.add(func);
- }
- }
- catch (exc)
- {
- // Strict mode functions etc.
- func = null;
- }
- }
- }
-
- return removeChromeFrames(trace);
- }
-
- function getStackFrameId(inputFrame)
- {
- for (var frame = Components.stack; frame; frame = frame.caller)
- {
- if (frame.languageName == "JavaScript"
- && !(frame.filename && frame.filename.indexOf("://firebug/") > 0))
- {
- return frame.filename + "/" + frame.lineNumber;
- }
- }
- return null;
- }
-
- return console;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.ConsoleExposed =
-{
- createFirebugConsole: createFirebugConsole
-};
-
-return Firebug.ConsoleExposed;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/chrome/reps",
+ "firebug/lib/locale",
+ "firebug/lib/wrapper",
+ "firebug/lib/url",
+ "firebug/lib/string",
+ "firebug/js/stackFrame",
+ "firebug/console/errors",
+ "firebug/trace/debug",
+ "firebug/console/console",
+ "firebug/lib/options",
+ "firebug/debugger/debuggerLib",
+],
+function(FirebugReps, Locale, Wrapper, Url, Str, StackFrame, Errors, Debug, Console, Options,
+ DebuggerLib) {
+
+// Note: since we are using .caller and .arguments for stack walking, we can not use strict mode.
+//"use strict";
+
+// ********************************************************************************************* //
+
+/**
+ * Returns a console object (bundled with passed window through closure). The object
+ * provides all necessary APIs as described here: http://getfirebug.com/wiki/index.php/Console_API
+ *
+ * @param {Object} context
+ * @param {Object} win
+ */
+function createFirebugConsole(context, win)
+{
+ // Defined as a chrome object, but exposed into the web content scope.
+ var console = {
+ __exposedProps__: {}
+ };
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Exposed Properties
+
+ console.log = function log()
+ {
+ return logFormatted(arguments, "log", true);
+ };
+
+ console.debug = function debug()
+ {
+ return logFormatted(arguments, "debug", true);
+ };
+
+ console.info = function info()
+ {
+ return logFormatted(arguments, "info", true);
+ };
+
+ console.warn = function warn()
+ {
+ return logFormatted(arguments, "warn", true);
+ };
+
+ console.exception = function exception()
+ {
+ return logAssert("error", arguments);
+ };
+
+ console.assert = function assert(x)
+ {
+ if (!x)
+ {
+ var rest = [];
+ for (var i = 1; i < arguments.length; i++)
+ rest.push(arguments[i]);
+ return logAssert("assert", rest);
+ }
+
+ return Console.getDefaultReturnValue();
+ };
+
+ console.dir = function dir(o)
+ {
+ Firebug.Console.log(o, context, "dir", Firebug.DOMPanel.DirTable);
+ return Console.getDefaultReturnValue();
+ };
+
+ console.dirxml = function dirxml(o)
+ {
+ if (o instanceof Wrapper.getContentView(win).Window)
+ o = o.document.documentElement;
+ else if (o instanceof Wrapper.getContentView(win).Document)
+ o = o.documentElement;
+
+ Firebug.Console.log(o, context, "dirxml", Firebug.HTMLPanel.SoloElement);
+ return Console.getDefaultReturnValue();
+ };
+
+ console.trace = function firebugDebuggerTracer()
+ {
+ var trace = getJSDUserStack();
+ if (!trace)
+ trace = getComponentsUserStack();
+
+ // This should never happen, but inform the user if it does.
+ if (!trace)
+ trace = "(No stack trace available)";
+
+ Firebug.Console.log(trace, context, "stackTrace");
+ return Console.getDefaultReturnValue();
+ };
+
+ console.group = function group()
+ {
+ var sourceLink = getStackLink();
+ Firebug.Console.openGroup(arguments, null, "group", null, false, sourceLink);
+ return Console.getDefaultReturnValue();
+ };
+
+ console.groupEnd = function()
+ {
+ Firebug.Console.closeGroup(context);
+ return Console.getDefaultReturnValue();
+ };
+
+ console.groupCollapsed = function()
+ {
+ var sourceLink = getStackLink();
+
+ // noThrottle true can't be used here (in order to get the result row now)
+ // because there can be some logs delayed in the queue and they would end up
+ // in a different group.
+ // Use rather a different method that causes auto collapsing of the group
+ // when it's created.
+ Firebug.Console.openCollapsedGroup(arguments, null, "group", null, false, sourceLink);
+ return Console.getDefaultReturnValue();
+ };
+
+ console.profile = function(title)
+ {
+ Firebug.Profiler.commandLineProfileStart(context, title);
+ return Console.getDefaultReturnValue();
+ };
+
+ console.profileEnd = function()
+ {
+ Firebug.Profiler.commandLineProfileEnd(context);
+ return Console.getDefaultReturnValue();
+ };
+
+ console.count = function(key)
+ {
+ var frameId = getStackFrameId();
+ if (frameId)
+ {
+ if (!context.frameCounters)
+ context.frameCounters = {};
+
+ if (key != undefined)
+ frameId += key;
+
+ var frameCounter = context.frameCounters[frameId];
+ if (!frameCounter)
+ {
+ var logRow = logFormatted(["0"], null, true, true);
+
+ frameCounter = {logRow: logRow, count: 1};
+ context.frameCounters[frameId] = frameCounter;
+ }
+ else
+ {
+ ++frameCounter.count;
+ }
+
+ var label = key == undefined
+ ? frameCounter.count
+ : key + " " + frameCounter.count;
+
+ var node = frameCounter.logRow.getElementsByClassName("objectBox-text")[0];
+ node.firstChild.nodeValue = label;
+ }
+ return Console.getDefaultReturnValue();
+ };
+
+ console.clear = function()
+ {
+ Firebug.Console.clear(context);
+ return Console.getDefaultReturnValue();
+ };
+
+ console.time = function(name, reset)
+ {
+ if (!name)
+ return Console.getDefaultReturnValue();
+
+ var time = new Date().getTime();
+
+ if (!this.timeCounters)
+ this.timeCounters = {};
+
+ var key = "KEY"+name.toString();
+
+ if (!reset && this.timeCounters[key])
+ return Console.getDefaultReturnValue();
+
+ this.timeCounters[key] = time;
+ return Console.getDefaultReturnValue();
+ };
+
+ console.timeEnd = function(name)
+ {
+ var time = new Date().getTime();
+ var diff = undefined;
+
+ if (!this.timeCounters)
+ return Console.getDefaultReturnValue();
+
+ var key = "KEY"+name.toString();
+
+ var timeCounter = this.timeCounters[key];
+ if (timeCounter)
+ {
+ diff = time - timeCounter;
+ var label = name + ": " + diff + "ms";
+
+ this.info(label);
+
+ delete this.timeCounters[key];
+ }
+ return diff;
+ };
+
+ console.timeStamp = function(label)
+ {
+ label = label || "";
+
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("consoleExposed.timeStamp; " + label);
+
+ var now = new Date();
+ Firebug.NetMonitor.addTimeStamp(context, now.getTime(), label);
+
+ var formattedTime = now.getHours() + ":" + now.getMinutes() + ":" +
+ now.getSeconds() + "." + now.getMilliseconds();
+ return logFormatted([formattedTime, label], "timeStamp");
+ };
+
+ console.table = function(data, columns)
+ {
+ FirebugReps.Table.log(data, columns, context);
+ return Console.getDefaultReturnValue();
+ };
+
+ console.error = function error()
+ {
+ if (arguments.length == 1)
+ {
+ return logAssert("error", arguments); // add more info based on stack trace
+ }
+ else
+ {
+ Errors.increaseCount(context);
+ return logFormatted(arguments, "error", true); // user already added info
+ }
+ };
+
+ // xxxHonza: removed from 1.10 (issue 5599)
+ /*console.memoryProfile = function(title)
+ {
+ Firebug.MemoryProfiler.start(context, title);
+ return Console.getDefaultReturnValue();
+ };
+
+ console.memoryProfileEnd = function()
+ {
+ Firebug.MemoryProfiler.stop(context);
+ return Console.getDefaultReturnValue();
+ };*/
+
+ // Expose only these properties to the content scope (read only).
+ console.__exposedProps__.log = "r";
+ console.__exposedProps__.debug = "r";
+ console.__exposedProps__.info = "r";
+ console.__exposedProps__.warn = "r";
+ console.__exposedProps__.exception = "r";
+ console.__exposedProps__.assert = "r";
+ console.__exposedProps__.dir = "r";
+ console.__exposedProps__.dirxml = "r";
+ console.__exposedProps__.trace = "r";
+ console.__exposedProps__.group = "r";
+ console.__exposedProps__.groupEnd = "r";
+ console.__exposedProps__.groupCollapsed = "r";
+ console.__exposedProps__.time = "r";
+ console.__exposedProps__.timeEnd = "r";
+ console.__exposedProps__.timeStamp = "r";
+ console.__exposedProps__.profile = "r";
+ console.__exposedProps__.profileEnd = "r";
+ console.__exposedProps__.count = "r";
+ console.__exposedProps__.clear = "r";
+ console.__exposedProps__.table = "r";
+ console.__exposedProps__.error = "r";
+ //console.__exposedProps__.memoryProfile = "r";
+ //console.__exposedProps__.memoryProfileEnd = "r";
+
+ // DBG console.uid = Math.random();
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Helpers (not accessible from web content)
+
+ function logFormatted(args, className, linkToSource, noThrottle)
+ {
+ var sourceLink = null;
+
+ // Using JSD to get user stack is time consuming, so there is a pref.
+ if (Options.get("preferJSDSourceLinks"))
+ {
+ var stack = getJSDUserStack();
+ if (stack && stack.toSourceLink)
+ sourceLink = stack.toSourceLink();
+ }
+
+ if (!sourceLink)
+ sourceLink = linkToSource ? getStackLink() : null;
+
+ var ignoreReturnValue = Firebug.Console.getDefaultReturnValue();
+ var rc = Firebug.Console.logFormatted(args, context, className, noThrottle, sourceLink);
+ return rc ? rc : ignoreReturnValue;
+ }
+
+ function logAssert(category, args)
+ {
+ Errors.increaseCount(context);
+
+ var msg = (!args || !args.length || args.length == 0) ?
+ [Locale.$STR("Assertion")] : args[0];
+
+ // If there's no error message, there's also no stack trace. See Issue 4700.
+ var trace;
+ if (msg && msg.stack)
+ {
+ trace = StackFrame.parseToStackTrace(msg.stack, context);
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("logAssert trace from msg.stack", trace);
+ }
+ else
+ {
+ trace = getJSDUserStack();
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("logAssert trace from getJSDUserStack", trace);
+
+ if (!trace)
+ {
+ trace = getComponentsUserStack();
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("logAssert trace from getComponentsUserStack", trace);
+ }
+ }
+
+ trace = StackFrame.cleanStackTraceOfFirebug(trace);
+
+ var url = msg && msg.fileName ? msg.fileName : win.location.href;
+
+ // we may have only the line popped above
+ var lineNo = (trace && msg && msg.lineNumber) ? msg.lineNumber : 0;
+ var errorObject = new FirebugReps.ErrorMessageObj(msg, url, lineNo, "",
+ category, context, trace);
+
+ if (trace && trace.frames && trace.frames[0])
+ errorObject.correctWithStackTrace(trace);
+
+ errorObject.resetSource();
+
+ if (args.length > 1)
+ {
+ errorObject.objects = [];
+ for (var i = 1; i < args.length; i++)
+ errorObject.objects.push(args[i]);
+ }
+
+ var row = Firebug.Console.log(errorObject, context, "errorMessage");
+ if (row)
+ row.scrollIntoView();
+
+ return Console.getDefaultReturnValue();
+ }
+
+ function getComponentsStackDump()
+ {
+ // Starting with our stack, walk back to the user-level code
+ var frame = Components.stack;
+ var userURL = win.location.href.toString();
+
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL " +
+ userURL, frame);
+
+ // Drop frames until we get into user code.
+ while (frame && Url.isSystemURL(frame.filename) )
+ frame = frame.caller;
+
+ // Drop two more frames, the injected console function and firebugAppendConsole()
+ //if (frame)
+ // frame = frame.caller;
+ //if (frame)
+ // frame = frame.caller;
+
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL " +
+ userURL, frame);
+
+ return frame;
+ }
+
+ function getStackLink()
+ {
+ var sourceLink = StackFrame.getFrameSourceLink(getComponentsStackDump());
+ // xxxFlorent: should be reverted if we integrate
+ // https://github.com/fflorent/firebug/commit/d5c65e8 (related to issue6268)
+ if (DebuggerLib.isFrameLocationEval(sourceLink.href))
+ return null;
+ return sourceLink;
+ }
+
+ function removeChromeFrames(trace)
+ {
+ var frames = trace ? trace.frames : null;
+ if (!frames || !frames.length)
+ return null;
+
+ var filteredFrames = [];
+ for (var i = 0; i < frames.length; i++)
+ {
+ if (Str.hasPrefix(frames[i].href, "chrome:"))
+ continue;
+
+ if (Str.hasPrefix(frames[i].href, "resource:"))
+ continue;
+
+ // firebug-service scope reached, in some cases the url starts with file://
+ if (frames[i].href.indexOf("modules/firebug-service.js") != -1)
+ continue;
+
+ // xxxFlorent: should be reverted if we integrate
+ // https://github.com/fflorent/firebug/commit/d5c65e8 (related to issue6268)
+ if (DebuggerLib.isFrameLocationEval(frames[i].href))
+ continue;
+
+ // command line
+ var fn = frames[i].getFunctionName() + "";
+ if (fn && (fn.indexOf("_firebugEvalEvent") != -1))
+ continue;
+
+ filteredFrames.push(frames[i]);
+ }
+
+ trace.frames = filteredFrames;
+
+ return trace;
+ }
+
+ function getJSDUserStack()
+ {
+ if (!Firebug.Debugger.isAlwaysEnabled())
+ return null;
+ var trace = Firebug.Debugger.getCurrentStackTrace(context);
+ return removeChromeFrames(trace);
+ }
+
+ function getComponentsUserStack()
+ {
+ // Walk Components.stack and function.caller/arguments simultaneously.
+ var func = arguments.callee;
+ var seenFunctions = new Set();
+ seenFunctions.add(func);
+
+ var trace = new StackFrame.StackTrace();
+ var frame = Components.stack;
+ while (frame)
+ {
+ var fileName = frame.filename;
+ if (fileName)
+ {
+ var frameName = frame.name;
+ var args = [];
+ if (func)
+ {
+ try
+ {
+ if (func.name && func.name !== frameName)
+ {
+ // Something is off, abort!
+ func = null;
+ }
+ else
+ {
+ var argValues = Array.prototype.slice.call(func.arguments);
+ var argNames = StackFrame.guessFunctionArgNamesFromSource(func + "");
+ if (argNames && argNames.length === func.length)
+ {
+ for (var i = 0; i < func.length; i++)
+ args.push({name: argNames[i], value: argValues[i]});
+ }
+ }
+ }
+ catch (exc) {} // strict mode etc.
+ }
+
+ var sframe = new StackFrame.StackFrame({href: fileName},
+ frame.lineNumber, frameName, args, null, null, context);
+ trace.frames.push(sframe);
+ }
+
+ frame = frame.caller;
+ if (func)
+ {
+ try
+ {
+ func = func.caller;
+ if (seenFunctions.has(func))
+ {
+ // Recursion; we cannot go on unfortunately.
+ func = null;
+ }
+ else
+ {
+ seenFunctions.add(func);
+ }
+ }
+ catch (exc)
+ {
+ // Strict mode functions etc.
+ func = null;
+ }
+ }
+ }
+
+ return removeChromeFrames(trace);
+ }
+
+ function getStackFrameId(inputFrame)
+ {
+ for (var frame = Components.stack; frame; frame = frame.caller)
+ {
+ if (frame.languageName == "JavaScript"
+ && !(frame.filename && frame.filename.indexOf("://firebug/") > 0))
+ {
+ return frame.filename + "/" + frame.lineNumber;
+ }
+ }
+ return null;
+ }
+
+ return console;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.ConsoleExposed =
+{
+ createFirebugConsole: createFirebugConsole
+};
+
+return Firebug.ConsoleExposed;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/consoleInjector.js b/content/firebug/console/consoleInjector.js
index fbfef22..69001f8 100644
--- a/content/firebug/console/consoleInjector.js
+++ b/content/firebug/console/consoleInjector.js
@@ -1,107 +1,119 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/console/console",
- "firebug/console/consoleExposed",
- "firebug/console/errors",
-],
-function(Firebug, Console) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-const EXPOSED_CONSOLE_KEY = "fbConsoleExposed"+Math.random();
-
-// ********************************************************************************************* //
-// Console Injector
-
-Firebug.Console.injector =
-{
- attachConsoleInjector: function(context, win)
- {
- try
- {
- // Get the 'console' object (this comes from chrome scope).
- var console = Firebug.ConsoleExposed.createFirebugConsole(context, win);
-
- // Do not expose the chrome object as is but, rather do a wrapper, see below.
- //win.wrappedJSObject.console = console;
- //return;
-
- // Construct a script string that defines a function. This function returns
- // an object that wraps every 'console' method. This function will be evaluated
- // in a window content sandbox and return a wrapper for the 'console' object.
- // Note that this wrapper appends an additional frame that shouldn't be displayed
- // to the user.
- //
- // Since we are using .caller and .arguments for stack walking, the function must
- // not be in strict mode.
- var expr = "(function(x) { return {\n";
- for (var p in console)
- {
- var func = console[p];
- if (typeof(func) == "function")
- {
- expr += p + ": function() { return Function.apply.call(x." + p +
- ", x, arguments); },\n";
- }
- }
- expr += "};})";
-
- // Evaluate the function in the window sandbox/scope and execute. The return value
- // is a wrapper for the 'console' object.
- var sandbox = Cu.Sandbox(win);
- var getConsoleWrapper = Cu.evalInSandbox(expr, sandbox);
- var exposedConsole = getConsoleWrapper(console);
-
- // Note: to early to use weakmap's + win.document in case of iframes. So we use an expando.
- Object.defineProperty(win, EXPOSED_CONSOLE_KEY, {
- configurable: true,
- writable: true,
- enumerable: false,
- value: exposedConsole
- });
- win.wrappedJSObject.console = exposedConsole;
-
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("console.attachConsoleInjector; Firebug console attached to: " +
- context.getName());
- }
- catch (ex)
- {
- if (FBTrace.DBG_ERROR)
- {
- FBTrace.sysout("consoleInjector.attachConsoleInjector; exception while injecting",
- ex);
- }
- }
- },
-
- getExposedConsole: function(win)
- {
- return win[EXPOSED_CONSOLE_KEY];
- },
-
- // For extensions that still use this function.
- getConsoleHandler: function(context, win)
- {
- return {
- win: Wrapper.wrapObject(win),
- context: context,
- console: this.getExposedConsole(win)
- };
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return Firebug.Console.injector;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/console/console",
+ "firebug/console/consoleExposed",
+ "firebug/console/errors",
+],
+function(Firebug, Console) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+
+var wmExposedConsoles = new WeakMap();
+
+// ********************************************************************************************* //
+// Console Injector
+
+Firebug.Console.injector =
+{
+ attachConsoleInjector: function(context, win)
+ {
+ try
+ {
+ var url = win.location.href;
+ var winDoc = win.document;
+ // Don't run the function twice for the same window and the same context.
+ if (wmExposedConsoles.has(winDoc) &&
+ wmExposedConsoles.get(winDoc).context === context)
+ {
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("Console already attached for " + url + ". Skipping.");
+ return;
+ }
+ // Get the 'console' object (this comes from chrome scope).
+ var console = Firebug.ConsoleExposed.createFirebugConsole(context, win);
+
+ // Do not expose the chrome object as is but, rather do a wrapper, see below.
+ //win.wrappedJSObject.console = console;
+ //return;
+
+ // Construct a script string that defines a function. This function returns
+ // an object that wraps every 'console' method. This function will be evaluated
+ // in a window content sandbox and return a wrapper for the 'console' object.
+ // Note that this wrapper appends an additional frame that shouldn't be displayed
+ // to the user.
+ //
+ // Since we are using .caller and .arguments for stack walking, the function must
+ // not be in strict mode.
+ var expr = "(function(x) { return {\n";
+ for (var p in console)
+ {
+ var func = console[p];
+ if (typeof(func) == "function")
+ {
+ expr += p + ": function() { return Function.apply.call(x." + p +
+ ", x, arguments); },\n";
+ }
+ }
+ expr += "};})";
+
+ // Evaluate the function in the window sandbox/scope and execute. The return value
+ // is a wrapper for the 'console' object.
+ var sandbox = Cu.Sandbox(win);
+ var getConsoleWrapper = Cu.evalInSandbox(expr, sandbox);
+ var exposedConsole = getConsoleWrapper(console);
+
+ // Store the context and the exposedConsole in a WeakMap.
+ wmExposedConsoles.set(winDoc, {
+ context: context,
+ console: exposedConsole
+ });
+
+ win.wrappedJSObject.console = exposedConsole;
+
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("console.attachConsoleInjector; Firebug console attached to: " +
+ url);
+ }
+ catch (ex)
+ {
+ if (FBTrace.DBG_ERROR)
+ {
+ FBTrace.sysout("consoleInjector.attachConsoleInjector; exception while injecting",
+ ex);
+ }
+ }
+ },
+
+ getExposedConsole: function(win)
+ {
+ var winDoc = win.document;
+ return wmExposedConsoles.has(winDoc) ?
+ wmExposedConsoles.get(winDoc).console :
+ undefined;
+ },
+
+ // For extensions that still use this function.
+ getConsoleHandler: function(context, win)
+ {
+ return {
+ win: Wrapper.wrapObject(win),
+ context: context,
+ console: this.getExposedConsole(win)
+ };
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return Firebug.Console.injector;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/consolePanel.js b/content/firebug/console/consolePanel.js
index 6a13583..b3ba9e8 100644
--- a/content/firebug/console/consolePanel.js
+++ b/content/firebug/console/consolePanel.js
@@ -1,1064 +1,1074 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/chrome/reps",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/search",
- "firebug/chrome/menu",
- "firebug/lib/options",
- "firebug/console/commands/profiler",
- "firebug/chrome/searchBox"
-],
-function(Obj, Firebug, Domplate, FirebugReps, Locale, Events, Css, Dom, Search, Menu, Options) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-var reAllowedCss = /^(-moz-)?(background|border|color|font|line|margin|padding|text)/;
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-const logTypes =
-{
- "error": 1,
- "warning": 1,
- "info": 1,
- "debug": 1,
- "profile": 1,
- "table": 1,
- "group": 1,
- "command": 1,
- "stackTrace": 1,
- "log": 1,
- "dir": 1,
- "assert": 1,
- "spy": 1
-};
-
-// ********************************************************************************************* //
-
-Firebug.ConsolePanel = function () {};
-
-Firebug.ConsolePanel.prototype = Obj.extend(Firebug.ActivablePanel,
-{
- template: domplate(
- {
- logRowTag:
- DIV({"class": "$className", role: "listitem"},
- DIV(
- DIV({"class": "logContent"}),
- DIV({"class": "logCounter"},
- SPAN({"class": "logCounterValue"})
- )
- )
- )
- }),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Members
-
- wasScrolledToBottom: false,
- messageCount: 0,
- lastLogTime: 0,
- groups: null,
- limit: null,
- order: 10,
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Panel
-
- name: "console",
- searchable: true,
- breakable: true,
- editable: false,
- enableA11y: true,
-
- initialize: function()
- {
- Firebug.ActivablePanel.initialize.apply(this, arguments); // loads persisted content
-
- if (!this.persistedContent && Firebug.Console.isAlwaysEnabled())
- this.insertLogLimit(this.context);
-
- // Listen for set filters, so the panel is properly updated when needed
- Firebug.Console.addListener(this);
- },
-
- destroy: function(state)
- {
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("console.destroy; wasScrolledToBottom: " +
- this.wasScrolledToBottom + " " + this.context.getName());
-
- if (state)
- state.wasScrolledToBottom = this.wasScrolledToBottom;
-
- // If we are profiling and reloading, save the profileRow for the new context
- if (this.context.profileRow && this.context.profileRow.ownerDocument)
- {
- this.context.profileRow.parentNode.removeChild(this.context.profileRow);
- state.profileRow = this.context.profileRow;
- }
-
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("console.destroy; wasScrolledToBottom: " +
- this.wasScrolledToBottom + ", " + this.context.getName());
-
- Firebug.Console.removeListener(this);
- Firebug.ActivablePanel.destroy.apply(this, arguments); // must be called last
- },
-
- initializeNode: function()
- {
- Firebug.ActivablePanel.initializeNode.apply(this, arguments);
-
- this.onScroller = Obj.bind(this.onScroll, this);
- Events.addEventListener(this.panelNode, "scroll", this.onScroller, true);
-
- this.onResizer = Obj.bind(this.onResize, this);
- this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
- Events.addEventListener(this.resizeEventTarget, "resize", this.onResizer, true);
- },
-
- destroyNode: function()
- {
- Firebug.ActivablePanel.destroyNode.apply(this, arguments);
-
- if (this.onScroller)
- Events.removeEventListener(this.panelNode, "scroll", this.onScroller, true);
-
- Events.removeEventListener(this.resizeEventTarget, "resize", this.onResizer, true);
- },
-
- show: function(state)
- {
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("Console.panel show; wasScrolledToBottom: " +
- (state ? state.wasScrolledToBottom : "no prev state") +
- " " + this.context.getName(), state);
-
- this.showCommandLine(true);
- if (Firebug.chrome.hasFocus())
- Firebug.CommandLine.focus(this.context);
-
- this.showToolbarButtons("fbConsoleButtons", true);
-
- if (!this.filterTypes)
- this.setFilter(Options.get("consoleFilterTypes").split(" "));
-
- Firebug.chrome.setGlobalAttribute("cmd_firebug_togglePersistConsole", "checked",
- this.persistContent);
-
- this.showPanel(state);
- },
-
- showPanel: function(state)
- {
- var wasScrolledToBottom;
- if (state)
- wasScrolledToBottom = state.wasScrolledToBottom;
-
- if (typeof wasScrolledToBottom == "boolean")
- {
- this.wasScrolledToBottom = wasScrolledToBottom;
- delete state.wasScrolledToBottom;
- }
- else if (typeof this.wasScrolledToBottom != "boolean")
- {
- // If the previous state doesn't says where to scroll,
- // scroll to the bottom by default.
- this.wasScrolledToBottom = true;
- }
-
- if (this.wasScrolledToBottom)
- Dom.scrollToBottom(this.panelNode);
-
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("console.show; wasScrolledToBottom: " +
- this.wasScrolledToBottom + ", " + this.context.getName());
-
- if (state && state.profileRow) // then we reloaded while profiling
- {
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("console.show; state.profileRow:", state.profileRow);
-
- this.context.profileRow = state.profileRow;
- this.panelNode.appendChild(state.profileRow);
- delete state.profileRow;
- }
- },
-
- hide: function(state)
- {
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("console.hide; wasScrolledToBottom: " +
- this.wasScrolledToBottom + " " + this.context.getName());
-
- if (state)
- state.wasScrolledToBottom = this.wasScrolledToBottom;
-
- this.showCommandLine(false);
-
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("console.hide; wasScrolledToBottom: " +
- this.wasScrolledToBottom + ", " + this.context.getName());
- },
-
- shouldBreakOnNext: function()
- {
- // xxxHonza: shouldn't the breakOnErrors be context related?
- // xxxJJB, yes, but we can't support it because we can't yet tell
- // which window the error is on.
- return Options.get("breakOnErrors");
- },
-
- getBreakOnNextTooltip: function(enabled)
- {
- return (enabled ? Locale.$STR("console.Disable Break On All Errors") :
- Locale.$STR("console.Break On All Errors"));
- },
-
- /**
- * Support for panel activation.
- */
- onActivationChanged: function(enable)
- {
- if (FBTrace.DBG_CONSOLE || FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("console.ConsolePanel.onActivationChanged; " + enable);
-
- if (enable)
- Firebug.Console.addObserver(this);
- else
- Firebug.Console.removeObserver(this);
- },
-
- getOptionsMenuItems: function()
- {
- return [
- Menu.optionMenu("ShowJavaScriptErrors", "showJSErrors",
- "console.option.tip.Show_JavaScript_Errors"),
- Menu.optionMenu("ShowJavaScriptWarnings", "showJSWarnings",
- "console.option.tip.Show_JavaScript_Warnings"),
- Menu.optionMenu("ShowCSSErrors", "showCSSErrors",
- "console.option.tip.Show_CSS_Errors"),
- Menu.optionMenu("ShowXMLHTMLErrors", "showXMLErrors",
- "console.option.tip.Show_XML_HTML_Errors"),
- Menu.optionMenu("ShowXMLHttpRequests", "showXMLHttpRequests",
- "console.option.tip.Show_XMLHttpRequests"),
- Menu.optionMenu("ShowChromeErrors", "showChromeErrors",
- "console.option.tip.Show_System_Errors"),
- Menu.optionMenu("ShowChromeMessages", "showChromeMessages",
- "console.option.tip.Show_System_Messages"),
- Menu.optionMenu("ShowNetworkErrors", "showNetworkErrors",
- "console.option.tip.Show_Network_Errors"),
- this.getShowStackTraceMenuItem(),
- this.getStrictOptionMenuItem(),
- "-",
- Menu.optionMenu("console.option.Show_Command_Editor", "commandEditor",
- "console.option.tip.Show_Command_Editor"),
- Menu.optionMenu("commandLineShowCompleterPopup", "commandLineShowCompleterPopup",
- "console.option.tip.Show_Completion_List_Popup")
- ];
- },
-
- getShowStackTraceMenuItem: function()
- {
- var label = Locale.$STR("ShowStackTrace");
- var tooltip = Locale.$STR("console.option.tip.Show_Stack_Trace");
- tooltip = Locale.$STRF("script.Script_panel_must_be_enabled", [tooltip]);
-
- var menuItem = Menu.optionMenu(label, "showStackTrace", tooltip);
- menuItem.nol10n = true;
-
- if (Firebug.currentContext && !Firebug.Debugger.isAlwaysEnabled())
- menuItem.disabled = true;
-
- return menuItem;
- },
-
- getStrictOptionMenuItem: function()
- {
- var strictDomain = "javascript.options";
- var strictName = "strict";
- var strictValue = Options.getPref(strictDomain, strictName);
-
- return {
- label: "JavascriptOptionsStrict",
- type: "checkbox",
- checked: strictValue,
- tooltiptext: "console.option.tip.Show_Strict_Warnings",
- command: function()
- {
- var checked = this.hasAttribute("checked");
- Options.setPref(strictDomain, strictName, checked);
- }
- };
- },
-
- getBreakOnMenuItems: function()
- {
- return [];
- },
-
- setFilter: function(filterTypes)
- {
- this.filterTypes = filterTypes;
-
- var panelNode = this.panelNode;
- Events.dispatch(this.fbListeners, "onFiltersSet", [logTypes]);
-
- // Make previously visible nodes invisible again
- if (this.filterMatchSet)
- {
- for (var i in this.filterMatchSet)
- Css.removeClass(this.filterMatchSet[i], "contentMatchesFilter");
- }
-
- this.filterMatchSet = [];
-
- for (var type in logTypes)
- {
- if (filterTypes.join(" ") != "all" && filterTypes.indexOf(type) == -1)
- {
- Css.setClass(panelNode, "hideType-" + type);
- }
- else
- {
- Css.removeClass(panelNode, "hideType-" + type);
-
- // xxxsz: There can be two kinds of error and warning messages,
- // which have one type. So map the type to the classes, which match it.
- // TODO: Merge different CSS class names for log message types
- var classNames = [type];
- if (type == "errorMessage")
- classNames = ["error"];
- else if (type == "warning")
- classNames = ["warn", "warningMessage"];
-
- for (var i=0, classNamesLen=classNames.length; i<classNamesLen; ++i)
- {
- var logRows = panelNode.getElementsByClassName("logRow-" + classNames[i]);
- for (var j=0, len=logRows.length; j<len; ++j)
- {
- // Mark the groups, in which the log row is located, also as matched
- for (var group = Dom.getAncestorByClass(logRows[j], "logRow-group"); group;
- group = Dom.getAncestorByClass(group.parentNode, "logRow-group"))
- {
- Css.setClass(group, "contentMatchesFilter");
- this.filterMatchSet.push(group);
- }
- }
- }
- }
- }
- },
-
- matchesFilter: function(logRow)
- {
- if (!this.filterTypes || this.filterTypes.join(" ") == "all")
- return true;
-
- var type = this.getLogRowType(logRow);
- return this.filterTypes.indexOf(type) != -1;
- },
-
- search: function(text)
- {
- // Make previously visible nodes invisible again
- if (this.matchSet)
- {
- for (var i in this.matchSet)
- Css.removeClass(this.matchSet[i], "matched");
- }
-
- if (!text)
- return;
-
- this.matchSet = [];
-
- function findRow(node)
- {
- return Dom.getAncestorByClass(node, "logRow");
- }
-
- var search = new Search.TextSearch(this.panelNode, findRow);
-
- var logRow = search.find(text, false, Firebug.Search.isCaseSensitive(text));
- if (!logRow)
- {
- Events.dispatch(this.fbListeners, "onConsoleSearchMatchFound", [this, text, []]);
- return false;
- }
-
- for (; logRow; logRow = search.findNext(undefined, undefined, undefined,
- Firebug.Search.isCaseSensitive(text)))
- {
- if (this.matchesFilter(logRow))
- {
- Css.setClass(logRow, "matched");
-
- // Mark the groups, in which the log row is located, also as matched
- for (var group = Dom.getAncestorByClass(logRow, "logRow-group"); group;
- group = Dom.getAncestorByClass(group.parentNode, "logRow-group"))
- {
- Css.setClass(group, "matched");
- this.matchSet.push(group);
- }
- this.matchSet.push(logRow);
- }
- }
-
- Events.dispatch(this.fbListeners, "onConsoleSearchMatchFound",
- [this, text, this.matchSet]);
-
- return true;
- },
-
- breakOnNext: function(breaking)
- {
- Options.set("breakOnErrors", breaking);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Console Listeners
-
- onFiltersSet: function(filterTypes)
- {
- this.setFilter(filterTypes);
- Firebug.Search.update(this.context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getMessageMatcher: function(object, rep, sourceLink, level)
- {
- function matchesMetaData(otherRep, otherLink, otherLevel)
- {
- if (otherRep !== rep || (rep && rep.groupable === false))
- return false;
-
- if (otherLevel !== level)
- return false;
-
- var currentSourceInfo = (sourceLink ? sourceLink.href + ":" + sourceLink.line +
- (sourceLink.col ? ":" + sourceLink.col : "") : "");
- var otherSourceInfo = (otherLink ? otherLink.href + ":" + otherLink.line +
- (otherLink.col ? ":" + otherLink.col : "") : "");
- return currentSourceInfo === otherSourceInfo;
- }
-
- /**
- * Checks whether two variables are equal.
- *
- * @param {*} a First variable to be compared
- * @param {*} b Second variable to be compared
- * @returns {Boolean|undefined} True if values are equal, false if not,
- * undefined if they are similar
- */
- function areEqual(a, b)
- {
- if (typeof a === "object" && a !== null)
- return false;
-
- if (a === b)
- return true;
-
- if (typeof a === "number" && typeof b === "number")
- return isNaN(a) && isNaN(b);
-
- return false;
- }
-
- return function matchMessage(otherObject, otherRep, otherSourceLink, otherLevel)
- {
- try
- {
- if (!matchesMetaData(otherRep, otherSourceLink, otherLevel))
- return false;
-
- var str = Object.prototype.toString.call(object);
- var isArray = (str === "[object Arguments]" || str === "[object Array]");
- if (isArray && rep !== FirebugReps.Arr)
- {
- // console.log et al.
- if (object.length !== otherObject.length)
- return false;
-
- for (var i=0, len=object.length; i<len; ++i)
- {
- if (!areEqual(object[i], otherObject[i]))
- return false;
- }
-
- return true;
- }
-
- // Internal chrome objects are allowed to implement a custom "getId" function.
- if (object instanceof Object && "getId" in object)
- return ("getId" in otherObject && object.getId() === otherObject.getId());
-
- return areEqual(object, otherObject);
- }
- catch (exc)
- {
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("consolePanel.getMessageMatcher; failed to check equality", exc);
-
- return false;
- }
- };
- },
-
- increaseRowCount: function(row)
- {
- var counter = row.getElementsByClassName("logCounter").item(0);
- if (!counter)
- return;
- var value = counter.getElementsByClassName("logCounterValue").item(0);
- if (!value)
- return;
-
- var count = parseInt(value.textContent);
- if (isNaN(count))
- count = 1;
-
- count++;
- counter.setAttribute("count", count);
- value.textContent = count;
- },
-
- append: function(appender, objects, className, rep, sourceLink, noRow)
- {
- var row;
- var container = this.getTopContainer();
- if (noRow)
- {
- appender.apply(this, [objects]);
- }
- else
- {
- row = this.createRow("logRow", className);
- var logContent = row.getElementsByClassName("logContent").item(0);
- appender.apply(this, [objects, logContent, rep]);
-
- // If sourceLink is not provided and the object is an instance of Error
- // convert it into ErrorMessageObj instance, which implements getSourceLink
- // method.
- // xxxHonza: is there a better place where to make this kind of conversion?
- if (!sourceLink && (objects instanceof Error))
- objects = FirebugReps.Except.getErrorMessage(objects);
-
- if (!sourceLink && objects && objects.getSourceLink)
- sourceLink = objects.getSourceLink();
-
- if (Options.get("console.groupLogMessages") && this.matchesLastMessage &&
- this.matchesLastMessage(objects, rep, sourceLink,
- this.groups ? this.groups.length : 0))
- {
- this.increaseRowCount(container.lastChild);
- row = container.lastChild;
- }
- else
- {
- if (sourceLink)
- FirebugReps.SourceLink.tag.append({object: sourceLink}, row.firstChild);
-
- container.appendChild(row);
- }
-
- this.matchesLastMessage = this.getMessageMatcher(objects, rep, sourceLink,
- this.groups ? this.groups.length : 0);
-
- this.filterLogRow(row, this.wasScrolledToBottom);
-
- if (FBTrace.DBG_CONSOLE)
- {
- FBTrace.sysout("console.append; wasScrolledToBottom " + this.wasScrolledToBottom +
- " " + row.textContent);
- }
-
- if (this.wasScrolledToBottom)
- Dom.scrollToBottom(this.panelNode);
-
- return row;
- }
- },
-
- clear: function()
- {
- if (this.panelNode)
- {
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("ConsolePanel.clear");
-
- Dom.clearNode(this.panelNode);
- this.insertLogLimit(this.context);
-
- Dom.scrollToBottom(this.panelNode);
- this.wasScrolledToBottom = true;
-
- // Don't forget to clear opened groups, if any.
- this.groups = null;
-
- this.lastMsgId = null;
- }
- },
-
- insertLogLimit: function()
- {
- // Create limit row. This row is the first in the list of entries
- // and initially hidden. It's displayed as soon as the number of
- // entries reaches the limit.
- var row = this.createRow("limitRow");
-
- var limitInfo = {
- totalCount: 0,
- limitPrefsTitle: Locale.$STRF("LimitPrefsTitle",
- [Options.prefDomain+".console.logLimit"])
- };
-
- var netLimitRep = Firebug.NetMonitor.NetLimit;
- var nodes = netLimitRep.createTable(row, limitInfo);
-
- this.limit = nodes[1];
-
- var container = this.panelNode;
- container.insertBefore(nodes[0], container.firstChild);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- appendObject: function(object, row, rep)
- {
- if (!rep)
- rep = Firebug.getRep(object, this.context);
-
- // Don't forget to pass the template itself as the 'self' parameter so that it's used
- // by domplate as the 'subject' for the generation. Note that the primary purpose
- // of the subject is to provide a context object ('with (subject) {...}') for data that
- // are dynamically consumed during the rendering process.
- // This allows to derive new templates from an existing ones, without breaking
- // the default subject set within domplate() function.
- try
- {
- // XXX Hack until we get IF support in domplate (or bug 116083 gets fixed).
- var tag = rep.tag;
- if (rep === FirebugReps.Text)
- tag = rep.getWhitespaceCorrectedTag(object);
- return tag.append({object: object}, row, rep);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("consolePanel.appendObject; EXCEPTION " + e, e);
- FBTrace.sysout("consolePanel.appendObject; rep " + rep.className, rep);
- }
- }
- },
-
- appendFormatted: function(objects, row, rep)
- {
- function logText(text, row)
- {
- var nodeSpan = row.ownerDocument.createElement("span");
- Css.setClass(nodeSpan, "logRowHint");
- var node = row.ownerDocument.createTextNode(text);
- row.appendChild(nodeSpan);
- nodeSpan.appendChild(node);
- }
-
- function logTextNode(text, row)
- {
- var nodeSpan = row.ownerDocument.createElement("span");
- if (text === "" || text === null || typeof(text) == "undefined")
- Css.setClass(nodeSpan, "logRowHint");
-
- if (text === "")
- text = Locale.$STR("console.msg.an_empty_string");
-
- var node = row.ownerDocument.createTextNode(text);
- row.appendChild(nodeSpan);
- nodeSpan.appendChild(node);
- }
-
- function addStyle(node, css)
- {
- var dummyEl = node.ownerDocument.createElementNS("http://www.w3.org/1999/xhtml", "div");
- dummyEl.setAttribute("style", css);
- node.setAttribute("style", "");
- for (var i = 0; i < dummyEl.style.length; i++)
- {
- var prop = dummyEl.style[i];
- if (reAllowedCss.test(prop))
- node.style.setProperty(prop, dummyEl.style.getPropertyValue(prop));
- }
- }
-
- if (!objects || !objects.length)
- {
- // Make sure the log-row has proper height (even if empty).
- logText(Locale.$STR("console.msg.nothing_to_output"), row);
- return;
- }
-
- var format = objects[0];
- var objIndex = 1;
-
- if (typeof(format) != "string")
- {
- format = "";
- objIndex = 0;
- }
- else
- {
- // So, we have only a string...
- if (objects.length === 1)
- {
- // ...and it has no characters.
- if (format.length < 1)
- {
- logText(Locale.$STR("console.msg.an_empty_string"), row);
- return;
- }
- }
- }
-
- var parts = parseFormat(format);
- var trialIndex = objIndex;
- for (var i = 0; i < parts.length; i++)
- {
- var part = parts[i];
- if (part && typeof(part) == "object")
- {
- if (trialIndex++ >= objects.length)
- {
- // Too few parameters for format, assume unformatted.
- format = "";
- objIndex = 0;
- parts.length = 0;
- break;
- }
- }
- }
-
- // Last CSS style defined using "%c" that should be applied on
- // created log-row parts (elements). See issue 6064.
- // Example: console.log('%cred-text %cgreen-text', 'color:red', 'color:green');
- var lastStyle;
-
- for (var i = 0; i < parts.length; ++i)
- {
- var node;
- var part = parts[i];
- if (part && typeof(part) == "object")
- {
- var object = objects[objIndex];
- if (part.type == "%c")
- {
- lastStyle = object.toString();
- }
- else if (objIndex < objects.length)
- {
- if (part.type == "%f" && part.precision != -1)
- object = parseFloat(object).toFixed(part.precision);
- node = this.appendObject(object, row, part.rep);
- }
- else
- {
- node = this.appendObject(part.type, row, FirebugReps.Text);
- }
- objIndex++;
- }
- else
- {
- var tag = FirebugReps.Text.getWhitespaceCorrectedTag(part);
- node = tag.append({object: part}, row);
- }
-
- // Apply custom style if available.
- if (lastStyle && node)
- addStyle(node, lastStyle);
-
- node = null;
- }
-
- for (var i = objIndex; i < objects.length; ++i)
- {
- logTextNode(" ", row);
-
- var object = objects[i];
- if (typeof(object) == "string")
- logTextNode(object, row);
- else
- this.appendObject(object, row);
- }
- },
-
- appendCollapsedGroup: function(objects, row, rep)
- {
- this.appendOpenGroup(objects, row, rep);
- Css.removeClass(row, "opened");
- },
-
- appendOpenGroup: function(objects, row, rep)
- {
- if (!this.groups)
- this.groups = [];
-
- Css.setClass(row, "logGroup");
- Css.setClass(row, "opened");
-
- var innerRow = this.createRow("logRow");
- Css.setClass(innerRow, "logGroupLabel");
-
- // Custom rep is used in place of group label.
- if (rep)
- rep.tag.replace({"object": objects}, innerRow);
- else
- this.appendFormatted(objects, innerRow, rep);
-
- row.appendChild(innerRow);
- Events.dispatch(this.fbListeners, "onLogRowCreated", [this, innerRow]);
-
- // Create group body, which is displayed when the group is expanded.
- var groupBody = this.createRow("logGroupBody");
- row.appendChild(groupBody);
- groupBody.setAttribute("role", "group");
- this.groups.push(groupBody);
-
- // Expand/collapse logic.
- Events.addEventListener(innerRow, "mousedown", function(event)
- {
- if (Events.isLeftClick(event))
- {
- var groupRow = event.currentTarget.parentNode;
- if (Css.hasClass(groupRow, "opened"))
- {
- Css.removeClass(groupRow, "opened");
- event.target.setAttribute("aria-expanded", "false");
- }
- else
- {
- Css.setClass(groupRow, "opened");
- event.target.setAttribute("aria-expanded", "true");
- }
- }
- }, false);
- },
-
- appendCloseGroup: function(object, row, rep)
- {
- if (this.groups)
- this.groups.pop();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // private
-
- createRow: function(rowName, className)
- {
- var elt = this.document.createElement("div");
- var row = this.template.logRowTag.append({className: rowName +
- (className ? " " + rowName + "-" + className : "")}, elt);
- return row;
- },
-
- getTopContainer: function()
- {
- if (this.groups && this.groups.length)
- return this.groups[this.groups.length-1];
- else
- return this.panelNode;
- },
-
- getLogRowType: function(logRow)
- {
- var typeMatch = /logRow-(\S*)/.exec(logRow.classList);
- var type = typeMatch ? typeMatch[1] : "";
-
- // xxxsz: There can be two kinds of error and warning messages,
- // which have one type. So map the different classes to the type
- // they represent.
- // TODO: Merge different CSS class names for log message types
- if (type == "errorMessage")
- type = "error";
- else if (type == "warn" || type == "warningMessage")
- type = "warning";
-
- return type;
- },
-
- filterLogRow: function(logRow, scrolledToBottom)
- {
- if (this.matchesFilter(logRow))
- {
- // Mark the groups, in which the log row is located, also as matched
- for (var group = Dom.getAncestorByClass(logRow, "logRow-group"); group;
- group = Dom.getAncestorByClass(group.parentNode, "logRow-group"))
- {
- Css.setClass(group, "contentMatchesFilter");
- this.filterMatchSet.push(group);
- }
- }
-
- if (this.searchText)
- {
- Css.setClass(logRow, "matching");
- Css.setClass(logRow, "matched");
-
- // Search after a delay because we must wait for a frame to be created for
- // the new logRow so that the finder will be able to locate it
- setTimeout(Obj.bindFixed(function()
- {
- if (this.searchFilter(this.searchText, logRow))
- this.matchSet.push(logRow);
- else
- Css.removeClass(logRow, "matched");
-
- Css.removeClass(logRow, "matching");
-
- if (scrolledToBottom)
- Dom.scrollToBottom(this.panelNode);
- }, this), 100);
- }
- },
-
- searchFilter: function(text, logRow)
- {
- var count = this.panelNode.childNodes.length;
- var searchRange = this.document.createRange();
- searchRange.setStart(this.panelNode, 0);
- searchRange.setEnd(this.panelNode, count);
-
- var startPt = this.document.createRange();
- startPt.setStartBefore(logRow);
-
- var endPt = this.document.createRange();
- endPt.setStartAfter(logRow);
-
- return Search.finder.Find(text, searchRange, startPt, endPt) != null;
- },
-
- showCommandLine: function(shouldShow)
- {
- if (shouldShow)
- {
- Dom.collapse(Firebug.chrome.$("fbCommandBox"), false);
- Firebug.CommandLine.setMultiLine(Firebug.commandEditor, Firebug.chrome);
- }
- else
- {
- // Make sure that entire content of the Console panel is hidden when
- // the panel is disabled.
- Firebug.CommandLine.setMultiLine(false, Firebug.chrome, Firebug.commandEditor);
- Dom.collapse(Firebug.chrome.$("fbCommandBox"), true);
- }
- },
-
- onScroll: function(event)
- {
- // Update the scroll position flag if the position changes.
- this.wasScrolledToBottom = Dom.isScrolledToBottom(this.panelNode);
-
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("console.onScroll; wasScrolledToBottom: " +
- this.wasScrolledToBottom + ", wasScrolledToBottom: " +
- this.context.getName(), event);
- },
-
- onResize: function(event)
- {
- if (FBTrace.DBG_CONSOLE)
- FBTrace.sysout("console.onResize; wasScrolledToBottom: " +
- this.wasScrolledToBottom + ", offsetHeight: " + this.panelNode.offsetHeight +
- ", scrollTop: " + this.panelNode.scrollTop + ", scrollHeight: " +
- this.panelNode.scrollHeight + ", " + this.context.getName(), event);
-
- if (this.wasScrolledToBottom)
- Dom.scrollToBottom(this.panelNode);
- },
-
- showInfoTip: function(infoTip, target, x, y)
- {
- var object = Firebug.getRepObject(target);
- var rep = Firebug.getRep(object, this.context);
- if (!rep)
- return false;
-
- return rep.showInfoTip(infoTip, target, x, y);
- }
-});
-
-// ********************************************************************************************* //
-
-function parseFormat(format)
-{
- var parts = [];
- if (format.length <= 0)
- return parts;
-
- var reg = /(%{1,2})(\.\d+)?([a-zA-Z])/;
- for (var m = reg.exec(format); m; m = reg.exec(format))
- {
- // If the percentage sign is escaped, then just output it
- if (m[1] == "%%")
- {
- parts.push(format.substr(0, m.index) + m[0].substr(1));
- }
- // A pattern was found, so it needs to be interpreted
- else
- {
- var type = m[3];
- var precision = m[2] ? parseInt(m[2].substr(1)) : -1;
-
- var rep = null;
- switch (type)
- {
- case "s":
- rep = FirebugReps.Text;
- break;
-
- case "f":
- case "i":
- case "d":
- rep = FirebugReps.Number;
- break;
-
- case "o":
- case "c":
- rep = null;
- break;
- }
-
- parts.push(format.substr(0, m.index));
- parts.push({rep: rep, precision: precision, type: "%" + type});
- }
-
- format = format.substr(m.index + m[0].length);
- }
-
- parts.push(format);
- return parts;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(Firebug.ConsolePanel);
-
-return Firebug.ConsolePanel;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/chrome/reps",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/search",
+ "firebug/chrome/menu",
+ "firebug/lib/options",
+ "firebug/console/commands/profiler",
+ "firebug/chrome/searchBox"
+],
+function(Obj, Firebug, Domplate, FirebugReps, Locale, Events, Css, Dom, Search, Menu, Options) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+var reAllowedCss = /^(-moz-)?(background|border|color|font|line|margin|padding|text)/;
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+const logTypes =
+{
+ "error": 1,
+ "warning": 1,
+ "info": 1,
+ "debug": 1,
+ "profile": 1,
+ "table": 1,
+ "group": 1,
+ "command": 1,
+ "stackTrace": 1,
+ "log": 1,
+ "dir": 1,
+ "assert": 1,
+ "spy": 1
+};
+
+// ********************************************************************************************* //
+
+Firebug.ConsolePanel = function () {};
+
+Firebug.ConsolePanel.prototype = Obj.extend(Firebug.ActivablePanel,
+{
+ template: domplate(
+ {
+ logRowTag:
+ DIV({"class": "$className", role: "listitem"},
+ DIV(
+ DIV({"class": "logContent"}),
+ DIV({"class": "logCounter"},
+ SPAN({"class": "logCounterValue"})
+ )
+ )
+ )
+ }),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Members
+
+ wasScrolledToBottom: false,
+ messageCount: 0,
+ lastLogTime: 0,
+ groups: null,
+ limit: null,
+ order: 10,
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Panel
+
+ name: "console",
+ searchable: true,
+ breakable: true,
+ editable: false,
+ enableA11y: true,
+
+ initialize: function()
+ {
+ Firebug.ActivablePanel.initialize.apply(this, arguments); // loads persisted content
+
+ if (!this.persistedContent && Firebug.Console.isAlwaysEnabled())
+ this.insertLogLimit(this.context);
+
+ // Listen for set filters, so the panel is properly updated when needed
+ Firebug.Console.addListener(this);
+ },
+
+ destroy: function(state)
+ {
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("console.destroy; wasScrolledToBottom: " +
+ this.wasScrolledToBottom + " " + this.context.getName());
+
+ if (state)
+ state.wasScrolledToBottom = this.wasScrolledToBottom;
+
+ // If we are profiling and reloading, save the profileRow for the new context
+ if (this.context.profileRow && this.context.profileRow.ownerDocument)
+ {
+ this.context.profileRow.parentNode.removeChild(this.context.profileRow);
+ state.profileRow = this.context.profileRow;
+ }
+
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("console.destroy; wasScrolledToBottom: " +
+ this.wasScrolledToBottom + ", " + this.context.getName());
+
+ Firebug.Console.removeListener(this);
+ Firebug.ActivablePanel.destroy.apply(this, arguments); // must be called last
+ },
+
+ initializeNode: function()
+ {
+ Firebug.ActivablePanel.initializeNode.apply(this, arguments);
+
+ this.onScroller = Obj.bind(this.onScroll, this);
+ Events.addEventListener(this.panelNode, "scroll", this.onScroller, true);
+
+ this.onResizer = Obj.bind(this.onResize, this);
+ this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
+ Events.addEventListener(this.resizeEventTarget, "resize", this.onResizer, true);
+ },
+
+ destroyNode: function()
+ {
+ Firebug.ActivablePanel.destroyNode.apply(this, arguments);
+
+ if (this.onScroller)
+ Events.removeEventListener(this.panelNode, "scroll", this.onScroller, true);
+
+ Events.removeEventListener(this.resizeEventTarget, "resize", this.onResizer, true);
+ },
+
+ show: function(state)
+ {
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("Console.panel show; wasScrolledToBottom: " +
+ (state ? state.wasScrolledToBottom : "no prev state") +
+ " " + this.context.getName(), state);
+
+ this.showCommandLine(true);
+ if (Firebug.chrome.hasFocus())
+ Firebug.CommandLine.focus(this.context);
+
+ this.showToolbarButtons("fbConsoleButtons", true);
+
+ if (!this.filterTypes)
+ this.setFilter(Options.get("consoleFilterTypes").split(" "));
+
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_togglePersistConsole", "checked",
+ this.persistContent);
+
+ this.showPanel(state);
+ },
+
+ showPanel: function(state)
+ {
+ var wasScrolledToBottom;
+ if (state)
+ wasScrolledToBottom = state.wasScrolledToBottom;
+
+ if (typeof wasScrolledToBottom == "boolean")
+ {
+ this.wasScrolledToBottom = wasScrolledToBottom;
+ delete state.wasScrolledToBottom;
+ }
+ else if (typeof this.wasScrolledToBottom != "boolean")
+ {
+ // If the previous state doesn't says where to scroll,
+ // scroll to the bottom by default.
+ this.wasScrolledToBottom = true;
+ }
+
+ if (this.wasScrolledToBottom)
+ Dom.scrollToBottom(this.panelNode);
+
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("console.show; wasScrolledToBottom: " +
+ this.wasScrolledToBottom + ", " + this.context.getName());
+
+ if (state && state.profileRow) // then we reloaded while profiling
+ {
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("console.show; state.profileRow:", state.profileRow);
+
+ this.context.profileRow = state.profileRow;
+ this.panelNode.appendChild(state.profileRow);
+ delete state.profileRow;
+ }
+ },
+
+ hide: function(state)
+ {
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("console.hide; wasScrolledToBottom: " +
+ this.wasScrolledToBottom + " " + this.context.getName());
+
+ if (state)
+ state.wasScrolledToBottom = this.wasScrolledToBottom;
+
+ this.showCommandLine(false);
+
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("console.hide; wasScrolledToBottom: " +
+ this.wasScrolledToBottom + ", " + this.context.getName());
+ },
+
+ shouldBreakOnNext: function()
+ {
+ // xxxHonza: shouldn't the breakOnErrors be context related?
+ // xxxJJB, yes, but we can't support it because we can't yet tell
+ // which window the error is on.
+ return Options.get("breakOnErrors");
+ },
+
+ getBreakOnNextTooltip: function(enabled)
+ {
+ return (enabled ? Locale.$STR("console.Disable Break On All Errors") :
+ Locale.$STR("console.Break On All Errors"));
+ },
+
+ /**
+ * Support for panel activation.
+ */
+ onActivationChanged: function(enable)
+ {
+ if (FBTrace.DBG_CONSOLE || FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("console.ConsolePanel.onActivationChanged; " + enable);
+
+ if (enable)
+ Firebug.Console.addObserver(this);
+ else
+ Firebug.Console.removeObserver(this);
+ },
+
+ getOptionsMenuItems: function()
+ {
+ return [
+ Menu.optionMenu("ShowJavaScriptErrors", "showJSErrors",
+ "console.option.tip.Show_JavaScript_Errors"),
+ Menu.optionMenu("ShowJavaScriptWarnings", "showJSWarnings",
+ "console.option.tip.Show_JavaScript_Warnings"),
+ Menu.optionMenu("ShowCSSErrors", "showCSSErrors",
+ "console.option.tip.Show_CSS_Errors"),
+ Menu.optionMenu("ShowXMLHTMLErrors", "showXMLErrors",
+ "console.option.tip.Show_XML_HTML_Errors"),
+ Menu.optionMenu("ShowXMLHttpRequests", "showXMLHttpRequests",
+ "console.option.tip.Show_XMLHttpRequests"),
+ Menu.optionMenu("ShowChromeErrors", "showChromeErrors",
+ "console.option.tip.Show_System_Errors"),
+ Menu.optionMenu("ShowChromeMessages", "showChromeMessages",
+ "console.option.tip.Show_System_Messages"),
+ Menu.optionMenu("ShowNetworkErrors", "showNetworkErrors",
+ "console.option.tip.Show_Network_Errors"),
+ this.getShowStackTraceMenuItem(),
+ this.getStrictOptionMenuItem(),
+ "-",
+ Menu.optionMenu("console.option.Show_Command_Editor", "commandEditor",
+ "console.option.tip.Show_Command_Editor"),
+ Menu.optionMenu("commandLineShowCompleterPopup", "commandLineShowCompleterPopup",
+ "console.option.tip.Show_Completion_List_Popup")
+ ];
+ },
+
+ getShowStackTraceMenuItem: function()
+ {
+ var label = Locale.$STR("ShowStackTrace");
+ var tooltip = Locale.$STR("console.option.tip.Show_Stack_Trace");
+ tooltip = Locale.$STRF("script.Script_panel_must_be_enabled", [tooltip]);
+
+ var menuItem = Menu.optionMenu(label, "showStackTrace", tooltip);
+ menuItem.nol10n = true;
+
+ if (Firebug.currentContext && !Firebug.Debugger.isAlwaysEnabled())
+ menuItem.disabled = true;
+
+ return menuItem;
+ },
+
+ getStrictOptionMenuItem: function()
+ {
+ var strictDomain = "javascript.options";
+ var strictName = "strict";
+ var strictValue = Options.getPref(strictDomain, strictName);
+
+ return {
+ label: "JavascriptOptionsStrict",
+ type: "checkbox",
+ checked: strictValue,
+ tooltiptext: "console.option.tip.Show_Strict_Warnings",
+ command: function()
+ {
+ var checked = this.hasAttribute("checked");
+ Options.setPref(strictDomain, strictName, checked);
+ }
+ };
+ },
+
+ getBreakOnMenuItems: function()
+ {
+ return [];
+ },
+
+ setFilter: function(filterTypes)
+ {
+ this.filterTypes = filterTypes;
+
+ var panelNode = this.panelNode;
+ Events.dispatch(this.fbListeners, "onFiltersSet", [logTypes]);
+
+ // Make previously visible nodes invisible again
+ if (this.filterMatchSet)
+ {
+ for (var i in this.filterMatchSet)
+ Css.removeClass(this.filterMatchSet[i], "contentMatchesFilter");
+ }
+
+ this.filterMatchSet = [];
+
+ for (var type in logTypes)
+ {
+ if (filterTypes.join(" ") != "all" && filterTypes.indexOf(type) == -1)
+ {
+ Css.setClass(panelNode, "hideType-" + type);
+ }
+ else
+ {
+ Css.removeClass(panelNode, "hideType-" + type);
+
+ // xxxsz: There can be two kinds of error and warning messages,
+ // which have one type. So map the type to the classes, which match it.
+ // TODO: Merge different CSS class names for log message types
+ var classNames = [type];
+ if (type == "errorMessage")
+ classNames = ["error"];
+ else if (type == "warning")
+ classNames = ["warn", "warningMessage"];
+
+ for (var i=0, classNamesLen=classNames.length; i<classNamesLen; ++i)
+ {
+ var logRows = panelNode.getElementsByClassName("logRow-" + classNames[i]);
+ for (var j=0, len=logRows.length; j<len; ++j)
+ {
+ // Mark the groups, in which the log row is located, also as matched
+ for (var group = Dom.getAncestorByClass(logRows[j], "logRow-group"); group;
+ group = Dom.getAncestorByClass(group.parentNode, "logRow-group"))
+ {
+ Css.setClass(group, "contentMatchesFilter");
+ this.filterMatchSet.push(group);
+ }
+ }
+ }
+ }
+ }
+ },
+
+ matchesFilter: function(logRow)
+ {
+ if (!this.filterTypes || this.filterTypes.join(" ") == "all")
+ return true;
+
+ var type = this.getLogRowType(logRow);
+ return this.filterTypes.indexOf(type) != -1;
+ },
+
+ search: function(text)
+ {
+ // Make previously visible nodes invisible again
+ if (this.matchSet)
+ {
+ for (var i in this.matchSet)
+ Css.removeClass(this.matchSet[i], "matched");
+ }
+
+ if (!text)
+ return;
+
+ this.matchSet = [];
+
+ function findRow(node)
+ {
+ return Dom.getAncestorByClass(node, "logRow");
+ }
+
+ var search = new Search.TextSearch(this.panelNode, findRow);
+
+ var logRow = search.find(text, false, Firebug.Search.isCaseSensitive(text));
+ if (!logRow)
+ {
+ Events.dispatch(this.fbListeners, "onConsoleSearchMatchFound", [this, text, []]);
+ return false;
+ }
+
+ for (; logRow; logRow = search.findNext(undefined, undefined, undefined,
+ Firebug.Search.isCaseSensitive(text)))
+ {
+ if (this.matchesFilter(logRow))
+ {
+ Css.setClass(logRow, "matched");
+
+ // Mark the groups, in which the log row is located, also as matched
+ for (var group = Dom.getAncestorByClass(logRow, "logRow-group"); group;
+ group = Dom.getAncestorByClass(group.parentNode, "logRow-group"))
+ {
+ Css.setClass(group, "matched");
+ this.matchSet.push(group);
+ }
+ this.matchSet.push(logRow);
+ }
+ }
+
+ Events.dispatch(this.fbListeners, "onConsoleSearchMatchFound",
+ [this, text, this.matchSet]);
+
+ return true;
+ },
+
+ breakOnNext: function(breaking)
+ {
+ Options.set("breakOnErrors", breaking);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Console Listeners
+
+ onFiltersSet: function(filterTypes)
+ {
+ this.setFilter(filterTypes);
+ Firebug.Search.update(this.context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getMessageMatcher: function(object, appender, className, rep, sourceLink, level)
+ {
+ function matchesMetaData(otherAppender, otherClassName, otherRep, otherLink, otherLevel)
+ {
+ if (otherAppender !== appender)
+ return false;
+
+ if (otherClassName !== className)
+ return false;
+
+ if (otherRep !== rep || (rep && rep.groupable === false))
+ return false;
+
+ if (otherLevel !== level)
+ return false;
+
+ var currentSourceInfo = (sourceLink ? sourceLink.href + ":" + sourceLink.line +
+ (sourceLink.col ? ":" + sourceLink.col : "") : "");
+ var otherSourceInfo = (otherLink ? otherLink.href + ":" + otherLink.line +
+ (otherLink.col ? ":" + otherLink.col : "") : "");
+ return currentSourceInfo === otherSourceInfo;
+ }
+
+ /**
+ * Checks whether two variables are equal.
+ *
+ * @param {*} a First variable to be compared
+ * @param {*} b Second variable to be compared
+ * @returns {Boolean|undefined} True if values are equal, false if not,
+ * undefined if they are similar
+ */
+ function areEqual(a, b)
+ {
+ if (typeof a === "object" && a !== null)
+ return false;
+
+ if (a === b)
+ return true;
+
+ if (typeof a === "number" && typeof b === "number")
+ return isNaN(a) && isNaN(b);
+
+ return false;
+ }
+
+ return function matchMessage(otherObject, otherAppender, otherClassName, otherRep,
+ otherSourceLink, otherLevel)
+ {
+ try
+ {
+ if (!matchesMetaData(otherAppender, otherClassName, otherRep, otherSourceLink,
+ otherLevel))
+ {
+ return false;
+ }
+
+ var str = Object.prototype.toString.call(object);
+ var isArray = (str === "[object Arguments]" || str === "[object Array]");
+ if (isArray && rep !== FirebugReps.Arr)
+ {
+ // console.log et al.
+ if (object.length !== otherObject.length)
+ return false;
+
+ for (var i=0, len=object.length; i<len; ++i)
+ {
+ if (!areEqual(object[i], otherObject[i]))
+ return false;
+ }
+
+ return true;
+ }
+
+ // Internal chrome objects are allowed to implement a custom "getId" function.
+ if (object instanceof Object && "getId" in object)
+ return ("getId" in otherObject && object.getId() === otherObject.getId());
+
+ return areEqual(object, otherObject);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("consolePanel.getMessageMatcher; failed to check equality", exc);
+
+ return false;
+ }
+ };
+ },
+
+ increaseRowCount: function(row)
+ {
+ var counter = row.getElementsByClassName("logCounter").item(0);
+ if (!counter)
+ return;
+ var value = counter.getElementsByClassName("logCounterValue").item(0);
+ if (!value)
+ return;
+
+ var count = parseInt(value.textContent);
+ if (isNaN(count))
+ count = 1;
+
+ count++;
+ counter.setAttribute("count", count);
+ value.textContent = count;
+ },
+
+ append: function(appender, objects, className, rep, sourceLink, noRow)
+ {
+ var row;
+ var container = this.getTopContainer();
+ if (noRow)
+ {
+ appender.apply(this, [objects]);
+ }
+ else
+ {
+ row = this.createRow("logRow", className);
+ var logContent = row.getElementsByClassName("logContent").item(0);
+ appender.apply(this, [objects, logContent, rep]);
+
+ // If sourceLink is not provided and the object is an instance of Error
+ // convert it into ErrorMessageObj instance, which implements getSourceLink
+ // method.
+ // xxxHonza: is there a better place where to make this kind of conversion?
+ if (!sourceLink && (objects instanceof Error))
+ objects = FirebugReps.Except.getErrorMessage(objects);
+
+ if (!sourceLink && objects && objects.getSourceLink)
+ sourceLink = objects.getSourceLink();
+
+ if (Options.get("console.groupLogMessages") && this.matchesLastMessage &&
+ this.matchesLastMessage(objects, appender, className, rep, sourceLink,
+ this.groups ? this.groups.length : 0))
+ {
+ this.increaseRowCount(container.lastChild);
+ row = container.lastChild;
+ }
+ else
+ {
+ if (sourceLink)
+ FirebugReps.SourceLink.tag.append({object: sourceLink}, row.firstChild);
+
+ container.appendChild(row);
+ }
+
+ this.matchesLastMessage = this.getMessageMatcher(objects, appender, className, rep,
+ sourceLink, this.groups ? this.groups.length : 0);
+
+ this.filterLogRow(row, this.wasScrolledToBottom);
+
+ if (FBTrace.DBG_CONSOLE)
+ {
+ FBTrace.sysout("console.append; wasScrolledToBottom " + this.wasScrolledToBottom +
+ " " + row.textContent);
+ }
+
+ if (this.wasScrolledToBottom)
+ Dom.scrollToBottom(this.panelNode);
+
+ return row;
+ }
+ },
+
+ clear: function()
+ {
+ if (this.panelNode)
+ {
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("ConsolePanel.clear");
+
+ Dom.clearNode(this.panelNode);
+ this.insertLogLimit(this.context);
+
+ Dom.scrollToBottom(this.panelNode);
+ this.wasScrolledToBottom = true;
+
+ // Don't forget to clear opened groups, if any.
+ this.groups = null;
+
+ this.matchesLastMessage = null;
+ }
+ },
+
+ insertLogLimit: function()
+ {
+ // Create limit row. This row is the first in the list of entries
+ // and initially hidden. It's displayed as soon as the number of
+ // entries reaches the limit.
+ var row = this.createRow("limitRow");
+
+ var limitInfo = {
+ totalCount: 0,
+ limitPrefsTitle: Locale.$STRF("LimitPrefsTitle",
+ [Options.prefDomain+".console.logLimit"])
+ };
+
+ var netLimitRep = Firebug.NetMonitor.NetLimit;
+ var nodes = netLimitRep.createTable(row, limitInfo);
+
+ this.limit = nodes[1];
+
+ var container = this.panelNode;
+ container.insertBefore(nodes[0], container.firstChild);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ appendObject: function(object, row, rep)
+ {
+ if (!rep)
+ rep = Firebug.getRep(object, this.context);
+
+ // Don't forget to pass the template itself as the 'self' parameter so that it's used
+ // by domplate as the 'subject' for the generation. Note that the primary purpose
+ // of the subject is to provide a context object ('with (subject) {...}') for data that
+ // are dynamically consumed during the rendering process.
+ // This allows to derive new templates from an existing ones, without breaking
+ // the default subject set within domplate() function.
+ try
+ {
+ // XXX Hack until we get IF support in domplate (or bug 116083 gets fixed).
+ var tag = rep.tag;
+ if (rep === FirebugReps.Text)
+ tag = rep.getWhitespaceCorrectedTag(object);
+ return tag.append({object: object}, row, rep);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("consolePanel.appendObject; EXCEPTION " + e, e);
+ FBTrace.sysout("consolePanel.appendObject; rep " + rep.className, rep);
+ }
+ }
+ },
+
+ appendFormatted: function(objects, row, rep)
+ {
+ function logText(text, row)
+ {
+ var nodeSpan = row.ownerDocument.createElement("span");
+ Css.setClass(nodeSpan, "logRowHint");
+ var node = row.ownerDocument.createTextNode(text);
+ row.appendChild(nodeSpan);
+ nodeSpan.appendChild(node);
+ }
+
+ function logTextNode(text, row)
+ {
+ var nodeSpan = row.ownerDocument.createElement("span");
+ if (text === "" || text === null || typeof(text) == "undefined")
+ Css.setClass(nodeSpan, "logRowHint");
+
+ if (text === "")
+ text = Locale.$STR("console.msg.an_empty_string");
+
+ var node = row.ownerDocument.createTextNode(text);
+ row.appendChild(nodeSpan);
+ nodeSpan.appendChild(node);
+ }
+
+ function addStyle(node, css)
+ {
+ var dummyEl = node.ownerDocument.createElementNS("http://www.w3.org/1999/xhtml", "div");
+ dummyEl.setAttribute("style", css);
+ node.setAttribute("style", "");
+ for (var i = 0; i < dummyEl.style.length; i++)
+ {
+ var prop = dummyEl.style[i];
+ if (reAllowedCss.test(prop))
+ node.style.setProperty(prop, dummyEl.style.getPropertyValue(prop));
+ }
+ }
+
+ if (!objects || !objects.length)
+ {
+ // Make sure the log-row has proper height (even if empty).
+ logText(Locale.$STR("console.msg.nothing_to_output"), row);
+ return;
+ }
+
+ var format = objects[0];
+ var objIndex = 1;
+
+ if (typeof(format) != "string")
+ {
+ format = "";
+ objIndex = 0;
+ }
+ else
+ {
+ // So, we have only a string...
+ if (objects.length === 1)
+ {
+ // ...and it has no characters.
+ if (format.length < 1)
+ {
+ logText(Locale.$STR("console.msg.an_empty_string"), row);
+ return;
+ }
+ }
+ }
+
+ var parts = parseFormat(format);
+ var trialIndex = objIndex;
+ for (var i = 0; i < parts.length; i++)
+ {
+ var part = parts[i];
+ if (part && typeof(part) == "object")
+ {
+ if (trialIndex++ >= objects.length)
+ {
+ // Too few parameters for format, assume unformatted.
+ format = "";
+ objIndex = 0;
+ parts.length = 0;
+ break;
+ }
+ }
+ }
+
+ // Last CSS style defined using "%c" that should be applied on
+ // created log-row parts (elements). See issue 6064.
+ // Example: console.log('%cred-text %cgreen-text', 'color:red', 'color:green');
+ var lastStyle;
+
+ for (var i = 0; i < parts.length; ++i)
+ {
+ var node;
+ var part = parts[i];
+ if (part && typeof(part) == "object")
+ {
+ var object = objects[objIndex];
+ if (part.type == "%c")
+ {
+ lastStyle = object.toString();
+ }
+ else if (objIndex < objects.length)
+ {
+ if (part.type == "%f" && part.precision != -1)
+ object = parseFloat(object).toFixed(part.precision);
+ node = this.appendObject(object, row, part.rep);
+ }
+ else
+ {
+ node = this.appendObject(part.type, row, FirebugReps.Text);
+ }
+ objIndex++;
+ }
+ else
+ {
+ var tag = FirebugReps.Text.getWhitespaceCorrectedTag(part);
+ node = tag.append({object: part}, row);
+ }
+
+ // Apply custom style if available.
+ if (lastStyle && node)
+ addStyle(node, lastStyle);
+
+ node = null;
+ }
+
+ for (var i = objIndex; i < objects.length; ++i)
+ {
+ logTextNode(" ", row);
+
+ var object = objects[i];
+ if (typeof(object) == "string")
+ logTextNode(object, row);
+ else
+ this.appendObject(object, row);
+ }
+ },
+
+ appendCollapsedGroup: function(objects, row, rep)
+ {
+ this.appendOpenGroup(objects, row, rep);
+ Css.removeClass(row, "opened");
+ },
+
+ appendOpenGroup: function(objects, row, rep)
+ {
+ if (!this.groups)
+ this.groups = [];
+
+ Css.setClass(row, "logGroup");
+ Css.setClass(row, "opened");
+
+ var innerRow = this.createRow("logRow");
+ Css.setClass(innerRow, "logGroupLabel");
+
+ // Custom rep is used in place of group label.
+ if (rep)
+ rep.tag.replace({"object": objects}, innerRow);
+ else
+ this.appendFormatted(objects, innerRow, rep);
+
+ row.appendChild(innerRow);
+ Events.dispatch(this.fbListeners, "onLogRowCreated", [this, innerRow]);
+
+ // Create group body, which is displayed when the group is expanded.
+ var groupBody = this.createRow("logGroupBody");
+ row.appendChild(groupBody);
+ groupBody.setAttribute("role", "group");
+ this.groups.push(groupBody);
+
+ // Expand/collapse logic.
+ Events.addEventListener(innerRow, "mousedown", function(event)
+ {
+ if (Events.isLeftClick(event))
+ {
+ var groupRow = event.currentTarget.parentNode;
+ if (Css.hasClass(groupRow, "opened"))
+ {
+ Css.removeClass(groupRow, "opened");
+ event.target.setAttribute("aria-expanded", "false");
+ }
+ else
+ {
+ Css.setClass(groupRow, "opened");
+ event.target.setAttribute("aria-expanded", "true");
+ }
+ }
+ }, false);
+ },
+
+ appendCloseGroup: function(object, row, rep)
+ {
+ if (this.groups)
+ this.groups.pop();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // private
+
+ createRow: function(rowName, className)
+ {
+ var elt = this.document.createElement("div");
+ var row = this.template.logRowTag.append({className: rowName +
+ (className ? " " + rowName + "-" + className : "")}, elt);
+ return row;
+ },
+
+ getTopContainer: function()
+ {
+ if (this.groups && this.groups.length)
+ return this.groups[this.groups.length-1];
+ else
+ return this.panelNode;
+ },
+
+ getLogRowType: function(logRow)
+ {
+ var typeMatch = /logRow-(\S*)/.exec(logRow.classList);
+ var type = typeMatch ? typeMatch[1] : "";
+
+ // xxxsz: There can be two kinds of error and warning messages,
+ // which have one type. So map the different classes to the type
+ // they represent.
+ // TODO: Merge different CSS class names for log message types
+ if (type == "errorMessage")
+ type = "error";
+ else if (type == "warn" || type == "warningMessage")
+ type = "warning";
+
+ return type;
+ },
+
+ filterLogRow: function(logRow, scrolledToBottom)
+ {
+ if (this.matchesFilter(logRow))
+ {
+ // Mark the groups, in which the log row is located, also as matched
+ for (var group = Dom.getAncestorByClass(logRow, "logRow-group"); group;
+ group = Dom.getAncestorByClass(group.parentNode, "logRow-group"))
+ {
+ Css.setClass(group, "contentMatchesFilter");
+ this.filterMatchSet.push(group);
+ }
+ }
+
+ if (this.searchText)
+ {
+ Css.setClass(logRow, "matching");
+ Css.setClass(logRow, "matched");
+
+ // Search after a delay because we must wait for a frame to be created for
+ // the new logRow so that the finder will be able to locate it
+ setTimeout(Obj.bindFixed(function()
+ {
+ if (this.searchFilter(this.searchText, logRow))
+ this.matchSet.push(logRow);
+ else
+ Css.removeClass(logRow, "matched");
+
+ Css.removeClass(logRow, "matching");
+
+ if (scrolledToBottom)
+ Dom.scrollToBottom(this.panelNode);
+ }, this), 100);
+ }
+ },
+
+ searchFilter: function(text, logRow)
+ {
+ var count = this.panelNode.childNodes.length;
+ var searchRange = this.document.createRange();
+ searchRange.setStart(this.panelNode, 0);
+ searchRange.setEnd(this.panelNode, count);
+
+ var startPt = this.document.createRange();
+ startPt.setStartBefore(logRow);
+
+ var endPt = this.document.createRange();
+ endPt.setStartAfter(logRow);
+
+ return Search.finder.Find(text, searchRange, startPt, endPt) != null;
+ },
+
+ showCommandLine: function(shouldShow)
+ {
+ if (shouldShow)
+ {
+ Dom.collapse(Firebug.chrome.$("fbCommandBox"), false);
+ Firebug.CommandLine.setMultiLine(Firebug.commandEditor, Firebug.chrome);
+ }
+ else
+ {
+ // Make sure that entire content of the Console panel is hidden when
+ // the panel is disabled.
+ Firebug.CommandLine.setMultiLine(false, Firebug.chrome, Firebug.commandEditor);
+ Dom.collapse(Firebug.chrome.$("fbCommandBox"), true);
+ }
+ },
+
+ onScroll: function(event)
+ {
+ // Update the scroll position flag if the position changes.
+ this.wasScrolledToBottom = Dom.isScrolledToBottom(this.panelNode);
+
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("console.onScroll; wasScrolledToBottom: " +
+ this.wasScrolledToBottom + ", wasScrolledToBottom: " +
+ this.context.getName(), event);
+ },
+
+ onResize: function(event)
+ {
+ if (FBTrace.DBG_CONSOLE)
+ FBTrace.sysout("console.onResize; wasScrolledToBottom: " +
+ this.wasScrolledToBottom + ", offsetHeight: " + this.panelNode.offsetHeight +
+ ", scrollTop: " + this.panelNode.scrollTop + ", scrollHeight: " +
+ this.panelNode.scrollHeight + ", " + this.context.getName(), event);
+
+ if (this.wasScrolledToBottom)
+ Dom.scrollToBottom(this.panelNode);
+ },
+
+ showInfoTip: function(infoTip, target, x, y)
+ {
+ var object = Firebug.getRepObject(target);
+ var rep = Firebug.getRep(object, this.context);
+ if (!rep)
+ return false;
+
+ return rep.showInfoTip(infoTip, target, x, y);
+ }
+});
+
+// ********************************************************************************************* //
+
+function parseFormat(format)
+{
+ var parts = [];
+ if (format.length <= 0)
+ return parts;
+
+ var reg = /(%{1,2})(\.\d+)?([a-zA-Z])/;
+ for (var m = reg.exec(format); m; m = reg.exec(format))
+ {
+ // If the percentage sign is escaped, then just output it
+ if (m[1] == "%%")
+ {
+ parts.push(format.substr(0, m.index) + m[0].substr(1));
+ }
+ // A pattern was found, so it needs to be interpreted
+ else
+ {
+ var type = m[3];
+ var precision = m[2] ? parseInt(m[2].substr(1)) : -1;
+
+ var rep = null;
+ switch (type)
+ {
+ case "s":
+ rep = FirebugReps.Text;
+ break;
+
+ case "f":
+ case "i":
+ case "d":
+ rep = FirebugReps.Number;
+ break;
+
+ case "o":
+ case "c":
+ rep = null;
+ break;
+ }
+
+ parts.push(format.substr(0, m.index));
+ parts.push({rep: rep, precision: precision, type: "%" + type});
+ }
+
+ format = format.substr(m.index + m[0].length);
+ }
+
+ parts.push(format);
+ return parts;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(Firebug.ConsolePanel);
+
+return Firebug.ConsolePanel;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/console/errorCopy.js b/content/firebug/console/errorCopy.js
index 253216b..3e6be25 100644
--- a/content/firebug/console/errorCopy.js
+++ b/content/firebug/console/errorCopy.js
@@ -1,34 +1,34 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/chrome/reps",
-],
-function(FBTrace, FirebugReps) {
-
-"use strict"
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-// ErrorCopy Object Implementation
-
-var ErrorCopy = function(message)
-{
- this.message = message;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-// xxxHonza: back compatibility
-FirebugReps.ErrorCopy = ErrorCopy;
-
-return ErrorCopy;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/chrome/reps",
+],
+function(FBTrace, FirebugReps) {
+
+"use strict"
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+// ErrorCopy Object Implementation
+
+var ErrorCopy = function(message)
+{
+ this.message = message;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+// xxxHonza: back compatibility
+FirebugReps.ErrorCopy = ErrorCopy;
+
+return ErrorCopy;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/errorMessageObj.js b/content/firebug/console/errorMessageObj.js
index 5f9b123..b2b747d 100644
--- a/content/firebug/console/errorMessageObj.js
+++ b/content/firebug/console/errorMessageObj.js
@@ -1,105 +1,105 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/trace",
- "firebug/js/sourceFile",
- "firebug/js/sourceLink",
- "firebug/chrome/reps",
-],
-function(Firebug, FBTrace, SourceFile, SourceLink, FirebugReps) {
-
-"use strict"
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-// ErrorMessageObj Implementation
-
-/**
- * @object This object collects data about an error that happens in the content. It's used
- * by {@ErrorMessage} Domplate template as the data source.
- */
-function ErrorMessageObj(message, href, lineNo, source, category, context,
- trace, msgId, colNumber)
-{
- this.message = message;
- this.href = href;
- this.lineNo = lineNo;
- this.source = source;
- this.category = category;
- this.context = context;
- this.trace = trace;
- this.msgId = msgId || this.getId();
- this.colNumber = colNumber;
-};
-
-ErrorMessageObj.prototype =
-/** @lends ErrorMessageObj */
-{
- getSourceLine: function()
- {
- if (this.href === null)
- return "";
-
- if (!this.context.sourceCache)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("reps.ErrorMessageObj.getSourceLine; ERROR no source cache!");
- return "";
- }
-
- return this.context.sourceCache.getLine(this.href, this.lineNo);
- },
-
- getSourceLink: function()
- {
- var ext = this.category == "css" ? "css" : "js";
- return this.lineNo ? new SourceLink.SourceLink(this.href, this.lineNo, ext,
- null, null, this.colNumber) : null;
- },
-
- resetSource: function()
- {
- if (this.href && this.lineNo != null)
- this.source = this.getSourceLine();
- },
-
- correctWithStackTrace: function(trace)
- {
- var frame = trace.frames[0];
- if (frame)
- {
- this.href = frame.href;
- this.lineNo = frame.line;
- this.trace = trace;
- }
- },
-
- correctSourcePoint: function(sourceName, lineNumber)
- {
- this.href = sourceName;
- this.lineNo = lineNumber;
- },
-
- getId: function()
- {
- return this.href + ":" + this.message + ":" + this.lineNo + ":" +
- (this.colNumber ? this.colNumber : "");
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-// xxxHonza: back compatibility
-FirebugReps.ErrorMessageObj = ErrorMessageObj;
-
-return ErrorMessageObj;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/trace",
+ "firebug/js/sourceFile",
+ "firebug/js/sourceLink",
+ "firebug/chrome/reps",
+],
+function(Firebug, FBTrace, SourceFile, SourceLink, FirebugReps) {
+
+"use strict"
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+// ErrorMessageObj Implementation
+
+/**
+ * @object This object collects data about an error that happens in the content. It's used
+ * by {@ErrorMessage} Domplate template as the data source.
+ */
+function ErrorMessageObj(message, href, lineNo, source, category, context,
+ trace, msgId, colNumber)
+{
+ this.message = message;
+ this.href = href;
+ this.lineNo = lineNo;
+ this.source = source;
+ this.category = category;
+ this.context = context;
+ this.trace = trace;
+ this.msgId = msgId || this.getId();
+ this.colNumber = colNumber;
+};
+
+ErrorMessageObj.prototype =
+/** @lends ErrorMessageObj */
+{
+ getSourceLine: function()
+ {
+ if (this.href === null)
+ return "";
+
+ if (!this.context.sourceCache)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("reps.ErrorMessageObj.getSourceLine; ERROR no source cache!");
+ return "";
+ }
+
+ return this.context.sourceCache.getLine(this.href, this.lineNo);
+ },
+
+ getSourceLink: function()
+ {
+ var ext = this.category == "css" ? "css" : "js";
+ return this.lineNo ? new SourceLink.SourceLink(this.href, this.lineNo, ext,
+ null, null, this.colNumber) : null;
+ },
+
+ resetSource: function()
+ {
+ if (this.href && this.lineNo != null)
+ this.source = this.getSourceLine();
+ },
+
+ correctWithStackTrace: function(trace)
+ {
+ var frame = trace.frames[0];
+ if (frame)
+ {
+ this.href = frame.href;
+ this.lineNo = frame.line;
+ this.trace = trace;
+ }
+ },
+
+ correctSourcePoint: function(sourceName, lineNumber)
+ {
+ this.href = sourceName;
+ this.lineNo = lineNumber;
+ },
+
+ getId: function()
+ {
+ return this.href + ":" + this.message + ":" + this.lineNo + ":" +
+ (this.colNumber ? this.colNumber : "");
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+// xxxHonza: back compatibility
+FirebugReps.ErrorMessageObj = ErrorMessageObj;
+
+return ErrorMessageObj;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/errorMessageRep.js b/content/firebug/console/errorMessageRep.js
index a77c7e7..82f5623 100644
--- a/content/firebug/console/errorMessageRep.js
+++ b/content/firebug/console/errorMessageRep.js
@@ -1,470 +1,470 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/trace",
- "firebug/lib/domplate",
- "firebug/console/errors",
- "firebug/console/errorMessageObj",
- "firebug/chrome/reps",
- "firebug/lib/locale",
- "firebug/lib/url",
- "firebug/lib/string",
- "firebug/js/sourceLink",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/lib/object",
- "firebug/chrome/menu",
- "firebug/lib/system",
- "firebug/lib/events",
- "firebug/js/fbs",
- "firebug/chrome/panelActivation",
-],
-function(Firebug, FBTrace, Domplate, Errors, ErrorMessageObj, FirebugReps, Locale, Url, Str,
- SourceLink, Dom, Css, Obj, Menu, System, Events, FBS, PanelActivation) {
-
-"use strict"
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-
-var {domplate, TAG, SPAN, DIV, TD, TR, TABLE, TBODY, A, PRE} = Domplate;
-
-// ********************************************************************************************* //
-// ErrorMessage Template Implementation
-
-/**
- * @domplate Domplate template used to represent Error logs in the UI. Registered as Firebug rep.
- * This template is used for {@ErrorMessageObj} instances.
- */
-var ErrorMessage = domplate(Firebug.Rep,
-/** @lends ErrorMessage */
-{
- className: "errorMessage",
- inspectable: false,
- sourceLimit: 80,
- alterText: "...",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- tag:
- FirebugReps.OBJECTBOX({
- $hasTwisty: "$object|hasStackTrace",
- $hasBreakSwitch: "$object|hasBreakSwitch",
- $breakForError: "$object|hasErrorBreak",
- _repObject: "$object",
- _stackTrace: "$object|getLastErrorStackTrace",
- onclick: "$onToggleError"},
- DIV({"class": "errorTitle focusRow subLogRow", role: "listitem"},
- SPAN({"class": "errorMessage"},
- "$object.message"
- )
- ),
- DIV({"class": "errorTrace", role: "presentation"}),
- TAG("$object|getObjectsTag", {object: "$object.objects"}),
- DIV({"class": "errorSourceBox errorSource-$object|getSourceType focusRow subLogRow",
- role: "listitem"},
- TABLE({cellspacing: 0, cellpadding: 0},
- TBODY(
- TR(
- TD(
- SPAN({"class": "$object|isBreakableError a11yFocus",
- role: "checkbox", "aria-checked": "$object|hasErrorBreak",
- title: Locale.$STR("console.Break On This Error")})
- ),
- TD(
- A({"class": "errorSource a11yFocus"},
- PRE({"class": "errorSourceCode",
- title: "$object|getSourceTitle"}, "$object|getSource")
- )
- )
- ),
- TR({$collapsed: "$object|hideErrorCaret"},
- TD(),
- TD(
- DIV({"class": "errorColPosition"},
- "$object|getColumnPosition"
- ),
- DIV({"class": "errorColCaret"})
- )
- )
- )
- )
- )
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getObjectsTag: function(error)
- {
- return error.objects ? FirebugReps.Arr.tag : SPAN();
- },
-
- getLastErrorStackTrace: function(error)
- {
- return error.trace;
- },
-
- hasStackTrace: function(error)
- {
- if (!error)
- return false;
-
- if (error.trace)
- return true;
-
- // The expand icon is displayed also in case where the actual stack trace
- // isn't available because the debugger (the Script panel) was disabled.
- // In this case, an explanatory message is shown instead.
- if (error.missingTraceBecauseNoDebugger)
- return true;
-
- return false;
- },
-
- hasBreakSwitch: function(error)
- {
- return error.href && error.lineNo > 0;
- },
-
- isBreakableError: function(error)
- {
- return (error.category === "js") ? "errorBreak" : "errorUnbreakable";
- },
-
- hasErrorBreak: function(error)
- {
- return FBS.hasErrorBreakpoint(Url.normalizeURL(error.href), error.lineNo);
- },
-
- getSource: function(error, noCrop)
- {
- if (error.source && noCrop)
- {
- return error.source;
- }
- else if (error.source)
- {
- return Str.cropStringEx(Str.trim(error.source), this.sourceLimit,
- this.alterText, error.colNumber);
- }
-
- if (error.category == "js" && error.href &&
- error.href.indexOf("XPCSafeJSObjectWrapper") != -1)
- {
- return "";
- }
-
- var source = error.getSourceLine();
- if (source && noCrop)
- {
- return source;
- }
- else if (source)
- {
- return Str.cropStringEx(Str.trim(source), this.sourceLimit,
- this.alterText, error.colNumber);
- }
-
- return "";
- },
-
- hideErrorCaret: function(error)
- {
- var source = this.getSource(error);
- if (!source)
- return true;
-
- if (typeof(error.colNumber) == "undefined")
- return true;
-
- return false;
- },
-
- getColumnPosition: function(error)
- {
- if (this.hideErrorCaret(error))
- return "";
-
- var colNumber = error.colNumber;
- var originalLength = error.source.length;
- var trimmedLength = Str.trimLeft(error.source).length;
-
- // The source line is displayed without starting whitespaces.
- colNumber -= (originalLength - trimmedLength);
-
- var source = this.getSource(error, true);
- if (!source)
- return "";
-
- source = Str.trim(source);
-
- // Count how much the pivot needs to be adjusted (based on Str.cropStringEx)
- var halfLimit = this.sourceLimit/2;
- var pivot = error.colNumber;
- if (pivot < halfLimit)
- pivot = halfLimit;
-
- if (pivot > source.length - halfLimit)
- pivot = source.length - halfLimit;
-
- // Subtract some columns if the text has been cropped at the beginning.
- var begin = Math.max(0, pivot - halfLimit);
- colNumber -= begin;
-
- // Add come cols because there is an alterText at the beginning now.
- if (begin > 0)
- colNumber += this.alterText.length;
-
- var text = "";
- for (var i=0; i<colNumber; i++)
- text += "-";
-
- return text;
- },
-
- getSourceTitle: function(error)
- {
- var source = this.getSource(error, true);
- return source ? Str.trim(source) : "";
- },
-
- getSourceType: function(error)
- {
- // Errors occurring inside of HTML event handlers look like "foo.html (line 1)"
- // so let's try to skip those
- if (error.source)
- return "syntax";
- else if (error.category == "css")
- return "show";
- else if (!error.href || !error.lineNo)
- return "none";
- // Why do we have that at all?
- else if (error.lineNo == 1 && Url.getFileExtension(error.href) != "js")
- return "none";
- else
- return "show";
- },
-
- onToggleError: function(event)
- {
- var target = event.currentTarget;
- if (Css.hasClass(event.target, "errorBreak"))
- {
- var panel = Firebug.getElementPanel(event.target);
- this.breakOnThisError(target.repObject, panel.context);
- return;
- }
- else if (Css.hasClass(event.target, "errorSourceCode"))
- {
- var panel = Firebug.getElementPanel(event.target);
- this.inspectObject(target.repObject, panel.context);
- return;
- }
-
- var errorTitle = Dom.getAncestorByClass(event.target, "errorTitle");
- if (errorTitle)
- {
- var traceBox = target.getElementsByClassName("errorTrace").item(0);
-
- Css.toggleClass(target, "opened");
- event.target.setAttribute("aria-expanded", Css.hasClass(target, "opened"));
-
- if (Css.hasClass(target, "opened"))
- {
- if (target.stackTrace)
- {
- FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox);
- }
- else if (target.repObject.missingTraceBecauseNoDebugger)
- {
- this.renderStackTraceMessage(traceBox);
- }
-
- if (Firebug.A11yModel.enabled)
- {
- var panel = Firebug.getElementPanel(event.target);
- Events.dispatch(panel.fbListeners, "modifyLogRow", [panel, traceBox]);
- }
- }
- else
- {
- Dom.clearNode(traceBox);
- }
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Stack Trace Message
-
- renderStackTraceMessage: function(parentNode)
- {
- var hasScriptPanel = PanelActivation.isPanelEnabled("script");
- var type = hasScriptPanel ? "reload" : "enable";
- var clickHandler = this.onClickStackTraceMessage.bind(this, type);
- var msg = (hasScriptPanel ? Locale.$STR("console.DebuggerWasDisabledForError") :
- Locale.$STR("console.ScriptPanelMustBeEnabledForTraces"));
-
- parentNode.classList.add("message");
-
- FirebugReps.Description.render(msg, parentNode, clickHandler);
- },
-
- onClickStackTraceMessage: function(type, event)
- {
- var target = event.target;
-
- if (type == "enable")
- {
- // Enable the Script panel.
- var scriptPanelType = Firebug.getPanelType("script");
- PanelActivation.enablePanel(scriptPanelType);
- }
- else if (type == "reload")
- {
- var panel = Firebug.getElementPanel(target);
- Firebug.TabWatcher.reloadPageFromMemory(panel.context);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- copyError: function(error)
- {
- var message = [
- error.message,
- error.href,
- "Line " + error.lineNo
- ];
- System.copyToClipboard(message.join(Str.lineBreak()));
- },
-
- breakOnThisError: function(error, context)
- {
- var compilationUnit = context.getCompilationUnit(Url.normalizeURL(error.href));
- if (!compilationUnit)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("reps.breakOnThisError has no source file for error.href: " +
- error.href + " error:" + error, context);
- return;
- }
-
- if (this.hasErrorBreak(error))
- Firebug.Debugger.clearErrorBreakpoint(compilationUnit, error.lineNo);
- else
- Firebug.Debugger.setErrorBreakpoint(compilationUnit, error.lineNo);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- supportsObject: function(object, type)
- {
- return object instanceof ErrorMessageObj;
- },
-
- inspectObject: function(error, context)
- {
- var sourceLink = error.getSourceLink();
- FirebugReps.SourceLink.inspectObject(sourceLink, context);
- },
-
- getContextMenuItems: function(error, target, context)
- {
- var breakOnThisError = this.hasErrorBreak(error);
-
- var items = [
- {
- label: "CopyError",
- tooltiptext: "console.menu.tip.Copy_Error",
- command: Obj.bindFixed(this.copyError, this, error)
- }
- ];
-
- if (error.category != "css")
- {
- items.push(
- "-",
- {
- label: "BreakOnThisError",
- tooltiptext: "console.menu.tip.Break_On_This_Error",
- type: "checkbox",
- checked: breakOnThisError,
- command: Obj.bindFixed(this.breakOnThisError, this, error, context)
- },
- Menu.optionMenu("BreakOnAllErrors", "breakOnErrors",
- "console.menu.tip.Break_On_All_Errors")
- );
- }
-
- return items;
- },
-});
-
-// ********************************************************************************************* //
-// ErrorMessageUpdater Module
-
-/**
- * @module Responsible for asynchronous UI update or ErrorMessage template.
- */
-var ErrorMessageUpdater = Obj.extend(Firebug.Module,
-/** @lends ErrorMessageUpdater */
-{
- dispatchName: "ErrorMessageUpdater",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Module
-
- initialize: function()
- {
- Firebug.Module.initialize.apply(this, arguments);
- PanelActivation.addListener(this);
- },
-
- shutdown: function()
- {
- Firebug.Module.shutdown.apply(this, arguments);
- PanelActivation.removeListener(this);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // PanelActivation
-
- activationChanged: function(panelType, enable)
- {
- // The Script panel's activation changed. Make sure all trace messages (for errors)
- // are updated. It must be done for all contexts since panel activation always
- // applies to all contexts.
- if (panelType.prototype.name == "script")
- Firebug.connection.eachContext(this.updateConsolePanel.bind(this));
- },
-
- updateConsolePanel: function(context)
- {
- var panel = context.getPanel("console", true);
- if (!panel)
- return;
-
- // Update all existing user messages in the panel.
- var messages = panel.panelNode.querySelectorAll(".errorTrace.message");
- for (var i=0; i<messages.length; i++)
- ErrorMessage.renderStackTraceMessage(messages[i]);
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-// xxxHonza: back compatibility
-FirebugReps.ErrorMessage = ErrorMessage;
-
-Firebug.registerModule(ErrorMessageUpdater);
-Firebug.registerRep(ErrorMessage);
-
-return ErrorMessage;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/trace",
+ "firebug/lib/domplate",
+ "firebug/console/errors",
+ "firebug/console/errorMessageObj",
+ "firebug/chrome/reps",
+ "firebug/lib/locale",
+ "firebug/lib/url",
+ "firebug/lib/string",
+ "firebug/js/sourceLink",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/lib/object",
+ "firebug/chrome/menu",
+ "firebug/lib/system",
+ "firebug/lib/events",
+ "firebug/js/fbs",
+ "firebug/chrome/panelActivation",
+],
+function(Firebug, FBTrace, Domplate, Errors, ErrorMessageObj, FirebugReps, Locale, Url, Str,
+ SourceLink, Dom, Css, Obj, Menu, System, Events, FBS, PanelActivation) {
+
+"use strict"
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+
+var {domplate, TAG, SPAN, DIV, TD, TR, TABLE, TBODY, A, PRE} = Domplate;
+
+// ********************************************************************************************* //
+// ErrorMessage Template Implementation
+
+/**
+ * @domplate Domplate template used to represent Error logs in the UI. Registered as Firebug rep.
+ * This template is used for {@ErrorMessageObj} instances.
+ */
+var ErrorMessage = domplate(Firebug.Rep,
+/** @lends ErrorMessage */
+{
+ className: "errorMessage",
+ inspectable: false,
+ sourceLimit: 80,
+ alterText: "...",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ tag:
+ FirebugReps.OBJECTBOX({
+ $hasTwisty: "$object|hasStackTrace",
+ $hasBreakSwitch: "$object|hasBreakSwitch",
+ $breakForError: "$object|hasErrorBreak",
+ _repObject: "$object",
+ _stackTrace: "$object|getLastErrorStackTrace",
+ onclick: "$onToggleError"},
+ DIV({"class": "errorTitle focusRow subLogRow", role: "listitem"},
+ SPAN({"class": "errorMessage"},
+ "$object.message"
+ )
+ ),
+ DIV({"class": "errorTrace", role: "presentation"}),
+ TAG("$object|getObjectsTag", {object: "$object.objects"}),
+ DIV({"class": "errorSourceBox errorSource-$object|getSourceType focusRow subLogRow",
+ role: "listitem"},
+ TABLE({cellspacing: 0, cellpadding: 0},
+ TBODY(
+ TR(
+ TD(
+ SPAN({"class": "$object|isBreakableError a11yFocus",
+ role: "checkbox", "aria-checked": "$object|hasErrorBreak",
+ title: Locale.$STR("console.Break On This Error")})
+ ),
+ TD(
+ A({"class": "errorSource a11yFocus"},
+ PRE({"class": "errorSourceCode",
+ title: "$object|getSourceTitle"}, "$object|getSource")
+ )
+ )
+ ),
+ TR({$collapsed: "$object|hideErrorCaret"},
+ TD(),
+ TD(
+ DIV({"class": "errorColPosition"},
+ "$object|getColumnPosition"
+ ),
+ DIV({"class": "errorColCaret"})
+ )
+ )
+ )
+ )
+ )
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getObjectsTag: function(error)
+ {
+ return error.objects ? FirebugReps.Arr.tag : SPAN();
+ },
+
+ getLastErrorStackTrace: function(error)
+ {
+ return error.trace;
+ },
+
+ hasStackTrace: function(error)
+ {
+ if (!error)
+ return false;
+
+ if (error.trace)
+ return true;
+
+ // The expand icon is displayed also in case where the actual stack trace
+ // isn't available because the debugger (the Script panel) was disabled.
+ // In this case, an explanatory message is shown instead.
+ if (error.missingTraceBecauseNoDebugger)
+ return true;
+
+ return false;
+ },
+
+ hasBreakSwitch: function(error)
+ {
+ return error.href && error.lineNo > 0;
+ },
+
+ isBreakableError: function(error)
+ {
+ return (error.category === "js") ? "errorBreak" : "errorUnbreakable";
+ },
+
+ hasErrorBreak: function(error)
+ {
+ return FBS.hasErrorBreakpoint(Url.normalizeURL(error.href), error.lineNo);
+ },
+
+ getSource: function(error, noCrop)
+ {
+ if (error.source && noCrop)
+ {
+ return error.source;
+ }
+ else if (error.source)
+ {
+ return Str.cropStringEx(Str.trim(error.source), this.sourceLimit,
+ this.alterText, error.colNumber);
+ }
+
+ if (error.category == "js" && error.href &&
+ error.href.indexOf("XPCSafeJSObjectWrapper") != -1)
+ {
+ return "";
+ }
+
+ var source = error.getSourceLine();
+ if (source && noCrop)
+ {
+ return source;
+ }
+ else if (source)
+ {
+ return Str.cropStringEx(Str.trim(source), this.sourceLimit,
+ this.alterText, error.colNumber);
+ }
+
+ return "";
+ },
+
+ hideErrorCaret: function(error)
+ {
+ var source = this.getSource(error);
+ if (!source)
+ return true;
+
+ if (typeof(error.colNumber) == "undefined")
+ return true;
+
+ return false;
+ },
+
+ getColumnPosition: function(error)
+ {
+ if (this.hideErrorCaret(error))
+ return "";
+
+ var colNumber = error.colNumber;
+ var originalLength = error.source.length;
+ var trimmedLength = Str.trimLeft(error.source).length;
+
+ // The source line is displayed without starting whitespaces.
+ colNumber -= (originalLength - trimmedLength);
+
+ var source = this.getSource(error, true);
+ if (!source)
+ return "";
+
+ source = Str.trim(source);
+
+ // Count how much the pivot needs to be adjusted (based on Str.cropStringEx)
+ var halfLimit = this.sourceLimit/2;
+ var pivot = error.colNumber;
+ if (pivot < halfLimit)
+ pivot = halfLimit;
+
+ if (pivot > source.length - halfLimit)
+ pivot = source.length - halfLimit;
+
+ // Subtract some columns if the text has been cropped at the beginning.
+ var begin = Math.max(0, pivot - halfLimit);
+ colNumber -= begin;
+
+ // Add come cols because there is an alterText at the beginning now.
+ if (begin > 0)
+ colNumber += this.alterText.length;
+
+ var text = "";
+ for (var i=0; i<colNumber; i++)
+ text += "-";
+
+ return text;
+ },
+
+ getSourceTitle: function(error)
+ {
+ var source = this.getSource(error, true);
+ return source ? Str.trim(source) : "";
+ },
+
+ getSourceType: function(error)
+ {
+ // Errors occurring inside of HTML event handlers look like "foo.html (line 1)"
+ // so let's try to skip those
+ if (error.source)
+ return "syntax";
+ else if (error.category == "css")
+ return "show";
+ else if (!error.href || !error.lineNo)
+ return "none";
+ // Why do we have that at all?
+ else if (error.lineNo == 1 && Url.getFileExtension(error.href) != "js")
+ return "none";
+ else
+ return "show";
+ },
+
+ onToggleError: function(event)
+ {
+ var target = event.currentTarget;
+ if (Css.hasClass(event.target, "errorBreak"))
+ {
+ var panel = Firebug.getElementPanel(event.target);
+ this.breakOnThisError(target.repObject, panel.context);
+ return;
+ }
+ else if (Css.hasClass(event.target, "errorSourceCode"))
+ {
+ var panel = Firebug.getElementPanel(event.target);
+ this.inspectObject(target.repObject, panel.context);
+ return;
+ }
+
+ var errorTitle = Dom.getAncestorByClass(event.target, "errorTitle");
+ if (errorTitle)
+ {
+ var traceBox = target.getElementsByClassName("errorTrace").item(0);
+
+ Css.toggleClass(target, "opened");
+ event.target.setAttribute("aria-expanded", Css.hasClass(target, "opened"));
+
+ if (Css.hasClass(target, "opened"))
+ {
+ if (target.stackTrace)
+ {
+ FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox);
+ }
+ else if (target.repObject.missingTraceBecauseNoDebugger)
+ {
+ this.renderStackTraceMessage(traceBox);
+ }
+
+ if (Firebug.A11yModel.enabled)
+ {
+ var panel = Firebug.getElementPanel(event.target);
+ Events.dispatch(panel.fbListeners, "modifyLogRow", [panel, traceBox]);
+ }
+ }
+ else
+ {
+ Dom.clearNode(traceBox);
+ }
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Stack Trace Message
+
+ renderStackTraceMessage: function(parentNode)
+ {
+ var hasScriptPanel = PanelActivation.isPanelEnabled("script");
+ var type = hasScriptPanel ? "reload" : "enable";
+ var clickHandler = this.onClickStackTraceMessage.bind(this, type);
+ var msg = (hasScriptPanel ? Locale.$STR("console.DebuggerWasDisabledForError") :
+ Locale.$STR("console.ScriptPanelMustBeEnabledForTraces"));
+
+ parentNode.classList.add("message");
+
+ FirebugReps.Description.render(msg, parentNode, clickHandler);
+ },
+
+ onClickStackTraceMessage: function(type, event)
+ {
+ var target = event.target;
+
+ if (type == "enable")
+ {
+ // Enable the Script panel.
+ var scriptPanelType = Firebug.getPanelType("script");
+ PanelActivation.enablePanel(scriptPanelType);
+ }
+ else if (type == "reload")
+ {
+ var panel = Firebug.getElementPanel(target);
+ Firebug.TabWatcher.reloadPageFromMemory(panel.context);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ copyError: function(error)
+ {
+ var message = [
+ error.message,
+ error.href,
+ "Line " + error.lineNo
+ ];
+ System.copyToClipboard(message.join(Str.lineBreak()));
+ },
+
+ breakOnThisError: function(error, context)
+ {
+ var compilationUnit = context.getCompilationUnit(Url.normalizeURL(error.href));
+ if (!compilationUnit)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("reps.breakOnThisError has no source file for error.href: " +
+ error.href + " error:" + error, context);
+ return;
+ }
+
+ if (this.hasErrorBreak(error))
+ Firebug.Debugger.clearErrorBreakpoint(compilationUnit, error.lineNo);
+ else
+ Firebug.Debugger.setErrorBreakpoint(compilationUnit, error.lineNo);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof ErrorMessageObj;
+ },
+
+ inspectObject: function(error, context)
+ {
+ var sourceLink = error.getSourceLink();
+ FirebugReps.SourceLink.inspectObject(sourceLink, context);
+ },
+
+ getContextMenuItems: function(error, target, context)
+ {
+ var breakOnThisError = this.hasErrorBreak(error);
+
+ var items = [
+ {
+ label: "CopyError",
+ tooltiptext: "console.menu.tip.Copy_Error",
+ command: Obj.bindFixed(this.copyError, this, error)
+ }
+ ];
+
+ if (error.category != "css")
+ {
+ items.push(
+ "-",
+ {
+ label: "BreakOnThisError",
+ tooltiptext: "console.menu.tip.Break_On_This_Error",
+ type: "checkbox",
+ checked: breakOnThisError,
+ command: Obj.bindFixed(this.breakOnThisError, this, error, context)
+ },
+ Menu.optionMenu("BreakOnAllErrors", "breakOnErrors",
+ "console.menu.tip.Break_On_All_Errors")
+ );
+ }
+
+ return items;
+ },
+});
+
+// ********************************************************************************************* //
+// ErrorMessageUpdater Module
+
+/**
+ * @module Responsible for asynchronous UI update or ErrorMessage template.
+ */
+var ErrorMessageUpdater = Obj.extend(Firebug.Module,
+/** @lends ErrorMessageUpdater */
+{
+ dispatchName: "ErrorMessageUpdater",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Module
+
+ initialize: function()
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+ PanelActivation.addListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.Module.shutdown.apply(this, arguments);
+ PanelActivation.removeListener(this);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // PanelActivation
+
+ activationChanged: function(panelType, enable)
+ {
+ // The Script panel's activation changed. Make sure all trace messages (for errors)
+ // are updated. It must be done for all contexts since panel activation always
+ // applies to all contexts.
+ if (panelType.prototype.name == "script")
+ Firebug.connection.eachContext(this.updateConsolePanel.bind(this));
+ },
+
+ updateConsolePanel: function(context)
+ {
+ var panel = context.getPanel("console", true);
+ if (!panel)
+ return;
+
+ // Update all existing user messages in the panel.
+ var messages = panel.panelNode.querySelectorAll(".errorTrace.message");
+ for (var i=0; i<messages.length; i++)
+ ErrorMessage.renderStackTraceMessage(messages[i]);
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+// xxxHonza: back compatibility
+FirebugReps.ErrorMessage = ErrorMessage;
+
+Firebug.registerModule(ErrorMessageUpdater);
+Firebug.registerRep(ErrorMessage);
+
+return ErrorMessage;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/errors.js b/content/firebug/console/errors.js
index 1db0b51..d3476c9 100644
--- a/content/firebug/console/errors.js
+++ b/content/firebug/console/errors.js
@@ -1,935 +1,935 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/reps",
- "firebug/lib/xpcom",
- "firebug/console/console",
- "firebug/lib/css",
- "firebug/chrome/window",
- "firebug/lib/array",
- "firebug/lib/string"
-],
-function(Obj, Firebug, FirebugReps, Xpcom, Console, Css, Win, Arr, Str) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const nsIScriptError = Ci.nsIScriptError;
-const nsIConsoleMessage = Ci.nsIConsoleMessage;
-
-const WARNING_FLAG = nsIScriptError.warningFlag;
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-const urlRe = new RegExp("([^:]*):(//)?([^/]*)");
-const reUncaught = /uncaught exception/;
-// regular expressions for parsing uncaught exceptions
-// see http://lxr.mozilla.org/mozilla/source/js/src/xpconnect/src/xpcexception.cpp#347
-// and http://lxr.mozilla.org/mozilla/source/js/src/xpconnect/src/xpcstack.cpp#318
-// and http://lxr.mozilla.org/mozilla/source/dom/src/base/nsDOMException.cpp#351
-const reException1 = /^(?:uncaught exception: )?\[Exception... "(?!<no message>)([\s\S]+)" nsresult: "0x\S+ \((.+)\)" location: "(?:(?:JS|native) frame :: (?!<unknown filename>)(.+) :: .+ :: line (\d+)|<unknown>)" data: (?:yes|no)\]$/;
-const reException2 = /^(?:uncaught exception: )?\[Exception... "(?!<no message>)([\s\S]+)" code: "\d+" nsresult: "0x\S+ \((.+)\)" location: "(?:(.+) Line: (\d+)|<unknown>)"\]$/;
-const pointlessErrors =
-{
- "uncaught exception: Permission denied to call method Location.toString": 1,
- "uncaught exception: Permission denied to get property Window.writeDebug": 1,
- "uncaught exception: Permission denied to get property XULElement.accessKey": 1,
- "this.docShell has no properties": 1,
- "aDocShell.QueryInterface(Components.interfaces.nsIWebNavigation).currentURI has no properties": 1,
- "Deprecated property window.title used. Please use document.title instead.": 1,
- "Key event not available on GTK2:": 1
-};
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-Components.utils["import"]("resource://firebug/firebug-service.js");
-
-const consoleService = Xpcom.CCSV("@mozilla.org/consoleservice;1", "nsIConsoleService");
-const domWindowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor)
- .getInterface(Ci.nsIDOMWindowUtils);
-
-const wm = Xpcom.CCSV("@mozilla.org/appshell/window-mediator;1", "nsIWindowMediator");
-
-// ********************************************************************************************* //
-
-var Errors = Firebug.Errors = Obj.extend(Firebug.Module,
-{
- dispatchName: "errors",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Module
-
- shutdown: function()
- {
- // Make sure the error observer is removed.
- this.stopObserving();
-
- Firebug.Module.shutdown.apply(this, arguments);
- },
-
- initContext: function(context)
- {
- this.clear(context);
- },
-
- showContext: function(browser, context)
- {
- this.showCount(context ? context.errorCount : 0);
- },
-
- // called for top window and frames.
- unwatchWindow: function(context, win)
- {
- // If we ever get errors by window from Firefox we can cache by window.
- this.clear(context);
- },
-
- destroyContext: function(context, persistedState)
- {
- this.showCount(0);
-
- if (FBTrace.DBG_ERRORLOG && FBTrace.DBG_CSS && "initTime" in this)
- {
- var deltaT = new Date().getTime() - this.initTime.getTime();
-
- FBTrace.sysout("errors.destroyContext sheets: " + Css.totalSheets + " rules: " +
- Css.totalRules + " time: " + deltaT);
- }
- },
-
- updateOption: function(name, value)
- {
- this.checkEnabled();
-
- if (name == "showErrorCount")
- this.toggleShowErrorCount();
- },
-
- toggleShowErrorCount: function()
- {
- this.showContext(null, Firebug.currentContext);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- clear: function(context)
- {
- // reset the UI counter
- this.setCount(context, 0);
-
- // clear the counts of dropped errors
- delete context.droppedErrors;
- },
-
- increaseCount: function(context)
- {
- this.setCount(context, context.errorCount + 1);
- },
-
- setCount: function(context, count)
- {
- context.errorCount = count;
-
- if (context == Firebug.currentContext)
- this.showCount(context.errorCount);
- },
-
- showCount: function(errorCount)
- {
- Firebug.StartButton.showCount(errorCount);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Called by Console
-
- startObserving: function()
- {
- if (this.isObserving)
- return;
-
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("Errors.startObserving");
-
- if (consoleService)
- consoleService.registerListener(this);
-
- this.isObserving = true;
- },
-
- stopObserving: function()
- {
- if (!this.isObserving)
- return;
-
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("Errors.stopObserving");
-
- if (consoleService)
- consoleService.unregisterListener(this);
-
- this.isObserving = false;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends consoleListener
-
- observe: function(object)
- {
- // Make sure the argument is an error object. 'instanceof' also
- // queries the object so e.g. outerWindowID (nsIScriptError2) is available.
- // nsIScriptError2 was merged with nsIScriptError, see
- // https://bugzilla.mozilla.org/show_bug.cgi?id=711721
- if (!(object instanceof Ci.nsIScriptError) ||
- (Ci.nsIScriptError2 && !(object instanceof Ci.nsIScriptError2)))
- {
- return;
- }
-
- try
- {
- if (window.closed)
- this.stopObserving();
-
- if (typeof FBTrace == "undefined")
- return;
-
- if (!FBTrace)
- return;
- }
- catch (exc)
- {
- return;
- }
-
- try
- {
- this.onConsoleLog(object);
- }
- catch (exc)
- {
- // Errors prior to console init will come out here, eg error message
- // from Firefox startup jjb.
- if (FBTrace.DBG_ERRORLOG)
- {
- FBTrace.sysout("errors.observe FAILS " + exc, exc);
- FBTrace.sysout("errors.observe object " + object, object);
- }
- }
- },
-
- onConsoleLog: function(object)
- {
- var ScriptError = object instanceof nsIScriptError;
- var ConsoleMessage = object instanceof nsIConsoleMessage;
-
- // This cannot be pulled in front of the instanceof
- var isWarning = object && object.flags & WARNING_FLAG;
- var CSSParser = object && object.category == "CSS Parser";
- var XPConnect = object && object.category &&
- object.category.split(' ').indexOf("XPConnect") != -1;
-
- // Some categories say "content javascript" even if they come from chrome space.
- var sourceName = (object && object.sourceName) ? object.sourceName : "";
- if (Str.hasPrefix(sourceName, "chrome:") || Str.hasPrefix(sourceName, "resource:"))
- XPConnect = true;
-
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("errors.observe; ScriptError: " + ScriptError +
- ", XPConnect: " + XPConnect + ", sourceName: " + sourceName);
-
- if (ScriptError && !XPConnect) // all branches should trace 'object'
- {
- if (FBTrace.DBG_ERRORLOG)
- {
- FBTrace.sysout("errors.observe nsIScriptError: " + object.errorMessage,
- object);
- }
-
- // after instanceof
- var context = this.getErrorContext(object);
- if (context)
- return this.logScriptError(context, object, isWarning);
-
- if (FBTrace.DBG_ERRORLOG)
- {
- FBTrace.sysout("errors.observe nsIScriptError no context! " +
- object.errorMessage, object);
- }
- }
- else
- {
- if (Firebug.showChromeMessages)
- {
- if (ConsoleMessage)
- {
- if (FBTrace.DBG_ERRORLOG)
- {
- FBTrace.sysout("errors.observe nsIConsoleMessage: " +
- object.message, object);
- }
-
- var context = this.getErrorContext(object); // after instanceof
- if (!context)
- context = Firebug.currentContext;
-
- var msgId = lessTalkMoreAction(context, object, isWarning);
- if (!msgId)
- return;
-
- if (context)
- {
- // Even chrome errors can be nicely formatted in the Console panel
- this.logScriptError(context, object, isWarning);
- //Console.log(object.message, context, "consoleMessage",
- //FirebugReps.Text);
- }
- }
- else if (object.message)
- {
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("errors.observe object.message:", object);
-
- var context = this.getErrorContext(object);
-
- if (!context)
- context = Firebug.currentContext;
-
- if (context)
- {
- // Even chrome errors can be nicely formatted in the Console panel
- this.logScriptError(context, object, isWarning);
- //Console.log(object.message, context, "consoleMessage",
- //FirebugReps.Text);
- }
- else
- {
- FBTrace.sysout("errors.observe, no context for message", object);
- }
- }
- else
- {
- FBTrace.sysout("errors.observe, no message in object", object);
- }
- }
- else
- {
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("errors.observe showChromeMessages off, dropped:", object);
- return;
- }
- }
-
- if (FBTrace.DBG_ERRORLOG)
- {
- if (context)
- {
- if (context.window)
- {
- FBTrace.sysout((isWarning?"warning":"error") + " logged to " +
- context.getName());
- }
- else
- {
- FBTrace.sysout("errors.observe, context with no window, " +
- (isWarning?"warning":"error")+" object:", object);
-
- FBTrace.sysout("errors.observe, context with no window, context:",
- context);
- }
- }
- else
- {
- FBTrace.sysout("errors.observe, no context!");
- }
- }
- },
-
- logScriptError: function(context, object, isWarning)
- {
- if (!context)
- return;
-
- if (FBTrace.DBG_ERRORLOG)
- {
- FBTrace.sysout("errors.observe logScriptError " +
- (Firebug.errorStackTrace ? "have " : "NO ") +
- (Firebug.showStackTrace ? "show stack trace" : "do not show stack trace ") +
- "errorStackTrace error object:",
- {object: object, errorStackTrace: Firebug.errorStackTrace});
- }
-
- var category = getBaseCategory(object.category);
- var isJSError = category == "js" && !isWarning;
-
- // the sourceLine will cause the source to be loaded.
- var error = new FirebugReps.ErrorMessageObj(object.errorMessage, object.sourceName,
- object.lineNumber, object.sourceLine, category, context, null);
-
- // Display column info only if it isn't zero.
- if (object.columnNumber > 0)
- error.colNumber = object.columnNumber;
-
- if (checkForException(context, object))
- {
- context = getExceptionContext(context, object);
- correctLineNumbersOnExceptions(object, error);
- }
-
- if (Firebug.errorStackTrace)
- {
- error.correctWithStackTrace(Firebug.errorStackTrace);
- if (!Firebug.showStackTrace)
- error.trace = null;
- }
- else if (Firebug.showStackTrace && !context.isPanelEnabled("script"))
- {
- error.missingTraceBecauseNoDebugger = true;
- }
-
- var msgId = lessTalkMoreAction(context, object, isWarning);
- if (!msgId)
- return null;
-
- // clear global: either we copied it or we don't use it.
- Firebug.errorStackTrace = null;
-
- if (!isWarning)
- this.increaseCount(context);
-
- var className = isWarning ? "warningMessage" : "errorMessage";
-
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("errors.observe delayed log to " + context.getName());
-
- // report later to avoid loading sourceS
- context.throttle(this.delayedLogging, this, [msgId, context, error, context, className,
- false, true], true);
- },
-
- delayedLogging: function()
- {
- var args = Arr.cloneArray(arguments);
- var msgId = args.shift();
- var context = args.shift();
- var row = Console.log.apply(Console, args);
- return row;
- },
-
- getErrorContext: function(object)
- {
- var url = object.sourceName;
-
- // If window is not associated bail out to avoid reporting errors that are not
- // page related (issue 4991).
- if (!url && !object.outerWindowID)
- {
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("errors.getErrorContext; No URL & no outer-window. " +
- "url: " + url + ", outerWindowID: " + object.outerWindowID, object);
- return null;
- }
-
- if (url && url.indexOf("://chromebug/") > 0)
- return Firebug.currentContext; // no context for self
-
- // Correct the error routing in the case that the new window id will work (R10860).
- // Don't pass the current context (issue 4504)
- var errorContext = getExceptionContext(null, object);
- if (errorContext)
- return errorContext;
-
- var errorContext = null;
- Firebug.connection.eachContext(
- function findContextByURL(context)
- {
- if (FBTrace.DBG_ERRORLOG && FBTrace.DBG_CSS)
- FBTrace.sysout("findContextByURL " + context.getName());
-
- if (!context.window || !context.getWindowLocation())
- return false;
-
- // If the error's parent window is available, check if it
- // corresponds to the context.window. If not bail out to avoid
- // error reporting in a wrong window.
- var errorWindow = getErrorWindow(object);
- if (errorWindow && errorWindow != context.window)
- return false;
-
- if (FBTrace.DBG_ERRORLOG)
- {
- FBTrace.sysout("findContextByURL seeking " + url + " in " +
- (context.loaded ? "loaded" : "not loaded") +
- " window location: " + context.getWindowLocation().toString());
- }
-
- if (context.getWindowLocation().toString() == url)
- {
- if (FBTrace.DBG_ERRORLOG && FBTrace.DBG_CSS)
- FBTrace.sysout("findContextByURL found match to context window location");
-
- return errorContext = context;
- }
- else
- {
- if (context.sourceFileMap && context.sourceFileMap[url])
- {
- if (FBTrace.DBG_ERRORLOG && FBTrace.DBG_CSS)
- FBTrace.sysout("findContextByURL found match in sourceFileMap");
- return errorContext = context;
- }
- }
-
- if (context.loaded)
- {
- if (Css.getStyleSheetByHref(url, context))
- {
- if (FBTrace.DBG_ERRORLOG && FBTrace.DBG_CSS)
- {
- FBTrace.sysout("findContextByURL found match to in loaded " +
- "styleSheetMap");
- }
-
- return errorContext = context;
- }
- else
- {
- return false;
- }
- }
- else // then new stylesheets are still coming in.
- {
- if (context.getCompilationUnit(url))
- {
- if (FBTrace.DBG_EERRORLOG)
- FBTrace.sysout("findContextByURL found match in compilationUnits");
-
- return errorContext = context;
- }
-
- if (Css.getStyleSheetByHref(url, context))
- {
- if (FBTrace.DBG_ERRORLOG && FBTrace.DBG_CSS)
- {
- FBTrace.sysout("findContextByURL found match to in non-loaded " +
- "styleSheetMap");
- }
-
- // but we already have this one.
- errorContext = context;
- }
-
- // clear the cache for next time.
- delete context.styleSheetMap;
- }
- });
-
- if (FBTrace.DBG_ERRORLOG && FBTrace.DBG_CSS && "initTime" in this)
- {
- var deltaT = new Date().getTime() - this.initTime.getTime();
- FBTrace.sysout("errors.getErrorContext sheets: " + Css.totalSheets +
- " rules: " + Css.totalRules + " time: " + deltaT);
- }
-
- if (!errorContext)
- {
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("errors.getErrorContext no context from error filename:"+
- url, object);
- }
-
- // Use nsIScriptError/nsIScriptError2 to compare the parent window
- // guessed by Firebug with the window found through outerWindowID
- if (FBTrace.DBG_ERRORLOG)
- {
- var win1 = getErrorWindow(object);
- var win2 = errorContext ? errorContext.window : null;
-
- win1 = Win.getRootWindow(win1);
- win2 = Win.getRootWindow(win2);
-
- var id1 = Win.getWindowProxyIdForWindow(win1);
- var id2 = Win.getWindowProxyIdForWindow(win2);
-
- if (win1 && id1 != id2 && errorContext)
- {
- var win1Name = Win.safeGetWindowLocation(win1);
- var win2Name = Win.safeGetWindowLocation(win2);
- var moreInfo = {object: object, fromError2: win1, fromFirebug: win2};
-
- FBTrace.sysout("errors.getErrorContext; ERROR wrong parent window? " +
- win1Name + " !== " + win2Name, moreInfo);
- }
- }
-
- // we looked everywhere...
- return errorContext;
- },
-
- toggleWatchForErrors: function(watchForErrors)
- {
- var previous = this.watchForErrors;
- this.watchForErrors = watchForErrors;
- this.checkEnabled();
-
- return (previous !== this.watchForErrors);
- },
-
- checkEnabled: function()
- {
- var beEnabled = this.watchForErrors && this.mustBeEnabled();
- if (beEnabled)
- {
- if (!this.isObserving)
- this.startObserving();
- // else we must be and we are observing
- }
- else
- {
- if (this.isObserving)
- this.stopObserving();
- // else we must not be and we are not
- }
-
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("errors.checkEnabled mustBeEnabled: " + this.mustBeEnabled() +
- " Console.isAlwaysEnabled " + Console.isAlwaysEnabled() +
- " isObserving:" + this.isObserving);
- },
-
- mustBeEnabled: function()
- {
- var optionMap =
- {
- showJSErrors:1,
- showJSWarnings:1,
- showCSSErrors:1,
- showXMLErrors: 1,
- showChromeErrors: 1,
- showChromeMessages: 1,
- showXMLHttpRequests: 1,
- showStackTrace: 1
- };
-
- for (var p in optionMap)
- {
- if (Firebug[p])
- return true;
- }
-
- return false;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- reparseXPC: function(errorMessage, context)
- {
- var reXPCError = /JavaScript Error:\s*\"([^\"]*)\"/;
- var reFile = /file:\s*\"([^\"]*)\"/;
- var reLine = /line:\s*(\d*)/;
- var m = reXPCError.exec(errorMessage);
- if (!m)
- return null;
-
- var msg = m[1];
- var sourceFile = null;
- m = reFile.exec(errorMessage);
- if (m)
- sourceFile = m[1];
-
- var sourceLineNo = 0;
- m = reLine.exec(errorMessage);
- if (m)
- sourceLineNo = m[1];
-
- var sourceLine = null;
- if (sourceFile && sourceLineNo && sourceLineNo != 0)
- {
- if (context.sourceCache)
- {
- sourceLine = context.sourceCache.getLine(sourceFile, sourceLineNo);
- }
- else if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("errors.reparseXPC; ERROR, NULL context.sourceCache, " +
- sourceFile + ", " + sourceLineNo);
- }
- }
-
- var error = new FirebugReps.ErrorMessageObj(msg, sourceFile,
- sourceLineNo, sourceLine, "error", context, null);
- return error;
- }
-});
-
-// ********************************************************************************************* //
-// Local Helpers
-
-const categoryMap =
-{
- "javascript": "js",
- "JavaScript": "js",
- "DOM": "js",
- "DOM:HTML": "js",
- "Events": "js",
- "CSS": "css",
- "HTML": "xml",
- "XML": "xml",
- "malformed-xml": "xml"
-};
-
-function getBaseCategory(categories)
-{
- var categoryList = categories.split(" ");
- for (var i=0; i<categoryList.length; ++i)
- {
- var category = categoryList[i];
- if (categoryMap.hasOwnProperty(category))
- return categoryMap[category];
- }
-}
-
-function whyNotShown(url, categoryList, isWarning)
-{
- var m = urlRe.exec(url);
- var errorScheme = m ? m[1] : "";
- if (errorScheme == "javascript")
- return null;
-
- var isChrome = false;
-
- if (!categoryList)
- {
- return Firebug.showChromeErrors ? null :
- "no category, assume chrome, showChromeErrors false";
- }
-
- var categories = categoryList.split(" ");
- for (var i=0; i<categories.length; ++i)
- {
- var category = categories[i];
- if (category == "CSS" && !Firebug.showCSSErrors)
- {
- return "showCSSErrors";
- }
- else if ((category == "HTML" || category == "XML" || category == "malformed-xml") &&
- !Firebug.showXMLErrors)
- {
- return "showXMLErrors";
- }
- else if ((category == "javascript" || category == "JavaScript" || category == "DOM")
- && !isWarning && !Firebug.showJSErrors)
- {
- return "showJSErrors";
- }
- else if ((category == "javascript" || category == "JavaScript" || category == "DOM" ||
- category == "DOM:HTML")
- && isWarning && !Firebug.showJSWarnings)
- {
- return "showJSWarnings";
- }
- else if (errorScheme == "chrome" || category == "XUL" || category == "chrome" ||
- category == "XBL" || category == "component")
- {
- isChrome = true;
- }
- }
-
- if (isChrome && !Firebug.showChromeErrors)
- return "showChromeErrors";
-
- return null;
-}
-
-function lessTalkMoreAction(context, object, isWarning)
-{
- if (!context)
- {
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("errors.observe dropping " + object.category + " no context");
- return false;
- }
-
- var enabled = Console.isAlwaysEnabled();
- if (!enabled)
- return null;
-
- var why = whyNotShown(object.sourceName, object.category, isWarning);
- if (why)
- {
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("errors.observe dropping " + object.category + " because: " + why);
-
- context.droppedErrors = context.droppedErrors || {};
-
- if (!context.droppedErrors[object.category])
- context.droppedErrors[object.category] = 1;
- else
- context.droppedErrors[object.category] += 1;
-
- return null;
- }
-
- // nsIScriptError
- var incoming_message = object.errorMessage;
-
- // nsIConsoleMessage
- if (!incoming_message)
- incoming_message = object.message;
-
- if (Firebug.suppressPointlessErrors)
- {
- for (var msg in pointlessErrors)
- {
- if (msg.charAt(0) == incoming_message.charAt(0))
- {
- if (Str.hasPrefix(incoming_message, msg))
- {
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("errors.observe dropping pointlessError: " + msg);
- return null;
- }
- }
- }
- }
-
- var msgId = [incoming_message, object.sourceName, object.lineNumber].join("/");
- return msgId;
-}
-
-function checkForException(context, object)
-{
- if (object.flags & object.exceptionFlag)
- {
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("errors.observe is exception");
-
- if (context.thrownStackTrace)
- {
- Firebug.errorStackTrace = context.thrownStackTrace;
-
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("errors.observe trace.frames", context.thrownStackTrace.frames);
-
- delete context.thrownStackTrace;
- }
- else
- {
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("errors.observe NO context.thrownStackTrace");
- }
- return true;
- }
-
- delete context.thrownStackTrace;
- return false;
-}
-
-/**
- * Returns a parent window (outer window) for given error object (an object
- * that is passed into a consoleListener).
- * This method should be the primary way how to find the parent window for any
- * error object.
- *
- * @param {Object} object Error object (implementing nsIScriptError2 or nsIScriptError)
- */
-function getErrorWindow(object)
-{
- try
- {
- // nsIScriptError2 is merged into nsIScriptError in Firefox 12 (bug
- // 711721), so check for the one that is relevant.
- var why;
- if (object instanceof (Ci["nsIScriptError2"] || Ci["nsIScriptError"]))
- {
- if (object.outerWindowID)
- {
- var win;
-
- // getOuterWindowWithId moved to nsIWindowMediator in Firefox 23
- // See: https://bugzilla.mozilla.org/show_bug.cgi?id=861495
- if (typeof(wm.getOuterWindowWithId) == "function")
- win = wm.getOuterWindowWithId(object.outerWindowID);
- else
- win = domWindowUtils.getOuterWindowWithId(object.outerWindowID);
-
- if (win)
- return win;
- else
- why = "no getOuterWindowWithId";
- }
- else
- {
- why = "no outerWindowID";
- }
- }
- else
- {
- why = "not an nsIScriptError";
- }
-
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("errors.getErrorWindow failed " + why, object);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("errors.getErrorWindow; EXCEPTION" + err, err);
- }
-
- return null;
-}
-
-function getExceptionContext(context, object)
-{
- var errorWin = getErrorWindow(object);
- if (errorWin)
- {
- var errorContext = Firebug.connection.getContextByWindow(errorWin);
- if (FBTrace.DBG_ERRORLOG)
- {
- FBTrace.sysout("errors.observe exception context: " +
- (errorContext ? errorContext.getName() : "none") + " errorWin: " +
- Win.safeGetWindowLocation(errorWin));
- }
-
- if (errorContext)
- return errorContext;
- }
-
- return context;
-}
-
-function correctLineNumbersOnExceptions(object, error)
-{
- var m = reException1.exec(object.errorMessage) || reException2.exec(object.errorMessage);
- if (m)
- {
- var exception = m[1];
- if (exception)
- error.message = exception;
- var sourceName = m[3];
- var lineNumber = parseInt(m[4]);
-
- error.correctSourcePoint(sourceName, lineNumber);
-
- if (FBTrace.DBG_ERRORLOG)
- {
- FBTrace.sysout("errors.correctLineNumbersOnExceptions corrected message " +
- "with sourceName: "+ sourceName + "@" + lineNumber);
- }
- }
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Errors);
-
-return Firebug.Errors;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/reps",
+ "firebug/lib/xpcom",
+ "firebug/console/console",
+ "firebug/lib/css",
+ "firebug/chrome/window",
+ "firebug/lib/array",
+ "firebug/lib/string"
+],
+function(Obj, Firebug, FirebugReps, Xpcom, Console, Css, Win, Arr, Str) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const nsIScriptError = Ci.nsIScriptError;
+const nsIConsoleMessage = Ci.nsIConsoleMessage;
+
+const WARNING_FLAG = nsIScriptError.warningFlag;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+const urlRe = new RegExp("([^:]*):(//)?([^/]*)");
+const reUncaught = /uncaught exception/;
+// regular expressions for parsing uncaught exceptions
+// see http://lxr.mozilla.org/mozilla/source/js/src/xpconnect/src/xpcexception.cpp#347
+// and http://lxr.mozilla.org/mozilla/source/js/src/xpconnect/src/xpcstack.cpp#318
+// and http://lxr.mozilla.org/mozilla/source/dom/src/base/nsDOMException.cpp#351
+const reException1 = /^(?:uncaught exception: )?\[Exception... "(?!<no message>)([\s\S]+)" nsresult: "0x\S+ \((.+)\)" location: "(?:(?:JS|native) frame :: (?!<unknown filename>)(.+) :: .+ :: line (\d+)|<unknown>)" data: (?:yes|no)\]$/;
+const reException2 = /^(?:uncaught exception: )?\[Exception... "(?!<no message>)([\s\S]+)" code: "\d+" nsresult: "0x\S+ \((.+)\)" location: "(?:(.+) Line: (\d+)|<unknown>)"\]$/;
+const pointlessErrors =
+{
+ "uncaught exception: Permission denied to call method Location.toString": 1,
+ "uncaught exception: Permission denied to get property Window.writeDebug": 1,
+ "uncaught exception: Permission denied to get property XULElement.accessKey": 1,
+ "this.docShell has no properties": 1,
+ "aDocShell.QueryInterface(Components.interfaces.nsIWebNavigation).currentURI has no properties": 1,
+ "Deprecated property window.title used. Please use document.title instead.": 1,
+ "Key event not available on GTK2:": 1
+};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+Components.utils["import"]("resource://firebug/firebug-service.js");
+
+const consoleService = Xpcom.CCSV("@mozilla.org/consoleservice;1", "nsIConsoleService");
+const domWindowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIDOMWindowUtils);
+
+const wm = Xpcom.CCSV("@mozilla.org/appshell/window-mediator;1", "nsIWindowMediator");
+
+// ********************************************************************************************* //
+
+var Errors = Firebug.Errors = Obj.extend(Firebug.Module,
+{
+ dispatchName: "errors",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Module
+
+ shutdown: function()
+ {
+ // Make sure the error observer is removed.
+ this.stopObserving();
+
+ Firebug.Module.shutdown.apply(this, arguments);
+ },
+
+ initContext: function(context)
+ {
+ this.clear(context);
+ },
+
+ showContext: function(browser, context)
+ {
+ this.showCount(context ? context.errorCount : 0);
+ },
+
+ // called for top window and frames.
+ unwatchWindow: function(context, win)
+ {
+ // If we ever get errors by window from Firefox we can cache by window.
+ this.clear(context);
+ },
+
+ destroyContext: function(context, persistedState)
+ {
+ this.showCount(0);
+
+ if (FBTrace.DBG_ERRORLOG && FBTrace.DBG_CSS && "initTime" in this)
+ {
+ var deltaT = new Date().getTime() - this.initTime.getTime();
+
+ FBTrace.sysout("errors.destroyContext sheets: " + Css.totalSheets + " rules: " +
+ Css.totalRules + " time: " + deltaT);
+ }
+ },
+
+ updateOption: function(name, value)
+ {
+ this.checkEnabled();
+
+ if (name == "showErrorCount")
+ this.toggleShowErrorCount();
+ },
+
+ toggleShowErrorCount: function()
+ {
+ this.showContext(null, Firebug.currentContext);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ clear: function(context)
+ {
+ // reset the UI counter
+ this.setCount(context, 0);
+
+ // clear the counts of dropped errors
+ delete context.droppedErrors;
+ },
+
+ increaseCount: function(context)
+ {
+ this.setCount(context, context.errorCount + 1);
+ },
+
+ setCount: function(context, count)
+ {
+ context.errorCount = count;
+
+ if (context == Firebug.currentContext)
+ this.showCount(context.errorCount);
+ },
+
+ showCount: function(errorCount)
+ {
+ Firebug.StartButton.showCount(errorCount);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Called by Console
+
+ startObserving: function()
+ {
+ if (this.isObserving)
+ return;
+
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("Errors.startObserving");
+
+ if (consoleService)
+ consoleService.registerListener(this);
+
+ this.isObserving = true;
+ },
+
+ stopObserving: function()
+ {
+ if (!this.isObserving)
+ return;
+
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("Errors.stopObserving");
+
+ if (consoleService)
+ consoleService.unregisterListener(this);
+
+ this.isObserving = false;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends consoleListener
+
+ observe: function(object)
+ {
+ // Make sure the argument is an error object. 'instanceof' also
+ // queries the object so e.g. outerWindowID (nsIScriptError2) is available.
+ // nsIScriptError2 was merged with nsIScriptError, see
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=711721
+ if (!(object instanceof Ci.nsIScriptError) ||
+ (Ci.nsIScriptError2 && !(object instanceof Ci.nsIScriptError2)))
+ {
+ return;
+ }
+
+ try
+ {
+ if (window.closed)
+ this.stopObserving();
+
+ if (typeof FBTrace == "undefined")
+ return;
+
+ if (!FBTrace)
+ return;
+ }
+ catch (exc)
+ {
+ return;
+ }
+
+ try
+ {
+ this.onConsoleLog(object);
+ }
+ catch (exc)
+ {
+ // Errors prior to console init will come out here, eg error message
+ // from Firefox startup jjb.
+ if (FBTrace.DBG_ERRORLOG)
+ {
+ FBTrace.sysout("errors.observe FAILS " + exc, exc);
+ FBTrace.sysout("errors.observe object " + object, object);
+ }
+ }
+ },
+
+ onConsoleLog: function(object)
+ {
+ var ScriptError = object instanceof nsIScriptError;
+ var ConsoleMessage = object instanceof nsIConsoleMessage;
+
+ // This cannot be pulled in front of the instanceof
+ var isWarning = object && object.flags & WARNING_FLAG;
+ var CSSParser = object && object.category == "CSS Parser";
+ var XPConnect = object && object.category &&
+ object.category.split(' ').indexOf("XPConnect") != -1;
+
+ // Some categories say "content javascript" even if they come from chrome space.
+ var sourceName = (object && object.sourceName) ? object.sourceName : "";
+ if (Str.hasPrefix(sourceName, "chrome:") || Str.hasPrefix(sourceName, "resource:"))
+ XPConnect = true;
+
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("errors.observe; ScriptError: " + ScriptError +
+ ", XPConnect: " + XPConnect + ", sourceName: " + sourceName);
+
+ if (ScriptError && !XPConnect) // all branches should trace 'object'
+ {
+ if (FBTrace.DBG_ERRORLOG)
+ {
+ FBTrace.sysout("errors.observe nsIScriptError: " + object.errorMessage,
+ object);
+ }
+
+ // after instanceof
+ var context = this.getErrorContext(object);
+ if (context)
+ return this.logScriptError(context, object, isWarning);
+
+ if (FBTrace.DBG_ERRORLOG)
+ {
+ FBTrace.sysout("errors.observe nsIScriptError no context! " +
+ object.errorMessage, object);
+ }
+ }
+ else
+ {
+ if (Firebug.showChromeMessages)
+ {
+ if (ConsoleMessage)
+ {
+ if (FBTrace.DBG_ERRORLOG)
+ {
+ FBTrace.sysout("errors.observe nsIConsoleMessage: " +
+ object.message, object);
+ }
+
+ var context = this.getErrorContext(object); // after instanceof
+ if (!context)
+ context = Firebug.currentContext;
+
+ var msgId = lessTalkMoreAction(context, object, isWarning);
+ if (!msgId)
+ return;
+
+ if (context)
+ {
+ // Even chrome errors can be nicely formatted in the Console panel
+ this.logScriptError(context, object, isWarning);
+ //Console.log(object.message, context, "consoleMessage",
+ //FirebugReps.Text);
+ }
+ }
+ else if (object.message)
+ {
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("errors.observe object.message:", object);
+
+ var context = this.getErrorContext(object);
+
+ if (!context)
+ context = Firebug.currentContext;
+
+ if (context)
+ {
+ // Even chrome errors can be nicely formatted in the Console panel
+ this.logScriptError(context, object, isWarning);
+ //Console.log(object.message, context, "consoleMessage",
+ //FirebugReps.Text);
+ }
+ else
+ {
+ FBTrace.sysout("errors.observe, no context for message", object);
+ }
+ }
+ else
+ {
+ FBTrace.sysout("errors.observe, no message in object", object);
+ }
+ }
+ else
+ {
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("errors.observe showChromeMessages off, dropped:", object);
+ return;
+ }
+ }
+
+ if (FBTrace.DBG_ERRORLOG)
+ {
+ if (context)
+ {
+ if (context.window)
+ {
+ FBTrace.sysout((isWarning?"warning":"error") + " logged to " +
+ context.getName());
+ }
+ else
+ {
+ FBTrace.sysout("errors.observe, context with no window, " +
+ (isWarning?"warning":"error")+" object:", object);
+
+ FBTrace.sysout("errors.observe, context with no window, context:",
+ context);
+ }
+ }
+ else
+ {
+ FBTrace.sysout("errors.observe, no context!");
+ }
+ }
+ },
+
+ logScriptError: function(context, object, isWarning)
+ {
+ if (!context)
+ return;
+
+ if (FBTrace.DBG_ERRORLOG)
+ {
+ FBTrace.sysout("errors.observe logScriptError " +
+ (Firebug.errorStackTrace ? "have " : "NO ") +
+ (Firebug.showStackTrace ? "show stack trace" : "do not show stack trace ") +
+ "errorStackTrace error object:",
+ {object: object, errorStackTrace: Firebug.errorStackTrace});
+ }
+
+ var category = getBaseCategory(object.category);
+ var isJSError = category == "js" && !isWarning;
+
+ // the sourceLine will cause the source to be loaded.
+ var error = new FirebugReps.ErrorMessageObj(object.errorMessage, object.sourceName,
+ object.lineNumber, object.sourceLine, category, context, null);
+
+ // Display column info only if it isn't zero.
+ if (object.columnNumber > 0)
+ error.colNumber = object.columnNumber;
+
+ if (checkForException(context, object))
+ {
+ context = getExceptionContext(context, object);
+ correctLineNumbersOnExceptions(object, error);
+ }
+
+ if (Firebug.errorStackTrace)
+ {
+ error.correctWithStackTrace(Firebug.errorStackTrace);
+ if (!Firebug.showStackTrace)
+ error.trace = null;
+ }
+ else if (Firebug.showStackTrace && !context.isPanelEnabled("script"))
+ {
+ error.missingTraceBecauseNoDebugger = true;
+ }
+
+ var msgId = lessTalkMoreAction(context, object, isWarning);
+ if (!msgId)
+ return null;
+
+ // clear global: either we copied it or we don't use it.
+ Firebug.errorStackTrace = null;
+
+ if (!isWarning)
+ this.increaseCount(context);
+
+ var className = isWarning ? "warningMessage" : "errorMessage";
+
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("errors.observe delayed log to " + context.getName());
+
+ // report later to avoid loading sourceS
+ context.throttle(this.delayedLogging, this, [msgId, context, error, context, className,
+ false, true], true);
+ },
+
+ delayedLogging: function()
+ {
+ var args = Arr.cloneArray(arguments);
+ var msgId = args.shift();
+ var context = args.shift();
+ var row = Console.log.apply(Console, args);
+ return row;
+ },
+
+ getErrorContext: function(object)
+ {
+ var url = object.sourceName;
+
+ // If window is not associated bail out to avoid reporting errors that are not
+ // page related (issue 4991).
+ if (!url && !object.outerWindowID)
+ {
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("errors.getErrorContext; No URL & no outer-window. " +
+ "url: " + url + ", outerWindowID: " + object.outerWindowID, object);
+ return null;
+ }
+
+ if (url && url.indexOf("://chromebug/") > 0)
+ return Firebug.currentContext; // no context for self
+
+ // Correct the error routing in the case that the new window id will work (R10860).
+ // Don't pass the current context (issue 4504)
+ var errorContext = getExceptionContext(null, object);
+ if (errorContext)
+ return errorContext;
+
+ var errorContext = null;
+ Firebug.connection.eachContext(
+ function findContextByURL(context)
+ {
+ if (FBTrace.DBG_ERRORLOG && FBTrace.DBG_CSS)
+ FBTrace.sysout("findContextByURL " + context.getName());
+
+ if (!context.window || !context.getWindowLocation())
+ return false;
+
+ // If the error's parent window is available, check if it
+ // corresponds to the context.window. If not bail out to avoid
+ // error reporting in a wrong window.
+ var errorWindow = getErrorWindow(object);
+ if (errorWindow && errorWindow != context.window)
+ return false;
+
+ if (FBTrace.DBG_ERRORLOG)
+ {
+ FBTrace.sysout("findContextByURL seeking " + url + " in " +
+ (context.loaded ? "loaded" : "not loaded") +
+ " window location: " + context.getWindowLocation().toString());
+ }
+
+ if (context.getWindowLocation().toString() == url)
+ {
+ if (FBTrace.DBG_ERRORLOG && FBTrace.DBG_CSS)
+ FBTrace.sysout("findContextByURL found match to context window location");
+
+ return errorContext = context;
+ }
+ else
+ {
+ if (context.sourceFileMap && context.sourceFileMap[url])
+ {
+ if (FBTrace.DBG_ERRORLOG && FBTrace.DBG_CSS)
+ FBTrace.sysout("findContextByURL found match in sourceFileMap");
+ return errorContext = context;
+ }
+ }
+
+ if (context.loaded)
+ {
+ if (Css.getStyleSheetByHref(url, context))
+ {
+ if (FBTrace.DBG_ERRORLOG && FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("findContextByURL found match to in loaded " +
+ "styleSheetMap");
+ }
+
+ return errorContext = context;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ else // then new stylesheets are still coming in.
+ {
+ if (context.getCompilationUnit(url))
+ {
+ if (FBTrace.DBG_EERRORLOG)
+ FBTrace.sysout("findContextByURL found match in compilationUnits");
+
+ return errorContext = context;
+ }
+
+ if (Css.getStyleSheetByHref(url, context))
+ {
+ if (FBTrace.DBG_ERRORLOG && FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("findContextByURL found match to in non-loaded " +
+ "styleSheetMap");
+ }
+
+ // but we already have this one.
+ errorContext = context;
+ }
+
+ // clear the cache for next time.
+ delete context.styleSheetMap;
+ }
+ });
+
+ if (FBTrace.DBG_ERRORLOG && FBTrace.DBG_CSS && "initTime" in this)
+ {
+ var deltaT = new Date().getTime() - this.initTime.getTime();
+ FBTrace.sysout("errors.getErrorContext sheets: " + Css.totalSheets +
+ " rules: " + Css.totalRules + " time: " + deltaT);
+ }
+
+ if (!errorContext)
+ {
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("errors.getErrorContext no context from error filename:"+
+ url, object);
+ }
+
+ // Use nsIScriptError/nsIScriptError2 to compare the parent window
+ // guessed by Firebug with the window found through outerWindowID
+ if (FBTrace.DBG_ERRORLOG)
+ {
+ var win1 = getErrorWindow(object);
+ var win2 = errorContext ? errorContext.window : null;
+
+ win1 = Win.getRootWindow(win1);
+ win2 = Win.getRootWindow(win2);
+
+ var id1 = Win.getWindowProxyIdForWindow(win1);
+ var id2 = Win.getWindowProxyIdForWindow(win2);
+
+ if (win1 && id1 != id2 && errorContext)
+ {
+ var win1Name = Win.safeGetWindowLocation(win1);
+ var win2Name = Win.safeGetWindowLocation(win2);
+ var moreInfo = {object: object, fromError2: win1, fromFirebug: win2};
+
+ FBTrace.sysout("errors.getErrorContext; ERROR wrong parent window? " +
+ win1Name + " !== " + win2Name, moreInfo);
+ }
+ }
+
+ // we looked everywhere...
+ return errorContext;
+ },
+
+ toggleWatchForErrors: function(watchForErrors)
+ {
+ var previous = this.watchForErrors;
+ this.watchForErrors = watchForErrors;
+ this.checkEnabled();
+
+ return (previous !== this.watchForErrors);
+ },
+
+ checkEnabled: function()
+ {
+ var beEnabled = this.watchForErrors && this.mustBeEnabled();
+ if (beEnabled)
+ {
+ if (!this.isObserving)
+ this.startObserving();
+ // else we must be and we are observing
+ }
+ else
+ {
+ if (this.isObserving)
+ this.stopObserving();
+ // else we must not be and we are not
+ }
+
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("errors.checkEnabled mustBeEnabled: " + this.mustBeEnabled() +
+ " Console.isAlwaysEnabled " + Console.isAlwaysEnabled() +
+ " isObserving:" + this.isObserving);
+ },
+
+ mustBeEnabled: function()
+ {
+ var optionMap =
+ {
+ showJSErrors:1,
+ showJSWarnings:1,
+ showCSSErrors:1,
+ showXMLErrors: 1,
+ showChromeErrors: 1,
+ showChromeMessages: 1,
+ showXMLHttpRequests: 1,
+ showStackTrace: 1
+ };
+
+ for (var p in optionMap)
+ {
+ if (Firebug[p])
+ return true;
+ }
+
+ return false;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ reparseXPC: function(errorMessage, context)
+ {
+ var reXPCError = /JavaScript Error:\s*\"([^\"]*)\"/;
+ var reFile = /file:\s*\"([^\"]*)\"/;
+ var reLine = /line:\s*(\d*)/;
+ var m = reXPCError.exec(errorMessage);
+ if (!m)
+ return null;
+
+ var msg = m[1];
+ var sourceFile = null;
+ m = reFile.exec(errorMessage);
+ if (m)
+ sourceFile = m[1];
+
+ var sourceLineNo = 0;
+ m = reLine.exec(errorMessage);
+ if (m)
+ sourceLineNo = m[1];
+
+ var sourceLine = null;
+ if (sourceFile && sourceLineNo && sourceLineNo != 0)
+ {
+ if (context.sourceCache)
+ {
+ sourceLine = context.sourceCache.getLine(sourceFile, sourceLineNo);
+ }
+ else if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("errors.reparseXPC; ERROR, NULL context.sourceCache, " +
+ sourceFile + ", " + sourceLineNo);
+ }
+ }
+
+ var error = new FirebugReps.ErrorMessageObj(msg, sourceFile,
+ sourceLineNo, sourceLine, "error", context, null);
+ return error;
+ }
+});
+
+// ********************************************************************************************* //
+// Local Helpers
+
+const categoryMap =
+{
+ "javascript": "js",
+ "JavaScript": "js",
+ "DOM": "js",
+ "DOM:HTML": "js",
+ "Events": "js",
+ "CSS": "css",
+ "HTML": "xml",
+ "XML": "xml",
+ "malformed-xml": "xml"
+};
+
+function getBaseCategory(categories)
+{
+ var categoryList = categories.split(" ");
+ for (var i=0; i<categoryList.length; ++i)
+ {
+ var category = categoryList[i];
+ if (categoryMap.hasOwnProperty(category))
+ return categoryMap[category];
+ }
+}
+
+function whyNotShown(url, categoryList, isWarning)
+{
+ var m = urlRe.exec(url);
+ var errorScheme = m ? m[1] : "";
+ if (errorScheme == "javascript")
+ return null;
+
+ var isChrome = false;
+
+ if (!categoryList)
+ {
+ return Firebug.showChromeErrors ? null :
+ "no category, assume chrome, showChromeErrors false";
+ }
+
+ var categories = categoryList.split(" ");
+ for (var i=0; i<categories.length; ++i)
+ {
+ var category = categories[i];
+ if (category == "CSS" && !Firebug.showCSSErrors)
+ {
+ return "showCSSErrors";
+ }
+ else if ((category == "HTML" || category == "XML" || category == "malformed-xml") &&
+ !Firebug.showXMLErrors)
+ {
+ return "showXMLErrors";
+ }
+ else if ((category == "javascript" || category == "JavaScript" || category == "DOM")
+ && !isWarning && !Firebug.showJSErrors)
+ {
+ return "showJSErrors";
+ }
+ else if ((category == "javascript" || category == "JavaScript" || category == "DOM" ||
+ category == "DOM:HTML")
+ && isWarning && !Firebug.showJSWarnings)
+ {
+ return "showJSWarnings";
+ }
+ else if (errorScheme == "chrome" || category == "XUL" || category == "chrome" ||
+ category == "XBL" || category == "component")
+ {
+ isChrome = true;
+ }
+ }
+
+ if (isChrome && !Firebug.showChromeErrors)
+ return "showChromeErrors";
+
+ return null;
+}
+
+function lessTalkMoreAction(context, object, isWarning)
+{
+ if (!context)
+ {
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("errors.observe dropping " + object.category + " no context");
+ return false;
+ }
+
+ var enabled = Console.isAlwaysEnabled();
+ if (!enabled)
+ return null;
+
+ var why = whyNotShown(object.sourceName, object.category, isWarning);
+ if (why)
+ {
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("errors.observe dropping " + object.category + " because: " + why);
+
+ context.droppedErrors = context.droppedErrors || {};
+
+ if (!context.droppedErrors[object.category])
+ context.droppedErrors[object.category] = 1;
+ else
+ context.droppedErrors[object.category] += 1;
+
+ return null;
+ }
+
+ // nsIScriptError
+ var incoming_message = object.errorMessage;
+
+ // nsIConsoleMessage
+ if (!incoming_message)
+ incoming_message = object.message;
+
+ if (Firebug.suppressPointlessErrors)
+ {
+ for (var msg in pointlessErrors)
+ {
+ if (msg.charAt(0) == incoming_message.charAt(0))
+ {
+ if (Str.hasPrefix(incoming_message, msg))
+ {
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("errors.observe dropping pointlessError: " + msg);
+ return null;
+ }
+ }
+ }
+ }
+
+ var msgId = [incoming_message, object.sourceName, object.lineNumber].join("/");
+ return msgId;
+}
+
+function checkForException(context, object)
+{
+ if (object.flags & object.exceptionFlag)
+ {
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("errors.observe is exception");
+
+ if (context.thrownStackTrace)
+ {
+ Firebug.errorStackTrace = context.thrownStackTrace;
+
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("errors.observe trace.frames", context.thrownStackTrace.frames);
+
+ delete context.thrownStackTrace;
+ }
+ else
+ {
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("errors.observe NO context.thrownStackTrace");
+ }
+ return true;
+ }
+
+ delete context.thrownStackTrace;
+ return false;
+}
+
+/**
+ * Returns a parent window (outer window) for given error object (an object
+ * that is passed into a consoleListener).
+ * This method should be the primary way how to find the parent window for any
+ * error object.
+ *
+ * @param {Object} object Error object (implementing nsIScriptError2 or nsIScriptError)
+ */
+function getErrorWindow(object)
+{
+ try
+ {
+ // nsIScriptError2 is merged into nsIScriptError in Firefox 12 (bug
+ // 711721), so check for the one that is relevant.
+ var why;
+ if (object instanceof (Ci["nsIScriptError2"] || Ci["nsIScriptError"]))
+ {
+ if (object.outerWindowID)
+ {
+ var win;
+
+ // getOuterWindowWithId moved to nsIWindowMediator in Firefox 23
+ // See: https://bugzilla.mozilla.org/show_bug.cgi?id=861495
+ if (typeof(wm.getOuterWindowWithId) == "function")
+ win = wm.getOuterWindowWithId(object.outerWindowID);
+ else
+ win = domWindowUtils.getOuterWindowWithId(object.outerWindowID);
+
+ if (win)
+ return win;
+ else
+ why = "no getOuterWindowWithId";
+ }
+ else
+ {
+ why = "no outerWindowID";
+ }
+ }
+ else
+ {
+ why = "not an nsIScriptError";
+ }
+
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("errors.getErrorWindow failed " + why, object);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("errors.getErrorWindow; EXCEPTION" + err, err);
+ }
+
+ return null;
+}
+
+function getExceptionContext(context, object)
+{
+ var errorWin = getErrorWindow(object);
+ if (errorWin)
+ {
+ var errorContext = Firebug.connection.getContextByWindow(errorWin);
+ if (FBTrace.DBG_ERRORLOG)
+ {
+ FBTrace.sysout("errors.observe exception context: " +
+ (errorContext ? errorContext.getName() : "none") + " errorWin: " +
+ Win.safeGetWindowLocation(errorWin));
+ }
+
+ if (errorContext)
+ return errorContext;
+ }
+
+ return context;
+}
+
+function correctLineNumbersOnExceptions(object, error)
+{
+ var m = reException1.exec(object.errorMessage) || reException2.exec(object.errorMessage);
+ if (m)
+ {
+ var exception = m[1];
+ if (exception)
+ error.message = exception;
+ var sourceName = m[3];
+ var lineNumber = parseInt(m[4]);
+
+ error.correctSourcePoint(sourceName, lineNumber);
+
+ if (FBTrace.DBG_ERRORLOG)
+ {
+ FBTrace.sysout("errors.correctLineNumbersOnExceptions corrected message " +
+ "with sourceName: "+ sourceName + "@" + lineNumber);
+ }
+ }
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Errors);
+
+return Firebug.Errors;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/exceptionRep.js b/content/firebug/console/exceptionRep.js
index 2f4f595..023d6df 100644
--- a/content/firebug/console/exceptionRep.js
+++ b/content/firebug/console/exceptionRep.js
@@ -1,98 +1,98 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/trace",
- "firebug/lib/object",
- "firebug/lib/domplate",
- "firebug/console/errorMessageObj",
- "firebug/console/errorMessageRep",
- "firebug/console/errorCopy",
- "firebug/chrome/reps",
- "firebug/js/stackFrame",
-],
-function(Firebug, FBTrace, Obj, Domplate, ErrorMessageObj, ErrorMessage, ErrorCopy,
- FirebugReps, StackFrame) {
-
-"use strict"
-
-// ********************************************************************************************* //
-// Constants
-
-var {domplate, TAG} = Domplate;
-
-// ********************************************************************************************* //
-// Exception Template Implementation
-
-/**
- * @domplate This template represents exceptions that happen in the content and appear
- * within Firebug UI. It's registered as Firebug rep.
- */
-var Exception = domplate(Firebug.Rep,
-/** @lends Exception */
-{
- tag:
- TAG(ErrorMessage.tag, {object: "$object|getErrorMessage"}),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "exception",
-
- getTitle: function(object)
- {
- if (object.name)
- return object.name + (object.message ? ": " + object.message : "");
-
- if (object.message)
- return object.message;
-
- return "Exception";
- },
-
- getErrorMessage: function(object)
- {
- var context = Firebug.currentContext;
- var win = context ? context.window : null;
-
- var url = object.fileName ? object.fileName : (win ? win.location.href : "");
- var lineNo = object.lineNumber ? object.lineNumber : 0;
- var message = this.getTitle(object);
-
- var trace;
- if (object.stack)
- {
- trace = StackFrame.parseToStackTrace(object.stack, context);
- trace = StackFrame.cleanStackTraceOfFirebug(trace);
-
- if (!trace)
- lineNo = 0;
- }
-
- var errorObject = new ErrorMessageObj(message, url, lineNo, "", "js",
- context, trace);
-
- if (trace && trace.frames && trace.frames[0])
- errorObject.correctWithStackTrace(trace);
-
- errorObject.resetSource();
- return errorObject;
- },
-
- supportsObject: function(object, type)
- {
- return (object instanceof ErrorCopy) || Obj.XW_instanceof(object, Error);
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-// xxxHonza: back compatibility
-FirebugReps.Except = Exception;
-
-Firebug.registerRep(Exception);
-
-return Exception;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/trace",
+ "firebug/lib/object",
+ "firebug/lib/domplate",
+ "firebug/console/errorMessageObj",
+ "firebug/console/errorMessageRep",
+ "firebug/console/errorCopy",
+ "firebug/chrome/reps",
+ "firebug/js/stackFrame",
+],
+function(Firebug, FBTrace, Obj, Domplate, ErrorMessageObj, ErrorMessage, ErrorCopy,
+ FirebugReps, StackFrame) {
+
+"use strict"
+
+// ********************************************************************************************* //
+// Constants
+
+var {domplate, TAG} = Domplate;
+
+// ********************************************************************************************* //
+// Exception Template Implementation
+
+/**
+ * @domplate This template represents exceptions that happen in the content and appear
+ * within Firebug UI. It's registered as Firebug rep.
+ */
+var Exception = domplate(Firebug.Rep,
+/** @lends Exception */
+{
+ tag:
+ TAG(ErrorMessage.tag, {object: "$object|getErrorMessage"}),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "exception",
+
+ getTitle: function(object)
+ {
+ if (object.name)
+ return object.name + (object.message ? ": " + object.message : "");
+
+ if (object.message)
+ return object.message;
+
+ return "Exception";
+ },
+
+ getErrorMessage: function(object)
+ {
+ var context = Firebug.currentContext;
+ var win = context ? context.window : null;
+
+ var url = object.fileName ? object.fileName : (win ? win.location.href : "");
+ var lineNo = object.lineNumber ? object.lineNumber : 0;
+ var message = this.getTitle(object);
+
+ var trace;
+ if (object.stack)
+ {
+ trace = StackFrame.parseToStackTrace(object.stack, context);
+ trace = StackFrame.cleanStackTraceOfFirebug(trace);
+
+ if (!trace)
+ lineNo = 0;
+ }
+
+ var errorObject = new ErrorMessageObj(message, url, lineNo, "", "js",
+ context, trace);
+
+ if (trace && trace.frames && trace.frames[0])
+ errorObject.correctWithStackTrace(trace);
+
+ errorObject.resetSource();
+ return errorObject;
+ },
+
+ supportsObject: function(object, type)
+ {
+ return (object instanceof ErrorCopy) || Obj.XW_instanceof(object, Error);
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+// xxxHonza: back compatibility
+FirebugReps.Except = Exception;
+
+Firebug.registerRep(Exception);
+
+return Exception;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/functionMonitor.js b/content/firebug/console/functionMonitor.js
index 9957856..41496cc 100644
--- a/content/firebug/console/functionMonitor.js
+++ b/content/firebug/console/functionMonitor.js
@@ -1,191 +1,191 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/object",
- "firebug/lib/domplate",
- "firebug/chrome/reps",
- "firebug/js/stackFrame",
- "firebug/lib/events",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/url",
-],
-function(FBTrace, Obj, Domplate, Reps, StackFrame, Events, Css, Dom, Url) { with (Domplate) {
-
-// ********************************************************************************************* //
-// Function Monitor
-
-var FunctionMonitor = Obj.extend(Firebug.Module,
-{
- dispatchName: "functionMonitor",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Module
-
- initialize: function()
- {
- Firebug.Module.initialize.apply(this, arguments);
- Firebug.connection.addListener(this);
- },
-
- shutdown: function()
- {
- Firebug.connection.removeListener(this);
- Firebug.Module.shutdown.apply(this, arguments);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Firebug.Debugger listener
-
- onMonitorScript: function(context, frame)
- {
- var stackTrace = StackFrame.buildStackTrace(frame);
- Firebug.Console.log(new FunctionLog(frame, stackTrace), context);
- },
-
- onFunctionCall: function(context, frame, depth, calling)
- {
- //var url = Url.normalizeURL(frame.script.fileName);
- //var sourceFile = context.sourceFileMap[url];
- // Firebug.errorStackTrace = StackFrame.getCorrectedStackTrace(frame, context);
- //var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, frame.script);
- if (Url.isSystemURL(Url.normalizeURL(frame.script.fileName)))
- return;
-
- // xxxHonza: traceCall and traceCallAll need to be fixed yet.
- FBTrace.sysout("functionMonitor.onFunctionCall; ", sourceFile);
-
- if (calling)
- Firebug.Console.openGroup([frame, "depth:" + depth], context);
- else
- Firebug.Console.closeGroup(context);
- },
-});
-
-// ********************************************************************************************* //
-// Rep Object
-
-function FunctionLog(frame, stackTrace)
-{
- this.frame = frame;
- this.stackTrace = stackTrace;
-}
-
-// ********************************************************************************************* //
-// Function Monitor Rep
-
-var FunctionMonitorRep = domplate(Firebug.Rep,
-{
- className: "functionCall",
-
- tag:
- Reps.OBJECTBLOCK({$hasTwisty: "$object|hasStackTrace", _repObject: "$object",
- onclick: "$onToggleStackTrace"},
- A({"class": "objectLink functionCallTitle a11yFocus", _repObject: "$object"},
- "$object|getCallName"
- ),
- SPAN("("),
- SPAN({"class": "arguments"},
- FOR("arg", "$object|argIterator",
- SPAN({"class": "argName"}, "$arg.name"),
- SPAN("="),
- TAG("$arg.tag", {object: "$arg.value"}),
- SPAN({"class": "arrayComma"}, "$arg.delim")
- )
- ),
- SPAN(")"),
- SPAN({"class": "objectLink-sourceLink objectLink a11yFocus",
- _repObject: "$object|getSourceLink",
- role: "link"},
- "$object|getSourceLinkTitle"),
- DIV({"class": "stackTrace"})
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- hasStackTrace: function(object)
- {
- return true;
- },
-
- getTitle: function(object)
- {
- return object.frame.getFunctionName();
- },
-
- getCallName: function(object)
- {
- return this.getTitle(object);
- },
-
- getSourceLink: function(object)
- {
- return Reps.StackFrame.getSourceLink(object.frame);
- },
-
- getSourceLinkTitle: function(object)
- {
- return Reps.StackFrame.getSourceLinkTitle(object.frame);
- },
-
- argIterator: function(object)
- {
- return Reps.StackFrame.argIterator(object.frame);
- },
-
- onToggleStackTrace: function(event)
- {
- var target = event.originalTarget;
-
- // Only clicking on the expand button or the function title actually expands
- // the function call log. All other clicks keep default behavior
- if (!(Css.hasClass(target, "objectBox-functionCall") ||
- Css.hasClass(target, "functionCallTitle")))
- {
- return;
- }
-
- var objectBox = Dom.getAncestorByClass(target, "objectBox-functionCall");
- if (!objectBox)
- return;
-
- var traceBox = objectBox.getElementsByClassName("stackTrace").item(0);
- Css.toggleClass(traceBox, "opened");
-
- if (Css.hasClass(traceBox, "opened"))
- {
- var functionCall = objectBox.repObject;
- Reps.StackTrace.tag.append({object: functionCall.stackTrace}, traceBox);
- }
- else
- {
- Dom.clearNode(traceBox);
- }
-
- Events.cancelEvent(event);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- supportsObject: function(object, type)
- {
- return object instanceof FunctionLog;
- },
-
- getRealObject: function(object)
- {
- return object.frame;
- },
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(FunctionMonitor);
-Firebug.registerRep(FunctionMonitorRep);
-
-return FunctionMonitor;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/object",
+ "firebug/lib/domplate",
+ "firebug/chrome/reps",
+ "firebug/js/stackFrame",
+ "firebug/lib/events",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/url",
+],
+function(FBTrace, Obj, Domplate, Reps, StackFrame, Events, Css, Dom, Url) { with (Domplate) {
+
+// ********************************************************************************************* //
+// Function Monitor
+
+var FunctionMonitor = Obj.extend(Firebug.Module,
+{
+ dispatchName: "functionMonitor",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Module
+
+ initialize: function()
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+ Firebug.connection.addListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.connection.removeListener(this);
+ Firebug.Module.shutdown.apply(this, arguments);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Firebug.Debugger listener
+
+ onMonitorScript: function(context, frame)
+ {
+ var stackTrace = StackFrame.buildStackTrace(frame);
+ Firebug.Console.log(new FunctionLog(frame, stackTrace), context);
+ },
+
+ onFunctionCall: function(context, frame, depth, calling)
+ {
+ //var url = Url.normalizeURL(frame.script.fileName);
+ //var sourceFile = context.sourceFileMap[url];
+ // Firebug.errorStackTrace = StackFrame.getCorrectedStackTrace(frame, context);
+ //var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, frame.script);
+ if (Url.isSystemURL(Url.normalizeURL(frame.script.fileName)))
+ return;
+
+ // xxxHonza: traceCall and traceCallAll need to be fixed yet.
+ FBTrace.sysout("functionMonitor.onFunctionCall; ", sourceFile);
+
+ if (calling)
+ Firebug.Console.openGroup([frame, "depth:" + depth], context);
+ else
+ Firebug.Console.closeGroup(context);
+ },
+});
+
+// ********************************************************************************************* //
+// Rep Object
+
+function FunctionLog(frame, stackTrace)
+{
+ this.frame = frame;
+ this.stackTrace = stackTrace;
+}
+
+// ********************************************************************************************* //
+// Function Monitor Rep
+
+var FunctionMonitorRep = domplate(Firebug.Rep,
+{
+ className: "functionCall",
+
+ tag:
+ Reps.OBJECTBLOCK({$hasTwisty: "$object|hasStackTrace", _repObject: "$object",
+ onclick: "$onToggleStackTrace"},
+ A({"class": "objectLink functionCallTitle a11yFocus", _repObject: "$object"},
+ "$object|getCallName"
+ ),
+ SPAN("("),
+ SPAN({"class": "arguments"},
+ FOR("arg", "$object|argIterator",
+ SPAN({"class": "argName"}, "$arg.name"),
+ SPAN("="),
+ TAG("$arg.tag", {object: "$arg.value"}),
+ SPAN({"class": "arrayComma"}, "$arg.delim")
+ )
+ ),
+ SPAN(")"),
+ SPAN({"class": "objectLink-sourceLink objectLink a11yFocus",
+ _repObject: "$object|getSourceLink",
+ role: "link"},
+ "$object|getSourceLinkTitle"),
+ DIV({"class": "stackTrace"})
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ hasStackTrace: function(object)
+ {
+ return true;
+ },
+
+ getTitle: function(object)
+ {
+ return object.frame.getFunctionName();
+ },
+
+ getCallName: function(object)
+ {
+ return this.getTitle(object);
+ },
+
+ getSourceLink: function(object)
+ {
+ return Reps.StackFrame.getSourceLink(object.frame);
+ },
+
+ getSourceLinkTitle: function(object)
+ {
+ return Reps.StackFrame.getSourceLinkTitle(object.frame);
+ },
+
+ argIterator: function(object)
+ {
+ return Reps.StackFrame.argIterator(object.frame);
+ },
+
+ onToggleStackTrace: function(event)
+ {
+ var target = event.originalTarget;
+
+ // Only clicking on the expand button or the function title actually expands
+ // the function call log. All other clicks keep default behavior
+ if (!(Css.hasClass(target, "objectBox-functionCall") ||
+ Css.hasClass(target, "functionCallTitle")))
+ {
+ return;
+ }
+
+ var objectBox = Dom.getAncestorByClass(target, "objectBox-functionCall");
+ if (!objectBox)
+ return;
+
+ var traceBox = objectBox.getElementsByClassName("stackTrace").item(0);
+ Css.toggleClass(traceBox, "opened");
+
+ if (Css.hasClass(traceBox, "opened"))
+ {
+ var functionCall = objectBox.repObject;
+ Reps.StackTrace.tag.append({object: functionCall.stackTrace}, traceBox);
+ }
+ else
+ {
+ Dom.clearNode(traceBox);
+ }
+
+ Events.cancelEvent(event);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof FunctionLog;
+ },
+
+ getRealObject: function(object)
+ {
+ return object.frame;
+ },
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(FunctionMonitor);
+Firebug.registerRep(FunctionMonitorRep);
+
+return FunctionMonitor;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/console/memoryProfiler.js b/content/firebug/console/memoryProfiler.js
index e1736f8..c469941 100644
--- a/content/firebug/console/memoryProfiler.js
+++ b/content/firebug/console/memoryProfiler.js
@@ -1,864 +1,864 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/chrome/reps",
- "firebug/lib/locale",
- "firebug/lib/wrapper",
- "firebug/js/stackFrame",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/lib/string",
- "firebug/js/fbs",
-],
-function(Obj, Firebug, Domplate, FirebugReps, Locale, Wrapper, StackFrame, Dom, Css, Str, FBS) {
-
-// ********************************************************************************************* //
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-
-var RETURN_CONTINUE = Ci.jsdIExecutionHook.RETURN_CONTINUE;
-
-var memoryReporterManager = null;
-
-try
-{
- memoryReporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].
- getService(Ci.nsIMemoryReporterManager);
-}
-catch (err)
-{
- if (FBTrace.DBG_MEMORY_PROFILER)
- FBTrace.sysout("memoryProfiler; Looks like '@mozilla.org/memory-reporter-manager;1'" +
- "is no available", err);
-}
-
-// List of memory reports displayed in the result. Append new path in the list in order
-// to create a new column in the result report-table.
-var MEMORY_PATHS =
-{
- "explicit/js": true,
- "explicit/js/gc-heap": true,
- "explicit/js/tjit-data": true,
- "explicit/js/mjit-code": true,
- "explicit/images/content/used/raw": true,
-};
-
-// ********************************************************************************************* //
-
-Firebug.MemoryProfiler = Obj.extend(Firebug.Module,
-{
- dispatchName: "memoryProfiler",
-
- initialize: function() // called once
- {
- Firebug.Module.initialize.apply(this, arguments);
-
- if (FBTrace.DBG_MEMORY_PROFILER)
- FBTrace.sysout("memoryProfiler; initialize");
- },
-
- shutdown: function()
- {
- Firebug.Module.shutdown.apply(this, arguments);
- },
-
- initContext: function(context)
- {
- Firebug.Module.initContext.apply(this, arguments);
-
- // xxxHonza: If profiling is on and the user reloads,needs better testing
- // Profilinig should support reloads to profile page load.
- if (this.profiling)
- this.start(context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onConsoleCleared: function(context)
- {
- if (this.isProfiling())
- this.stop(context, true);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Activation/deactivation
-
- toggleProfiling: function(context)
- {
- try
- {
- if (this.profiling)
- this.stop(context);
- else
- this.start(context);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("memoryProfiler; toggleProfiling EXCEPTION " + err, err);
- }
- },
-
- isProfiling: function()
- {
- return this.profiling;
- },
-
- start: function(context, title)
- {
- if (!memoryReporterManager)
- {
- // xxxHonza: locale if memory profiler will be part of 1.8
- Firebug.Console.log("Memory profiler component is not available on your platform.");
- return;
- }
-
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleMemoryProfiling", "checked", "true");
-
- this.profiling = true;
- FBS.addHandler(this);
-
- // Initialize structures for collected memory data.
- context.memoryProfileStack = []; // Holds memory reports for called fucntions.
- context.memoryProfileResult = {}; // Holds differences between function-call and function-return.
- context.memoryProfileTime = (new Date()).getTime();
-
- // Memory leak detection
- this.mark(context);
-
- var isCustomMessage = !!title;
- if (!isCustomMessage)
- title = Locale.$STR("firebug.Memory Profiler Started");
-
- context.memoryProfileRow = this.logProfileRow(context, title);
- context.memoryProfileRow.customMessage = isCustomMessage;
-
- // For summary numbers (difference between profiling-start and profiling-end)
- context.memoryProfileStack.push(this.getMemoryReport());
-
- Firebug.Console.addListener(this);
- },
-
- stop: function(context, cancelReport)
- {
- FBS.removeHandler(this);
- this.profiling = false;
-
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleMemoryProfiling", "checked", "false");
-
- // Calculate total diff
- var oldReport = context.memoryProfileStack.pop();
- var newReport = this.getMemoryReport();
-
- context.memoryProfileSummary = this.diffMemoryReport(oldReport, newReport);
- context.memoryProfileTime = (new Date()).getTime() - context.memoryProfileTime;
-
- this.logProfileReport(context, context.memoryProfileResult);
-
- delete context.memoryProfileRow;
- delete context.memoryProfileStack;
- delete context.memoryProfileResult;
-
- // Memory leak detection
- var deltaObjects = this.sweep(context);
- this.cleanUp(context);
-
- if (!cancelReport)
- {
- var title = Locale.$STR("firebug.Objects Added While Profiling");
- Firebug.Console.openCollapsedGroup(title, context, "profile",
- Firebug.MemoryProfiler.ProfileCaption, true, null, true);
-
- Firebug.Console.log(deltaObjects, context, "memoryDelta", Firebug.DOMPanel.DirTable);
- Firebug.Console.closeGroup(context, true);
- }
-
- Firebug.Console.removeListener(this);
-
- //Firebug.Console.logFormatted([deltaObjects], context, "memoryDelta");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // JSD Handler
-
- unhook: function()
- {
- },
-
- hook: function()
- {
- },
-
- onFunctionCall: function(frame, depth)
- {
- var context = Firebug.Debugger.getContextByFrame(frame);
- if (!context)
- return RETURN_CONTINUE;
-
- context.memoryProfileStack.push(this.getMemoryReport());
-
- return RETURN_CONTINUE;
- },
-
- onFunctionReturn: function(frame, depth)
- {
- var context = Firebug.Debugger.getContextByFrame(frame);
- if (!context)
- return RETURN_CONTINUE;
-
- frame = StackFrame.getStackFrame(frame, context);
-
- var oldReport = context.memoryProfileStack.pop();
- var newReport = this.getMemoryReport();
- var diff = this.diffMemoryReport(oldReport, newReport);
-
- // Collect reports.
- var entryId = frameId(frame);
- var entry = context.memoryProfileResult[entryId];
-
- if (entry)
- {
- entry.callCount++;
- entry.report = this.sumMemoryReport(entry.report, diff);
- }
- else
- {
- context.memoryProfileResult[entryId] = {
- callCount: 1,
- report: diff,
- frame: frame
- };
- }
-
- return RETURN_CONTINUE;
- },
-
- /*onInterrupt: function(frame, depth)
- {
- },*/
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Memory
-
- getMemoryReport: function()
- {
- var report = {};
-
- if (!memoryReporterManager)
- return report;
-
- var iter = memoryReporterManager.enumerateReporters();
- while (iter.hasMoreElements())
- {
- var reporter = iter.getNext().QueryInterface(Ci.nsIMemoryReporter);
- if (MEMORY_PATHS[reporter.path])
- report[reporter.path] = reporter.memoryUsed;
- }
- return report;
- },
-
- diffMemoryReport: function(oldReport, newReport)
- {
- var diff = {};
- for (var p in oldReport)
- {
- var oldVal = oldReport[p];
- var newVal = newReport[p];
- diff[p] = newVal - oldVal;
- }
- return diff;
- },
-
- sumMemoryReport: function(report1, report2)
- {
- var sum = [];
- for (var p in report1)
- {
- var val1 = report1[p];
- var val2 = report2[p];
- sum[p] = val1 + val2;
- }
- return sum;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Memory leak detection
-
- mark: function(context)
- {
- // Iterate all objects of the content window.
- var iter = new ObjectIterator();
- var contentView = Wrapper.getContentView(context.window);
- iter.iterate(contentView, "window", function(obj, path)
- {
- // We have been here, bail out.
- if (obj.hasOwnProperty("__fbugMemMark"))
- return false;
-
- if (FirebugReps.Arr.isArray(obj, context.window))
- obj.__fbugMemMark = obj.length;
- else
- obj.__fbugMemMark = true;
-
- //if (FBTrace.DBG_MEMORY_PROFILER)
- // FBTrace.sysout("mark "+path+": "+obj.__fbugMemMark+" view: "+
- // Wrapper.getContentView(obj));
-
- // Continue with children
- return true;
- });
- },
-
- sweep: function(context)
- {
- var iter = new ObjectIterator();
- iter.deltaObjects = {};
-
- var contentView = Wrapper.getContentView(context.window);
- iter.iterate(contentView, "window", function(obj, path)
- {
- //if (FBTrace.DBG_MEMORY_PROFILER)
- // FBTrace.sysout("sweep "+path+" "+obj.hasOwnProperty("__fbugMemSweep")+" view: "+
- // Wrapper.getContentView(obj), obj);
-
- if (obj.hasOwnProperty("__fbugMemSweep"))
- return false;
-
- obj.__fbugMemSweep = true;
-
- if (!obj.hasOwnProperty("__fbugMemMark")) // then we did not see this object 'before'
- {
- this.deltaObjects[path] = obj;
- }
- else // we did see it
- {
- // but it was an array with a different size
- if (FirebugReps.Arr.isArray(obj, context.window) &&
- (obj.__fbugMemMark !== obj.length))
- {
- this.deltaObjects[path] = obj;
- }
- }
-
- // Iterate children
- return true;
- });
-
- return iter.deltaObjects;
- },
-
- cleanUp: function(context)
- {
- var iter = new ObjectIterator();
- var contentView = Wrapper.getContentView(context.window);
- iter.iterate(contentView, "window", function(obj, path)
- {
- if (!obj.hasOwnProperty("__fbugMemSweep"))
- return false;
-
- // Clean up
- delete obj.__fbugMemSweep;
- delete obj.__fbugMemMark;
-
- return true;
- });
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // UI
-
- logProfileRow: function(context, title)
- {
- var row = Firebug.Console.openGroup(title, context, "profile",
- Firebug.MemoryProfiler.ProfileCaption, true, null, true);
- Css.setClass(row, "profilerRunning");
-
- Firebug.Console.closeGroup(context, true);
-
- return row;
- },
-
- logProfileReport: function(context, memoryReport, cancel)
- {
- if (FBTrace.DBG_MEMORY_PROFILER)
- {
- FBTrace.sysout("memoryProfiler; logProfileReport", memoryReport);
- FBTrace.sysout("memoryProfiler; logProfileReport SUMMARY", context.memoryProfileSummary);
- }
-
- // Get an existing console log (with throbber) or create a new one.
- var groupRow = context.memoryProfileRow && context.memoryProfileRow.ownerDocument
- ? context.memoryProfileRow
- : this.logProfileRow(context);
- delete context.memoryProfileRow;
-
- Css.removeClass(groupRow, "profilerRunning");
-
- var calls = [];
- var totalCalls = 0;
- var sourceFileMap = context.sourceFileMap;
-
- for (var p in memoryReport)
- {
- if (!memoryReport.hasOwnProperty(p))
- continue;
-
- var entry = memoryReport[p];
- totalCalls++;
-
- if (!entry.frame)
- {
- if (FBTrace.DBG_MEMORY_PROFILER)
- FBTrace.sysout("memoryProfiler no entry.frame? for p="+p, entry);
- continue;
- }
-
- var script = entry.frame.script;
- var sourceLink = Firebug.SourceFile.getSourceLinkForScript(script, context);
-
- if (sourceLink && sourceLink.href in sourceFileMap)
- {
- var call = new MemoryProfileCall(script, context, entry.callCount,
- entry.report, sourceLink);
- calls.push(call);
- }
- }
-
- // Summary log
- var call = new MemoryProfileSummary(context, context.memoryProfileSummary);
- calls.push(call);
- totalCalls++;
-
- if (totalCalls > 0)
- {
- var captionBox = groupRow.getElementsByClassName("profileCaption").item(0);
- if (!groupRow.customMessage)
- captionBox.textContent = Locale.$STR("firebug.Memory Profiler Results");
-
- var timeBox = groupRow.getElementsByClassName("profileTime").item(0);
- timeBox.textContent = "(" + Str.formatTime(context.memoryProfileTime) + ")";
-
- var groupBody = groupRow.lastChild;
- var sizer = Firebug.MemoryProfiler.ProfileTable.tag.replace(
- {object: MEMORY_PATHS}, groupBody);
-
- var table = sizer.firstChild;
- var tHeader = table.lastChild; // no rows inserted.
-
- var callTag = Firebug.MemoryProfiler.ProfileCall.tag;
- var sumTag = Firebug.MemoryProfiler.ProfileSummary.tag;
-
- for (var i = 0; i < calls.length; ++i)
- {
- var call = calls[i];
- call.index = i;
- var tag = (call instanceof MemoryProfileCall) ? callTag : sumTag;
- context.throttle(tag.insertRows, tag, [{object: call}, tHeader]);
- }
-
- context.throttle(groupRow.scrollIntoView, groupRow, []);
- }
- else
- {
- var captionBox = groupRow.getElementsByClassName("profileCaption").item(0);
- captionBox.textContent = Locale.$STR("NothingToProfile");
- }
- }
-});
-
-// ********************************************************************************************* //
-
-function MemoryProfileCall(script, context, callCount, report, sourceLink)
-{
- this.script = script;
- this.context = context;
- this.callCount = callCount;
- this.report = report;
- this.sourceLink = sourceLink;
-}
-
-function MemoryProfileSummary(context, report)
-{
- this.context = context;
- this.report = report;
-}
-
-// ********************************************************************************************* //
-// Object Iterator
-
-/**
- * Recursively iterates all children objects.
- */
-function ObjectIterator()
-{
-}
-
-ObjectIterator.prototype =
-/** @lends ObjectIterator */
-{
- /**
- * Recursive iteration over all children of given object
- * @param {Object} obj The object to iterate
- * @param {String} path helper path for logging.
- * @param {Function} callback Callback function executed for each object.
- */
- iterate: function(obj, path, callback)
- {
- if (!callback.apply(this, [obj, path]))
- return;
-
- var names = Object.keys(obj);
- for (var i=0; i<names.length; i++)
- {
- var name = names[i];
-
- // Ignore memory-profiler helper fields
- if (name === "__fbugMemSweep" || name === "__fbugMemMark")
- continue;
-
- // Ignore built-in objects
- if (Dom.isDOMMember(obj, name) || Dom.isDOMConstant(obj, name))
- continue;
-
- try
- {
- var child = obj[name];
-
- // xxxHonza, xxxJJB: this should be removed once the problem is clear.
- if (name === "HTMLBodyElement")
- FBTrace.sysout("memoryProfiler; HTMLBodyElement " + name + " instanceof: " +
- (prop instanceof window.HTMLBodyElement) + " toString: " + child);
-
- // Recursion
- if (typeof(child) === "object") // TODO function
- this.iterate(child, path + "." + name, callback);
- }
- catch (exc)
- {
- if (FBTrace.DBG_MEMORY_PROFILER)
- FBTrace.sysout("memoryProfiler; iteration fails on " + path + "." + name, exc);
- }
- }
-
- //xxxHonza, xxxJBB: iterate also prototype as soon as we understand the consequences.
- /*
- var proto = Object.getPrototypeOf(obj);
- if (proto && typeof(proto) === 'object')
- this.sweepRecursive(deltaObjects, proto, path+'.__proto__');
- */
- },
-};
-
-// ********************************************************************************************* //
-// Domplate Templates
-
-with (Domplate) {
-Firebug.MemoryProfiler.ProfileTable = domplate(
-{
- tag:
- DIV({"class": "profileSizer", "tabindex": "-1" },
- TABLE({"class": "profileTable", cellspacing: 0, cellpadding: 0,
- width: "100%", "role": "grid"},
- THEAD({"class": "profileThead", "role": "presentation"},
- TR({"class": "headerRow focusRow profileRow subFocusRow",
- onclick: "$onClick", "role": "row"},
- TH({"class": "headerCell alphaValue a11yFocus", "role": "columnheader"},
- DIV({"class": "headerCellBox"},
- Locale.$STR("Function")
- )
- ),
- TH({"class": "headerCell a11yFocus", "role": "columnheader"},
- DIV({"class": "headerCellBox", title: Locale.$STR("CallsHeaderTooltip")},
- Locale.$STR("Calls")
- )
- ),
- FOR("column", "$object|getColumns",
- TH({"class": "headerCell a11yFocus", "role": "columnheader",
- "aria-sort": "descending"},
- DIV({"class": "headerCellBox"},
- Locale.$STR("$column|getColumnLabel")
- )
- )
- ),
- TH({"class": "headerCell alphaValue a11yFocus", "role": "columnheader"},
- DIV({"class": "headerCellBox"},
- Locale.$STR("File")
- )
- )
- )
- ),
- TBODY({"class": "profileTbody", "role": "presentation"})
- )
- ),
-
- getColumns: function(object)
- {
- var cols = [];
- for (var p in object)
- cols.push(p);
- return cols;
- },
-
- getColumnLabel: function(column)
- {
- return column;
- },
-
- onClick: function(event)
- {
- var table = Dom.getAncestorByClass(event.target, "profileTable");
- var header = Dom.getAncestorByClass(event.target, "headerCell");
- if (!header)
- return;
-
- var numerical = !Css.hasClass(header, "alphaValue");
-
- var colIndex = 0;
- for (header = header.previousSibling; header; header = header.previousSibling)
- ++colIndex;
-
- this.sort(table, colIndex, numerical);
- },
-
- sort: function(table, colIndex, numerical)
- {
- sortAscending = function()
- {
- Css.removeClass(header, "sortedDescending");
- Css.setClass(header, "sortedAscending");
- header.setAttribute("aria-sort", "ascending");
-
- header.sorted = -1;
-
- for (var i = 0; i < values.length; ++i)
- tbody.appendChild(values[i].row);
- };
-
- sortDescending = function()
- {
- Css.removeClass(header, "sortedAscending");
- Css.setClass(header, "sortedDescending");
- header.setAttribute("aria-sort", "descending");
-
- header.sorted = 1;
-
- for (var i = values.length-1; i >= 0; --i)
- tbody.appendChild(values[i].row);
- };
-
- var tbody = Dom.getChildByClass(table, "profileTbody");
- var thead = Dom.getChildByClass(table, "profileThead");
-
- var values = [];
- for (var row = tbody.childNodes[0]; row; row = row.nextSibling)
- {
- var cell = row.childNodes[colIndex];
- var sortValue = cell.sortValue ? cell.sortValue : cell.textContent;
- var value = numerical ? parseFloat(sortValue) : sortValue;
- values.push({row: row, value: value});
- }
-
- values.sort(function(a, b) { return a.value < b.value ? -1 : 1; });
-
- var headerRow = thead.firstChild;
- var headerSorted = Dom.getChildByClass(headerRow, "headerSorted");
- Css.removeClass(headerSorted, "headerSorted");
- if (headerSorted)
- headerSorted.removeAttribute('aria-sort');
-
- var header = headerRow.childNodes[colIndex];
- Css.setClass(header, "headerSorted");
-
- if (numerical)
- {
- if (!header.sorted || header.sorted == -1)
- {
- sortDescending();
- }
- else
- {
- sortAscending();
- }
- }
- else
- {
- if (!header.sorted || header.sorted == -1)
- {
- sortAscending();
- }
- else
- {
- sortDescending();
- }
- }
- }
-});
-
-// ********************************************************************************************* //
-
-Firebug.MemoryProfiler.ProfileCaption = domplate(Firebug.Rep,
-{
- tag:
- SPAN({"class": "profileTitle", "role": "status"},
- SPAN({"class": "profileCaption"}, "$object"),
- " ",
- SPAN({"class": "profileTime"}, "")
- )
-});
-
-// ********************************************************************************************* //
-
-// FirebugReps.OBJECTLINK is not yet initialized at this moment.
-var OBJECTLINK =
- A({
- "class": "objectLink objectLink-$className a11yFocus",
- _repObject: "$object"
- });
-
-Firebug.MemoryProfiler.ProfileCall = domplate(Firebug.Rep,
-{
- tag:
- TR({"class": "focusRow profileRow subFocusRow", "role": "row"},
- TD({"class": "profileCell", "role": "presentation"},
- OBJECTLINK("$object|getCallName")
- ),
- TD({"class": "a11yFocus profileCell", "role": "gridcell"},
- "$object.callCount"
- ),
- FOR("column", "$object|getColumns",
- TD({"class": "a11yFocus profileCell", "role": "gridcell", _sortValue: "$column"},
- "$column|getColumnLabel"
- )
- ),
- TD({"class": "linkCell profileCell", "role": "presentation"},
- TAG("$object|getSourceLinkTag", {object: "$object|getSourceLink"})
- )
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getSourceLinkTag: function(object)
- {
- return FirebugReps.SourceLink.tag;
- },
-
- getCallName: function(call)
- {
- return Str.cropString(StackFrame.getFunctionName(call.script, call.context), 60);
- },
-
- getColumns: function(call)
- {
- var cols = [];
- for (var p in MEMORY_PATHS)
- cols.push(call.report[p] || 0);
- return cols;
- },
-
- getColumnLabel: function(call)
- {
- return Str.formatSize(call);
- },
-
- getSourceLink: function(call)
- {
- return call.sourceLink;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "profile",
-
- supportsObject: function(object, type)
- {
- return object instanceof MemoryProfileCall;
- },
-
- inspectObject: function(call, context)
- {
- var sourceLink = this.getSourceLink(call);
- Firebug.chrome.select(sourceLink);
- },
-
- getTooltip: function(call)
- {
- try
- {
- var fn = StackFrame.getFunctionName(call.script, call.context);
- return FirebugReps.Func.getTooltip(fn, call.context);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("profiler.getTooltip FAILS ", exc);
- }
- },
-
- getContextMenuItems: function(call, target, context)
- {
- var fn = Wrapper.unwrapIValue(call.script.functionObject);
- return FirebugReps.Func.getContextMenuItems(fn, call.script, context);
- }
-});
-
-// ********************************************************************************************* //
-
-Firebug.MemoryProfiler.ProfileSummary = domplate(Firebug.Rep,
-{
- tag:
- TR({"class": "focusRow profileSummaryRow subFocusRow", "role": "row"},
- TD({"class": "profileCell", "role": "presentation", colspan: 2},
- Locale.$STR("firebug.Entire Session")
- ),
- FOR("column", "$object|getColumns",
- TD({"class": "a11yFocus profileCell", "role": "gridcell", _sortValue: "$column"},
- "$column|getColumnLabel"
- )
- ),
- TD({"class": "linkCell profileCell", "role": "presentation"})
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- className: "profile",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getColumns: function(call)
- {
- return Firebug.MemoryProfiler.ProfileCall.getColumns(call);
- },
-
- getColumnLabel: function(call)
- {
- return Firebug.MemoryProfiler.ProfileCall.getColumnLabel(call);
- }
-});
-
-} // END with Domplate
-
-// ********************************************************************************************* //
-// Private Functions
-
-function frameId(frame, depth)
-{
- if (frame)
- return frame.script.tag+"@"+frame.line;
- else
- return "noIdForNoframe";
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.MemoryProfiler);
-Firebug.registerRep(Firebug.MemoryProfiler.ProfileCall);
-
-return Firebug.MemoryProfiler;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/chrome/reps",
+ "firebug/lib/locale",
+ "firebug/lib/wrapper",
+ "firebug/js/stackFrame",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/lib/string",
+ "firebug/js/fbs",
+],
+function(Obj, Firebug, Domplate, FirebugReps, Locale, Wrapper, StackFrame, Dom, Css, Str, FBS) {
+
+// ********************************************************************************************* //
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+
+var RETURN_CONTINUE = Ci.jsdIExecutionHook.RETURN_CONTINUE;
+
+var memoryReporterManager = null;
+
+try
+{
+ memoryReporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].
+ getService(Ci.nsIMemoryReporterManager);
+}
+catch (err)
+{
+ if (FBTrace.DBG_MEMORY_PROFILER)
+ FBTrace.sysout("memoryProfiler; Looks like '@mozilla.org/memory-reporter-manager;1'" +
+ "is no available", err);
+}
+
+// List of memory reports displayed in the result. Append new path in the list in order
+// to create a new column in the result report-table.
+var MEMORY_PATHS =
+{
+ "explicit/js": true,
+ "explicit/js/gc-heap": true,
+ "explicit/js/tjit-data": true,
+ "explicit/js/mjit-code": true,
+ "explicit/images/content/used/raw": true,
+};
+
+// ********************************************************************************************* //
+
+Firebug.MemoryProfiler = Obj.extend(Firebug.Module,
+{
+ dispatchName: "memoryProfiler",
+
+ initialize: function() // called once
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+
+ if (FBTrace.DBG_MEMORY_PROFILER)
+ FBTrace.sysout("memoryProfiler; initialize");
+ },
+
+ shutdown: function()
+ {
+ Firebug.Module.shutdown.apply(this, arguments);
+ },
+
+ initContext: function(context)
+ {
+ Firebug.Module.initContext.apply(this, arguments);
+
+ // xxxHonza: If profiling is on and the user reloads,needs better testing
+ // Profilinig should support reloads to profile page load.
+ if (this.profiling)
+ this.start(context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onConsoleCleared: function(context)
+ {
+ if (this.isProfiling())
+ this.stop(context, true);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Activation/deactivation
+
+ toggleProfiling: function(context)
+ {
+ try
+ {
+ if (this.profiling)
+ this.stop(context);
+ else
+ this.start(context);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("memoryProfiler; toggleProfiling EXCEPTION " + err, err);
+ }
+ },
+
+ isProfiling: function()
+ {
+ return this.profiling;
+ },
+
+ start: function(context, title)
+ {
+ if (!memoryReporterManager)
+ {
+ // xxxHonza: locale if memory profiler will be part of 1.8
+ Firebug.Console.log("Memory profiler component is not available on your platform.");
+ return;
+ }
+
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleMemoryProfiling", "checked", "true");
+
+ this.profiling = true;
+ FBS.addHandler(this);
+
+ // Initialize structures for collected memory data.
+ context.memoryProfileStack = []; // Holds memory reports for called fucntions.
+ context.memoryProfileResult = {}; // Holds differences between function-call and function-return.
+ context.memoryProfileTime = (new Date()).getTime();
+
+ // Memory leak detection
+ this.mark(context);
+
+ var isCustomMessage = !!title;
+ if (!isCustomMessage)
+ title = Locale.$STR("firebug.Memory Profiler Started");
+
+ context.memoryProfileRow = this.logProfileRow(context, title);
+ context.memoryProfileRow.customMessage = isCustomMessage;
+
+ // For summary numbers (difference between profiling-start and profiling-end)
+ context.memoryProfileStack.push(this.getMemoryReport());
+
+ Firebug.Console.addListener(this);
+ },
+
+ stop: function(context, cancelReport)
+ {
+ FBS.removeHandler(this);
+ this.profiling = false;
+
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleMemoryProfiling", "checked", "false");
+
+ // Calculate total diff
+ var oldReport = context.memoryProfileStack.pop();
+ var newReport = this.getMemoryReport();
+
+ context.memoryProfileSummary = this.diffMemoryReport(oldReport, newReport);
+ context.memoryProfileTime = (new Date()).getTime() - context.memoryProfileTime;
+
+ this.logProfileReport(context, context.memoryProfileResult);
+
+ delete context.memoryProfileRow;
+ delete context.memoryProfileStack;
+ delete context.memoryProfileResult;
+
+ // Memory leak detection
+ var deltaObjects = this.sweep(context);
+ this.cleanUp(context);
+
+ if (!cancelReport)
+ {
+ var title = Locale.$STR("firebug.Objects Added While Profiling");
+ Firebug.Console.openCollapsedGroup(title, context, "profile",
+ Firebug.MemoryProfiler.ProfileCaption, true, null, true);
+
+ Firebug.Console.log(deltaObjects, context, "memoryDelta", Firebug.DOMPanel.DirTable);
+ Firebug.Console.closeGroup(context, true);
+ }
+
+ Firebug.Console.removeListener(this);
+
+ //Firebug.Console.logFormatted([deltaObjects], context, "memoryDelta");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // JSD Handler
+
+ unhook: function()
+ {
+ },
+
+ hook: function()
+ {
+ },
+
+ onFunctionCall: function(frame, depth)
+ {
+ var context = Firebug.Debugger.getContextByFrame(frame);
+ if (!context)
+ return RETURN_CONTINUE;
+
+ context.memoryProfileStack.push(this.getMemoryReport());
+
+ return RETURN_CONTINUE;
+ },
+
+ onFunctionReturn: function(frame, depth)
+ {
+ var context = Firebug.Debugger.getContextByFrame(frame);
+ if (!context)
+ return RETURN_CONTINUE;
+
+ frame = StackFrame.getStackFrame(frame, context);
+
+ var oldReport = context.memoryProfileStack.pop();
+ var newReport = this.getMemoryReport();
+ var diff = this.diffMemoryReport(oldReport, newReport);
+
+ // Collect reports.
+ var entryId = frameId(frame);
+ var entry = context.memoryProfileResult[entryId];
+
+ if (entry)
+ {
+ entry.callCount++;
+ entry.report = this.sumMemoryReport(entry.report, diff);
+ }
+ else
+ {
+ context.memoryProfileResult[entryId] = {
+ callCount: 1,
+ report: diff,
+ frame: frame
+ };
+ }
+
+ return RETURN_CONTINUE;
+ },
+
+ /*onInterrupt: function(frame, depth)
+ {
+ },*/
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Memory
+
+ getMemoryReport: function()
+ {
+ var report = {};
+
+ if (!memoryReporterManager)
+ return report;
+
+ var iter = memoryReporterManager.enumerateReporters();
+ while (iter.hasMoreElements())
+ {
+ var reporter = iter.getNext().QueryInterface(Ci.nsIMemoryReporter);
+ if (MEMORY_PATHS[reporter.path])
+ report[reporter.path] = reporter.memoryUsed;
+ }
+ return report;
+ },
+
+ diffMemoryReport: function(oldReport, newReport)
+ {
+ var diff = {};
+ for (var p in oldReport)
+ {
+ var oldVal = oldReport[p];
+ var newVal = newReport[p];
+ diff[p] = newVal - oldVal;
+ }
+ return diff;
+ },
+
+ sumMemoryReport: function(report1, report2)
+ {
+ var sum = [];
+ for (var p in report1)
+ {
+ var val1 = report1[p];
+ var val2 = report2[p];
+ sum[p] = val1 + val2;
+ }
+ return sum;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Memory leak detection
+
+ mark: function(context)
+ {
+ // Iterate all objects of the content window.
+ var iter = new ObjectIterator();
+ var contentView = Wrapper.getContentView(context.window);
+ iter.iterate(contentView, "window", function(obj, path)
+ {
+ // We have been here, bail out.
+ if (obj.hasOwnProperty("__fbugMemMark"))
+ return false;
+
+ if (FirebugReps.Arr.isArray(obj, context.window))
+ obj.__fbugMemMark = obj.length;
+ else
+ obj.__fbugMemMark = true;
+
+ //if (FBTrace.DBG_MEMORY_PROFILER)
+ // FBTrace.sysout("mark "+path+": "+obj.__fbugMemMark+" view: "+
+ // Wrapper.getContentView(obj));
+
+ // Continue with children
+ return true;
+ });
+ },
+
+ sweep: function(context)
+ {
+ var iter = new ObjectIterator();
+ iter.deltaObjects = {};
+
+ var contentView = Wrapper.getContentView(context.window);
+ iter.iterate(contentView, "window", function(obj, path)
+ {
+ //if (FBTrace.DBG_MEMORY_PROFILER)
+ // FBTrace.sysout("sweep "+path+" "+obj.hasOwnProperty("__fbugMemSweep")+" view: "+
+ // Wrapper.getContentView(obj), obj);
+
+ if (obj.hasOwnProperty("__fbugMemSweep"))
+ return false;
+
+ obj.__fbugMemSweep = true;
+
+ if (!obj.hasOwnProperty("__fbugMemMark")) // then we did not see this object 'before'
+ {
+ this.deltaObjects[path] = obj;
+ }
+ else // we did see it
+ {
+ // but it was an array with a different size
+ if (FirebugReps.Arr.isArray(obj, context.window) &&
+ (obj.__fbugMemMark !== obj.length))
+ {
+ this.deltaObjects[path] = obj;
+ }
+ }
+
+ // Iterate children
+ return true;
+ });
+
+ return iter.deltaObjects;
+ },
+
+ cleanUp: function(context)
+ {
+ var iter = new ObjectIterator();
+ var contentView = Wrapper.getContentView(context.window);
+ iter.iterate(contentView, "window", function(obj, path)
+ {
+ if (!obj.hasOwnProperty("__fbugMemSweep"))
+ return false;
+
+ // Clean up
+ delete obj.__fbugMemSweep;
+ delete obj.__fbugMemMark;
+
+ return true;
+ });
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // UI
+
+ logProfileRow: function(context, title)
+ {
+ var row = Firebug.Console.openGroup(title, context, "profile",
+ Firebug.MemoryProfiler.ProfileCaption, true, null, true);
+ Css.setClass(row, "profilerRunning");
+
+ Firebug.Console.closeGroup(context, true);
+
+ return row;
+ },
+
+ logProfileReport: function(context, memoryReport, cancel)
+ {
+ if (FBTrace.DBG_MEMORY_PROFILER)
+ {
+ FBTrace.sysout("memoryProfiler; logProfileReport", memoryReport);
+ FBTrace.sysout("memoryProfiler; logProfileReport SUMMARY", context.memoryProfileSummary);
+ }
+
+ // Get an existing console log (with throbber) or create a new one.
+ var groupRow = context.memoryProfileRow && context.memoryProfileRow.ownerDocument
+ ? context.memoryProfileRow
+ : this.logProfileRow(context);
+ delete context.memoryProfileRow;
+
+ Css.removeClass(groupRow, "profilerRunning");
+
+ var calls = [];
+ var totalCalls = 0;
+ var sourceFileMap = context.sourceFileMap;
+
+ for (var p in memoryReport)
+ {
+ if (!memoryReport.hasOwnProperty(p))
+ continue;
+
+ var entry = memoryReport[p];
+ totalCalls++;
+
+ if (!entry.frame)
+ {
+ if (FBTrace.DBG_MEMORY_PROFILER)
+ FBTrace.sysout("memoryProfiler no entry.frame? for p="+p, entry);
+ continue;
+ }
+
+ var script = entry.frame.script;
+ var sourceLink = Firebug.SourceFile.getSourceLinkForScript(script, context);
+
+ if (sourceLink && sourceLink.href in sourceFileMap)
+ {
+ var call = new MemoryProfileCall(script, context, entry.callCount,
+ entry.report, sourceLink);
+ calls.push(call);
+ }
+ }
+
+ // Summary log
+ var call = new MemoryProfileSummary(context, context.memoryProfileSummary);
+ calls.push(call);
+ totalCalls++;
+
+ if (totalCalls > 0)
+ {
+ var captionBox = groupRow.getElementsByClassName("profileCaption").item(0);
+ if (!groupRow.customMessage)
+ captionBox.textContent = Locale.$STR("firebug.Memory Profiler Results");
+
+ var timeBox = groupRow.getElementsByClassName("profileTime").item(0);
+ timeBox.textContent = "(" + Str.formatTime(context.memoryProfileTime) + ")";
+
+ var groupBody = groupRow.lastChild;
+ var sizer = Firebug.MemoryProfiler.ProfileTable.tag.replace(
+ {object: MEMORY_PATHS}, groupBody);
+
+ var table = sizer.firstChild;
+ var tHeader = table.lastChild; // no rows inserted.
+
+ var callTag = Firebug.MemoryProfiler.ProfileCall.tag;
+ var sumTag = Firebug.MemoryProfiler.ProfileSummary.tag;
+
+ for (var i = 0; i < calls.length; ++i)
+ {
+ var call = calls[i];
+ call.index = i;
+ var tag = (call instanceof MemoryProfileCall) ? callTag : sumTag;
+ context.throttle(tag.insertRows, tag, [{object: call}, tHeader]);
+ }
+
+ context.throttle(groupRow.scrollIntoView, groupRow, []);
+ }
+ else
+ {
+ var captionBox = groupRow.getElementsByClassName("profileCaption").item(0);
+ captionBox.textContent = Locale.$STR("NothingToProfile");
+ }
+ }
+});
+
+// ********************************************************************************************* //
+
+function MemoryProfileCall(script, context, callCount, report, sourceLink)
+{
+ this.script = script;
+ this.context = context;
+ this.callCount = callCount;
+ this.report = report;
+ this.sourceLink = sourceLink;
+}
+
+function MemoryProfileSummary(context, report)
+{
+ this.context = context;
+ this.report = report;
+}
+
+// ********************************************************************************************* //
+// Object Iterator
+
+/**
+ * Recursively iterates all children objects.
+ */
+function ObjectIterator()
+{
+}
+
+ObjectIterator.prototype =
+/** @lends ObjectIterator */
+{
+ /**
+ * Recursive iteration over all children of given object
+ * @param {Object} obj The object to iterate
+ * @param {String} path helper path for logging.
+ * @param {Function} callback Callback function executed for each object.
+ */
+ iterate: function(obj, path, callback)
+ {
+ if (!callback.apply(this, [obj, path]))
+ return;
+
+ var names = Object.keys(obj);
+ for (var i=0; i<names.length; i++)
+ {
+ var name = names[i];
+
+ // Ignore memory-profiler helper fields
+ if (name === "__fbugMemSweep" || name === "__fbugMemMark")
+ continue;
+
+ // Ignore built-in objects
+ if (Dom.isDOMMember(obj, name) || Dom.isDOMConstant(obj, name))
+ continue;
+
+ try
+ {
+ var child = obj[name];
+
+ // xxxHonza, xxxJJB: this should be removed once the problem is clear.
+ if (name === "HTMLBodyElement")
+ FBTrace.sysout("memoryProfiler; HTMLBodyElement " + name + " instanceof: " +
+ (prop instanceof window.HTMLBodyElement) + " toString: " + child);
+
+ // Recursion
+ if (typeof(child) === "object") // TODO function
+ this.iterate(child, path + "." + name, callback);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_MEMORY_PROFILER)
+ FBTrace.sysout("memoryProfiler; iteration fails on " + path + "." + name, exc);
+ }
+ }
+
+ //xxxHonza, xxxJBB: iterate also prototype as soon as we understand the consequences.
+ /*
+ var proto = Object.getPrototypeOf(obj);
+ if (proto && typeof(proto) === 'object')
+ this.sweepRecursive(deltaObjects, proto, path+'.__proto__');
+ */
+ },
+};
+
+// ********************************************************************************************* //
+// Domplate Templates
+
+with (Domplate) {
+Firebug.MemoryProfiler.ProfileTable = domplate(
+{
+ tag:
+ DIV({"class": "profileSizer", "tabindex": "-1" },
+ TABLE({"class": "profileTable", cellspacing: 0, cellpadding: 0,
+ width: "100%", "role": "grid"},
+ THEAD({"class": "profileThead", "role": "presentation"},
+ TR({"class": "headerRow focusRow profileRow subFocusRow",
+ onclick: "$onClick", "role": "row"},
+ TH({"class": "headerCell alphaValue a11yFocus", "role": "columnheader"},
+ DIV({"class": "headerCellBox"},
+ Locale.$STR("Function")
+ )
+ ),
+ TH({"class": "headerCell a11yFocus", "role": "columnheader"},
+ DIV({"class": "headerCellBox", title: Locale.$STR("CallsHeaderTooltip")},
+ Locale.$STR("Calls")
+ )
+ ),
+ FOR("column", "$object|getColumns",
+ TH({"class": "headerCell a11yFocus", "role": "columnheader",
+ "aria-sort": "descending"},
+ DIV({"class": "headerCellBox"},
+ Locale.$STR("$column|getColumnLabel")
+ )
+ )
+ ),
+ TH({"class": "headerCell alphaValue a11yFocus", "role": "columnheader"},
+ DIV({"class": "headerCellBox"},
+ Locale.$STR("File")
+ )
+ )
+ )
+ ),
+ TBODY({"class": "profileTbody", "role": "presentation"})
+ )
+ ),
+
+ getColumns: function(object)
+ {
+ var cols = [];
+ for (var p in object)
+ cols.push(p);
+ return cols;
+ },
+
+ getColumnLabel: function(column)
+ {
+ return column;
+ },
+
+ onClick: function(event)
+ {
+ var table = Dom.getAncestorByClass(event.target, "profileTable");
+ var header = Dom.getAncestorByClass(event.target, "headerCell");
+ if (!header)
+ return;
+
+ var numerical = !Css.hasClass(header, "alphaValue");
+
+ var colIndex = 0;
+ for (header = header.previousSibling; header; header = header.previousSibling)
+ ++colIndex;
+
+ this.sort(table, colIndex, numerical);
+ },
+
+ sort: function(table, colIndex, numerical)
+ {
+ sortAscending = function()
+ {
+ Css.removeClass(header, "sortedDescending");
+ Css.setClass(header, "sortedAscending");
+ header.setAttribute("aria-sort", "ascending");
+
+ header.sorted = -1;
+
+ for (var i = 0; i < values.length; ++i)
+ tbody.appendChild(values[i].row);
+ };
+
+ sortDescending = function()
+ {
+ Css.removeClass(header, "sortedAscending");
+ Css.setClass(header, "sortedDescending");
+ header.setAttribute("aria-sort", "descending");
+
+ header.sorted = 1;
+
+ for (var i = values.length-1; i >= 0; --i)
+ tbody.appendChild(values[i].row);
+ };
+
+ var tbody = Dom.getChildByClass(table, "profileTbody");
+ var thead = Dom.getChildByClass(table, "profileThead");
+
+ var values = [];
+ for (var row = tbody.childNodes[0]; row; row = row.nextSibling)
+ {
+ var cell = row.childNodes[colIndex];
+ var sortValue = cell.sortValue ? cell.sortValue : cell.textContent;
+ var value = numerical ? parseFloat(sortValue) : sortValue;
+ values.push({row: row, value: value});
+ }
+
+ values.sort(function(a, b) { return a.value < b.value ? -1 : 1; });
+
+ var headerRow = thead.firstChild;
+ var headerSorted = Dom.getChildByClass(headerRow, "headerSorted");
+ Css.removeClass(headerSorted, "headerSorted");
+ if (headerSorted)
+ headerSorted.removeAttribute('aria-sort');
+
+ var header = headerRow.childNodes[colIndex];
+ Css.setClass(header, "headerSorted");
+
+ if (numerical)
+ {
+ if (!header.sorted || header.sorted == -1)
+ {
+ sortDescending();
+ }
+ else
+ {
+ sortAscending();
+ }
+ }
+ else
+ {
+ if (!header.sorted || header.sorted == -1)
+ {
+ sortAscending();
+ }
+ else
+ {
+ sortDescending();
+ }
+ }
+ }
+});
+
+// ********************************************************************************************* //
+
+Firebug.MemoryProfiler.ProfileCaption = domplate(Firebug.Rep,
+{
+ tag:
+ SPAN({"class": "profileTitle", "role": "status"},
+ SPAN({"class": "profileCaption"}, "$object"),
+ " ",
+ SPAN({"class": "profileTime"}, "")
+ )
+});
+
+// ********************************************************************************************* //
+
+// FirebugReps.OBJECTLINK is not yet initialized at this moment.
+var OBJECTLINK =
+ A({
+ "class": "objectLink objectLink-$className a11yFocus",
+ _repObject: "$object"
+ });
+
+Firebug.MemoryProfiler.ProfileCall = domplate(Firebug.Rep,
+{
+ tag:
+ TR({"class": "focusRow profileRow subFocusRow", "role": "row"},
+ TD({"class": "profileCell", "role": "presentation"},
+ OBJECTLINK("$object|getCallName")
+ ),
+ TD({"class": "a11yFocus profileCell", "role": "gridcell"},
+ "$object.callCount"
+ ),
+ FOR("column", "$object|getColumns",
+ TD({"class": "a11yFocus profileCell", "role": "gridcell", _sortValue: "$column"},
+ "$column|getColumnLabel"
+ )
+ ),
+ TD({"class": "linkCell profileCell", "role": "presentation"},
+ TAG("$object|getSourceLinkTag", {object: "$object|getSourceLink"})
+ )
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getSourceLinkTag: function(object)
+ {
+ return FirebugReps.SourceLink.tag;
+ },
+
+ getCallName: function(call)
+ {
+ return Str.cropString(StackFrame.getFunctionName(call.script, call.context), 60);
+ },
+
+ getColumns: function(call)
+ {
+ var cols = [];
+ for (var p in MEMORY_PATHS)
+ cols.push(call.report[p] || 0);
+ return cols;
+ },
+
+ getColumnLabel: function(call)
+ {
+ return Str.formatSize(call);
+ },
+
+ getSourceLink: function(call)
+ {
+ return call.sourceLink;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "profile",
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof MemoryProfileCall;
+ },
+
+ inspectObject: function(call, context)
+ {
+ var sourceLink = this.getSourceLink(call);
+ Firebug.chrome.select(sourceLink);
+ },
+
+ getTooltip: function(call)
+ {
+ try
+ {
+ var fn = StackFrame.getFunctionName(call.script, call.context);
+ return FirebugReps.Func.getTooltip(fn, call.context);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("profiler.getTooltip FAILS ", exc);
+ }
+ },
+
+ getContextMenuItems: function(call, target, context)
+ {
+ var fn = Wrapper.unwrapIValue(call.script.functionObject);
+ return FirebugReps.Func.getContextMenuItems(fn, call.script, context);
+ }
+});
+
+// ********************************************************************************************* //
+
+Firebug.MemoryProfiler.ProfileSummary = domplate(Firebug.Rep,
+{
+ tag:
+ TR({"class": "focusRow profileSummaryRow subFocusRow", "role": "row"},
+ TD({"class": "profileCell", "role": "presentation", colspan: 2},
+ Locale.$STR("firebug.Entire Session")
+ ),
+ FOR("column", "$object|getColumns",
+ TD({"class": "a11yFocus profileCell", "role": "gridcell", _sortValue: "$column"},
+ "$column|getColumnLabel"
+ )
+ ),
+ TD({"class": "linkCell profileCell", "role": "presentation"})
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ className: "profile",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getColumns: function(call)
+ {
+ return Firebug.MemoryProfiler.ProfileCall.getColumns(call);
+ },
+
+ getColumnLabel: function(call)
+ {
+ return Firebug.MemoryProfiler.ProfileCall.getColumnLabel(call);
+ }
+});
+
+} // END with Domplate
+
+// ********************************************************************************************* //
+// Private Functions
+
+function frameId(frame, depth)
+{
+ if (frame)
+ return frame.script.tag+"@"+frame.line;
+ else
+ return "noIdForNoframe";
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.MemoryProfiler);
+Firebug.registerRep(Firebug.MemoryProfiler.ProfileCall);
+
+return Firebug.MemoryProfiler;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/console/performanceTiming.js b/content/firebug/console/performanceTiming.js
index 7937f1a..556e783 100644
--- a/content/firebug/console/performanceTiming.js
+++ b/content/firebug/console/performanceTiming.js
@@ -1,630 +1,635 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/trace",
- "firebug/lib/domplate",
- "firebug/lib/object",
- "firebug/lib/locale",
- "firebug/lib/dom",
- "firebug/lib/events",
- "firebug/lib/string",
- "firebug/lib/wrapper",
- "firebug/lib/css",
-],
-function(Firebug, FBTrace, Domplate, Obj, Locale, Dom, Events, Str, Wrapper, Css) {
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Docs
-
-// See http://www.w3.org/TR/navigation-timing/
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// List of timing properties in performance.timing structure.
-var timingProps = [
- "connectEnd",
- "connectStart",
- "domComplete",
- "domContentLoadedEventEnd",
- "domContentLoadedEventStart",
- "domInteractive",
- "domLoading",
- "domainLookupEnd",
- "domainLookupStart",
- "fetchStart",
- "loadEventEnd",
- "loadEventStart",
- "navigationStart",
- "redirectCount",
- "redirectEnd",
- "redirectStart",
- "requestStart",
- "responseEnd",
- "responseStart",
- "unloadEventEnd",
- "unloadEventStart",
-];
-
-// ********************************************************************************************* //
-// Module
-
-var PerformanceTimingModule = Obj.extend(Firebug.Module,
-{
- initialize: function(prefDomain, prefNames)
- {
- Firebug.Module.initialize.apply(this, arguments);
- Firebug.Console.addListener(ConsoleListener);
- },
-
- shutdown: function()
- {
- Firebug.Module.shutdown.apply(this, arguments);
- Firebug.Console.removeListener(ConsoleListener);
- },
-});
-
-// ********************************************************************************************* //
-// Domplate
-
-/**
- * This template is used to render the timing waterfall graph.
- */
-var PerformanceTimingRep = domplate(Firebug.Rep,
-/** @lends PerformanceTimingRep */
-{
- className: "perfTiming",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- tag:
- TABLE({"class": "perfTimingTable", cellspacing: 0, cellpadding: 0, width: "100%",
- "role": "grid", _repObject: "$object"},
- TBODY({"class": "perfTimingTbody", "role": "presentation"},
- FOR("bar", "$object.bars",
- TR(
- TD(
- DIV({"class": "perfTimingBox"},
- DIV({"class": "perfTimingBar $bar.className",
- style: "left: $bar.left%; width: $bar.width%"},
- SPAN({"class": "perfTimingBarLabel"}, "$bar.label")
- ),
- DIV({"class": "perfTimingEvent domLoading",
- style: "left: $bar.domLoading%;"}
- ),
- DIV({"class": "perfTimingEvent domInteractive",
- style: "left: $bar.domInteractive%;"}
- ),
- DIV({"class": "perfTimingEvent domContentLoaded",
- style: "left: $bar.domContentLoaded%;"}
- ),
- DIV({"class": "perfTimingEvent onLoad",
- style: "left: $bar.onLoad%;"}
- ),
- DIV({"class": "perfTimingEvent cursor"})
- )
- )
- )
- )
- )
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getRealObject: function(object)
- {
- return Wrapper.unwrapObject(object.timing);
- },
-
- supportsObject: function(object, type)
- {
- return (object instanceof PerfTimingObj);
- },
-
- getContextMenuItems: function(object, target, context)
- {
- return [];
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- showInfoTip: function(infoTip, target, x, y)
- {
- var table = Dom.getAncestorByClass(target, "perfTimingTable");
- if (!table)
- return false;
-
- var timingObj = table.repObject;
- return PerfInfoTip.render(timingObj.timing, infoTip);
- }
-});
-
-// ********************************************************************************************* //
-// InfoTip
-
-/**
- * Hovering mouse over the waterfall graph shows an infotip. This template is responsible
- * for rendering its content.
- */
-var PerfInfoTip = domplate(Firebug.Rep,
-/** @lends PerfInfoTip */
-{
- tableTag:
- TABLE({"class": "timeInfoTip", "id": "fbPerfTimingInfoTip"},
- TBODY()
- ),
-
- timingsTag:
- FOR("bar", "$bars",
- TR({"class": "timeInfoTipRow", $collapsed: "$bar|hideBar"},
- TD({"class": "timeInfoTipBar $bar|getClassName"}),
- TD({"class": "timeInfoTipCell startTime"},
- "$bar.start|formatStartTime"
- ),
- TD({"class": "timeInfoTipCell elapsedTime"},
- "$bar.elapsed|formatTime"
- ),
- TD("$bar|getLabel")
- )
- ),
-
- separatorTag:
- TR(
- TD({"class": "timeInfoTipSeparator", "colspan": 4, "height": "10px"},
- SPAN("$label")
- )
- ),
-
- eventsTag:
- FOR("event", "$events",
- TR({"class": "timeInfoTipEventRow"},
- TD({"class": "timeInfoTipBar", align: "center"},
- DIV({"class": "$event|getClassName timeInfoTipEventBar"})
- ),
- TD("$event.start|formatStartTime"),
- TD({"class": "timeInfotTipEventName", "colspan": 2},
- "$event|getTimeStampLabel"
- )
- )
- ),
-
- hideBar: function(obj)
- {
- return !obj.elapsed && obj.className == "redirect";
- },
-
- getClassName: function(obj)
- {
- return obj.className;
- },
-
- formatTime: function(time)
- {
- return Str.formatTime(time);
- },
-
- formatStartTime: function(time)
- {
- var label = Str.formatTime(time);
- if (!time)
- return label;
-
- return (time > 0 ? "+" : "") + label;
- },
-
- getLabel: function(obj)
- {
- return Locale.$STR("perftiming." + obj.label);
- },
-
- getTimeStampLabel: function(obj)
- {
- return obj.name;
- },
-
- render: function(timing, parentNode)
- {
- var infoTip = PerfInfoTip.tableTag.replace({}, parentNode);
-
- // Insert top description.
- this.separatorTag.insertRows({label: Locale.$STR("perftiming.bars.label")},
- infoTip.firstChild);
-
- // Insert request timing info.
- var bars = calculateBars(timing);
- this.timingsTag.insertRows({bars: bars}, infoTip.firstChild);
-
- var t = timing;
-
- var events = [];
- events.push({
- name: "DOM Loading",
- className: "domLoading",
- start: t.domLoading - t.navigationStart
- });
-
- events.push({
- name: "DOM Interactive",
- className: "domInteractive",
- start: t.domInteractive - t.navigationStart,
- });
-
- events.push({
- name: "DOMContentLoaded",
- className: "domContentLoaded",
- start: t.domContentLoadedEventStart - t.navigationStart,
- });
-
- events.push({
- name: "load",
- className: "onLoad",
- start: t.loadEventStart - t.navigationStart,
- });
-
- // Insert separator.
- this.separatorTag.insertRows({label: Locale.$STR("requestinfo.timings.label")},
- infoTip.firstChild);
-
- this.eventsTag.insertRows({events: events}, infoTip.firstChild);
-
- return true;
- }
-});
-
-// ********************************************************************************************* //
-// Rep Object
-
-function PerfTimingObj(bars, timing)
-{
- this.bars = bars;
- this.timing = timing;
-}
-
-// ********************************************************************************************* //
-
-/**
- * Console listener is responsible for rendering the Performance visualization every time
- * the user logs 'performance.timing' on the command line.
- */
-var ConsoleListener =
-/** @lends ConsoleListener */
-{
- tag:
- DIV({_repObject: "$object"},
- DIV({"class": "documentCookieBody"})
- ),
-
- log: function(context, object, className, sourceLink)
- {
- if (!context || !object)
- return;
-
- var type = Object.prototype.toString.call(object);
- if (type === "[object PerformanceTiming]")
- performanceTiming(context, object);
- },
-
- logFormatted: function(context, objects, className, sourceLink)
- {
- }
-};
-
-// ********************************************************************************************* //
-// Console Logging
-
-/**
- * This function is responsible for inserting the waterfall graph into the Console panel.
- */
-function performanceTiming(context, timing)
-{
- var t = timing;
- var elapsed = t.loadEventEnd - t.navigationStart;
-
- var objects = [];
- var rep = PerformanceTimingRep;
- var bars = calculateBars(t);
-
- var result = [];
- for (var i=0; i<bars.length; i++)
- {
- var bar = bars[i];
-
- // Filter our empty bars.
- if (!bar.elapsed)
- continue;
-
- bar.left = calculatePos(bar.start, elapsed);
- bar.width = calculatePos(bar.elapsed, elapsed);
- bar.label = bar.label + " " + Str.formatTime(bar.elapsed);
-
- result.push(bar);
- }
-
- // Events
- var domLoading = calculatePos(t.domLoading - t.navigationStart, elapsed);
- var domInteractive = calculatePos(t.domInteractive - t.navigationStart, elapsed);
- var domContentLoaded = calculatePos(t.domContentLoadedEventStart - t.navigationStart, elapsed);
- var onLoad = calculatePos(t.loadEventStart - t.navigationStart, elapsed);
-
- for (var i=0; i<result.length; i++)
- {
- var bar = result[i];
- bar.domLoading = domLoading;
- bar.domInteractive = domInteractive;
- bar.domContentLoaded = domContentLoaded;
- bar.onLoad = onLoad;
- }
-
- var input = new PerfTimingObj(result, t);
- Firebug.Console.log(input, context, "perfTiming", rep, true);
-
- // Details
- var row = Firebug.Console.openCollapsedGroup("perfTimingDetails", context, "perfTimingDetails",
- DetailsCaption, true, null, true);
- Firebug.Console.closeGroup(context, true);
-
- var logGroupBody = row.lastChild;
- var table = DetailsTable.tag.replace({object: t}, logGroupBody);
- var tBody = table.lastChild;
-
- // Iterate only known properties (these are also localized).
- var timings = [];
- for (var i=0; i<timingProps.length; i++)
- {
- var name = timingProps[i];
- var value = t[name];
- var startTime = value ? (value - t.navigationStart) : 0;
- var timing = {
- name: name,
- timeLabel: startTime ? "+" + Str.formatTime(startTime) : 0,
- desc: Locale.$STR("perftiming." + name),
- time: startTime,
- };
- timings.push(timing);
- }
-
- timings.sort(function(a, b) {
- return a.time > b.time ? 1 : -1;
- });
-
- DetailsEntry.tag.insertRows({timings: timings}, tBody);
-
- return Firebug.Console.getDefaultReturnValue();
-}
-
-// ********************************************************************************************* //
-// Detailed Log
-
-/**
- * A capation for detailed performance timing info.
- */
-var DetailsCaption = domplate(
-/** @lends DetailsCaption */
-{
- tag:
- SPAN({"class": "timingTitle"},
- SPAN({"class": "timingCaption"},
- Locale.$STR("perftiming.details_title")
- ),
- SPAN({"class": "timingCaptionDesc"},
- Locale.$STR("perftiming.details_title_desc")
- )
- )
-});
-
-// ********************************************************************************************* //
-
-/**
- * This template represents a table with detailed timing info.
- */
-var DetailsTable = domplate(
-/** @lends DetailsTable */
-{
- tag:
- TABLE({"class": "timingTable", cellspacing: 0, cellpadding: 0, width: "100%",
- "role": "grid", _repObject: "$object"},
- THEAD({"class": "timingThead", "role": "presentation"},
- TR({"class": "headerRow focusRow timingRow subFocusRow", "role": "row"},
- TH({"class": "headerCell a11yFocus", "role": "columnheader", width: "10%"},
- DIV({"class": "headerCellBox"},
- Locale.$STR("Name")
- )
- ),
- TH({"class": "headerCell a11yFocus", "role": "columnheader", width: "10%"},
- DIV({"class": "headerCellBox"},
- Locale.$STR("Time")
- )
- ),
- TH({"class": "headerCell a11yFocus", "role": "columnheader", width: "70%"},
- DIV({"class": "headerCellBox"},
- Locale.$STR("Description")
- )
- )
- )
- ),
- TBODY({"class": "perfTimingTbody", "role": "presentation"}
- )
- ),
-});
-
-// ********************************************************************************************* //
-
-/**
- * A row within detailed performance timing info.
- */
-var DetailsEntry = domplate(
-/** @lends DetailsEntry */
-{
- tag:
- FOR("timing", "$timings",
- TR({"class": "focusRow timingRow subFocusRow", "role": "row", _repObject: "$timing",
- onmousemove: "$onMouseMove", onmouseout: "$onMouseOut"},
- TD({"class": "a11yFocus timingCell timingName", "role": "gridcell"},
- "$timing.name"
- ),
- TD({"class": "a11yFocus timingCell timingTime", "role": "gridcell"},
- "$timing.timeLabel"
- ),
- TD({"class": "a11yFocus timingCell timingDesc", "role": "gridcell"},
- "$timing.desc"
- )
- )
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onMouseMove: function(event)
- {
- var row = Dom.getAncestorByClass(event.target, "timingRow");
- if (!row)
- return;
-
- var log = Dom.getAncestorByClass(row, "logRow-perfTimingDetails");
- var graph = log.previousSibling;
- if (!Css.hasClass(graph, "logRow-perfTiming"))
- return;
-
- var table = Dom.getAncestorByClass(row, "timingTable");
- var timing = table.repObject;
-
- var elapsed = timing.loadEventEnd - timing.navigationStart;
- var startTime = row.repObject.time;
-
- var tBody = graph.getElementsByClassName("perfTimingTbody")[0];
- var rows = tBody.getElementsByTagName("tr");
- for (var i=0; i<rows.length; i++)
- {
- var row = rows[i];
- var cursor = row.getElementsByClassName("cursor")[0];
-
- Dom.hide(cursor, false);
- cursor.style.left = calculatePos(startTime, elapsed) + "%";
- }
- },
-
- onMouseOut: function(event)
- {
- var row = Dom.getAncestorByClass(event.target, "timingRow");
- if (!row)
- return;
-
- var log = Dom.getAncestorByClass(row, "logRow-perfTimingDetails");
- var graph = log.previousSibling;
- if (!Css.hasClass(graph, "logRow-perfTiming"))
- return;
-
- var tBody = graph.getElementsByClassName("perfTimingTbody")[0];
- var rows = tBody.getElementsByTagName("tr");
- for (var i=0; i<rows.length; i++)
- {
- var row = rows[i];
- var cursor = row.getElementsByClassName("cursor")[0];
- Dom.hide(cursor, true);
- }
- }
-});
-
-// ********************************************************************************************* //
-// Helpers
-
-function calculatePos(time, elapsed)
-{
- return Math.round((time / elapsed) * 100);
-}
-
-function calculateBars(timing)
-{
- var result = [];
- var t = timing;
-
- // Page Load bar
- result.push({
- className: "pageLoad",
- start: 0,
- elapsed: t.loadEventEnd - t.navigationStart,
- label: Locale.$STR("Page Load"),
- });
-
- // Redirect
- result.push({
- className: "redirect",
- start: t.redirectStart ? t.redirectStart - t.navigationStart : 0,
- elapsed: t.redirectStart ? t.redirectEnd - t.redirectStart : 0,
- label: Locale.$STR("Redirect"),
- });
-
- // DNS
- var dns = t.domainLookupEnd - t.domainLookupStart;
- result.push({
- className: "dns",
- start: t.domainLookupStart - t.navigationStart,
- elapsed: t.domainLookupEnd - t.domainLookupStart,
- label: Locale.$STR("DNS"),
- });
-
- // Connect bar
- result.push({
- className: "connecting",
- start: t.connectStart - t.navigationStart,
- elapsed: t.connectEnd - t.connectStart,
- label: Locale.$STR("Connecting"),
- });
-
- // Waiting bar
- result.push({
- className: "waiting",
- start: t.requestStart - t.navigationStart,
- elapsed: t.responseStart - t.requestStart,
- label: Locale.$STR("Waiting"),
- });
-
- // Response bar
- result.push({
- className: "response",
- start: t.responseStart - t.navigationStart,
- elapsed: t.responseEnd - t.responseStart,
- label: Locale.$STR("Receiving"),
- });
-
- // Processing bar
- result.push({
- className: "processing",
- start: t.responseEnd - t.navigationStart,
- elapsed: t.loadEventStart - t.responseEnd,
- label: Locale.$STR("DOM Processing"),
- });
-
- // DOMContentLoaded
- result.push({
- className: "DOMContentLoaded",
- start: t.domContentLoadedEventStart - t.navigationStart,
- elapsed: t.domContentLoadedEventEnd - t.domContentLoadedEventStart,
- label: Locale.$STR("DOMContentLoaded"),
- });
-
- // onLoad
- result.push({
- className: "onLoad",
- start: t.loadEventStart - t.navigationStart,
- elapsed: t.loadEventEnd - t.loadEventStart,
- label: Locale.$STR("onLoad"),
- });
-
- return result;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerRep(PerformanceTimingRep);
-Firebug.registerModule(PerformanceTimingModule);
-
-return PerformanceTimingModule;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/trace",
+ "firebug/lib/domplate",
+ "firebug/lib/object",
+ "firebug/lib/locale",
+ "firebug/lib/dom",
+ "firebug/lib/events",
+ "firebug/lib/string",
+ "firebug/lib/wrapper",
+ "firebug/lib/css",
+],
+function(Firebug, FBTrace, Domplate, Obj, Locale, Dom, Events, Str, Wrapper, Css) {
+
+"use strict";
+
+// ********************************************************************************************* //
+// Documentation
+
+// See http://www.w3.org/TR/navigation-timing/
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// List of timing properties in performance.timing structure.
+var timingProps = [
+ "connectEnd",
+ "connectStart",
+ "domComplete",
+ "domContentLoadedEventEnd",
+ "domContentLoadedEventStart",
+ "domInteractive",
+ "domLoading",
+ "domainLookupEnd",
+ "domainLookupStart",
+ "fetchStart",
+ "loadEventEnd",
+ "loadEventStart",
+ "navigationStart",
+ "redirectCount",
+ "redirectEnd",
+ "redirectStart",
+ "requestStart",
+ "responseEnd",
+ "responseStart",
+ "unloadEventEnd",
+ "unloadEventStart",
+];
+
+var {domplate, TABLE, THEAD, TH, TBODY, TR, TD, DIV, SPAN, FOR} = Domplate;
+
+// ********************************************************************************************* //
+// Module
+
+var PerformanceTimingModule = Obj.extend(Firebug.Module,
+{
+ initialize: function(prefDomain, prefNames)
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+ Firebug.Console.addListener(ConsoleListener);
+ },
+
+ shutdown: function()
+ {
+ Firebug.Module.shutdown.apply(this, arguments);
+ Firebug.Console.removeListener(ConsoleListener);
+ },
+});
+
+// ********************************************************************************************* //
+// Domplate
+
+/**
+ * This template is used to render the timing waterfall graph.
+ */
+var PerformanceTimingRep = domplate(Firebug.Rep,
+/** @lends PerformanceTimingRep */
+{
+ className: "perfTiming",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ tag:
+ TABLE({"class": "perfTimingTable", cellspacing: 0, cellpadding: 0, width: "100%",
+ "role": "grid", _repObject: "$object"},
+ TBODY({"class": "perfTimingTbody", "role": "presentation"},
+ FOR("bar", "$object.bars",
+ TR(
+ TD(
+ DIV({"class": "perfTimingBox"},
+ DIV({"class": "perfTimingBar $bar.className",
+ style: "left: $bar.left%; width: $bar.width%"},
+ SPAN({"class": "perfTimingBarLabel"}, "$bar.label")
+ ),
+ DIV({"class": "perfTimingEvent domLoading",
+ style: "left: $bar.domLoading%;"}
+ ),
+ DIV({"class": "perfTimingEvent domInteractive",
+ style: "left: $bar.domInteractive%;"}
+ ),
+ DIV({"class": "perfTimingEvent domContentLoaded",
+ style: "left: $bar.domContentLoaded%;"}
+ ),
+ DIV({"class": "perfTimingEvent onLoad",
+ style: "left: $bar.onLoad%;"}
+ ),
+ DIV({"class": "perfTimingEvent cursor"})
+ )
+ )
+ )
+ )
+ )
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getRealObject: function(object)
+ {
+ return Wrapper.unwrapObject(object.timing);
+ },
+
+ supportsObject: function(object, type)
+ {
+ return (object instanceof PerfTimingObj);
+ },
+
+ getContextMenuItems: function(object, target, context)
+ {
+ return [];
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ showInfoTip: function(infoTip, target, x, y)
+ {
+ var table = Dom.getAncestorByClass(target, "perfTimingTable");
+ if (!table)
+ return false;
+
+ var timingObj = table.repObject;
+ return PerfInfoTip.render(timingObj.timing, infoTip);
+ }
+});
+
+// ********************************************************************************************* //
+// InfoTip
+
+/**
+ * Hovering mouse over the waterfall graph shows an infotip. This template is responsible
+ * for rendering its content.
+ */
+var PerfInfoTip = domplate(Firebug.Rep,
+/** @lends PerfInfoTip */
+{
+ tableTag:
+ TABLE({"class": "timeInfoTip", "id": "fbPerfTimingInfoTip"},
+ TBODY()
+ ),
+
+ timingsTag:
+ FOR("bar", "$bars",
+ TR({"class": "timeInfoTipRow", $collapsed: "$bar|hideBar"},
+ TD({"class": "timeInfoTipBar $bar|getClassName"}),
+ TD({"class": "timeInfoTipCell startTime"},
+ "$bar.start|formatStartTime"
+ ),
+ TD({"class": "timeInfoTipCell elapsedTime"},
+ "$bar.elapsed|formatTime"
+ ),
+ TD("$bar|getLabel")
+ )
+ ),
+
+ separatorTag:
+ TR(
+ TD({"class": "timeInfoTipSeparator", "colspan": 4, "height": "10px"},
+ SPAN("$label")
+ )
+ ),
+
+ eventsTag:
+ FOR("event", "$events",
+ TR({"class": "timeInfoTipEventRow"},
+ TD({"class": "timeInfoTipBar", align: "center"},
+ DIV({"class": "$event|getClassName timeInfoTipEventBar"})
+ ),
+ TD("$event.start|formatStartTime"),
+ TD({"class": "timeInfotTipEventName", "colspan": 2},
+ "$event|getTimeStampLabel"
+ )
+ )
+ ),
+
+ hideBar: function(obj)
+ {
+ return !obj.elapsed && obj.className == "redirect";
+ },
+
+ getClassName: function(obj)
+ {
+ return obj.className;
+ },
+
+ formatTime: function(time)
+ {
+ return Str.formatTime(time);
+ },
+
+ formatStartTime: function(time)
+ {
+ var label = Str.formatTime(time);
+ if (!time)
+ return label;
+
+ return (time > 0 ? "+" : "") + label;
+ },
+
+ getLabel: function(obj)
+ {
+ return Locale.$STR("perftiming." + obj.label);
+ },
+
+ getTimeStampLabel: function(obj)
+ {
+ return obj.name;
+ },
+
+ render: function(timing, parentNode)
+ {
+ var infoTip = PerfInfoTip.tableTag.replace({}, parentNode);
+
+ // Insert top description.
+ this.separatorTag.insertRows({label: Locale.$STR("perftiming.bars.label")},
+ infoTip.firstChild);
+
+ // Insert request timing info.
+ var bars = calculateBars(timing);
+ this.timingsTag.insertRows({bars: bars}, infoTip.firstChild);
+
+ var t = timing;
+
+ var events = [];
+ events.push({
+ name: "DOM Loading",
+ className: "domLoading",
+ start: t.domLoading - t.navigationStart
+ });
+
+ events.push({
+ name: "DOM Interactive",
+ className: "domInteractive",
+ start: t.domInteractive - t.navigationStart,
+ });
+
+ events.push({
+ name: "DOMContentLoaded",
+ className: "domContentLoaded",
+ start: t.domContentLoadedEventStart - t.navigationStart,
+ });
+
+ events.push({
+ name: "load",
+ className: "onLoad",
+ start: t.loadEventStart - t.navigationStart,
+ });
+
+ // Insert separator.
+ this.separatorTag.insertRows({label: Locale.$STR("requestinfo.timings.label")},
+ infoTip.firstChild);
+
+ this.eventsTag.insertRows({events: events}, infoTip.firstChild);
+
+ return true;
+ }
+});
+
+// ********************************************************************************************* //
+// Rep Object
+
+function PerfTimingObj(bars, timing)
+{
+ this.bars = bars;
+ this.timing = timing;
+}
+
+// ********************************************************************************************* //
+
+/**
+ * Console listener is responsible for rendering the Performance visualization every time
+ * the user logs 'performance.timing' on the command line.
+ */
+var ConsoleListener =
+/** @lends ConsoleListener */
+{
+ tag:
+ DIV({_repObject: "$object"},
+ DIV({"class": "documentCookieBody"})
+ ),
+
+ log: function(context, object, className, sourceLink)
+ {
+ if (!context || !object)
+ return;
+
+ var type = Object.prototype.toString.call(object);
+ if (type === "[object PerformanceTiming]")
+ performanceTiming(context, object);
+ },
+
+ logFormatted: function(context, objects, className, sourceLink)
+ {
+ }
+};
+
+// ********************************************************************************************* //
+// Console Logging
+
+/**
+ * This function is responsible for inserting the waterfall graph into the Console panel.
+ */
+function performanceTiming(context, timing)
+{
+ var t = timing;
+ var elapsed = t.loadEventEnd - t.navigationStart;
+
+ var objects = [];
+ var rep = PerformanceTimingRep;
+ var bars = calculateBars(t);
+
+ var result = [];
+ for (var i=0; i<bars.length; i++)
+ {
+ var bar = bars[i];
+
+ // Filter our empty bars.
+ if (!bar.elapsed)
+ continue;
+
+ bar.left = calculatePos(bar.start, elapsed);
+ bar.width = calculatePos(bar.elapsed, elapsed);
+ bar.label = bar.label + " " + Str.formatTime(bar.elapsed);
+
+ result.push(bar);
+ }
+
+ // Events
+ var domLoading = calculatePos(t.domLoading - t.navigationStart, elapsed);
+ var domInteractive = calculatePos(t.domInteractive - t.navigationStart, elapsed);
+ var domContentLoaded = calculatePos(t.domContentLoadedEventStart - t.navigationStart, elapsed);
+ var onLoad = calculatePos(t.loadEventStart - t.navigationStart, elapsed);
+
+ for (var i=0; i<result.length; i++)
+ {
+ var bar = result[i];
+ bar.domLoading = domLoading;
+ bar.domInteractive = domInteractive;
+ bar.domContentLoaded = domContentLoaded;
+ bar.onLoad = onLoad;
+ }
+
+ var input = new PerfTimingObj(result, t);
+ Firebug.Console.log(input, context, "perfTiming", rep, true);
+
+ // Create a log group first (collapsed by default). All the timing details will be rendered
+ // inside the group (within 'logGroupBody' element).
+ var row = Firebug.Console.openCollapsedGroup("perfTimingDetails", context, "perfTimingDetails",
+ DetailsCaption, true, null, true);
+ Firebug.Console.closeGroup(context, true);
+
+ // Get 'logGroupBody' element and render the timing details.
+ var logGroupBody = row.getElementsByClassName("logGroupBody")[0];
+ var table = DetailsTable.tag.replace({object: t}, logGroupBody);
+ var tBody = table.lastChild;
+
+ // Iterate only known properties (these are also localized).
+ var timings = [];
+ for (var i=0; i<timingProps.length; i++)
+ {
+ var name = timingProps[i];
+ var value = t[name];
+ var startTime = value ? (value - t.navigationStart) : 0;
+ var timing = {
+ name: name,
+ timeLabel: startTime ? "+" + Str.formatTime(startTime) : 0,
+ desc: Locale.$STR("perftiming." + name),
+ time: startTime,
+ };
+ timings.push(timing);
+ }
+
+ timings.sort(function(a, b) {
+ return a.time > b.time ? 1 : -1;
+ });
+
+ DetailsEntry.tag.insertRows({timings: timings}, tBody);
+
+ return Firebug.Console.getDefaultReturnValue();
+}
+
+// ********************************************************************************************* //
+// Detailed Log
+
+/**
+ * A caption for detailed performance timing info.
+ */
+var DetailsCaption = domplate(
+/** @lends DetailsCaption */
+{
+ tag:
+ SPAN({"class": "timingTitle"},
+ SPAN({"class": "timingCaption"},
+ Locale.$STR("perftiming.details_title")
+ ),
+ SPAN({"class": "timingCaptionDesc"},
+ Locale.$STR("perftiming.details_title_desc")
+ )
+ )
+});
+
+// ********************************************************************************************* //
+
+/**
+ * This template represents a table with detailed timing info.
+ */
+var DetailsTable = domplate(
+/** @lends DetailsTable */
+{
+ tag:
+ TABLE({"class": "timingTable", cellspacing: 0, cellpadding: 0, width: "100%",
+ "role": "grid", _repObject: "$object"},
+ THEAD({"class": "timingThead", "role": "presentation"},
+ TR({"class": "headerRow focusRow timingRow subFocusRow", "role": "row"},
+ TH({"class": "headerCell a11yFocus", "role": "columnheader", width: "10%"},
+ DIV({"class": "headerCellBox"},
+ Locale.$STR("Name")
+ )
+ ),
+ TH({"class": "headerCell a11yFocus", "role": "columnheader", width: "10%"},
+ DIV({"class": "headerCellBox"},
+ Locale.$STR("Time")
+ )
+ ),
+ TH({"class": "headerCell a11yFocus", "role": "columnheader", width: "70%"},
+ DIV({"class": "headerCellBox"},
+ Locale.$STR("Description")
+ )
+ )
+ )
+ ),
+ TBODY({"class": "perfTimingTbody", "role": "presentation"}
+ )
+ ),
+});
+
+// ********************************************************************************************* //
+
+/**
+ * A row within detailed performance timing info.
+ */
+var DetailsEntry = domplate(
+/** @lends DetailsEntry */
+{
+ tag:
+ FOR("timing", "$timings",
+ TR({"class": "focusRow timingRow subFocusRow", "role": "row", _repObject: "$timing",
+ onmousemove: "$onMouseMove", onmouseout: "$onMouseOut"},
+ TD({"class": "a11yFocus timingCell timingName", "role": "gridcell"},
+ "$timing.name"
+ ),
+ TD({"class": "a11yFocus timingCell timingTime", "role": "gridcell"},
+ "$timing.timeLabel"
+ ),
+ TD({"class": "a11yFocus timingCell timingDesc", "role": "gridcell"},
+ "$timing.desc"
+ )
+ )
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onMouseMove: function(event)
+ {
+ var row = Dom.getAncestorByClass(event.target, "timingRow");
+ if (!row)
+ return;
+
+ var log = Dom.getAncestorByClass(row, "logRow-perfTimingDetails");
+ var graph = log.previousSibling;
+ if (!Css.hasClass(graph, "logRow-perfTiming"))
+ return;
+
+ var table = Dom.getAncestorByClass(row, "timingTable");
+ var timing = table.repObject;
+
+ var elapsed = timing.loadEventEnd - timing.navigationStart;
+ var startTime = row.repObject.time;
+
+ var tBody = graph.getElementsByClassName("perfTimingTbody")[0];
+ var rows = tBody.getElementsByTagName("tr");
+ for (var i=0; i<rows.length; i++)
+ {
+ var row = rows[i];
+ var cursor = row.getElementsByClassName("cursor")[0];
+
+ Dom.hide(cursor, false);
+ cursor.style.left = calculatePos(startTime, elapsed) + "%";
+ }
+ },
+
+ onMouseOut: function(event)
+ {
+ var row = Dom.getAncestorByClass(event.target, "timingRow");
+ if (!row)
+ return;
+
+ var log = Dom.getAncestorByClass(row, "logRow-perfTimingDetails");
+ var graph = log.previousSibling;
+ if (!Css.hasClass(graph, "logRow-perfTiming"))
+ return;
+
+ var tBody = graph.getElementsByClassName("perfTimingTbody")[0];
+ var rows = tBody.getElementsByTagName("tr");
+ for (var i=0; i<rows.length; i++)
+ {
+ var row = rows[i];
+ var cursor = row.getElementsByClassName("cursor")[0];
+ Dom.hide(cursor, true);
+ }
+ }
+});
+
+// ********************************************************************************************* //
+// Helpers
+
+function calculatePos(time, elapsed)
+{
+ return Math.round((time / elapsed) * 100);
+}
+
+function calculateBars(timing)
+{
+ var result = [];
+ var t = timing;
+
+ // Page Load bar
+ result.push({
+ className: "pageLoad",
+ start: 0,
+ elapsed: t.loadEventEnd - t.navigationStart,
+ label: Locale.$STR("Page Load"),
+ });
+
+ // Redirect
+ result.push({
+ className: "redirect",
+ start: t.redirectStart ? t.redirectStart - t.navigationStart : 0,
+ elapsed: t.redirectStart ? t.redirectEnd - t.redirectStart : 0,
+ label: Locale.$STR("Redirect"),
+ });
+
+ // DNS
+ var dns = t.domainLookupEnd - t.domainLookupStart;
+ result.push({
+ className: "dns",
+ start: t.domainLookupStart - t.navigationStart,
+ elapsed: t.domainLookupEnd - t.domainLookupStart,
+ label: Locale.$STR("DNS"),
+ });
+
+ // Connect bar
+ result.push({
+ className: "connecting",
+ start: t.connectStart - t.navigationStart,
+ elapsed: t.connectEnd - t.connectStart,
+ label: Locale.$STR("Connecting"),
+ });
+
+ // Waiting bar
+ result.push({
+ className: "waiting",
+ start: t.requestStart - t.navigationStart,
+ elapsed: t.responseStart - t.requestStart,
+ label: Locale.$STR("Waiting"),
+ });
+
+ // Response bar
+ result.push({
+ className: "response",
+ start: t.responseStart - t.navigationStart,
+ elapsed: t.responseEnd - t.responseStart,
+ label: Locale.$STR("Receiving"),
+ });
+
+ // Processing bar
+ result.push({
+ className: "processing",
+ start: t.responseEnd - t.navigationStart,
+ elapsed: t.loadEventStart - t.responseEnd,
+ label: Locale.$STR("DOM Processing"),
+ });
+
+ // DOMContentLoaded
+ result.push({
+ className: "DOMContentLoaded",
+ start: t.domContentLoadedEventStart - t.navigationStart,
+ elapsed: t.domContentLoadedEventEnd - t.domContentLoadedEventStart,
+ label: Locale.$STR("DOMContentLoaded"),
+ });
+
+ // onLoad
+ result.push({
+ className: "onLoad",
+ start: t.loadEventStart - t.navigationStart,
+ elapsed: t.loadEventEnd - t.loadEventStart,
+ label: Locale.$STR("onLoad"),
+ });
+
+ return result;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerRep(PerformanceTimingRep);
+Firebug.registerModule(PerformanceTimingModule);
+
+return PerformanceTimingModule;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/cookies/baseObserver.js b/content/firebug/cookies/baseObserver.js
index 8c5c77b..aafcf69 100644
--- a/content/firebug/cookies/baseObserver.js
+++ b/content/firebug/cookies/baseObserver.js
@@ -1,37 +1,37 @@
-/* See license.txt for terms of usage */
-
-define([
-],
-function() {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-// Base observer
-
-var BaseObserver =
-{
- QueryInterface : function (aIID)
- {
- if (aIID.equals(Ci.nsIObserver) ||
- aIID.equals(Ci.nsISupportsWeakReference) ||
- aIID.equals(Ci.nsISupports))
- {
- return this;
- }
-
- throw Components.results.NS_NOINTERFACE;
- }
-};
-
-// ********************************************************************************************* //
-
-return BaseObserver;
-
-// ********************************************************************************************* //
-});
-
+/* See license.txt for terms of usage */
+
+define([
+],
+function() {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+// Base observer
+
+var BaseObserver =
+{
+ QueryInterface : function (aIID)
+ {
+ if (aIID.equals(Ci.nsIObserver) ||
+ aIID.equals(Ci.nsISupportsWeakReference) ||
+ aIID.equals(Ci.nsISupports))
+ {
+ return this;
+ }
+
+ throw Components.results.NS_NOINTERFACE;
+ }
+};
+
+// ********************************************************************************************* //
+
+return BaseObserver;
+
+// ********************************************************************************************* //
+});
+
diff --git a/content/firebug/cookies/breakpoints.js b/content/firebug/cookies/breakpoints.js
index 52ebf2c..2c8c062 100644
--- a/content/firebug/cookies/breakpoints.js
+++ b/content/firebug/cookies/breakpoints.js
@@ -1,407 +1,407 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/lib/locale",
- "firebug/lib/string",
- "firebug/lib/domplate",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/lib/events",
- "firebug/cookies/cookieUtils"
-],
-function(Obj, Locale, Str, Domplate, Dom, Css, Events, CookieUtils) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const panelName = "cookies";
-
-// ********************************************************************************************* //
-// Implementation
-
-var Breakpoints =
-{
- breakOnCookie: function(context, cookie, action)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.breakOnCookie; " + action);
-
- var halt = false;
- var conditionIsFalse = false;
-
- // If there is an enabled breakpoint with condition:
- // 1) break if the condition is evaluated to true.
- var bp = context.cookies.breakpoints.findBreakpoint(CookieUtils.makeCookieObject(cookie));
- if (bp && bp.checked)
- {
- halt = true;
- if (bp.condition)
- {
- halt = bp.evaluateCondition(context, cookie);
- conditionIsFalse = !halt;
- }
- }
-
- // 2) If break on next flag is set and there is no condition evaluated to false,
- // break with "break on next" breaking cause (this new breaking cause can override
- // an existing one that is set when evaluating a breakpoint condition).
- if (context.breakOnCookie && !conditionIsFalse)
- {
- context.breakingCause = {
- title: Locale.$STR("cookies.Break On Cookie"),
- message: Str.cropString(unescape(cookie.name + "; " + cookie.value), 200)
- };
- halt = true;
- }
-
- // Ignore if there is no reason to break.
- if (!halt)
- return;
-
- // Even if the execution was stopped at breakpoint reset the global
- // breakOnCookie flag.
- context.breakOnCookie = false;
-
- this.breakNow(context);
-
- // Clear breakpoint associated with removed cookie.
- if (action == "deleted")
- {
- breakpoints.removeBreakpoint(bp);
- context.invalidatePanels("breakpoints");
- }
- },
-
- breakNow: function(context)
- {
- if (Firebug.Breakpoint && Firebug.Breakpoint.updatePanelTab)
- {
- var panel = context.getPanel(panelName, true);
- Firebug.Breakpoint.updatePanelTab(panel, false);
- Firebug.Breakpoint.breakNow(context.getPanel(panelName, true));
- }
- },
-
- getContextMenuItems: function(cookie, target, context)
- {
- var items = [];
- items.push("-");
-
- var cookieName = Str.cropString(cookie.cookie.name, 40);
- var bp = context.cookies.breakpoints.findBreakpoint(cookie.cookie);
-
- items.push({
- nol10n: true,
- tooltiptext: Locale.$STRF("cookies.menu.tooltip.Break On Cookie", [cookieName]),
- label: Locale.$STRF("cookies.menu.Break On Cookie", [cookieName]),
- type: "checkbox",
- checked: bp != null,
- command: Obj.bindFixed(this.onBreakOnCookie, this, context, cookie),
- });
-
- if (bp)
- {
- items.push(
- {label: "cookies.menu.Edit Breakpoint Condition",
- command: Obj.bindFixed(this.editBreakpointCondition, this, context, cookie) }
- );
- }
-
- return items;
- },
-
- onBreakOnCookie: function(context, cookie)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.breakOnCookie; ", context);
-
- var breakpoints = context.cookies.breakpoints;
-
- // Remove an existing or create a new breakpoint.
- var row = cookie.row;
- cookie = cookie.cookie;
- var bp = breakpoints.findBreakpoint(cookie);
- if (bp)
- {
- breakpoints.removeBreakpoint(cookie);
- row.removeAttribute("breakpoint");
- row.removeAttribute("disabledBreakpoint");
- }
- else
- {
- breakpoints.addBreakpoint(cookie);
- row.setAttribute("breakpoint", "true");
- }
- },
-
- updateBreakpoint: function(context, cookie)
- {
- // Make sure a breakpoint is displayed.
- var bp = context.cookies.breakpoints.findBreakpoint(cookie.cookie);
- if (!bp)
- return;
-
- var row = cookie.row;
- row.setAttribute("breakpoint", "true");
- row.setAttribute("disabledBreakpoint", bp.checked ? "false" : "true");
- },
-
- onContextMenu: function(context, event)
- {
- if (!Css.hasClass(event.target, "sourceLine"))
- return;
-
- var row = Dom.getAncestorByClass(event.target, "cookieRow");
- if (!row)
- return;
-
- var cookie = row.repObject;
- var bp = context.cookies.breakpoints.findBreakpoint(cookie.cookie);
- if (!bp)
- return;
-
- this.editBreakpointCondition(context, cookie);
- Events.cancelEvent(event);
- },
-
- editBreakpointCondition: function(context, cookie)
- {
- var bp = context.cookies.breakpoints.findBreakpoint(cookie.cookie);
- if (!bp)
- return;
-
- var condition = bp ? bp.condition : "";
-
- var panel = context.getPanel(panelName);
- panel.selectedSourceBox = cookie.row;
- Firebug.Editor.startEditing(cookie.row, condition);
- }
-};
-
-// ********************************************************************************************* //
-// Cookie Breakpoints
-
-Breakpoints.BreakpointTemplate = Domplate.domplate(Firebug.Rep,
-{
- inspectable: false,
-
- tag:
- DIV({"class": "breakpointRow focusRow", $disabled: "$bp|isDisabled", _repObject: "$bp",
- role: "option", "aria-checked": "$bp.checked"},
- DIV({"class": "breakpointBlockHead"},
- INPUT({"class": "breakpointCheckbox", type: "checkbox",
- _checked: "$bp.checked", tabindex: "-1", onclick: "$onEnable"}),
- SPAN("$bp|getTitle"),
- DIV({"class": "breakpointMutationType"}, "$bp|getType"),
- SPAN({"class": "closeButton", onclick: "$onRemove"})
- ),
- DIV({"class": "breakpointCode"},
- SPAN("$bp|getValue")
- )
- ),
-
- getTitle: function(bp)
- {
- return bp.name;
- },
-
- getValue: function(bp)
- {
- return bp.host + bp.path;
- },
-
- getType: function(bp)
- {
- return Locale.$STR("Break On Cookie Change");
- },
-
- isDisabled: function(bp)
- {
- return !bp.checked;
- },
-
- onRemove: function(event)
- {
- Events.cancelEvent(event);
-
- var bpPanel = Firebug.getElementPanel(event.target);
- var context = bpPanel.context;
-
- if (!Css.hasClass(event.target, "closeButton"))
- return;
-
- // Remove from list of breakpoints.
- var row = Dom.getAncestorByClass(event.target, "breakpointRow");
- context.cookies.breakpoints.removeBreakpoint(row.repObject);
-
- bpPanel.refresh();
-
- var cookiePanel = context.getPanel(panelName, true);
- if (!cookiePanel)
- return;
-
- var cookie = cookiePanel.findRepObject(row.repObject);
- if (cookie)
- {
- cookie.row.removeAttribute("breakpoint");
- cookie.row.removeAttribute("disabledBreakpoint");
- }
- },
-
- onEnable: function(event)
- {
- var checkBox = event.target;
- var bpRow = Dom.getAncestorByClass(checkBox, "breakpointRow");
-
- if (checkBox.checked)
- {
- Css.removeClass(bpRow, "disabled");
- bpRow.setAttribute("aria-checked", "true");
- }
- else
- {
- Css.setClass(bpRow, "disabled");
- bpRow.setAttribute("aria-checked", "false");
- }
-
- var bp = bpRow.repObject;
- bp.checked = checkBox.checked;
-
- var bpPanel = Firebug.getElementPanel(checkBox);
-
- var cookiePanel = bpPanel.context.getPanel(panelName, true);
- if (!cookiePanel)
- return;
-
- var cookie = cookiePanel.findRepObject(bp);
- if (cookie)
- cookie.row.setAttribute("disabledBreakpoint", bp.checked ? "false" : "true");
- },
-
- supportsObject: function(object)
- {
- return object instanceof Breakpoints.Breakpoint;
- }
-});
-
-// ********************************************************************************************* //
-// Editor for Cookie breakpoint condition.
-
-Breakpoints.ConditionEditor = function(doc)
-{
- Firebug.Breakpoint.ConditionEditor.apply(this, arguments);
-};
-
-Breakpoints.ConditionEditor.prototype = Domplate.domplate(Firebug.Breakpoint.ConditionEditor.prototype,
-{
- endEditing: function(target, value, cancel)
- {
- if (cancel)
- return;
-
- var cookie = target.repObject;
- var panel = Firebug.getElementPanel(target);
- var bp = panel.context.cookies.breakpoints.findBreakpoint(cookie.cookie);
- if (bp)
- bp.condition = value;
- }
-});
-
-// ********************************************************************************************* //
-
-/**
- * @domplate Template for cookie breakpoint displayed in the Breakpoints side
- * panel.
- */
-Breakpoints.Breakpoint = function(cookie)
-{
- this.name = cookie.name;
- this.host = cookie.host;
- this.path = cookie.path;
-
- this.condition = "";
- this.checked = true;
-
- this.onEvaluateFails = Obj.bind(this.onEvaluateFails, this);
- this.onEvaluateSucceeds = Obj.bind(this.onEvaluateSucceeds, this);
-};
-
-Breakpoints.Breakpoint.prototype =
-{
- evaluateCondition: function(context, cookie)
- {
- try
- {
- var scope = {};
- scope["value"] = cookie.value;
- scope["cookie"] = CookieUtils.makeCookieObject(cookie);
-
- // The callbacks will set this if the condition is true or if the eval faults.
- delete context.breakingCause;
-
- // Construct expression to evaluate. Native JSON support is available since
- // Firefox 3.5 and breakpoints since Firebug 1.5, which supports min Fx 3.5
- // So, all is good.
- var expr = "(function (){var scope = " + JSON.stringify(scope) +
- "; with (scope) { return " + this.condition + ";}})();";
-
- // Evaluate condition using Firebug's command line.
- Firebug.CommandLine.evaluate(expr, context, null, context.window,
- this.onEvaluateSucceeds, this.onEvaluateFails);
-
- if (FBTrace.DBG_COOKIES)
- {
- FBTrace.sysout("cookies.evaluateCondition", {expr: expr, scope: scope});
- }
-
- return !!context.breakingCause;
- }
- catch (err)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.evaluateCondition; EXCEPTION", err);
- }
-
- return false;
- },
-
- onEvaluateSucceeds: function(result, context)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onEvaluateSucceeds; " + result, result);
-
- // Don't set the breakingCause if the breakpoint condition is evaluated to false.
- if (!result)
- return;
-
- context.breakingCause = {
- title: Locale.$STR("cookies.Break On Cookie"),
- message: Str.cropString(unescape(this.name + "; " + this.condition + "; "), 200)
- };
- },
-
- onEvaluateFails: function(result, context)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onEvaluateFails; " + result, result);
-
- context.breakingCause = {
- title: Locale.$STR("cookies.Break On Cookie"),
- message: Locale.$STR("cookies.Breakpoint condition evaluation fails"),
- prevValue: this.condition, newValue:result
- };
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerRep(Breakpoints.BreakpointTemplate);
-
-return Breakpoints;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/lib/locale",
+ "firebug/lib/string",
+ "firebug/lib/domplate",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/lib/events",
+ "firebug/cookies/cookieUtils"
+],
+function(Obj, Locale, Str, Domplate, Dom, Css, Events, CookieUtils) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const panelName = "cookies";
+
+// ********************************************************************************************* //
+// Implementation
+
+var Breakpoints =
+{
+ breakOnCookie: function(context, cookie, action)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.breakOnCookie; " + action);
+
+ var halt = false;
+ var conditionIsFalse = false;
+
+ // If there is an enabled breakpoint with condition:
+ // 1) break if the condition is evaluated to true.
+ var bp = context.cookies.breakpoints.findBreakpoint(CookieUtils.makeCookieObject(cookie));
+ if (bp && bp.checked)
+ {
+ halt = true;
+ if (bp.condition)
+ {
+ halt = bp.evaluateCondition(context, cookie);
+ conditionIsFalse = !halt;
+ }
+ }
+
+ // 2) If break on next flag is set and there is no condition evaluated to false,
+ // break with "break on next" breaking cause (this new breaking cause can override
+ // an existing one that is set when evaluating a breakpoint condition).
+ if (context.breakOnCookie && !conditionIsFalse)
+ {
+ context.breakingCause = {
+ title: Locale.$STR("cookies.Break On Cookie"),
+ message: Str.cropString(unescape(cookie.name + "; " + cookie.value), 200)
+ };
+ halt = true;
+ }
+
+ // Ignore if there is no reason to break.
+ if (!halt)
+ return;
+
+ // Even if the execution was stopped at breakpoint reset the global
+ // breakOnCookie flag.
+ context.breakOnCookie = false;
+
+ this.breakNow(context);
+
+ // Clear breakpoint associated with removed cookie.
+ if (action == "deleted")
+ {
+ breakpoints.removeBreakpoint(bp);
+ context.invalidatePanels("breakpoints");
+ }
+ },
+
+ breakNow: function(context)
+ {
+ if (Firebug.Breakpoint && Firebug.Breakpoint.updatePanelTab)
+ {
+ var panel = context.getPanel(panelName, true);
+ Firebug.Breakpoint.updatePanelTab(panel, false);
+ Firebug.Breakpoint.breakNow(context.getPanel(panelName, true));
+ }
+ },
+
+ getContextMenuItems: function(cookie, target, context)
+ {
+ var items = [];
+ items.push("-");
+
+ var cookieName = Str.cropString(cookie.cookie.name, 40);
+ var bp = context.cookies.breakpoints.findBreakpoint(cookie.cookie);
+
+ items.push({
+ nol10n: true,
+ tooltiptext: Locale.$STRF("cookies.menu.tooltip.Break On Cookie", [cookieName]),
+ label: Locale.$STRF("cookies.menu.Break On Cookie", [cookieName]),
+ type: "checkbox",
+ checked: bp != null,
+ command: Obj.bindFixed(this.onBreakOnCookie, this, context, cookie),
+ });
+
+ if (bp)
+ {
+ items.push(
+ {label: "cookies.menu.Edit Breakpoint Condition",
+ command: Obj.bindFixed(this.editBreakpointCondition, this, context, cookie) }
+ );
+ }
+
+ return items;
+ },
+
+ onBreakOnCookie: function(context, cookie)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.breakOnCookie; ", context);
+
+ var breakpoints = context.cookies.breakpoints;
+
+ // Remove an existing or create a new breakpoint.
+ var row = cookie.row;
+ cookie = cookie.cookie;
+ var bp = breakpoints.findBreakpoint(cookie);
+ if (bp)
+ {
+ breakpoints.removeBreakpoint(cookie);
+ row.removeAttribute("breakpoint");
+ row.removeAttribute("disabledBreakpoint");
+ }
+ else
+ {
+ breakpoints.addBreakpoint(cookie);
+ row.setAttribute("breakpoint", "true");
+ }
+ },
+
+ updateBreakpoint: function(context, cookie)
+ {
+ // Make sure a breakpoint is displayed.
+ var bp = context.cookies.breakpoints.findBreakpoint(cookie.cookie);
+ if (!bp)
+ return;
+
+ var row = cookie.row;
+ row.setAttribute("breakpoint", "true");
+ row.setAttribute("disabledBreakpoint", bp.checked ? "false" : "true");
+ },
+
+ onContextMenu: function(context, event)
+ {
+ if (!Css.hasClass(event.target, "sourceLine"))
+ return;
+
+ var row = Dom.getAncestorByClass(event.target, "cookieRow");
+ if (!row)
+ return;
+
+ var cookie = row.repObject;
+ var bp = context.cookies.breakpoints.findBreakpoint(cookie.cookie);
+ if (!bp)
+ return;
+
+ this.editBreakpointCondition(context, cookie);
+ Events.cancelEvent(event);
+ },
+
+ editBreakpointCondition: function(context, cookie)
+ {
+ var bp = context.cookies.breakpoints.findBreakpoint(cookie.cookie);
+ if (!bp)
+ return;
+
+ var condition = bp ? bp.condition : "";
+
+ var panel = context.getPanel(panelName);
+ panel.selectedSourceBox = cookie.row;
+ Firebug.Editor.startEditing(cookie.row, condition);
+ }
+};
+
+// ********************************************************************************************* //
+// Cookie Breakpoints
+
+Breakpoints.BreakpointTemplate = Domplate.domplate(Firebug.Rep,
+{
+ inspectable: false,
+
+ tag:
+ DIV({"class": "breakpointRow focusRow", $disabled: "$bp|isDisabled", _repObject: "$bp",
+ role: "option", "aria-checked": "$bp.checked"},
+ DIV({"class": "breakpointBlockHead"},
+ INPUT({"class": "breakpointCheckbox", type: "checkbox",
+ _checked: "$bp.checked", tabindex: "-1", onclick: "$onEnable"}),
+ SPAN("$bp|getTitle"),
+ DIV({"class": "breakpointMutationType"}, "$bp|getType"),
+ SPAN({"class": "closeButton", onclick: "$onRemove"})
+ ),
+ DIV({"class": "breakpointCode"},
+ SPAN("$bp|getValue")
+ )
+ ),
+
+ getTitle: function(bp)
+ {
+ return bp.name;
+ },
+
+ getValue: function(bp)
+ {
+ return bp.host + bp.path;
+ },
+
+ getType: function(bp)
+ {
+ return Locale.$STR("Break On Cookie Change");
+ },
+
+ isDisabled: function(bp)
+ {
+ return !bp.checked;
+ },
+
+ onRemove: function(event)
+ {
+ Events.cancelEvent(event);
+
+ var bpPanel = Firebug.getElementPanel(event.target);
+ var context = bpPanel.context;
+
+ if (!Css.hasClass(event.target, "closeButton"))
+ return;
+
+ // Remove from list of breakpoints.
+ var row = Dom.getAncestorByClass(event.target, "breakpointRow");
+ context.cookies.breakpoints.removeBreakpoint(row.repObject);
+
+ bpPanel.refresh();
+
+ var cookiePanel = context.getPanel(panelName, true);
+ if (!cookiePanel)
+ return;
+
+ var cookie = cookiePanel.findRepObject(row.repObject);
+ if (cookie)
+ {
+ cookie.row.removeAttribute("breakpoint");
+ cookie.row.removeAttribute("disabledBreakpoint");
+ }
+ },
+
+ onEnable: function(event)
+ {
+ var checkBox = event.target;
+ var bpRow = Dom.getAncestorByClass(checkBox, "breakpointRow");
+
+ if (checkBox.checked)
+ {
+ Css.removeClass(bpRow, "disabled");
+ bpRow.setAttribute("aria-checked", "true");
+ }
+ else
+ {
+ Css.setClass(bpRow, "disabled");
+ bpRow.setAttribute("aria-checked", "false");
+ }
+
+ var bp = bpRow.repObject;
+ bp.checked = checkBox.checked;
+
+ var bpPanel = Firebug.getElementPanel(checkBox);
+
+ var cookiePanel = bpPanel.context.getPanel(panelName, true);
+ if (!cookiePanel)
+ return;
+
+ var cookie = cookiePanel.findRepObject(bp);
+ if (cookie)
+ cookie.row.setAttribute("disabledBreakpoint", bp.checked ? "false" : "true");
+ },
+
+ supportsObject: function(object)
+ {
+ return object instanceof Breakpoints.Breakpoint;
+ }
+});
+
+// ********************************************************************************************* //
+// Editor for Cookie breakpoint condition.
+
+Breakpoints.ConditionEditor = function(doc)
+{
+ Firebug.Breakpoint.ConditionEditor.apply(this, arguments);
+};
+
+Breakpoints.ConditionEditor.prototype = Domplate.domplate(Firebug.Breakpoint.ConditionEditor.prototype,
+{
+ endEditing: function(target, value, cancel)
+ {
+ if (cancel)
+ return;
+
+ var cookie = target.repObject;
+ var panel = Firebug.getElementPanel(target);
+ var bp = panel.context.cookies.breakpoints.findBreakpoint(cookie.cookie);
+ if (bp)
+ bp.condition = value;
+ }
+});
+
+// ********************************************************************************************* //
+
+/**
+ * @domplate Template for cookie breakpoint displayed in the Breakpoints side
+ * panel.
+ */
+Breakpoints.Breakpoint = function(cookie)
+{
+ this.name = cookie.name;
+ this.host = cookie.host;
+ this.path = cookie.path;
+
+ this.condition = "";
+ this.checked = true;
+
+ this.onEvaluateFails = Obj.bind(this.onEvaluateFails, this);
+ this.onEvaluateSucceeds = Obj.bind(this.onEvaluateSucceeds, this);
+};
+
+Breakpoints.Breakpoint.prototype =
+{
+ evaluateCondition: function(context, cookie)
+ {
+ try
+ {
+ var scope = {};
+ scope["value"] = cookie.value;
+ scope["cookie"] = CookieUtils.makeCookieObject(cookie);
+
+ // The callbacks will set this if the condition is true or if the eval faults.
+ delete context.breakingCause;
+
+ // Construct expression to evaluate. Native JSON support is available since
+ // Firefox 3.5 and breakpoints since Firebug 1.5, which supports min Fx 3.5
+ // So, all is good.
+ var expr = "(function (){var scope = " + JSON.stringify(scope) +
+ "; with (scope) { return " + this.condition + ";}})();";
+
+ // Evaluate condition using Firebug's command line.
+ Firebug.CommandLine.evaluate(expr, context, null, context.window,
+ this.onEvaluateSucceeds, this.onEvaluateFails);
+
+ if (FBTrace.DBG_COOKIES)
+ {
+ FBTrace.sysout("cookies.evaluateCondition", {expr: expr, scope: scope});
+ }
+
+ return !!context.breakingCause;
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.evaluateCondition; EXCEPTION", err);
+ }
+
+ return false;
+ },
+
+ onEvaluateSucceeds: function(result, context)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onEvaluateSucceeds; " + result, result);
+
+ // Don't set the breakingCause if the breakpoint condition is evaluated to false.
+ if (!result)
+ return;
+
+ context.breakingCause = {
+ title: Locale.$STR("cookies.Break On Cookie"),
+ message: Str.cropString(unescape(this.name + "; " + this.condition + "; "), 200)
+ };
+ },
+
+ onEvaluateFails: function(result, context)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onEvaluateFails; " + result, result);
+
+ context.breakingCause = {
+ title: Locale.$STR("cookies.Break On Cookie"),
+ message: Locale.$STR("cookies.Breakpoint condition evaluation fails"),
+ prevValue: this.condition, newValue:result
+ };
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerRep(Breakpoints.BreakpointTemplate);
+
+return Breakpoints;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/cookies/cookie.js b/content/firebug/cookies/cookie.js
index f3a4070..8aa1e49 100644
--- a/content/firebug/cookies/cookie.js
+++ b/content/firebug/cookies/cookie.js
@@ -1,178 +1,178 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/xpcom",
- "firebug/lib/json",
- "firebug/lib/string",
-],
-function(Xpcom, Json) {
-
-// ********************************************************************************************* //
-// Constants
-
-const ioService = Xpcom.CCSV("@mozilla.org/network/io-service;1", "nsIIOService");
-
-// ********************************************************************************************* //
-// Cookie object
-
-/**
- * @class Represents a cookie object that is created as a representation of
- * nsICookie component in the browser.
- */
-function Cookie(cookie, action)
-{
- this.cookie = cookie;
- this.action = action;
- this.rawHost = makeStrippedHost(cookie.host);
-}
-
-Cookie.prototype =
-/** @lends Cookie */
-{
- cookie: null,
- action: null,
-
- toString: function(noDomain)
- {
- var expires = this.cookie.expires ? new Date(this.cookie.expires * 1000) : null;
- return this.cookie.name + "=" + this.cookie.rawValue +
- (expires ? "; expires=" + expires.toGMTString() : "") +
- (this.cookie.maxAge ? "; Max-Age=" + this.cookie.maxAge : "") +
- ((this.cookie.path) ? "; path=" + this.cookie.path : "; path=/") +
- (noDomain ? "" : ((this.cookie.host) ? "; domain=" + this.cookie.host : "")) +
- ((this.cookie.isSecure) ? "; Secure" : "") +
- ((this.cookie.isHttpOnly) ? "; HttpOnly" : "");
- },
-
- toJSON: function()
- {
- return JSON.stringify({
- name: this.cookie.name,
- value: this.cookie.rawValue,
- expires: (this.cookie.expires ? this.cookie.expires : 0),
- maxAge: (this.cookie.maxAge ? this.cookie.maxAge : ""),
- path: (this.cookie.path ? this.cookie.path : "/"),
- host: this.cookie.host,
- isHttpOnly: (this.cookie.isHttpOnly),
- isSecure: (this.cookie.isSecure)
- });
- },
-
- toText: function()
- {
- return this.cookie.host + "\t" +
- new String(this.cookie.isDomain).toUpperCase() + "\t" +
- this.cookie.path + "\t" +
- new String(this.cookie.isSecure).toUpperCase() + "\t" +
- this.cookie.expires + "\t" +
- this.cookie.maxAge + "\t" +
- this.cookie.name + "\t" +
- this.cookie.rawValue + "\r\n";
- },
-
- getJsonValue: function()
- {
- if (this.json)
- return this.json;
-
- var jsonString = new String(this.cookie.value);
- if (jsonString.indexOf("{") != 0)
- return null;
-
- var currentURI = Firebug.chrome.getCurrentURI();
- var jsonObject = Json.parseJSONString(jsonString, currentURI.spec);
- if (typeof (jsonObject) != "object")
- return null;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.getJsonValue for: " + this.cookie.name, jsonObject);
-
- return (this.json = jsonObject);
- },
-
- getXmlValue: function()
- {
- if (this.xml)
- return this.xml;
-
- try
- {
- var value = this.cookie.value;
-
- // Simple test if the source is XML (to avoid errors in the Firefox Error console)
- if (value.indexOf("<") != 0)
- return null;
-
- var parser = Xpcom.CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
- var doc = parser.parseFromString(value, "text/xml");
- var docElem = doc.documentElement;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.getXmlValue for: " + this.cookie.name);
-
- // Error handling
- var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
- if (docElem.namespaceURI == nsURI && docElem.nodeName == "parsererror")
- return null;
-
- return (this.xml = docElem);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("cookies.getXmlValue ERROR " + this.cookie.name, e);
- }
-
- return null;
- },
-
- getURI: function()
- {
- try
- {
- var host = this.cookie.host;
- var path = this.cookie.path;
-
- var httpProtocol = this.cookie.isSecure ? "https://" : "http://";
- var uri = httpProtocol + host + (path ? path : "");
- return ioService.newURI(uri, null, null);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS || FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.getURI FAILS for " + this.cookie.name);
- }
-
- return null;
- },
-
- getSize: function()
- {
- return this.cookie.name.length + this.cookie.value.length;
- },
-
- getRawSize: function()
- {
- return this.cookie.name.length + this.cookie.rawValue.length;
- }
-};
-
-// ********************************************************************************************* //
-// Helpers
-
-// xxxHonza: duplicated in CookieUtils since cycle dep
-function makeStrippedHost(aHost)
-{
- if (!aHost)
- return aHost;
-
- var formattedHost = aHost.charAt(0) == "." ? aHost.substring(1, aHost.length) : aHost;
- return formattedHost.substring(0, 4) == "www." ? formattedHost.substring(4, formattedHost.length) : formattedHost;
-}
-
-// ********************************************************************************************* //
-
-return Cookie;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/xpcom",
+ "firebug/lib/json",
+ "firebug/lib/string",
+],
+function(Xpcom, Json) {
+
+// ********************************************************************************************* //
+// Constants
+
+const ioService = Xpcom.CCSV("@mozilla.org/network/io-service;1", "nsIIOService");
+
+// ********************************************************************************************* //
+// Cookie object
+
+/**
+ * @class Represents a cookie object that is created as a representation of
+ * nsICookie component in the browser.
+ */
+function Cookie(cookie, action)
+{
+ this.cookie = cookie;
+ this.action = action;
+ this.rawHost = makeStrippedHost(cookie.host);
+}
+
+Cookie.prototype =
+/** @lends Cookie */
+{
+ cookie: null,
+ action: null,
+
+ toString: function(noDomain)
+ {
+ var expires = this.cookie.expires ? new Date(this.cookie.expires * 1000) : null;
+ return this.cookie.name + "=" + this.cookie.rawValue +
+ (expires ? "; expires=" + expires.toGMTString() : "") +
+ (this.cookie.maxAge ? "; Max-Age=" + this.cookie.maxAge : "") +
+ ((this.cookie.path) ? "; path=" + this.cookie.path : "; path=/") +
+ (noDomain ? "" : ((this.cookie.host) ? "; domain=" + this.cookie.host : "")) +
+ ((this.cookie.isSecure) ? "; Secure" : "") +
+ ((this.cookie.isHttpOnly) ? "; HttpOnly" : "");
+ },
+
+ toJSON: function()
+ {
+ return JSON.stringify({
+ name: this.cookie.name,
+ value: this.cookie.rawValue,
+ expires: (this.cookie.expires ? this.cookie.expires : 0),
+ maxAge: (this.cookie.maxAge ? this.cookie.maxAge : ""),
+ path: (this.cookie.path ? this.cookie.path : "/"),
+ host: this.cookie.host,
+ isHttpOnly: (this.cookie.isHttpOnly),
+ isSecure: (this.cookie.isSecure)
+ });
+ },
+
+ toText: function()
+ {
+ return this.cookie.host + "\t" +
+ new String(this.cookie.isDomain).toUpperCase() + "\t" +
+ this.cookie.path + "\t" +
+ new String(this.cookie.isSecure).toUpperCase() + "\t" +
+ this.cookie.expires + "\t" +
+ this.cookie.maxAge + "\t" +
+ this.cookie.name + "\t" +
+ this.cookie.rawValue + "\r\n";
+ },
+
+ getJsonValue: function()
+ {
+ if (this.json)
+ return this.json;
+
+ var jsonString = new String(this.cookie.value);
+ if (jsonString.indexOf("{") != 0)
+ return null;
+
+ var currentURI = Firebug.chrome.getCurrentURI();
+ var jsonObject = Json.parseJSONString(jsonString, currentURI.spec);
+ if (typeof (jsonObject) != "object")
+ return null;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.getJsonValue for: " + this.cookie.name, jsonObject);
+
+ return (this.json = jsonObject);
+ },
+
+ getXmlValue: function()
+ {
+ if (this.xml)
+ return this.xml;
+
+ try
+ {
+ var value = this.cookie.value;
+
+ // Simple test if the source is XML (to avoid errors in the Firefox Error console)
+ if (value.indexOf("<") != 0)
+ return null;
+
+ var parser = Xpcom.CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
+ var doc = parser.parseFromString(value, "text/xml");
+ var docElem = doc.documentElement;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.getXmlValue for: " + this.cookie.name);
+
+ // Error handling
+ var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
+ if (docElem.namespaceURI == nsURI && docElem.nodeName == "parsererror")
+ return null;
+
+ return (this.xml = docElem);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("cookies.getXmlValue ERROR " + this.cookie.name, e);
+ }
+
+ return null;
+ },
+
+ getURI: function()
+ {
+ try
+ {
+ var host = this.cookie.host;
+ var path = this.cookie.path;
+
+ var httpProtocol = this.cookie.isSecure ? "https://" : "http://";
+ var uri = httpProtocol + host + (path ? path : "");
+ return ioService.newURI(uri, null, null);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.getURI FAILS for " + this.cookie.name);
+ }
+
+ return null;
+ },
+
+ getSize: function()
+ {
+ return this.cookie.name.length + this.cookie.value.length;
+ },
+
+ getRawSize: function()
+ {
+ return this.cookie.name.length + this.cookie.rawValue.length;
+ }
+};
+
+// ********************************************************************************************* //
+// Helpers
+
+// xxxHonza: duplicated in CookieUtils since cycle dep
+function makeStrippedHost(aHost)
+{
+ if (!aHost)
+ return aHost;
+
+ var formattedHost = aHost.charAt(0) == "." ? aHost.substring(1, aHost.length) : aHost;
+ return formattedHost.substring(0, 4) == "www." ? formattedHost.substring(4, formattedHost.length) : formattedHost;
+}
+
+// ********************************************************************************************* //
+
+return Cookie;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/cookies/cookieClipboard.js b/content/firebug/cookies/cookieClipboard.js
index 9ffae1f..bd40264 100644
--- a/content/firebug/cookies/cookieClipboard.js
+++ b/content/firebug/cookies/cookieClipboard.js
@@ -1,163 +1,163 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/lib/xpcom",
-],
-function(Obj, Xpcom) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Ci = Components.interfaces;
-
-var clipboard = Xpcom.CCSV("@mozilla.org/widget/clipboard;1", "nsIClipboard");
-
-// ********************************************************************************************* //
-// Clipboard helper
-
-/**
- * @class This class implements clibpoard functionality.
- */
-var CookieClipboard = Obj.extend(Object,
-/** @lends CookieClipboard */
-{
- cookieFlavour: "text/firebug-cookie",
- unicodeFlavour: "text/unicode",
-
- copyTo: function(cookie)
- {
- try
- {
- var trans = this.createTransferData(cookie);
- if (trans && clipboard)
- clipboard.setData(trans, null, Ci.nsIClipboard.kGlobalClipboard);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("cookies.CookieClipboard.copyTo; EXCEPTION " + err, err);
- }
- },
-
- getFrom: function()
- {
- try
- {
- var str = this.getTransferData();
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.Get Cookie data from clipboard: " + str);
-
- return parseFromJSON(str);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("cookies.CookieClipboard.getFrom; EXCEPTION " + err, err);
- }
-
- return null;
- },
-
- isCookieAvailable: function()
- {
- try
- {
- if (!clipboard)
- return false;
-
- return clipboard.hasDataMatchingFlavors([this.cookieFlavour], 1,
- Ci.nsIClipboard.kGlobalClipboard);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("cookies.isCookieAvailable; EXCEPTION " + err, err);
- }
-
- return false;
- },
-
- createTransferData: function(cookie)
- {
- var trans = Xpcom.CCIN("@mozilla.org/widget/transferable;1", "nsITransferable");
-
- // See https://bugzilla.mozilla.org/show_bug.cgi?id=722872
- if (typeof(trans.init) == "function")
- trans.init(null);
-
- var json = cookie.toJSON();
- var wrapper1 = Xpcom.CCIN("@mozilla.org/supports-string;1", "nsISupportsString");
- wrapper1.data = json;
- trans.addDataFlavor(this.cookieFlavour);
- trans.setTransferData(this.cookieFlavour, wrapper1, json.length * 2);
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.Create JSON transfer data : " + json, cookie);
-
- var str = cookie.toString();
- var wrapper2 = Xpcom.CCIN("@mozilla.org/supports-string;1", "nsISupportsString");
- wrapper2.data = str;
- trans.addDataFlavor(this.unicodeFlavour);
- trans.setTransferData(this.unicodeFlavour, wrapper2, str.length * 2);
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.Create string transfer data : " + str, cookie);
-
- return trans;
- },
-
- getTransferData: function()
- {
- var trans = Xpcom.CCIN("@mozilla.org/widget/transferable;1", "nsITransferable");
-
- // See https://bugzilla.mozilla.org/show_bug.cgi?id=722872
- if (typeof(trans.init) == "function")
- trans.init(null);
-
- trans.addDataFlavor(this.cookieFlavour);
-
- clipboard.getData(trans, Ci.nsIClipboard.kGlobalClipboard);
-
- var str = new Object();
- var strLength = new Object();
-
- trans.getTransferData(this.cookieFlavour, str, strLength);
-
- if (!str.value)
- return null;
-
- str = str.value.QueryInterface(Ci.nsISupportsString);
- return str.data.substring(0, strLength.value / 2);
- }
-});
-
-// ********************************************************************************************* //
-// Helpers
-
-function parseFromJSON(json)
-{
- try
- {
- // Parse JSON string. In case of Firefox 3.5 the native support is used,
- // otherwise the cookie clipboard doesn't work.
- return JSON.parse(json);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS || FBTrace.DBG_COOKIES)
- FBTrace.sysout("Failed to parse a cookie from JSON data: " + err, err);
- }
-
- return null;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-return CookieClipboard;
-
-// ********************************************************************************************* //
-});
-
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/lib/xpcom",
+],
+function(Obj, Xpcom) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Ci = Components.interfaces;
+
+var clipboard = Xpcom.CCSV("@mozilla.org/widget/clipboard;1", "nsIClipboard");
+
+// ********************************************************************************************* //
+// Clipboard helper
+
+/**
+ * @class This class implements clibpoard functionality.
+ */
+var CookieClipboard = Obj.extend(Object,
+/** @lends CookieClipboard */
+{
+ cookieFlavour: "text/firebug-cookie",
+ unicodeFlavour: "text/unicode",
+
+ copyTo: function(cookie)
+ {
+ try
+ {
+ var trans = this.createTransferData(cookie);
+ if (trans && clipboard)
+ clipboard.setData(trans, null, Ci.nsIClipboard.kGlobalClipboard);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("cookies.CookieClipboard.copyTo; EXCEPTION " + err, err);
+ }
+ },
+
+ getFrom: function()
+ {
+ try
+ {
+ var str = this.getTransferData();
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.Get Cookie data from clipboard: " + str);
+
+ return parseFromJSON(str);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("cookies.CookieClipboard.getFrom; EXCEPTION " + err, err);
+ }
+
+ return null;
+ },
+
+ isCookieAvailable: function()
+ {
+ try
+ {
+ if (!clipboard)
+ return false;
+
+ return clipboard.hasDataMatchingFlavors([this.cookieFlavour], 1,
+ Ci.nsIClipboard.kGlobalClipboard);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("cookies.isCookieAvailable; EXCEPTION " + err, err);
+ }
+
+ return false;
+ },
+
+ createTransferData: function(cookie)
+ {
+ var trans = Xpcom.CCIN("@mozilla.org/widget/transferable;1", "nsITransferable");
+
+ // See https://bugzilla.mozilla.org/show_bug.cgi?id=722872
+ if (typeof(trans.init) == "function")
+ trans.init(null);
+
+ var json = cookie.toJSON();
+ var wrapper1 = Xpcom.CCIN("@mozilla.org/supports-string;1", "nsISupportsString");
+ wrapper1.data = json;
+ trans.addDataFlavor(this.cookieFlavour);
+ trans.setTransferData(this.cookieFlavour, wrapper1, json.length * 2);
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.Create JSON transfer data : " + json, cookie);
+
+ var str = cookie.toString();
+ var wrapper2 = Xpcom.CCIN("@mozilla.org/supports-string;1", "nsISupportsString");
+ wrapper2.data = str;
+ trans.addDataFlavor(this.unicodeFlavour);
+ trans.setTransferData(this.unicodeFlavour, wrapper2, str.length * 2);
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.Create string transfer data : " + str, cookie);
+
+ return trans;
+ },
+
+ getTransferData: function()
+ {
+ var trans = Xpcom.CCIN("@mozilla.org/widget/transferable;1", "nsITransferable");
+
+ // See https://bugzilla.mozilla.org/show_bug.cgi?id=722872
+ if (typeof(trans.init) == "function")
+ trans.init(null);
+
+ trans.addDataFlavor(this.cookieFlavour);
+
+ clipboard.getData(trans, Ci.nsIClipboard.kGlobalClipboard);
+
+ var str = new Object();
+ var strLength = new Object();
+
+ trans.getTransferData(this.cookieFlavour, str, strLength);
+
+ if (!str.value)
+ return null;
+
+ str = str.value.QueryInterface(Ci.nsISupportsString);
+ return str.data.substring(0, strLength.value / 2);
+ }
+});
+
+// ********************************************************************************************* //
+// Helpers
+
+function parseFromJSON(json)
+{
+ try
+ {
+ // Parse JSON string. In case of Firefox 3.5 the native support is used,
+ // otherwise the cookie clipboard doesn't work.
+ return JSON.parse(json);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_COOKIES)
+ FBTrace.sysout("Failed to parse a cookie from JSON data: " + err, err);
+ }
+
+ return null;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return CookieClipboard;
+
+// ********************************************************************************************* //
+});
+
diff --git a/content/firebug/cookies/cookieEvents.js b/content/firebug/cookies/cookieEvents.js
index 28ce7d8..b8848ee 100644
--- a/content/firebug/cookies/cookieEvents.js
+++ b/content/firebug/cookies/cookieEvents.js
@@ -1,58 +1,58 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/cookies/cookieUtils"
-],
-function(CookieUtils) {
-
-// ********************************************************************************************* //
-// Cookie Event objects
-
-/**
- * This object represents a "cookie-changed" event (repObject).
- * There are three types of cookie modify events:
- * "changed", "added" and "deleted".
- * Appropriate type is specified by action parameter.
- */
-function CookieChangedEvent(context, cookie, action)
-{
- this.context = context;
- this.cookie = cookie;
- this.action = action;
- this.rawHost = CookieUtils.makeStrippedHost(cookie.host);
- this.getId = function()
- {
- return this.action + this.rawHost + this.cookie.name + ":" + this.cookie.value;
- };
-}
-
-/**
- * This object represents "cleared" event, which is raised when the user
- * deletes all cookies (e.g. in the system cookies dialog).
- */
-function CookieClearedEvent()
-{
-}
-
-/**
- * This object represents "cookie-rejected" event, which is fired if cookies
- * from specific domain are rejected.
- */
-function CookieRejectedEvent(context, uri)
-{
- this.context = context;
- this.uri = uri;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-return {
- CookieChangedEvent: CookieChangedEvent,
- CookieClearedEvent: CookieClearedEvent,
- CookieRejectedEvent: CookieRejectedEvent
-};
-
-// ********************************************************************************************* //
-});
-
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/cookies/cookieUtils"
+],
+function(CookieUtils) {
+
+// ********************************************************************************************* //
+// Cookie Event objects
+
+/**
+ * This object represents a "cookie-changed" event (repObject).
+ * There are three types of cookie modify events:
+ * "changed", "added" and "deleted".
+ * Appropriate type is specified by action parameter.
+ */
+function CookieChangedEvent(context, cookie, action)
+{
+ this.context = context;
+ this.cookie = cookie;
+ this.action = action;
+ this.rawHost = CookieUtils.makeStrippedHost(cookie.host);
+ this.getId = function()
+ {
+ return this.action + this.rawHost + this.cookie.name + ":" + this.cookie.value;
+ };
+}
+
+/**
+ * This object represents "cleared" event, which is raised when the user
+ * deletes all cookies (e.g. in the system cookies dialog).
+ */
+function CookieClearedEvent()
+{
+}
+
+/**
+ * This object represents "cookie-rejected" event, which is fired if cookies
+ * from specific domain are rejected.
+ */
+function CookieRejectedEvent(context, uri)
+{
+ this.context = context;
+ this.uri = uri;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return {
+ CookieChangedEvent: CookieChangedEvent,
+ CookieClearedEvent: CookieClearedEvent,
+ CookieRejectedEvent: CookieRejectedEvent
+};
+
+// ********************************************************************************************* //
+});
+
diff --git a/content/firebug/cookies/cookieModule.js b/content/firebug/cookies/cookieModule.js
index 3e9a39e..7fe6704 100644
--- a/content/firebug/cookies/cookieModule.js
+++ b/content/firebug/cookies/cookieModule.js
@@ -1,1439 +1,1439 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/xpcom",
- "firebug/lib/object",
- "firebug/lib/locale",
- "firebug/lib/domplate",
- "firebug/lib/dom",
- "firebug/lib/options",
- "firebug/lib/persist",
- "firebug/lib/string",
- "firebug/lib/http",
- "firebug/lib/css",
- "firebug/lib/events",
- "firebug/lib/array",
- "firebug/cookies/baseObserver",
- "firebug/cookies/menuUtils",
- "firebug/cookies/cookieReps",
- "firebug/cookies/cookieUtils",
- "firebug/cookies/cookie",
- "firebug/cookies/breakpoints",
- "firebug/cookies/cookieObserver",
- "firebug/cookies/cookieClipboard",
- "firebug/chrome/tabWatcher",
- "firebug/cookies/httpObserver",
- "firebug/lib/system",
- "firebug/cookies/cookie",
- "firebug/cookies/cookiePermissions",
- "firebug/cookies/editCookie",
- "firebug/trace/traceListener",
- "firebug/trace/traceModule",
- "firebug/chrome/firefox",
- "firebug/chrome/window",
- "firebug/lib/url",
- "firebug/cookies/legacy",
-],
-function(Xpcom, Obj, Locale, Domplate, Dom, Options, Persist, Str, Http, Css, Events, Arr,
- BaseObserver, MenuUtils, CookieReps, CookieUtils, Cookier, Breakpoints, CookieObserver,
- CookieClipboard, TabWatcher, HttpObserver, System, Cookie, CookiePermissions, EditCookie,
- TraceListener, TraceModule, Firefox, Win, Url) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// Firefox Preferences
-const networkPrefDomain = "network.cookie";
-const cookieBehaviorPref = "cookieBehavior";
-const cookieLifeTimePref = "lifetimePolicy";
-
-// Cookies preferences
-const clearWhenDeny = "cookies.clearWhenDeny";
-const defaultExpireTime = "cookies.defaultExpireTime";
-const removeConfirmation = "cookies.removeConfirmation";
-const removeSessionConfirmation = "cookies.removeSessionConfirmation";
-
-// Services
-const cookieManager = Xpcom.CCSV("@mozilla.org/cookiemanager;1", "nsICookieManager2");
-const observerService = Xpcom.CCSV("@mozilla.org/observer-service;1", "nsIObserverService");
-const prompts = Xpcom.CCSV("@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService");
-
-// Preferences
-const PrefService = Cc["@mozilla.org/preferences-service;1"];
-const prefService = PrefService.getService(Ci.nsIPrefService);
-const prefs = PrefService.getService(Ci.nsIPrefBranch);
-
-// Cookie panel ID.
-const panelName = "cookies";
-
-// Helper array for prematurely created contexts
-var contexts = new Array();
-
-// Register stylesheet in Firebug. This method is introduced in Firebug 1.6
-Firebug.registerStylesheet("chrome://firebug/skin/cookies/cookies.css");
-
-// ********************************************************************************************* //
-// Module Implementation
-
-/**
- * @module This object represents a <i>module</i> for Cookies panel.
- * The module supports activation (enable/disable of the Cookies panel).
- * This functionality has been introduced in Firebug 1.2 and makes possible
- * to control activity of Firebug panels in order to avoid (performance) expensive
- * features.
- */
-Firebug.CookieModule = Obj.extend(Firebug.ActivableModule,
-/** @lends Firebug.CookieModule */
-{
- contexts: contexts,
-
- // Set to true if all hooks for monitoring cookies are registered; otherwise false.
- observersRegistered: false,
-
- /**
- * Called by Firebug when Firefox window is opened.
- *
- * @param {String} prefDomain Preference domain (e.g. extensions.firebug)
- * @param {Array} prefNames Default Firebug preference array.
- */
- initialize: function(prefDomain, prefNames)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.CookieModule.initialize; ");
-
- this.traceListener = new TraceListener("cookies.", "DBG_COOKIES", true,
- "chrome://firebug/skin/cookies/trace.css");
-
- TraceModule.addListener(this.traceListener);
-
- this.panelName = panelName;
- this.description = Locale.$STR("cookies.modulemanager.description");
-
- Firebug.ActivableModule.initialize.apply(this, arguments);
-
- var permTooltip = Firebug.chrome.$("fcPermTooltip");
- permTooltip.fcEnabled = true;
-
- // All the necessary observers are registered by default. Even if the
- // panel can be disabled (entirely or for a specific host) there is
- // no simple way to find out this now, as the context isn't available.
- // All will be unregistered again in the initContext (if necessary).
- // There is no big overhead, the initContext is called just after the
- // first document request.
- //this.registerObservers();
-
- // Register listener for NetInfoBody (if the API is available) so,
- // a new tab (Cookies) can be appended into the Net panel request info.
- var netInfoBody = Firebug.NetMonitor.NetInfoBody;
- if ("addListener" in netInfoBody)
- netInfoBody.addListener(this.NetInfoBody);
-
- // Register listener within the Console panel. If document.cookie property
- // is logged, formatted output is used.
- //Firebug.Console.addListener(this.ConsoleListener);
-
- // Register debugger listener for providing cookie-breakpoints.
- //Firebug.Debugger.addListener(this.DebuggerListener);
-
- // Dynamically overlay Break on Next button in FB 1.5.1
- // There is a small decoration coming from each panel.
- var bonStack = Firebug.chrome.$("fbBreakOnNextButtonStack");
- if (bonStack)
- {
- var image = document.createElement("image");
- image.setAttribute("id", "fbBreakOnImageCookies");
- image.setAttribute("class", "fbBreakOnImage");
- image.setAttribute("src", "chrome://firebug/skin/cookies/breakOnCookie.png");
- bonStack.appendChild(image);
- }
-
- Firebug.registerUIListener(this);
- },
-
- initializeUI: function()
- {
- Firebug.ActivableModule.initializeUI.apply(this, arguments);
-
- // Append the styleesheet to a new console popup panel introduced in Firebug 1.6
- this.addStyleSheet(null);
-
- Dom.collapse(Firebug.chrome.$("fbConsoleFilter-cookies"), false);
- },
-
- /**
- * Peforms clean up when Firebug is destroyed.
- * Called by the framework when Firebug is closed for an existing Firefox window.
- */
- shutdown: function()
- {
- this.unregisterObservers();
-
- // Support for trace-console customization in Firebug 1.3
- TraceModule.removeListener(this.traceListener);
-
- var netInfoBody = Firebug.NetMonitor.NetInfoBody;
- if ("removeListener" in netInfoBody)
- netInfoBody.removeListener(this.NetInfoBody);
-
- //Firebug.Console.removeListener(this.ConsoleListener);
- //Firebug.Debugger.removeListener(this.DebuggerListener);
-
- Firebug.unregisterUIListener(this);
- },
-
- registerObservers: function()
- {
- if (this.observersRegistered)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.cookieModule.registerObservers; Observers ALREADY registered");
- return;
- }
-
- observerService.addObserver(HttpObserver, "http-on-modify-request", false);
- observerService.addObserver(HttpObserver, "http-on-examine-response", false);
- observerService.addObserver(PermissionObserver, "perm-changed", false);
- registerCookieObserver(CookieObserver);
- prefs.addObserver(networkPrefDomain, PrefObserver, false);
-
- this.observersRegistered = true;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.cookieModule.registerObservers;");
- },
-
- unregisterObservers: function(context)
- {
- if (!this.observersRegistered)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.cookieModule.registerObservers; " +
- "Observers ALREADY un-registered");
- return;
- }
-
- observerService.removeObserver(HttpObserver, "http-on-modify-request");
- observerService.removeObserver(HttpObserver, "http-on-examine-response");
- observerService.removeObserver(PermissionObserver, "perm-changed");
- unregisterCookieObserver(CookieObserver);
- prefs.removeObserver(networkPrefDomain, PrefObserver);
-
- this.observersRegistered = false;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.cookieModule.unregisterObservers;");
- },
-
- // Helper context
- initTempContext: function(tempContext)
- {
- tempContext.cookieTempObserver = registerCookieObserver(new CookieTempObserver(tempContext));
-
- // Create sub-context for cookies.
- tempContext.cookies = {};
- tempContext.cookies.activeHosts = [];
- },
-
- destroyTempContext: function(tempContext, context)
- {
- if (!tempContext)
- return;
-
- if (FBTrace.DBG_COOKIES)
- {
- FBTrace.sysout("cookies.Copy " + tempContext.events.length +
- " events to real-context.");
-
- var message = "cookies.Copy active hosts (";
- for (var host in tempContext.cookies.activeHosts)
- message += host + ", ";
- message = message.substring(0, message.length - 2);
- message += ") from temp context into the real context.";
- FBTrace.sysout(message, tempContext);
- }
-
- // Copy all active hosts on the page. In case of redirects or embedded IFrames, there
- // can be more hosts (domains) involved on the page. Cookies must be displayed for
- // all of them.
- context.cookies.activeHosts = cloneMap(tempContext.cookies.activeHosts);
-
- // Clone all active (received) cookies on the page.
- // This is probably not necessary, as the first cookie is received
- // in http-on-examine-response and at that time the real context
- // is already created.
- context.cookies.activeCookies = cloneMap(tempContext.cookies.activeCookies);
-
- // Fire all lost cookie events (those from the temp context).
- var events = tempContext.events;
- for (var i=0; i<events.length; i++) {
- var e = events[i];
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.Fire fake cookie event: " + e.topic + ", " + e.data + "\n");
- CookieObserver.observe(e.subject, e.topic, e.data);
- }
-
- delete tempContext.cookies.activeHosts;
- delete tempContext.cookies.activeCookies;
- delete tempContext.cookies;
-
- // Unregister temporary cookie observer.
- tempContext.cookieTempObserver = unregisterCookieObserver(tempContext.cookieTempObserver);
- },
-
- /**
- * Called by the framework when a context is created for Firefox tab.
- *
- * @param {Firebug.TabContext} Context for the current Firefox tab.
- */
- initContext: function(context)
- {
- var tabId = Firebug.getTabIdForWindow(context.window);
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.INIT real context for: " + tabId + ", " +
- context.getName());
-
- // Create sub-context for cookies.
- // xxxHonza: the cookies object exists within the context even if
- // the panel is disabled.
- context.cookies = {};
- context.cookies.activeHosts = [];
-
- // Initialize custom path filter for this context
- context.cookies.pathFilter = "/";
-
- // List of breakpoints.
- context.cookies.breakpoints = new CookieBreakpointGroup();
- context.cookies.breakpoints.load(context);
-
- // The temp context isn't created e.g. for empty tabs, chrome pages.
- var tempContext = contexts[tabId];
- if (tempContext)
- {
- this.destroyTempContext(tempContext, context);
- delete contexts[tabId];
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.DESTROY temporary context, tabId: " + tempContext.tabId);
- }
-
- // The base class must be called after the context for Cookies panel is
- // properly initialized. The panel can be created inside this function
- // (within Firebug.ActivableModule.enablePanel), which can result in
- // calling CookiePanel.initialize method. This method directly calls
- // CookiePanel.refresh, which needs the context.cookies object ready.
- Firebug.ActivableModule.initContext.apply(this, arguments);
-
- // Unregister all observers if the panel is disabled.
- if (!this.isEnabled(context))
- this.unregisterObservers(context);
- },
-
- destroyContext: function(context)
- {
- Firebug.ActivableModule.destroyContext.apply(this, arguments);
-
- if (!context.cookies)
- {
- if (FBTrace.DBG_COOKIES)
- {
- var tabId = Firebug.getTabIdForWindow(context.window);
- FBTrace.sysout("cookies.DESTROY context ERROR: No context.cookies available, tabId: " +
- tabId + ", " + context.getName());
- }
- return;
- }
-
- context.cookies.breakpoints.store(context);
-
- for (var p in context.cookies)
- delete context.cookies[p];
-
- delete context.cookies;
-
- if (FBTrace.DBG_COOKIES)
- {
- var tabId = Firebug.getTabIdForWindow(context.window);
- FBTrace.sysout("cookies.DESTROY context, tabId: " + tabId +
- ", " + context.getName());
- }
- },
-
- addStyleSheet: function(panel)
- {
- // Use registration function instead (introduced in Firebug 1.6)
- if (Firebug.registerStylesheet)
- return;
-
- function privateAppend(doc)
- {
- // Make sure the stylesheet isn't appended twice.
- if (!Firebug.chrome.$("fcStyles", doc))
- {
- var styleSheet = createStyleSheet(doc, "chrome://firebug/skin/cookies/cookies.css");
- styleSheet.setAttribute("id", "fcStyles");
- addStyleSheet(doc, styleSheet);
- }
- }
-
- if (panel)
- privateAppend(panel.document);
-
- // Firebug 1.6 introduces another panel for console preview on other panels
- // The allows to use command line in other panels too.
- var preview = Firebug.chrome.$("fbCommandPreviewBrowser");
- if (preview)
- privateAppend(preview.contentDocument);
- },
-
- updateOption: function(name, value)
- {
- if (name == "consoleFilterTypes")
- {
- this.updateConsoleFilter();
- }
- },
-
- updateConsoleFilter: function()
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.updateConsoleFilter;");
-
- if (!Firebug.currentContext)
- return;
-
- // The panel can be disabled.
- var panel = Firebug.currentContext.getPanel("console");
- if (!panel)
- return;
-
- var panelNode = panel.panelNode;
- var className = "hideType-cookies";
- var filterTypes = Firebug.consoleFilterTypes;
-
- Css.setClass(panelNode, className);
-
- var positiveFilters = ["all", "cookies"];
- for (var i=0; i<positiveFilters.length; i++)
- {
- if (filterTypes.indexOf(positiveFilters[i]) >= 0)
- {
- Css.removeClass(panelNode, className);
- break;
- }
- }
- },
-
- showPanel: function(browser, panel)
- {
- // Update panel's toolbar
- var isCookiePanel = panel && panel.name == panelName;
-
- // Firebug 1.4, chrome changes.
- var chrome = browser.chrome ? browser.chrome : Firebug.chrome;
-
- var cookieButtons = Firebug.chrome.$("fbCookieButtons");
- Dom.collapse(cookieButtons, !isCookiePanel);
-
- // The console panel can be displayed sooner than the Cookies
- // panel, in such a case the Stylesheet must be ready as
- // there are cookies logs in the console.
- // Cookie table is also used within the net panel.
- if (panel && (panel.name == "console" || panel.name == "net"))
- this.addStyleSheet(panel);
- },
-
- watchWindow: function(context, win)
- {
- context.window.addEventListener("beforeunload", this.onBeforeUnload, false);
- },
-
- onBeforeUnload: function(event)
- {
- var view = event.target.defaultView;
- var context = TabWatcher.getContextByWindow(view);
- if (!context)
- return;
-
- var panel = context.getPanel(panelName, true);
- if (panel)
- panel.clear();
-
- if (FBTrace.DBG_COOKIES || FBTrace.DBG_ERRORS)
- {
- var tabId = Firebug.getTabIdForWindow(view);
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.On before unload tab: " + tabId);
-
- if (contexts[tabId])
- {
- delete contexts[tabId];
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.CookieModule.onBeforeUnload; There is a temp context leak!");
- }
- }
- },
-
- /**
- * Creates a new cookie in the browser.
- * This method is used by {@link EditCookie} dialog and also when a cookie is
- * pasted from the clipboard.
- *
- * @param {Cookie} Cookie object with appropriate properties. See {@link Cookie} object.
- */
- createCookie: function(cookie)
- {
- try
- {
- var uri = cookie.getURI();
- if (!uri)
- return;
-
- var c = cookie.cookie;
-
- // Fix for issue 34. The domain must be included in the cookieString if it
- // starts with "." But don't include it otherwise, since the "." would be
- // appended by the service.
- var host = cookie.cookie.host;
- var cookieString = cookie.toString(!(host.charAt(0) == "."));
-
- // Fix for issue 37: httpOnly cookies, and issue 47: Cannot change the HttpOnly flag
- // HttpOnly cookies can't be changed by setCookie string
- // See also: https://bugzilla.mozilla.org/show_bug.cgi?id=178993
- //cookieService.setCookieString(uri, null, cookieString, null);
-
- // Doesn't work in FF4 (issue 95)
- //cookieService.setCookieStringFromHttp(uri, uri, null, cookieString,
- // c.expires, null);
-
- //xxxHonza: in what cases the cookie should be removed?
- //var cm = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager);
- //cm.remove(c.host, c.name, c.path, false);
-
- var isSession = CookieUtils.isSessionCookie(c);
- var cm2 = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager2);
- cm2.add(c.host, c.path, c.name, c.rawValue, c.isSecure, c.isHttpOnly, isSession,
- c.expires || Math.round((new Date()).getTime() / 1000 + 9999999999));
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.createCookie: set cookie string: " + cookieString, cookie);
-
- // xxxHonza: this shouldn't be necessary, but sometimes the CookieObserver
- // is not triggered.
- TabWatcher.iterateContexts(function(context)
- {
- context.getPanel(panelName).refresh();
- });
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("cookies.createCookie: set cookie string ERROR " +
- cookieString, e);
- }
- },
-
- removeCookie: function(host, name, path)
- {
- cookieManager.remove(host, name, path, false);
-
- // xxxHonza: this shouldn't be necessary, but sometimes the CookieObserver
- // is not triggered.
- TabWatcher.iterateContexts(function(context)
- {
- context.getPanel(panelName).refresh();
- });
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Support for ActivableModule 1.6
-
- /**
- * It's just here to exists (calling base class only)
- */
- isEnabled: function(context)
- {
- return Firebug.ActivableModule.isEnabled.apply(this, arguments);
- },
-
- /**
- * Called when an observer (e.g. panel) is added/removed into/from the model.
- * This is the moment when the model needs to decide whether to activate.
- */
- onObserverChange: function(observer)
- {
- if (this.hasObservers())
- TabWatcher.iterateContexts(Firebug.CookieModule.registerObservers);
- else
- TabWatcher.iterateContexts(Firebug.CookieModule.unregisterObservers);
-
- this.setStatus();
- },
-
- onSuspendFirebug: function()
- {
- TabWatcher.iterateContexts(Firebug.CookieModule.unregisterObservers);
-
- this.setStatus();
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onSuspendFirebug");
- },
-
- onResumeFirebug: function(context)
- {
- if (Firebug.CookieModule.isAlwaysEnabled())
- TabWatcher.iterateContexts(Firebug.CookieModule.registerObservers);
-
- this.setStatus();
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onResumeFirebug");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- setStatus: function()
- {
- var fbStatus = Firefox.getElementById("firebugStatus");
- if (fbStatus)
- {
- if (this.hasObservers())
- fbStatus.setAttribute(panelName, "on");
- else
- fbStatus.removeAttribute(panelName);
- }
- else
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("cookies.setStatus ERROR no firebugStatus element");
- }
- },
-
- getMenuLabel: function(option, location)
- {
- var host = getURIHost(location);
-
- // In case of local files or system pages use this labels instead of host.
- // xxxHonza: the panel should be automatically disabled for local files
- // and system pages as there are no cookies associated.
- // These options shouldn't be available at all.
- if (isSystemURL(location.spec))
- host = Locale.$STR("cookies.SystemPages");
- else if (!getURIHost(location))
- host = Locale.$STR("cookies.LocalFiles");
-
- // Translate these two options in panel activable menu from cookies.properties
- switch (option)
- {
- case "disable-site":
- return Locale.$STRF("cookies.HostDisable", [host]);
- case "enable-site":
- return Locale.$STRF("cookies.HostEnable", [host]);
- }
-
- return Firebug.ActivableModule.getMenuLabel.apply(this, arguments);
- },
-
- // xxxHonza: This method is overriden just to provide translated strings from
- // cookies.properties file.
- openPermissions: function(event, context)
- {
- Events.cancelEvent(event);
-
- var browserURI = Firebug.chrome.getBrowserURI(context);
- var host = this.getHostForURI(browserURI);
-
- var params = {
- permissionType: this.getPrefDomain(),
- windowTitle: Locale.$STR(this.panelName + ".Permissions"),
- introText: Locale.$STR(this.panelName + ".PermissionsIntro"),
- blockVisible: true,
- sessionVisible: false,
- allowVisible: true,
- prefilledHost: host,
- };
-
- openWindow("Browser:Permissions", "chrome://browser/content/preferences/permissions.xul",
- "", params);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Remove Cookies
-
- onRemoveAllShowTooltip: function(tooltip, context)
- {
- tooltip.label = Locale.$STR("cookies.removeall.tooltip");
- return true;
- },
-
- onRemoveAllSessionShowTooltip: function(tooltip, context)
- {
- tooltip.label = Locale.$STR("cookies.removeallsession.tooltip");
- return true;
- },
-
- /**
- * Removes cookies defined for a website. This method removes all cookies for
- * the current page (including cookies from embedded iframes). The method
- * doesn't check any UI filters.
- *
- * @param {Object} context context, in which the cookies are defined
- * @param {Object} [filter] filter to define, which cookies should be removed
- * (format: {session: true/false, host: string})
- */
- removeCookies: function(context, filter)
- {
- var panel = context.getPanel(panelName, true);
- if (!panel)
- return;
-
- var hosts = context.cookies.activeHosts;
-
- // If Firebug has been opened after page load, the activeHosts map
- // is empty since it's being initialized during the page load time
- // (in HttpObserver.onModifiedRequest).
- // Use the current window and iframes in such case (see issue 6469).
- if (!Obj.hasProperties(hosts))
- {
- hosts = {};
-
- Win.iterateWindows(context.window, function(win)
- {
- var host = Url.getURIHost(win.location);
- hosts[host] = true;
- });
- }
-
- for (var host in hosts)
- {
- var cookieEnumerator = cookieManager.getCookiesFromHost(host);
- while (cookieEnumerator.hasMoreElements())
- {
- var cookie = cookieEnumerator.getNext().QueryInterface(Ci.nsICookie2);
- this.removeCookieHelper(cookie, filter);
- }
- }
- },
-
- /**
- * Removes displayed cookies in the Cookies panel.
- *
- * @param {Object} context context, in which the cookies are defined
- * @param {Object} [filter] filter to define, which cookies should be removed
- * (format: {session: true/false, host: string})
- */
- removeDisplayedCookies: function(context, filter)
- {
- var panel = context.getPanel("cookies", false);
- if (!panel)
- return;
-
- // Enumerate all displayed cookies and remove them step by step.
- var self = this;
- panel.enumerateCookies(function(cookie)
- {
- self.removeCookieHelper(cookie.cookie, filter);
- });
- },
-
- removeCookieHelper: function(cookie, filter)
- {
- // Remove the cookie only if the filter says so.
- if (!filter || ((!filter.session || cookie.isSession) &&
- (!filter.host || filter.host == cookie.host)))
- {
- cookieManager.remove(cookie.host, cookie.name, cookie.path, false);
- }
- },
-
- onRemoveAll: function(context)
- {
- if (Options.get(removeConfirmation))
- {
- var check = {value: false};
- var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_YES +
- prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_NO;
-
- if (!prompts.confirmEx(context.chrome.window, Locale.$STR("Firebug"),
- Locale.$STR("cookies.confirm.removeall"), flags, "", "", "",
- Locale.$STR("Do_not_show_this_message_again"), check) == 0)
- {
- return;
- }
-
- // Update 'Remove Cookies' confirmation option according to the value
- // of the dialog's "do not show again" checkbox.
- Options.set(removeConfirmation, !check.value);
- }
-
- Firebug.CookieModule.removeDisplayedCookies(context);
- },
-
- onRemoveAllSession: function(context)
- {
- if (Options.get(removeSessionConfirmation))
- {
- var check = {value: false};
- var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_YES +
- prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_NO;
-
- if (!prompts.confirmEx(context.chrome.window, Locale.$STR("Firebug"),
- Locale.$STR("cookies.confirm.removeallsession"), flags, "", "", "",
- Locale.$STR("Do_not_show_this_message_again"), check) == 0)
- {
- return;
- }
-
- // Update 'Remove Session Cookies' confirmation option according to the value
- // of the dialog's "do not show again" checkbox.
- Options.set(removeSessionConfirmation, !check.value);
- }
-
- Firebug.CookieModule.removeDisplayedCookies(context, {session: true});
- },
-
- onRemoveAllFromHost: function(context, host)
- {
- if (Options.get(removeConfirmation))
- {
- var check = {value: false};
- var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_YES +
- prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_NO;
-
- if (!prompts.confirmEx(context.chrome.window, Locale.$STR("Firebug"),
- Locale.$STRF("cookies.confirm.Remove_All_From_Host", [host]), flags, "", "", "",
- Locale.$STR("Do_not_show_this_message_again"), check) == 0)
- {
- return;
- }
-
- // Update 'Remove Cookies' confirmation option according to the value
- // of the dialog's "do not show again" checkbox.
- Options.set(removeConfirmation, !check.value);
- }
-
- Firebug.CookieModule.removeCookies(context, {host: host});
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Create Cookies
-
- onCreateCookieShowTooltip: function(tooltip, context)
- {
- var host = context.window.location.host;
- tooltip.label = Locale.$STRF("cookies.createcookie.tooltip", [host]);
- return true;
- },
-
- onCreateCookie: function(context)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onCreateCookie");
-
- // There is an excepion if the window is closed or not initialized (empty tab)
- var host;
- try
- {
- host = context.window.location.host;
- }
- catch (err)
- {
- alert(Locale.$STR("cookies.message.There_is_no_active_page"));
- return;
- }
-
- // Name and domain.
- var cookie = new Object();
- cookie.name = this.getDefaultCookieName(context);
- cookie.host = host;
-
- // The edit dialog uses raw value.
- cookie.rawValue = Locale.$STR("cookies.createcookie.defaultvalue");
-
- // Default path
- var path = context.window.location.pathname || "/";
- cookie.path = path.substr(0, (path.lastIndexOf("/") || 1));
-
- // Set defaul expiration time.
- cookie.expires = this.getDefaultCookieExpireTime();
-
- var params = {
- cookie: cookie,
- action: "create",
- window: context.window,
- EditCookie: EditCookie,
- Firebug: Firebug,
- FBTrace: FBTrace,
- };
-
- var parent = context.chrome.window;
- parent.openDialog("chrome://firebug/content/cookies/editCookie.xul",
- "_blank", "chrome,centerscreen,resizable=yes,modal=yes",
- params);
- },
-
- getDefaultCookieName: function(context, defaultName)
- {
- var counter = 0;
- var cookieDefaultName = defaultName || "Cookie";
- var cookieName = cookieDefaultName;
- var exists = false;
- var panel = context.getPanel(panelName);
-
- do
- {
- exists = false;
-
- var row = Dom.getElementByClass(panel.panelNode, "cookieRow");
- while (row)
- {
- var rep = row.repObject;
-
- // If the cookie is expanded, there is a row without the repObject
- if (rep && rep.cookie.name == cookieName)
- {
- counter++;
- exists = true;
- cookieName = cookieDefaultName + "-" + counter;
- break;
- }
- row = row.nextSibling;
- }
- } while (exists)
-
- return cookieName;
- },
-
- getDefaultCookieExpireTime: function()
- {
- // Get default expire time interval (in seconds) and add it to the
- // current time.
- var defaultInterval = Options.get(defaultExpireTime);
- var now = new Date();
- now.setTime(now.getTime() + (defaultInterval * 1000));
-
- // Return final expiration time.
- return (now.getTime() / 1000);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /**
- * Exports all existing cookies in the browser into a cookies.txt file.
- * This action is available in the Cookies panel toolbar.
- */
- onExportAll: function(context)
- {
- try
- {
- var fp = Xpcom.CCIN("@mozilla.org/filepicker;1", "nsIFilePicker");
- fp.init(window, null, Ci.nsIFilePicker.modeSave);
- fp.appendFilters(Ci.nsIFilePicker.filterAll | Ci.nsIFilePicker.filterText);
- fp.filterIndex = 1;
- fp.defaultString = "cookies.txt";
-
- var rv = fp.show();
- if (rv == Ci.nsIFilePicker.returnOK || rv == Ci.nsIFilePicker.returnReplace)
- {
- var foStream = Xpcom.CCIN("@mozilla.org/network/file-output-stream;1", "nsIFileOutputStream");
- foStream.init(fp.file, 0x02 | 0x08 | 0x20, 0666, 0); // write, create, truncate
-
- var e = cookieManager.enumerator;
- while(e.hasMoreElements())
- {
- var cookie = e.getNext();
- cookie = cookie.QueryInterface(Ci.nsICookie2);
- var cookieWrapper = new Cookie(CookieUtils.makeCookieObject(cookie));
- var cookieInfo = cookieWrapper.toText();
- foStream.write(cookieInfo, cookieInfo.length);
- }
-
- foStream.close();
- }
- }
- catch (err)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onExportAll EXCEPTION", err);
- }
- },
-
- onExportForSiteShowTooltip: function(tooltip, context)
- {
- var host = context.window.location.host;
- tooltip.label = Locale.$STRF("cookies.export.Export_For_Site_Tooltip", [host]);
- return true;
- },
-
- /**
- * Exports cookies for the current site into a cookies.txt file
- * This action is available in the Cookies panel toolbar.
- */
- onExportForSite: function(context)
- {
- try
- {
- var fp = Xpcom.CCIN("@mozilla.org/filepicker;1", "nsIFilePicker");
- fp.init(window, null, Ci.nsIFilePicker.modeSave);
- fp.appendFilters(Ci.nsIFilePicker.filterAll | Ci.nsIFilePicker.filterText);
- fp.filterIndex = 1;
- fp.defaultString = "cookies.txt";
-
- var rv = fp.show();
- if (rv == Ci.nsIFilePicker.returnOK || rv == Ci.nsIFilePicker.returnReplace)
- {
- var foStream = Xpcom.CCIN("@mozilla.org/network/file-output-stream;1",
- "nsIFileOutputStream");
- foStream.init(fp.file, 0x02 | 0x08 | 0x20, 0666, 0); // write, create, truncate
-
- var panel = context.getPanel(panelName, true);
- var tbody = Dom.getElementByClass(panel.panelNode, "cookieTable").firstChild;
- for (var row = tbody.firstChild; row; row = row.nextSibling)
- {
- if (Css.hasClass(row, "cookieRow") && row.repObject)
- {
- var cookieInfo = row.repObject.toText();
- foStream.write(cookieInfo, cookieInfo.length);
- }
- }
-
- foStream.close();
- }
- }
- catch (err)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onExportForSite EXCEPTION", err);
- }
- },
-
- onFilter: function(context, pref)
- {
- var value = Options.get(pref);
- Options.set(pref, !value);
-
- TabWatcher.iterateContexts(function(context)
- {
- var panel = context.getPanel(panelName, true);
- if (panel)
- panel.refresh();
- });
- },
-
- onFilterPopupShowing: function(menu)
- {
- var items = menu.getElementsByTagName("menuitem");
- for (var i=0; i<items.length; i++)
- {
- var item = items[i];
- var prefValue = Options.get(item.value);
- if (prefValue)
- item.setAttribute("checked", "true");
- else
- item.removeAttribute("checked");
- }
-
- return true;
- },
-
- // Custom path filter
- onFilterPanelShowing: function(filterPanel, context)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onFilterPanelShowing ", filterPanel);
-
- // Initialize filter input field.
- filterPanel.init(context.cookies.pathFilter);
-
- // A menu does not take the keyboard focus and keyboard messages are
- // sent to the window. In order to avoid unwante shortcuts execution
- // register a window keypress listeners for the time when the filter
- // popup is displayed and stop propagation of these events.
- // https://developer.mozilla.org/en/XUL/PopupGuide/PopupKeys
- window.addEventListener("keypress", this.onFilterKeyPress, true);
- return true;
- },
-
- onFilterPanelHiding: function(filterPanel, context)
- {
- window.removeEventListener("keypress", this.onFilterKeyPress, true);
- return true;
- },
-
- onFilterKeyPress: function(event)
- {
- // Stop propagation of keypress events when filter popup is displayed.
- event.stopPropagation();
- },
-
- onFilterPanelApply: function(context)
- {
- var parentMenu = Firebug.chrome.$("fcFilterMenuPopup");
- var filterPanel = Firebug.chrome.$("fcCustomPathFilterPanel");
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onApplyPathFilter, filter: " + filterPanel.value,
- filterPanel);
-
- // Use the filter from panel.
- context.cookies.pathFilter = filterPanel.value;
-
- // Refresh cookie list.
- var panel = context.getPanel(panelName);
- panel.refresh();
-
- // Close menu.
- parentMenu.hidePopup();
- },
-
- onViewAll: function(context)
- {
- parent.openDialog("chrome://browser/content/preferences/cookies.xul",
- "_blank", "chrome,resizable=yes", null);
- },
-
- onViewExceptions: function(context)
- {
- var params = {
- blockVisible : true,
- sessionVisible : true,
- allowVisible : true,
- prefilledHost : "",
- permissionType : "cookie",
- windowTitle : Locale.$STR("cookies.ExceptionsTitle"),
- introText : Locale.$STR("cookies.Intro")
- };
-
- parent.openDialog("chrome://browser/content/preferences/permissions.xul",
- "_blank","chrome,resizable=yes", params);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Console Panel Options
-
- /**
- * Extend Console panel's option menu.
- */
- onOptionsMenu: function(context, panel, items)
- {
- if (panel.name != "console")
- return;
-
- var cookies = [
- MenuUtils.optionMenu(context, "cookies.showCookieEvents",
- "cookies.tip.showCookieEvents", Firebug.prefDomain, "cookies.logEvents"),
- ];
-
- // The option is disabled if the panel is disabled.
- if (!this.isEnabled(context))
- cookies[0].disabled = true;
-
- // Append new option at the right position.
- for (var i=0; i<items.length; i++)
- {
- var item = items[i];
- if (item.option == "showStackTrace")
- {
- Arr.arrayInsert(items, i+1, cookies);
- return;
- }
- }
-
- // If "showStackTrace" is not there append at the end.
- Arr.arrayInsert(items, items.length, cookies);
- },
-});
-
-// ********************************************************************************************* //
-// Custom info tab within Net panel
-
-/**
- * @domplate Represents domplate template for cookie body that is displayed if
- * a cookie entry in the cookie list is expanded.
- */
-Firebug.CookieModule.NetInfoBody = domplate(Firebug.Rep,
-/** @lends Firebug.CookieModule.NetInfoBody */
-{
- tag:
- DIV({"class": "netInfoCookiesList"},
- DIV({"class": "netInfoHeadersGroup netInfoCookiesGroup", $collapsed: "$cookiesInfo|hideReceivedCookies"},
- SPAN(Locale.$STR("cookies.netinfo.Received Cookies"))
- ),
- DIV({"class": "netInfoReceivedCookies netInfoCookies"}),
- DIV({"class": "netInfoHeadersGroup netInfoCookiesGroup", $collapsed: "$cookiesInfo|hideSentCookies"},
- SPAN(Locale.$STR("cookies.netinfo.Sent Cookies"))
- ),
- DIV({"class": "netInfoSentCookies netInfoCookies"})
- ),
-
- hideReceivedCookies: function(cookiesInfo)
- {
- return !cookiesInfo.receivedCookies.length;
- },
-
- hideSentCookies: function(cookiesInfo)
- {
- return !cookiesInfo.sentCookies.length;
- },
-
- // NetInfoBody listener
- initTabBody: function(infoBox, file)
- {
- var sentCookiesHeader = this.findHeader(file.requestHeaders, "Cookie");
- var receivedCookiesHeader = this.findHeader(file.responseHeaders, "Set-Cookie");
-
- // Create tab only if there are some cookies.
- if (sentCookiesHeader || receivedCookiesHeader)
- Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "Cookies",
- Locale.$STR("cookies.Panel"));
- },
-
- destroyTabBody: function(infoBox, file)
- {
- },
-
- updateTabBody: function(infoBox, file, context)
- {
- var tab = infoBox.selectedTab;
- if (!tab || tab.dataPresented || !Css.hasClass(tab, "netInfoCookiesTab"))
- return;
-
- tab.dataPresented = true;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.NetInfoBodyListener.updateTabBody",
- [file.requestHeaders, file.responseHeaders]);
-
- var sentCookiesHeader = this.findHeader(file.requestHeaders, "Cookie");
- var receivedCookiesHeader = this.findHeader(file.responseHeaders, "Set-Cookie");
-
- // Parse all received cookies and generate UI.
- var receivedCookies = [];
- var sentCookies = [];
-
- // Parse received cookies.
- if (receivedCookiesHeader) {
- var cookies = receivedCookiesHeader.split("\n");
- for (var i=0; i<cookies.length; i++) {
- var cookie = CookieUtils.parseFromString(cookies[i]);
- if (!cookie.host)
- cookie.host = file.request.URI.host;
- receivedCookies.push(new Cookie(CookieUtils.makeCookieObject(cookie)));
- }
- }
-
- // Parse sent cookies.
- sentCookies = CookieUtils.parseSentCookiesFromString(sentCookiesHeader);
-
- // Create basic UI content
- var tabBody = Dom.getElementByClass(infoBox, "netInfoCookiesText");
- this.tag.replace({cookiesInfo: {
- receivedCookies: receivedCookies,
- sentCookies: sentCookies,
- }}, tabBody);
-
- // Generate UI for received cookies.
- if (receivedCookies.length) {
- CookieReps.CookieTable.render(receivedCookies,
- Dom.getElementByClass(tabBody, "netInfoReceivedCookies"));
- }
-
- // Generate UI for sent cookies.
- if (sentCookies.length) {
- CookieReps.CookieTable.render(sentCookies,
- Dom.getElementByClass(tabBody, "netInfoSentCookies"));
- }
- },
-
- // Helpers
- findHeader: function(headers, name)
- {
- if (!headers)
- return null;
-
- for (var i=0; i<headers.length; i++) {
- if (headers[i].name == name)
- return headers[i].value;
- }
-
- return null;
- }
-});
-
-// ********************************************************************************************* //
-// Permission observer
-
-/**
- * @class Represents an observer for perm-changed event that is dispatched
- * by Firefox is cookie permissions are changed.
- */
-var PermissionObserver = Obj.extend(BaseObserver,
-/** @lends PermissionObserver */
-{
- observe: function(aSubject, aTopic, aData)
- {
- if (aTopic != "perm-changed")
- return;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.observe: " + aTopic + ", " + aData);
-
- var fn = Obj.bind(CookiePermissions.updatePermButton, CookiePermissions);
- TabWatcher.iterateContexts(fn);
- }
-});
-
-// ********************************************************************************************* //
-
-function CookieBreakpointGroup()
-{
- this.breakpoints = [];
-}
-
-CookieBreakpointGroup.prototype = Obj.extend(new Firebug.Breakpoint.BreakpointGroup(),
-{
- name: "cookieBreakpoints",
- title: Locale.$STR("cookies.Cookie Breakpoints"),
-
- addBreakpoint: function(cookie)
- {
- this.breakpoints.push(new Breakpoints.Breakpoint(cookie));
- },
-
- removeBreakpoint: function(cookie)
- {
- var bp = this.findBreakpoint(cookie);
- Arr.remove(this.breakpoints, bp);
- },
-
- matchBreakpoint: function(bp, args)
- {
- var cookie = args[0];
- return (bp.name == cookie.name) &&
- (bp.host == cookie.host) &&
- (bp.path == cookie.path);
- },
-
- // Persistence
- load: function(context)
- {
- var panelState = Persist.getPersistedState(context, panelName);
- if (panelState.breakpoints)
- this.breakpoints = panelState.breakpoints;
- },
-
- store: function(context)
- {
- var panelState = Persist.getPersistedState(context, panelName);
- panelState.breakpoints = this.breakpoints;
- }
-});
-
-// ********************************************************************************************* //
-// Registration Helpers
-
-function registerCookieObserver(observer)
-{
- if (observer.registered)
- return;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.registerCookieObserver");
-
- observerService.addObserver(observer, "cookie-changed", false);
- observerService.addObserver(observer, "cookie-rejected", false);
-
- observer.registered = true;
-
- return observer;
-}
-
-function unregisterCookieObserver(observer)
-{
- if (!observer.registered)
- return;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.unregisterCookieObserver");
-
- observerService.removeObserver(observer, "cookie-changed");
- observerService.removeObserver(observer, "cookie-rejected");
-
- observer.registered = false;
-}
-
-// ********************************************************************************************* //
-// Preference observer
-
-// xxxHonza: is this still needed?
-/**
- * @class Represents an observer for nsPref:changed event dispatched when
- * an user preference is changed (e.g. using about:config)
- */
-var PrefObserver = Obj.extend(BaseObserver,
-/** @lends PrefObserver */
-{
- observe: function(aSubject, aTopic, aData)
- {
- if (aTopic != "nsPref:changed")
- return;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.observe: " + aTopic + ", " + aData);
-
- if (aData == networkPrefDomain + "." + cookieBehaviorPref ||
- aData == networkPrefDomain + "." + cookieLifeTimePref) {
- var fn = CookiePermissions.updatePermButton;
- TabWatcher.iterateContexts(fn);
- }
- }
-});
-
-// ********************************************************************************************* //
-// Used till the real context isn't available (in initContext), bug if Firebug)
-
-function CookieTempObserver(tempContext) {
- this.tempContext = tempContext;
-}
-
-CookieTempObserver.prototype = Obj.extend(BaseObserver, {
- observe: function(subject, topic, data) {
- this.tempContext.appendCookieEvent(subject, topic, data);
- }
-});
-
-// ********************************************************************************************* //
-// Array Helpers
-
-function cloneMap(map)
-{
- var newMap = [];
- for (var item in map)
- newMap[item] = map[item];
-
- return newMap;
-}
-
-// ********************************************************************************************* //
-// Firebug Registration
-
-// Expose to XUL scope
-Firebug.CookieModule.Perm = CookiePermissions;
-
-// Expose for tests
-Firebug.CookieModule.CookieReps = CookieReps;
-
-Firebug.registerActivableModule(Firebug.CookieModule);
-
-return Firebug.CookieModule;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/xpcom",
+ "firebug/lib/object",
+ "firebug/lib/locale",
+ "firebug/lib/domplate",
+ "firebug/lib/dom",
+ "firebug/lib/options",
+ "firebug/lib/persist",
+ "firebug/lib/string",
+ "firebug/lib/http",
+ "firebug/lib/css",
+ "firebug/lib/events",
+ "firebug/lib/array",
+ "firebug/cookies/baseObserver",
+ "firebug/cookies/menuUtils",
+ "firebug/cookies/cookieReps",
+ "firebug/cookies/cookieUtils",
+ "firebug/cookies/cookie",
+ "firebug/cookies/breakpoints",
+ "firebug/cookies/cookieObserver",
+ "firebug/cookies/cookieClipboard",
+ "firebug/chrome/tabWatcher",
+ "firebug/cookies/httpObserver",
+ "firebug/lib/system",
+ "firebug/cookies/cookie",
+ "firebug/cookies/cookiePermissions",
+ "firebug/cookies/editCookie",
+ "firebug/trace/traceListener",
+ "firebug/trace/traceModule",
+ "firebug/chrome/firefox",
+ "firebug/chrome/window",
+ "firebug/lib/url",
+ "firebug/cookies/legacy",
+],
+function(Xpcom, Obj, Locale, Domplate, Dom, Options, Persist, Str, Http, Css, Events, Arr,
+ BaseObserver, MenuUtils, CookieReps, CookieUtils, Cookier, Breakpoints, CookieObserver,
+ CookieClipboard, TabWatcher, HttpObserver, System, Cookie, CookiePermissions, EditCookie,
+ TraceListener, TraceModule, Firefox, Win, Url) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// Firefox Preferences
+const networkPrefDomain = "network.cookie";
+const cookieBehaviorPref = "cookieBehavior";
+const cookieLifeTimePref = "lifetimePolicy";
+
+// Cookies preferences
+const clearWhenDeny = "cookies.clearWhenDeny";
+const defaultExpireTime = "cookies.defaultExpireTime";
+const removeConfirmation = "cookies.removeConfirmation";
+const removeSessionConfirmation = "cookies.removeSessionConfirmation";
+
+// Services
+const cookieManager = Xpcom.CCSV("@mozilla.org/cookiemanager;1", "nsICookieManager2");
+const observerService = Xpcom.CCSV("@mozilla.org/observer-service;1", "nsIObserverService");
+const prompts = Xpcom.CCSV("@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService");
+
+// Preferences
+const PrefService = Cc["@mozilla.org/preferences-service;1"];
+const prefService = PrefService.getService(Ci.nsIPrefService);
+const prefs = PrefService.getService(Ci.nsIPrefBranch);
+
+// Cookie panel ID.
+const panelName = "cookies";
+
+// Helper array for prematurely created contexts
+var contexts = new Array();
+
+// Register stylesheet in Firebug. This method is introduced in Firebug 1.6
+Firebug.registerStylesheet("chrome://firebug/skin/cookies/cookies.css");
+
+// ********************************************************************************************* //
+// Module Implementation
+
+/**
+ * @module This object represents a <i>module</i> for Cookies panel.
+ * The module supports activation (enable/disable of the Cookies panel).
+ * This functionality has been introduced in Firebug 1.2 and makes possible
+ * to control activity of Firebug panels in order to avoid (performance) expensive
+ * features.
+ */
+Firebug.CookieModule = Obj.extend(Firebug.ActivableModule,
+/** @lends Firebug.CookieModule */
+{
+ contexts: contexts,
+
+ // Set to true if all hooks for monitoring cookies are registered; otherwise false.
+ observersRegistered: false,
+
+ /**
+ * Called by Firebug when Firefox window is opened.
+ *
+ * @param {String} prefDomain Preference domain (e.g. extensions.firebug)
+ * @param {Array} prefNames Default Firebug preference array.
+ */
+ initialize: function(prefDomain, prefNames)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.CookieModule.initialize; ");
+
+ this.traceListener = new TraceListener("cookies.", "DBG_COOKIES", true,
+ "chrome://firebug/skin/cookies/trace.css");
+
+ TraceModule.addListener(this.traceListener);
+
+ this.panelName = panelName;
+ this.description = Locale.$STR("cookies.modulemanager.description");
+
+ Firebug.ActivableModule.initialize.apply(this, arguments);
+
+ var permTooltip = Firebug.chrome.$("fcPermTooltip");
+ permTooltip.fcEnabled = true;
+
+ // All the necessary observers are registered by default. Even if the
+ // panel can be disabled (entirely or for a specific host) there is
+ // no simple way to find out this now, as the context isn't available.
+ // All will be unregistered again in the initContext (if necessary).
+ // There is no big overhead, the initContext is called just after the
+ // first document request.
+ //this.registerObservers();
+
+ // Register listener for NetInfoBody (if the API is available) so,
+ // a new tab (Cookies) can be appended into the Net panel request info.
+ var netInfoBody = Firebug.NetMonitor.NetInfoBody;
+ if ("addListener" in netInfoBody)
+ netInfoBody.addListener(this.NetInfoBody);
+
+ // Register listener within the Console panel. If document.cookie property
+ // is logged, formatted output is used.
+ //Firebug.Console.addListener(this.ConsoleListener);
+
+ // Register debugger listener for providing cookie-breakpoints.
+ //Firebug.Debugger.addListener(this.DebuggerListener);
+
+ // Dynamically overlay Break on Next button in FB 1.5.1
+ // There is a small decoration coming from each panel.
+ var bonStack = Firebug.chrome.$("fbBreakOnNextButtonStack");
+ if (bonStack)
+ {
+ var image = document.createElement("image");
+ image.setAttribute("id", "fbBreakOnImageCookies");
+ image.setAttribute("class", "fbBreakOnImage");
+ image.setAttribute("src", "chrome://firebug/skin/cookies/breakOnCookie.png");
+ bonStack.appendChild(image);
+ }
+
+ Firebug.registerUIListener(this);
+ },
+
+ initializeUI: function()
+ {
+ Firebug.ActivableModule.initializeUI.apply(this, arguments);
+
+ // Append the styleesheet to a new console popup panel introduced in Firebug 1.6
+ this.addStyleSheet(null);
+
+ Dom.collapse(Firebug.chrome.$("fbConsoleFilter-cookies"), false);
+ },
+
+ /**
+ * Peforms clean up when Firebug is destroyed.
+ * Called by the framework when Firebug is closed for an existing Firefox window.
+ */
+ shutdown: function()
+ {
+ this.unregisterObservers();
+
+ // Support for trace-console customization in Firebug 1.3
+ TraceModule.removeListener(this.traceListener);
+
+ var netInfoBody = Firebug.NetMonitor.NetInfoBody;
+ if ("removeListener" in netInfoBody)
+ netInfoBody.removeListener(this.NetInfoBody);
+
+ //Firebug.Console.removeListener(this.ConsoleListener);
+ //Firebug.Debugger.removeListener(this.DebuggerListener);
+
+ Firebug.unregisterUIListener(this);
+ },
+
+ registerObservers: function()
+ {
+ if (this.observersRegistered)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.cookieModule.registerObservers; Observers ALREADY registered");
+ return;
+ }
+
+ observerService.addObserver(HttpObserver, "http-on-modify-request", false);
+ observerService.addObserver(HttpObserver, "http-on-examine-response", false);
+ observerService.addObserver(PermissionObserver, "perm-changed", false);
+ registerCookieObserver(CookieObserver);
+ prefs.addObserver(networkPrefDomain, PrefObserver, false);
+
+ this.observersRegistered = true;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.cookieModule.registerObservers;");
+ },
+
+ unregisterObservers: function(context)
+ {
+ if (!this.observersRegistered)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.cookieModule.registerObservers; " +
+ "Observers ALREADY un-registered");
+ return;
+ }
+
+ observerService.removeObserver(HttpObserver, "http-on-modify-request");
+ observerService.removeObserver(HttpObserver, "http-on-examine-response");
+ observerService.removeObserver(PermissionObserver, "perm-changed");
+ unregisterCookieObserver(CookieObserver);
+ prefs.removeObserver(networkPrefDomain, PrefObserver);
+
+ this.observersRegistered = false;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.cookieModule.unregisterObservers;");
+ },
+
+ // Helper context
+ initTempContext: function(tempContext)
+ {
+ tempContext.cookieTempObserver = registerCookieObserver(new CookieTempObserver(tempContext));
+
+ // Create sub-context for cookies.
+ tempContext.cookies = {};
+ tempContext.cookies.activeHosts = [];
+ },
+
+ destroyTempContext: function(tempContext, context)
+ {
+ if (!tempContext)
+ return;
+
+ if (FBTrace.DBG_COOKIES)
+ {
+ FBTrace.sysout("cookies.Copy " + tempContext.events.length +
+ " events to real-context.");
+
+ var message = "cookies.Copy active hosts (";
+ for (var host in tempContext.cookies.activeHosts)
+ message += host + ", ";
+ message = message.substring(0, message.length - 2);
+ message += ") from temp context into the real context.";
+ FBTrace.sysout(message, tempContext);
+ }
+
+ // Copy all active hosts on the page. In case of redirects or embedded IFrames, there
+ // can be more hosts (domains) involved on the page. Cookies must be displayed for
+ // all of them.
+ context.cookies.activeHosts = cloneMap(tempContext.cookies.activeHosts);
+
+ // Clone all active (received) cookies on the page.
+ // This is probably not necessary, as the first cookie is received
+ // in http-on-examine-response and at that time the real context
+ // is already created.
+ context.cookies.activeCookies = cloneMap(tempContext.cookies.activeCookies);
+
+ // Fire all lost cookie events (those from the temp context).
+ var events = tempContext.events;
+ for (var i=0; i<events.length; i++) {
+ var e = events[i];
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.Fire fake cookie event: " + e.topic + ", " + e.data + "\n");
+ CookieObserver.observe(e.subject, e.topic, e.data);
+ }
+
+ delete tempContext.cookies.activeHosts;
+ delete tempContext.cookies.activeCookies;
+ delete tempContext.cookies;
+
+ // Unregister temporary cookie observer.
+ tempContext.cookieTempObserver = unregisterCookieObserver(tempContext.cookieTempObserver);
+ },
+
+ /**
+ * Called by the framework when a context is created for Firefox tab.
+ *
+ * @param {Firebug.TabContext} Context for the current Firefox tab.
+ */
+ initContext: function(context)
+ {
+ var tabId = Firebug.getTabIdForWindow(context.window);
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.INIT real context for: " + tabId + ", " +
+ context.getName());
+
+ // Create sub-context for cookies.
+ // xxxHonza: the cookies object exists within the context even if
+ // the panel is disabled.
+ context.cookies = {};
+ context.cookies.activeHosts = [];
+
+ // Initialize custom path filter for this context
+ context.cookies.pathFilter = "/";
+
+ // List of breakpoints.
+ context.cookies.breakpoints = new CookieBreakpointGroup();
+ context.cookies.breakpoints.load(context);
+
+ // The temp context isn't created e.g. for empty tabs, chrome pages.
+ var tempContext = contexts[tabId];
+ if (tempContext)
+ {
+ this.destroyTempContext(tempContext, context);
+ delete contexts[tabId];
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.DESTROY temporary context, tabId: " + tempContext.tabId);
+ }
+
+ // The base class must be called after the context for Cookies panel is
+ // properly initialized. The panel can be created inside this function
+ // (within Firebug.ActivableModule.enablePanel), which can result in
+ // calling CookiePanel.initialize method. This method directly calls
+ // CookiePanel.refresh, which needs the context.cookies object ready.
+ Firebug.ActivableModule.initContext.apply(this, arguments);
+
+ // Unregister all observers if the panel is disabled.
+ if (!this.isEnabled(context))
+ this.unregisterObservers(context);
+ },
+
+ destroyContext: function(context)
+ {
+ Firebug.ActivableModule.destroyContext.apply(this, arguments);
+
+ if (!context.cookies)
+ {
+ if (FBTrace.DBG_COOKIES)
+ {
+ var tabId = Firebug.getTabIdForWindow(context.window);
+ FBTrace.sysout("cookies.DESTROY context ERROR: No context.cookies available, tabId: " +
+ tabId + ", " + context.getName());
+ }
+ return;
+ }
+
+ context.cookies.breakpoints.store(context);
+
+ for (var p in context.cookies)
+ delete context.cookies[p];
+
+ delete context.cookies;
+
+ if (FBTrace.DBG_COOKIES)
+ {
+ var tabId = Firebug.getTabIdForWindow(context.window);
+ FBTrace.sysout("cookies.DESTROY context, tabId: " + tabId +
+ ", " + context.getName());
+ }
+ },
+
+ addStyleSheet: function(panel)
+ {
+ // Use registration function instead (introduced in Firebug 1.6)
+ if (Firebug.registerStylesheet)
+ return;
+
+ function privateAppend(doc)
+ {
+ // Make sure the stylesheet isn't appended twice.
+ if (!Firebug.chrome.$("fcStyles", doc))
+ {
+ var styleSheet = createStyleSheet(doc, "chrome://firebug/skin/cookies/cookies.css");
+ styleSheet.setAttribute("id", "fcStyles");
+ addStyleSheet(doc, styleSheet);
+ }
+ }
+
+ if (panel)
+ privateAppend(panel.document);
+
+ // Firebug 1.6 introduces another panel for console preview on other panels
+ // The allows to use command line in other panels too.
+ var preview = Firebug.chrome.$("fbCommandPreviewBrowser");
+ if (preview)
+ privateAppend(preview.contentDocument);
+ },
+
+ updateOption: function(name, value)
+ {
+ if (name == "consoleFilterTypes")
+ {
+ this.updateConsoleFilter();
+ }
+ },
+
+ updateConsoleFilter: function()
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.updateConsoleFilter;");
+
+ if (!Firebug.currentContext)
+ return;
+
+ // The panel can be disabled.
+ var panel = Firebug.currentContext.getPanel("console");
+ if (!panel)
+ return;
+
+ var panelNode = panel.panelNode;
+ var className = "hideType-cookies";
+ var filterTypes = Firebug.consoleFilterTypes;
+
+ Css.setClass(panelNode, className);
+
+ var positiveFilters = ["all", "cookies"];
+ for (var i=0; i<positiveFilters.length; i++)
+ {
+ if (filterTypes.indexOf(positiveFilters[i]) >= 0)
+ {
+ Css.removeClass(panelNode, className);
+ break;
+ }
+ }
+ },
+
+ showPanel: function(browser, panel)
+ {
+ // Update panel's toolbar
+ var isCookiePanel = panel && panel.name == panelName;
+
+ // Firebug 1.4, chrome changes.
+ var chrome = browser.chrome ? browser.chrome : Firebug.chrome;
+
+ var cookieButtons = Firebug.chrome.$("fbCookieButtons");
+ Dom.collapse(cookieButtons, !isCookiePanel);
+
+ // The console panel can be displayed sooner than the Cookies
+ // panel, in such a case the Stylesheet must be ready as
+ // there are cookies logs in the console.
+ // Cookie table is also used within the net panel.
+ if (panel && (panel.name == "console" || panel.name == "net"))
+ this.addStyleSheet(panel);
+ },
+
+ watchWindow: function(context, win)
+ {
+ context.window.addEventListener("beforeunload", this.onBeforeUnload, false);
+ },
+
+ onBeforeUnload: function(event)
+ {
+ var view = event.target.defaultView;
+ var context = TabWatcher.getContextByWindow(view);
+ if (!context)
+ return;
+
+ var panel = context.getPanel(panelName, true);
+ if (panel)
+ panel.clear();
+
+ if (FBTrace.DBG_COOKIES || FBTrace.DBG_ERRORS)
+ {
+ var tabId = Firebug.getTabIdForWindow(view);
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.On before unload tab: " + tabId);
+
+ if (contexts[tabId])
+ {
+ delete contexts[tabId];
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.CookieModule.onBeforeUnload; There is a temp context leak!");
+ }
+ }
+ },
+
+ /**
+ * Creates a new cookie in the browser.
+ * This method is used by {@link EditCookie} dialog and also when a cookie is
+ * pasted from the clipboard.
+ *
+ * @param {Cookie} Cookie object with appropriate properties. See {@link Cookie} object.
+ */
+ createCookie: function(cookie)
+ {
+ try
+ {
+ var uri = cookie.getURI();
+ if (!uri)
+ return;
+
+ var c = cookie.cookie;
+
+ // Fix for issue 34. The domain must be included in the cookieString if it
+ // starts with "." But don't include it otherwise, since the "." would be
+ // appended by the service.
+ var host = cookie.cookie.host;
+ var cookieString = cookie.toString(!(host.charAt(0) == "."));
+
+ // Fix for issue 37: httpOnly cookies, and issue 47: Cannot change the HttpOnly flag
+ // HttpOnly cookies can't be changed by setCookie string
+ // See also: https://bugzilla.mozilla.org/show_bug.cgi?id=178993
+ //cookieService.setCookieString(uri, null, cookieString, null);
+
+ // Doesn't work in FF4 (issue 95)
+ //cookieService.setCookieStringFromHttp(uri, uri, null, cookieString,
+ // c.expires, null);
+
+ //xxxHonza: in what cases the cookie should be removed?
+ //var cm = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager);
+ //cm.remove(c.host, c.name, c.path, false);
+
+ var isSession = CookieUtils.isSessionCookie(c);
+ var cm2 = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager2);
+ cm2.add(c.host, c.path, c.name, c.rawValue, c.isSecure, c.isHttpOnly, isSession,
+ c.expires || Math.round((new Date()).getTime() / 1000 + 9999999999));
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.createCookie: set cookie string: " + cookieString, cookie);
+
+ // xxxHonza: this shouldn't be necessary, but sometimes the CookieObserver
+ // is not triggered.
+ TabWatcher.iterateContexts(function(context)
+ {
+ context.getPanel(panelName).refresh();
+ });
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("cookies.createCookie: set cookie string ERROR " +
+ cookieString, e);
+ }
+ },
+
+ removeCookie: function(host, name, path)
+ {
+ cookieManager.remove(host, name, path, false);
+
+ // xxxHonza: this shouldn't be necessary, but sometimes the CookieObserver
+ // is not triggered.
+ TabWatcher.iterateContexts(function(context)
+ {
+ context.getPanel(panelName).refresh();
+ });
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Support for ActivableModule 1.6
+
+ /**
+ * It's just here to exists (calling base class only)
+ */
+ isEnabled: function(context)
+ {
+ return Firebug.ActivableModule.isEnabled.apply(this, arguments);
+ },
+
+ /**
+ * Called when an observer (e.g. panel) is added/removed into/from the model.
+ * This is the moment when the model needs to decide whether to activate.
+ */
+ onObserverChange: function(observer)
+ {
+ if (this.hasObservers())
+ TabWatcher.iterateContexts(Firebug.CookieModule.registerObservers);
+ else
+ TabWatcher.iterateContexts(Firebug.CookieModule.unregisterObservers);
+
+ this.setStatus();
+ },
+
+ onSuspendFirebug: function()
+ {
+ TabWatcher.iterateContexts(Firebug.CookieModule.unregisterObservers);
+
+ this.setStatus();
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onSuspendFirebug");
+ },
+
+ onResumeFirebug: function(context)
+ {
+ if (Firebug.CookieModule.isAlwaysEnabled())
+ TabWatcher.iterateContexts(Firebug.CookieModule.registerObservers);
+
+ this.setStatus();
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onResumeFirebug");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ setStatus: function()
+ {
+ var fbStatus = Firefox.getElementById("firebugStatus");
+ if (fbStatus)
+ {
+ if (this.hasObservers())
+ fbStatus.setAttribute(panelName, "on");
+ else
+ fbStatus.removeAttribute(panelName);
+ }
+ else
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("cookies.setStatus ERROR no firebugStatus element");
+ }
+ },
+
+ getMenuLabel: function(option, location)
+ {
+ var host = getURIHost(location);
+
+ // In case of local files or system pages use this labels instead of host.
+ // xxxHonza: the panel should be automatically disabled for local files
+ // and system pages as there are no cookies associated.
+ // These options shouldn't be available at all.
+ if (isSystemURL(location.spec))
+ host = Locale.$STR("cookies.SystemPages");
+ else if (!getURIHost(location))
+ host = Locale.$STR("cookies.LocalFiles");
+
+ // Translate these two options in panel activable menu from cookies.properties
+ switch (option)
+ {
+ case "disable-site":
+ return Locale.$STRF("cookies.HostDisable", [host]);
+ case "enable-site":
+ return Locale.$STRF("cookies.HostEnable", [host]);
+ }
+
+ return Firebug.ActivableModule.getMenuLabel.apply(this, arguments);
+ },
+
+ // xxxHonza: This method is overriden just to provide translated strings from
+ // cookies.properties file.
+ openPermissions: function(event, context)
+ {
+ Events.cancelEvent(event);
+
+ var browserURI = Firebug.chrome.getBrowserURI(context);
+ var host = this.getHostForURI(browserURI);
+
+ var params = {
+ permissionType: this.getPrefDomain(),
+ windowTitle: Locale.$STR(this.panelName + ".Permissions"),
+ introText: Locale.$STR(this.panelName + ".PermissionsIntro"),
+ blockVisible: true,
+ sessionVisible: false,
+ allowVisible: true,
+ prefilledHost: host,
+ };
+
+ openWindow("Browser:Permissions", "chrome://browser/content/preferences/permissions.xul",
+ "", params);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Remove Cookies
+
+ onRemoveAllShowTooltip: function(tooltip, context)
+ {
+ tooltip.label = Locale.$STR("cookies.removeall.tooltip");
+ return true;
+ },
+
+ onRemoveAllSessionShowTooltip: function(tooltip, context)
+ {
+ tooltip.label = Locale.$STR("cookies.removeallsession.tooltip");
+ return true;
+ },
+
+ /**
+ * Removes cookies defined for a website. This method removes all cookies for
+ * the current page (including cookies from embedded iframes). The method
+ * doesn't check any UI filters.
+ *
+ * @param {Object} context context, in which the cookies are defined
+ * @param {Object} [filter] filter to define, which cookies should be removed
+ * (format: {session: true/false, host: string})
+ */
+ removeCookies: function(context, filter)
+ {
+ var panel = context.getPanel(panelName, true);
+ if (!panel)
+ return;
+
+ var hosts = context.cookies.activeHosts;
+
+ // If Firebug has been opened after page load, the activeHosts map
+ // is empty since it's being initialized during the page load time
+ // (in HttpObserver.onModifiedRequest).
+ // Use the current window and iframes in such case (see issue 6469).
+ if (!Obj.hasProperties(hosts))
+ {
+ hosts = {};
+
+ Win.iterateWindows(context.window, function(win)
+ {
+ var host = Url.getURIHost(win.location);
+ hosts[host] = true;
+ });
+ }
+
+ for (var host in hosts)
+ {
+ var cookieEnumerator = cookieManager.getCookiesFromHost(host);
+ while (cookieEnumerator.hasMoreElements())
+ {
+ var cookie = cookieEnumerator.getNext().QueryInterface(Ci.nsICookie2);
+ this.removeCookieHelper(cookie, filter);
+ }
+ }
+ },
+
+ /**
+ * Removes displayed cookies in the Cookies panel.
+ *
+ * @param {Object} context context, in which the cookies are defined
+ * @param {Object} [filter] filter to define, which cookies should be removed
+ * (format: {session: true/false, host: string})
+ */
+ removeDisplayedCookies: function(context, filter)
+ {
+ var panel = context.getPanel("cookies", false);
+ if (!panel)
+ return;
+
+ // Enumerate all displayed cookies and remove them step by step.
+ var self = this;
+ panel.enumerateCookies(function(cookie)
+ {
+ self.removeCookieHelper(cookie.cookie, filter);
+ });
+ },
+
+ removeCookieHelper: function(cookie, filter)
+ {
+ // Remove the cookie only if the filter says so.
+ if (!filter || ((!filter.session || cookie.isSession) &&
+ (!filter.host || filter.host == cookie.host)))
+ {
+ cookieManager.remove(cookie.host, cookie.name, cookie.path, false);
+ }
+ },
+
+ onRemoveAll: function(context)
+ {
+ if (Options.get(removeConfirmation))
+ {
+ var check = {value: false};
+ var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_YES +
+ prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_NO;
+
+ if (!prompts.confirmEx(context.chrome.window, Locale.$STR("Firebug"),
+ Locale.$STR("cookies.confirm.removeall"), flags, "", "", "",
+ Locale.$STR("Do_not_show_this_message_again"), check) == 0)
+ {
+ return;
+ }
+
+ // Update 'Remove Cookies' confirmation option according to the value
+ // of the dialog's "do not show again" checkbox.
+ Options.set(removeConfirmation, !check.value);
+ }
+
+ Firebug.CookieModule.removeDisplayedCookies(context);
+ },
+
+ onRemoveAllSession: function(context)
+ {
+ if (Options.get(removeSessionConfirmation))
+ {
+ var check = {value: false};
+ var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_YES +
+ prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_NO;
+
+ if (!prompts.confirmEx(context.chrome.window, Locale.$STR("Firebug"),
+ Locale.$STR("cookies.confirm.removeallsession"), flags, "", "", "",
+ Locale.$STR("Do_not_show_this_message_again"), check) == 0)
+ {
+ return;
+ }
+
+ // Update 'Remove Session Cookies' confirmation option according to the value
+ // of the dialog's "do not show again" checkbox.
+ Options.set(removeSessionConfirmation, !check.value);
+ }
+
+ Firebug.CookieModule.removeDisplayedCookies(context, {session: true});
+ },
+
+ onRemoveAllFromHost: function(context, host)
+ {
+ if (Options.get(removeConfirmation))
+ {
+ var check = {value: false};
+ var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_YES +
+ prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_NO;
+
+ if (!prompts.confirmEx(context.chrome.window, Locale.$STR("Firebug"),
+ Locale.$STRF("cookies.confirm.Remove_All_From_Host", [host]), flags, "", "", "",
+ Locale.$STR("Do_not_show_this_message_again"), check) == 0)
+ {
+ return;
+ }
+
+ // Update 'Remove Cookies' confirmation option according to the value
+ // of the dialog's "do not show again" checkbox.
+ Options.set(removeConfirmation, !check.value);
+ }
+
+ Firebug.CookieModule.removeCookies(context, {host: host});
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Create Cookies
+
+ onCreateCookieShowTooltip: function(tooltip, context)
+ {
+ var host = context.window.location.host;
+ tooltip.label = Locale.$STRF("cookies.createcookie.tooltip", [host]);
+ return true;
+ },
+
+ onCreateCookie: function(context)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onCreateCookie");
+
+ // There is an excepion if the window is closed or not initialized (empty tab)
+ var host;
+ try
+ {
+ host = context.window.location.host;
+ }
+ catch (err)
+ {
+ alert(Locale.$STR("cookies.message.There_is_no_active_page"));
+ return;
+ }
+
+ // Name and domain.
+ var cookie = new Object();
+ cookie.name = this.getDefaultCookieName(context);
+ cookie.host = host;
+
+ // The edit dialog uses raw value.
+ cookie.rawValue = Locale.$STR("cookies.createcookie.defaultvalue");
+
+ // Default path
+ var path = context.window.location.pathname || "/";
+ cookie.path = path.substr(0, (path.lastIndexOf("/") || 1));
+
+ // Set defaul expiration time.
+ cookie.expires = this.getDefaultCookieExpireTime();
+
+ var params = {
+ cookie: cookie,
+ action: "create",
+ window: context.window,
+ EditCookie: EditCookie,
+ Firebug: Firebug,
+ FBTrace: FBTrace,
+ };
+
+ var parent = context.chrome.window;
+ parent.openDialog("chrome://firebug/content/cookies/editCookie.xul",
+ "_blank", "chrome,centerscreen,resizable=yes,modal=yes",
+ params);
+ },
+
+ getDefaultCookieName: function(context, defaultName)
+ {
+ var counter = 0;
+ var cookieDefaultName = defaultName || "Cookie";
+ var cookieName = cookieDefaultName;
+ var exists = false;
+ var panel = context.getPanel(panelName);
+
+ do
+ {
+ exists = false;
+
+ var row = Dom.getElementByClass(panel.panelNode, "cookieRow");
+ while (row)
+ {
+ var rep = row.repObject;
+
+ // If the cookie is expanded, there is a row without the repObject
+ if (rep && rep.cookie.name == cookieName)
+ {
+ counter++;
+ exists = true;
+ cookieName = cookieDefaultName + "-" + counter;
+ break;
+ }
+ row = row.nextSibling;
+ }
+ } while (exists)
+
+ return cookieName;
+ },
+
+ getDefaultCookieExpireTime: function()
+ {
+ // Get default expire time interval (in seconds) and add it to the
+ // current time.
+ var defaultInterval = Options.get(defaultExpireTime);
+ var now = new Date();
+ now.setTime(now.getTime() + (defaultInterval * 1000));
+
+ // Return final expiration time.
+ return (now.getTime() / 1000);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /**
+ * Exports all existing cookies in the browser into a cookies.txt file.
+ * This action is available in the Cookies panel toolbar.
+ */
+ onExportAll: function(context)
+ {
+ try
+ {
+ var fp = Xpcom.CCIN("@mozilla.org/filepicker;1", "nsIFilePicker");
+ fp.init(window, null, Ci.nsIFilePicker.modeSave);
+ fp.appendFilters(Ci.nsIFilePicker.filterAll | Ci.nsIFilePicker.filterText);
+ fp.filterIndex = 1;
+ fp.defaultString = "cookies.txt";
+
+ var rv = fp.show();
+ if (rv == Ci.nsIFilePicker.returnOK || rv == Ci.nsIFilePicker.returnReplace)
+ {
+ var foStream = Xpcom.CCIN("@mozilla.org/network/file-output-stream;1", "nsIFileOutputStream");
+ foStream.init(fp.file, 0x02 | 0x08 | 0x20, 0666, 0); // write, create, truncate
+
+ var e = cookieManager.enumerator;
+ while(e.hasMoreElements())
+ {
+ var cookie = e.getNext();
+ cookie = cookie.QueryInterface(Ci.nsICookie2);
+ var cookieWrapper = new Cookie(CookieUtils.makeCookieObject(cookie));
+ var cookieInfo = cookieWrapper.toText();
+ foStream.write(cookieInfo, cookieInfo.length);
+ }
+
+ foStream.close();
+ }
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onExportAll EXCEPTION", err);
+ }
+ },
+
+ onExportForSiteShowTooltip: function(tooltip, context)
+ {
+ var host = context.window.location.host;
+ tooltip.label = Locale.$STRF("cookies.export.Export_For_Site_Tooltip", [host]);
+ return true;
+ },
+
+ /**
+ * Exports cookies for the current site into a cookies.txt file
+ * This action is available in the Cookies panel toolbar.
+ */
+ onExportForSite: function(context)
+ {
+ try
+ {
+ var fp = Xpcom.CCIN("@mozilla.org/filepicker;1", "nsIFilePicker");
+ fp.init(window, null, Ci.nsIFilePicker.modeSave);
+ fp.appendFilters(Ci.nsIFilePicker.filterAll | Ci.nsIFilePicker.filterText);
+ fp.filterIndex = 1;
+ fp.defaultString = "cookies.txt";
+
+ var rv = fp.show();
+ if (rv == Ci.nsIFilePicker.returnOK || rv == Ci.nsIFilePicker.returnReplace)
+ {
+ var foStream = Xpcom.CCIN("@mozilla.org/network/file-output-stream;1",
+ "nsIFileOutputStream");
+ foStream.init(fp.file, 0x02 | 0x08 | 0x20, 0666, 0); // write, create, truncate
+
+ var panel = context.getPanel(panelName, true);
+ var tbody = Dom.getElementByClass(panel.panelNode, "cookieTable").firstChild;
+ for (var row = tbody.firstChild; row; row = row.nextSibling)
+ {
+ if (Css.hasClass(row, "cookieRow") && row.repObject)
+ {
+ var cookieInfo = row.repObject.toText();
+ foStream.write(cookieInfo, cookieInfo.length);
+ }
+ }
+
+ foStream.close();
+ }
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onExportForSite EXCEPTION", err);
+ }
+ },
+
+ onFilter: function(context, pref)
+ {
+ var value = Options.get(pref);
+ Options.set(pref, !value);
+
+ TabWatcher.iterateContexts(function(context)
+ {
+ var panel = context.getPanel(panelName, true);
+ if (panel)
+ panel.refresh();
+ });
+ },
+
+ onFilterPopupShowing: function(menu)
+ {
+ var items = menu.getElementsByTagName("menuitem");
+ for (var i=0; i<items.length; i++)
+ {
+ var item = items[i];
+ var prefValue = Options.get(item.value);
+ if (prefValue)
+ item.setAttribute("checked", "true");
+ else
+ item.removeAttribute("checked");
+ }
+
+ return true;
+ },
+
+ // Custom path filter
+ onFilterPanelShowing: function(filterPanel, context)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onFilterPanelShowing ", filterPanel);
+
+ // Initialize filter input field.
+ filterPanel.init(context.cookies.pathFilter);
+
+ // A menu does not take the keyboard focus and keyboard messages are
+ // sent to the window. In order to avoid unwante shortcuts execution
+ // register a window keypress listeners for the time when the filter
+ // popup is displayed and stop propagation of these events.
+ // https://developer.mozilla.org/en/XUL/PopupGuide/PopupKeys
+ window.addEventListener("keypress", this.onFilterKeyPress, true);
+ return true;
+ },
+
+ onFilterPanelHiding: function(filterPanel, context)
+ {
+ window.removeEventListener("keypress", this.onFilterKeyPress, true);
+ return true;
+ },
+
+ onFilterKeyPress: function(event)
+ {
+ // Stop propagation of keypress events when filter popup is displayed.
+ event.stopPropagation();
+ },
+
+ onFilterPanelApply: function(context)
+ {
+ var parentMenu = Firebug.chrome.$("fcFilterMenuPopup");
+ var filterPanel = Firebug.chrome.$("fcCustomPathFilterPanel");
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onApplyPathFilter, filter: " + filterPanel.value,
+ filterPanel);
+
+ // Use the filter from panel.
+ context.cookies.pathFilter = filterPanel.value;
+
+ // Refresh cookie list.
+ var panel = context.getPanel(panelName);
+ panel.refresh();
+
+ // Close menu.
+ parentMenu.hidePopup();
+ },
+
+ onViewAll: function(context)
+ {
+ parent.openDialog("chrome://browser/content/preferences/cookies.xul",
+ "_blank", "chrome,resizable=yes", null);
+ },
+
+ onViewExceptions: function(context)
+ {
+ var params = {
+ blockVisible : true,
+ sessionVisible : true,
+ allowVisible : true,
+ prefilledHost : "",
+ permissionType : "cookie",
+ windowTitle : Locale.$STR("cookies.ExceptionsTitle"),
+ introText : Locale.$STR("cookies.Intro")
+ };
+
+ parent.openDialog("chrome://browser/content/preferences/permissions.xul",
+ "_blank","chrome,resizable=yes", params);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Console Panel Options
+
+ /**
+ * Extend Console panel's option menu.
+ */
+ onOptionsMenu: function(context, panel, items)
+ {
+ if (panel.name != "console")
+ return;
+
+ var cookies = [
+ MenuUtils.optionMenu(context, "cookies.showCookieEvents",
+ "cookies.tip.showCookieEvents", Firebug.prefDomain, "cookies.logEvents"),
+ ];
+
+ // The option is disabled if the panel is disabled.
+ if (!this.isEnabled(context))
+ cookies[0].disabled = true;
+
+ // Append new option at the right position.
+ for (var i=0; i<items.length; i++)
+ {
+ var item = items[i];
+ if (item.option == "showStackTrace")
+ {
+ Arr.arrayInsert(items, i+1, cookies);
+ return;
+ }
+ }
+
+ // If "showStackTrace" is not there append at the end.
+ Arr.arrayInsert(items, items.length, cookies);
+ },
+});
+
+// ********************************************************************************************* //
+// Custom info tab within Net panel
+
+/**
+ * @domplate Represents domplate template for cookie body that is displayed if
+ * a cookie entry in the cookie list is expanded.
+ */
+Firebug.CookieModule.NetInfoBody = domplate(Firebug.Rep,
+/** @lends Firebug.CookieModule.NetInfoBody */
+{
+ tag:
+ DIV({"class": "netInfoCookiesList"},
+ DIV({"class": "netInfoHeadersGroup netInfoCookiesGroup", $collapsed: "$cookiesInfo|hideReceivedCookies"},
+ SPAN(Locale.$STR("cookies.netinfo.Received Cookies"))
+ ),
+ DIV({"class": "netInfoReceivedCookies netInfoCookies"}),
+ DIV({"class": "netInfoHeadersGroup netInfoCookiesGroup", $collapsed: "$cookiesInfo|hideSentCookies"},
+ SPAN(Locale.$STR("cookies.netinfo.Sent Cookies"))
+ ),
+ DIV({"class": "netInfoSentCookies netInfoCookies"})
+ ),
+
+ hideReceivedCookies: function(cookiesInfo)
+ {
+ return !cookiesInfo.receivedCookies.length;
+ },
+
+ hideSentCookies: function(cookiesInfo)
+ {
+ return !cookiesInfo.sentCookies.length;
+ },
+
+ // NetInfoBody listener
+ initTabBody: function(infoBox, file)
+ {
+ var sentCookiesHeader = this.findHeader(file.requestHeaders, "Cookie");
+ var receivedCookiesHeader = this.findHeader(file.responseHeaders, "Set-Cookie");
+
+ // Create tab only if there are some cookies.
+ if (sentCookiesHeader || receivedCookiesHeader)
+ Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "Cookies",
+ Locale.$STR("cookies.Panel"));
+ },
+
+ destroyTabBody: function(infoBox, file)
+ {
+ },
+
+ updateTabBody: function(infoBox, file, context)
+ {
+ var tab = infoBox.selectedTab;
+ if (!tab || tab.dataPresented || !Css.hasClass(tab, "netInfoCookiesTab"))
+ return;
+
+ tab.dataPresented = true;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.NetInfoBodyListener.updateTabBody",
+ [file.requestHeaders, file.responseHeaders]);
+
+ var sentCookiesHeader = this.findHeader(file.requestHeaders, "Cookie");
+ var receivedCookiesHeader = this.findHeader(file.responseHeaders, "Set-Cookie");
+
+ // Parse all received cookies and generate UI.
+ var receivedCookies = [];
+ var sentCookies = [];
+
+ // Parse received cookies.
+ if (receivedCookiesHeader) {
+ var cookies = receivedCookiesHeader.split("\n");
+ for (var i=0; i<cookies.length; i++) {
+ var cookie = CookieUtils.parseFromString(cookies[i]);
+ if (!cookie.host)
+ cookie.host = file.request.URI.host;
+ receivedCookies.push(new Cookie(CookieUtils.makeCookieObject(cookie)));
+ }
+ }
+
+ // Parse sent cookies.
+ sentCookies = CookieUtils.parseSentCookiesFromString(sentCookiesHeader);
+
+ // Create basic UI content
+ var tabBody = Dom.getElementByClass(infoBox, "netInfoCookiesText");
+ this.tag.replace({cookiesInfo: {
+ receivedCookies: receivedCookies,
+ sentCookies: sentCookies,
+ }}, tabBody);
+
+ // Generate UI for received cookies.
+ if (receivedCookies.length) {
+ CookieReps.CookieTable.render(receivedCookies,
+ Dom.getElementByClass(tabBody, "netInfoReceivedCookies"));
+ }
+
+ // Generate UI for sent cookies.
+ if (sentCookies.length) {
+ CookieReps.CookieTable.render(sentCookies,
+ Dom.getElementByClass(tabBody, "netInfoSentCookies"));
+ }
+ },
+
+ // Helpers
+ findHeader: function(headers, name)
+ {
+ if (!headers)
+ return null;
+
+ for (var i=0; i<headers.length; i++) {
+ if (headers[i].name == name)
+ return headers[i].value;
+ }
+
+ return null;
+ }
+});
+
+// ********************************************************************************************* //
+// Permission observer
+
+/**
+ * @class Represents an observer for perm-changed event that is dispatched
+ * by Firefox is cookie permissions are changed.
+ */
+var PermissionObserver = Obj.extend(BaseObserver,
+/** @lends PermissionObserver */
+{
+ observe: function(aSubject, aTopic, aData)
+ {
+ if (aTopic != "perm-changed")
+ return;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.observe: " + aTopic + ", " + aData);
+
+ var fn = Obj.bind(CookiePermissions.updatePermButton, CookiePermissions);
+ TabWatcher.iterateContexts(fn);
+ }
+});
+
+// ********************************************************************************************* //
+
+function CookieBreakpointGroup()
+{
+ this.breakpoints = [];
+}
+
+CookieBreakpointGroup.prototype = Obj.extend(new Firebug.Breakpoint.BreakpointGroup(),
+{
+ name: "cookieBreakpoints",
+ title: Locale.$STR("cookies.Cookie Breakpoints"),
+
+ addBreakpoint: function(cookie)
+ {
+ this.breakpoints.push(new Breakpoints.Breakpoint(cookie));
+ },
+
+ removeBreakpoint: function(cookie)
+ {
+ var bp = this.findBreakpoint(cookie);
+ Arr.remove(this.breakpoints, bp);
+ },
+
+ matchBreakpoint: function(bp, args)
+ {
+ var cookie = args[0];
+ return (bp.name == cookie.name) &&
+ (bp.host == cookie.host) &&
+ (bp.path == cookie.path);
+ },
+
+ // Persistence
+ load: function(context)
+ {
+ var panelState = Persist.getPersistedState(context, panelName);
+ if (panelState.breakpoints)
+ this.breakpoints = panelState.breakpoints;
+ },
+
+ store: function(context)
+ {
+ var panelState = Persist.getPersistedState(context, panelName);
+ panelState.breakpoints = this.breakpoints;
+ }
+});
+
+// ********************************************************************************************* //
+// Registration Helpers
+
+function registerCookieObserver(observer)
+{
+ if (observer.registered)
+ return;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.registerCookieObserver");
+
+ observerService.addObserver(observer, "cookie-changed", false);
+ observerService.addObserver(observer, "cookie-rejected", false);
+
+ observer.registered = true;
+
+ return observer;
+}
+
+function unregisterCookieObserver(observer)
+{
+ if (!observer.registered)
+ return;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.unregisterCookieObserver");
+
+ observerService.removeObserver(observer, "cookie-changed");
+ observerService.removeObserver(observer, "cookie-rejected");
+
+ observer.registered = false;
+}
+
+// ********************************************************************************************* //
+// Preference observer
+
+// xxxHonza: is this still needed?
+/**
+ * @class Represents an observer for nsPref:changed event dispatched when
+ * an user preference is changed (e.g. using about:config)
+ */
+var PrefObserver = Obj.extend(BaseObserver,
+/** @lends PrefObserver */
+{
+ observe: function(aSubject, aTopic, aData)
+ {
+ if (aTopic != "nsPref:changed")
+ return;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.observe: " + aTopic + ", " + aData);
+
+ if (aData == networkPrefDomain + "." + cookieBehaviorPref ||
+ aData == networkPrefDomain + "." + cookieLifeTimePref) {
+ var fn = CookiePermissions.updatePermButton;
+ TabWatcher.iterateContexts(fn);
+ }
+ }
+});
+
+// ********************************************************************************************* //
+// Used till the real context isn't available (in initContext), bug if Firebug)
+
+function CookieTempObserver(tempContext) {
+ this.tempContext = tempContext;
+}
+
+CookieTempObserver.prototype = Obj.extend(BaseObserver, {
+ observe: function(subject, topic, data) {
+ this.tempContext.appendCookieEvent(subject, topic, data);
+ }
+});
+
+// ********************************************************************************************* //
+// Array Helpers
+
+function cloneMap(map)
+{
+ var newMap = [];
+ for (var item in map)
+ newMap[item] = map[item];
+
+ return newMap;
+}
+
+// ********************************************************************************************* //
+// Firebug Registration
+
+// Expose to XUL scope
+Firebug.CookieModule.Perm = CookiePermissions;
+
+// Expose for tests
+Firebug.CookieModule.CookieReps = CookieReps;
+
+Firebug.registerActivableModule(Firebug.CookieModule);
+
+return Firebug.CookieModule;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/cookies/cookieObserver.js b/content/firebug/cookies/cookieObserver.js
index 022260a..3dc4faa 100644
--- a/content/firebug/cookies/cookieObserver.js
+++ b/content/firebug/cookies/cookieObserver.js
@@ -1,455 +1,455 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/xpcom",
- "firebug/lib/object",
- "firebug/lib/locale",
- "firebug/lib/domplate",
- "firebug/lib/dom",
- "firebug/lib/options",
- "firebug/lib/persist",
- "firebug/lib/string",
- "firebug/lib/http",
- "firebug/lib/css",
- "firebug/lib/events",
- "firebug/cookies/baseObserver",
- "firebug/chrome/tabWatcher",
- "firebug/cookies/cookieReps",
- "firebug/cookies/cookieUtils",
- "firebug/cookies/cookie",
- "firebug/cookies/breakpoints",
- "firebug/cookies/cookieEvents",
- "firebug/lib/array",
-],
-function(Xpcom, Obj, Locale, Domplate, Dom, Options, Persist, Str, Http, Css, Events,
- BaseObserver, TabWatcher, CookieReps, CookieUtils, Cookie, Breakpoints, CookieEvents, Arr) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const filterByPath = "cookies.filterByPath";
-
-const panelName = "cookies";
-
-const idnService = Xpcom.CCSV("@mozilla.org/network/idn-service;1", "nsIIDNService");
-
-// ********************************************************************************************* //
-// Cookie observer
-
-/**
- * @class This class represents an observer (nsIObserver) for cookie-changed
- * and cookie-rejected events. These events are dispatche by Firefox
- * see https://developer.mozilla.org/En/Observer_Notifications.
- */
-var CookieObserver = Obj.extend(BaseObserver,
-/** @lends CookieObserver */
-{
- // nsIObserver
- observe: function(aSubject, aTopic, aData)
- {
- try
- {
- if (!Firebug.CookieModule.isAlwaysEnabled())
- return;
-
- // See: https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsICookieService
- // For all possible values.
- if (aTopic == "cookie-changed")
- {
- var cookies = [];
- if (aData == "batch-deleted")
- {
- // In this case the subject is nsIArray.
- var enumerator = aSubject.QueryInterface(Ci.nsIArray).enumerate();
- while (enumerator.hasMoreElements())
- cookies.push(enumerator.getNext().QueryInterface(Ci.nsICookie2));
-
- // The event will be further distributed as standard "delete" event.
- aData = "deleted";
- }
- else
- {
- aSubject = aSubject ? aSubject.QueryInterface(Ci.nsICookie2) : null;
- cookies.push(aSubject);
- }
-
- for (var i=0; i<cookies.length; i++)
- this.iterateContexts(this.onCookieChanged, cookies[i], aData);
- }
- else if (aTopic == "cookie-rejected")
- {
- aSubject = aSubject.QueryInterface(Ci.nsIURI);
- this.iterateContexts(this.onCookieRejected, aSubject, aData);
- }
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("cookies.CookieObserver.observe; ERROR " +
- aTopic + ", " + aData, err);
- FBTrace.sysout("cookies.CookieObserver.observe; subject ", aSubject);
- }
- }
- },
-
- iterateContexts: function(fn)
- {
- var oThis = this;
- var args = Arr.cloneArray(arguments);
- TabWatcher.iterateContexts(function(context)
- {
- args[0] = context;
- fn.apply(oThis, args);
- });
- },
-
- /**
- * @param {String} activeUri This object represents currently active host. Notice that there
- * can be more active hosts (activeHosts map) on one page in case
- * of embedded iframes or/and previous redirects.
- * Properties:
- * host: www.example.com
- * path: /subdir/
- *
- * @param {String} host: Represents the host of a cookie for which
- * we are checking if it should be displayed for the active URI.
- *
- * @param {String} path: Represents the path of a cookie for which
- * we are checking if it should be displayed for the active URI.
- *
- * @returns {Boolean} If the method returns true the host/path belongs
- * to the activeUri.
- */
- isHostFromURI: function(activeUri, host, cookiePath)
- {
- var pathFilter = Options.get(filterByPath);
-
- // Compute the default path of the cookie according to the algorithm
- // defined in RFC 6265 section 5.1.4
- //
- // Steps 2 and 3 (output "/" in case the cookie path is empty, its first
- // character is "/" or there is no more than one "/")
- if (cookiePath.length == 0 || cookiePath.charAt(0) != "/" ||
- cookiePath.lastIndexOf("/") == 0)
- {
- cookiePath = "/";
- }
- else
- {
- // Step 4 (remove slash at the end of the active path according to)
- cookiePath = cookiePath.substr(0, cookiePath.lastIndexOf("/"));
- }
-
- // If the path filter is on, only cookies that match given path
- // according to RFC 6265 section 5.1.4 will be displayed.
- var requestPath = activeUri.path;
- if (pathFilter && (cookiePath != requestPath && !(Str.hasPrefix(requestPath, cookiePath) &&
- (Str.endsWith(cookiePath, "/") || requestPath.substr(cookiePath.length, 1) == "/"))))
- {
- return false;
- }
-
- // The cookie must belong to given URI from this context,
- // otherwise it won't be displayed in this tab.
- var uri = CookieUtils.makeStrippedHost(activeUri.host);
- if (uri == host)
- return true;
-
- if (uri.length < host.length)
- return false;
-
- var h = "." + host;
- var u = "." + uri;
- if (u.substr(u.length - h.length) == h)
- return true;
-
- return false;
- },
-
- isHostFromContext: function(context, host, path)
- {
- var location;
- try
- {
- host = idnService.convertACEtoUTF8(host);
- }
- catch(exc)
- {
- if (FBTrace.DBG_ERRORS || FBTrace.DBG_COOKIES)
- FBTrace.sysout("Host could not be converted to UTF-8", exc);
- }
-
- // Invalid in Chromebug.
- try
- {
- location = context.window.location;
- if (!location || !location.protocol)
- return;
- }
- catch (err)
- {
- return false;
- }
-
- if (location.protocol.indexOf("http") != 0)
- return false;
-
- var rawHost = CookieUtils.makeStrippedHost(host);
-
- // Test the current main URI first.
- // The location isn't nsIURI, so make a fake object (aka nsIURI).
- var fakeUri = {host: location.host, path: location.pathname};
- if (this.isHostFromURI(fakeUri, rawHost, path))
- return true;
-
- // xxxHonza
- // If the context.cookies is not initialized, it's bad. It means that
- // neither temporary context no real context has been initialized
- // One reason is that Sript model issues panel.show in onModuleActivate
- // which consequently requests a file (double load prblem), which
- // consequently rises this cookie event.
- if (!context.cookies)
- return false;
-
- // Now test if the cookie doesn't belong to some of the
- // activeHosts (redirects, frames).
- var activeHosts = context.cookies.activeHosts;
- for (var activeHost in activeHosts)
- {
- if (this.isHostFromURI(activeHosts[activeHost], rawHost, path))
- return true;
- }
-
- return false;
- },
-
- isCookieFromContext: function(context, cookie)
- {
- return this.isHostFromContext(context, cookie.host, cookie.path);
- },
-
- onCookieChanged: function(context, cookie, action)
- {
- // If the action == "cleared" the cookie is *not* set. This action is triggered
- // when all cookies are removed (cookieManager.removeAll)
- // In such a case let's displaye the event in all contexts.
- if (cookie && !this.isCookieFromContext(context, cookie))
- return;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onCookieChanged: '" + (cookie ? cookie.name : "null") +
- "', " + action);
-
- if (action != "cleared")
- {
- // If log into the Console tab is on, create "deleted", "added" and "changed" events.
- if (logEvents())
- this.logEvent(new CookieEvents.CookieChangedEvent(context, CookieUtils.makeCookieObject(cookie),
- action), context, "cookie");
-
- // Break on cookie if "Break On" is activated or if a cookie breakpoint exist.
- Breakpoints.breakOnCookie(context, cookie, action);
- }
-
- switch(action)
- {
- case "deleted":
- this.onRemoveCookie(context, cookie);
- break;
- case "added":
- this.onAddCookie(context, cookie);
- break;
- case "changed":
- this.onUpdateCookie(context, cookie);
- break;
- case "cleared":
- this.onClear(context);
- return;
- case "reload":
- context.invalidatePanels(panelName);
- return;
- }
- },
-
- onClear: function(context)
- {
- var panel = context.getPanel(panelName);
- panel.clear();
-
- if (logEvents())
- this.logEvent(new CookieEvents.CookieClearedEvent(), context, "cookiesCleared");
- },
-
- onCookieRejected: function(context, uri)
- {
- var path = uri.path.substr(0, (uri.path.lastIndexOf("/") || 1));
- if (!this.isHostFromContext(context, uri.host, path))
- return;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onCookieRejected: " + uri.spec);
-
- // Mark host and all its cookies as rejected.
- // xxxHonza there was an exception "context.cookies is undefined".
- var activeHost = context.cookies.activeHosts[uri.host];
- if (activeHost)
- activeHost.rejected = true;
-
- var receivedCookies = activeHost ? activeHost.receivedCookies : null;
- for (var i=0; receivedCookies && i<receivedCookies.length; i++)
- receivedCookies[i].cookie.rejected = true;
-
- // Refresh the panel asynchronously.
- context.invalidatePanels(panelName);
-
- // Bail out if events are not logged into the Console.
- if (!logEvents())
- return;
-
- // The "cookies-rejected" event is sent even if no cookies
- // from the blocked site have been actually received.
- // So, the receivedCookies array can be null.
- // Don't display anything in the console in that case,
- // there could be a lot of "Cookie Rejected" events.
- // There would be actually one for each embedded request.
- if (!receivedCookies)
- return;
-
- // Create group log for list of rejected cookies.
- var groupRow = Firebug.Console.openGroup(
- [new CookieEvents.CookieRejectedEvent(context, uri)],
- context, "cookiesRejected", null, true, null, true);
-
- // The console can be disabled (since FB 1.2).
- if (!groupRow)
- return;
-
- // It's closed by default.
- Css.removeClass(groupRow, "opened");
- Firebug.Console.closeGroup(context, true);
-
- // Create embedded table.
- CookieReps.CookieTable.render(receivedCookies, groupRow.lastChild);
- },
-
- onAddCookie: function(context, cookie)
- {
- var panel = context.getPanel(panelName, true);
- var repCookie = panel ? panel.findRepObject(cookie) : null;
- if (repCookie)
- {
- this.onUpdateCookie(context, cookie);
- return;
- }
-
- if (!panel || !panel.table)
- return;
-
- var repCookie = panel ? panel.findRepObject(cookie) : null;
-
- cookie = new Cookie(CookieUtils.makeCookieObject(cookie));
-
- var tbody = panel.table.lastChild;
- var parent = tbody.lastChild ? tbody.lastChild : tbody;
- var row = CookieReps.CookieRow.cookieTag.insertRows({cookies: [cookie]}, parent)[0];
-
- cookie.row = row;
- row.repObject = cookie;
-
- //xxxHonza the new cookie should respect current sorting.
- },
-
- onUpdateCookie: function(context, cookie)
- {
- var panel = context.getPanel(panelName, true);
-
- // The table doesn't have to be initialized yet.
- if (!panel || !panel.table)
- return;
-
- var repCookie = panel ? panel.findRepObject(cookie) : null;
- if (!repCookie)
- {
- this.onAddCookie(context, cookie);
- return;
- }
-
- repCookie.cookie = CookieUtils.makeCookieObject(cookie);
- repCookie.rawHost = CookieUtils.makeStrippedHost(cookie.host);
-
- // These are helpers so, the XML and JSON cookies don't have to be parsed
- // again and again. But we need to reset them if the value is changed.
- repCookie.json = null;
- repCookie.xml = null;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onUpdateCookie: " + cookie.name, repCookie);
-
- var row = repCookie.row;
- var rowTemplate = CookieReps.CookieRow;
-
- if (Css.hasClass(row, "opened"))
- {
- var cookieInfoBody = Dom.getElementByClass(row.nextSibling, "cookieInfoBody");
-
- // Invalidate content of all tabs.
- cookieInfoBody.valuePresented = false;
- cookieInfoBody.rawValuePresented = false;
- cookieInfoBody.xmlPresented = false;
- cookieInfoBody.jsonPresented = false;
-
- // Update tabs visibility and content of the selected tab.
- rowTemplate.updateTabs(cookieInfoBody, repCookie, context);
- rowTemplate.updateInfo(cookieInfoBody, repCookie, context);
- }
-
- rowTemplate.updateRow(repCookie, context);
- },
-
- onRemoveCookie: function(context, cookie)
- {
- var panel = context.getPanel(panelName, true);
- var repCookie = panel ? panel.findRepObject(cookie) : null;
- if (!repCookie)
- return;
-
- // Remove cookie from UI.
- var row = repCookie.row;
- var parent = repCookie.row.parentNode;
-
- if (Css.hasClass(repCookie.row, "opened"))
- parent.removeChild(row.nextSibling);
-
- if (!parent)
- return;
-
- parent.removeChild(repCookie.row);
- },
-
- logEvent: function(eventObject, context, className)
- {
- // xxxHonza: if the cookie is changed befor initContext, the log in
- // console is lost.
- Firebug.Console.log(eventObject, context, className, null, true);
- }
-});
-
-// ********************************************************************************************* //
-// Helpers
-
-function logEvents()
-{
- return Options.get("cookies.logEvents");
-}
-
-// ********************************************************************************************* //
-
-return CookieObserver;
-
-// ********************************************************************************************* //
-});
-
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/xpcom",
+ "firebug/lib/object",
+ "firebug/lib/locale",
+ "firebug/lib/domplate",
+ "firebug/lib/dom",
+ "firebug/lib/options",
+ "firebug/lib/persist",
+ "firebug/lib/string",
+ "firebug/lib/http",
+ "firebug/lib/css",
+ "firebug/lib/events",
+ "firebug/cookies/baseObserver",
+ "firebug/chrome/tabWatcher",
+ "firebug/cookies/cookieReps",
+ "firebug/cookies/cookieUtils",
+ "firebug/cookies/cookie",
+ "firebug/cookies/breakpoints",
+ "firebug/cookies/cookieEvents",
+ "firebug/lib/array",
+],
+function(Xpcom, Obj, Locale, Domplate, Dom, Options, Persist, Str, Http, Css, Events,
+ BaseObserver, TabWatcher, CookieReps, CookieUtils, Cookie, Breakpoints, CookieEvents, Arr) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+const filterByPath = "cookies.filterByPath";
+
+const panelName = "cookies";
+
+const idnService = Xpcom.CCSV("@mozilla.org/network/idn-service;1", "nsIIDNService");
+
+// ********************************************************************************************* //
+// Cookie observer
+
+/**
+ * @class This class represents an observer (nsIObserver) for cookie-changed
+ * and cookie-rejected events. These events are dispatche by Firefox
+ * see https://developer.mozilla.org/En/Observer_Notifications.
+ */
+var CookieObserver = Obj.extend(BaseObserver,
+/** @lends CookieObserver */
+{
+ // nsIObserver
+ observe: function(aSubject, aTopic, aData)
+ {
+ try
+ {
+ if (!Firebug.CookieModule.isAlwaysEnabled())
+ return;
+
+ // See: https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsICookieService
+ // For all possible values.
+ if (aTopic == "cookie-changed")
+ {
+ var cookies = [];
+ if (aData == "batch-deleted")
+ {
+ // In this case the subject is nsIArray.
+ var enumerator = aSubject.QueryInterface(Ci.nsIArray).enumerate();
+ while (enumerator.hasMoreElements())
+ cookies.push(enumerator.getNext().QueryInterface(Ci.nsICookie2));
+
+ // The event will be further distributed as standard "delete" event.
+ aData = "deleted";
+ }
+ else
+ {
+ aSubject = aSubject ? aSubject.QueryInterface(Ci.nsICookie2) : null;
+ cookies.push(aSubject);
+ }
+
+ for (var i=0; i<cookies.length; i++)
+ this.iterateContexts(this.onCookieChanged, cookies[i], aData);
+ }
+ else if (aTopic == "cookie-rejected")
+ {
+ aSubject = aSubject.QueryInterface(Ci.nsIURI);
+ this.iterateContexts(this.onCookieRejected, aSubject, aData);
+ }
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("cookies.CookieObserver.observe; ERROR " +
+ aTopic + ", " + aData, err);
+ FBTrace.sysout("cookies.CookieObserver.observe; subject ", aSubject);
+ }
+ }
+ },
+
+ iterateContexts: function(fn)
+ {
+ var oThis = this;
+ var args = Arr.cloneArray(arguments);
+ TabWatcher.iterateContexts(function(context)
+ {
+ args[0] = context;
+ fn.apply(oThis, args);
+ });
+ },
+
+ /**
+ * @param {String} activeUri This object represents currently active host. Notice that there
+ * can be more active hosts (activeHosts map) on one page in case
+ * of embedded iframes or/and previous redirects.
+ * Properties:
+ * host: www.example.com
+ * path: /subdir/
+ *
+ * @param {String} host: Represents the host of a cookie for which
+ * we are checking if it should be displayed for the active URI.
+ *
+ * @param {String} path: Represents the path of a cookie for which
+ * we are checking if it should be displayed for the active URI.
+ *
+ * @returns {Boolean} If the method returns true the host/path belongs
+ * to the activeUri.
+ */
+ isHostFromURI: function(activeUri, host, cookiePath)
+ {
+ var pathFilter = Options.get(filterByPath);
+
+ // Compute the default path of the cookie according to the algorithm
+ // defined in RFC 6265 section 5.1.4
+ //
+ // Steps 2 and 3 (output "/" in case the cookie path is empty, its first
+ // character is "/" or there is no more than one "/")
+ if (cookiePath.length == 0 || cookiePath.charAt(0) != "/" ||
+ cookiePath.lastIndexOf("/") == 0)
+ {
+ cookiePath = "/";
+ }
+ else
+ {
+ // Step 4 (remove slash at the end of the active path according to)
+ cookiePath = cookiePath.substr(0, cookiePath.lastIndexOf("/"));
+ }
+
+ // If the path filter is on, only cookies that match given path
+ // according to RFC 6265 section 5.1.4 will be displayed.
+ var requestPath = activeUri.path;
+ if (pathFilter && (cookiePath != requestPath && !(Str.hasPrefix(requestPath, cookiePath) &&
+ (Str.endsWith(cookiePath, "/") || requestPath.substr(cookiePath.length, 1) == "/"))))
+ {
+ return false;
+ }
+
+ // The cookie must belong to given URI from this context,
+ // otherwise it won't be displayed in this tab.
+ var uri = CookieUtils.makeStrippedHost(activeUri.host);
+ if (uri == host)
+ return true;
+
+ if (uri.length < host.length)
+ return false;
+
+ var h = "." + host;
+ var u = "." + uri;
+ if (u.substr(u.length - h.length) == h)
+ return true;
+
+ return false;
+ },
+
+ isHostFromContext: function(context, host, path)
+ {
+ var location;
+ try
+ {
+ host = idnService.convertACEtoUTF8(host);
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_COOKIES)
+ FBTrace.sysout("Host could not be converted to UTF-8", exc);
+ }
+
+ // Invalid in Chromebug.
+ try
+ {
+ location = context.window.location;
+ if (!location || !location.protocol)
+ return;
+ }
+ catch (err)
+ {
+ return false;
+ }
+
+ if (location.protocol.indexOf("http") != 0)
+ return false;
+
+ var rawHost = CookieUtils.makeStrippedHost(host);
+
+ // Test the current main URI first.
+ // The location isn't nsIURI, so make a fake object (aka nsIURI).
+ var fakeUri = {host: location.host, path: location.pathname};
+ if (this.isHostFromURI(fakeUri, rawHost, path))
+ return true;
+
+ // xxxHonza
+ // If the context.cookies is not initialized, it's bad. It means that
+ // neither temporary context no real context has been initialized
+ // One reason is that Sript model issues panel.show in onModuleActivate
+ // which consequently requests a file (double load prblem), which
+ // consequently rises this cookie event.
+ if (!context.cookies)
+ return false;
+
+ // Now test if the cookie doesn't belong to some of the
+ // activeHosts (redirects, frames).
+ var activeHosts = context.cookies.activeHosts;
+ for (var activeHost in activeHosts)
+ {
+ if (this.isHostFromURI(activeHosts[activeHost], rawHost, path))
+ return true;
+ }
+
+ return false;
+ },
+
+ isCookieFromContext: function(context, cookie)
+ {
+ return this.isHostFromContext(context, cookie.host, cookie.path);
+ },
+
+ onCookieChanged: function(context, cookie, action)
+ {
+ // If the action == "cleared" the cookie is *not* set. This action is triggered
+ // when all cookies are removed (cookieManager.removeAll)
+ // In such a case let's displaye the event in all contexts.
+ if (cookie && !this.isCookieFromContext(context, cookie))
+ return;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onCookieChanged: '" + (cookie ? cookie.name : "null") +
+ "', " + action);
+
+ if (action != "cleared")
+ {
+ // If log into the Console tab is on, create "deleted", "added" and "changed" events.
+ if (logEvents())
+ this.logEvent(new CookieEvents.CookieChangedEvent(context, CookieUtils.makeCookieObject(cookie),
+ action), context, "cookie");
+
+ // Break on cookie if "Break On" is activated or if a cookie breakpoint exist.
+ Breakpoints.breakOnCookie(context, cookie, action);
+ }
+
+ switch(action)
+ {
+ case "deleted":
+ this.onRemoveCookie(context, cookie);
+ break;
+ case "added":
+ this.onAddCookie(context, cookie);
+ break;
+ case "changed":
+ this.onUpdateCookie(context, cookie);
+ break;
+ case "cleared":
+ this.onClear(context);
+ return;
+ case "reload":
+ context.invalidatePanels(panelName);
+ return;
+ }
+ },
+
+ onClear: function(context)
+ {
+ var panel = context.getPanel(panelName);
+ panel.clear();
+
+ if (logEvents())
+ this.logEvent(new CookieEvents.CookieClearedEvent(), context, "cookiesCleared");
+ },
+
+ onCookieRejected: function(context, uri)
+ {
+ var path = uri.path.substr(0, (uri.path.lastIndexOf("/") || 1));
+ if (!this.isHostFromContext(context, uri.host, path))
+ return;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onCookieRejected: " + uri.spec);
+
+ // Mark host and all its cookies as rejected.
+ // xxxHonza there was an exception "context.cookies is undefined".
+ var activeHost = context.cookies.activeHosts[uri.host];
+ if (activeHost)
+ activeHost.rejected = true;
+
+ var receivedCookies = activeHost ? activeHost.receivedCookies : null;
+ for (var i=0; receivedCookies && i<receivedCookies.length; i++)
+ receivedCookies[i].cookie.rejected = true;
+
+ // Refresh the panel asynchronously.
+ context.invalidatePanels(panelName);
+
+ // Bail out if events are not logged into the Console.
+ if (!logEvents())
+ return;
+
+ // The "cookies-rejected" event is sent even if no cookies
+ // from the blocked site have been actually received.
+ // So, the receivedCookies array can be null.
+ // Don't display anything in the console in that case,
+ // there could be a lot of "Cookie Rejected" events.
+ // There would be actually one for each embedded request.
+ if (!receivedCookies)
+ return;
+
+ // Create group log for list of rejected cookies.
+ var groupRow = Firebug.Console.openGroup(
+ [new CookieEvents.CookieRejectedEvent(context, uri)],
+ context, "cookiesRejected", null, true, null, true);
+
+ // The console can be disabled (since FB 1.2).
+ if (!groupRow)
+ return;
+
+ // It's closed by default.
+ Css.removeClass(groupRow, "opened");
+ Firebug.Console.closeGroup(context, true);
+
+ // Create embedded table.
+ CookieReps.CookieTable.render(receivedCookies, groupRow.lastChild);
+ },
+
+ onAddCookie: function(context, cookie)
+ {
+ var panel = context.getPanel(panelName, true);
+ var repCookie = panel ? panel.findRepObject(cookie) : null;
+ if (repCookie)
+ {
+ this.onUpdateCookie(context, cookie);
+ return;
+ }
+
+ if (!panel || !panel.table)
+ return;
+
+ var repCookie = panel ? panel.findRepObject(cookie) : null;
+
+ cookie = new Cookie(CookieUtils.makeCookieObject(cookie));
+
+ var tbody = panel.table.lastChild;
+ var parent = tbody.lastChild ? tbody.lastChild : tbody;
+ var row = CookieReps.CookieRow.cookieTag.insertRows({cookies: [cookie]}, parent)[0];
+
+ cookie.row = row;
+ row.repObject = cookie;
+
+ //xxxHonza the new cookie should respect current sorting.
+ },
+
+ onUpdateCookie: function(context, cookie)
+ {
+ var panel = context.getPanel(panelName, true);
+
+ // The table doesn't have to be initialized yet.
+ if (!panel || !panel.table)
+ return;
+
+ var repCookie = panel ? panel.findRepObject(cookie) : null;
+ if (!repCookie)
+ {
+ this.onAddCookie(context, cookie);
+ return;
+ }
+
+ repCookie.cookie = CookieUtils.makeCookieObject(cookie);
+ repCookie.rawHost = CookieUtils.makeStrippedHost(cookie.host);
+
+ // These are helpers so, the XML and JSON cookies don't have to be parsed
+ // again and again. But we need to reset them if the value is changed.
+ repCookie.json = null;
+ repCookie.xml = null;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onUpdateCookie: " + cookie.name, repCookie);
+
+ var row = repCookie.row;
+ var rowTemplate = CookieReps.CookieRow;
+
+ if (Css.hasClass(row, "opened"))
+ {
+ var cookieInfoBody = Dom.getElementByClass(row.nextSibling, "cookieInfoBody");
+
+ // Invalidate content of all tabs.
+ cookieInfoBody.valuePresented = false;
+ cookieInfoBody.rawValuePresented = false;
+ cookieInfoBody.xmlPresented = false;
+ cookieInfoBody.jsonPresented = false;
+
+ // Update tabs visibility and content of the selected tab.
+ rowTemplate.updateTabs(cookieInfoBody, repCookie, context);
+ rowTemplate.updateInfo(cookieInfoBody, repCookie, context);
+ }
+
+ rowTemplate.updateRow(repCookie, context);
+ },
+
+ onRemoveCookie: function(context, cookie)
+ {
+ var panel = context.getPanel(panelName, true);
+ var repCookie = panel ? panel.findRepObject(cookie) : null;
+ if (!repCookie)
+ return;
+
+ // Remove cookie from UI.
+ var row = repCookie.row;
+ var parent = repCookie.row.parentNode;
+
+ if (Css.hasClass(repCookie.row, "opened"))
+ parent.removeChild(row.nextSibling);
+
+ if (!parent)
+ return;
+
+ parent.removeChild(repCookie.row);
+ },
+
+ logEvent: function(eventObject, context, className)
+ {
+ // xxxHonza: if the cookie is changed befor initContext, the log in
+ // console is lost.
+ Firebug.Console.log(eventObject, context, className, null, true);
+ }
+});
+
+// ********************************************************************************************* //
+// Helpers
+
+function logEvents()
+{
+ return Options.get("cookies.logEvents");
+}
+
+// ********************************************************************************************* //
+
+return CookieObserver;
+
+// ********************************************************************************************* //
+});
+
diff --git a/content/firebug/cookies/cookiePanel.js b/content/firebug/cookies/cookiePanel.js
index ce9b660..a683936 100644
--- a/content/firebug/cookies/cookiePanel.js
+++ b/content/firebug/cookies/cookiePanel.js
@@ -1,591 +1,591 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/xpcom",
- "firebug/lib/object",
- "firebug/lib/locale",
- "firebug/lib/domplate",
- "firebug/lib/dom",
- "firebug/lib/options",
- "firebug/lib/persist",
- "firebug/lib/string",
- "firebug/lib/http",
- "firebug/lib/css",
- "firebug/lib/events",
- "firebug/lib/array",
- "firebug/lib/search",
- "firebug/cookies/menuUtils",
- "firebug/cookies/cookieReps",
- "firebug/cookies/headerResizer",
- "firebug/cookies/cookieObserver",
- "firebug/cookies/cookieUtils",
- "firebug/cookies/cookie",
- "firebug/cookies/breakpoints",
- "firebug/cookies/cookiePermissions",
- "firebug/cookies/cookieClipboard",
-],
-function(Xpcom, Obj, Locale, Domplate, Dom, Options, Persist, Str, Http, Css, Events, Arr, Search,
- MenuUtils, CookieReps, HeaderResizer, CookieObserver, CookieUtils, Cookie, Breakpoints,
- CookiePermissions, CookieClipboard) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Ci = Components.interfaces;
-
-// Cookies preferences
-const showRejectedCookies = "cookies.showRejectedCookies";
-const lastSortedColumn = "cookies.lastSortedColumn";
-const hiddenColsPref = "cookies.hiddenColumns";
-const removeConfirmation = "cookies.removeConfirmation";
-
-// Services
-var cookieManager = Xpcom.CCSV("@mozilla.org/cookiemanager;1", "nsICookieManager2");
-
-const panelName = "cookies";
-
-// ********************************************************************************************* //
-// Panel Implementation
-
-/**
- * @panel This class represents the Cookies panel that is displayed within
- * Firebug UI.
- */
-function CookiePanel() {}
-
-CookiePanel.prototype = Obj.extend(Firebug.ActivablePanel,
-/** @lends CookiePanel */
-{
- name: panelName,
- title: Locale.$STR("cookies.Panel"),
- searchable: true,
- breakable: true,
-
- // Place just after the Net panel
- order: 200,
-
- initialize: function(context, doc)
- {
- // xxxHonza:
- // This initialization is made as soon as the Cookies panel
- // is opened the first time.
- // This means that columns are *not* resizable within the console
- // (rejected cookies) till this activation isn't executed.
-
- // Initialize event listeners before the ancestor is called
- var hcr = HeaderResizer;
- this.onMouseClick = Obj.bind(hcr.onMouseClick, hcr);
- this.onMouseDown = Obj.bind(hcr.onMouseDown, hcr);
- this.onMouseMove = Obj.bind(hcr.onMouseMove, hcr);
- this.onMouseUp = Obj.bind(hcr.onMouseUp, hcr);
- this.onMouseOut = Obj.bind(hcr.onMouseOut, hcr);
-
- this.onContextMenu = Obj.bind(this.onContextMenu, this);
-
- Firebug.ActivablePanel.initialize.apply(this, arguments);
-
- Firebug.ConsolePanel.prototype.addListener(this);
-
- // Just after the initialization, so the this.document member is set
- Firebug.CookieModule.addStyleSheet(this);
-
- this.refresh();
- },
-
- shutdown: function()
- {
- Firebug.ConsolePanel.prototype.removeListener(this);
- },
-
- /**
- * Renders the list of cookies displayed within the Cookies panel
- */
- refresh: function()
- {
- if (!Firebug.CookieModule.isEnabled(this.context))
- return;
-
- // Create cookie list table
- this.table = CookieReps.CookieTable.createTable(this.panelNode);
-
- // Cookies are displayed only for web pages
- var location = this.context.window.location;
- if (!location)
- return;
-
- var protocol = location.protocol;
- if (protocol.indexOf("http") != 0)
- return;
-
- // Get list of cookies for the current page
- var cookies = [];
- var iter = cookieManager.enumerator;
- while (iter.hasMoreElements())
- {
- var cookie = iter.getNext();
- if (!cookie)
- break;
-
- cookie = cookie.QueryInterface(Ci.nsICookie2);
- if (!CookieObserver.isCookieFromContext(this.context, cookie))
- continue;
-
- var cookieWrapper = new Cookie(CookieUtils.makeCookieObject(cookie));
- cookies.push(cookieWrapper);
- }
-
- // If the filter allows it, display all rejected cookies as well.
- if (Options.get(showRejectedCookies))
- {
- // xxxHonza: this.context.cookies is sometimes null, but
- // this must be because FB isn't correctly initialized.
- if (!this.context.cookies)
- {
- if (FBTrace.DBG_COOKIES)
- {
- FBTrace.sysout(
- "cookies.Cookie context isn't properly initialized - ERROR: " +
- this.context.getName());
- }
- return;
- }
-
- var activeHosts = this.context.cookies.activeHosts;
- for (var hostName in activeHosts)
- {
- var host = activeHosts[hostName];
- if (!host.rejected)
- continue;
-
- var receivedCookies = host.receivedCookies;
- if (receivedCookies)
- cookies = Arr.extendArray(cookies, receivedCookies);
- }
- }
-
- // Generate HTML list of cookies using Domplate
- if (cookies.length)
- {
- var header = Dom.getElementByClass(this.table, "cookieHeaderRow");
- var tag = CookieReps.CookieRow.cookieTag;
- var row = tag.insertRows({cookies: cookies}, header)[0];
- for (var i=0; i<cookies.length; i++)
- {
- var cookie = cookies[i];
- cookie.row = row;
-
- Breakpoints.updateBreakpoint(this.context, cookie);
- row = row.nextSibling;
- }
- }
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.Cookie list refreshed.", cookies);
-
- // Automatically sort the last sorted column. The preference stores
- // two things: name of the sorted column and sort direction asc|desc.
- // Example: colExpires asc
- var prefValue = Options.get(lastSortedColumn);
- if (prefValue)
- {
- var values = prefValue.split(" ");
- CookieReps.CookieTable.sortColumn(this.table, values[0], values[1]);
- }
-
- // Update visibility of columns according to the preferences
- var hiddenCols = Options.get(hiddenColsPref);
- if (hiddenCols)
- this.table.setAttribute("hiddenCols", hiddenCols);
-
- // Remove certain context menu items on cookiePanel display
- this.table.setAttribute("removedCols", ["colMaxAge"]);
- },
-
- initializeNode: function(oldPanelNode)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.CookiePanel.initializeNode");
-
- // xxxHonza:
- // This method isn't called when FB UI is detached. So, the columns
- // are *not* resizable when FB is open in an external window.
-
- // Register event handlers for table column resizing
- this.document.addEventListener("click", this.onMouseClick, true);
- this.document.addEventListener("mousedown", this.onMouseDown, true);
- this.document.addEventListener("mousemove", this.onMouseMove, true);
- this.document.addEventListener("mouseup", this.onMouseUp, true);
- this.document.addEventListener("mouseout", this.onMouseOut, true);
-
- this.panelNode.addEventListener("contextmenu", this.onContextMenu, false);
- },
-
- destroyNode: function()
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.CookiePanel.destroyNode");
-
- this.document.removeEventListener("mouseclick", this.onMouseClick, true);
- this.document.removeEventListener("mousedown", this.onMouseDown, true);
- this.document.removeEventListener("mousemove", this.onMouseMove, true);
- this.document.removeEventListener("mouseup", this.onMouseUp, true);
- this.document.removeEventListener("mouseout", this.onMouseOut, true);
-
- this.panelNode.removeEventListener("contextmenu", this.onContextMenu, false);
- },
-
- onContextMenu: function(event)
- {
- Breakpoints.onContextMenu(this.context, event);
- },
-
- detach: function(oldChrome, newChrome)
- {
- Firebug.ActivablePanel.detach.apply(this, arguments);
- },
-
- reattach: function(doc)
- {
- Firebug.ActivablePanel.reattach.apply(this, arguments);
- },
-
- clear: function()
- {
- if (this.panelNode)
- Dom.clearNode(this.panelNode);
-
- this.table = null;
- },
-
- show: function(state)
- {
- // Update permission button in the toolbar
- CookiePermissions.updatePermButton(this.context);
-
- // For backward compatibility with Firebug 1.1
- //
- // Firebug 1.6 removes Firebug.DisabledPanelPage, simplifies the activation
- // and the following code is not necessary any more.
- if (Firebug.ActivableModule && Firebug.DisabledPanelPage)
- {
- var shouldShow = Firebug.CookieModule.isEnabled(this.context);
- this.showToolbarButtons("fbCookieButtons", shouldShow);
- if (!shouldShow)
- {
- // The activation model has been changed in Firebug 1.4. This is
- // just to keep backward compatibility.
- if (Firebug.DisabledPanelPage.show)
- Firebug.DisabledPanelPage.show(this, Firebug.CookieModule);
- else
- Firebug.CookieModule.disabledPanelPage.show(this);
- return;
- }
- }
- else
- {
- this.showToolbarButtons("fbCookieButtons", true);
- }
-
- if (Firebug.chrome.setGlobalAttribute)
- {
- Firebug.chrome.setGlobalAttribute("cmd_firebug_resumeExecution", "breakable", "true");
- Firebug.chrome.setGlobalAttribute("cmd_firebug_resumeExecution", "tooltiptext",
- Locale.$STR("cookies.Break On Cookie"));
- }
- },
-
- hide: function()
- {
- this.showToolbarButtons("fbCookieButtons", false);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Options menu
-
- getOptionsMenuItems: function(context)
- {
- return [
- MenuUtils.optionAllowGlobally(context, "cookies.AllowGlobally",
- "cookies.tip.AllowGlobally", "network.cookie", "cookieBehavior"),
- /*MenuUtils.optionMenu(context, "cookies.clearWhenDeny",
- "cookies.tip.clearWhenDeny", Firebug.prefDomain, clearWhenDeny),*/
- MenuUtils.optionMenu(context, "cookies.Confirm cookie removal",
- "cookies.tip.Confirm cookie removal", Firebug.prefDomain, removeConfirmation)
- ];
- },
-
- getContextMenuItems: function(object, target)
- {
- var items = [];
-
- // If the user clicked a cookie row, the context menu is already
- // initialized and so bail out.
- var cookieRow = Dom.getAncestorByClass(target, "cookieRow");
- if (cookieRow)
- return items;
-
- // Also bail out if the user clicked on the header.
- var header = Dom.getAncestorByClass(target, "cookieHeaderRow");
- if (header)
- return items;
-
- // Make sure default items (cmd_copy) are removed
- CookieReps.Rep.getContextMenuItems.apply(this, arguments);
-
- return items;
- },
-
- search: function(text)
- {
- if (!text)
- return;
-
- // Make previously visible nodes invisible again
- if (this.matchSet)
- {
- for (var i in this.matchSet)
- Css.removeClass(this.matchSet[i], "matched");
- }
-
- this.matchSet = [];
-
- function findRow(node)
- {
- return Dom.getAncestorByClass(node, "cookieRow");
- }
-
- var search = new Search.TextSearch(this.panelNode, findRow);
-
- var caseSensitive = Firebug.Search.isCaseSensitive(text);
- var cookieRow = search.find(text, false, caseSensitive);
- if (!cookieRow)
- return false;
-
- for (; cookieRow; cookieRow = search.findNext(false, false, false, caseSensitive))
- {
- Css.setClass(cookieRow, "matched");
- this.matchSet.push(cookieRow);
- }
-
- return true;
- },
-
- getPopupObject: function(target)
- {
- var header = Dom.getAncestorByClass(target, "cookieHeaderRow");
- if (header)
- return CookieReps.CookieTable;
-
- return Firebug.ActivablePanel.getPopupObject.apply(this, arguments);
- },
-
- findRepObject: function(cookie)
- {
- var strippedHost = CookieUtils.makeStrippedHost(cookie.host);
-
- var result = null;
- this.enumerateCookies(function(rep)
- {
- if (rep.rawHost == strippedHost &&
- rep.cookie.name == cookie.name &&
- rep.cookie.path == cookie.path)
- {
- result = rep;
- return true; // break iteration
- }
- });
-
- return result;
- },
-
- supportsObject: function(object)
- {
- return object instanceof Cookie;
- },
-
- updateSelection: function(cookie)
- {
- var repCookie = this.findRepObject(cookie.cookie);
- if (!repCookie)
- return;
-
- CookieReps.CookieRow.toggleRow(repCookie.row, true);
- Dom.scrollIntoCenterView(repCookie.row);
- },
-
- enumerateCookies: function(fn)
- {
- if (!this.table)
- return;
-
- var rows = Dom.getElementsByClass(this.table, "cookieRow");
- rows = Arr.cloneArray(rows);
- for (var i=0; i<rows.length; i++)
- {
- var cookie = Firebug.getRepObject(rows[i]);
- if (!cookie)
- continue;
-
- if (fn(cookie))
- break;
- }
- },
-
- getEditor: function(target, value)
- {
- if (!this.conditionEditor)
- this.conditionEditor = new Breakpoints.ConditionEditor(this.document);
- return this.conditionEditor;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Support for Break On Next
-
- breakOnNext: function(breaking)
- {
- this.context.breakOnCookie = breaking;
-
- if (FBTrace.DBG_COOKIES)
- {
- FBTrace.sysout("cookies.breakOnNext; " + context.breakOnCookie + ", " +
- context.getName());
- }
- },
-
- shouldBreakOnNext: function()
- {
- return this.context.breakOnCookie;
- },
-
- getBreakOnNextTooltip: function(enabled)
- {
- return (enabled ? Locale.$STR("cookies.Disable Break On Cookie") :
- Locale.$STR("cookies.Break On Cookie"));
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Console Panel Listeners
-
- onFiltersSet: function(logTypes)
- {
- logTypes.cookies = 1;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Panel Activation
-
- onActivationChanged: function(enable)
- {
- if (FBTrace.DBG_COOKIES || FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("cookies.CookiePanel.onActivationChanged; " + enable);
-
- if (enable)
- {
- Firebug.CookieModule.addObserver(this);
- Firebug.Debugger.addListener(Firebug.CookieModule.DebuggerListener);
- Firebug.Console.addListener(Firebug.CookieModule.ConsoleListener);
- }
- else
- {
- Firebug.CookieModule.removeObserver(this);
- Firebug.Debugger.removeListener(Firebug.CookieModule.DebuggerListener);
- Firebug.Console.removeListener(Firebug.CookieModule.ConsoleListener);
- }
- },
-
- // Support for info tips.
- showInfoTip: function(infoTip, target, x, y)
- {
- var row = Dom.getAncestorByClass(target, "cookieRow");
- if (row && row.repObject)
- {
- if (Dom.getAncestorByClass(target, "cookieSizeCol") ||
- Dom.getAncestorByClass(target, "cookieRawSizeCol"))
- {
- var infoTipCookieId = "cookiesize-"+row.repObject.name;
- if (infoTipCookieId == this.infoTipCookieId && row.repObject == this.infoTipCookie)
- return true;
-
- this.infoTipCookieId = infoTipCookieId;
- this.infoTipCookie = row.repObject;
- return this.populateSizeInfoTip(infoTip, row.repObject);
- }
- }
-
- delete this.infoTipCookieId;
- return false;
- },
-
- populateSizeInfoTip: function(infoTip, cookie)
- {
- CookieReps.SizeInfoTip.render(cookie, infoTip);
- return true;
- },
-});
-
-// ********************************************************************************************* //
-// Cookie Breakpoints
-
-/**
- * @class Represents an {@link Firebug.Debugger} listener. This listener is reponsible for
- * providing a list of cookie breakpoints for the Breakpoints side panel.
- */
-Firebug.CookieModule.DebuggerListener =
-{
- getBreakpoints: function(context, groups)
- {
- if (!context.cookies.breakpoints.isEmpty())
- groups.push(context.cookies.breakpoints);
- }
-};
-
-// ********************************************************************************************* //
-// Custom output in the Console panel for document.cookie
-
-Firebug.CookieModule.ConsoleListener =
-{
- tag:
- DIV({_repObject: "$object"},
- DIV({"class": "documentCookieBody"})
- ),
-
- log: function(context, object, className, sourceLink)
- {
- //xxxHonza: Chromebug says it's null sometimes.
- if (!context)
- return;
-
- if (object !== context.window.document.cookie)
- return;
-
- // Parse "document.cookie" string
- var cookies = CookieUtils.parseSentCookiesFromString(object);
- if (!cookies || !cookies.length)
- return;
-
- // Create an empty log row that serves as a container for the list of cookies
- // created from the document.cookie property
- var appendObject = Firebug.ConsolePanel.prototype.appendObject;
- var row = Firebug.ConsoleBase.logRow(appendObject, object, context,
- "documentCookie", this, null, true);
-
- var rowBody = Dom.getElementByClass(row, "documentCookieBody");
- CookieReps.CookieTable.render(cookies, rowBody);
- },
-
- logFormatted: function(context, objects, className, sourceLink)
- {
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(CookiePanel);
-
-return CookiePanel;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/xpcom",
+ "firebug/lib/object",
+ "firebug/lib/locale",
+ "firebug/lib/domplate",
+ "firebug/lib/dom",
+ "firebug/lib/options",
+ "firebug/lib/persist",
+ "firebug/lib/string",
+ "firebug/lib/http",
+ "firebug/lib/css",
+ "firebug/lib/events",
+ "firebug/lib/array",
+ "firebug/lib/search",
+ "firebug/cookies/menuUtils",
+ "firebug/cookies/cookieReps",
+ "firebug/cookies/headerResizer",
+ "firebug/cookies/cookieObserver",
+ "firebug/cookies/cookieUtils",
+ "firebug/cookies/cookie",
+ "firebug/cookies/breakpoints",
+ "firebug/cookies/cookiePermissions",
+ "firebug/cookies/cookieClipboard",
+],
+function(Xpcom, Obj, Locale, Domplate, Dom, Options, Persist, Str, Http, Css, Events, Arr, Search,
+ MenuUtils, CookieReps, HeaderResizer, CookieObserver, CookieUtils, Cookie, Breakpoints,
+ CookiePermissions, CookieClipboard) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Ci = Components.interfaces;
+
+// Cookies preferences
+const showRejectedCookies = "cookies.showRejectedCookies";
+const lastSortedColumn = "cookies.lastSortedColumn";
+const hiddenColsPref = "cookies.hiddenColumns";
+const removeConfirmation = "cookies.removeConfirmation";
+
+// Services
+var cookieManager = Xpcom.CCSV("@mozilla.org/cookiemanager;1", "nsICookieManager2");
+
+const panelName = "cookies";
+
+// ********************************************************************************************* //
+// Panel Implementation
+
+/**
+ * @panel This class represents the Cookies panel that is displayed within
+ * Firebug UI.
+ */
+function CookiePanel() {}
+
+CookiePanel.prototype = Obj.extend(Firebug.ActivablePanel,
+/** @lends CookiePanel */
+{
+ name: panelName,
+ title: Locale.$STR("cookies.Panel"),
+ searchable: true,
+ breakable: true,
+
+ // Place just after the Net panel
+ order: 200,
+
+ initialize: function(context, doc)
+ {
+ // xxxHonza:
+ // This initialization is made as soon as the Cookies panel
+ // is opened the first time.
+ // This means that columns are *not* resizable within the console
+ // (rejected cookies) till this activation isn't executed.
+
+ // Initialize event listeners before the ancestor is called
+ var hcr = HeaderResizer;
+ this.onMouseClick = Obj.bind(hcr.onMouseClick, hcr);
+ this.onMouseDown = Obj.bind(hcr.onMouseDown, hcr);
+ this.onMouseMove = Obj.bind(hcr.onMouseMove, hcr);
+ this.onMouseUp = Obj.bind(hcr.onMouseUp, hcr);
+ this.onMouseOut = Obj.bind(hcr.onMouseOut, hcr);
+
+ this.onContextMenu = Obj.bind(this.onContextMenu, this);
+
+ Firebug.ActivablePanel.initialize.apply(this, arguments);
+
+ Firebug.ConsolePanel.prototype.addListener(this);
+
+ // Just after the initialization, so the this.document member is set
+ Firebug.CookieModule.addStyleSheet(this);
+
+ this.refresh();
+ },
+
+ shutdown: function()
+ {
+ Firebug.ConsolePanel.prototype.removeListener(this);
+ },
+
+ /**
+ * Renders the list of cookies displayed within the Cookies panel
+ */
+ refresh: function()
+ {
+ if (!Firebug.CookieModule.isEnabled(this.context))
+ return;
+
+ // Create cookie list table
+ this.table = CookieReps.CookieTable.createTable(this.panelNode);
+
+ // Cookies are displayed only for web pages
+ var location = this.context.window.location;
+ if (!location)
+ return;
+
+ var protocol = location.protocol;
+ if (protocol.indexOf("http") != 0)
+ return;
+
+ // Get list of cookies for the current page
+ var cookies = [];
+ var iter = cookieManager.enumerator;
+ while (iter.hasMoreElements())
+ {
+ var cookie = iter.getNext();
+ if (!cookie)
+ break;
+
+ cookie = cookie.QueryInterface(Ci.nsICookie2);
+ if (!CookieObserver.isCookieFromContext(this.context, cookie))
+ continue;
+
+ var cookieWrapper = new Cookie(CookieUtils.makeCookieObject(cookie));
+ cookies.push(cookieWrapper);
+ }
+
+ // If the filter allows it, display all rejected cookies as well.
+ if (Options.get(showRejectedCookies))
+ {
+ // xxxHonza: this.context.cookies is sometimes null, but
+ // this must be because FB isn't correctly initialized.
+ if (!this.context.cookies)
+ {
+ if (FBTrace.DBG_COOKIES)
+ {
+ FBTrace.sysout(
+ "cookies.Cookie context isn't properly initialized - ERROR: " +
+ this.context.getName());
+ }
+ return;
+ }
+
+ var activeHosts = this.context.cookies.activeHosts;
+ for (var hostName in activeHosts)
+ {
+ var host = activeHosts[hostName];
+ if (!host.rejected)
+ continue;
+
+ var receivedCookies = host.receivedCookies;
+ if (receivedCookies)
+ cookies = Arr.extendArray(cookies, receivedCookies);
+ }
+ }
+
+ // Generate HTML list of cookies using Domplate
+ if (cookies.length)
+ {
+ var header = Dom.getElementByClass(this.table, "cookieHeaderRow");
+ var tag = CookieReps.CookieRow.cookieTag;
+ var row = tag.insertRows({cookies: cookies}, header)[0];
+ for (var i=0; i<cookies.length; i++)
+ {
+ var cookie = cookies[i];
+ cookie.row = row;
+
+ Breakpoints.updateBreakpoint(this.context, cookie);
+ row = row.nextSibling;
+ }
+ }
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.Cookie list refreshed.", cookies);
+
+ // Automatically sort the last sorted column. The preference stores
+ // two things: name of the sorted column and sort direction asc|desc.
+ // Example: colExpires asc
+ var prefValue = Options.get(lastSortedColumn);
+ if (prefValue)
+ {
+ var values = prefValue.split(" ");
+ CookieReps.CookieTable.sortColumn(this.table, values[0], values[1]);
+ }
+
+ // Update visibility of columns according to the preferences
+ var hiddenCols = Options.get(hiddenColsPref);
+ if (hiddenCols)
+ this.table.setAttribute("hiddenCols", hiddenCols);
+
+ // Remove certain context menu items on cookiePanel display
+ this.table.setAttribute("removedCols", ["colMaxAge"]);
+ },
+
+ initializeNode: function(oldPanelNode)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.CookiePanel.initializeNode");
+
+ // xxxHonza:
+ // This method isn't called when FB UI is detached. So, the columns
+ // are *not* resizable when FB is open in an external window.
+
+ // Register event handlers for table column resizing
+ this.document.addEventListener("click", this.onMouseClick, true);
+ this.document.addEventListener("mousedown", this.onMouseDown, true);
+ this.document.addEventListener("mousemove", this.onMouseMove, true);
+ this.document.addEventListener("mouseup", this.onMouseUp, true);
+ this.document.addEventListener("mouseout", this.onMouseOut, true);
+
+ this.panelNode.addEventListener("contextmenu", this.onContextMenu, false);
+ },
+
+ destroyNode: function()
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.CookiePanel.destroyNode");
+
+ this.document.removeEventListener("mouseclick", this.onMouseClick, true);
+ this.document.removeEventListener("mousedown", this.onMouseDown, true);
+ this.document.removeEventListener("mousemove", this.onMouseMove, true);
+ this.document.removeEventListener("mouseup", this.onMouseUp, true);
+ this.document.removeEventListener("mouseout", this.onMouseOut, true);
+
+ this.panelNode.removeEventListener("contextmenu", this.onContextMenu, false);
+ },
+
+ onContextMenu: function(event)
+ {
+ Breakpoints.onContextMenu(this.context, event);
+ },
+
+ detach: function(oldChrome, newChrome)
+ {
+ Firebug.ActivablePanel.detach.apply(this, arguments);
+ },
+
+ reattach: function(doc)
+ {
+ Firebug.ActivablePanel.reattach.apply(this, arguments);
+ },
+
+ clear: function()
+ {
+ if (this.panelNode)
+ Dom.clearNode(this.panelNode);
+
+ this.table = null;
+ },
+
+ show: function(state)
+ {
+ // Update permission button in the toolbar
+ CookiePermissions.updatePermButton(this.context);
+
+ // For backward compatibility with Firebug 1.1
+ //
+ // Firebug 1.6 removes Firebug.DisabledPanelPage, simplifies the activation
+ // and the following code is not necessary any more.
+ if (Firebug.ActivableModule && Firebug.DisabledPanelPage)
+ {
+ var shouldShow = Firebug.CookieModule.isEnabled(this.context);
+ this.showToolbarButtons("fbCookieButtons", shouldShow);
+ if (!shouldShow)
+ {
+ // The activation model has been changed in Firebug 1.4. This is
+ // just to keep backward compatibility.
+ if (Firebug.DisabledPanelPage.show)
+ Firebug.DisabledPanelPage.show(this, Firebug.CookieModule);
+ else
+ Firebug.CookieModule.disabledPanelPage.show(this);
+ return;
+ }
+ }
+ else
+ {
+ this.showToolbarButtons("fbCookieButtons", true);
+ }
+
+ if (Firebug.chrome.setGlobalAttribute)
+ {
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_resumeExecution", "breakable", "true");
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_resumeExecution", "tooltiptext",
+ Locale.$STR("cookies.Break On Cookie"));
+ }
+ },
+
+ hide: function()
+ {
+ this.showToolbarButtons("fbCookieButtons", false);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Options menu
+
+ getOptionsMenuItems: function(context)
+ {
+ return [
+ MenuUtils.optionAllowGlobally(context, "cookies.AllowGlobally",
+ "cookies.tip.AllowGlobally", "network.cookie", "cookieBehavior"),
+ /*MenuUtils.optionMenu(context, "cookies.clearWhenDeny",
+ "cookies.tip.clearWhenDeny", Firebug.prefDomain, clearWhenDeny),*/
+ MenuUtils.optionMenu(context, "cookies.Confirm cookie removal",
+ "cookies.tip.Confirm cookie removal", Firebug.prefDomain, removeConfirmation)
+ ];
+ },
+
+ getContextMenuItems: function(object, target)
+ {
+ var items = [];
+
+ // If the user clicked a cookie row, the context menu is already
+ // initialized and so bail out.
+ var cookieRow = Dom.getAncestorByClass(target, "cookieRow");
+ if (cookieRow)
+ return items;
+
+ // Also bail out if the user clicked on the header.
+ var header = Dom.getAncestorByClass(target, "cookieHeaderRow");
+ if (header)
+ return items;
+
+ // Make sure default items (cmd_copy) are removed
+ CookieReps.Rep.getContextMenuItems.apply(this, arguments);
+
+ return items;
+ },
+
+ search: function(text)
+ {
+ if (!text)
+ return;
+
+ // Make previously visible nodes invisible again
+ if (this.matchSet)
+ {
+ for (var i in this.matchSet)
+ Css.removeClass(this.matchSet[i], "matched");
+ }
+
+ this.matchSet = [];
+
+ function findRow(node)
+ {
+ return Dom.getAncestorByClass(node, "cookieRow");
+ }
+
+ var search = new Search.TextSearch(this.panelNode, findRow);
+
+ var caseSensitive = Firebug.Search.isCaseSensitive(text);
+ var cookieRow = search.find(text, false, caseSensitive);
+ if (!cookieRow)
+ return false;
+
+ for (; cookieRow; cookieRow = search.findNext(false, false, false, caseSensitive))
+ {
+ Css.setClass(cookieRow, "matched");
+ this.matchSet.push(cookieRow);
+ }
+
+ return true;
+ },
+
+ getPopupObject: function(target)
+ {
+ var header = Dom.getAncestorByClass(target, "cookieHeaderRow");
+ if (header)
+ return CookieReps.CookieTable;
+
+ return Firebug.ActivablePanel.getPopupObject.apply(this, arguments);
+ },
+
+ findRepObject: function(cookie)
+ {
+ var strippedHost = CookieUtils.makeStrippedHost(cookie.host);
+
+ var result = null;
+ this.enumerateCookies(function(rep)
+ {
+ if (rep.rawHost == strippedHost &&
+ rep.cookie.name == cookie.name &&
+ rep.cookie.path == cookie.path)
+ {
+ result = rep;
+ return true; // break iteration
+ }
+ });
+
+ return result;
+ },
+
+ supportsObject: function(object)
+ {
+ return object instanceof Cookie;
+ },
+
+ updateSelection: function(cookie)
+ {
+ var repCookie = this.findRepObject(cookie.cookie);
+ if (!repCookie)
+ return;
+
+ CookieReps.CookieRow.toggleRow(repCookie.row, true);
+ Dom.scrollIntoCenterView(repCookie.row);
+ },
+
+ enumerateCookies: function(fn)
+ {
+ if (!this.table)
+ return;
+
+ var rows = Dom.getElementsByClass(this.table, "cookieRow");
+ rows = Arr.cloneArray(rows);
+ for (var i=0; i<rows.length; i++)
+ {
+ var cookie = Firebug.getRepObject(rows[i]);
+ if (!cookie)
+ continue;
+
+ if (fn(cookie))
+ break;
+ }
+ },
+
+ getEditor: function(target, value)
+ {
+ if (!this.conditionEditor)
+ this.conditionEditor = new Breakpoints.ConditionEditor(this.document);
+ return this.conditionEditor;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Support for Break On Next
+
+ breakOnNext: function(breaking)
+ {
+ this.context.breakOnCookie = breaking;
+
+ if (FBTrace.DBG_COOKIES)
+ {
+ FBTrace.sysout("cookies.breakOnNext; " + context.breakOnCookie + ", " +
+ context.getName());
+ }
+ },
+
+ shouldBreakOnNext: function()
+ {
+ return this.context.breakOnCookie;
+ },
+
+ getBreakOnNextTooltip: function(enabled)
+ {
+ return (enabled ? Locale.$STR("cookies.Disable Break On Cookie") :
+ Locale.$STR("cookies.Break On Cookie"));
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Console Panel Listeners
+
+ onFiltersSet: function(logTypes)
+ {
+ logTypes.cookies = 1;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Panel Activation
+
+ onActivationChanged: function(enable)
+ {
+ if (FBTrace.DBG_COOKIES || FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("cookies.CookiePanel.onActivationChanged; " + enable);
+
+ if (enable)
+ {
+ Firebug.CookieModule.addObserver(this);
+ Firebug.Debugger.addListener(Firebug.CookieModule.DebuggerListener);
+ Firebug.Console.addListener(Firebug.CookieModule.ConsoleListener);
+ }
+ else
+ {
+ Firebug.CookieModule.removeObserver(this);
+ Firebug.Debugger.removeListener(Firebug.CookieModule.DebuggerListener);
+ Firebug.Console.removeListener(Firebug.CookieModule.ConsoleListener);
+ }
+ },
+
+ // Support for info tips.
+ showInfoTip: function(infoTip, target, x, y)
+ {
+ var row = Dom.getAncestorByClass(target, "cookieRow");
+ if (row && row.repObject)
+ {
+ if (Dom.getAncestorByClass(target, "cookieSizeCol") ||
+ Dom.getAncestorByClass(target, "cookieRawSizeCol"))
+ {
+ var infoTipCookieId = "cookiesize-"+row.repObject.name;
+ if (infoTipCookieId == this.infoTipCookieId && row.repObject == this.infoTipCookie)
+ return true;
+
+ this.infoTipCookieId = infoTipCookieId;
+ this.infoTipCookie = row.repObject;
+ return this.populateSizeInfoTip(infoTip, row.repObject);
+ }
+ }
+
+ delete this.infoTipCookieId;
+ return false;
+ },
+
+ populateSizeInfoTip: function(infoTip, cookie)
+ {
+ CookieReps.SizeInfoTip.render(cookie, infoTip);
+ return true;
+ },
+});
+
+// ********************************************************************************************* //
+// Cookie Breakpoints
+
+/**
+ * @class Represents an {@link Firebug.Debugger} listener. This listener is reponsible for
+ * providing a list of cookie breakpoints for the Breakpoints side panel.
+ */
+Firebug.CookieModule.DebuggerListener =
+{
+ getBreakpoints: function(context, groups)
+ {
+ if (!context.cookies.breakpoints.isEmpty())
+ groups.push(context.cookies.breakpoints);
+ }
+};
+
+// ********************************************************************************************* //
+// Custom output in the Console panel for document.cookie
+
+Firebug.CookieModule.ConsoleListener =
+{
+ tag:
+ DIV({_repObject: "$object"},
+ DIV({"class": "documentCookieBody"})
+ ),
+
+ log: function(context, object, className, sourceLink)
+ {
+ //xxxHonza: Chromebug says it's null sometimes.
+ if (!context)
+ return;
+
+ if (object !== context.window.document.cookie)
+ return;
+
+ // Parse "document.cookie" string
+ var cookies = CookieUtils.parseSentCookiesFromString(object);
+ if (!cookies || !cookies.length)
+ return;
+
+ // Create an empty log row that serves as a container for the list of cookies
+ // created from the document.cookie property
+ var appendObject = Firebug.ConsolePanel.prototype.appendObject;
+ var row = Firebug.ConsoleBase.logRow(appendObject, object, context,
+ "documentCookie", this, null, true);
+
+ var rowBody = Dom.getElementByClass(row, "documentCookieBody");
+ CookieReps.CookieTable.render(cookies, rowBody);
+ },
+
+ logFormatted: function(context, objects, className, sourceLink)
+ {
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(CookiePanel);
+
+return CookiePanel;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/cookies/cookiePanel.xul b/content/firebug/cookies/cookiePanel.xul
index 1235af0..c45ef6a 100644
--- a/content/firebug/cookies/cookiePanel.xul
+++ b/content/firebug/cookies/cookiePanel.xul
@@ -1,153 +1,153 @@
-<?xml version="1.0"?>
-<!-- See license.txt for terms of usage -->
-
-<?xml-stylesheet href="chrome://firebug/skin/cookies/cookies.css"?>
-<?xml-stylesheet href="chrome://firebug/content/cookies/cookies.css"?>
-
-<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
- <commandset id="mainCommandSet">
- <command id="cmd_firebug_cookieRemoveAll" oncommand="Firebug.CookieModule.onRemoveAll(Firebug.currentContext)"/>
- <command id="cmd_firebug_cookieRemoveAllSession" oncommand="Firebug.CookieModule.onRemoveAllSession(Firebug.currentContext)"/>
- <command id="cmd_firebug_cookieCreate" oncommand="Firebug.CookieModule.onCreateCookie(Firebug.currentContext)"/>
- <command id="cmd_firebug_cookieViewAll" oncommand="Firebug.CookieModule.onViewAll(Firebug.currentContext)"/>
- <command id="cmd_firebug_cookieViewExceptions" oncommand="Firebug.CookieModule.onViewExceptions(Firebug.currentContext)"/>
- <command id="cmd_firebug_cookieFilterByPath" oncommand="Firebug.CookieModule.onFilter(Firebug.currentContext, 'cookies.filterByPath')"/>
- <command id="cmd_firebug_cookieShowRejectedCookies" oncommand="Firebug.CookieModule.onFilter(Firebug.currentContext, 'cookies.showRejectedCookies')"/>
- <command id="cmd_firebug_cookieExportAll" oncommand="Firebug.CookieModule.onExportAll(Firebug.currentContext)"/>
- <command id="cmd_firebug_cookieExportForSite" oncommand="Firebug.CookieModule.onExportForSite(Firebug.currentContext)"/>
- </commandset>
-
- <keyset id="mainKeyset">
- <key id="key_firebug_removeAllCookies" key="o" modifiers="control,shift" command="cmd_firebug_cookieRemoveAll" class="fbOnlyKey"/>
- </keyset>
-
- <!-- Firebug toolbar -->
- <toolbar id="fbToolbar" align="center">
- <hbox id="fbToolbarInner" insertbefore="fbDetachButton" flex="1" align="center">
-
- <!-- Console toolbar -->
- <hbox id="fbConsoleButtons">
- <toolbarbutton
- id="fbConsoleFilter-cookies"
- type="checkbox"
- label="cookies.console.Cookies"
- class="toolbar-text-button fbConsoleFilter fbInternational"
- tooltiptext="cookies.console.Filter By Cookies"
- oncommand="Firebug.Console.onToggleFilter(event, Firebug.currentContext, 'cookies')"/>
- </hbox>
-
- <!-- Cookies toolbar -->
- <hbox id="fbCookieButtons" insertafter="fbNetButtons" collapsed="true">
-
- <!-- The BON button is displayed as the first one without a separator. -->
- <toolbarseparator class="fbPanelSpecificButtonsSeparator"/>
-
- <!-- General cookies actions -->
- <toolbarbutton id="fcCookiesMenu" label="cookies.menu.Cookies" type="menu"
- class="fbInternational">
- <menupopup id="fcCookiesMenuPopup">
-
- <!-- Create cookies -->
- <tooltip id="fcCreateCookieTooltip"
- onpopupshowing="return Firebug.CookieModule.onCreateCookieShowTooltip(this, Firebug.currentContext)"/>
- <menuitem id="fcCreate" class="fbInternational"
- label="cookies.Create"
- tooltip="fcCreateCookieTooltip" command="cmd_firebug_cookieCreate"/>
- <menuseparator/>
-
- <!-- Remove all cookies -->
- <tooltip id="fcRemoveAllTooltip"
- onpopupshowing="return Firebug.CookieModule.onRemoveAllShowTooltip(this, Firebug.currentContext)"/>
- <menuitem id="fcRemoveAll" class="fbInternational"
- label="cookies.RemoveAll"
- key="key_firebug_removeAllCookies"
- tooltip="fcRemoveAllTooltip" command="cmd_firebug_cookieRemoveAll"/>
-
- <!-- Remove all session cookies -->
- <tooltip id="fcRemoveAllSessionTooltip"
- onpopupshowing="return Firebug.CookieModule.onRemoveAllSessionShowTooltip(this, Firebug.currentContext)"/>
- <menuitem id="fcRemoveAllSession" class="fbInternational"
- label="cookies.Remove Session Cookies"
- tooltip="fcRemoveAllSessionTooltip" command="cmd_firebug_cookieRemoveAllSession"/>
- <menuseparator/>
-
- <!-- Export cookies xxxHonza: remove this for now and wait for user feedback
- <menuitem id="fcExportAll" class="fbInternational"
- label="cookies.export.Export All Cookies"
- tooltiptext="cookies.export.Export All Cookies Tooltip"
- command="cmd_firebug_cookieExportAll"/> -->
- <tooltip id="fcExportForSiteTooltip"
- onpopupshowing="return Firebug.CookieModule.onExportForSiteShowTooltip(this, Firebug.currentContext)"/>
- <menuitem id="fcExportForSite" class="fbInternational"
- label="cookies.export.Export For Site"
- tooltip="fcExportForSiteTooltip" command="cmd_firebug_cookieExportForSite"/>
- </menupopup>
- </toolbarbutton>
-
- <!-- Filter cookies -->
- <toolbarbutton id="fcFilterMenu" type="menu" class="fbInternational"
- label="cookies.Filter"
- tooltiptext="cookies.FilterTooltip">
- <menupopup id="fcFilterMenuPopup"
- onpopupshowing="return Firebug.CookieModule.onFilterPopupShowing(this)">
- <menuitem id="fcFilterByPath" type="checkbox" class="fbInternational"
- value="cookies.filterByPath"
- label="cookies.filter.byPath"
- tooltiptext="cookies.filter.byPathTooltip"
- command="cmd_firebug_cookieFilterByPath"/>
- <menuitem id="fcShowRejectedCookies" type="checkbox"
- class="fbInternational"
- value="cookies.showRejectedCookies"
- label="cookies.filter.showRejectedCookies"
- tooltiptext="cookies.filter.showRejectedCookiesTooltip"
- command="cmd_firebug_cookieShowRejectedCookies"/>
- <!--<menuseparator/>
- <menu id="fcCustomPathFilter" label="cookies.Path Filter">
- <menupopup id="fcCustomPathFilterPanel" ignorekeys="true"
- onpopupshowing="return Firebug.CookieModule.onFilterPanelShowing(this, Firebug.currentContext)"
- onpopuphiding="return Firebug.CookieModule.onFilterPanelHiding(this, Firebug.currentContext)"
- onapply="Firebug.CookieModule.onFilterPanelApply(Firebug.currentContext)"/>
- </menu>-->
- </menupopup>
- </toolbarbutton>
- <toolbarseparator/>
-
- <!-- Cookie permissions -->
- <tooltip id="fcPermTooltip"
- onpopupshowing="return Firebug.CookieModule.Perm.onTooltipShowing(this, Firebug.currentContext)"/>
-
- <toolbarbutton id="fcPerm" type="menu" tooltip="fcPermTooltip">
- <menupopup id="fcPermMenuPopup"
- oncommand="return Firebug.CookieModule.Perm.onCommand(event, Firebug.currentContext, null)"
- onpopupshowing="return Firebug.CookieModule.Perm.onPopupShowing(this, Firebug.currentContext)"
- onpopuphiding="return Firebug.CookieModule.Perm.onPopupHiding(this, Firebug.currentContext)">
- <menuitem type="radio" name="fcPerm" value="default"/>
- <menuitem type="radio" name="fcPerm" value="host-deny"/>
- <menuitem type="radio" name="fcPerm" value="host-allow"/>
- <menuitem type="radio" name="fcPerm" value="host-allow-session"/>
- <!-- This doesn't seem to be working as expected comment out for now -->
- <!-- <menuitem type="radio" name="fcPerm" value="host-limit-third-party"/> -->
- </menupopup>
- </toolbarbutton>
-
- <!-- Tools xxxHonza: remove this for now and wait for user feedback.
- <toolbarseparator/>
- <toolbarbutton id="fcToolsMenu" type="menu" class="fbInternational"
- label="cookies.Tools"
- tooltiptext="cookies.ToolsTooltip">
- <menupopup>
- <menuitem id="fcCookieViewAll" class="fbInternational"
- command="cmd_firebug_cookieViewAll"
- label="cookies.ViewAll"
- tooltiptext="cookies.ViewAllTooltip"/>
- <menuitem id="fcCookieViewExceptions" class="fbInternational"
- command="cmd_firebug_cookieViewExceptions"
- label="cookies.ViewExceptions"
- tooltiptext="cookies.ViewExceptionsTooltip"/>
- </menupopup>
- </toolbarbutton> -->
- </hbox>
- </hbox>
- </toolbar>
-</overlay>
+<?xml version="1.0"?>
+<!-- See license.txt for terms of usage -->
+
+<?xml-stylesheet href="chrome://firebug/skin/cookies/cookies.css"?>
+<?xml-stylesheet href="chrome://firebug/content/cookies/cookies.css"?>
+
+<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <commandset id="mainCommandSet">
+ <command id="cmd_firebug_cookieRemoveAll" oncommand="Firebug.CookieModule.onRemoveAll(Firebug.currentContext)"/>
+ <command id="cmd_firebug_cookieRemoveAllSession" oncommand="Firebug.CookieModule.onRemoveAllSession(Firebug.currentContext)"/>
+ <command id="cmd_firebug_cookieCreate" oncommand="Firebug.CookieModule.onCreateCookie(Firebug.currentContext)"/>
+ <command id="cmd_firebug_cookieViewAll" oncommand="Firebug.CookieModule.onViewAll(Firebug.currentContext)"/>
+ <command id="cmd_firebug_cookieViewExceptions" oncommand="Firebug.CookieModule.onViewExceptions(Firebug.currentContext)"/>
+ <command id="cmd_firebug_cookieFilterByPath" oncommand="Firebug.CookieModule.onFilter(Firebug.currentContext, 'cookies.filterByPath')"/>
+ <command id="cmd_firebug_cookieShowRejectedCookies" oncommand="Firebug.CookieModule.onFilter(Firebug.currentContext, 'cookies.showRejectedCookies')"/>
+ <command id="cmd_firebug_cookieExportAll" oncommand="Firebug.CookieModule.onExportAll(Firebug.currentContext)"/>
+ <command id="cmd_firebug_cookieExportForSite" oncommand="Firebug.CookieModule.onExportForSite(Firebug.currentContext)"/>
+ </commandset>
+
+ <keyset id="mainKeyset">
+ <key id="key_firebug_removeAllCookies" key="o" modifiers="control,shift" command="cmd_firebug_cookieRemoveAll" class="fbOnlyKey"/>
+ </keyset>
+
+ <!-- Firebug toolbar -->
+ <toolbar id="fbToolbar" align="center">
+ <hbox id="fbToolbarInner" insertbefore="fbDetachButton" flex="1" align="center">
+
+ <!-- Console toolbar -->
+ <hbox id="fbConsoleButtons">
+ <toolbarbutton
+ id="fbConsoleFilter-cookies"
+ type="checkbox"
+ label="cookies.console.Cookies"
+ class="toolbar-text-button fbConsoleFilter fbInternational"
+ tooltiptext="cookies.console.Filter By Cookies"
+ oncommand="Firebug.Console.onToggleFilter(event, Firebug.currentContext, 'cookies')"/>
+ </hbox>
+
+ <!-- Cookies toolbar -->
+ <hbox id="fbCookieButtons" insertafter="fbNetButtons" collapsed="true">
+
+ <!-- The BON button is displayed as the first one without a separator. -->
+ <toolbarseparator class="fbPanelSpecificButtonsSeparator"/>
+
+ <!-- General cookies actions -->
+ <toolbarbutton id="fcCookiesMenu" label="cookies.menu.Cookies" type="menu"
+ class="fbInternational">
+ <menupopup id="fcCookiesMenuPopup">
+
+ <!-- Create cookies -->
+ <tooltip id="fcCreateCookieTooltip"
+ onpopupshowing="return Firebug.CookieModule.onCreateCookieShowTooltip(this, Firebug.currentContext)"/>
+ <menuitem id="fcCreate" class="fbInternational"
+ label="cookies.Create"
+ tooltip="fcCreateCookieTooltip" command="cmd_firebug_cookieCreate"/>
+ <menuseparator/>
+
+ <!-- Remove all cookies -->
+ <tooltip id="fcRemoveAllTooltip"
+ onpopupshowing="return Firebug.CookieModule.onRemoveAllShowTooltip(this, Firebug.currentContext)"/>
+ <menuitem id="fcRemoveAll" class="fbInternational"
+ label="cookies.RemoveAll"
+ key="key_firebug_removeAllCookies"
+ tooltip="fcRemoveAllTooltip" command="cmd_firebug_cookieRemoveAll"/>
+
+ <!-- Remove all session cookies -->
+ <tooltip id="fcRemoveAllSessionTooltip"
+ onpopupshowing="return Firebug.CookieModule.onRemoveAllSessionShowTooltip(this, Firebug.currentContext)"/>
+ <menuitem id="fcRemoveAllSession" class="fbInternational"
+ label="cookies.Remove Session Cookies"
+ tooltip="fcRemoveAllSessionTooltip" command="cmd_firebug_cookieRemoveAllSession"/>
+ <menuseparator/>
+
+ <!-- Export cookies xxxHonza: remove this for now and wait for user feedback
+ <menuitem id="fcExportAll" class="fbInternational"
+ label="cookies.export.Export All Cookies"
+ tooltiptext="cookies.export.Export All Cookies Tooltip"
+ command="cmd_firebug_cookieExportAll"/> -->
+ <tooltip id="fcExportForSiteTooltip"
+ onpopupshowing="return Firebug.CookieModule.onExportForSiteShowTooltip(this, Firebug.currentContext)"/>
+ <menuitem id="fcExportForSite" class="fbInternational"
+ label="cookies.export.Export For Site"
+ tooltip="fcExportForSiteTooltip" command="cmd_firebug_cookieExportForSite"/>
+ </menupopup>
+ </toolbarbutton>
+
+ <!-- Filter cookies -->
+ <toolbarbutton id="fcFilterMenu" type="menu" class="fbInternational"
+ label="cookies.Filter"
+ tooltiptext="cookies.FilterTooltip">
+ <menupopup id="fcFilterMenuPopup"
+ onpopupshowing="return Firebug.CookieModule.onFilterPopupShowing(this)">
+ <menuitem id="fcFilterByPath" type="checkbox" class="fbInternational"
+ value="cookies.filterByPath"
+ label="cookies.filter.byPath"
+ tooltiptext="cookies.filter.byPathTooltip"
+ command="cmd_firebug_cookieFilterByPath"/>
+ <menuitem id="fcShowRejectedCookies" type="checkbox"
+ class="fbInternational"
+ value="cookies.showRejectedCookies"
+ label="cookies.filter.showRejectedCookies"
+ tooltiptext="cookies.filter.showRejectedCookiesTooltip"
+ command="cmd_firebug_cookieShowRejectedCookies"/>
+ <!--<menuseparator/>
+ <menu id="fcCustomPathFilter" label="cookies.Path Filter">
+ <menupopup id="fcCustomPathFilterPanel" ignorekeys="true"
+ onpopupshowing="return Firebug.CookieModule.onFilterPanelShowing(this, Firebug.currentContext)"
+ onpopuphiding="return Firebug.CookieModule.onFilterPanelHiding(this, Firebug.currentContext)"
+ onapply="Firebug.CookieModule.onFilterPanelApply(Firebug.currentContext)"/>
+ </menu>-->
+ </menupopup>
+ </toolbarbutton>
+ <toolbarseparator/>
+
+ <!-- Cookie permissions -->
+ <tooltip id="fcPermTooltip"
+ onpopupshowing="return Firebug.CookieModule.Perm.onTooltipShowing(this, Firebug.currentContext)"/>
+
+ <toolbarbutton id="fcPerm" type="menu" tooltip="fcPermTooltip">
+ <menupopup id="fcPermMenuPopup"
+ oncommand="return Firebug.CookieModule.Perm.onCommand(event, Firebug.currentContext, null)"
+ onpopupshowing="return Firebug.CookieModule.Perm.onPopupShowing(this, Firebug.currentContext)"
+ onpopuphiding="return Firebug.CookieModule.Perm.onPopupHiding(this, Firebug.currentContext)">
+ <menuitem type="radio" name="fcPerm" value="default"/>
+ <menuitem type="radio" name="fcPerm" value="host-deny"/>
+ <menuitem type="radio" name="fcPerm" value="host-allow"/>
+ <menuitem type="radio" name="fcPerm" value="host-allow-session"/>
+ <!-- This doesn't seem to be working as expected comment out for now -->
+ <!-- <menuitem type="radio" name="fcPerm" value="host-limit-third-party"/> -->
+ </menupopup>
+ </toolbarbutton>
+
+ <!-- Tools xxxHonza: remove this for now and wait for user feedback.
+ <toolbarseparator/>
+ <toolbarbutton id="fcToolsMenu" type="menu" class="fbInternational"
+ label="cookies.Tools"
+ tooltiptext="cookies.ToolsTooltip">
+ <menupopup>
+ <menuitem id="fcCookieViewAll" class="fbInternational"
+ command="cmd_firebug_cookieViewAll"
+ label="cookies.ViewAll"
+ tooltiptext="cookies.ViewAllTooltip"/>
+ <menuitem id="fcCookieViewExceptions" class="fbInternational"
+ command="cmd_firebug_cookieViewExceptions"
+ label="cookies.ViewExceptions"
+ tooltiptext="cookies.ViewExceptionsTooltip"/>
+ </menupopup>
+ </toolbarbutton> -->
+ </hbox>
+ </hbox>
+ </toolbar>
+</overlay>
diff --git a/content/firebug/cookies/cookiePermissions.js b/content/firebug/cookies/cookiePermissions.js
index 46bb94a..ed3f320 100644
--- a/content/firebug/cookies/cookiePermissions.js
+++ b/content/firebug/cookies/cookiePermissions.js
@@ -1,240 +1,240 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/lib/xpcom",
- "firebug/lib/locale",
- "firebug/lib/options",
-],
-function(Obj, Xpcom, Locale, Options) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-
-var permissionManager = Xpcom.CCSV("@mozilla.org/permissionmanager;1", "nsIPermissionManager");
-
-// Firefox Preferences
-const networkPrefDomain = "network.cookie";
-const cookieBehaviorPref = "cookieBehavior";
-const cookieLifeTimePref = "lifetimePolicy";
-
-// The second item in the array says if the localized string expects
-// a domain name at the end.
-const permOptions =
-{
- "default-session": ["cookies.default.session", false],
- "default-third-party-session": ["cookies.default.thirdPartySession", false],
- "default-third-party": ["cookies.default.thirdParty", false],
- "default-limit-third-party": ["cookies.default.limitThirdParty", false],
- "default-allow": ["cookies.default.allow", false],
- "default-deny": ["cookies.default.deny", false],
- "default-warn": ["cookies.default.warn", false],
- "host-allow-session": ["cookies.host.session", true],
- "host-allow": ["cookies.host.accept", true],
- "host-deny": ["cookies.host.reject", true],
- "host-limit-third-party": ["cookies.host.limitThirdParty", true],
-};
-
-// ********************************************************************************************* //
-// Cookie Permissions
-
-/**
- * @class This class is responsible for managing cookie permissions.
- */
-var CookiePermissions = Obj.extend(Object,
-/** @lends CookiePermissions */
-{
- onCommand: function(event, context, location)
- {
- var menu = event.target;
- this.setPermission(context, menu.value, location);
- },
-
- onTooltipShowing: function(tooltip, context)
- {
- if (tooltip.fcEnabled)
- {
- var host = context.window.location.host;
- tooltip.label = Locale.$STRF("cookies.perm.manage.tooltip", [host]);
- }
-
- return tooltip.fcEnabled;
- },
-
- onPopupShowing: function(menu, context)
- {
- var permTooltip = Firebug.chrome.$("fcPermTooltip");
- permTooltip.fcEnabled = false;
-
- var items = menu.getElementsByTagName("menuitem");
- var location = context.browser.currentURI;
-
- var value = this.getPermission(location);
- var defaultValue = (value.indexOf("default") == 0) ? value : this.getDefaultPref();
-
- items[0].value = defaultValue;
-
- for (var i=0; i<items.length; i++)
- {
- var option = items[i].value;
- if (option == value)
- items[i].setAttribute("checked", "true");
- items[i].label = this.getLabel(option, location);
- }
-
- return true;
- },
-
- onPopupHiding: function(menu, context)
- {
- var permTooltip = Firebug.chrome.$("fcPermTooltip");
- permTooltip.fcEnabled = true;
- return true;
- },
-
- getContextMenuItems: function(cookie, target, context)
- {
- if (context.browser.currentURI.host == cookie.cookie.host)
- return null;
-
- var location = cookie.getURI();
- var value = this.getPermission(location);
- var defaultValue = (value.indexOf("default") == 0) ? value : this.getDefaultPref();
-
- var items = [];
- items.push("-");
-
- var menu = Firebug.chrome.$("fcPermMenuPopup");
- menu.childNodes[0].value = defaultValue;
- for (var i=0; i<menu.childNodes.length; i++)
- {
- var item = menu.childNodes[i];
- var option = item.value;
-
- items.push({
- label: this.getLabel(option, location),
- type: "radio",
- checked: (option == value),
- nol10n: true,
- command: Obj.bindFixed(this.onCommand, this, {target: item}, context, location),
- });
- }
-
- return items;
- },
-
- getPermission: function(location)
- {
- switch (permissionManager.testPermission(location, "cookie"))
- {
- case Ci.nsIPermissionManager.ALLOW_ACTION:
- return "host-allow";
- case Ci.nsIPermissionManager.DENY_ACTION:
- return "host-deny";
- case Ci.nsICookiePermission.ACCESS_SESSION:
- return "host-allow-session";
- case Ci.nsICookiePermission.ACCESS_LIMIT_THIRD_PARTY:
- return "host-limit-third-party";
-
- default:
- return this.getDefaultPref();
- }
- },
-
- setPermission: function(context, option, location)
- {
- var location = location ? location : context.browser.currentURI;
- permissionManager.remove(location.host, "cookie");
- switch(option)
- {
- case "host-allow-session":
- permissionManager.add(location, "cookie", Ci.nsICookiePermission.ACCESS_SESSION);
- break;
- case "host-limit-third-party":
- permissionManager.add(location, "cookie", Ci.nsICookiePermission.ACCESS_LIMIT_THIRD_PARTY);
- break;
- case "host-allow":
- permissionManager.add(location, "cookie", permissionManager.ALLOW_ACTION);
- break;
- case "host-deny":
- permissionManager.add(location, "cookie", permissionManager.DENY_ACTION);
-
- case "default-deny":
- if (Options.get("cookies.clearWhenDeny"))
- Firebug.CookieModule.onRemoveAllFromHost(context, location.host);
- break;
- }
-
- this.updatePermButton(context);
- },
-
- updatePermButton: function(context, chrome)
- {
- if (!chrome)
- chrome = context.chrome;
-
- // This is called through TabWatcher.iterateContexts and
- // "this" isn't passed along
- var location = context.browser.currentURI;
- var value = this.getPermission(location);
-
- var button = Firebug.chrome.$("fcPerm");
- button.label = this.getLabel(value, location);
- button.removeAttribute("disabled");
- button.setAttribute("value", value);
- },
-
- getLabel: function (option, location)
- {
- var optionInfo = permOptions[option];
- if (!optionInfo)
- return null;
-
- if (optionInfo[1])
- return Locale.$STRF(optionInfo[0], [location.host]);
-
- return Locale.$STR(optionInfo[0]);
- },
-
- getDefaultPref: function()
- {
- var behavior = Options.getPref(networkPrefDomain, cookieBehaviorPref);
- if (typeof(behavior) == "undefined")
- behavior = 0;
-
- if (behavior == 2)
- return "default-deny";
-
- switch (Options.getPref(networkPrefDomain, cookieLifeTimePref))
- {
- case 1:
- return "default-warn";
- case 2:
- return (behavior == 0) ? "default-third-party-session" : "default-session";
- }
-
- switch (behavior)
- {
- case 0:
- return "default-third-party";
- case 1:
- return "default-allow";
- case 3:
- return "default-limit-third-party";
- }
-
- return null;
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-return CookiePermissions;
-
-// ********************************************************************************************* //
-});
-
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/lib/xpcom",
+ "firebug/lib/locale",
+ "firebug/lib/options",
+],
+function(Obj, Xpcom, Locale, Options) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+
+var permissionManager = Xpcom.CCSV("@mozilla.org/permissionmanager;1", "nsIPermissionManager");
+
+// Firefox Preferences
+const networkPrefDomain = "network.cookie";
+const cookieBehaviorPref = "cookieBehavior";
+const cookieLifeTimePref = "lifetimePolicy";
+
+// The second item in the array says if the localized string expects
+// a domain name at the end.
+const permOptions =
+{
+ "default-session": ["cookies.default.session", false],
+ "default-third-party-session": ["cookies.default.thirdPartySession", false],
+ "default-third-party": ["cookies.default.thirdParty", false],
+ "default-limit-third-party": ["cookies.default.limitThirdParty", false],
+ "default-allow": ["cookies.default.allow", false],
+ "default-deny": ["cookies.default.deny", false],
+ "default-warn": ["cookies.default.warn", false],
+ "host-allow-session": ["cookies.host.session", true],
+ "host-allow": ["cookies.host.accept", true],
+ "host-deny": ["cookies.host.reject", true],
+ "host-limit-third-party": ["cookies.host.limitThirdParty", true],
+};
+
+// ********************************************************************************************* //
+// Cookie Permissions
+
+/**
+ * @class This class is responsible for managing cookie permissions.
+ */
+var CookiePermissions = Obj.extend(Object,
+/** @lends CookiePermissions */
+{
+ onCommand: function(event, context, location)
+ {
+ var menu = event.target;
+ this.setPermission(context, menu.value, location);
+ },
+
+ onTooltipShowing: function(tooltip, context)
+ {
+ if (tooltip.fcEnabled)
+ {
+ var host = context.window.location.host;
+ tooltip.label = Locale.$STRF("cookies.perm.manage.tooltip", [host]);
+ }
+
+ return tooltip.fcEnabled;
+ },
+
+ onPopupShowing: function(menu, context)
+ {
+ var permTooltip = Firebug.chrome.$("fcPermTooltip");
+ permTooltip.fcEnabled = false;
+
+ var items = menu.getElementsByTagName("menuitem");
+ var location = context.browser.currentURI;
+
+ var value = this.getPermission(location);
+ var defaultValue = (value.indexOf("default") == 0) ? value : this.getDefaultPref();
+
+ items[0].value = defaultValue;
+
+ for (var i=0; i<items.length; i++)
+ {
+ var option = items[i].value;
+ if (option == value)
+ items[i].setAttribute("checked", "true");
+ items[i].label = this.getLabel(option, location);
+ }
+
+ return true;
+ },
+
+ onPopupHiding: function(menu, context)
+ {
+ var permTooltip = Firebug.chrome.$("fcPermTooltip");
+ permTooltip.fcEnabled = true;
+ return true;
+ },
+
+ getContextMenuItems: function(cookie, target, context)
+ {
+ if (context.browser.currentURI.host == cookie.cookie.host)
+ return null;
+
+ var location = cookie.getURI();
+ var value = this.getPermission(location);
+ var defaultValue = (value.indexOf("default") == 0) ? value : this.getDefaultPref();
+
+ var items = [];
+ items.push("-");
+
+ var menu = Firebug.chrome.$("fcPermMenuPopup");
+ menu.childNodes[0].value = defaultValue;
+ for (var i=0; i<menu.childNodes.length; i++)
+ {
+ var item = menu.childNodes[i];
+ var option = item.value;
+
+ items.push({
+ label: this.getLabel(option, location),
+ type: "radio",
+ checked: (option == value),
+ nol10n: true,
+ command: Obj.bindFixed(this.onCommand, this, {target: item}, context, location),
+ });
+ }
+
+ return items;
+ },
+
+ getPermission: function(location)
+ {
+ switch (permissionManager.testPermission(location, "cookie"))
+ {
+ case Ci.nsIPermissionManager.ALLOW_ACTION:
+ return "host-allow";
+ case Ci.nsIPermissionManager.DENY_ACTION:
+ return "host-deny";
+ case Ci.nsICookiePermission.ACCESS_SESSION:
+ return "host-allow-session";
+ case Ci.nsICookiePermission.ACCESS_LIMIT_THIRD_PARTY:
+ return "host-limit-third-party";
+
+ default:
+ return this.getDefaultPref();
+ }
+ },
+
+ setPermission: function(context, option, location)
+ {
+ var location = location ? location : context.browser.currentURI;
+ permissionManager.remove(location.host, "cookie");
+ switch(option)
+ {
+ case "host-allow-session":
+ permissionManager.add(location, "cookie", Ci.nsICookiePermission.ACCESS_SESSION);
+ break;
+ case "host-limit-third-party":
+ permissionManager.add(location, "cookie", Ci.nsICookiePermission.ACCESS_LIMIT_THIRD_PARTY);
+ break;
+ case "host-allow":
+ permissionManager.add(location, "cookie", permissionManager.ALLOW_ACTION);
+ break;
+ case "host-deny":
+ permissionManager.add(location, "cookie", permissionManager.DENY_ACTION);
+
+ case "default-deny":
+ if (Options.get("cookies.clearWhenDeny"))
+ Firebug.CookieModule.onRemoveAllFromHost(context, location.host);
+ break;
+ }
+
+ this.updatePermButton(context);
+ },
+
+ updatePermButton: function(context, chrome)
+ {
+ if (!chrome)
+ chrome = context.chrome;
+
+ // This is called through TabWatcher.iterateContexts and
+ // "this" isn't passed along
+ var location = context.browser.currentURI;
+ var value = this.getPermission(location);
+
+ var button = Firebug.chrome.$("fcPerm");
+ button.label = this.getLabel(value, location);
+ button.removeAttribute("disabled");
+ button.setAttribute("value", value);
+ },
+
+ getLabel: function (option, location)
+ {
+ var optionInfo = permOptions[option];
+ if (!optionInfo)
+ return null;
+
+ if (optionInfo[1])
+ return Locale.$STRF(optionInfo[0], [location.host]);
+
+ return Locale.$STR(optionInfo[0]);
+ },
+
+ getDefaultPref: function()
+ {
+ var behavior = Options.getPref(networkPrefDomain, cookieBehaviorPref);
+ if (typeof(behavior) == "undefined")
+ behavior = 0;
+
+ if (behavior == 2)
+ return "default-deny";
+
+ switch (Options.getPref(networkPrefDomain, cookieLifeTimePref))
+ {
+ case 1:
+ return "default-warn";
+ case 2:
+ return (behavior == 0) ? "default-third-party-session" : "default-session";
+ }
+
+ switch (behavior)
+ {
+ case 0:
+ return "default-third-party";
+ case 1:
+ return "default-allow";
+ case 3:
+ return "default-limit-third-party";
+ }
+
+ return null;
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+return CookiePermissions;
+
+// ********************************************************************************************* //
+});
+
diff --git a/content/firebug/cookies/cookieReps.js b/content/firebug/cookies/cookieReps.js
index ea82cbb..e953a6b 100644
--- a/content/firebug/cookies/cookieReps.js
+++ b/content/firebug/cookies/cookieReps.js
@@ -1,1447 +1,1447 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/xpcom",
- "firebug/lib/object",
- "firebug/lib/locale",
- "firebug/lib/domplate",
- "firebug/lib/dom",
- "firebug/lib/options",
- "firebug/lib/persist",
- "firebug/lib/string",
- "firebug/lib/http",
- "firebug/lib/css",
- "firebug/lib/events",
- "firebug/lib/array",
- "firebug/lib/system",
- "firebug/cookies/baseObserver",
- "firebug/cookies/menuUtils",
- "firebug/cookies/cookieUtils",
- "firebug/cookies/cookie",
- "firebug/cookies/breakpoints",
- "firebug/cookies/cookieEvents",
- "firebug/cookies/cookiePermissions",
- "firebug/cookies/editCookie",
- "firebug/cookies/cookieClipboard",
-],
-function(Xpcom, Obj, Locale, Domplate, Dom, Options, Persist, Str, Http, Css, Events, Arr, System,
- BaseObserver, MenuUtils, CookieUtils, Cookie, Breakpoints, CookieEvents,
- CookiePermissions, EditCookie, CookieClipboard) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const lastSortedColumn = "cookies.lastSortedColumn";
-const hiddenColsPref = "cookies.hiddenColumns";
-
-const panelName = "cookies";
-
-// ********************************************************************************************* //
-// Templates Helpers
-
-// Object with all rep CookieReps.
-var CookieReps = {};
-
-/**
- * @domplate Basic template for Cookies panel UI.
- */
-CookieReps.Rep = domplate(Firebug.Rep,
-{
- getContextMenuItems: function(cookie, target, context)
- {
- // xxxHonza not sure how to do this better if the default Firebug's "Copy"
- // command (cmd_copy) shouldn't be there.
- var popup = Firebug.chrome.$("fbContextMenu");
- if (popup.firstChild && popup.firstChild.getAttribute("command") == "cmd_copy")
- popup.removeChild(popup.firstChild);
- }
-});
-
-// ********************************************************************************************* //
-// Cookie Template (domplate)
-
-/**
- * @domplate Represents a domplate template for cookie entry in the cookie list.
- */
-CookieReps.CookieRow = domplate(CookieReps.Rep,
-/** @lends CookieReps.CookieRow */
-{
- inspectable: true,
-
- cookieTag:
- FOR("cookie", "$cookies",
- TR({"class": "cookieRow", _repObject: "$cookie", onclick: "$onClickRow",
- $sessionCookie: "$cookie|isSessionCookie",
- $rejectedCookie: "$cookie|isRejected",
- $deletedCookie: "$cookie|isDeletedCookie"},
- TD({"class": "cookieDebugCol cookieCol"},
- DIV({"class": "sourceLine cookieRowHeader", onclick: "$onClickRowHeader"},
- " "
- )
- ),
- TD({"class": "cookieNameCol cookieCol"},
- DIV({"class": "cookieNameLabel cookieLabel"}, "$cookie|getName")
- ),
- TD({"class": "cookieValueCol cookieCol"},
- DIV({"class": "cookieValueLabel cookieLabel"},
- SPAN("$cookie.cookie.value|getValue")
- )
- ),
- TD({"class": "cookieRawValueCol cookieCol"},
- DIV({"class": "cookieRawValueLabel cookieLabel"},
- SPAN("$cookie.cookie.rawValue|getValue")
- )
- ),
- TD({"class": "cookieDomainCol cookieCol"},
- SPAN({"class": "cookieDomainLabel cookieLabel", onclick: "$onClickDomain"},
- "$cookie|getDomain")
- ),
- TD({"class": "cookieRawSizeCol cookieCol"},
- DIV({"class": "cookieRawSizeLabel cookieLabel"}, "$cookie|getRawSize")
- ),
- TD({"class": "cookieSizeCol cookieCol"},
- DIV({"class": "cookieSizeLabel cookieLabel"}, "$cookie|getSize")
- ),
- TD({"class": "cookiePathCol cookieCol"},
- DIV({"class": "cookiePathLabel cookieLabel", "title": "$cookie|getPath"},
- SPAN("$cookie|getPath")
- )
- ),
- TD({"class": "cookieExpiresCol cookieCol"},
- DIV({"class": "cookieExpiresLabel cookieLabel", "title": "$cookie|getDurationTooltip"}, "$cookie|getExpires")
- ),
- TD({"class": "cookieMaxAgeCol cookieCol"},
- DIV({"class": "cookieMaxAgeLabel cookieLabel", "title": "$cookie|getDurationTooltip"}, "$cookie|getMaxAge")
- ),
- TD({"class": "cookieHttpOnlyCol cookieCol"},
- DIV({"class": "cookieHttpOnlyLabel cookieLabel"}, "$cookie|isHttpOnly")
- ),
- TD({"class": "cookieSecurityCol cookieCol"},
- DIV({"class": "cookieSecurityLabel cookieLabel"}, "$cookie|isSecure")
- )
- )
- ),
-
- bodyRow:
- TR({"class": "cookieInfoRow"},
- TD({"class": "sourceLine cookieRowHeader"}),
- TD({"class": "cookieInfoCol", colspan: 12})
- ),
-
- bodyTag:
- DIV({"class": "cookieInfoBody", _repObject: "$cookie"},
- DIV({"class": "cookieInfoTabs"},
- A({"class": "cookieInfoValueTab cookieInfoTab", onclick: "$onClickTab",
- view: "Value"},
- Locale.$STR("cookies.info.valuetab.label")
- ),
- A({"class": "cookieInfoRawValueTab cookieInfoTab", onclick: "$onClickTab",
- view: "RawValue",
- $collapsed: "$cookie|hideRawValueTab"},
- Locale.$STR("cookies.info.rawdatatab.Raw Data")
- ),
- A({"class": "cookieInfoJsonTab cookieInfoTab", onclick: "$onClickTab",
- view: "Json",
- $collapsed: "$cookie|hideJsonTab"},
- Locale.$STR("cookies.info.jsontab.JSON")
- ),
- A({"class": "cookieInfoXmlTab cookieInfoTab", onclick: "$onClickTab",
- view: "Xml",
- $collapsed: "$cookie|hideXmlTab"},
- Locale.$STR("cookies.info.xmltab.XML")
- )
- ),
- DIV({"class": "cookieInfoValueText cookieInfoText"}),
- DIV({"class": "cookieInfoRawValueText cookieInfoText"}),
- DIV({"class": "cookieInfoJsonText cookieInfoText"}),
- DIV({"class": "cookieInfoXmlText cookieInfoText"})
- ),
-
- hideRawValueTab: function(cookie)
- {
- return (cookie.cookie.value == cookie.cookie.rawValue);
- },
-
- hideJsonTab: function(cookie)
- {
- return cookie.getJsonValue() ? false : true;
- },
-
- hideXmlTab: function(cookie)
- {
- return cookie.getXmlValue() ? false : true;
- },
-
- getAction: function(cookie)
- {
- return cookie.action;
- },
-
- getName: function(cookie)
- {
- return cookie.cookie.name;
- },
-
- getValue: function(value)
- {
- return Str.escapeNewLines(Str.cropString(value));
- },
-
- getDomain: function(cookie)
- {
- if (!cookie.cookie.host)
- return "";
-
- return cookie.cookie.host;
- },
-
- getMaxAge: function(cookie)
- {
- if (!cookie.cookie.maxAge)
- return "";
-
- return Str.formatTime(cookie.cookie.maxAge * 1000);
- },
-
- getExpires: function(cookie)
- {
- if (cookie.cookie.expires == undefined)
- return "";
-
- // The first character is space so, if the table is sorted according
- // to this column, all "Session" cookies are displayed at the begining.
- if (CookieUtils.isSessionCookie(cookie.cookie))
- return " " + Locale.$STR("cookies.Session");
-
- try
- {
- // Format the expires date using the current locale.
- var date = new Date(cookie.cookie.expires * 1000);
- return date.toLocaleString();
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("cookies.CookieRow.getExpires; EXCEPTION " + err, err);
- }
-
- return "";
- },
-
- getDurationTooltip: function(cookie)
- {
- if (CookieUtils.isDeletedCookie(cookie.cookie))
- return Locale.$STR("cookies.netinfo.deleted.tooltip");
- },
-
- isHttpOnly: function(cookie)
- {
- return cookie.cookie.isHttpOnly ? "HttpOnly" : "";
- },
-
- isSessionCookie: function(cookie)
- {
- return CookieUtils.isSessionCookie(cookie.cookie);
- },
-
- isDeletedCookie: function(cookie)
- {
- return CookieUtils.isDeletedCookie(cookie.cookie);
- },
-
- isRejected: function(cookie)
- {
- return !!cookie.cookie.rejected;
- },
-
- getRawSize: function(cookie)
- {
- var size = cookie.cookie.name.length + cookie.cookie.rawValue.length;
- return Str.formatSize(size);
- },
-
- getSize: function(cookie)
- {
- var size = cookie.cookie.name.length + cookie.cookie.value.length;
- return Str.formatSize(size);
- },
-
- getPath: function(cookie)
- {
- var path = cookie.cookie.path;
- return path ? path : "";
- },
-
- isDomainCookie: function(cookie)
- {
- return cookie.cookie.isDomain ? Locale.$STR("cookies.domain.label") : "";
- },
-
- isSecure: function(cookie)
- {
- return cookie.cookie.isSecure ? Locale.$STR("cookies.secure.label") : "";
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Highlighter
-
- highlightObject: function(object, context)
- {
- },
-
- unhighlightObject: function(object, context)
- {
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Firebug rep support
-
- supportsObject: function(cookie)
- {
- return cookie instanceof Cookie;
- },
-
- browseObject: function(cookie, context)
- {
- return false;
- },
-
- getRealObject: function(cookie, context)
- {
- var realObject = cookie.cookie.rawCookie;
- if (!realObject)
- {
- if (FBTrace.DBG_COOKIES || FBTrace.DBG_ERRORS)
- FBTrace.sysout("cookies.getRealObject; ERROR no real cookie object!");
-
- realObject = cookie.cookie;
- }
-
- return CookieUtils.getRealObject(realObject, context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Context Menu
-
- getContextMenuItems: function(cookie, target, context)
- {
- CookieReps.Rep.getContextMenuItems.apply(this, arguments);
-
- var items = [];
- var rejected = cookie.cookie.rejected;
-
- if (!rejected)
- {
- items.push({
- label: Locale.$STR("cookies.Cut"),
- nol10n: true,
- command: Obj.bindFixed(this.onCut, this, cookie)
- });
- }
-
- items.push({
- label: Locale.$STR("cookies.Copy"),
- nol10n: true,
- command: Obj.bindFixed(this.onCopy, this, cookie)
- });
-
- if (!rejected)
- {
- items.push({
- label: Locale.$STR("cookies.Paste"),
- nol10n: true,
- disabled: CookieClipboard.isCookieAvailable() ? false : true,
- command: Obj.bindFixed(this.onPaste, this, cookie)
- });
- items.push("-");
- }
-
- items.push({
- label: Locale.$STR("cookies.CopyAll"),
- nol10n: true,
- command: Obj.bindFixed(this.onCopyAll, this, cookie)
- });
-
- if (!rejected)
- {
- items.push("-");
- items.push({
- label: Locale.$STR("cookies.Delete"),
- nol10n: true,
- command: Obj.bindFixed(this.onRemove, this, cookie)
- });
-
- items.push("-");
- items.push({
- label: Locale.$STR("cookies.Edit"),
- nol10n: true,
- command: Obj.bindFixed(this.onEdit, this, cookie)
- });
-
- if (cookie.cookie.rawValue)
- {
- items.push({
- label: Locale.$STR("cookies.Clear Value"),
- nol10n: true,
- command: Obj.bindFixed(this.onClearValue, this, cookie)
- });
- }
- }
-
- // Permissions
- var permItems = CookiePermissions.getContextMenuItems(cookie, target, context);
- if (permItems)
- items = items.concat(permItems);
-
- // Breakpoints
- var breakOnItems = Breakpoints.getContextMenuItems(cookie, target, context);
- if (breakOnItems)
- items = items.concat(breakOnItems);
-
- return items;
- },
-
- // Context menu commands
- onCut: function(clickedCookie)
- {
- this.onCopy(clickedCookie);
- this.onRemove(clickedCookie);
- },
-
- onCopy: function(clickedCookie)
- {
- CookieClipboard.copyTo(clickedCookie);
- },
-
- onCopyAll: function(clickedCookie)
- {
- var text = "";
- var tbody = Dom.getAncestorByClass(clickedCookie.row, "cookieTable").firstChild;
- for (var row = tbody.firstChild; row; row = row.nextSibling) {
- if (Css.hasClass(row, "cookieRow") && row.repObject)
- text += row.repObject.toString() + "\n";
- }
-
- System.copyToClipboard(text);
- },
-
- onPaste: function(clickedCookie) // clickedCookie can be null if the user clicks within panel area.
- {
- var context = Firebug.currentContext;
- var values = CookieClipboard.getFrom();
- if (!values || !context)
- return;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.Get cookie values from clipboard", values);
-
- // Change name so it's unique and use the current host.
- values.name = Firebug.CookieModule.getDefaultCookieName(context, values.name);
- values.host = context.browser.currentURI.host;
-
- values.rawValue = values.value;
- values.value = unescape(values.value);
-
- // If the expire time isn't set use the default value.
- if (values.expires == undefined)
- values.expires = Firebug.CookieModule.getDefaultCookieExpireTime();
-
- // Create/modify cookie.
- var cookie = new Cookie(values);
- Firebug.CookieModule.createCookie(cookie);
-
- if (FBTrace.DBG_COOKIES)
- checkList(context.getPanel(panelName, true));
- },
-
- onRemove: function(cookie)
- {
- // Get the real XPCOM cookie object and remove it.
- var realCookie = cookie.cookie;
- if (!cookie.cookie.rejected)
- Firebug.CookieModule.removeCookie(realCookie.host, realCookie.name, realCookie.path);
- },
-
- onEdit: function(cookie)
- {
- var params = {
- cookie: cookie.cookie,
- action: "edit",
- window: null,
- EditCookie: EditCookie,
- Firebug: Firebug,
- FBTrace: FBTrace,
- };
-
- var parent = Firebug.currentContext.chrome.window;
- return parent.openDialog("chrome://firebug/content/cookies/editCookie.xul",
- "_blank", "chrome,centerscreen,resizable=yes,modal=yes",
- params);
- },
-
- onClearValue: function(cookie)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onClearValue;", cookie);
-
- var newCookie = new Cookie(cookie.cookie);
- newCookie.cookie.rawValue = "";
- Firebug.CookieModule.createCookie(newCookie);
- },
-
- // Event handlers
- onClickDomain: function(event)
- {
- if (Events.isLeftClick(event))
- {
- var domain = event.target.textContent;
- if (domain)
- {
- Events.cancelEvent(event);
- event.cancelBubble = true;
- //xxxHonza www.google.com (more windows are opened)
- // openNewTab(domain);
- }
- }
- },
-
- onClickRowHeader: function(event)
- {
- Events.cancelEvent(event);
-
- var rowHeader = event.target;
- if (!Css.hasClass(rowHeader, "cookieRowHeader"))
- return;
-
- var row = Dom.getAncestorByClass(event.target, "cookieRow");
- if (!row)
- return;
-
- var context = Firebug.getElementPanel(row).context;
- Breakpoints.onBreakOnCookie(context, row.repObject);
- },
-
- onClickRow: function(event)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.Click on cookie row.", event);
-
- if (Events.isLeftClick(event))
- {
- var row = Dom.getAncestorByClass(event.target, "cookieRow");
- if (row)
- {
- this.toggleRow(row);
- Events.cancelEvent(event);
- }
- }
- },
-
- toggleRow: function(row, forceOpen)
- {
- var opened = Css.hasClass(row, "opened");
- if (opened && forceOpen)
- return;
-
- Css.toggleClass(row, "opened");
-
- if (Css.hasClass(row, "opened"))
- {
- var bodyRow = this.bodyRow.insertRows({}, row)[0];
- var bodyCol = Dom.getElementByClass(bodyRow, "cookieInfoCol");
- var cookieInfo = this.bodyTag.replace({cookie: row.repObject}, bodyCol);
-
- // If JSON or XML tabs are available select them by default.
- if (this.selectTabByName(cookieInfo, "Json"))
- return;
-
- if (this.selectTabByName(cookieInfo, "Xml"))
- return;
-
- this.selectTabByName(cookieInfo, "Value");
- }
- else
- {
- row.parentNode.removeChild(row.nextSibling);
- }
- },
-
- selectTabByName: function(cookieInfoBody, tabName)
- {
- var tab = Dom.getChildByClass(cookieInfoBody, "cookieInfoTabs",
- "cookieInfo" + tabName + "Tab");
-
- // Don't select collapsed tabs.
- if (tab && !Css.hasClass(tab, "collapsed"))
- return this.selectTab(tab);
-
- return false;
- },
-
- onClickTab: function(event)
- {
- this.selectTab(event.currentTarget);
- },
-
- selectTab: function(tab)
- {
- var cookieInfoBody = tab.parentNode.parentNode;
-
- var view = tab.getAttribute("view");
- if (cookieInfoBody.selectedTab)
- {
- cookieInfoBody.selectedTab.removeAttribute("selected");
- cookieInfoBody.selectedText.removeAttribute("selected");
- }
-
- var textBodyName = "cookieInfo" + view + "Text";
-
- cookieInfoBody.selectedTab = tab;
- cookieInfoBody.selectedText = Dom.getChildByClass(cookieInfoBody, textBodyName);
-
- cookieInfoBody.selectedTab.setAttribute("selected", "true");
- cookieInfoBody.selectedText.setAttribute("selected", "true");
-
- var cookie = Firebug.getRepObject(cookieInfoBody);
- var context = Firebug.getElementPanel(cookieInfoBody).context;
- this.updateInfo(cookieInfoBody, cookie, context);
-
- return true;
- },
-
- updateRow: function(cookie, context)
- {
- var panel = context.getPanel(panelName, true);
- if (!panel)
- return;
-
- var parent = cookie.row.parentNode;
- var nextSibling = cookie.row.nextSibling;
- parent.removeChild(cookie.row);
-
- var row = CookieReps.CookieRow.cookieTag.insertRows({cookies: [cookie]},
- panel.table.lastChild.lastChild)[0];
-
- var opened = Css.hasClass(cookie.row, "opened");
-
- cookie.row = row;
- row.repObject = cookie;
-
- if (nextSibling && row.nextSibling != nextSibling)
- {
- parent.removeChild(cookie.row);
- parent.insertBefore(row, nextSibling);
- }
-
- if (opened)
- Css.setClass(row, "opened");
-
- Breakpoints.updateBreakpoint(context, cookie);
- },
-
- updateInfo: function(cookieInfoBody, cookie, context)
- {
- var tab = cookieInfoBody.selectedTab;
- if (Css.hasClass(tab, "cookieInfoValueTab"))
- {
- var valueBox = Dom.getChildByClass(cookieInfoBody, "cookieInfoValueText");
- if (!cookieInfoBody.valuePresented)
- {
- cookieInfoBody.valuePresented = true;
-
- var text = cookie.cookie.value;
- if (text != undefined)
- Str.insertWrappedText(text, valueBox);
- }
- }
- else if (Css.hasClass(tab, "cookieInfoRawValueTab"))
- {
- var valueBox = Dom.getChildByClass(cookieInfoBody, "cookieInfoRawValueText");
- if (!cookieInfoBody.rawValuePresented)
- {
- cookieInfoBody.rawValuePresented = true;
-
- var text = cookie.cookie.rawValue;
- if (text != undefined)
- Str.insertWrappedText(text, valueBox);
- }
- }
- else if (Css.hasClass(tab, "cookieInfoJsonTab"))
- {
- var valueBox = Dom.getChildByClass(cookieInfoBody, "cookieInfoJsonText");
- if (!cookieInfoBody.jsonPresented)
- {
- cookieInfoBody.jsonPresented = true;
-
- var jsonObject = cookie.getJsonValue();
- if (jsonObject) {
- Firebug.DOMPanel.DirTable.tag.replace(
- {object: jsonObject, toggles: this.toggles}, valueBox);
- }
- }
- }
- else if (Css.hasClass(tab, "cookieInfoXmlTab"))
- {
- var valueBox = Dom.getChildByClass(cookieInfoBody, "cookieInfoXmlText");
- if (!cookieInfoBody.xmlPresented)
- {
- cookieInfoBody.xmlPresented = true;
-
- var docElem = cookie.getXmlValue();
- if (docElem) {
- var tag = Firebug.HTMLPanel.CompleteElement.getNodeTag(docElem);
- tag.replace({object: docElem}, valueBox);
- }
- }
- }
- },
-
- updateTabs: function(cookieInfoBody, cookie, context)
- {
- // Iterate over all info-tabs and update visibility.
- var cookieInfoTabs = Dom.getElementByClass(cookieInfoBody, "cookieInfoTabs");
- var tab = cookieInfoTabs.firstChild;
- while (tab)
- {
- var view = tab.getAttribute("view");
- var hideTabCallback = CookieReps.CookieRow["hide" + view + "Tab"];
- if (hideTabCallback)
- {
- if (hideTabCallback(cookie))
- Css.setClass(tab, "collapsed");
- else
- Css.removeClass(tab, "collapsed");
- }
-
- tab = tab.nextSibling;
- }
-
- // If the selected tab was collapsed, make sure another one is selected.
- if (Css.hasClass(cookieInfoBody.selectedTab, "collapsed"))
- {
- if (this.selectTabByName(cookieInfoBody, "Json"))
- return;
-
- if (this.selectTabByName(cookieInfoBody, "Xml"))
- return;
-
- this.selectTabByName(cookieInfoBody, "Value");
- }
- }
-});
-
-// ********************************************************************************************* //
-// Console Event Templates (domplate)
-
-/**
- * @domplate This template is used for displaying cookie-changed events
- * (except of "clear") in the Console tab.
- */
-CookieReps.CookieChanged = domplate(CookieReps.Rep,
-{
- inspectable: false,
-
- // Console
- tag:
- DIV({"class": "cookieEvent", _repObject: "$object"},
- SPAN(Locale.$STR("cookies.console.cookie"), " "),
- SPAN({"class": "cookieNameLabel", onclick: "$onClick"},
- "$object|getName",
- " "),
- SPAN({"class": "cookieActionLabel"},
- "$object|getAction",
- ". "),
- SPAN({"class": "cookieValueLabel"},
- "$object|getValue"),
- DIV({"class": "cookieDomainLabel", onclick: "$onClickDomain",
- title: "$object|getOriginalURI"}, "$object|getDomain")
- ),
-
- // Event handlers
- onClick: function(event)
- {
- if (!Events.isLeftClick(event))
- return;
-
- var target = event.target;
-
- // Get associated nsICookie object.
- var cookieEvent = Firebug.getRepObject(target);
- if (!cookieEvent)
- return;
-
- var cookieWrapper = new Cookie(CookieUtils.makeCookieObject(cookieEvent.cookie));
- var context = Firebug.getElementPanel(target).context;
- context.chrome.select(cookieWrapper, panelName);
- },
-
- onClickDomain: function(event)
- {
- },
-
- getOriginalURI: function(cookieEvent)
- {
- var context = cookieEvent.context;
- var strippedHost = cookieEvent.rawHost;
-
- if (!context.cookies.activeCookies)
- return strippedHost;
-
- var cookie = cookieEvent.cookie;
- var activeCookies = context.cookies.activeCookies[cookie.host];
- if (!activeCookies)
- return strippedHost;
-
- var activeCookie = activeCookies[CookieUtils.getCookieId(cookie)];
-
- var originalURI;
- if (activeCookie)
- originalURI = activeCookie.originalURI.spec;
- else
- originalURI = cookieEvent.rawHost;
-
- if (FBTrace.DBG_COOKIES)
- {
- FBTrace.sysout("cookies.context.cookies.activeCookies[" + cookie.host + "]",
- activeCookies);
-
- FBTrace.sysout("cookies.Original URI for: " + CookieUtils.getCookieId(cookie) +
- " is: " + originalURI, activeCookie);
- }
-
- return originalURI;
- },
-
- getAction: function(cookieEvent)
- {
- // Return properly localized action.
- switch(cookieEvent.action)
- {
- case "deleted":
- return Locale.$STR("cookies.console.deleted");
- case "added":
- return Locale.$STR("cookies.console.added");
- case "changed":
- return Locale.$STR("cookies.console.changed");
- case "cleared":
- return Locale.$STR("cookies.console.cleared");
- }
-
- return "";
- },
-
- getName: function(cookieEvent)
- {
- return cookieEvent.cookie.name;
- },
-
- getValue: function(cookieEvent)
- {
- return Str.cropString(cookieEvent.cookie.value, 75);
- },
-
- getDomain: function(cookieEvent)
- {
- return cookieEvent.cookie.host;
- },
-
- // Firebug rep support
- supportsObject: function(cookieEvent)
- {
- return cookieEvent instanceof CookieEvents.CookieChangedEvent;
- },
-
- browseObject: function(cookieEvent, context)
- {
- return false;
- },
-
- getRealObject: function(cookieEvent, context)
- {
- return cookieEvent;
- },
-
- // Context menu
- getContextMenuItems: function(cookieEvent, target, context)
- {
- CookieReps.Rep.getContextMenuItems.apply(this, arguments);
- }
-});
-
-// ********************************************************************************************* //
-
-/**
- * @domplate Represents a domplate template for displaying rejected cookies.
- */
-CookieReps.CookieRejected = domplate(CookieReps.Rep,
-/** @lends CookieReps.CookieRejected */
-{
- inspectable: false,
-
- tag:
- DIV({"class": "cookieEvent", _repObject: "$object"},
- TABLE({cellpadding: 0, cellspacing: 0},
- TBODY(
- TR(
- TD({width: "100%"},
- SPAN({"class": "cookieRejectedLabel"},
- Locale.$STR("cookies.console.cookiesrejected")),
- " ",
- SPAN({"class": "cookieRejectedList"},
- "$object|getCookieList")
- ),
- TD(
- SPAN({"class": "cookieDomainLabel", onclick: "$onClickDomain"},
- "$object|getDomain"),
- SPAN(" ")
- )
- )
- )
- )
- ),
-
- supportsObject: function(object)
- {
- return object instanceof CookieEvents.CookieRejectedEvent;
- },
-
- getDomain: function(cookieEvent)
- {
- return cookieEvent.uri.host;
- },
-
- getCookieList: function(cookieEvent)
- {
- var context = cookieEvent.context;
- var activeHost = context.cookies.activeHosts[cookieEvent.uri.host];
- var cookies = activeHost.receivedCookies;
- if (!cookies)
- return Locale.$STR("cookies.console.nocookiesreceived");
-
- var label = "";
- for (var i=0; i<cookies.length; i++)
- label += cookies[i].cookie.name + ((i<cookies.length-1) ? ", " : "");
-
- return Str.cropString(label, 75);
- },
-
- onClickDomain: function(event)
- {
- },
-
- // Context menu
- getContextMenuItems: function(cookie, target, context)
- {
- CookieReps.Rep.getContextMenuItems.apply(this, arguments);
- }
-});
-
-// ********************************************************************************************* //
-
-/**
- * @domplate Represents a domplate template for cookie cleared event that is
- * visualised in Firebug Console panel.
- */
-CookieReps.CookieCleared = domplate(CookieReps.Rep,
-/** @lends CookieReps.CookieCleared */
-{
- inspectable: false,
-
- tag:
- DIV({_repObject: "$object"},
- DIV("$object|getLabel")
- ),
-
- supportsObject: function(object)
- {
- return object instanceof CookieEvents.CookieClearedEvent;
- },
-
- getLabel: function()
- {
- return Locale.$STR("cookies.console.cookiescleared");
- },
-
- // Context menu
- getContextMenuItems: function(cookie, target, context)
- {
- CookieReps.Rep.getContextMenuItems.apply(this, arguments);
- }
-});
-
-
-CookieReps.SizeInfoTip = domplate(Firebug.Rep,
-{
- tag:
- TABLE({"class": "sizeInfoTip", "id": "cookiesSizeInfoTip", role:"presentation"},
- TBODY(
- FOR("size", "$sizeInfo",
- TAG("$size|sizeTag", {size: "$size"})
- )
- )
- ),
-
- sizeTag:
- TR({"class": "sizeInfoRow"},
- TD({"class": "sizeInfoLabelCol"}, "$size.label"),
- TD({"class": "sizeInfoSizeCol"}, "$size|formatSize"),
- TD({"class": "sizeInfoDetailCol"}, "$size|formatNumber")
- ),
-
- formatSize: function(size)
- {
- return Str.formatSize(size.size);
- },
-
- formatNumber: function(size)
- {
- return size.size && size.size >= 1024 ? "(" + Str.formatNumber(size.size) + " B)" : "";
- },
-
- render: function(cookie, parentNode)
- {
- var size = cookie.getSize();
- var rawSize = cookie.getRawSize();
- var sizeInfo = [];
-
- sizeInfo.push({label: Locale.$STR("cookie.sizeinfo.Size"), size: size});
-
- if (size != rawSize)
- sizeInfo.push({label: Locale.$STR("cookie.sizeinfo.Raw_Size"), size: rawSize});
-
- this.tag.replace({sizeInfo: sizeInfo}, parentNode);
- },
-});
-
-// ********************************************************************************************* //
-// Header Template (domplate)
-
-/**
- * @domplate Represents a template for basic cookie list layout. This
- * template also includes a header and related functionality (such as sorting).
- */
-CookieReps.CookieTable = domplate(CookieReps.Rep,
-/** @lends CookieReps.CookieTable */
-{
- inspectable: false,
-
- tableTag:
- TABLE({"class": "cookieTable", cellpadding: 0, cellspacing: 0, hiddenCols: ""},
- TBODY(
- TR({"class": "cookieHeaderRow", onclick: "$onClickHeader"},
- TD({id: "cookieBreakpointBar", width: "1%", "class": "cookieHeaderCell"},
- " "
- ),
- TD({id: "colName", role: "columnheader",
- "class": "cookieHeaderCell alphaValue a11yFocus"},
- DIV({"class": "cookieHeaderCellBox",
- title: Locale.$STR("cookies.header.name.tooltip")},
- Locale.$STR("cookies.header.name"))
- ),
- TD({id: "colValue", role: "columnheader",
- "class": "cookieHeaderCell alphaValue a11yFocus"},
- DIV({"class": "cookieHeaderCellBox",
- title: Locale.$STR("cookies.header.value.tooltip")},
- Locale.$STR("cookies.header.value"))
- ),
- TD({id: "colRawValue", role: "columnheader",
- "class": "cookieHeaderCell alphaValue a11yFocus"},
- DIV({"class": "cookieHeaderCellBox",
- title: Locale.$STR("cookies.header.rawValue.tooltip")},
- Locale.$STR("cookies.header.rawValue"))
- ),
- TD({id: "colDomain", role: "columnheader",
- "class": "cookieHeaderCell alphaValue a11yFocus"},
- DIV({"class": "cookieHeaderCellBox",
- title: Locale.$STR("cookies.header.domain.tooltip")},
- Locale.$STR("cookies.header.domain"))
- ),
- TD({id: "colRawSize", role: "columnheader",
- "class": "cookieHeaderCell a11yFocus"},
- DIV({"class": "cookieHeaderCellBox",
- title: Locale.$STR("cookies.header.rawSize.tooltip")},
- Locale.$STR("cookies.header.rawSize"))
- ),
- TD({id: "colSize", role: "columnheader",
- "class": "cookieHeaderCell a11yFocus"},
- DIV({"class": "cookieHeaderCellBox",
- title: Locale.$STR("cookies.header.size.tooltip")},
- Locale.$STR("cookies.header.size"))
- ),
- TD({id: "colPath", role: "columnheader",
- "class": "cookieHeaderCell alphaValue a11yFocus"},
- DIV({"class": "cookieHeaderCellBox",
- title: Locale.$STR("cookies.header.path.tooltip")},
- Locale.$STR("cookies.header.path"))
- ),
- TD({id: "colExpires", role: "columnheader",
- "class": "cookieHeaderCell a11yFocus"},
- DIV({"class": "cookieHeaderCellBox",
- title: Locale.$STR("cookies.header.expires.tooltip")},
- Locale.$STR("cookies.header.expires"))
- ),
- TD({id: "colMaxAge", role: "columnheader",
- "class": "cookieHeaderCell a11yFocus"},
- DIV({"class": "cookieHeaderCellBox",
- title: Locale.$STR("cookies.header.maxAge.tooltip")},
- Locale.$STR("cookies.header.maxAge"))
- ),
- TD({id: "colHttpOnly", role: "columnheader",
- "class": "cookieHeaderCell alphaValue a11yFocus"},
- DIV({"class": "cookieHeaderCellBox",
- title: Locale.$STR("cookies.header.httponly.tooltip")},
- Locale.$STR("cookies.header.httponly"))
- ),
- TD({id: "colSecurity", role: "columnheader",
- "class": "cookieHeaderCell alphaValue a11yFocus"},
- DIV({"class": "cookieHeaderCellBox",
- title: Locale.$STR("cookies.header.security.tooltip")},
- Locale.$STR("cookies.header.security"))
- )
- )
- )
- ),
-
- onClickHeader: function(event)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onClickHeader");
-
- if (!Events.isLeftClick(event))
- return;
-
- var table = Dom.getAncestorByClass(event.target, "cookieTable");
- var column = Dom.getAncestorByClass(event.target, "cookieHeaderCell");
- this.sortColumn(table, column);
- },
-
- sortColumn: function(table, col, direction)
- {
- if (!col)
- return;
-
- if (typeof(col) == "string")
- {
- var doc = table.ownerDocument;
- col = doc.getElementById(col);
- }
-
- if (!col)
- return;
-
- var numerical = !Css.hasClass(col, "alphaValue");
-
- var colIndex = 0;
- for (col = col.previousSibling; col; col = col.previousSibling)
- ++colIndex;
-
- this.sort(table, colIndex, numerical, direction);
- },
-
- sort: function(table, colIndex, numerical, direction)
- {
- var tbody = table.lastChild;
- var headerRow = tbody.firstChild;
-
- // Remove class from the currently sorted column
- var headerSorted = Dom.getChildByClass(headerRow, "cookieHeaderSorted");
- Css.removeClass(headerSorted, "cookieHeaderSorted");
-
- // Mark new column as sorted.
- var header = headerRow.childNodes[colIndex];
- Css.setClass(header, "cookieHeaderSorted");
-
- // If the column is already using required sort direction, bubble out.
- if ((direction == "desc" && header.sorted == 1) ||
- (direction == "asc" && header.sorted == -1))
- return;
-
- var values = [];
- for (var row = tbody.childNodes[1]; row; row = row.nextSibling)
- {
- var cell = row.childNodes[colIndex];
- var value = numerical ? parseFloat(cell.textContent) : cell.textContent;
-
- // Issue 43, expires date is formatted in the UI, so use the original cookie
- // value instead.
- if (Css.hasClass(cell, "cookieExpiresCol"))
- value = row.repObject.cookie.expires;
-
- if (Css.hasClass(row, "opened"))
- {
- var cookieInfoRow = row.nextSibling;
- values.push({row: row, value: value, info: cookieInfoRow});
- row = cookieInfoRow;
- }
- else
- {
- values.push({row: row, value: value});
- }
- }
-
- values.sort(function(a, b) { return a.value < b.value ? -1 : 1; });
-
- if ((header.sorted && header.sorted == 1) || (!header.sorted && direction == "asc"))
- {
- Css.removeClass(header, "sortedDescending");
- Css.setClass(header, "sortedAscending");
-
- header.sorted = -1;
-
- for (var i = 0; i < values.length; ++i)
- {
- tbody.appendChild(values[i].row);
- if (values[i].info)
- tbody.appendChild(values[i].info);
- }
- }
- else
- {
- Css.removeClass(header, "sortedAscending");
- Css.setClass(header, "sortedDescending");
-
- header.sorted = 1;
-
- for (var i = values.length-1; i >= 0; --i)
- {
- tbody.appendChild(values[i].row);
- if (values[i].info)
- tbody.appendChild(values[i].info);
- }
- }
-
- // Remember last sorted column & direction in preferences.
- var prefValue = header.getAttribute("id") + " " + (header.sorted > 0 ? "desc" : "asc");
- Options.set(lastSortedColumn, prefValue);
- },
-
- supportsObject: function(object)
- {
- return (object == this);
- },
-
- /**
- * Provides menu items for header context menu.
- */
- getContextMenuItems: function(object, target, context)
- {
- CookieReps.Rep.getContextMenuItems.apply(this, arguments);
-
- var items = [];
-
- // Iterate over all columns and create a menu item for each.
- var table = context.getPanel(panelName, true).table;
- var hiddenCols = table.getAttribute("hiddenCols");
- var removedCols = table.getAttribute("removedCols");
-
- var lastVisibleIndex;
- var visibleColCount = 0;
-
- var header = Dom.getAncestorByClass(target, "cookieHeaderRow");
-
- // Skip the first column for breakpoints.
- var columns = Arr.cloneArray(header.childNodes);
- columns.shift();
-
- for (var i=0; i<columns.length; i++)
- {
- var column = columns[i];
-
- if (removedCols.indexOf(column.id) != -1)
- continue;
-
- var visible = (hiddenCols.indexOf(column.id) == -1);
-
- items.push({
- label: column.textContent,
- type: "checkbox",
- checked: visible,
- nol10n: true,
- command: Obj.bindFixed(this.onShowColumn, this, context, column.id)
- });
-
- if (visible)
- {
- lastVisibleIndex = i;
- visibleColCount++;
- }
- }
-
- // If the last column is visible, disable its menu item.
- if (visibleColCount == 1)
- items[lastVisibleIndex].disabled = true;
-
- items.push("-");
- items.push({
- label: Locale.$STR("net.header.Reset Header"),
- nol10n: true,
- command: Obj.bindFixed(this.onResetColumns, this, context)
- });
-
- return items;
- },
-
- onShowColumn: function(context, colId)
- {
- var table = context.getPanel(panelName, true).table;
- var hiddenCols = table.getAttribute("hiddenCols");
-
- // If the column is already presented in the list of hidden columns,
- // remove it, otherwise append.
- var index = hiddenCols.indexOf(colId);
- if (index >= 0)
- {
- table.setAttribute("hiddenCols", hiddenCols.substr(0,index-1) +
- hiddenCols.substr(index+colId.length));
- }
- else
- {
- table.setAttribute("hiddenCols", hiddenCols + " " + colId);
- }
-
- // Store current state into the preferences.
- Options.set(hiddenColsPref, table.getAttribute("hiddenCols"));
- },
-
- onResetColumns: function(context)
- {
- var panel = context.getPanel(panelName, true);
- var header = Dom.getElementByClass(panel.panelNode, "cookieHeaderRow");
-
- // Reset widths
- var columns = header.childNodes;
- for (var i=0; i<columns.length; i++)
- {
- var col = columns[i];
- if (col.style)
- col.style.width = "";
- }
-
- // Reset visibility.
- Options.clear(hiddenColsPref);
- panel.table.setAttribute("hiddenCols", Options.get(hiddenColsPref));
-
- // Reset also sorting (no sorting by default)
- var headerRow = panel.table.getElementsByClassName("cookieHeaderRow")[0];
- var headerSorted = Dom.getChildByClass(headerRow, "cookieHeaderSorted");
- Css.removeClass(headerSorted, "cookieHeaderSorted");
- Options.set(lastSortedColumn, "");
- panel.refresh();
- },
-
- createTable: function(parentNode)
- {
- // Create cookie table UI.
- var table = this.tableTag.replace({}, parentNode, this);
-
- // Update columns width according to the preferences.
- var header = Dom.getElementByClass(table, "cookieHeaderRow");
- var columns = header.getElementsByTagName("td");
- for (var i=0; i<columns.length; i++)
- {
- var col = columns[i];
- var colId = col.getAttribute("id");
- if (!colId || !col.style)
- continue;
-
- var width = Options.get("cookies." + colId + ".width");
- if (width)
- col.style.width = width + "px";
- }
-
- return table;
- },
-
- render: function(cookies, parentNode)
- {
- // Create basic cookie-list structure.
- var table = this.createTable(parentNode);
- var header = Dom.getElementByClass(table, "cookieHeaderRow");
-
- var tag = CookieReps.CookieRow.cookieTag;
- return tag.insertRows({cookies: cookies}, header);
- }
-});
-
-// ********************************************************************************************* //
-
-var OBJECTLINK = FirebugReps.OBJECTLINK;
-
-// xxxHonza: TODO
-CookieReps.CookieRep = domplate(CookieReps.Rep,
-{
- tag:
- OBJECTLINK(
- SPAN({"class": "objectTitle"}, "$object|getTitle")
- ),
-
- className: "cookie",
-
- supportsObject: function(cookie)
- {
- return cookie instanceof Cookie;
- },
-
- getTitle: function(cookie)
- {
- return cookie.cookie.name;
- },
-
- getTooltip: function(cookie)
- {
- return cookie.cookie.value;
- }
-});
-
-// ********************************************************************************************* //
-// Debug helpers
-
-function checkList(panel)
-{
- if (!FBTrace.DBG_COOKIES)
- return;
-
- if (!panel || !this.panelNode)
- return;
-
- var row = this.panelNode.getElementsByClassName("cookieRow")[0];
- while (row)
- {
- var rep = row.repObject;
- var displayedCookieName = row.getElementsByClassName("cookieNameLabel")[0].textContent;
- var displayedCookiePath = row.getElementsByClassName("cookiePathLabel")[0].textContent;
- if (rep.cookie.name != displayedCookieName || rep.cookie.path != displayedCookiePath)
- {
- FBTrace.sysout("---> Check failed!");
- FBTrace.sysout("--->" + rep.rawHost + ", " + rep.cookie.name + ", " + rep.cookie.path);
- FBTrace.sysout(" " + displayedCookieName + ", " + displayedCookiePath);
- }
-
- row = row.nextSibling;
- }
-
- return null;
-}
-
-// ********************************************************************************************* //
-// Firebug Registration
-
-Firebug.registerRep(
- //CookieReps.CookieRep, // Cookie
- CookieReps.CookieTable, // Cookie table with list of cookies
- CookieReps.CookieRow, // Entry in the cookie table
- CookieReps.CookieChanged, // Console: "cookie-changed" event
- CookieReps.CookieRejected, // Console: "cookie-rejected" event
- CookieReps.CookieCleared // Console: cookies "cleared" event
-);
-
-return CookieReps;
-
-// ********************************************************************************************* //
-}});
-
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/xpcom",
+ "firebug/lib/object",
+ "firebug/lib/locale",
+ "firebug/lib/domplate",
+ "firebug/lib/dom",
+ "firebug/lib/options",
+ "firebug/lib/persist",
+ "firebug/lib/string",
+ "firebug/lib/http",
+ "firebug/lib/css",
+ "firebug/lib/events",
+ "firebug/lib/array",
+ "firebug/lib/system",
+ "firebug/cookies/baseObserver",
+ "firebug/cookies/menuUtils",
+ "firebug/cookies/cookieUtils",
+ "firebug/cookies/cookie",
+ "firebug/cookies/breakpoints",
+ "firebug/cookies/cookieEvents",
+ "firebug/cookies/cookiePermissions",
+ "firebug/cookies/editCookie",
+ "firebug/cookies/cookieClipboard",
+],
+function(Xpcom, Obj, Locale, Domplate, Dom, Options, Persist, Str, Http, Css, Events, Arr, System,
+ BaseObserver, MenuUtils, CookieUtils, Cookie, Breakpoints, CookieEvents,
+ CookiePermissions, EditCookie, CookieClipboard) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+const lastSortedColumn = "cookies.lastSortedColumn";
+const hiddenColsPref = "cookies.hiddenColumns";
+
+const panelName = "cookies";
+
+// ********************************************************************************************* //
+// Templates Helpers
+
+// Object with all rep CookieReps.
+var CookieReps = {};
+
+/**
+ * @domplate Basic template for Cookies panel UI.
+ */
+CookieReps.Rep = domplate(Firebug.Rep,
+{
+ getContextMenuItems: function(cookie, target, context)
+ {
+ // xxxHonza not sure how to do this better if the default Firebug's "Copy"
+ // command (cmd_copy) shouldn't be there.
+ var popup = Firebug.chrome.$("fbContextMenu");
+ if (popup.firstChild && popup.firstChild.getAttribute("command") == "cmd_copy")
+ popup.removeChild(popup.firstChild);
+ }
+});
+
+// ********************************************************************************************* //
+// Cookie Template (domplate)
+
+/**
+ * @domplate Represents a domplate template for cookie entry in the cookie list.
+ */
+CookieReps.CookieRow = domplate(CookieReps.Rep,
+/** @lends CookieReps.CookieRow */
+{
+ inspectable: true,
+
+ cookieTag:
+ FOR("cookie", "$cookies",
+ TR({"class": "cookieRow", _repObject: "$cookie", onclick: "$onClickRow",
+ $sessionCookie: "$cookie|isSessionCookie",
+ $rejectedCookie: "$cookie|isRejected",
+ $deletedCookie: "$cookie|isDeletedCookie"},
+ TD({"class": "cookieDebugCol cookieCol"},
+ DIV({"class": "sourceLine cookieRowHeader", onclick: "$onClickRowHeader"},
+ " "
+ )
+ ),
+ TD({"class": "cookieNameCol cookieCol"},
+ DIV({"class": "cookieNameLabel cookieLabel"}, "$cookie|getName")
+ ),
+ TD({"class": "cookieValueCol cookieCol"},
+ DIV({"class": "cookieValueLabel cookieLabel"},
+ SPAN("$cookie.cookie.value|getValue")
+ )
+ ),
+ TD({"class": "cookieRawValueCol cookieCol"},
+ DIV({"class": "cookieRawValueLabel cookieLabel"},
+ SPAN("$cookie.cookie.rawValue|getValue")
+ )
+ ),
+ TD({"class": "cookieDomainCol cookieCol"},
+ SPAN({"class": "cookieDomainLabel cookieLabel", onclick: "$onClickDomain"},
+ "$cookie|getDomain")
+ ),
+ TD({"class": "cookieRawSizeCol cookieCol"},
+ DIV({"class": "cookieRawSizeLabel cookieLabel"}, "$cookie|getRawSize")
+ ),
+ TD({"class": "cookieSizeCol cookieCol"},
+ DIV({"class": "cookieSizeLabel cookieLabel"}, "$cookie|getSize")
+ ),
+ TD({"class": "cookiePathCol cookieCol"},
+ DIV({"class": "cookiePathLabel cookieLabel", "title": "$cookie|getPath"},
+ SPAN("$cookie|getPath")
+ )
+ ),
+ TD({"class": "cookieExpiresCol cookieCol"},
+ DIV({"class": "cookieExpiresLabel cookieLabel", "title": "$cookie|getDurationTooltip"}, "$cookie|getExpires")
+ ),
+ TD({"class": "cookieMaxAgeCol cookieCol"},
+ DIV({"class": "cookieMaxAgeLabel cookieLabel", "title": "$cookie|getDurationTooltip"}, "$cookie|getMaxAge")
+ ),
+ TD({"class": "cookieHttpOnlyCol cookieCol"},
+ DIV({"class": "cookieHttpOnlyLabel cookieLabel"}, "$cookie|isHttpOnly")
+ ),
+ TD({"class": "cookieSecurityCol cookieCol"},
+ DIV({"class": "cookieSecurityLabel cookieLabel"}, "$cookie|isSecure")
+ )
+ )
+ ),
+
+ bodyRow:
+ TR({"class": "cookieInfoRow"},
+ TD({"class": "sourceLine cookieRowHeader"}),
+ TD({"class": "cookieInfoCol", colspan: 12})
+ ),
+
+ bodyTag:
+ DIV({"class": "cookieInfoBody", _repObject: "$cookie"},
+ DIV({"class": "cookieInfoTabs"},
+ A({"class": "cookieInfoValueTab cookieInfoTab", onclick: "$onClickTab",
+ view: "Value"},
+ Locale.$STR("cookies.info.valuetab.label")
+ ),
+ A({"class": "cookieInfoRawValueTab cookieInfoTab", onclick: "$onClickTab",
+ view: "RawValue",
+ $collapsed: "$cookie|hideRawValueTab"},
+ Locale.$STR("cookies.info.rawdatatab.Raw Data")
+ ),
+ A({"class": "cookieInfoJsonTab cookieInfoTab", onclick: "$onClickTab",
+ view: "Json",
+ $collapsed: "$cookie|hideJsonTab"},
+ Locale.$STR("cookies.info.jsontab.JSON")
+ ),
+ A({"class": "cookieInfoXmlTab cookieInfoTab", onclick: "$onClickTab",
+ view: "Xml",
+ $collapsed: "$cookie|hideXmlTab"},
+ Locale.$STR("cookies.info.xmltab.XML")
+ )
+ ),
+ DIV({"class": "cookieInfoValueText cookieInfoText"}),
+ DIV({"class": "cookieInfoRawValueText cookieInfoText"}),
+ DIV({"class": "cookieInfoJsonText cookieInfoText"}),
+ DIV({"class": "cookieInfoXmlText cookieInfoText"})
+ ),
+
+ hideRawValueTab: function(cookie)
+ {
+ return (cookie.cookie.value == cookie.cookie.rawValue);
+ },
+
+ hideJsonTab: function(cookie)
+ {
+ return cookie.getJsonValue() ? false : true;
+ },
+
+ hideXmlTab: function(cookie)
+ {
+ return cookie.getXmlValue() ? false : true;
+ },
+
+ getAction: function(cookie)
+ {
+ return cookie.action;
+ },
+
+ getName: function(cookie)
+ {
+ return cookie.cookie.name;
+ },
+
+ getValue: function(value)
+ {
+ return Str.escapeNewLines(Str.cropString(value));
+ },
+
+ getDomain: function(cookie)
+ {
+ if (!cookie.cookie.host)
+ return "";
+
+ return cookie.cookie.host;
+ },
+
+ getMaxAge: function(cookie)
+ {
+ if (!cookie.cookie.maxAge)
+ return "";
+
+ return Str.formatTime(cookie.cookie.maxAge * 1000);
+ },
+
+ getExpires: function(cookie)
+ {
+ if (cookie.cookie.expires == undefined)
+ return "";
+
+ // The first character is space so, if the table is sorted according
+ // to this column, all "Session" cookies are displayed at the begining.
+ if (CookieUtils.isSessionCookie(cookie.cookie))
+ return " " + Locale.$STR("cookies.Session");
+
+ try
+ {
+ // Format the expires date using the current locale.
+ var date = new Date(cookie.cookie.expires * 1000);
+ return date.toLocaleString();
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("cookies.CookieRow.getExpires; EXCEPTION " + err, err);
+ }
+
+ return "";
+ },
+
+ getDurationTooltip: function(cookie)
+ {
+ if (CookieUtils.isDeletedCookie(cookie.cookie))
+ return Locale.$STR("cookies.netinfo.deleted.tooltip");
+ },
+
+ isHttpOnly: function(cookie)
+ {
+ return cookie.cookie.isHttpOnly ? "HttpOnly" : "";
+ },
+
+ isSessionCookie: function(cookie)
+ {
+ return CookieUtils.isSessionCookie(cookie.cookie);
+ },
+
+ isDeletedCookie: function(cookie)
+ {
+ return CookieUtils.isDeletedCookie(cookie.cookie);
+ },
+
+ isRejected: function(cookie)
+ {
+ return !!cookie.cookie.rejected;
+ },
+
+ getRawSize: function(cookie)
+ {
+ var size = cookie.cookie.name.length + cookie.cookie.rawValue.length;
+ return Str.formatSize(size);
+ },
+
+ getSize: function(cookie)
+ {
+ var size = cookie.cookie.name.length + cookie.cookie.value.length;
+ return Str.formatSize(size);
+ },
+
+ getPath: function(cookie)
+ {
+ var path = cookie.cookie.path;
+ return path ? path : "";
+ },
+
+ isDomainCookie: function(cookie)
+ {
+ return cookie.cookie.isDomain ? Locale.$STR("cookies.domain.label") : "";
+ },
+
+ isSecure: function(cookie)
+ {
+ return cookie.cookie.isSecure ? Locale.$STR("cookies.secure.label") : "";
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Highlighter
+
+ highlightObject: function(object, context)
+ {
+ },
+
+ unhighlightObject: function(object, context)
+ {
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Firebug rep support
+
+ supportsObject: function(cookie)
+ {
+ return cookie instanceof Cookie;
+ },
+
+ browseObject: function(cookie, context)
+ {
+ return false;
+ },
+
+ getRealObject: function(cookie, context)
+ {
+ var realObject = cookie.cookie.rawCookie;
+ if (!realObject)
+ {
+ if (FBTrace.DBG_COOKIES || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("cookies.getRealObject; ERROR no real cookie object!");
+
+ realObject = cookie.cookie;
+ }
+
+ return CookieUtils.getRealObject(realObject, context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Context Menu
+
+ getContextMenuItems: function(cookie, target, context)
+ {
+ CookieReps.Rep.getContextMenuItems.apply(this, arguments);
+
+ var items = [];
+ var rejected = cookie.cookie.rejected;
+
+ if (!rejected)
+ {
+ items.push({
+ label: Locale.$STR("cookies.Cut"),
+ nol10n: true,
+ command: Obj.bindFixed(this.onCut, this, cookie)
+ });
+ }
+
+ items.push({
+ label: Locale.$STR("cookies.Copy"),
+ nol10n: true,
+ command: Obj.bindFixed(this.onCopy, this, cookie)
+ });
+
+ if (!rejected)
+ {
+ items.push({
+ label: Locale.$STR("cookies.Paste"),
+ nol10n: true,
+ disabled: CookieClipboard.isCookieAvailable() ? false : true,
+ command: Obj.bindFixed(this.onPaste, this, cookie)
+ });
+ items.push("-");
+ }
+
+ items.push({
+ label: Locale.$STR("cookies.CopyAll"),
+ nol10n: true,
+ command: Obj.bindFixed(this.onCopyAll, this, cookie)
+ });
+
+ if (!rejected)
+ {
+ items.push("-");
+ items.push({
+ label: Locale.$STR("cookies.Delete"),
+ nol10n: true,
+ command: Obj.bindFixed(this.onRemove, this, cookie)
+ });
+
+ items.push("-");
+ items.push({
+ label: Locale.$STR("cookies.Edit"),
+ nol10n: true,
+ command: Obj.bindFixed(this.onEdit, this, cookie)
+ });
+
+ if (cookie.cookie.rawValue)
+ {
+ items.push({
+ label: Locale.$STR("cookies.Clear Value"),
+ nol10n: true,
+ command: Obj.bindFixed(this.onClearValue, this, cookie)
+ });
+ }
+ }
+
+ // Permissions
+ var permItems = CookiePermissions.getContextMenuItems(cookie, target, context);
+ if (permItems)
+ items = items.concat(permItems);
+
+ // Breakpoints
+ var breakOnItems = Breakpoints.getContextMenuItems(cookie, target, context);
+ if (breakOnItems)
+ items = items.concat(breakOnItems);
+
+ return items;
+ },
+
+ // Context menu commands
+ onCut: function(clickedCookie)
+ {
+ this.onCopy(clickedCookie);
+ this.onRemove(clickedCookie);
+ },
+
+ onCopy: function(clickedCookie)
+ {
+ CookieClipboard.copyTo(clickedCookie);
+ },
+
+ onCopyAll: function(clickedCookie)
+ {
+ var text = "";
+ var tbody = Dom.getAncestorByClass(clickedCookie.row, "cookieTable").firstChild;
+ for (var row = tbody.firstChild; row; row = row.nextSibling) {
+ if (Css.hasClass(row, "cookieRow") && row.repObject)
+ text += row.repObject.toString() + "\n";
+ }
+
+ System.copyToClipboard(text);
+ },
+
+ onPaste: function(clickedCookie) // clickedCookie can be null if the user clicks within panel area.
+ {
+ var context = Firebug.currentContext;
+ var values = CookieClipboard.getFrom();
+ if (!values || !context)
+ return;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.Get cookie values from clipboard", values);
+
+ // Change name so it's unique and use the current host.
+ values.name = Firebug.CookieModule.getDefaultCookieName(context, values.name);
+ values.host = context.browser.currentURI.host;
+
+ values.rawValue = values.value;
+ values.value = unescape(values.value);
+
+ // If the expire time isn't set use the default value.
+ if (values.expires == undefined)
+ values.expires = Firebug.CookieModule.getDefaultCookieExpireTime();
+
+ // Create/modify cookie.
+ var cookie = new Cookie(values);
+ Firebug.CookieModule.createCookie(cookie);
+
+ if (FBTrace.DBG_COOKIES)
+ checkList(context.getPanel(panelName, true));
+ },
+
+ onRemove: function(cookie)
+ {
+ // Get the real XPCOM cookie object and remove it.
+ var realCookie = cookie.cookie;
+ if (!cookie.cookie.rejected)
+ Firebug.CookieModule.removeCookie(realCookie.host, realCookie.name, realCookie.path);
+ },
+
+ onEdit: function(cookie)
+ {
+ var params = {
+ cookie: cookie.cookie,
+ action: "edit",
+ window: null,
+ EditCookie: EditCookie,
+ Firebug: Firebug,
+ FBTrace: FBTrace,
+ };
+
+ var parent = Firebug.currentContext.chrome.window;
+ return parent.openDialog("chrome://firebug/content/cookies/editCookie.xul",
+ "_blank", "chrome,centerscreen,resizable=yes,modal=yes",
+ params);
+ },
+
+ onClearValue: function(cookie)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onClearValue;", cookie);
+
+ var newCookie = new Cookie(cookie.cookie);
+ newCookie.cookie.rawValue = "";
+ Firebug.CookieModule.createCookie(newCookie);
+ },
+
+ // Event handlers
+ onClickDomain: function(event)
+ {
+ if (Events.isLeftClick(event))
+ {
+ var domain = event.target.textContent;
+ if (domain)
+ {
+ Events.cancelEvent(event);
+ event.cancelBubble = true;
+ //xxxHonza www.google.com (more windows are opened)
+ // openNewTab(domain);
+ }
+ }
+ },
+
+ onClickRowHeader: function(event)
+ {
+ Events.cancelEvent(event);
+
+ var rowHeader = event.target;
+ if (!Css.hasClass(rowHeader, "cookieRowHeader"))
+ return;
+
+ var row = Dom.getAncestorByClass(event.target, "cookieRow");
+ if (!row)
+ return;
+
+ var context = Firebug.getElementPanel(row).context;
+ Breakpoints.onBreakOnCookie(context, row.repObject);
+ },
+
+ onClickRow: function(event)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.Click on cookie row.", event);
+
+ if (Events.isLeftClick(event))
+ {
+ var row = Dom.getAncestorByClass(event.target, "cookieRow");
+ if (row)
+ {
+ this.toggleRow(row);
+ Events.cancelEvent(event);
+ }
+ }
+ },
+
+ toggleRow: function(row, forceOpen)
+ {
+ var opened = Css.hasClass(row, "opened");
+ if (opened && forceOpen)
+ return;
+
+ Css.toggleClass(row, "opened");
+
+ if (Css.hasClass(row, "opened"))
+ {
+ var bodyRow = this.bodyRow.insertRows({}, row)[0];
+ var bodyCol = Dom.getElementByClass(bodyRow, "cookieInfoCol");
+ var cookieInfo = this.bodyTag.replace({cookie: row.repObject}, bodyCol);
+
+ // If JSON or XML tabs are available select them by default.
+ if (this.selectTabByName(cookieInfo, "Json"))
+ return;
+
+ if (this.selectTabByName(cookieInfo, "Xml"))
+ return;
+
+ this.selectTabByName(cookieInfo, "Value");
+ }
+ else
+ {
+ row.parentNode.removeChild(row.nextSibling);
+ }
+ },
+
+ selectTabByName: function(cookieInfoBody, tabName)
+ {
+ var tab = Dom.getChildByClass(cookieInfoBody, "cookieInfoTabs",
+ "cookieInfo" + tabName + "Tab");
+
+ // Don't select collapsed tabs.
+ if (tab && !Css.hasClass(tab, "collapsed"))
+ return this.selectTab(tab);
+
+ return false;
+ },
+
+ onClickTab: function(event)
+ {
+ this.selectTab(event.currentTarget);
+ },
+
+ selectTab: function(tab)
+ {
+ var cookieInfoBody = tab.parentNode.parentNode;
+
+ var view = tab.getAttribute("view");
+ if (cookieInfoBody.selectedTab)
+ {
+ cookieInfoBody.selectedTab.removeAttribute("selected");
+ cookieInfoBody.selectedText.removeAttribute("selected");
+ }
+
+ var textBodyName = "cookieInfo" + view + "Text";
+
+ cookieInfoBody.selectedTab = tab;
+ cookieInfoBody.selectedText = Dom.getChildByClass(cookieInfoBody, textBodyName);
+
+ cookieInfoBody.selectedTab.setAttribute("selected", "true");
+ cookieInfoBody.selectedText.setAttribute("selected", "true");
+
+ var cookie = Firebug.getRepObject(cookieInfoBody);
+ var context = Firebug.getElementPanel(cookieInfoBody).context;
+ this.updateInfo(cookieInfoBody, cookie, context);
+
+ return true;
+ },
+
+ updateRow: function(cookie, context)
+ {
+ var panel = context.getPanel(panelName, true);
+ if (!panel)
+ return;
+
+ var parent = cookie.row.parentNode;
+ var nextSibling = cookie.row.nextSibling;
+ parent.removeChild(cookie.row);
+
+ var row = CookieReps.CookieRow.cookieTag.insertRows({cookies: [cookie]},
+ panel.table.lastChild.lastChild)[0];
+
+ var opened = Css.hasClass(cookie.row, "opened");
+
+ cookie.row = row;
+ row.repObject = cookie;
+
+ if (nextSibling && row.nextSibling != nextSibling)
+ {
+ parent.removeChild(cookie.row);
+ parent.insertBefore(row, nextSibling);
+ }
+
+ if (opened)
+ Css.setClass(row, "opened");
+
+ Breakpoints.updateBreakpoint(context, cookie);
+ },
+
+ updateInfo: function(cookieInfoBody, cookie, context)
+ {
+ var tab = cookieInfoBody.selectedTab;
+ if (Css.hasClass(tab, "cookieInfoValueTab"))
+ {
+ var valueBox = Dom.getChildByClass(cookieInfoBody, "cookieInfoValueText");
+ if (!cookieInfoBody.valuePresented)
+ {
+ cookieInfoBody.valuePresented = true;
+
+ var text = cookie.cookie.value;
+ if (text != undefined)
+ Str.insertWrappedText(text, valueBox);
+ }
+ }
+ else if (Css.hasClass(tab, "cookieInfoRawValueTab"))
+ {
+ var valueBox = Dom.getChildByClass(cookieInfoBody, "cookieInfoRawValueText");
+ if (!cookieInfoBody.rawValuePresented)
+ {
+ cookieInfoBody.rawValuePresented = true;
+
+ var text = cookie.cookie.rawValue;
+ if (text != undefined)
+ Str.insertWrappedText(text, valueBox);
+ }
+ }
+ else if (Css.hasClass(tab, "cookieInfoJsonTab"))
+ {
+ var valueBox = Dom.getChildByClass(cookieInfoBody, "cookieInfoJsonText");
+ if (!cookieInfoBody.jsonPresented)
+ {
+ cookieInfoBody.jsonPresented = true;
+
+ var jsonObject = cookie.getJsonValue();
+ if (jsonObject) {
+ Firebug.DOMPanel.DirTable.tag.replace(
+ {object: jsonObject, toggles: this.toggles}, valueBox);
+ }
+ }
+ }
+ else if (Css.hasClass(tab, "cookieInfoXmlTab"))
+ {
+ var valueBox = Dom.getChildByClass(cookieInfoBody, "cookieInfoXmlText");
+ if (!cookieInfoBody.xmlPresented)
+ {
+ cookieInfoBody.xmlPresented = true;
+
+ var docElem = cookie.getXmlValue();
+ if (docElem) {
+ var tag = Firebug.HTMLPanel.CompleteElement.getNodeTag(docElem);
+ tag.replace({object: docElem}, valueBox);
+ }
+ }
+ }
+ },
+
+ updateTabs: function(cookieInfoBody, cookie, context)
+ {
+ // Iterate over all info-tabs and update visibility.
+ var cookieInfoTabs = Dom.getElementByClass(cookieInfoBody, "cookieInfoTabs");
+ var tab = cookieInfoTabs.firstChild;
+ while (tab)
+ {
+ var view = tab.getAttribute("view");
+ var hideTabCallback = CookieReps.CookieRow["hide" + view + "Tab"];
+ if (hideTabCallback)
+ {
+ if (hideTabCallback(cookie))
+ Css.setClass(tab, "collapsed");
+ else
+ Css.removeClass(tab, "collapsed");
+ }
+
+ tab = tab.nextSibling;
+ }
+
+ // If the selected tab was collapsed, make sure another one is selected.
+ if (Css.hasClass(cookieInfoBody.selectedTab, "collapsed"))
+ {
+ if (this.selectTabByName(cookieInfoBody, "Json"))
+ return;
+
+ if (this.selectTabByName(cookieInfoBody, "Xml"))
+ return;
+
+ this.selectTabByName(cookieInfoBody, "Value");
+ }
+ }
+});
+
+// ********************************************************************************************* //
+// Console Event Templates (domplate)
+
+/**
+ * @domplate This template is used for displaying cookie-changed events
+ * (except of "clear") in the Console tab.
+ */
+CookieReps.CookieChanged = domplate(CookieReps.Rep,
+{
+ inspectable: false,
+
+ // Console
+ tag:
+ DIV({"class": "cookieEvent", _repObject: "$object"},
+ SPAN(Locale.$STR("cookies.console.cookie"), " "),
+ SPAN({"class": "cookieNameLabel", onclick: "$onClick"},
+ "$object|getName",
+ " "),
+ SPAN({"class": "cookieActionLabel"},
+ "$object|getAction",
+ ". "),
+ SPAN({"class": "cookieValueLabel"},
+ "$object|getValue"),
+ DIV({"class": "cookieDomainLabel", onclick: "$onClickDomain",
+ title: "$object|getOriginalURI"}, "$object|getDomain")
+ ),
+
+ // Event handlers
+ onClick: function(event)
+ {
+ if (!Events.isLeftClick(event))
+ return;
+
+ var target = event.target;
+
+ // Get associated nsICookie object.
+ var cookieEvent = Firebug.getRepObject(target);
+ if (!cookieEvent)
+ return;
+
+ var cookieWrapper = new Cookie(CookieUtils.makeCookieObject(cookieEvent.cookie));
+ var context = Firebug.getElementPanel(target).context;
+ context.chrome.select(cookieWrapper, panelName);
+ },
+
+ onClickDomain: function(event)
+ {
+ },
+
+ getOriginalURI: function(cookieEvent)
+ {
+ var context = cookieEvent.context;
+ var strippedHost = cookieEvent.rawHost;
+
+ if (!context.cookies.activeCookies)
+ return strippedHost;
+
+ var cookie = cookieEvent.cookie;
+ var activeCookies = context.cookies.activeCookies[cookie.host];
+ if (!activeCookies)
+ return strippedHost;
+
+ var activeCookie = activeCookies[CookieUtils.getCookieId(cookie)];
+
+ var originalURI;
+ if (activeCookie)
+ originalURI = activeCookie.originalURI.spec;
+ else
+ originalURI = cookieEvent.rawHost;
+
+ if (FBTrace.DBG_COOKIES)
+ {
+ FBTrace.sysout("cookies.context.cookies.activeCookies[" + cookie.host + "]",
+ activeCookies);
+
+ FBTrace.sysout("cookies.Original URI for: " + CookieUtils.getCookieId(cookie) +
+ " is: " + originalURI, activeCookie);
+ }
+
+ return originalURI;
+ },
+
+ getAction: function(cookieEvent)
+ {
+ // Return properly localized action.
+ switch(cookieEvent.action)
+ {
+ case "deleted":
+ return Locale.$STR("cookies.console.deleted");
+ case "added":
+ return Locale.$STR("cookies.console.added");
+ case "changed":
+ return Locale.$STR("cookies.console.changed");
+ case "cleared":
+ return Locale.$STR("cookies.console.cleared");
+ }
+
+ return "";
+ },
+
+ getName: function(cookieEvent)
+ {
+ return cookieEvent.cookie.name;
+ },
+
+ getValue: function(cookieEvent)
+ {
+ return Str.cropString(cookieEvent.cookie.value, 75);
+ },
+
+ getDomain: function(cookieEvent)
+ {
+ return cookieEvent.cookie.host;
+ },
+
+ // Firebug rep support
+ supportsObject: function(cookieEvent)
+ {
+ return cookieEvent instanceof CookieEvents.CookieChangedEvent;
+ },
+
+ browseObject: function(cookieEvent, context)
+ {
+ return false;
+ },
+
+ getRealObject: function(cookieEvent, context)
+ {
+ return cookieEvent;
+ },
+
+ // Context menu
+ getContextMenuItems: function(cookieEvent, target, context)
+ {
+ CookieReps.Rep.getContextMenuItems.apply(this, arguments);
+ }
+});
+
+// ********************************************************************************************* //
+
+/**
+ * @domplate Represents a domplate template for displaying rejected cookies.
+ */
+CookieReps.CookieRejected = domplate(CookieReps.Rep,
+/** @lends CookieReps.CookieRejected */
+{
+ inspectable: false,
+
+ tag:
+ DIV({"class": "cookieEvent", _repObject: "$object"},
+ TABLE({cellpadding: 0, cellspacing: 0},
+ TBODY(
+ TR(
+ TD({width: "100%"},
+ SPAN({"class": "cookieRejectedLabel"},
+ Locale.$STR("cookies.console.cookiesrejected")),
+ " ",
+ SPAN({"class": "cookieRejectedList"},
+ "$object|getCookieList")
+ ),
+ TD(
+ SPAN({"class": "cookieDomainLabel", onclick: "$onClickDomain"},
+ "$object|getDomain"),
+ SPAN(" ")
+ )
+ )
+ )
+ )
+ ),
+
+ supportsObject: function(object)
+ {
+ return object instanceof CookieEvents.CookieRejectedEvent;
+ },
+
+ getDomain: function(cookieEvent)
+ {
+ return cookieEvent.uri.host;
+ },
+
+ getCookieList: function(cookieEvent)
+ {
+ var context = cookieEvent.context;
+ var activeHost = context.cookies.activeHosts[cookieEvent.uri.host];
+ var cookies = activeHost.receivedCookies;
+ if (!cookies)
+ return Locale.$STR("cookies.console.nocookiesreceived");
+
+ var label = "";
+ for (var i=0; i<cookies.length; i++)
+ label += cookies[i].cookie.name + ((i<cookies.length-1) ? ", " : "");
+
+ return Str.cropString(label, 75);
+ },
+
+ onClickDomain: function(event)
+ {
+ },
+
+ // Context menu
+ getContextMenuItems: function(cookie, target, context)
+ {
+ CookieReps.Rep.getContextMenuItems.apply(this, arguments);
+ }
+});
+
+// ********************************************************************************************* //
+
+/**
+ * @domplate Represents a domplate template for cookie cleared event that is
+ * visualised in Firebug Console panel.
+ */
+CookieReps.CookieCleared = domplate(CookieReps.Rep,
+/** @lends CookieReps.CookieCleared */
+{
+ inspectable: false,
+
+ tag:
+ DIV({_repObject: "$object"},
+ DIV("$object|getLabel")
+ ),
+
+ supportsObject: function(object)
+ {
+ return object instanceof CookieEvents.CookieClearedEvent;
+ },
+
+ getLabel: function()
+ {
+ return Locale.$STR("cookies.console.cookiescleared");
+ },
+
+ // Context menu
+ getContextMenuItems: function(cookie, target, context)
+ {
+ CookieReps.Rep.getContextMenuItems.apply(this, arguments);
+ }
+});
+
+
+CookieReps.SizeInfoTip = domplate(Firebug.Rep,
+{
+ tag:
+ TABLE({"class": "sizeInfoTip", "id": "cookiesSizeInfoTip", role:"presentation"},
+ TBODY(
+ FOR("size", "$sizeInfo",
+ TAG("$size|sizeTag", {size: "$size"})
+ )
+ )
+ ),
+
+ sizeTag:
+ TR({"class": "sizeInfoRow"},
+ TD({"class": "sizeInfoLabelCol"}, "$size.label"),
+ TD({"class": "sizeInfoSizeCol"}, "$size|formatSize"),
+ TD({"class": "sizeInfoDetailCol"}, "$size|formatNumber")
+ ),
+
+ formatSize: function(size)
+ {
+ return Str.formatSize(size.size);
+ },
+
+ formatNumber: function(size)
+ {
+ return size.size && size.size >= 1024 ? "(" + Str.formatNumber(size.size) + " B)" : "";
+ },
+
+ render: function(cookie, parentNode)
+ {
+ var size = cookie.getSize();
+ var rawSize = cookie.getRawSize();
+ var sizeInfo = [];
+
+ sizeInfo.push({label: Locale.$STR("cookie.sizeinfo.Size"), size: size});
+
+ if (size != rawSize)
+ sizeInfo.push({label: Locale.$STR("cookie.sizeinfo.Raw_Size"), size: rawSize});
+
+ this.tag.replace({sizeInfo: sizeInfo}, parentNode);
+ },
+});
+
+// ********************************************************************************************* //
+// Header Template (domplate)
+
+/**
+ * @domplate Represents a template for basic cookie list layout. This
+ * template also includes a header and related functionality (such as sorting).
+ */
+CookieReps.CookieTable = domplate(CookieReps.Rep,
+/** @lends CookieReps.CookieTable */
+{
+ inspectable: false,
+
+ tableTag:
+ TABLE({"class": "cookieTable", cellpadding: 0, cellspacing: 0, hiddenCols: ""},
+ TBODY(
+ TR({"class": "cookieHeaderRow", onclick: "$onClickHeader"},
+ TD({id: "cookieBreakpointBar", width: "1%", "class": "cookieHeaderCell"},
+ " "
+ ),
+ TD({id: "colName", role: "columnheader",
+ "class": "cookieHeaderCell alphaValue a11yFocus"},
+ DIV({"class": "cookieHeaderCellBox",
+ title: Locale.$STR("cookies.header.name.tooltip")},
+ Locale.$STR("cookies.header.name"))
+ ),
+ TD({id: "colValue", role: "columnheader",
+ "class": "cookieHeaderCell alphaValue a11yFocus"},
+ DIV({"class": "cookieHeaderCellBox",
+ title: Locale.$STR("cookies.header.value.tooltip")},
+ Locale.$STR("cookies.header.value"))
+ ),
+ TD({id: "colRawValue", role: "columnheader",
+ "class": "cookieHeaderCell alphaValue a11yFocus"},
+ DIV({"class": "cookieHeaderCellBox",
+ title: Locale.$STR("cookies.header.rawValue.tooltip")},
+ Locale.$STR("cookies.header.rawValue"))
+ ),
+ TD({id: "colDomain", role: "columnheader",
+ "class": "cookieHeaderCell alphaValue a11yFocus"},
+ DIV({"class": "cookieHeaderCellBox",
+ title: Locale.$STR("cookies.header.domain.tooltip")},
+ Locale.$STR("cookies.header.domain"))
+ ),
+ TD({id: "colRawSize", role: "columnheader",
+ "class": "cookieHeaderCell a11yFocus"},
+ DIV({"class": "cookieHeaderCellBox",
+ title: Locale.$STR("cookies.header.rawSize.tooltip")},
+ Locale.$STR("cookies.header.rawSize"))
+ ),
+ TD({id: "colSize", role: "columnheader",
+ "class": "cookieHeaderCell a11yFocus"},
+ DIV({"class": "cookieHeaderCellBox",
+ title: Locale.$STR("cookies.header.size.tooltip")},
+ Locale.$STR("cookies.header.size"))
+ ),
+ TD({id: "colPath", role: "columnheader",
+ "class": "cookieHeaderCell alphaValue a11yFocus"},
+ DIV({"class": "cookieHeaderCellBox",
+ title: Locale.$STR("cookies.header.path.tooltip")},
+ Locale.$STR("cookies.header.path"))
+ ),
+ TD({id: "colExpires", role: "columnheader",
+ "class": "cookieHeaderCell a11yFocus"},
+ DIV({"class": "cookieHeaderCellBox",
+ title: Locale.$STR("cookies.header.expires.tooltip")},
+ Locale.$STR("cookies.header.expires"))
+ ),
+ TD({id: "colMaxAge", role: "columnheader",
+ "class": "cookieHeaderCell a11yFocus"},
+ DIV({"class": "cookieHeaderCellBox",
+ title: Locale.$STR("cookies.header.maxAge.tooltip")},
+ Locale.$STR("cookies.header.maxAge"))
+ ),
+ TD({id: "colHttpOnly", role: "columnheader",
+ "class": "cookieHeaderCell alphaValue a11yFocus"},
+ DIV({"class": "cookieHeaderCellBox",
+ title: Locale.$STR("cookies.header.httponly.tooltip")},
+ Locale.$STR("cookies.header.httponly"))
+ ),
+ TD({id: "colSecurity", role: "columnheader",
+ "class": "cookieHeaderCell alphaValue a11yFocus"},
+ DIV({"class": "cookieHeaderCellBox",
+ title: Locale.$STR("cookies.header.security.tooltip")},
+ Locale.$STR("cookies.header.security"))
+ )
+ )
+ )
+ ),
+
+ onClickHeader: function(event)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onClickHeader");
+
+ if (!Events.isLeftClick(event))
+ return;
+
+ var table = Dom.getAncestorByClass(event.target, "cookieTable");
+ var column = Dom.getAncestorByClass(event.target, "cookieHeaderCell");
+ this.sortColumn(table, column);
+ },
+
+ sortColumn: function(table, col, direction)
+ {
+ if (!col)
+ return;
+
+ if (typeof(col) == "string")
+ {
+ var doc = table.ownerDocument;
+ col = doc.getElementById(col);
+ }
+
+ if (!col)
+ return;
+
+ var numerical = !Css.hasClass(col, "alphaValue");
+
+ var colIndex = 0;
+ for (col = col.previousSibling; col; col = col.previousSibling)
+ ++colIndex;
+
+ this.sort(table, colIndex, numerical, direction);
+ },
+
+ sort: function(table, colIndex, numerical, direction)
+ {
+ var tbody = table.lastChild;
+ var headerRow = tbody.firstChild;
+
+ // Remove class from the currently sorted column
+ var headerSorted = Dom.getChildByClass(headerRow, "cookieHeaderSorted");
+ Css.removeClass(headerSorted, "cookieHeaderSorted");
+
+ // Mark new column as sorted.
+ var header = headerRow.childNodes[colIndex];
+ Css.setClass(header, "cookieHeaderSorted");
+
+ // If the column is already using required sort direction, bubble out.
+ if ((direction == "desc" && header.sorted == 1) ||
+ (direction == "asc" && header.sorted == -1))
+ return;
+
+ var values = [];
+ for (var row = tbody.childNodes[1]; row; row = row.nextSibling)
+ {
+ var cell = row.childNodes[colIndex];
+ var value = numerical ? parseFloat(cell.textContent) : cell.textContent;
+
+ // Issue 43, expires date is formatted in the UI, so use the original cookie
+ // value instead.
+ if (Css.hasClass(cell, "cookieExpiresCol"))
+ value = row.repObject.cookie.expires;
+
+ if (Css.hasClass(row, "opened"))
+ {
+ var cookieInfoRow = row.nextSibling;
+ values.push({row: row, value: value, info: cookieInfoRow});
+ row = cookieInfoRow;
+ }
+ else
+ {
+ values.push({row: row, value: value});
+ }
+ }
+
+ values.sort(function(a, b) { return a.value < b.value ? -1 : 1; });
+
+ if ((header.sorted && header.sorted == 1) || (!header.sorted && direction == "asc"))
+ {
+ Css.removeClass(header, "sortedDescending");
+ Css.setClass(header, "sortedAscending");
+
+ header.sorted = -1;
+
+ for (var i = 0; i < values.length; ++i)
+ {
+ tbody.appendChild(values[i].row);
+ if (values[i].info)
+ tbody.appendChild(values[i].info);
+ }
+ }
+ else
+ {
+ Css.removeClass(header, "sortedAscending");
+ Css.setClass(header, "sortedDescending");
+
+ header.sorted = 1;
+
+ for (var i = values.length-1; i >= 0; --i)
+ {
+ tbody.appendChild(values[i].row);
+ if (values[i].info)
+ tbody.appendChild(values[i].info);
+ }
+ }
+
+ // Remember last sorted column & direction in preferences.
+ var prefValue = header.getAttribute("id") + " " + (header.sorted > 0 ? "desc" : "asc");
+ Options.set(lastSortedColumn, prefValue);
+ },
+
+ supportsObject: function(object)
+ {
+ return (object == this);
+ },
+
+ /**
+ * Provides menu items for header context menu.
+ */
+ getContextMenuItems: function(object, target, context)
+ {
+ CookieReps.Rep.getContextMenuItems.apply(this, arguments);
+
+ var items = [];
+
+ // Iterate over all columns and create a menu item for each.
+ var table = context.getPanel(panelName, true).table;
+ var hiddenCols = table.getAttribute("hiddenCols");
+ var removedCols = table.getAttribute("removedCols");
+
+ var lastVisibleIndex;
+ var visibleColCount = 0;
+
+ var header = Dom.getAncestorByClass(target, "cookieHeaderRow");
+
+ // Skip the first column for breakpoints.
+ var columns = Arr.cloneArray(header.childNodes);
+ columns.shift();
+
+ for (var i=0; i<columns.length; i++)
+ {
+ var column = columns[i];
+
+ if (removedCols.indexOf(column.id) != -1)
+ continue;
+
+ var visible = (hiddenCols.indexOf(column.id) == -1);
+
+ items.push({
+ label: column.textContent,
+ type: "checkbox",
+ checked: visible,
+ nol10n: true,
+ command: Obj.bindFixed(this.onShowColumn, this, context, column.id)
+ });
+
+ if (visible)
+ {
+ lastVisibleIndex = i;
+ visibleColCount++;
+ }
+ }
+
+ // If the last column is visible, disable its menu item.
+ if (visibleColCount == 1)
+ items[lastVisibleIndex].disabled = true;
+
+ items.push("-");
+ items.push({
+ label: Locale.$STR("net.header.Reset Header"),
+ nol10n: true,
+ command: Obj.bindFixed(this.onResetColumns, this, context)
+ });
+
+ return items;
+ },
+
+ onShowColumn: function(context, colId)
+ {
+ var table = context.getPanel(panelName, true).table;
+ var hiddenCols = table.getAttribute("hiddenCols");
+
+ // If the column is already presented in the list of hidden columns,
+ // remove it, otherwise append.
+ var index = hiddenCols.indexOf(colId);
+ if (index >= 0)
+ {
+ table.setAttribute("hiddenCols", hiddenCols.substr(0,index-1) +
+ hiddenCols.substr(index+colId.length));
+ }
+ else
+ {
+ table.setAttribute("hiddenCols", hiddenCols + " " + colId);
+ }
+
+ // Store current state into the preferences.
+ Options.set(hiddenColsPref, table.getAttribute("hiddenCols"));
+ },
+
+ onResetColumns: function(context)
+ {
+ var panel = context.getPanel(panelName, true);
+ var header = Dom.getElementByClass(panel.panelNode, "cookieHeaderRow");
+
+ // Reset widths
+ var columns = header.childNodes;
+ for (var i=0; i<columns.length; i++)
+ {
+ var col = columns[i];
+ if (col.style)
+ col.style.width = "";
+ }
+
+ // Reset visibility.
+ Options.clear(hiddenColsPref);
+ panel.table.setAttribute("hiddenCols", Options.get(hiddenColsPref));
+
+ // Reset also sorting (no sorting by default)
+ var headerRow = panel.table.getElementsByClassName("cookieHeaderRow")[0];
+ var headerSorted = Dom.getChildByClass(headerRow, "cookieHeaderSorted");
+ Css.removeClass(headerSorted, "cookieHeaderSorted");
+ Options.set(lastSortedColumn, "");
+ panel.refresh();
+ },
+
+ createTable: function(parentNode)
+ {
+ // Create cookie table UI.
+ var table = this.tableTag.replace({}, parentNode, this);
+
+ // Update columns width according to the preferences.
+ var header = Dom.getElementByClass(table, "cookieHeaderRow");
+ var columns = header.getElementsByTagName("td");
+ for (var i=0; i<columns.length; i++)
+ {
+ var col = columns[i];
+ var colId = col.getAttribute("id");
+ if (!colId || !col.style)
+ continue;
+
+ var width = Options.get("cookies." + colId + ".width");
+ if (width)
+ col.style.width = width + "px";
+ }
+
+ return table;
+ },
+
+ render: function(cookies, parentNode)
+ {
+ // Create basic cookie-list structure.
+ var table = this.createTable(parentNode);
+ var header = Dom.getElementByClass(table, "cookieHeaderRow");
+
+ var tag = CookieReps.CookieRow.cookieTag;
+ return tag.insertRows({cookies: cookies}, header);
+ }
+});
+
+// ********************************************************************************************* //
+
+var OBJECTLINK = FirebugReps.OBJECTLINK;
+
+// xxxHonza: TODO
+CookieReps.CookieRep = domplate(CookieReps.Rep,
+{
+ tag:
+ OBJECTLINK(
+ SPAN({"class": "objectTitle"}, "$object|getTitle")
+ ),
+
+ className: "cookie",
+
+ supportsObject: function(cookie)
+ {
+ return cookie instanceof Cookie;
+ },
+
+ getTitle: function(cookie)
+ {
+ return cookie.cookie.name;
+ },
+
+ getTooltip: function(cookie)
+ {
+ return cookie.cookie.value;
+ }
+});
+
+// ********************************************************************************************* //
+// Debug helpers
+
+function checkList(panel)
+{
+ if (!FBTrace.DBG_COOKIES)
+ return;
+
+ if (!panel || !this.panelNode)
+ return;
+
+ var row = this.panelNode.getElementsByClassName("cookieRow")[0];
+ while (row)
+ {
+ var rep = row.repObject;
+ var displayedCookieName = row.getElementsByClassName("cookieNameLabel")[0].textContent;
+ var displayedCookiePath = row.getElementsByClassName("cookiePathLabel")[0].textContent;
+ if (rep.cookie.name != displayedCookieName || rep.cookie.path != displayedCookiePath)
+ {
+ FBTrace.sysout("---> Check failed!");
+ FBTrace.sysout("--->" + rep.rawHost + ", " + rep.cookie.name + ", " + rep.cookie.path);
+ FBTrace.sysout(" " + displayedCookieName + ", " + displayedCookiePath);
+ }
+
+ row = row.nextSibling;
+ }
+
+ return null;
+}
+
+// ********************************************************************************************* //
+// Firebug Registration
+
+Firebug.registerRep(
+ //CookieReps.CookieRep, // Cookie
+ CookieReps.CookieTable, // Cookie table with list of cookies
+ CookieReps.CookieRow, // Entry in the cookie table
+ CookieReps.CookieChanged, // Console: "cookie-changed" event
+ CookieReps.CookieRejected, // Console: "cookie-rejected" event
+ CookieReps.CookieCleared // Console: cookies "cleared" event
+);
+
+return CookieReps;
+
+// ********************************************************************************************* //
+}});
+
diff --git a/content/firebug/cookies/cookieUtils.js b/content/firebug/cookies/cookieUtils.js
index 93ee0e8..0742918 100644
--- a/content/firebug/cookies/cookieUtils.js
+++ b/content/firebug/cookies/cookieUtils.js
@@ -1,188 +1,188 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/cookies/cookie",
- "firebug/lib/wrapper",
- "firebug/lib/string"
-],
-function(Cookie, Wrapper, Str) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Cu = Components.utils;
-
-// ********************************************************************************************* //
-// CookieUtils Implementation
-
-var CookieUtils =
-{
- isDeletedCookie: function(cookie)
- {
- if (cookie.maxAge)
- return cookie.maxAge <= 0;
-
- if (cookie.expires)
- {
- var expiresDate = new Date(cookie.expires * 1000);
-
- return expiresDate.getTime() <= Date.now();
- }
-
- return false;
- },
-
- isSessionCookie: function(cookie)
- {
- // maxAge is string value, "0" will not register as session.
- return (!cookie.expires && !cookie.maxAge)
- },
-
- getCookieId: function(cookie)
- {
- return cookie.host + cookie.path + cookie.name;
- },
-
- makeStrippedHost: function(aHost)
- {
- if (!aHost)
- return aHost;
-
- var formattedHost = aHost.charAt(0) == "." ? aHost.substring(1, aHost.length) : aHost;
- return formattedHost.substring(0, 4) == "www." ? formattedHost.substring(4, formattedHost.length) : formattedHost;
- },
-
- makeCookieObject: function(cookie)
- {
- // Remember the raw value.
- var rawValue = cookie.value;
-
- // Unescape '+' characters that are used to encode a space.
- // This isn't done by unescape method.
- var value = cookie.value;
- if (value)
- value = value.replace(/\+/g, " ");
-
- value = unescape(value);
-
- try
- {
- value = Str.convertToUnicode(value);
- }
- catch (exc) { }
-
- return {
- name : cookie.name,
- value : value,
- isDomain : cookie.isDomain,
- host : cookie.host,
- path : cookie.path,
- isSecure : cookie.isSecure,
- expires : cookie.expires,
- maxAge : cookie.maxAge,
- isHttpOnly : cookie.isHttpOnly,
- rawValue : rawValue,
- rawCookie : cookie,
- };
- },
-
- parseFromString: function(string)
- {
- var cookie = new Object();
- var pairs = string.split("; ");
-
- for (var i=0; i<pairs.length; i++)
- {
- var option = pairs[i].split("=");
- if (i == 0)
- {
- cookie.name = option[0];
- cookie.value = option[1];
- }
- else
- {
- var name = option[0].toLowerCase();
- name = (name == "domain") ? "host" : name;
- switch(name)
- {
- case "httponly":
- cookie.isHttpOnly = true;
- break;
-
- case "secure":
- cookie.isSecure = true;
- break;
-
- case "max-age":
- //Remove dash from variable name
- cookie.maxAge = option[1];
- break;
-
- case "expires":
- var value = option[1];
- value = value.replace(/-/g, " ");
- cookie[name] = Date.parse(value) / 1000;
-
- // Log error if the date isn't correctly parsed.
- if (FBTrace.DBG_COOKIES)
- {
- var tempDate = new Date(cookie[name] * 1000);
- if (value != tempDate.toGMTString())
- {
- FBTrace.sysout("cookies.parseFromString: ERROR, " +
- "from: " + value +
- ", to: " + tempDate.toGMTString() +
- ", cookie: " + string);
- }
- }
- break;
-
- default:
- cookie[name] = option[1];
- }
- }
- }
-
- return cookie;
- },
-
- parseSentCookiesFromString: function(header)
- {
- var cookies = [];
-
- if (!header)
- return cookies;
-
- var pairs = header.split("; ");
- for (var i=0; i<pairs.length; i++)
- {
- var pair = pairs[i];
- var index = pair.indexOf("=");
- if (index > 0) {
- var name = pair.substring(0, index);
- var value = pair.substr(index+1);
- if (name.length && value.length)
- cookies.push(new Cookie(this.makeCookieObject({name: name, value: value})));
- }
- }
-
- return cookies;
- },
-
- getRealObject: function(cookie, context)
- {
- cookie = this.makeCookieObject(cookie);
- delete cookie.rawCookie;
-
- var global = context.getCurrentGlobal();
- return Wrapper.cloneIntoContentScope(global, cookie);
- }
-};
-
-// ********************************************************************************************* //
-
-return CookieUtils;
-
-// ********************************************************************************************* //
-});
-
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/cookies/cookie",
+ "firebug/lib/wrapper",
+ "firebug/lib/string"
+],
+function(Cookie, Wrapper, Str) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Cu = Components.utils;
+
+// ********************************************************************************************* //
+// CookieUtils Implementation
+
+var CookieUtils =
+{
+ isDeletedCookie: function(cookie)
+ {
+ if (cookie.maxAge)
+ return cookie.maxAge <= 0;
+
+ if (cookie.expires)
+ {
+ var expiresDate = new Date(cookie.expires * 1000);
+
+ return expiresDate.getTime() <= Date.now();
+ }
+
+ return false;
+ },
+
+ isSessionCookie: function(cookie)
+ {
+ // maxAge is string value, "0" will not register as session.
+ return (!cookie.expires && !cookie.maxAge)
+ },
+
+ getCookieId: function(cookie)
+ {
+ return cookie.host + cookie.path + cookie.name;
+ },
+
+ makeStrippedHost: function(aHost)
+ {
+ if (!aHost)
+ return aHost;
+
+ var formattedHost = aHost.charAt(0) == "." ? aHost.substring(1, aHost.length) : aHost;
+ return formattedHost.substring(0, 4) == "www." ? formattedHost.substring(4, formattedHost.length) : formattedHost;
+ },
+
+ makeCookieObject: function(cookie)
+ {
+ // Remember the raw value.
+ var rawValue = cookie.value;
+
+ // Unescape '+' characters that are used to encode a space.
+ // This isn't done by unescape method.
+ var value = cookie.value;
+ if (value)
+ value = value.replace(/\+/g, " ");
+
+ value = unescape(value);
+
+ try
+ {
+ value = Str.convertToUnicode(value);
+ }
+ catch (exc) { }
+
+ return {
+ name : cookie.name,
+ value : value,
+ isDomain : cookie.isDomain,
+ host : cookie.host,
+ path : cookie.path,
+ isSecure : cookie.isSecure,
+ expires : cookie.expires,
+ maxAge : cookie.maxAge,
+ isHttpOnly : cookie.isHttpOnly,
+ rawValue : rawValue,
+ rawCookie : cookie,
+ };
+ },
+
+ parseFromString: function(string)
+ {
+ var cookie = new Object();
+ var pairs = string.split("; ");
+
+ for (var i=0; i<pairs.length; i++)
+ {
+ var option = pairs[i].split("=");
+ if (i == 0)
+ {
+ cookie.name = option[0];
+ cookie.value = option[1];
+ }
+ else
+ {
+ var name = option[0].toLowerCase();
+ name = (name == "domain") ? "host" : name;
+ switch(name)
+ {
+ case "httponly":
+ cookie.isHttpOnly = true;
+ break;
+
+ case "secure":
+ cookie.isSecure = true;
+ break;
+
+ case "max-age":
+ //Remove dash from variable name
+ cookie.maxAge = option[1];
+ break;
+
+ case "expires":
+ var value = option[1];
+ value = value.replace(/-/g, " ");
+ cookie[name] = Date.parse(value) / 1000;
+
+ // Log error if the date isn't correctly parsed.
+ if (FBTrace.DBG_COOKIES)
+ {
+ var tempDate = new Date(cookie[name] * 1000);
+ if (value != tempDate.toGMTString())
+ {
+ FBTrace.sysout("cookies.parseFromString: ERROR, " +
+ "from: " + value +
+ ", to: " + tempDate.toGMTString() +
+ ", cookie: " + string);
+ }
+ }
+ break;
+
+ default:
+ cookie[name] = option[1];
+ }
+ }
+ }
+
+ return cookie;
+ },
+
+ parseSentCookiesFromString: function(header)
+ {
+ var cookies = [];
+
+ if (!header)
+ return cookies;
+
+ var pairs = header.split("; ");
+ for (var i=0; i<pairs.length; i++)
+ {
+ var pair = pairs[i];
+ var index = pair.indexOf("=");
+ if (index > 0) {
+ var name = pair.substring(0, index);
+ var value = pair.substr(index+1);
+ if (name.length && value.length)
+ cookies.push(new Cookie(this.makeCookieObject({name: name, value: value})));
+ }
+ }
+
+ return cookies;
+ },
+
+ getRealObject: function(cookie, context)
+ {
+ cookie = this.makeCookieObject(cookie);
+ delete cookie.rawCookie;
+
+ var global = context.getCurrentGlobal();
+ return Wrapper.cloneIntoContentScope(global, cookie);
+ }
+};
+
+// ********************************************************************************************* //
+
+return CookieUtils;
+
+// ********************************************************************************************* //
+});
+
diff --git a/content/firebug/cookies/cookies.css b/content/firebug/cookies/cookies.css
index fb8fc8d..30c1498 100644
--- a/content/firebug/cookies/cookies.css
+++ b/content/firebug/cookies/cookies.css
@@ -1,5 +1,5 @@
-/* See license.txt for terms of usage */
-
-#fcCustomPathFilterPanel {
- -moz-binding: url("chrome://firebug/content/cookies/popupFilterPanel.xml#popupFilterPanel");
-}
+/* See license.txt for terms of usage */
+
+#fcCustomPathFilterPanel {
+ -moz-binding: url("chrome://firebug/content/cookies/popupFilterPanel.xml#popupFilterPanel");
+}
diff --git a/content/firebug/cookies/dateTimePicker.xml b/content/firebug/cookies/dateTimePicker.xml
index 28449a4..e65cec6 100644
--- a/content/firebug/cookies/dateTimePicker.xml
+++ b/content/firebug/cookies/dateTimePicker.xml
@@ -1,52 +1,52 @@
-<?xml version="1.0"?>
-<!-- See license.txt for terms of usage -->
-
-<bindings xmlns="http://www.mozilla.org/xbl"
- xmlns:xbl="http://www.mozilla.org/xbl"
- xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-<binding id="dateTimePicker">
- <content>
- <xul:hbox anonid="dateTimeBox">
- <xul:datepicker anonid="datePicker" type="popup"/>
- <xul:timepicker anonid="timePicker"/>
- </xul:hbox>
- </content>
-
- <implementation>
- <constructor><![CDATA[
- this.datePicker = document.getAnonymousElementByAttribute(this, "anonid", "datePicker");
- this.timePicker = document.getAnonymousElementByAttribute(this, "anonid", "timePicker");
- ]]></constructor>
-
- <!-- Sets date and time as a GMT string -->
- <property name="value">
- <getter><![CDATA[
- var dateTime = new Date(this.datePicker.year, this.datePicker.month,
- this.datePicker.date, this.timePicker.hour, this.timePicker.minute,
- this.timePicker.second);
- return dateTime.toGMTString();
- ]]></getter>
- <setter><![CDATA[
- var dateTime = new Date();
- dateTime.setTime(Date.parse(val));
- this.datePicker.dateValue = dateTime;
- this.timePicker.dateValue = dateTime;
- ]]></setter>
- </property>
-
- <!-- Disables entire box -->
- <property name="disabled">
- <getter><![CDATA[
- return this.datePicker.disabled;
- ]]></getter>
- <setter><![CDATA[
- this.datePicker.disabled = val;
- this.timePicker.disabled = val;
- ]]></setter>
- </property>
-
- </implementation>
-</binding>
-
-</bindings>
+<?xml version="1.0"?>
+<!-- See license.txt for terms of usage -->
+
+<bindings xmlns="http://www.mozilla.org/xbl"
+ xmlns:xbl="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<binding id="dateTimePicker">
+ <content>
+ <xul:hbox anonid="dateTimeBox">
+ <xul:datepicker anonid="datePicker" type="popup"/>
+ <xul:timepicker anonid="timePicker"/>
+ </xul:hbox>
+ </content>
+
+ <implementation>
+ <constructor><![CDATA[
+ this.datePicker = document.getAnonymousElementByAttribute(this, "anonid", "datePicker");
+ this.timePicker = document.getAnonymousElementByAttribute(this, "anonid", "timePicker");
+ ]]></constructor>
+
+ <!-- Sets date and time as a GMT string -->
+ <property name="value">
+ <getter><![CDATA[
+ var dateTime = new Date(this.datePicker.year, this.datePicker.month,
+ this.datePicker.date, this.timePicker.hour, this.timePicker.minute,
+ this.timePicker.second);
+ return dateTime.toGMTString();
+ ]]></getter>
+ <setter><![CDATA[
+ var dateTime = new Date();
+ dateTime.setTime(Date.parse(val));
+ this.datePicker.dateValue = dateTime;
+ this.timePicker.dateValue = dateTime;
+ ]]></setter>
+ </property>
+
+ <!-- Disables entire box -->
+ <property name="disabled">
+ <getter><![CDATA[
+ return this.datePicker.disabled;
+ ]]></getter>
+ <setter><![CDATA[
+ this.datePicker.disabled = val;
+ this.timePicker.disabled = val;
+ ]]></setter>
+ </property>
+
+ </implementation>
+</binding>
+
+</bindings>
diff --git a/content/firebug/cookies/editCookie.css b/content/firebug/cookies/editCookie.css
index b28f3d8..4ce812d 100644
--- a/content/firebug/cookies/editCookie.css
+++ b/content/firebug/cookies/editCookie.css
@@ -1,11 +1,11 @@
-/* See license.txt for terms of usage */
-
-dateTimePicker {
- -moz-binding: url("chrome://firebug/content/cookies/dateTimePicker.xml#dateTimePicker");
-}
-
-.datetimepicker-input[disabled] {
- cursor: default;
- background-color: -moz-Dialog;
- color: GrayText;
-}
+/* See license.txt for terms of usage */
+
+dateTimePicker {
+ -moz-binding: url("chrome://firebug/content/cookies/dateTimePicker.xml#dateTimePicker");
+}
+
+.datetimepicker-input[disabled] {
+ cursor: default;
+ background-color: -moz-Dialog;
+ color: GrayText;
+}
diff --git a/content/firebug/cookies/editCookie.js b/content/firebug/cookies/editCookie.js
index 7dcd26a..b8e8f8c 100644
--- a/content/firebug/cookies/editCookie.js
+++ b/content/firebug/cookies/editCookie.js
@@ -1,282 +1,282 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/locale",
- "firebug/lib/xpcom",
- "firebug/cookies/cookie",
-],
-function(Locale, Xpcom, Cookie) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const windowMediator = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
-
-// ********************************************************************************************* //
-
-const ioService = Xpcom.CCSV("@mozilla.org/network/io-service;1", "nsIIOService");
-const prompts = Xpcom.CCSV("@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService");
-
-// ********************************************************************************************* //
-
-/**
- * @dialog Edit cookie dialog implementation. This dialog is used to create a new cookie
- * and edit an existing cookies.
- */
-function EditCookie(win)
-{
- this.window = win;
-}
-
-EditCookie.prototype =
-{
- cookie: null,
-
- onLoad: function()
- {
- this.createDateTimeField();
-
- var params = this.window.arguments[0];
- this.params = params;
- this.cookie = params.cookie;
-
- this.nameNode = $("fcName", this.window);
- this.valueNode = $("fcValue", this.window);
- this.domainNode = $("fcDomain", this.window);
- this.pathNode = $("fcPath", this.window);
- this.expireNode = $("fcExpire", this.window);
- this.sessionNode = $("fcSession", this.window);
- this.secureNode = $("fcSecure", this.window);
- this.httpOnly = $("fcHttpOnly", this.window);
- this.URLEncodeValue = $("fbURLEncodeValue", this.window);
-
- // Fix for issue 39: decode cookie name and value for usage in the dialog.
- // It'll be encoded again when OK is pressed.
- // Don't escape using encodeURIComponent, since "+" would be changed, but
- // it's a valid replacement for a space.
- // This is also necessary for issue 45.
- // Cookie name should not be encoded, see Issue 6653
- this.nameNode.value = this.cookie.name;
- this.valueNode.value = unescape(this.cookie.rawValue);
-
- this.domainNode.value = this.cookie.host;
- this.pathNode.value = this.cookie.path;
- this.secureNode.checked = this.cookie.isSecure;
- this.httpOnly.checked = this.cookie.isHttpOnly;
- this.URLEncodeValue.checked = this.cookie.rawValue != unescape(this.cookie.rawValue);
-
- if (this.cookie.expires)
- {
- var expires = new Date(this.cookie.expires * 1000);
- this.expireNode.value = expires.toGMTString();
- }
- else
- {
- this.sessionNode.checked = true;
-
- // Set default value for expire time (current time + some time span, see prefs
- // defaultInterval) so, the cookie doesn't disappear if the session box
- // is just unchecked.
-
- // xxxHonza: the default time is always set to the current time.
- //if (!this.expireNode.value)
- {
- var expireTime = Firebug.CookieModule.getDefaultCookieExpireTime();
- var expires = new Date(expireTime * 1000);
- this.expireNode.value = expires.toGMTString();
- }
- }
-
- // Update expire date-time picker.
- this.onSession();
-
- // Translate all string in the UI.
- this.fcInternationalizeUI();
- },
-
- fcInternationalizeUI: function()
- {
- var elements = ["fcEditCookieDlg", "fcNameLabel", "fcIsDomainLabel", "fcPathLabel",
- "fcExpireLabel", "fcSession", "fcValueLabel", "fcSecure", "fcHttpOnly",
- "fbURLEncodeValue"];
-
- for (var i=0; i<elements.length; i++)
- {
- var element = $(elements[i], this.window);
- if (element.hasAttribute("title"))
- Locale.internationalize(element, "title");
-
- if (element.hasAttribute("label"))
- Locale.internationalize(element, "label");
-
- if (element.hasAttribute("value"))
- Locale.internationalize(element, "value");
- }
- },
-
- onOK: function()
- {
- if (!this.checkValues())
- return false;
-
- var isSession = this.sessionNode.checked;
- var host = this.domainNode.value;
-
- var cookieName = this.nameNode.value;
- var cookieValue = this.valueNode.value;
-
- // Fix for issue 39: Can't create cookies with ';' in the name
- // But do not escape all,see issue 60: "[" and "]" characters get badly encoded
- // on cookie name upon editing
- cookieName = cookieName.replace(/\;/g, "%3B");
-
- // According to RFC 6265 (http://tools.ietf.org/html/rfc6265)
- // the cookie value should be encoded
- if (this.URLEncodeValue.checked)
- {
- cookieValue = escape(cookieValue);
-
- // Issue 45: When I copy and paste or edit a cookie contents + (plus) signs
- // get converted to spaces.
- cookieValue = cookieValue.replace(/\+/g, "%2B");
- }
-
- // Create a helper cookie object from the provided data.
- var values = {
- name: cookieName,
- rawValue: cookieValue,
- path: this.pathNode.value,
- host: host,
- isSecure: this.secureNode.checked,
- isHttpOnly: this.httpOnly.checked,
- isDomain: (host.charAt(0) == "."),
- expires: null // is computed below
- };
-
- // will be immediately removed.
- if (!isSession)
- {
- // If it isn't a session cookie set the proper expire time.
- var expires = new Date();
- expires.setTime(Date.parse(this.expireNode.value));
- values.expires = Math.floor(expires.valueOf() / 1000);
- }
-
- // Create/modify cookie.
- var cookie = new Cookie(values);
- Firebug.CookieModule.createCookie(cookie);
-
- // Close dialog.
- this.window.close();
-
- return true;
- },
-
- /**
- * Verify values before the OK button is pressed.
- */
- checkValues: function()
- {
- var name = this.nameNode.value;
- if (!name)
- {
- prompts.alert(this.window, Locale.$STR("Firebug"),
- Locale.$STR("cookies.edit.invalidname"));
- return false;
- }
-
- var domain = this.domainNode.value;
- if (!this.checkHost(domain))
- {
- prompts.alert(this.window, Locale.$STR("Firebug"),
- Locale.$STR("cookies.edit.invalidhost"));
- return false;
- }
-
- var path = this.pathNode.value;
- if (!this.checkPath(domain, path))
- {
- prompts.alert(this.window, Locale.$STR("Firebug"),
- Locale.$STR("cookies.edit.invalidpath"));
- return false;
- }
-
- return true;
- },
-
- onCancel: function()
- {
- window.close();
- },
-
- onSession: function()
- {
- this.expireNode.disabled = this.sessionNode.checked;
- },
-
- checkHost: function(host)
- {
- if (!host)
- return false;
-
- try
- {
- var uri = "http://" + host + "/";
- return ioService.newURI(uri, null, null) ? true : false;
- }
- catch (err) {
- }
-
- return false;
- },
-
- checkPath: function(host, path)
- {
- if (!path)
- return false;
-
- try {
- var uri = "http://" + host + "/" + path;
- return ioService.newURI(uri, null, null) ? true : false;
- }
- catch(err) {
- }
-
- return false;
- },
-
- createDateTimeField: function()
- {
- // Get the box element where the dateTime field should be located.
- var expireBox = this.window.document.getElementById("fcExpireBox");
-
- // Append a new field into the UI.
- var dateTimeField = this.window.document.createElement("dateTimePicker");
- dateTimeField.id = "fcExpire";
- expireBox.appendChild(dateTimeField);
- },
-
- getChromeWindow: function()
- {
- return windowMediator.getMostRecentWindow("navigator:browser");
- }
-};
-
-// ********************************************************************************************* //
-// Helpers
-
-function $(id, win)
-{
- return win.document.getElementById(id);
-}
-
-// ********************************************************************************************* //
-// Registration
-
-return EditCookie;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/locale",
+ "firebug/lib/xpcom",
+ "firebug/cookies/cookie",
+],
+function(Locale, Xpcom, Cookie) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+const windowMediator = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
+
+// ********************************************************************************************* //
+
+const ioService = Xpcom.CCSV("@mozilla.org/network/io-service;1", "nsIIOService");
+const prompts = Xpcom.CCSV("@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService");
+
+// ********************************************************************************************* //
+
+/**
+ * @dialog Edit cookie dialog implementation. This dialog is used to create a new cookie
+ * and edit an existing cookies.
+ */
+function EditCookie(win)
+{
+ this.window = win;
+}
+
+EditCookie.prototype =
+{
+ cookie: null,
+
+ onLoad: function()
+ {
+ this.createDateTimeField();
+
+ var params = this.window.arguments[0];
+ this.params = params;
+ this.cookie = params.cookie;
+
+ this.nameNode = $("fcName", this.window);
+ this.valueNode = $("fcValue", this.window);
+ this.domainNode = $("fcDomain", this.window);
+ this.pathNode = $("fcPath", this.window);
+ this.expireNode = $("fcExpire", this.window);
+ this.sessionNode = $("fcSession", this.window);
+ this.secureNode = $("fcSecure", this.window);
+ this.httpOnly = $("fcHttpOnly", this.window);
+ this.URLEncodeValue = $("fbURLEncodeValue", this.window);
+
+ // Fix for issue 39: decode cookie name and value for usage in the dialog.
+ // It'll be encoded again when OK is pressed.
+ // Don't escape using encodeURIComponent, since "+" would be changed, but
+ // it's a valid replacement for a space.
+ // This is also necessary for issue 45.
+ // Cookie name should not be encoded, see Issue 6653
+ this.nameNode.value = this.cookie.name;
+ this.valueNode.value = unescape(this.cookie.rawValue);
+
+ this.domainNode.value = this.cookie.host;
+ this.pathNode.value = this.cookie.path;
+ this.secureNode.checked = this.cookie.isSecure;
+ this.httpOnly.checked = this.cookie.isHttpOnly;
+ this.URLEncodeValue.checked = this.cookie.rawValue != unescape(this.cookie.rawValue);
+
+ if (this.cookie.expires)
+ {
+ var expires = new Date(this.cookie.expires * 1000);
+ this.expireNode.value = expires.toGMTString();
+ }
+ else
+ {
+ this.sessionNode.checked = true;
+
+ // Set default value for expire time (current time + some time span, see prefs
+ // defaultInterval) so, the cookie doesn't disappear if the session box
+ // is just unchecked.
+
+ // xxxHonza: the default time is always set to the current time.
+ //if (!this.expireNode.value)
+ {
+ var expireTime = Firebug.CookieModule.getDefaultCookieExpireTime();
+ var expires = new Date(expireTime * 1000);
+ this.expireNode.value = expires.toGMTString();
+ }
+ }
+
+ // Update expire date-time picker.
+ this.onSession();
+
+ // Translate all string in the UI.
+ this.fcInternationalizeUI();
+ },
+
+ fcInternationalizeUI: function()
+ {
+ var elements = ["fcEditCookieDlg", "fcNameLabel", "fcIsDomainLabel", "fcPathLabel",
+ "fcExpireLabel", "fcSession", "fcValueLabel", "fcSecure", "fcHttpOnly",
+ "fbURLEncodeValue"];
+
+ for (var i=0; i<elements.length; i++)
+ {
+ var element = $(elements[i], this.window);
+ if (element.hasAttribute("title"))
+ Locale.internationalize(element, "title");
+
+ if (element.hasAttribute("label"))
+ Locale.internationalize(element, "label");
+
+ if (element.hasAttribute("value"))
+ Locale.internationalize(element, "value");
+ }
+ },
+
+ onOK: function()
+ {
+ if (!this.checkValues())
+ return false;
+
+ var isSession = this.sessionNode.checked;
+ var host = this.domainNode.value;
+
+ var cookieName = this.nameNode.value;
+ var cookieValue = this.valueNode.value;
+
+ // Fix for issue 39: Can't create cookies with ';' in the name
+ // But do not escape all,see issue 60: "[" and "]" characters get badly encoded
+ // on cookie name upon editing
+ cookieName = cookieName.replace(/\;/g, "%3B");
+
+ // According to RFC 6265 (http://tools.ietf.org/html/rfc6265)
+ // the cookie value should be encoded
+ if (this.URLEncodeValue.checked)
+ {
+ cookieValue = escape(cookieValue);
+
+ // Issue 45: When I copy and paste or edit a cookie contents + (plus) signs
+ // get converted to spaces.
+ cookieValue = cookieValue.replace(/\+/g, "%2B");
+ }
+
+ // Create a helper cookie object from the provided data.
+ var values = {
+ name: cookieName,
+ rawValue: cookieValue,
+ path: this.pathNode.value,
+ host: host,
+ isSecure: this.secureNode.checked,
+ isHttpOnly: this.httpOnly.checked,
+ isDomain: (host.charAt(0) == "."),
+ expires: null // is computed below
+ };
+
+ // will be immediately removed.
+ if (!isSession)
+ {
+ // If it isn't a session cookie set the proper expire time.
+ var expires = new Date();
+ expires.setTime(Date.parse(this.expireNode.value));
+ values.expires = Math.floor(expires.valueOf() / 1000);
+ }
+
+ // Create/modify cookie.
+ var cookie = new Cookie(values);
+ Firebug.CookieModule.createCookie(cookie);
+
+ // Close dialog.
+ this.window.close();
+
+ return true;
+ },
+
+ /**
+ * Verify values before the OK button is pressed.
+ */
+ checkValues: function()
+ {
+ var name = this.nameNode.value;
+ if (!name)
+ {
+ prompts.alert(this.window, Locale.$STR("Firebug"),
+ Locale.$STR("cookies.edit.invalidname"));
+ return false;
+ }
+
+ var domain = this.domainNode.value;
+ if (!this.checkHost(domain))
+ {
+ prompts.alert(this.window, Locale.$STR("Firebug"),
+ Locale.$STR("cookies.edit.invalidhost"));
+ return false;
+ }
+
+ var path = this.pathNode.value;
+ if (!this.checkPath(domain, path))
+ {
+ prompts.alert(this.window, Locale.$STR("Firebug"),
+ Locale.$STR("cookies.edit.invalidpath"));
+ return false;
+ }
+
+ return true;
+ },
+
+ onCancel: function()
+ {
+ window.close();
+ },
+
+ onSession: function()
+ {
+ this.expireNode.disabled = this.sessionNode.checked;
+ },
+
+ checkHost: function(host)
+ {
+ if (!host)
+ return false;
+
+ try
+ {
+ var uri = "http://" + host + "/";
+ return ioService.newURI(uri, null, null) ? true : false;
+ }
+ catch (err) {
+ }
+
+ return false;
+ },
+
+ checkPath: function(host, path)
+ {
+ if (!path)
+ return false;
+
+ try {
+ var uri = "http://" + host + "/" + path;
+ return ioService.newURI(uri, null, null) ? true : false;
+ }
+ catch(err) {
+ }
+
+ return false;
+ },
+
+ createDateTimeField: function()
+ {
+ // Get the box element where the dateTime field should be located.
+ var expireBox = this.window.document.getElementById("fcExpireBox");
+
+ // Append a new field into the UI.
+ var dateTimeField = this.window.document.createElement("dateTimePicker");
+ dateTimeField.id = "fcExpire";
+ expireBox.appendChild(dateTimeField);
+ },
+
+ getChromeWindow: function()
+ {
+ return windowMediator.getMostRecentWindow("navigator:browser");
+ }
+};
+
+// ********************************************************************************************* //
+// Helpers
+
+function $(id, win)
+{
+ return win.document.getElementById(id);
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return EditCookie;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/cookies/editCookie.xul b/content/firebug/cookies/editCookie.xul
index 4dca75f..b80cc64 100644
--- a/content/firebug/cookies/editCookie.xul
+++ b/content/firebug/cookies/editCookie.xul
@@ -1,75 +1,75 @@
-<?xml version="1.0"?>
-<!-- See license.txt for terms of usage -->
-
-<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-<?xml-stylesheet href="chrome://firebug/skin/cookies/editCookie.css" type="text/css"?>
-<?xml-stylesheet href="chrome://firebug/content/cookies/editCookie.css" type="text/css"?>
-
-<dialog id="fcEditCookieDlg"
- windowtype="Browser:CookieEditor"
- title="cookies.edit.title"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- ondialogaccept="return EditCookie.onOK()"
- onload="EditCookie.onLoad()"
- minwidth="360px"
- minheight="300px"
- persist="width height screenX screenY">
-
- <script type="application/x-javascript">
- var args = window.arguments[0];
- FBTrace = args.FBTrace;
- EditCookie = new args.EditCookie(window);
- Firebug = args.Firebug;
- </script>
-
- <grid flex="1">
- <columns>
- <column/>
- <column flex="1"/>
- </columns>
- <rows>
- <row align="center">
- <vbox align="end">
- <label id="fcNameLabel" value="cookies.edit.name.label"/>
- </vbox>
- <textbox id="fcName"/>
- </row>
- <row align="center">
- <vbox align="end">
- <label id="fcIsDomainLabel" value="cookies.edit.domain.label"/>
- </vbox>
- <textbox id="fcDomain" />
- </row>
- <row align="center">
- <vbox align="end">
- <label id="fcPathLabel" value="cookies.edit.path.label"/>
- </vbox>
- <textbox id="fcPath" />
- </row>
- <row align="center">
- <vbox align="end">
- <label id="fcExpireLabel" value="cookies.edit.expire.label"/>
- </vbox>
- <hbox>
- <hbox id="fcExpireBox" flex="1"/>
- <checkbox id="fcSession" label="cookies.edit.session.label"
- oncommand="EditCookie.onSession()"/>
- </hbox>
- </row>
- <row flex="1">
- <vbox align="end">
- <label id="fcValueLabel" value="cookies.edit.value.label"/>
- </vbox>
- <textbox id="fcValue" flex="1" multiline="true" rows="3"/>
- </row>
- <hbox>
- <checkbox id="fbURLEncodeValue" label="cookies.edit.urlEncode.label"/>
- </hbox>
- <hbox>
- <checkbox id="fcSecure" label="cookies.edit.secure.label"/>
- <checkbox id="fcHttpOnly" label="cookies.edit.httponly.label"/>
- </hbox>
- </rows>
- </grid>
- <separator class="groove"/>
-</dialog>
+<?xml version="1.0"?>
+<!-- See license.txt for terms of usage -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://firebug/skin/cookies/editCookie.css" type="text/css"?>
+<?xml-stylesheet href="chrome://firebug/content/cookies/editCookie.css" type="text/css"?>
+
+<dialog id="fcEditCookieDlg"
+ windowtype="Browser:CookieEditor"
+ title="cookies.edit.title"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ ondialogaccept="return EditCookie.onOK()"
+ onload="EditCookie.onLoad()"
+ minwidth="360px"
+ minheight="300px"
+ persist="width height screenX screenY">
+
+ <script type="application/x-javascript">
+ var args = window.arguments[0];
+ FBTrace = args.FBTrace;
+ EditCookie = new args.EditCookie(window);
+ Firebug = args.Firebug;
+ </script>
+
+ <grid flex="1">
+ <columns>
+ <column/>
+ <column flex="1"/>
+ </columns>
+ <rows>
+ <row align="center">
+ <vbox align="end">
+ <label id="fcNameLabel" value="cookies.edit.name.label"/>
+ </vbox>
+ <textbox id="fcName"/>
+ </row>
+ <row align="center">
+ <vbox align="end">
+ <label id="fcIsDomainLabel" value="cookies.edit.domain.label"/>
+ </vbox>
+ <textbox id="fcDomain" />
+ </row>
+ <row align="center">
+ <vbox align="end">
+ <label id="fcPathLabel" value="cookies.edit.path.label"/>
+ </vbox>
+ <textbox id="fcPath" />
+ </row>
+ <row align="center">
+ <vbox align="end">
+ <label id="fcExpireLabel" value="cookies.edit.expire.label"/>
+ </vbox>
+ <hbox>
+ <hbox id="fcExpireBox" flex="1"/>
+ <checkbox id="fcSession" label="cookies.edit.session.label"
+ oncommand="EditCookie.onSession()"/>
+ </hbox>
+ </row>
+ <row flex="1">
+ <vbox align="end">
+ <label id="fcValueLabel" value="cookies.edit.value.label"/>
+ </vbox>
+ <textbox id="fcValue" flex="1" multiline="true" rows="3"/>
+ </row>
+ <hbox>
+ <checkbox id="fbURLEncodeValue" label="cookies.edit.urlEncode.label"/>
+ </hbox>
+ <hbox>
+ <checkbox id="fcSecure" label="cookies.edit.secure.label"/>
+ <checkbox id="fcHttpOnly" label="cookies.edit.httponly.label"/>
+ </hbox>
+ </rows>
+ </grid>
+ <separator class="groove"/>
+</dialog>
diff --git a/content/firebug/cookies/headerResizer.js b/content/firebug/cookies/headerResizer.js
index 883f6f3..8ab50f1 100644
--- a/content/firebug/cookies/headerResizer.js
+++ b/content/firebug/cookies/headerResizer.js
@@ -1,229 +1,229 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/xpcom",
- "firebug/lib/object",
- "firebug/lib/locale",
- "firebug/lib/domplate",
- "firebug/lib/dom",
- "firebug/lib/options",
- "firebug/lib/persist",
- "firebug/lib/string",
- "firebug/lib/http",
- "firebug/lib/css",
- "firebug/lib/events",
- "firebug/cookies/baseObserver",
- "firebug/cookies/menuUtils",
-],
-function(Xpcom, Obj, Locale, Domplate, Dom, Options, Persist, Str, Http, Css, Events,
- BaseObserver, MenuUtils) {
-
-// ********************************************************************************************* //
-// Resizable column helper (helper for Templates.CookieTable)
-
-var HeaderResizer =
-{
- resizing: false,
- currColumn: null,
- startX: 0,
- startWidth: 0,
- lastMouseUp: 0,
-
- onMouseClick: function(event)
- {
- if (!Events.isLeftClick(event))
- return;
-
- // Avoid click event for sorting, if the resizing has been just finished.
- var rightNow = now();
- if ((rightNow - this.lastMouseUp) < 1000)
- Events.cancelEvent(event);
- },
-
- onMouseDown: function(event)
- {
- if (!Events.isLeftClick(event))
- return;
-
- var target = event.target;
- if (!Css.hasClass(target, "cookieHeaderCellBox"))
- return;
-
- var header = Dom.getAncestorByClass(target, "cookieHeaderRow");
- if (!header)
- return;
-
- if (!this.isBetweenColumns(event))
- return;
-
- this.onStartResizing(event);
-
- Events.cancelEvent(event);
- },
-
- onMouseMove: function(event)
- {
- if (this.resizing)
- {
- if (Css.hasClass(target, "cookieHeaderCellBox"))
- target.style.cursor = "e-resize";
-
- this.onResizing(event);
- return;
- }
-
- var target = event.target;
- if (!Css.hasClass(target, "cookieHeaderCellBox"))
- return;
-
- if (target)
- target.style.cursor = "";
-
- if (!this.isBetweenColumns(event))
- return;
-
- // Update cursor if the mouse is located between two columns.
- target.style.cursor = "e-resize";
- },
-
- onMouseUp: function(event)
- {
- if (!this.resizing)
- return;
-
- this.lastMouseUp = now();
-
- this.onEndResizing(event);
- Events.cancelEvent(event);
- },
-
- onMouseOut: function(event)
- {
- if (!this.resizing)
- return;
-
- if (FBTrace.DBG_COOKIES)
- {
- FBTrace.sysout("cookies.Mouse out, target: " + event.target.localName +
- ", " + event.target.className);
- FBTrace.sysout(" explicitOriginalTarget: " + event.explicitOriginalTarget.localName +
- ", " + event.explicitOriginalTarget.className);
- }
-
- var target = event.target;
- if (target == event.explicitOriginalTarget)
- this.onEndResizing(event);
-
- Events.cancelEvent(event);
- },
-
- isBetweenColumns: function(event)
- {
- var target = event.target;
- var x = event.clientX;
-
- var column = Dom.getAncestorByClass(target, "cookieHeaderCell");
- var offset = Dom.getClientOffset(column);
- var size = Dom.getOffsetSize(column);
-
- if (column.previousSibling)
- {
- if (x < offset.x + 4)
- return 1; // Mouse is close to the left side of the column (target).
- }
-
- if (column.nextSibling)
- {
- if (x > offset.x + size.width - 6)
- return 2; // Mouse is close to the right side.
- }
-
- return 0;
- },
-
- onStartResizing: function(event)
- {
- var location = this.isBetweenColumns(event);
- if (!location)
- return;
-
- var target = event.target;
-
- this.resizing = true;
- this.startX = event.clientX;
-
- // Currently resizing column.
- var column = Dom.getAncestorByClass(target, "cookieHeaderCell");
- this.currColumn = (location == 1) ? column.previousSibling : column;
-
- // Last column width.
- var size = Dom.getOffsetSize(this.currColumn);
- this.startWidth = size.width;
-
- if (FBTrace.DBG_COOKIES)
- {
- var colId = this.currColumn.getAttribute("id");
- FBTrace.sysout("cookies.Start resizing column (id): " + colId +
- ", start width: " + this.startWidth);
- }
- },
-
- onResizing: function(event)
- {
- if (!this.resizing)
- return;
-
- var newWidth = this.startWidth + (event.clientX - this.startX);
- this.currColumn.style.width = newWidth + "px";
-
- if (FBTrace.DBG_COOKIES)
- {
- var colId = this.currColumn.getAttribute("id");
- FBTrace.sysout("cookies.Resizing column (id): " + colId +
- ", new width: " + newWidth);
- }
- },
-
- onEndResizing: function(event)
- {
- if (!this.resizing)
- return;
-
- this.resizing = false;
-
- var newWidth = this.startWidth + (event.clientX - this.startX);
- this.currColumn.style.width = newWidth + "px";
-
- // Store width into the preferences.
- var colId = this.currColumn.getAttribute("id");
- if (colId)
- {
- // Use directly nsIPrefBranch interface as the pref
- // doesn't have to exist yet.
- Options.setPref(Firebug.prefDomain, ".cookies." + colId + ".width", newWidth);
- }
-
- if (FBTrace.DBG_COOKIES)
- {
- var colId = this.currColumn.getAttribute("id");
- FBTrace.sysout("cookies.End resizing column (id): " + colId +
- ", new width: " + newWidth);
- }
- }
-};
-
-// ********************************************************************************************* //
-// Time Helpers
-
-function now()
-{
- return (new Date()).getTime();
-}
-
-// ********************************************************************************************* //
-
-return HeaderResizer;
-
-// ********************************************************************************************* //
-});
-
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/xpcom",
+ "firebug/lib/object",
+ "firebug/lib/locale",
+ "firebug/lib/domplate",
+ "firebug/lib/dom",
+ "firebug/lib/options",
+ "firebug/lib/persist",
+ "firebug/lib/string",
+ "firebug/lib/http",
+ "firebug/lib/css",
+ "firebug/lib/events",
+ "firebug/cookies/baseObserver",
+ "firebug/cookies/menuUtils",
+],
+function(Xpcom, Obj, Locale, Domplate, Dom, Options, Persist, Str, Http, Css, Events,
+ BaseObserver, MenuUtils) {
+
+// ********************************************************************************************* //
+// Resizable column helper (helper for Templates.CookieTable)
+
+var HeaderResizer =
+{
+ resizing: false,
+ currColumn: null,
+ startX: 0,
+ startWidth: 0,
+ lastMouseUp: 0,
+
+ onMouseClick: function(event)
+ {
+ if (!Events.isLeftClick(event))
+ return;
+
+ // Avoid click event for sorting, if the resizing has been just finished.
+ var rightNow = now();
+ if ((rightNow - this.lastMouseUp) < 1000)
+ Events.cancelEvent(event);
+ },
+
+ onMouseDown: function(event)
+ {
+ if (!Events.isLeftClick(event))
+ return;
+
+ var target = event.target;
+ if (!Css.hasClass(target, "cookieHeaderCellBox"))
+ return;
+
+ var header = Dom.getAncestorByClass(target, "cookieHeaderRow");
+ if (!header)
+ return;
+
+ if (!this.isBetweenColumns(event))
+ return;
+
+ this.onStartResizing(event);
+
+ Events.cancelEvent(event);
+ },
+
+ onMouseMove: function(event)
+ {
+ if (this.resizing)
+ {
+ if (Css.hasClass(target, "cookieHeaderCellBox"))
+ target.style.cursor = "e-resize";
+
+ this.onResizing(event);
+ return;
+ }
+
+ var target = event.target;
+ if (!Css.hasClass(target, "cookieHeaderCellBox"))
+ return;
+
+ if (target)
+ target.style.cursor = "";
+
+ if (!this.isBetweenColumns(event))
+ return;
+
+ // Update cursor if the mouse is located between two columns.
+ target.style.cursor = "e-resize";
+ },
+
+ onMouseUp: function(event)
+ {
+ if (!this.resizing)
+ return;
+
+ this.lastMouseUp = now();
+
+ this.onEndResizing(event);
+ Events.cancelEvent(event);
+ },
+
+ onMouseOut: function(event)
+ {
+ if (!this.resizing)
+ return;
+
+ if (FBTrace.DBG_COOKIES)
+ {
+ FBTrace.sysout("cookies.Mouse out, target: " + event.target.localName +
+ ", " + event.target.className);
+ FBTrace.sysout(" explicitOriginalTarget: " + event.explicitOriginalTarget.localName +
+ ", " + event.explicitOriginalTarget.className);
+ }
+
+ var target = event.target;
+ if (target == event.explicitOriginalTarget)
+ this.onEndResizing(event);
+
+ Events.cancelEvent(event);
+ },
+
+ isBetweenColumns: function(event)
+ {
+ var target = event.target;
+ var x = event.clientX;
+
+ var column = Dom.getAncestorByClass(target, "cookieHeaderCell");
+ var offset = Dom.getClientOffset(column);
+ var size = Dom.getOffsetSize(column);
+
+ if (column.previousSibling)
+ {
+ if (x < offset.x + 4)
+ return 1; // Mouse is close to the left side of the column (target).
+ }
+
+ if (column.nextSibling)
+ {
+ if (x > offset.x + size.width - 6)
+ return 2; // Mouse is close to the right side.
+ }
+
+ return 0;
+ },
+
+ onStartResizing: function(event)
+ {
+ var location = this.isBetweenColumns(event);
+ if (!location)
+ return;
+
+ var target = event.target;
+
+ this.resizing = true;
+ this.startX = event.clientX;
+
+ // Currently resizing column.
+ var column = Dom.getAncestorByClass(target, "cookieHeaderCell");
+ this.currColumn = (location == 1) ? column.previousSibling : column;
+
+ // Last column width.
+ var size = Dom.getOffsetSize(this.currColumn);
+ this.startWidth = size.width;
+
+ if (FBTrace.DBG_COOKIES)
+ {
+ var colId = this.currColumn.getAttribute("id");
+ FBTrace.sysout("cookies.Start resizing column (id): " + colId +
+ ", start width: " + this.startWidth);
+ }
+ },
+
+ onResizing: function(event)
+ {
+ if (!this.resizing)
+ return;
+
+ var newWidth = this.startWidth + (event.clientX - this.startX);
+ this.currColumn.style.width = newWidth + "px";
+
+ if (FBTrace.DBG_COOKIES)
+ {
+ var colId = this.currColumn.getAttribute("id");
+ FBTrace.sysout("cookies.Resizing column (id): " + colId +
+ ", new width: " + newWidth);
+ }
+ },
+
+ onEndResizing: function(event)
+ {
+ if (!this.resizing)
+ return;
+
+ this.resizing = false;
+
+ var newWidth = this.startWidth + (event.clientX - this.startX);
+ this.currColumn.style.width = newWidth + "px";
+
+ // Store width into the preferences.
+ var colId = this.currColumn.getAttribute("id");
+ if (colId)
+ {
+ // Use directly nsIPrefBranch interface as the pref
+ // doesn't have to exist yet.
+ Options.setPref(Firebug.prefDomain, ".cookies." + colId + ".width", newWidth);
+ }
+
+ if (FBTrace.DBG_COOKIES)
+ {
+ var colId = this.currColumn.getAttribute("id");
+ FBTrace.sysout("cookies.End resizing column (id): " + colId +
+ ", new width: " + newWidth);
+ }
+ }
+};
+
+// ********************************************************************************************* //
+// Time Helpers
+
+function now()
+{
+ return (new Date()).getTime();
+}
+
+// ********************************************************************************************* //
+
+return HeaderResizer;
+
+// ********************************************************************************************* //
+});
+
diff --git a/content/firebug/cookies/httpObserver.js b/content/firebug/cookies/httpObserver.js
index 2602da4..9e93345 100644
--- a/content/firebug/cookies/httpObserver.js
+++ b/content/firebug/cookies/httpObserver.js
@@ -1,266 +1,266 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/lib/xpcom",
- "firebug/cookies/baseObserver",
- "firebug/lib/http",
- "firebug/chrome/tabWatcher",
- "firebug/cookies/cookie",
- "firebug/lib/options",
- "firebug/cookies/cookieUtils",
- "firebug/lib/array",
- "firebug/chrome/firefox",
-],
-function(Obj, Xpcom, BaseObserver, Http, TabWatcher, Cookie, Options, CookieUtils, Arr, Firefox) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-
-const cookieService = Xpcom.CCSV("@mozilla.org/cookieService;1", "nsICookieService");
-
-const panelName = "cookies";
-
-// ********************************************************************************************* //
-// HTTP observer
-
-/**
- * @class Represents an observer for http-on-modify-request and
- * http-on-examine-response events that are dispatched
- * by Firefox when network request is executed and returned.
- */
-var HttpObserver = Obj.extend(BaseObserver,
-/** @lends HttpObserver */
-{
- // nsIObserver
- observe: function(aSubject, aTopic, aData)
- {
- try {
- aSubject = aSubject.QueryInterface(Ci.nsIHttpChannel);
- if (aTopic == "http-on-modify-request") {
- this.onModifyRequest(aSubject);
- } else if (aTopic == "http-on-examine-response") {
- this.onExamineResponse(aSubject);
- }
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("cookies.HttpObserver.observe; EXCEPTION " + err, err);
- }
- },
-
- onModifyRequest: function(request)
- {
- var name = request.URI.spec;
- var origName = request.originalURI.spec;
- var win = Http.getWindowForRequest(request);
- var tabId = Firebug.getTabIdForWindow(win);
-
- // Firebus's natures is to display information for a tab. So, if there
- // is no tab associated then end.
- if (!tabId)
- return;
-
- // Dump debug information to the console.
- if (FBTrace.DBG_COOKIES)
- {
- FBTrace.sysout("cookies.onModifyRequest: " + request.name);
- FBTrace.sysout("cookies.Cookies sent: " +
- cookieService.getCookieString(request.URI, request));
- }
-
- // At this moment (specified by all the conditions) FB context doesn't exists yet.
- // But the page already started loading and there are things to monitor.
- // This is why the temporary context is created. It's used as a place where to
- // store information (cookie events and hosts). All this info will be copied into
- // the real FB context when it's created (see initContext).
- if ((request.loadFlags & Ci.nsIHttpChannel.LOAD_DOCUMENT_URI) &&
- (request.loadGroup && request.loadGroup.groupObserver) &&
- (name == origName) && (win && win == win.parent))
- {
- var browser = Firefox.getBrowserForWindow(win);
-
- if (!Firebug.TabWatcher.shouldCreateContext(browser, name, null))
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onModifyRequest; Activation logic says don't create " +
- "temp context for: " + name);
- return;
- }
-
- if (FBTrace.DBG_COOKIES && Firebug.CookieModule.contexts[tabId])
- FBTrace.sysout("cookies.!!! Temporary context exists for: " + tabId);
-
- // Create temporary context
- if (!Firebug.CookieModule.contexts[tabId])
- {
- var tempContext = new TempContext(tabId);
- Firebug.CookieModule.contexts[tabId] = tempContext;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.INIT temporary context for: " + tempContext.tabId);
-
- tempContext.href = name;
- Firebug.CookieModule.initTempContext(tempContext);
- }
- }
-
- // Use the temporary context first, if it exists. There could be an old
- // context (associated with this tab) for the previous URL.
- var context = Firebug.CookieModule.contexts[tabId];
- context = context ? context : TabWatcher.getContextByWindow(win);
-
- // The context doesn't have to exist due to the activation support.
- if (!context)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onModifyRequest: context is NOT available for:" +
- request.URI.host + ", tabId: " + tabId);
- return;
- }
-
- // Collect all the host (redirects, iframes) as cookies for all of them
- // will be displayed.
- var activeHosts = context.cookies.activeHosts;
- var host = request.URI.host;
- if (!activeHosts[host])
- {
- activeHosts[host] = {host: host, path: request.URI.path};
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.New host (on-modify-request): " +
- request.URI.host + ", tabId: " + tabId, activeHosts);
-
- // Refresh the panel asynchronously.
- if (context instanceof Firebug.TabContext)
- context.invalidatePanels(panelName);
- }
- },
-
- onExamineResponse: function(request)
- {
- var win = Http.getWindowForRequest(request);
- var tabId = Firebug.getTabIdForWindow(win);
- if (!tabId)
- return;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onExamineResponse: " + request.name);
-
- // Do not collect received cookies if they are not necessary.
- if (!Options.get("cookies.logEvents") && !Options.get("cookies.showRejectedCookies"))
- return;
-
- // If logging to console is on, remember the set-cookie string, so
- // these cookies can be displayed together e.g. with rejected message.
- var setCookie;
- request.visitResponseHeaders({
- visitHeader: function(header, value) {
- if (header == "Set-Cookie")
- setCookie = value;
- }
- });
-
- // Bail out if no cookies is received.
- if (!setCookie)
- return;
-
- // Try to get the context from the contexts array first. The TabWatacher
- // could return context for the previous page in this tab.
- var context = Firebug.CookieModule.contexts[tabId];
- context = context ? context : TabWatcher.getContextByWindow(win);
-
- // The context doesn't have to exist due to the activation support.
- if (!context)
- {
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.onExamineResponse: context is NOT available for:" +
- request.URI.host + ", tabId: " + tabId);
- return;
- }
-
- // Associate the setCookie string with proper active host (active
- // host can be the page itself or an embedded iframe or a XHR).
- // Also remember originalURI so, the info where the cookies comes
- // from can be displayed to the user.
- var activeHosts = context.cookies.activeHosts;
- var host = request.URI.host;
- var activeHost = activeHosts[host];
-
- // Map of all received cookies. The key is cookie-host the value is
- // an array with all cookies with the same host.
- if (!context.cookies.activeCookies)
- context.cookies.activeCookies = [];
-
- if (!activeHost)
- return;
-
- var activeCookies = context.cookies.activeCookies;
-
- // xxxHonza
- // 1)the activeHost.receivedCookies array shouldn't be recreated
- // if it's already there.
- // 2) There can be more responses from the same domain (XHRs) and so,
- // more received cookies within the page life.
- // 3) The list should make sure that received cookies aren't duplicated.
- // (the same cookie can be received multiple time).
- // 4) Also, rejected cookies, are displayed in the cookie-list too and
- // these shouldn't be duplicated.
- // 5) This should be a map (key == the original host)
- //if (!activeHost.receivedCookies)
- activeHost.receivedCookies = [];
-
- // Parse all received cookies and store them into activeHost info.
- var cookies = setCookie.split("\n");
- for (var i=0; i<cookies.length; i++)
- {
- var cookie = CookieUtils.parseFromString(cookies[i]);
- cookie.originalURI = request.originalURI;
- if (!cookie.host)
- cookie.host = host;
-
- // Push into activeHosts
- var cookieWrapper = new Cookie(CookieUtils.makeCookieObject(cookie));
- activeHost.receivedCookies.push(cookieWrapper);
-
- // Push into activeCookies
- if (!activeCookies[cookie.host])
- activeCookies[cookie.host] = [];
-
- var activeCookiesForHost = activeCookies[cookie.host];
- activeCookiesForHost[CookieUtils.getCookieId(cookie)] = cookie;
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.Cookie received: " +
- cookie.host + ", cookie: " + cookie.name, cookie);
- }
-
- if (FBTrace.DBG_COOKIES)
- FBTrace.sysout("cookies.Set-Cookie: " + setCookie, activeCookies);
- }
-});
-
-// ********************************************************************************************* //
-// Temporary context
-
-function TempContext(tabId)
-{
- this.tabId = tabId;
- this.events = [];
-}
-
-TempContext.prototype.appendCookieEvent = function(subject, topic, data)
-{
- this.events.push({subject:subject, topic:topic, data:data});
-};
-
-// ********************************************************************************************* //
-
-return HttpObserver;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/lib/xpcom",
+ "firebug/cookies/baseObserver",
+ "firebug/lib/http",
+ "firebug/chrome/tabWatcher",
+ "firebug/cookies/cookie",
+ "firebug/lib/options",
+ "firebug/cookies/cookieUtils",
+ "firebug/lib/array",
+ "firebug/chrome/firefox",
+],
+function(Obj, Xpcom, BaseObserver, Http, TabWatcher, Cookie, Options, CookieUtils, Arr, Firefox) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+
+const cookieService = Xpcom.CCSV("@mozilla.org/cookieService;1", "nsICookieService");
+
+const panelName = "cookies";
+
+// ********************************************************************************************* //
+// HTTP observer
+
+/**
+ * @class Represents an observer for http-on-modify-request and
+ * http-on-examine-response events that are dispatched
+ * by Firefox when network request is executed and returned.
+ */
+var HttpObserver = Obj.extend(BaseObserver,
+/** @lends HttpObserver */
+{
+ // nsIObserver
+ observe: function(aSubject, aTopic, aData)
+ {
+ try {
+ aSubject = aSubject.QueryInterface(Ci.nsIHttpChannel);
+ if (aTopic == "http-on-modify-request") {
+ this.onModifyRequest(aSubject);
+ } else if (aTopic == "http-on-examine-response") {
+ this.onExamineResponse(aSubject);
+ }
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("cookies.HttpObserver.observe; EXCEPTION " + err, err);
+ }
+ },
+
+ onModifyRequest: function(request)
+ {
+ var name = request.URI.spec;
+ var origName = request.originalURI.spec;
+ var win = Http.getWindowForRequest(request);
+ var tabId = Firebug.getTabIdForWindow(win);
+
+ // Firebus's natures is to display information for a tab. So, if there
+ // is no tab associated then end.
+ if (!tabId)
+ return;
+
+ // Dump debug information to the console.
+ if (FBTrace.DBG_COOKIES)
+ {
+ FBTrace.sysout("cookies.onModifyRequest: " + request.name);
+ FBTrace.sysout("cookies.Cookies sent: " +
+ cookieService.getCookieString(request.URI, request));
+ }
+
+ // At this moment (specified by all the conditions) FB context doesn't exists yet.
+ // But the page already started loading and there are things to monitor.
+ // This is why the temporary context is created. It's used as a place where to
+ // store information (cookie events and hosts). All this info will be copied into
+ // the real FB context when it's created (see initContext).
+ if ((request.loadFlags & Ci.nsIHttpChannel.LOAD_DOCUMENT_URI) &&
+ (request.loadGroup && request.loadGroup.groupObserver) &&
+ (name == origName) && (win && win == win.parent))
+ {
+ var browser = Firefox.getBrowserForWindow(win);
+
+ if (!Firebug.TabWatcher.shouldCreateContext(browser, name, null))
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onModifyRequest; Activation logic says don't create " +
+ "temp context for: " + name);
+ return;
+ }
+
+ if (FBTrace.DBG_COOKIES && Firebug.CookieModule.contexts[tabId])
+ FBTrace.sysout("cookies.!!! Temporary context exists for: " + tabId);
+
+ // Create temporary context
+ if (!Firebug.CookieModule.contexts[tabId])
+ {
+ var tempContext = new TempContext(tabId);
+ Firebug.CookieModule.contexts[tabId] = tempContext;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.INIT temporary context for: " + tempContext.tabId);
+
+ tempContext.href = name;
+ Firebug.CookieModule.initTempContext(tempContext);
+ }
+ }
+
+ // Use the temporary context first, if it exists. There could be an old
+ // context (associated with this tab) for the previous URL.
+ var context = Firebug.CookieModule.contexts[tabId];
+ context = context ? context : TabWatcher.getContextByWindow(win);
+
+ // The context doesn't have to exist due to the activation support.
+ if (!context)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onModifyRequest: context is NOT available for:" +
+ request.URI.host + ", tabId: " + tabId);
+ return;
+ }
+
+ // Collect all the host (redirects, iframes) as cookies for all of them
+ // will be displayed.
+ var activeHosts = context.cookies.activeHosts;
+ var host = request.URI.host;
+ if (!activeHosts[host])
+ {
+ activeHosts[host] = {host: host, path: request.URI.path};
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.New host (on-modify-request): " +
+ request.URI.host + ", tabId: " + tabId, activeHosts);
+
+ // Refresh the panel asynchronously.
+ if (context instanceof Firebug.TabContext)
+ context.invalidatePanels(panelName);
+ }
+ },
+
+ onExamineResponse: function(request)
+ {
+ var win = Http.getWindowForRequest(request);
+ var tabId = Firebug.getTabIdForWindow(win);
+ if (!tabId)
+ return;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onExamineResponse: " + request.name);
+
+ // Do not collect received cookies if they are not necessary.
+ if (!Options.get("cookies.logEvents") && !Options.get("cookies.showRejectedCookies"))
+ return;
+
+ // If logging to console is on, remember the set-cookie string, so
+ // these cookies can be displayed together e.g. with rejected message.
+ var setCookie;
+ request.visitResponseHeaders({
+ visitHeader: function(header, value) {
+ if (header == "Set-Cookie")
+ setCookie = value;
+ }
+ });
+
+ // Bail out if no cookies is received.
+ if (!setCookie)
+ return;
+
+ // Try to get the context from the contexts array first. The TabWatacher
+ // could return context for the previous page in this tab.
+ var context = Firebug.CookieModule.contexts[tabId];
+ context = context ? context : TabWatcher.getContextByWindow(win);
+
+ // The context doesn't have to exist due to the activation support.
+ if (!context)
+ {
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.onExamineResponse: context is NOT available for:" +
+ request.URI.host + ", tabId: " + tabId);
+ return;
+ }
+
+ // Associate the setCookie string with proper active host (active
+ // host can be the page itself or an embedded iframe or a XHR).
+ // Also remember originalURI so, the info where the cookies comes
+ // from can be displayed to the user.
+ var activeHosts = context.cookies.activeHosts;
+ var host = request.URI.host;
+ var activeHost = activeHosts[host];
+
+ // Map of all received cookies. The key is cookie-host the value is
+ // an array with all cookies with the same host.
+ if (!context.cookies.activeCookies)
+ context.cookies.activeCookies = [];
+
+ if (!activeHost)
+ return;
+
+ var activeCookies = context.cookies.activeCookies;
+
+ // xxxHonza
+ // 1)the activeHost.receivedCookies array shouldn't be recreated
+ // if it's already there.
+ // 2) There can be more responses from the same domain (XHRs) and so,
+ // more received cookies within the page life.
+ // 3) The list should make sure that received cookies aren't duplicated.
+ // (the same cookie can be received multiple time).
+ // 4) Also, rejected cookies, are displayed in the cookie-list too and
+ // these shouldn't be duplicated.
+ // 5) This should be a map (key == the original host)
+ //if (!activeHost.receivedCookies)
+ activeHost.receivedCookies = [];
+
+ // Parse all received cookies and store them into activeHost info.
+ var cookies = setCookie.split("\n");
+ for (var i=0; i<cookies.length; i++)
+ {
+ var cookie = CookieUtils.parseFromString(cookies[i]);
+ cookie.originalURI = request.originalURI;
+ if (!cookie.host)
+ cookie.host = host;
+
+ // Push into activeHosts
+ var cookieWrapper = new Cookie(CookieUtils.makeCookieObject(cookie));
+ activeHost.receivedCookies.push(cookieWrapper);
+
+ // Push into activeCookies
+ if (!activeCookies[cookie.host])
+ activeCookies[cookie.host] = [];
+
+ var activeCookiesForHost = activeCookies[cookie.host];
+ activeCookiesForHost[CookieUtils.getCookieId(cookie)] = cookie;
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.Cookie received: " +
+ cookie.host + ", cookie: " + cookie.name, cookie);
+ }
+
+ if (FBTrace.DBG_COOKIES)
+ FBTrace.sysout("cookies.Set-Cookie: " + setCookie, activeCookies);
+ }
+});
+
+// ********************************************************************************************* //
+// Temporary context
+
+function TempContext(tabId)
+{
+ this.tabId = tabId;
+ this.events = [];
+}
+
+TempContext.prototype.appendCookieEvent = function(subject, topic, data)
+{
+ this.events.push({subject:subject, topic:topic, data:data});
+};
+
+// ********************************************************************************************* //
+
+return HttpObserver;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/cookies/legacy.js b/content/firebug/cookies/legacy.js
index 1eecdc1..a183e0c 100644
--- a/content/firebug/cookies/legacy.js
+++ b/content/firebug/cookies/legacy.js
@@ -1,84 +1,84 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/lib/xpcom",
- "firebug/lib/locale",
- "firebug/chrome/window",
-],
-function(Obj, Xpcom, Locale, Win) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Ci = Components.interfaces;
-
-Components.utils.import("resource://gre/modules/AddonManager.jsm");
-
-var prompts = Xpcom.CCSV("@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService");
-var app = Xpcom.CCSV("@mozilla.org/toolkit/app-startup;1", "nsIAppStartup");
-
-// ********************************************************************************************* //
-// Module
-
-var CookieLegacy = Obj.extend(Firebug.Module,
-{
- initialize: function(prefDomain, prefNames)
- {
- Firebug.Module.initialize.apply(this, arguments);
-
- setTimeout(Obj.bind(this.onAlert, this), 1000);
- },
-
- onAlert: function()
- {
- // Detect whether Firecookie is installed. This extension has been integrated
- // with Firebug and so, should not be installed together with Firebug 1.10+
- if (!Firebug.FireCookieModel)
- return;
-
- // See https://developer.mozilla.org/en/nsIPromptService#confirmEx%28%29
- // for configuration details.
- var check = {value: false};
- var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_IS_STRING +
- prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_CANCEL +
- prompts.BUTTON_POS_2 * prompts.BUTTON_TITLE_IS_STRING +
- prompts.BUTTON_POS_0_DEFAULT;
-
- var index = prompts.confirmEx(null, Locale.$STR("Firebug"),
- Locale.$STR("cookies.legacy.firecookie_detected"), flags,
- Locale.$STR("cookies.legacy.uninstall_and_restart"),
- "",
- Locale.$STR("cookies.legacy.uninstall"), null, check);
-
- // Bail out if the user presses Cancel.
- if (index == 2)
- return;
-
- // Let's uninstall, restart will follow if button #0 has been clicked.
- this.uninstallAddon(index == 0);
- },
-
- uninstallAddon: function(restart)
- {
- AddonManager.getAddonByID("firecookie at janodvarko.cz", function(addon)
- {
- // Uninstall is synchronous.
- addon.uninstall();
-
- if (restart)
- app.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
- });
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(CookieLegacy);
-
-return CookieLegacy;
-
-// ********************************************************************************************* //
-});
-
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/lib/xpcom",
+ "firebug/lib/locale",
+ "firebug/chrome/window",
+],
+function(Obj, Xpcom, Locale, Win) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Ci = Components.interfaces;
+
+Components.utils.import("resource://gre/modules/AddonManager.jsm");
+
+var prompts = Xpcom.CCSV("@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService");
+var app = Xpcom.CCSV("@mozilla.org/toolkit/app-startup;1", "nsIAppStartup");
+
+// ********************************************************************************************* //
+// Module
+
+var CookieLegacy = Obj.extend(Firebug.Module,
+{
+ initialize: function(prefDomain, prefNames)
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+
+ setTimeout(Obj.bind(this.onAlert, this), 1000);
+ },
+
+ onAlert: function()
+ {
+ // Detect whether Firecookie is installed. This extension has been integrated
+ // with Firebug and so, should not be installed together with Firebug 1.10+
+ if (!Firebug.FireCookieModel)
+ return;
+
+ // See https://developer.mozilla.org/en/nsIPromptService#confirmEx%28%29
+ // for configuration details.
+ var check = {value: false};
+ var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_IS_STRING +
+ prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_CANCEL +
+ prompts.BUTTON_POS_2 * prompts.BUTTON_TITLE_IS_STRING +
+ prompts.BUTTON_POS_0_DEFAULT;
+
+ var index = prompts.confirmEx(null, Locale.$STR("Firebug"),
+ Locale.$STR("cookies.legacy.firecookie_detected"), flags,
+ Locale.$STR("cookies.legacy.uninstall_and_restart"),
+ "",
+ Locale.$STR("cookies.legacy.uninstall"), null, check);
+
+ // Bail out if the user presses Cancel.
+ if (index == 2)
+ return;
+
+ // Let's uninstall, restart will follow if button #0 has been clicked.
+ this.uninstallAddon(index == 0);
+ },
+
+ uninstallAddon: function(restart)
+ {
+ AddonManager.getAddonByID("firecookie at janodvarko.cz", function(addon)
+ {
+ // Uninstall is synchronous.
+ addon.uninstall();
+
+ if (restart)
+ app.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
+ });
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(CookieLegacy);
+
+return CookieLegacy;
+
+// ********************************************************************************************* //
+});
+
diff --git a/content/firebug/cookies/menuUtils.js b/content/firebug/cookies/menuUtils.js
index de9fc8b..2321f4a 100644
--- a/content/firebug/cookies/menuUtils.js
+++ b/content/firebug/cookies/menuUtils.js
@@ -1,76 +1,76 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/lib/options",
-],
-function(Obj, Options) {
-
-// ********************************************************************************************* //
-// Menu Utils
-
-var MenuUtils =
-{
- optionMenu: function(context, label, tooltiptext, domain, option)
- {
- var value = Options.getPref(domain, option), self = this;
- return {
- label: label,
- tooltiptext: tooltiptext,
- type: "checkbox",
- checked: value,
- command: function()
- {
- var checked = this.hasAttribute("checked");
- self.setPref(domain, option, checked);
- }
- };
- },
-
- optionAllowGlobally: function(context, label, tooltiptext, domain, option)
- {
- var value = Options.getPref(domain, option) == 0;
- return {
- label: label,
- tooltiptext: tooltiptext,
- type: "checkbox",
- checked: value,
- command: Obj.bindFixed(this.onAllowCookie, this, domain, option)
- };
- },
-
- // Command handlers
- onAllowCookie: function(domain, option)
- {
- var value = Options.getPref(domain, option);
- switch (value)
- {
- case 0: // accept all cookies by default
- Options.setPref(domain, option, 2);
- return;
-
- case 1: // only accept from the originating site (block third party cookies)
- case 2: // block all cookies by default;
- case 3: // use p3p settings
- Options.setPref(domain, option, 0);
- return;
- }
- },
-
- onBlockCurrent: function()
- {
- },
-
- setPref: function(domain, name, value)
- {
- Options.setPref(domain, name, value);
- }
-};
-
-// ********************************************************************************************* //
-
-return MenuUtils;
-
-// ********************************************************************************************* //
-});
-
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/lib/options",
+],
+function(Obj, Options) {
+
+// ********************************************************************************************* //
+// Menu Utils
+
+var MenuUtils =
+{
+ optionMenu: function(context, label, tooltiptext, domain, option)
+ {
+ var value = Options.getPref(domain, option), self = this;
+ return {
+ label: label,
+ tooltiptext: tooltiptext,
+ type: "checkbox",
+ checked: value,
+ command: function()
+ {
+ var checked = this.hasAttribute("checked");
+ self.setPref(domain, option, checked);
+ }
+ };
+ },
+
+ optionAllowGlobally: function(context, label, tooltiptext, domain, option)
+ {
+ var value = Options.getPref(domain, option) == 0;
+ return {
+ label: label,
+ tooltiptext: tooltiptext,
+ type: "checkbox",
+ checked: value,
+ command: Obj.bindFixed(this.onAllowCookie, this, domain, option)
+ };
+ },
+
+ // Command handlers
+ onAllowCookie: function(domain, option)
+ {
+ var value = Options.getPref(domain, option);
+ switch (value)
+ {
+ case 0: // accept all cookies by default
+ Options.setPref(domain, option, 2);
+ return;
+
+ case 1: // only accept from the originating site (block third party cookies)
+ case 2: // block all cookies by default;
+ case 3: // use p3p settings
+ Options.setPref(domain, option, 0);
+ return;
+ }
+ },
+
+ onBlockCurrent: function()
+ {
+ },
+
+ setPref: function(domain, name, value)
+ {
+ Options.setPref(domain, name, value);
+ }
+};
+
+// ********************************************************************************************* //
+
+return MenuUtils;
+
+// ********************************************************************************************* //
+});
+
diff --git a/content/firebug/cookies/popupFilterPanel.xml b/content/firebug/cookies/popupFilterPanel.xml
index e1cd588..bf3fc72 100644
--- a/content/firebug/cookies/popupFilterPanel.xml
+++ b/content/firebug/cookies/popupFilterPanel.xml
@@ -1,47 +1,47 @@
-<?xml version="1.0"?>
-<!-- See license.txt for terms of usage -->
-
-<bindings xmlns="http://www.mozilla.org/xbl"
- xmlns:xbl="http://www.mozilla.org/xbl"
- xmlns:html="http://www.w3.org/1999/xhtml"
- xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-<binding id="popupFilterPanel" extends="chrome://global/content/bindings/popup.xml#panel">
- <content>
- <xul:vbox align="center">
- <xul:hbox anonid="filterBox" />
- <xul:hbox>
- <xul:button label="Apply" xbl:inherits="oncommand=onapply"/>
- </xul:hbox>
- </xul:vbox>
- </content>
- <implementation>
- <constructor><![CDATA[
- this.filterBox = document.getAnonymousElementByAttribute(this, "anonid", "filterBox");
- ]]></constructor>
-
- <!-- Value of the filter -->
- <property name="value" onget="return this.textbox ? this.textbox.value : null;"/>
-
- <!-- Filter input init -->
- <method name="init">
- <parameter name="value"/>
- <body><![CDATA[
- // Remove old text box
- if (this.textbox)
- this.filterbox.removeChild(this.textbox);
-
- // Create new text box.
- this.textbox = document.createElementNS(
- "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
- "xul:textbox");
- this.textbox.setAttribute("anonid", "filterValue");
- this.textbox.setAttribute("size", "35");
- this.textbox.setAttribute("value", value);
- this.filterBox.appendChild(this.textbox);
- ]]></body>
- </method>(
- </implementation>
-</binding>
-
-</bindings>
+<?xml version="1.0"?>
+<!-- See license.txt for terms of usage -->
+
+<bindings xmlns="http://www.mozilla.org/xbl"
+ xmlns:xbl="http://www.mozilla.org/xbl"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<binding id="popupFilterPanel" extends="chrome://global/content/bindings/popup.xml#panel">
+ <content>
+ <xul:vbox align="center">
+ <xul:hbox anonid="filterBox" />
+ <xul:hbox>
+ <xul:button label="Apply" xbl:inherits="oncommand=onapply"/>
+ </xul:hbox>
+ </xul:vbox>
+ </content>
+ <implementation>
+ <constructor><![CDATA[
+ this.filterBox = document.getAnonymousElementByAttribute(this, "anonid", "filterBox");
+ ]]></constructor>
+
+ <!-- Value of the filter -->
+ <property name="value" onget="return this.textbox ? this.textbox.value : null;"/>
+
+ <!-- Filter input init -->
+ <method name="init">
+ <parameter name="value"/>
+ <body><![CDATA[
+ // Remove old text box
+ if (this.textbox)
+ this.filterbox.removeChild(this.textbox);
+
+ // Create new text box.
+ this.textbox = document.createElementNS(
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
+ "xul:textbox");
+ this.textbox.setAttribute("anonid", "filterValue");
+ this.textbox.setAttribute("size", "35");
+ this.textbox.setAttribute("value", value);
+ this.filterBox.appendChild(this.textbox);
+ ]]></body>
+ </method>(
+ </implementation>
+</binding>
+
+</bindings>
diff --git a/content/firebug/css/computedPanel.js b/content/firebug/css/computedPanel.js
index 3b30b75..6e05848 100644
--- a/content/firebug/css/computedPanel.js
+++ b/content/firebug/css/computedPanel.js
@@ -1,906 +1,911 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/xml",
- "firebug/lib/url",
- "firebug/lib/array",
- "firebug/js/sourceLink",
- "firebug/chrome/menu",
- "firebug/lib/options",
- "firebug/lib/string",
- "firebug/lib/persist",
- "firebug/css/cssModule",
- "firebug/css/cssReps",
- "firebug/css/loadHandler",
-],
-function(Obj, Firebug, Domplate, Locale, Events, Css, Dom, Xml, Url, Arr, SourceLink, Menu,
- Options, Str, Persist, CSSModule, CSSInfoTip, LoadHandler) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cu = Components.utils;
-
-const statusClasses = ["cssUnmatched", "cssParentMatch", "cssOverridden", "cssBestMatch"];
-
-// xxxHonza: shell we move this mess to lib?
-try
-{
- // Firefox <= 22
- // xxxHonza: broken by: https://bugzilla.mozilla.org/show_bug.cgi?id=855914
- var scope = {};
- Cu.import("resource:///modules/devtools/CssLogic.jsm", scope);
- var CssLogic = scope.CssLogic;
-}
-catch (err)
-{
- try
- {
- // Firefox 23
- var scope = {}
- Cu.import("resource:///modules/devtools/gDevTools.jsm", scope);
- var {CssLogic} = scope.devtools.require("devtools/styleinspector/css-logic");
- }
- catch (err)
- {
- try
- {
- // Firefox 24
- // waiting for: https://bugzilla.mozilla.org/show_bug.cgi?id=867595
- var scope = {}
- Cu.import("resource://gre/modules/devtools/Loader.jsm", scope);
- var {CssLogic} = scope.devtools.require("devtools/styleinspector/css-logic");
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("cssComputedPanel: EXCEPTION CssLogic is not available! " + e, e);
- }
- }
-}
-
-// ********************************************************************************************* //
-// CSS Computed panel (HTML side panel)
-
-function CSSComputedPanel() {}
-
-CSSComputedPanel.prototype = Obj.extend(Firebug.Panel,
-{
- template: domplate(
- {
- computedStylesTag:
- DIV({"class": "a11yCSSView", role: "list", "aria-label":
- Locale.$STR("aria.labels.computed styles")}),
-
- groupedStylesTag:
- FOR("group", "$groups",
- DIV({"class": "computedStylesGroup", $opened: "$group.opened", role: "list",
- $hidden: "$group.props|hasNoStyles", _repObject: "$group"},
- H1({"class": "cssComputedHeader groupHeader focusRow", role: "listitem"},
- DIV({"class": "twisty", role: "presentation"}),
- SPAN({"class": "cssComputedLabel"}, "$group.title")
- ),
- TAG("$stylesTag", {props: "$group.props"})
- )
- ),
-
- stylesTag:
- TABLE({"class": "computedStyleTable", role: "list"},
- TBODY({role: "presentation"},
- FOR("prop", "$props",
- TR({"class": "focusRow computedStyleRow computedStyle",
- $opened: "$prop.opened", role: "listitem",
- $hasSelectors: "$prop|hasSelectors", _repObject: "$prop"},
- TD({"class": "stylePropName", role: "presentation"},
- "$prop.property"
- ),
- TD({role: "presentation"},
- SPAN({"class": "stylePropValue"}, "$prop.value|formatValue"))
- ),
- TR({"class": "focusRow computedStyleRow matchedSelectors", _repObject: "$prop"},
- TD({colspan: 2},
- TAG("$selectorsTag", {prop: "$prop"})
- )
- )
- )
- )
- ),
-
- selectorsTag:
- TABLE({"class": "matchedSelectorsTable", role: "list"},
- TBODY({role: "presentation"},
- FOR("selector", "$prop.matchedSelectors",
- TR({"class": "focusRow computedStyleRow styleSelector "+
- "$selector.status|getStatusClass", role: "listitem",
- _repObject: "$selector"},
- TD({"class": "selectorName", role: "presentation"},
- "$selector.selector.text"),
- TD({"class": "propValue", role: "presentation"},
- SPAN({"class": "stylePropValue"}, "$selector.value|formatValue")),
- TD({"class": "styleSourceLink", role: "presentation"},
- TAG(FirebugReps.SourceLink.tag, {object: "$selector|getSourceLink"})
- )
- )
- )
- )
- ),
-
- getStatusClass: function(status)
- {
- return statusClasses[status];
- },
-
- hasNoStyles: function(props)
- {
- return props.length == 0;
- },
-
- hasSelectors: function(prop)
- {
- return prop.matchedRuleCount != 0;
- },
-
- getSourceLink: function(selector)
- {
- var href = selector.href.href || selector.href;
- var line = selector.ruleLine;
- var rule = selector.selector._cssRule._domRule;
-
- var instance = Css.getInstanceForStyleSheet(rule.parentStyleSheet);
- var sourceLink = line != -1 ? new SourceLink.SourceLink(href, line, "css",
- rule, instance) : null;
-
- return sourceLink;
- },
-
- formatValue: function(value)
- {
- value = formatColor(value);
-
- var limit = Options.get("stringCropLength");
- if (limit > 0)
- value = Str.cropString(value, limit);
-
- // Add a zero-width space after a comma to allow line breaking
- return value.replace(/,/g, ",\u200B");
- }
- }),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- updateComputedView: function(element)
- {
- // The current selection can be null.
- if (!element)
- return;
-
- // Update now if the document is loaded, otherwise wait for "load" event.
- var loadHandler = new LoadHandler();
- loadHandler.handle(this.context, Obj.bindFixed(this.doUpdateComputedView, this, element));
- },
-
- doUpdateComputedView: function(element)
- {
- function isUnwantedProp(propName)
- {
- return !Firebug.showMozillaSpecificStyles && Str.hasPrefix(propName, "-moz");
- }
-
- var win = element.ownerDocument.defaultView;
- var computedStyle = win.getComputedStyle(element);
-
- try
- {
- if (this.cssLogic)
- this.cssLogic.highlight(element);
- }
- catch (e)
- {
- // An exception is thrown if the document is not fully loaded yet
- // The cssLogic API needs to be used after "load" has been fired.
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("computedPanel.doUpdateComputedView; EXCEPTION " + e, e);
- }
-
- var props = [];
- for (var i = 0; i < computedStyle.length; ++i)
- {
- var prop = this.cssLogic ? this.cssLogic.getPropertyInfo(computedStyle[i]) :
- Firebug.CSSModule.getPropertyInfo(computedStyle, computedStyle[i]);
-
- if (isUnwantedProp(prop.property) ||
- (this.cssLogic && !Firebug.showUserAgentCSS && prop.matchedRuleCount == 0))
- {
- continue;
- }
-
- props.push(prop);
- }
-
- var parentNode = this.template.computedStylesTag.replace({}, this.panelNode);
-
- if (props.length != 0)
- {
- if (Firebug.computedStylesDisplay == "alphabetical")
- {
- this.sortProperties(props);
-
- for (var i = 0; i < props.length; ++i)
- props[i].opened = this.styleOpened[props[i].property];
-
- var result = this.template.stylesTag.replace({props: props}, parentNode);
- }
- else
- {
- var groups = [];
- for (var groupName in styleGroups)
- {
- var title = Locale.$STR("StyleGroup-" + groupName);
- var group = {name: groupName, title: title, props: []};
-
- var groupProps = styleGroups[groupName];
- for (var i = 0; i < groupProps.length; ++i)
- {
- var propName = groupProps[i];
- if (isUnwantedProp(propName))
- continue;
-
- var prop = this.cssLogic ? this.cssLogic.getPropertyInfo(propName) :
- Firebug.CSSModule.getPropertyInfo(computedStyle, propName);
-
- if (!Firebug.showUserAgentCSS && prop.matchedRuleCount == 0)
- continue;
-
- prop.opened = this.styleOpened[propName];
-
- group.props.push(prop);
-
- for (var j = 0; j < props.length; ++j)
- {
- if (props[j].property == propName)
- {
- props.splice(j, 1);
- break;
- }
- }
- }
-
- group.opened = this.groupOpened[groupName];
-
- groups.push(group);
- }
-
- if (props.length > 0)
- {
- var group = groups[groups.length-1];
- for (var i = 0; i < props.length; ++i)
- {
- var propName = props[i].property;
- if (isUnwantedProp(propName))
- continue;
-
- var prop = this.cssLogic ? this.cssLogic.getPropertyInfo(propName) :
- Firebug.CSSModule.getPropertyInfo(computedStyle, propName);
-
- prop.opened = this.styleOpened[propName];
-
- group.props.push(prop);
- }
-
- group.opened = this.groupOpened[group.name];
- }
-
- var result = this.template.groupedStylesTag.replace({groups: groups}, parentNode);
- }
- }
- else
- {
- FirebugReps.Warning.tag.replace({object: "computed.No_User-Defined_Styles"},
- this.panelNode);
- }
-
- if (this.scrollTop)
- {
- this.panelNode.scrollTop = this.scrollTop;
- delete this.scrollTop;
- }
-
- Events.dispatch(this.fbListeners, "onCSSRulesAdded", [this, result]);
- },
-
- toggleGroup: function(node)
- {
- var groupNode = Dom.getAncestorByClass(node, "computedStylesGroup");
- var group = Firebug.getRepObject(groupNode);
-
- Css.toggleClass(groupNode, "opened");
- var opened = Css.hasClass(groupNode, "opened");
- this.groupOpened[group.name] = opened;
-
- if (opened)
- {
- var offset = Dom.getClientOffset(node);
- var titleAtTop = offset.y < this.panelNode.scrollTop;
-
- Dom.scrollTo(groupNode, this.panelNode, null,
- groupNode.offsetHeight > this.panelNode.clientHeight || titleAtTop ? "top" : "bottom");
- }
- },
-
- toggleAllStyles: function(event, expand)
- {
- var computedStyles = this.panelNode.getElementsByClassName("computedStyle");
-
- for (var i = 0; i < computedStyles.length; ++i)
- {
- if (!Css.hasClass(computedStyles[i], "hasSelectors"))
- continue;
-
- var isOpened = Css.hasClass(computedStyles[i], "opened");
- if ((expand && !isOpened) || (!expand && isOpened))
- this.toggleStyle(computedStyles[i], false);
- }
- },
-
- toggleStyle: function(node, scroll)
- {
- var styleNode = Dom.getAncestorByClass(node, "computedStyle");
- var style = Firebug.getRepObject(styleNode);
-
- Css.toggleClass(styleNode, "opened");
- var opened = Css.hasClass(styleNode, "opened");
- this.styleOpened[style.property] = Css.hasClass(styleNode, "opened");
-
- if (opened && scroll)
- {
- var selectorsNode = styleNode.nextSibling;
- var offset = Dom.getClientOffset(styleNode);
- var titleAtTop = offset.y < this.panelNode.scrollTop;
- var totalHeight = styleNode.offsetHeight + selectorsNode.offsetHeight;
- var alignAtTop = totalHeight > this.panelNode.clientHeight || titleAtTop;
-
- Dom.scrollTo(alignAtTop ? styleNode : selectorsNode, this.panelNode, null,
- alignAtTop ? "top" : "bottom", alignAtTop);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Events
-
- onClick: function(event)
- {
- if (!Events.isLeftClick(event))
- return;
-
- var cssComputedHeader = Dom.getAncestorByClass(event.target, "cssComputedHeader");
- if (cssComputedHeader)
- {
- this.toggleGroup(event.target);
- return;
- }
-
- var computedStyle = Dom.getAncestorByClass(event.target, "computedStyle");
- if (computedStyle && Css.hasClass(computedStyle, "hasSelectors"))
- {
- this.toggleStyle(event.target, true);
- return;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Panel
-
- name: "computed",
- parentPanel: "html",
- order: 1,
-
- initialize: function()
- {
- if (typeof CssLogic != "undefined")
- this.cssLogic = new CssLogic();
-
- this.groupOpened = [];
- for (var groupName in styleGroups)
- this.groupOpened[groupName] = true;
-
- this.styleOpened = [];
-
- // Listen for CSS changes so the Computed panel is properly updated when needed.
- Firebug.CSSModule.addListener(this);
-
- this.onClick = Obj.bind(this.onClick, this);
-
- Firebug.Panel.initialize.apply(this, arguments);
- },
-
- destroy: function(state)
- {
- state.scrollTop = this.panelNode.scrollTop ? this.panelNode.scrollTop : this.lastScrollTop;
- state.groupOpened = this.groupOpened;
- state.styleOpened = this.styleOpened;
-
- Persist.persistObjects(this, state);
-
- Firebug.CSSModule.removeListener(this);
-
- Firebug.Panel.destroyNode.apply(this, arguments);
- },
-
- initializeNode: function(oldPanelNode)
- {
- Events.addEventListener(this.panelNode, "click", this.onClick, false);
-
- Firebug.Panel.initializeNode.apply(this, arguments);
- },
-
- destroyNode: function()
- {
- Events.removeEventListener(this.panelNode, "click", this.onClick, false);
-
- Firebug.Panel.destroyNode.apply(this, arguments);
- },
-
- show: function(state)
- {
- // Wait for loadedContext to restore the panel
- if (this.context.loaded)
- {
- Persist.restoreObjects(this, state);
-
- if (state)
- {
- if (state.scrollTop)
- this.scrollTop = state.scrollTop;
-
- if (state.groupOpened)
- this.groupOpened = state.groupOpened;
-
- if (state.styleOpened)
- this.styleOpened = state.styleOpened;
- }
- }
-
- if (this.selection)
- this.refresh();
- },
-
- hide: function()
- {
- this.lastScrollTop = this.panelNode.scrollTop;
- },
-
- updateView: function(element)
- {
- this.updateComputedView(element);
- },
-
- supportsObject: function(object, type)
- {
- return object instanceof window.Element ? 1 : 0;
- },
-
- refresh: function()
- {
- this.updateSelection(this.selection);
- },
-
- updateSelection: function(element)
- {
- this.updateComputedView(element);
- },
-
- updateOption: function(name, value)
- {
- var options = new Set();
- options.add("showUserAgentCSS");
- options.add("computedStylesDisplay");
- options.add("colorDisplay");
- options.add("showMozillaSpecificStyles");
-
- if (options.has(name))
- this.refresh();
- },
-
- getOptionsMenuItems: function()
- {
- var items = [];
-
- if (this.cssLogic)
- {
- items.push(
- Menu.optionMenu("Show_User_Agent_CSS", "showUserAgentCSS",
- "style.option.tip.Show_User_Agent_CSS")
- );
- }
-
- items.push(
- {
- label: "Sort_alphabetically",
- type: "checkbox",
- checked: Firebug.computedStylesDisplay == "alphabetical",
- tooltiptext: "computed.option.tip.Sort_Alphabetically",
- command: Obj.bind(this.toggleDisplay, this)
- },
- Menu.optionMenu("Show_Mozilla_specific_styles",
- "showMozillaSpecificStyles",
- "computed.option.tip.Show_Mozilla_Specific_Styles")
- );
-
- items = Arr.extendArray(items, CSSModule.getColorDisplayOptionMenuItems());
-
- return items;
- },
-
- getContextMenuItems: function(style, target)
- {
- var items = [];
- var computedStyles = this.panelNode.getElementsByClassName("computedStyle");
- var expandAll = false;
- var collapseAll = false;
- for (var i = 0; i < computedStyles.length; ++i)
- {
- if (!Css.hasClass(computedStyles[i], "hasSelectors"))
- continue;
-
- if (!expandAll && !Css.hasClass(computedStyles[i], "opened"))
- expandAll = true;
- if (!collapseAll && Css.hasClass(computedStyles[i], "opened"))
- collapseAll = true;
- }
-
- if (expandAll)
- {
- items.push(
- {
- label: "computed.option.label.Expand_All_Styles",
- command: Obj.bind(this.toggleAllStyles, this, true),
- tooltiptext: "computed.option.tip.Expand_All_Styles"
- }
- );
- }
-
- if (collapseAll)
- {
- items.push(
- {
- label: "computed.option.label.Collapse_All_Styles",
- command: Obj.bind(this.toggleAllStyles, this, false),
- tooltiptext: "computed.option.tip.Collapse_All_Styles"
- }
- );
- }
-
- return items;
- },
-
- onMouseDown: function(event)
- {
- if (!Events.isLeftClick(event))
- return;
-
- var cssComputedHeader = Dom.getAncestorByClass(event.target, "cssComputedHeader");
- if (cssComputedHeader)
- this.toggleNode(event);
- },
-
- toggleNode: function(event)
- {
- var group = Dom.getAncestorByClass(event.target, "computedStylesGroup");
- var groupName = group.getElementsByClassName("cssComputedLabel")[0].textContent;
-
- Css.toggleClass(group, "opened");
- this.groupOpened[groupName] = Css.hasClass(group, "opened");
- },
-
- toggleDisplay: function()
- {
- var display = Firebug.computedStylesDisplay == "alphabetical" ? "grouped" : "alphabetical";
- Options.set("computedStylesDisplay", display);
- },
-
- sortProperties: function(props)
- {
- props.sort(function(a, b)
- {
- return a.property > b.property ? 1 : -1;
- });
- },
-
- getStylesheetURL: function(rule, getBaseUri)
- {
- // If parentStyleSheet.href is null, then per the CSS standard this is an inline style.
- if (rule && rule.parentStyleSheet && rule.parentStyleSheet.href)
- return rule.parentStyleSheet.href;
- else if (getBaseUri)
- return this.selection.ownerDocument.baseURI;
- else
- return this.selection.ownerDocument.location.href;
- },
-
- showInfoTip: function(infoTip, target, x, y, rangeParent, rangeOffset)
- {
- var propValue = Dom.getAncestorByClass(target, "stylePropValue");
- if (propValue)
- {
- var propInfo = Firebug.getRepObject(target);
-
- var prop = propInfo.property;
- var value = formatColor(propInfo.value);
- var cssValue;
-
- if (prop == "font" || prop == "font-family")
- {
- if (value.charAt(rangeOffset) == ",")
- return;
-
- cssValue = Firebug.CSSModule.parseCSSFontFamilyValue(value, rangeOffset, prop);
- }
- else
- {
- cssValue = Firebug.CSSModule.parseCSSValue(value, rangeOffset);
- }
-
- if (!cssValue)
- return false;
-
- if (cssValue.value == this.infoTipValue)
- return true;
-
- this.infoTipValue = cssValue.value;
-
- switch (cssValue.type)
- {
- case "rgb":
- case "hsl":
- case "gradient":
- case "colorKeyword":
- this.infoTipType = "color";
- this.infoTipObject = cssValue.value;
- return CSSInfoTip.populateColorInfoTip(infoTip, cssValue.value);
-
- case "url":
- if (Css.isImageRule(Xml.getElementSimpleType(propInfo), prop))
- {
- var baseURL = typeof propInfo.href == "object" ? propInfo.href.href : propInfo.href;
- if (!baseURL)
- baseURL = propInfo.matchedSelectors[0].href;
- var relURL = Firebug.CSSModule.parseURLValue(cssValue.value);
- var absURL = Url.isDataURL(relURL) ? relURL : Url.absoluteURL(relURL, baseURL);
- var repeat = Firebug.CSSModule.parseRepeatValue(value);
-
- this.infoTipType = "image";
- this.infoTipObject = absURL;
-
- return CSSInfoTip.populateImageInfoTip(infoTip, absURL, repeat);
- }
- break;
-
- case "fontFamily":
- return CSSInfoTip.populateFontFamilyInfoTip(infoTip, cssValue.value);
- }
-
- delete this.infoTipType;
- delete this.infoTipValue;
- delete this.infoTipObject;
-
- return false;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Change Listener
-
- onCSSInsertRule: function(styleSheet, cssText, ruleIndex)
- {
- // Force update, this causes updateSelection to be called.
- // See {@link Firebug.Panel.select}
- this.selection = null;
- },
-
- onCSSDeleteRule: function(styleSheet, ruleIndex)
- {
- this.selection = null;
- },
-
- onCSSSetProperty: function(style, propName, propValue, propPriority, prevValue,
- prevPriority, rule, baseText)
- {
- this.selection = null;
- },
-
- onCSSRemoveProperty: function(style, propName, prevValue, prevPriority, rule, baseText)
- {
- this.selection = null;
- }
-});
-
-// ********************************************************************************************* //
-// Helpers
-
-function formatColor(color)
-{
- switch (Options.get("colorDisplay"))
- {
- case "hex":
- return Css.rgbToHex(color);
-
- case "hsl":
- return Css.rgbToHSL(color);
-
- case "rgb":
- return Css.colorNameToRGB(color);
-
- default:
- return color;
- }
-}
-
-const styleGroups =
-{
- text: [
- "font-family",
- "font-size",
- "font-weight",
- "font-style",
- "font-size-adjust",
- "color",
- "text-transform",
- "text-decoration",
- "letter-spacing",
- "word-spacing",
- "line-height",
- "text-align",
- "vertical-align",
- "direction",
- "column-count",
- "column-gap",
- "column-width",
- "-moz-tab-size", // FF4.0
- "-moz-font-feature-settings", // FF4.0
- "-moz-font-language-override", // FF4.0
- "-moz-text-blink", // FF6.0
- "-moz-text-decoration-color", // FF6.0
- "-moz-text-decoration-line", // FF6.0
- "-moz-text-decoration-style", // FF6.0
- "hyphens", // FF 6.0
- "text-overflow" // FF7.0
- ],
-
- background: [
- "background-color",
- "background-image",
- "background-repeat",
- "background-position",
- "background-attachment",
- "opacity",
- "background-clip",
- "-moz-background-inline-policy",
- "background-origin",
- "background-size",
- "-moz-image-region"
- ],
-
- box: [
- "width",
- "height",
- "top",
- "right",
- "bottom",
- "left",
- "margin-top",
- "margin-right",
- "margin-bottom",
- "margin-left",
- "padding-top",
- "padding-right",
- "padding-bottom",
- "padding-left",
- "-moz-padding-start",
- "-moz-padding-end",
- "border-top-width",
- "border-right-width",
- "border-bottom-width",
- "border-left-width",
- "border-top-color",
- "-moz-border-top-colors",
- "border-right-color",
- "-moz-border-right-colors",
- "border-bottom-color",
- "-moz-border-bottom-colors",
- "border-left-color",
- "-moz-border-left-colors",
- "border-top-style",
- "border-right-style",
- "border-bottom-style",
- "border-left-style",
- "-moz-border-end",
- "-moz-border-end-color",
- "-moz-border-end-style",
- "-moz-border-end-width",
- "border-image",
- "-moz-border-start",
- "-moz-border-start-color",
- "-moz-border-start-style",
- "-moz-border-start-width",
- "border-top-left-radius",
- "border-top-right-radius",
- "border-bottom-left-radius",
- "border-bottom-right-radius",
- "-moz-outline-radius-bottomleft",
- "-moz-outline-radius-bottomright",
- "-moz-outline-radius-topleft",
- "-moz-outline-radius-topright",
- "box-shadow",
- "outline-color",
- "outline-offset",
- "outline-top-width",
- "outline-right-width",
- "outline-bottom-width",
- "outline-left-width",
- "outline-top-color",
- "outline-right-color",
- "outline-bottom-color",
- "outline-left-color",
- "outline-top-style",
- "outline-right-style",
- "outline-bottom-style",
- "outline-left-style",
- "-moz-box-align",
- "-moz-box-direction",
- "-moz-box-flex",
- "-moz-box-ordinal-group",
- "-moz-box-orient",
- "-moz-box-pack",
- "-moz-box-sizing",
- "-moz-margin-start",
- "-moz-margin-end"
- ],
-
- layout: [
- "position",
- "display",
- "visibility",
- "z-index",
- "overflow-x", // http://www.w3.org/TR/2002/WD-css3-box-20021024/#overflow
- "overflow-y",
- "overflow-clip",
- "transform",
- "transform-origin",
- "white-space",
- "clip",
- "float",
- "clear",
- "-moz-appearance",
- "-moz-stack-sizing",
- "-moz-column-count",
- "-moz-column-gap",
- "-moz-column-width",
- "-moz-column-rule",
- "-moz-column-rule-width",
- "-moz-column-rule-style",
- "-moz-column-rule-color",
- "-moz-float-edge",
- "orient"
- ],
-
- other: []
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(CSSComputedPanel);
-
-return CSSComputedPanel;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/xml",
+ "firebug/lib/url",
+ "firebug/lib/array",
+ "firebug/js/sourceLink",
+ "firebug/chrome/menu",
+ "firebug/lib/options",
+ "firebug/lib/string",
+ "firebug/lib/persist",
+ "firebug/css/cssModule",
+ "firebug/css/cssReps",
+ "firebug/css/loadHandler",
+],
+function(Obj, Firebug, Domplate, Locale, Events, Css, Dom, Xml, Url, Arr, SourceLink, Menu,
+ Options, Str, Persist, CSSModule, CSSInfoTip, LoadHandler) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cu = Components.utils;
+
+const statusClasses = ["cssUnmatched", "cssParentMatch", "cssOverridden", "cssBestMatch"];
+
+// xxxHonza: shell we move this mess to lib?
+try
+{
+ // Firefox <= 22
+ // xxxHonza: broken by: https://bugzilla.mozilla.org/show_bug.cgi?id=855914
+ var scope = {};
+ Cu.import("resource:///modules/devtools/CssLogic.jsm", scope);
+ var CssLogic = scope.CssLogic;
+}
+catch (err)
+{
+ try
+ {
+ // Firefox 23
+ var scope = {}
+ Cu.import("resource:///modules/devtools/gDevTools.jsm", scope);
+ var {CssLogic} = scope.devtools.require("devtools/styleinspector/css-logic");
+ }
+ catch (err)
+ {
+ try
+ {
+ // Firefox 24
+ // waiting for: https://bugzilla.mozilla.org/show_bug.cgi?id=867595
+ var scope = {}
+ Cu.import("resource://gre/modules/devtools/Loader.jsm", scope);
+ var {CssLogic} = scope.devtools.require("devtools/styleinspector/css-logic");
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("cssComputedPanel: EXCEPTION CssLogic is not available! " + e, e);
+ }
+ }
+}
+
+// ********************************************************************************************* //
+// CSS Computed panel (HTML side panel)
+
+function CSSComputedPanel() {}
+
+CSSComputedPanel.prototype = Obj.extend(Firebug.Panel,
+{
+ template: domplate(
+ {
+ computedStylesTag:
+ DIV({"class": "a11yCSSView", role: "list", "aria-label":
+ Locale.$STR("aria.labels.computed styles")}),
+
+ groupedStylesTag:
+ FOR("group", "$groups",
+ DIV({"class": "computedStylesGroup", $opened: "$group.opened", role: "list",
+ $hidden: "$group.props|hasNoStyles", _repObject: "$group"},
+ H1({"class": "cssComputedHeader groupHeader focusRow", role: "listitem"},
+ DIV({"class": "twisty", role: "presentation"}),
+ SPAN({"class": "cssComputedLabel"}, "$group.title")
+ ),
+ TAG("$stylesTag", {props: "$group.props"})
+ )
+ ),
+
+ stylesTag:
+ TABLE({"class": "computedStyleTable", role: "list"},
+ TBODY({role: "presentation"},
+ FOR("prop", "$props",
+ TR({"class": "focusRow computedStyleRow computedStyle",
+ $opened: "$prop.opened", role: "listitem",
+ $hasSelectors: "$prop|hasSelectors", _repObject: "$prop"},
+ TD({"class": "stylePropName", role: "presentation"},
+ "$prop.property"
+ ),
+ TD({role: "presentation"},
+ SPAN({"class": "stylePropValue"}, "$prop.value|formatValue"))
+ ),
+ TR({"class": "focusRow computedStyleRow matchedSelectors", _repObject: "$prop"},
+ TD({colspan: 2},
+ TAG("$selectorsTag", {prop: "$prop"})
+ )
+ )
+ )
+ )
+ ),
+
+ selectorsTag:
+ TABLE({"class": "matchedSelectorsTable", role: "list"},
+ TBODY({role: "presentation"},
+ FOR("selector", "$prop.matchedSelectors",
+ TR({"class": "focusRow computedStyleRow styleSelector "+
+ "$selector.status|getStatusClass", role: "listitem",
+ _repObject: "$selector"},
+ TD({"class": "selectorName", role: "presentation"},
+ "$selector.selector.text"),
+ TD({"class": "propValue", role: "presentation"},
+ SPAN({"class": "stylePropValue"}, "$selector.value|formatValue")),
+ TD({"class": "styleSourceLink", role: "presentation"},
+ TAG(FirebugReps.SourceLink.tag, {object: "$selector|getSourceLink"})
+ )
+ )
+ )
+ )
+ ),
+
+ getStatusClass: function(status)
+ {
+ return statusClasses[status];
+ },
+
+ hasNoStyles: function(props)
+ {
+ return props.length == 0;
+ },
+
+ hasSelectors: function(prop)
+ {
+ return prop.matchedRuleCount != 0;
+ },
+
+ getSourceLink: function(selector)
+ {
+ var href = selector.href.href || selector.href;
+ var line = selector.ruleLine;
+ var selectorDef = selector.selector;
+ // Dev tools API starting from FF 26.0 renamed the "_cssRule" property to "cssRule"
+ // (see issue 6609)
+ // TODO: This check can be removed as soon as FF 26.0 is the minimum supported version
+ var rule = selectorDef.cssRule ?
+ selectorDef.cssRule.domRule : selectorDef._cssRule._domRule;
+
+ var instance = Css.getInstanceForStyleSheet(rule.parentStyleSheet);
+ var sourceLink = line != -1 ? new SourceLink.SourceLink(href, line, "css",
+ rule, instance) : null;
+
+ return sourceLink;
+ },
+
+ formatValue: function(value)
+ {
+ value = formatColor(value);
+
+ var limit = Options.get("stringCropLength");
+ if (limit > 0)
+ value = Str.cropString(value, limit);
+
+ // Add a zero-width space after a comma to allow line breaking
+ return value.replace(/,/g, ",\u200B");
+ }
+ }),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ updateComputedView: function(element)
+ {
+ // The current selection can be null.
+ if (!element)
+ return;
+
+ // Update now if the document is loaded, otherwise wait for "load" event.
+ var loadHandler = new LoadHandler();
+ loadHandler.handle(this.context, Obj.bindFixed(this.doUpdateComputedView, this, element));
+ },
+
+ doUpdateComputedView: function(element)
+ {
+ function isUnwantedProp(propName)
+ {
+ return !Firebug.showMozillaSpecificStyles && Str.hasPrefix(propName, "-moz");
+ }
+
+ var win = element.ownerDocument.defaultView;
+ var computedStyle = win.getComputedStyle(element);
+
+ try
+ {
+ if (this.cssLogic)
+ this.cssLogic.highlight(element);
+ }
+ catch (e)
+ {
+ // An exception is thrown if the document is not fully loaded yet
+ // The cssLogic API needs to be used after "load" has been fired.
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("computedPanel.doUpdateComputedView; EXCEPTION " + e, e);
+ }
+
+ var props = [];
+ for (var i = 0; i < computedStyle.length; ++i)
+ {
+ var prop = this.cssLogic ? this.cssLogic.getPropertyInfo(computedStyle[i]) :
+ Firebug.CSSModule.getPropertyInfo(computedStyle, computedStyle[i]);
+
+ if (isUnwantedProp(prop.property) ||
+ (this.cssLogic && !Firebug.showUserAgentCSS && prop.matchedRuleCount == 0))
+ {
+ continue;
+ }
+
+ props.push(prop);
+ }
+
+ var parentNode = this.template.computedStylesTag.replace({}, this.panelNode);
+
+ if (props.length != 0)
+ {
+ if (Firebug.computedStylesDisplay == "alphabetical")
+ {
+ this.sortProperties(props);
+
+ for (var i = 0; i < props.length; ++i)
+ props[i].opened = this.styleOpened[props[i].property];
+
+ var result = this.template.stylesTag.replace({props: props}, parentNode);
+ }
+ else
+ {
+ var groups = [];
+ for (var groupName in styleGroups)
+ {
+ var title = Locale.$STR("StyleGroup-" + groupName);
+ var group = {name: groupName, title: title, props: []};
+
+ var groupProps = styleGroups[groupName];
+ for (var i = 0; i < groupProps.length; ++i)
+ {
+ var propName = groupProps[i];
+ if (isUnwantedProp(propName))
+ continue;
+
+ var prop = this.cssLogic ? this.cssLogic.getPropertyInfo(propName) :
+ Firebug.CSSModule.getPropertyInfo(computedStyle, propName);
+
+ if (!Firebug.showUserAgentCSS && prop.matchedRuleCount == 0)
+ continue;
+
+ prop.opened = this.styleOpened[propName];
+
+ group.props.push(prop);
+
+ for (var j = 0; j < props.length; ++j)
+ {
+ if (props[j].property == propName)
+ {
+ props.splice(j, 1);
+ break;
+ }
+ }
+ }
+
+ group.opened = this.groupOpened[groupName];
+
+ groups.push(group);
+ }
+
+ if (props.length > 0)
+ {
+ var group = groups[groups.length-1];
+ for (var i = 0; i < props.length; ++i)
+ {
+ var propName = props[i].property;
+ if (isUnwantedProp(propName))
+ continue;
+
+ var prop = this.cssLogic ? this.cssLogic.getPropertyInfo(propName) :
+ Firebug.CSSModule.getPropertyInfo(computedStyle, propName);
+
+ prop.opened = this.styleOpened[propName];
+
+ group.props.push(prop);
+ }
+
+ group.opened = this.groupOpened[group.name];
+ }
+
+ var result = this.template.groupedStylesTag.replace({groups: groups}, parentNode);
+ }
+ }
+ else
+ {
+ FirebugReps.Warning.tag.replace({object: "computed.No_User-Defined_Styles"},
+ this.panelNode);
+ }
+
+ if (this.scrollTop)
+ {
+ this.panelNode.scrollTop = this.scrollTop;
+ delete this.scrollTop;
+ }
+
+ Events.dispatch(this.fbListeners, "onCSSRulesAdded", [this, result]);
+ },
+
+ toggleGroup: function(node)
+ {
+ var groupNode = Dom.getAncestorByClass(node, "computedStylesGroup");
+ var group = Firebug.getRepObject(groupNode);
+
+ Css.toggleClass(groupNode, "opened");
+ var opened = Css.hasClass(groupNode, "opened");
+ this.groupOpened[group.name] = opened;
+
+ if (opened)
+ {
+ var offset = Dom.getClientOffset(node);
+ var titleAtTop = offset.y < this.panelNode.scrollTop;
+
+ Dom.scrollTo(groupNode, this.panelNode, null,
+ groupNode.offsetHeight > this.panelNode.clientHeight || titleAtTop ? "top" : "bottom");
+ }
+ },
+
+ toggleAllStyles: function(event, expand)
+ {
+ var computedStyles = this.panelNode.getElementsByClassName("computedStyle");
+
+ for (var i = 0; i < computedStyles.length; ++i)
+ {
+ if (!Css.hasClass(computedStyles[i], "hasSelectors"))
+ continue;
+
+ var isOpened = Css.hasClass(computedStyles[i], "opened");
+ if ((expand && !isOpened) || (!expand && isOpened))
+ this.toggleStyle(computedStyles[i], false);
+ }
+ },
+
+ toggleStyle: function(node, scroll)
+ {
+ var styleNode = Dom.getAncestorByClass(node, "computedStyle");
+ var style = Firebug.getRepObject(styleNode);
+
+ Css.toggleClass(styleNode, "opened");
+ var opened = Css.hasClass(styleNode, "opened");
+ this.styleOpened[style.property] = Css.hasClass(styleNode, "opened");
+
+ if (opened && scroll)
+ {
+ var selectorsNode = styleNode.nextSibling;
+ var offset = Dom.getClientOffset(styleNode);
+ var titleAtTop = offset.y < this.panelNode.scrollTop;
+ var totalHeight = styleNode.offsetHeight + selectorsNode.offsetHeight;
+ var alignAtTop = totalHeight > this.panelNode.clientHeight || titleAtTop;
+
+ Dom.scrollTo(alignAtTop ? styleNode : selectorsNode, this.panelNode, null,
+ alignAtTop ? "top" : "bottom", alignAtTop);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Events
+
+ onClick: function(event)
+ {
+ if (!Events.isLeftClick(event))
+ return;
+
+ var cssComputedHeader = Dom.getAncestorByClass(event.target, "cssComputedHeader");
+ if (cssComputedHeader)
+ {
+ this.toggleGroup(event.target);
+ return;
+ }
+
+ var computedStyle = Dom.getAncestorByClass(event.target, "computedStyle");
+ if (computedStyle && Css.hasClass(computedStyle, "hasSelectors"))
+ {
+ this.toggleStyle(event.target, true);
+ return;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Panel
+
+ name: "computed",
+ parentPanel: "html",
+ order: 1,
+
+ initialize: function()
+ {
+ if (typeof CssLogic != "undefined")
+ this.cssLogic = new CssLogic();
+
+ this.groupOpened = [];
+ for (var groupName in styleGroups)
+ this.groupOpened[groupName] = true;
+
+ this.styleOpened = [];
+
+ // Listen for CSS changes so the Computed panel is properly updated when needed.
+ Firebug.CSSModule.addListener(this);
+
+ this.onClick = Obj.bind(this.onClick, this);
+
+ Firebug.Panel.initialize.apply(this, arguments);
+ },
+
+ destroy: function(state)
+ {
+ state.scrollTop = this.panelNode.scrollTop ? this.panelNode.scrollTop : this.lastScrollTop;
+ state.groupOpened = this.groupOpened;
+ state.styleOpened = this.styleOpened;
+
+ Persist.persistObjects(this, state);
+
+ Firebug.CSSModule.removeListener(this);
+
+ Firebug.Panel.destroyNode.apply(this, arguments);
+ },
+
+ initializeNode: function(oldPanelNode)
+ {
+ Events.addEventListener(this.panelNode, "click", this.onClick, false);
+
+ Firebug.Panel.initializeNode.apply(this, arguments);
+ },
+
+ destroyNode: function()
+ {
+ Events.removeEventListener(this.panelNode, "click", this.onClick, false);
+
+ Firebug.Panel.destroyNode.apply(this, arguments);
+ },
+
+ show: function(state)
+ {
+ // Wait for loadedContext to restore the panel
+ if (this.context.loaded)
+ {
+ Persist.restoreObjects(this, state);
+
+ if (state)
+ {
+ if (state.scrollTop)
+ this.scrollTop = state.scrollTop;
+
+ if (state.groupOpened)
+ this.groupOpened = state.groupOpened;
+
+ if (state.styleOpened)
+ this.styleOpened = state.styleOpened;
+ }
+ }
+
+ if (this.selection)
+ this.refresh();
+ },
+
+ hide: function()
+ {
+ this.lastScrollTop = this.panelNode.scrollTop;
+ },
+
+ updateView: function(element)
+ {
+ this.updateComputedView(element);
+ },
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof window.Element ? 1 : 0;
+ },
+
+ refresh: function()
+ {
+ this.updateSelection(this.selection);
+ },
+
+ updateSelection: function(element)
+ {
+ this.updateComputedView(element);
+ },
+
+ updateOption: function(name, value)
+ {
+ var options = new Set();
+ options.add("showUserAgentCSS");
+ options.add("computedStylesDisplay");
+ options.add("colorDisplay");
+ options.add("showMozillaSpecificStyles");
+
+ if (options.has(name))
+ this.refresh();
+ },
+
+ getOptionsMenuItems: function()
+ {
+ var items = [];
+
+ if (this.cssLogic)
+ {
+ items.push(
+ Menu.optionMenu("Show_User_Agent_CSS", "showUserAgentCSS",
+ "style.option.tip.Show_User_Agent_CSS")
+ );
+ }
+
+ items.push(
+ {
+ label: "Sort_alphabetically",
+ type: "checkbox",
+ checked: Firebug.computedStylesDisplay == "alphabetical",
+ tooltiptext: "computed.option.tip.Sort_Alphabetically",
+ command: Obj.bind(this.toggleDisplay, this)
+ },
+ Menu.optionMenu("Show_Mozilla_specific_styles",
+ "showMozillaSpecificStyles",
+ "computed.option.tip.Show_Mozilla_Specific_Styles")
+ );
+
+ items = Arr.extendArray(items, CSSModule.getColorDisplayOptionMenuItems());
+
+ return items;
+ },
+
+ getContextMenuItems: function(style, target)
+ {
+ var items = [];
+ var computedStyles = this.panelNode.getElementsByClassName("computedStyle");
+ var expandAll = false;
+ var collapseAll = false;
+ for (var i = 0; i < computedStyles.length; ++i)
+ {
+ if (!Css.hasClass(computedStyles[i], "hasSelectors"))
+ continue;
+
+ if (!expandAll && !Css.hasClass(computedStyles[i], "opened"))
+ expandAll = true;
+ if (!collapseAll && Css.hasClass(computedStyles[i], "opened"))
+ collapseAll = true;
+ }
+
+ if (expandAll)
+ {
+ items.push(
+ {
+ label: "computed.option.label.Expand_All_Styles",
+ command: Obj.bind(this.toggleAllStyles, this, true),
+ tooltiptext: "computed.option.tip.Expand_All_Styles"
+ }
+ );
+ }
+
+ if (collapseAll)
+ {
+ items.push(
+ {
+ label: "computed.option.label.Collapse_All_Styles",
+ command: Obj.bind(this.toggleAllStyles, this, false),
+ tooltiptext: "computed.option.tip.Collapse_All_Styles"
+ }
+ );
+ }
+
+ return items;
+ },
+
+ onMouseDown: function(event)
+ {
+ if (!Events.isLeftClick(event))
+ return;
+
+ var cssComputedHeader = Dom.getAncestorByClass(event.target, "cssComputedHeader");
+ if (cssComputedHeader)
+ this.toggleNode(event);
+ },
+
+ toggleNode: function(event)
+ {
+ var group = Dom.getAncestorByClass(event.target, "computedStylesGroup");
+ var groupName = group.getElementsByClassName("cssComputedLabel")[0].textContent;
+
+ Css.toggleClass(group, "opened");
+ this.groupOpened[groupName] = Css.hasClass(group, "opened");
+ },
+
+ toggleDisplay: function()
+ {
+ var display = Firebug.computedStylesDisplay == "alphabetical" ? "grouped" : "alphabetical";
+ Options.set("computedStylesDisplay", display);
+ },
+
+ sortProperties: function(props)
+ {
+ props.sort(function(a, b)
+ {
+ return a.property > b.property ? 1 : -1;
+ });
+ },
+
+ getStylesheetURL: function(rule, getBaseUri)
+ {
+ // If parentStyleSheet.href is null, then per the CSS standard this is an inline style.
+ if (rule && rule.parentStyleSheet && rule.parentStyleSheet.href)
+ return rule.parentStyleSheet.href;
+ else if (getBaseUri)
+ return this.selection.ownerDocument.baseURI;
+ else
+ return this.selection.ownerDocument.location.href;
+ },
+
+ showInfoTip: function(infoTip, target, x, y, rangeParent, rangeOffset)
+ {
+ var propValue = Dom.getAncestorByClass(target, "stylePropValue");
+ if (propValue)
+ {
+ var propInfo = Firebug.getRepObject(target);
+
+ var prop = propInfo.property;
+ var value = formatColor(propInfo.value);
+ var cssValue;
+
+ if (prop == "font" || prop == "font-family")
+ {
+ if (value.charAt(rangeOffset) == ",")
+ return;
+
+ cssValue = Firebug.CSSModule.parseCSSFontFamilyValue(value, rangeOffset, prop);
+ }
+ else
+ {
+ cssValue = Firebug.CSSModule.parseCSSValue(value, rangeOffset);
+ }
+
+ if (!cssValue)
+ return false;
+
+ if (cssValue.value == this.infoTipValue)
+ return true;
+
+ this.infoTipValue = cssValue.value;
+
+ switch (cssValue.type)
+ {
+ case "rgb":
+ case "hsl":
+ case "gradient":
+ case "colorKeyword":
+ this.infoTipType = "color";
+ this.infoTipObject = cssValue.value;
+ return CSSInfoTip.populateColorInfoTip(infoTip, cssValue.value);
+
+ case "url":
+ if (Css.isImageRule(Xml.getElementSimpleType(propInfo), prop))
+ {
+ var baseURL = typeof propInfo.href == "object" ? propInfo.href.href : propInfo.href;
+ if (!baseURL)
+ baseURL = propInfo.matchedSelectors[0].href;
+ var relURL = Firebug.CSSModule.parseURLValue(cssValue.value);
+ var absURL = Url.isDataURL(relURL) ? relURL : Url.absoluteURL(relURL, baseURL);
+ var repeat = Firebug.CSSModule.parseRepeatValue(value);
+
+ this.infoTipType = "image";
+ this.infoTipObject = absURL;
+
+ return CSSInfoTip.populateImageInfoTip(infoTip, absURL, repeat);
+ }
+ break;
+
+ case "fontFamily":
+ return CSSInfoTip.populateFontFamilyInfoTip(infoTip, cssValue.value);
+ }
+
+ delete this.infoTipType;
+ delete this.infoTipValue;
+ delete this.infoTipObject;
+
+ return false;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Change Listener
+
+ onCSSInsertRule: function(styleSheet, cssText, ruleIndex)
+ {
+ // Force update, this causes updateSelection to be called.
+ // See {@link Firebug.Panel.select}
+ this.selection = null;
+ },
+
+ onCSSDeleteRule: function(styleSheet, ruleIndex)
+ {
+ this.selection = null;
+ },
+
+ onCSSSetProperty: function(style, propName, propValue, propPriority, prevValue,
+ prevPriority, rule, baseText)
+ {
+ this.selection = null;
+ },
+
+ onCSSRemoveProperty: function(style, propName, prevValue, prevPriority, rule, baseText)
+ {
+ this.selection = null;
+ }
+});
+
+// ********************************************************************************************* //
+// Helpers
+
+function formatColor(color)
+{
+ switch (Options.get("colorDisplay"))
+ {
+ case "hex":
+ return Css.rgbToHex(color);
+
+ case "hsl":
+ return Css.rgbToHSL(color);
+
+ case "rgb":
+ return Css.colorNameToRGB(color);
+
+ default:
+ return color;
+ }
+}
+
+const styleGroups =
+{
+ text: [
+ "font-family",
+ "font-size",
+ "font-weight",
+ "font-style",
+ "font-size-adjust",
+ "color",
+ "text-transform",
+ "text-decoration",
+ "letter-spacing",
+ "word-spacing",
+ "line-height",
+ "text-align",
+ "vertical-align",
+ "direction",
+ "column-count",
+ "column-gap",
+ "column-width",
+ "-moz-tab-size", // FF4.0
+ "-moz-font-feature-settings", // FF4.0
+ "-moz-font-language-override", // FF4.0
+ "-moz-text-blink", // FF6.0
+ "-moz-text-decoration-color", // FF6.0
+ "-moz-text-decoration-line", // FF6.0
+ "-moz-text-decoration-style", // FF6.0
+ "hyphens", // FF 6.0
+ "text-overflow" // FF7.0
+ ],
+
+ background: [
+ "background-color",
+ "background-image",
+ "background-repeat",
+ "background-position",
+ "background-attachment",
+ "opacity",
+ "background-clip",
+ "-moz-background-inline-policy",
+ "background-origin",
+ "background-size",
+ "-moz-image-region"
+ ],
+
+ box: [
+ "width",
+ "height",
+ "top",
+ "right",
+ "bottom",
+ "left",
+ "margin-top",
+ "margin-right",
+ "margin-bottom",
+ "margin-left",
+ "padding-top",
+ "padding-right",
+ "padding-bottom",
+ "padding-left",
+ "-moz-padding-start",
+ "-moz-padding-end",
+ "border-top-width",
+ "border-right-width",
+ "border-bottom-width",
+ "border-left-width",
+ "border-top-color",
+ "-moz-border-top-colors",
+ "border-right-color",
+ "-moz-border-right-colors",
+ "border-bottom-color",
+ "-moz-border-bottom-colors",
+ "border-left-color",
+ "-moz-border-left-colors",
+ "border-top-style",
+ "border-right-style",
+ "border-bottom-style",
+ "border-left-style",
+ "-moz-border-end",
+ "-moz-border-end-color",
+ "-moz-border-end-style",
+ "-moz-border-end-width",
+ "border-image",
+ "-moz-border-start",
+ "-moz-border-start-color",
+ "-moz-border-start-style",
+ "-moz-border-start-width",
+ "border-top-left-radius",
+ "border-top-right-radius",
+ "border-bottom-left-radius",
+ "border-bottom-right-radius",
+ "-moz-outline-radius-bottomleft",
+ "-moz-outline-radius-bottomright",
+ "-moz-outline-radius-topleft",
+ "-moz-outline-radius-topright",
+ "box-shadow",
+ "outline-color",
+ "outline-offset",
+ "outline-top-width",
+ "outline-right-width",
+ "outline-bottom-width",
+ "outline-left-width",
+ "outline-top-color",
+ "outline-right-color",
+ "outline-bottom-color",
+ "outline-left-color",
+ "outline-top-style",
+ "outline-right-style",
+ "outline-bottom-style",
+ "outline-left-style",
+ "-moz-box-align",
+ "-moz-box-direction",
+ "-moz-box-flex",
+ "-moz-box-ordinal-group",
+ "-moz-box-orient",
+ "-moz-box-pack",
+ "-moz-box-sizing",
+ "-moz-margin-start",
+ "-moz-margin-end"
+ ],
+
+ layout: [
+ "position",
+ "display",
+ "visibility",
+ "z-index",
+ "overflow-x", // http://www.w3.org/TR/2002/WD-css3-box-20021024/#overflow
+ "overflow-y",
+ "overflow-clip",
+ "transform",
+ "transform-origin",
+ "white-space",
+ "clip",
+ "float",
+ "clear",
+ "-moz-appearance",
+ "-moz-stack-sizing",
+ "-moz-column-count",
+ "-moz-column-gap",
+ "-moz-column-width",
+ "-moz-column-rule",
+ "-moz-column-rule-width",
+ "-moz-column-rule-style",
+ "-moz-column-rule-color",
+ "-moz-float-edge",
+ "orient"
+ ],
+
+ other: []
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(CSSComputedPanel);
+
+return CSSComputedPanel;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/css/cssModule.js b/content/firebug/css/cssModule.js
index 68fcee4..e4c12e1 100644
--- a/content/firebug/css/cssModule.js
+++ b/content/firebug/css/cssModule.js
@@ -1,455 +1,455 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/xpcom",
- "firebug/lib/events",
- "firebug/lib/url",
- "firebug/lib/css",
- "firebug/chrome/window",
- "firebug/lib/xml",
- "firebug/lib/options",
- "firebug/lib/array",
- "firebug/editor/editorSelector"
-],
-function(Obj, Firebug, Xpcom, Events, Url, Css, Win, Xml, Options, Arr, EditorSelector) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const reSplitCSS = /(url\("?[^"\)]+"?\)?)|(rgba?\([^)]*\)?)|(hsla?\([^)]*\)?)|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,4})?)|"([^"]*)"?|'([^']*)'?|([^,\s\/!\(\)]+)|(!(.*)?)/;
-const reURL = /url\("?([^"\)]+)?"?\)/;
-const reRepeat = /no-repeat|repeat-x|repeat-y|repeat/;
-
-// ********************************************************************************************* //
-// CSS Module
-
-Firebug.CSSModule = Obj.extend(Firebug.Module, Firebug.EditorSelector,
-{
- dispatchName: "cssModule",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Module
-
- initialize: function()
- {
- this.editors = {};
- this.registerEditor("Live",
- {
- startEditing: function(stylesheet, context, panel)
- {
- panel.startLiveEditing(stylesheet, context);
- },
- stopEditing: function()
- {
- Firebug.Editor.stopEditing();
- }
- });
-
- this.registerEditor("Source",
- {
- startEditing: function(stylesheet, context, panel)
- {
- panel.startSourceEditing(stylesheet, context);
- },
- stopEditing: function()
- {
- Firebug.Editor.stopEditing();
- }
- });
- },
-
- initContext: function(context)
- {
- context.dirtyListener = new Firebug.CSSDirtyListener(context);
- this.addListener(context.dirtyListener);
- },
-
- destroyContext: function(context)
- {
- this.removeListener(context.dirtyListener);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- freeEdit: function(styleSheet, value)
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("CSSModule.freeEdit", arguments);
-
- if (!styleSheet.editStyleSheet)
- {
- var ownerNode = getStyleSheetOwnerNode(styleSheet);
- styleSheet.disabled = true;
-
- var url = Xpcom.CCSV("@mozilla.org/network/standard-url;1", Ci.nsIURL);
- url.spec = styleSheet.href;
-
- var editStyleSheet = ownerNode.ownerDocument.createElementNS(
- "http://www.w3.org/1999/xhtml",
- "style");
-
- Firebug.setIgnored(editStyleSheet);
-
- editStyleSheet.setAttribute("type", "text/css");
- editStyleSheet.setAttributeNS(
- "http://www.w3.org/XML/1998/namespace",
- "base",
- url.directory);
-
- if (ownerNode.hasAttribute("media"))
- editStyleSheet.setAttribute("media", ownerNode.getAttribute("media"));
-
- // Insert the edited stylesheet directly after the old one to ensure the styles
- // cascade properly.
- ownerNode.parentNode.insertBefore(editStyleSheet, ownerNode.nextSibling);
-
- styleSheet.editStyleSheet = editStyleSheet;
- }
-
- styleSheet.editStyleSheet.textContent = value;
-
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("css.saveEdit styleSheet.href:" + styleSheet.href +
- " got innerHTML:" + value);
-
- Events.dispatch(this.fbListeners, "onCSSFreeEdit", [styleSheet, value]);
- },
-
- insertRule: function(styleSheet, cssText, ruleIndex)
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("Insert: " + ruleIndex + " " + cssText);
-
- var insertIndex = styleSheet.insertRule(cssText, ruleIndex);
-
- Events.dispatch(this.fbListeners, "onCSSInsertRule", [styleSheet, cssText, ruleIndex]);
-
- return insertIndex;
- },
-
- deleteRule: function(src, ruleIndex)
- {
- var inlineStyle = (src instanceof window.Element);
- if (FBTrace.DBG_CSS)
- {
- if (inlineStyle)
- {
- FBTrace.sysout("deleteRule: element.style", src);
- }
- else
- {
- FBTrace.sysout("deleteRule: " + ruleIndex + " " + src.cssRules.length,
- src.cssRules);
- }
- }
-
- var rule = (inlineStyle ? src : src.cssRules[ruleIndex]);
- var afterParams = [src, rule.style.cssText];
- afterParams.push(inlineStyle ? "" : rule.selectorText);
-
- Events.dispatch(this.fbListeners, "onCSSDeleteRule", [src, ruleIndex]);
-
- if (src instanceof window.Element)
- src.removeAttribute("style");
- else
- src.deleteRule(ruleIndex);
-
- Events.dispatch(this.fbListeners, "onAfterCSSDeleteRule", afterParams);
- },
-
- setProperty: function(rule, propName, propValue, propPriority)
- {
- var style = rule.style || rule;
-
- // Record the original CSS text for the inline case so we can reconstruct at a later
- // point for diffing purposes
- var baseText = style.cssText;
-
- var prevValue = style.getPropertyValue(propName);
- var prevPriority = style.getPropertyPriority(propName);
-
- // XXXjoe Gecko bug workaround: Just changing priority doesn't have any effect
- // unless we remove the property first
- style.removeProperty(propName);
-
- style.setProperty(propName, propValue, propPriority);
-
- if (propName)
- {
- Events.dispatch(this.fbListeners, "onCSSSetProperty", [style, propName, propValue,
- propPriority, prevValue, prevPriority, rule, baseText]);
- }
- },
-
- removeProperty: function(rule, propName, parent)
- {
- var style = rule.style || rule;
-
- // Record the original CSS text for the inline case so we can reconstruct at a later
- // point for diffing purposes
- var baseText = style.cssText;
-
- var prevValue = style.getPropertyValue(propName);
- var prevPriority = style.getPropertyPriority(propName);
-
- style.removeProperty(propName);
-
- if (propName)
- Events.dispatch(this.fbListeners, "onCSSRemoveProperty", [style, propName, prevValue,
- prevPriority, rule, baseText]);
- },
-
- /**
- * Method for atomic property removal, such as through the context menu.
- */
- deleteProperty: function(rule, propName, context)
- {
- Events.dispatch(this.fbListeners, "onBeginFirebugChange", [rule, context]);
- Firebug.CSSModule.removeProperty(rule, propName);
- Events.dispatch(this.fbListeners, "onEndFirebugChange", [rule, context]);
- },
-
- disableProperty: function(disable, rule, propName, parsedValue, map, context)
- {
- Events.dispatch(this.fbListeners, "onBeginFirebugChange", [rule, context]);
-
- if (disable)
- {
- Firebug.CSSModule.removeProperty(rule, propName);
-
- map.push({"name": propName, "value": parsedValue.value,
- "important": parsedValue.priority});
- }
- else
- {
- Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority);
-
- var index = findPropByName(map, propName);
- map.splice(index, 1);
- }
-
- Events.dispatch(this.fbListeners, "onEndFirebugChange", [rule, context]);
- },
-
- /**
- * Get a document's temporary stylesheet for storage of user-provided rules.
- * If it doesn't exist yet, create it.
- */
- getDefaultStyleSheet: function(doc)
- {
- // Cache the temporary sheet on an expando of the document.
- var sheet = doc.fbDefaultSheet;
- if (!sheet)
- {
- sheet = Css.appendStylesheet(doc, "chrome://firebug/default-stylesheet.css").sheet;
- sheet.defaultStylesheet = true;
- doc.fbDefaultSheet = sheet;
- }
- return sheet;
- },
-
- parseCSSValue: function(value, offset)
- {
- var start = 0;
- var m;
- while (true)
- {
- m = reSplitCSS.exec(value);
- if (m && m.index+m[0].length < offset)
- {
- value = value.substr(m.index+m[0].length);
- start += m.index+m[0].length;
- offset -= m.index+m[0].length;
- }
- else
- break;
- }
-
- if (!m)
- return;
-
- var type;
- if (m[1])
- type = "url";
- else if (m[2] || m[4])
- type = "rgb";
- else if (m[3])
- type = "hsl";
- else if (m[5])
- type = "int";
-
- var cssValue = {value: m[0], start: start+m.index, end: start+m.index+m[0].length, type: type};
-
- if (!type)
- {
- if (m[10] && m[10].indexOf("gradient") != -1)
- {
- var arg = value.substr(m[0].length).match(/\((?:(?:[^\(\)]*)|(?:\(.*?\)))+\)/);
- if (!arg)
- return;
-
- cssValue.value += arg[0];
- cssValue.type = "gradient";
- }
- else if (Css.isColorKeyword(cssValue.value))
- {
- cssValue.type = "colorKeyword";
- }
- }
-
- return cssValue;
- },
-
- parseCSSFontFamilyValue: function(value, offset, propName)
- {
- var skipped = 0;
- if (propName === "font")
- {
- var rePreFont = new RegExp(
- "^.*" + // anything, then
- "(" +
- "\\d+(\\.\\d+)?([a-z]*|%)|" + // a number (with possible unit)
- "(x{1,2}-)?(small|large)|medium|larger|smaller" + // or an named size description
- ") "
- );
- var m = rePreFont.exec(value);
- if (!m || offset < m[0].length)
- return this.parseCSSValue(value, offset);
- skipped = m[0].length;
- value = value.substr(skipped);
- offset -= skipped;
- }
-
- var matches = /^(.*?)(\s*!.*)?$/.exec(value);
- var fonts = matches[1].split(",");
-
- var totalLength = 0;
- for (var i = 0; i < fonts.length; ++i)
- {
- totalLength += fonts[i].length;
- if (offset <= totalLength)
- {
- // Give back the value and location of this font, whitespace-trimmed.
- var font = fonts[i].replace(/^\s+/, "");
- var end = totalLength;
- var start = end - font.length;
- return {
- value: font,
- start: start + skipped,
- end: end + skipped,
- type: "fontFamily"
- };
- }
-
- // include ","
- ++totalLength;
- }
-
- // Parse !important.
- var ret = this.parseCSSValue(value, offset);
- if (ret)
- {
- ret.start += skipped;
- ret.end += skipped;
- }
- return ret;
- },
-
- parseURLValue: function(value)
- {
- var m = reURL.exec(value);
- return m ? m[1] : "";
- },
-
- parseRepeatValue: function(value)
- {
- var m = reRepeat.exec(value);
- return m ? m[0] : "";
- },
-
- getPropertyInfo: function(computedStyle, propName)
- {
- var propInfo = {
- property: propName,
- value: computedStyle.getPropertyValue(propName),
- matchedSelectors: [],
- matchedRuleCount: 0
- };
-
- return propInfo;
- },
-
- getColorDisplayOptionMenuItems: function()
- {
- return [
- "-",
- {
- label: "computed.option.label.Colors_As_Hex",
- tooltiptext: "computed.option.tip.Colors_As_Hex",
- type: "radio",
- name: "colorDisplay",
- id: "colorDisplayHex",
- command: function() {
- return Options.set("colorDisplay", "hex");
- },
- checked: Options.get("colorDisplay") == "hex"
- },
- {
- label: "computed.option.label.Colors_As_RGB",
- tooltiptext: "computed.option.tip.Colors_As_RGB",
- type: "radio",
- name: "colorDisplay",
- id: "colorDisplayRGB",
- command: function() {
- return Options.set("colorDisplay", "rgb");
- },
- checked: Options.get("colorDisplay") == "rgb"
- },
- {
- label: "computed.option.label.Colors_As_HSL",
- tooltiptext: "computed.option.tip.Colors_As_HSL",
- type: "radio",
- name: "colorDisplay",
- id: "colorDisplayHSL",
- command: function() {
- return Options.set("colorDisplay", "hsl");
- },
- checked: Options.get("colorDisplay") == "hsl"
- }
- ];
- },
-});
-
-// ********************************************************************************************* //
-// Helpers
-
-function getStyleSheetOwnerNode(sheet)
-{
- for (; sheet && !sheet.ownerNode; sheet = sheet.parentStyleSheet);
-
- return sheet.ownerNode;
-}
-
-function findPropByName(props, name)
-{
- for (var i = 0; i < props.length; ++i)
- {
- if (props[i].name == name)
- return i;
- }
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.CSSModule);
-
-return Firebug.CSSModule;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/xpcom",
+ "firebug/lib/events",
+ "firebug/lib/url",
+ "firebug/lib/css",
+ "firebug/chrome/window",
+ "firebug/lib/xml",
+ "firebug/lib/options",
+ "firebug/lib/array",
+ "firebug/editor/editorSelector"
+],
+function(Obj, Firebug, Xpcom, Events, Url, Css, Win, Xml, Options, Arr, EditorSelector) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+const reSplitCSS = /(url\("?[^"\)]+"?\)?)|(rgba?\([^)]*\)?)|(hsla?\([^)]*\)?)|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,4})?)|"([^"]*)"?|'([^']*)'?|([^,\s\/!\(\)]+)|(!(.*)?)/;
+const reURL = /url\("?([^"\)]+)?"?\)/;
+const reRepeat = /no-repeat|repeat-x|repeat-y|repeat/;
+
+// ********************************************************************************************* //
+// CSS Module
+
+Firebug.CSSModule = Obj.extend(Firebug.Module, Firebug.EditorSelector,
+{
+ dispatchName: "cssModule",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Module
+
+ initialize: function()
+ {
+ this.editors = {};
+ this.registerEditor("Live",
+ {
+ startEditing: function(stylesheet, context, panel)
+ {
+ panel.startLiveEditing(stylesheet, context);
+ },
+ stopEditing: function()
+ {
+ Firebug.Editor.stopEditing();
+ }
+ });
+
+ this.registerEditor("Source",
+ {
+ startEditing: function(stylesheet, context, panel)
+ {
+ panel.startSourceEditing(stylesheet, context);
+ },
+ stopEditing: function()
+ {
+ Firebug.Editor.stopEditing();
+ }
+ });
+ },
+
+ initContext: function(context)
+ {
+ context.dirtyListener = new Firebug.CSSDirtyListener(context);
+ this.addListener(context.dirtyListener);
+ },
+
+ destroyContext: function(context)
+ {
+ this.removeListener(context.dirtyListener);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ freeEdit: function(styleSheet, value)
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("CSSModule.freeEdit", arguments);
+
+ if (!styleSheet.editStyleSheet)
+ {
+ var ownerNode = getStyleSheetOwnerNode(styleSheet);
+ styleSheet.disabled = true;
+
+ var url = Xpcom.CCSV("@mozilla.org/network/standard-url;1", Ci.nsIURL);
+ url.spec = styleSheet.href;
+
+ var editStyleSheet = ownerNode.ownerDocument.createElementNS(
+ "http://www.w3.org/1999/xhtml",
+ "style");
+
+ Firebug.setIgnored(editStyleSheet);
+
+ editStyleSheet.setAttribute("type", "text/css");
+ editStyleSheet.setAttributeNS(
+ "http://www.w3.org/XML/1998/namespace",
+ "base",
+ url.directory);
+
+ if (ownerNode.hasAttribute("media"))
+ editStyleSheet.setAttribute("media", ownerNode.getAttribute("media"));
+
+ // Insert the edited stylesheet directly after the old one to ensure the styles
+ // cascade properly.
+ ownerNode.parentNode.insertBefore(editStyleSheet, ownerNode.nextSibling);
+
+ styleSheet.editStyleSheet = editStyleSheet;
+ }
+
+ styleSheet.editStyleSheet.textContent = value;
+
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("css.saveEdit styleSheet.href:" + styleSheet.href +
+ " got innerHTML:" + value);
+
+ Events.dispatch(this.fbListeners, "onCSSFreeEdit", [styleSheet, value]);
+ },
+
+ insertRule: function(styleSheet, cssText, ruleIndex)
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("Insert: " + ruleIndex + " " + cssText);
+
+ var insertIndex = styleSheet.insertRule(cssText, ruleIndex);
+
+ Events.dispatch(this.fbListeners, "onCSSInsertRule", [styleSheet, cssText, ruleIndex]);
+
+ return insertIndex;
+ },
+
+ deleteRule: function(src, ruleIndex)
+ {
+ var inlineStyle = (src instanceof window.Element);
+ if (FBTrace.DBG_CSS)
+ {
+ if (inlineStyle)
+ {
+ FBTrace.sysout("deleteRule: element.style", src);
+ }
+ else
+ {
+ FBTrace.sysout("deleteRule: " + ruleIndex + " " + src.cssRules.length,
+ src.cssRules);
+ }
+ }
+
+ var rule = (inlineStyle ? src : src.cssRules[ruleIndex]);
+ var afterParams = [src, rule.style.cssText];
+ afterParams.push(inlineStyle ? "" : rule.selectorText);
+
+ Events.dispatch(this.fbListeners, "onCSSDeleteRule", [src, ruleIndex]);
+
+ if (src instanceof window.Element)
+ src.removeAttribute("style");
+ else
+ src.deleteRule(ruleIndex);
+
+ Events.dispatch(this.fbListeners, "onAfterCSSDeleteRule", afterParams);
+ },
+
+ setProperty: function(rule, propName, propValue, propPriority)
+ {
+ var style = rule.style || rule;
+
+ // Record the original CSS text for the inline case so we can reconstruct at a later
+ // point for diffing purposes
+ var baseText = style.cssText;
+
+ var prevValue = style.getPropertyValue(propName);
+ var prevPriority = style.getPropertyPriority(propName);
+
+ // XXXjoe Gecko bug workaround: Just changing priority doesn't have any effect
+ // unless we remove the property first
+ style.removeProperty(propName);
+
+ style.setProperty(propName, propValue, propPriority);
+
+ if (propName)
+ {
+ Events.dispatch(this.fbListeners, "onCSSSetProperty", [style, propName, propValue,
+ propPriority, prevValue, prevPriority, rule, baseText]);
+ }
+ },
+
+ removeProperty: function(rule, propName, parent)
+ {
+ var style = rule.style || rule;
+
+ // Record the original CSS text for the inline case so we can reconstruct at a later
+ // point for diffing purposes
+ var baseText = style.cssText;
+
+ var prevValue = style.getPropertyValue(propName);
+ var prevPriority = style.getPropertyPriority(propName);
+
+ style.removeProperty(propName);
+
+ if (propName)
+ Events.dispatch(this.fbListeners, "onCSSRemoveProperty", [style, propName, prevValue,
+ prevPriority, rule, baseText]);
+ },
+
+ /**
+ * Method for atomic property removal, such as through the context menu.
+ */
+ deleteProperty: function(rule, propName, context)
+ {
+ Events.dispatch(this.fbListeners, "onBeginFirebugChange", [rule, context]);
+ Firebug.CSSModule.removeProperty(rule, propName);
+ Events.dispatch(this.fbListeners, "onEndFirebugChange", [rule, context]);
+ },
+
+ disableProperty: function(disable, rule, propName, parsedValue, map, context)
+ {
+ Events.dispatch(this.fbListeners, "onBeginFirebugChange", [rule, context]);
+
+ if (disable)
+ {
+ Firebug.CSSModule.removeProperty(rule, propName);
+
+ map.push({"name": propName, "value": parsedValue.value,
+ "important": parsedValue.priority});
+ }
+ else
+ {
+ Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority);
+
+ var index = findPropByName(map, propName);
+ map.splice(index, 1);
+ }
+
+ Events.dispatch(this.fbListeners, "onEndFirebugChange", [rule, context]);
+ },
+
+ /**
+ * Get a document's temporary stylesheet for storage of user-provided rules.
+ * If it doesn't exist yet, create it.
+ */
+ getDefaultStyleSheet: function(doc)
+ {
+ // Cache the temporary sheet on an expando of the document.
+ var sheet = doc.fbDefaultSheet;
+ if (!sheet)
+ {
+ sheet = Css.appendStylesheet(doc, "chrome://firebug/default-stylesheet.css").sheet;
+ sheet.defaultStylesheet = true;
+ doc.fbDefaultSheet = sheet;
+ }
+ return sheet;
+ },
+
+ parseCSSValue: function(value, offset)
+ {
+ var start = 0;
+ var m;
+ while (true)
+ {
+ m = reSplitCSS.exec(value);
+ if (m && m.index+m[0].length < offset)
+ {
+ value = value.substr(m.index+m[0].length);
+ start += m.index+m[0].length;
+ offset -= m.index+m[0].length;
+ }
+ else
+ break;
+ }
+
+ if (!m)
+ return;
+
+ var type;
+ if (m[1])
+ type = "url";
+ else if (m[2] || m[4])
+ type = "rgb";
+ else if (m[3])
+ type = "hsl";
+ else if (m[5])
+ type = "int";
+
+ var cssValue = {value: m[0], start: start+m.index, end: start+m.index+m[0].length, type: type};
+
+ if (!type)
+ {
+ if (m[10] && m[10].indexOf("gradient") != -1)
+ {
+ var arg = value.substr(m[0].length).match(/\((?:(?:[^\(\)]*)|(?:\(.*?\)))+\)/);
+ if (!arg)
+ return;
+
+ cssValue.value += arg[0];
+ cssValue.type = "gradient";
+ }
+ else if (Css.isColorKeyword(cssValue.value))
+ {
+ cssValue.type = "colorKeyword";
+ }
+ }
+
+ return cssValue;
+ },
+
+ parseCSSFontFamilyValue: function(value, offset, propName)
+ {
+ var skipped = 0;
+ if (propName === "font")
+ {
+ var rePreFont = new RegExp(
+ "^.*" + // anything, then
+ "(" +
+ "\\d+(\\.\\d+)?([a-z]*|%)|" + // a number (with possible unit)
+ "(x{1,2}-)?(small|large)|medium|larger|smaller" + // or an named size description
+ ") "
+ );
+ var m = rePreFont.exec(value);
+ if (!m || offset < m[0].length)
+ return this.parseCSSValue(value, offset);
+ skipped = m[0].length;
+ value = value.substr(skipped);
+ offset -= skipped;
+ }
+
+ var matches = /^(.*?)(\s*!.*)?$/.exec(value);
+ var fonts = matches[1].split(",");
+
+ var totalLength = 0;
+ for (var i = 0; i < fonts.length; ++i)
+ {
+ totalLength += fonts[i].length;
+ if (offset <= totalLength)
+ {
+ // Give back the value and location of this font, whitespace-trimmed.
+ var font = fonts[i].replace(/^\s+/, "");
+ var end = totalLength;
+ var start = end - font.length;
+ return {
+ value: font,
+ start: start + skipped,
+ end: end + skipped,
+ type: "fontFamily"
+ };
+ }
+
+ // include ","
+ ++totalLength;
+ }
+
+ // Parse !important.
+ var ret = this.parseCSSValue(value, offset);
+ if (ret)
+ {
+ ret.start += skipped;
+ ret.end += skipped;
+ }
+ return ret;
+ },
+
+ parseURLValue: function(value)
+ {
+ var m = reURL.exec(value);
+ return m ? m[1] : "";
+ },
+
+ parseRepeatValue: function(value)
+ {
+ var m = reRepeat.exec(value);
+ return m ? m[0] : "";
+ },
+
+ getPropertyInfo: function(computedStyle, propName)
+ {
+ var propInfo = {
+ property: propName,
+ value: computedStyle.getPropertyValue(propName),
+ matchedSelectors: [],
+ matchedRuleCount: 0
+ };
+
+ return propInfo;
+ },
+
+ getColorDisplayOptionMenuItems: function()
+ {
+ return [
+ "-",
+ {
+ label: "computed.option.label.Colors_As_Hex",
+ tooltiptext: "computed.option.tip.Colors_As_Hex",
+ type: "radio",
+ name: "colorDisplay",
+ id: "colorDisplayHex",
+ command: function() {
+ return Options.set("colorDisplay", "hex");
+ },
+ checked: Options.get("colorDisplay") == "hex"
+ },
+ {
+ label: "computed.option.label.Colors_As_RGB",
+ tooltiptext: "computed.option.tip.Colors_As_RGB",
+ type: "radio",
+ name: "colorDisplay",
+ id: "colorDisplayRGB",
+ command: function() {
+ return Options.set("colorDisplay", "rgb");
+ },
+ checked: Options.get("colorDisplay") == "rgb"
+ },
+ {
+ label: "computed.option.label.Colors_As_HSL",
+ tooltiptext: "computed.option.tip.Colors_As_HSL",
+ type: "radio",
+ name: "colorDisplay",
+ id: "colorDisplayHSL",
+ command: function() {
+ return Options.set("colorDisplay", "hsl");
+ },
+ checked: Options.get("colorDisplay") == "hsl"
+ }
+ ];
+ },
+});
+
+// ********************************************************************************************* //
+// Helpers
+
+function getStyleSheetOwnerNode(sheet)
+{
+ for (; sheet && !sheet.ownerNode; sheet = sheet.parentStyleSheet);
+
+ return sheet.ownerNode;
+}
+
+function findPropByName(props, name)
+{
+ for (var i = 0; i < props.length; ++i)
+ {
+ if (props[i].name == name)
+ return i;
+ }
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.CSSModule);
+
+return Firebug.CSSModule;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/css/cssPanel.js b/content/firebug/css/cssPanel.js
index fec7930..94cc9c4 100644
--- a/content/firebug/css/cssPanel.js
+++ b/content/firebug/css/cssPanel.js
@@ -1,3240 +1,3240 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/chrome/reps",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/url",
- "firebug/js/sourceLink",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/chrome/window",
- "firebug/lib/search",
- "firebug/lib/string",
- "firebug/lib/array",
- "firebug/lib/fonts",
- "firebug/lib/xml",
- "firebug/lib/persist",
- "firebug/lib/system",
- "firebug/chrome/menu",
- "firebug/lib/options",
- "firebug/css/cssModule",
- "firebug/css/cssReps",
- "firebug/css/selectorEditor",
- "firebug/lib/trace",
- "firebug/css/cssPanelUpdater",
- "firebug/lib/wrapper",
- "firebug/editor/editor",
- "firebug/editor/editorSelector",
- "firebug/chrome/searchBox",
- "firebug/css/cssPanelMutationObserver",
-],
-function(Obj, Firebug, Domplate, FirebugReps, Locale, Events, Url, SourceLink, Css, Dom, Win,
- Search, Str, Arr, Fonts, Xml, Persist, System, Menu, Options, CSSModule, CSSInfoTip,
- SelectorEditor, FBTrace, CSSPanelUpdater, Wrapper) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-var CSSDomplateBase =
-{
- isEditable: function(rule)
- {
- return !rule.isSystemSheet && !rule.isNotEditable;
- },
-
- isSelectorEditable: function(rule)
- {
- return rule.isSelectorEditable && this.isEditable(rule);
- },
-
- getPropertyValue: function(prop)
- {
- // Disabled, see http://code.google.com/p/fbug/issues/detail?id=5880
- /*
- var limit = Options.get("stringCropLength");
- */
- var limit = 0;
- if (limit > 0)
- return Str.cropString(prop.value, limit);
- return prop.value;
- }
-};
-
-var CSSPropTag = domplate(CSSDomplateBase,
-{
- tag:
- DIV({"class": "cssProp focusRow", $disabledStyle: "$prop.disabled",
- $editGroup: "$rule|isEditable",
- $cssOverridden: "$prop.overridden",
- role: "option"},
-
- // Use spaces for indent to make "copy to clipboard" nice.
- SPAN({"class": "cssPropIndent"}, " "),
- SPAN({"class": "cssPropName", $editable: "$rule|isEditable"},
- "$prop.name"
- ),
-
- // Use a space here, so that "copy to clipboard" has it (issue 3266).
- SPAN({"class": "cssColon"}, ": "),
- SPAN({"class": "cssPropValue", $editable: "$rule|isEditable"},
- "$prop|getPropertyValue$prop.important"
- ),
- SPAN({"class": "cssSemi"}, ";")
- )
-});
-
-var CSSRuleTag =
- TAG("$rule.tag", {rule: "$rule"});
-
-var CSSImportRuleTag = domplate(CSSDomplateBase,
-{
- tag:
- DIV({"class": "cssRule insertInto focusRow importRule", _repObject: "$rule.rule"},
- "@import "",
- A({"class": "objectLink", _repObject: "$rule.rule.styleSheet"}, "$rule.rule.href"),
- """,
- SPAN({"class": "separator"}, "$rule.rule|getSeparator"),
- SPAN({"class": "cssMediaQuery", $editable: "$rule|isEditable"},
- "$rule.rule.media.mediaText"),
- ";"
- ),
-
- getSeparator: function(rule)
- {
- return rule.media.mediaText == "" ? "" : " ";
- }
-});
-
-var CSSCharsetRuleTag = domplate(CSSDomplateBase,
-{
- tag:
- DIV({"class": "cssRule focusRow cssCharsetRule", _repObject: "$rule.rule"},
- SPAN({"class": "cssRuleName"}, "@charset"),
- " "",
- SPAN({"class": "cssRuleValue", $editable: "$rule|isEditable"}, "$rule.rule.encoding"),
- "";"
- )
-});
-
-var CSSMediaRuleTag = domplate(CSSDomplateBase,
-{
- tag:
- DIV({"class": "cssRule focusRow cssMediaRule", _repObject: "$rule.rule"},
- DIV({"class": "cssHead focusRow", role : "listitem"},
- SPAN({"class": "cssRuleName"}, "@media"),
- SPAN({"class": "separator"}, " "),
- SPAN({"class": "cssMediaRuleCondition", $editable: "$rule|isEditable"},
- "$rule.rule.conditionText"),
- SPAN(" {")
- ),
- DIV({"class": "cssRulesListBox", role: "listbox"},
- FOR("subRule", "$rule.subRules",
- TAG("$subRule.tag", {rule: "$subRule"})
- )
- ),
- DIV({$editable: "$rule|isEditable", $insertBefore:"$rule|isEditable",
- role:"presentation"},
- "}")
- )
-});
-
-var CSSSupportsRuleTag = domplate(CSSDomplateBase,
-{
- tag:
- DIV({"class": "cssRule focusRow cssSupportsRule", _repObject: "$rule.rule"},
- DIV({"class": "cssHead focusRow", role : "listitem"},
- SPAN({"class": "cssRuleName"}, "@supports"),
- SPAN({"class": "separator"}, " "),
- SPAN({"class": "cssSupportsRuleCondition", $editable: "$rule|isEditable"},
- "$rule.rule.conditionText"),
- SPAN(" {")
- ),
- DIV({"class": "cssRulesListBox", role: "listbox"},
- FOR("subRule", "$rule.subRules",
- TAG("$subRule.tag", {rule: "$subRule"})
- )
- ),
- DIV({$editable: "$rule|isEditable", $insertBefore:"$rule|isEditable",
- role:"presentation"},
- "}")
- )
-});
-
-var CSSKeyframesRuleTag = domplate(CSSDomplateBase,
-{
- tag:
- DIV({"class": "cssRule focusRow cssKeyframesRule", _repObject: "$rule.rule"},
- DIV({"class": "cssHead focusRow", role : "listitem"},
- SPAN({"class": "cssRuleName"}, "@-moz-keyframes"),
- SPAN({"class": "separator"}, " "),
- SPAN({"class": "cssKeyframesRuleName", $editable: "$rule|isEditable"},
- "$rule.rule.name"),
- SPAN(" {")
- ),
- DIV({"class": "cssRulesListBox", role: "listbox"},
- FOR("subRule", "$rule.subRules",
- TAG("$subRule.tag", {rule: "$subRule"})
- )
- ),
- DIV({role:"presentation"},
- "}")
- )
-});
-
-var CSSKeyframeRuleTag = domplate(CSSDomplateBase,
-{
- tag:
- DIV({"class": "cssRule",
- $cssEditableRule: "$rule|isEditable",
- $insertInto: "$rule|isEditable",
- $editGroup: "$rule|isSelectorEditable",
- _repObject: "$rule.rule",
- role: "presentation"},
- DIV({"class": "cssHead focusRow", role: "listitem"},
- SPAN({"class": "cssKeyText", $editable: "$rule|isEditable"},
- "$rule.rule.keyText"),
- " {"
- ),
- DIV({role: "group"},
- DIV({"class": "cssPropertyListBox", _rule: "$rule", role: "listbox"},
- FOR("prop", "$rule.props",
- TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"})
- )
- )
- ),
- DIV({$editable: "$rule|isEditable", $insertBefore: "$rule|isEditable",
- role:"presentation"},
- "}"
- )
- )
-});
-
-var CSSNamespaceRuleTag = domplate(CSSDomplateBase,
-{
- tag:
- DIV({"class": "cssRule focusRow cssNamespaceRule", _repObject: "$rule.rule"},
- SPAN({"class": "cssRuleName"}, "@namespace"),
- SPAN({"class": "separator"}, "$rule.prefix|getSeparator"),
- SPAN({"class": "cssNamespacePrefix", $editable: "$rule|isEditable"}, "$rule.prefix"),
- " "",
- SPAN({"class": "cssNamespaceName", $editable: "$rule|isEditable"}, "$rule.name"),
- "";"
- ),
-
- getSeparator: function(prefix)
- {
- return prefix == "" ? "" : " ";
- }
-});
-
-var CSSFontFaceRuleTag = domplate(CSSDomplateBase,
-{
- tag:
- DIV({"class": "cssRule cssFontFaceRule",
- $cssEditableRule: "$rule|isEditable",
- $insertInto: "$rule|isEditable",
- _repObject: "$rule.rule",
- role : 'presentation'},
- DIV({"class": "cssHead focusRow", role : "listitem"}, "@font-face {"),
- DIV({role : "group"},
- DIV({"class": "cssPropertyListBox", role: "listbox"},
- FOR("prop", "$rule.props",
- TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"})
- )
- )
- ),
- DIV({$editable: "$rule|isEditable", $insertBefore:"$rule|isEditable",
- role:"presentation"},
- "}"
- )
- )
-});
-
-var CSSPageRuleTag = domplate(CSSDomplateBase,
-{
- tag:
- DIV({"class": "cssRule focusRow cssPageRule", _repObject: "$rule.rule"},
- DIV({"class": "cssHead focusRow", role : "listitem"},
- SPAN({"class": "cssRuleName"}, "@page"),
- SPAN({"class": "separator"}, "$rule.selectorText|getSeparator"),
- SPAN({"class": "cssPageRuleSelector", $editable: "$rule|isEditable"},
- "$rule.selectorText|getSelectorText"),
- SPAN(" {")
- ),
- DIV({role : "group"},
- DIV({"class": "cssPropertyListBox", role: "listbox"},
- FOR("prop", "$rule.props",
- TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"})
- )
- )
- ),
- DIV({$editable: "$rule|isEditable", $insertBefore:"$rule|isEditable",
- role:"presentation"},
- "}")
- ),
-
- getSeparator: function(selector)
- {
- return (!selector || selector == "") ? "" : " ";
- },
-
- getSelectorText: function(selector)
- {
- return selector || "";
- }
-});
-
-var CSSDocumentRuleTag = domplate(CSSDomplateBase,
-{
- tag:
- DIV({"class": "cssRule focusRow cssDocumentRule", _repObject: "$rule.rule"},
- DIV({"class": "cssHead focusRow", role : "listitem"},
- SPAN({"class": "cssRuleName"}, "@-moz-document"),
- SPAN({"class": "separator"}, " "),
- SPAN({"class": "cssDocumentRuleCondition", $editable: "$rule|isEditable"},
- "$rule.rule.conditionText"),
- SPAN(" {")
- ),
- DIV({"class": "cssRulesListBox", role: "listbox"},
- FOR("subRule", "$rule.subRules",
- TAG("$subRule.tag", {rule: "$subRule"})
- )
- ),
- DIV({$editable: "$rule|isEditable", $insertBefore:"$rule|isEditable",
- role:"presentation"},
- "}")
- )
-});
-
-var CSSStyleRuleTag = domplate(CSSDomplateBase,
-{
- tag:
- DIV({"class": "cssRule",
- $cssEditableRule: "$rule|isEditable",
- $insertInto: "$rule|isEditable",
- $editGroup: "$rule|isSelectorEditable",
- _repObject: "$rule.rule",
- role: "presentation"},
- DIV({"class": "cssHead focusRow", role: "listitem"},
- SPAN({"class": "cssSelector", $editable: "$rule|isSelectorEditable"},
- "$rule.selector"),
- " {"
- ),
- DIV({role: "group"},
- DIV({"class": "cssPropertyListBox", _rule: "$rule", role: "listbox"},
- FOR("prop", "$rule.props",
- TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"})
- )
- )
- ),
- DIV({$editable: "$rule|isEditable", $insertBefore: "$rule|isEditable",
- role:"presentation"},
- "}"
- )
- )
-});
-
-Firebug.CSSStyleRuleTag = CSSStyleRuleTag;
-
-// ********************************************************************************************* //
-
-const reSplitCSS = /(url\("?[^"\)]+?"?\))|(rgba?\([^)]*\)?)|(hsla?\([^)]*\)?)|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,4})?)|"([^"]*)"?|'([^']*)'?|([^,\s\/!\(\)]+)|(!(.*)?)/;
-const reURL = /url\("?([^"\)]+)?"?\)/;
-const reRepeat = /no-repeat|repeat-x|repeat-y|repeat/;
-
-// ********************************************************************************************* //
-// CSSStyleSheetPanel (CSS Panel)
-
-/**
- * @panel Represents the CSS panel available in main Firebug UI. This panel is responsible
- * for displaying CSS rules coming from the current page.
- * See more: https://getfirebug.com/wiki/index.php/CSS_Panel
- */
-Firebug.CSSStyleSheetPanel = function() {};
-Firebug.CSSStyleSheetPanel.prototype = Obj.extend(Firebug.Panel,
-/** @lends Firebug.CSSStyleSheetPanel */
-{
- name: "stylesheet",
- parentPanel: null,
- searchable: true,
- dependents: ["css", "stylesheet", "dom", "domSide", "layout"],
- enableA11y: true,
- deriveA11yFrom: "css",
- order: 30,
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- template: domplate(
- {
- tag:
- DIV({"class": "cssSheet insertInto a11yCSSView"},
- FOR("rule", "$rules",
- CSSRuleTag
- ),
- DIV({"class": "cssSheet editable insertBefore"}, ""
- )
- )
- }),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Initialization
-
- initialize: function()
- {
- this.onMouseDown = Obj.bind(this.onMouseDown, this);
- this.onMouseUp = Obj.bind(this.onMouseUp, this);
- this.onClick = Obj.bind(this.onClick, this);
-
- Firebug.Panel.initialize.apply(this, arguments);
-
- // Create an updater for asynchronous update (watching embedded iframe loads).
- var callback = this.updateDefaultLocation.bind(this);
- this.updater = new CSSPanelUpdater(this.context, callback);
- },
-
- destroy: function(state)
- {
- state.scrollTop = this.panelNode.scrollTop ? this.panelNode.scrollTop : this.lastScrollTop;
-
- Persist.persistObjects(this, state);
-
- this.stopEditing();
-
- if (this.updater)
- this.updater.destroy();
-
- Firebug.Panel.destroy.apply(this, arguments);
- },
-
- initializeNode: function(oldPanelNode)
- {
- Events.addEventListener(this.panelNode, "mousedown", this.onMouseDown, false);
- Events.addEventListener(this.panelNode, "mouseup", this.onMouseUp, false);
- Events.addEventListener(this.panelNode, "click", this.onClick, false);
-
- Firebug.Panel.initializeNode.apply(this, arguments);
- },
-
- destroyNode: function()
- {
- Events.removeEventListener(this.panelNode, "mousedown", this.onMouseDown, false);
- Events.removeEventListener(this.panelNode, "mouseup", this.onMouseUp, false);
- Events.removeEventListener(this.panelNode, "click", this.onClick, false);
-
- Firebug.Panel.destroyNode.apply(this, arguments);
- },
-
- show: function(state)
- {
- Firebug.Inspector.stopInspecting(true);
-
- this.showToolbarButtons("fbCSSButtons", true);
- this.showToolbarButtons("fbLocationSeparator", true);
- this.showToolbarButtons("fbLocationButtons", true);
- this.showToolbarButtons("fbLocationList", true);
-
- CSSModule.updateEditButton();
-
- // wait for loadedContext to restore the panel
- if (this.context.loaded && !this.location)
- {
- Persist.restoreObjects(this, state);
-
- if (!this.location)
- this.location = this.getDefaultLocation();
-
- if (state && state.scrollTop)
- this.panelNode.scrollTop = state.scrollTop;
- }
-
- // Solves the problem when the current stylesheet (i.e. the current panel location)
- // has been removed from the page (or the parent window/iframe has been removed).
- // In such case we need to update the panel content.
- if (!this.isValidStyleSheet(this.location))
- this.navigate(null);
- },
-
- hide: function()
- {
- this.lastScrollTop = this.panelNode.scrollTop;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- isValidStyleSheet: function(styleSheet)
- {
- if (!styleSheet)
- return false;
-
- if (Wrapper.isDeadWrapper(styleSheet))
- return false;
-
- if (!styleSheet.ownerNode)
- return false;
-
- return true;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // TabWatcher
-
- unwatchWindow: function(context, win)
- {
- // The update happens only if the CSS panel is selected. If the current location
- // style sheet is removed while the panel is not selected, the content will be
- // updated when 'show' method is executed by the framework.
- var panel = Firebug.chrome.getSelectedPanel();
- if (!panel || panel.name != "stylesheet")
- return;
-
- // We need to check whether the current location (a stylesheet) has been
- // unloaded together with the window.
- if (this.location)
- {
- var ownerNode = this.location.ownerNode;
- var styleSheetDoc = ownerNode ? ownerNode.ownerDocument : null;
- if (styleSheetDoc == win.document)
- {
- this.location = null;
- this.updateDefaultLocation();
- }
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Default Location Update
-
- /**
- * Executed automatically by {@CSSPanelUpdater} object that is watching window/iframe load.
- */
- updateDefaultLocation: function()
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("cssPanel.updateDefaultLocation; " + this.location, this.location);
-
- // Try to update the default location if it doesn't exist yet.
- if (!this.location)
- {
- var defaultLocation = this.getDefaultLocation();
-
- // Still no default location so, keep the updater running.
- if (!defaultLocation)
- return;
-
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("cssPanel.updateDefaultLocation; DONE", defaultLocation);
-
- // Use navigate so, the location button visibility is properly updated.
- this.navigate(defaultLocation);
- }
- else
- {
- // The location is set so just make sure to update the content.
- this.updateLocation(this.location);
- }
-
- if (this.updater)
- {
- // Default location exists so destroy the updater.
- this.updater.destroy();
- this.updater = null;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- refresh: function()
- {
- if (this.location)
- this.updateLocation(this.location);
- else if (this.selection)
- this.updateSelection(this.selection);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // CSS Editing
-
- startBuiltInEditing: function(css)
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("CSSStyleSheetPanel.startBuiltInEditing", css);
-
- if (!this.stylesheetEditor)
- this.stylesheetEditor = new StyleSheetEditor(this.document);
-
- var styleSheet = this.location.editStyleSheet
- ? this.location.editStyleSheet.sheet
- : this.location;
-
- this.stylesheetEditor.styleSheet = this.location;
- Firebug.Editor.startEditing(this.panelNode, css, this.stylesheetEditor);
-
- //this.stylesheetEditor.scrollToLine(topmost.line, topmost.offset);
- this.stylesheetEditor.input.scrollTop = this.panelNode.scrollTop;
- },
-
- startLiveEditing: function(styleSheet, context)
- {
- var css = getStyleSheetCSS(styleSheet, context);
- this.startBuiltInEditing(css);
- },
-
- startSourceEditing: function(styleSheet, context)
- {
- if (Firebug.CSSDirtyListener.isDirty(styleSheet, context))
- {
- var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"].
- getService(Ci.nsIPromptService);
-
- var proceedToEdit = prompts.confirm(null, Locale.$STR("Firebug"),
- Locale.$STR("confirmation.Edit_CSS_Source"));
-
- if (!proceedToEdit)
- {
- this.stopEditing();
- return;
- }
- }
-
- var css = getOriginalStyleSheetCSS(styleSheet, context);
- this.startBuiltInEditing(css);
- },
-
- stopEditing: function()
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("CSSStyleSheetPanel.stopEditing");
-
- if (this.currentCSSEditor)
- {
- this.currentCSSEditor.stopEditing();
- delete this.currentCSSEditor;
- }
- else
- {
- Firebug.Editor.stopEditing();
- }
- },
-
- toggleEditing: function()
- {
- if (this.editing)
- {
- this.stopEditing();
- Events.dispatch(this.fbListeners, "onStopCSSEditing", [this.context]);
- }
- else
- {
- if (!this.location)
- return;
-
- var styleSheet = this.location.editStyleSheet
- ? this.location.editStyleSheet.sheet
- : this.location;
-
- this.currentCSSEditor = CSSModule.getCurrentEditor();
- try
- {
- this.currentCSSEditor.startEditing(styleSheet, this.context, this);
- Events.dispatch(this.fbListeners, "onStartCSSEditing", [styleSheet, this.context]);
- }
- catch(exc)
- {
- var mode = CSSModule.getCurrentEditorName();
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("editor.startEditing ERROR "+exc, {exc: exc, name: mode,
- currentEditor: this.currentCSSEditor, styleSheet: styleSheet,
- CSSModule: CSSModule});
- }
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- loadOriginalSource: function()
- {
- if (!this.location)
- return;
-
- var styleSheet = this.location;
-
- var css = getOriginalStyleSheetCSS(styleSheet, this.context);
-
- this.stylesheetEditor.setValue(css);
- this.stylesheetEditor.saveEdit(null, css);
- //styleSheet.editStyleSheet.showUnformated = true;
- },
-
- getStylesheetURL: function(rule, getBaseUri)
- {
- if (this.location.href)
- return this.location.href;
- else if (getBaseUri)
- return this.context.window.document.baseURI;
- else
- return this.context.window.location.href;
- },
-
- getRuleByLine: function(styleSheet, line)
- {
- if (!Dom.domUtils)
- return null;
-
- var cssRules = styleSheet.cssRules;
- for (var i = 0; i < cssRules.length; ++i)
- {
- var rule = cssRules[i];
- var previousRule;
- if (rule instanceof window.CSSStyleRule)
- {
- var selectorLine = Dom.domUtils.getRuleLine(rule);
- // The declarations are on lines equal or greater than the selectorLine
- if (selectorLine === line) // then the line requested is a selector line
- return rule;
- if (selectorLine > line) // then we passed the rule for the requested line
- return previousRule;
- // else the requested line is still ahead
- previousRule = rule;
- }
- }
- },
-
- highlightRule: function(rule)
- {
- var ruleElement = Firebug.getElementByRepObject(this.panelNode.firstChild, rule);
- if (ruleElement)
- {
- Dom.scrollIntoCenterView(ruleElement, this.panelNode);
- Css.setClassTimed(ruleElement, "jumpHighlight", this.context);
- }
- },
-
- getStyleSheetRules: function(context, styleSheet)
- {
- if (!styleSheet)
- return [];
-
- var isSystemSheet = Url.isSystemStyleSheet(styleSheet);
-
- var createRules = function(cssRules)
- {
- var i;
- var props;
- var rules = [];
-
- if (!cssRules)
- return;
-
- for (i=0; i<cssRules.length; ++i)
- {
- var rule = cssRules[i];
- if (rule instanceof window.CSSStyleRule)
- {
- props = this.getRuleProperties(context, rule);
- rules.push({
- tag: CSSStyleRuleTag.tag,
- rule: rule,
- selector: rule.selectorText.replace(/ :/g, " *:"), // (issue 3683)
- props: props,
- isSystemSheet: isSystemSheet,
- isSelectorEditable: true
- });
- }
- else if (window.CSSSupportsRule && rule instanceof window.CSSSupportsRule)
- {
- rules.push({
- tag: CSSSupportsRuleTag.tag,
- rule: rule,
- subRules: createRules(Css.safeGetCSSRules(rule)),
- isSystemSheet: isSystemSheet
- });
- }
- else if (rule instanceof window.CSSImportRule)
- {
- rules.push({tag: CSSImportRuleTag.tag, rule: rule});
- }
- else if (rule instanceof window.CSSCharsetRule)
- {
- rules.push({tag: CSSCharsetRuleTag.tag, rule: rule});
- }
- else if (rule instanceof window.CSSMediaRule)
- {
- rules.push({
- tag: CSSMediaRuleTag.tag,
- rule: rule,
- subRules: createRules(Css.safeGetCSSRules(rule)),
- isSystemSheet: isSystemSheet
- });
- }
- else if (rule instanceof window.CSSMozDocumentRule)
- {
- rules.push({
- tag: CSSDocumentRuleTag.tag,
- rule: rule,
- subRules: createRules(Css.safeGetCSSRules(rule)),
- isSystemSheet: isSystemSheet
- });
- }
- else if (rule instanceof window.CSSFontFaceRule)
- {
- props = this.parseCSSProps(rule.style);
- this.sortProperties(props);
- rules.push({
- tag: CSSFontFaceRuleTag.tag,
- rule: rule,
- props: props,
- isSystemSheet: isSystemSheet,
- isNotEditable: true
- });
- }
- else if (window.CSSPageRule && rule instanceof window.CSSPageRule)
- {
- props = this.parseCSSProps(rule.style);
- this.sortProperties(props);
- rules.push({
- tag: CSSPageRuleTag.tag,
- rule: rule,
- props: props,
- isSystemSheet: isSystemSheet,
- isNotEditable: true
- });
- }
- else if ((window.CSSKeyframesRule && rule instanceof window.CSSKeyframesRule) ||
- rule instanceof window.MozCSSKeyframesRule)
- {
- rules.push({
- tag: CSSKeyframesRuleTag.tag,
- rule: rule,
- subRules: createRules(Css.safeGetCSSRules(rule)),
- isSystemSheet: isSystemSheet
- });
- }
- else if ((window.CSSKeyframeRule && rule instanceof window.CSSKeyframeRule) ||
- rule instanceof window.MozCSSKeyframeRule)
- {
- props = this.parseCSSProps(rule.style);
- this.sortProperties(props);
- rules.push({
- tag: CSSKeyframeRuleTag.tag,
- rule: rule,
- props: props,
- isSystemSheet: isSystemSheet
- });
- }
- else if (rule instanceof window.CSSNameSpaceRule)
- {
- // Workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=754772
- // MozCSSKeyframesRules, MozCSSKeyframeRules and CSSPageRules are recognized
- // as CSSNameSpaceRules, so explicitly check whether the rule is not a
- // MozCSSKeyframesRule, a MozCSSKeyframeRule or a CSSPageRule
-
- var reNamespace = /^@namespace ((.+) )?url\("(.*?)"\);$/;
- var namespace = rule.cssText.match(reNamespace);
- var prefix = namespace[2] || "";
- var name = namespace[3];
- rules.push({tag: CSSNamespaceRuleTag.tag, rule: rule, prefix: prefix,
- name: name, isNotEditable: true});
- }
- else
- {
- if (FBTrace.DBG_ERRORS && FBTrace.DBG_CSS)
- FBTrace.sysout("css getStyleSheetRules failed to classify a rule ", rule);
- }
- }
-
- return rules;
- }.bind(this);
-
- return createRules(Css.safeGetCSSRules(styleSheet));
- },
-
- parseCSSProps: function(style, inheritMode)
- {
- var m;
- var props = [];
-
- if (Firebug.expandShorthandProps)
- {
- var count = style.length-1;
- var index = style.length;
-
- while (index--)
- {
- var propName = style.item(count - index);
- this.addProperty(propName, style.getPropertyValue(propName),
- !!style.getPropertyPriority(propName), false, inheritMode, props);
- }
- }
- else
- {
- var lines = style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g);
- var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/;
- var line;
- var i=0;
- while(line = lines[i++])
- {
- m = propRE.exec(line);
- if(!m)
- continue;
-
- //var name = m[1], value = m[2], important = !!m[3];
- if (m[2])
- this.addProperty(m[1], m[2], !!m[3], false, inheritMode, props);
- }
- }
-
- return props;
- },
-
- sortProperties: function(props)
- {
- props.sort(function(a, b)
- {
- return a.name > b.name ? 1 : -1;
- });
- },
-
- getRuleProperties: function(context, rule, inheritMode)
- {
- var props = this.parseCSSProps(rule.style, inheritMode);
-
- this.addDisabledProperties(context, rule, inheritMode, props);
- this.sortProperties(props);
-
- return props;
- },
-
- addDisabledProperties: function(context, rule, inheritMode, props)
- {
- var disabledMap = this.getDisabledMap(context);
- var moreProps = disabledMap.get(rule);
- if (moreProps)
- {
- var propMap = {};
- for (var i = 0; i < props.length; ++i)
- propMap[props[i].name] = true;
-
- for (var i = 0; i < moreProps.length; ++i)
- {
- var prop = moreProps[i];
- if (propMap.hasOwnProperty(prop.name))
- {
- // A (probably enabled) property with the same name as this
- // disabled one has appeared - remove this one entirely.
- moreProps.splice(i, 1);
- --i;
- continue;
- }
- propMap[prop.name] = true;
- this.addProperty(prop.name, prop.value, prop.important, true, inheritMode, props);
- }
- }
- },
-
- addProperty: function(name, value, important, disabled, inheritMode, props)
- {
- if (inheritMode && !Dom.domUtils.isInheritedProperty(name))
- return;
-
- name = this.translateName(name, value);
- if (name)
- {
- value = Css.stripUnits(formatColor(value));
- important = important ? " !important" : "";
-
- var prop = {name: name, value: value, important: important, disabled: disabled};
- props.push(prop);
- }
- },
-
- translateName: function(name, value)
- {
- // Don't show these proprietary Mozilla properties
- if ((value == "-moz-initial"
- && (name == "-moz-background-clip" || name == "-moz-background-origin"
- || name == "-moz-background-inline-policy"))
- || (value == "physical"
- && (name == "margin-left-ltr-source" || name == "margin-left-rtl-source"
- || name == "margin-right-ltr-source" || name == "margin-right-rtl-source"))
- || (value == "physical"
- && (name == "padding-left-ltr-source" || name == "padding-left-rtl-source"
- || name == "padding-right-ltr-source" || name == "padding-right-rtl-source")))
- return null;
-
- // Translate these back to the form the user probably expects
- if (name == "margin-left-value")
- return "margin-left";
- else if (name == "margin-right-value")
- return "margin-right";
- else if (name == "margin-top-value")
- return "margin-top";
- else if (name == "margin-bottom-value")
- return "margin-bottom";
- else if (name == "padding-left-value")
- return "padding-left";
- else if (name == "padding-right-value")
- return "padding-right";
- else if (name == "padding-top-value")
- return "padding-top";
- else if (name == "padding-bottom-value")
- return "padding-bottom";
- // XXXjoe What about border!
- else
- return name;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getDisabledMap: function(context)
- {
- // Ideally, we'd use a WeakMap here, but WeakMaps don't allow CSS rules
- // as keys before Firefox 17. A Map is used instead. (cf. bug 777373.)
- if (!context.cssDisabledMap)
- context.cssDisabledMap = new Map();
- return context.cssDisabledMap;
- },
-
- remapRule: function(context, oldRule, newRule)
- {
- var map = this.getDisabledMap(context);
- if (map.has(oldRule))
- map.set(newRule, map.get(oldRule));
- },
-
- editElementStyle: function()
- {
- var rulesBox = this.panelNode.getElementsByClassName("cssElementRuleContainer")[0];
- var styleRuleBox = rulesBox && Firebug.getElementByRepObject(rulesBox, this.selection);
- if (!styleRuleBox)
- {
- var rule = {
- rule: this.selection,
- inherited: false,
- selector: "element.style",
- props: []
- };
-
- if (!rulesBox)
- {
- // The element did not have any displayed styles. We need to create the
- // whole tree and remove the no styles message
- styleRuleBox = this.template.cascadedTag.replace({
- rules: [rule], inherited: [], inheritLabel: Locale.$STR("InheritedFrom")
- }, this.panelNode);
-
- styleRuleBox = styleRuleBox.getElementsByClassName("cssElementRuleContainer")[0];
- }
- else
- {
- styleRuleBox = this.template.ruleTag.insertBefore({rule: rule}, rulesBox);
- }
-
- styleRuleBox = styleRuleBox.getElementsByClassName("insertInto")[0];
- }
-
- Firebug.Editor.insertRowForObject(styleRuleBox);
- },
-
- addRelatedRule: function()
- {
- if (!this.panelNode.getElementsByClassName("cssElementRuleContainer")[0])
- {
- // The element did not have any displayed styles - create the whole
- // tree and remove the no styles message.
- this.template.cascadedTag.replace({
- rules: [], inherited: [],
- inheritLabel: Locale.$STR("InheritedFrom")
- }, this.panelNode);
- }
-
- // Insert the new rule at the top, or after the style rules if there
- // are any.
- var container = this.panelNode.getElementsByClassName("cssNonInherited")[0];
- var ruleBox = container.getElementsByClassName("cssElementRuleContainer")[0];
- var styleRuleBox = ruleBox && Firebug.getElementByRepObject(ruleBox, this.selection);
- if (styleRuleBox)
- ruleBox = this.template.newRuleTag.insertAfter({}, ruleBox);
- else if (ruleBox)
- ruleBox = this.template.newRuleTag.insertBefore({}, ruleBox);
- else
- ruleBox = this.template.newRuleTag.append({}, container);
-
- var before = ruleBox.getElementsByClassName("insertBefore")[0];
- Firebug.Editor.insertRow(before, "before");
-
- // Auto-fill the selector field with something reasonable, like
- // ".some-class" or "#table td".
- var el = this.selection, doc = el.ownerDocument;
- var base = Xml.getNodeName(el), autofill;
- if (el.className)
- {
- autofill = "." + Arr.cloneArray(el.classList).join(".");
- }
- else
- {
- var level = 0;
- el = el.parentNode;
- while (!autofill && el !== doc)
- {
- ++level;
- if (el.id !== "")
- autofill = "#" + el.id;
- else if (el.className !== "")
- autofill = "." + Arr.cloneArray(el.classList).join(".");
- el = el.parentNode;
- }
- if (autofill)
- {
- if (level === 1)
- autofill += " >";
- autofill += " " + base;
- }
- }
-
- if (!autofill ||
- doc.querySelectorAll(autofill).length === doc.querySelectorAll(base).length)
- {
- autofill = base;
- }
-
- this.ruleEditor.setValue(autofill);
- this.ruleEditor.input.select();
- Firebug.Editor.update(true);
- },
-
- editMediaQuery: function(target)
- {
- var row = Dom.getAncestorByClass(target, "cssRule");
- var mediaQueryBox = Dom.getChildByClass(row, "cssMediaQuery");
- Firebug.Editor.startEditing(mediaQueryBox);
- },
-
- insertPropertyRow: function(row)
- {
- Firebug.Editor.insertRowForObject(row);
- },
-
- insertRule: function(row)
- {
- var location = Dom.getAncestorByClass(row, "cssRule");
- if (!location)
- {
- location = Dom.getChildByClass(this.panelNode, "cssSheet");
-
- // Stylesheet has no rules
- if (!location)
- this.template.tag.replace({rules: []}, this.panelNode);
-
- location = Dom.getChildByClass(this.panelNode, "cssSheet");
- Firebug.Editor.insertRowForObject(location);
- }
- else
- {
- Firebug.Editor.insertRow(location, "before");
- }
- },
-
- editPropertyRow: function(row)
- {
- var propValueBox = Dom.getChildByClass(row, "cssPropValue");
- Firebug.Editor.startEditing(propValueBox);
- },
-
- deletePropertyRow: function(row)
- {
- var rule = Firebug.getRepObject(row);
- var propName = Dom.getChildByClass(row, "cssPropName").textContent;
-
- // Try removing the property from the "disabled" map.
- var wasDisabled = this.removeDisabledProperty(rule, propName);
-
- // If that fails, remove the actual property instead.
- if (!wasDisabled)
- CSSModule.deleteProperty(rule, propName, this.context);
-
- if (this.name == "stylesheet")
- Events.dispatch(this.fbListeners, "onInlineEditorClose", [this, row.firstChild, true]);
-
- row.parentNode.removeChild(row);
-
- this.markChange(this.name == "stylesheet");
- },
-
- removeDisabledProperty: function(rule, propName)
- {
- var disabledMap = this.getDisabledMap(this.context);
- var map = disabledMap.get(rule);
- if (!map)
- return false;
- for (var i = 0; i < map.length; ++i)
- {
- if (map[i].name === propName)
- {
- map.splice(i, 1);
- return true;
- }
- }
- return false;
- },
-
- disablePropertyRow: function(row)
- {
- Css.toggleClass(row, "disabledStyle");
-
- var rule = Firebug.getRepObject(row);
- var propName = Dom.getChildByClass(row, "cssPropName").textContent;
-
- var disabledMap = this.getDisabledMap(this.context);
- if (!disabledMap.has(rule))
- disabledMap.set(rule, []);
- var map = disabledMap.get(rule);
-
- var propValue = Dom.getChildByClass(row, "cssPropValue").textContent;
- var parsedValue = parsePriority(propValue);
-
- CSSModule.disableProperty(Css.hasClass(row, "disabledStyle"), rule,
- propName, parsedValue, map, this.context);
-
- this.markChange(this.name == "stylesheet");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- // When handling disable button clicks, we cannot simply use a 'click'
- // event, because refresh() may be (and often is) called in between
- // mousedown and mouseup, replacing the DOM structure. Instead, a
- // description of the moused-down disable button's property is saved
- // and explicitly checked on mouseup (issue 5500).
- clickedPropTag: null,
-
- getPropTag: function(event)
- {
- var row = Dom.getAncestorByClass(event.target, "cssProp");
- var rule = Firebug.getRepObject(row);
- var propName = Dom.getChildByClass(row, "cssPropName").textContent;
- return {
- a: rule, b: propName,
- equals: function(other)
- {
- return (other && this.a === other.a && this.b === other.b);
- }
- };
- },
-
- clickedDisableButton: function(event)
- {
- if (!Css.hasClass(event.target, "cssPropIndent"))
- return false;
-
- // XXX hack
- var clientOffset = Dom.getClientOffset(event.target);
- if (event.clientX - clientOffset.x > 20)
- return false;
- if (Css.hasClass(event.target, "textEditor inlineExpander"))
- return false;
- var row = Dom.getAncestorByClass(event.target, "cssProp");
- return (row && Css.hasClass(row, "editGroup"));
- },
-
- onMouseDown: function(event)
- {
- this.clickedPropTag = null;
- if (Events.isLeftClick(event) && this.clickedDisableButton(event))
- {
- this.clickedPropTag = this.getPropTag(event);
-
- // Don't select text when double-clicking the disable button.
- Events.cancelEvent(event);
- }
- },
-
- onMouseUp: function(event)
- {
- if (Events.isLeftClick(event) && this.clickedDisableButton(event) &&
- this.getPropTag(event).equals(this.clickedPropTag))
- {
- var row = Dom.getAncestorByClass(event.target, "cssProp");
- this.disablePropertyRow(row);
- Events.cancelEvent(event);
- }
- this.clickedPropTag = null;
- },
-
- onClick: function(event)
- {
- if (!Events.isLeftClick(event))
- return;
-
- if (Events.isDoubleClick(event) && !this.clickedDisableButton(event))
- {
- var row = Dom.getAncestorByClass(event.target, "cssRule");
- if (row && !Dom.getAncestorByClass(event.target, "cssPropName")
- && !Dom.getAncestorByClass(event.target, "cssPropValue"))
- {
- this.insertPropertyRow(row);
- Events.cancelEvent(event);
- }
- }
- },
-
- supportsObject: function(object, type)
- {
- if (object instanceof window.CSSStyleSheet)
- {
- return 1;
- }
- else if (object instanceof window.CSSRule ||
- (object instanceof window.CSSStyleDeclaration && object.parentRule) ||
- (object instanceof SourceLink.SourceLink && object.type == "css" &&
- Url.reCSS.test(object.href)))
- {
- return 2;
- }
- else
- {
- return 0;
- }
- },
-
- updateLocation: function(styleSheet)
- {
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("css.updateLocation; " + (styleSheet ? styleSheet.href :
- "no stylesheet"));
- }
-
- this.doUpdateLocation(styleSheet);
- },
-
- doUpdateLocation: function(styleSheet)
- {
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("css.doUpdateLocation; " + (styleSheet ? styleSheet.href :
- "no stylesheet"));
- }
-
- var rules = [];
- if (styleSheet)
- {
- if (!Css.shouldIgnoreSheet(styleSheet))
- {
- if (styleSheet.editStyleSheet)
- styleSheet = styleSheet.editStyleSheet.sheet;
-
- rules = this.getStyleSheetRules(this.context, styleSheet);
- }
- }
-
- if (rules && rules.length)
- {
- this.template.tag.replace({rules: rules}, this.panelNode);
- }
- else
- {
- // If there are no rules on the page display a description that also
- // contains a link "create a rule".
- var warning = FirebugReps.Warning.tag.replace({object: ""}, this.panelNode);
- FirebugReps.Description.render(Locale.$STR("css.EmptyStyleSheet"),
- warning, Obj.bind(this.insertRule, this));
- }
-
- // Show CSS buttons only if there is a stylesheet and it isn't a system stylesheet.
- // Displaying panel's buttons must happens only if the panel is actually visible
- // otherwise the button could appear on another panel's toolbar.
- var showButtons = this.location && !Url.isSystemStyleSheet(this.location);
- this.showToolbarButtons("fbCSSButtons", showButtons);
-
- Events.dispatch(this.fbListeners, "onCSSRulesAdded", [this, this.panelNode]);
-
- // If the full editing mode (not the inline) is on while the location changes,
- // open the editor again for another file.
- if (this.editing && this.stylesheetEditor && this.stylesheetEditor.editing)
- {
- // Remove the editing flag to avoid recursion. The StylesheetEditor.endEditing
- // calls refresh and consequently updateLocation of the CSS panel.
- this.editing = null;
-
- // Stop the current editing.
- this.stopEditing();
-
- // ... and open the editor again.
- this.toggleEditing();
- }
- },
-
- updateSelection: function(object)
- {
- this.selection = null;
-
- if (object instanceof window.CSSStyleDeclaration)
- {
- object = object.parentRule;
- }
-
- if (object instanceof window.CSSRule)
- {
- this.navigate(object.parentStyleSheet);
- this.highlightRule(object);
- }
- else if (object instanceof window.CSSStyleSheet)
- {
- this.navigate(object);
- }
- else if (object instanceof SourceLink.SourceLink)
- {
- try
- {
- var sourceLink = object;
-
- var sourceFile = Firebug.SourceFile.getSourceFileByHref(
- sourceLink.href, this.context);
-
- if (sourceFile)
- {
- Dom.clearNode(this.panelNode); // replace rendered stylesheets
-
- // xxxHonza: huh, this method doesn't even exist?
- this.showSourceFile(sourceFile);
-
- var lineNo = object.line;
- if (lineNo)
- this.scrollToLine(lineNo, this.jumpHighlightFactory(lineNo, this.context));
- }
- else // XXXjjb we should not be taking this path
- {
- var stylesheet = Css.getStyleSheetByHref(sourceLink.href, this.context);
- if (stylesheet)
- {
- this.navigate(stylesheet);
- }
- else
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("css.updateSelection no sourceFile for " +
- sourceLink.href, sourceLink);
- }
- }
- }
- catch(exc)
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("css.upDateSelection FAILS "+exc, exc);
- }
- }
- },
-
- updateOption: function(name, value)
- {
- if (name == "expandShorthandProps" || name == "colorDisplay")
- this.refresh();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getLocationList: function()
- {
- var styleSheets = Css.getAllStyleSheets(this.context);
- return styleSheets;
- },
-
- getOptionsMenuItems: function()
- {
- items = [
- Menu.optionMenu("Expand_Shorthand_Properties", "expandShorthandProps",
- "css.option.tip.Expand_Shorthand_Properties")
- ];
-
- items = Arr.extendArray(items, CSSModule.getColorDisplayOptionMenuItems());
-
- items.push(
- "-",
- {
- label: "Refresh",
- tooltiptext: "panel.tip.Refresh",
- command: Obj.bind(this.refresh, this)
- }
- );
-
- return items;
- },
-
- getContextMenuItems: function(style, target)
- {
- var items = [];
-
- if (target.nodeName == "TEXTAREA")
- {
- items = Firebug.BaseEditor.getContextMenuItems();
- items.push(
- "-",
- {
- id: "fbLoadOriginalSource",
- label: "Load_Original_Source",
- tooltiptext: "css.tip.Load_Original_Source",
- command: Obj.bindFixed(this.loadOriginalSource, this)
- }
- );
- return items;
- }
-
- if (Css.hasClass(target, "cssSelector"))
- {
- items.push(
- {
- id: "fbCopyRuleDeclaration",
- label: "Copy_Rule_Declaration",
- tooltiptext: "css.tip.Copy_Rule_Declaration",
- command: Obj.bindFixed(this.copyRuleDeclaration, this, target)
- },
- {
- id: "fbCopyStyleDeclaration",
- label: "Copy_Style_Declaration",
- tooltiptext: "css.tip.Copy_Style_Declaration",
- command: Obj.bindFixed(this.copyStyleDeclaration, this, target)
- }
- );
- }
-
- var prop = Dom.getAncestorByClass(target, "cssProp");
- if (prop)
- {
- items.push(
- {
- id: "fbCopyPropertyDeclaration",
- label: "css.label.Copy_Property_Declaration",
- tooltiptext: "css.tip.Copy_Property_Declaration",
- command: Obj.bindFixed(this.copyPropertyDeclaration, this, prop)
- },
- {
- id: "fbCopyPropertyName",
- label: "css.label.Copy_Property_Name",
- tooltiptext: "css.tip.Copy_Property_Name",
- command: Obj.bindFixed(this.copyPropertyName, this, prop)
- },
- {
- id: "fbCopyPropertyValue",
- label: "css.label.Copy_Property_Value",
- tooltiptext: "css.tip.Copy_Property_Value",
- command: Obj.bindFixed(this.copyPropertyValue, this, prop)
- }
- );
- }
-
- var propValue = Dom.getAncestorByClass(target, "cssPropValue");
- if (propValue)
- {
- if (this.infoTipType == "color")
- {
- items.push(
- {
- id: "fbCopyColor",
- label: "CopyColor",
- tooltiptext: "css.tip.Copy_Color",
- command: Obj.bindFixed(System.copyToClipboard, System, this.infoTipObject)
- }
- );
- }
- else if (this.infoTipType == "image")
- {
- items.push(
- {
- id: "fbCopyImageLocation",
- label: "CopyImageLocation",
- tooltiptext: "css.tip.Copy_Image_Location",
- command: Obj.bindFixed(System.copyToClipboard, System, this.infoTipObject)
- },
- {
- id: "fbOpenImageInNewTab",
- label: "OpenImageInNewTab",
- tooltiptext: "css.tip.Open_Image_In_New_Tab",
- command: Obj.bindFixed(Win.openNewTab, Win, this.infoTipObject)
- }
- );
- }
- }
-
- if (!Url.isSystemStyleSheet(this.selection))
- {
- items.push(
- "-",
- {
- id: "fbNewCSSRule",
- label: "NewRule",
- tooltiptext: "css.tip.New_Rule",
- command: Obj.bindFixed(this.insertRule, this, target)
- }
- );
- }
-
- if (Css.hasClass(target, "cssSelector"))
- {
- var selector = Str.cropString(target.textContent, 30);
- items.push(
- {
- id: "fbDeleteRuleDeclaration",
- label: Locale.$STRF("css.Delete_Rule", [selector]),
- tooltiptext: Locale.$STRF("css.tip.Delete_Rule", [selector]),
- nol10n: true,
- command: Obj.bindFixed(this.deleteRuleDeclaration, this, target)
- }
- );
- }
-
- var cssRule = Dom.getAncestorByClass(target, "cssRule");
- if (cssRule)
- {
- if(Css.hasClass(cssRule, "cssEditableRule"))
- {
- items.push(
- "-",
- {
- id: "fbNewCSSProp",
- label: "NewProp",
- tooltiptext: "css.tip.New_Prop",
- command: Obj.bindFixed(this.insertPropertyRow, this, target)
- }
- );
-
- var propRow = Dom.getAncestorByClass(target, "cssProp");
- if (propRow)
- {
- var propName = Dom.getChildByClass(propRow, "cssPropName").textContent;
- var isDisabled = Css.hasClass(propRow, "disabledStyle");
-
- items.push(
- {
- id: "fbEditCSSProp",
- label: Locale.$STRF("EditProp", [propName]),
- tooltiptext: Locale.$STRF("css.tip.Edit_Prop", [propName]),
- nol10n: true,
- command: Obj.bindFixed(this.editPropertyRow, this, propRow)
- },
- {
- id: "fbDeleteCSSProp",
- label: Locale.$STRF("DeleteProp", [propName]),
- tooltiptext: Locale.$STRF("css.tip.Delete_Prop", [propName]),
- nol10n: true,
- command: Obj.bindFixed(this.deletePropertyRow, this, propRow)
- },
- {
- id: "fbDisableCSSProp",
- label: Locale.$STRF("DisableProp", [propName]),
- tooltiptext: Locale.$STRF("css.tip.Disable_Prop", [propName]),
- nol10n: true,
- type: "checkbox",
- checked: isDisabled,
- command: Obj.bindFixed(this.disablePropertyRow, this, propRow)
- }
- );
- }
- }
-
- if (Css.hasClass(cssRule, "importRule"))
- {
- items.push(
- {
- id: "fbEditMediaQuery",
- label: "css.menu.Edit_Media_Query",
- tooltiptext: "css.menu.tip.Edit_Media_Query",
- command: Obj.bindFixed(this.editMediaQuery, this, target)
- }
- );
- }
- }
-
- items.push(
- "-",
- {
- id: "fbRefresh",
- label: "Refresh",
- command: Obj.bind(this.refresh, this),
- tooltiptext: "panel.tip.Refresh"
- }
- );
-
- return items;
- },
-
- browseObject: function(object)
- {
- if (this.infoTipType == "image")
- {
- Win.openNewTab(this.infoTipObject);
- return true;
- }
- },
-
- showInfoTip: function(infoTip, target, x, y, rangeParent, rangeOffset)
- {
- var propValue = Dom.getAncestorByClass(target, "cssPropValue");
- if (propValue)
- {
- var prop = Dom.getAncestorByClass(target, "cssProp");
- var styleRule = Firebug.getRepObject(prop);
- var propNameNode = prop.getElementsByClassName("cssPropName").item(0);
- var propName = propNameNode.textContent.toLowerCase();
- var priority = styleRule.style.getPropertyPriority(propName);
- var text = styleRule.style.getPropertyValue(propName) +
- (priority ? " !" + priority : "");
-
- if (text != "")
- {
- text = formatColor(text);
- }
- else
- {
- var disabledMap = this.getDisabledMap(this.context);
- var disabledProps = disabledMap.get(styleRule);
- if (disabledProps)
- {
- for (var i = 0, len = disabledProps.length; i < len; ++i)
- {
- if (disabledProps[i].name == propName)
- {
- priority = disabledProps[i].important;
- text = disabledProps[i].value + (priority ? " !" + priority : "");
- break;
- }
- }
- }
- }
-
- var cssValue;
- if (propName == "font" || propName == "font-family")
- {
- if (text.charAt(rangeOffset) == ",")
- return;
-
- cssValue = CSSModule.parseCSSFontFamilyValue(text, rangeOffset, propName);
- }
- else
- {
- cssValue = CSSModule.parseCSSValue(text, rangeOffset);
- }
-
- if (!cssValue)
- return false;
-
- if (cssValue.value === "currentcolor")
- {
- cssValue.value = this.getCurrentColor();
- if (cssValue.value === "")
- return false;
- }
-
- if (cssValue.value == this.infoTipValue)
- return true;
-
- this.infoTipValue = cssValue.value;
-
- switch (cssValue.type)
- {
- case "rgb":
- case "hsl":
- case "gradient":
- case "colorKeyword":
- this.infoTipType = "color";
- this.infoTipObject = cssValue.value;
- return CSSInfoTip.populateColorInfoTip(infoTip, cssValue.value);
-
- case "url":
- if (Css.isImageRule(Xml.getElementSimpleType(Firebug.getRepObject(target)),
- propNameNode.textContent))
- {
- var prop = Dom.getAncestorByClass(target, "cssProp");
- var rule = Firebug.getRepObject(prop);
- var baseURL = this.getStylesheetURL(rule, true);
- var relURL = CSSModule.parseURLValue(cssValue.value);
- var absURL = Url.isDataURL(relURL) ? relURL : Url.absoluteURL(relURL, baseURL);
- var repeat = CSSModule.parseRepeatValue(text);
-
- this.infoTipType = "image";
- this.infoTipObject = absURL;
-
- return CSSInfoTip.populateImageInfoTip(infoTip, absURL, repeat);
- }
- break;
-
- case "fontFamily":
- return CSSInfoTip.populateFontFamilyInfoTip(infoTip, cssValue.value);
- }
-
- delete this.infoTipType;
- delete this.infoTipValue;
- delete this.infoTipObject;
-
- return false;
- }
- },
-
- getCurrentColor: function()
- {
- return "";
- },
-
- getEditor: function(target, value)
- {
- if (target == this.panelNode
- || Css.hasClass(target, "cssSelector") || Css.hasClass(target, "cssRule")
- || Css.hasClass(target, "cssSheet"))
- {
- if (!this.ruleEditor)
- this.ruleEditor = new CSSRuleEditor(this.document);
-
- return this.ruleEditor;
- }
- else
- {
- if (!this.editor)
- this.editor = new CSSEditor(this.document);
-
- return this.editor;
- }
- },
-
- getDefaultLocation: function()
- {
- // Note: We can't do makeDefaultStyleSheet here, because that could be
- // damaging for special pages (see e.g. issues 2440, 3688).
- try
- {
- var styleSheets = this.getLocationList();
- if (styleSheets.length)
- {
- var sheet = styleSheets[0];
- return (Firebug.filterSystemURLs &&
- Url.isSystemURL(Css.getURLForStyleSheet(sheet))) ? null : sheet;
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_LOCATIONS)
- FBTrace.sysout("css.getDefaultLocation FAILS "+exc, exc);
- }
- },
-
- getObjectLocation: function(styleSheet)
- {
- return Css.getURLForStyleSheet(styleSheet);
- },
-
- getObjectDescription: function(styleSheet)
- {
- var url = Css.getURLForStyleSheet(styleSheet);
- var instance = Css.getInstanceForStyleSheet(styleSheet);
-
- var baseDescription = Url.splitURLBase(url);
- if (instance) {
- baseDescription.name = baseDescription.name + " #" + (instance + 1);
- }
- return baseDescription;
- },
-
- getSourceLink: function(target, rule)
- {
- var element = rule.parentStyleSheet.ownerNode;
- var href = rule.parentStyleSheet.href; // Null means inline
-
- // http://code.google.com/p/fbug/issues/detail?id=452
- if (!href)
- href = element.ownerDocument.location.href;
-
- var line = getRuleLine(rule);
- var instance = Css.getInstanceForStyleSheet(rule.parentStyleSheet);
- var sourceLink = new SourceLink.SourceLink(href, line, "css", rule, instance);
-
- return sourceLink;
- },
-
- getTopmostRuleLine: function()
- {
- var panelNode = this.panelNode;
- for (var child = panelNode.firstChild; child; child = child.nextSibling)
- {
- if (child.offsetTop+child.offsetHeight > panelNode.scrollTop)
- {
- var rule = child.repObject;
- if (rule)
- {
- return {
- line: getRuleLine(rule),
- offset: panelNode.scrollTop-child.offsetTop
- };
- }
- }
- }
- return 0;
- },
-
- getCurrentLineNumber: function()
- {
- var ruleLine = this.getTopMostRuleLine();
- if (ruleLine)
- return ruleLine.line;
- },
-
- search: function(text, reverse)
- {
- var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse);
- if (!curDoc && Firebug.searchGlobal)
- {
- return this.searchOtherDocs(text, reverse) ||
- this.searchCurrentDoc(true, text, reverse);
- }
- return curDoc;
- },
-
- searchOtherDocs: function(text, reverse)
- {
- var scanRE = Firebug.Search.getTestingRegex(text);
- function scanDoc(styleSheet) {
- // we don't care about reverse here as we are just looking for existence,
- // if we do have a result we will handle the reverse logic on display
- for (var i = 0; i < styleSheet.cssRules.length; i++)
- {
- if (scanRE.test(styleSheet.cssRules[i].cssText))
- {
- return true;
- }
- }
- }
-
- if (this.navigateToNextDocument(scanDoc, reverse))
- {
- // firefox findService can't find nodes immediatly after insertion
- // xxxHonza: the timeout has been increased to 100 since search across
- // multiple documents didn't work sometimes.
- // Of course, it would be great to get rid of the timeout.
- setTimeout(Obj.bind(this.searchCurrentDoc, this), 100, true, text, reverse);
- return "wraparound";
- }
- },
-
- searchCurrentDoc: function(wrapSearch, text, reverse)
- {
- var row, sel;
-
- if (!text)
- {
- delete this.currentSearch;
- this.highlightNode(null);
- this.document.defaultView.getSelection().removeAllRanges();
- return false;
- }
-
- if (this.currentSearch && text == this.currentSearch.text)
- {
- row = this.currentSearch.findNext(wrapSearch, false, reverse,
- Firebug.Search.isCaseSensitive(text));
- }
- else
- {
- if (this.editing)
- {
- this.currentSearch = new Search.TextSearch(this.stylesheetEditor.box);
- row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
-
- if (row)
- {
- sel = this.document.defaultView.getSelection();
- sel.removeAllRanges();
- sel.addRange(this.currentSearch.range);
-
- scrollSelectionIntoView(this);
- this.highlightNode(row);
-
- return true;
- }
- else
- {
- return false;
- }
- }
- else
- {
- function findRow(node) {
- return node.nodeType == Node.ELEMENT_NODE ? node : node.parentNode;
- }
-
- this.currentSearch = new Search.TextSearch(this.panelNode, findRow);
- row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
- }
- }
-
- if (row)
- {
- sel = this.document.defaultView.getSelection();
- sel.removeAllRanges();
- sel.addRange(this.currentSearch.range);
-
- // Should be replaced by scrollToLine() of sourceBox,
- // though first jumpHighlightFactory() has to be adjusted to
- // remove the current highlighting when called again
- Dom.scrollIntoCenterView(row, this.panelNode);
- this.highlightNode(row.parentNode);
-
- Events.dispatch(this.fbListeners, "onCSSSearchMatchFound", [this, text, row]);
- return this.currentSearch.wrapped ? "wraparound" : true;
- }
- else
- {
- this.document.defaultView.getSelection().removeAllRanges();
- Events.dispatch(this.fbListeners, "onCSSSearchMatchFound", [this, text, null]);
- return false;
- }
- },
-
- getSearchOptionsMenuItems: function()
- {
- return [
- Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive",
- "search.tip.Case_Sensitive"),
- Firebug.Search.searchOptionMenu("search.Multiple_Files", "searchGlobal",
- "search.tip.Multiple_Files"),
- Firebug.Search.searchOptionMenu("search.Use_Regular_Expression",
- "searchUseRegularExpression", "search.tip.Use_Regular_Expression")
- ];
- },
-
- getStyleDeclaration: function(cssSelector)
- {
- var cssRule = Dom.getAncestorByClass(cssSelector, "cssRule");
- var propRows = cssRule.getElementsByClassName("cssProp");
-
- var lines = [];
- for (var i = 0; i < propRows.length; ++i)
- {
- var row = propRows[i];
- if (row.classList.contains("disabledStyle"))
- continue;
-
- var name = Dom.getChildByClass(row, "cssPropName").textContent;
- var value = Dom.getChildByClass(row, "cssPropValue").textContent;
- lines.push(name + ": " + value + ";");
- }
-
- return lines;
- },
-
- copyRuleDeclaration: function(cssSelector)
- {
- var props = this.getStyleDeclaration(cssSelector);
- System.copyToClipboard(cssSelector.textContent + " {" + Str.lineBreak() + " " +
- props.join(Str.lineBreak() + " ") + Str.lineBreak() + "}");
- },
-
- deleteRuleDeclaration: function(cssSelector)
- {
- var searchRule = Firebug.getRepObject(cssSelector) ||
- Firebug.getRepObject(cssSelector.nextSibling);
- var styleSheet = searchRule.parentRule || searchRule.parentStyleSheet;
- var ruleIndex = 0;
- var cssRules = styleSheet.cssRules;
- while (ruleIndex < cssRules.length && searchRule != cssRules[ruleIndex])
- ruleIndex++;
-
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("css.deleteRuleDeclaration; selector: "+
- Str.cropString(cssSelector.textContent, 100),
- {styleSheet: styleSheet, ruleIndex: ruleIndex});
- }
-
- CSSModule.deleteRule(styleSheet, ruleIndex);
-
- var rule = Dom.getAncestorByClass(cssSelector, "cssRule");
- if (rule)
- rule.parentNode.removeChild(rule);
- },
-
- copyStyleDeclaration: function(cssSelector)
- {
- var props = this.getStyleDeclaration(cssSelector);
- System.copyToClipboard(props.join(Str.lineBreak()));
- },
-
- copyPropertyDeclaration: function(prop)
- {
- // xxxsz: repObject should be used instead
- System.copyToClipboard(Str.trim(prop.textContent));
- },
-
- copyPropertyName: function(prop)
- {
- // xxxsz: repObject should be used instead
- var propName = prop.getElementsByClassName("cssPropName")[0];
- System.copyToClipboard(propName.textContent);
- },
-
- copyPropertyValue: function(prop)
- {
- // xxxsz: repObject should be used instead
- var propValue = prop.getElementsByClassName("cssPropValue")[0];
- System.copyToClipboard(propValue.textContent);
- }
-});
-
-// ********************************************************************************************* //
-// CSSEditor
-
-function CSSEditor(doc)
-{
- this.initializeInline(doc);
-}
-
-CSSEditor.prototype = domplate(Firebug.InlineEditor.prototype,
-{
- insertNewRow: function(target, insertWhere)
- {
- var rule = Firebug.getRepObject(target);
- if (!rule)
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("CSSEditor.insertNewRow; ERROR There is no CSS rule", target);
- return;
- }
-
- var emptyProp = {name: "", value: "", important: ""};
-
- if (insertWhere == "before")
- return CSSPropTag.tag.insertBefore({prop: emptyProp, rule: rule}, target);
- else
- return CSSPropTag.tag.insertAfter({prop: emptyProp, rule: rule}, target);
- },
-
- saveEdit: function(target, value, previousValue)
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("CSSEditor.saveEdit", arguments);
-
- var cssRule = Dom.getAncestorByClass(target, "cssRule");
- var rule = Firebug.getRepObject(cssRule);
-
- if (rule instanceof window.CSSStyleRule ||
- ((window.CSSKeyframeRule && rule instanceof window.CSSKeyframeRule) ||
- rule instanceof window.MozCSSKeyframeRule) &&
- !Css.hasClass(target, "cssKeyText") ||
- rule instanceof window.Element)
- {
- var prop = Dom.getAncestorByClass(target, "cssProp");
-
- if (prop)
- {
- var propName = Dom.getChildByClass(prop, "cssPropName").textContent;
- // If the property was previously disabled, remove it from the "disabled"
- // map. (We will then proceed to enable the property.)
- if (prop && prop.classList.contains("disabledStyle"))
- {
- prop.classList.remove("disabledStyle");
-
- this.panel.removeDisabledProperty(rule, propName);
- }
-
- if (Css.hasClass(target, "cssPropName"))
- {
- // Actual saving is done in endEditing, see the comment there.
- target.textContent = value;
- }
- else if (Dom.getAncestorByClass(target, "cssPropValue"))
- {
- target.textContent = CSSDomplateBase.getPropertyValue({value: value});
-
- propName = Dom.getChildByClass(prop, "cssPropName").textContent;
-
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("CSSEditor.saveEdit \"" + propName + "\" = \"" +
- value + "\"");
- // FBTrace.sysout("CSSEditor.saveEdit BEFORE style:",style);
- }
-
- if (value && value != "null")
- {
- var parsedValue = parsePriority(value);
- CSSModule.setProperty(rule, propName, parsedValue.value,
- parsedValue.priority);
- }
- else if (previousValue && previousValue != "null")
- {
- CSSModule.removeProperty(rule, propName);
- }
- }
-
- if (value)
- {
- var saveSuccess = false;
- if (Css.hasClass(target, "cssPropName"))
- {
- var propName = value.replace(/-./g, function(match)
- {
- return match[1].toUpperCase();
- });
-
- if (propName in rule.style || propName == "float")
- saveSuccess = "almost";
- }
- else
- {
- saveSuccess = !!rule.style.getPropertyValue(propName);
- }
-
- this.box.setAttribute("saveSuccess", saveSuccess);
- }
- else
- {
- this.box.removeAttribute("saveSuccess");
- }
- }
- }
- else if (window.CSSSupportsRule && rule instanceof window.CSSSupportsRule &&
- Css.hasClass(target, "cssSupportsRuleCondition"))
- {
- target.textContent = value;
-
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("CSSEditor.saveEdit: @supports rule condition: " +
- previousValue + "->" + value);
- }
-
- try
- {
- rule.conditionText = value;
- }
- catch (e)
- {
- }
-
- var saveSuccess = (rule.conditionText == value);
- this.box.setAttribute("saveSuccess", saveSuccess);
- }
- else if (((window.CSSKeyframeRule && rule instanceof window.CSSKeyframeRule) ||
- rule instanceof window.MozCSSKeyframeRule) &&
- Css.hasClass(target, "cssKeyText"))
- {
- target.textContent = value;
-
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("CSSEditor.saveEdit: @-moz-keyframe rule key: " +
- previousValue + "->" + value);
- }
-
- rule.keyText = value;
-
- var saveSuccess = (rule.keyText == value || rule.keyText == Css.keyframeKeys[value]);
- this.box.setAttribute("saveSuccess", saveSuccess);
- }
- else if (rule instanceof window.CSSMozDocumentRule &&
- Css.hasClass(target, "cssDocumentRuleCondition"))
- {
- target.textContent = value;
-
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("CSSEditor.saveEdit: @-moz-document rule condition: " +
- previousValue + "->" + value);
- }
-
- try
- {
- rule.conditionText = value;
- }
- catch (e)
- {
- }
-
- var saveSuccess = (rule.conditionText == value);
- this.box.setAttribute("saveSuccess", saveSuccess);
- }
- else if (rule instanceof window.CSSImportRule && Css.hasClass(target, "cssMediaQuery"))
- {
- target.textContent = value;
-
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("CSSEditor.saveEdit: @import media query: " +
- previousValue + "->" + value);
- }
-
- rule.media.mediaText = value;
-
- // Workaround to apply the media query changes
- rule.parentStyleSheet.disabled = true;
- rule.parentStyleSheet.disabled = false;
-
- var row = Dom.getAncestorByClass(target, "importRule");
- row.getElementsByClassName("separator").item(0).textContent =
- value == "" ? "" : String.fromCharCode(160);
-
- var saveSuccess = rule.media.mediaText != "not all" || value == "not all";
- this.box.setAttribute("saveSuccess", saveSuccess);
- }
- else if (rule instanceof window.CSSMediaRule &&
- Css.hasClass(target, "cssMediaRuleCondition"))
- {
- target.textContent = value;
-
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("CSSEditor.saveEdit: @media rule condition: " +
- previousValue + "->" + value);
- }
-
- rule.conditionText = value;
-
- var saveSuccess = (rule.conditionText == value);
- this.box.setAttribute("saveSuccess", saveSuccess);
- }
- else if (rule instanceof window.CSSCharsetRule)
- {
- target.textContent = value;
-
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("CSSEditor.saveEdit: @charset: " + previousValue + "->" + value);
-
- rule.encoding = value;
- }
-
- Firebug.Inspector.repaint();
-
- this.panel.markChange(this.panel.name == "stylesheet");
-
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("CSSEditor.saveEdit (ending) " + this.panel.name, value);
- },
-
- beginEditing: function(target, value)
- {
- var row = Dom.getAncestorByClass(target, "cssProp");
- this.initialValue = value;
- this.initiallyDisabled = (row && row.classList.contains("disabledStyle"));
- },
-
- endEditing: function(target, value, cancel)
- {
- if (!cancel && target.classList.contains("cssPropName"))
- {
- // Save changed property names here instead of in saveEdit, because otherwise
- // unrelated properties might get discarded (see issue 5204).
- var previous = this.initialValue;
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("CSSEditor.endEditing: renaming property " + previous + " -> " +
- value);
- }
-
- var cssRule = Dom.getAncestorByClass(target, "cssRule");
- var rule = Firebug.getRepObject(cssRule);
- var baseText = rule.style ? rule.style.cssText : rule.cssText;
- var prop = Dom.getAncestorByClass(target, "cssProp");
- var propValue = Dom.getChildByClass(prop, "cssPropValue").textContent;
- var parsedValue = parsePriority(propValue);
-
- if (previous)
- CSSModule.removeProperty(rule, previous);
- if (propValue)
- CSSModule.setProperty(rule, value, parsedValue.value, parsedValue.priority);
-
- Events.dispatch(CSSModule.fbListeners, "onCSSPropertyNameChanged", [rule, value,
- previous, baseText]);
-
- Firebug.Inspector.repaint();
- this.panel.markChange(this.panel.name == "stylesheet");
- }
- return true;
- },
-
- cancelEditing: function(target, value)
- {
- if (this.initiallyDisabled)
- {
- // Disable the property again.
- var row = Dom.getAncestorByClass(target, "cssProp");
- if (row && !row.classList.contains("disabledStyle"))
- this.panel.disablePropertyRow(row);
- }
- },
-
- advanceToNext: function(target, charCode)
- {
- if (charCode == 58 /*":"*/ && Css.hasClass(target, "cssPropName"))
- {
- return true;
- }
- else if (charCode == 59 /*";"*/ && Css.hasClass(target, "cssPropValue"))
- {
- var cssValue = CSSModule.parseCSSValue(this.input.value, this.input.selectionStart);
- // Simple test, if we are inside a string (see issue 4543)
- var isValueInString = (cssValue.value.indexOf("\"") != -1);
-
- return !isValueInString;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getAutoCompleteRange: function(value, offset)
- {
- if (!Css.hasClass(this.target, "cssPropValue"))
- return {start: 0, end: value.length};
-
- var propRow = Dom.getAncestorByClass(this.target, "cssProp");
- var propName = Dom.getChildByClass(propRow, "cssPropName").textContent.toLowerCase();
-
- if (propName == "font" || propName == "font-family")
- return CSSModule.parseCSSFontFamilyValue(value, offset, propName);
- else
- return CSSModule.parseCSSValue(value, offset);
- },
-
- getAutoCompleteList: function(preExpr, expr, postExpr, range, cycle, context, out)
- {
- if (Dom.getAncestorByClass(this.target, "importRule"))
- {
- return [];
- }
- else if (Dom.getAncestorByClass(this.target, "cssCharsetRule"))
- {
- return Css.charsets;
- }
- else if (Css.hasClass(this.target, "cssPropName"))
- {
- var nodeType = Xml.getElementSimpleType(Firebug.getRepObject(this.target));
- var ret = Css.getCSSPropertyNames(nodeType);
-
- if (!cycle && expr)
- {
- // Make some good default suggestions.
- var list = ["color", "clear", "display", "float", "overflow"];
- for (var i = 0; i < list.length; ++i)
- {
- if (Str.hasPrefix(list[i], expr) && ret.indexOf(list[i]) !== -1)
- {
- out.suggestion = list[i];
- break;
- }
- }
- }
-
- return ret;
- }
- else if (Dom.getAncestorByClass(this.target, "cssDocumentRule") &&
- !Css.hasClass(this.target, "cssPropValue"))
- {
- return Css.documentConditions;
- }
- else if (Dom.getAncestorByClass(this.target, "cssKeyframesRule") &&
- !Css.hasClass(this.target, "cssPropValue"))
- {
- return Object.getOwnPropertyNames(Css.keyframeKeys);
- }
- else if (Dom.getAncestorByClass(this.target, "cssMediaRule") &&
- !Css.hasClass(this.target, "cssPropValue"))
- {
- return Css.mediaTypes;
- }
- else
- {
- if (expr.charAt(0) === "!")
- return ["!important"];
-
- var row = Dom.getAncestorByClass(this.target, "cssProp");
- var propName = Dom.getChildByClass(row, "cssPropName").textContent;
- var nodeType = Xml.getElementSimpleType(Firebug.getRepObject(this.target));
-
- var keywords;
- if (range.type === "url")
- {
- // We can't complete urls yet.
- return [];
- }
- else if (range.type === "fontFamily")
- {
- keywords = Css.cssKeywords["fontFamily"].slice();
- if (this.panel && this.panel.context)
- {
- // Add the fonts used in this context (they might be inaccessible
- // for this element, but probably aren't).
- var fonts = Fonts.getFontsUsedInContext(this.panel.context), ar = [];
- for (var i = 0; i < fonts.length; i++)
- ar.push(fonts[i].CSSFamilyName);
- keywords = Arr.sortUnique(keywords.concat(ar));
- }
-
- var q = expr.charAt(0), isQuoted = (q === '"' || q === "'");
- if (!isQuoted)
- {
- // Default to ' quotes, unless " occurs somewhere.
- q = (/"/.test(preExpr + postExpr) ? '"' : "'");
- }
-
- // Don't complete '.
- if (expr.length <= 1 && isQuoted)
- return [];
-
- // When completing, quote fonts if the input is quoted; when
- // cycling, quote them instead in the way the user seems to
- // expect to have them quoted.
- var reSimple = /^[a-z][a-z0-9-]*$/i;
- var isComplex = !reSimple.test(expr.replace(/^['"]?|['"]?$/g, ""));
- var quote = function(str)
- {
- if (!cycle || isComplex !== isQuoted)
- return (isQuoted ? q + str + q : str);
- else
- return (reSimple.test(str) ? str : q + str + q);
- };
-
- keywords = keywords.slice();
- for (var i = 0; i < keywords.length; ++i)
- {
- // Treat values starting with capital letters as font names
- // that can be quoted.
- var k = keywords[i];
- if (k.charAt(0).toLowerCase() !== k.charAt(0))
- keywords[i] = quote(k);
- }
- }
- else
- {
- var lowerProp = propName.toLowerCase(), avoid;
- if (["background", "border", "font"].indexOf(lowerProp) !== -1)
- {
- if (cycle)
- {
- // Cycle only within the same category, if possible.
- var cat = Css.getCSSShorthandCategory(nodeType, lowerProp, expr);
- if (cat)
- return (cat in Css.cssKeywords ? Css.cssKeywords[cat] : [cat]);
- }
- else
- {
- // Avoid repeated properties. We assume the values to be solely
- // space-separated tokens, within a comma-separated part (like
- // for CSS3 multiple backgrounds). This is absolutely wrong, but
- // good enough in practice because non-tokens for which it fails
- // likely aren't in any category.
- // "background-position" and "background-repeat" values can occur
- // twice, so they are special-cased.
- avoid = [];
- var preTokens = preExpr.split(",").reverse()[0].split(" ");
- var postTokens = postExpr.split(",")[0].split(" ");
- var tokens = preTokens.concat(postTokens);
- for (var i = 0; i < tokens.length; ++i)
- {
- var cat = Css.getCSSShorthandCategory(nodeType, lowerProp, tokens[i]);
- if (cat && cat !== "position" && cat !== "bgRepeat")
- avoid.push(cat);
- }
- }
- }
- keywords = Css.getCSSKeywordsByProperty(nodeType, propName, avoid);
- }
-
- // Add the magic inherit property, if it's sufficiently alone.
- // XXX Firefox 19 also has "initial"
- if (!preExpr)
- keywords = keywords.concat(["inherit"]);
-
- if (!cycle)
- {
- // Make some good default suggestions.
- var list = ["white", "black", "solid", "outset", "repeat"];
- for (var i = 0; i < list.length; ++i)
- {
- if (Str.hasPrefix(list[i], expr) && keywords.indexOf(list[i]) !== -1)
- {
- out.suggestion = list[i];
- break;
- }
- }
- }
-
- return SelectorEditor.stripCompletedParens(keywords, postExpr);
- }
- },
-
- getAutoCompletePropSeparator: function(range, expr, prefixOf)
- {
- if (!Css.hasClass(this.target, "cssPropValue"))
- return null;
-
- // For non-multi-valued properties, fail (pre-completions don't make sense,
- // and it's less risky).
- var row = Dom.getAncestorByClass(this.target, "cssProp");
- var propName = Dom.getChildByClass(row, "cssPropName").textContent;
- if (!Css.multiValuedProperties.hasOwnProperty(propName))
- return null;
-
- if (range.type === "fontFamily")
- return ",";
- return " ";
- },
-
- autoCompleteAdjustSelection: function(value, offset)
- {
- if (offset >= 2 && value.substr(offset-2, 2) === "()")
- return offset-1;
- return offset;
- },
-
- doIncrementValue: function(value, amt, offset, offsetEnd)
- {
- var propName = null;
- if (Css.hasClass(this.target, "cssPropValue"))
- {
- var propRow = Dom.getAncestorByClass(this.target, "cssProp");
- propName = Dom.getChildByClass(propRow, "cssPropName").textContent;
- }
-
- var range = CSSModule.parseCSSValue(value, offset);
- var type = (range && range.type) || "";
- var expr = (range ? value.substring(range.start, range.end) : "");
-
- var completion = null, selection, info;
- if (type === "int")
- {
- if (propName === "opacity")
- {
- info = {minValue: 0, maxValue: 1};
- amt /= 100;
- }
-
- if (expr === "0" && value.lastIndexOf("(", offset) === -1 &&
- !Css.unitlessProperties.hasOwnProperty(propName))
- {
- // 0 is a length, and incrementing it normally will result in an
- // invalid value 1 or -1. Thus, guess at a unit to add.
- var unitM = /\d([a-z]{1,4})/.exec(value);
- expr += (unitM ? unitM[1] : "px");
- }
-
- var newValue = this.incrementExpr(expr, amt, info);
- if (newValue !== null)
- {
- completion = newValue;
- selection = [0, completion.length];
- }
- }
- else if (type === "rgb" && expr.charAt(0) === "#")
- {
- var offsetIntoExpr = offset - range.start;
- var offsetEndIntoExpr = offsetEnd - range.start;
-
- // Increment a hex color.
- var res = this.incrementHexColor(expr, amt, offsetIntoExpr, offsetEndIntoExpr);
- if (res)
- {
- completion = res.value;
- selection = res.selection;
- }
- }
- else
- {
- if (type === "rgb" || type === "hsl")
- {
- info = {};
- var part = value.substring(range.start, offset).split(",").length - 1;
- if (part === 3) // alpha
- {
- info.minValue = 0;
- info.maxValue = 1;
- amt /= 100;
- }
- else if (type === "rgb") // rgb color
- {
- info.minValue = 0;
- info.maxValue = 255;
- if (Math.abs(amt) < 1)
- amt = (amt < 0 ? -1 : 1);
- }
- else if (part !== 0) // hsl percentage
- {
- info.minValue = 0;
- info.maxValue = 100;
-
- // If the selection is at the end of a percentage sign, select
- // the previous number. This would have been less hacky if
- // parseCSSValue parsed functions recursively.
- if (value.charAt(offset-1) === "%")
- --offset;
- }
- }
-
- return Firebug.InlineEditor.prototype.doIncrementValue
- .call(this, value, amt, offset, offsetEnd, info);
- }
-
- if (completion === null)
- return;
-
- var preExpr = value.substr(0, range.start);
- var postExpr = value.substr(range.end);
-
- return {
- value: preExpr + completion + postExpr,
- start: range.start + selection[0],
- end: range.start + selection[1]
- };
- },
-
- incrementHexColor: function(expr, amt, offset, offsetEnd)
- {
- // Return early if no part of the expression is selected.
- if (offsetEnd > expr.length && offset >= expr.length)
- return;
- if (offset < 1 && offsetEnd <= 1)
- return;
-
- // Ignore the leading #.
- expr = expr.substr(1);
- --offset;
- --offsetEnd;
-
- // Clamp the selection to within the actual value.
- offset = Math.max(offset, 0);
- offsetEnd = Math.min(offsetEnd, expr.length);
- offsetEnd = Math.max(offsetEnd, offset);
-
- // Normalize #ABC -> #AABBCC.
- if (expr.length === 3)
- {
- expr = expr.charAt(0) + expr.charAt(0) +
- expr.charAt(1) + expr.charAt(1) +
- expr.charAt(2) + expr.charAt(2);
- offset *= 2;
- offsetEnd *= 2;
- }
- if (expr.length !== 6)
- return;
-
- if (offset === offsetEnd)
- {
- // There is only a single cursor position. Increment an adjacent
- // color, preferably one to the left.
- if (offset === 0)
- offsetEnd = 1;
- else
- offset = offsetEnd - 1;
- }
-
- // Make the selection cover entire parts.
- offset -= offset%2;
- offsetEnd += offsetEnd%2;
-
- // Remap the increments from [0.1, 1, 10, 100] to [1, 1, 16, 64].
- if (-1 < amt && amt < 1)
- amt = (amt < 0 ? -1 : 1);
- if (Math.abs(amt) === 10)
- amt = (amt < 0 ? -16 : 16);
- if (Math.abs(amt) === 100)
- amt = (amt < 0 ? -64 : 64);
-
- var isUpper = (expr.toUpperCase() === expr);
-
- for (var pos = offset; pos < offsetEnd; pos += 2)
- {
- // Increment the part in [pos, pos+2).
- var mid = expr.substr(pos, 2);
- var value = parseInt(mid, 16);
- if (isNaN(value))
- return;
-
- mid = Math.min(Math.max(value - amt, 0), 255).toString(16);
- while (mid.length < 2)
- mid = "0" + mid;
-
- // Make the incremented part upper-case if the original value can be
- // seen as such (this should happen even for, say, #444444, because
- // upper-case hex-colors are the default). Otherwise, the lower-case
- // result from .toString is used.
- if (isUpper)
- mid = mid.toUpperCase();
-
- expr = expr.substr(0, pos) + mid + expr.substr(pos+2);
- }
-
- return {value: "#" + expr, selection: [offset+1, offsetEnd+1]};
- }
-});
-
-// ********************************************************************************************* //
-// CSSRuleEditor
-
-function CSSRuleEditor(doc)
-{
- this.initializeInline(doc);
-}
-
-CSSRuleEditor.prototype = domplate(SelectorEditor.prototype,
-{
- insertNewRow: function(target, insertWhere)
- {
- var emptyRule = {
- selector: "",
- id: "",
- props: [],
- isSelectorEditable: true
- };
-
- if (insertWhere == "before")
- return CSSStyleRuleTag.tag.insertBefore({rule: emptyRule}, target);
- else
- return CSSStyleRuleTag.tag.insertAfter({rule: emptyRule}, target);
- },
-
- saveEdit: function(target, value, previousValue)
- {
- var context = this.panel.context;
-
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("CSSRuleEditor.saveEdit: '" + value + "' '" + previousValue +
- "'", target);
-
- target.textContent = value;
- if (value === previousValue)
- return;
-
- var row = Dom.getAncestorByClass(target, "cssRule");
- var rule = Firebug.getRepObject(target);
-
- var searchRule = rule || Firebug.getRepObject(row.nextSibling);
- var oldRule, ruleIndex;
-
- if (searchRule)
- {
- // take care of media rules
- var styleSheet = searchRule.parentRule || searchRule.parentStyleSheet;
- if (!styleSheet)
- return;
-
- var cssRules = styleSheet.cssRules;
- for (ruleIndex=0; ruleIndex<cssRules.length && searchRule!=cssRules[ruleIndex];
- ruleIndex++)
- {
- }
-
- if (rule)
- oldRule = searchRule;
- else
- ruleIndex++;
- }
- else
- {
- var styleSheet;
- if (this.panel.name === "stylesheet")
- {
- styleSheet = this.panel.location;
- if (!styleSheet)
- {
- var doc = context.window.document;
- this.panel.location = styleSheet =
- CSSModule.getDefaultStyleSheet(doc);
- }
- }
- else
- {
- if (this.panel.name !== "css")
- return;
-
- var doc = this.panel.selection.ownerDocument.defaultView.document;
- styleSheet = CSSModule.getDefaultStyleSheet(doc);
- }
-
- styleSheet = styleSheet.editStyleSheet ? styleSheet.editStyleSheet.sheet : styleSheet;
- cssRules = styleSheet.cssRules;
- ruleIndex = cssRules.length;
- }
-
- // Delete in all cases except for new add
- // We want to do this before the insert to ease change tracking
- if (oldRule)
- {
- CSSModule.deleteRule(styleSheet, ruleIndex);
- }
-
- var doMarkChange = true;
-
- // Firefox does not follow the spec for the update selector text case.
- // When attempting to update the value, firefox will silently fail.
- // See https://bugzilla.mozilla.org/show_bug.cgi?id=37468 for the quite
- // old discussion of this bug.
- // As a result we need to recreate the style every time the selector
- // changes.
- if (value)
- {
- var cssText = [ value, "{" ];
- var props = row.getElementsByClassName("cssProp");
- for (var i = 0; i < props.length; i++)
- {
-
- var propEl = props[i];
- if (!Css.hasClass(propEl, "disabledStyle"))
- {
- var propName = Dom.getChildByClass(propEl, "cssPropName").textContent;
- var propValue = Dom.getChildByClass(propEl, "cssPropValue").textContent;
- cssText.push(propName + ":" + propValue + ";");
- }
- }
-
- cssText.push("}");
- cssText = cssText.join("");
-
- try
- {
- var insertLoc = CSSModule.insertRule(styleSheet, cssText, ruleIndex);
-
- rule = cssRules[insertLoc];
-
- ruleIndex++;
-
- var saveSuccess = (this.panel.name != "css");
- if (!saveSuccess)
- {
- saveSuccess = (this.panel.selection &&
- this.panel.selection.mozMatchesSelector(value)) ? true : 'almost';
- }
-
- this.box.setAttribute('saveSuccess', saveSuccess);
- }
- catch (err)
- {
- if (FBTrace.DBG_CSS || FBTrace.DBG_ERRORS)
- FBTrace.sysout("CSS Insert Error: "+err, err);
-
- target.textContent = previousValue;
- // create dummy rule to be able to recover from error
- var insertLoc = CSSModule.insertRule(styleSheet,
- 'selectorSavingError{}', ruleIndex);
- rule = cssRules[insertLoc];
-
- this.box.setAttribute('saveSuccess', false);
-
- doMarkChange = false;
- }
- }
- else
- {
- // XXX There is currently no way to re-add the rule after this happens.
- rule = undefined;
- }
-
- // Update the rep object
- row.repObject = rule;
- if (oldRule && rule)
- this.panel.remapRule(context, oldRule, rule);
-
- if (doMarkChange)
- this.panel.markChange(this.panel.name == "stylesheet");
- },
-
- getAutoCompleteRange: function(value, offset)
- {
- if (!Css.hasClass(this.target, "cssSelector"))
- return;
- return SelectorEditor.prototype.getAutoCompleteRange.apply(this, arguments);
- },
-
- getAutoCompleteList: function(preExpr, expr, postExpr, range, cycle, context, out)
- {
- if (!Css.hasClass(this.target, "cssSelector"))
- return [];
- return SelectorEditor.prototype.getAutoCompleteList.apply(this, arguments);
- },
-
- getAutoCompletePropSeparator: function(range, expr, prefixOf)
- {
- if (!Css.hasClass(this.target, "cssSelector"))
- return null;
- return SelectorEditor.prototype.getAutoCompletePropSeparator.apply(this, arguments);
- },
-
- advanceToNext: function(target, charCode)
- {
- if (charCode == 123 /* "{" */)
- {
- return true;
- }
- }
-});
-
-// ********************************************************************************************* //
-// StyleSheetEditor
-
-/**
- * StyleSheetEditor represents the full-sized editor used for Source/Live Edit
- * within the CSS panel.
- */
-function StyleSheetEditor(doc)
-{
- this.box = this.tag.replace({}, doc, this);
- this.input = this.box.firstChild;
-}
-
-StyleSheetEditor.prototype = domplate(Firebug.BaseEditor,
-{
- multiLine: true,
-
- tag: DIV(
- TEXTAREA({"class": "styleSheetEditor fullPanelEditor", oninput: "$onInput"})
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getValue: function()
- {
- return this.input.value;
- },
-
- setValue: function(value)
- {
- return this.input.value = value;
- },
-
- show: function(target, panel, value, textSize)
- {
- this.target = target;
- this.panel = panel;
-
- this.panel.panelNode.appendChild(this.box);
-
- this.input.value = value;
- this.input.focus();
-
- // match CSSModule.getEditorOptionKey
- var command = Firebug.chrome.$("cmd_firebug_togglecssEditMode");
- command.setAttribute("checked", true);
- },
-
- hide: function()
- {
- var command = Firebug.chrome.$("cmd_firebug_togglecssEditMode");
- command.setAttribute("checked", false);
-
- if (this.box.parentNode == this.panel.panelNode)
- this.panel.panelNode.removeChild(this.box);
-
- delete this.target;
- delete this.panel;
- delete this.styleSheet;
- },
-
- saveEdit: function(target, value, previousValue)
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("StyleSheetEditor.saveEdit", arguments);
-
- CSSModule.freeEdit(this.styleSheet, value);
- },
-
- beginEditing: function()
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("StyleSheetEditor.beginEditing", arguments);
-
- this.editing = true;
- },
-
- endEditing: function()
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("StyleSheetEditor.endEditing", arguments);
-
- this.editing = false;
- this.panel.refresh();
- return true;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onInput: function()
- {
- Firebug.Editor.update();
- },
-
- scrollToLine: function(line, offset)
- {
- this.startMeasuring(this.input);
- var lineHeight = this.measureText().height;
- this.stopMeasuring();
-
- this.input.scrollTop = (line * lineHeight) + offset;
- }
-});
-
-Firebug.StyleSheetEditor = StyleSheetEditor;
-
-// ********************************************************************************************* //
-
-Firebug.CSSDirtyListener = function(context)
-{
-};
-
-Firebug.CSSDirtyListener.isDirty = function(styleSheet, context)
-{
- return (styleSheet.fbDirty == true);
-};
-
-Firebug.CSSDirtyListener.prototype =
-{
- markSheetDirty: function(styleSheet)
- {
- if (!styleSheet && FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("css; CSSDirtyListener markSheetDirty; styleSheet == NULL");
- return;
- }
-
- styleSheet.fbDirty = true;
-
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("CSSDirtyListener markSheetDirty " + styleSheet.href, styleSheet);
- },
-
- onCSSInsertRule: function(styleSheet, cssText, ruleIndex)
- {
- this.markSheetDirty(styleSheet);
- },
-
- onCSSDeleteRule: function(styleSheet, ruleIndex)
- {
- this.markSheetDirty(styleSheet);
- },
-
- onCSSSetProperty: function(style, propName, propValue, propPriority, prevValue,
- prevPriority, rule, baseText)
- {
- var styleSheet = rule.parentStyleSheet;
- if (styleSheet)
- this.markSheetDirty(styleSheet);
- },
-
- onCSSRemoveProperty: function(style, propName, prevValue, prevPriority, rule, baseText)
- {
- var styleSheet = rule.parentStyleSheet;
- if (styleSheet)
- this.markSheetDirty(styleSheet);
- }
-};
-
-// ********************************************************************************************* //
-// Local Helpers
-
-function parsePriority(value)
-{
- var rePriority = /(.*?)\s*(!important)?$/;
- var m = rePriority.exec(value);
- var propValue = m ? m[1] : "";
- var priority = m && m[2] ? "important" : "";
- return {value: propValue, priority: priority};
-}
-
-function formatColor(color)
-{
- switch (Options.get("colorDisplay"))
- {
- case "hex":
- return Css.rgbToHex(color);
-
- case "hsl":
- return Css.rgbToHSL(color);
-
- case "rgb":
- return Css.colorNameToRGB(color);
-
- default:
- return color;
- }
-}
-
-function getRuleLine(rule)
-{
- // TODO return closest guess if rule isn't CSSStyleRule
- // and keep track of edited rule lines
- try
- {
- return Dom.domUtils.getRuleLine(rule);
- }
- catch (e) {}
- return 0;
-}
-
-function getOriginalStyleSheetCSS(sheet, context)
-{
- if (sheet.ownerNode instanceof window.HTMLStyleElement)
- {
- return sheet.ownerNode.textContent;
- }
- else
- {
- // In the case, that there are no rules, the cache will return a message
- // to reload the source (see issue 4251)
- return sheet.cssRules.length != 0 ? context.sourceCache.load(sheet.href).join("") : "";
- }
-}
-
-function getStyleSheetCSS(sheet, context)
-{
- function beautify(css, indent)
- {
- var indent='\n'+Array(indent+1).join(' ');
- var i=css.indexOf('{');
- var match=css.substr(i+1).match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g);
- match.pop();
- match.pop();
- return css.substring(0, i+1) + indent
- + match.sort().join(indent) + '\n}';
- }
-
- var cssRules = sheet.cssRules, css=[];
- for(var i = 0; i < cssRules.length; i++)
- {
- var rule = cssRules[i];
- if (rule instanceof window.CSSStyleRule)
- css.push(beautify(rule.cssText, 4));
- else
- css.push(rule.cssText);
- }
-
- return Css.rgbToHex(css.join('\n\n')) + '\n';
-}
-
-function scrollSelectionIntoView(panel)
-{
- var selCon = getSelectionController(panel);
- selCon.scrollSelectionIntoView(
- Ci.nsISelectionController.SELECTION_NORMAL,
- Ci.nsISelectionController.SELECTION_FOCUS_REGION, true);
-}
-
-function getSelectionController(panel)
-{
- var browser = Firebug.chrome.getPanelBrowser(panel);
- return browser.docShell.QueryInterface(Ci.nsIInterfaceRequestor)
- .getInterface(Ci.nsISelectionDisplay)
- .QueryInterface(Ci.nsISelectionController);
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(Firebug.CSSStyleSheetPanel);
-
-return Firebug.CSSStyleSheetPanel;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/chrome/reps",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/url",
+ "firebug/js/sourceLink",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/chrome/window",
+ "firebug/lib/search",
+ "firebug/lib/string",
+ "firebug/lib/array",
+ "firebug/lib/fonts",
+ "firebug/lib/xml",
+ "firebug/lib/persist",
+ "firebug/lib/system",
+ "firebug/chrome/menu",
+ "firebug/lib/options",
+ "firebug/css/cssModule",
+ "firebug/css/cssReps",
+ "firebug/css/selectorEditor",
+ "firebug/lib/trace",
+ "firebug/css/cssPanelUpdater",
+ "firebug/lib/wrapper",
+ "firebug/editor/editor",
+ "firebug/editor/editorSelector",
+ "firebug/chrome/searchBox",
+ "firebug/css/cssPanelMutationObserver",
+],
+function(Obj, Firebug, Domplate, FirebugReps, Locale, Events, Url, SourceLink, Css, Dom, Win,
+ Search, Str, Arr, Fonts, Xml, Persist, System, Menu, Options, CSSModule, CSSInfoTip,
+ SelectorEditor, FBTrace, CSSPanelUpdater, Wrapper) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+var CSSDomplateBase =
+{
+ isEditable: function(rule)
+ {
+ return !rule.isSystemSheet && !rule.isNotEditable;
+ },
+
+ isSelectorEditable: function(rule)
+ {
+ return rule.isSelectorEditable && this.isEditable(rule);
+ },
+
+ getPropertyValue: function(prop)
+ {
+ // Disabled, see http://code.google.com/p/fbug/issues/detail?id=5880
+ /*
+ var limit = Options.get("stringCropLength");
+ */
+ var limit = 0;
+ if (limit > 0)
+ return Str.cropString(prop.value, limit);
+ return prop.value;
+ }
+};
+
+var CSSPropTag = domplate(CSSDomplateBase,
+{
+ tag:
+ DIV({"class": "cssProp focusRow", $disabledStyle: "$prop.disabled",
+ $editGroup: "$rule|isEditable",
+ $cssOverridden: "$prop.overridden",
+ role: "option"},
+
+ // Use spaces for indent to make "copy to clipboard" nice.
+ SPAN({"class": "cssPropIndent"}, " "),
+ SPAN({"class": "cssPropName", $editable: "$rule|isEditable"},
+ "$prop.name"
+ ),
+
+ // Use a space here, so that "copy to clipboard" has it (issue 3266).
+ SPAN({"class": "cssColon"}, ": "),
+ SPAN({"class": "cssPropValue", $editable: "$rule|isEditable"},
+ "$prop|getPropertyValue$prop.important"
+ ),
+ SPAN({"class": "cssSemi"}, ";")
+ )
+});
+
+var CSSRuleTag =
+ TAG("$rule.tag", {rule: "$rule"});
+
+var CSSImportRuleTag = domplate(CSSDomplateBase,
+{
+ tag:
+ DIV({"class": "cssRule insertInto focusRow importRule", _repObject: "$rule.rule"},
+ "@import "",
+ A({"class": "objectLink", _repObject: "$rule.rule.styleSheet"}, "$rule.rule.href"),
+ """,
+ SPAN({"class": "separator"}, "$rule.rule|getSeparator"),
+ SPAN({"class": "cssMediaQuery", $editable: "$rule|isEditable"},
+ "$rule.rule.media.mediaText"),
+ ";"
+ ),
+
+ getSeparator: function(rule)
+ {
+ return rule.media.mediaText == "" ? "" : " ";
+ }
+});
+
+var CSSCharsetRuleTag = domplate(CSSDomplateBase,
+{
+ tag:
+ DIV({"class": "cssRule focusRow cssCharsetRule", _repObject: "$rule.rule"},
+ SPAN({"class": "cssRuleName"}, "@charset"),
+ " "",
+ SPAN({"class": "cssRuleValue", $editable: "$rule|isEditable"}, "$rule.rule.encoding"),
+ "";"
+ )
+});
+
+var CSSMediaRuleTag = domplate(CSSDomplateBase,
+{
+ tag:
+ DIV({"class": "cssRule focusRow cssMediaRule", _repObject: "$rule.rule"},
+ DIV({"class": "cssHead focusRow", role : "listitem"},
+ SPAN({"class": "cssRuleName"}, "@media"),
+ SPAN({"class": "separator"}, " "),
+ SPAN({"class": "cssMediaRuleCondition", $editable: "$rule|isEditable"},
+ "$rule.rule.conditionText"),
+ SPAN(" {")
+ ),
+ DIV({"class": "cssRulesListBox", role: "listbox"},
+ FOR("subRule", "$rule.subRules",
+ TAG("$subRule.tag", {rule: "$subRule"})
+ )
+ ),
+ DIV({$editable: "$rule|isEditable", $insertBefore:"$rule|isEditable",
+ role:"presentation"},
+ "}")
+ )
+});
+
+var CSSSupportsRuleTag = domplate(CSSDomplateBase,
+{
+ tag:
+ DIV({"class": "cssRule focusRow cssSupportsRule", _repObject: "$rule.rule"},
+ DIV({"class": "cssHead focusRow", role : "listitem"},
+ SPAN({"class": "cssRuleName"}, "@supports"),
+ SPAN({"class": "separator"}, " "),
+ SPAN({"class": "cssSupportsRuleCondition", $editable: "$rule|isEditable"},
+ "$rule.rule.conditionText"),
+ SPAN(" {")
+ ),
+ DIV({"class": "cssRulesListBox", role: "listbox"},
+ FOR("subRule", "$rule.subRules",
+ TAG("$subRule.tag", {rule: "$subRule"})
+ )
+ ),
+ DIV({$editable: "$rule|isEditable", $insertBefore:"$rule|isEditable",
+ role:"presentation"},
+ "}")
+ )
+});
+
+var CSSKeyframesRuleTag = domplate(CSSDomplateBase,
+{
+ tag:
+ DIV({"class": "cssRule focusRow cssKeyframesRule", _repObject: "$rule.rule"},
+ DIV({"class": "cssHead focusRow", role : "listitem"},
+ SPAN({"class": "cssRuleName"}, "@-moz-keyframes"),
+ SPAN({"class": "separator"}, " "),
+ SPAN({"class": "cssKeyframesRuleName", $editable: "$rule|isEditable"},
+ "$rule.rule.name"),
+ SPAN(" {")
+ ),
+ DIV({"class": "cssRulesListBox", role: "listbox"},
+ FOR("subRule", "$rule.subRules",
+ TAG("$subRule.tag", {rule: "$subRule"})
+ )
+ ),
+ DIV({role:"presentation"},
+ "}")
+ )
+});
+
+var CSSKeyframeRuleTag = domplate(CSSDomplateBase,
+{
+ tag:
+ DIV({"class": "cssRule",
+ $cssEditableRule: "$rule|isEditable",
+ $insertInto: "$rule|isEditable",
+ $editGroup: "$rule|isSelectorEditable",
+ _repObject: "$rule.rule",
+ role: "presentation"},
+ DIV({"class": "cssHead focusRow", role: "listitem"},
+ SPAN({"class": "cssKeyText", $editable: "$rule|isEditable"},
+ "$rule.rule.keyText"),
+ " {"
+ ),
+ DIV({role: "group"},
+ DIV({"class": "cssPropertyListBox", _rule: "$rule", role: "listbox"},
+ FOR("prop", "$rule.props",
+ TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"})
+ )
+ )
+ ),
+ DIV({$editable: "$rule|isEditable", $insertBefore: "$rule|isEditable",
+ role:"presentation"},
+ "}"
+ )
+ )
+});
+
+var CSSNamespaceRuleTag = domplate(CSSDomplateBase,
+{
+ tag:
+ DIV({"class": "cssRule focusRow cssNamespaceRule", _repObject: "$rule.rule"},
+ SPAN({"class": "cssRuleName"}, "@namespace"),
+ SPAN({"class": "separator"}, "$rule.prefix|getSeparator"),
+ SPAN({"class": "cssNamespacePrefix", $editable: "$rule|isEditable"}, "$rule.prefix"),
+ " "",
+ SPAN({"class": "cssNamespaceName", $editable: "$rule|isEditable"}, "$rule.name"),
+ "";"
+ ),
+
+ getSeparator: function(prefix)
+ {
+ return prefix == "" ? "" : " ";
+ }
+});
+
+var CSSFontFaceRuleTag = domplate(CSSDomplateBase,
+{
+ tag:
+ DIV({"class": "cssRule cssFontFaceRule",
+ $cssEditableRule: "$rule|isEditable",
+ $insertInto: "$rule|isEditable",
+ _repObject: "$rule.rule",
+ role : 'presentation'},
+ DIV({"class": "cssHead focusRow", role : "listitem"}, "@font-face {"),
+ DIV({role : "group"},
+ DIV({"class": "cssPropertyListBox", role: "listbox"},
+ FOR("prop", "$rule.props",
+ TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"})
+ )
+ )
+ ),
+ DIV({$editable: "$rule|isEditable", $insertBefore:"$rule|isEditable",
+ role:"presentation"},
+ "}"
+ )
+ )
+});
+
+var CSSPageRuleTag = domplate(CSSDomplateBase,
+{
+ tag:
+ DIV({"class": "cssRule focusRow cssPageRule", _repObject: "$rule.rule"},
+ DIV({"class": "cssHead focusRow", role : "listitem"},
+ SPAN({"class": "cssRuleName"}, "@page"),
+ SPAN({"class": "separator"}, "$rule.selectorText|getSeparator"),
+ SPAN({"class": "cssPageRuleSelector", $editable: "$rule|isEditable"},
+ "$rule.selectorText|getSelectorText"),
+ SPAN(" {")
+ ),
+ DIV({role : "group"},
+ DIV({"class": "cssPropertyListBox", role: "listbox"},
+ FOR("prop", "$rule.props",
+ TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"})
+ )
+ )
+ ),
+ DIV({$editable: "$rule|isEditable", $insertBefore:"$rule|isEditable",
+ role:"presentation"},
+ "}")
+ ),
+
+ getSeparator: function(selector)
+ {
+ return (!selector || selector == "") ? "" : " ";
+ },
+
+ getSelectorText: function(selector)
+ {
+ return selector || "";
+ }
+});
+
+var CSSDocumentRuleTag = domplate(CSSDomplateBase,
+{
+ tag:
+ DIV({"class": "cssRule focusRow cssDocumentRule", _repObject: "$rule.rule"},
+ DIV({"class": "cssHead focusRow", role : "listitem"},
+ SPAN({"class": "cssRuleName"}, "@-moz-document"),
+ SPAN({"class": "separator"}, " "),
+ SPAN({"class": "cssDocumentRuleCondition", $editable: "$rule|isEditable"},
+ "$rule.rule.conditionText"),
+ SPAN(" {")
+ ),
+ DIV({"class": "cssRulesListBox", role: "listbox"},
+ FOR("subRule", "$rule.subRules",
+ TAG("$subRule.tag", {rule: "$subRule"})
+ )
+ ),
+ DIV({$editable: "$rule|isEditable", $insertBefore:"$rule|isEditable",
+ role:"presentation"},
+ "}")
+ )
+});
+
+var CSSStyleRuleTag = domplate(CSSDomplateBase,
+{
+ tag:
+ DIV({"class": "cssRule",
+ $cssEditableRule: "$rule|isEditable",
+ $insertInto: "$rule|isEditable",
+ $editGroup: "$rule|isSelectorEditable",
+ _repObject: "$rule.rule",
+ role: "presentation"},
+ DIV({"class": "cssHead focusRow", role: "listitem"},
+ SPAN({"class": "cssSelector", $editable: "$rule|isSelectorEditable"},
+ "$rule.selector"),
+ " {"
+ ),
+ DIV({role: "group"},
+ DIV({"class": "cssPropertyListBox", _rule: "$rule", role: "listbox"},
+ FOR("prop", "$rule.props",
+ TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"})
+ )
+ )
+ ),
+ DIV({$editable: "$rule|isEditable", $insertBefore: "$rule|isEditable",
+ role:"presentation"},
+ "}"
+ )
+ )
+});
+
+Firebug.CSSStyleRuleTag = CSSStyleRuleTag;
+
+// ********************************************************************************************* //
+
+const reSplitCSS = /(url\("?[^"\)]+?"?\))|(rgba?\([^)]*\)?)|(hsla?\([^)]*\)?)|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,4})?)|"([^"]*)"?|'([^']*)'?|([^,\s\/!\(\)]+)|(!(.*)?)/;
+const reURL = /url\("?([^"\)]+)?"?\)/;
+const reRepeat = /no-repeat|repeat-x|repeat-y|repeat/;
+
+// ********************************************************************************************* //
+// CSSStyleSheetPanel (CSS Panel)
+
+/**
+ * @panel Represents the CSS panel available in main Firebug UI. This panel is responsible
+ * for displaying CSS rules coming from the current page.
+ * See more: https://getfirebug.com/wiki/index.php/CSS_Panel
+ */
+Firebug.CSSStyleSheetPanel = function() {};
+Firebug.CSSStyleSheetPanel.prototype = Obj.extend(Firebug.Panel,
+/** @lends Firebug.CSSStyleSheetPanel */
+{
+ name: "stylesheet",
+ parentPanel: null,
+ searchable: true,
+ dependents: ["css", "stylesheet", "dom", "domSide", "layout"],
+ enableA11y: true,
+ deriveA11yFrom: "css",
+ order: 30,
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ template: domplate(
+ {
+ tag:
+ DIV({"class": "cssSheet insertInto a11yCSSView"},
+ FOR("rule", "$rules",
+ CSSRuleTag
+ ),
+ DIV({"class": "cssSheet editable insertBefore"}, ""
+ )
+ )
+ }),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Initialization
+
+ initialize: function()
+ {
+ this.onMouseDown = Obj.bind(this.onMouseDown, this);
+ this.onMouseUp = Obj.bind(this.onMouseUp, this);
+ this.onClick = Obj.bind(this.onClick, this);
+
+ Firebug.Panel.initialize.apply(this, arguments);
+
+ // Create an updater for asynchronous update (watching embedded iframe loads).
+ var callback = this.updateDefaultLocation.bind(this);
+ this.updater = new CSSPanelUpdater(this.context, callback);
+ },
+
+ destroy: function(state)
+ {
+ state.scrollTop = this.panelNode.scrollTop ? this.panelNode.scrollTop : this.lastScrollTop;
+
+ Persist.persistObjects(this, state);
+
+ this.stopEditing();
+
+ if (this.updater)
+ this.updater.destroy();
+
+ Firebug.Panel.destroy.apply(this, arguments);
+ },
+
+ initializeNode: function(oldPanelNode)
+ {
+ Events.addEventListener(this.panelNode, "mousedown", this.onMouseDown, false);
+ Events.addEventListener(this.panelNode, "mouseup", this.onMouseUp, false);
+ Events.addEventListener(this.panelNode, "click", this.onClick, false);
+
+ Firebug.Panel.initializeNode.apply(this, arguments);
+ },
+
+ destroyNode: function()
+ {
+ Events.removeEventListener(this.panelNode, "mousedown", this.onMouseDown, false);
+ Events.removeEventListener(this.panelNode, "mouseup", this.onMouseUp, false);
+ Events.removeEventListener(this.panelNode, "click", this.onClick, false);
+
+ Firebug.Panel.destroyNode.apply(this, arguments);
+ },
+
+ show: function(state)
+ {
+ Firebug.Inspector.stopInspecting(true);
+
+ this.showToolbarButtons("fbCSSButtons", true);
+ this.showToolbarButtons("fbLocationSeparator", true);
+ this.showToolbarButtons("fbLocationButtons", true);
+ this.showToolbarButtons("fbLocationList", true);
+
+ CSSModule.updateEditButton();
+
+ // wait for loadedContext to restore the panel
+ if (this.context.loaded && !this.location)
+ {
+ Persist.restoreObjects(this, state);
+
+ if (!this.location)
+ this.location = this.getDefaultLocation();
+
+ if (state && state.scrollTop)
+ this.panelNode.scrollTop = state.scrollTop;
+ }
+
+ // Solves the problem when the current stylesheet (i.e. the current panel location)
+ // has been removed from the page (or the parent window/iframe has been removed).
+ // In such case we need to update the panel content.
+ if (!this.isValidStyleSheet(this.location))
+ this.navigate(null);
+ },
+
+ hide: function()
+ {
+ this.lastScrollTop = this.panelNode.scrollTop;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ isValidStyleSheet: function(styleSheet)
+ {
+ if (!styleSheet)
+ return false;
+
+ if (Wrapper.isDeadWrapper(styleSheet))
+ return false;
+
+ if (!styleSheet.ownerNode)
+ return false;
+
+ return true;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // TabWatcher
+
+ unwatchWindow: function(context, win)
+ {
+ // The update happens only if the CSS panel is selected. If the current location
+ // style sheet is removed while the panel is not selected, the content will be
+ // updated when 'show' method is executed by the framework.
+ var panel = Firebug.chrome.getSelectedPanel();
+ if (!panel || panel.name != "stylesheet")
+ return;
+
+ // We need to check whether the current location (a stylesheet) has been
+ // unloaded together with the window.
+ if (this.location)
+ {
+ var ownerNode = this.location.ownerNode;
+ var styleSheetDoc = ownerNode ? ownerNode.ownerDocument : null;
+ if (styleSheetDoc == win.document)
+ {
+ this.location = null;
+ this.updateDefaultLocation();
+ }
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Default Location Update
+
+ /**
+ * Executed automatically by {@CSSPanelUpdater} object that is watching window/iframe load.
+ */
+ updateDefaultLocation: function()
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("cssPanel.updateDefaultLocation; " + this.location, this.location);
+
+ // Try to update the default location if it doesn't exist yet.
+ if (!this.location)
+ {
+ var defaultLocation = this.getDefaultLocation();
+
+ // Still no default location so, keep the updater running.
+ if (!defaultLocation)
+ return;
+
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("cssPanel.updateDefaultLocation; DONE", defaultLocation);
+
+ // Use navigate so, the location button visibility is properly updated.
+ this.navigate(defaultLocation);
+ }
+ else
+ {
+ // The location is set so just make sure to update the content.
+ this.updateLocation(this.location);
+ }
+
+ if (this.updater)
+ {
+ // Default location exists so destroy the updater.
+ this.updater.destroy();
+ this.updater = null;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ refresh: function()
+ {
+ if (this.location)
+ this.updateLocation(this.location);
+ else if (this.selection)
+ this.updateSelection(this.selection);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // CSS Editing
+
+ startBuiltInEditing: function(css)
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("CSSStyleSheetPanel.startBuiltInEditing", css);
+
+ if (!this.stylesheetEditor)
+ this.stylesheetEditor = new StyleSheetEditor(this.document);
+
+ var styleSheet = this.location.editStyleSheet
+ ? this.location.editStyleSheet.sheet
+ : this.location;
+
+ this.stylesheetEditor.styleSheet = this.location;
+ Firebug.Editor.startEditing(this.panelNode, css, this.stylesheetEditor);
+
+ //this.stylesheetEditor.scrollToLine(topmost.line, topmost.offset);
+ this.stylesheetEditor.input.scrollTop = this.panelNode.scrollTop;
+ },
+
+ startLiveEditing: function(styleSheet, context)
+ {
+ var css = getStyleSheetCSS(styleSheet, context);
+ this.startBuiltInEditing(css);
+ },
+
+ startSourceEditing: function(styleSheet, context)
+ {
+ if (Firebug.CSSDirtyListener.isDirty(styleSheet, context))
+ {
+ var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"].
+ getService(Ci.nsIPromptService);
+
+ var proceedToEdit = prompts.confirm(null, Locale.$STR("Firebug"),
+ Locale.$STR("confirmation.Edit_CSS_Source"));
+
+ if (!proceedToEdit)
+ {
+ this.stopEditing();
+ return;
+ }
+ }
+
+ var css = getOriginalStyleSheetCSS(styleSheet, context);
+ this.startBuiltInEditing(css);
+ },
+
+ stopEditing: function()
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("CSSStyleSheetPanel.stopEditing");
+
+ if (this.currentCSSEditor)
+ {
+ this.currentCSSEditor.stopEditing();
+ delete this.currentCSSEditor;
+ }
+ else
+ {
+ Firebug.Editor.stopEditing();
+ }
+ },
+
+ toggleEditing: function()
+ {
+ if (this.editing)
+ {
+ this.stopEditing();
+ Events.dispatch(this.fbListeners, "onStopCSSEditing", [this.context]);
+ }
+ else
+ {
+ if (!this.location)
+ return;
+
+ var styleSheet = this.location.editStyleSheet
+ ? this.location.editStyleSheet.sheet
+ : this.location;
+
+ this.currentCSSEditor = CSSModule.getCurrentEditor();
+ try
+ {
+ this.currentCSSEditor.startEditing(styleSheet, this.context, this);
+ Events.dispatch(this.fbListeners, "onStartCSSEditing", [styleSheet, this.context]);
+ }
+ catch(exc)
+ {
+ var mode = CSSModule.getCurrentEditorName();
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("editor.startEditing ERROR "+exc, {exc: exc, name: mode,
+ currentEditor: this.currentCSSEditor, styleSheet: styleSheet,
+ CSSModule: CSSModule});
+ }
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ loadOriginalSource: function()
+ {
+ if (!this.location)
+ return;
+
+ var styleSheet = this.location;
+
+ var css = getOriginalStyleSheetCSS(styleSheet, this.context);
+
+ this.stylesheetEditor.setValue(css);
+ this.stylesheetEditor.saveEdit(null, css);
+ //styleSheet.editStyleSheet.showUnformated = true;
+ },
+
+ getStylesheetURL: function(rule, getBaseUri)
+ {
+ if (this.location.href)
+ return this.location.href;
+ else if (getBaseUri)
+ return this.context.window.document.baseURI;
+ else
+ return this.context.window.location.href;
+ },
+
+ getRuleByLine: function(styleSheet, line)
+ {
+ if (!Dom.domUtils)
+ return null;
+
+ var cssRules = styleSheet.cssRules;
+ for (var i = 0; i < cssRules.length; ++i)
+ {
+ var rule = cssRules[i];
+ var previousRule;
+ if (rule instanceof window.CSSStyleRule)
+ {
+ var selectorLine = Dom.domUtils.getRuleLine(rule);
+ // The declarations are on lines equal or greater than the selectorLine
+ if (selectorLine === line) // then the line requested is a selector line
+ return rule;
+ if (selectorLine > line) // then we passed the rule for the requested line
+ return previousRule;
+ // else the requested line is still ahead
+ previousRule = rule;
+ }
+ }
+ },
+
+ highlightRule: function(rule)
+ {
+ var ruleElement = Firebug.getElementByRepObject(this.panelNode.firstChild, rule);
+ if (ruleElement)
+ {
+ Dom.scrollIntoCenterView(ruleElement, this.panelNode);
+ Css.setClassTimed(ruleElement, "jumpHighlight", this.context);
+ }
+ },
+
+ getStyleSheetRules: function(context, styleSheet)
+ {
+ if (!styleSheet)
+ return [];
+
+ var isSystemSheet = Url.isSystemStyleSheet(styleSheet);
+
+ var createRules = function(cssRules)
+ {
+ var i;
+ var props;
+ var rules = [];
+
+ if (!cssRules)
+ return;
+
+ for (i=0; i<cssRules.length; ++i)
+ {
+ var rule = cssRules[i];
+ if (rule instanceof window.CSSStyleRule)
+ {
+ props = this.getRuleProperties(context, rule);
+ rules.push({
+ tag: CSSStyleRuleTag.tag,
+ rule: rule,
+ selector: rule.selectorText.replace(/ :/g, " *:"), // (issue 3683)
+ props: props,
+ isSystemSheet: isSystemSheet,
+ isSelectorEditable: true
+ });
+ }
+ else if (window.CSSSupportsRule && rule instanceof window.CSSSupportsRule)
+ {
+ rules.push({
+ tag: CSSSupportsRuleTag.tag,
+ rule: rule,
+ subRules: createRules(Css.safeGetCSSRules(rule)),
+ isSystemSheet: isSystemSheet
+ });
+ }
+ else if (rule instanceof window.CSSImportRule)
+ {
+ rules.push({tag: CSSImportRuleTag.tag, rule: rule});
+ }
+ else if (rule instanceof window.CSSCharsetRule)
+ {
+ rules.push({tag: CSSCharsetRuleTag.tag, rule: rule});
+ }
+ else if (rule instanceof window.CSSMediaRule)
+ {
+ rules.push({
+ tag: CSSMediaRuleTag.tag,
+ rule: rule,
+ subRules: createRules(Css.safeGetCSSRules(rule)),
+ isSystemSheet: isSystemSheet
+ });
+ }
+ else if (rule instanceof window.CSSMozDocumentRule)
+ {
+ rules.push({
+ tag: CSSDocumentRuleTag.tag,
+ rule: rule,
+ subRules: createRules(Css.safeGetCSSRules(rule)),
+ isSystemSheet: isSystemSheet
+ });
+ }
+ else if (rule instanceof window.CSSFontFaceRule)
+ {
+ props = this.parseCSSProps(rule.style);
+ this.sortProperties(props);
+ rules.push({
+ tag: CSSFontFaceRuleTag.tag,
+ rule: rule,
+ props: props,
+ isSystemSheet: isSystemSheet,
+ isNotEditable: true
+ });
+ }
+ else if (window.CSSPageRule && rule instanceof window.CSSPageRule)
+ {
+ props = this.parseCSSProps(rule.style);
+ this.sortProperties(props);
+ rules.push({
+ tag: CSSPageRuleTag.tag,
+ rule: rule,
+ props: props,
+ isSystemSheet: isSystemSheet,
+ isNotEditable: true
+ });
+ }
+ else if ((window.CSSKeyframesRule && rule instanceof window.CSSKeyframesRule) ||
+ rule instanceof window.MozCSSKeyframesRule)
+ {
+ rules.push({
+ tag: CSSKeyframesRuleTag.tag,
+ rule: rule,
+ subRules: createRules(Css.safeGetCSSRules(rule)),
+ isSystemSheet: isSystemSheet
+ });
+ }
+ else if ((window.CSSKeyframeRule && rule instanceof window.CSSKeyframeRule) ||
+ rule instanceof window.MozCSSKeyframeRule)
+ {
+ props = this.parseCSSProps(rule.style);
+ this.sortProperties(props);
+ rules.push({
+ tag: CSSKeyframeRuleTag.tag,
+ rule: rule,
+ props: props,
+ isSystemSheet: isSystemSheet
+ });
+ }
+ else if (rule instanceof window.CSSNameSpaceRule)
+ {
+ // Workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=754772
+ // MozCSSKeyframesRules, MozCSSKeyframeRules and CSSPageRules are recognized
+ // as CSSNameSpaceRules, so explicitly check whether the rule is not a
+ // MozCSSKeyframesRule, a MozCSSKeyframeRule or a CSSPageRule
+
+ var reNamespace = /^@namespace ((.+) )?url\("(.*?)"\);$/;
+ var namespace = rule.cssText.match(reNamespace);
+ var prefix = namespace[2] || "";
+ var name = namespace[3];
+ rules.push({tag: CSSNamespaceRuleTag.tag, rule: rule, prefix: prefix,
+ name: name, isNotEditable: true});
+ }
+ else
+ {
+ if (FBTrace.DBG_ERRORS && FBTrace.DBG_CSS)
+ FBTrace.sysout("css getStyleSheetRules failed to classify a rule ", rule);
+ }
+ }
+
+ return rules;
+ }.bind(this);
+
+ return createRules(Css.safeGetCSSRules(styleSheet));
+ },
+
+ parseCSSProps: function(style, inheritMode)
+ {
+ var m;
+ var props = [];
+
+ if (Firebug.expandShorthandProps)
+ {
+ var count = style.length-1;
+ var index = style.length;
+
+ while (index--)
+ {
+ var propName = style.item(count - index);
+ this.addProperty(propName, style.getPropertyValue(propName),
+ !!style.getPropertyPriority(propName), false, inheritMode, props);
+ }
+ }
+ else
+ {
+ var lines = style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g);
+ var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/;
+ var line;
+ var i=0;
+ while(line = lines[i++])
+ {
+ m = propRE.exec(line);
+ if(!m)
+ continue;
+
+ //var name = m[1], value = m[2], important = !!m[3];
+ if (m[2])
+ this.addProperty(m[1], m[2], !!m[3], false, inheritMode, props);
+ }
+ }
+
+ return props;
+ },
+
+ sortProperties: function(props)
+ {
+ props.sort(function(a, b)
+ {
+ return a.name > b.name ? 1 : -1;
+ });
+ },
+
+ getRuleProperties: function(context, rule, inheritMode)
+ {
+ var props = this.parseCSSProps(rule.style, inheritMode);
+
+ this.addDisabledProperties(context, rule, inheritMode, props);
+ this.sortProperties(props);
+
+ return props;
+ },
+
+ addDisabledProperties: function(context, rule, inheritMode, props)
+ {
+ var disabledMap = this.getDisabledMap(context);
+ var moreProps = disabledMap.get(rule);
+ if (moreProps)
+ {
+ var propMap = {};
+ for (var i = 0; i < props.length; ++i)
+ propMap[props[i].name] = true;
+
+ for (var i = 0; i < moreProps.length; ++i)
+ {
+ var prop = moreProps[i];
+ if (propMap.hasOwnProperty(prop.name))
+ {
+ // A (probably enabled) property with the same name as this
+ // disabled one has appeared - remove this one entirely.
+ moreProps.splice(i, 1);
+ --i;
+ continue;
+ }
+ propMap[prop.name] = true;
+ this.addProperty(prop.name, prop.value, prop.important, true, inheritMode, props);
+ }
+ }
+ },
+
+ addProperty: function(name, value, important, disabled, inheritMode, props)
+ {
+ if (inheritMode && !Dom.domUtils.isInheritedProperty(name))
+ return;
+
+ name = this.translateName(name, value);
+ if (name)
+ {
+ value = Css.stripUnits(formatColor(value));
+ important = important ? " !important" : "";
+
+ var prop = {name: name, value: value, important: important, disabled: disabled};
+ props.push(prop);
+ }
+ },
+
+ translateName: function(name, value)
+ {
+ // Don't show these proprietary Mozilla properties
+ if ((value == "-moz-initial"
+ && (name == "-moz-background-clip" || name == "-moz-background-origin"
+ || name == "-moz-background-inline-policy"))
+ || (value == "physical"
+ && (name == "margin-left-ltr-source" || name == "margin-left-rtl-source"
+ || name == "margin-right-ltr-source" || name == "margin-right-rtl-source"))
+ || (value == "physical"
+ && (name == "padding-left-ltr-source" || name == "padding-left-rtl-source"
+ || name == "padding-right-ltr-source" || name == "padding-right-rtl-source")))
+ return null;
+
+ // Translate these back to the form the user probably expects
+ if (name == "margin-left-value")
+ return "margin-left";
+ else if (name == "margin-right-value")
+ return "margin-right";
+ else if (name == "margin-top-value")
+ return "margin-top";
+ else if (name == "margin-bottom-value")
+ return "margin-bottom";
+ else if (name == "padding-left-value")
+ return "padding-left";
+ else if (name == "padding-right-value")
+ return "padding-right";
+ else if (name == "padding-top-value")
+ return "padding-top";
+ else if (name == "padding-bottom-value")
+ return "padding-bottom";
+ // XXXjoe What about border!
+ else
+ return name;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getDisabledMap: function(context)
+ {
+ // Ideally, we'd use a WeakMap here, but WeakMaps don't allow CSS rules
+ // as keys before Firefox 17. A Map is used instead. (cf. bug 777373.)
+ if (!context.cssDisabledMap)
+ context.cssDisabledMap = new Map();
+ return context.cssDisabledMap;
+ },
+
+ remapRule: function(context, oldRule, newRule)
+ {
+ var map = this.getDisabledMap(context);
+ if (map.has(oldRule))
+ map.set(newRule, map.get(oldRule));
+ },
+
+ editElementStyle: function()
+ {
+ var rulesBox = this.panelNode.getElementsByClassName("cssElementRuleContainer")[0];
+ var styleRuleBox = rulesBox && Firebug.getElementByRepObject(rulesBox, this.selection);
+ if (!styleRuleBox)
+ {
+ var rule = {
+ rule: this.selection,
+ inherited: false,
+ selector: "element.style",
+ props: []
+ };
+
+ if (!rulesBox)
+ {
+ // The element did not have any displayed styles. We need to create the
+ // whole tree and remove the no styles message
+ styleRuleBox = this.template.cascadedTag.replace({
+ rules: [rule], inherited: [], inheritLabel: Locale.$STR("InheritedFrom")
+ }, this.panelNode);
+
+ styleRuleBox = styleRuleBox.getElementsByClassName("cssElementRuleContainer")[0];
+ }
+ else
+ {
+ styleRuleBox = this.template.ruleTag.insertBefore({rule: rule}, rulesBox);
+ }
+
+ styleRuleBox = styleRuleBox.getElementsByClassName("insertInto")[0];
+ }
+
+ Firebug.Editor.insertRowForObject(styleRuleBox);
+ },
+
+ addRelatedRule: function()
+ {
+ if (!this.panelNode.getElementsByClassName("cssElementRuleContainer")[0])
+ {
+ // The element did not have any displayed styles - create the whole
+ // tree and remove the no styles message.
+ this.template.cascadedTag.replace({
+ rules: [], inherited: [],
+ inheritLabel: Locale.$STR("InheritedFrom")
+ }, this.panelNode);
+ }
+
+ // Insert the new rule at the top, or after the style rules if there
+ // are any.
+ var container = this.panelNode.getElementsByClassName("cssNonInherited")[0];
+ var ruleBox = container.getElementsByClassName("cssElementRuleContainer")[0];
+ var styleRuleBox = ruleBox && Firebug.getElementByRepObject(ruleBox, this.selection);
+ if (styleRuleBox)
+ ruleBox = this.template.newRuleTag.insertAfter({}, ruleBox);
+ else if (ruleBox)
+ ruleBox = this.template.newRuleTag.insertBefore({}, ruleBox);
+ else
+ ruleBox = this.template.newRuleTag.append({}, container);
+
+ var before = ruleBox.getElementsByClassName("insertBefore")[0];
+ Firebug.Editor.insertRow(before, "before");
+
+ // Auto-fill the selector field with something reasonable, like
+ // ".some-class" or "#table td".
+ var el = this.selection, doc = el.ownerDocument;
+ var base = Xml.getNodeName(el), autofill;
+ if (el.className)
+ {
+ autofill = "." + Arr.cloneArray(el.classList).join(".");
+ }
+ else
+ {
+ var level = 0;
+ el = el.parentNode;
+ while (!autofill && el !== doc)
+ {
+ ++level;
+ if (el.id !== "")
+ autofill = "#" + el.id;
+ else if (el.className !== "")
+ autofill = "." + Arr.cloneArray(el.classList).join(".");
+ el = el.parentNode;
+ }
+ if (autofill)
+ {
+ if (level === 1)
+ autofill += " >";
+ autofill += " " + base;
+ }
+ }
+
+ if (!autofill ||
+ doc.querySelectorAll(autofill).length === doc.querySelectorAll(base).length)
+ {
+ autofill = base;
+ }
+
+ this.ruleEditor.setValue(autofill);
+ this.ruleEditor.input.select();
+ Firebug.Editor.update(true);
+ },
+
+ editMediaQuery: function(target)
+ {
+ var row = Dom.getAncestorByClass(target, "cssRule");
+ var mediaQueryBox = Dom.getChildByClass(row, "cssMediaQuery");
+ Firebug.Editor.startEditing(mediaQueryBox);
+ },
+
+ insertPropertyRow: function(row)
+ {
+ Firebug.Editor.insertRowForObject(row);
+ },
+
+ insertRule: function(row)
+ {
+ var location = Dom.getAncestorByClass(row, "cssRule");
+ if (!location)
+ {
+ location = Dom.getChildByClass(this.panelNode, "cssSheet");
+
+ // Stylesheet has no rules
+ if (!location)
+ this.template.tag.replace({rules: []}, this.panelNode);
+
+ location = Dom.getChildByClass(this.panelNode, "cssSheet");
+ Firebug.Editor.insertRowForObject(location);
+ }
+ else
+ {
+ Firebug.Editor.insertRow(location, "before");
+ }
+ },
+
+ editPropertyRow: function(row)
+ {
+ var propValueBox = Dom.getChildByClass(row, "cssPropValue");
+ Firebug.Editor.startEditing(propValueBox);
+ },
+
+ deletePropertyRow: function(row)
+ {
+ var rule = Firebug.getRepObject(row);
+ var propName = Dom.getChildByClass(row, "cssPropName").textContent;
+
+ // Try removing the property from the "disabled" map.
+ var wasDisabled = this.removeDisabledProperty(rule, propName);
+
+ // If that fails, remove the actual property instead.
+ if (!wasDisabled)
+ CSSModule.deleteProperty(rule, propName, this.context);
+
+ if (this.name == "stylesheet")
+ Events.dispatch(this.fbListeners, "onInlineEditorClose", [this, row.firstChild, true]);
+
+ row.parentNode.removeChild(row);
+
+ this.markChange(this.name == "stylesheet");
+ },
+
+ removeDisabledProperty: function(rule, propName)
+ {
+ var disabledMap = this.getDisabledMap(this.context);
+ var map = disabledMap.get(rule);
+ if (!map)
+ return false;
+ for (var i = 0; i < map.length; ++i)
+ {
+ if (map[i].name === propName)
+ {
+ map.splice(i, 1);
+ return true;
+ }
+ }
+ return false;
+ },
+
+ disablePropertyRow: function(row)
+ {
+ Css.toggleClass(row, "disabledStyle");
+
+ var rule = Firebug.getRepObject(row);
+ var propName = Dom.getChildByClass(row, "cssPropName").textContent;
+
+ var disabledMap = this.getDisabledMap(this.context);
+ if (!disabledMap.has(rule))
+ disabledMap.set(rule, []);
+ var map = disabledMap.get(rule);
+
+ var propValue = Dom.getChildByClass(row, "cssPropValue").textContent;
+ var parsedValue = parsePriority(propValue);
+
+ CSSModule.disableProperty(Css.hasClass(row, "disabledStyle"), rule,
+ propName, parsedValue, map, this.context);
+
+ this.markChange(this.name == "stylesheet");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ // When handling disable button clicks, we cannot simply use a 'click'
+ // event, because refresh() may be (and often is) called in between
+ // mousedown and mouseup, replacing the DOM structure. Instead, a
+ // description of the moused-down disable button's property is saved
+ // and explicitly checked on mouseup (issue 5500).
+ clickedPropTag: null,
+
+ getPropTag: function(event)
+ {
+ var row = Dom.getAncestorByClass(event.target, "cssProp");
+ var rule = Firebug.getRepObject(row);
+ var propName = Dom.getChildByClass(row, "cssPropName").textContent;
+ return {
+ a: rule, b: propName,
+ equals: function(other)
+ {
+ return (other && this.a === other.a && this.b === other.b);
+ }
+ };
+ },
+
+ clickedDisableButton: function(event)
+ {
+ if (!Css.hasClass(event.target, "cssPropIndent"))
+ return false;
+
+ // XXX hack
+ var clientOffset = Dom.getClientOffset(event.target);
+ if (event.clientX - clientOffset.x > 20)
+ return false;
+ if (Css.hasClass(event.target, "textEditor inlineExpander"))
+ return false;
+ var row = Dom.getAncestorByClass(event.target, "cssProp");
+ return (row && Css.hasClass(row, "editGroup"));
+ },
+
+ onMouseDown: function(event)
+ {
+ this.clickedPropTag = null;
+ if (Events.isLeftClick(event) && this.clickedDisableButton(event))
+ {
+ this.clickedPropTag = this.getPropTag(event);
+
+ // Don't select text when double-clicking the disable button.
+ Events.cancelEvent(event);
+ }
+ },
+
+ onMouseUp: function(event)
+ {
+ if (Events.isLeftClick(event) && this.clickedDisableButton(event) &&
+ this.getPropTag(event).equals(this.clickedPropTag))
+ {
+ var row = Dom.getAncestorByClass(event.target, "cssProp");
+ this.disablePropertyRow(row);
+ Events.cancelEvent(event);
+ }
+ this.clickedPropTag = null;
+ },
+
+ onClick: function(event)
+ {
+ if (!Events.isLeftClick(event))
+ return;
+
+ if (Events.isDoubleClick(event) && !this.clickedDisableButton(event))
+ {
+ var row = Dom.getAncestorByClass(event.target, "cssRule");
+ if (row && !Dom.getAncestorByClass(event.target, "cssPropName")
+ && !Dom.getAncestorByClass(event.target, "cssPropValue"))
+ {
+ this.insertPropertyRow(row);
+ Events.cancelEvent(event);
+ }
+ }
+ },
+
+ supportsObject: function(object, type)
+ {
+ if (object instanceof window.CSSStyleSheet)
+ {
+ return 1;
+ }
+ else if (object instanceof window.CSSRule ||
+ (object instanceof window.CSSStyleDeclaration && object.parentRule) ||
+ (object instanceof SourceLink.SourceLink && object.type == "css" &&
+ Url.reCSS.test(object.href)))
+ {
+ return 2;
+ }
+ else
+ {
+ return 0;
+ }
+ },
+
+ updateLocation: function(styleSheet)
+ {
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("css.updateLocation; " + (styleSheet ? styleSheet.href :
+ "no stylesheet"));
+ }
+
+ this.doUpdateLocation(styleSheet);
+ },
+
+ doUpdateLocation: function(styleSheet)
+ {
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("css.doUpdateLocation; " + (styleSheet ? styleSheet.href :
+ "no stylesheet"));
+ }
+
+ var rules = [];
+ if (styleSheet)
+ {
+ if (!Css.shouldIgnoreSheet(styleSheet))
+ {
+ if (styleSheet.editStyleSheet)
+ styleSheet = styleSheet.editStyleSheet.sheet;
+
+ rules = this.getStyleSheetRules(this.context, styleSheet);
+ }
+ }
+
+ if (rules && rules.length)
+ {
+ this.template.tag.replace({rules: rules}, this.panelNode);
+ }
+ else
+ {
+ // If there are no rules on the page display a description that also
+ // contains a link "create a rule".
+ var warning = FirebugReps.Warning.tag.replace({object: ""}, this.panelNode);
+ FirebugReps.Description.render(Locale.$STR("css.EmptyStyleSheet"),
+ warning, Obj.bind(this.insertRule, this));
+ }
+
+ // Show CSS buttons only if there is a stylesheet and it isn't a system stylesheet.
+ // Displaying panel's buttons must happens only if the panel is actually visible
+ // otherwise the button could appear on another panel's toolbar.
+ var showButtons = this.location && !Url.isSystemStyleSheet(this.location);
+ this.showToolbarButtons("fbCSSButtons", showButtons);
+
+ Events.dispatch(this.fbListeners, "onCSSRulesAdded", [this, this.panelNode]);
+
+ // If the full editing mode (not the inline) is on while the location changes,
+ // open the editor again for another file.
+ if (this.editing && this.stylesheetEditor && this.stylesheetEditor.editing)
+ {
+ // Remove the editing flag to avoid recursion. The StylesheetEditor.endEditing
+ // calls refresh and consequently updateLocation of the CSS panel.
+ this.editing = null;
+
+ // Stop the current editing.
+ this.stopEditing();
+
+ // ... and open the editor again.
+ this.toggleEditing();
+ }
+ },
+
+ updateSelection: function(object)
+ {
+ this.selection = null;
+
+ if (object instanceof window.CSSStyleDeclaration)
+ {
+ object = object.parentRule;
+ }
+
+ if (object instanceof window.CSSRule)
+ {
+ this.navigate(object.parentStyleSheet);
+ this.highlightRule(object);
+ }
+ else if (object instanceof window.CSSStyleSheet)
+ {
+ this.navigate(object);
+ }
+ else if (object instanceof SourceLink.SourceLink)
+ {
+ try
+ {
+ var sourceLink = object;
+
+ var sourceFile = Firebug.SourceFile.getSourceFileByHref(
+ sourceLink.href, this.context);
+
+ if (sourceFile)
+ {
+ Dom.clearNode(this.panelNode); // replace rendered stylesheets
+
+ // xxxHonza: huh, this method doesn't even exist?
+ this.showSourceFile(sourceFile);
+
+ var lineNo = object.line;
+ if (lineNo)
+ this.scrollToLine(lineNo, this.jumpHighlightFactory(lineNo, this.context));
+ }
+ else // XXXjjb we should not be taking this path
+ {
+ var stylesheet = Css.getStyleSheetByHref(sourceLink.href, this.context);
+ if (stylesheet)
+ {
+ this.navigate(stylesheet);
+ }
+ else
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("css.updateSelection no sourceFile for " +
+ sourceLink.href, sourceLink);
+ }
+ }
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("css.upDateSelection FAILS "+exc, exc);
+ }
+ }
+ },
+
+ updateOption: function(name, value)
+ {
+ if (name == "expandShorthandProps" || name == "colorDisplay")
+ this.refresh();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getLocationList: function()
+ {
+ var styleSheets = Css.getAllStyleSheets(this.context);
+ return styleSheets;
+ },
+
+ getOptionsMenuItems: function()
+ {
+ items = [
+ Menu.optionMenu("Expand_Shorthand_Properties", "expandShorthandProps",
+ "css.option.tip.Expand_Shorthand_Properties")
+ ];
+
+ items = Arr.extendArray(items, CSSModule.getColorDisplayOptionMenuItems());
+
+ items.push(
+ "-",
+ {
+ label: "Refresh",
+ tooltiptext: "panel.tip.Refresh",
+ command: Obj.bind(this.refresh, this)
+ }
+ );
+
+ return items;
+ },
+
+ getContextMenuItems: function(style, target)
+ {
+ var items = [];
+
+ if (target.nodeName == "TEXTAREA")
+ {
+ items = Firebug.BaseEditor.getContextMenuItems();
+ items.push(
+ "-",
+ {
+ id: "fbLoadOriginalSource",
+ label: "Load_Original_Source",
+ tooltiptext: "css.tip.Load_Original_Source",
+ command: Obj.bindFixed(this.loadOriginalSource, this)
+ }
+ );
+ return items;
+ }
+
+ if (Css.hasClass(target, "cssSelector"))
+ {
+ items.push(
+ {
+ id: "fbCopyRuleDeclaration",
+ label: "Copy_Rule_Declaration",
+ tooltiptext: "css.tip.Copy_Rule_Declaration",
+ command: Obj.bindFixed(this.copyRuleDeclaration, this, target)
+ },
+ {
+ id: "fbCopyStyleDeclaration",
+ label: "Copy_Style_Declaration",
+ tooltiptext: "css.tip.Copy_Style_Declaration",
+ command: Obj.bindFixed(this.copyStyleDeclaration, this, target)
+ }
+ );
+ }
+
+ var prop = Dom.getAncestorByClass(target, "cssProp");
+ if (prop)
+ {
+ items.push(
+ {
+ id: "fbCopyPropertyDeclaration",
+ label: "css.label.Copy_Property_Declaration",
+ tooltiptext: "css.tip.Copy_Property_Declaration",
+ command: Obj.bindFixed(this.copyPropertyDeclaration, this, prop)
+ },
+ {
+ id: "fbCopyPropertyName",
+ label: "css.label.Copy_Property_Name",
+ tooltiptext: "css.tip.Copy_Property_Name",
+ command: Obj.bindFixed(this.copyPropertyName, this, prop)
+ },
+ {
+ id: "fbCopyPropertyValue",
+ label: "css.label.Copy_Property_Value",
+ tooltiptext: "css.tip.Copy_Property_Value",
+ command: Obj.bindFixed(this.copyPropertyValue, this, prop)
+ }
+ );
+ }
+
+ var propValue = Dom.getAncestorByClass(target, "cssPropValue");
+ if (propValue)
+ {
+ if (this.infoTipType == "color")
+ {
+ items.push(
+ {
+ id: "fbCopyColor",
+ label: "CopyColor",
+ tooltiptext: "css.tip.Copy_Color",
+ command: Obj.bindFixed(System.copyToClipboard, System, this.infoTipObject)
+ }
+ );
+ }
+ else if (this.infoTipType == "image")
+ {
+ items.push(
+ {
+ id: "fbCopyImageLocation",
+ label: "CopyImageLocation",
+ tooltiptext: "css.tip.Copy_Image_Location",
+ command: Obj.bindFixed(System.copyToClipboard, System, this.infoTipObject)
+ },
+ {
+ id: "fbOpenImageInNewTab",
+ label: "OpenImageInNewTab",
+ tooltiptext: "css.tip.Open_Image_In_New_Tab",
+ command: Obj.bindFixed(Win.openNewTab, Win, this.infoTipObject)
+ }
+ );
+ }
+ }
+
+ if (!Url.isSystemStyleSheet(this.selection))
+ {
+ items.push(
+ "-",
+ {
+ id: "fbNewCSSRule",
+ label: "NewRule",
+ tooltiptext: "css.tip.New_Rule",
+ command: Obj.bindFixed(this.insertRule, this, target)
+ }
+ );
+ }
+
+ if (Css.hasClass(target, "cssSelector"))
+ {
+ var selector = Str.cropString(target.textContent, 30);
+ items.push(
+ {
+ id: "fbDeleteRuleDeclaration",
+ label: Locale.$STRF("css.Delete_Rule", [selector]),
+ tooltiptext: Locale.$STRF("css.tip.Delete_Rule", [selector]),
+ nol10n: true,
+ command: Obj.bindFixed(this.deleteRuleDeclaration, this, target)
+ }
+ );
+ }
+
+ var cssRule = Dom.getAncestorByClass(target, "cssRule");
+ if (cssRule)
+ {
+ if(Css.hasClass(cssRule, "cssEditableRule"))
+ {
+ items.push(
+ "-",
+ {
+ id: "fbNewCSSProp",
+ label: "NewProp",
+ tooltiptext: "css.tip.New_Prop",
+ command: Obj.bindFixed(this.insertPropertyRow, this, target)
+ }
+ );
+
+ var propRow = Dom.getAncestorByClass(target, "cssProp");
+ if (propRow)
+ {
+ var propName = Dom.getChildByClass(propRow, "cssPropName").textContent;
+ var isDisabled = Css.hasClass(propRow, "disabledStyle");
+
+ items.push(
+ {
+ id: "fbEditCSSProp",
+ label: Locale.$STRF("EditProp", [propName]),
+ tooltiptext: Locale.$STRF("css.tip.Edit_Prop", [propName]),
+ nol10n: true,
+ command: Obj.bindFixed(this.editPropertyRow, this, propRow)
+ },
+ {
+ id: "fbDeleteCSSProp",
+ label: Locale.$STRF("DeleteProp", [propName]),
+ tooltiptext: Locale.$STRF("css.tip.Delete_Prop", [propName]),
+ nol10n: true,
+ command: Obj.bindFixed(this.deletePropertyRow, this, propRow)
+ },
+ {
+ id: "fbDisableCSSProp",
+ label: Locale.$STRF("DisableProp", [propName]),
+ tooltiptext: Locale.$STRF("css.tip.Disable_Prop", [propName]),
+ nol10n: true,
+ type: "checkbox",
+ checked: isDisabled,
+ command: Obj.bindFixed(this.disablePropertyRow, this, propRow)
+ }
+ );
+ }
+ }
+
+ if (Css.hasClass(cssRule, "importRule"))
+ {
+ items.push(
+ {
+ id: "fbEditMediaQuery",
+ label: "css.menu.Edit_Media_Query",
+ tooltiptext: "css.menu.tip.Edit_Media_Query",
+ command: Obj.bindFixed(this.editMediaQuery, this, target)
+ }
+ );
+ }
+ }
+
+ items.push(
+ "-",
+ {
+ id: "fbRefresh",
+ label: "Refresh",
+ command: Obj.bind(this.refresh, this),
+ tooltiptext: "panel.tip.Refresh"
+ }
+ );
+
+ return items;
+ },
+
+ browseObject: function(object)
+ {
+ if (this.infoTipType == "image")
+ {
+ Win.openNewTab(this.infoTipObject);
+ return true;
+ }
+ },
+
+ showInfoTip: function(infoTip, target, x, y, rangeParent, rangeOffset)
+ {
+ var propValue = Dom.getAncestorByClass(target, "cssPropValue");
+ if (propValue)
+ {
+ var prop = Dom.getAncestorByClass(target, "cssProp");
+ var styleRule = Firebug.getRepObject(prop);
+ var propNameNode = prop.getElementsByClassName("cssPropName").item(0);
+ var propName = propNameNode.textContent.toLowerCase();
+ var priority = styleRule.style.getPropertyPriority(propName);
+ var text = styleRule.style.getPropertyValue(propName) +
+ (priority ? " !" + priority : "");
+
+ if (text != "")
+ {
+ text = formatColor(text);
+ }
+ else
+ {
+ var disabledMap = this.getDisabledMap(this.context);
+ var disabledProps = disabledMap.get(styleRule);
+ if (disabledProps)
+ {
+ for (var i = 0, len = disabledProps.length; i < len; ++i)
+ {
+ if (disabledProps[i].name == propName)
+ {
+ priority = disabledProps[i].important;
+ text = disabledProps[i].value + (priority ? " !" + priority : "");
+ break;
+ }
+ }
+ }
+ }
+
+ var cssValue;
+ if (propName == "font" || propName == "font-family")
+ {
+ if (text.charAt(rangeOffset) == ",")
+ return;
+
+ cssValue = CSSModule.parseCSSFontFamilyValue(text, rangeOffset, propName);
+ }
+ else
+ {
+ cssValue = CSSModule.parseCSSValue(text, rangeOffset);
+ }
+
+ if (!cssValue)
+ return false;
+
+ if (cssValue.value === "currentcolor")
+ {
+ cssValue.value = this.getCurrentColor();
+ if (cssValue.value === "")
+ return false;
+ }
+
+ if (cssValue.value == this.infoTipValue)
+ return true;
+
+ this.infoTipValue = cssValue.value;
+
+ switch (cssValue.type)
+ {
+ case "rgb":
+ case "hsl":
+ case "gradient":
+ case "colorKeyword":
+ this.infoTipType = "color";
+ this.infoTipObject = cssValue.value;
+ return CSSInfoTip.populateColorInfoTip(infoTip, cssValue.value);
+
+ case "url":
+ if (Css.isImageRule(Xml.getElementSimpleType(Firebug.getRepObject(target)),
+ propNameNode.textContent))
+ {
+ var prop = Dom.getAncestorByClass(target, "cssProp");
+ var rule = Firebug.getRepObject(prop);
+ var baseURL = this.getStylesheetURL(rule, true);
+ var relURL = CSSModule.parseURLValue(cssValue.value);
+ var absURL = Url.isDataURL(relURL) ? relURL : Url.absoluteURL(relURL, baseURL);
+ var repeat = CSSModule.parseRepeatValue(text);
+
+ this.infoTipType = "image";
+ this.infoTipObject = absURL;
+
+ return CSSInfoTip.populateImageInfoTip(infoTip, absURL, repeat);
+ }
+ break;
+
+ case "fontFamily":
+ return CSSInfoTip.populateFontFamilyInfoTip(infoTip, cssValue.value);
+ }
+
+ delete this.infoTipType;
+ delete this.infoTipValue;
+ delete this.infoTipObject;
+
+ return false;
+ }
+ },
+
+ getCurrentColor: function()
+ {
+ return "";
+ },
+
+ getEditor: function(target, value)
+ {
+ if (target == this.panelNode
+ || Css.hasClass(target, "cssSelector") || Css.hasClass(target, "cssRule")
+ || Css.hasClass(target, "cssSheet"))
+ {
+ if (!this.ruleEditor)
+ this.ruleEditor = new CSSRuleEditor(this.document);
+
+ return this.ruleEditor;
+ }
+ else
+ {
+ if (!this.editor)
+ this.editor = new CSSEditor(this.document);
+
+ return this.editor;
+ }
+ },
+
+ getDefaultLocation: function()
+ {
+ // Note: We can't do makeDefaultStyleSheet here, because that could be
+ // damaging for special pages (see e.g. issues 2440, 3688).
+ try
+ {
+ var styleSheets = this.getLocationList();
+ if (styleSheets.length)
+ {
+ var sheet = styleSheets[0];
+ return (Firebug.filterSystemURLs &&
+ Url.isSystemURL(Css.getURLForStyleSheet(sheet))) ? null : sheet;
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_LOCATIONS)
+ FBTrace.sysout("css.getDefaultLocation FAILS "+exc, exc);
+ }
+ },
+
+ getObjectLocation: function(styleSheet)
+ {
+ return Css.getURLForStyleSheet(styleSheet);
+ },
+
+ getObjectDescription: function(styleSheet)
+ {
+ var url = Css.getURLForStyleSheet(styleSheet);
+ var instance = Css.getInstanceForStyleSheet(styleSheet);
+
+ var baseDescription = Url.splitURLBase(url);
+ if (instance) {
+ baseDescription.name = baseDescription.name + " #" + (instance + 1);
+ }
+ return baseDescription;
+ },
+
+ getSourceLink: function(target, rule)
+ {
+ var element = rule.parentStyleSheet.ownerNode;
+ var href = rule.parentStyleSheet.href; // Null means inline
+
+ // http://code.google.com/p/fbug/issues/detail?id=452
+ if (!href)
+ href = element.ownerDocument.location.href;
+
+ var line = getRuleLine(rule);
+ var instance = Css.getInstanceForStyleSheet(rule.parentStyleSheet);
+ var sourceLink = new SourceLink.SourceLink(href, line, "css", rule, instance);
+
+ return sourceLink;
+ },
+
+ getTopmostRuleLine: function()
+ {
+ var panelNode = this.panelNode;
+ for (var child = panelNode.firstChild; child; child = child.nextSibling)
+ {
+ if (child.offsetTop+child.offsetHeight > panelNode.scrollTop)
+ {
+ var rule = child.repObject;
+ if (rule)
+ {
+ return {
+ line: getRuleLine(rule),
+ offset: panelNode.scrollTop-child.offsetTop
+ };
+ }
+ }
+ }
+ return 0;
+ },
+
+ getCurrentLineNumber: function()
+ {
+ var ruleLine = this.getTopMostRuleLine();
+ if (ruleLine)
+ return ruleLine.line;
+ },
+
+ search: function(text, reverse)
+ {
+ var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse);
+ if (!curDoc && Firebug.searchGlobal)
+ {
+ return this.searchOtherDocs(text, reverse) ||
+ this.searchCurrentDoc(true, text, reverse);
+ }
+ return curDoc;
+ },
+
+ searchOtherDocs: function(text, reverse)
+ {
+ var scanRE = Firebug.Search.getTestingRegex(text);
+ function scanDoc(styleSheet) {
+ // we don't care about reverse here as we are just looking for existence,
+ // if we do have a result we will handle the reverse logic on display
+ for (var i = 0; i < styleSheet.cssRules.length; i++)
+ {
+ if (scanRE.test(styleSheet.cssRules[i].cssText))
+ {
+ return true;
+ }
+ }
+ }
+
+ if (this.navigateToNextDocument(scanDoc, reverse))
+ {
+ // firefox findService can't find nodes immediatly after insertion
+ // xxxHonza: the timeout has been increased to 100 since search across
+ // multiple documents didn't work sometimes.
+ // Of course, it would be great to get rid of the timeout.
+ setTimeout(Obj.bind(this.searchCurrentDoc, this), 100, true, text, reverse);
+ return "wraparound";
+ }
+ },
+
+ searchCurrentDoc: function(wrapSearch, text, reverse)
+ {
+ var row, sel;
+
+ if (!text)
+ {
+ delete this.currentSearch;
+ this.highlightNode(null);
+ this.document.defaultView.getSelection().removeAllRanges();
+ return false;
+ }
+
+ if (this.currentSearch && text == this.currentSearch.text)
+ {
+ row = this.currentSearch.findNext(wrapSearch, false, reverse,
+ Firebug.Search.isCaseSensitive(text));
+ }
+ else
+ {
+ if (this.editing)
+ {
+ this.currentSearch = new Search.TextSearch(this.stylesheetEditor.box);
+ row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
+
+ if (row)
+ {
+ sel = this.document.defaultView.getSelection();
+ sel.removeAllRanges();
+ sel.addRange(this.currentSearch.range);
+
+ scrollSelectionIntoView(this);
+ this.highlightNode(row);
+
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ else
+ {
+ function findRow(node) {
+ return node.nodeType == Node.ELEMENT_NODE ? node : node.parentNode;
+ }
+
+ this.currentSearch = new Search.TextSearch(this.panelNode, findRow);
+ row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
+ }
+ }
+
+ if (row)
+ {
+ sel = this.document.defaultView.getSelection();
+ sel.removeAllRanges();
+ sel.addRange(this.currentSearch.range);
+
+ // Should be replaced by scrollToLine() of sourceBox,
+ // though first jumpHighlightFactory() has to be adjusted to
+ // remove the current highlighting when called again
+ Dom.scrollIntoCenterView(row, this.panelNode);
+ this.highlightNode(row.parentNode);
+
+ Events.dispatch(this.fbListeners, "onCSSSearchMatchFound", [this, text, row]);
+ return this.currentSearch.wrapped ? "wraparound" : true;
+ }
+ else
+ {
+ this.document.defaultView.getSelection().removeAllRanges();
+ Events.dispatch(this.fbListeners, "onCSSSearchMatchFound", [this, text, null]);
+ return false;
+ }
+ },
+
+ getSearchOptionsMenuItems: function()
+ {
+ return [
+ Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive",
+ "search.tip.Case_Sensitive"),
+ Firebug.Search.searchOptionMenu("search.Multiple_Files", "searchGlobal",
+ "search.tip.Multiple_Files"),
+ Firebug.Search.searchOptionMenu("search.Use_Regular_Expression",
+ "searchUseRegularExpression", "search.tip.Use_Regular_Expression")
+ ];
+ },
+
+ getStyleDeclaration: function(cssSelector)
+ {
+ var cssRule = Dom.getAncestorByClass(cssSelector, "cssRule");
+ var propRows = cssRule.getElementsByClassName("cssProp");
+
+ var lines = [];
+ for (var i = 0; i < propRows.length; ++i)
+ {
+ var row = propRows[i];
+ if (row.classList.contains("disabledStyle"))
+ continue;
+
+ var name = Dom.getChildByClass(row, "cssPropName").textContent;
+ var value = Dom.getChildByClass(row, "cssPropValue").textContent;
+ lines.push(name + ": " + value + ";");
+ }
+
+ return lines;
+ },
+
+ copyRuleDeclaration: function(cssSelector)
+ {
+ var props = this.getStyleDeclaration(cssSelector);
+ System.copyToClipboard(cssSelector.textContent + " {" + Str.lineBreak() + " " +
+ props.join(Str.lineBreak() + " ") + Str.lineBreak() + "}");
+ },
+
+ deleteRuleDeclaration: function(cssSelector)
+ {
+ var searchRule = Firebug.getRepObject(cssSelector) ||
+ Firebug.getRepObject(cssSelector.nextSibling);
+ var styleSheet = searchRule.parentRule || searchRule.parentStyleSheet;
+ var ruleIndex = 0;
+ var cssRules = styleSheet.cssRules;
+ while (ruleIndex < cssRules.length && searchRule != cssRules[ruleIndex])
+ ruleIndex++;
+
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("css.deleteRuleDeclaration; selector: "+
+ Str.cropString(cssSelector.textContent, 100),
+ {styleSheet: styleSheet, ruleIndex: ruleIndex});
+ }
+
+ CSSModule.deleteRule(styleSheet, ruleIndex);
+
+ var rule = Dom.getAncestorByClass(cssSelector, "cssRule");
+ if (rule)
+ rule.parentNode.removeChild(rule);
+ },
+
+ copyStyleDeclaration: function(cssSelector)
+ {
+ var props = this.getStyleDeclaration(cssSelector);
+ System.copyToClipboard(props.join(Str.lineBreak()));
+ },
+
+ copyPropertyDeclaration: function(prop)
+ {
+ // xxxsz: repObject should be used instead
+ System.copyToClipboard(Str.trim(prop.textContent));
+ },
+
+ copyPropertyName: function(prop)
+ {
+ // xxxsz: repObject should be used instead
+ var propName = prop.getElementsByClassName("cssPropName")[0];
+ System.copyToClipboard(propName.textContent);
+ },
+
+ copyPropertyValue: function(prop)
+ {
+ // xxxsz: repObject should be used instead
+ var propValue = prop.getElementsByClassName("cssPropValue")[0];
+ System.copyToClipboard(propValue.textContent);
+ }
+});
+
+// ********************************************************************************************* //
+// CSSEditor
+
+function CSSEditor(doc)
+{
+ this.initializeInline(doc);
+}
+
+CSSEditor.prototype = domplate(Firebug.InlineEditor.prototype,
+{
+ insertNewRow: function(target, insertWhere)
+ {
+ var rule = Firebug.getRepObject(target);
+ if (!rule)
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("CSSEditor.insertNewRow; ERROR There is no CSS rule", target);
+ return;
+ }
+
+ var emptyProp = {name: "", value: "", important: ""};
+
+ if (insertWhere == "before")
+ return CSSPropTag.tag.insertBefore({prop: emptyProp, rule: rule}, target);
+ else
+ return CSSPropTag.tag.insertAfter({prop: emptyProp, rule: rule}, target);
+ },
+
+ saveEdit: function(target, value, previousValue)
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("CSSEditor.saveEdit", arguments);
+
+ var cssRule = Dom.getAncestorByClass(target, "cssRule");
+ var rule = Firebug.getRepObject(cssRule);
+
+ if (rule instanceof window.CSSStyleRule ||
+ ((window.CSSKeyframeRule && rule instanceof window.CSSKeyframeRule) ||
+ rule instanceof window.MozCSSKeyframeRule) &&
+ !Css.hasClass(target, "cssKeyText") ||
+ rule instanceof window.Element)
+ {
+ var prop = Dom.getAncestorByClass(target, "cssProp");
+
+ if (prop)
+ {
+ var propName = Dom.getChildByClass(prop, "cssPropName").textContent;
+ // If the property was previously disabled, remove it from the "disabled"
+ // map. (We will then proceed to enable the property.)
+ if (prop && prop.classList.contains("disabledStyle"))
+ {
+ prop.classList.remove("disabledStyle");
+
+ this.panel.removeDisabledProperty(rule, propName);
+ }
+
+ if (Css.hasClass(target, "cssPropName"))
+ {
+ // Actual saving is done in endEditing, see the comment there.
+ target.textContent = value;
+ }
+ else if (Dom.getAncestorByClass(target, "cssPropValue"))
+ {
+ target.textContent = CSSDomplateBase.getPropertyValue({value: value});
+
+ propName = Dom.getChildByClass(prop, "cssPropName").textContent;
+
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("CSSEditor.saveEdit \"" + propName + "\" = \"" +
+ value + "\"");
+ // FBTrace.sysout("CSSEditor.saveEdit BEFORE style:",style);
+ }
+
+ if (value && value != "null")
+ {
+ var parsedValue = parsePriority(value);
+ CSSModule.setProperty(rule, propName, parsedValue.value,
+ parsedValue.priority);
+ }
+ else if (previousValue && previousValue != "null")
+ {
+ CSSModule.removeProperty(rule, propName);
+ }
+ }
+
+ if (value)
+ {
+ var saveSuccess = false;
+ if (Css.hasClass(target, "cssPropName"))
+ {
+ var propName = value.replace(/-./g, function(match)
+ {
+ return match[1].toUpperCase();
+ });
+
+ if (propName in rule.style || propName == "float")
+ saveSuccess = "almost";
+ }
+ else
+ {
+ saveSuccess = !!rule.style.getPropertyValue(propName);
+ }
+
+ this.box.setAttribute("saveSuccess", saveSuccess);
+ }
+ else
+ {
+ this.box.removeAttribute("saveSuccess");
+ }
+ }
+ }
+ else if (window.CSSSupportsRule && rule instanceof window.CSSSupportsRule &&
+ Css.hasClass(target, "cssSupportsRuleCondition"))
+ {
+ target.textContent = value;
+
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("CSSEditor.saveEdit: @supports rule condition: " +
+ previousValue + "->" + value);
+ }
+
+ try
+ {
+ rule.conditionText = value;
+ }
+ catch (e)
+ {
+ }
+
+ var saveSuccess = (rule.conditionText == value);
+ this.box.setAttribute("saveSuccess", saveSuccess);
+ }
+ else if (((window.CSSKeyframeRule && rule instanceof window.CSSKeyframeRule) ||
+ rule instanceof window.MozCSSKeyframeRule) &&
+ Css.hasClass(target, "cssKeyText"))
+ {
+ target.textContent = value;
+
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("CSSEditor.saveEdit: @-moz-keyframe rule key: " +
+ previousValue + "->" + value);
+ }
+
+ rule.keyText = value;
+
+ var saveSuccess = (rule.keyText == value || rule.keyText == Css.keyframeKeys[value]);
+ this.box.setAttribute("saveSuccess", saveSuccess);
+ }
+ else if (rule instanceof window.CSSMozDocumentRule &&
+ Css.hasClass(target, "cssDocumentRuleCondition"))
+ {
+ target.textContent = value;
+
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("CSSEditor.saveEdit: @-moz-document rule condition: " +
+ previousValue + "->" + value);
+ }
+
+ try
+ {
+ rule.conditionText = value;
+ }
+ catch (e)
+ {
+ }
+
+ var saveSuccess = (rule.conditionText == value);
+ this.box.setAttribute("saveSuccess", saveSuccess);
+ }
+ else if (rule instanceof window.CSSImportRule && Css.hasClass(target, "cssMediaQuery"))
+ {
+ target.textContent = value;
+
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("CSSEditor.saveEdit: @import media query: " +
+ previousValue + "->" + value);
+ }
+
+ rule.media.mediaText = value;
+
+ // Workaround to apply the media query changes
+ rule.parentStyleSheet.disabled = true;
+ rule.parentStyleSheet.disabled = false;
+
+ var row = Dom.getAncestorByClass(target, "importRule");
+ row.getElementsByClassName("separator").item(0).textContent =
+ value == "" ? "" : String.fromCharCode(160);
+
+ var saveSuccess = rule.media.mediaText != "not all" || value == "not all";
+ this.box.setAttribute("saveSuccess", saveSuccess);
+ }
+ else if (rule instanceof window.CSSMediaRule &&
+ Css.hasClass(target, "cssMediaRuleCondition"))
+ {
+ target.textContent = value;
+
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("CSSEditor.saveEdit: @media rule condition: " +
+ previousValue + "->" + value);
+ }
+
+ rule.conditionText = value;
+
+ var saveSuccess = (rule.conditionText == value);
+ this.box.setAttribute("saveSuccess", saveSuccess);
+ }
+ else if (rule instanceof window.CSSCharsetRule)
+ {
+ target.textContent = value;
+
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("CSSEditor.saveEdit: @charset: " + previousValue + "->" + value);
+
+ rule.encoding = value;
+ }
+
+ Firebug.Inspector.repaint();
+
+ this.panel.markChange(this.panel.name == "stylesheet");
+
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("CSSEditor.saveEdit (ending) " + this.panel.name, value);
+ },
+
+ beginEditing: function(target, value)
+ {
+ var row = Dom.getAncestorByClass(target, "cssProp");
+ this.initialValue = value;
+ this.initiallyDisabled = (row && row.classList.contains("disabledStyle"));
+ },
+
+ endEditing: function(target, value, cancel)
+ {
+ if (!cancel && target.classList.contains("cssPropName"))
+ {
+ // Save changed property names here instead of in saveEdit, because otherwise
+ // unrelated properties might get discarded (see issue 5204).
+ var previous = this.initialValue;
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("CSSEditor.endEditing: renaming property " + previous + " -> " +
+ value);
+ }
+
+ var cssRule = Dom.getAncestorByClass(target, "cssRule");
+ var rule = Firebug.getRepObject(cssRule);
+ var baseText = rule.style ? rule.style.cssText : rule.cssText;
+ var prop = Dom.getAncestorByClass(target, "cssProp");
+ var propValue = Dom.getChildByClass(prop, "cssPropValue").textContent;
+ var parsedValue = parsePriority(propValue);
+
+ if (previous)
+ CSSModule.removeProperty(rule, previous);
+ if (propValue)
+ CSSModule.setProperty(rule, value, parsedValue.value, parsedValue.priority);
+
+ Events.dispatch(CSSModule.fbListeners, "onCSSPropertyNameChanged", [rule, value,
+ previous, baseText]);
+
+ Firebug.Inspector.repaint();
+ this.panel.markChange(this.panel.name == "stylesheet");
+ }
+ return true;
+ },
+
+ cancelEditing: function(target, value)
+ {
+ if (this.initiallyDisabled)
+ {
+ // Disable the property again.
+ var row = Dom.getAncestorByClass(target, "cssProp");
+ if (row && !row.classList.contains("disabledStyle"))
+ this.panel.disablePropertyRow(row);
+ }
+ },
+
+ advanceToNext: function(target, charCode)
+ {
+ if (charCode == 58 /*":"*/ && Css.hasClass(target, "cssPropName"))
+ {
+ return true;
+ }
+ else if (charCode == 59 /*";"*/ && Css.hasClass(target, "cssPropValue"))
+ {
+ var cssValue = CSSModule.parseCSSValue(this.input.value, this.input.selectionStart);
+ // Simple test, if we are inside a string (see issue 4543)
+ var isValueInString = (cssValue.value.indexOf("\"") != -1);
+
+ return !isValueInString;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getAutoCompleteRange: function(value, offset)
+ {
+ if (!Css.hasClass(this.target, "cssPropValue"))
+ return {start: 0, end: value.length};
+
+ var propRow = Dom.getAncestorByClass(this.target, "cssProp");
+ var propName = Dom.getChildByClass(propRow, "cssPropName").textContent.toLowerCase();
+
+ if (propName == "font" || propName == "font-family")
+ return CSSModule.parseCSSFontFamilyValue(value, offset, propName);
+ else
+ return CSSModule.parseCSSValue(value, offset);
+ },
+
+ getAutoCompleteList: function(preExpr, expr, postExpr, range, cycle, context, out)
+ {
+ if (Dom.getAncestorByClass(this.target, "importRule"))
+ {
+ return [];
+ }
+ else if (Dom.getAncestorByClass(this.target, "cssCharsetRule"))
+ {
+ return Css.charsets;
+ }
+ else if (Css.hasClass(this.target, "cssPropName"))
+ {
+ var nodeType = Xml.getElementSimpleType(Firebug.getRepObject(this.target));
+ var ret = Css.getCSSPropertyNames(nodeType);
+
+ if (!cycle && expr)
+ {
+ // Make some good default suggestions.
+ var list = ["color", "clear", "display", "float", "overflow"];
+ for (var i = 0; i < list.length; ++i)
+ {
+ if (Str.hasPrefix(list[i], expr) && ret.indexOf(list[i]) !== -1)
+ {
+ out.suggestion = list[i];
+ break;
+ }
+ }
+ }
+
+ return ret;
+ }
+ else if (Dom.getAncestorByClass(this.target, "cssDocumentRule") &&
+ !Css.hasClass(this.target, "cssPropValue"))
+ {
+ return Css.documentConditions;
+ }
+ else if (Dom.getAncestorByClass(this.target, "cssKeyframesRule") &&
+ !Css.hasClass(this.target, "cssPropValue"))
+ {
+ return Object.getOwnPropertyNames(Css.keyframeKeys);
+ }
+ else if (Dom.getAncestorByClass(this.target, "cssMediaRule") &&
+ !Css.hasClass(this.target, "cssPropValue"))
+ {
+ return Css.mediaTypes;
+ }
+ else
+ {
+ if (expr.charAt(0) === "!")
+ return ["!important"];
+
+ var row = Dom.getAncestorByClass(this.target, "cssProp");
+ var propName = Dom.getChildByClass(row, "cssPropName").textContent;
+ var nodeType = Xml.getElementSimpleType(Firebug.getRepObject(this.target));
+
+ var keywords;
+ if (range.type === "url")
+ {
+ // We can't complete urls yet.
+ return [];
+ }
+ else if (range.type === "fontFamily")
+ {
+ keywords = Css.cssKeywords["fontFamily"].slice();
+ if (this.panel && this.panel.context)
+ {
+ // Add the fonts used in this context (they might be inaccessible
+ // for this element, but probably aren't).
+ var fonts = Fonts.getFontsUsedInContext(this.panel.context), ar = [];
+ for (var i = 0; i < fonts.length; i++)
+ ar.push(fonts[i].CSSFamilyName);
+ keywords = Arr.sortUnique(keywords.concat(ar));
+ }
+
+ var q = expr.charAt(0), isQuoted = (q === '"' || q === "'");
+ if (!isQuoted)
+ {
+ // Default to ' quotes, unless " occurs somewhere.
+ q = (/"/.test(preExpr + postExpr) ? '"' : "'");
+ }
+
+ // Don't complete '.
+ if (expr.length <= 1 && isQuoted)
+ return [];
+
+ // When completing, quote fonts if the input is quoted; when
+ // cycling, quote them instead in the way the user seems to
+ // expect to have them quoted.
+ var reSimple = /^[a-z][a-z0-9-]*$/i;
+ var isComplex = !reSimple.test(expr.replace(/^['"]?|['"]?$/g, ""));
+ var quote = function(str)
+ {
+ if (!cycle || isComplex !== isQuoted)
+ return (isQuoted ? q + str + q : str);
+ else
+ return (reSimple.test(str) ? str : q + str + q);
+ };
+
+ keywords = keywords.slice();
+ for (var i = 0; i < keywords.length; ++i)
+ {
+ // Treat values starting with capital letters as font names
+ // that can be quoted.
+ var k = keywords[i];
+ if (k.charAt(0).toLowerCase() !== k.charAt(0))
+ keywords[i] = quote(k);
+ }
+ }
+ else
+ {
+ var lowerProp = propName.toLowerCase(), avoid;
+ if (["background", "border", "font"].indexOf(lowerProp) !== -1)
+ {
+ if (cycle)
+ {
+ // Cycle only within the same category, if possible.
+ var cat = Css.getCSSShorthandCategory(nodeType, lowerProp, expr);
+ if (cat)
+ return (cat in Css.cssKeywords ? Css.cssKeywords[cat] : [cat]);
+ }
+ else
+ {
+ // Avoid repeated properties. We assume the values to be solely
+ // space-separated tokens, within a comma-separated part (like
+ // for CSS3 multiple backgrounds). This is absolutely wrong, but
+ // good enough in practice because non-tokens for which it fails
+ // likely aren't in any category.
+ // "background-position" and "background-repeat" values can occur
+ // twice, so they are special-cased.
+ avoid = [];
+ var preTokens = preExpr.split(",").reverse()[0].split(" ");
+ var postTokens = postExpr.split(",")[0].split(" ");
+ var tokens = preTokens.concat(postTokens);
+ for (var i = 0; i < tokens.length; ++i)
+ {
+ var cat = Css.getCSSShorthandCategory(nodeType, lowerProp, tokens[i]);
+ if (cat && cat !== "position" && cat !== "bgRepeat")
+ avoid.push(cat);
+ }
+ }
+ }
+ keywords = Css.getCSSKeywordsByProperty(nodeType, propName, avoid);
+ }
+
+ // Add the magic inherit property, if it's sufficiently alone.
+ // XXX Firefox 19 also has "initial"
+ if (!preExpr)
+ keywords = keywords.concat(["inherit"]);
+
+ if (!cycle)
+ {
+ // Make some good default suggestions.
+ var list = ["white", "black", "solid", "outset", "repeat"];
+ for (var i = 0; i < list.length; ++i)
+ {
+ if (Str.hasPrefix(list[i], expr) && keywords.indexOf(list[i]) !== -1)
+ {
+ out.suggestion = list[i];
+ break;
+ }
+ }
+ }
+
+ return SelectorEditor.stripCompletedParens(keywords, postExpr);
+ }
+ },
+
+ getAutoCompletePropSeparator: function(range, expr, prefixOf)
+ {
+ if (!Css.hasClass(this.target, "cssPropValue"))
+ return null;
+
+ // For non-multi-valued properties, fail (pre-completions don't make sense,
+ // and it's less risky).
+ var row = Dom.getAncestorByClass(this.target, "cssProp");
+ var propName = Dom.getChildByClass(row, "cssPropName").textContent;
+ if (!Css.multiValuedProperties.hasOwnProperty(propName))
+ return null;
+
+ if (range.type === "fontFamily")
+ return ",";
+ return " ";
+ },
+
+ autoCompleteAdjustSelection: function(value, offset)
+ {
+ if (offset >= 2 && value.substr(offset-2, 2) === "()")
+ return offset-1;
+ return offset;
+ },
+
+ doIncrementValue: function(value, amt, offset, offsetEnd)
+ {
+ var propName = null;
+ if (Css.hasClass(this.target, "cssPropValue"))
+ {
+ var propRow = Dom.getAncestorByClass(this.target, "cssProp");
+ propName = Dom.getChildByClass(propRow, "cssPropName").textContent;
+ }
+
+ var range = CSSModule.parseCSSValue(value, offset);
+ var type = (range && range.type) || "";
+ var expr = (range ? value.substring(range.start, range.end) : "");
+
+ var completion = null, selection, info;
+ if (type === "int")
+ {
+ if (propName === "opacity")
+ {
+ info = {minValue: 0, maxValue: 1};
+ amt /= 100;
+ }
+
+ if (expr === "0" && value.lastIndexOf("(", offset) === -1 &&
+ !Css.unitlessProperties.hasOwnProperty(propName))
+ {
+ // 0 is a length, and incrementing it normally will result in an
+ // invalid value 1 or -1. Thus, guess at a unit to add.
+ var unitM = /\d([a-z]{1,4})/.exec(value);
+ expr += (unitM ? unitM[1] : "px");
+ }
+
+ var newValue = this.incrementExpr(expr, amt, info);
+ if (newValue !== null)
+ {
+ completion = newValue;
+ selection = [0, completion.length];
+ }
+ }
+ else if (type === "rgb" && expr.charAt(0) === "#")
+ {
+ var offsetIntoExpr = offset - range.start;
+ var offsetEndIntoExpr = offsetEnd - range.start;
+
+ // Increment a hex color.
+ var res = this.incrementHexColor(expr, amt, offsetIntoExpr, offsetEndIntoExpr);
+ if (res)
+ {
+ completion = res.value;
+ selection = res.selection;
+ }
+ }
+ else
+ {
+ if (type === "rgb" || type === "hsl")
+ {
+ info = {};
+ var part = value.substring(range.start, offset).split(",").length - 1;
+ if (part === 3) // alpha
+ {
+ info.minValue = 0;
+ info.maxValue = 1;
+ amt /= 100;
+ }
+ else if (type === "rgb") // rgb color
+ {
+ info.minValue = 0;
+ info.maxValue = 255;
+ if (Math.abs(amt) < 1)
+ amt = (amt < 0 ? -1 : 1);
+ }
+ else if (part !== 0) // hsl percentage
+ {
+ info.minValue = 0;
+ info.maxValue = 100;
+
+ // If the selection is at the end of a percentage sign, select
+ // the previous number. This would have been less hacky if
+ // parseCSSValue parsed functions recursively.
+ if (value.charAt(offset-1) === "%")
+ --offset;
+ }
+ }
+
+ return Firebug.InlineEditor.prototype.doIncrementValue
+ .call(this, value, amt, offset, offsetEnd, info);
+ }
+
+ if (completion === null)
+ return;
+
+ var preExpr = value.substr(0, range.start);
+ var postExpr = value.substr(range.end);
+
+ return {
+ value: preExpr + completion + postExpr,
+ start: range.start + selection[0],
+ end: range.start + selection[1]
+ };
+ },
+
+ incrementHexColor: function(expr, amt, offset, offsetEnd)
+ {
+ // Return early if no part of the expression is selected.
+ if (offsetEnd > expr.length && offset >= expr.length)
+ return;
+ if (offset < 1 && offsetEnd <= 1)
+ return;
+
+ // Ignore the leading #.
+ expr = expr.substr(1);
+ --offset;
+ --offsetEnd;
+
+ // Clamp the selection to within the actual value.
+ offset = Math.max(offset, 0);
+ offsetEnd = Math.min(offsetEnd, expr.length);
+ offsetEnd = Math.max(offsetEnd, offset);
+
+ // Normalize #ABC -> #AABBCC.
+ if (expr.length === 3)
+ {
+ expr = expr.charAt(0) + expr.charAt(0) +
+ expr.charAt(1) + expr.charAt(1) +
+ expr.charAt(2) + expr.charAt(2);
+ offset *= 2;
+ offsetEnd *= 2;
+ }
+ if (expr.length !== 6)
+ return;
+
+ if (offset === offsetEnd)
+ {
+ // There is only a single cursor position. Increment an adjacent
+ // color, preferably one to the left.
+ if (offset === 0)
+ offsetEnd = 1;
+ else
+ offset = offsetEnd - 1;
+ }
+
+ // Make the selection cover entire parts.
+ offset -= offset%2;
+ offsetEnd += offsetEnd%2;
+
+ // Remap the increments from [0.1, 1, 10, 100] to [1, 1, 16, 64].
+ if (-1 < amt && amt < 1)
+ amt = (amt < 0 ? -1 : 1);
+ if (Math.abs(amt) === 10)
+ amt = (amt < 0 ? -16 : 16);
+ if (Math.abs(amt) === 100)
+ amt = (amt < 0 ? -64 : 64);
+
+ var isUpper = (expr.toUpperCase() === expr);
+
+ for (var pos = offset; pos < offsetEnd; pos += 2)
+ {
+ // Increment the part in [pos, pos+2).
+ var mid = expr.substr(pos, 2);
+ var value = parseInt(mid, 16);
+ if (isNaN(value))
+ return;
+
+ mid = Math.min(Math.max(value - amt, 0), 255).toString(16);
+ while (mid.length < 2)
+ mid = "0" + mid;
+
+ // Make the incremented part upper-case if the original value can be
+ // seen as such (this should happen even for, say, #444444, because
+ // upper-case hex-colors are the default). Otherwise, the lower-case
+ // result from .toString is used.
+ if (isUpper)
+ mid = mid.toUpperCase();
+
+ expr = expr.substr(0, pos) + mid + expr.substr(pos+2);
+ }
+
+ return {value: "#" + expr, selection: [offset+1, offsetEnd+1]};
+ }
+});
+
+// ********************************************************************************************* //
+// CSSRuleEditor
+
+function CSSRuleEditor(doc)
+{
+ this.initializeInline(doc);
+}
+
+CSSRuleEditor.prototype = domplate(SelectorEditor.prototype,
+{
+ insertNewRow: function(target, insertWhere)
+ {
+ var emptyRule = {
+ selector: "",
+ id: "",
+ props: [],
+ isSelectorEditable: true
+ };
+
+ if (insertWhere == "before")
+ return CSSStyleRuleTag.tag.insertBefore({rule: emptyRule}, target);
+ else
+ return CSSStyleRuleTag.tag.insertAfter({rule: emptyRule}, target);
+ },
+
+ saveEdit: function(target, value, previousValue)
+ {
+ var context = this.panel.context;
+
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("CSSRuleEditor.saveEdit: '" + value + "' '" + previousValue +
+ "'", target);
+
+ target.textContent = value;
+ if (value === previousValue)
+ return;
+
+ var row = Dom.getAncestorByClass(target, "cssRule");
+ var rule = Firebug.getRepObject(target);
+
+ var searchRule = rule || Firebug.getRepObject(row.nextSibling);
+ var oldRule, ruleIndex;
+
+ if (searchRule)
+ {
+ // take care of media rules
+ var styleSheet = searchRule.parentRule || searchRule.parentStyleSheet;
+ if (!styleSheet)
+ return;
+
+ var cssRules = styleSheet.cssRules;
+ for (ruleIndex=0; ruleIndex<cssRules.length && searchRule!=cssRules[ruleIndex];
+ ruleIndex++)
+ {
+ }
+
+ if (rule)
+ oldRule = searchRule;
+ else
+ ruleIndex++;
+ }
+ else
+ {
+ var styleSheet;
+ if (this.panel.name === "stylesheet")
+ {
+ styleSheet = this.panel.location;
+ if (!styleSheet)
+ {
+ var doc = context.window.document;
+ this.panel.location = styleSheet =
+ CSSModule.getDefaultStyleSheet(doc);
+ }
+ }
+ else
+ {
+ if (this.panel.name !== "css")
+ return;
+
+ var doc = this.panel.selection.ownerDocument.defaultView.document;
+ styleSheet = CSSModule.getDefaultStyleSheet(doc);
+ }
+
+ styleSheet = styleSheet.editStyleSheet ? styleSheet.editStyleSheet.sheet : styleSheet;
+ cssRules = styleSheet.cssRules;
+ ruleIndex = cssRules.length;
+ }
+
+ // Delete in all cases except for new add
+ // We want to do this before the insert to ease change tracking
+ if (oldRule)
+ {
+ CSSModule.deleteRule(styleSheet, ruleIndex);
+ }
+
+ var doMarkChange = true;
+
+ // Firefox does not follow the spec for the update selector text case.
+ // When attempting to update the value, firefox will silently fail.
+ // See https://bugzilla.mozilla.org/show_bug.cgi?id=37468 for the quite
+ // old discussion of this bug.
+ // As a result we need to recreate the style every time the selector
+ // changes.
+ if (value)
+ {
+ var cssText = [ value, "{" ];
+ var props = row.getElementsByClassName("cssProp");
+ for (var i = 0; i < props.length; i++)
+ {
+
+ var propEl = props[i];
+ if (!Css.hasClass(propEl, "disabledStyle"))
+ {
+ var propName = Dom.getChildByClass(propEl, "cssPropName").textContent;
+ var propValue = Dom.getChildByClass(propEl, "cssPropValue").textContent;
+ cssText.push(propName + ":" + propValue + ";");
+ }
+ }
+
+ cssText.push("}");
+ cssText = cssText.join("");
+
+ try
+ {
+ var insertLoc = CSSModule.insertRule(styleSheet, cssText, ruleIndex);
+
+ rule = cssRules[insertLoc];
+
+ ruleIndex++;
+
+ var saveSuccess = (this.panel.name != "css");
+ if (!saveSuccess)
+ {
+ saveSuccess = (this.panel.selection &&
+ this.panel.selection.mozMatchesSelector(value)) ? true : 'almost';
+ }
+
+ this.box.setAttribute('saveSuccess', saveSuccess);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_CSS || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("CSS Insert Error: "+err, err);
+
+ target.textContent = previousValue;
+ // create dummy rule to be able to recover from error
+ var insertLoc = CSSModule.insertRule(styleSheet,
+ 'selectorSavingError{}', ruleIndex);
+ rule = cssRules[insertLoc];
+
+ this.box.setAttribute('saveSuccess', false);
+
+ doMarkChange = false;
+ }
+ }
+ else
+ {
+ // XXX There is currently no way to re-add the rule after this happens.
+ rule = undefined;
+ }
+
+ // Update the rep object
+ row.repObject = rule;
+ if (oldRule && rule)
+ this.panel.remapRule(context, oldRule, rule);
+
+ if (doMarkChange)
+ this.panel.markChange(this.panel.name == "stylesheet");
+ },
+
+ getAutoCompleteRange: function(value, offset)
+ {
+ if (!Css.hasClass(this.target, "cssSelector"))
+ return;
+ return SelectorEditor.prototype.getAutoCompleteRange.apply(this, arguments);
+ },
+
+ getAutoCompleteList: function(preExpr, expr, postExpr, range, cycle, context, out)
+ {
+ if (!Css.hasClass(this.target, "cssSelector"))
+ return [];
+ return SelectorEditor.prototype.getAutoCompleteList.apply(this, arguments);
+ },
+
+ getAutoCompletePropSeparator: function(range, expr, prefixOf)
+ {
+ if (!Css.hasClass(this.target, "cssSelector"))
+ return null;
+ return SelectorEditor.prototype.getAutoCompletePropSeparator.apply(this, arguments);
+ },
+
+ advanceToNext: function(target, charCode)
+ {
+ if (charCode == 123 /* "{" */)
+ {
+ return true;
+ }
+ }
+});
+
+// ********************************************************************************************* //
+// StyleSheetEditor
+
+/**
+ * StyleSheetEditor represents the full-sized editor used for Source/Live Edit
+ * within the CSS panel.
+ */
+function StyleSheetEditor(doc)
+{
+ this.box = this.tag.replace({}, doc, this);
+ this.input = this.box.firstChild;
+}
+
+StyleSheetEditor.prototype = domplate(Firebug.BaseEditor,
+{
+ multiLine: true,
+
+ tag: DIV(
+ TEXTAREA({"class": "styleSheetEditor fullPanelEditor", oninput: "$onInput"})
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getValue: function()
+ {
+ return this.input.value;
+ },
+
+ setValue: function(value)
+ {
+ return this.input.value = value;
+ },
+
+ show: function(target, panel, value, textSize)
+ {
+ this.target = target;
+ this.panel = panel;
+
+ this.panel.panelNode.appendChild(this.box);
+
+ this.input.value = value;
+ this.input.focus();
+
+ // match CSSModule.getEditorOptionKey
+ var command = Firebug.chrome.$("cmd_firebug_togglecssEditMode");
+ command.setAttribute("checked", true);
+ },
+
+ hide: function()
+ {
+ var command = Firebug.chrome.$("cmd_firebug_togglecssEditMode");
+ command.setAttribute("checked", false);
+
+ if (this.box.parentNode == this.panel.panelNode)
+ this.panel.panelNode.removeChild(this.box);
+
+ delete this.target;
+ delete this.panel;
+ delete this.styleSheet;
+ },
+
+ saveEdit: function(target, value, previousValue)
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("StyleSheetEditor.saveEdit", arguments);
+
+ CSSModule.freeEdit(this.styleSheet, value);
+ },
+
+ beginEditing: function()
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("StyleSheetEditor.beginEditing", arguments);
+
+ this.editing = true;
+ },
+
+ endEditing: function()
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("StyleSheetEditor.endEditing", arguments);
+
+ this.editing = false;
+ this.panel.refresh();
+ return true;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onInput: function()
+ {
+ Firebug.Editor.update();
+ },
+
+ scrollToLine: function(line, offset)
+ {
+ this.startMeasuring(this.input);
+ var lineHeight = this.measureText().height;
+ this.stopMeasuring();
+
+ this.input.scrollTop = (line * lineHeight) + offset;
+ }
+});
+
+Firebug.StyleSheetEditor = StyleSheetEditor;
+
+// ********************************************************************************************* //
+
+Firebug.CSSDirtyListener = function(context)
+{
+};
+
+Firebug.CSSDirtyListener.isDirty = function(styleSheet, context)
+{
+ return (styleSheet.fbDirty == true);
+};
+
+Firebug.CSSDirtyListener.prototype =
+{
+ markSheetDirty: function(styleSheet)
+ {
+ if (!styleSheet && FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("css; CSSDirtyListener markSheetDirty; styleSheet == NULL");
+ return;
+ }
+
+ styleSheet.fbDirty = true;
+
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("CSSDirtyListener markSheetDirty " + styleSheet.href, styleSheet);
+ },
+
+ onCSSInsertRule: function(styleSheet, cssText, ruleIndex)
+ {
+ this.markSheetDirty(styleSheet);
+ },
+
+ onCSSDeleteRule: function(styleSheet, ruleIndex)
+ {
+ this.markSheetDirty(styleSheet);
+ },
+
+ onCSSSetProperty: function(style, propName, propValue, propPriority, prevValue,
+ prevPriority, rule, baseText)
+ {
+ var styleSheet = rule.parentStyleSheet;
+ if (styleSheet)
+ this.markSheetDirty(styleSheet);
+ },
+
+ onCSSRemoveProperty: function(style, propName, prevValue, prevPriority, rule, baseText)
+ {
+ var styleSheet = rule.parentStyleSheet;
+ if (styleSheet)
+ this.markSheetDirty(styleSheet);
+ }
+};
+
+// ********************************************************************************************* //
+// Local Helpers
+
+function parsePriority(value)
+{
+ var rePriority = /(.*?)\s*(!important)?$/;
+ var m = rePriority.exec(value);
+ var propValue = m ? m[1] : "";
+ var priority = m && m[2] ? "important" : "";
+ return {value: propValue, priority: priority};
+}
+
+function formatColor(color)
+{
+ switch (Options.get("colorDisplay"))
+ {
+ case "hex":
+ return Css.rgbToHex(color);
+
+ case "hsl":
+ return Css.rgbToHSL(color);
+
+ case "rgb":
+ return Css.colorNameToRGB(color);
+
+ default:
+ return color;
+ }
+}
+
+function getRuleLine(rule)
+{
+ // TODO return closest guess if rule isn't CSSStyleRule
+ // and keep track of edited rule lines
+ try
+ {
+ return Dom.domUtils.getRuleLine(rule);
+ }
+ catch (e) {}
+ return 0;
+}
+
+function getOriginalStyleSheetCSS(sheet, context)
+{
+ if (sheet.ownerNode instanceof window.HTMLStyleElement)
+ {
+ return sheet.ownerNode.textContent;
+ }
+ else
+ {
+ // In the case, that there are no rules, the cache will return a message
+ // to reload the source (see issue 4251)
+ return sheet.cssRules.length != 0 ? context.sourceCache.load(sheet.href).join("") : "";
+ }
+}
+
+function getStyleSheetCSS(sheet, context)
+{
+ function beautify(css, indent)
+ {
+ var indent='\n'+Array(indent+1).join(' ');
+ var i=css.indexOf('{');
+ var match=css.substr(i+1).match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g);
+ match.pop();
+ match.pop();
+ return css.substring(0, i+1) + indent
+ + match.sort().join(indent) + '\n}';
+ }
+
+ var cssRules = sheet.cssRules, css=[];
+ for(var i = 0; i < cssRules.length; i++)
+ {
+ var rule = cssRules[i];
+ if (rule instanceof window.CSSStyleRule)
+ css.push(beautify(rule.cssText, 4));
+ else
+ css.push(rule.cssText);
+ }
+
+ return Css.rgbToHex(css.join('\n\n')) + '\n';
+}
+
+function scrollSelectionIntoView(panel)
+{
+ var selCon = getSelectionController(panel);
+ selCon.scrollSelectionIntoView(
+ Ci.nsISelectionController.SELECTION_NORMAL,
+ Ci.nsISelectionController.SELECTION_FOCUS_REGION, true);
+}
+
+function getSelectionController(panel)
+{
+ var browser = Firebug.chrome.getPanelBrowser(panel);
+ return browser.docShell.QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsISelectionDisplay)
+ .QueryInterface(Ci.nsISelectionController);
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(Firebug.CSSStyleSheetPanel);
+
+return Firebug.CSSStyleSheetPanel;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/css/cssPanelMutationObserver.js b/content/firebug/css/cssPanelMutationObserver.js
index 9b895a4..f2f5fd5 100644
--- a/content/firebug/css/cssPanelMutationObserver.js
+++ b/content/firebug/css/cssPanelMutationObserver.js
@@ -1,178 +1,178 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/trace",
- "firebug/lib/object",
-],
-function(Firebug, FBTrace, Obj) {
-
-"use strict"
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-// CSSPanelMutationObserver
-
-/**
- * @module This module is responsible for updating the CSS panel (name='stylesheet')
- * when the currently displayed CSS stylesheet is removed from the page.
- *
- * The module uses Mutation Observer API to watch elements removal (STYLE and LINK)
- * from the page.
- *
- * The observer activity is optimized, so it observes the document only if
- * the panel is actually visible (the optimization is based on Firebug UI events).
- *
- * See issue 6582 for more details.
- */
-var CSSPanelMutationObserver = Obj.extend(Firebug.Module,
-/** @lends CSSPanelMutationObserver */
-{
- dispatchName: "CSSPanelMutationObserver",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Module
-
- initialize: function()
- {
- Firebug.Module.initialize.apply(this, arguments);
-
- // Register UI listeners, so we can get events about when the CSS panel
- // is visible and hidden.
- Firebug.registerUIListener(this);
- },
-
- shutdown: function()
- {
- Firebug.Module.shutdown.apply(this, arguments);
- Firebug.unregisterUIListener(this);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // UI Listener
-
- onShowPanel: function(panel)
- {
- if (panel.name != "stylesheet" || panel.location == null)
- return;
-
- // The CSS panel is visible let's observe mutations.
- this.startObserveMutations(panel);
- },
-
- onHidePanel: function(panel)
- {
- if (panel.name != "stylesheet")
- return;
-
- this.stopObserveMutations(panel);
- },
-
- onPanelNavigate: function(object, panel)
- {
- if (panel.name != "stylesheet" || panel.location == null)
- return;
-
- // Different stylesheet is displayed in the panel, restart mutation
- // observer since the stylesheet can come from different window (an iframe).
- this.startObserveMutations(panel);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Mutation Observer
-
- startObserveMutations: function(panel)
- {
- if (panel.mutationObserver)
- this.stopObserveMutations(panel);
-
- var styleSheet = panel.location;
- if (!styleSheet.ownerNode)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("CSSPanelMutationObserver.startObserveMutations ERROR no owner!");
- return;
- }
-
- // Start observing mutation events. The CSS panel needs to be updated
- // if the current stylesheet's node is removed from the document
- var doc = styleSheet.ownerNode.ownerDocument;
- var callback = this.onMutationObserve.bind(this, panel, styleSheet.ownerNode);
- var observer = new MutationObserver(callback);
- observer.observe(doc, {
- childList: true,
- subtree: true,
- });
-
- panel.mutationObserver = observer;
-
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("CSSPanelMutationObserver.startObserveMutations;");
- },
-
- stopObserveMutations: function(panel)
- {
- if (!panel.mutationObserver)
- return;
-
- panel.mutationObserver.disconnect();
- panel.mutationObserver = null;
-
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("CSSPanelMutationObserver.stopObserveMutations;");
- },
-
- onMutationObserve: function(panel, styleSheetNode, records, observer)
- {
- var refresh = false;
-
- for (var i=0; i<records.length; i++)
- {
- var record = records[i];
- switch (record.type)
- {
- case "childList":
- var nodes = record.removedNodes;
- for (var j=0; j<nodes.length; j++)
- {
- // If the current stylesheet's owner node has been removed
- // update the panel. The stylesheet must not be displayed
- // since it's not part of the page anymore.
- var node = nodes[j];
- if (node == styleSheetNode)
- {
- refresh = true;
- break;
- }
- }
- }
-
- if (refresh)
- break;
- }
-
- if (refresh)
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("CSSPanelMutationObserver.onMutationObserve; refresh");
-
- panel.location = null;
- panel.navigate(null);
- }
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(CSSPanelMutationObserver);
-
-return CSSPanelMutationObserver;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/trace",
+ "firebug/lib/object",
+],
+function(Firebug, FBTrace, Obj) {
+
+"use strict"
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+// CSSPanelMutationObserver
+
+/**
+ * @module This module is responsible for updating the CSS panel (name='stylesheet')
+ * when the currently displayed CSS stylesheet is removed from the page.
+ *
+ * The module uses Mutation Observer API to watch elements removal (STYLE and LINK)
+ * from the page.
+ *
+ * The observer activity is optimized, so it observes the document only if
+ * the panel is actually visible (the optimization is based on Firebug UI events).
+ *
+ * See issue 6582 for more details.
+ */
+var CSSPanelMutationObserver = Obj.extend(Firebug.Module,
+/** @lends CSSPanelMutationObserver */
+{
+ dispatchName: "CSSPanelMutationObserver",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Module
+
+ initialize: function()
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+
+ // Register UI listeners, so we can get events about when the CSS panel
+ // is visible and hidden.
+ Firebug.registerUIListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.Module.shutdown.apply(this, arguments);
+ Firebug.unregisterUIListener(this);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // UI Listener
+
+ onShowPanel: function(panel)
+ {
+ if (panel.name != "stylesheet" || panel.location == null)
+ return;
+
+ // The CSS panel is visible let's observe mutations.
+ this.startObserveMutations(panel);
+ },
+
+ onHidePanel: function(panel)
+ {
+ if (panel.name != "stylesheet")
+ return;
+
+ this.stopObserveMutations(panel);
+ },
+
+ onPanelNavigate: function(object, panel)
+ {
+ if (panel.name != "stylesheet" || panel.location == null)
+ return;
+
+ // Different stylesheet is displayed in the panel, restart mutation
+ // observer since the stylesheet can come from different window (an iframe).
+ this.startObserveMutations(panel);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Mutation Observer
+
+ startObserveMutations: function(panel)
+ {
+ if (panel.mutationObserver)
+ this.stopObserveMutations(panel);
+
+ var styleSheet = panel.location;
+ if (!styleSheet.ownerNode)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("CSSPanelMutationObserver.startObserveMutations ERROR no owner!");
+ return;
+ }
+
+ // Start observing mutation events. The CSS panel needs to be updated
+ // if the current stylesheet's node is removed from the document
+ var doc = styleSheet.ownerNode.ownerDocument;
+ var callback = this.onMutationObserve.bind(this, panel, styleSheet.ownerNode);
+ var observer = new MutationObserver(callback);
+ observer.observe(doc, {
+ childList: true,
+ subtree: true,
+ });
+
+ panel.mutationObserver = observer;
+
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("CSSPanelMutationObserver.startObserveMutations;");
+ },
+
+ stopObserveMutations: function(panel)
+ {
+ if (!panel.mutationObserver)
+ return;
+
+ panel.mutationObserver.disconnect();
+ panel.mutationObserver = null;
+
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("CSSPanelMutationObserver.stopObserveMutations;");
+ },
+
+ onMutationObserve: function(panel, styleSheetNode, records, observer)
+ {
+ var refresh = false;
+
+ for (var i=0; i<records.length; i++)
+ {
+ var record = records[i];
+ switch (record.type)
+ {
+ case "childList":
+ var nodes = record.removedNodes;
+ for (var j=0; j<nodes.length; j++)
+ {
+ // If the current stylesheet's owner node has been removed
+ // update the panel. The stylesheet must not be displayed
+ // since it's not part of the page anymore.
+ var node = nodes[j];
+ if (node == styleSheetNode)
+ {
+ refresh = true;
+ break;
+ }
+ }
+ }
+
+ if (refresh)
+ break;
+ }
+
+ if (refresh)
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("CSSPanelMutationObserver.onMutationObserve; refresh");
+
+ panel.location = null;
+ panel.navigate(null);
+ }
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(CSSPanelMutationObserver);
+
+return CSSPanelMutationObserver;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/css/cssPanelUpdater.js b/content/firebug/css/cssPanelUpdater.js
index 509693a..10fcb66 100644
--- a/content/firebug/css/cssPanelUpdater.js
+++ b/content/firebug/css/cssPanelUpdater.js
@@ -1,215 +1,215 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/object",
- "firebug/lib/array",
- "firebug/chrome/window",
-],
-function(FBTrace, Obj, Arr, Win) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-
-var updateTimeout = 200;
-
-var updaters = [];
-
-// ********************************************************************************************* //
-// CSSPanelUpdater Implementation
-
-/**
- * @object The object is responsible for regular update of the {@Firebug.CSSStyleSheetPanel}
- * panel to make sure the default stylesheet is displayed to the user as soon as possible.
- * Note that the only stylesheet can come from an iframe that is dynamically appended/loaded
- * onto the current page. Introduced to fix issue 6550.
- *
- * xxxHonza: this object could replace {@LoadHandler} in the future (see issue 4893).
- *
- * The update is based on the following logic.
- * - Start regular timeout (interval) if top level window or an iframe is watched.
- * - Execute passed callback in timeout handler
- * - Clear the timeout if all watched windows are loaded.
- * - The updater can be explicitly canceled with destroy() method
- * (in case the update has been successful)
- */
-function CSSPanelUpdater(context, callback)
-{
- this.context = context;
- this.callback = callback;
- this.winMap = new Map();
- this.timeout = null;
- this.canceled = false;
-
- updaters.push(this);
-}
-
-CSSPanelUpdater.prototype =
-/** @lends CSSPanelUpdater */
-{
- watchWindow: function(win)
- {
- if (this.canceled)
- return;
-
- this.winMap.set(win, true);
-
- if (this.timeout)
- return;
-
- this.timeout = this.context.setInterval(this.onTimeout.bind(this), updateTimeout);
-
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("CSSPanelUpdater.watchWindow; " + Win.safeGetWindowLocation(win) +
- ", " + this.timeout);
- }
- },
-
- unwatchWindow: function(win)
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("CSSPanelUpdater.unwatchWindow; " + Win.safeGetWindowLocation(win));
-
- if (this.canceled)
- return;
-
- this.winMap.delete(win);
-
- if (!this.winMap.size && this.timeout)
- {
- this.context.clearInterval(this.timeout);
- this.timeout = null;
- }
- },
-
- loadWindow: function(win)
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("CSSPanelUpdater.loadWindow; " + Win.safeGetWindowLocation(win));
-
- if (this.canceled)
- return;
-
- this.winMap.delete(win);
-
- if (!this.winMap.size && this.timeout)
- {
- this.context.clearInterval(this.timeout);
- this.timeout = null;
- }
-
- this.onTimeout();
- },
-
- destroy: function()
- {
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("CSSPanelUpdater.destroy; " + this.context.getName() +
- ", " + this.timeout);
- }
-
- if (this.timeout)
- this.context.clearInterval(this.timeout);
-
- this.winMap.clear();
- this.timeout = null;
- this.canceled = true;
-
- Arr.remove(updaters, this);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onTimeout: function()
- {
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("CSSPanelUpdater.onTimeout; " + this.context.getName() +
- ", " + this.timeout);
- }
-
- try
- {
- this.callback();
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("CSSPanelUpdater.onTimeout; EXCEPTION " + err, err);
- }
- }
-}
-
-// ********************************************************************************************* //
-// CSSPanelUpdaterModule
-
-/**
- * @module Helper Module object for observing {@Firebug.TabWatcher} events.
- */
-var CSSPanelUpdaterModule = Obj.extend(Firebug.Module,
-/** @lends CSSPanelUpdater */
-{
- dispatchName: "CSSPanelUpdaterModule",
-
- watchWindow: function(context, win)
- {
- // The updater works only if the CSS panel is selected (optimization and also avoid
- // updating panel's toolbar when the panel is not visible).
- if (!this.isSelected())
- return;
-
- for (var i=0; i<updaters.length; i++)
- {
- var updater = updaters[i];
- if (updater.context == context)
- updater.watchWindow(win);
- }
- },
-
- unwatchWindow: function(context, win)
- {
- if (!this.isSelected())
- return;
-
- for (var i=0; i<updaters.length; i++)
- {
- var updater = updaters[i];
- if (updater.context == context)
- updater.unwatchWindow(win);
- }
- },
-
- loadWindow: function(context, win)
- {
- if (!this.isSelected())
- return;
-
- for (var i=0; i<updaters.length; i++)
- {
- var updater = updaters[i];
- if (updater.context == context)
- updater.loadWindow(win);
- }
- },
-
- isSelected: function()
- {
- var panel = Firebug.chrome.getSelectedPanel();
- return (panel && panel.name == "stylesheet");
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(CSSPanelUpdaterModule);
-
-return CSSPanelUpdater;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/object",
+ "firebug/lib/array",
+ "firebug/chrome/window",
+],
+function(FBTrace, Obj, Arr, Win) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+
+var updateTimeout = 200;
+
+var updaters = [];
+
+// ********************************************************************************************* //
+// CSSPanelUpdater Implementation
+
+/**
+ * @object The object is responsible for regular update of the {@Firebug.CSSStyleSheetPanel}
+ * panel to make sure the default stylesheet is displayed to the user as soon as possible.
+ * Note that the only stylesheet can come from an iframe that is dynamically appended/loaded
+ * onto the current page. Introduced to fix issue 6550.
+ *
+ * xxxHonza: this object could replace {@LoadHandler} in the future (see issue 4893).
+ *
+ * The update is based on the following logic.
+ * - Start regular timeout (interval) if top level window or an iframe is watched.
+ * - Execute passed callback in timeout handler
+ * - Clear the timeout if all watched windows are loaded.
+ * - The updater can be explicitly canceled with destroy() method
+ * (in case the update has been successful)
+ */
+function CSSPanelUpdater(context, callback)
+{
+ this.context = context;
+ this.callback = callback;
+ this.winMap = new Map();
+ this.timeout = null;
+ this.canceled = false;
+
+ updaters.push(this);
+}
+
+CSSPanelUpdater.prototype =
+/** @lends CSSPanelUpdater */
+{
+ watchWindow: function(win)
+ {
+ if (this.canceled)
+ return;
+
+ this.winMap.set(win, true);
+
+ if (this.timeout)
+ return;
+
+ this.timeout = this.context.setInterval(this.onTimeout.bind(this), updateTimeout);
+
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("CSSPanelUpdater.watchWindow; " + Win.safeGetWindowLocation(win) +
+ ", " + this.timeout);
+ }
+ },
+
+ unwatchWindow: function(win)
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("CSSPanelUpdater.unwatchWindow; " + Win.safeGetWindowLocation(win));
+
+ if (this.canceled)
+ return;
+
+ this.winMap.delete(win);
+
+ if (!this.winMap.size && this.timeout)
+ {
+ this.context.clearInterval(this.timeout);
+ this.timeout = null;
+ }
+ },
+
+ loadWindow: function(win)
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("CSSPanelUpdater.loadWindow; " + Win.safeGetWindowLocation(win));
+
+ if (this.canceled)
+ return;
+
+ this.winMap.delete(win);
+
+ if (!this.winMap.size && this.timeout)
+ {
+ this.context.clearInterval(this.timeout);
+ this.timeout = null;
+ }
+
+ this.onTimeout();
+ },
+
+ destroy: function()
+ {
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("CSSPanelUpdater.destroy; " + this.context.getName() +
+ ", " + this.timeout);
+ }
+
+ if (this.timeout)
+ this.context.clearInterval(this.timeout);
+
+ this.winMap.clear();
+ this.timeout = null;
+ this.canceled = true;
+
+ Arr.remove(updaters, this);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onTimeout: function()
+ {
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("CSSPanelUpdater.onTimeout; " + this.context.getName() +
+ ", " + this.timeout);
+ }
+
+ try
+ {
+ this.callback();
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("CSSPanelUpdater.onTimeout; EXCEPTION " + err, err);
+ }
+ }
+}
+
+// ********************************************************************************************* //
+// CSSPanelUpdaterModule
+
+/**
+ * @module Helper Module object for observing {@Firebug.TabWatcher} events.
+ */
+var CSSPanelUpdaterModule = Obj.extend(Firebug.Module,
+/** @lends CSSPanelUpdater */
+{
+ dispatchName: "CSSPanelUpdaterModule",
+
+ watchWindow: function(context, win)
+ {
+ // The updater works only if the CSS panel is selected (optimization and also avoid
+ // updating panel's toolbar when the panel is not visible).
+ if (!this.isSelected())
+ return;
+
+ for (var i=0; i<updaters.length; i++)
+ {
+ var updater = updaters[i];
+ if (updater.context == context)
+ updater.watchWindow(win);
+ }
+ },
+
+ unwatchWindow: function(context, win)
+ {
+ if (!this.isSelected())
+ return;
+
+ for (var i=0; i<updaters.length; i++)
+ {
+ var updater = updaters[i];
+ if (updater.context == context)
+ updater.unwatchWindow(win);
+ }
+ },
+
+ loadWindow: function(context, win)
+ {
+ if (!this.isSelected())
+ return;
+
+ for (var i=0; i<updaters.length; i++)
+ {
+ var updater = updaters[i];
+ if (updater.context == context)
+ updater.loadWindow(win);
+ }
+ },
+
+ isSelected: function()
+ {
+ var panel = Firebug.chrome.getSelectedPanel();
+ return (panel && panel.name == "stylesheet");
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(CSSPanelUpdaterModule);
+
+return CSSPanelUpdater;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/css/cssReps.js b/content/firebug/css/cssReps.js
index 31400ec..8f48166 100644
--- a/content/firebug/css/cssReps.js
+++ b/content/firebug/css/cssReps.js
@@ -1,223 +1,223 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/chrome/infotip",
- "firebug/lib/domplate",
- "firebug/js/sourceLink",
- "firebug/lib/locale",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/lib/string",
- "firebug/lib/fonts"
-],
-function(Obj, InfoTip, Domplate, SourceLink, Locale, Dom, Css, Str, Fonts) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const maxWidth = 100;
-const maxHeight = 80;
-
-// ********************************************************************************************* //
-
-var CSSInfoTip = Obj.extend(InfoTip,
-{
- dispatchName: "cssInfoTip",
-
- tags: domplate(
- {
- infoTipTag: DIV({"class": "infoTip"}),
-
- colorTag:
- DIV({"class": "infoTipColorBox"},
- DIV({style: "background: $rgbValue; width: 100px; height: 40px;"})
- ),
-
- imgTag:
- DIV({"class": "infoTipImageBox infoTipLoading"},
- IMG({"class": "infoTipImage", src: "$urlValue", repeat: "$repeat",
- onload: "$onLoadImage", onerror: "$onErrorImage"}),
- DIV({"class": "infoTipBgImage", collapsed: true}),
- DIV({"class": "infoTipCaption"})
- ),
-
- fontFamilyTag:
- DIV({"class": "infoTipFontFamilyBox"},
- STYLE({"class": "infoTipFontFamilyStyle"}),
- DIV({"class": "infoTipFontFamilySample"},
- FOR("fontStyle", "$fontStyles",
- DIV({"class": "infoTipFontFace", style: "$fontStyle"},
- Locale.$STR("css.fontFamilyPreview"))
- )
- )
- ),
-
- onLoadImage: function(event)
- {
- var img = event.currentTarget;
- var bgImg = img.nextSibling;
- if (!bgImg)
- return; // Sometimes gets called after element is dead
-
- var caption = bgImg.nextSibling;
- var innerBox = img.parentNode;
-
- var w = img.naturalWidth, h = img.naturalHeight;
- var repeat = img.getAttribute("repeat");
-
- if (repeat == "repeat-x" || (w == 1 && h > 1))
- {
- Dom.collapse(img, true);
- Dom.collapse(bgImg, false);
- bgImg.style.background = "url(" + img.src + ") repeat-x";
- bgImg.style.width = maxWidth + "px";
- if (h > maxHeight)
- bgImg.style.height = maxHeight + "px";
- else
- bgImg.style.height = h + "px";
- }
- else if (repeat == "repeat-y" || (h == 1 && w > 1))
- {
- Dom.collapse(img, true);
- Dom.collapse(bgImg, false);
- bgImg.style.background = "url(" + img.src + ") repeat-y";
- bgImg.style.height = maxHeight + "px";
- if (w > maxWidth)
- bgImg.style.width = maxWidth + "px";
- else
- bgImg.style.width = w + "px";
- }
- else if (repeat == "repeat" || (w == 1 && h == 1))
- {
- Dom.collapse(img, true);
- Dom.collapse(bgImg, false);
- bgImg.style.background = "url(" + img.src + ") repeat";
- bgImg.style.width = maxWidth + "px";
- bgImg.style.height = maxHeight + "px";
- }
- else
- {
- if (w > maxWidth || h > maxHeight)
- {
- if (w > h)
- {
- img.style.width = maxWidth + "px";
- img.style.height = Math.round((h / w) * maxWidth) + "px";
- }
- else
- {
- img.style.width = Math.round((w / h) * maxHeight) + "px";
- img.style.height = maxHeight + "px";
- }
- }
- }
-
- caption.textContent = Locale.$STRF("Dimensions", [w, h]);
-
- Css.removeClass(innerBox, "infoTipLoading");
- },
-
- onErrorImage: function(event)
- {
- var img = event.currentTarget;
- var bgImg = img.nextSibling;
- if (!bgImg)
- return;
-
- var caption = bgImg.nextSibling;
-
- // Display an error in the caption (instead of dimensions).
- if (Str.hasPrefix(img.src, "moz-filedata"))
- caption.textContent = Locale.$STR("firebug.failedToPreviewObjectURL");
- else
- caption.textContent = Locale.$STR("firebug.failedToPreviewImageURL");
-
- var innerBox = img.parentNode;
- Css.removeClass(innerBox, "infoTipLoading");
- }
- }),
-
- populateFontFamilyInfoTip: function(infoTip, fontName)
- {
- var fontStyles = [
- "font-size:12px;",
- "font-weight:bold; font-size:12px;",
- "font-style:italic; font-size:12px;",
- "font-size:14px;",
- "font-size:18px;"
- ];
-
- var fontObject = Fonts.getFontInfo(null, null,
- fontName.replace(/^(["'])?(.*?)\1$/g, "$2"));
-
- if (FBTrace.DBG_INFOTIP)
- {
- FBTrace.sysout("infotip.populateFontFamilyInfoTip;", {fontName: fontName,
- fontObject: fontObject});
- }
-
- var node = this.tags.fontFamilyTag.replace({fontStyles: fontStyles, fontName: fontName,
- fontObject: fontObject}, infoTip);
- var styleNode = node.getElementsByClassName("infoTipFontFamilyStyle").item(0);
-
- styleNode.textContent = getFontFaceCSS(fontObject ? fontObject : fontName);
- return true;
- },
-
- populateColorInfoTip: function(infoTip, color)
- {
- this.tags.colorTag.replace({rgbValue: color}, infoTip);
- return true;
- },
-
- populateImageInfoTip: function(infoTip, url, repeat)
- {
- if (!repeat)
- repeat = "no-repeat";
-
- this.tags.imgTag.replace({urlValue: url, repeat: repeat}, infoTip);
-
- return true;
- }
-});
-
-// ********************************************************************************************* //
-// Local Helpers
-
-/**
-* Returns the CSS for the infotip @font-face CSS
-*
-* @param fontObject: Font related information
-* @return @font-face CSS
-*/
-function getFontFaceCSS(font)
-{
- var fontFaceCSS = "";
- var fontName = "";
-
- if (typeof font == "object")
- {
- if (font.rule)
- fontFaceCSS = font.rule.cssText.replace(/url\(.*?\)/g, "url(" + font.URI + ")");
- fontName = font.CSSFamilyName;
- }
- else
- {
- fontName = font;
- }
-
- fontFaceCSS += " .infoTipFontFace {font-family: " + fontName + ";}";
-
- return fontFaceCSS;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-return CSSInfoTip;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/chrome/infotip",
+ "firebug/lib/domplate",
+ "firebug/js/sourceLink",
+ "firebug/lib/locale",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/lib/string",
+ "firebug/lib/fonts"
+],
+function(Obj, InfoTip, Domplate, SourceLink, Locale, Dom, Css, Str, Fonts) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const maxWidth = 100;
+const maxHeight = 80;
+
+// ********************************************************************************************* //
+
+var CSSInfoTip = Obj.extend(InfoTip,
+{
+ dispatchName: "cssInfoTip",
+
+ tags: domplate(
+ {
+ infoTipTag: DIV({"class": "infoTip"}),
+
+ colorTag:
+ DIV({"class": "infoTipColorBox"},
+ DIV({style: "background: $rgbValue; width: 100px; height: 40px;"})
+ ),
+
+ imgTag:
+ DIV({"class": "infoTipImageBox infoTipLoading"},
+ IMG({"class": "infoTipImage", src: "$urlValue", repeat: "$repeat",
+ onload: "$onLoadImage", onerror: "$onErrorImage"}),
+ DIV({"class": "infoTipBgImage", collapsed: true}),
+ DIV({"class": "infoTipCaption"})
+ ),
+
+ fontFamilyTag:
+ DIV({"class": "infoTipFontFamilyBox"},
+ STYLE({"class": "infoTipFontFamilyStyle"}),
+ DIV({"class": "infoTipFontFamilySample"},
+ FOR("fontStyle", "$fontStyles",
+ DIV({"class": "infoTipFontFace", style: "$fontStyle"},
+ Locale.$STR("css.fontFamilyPreview"))
+ )
+ )
+ ),
+
+ onLoadImage: function(event)
+ {
+ var img = event.currentTarget;
+ var bgImg = img.nextSibling;
+ if (!bgImg)
+ return; // Sometimes gets called after element is dead
+
+ var caption = bgImg.nextSibling;
+ var innerBox = img.parentNode;
+
+ var w = img.naturalWidth, h = img.naturalHeight;
+ var repeat = img.getAttribute("repeat");
+
+ if (repeat == "repeat-x" || (w == 1 && h > 1))
+ {
+ Dom.collapse(img, true);
+ Dom.collapse(bgImg, false);
+ bgImg.style.background = "url(" + img.src + ") repeat-x";
+ bgImg.style.width = maxWidth + "px";
+ if (h > maxHeight)
+ bgImg.style.height = maxHeight + "px";
+ else
+ bgImg.style.height = h + "px";
+ }
+ else if (repeat == "repeat-y" || (h == 1 && w > 1))
+ {
+ Dom.collapse(img, true);
+ Dom.collapse(bgImg, false);
+ bgImg.style.background = "url(" + img.src + ") repeat-y";
+ bgImg.style.height = maxHeight + "px";
+ if (w > maxWidth)
+ bgImg.style.width = maxWidth + "px";
+ else
+ bgImg.style.width = w + "px";
+ }
+ else if (repeat == "repeat" || (w == 1 && h == 1))
+ {
+ Dom.collapse(img, true);
+ Dom.collapse(bgImg, false);
+ bgImg.style.background = "url(" + img.src + ") repeat";
+ bgImg.style.width = maxWidth + "px";
+ bgImg.style.height = maxHeight + "px";
+ }
+ else
+ {
+ if (w > maxWidth || h > maxHeight)
+ {
+ if (w > h)
+ {
+ img.style.width = maxWidth + "px";
+ img.style.height = Math.round((h / w) * maxWidth) + "px";
+ }
+ else
+ {
+ img.style.width = Math.round((w / h) * maxHeight) + "px";
+ img.style.height = maxHeight + "px";
+ }
+ }
+ }
+
+ caption.textContent = Locale.$STRF("Dimensions", [w, h]);
+
+ Css.removeClass(innerBox, "infoTipLoading");
+ },
+
+ onErrorImage: function(event)
+ {
+ var img = event.currentTarget;
+ var bgImg = img.nextSibling;
+ if (!bgImg)
+ return;
+
+ var caption = bgImg.nextSibling;
+
+ // Display an error in the caption (instead of dimensions).
+ if (Str.hasPrefix(img.src, "moz-filedata"))
+ caption.textContent = Locale.$STR("firebug.failedToPreviewObjectURL");
+ else
+ caption.textContent = Locale.$STR("firebug.failedToPreviewImageURL");
+
+ var innerBox = img.parentNode;
+ Css.removeClass(innerBox, "infoTipLoading");
+ }
+ }),
+
+ populateFontFamilyInfoTip: function(infoTip, fontName)
+ {
+ var fontStyles = [
+ "font-size:12px;",
+ "font-weight:bold; font-size:12px;",
+ "font-style:italic; font-size:12px;",
+ "font-size:14px;",
+ "font-size:18px;"
+ ];
+
+ var fontObject = Fonts.getFontInfo(null, null,
+ fontName.replace(/^(["'])?(.*?)\1$/g, "$2"));
+
+ if (FBTrace.DBG_INFOTIP)
+ {
+ FBTrace.sysout("infotip.populateFontFamilyInfoTip;", {fontName: fontName,
+ fontObject: fontObject});
+ }
+
+ var node = this.tags.fontFamilyTag.replace({fontStyles: fontStyles, fontName: fontName,
+ fontObject: fontObject}, infoTip);
+ var styleNode = node.getElementsByClassName("infoTipFontFamilyStyle").item(0);
+
+ styleNode.textContent = getFontFaceCSS(fontObject ? fontObject : fontName);
+ return true;
+ },
+
+ populateColorInfoTip: function(infoTip, color)
+ {
+ this.tags.colorTag.replace({rgbValue: color}, infoTip);
+ return true;
+ },
+
+ populateImageInfoTip: function(infoTip, url, repeat)
+ {
+ if (!repeat)
+ repeat = "no-repeat";
+
+ this.tags.imgTag.replace({urlValue: url, repeat: repeat}, infoTip);
+
+ return true;
+ }
+});
+
+// ********************************************************************************************* //
+// Local Helpers
+
+/**
+* Returns the CSS for the infotip @font-face CSS
+*
+* @param fontObject: Font related information
+* @return @font-face CSS
+*/
+function getFontFaceCSS(font)
+{
+ var fontFaceCSS = "";
+ var fontName = "";
+
+ if (typeof font == "object")
+ {
+ if (font.rule)
+ fontFaceCSS = font.rule.cssText.replace(/url\(.*?\)/g, "url(" + font.URI + ")");
+ fontName = font.CSSFamilyName;
+ }
+ else
+ {
+ fontName = font;
+ }
+
+ fontFaceCSS += " .infoTipFontFace {font-family: " + fontName + ";}";
+
+ return fontFaceCSS;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return CSSInfoTip;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/css/loadHandler.js b/content/firebug/css/loadHandler.js
index 06789b0..da9b9ae 100644
--- a/content/firebug/css/loadHandler.js
+++ b/content/firebug/css/loadHandler.js
@@ -1,64 +1,64 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
-],
-function(FBTrace) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-// LoadHandler Implementation
-
-/**
- * @object LoadHandler is a helper objects that automates registering and unregistering
- * 'load' listener and executes passed callback. This object is used by CSS panels that
- * need to populate theirs content after document (window) is fully loaded.
- *
- * xxxHonza: instead of waiting for window 'load' event (and so wait till all images are
- * loaded), we should wait for 'load' event fired by the stylesheet itself (see issue 4893).
- */
-function LoadHandler()
-{
- this.inProgress = false;
-}
-
-LoadHandler.prototype =
-/** @lends LoadHandler */
-{
- handle: function(context, handler)
- {
- var win = context.window;
- var doc = win.document;
-
- // Execute the handler now if the document is loaded, otherwise wait for "load" event.
- if (doc.readyState == "complete")
- return handler();
-
- if (this.inProgress)
- return;
-
- var self = this;
- var onLoadHandler = function()
- {
- context.removeEventListener(win, "load", onLoadHandler, true);
- self.inProgress = false;
- handler();
- };
-
- context.addEventListener(win, "load", onLoadHandler, true);
- this.inProgress = true;
- }
-}
-
-// ********************************************************************************************* //
-// Registration
-
-return LoadHandler;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+],
+function(FBTrace) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+// LoadHandler Implementation
+
+/**
+ * @object LoadHandler is a helper objects that automates registering and unregistering
+ * 'load' listener and executes passed callback. This object is used by CSS panels that
+ * need to populate theirs content after document (window) is fully loaded.
+ *
+ * xxxHonza: instead of waiting for window 'load' event (and so wait till all images are
+ * loaded), we should wait for 'load' event fired by the stylesheet itself (see issue 4893).
+ */
+function LoadHandler()
+{
+ this.inProgress = false;
+}
+
+LoadHandler.prototype =
+/** @lends LoadHandler */
+{
+ handle: function(context, handler)
+ {
+ var win = context.window;
+ var doc = win.document;
+
+ // Execute the handler now if the document is loaded, otherwise wait for "load" event.
+ if (doc.readyState == "complete")
+ return handler();
+
+ if (this.inProgress)
+ return;
+
+ var self = this;
+ var onLoadHandler = function()
+ {
+ context.removeEventListener(win, "load", onLoadHandler, true);
+ self.inProgress = false;
+ handler();
+ };
+
+ context.addEventListener(win, "load", onLoadHandler, true);
+ this.inProgress = true;
+ }
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return LoadHandler;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/css/selectorEditor.js b/content/firebug/css/selectorEditor.js
index 27fc5c1..7146d87 100644
--- a/content/firebug/css/selectorEditor.js
+++ b/content/firebug/css/selectorEditor.js
@@ -1,252 +1,252 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/css",
- "firebug/lib/string",
- "firebug/lib/array",
-],
-function(Firebug, Domplate, Locale, Css, Str, Arr) {
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const reSelectorChar = /[-_0-9a-zA-Z]/;
-
-// ********************************************************************************************* //
-// CSS Selector Editor
-
-function SelectorEditor() {}
-
-SelectorEditor.prototype = domplate(Firebug.InlineEditor.prototype,
-{
- getAutoCompleteRange: function(value, offset)
- {
- // Find the word part of an identifier.
- var reIdent = /[-_a-zA-Z0-9]*/;
- var rbefore = Str.reverseString(value.substr(0, offset));
- var after = value.substr(offset);
- var start = offset - reIdent.exec(rbefore)[0].length;
- var end = offset + reIdent.exec(after)[0].length;
-
- // Expand it to include '.', '#', ':', or '::'.
- if (start > 0 && ".#:".indexOf(value.charAt(start-1)) !== -1)
- {
- --start;
- if (start > 0 && value.substr(start-1, 2) === "::")
- --start;
- }
- return {start: start, end: end};
- },
-
- getAutoCompleteList: function(preExpr, expr, postExpr, range, cycle, context, out)
- {
- // Don't support attribute selectors, for now.
- if (preExpr.lastIndexOf("[") > preExpr.lastIndexOf("]"))
- return [];
-
- if (preExpr.lastIndexOf("(") > preExpr.lastIndexOf(")"))
- {
- // We are in an parenthesized expression, where we can only complete
- // for a few particular pseudo-classes that take selector-like arguments.
- var par = preExpr.lastIndexOf("("), colon = preExpr.lastIndexOf(":", par);
- if (colon === -1)
- return;
- var allowed = ["-moz-any", "not", "-moz-empty-except-children-with-localname"];
- var name = preExpr.substring(colon+1, par);
- if (allowed.indexOf(name) === -1)
- return [];
- }
-
- var includeTagNames = true;
- var includeIds = true;
- var includeClasses = true;
- var includePseudoClasses = true;
- var includePseudoElements = true;
-
- if (expr.length > 0)
- {
- includeTagNames = includeClasses = includeIds =
- includePseudoClasses = includePseudoElements = false;
- if (Str.hasPrefix(expr, "::"))
- includePseudoElements = true;
- else if (expr.charAt(0) === ":")
- includePseudoClasses = true;
- else if (expr.charAt(0) === "#")
- includeIds = true;
- else if (expr.charAt(0) === ".")
- includeClasses = true;
- else
- includeTagNames = true;
- }
- if (preExpr.length > 0 && reSelectorChar.test(preExpr.slice(-1)))
- includeTagNames = false;
-
- var ret = [];
-
- if (includeTagNames || includeIds || includeClasses)
- {
- // Traverse the DOM to get the used ids/classes/tag names that
- // are relevant as continuations.
- // (Tag names could be hard-coded, but finding which ones are
- // actually used hides annoying things like 'b'/'i' when they
- // are not used, and works in other contexts than HTML.)
- // This isn't actually that bad, performance-wise.
- var doc = context.window.document, els;
- if (preExpr && " >+~".indexOf(preExpr.slice(-1)) === -1)
- {
- try
- {
- var preSelector = preExpr.split(",").reverse()[0];
- els = doc.querySelectorAll(preSelector);
- }
- catch (exc)
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("Invalid previous selector part \"" + preSelector + "\"", exc);
- }
- }
- if (!els)
- els = doc.getElementsByTagName("*");
- els = [].slice.call(els);
-
- if (includeTagNames)
- {
- var tagMap = {};
- els.forEach(function(e)
- {
- tagMap[e.localName] = 1;
- });
- ret.push.apply(ret, Object.keys(tagMap));
- }
-
- if (includeIds)
- {
- var ids = [];
- els.forEach(function(e)
- {
- if (e.id)
- ids.push(e.id);
- });
- ids = Arr.sortUnique(ids);
- ret.push.apply(ret, ids.map(function(cl)
- {
- return "#" + cl;
- }));
- }
-
- if (includeClasses)
- {
- var clCombinationMap = Object.create(null), classes = [];
- els.forEach(function(e)
- {
- var cl = e.className;
- if (cl && !(cl in clCombinationMap))
- {
- clCombinationMap[cl] = 1;
- classes.push.apply(classes, e.classList);
- }
- });
- classes = Arr.sortUnique(classes);
- ret.push.apply(ret, classes.map(function(cl)
- {
- return "." + cl;
- }));
- }
- }
-
- if (includePseudoClasses)
- {
- // Add the pseudo-class-looking :before, :after.
- ret.push(
- ":after",
- ":before"
- );
-
- ret.push.apply(ret, SelectorEditor.stripCompletedParens(Css.pseudoClasses, postExpr));
- }
-
- if (includePseudoElements)
- {
- ret.push.apply(ret, Css.pseudoElements);
- }
-
- // Don't suggest things that are already included (by way of totally-
- // incorrect-but-probably-good-enough logic).
- var rev = Str.reverseString(preExpr);
- var partInd = rev.search(/[, >+~]/);
- var lastPart = (partInd === -1 ? rev : rev.substr(0, partInd));
- lastPart = Str.reverseString(lastPart);
- if (lastPart !== "")
- {
- ret = ret.filter(function(str)
- {
- var ind = lastPart.indexOf(str);
- if (ind === -1)
- return true;
- var before = ind-1, after = ind+str.length;
- var re = reSelectorChar;
- if (before >= 0 && re.test(str.charAt(0)) && re.test(lastPart.charAt(before)))
- return true;
- if (after < lastPart.length && re.test(lastPart.charAt(after)))
- return true;
- return false;
- });
- }
-
- // Don't suggest internal Firebug things.
- var reInternal = /^[.#]firebug[A-Z]/;
- ret = ret.filter(function(str)
- {
- return !reInternal.test(str);
- });
-
- if (ret.indexOf(":hover") !== -1)
- out.suggestion = ":hover";
-
- return ret.sort();
- },
-
- getAutoCompletePropSeparator: function(range, expr, prefixOf)
- {
- // For e.g. 'd|span', expand to a descendant selector; otherwise assume
- // that this is part of the same selector part.
- return (reSelectorChar.test(prefixOf.charAt(0)) ? " " : "");
- },
-
- autoCompleteAdjustSelection: function(value, offset)
- {
- if (offset >= 2 && value.substr(offset-2, 2) === "()")
- return offset-1;
- return offset;
- }
-});
-
-
-// Transform completions so that they don't add additional parentheses when
-// ones already exist.
-SelectorEditor.stripCompletedParens = function(list, postExpr)
-{
- var c = postExpr.charAt(0), rem = 0;
- if (c === "(")
- rem = 2;
- else if (c === ")")
- rem = 1;
- else
- return list;
- return list.map(function(cl)
- {
- return (cl.slice(-2) === "()" ? cl.slice(0, -rem) : cl);
- });
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return SelectorEditor;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/css",
+ "firebug/lib/string",
+ "firebug/lib/array",
+],
+function(Firebug, Domplate, Locale, Css, Str, Arr) {
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const reSelectorChar = /[-_0-9a-zA-Z]/;
+
+// ********************************************************************************************* //
+// CSS Selector Editor
+
+function SelectorEditor() {}
+
+SelectorEditor.prototype = domplate(Firebug.InlineEditor.prototype,
+{
+ getAutoCompleteRange: function(value, offset)
+ {
+ // Find the word part of an identifier.
+ var reIdent = /[-_a-zA-Z0-9]*/;
+ var rbefore = Str.reverseString(value.substr(0, offset));
+ var after = value.substr(offset);
+ var start = offset - reIdent.exec(rbefore)[0].length;
+ var end = offset + reIdent.exec(after)[0].length;
+
+ // Expand it to include '.', '#', ':', or '::'.
+ if (start > 0 && ".#:".indexOf(value.charAt(start-1)) !== -1)
+ {
+ --start;
+ if (start > 0 && value.substr(start-1, 2) === "::")
+ --start;
+ }
+ return {start: start, end: end};
+ },
+
+ getAutoCompleteList: function(preExpr, expr, postExpr, range, cycle, context, out)
+ {
+ // Don't support attribute selectors, for now.
+ if (preExpr.lastIndexOf("[") > preExpr.lastIndexOf("]"))
+ return [];
+
+ if (preExpr.lastIndexOf("(") > preExpr.lastIndexOf(")"))
+ {
+ // We are in an parenthesized expression, where we can only complete
+ // for a few particular pseudo-classes that take selector-like arguments.
+ var par = preExpr.lastIndexOf("("), colon = preExpr.lastIndexOf(":", par);
+ if (colon === -1)
+ return;
+ var allowed = ["-moz-any", "not", "-moz-empty-except-children-with-localname"];
+ var name = preExpr.substring(colon+1, par);
+ if (allowed.indexOf(name) === -1)
+ return [];
+ }
+
+ var includeTagNames = true;
+ var includeIds = true;
+ var includeClasses = true;
+ var includePseudoClasses = true;
+ var includePseudoElements = true;
+
+ if (expr.length > 0)
+ {
+ includeTagNames = includeClasses = includeIds =
+ includePseudoClasses = includePseudoElements = false;
+ if (Str.hasPrefix(expr, "::"))
+ includePseudoElements = true;
+ else if (expr.charAt(0) === ":")
+ includePseudoClasses = true;
+ else if (expr.charAt(0) === "#")
+ includeIds = true;
+ else if (expr.charAt(0) === ".")
+ includeClasses = true;
+ else
+ includeTagNames = true;
+ }
+ if (preExpr.length > 0 && reSelectorChar.test(preExpr.slice(-1)))
+ includeTagNames = false;
+
+ var ret = [];
+
+ if (includeTagNames || includeIds || includeClasses)
+ {
+ // Traverse the DOM to get the used ids/classes/tag names that
+ // are relevant as continuations.
+ // (Tag names could be hard-coded, but finding which ones are
+ // actually used hides annoying things like 'b'/'i' when they
+ // are not used, and works in other contexts than HTML.)
+ // This isn't actually that bad, performance-wise.
+ var doc = context.window.document, els;
+ if (preExpr && " >+~".indexOf(preExpr.slice(-1)) === -1)
+ {
+ try
+ {
+ var preSelector = preExpr.split(",").reverse()[0];
+ els = doc.querySelectorAll(preSelector);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("Invalid previous selector part \"" + preSelector + "\"", exc);
+ }
+ }
+ if (!els)
+ els = doc.getElementsByTagName("*");
+ els = [].slice.call(els);
+
+ if (includeTagNames)
+ {
+ var tagMap = {};
+ els.forEach(function(e)
+ {
+ tagMap[e.localName] = 1;
+ });
+ ret.push.apply(ret, Object.keys(tagMap));
+ }
+
+ if (includeIds)
+ {
+ var ids = [];
+ els.forEach(function(e)
+ {
+ if (e.id)
+ ids.push(e.id);
+ });
+ ids = Arr.sortUnique(ids);
+ ret.push.apply(ret, ids.map(function(cl)
+ {
+ return "#" + cl;
+ }));
+ }
+
+ if (includeClasses)
+ {
+ var clCombinationMap = Object.create(null), classes = [];
+ els.forEach(function(e)
+ {
+ var cl = e.className;
+ if (cl && !(cl in clCombinationMap))
+ {
+ clCombinationMap[cl] = 1;
+ classes.push.apply(classes, e.classList);
+ }
+ });
+ classes = Arr.sortUnique(classes);
+ ret.push.apply(ret, classes.map(function(cl)
+ {
+ return "." + cl;
+ }));
+ }
+ }
+
+ if (includePseudoClasses)
+ {
+ // Add the pseudo-class-looking :before, :after.
+ ret.push(
+ ":after",
+ ":before"
+ );
+
+ ret.push.apply(ret, SelectorEditor.stripCompletedParens(Css.pseudoClasses, postExpr));
+ }
+
+ if (includePseudoElements)
+ {
+ ret.push.apply(ret, Css.pseudoElements);
+ }
+
+ // Don't suggest things that are already included (by way of totally-
+ // incorrect-but-probably-good-enough logic).
+ var rev = Str.reverseString(preExpr);
+ var partInd = rev.search(/[, >+~]/);
+ var lastPart = (partInd === -1 ? rev : rev.substr(0, partInd));
+ lastPart = Str.reverseString(lastPart);
+ if (lastPart !== "")
+ {
+ ret = ret.filter(function(str)
+ {
+ var ind = lastPart.indexOf(str);
+ if (ind === -1)
+ return true;
+ var before = ind-1, after = ind+str.length;
+ var re = reSelectorChar;
+ if (before >= 0 && re.test(str.charAt(0)) && re.test(lastPart.charAt(before)))
+ return true;
+ if (after < lastPart.length && re.test(lastPart.charAt(after)))
+ return true;
+ return false;
+ });
+ }
+
+ // Don't suggest internal Firebug things.
+ var reInternal = /^[.#]firebug[A-Z]/;
+ ret = ret.filter(function(str)
+ {
+ return !reInternal.test(str);
+ });
+
+ if (ret.indexOf(":hover") !== -1)
+ out.suggestion = ":hover";
+
+ return ret.sort();
+ },
+
+ getAutoCompletePropSeparator: function(range, expr, prefixOf)
+ {
+ // For e.g. 'd|span', expand to a descendant selector; otherwise assume
+ // that this is part of the same selector part.
+ return (reSelectorChar.test(prefixOf.charAt(0)) ? " " : "");
+ },
+
+ autoCompleteAdjustSelection: function(value, offset)
+ {
+ if (offset >= 2 && value.substr(offset-2, 2) === "()")
+ return offset-1;
+ return offset;
+ }
+});
+
+
+// Transform completions so that they don't add additional parentheses when
+// ones already exist.
+SelectorEditor.stripCompletedParens = function(list, postExpr)
+{
+ var c = postExpr.charAt(0), rem = 0;
+ if (c === "(")
+ rem = 2;
+ else if (c === ")")
+ rem = 1;
+ else
+ return list;
+ return list.map(function(cl)
+ {
+ return (cl.slice(-2) === "()" ? cl.slice(0, -rem) : cl);
+ });
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return SelectorEditor;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/css/selectorModule.js b/content/firebug/css/selectorModule.js
index 0cc44c5..2e16a3f 100644
--- a/content/firebug/css/selectorModule.js
+++ b/content/firebug/css/selectorModule.js
@@ -1,106 +1,106 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/object",
- "firebug/lib/dom",
- "firebug/lib/locale",
- "firebug/chrome/menu"
-],
-function(Firebug, Obj, Dom, Locale, Menu) {
-
-// ********************************************************************************************* //
-// Module implementation
-
-var CSSSelectorsModule = Obj.extend(Firebug.Module,
-{
- dispatchName: "CSSSelectorsModule",
-
- initialize: function()
- {
- Firebug.registerUIListener(this);
- },
-
- shutdown: function()
- {
- Firebug.unregisterUIListener(this);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Context Menu
-
- onContextMenu: function(items, object, target, context, panel, popup)
- {
- if (panel.name != "stylesheet")
- return;
-
- var cssRule = Dom.getAncestorByClass(target, "cssRule");
- if (!cssRule)
- return;
-
- var rule = cssRule.repObject;
- if (!rule || !rule.selectorText)
- return;
-
- var panel = context.getPanel("selectors");
- if (!panel)
- return;
-
- var item = {
- id: "fbGetMatchingElements",
- nol10n: true,
- label: Locale.$STR("css.selector.cmd.getMatchingElements"),
- command: Obj.bindFixed(panel.addGroup, panel, rule.selectorText)
- };
-
- var refreshMenuItem = popup.querySelector("#fbRefresh");
- Menu.createMenuItem(popup, item, refreshMenuItem);
-
- return [];
- },
-
- matchElements: function(windows, selector)
- {
- if (selector == "")
- return;
-
- var elements = [];
-
- // Execute the query also in all iframes (see issue 5962)
- for (var i=0; i<windows.length; ++i)
- {
- var win = windows[i];
- var selections = win.document.querySelectorAll(selector);
-
- // For some reason the return value of querySelectorAll()
- // is not recognized as a NodeList anymore since Firefox 10.0.
- // See issue 5442.
- // But since there can be more iframes we need to collect all matching
- // elements in an extra array anyway.
- if (selections)
- {
- for (var j=0; j<selections.length; j++)
- {
- if (!Firebug.shouldIgnore(selections[j]))
- elements.push(selections[j]);
- }
- }
- else
- {
- throw new Error("Selection Failed: " + selections);
- }
- }
-
- return elements;
- }
-});
-
-//********************************************************************************************* //
-//Registration
-
-Firebug.registerModule(CSSSelectorsModule);
-
-return CSSSelectorsModule;
-
-//********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/object",
+ "firebug/lib/dom",
+ "firebug/lib/locale",
+ "firebug/chrome/menu"
+],
+function(Firebug, Obj, Dom, Locale, Menu) {
+
+// ********************************************************************************************* //
+// Module implementation
+
+var CSSSelectorsModule = Obj.extend(Firebug.Module,
+{
+ dispatchName: "CSSSelectorsModule",
+
+ initialize: function()
+ {
+ Firebug.registerUIListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.unregisterUIListener(this);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Context Menu
+
+ onContextMenu: function(items, object, target, context, panel, popup)
+ {
+ if (panel.name != "stylesheet")
+ return;
+
+ var cssRule = Dom.getAncestorByClass(target, "cssRule");
+ if (!cssRule)
+ return;
+
+ var rule = cssRule.repObject;
+ if (!rule || !rule.selectorText)
+ return;
+
+ var panel = context.getPanel("selectors");
+ if (!panel)
+ return;
+
+ var item = {
+ id: "fbGetMatchingElements",
+ nol10n: true,
+ label: Locale.$STR("css.selector.cmd.getMatchingElements"),
+ command: Obj.bindFixed(panel.addGroup, panel, rule.selectorText)
+ };
+
+ var refreshMenuItem = popup.querySelector("#fbRefresh");
+ Menu.createMenuItem(popup, item, refreshMenuItem);
+
+ return [];
+ },
+
+ matchElements: function(windows, selector)
+ {
+ if (selector == "")
+ return;
+
+ var elements = [];
+
+ // Execute the query also in all iframes (see issue 5962)
+ for (var i=0; i<windows.length; ++i)
+ {
+ var win = windows[i];
+ var selections = win.document.querySelectorAll(selector);
+
+ // For some reason the return value of querySelectorAll()
+ // is not recognized as a NodeList anymore since Firefox 10.0.
+ // See issue 5442.
+ // But since there can be more iframes we need to collect all matching
+ // elements in an extra array anyway.
+ if (selections)
+ {
+ for (var j=0; j<selections.length; j++)
+ {
+ if (!Firebug.shouldIgnore(selections[j]))
+ elements.push(selections[j]);
+ }
+ }
+ else
+ {
+ throw new Error("Selection Failed: " + selections);
+ }
+ }
+
+ return elements;
+ }
+});
+
+//********************************************************************************************* //
+//Registration
+
+Firebug.registerModule(CSSSelectorsModule);
+
+return CSSSelectorsModule;
+
+//********************************************************************************************* //
+});
diff --git a/content/firebug/css/selectorPanel.js b/content/firebug/css/selectorPanel.js
index b7089e9..4f1ad59 100644
--- a/content/firebug/css/selectorPanel.js
+++ b/content/firebug/css/selectorPanel.js
@@ -1,464 +1,464 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/object",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/chrome/window",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/lib/events",
- "firebug/lib/persist",
- "firebug/css/selectorModule",
- "firebug/css/selectorEditor"
-],
-function(FBTrace, Obj, Domplate, Locale, Win, Dom, Css, Events, Persist, CSSSelectorsModule,
- SelectorEditor) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// CSS Computed panel (HTML side panel)
-
-function CSSSelectorsPanel() {}
-
-CSSSelectorsPanel.prototype = Obj.extend(Firebug.Panel,
-{
- template: domplate(
- {
- selectorsTag:
- DIV({"class": "selectorTrials a11yCSSView", role: "list", "aria-label":
- Locale.$STR("aria.labels.Selectors")},
- TAG("$selectorEditorRow"),
- DIV({"class": "elementsGroups"})
- ),
-
- selectorEditorRow:
- DIV({"class": "selectorEditorContainer editorContainer a11yFocusNoTab",
- role: "button", "tabindex" : "0",
- "aria-label": Locale.$STR("a11y.labels.press_enter_to_add_new_selector"),
- onclick: "$onClickEditor"},
- Locale.$STR("css.selector.TryASelector")
- ),
-
- elementsGroupTag:
- DIV({"class": "elementsGroup foldableGroup", $opened: "$group.opened",
- role: "list", _repObject: "$group"},
- H1({"class": "cssElementsHeader groupHeader focusRow", role: "listitem"},
- DIV({"class": "twisty", role: "presentation"}),
- SPAN({"class": "cssElementsLabel groupLabel"}, "$group.selector"),
- DIV({"class": "closeButton selectorGroupRemoveButton"})
- )
- ),
-
- elementsTag:
- TABLE({"class": "cssElementsTable groupContent", role: "list"},
- TBODY({role: "presentation"},
- FOR("element", "$elements",
- TR({"class": "focusRow cssElementsRow cssElements",
- role: "listitem", _repObject: "$element"},
- TD({"class": "cssElement", role: "presentation"},
- TAG("$element|getElementTag", {object: "$element"})
- )
- )
- )
- )
- ),
-
- getElementTag: function(value)
- {
- var rep = Firebug.getRep(value);
- var tag = rep.shortTag ? rep.shortTag : rep.tag;
- return tag;
- },
-
- onClickEditor: function(event)
- {
- var target = event.currentTarget;
- var panel = Firebug.getElementPanel(target);
- Firebug.Editor.startEditing(target, "");
- }
- }),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Events
-
- onClick: function(event)
- {
- if (!Events.isLeftClick(event))
- return;
-
- var header = Dom.getAncestorByClass(event.target, "groupHeader");
- if (header)
- {
- var removeButton = Dom.getAncestorByClass(event.target, "selectorGroupRemoveButton");
- if (removeButton)
- {
- var group = Firebug.getRepObject(event.target);
- this.removeGroup(group.selector);
- }
- else
- {
- this.toggleGroup(event.target);
- }
- }
- },
-
- onMutationObserve: function(records)
- {
- var refresh = false;
-
- // To refresh the panel check whether there's at least one element, that isn't ignored
- for (var i=0, recordsLen=records.length; i<recordsLen; ++i)
- {
- var record = records[i];
- switch(record.type)
- {
- case "childList":
- var nodes = record.addedNodes;
- for (var j=0, nodesLen=nodes.length; j<nodesLen; ++j)
- {
- if (!Firebug.shouldIgnore(nodes[j]))
- {
- refresh = true;
- break;
- }
- }
-
- if (!refresh)
- {
- nodes = record.removedNodes;
- for (var j=0, nodesLen=nodes.length; j<nodesLen; ++j)
- {
- if (!Firebug.shouldIgnore(nodes[j]))
- {
- refresh = true;
- break;
- }
- }
- }
- break;
-
- case "attributes":
- if (!Firebug.shouldIgnore(record.target))
- refresh = true;
- break;
-
- case "characterData":
- if (!Firebug.shouldIgnore(record.target.parentElement))
- refresh = true;
- break;
- }
-
- if (refresh)
- break;
- }
-
- if (refresh)
- {
- this.scrollTop = this.panelNode.getElementsByClassName("elementsGroups")[0].scrollTop;
- this.refresh();
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Extends Panel
-
- name: "selectors",
- parentPanel: "stylesheet",
- order: 0,
-
- initialize: function()
- {
- this.groups = [];
- this.onClick = Obj.bind(this.onClick, this);
- this.onMutationObserve = this.onMutationObserve.bind(this);
-
- Firebug.Panel.initialize.apply(this, arguments);
- },
-
- destroy: function(state)
- {
- var scrollContainer = this.panelNode.getElementsByClassName("elementsGroups")[0];
- state.scrollTop = scrollContainer.scrollTop ?
- scrollContainer.scrollTop : this.lastScrollTop;
- state.groups = this.groups;
- Persist.persistObjects(this, state);
-
- Firebug.Panel.destroyNode.apply(this, arguments);
- },
-
- initializeNode: function(oldPanelNode)
- {
- Firebug.Panel.initializeNode.apply(this, arguments);
-
- Events.addEventListener(this.panelNode, "click", this.onClick, false);
- },
-
- destroyNode: function()
- {
- Firebug.Panel.destroyNode.apply(this, arguments);
-
- Events.removeEventListener(this.panelNode, "click", this.onClick, false);
- },
-
- supportsObject: function(object)
- {
- return 0;
- },
-
- show: function(state)
- {
- Persist.restoreObjects(this, state);
-
- if (state)
- {
- if (state.scrollTop)
- this.scrollTop = state.scrollTop;
-
- if (state.groups)
- this.groups = state.groups;
- }
-
- this.refresh();
-
- this.observeMutations();
- },
-
- hide: function()
- {
- this.mutationObserver.disconnect();
- this.mutationObserver = null;
- this.lastScrollTop = this.panelNode.getElementsByClassName("elementsGroups")[0].scrollTop;
- },
-
- watchWindow: function(context, win)
- {
- this.observeMutations(win);
- },
-
- getEditor: function(target, value)
- {
- if (!this.editor)
- this.editor = new CSSSelectorsPanelEditor(this.document);
-
- return this.editor;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // General
-
- observeMutations: function(win)
- {
- var self = this;
- if (!self.mutationObserver)
- self.mutationObserver = new MutationObserver(this.onMutationObserve);
-
- function addObserver(win)
- {
- var doc = win.document;
- self.mutationObserver.observe(doc, {
- attributes: true,
- childList: true,
- characterData: true,
- subtree: true
- });
- }
-
- // If a window is specified, use it, otherwise register observers for all
- // context windows (including the main window and all embedded iframes).
- if (win)
- addObserver(win);
- else
- Win.iterateWindows(this.context.window, addObserver);
- },
-
- refresh: function()
- {
- var parentNode = this.template.selectorsTag.replace(
- {groups: this.groups, windows: this.context.windows}, this.panelNode);
-
- if (this.groups.length == 0)
- {
- var elementsGroups = parentNode.getElementsByClassName("elementsGroups")[0];
- var box = WarningTemplate.noSelectionTag.replace({}, elementsGroups);
-
- var readMore = box.getElementsByClassName("readMore")[0];
- FirebugReps.Description.render(Locale.$STR("css.selector.readMore"),
- readMore, Obj.bind(this.onReadMore, this));
- }
- else
- {
- for (var i=0, len=this.groups.length; i<len; ++i)
- this.displayGroup(this.groups[i]);
- }
-
- if (this.scrollTop)
- {
- this.panelNode.getElementsByClassName("elementsGroups")[0].scrollTop = this.scrollTop;
- delete this.scrollTop;
- }
- },
-
- onReadMore: function()
- {
- Win.openNewTab("https://getfirebug.com/wiki/index.php/Selectors_Side_Panel");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Groups
-
- addGroup: function(selector)
- {
- var group = {
- selector: selector,
- opened: true
- }
- this.groups.push(group);
-
- this.displayGroup(group);
- },
-
- displayGroup: function(group)
- {
- var elementsGroups = this.panelNode.getElementsByClassName("elementsGroups")[0];
- var action = elementsGroups.getElementsByClassName("noSelection")[0] ?
- "replace" : "append";
- var elementsGroup = this.template.elementsGroupTag[action](
- {group: group, windows: this.context.windows}, elementsGroups);
-
- try
- {
- var elements = CSSSelectorsModule.matchElements(this.context.windows, group.selector);
- if (elements.length != 0)
- {
- this.template.elementsTag.append({elements: elements}, elementsGroup);
- }
- else
- {
- WarningTemplate.noSelectionResultsTag.append({}, elementsGroup);
- }
- }
- catch(e)
- {
- WarningTemplate.invalidSelectorTag.append({}, elementsGroup);
- }
- },
-
- toggleGroup: function(node)
- {
- var groupsNode = Dom.getAncestorByClass(node, "elementsGroups");
- var groupNode = Dom.getAncestorByClass(node, "elementsGroup");
- var group = Firebug.getRepObject(groupNode);
-
- Css.toggleClass(groupNode, "opened");
- var opened = Css.hasClass(groupNode, "opened");
- group.opened = opened;
-
- if (opened)
- {
- var offset = Dom.getClientOffset(node);
- var titleAtTop = offset.y < groupsNode.scrollTop;
-
- Dom.scrollTo(groupNode, groupsNode, null,
- groupNode.offsetHeight > groupsNode.clientHeight || titleAtTop ? "top" : "bottom");
- }
- },
-
- removeGroup: function(selector)
- {
- for (var i=0, len=this.groups.length; i<len; ++i)
- {
- if (this.groups[i].selector == selector)
- {
- this.groups.splice(i, 1);
-
- // Remove elements group from display
- var elementsGroup = this.panelNode.getElementsByClassName("elementsGroup")[i];
- elementsGroup.parentNode.removeChild(elementsGroup);
- break;
- }
- }
- }
-});
-
-function CSSSelectorsPanelEditor(doc)
-{
- this.box = this.tag.replace({}, doc, this);
- this.input = this.box;
-
- Firebug.InlineEditor.prototype.initialize.call(this);
- this.tabNavigation = false;
- this.fixedWidth = true;
-}
-
-CSSSelectorsPanelEditor.prototype = domplate(SelectorEditor.prototype,
-{
- tag:
- INPUT({"class": "fixedWidthEditor selectorsPanelEditor a11yFocusNoTab",
- type: "text",
- title: Locale.$STR("Selector"),
- oninput: "$onInput",
- onkeypress: "$onKeyPress"}
- ),
-
- saveEdit: function(target, value, previousValue)
- {
- var saveSuccess = this.isValidSelector(value);
- this.box.setAttribute("saveSuccess", saveSuccess);
- },
-
- endEditing: function(target, value, cancel)
- {
- if (cancel || value == "")
- return;
-
- this.panel.addGroup(value);
- },
-
- isValidSelector: function(value)
- {
- try
- {
- this.panel.panelNode.querySelector(value);
- return true;
- }
- catch (e)
- {
- return false;
- }
- }
-});
-
-// ********************************************************************************************* //
-
-var WarningTemplate = domplate(Firebug.Rep,
-{
- noSelectionTag:
- DIV({"class": "selectorWarning noSelection"},
- DIV(Locale.$STR("css.selector.noSelection")),
- BR(),
- DIV({"class": "readMore"})
- ),
-
- noSelectionResultsTag:
- DIV({"class": "selectorWarning noSelectionResults"},
- SPAN(Locale.$STR("css.selector.noSelectionResults"))
- ),
-
- invalidSelectorTag:
- DIV({"class": "selectorWarning invalidSelector"},
- SPAN(Locale.$STR("css.selector.invalidSelector"))
- )
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(CSSSelectorsPanel);
-
-return CSSSelectorsPanel;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/object",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/chrome/window",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/lib/events",
+ "firebug/lib/persist",
+ "firebug/css/selectorModule",
+ "firebug/css/selectorEditor"
+],
+function(FBTrace, Obj, Domplate, Locale, Win, Dom, Css, Events, Persist, CSSSelectorsModule,
+ SelectorEditor) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// CSS Computed panel (HTML side panel)
+
+function CSSSelectorsPanel() {}
+
+CSSSelectorsPanel.prototype = Obj.extend(Firebug.Panel,
+{
+ template: domplate(
+ {
+ selectorsTag:
+ DIV({"class": "selectorTrials a11yCSSView", role: "list", "aria-label":
+ Locale.$STR("aria.labels.Selectors")},
+ TAG("$selectorEditorRow"),
+ DIV({"class": "elementsGroups"})
+ ),
+
+ selectorEditorRow:
+ DIV({"class": "selectorEditorContainer editorContainer a11yFocusNoTab",
+ role: "button", "tabindex" : "0",
+ "aria-label": Locale.$STR("a11y.labels.press_enter_to_add_new_selector"),
+ onclick: "$onClickEditor"},
+ Locale.$STR("css.selector.TryASelector")
+ ),
+
+ elementsGroupTag:
+ DIV({"class": "elementsGroup foldableGroup", $opened: "$group.opened",
+ role: "list", _repObject: "$group"},
+ H1({"class": "cssElementsHeader groupHeader focusRow", role: "listitem"},
+ DIV({"class": "twisty", role: "presentation"}),
+ SPAN({"class": "cssElementsLabel groupLabel"}, "$group.selector"),
+ DIV({"class": "closeButton selectorGroupRemoveButton"})
+ )
+ ),
+
+ elementsTag:
+ TABLE({"class": "cssElementsTable groupContent", role: "list"},
+ TBODY({role: "presentation"},
+ FOR("element", "$elements",
+ TR({"class": "focusRow cssElementsRow cssElements",
+ role: "listitem", _repObject: "$element"},
+ TD({"class": "cssElement", role: "presentation"},
+ TAG("$element|getElementTag", {object: "$element"})
+ )
+ )
+ )
+ )
+ ),
+
+ getElementTag: function(value)
+ {
+ var rep = Firebug.getRep(value);
+ var tag = rep.shortTag ? rep.shortTag : rep.tag;
+ return tag;
+ },
+
+ onClickEditor: function(event)
+ {
+ var target = event.currentTarget;
+ var panel = Firebug.getElementPanel(target);
+ Firebug.Editor.startEditing(target, "");
+ }
+ }),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Events
+
+ onClick: function(event)
+ {
+ if (!Events.isLeftClick(event))
+ return;
+
+ var header = Dom.getAncestorByClass(event.target, "groupHeader");
+ if (header)
+ {
+ var removeButton = Dom.getAncestorByClass(event.target, "selectorGroupRemoveButton");
+ if (removeButton)
+ {
+ var group = Firebug.getRepObject(event.target);
+ this.removeGroup(group.selector);
+ }
+ else
+ {
+ this.toggleGroup(event.target);
+ }
+ }
+ },
+
+ onMutationObserve: function(records)
+ {
+ var refresh = false;
+
+ // To refresh the panel check whether there's at least one element, that isn't ignored
+ for (var i=0, recordsLen=records.length; i<recordsLen; ++i)
+ {
+ var record = records[i];
+ switch(record.type)
+ {
+ case "childList":
+ var nodes = record.addedNodes;
+ for (var j=0, nodesLen=nodes.length; j<nodesLen; ++j)
+ {
+ if (!Firebug.shouldIgnore(nodes[j]))
+ {
+ refresh = true;
+ break;
+ }
+ }
+
+ if (!refresh)
+ {
+ nodes = record.removedNodes;
+ for (var j=0, nodesLen=nodes.length; j<nodesLen; ++j)
+ {
+ if (!Firebug.shouldIgnore(nodes[j]))
+ {
+ refresh = true;
+ break;
+ }
+ }
+ }
+ break;
+
+ case "attributes":
+ if (!Firebug.shouldIgnore(record.target))
+ refresh = true;
+ break;
+
+ case "characterData":
+ if (!Firebug.shouldIgnore(record.target.parentElement))
+ refresh = true;
+ break;
+ }
+
+ if (refresh)
+ break;
+ }
+
+ if (refresh)
+ {
+ this.scrollTop = this.panelNode.getElementsByClassName("elementsGroups")[0].scrollTop;
+ this.refresh();
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Extends Panel
+
+ name: "selectors",
+ parentPanel: "stylesheet",
+ order: 0,
+
+ initialize: function()
+ {
+ this.groups = [];
+ this.onClick = Obj.bind(this.onClick, this);
+ this.onMutationObserve = this.onMutationObserve.bind(this);
+
+ Firebug.Panel.initialize.apply(this, arguments);
+ },
+
+ destroy: function(state)
+ {
+ var scrollContainer = this.panelNode.getElementsByClassName("elementsGroups")[0];
+ state.scrollTop = scrollContainer.scrollTop ?
+ scrollContainer.scrollTop : this.lastScrollTop;
+ state.groups = this.groups;
+ Persist.persistObjects(this, state);
+
+ Firebug.Panel.destroyNode.apply(this, arguments);
+ },
+
+ initializeNode: function(oldPanelNode)
+ {
+ Firebug.Panel.initializeNode.apply(this, arguments);
+
+ Events.addEventListener(this.panelNode, "click", this.onClick, false);
+ },
+
+ destroyNode: function()
+ {
+ Firebug.Panel.destroyNode.apply(this, arguments);
+
+ Events.removeEventListener(this.panelNode, "click", this.onClick, false);
+ },
+
+ supportsObject: function(object)
+ {
+ return 0;
+ },
+
+ show: function(state)
+ {
+ Persist.restoreObjects(this, state);
+
+ if (state)
+ {
+ if (state.scrollTop)
+ this.scrollTop = state.scrollTop;
+
+ if (state.groups)
+ this.groups = state.groups;
+ }
+
+ this.refresh();
+
+ this.observeMutations();
+ },
+
+ hide: function()
+ {
+ this.mutationObserver.disconnect();
+ this.mutationObserver = null;
+ this.lastScrollTop = this.panelNode.getElementsByClassName("elementsGroups")[0].scrollTop;
+ },
+
+ watchWindow: function(context, win)
+ {
+ this.observeMutations(win);
+ },
+
+ getEditor: function(target, value)
+ {
+ if (!this.editor)
+ this.editor = new CSSSelectorsPanelEditor(this.document);
+
+ return this.editor;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // General
+
+ observeMutations: function(win)
+ {
+ var self = this;
+ if (!self.mutationObserver)
+ self.mutationObserver = new MutationObserver(this.onMutationObserve);
+
+ function addObserver(win)
+ {
+ var doc = win.document;
+ self.mutationObserver.observe(doc, {
+ attributes: true,
+ childList: true,
+ characterData: true,
+ subtree: true
+ });
+ }
+
+ // If a window is specified, use it, otherwise register observers for all
+ // context windows (including the main window and all embedded iframes).
+ if (win)
+ addObserver(win);
+ else
+ Win.iterateWindows(this.context.window, addObserver);
+ },
+
+ refresh: function()
+ {
+ var parentNode = this.template.selectorsTag.replace(
+ {groups: this.groups, windows: this.context.windows}, this.panelNode);
+
+ if (this.groups.length == 0)
+ {
+ var elementsGroups = parentNode.getElementsByClassName("elementsGroups")[0];
+ var box = WarningTemplate.noSelectionTag.replace({}, elementsGroups);
+
+ var readMore = box.getElementsByClassName("readMore")[0];
+ FirebugReps.Description.render(Locale.$STR("css.selector.readMore"),
+ readMore, Obj.bind(this.onReadMore, this));
+ }
+ else
+ {
+ for (var i=0, len=this.groups.length; i<len; ++i)
+ this.displayGroup(this.groups[i]);
+ }
+
+ if (this.scrollTop)
+ {
+ this.panelNode.getElementsByClassName("elementsGroups")[0].scrollTop = this.scrollTop;
+ delete this.scrollTop;
+ }
+ },
+
+ onReadMore: function()
+ {
+ Win.openNewTab("https://getfirebug.com/wiki/index.php/Selectors_Side_Panel");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Groups
+
+ addGroup: function(selector)
+ {
+ var group = {
+ selector: selector,
+ opened: true
+ }
+ this.groups.push(group);
+
+ this.displayGroup(group);
+ },
+
+ displayGroup: function(group)
+ {
+ var elementsGroups = this.panelNode.getElementsByClassName("elementsGroups")[0];
+ var action = elementsGroups.getElementsByClassName("noSelection")[0] ?
+ "replace" : "append";
+ var elementsGroup = this.template.elementsGroupTag[action](
+ {group: group, windows: this.context.windows}, elementsGroups);
+
+ try
+ {
+ var elements = CSSSelectorsModule.matchElements(this.context.windows, group.selector);
+ if (elements.length != 0)
+ {
+ this.template.elementsTag.append({elements: elements}, elementsGroup);
+ }
+ else
+ {
+ WarningTemplate.noSelectionResultsTag.append({}, elementsGroup);
+ }
+ }
+ catch(e)
+ {
+ WarningTemplate.invalidSelectorTag.append({}, elementsGroup);
+ }
+ },
+
+ toggleGroup: function(node)
+ {
+ var groupsNode = Dom.getAncestorByClass(node, "elementsGroups");
+ var groupNode = Dom.getAncestorByClass(node, "elementsGroup");
+ var group = Firebug.getRepObject(groupNode);
+
+ Css.toggleClass(groupNode, "opened");
+ var opened = Css.hasClass(groupNode, "opened");
+ group.opened = opened;
+
+ if (opened)
+ {
+ var offset = Dom.getClientOffset(node);
+ var titleAtTop = offset.y < groupsNode.scrollTop;
+
+ Dom.scrollTo(groupNode, groupsNode, null,
+ groupNode.offsetHeight > groupsNode.clientHeight || titleAtTop ? "top" : "bottom");
+ }
+ },
+
+ removeGroup: function(selector)
+ {
+ for (var i=0, len=this.groups.length; i<len; ++i)
+ {
+ if (this.groups[i].selector == selector)
+ {
+ this.groups.splice(i, 1);
+
+ // Remove elements group from display
+ var elementsGroup = this.panelNode.getElementsByClassName("elementsGroup")[i];
+ elementsGroup.parentNode.removeChild(elementsGroup);
+ break;
+ }
+ }
+ }
+});
+
+function CSSSelectorsPanelEditor(doc)
+{
+ this.box = this.tag.replace({}, doc, this);
+ this.input = this.box;
+
+ Firebug.InlineEditor.prototype.initialize.call(this);
+ this.tabNavigation = false;
+ this.fixedWidth = true;
+}
+
+CSSSelectorsPanelEditor.prototype = domplate(SelectorEditor.prototype,
+{
+ tag:
+ INPUT({"class": "fixedWidthEditor selectorsPanelEditor a11yFocusNoTab",
+ type: "text",
+ title: Locale.$STR("Selector"),
+ oninput: "$onInput",
+ onkeypress: "$onKeyPress"}
+ ),
+
+ saveEdit: function(target, value, previousValue)
+ {
+ var saveSuccess = this.isValidSelector(value);
+ this.box.setAttribute("saveSuccess", saveSuccess);
+ },
+
+ endEditing: function(target, value, cancel)
+ {
+ if (cancel || value == "")
+ return;
+
+ this.panel.addGroup(value);
+ },
+
+ isValidSelector: function(value)
+ {
+ try
+ {
+ this.panel.panelNode.querySelector(value);
+ return true;
+ }
+ catch (e)
+ {
+ return false;
+ }
+ }
+});
+
+// ********************************************************************************************* //
+
+var WarningTemplate = domplate(Firebug.Rep,
+{
+ noSelectionTag:
+ DIV({"class": "selectorWarning noSelection"},
+ DIV(Locale.$STR("css.selector.noSelection")),
+ BR(),
+ DIV({"class": "readMore"})
+ ),
+
+ noSelectionResultsTag:
+ DIV({"class": "selectorWarning noSelectionResults"},
+ SPAN(Locale.$STR("css.selector.noSelectionResults"))
+ ),
+
+ invalidSelectorTag:
+ DIV({"class": "selectorWarning invalidSelector"},
+ SPAN(Locale.$STR("css.selector.invalidSelector"))
+ )
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(CSSSelectorsPanel);
+
+return CSSSelectorsPanel;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/css/stylePanel.js b/content/firebug/css/stylePanel.js
index 94a9a61..bcfc364 100644
--- a/content/firebug/css/stylePanel.js
+++ b/content/firebug/css/stylePanel.js
@@ -1,975 +1,975 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/firefox",
- "firebug/lib/domplate",
- "firebug/chrome/reps",
- "firebug/lib/xpcom",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/url",
- "firebug/lib/array",
- "firebug/js/sourceLink",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/lib/xpath",
- "firebug/lib/string",
- "firebug/lib/fonts",
- "firebug/lib/options",
- "firebug/css/cssModule",
- "firebug/css/cssPanel",
- "firebug/chrome/menu",
- "firebug/css/loadHandler",
-],
-function(Obj, Firebug, Firefox, Domplate, FirebugReps, Xpcom, Locale, Events, Url, Arr,
- SourceLink, Dom, Css, Xpath, Str, Fonts, Options, CSSModule, CSSStyleSheetPanel, Menu,
- LoadHandler) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const nsIDOMCSSStyleRule = Ci.nsIDOMCSSStyleRule;
-
-// See: http://mxr.mozilla.org/mozilla1.9.2/source/content/events/public/nsIEventStateManager.h#153
-const STATE_ACTIVE = 0x01;
-const STATE_FOCUS = 0x02;
-const STATE_HOVER = 0x04;
-
-// ********************************************************************************************* //
-// CSSStylePanel Panel (HTML side panel)
-
-/**
- * @panel Represents the Style side panel available within HTML panel. This panel is responsible
- * for displaying CSS rules associated with the currently selected element in the HTML panel.
- * See more: https://getfirebug.com/wiki/index.php/Style_Side_Panel
- */
-function CSSStylePanel() {}
-CSSStylePanel.prototype = Obj.extend(CSSStyleSheetPanel.prototype,
-/** @lends CSSStylePanel */
-{
- name: "css",
- parentPanel: "html",
- order: 0,
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Initialization
-
- initialize: function()
- {
- this.onStateChange = Obj.bindFixed(this.contentStateCheck, this);
- this.onHoverChange = Obj.bindFixed(this.contentStateCheck, this, STATE_HOVER);
- this.onActiveChange = Obj.bindFixed(this.contentStateCheck, this, STATE_ACTIVE);
-
- CSSStyleSheetPanel.prototype.initialize.apply(this, arguments);
-
- // Destroy derived updater for now.
- // xxxHonza: the Style panel could use it too?
- this.updater.destroy();
- this.updater = null;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Domplate
-
- template: domplate(
- {
- cascadedTag:
- DIV({"class": "a11yCSSView", role: "presentation"},
- DIV({"class": "cssNonInherited", role: "list",
- "aria-label": Locale.$STR("a11y.labels.style rules") },
- FOR("rule", "$rules",
- TAG("$ruleTag", {rule: "$rule"})
- )
- ),
- DIV({role: "list", "aria-label": Locale.$STR("aria.labels.inherited style rules")},
- FOR("section", "$inherited",
- H1({"class": "cssInheritHeader groupHeader focusRow", role: "listitem" },
- SPAN({"class": "cssInheritLabel"}, "$inheritLabel"),
- TAG(FirebugReps.Element.shortTag, {object: "$section.element"})
- ),
- DIV({role: "group"},
- FOR("rule", "$section.rules",
- TAG("$ruleTag", {rule: "$rule"})
- )
- )
- )
- )
- ),
-
- ruleTag:
- DIV({"class": "cssElementRuleContainer"},
- TAG(Firebug.CSSStyleRuleTag.tag, {rule: "$rule"}),
- TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"})
- ),
-
- newRuleTag:
- DIV({"class": "cssElementRuleContainer"},
- DIV({"class": "cssRule insertBefore", style: "display: none"}, "")
- ),
-
- CSSFontPropValueTag:
- FOR("part", "$propValueParts",
- SPAN({"class": "$part.type|getClass", _repObject: "$part"}, "$part.value"),
- SPAN({"class": "cssFontPropSeparator"}, "$part|getSeparator")
- ),
-
- getSeparator: function(part)
- {
- if (part.lastFont || part.type == "important")
- return "";
-
- if (part.type == "otherProps")
- return " ";
-
- return ",";
- },
-
- getClass: function(type)
- {
- switch (type)
- {
- case "used":
- return "cssPropValueUsed";
-
- case "unused":
- return "cssPropValueUnused";
-
- default:
- return "";
- }
- }
- }),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- updateCascadeView: function(element)
- {
- Events.dispatch(this.fbListeners, "onBeforeCSSRulesAdded", [this]);
-
- var result, warning, inheritLabel;
- var rules = [], sections = [], usedProps = {};
-
- this.getInheritedRules(element, sections, usedProps);
- this.getElementRules(element, rules, usedProps);
-
- if (rules.length || sections.length)
- {
- // This removes overridden properties.
- if (Firebug.onlyShowAppliedStyles)
- this.removeOverriddenProps(rules, sections);
-
- // This removes user agent rules
- if (!Firebug.showUserAgentCSS)
- this.removeSystemRules(rules, sections);
- }
-
- // Reset the selection, so that clicking that starts before the view
- // update still result in proper mouseup events (issue 5500).
- this.document.defaultView.getSelection().removeAllRanges();
-
- if (rules.length || sections.length)
- {
- inheritLabel = Locale.$STR("InheritedFrom");
- result = this.template.cascadedTag.replace({rules: rules, inherited: sections,
- inheritLabel: inheritLabel}, this.panelNode);
-
- var props = result.getElementsByClassName("cssProp");
-
- for (var i = 0; i < props.length; i++)
- {
- var prop = props[i];
- var propName = prop.getElementsByClassName("cssPropName").item(0).textContent;
- if (propName == "font-family" || propName == "font")
- {
- var propValueElem = prop.getElementsByClassName("cssPropValue").item(0);
- var propValue = propValueElem.textContent;
- var fontPropValueParts = getFontPropValueParts(element, propValue, propName);
-
- Css.setClass(propValueElem, "cssFontPropValue");
-
- // xxxsz: Web fonts not being loaded at display time
- // won't be marked as used. See issue 5420.
- this.template.CSSFontPropValueTag.replace({propValueParts: fontPropValueParts},
- propValueElem);
- }
- }
-
- Events.dispatch(this.fbListeners, "onCSSRulesAdded", [this, result]);
- }
- else
- {
- warning = FirebugReps.Warning.tag.replace({object: ""}, this.panelNode);
- result = FirebugReps.Description.render(Locale.$STR("css.EmptyElementCSS"),
- warning, Obj.bind(this.editElementStyle, this));
-
- Events.dispatch([Firebug.A11yModel], "onCSSRulesAdded", [this, result]);
- }
-
- // Avoid a flickering "disable" icon by forcing a reflow (issue 5500).
- this.panelNode.offsetHeight;
- },
-
- getStylesheetURL: function(rule, getBaseUri)
- {
- // If parentStyleSheet.href is null, then per the CSS standard this is an inline style.
- if (rule && rule.parentStyleSheet && rule.parentStyleSheet.href)
- return rule.parentStyleSheet.href;
- else if (getBaseUri)
- return this.selection.ownerDocument.baseURI;
- else
- return this.selection.ownerDocument.location.href;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getInheritedRules: function(element, sections, usedProps)
- {
- var parent = element.parentNode;
- if (parent && parent.nodeType == Node.ELEMENT_NODE)
- {
- this.getInheritedRules(parent, sections, usedProps);
-
- var rules = [];
- this.getElementRules(parent, rules, usedProps, true);
-
- if (rules.length)
- sections.unshift({element: parent, rules: rules});
- }
- },
-
- getElementRules: function(element, rules, usedProps, inheritMode)
- {
- function filterMozPseudoElements(pseudoElement)
- {
- return !Str.hasPrefix(pseudoElement, "::-moz");
- }
-
- var pseudoElements = [""];
- var inspectedRules, displayedRules = {};
-
- // Add pseudo-elements
- if (!inheritMode)
- {
- pseudoElements = Arr.extendArray(pseudoElements, Css.pseudoElements);
-
- // xxxsz: Do not show Mozilla-specific pseudo-elements for now (see issue 6451)
- // Pseudo-element rules just apply to specific elements, so we need a way to find out
- // which elements that are
- pseudoElements = pseudoElements.filter(filterMozPseudoElements);
-
- // XXXsimon: these are too nice to ignore, but stash them to the bottom of the
- // section for now so that e.g. a rule with selector "*::-moz-selection" doesn't
- // get in the way of more element-specific ones (see issue 6480). This should
- // be improved in the future when we do issue 6457 and/or add the ability to figure
- // out which pseudo-elements are actually applicable. (see https://bugzil.la/874227)
- pseudoElements.unshift("::-moz-placeholder");
- pseudoElements.unshift("::-moz-selection");
- }
-
- // The domUtils API requires the pseudo-element selectors to be prefixed by only one colon
- pseudoElements.forEach(function(pseudoElement, i)
- {
- if (Str.hasPrefix(pseudoElement, "::"))
- pseudoElements[i] = pseudoElement.substr(1);
- });
-
- for (var p in pseudoElements)
- {
- try
- {
- inspectedRules = Dom.domUtils.getCSSStyleRules(element, pseudoElements[p]);
- }
- catch (exc)
- {
- continue;
- }
-
- if (!inspectedRules)
- continue;
-
- for (var i = 0; i < inspectedRules.Count(); ++i)
- {
- var rule = Xpcom.QI(inspectedRules.GetElementAt(i), nsIDOMCSSStyleRule);
- var isSystemSheet = Url.isSystemStyleSheet(rule.parentStyleSheet);
-
- var props = this.getRuleProperties(this.context, rule, inheritMode);
- if (inheritMode && !props.length)
- continue;
-
- var isPseudoElementSheet = (pseudoElements[p] != "");
- var sourceLink = this.getSourceLink(null, rule);
-
- if (!isPseudoElementSheet)
- this.markOverriddenProps(element, props, usedProps, inheritMode);
-
- rules.unshift({
- rule: rule,
- selector: rule.selectorText.replace(/ :/g, " *:"), // (issue 3683)
- sourceLink: sourceLink,
- props: props, inherited: inheritMode,
- isSystemSheet: isSystemSheet,
- isPseudoElementSheet: isPseudoElementSheet,
- isSelectorEditable: true
- });
- }
- }
-
- if (element.style)
- this.getStyleProperties(element, rules, usedProps, inheritMode);
-
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("getElementRules " + rules.length + " rules for " +
- Xpath.getElementXPath(element), rules);
- },
-
- markOverriddenProps: function(element, props, usedProps, inheritMode)
- {
- // Element can contain an invalid name (see issue 5303)
- try
- {
- var dummyElement = element.ownerDocument.createElementNS(
- element.namespaceURI, element.tagName);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("css.markOverriddenProps:", err);
- return;
- }
-
- for (var i=0; i<props.length; i++)
- {
- var prop = props[i];
-
- // Helper array for all shorthand properties for the current property.
- prop.computed = {};
-
- // Get all shorthand propertis.
- var dummyStyle = dummyElement.style;
-
- // xxxHonza: Not sure why this happens.
- if (!dummyStyle)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("css.markOverridenProps; ERROR dummyStyle is NULL for clone " +
- "of " + element, dummyElement);
- }
- return;
- }
-
- dummyStyle.cssText = "";
- dummyStyle.setProperty(prop.name, prop.value, prop.important);
-
- var length = dummyStyle.length;
- for (var k=0; k<length; k++)
- {
- var name = dummyStyle.item(k);
-
- prop.computed[name] = {
- overridden: false
- };
-
- if (usedProps.hasOwnProperty(name))
- {
- var deadProps = usedProps[name];
-
- // all previous occurrences of this property
- for (var j=0; j<deadProps.length; j++)
- {
- var deadProp = deadProps[j];
-
- // xxxHonza: fix for issue 3009, cross out even inherited properties
- //if (deadProp.wasInherited)
- // continue;
-
- if (!deadProp.disabled && deadProp.important && !prop.important)
- {
- // new occurrence overridden
- prop.overridden = true;
-
- // Remember what exact shorthand property has been overridden.
- // This should help when we want to cross out only specific
- // part of the property value.
- if (prop.computed.hasOwnProperty(name))
- prop.computed[name].overridden = true;
- }
- else if (!prop.disabled)
- {
- // previous occurrences overridden
- deadProp.overridden = true;
-
- if (deadProp.computed.hasOwnProperty(name))
- deadProp.computed[name].overridden = true;
- }
- }
- }
- else
- {
- usedProps[name] = [];
- }
-
- // all occurrences of a property seen so far, by name
- usedProps[name].push(prop);
- }
-
- prop.wasInherited = inheritMode ? true : false;
- }
- },
-
- removeOverriddenProps: function(rules, sections)
- {
- function removeProps(rules)
- {
- var i=0;
- while (i<rules.length)
- {
- var props = rules[i].props;
-
- var j=0;
- while (j<props.length)
- {
- if (props[j].overridden)
- props.splice(j, 1);
- else
- ++j;
- }
-
- if (props.length == 0)
- rules.splice(i, 1);
- else
- ++i;
- }
- }
-
- removeProps(rules);
-
- var i=0;
- while (i < sections.length)
- {
- var section = sections[i];
- removeProps(section.rules);
-
- if (section.rules.length == 0)
- sections.splice(i, 1);
- else
- ++i;
- }
- },
-
- removeSystemRules: function(rules, sections)
- {
- function removeSystem(rules)
- {
- var i=0;
- while (i<rules.length)
- {
- if (rules[i].isSystemSheet)
- rules.splice(i, 1);
- else
- ++i;
- }
- }
-
- removeSystem(rules);
-
- var i=0;
- while (i<sections.length)
- {
- var section = sections[i];
- removeSystem(section.rules);
-
- if (section.rules.length == 0)
- sections.splice(i, 1);
- else
- ++i;
- }
- },
-
- getStyleProperties: function(element, rules, usedProps, inheritMode)
- {
- var props = this.parseCSSProps(element.style, inheritMode);
- this.addDisabledProperties(this.context, element, inheritMode, props);
-
- this.sortProperties(props);
-
- this.markOverriddenProps(element, props, usedProps, inheritMode);
-
- if (props.length)
- {
- rules.unshift({rule: element, selector: "element.style",
- props: props, inherited: inheritMode});
- }
- },
-
- inspectDeclaration: function(rule)
- {
- Firebug.chrome.select(rule, "stylesheet");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Panel
-
- show: function(state)
- {
- if (this.selection)
- this.refresh();
- },
-
- watchWindow: function(context, win)
- {
- if (Dom.domUtils)
- {
- // Normally these would not be required, but in order to update after the state is set
- // using the options menu we need to monitor these global events as well
- context.addEventListener(win, "mouseover", this.onHoverChange, false);
- context.addEventListener(win, "mousedown", this.onActiveChange, false);
- }
- },
-
- unwatchWindow: function(context, win)
- {
- context.removeEventListener(win, "mouseover", this.onHoverChange, false);
- context.removeEventListener(win, "mousedown", this.onActiveChange, false);
-
- var doc = win.document;
- if (Dom.isAncestor(this.stateChangeEl, doc))
- this.removeStateChangeHandlers();
- },
-
- supportsObject: function(object, type)
- {
- return object instanceof window.Element ? 1 : 0;
- },
-
- updateView: function(element)
- {
- // We can properly update the view only if the page is fully loaded (see issue 5654).
- var loadHandler = new LoadHandler();
- loadHandler.handle(this.context, Obj.bindFixed(this.doUpdateView, this, element));
- },
-
- doUpdateView: function(element)
- {
- // All stylesheets should be ready now, update the view.
- this.updateCascadeView(element);
-
- if (Dom.domUtils)
- {
- this.contentState = safeGetContentState(element);
- this.addStateChangeHandlers(element);
- }
- },
-
- updateSelection: function(element)
- {
- if (!(element instanceof window.Element)) // html supports SourceLink
- return;
-
- var sothinkInstalled = !!Firefox.getElementById("swfcatcherKey_sidebar");
- if (sothinkInstalled)
- {
- var div = FirebugReps.Warning.tag.replace({object: "SothinkWarning"}, this.panelNode);
- div.textContent = Locale.$STR("SothinkWarning");
- return;
- }
-
- this.updateView(element);
- },
-
- updateOption: function(name, value)
- {
- var options = new Set();
- options.add("onlyShowAppliedStyles");
- options.add("showUserAgentCSS");
- options.add("expandShorthandProps");
- options.add("colorDisplay");
- options.add("showMozillaSpecificStyles");
-
- if (options.has(name))
- this.refresh();
- },
-
- getOptionsMenuItems: function()
- {
- var items = [
- Menu.optionMenu("Only_Show_Applied_Styles", "onlyShowAppliedStyles",
- "style.option.tip.Only_Show_Applied_Styles"),
- Menu.optionMenu("Show_User_Agent_CSS", "showUserAgentCSS",
- "style.option.tip.Show_User_Agent_CSS"),
- Menu.optionMenu("Expand_Shorthand_Properties", "expandShorthandProps",
- "css.option.tip.Expand_Shorthand_Properties")
- ];
-
- items = Arr.extendArray(items, CSSModule.getColorDisplayOptionMenuItems());
-
- if (Dom.domUtils && this.selection)
- {
- var self = this;
-
- items.push(
- "-",
- {
- label: "style.option.label.hover",
- type: "checkbox",
- checked: self.hasPseudoClassLock(":hover"),
- tooltiptext: "style.option.tip.hover",
- command: function()
- {
- self.togglePseudoClassLock(":hover");
- }
- },
- {
- label: "style.option.label.active",
- type: "checkbox",
- checked: self.hasPseudoClassLock(":active"),
- tooltiptext: "style.option.tip.active",
- command: function()
- {
- self.togglePseudoClassLock(":active");
- }
- }
- );
-
- if (Dom.domUtils.hasPseudoClassLock)
- {
- items.push(
- {
- label: "style.option.label.focus",
- type: "checkbox",
- checked: self.hasPseudoClassLock(":focus"),
- tooltiptext: "style.option.tip.focus",
- command: function()
- {
- self.togglePseudoClassLock(":focus");
- }
- }
- );
- }
- }
-
- return items;
- },
-
- getContextMenuItems: function(style, target)
- {
- var items = CSSStyleSheetPanel.prototype.getContextMenuItems.apply(this, [style, target]);
- var insertIndex = 0;
-
- for (var i = 0; i < items.length; ++i)
- {
- if (items[i].id == "fbNewCSSRule")
- {
- items.splice(i, 1);
- insertIndex = i;
- break;
- }
- }
-
- items.splice(insertIndex, 0, {
- label: "EditStyle",
- tooltiptext: "style.tip.Edit_Style",
- command: Obj.bindFixed(this.editElementStyle, this)
- },
- {
- label: "AddRule",
- tooltiptext: "css.tip.AddRule",
- command: Obj.bindFixed(this.addRelatedRule, this)
- });
-
- if (style && style.font && style.font.rule)
- {
- items.push(
- "-",
- {
- label: "css.label.Inspect_Declaration",
- tooltiptext: "css.tip.Inspect_Declaration",
- id: "fbInspectDeclaration",
- command: Obj.bindFixed(this.inspectDeclaration, this, style.font.rule)
- }
- );
- }
-
- return items;
- },
-
- showInfoTip: function(infoTip, target, x, y, rangeParent, rangeOffset)
- {
- var prop = Dom.getAncestorByClass(target, "cssProp");
- if (prop)
- var propNameNode = prop.getElementsByClassName("cssPropName").item(0);
-
- if (propNameNode && (propNameNode.textContent.toLowerCase() == "font" ||
- propNameNode.textContent.toLowerCase() == "font-family"))
- {
- var prevSibling = target.previousElementSibling;
- while (prevSibling)
- {
- rangeOffset += prevSibling.textContent.length;
- prevSibling = prevSibling.previousElementSibling;
- }
- }
-
- return CSSStyleSheetPanel.prototype.showInfoTip.call(
- this, infoTip, target, x, y, rangeParent, rangeOffset);
- },
-
- getCurrentColor: function()
- {
- var cs = this.selection.ownerDocument.defaultView.getComputedStyle(this.selection);
- return cs.getPropertyValue("color");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Extends stylesheet (CSS Panel)
-
- deleteRuleDeclaration: function(cssSelector)
- {
- var repObject = Firebug.getRepObject(cssSelector);
-
- if (repObject instanceof window.Element)
- CSSModule.deleteRule(repObject);
- else
- CSSStyleSheetPanel.prototype.deleteRuleDeclaration(cssSelector);
-
- this.refresh();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- hasPseudoClassLock: function(pseudoClass)
- {
- if (Dom.domUtils.hasPseudoClassLock)
- {
- return Dom.domUtils.hasPseudoClassLock(this.selection, pseudoClass);
- }
- else
- {
- // Fallback in case the new pseudo-class lock API isn't available
- var state = safeGetContentState(this.selection);
- switch(pseudoClass)
- {
- case ":active":
- return state & STATE_ACTIVE;
-
- case ":hover":
- return state & STATE_HOVER;
- }
- }
- },
-
- togglePseudoClassLock: function(pseudoClass)
- {
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("css.togglePseudoClassLock; pseudo-class: " + pseudoClass);
-
- if (Dom.domUtils.hasPseudoClassLock)
- {
- if (Dom.domUtils.hasPseudoClassLock(this.selection, pseudoClass))
- Dom.domUtils.removePseudoClassLock(this.selection, pseudoClass);
- else
- Dom.domUtils.addPseudoClassLock(this.selection, pseudoClass);
- }
- else
- {
- // Fallback in case the new pseudo-class lock API isn't available
- var currentState = safeGetContentState(this.selection);
- var remove = false;
- switch(pseudoClass)
- {
- case ":active":
- state = STATE_ACTIVE;
- break;
-
- case ":hover":
- state = STATE_HOVER;
- break;
- }
- remove = currentState & state;
-
- Dom.domUtils.setContentState(remove ? this.selection.ownerDocument.documentElement :
- this.selection, state);
- }
-
- this.refresh();
- },
-
- clearPseudoClassLocks: function()
- {
- if (Dom.domUtils.clearPseudoClassLocks)
- Dom.domUtils.clearPseudoClassLocks(this.selection);
- },
-
- addStateChangeHandlers: function(el)
- {
- this.removeStateChangeHandlers();
-
- Events.addEventListener(el, "focus", this.onStateChange, true);
- Events.addEventListener(el, "blur", this.onStateChange, true);
- Events.addEventListener(el, "mouseup", this.onStateChange, false);
- Events.addEventListener(el, "mousedown", this.onStateChange, false);
- Events.addEventListener(el, "mouseover", this.onStateChange, false);
- Events.addEventListener(el, "mouseout", this.onStateChange, false);
-
- this.stateChangeEl = el;
- },
-
- removeStateChangeHandlers: function()
- {
- var sel = this.stateChangeEl;
- if (sel)
- {
- Events.removeEventListener(sel, "focus", this.onStateChange, true);
- Events.removeEventListener(sel, "blur", this.onStateChange, true);
- Events.removeEventListener(sel, "mouseup", this.onStateChange, false);
- Events.removeEventListener(sel, "mousedown", this.onStateChange, false);
- Events.removeEventListener(sel, "mouseover", this.onStateChange, false);
- Events.removeEventListener(sel, "mouseout", this.onStateChange, false);
- }
-
- this.stateChangeEl = null;
- },
-
- contentStateCheck: function(state)
- {
- if (!state || this.contentState & state)
- {
- var timeoutRunner = Obj.bindFixed(function()
- {
- var newState = safeGetContentState(this.selection);
- if (newState != this.contentState)
- {
- this.context.invalidatePanels(this.name);
- }
- }, this);
-
- // Delay exec until after the event has processed and the state has been updated
- setTimeout(timeoutRunner, 0);
- }
- }
-});
-
-// ********************************************************************************************* //
-// Helpers
-
-function safeGetContentState(selection)
-{
- try
- {
- if (selection && selection.ownerDocument)
- return Dom.domUtils.getContentState(selection);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS && FBTrace.DBG_CSS)
- FBTrace.sysout("css.safeGetContentState; EXCEPTION "+e, e);
- }
-}
-
-function getFontPropValueParts(element, value, propName)
-{
- const genericFontFamilies =
- {
- "serif": 1,
- "sans-serif": 1,
- "cursive": 1,
- "fantasy": 1,
- "monospace": 1,
- };
-
- var parts = [], origValue = value;
-
- // (Mirroring CSSModule.parseCSSFontFamilyValue)
- if (propName === "font")
- {
- var rePreFont = new RegExp(
- "^.*" + // anything, then
- "(" +
- "\\d+(\\.\\d+)?([a-z]*|%)|" + // a number (with possible unit)
- "(x{1,2}-)?(small|large)|medium|larger|smaller" + // or an named size description
- ") "
- );
- var matches = rePreFont.exec(value);
- if (!matches)
- {
- // Non-simple font value, like "inherit", "status-bar" or
- // "calc(12px) Arial" - just return the whole text.
- return [{type: "otherProps", value: value, lastFont: true}];
- }
- var preProps = matches[0].slice(0, -1);
- parts.push({type: "otherProps", value: preProps});
- value = value.substr(matches[0].length);
- }
-
- var matches = /^(.*?)( !important)?$/.exec(value);
- var fonts = matches[1].split(",");
-
- // What we want to know is what the specified "font-family" property means
- // for the selected element's text, not what the element actually uses (that
- // depends on font styles of its descendants). Thus, we just check the direct
- // child text nodes of the element.
- // Do not create a temporary element for testing to avoid problems like in
- // issue 5905 and 6048
- var usedFonts = [];
- var child = element.firstChild;
- do
- {
- if (!child)
- break;
-
- if (child.nodeType == Node.TEXT_NODE)
- usedFonts = Arr.extendArray(usedFonts, Fonts.getFonts(child));
- }
- while (child = child.nextSibling);
-
- var genericFontUsed = false;
- for (var i = 0; i < fonts.length; ++i)
- {
- var font = fonts[i].replace(/^["'](.*)["']$/, "$1").toLowerCase();
- var isGeneric = genericFontFamilies.hasOwnProperty(font);
- var isUsedFont = false;
-
- for (var j = 0; j < usedFonts.length; ++j)
- {
- var usedFont = usedFonts[j].CSSFamilyName.toLowerCase();
- if (font == usedFont || (isGeneric && !genericFontUsed))
- {
- parts.push({type: "used", value: fonts[i], font: usedFonts[j]});
- usedFonts.splice(j, 1);
-
- isUsedFont = true;
- if (isGeneric)
- genericFontUsed = true;
- break;
- }
- }
-
- if (!isUsedFont)
- parts.push({type: "unused", value: fonts[i]});
- }
-
- // xxxsz: Domplate doesn't allow to check for the last element in an array yet,
- // so use this as hack
- parts[parts.length-1].lastFont = true;
-
- if (matches[2])
- parts.push({type: "important", value: " !important"});
-
- return parts;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(CSSStylePanel);
-
-return CSSStylePanel;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/firefox",
+ "firebug/lib/domplate",
+ "firebug/chrome/reps",
+ "firebug/lib/xpcom",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/url",
+ "firebug/lib/array",
+ "firebug/js/sourceLink",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/lib/xpath",
+ "firebug/lib/string",
+ "firebug/lib/fonts",
+ "firebug/lib/options",
+ "firebug/css/cssModule",
+ "firebug/css/cssPanel",
+ "firebug/chrome/menu",
+ "firebug/css/loadHandler",
+],
+function(Obj, Firebug, Firefox, Domplate, FirebugReps, Xpcom, Locale, Events, Url, Arr,
+ SourceLink, Dom, Css, Xpath, Str, Fonts, Options, CSSModule, CSSStyleSheetPanel, Menu,
+ LoadHandler) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const nsIDOMCSSStyleRule = Ci.nsIDOMCSSStyleRule;
+
+// See: http://mxr.mozilla.org/mozilla1.9.2/source/content/events/public/nsIEventStateManager.h#153
+const STATE_ACTIVE = 0x01;
+const STATE_FOCUS = 0x02;
+const STATE_HOVER = 0x04;
+
+// ********************************************************************************************* //
+// CSSStylePanel Panel (HTML side panel)
+
+/**
+ * @panel Represents the Style side panel available within HTML panel. This panel is responsible
+ * for displaying CSS rules associated with the currently selected element in the HTML panel.
+ * See more: https://getfirebug.com/wiki/index.php/Style_Side_Panel
+ */
+function CSSStylePanel() {}
+CSSStylePanel.prototype = Obj.extend(CSSStyleSheetPanel.prototype,
+/** @lends CSSStylePanel */
+{
+ name: "css",
+ parentPanel: "html",
+ order: 0,
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Initialization
+
+ initialize: function()
+ {
+ this.onStateChange = Obj.bindFixed(this.contentStateCheck, this);
+ this.onHoverChange = Obj.bindFixed(this.contentStateCheck, this, STATE_HOVER);
+ this.onActiveChange = Obj.bindFixed(this.contentStateCheck, this, STATE_ACTIVE);
+
+ CSSStyleSheetPanel.prototype.initialize.apply(this, arguments);
+
+ // Destroy derived updater for now.
+ // xxxHonza: the Style panel could use it too?
+ this.updater.destroy();
+ this.updater = null;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Domplate
+
+ template: domplate(
+ {
+ cascadedTag:
+ DIV({"class": "a11yCSSView", role: "presentation"},
+ DIV({"class": "cssNonInherited", role: "list",
+ "aria-label": Locale.$STR("a11y.labels.style rules") },
+ FOR("rule", "$rules",
+ TAG("$ruleTag", {rule: "$rule"})
+ )
+ ),
+ DIV({role: "list", "aria-label": Locale.$STR("aria.labels.inherited style rules")},
+ FOR("section", "$inherited",
+ H1({"class": "cssInheritHeader groupHeader focusRow", role: "listitem" },
+ SPAN({"class": "cssInheritLabel"}, "$inheritLabel"),
+ TAG(FirebugReps.Element.shortTag, {object: "$section.element"})
+ ),
+ DIV({role: "group"},
+ FOR("rule", "$section.rules",
+ TAG("$ruleTag", {rule: "$rule"})
+ )
+ )
+ )
+ )
+ ),
+
+ ruleTag:
+ DIV({"class": "cssElementRuleContainer"},
+ TAG(Firebug.CSSStyleRuleTag.tag, {rule: "$rule"}),
+ TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"})
+ ),
+
+ newRuleTag:
+ DIV({"class": "cssElementRuleContainer"},
+ DIV({"class": "cssRule insertBefore", style: "display: none"}, "")
+ ),
+
+ CSSFontPropValueTag:
+ FOR("part", "$propValueParts",
+ SPAN({"class": "$part.type|getClass", _repObject: "$part"}, "$part.value"),
+ SPAN({"class": "cssFontPropSeparator"}, "$part|getSeparator")
+ ),
+
+ getSeparator: function(part)
+ {
+ if (part.lastFont || part.type == "important")
+ return "";
+
+ if (part.type == "otherProps")
+ return " ";
+
+ return ",";
+ },
+
+ getClass: function(type)
+ {
+ switch (type)
+ {
+ case "used":
+ return "cssPropValueUsed";
+
+ case "unused":
+ return "cssPropValueUnused";
+
+ default:
+ return "";
+ }
+ }
+ }),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ updateCascadeView: function(element)
+ {
+ Events.dispatch(this.fbListeners, "onBeforeCSSRulesAdded", [this]);
+
+ var result, warning, inheritLabel;
+ var rules = [], sections = [], usedProps = {};
+
+ this.getInheritedRules(element, sections, usedProps);
+ this.getElementRules(element, rules, usedProps);
+
+ if (rules.length || sections.length)
+ {
+ // This removes overridden properties.
+ if (Firebug.onlyShowAppliedStyles)
+ this.removeOverriddenProps(rules, sections);
+
+ // This removes user agent rules
+ if (!Firebug.showUserAgentCSS)
+ this.removeSystemRules(rules, sections);
+ }
+
+ // Reset the selection, so that clicking that starts before the view
+ // update still result in proper mouseup events (issue 5500).
+ this.document.defaultView.getSelection().removeAllRanges();
+
+ if (rules.length || sections.length)
+ {
+ inheritLabel = Locale.$STR("InheritedFrom");
+ result = this.template.cascadedTag.replace({rules: rules, inherited: sections,
+ inheritLabel: inheritLabel}, this.panelNode);
+
+ var props = result.getElementsByClassName("cssProp");
+
+ for (var i = 0; i < props.length; i++)
+ {
+ var prop = props[i];
+ var propName = prop.getElementsByClassName("cssPropName").item(0).textContent;
+ if (propName == "font-family" || propName == "font")
+ {
+ var propValueElem = prop.getElementsByClassName("cssPropValue").item(0);
+ var propValue = propValueElem.textContent;
+ var fontPropValueParts = getFontPropValueParts(element, propValue, propName);
+
+ Css.setClass(propValueElem, "cssFontPropValue");
+
+ // xxxsz: Web fonts not being loaded at display time
+ // won't be marked as used. See issue 5420.
+ this.template.CSSFontPropValueTag.replace({propValueParts: fontPropValueParts},
+ propValueElem);
+ }
+ }
+
+ Events.dispatch(this.fbListeners, "onCSSRulesAdded", [this, result]);
+ }
+ else
+ {
+ warning = FirebugReps.Warning.tag.replace({object: ""}, this.panelNode);
+ result = FirebugReps.Description.render(Locale.$STR("css.EmptyElementCSS"),
+ warning, Obj.bind(this.editElementStyle, this));
+
+ Events.dispatch([Firebug.A11yModel], "onCSSRulesAdded", [this, result]);
+ }
+
+ // Avoid a flickering "disable" icon by forcing a reflow (issue 5500).
+ this.panelNode.offsetHeight;
+ },
+
+ getStylesheetURL: function(rule, getBaseUri)
+ {
+ // If parentStyleSheet.href is null, then per the CSS standard this is an inline style.
+ if (rule && rule.parentStyleSheet && rule.parentStyleSheet.href)
+ return rule.parentStyleSheet.href;
+ else if (getBaseUri)
+ return this.selection.ownerDocument.baseURI;
+ else
+ return this.selection.ownerDocument.location.href;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getInheritedRules: function(element, sections, usedProps)
+ {
+ var parent = element.parentNode;
+ if (parent && parent.nodeType == Node.ELEMENT_NODE)
+ {
+ this.getInheritedRules(parent, sections, usedProps);
+
+ var rules = [];
+ this.getElementRules(parent, rules, usedProps, true);
+
+ if (rules.length)
+ sections.unshift({element: parent, rules: rules});
+ }
+ },
+
+ getElementRules: function(element, rules, usedProps, inheritMode)
+ {
+ function filterMozPseudoElements(pseudoElement)
+ {
+ return !Str.hasPrefix(pseudoElement, "::-moz");
+ }
+
+ var pseudoElements = [""];
+ var inspectedRules, displayedRules = {};
+
+ // Add pseudo-elements
+ if (!inheritMode)
+ {
+ pseudoElements = Arr.extendArray(pseudoElements, Css.pseudoElements);
+
+ // xxxsz: Do not show Mozilla-specific pseudo-elements for now (see issue 6451)
+ // Pseudo-element rules just apply to specific elements, so we need a way to find out
+ // which elements that are
+ pseudoElements = pseudoElements.filter(filterMozPseudoElements);
+
+ // XXXsimon: these are too nice to ignore, but stash them to the bottom of the
+ // section for now so that e.g. a rule with selector "*::-moz-selection" doesn't
+ // get in the way of more element-specific ones (see issue 6480). This should
+ // be improved in the future when we do issue 6457 and/or add the ability to figure
+ // out which pseudo-elements are actually applicable. (see https://bugzil.la/874227)
+ pseudoElements.unshift("::-moz-placeholder");
+ pseudoElements.unshift("::-moz-selection");
+ }
+
+ // The domUtils API requires the pseudo-element selectors to be prefixed by only one colon
+ pseudoElements.forEach(function(pseudoElement, i)
+ {
+ if (Str.hasPrefix(pseudoElement, "::"))
+ pseudoElements[i] = pseudoElement.substr(1);
+ });
+
+ for (var p in pseudoElements)
+ {
+ try
+ {
+ inspectedRules = Dom.domUtils.getCSSStyleRules(element, pseudoElements[p]);
+ }
+ catch (exc)
+ {
+ continue;
+ }
+
+ if (!inspectedRules)
+ continue;
+
+ for (var i = 0; i < inspectedRules.Count(); ++i)
+ {
+ var rule = Xpcom.QI(inspectedRules.GetElementAt(i), nsIDOMCSSStyleRule);
+ var isSystemSheet = Url.isSystemStyleSheet(rule.parentStyleSheet);
+
+ var props = this.getRuleProperties(this.context, rule, inheritMode);
+ if (inheritMode && !props.length)
+ continue;
+
+ var isPseudoElementSheet = (pseudoElements[p] != "");
+ var sourceLink = this.getSourceLink(null, rule);
+
+ if (!isPseudoElementSheet)
+ this.markOverriddenProps(element, props, usedProps, inheritMode);
+
+ rules.unshift({
+ rule: rule,
+ selector: rule.selectorText.replace(/ :/g, " *:"), // (issue 3683)
+ sourceLink: sourceLink,
+ props: props, inherited: inheritMode,
+ isSystemSheet: isSystemSheet,
+ isPseudoElementSheet: isPseudoElementSheet,
+ isSelectorEditable: true
+ });
+ }
+ }
+
+ if (element.style)
+ this.getStyleProperties(element, rules, usedProps, inheritMode);
+
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("getElementRules " + rules.length + " rules for " +
+ Xpath.getElementXPath(element), rules);
+ },
+
+ markOverriddenProps: function(element, props, usedProps, inheritMode)
+ {
+ // Element can contain an invalid name (see issue 5303)
+ try
+ {
+ var dummyElement = element.ownerDocument.createElementNS(
+ element.namespaceURI, element.tagName);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("css.markOverriddenProps:", err);
+ return;
+ }
+
+ for (var i=0; i<props.length; i++)
+ {
+ var prop = props[i];
+
+ // Helper array for all shorthand properties for the current property.
+ prop.computed = {};
+
+ // Get all shorthand propertis.
+ var dummyStyle = dummyElement.style;
+
+ // xxxHonza: Not sure why this happens.
+ if (!dummyStyle)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("css.markOverridenProps; ERROR dummyStyle is NULL for clone " +
+ "of " + element, dummyElement);
+ }
+ return;
+ }
+
+ dummyStyle.cssText = "";
+ dummyStyle.setProperty(prop.name, prop.value, prop.important);
+
+ var length = dummyStyle.length;
+ for (var k=0; k<length; k++)
+ {
+ var name = dummyStyle.item(k);
+
+ prop.computed[name] = {
+ overridden: false
+ };
+
+ if (usedProps.hasOwnProperty(name))
+ {
+ var deadProps = usedProps[name];
+
+ // all previous occurrences of this property
+ for (var j=0; j<deadProps.length; j++)
+ {
+ var deadProp = deadProps[j];
+
+ // xxxHonza: fix for issue 3009, cross out even inherited properties
+ //if (deadProp.wasInherited)
+ // continue;
+
+ if (!deadProp.disabled && deadProp.important && !prop.important)
+ {
+ // new occurrence overridden
+ prop.overridden = true;
+
+ // Remember what exact shorthand property has been overridden.
+ // This should help when we want to cross out only specific
+ // part of the property value.
+ if (prop.computed.hasOwnProperty(name))
+ prop.computed[name].overridden = true;
+ }
+ else if (!prop.disabled)
+ {
+ // previous occurrences overridden
+ deadProp.overridden = true;
+
+ if (deadProp.computed.hasOwnProperty(name))
+ deadProp.computed[name].overridden = true;
+ }
+ }
+ }
+ else
+ {
+ usedProps[name] = [];
+ }
+
+ // all occurrences of a property seen so far, by name
+ usedProps[name].push(prop);
+ }
+
+ prop.wasInherited = inheritMode ? true : false;
+ }
+ },
+
+ removeOverriddenProps: function(rules, sections)
+ {
+ function removeProps(rules)
+ {
+ var i=0;
+ while (i<rules.length)
+ {
+ var props = rules[i].props;
+
+ var j=0;
+ while (j<props.length)
+ {
+ if (props[j].overridden)
+ props.splice(j, 1);
+ else
+ ++j;
+ }
+
+ if (props.length == 0)
+ rules.splice(i, 1);
+ else
+ ++i;
+ }
+ }
+
+ removeProps(rules);
+
+ var i=0;
+ while (i < sections.length)
+ {
+ var section = sections[i];
+ removeProps(section.rules);
+
+ if (section.rules.length == 0)
+ sections.splice(i, 1);
+ else
+ ++i;
+ }
+ },
+
+ removeSystemRules: function(rules, sections)
+ {
+ function removeSystem(rules)
+ {
+ var i=0;
+ while (i<rules.length)
+ {
+ if (rules[i].isSystemSheet)
+ rules.splice(i, 1);
+ else
+ ++i;
+ }
+ }
+
+ removeSystem(rules);
+
+ var i=0;
+ while (i<sections.length)
+ {
+ var section = sections[i];
+ removeSystem(section.rules);
+
+ if (section.rules.length == 0)
+ sections.splice(i, 1);
+ else
+ ++i;
+ }
+ },
+
+ getStyleProperties: function(element, rules, usedProps, inheritMode)
+ {
+ var props = this.parseCSSProps(element.style, inheritMode);
+ this.addDisabledProperties(this.context, element, inheritMode, props);
+
+ this.sortProperties(props);
+
+ this.markOverriddenProps(element, props, usedProps, inheritMode);
+
+ if (props.length)
+ {
+ rules.unshift({rule: element, selector: "element.style",
+ props: props, inherited: inheritMode});
+ }
+ },
+
+ inspectDeclaration: function(rule)
+ {
+ Firebug.chrome.select(rule, "stylesheet");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Panel
+
+ show: function(state)
+ {
+ if (this.selection)
+ this.refresh();
+ },
+
+ watchWindow: function(context, win)
+ {
+ if (Dom.domUtils)
+ {
+ // Normally these would not be required, but in order to update after the state is set
+ // using the options menu we need to monitor these global events as well
+ context.addEventListener(win, "mouseover", this.onHoverChange, false);
+ context.addEventListener(win, "mousedown", this.onActiveChange, false);
+ }
+ },
+
+ unwatchWindow: function(context, win)
+ {
+ context.removeEventListener(win, "mouseover", this.onHoverChange, false);
+ context.removeEventListener(win, "mousedown", this.onActiveChange, false);
+
+ var doc = win.document;
+ if (Dom.isAncestor(this.stateChangeEl, doc))
+ this.removeStateChangeHandlers();
+ },
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof window.Element ? 1 : 0;
+ },
+
+ updateView: function(element)
+ {
+ // We can properly update the view only if the page is fully loaded (see issue 5654).
+ var loadHandler = new LoadHandler();
+ loadHandler.handle(this.context, Obj.bindFixed(this.doUpdateView, this, element));
+ },
+
+ doUpdateView: function(element)
+ {
+ // All stylesheets should be ready now, update the view.
+ this.updateCascadeView(element);
+
+ if (Dom.domUtils)
+ {
+ this.contentState = safeGetContentState(element);
+ this.addStateChangeHandlers(element);
+ }
+ },
+
+ updateSelection: function(element)
+ {
+ if (!(element instanceof window.Element)) // html supports SourceLink
+ return;
+
+ var sothinkInstalled = !!Firefox.getElementById("swfcatcherKey_sidebar");
+ if (sothinkInstalled)
+ {
+ var div = FirebugReps.Warning.tag.replace({object: "SothinkWarning"}, this.panelNode);
+ div.textContent = Locale.$STR("SothinkWarning");
+ return;
+ }
+
+ this.updateView(element);
+ },
+
+ updateOption: function(name, value)
+ {
+ var options = new Set();
+ options.add("onlyShowAppliedStyles");
+ options.add("showUserAgentCSS");
+ options.add("expandShorthandProps");
+ options.add("colorDisplay");
+ options.add("showMozillaSpecificStyles");
+
+ if (options.has(name))
+ this.refresh();
+ },
+
+ getOptionsMenuItems: function()
+ {
+ var items = [
+ Menu.optionMenu("Only_Show_Applied_Styles", "onlyShowAppliedStyles",
+ "style.option.tip.Only_Show_Applied_Styles"),
+ Menu.optionMenu("Show_User_Agent_CSS", "showUserAgentCSS",
+ "style.option.tip.Show_User_Agent_CSS"),
+ Menu.optionMenu("Expand_Shorthand_Properties", "expandShorthandProps",
+ "css.option.tip.Expand_Shorthand_Properties")
+ ];
+
+ items = Arr.extendArray(items, CSSModule.getColorDisplayOptionMenuItems());
+
+ if (Dom.domUtils && this.selection)
+ {
+ var self = this;
+
+ items.push(
+ "-",
+ {
+ label: "style.option.label.hover",
+ type: "checkbox",
+ checked: self.hasPseudoClassLock(":hover"),
+ tooltiptext: "style.option.tip.hover",
+ command: function()
+ {
+ self.togglePseudoClassLock(":hover");
+ }
+ },
+ {
+ label: "style.option.label.active",
+ type: "checkbox",
+ checked: self.hasPseudoClassLock(":active"),
+ tooltiptext: "style.option.tip.active",
+ command: function()
+ {
+ self.togglePseudoClassLock(":active");
+ }
+ }
+ );
+
+ if (Dom.domUtils.hasPseudoClassLock)
+ {
+ items.push(
+ {
+ label: "style.option.label.focus",
+ type: "checkbox",
+ checked: self.hasPseudoClassLock(":focus"),
+ tooltiptext: "style.option.tip.focus",
+ command: function()
+ {
+ self.togglePseudoClassLock(":focus");
+ }
+ }
+ );
+ }
+ }
+
+ return items;
+ },
+
+ getContextMenuItems: function(style, target)
+ {
+ var items = CSSStyleSheetPanel.prototype.getContextMenuItems.apply(this, [style, target]);
+ var insertIndex = 0;
+
+ for (var i = 0; i < items.length; ++i)
+ {
+ if (items[i].id == "fbNewCSSRule")
+ {
+ items.splice(i, 1);
+ insertIndex = i;
+ break;
+ }
+ }
+
+ items.splice(insertIndex, 0, {
+ label: "EditStyle",
+ tooltiptext: "style.tip.Edit_Style",
+ command: Obj.bindFixed(this.editElementStyle, this)
+ },
+ {
+ label: "AddRule",
+ tooltiptext: "css.tip.AddRule",
+ command: Obj.bindFixed(this.addRelatedRule, this)
+ });
+
+ if (style && style.font && style.font.rule)
+ {
+ items.push(
+ "-",
+ {
+ label: "css.label.Inspect_Declaration",
+ tooltiptext: "css.tip.Inspect_Declaration",
+ id: "fbInspectDeclaration",
+ command: Obj.bindFixed(this.inspectDeclaration, this, style.font.rule)
+ }
+ );
+ }
+
+ return items;
+ },
+
+ showInfoTip: function(infoTip, target, x, y, rangeParent, rangeOffset)
+ {
+ var prop = Dom.getAncestorByClass(target, "cssProp");
+ if (prop)
+ var propNameNode = prop.getElementsByClassName("cssPropName").item(0);
+
+ if (propNameNode && (propNameNode.textContent.toLowerCase() == "font" ||
+ propNameNode.textContent.toLowerCase() == "font-family"))
+ {
+ var prevSibling = target.previousElementSibling;
+ while (prevSibling)
+ {
+ rangeOffset += prevSibling.textContent.length;
+ prevSibling = prevSibling.previousElementSibling;
+ }
+ }
+
+ return CSSStyleSheetPanel.prototype.showInfoTip.call(
+ this, infoTip, target, x, y, rangeParent, rangeOffset);
+ },
+
+ getCurrentColor: function()
+ {
+ var cs = this.selection.ownerDocument.defaultView.getComputedStyle(this.selection);
+ return cs.getPropertyValue("color");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Extends stylesheet (CSS Panel)
+
+ deleteRuleDeclaration: function(cssSelector)
+ {
+ var repObject = Firebug.getRepObject(cssSelector);
+
+ if (repObject instanceof window.Element)
+ CSSModule.deleteRule(repObject);
+ else
+ CSSStyleSheetPanel.prototype.deleteRuleDeclaration(cssSelector);
+
+ this.refresh();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ hasPseudoClassLock: function(pseudoClass)
+ {
+ if (Dom.domUtils.hasPseudoClassLock)
+ {
+ return Dom.domUtils.hasPseudoClassLock(this.selection, pseudoClass);
+ }
+ else
+ {
+ // Fallback in case the new pseudo-class lock API isn't available
+ var state = safeGetContentState(this.selection);
+ switch(pseudoClass)
+ {
+ case ":active":
+ return state & STATE_ACTIVE;
+
+ case ":hover":
+ return state & STATE_HOVER;
+ }
+ }
+ },
+
+ togglePseudoClassLock: function(pseudoClass)
+ {
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("css.togglePseudoClassLock; pseudo-class: " + pseudoClass);
+
+ if (Dom.domUtils.hasPseudoClassLock)
+ {
+ if (Dom.domUtils.hasPseudoClassLock(this.selection, pseudoClass))
+ Dom.domUtils.removePseudoClassLock(this.selection, pseudoClass);
+ else
+ Dom.domUtils.addPseudoClassLock(this.selection, pseudoClass);
+ }
+ else
+ {
+ // Fallback in case the new pseudo-class lock API isn't available
+ var currentState = safeGetContentState(this.selection);
+ var remove = false;
+ switch(pseudoClass)
+ {
+ case ":active":
+ state = STATE_ACTIVE;
+ break;
+
+ case ":hover":
+ state = STATE_HOVER;
+ break;
+ }
+ remove = currentState & state;
+
+ Dom.domUtils.setContentState(remove ? this.selection.ownerDocument.documentElement :
+ this.selection, state);
+ }
+
+ this.refresh();
+ },
+
+ clearPseudoClassLocks: function()
+ {
+ if (Dom.domUtils.clearPseudoClassLocks)
+ Dom.domUtils.clearPseudoClassLocks(this.selection);
+ },
+
+ addStateChangeHandlers: function(el)
+ {
+ this.removeStateChangeHandlers();
+
+ Events.addEventListener(el, "focus", this.onStateChange, true);
+ Events.addEventListener(el, "blur", this.onStateChange, true);
+ Events.addEventListener(el, "mouseup", this.onStateChange, false);
+ Events.addEventListener(el, "mousedown", this.onStateChange, false);
+ Events.addEventListener(el, "mouseover", this.onStateChange, false);
+ Events.addEventListener(el, "mouseout", this.onStateChange, false);
+
+ this.stateChangeEl = el;
+ },
+
+ removeStateChangeHandlers: function()
+ {
+ var sel = this.stateChangeEl;
+ if (sel)
+ {
+ Events.removeEventListener(sel, "focus", this.onStateChange, true);
+ Events.removeEventListener(sel, "blur", this.onStateChange, true);
+ Events.removeEventListener(sel, "mouseup", this.onStateChange, false);
+ Events.removeEventListener(sel, "mousedown", this.onStateChange, false);
+ Events.removeEventListener(sel, "mouseover", this.onStateChange, false);
+ Events.removeEventListener(sel, "mouseout", this.onStateChange, false);
+ }
+
+ this.stateChangeEl = null;
+ },
+
+ contentStateCheck: function(state)
+ {
+ if (!state || this.contentState & state)
+ {
+ var timeoutRunner = Obj.bindFixed(function()
+ {
+ var newState = safeGetContentState(this.selection);
+ if (newState != this.contentState)
+ {
+ this.context.invalidatePanels(this.name);
+ }
+ }, this);
+
+ // Delay exec until after the event has processed and the state has been updated
+ setTimeout(timeoutRunner, 0);
+ }
+ }
+});
+
+// ********************************************************************************************* //
+// Helpers
+
+function safeGetContentState(selection)
+{
+ try
+ {
+ if (selection && selection.ownerDocument)
+ return Dom.domUtils.getContentState(selection);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS && FBTrace.DBG_CSS)
+ FBTrace.sysout("css.safeGetContentState; EXCEPTION "+e, e);
+ }
+}
+
+function getFontPropValueParts(element, value, propName)
+{
+ const genericFontFamilies =
+ {
+ "serif": 1,
+ "sans-serif": 1,
+ "cursive": 1,
+ "fantasy": 1,
+ "monospace": 1,
+ };
+
+ var parts = [], origValue = value;
+
+ // (Mirroring CSSModule.parseCSSFontFamilyValue)
+ if (propName === "font")
+ {
+ var rePreFont = new RegExp(
+ "^.*" + // anything, then
+ "(" +
+ "\\d+(\\.\\d+)?([a-z]*|%)|" + // a number (with possible unit)
+ "(x{1,2}-)?(small|large)|medium|larger|smaller" + // or an named size description
+ ") "
+ );
+ var matches = rePreFont.exec(value);
+ if (!matches)
+ {
+ // Non-simple font value, like "inherit", "status-bar" or
+ // "calc(12px) Arial" - just return the whole text.
+ return [{type: "otherProps", value: value, lastFont: true}];
+ }
+ var preProps = matches[0].slice(0, -1);
+ parts.push({type: "otherProps", value: preProps});
+ value = value.substr(matches[0].length);
+ }
+
+ var matches = /^(.*?)( !important)?$/.exec(value);
+ var fonts = matches[1].split(",");
+
+ // What we want to know is what the specified "font-family" property means
+ // for the selected element's text, not what the element actually uses (that
+ // depends on font styles of its descendants). Thus, we just check the direct
+ // child text nodes of the element.
+ // Do not create a temporary element for testing to avoid problems like in
+ // issue 5905 and 6048
+ var usedFonts = [];
+ var child = element.firstChild;
+ do
+ {
+ if (!child)
+ break;
+
+ if (child.nodeType == Node.TEXT_NODE)
+ usedFonts = Arr.extendArray(usedFonts, Fonts.getFonts(child));
+ }
+ while (child = child.nextSibling);
+
+ var genericFontUsed = false;
+ for (var i = 0; i < fonts.length; ++i)
+ {
+ var font = fonts[i].replace(/^["'](.*)["']$/, "$1").toLowerCase();
+ var isGeneric = genericFontFamilies.hasOwnProperty(font);
+ var isUsedFont = false;
+
+ for (var j = 0; j < usedFonts.length; ++j)
+ {
+ var usedFont = usedFonts[j].CSSFamilyName.toLowerCase();
+ if (font == usedFont || (isGeneric && !genericFontUsed))
+ {
+ parts.push({type: "used", value: fonts[i], font: usedFonts[j]});
+ usedFonts.splice(j, 1);
+
+ isUsedFont = true;
+ if (isGeneric)
+ genericFontUsed = true;
+ break;
+ }
+ }
+
+ if (!isUsedFont)
+ parts.push({type: "unused", value: fonts[i]});
+ }
+
+ // xxxsz: Domplate doesn't allow to check for the last element in an array yet,
+ // so use this as hack
+ parts[parts.length-1].lastFont = true;
+
+ if (matches[2])
+ parts.push({type: "important", value: " !important"});
+
+ return parts;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(CSSStylePanel);
+
+return CSSStylePanel;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/debugger/debuggerLib.js b/content/firebug/debugger/debuggerLib.js
index 13a57c4..4e1976b 100644
--- a/content/firebug/debugger/debuggerLib.js
+++ b/content/firebug/debugger/debuggerLib.js
@@ -1,153 +1,153 @@
-/* See license.txt for terms of usage */
-
-/*jshint esnext:true, es5:true, curly:false*/
-/*global FBTrace:true, Components:true, define:true */
-
-
-define([
- "firebug/lib/wrapper",
-],
-function(Wrapper) {
-
-"use strict";
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-var Cu = Components.utils;
-
-// Debugees
-var dglobalWeakMap = new WeakMap();
-
-// Module object
-var DebuggerLib = {};
-
-// ********************************************************************************************* //
-// Implementation
-
-/**
- * Unwraps the value of a debuggee object.
- *
- * @param obj {Debugger.Object} The debuggee object to unwrap
- * @param global {Window} The unwrapped global (window)
- * @param dglobal {Debugger.Object} The debuggee global object
- *
- * @return {object} the unwrapped object
- */
-DebuggerLib.unwrapDebuggeeValue = function(obj, global, dglobal)
-{
- // If not a debuggee object, return it immediately.
- if (typeof obj !== "object" || obj === null)
- return obj;
-
- if (obj.unsafeDereference)
- return Wrapper.unwrapObject(obj.unsafeDereference());
-
- // Define a new property to get the debuggee value.
- dglobal.defineProperty("_firebugUnwrappedDebuggerObject", {
- value: obj,
- writable: true,
- configurable: true
- });
-
- // Get the debuggee value using the property through the unwrapped global object.
- return global._firebugUnwrappedDebuggerObject;
-};
-
-/**
- * Gets or creates the debuggee global for the given global object
- *
- * @param {Window} global The global object
- * @param {*} context The Firebug context
- *
- * @return {Debuggee Window} The debuggee global
- */
-DebuggerLib.getDebuggeeGlobal = function(context, global)
-{
- global = global || context.getCurrentGlobal();
-
- var dglobal = dglobalWeakMap.get(global.document);
- if (!dglobal)
- {
- var dbg = getInactiveDebuggerForContext(context);
- if (!dbg)
- return;
-
- // xxxFlorent: For a reason I ignore, there are some conflicts with the ShareMeNot addon.
- // As a workaround, we unwrap the global object.
- // TODO see what cause that behaviour, why, and if there are no other addons in that case.
- var contentView = Wrapper.getContentView(global);
- dglobal = dbg.addDebuggee(contentView);
- dbg.removeDebuggee(contentView);
- dglobalWeakMap.set(global.document, dglobal);
-
- if (FBTrace.DBG_DEBUGGER)
- FBTrace.sysout("new debuggee global instance created", dglobal);
- }
- return dglobal;
-};
-
-/**
- * Returns true if the frame location refers to the command entered by the user
- * through the command line.
- *
- * @param {string} frameLocation
- *
- * @return {boolean}
- */
-// xxxHonza: should be renamed. It's not only related to the CommandLine, but
-// to all bogus scripts, e.g. generated from 'clientEvaluate' packets.
-DebuggerLib.isFrameLocationEval = function(frameFilename)
-{
- return frameFilename === "debugger eval code" || frameFilename === "self-hosted";
-}
-
-// ********************************************************************************************* //
-// Local helpers
-
-/**
- * Gets or creates the Inactive Debugger instance for the given context (singleton).
- *
- * @param context {*}
- *
- * @return {Debugger} The Debugger instance
- */
-var getInactiveDebuggerForContext = function(context)
-{
- var DebuggerClass;
- var scope = {};
-
- if (context.inactiveDebugger)
- return context.inactiveDebugger;
-
- try
- {
- Cu.import("resource://gre/modules/jsdebugger.jsm", scope);
- scope.addDebuggerToGlobal(window);
- DebuggerClass = window.Debugger;
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERROR)
- FBTrace.sysout("DebuggerLib.getInactiveDebuggerForContext; Debugger not found", exc);
- }
-
- // If the Debugger Class was not found, make this function no-op.
- if (!DebuggerClass)
- getInactiveDebuggerForContext = function() {};
-
- var dbg = new DebuggerClass();
- dbg.enabled = false;
- context.inactiveDebugger = dbg;
- return dbg;
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return DebuggerLib;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+/*jshint esnext:true, es5:true, curly:false*/
+/*global FBTrace:true, Components:true, define:true */
+
+
+define([
+ "firebug/lib/wrapper",
+],
+function(Wrapper) {
+
+"use strict";
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cu = Components.utils;
+
+// Debugees
+var dglobalWeakMap = new WeakMap();
+
+// Module object
+var DebuggerLib = {};
+
+// ********************************************************************************************* //
+// Implementation
+
+/**
+ * Unwraps the value of a debuggee object.
+ *
+ * @param obj {Debugger.Object} The debuggee object to unwrap
+ * @param global {Window} The unwrapped global (window)
+ * @param dglobal {Debugger.Object} The debuggee global object
+ *
+ * @return {object} the unwrapped object
+ */
+DebuggerLib.unwrapDebuggeeValue = function(obj, global, dglobal)
+{
+ // If not a debuggee object, return it immediately.
+ if (typeof obj !== "object" || obj === null)
+ return obj;
+
+ if (obj.unsafeDereference)
+ return Wrapper.unwrapObject(obj.unsafeDereference());
+
+ // Define a new property to get the debuggee value.
+ dglobal.defineProperty("_firebugUnwrappedDebuggerObject", {
+ value: obj,
+ writable: true,
+ configurable: true
+ });
+
+ // Get the debuggee value using the property through the unwrapped global object.
+ return global._firebugUnwrappedDebuggerObject;
+};
+
+/**
+ * Gets or creates the debuggee global for the given global object
+ *
+ * @param {Window} global The global object
+ * @param {*} context The Firebug context
+ *
+ * @return {Debuggee Window} The debuggee global
+ */
+DebuggerLib.getDebuggeeGlobal = function(context, global)
+{
+ global = global || context.getCurrentGlobal();
+
+ var dglobal = dglobalWeakMap.get(global.document);
+ if (!dglobal)
+ {
+ var dbg = getInactiveDebuggerForContext(context);
+ if (!dbg)
+ return;
+
+ // xxxFlorent: For a reason I ignore, there are some conflicts with the ShareMeNot addon.
+ // As a workaround, we unwrap the global object.
+ // TODO see what cause that behaviour, why, and if there are no other addons in that case.
+ var contentView = Wrapper.getContentView(global);
+ dglobal = dbg.addDebuggee(contentView);
+ dbg.removeDebuggee(contentView);
+ dglobalWeakMap.set(global.document, dglobal);
+
+ if (FBTrace.DBG_DEBUGGER)
+ FBTrace.sysout("new debuggee global instance created", dglobal);
+ }
+ return dglobal;
+};
+
+/**
+ * Returns true if the frame location refers to the command entered by the user
+ * through the command line.
+ *
+ * @param {string} frameLocation
+ *
+ * @return {boolean}
+ */
+// xxxHonza: should be renamed. It's not only related to the CommandLine, but
+// to all bogus scripts, e.g. generated from 'clientEvaluate' packets.
+DebuggerLib.isFrameLocationEval = function(frameFilename)
+{
+ return frameFilename === "debugger eval code" || frameFilename === "self-hosted";
+}
+
+// ********************************************************************************************* //
+// Local helpers
+
+/**
+ * Gets or creates the Inactive Debugger instance for the given context (singleton).
+ *
+ * @param context {*}
+ *
+ * @return {Debugger} The Debugger instance
+ */
+var getInactiveDebuggerForContext = function(context)
+{
+ var DebuggerClass;
+ var scope = {};
+
+ if (context.inactiveDebugger)
+ return context.inactiveDebugger;
+
+ try
+ {
+ Cu.import("resource://gre/modules/jsdebugger.jsm", scope);
+ scope.addDebuggerToGlobal(window);
+ DebuggerClass = window.Debugger;
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERROR)
+ FBTrace.sysout("DebuggerLib.getInactiveDebuggerForContext; Debugger not found", exc);
+ }
+
+ // If the Debugger Class was not found, make this function no-op.
+ if (!DebuggerClass)
+ getInactiveDebuggerForContext = function() {};
+
+ var dbg = new DebuggerClass();
+ dbg.enabled = false;
+ context.inactiveDebugger = dbg;
+ return dbg;
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return DebuggerLib;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/dom/domBasePanel.js b/content/firebug/dom/domBasePanel.js
index 3807919..a046bb5 100644
--- a/content/firebug/dom/domBasePanel.js
+++ b/content/firebug/dom/domBasePanel.js
@@ -1,1057 +1,1057 @@
-/* See license.txt for terms of usage */
-/*jshint esnext:true, es5:true, curly:false */
-/*global FBTrace:true, XPCNativeWrapper:true, Window:true, define:true */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/reps",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/wrapper",
- "firebug/js/sourceLink",
- "firebug/js/stackFrame",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/lib/search",
- "firebug/lib/string",
- "firebug/lib/array",
- "firebug/lib/persist",
- "firebug/console/closureInspector",
- "firebug/dom/toggleBranch",
- "firebug/lib/system",
- "firebug/chrome/menu",
- "firebug/dom/domMemberProvider",
- "firebug/dom/domEditor",
- "firebug/dom/domReps",
- "firebug/editor/editor",
- "firebug/js/breakpoint",
- "firebug/chrome/searchBox",
- "firebug/dom/domModule",
- "firebug/console/autoCompleter"
-],
-function(Obj, Firebug, FirebugReps, Locale, Events, Wrapper, SourceLink, StackFrame,
- Dom, Css, Search, Str, Arr, Persist, ClosureInspector, ToggleBranch, System, Menu,
- DOMMemberProvider, DOMEditor, DOMReps) {
-
-"use strict";
-
-// ********************************************************************************************* //
-// Constants
-
-const rxIdentifier = /^[$_A-Za-z][$_A-Za-z0-9]*$/;
-
-// ********************************************************************************************* //
-
-/**
- * @panel Base class for panels displaying hierarchy of objects.
- */
-Firebug.DOMBasePanel = function()
-{
-}
-
-Firebug.DOMBasePanel.ToolboxPlate = DOMReps.ToolboxPlate;
-Firebug.DOMBasePanel.prototype = Obj.extend(Firebug.Panel,
-/** lends Firebug.DOMBasePanel */
-{
- tag: DOMReps.DirTablePlate.tableTag,
- dirTablePlate: DOMReps.DirTablePlate,
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Panel
-
- initialize: function()
- {
- this.objectPath = [];
- this.propertyPath = [];
- this.viewPath = [];
- this.pathIndex = -1;
- this.toggles = new ToggleBranch.ToggleBranch();
-
- Firebug.Panel.initialize.apply(this, arguments);
- },
-
- initializeNode: function(node)
- {
- Firebug.Panel.initializeNode.apply(this, arguments);
- },
-
- destroyNode: function()
- {
- Firebug.Panel.destroyNode.apply(this, arguments);
- },
-
- destroy: function(state)
- {
- var view = this.viewPath[this.pathIndex];
- if (view && this.panelNode.scrollTop)
- view.scrollTop = this.panelNode.scrollTop;
-
- if (this.pathIndex > -1)
- state.pathIndex = this.pathIndex;
- if (this.viewPath)
- state.viewPath = this.viewPath;
- if (this.propertyPath)
- state.propertyPath = this.propertyPath;
-
- if (this.propertyPath.length > 0 && !this.propertyPath[1])
- state.firstSelection = Persist.persistObject(this.getPathObject(1), this.context);
-
- if (FBTrace.DBG_DOM)
- FBTrace.sysout("dom.destroy; state:", state);
-
- Firebug.Panel.destroy.apply(this, arguments);
- },
-
- show: function(state)
- {
- this.showToolbarButtons("fbStatusButtons", true);
-
- if (!this.selection)
- {
- if (!state)
- {
- this.select(null);
- return;
- }
- if (state.pathIndex > -1)
- this.pathIndex = state.pathIndex;
- if (state.viewPath)
- this.viewPath = state.viewPath;
- if (state.propertyPath)
- this.propertyPath = state.propertyPath;
-
- var defaultObject = this.getDefaultSelection();
- var selectObject = defaultObject;
-
- if (state.firstSelection)
- {
- var restored = state.firstSelection(this.context);
- if (restored)
- {
- selectObject = restored;
- this.objectPath = [defaultObject, restored];
- }
- else
- this.objectPath = [defaultObject];
- }
- else
- {
- this.objectPath = [defaultObject];
- }
-
- if (this.propertyPath.length > 1)
- {
- selectObject = this.resetPaths(selectObject);
- }
- else
- {
- // Sync with objectPath always containing a default object.
- this.propertyPath.push(null);
- }
-
- var selection = (state.pathIndex < this.objectPath.length ?
- this.getPathObject(state.pathIndex) :
- this.getPathObject(this.objectPath.length-1));
-
- if (FBTrace.DBG_DOM)
- FBTrace.sysout("dom.show; selection:", selection);
-
- this.select(selection);
- }
- },
-
- resetPaths: function(selectObject)
- {
- for (var i = 1; i < this.propertyPath.length; ++i)
- {
- var name = this.propertyPath[i];
- if (!name)
- continue;
-
- var object = selectObject;
- try
- {
- selectObject = object[name];
- }
- catch (exc)
- {
- selectObject = null;
- }
-
- if (selectObject)
- {
- this.objectPath.push(new FirebugReps.PropertyObj(object, name));
- }
- else
- {
- // If we can't access a property, just stop
- this.viewPath.splice(i);
- this.propertyPath.splice(i);
- this.objectPath.splice(i);
- selectObject = this.getPathObject(this.objectPath.length-1);
- break;
- }
- }
- },
-
- hide: function()
- {
- var view = this.viewPath[this.pathIndex];
- if (view && this.panelNode.scrollTop)
- view.scrollTop = this.panelNode.scrollTop;
- },
-
- getBreakOnNextTooltip: function(enabled)
- {
- return (enabled ? Locale.$STR("dom.disableBreakOnPropertyChange") :
- Locale.$STR("dom.label.breakOnPropertyChange"));
- },
-
- supportsObject: function(object, type)
- {
- if (type == "number" || type == "string" || type == "boolean")
- return 0;
- if (object == null)
- return 1000;
- else if (object instanceof SourceLink.SourceLink)
- return 0;
- else
- return 1; // just agree to support everything but not aggressively.
- },
-
- refresh: function()
- {
- this.rebuild(true);
- },
-
- updateSelection: function(object)
- {
- if (FBTrace.DBG_DOM)
- FBTrace.sysout("dom.updateSelection", object);
-
- var previousIndex = this.pathIndex;
- var previousView = (previousIndex === -1 ? null : this.viewPath[previousIndex]);
-
- var newPath = this.pathToAppend;
- delete this.pathToAppend;
-
- var pathIndex = this.findPathIndex(object);
- if (newPath || pathIndex === -1)
- {
- this.toggles = new ToggleBranch.ToggleBranch();
-
- if (newPath)
- {
- // Remove everything after the point where we are inserting, so we
- // essentially replace it with the new path
- if (previousView)
- {
- if (this.panelNode.scrollTop)
- previousView.scrollTop = this.panelNode.scrollTop;
-
- this.objectPath.splice(previousIndex+1);
- this.propertyPath.splice(previousIndex+1);
- this.viewPath.splice(previousIndex+1);
- }
-
- var value = this.getPathObject(previousIndex);
- if (!value)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("dom.updateSelection no pathObject for " + previousIndex);
- return;
- }
-
- // XXX This is wrong with closures, but I haven't noticed anything
- // break and I don't know how to fix, so let's just leave it...
- for (var i = 0; i < newPath.length; ++i)
- {
- var name = newPath[i];
- object = value;
- try
- {
- value = value[name];
- }
- catch(exc)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("dom.updateSelection FAILS at path_i=" + i +
- " for name:" + name);
- }
- return;
- }
-
- ++this.pathIndex;
- this.objectPath.push(new FirebugReps.PropertyObj(object, name));
- this.propertyPath.push(name);
- this.viewPath.push({toggles: this.toggles, scrollTop: 0});
- }
- }
- else
- {
- this.toggles = new ToggleBranch.ToggleBranch();
-
- var win = this.getDefaultSelection();
- if (object === win)
- {
- this.pathIndex = 0;
- this.objectPath = [win];
- this.propertyPath = [null];
- this.viewPath = [{toggles: this.toggles, scrollTop: 0}];
- }
- else
- {
- this.pathIndex = 1;
- this.objectPath = [win, object];
- this.propertyPath = [null, null];
- this.viewPath = [
- {toggles: new ToggleBranch.ToggleBranch(), scrollTop: 0},
- {toggles: this.toggles, scrollTop: 0}
- ];
- }
- }
-
- this.panelNode.scrollTop = 0;
- this.rebuild(false);
- }
- else
- {
- this.pathIndex = pathIndex;
-
- var view = this.viewPath[pathIndex];
- this.toggles = view ? view.toggles : new ToggleBranch.ToggleBranch();
-
- // Persist the current scroll location
- if (previousView && this.panelNode.scrollTop)
- previousView.scrollTop = this.panelNode.scrollTop;
-
- this.rebuild(false, view ? view.scrollTop : 0);
- }
- },
-
- getObjectPath: function(object)
- {
- return this.objectPath;
- },
-
- getDefaultSelection: function()
- {
- // Default to showing the top window.
- return this.getObjectView(this.context.window);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Options
-
- updateOption: function(name, value)
- {
- var options = new Set();
- options.add("showUserProps");
- options.add("showUserFuncs");
- options.add("showDOMProps");
- options.add("showDOMFuncs");
- options.add("showDOMConstants");
- options.add("showInlineEventHandlers");
- options.add("showClosures");
- options.add("showOwnProperties");
- options.add("showEnumerableProperties");
-
- if (options.has(name))
- this.rebuild(true);
- },
-
- getOptionsMenuItems: function()
- {
- return [
- Menu.optionMenu("ShowUserProps", "showUserProps",
- "dom.option.tip.Show_User_Props"),
- Menu.optionMenu("ShowUserFuncs", "showUserFuncs",
- "dom.option.tip.Show_User_Funcs"),
- Menu.optionMenu("ShowDOMProps", "showDOMProps",
- "dom.option.tip.Show_DOM_Props"),
- Menu.optionMenu("ShowDOMFuncs", "showDOMFuncs",
- "dom.option.tip.Show_DOM_Funcs"),
- Menu.optionMenu("ShowDOMConstants", "showDOMConstants",
- "dom.option.tip.Show_DOM_Constants"),
- Menu.optionMenu("ShowInlineEventHandlers", "showInlineEventHandlers",
- "ShowInlineEventHandlersTooltip"),
- Menu.optionMenu("ShowClosures", "showClosures",
- "dom.option.tip.Show_Closures"),
- "-",
- Menu.optionMenu("ShowOwnProperties", "showOwnProperties",
- "ShowOwnPropertiesTooltip"),
- Menu.optionMenu("ShowEnumerableProperties",
- "showEnumerableProperties", "ShowEnumerablePropertiesTooltip"),
- "-",
- {label: "Refresh", command: Obj.bindFixed(this.rebuild, this, true),
- tooltiptext: "panel.tip.Refresh"}
- ];
- },
-
- getContextMenuItems: function(object, target)
- {
- if (FBTrace.DBG_DOM)
- FBTrace.sysout("dom.getContextMenuItems;", object);
-
- var row = Dom.getAncestorByClass(target, "memberRow");
-
- var items = [];
-
- if (row && row.domObject && !row.domObject.ignoredPath)
- {
- var member = row.domObject;
- var rowName = member.name;
- var rowObject = member.object;
- var rowValue = member.value;
-
- var isWatch = Css.hasClass(row, "watchRow");
- var isStackFrame = rowObject instanceof StackFrame.StackFrame;
- var label, tooltiptext;
-
- items.push(
- "-",
- {
- label: "Copy_Name",
- tooltiptext: "dom.tip.Copy_Name",
- command: Obj.bindFixed(this.copyName, this, row)
- },
- {
- label: "Copy_Path",
- tooltiptext: "dom.tip.Copy_Path",
- command: Obj.bindFixed(this.copyPath, this, row)
- }
- );
-
- if (typeof rowValue === "string" || typeof rowValue === "number")
- {
- // Functions already have a copy item in their context menu
- items.push(
- {
- label: "CopyValue",
- tooltiptext: "dom.tip.Copy_Value",
- command: Obj.bindFixed(this.copyProperty, this, row)
- }
- );
- }
-
- if (isWatch)
- {
- label = "EditWatch";
- tooltiptext = "watch.tip.Edit_Watch";
- }
- else if (isStackFrame)
- {
- label = "EditVariable";
- tooltiptext = "stack.tip.Edit_Variable";
- }
- else
- {
- label = "EditProperty";
- tooltiptext = "dom.tip.Edit_Property";
- }
-
- var readOnly = (!isWatch && !isStackFrame && member.readOnly);
- if (!readOnly)
- {
- items.push(
- "-",
- {
- label: label,
- tooltiptext: tooltiptext,
- command: Obj.bindFixed(this.editProperty, this, row)
- }
- );
- }
-
- if (isWatch ||
- (member.deletable && !isStackFrame && !Dom.isDOMMember(rowObject, rowName)))
- {
- items.push(
- {
- label: isWatch ? "DeleteWatch" : "DeleteProperty",
- id: "DeleteProperty",
- tooltiptext: isWatch ? "watch.tip.Delete_Watch" :
- "dom.tip.Delete_Property",
- command: Obj.bindFixed(this.deleteProperty, this, row)
- }
- );
- }
-
- if (!Dom.isDOMMember(rowObject, rowName) && member && member.breakable)
- {
- items.push(
- "-",
- {
- label: "dom.label.breakOnPropertyChange",
- tooltiptext: "dom.tip.Break_On_Property_Change",
- type: "checkbox",
- checked: this.context.dom.breakpoints.findBreakpoint(rowObject, rowName),
- command: Obj.bindFixed(this.breakOnProperty, this, row)
- }
- );
- }
- }
-
- items.push(
- "-",
- {
- label: "Refresh",
- tooltiptext: "panel.tip.Refresh",
- command: Obj.bindFixed(this.rebuild, this, true)
- }
- );
-
- return items;
- },
-
- getEditor: function(target, value)
- {
- if (!this.editor)
- this.editor = new DOMEditor(this.document);
-
- return this.editor;
- },
-
- getObjectView: function(object)
- {
- if (!Firebug.viewChrome)
- {
- // Unwrap native, wrapped objects.
- var contentView = Wrapper.getContentView(object);
- if (contentView)
- return contentView;
- }
- return object;
- },
-
- rebuild: function(update, scrollTop)
- {
- Events.dispatch(this.fbListeners, "onBeforeDomUpdateSelection", [this]);
-
- var members = this.getMembers(this.selection, 0);
- this.expandMembers(members, this.toggles, 0, 0);
- this.showMembers(members, update, scrollTop);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Members
-
- /**
- * @param object a user-level object wrapped in security blanket
- * @param level for a.b.c, level is 2
- */
- getMembers: function(object, level)
- {
- if (!this.memberProvider)
- this.memberProvider = new DOMMemberProvider(this.context);
-
- return this.memberProvider.getMembers(object, level);
- },
-
- // For backward compatibility
- addMember: function()
- {
- if (!this.memberProvider)
- this.memberProvider = new DOMMemberProvider(this.context);
-
- return this.memberProvider.addMember.apply(this.memberProvider, arguments);
- },
-
- // recursion starts with offset=0, level=0
- expandMembers: function(members, toggles, offset, level)
- {
- var expanded = 0;
- for (var i = offset; i < members.length; ++i)
- {
- var member = members[i];
- if (member.level < level)
- break;
-
- if (toggles.get(member.name))
- {
- // member.level <= level && member.name in toggles.
- member.open = "opened";
-
- // Don't expand if the member doesn't have children any more.
- if (!member.hasChildren)
- continue;
-
- // sets newMembers.level to level+1
- var newMembers = this.getMembers(member.value, level+1);
-
- // Insert 'newMembers' into 'members'
- Arr.arrayInsert(members, i+1, newMembers);
-
- if (FBTrace.DBG_DOM)
- {
- FBTrace.sysout("expandMembers member.name "+member.name+" member "+member);
- FBTrace.sysout("expandMembers toggles "+toggles, toggles);
- FBTrace.sysout("expandMembers toggles.get(member.name) " +
- toggles.get(member.name), toggles.get(member.name));
- FBTrace.sysout("dom.expandedMembers level: "+level+" member.level " +
- member.level, member);
- }
-
- var moreExpanded = newMembers.length +
- this.expandMembers(members, toggles.get(member.name), i+1, level+1);
- i += moreExpanded;
- expanded += moreExpanded;
- }
- }
-
- return expanded;
- },
-
- showMembers: function(members, update, scrollTop)
- {
- // If we are still in the midst of inserting rows, cancel all pending
- // insertions here - this is a big speedup when stepping in the debugger
- if (this.timeouts)
- {
- for (var i = 0; i < this.timeouts.length; ++i)
- this.context.clearTimeout(this.timeouts[i]);
- delete this.timeouts;
- }
-
- if (!members.length)
- return this.showEmptyMembers();
-
- var panelNode = this.panelNode;
- var priorScrollTop = (scrollTop === undefined ? panelNode.scrollTop : scrollTop);
-
- // If we are asked to "update" the current view, then build the new table
- // offscreen and swap it in when it's done
- var offscreen = update && panelNode.firstChild;
- var dest = offscreen ? this.document : panelNode;
-
- var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
- var tbody = table.lastChild;
- var rowTag = this.dirTablePlate.rowTag;
-
- // Insert the first slice immediately
- var setSize = members.length;
- var slice = members.splice(0, DOMReps.insertSliceSize);
- var result = rowTag.insertRows({members: slice}, tbody.lastChild);
- var rowCount = 1;
- var panel = this;
-
- Events.dispatch(this.fbListeners, "onMemberRowSliceAdded",
- [panel, result, rowCount, setSize]);
-
- var timeouts = [];
-
- var delay = 0;
- while (members.length)
- {
- let slice = members.splice(0, DOMReps.insertSliceSize);
- timeouts.push(this.context.setTimeout(function addMemberRowSlice()
- {
- result = rowTag.insertRows({members: slice}, tbody.lastChild);
- rowCount += DOMReps.insertSliceSize;
-
- Events.dispatch(Firebug.DOMModule.fbListeners, "onMemberRowSliceAdded",
- [panel, result, rowCount, setSize]);
-
- if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop)
- panelNode.scrollTop = priorScrollTop;
-
- }, delay));
-
- delay += DOMReps.insertInterval;
- }
-
- if (offscreen)
- {
- timeouts.push(this.context.setTimeout(function()
- {
- if (panelNode.firstChild)
- panelNode.replaceChild(table, panelNode.firstChild);
- else
- panelNode.appendChild(table);
-
- // Scroll back to where we were before
- panelNode.scrollTop = priorScrollTop;
- }, delay));
- }
- else
- {
- timeouts.push(this.context.setTimeout(function()
- {
- panelNode.scrollTop = (scrollTop === undefined ? 0 : scrollTop);
- }, delay));
- }
- this.timeouts = timeouts;
- },
-
- showEmptyMembers: function()
- {
- FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode);
- },
-
- findPathIndex: function(object)
- {
- var pathIndex = -1;
- for (var i = 0; i < this.objectPath.length; ++i)
- {
- if (this.getPathObject(i) === object)
- return i;
- }
-
- return -1;
- },
-
- getPathObject: function(index)
- {
- var object = this.objectPath[index];
- if (object instanceof FirebugReps.PropertyObj)
- return object.getObject();
- else
- return object;
- },
-
- getRowObject: function(row)
- {
- var object = getRowOwnerObject(row);
- return object ? object : this.selection;
- },
-
- getRealRowObject: function(row)
- {
- var object = this.getRowObject(row);
- return this.getObjectView(object);
- },
-
- getRowPropertyValue: function(row)
- {
- var object = this.getRealRowObject(row);
- return this.getObjectPropertyValue(object, row.domObject.name);
- },
-
- getObjectPropertyValue: function(object, propName)
- {
- if (!object)
- return;
-
- // Get the value with try-catch statement. This method is used also within
- // getContextMenuItems where the exception would break the context menu.
- // 1) The Firebug.Debugger.evaluate can throw
- // 2) object[propName] can also throws in case of e.g. non existing "abc.abc" prop name.
- try
- {
- if (object instanceof StackFrame.StackFrame)
- return Firebug.Debugger.evaluate(propName, this.context);
- else
- return object[propName];
- }
- catch (err)
- {
- if (FBTrace.DBG_DOM || FBTrace.DBG_ERRORS)
- FBTrace.sysout("dom.getObjectPropertyValue; EXCEPTION " + propName, object);
- }
- },
-
- getRowPathName: function(row)
- {
- var member = row.domObject, name = member.name;
-
- // Fake "(closure)" properties.
- if (member.ignoredPath)
- return ["", ""];
-
- // Closure variables.
- if (ClosureInspector.isScopeWrapper(member.object))
- return [".%", name];
-
- // Ordinals.
- if (name.match(/^[\d]+$/))
- return ["", "["+name+"]"];
-
- // Identifiers.
- if (name.match(rxIdentifier))
- return [".", name];
-
- // Other, weird, names.
- return ["", "[\""+name.replace(/\\/g, "\\\\").replace(/"/g,"\\\"") + "\"]"];
- },
-
- copyName: function(row)
- {
- var value = this.getRowPathName(row);
- value = value[1]; //don't want the separator
- System.copyToClipboard(value);
- },
-
- copyPath: function(row)
- {
- var path = this.getPropertyPath(row);
- System.copyToClipboard(path.join(""));
- },
-
- /**
- * Walk from the current row up to the most ancient parent, building an array.
- * @return array of property names and separators, eg ['foo','.','bar'].
- */
- getPropertyPath: function(row)
- {
- var path = [];
- for (var current = row; current ; current = getParentRow(current))
- path = this.getRowPathName(current).concat(path);
- path.shift(); //don't want the first separator
- return path;
- },
-
- copyProperty: function(row)
- {
- var value = this.getRowPropertyValue(row);
- System.copyToClipboard(value);
- },
-
- editProperty: function(row, editValue)
- {
- var member = row.domObject;
- if (member && member.readOnly)
- return;
-
- if (Css.hasClass(row, "watchNewRow"))
- {
- Firebug.Editor.startEditing(row, "");
- }
- else if (Css.hasClass(row, "watchRow"))
- {
- Firebug.Editor.startEditing(row, getRowName(row));
- }
- else
- {
- var object = this.getRowObject(row);
- this.context.thisValue = object;
-
- if (!editValue)
- {
- var propValue = this.getRowPropertyValue(row);
-
- var type = typeof propValue;
- if (type === "undefined" || type === "number" || type === "boolean")
- editValue = "" + propValue;
- else if (type === "string")
- editValue = "\"" + Str.escapeJS(propValue) + "\"";
- else if (propValue === null)
- editValue = "null";
- else if (object instanceof window.Window || object instanceof StackFrame.StackFrame)
- editValue = getRowName(row);
- else
- editValue = "this." + getRowName(row); // XXX "this." doesn't actually work
- }
-
- Firebug.Editor.startEditing(row, editValue);
- }
- },
-
- deleteProperty: function(row)
- {
- if (Css.hasClass(row, "watchRow"))
- {
- this.deleteWatch(row);
- }
- else
- {
- var member = row.domObject;
- var object = this.getObjectView(member.object);
-
- if (member.deletable)
- {
- try
- {
- delete object[member.name];
- }
- catch (exc)
- {
- return;
- }
-
- this.rebuild(true);
- this.markChange();
- }
- }
- },
-
- setPropertyValue: function(row, value) // value must be string
- {
- var member = row.domObject;
- var name = member.name;
-
- if (FBTrace.DBG_DOM)
- {
- FBTrace.sysout("setPropertyValue: " + name + " set to " +
- (typeof value === "string" ? "\"" + value + "\"" : "non-string!?!?"), row);
- }
-
- if (name === "this")
- return;
-
- var object = this.getRealRowObject(row);
- if (object && !(object instanceof StackFrame.StackFrame))
- {
- Firebug.CommandLine.evaluate(value, this.context, object, this.context.getCurrentGlobal(),
- function success(result, context)
- {
- if (FBTrace.DBG_DOM)
- {
- FBTrace.sysout("setPropertyValue evaluate success object[" + name + "]" +
- " set to type " + typeof result, result);
- }
- object[name] = result;
- },
- function failed(exc, context)
- {
- try
- {
- if (FBTrace.DBG_DOM)
- {
- FBTrace.sysout("setPropertyValue evaluate FAILED", exc);
- }
-
- // If the value doesn't parse, then just store it as a string.
- // Some users will not realize they're supposed to enter a JavaScript
- // expression and just type literal text
- object[name] = value;
- }
- catch (exc) {}
- }
- );
- }
- else if (this.context.stopped)
- {
- try
- {
- Firebug.CommandLine.evaluate(name + "=" + value, this.context);
- }
- catch (exc)
- {
- try
- {
- // See catch block above...
- object[name] = value;
- }
- catch (exc)
- {
- return;
- }
- }
-
- // Clear cached scope chain (it'll be regenerated the next time the getScopes
- // is executed). This forces the watch window to update in case a closer scope
- // variables have been changed during a debugging session.
- if (object instanceof StackFrame.StackFrame)
- object.clearScopes();
- }
-
- this.rebuild(true);
- this.markChange();
- },
-
- breakOnProperty: function(row)
- {
- var member = row.domObject;
- if (!member)
- return;
-
- // Bail out if this property is not breakable.
- if (!member.breakable)
- return;
-
- var name = member.name;
- if (name === "this")
- return;
-
- var object = this.getRowObject(row);
- object = this.getObjectView(object);
- if (!object)
- return;
-
- // Create new or remove an existing breakpoint.
- var breakpoints = this.context.dom.breakpoints;
- var bp = breakpoints.findBreakpoint(object, name);
- if (bp)
- {
- row.removeAttribute("breakpoint");
- breakpoints.removeBreakpoint(object, name);
- }
- else
- {
- breakpoints.addBreakpoint(object, name, this, row);
- row.setAttribute("breakpoint", "true");
- }
- },
-});
-
-// ********************************************************************************************* //
-// Local Helpers
-
-function getRowName(row)
-{
- // XXX This can return not only property names but also just descriptive ones,
- // like "(closure)", and indeed the collapse remembering logic relies on that.
- var labelNode = row.getElementsByClassName("memberLabelCell").item(0);
- return labelNode.textContent;
-}
-
-function getRowValue(row)
-{
- var valueNode = row.getElementsByClassName("memberValueCell").item(0);
- return valueNode.firstChild.repObject;
-}
-
-function getRowOwnerObject(row)
-{
- var parentRow = getParentRow(row);
- if (parentRow)
- return getRowValue(parentRow);
-}
-
-function getParentRow(row)
-{
- var level = "" + (parseInt(row.getAttribute("level"), 10) - 1);
- if (level === "-1")
- return;
- for (row = row.previousSibling; row; row = row.previousSibling)
- {
- if (row.getAttribute("level") === level)
- return row;
- }
-}
-
-/**
- * Returns an array of parts that uniquely identifies a row (not always all JavaScript)
- */
-function getPath(row)
-{
- var name = getRowName(row);
- var path = [name];
-
- var level = parseInt(row.getAttribute("level"), 10) - 1;
- for (row = row.previousSibling; row && level >= 0; row = row.previousSibling)
- {
- if (parseInt(row.getAttribute("level"), 10) === level)
- {
- name = getRowName(row);
- path.splice(0, 0, name);
-
- --level;
- }
- }
-
- return path;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-// Expose so, it can be used by derived objects.
-Firebug.DOMBasePanel.getPath = getPath;
-
-return Firebug.DOMBasePanel;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+/*jshint esnext:true, es5:true, curly:false */
+/*global FBTrace:true, XPCNativeWrapper:true, Window:true, define:true */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/reps",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/wrapper",
+ "firebug/js/sourceLink",
+ "firebug/js/stackFrame",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/lib/search",
+ "firebug/lib/string",
+ "firebug/lib/array",
+ "firebug/lib/persist",
+ "firebug/console/closureInspector",
+ "firebug/dom/toggleBranch",
+ "firebug/lib/system",
+ "firebug/chrome/menu",
+ "firebug/dom/domMemberProvider",
+ "firebug/dom/domEditor",
+ "firebug/dom/domReps",
+ "firebug/editor/editor",
+ "firebug/js/breakpoint",
+ "firebug/chrome/searchBox",
+ "firebug/dom/domModule",
+ "firebug/console/autoCompleter"
+],
+function(Obj, Firebug, FirebugReps, Locale, Events, Wrapper, SourceLink, StackFrame,
+ Dom, Css, Search, Str, Arr, Persist, ClosureInspector, ToggleBranch, System, Menu,
+ DOMMemberProvider, DOMEditor, DOMReps) {
+
+"use strict";
+
+// ********************************************************************************************* //
+// Constants
+
+const rxIdentifier = /^[$_A-Za-z][$_A-Za-z0-9]*$/;
+
+// ********************************************************************************************* //
+
+/**
+ * @panel Base class for panels displaying hierarchy of objects.
+ */
+Firebug.DOMBasePanel = function()
+{
+}
+
+Firebug.DOMBasePanel.ToolboxPlate = DOMReps.ToolboxPlate;
+Firebug.DOMBasePanel.prototype = Obj.extend(Firebug.Panel,
+/** lends Firebug.DOMBasePanel */
+{
+ tag: DOMReps.DirTablePlate.tableTag,
+ dirTablePlate: DOMReps.DirTablePlate,
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Panel
+
+ initialize: function()
+ {
+ this.objectPath = [];
+ this.propertyPath = [];
+ this.viewPath = [];
+ this.pathIndex = -1;
+ this.toggles = new ToggleBranch.ToggleBranch();
+
+ Firebug.Panel.initialize.apply(this, arguments);
+ },
+
+ initializeNode: function(node)
+ {
+ Firebug.Panel.initializeNode.apply(this, arguments);
+ },
+
+ destroyNode: function()
+ {
+ Firebug.Panel.destroyNode.apply(this, arguments);
+ },
+
+ destroy: function(state)
+ {
+ var view = this.viewPath[this.pathIndex];
+ if (view && this.panelNode.scrollTop)
+ view.scrollTop = this.panelNode.scrollTop;
+
+ if (this.pathIndex > -1)
+ state.pathIndex = this.pathIndex;
+ if (this.viewPath)
+ state.viewPath = this.viewPath;
+ if (this.propertyPath)
+ state.propertyPath = this.propertyPath;
+
+ if (this.propertyPath.length > 0 && !this.propertyPath[1])
+ state.firstSelection = Persist.persistObject(this.getPathObject(1), this.context);
+
+ if (FBTrace.DBG_DOM)
+ FBTrace.sysout("dom.destroy; state:", state);
+
+ Firebug.Panel.destroy.apply(this, arguments);
+ },
+
+ show: function(state)
+ {
+ this.showToolbarButtons("fbStatusButtons", true);
+
+ if (!this.selection)
+ {
+ if (!state)
+ {
+ this.select(null);
+ return;
+ }
+ if (state.pathIndex > -1)
+ this.pathIndex = state.pathIndex;
+ if (state.viewPath)
+ this.viewPath = state.viewPath;
+ if (state.propertyPath)
+ this.propertyPath = state.propertyPath;
+
+ var defaultObject = this.getDefaultSelection();
+ var selectObject = defaultObject;
+
+ if (state.firstSelection)
+ {
+ var restored = state.firstSelection(this.context);
+ if (restored)
+ {
+ selectObject = restored;
+ this.objectPath = [defaultObject, restored];
+ }
+ else
+ this.objectPath = [defaultObject];
+ }
+ else
+ {
+ this.objectPath = [defaultObject];
+ }
+
+ if (this.propertyPath.length > 1)
+ {
+ selectObject = this.resetPaths(selectObject);
+ }
+ else
+ {
+ // Sync with objectPath always containing a default object.
+ this.propertyPath.push(null);
+ }
+
+ var selection = (state.pathIndex < this.objectPath.length ?
+ this.getPathObject(state.pathIndex) :
+ this.getPathObject(this.objectPath.length-1));
+
+ if (FBTrace.DBG_DOM)
+ FBTrace.sysout("dom.show; selection:", selection);
+
+ this.select(selection);
+ }
+ },
+
+ resetPaths: function(selectObject)
+ {
+ for (var i = 1; i < this.propertyPath.length; ++i)
+ {
+ var name = this.propertyPath[i];
+ if (!name)
+ continue;
+
+ var object = selectObject;
+ try
+ {
+ selectObject = object[name];
+ }
+ catch (exc)
+ {
+ selectObject = null;
+ }
+
+ if (selectObject)
+ {
+ this.objectPath.push(new FirebugReps.PropertyObj(object, name));
+ }
+ else
+ {
+ // If we can't access a property, just stop
+ this.viewPath.splice(i);
+ this.propertyPath.splice(i);
+ this.objectPath.splice(i);
+ selectObject = this.getPathObject(this.objectPath.length-1);
+ break;
+ }
+ }
+ },
+
+ hide: function()
+ {
+ var view = this.viewPath[this.pathIndex];
+ if (view && this.panelNode.scrollTop)
+ view.scrollTop = this.panelNode.scrollTop;
+ },
+
+ getBreakOnNextTooltip: function(enabled)
+ {
+ return (enabled ? Locale.$STR("dom.disableBreakOnPropertyChange") :
+ Locale.$STR("dom.label.breakOnPropertyChange"));
+ },
+
+ supportsObject: function(object, type)
+ {
+ if (type == "number" || type == "string" || type == "boolean")
+ return 0;
+ if (object == null)
+ return 1000;
+ else if (object instanceof SourceLink.SourceLink)
+ return 0;
+ else
+ return 1; // just agree to support everything but not aggressively.
+ },
+
+ refresh: function()
+ {
+ this.rebuild(true);
+ },
+
+ updateSelection: function(object)
+ {
+ if (FBTrace.DBG_DOM)
+ FBTrace.sysout("dom.updateSelection", object);
+
+ var previousIndex = this.pathIndex;
+ var previousView = (previousIndex === -1 ? null : this.viewPath[previousIndex]);
+
+ var newPath = this.pathToAppend;
+ delete this.pathToAppend;
+
+ var pathIndex = this.findPathIndex(object);
+ if (newPath || pathIndex === -1)
+ {
+ this.toggles = new ToggleBranch.ToggleBranch();
+
+ if (newPath)
+ {
+ // Remove everything after the point where we are inserting, so we
+ // essentially replace it with the new path
+ if (previousView)
+ {
+ if (this.panelNode.scrollTop)
+ previousView.scrollTop = this.panelNode.scrollTop;
+
+ this.objectPath.splice(previousIndex+1);
+ this.propertyPath.splice(previousIndex+1);
+ this.viewPath.splice(previousIndex+1);
+ }
+
+ var value = this.getPathObject(previousIndex);
+ if (!value)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("dom.updateSelection no pathObject for " + previousIndex);
+ return;
+ }
+
+ // XXX This is wrong with closures, but I haven't noticed anything
+ // break and I don't know how to fix, so let's just leave it...
+ for (var i = 0; i < newPath.length; ++i)
+ {
+ var name = newPath[i];
+ object = value;
+ try
+ {
+ value = value[name];
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("dom.updateSelection FAILS at path_i=" + i +
+ " for name:" + name);
+ }
+ return;
+ }
+
+ ++this.pathIndex;
+ this.objectPath.push(new FirebugReps.PropertyObj(object, name));
+ this.propertyPath.push(name);
+ this.viewPath.push({toggles: this.toggles, scrollTop: 0});
+ }
+ }
+ else
+ {
+ this.toggles = new ToggleBranch.ToggleBranch();
+
+ var win = this.getDefaultSelection();
+ if (object === win)
+ {
+ this.pathIndex = 0;
+ this.objectPath = [win];
+ this.propertyPath = [null];
+ this.viewPath = [{toggles: this.toggles, scrollTop: 0}];
+ }
+ else
+ {
+ this.pathIndex = 1;
+ this.objectPath = [win, object];
+ this.propertyPath = [null, null];
+ this.viewPath = [
+ {toggles: new ToggleBranch.ToggleBranch(), scrollTop: 0},
+ {toggles: this.toggles, scrollTop: 0}
+ ];
+ }
+ }
+
+ this.panelNode.scrollTop = 0;
+ this.rebuild(false);
+ }
+ else
+ {
+ this.pathIndex = pathIndex;
+
+ var view = this.viewPath[pathIndex];
+ this.toggles = view ? view.toggles : new ToggleBranch.ToggleBranch();
+
+ // Persist the current scroll location
+ if (previousView && this.panelNode.scrollTop)
+ previousView.scrollTop = this.panelNode.scrollTop;
+
+ this.rebuild(false, view ? view.scrollTop : 0);
+ }
+ },
+
+ getObjectPath: function(object)
+ {
+ return this.objectPath;
+ },
+
+ getDefaultSelection: function()
+ {
+ // Default to showing the top window.
+ return this.getObjectView(this.context.window);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Options
+
+ updateOption: function(name, value)
+ {
+ var options = new Set();
+ options.add("showUserProps");
+ options.add("showUserFuncs");
+ options.add("showDOMProps");
+ options.add("showDOMFuncs");
+ options.add("showDOMConstants");
+ options.add("showInlineEventHandlers");
+ options.add("showClosures");
+ options.add("showOwnProperties");
+ options.add("showEnumerableProperties");
+
+ if (options.has(name))
+ this.rebuild(true);
+ },
+
+ getOptionsMenuItems: function()
+ {
+ return [
+ Menu.optionMenu("ShowUserProps", "showUserProps",
+ "dom.option.tip.Show_User_Props"),
+ Menu.optionMenu("ShowUserFuncs", "showUserFuncs",
+ "dom.option.tip.Show_User_Funcs"),
+ Menu.optionMenu("ShowDOMProps", "showDOMProps",
+ "dom.option.tip.Show_DOM_Props"),
+ Menu.optionMenu("ShowDOMFuncs", "showDOMFuncs",
+ "dom.option.tip.Show_DOM_Funcs"),
+ Menu.optionMenu("ShowDOMConstants", "showDOMConstants",
+ "dom.option.tip.Show_DOM_Constants"),
+ Menu.optionMenu("ShowInlineEventHandlers", "showInlineEventHandlers",
+ "ShowInlineEventHandlersTooltip"),
+ Menu.optionMenu("ShowClosures", "showClosures",
+ "dom.option.tip.Show_Closures"),
+ "-",
+ Menu.optionMenu("ShowOwnProperties", "showOwnProperties",
+ "ShowOwnPropertiesTooltip"),
+ Menu.optionMenu("ShowEnumerableProperties",
+ "showEnumerableProperties", "ShowEnumerablePropertiesTooltip"),
+ "-",
+ {label: "Refresh", command: Obj.bindFixed(this.rebuild, this, true),
+ tooltiptext: "panel.tip.Refresh"}
+ ];
+ },
+
+ getContextMenuItems: function(object, target)
+ {
+ if (FBTrace.DBG_DOM)
+ FBTrace.sysout("dom.getContextMenuItems;", object);
+
+ var row = Dom.getAncestorByClass(target, "memberRow");
+
+ var items = [];
+
+ if (row && row.domObject && !row.domObject.ignoredPath)
+ {
+ var member = row.domObject;
+ var rowName = member.name;
+ var rowObject = member.object;
+ var rowValue = member.value;
+
+ var isWatch = Css.hasClass(row, "watchRow");
+ var isStackFrame = rowObject instanceof StackFrame.StackFrame;
+ var label, tooltiptext;
+
+ items.push(
+ "-",
+ {
+ label: "Copy_Name",
+ tooltiptext: "dom.tip.Copy_Name",
+ command: Obj.bindFixed(this.copyName, this, row)
+ },
+ {
+ label: "Copy_Path",
+ tooltiptext: "dom.tip.Copy_Path",
+ command: Obj.bindFixed(this.copyPath, this, row)
+ }
+ );
+
+ if (typeof rowValue === "string" || typeof rowValue === "number")
+ {
+ // Functions already have a copy item in their context menu
+ items.push(
+ {
+ label: "CopyValue",
+ tooltiptext: "dom.tip.Copy_Value",
+ command: Obj.bindFixed(this.copyProperty, this, row)
+ }
+ );
+ }
+
+ if (isWatch)
+ {
+ label = "EditWatch";
+ tooltiptext = "watch.tip.Edit_Watch";
+ }
+ else if (isStackFrame)
+ {
+ label = "EditVariable";
+ tooltiptext = "stack.tip.Edit_Variable";
+ }
+ else
+ {
+ label = "EditProperty";
+ tooltiptext = "dom.tip.Edit_Property";
+ }
+
+ var readOnly = (!isWatch && !isStackFrame && member.readOnly);
+ if (!readOnly)
+ {
+ items.push(
+ "-",
+ {
+ label: label,
+ tooltiptext: tooltiptext,
+ command: Obj.bindFixed(this.editProperty, this, row)
+ }
+ );
+ }
+
+ if (isWatch ||
+ (member.deletable && !isStackFrame && !Dom.isDOMMember(rowObject, rowName)))
+ {
+ items.push(
+ {
+ label: isWatch ? "DeleteWatch" : "DeleteProperty",
+ id: "DeleteProperty",
+ tooltiptext: isWatch ? "watch.tip.Delete_Watch" :
+ "dom.tip.Delete_Property",
+ command: Obj.bindFixed(this.deleteProperty, this, row)
+ }
+ );
+ }
+
+ if (!Dom.isDOMMember(rowObject, rowName) && member && member.breakable)
+ {
+ items.push(
+ "-",
+ {
+ label: "dom.label.breakOnPropertyChange",
+ tooltiptext: "dom.tip.Break_On_Property_Change",
+ type: "checkbox",
+ checked: this.context.dom.breakpoints.findBreakpoint(rowObject, rowName),
+ command: Obj.bindFixed(this.breakOnProperty, this, row)
+ }
+ );
+ }
+ }
+
+ items.push(
+ "-",
+ {
+ label: "Refresh",
+ tooltiptext: "panel.tip.Refresh",
+ command: Obj.bindFixed(this.rebuild, this, true)
+ }
+ );
+
+ return items;
+ },
+
+ getEditor: function(target, value)
+ {
+ if (!this.editor)
+ this.editor = new DOMEditor(this.document);
+
+ return this.editor;
+ },
+
+ getObjectView: function(object)
+ {
+ if (!Firebug.viewChrome)
+ {
+ // Unwrap native, wrapped objects.
+ var contentView = Wrapper.getContentView(object);
+ if (contentView)
+ return contentView;
+ }
+ return object;
+ },
+
+ rebuild: function(update, scrollTop)
+ {
+ Events.dispatch(this.fbListeners, "onBeforeDomUpdateSelection", [this]);
+
+ var members = this.getMembers(this.selection, 0);
+ this.expandMembers(members, this.toggles, 0, 0);
+ this.showMembers(members, update, scrollTop);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Members
+
+ /**
+ * @param object a user-level object wrapped in security blanket
+ * @param level for a.b.c, level is 2
+ */
+ getMembers: function(object, level)
+ {
+ if (!this.memberProvider)
+ this.memberProvider = new DOMMemberProvider(this.context);
+
+ return this.memberProvider.getMembers(object, level);
+ },
+
+ // For backward compatibility
+ addMember: function()
+ {
+ if (!this.memberProvider)
+ this.memberProvider = new DOMMemberProvider(this.context);
+
+ return this.memberProvider.addMember.apply(this.memberProvider, arguments);
+ },
+
+ // recursion starts with offset=0, level=0
+ expandMembers: function(members, toggles, offset, level)
+ {
+ var expanded = 0;
+ for (var i = offset; i < members.length; ++i)
+ {
+ var member = members[i];
+ if (member.level < level)
+ break;
+
+ if (toggles.get(member.name))
+ {
+ // member.level <= level && member.name in toggles.
+ member.open = "opened";
+
+ // Don't expand if the member doesn't have children any more.
+ if (!member.hasChildren)
+ continue;
+
+ // sets newMembers.level to level+1
+ var newMembers = this.getMembers(member.value, level+1);
+
+ // Insert 'newMembers' into 'members'
+ Arr.arrayInsert(members, i+1, newMembers);
+
+ if (FBTrace.DBG_DOM)
+ {
+ FBTrace.sysout("expandMembers member.name "+member.name+" member "+member);
+ FBTrace.sysout("expandMembers toggles "+toggles, toggles);
+ FBTrace.sysout("expandMembers toggles.get(member.name) " +
+ toggles.get(member.name), toggles.get(member.name));
+ FBTrace.sysout("dom.expandedMembers level: "+level+" member.level " +
+ member.level, member);
+ }
+
+ var moreExpanded = newMembers.length +
+ this.expandMembers(members, toggles.get(member.name), i+1, level+1);
+ i += moreExpanded;
+ expanded += moreExpanded;
+ }
+ }
+
+ return expanded;
+ },
+
+ showMembers: function(members, update, scrollTop)
+ {
+ // If we are still in the midst of inserting rows, cancel all pending
+ // insertions here - this is a big speedup when stepping in the debugger
+ if (this.timeouts)
+ {
+ for (var i = 0; i < this.timeouts.length; ++i)
+ this.context.clearTimeout(this.timeouts[i]);
+ delete this.timeouts;
+ }
+
+ if (!members.length)
+ return this.showEmptyMembers();
+
+ var panelNode = this.panelNode;
+ var priorScrollTop = (scrollTop === undefined ? panelNode.scrollTop : scrollTop);
+
+ // If we are asked to "update" the current view, then build the new table
+ // offscreen and swap it in when it's done
+ var offscreen = update && panelNode.firstChild;
+ var dest = offscreen ? this.document : panelNode;
+
+ var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
+ var tbody = table.lastChild;
+ var rowTag = this.dirTablePlate.rowTag;
+
+ // Insert the first slice immediately
+ var setSize = members.length;
+ var slice = members.splice(0, DOMReps.insertSliceSize);
+ var result = rowTag.insertRows({members: slice}, tbody.lastChild);
+ var rowCount = 1;
+ var panel = this;
+
+ Events.dispatch(this.fbListeners, "onMemberRowSliceAdded",
+ [panel, result, rowCount, setSize]);
+
+ var timeouts = [];
+
+ var delay = 0;
+ while (members.length)
+ {
+ let slice = members.splice(0, DOMReps.insertSliceSize);
+ timeouts.push(this.context.setTimeout(function addMemberRowSlice()
+ {
+ result = rowTag.insertRows({members: slice}, tbody.lastChild);
+ rowCount += DOMReps.insertSliceSize;
+
+ Events.dispatch(Firebug.DOMModule.fbListeners, "onMemberRowSliceAdded",
+ [panel, result, rowCount, setSize]);
+
+ if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop)
+ panelNode.scrollTop = priorScrollTop;
+
+ }, delay));
+
+ delay += DOMReps.insertInterval;
+ }
+
+ if (offscreen)
+ {
+ timeouts.push(this.context.setTimeout(function()
+ {
+ if (panelNode.firstChild)
+ panelNode.replaceChild(table, panelNode.firstChild);
+ else
+ panelNode.appendChild(table);
+
+ // Scroll back to where we were before
+ panelNode.scrollTop = priorScrollTop;
+ }, delay));
+ }
+ else
+ {
+ timeouts.push(this.context.setTimeout(function()
+ {
+ panelNode.scrollTop = (scrollTop === undefined ? 0 : scrollTop);
+ }, delay));
+ }
+ this.timeouts = timeouts;
+ },
+
+ showEmptyMembers: function()
+ {
+ FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode);
+ },
+
+ findPathIndex: function(object)
+ {
+ var pathIndex = -1;
+ for (var i = 0; i < this.objectPath.length; ++i)
+ {
+ if (this.getPathObject(i) === object)
+ return i;
+ }
+
+ return -1;
+ },
+
+ getPathObject: function(index)
+ {
+ var object = this.objectPath[index];
+ if (object instanceof FirebugReps.PropertyObj)
+ return object.getObject();
+ else
+ return object;
+ },
+
+ getRowObject: function(row)
+ {
+ var object = getRowOwnerObject(row);
+ return object ? object : this.selection;
+ },
+
+ getRealRowObject: function(row)
+ {
+ var object = this.getRowObject(row);
+ return this.getObjectView(object);
+ },
+
+ getRowPropertyValue: function(row)
+ {
+ var object = this.getRealRowObject(row);
+ return this.getObjectPropertyValue(object, row.domObject.name);
+ },
+
+ getObjectPropertyValue: function(object, propName)
+ {
+ if (!object)
+ return;
+
+ // Get the value with try-catch statement. This method is used also within
+ // getContextMenuItems where the exception would break the context menu.
+ // 1) The Firebug.Debugger.evaluate can throw
+ // 2) object[propName] can also throws in case of e.g. non existing "abc.abc" prop name.
+ try
+ {
+ if (object instanceof StackFrame.StackFrame)
+ return Firebug.Debugger.evaluate(propName, this.context);
+ else
+ return object[propName];
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_DOM || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("dom.getObjectPropertyValue; EXCEPTION " + propName, object);
+ }
+ },
+
+ getRowPathName: function(row)
+ {
+ var member = row.domObject, name = member.name;
+
+ // Fake "(closure)" properties.
+ if (member.ignoredPath)
+ return ["", ""];
+
+ // Closure variables.
+ if (ClosureInspector.isScopeWrapper(member.object))
+ return [".%", name];
+
+ // Ordinals.
+ if (name.match(/^[\d]+$/))
+ return ["", "["+name+"]"];
+
+ // Identifiers.
+ if (name.match(rxIdentifier))
+ return [".", name];
+
+ // Other, weird, names.
+ return ["", "[\""+name.replace(/\\/g, "\\\\").replace(/"/g,"\\\"") + "\"]"];
+ },
+
+ copyName: function(row)
+ {
+ var value = this.getRowPathName(row);
+ value = value[1]; //don't want the separator
+ System.copyToClipboard(value);
+ },
+
+ copyPath: function(row)
+ {
+ var path = this.getPropertyPath(row);
+ System.copyToClipboard(path.join(""));
+ },
+
+ /**
+ * Walk from the current row up to the most ancient parent, building an array.
+ * @return array of property names and separators, eg ['foo','.','bar'].
+ */
+ getPropertyPath: function(row)
+ {
+ var path = [];
+ for (var current = row; current ; current = getParentRow(current))
+ path = this.getRowPathName(current).concat(path);
+ path.shift(); //don't want the first separator
+ return path;
+ },
+
+ copyProperty: function(row)
+ {
+ var value = this.getRowPropertyValue(row);
+ System.copyToClipboard(value);
+ },
+
+ editProperty: function(row, editValue)
+ {
+ var member = row.domObject;
+ if (member && member.readOnly)
+ return;
+
+ if (Css.hasClass(row, "watchNewRow"))
+ {
+ Firebug.Editor.startEditing(row, "");
+ }
+ else if (Css.hasClass(row, "watchRow"))
+ {
+ Firebug.Editor.startEditing(row, getRowName(row));
+ }
+ else
+ {
+ var object = this.getRowObject(row);
+ this.context.thisValue = object;
+
+ if (!editValue)
+ {
+ var propValue = this.getRowPropertyValue(row);
+
+ var type = typeof propValue;
+ if (type === "undefined" || type === "number" || type === "boolean")
+ editValue = "" + propValue;
+ else if (type === "string")
+ editValue = "\"" + Str.escapeJS(propValue) + "\"";
+ else if (propValue === null)
+ editValue = "null";
+ else if (object instanceof window.Window || object instanceof StackFrame.StackFrame)
+ editValue = getRowName(row);
+ else
+ editValue = "this." + getRowName(row); // XXX "this." doesn't actually work
+ }
+
+ Firebug.Editor.startEditing(row, editValue);
+ }
+ },
+
+ deleteProperty: function(row)
+ {
+ if (Css.hasClass(row, "watchRow"))
+ {
+ this.deleteWatch(row);
+ }
+ else
+ {
+ var member = row.domObject;
+ var object = this.getObjectView(member.object);
+
+ if (member.deletable)
+ {
+ try
+ {
+ delete object[member.name];
+ }
+ catch (exc)
+ {
+ return;
+ }
+
+ this.rebuild(true);
+ this.markChange();
+ }
+ }
+ },
+
+ setPropertyValue: function(row, value) // value must be string
+ {
+ var member = row.domObject;
+ var name = member.name;
+
+ if (FBTrace.DBG_DOM)
+ {
+ FBTrace.sysout("setPropertyValue: " + name + " set to " +
+ (typeof value === "string" ? "\"" + value + "\"" : "non-string!?!?"), row);
+ }
+
+ if (name === "this")
+ return;
+
+ var object = this.getRealRowObject(row);
+ if (object && !(object instanceof StackFrame.StackFrame))
+ {
+ Firebug.CommandLine.evaluate(value, this.context, object, this.context.getCurrentGlobal(),
+ function success(result, context)
+ {
+ if (FBTrace.DBG_DOM)
+ {
+ FBTrace.sysout("setPropertyValue evaluate success object[" + name + "]" +
+ " set to type " + typeof result, result);
+ }
+ object[name] = result;
+ },
+ function failed(exc, context)
+ {
+ try
+ {
+ if (FBTrace.DBG_DOM)
+ {
+ FBTrace.sysout("setPropertyValue evaluate FAILED", exc);
+ }
+
+ // If the value doesn't parse, then just store it as a string.
+ // Some users will not realize they're supposed to enter a JavaScript
+ // expression and just type literal text
+ object[name] = value;
+ }
+ catch (exc) {}
+ }
+ );
+ }
+ else if (this.context.stopped)
+ {
+ try
+ {
+ Firebug.CommandLine.evaluate(name + "=" + value, this.context);
+ }
+ catch (exc)
+ {
+ try
+ {
+ // See catch block above...
+ object[name] = value;
+ }
+ catch (exc)
+ {
+ return;
+ }
+ }
+
+ // Clear cached scope chain (it'll be regenerated the next time the getScopes
+ // is executed). This forces the watch window to update in case a closer scope
+ // variables have been changed during a debugging session.
+ if (object instanceof StackFrame.StackFrame)
+ object.clearScopes();
+ }
+
+ this.rebuild(true);
+ this.markChange();
+ },
+
+ breakOnProperty: function(row)
+ {
+ var member = row.domObject;
+ if (!member)
+ return;
+
+ // Bail out if this property is not breakable.
+ if (!member.breakable)
+ return;
+
+ var name = member.name;
+ if (name === "this")
+ return;
+
+ var object = this.getRowObject(row);
+ object = this.getObjectView(object);
+ if (!object)
+ return;
+
+ // Create new or remove an existing breakpoint.
+ var breakpoints = this.context.dom.breakpoints;
+ var bp = breakpoints.findBreakpoint(object, name);
+ if (bp)
+ {
+ row.removeAttribute("breakpoint");
+ breakpoints.removeBreakpoint(object, name);
+ }
+ else
+ {
+ breakpoints.addBreakpoint(object, name, this, row);
+ row.setAttribute("breakpoint", "true");
+ }
+ },
+});
+
+// ********************************************************************************************* //
+// Local Helpers
+
+function getRowName(row)
+{
+ // XXX This can return not only property names but also just descriptive ones,
+ // like "(closure)", and indeed the collapse remembering logic relies on that.
+ var labelNode = row.getElementsByClassName("memberLabelCell").item(0);
+ return labelNode.textContent;
+}
+
+function getRowValue(row)
+{
+ var valueNode = row.getElementsByClassName("memberValueCell").item(0);
+ return valueNode.firstChild.repObject;
+}
+
+function getRowOwnerObject(row)
+{
+ var parentRow = getParentRow(row);
+ if (parentRow)
+ return getRowValue(parentRow);
+}
+
+function getParentRow(row)
+{
+ var level = "" + (parseInt(row.getAttribute("level"), 10) - 1);
+ if (level === "-1")
+ return;
+ for (row = row.previousSibling; row; row = row.previousSibling)
+ {
+ if (row.getAttribute("level") === level)
+ return row;
+ }
+}
+
+/**
+ * Returns an array of parts that uniquely identifies a row (not always all JavaScript)
+ */
+function getPath(row)
+{
+ var name = getRowName(row);
+ var path = [name];
+
+ var level = parseInt(row.getAttribute("level"), 10) - 1;
+ for (row = row.previousSibling; row && level >= 0; row = row.previousSibling)
+ {
+ if (parseInt(row.getAttribute("level"), 10) === level)
+ {
+ name = getRowName(row);
+ path.splice(0, 0, name);
+
+ --level;
+ }
+ }
+
+ return path;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+// Expose so, it can be used by derived objects.
+Firebug.DOMBasePanel.getPath = getPath;
+
+return Firebug.DOMBasePanel;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/dom/domBreakpointGroup.js b/content/firebug/dom/domBreakpointGroup.js
index 24cdb70..2b2e4e5 100644
--- a/content/firebug/dom/domBreakpointGroup.js
+++ b/content/firebug/dom/domBreakpointGroup.js
@@ -1,310 +1,310 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/wrapper",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/lib/string",
- "firebug/lib/array",
- "firebug/lib/persist",
-],
-function(Obj, Firebug, Domplate, Locale, Events, Wrapper, Dom, Css, Str, Arr, Persist) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-// Breakpoint Group
-
-function DOMBreakpointGroup()
-{
- this.breakpoints = [];
-}
-
-DOMBreakpointGroup.prototype = Obj.extend(new Firebug.Breakpoint.BreakpointGroup(),
-{
- name: "domBreakpoints",
- title: Locale.$STR("dom.label.DOM Breakpoints"),
-
- addBreakpoint: function(object, propName, panel, row)
- {
- var path = panel.getPropertyPath(row);
- path.pop();
-
- // We don't want the last dot.
- if (path.length > 0 && path[path.length-1] == ".")
- path.pop();
-
- var objectPath = path.join("");
- if (FBTrace.DBG_DOM)
- FBTrace.sysout("dom.addBreakpoint; " + objectPath, path);
-
- var bp = new Breakpoint(object, propName, objectPath, panel.context);
- if (bp.watchProperty());
- this.breakpoints.push(bp);
- },
-
- removeBreakpoint: function(object, propName)
- {
- var bp = this.findBreakpoint(object, propName);
- if (bp)
- {
- bp.unwatchProperty();
- Arr.remove(this.breakpoints, bp);
- }
- },
-
- matchBreakpoint: function(bp, args)
- {
- var object = args[0];
- var propName = args[1];
- return bp.object == object && bp.propName == propName;
- },
-
- // Persistence
- load: function(context)
- {
- var panelState = Persist.getPersistedState(context, "dom");
- if (panelState.breakpoints)
- this.breakpoints = panelState.breakpoints;
-
- this.enumerateBreakpoints(function(bp)
- {
- try
- {
- var contentView = Wrapper.getContentView(context.window);
- bp.object = contentView[bp.objectPath];
- bp.context = context;
- bp.watchProperty();
-
- if (FBTrace.DBG_DOM)
- FBTrace.sysout("dom.DOMBreakpointGroup.load; " + bp.objectPath, bp);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERROR || FBTrace.DBG_DOM)
- FBTrace.sysout("dom.DOMBreakpointGroup.load; ERROR " + bp.objectPath, err);
- }
- });
- },
-
- store: function(context)
- {
- this.enumerateBreakpoints(function(bp)
- {
- bp.object = null;
- });
-
- var panelState = Persist.getPersistedState(context, "dom");
- panelState.breakpoints = this.breakpoints;
- },
-});
-
-// ********************************************************************************************* //
-
-function Breakpoint(object, propName, objectPath, context)
-{
- this.context = context;
- this.propName = propName;
- this.objectPath = objectPath;
- this.object = object;
- this.checked = true;
-}
-
-Breakpoint.prototype =
-{
- watchProperty: function()
- {
- if (FBTrace.DBG_DOM)
- FBTrace.sysout("dom.watch; property: " + this.propName);
-
- if (!this.object)
- return;
-
- try
- {
- var self = this;
- this.object.watch(this.propName, function handler(prop, oldval, newval)
- {
- // XXXjjb Beware: in playing with this feature I hit too much recursion
- // multiple times with console.log
- // TODO Do something cute in the UI with the error bubble thing
- if (self.checked)
- {
- self.context.breakingCause = {
- title: Locale.$STR("dom.Break On Property"),
- message: Str.cropString(prop, 200),
- prevValue: oldval,
- newValue: newval
- };
-
- Firebug.Breakpoint.breakNow(self.context.getPanel("dom"));
- }
- return newval;
- });
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("dom.watch; object FAILS " + exc, exc);
- return false;
- }
-
- return true;
- },
-
- unwatchProperty: function()
- {
- if (FBTrace.DBG_DOM)
- FBTrace.sysout("dom.unwatch; property: " + this.propName, this.object);
-
- if (!this.object)
- return;
-
- try
- {
- this.object.unwatch(this.propName);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("dom.unwatch; object FAILS " + exc, exc);
- }
- }
-};
-
-// ********************************************************************************************* //
-
-var BreakpointRep = domplate(Firebug.Rep,
-{
- inspectable: false,
-
- tag:
- DIV({"class": "breakpointRow focusRow", $disabled: "$bp|isDisabled", _repObject: "$bp",
- role: "option", "aria-checked": "$bp.checked"},
- DIV({"class": "breakpointBlockHead"},
- INPUT({"class": "breakpointCheckbox", type: "checkbox",
- _checked: "$bp.checked", tabindex: "-1", onclick: "$onEnable"}),
- SPAN({"class": "breakpointName"}, "$bp.propName"),
- SPAN({"class": "closeButton", onclick: "$onRemove"})
- ),
- DIV({"class": "breakpointCode"},
- TAG("$bp.object|getObjectTag", {object: "$bp.object"})
- )
- ),
-
- getObjectTag: function(object)
- {
- // I am uncertain about the Firebug.currentContext but I think we are
- // only here in panel code.
- var rep = Firebug.getRep(object, Firebug.currentContext);
- return rep.shortTag ? rep.shortTag : rep.tag;
- },
-
- isDisabled: function(bp)
- {
- return !bp.checked;
- },
-
- onRemove: function(event)
- {
- Events.cancelEvent(event);
-
- if (!Css.hasClass(event.target, "closeButton"))
- return;
-
- var bpPanel = Firebug.getElementPanel(event.target);
- var context = bpPanel.context;
-
- // Remove from list of breakpoints.
- var row = Dom.getAncestorByClass(event.target, "breakpointRow");
- var bp = row.repObject;
- context.dom.breakpoints.removeBreakpoint(bp.object, bp.propName);
-
- bpPanel.refresh();
-
- var domPanel = context.getPanel("dom", true);
- if (domPanel)
- {
- var domRow = findRow(domPanel.panelNode, bp.object, bp.propName);
- if (domRow)
- {
- domRow.removeAttribute("breakpoint");
- domRow.removeAttribute("disabledBreakpoint");
- }
- }
- },
-
- onEnable: function(event)
- {
- var checkBox = event.target;
- var bpRow = Dom.getAncestorByClass(checkBox, "breakpointRow");
-
- if (checkBox.checked)
- {
- Css.removeClass(bpRow, "disabled");
- bpRow.setAttribute("aria-checked", "true");
- }
- else
- {
- Css.setClass(bpRow, "disabled");
- bpRow.setAttribute("aria-checked", "false");
- }
-
- var bp = bpRow.repObject;
- bp.checked = checkBox.checked;
-
- var bpPanel = Firebug.getElementPanel(event.target);
- var context = bpPanel.context;
-
- var domPanel = context.getPanel("dom", true);
- if (domPanel)
- {
- var row = findRow(domPanel.panelNode, bp.object, bp.propName);
- if (row)
- row.setAttribute("disabledBreakpoint", bp.checked ? "false" : "true");
- }
- },
-
- supportsObject: function(object, type)
- {
- return object instanceof Breakpoint;
- }
-});
-
-// ********************************************************************************************* //
-// Helpers
-
-function findRow(parentNode, object, propName)
-{
- var rows = parentNode.getElementsByClassName("memberRow");
- for (var i=0; i<rows.length; i++)
- {
- var row = rows[i];
- if (object == row.domObject.object && propName == row.domObject.name)
- return row;
- }
-
- return row;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerRep(BreakpointRep);
-
-return DOMBreakpointGroup;
-
-// ********************************************************************************************* //
-}});
-
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/wrapper",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/lib/string",
+ "firebug/lib/array",
+ "firebug/lib/persist",
+],
+function(Obj, Firebug, Domplate, Locale, Events, Wrapper, Dom, Css, Str, Arr, Persist) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+// Breakpoint Group
+
+function DOMBreakpointGroup()
+{
+ this.breakpoints = [];
+}
+
+DOMBreakpointGroup.prototype = Obj.extend(new Firebug.Breakpoint.BreakpointGroup(),
+{
+ name: "domBreakpoints",
+ title: Locale.$STR("dom.label.DOM Breakpoints"),
+
+ addBreakpoint: function(object, propName, panel, row)
+ {
+ var path = panel.getPropertyPath(row);
+ path.pop();
+
+ // We don't want the last dot.
+ if (path.length > 0 && path[path.length-1] == ".")
+ path.pop();
+
+ var objectPath = path.join("");
+ if (FBTrace.DBG_DOM)
+ FBTrace.sysout("dom.addBreakpoint; " + objectPath, path);
+
+ var bp = new Breakpoint(object, propName, objectPath, panel.context);
+ if (bp.watchProperty());
+ this.breakpoints.push(bp);
+ },
+
+ removeBreakpoint: function(object, propName)
+ {
+ var bp = this.findBreakpoint(object, propName);
+ if (bp)
+ {
+ bp.unwatchProperty();
+ Arr.remove(this.breakpoints, bp);
+ }
+ },
+
+ matchBreakpoint: function(bp, args)
+ {
+ var object = args[0];
+ var propName = args[1];
+ return bp.object == object && bp.propName == propName;
+ },
+
+ // Persistence
+ load: function(context)
+ {
+ var panelState = Persist.getPersistedState(context, "dom");
+ if (panelState.breakpoints)
+ this.breakpoints = panelState.breakpoints;
+
+ this.enumerateBreakpoints(function(bp)
+ {
+ try
+ {
+ var contentView = Wrapper.getContentView(context.window);
+ bp.object = contentView[bp.objectPath];
+ bp.context = context;
+ bp.watchProperty();
+
+ if (FBTrace.DBG_DOM)
+ FBTrace.sysout("dom.DOMBreakpointGroup.load; " + bp.objectPath, bp);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERROR || FBTrace.DBG_DOM)
+ FBTrace.sysout("dom.DOMBreakpointGroup.load; ERROR " + bp.objectPath, err);
+ }
+ });
+ },
+
+ store: function(context)
+ {
+ this.enumerateBreakpoints(function(bp)
+ {
+ bp.object = null;
+ });
+
+ var panelState = Persist.getPersistedState(context, "dom");
+ panelState.breakpoints = this.breakpoints;
+ },
+});
+
+// ********************************************************************************************* //
+
+function Breakpoint(object, propName, objectPath, context)
+{
+ this.context = context;
+ this.propName = propName;
+ this.objectPath = objectPath;
+ this.object = object;
+ this.checked = true;
+}
+
+Breakpoint.prototype =
+{
+ watchProperty: function()
+ {
+ if (FBTrace.DBG_DOM)
+ FBTrace.sysout("dom.watch; property: " + this.propName);
+
+ if (!this.object)
+ return;
+
+ try
+ {
+ var self = this;
+ this.object.watch(this.propName, function handler(prop, oldval, newval)
+ {
+ // XXXjjb Beware: in playing with this feature I hit too much recursion
+ // multiple times with console.log
+ // TODO Do something cute in the UI with the error bubble thing
+ if (self.checked)
+ {
+ self.context.breakingCause = {
+ title: Locale.$STR("dom.Break On Property"),
+ message: Str.cropString(prop, 200),
+ prevValue: oldval,
+ newValue: newval
+ };
+
+ Firebug.Breakpoint.breakNow(self.context.getPanel("dom"));
+ }
+ return newval;
+ });
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("dom.watch; object FAILS " + exc, exc);
+ return false;
+ }
+
+ return true;
+ },
+
+ unwatchProperty: function()
+ {
+ if (FBTrace.DBG_DOM)
+ FBTrace.sysout("dom.unwatch; property: " + this.propName, this.object);
+
+ if (!this.object)
+ return;
+
+ try
+ {
+ this.object.unwatch(this.propName);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("dom.unwatch; object FAILS " + exc, exc);
+ }
+ }
+};
+
+// ********************************************************************************************* //
+
+var BreakpointRep = domplate(Firebug.Rep,
+{
+ inspectable: false,
+
+ tag:
+ DIV({"class": "breakpointRow focusRow", $disabled: "$bp|isDisabled", _repObject: "$bp",
+ role: "option", "aria-checked": "$bp.checked"},
+ DIV({"class": "breakpointBlockHead"},
+ INPUT({"class": "breakpointCheckbox", type: "checkbox",
+ _checked: "$bp.checked", tabindex: "-1", onclick: "$onEnable"}),
+ SPAN({"class": "breakpointName"}, "$bp.propName"),
+ SPAN({"class": "closeButton", onclick: "$onRemove"})
+ ),
+ DIV({"class": "breakpointCode"},
+ TAG("$bp.object|getObjectTag", {object: "$bp.object"})
+ )
+ ),
+
+ getObjectTag: function(object)
+ {
+ // I am uncertain about the Firebug.currentContext but I think we are
+ // only here in panel code.
+ var rep = Firebug.getRep(object, Firebug.currentContext);
+ return rep.shortTag ? rep.shortTag : rep.tag;
+ },
+
+ isDisabled: function(bp)
+ {
+ return !bp.checked;
+ },
+
+ onRemove: function(event)
+ {
+ Events.cancelEvent(event);
+
+ if (!Css.hasClass(event.target, "closeButton"))
+ return;
+
+ var bpPanel = Firebug.getElementPanel(event.target);
+ var context = bpPanel.context;
+
+ // Remove from list of breakpoints.
+ var row = Dom.getAncestorByClass(event.target, "breakpointRow");
+ var bp = row.repObject;
+ context.dom.breakpoints.removeBreakpoint(bp.object, bp.propName);
+
+ bpPanel.refresh();
+
+ var domPanel = context.getPanel("dom", true);
+ if (domPanel)
+ {
+ var domRow = findRow(domPanel.panelNode, bp.object, bp.propName);
+ if (domRow)
+ {
+ domRow.removeAttribute("breakpoint");
+ domRow.removeAttribute("disabledBreakpoint");
+ }
+ }
+ },
+
+ onEnable: function(event)
+ {
+ var checkBox = event.target;
+ var bpRow = Dom.getAncestorByClass(checkBox, "breakpointRow");
+
+ if (checkBox.checked)
+ {
+ Css.removeClass(bpRow, "disabled");
+ bpRow.setAttribute("aria-checked", "true");
+ }
+ else
+ {
+ Css.setClass(bpRow, "disabled");
+ bpRow.setAttribute("aria-checked", "false");
+ }
+
+ var bp = bpRow.repObject;
+ bp.checked = checkBox.checked;
+
+ var bpPanel = Firebug.getElementPanel(event.target);
+ var context = bpPanel.context;
+
+ var domPanel = context.getPanel("dom", true);
+ if (domPanel)
+ {
+ var row = findRow(domPanel.panelNode, bp.object, bp.propName);
+ if (row)
+ row.setAttribute("disabledBreakpoint", bp.checked ? "false" : "true");
+ }
+ },
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof Breakpoint;
+ }
+});
+
+// ********************************************************************************************* //
+// Helpers
+
+function findRow(parentNode, object, propName)
+{
+ var rows = parentNode.getElementsByClassName("memberRow");
+ for (var i=0; i<rows.length; i++)
+ {
+ var row = rows[i];
+ if (object == row.domObject.object && propName == row.domObject.name)
+ return row;
+ }
+
+ return row;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerRep(BreakpointRep);
+
+return DOMBreakpointGroup;
+
+// ********************************************************************************************* //
+}});
+
diff --git a/content/firebug/dom/domEditor.js b/content/firebug/dom/domEditor.js
index 0e88353..0222a38 100644
--- a/content/firebug/dom/domEditor.js
+++ b/content/firebug/dom/domEditor.js
@@ -1,68 +1,68 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/events",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/console/autoCompleter", // Firebug.JSEditor
-],
-function(Firebug, Domplate, Events, Dom, Css) {
-with (Domplate) {
-
-// ********************************************************************************************* //
-// DOM Inline Editor
-
-function DOMEditor(doc)
-{
- this.box = this.tag.replace({}, doc, this);
- this.input = this.box.childNodes[1];
-
- var completionBox = this.box.childNodes[0];
- var options = {
- includeCurrentScope: true
- };
-
- this.setupCompleter(completionBox, options);
-}
-
-DOMEditor.prototype = domplate(Firebug.JSEditor.prototype,
-{
- tag:
- DIV({style: "position: absolute;"},
- INPUT({"class": "fixedWidthEditor completionBox", type: "text",
- tabindex: "-1"}),
- INPUT({"class": "fixedWidthEditor completionInput", type: "text",
- oninput: "$onInput", onkeypress: "$onKeyPress"})),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- endEditing: function(target, value, cancel)
- {
- // XXXjoe Kind of hackish - fix me
- delete this.panel.context.thisValue;
-
- if (cancel || value === "")
- return;
-
- var row = Dom.getAncestorByClass(target, "memberRow");
-
- Events.dispatch(this.panel.fbListeners, "onWatchEndEditing", [this.panel]);
-
- if (!row)
- this.panel.addWatch(value);
- else if (Css.hasClass(row, "watchRow"))
- this.panel.setWatchValue(row, value);
- else
- this.panel.setPropertyValue(row, value);
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-return DOMEditor;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/events",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/console/autoCompleter", // Firebug.JSEditor
+],
+function(Firebug, Domplate, Events, Dom, Css) {
+with (Domplate) {
+
+// ********************************************************************************************* //
+// DOM Inline Editor
+
+function DOMEditor(doc)
+{
+ this.box = this.tag.replace({}, doc, this);
+ this.input = this.box.childNodes[1];
+
+ var completionBox = this.box.childNodes[0];
+ var options = {
+ includeCurrentScope: true
+ };
+
+ this.setupCompleter(completionBox, options);
+}
+
+DOMEditor.prototype = domplate(Firebug.JSEditor.prototype,
+{
+ tag:
+ DIV({style: "position: absolute;"},
+ INPUT({"class": "fixedWidthEditor completionBox", type: "text",
+ tabindex: "-1"}),
+ INPUT({"class": "fixedWidthEditor completionInput", type: "text",
+ oninput: "$onInput", onkeypress: "$onKeyPress"})),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ endEditing: function(target, value, cancel)
+ {
+ // XXXjoe Kind of hackish - fix me
+ delete this.panel.context.thisValue;
+
+ if (cancel || value === "")
+ return;
+
+ var row = Dom.getAncestorByClass(target, "memberRow");
+
+ Events.dispatch(this.panel.fbListeners, "onWatchEndEditing", [this.panel]);
+
+ if (!row)
+ this.panel.addWatch(value);
+ else if (Css.hasClass(row, "watchRow"))
+ this.panel.setWatchValue(row, value);
+ else
+ this.panel.setPropertyValue(row, value);
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+return DOMEditor;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/dom/domMemberProvider.js b/content/firebug/dom/domMemberProvider.js
index ceda43e..9cc1c26 100644
--- a/content/firebug/dom/domMemberProvider.js
+++ b/content/firebug/dom/domMemberProvider.js
@@ -1,546 +1,546 @@
-/* See license.txt for terms of usage */
-/*jshint esnext:true, es5:true, curly:false */
-/*global FBTrace:true, XPCNativeWrapper:true, Window:true, define:true */
-
-define([
- "firebug/firebug",
- "firebug/lib/object",
- "firebug/lib/array",
- "firebug/lib/wrapper",
- "firebug/lib/dom",
- "firebug/lib/trace",
- "firebug/lib/locale",
- "firebug/console/closureInspector",
- "firebug/chrome/reps",
-],
-function(Firebug, Obj, Arr, Wrapper, Dom, FBTrace, Locale, ClosureInspector, FirebugReps) {
-
-// ********************************************************************************************* //
-// Constants
-
-// ********************************************************************************************* //
-// DOM Member Provider
-
-function DOMMemberProvider(context)
-{
- this.context = context;
-}
-
-DOMMemberProvider.prototype =
-{
- /**
- * @param object a user-level object wrapped in security blanket
- * @param level for a.b.c, level is 2
- */
- getMembers: function(object, level)
- {
- if (!level)
- level = 0;
-
- var ordinals = [];
- var userProps = [];
- var userClasses = [];
- var userFuncs = [];
- var domProps = [];
- var domClasses = [];
- var domFuncs = [];
- var domConstants = [];
- var proto = [];
- var domHandlers = [];
-
- var isScope = ClosureInspector.isScopeWrapper(object);
-
- try
- {
- // Special case for "arguments", which is not enumerable by for...in statement.
- if (isArguments(object))
- object = Arr.cloneArray(object);
-
- var properties;
- var contentView = this.getObjectView(object);
- try
- {
- // Make sure not to touch the prototype chain of the magic scope objects.
- var ownOnly = Firebug.showOwnProperties || isScope;
- var enumerableOnly = Firebug.showEnumerableProperties;
-
- properties = this.getObjectProperties(contentView, enumerableOnly, ownOnly);
- properties = Arr.sortUnique(properties);
-
- var addOwn = function(prop)
- {
- // Apparently, Object.prototype.hasOwnProperty.call(contentView, p) lies
- // when 'contentView' is content and 'Object' is chrome... Bug 658909?
- if (Object.getOwnPropertyDescriptor(contentView, prop) &&
- properties.indexOf(prop) === -1)
- {
- properties.push(prop);
- }
- };
- addOwn("constructor");
- addOwn("prototype");
- addOwn("wrappedJSObject");
-
- // __proto__ never shows in enumerations, so add it here. We currently
- // we don't want it when only showing own properties.
- if (contentView.__proto__ && Obj.hasProperties(contentView.__proto__) &&
- properties.indexOf("__proto__") === -1 && !Firebug.showOwnProperties)
- {
- properties.push("__proto__");
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS || FBTrace.DBG_DOM)
- FBTrace.sysout("dom.getMembers: property lookups failed", exc);
- }
-
- var name, val;
- var add = function(type, where)
- {
- this.addMember(object, type, where, name, val, level, isScope);
- }.bind(this);
-
- for (var i=0; i<properties.length; i++)
- {
- name = properties[i];
-
- // Ignore only global variables (properties of the |window| object).
- if (Wrapper.shouldIgnore(name) && (object instanceof Window))
- {
- if (FBTrace.DBG_DOM)
- {
- FBTrace.sysout("dom.getMembers: Wrapper.ignoreVars: " + name + ", " +
- level, object);
- }
- continue;
- }
-
- try
- {
- val = contentView[name];
- }
- catch (exc)
- {
- // Sometimes we get exceptions trying to access certain members
- if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
- FBTrace.sysout("dom.getMembers cannot access "+name, exc);
-
- val = undefined;
- }
-
- if (!isNaN(parseInt(name, 10)))
- {
- add("ordinal", ordinals);
- }
- else if (typeof val === "function")
- {
- var classFunc = isClassFunction(val);
- var domMember = Dom.isDOMMember(object, name);
- if (domMember && classFunc)
- {
- add("domClass", domClasses);
- }
- else if (domMember)
- {
- add("domFunction", domFuncs);
- }
- else if (classFunc)
- {
- add("userClass", userClasses);
- }
- else if (!Firebug.showUserFuncs && Firebug.showInlineEventHandlers &&
- Dom.isInlineEventHandler(name))
- {
- add("userFunction", domHandlers);
- }
- else
- {
- add("userFunction", userFuncs);
- }
- }
- else
- {
- if (isPrototype(name))
- {
- add("proto", proto);
- }
- else if (Dom.isDOMMember(object, name))
- {
- add("dom", domProps);
- }
- else if (Dom.isDOMConstant(object, name))
- {
- add("dom", domConstants);
- }
- else if (Dom.isInlineEventHandler(name))
- {
- add("user", domHandlers);
- }
- else
- {
- add("user", userProps);
- }
- }
- }
-
- if (isScope || (typeof object === "function" && Firebug.showClosures && this.context))
- {
- this.maybeAddClosureMember(object, "proto", proto, level, isScope);
- }
- }
- catch (exc)
- {
- // Sometimes we get exceptions just from trying to iterate the members
- // of certain objects, like StorageList, but don't let that gum up the works
- if (FBTrace.DBG_DOM)
- FBTrace.sysout("dom.getMembers FAILS: ", exc);
- }
-
- function sortName(a, b) { return a.name > b.name ? 1 : -1; }
- function sortOrdinal(a, b) { return a.name - b.name; }
-
- var members = [];
-
- ordinals.sort(sortOrdinal);
- members.push.apply(members, ordinals);
-
- if (Firebug.showUserProps)
- {
- userProps.sort(sortName);
- members.push.apply(members, userProps);
- }
-
- if (Firebug.showUserFuncs)
- {
- userClasses.sort(sortName);
- members.push.apply(members, userClasses);
-
- userFuncs.sort(sortName);
- members.push.apply(members, userFuncs);
- }
-
- if (Firebug.showDOMProps)
- {
- domProps.sort(sortName);
- members.push.apply(members, domProps);
- }
-
- if (Firebug.showDOMFuncs)
- {
- domClasses.sort(sortName);
- members.push.apply(members, domClasses);
-
- domFuncs.sort(sortName);
- members.push.apply(members, domFuncs);
- }
-
- if (Firebug.showDOMConstants)
- members.push.apply(members, domConstants);
-
- members.push.apply(members, proto);
-
- if (Firebug.showInlineEventHandlers)
- {
- domHandlers.sort(sortName);
- members.push.apply(members, domHandlers);
- }
-
- if (FBTrace.DBG_DOM)
- {
- var showEnum = Firebug.showEnumerableProperties;
- var showOwn = Firebug.showOwnProperties;
- FBTrace.sysout("dom.getMembers; Report: enum-only: " + showEnum +
- ", own-only: " + showOwn,
- {
- object: object,
- ordinals: ordinals,
- userProps: userProps,
- userFuncs: userFuncs,
- userClasses: userClasses,
- domProps: domProps,
- domFuncs: domFuncs,
- domConstants: domConstants,
- domHandlers: domHandlers,
- proto: proto
- });
- }
-
- return members;
- },
-
- addMember: function()
- {
- try
- {
- return this.addMemberInternal.apply(this, arguments);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("domPanel.addMember; EXCEPTION " + err, err);
- }
- },
-
- addMemberInternal: function(object, type, props, name, value, level, parentIsScope)
- {
- // Do this first in case a call to instanceof (= QI, for XPCOM things) reveals contents.
- var rep = Firebug.getRep(value);
- var tag = rep.shortTag ? rep.shortTag : rep.tag;
-
- var hasProperties = Obj.hasProperties(value, !Firebug.showEnumerableProperties,
- Firebug.showOwnProperties);
-
- var valueType = typeof value;
- var hasChildren = hasProperties && !(value instanceof FirebugReps.ErrorCopy) &&
- ((valueType === "function") ||
- (valueType === "object" && value !== null));
-
- // Special case for closure inspection.
- if (!hasChildren && valueType === "function" && Firebug.showClosures && this.context)
- {
- try
- {
- var win = this.context.getCurrentGlobal();
- ClosureInspector.getEnvironmentForObject(win, value, this.context);
- hasChildren = true;
- }
- catch (e) {}
- }
-
- // Special case for "arguments", which is not enumerable by for...in statement
- // and so, Obj.hasProperties always returns false.
- hasChildren = hasChildren || (!!value && isArguments(value));
-
- if (valueType === "function" && !hasChildren)
- {
- try
- {
- // Special case for functions with a prototype that has values
- var proto = value.prototype;
- if (proto)
- {
- hasChildren = Obj.hasProperties(proto, !Firebug.showEnumerableProperties,
- Firebug.showOwnProperties);
- }
- }
- catch (exc) {}
- }
-
- var descriptor = getPropertyDescriptor(object, name);
-
- var member = {
- object: object,
- name: name,
- value: value,
- type: type,
- rowClass: "memberRow-" + type,
- open: "",
- level: level,
- indent: level * 16,
- hasChildren: hasChildren,
- tag: tag,
- prefix: "",
- readOnly: (descriptor && !descriptor.writable && !descriptor.set),
- // XXX should probably move the tests from getContextMenuItems here
- deletable: (!parentIsScope && !(descriptor && !descriptor.configurable))
- };
-
- // The context doesn't have to be specified (e.g. in case of Watch panel that is based
- // on the same template as the DOM panel, but doesn't show any breakpoints).
- if (this.context)
- {
- // xxxHonza: Support for object change not implemented yet.
- member.breakable = !hasChildren && !parentIsScope;
-
- var breakpoints = this.context.dom.breakpoints;
- var bp = breakpoints.findBreakpoint(object, name);
- if (bp)
- {
- member.breakpoint = true;
- member.disabledBreakpoint = !bp.checked;
- }
- }
-
- if (parentIsScope)
- member.scopeNameTooltip = Locale.$STRF("dom.tip.scopeMemberName", ["%" + name]);
-
- // Set prefix for user defined properties. This prefix help the user to distinguish
- // among simple properties and those defined using getter and/or (only a) setter.
- // XXX This should be rewritten to use 'descriptor', and I believe the unwrapping
- // test is wrong (see issue 5377).
- var o = this.getObjectView(object);
- if (o && !Dom.isDOMMember(object, name) && (XPCNativeWrapper.unwrap(object) !== object))
- {
- var getter = o.__lookupGetter__(name);
- var setter = o.__lookupSetter__(name);
-
- // both, getter and setter
- if (getter && setter)
- member.type = "userFunction";
-
- // only getter
- if (getter && !setter)
- {
- member.readOnly = true;
- member.prefix = "get";
- }
-
- // only setter
- if (!getter && setter)
- {
- member.prefix = "set";
- }
- }
-
- props.push(member);
- return member;
- },
-
- // Add the magic "(closure)" property.
- maybeAddClosureMember: function(object, type, props, level, isScope)
- {
- var win = this.context.getCurrentGlobal();
- var wrapper = ClosureInspector.getScopeWrapper(object, win, this.context, isScope);
- if (!wrapper)
- return;
-
- var name = (isScope ? Locale.$STR("dom.scopeParentName") : Locale.$STR("dom.scopeName"));
- var title = (isScope ? undefined : Locale.$STR("dom.tip.scopeName"));
- var rep = Firebug.getRep(wrapper);
- var tag = rep.shortTag ? rep.shortTag : rep.tag;
-
- var member = {
- object: object,
- name: name,
- value: wrapper,
- type: type,
- rowClass: "memberRow-" + type,
- open: "",
- level: level,
- indent: level*16,
- hasChildren: true,
- tag: tag,
- prefix: "",
- title: title,
- readOnly: true,
- deletable: false,
- ignoredPath: true
- };
- props.push(member);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Object properties
-
- /**
- * Returns a list of properties available on an object, filtered on enumerability and prototype
- * chain position. Due to prototype traversal, some property names may appear several times.
- *
- * @param {Object} object The object we want to get the list of properties for.
- * @param {Boolean} enumerableOnly If set to true, only enumerable properties are returned.
- * @param {Boolean} ownOnly If set to true, only own properties (not those from the
- * prototype chain) are returned.
- */
- getObjectProperties: function(object, enumerableOnly, ownOnly)
- {
- var props = [];
-
- // Get all enumerable-only or all-properties of the object (but not inherited).
- if (enumerableOnly)
- props = Object.keys(object);
- else
- props = Object.getOwnPropertyNames(object);
-
- // Not interested in inherited properties, bail out.
- if (ownOnly)
- return props;
-
- // Climb the prototype chain.
- var inheritedProps = [];
- var parent = Object.getPrototypeOf(object);
- if (parent)
- inheritedProps = this.getObjectProperties(parent, enumerableOnly, ownOnly);
-
- // Push everything onto the returned array, to avoid O(nm) runtime behavior.
- inheritedProps.push.apply(inheritedProps, props);
- return inheritedProps;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Wrappers
-
- getObjectView: function(object)
- {
- if (!Firebug.viewChrome)
- {
- // Unwrap native, wrapped objects.
- var contentView = Wrapper.getContentView(object);
- if (contentView)
- return contentView;
- }
- return object;
- },
-}
-
-// ********************************************************************************************* //
-// Helpers
-
-function isArguments(obj)
-{
- try
- {
- return isFinite(obj.length) && obj.length > 0 && typeof obj.callee === "function";
- }
- catch (exc)
- {
- }
-
- return false;
-}
-
-function isClassFunction(fn)
-{
- try
- {
- for (var name in fn.prototype)
- return true;
- }
- catch (exc)
- {
- }
-
- return false;
-}
-
-function isPrototype(name)
-{
- return (name === "prototype" || name === "__proto__");
-}
-
-function getPropertyDescriptor(object, propName)
-{
- try
- {
- var desc;
- while (object)
- {
- desc = Object.getOwnPropertyDescriptor(object, propName);
- if (desc)
- return desc;
- object = Object.getPrototypeOf(object);
- }
- }
- catch (e)
- {
- }
- return undefined;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-return DOMMemberProvider;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+/*jshint esnext:true, es5:true, curly:false */
+/*global FBTrace:true, XPCNativeWrapper:true, Window:true, define:true */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/object",
+ "firebug/lib/array",
+ "firebug/lib/wrapper",
+ "firebug/lib/dom",
+ "firebug/lib/trace",
+ "firebug/lib/locale",
+ "firebug/console/closureInspector",
+ "firebug/chrome/reps",
+],
+function(Firebug, Obj, Arr, Wrapper, Dom, FBTrace, Locale, ClosureInspector, FirebugReps) {
+
+// ********************************************************************************************* //
+// Constants
+
+// ********************************************************************************************* //
+// DOM Member Provider
+
+function DOMMemberProvider(context)
+{
+ this.context = context;
+}
+
+DOMMemberProvider.prototype =
+{
+ /**
+ * @param object a user-level object wrapped in security blanket
+ * @param level for a.b.c, level is 2
+ */
+ getMembers: function(object, level)
+ {
+ if (!level)
+ level = 0;
+
+ var ordinals = [];
+ var userProps = [];
+ var userClasses = [];
+ var userFuncs = [];
+ var domProps = [];
+ var domClasses = [];
+ var domFuncs = [];
+ var domConstants = [];
+ var proto = [];
+ var domHandlers = [];
+
+ var isScope = ClosureInspector.isScopeWrapper(object);
+
+ try
+ {
+ // Special case for "arguments", which is not enumerable by for...in statement.
+ if (isArguments(object))
+ object = Arr.cloneArray(object);
+
+ var properties;
+ var contentView = this.getObjectView(object);
+ try
+ {
+ // Make sure not to touch the prototype chain of the magic scope objects.
+ var ownOnly = Firebug.showOwnProperties || isScope;
+ var enumerableOnly = Firebug.showEnumerableProperties;
+
+ properties = this.getObjectProperties(contentView, enumerableOnly, ownOnly);
+ properties = Arr.sortUnique(properties);
+
+ var addOwn = function(prop)
+ {
+ // Apparently, Object.prototype.hasOwnProperty.call(contentView, p) lies
+ // when 'contentView' is content and 'Object' is chrome... Bug 658909?
+ if (Object.getOwnPropertyDescriptor(contentView, prop) &&
+ properties.indexOf(prop) === -1)
+ {
+ properties.push(prop);
+ }
+ };
+ addOwn("constructor");
+ addOwn("prototype");
+ addOwn("wrappedJSObject");
+
+ // __proto__ never shows in enumerations, so add it here. We currently
+ // we don't want it when only showing own properties.
+ if (contentView.__proto__ && Obj.hasProperties(contentView.__proto__) &&
+ properties.indexOf("__proto__") === -1 && !Firebug.showOwnProperties)
+ {
+ properties.push("__proto__");
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_DOM)
+ FBTrace.sysout("dom.getMembers: property lookups failed", exc);
+ }
+
+ var name, val;
+ var add = function(type, where)
+ {
+ this.addMember(object, type, where, name, val, level, isScope);
+ }.bind(this);
+
+ for (var i=0; i<properties.length; i++)
+ {
+ name = properties[i];
+
+ // Ignore only global variables (properties of the |window| object).
+ if (Wrapper.shouldIgnore(name) && (object instanceof Window))
+ {
+ if (FBTrace.DBG_DOM)
+ {
+ FBTrace.sysout("dom.getMembers: Wrapper.ignoreVars: " + name + ", " +
+ level, object);
+ }
+ continue;
+ }
+
+ try
+ {
+ val = contentView[name];
+ }
+ catch (exc)
+ {
+ // Sometimes we get exceptions trying to access certain members
+ if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
+ FBTrace.sysout("dom.getMembers cannot access "+name, exc);
+
+ val = undefined;
+ }
+
+ if (!isNaN(parseInt(name, 10)))
+ {
+ add("ordinal", ordinals);
+ }
+ else if (typeof val === "function")
+ {
+ var classFunc = isClassFunction(val);
+ var domMember = Dom.isDOMMember(object, name);
+ if (domMember && classFunc)
+ {
+ add("domClass", domClasses);
+ }
+ else if (domMember)
+ {
+ add("domFunction", domFuncs);
+ }
+ else if (classFunc)
+ {
+ add("userClass", userClasses);
+ }
+ else if (!Firebug.showUserFuncs && Firebug.showInlineEventHandlers &&
+ Dom.isInlineEventHandler(name))
+ {
+ add("userFunction", domHandlers);
+ }
+ else
+ {
+ add("userFunction", userFuncs);
+ }
+ }
+ else
+ {
+ if (isPrototype(name))
+ {
+ add("proto", proto);
+ }
+ else if (Dom.isDOMMember(object, name))
+ {
+ add("dom", domProps);
+ }
+ else if (Dom.isDOMConstant(object, name))
+ {
+ add("dom", domConstants);
+ }
+ else if (Dom.isInlineEventHandler(name))
+ {
+ add("user", domHandlers);
+ }
+ else
+ {
+ add("user", userProps);
+ }
+ }
+ }
+
+ if (isScope || (typeof object === "function" && Firebug.showClosures && this.context))
+ {
+ this.maybeAddClosureMember(object, "proto", proto, level, isScope);
+ }
+ }
+ catch (exc)
+ {
+ // Sometimes we get exceptions just from trying to iterate the members
+ // of certain objects, like StorageList, but don't let that gum up the works
+ if (FBTrace.DBG_DOM)
+ FBTrace.sysout("dom.getMembers FAILS: ", exc);
+ }
+
+ function sortName(a, b) { return a.name > b.name ? 1 : -1; }
+ function sortOrdinal(a, b) { return a.name - b.name; }
+
+ var members = [];
+
+ ordinals.sort(sortOrdinal);
+ members.push.apply(members, ordinals);
+
+ if (Firebug.showUserProps)
+ {
+ userProps.sort(sortName);
+ members.push.apply(members, userProps);
+ }
+
+ if (Firebug.showUserFuncs)
+ {
+ userClasses.sort(sortName);
+ members.push.apply(members, userClasses);
+
+ userFuncs.sort(sortName);
+ members.push.apply(members, userFuncs);
+ }
+
+ if (Firebug.showDOMProps)
+ {
+ domProps.sort(sortName);
+ members.push.apply(members, domProps);
+ }
+
+ if (Firebug.showDOMFuncs)
+ {
+ domClasses.sort(sortName);
+ members.push.apply(members, domClasses);
+
+ domFuncs.sort(sortName);
+ members.push.apply(members, domFuncs);
+ }
+
+ if (Firebug.showDOMConstants)
+ members.push.apply(members, domConstants);
+
+ members.push.apply(members, proto);
+
+ if (Firebug.showInlineEventHandlers)
+ {
+ domHandlers.sort(sortName);
+ members.push.apply(members, domHandlers);
+ }
+
+ if (FBTrace.DBG_DOM)
+ {
+ var showEnum = Firebug.showEnumerableProperties;
+ var showOwn = Firebug.showOwnProperties;
+ FBTrace.sysout("dom.getMembers; Report: enum-only: " + showEnum +
+ ", own-only: " + showOwn,
+ {
+ object: object,
+ ordinals: ordinals,
+ userProps: userProps,
+ userFuncs: userFuncs,
+ userClasses: userClasses,
+ domProps: domProps,
+ domFuncs: domFuncs,
+ domConstants: domConstants,
+ domHandlers: domHandlers,
+ proto: proto
+ });
+ }
+
+ return members;
+ },
+
+ addMember: function()
+ {
+ try
+ {
+ return this.addMemberInternal.apply(this, arguments);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("domPanel.addMember; EXCEPTION " + err, err);
+ }
+ },
+
+ addMemberInternal: function(object, type, props, name, value, level, parentIsScope)
+ {
+ // Do this first in case a call to instanceof (= QI, for XPCOM things) reveals contents.
+ var rep = Firebug.getRep(value);
+ var tag = rep.shortTag ? rep.shortTag : rep.tag;
+
+ var hasProperties = Obj.hasProperties(value, !Firebug.showEnumerableProperties,
+ Firebug.showOwnProperties);
+
+ var valueType = typeof value;
+ var hasChildren = hasProperties && !(value instanceof FirebugReps.ErrorCopy) &&
+ ((valueType === "function") ||
+ (valueType === "object" && value !== null));
+
+ // Special case for closure inspection.
+ if (!hasChildren && valueType === "function" && Firebug.showClosures && this.context)
+ {
+ try
+ {
+ var win = this.context.getCurrentGlobal();
+ ClosureInspector.getEnvironmentForObject(win, value, this.context);
+ hasChildren = true;
+ }
+ catch (e) {}
+ }
+
+ // Special case for "arguments", which is not enumerable by for...in statement
+ // and so, Obj.hasProperties always returns false.
+ hasChildren = hasChildren || (!!value && isArguments(value));
+
+ if (valueType === "function" && !hasChildren)
+ {
+ try
+ {
+ // Special case for functions with a prototype that has values
+ var proto = value.prototype;
+ if (proto)
+ {
+ hasChildren = Obj.hasProperties(proto, !Firebug.showEnumerableProperties,
+ Firebug.showOwnProperties);
+ }
+ }
+ catch (exc) {}
+ }
+
+ var descriptor = getPropertyDescriptor(object, name);
+
+ var member = {
+ object: object,
+ name: name,
+ value: value,
+ type: type,
+ rowClass: "memberRow-" + type,
+ open: "",
+ level: level,
+ indent: level * 16,
+ hasChildren: hasChildren,
+ tag: tag,
+ prefix: "",
+ readOnly: (descriptor && !descriptor.writable && !descriptor.set),
+ // XXX should probably move the tests from getContextMenuItems here
+ deletable: (!parentIsScope && !(descriptor && !descriptor.configurable))
+ };
+
+ // The context doesn't have to be specified (e.g. in case of Watch panel that is based
+ // on the same template as the DOM panel, but doesn't show any breakpoints).
+ if (this.context)
+ {
+ // xxxHonza: Support for object change not implemented yet.
+ member.breakable = !hasChildren && !parentIsScope;
+
+ var breakpoints = this.context.dom.breakpoints;
+ var bp = breakpoints.findBreakpoint(object, name);
+ if (bp)
+ {
+ member.breakpoint = true;
+ member.disabledBreakpoint = !bp.checked;
+ }
+ }
+
+ if (parentIsScope)
+ member.scopeNameTooltip = Locale.$STRF("dom.tip.scopeMemberName", ["%" + name]);
+
+ // Set prefix for user defined properties. This prefix help the user to distinguish
+ // among simple properties and those defined using getter and/or (only a) setter.
+ // XXX This should be rewritten to use 'descriptor', and I believe the unwrapping
+ // test is wrong (see issue 5377).
+ var o = this.getObjectView(object);
+ if (o && !Dom.isDOMMember(object, name) && (XPCNativeWrapper.unwrap(object) !== object))
+ {
+ var getter = o.__lookupGetter__(name);
+ var setter = o.__lookupSetter__(name);
+
+ // both, getter and setter
+ if (getter && setter)
+ member.type = "userFunction";
+
+ // only getter
+ if (getter && !setter)
+ {
+ member.readOnly = true;
+ member.prefix = "get";
+ }
+
+ // only setter
+ if (!getter && setter)
+ {
+ member.prefix = "set";
+ }
+ }
+
+ props.push(member);
+ return member;
+ },
+
+ // Add the magic "(closure)" property.
+ maybeAddClosureMember: function(object, type, props, level, isScope)
+ {
+ var win = this.context.getCurrentGlobal();
+ var wrapper = ClosureInspector.getScopeWrapper(object, win, this.context, isScope);
+ if (!wrapper)
+ return;
+
+ var name = (isScope ? Locale.$STR("dom.scopeParentName") : Locale.$STR("dom.scopeName"));
+ var title = (isScope ? undefined : Locale.$STR("dom.tip.scopeName"));
+ var rep = Firebug.getRep(wrapper);
+ var tag = rep.shortTag ? rep.shortTag : rep.tag;
+
+ var member = {
+ object: object,
+ name: name,
+ value: wrapper,
+ type: type,
+ rowClass: "memberRow-" + type,
+ open: "",
+ level: level,
+ indent: level*16,
+ hasChildren: true,
+ tag: tag,
+ prefix: "",
+ title: title,
+ readOnly: true,
+ deletable: false,
+ ignoredPath: true
+ };
+ props.push(member);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Object properties
+
+ /**
+ * Returns a list of properties available on an object, filtered on enumerability and prototype
+ * chain position. Due to prototype traversal, some property names may appear several times.
+ *
+ * @param {Object} object The object we want to get the list of properties for.
+ * @param {Boolean} enumerableOnly If set to true, only enumerable properties are returned.
+ * @param {Boolean} ownOnly If set to true, only own properties (not those from the
+ * prototype chain) are returned.
+ */
+ getObjectProperties: function(object, enumerableOnly, ownOnly)
+ {
+ var props = [];
+
+ // Get all enumerable-only or all-properties of the object (but not inherited).
+ if (enumerableOnly)
+ props = Object.keys(object);
+ else
+ props = Object.getOwnPropertyNames(object);
+
+ // Not interested in inherited properties, bail out.
+ if (ownOnly)
+ return props;
+
+ // Climb the prototype chain.
+ var inheritedProps = [];
+ var parent = Object.getPrototypeOf(object);
+ if (parent)
+ inheritedProps = this.getObjectProperties(parent, enumerableOnly, ownOnly);
+
+ // Push everything onto the returned array, to avoid O(nm) runtime behavior.
+ inheritedProps.push.apply(inheritedProps, props);
+ return inheritedProps;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Wrappers
+
+ getObjectView: function(object)
+ {
+ if (!Firebug.viewChrome)
+ {
+ // Unwrap native, wrapped objects.
+ var contentView = Wrapper.getContentView(object);
+ if (contentView)
+ return contentView;
+ }
+ return object;
+ },
+}
+
+// ********************************************************************************************* //
+// Helpers
+
+function isArguments(obj)
+{
+ try
+ {
+ return isFinite(obj.length) && obj.length > 0 && typeof obj.callee === "function";
+ }
+ catch (exc)
+ {
+ }
+
+ return false;
+}
+
+function isClassFunction(fn)
+{
+ try
+ {
+ for (var name in fn.prototype)
+ return true;
+ }
+ catch (exc)
+ {
+ }
+
+ return false;
+}
+
+function isPrototype(name)
+{
+ return (name === "prototype" || name === "__proto__");
+}
+
+function getPropertyDescriptor(object, propName)
+{
+ try
+ {
+ var desc;
+ while (object)
+ {
+ desc = Object.getOwnPropertyDescriptor(object, propName);
+ if (desc)
+ return desc;
+ object = Object.getPrototypeOf(object);
+ }
+ }
+ catch (e)
+ {
+ }
+ return undefined;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return DOMMemberProvider;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/dom/domModule.js b/content/firebug/dom/domModule.js
index 8723990..b8fccba 100644
--- a/content/firebug/dom/domModule.js
+++ b/content/firebug/dom/domModule.js
@@ -1,79 +1,79 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/dom/domBreakpointGroup",
-],
-function(Obj, Firebug, DOMBreakpointGroup) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-// DOM Module
-
-Firebug.DOMModule = Obj.extend(Firebug.Module,
-{
- dispatchName: "domModule",
-
- initialize: function(prefDomain, prefNames)
- {
- Firebug.Module.initialize.apply(this, arguments);
-
- if (Firebug.Debugger)
- Firebug.connection.addListener(this.DebuggerListener);
- },
-
- shutdown: function()
- {
- Firebug.Module.shutdown.apply(this, arguments);
-
- if (Firebug.Debugger)
- Firebug.connection.removeListener(this.DebuggerListener);
- },
-
- initContext: function(context, persistedState)
- {
- Firebug.Module.initContext.apply(this, arguments);
-
- context.dom = {breakpoints: new DOMBreakpointGroup()};
- },
-
- loadedContext: function(context, persistedState)
- {
- context.dom.breakpoints.load(context);
- },
-
- destroyContext: function(context, persistedState)
- {
- Firebug.Module.destroyContext.apply(this, arguments);
-
- context.dom.breakpoints.store(context);
- },
-});
-
-// ********************************************************************************************* //
-
-Firebug.DOMModule.DebuggerListener =
-{
- getBreakpoints: function(context, groups)
- {
- if (!context.dom.breakpoints.isEmpty())
- groups.push(context.dom.breakpoints);
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.DOMModule);
-
-return Firebug.DOMModule;
-
-// ********************************************************************************************* //
-});
-
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/dom/domBreakpointGroup",
+],
+function(Obj, Firebug, DOMBreakpointGroup) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+// DOM Module
+
+Firebug.DOMModule = Obj.extend(Firebug.Module,
+{
+ dispatchName: "domModule",
+
+ initialize: function(prefDomain, prefNames)
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+
+ if (Firebug.Debugger)
+ Firebug.connection.addListener(this.DebuggerListener);
+ },
+
+ shutdown: function()
+ {
+ Firebug.Module.shutdown.apply(this, arguments);
+
+ if (Firebug.Debugger)
+ Firebug.connection.removeListener(this.DebuggerListener);
+ },
+
+ initContext: function(context, persistedState)
+ {
+ Firebug.Module.initContext.apply(this, arguments);
+
+ context.dom = {breakpoints: new DOMBreakpointGroup()};
+ },
+
+ loadedContext: function(context, persistedState)
+ {
+ context.dom.breakpoints.load(context);
+ },
+
+ destroyContext: function(context, persistedState)
+ {
+ Firebug.Module.destroyContext.apply(this, arguments);
+
+ context.dom.breakpoints.store(context);
+ },
+});
+
+// ********************************************************************************************* //
+
+Firebug.DOMModule.DebuggerListener =
+{
+ getBreakpoints: function(context, groups)
+ {
+ if (!context.dom.breakpoints.isEmpty())
+ groups.push(context.dom.breakpoints);
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.DOMModule);
+
+return Firebug.DOMModule;
+
+// ********************************************************************************************* //
+});
+
diff --git a/content/firebug/dom/domPanel.js b/content/firebug/dom/domPanel.js
index a4330b4..6191bd8 100644
--- a/content/firebug/dom/domPanel.js
+++ b/content/firebug/dom/domPanel.js
@@ -1,180 +1,180 @@
-/* See license.txt for terms of usage */
-/*jshint esnext:true, es5:true, curly:false */
-/*global FBTrace:true, XPCNativeWrapper:true, Window:true, define:true */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/reps",
- "firebug/lib/events",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/lib/search",
- "firebug/dom/domBasePanel",
-],
-function(Obj, Firebug, FirebugReps, Events, Dom, Css, Search, DOMBasePanel) {
-
-// ********************************************************************************************* //
-// Constants
-
-// ********************************************************************************************* //
-// DOM Panel
-
-/**
- * @panel This object represents a DOM panel in the main Firebug UI.
- */
-Firebug.DOMPanel = function()
-{
-}
-
-Firebug.DOMPanel.DirTable = DOMBasePanel.prototype.dirTablePlate;
-Firebug.DOMPanel.prototype = Obj.extend(DOMBasePanel.prototype,
-/** lends Firebug.DOMPanel */
-{
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Panel
-
- name: "dom",
- searchable: true,
- statusSeparator: ">",
- enableA11y: true,
- deriveA11yFrom: "console",
- searchType : "dom",
- order: 50,
- inspectable: true,
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Initialization
-
- initialize: function()
- {
- this.onClick = Obj.bind(this.onClick, this);
-
- DOMBasePanel.prototype.initialize.apply(this, arguments);
- },
-
- initializeNode: function(oldPanelNode)
- {
- Events.addEventListener(this.panelNode, "click", this.onClick, false);
-
- DOMBasePanel.prototype.initializeNode.apply(this, arguments);
- },
-
- destroyNode: function()
- {
- Events.removeEventListener(this.panelNode, "click", this.onClick, false);
-
- DOMBasePanel.prototype.destroyNode.apply(this, arguments);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Search
-
- search: function(text, reverse)
- {
- if (!text)
- {
- delete this.currentSearch;
- this.highlightNode(null);
- this.document.defaultView.getSelection().removeAllRanges();
- return false;
- }
-
- var row;
- if (this.currentSearch && text === this.currentSearch.text)
- {
- // xxxsz: 'Firebug.Search' is used here instead of 'Search' because we need to refer to
- // 'firebug/chrome/searchBox' and not to 'firebug/lib/search'
- // TODO: Rework 'searchBox.js', so it doesn't inject itself into the global 'Firebug'
- // scope anymore
- row = this.currentSearch.findNext(true, undefined, reverse,
- Firebug.Search.isCaseSensitive(text));
- }
- else
- {
- var findRow = function(node)
- {
- return Dom.getAncestorByClass(node, "memberRow");
- };
-
- this.currentSearch = new Search.TextSearch(this.panelNode, findRow);
-
- // xxxsz: 'Firebug.Search' is used here instead of 'Search' because we need to refer to
- // 'firebug/chrome/searchBox' and not to 'firebug/lib/search'
- row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
- }
-
- if (row)
- {
- var sel = this.document.defaultView.getSelection();
- sel.removeAllRanges();
- sel.addRange(this.currentSearch.range);
-
- Dom.scrollIntoCenterView(row, this.panelNode);
-
- this.highlightNode(row);
- Events.dispatch(this.fbListeners, "onDomSearchMatchFound", [this, text, row]);
- return true;
- }
- else
- {
- this.document.defaultView.getSelection().removeAllRanges();
- Events.dispatch(this.fbListeners, "onDomSearchMatchFound", [this, text, null]);
- return false;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- selectRow: function(row, target)
- {
- if (!target)
- target = row.lastChild.firstChild;
-
- var object = target && target.repObject, type = typeof object;
- if (!object || !this.supportsObject(object, type))
- return;
-
- this.pathToAppend = DOMBasePanel.getPath(row);
-
- // If the object is inside an array, look up its index
- var valueBox = row.lastChild.firstChild;
- if (Css.hasClass(valueBox, "objectBox-array"))
- {
- var arrayIndex = FirebugReps.Arr.getItemIndex(target);
- this.pathToAppend.push(arrayIndex);
- }
-
- // Make sure we get a fresh status path for the object, since otherwise
- // it might find the object in the existing path and not refresh it
- Firebug.chrome.clearStatusPath();
-
- this.select(object, true);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onClick: function(event)
- {
- var repNode = Firebug.getRepNode(event.target);
- if (repNode)
- {
- var row = Dom.getAncestorByClass(event.target, "memberRow");
- if (row)
- {
- this.selectRow(row, repNode);
- Events.cancelEvent(event);
- }
- }
- },
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(Firebug.DOMPanel);
-
-return Firebug.DOMPanel;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+/*jshint esnext:true, es5:true, curly:false */
+/*global FBTrace:true, XPCNativeWrapper:true, Window:true, define:true */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/reps",
+ "firebug/lib/events",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/lib/search",
+ "firebug/dom/domBasePanel",
+],
+function(Obj, Firebug, FirebugReps, Events, Dom, Css, Search, DOMBasePanel) {
+
+// ********************************************************************************************* //
+// Constants
+
+// ********************************************************************************************* //
+// DOM Panel
+
+/**
+ * @panel This object represents a DOM panel in the main Firebug UI.
+ */
+Firebug.DOMPanel = function()
+{
+}
+
+Firebug.DOMPanel.DirTable = DOMBasePanel.prototype.dirTablePlate;
+Firebug.DOMPanel.prototype = Obj.extend(DOMBasePanel.prototype,
+/** lends Firebug.DOMPanel */
+{
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Panel
+
+ name: "dom",
+ searchable: true,
+ statusSeparator: ">",
+ enableA11y: true,
+ deriveA11yFrom: "console",
+ searchType : "dom",
+ order: 50,
+ inspectable: true,
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Initialization
+
+ initialize: function()
+ {
+ this.onClick = Obj.bind(this.onClick, this);
+
+ DOMBasePanel.prototype.initialize.apply(this, arguments);
+ },
+
+ initializeNode: function(oldPanelNode)
+ {
+ Events.addEventListener(this.panelNode, "click", this.onClick, false);
+
+ DOMBasePanel.prototype.initializeNode.apply(this, arguments);
+ },
+
+ destroyNode: function()
+ {
+ Events.removeEventListener(this.panelNode, "click", this.onClick, false);
+
+ DOMBasePanel.prototype.destroyNode.apply(this, arguments);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Search
+
+ search: function(text, reverse)
+ {
+ if (!text)
+ {
+ delete this.currentSearch;
+ this.highlightNode(null);
+ this.document.defaultView.getSelection().removeAllRanges();
+ return false;
+ }
+
+ var row;
+ if (this.currentSearch && text === this.currentSearch.text)
+ {
+ // xxxsz: 'Firebug.Search' is used here instead of 'Search' because we need to refer to
+ // 'firebug/chrome/searchBox' and not to 'firebug/lib/search'
+ // TODO: Rework 'searchBox.js', so it doesn't inject itself into the global 'Firebug'
+ // scope anymore
+ row = this.currentSearch.findNext(true, undefined, reverse,
+ Firebug.Search.isCaseSensitive(text));
+ }
+ else
+ {
+ var findRow = function(node)
+ {
+ return Dom.getAncestorByClass(node, "memberRow");
+ };
+
+ this.currentSearch = new Search.TextSearch(this.panelNode, findRow);
+
+ // xxxsz: 'Firebug.Search' is used here instead of 'Search' because we need to refer to
+ // 'firebug/chrome/searchBox' and not to 'firebug/lib/search'
+ row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
+ }
+
+ if (row)
+ {
+ var sel = this.document.defaultView.getSelection();
+ sel.removeAllRanges();
+ sel.addRange(this.currentSearch.range);
+
+ Dom.scrollIntoCenterView(row, this.panelNode);
+
+ this.highlightNode(row);
+ Events.dispatch(this.fbListeners, "onDomSearchMatchFound", [this, text, row]);
+ return true;
+ }
+ else
+ {
+ this.document.defaultView.getSelection().removeAllRanges();
+ Events.dispatch(this.fbListeners, "onDomSearchMatchFound", [this, text, null]);
+ return false;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ selectRow: function(row, target)
+ {
+ if (!target)
+ target = row.lastChild.firstChild;
+
+ var object = target && target.repObject, type = typeof object;
+ if (!object || !this.supportsObject(object, type))
+ return;
+
+ this.pathToAppend = DOMBasePanel.getPath(row);
+
+ // If the object is inside an array, look up its index
+ var valueBox = row.lastChild.firstChild;
+ if (Css.hasClass(valueBox, "objectBox-array"))
+ {
+ var arrayIndex = FirebugReps.Arr.getItemIndex(target);
+ this.pathToAppend.push(arrayIndex);
+ }
+
+ // Make sure we get a fresh status path for the object, since otherwise
+ // it might find the object in the existing path and not refresh it
+ Firebug.chrome.clearStatusPath();
+
+ this.select(object, true);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onClick: function(event)
+ {
+ var repNode = Firebug.getRepNode(event.target);
+ if (repNode)
+ {
+ var row = Dom.getAncestorByClass(event.target, "memberRow");
+ if (row)
+ {
+ this.selectRow(row, repNode);
+ Events.cancelEvent(event);
+ }
+ }
+ },
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(Firebug.DOMPanel);
+
+return Firebug.DOMPanel;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/dom/domReps.js b/content/firebug/dom/domReps.js
index 1e1de73..dd09f79 100644
--- a/content/firebug/dom/domReps.js
+++ b/content/firebug/dom/domReps.js
@@ -1,359 +1,359 @@
-/* See license.txt for terms of usage */
-/*jshint esnext:true, es5:true, curly:false */
-/*global FBTrace:true, XPCNativeWrapper:true, Window:true, define:true */
-
-define([
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/chrome/reps",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/options",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/lib/string",
- "firebug/dom/toggleBranch",
- "firebug/dom/domModule",
- "firebug/dom/domMemberProvider",
-],
-function(Firebug, D, FirebugReps, Locale, Events, Options, Dom, Css, Str, ToggleBranch,
- DOMModule, DOMMemberProvider) {
-
-"use strict";
-
-// ********************************************************************************************* //
-// Constants
-
-const insertSliceSize = 18;
-const insertInterval = 40;
-
-// ********************************************************************************************* //
-
-var WatchRowTag =
- D.TR({"class": "watchNewRow", level: 0},
- D.TD({"class": "watchEditCell", colspan: 3},
- D.DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", tabindex: "0",
- "aria-label": Locale.$STR("a11y.labels.press enter to add new watch expression")},
- Locale.$STR("NewWatch")
- )
- )
- );
-
-var SizerRow =
- D.TR({role: "presentation"},
- D.TD(),
- D.TD({width: "30%"}),
- D.TD({width: "70%"})
- );
-
-var DirTablePlate = D.domplate(Firebug.Rep,
-{
- memberRowTag:
- D.TR({"class": "memberRow $member.open $member.type\\Row", _domObject: "$member",
- $hasChildren: "$member.hasChildren",
- $cropped: "$member.value|isCropped",
- role: "presentation",
- level: "$member.level",
- breakable: "$member.breakable",
- breakpoint: "$member.breakpoint",
- disabledBreakpoint: "$member.disabledBreakpoint"},
- D.TD({"class": "memberHeaderCell"},
- D.DIV({"class": "sourceLine memberRowHeader", onclick: "$onClickRowHeader"},
- " "
- )
- ),
- D.TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px",
- role: "presentation"},
- D.DIV({"class": "memberLabel $member.type\\Label", title: "$member.title"},
- D.SPAN({"class": "memberLabelPrefix"}, "$member.prefix"),
- D.SPAN({title: "$member|getMemberNameTooltip"}, "$member.name")
- )
- ),
- D.TD({"class": "memberValueCell", $readOnly: "$member.readOnly",
- role: "presentation"},
- D.TAG("$member.tag", {object: "$member.value"})
- )
- ),
-
- tag:
- D.TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0, onclick: "$onClick",
- _repObject: "$object", role: "tree",
- "aria-label": Locale.$STR("aria.labels.dom properties")},
- D.TBODY({role: "presentation"},
- SizerRow,
- D.FOR("member", "$object|memberIterator",
- D.TAG("$memberRowTag", {member: "$member"})
- )
- )
- ),
-
- watchTag:
- D.TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0,
- _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role: "tree"},
- D.TBODY({role: "presentation"},
- SizerRow,
- WatchRowTag
- )
- ),
-
- tableTag:
- D.TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0,
- _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick",
- role: "tree", "aria-label": Locale.$STR("a11y.labels.dom_properties")},
- D.TBODY({role: "presentation"},
- SizerRow
- )
- ),
-
- rowTag:
- D.FOR("member", "$members",
- D.TAG("$memberRowTag", {member: "$member"})
- ),
-
- memberIterator: function(object)
- {
- var memberProvider = new DOMMemberProvider(null);
- var members = memberProvider.getMembers(object, 0);
- if (members.length)
- return members;
-
- return [{
- name: Locale.$STR("firebug.dom.noChildren2"),
- type: "string",
- rowClass: "memberRow-string",
- tag: Firebug.Rep.tag,
- prefix: ""
- }];
- },
-
- isCropped: function(value)
- {
- return typeof value == "string" && value.length > Options.get("stringCropLength");
- },
-
- getMemberNameTooltip: function(member)
- {
- return member.title || member.scopeNameTooltip;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onClick: function(event)
- {
- if (!Events.isLeftClick(event))
- return;
-
- var row = Dom.getAncestorByClass(event.target, "memberRow");
- var label = Dom.getAncestorByClass(event.target, "memberLabel");
- var valueCell = row.getElementsByClassName("memberValueCell").item(0);
- var object = Firebug.getRepObject(event.target);
- var target = row.lastChild.firstChild;
- var isString = Css.hasClass(target,"objectBox-string");
- var inValueCell = (event.target === valueCell || event.target === target);
-
- if (label && (Css.hasClass(row, "hasChildren") || (isString && !inValueCell)))
- {
- row = label.parentNode.parentNode;
- this.toggleRow(row);
- Events.cancelEvent(event);
- }
- else
- {
- if (typeof object === "function")
- {
- Firebug.chrome.select(object, "script");
- Events.cancelEvent(event);
- }
- else if ((!object || typeof object !== "object") && Events.isDoubleClick(event))
- {
- var panel = row.parentNode.parentNode.domPanel;
- if (panel)
- {
- // XXX this should use member.value
- var rowValue = panel.getRowPropertyValue(row);
- if (typeof rowValue === "boolean")
- panel.setPropertyValue(row, ""+!rowValue);
- else
- panel.editProperty(row);
-
- Events.cancelEvent(event);
- }
- }
- }
- },
-
- toggleRow: function(row)
- {
- var level = parseInt(row.getAttribute("level"), 10);
- var table = Dom.getAncestorByClass(row, "domTable");
- var toggles = table.toggles;
- if (!toggles)
- toggles = table.repObject.toggles;
-
- var domPanel = table.domPanel;
- if (!domPanel)
- {
- var panel = Firebug.getElementPanel(row);
- domPanel = panel.context.getPanel("dom");
- }
-
- if (!domPanel)
- return;
-
- var context = domPanel.context;
- var target = row.lastChild.firstChild;
- var isString = Css.hasClass(target, "objectBox-string");
-
- if (Css.hasClass(row, "opened"))
- {
- Css.removeClass(row, "opened");
-
- if (isString)
- {
- var rowValue = row.domObject.value;
- row.lastChild.firstChild.textContent = '"' + Str.cropMultipleLines(rowValue) + '"';
- }
- else
- {
- if (toggles)
- {
- var path = Firebug.DOMBasePanel.getPath(row);
-
- // Remove the path from the toggle tree
- for (var i = 0; i < path.length; ++i)
- {
- if (i === path.length-1)
- toggles.remove(path[i]);
- else
- toggles = toggles.get(path[i]);
- }
- }
-
- var rowTag = this.rowTag;
- var tbody = row.parentNode;
-
- setTimeout(function()
- {
- for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
- {
- if (parseInt(firstRow.getAttribute("level"), 10) <= level)
- break;
-
- tbody.removeChild(firstRow);
- }
- }, row.insertTimeout ? row.insertTimeout : 0);
- }
- }
- else
- {
- Css.setClass(row, "opened");
- if (isString)
- {
- var rowValue = row.domObject.value;
- row.lastChild.firstChild.textContent = '"' + rowValue + '"';
- }
- else
- {
- if (toggles)
- {
- var path = Firebug.DOMBasePanel.getPath(row);
-
- // Mark the path in the toggle tree
- for (var i = 0; i < path.length; ++i)
- {
- var name = path[i];
- if (toggles.get(name))
- toggles = toggles.get(name);
- else
- toggles = toggles.set(name, new ToggleBranch.ToggleBranch());
- }
- if (FBTrace.DBG_DOMPLATE)
- FBTrace.sysout("toggleRow mark path "+toggles);
- }
-
- var members = domPanel.getMembers(target.repObject, level+1);
-
- var rowTag = this.rowTag;
- var lastRow = row;
-
- var delay = 0;
- var setSize = members.length;
- var rowCount = 1;
- while (members.length)
- {
- let slice = members.splice(0, insertSliceSize);
- let isLast = !members.length;
- setTimeout(function()
- {
- if (lastRow.parentNode)
- {
- var result = rowTag.insertRows({members: slice}, lastRow);
- lastRow = result[1];
-
- Events.dispatch(DOMModule.fbListeners, "onMemberRowSliceAdded",
- [null, result, rowCount, setSize]);
-
- rowCount += insertSliceSize;
- }
-
- if (isLast)
- delete row.insertTimeout;
- }, delay);
-
- delay += insertInterval;
- }
-
- row.insertTimeout = delay;
- }
- }
- },
-
- onClickRowHeader: function(event)
- {
- Events.cancelEvent(event);
-
- var rowHeader = event.target;
- if (!Css.hasClass(rowHeader, "memberRowHeader"))
- return;
-
- var row = Dom.getAncestorByClass(event.target, "memberRow");
- if (!row)
- return;
-
- var panel = row.parentNode.parentNode.domPanel;
- if (panel)
- {
- var scriptPanel = panel.context.getPanel("script", true);
- if (!scriptPanel || !scriptPanel.isEnabled())
- return; // set the breakpoint only if the script panel will respond.
- panel.breakOnProperty(row);
- }
- }
-});
-
-var ToolboxPlate = D.domplate(
-{
- tag:
- D.DIV({"class": "watchToolbox", _domPanel: "$domPanel", onclick: "$onClick"},
- D.SPAN({"class": "watchDeleteButton closeButton"})
- ),
-
- onClick: function(event)
- {
- var toolbox = event.currentTarget;
- toolbox.domPanel.deleteWatch(toolbox.watchRow);
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-return {
- ToolboxPlate: ToolboxPlate,
- DirTablePlate: DirTablePlate,
- insertSliceSize: insertSliceSize,
- insertInterval: insertInterval,
-};
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+/*jshint esnext:true, es5:true, curly:false */
+/*global FBTrace:true, XPCNativeWrapper:true, Window:true, define:true */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/chrome/reps",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/options",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/lib/string",
+ "firebug/dom/toggleBranch",
+ "firebug/dom/domModule",
+ "firebug/dom/domMemberProvider",
+],
+function(Firebug, D, FirebugReps, Locale, Events, Options, Dom, Css, Str, ToggleBranch,
+ DOMModule, DOMMemberProvider) {
+
+"use strict";
+
+// ********************************************************************************************* //
+// Constants
+
+const insertSliceSize = 18;
+const insertInterval = 40;
+
+// ********************************************************************************************* //
+
+var WatchRowTag =
+ D.TR({"class": "watchNewRow", level: 0},
+ D.TD({"class": "watchEditCell", colspan: 3},
+ D.DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", tabindex: "0",
+ "aria-label": Locale.$STR("a11y.labels.press enter to add new watch expression")},
+ Locale.$STR("NewWatch")
+ )
+ )
+ );
+
+var SizerRow =
+ D.TR({role: "presentation"},
+ D.TD(),
+ D.TD({width: "30%"}),
+ D.TD({width: "70%"})
+ );
+
+var DirTablePlate = D.domplate(Firebug.Rep,
+{
+ memberRowTag:
+ D.TR({"class": "memberRow $member.open $member.type\\Row", _domObject: "$member",
+ $hasChildren: "$member.hasChildren",
+ $cropped: "$member.value|isCropped",
+ role: "presentation",
+ level: "$member.level",
+ breakable: "$member.breakable",
+ breakpoint: "$member.breakpoint",
+ disabledBreakpoint: "$member.disabledBreakpoint"},
+ D.TD({"class": "memberHeaderCell"},
+ D.DIV({"class": "sourceLine memberRowHeader", onclick: "$onClickRowHeader"},
+ " "
+ )
+ ),
+ D.TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px",
+ role: "presentation"},
+ D.DIV({"class": "memberLabel $member.type\\Label", title: "$member.title"},
+ D.SPAN({"class": "memberLabelPrefix"}, "$member.prefix"),
+ D.SPAN({title: "$member|getMemberNameTooltip"}, "$member.name")
+ )
+ ),
+ D.TD({"class": "memberValueCell", $readOnly: "$member.readOnly",
+ role: "presentation"},
+ D.TAG("$member.tag", {object: "$member.value"})
+ )
+ ),
+
+ tag:
+ D.TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0, onclick: "$onClick",
+ _repObject: "$object", role: "tree",
+ "aria-label": Locale.$STR("aria.labels.dom properties")},
+ D.TBODY({role: "presentation"},
+ SizerRow,
+ D.FOR("member", "$object|memberIterator",
+ D.TAG("$memberRowTag", {member: "$member"})
+ )
+ )
+ ),
+
+ watchTag:
+ D.TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0,
+ _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role: "tree"},
+ D.TBODY({role: "presentation"},
+ SizerRow,
+ WatchRowTag
+ )
+ ),
+
+ tableTag:
+ D.TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0,
+ _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick",
+ role: "tree", "aria-label": Locale.$STR("a11y.labels.dom_properties")},
+ D.TBODY({role: "presentation"},
+ SizerRow
+ )
+ ),
+
+ rowTag:
+ D.FOR("member", "$members",
+ D.TAG("$memberRowTag", {member: "$member"})
+ ),
+
+ memberIterator: function(object)
+ {
+ var memberProvider = new DOMMemberProvider(null);
+ var members = memberProvider.getMembers(object, 0);
+ if (members.length)
+ return members;
+
+ return [{
+ name: Locale.$STR("firebug.dom.noChildren2"),
+ type: "string",
+ rowClass: "memberRow-string",
+ tag: Firebug.Rep.tag,
+ prefix: ""
+ }];
+ },
+
+ isCropped: function(value)
+ {
+ return typeof value == "string" && value.length > Options.get("stringCropLength");
+ },
+
+ getMemberNameTooltip: function(member)
+ {
+ return member.title || member.scopeNameTooltip;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onClick: function(event)
+ {
+ if (!Events.isLeftClick(event))
+ return;
+
+ var row = Dom.getAncestorByClass(event.target, "memberRow");
+ var label = Dom.getAncestorByClass(event.target, "memberLabel");
+ var valueCell = row.getElementsByClassName("memberValueCell").item(0);
+ var object = Firebug.getRepObject(event.target);
+ var target = row.lastChild.firstChild;
+ var isString = Css.hasClass(target,"objectBox-string");
+ var inValueCell = (event.target === valueCell || event.target === target);
+
+ if (label && (Css.hasClass(row, "hasChildren") || (isString && !inValueCell)))
+ {
+ row = label.parentNode.parentNode;
+ this.toggleRow(row);
+ Events.cancelEvent(event);
+ }
+ else
+ {
+ if (typeof object === "function")
+ {
+ Firebug.chrome.select(object, "script");
+ Events.cancelEvent(event);
+ }
+ else if ((!object || typeof object !== "object") && Events.isDoubleClick(event))
+ {
+ var panel = row.parentNode.parentNode.domPanel;
+ if (panel)
+ {
+ // XXX this should use member.value
+ var rowValue = panel.getRowPropertyValue(row);
+ if (typeof rowValue === "boolean")
+ panel.setPropertyValue(row, ""+!rowValue);
+ else
+ panel.editProperty(row);
+
+ Events.cancelEvent(event);
+ }
+ }
+ }
+ },
+
+ toggleRow: function(row)
+ {
+ var level = parseInt(row.getAttribute("level"), 10);
+ var table = Dom.getAncestorByClass(row, "domTable");
+ var toggles = table.toggles;
+ if (!toggles)
+ toggles = table.repObject.toggles;
+
+ var domPanel = table.domPanel;
+ if (!domPanel)
+ {
+ var panel = Firebug.getElementPanel(row);
+ domPanel = panel.context.getPanel("dom");
+ }
+
+ if (!domPanel)
+ return;
+
+ var context = domPanel.context;
+ var target = row.lastChild.firstChild;
+ var isString = Css.hasClass(target, "objectBox-string");
+
+ if (Css.hasClass(row, "opened"))
+ {
+ Css.removeClass(row, "opened");
+
+ if (isString)
+ {
+ var rowValue = row.domObject.value;
+ row.lastChild.firstChild.textContent = '"' + Str.cropMultipleLines(rowValue) + '"';
+ }
+ else
+ {
+ if (toggles)
+ {
+ var path = Firebug.DOMBasePanel.getPath(row);
+
+ // Remove the path from the toggle tree
+ for (var i = 0; i < path.length; ++i)
+ {
+ if (i === path.length-1)
+ toggles.remove(path[i]);
+ else
+ toggles = toggles.get(path[i]);
+ }
+ }
+
+ var rowTag = this.rowTag;
+ var tbody = row.parentNode;
+
+ setTimeout(function()
+ {
+ for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
+ {
+ if (parseInt(firstRow.getAttribute("level"), 10) <= level)
+ break;
+
+ tbody.removeChild(firstRow);
+ }
+ }, row.insertTimeout ? row.insertTimeout : 0);
+ }
+ }
+ else
+ {
+ Css.setClass(row, "opened");
+ if (isString)
+ {
+ var rowValue = row.domObject.value;
+ row.lastChild.firstChild.textContent = '"' + rowValue + '"';
+ }
+ else
+ {
+ if (toggles)
+ {
+ var path = Firebug.DOMBasePanel.getPath(row);
+
+ // Mark the path in the toggle tree
+ for (var i = 0; i < path.length; ++i)
+ {
+ var name = path[i];
+ if (toggles.get(name))
+ toggles = toggles.get(name);
+ else
+ toggles = toggles.set(name, new ToggleBranch.ToggleBranch());
+ }
+ if (FBTrace.DBG_DOMPLATE)
+ FBTrace.sysout("toggleRow mark path "+toggles);
+ }
+
+ var members = domPanel.getMembers(target.repObject, level+1);
+
+ var rowTag = this.rowTag;
+ var lastRow = row;
+
+ var delay = 0;
+ var setSize = members.length;
+ var rowCount = 1;
+ while (members.length)
+ {
+ let slice = members.splice(0, insertSliceSize);
+ let isLast = !members.length;
+ setTimeout(function()
+ {
+ if (lastRow.parentNode)
+ {
+ var result = rowTag.insertRows({members: slice}, lastRow);
+ lastRow = result[1];
+
+ Events.dispatch(DOMModule.fbListeners, "onMemberRowSliceAdded",
+ [null, result, rowCount, setSize]);
+
+ rowCount += insertSliceSize;
+ }
+
+ if (isLast)
+ delete row.insertTimeout;
+ }, delay);
+
+ delay += insertInterval;
+ }
+
+ row.insertTimeout = delay;
+ }
+ }
+ },
+
+ onClickRowHeader: function(event)
+ {
+ Events.cancelEvent(event);
+
+ var rowHeader = event.target;
+ if (!Css.hasClass(rowHeader, "memberRowHeader"))
+ return;
+
+ var row = Dom.getAncestorByClass(event.target, "memberRow");
+ if (!row)
+ return;
+
+ var panel = row.parentNode.parentNode.domPanel;
+ if (panel)
+ {
+ var scriptPanel = panel.context.getPanel("script", true);
+ if (!scriptPanel || !scriptPanel.isEnabled())
+ return; // set the breakpoint only if the script panel will respond.
+ panel.breakOnProperty(row);
+ }
+ }
+});
+
+var ToolboxPlate = D.domplate(
+{
+ tag:
+ D.DIV({"class": "watchToolbox", _domPanel: "$domPanel", onclick: "$onClick"},
+ D.SPAN({"class": "watchDeleteButton closeButton"})
+ ),
+
+ onClick: function(event)
+ {
+ var toolbox = event.currentTarget;
+ toolbox.domPanel.deleteWatch(toolbox.watchRow);
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+return {
+ ToolboxPlate: ToolboxPlate,
+ DirTablePlate: DirTablePlate,
+ insertSliceSize: insertSliceSize,
+ insertInterval: insertInterval,
+};
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/dom/domSidePanel.js b/content/firebug/dom/domSidePanel.js
index c06eae8..d4a1f29 100644
--- a/content/firebug/dom/domSidePanel.js
+++ b/content/firebug/dom/domSidePanel.js
@@ -1,42 +1,42 @@
-/* See license.txt for terms of usage */
-/*jshint esnext:true, es5:true, curly:false */
-/*global FBTrace:true, XPCNativeWrapper:true, Window:true, define:true */
-
-define([
- "firebug/lib/object",
- "firebug/dom/domBasePanel",
-],
-function(Obj, DOMBasePanel) {
-
-// ********************************************************************************************* //
-// Constants
-
-// ********************************************************************************************* //
-// DOM Side Panel Implementation
-
-/**
- * @panel This object represents a DOM Side panel used inside the HTML panel.
- */
-function DOMSidePanel()
-{
-}
-
-DOMSidePanel.prototype = Obj.extend(DOMBasePanel.prototype,
-/** lends Firebug.DOMPanel */
-{
- name: "domSide",
- parentPanel: "html",
- order: 3,
- enableA11y: true,
- deriveA11yFrom: "console"
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(DOMSidePanel);
-
-return DOMSidePanel;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+/*jshint esnext:true, es5:true, curly:false */
+/*global FBTrace:true, XPCNativeWrapper:true, Window:true, define:true */
+
+define([
+ "firebug/lib/object",
+ "firebug/dom/domBasePanel",
+],
+function(Obj, DOMBasePanel) {
+
+// ********************************************************************************************* //
+// Constants
+
+// ********************************************************************************************* //
+// DOM Side Panel Implementation
+
+/**
+ * @panel This object represents a DOM Side panel used inside the HTML panel.
+ */
+function DOMSidePanel()
+{
+}
+
+DOMSidePanel.prototype = Obj.extend(DOMBasePanel.prototype,
+/** lends Firebug.DOMPanel */
+{
+ name: "domSide",
+ parentPanel: "html",
+ order: 3,
+ enableA11y: true,
+ deriveA11yFrom: "console"
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(DOMSidePanel);
+
+return DOMSidePanel;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/dom/toggleBranch.js b/content/firebug/dom/toggleBranch.js
index 3ad6b5a..5761fbb 100644
--- a/content/firebug/dom/toggleBranch.js
+++ b/content/firebug/dom/toggleBranch.js
@@ -1,113 +1,113 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
-],
-function(FBTrace) {
-
-// ********************************************************************************************* //
-// Constants
-
-var metaNames =
-[
- "prototype",
- "constructor",
- "__proto__",
- "toString",
- "toSource",
- "hasOwnProperty",
- "getPrototypeOf",
- "__defineGetter__",
- "__defineSetter__",
- "__lookupGetter__",
- "__lookupSetter__",
- "__noSuchMethod__",
- "propertyIsEnumerable",
- "isPrototypeOf",
- "watch",
- "unwatch",
- "valueOf",
- "toLocaleString"
-];
-
-// ********************************************************************************************* //
-// ToggleBranch Implementation
-
-function ToggleBranch()
-{
- this.normal = {};
- this.meta = {};
-}
-
-ToggleBranch.prototype =
-{
- // Another implementation could simply prefix all keys with "#".
- getMeta: function(name)
- {
- if (metaNames.indexOf(name) !== -1)
- return "meta_"+name;
- },
-
- // return the toggle branch at name
- get: function(name)
- {
- var metaName = this.getMeta(name);
- var value = null;
-
- if (metaName)
- value = this.meta[metaName];
- else if (this.normal.hasOwnProperty(name))
- value = this.normal[name];
-
- if (FBTrace.DBG_DOMPLATE)
- {
- if (value && !(value instanceof ToggleBranch))
- FBTrace.sysout("ERROR ToggleBranch.get(" + name + ") not set to a ToggleBranch!");
- }
-
- return value;
- },
-
- // value will be another toggle branch
- set: function(name, value)
- {
- if (FBTrace.DBG_DOMPLATE)
- {
- if (value && !(value instanceof ToggleBranch))
- {
- FBTrace.sysout("ERROR ToggleBranch.set(" + name + "," + value +
- ") not set to a ToggleBranch!");
- }
- }
-
- var metaName = this.getMeta(name);
- if (metaName)
- return this.meta[metaName] = value;
- else
- return this.normal[name] = value;
- },
-
- // remove the toggle branch at name
- remove: function(name)
- {
- var metaName = this.getMeta(name);
- if (metaName)
- delete this.meta[metaName];
- else
- delete this.normal[name];
- },
-
- toString: function()
- {
- return "[ToggleBranch]";
- },
-};
-
-// ********************************************************************************************* //
-
-return {
- ToggleBranch: ToggleBranch
-};
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+],
+function(FBTrace) {
+
+// ********************************************************************************************* //
+// Constants
+
+var metaNames =
+[
+ "prototype",
+ "constructor",
+ "__proto__",
+ "toString",
+ "toSource",
+ "hasOwnProperty",
+ "getPrototypeOf",
+ "__defineGetter__",
+ "__defineSetter__",
+ "__lookupGetter__",
+ "__lookupSetter__",
+ "__noSuchMethod__",
+ "propertyIsEnumerable",
+ "isPrototypeOf",
+ "watch",
+ "unwatch",
+ "valueOf",
+ "toLocaleString"
+];
+
+// ********************************************************************************************* //
+// ToggleBranch Implementation
+
+function ToggleBranch()
+{
+ this.normal = {};
+ this.meta = {};
+}
+
+ToggleBranch.prototype =
+{
+ // Another implementation could simply prefix all keys with "#".
+ getMeta: function(name)
+ {
+ if (metaNames.indexOf(name) !== -1)
+ return "meta_"+name;
+ },
+
+ // return the toggle branch at name
+ get: function(name)
+ {
+ var metaName = this.getMeta(name);
+ var value = null;
+
+ if (metaName)
+ value = this.meta[metaName];
+ else if (this.normal.hasOwnProperty(name))
+ value = this.normal[name];
+
+ if (FBTrace.DBG_DOMPLATE)
+ {
+ if (value && !(value instanceof ToggleBranch))
+ FBTrace.sysout("ERROR ToggleBranch.get(" + name + ") not set to a ToggleBranch!");
+ }
+
+ return value;
+ },
+
+ // value will be another toggle branch
+ set: function(name, value)
+ {
+ if (FBTrace.DBG_DOMPLATE)
+ {
+ if (value && !(value instanceof ToggleBranch))
+ {
+ FBTrace.sysout("ERROR ToggleBranch.set(" + name + "," + value +
+ ") not set to a ToggleBranch!");
+ }
+ }
+
+ var metaName = this.getMeta(name);
+ if (metaName)
+ return this.meta[metaName] = value;
+ else
+ return this.normal[name] = value;
+ },
+
+ // remove the toggle branch at name
+ remove: function(name)
+ {
+ var metaName = this.getMeta(name);
+ if (metaName)
+ delete this.meta[metaName];
+ else
+ delete this.normal[name];
+ },
+
+ toString: function()
+ {
+ return "[ToggleBranch]";
+ },
+};
+
+// ********************************************************************************************* //
+
+return {
+ ToggleBranch: ToggleBranch
+};
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/editor/editor.js b/content/firebug/editor/editor.js
index e96fa10..f4770ca 100644
--- a/content/firebug/editor/editor.js
+++ b/content/firebug/editor/editor.js
@@ -1,1488 +1,1488 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/string",
- "firebug/lib/array",
- "firebug/chrome/menu",
- "firebug/trace/debug",
-],
-function(Obj, Firebug, Domplate, Locale, Events, Css, Dom, Str, Arr, Menu, Debug) {
-
-// ********************************************************************************************* //
-// Constants
-
-const saveTimeout = 400;
-const hugeChangeAmount = 100;
-const largeChangeAmount = 10;
-const smallChangeAmount = 0.1;
-
-// ********************************************************************************************* //
-// Globals
-
-// xxxHonza: it's bad design to have these globals.
-var currentTarget = null;
-var currentGroup = null;
-var currentPanel = null;
-var currentEditor = null;
-
-var defaultEditor = null;
-
-var originalClassName = null;
-
-var originalValue = null;
-var defaultValue = null;
-var previousValue = null;
-
-var invalidEditor = false;
-var ignoreNextInput = false;
-
-// ********************************************************************************************* //
-
-Firebug.Editor = Obj.extend(Firebug.Module,
-{
- supportsStopEvent: true,
-
- dispatchName: "editor",
- tabCharacter: " ",
-
- setSelection: function(selectionData)
- {
- if (currentEditor && currentEditor.setSelection)
- currentEditor.setSelection(selectionData);
- },
-
- startEditing: function(target, value, editor, selectionData)
- {
- this.stopEditing();
-
- if (Css.hasClass(target, "insertBefore") || Css.hasClass(target, "insertAfter"))
- return;
-
- var panel = Firebug.getElementPanel(target);
- if (!panel.editable)
- return;
-
- if (FBTrace.DBG_EDITOR)
- FBTrace.sysout("editor.startEditing " + value, target);
-
- defaultValue = target.getAttribute("defaultValue");
- if (value == undefined)
- {
- value = target.textContent;
- if (value == defaultValue)
- value = "";
- }
-
- invalidEditor = false;
- currentTarget = target;
- currentPanel = panel;
- currentGroup = Dom.getAncestorByClass(target, "editGroup");
-
- currentPanel.editing = true;
-
- var panelEditor = currentPanel.getEditor(target, value);
- currentEditor = editor ? editor : panelEditor;
- if (!currentEditor)
- currentEditor = getDefaultEditor(currentPanel);
-
- Css.setClass(panel.panelNode, "editing");
- Css.setClass(target, "editing");
- if (currentGroup)
- Css.setClass(currentGroup, "editing");
-
- originalValue = previousValue = value = currentEditor.getInitialValue(target, value);
-
- currentEditor.show(target, currentPanel, value, selectionData);
- Events.dispatch(this.fbListeners, "onBeginEditing", [currentPanel, currentEditor, target, value]);
- currentEditor.beginEditing(target, value);
-
- if (FBTrace.DBG_EDITOR)
- FBTrace.sysout("Editor start panel "+currentPanel.name);
-
- this.attachListeners(currentEditor, panel.context);
- },
-
- saveAndClose: function()
- {
- if (!currentTarget)
- return;
-
- Events.dispatch(currentPanel.fbListeners, "onInlineEditorClose", [currentPanel,
- currentTarget, !originalValue]);
-
- this.stopEditing();
- },
-
- stopEditing: function(cancel)
- {
- if (!currentTarget)
- return;
-
- if (FBTrace.DBG_EDITOR)
- {
- FBTrace.sysout("editor.stopEditing cancel:" + cancel+" saveTimeout: " +
- this.saveTimeout);
- }
-
- // Make sure the content is save if there is a timeout in progress.
- if (this.saveTimeout)
- this.save();
-
- clearTimeout(this.saveTimeout);
- delete this.saveTimeout;
-
- this.detachListeners(currentEditor, currentPanel.context);
-
- Css.removeClass(currentPanel.panelNode, "editing");
- Css.removeClass(currentTarget, "editing");
- if (currentGroup)
- Css.removeClass(currentGroup, "editing");
-
- var value = currentEditor.getValue();
- if (value == defaultValue)
- value = "";
-
- // Reset the editor's value so it isn't accidentally reused the next time
- // the editor instance is reused (see also 3280, 3332).
- currentEditor.setValue("");
-
- var removeGroup = currentEditor.endEditing(currentTarget, value, cancel);
-
- try
- {
- if (cancel)
- {
- Events.dispatch(currentPanel.fbListeners, "onInlineEditorClose",
- [currentPanel, currentTarget, removeGroup && !originalValue]);
-
- if (value != originalValue)
- this.saveEditAndNotifyListeners(currentTarget, originalValue, previousValue);
-
- currentEditor.cancelEditing(currentTarget, originalValue);
-
- if (removeGroup && !originalValue && currentGroup)
- currentGroup.parentNode.removeChild(currentGroup);
- }
- else if (!value)
- {
- this.saveEditAndNotifyListeners(currentTarget, "", previousValue);
-
- if (removeGroup && currentGroup && currentGroup.parentNode)
- currentGroup.parentNode.removeChild(currentGroup);
- }
- else
- {
- this.save(value);
- }
- }
- catch (exc)
- {
- Debug.ERROR(exc);
- }
-
- currentEditor.hide();
- currentPanel.editing = false;
-
- Events.dispatch(this.fbListeners, "onStopEdit", [currentPanel, currentEditor,
- currentTarget]);
-
- if (FBTrace.DBG_EDITOR)
- FBTrace.sysout("Editor stop panel " + currentPanel.name);
-
- currentTarget = null;
- currentGroup = null;
- currentPanel = null;
- currentEditor = null;
- originalValue = null;
- invalidEditor = false;
-
- return value;
- },
-
- cancelEditing: function()
- {
- return this.stopEditing(true);
- },
-
- update: function(saveNow)
- {
- if (this.saveTimeout)
- clearTimeout(this.saveTimeout);
-
- invalidEditor = true;
-
- currentEditor.layout();
-
- if (saveNow)
- {
- this.save();
- }
- else
- {
- var context = currentPanel.context;
- this.saveTimeout = context.setTimeout(Obj.bindFixed(this.save, this), saveTimeout);
-
- if (FBTrace.DBG_EDITOR)
- FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout);
- }
- },
-
- save: function(value)
- {
- if (!invalidEditor)
- return;
-
- if (value == undefined)
- value = currentEditor.getValue();
-
- if (FBTrace.DBG_EDITOR)
- FBTrace.sysout("editor.save saveTimeout: " + this.saveTimeout + " currentPanel: " +
- (currentPanel ? currentPanel.name : "null"));
-
- try
- {
- this.saveEditAndNotifyListeners(currentTarget, value, previousValue);
-
- previousValue = value;
- invalidEditor = false;
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("editor.save FAILS "+exc, exc);
- }
- },
-
- saveEditAndNotifyListeners: function(currentTarget, value, previousValue)
- {
- currentEditor.saveEdit(currentTarget, value, previousValue);
- Events.dispatch(this.fbListeners, "onSaveEdit", [currentPanel, currentEditor,
- currentTarget, value, previousValue]);
- },
-
- setEditTarget: function(element)
- {
- if (!element)
- {
- Events.dispatch(currentPanel.fbListeners, "onInlineEditorClose",
- [currentPanel, currentTarget, true]);
- this.stopEditing();
- }
- else if (Css.hasClass(element, "insertBefore"))
- this.insertRow(element, "before");
- else if (Css.hasClass(element, "insertAfter"))
- this.insertRow(element, "after");
- else
- this.startEditing(element);
- },
-
- tabNextEditor: function()
- {
- if (!currentTarget)
- return;
-
- var value = currentEditor.getValue();
- var nextEditable = currentTarget;
- do
- {
- nextEditable = !value && currentGroup
- ? getNextOutsider(nextEditable, currentGroup)
- : Dom.getNextByClass(nextEditable, "editable");
- }
- while (nextEditable && !nextEditable.offsetHeight);
-
- this.setEditTarget(nextEditable);
- },
-
- tabPreviousEditor: function()
- {
- if (!currentTarget)
- return;
-
- var value = currentEditor.getValue();
- var prevEditable = currentTarget;
- do
- {
- prevEditable = !value && currentGroup
- ? getPreviousOutsider(prevEditable, currentGroup)
- : Dom.getPreviousByClass(prevEditable, "editable");
- }
- while (prevEditable && !prevEditable.offsetHeight);
-
- this.setEditTarget(prevEditable);
- },
-
- insertRow: function(relative, insertWhere)
- {
- var group =
- relative || Dom.getAncestorByClass(currentTarget, "editGroup") || currentTarget;
- var value = this.stopEditing();
-
- currentPanel = Firebug.getElementPanel(group);
-
- currentEditor = currentPanel.getEditor(group, value);
- if (!currentEditor)
- currentEditor = getDefaultEditor(currentPanel);
-
- currentGroup = currentEditor.insertNewRow(group, insertWhere);
- if (!currentGroup)
- return;
-
- var editable = Css.hasClass(currentGroup, "editable")
- ? currentGroup
- : Dom.getNextByClass(currentGroup, "editable");
-
- if (editable)
- this.setEditTarget(editable);
- },
-
- insertRowForObject: function(relative)
- {
- var container = Dom.getAncestorByClass(relative, "insertInto");
- if (container)
- {
- relative = Dom.getChildByClass(container, "insertBefore");
- if (relative)
- this.insertRow(relative, "before");
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- attachListeners: function(editor, context)
- {
- var win = currentTarget.ownerDocument.defaultView;
- Events.addEventListener(win, "resize", this.onResize, true);
- Events.addEventListener(win, "blur", this.onBlur, true);
-
- var chrome = Firebug.chrome;
-
- this.listeners = [
- chrome.keyCodeListen("ESCAPE", null, Obj.bind(this.cancelEditing, this)),
- ];
-
- if (editor.arrowCompletion)
- {
- this.listeners.push(
- chrome.keyCodeListen("UP", null, Obj.bindFixed(editor.completeValue, editor, -1)),
- chrome.keyCodeListen("DOWN", null, Obj.bindFixed(editor.completeValue, editor, 1)),
- chrome.keyCodeListen("UP", Events.isShift, Obj.bindFixed(editor.completeValue, editor, -largeChangeAmount)),
- chrome.keyCodeListen("DOWN", Events.isShift, Obj.bindFixed(editor.completeValue, editor, largeChangeAmount)),
- chrome.keyCodeListen("UP", Events.isControl, Obj.bindFixed(editor.completeValue, editor, -smallChangeAmount)),
- chrome.keyCodeListen("DOWN", Events.isControl, Obj.bindFixed(editor.completeValue, editor, smallChangeAmount)),
- chrome.keyCodeListen("PAGE_UP", null, Obj.bindFixed(editor.completeValue, editor, -largeChangeAmount)),
- chrome.keyCodeListen("PAGE_DOWN", null, Obj.bindFixed(editor.completeValue, editor, largeChangeAmount)),
- chrome.keyCodeListen("PAGE_UP", Events.isShift, Obj.bindFixed(editor.completeValue, editor, -hugeChangeAmount)),
- chrome.keyCodeListen("PAGE_DOWN", Events.isShift, Obj.bindFixed(editor.completeValue, editor, hugeChangeAmount))
- );
- }
-
- if (currentEditor.tabNavigation)
- {
- this.listeners.push(
- chrome.keyCodeListen("RETURN", null, Obj.bind(this.tabNextEditor, this)),
- chrome.keyCodeListen("RETURN", Events.isShift, Obj.bind(this.saveAndClose, this)),
- chrome.keyCodeListen("RETURN", Events.isControl, Obj.bind(this.insertRow, this, null, "after")),
- chrome.keyCodeListen("TAB", null, Obj.bind(this.tabNextEditor, this)),
- chrome.keyCodeListen("TAB", Events.isShift, Obj.bind(this.tabPreviousEditor, this))
- );
- }
- else if (currentEditor.multiLine)
- {
- this.listeners.push(
- chrome.keyCodeListen("TAB", null, insertTab)
- );
- }
- else
- {
- this.listeners.push(
- chrome.keyCodeListen("RETURN", null, Obj.bindFixed(this.stopEditing, this))
- );
-
- if (currentEditor.tabCompletion)
- {
- this.listeners.push(
- chrome.keyCodeListen("TAB", null, Obj.bind(editor.completeValue, editor, 1)),
- chrome.keyCodeListen("TAB", Events.isShift, Obj.bind(editor.completeValue, editor, -1)),
- chrome.keyCodeListen("UP", null, Obj.bindFixed(editor.completeValue, editor, -1, true)),
- chrome.keyCodeListen("DOWN", null, Obj.bindFixed(editor.completeValue, editor, 1, true)),
- chrome.keyCodeListen("UP", Events.isShift, Obj.bindFixed(editor.completeValue, editor, -largeChangeAmount)),
- chrome.keyCodeListen("DOWN", Events.isShift, Obj.bindFixed(editor.completeValue, editor, largeChangeAmount)),
- chrome.keyCodeListen("UP", Events.isControl, Obj.bindFixed(editor.completeValue, editor, -smallChangeAmount)),
- chrome.keyCodeListen("DOWN", Events.isControl, Obj.bindFixed(editor.completeValue, editor, smallChangeAmount)),
- chrome.keyCodeListen("PAGE_UP", null, Obj.bindFixed(editor.completeValue, editor, -largeChangeAmount)),
- chrome.keyCodeListen("PAGE_DOWN", null, Obj.bindFixed(editor.completeValue, editor, largeChangeAmount)),
- chrome.keyCodeListen("PAGE_UP", Events.isShift, Obj.bindFixed(editor.completeValue, editor, -hugeChangeAmount)),
- chrome.keyCodeListen("PAGE_DOWN", Events.isShift, Obj.bindFixed(editor.completeValue, editor, hugeChangeAmount))
- );
- }
- }
- },
-
- detachListeners: function(editor, context)
- {
- if (!this.listeners)
- return;
-
- var win = currentTarget.ownerDocument.defaultView;
- Events.removeEventListener(win, "resize", this.onResize, true);
- Events.removeEventListener(win, "blur", this.onBlur, true);
- Events.removeEventListener(win, "input", this.onInput, true);
-
- var chrome = Firebug.chrome;
- if (chrome)
- {
- for (var i = 0; i < this.listeners.length; ++i)
- chrome.keyIgnore(this.listeners[i]);
- }
-
- delete this.listeners;
- },
-
- onResize: function(event)
- {
- currentEditor.layout(true);
- },
-
- onBlur: function(event)
- {
- if (currentEditor.enterOnBlur && Dom.isAncestor(event.target, currentEditor.box))
- this.stopEditing();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Module
-
- initialize: function()
- {
- this.onResize = Obj.bindFixed(this.onResize, this);
- this.onBlur = Obj.bind(this.onBlur, this);
-
- Firebug.Module.initialize.apply(this, arguments);
- },
-
- disable: function()
- {
- this.stopEditing();
- },
-
- showContext: function(browser, context)
- {
- this.stopEditing();
- },
-
- showPanel: function(browser, panel)
- {
- this.stopEditing();
- }
-});
-
-// ********************************************************************************************* //
-// BaseEditor
-
-Firebug.BaseEditor = Obj.extend(Firebug.MeasureBox,
-{
- getInitialValue: function(target, value)
- {
- return value;
- },
-
- getValue: function()
- {
- },
-
- setValue: function(value)
- {
- },
-
- show: function(target, panel, value, selectionData)
- {
- },
-
- hide: function()
- {
- },
-
- layout: function(forceAll)
- {
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Support for context menus within inline editors.
-
- getContextMenuItems: function(target)
- {
- var items = [];
- items.push({label: "Cut", command: Obj.bind(this.onCommand, this, "cmd_cut")});
- items.push({label: "Copy", command: Obj.bind(this.onCommand, this, "cmd_copy")});
- items.push({label: "Paste", command: Obj.bind(this.onCommand, this, "cmd_paste")});
- return items;
- },
-
- onCommand: function(command, cmdId)
- {
- var browserWindow = Firebug.chrome.window;
-
- // Use the right browser window to get the current command controller (issue 4177).
- var controller = browserWindow.document.commandDispatcher.getControllerForCommand(cmdId);
- var enabled = controller.isCommandEnabled(cmdId);
- if (controller && enabled)
- controller.doCommand(cmdId);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Editor Module listeners will get "onBeginEditing" just before this call
-
- beginEditing: function(target, value)
- {
- },
-
- // Editor Module listeners will get "onSaveEdit" just after this call
- saveEdit: function(target, value, previousValue)
- {
- },
-
- endEditing: function(target, value, cancel)
- {
- // Remove empty groups by default
- return true;
- },
-
- cancelEditing: function(target, value)
- {
- },
-
- insertNewRow: function(target, insertWhere)
- {
- },
-});
-
-// ********************************************************************************************* //
-// InlineEditor
-
-Firebug.InlineEditor = function(doc)
-{
- this.initializeInline(doc);
-};
-
-with (Domplate) {
-Firebug.InlineEditor.prototype = domplate(Firebug.BaseEditor,
-{
- enterOnBlur: true,
-
- tag:
- DIV({"class": "inlineEditor"},
- INPUT({"class": "textEditorInner", type: "text",
- oninput: "$onInput", onkeypress: "$onKeyPress", onoverflow: "$onOverflow",
- oncontextmenu: "$onContextMenu"}
- )
- ),
-
- inputTag :
- INPUT({"class": "textEditorInner", type: "text",
- oninput: "$onInput", onkeypress: "$onKeyPress", onoverflow: "$onOverflow"}
- ),
-
- expanderTag:
- SPAN({"class": "inlineExpander", style: "-moz-user-focus:ignore;opacity:0.5"}),
-
- initialize: function()
- {
- this.fixedWidth = false;
- this.completeAsYouType = true;
- this.tabNavigation = true;
- this.multiLine = false;
- this.tabCompletion = false;
- this.arrowCompletion = true;
- this.noWrap = true;
- this.numeric = false;
- },
-
- destroy: function()
- {
- this.destroyInput();
- },
-
- initializeInline: function(doc)
- {
- this.box = this.tag.replace({}, doc, this);
- this.input = this.box.firstChild;
- this.expander = this.expanderTag.replace({}, doc, this);
- this.initialize();
- },
-
- destroyInput: function()
- {
- // XXXjoe Need to remove input/keypress handlers to avoid leaks
- },
-
- getValue: function()
- {
- return this.input.value;
- },
-
- setValue: function(value)
- {
- // It's only a one-line editor, so new lines shouldn't be allowed
- return this.input.value = Str.stripNewLines(value);
- },
-
- setSelection: function(selectionData)
- {
- this.input.setSelectionRange(selectionData.start, selectionData.end);
- // Ci.nsISelectionController SELECTION_NORMAL SELECTION_ANCHOR_REGION SCROLL_SYNCHRONOUS
- this.input.QueryInterface(Components.interfaces.nsIDOMNSEditableElement)
- .editor.selectionController.scrollSelectionIntoView(1, 0, 2);
- },
-
- show: function(target, panel, value, selectionData)
- {
- if (FBTrace.DBG_EDITOR)
- {
- FBTrace.sysout("Firebug.InlineEditor.show",
- {target: target, panel: panel, value: value, selectionData: selectionData});
- }
-
- Events.dispatch(panel.fbListeners, "onInlineEditorShow", [panel, this]);
- this.target = target;
- this.panel = panel;
-
- this.targetOffset = Dom.getClientOffset(target);
-
- this.originalClassName = this.box.className;
-
- var classNames = target.className.split(" ");
- for (var i = 0; i < classNames.length; ++i)
- Css.setClass(this.box, "editor-" + classNames[i]);
-
- // remove error information
- this.box.removeAttribute('saveSuccess');
-
- // Make the editor match the target's font style
- Css.copyTextStyles(target, this.box);
-
- this.setValue(value);
-
- this.getAutoCompleter().reset();
-
- panel.panelNode.appendChild(this.box);
- this.input.select();
- if (selectionData) // transfer selection to input element
- this.setSelection(selectionData);
-
- // Insert the "expander" to cover the target element with white space
- if (!this.fixedWidth)
- {
- this.startMeasuring(target);
-
- Css.copyBoxStyles(target, this.expander);
- target.parentNode.replaceChild(this.expander, target);
- Dom.collapse(target, true);
- this.expander.parentNode.insertBefore(target, this.expander);
- this.textSize = this.measureInputText(value);
- }
-
- this.updateLayout(true);
-
- Dom.scrollIntoCenterView(this.box, null, true);
- },
-
- hide: function()
- {
- if (FBTrace.DBG_EDITOR)
- FBTrace.sysout("Firebug.InlineEditor.hide");
-
- this.box.className = this.originalClassName;
-
- if (!this.fixedWidth)
- {
- this.stopMeasuring();
-
- Dom.collapse(this.target, false);
-
- if (this.expander.parentNode)
- this.expander.parentNode.removeChild(this.expander);
- }
-
- if (this.box.parentNode)
- {
- try { this.input.setSelectionRange(0, 0); } catch (exc) {}
- this.box.parentNode.removeChild(this.box);
- }
-
- delete this.target;
- delete this.panel;
- },
-
- layout: function(forceAll)
- {
- if (!this.fixedWidth)
- this.textSize = this.measureInputText(this.input.value);
-
- if (forceAll)
- this.targetOffset = Dom.getClientOffset(this.expander);
-
- this.updateLayout(false, forceAll);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- beginEditing: function(target, value)
- {
- },
-
- saveEdit: function(target, value, previousValue)
- {
- },
-
- endEditing: function(target, value, cancel)
- {
- if (FBTrace.DBG_EDITOR)
- {
- FBTrace.sysout("Firebug.InlineEditor.endEditing",
- {target: target, value: value, cancel: cancel});
- }
-
- // Remove empty groups by default
- return true;
- },
-
- insertNewRow: function(target, insertWhere)
- {
- },
-
- advanceToNext: function(target, charCode)
- {
- return false;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getAutoCompleteRange: function(value, offset)
- {
- },
-
- getAutoCompleteList: function(preExpr, expr, postExpr)
- {
- return [];
- },
-
- getAutoCompletePropSeparator: function(range, expr, prefixOf)
- {
- return null;
- },
-
- autoCompleteAdjustSelection: function(value, offset)
- {
- return null;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getAutoCompleter: function()
- {
- if (!this.autoCompleter)
- {
- this.autoCompleter = new Firebug.AutoCompleter(false,
- Obj.bind(this.getAutoCompleteRange, this),
- Obj.bind(this.getAutoCompleteList, this),
- Obj.bind(this.getAutoCompletePropSeparator, this),
- Obj.bind(this.autoCompleteAdjustSelection, this));
- }
-
- return this.autoCompleter;
- },
-
- completeValue: function(amt)
- {
- if (this.getAutoCompleter().complete(currentPanel.context, this.input, amt, true))
- Firebug.Editor.update(true);
- else
- this.incrementValue(amt);
- },
-
- incrementValue: function(amt)
- {
- var value = this.input.value;
- var offset = this.input.selectionStart;
- var offsetEnd = this.input.selectionEnd;
-
- var newValue = this.doIncrementValue(value, amt, offset, offsetEnd);
- if (!newValue)
- return false;
-
- this.input.value = newValue.value;
- this.input.setSelectionRange(newValue.start, newValue.end);
-
- Firebug.Editor.update(true);
- return true;
- },
-
- incrementExpr: function(expr, amt, info)
- {
- var num = parseFloat(expr);
- if (isNaN(num))
- return null;
-
- var m = /\d+(\.\d+)?/.exec(expr);
- var digitPost = expr.substr(m.index+m[0].length);
- var newValue = Math.round((num-amt)*1000)/1000; // avoid rounding errors
-
- if (info && "minValue" in info)
- newValue = Math.max(newValue, info.minValue);
- if (info && "maxValue" in info)
- newValue = Math.min(newValue, info.maxValue);
-
- newValue = newValue.toString();
-
- // Preserve trailing zeroes of small increments.
- if (Math.abs(amt) < 1)
- {
- if (newValue.indexOf(".") === -1)
- newValue += ".";
- var dec = newValue.length - newValue.lastIndexOf(".") - 1;
- var incDec = Math.abs(amt).toString().length - 2;
- while (dec < incDec)
- {
- newValue += "0";
- ++dec;
- }
- }
-
- return newValue + digitPost;
- },
-
- doIncrementValue: function(value, amt, offset, offsetEnd, info)
- {
- // Try to find a number around the cursor to increment.
- var start, end;
- if (/^-?[0-9.]/.test(value.substring(offset, offsetEnd)) &&
- !(info && /\d/.test(value.charAt(offset-1) + value.charAt(offsetEnd))))
- {
- // We have a number selected, possibly with a suffix, and we are not in
- // the disallowed case of just part of a known number being selected.
- // Use that number.
- start = offset;
- end = offsetEnd;
- }
- else
- {
- // Parse periods as belonging to the number only if we are in a known number
- // context. (This makes incrementing the 1 in 'image1.gif' work.)
- var pattern = "[" + (info ? "0-9." : "0-9") + "]*";
-
- var before = new RegExp(pattern + "$").exec(value.substr(0, offset))[0].length;
- var after = new RegExp("^" + pattern).exec(value.substr(offset))[0].length;
- start = offset - before;
- end = offset + after;
-
- // Expand the number to contain an initial minus sign if it seems
- // free-standing.
- if (value.charAt(start-1) === "-" &&
- (start-1 === 0 || /[ (:,='"]/.test(value.charAt(start-2))))
- {
- --start;
- }
- }
-
- if (start !== end)
- {
- // Include percentages as part of the incremented number (they are
- // common enough).
- if (value.charAt(end) === "%")
- ++end;
-
- var first = value.substr(0, start);
- var mid = value.substring(start, end);
- var last = value.substr(end);
- mid = this.incrementExpr(mid, amt, info);
- if (mid !== null)
- {
- return {
- value: first + mid + last,
- start: start,
- end: start + mid.length
- };
- }
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onKeyPress: function(event)
- {
- if (event.keyCode == KeyEvent.DOM_VK_ESCAPE && !this.completeAsYouType)
- {
- var reverted = this.getAutoCompleter().revert(this.input);
- if (reverted)
- Events.cancelEvent(event);
- }
- else if (event.keyCode == KeyEvent.DOM_VK_RIGHT && this.completeAsYouType)
- {
- if (this.getAutoCompleter().acceptCompletion(this.input))
- Events.cancelEvent(event);
- }
- else if (event.charCode && this.advanceToNext(this.target, event.charCode))
- {
- Firebug.Editor.tabNextEditor();
- Events.cancelEvent(event);
- }
- else if (this.numeric && event.charCode &&
- !(event.ctrlKey || event.metaKey || event.altKey) &&
- !(KeyEvent.DOM_VK_0 <= event.charCode && event.charCode <= KeyEvent.DOM_VK_9) &&
- event.charCode !== KeyEvent.DOM_VK_INSERT && event.charCode !== KeyEvent.DOM_VK_DELETE)
- {
- Events.cancelEvent(event);
- }
- else if (event.keyCode == KeyEvent.DOM_VK_BACK_SPACE ||
- event.keyCode == KeyEvent.DOM_VK_DELETE)
- {
- // If the user deletes text, don't autocomplete after the upcoming input event
- this.ignoreNextInput = true;
- }
- },
-
- onOverflow: function()
- {
- this.updateLayout(false, false, 3);
- },
-
- onInput: function()
- {
- if (this.ignoreNextInput)
- {
- this.ignoreNextInput = false;
- this.getAutoCompleter().reset();
- }
- else if (this.completeAsYouType)
- this.getAutoCompleter().complete(currentPanel.context, this.input, 0, false);
- else
- this.getAutoCompleter().reset();
-
- Firebug.Editor.update();
- },
-
- onContextMenu: function(event)
- {
- Events.cancelEvent(event);
-
- var popup = Firebug.chrome.$("fbInlineEditorPopup");
- Dom.eraseNode(popup);
-
- var target = event.target;
- var items = this.getContextMenuItems(target);
- if (items)
- Menu.createMenuItems(popup, items);
-
- if (!popup.firstChild)
- return false;
-
- popup.openPopupAtScreen(event.screenX, event.screenY, true);
- return true;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- updateLayout: function(initial, forceAll, extraWidth)
- {
- if (this.fixedWidth)
- {
- this.box.style.left = this.targetOffset.x + "px";
- this.box.style.top = this.targetOffset.y + "px";
-
- var w = this.target.offsetWidth;
- var h = this.target.offsetHeight;
- this.input.style.width = w + "px";
- this.input.style.height = (h-3) + "px";
- }
- else
- {
- this.expander.textContent = this.input.value;
-
- var clR = this.expander.getClientRects(),
- wasWrapped = this.wrapped, inputWidth = Infinity;
-
- if(clR.length == 1)
- {
- this.wrapped = false;
- }
- else if (clR.length == 2)
- {
- var w1 = clR[0].width;
- var w2 = clR[1].width;
-
- if (w2 > w1){
- this.wrapped = true;
- inputWidth = w2;
- } else
- this.wrapped = false;
- }
- else if (clR.length == 3)
- {
- this.wrapped = true;
- if (clR[2].width > 50)
- inputWidth = clR[1].width;
- }
- else if(clR.length > 3)
- {
- this.wrapped = true;
- }
-
- if(this.wrapped)
- {
- var fixupL = clR[1].left - clR[0].left;
- fixupT = clR[1].top - clR[0].top;
- }
- else
- {
- var fixupL = 0, fixupT = 0;
- var approxTextWidth = this.textSize.width;
- // Make the input one character wider than the text value so that
- // typing does not ever cause the textbox to scroll
- var charWidth = this.measureInputText('m').width;
-
- // Sometimes we need to make the editor a little wider, specifically when
- // an overflow happens, otherwise it will scroll off some text on the left
- if (extraWidth)
- charWidth *= extraWidth;
-
- var inputWidth = approxTextWidth + charWidth;
- }
-
-
- var container = currentPanel.panelNode;
- var maxWidth = container.clientWidth - this.targetOffset.x - fixupL +
- container.scrollLeft-6;
-
- if(inputWidth > maxWidth)
- inputWidth = maxWidth;
-
- if (forceAll || initial || this.wrapped != wasWrapped)
- {
- this.box.style.left = (this.targetOffset.x + fixupL) + "px";
- this.box.style.top = (this.targetOffset.y + fixupT) + "px";
- }
- this.input.style.width = inputWidth + "px";
- }
-
- if (forceAll)
- Dom.scrollIntoCenterView(this.box, null, true);
- }
-});
-};
-
-// ********************************************************************************************* //
-// Autocompletion
-
-Firebug.AutoCompleter = function(caseSensitive, getRange, evaluator, getNewPropSeparator,
- adjustSelectionOnAccept)
-{
- var candidates = null;
- var suggestedDefault = null;
- var lastValue = "";
- var originalOffset = -1;
- var originalValue = null;
- var lastExpr = null;
- var lastOffset = -1;
- var exprOffset = 0;
- var lastIndex = null;
- var preExpr = null;
- var postExpr = null;
-
- this.revert = function(textBox)
- {
- if (originalOffset != -1)
- {
- textBox.value = lastValue = originalValue;
- textBox.setSelectionRange(originalOffset, originalOffset);
-
- this.reset();
- return true;
- }
- else
- {
- this.reset();
- return false;
- }
- };
-
- this.reset = function()
- {
- candidates = null;
- suggestedDefault = null;
- originalOffset = -1;
- originalValue = null;
- lastExpr = null;
- lastOffset = 0;
- exprOffset = 0;
- lastIndex = null;
- };
-
- this.acceptCompletion = function(textBox)
- {
- if (!adjustSelectionOnAccept)
- return false;
-
- var value = textBox.value;
- var offset = textBox.selectionStart;
- var offsetEnd = textBox.selectionEnd;
- if (!candidates || value !== lastValue || offset !== lastOffset || offset >= offsetEnd)
- return false;
-
- var ind = adjustSelectionOnAccept(value, offsetEnd);
- if (ind === null)
- return false;
-
- textBox.setSelectionRange(ind, ind);
- return true;
- };
-
- this.complete = function(context, textBox, cycle)
- {
- if (!textBox.value && !cycle)
- {
- // Don't complete an empty field.
- return false;
- }
-
- var offset = textBox.selectionStart; // defines the cursor position
-
- var found = this.pickCandidates(textBox, context, cycle);
-
- if (!found)
- this.reset();
-
- return found;
- };
-
- /**
- * returns true if candidate list was created
- */
- this.pickCandidates = function(textBox, context, cycle)
- {
- var value = textBox.value;
- var offset = textBox.selectionStart;
-
- if (!candidates || !cycle || value != lastValue || offset != lastOffset)
- {
- originalOffset = lastOffset = offset;
- originalValue = lastValue = value;
-
- // Find the part of the string that is being completed
- var range = getRange(value, lastOffset);
- if (!range)
- range = {start: 0, end: value.length};
-
- preExpr = value.substr(0, range.start);
- lastExpr = value.substring(range.start, range.end);
- postExpr = value.substr(range.end);
- exprOffset = range.start;
-
- if (FBTrace.DBG_EDITOR)
- {
- var sep = (value.indexOf("|") > -1) ? "^" : "|";
- FBTrace.sysout(preExpr+sep+lastExpr+sep+postExpr + " offset: " + lastOffset);
- }
-
- var search = false;
-
- // Check if the cursor is somewhere in the middle of the expression
- if (lastExpr && offset != range.end)
- {
- if (cycle)
- {
- // Complete by resetting the completion list to a more complete
- // list of candidates, finding our current position in it, and
- // cycling from there.
- search = true;
- lastOffset = range.start;
- }
- else if (offset != range.start+1)
- {
- // Nothing new started, just fail.
- return false;
- }
- else
- {
- // Try to parse the typed character as the start of a new
- // property, moving the rest of lastExpr over into postExpr
- // (possibly with a separator added). If there is no support
- // for prefix-completions, fail. If the character could
- // plausibly be part of a leftwards expansion, fail.
- // Note that this does not show unless there is a completion.
- var moveOver = lastExpr.substr(1);
- lastExpr = lastExpr.charAt(0);
- range.start = offset - 1;
- range.end = offset;
-
- var cand = evaluator(preExpr, lastExpr, postExpr, range, false, context, {});
- var imov = (caseSensitive ? moveOver : moveOver.toLowerCase());
- for (var i = 0; i < cand.length; ++i)
- {
- var c = cand[i];
- if (c.length <= imov.length || c.charAt(0) !== lastExpr)
- continue;
- c = (caseSensitive ? c : c.toLowerCase());
- if (c.substr(-imov.length) === imov)
- return false;
- }
-
- var sep = getNewPropSeparator(range, lastExpr, moveOver);
- if (sep === null)
- return false;
- if (!Str.hasPrefix(moveOver, sep))
- moveOver = sep + moveOver;
-
- postExpr = moveOver + postExpr;
- }
- }
-
- // Don't complete globals unless cycling.
- if (!cycle && !lastExpr)
- return false;
-
- var out = {};
- var values = evaluator(preExpr, lastExpr, postExpr, range, search, context, out);
- suggestedDefault = out.suggestion || null;
-
- if (search)
- this.setCandidatesBySearchExpr(lastExpr, values);
- else
- this.setCandidatesByExpr(lastExpr, values);
- }
-
- if (!candidates.length)
- return false;
-
- this.adjustLastIndex(cycle);
- var completion = candidates[lastIndex];
-
- // Adjust the case of the completion - when editing colors, 'd' should
- // be completed into 'darkred', not 'darkRed'.
- var userTyped = lastExpr.substr(0, lastOffset-exprOffset);
- completion = this.convertCompletionCase(completion, userTyped);
-
- var line = preExpr + completion + postExpr;
- var offsetEnd = exprOffset + completion.length;
-
- // Show the completion
- lastValue = textBox.value = line;
- textBox.setSelectionRange(lastOffset, offsetEnd);
-
- return true;
- };
-
- this.setCandidatesByExpr = function(expr, values)
- {
- // Filter the list of values to those which begin with expr. We
- // will then go on to complete the first value in the resulting list.
- candidates = [];
-
- var findExpr = (caseSensitive ? expr : expr.toLowerCase());
- for (var i = 0; i < values.length; ++i)
- {
- var name = values[i];
- var testName = (caseSensitive ? name : name.toLowerCase());
-
- if (Str.hasPrefix(testName, findExpr))
- candidates.push(name);
- }
-
- lastIndex = null;
- };
-
- this.setCandidatesBySearchExpr = function(expr, values)
- {
- var searchIndex = -1;
-
- var findExpr = (caseSensitive ? expr : expr.toLowerCase());
-
- // Find the first instance of expr in the values list. We
- // will then complete the string that is found.
- for (var i = 0; i < values.length; ++i)
- {
- var name = values[i];
- if (!caseSensitive)
- name = name.toLowerCase();
-
- if (Str.hasPrefix(name, findExpr))
- {
- searchIndex = i;
- break;
- }
- }
-
- if (searchIndex == -1)
- {
- // Nothing found, so there's nothing to complete to
- candidates = [];
- return;
- }
-
- candidates = Arr.cloneArray(values);
- lastIndex = searchIndex;
- };
-
- this.adjustLastIndex = function(cycle)
- {
- if (!cycle)
- {
- // We have a valid lastIndex but we are not cycling, so reset it
- lastIndex = this.pickDefaultCandidate();
- }
- else if (lastIndex === null)
- {
- // There is no old lastIndex, so use the default
- lastIndex = this.pickDefaultCandidate();
- }
- else
- {
- // cycle
- lastIndex += cycle;
- if (lastIndex >= candidates.length)
- lastIndex = 0;
- else if (lastIndex < 0)
- lastIndex = candidates.length - 1;
- }
- };
-
- this.convertCompletionCase = function(completion, userTyped)
- {
- var preCompletion = completion.substr(0, userTyped.length);
- if (preCompletion === userTyped)
- {
- // Trust the completion to be correct.
- return completion;
- }
- else
- {
- // If the typed string is entirely in one case, use that.
- if (userTyped === userTyped.toLowerCase())
- return completion.toLowerCase();
- if (userTyped === userTyped.toUpperCase())
- return completion.toUpperCase();
-
- // The typed string mixes case in some odd way; use the rest of
- // the completion as-is.
- return userTyped + completion.substr(userTyped.length);
- }
- };
-
- this.pickDefaultCandidate = function()
- {
- // If we have a suggestion and it's in the candidate list, use that
- if (suggestedDefault)
- {
- var ind = candidates.indexOf(suggestedDefault);
- if (ind !== -1)
- return ind;
- }
-
- var userTyped = lastExpr.substr(0, lastOffset-exprOffset);
- var utLen = userTyped.length;
-
- // Otherwise, default to the shortest candidate that matches the case,
- // or the shortest one that doesn't
- var pick = -1, pcand, pcaseState;
- for (var i = 0; i < candidates.length; i++)
- {
- var cand = candidates[i];
- var caseState = (cand.substr(0, utLen) === userTyped ? 1 : 0);
- if (pick === -1 ||
- caseState > pcaseState ||
- (caseState === pcaseState && cand.length < pcand.length))
- {
- pick = i;
- pcand = cand;
- pcaseState = caseState;
- }
- }
- return pick;
- };
-};
-
-// ********************************************************************************************* //
-// Local Helpers
-
-function getDefaultEditor(panel)
-{
- if (!defaultEditor)
- {
- var doc = panel.document;
- defaultEditor = new Firebug.InlineEditor(doc);
- }
-
- return defaultEditor;
-}
-
-/**
- * An outsider is the first element matching the stepper element that
- * is not an child of group. Elements tagged with insertBefore or insertAfter
- * classes are also excluded from these results unless they are the sibling
- * of group, relative to group's parent editGroup. This allows for the proper insertion
- * rows when groups are nested.
- */
-function getOutsider(element, group, stepper)
-{
- var parentGroup = Dom.getAncestorByClass(group.parentNode, "editGroup");
- var next;
- do
- {
- next = stepper(next || element);
- }
- while (Dom.isAncestor(next, group) || isGroupInsert(next, parentGroup));
-
- return next;
-}
-
-function isGroupInsert(next, group)
-{
- return (!group || Dom.isAncestor(next, group))
- && (Css.hasClass(next, "insertBefore") || Css.hasClass(next, "insertAfter"));
-}
-
-function getNextOutsider(element, group)
-{
- return getOutsider(element, group, Obj.bind(Dom.getNextByClass, Dom, "editable"));
-}
-
-function getPreviousOutsider(element, group)
-{
- return getOutsider(element, group, Obj.bind(Dom.getPreviousByClass, Dom, "editable"));
-}
-
-function getInlineParent(element)
-{
- var lastInline = element;
- for (; element; element = element.parentNode)
- {
- var s = element.ownerDocument.defaultView.getComputedStyle(element, "");
- if (s.display != "inline")
- return lastInline;
- else
- lastInline = element;
- }
- return null;
-}
-
-function insertTab()
-{
- Dom.insertTextIntoElement(currentEditor.input, Firebug.Editor.tabCharacter);
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.Editor);
-
-return Firebug.Editor;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/string",
+ "firebug/lib/array",
+ "firebug/chrome/menu",
+ "firebug/trace/debug",
+],
+function(Obj, Firebug, Domplate, Locale, Events, Css, Dom, Str, Arr, Menu, Debug) {
+
+// ********************************************************************************************* //
+// Constants
+
+const saveTimeout = 400;
+const hugeChangeAmount = 100;
+const largeChangeAmount = 10;
+const smallChangeAmount = 0.1;
+
+// ********************************************************************************************* //
+// Globals
+
+// xxxHonza: it's bad design to have these globals.
+var currentTarget = null;
+var currentGroup = null;
+var currentPanel = null;
+var currentEditor = null;
+
+var defaultEditor = null;
+
+var originalClassName = null;
+
+var originalValue = null;
+var defaultValue = null;
+var previousValue = null;
+
+var invalidEditor = false;
+var ignoreNextInput = false;
+
+// ********************************************************************************************* //
+
+Firebug.Editor = Obj.extend(Firebug.Module,
+{
+ supportsStopEvent: true,
+
+ dispatchName: "editor",
+ tabCharacter: " ",
+
+ setSelection: function(selectionData)
+ {
+ if (currentEditor && currentEditor.setSelection)
+ currentEditor.setSelection(selectionData);
+ },
+
+ startEditing: function(target, value, editor, selectionData)
+ {
+ this.stopEditing();
+
+ if (Css.hasClass(target, "insertBefore") || Css.hasClass(target, "insertAfter"))
+ return;
+
+ var panel = Firebug.getElementPanel(target);
+ if (!panel.editable)
+ return;
+
+ if (FBTrace.DBG_EDITOR)
+ FBTrace.sysout("editor.startEditing " + value, target);
+
+ defaultValue = target.getAttribute("defaultValue");
+ if (value == undefined)
+ {
+ value = target.textContent;
+ if (value == defaultValue)
+ value = "";
+ }
+
+ invalidEditor = false;
+ currentTarget = target;
+ currentPanel = panel;
+ currentGroup = Dom.getAncestorByClass(target, "editGroup");
+
+ currentPanel.editing = true;
+
+ var panelEditor = currentPanel.getEditor(target, value);
+ currentEditor = editor ? editor : panelEditor;
+ if (!currentEditor)
+ currentEditor = getDefaultEditor(currentPanel);
+
+ Css.setClass(panel.panelNode, "editing");
+ Css.setClass(target, "editing");
+ if (currentGroup)
+ Css.setClass(currentGroup, "editing");
+
+ originalValue = previousValue = value = currentEditor.getInitialValue(target, value);
+
+ currentEditor.show(target, currentPanel, value, selectionData);
+ Events.dispatch(this.fbListeners, "onBeginEditing", [currentPanel, currentEditor, target, value]);
+ currentEditor.beginEditing(target, value);
+
+ if (FBTrace.DBG_EDITOR)
+ FBTrace.sysout("Editor start panel "+currentPanel.name);
+
+ this.attachListeners(currentEditor, panel.context);
+ },
+
+ saveAndClose: function()
+ {
+ if (!currentTarget)
+ return;
+
+ Events.dispatch(currentPanel.fbListeners, "onInlineEditorClose", [currentPanel,
+ currentTarget, !originalValue]);
+
+ this.stopEditing();
+ },
+
+ stopEditing: function(cancel)
+ {
+ if (!currentTarget)
+ return;
+
+ if (FBTrace.DBG_EDITOR)
+ {
+ FBTrace.sysout("editor.stopEditing cancel:" + cancel+" saveTimeout: " +
+ this.saveTimeout);
+ }
+
+ // Make sure the content is save if there is a timeout in progress.
+ if (this.saveTimeout)
+ this.save();
+
+ clearTimeout(this.saveTimeout);
+ delete this.saveTimeout;
+
+ this.detachListeners(currentEditor, currentPanel.context);
+
+ Css.removeClass(currentPanel.panelNode, "editing");
+ Css.removeClass(currentTarget, "editing");
+ if (currentGroup)
+ Css.removeClass(currentGroup, "editing");
+
+ var value = currentEditor.getValue();
+ if (value == defaultValue)
+ value = "";
+
+ // Reset the editor's value so it isn't accidentally reused the next time
+ // the editor instance is reused (see also 3280, 3332).
+ currentEditor.setValue("");
+
+ var removeGroup = currentEditor.endEditing(currentTarget, value, cancel);
+
+ try
+ {
+ if (cancel)
+ {
+ Events.dispatch(currentPanel.fbListeners, "onInlineEditorClose",
+ [currentPanel, currentTarget, removeGroup && !originalValue]);
+
+ if (value != originalValue)
+ this.saveEditAndNotifyListeners(currentTarget, originalValue, previousValue);
+
+ currentEditor.cancelEditing(currentTarget, originalValue);
+
+ if (removeGroup && !originalValue && currentGroup)
+ currentGroup.parentNode.removeChild(currentGroup);
+ }
+ else if (!value)
+ {
+ this.saveEditAndNotifyListeners(currentTarget, "", previousValue);
+
+ if (removeGroup && currentGroup && currentGroup.parentNode)
+ currentGroup.parentNode.removeChild(currentGroup);
+ }
+ else
+ {
+ this.save(value);
+ }
+ }
+ catch (exc)
+ {
+ Debug.ERROR(exc);
+ }
+
+ currentEditor.hide();
+ currentPanel.editing = false;
+
+ Events.dispatch(this.fbListeners, "onStopEdit", [currentPanel, currentEditor,
+ currentTarget]);
+
+ if (FBTrace.DBG_EDITOR)
+ FBTrace.sysout("Editor stop panel " + currentPanel.name);
+
+ currentTarget = null;
+ currentGroup = null;
+ currentPanel = null;
+ currentEditor = null;
+ originalValue = null;
+ invalidEditor = false;
+
+ return value;
+ },
+
+ cancelEditing: function()
+ {
+ return this.stopEditing(true);
+ },
+
+ update: function(saveNow)
+ {
+ if (this.saveTimeout)
+ clearTimeout(this.saveTimeout);
+
+ invalidEditor = true;
+
+ currentEditor.layout();
+
+ if (saveNow)
+ {
+ this.save();
+ }
+ else
+ {
+ var context = currentPanel.context;
+ this.saveTimeout = context.setTimeout(Obj.bindFixed(this.save, this), saveTimeout);
+
+ if (FBTrace.DBG_EDITOR)
+ FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout);
+ }
+ },
+
+ save: function(value)
+ {
+ if (!invalidEditor)
+ return;
+
+ if (value == undefined)
+ value = currentEditor.getValue();
+
+ if (FBTrace.DBG_EDITOR)
+ FBTrace.sysout("editor.save saveTimeout: " + this.saveTimeout + " currentPanel: " +
+ (currentPanel ? currentPanel.name : "null"));
+
+ try
+ {
+ this.saveEditAndNotifyListeners(currentTarget, value, previousValue);
+
+ previousValue = value;
+ invalidEditor = false;
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("editor.save FAILS "+exc, exc);
+ }
+ },
+
+ saveEditAndNotifyListeners: function(currentTarget, value, previousValue)
+ {
+ currentEditor.saveEdit(currentTarget, value, previousValue);
+ Events.dispatch(this.fbListeners, "onSaveEdit", [currentPanel, currentEditor,
+ currentTarget, value, previousValue]);
+ },
+
+ setEditTarget: function(element)
+ {
+ if (!element)
+ {
+ Events.dispatch(currentPanel.fbListeners, "onInlineEditorClose",
+ [currentPanel, currentTarget, true]);
+ this.stopEditing();
+ }
+ else if (Css.hasClass(element, "insertBefore"))
+ this.insertRow(element, "before");
+ else if (Css.hasClass(element, "insertAfter"))
+ this.insertRow(element, "after");
+ else
+ this.startEditing(element);
+ },
+
+ tabNextEditor: function()
+ {
+ if (!currentTarget)
+ return;
+
+ var value = currentEditor.getValue();
+ var nextEditable = currentTarget;
+ do
+ {
+ nextEditable = !value && currentGroup
+ ? getNextOutsider(nextEditable, currentGroup)
+ : Dom.getNextByClass(nextEditable, "editable");
+ }
+ while (nextEditable && !nextEditable.offsetHeight);
+
+ this.setEditTarget(nextEditable);
+ },
+
+ tabPreviousEditor: function()
+ {
+ if (!currentTarget)
+ return;
+
+ var value = currentEditor.getValue();
+ var prevEditable = currentTarget;
+ do
+ {
+ prevEditable = !value && currentGroup
+ ? getPreviousOutsider(prevEditable, currentGroup)
+ : Dom.getPreviousByClass(prevEditable, "editable");
+ }
+ while (prevEditable && !prevEditable.offsetHeight);
+
+ this.setEditTarget(prevEditable);
+ },
+
+ insertRow: function(relative, insertWhere)
+ {
+ var group =
+ relative || Dom.getAncestorByClass(currentTarget, "editGroup") || currentTarget;
+ var value = this.stopEditing();
+
+ currentPanel = Firebug.getElementPanel(group);
+
+ currentEditor = currentPanel.getEditor(group, value);
+ if (!currentEditor)
+ currentEditor = getDefaultEditor(currentPanel);
+
+ currentGroup = currentEditor.insertNewRow(group, insertWhere);
+ if (!currentGroup)
+ return;
+
+ var editable = Css.hasClass(currentGroup, "editable")
+ ? currentGroup
+ : Dom.getNextByClass(currentGroup, "editable");
+
+ if (editable)
+ this.setEditTarget(editable);
+ },
+
+ insertRowForObject: function(relative)
+ {
+ var container = Dom.getAncestorByClass(relative, "insertInto");
+ if (container)
+ {
+ relative = Dom.getChildByClass(container, "insertBefore");
+ if (relative)
+ this.insertRow(relative, "before");
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ attachListeners: function(editor, context)
+ {
+ var win = currentTarget.ownerDocument.defaultView;
+ Events.addEventListener(win, "resize", this.onResize, true);
+ Events.addEventListener(win, "blur", this.onBlur, true);
+
+ var chrome = Firebug.chrome;
+
+ this.listeners = [
+ chrome.keyCodeListen("ESCAPE", null, Obj.bind(this.cancelEditing, this)),
+ ];
+
+ if (editor.arrowCompletion)
+ {
+ this.listeners.push(
+ chrome.keyCodeListen("UP", null, Obj.bindFixed(editor.completeValue, editor, -1)),
+ chrome.keyCodeListen("DOWN", null, Obj.bindFixed(editor.completeValue, editor, 1)),
+ chrome.keyCodeListen("UP", Events.isShift, Obj.bindFixed(editor.completeValue, editor, -largeChangeAmount)),
+ chrome.keyCodeListen("DOWN", Events.isShift, Obj.bindFixed(editor.completeValue, editor, largeChangeAmount)),
+ chrome.keyCodeListen("UP", Events.isControl, Obj.bindFixed(editor.completeValue, editor, -smallChangeAmount)),
+ chrome.keyCodeListen("DOWN", Events.isControl, Obj.bindFixed(editor.completeValue, editor, smallChangeAmount)),
+ chrome.keyCodeListen("PAGE_UP", null, Obj.bindFixed(editor.completeValue, editor, -largeChangeAmount)),
+ chrome.keyCodeListen("PAGE_DOWN", null, Obj.bindFixed(editor.completeValue, editor, largeChangeAmount)),
+ chrome.keyCodeListen("PAGE_UP", Events.isShift, Obj.bindFixed(editor.completeValue, editor, -hugeChangeAmount)),
+ chrome.keyCodeListen("PAGE_DOWN", Events.isShift, Obj.bindFixed(editor.completeValue, editor, hugeChangeAmount))
+ );
+ }
+
+ if (currentEditor.tabNavigation)
+ {
+ this.listeners.push(
+ chrome.keyCodeListen("RETURN", null, Obj.bind(this.tabNextEditor, this)),
+ chrome.keyCodeListen("RETURN", Events.isShift, Obj.bind(this.saveAndClose, this)),
+ chrome.keyCodeListen("RETURN", Events.isControl, Obj.bind(this.insertRow, this, null, "after")),
+ chrome.keyCodeListen("TAB", null, Obj.bind(this.tabNextEditor, this)),
+ chrome.keyCodeListen("TAB", Events.isShift, Obj.bind(this.tabPreviousEditor, this))
+ );
+ }
+ else if (currentEditor.multiLine)
+ {
+ this.listeners.push(
+ chrome.keyCodeListen("TAB", null, insertTab)
+ );
+ }
+ else
+ {
+ this.listeners.push(
+ chrome.keyCodeListen("RETURN", null, Obj.bindFixed(this.stopEditing, this))
+ );
+
+ if (currentEditor.tabCompletion)
+ {
+ this.listeners.push(
+ chrome.keyCodeListen("TAB", null, Obj.bind(editor.completeValue, editor, 1)),
+ chrome.keyCodeListen("TAB", Events.isShift, Obj.bind(editor.completeValue, editor, -1)),
+ chrome.keyCodeListen("UP", null, Obj.bindFixed(editor.completeValue, editor, -1, true)),
+ chrome.keyCodeListen("DOWN", null, Obj.bindFixed(editor.completeValue, editor, 1, true)),
+ chrome.keyCodeListen("UP", Events.isShift, Obj.bindFixed(editor.completeValue, editor, -largeChangeAmount)),
+ chrome.keyCodeListen("DOWN", Events.isShift, Obj.bindFixed(editor.completeValue, editor, largeChangeAmount)),
+ chrome.keyCodeListen("UP", Events.isControl, Obj.bindFixed(editor.completeValue, editor, -smallChangeAmount)),
+ chrome.keyCodeListen("DOWN", Events.isControl, Obj.bindFixed(editor.completeValue, editor, smallChangeAmount)),
+ chrome.keyCodeListen("PAGE_UP", null, Obj.bindFixed(editor.completeValue, editor, -largeChangeAmount)),
+ chrome.keyCodeListen("PAGE_DOWN", null, Obj.bindFixed(editor.completeValue, editor, largeChangeAmount)),
+ chrome.keyCodeListen("PAGE_UP", Events.isShift, Obj.bindFixed(editor.completeValue, editor, -hugeChangeAmount)),
+ chrome.keyCodeListen("PAGE_DOWN", Events.isShift, Obj.bindFixed(editor.completeValue, editor, hugeChangeAmount))
+ );
+ }
+ }
+ },
+
+ detachListeners: function(editor, context)
+ {
+ if (!this.listeners)
+ return;
+
+ var win = currentTarget.ownerDocument.defaultView;
+ Events.removeEventListener(win, "resize", this.onResize, true);
+ Events.removeEventListener(win, "blur", this.onBlur, true);
+ Events.removeEventListener(win, "input", this.onInput, true);
+
+ var chrome = Firebug.chrome;
+ if (chrome)
+ {
+ for (var i = 0; i < this.listeners.length; ++i)
+ chrome.keyIgnore(this.listeners[i]);
+ }
+
+ delete this.listeners;
+ },
+
+ onResize: function(event)
+ {
+ currentEditor.layout(true);
+ },
+
+ onBlur: function(event)
+ {
+ if (currentEditor.enterOnBlur && Dom.isAncestor(event.target, currentEditor.box))
+ this.stopEditing();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Module
+
+ initialize: function()
+ {
+ this.onResize = Obj.bindFixed(this.onResize, this);
+ this.onBlur = Obj.bind(this.onBlur, this);
+
+ Firebug.Module.initialize.apply(this, arguments);
+ },
+
+ disable: function()
+ {
+ this.stopEditing();
+ },
+
+ showContext: function(browser, context)
+ {
+ this.stopEditing();
+ },
+
+ showPanel: function(browser, panel)
+ {
+ this.stopEditing();
+ }
+});
+
+// ********************************************************************************************* //
+// BaseEditor
+
+Firebug.BaseEditor = Obj.extend(Firebug.MeasureBox,
+{
+ getInitialValue: function(target, value)
+ {
+ return value;
+ },
+
+ getValue: function()
+ {
+ },
+
+ setValue: function(value)
+ {
+ },
+
+ show: function(target, panel, value, selectionData)
+ {
+ },
+
+ hide: function()
+ {
+ },
+
+ layout: function(forceAll)
+ {
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Support for context menus within inline editors.
+
+ getContextMenuItems: function(target)
+ {
+ var items = [];
+ items.push({label: "Cut", command: Obj.bind(this.onCommand, this, "cmd_cut")});
+ items.push({label: "Copy", command: Obj.bind(this.onCommand, this, "cmd_copy")});
+ items.push({label: "Paste", command: Obj.bind(this.onCommand, this, "cmd_paste")});
+ return items;
+ },
+
+ onCommand: function(command, cmdId)
+ {
+ var browserWindow = Firebug.chrome.window;
+
+ // Use the right browser window to get the current command controller (issue 4177).
+ var controller = browserWindow.document.commandDispatcher.getControllerForCommand(cmdId);
+ var enabled = controller.isCommandEnabled(cmdId);
+ if (controller && enabled)
+ controller.doCommand(cmdId);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Editor Module listeners will get "onBeginEditing" just before this call
+
+ beginEditing: function(target, value)
+ {
+ },
+
+ // Editor Module listeners will get "onSaveEdit" just after this call
+ saveEdit: function(target, value, previousValue)
+ {
+ },
+
+ endEditing: function(target, value, cancel)
+ {
+ // Remove empty groups by default
+ return true;
+ },
+
+ cancelEditing: function(target, value)
+ {
+ },
+
+ insertNewRow: function(target, insertWhere)
+ {
+ },
+});
+
+// ********************************************************************************************* //
+// InlineEditor
+
+Firebug.InlineEditor = function(doc)
+{
+ this.initializeInline(doc);
+};
+
+with (Domplate) {
+Firebug.InlineEditor.prototype = domplate(Firebug.BaseEditor,
+{
+ enterOnBlur: true,
+
+ tag:
+ DIV({"class": "inlineEditor"},
+ INPUT({"class": "textEditorInner", type: "text",
+ oninput: "$onInput", onkeypress: "$onKeyPress", onoverflow: "$onOverflow",
+ oncontextmenu: "$onContextMenu"}
+ )
+ ),
+
+ inputTag :
+ INPUT({"class": "textEditorInner", type: "text",
+ oninput: "$onInput", onkeypress: "$onKeyPress", onoverflow: "$onOverflow"}
+ ),
+
+ expanderTag:
+ SPAN({"class": "inlineExpander", style: "-moz-user-focus:ignore;opacity:0.5"}),
+
+ initialize: function()
+ {
+ this.fixedWidth = false;
+ this.completeAsYouType = true;
+ this.tabNavigation = true;
+ this.multiLine = false;
+ this.tabCompletion = false;
+ this.arrowCompletion = true;
+ this.noWrap = true;
+ this.numeric = false;
+ },
+
+ destroy: function()
+ {
+ this.destroyInput();
+ },
+
+ initializeInline: function(doc)
+ {
+ this.box = this.tag.replace({}, doc, this);
+ this.input = this.box.firstChild;
+ this.expander = this.expanderTag.replace({}, doc, this);
+ this.initialize();
+ },
+
+ destroyInput: function()
+ {
+ // XXXjoe Need to remove input/keypress handlers to avoid leaks
+ },
+
+ getValue: function()
+ {
+ return this.input.value;
+ },
+
+ setValue: function(value)
+ {
+ // It's only a one-line editor, so new lines shouldn't be allowed
+ return this.input.value = Str.stripNewLines(value);
+ },
+
+ setSelection: function(selectionData)
+ {
+ this.input.setSelectionRange(selectionData.start, selectionData.end);
+ // Ci.nsISelectionController SELECTION_NORMAL SELECTION_ANCHOR_REGION SCROLL_SYNCHRONOUS
+ this.input.QueryInterface(Components.interfaces.nsIDOMNSEditableElement)
+ .editor.selectionController.scrollSelectionIntoView(1, 0, 2);
+ },
+
+ show: function(target, panel, value, selectionData)
+ {
+ if (FBTrace.DBG_EDITOR)
+ {
+ FBTrace.sysout("Firebug.InlineEditor.show",
+ {target: target, panel: panel, value: value, selectionData: selectionData});
+ }
+
+ Events.dispatch(panel.fbListeners, "onInlineEditorShow", [panel, this]);
+ this.target = target;
+ this.panel = panel;
+
+ this.targetOffset = Dom.getClientOffset(target);
+
+ this.originalClassName = this.box.className;
+
+ var classNames = target.className.split(" ");
+ for (var i = 0; i < classNames.length; ++i)
+ Css.setClass(this.box, "editor-" + classNames[i]);
+
+ // remove error information
+ this.box.removeAttribute('saveSuccess');
+
+ // Make the editor match the target's font style
+ Css.copyTextStyles(target, this.box);
+
+ this.setValue(value);
+
+ this.getAutoCompleter().reset();
+
+ panel.panelNode.appendChild(this.box);
+ this.input.select();
+ if (selectionData) // transfer selection to input element
+ this.setSelection(selectionData);
+
+ // Insert the "expander" to cover the target element with white space
+ if (!this.fixedWidth)
+ {
+ this.startMeasuring(target);
+
+ Css.copyBoxStyles(target, this.expander);
+ target.parentNode.replaceChild(this.expander, target);
+ Dom.collapse(target, true);
+ this.expander.parentNode.insertBefore(target, this.expander);
+ this.textSize = this.measureInputText(value);
+ }
+
+ this.updateLayout(true);
+
+ Dom.scrollIntoCenterView(this.box, null, true);
+ },
+
+ hide: function()
+ {
+ if (FBTrace.DBG_EDITOR)
+ FBTrace.sysout("Firebug.InlineEditor.hide");
+
+ this.box.className = this.originalClassName;
+
+ if (!this.fixedWidth)
+ {
+ this.stopMeasuring();
+
+ Dom.collapse(this.target, false);
+
+ if (this.expander.parentNode)
+ this.expander.parentNode.removeChild(this.expander);
+ }
+
+ if (this.box.parentNode)
+ {
+ try { this.input.setSelectionRange(0, 0); } catch (exc) {}
+ this.box.parentNode.removeChild(this.box);
+ }
+
+ delete this.target;
+ delete this.panel;
+ },
+
+ layout: function(forceAll)
+ {
+ if (!this.fixedWidth)
+ this.textSize = this.measureInputText(this.input.value);
+
+ if (forceAll)
+ this.targetOffset = Dom.getClientOffset(this.expander);
+
+ this.updateLayout(false, forceAll);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ beginEditing: function(target, value)
+ {
+ },
+
+ saveEdit: function(target, value, previousValue)
+ {
+ },
+
+ endEditing: function(target, value, cancel)
+ {
+ if (FBTrace.DBG_EDITOR)
+ {
+ FBTrace.sysout("Firebug.InlineEditor.endEditing",
+ {target: target, value: value, cancel: cancel});
+ }
+
+ // Remove empty groups by default
+ return true;
+ },
+
+ insertNewRow: function(target, insertWhere)
+ {
+ },
+
+ advanceToNext: function(target, charCode)
+ {
+ return false;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getAutoCompleteRange: function(value, offset)
+ {
+ },
+
+ getAutoCompleteList: function(preExpr, expr, postExpr)
+ {
+ return [];
+ },
+
+ getAutoCompletePropSeparator: function(range, expr, prefixOf)
+ {
+ return null;
+ },
+
+ autoCompleteAdjustSelection: function(value, offset)
+ {
+ return null;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getAutoCompleter: function()
+ {
+ if (!this.autoCompleter)
+ {
+ this.autoCompleter = new Firebug.AutoCompleter(false,
+ Obj.bind(this.getAutoCompleteRange, this),
+ Obj.bind(this.getAutoCompleteList, this),
+ Obj.bind(this.getAutoCompletePropSeparator, this),
+ Obj.bind(this.autoCompleteAdjustSelection, this));
+ }
+
+ return this.autoCompleter;
+ },
+
+ completeValue: function(amt)
+ {
+ if (this.getAutoCompleter().complete(currentPanel.context, this.input, amt, true))
+ Firebug.Editor.update(true);
+ else
+ this.incrementValue(amt);
+ },
+
+ incrementValue: function(amt)
+ {
+ var value = this.input.value;
+ var offset = this.input.selectionStart;
+ var offsetEnd = this.input.selectionEnd;
+
+ var newValue = this.doIncrementValue(value, amt, offset, offsetEnd);
+ if (!newValue)
+ return false;
+
+ this.input.value = newValue.value;
+ this.input.setSelectionRange(newValue.start, newValue.end);
+
+ Firebug.Editor.update(true);
+ return true;
+ },
+
+ incrementExpr: function(expr, amt, info)
+ {
+ var num = parseFloat(expr);
+ if (isNaN(num))
+ return null;
+
+ var m = /\d+(\.\d+)?/.exec(expr);
+ var digitPost = expr.substr(m.index+m[0].length);
+ var newValue = Math.round((num-amt)*1000)/1000; // avoid rounding errors
+
+ if (info && "minValue" in info)
+ newValue = Math.max(newValue, info.minValue);
+ if (info && "maxValue" in info)
+ newValue = Math.min(newValue, info.maxValue);
+
+ newValue = newValue.toString();
+
+ // Preserve trailing zeroes of small increments.
+ if (Math.abs(amt) < 1)
+ {
+ if (newValue.indexOf(".") === -1)
+ newValue += ".";
+ var dec = newValue.length - newValue.lastIndexOf(".") - 1;
+ var incDec = Math.abs(amt).toString().length - 2;
+ while (dec < incDec)
+ {
+ newValue += "0";
+ ++dec;
+ }
+ }
+
+ return newValue + digitPost;
+ },
+
+ doIncrementValue: function(value, amt, offset, offsetEnd, info)
+ {
+ // Try to find a number around the cursor to increment.
+ var start, end;
+ if (/^-?[0-9.]/.test(value.substring(offset, offsetEnd)) &&
+ !(info && /\d/.test(value.charAt(offset-1) + value.charAt(offsetEnd))))
+ {
+ // We have a number selected, possibly with a suffix, and we are not in
+ // the disallowed case of just part of a known number being selected.
+ // Use that number.
+ start = offset;
+ end = offsetEnd;
+ }
+ else
+ {
+ // Parse periods as belonging to the number only if we are in a known number
+ // context. (This makes incrementing the 1 in 'image1.gif' work.)
+ var pattern = "[" + (info ? "0-9." : "0-9") + "]*";
+
+ var before = new RegExp(pattern + "$").exec(value.substr(0, offset))[0].length;
+ var after = new RegExp("^" + pattern).exec(value.substr(offset))[0].length;
+ start = offset - before;
+ end = offset + after;
+
+ // Expand the number to contain an initial minus sign if it seems
+ // free-standing.
+ if (value.charAt(start-1) === "-" &&
+ (start-1 === 0 || /[ (:,='"]/.test(value.charAt(start-2))))
+ {
+ --start;
+ }
+ }
+
+ if (start !== end)
+ {
+ // Include percentages as part of the incremented number (they are
+ // common enough).
+ if (value.charAt(end) === "%")
+ ++end;
+
+ var first = value.substr(0, start);
+ var mid = value.substring(start, end);
+ var last = value.substr(end);
+ mid = this.incrementExpr(mid, amt, info);
+ if (mid !== null)
+ {
+ return {
+ value: first + mid + last,
+ start: start,
+ end: start + mid.length
+ };
+ }
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onKeyPress: function(event)
+ {
+ if (event.keyCode == KeyEvent.DOM_VK_ESCAPE && !this.completeAsYouType)
+ {
+ var reverted = this.getAutoCompleter().revert(this.input);
+ if (reverted)
+ Events.cancelEvent(event);
+ }
+ else if (event.keyCode == KeyEvent.DOM_VK_RIGHT && this.completeAsYouType)
+ {
+ if (this.getAutoCompleter().acceptCompletion(this.input))
+ Events.cancelEvent(event);
+ }
+ else if (event.charCode && this.advanceToNext(this.target, event.charCode))
+ {
+ Firebug.Editor.tabNextEditor();
+ Events.cancelEvent(event);
+ }
+ else if (this.numeric && event.charCode &&
+ !(event.ctrlKey || event.metaKey || event.altKey) &&
+ !(KeyEvent.DOM_VK_0 <= event.charCode && event.charCode <= KeyEvent.DOM_VK_9) &&
+ event.charCode !== KeyEvent.DOM_VK_INSERT && event.charCode !== KeyEvent.DOM_VK_DELETE)
+ {
+ Events.cancelEvent(event);
+ }
+ else if (event.keyCode == KeyEvent.DOM_VK_BACK_SPACE ||
+ event.keyCode == KeyEvent.DOM_VK_DELETE)
+ {
+ // If the user deletes text, don't autocomplete after the upcoming input event
+ this.ignoreNextInput = true;
+ }
+ },
+
+ onOverflow: function()
+ {
+ this.updateLayout(false, false, 3);
+ },
+
+ onInput: function()
+ {
+ if (this.ignoreNextInput)
+ {
+ this.ignoreNextInput = false;
+ this.getAutoCompleter().reset();
+ }
+ else if (this.completeAsYouType)
+ this.getAutoCompleter().complete(currentPanel.context, this.input, 0, false);
+ else
+ this.getAutoCompleter().reset();
+
+ Firebug.Editor.update();
+ },
+
+ onContextMenu: function(event)
+ {
+ Events.cancelEvent(event);
+
+ var popup = Firebug.chrome.$("fbInlineEditorPopup");
+ Dom.eraseNode(popup);
+
+ var target = event.target;
+ var items = this.getContextMenuItems(target);
+ if (items)
+ Menu.createMenuItems(popup, items);
+
+ if (!popup.firstChild)
+ return false;
+
+ popup.openPopupAtScreen(event.screenX, event.screenY, true);
+ return true;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ updateLayout: function(initial, forceAll, extraWidth)
+ {
+ if (this.fixedWidth)
+ {
+ this.box.style.left = this.targetOffset.x + "px";
+ this.box.style.top = this.targetOffset.y + "px";
+
+ var w = this.target.offsetWidth;
+ var h = this.target.offsetHeight;
+ this.input.style.width = w + "px";
+ this.input.style.height = (h-3) + "px";
+ }
+ else
+ {
+ this.expander.textContent = this.input.value;
+
+ var clR = this.expander.getClientRects(),
+ wasWrapped = this.wrapped, inputWidth = Infinity;
+
+ if(clR.length == 1)
+ {
+ this.wrapped = false;
+ }
+ else if (clR.length == 2)
+ {
+ var w1 = clR[0].width;
+ var w2 = clR[1].width;
+
+ if (w2 > w1){
+ this.wrapped = true;
+ inputWidth = w2;
+ } else
+ this.wrapped = false;
+ }
+ else if (clR.length == 3)
+ {
+ this.wrapped = true;
+ if (clR[2].width > 50)
+ inputWidth = clR[1].width;
+ }
+ else if(clR.length > 3)
+ {
+ this.wrapped = true;
+ }
+
+ if(this.wrapped)
+ {
+ var fixupL = clR[1].left - clR[0].left;
+ fixupT = clR[1].top - clR[0].top;
+ }
+ else
+ {
+ var fixupL = 0, fixupT = 0;
+ var approxTextWidth = this.textSize.width;
+ // Make the input one character wider than the text value so that
+ // typing does not ever cause the textbox to scroll
+ var charWidth = this.measureInputText('m').width;
+
+ // Sometimes we need to make the editor a little wider, specifically when
+ // an overflow happens, otherwise it will scroll off some text on the left
+ if (extraWidth)
+ charWidth *= extraWidth;
+
+ var inputWidth = approxTextWidth + charWidth;
+ }
+
+
+ var container = currentPanel.panelNode;
+ var maxWidth = container.clientWidth - this.targetOffset.x - fixupL +
+ container.scrollLeft-6;
+
+ if(inputWidth > maxWidth)
+ inputWidth = maxWidth;
+
+ if (forceAll || initial || this.wrapped != wasWrapped)
+ {
+ this.box.style.left = (this.targetOffset.x + fixupL) + "px";
+ this.box.style.top = (this.targetOffset.y + fixupT) + "px";
+ }
+ this.input.style.width = inputWidth + "px";
+ }
+
+ if (forceAll)
+ Dom.scrollIntoCenterView(this.box, null, true);
+ }
+});
+};
+
+// ********************************************************************************************* //
+// Autocompletion
+
+Firebug.AutoCompleter = function(caseSensitive, getRange, evaluator, getNewPropSeparator,
+ adjustSelectionOnAccept)
+{
+ var candidates = null;
+ var suggestedDefault = null;
+ var lastValue = "";
+ var originalOffset = -1;
+ var originalValue = null;
+ var lastExpr = null;
+ var lastOffset = -1;
+ var exprOffset = 0;
+ var lastIndex = null;
+ var preExpr = null;
+ var postExpr = null;
+
+ this.revert = function(textBox)
+ {
+ if (originalOffset != -1)
+ {
+ textBox.value = lastValue = originalValue;
+ textBox.setSelectionRange(originalOffset, originalOffset);
+
+ this.reset();
+ return true;
+ }
+ else
+ {
+ this.reset();
+ return false;
+ }
+ };
+
+ this.reset = function()
+ {
+ candidates = null;
+ suggestedDefault = null;
+ originalOffset = -1;
+ originalValue = null;
+ lastExpr = null;
+ lastOffset = 0;
+ exprOffset = 0;
+ lastIndex = null;
+ };
+
+ this.acceptCompletion = function(textBox)
+ {
+ if (!adjustSelectionOnAccept)
+ return false;
+
+ var value = textBox.value;
+ var offset = textBox.selectionStart;
+ var offsetEnd = textBox.selectionEnd;
+ if (!candidates || value !== lastValue || offset !== lastOffset || offset >= offsetEnd)
+ return false;
+
+ var ind = adjustSelectionOnAccept(value, offsetEnd);
+ if (ind === null)
+ return false;
+
+ textBox.setSelectionRange(ind, ind);
+ return true;
+ };
+
+ this.complete = function(context, textBox, cycle)
+ {
+ if (!textBox.value && !cycle)
+ {
+ // Don't complete an empty field.
+ return false;
+ }
+
+ var offset = textBox.selectionStart; // defines the cursor position
+
+ var found = this.pickCandidates(textBox, context, cycle);
+
+ if (!found)
+ this.reset();
+
+ return found;
+ };
+
+ /**
+ * returns true if candidate list was created
+ */
+ this.pickCandidates = function(textBox, context, cycle)
+ {
+ var value = textBox.value;
+ var offset = textBox.selectionStart;
+
+ if (!candidates || !cycle || value != lastValue || offset != lastOffset)
+ {
+ originalOffset = lastOffset = offset;
+ originalValue = lastValue = value;
+
+ // Find the part of the string that is being completed
+ var range = getRange(value, lastOffset);
+ if (!range)
+ range = {start: 0, end: value.length};
+
+ preExpr = value.substr(0, range.start);
+ lastExpr = value.substring(range.start, range.end);
+ postExpr = value.substr(range.end);
+ exprOffset = range.start;
+
+ if (FBTrace.DBG_EDITOR)
+ {
+ var sep = (value.indexOf("|") > -1) ? "^" : "|";
+ FBTrace.sysout(preExpr+sep+lastExpr+sep+postExpr + " offset: " + lastOffset);
+ }
+
+ var search = false;
+
+ // Check if the cursor is somewhere in the middle of the expression
+ if (lastExpr && offset != range.end)
+ {
+ if (cycle)
+ {
+ // Complete by resetting the completion list to a more complete
+ // list of candidates, finding our current position in it, and
+ // cycling from there.
+ search = true;
+ lastOffset = range.start;
+ }
+ else if (offset != range.start+1)
+ {
+ // Nothing new started, just fail.
+ return false;
+ }
+ else
+ {
+ // Try to parse the typed character as the start of a new
+ // property, moving the rest of lastExpr over into postExpr
+ // (possibly with a separator added). If there is no support
+ // for prefix-completions, fail. If the character could
+ // plausibly be part of a leftwards expansion, fail.
+ // Note that this does not show unless there is a completion.
+ var moveOver = lastExpr.substr(1);
+ lastExpr = lastExpr.charAt(0);
+ range.start = offset - 1;
+ range.end = offset;
+
+ var cand = evaluator(preExpr, lastExpr, postExpr, range, false, context, {});
+ var imov = (caseSensitive ? moveOver : moveOver.toLowerCase());
+ for (var i = 0; i < cand.length; ++i)
+ {
+ var c = cand[i];
+ if (c.length <= imov.length || c.charAt(0) !== lastExpr)
+ continue;
+ c = (caseSensitive ? c : c.toLowerCase());
+ if (c.substr(-imov.length) === imov)
+ return false;
+ }
+
+ var sep = getNewPropSeparator(range, lastExpr, moveOver);
+ if (sep === null)
+ return false;
+ if (!Str.hasPrefix(moveOver, sep))
+ moveOver = sep + moveOver;
+
+ postExpr = moveOver + postExpr;
+ }
+ }
+
+ // Don't complete globals unless cycling.
+ if (!cycle && !lastExpr)
+ return false;
+
+ var out = {};
+ var values = evaluator(preExpr, lastExpr, postExpr, range, search, context, out);
+ suggestedDefault = out.suggestion || null;
+
+ if (search)
+ this.setCandidatesBySearchExpr(lastExpr, values);
+ else
+ this.setCandidatesByExpr(lastExpr, values);
+ }
+
+ if (!candidates.length)
+ return false;
+
+ this.adjustLastIndex(cycle);
+ var completion = candidates[lastIndex];
+
+ // Adjust the case of the completion - when editing colors, 'd' should
+ // be completed into 'darkred', not 'darkRed'.
+ var userTyped = lastExpr.substr(0, lastOffset-exprOffset);
+ completion = this.convertCompletionCase(completion, userTyped);
+
+ var line = preExpr + completion + postExpr;
+ var offsetEnd = exprOffset + completion.length;
+
+ // Show the completion
+ lastValue = textBox.value = line;
+ textBox.setSelectionRange(lastOffset, offsetEnd);
+
+ return true;
+ };
+
+ this.setCandidatesByExpr = function(expr, values)
+ {
+ // Filter the list of values to those which begin with expr. We
+ // will then go on to complete the first value in the resulting list.
+ candidates = [];
+
+ var findExpr = (caseSensitive ? expr : expr.toLowerCase());
+ for (var i = 0; i < values.length; ++i)
+ {
+ var name = values[i];
+ var testName = (caseSensitive ? name : name.toLowerCase());
+
+ if (Str.hasPrefix(testName, findExpr))
+ candidates.push(name);
+ }
+
+ lastIndex = null;
+ };
+
+ this.setCandidatesBySearchExpr = function(expr, values)
+ {
+ var searchIndex = -1;
+
+ var findExpr = (caseSensitive ? expr : expr.toLowerCase());
+
+ // Find the first instance of expr in the values list. We
+ // will then complete the string that is found.
+ for (var i = 0; i < values.length; ++i)
+ {
+ var name = values[i];
+ if (!caseSensitive)
+ name = name.toLowerCase();
+
+ if (Str.hasPrefix(name, findExpr))
+ {
+ searchIndex = i;
+ break;
+ }
+ }
+
+ if (searchIndex == -1)
+ {
+ // Nothing found, so there's nothing to complete to
+ candidates = [];
+ return;
+ }
+
+ candidates = Arr.cloneArray(values);
+ lastIndex = searchIndex;
+ };
+
+ this.adjustLastIndex = function(cycle)
+ {
+ if (!cycle)
+ {
+ // We have a valid lastIndex but we are not cycling, so reset it
+ lastIndex = this.pickDefaultCandidate();
+ }
+ else if (lastIndex === null)
+ {
+ // There is no old lastIndex, so use the default
+ lastIndex = this.pickDefaultCandidate();
+ }
+ else
+ {
+ // cycle
+ lastIndex += cycle;
+ if (lastIndex >= candidates.length)
+ lastIndex = 0;
+ else if (lastIndex < 0)
+ lastIndex = candidates.length - 1;
+ }
+ };
+
+ this.convertCompletionCase = function(completion, userTyped)
+ {
+ var preCompletion = completion.substr(0, userTyped.length);
+ if (preCompletion === userTyped)
+ {
+ // Trust the completion to be correct.
+ return completion;
+ }
+ else
+ {
+ // If the typed string is entirely in one case, use that.
+ if (userTyped === userTyped.toLowerCase())
+ return completion.toLowerCase();
+ if (userTyped === userTyped.toUpperCase())
+ return completion.toUpperCase();
+
+ // The typed string mixes case in some odd way; use the rest of
+ // the completion as-is.
+ return userTyped + completion.substr(userTyped.length);
+ }
+ };
+
+ this.pickDefaultCandidate = function()
+ {
+ // If we have a suggestion and it's in the candidate list, use that
+ if (suggestedDefault)
+ {
+ var ind = candidates.indexOf(suggestedDefault);
+ if (ind !== -1)
+ return ind;
+ }
+
+ var userTyped = lastExpr.substr(0, lastOffset-exprOffset);
+ var utLen = userTyped.length;
+
+ // Otherwise, default to the shortest candidate that matches the case,
+ // or the shortest one that doesn't
+ var pick = -1, pcand, pcaseState;
+ for (var i = 0; i < candidates.length; i++)
+ {
+ var cand = candidates[i];
+ var caseState = (cand.substr(0, utLen) === userTyped ? 1 : 0);
+ if (pick === -1 ||
+ caseState > pcaseState ||
+ (caseState === pcaseState && cand.length < pcand.length))
+ {
+ pick = i;
+ pcand = cand;
+ pcaseState = caseState;
+ }
+ }
+ return pick;
+ };
+};
+
+// ********************************************************************************************* //
+// Local Helpers
+
+function getDefaultEditor(panel)
+{
+ if (!defaultEditor)
+ {
+ var doc = panel.document;
+ defaultEditor = new Firebug.InlineEditor(doc);
+ }
+
+ return defaultEditor;
+}
+
+/**
+ * An outsider is the first element matching the stepper element that
+ * is not an child of group. Elements tagged with insertBefore or insertAfter
+ * classes are also excluded from these results unless they are the sibling
+ * of group, relative to group's parent editGroup. This allows for the proper insertion
+ * rows when groups are nested.
+ */
+function getOutsider(element, group, stepper)
+{
+ var parentGroup = Dom.getAncestorByClass(group.parentNode, "editGroup");
+ var next;
+ do
+ {
+ next = stepper(next || element);
+ }
+ while (Dom.isAncestor(next, group) || isGroupInsert(next, parentGroup));
+
+ return next;
+}
+
+function isGroupInsert(next, group)
+{
+ return (!group || Dom.isAncestor(next, group))
+ && (Css.hasClass(next, "insertBefore") || Css.hasClass(next, "insertAfter"));
+}
+
+function getNextOutsider(element, group)
+{
+ return getOutsider(element, group, Obj.bind(Dom.getNextByClass, Dom, "editable"));
+}
+
+function getPreviousOutsider(element, group)
+{
+ return getOutsider(element, group, Obj.bind(Dom.getPreviousByClass, Dom, "editable"));
+}
+
+function getInlineParent(element)
+{
+ var lastInline = element;
+ for (; element; element = element.parentNode)
+ {
+ var s = element.ownerDocument.defaultView.getComputedStyle(element, "");
+ if (s.display != "inline")
+ return lastInline;
+ else
+ lastInline = element;
+ }
+ return null;
+}
+
+function insertTab()
+{
+ Dom.insertTextIntoElement(currentEditor.input, Firebug.Editor.tabCharacter);
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.Editor);
+
+return Firebug.Editor;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/editor/editorSelector.js b/content/firebug/editor/editorSelector.js
index d214c44..726bcee 100644
--- a/content/firebug/editor/editorSelector.js
+++ b/content/firebug/editor/editorSelector.js
@@ -1,115 +1,115 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/events",
-],
-function(Firebug, Events) {
-
-// ********************************************************************************************* //
-// Reusable code for modules that support editing
-
-Firebug.EditorSelector =
-{
- // Override for each module
- getEditorOptionKey: function()
- {
- return "cssEditMode";
- },
-
- editors: {},
-
- registerEditor: function(name, editor)
- {
- this.editors[name] = editor;
- },
-
- unregisterEditor: function(name, editor)
- {
- delete this.editors[name];
- },
-
- getEditorByName: function(name)
- {
- return this.editors[name];
- },
-
- getEditorsNames: function()
- {
- var names = [];
- for (var p in this.editors)
- {
- if (this.editors.hasOwnProperty(p))
- names.push(p);
- }
- return names;
- },
-
- setCurrentEditorName: function(name)
- {
- this.currentEditorName = name;
- Firebug.Options.set(this.getEditorOptionKey(), name);
- },
-
- getCurrentEditorName: function()
- {
- if (!this.currentEditorName)
- this.currentEditorName = Firebug.Options.get(this.getEditorOptionKey());
-
- return this.currentEditorName;
- },
-
- getCurrentEditor: function()
- {
- return this.getEditorByName(this.getCurrentEditorName());
- },
-
- onEditMode: function(event, menuitem)
- {
- var mode = menuitem.getAttribute("mode");
- if (mode)
- this.setCurrentEditorName(mode);
-
- this.updateEditButton();
- Events.cancelEvent(event);
- },
-
- updateEditButton: function()
- {
- // Update label and tooltip text of the edit button.
- var mode = this.getCurrentEditorName();
- if (!mode)
- return;
-
- var menuitem = Firebug.chrome.$("menu_firebug_" + this.getEditorOptionKey() + mode);
- var command = Firebug.chrome.$("cmd_firebug_toggle" + this.getEditorOptionKey());
- command.setAttribute("label", menuitem.label);
- command.setAttribute("tooltiptext", menuitem.tooltipText);
- },
-
- onOptionsShowing: function(popup)
- {
- var mode = this.getCurrentEditorName();
- if (!mode)
- return;
-
- for (var child = popup.firstChild; child; child = child.nextSibling)
- {
- if (child.localName == "menuitem")
- {
- if (child.id == "menu_firebug_" + this.getEditorOptionKey()+mode)
- child.setAttribute("checked", true);
- else
- child.removeAttribute("checked");
- }
- }
- },
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return Firebug.EditorSelector;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/events",
+],
+function(Firebug, Events) {
+
+// ********************************************************************************************* //
+// Reusable code for modules that support editing
+
+Firebug.EditorSelector =
+{
+ // Override for each module
+ getEditorOptionKey: function()
+ {
+ return "cssEditMode";
+ },
+
+ editors: {},
+
+ registerEditor: function(name, editor)
+ {
+ this.editors[name] = editor;
+ },
+
+ unregisterEditor: function(name, editor)
+ {
+ delete this.editors[name];
+ },
+
+ getEditorByName: function(name)
+ {
+ return this.editors[name];
+ },
+
+ getEditorsNames: function()
+ {
+ var names = [];
+ for (var p in this.editors)
+ {
+ if (this.editors.hasOwnProperty(p))
+ names.push(p);
+ }
+ return names;
+ },
+
+ setCurrentEditorName: function(name)
+ {
+ this.currentEditorName = name;
+ Firebug.Options.set(this.getEditorOptionKey(), name);
+ },
+
+ getCurrentEditorName: function()
+ {
+ if (!this.currentEditorName)
+ this.currentEditorName = Firebug.Options.get(this.getEditorOptionKey());
+
+ return this.currentEditorName;
+ },
+
+ getCurrentEditor: function()
+ {
+ return this.getEditorByName(this.getCurrentEditorName());
+ },
+
+ onEditMode: function(event, menuitem)
+ {
+ var mode = menuitem.getAttribute("mode");
+ if (mode)
+ this.setCurrentEditorName(mode);
+
+ this.updateEditButton();
+ Events.cancelEvent(event);
+ },
+
+ updateEditButton: function()
+ {
+ // Update label and tooltip text of the edit button.
+ var mode = this.getCurrentEditorName();
+ if (!mode)
+ return;
+
+ var menuitem = Firebug.chrome.$("menu_firebug_" + this.getEditorOptionKey() + mode);
+ var command = Firebug.chrome.$("cmd_firebug_toggle" + this.getEditorOptionKey());
+ command.setAttribute("label", menuitem.label);
+ command.setAttribute("tooltiptext", menuitem.tooltipText);
+ },
+
+ onOptionsShowing: function(popup)
+ {
+ var mode = this.getCurrentEditorName();
+ if (!mode)
+ return;
+
+ for (var child = popup.firstChild; child; child = child.nextSibling)
+ {
+ if (child.localName == "menuitem")
+ {
+ if (child.id == "menu_firebug_" + this.getEditorOptionKey()+mode)
+ child.setAttribute("checked", true);
+ else
+ child.removeAttribute("checked");
+ }
+ }
+ },
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return Firebug.EditorSelector;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/firebug.css b/content/firebug/firebug.css
index 285c343..44afc9d 100644
--- a/content/firebug/firebug.css
+++ b/content/firebug/firebug.css
@@ -1,423 +1,423 @@
-/* See license.txt for terms of usage */
-
- at import "chrome://firebug/skin/firebug.css";
- at import "chrome://firebug-os/skin/firebug.css";
-
-window[chromehidden~="toolbar"] #fbToolbar {
- display: -moz-box;
-}
-
-/*************************************************************************************************/
-/* browser.xul & browserOverlayWithFrame */
-
-#fbMainFrame {
- height: 270px;
- width: 370px;
-}
-
-/*************************************************************************************************/
-/* Firebug Splitter */
-
-#fbContentSplitter[dir=reverse]{
- transform: scale(-1, -1);
-}
-
-#fbContentSplitter[orient=vertical] {
- border-top: 1px solid !important;
- border-bottom: none;
- min-height: 5px;
- max-height: 5px;
- background-color: -moz-dialog;
-}
-
-#fbContentSplitter[orient=horizontal] {
- border-right: 1px solid !important;
- border-left: none;
- min-width: 5px;
- max-width: 5px;
- background-color: -moz-dialog;
-}
-
-/*************************************************************************************************/
-/* FirebugFrame.xul */
-
-#fbContentBox {
- -moz-binding: url("firefox/bindings.xml#initializer");
- height: 270px;
- background-color: -moz-dialog;
-}
-
-/*************************************************************************************************/
-/* FirebugOverlay.xul */
-
-textbox#fbCommandEditor {
- -moz-binding: url("firefox/bindings.xml#commandEditor");
-}
-
-#fbCommandEditor > textbox {
- padding: 0;
- margin: 0;
-}
-
-.fbCommandLineCompletionPanel {
- border: 1px solid #BEBEBE;
- border-radius: 5px;
-
- /* Remove xul panel shadow */
- -moz-window-shadow: none !important;
-}
-
-.fbCommandLineCompletions {
- cursor: default;
- font-family: monospace;
- white-space: pre;
- background-color: white;
- border: 1px solid #BEBEBE;
- border-radius: 3px;
- margin: 2px;
-}
-
-.fbPopupTitle {
- font-family: Lucida Grande, Tahoma, sans-serif;
- padding: 2px 18px;
- background-color: LightYellow;
- border-bottom: 1px solid #BEBEBE;
- color: #666666;
-}
-
-.fbPopupSeparator {
- font-family: Lucida Grande, Tahoma, sans-serif;
- padding: 1px 18px;
- color: #646464;
- /*border-top: 1px solid #BEBEBE;
- border-bottom: 1px solid #BEBEBE;*/
- margin: 3px 0 3px 0;
- background-color: #F0F0F0;
-}
-
-/* The first separator doesn't need margin-top */
-.fbPopupTitle + .fbPopupSeparator {
- margin-top: 0;
-}
-
-.fbPopupEntry {
- padding: 0 5px 0 5px;
-}
-
-.completionText {
- color: #666666;
- margin-right: 1px;
-}
-[selected="true"] > .completionText {
- background-color: highlight;
- border-color: highlight;
- color: highlighttext !important;
-}
-
-textbox[type="fbSearchBox"] {
- -moz-binding: url("firefox/bindings.xml#searchBox");
-}
-textbox[type="fbSearchBox"] .panelFocusBound {
- -moz-user-focus: normal;
-}
-
-.useA11y textbox[type="fbSearchBox"] .panelFocusBound {
- -moz-user-focus: ignore;
-}
-
-panelBar {
- -moz-binding: url("firefox/bindings.xml#panelBar");
- -moz-box-orient: vertical;
-}
-
-/*************************************************************************************************/
-
-panelStatus {
- -moz-binding: url("firefox/bindings.xml#panelStatus");
-}
-
-#fbCallstack {
- -moz-binding: url("firefox/bindings.xml#panelStatus");
-}
-
-/*************************************************************************************************/
-/* Location List */
-
-#fbLocationList {
- -moz-binding: url("firefox/bindings.xml#panelFileList");
-}
-
-.fbLocationListFilter {
- -moz-binding: url("firefox/bindings.xml#panelFileListFilter");
- background: white;
- border: 1px solid rgb(150, 150, 157);
- padding: 3px;
- color: gray;
- font-weight: normal;
-}
-
-.fbLocationListFilter[match="false"] {
- background-color: rgb(255, 102, 102);
-}
-
-.fbLocationListFilter[keyword="true"] {
- color: black;
-}
-
-/*************************************************************************************************/
-
-#fbStatusText {
- visibility: collapse;
-}
-
-#fbStatusBar[showErrors] #fbStatusText {
- visibility: visible;
-}
-
-#fbToolbar[moz-collapsed="true"] {
- /* Prevent full-screen from hiding toolbar */
- visibility: visible;
-}
-
-panelTab {
- -moz-binding: url("firefox/bindings.xml#panelTab");
-}
-
-/* Lightup the text, eg on the Script tab when stopped on a breakpoint */
-panelTab[highlight="true"] {
- color: #FF9933;
-}
-
-/*************************************************************************************************/
-/* Mini-menu on the panel tab */
-
-panelTabMenu {
- -moz-binding: url("firefox/bindings.xml#panelTabMenu");
-}
-
-panelTab > panelTabMenu .menuTarget {
- visibility: collapse;
-}
-
-panelTab[selected="true"] > panelTabMenu .menuTarget,
-panelTab:focus > panelTabMenu .menuTarget {
- background: url(chrome://firebug-os/skin/optionsMenuTarget.png) no-repeat center;
- width: 11px;
- height: 10px;
- vertical-align: middle;
- visibility: visible;
-}
-
-panelTab[selected="true"]:hover > panelTabMenu .menuTarget {
- background-image: url(chrome://firebug-os/skin/optionsMenuTargetHover.png);
-}
-
-panelTab > panelTabMenu .menuPopup:-moz-locale-dir(rtl) {
- direction: rtl;
-}
-
-/*************************************************************************************************/
-/* Detached Firebug Window */
-
-#fbResumeBox > #fbWindowButtons {
- padding-right: 4px;
-}
-
-/*************************************************************************************************/
-/* Focus related */
-
-/* Make the following selectors part of the tab order */
-
-/* current tab */
-.useA11y panelTab[selected="true"],
-/* Firebug Menu */
-.useA11y #fbFirebugMenu,
-/* Status bar icon*/
-#fbStatusBar.useA11y {
- -moz-user-focus: normal;
-}
-
-/* Toolbar buttons in a visible toolbar group (usually hbox) */
-.useA11y .innerToolbar *:not([collapsed="true"]) toolbarbutton,
-.useA11y .innerToolbar > toolbarbutton{
- -moz-user-focus: normal;
-}
-
-/* Now override the previous selector and only leave the first button of each group in the tab order*/
-.useA11y .innerToolbar *:not([collapsed="true"]) toolbarbutton ~ toolbarbutton,
-.useA11y .innerToolbar > toolbarbutton ~ toolbarbutton{
- -moz-user-focus: ignore;
-}
-
-/* remove toolbar groups from the tab order if they have .noTabStop and are NOT the first visible group in the toolbar */
-.useA11y .innerToolbar *[collapsed="false"] ~ *.noTabStop toolbarbutton,
-.useA11y .innerToolbar toolbarbutton.noTabStop,
-/*fbNetButtonsFilter situation, added extra id for specificity*/
-.useA11y .innerToolbar toolbarbutton:not([collapsed="true"]) ~ *.noTabStop toolbarbutton {
- -moz-user-focus: ignore;
-}
-
-/* Buttons in a group with .hasTabOrder (this class is briefly added during right/left arrow key event handlers in a11y.js.*/
-.innerToolbar.hasTabOrder toolbarbutton {
- -moz-user-focus: normal !important;
-}
-
-.useA11y #fbPanelBar1 toolbarbutton:focus,
-.useA11y #fbPanelBar1 textbox[focused],
-#fbStatusBar.useA11y:focus,
-.useA11y panelTab:focus,
-.useA11y .searchOptionsMenu .a11yFocus:focus {
- outline: 2px solid #FF9933;
- outline-offset: -2px;
- -moz-outline-radius: 5px;
-}
-
-.useA11y panelTab:focus > label {
- text-decoration: underline;
- color: black;
-}
-/**** end focus related ****/
-
-/*************************************************************************************************/
-/* panelFileList */
-
-.toolbarbutton-text.title[value] {
- padding-right: 5px;
-}
-
-#fbLocationList {
- height: 20px;
-}
-
-#fbLocationList.noTabStop > menupopup > arrowscrollbox > scrollbox,
-#fbCommandHistory > arrowscrollbox > scrollbox {
- overflow-y: auto;
-}
-
-/* Evaluated scripts can take a lot of horizontal space on the toolbar, so this is the limit */
-#fbLocationList {
- max-width: 250px;
-}
-
-#fbLocationList .toolbarbutton-text {
- color: #000000;
-}
-
-/*************************************************************************************************/
-/* CSS Buttons */
-
-#fbScriptFilterMenu .toolbarbutton-text {
- color: #000000;
-}
-
-/*************************************************************************************************/
-/* Script Buttons */
-
-#fbToggleCSSEditing .toolbarbutton-text {
- padding-top: 1px;
- padding-left: 2px;
- padding-right: 2px;
- color: #000000;
-}
-
-/*************************************************************************************************/
-/* Quick Info Box */
-
-#fbQuickInfoPanel {
- border: 1px solid threedshadow;
- background-color: white;
- opacity: 0.9;
- font-family: monospace;
- font-size: 11px;
- padding-bottom: 5px;
- cursor: move;
-}
-
-.fbQuickInfoBoxTitle {
- font-family: Lucida Grande, sans-serif;
- font-size: 11px;
- font-weight: bold;
- margin-top: 8px;
- margin-bottom: 0;
- cursor: move;
-}
-
-.fbQuickInfoName {
- color: DarkGreen;
- margin-bottom: 0;
- -moz-margin-end: 0;
- cursor: move;
-}
-
-.fbQuickInfoValue {
- color: DarkBlue;
- margin-bottom: 0;
- -moz-margin-start: 0;
- cursor: move;
-}
-
-/*************************************************************************************************/
-/* Don't let Personas to destroy Firebug's CSS */
-
-#fbContentBox:-moz-lwtheme {
- text-shadow: none !important;
- color: -moz-dialogtext;
-}
-
-/*************************************************************************************************/
-
- at keyframes armedBlinking {
- 100% {
- text-shadow: 1px 1px 2px darkGray, 0px 0px 1em orange, 0px 0px 0.2em orange;
- }
-}
-
-panelTab[breakOnNextArmed="true"] > .panelTab-text {
- animation: armedBlinking 0.8s steps(9, end) infinite alternate;
-}
-
-panelTab.highlighted {
- text-shadow: 1px 1px 2px darkGray, 0px 0px 1em orange, 0px 0px 0.2em orange !important;
- transition-property: text-shadow;
- transition-duration: 1.4s;
-}
-
-panelTab[aria-disabled='true'] {
- color: graytext !important;
-}
-
-/*************************************************************************************************/
-/* Scrollable TabBar + TabList */
-
-panelBarArrowscrollbox {
- -moz-binding: url("firefox/bindings.xml#panelBarArrowscrollbox");
-}
-
-panelBarTabList {
- -moz-binding: url("firefox/bindings.xml#panelBarTabList");
-}
-
-.panelBarTabListMenuItem {
- -moz-binding: url("firefox/bindings.xml#panelBarTabListMenuItem");
-}
-
-/*************************************************************************************************/
-/* splitmenu */
-
-menuitem.split-menuitem-item[_moz-menuactive="true"], .split-menu-right-image[_moz-menuactive="true"] {
- background-color: -moz-menuhover;
- color: -moz-menuhovertext;
-}
-
-.split-menu-right-image {
- -moz-appearance: menuitem;
- -moz-box-pack: end;
-}
-
-menu[type=splitmenu] {
- -moz-binding: url("firefox/bindings.xml#splitmenu");
- -moz-box-orient: horizontal;
- -moz-appearance: none !important;
- color: menutext;
- background-color: transparent !important;
-}
+/* See license.txt for terms of usage */
+
+ at import "chrome://firebug/skin/firebug.css";
+ at import "chrome://firebug-os/skin/firebug.css";
+
+window[chromehidden~="toolbar"] #fbToolbar {
+ display: -moz-box;
+}
+
+/*************************************************************************************************/
+/* browser.xul & browserOverlayWithFrame */
+
+#fbMainFrame {
+ height: 270px;
+ width: 370px;
+}
+
+/*************************************************************************************************/
+/* Firebug Splitter */
+
+#fbContentSplitter[dir=reverse]{
+ transform: scale(-1, -1);
+}
+
+#fbContentSplitter[orient=vertical] {
+ border-top: 1px solid !important;
+ border-bottom: none;
+ min-height: 5px;
+ max-height: 5px;
+ background-color: -moz-dialog;
+}
+
+#fbContentSplitter[orient=horizontal] {
+ border-right: 1px solid !important;
+ border-left: none;
+ min-width: 5px;
+ max-width: 5px;
+ background-color: -moz-dialog;
+}
+
+/*************************************************************************************************/
+/* FirebugFrame.xul */
+
+#fbContentBox {
+ -moz-binding: url("firefox/bindings.xml#initializer");
+ height: 270px;
+ background-color: -moz-dialog;
+}
+
+/*************************************************************************************************/
+/* FirebugOverlay.xul */
+
+textbox#fbCommandEditor {
+ -moz-binding: url("firefox/bindings.xml#commandEditor");
+}
+
+#fbCommandEditor > textbox {
+ padding: 0;
+ margin: 0;
+}
+
+.fbCommandLineCompletionPanel {
+ border: 1px solid #BEBEBE;
+ border-radius: 5px;
+
+ /* Remove xul panel shadow */
+ -moz-window-shadow: none !important;
+}
+
+.fbCommandLineCompletions {
+ cursor: default;
+ font-family: monospace;
+ white-space: pre;
+ background-color: white;
+ border: 1px solid #BEBEBE;
+ border-radius: 3px;
+ margin: 2px;
+}
+
+.fbPopupTitle {
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ padding: 2px 18px;
+ background-color: LightYellow;
+ border-bottom: 1px solid #BEBEBE;
+ color: #666666;
+}
+
+.fbPopupSeparator {
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ padding: 1px 18px;
+ color: #646464;
+ /*border-top: 1px solid #BEBEBE;
+ border-bottom: 1px solid #BEBEBE;*/
+ margin: 3px 0 3px 0;
+ background-color: #F0F0F0;
+}
+
+/* The first separator doesn't need margin-top */
+.fbPopupTitle + .fbPopupSeparator {
+ margin-top: 0;
+}
+
+.fbPopupEntry {
+ padding: 0 5px 0 5px;
+}
+
+.completionText {
+ color: #666666;
+ margin-right: 1px;
+}
+[selected="true"] > .completionText {
+ background-color: highlight;
+ border-color: highlight;
+ color: highlighttext !important;
+}
+
+textbox[type="fbSearchBox"] {
+ -moz-binding: url("firefox/bindings.xml#searchBox");
+}
+textbox[type="fbSearchBox"] .panelFocusBound {
+ -moz-user-focus: normal;
+}
+
+.useA11y textbox[type="fbSearchBox"] .panelFocusBound {
+ -moz-user-focus: ignore;
+}
+
+panelBar {
+ -moz-binding: url("firefox/bindings.xml#panelBar");
+ -moz-box-orient: vertical;
+}
+
+/*************************************************************************************************/
+
+panelStatus {
+ -moz-binding: url("firefox/bindings.xml#panelStatus");
+}
+
+#fbCallstack {
+ -moz-binding: url("firefox/bindings.xml#panelStatus");
+}
+
+/*************************************************************************************************/
+/* Location List */
+
+#fbLocationList {
+ -moz-binding: url("firefox/bindings.xml#panelFileList");
+}
+
+.fbLocationListFilter {
+ -moz-binding: url("firefox/bindings.xml#panelFileListFilter");
+ background: white;
+ border: 1px solid rgb(150, 150, 157);
+ padding: 3px;
+ color: gray;
+ font-weight: normal;
+}
+
+.fbLocationListFilter[match="false"] {
+ background-color: rgb(255, 102, 102);
+}
+
+.fbLocationListFilter[keyword="true"] {
+ color: black;
+}
+
+/*************************************************************************************************/
+
+#fbStatusText {
+ visibility: collapse;
+}
+
+#fbStatusBar[showErrors] #fbStatusText {
+ visibility: visible;
+}
+
+#fbToolbar[moz-collapsed="true"] {
+ /* Prevent full-screen from hiding toolbar */
+ visibility: visible;
+}
+
+panelTab {
+ -moz-binding: url("firefox/bindings.xml#panelTab");
+}
+
+/* Lightup the text, eg on the Script tab when stopped on a breakpoint */
+panelTab[highlight="true"] {
+ color: #FF9933;
+}
+
+/*************************************************************************************************/
+/* Mini-menu on the panel tab */
+
+panelTabMenu {
+ -moz-binding: url("firefox/bindings.xml#panelTabMenu");
+}
+
+panelTab > panelTabMenu .menuTarget {
+ visibility: collapse;
+}
+
+panelTab[selected="true"] > panelTabMenu .menuTarget,
+panelTab:focus > panelTabMenu .menuTarget {
+ background: url(chrome://firebug-os/skin/optionsMenuTarget.png) no-repeat center;
+ width: 11px;
+ height: 10px;
+ vertical-align: middle;
+ visibility: visible;
+}
+
+panelTab[selected="true"]:hover > panelTabMenu .menuTarget {
+ background-image: url(chrome://firebug-os/skin/optionsMenuTargetHover.png);
+}
+
+panelTab > panelTabMenu .menuPopup:-moz-locale-dir(rtl) {
+ direction: rtl;
+}
+
+/*************************************************************************************************/
+/* Detached Firebug Window */
+
+#fbResumeBox > #fbWindowButtons {
+ padding-right: 4px;
+}
+
+/*************************************************************************************************/
+/* Focus related */
+
+/* Make the following selectors part of the tab order */
+
+/* current tab */
+.useA11y panelTab[selected="true"],
+/* Firebug Menu */
+.useA11y #fbFirebugMenu,
+/* Status bar icon*/
+#fbStatusBar.useA11y {
+ -moz-user-focus: normal;
+}
+
+/* Toolbar buttons in a visible toolbar group (usually hbox) */
+.useA11y .innerToolbar *:not([collapsed="true"]) toolbarbutton,
+.useA11y .innerToolbar > toolbarbutton{
+ -moz-user-focus: normal;
+}
+
+/* Now override the previous selector and only leave the first button of each group in the tab order*/
+.useA11y .innerToolbar *:not([collapsed="true"]) toolbarbutton ~ toolbarbutton,
+.useA11y .innerToolbar > toolbarbutton ~ toolbarbutton{
+ -moz-user-focus: ignore;
+}
+
+/* remove toolbar groups from the tab order if they have .noTabStop and are NOT the first visible group in the toolbar */
+.useA11y .innerToolbar *[collapsed="false"] ~ *.noTabStop toolbarbutton,
+.useA11y .innerToolbar toolbarbutton.noTabStop,
+/*fbNetButtonsFilter situation, added extra id for specificity*/
+.useA11y .innerToolbar toolbarbutton:not([collapsed="true"]) ~ *.noTabStop toolbarbutton {
+ -moz-user-focus: ignore;
+}
+
+/* Buttons in a group with .hasTabOrder (this class is briefly added during right/left arrow key event handlers in a11y.js.*/
+.innerToolbar.hasTabOrder toolbarbutton {
+ -moz-user-focus: normal !important;
+}
+
+.useA11y #fbPanelBar1 toolbarbutton:focus,
+.useA11y #fbPanelBar1 textbox[focused],
+#fbStatusBar.useA11y:focus,
+.useA11y panelTab:focus,
+.useA11y .searchOptionsMenu .a11yFocus:focus {
+ outline: 2px solid #FF9933;
+ outline-offset: -2px;
+ -moz-outline-radius: 5px;
+}
+
+.useA11y panelTab:focus > label {
+ text-decoration: underline;
+ color: black;
+}
+/**** end focus related ****/
+
+/*************************************************************************************************/
+/* panelFileList */
+
+.toolbarbutton-text.title[value] {
+ padding-right: 5px;
+}
+
+#fbLocationList {
+ height: 20px;
+}
+
+#fbLocationList.noTabStop > menupopup > arrowscrollbox > scrollbox,
+#fbCommandHistory > arrowscrollbox > scrollbox {
+ overflow-y: auto;
+}
+
+/* Evaluated scripts can take a lot of horizontal space on the toolbar, so this is the limit */
+#fbLocationList {
+ max-width: 250px;
+}
+
+#fbLocationList .toolbarbutton-text {
+ color: #000000;
+}
+
+/*************************************************************************************************/
+/* CSS Buttons */
+
+#fbScriptFilterMenu .toolbarbutton-text {
+ color: #000000;
+}
+
+/*************************************************************************************************/
+/* Script Buttons */
+
+#fbToggleCSSEditing .toolbarbutton-text {
+ padding-top: 1px;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #000000;
+}
+
+/*************************************************************************************************/
+/* Quick Info Box */
+
+#fbQuickInfoPanel {
+ border: 1px solid threedshadow;
+ background-color: white;
+ opacity: 0.9;
+ font-family: monospace;
+ font-size: 11px;
+ padding-bottom: 5px;
+ cursor: move;
+}
+
+.fbQuickInfoBoxTitle {
+ font-family: Lucida Grande, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ margin-top: 8px;
+ margin-bottom: 0;
+ cursor: move;
+}
+
+.fbQuickInfoName {
+ color: DarkGreen;
+ margin-bottom: 0;
+ -moz-margin-end: 0;
+ cursor: move;
+}
+
+.fbQuickInfoValue {
+ color: DarkBlue;
+ margin-bottom: 0;
+ -moz-margin-start: 0;
+ cursor: move;
+}
+
+/*************************************************************************************************/
+/* Don't let Personas to destroy Firebug's CSS */
+
+#fbContentBox:-moz-lwtheme {
+ text-shadow: none !important;
+ color: -moz-dialogtext;
+}
+
+/*************************************************************************************************/
+
+ at keyframes armedBlinking {
+ 100% {
+ text-shadow: 1px 1px 2px darkGray, 0px 0px 1em orange, 0px 0px 0.2em orange;
+ }
+}
+
+panelTab[breakOnNextArmed="true"] > .panelTab-text {
+ animation: armedBlinking 0.8s steps(9, end) infinite alternate;
+}
+
+panelTab.highlighted {
+ text-shadow: 1px 1px 2px darkGray, 0px 0px 1em orange, 0px 0px 0.2em orange !important;
+ transition-property: text-shadow;
+ transition-duration: 1.4s;
+}
+
+panelTab[aria-disabled='true'] {
+ color: graytext !important;
+}
+
+/*************************************************************************************************/
+/* Scrollable TabBar + TabList */
+
+panelBarArrowscrollbox {
+ -moz-binding: url("firefox/bindings.xml#panelBarArrowscrollbox");
+}
+
+panelBarTabList {
+ -moz-binding: url("firefox/bindings.xml#panelBarTabList");
+}
+
+.panelBarTabListMenuItem {
+ -moz-binding: url("firefox/bindings.xml#panelBarTabListMenuItem");
+}
+
+/*************************************************************************************************/
+/* splitmenu */
+
+menuitem.split-menuitem-item[_moz-menuactive="true"], .split-menu-right-image[_moz-menuactive="true"] {
+ background-color: -moz-menuhover;
+ color: -moz-menuhovertext;
+}
+
+.split-menu-right-image {
+ -moz-appearance: menuitem;
+ -moz-box-pack: end;
+}
+
+menu[type=splitmenu] {
+ -moz-binding: url("firefox/bindings.xml#splitmenu");
+ -moz-box-orient: horizontal;
+ -moz-appearance: none !important;
+ color: menutext;
+ background-color: transparent !important;
+}
diff --git a/content/firebug/firebug.js b/content/firebug/firebug.js
index b7ea520..0e749cc 100644
--- a/content/firebug/firebug.js
+++ b/content/firebug/firebug.js
@@ -1,2808 +1,2808 @@
-/* See license.txt for terms of usage */
-
-/**
- * Firebug module can depend only on modules that don't use the 'Firebug' namespace.
- * So, be careful before you create a new dependency.
- */
-define([
- "firebug/lib/lib",
- "firebug/lib/object",
- "firebug/chrome/firefox",
- "firebug/chrome/chrome",
- "firebug/lib/domplate",
- "firebug/lib/options",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/wrapper",
- "firebug/lib/url",
- "firebug/lib/css",
- "firebug/chrome/window",
- "firebug/lib/string",
- "firebug/lib/array",
- "firebug/lib/dom",
- "firebug/lib/http",
- "firebug/trace/traceListener",
- "firebug/console/commandLineExposed",
-],
-function(FBL, Obj, Firefox, ChromeFactory, Domplate, Options, Locale, Events,
- Wrapper, Url, Css, Win, Str, Arr, Dom, Http, TraceListener, CommandLineExposed) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const nsISupports = Ci.nsISupports;
-
-const observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
-const categoryManager = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
-const promptService = Cc["@mozilla.org/embedcomp/prompt-service;1"].getService(Ci.nsIPromptService);
-
-const versionURL = "chrome://firebug/content/branch.properties";
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-const scriptBlockSize = 20;
-
-const PLACEMENT_NONE = 0;
-const PLACEMENT_INBROWSER = 1;
-const PLACEMENT_DETACHED = 2;
-const PLACEMENT_MINIMIZED = 3;
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-var modules = [];
-var activeContexts = [];
-var activableModules = [];
-var panelTypes = [];
-var earlyRegPanelTypes = []; // See Firebug.registerPanelType for more info
-var reps = [];
-var defaultRep = null;
-var defaultFuncRep = null;
-var menuItemControllers = [];
-var panelTypeMap = {};
-
-// ********************************************************************************************* //
-
-//xxxHonza: we should use the existing Firebug object.
-if (window.Firebug)
-{
- // Stow the pre-load properties, add them back at the end
- var PreFirebug = {};
- var preFirebugKeys = Object.keys(Firebug);
- preFirebugKeys.forEach(function copyProps(key)
- {
- PreFirebug[key] = Firebug[key];
- });
-}
-
-/**
- * @class Represents the main Firebug application object. An instance of this object is
- * created for each browser window (browser.xul).
- */
-window.Firebug =
-{
- version: "1.12",
-
- dispatchName: "Firebug",
- modules: modules,
- panelTypes: panelTypes,
- earlyRegPanelTypes: earlyRegPanelTypes,
- uiListeners: [],
- reps: reps,
-
- stringCropLength: 50,
-
- isInitialized: false,
- isLoaded: false,
-
- migrations: {},
-
- // Custom stylesheets registered by extensions.
- stylesheets: [],
-
- // xxxHonza: hack, all "Firebug.Options" occurences should be replaced by "Options"
- Options: Options,
-
- viewChrome: null,
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Initialization
-
- initialize: function(chrome)
- {
- // This says how much time was necessary to load Firebug overlay (+ all script tags).
- FBTrace.timeEnd("SCRIPTTAG_TIME");
-
- // Measure the entire Firebug initialization time.
- FBTrace.time("INITIALIZATION_TIME");
-
- Firebug.chrome = chrome;
- Firebug.originalChrome = Firebug.chrome;
-
- if (FBTrace.sysout && (!FBL || !FBL.initialize))
- {
- FBTrace.sysout("Firebug is broken, FBL incomplete, if the last function is QI, " +
- "check lib.js:", FBL);
- }
- else if (FBTrace.DBG_INITIALIZE)
- {
- FBTrace.sysout("firebug.initialize FBL: " + FBL);
- }
-
- if (window.FBL.legacyApiPatch)
- window.FBL.legacyApiPatch(FBL, this, Firefox);
-
- // Till now all registered panels have been inserted into earlyRegPanelTypes.
- var tempPanelTypes = earlyRegPanelTypes;
- earlyRegPanelTypes = null;
- Firebug.completeInitialize(tempPanelTypes);
- },
-
- completeInitialize: function(tempPanelTypes)
- {
- if (FBL)
- FBL.initialize(); // non require.js modules
-
- // Append early registered panels at the end.
- panelTypes.push.apply(panelTypes, tempPanelTypes);
-
- // Firebug is getting option-updates from the connection so,
- // do not register it again here (see issue 6035)
- //Firebug.Options.addListener(this);
-
- this.isInitialized = true;
-
- // Distribute Firebug's preference domain as an argument (see issue 6210).
- Events.dispatch(modules, "initialize", [Options.prefDomain]);
-
- // This is the final of Firebug initialization.
- FBTrace.timeEnd("INITIALIZATION_TIME");
- },
-
- sendLoadEvent: function()
- {
- this.isLoaded = true;
-
- var event = document.createEvent("Events");
- event.initEvent("FirebugLoaded", true, false);
-
- // Send to the current window/scope (firebugFrame.xul)
- window.document.dispatchEvent(event);
-
- // Send to the top window/scope (browser.xul)
- if (top != window)
- top.document.dispatchEvent(event);
- },
-
- getVersion: function()
- {
- if (!this.fullVersion)
- this.fullVersion = this.loadVersion(versionURL);
-
- return this.fullVersion;
- },
-
- loadVersion: function(versionURL)
- {
- var content = Http.getResource(versionURL);
- if (!content)
- return "no content at "+versionURL;
-
- var m = /RELEASE=(.*)/.exec(content);
- if (m)
- var release = m[1];
- else
- return "no RELEASE in "+versionURL;
-
- m = /VERSION=(.*)/.exec(content);
- if (m)
- var version = m[1];
- else
- return "no VERSION in "+versionURL;
-
- return version+""+release;
- },
-
- /**
- * Substitute strings in the UI, with fall back to en-US
- */
- internationalizeUI: function(doc) // TODO chrome.js
- {
- if (!doc)
- return;
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("Firebug.internationalizeUI");
-
- var elements = doc.getElementsByClassName("fbInternational");
- elements = Arr.cloneArray(elements);
- var attributes = ["label", "tooltiptext", "aria-label"];
- for (var i=0; i<elements.length; i++)
- {
- var element = elements[i];
- Css.removeClass(elements[i], "fbInternational");
- for (var j=0; j<attributes.length; j++)
- {
- if (element.hasAttribute(attributes[j]))
- Locale.internationalize(element, attributes[j]);
- }
- }
-
- // Allow other modules to internationalize UI labels (called also for
- // detached Firebug window).
- Events.dispatch(modules, "internationalizeUI", [doc]);
- },
-
- /**
- * Called when the UI is ready to be initialized, once the panel browsers are loaded,
- * but before any contexts are created.
- */
- initializeUI: function(detachArgs)
- {
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("firebug.initializeUI detachArgs:", detachArgs);
-
- Events.dispatch(menuItemControllers, "initialize", []); // TODO chrome.js
-
- // In the case that the user opens firebug in a new window but then closes Firefox
- // window, we don't get the quitApplicationGranted event (platform is still running)
- // and we call shutdown (Firebug isDetached).
- window.addEventListener('unload', shutdownFirebug, false);
-
- // Initial activation of registered panel types. All panel -> module dependencies
- // should be defined now (in onActivationChange). Must be called after
- // Firebug.TabWatcher is ready.
- if (Firebug.PanelActivation)
- Firebug.PanelActivation.activatePanelTypes(panelTypes);
-
- // Tell the modules the UI is up.
- Events.dispatch(modules, "initializeUI", [detachArgs]);
- },
-
- /**
- * called in browser when Firefox closes and in externalMode when fbs gets
- * quitApplicationGranted.
- */
- shutdown: function()
- {
- if (this.isShutdown)
- return;
-
- this.isShutdown = true;
-
- this.shutdownUI();
-
- Events.dispatch(modules, "shutdown");
-
- this.Options.shutdown();
- this.Options.removeListener(this);
-
- this.connection.disconnect();
-
- this.PanelActivation.deactivatePanelTypes(panelTypes);
-
- // Shutdown all registered extensions.
- this.unregisterExtensions();
-
- if (FBTrace.DBG_OBSERVERS)
- {
- // import fbObserverService
- Components.utils.import("resource://firebug/observer-service.js");
- fbObserverService.traceStacksForTrack();
- }
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("firebug.shutdown exited ");
- },
-
- shutdownUI: function() // TODO chrome.js
- {
- window.removeEventListener("unload", shutdownFirebug, false);
-
- Events.dispatch(modules, "disable", [Firebug.chrome]);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // TODO this entire section to XULWindow
-
- // TODO XULWindow
- getSuspended: function()
- {
- return Firebug.StartButton.getSuspended();
- },
-
- // TODO XULWindow
- setSuspended: function(value)
- {
- Firebug.StartButton.setSuspended(value);
- },
-
- // TODO XULWindow IN detached "Activate Firebug for the current website"
- toggleSuspend: function()
- {
- // getSuspended returns non-null value if Firebug is suspended.
- if (this.getSuspended() || this.isDetached())
- {
- // Firebug is suspended now. Two possible actions have been executed:
- // 1) Firebug UI is closed and the user clicked on the status bar icon in order to
- // show the UI and resume Firebug.
- // 2) Firebug is detached, but suspended for the current page. The user clicked
- // either on the status bar icon or on an activation button that is displayed
- // within detached Firebug window.
- this.toggleBar(true);
- }
- else
- {
- // The users wants to suspend Firebug, let's do it and pull down the visible UI.
- // xxxHonza: the Firebug isn't suspended if detached and the user clicks on the
- // status bar icon (the detached window should becoma blank displaying only
- // the activation button).
- this.suspend();
-
- // Close detached Firebug or
- // show/hide Firebug UI according to the browser.showFirebug flag.
- if (Firebug.isDetached())
- this.toggleDetachBar(false);
- else
- this.syncBar();
- }
- },
-
- // dispatch suspendFirebug to all windows
- suspend: function()
- {
- if (Firebug.rerun)
- return;
-
- Firebug.suspendFirebug();
- },
-
- // dispatch onSuspendFirebug to all modules
- suspendFirebug: function()
- {
- var cancelSuspend = Events.dispatch2(activableModules, "onSuspendingFirebug", []);
- if (cancelSuspend)
- return;
-
- this.setSuspended("suspending");
-
- // TODO no context arg
- var cancelSuspend = Events.dispatch2(activableModules, "onSuspendFirebug",
- [Firebug.currentContext]);
-
- if (cancelSuspend)
- Firebug.resume();
- else
- this.setSuspended("suspended");
- },
-
- resume: function()
- {
- Firebug.resumeFirebug();
- },
-
- resumeFirebug: function() // dispatch onResumeFirebug to all modules
- {
- this.setSuspended("resuming");
-
- // TODO no context arg
- Events.dispatch(activableModules, 'onResumeFirebug', [Firebug.currentContext]);
- this.setSuspended(null);
- },
-
- getURLsForAllActiveContexts: function()
- {
- var contextURLSet = [];
-
- // create a list of all unique activeContexts
- Firebug.connection.eachContext(function createActiveContextList(context)
- {
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("context " + context.getName());
-
- try
- {
- var cw = context.window;
- if (cw)
- {
- var url;
- if (cw.closed)
- {
- url = "about:closed";
- }
- else
- {
- if ("location" in cw)
- url = cw.location.toString();
- else
- url = context.getName();
- }
-
- if (url)
- {
- if (contextURLSet.indexOf(url) == -1)
- contextURLSet.push(url);
- }
- }
- }
- catch(e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("firebug.getURLsForAllActiveContexts could not get " +
- "window.location for a context", e);
- }
- });
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("active contexts urls " + contextURLSet.length);
-
- return contextURLSet;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Registration
-
- /**
- * Set a default value for a preference into the firebug preferences list.
- *
- * @param name preference name, possibly dot segmented, will be stored under
- * extensions.firebug.<name>
- * @param value default value of preference
- * @return true if default set, else false
- */
- registerPreference: function(name, value)
- {
- Firebug.Options.register(name, value);
- },
-
- registerModule: function()
- {
- modules.push.apply(modules, arguments);
-
- // Fire the initialize event for modules that are registered later.
- if (Firebug.isInitialized)
- Events.dispatch(arguments, "initialize", []);
-
- if (FBTrace.DBG_REGISTRATION)
- {
- for (var i = 0; i < arguments.length; ++i)
- FBTrace.sysout("registerModule "+arguments[i].dispatchName);
- }
- },
-
- unregisterModule: function()
- {
- for (var i = 0; i < arguments.length; ++i)
- Arr.remove(modules, arguments[i]);
-
- // Fire shutdown if module was unregistered dynamically (not on Firebug shutdown).
- if (!Firebug.isShutdown)
- Events.dispatch(arguments, "shutdown", []);
- },
-
- registerActivableModule: function()
- {
- activableModules.push.apply(activableModules, arguments);
- this.registerModule.apply(this, arguments);
- },
-
- registerUIListener: function()
- {
- for (var j = 0; j < arguments.length; j++)
- Firebug.uiListeners.push(arguments[j]);
- },
-
- unregisterUIListener: function()
- {
- for (var i = 0; i < arguments.length; ++i)
- Arr.remove(Firebug.uiListeners, arguments[i]);
- },
-
- registerPanel: function()
- {
- for (var i=0; i<arguments.length; ++i)
- {
- var panelName = arguments[i].prototype.name;
- var panel = panelTypeMap[panelName];
- if (panel)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("firebug.registerPanel; ERROR a panel with the same " +
- "ID already registered! " + panelName);
- }
- }
- }
-
- // In order to keep built in panels (like Console, Script...) be the first one
- // and insert all panels coming from extension at the end, catch any early registered
- // panel (i.e. before FBL.initialize is called, such as YSlow) in a temp array
- // that is appended at the end as soon as FBL.initialize is called.
- if (earlyRegPanelTypes)
- earlyRegPanelTypes.push.apply(earlyRegPanelTypes, arguments);
- else
- panelTypes.push.apply(panelTypes, arguments);
-
- for (var i=0; i<arguments.length; ++i)
- panelTypeMap[arguments[i].prototype.name] = arguments[i];
-
- if (FBTrace.DBG_REGISTRATION)
- {
- for (var i=0; i<arguments.length; ++i)
- FBTrace.sysout("registerPanel " + arguments[i].prototype.name);
- }
-
- // If Firebug is not initialized yet the UI will be updated automatically soon.
- if (!this.isInitialized)
- return;
-
- Firebug.chrome.syncMainPanels();
- Firebug.chrome.syncSidePanels();
- },
-
- unregisterPanel: function(panelType)
- {
- var panelName = panelType ? panelType.prototype.name : null;
-
- if (FBTrace.DBG_REGISTRATION)
- {
- FBTrace.sysout("firebug.unregisterPanel: " +
- (panelName ? panelName : "Undefined panelType"));
- }
-
- // Remove all instance of the panel.
- Firebug.connection.eachContext(function (context)
- {
- // An empty state can be probably used at this moment since
- // we are unregistering the panel anyway.
- var state = {}; //context.browser.persistedState;
- context.removePanel(panelType, state);
- });
-
- // Now remove panel-type itself.
- for (var i=0; i<panelTypes.length; i++)
- {
- if (panelTypes[i] == panelType)
- {
- panelTypes.splice(i, 1);
- break;
- }
- }
-
- delete panelTypeMap[panelType.prototype.name];
-
- // We don't have to update Firebug UI if it's just closing.
- if (this.isShutdown)
- return;
-
- // Make sure another panel is selected if the current one is has been removed.
- var panel = this.chrome.getSelectedPanel();
- if (panel && panel.name == panelName)
- Firebug.chrome.selectPanel("html");
-
- // The panel tab must be removed from the UI.
- Firebug.chrome.syncMainPanels();
- Firebug.chrome.syncSidePanels();
- },
-
- registerRep: function()
- {
- reps.push.apply(reps, arguments);
- },
-
- unregisterRep: function()
- {
- for (var i = 0; i < arguments.length; ++i)
- Arr.remove(reps, arguments[i]);
- },
-
- setDefaultReps: function(funcRep, rep)
- {
- defaultRep = rep;
- defaultFuncRep = funcRep;
- },
-
- registerStringBundle: function(bundleURI)
- {
- Locale.registerStringBundle(bundleURI);
- },
-
- unregisterStringBundle: function(bundleURI)
- {
- // xxxHonza: TODO:
- },
-
- /**
- * Allows registering of custom stylesheet coming from extension. The stylesheet is then
- * used automatially thorough Firebug UI.
- * @param {Object} styleURI URI of the stylesheet.
- */
- registerStylesheet: function(styleURI)
- {
- this.stylesheets.push(styleURI);
-
- // Append the stylesheet into the UI if Firebug is already loaded
- if (this.isLoaded)
- Firebug.chrome.appendStylesheet(styleURI);
-
- if (FBTrace.DBG_REGISTRATION)
- FBTrace.sysout("registerStylesheet " + styleURI);
- },
-
- unregisterStylesheet: function(styleURI)
- {
- // xxxHonza: TODO
- },
-
- registerMenuItem: function(menuItemController)
- {
- FBTrace.sysout("Firebug.registerMenuItem");
- menuItemControllers.push(menuItemController);
- },
-
- registerTracePrefix: function(prefix, type, removePrefix, styleURI)
- {
- var listener = Firebug.TraceModule.getListenerByPrefix(prefix);
- if (listener && FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("firebug.registerTracePrefix; ERROR " +
- "there is already such prefix registered!");
- return;
- }
-
- listener = new TraceListener(prefix, type, removePrefix, styleURI);
- Firebug.TraceModule.addListener(listener);
- },
-
- unregisterTracePrefix: function(prefix)
- {
- var listener = Firebug.TraceModule.getListenerByPrefix(prefix);
- if (listener)
- Firebug.TraceModule.removeListener(listener);
- },
-
- registerCommand: function(name, config)
- {
- return CommandLineExposed.registerCommand(name, config);
- },
-
- unregistereCommand: function(name)
- {
- return CommandLineExposed.unregisterCommand(name);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Options
-
- getPref: function()
- {
- // TODO deprecated
- return Options.getPref.apply(Firebug.Options, arguments);
- },
-
- setPref: function()
- {
- // TODO deprecated
- return Options.setPref.apply(Firebug.Options, arguments);
- },
-
- clearPref: function()
- {
- // TODO deprecated
- return Options.clearPref.apply(Options, arguments);
- },
-
- prefDomain: "extensions.firebug",
-
- updateOption: function(name, value)
- {
- // fbtest changes options which change prefs which trigger updates in fbtrace
- if (!Firebug.chrome)
- return;
-
- // Distribute to the current chrome.
- Firebug.chrome.updateOption(name, value);
-
- // If Firebug is detached distribute also into the in-browser chrome.
- if (Firebug.chrome != Firebug.originalChrome)
- Firebug.originalChrome.updateOption(name, value);
-
- Events.dispatch(Firebug.modules, "updateOption", [name, value]);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- shouldIgnore: function(objectChromeView)
- {
- if (objectChromeView)
- {
- var contentView = Wrapper.unwrapObject(objectChromeView);
- return (contentView && contentView.firebugIgnore);
- }
- // else don't ignore things we don't understand
- },
-
- setIgnored: function(objectChromeView)
- {
- if (objectChromeView)
- {
- var contentView = Wrapper.unwrapObject(objectChromeView);
- if (contentView)
- contentView.firebugIgnore = true;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Browser Bottom Bar
-
- // TODO XULWindow
- showBar: function(show)
- {
- var browser = Firefox.getCurrentBrowser();
-
- if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("showBar("+show+") for browser "+browser.currentURI.spec+
- " Firebug.currentContext "+Firebug.currentContext);
-
- Firebug.chrome.toggleOpen(show);
-
- if (!show)
- Firebug.Inspector.inspectNode(null);
-
- //xxxHonza: should be removed.
- Events.dispatch(Firebug.uiListeners, show ? "showUI" : "hideUI",
- [browser, Firebug.currentContext]);
-
- // Sync panel state after the showUI event is dispatched. syncPanel method calls
- // Panel.show method, which expects the active context to be already registered.
- if (show)
- Firebug.chrome.syncPanel();
- else
- Firebug.chrome.selectPanel(); // select null causes hide() on selected
-
- Firebug.StartButton.resetTooltip();
- },
-
- closeFirebug: function(userCommands) // this is really deactivate
- {
- if (!Firebug.currentContext)
- return;
-
- // It looks like FBTest is calling Firebug.Activation.clearAnnotations()
- // when there is no current context.
- //throw new Error("closeFirebug ERROR: no Firebug.currentContext ");
-
- // Focus the browser window again
- Firebug.currentContext.window.focus();
-
- Firebug.connection.closeContext(Firebug.currentContext, userCommands);
- Firebug.StartButton.resetTooltip();
- },
-
- /**
- * Primary function to activate or minimize firebug. Used by
- * <ol>
- * <li>the status bar icon click action</li>
- * <li>the activation button (within Firebug.xul) click action</li>
- * </ol>
- * @param forceOpen: don't minimize, stay open if open.
- * @param panelName: eg 'script', to select a specific panel.
- */
- toggleBar: function(forceOpen, panelName)
- {
- if (panelName)
- Firebug.chrome.selectPanel(panelName);
- // if is deactivated.
- if (!Firebug.currentContext)
- {
- var context = Firebug.getContext();
- // Be sure the UI is open for a newly created context.
- forceOpen = true;
- }
-
- if (Firebug.isDetached())
- {
- //in detached mode, two possibilities exist, the firebug windows is
- // the active window of the user or no.
- if ( !Firebug.chrome.hasFocus() || forceOpen)
- Firebug.chrome.focus();
- else
- Firebug.minimizeBar();
- }
- // toggle minimize
- else if (Firebug.isMinimized())
- {
- // be careful, unMinimize func always sets placement to
- // inbrowser first then unminimizes. when we want to
- // unminimize in detached mode must call detachBar func.
- if (Firebug.framePosition == "detached")
- this.detachBar();
- else
- Firebug.unMinimize();
- }
- // else isInBrowser
- else if (!forceOpen)
- {
- Firebug.minimizeBar();
- }
-
- return true;
- },
-
- /**
- * Get context for the current website
- */
- getContext: function()
- {
- var webApp = Firebug.connection.getCurrentSelectedWebApp();
- var context = Firebug.connection.getContextByWebApp(webApp);
- // we are not debugging the selected tab.
- if (!context)
- {
- context = Firebug.connection.getOrCreateContextByWebApp(webApp);
- }
- return context;
- },
-
- /**
- * Primary function to re-show firebug due to visiting active site.
- * Unlike toggleBar, we are trying to obey the current placement, not change it.
- */
- showContext: function(browser, context)
- {
- // user wants detached but we are not yet
- if (Firebug.framePosition == "detached" && !Firebug.isDetached())
- {
- if (context && !Firebug.isMinimized()) // don't detach if it's minimized 2067
- this.detachBar(); // the placement will be set once the external window opens
- else // just make sure we are not showing
- this.showBar(false);
- }
- else if (Firebug.openMinimized() && !Firebug.isMinimized())
- this.minimizeBar();
- else if (Firebug.isMinimized())
- this.showBar(false); // don't show, we are minimized
- else if (Firebug.isDetached())
- Firebug.chrome.syncResumeBox(context);
- else // inBrowser
- this.showBar(context?true:false);
- },
-
- minimizeBar: function() // just pull down the UI, but don't deactivate the context
- {
- if (Firebug.isDetached())
- {
- // TODO reattach
-
- // window is closing in detached mode
- var parent = this.getFirebugFrameParent();
- if (parent)
- {
- parent.exportFirebug();
- parent.close();
- }
-
- Firebug.setPlacement("minimized");
- this.showBar(false);
- Firebug.chrome.focus();
- }
- else // inBrowser -> minimized
- {
- Firebug.setPlacement("minimized");
- this.showBar(false);
-
- // Focus the browser window again
- if (Firebug.currentContext)
- Firebug.currentContext.window.focus();
- }
- },
-
- unMinimize: function()
- {
- Firebug.setPlacement("inBrowser");
- Firebug.showBar(true);
- },
-
- onShowDetachTooltip: function(tooltip)
- {
- tooltip.label = Firebug.isDetached() ? Locale.$STR("firebug.AttachFirebug") :
- Locale.$STR("firebug.DetachFirebug");
- return true;
- },
-
- /**
- * function to switch between detached and inbrowser modes.
- * @param forceOpen: should not be closed, stay open if open or open it.
- * @param reopenInBrowser: switch from detahced to inbrowser mode.
- */
- toggleDetachBar: function(forceOpen, reopenInBrowser)
- {
- //detached -> inbrowser
- if (!forceOpen && Firebug.isDetached())
- {
- var parent = this.getFirebugFrameParent();
- parent.exportFirebug();
- parent.close();
-
- if (reopenInBrowser)
- {
- // Is Firebug deactivated ? if yes, should be
- // activated at first, then unminimize.
- if (!Firebug.currentContext)
- {
- var context = Firebug.getContext();
- }
- Firebug.unMinimize();
- }
- else
- {
- Firebug.minimizeBar();
- }
-
- Firebug.chrome.syncPositionPref();
- }
- // is minimized now but the last time that has been closed, was in detached mode,
- // so it should be returned to in browser mode because the user has pressed CTRL+F12.
- else if (Firebug.framePosition == "detached" && Firebug.isMinimized())
- {
- Firebug.unMinimize();
- Firebug.chrome.syncPositionPref();
- }
- // else is in browser mode, then switch to detached mode.
- else
- {
- this.detachBar();
- }
- },
-
- closeDetachedWindow: function(userCommands)
- {
- Firebug.showBar(false);
-
- if (Firebug.currentContext)
- ToolInterface.browser.closeContext(Firebug.currentContext, userCommands);
-
- // else the user closed Firebug external window while not looking at
- // a debugged web page.
- Firebug.StartButton.resetTooltip();
- },
-
- detachBar: function()
- {
- if (Firebug.isDetached()) // can be set true attachBrowser
- {
- Firebug.chrome.focus();
- return null;
- }
-
- if (Firebug.chrome.waitingForDetach)
- return null;
-
- Firebug.chrome.waitingForDetach = true;
- Firebug.chrome.toggleOpen(false); // don't show in browser.xul now
-
- if (FBTrace.DBG_ACTIVATION)
- {
- FBTrace.sysout("Firebug.detachBar opening firebug.xul for context " +
- Firebug.currentContext.getName() );
- }
-
- Firebug.chrome.syncPositionPref("detached");
-
- return Firefox.openWindow("Firebug",
- "chrome://firebug/content/firefox/firebug.xul",
- "", {});
- },
-
- // show firebug if we should
- syncBar: function()
- {
- var browser = Firefox.getCurrentBrowser();
-
- // implicitly this is operating in the chrome of browser.xul
- this.showBar(browser && browser.showFirebug);
- },
-
- toggleCommandLine: function(showCommandEditor)
- {
- Options.set("commandEditor", showCommandEditor);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /**
- * Returns parent of the firebugFrame.xul frame. The actual parent depends on whether
- * Firebug is attached or detached.
- *
- * attached -> browser.xul
- * detached -> firebug.xul
- */
- getFirebugFrameParent: function()
- {
- // We need firebug.xul in case of detached state. So, don't use 'top' since
- // it references browser.xul
- return Firebug.chrome.window.parent;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // deprecated
-
- resetAllOptions: function(confirm)
- {
- if (confirm)
- {
- var promptService = Cc["@mozilla.org/embedcomp/prompt-service;1"].
- getService(Ci.nsIPromptService);
-
- // Do not reset options if the user changed its mind.
- if (!promptService.confirm(null, Locale.$STR("Firebug"),
- Locale.$STR("confirmation.Reset_All_Firebug_Options")))
- {
- return;
- }
- }
-
- // Dispatch to non-module objects.
- Options.resetAllOptions(confirm);
-
- // Dispatch to all modules so that additional settings can be reset.
- Events.dispatch(modules, "resetAllOptions", []);
-
- // Dispatch to all modules so 'after' actions can be executed.
- Events.dispatch(modules, "afterResetAllOptions", []);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Panels
-
- getPanelType: function(panelName)
- {
- if (panelTypeMap.hasOwnProperty(panelName))
- return panelTypeMap[panelName];
- else
- return null;
- },
-
- getPanelTitle: function(panelType)
- {
- if (!panelType)
- return null;
-
- return panelType.prototype.title ? panelType.prototype.title
- : Locale.$STR("Panel-"+panelType.prototype.name);
- },
-
- getPanelTooltip: function(panelType)
- {
- var tooltip = panelType.prototype.tooltip ? panelType.prototype.tooltip
- : Locale.$STR("panel.tip."+panelType.prototype.name);
- return tooltip != panelType.prototype.name ? tooltip : this.getPanelTitle(panelType);
- },
-
- getMainPanelTypes: function(context)
- {
- var resultTypes = [];
-
- for (var i = 0; i < panelTypes.length; ++i)
- {
- var panelType = panelTypes[i];
- if (!panelType.prototype.parentPanel)
- resultTypes.push(panelType);
- }
-
- if (context.panelTypes)
- {
- for (var i = 0; i < context.panelTypes.length; ++i)
- {
- var panelType = context.panelTypes[i];
- if (!panelType.prototype.parentPanel)
- resultTypes.push(panelType);
- }
- }
-
- resultTypes.sort(function(a, b)
- {
- return a.prototype.order < b.prototype.order ? -1 : 1;
- });
-
- return resultTypes;
- },
-
- getSidePanelTypes: function(context, mainPanel)
- {
- if (!mainPanel)
- return [];
-
- var resultTypes = [];
-
- for (var i = 0; i < panelTypes.length; ++i)
- {
- var panelType = panelTypes[i];
-
- if (panelType.prototype.parentPanel &&
- (panelType.prototype.parentPanel == mainPanel.name))
- {
- resultTypes.push(panelType);
- }
- }
-
- if (context.panelTypes)
- {
- for (var i = 0; i < context.panelTypes.length; ++i)
- {
- var panelType = context.panelTypes[i];
- if (panelType.prototype.parentPanel == mainPanel.name)
- resultTypes.push(panelType);
- }
- }
-
- resultTypes.sort(function(a, b)
- {
- return a.prototype.order < b.prototype.order ? -1 : 1;
- });
-
- return resultTypes;
- },
-
- /**
- * Returns all panel types, whose activation can be toggled
- * @returns {Object} Activable panel types
- */
- getActivablePanelTypes: function()
- {
- var activablePanelTypes = [];
- for (var i = 0; i < panelTypes.length; ++i)
- {
- if (this.PanelActivation.isPanelActivable(panelTypes[i]))
- activablePanelTypes.push(panelTypes[i]);
- }
-
- return activablePanelTypes;
- },
-
- /**
- * Gets an object containing the state of the panel from the last time
- * it was displayed before one or more page reloads.
- * The 'null' return here is a too-subtle signal to the panel code in bindings.xml.
- * Note that panel.context may not have a persistedState, but in addition the persisted
- * state for panel.name may be null.
- *
- * xxxHonza: the method should never return null. The implementation should
- * just use: Persist.getPersistedState() method.
- */
- getPanelState: function(panel)
- {
- var persistedState = panel.context.persistedState;
- if (!persistedState || !persistedState.panelState)
- return null;
-
- return persistedState.panelState[panel.name];
- },
-
- showPanel: function(browser, panel)
- {
- // The panel may be null
- Events.dispatch(modules, "showPanel", [browser, panel]);
- },
-
- showSidePanel: function(browser, sidePanel)
- {
- Events.dispatch(modules, "showSidePanel", [browser, sidePanel]);
- },
-
- eachPanel: function(callback)
- {
- Firebug.connection.eachContext(function iteratePanels(context)
- {
- var rc = context.eachPanelInContext(callback);
- if (rc)
- return rc;
- });
- },
-
- dispatchToPanels: function(fName, args)
- {
- Firebug.eachPanel( function dispatchToPanel(panel)
- {
- if (panel[fName])
- return panel[fName].apply(panel,args);
- });
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- dispatch: function(listeners, eventId, args)
- {
- Events.dispatch(listeners, eventId, args);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // URL mapping
-
- getObjectByURL: function(context, url)
- {
- for (var i = 0; i < modules.length; ++i)
- {
- var object = modules[i].getObjectByURL(context, url);
- if (object)
- return object;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Reps
-
- getRep: function(object, context)
- {
- var type = typeof(object);
- if (type == 'object' && object instanceof String)
- type = 'string';
-
- for (var i = 0; i < reps.length; ++i)
- {
- var rep = reps[i];
- try
- {
- if (rep.supportsObject(object, type, (context?context:Firebug.currentContext) ))
- {
- //if (FBTrace.DBG_DOM)
- // FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
- return rep;
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("firebug.getRep FAILS: "+ exc, exc);
- FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: "+
- (typeof(reps[i])), reps[i]);
- }
- }
- }
-
- //if (FBTrace.DBG_DOM)
- // FBTrace.sysout("getRep default type: "+type+" object: "+object, rep);
-
- return (type == "function") ? defaultFuncRep : defaultRep;
- },
-
- getRepObject: function(node)
- {
- var target = null;
- for (var child = node; child; child = child.parentNode)
- {
- if (Css.hasClass(child, "repTarget"))
- target = child;
-
- if (child.repObject != null)
- {
- if (!target && Css.hasClass(child, "repIgnore"))
- break;
- else
- return child.repObject;
- }
- }
- },
-
- /**
- * The child node that has a repObject
- */
- getRepNode: function(node)
- {
- for (var child = node; child; child = child.parentNode)
- {
- if (child.repObject != null)
- return child;
- }
- },
-
- getElementByRepObject: function(element, object)
- {
- for (var child = element.firstChild; child; child = child.nextSibling)
- {
- if (child.repObject === object)
- return child;
- }
- },
-
- /**
- * Takes an element from a panel document and finds the owning panel.
- */
- getElementPanel: function(element)
- {
- for (; element; element = element.parentNode)
- {
- if (element.ownerPanel)
- return element.ownerPanel;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // nsISupports
-
- QueryInterface : function(iid)
- {
- if (iid.equals(nsISupports))
- {
- return this;
- }
-
- throw Components.results.NS_NOINTERFACE;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Placement
-
- isDetached: function()
- {
- return Firebug.placement == PLACEMENT_DETACHED;
- },
-
- isMinimized: function()
- {
- return Firebug.placement == PLACEMENT_MINIMIZED;
- },
-
- isInBrowser: function()
- {
- return Firebug.placement == PLACEMENT_INBROWSER;
- },
-
- placements: ["none", "inBrowser", "detached", "minimized"],
-
- placement: 1,
-
- setPlacement: function(toPlacement)
- {
- // TODO : This should probably be an event so others can link into this
- Firebug.chrome.$("fbSearchBox").hideOptions();
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("Firebug.setPlacement from " + Firebug.getPlacement() + " to " +
- toPlacement + " with chrome " + Firebug.chrome.window.location);
-
- for (var i=0; i<Firebug.placements.length; i++)
- {
- if (toPlacement == Firebug.placements[i])
- {
- if (Firebug.placement != i) // then we are changing the value
- {
- Firebug.placement = i;
- delete Firebug.previousPlacement;
- Options.set("previousPlacement", Firebug.placement);
- Firebug.StartButton.resetTooltip();
- }
- return Firebug.placement;
- }
- }
- throw new Error("Firebug.setPlacement cannot match "+toPlacement+" as a placement");
- },
-
- getPlacement: function()
- {
- return Firebug.placements[Firebug.placement];
- },
-
- openMinimized: function()
- {
- if (!Firebug.previousPlacement)
- Firebug.previousPlacement = Options.get("previousPlacement");
-
- return (Firebug.previousPlacement && (Firebug.previousPlacement == PLACEMENT_MINIMIZED) );
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Firebug.TabWatcher Listener
-
- getContextType: function()
- {
- return Firebug.TabContext;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /**
- * This method syncs the UI to a context
- * @param context to become the active and visible context
- */
- selectContext: function(context)
- {
- this.showContext(context.browser, context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- focusBrowserTab: function(win) // TODO move to FBL
- {
- Firefox.selectTabByWindow(win);
- this.chrome.focus();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // FBTest
-
- // Expose our test list to the FBTest console for automated testing.
- onGetTestList: function(testLists)
- {
- testLists.push({
- extension: "Firebug",
- testListURL: "http://getfirebug.com/tests/head/firebug.html"
- });
- }
-};
-
-// ********************************************************************************************* //
-// API for Greasemonkey, Jetpack and other Firefox extensions
-
-/**
- * @param global wrapped up global: outer window or sandbox
- * @return a |console| object for the window
- */
-Firebug.getConsoleByGlobal = function getConsoleByGlobal(global)
-{
- try
- {
- if (!(global instanceof Window))
- throw new Error("global is not a Window object");
- var win = Wrapper.wrapObject(global);
- return Firebug.Console.getExposedConsole(win);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("Firebug.getConsoleByGlobal FAILS " + exc, exc);
- }
-};
-
-// ********************************************************************************************* //
-
-/**
- * Support for listeners registration. This object is also extended by Firebug.Module,
- * so all modules supports listening automatically. Note that an array of listeners is
- * created for each intance of a module within the initialize method. Thus all derived
- * module classes must ensure that the Firebug.Module.initialize method is called for the
- * super class.
- */
-Firebug.Listener = function()
-{
- // The array is created when the first listeners is added.
- // It can't be created here since derived objects would share
- // the same array.
- this.fbListeners = null;
-};
-
-Firebug.Listener.prototype =
-{
- addListener: function(listener)
- {
- if (!listener)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("firebug.Listener.addListener; ERROR null listener registered.");
- return;
- }
-
- // Delay the creation until the objects are created so 'this' causes new array
- // for this object (e.g. module, panel, etc.)
- if (!this.fbListeners)
- this.fbListeners = [];
-
- this.fbListeners.push(listener);
- },
-
- removeListener: function(listener)
- {
- // if this.fbListeners is null, remove is being called with no add
- Arr.remove(this.fbListeners, listener);
- },
-
- dispatch: function(eventName, args)
- {
- if (this.fbListeners && this.fbListeners.length > 0)
- Events.dispatch(this.fbListeners, eventName, args);
- },
-
- dispatch2: function(eventName, args)
- {
- if (this.fbListeners && this.fbListeners.length > 0)
- return Events.dispatch2(this.fbListeners, eventName, args);
- }
-};
-
-// ********************************************************************************************* //
-
-/**
- * @module Base class for all modules. Every derived module object must be registered using
- * <code>Firebug.registerModule</code> method. There is always one instance of a module object
- * per browser window.
- */
-Firebug.Module = Obj.extend(new Firebug.Listener(),
-/** @lends Firebug.Module */
-{
- /**
- * Called by Firebug when Firefox window is opened.
- */
- initialize: function()
- {
- },
-
- /**
- * Called when the UI is ready for context creation.
- * Used by chromebug; normally FrameProgressListener events trigger UI synchronization,
- * this event allows sync without progress events.
- */
- initializeUI: function(detachArgs)
- {
- },
-
- /**
- * Called by Firebug when Firefox window is closed.
- */
- shutdown: function()
- {
- },
-
- /**
- * Called when a new context is created but before the page is loaded.
- */
- initContext: function(context, persistedState)
- {
- },
-
- /**
- * Called when a context is destroyed. Module may store info on persistedState
- * for reloaded pages.
- */
- destroyContext: function(context, persistedState)
- {
- },
-
- /**
- * Called when attaching to a window (top-level or frame).
- */
- watchWindow: function(context, win)
- {
- },
-
- /**
- * Called when unwatching a window (top-level or frame).
- */
- unwatchWindow: function(context, win)
- {
- },
-
- // Called when a FF tab is create or activated (user changes FF tab)
- // Called after context is created or with context == null (to abort?)
- showContext: function(browser, context)
- {
- },
-
- /**
- * Called after a context's page gets DOMContentLoaded
- */
- loadedContext: function(context)
- {
- },
-
- /*
- * After "onSelectingPanel", a panel has been selected but is not yet visible
- * @param browser a tab's browser element
- * @param panel selectet panel OR null
- */
- showPanel: function(browser, panel)
- {
- },
-
- showSidePanel: function(browser, sidePanel)
- {
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- updateOption: function(name, value)
- {
- },
-
- getObjectByURL: function(context, url)
- {
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // intermodule dependency
-
- // caller needs module. win maybe context.window or iframe in context.window.
- // true means module is ready now, else getting ready
- isReadyElsePreparing: function(context, win)
- {
- },
-});
-
-// ********************************************************************************************* //
-
-Firebug.Extension =
-{
- acceptContext: function(win,uri)
- {
- return false;
- },
-
- declineContext: function(win,uri)
- {
- return false;
- }
-};
-
-// ********************************************************************************************* //
-
-/**
- * @panel Base class for all panels. Every derived panel must define a constructor and
- * register with <code>Firebug.registerPanel</code> method. An instance of the panel
- * object is created by the framework for each browser tab where Firebug is activated.
- */
-Firebug.Panel = Obj.extend(new Firebug.Listener(),
-/** @lends Firebug.Panel */
-{
- searchable: false, // supports search
- editable: true, // clicking on contents in the panel will invoke the inline editor, eg the CSS Style panel or HTML panel.
- breakable: false, // if true, supports break-on-next (the pause button functionality)
- order: 2147483647, // relative position of the panel (or a side panel)
- statusSeparator: "<", // the character used to separate items on the panel status (aka breadcrumbs) in the tool bar, eg ">" in the DOM panel
- enableA11y: false, // true if the panel wants to participate in A11y accessibility support.
- deriveA11yFrom: null, // Name of the panel that uses the same a11y logic.
- inspectable: false, // true to support inspecting elements inside this panel
-
- initialize: function(context, doc)
- {
- if (!context.browser)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("attempt to create panel with dud context!");
- return false;
- }
-
- this.context = context;
- this.document = doc;
-
- this.panelNode = doc.createElement("div");
- this.panelNode.ownerPanel = this;
-
- Css.setClass(this.panelNode, "panelNode panelNode-" + this.name + " contextUID=" +
- context.uid);
-
- // Load persistent content if any.
- var persistedState = Firebug.getPanelState(this);
- if (persistedState)
- {
- this.persistContent = persistedState.persistContent;
- if (this.persistContent && persistedState.panelNode)
- this.loadPersistedContent(persistedState);
- }
-
- // The default value for 'Persist' is set only the first time.
- if (typeof(this.persistContent) == "undefined")
- this.persistContent = Options.get(this.name + ".defaultPersist");
-
- doc.body.appendChild(this.panelNode);
-
- // Update panel's tab in case the break-on-next (BON) is active.
- var shouldBreak = this.shouldBreakOnNext();
- Firebug.Breakpoint.updatePanelTab(this, shouldBreak);
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("firebug.initialize panelNode for " + this.name);
-
- this.initializeNode(this.panelNode);
- },
-
- destroy: function(state) // Panel may store info on state
- {
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("firebug.destroy panelNode for " + this.name);
-
- state.persistContent = this.persistContent;
-
- if (this.panelNode)
- {
- if (this.persistContent)
- this.savePersistedContent(state);
-
- delete this.panelNode.ownerPanel;
- }
-
- this.destroyNode();
-
- // xxxHonza: not exactly sure why, but it helps when testing memory-leask.
- // Note the the selection can point to a document (in case of the HTML panel).
- // Perhaps it breaks a cycle (page -> firebug -> page)?
- delete this.selection;
- delete this.panelBrowser;
- },
-
- savePersistedContent: function(state)
- {
- state.panelNode = this.panelNode;
- },
-
- loadPersistedContent: function(persistedState)
- {
- // move the nodes from the persistedState to the panel
- while (persistedState.panelNode.firstChild)
- this.panelNode.appendChild(persistedState.panelNode.firstChild);
-
- Dom.scrollToBottom(this.panelNode);
- },
-
- // called when a panel in one XUL window is about to disappear to later reappear
- // another XUL window.
- detach: function(oldChrome, newChrome)
- {
- },
-
- // this is how a panel in one window reappears in another window; lazy called
- reattach: function(doc)
- {
- this.document = doc;
-
- if (this.panelNode)
- {
- var scrollTop = this.panelNode.scrollTop;
- this.panelNode = doc.adoptNode(this.panelNode, true);
- this.panelNode.ownerPanel = this;
- doc.body.appendChild(this.panelNode);
- this.panelNode.scrollTop = scrollTop;
- }
- },
-
- // Called at the end of module.initialize; addEventListener-s here
- initializeNode: function(panelNode)
- {
- Events.dispatch(this.fbListeners, "onInitializeNode", [this]);
- },
-
- // removeEventListener-s here.
- destroyNode: function()
- {
- Events.dispatch(this.fbListeners, "onDestroyNode", [this]);
- },
-
- show: function(state) // persistedPanelState plus non-persisted hide() values
- {
- },
-
- hide: function(state) // store info on state for next show.
- {
- },
-
- watchWindow: function(context, win)
- {
- },
-
- unwatchWindow: function(context, win)
- {
- },
-
- loadWindow: function(context, win)
- {
- },
-
- updateOption: function(name, value)
- {
- },
-
- /**
- * Called after chrome.applyTextSize
- * @param zoom: ratio of current size to normal size, eg 1.5
- */
- onTextSizeChange: function(zoom)
- {
-
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Toolbar
-
- showToolbarButtons: function(buttonsId, show)
- {
- try
- {
- var buttons = Firebug.chrome.$(buttonsId);
- Dom.collapse(buttons, !show);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("firebug.Panel showToolbarButtons FAILS "+exc, exc);
- }
- },
-
- onGetPanelToolbarButtons: function(panel, items)
- {
- return [];
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /**
- * Returns a number indicating the view's ability to inspect the object.
- *
- * Zero means not supported, and higher numbers indicate specificity.
- */
- supportsObject: function(object, type)
- {
- return 0;
- },
-
- hasObject: function(object) // beyond type testing, is this object selectable?
- {
- return false;
- },
-
- navigate: function(object)
- {
- // Get default location object if none is specified.
- if (!object)
- object = this.getDefaultLocation();
-
- // Make sure the location is *not* undefined.
- if (!object)
- object = null;
-
- // We should be extra careful when dealing with the |location| object (include
- // converting it to string).
- // There might be cases where the object is removed from the page (e.g. a stylesheet
- // that is currently displayed in the CSS panel) and the panel location not updated.
- //
- // This might happen because of optimalization where backround panels do not observe
- // changes on the page (e.g. using Mutation Observer).
- //
- // The object is a dead wrapper at such moments, firing an exception anytime
- // it's properties or methods are accessed.
- // So, just pass the object back to the panel, which must do proper checking.
- if (!this.location || (object != this.location))
- {
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("Panel.navigate; " + this.name);
-
- this.location = object;
- this.updateLocation(object);
-
- Events.dispatch(Firebug.uiListeners, "onPanelNavigate", [object, this]);
- }
- else
- {
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("Panel.navigate; Skipped for panel " + this.name);
- }
- },
-
- /**
- * The location object has been changed, the panel should update it view
- * @param object a location, must be one of getLocationList() returns
- * if getDefaultLocation() can return null, then updateLocation must handle it here.
- */
- updateLocation: function(object)
- {
- },
-
- select: function(object, forceUpdate)
- {
- if (!object)
- object = this.getDefaultSelection();
-
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+
- object+((object==this.selection)?"==":"!=")+this.selection);
-
- if (forceUpdate || object != this.selection)
- {
- this.selection = object;
- this.updateSelection(object);
-
- Events.dispatch(Firebug.uiListeners, "onObjectSelected", [object, this]);
- }
- },
-
- /**
- * Firebug wants to show an object to the user and this panel has the best supportsObject()
- * result for the object. If the panel displays a container for objects of this type,
- * it should set this.selectedObject = object
- */
- updateSelection: function(object)
- {
- },
-
- /**
- * Redisplay the panel based on the current location and selection
- */
- refresh: function()
- {
- if (this.location)
- this.updateLocation(this.location);
- else if (this.selection)
- this.updateSelection(this.selection);
- },
-
- markChange: function(skipSelf)
- {
- if (this.dependents)
- {
- if (skipSelf)
- {
- for (var i = 0; i < this.dependents.length; ++i)
- {
- var panelName = this.dependents[i];
- if (panelName != this.name)
- this.context.invalidatePanels(panelName);
- }
- }
- else
- this.context.invalidatePanels.apply(this.context, this.dependents);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Inspector
-
- /**
- * Called by the framework when the user starts inspecting. Inspecting must be enabled
- * for the panel (panel.inspectable == true)
- */
- startInspecting: function()
- {
- },
-
- /**
- * Called by the framework when inspecting is in progress and the user moves mouse over
- * a new page element. Inspecting must be enabled for the panel (panel.inspectable == true).
- * This method is called in a timeout to avoid performance penalties when the user moves
- * the mouse over the page elements too fast.
- * @param {Element} node The page element being inspected
- * @returns {Boolean} Returns true if the node should be selected within the panel using
- * the default panel selection mechanism (i.e. by calling panel.select(node) method).
- */
- inspectNode: function(node)
- {
- return true;
- },
-
- /**
- * Called by the framework when the user stops inspecting. Inspecting must be enabled
- * for the panel (panel.inspectable == true)
- * @param {Element} node The last page element inspected
- * @param {Boolean} canceled Set to true if inspecing has been canceled
- * by pressing the escape key.
- */
- stopInspecting: function(node, canceled)
- {
- },
-
- /**
- * Called by the framework when inspecting is in progress. Allows to inspect
- * only nodes that are supported by the panel. Derived panels can provide effective
- * algorithms to provide these nodes.
- * @param {Element} node Currently inspected page element.
- */
- getInspectNode: function(node)
- {
- while (node)
- {
- if (this.supportsObject(node, typeof node))
- return node;
- node = node.parentNode;
- }
- return null;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /*
- * Called by search in the case something was found.
- * This will highlight the given node for a specific timespan. There's only one node
- * highlighted at a time.
- * @param {Node} Node to highlight
- */
- highlightNode: function(node)
- {
- if (this.highlightedNode)
- Css.cancelClassTimed(this.highlightedNode, "jumpHighlight", this.context);
-
- this.highlightedNode = node;
-
- if (node)
- Css.setClassTimed(node, "jumpHighlight", this.context);
- },
-
- /*
- * Called by the framework when panel search is used.
- * This is responsible for finding and highlighting search matches.
- * @param {String} text String to search for
- * @param {Boolean} reverse Indicates, if search is reversed
- * @return true, if search matched, otherwise false
- */
- search: function(text, reverse)
- {
- },
-
- /**
- * Retrieves the search options that this modules supports.
- * This is used by the search UI to present the proper options.
- */
- getSearchOptionsMenuItems: function()
- {
- return [
- Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive",
- "search.tip.Case_Sensitive")
- ];
- },
-
- /**
- * Navigates to the next document whose match parameter returns true.
- */
- navigateToNextDocument: function(match, reverse)
- {
- // This is an approximation of the UI that is displayed by the location
- // selector. This should be close enough, although it may be better
- // to simply generate the sorted list within the module, rather than
- // sorting within the UI.
- var self = this;
- function compare(a, b)
- {
- var locA = self.getObjectDescription(a);
- var locB = self.getObjectDescription(b);
- if (locA.path > locB.path)
- return 1;
- if (locA.path < locB.path)
- return -1;
- if (locA.name > locB.name)
- return 1;
- if (locA.name < locB.name)
- return -1;
- return 0;
- }
-
- var allLocs = this.getLocationList().sort(compare);
- for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++);
-
- function transformIndex(index)
- {
- if (reverse)
- {
- // For the reverse case we need to implement wrap around.
- var intermediate = curPos - index - 1;
- return (intermediate < 0 ? allLocs.length : 0) + intermediate;
- }
- else
- {
- return (curPos + index + 1) % allLocs.length;
- }
- };
-
- for (var next = 0; next < allLocs.length - 1; next++)
- {
- var object = allLocs[transformIndex(next)];
-
- if (match(object))
- {
- this.navigate(object);
- return object;
- }
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- // Called when "Options" clicked. Return array of
- // {label: 'name', nol10n: true, type: "checkbox", checked: <value>,
- // command:function to set <value>}
- getOptionsMenuItems: function()
- {
- return null;
- },
-
- /**
- * Called by chrome.onContextMenu to build the context menu when this panel has focus.
- * See also FirebugRep for a similar function also called by onContextMenu
- * Extensions may monkey patch and chain off this call
- * @param object: the 'realObject', a model value, eg a DOM property
- * @param target: the HTML element clicked on.
- * @return an array of menu items.
- */
- getContextMenuItems: function(object, target)
- {
- return [];
- },
-
- getBreakOnMenuItems: function()
- {
- return [];
- },
-
- getEditor: function(target, value)
- {
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getDefaultSelection: function()
- {
- return null;
- },
-
- browseObject: function(object)
- {
- },
-
- getPopupObject: function(target)
- {
- return Firebug.getRepObject(target);
- },
-
- getTooltipObject: function(target)
- {
- return Firebug.getRepObject(target);
- },
-
- showInfoTip: function(infoTip, x, y)
- {
-
- },
-
- getObjectPath: function(object)
- {
- return null;
- },
-
- // An array of objects that can be passed to getObjectLocation.
- // The list of things a panel can show, eg sourceFiles.
- // Only shown if panel.location defined and supportsObject true
- getLocationList: function()
- {
- return null;
- },
-
- getDefaultLocation: function()
- {
- return null;
- },
-
- getObjectLocation: function(object)
- {
- return "";
- },
-
- // Text for the location list menu eg script panel source file list
- // return.path: group/category label, return.name: item label
- getObjectDescription: function(object)
- {
- var url = this.getObjectLocation(object);
- return Url.splitURLBase(url);
- },
-
- /**
- * UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint
- * @param: show boolean, true turns on.
- */
- highlight: function(show)
- {
- var tab = this.getTab();
- if (!tab)
- return;
-
- if (show)
- tab.setAttribute("highlight", "true");
- else
- tab.removeAttribute("highlight");
- },
-
- getTab: function()
- {
- var chrome = Firebug.chrome;
-
- var tab = chrome.$("fbPanelBar2").getTab(this.name);
- if (!tab)
- tab = chrome.$("fbPanelBar1").getTab(this.name);
- return tab;
- },
-
- /**
- * If the panel supports source viewing, then return a SourceLink, else null
- * @param target an element from the panel under the mouse
- * @param object the realObject under the mouse
- */
- getSourceLink: function(target, object)
- {
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Support for Break On Next
-
- /**
- * Called by the framework to see if the panel currently supports BON
- */
- supportsBreakOnNext: function()
- {
- return this.breakable; // most panels just use this flag
- },
-
- /**
- * Called by the framework when the user clicks on the Break On Next button.
- * @param {Boolean} armed Set to true if the Break On Next feature is
- * to be armed for action and set to false if the Break On Next should be disarmed.
- * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|.
- */
- breakOnNext: function(armed)
- {
- },
-
- /**
- * Called when a panel is selected/displayed. The method should return true
- * if the Break On Next feature is currently armed for this panel.
- */
- shouldBreakOnNext: function()
- {
- return false;
- },
-
- /**
- * Returns labels for Break On Next tooltip (one for enabled and one for disabled state).
- * @param {Boolean} enabled Set to true if the Break On Next feature is
- * currently activated for this panel.
- */
- getBreakOnNextTooltip: function(enabled)
- {
- return null;
- },
-});
-
-// ********************************************************************************************* //
-
-/**
- * @panel This object represents a panel with two states: enabled/disabled. Such support
- * is important for panel that represents performance penalties and it's useful for the
- * user to have the option to disable them.
- *
- * All methods in this object are used on the prototype object (they reprent class methods)
- * and so, |this| points to the panel's prototype and *not* to the panel instance.
- */
-Firebug.ActivablePanel = Obj.extend(Firebug.Panel,
-{
- activable: true,
-
- isActivable: function()
- {
- return this.activable;
- },
-
- isEnabled: function()
- {
- if (!this.isActivable())
- return true;
-
- if (!this.name)
- return false;
-
- return Options.get(this.name+".enableSites");
- },
-
- setEnabled: function(enable)
- {
- if (!this.name || !this.activable)
- return;
-
- Options.set(this.name+".enableSites", enable);
- },
-
- /**
- * Called when an instance of this panel type is enabled or disabled. Again notice that
- * this is a class method and so, panel instance variables (like e.g. context) are
- * not accessible from this method.
- * @param {Object} enable Set to true if this panel type is now enabled.
- */
- onActivationChanged: function(enable)
- {
- // TODO: Use Firebug.ActivableModule.addObserver to express dependencies on modules.
- },
-});
-
-// ********************************************************************************************* //
-
-/**
- * @module Should be used by modules (Firebug specific task controllers) that supports
- * activation. An example of such 'activable' module can be the debugger module
- * {@link Firebug.Debugger}, which can be disabled in order to avoid performance
- * penalties (in cases where the user doesn't need a debugger for the moment).
- */
-Firebug.ActivableModule = Obj.extend(Firebug.Module,
-/** @lends Firebug.ActivableModule */
-{
- /**
- * Every activable module is disabled by default waiting for on a panel
- * that wants to have it enabled (and display provided data). The rule is
- * if there is no panel (view) the module is disabled.
- */
- enabled: false,
-
- /**
- * List of observers (typically panels). If there is at least one observer registered
- * The module becomes active.
- */
- observers: null,
-
- /**
- * List of dependent modules.
- */
- dependents: null,
-
- initialize: function()
- {
- Firebug.Module.initialize.apply(this, arguments);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Observers (dependencies)
-
- hasObservers: function()
- {
- return this.observers ? this.observers.length > 0 : false;
- },
-
- addObserver: function(observer)
- {
- if (!this.observers)
- this.observers = [];
-
- if (this.observers.indexOf(observer) === -1)
- {
- this.observers.push(observer);
- this.onObserverChange(observer); // targeted, not dispatched.
- }
- // else no-op
- },
-
- removeObserver: function(observer)
- {
- if (!this.observers)
- return;
-
- if (this.observers.indexOf(observer) !== -1)
- {
- Arr.remove(this.observers, observer);
- this.onObserverChange(observer); // targeted, not dispatched
- }
- // else no-op
- },
-
- /**
- * This method is called if an observer (e.g. {@link Firebug.Panel}) is added or removed.
- * The module should decide about activation/deactivation upon existence of at least one
- * observer.
- */
- onObserverChange: function(observer)
- {
- if (FBTrace.DBG_WINDOWS)
- FBTrace.sysout("firebug.ActivableModule.onObserverChange;");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Firebug Activation
-
- onSuspendingFirebug: function()
- {
- // Called before any suspend actions. First caller to return true aborts suspend.
- },
-
- onSuspendFirebug: function()
- {
- // When the number of activeContexts decreases to zero. Modules should remove
- // listeners, disable function that takes resources
- },
-
- onResumeFirebug: function()
- {
- // When the number of activeContexts increases from zero. Modules should undo the
- // work done in onSuspendFirebug
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Module enable/disable APIs.
-
- setDefaultState: function(enable)
- {
- //@deprecated
- Firebug.Console.log("Deprecated: don't use ActivableModule.setDefaultState!",
- Firebug.currentContext);
- },
-
- isEnabled: function()
- {
- return this.hasObservers();
- },
-
- isAlwaysEnabled: function()
- {
- return this.hasObservers();
- }
-});
-
-// ********************************************************************************************* //
-
-/**
- * MeasureBox
- * To get pixels size.width and size.height:
- * <ul><li> this.startMeasuring(view); </li>
- * <li> var size = this.measureText(lineNoCharsSpacer); </li>
- * <li> this.stopMeasuring(); </li>
- * </ul>
- */
-Firebug.MeasureBox =
-{
- startMeasuring: function(target)
- {
- if (!this.measureBox)
- {
- this.measureBox = target.ownerDocument.createElement("span");
- this.measureBox.className = "measureBox";
- }
-
- Css.copyTextStyles(target, this.measureBox);
- target.ownerDocument.body.appendChild(this.measureBox);
- },
-
- getMeasuringElement: function()
- {
- return this.measureBox;
- },
-
- measureText: function(value)
- {
- this.measureBox.textContent = value || "m";
- return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
- },
-
- measureInputText: function(value)
- {
- if (!value)
- value = "m";
- if (!Firebug.showTextNodesWithWhitespace)
- value = value.replace(/\t/g, "mmmmmm").replace(/\ /g, "m");
-
- this.measureBox.textContent = value;
- return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
- },
-
- getBox: function(target)
- {
- var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, "");
- var box = Css.getBoxFromStyles(style, this.measureBox);
- return box;
- },
-
- stopMeasuring: function()
- {
- this.measureBox.parentNode.removeChild(this.measureBox);
- }
-};
-
-// ********************************************************************************************* //
-
-with (Domplate) {
-Firebug.Rep = domplate(
-{
- className: "",
- inspectable: true,
-
- supportsObject: function(object, type)
- {
- return false;
- },
-
- highlightObject: function(object, context)
- {
- var realObject = this.getRealObject(object, context);
- if (realObject)
- Firebug.Inspector.highlightObject(realObject, context);
- },
-
- unhighlightObject: function(object, context)
- {
- Firebug.Inspector.highlightObject(null);
- },
-
- inspectObject: function(object, context)
- {
- Firebug.chrome.select(object);
- },
-
- browseObject: function(object, context)
- {
- },
-
- persistObject: function(object, context)
- {
- },
-
- getRealObject: function(object, context)
- {
- return object;
- },
-
- getTitle: function(object)
- {
- if (!object)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("Rep.getTitle; ERROR No object provided");
- return "null object";
- }
-
- try
- {
- if (object.constructor && typeof(object.constructor) == 'function')
- {
- var ctorName = object.constructor.name;
- // xxxsz: Objects with 'Object' as constructor name should also be shown.
- // See issue 6148.
- if (ctorName)
- return ctorName;
- }
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("Rep.getTitle; EXCEPTION " + e, e);
- }
-
- var label = Str.safeToString(object); // eg [object XPCWrappedNative [object foo]]
-
- const re =/\[object ([^\]]*)/;
- var m = re.exec(label);
- var n = null;
- if (m)
- n = re.exec(m[1]); // eg XPCWrappedNative [object foo
-
- if (n)
- return n[1]; // eg foo
- else
- return m ? m[1] : label;
- },
-
- showInfoTip: function(infoTip, target, x, y)
- {
- return false;
- },
-
- getTooltip: function(object)
- {
- return null;
- },
-
- /**
- * Called by chrome.onContextMenu to build the context menu when the underlying object
- * has this rep. See also Panel for a similar function also called by onContextMenu
- * Extensions may monkey patch and chain off this call
- *
- * @param object: the 'realObject', a model value, eg a DOM property
- * @param target: the HTML element clicked on.
- * @param context: the context, probably Firebug.currentContext
- * @return an array of menu items.
- */
- getContextMenuItems: function(object, target, context)
- {
- return [];
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Convenience for domplates
-
- STR: function(name)
- {
- return Locale.$STR(name);
- },
-
- cropString: function(text)
- {
- return Str.cropString(text);
- },
-
- cropMultipleLines: function(text, limit)
- {
- return Str.cropMultipleLines(text, limit);
- },
-
- toLowerCase: function(text)
- {
- return text ? text.toLowerCase() : text;
- },
-
- plural: function(n)
- {
- return n == 1 ? "" : "s";
- }
-});
-};
-
-// ********************************************************************************************* //
-
-Firebug.Migrator =
-{
- /*
- * UI Update from element oldButton to element newButton.
- * On first call, Arrow points from old to new, button OK required
- * After OK, the oldButton is removed and not shown again unless preference is erased.
- */
- migrateButton: function(oldButton, newButton)
- {
- if (Firebug.Migrator.getMigrated(oldButton))
- {
- oldButton.parentNode.removeChild(oldButton);
- return;
- }
-
- function showMigration(event)
- {
- oldButton.removeEventListener('mouseover', showMigration, false);
-
- var endPoint = newButton.getBoundingClientRect();
- var origin = oldButton.getBoundingClientRect();
-
- // A box surrounding both buttons
- var left = Math.min(origin.left, endPoint.left);
- var right = Math.max(origin.right, endPoint.right);
- var top = Math.min(origin.top, endPoint.top);
- var bottom = Math.max(origin.bottom, endPoint.bottom);
-
- var width = right - left;
- var height = bottom - top;
-
- var migrationPanel = Firebug.chrome.$("fbMigrator");
- var panelWidth = Math.max(width, 150);
- var panelHeight = Math.max(height, 150);
- migrationPanel.sizeTo(panelWidth, panelHeight);
-
- // x, y are offsets from the upper left corner of the oldButton, that
- // is the reference point of the 'overlap' position of the popup
- // (Hint, think about all the x values then all the y values.)
- if (left == origin.left)
- {
- var x = 0;
- var x1 = origin.width;
- }
- else
- {
- var x = origin.width - width;
- var x1 = width - origin.width;
- }
- if (top == origin.top)
- {
- var y = 0;
- var y1 = origin.height;
- }
- else
- {
- var y = origin.height - origin;
- var y1 = height - origin.height;
- }
-
- if (left == endPoint.left)
- var x2 = endPoint.width;
- else
- var x2 = width - endPoint.width;
-
- if (top == endPoint.top)
- var y2 = endPoint.height;
- else
- var y2 = height - endPoint.height;
-
- migrationPanel.openPopup(oldButton, 'overlap', x, y, false, true);
-
- Firebug.Migrator.drawMigrationLine(x1, y1, x2, y2);
-
- Firebug.Migrator.removeButtonOnOk(oldButton, migrationPanel);
- }
- oldButton.addEventListener('mouseover', showMigration, false);
- },
-
- drawMigrationLine: function(x1, y1, x2, y2)
- {
- var migrationFrame = Firebug.chrome.$('fbMigrationFrame');
-
- var line = migrationFrame.contentDocument.getElementById("migrationPath");
- line.setAttribute("x1", x1);
- line.setAttribute("x2", x1);
- line.setAttribute("y1", y1);
- line.setAttribute("y2", y1);
-
- var progress = 0;
- var steps = 100;
- var stepStep = 1;
- var xStep = (x2 - x1)/steps;
- var yStep = (y2 - y1)/steps;
- var xCur = x1;
- var yCur = y1;
- Firebug.Migrator.animate = setInterval(function growLine()
- {
- xCur += stepStep*xStep;
- yCur += stepStep*yStep;
- steps -= stepStep;
- if (steps > 50)
- stepStep++;
- else
- stepStep--;
- //FBTrace.sysout("animate steps "+steps+" stepStep "+stepStep+" x "+xCur+" y "+yCur);
- line.setAttribute("x2", xCur);
- line.setAttribute("y2", yCur);
- if (steps < 0)
- clearInterval(animate);
- }, 50);
- },
-
- removeButtonOnOk: function(oldButton, migrationPanel)
- {
- var migrationOk = Firebug.chrome.$('fbMigrationOk');
- migrationOk.addEventListener('click', function migrationComplete(event)
- {
- // xxxHonza, XXXjjb: I have seen an exception saying that oldButton.parentNode is null.
- oldButton.parentNode.removeChild(oldButton);
- Firebug.Migrator.setMigrated(oldButton);
- clearInterval(Firebug.Migrator.animate);
- migrationPanel.hidePopup();
- migrationOk.removeEventListener('click', migrationComplete, true);
- }, true);
- },
-
- getMigrated: function(elt)
- {
- var id = elt.getAttribute('id');
- return Options.get("migrated_"+id);
- },
-
- setMigrated: function(elt)
- {
- var id = elt.getAttribute('id');
- Options.set( "migrated_"+id, true, typeof(true));
- }
-};
-
-// ********************************************************************************************* //
-
-/**
- * If we are detached and the main Firefox window closes, also close the matching Firebug window.
- */
-function shutdownFirebug()
-{
- try
- {
- if (Firebug.isDetached())
- Firebug.chrome.close();
- }
- catch (exc)
- {
- window.dump("Firebug.shutdownFirebug EXCEPTION: " + exc + "\n");
- }
-
- Firebug.shutdown();
-}
-
-if (preFirebugKeys)
-{
- // Add back the preLoad properties
- preFirebugKeys.forEach(function copyProps(key)
- {
- Firebug[key] = PreFirebug[key];
- });
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.Firefox = Firefox;
-Firebug.Domplate = Domplate;
-Firebug.ChromeFactory = ChromeFactory;
-
-return Firebug;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+/**
+ * Firebug module can depend only on modules that don't use the 'Firebug' namespace.
+ * So, be careful before you create a new dependency.
+ */
+define([
+ "firebug/lib/lib",
+ "firebug/lib/object",
+ "firebug/chrome/firefox",
+ "firebug/chrome/chrome",
+ "firebug/lib/domplate",
+ "firebug/lib/options",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/wrapper",
+ "firebug/lib/url",
+ "firebug/lib/css",
+ "firebug/chrome/window",
+ "firebug/lib/string",
+ "firebug/lib/array",
+ "firebug/lib/dom",
+ "firebug/lib/http",
+ "firebug/trace/traceListener",
+ "firebug/console/commandLineExposed",
+],
+function(FBL, Obj, Firefox, ChromeFactory, Domplate, Options, Locale, Events,
+ Wrapper, Url, Css, Win, Str, Arr, Dom, Http, TraceListener, CommandLineExposed) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+const nsISupports = Ci.nsISupports;
+
+const observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
+const categoryManager = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
+const promptService = Cc["@mozilla.org/embedcomp/prompt-service;1"].getService(Ci.nsIPromptService);
+
+const versionURL = "chrome://firebug/content/branch.properties";
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+const scriptBlockSize = 20;
+
+const PLACEMENT_NONE = 0;
+const PLACEMENT_INBROWSER = 1;
+const PLACEMENT_DETACHED = 2;
+const PLACEMENT_MINIMIZED = 3;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+var modules = [];
+var activeContexts = [];
+var activableModules = [];
+var panelTypes = [];
+var earlyRegPanelTypes = []; // See Firebug.registerPanelType for more info
+var reps = [];
+var defaultRep = null;
+var defaultFuncRep = null;
+var menuItemControllers = [];
+var panelTypeMap = {};
+
+// ********************************************************************************************* //
+
+//xxxHonza: we should use the existing Firebug object.
+if (window.Firebug)
+{
+ // Stow the pre-load properties, add them back at the end
+ var PreFirebug = {};
+ var preFirebugKeys = Object.keys(Firebug);
+ preFirebugKeys.forEach(function copyProps(key)
+ {
+ PreFirebug[key] = Firebug[key];
+ });
+}
+
+/**
+ * @class Represents the main Firebug application object. An instance of this object is
+ * created for each browser window (browser.xul).
+ */
+window.Firebug =
+{
+ version: "1.12",
+
+ dispatchName: "Firebug",
+ modules: modules,
+ panelTypes: panelTypes,
+ earlyRegPanelTypes: earlyRegPanelTypes,
+ uiListeners: [],
+ reps: reps,
+
+ stringCropLength: 50,
+
+ isInitialized: false,
+ isLoaded: false,
+
+ migrations: {},
+
+ // Custom stylesheets registered by extensions.
+ stylesheets: [],
+
+ // xxxHonza: hack, all "Firebug.Options" occurences should be replaced by "Options"
+ Options: Options,
+
+ viewChrome: null,
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Initialization
+
+ initialize: function(chrome)
+ {
+ // This says how much time was necessary to load Firebug overlay (+ all script tags).
+ FBTrace.timeEnd("SCRIPTTAG_TIME");
+
+ // Measure the entire Firebug initialization time.
+ FBTrace.time("INITIALIZATION_TIME");
+
+ Firebug.chrome = chrome;
+ Firebug.originalChrome = Firebug.chrome;
+
+ if (FBTrace.sysout && (!FBL || !FBL.initialize))
+ {
+ FBTrace.sysout("Firebug is broken, FBL incomplete, if the last function is QI, " +
+ "check lib.js:", FBL);
+ }
+ else if (FBTrace.DBG_INITIALIZE)
+ {
+ FBTrace.sysout("firebug.initialize FBL: " + FBL);
+ }
+
+ if (window.FBL.legacyApiPatch)
+ window.FBL.legacyApiPatch(FBL, this, Firefox);
+
+ // Till now all registered panels have been inserted into earlyRegPanelTypes.
+ var tempPanelTypes = earlyRegPanelTypes;
+ earlyRegPanelTypes = null;
+ Firebug.completeInitialize(tempPanelTypes);
+ },
+
+ completeInitialize: function(tempPanelTypes)
+ {
+ if (FBL)
+ FBL.initialize(); // non require.js modules
+
+ // Append early registered panels at the end.
+ panelTypes.push.apply(panelTypes, tempPanelTypes);
+
+ // Firebug is getting option-updates from the connection so,
+ // do not register it again here (see issue 6035)
+ //Firebug.Options.addListener(this);
+
+ this.isInitialized = true;
+
+ // Distribute Firebug's preference domain as an argument (see issue 6210).
+ Events.dispatch(modules, "initialize", [Options.prefDomain]);
+
+ // This is the final of Firebug initialization.
+ FBTrace.timeEnd("INITIALIZATION_TIME");
+ },
+
+ sendLoadEvent: function()
+ {
+ this.isLoaded = true;
+
+ var event = document.createEvent("Events");
+ event.initEvent("FirebugLoaded", true, false);
+
+ // Send to the current window/scope (firebugFrame.xul)
+ window.document.dispatchEvent(event);
+
+ // Send to the top window/scope (browser.xul)
+ if (top != window)
+ top.document.dispatchEvent(event);
+ },
+
+ getVersion: function()
+ {
+ if (!this.fullVersion)
+ this.fullVersion = this.loadVersion(versionURL);
+
+ return this.fullVersion;
+ },
+
+ loadVersion: function(versionURL)
+ {
+ var content = Http.getResource(versionURL);
+ if (!content)
+ return "no content at "+versionURL;
+
+ var m = /RELEASE=(.*)/.exec(content);
+ if (m)
+ var release = m[1];
+ else
+ return "no RELEASE in "+versionURL;
+
+ m = /VERSION=(.*)/.exec(content);
+ if (m)
+ var version = m[1];
+ else
+ return "no VERSION in "+versionURL;
+
+ return version+""+release;
+ },
+
+ /**
+ * Substitute strings in the UI, with fall back to en-US
+ */
+ internationalizeUI: function(doc) // TODO chrome.js
+ {
+ if (!doc)
+ return;
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("Firebug.internationalizeUI");
+
+ var elements = doc.getElementsByClassName("fbInternational");
+ elements = Arr.cloneArray(elements);
+ var attributes = ["label", "tooltiptext", "aria-label"];
+ for (var i=0; i<elements.length; i++)
+ {
+ var element = elements[i];
+ Css.removeClass(elements[i], "fbInternational");
+ for (var j=0; j<attributes.length; j++)
+ {
+ if (element.hasAttribute(attributes[j]))
+ Locale.internationalize(element, attributes[j]);
+ }
+ }
+
+ // Allow other modules to internationalize UI labels (called also for
+ // detached Firebug window).
+ Events.dispatch(modules, "internationalizeUI", [doc]);
+ },
+
+ /**
+ * Called when the UI is ready to be initialized, once the panel browsers are loaded,
+ * but before any contexts are created.
+ */
+ initializeUI: function(detachArgs)
+ {
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("firebug.initializeUI detachArgs:", detachArgs);
+
+ Events.dispatch(menuItemControllers, "initialize", []); // TODO chrome.js
+
+ // In the case that the user opens firebug in a new window but then closes Firefox
+ // window, we don't get the quitApplicationGranted event (platform is still running)
+ // and we call shutdown (Firebug isDetached).
+ window.addEventListener('unload', shutdownFirebug, false);
+
+ // Initial activation of registered panel types. All panel -> module dependencies
+ // should be defined now (in onActivationChange). Must be called after
+ // Firebug.TabWatcher is ready.
+ if (Firebug.PanelActivation)
+ Firebug.PanelActivation.activatePanelTypes(panelTypes);
+
+ // Tell the modules the UI is up.
+ Events.dispatch(modules, "initializeUI", [detachArgs]);
+ },
+
+ /**
+ * called in browser when Firefox closes and in externalMode when fbs gets
+ * quitApplicationGranted.
+ */
+ shutdown: function()
+ {
+ if (this.isShutdown)
+ return;
+
+ this.isShutdown = true;
+
+ this.shutdownUI();
+
+ Events.dispatch(modules, "shutdown");
+
+ this.Options.shutdown();
+ this.Options.removeListener(this);
+
+ this.connection.disconnect();
+
+ this.PanelActivation.deactivatePanelTypes(panelTypes);
+
+ // Shutdown all registered extensions.
+ this.unregisterExtensions();
+
+ if (FBTrace.DBG_OBSERVERS)
+ {
+ // import fbObserverService
+ Components.utils.import("resource://firebug/observer-service.js");
+ fbObserverService.traceStacksForTrack();
+ }
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("firebug.shutdown exited ");
+ },
+
+ shutdownUI: function() // TODO chrome.js
+ {
+ window.removeEventListener("unload", shutdownFirebug, false);
+
+ Events.dispatch(modules, "disable", [Firebug.chrome]);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // TODO this entire section to XULWindow
+
+ // TODO XULWindow
+ getSuspended: function()
+ {
+ return Firebug.StartButton.getSuspended();
+ },
+
+ // TODO XULWindow
+ setSuspended: function(value)
+ {
+ Firebug.StartButton.setSuspended(value);
+ },
+
+ // TODO XULWindow IN detached "Activate Firebug for the current website"
+ toggleSuspend: function()
+ {
+ // getSuspended returns non-null value if Firebug is suspended.
+ if (this.getSuspended() || this.isDetached())
+ {
+ // Firebug is suspended now. Two possible actions have been executed:
+ // 1) Firebug UI is closed and the user clicked on the status bar icon in order to
+ // show the UI and resume Firebug.
+ // 2) Firebug is detached, but suspended for the current page. The user clicked
+ // either on the status bar icon or on an activation button that is displayed
+ // within detached Firebug window.
+ this.toggleBar(true);
+ }
+ else
+ {
+ // The users wants to suspend Firebug, let's do it and pull down the visible UI.
+ // xxxHonza: the Firebug isn't suspended if detached and the user clicks on the
+ // status bar icon (the detached window should becoma blank displaying only
+ // the activation button).
+ this.suspend();
+
+ // Close detached Firebug or
+ // show/hide Firebug UI according to the browser.showFirebug flag.
+ if (Firebug.isDetached())
+ this.toggleDetachBar(false);
+ else
+ this.syncBar();
+ }
+ },
+
+ // dispatch suspendFirebug to all windows
+ suspend: function()
+ {
+ if (Firebug.rerun)
+ return;
+
+ Firebug.suspendFirebug();
+ },
+
+ // dispatch onSuspendFirebug to all modules
+ suspendFirebug: function()
+ {
+ var cancelSuspend = Events.dispatch2(activableModules, "onSuspendingFirebug", []);
+ if (cancelSuspend)
+ return;
+
+ this.setSuspended("suspending");
+
+ // TODO no context arg
+ var cancelSuspend = Events.dispatch2(activableModules, "onSuspendFirebug",
+ [Firebug.currentContext]);
+
+ if (cancelSuspend)
+ Firebug.resume();
+ else
+ this.setSuspended("suspended");
+ },
+
+ resume: function()
+ {
+ Firebug.resumeFirebug();
+ },
+
+ resumeFirebug: function() // dispatch onResumeFirebug to all modules
+ {
+ this.setSuspended("resuming");
+
+ // TODO no context arg
+ Events.dispatch(activableModules, 'onResumeFirebug', [Firebug.currentContext]);
+ this.setSuspended(null);
+ },
+
+ getURLsForAllActiveContexts: function()
+ {
+ var contextURLSet = [];
+
+ // create a list of all unique activeContexts
+ Firebug.connection.eachContext(function createActiveContextList(context)
+ {
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("context " + context.getName());
+
+ try
+ {
+ var cw = context.window;
+ if (cw)
+ {
+ var url;
+ if (cw.closed)
+ {
+ url = "about:closed";
+ }
+ else
+ {
+ if ("location" in cw)
+ url = cw.location.toString();
+ else
+ url = context.getName();
+ }
+
+ if (url)
+ {
+ if (contextURLSet.indexOf(url) == -1)
+ contextURLSet.push(url);
+ }
+ }
+ }
+ catch(e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("firebug.getURLsForAllActiveContexts could not get " +
+ "window.location for a context", e);
+ }
+ });
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("active contexts urls " + contextURLSet.length);
+
+ return contextURLSet;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Registration
+
+ /**
+ * Set a default value for a preference into the firebug preferences list.
+ *
+ * @param name preference name, possibly dot segmented, will be stored under
+ * extensions.firebug.<name>
+ * @param value default value of preference
+ * @return true if default set, else false
+ */
+ registerPreference: function(name, value)
+ {
+ Firebug.Options.register(name, value);
+ },
+
+ registerModule: function()
+ {
+ modules.push.apply(modules, arguments);
+
+ // Fire the initialize event for modules that are registered later.
+ if (Firebug.isInitialized)
+ Events.dispatch(arguments, "initialize", []);
+
+ if (FBTrace.DBG_REGISTRATION)
+ {
+ for (var i = 0; i < arguments.length; ++i)
+ FBTrace.sysout("registerModule "+arguments[i].dispatchName);
+ }
+ },
+
+ unregisterModule: function()
+ {
+ for (var i = 0; i < arguments.length; ++i)
+ Arr.remove(modules, arguments[i]);
+
+ // Fire shutdown if module was unregistered dynamically (not on Firebug shutdown).
+ if (!Firebug.isShutdown)
+ Events.dispatch(arguments, "shutdown", []);
+ },
+
+ registerActivableModule: function()
+ {
+ activableModules.push.apply(activableModules, arguments);
+ this.registerModule.apply(this, arguments);
+ },
+
+ registerUIListener: function()
+ {
+ for (var j = 0; j < arguments.length; j++)
+ Firebug.uiListeners.push(arguments[j]);
+ },
+
+ unregisterUIListener: function()
+ {
+ for (var i = 0; i < arguments.length; ++i)
+ Arr.remove(Firebug.uiListeners, arguments[i]);
+ },
+
+ registerPanel: function()
+ {
+ for (var i=0; i<arguments.length; ++i)
+ {
+ var panelName = arguments[i].prototype.name;
+ var panel = panelTypeMap[panelName];
+ if (panel)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("firebug.registerPanel; ERROR a panel with the same " +
+ "ID already registered! " + panelName);
+ }
+ }
+ }
+
+ // In order to keep built in panels (like Console, Script...) be the first one
+ // and insert all panels coming from extension at the end, catch any early registered
+ // panel (i.e. before FBL.initialize is called, such as YSlow) in a temp array
+ // that is appended at the end as soon as FBL.initialize is called.
+ if (earlyRegPanelTypes)
+ earlyRegPanelTypes.push.apply(earlyRegPanelTypes, arguments);
+ else
+ panelTypes.push.apply(panelTypes, arguments);
+
+ for (var i=0; i<arguments.length; ++i)
+ panelTypeMap[arguments[i].prototype.name] = arguments[i];
+
+ if (FBTrace.DBG_REGISTRATION)
+ {
+ for (var i=0; i<arguments.length; ++i)
+ FBTrace.sysout("registerPanel " + arguments[i].prototype.name);
+ }
+
+ // If Firebug is not initialized yet the UI will be updated automatically soon.
+ if (!this.isInitialized)
+ return;
+
+ Firebug.chrome.syncMainPanels();
+ Firebug.chrome.syncSidePanels();
+ },
+
+ unregisterPanel: function(panelType)
+ {
+ var panelName = panelType ? panelType.prototype.name : null;
+
+ if (FBTrace.DBG_REGISTRATION)
+ {
+ FBTrace.sysout("firebug.unregisterPanel: " +
+ (panelName ? panelName : "Undefined panelType"));
+ }
+
+ // Remove all instance of the panel.
+ Firebug.connection.eachContext(function (context)
+ {
+ // An empty state can be probably used at this moment since
+ // we are unregistering the panel anyway.
+ var state = {}; //context.browser.persistedState;
+ context.removePanel(panelType, state);
+ });
+
+ // Now remove panel-type itself.
+ for (var i=0; i<panelTypes.length; i++)
+ {
+ if (panelTypes[i] == panelType)
+ {
+ panelTypes.splice(i, 1);
+ break;
+ }
+ }
+
+ delete panelTypeMap[panelType.prototype.name];
+
+ // We don't have to update Firebug UI if it's just closing.
+ if (this.isShutdown)
+ return;
+
+ // Make sure another panel is selected if the current one is has been removed.
+ var panel = this.chrome.getSelectedPanel();
+ if (panel && panel.name == panelName)
+ Firebug.chrome.selectPanel("html");
+
+ // The panel tab must be removed from the UI.
+ Firebug.chrome.syncMainPanels();
+ Firebug.chrome.syncSidePanels();
+ },
+
+ registerRep: function()
+ {
+ reps.push.apply(reps, arguments);
+ },
+
+ unregisterRep: function()
+ {
+ for (var i = 0; i < arguments.length; ++i)
+ Arr.remove(reps, arguments[i]);
+ },
+
+ setDefaultReps: function(funcRep, rep)
+ {
+ defaultRep = rep;
+ defaultFuncRep = funcRep;
+ },
+
+ registerStringBundle: function(bundleURI)
+ {
+ Locale.registerStringBundle(bundleURI);
+ },
+
+ unregisterStringBundle: function(bundleURI)
+ {
+ // xxxHonza: TODO:
+ },
+
+ /**
+ * Allows registering of custom stylesheet coming from extension. The stylesheet is then
+ * used automatially thorough Firebug UI.
+ * @param {Object} styleURI URI of the stylesheet.
+ */
+ registerStylesheet: function(styleURI)
+ {
+ this.stylesheets.push(styleURI);
+
+ // Append the stylesheet into the UI if Firebug is already loaded
+ if (this.isLoaded)
+ Firebug.chrome.appendStylesheet(styleURI);
+
+ if (FBTrace.DBG_REGISTRATION)
+ FBTrace.sysout("registerStylesheet " + styleURI);
+ },
+
+ unregisterStylesheet: function(styleURI)
+ {
+ // xxxHonza: TODO
+ },
+
+ registerMenuItem: function(menuItemController)
+ {
+ FBTrace.sysout("Firebug.registerMenuItem");
+ menuItemControllers.push(menuItemController);
+ },
+
+ registerTracePrefix: function(prefix, type, removePrefix, styleURI)
+ {
+ var listener = Firebug.TraceModule.getListenerByPrefix(prefix);
+ if (listener && FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("firebug.registerTracePrefix; ERROR " +
+ "there is already such prefix registered!");
+ return;
+ }
+
+ listener = new TraceListener(prefix, type, removePrefix, styleURI);
+ Firebug.TraceModule.addListener(listener);
+ },
+
+ unregisterTracePrefix: function(prefix)
+ {
+ var listener = Firebug.TraceModule.getListenerByPrefix(prefix);
+ if (listener)
+ Firebug.TraceModule.removeListener(listener);
+ },
+
+ registerCommand: function(name, config)
+ {
+ return CommandLineExposed.registerCommand(name, config);
+ },
+
+ unregistereCommand: function(name)
+ {
+ return CommandLineExposed.unregisterCommand(name);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Options
+
+ getPref: function()
+ {
+ // TODO deprecated
+ return Options.getPref.apply(Firebug.Options, arguments);
+ },
+
+ setPref: function()
+ {
+ // TODO deprecated
+ return Options.setPref.apply(Firebug.Options, arguments);
+ },
+
+ clearPref: function()
+ {
+ // TODO deprecated
+ return Options.clearPref.apply(Options, arguments);
+ },
+
+ prefDomain: "extensions.firebug",
+
+ updateOption: function(name, value)
+ {
+ // fbtest changes options which change prefs which trigger updates in fbtrace
+ if (!Firebug.chrome)
+ return;
+
+ // Distribute to the current chrome.
+ Firebug.chrome.updateOption(name, value);
+
+ // If Firebug is detached distribute also into the in-browser chrome.
+ if (Firebug.chrome != Firebug.originalChrome)
+ Firebug.originalChrome.updateOption(name, value);
+
+ Events.dispatch(Firebug.modules, "updateOption", [name, value]);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ shouldIgnore: function(objectChromeView)
+ {
+ if (objectChromeView)
+ {
+ var contentView = Wrapper.unwrapObject(objectChromeView);
+ return (contentView && contentView.firebugIgnore);
+ }
+ // else don't ignore things we don't understand
+ },
+
+ setIgnored: function(objectChromeView)
+ {
+ if (objectChromeView)
+ {
+ var contentView = Wrapper.unwrapObject(objectChromeView);
+ if (contentView)
+ contentView.firebugIgnore = true;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Browser Bottom Bar
+
+ // TODO XULWindow
+ showBar: function(show)
+ {
+ var browser = Firefox.getCurrentBrowser();
+
+ if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("showBar("+show+") for browser "+browser.currentURI.spec+
+ " Firebug.currentContext "+Firebug.currentContext);
+
+ Firebug.chrome.toggleOpen(show);
+
+ if (!show)
+ Firebug.Inspector.inspectNode(null);
+
+ //xxxHonza: should be removed.
+ Events.dispatch(Firebug.uiListeners, show ? "showUI" : "hideUI",
+ [browser, Firebug.currentContext]);
+
+ // Sync panel state after the showUI event is dispatched. syncPanel method calls
+ // Panel.show method, which expects the active context to be already registered.
+ if (show)
+ Firebug.chrome.syncPanel();
+ else
+ Firebug.chrome.selectPanel(); // select null causes hide() on selected
+
+ Firebug.StartButton.resetTooltip();
+ },
+
+ closeFirebug: function(userCommands) // this is really deactivate
+ {
+ if (!Firebug.currentContext)
+ return;
+
+ // It looks like FBTest is calling Firebug.Activation.clearAnnotations()
+ // when there is no current context.
+ //throw new Error("closeFirebug ERROR: no Firebug.currentContext ");
+
+ // Focus the browser window again
+ Firebug.currentContext.window.focus();
+
+ Firebug.connection.closeContext(Firebug.currentContext, userCommands);
+ Firebug.StartButton.resetTooltip();
+ },
+
+ /**
+ * Primary function to activate or minimize firebug. Used by
+ * <ol>
+ * <li>the status bar icon click action</li>
+ * <li>the activation button (within Firebug.xul) click action</li>
+ * </ol>
+ * @param forceOpen: don't minimize, stay open if open.
+ * @param panelName: eg 'script', to select a specific panel.
+ */
+ toggleBar: function(forceOpen, panelName)
+ {
+ if (panelName)
+ Firebug.chrome.selectPanel(panelName);
+ // if is deactivated.
+ if (!Firebug.currentContext)
+ {
+ var context = Firebug.getContext();
+ // Be sure the UI is open for a newly created context.
+ forceOpen = true;
+ }
+
+ if (Firebug.isDetached())
+ {
+ //in detached mode, two possibilities exist, the firebug windows is
+ // the active window of the user or no.
+ if ( !Firebug.chrome.hasFocus() || forceOpen)
+ Firebug.chrome.focus();
+ else
+ Firebug.minimizeBar();
+ }
+ // toggle minimize
+ else if (Firebug.isMinimized())
+ {
+ // be careful, unMinimize func always sets placement to
+ // inbrowser first then unminimizes. when we want to
+ // unminimize in detached mode must call detachBar func.
+ if (Firebug.framePosition == "detached")
+ this.detachBar();
+ else
+ Firebug.unMinimize();
+ }
+ // else isInBrowser
+ else if (!forceOpen)
+ {
+ Firebug.minimizeBar();
+ }
+
+ return true;
+ },
+
+ /**
+ * Get context for the current website
+ */
+ getContext: function()
+ {
+ var webApp = Firebug.connection.getCurrentSelectedWebApp();
+ var context = Firebug.connection.getContextByWebApp(webApp);
+ // we are not debugging the selected tab.
+ if (!context)
+ {
+ context = Firebug.connection.getOrCreateContextByWebApp(webApp);
+ }
+ return context;
+ },
+
+ /**
+ * Primary function to re-show firebug due to visiting active site.
+ * Unlike toggleBar, we are trying to obey the current placement, not change it.
+ */
+ showContext: function(browser, context)
+ {
+ // user wants detached but we are not yet
+ if (Firebug.framePosition == "detached" && !Firebug.isDetached())
+ {
+ if (context && !Firebug.isMinimized()) // don't detach if it's minimized 2067
+ this.detachBar(); // the placement will be set once the external window opens
+ else // just make sure we are not showing
+ this.showBar(false);
+ }
+ else if (Firebug.openMinimized() && !Firebug.isMinimized())
+ this.minimizeBar();
+ else if (Firebug.isMinimized())
+ this.showBar(false); // don't show, we are minimized
+ else if (Firebug.isDetached())
+ Firebug.chrome.syncResumeBox(context);
+ else // inBrowser
+ this.showBar(context?true:false);
+ },
+
+ minimizeBar: function() // just pull down the UI, but don't deactivate the context
+ {
+ if (Firebug.isDetached())
+ {
+ // TODO reattach
+
+ // window is closing in detached mode
+ var parent = this.getFirebugFrameParent();
+ if (parent)
+ {
+ parent.exportFirebug();
+ parent.close();
+ }
+
+ Firebug.setPlacement("minimized");
+ this.showBar(false);
+ Firebug.chrome.focus();
+ }
+ else // inBrowser -> minimized
+ {
+ Firebug.setPlacement("minimized");
+ this.showBar(false);
+
+ // Focus the browser window again
+ if (Firebug.currentContext)
+ Firebug.currentContext.window.focus();
+ }
+ },
+
+ unMinimize: function()
+ {
+ Firebug.setPlacement("inBrowser");
+ Firebug.showBar(true);
+ },
+
+ onShowDetachTooltip: function(tooltip)
+ {
+ tooltip.label = Firebug.isDetached() ? Locale.$STR("firebug.AttachFirebug") :
+ Locale.$STR("firebug.DetachFirebug");
+ return true;
+ },
+
+ /**
+ * function to switch between detached and inbrowser modes.
+ * @param forceOpen: should not be closed, stay open if open or open it.
+ * @param reopenInBrowser: switch from detahced to inbrowser mode.
+ */
+ toggleDetachBar: function(forceOpen, reopenInBrowser)
+ {
+ //detached -> inbrowser
+ if (!forceOpen && Firebug.isDetached())
+ {
+ var parent = this.getFirebugFrameParent();
+ parent.exportFirebug();
+ parent.close();
+
+ if (reopenInBrowser)
+ {
+ // Is Firebug deactivated ? if yes, should be
+ // activated at first, then unminimize.
+ if (!Firebug.currentContext)
+ {
+ var context = Firebug.getContext();
+ }
+ Firebug.unMinimize();
+ }
+ else
+ {
+ Firebug.minimizeBar();
+ }
+
+ Firebug.chrome.syncPositionPref();
+ }
+ // is minimized now but the last time that has been closed, was in detached mode,
+ // so it should be returned to in browser mode because the user has pressed CTRL+F12.
+ else if (Firebug.framePosition == "detached" && Firebug.isMinimized())
+ {
+ Firebug.unMinimize();
+ Firebug.chrome.syncPositionPref();
+ }
+ // else is in browser mode, then switch to detached mode.
+ else
+ {
+ this.detachBar();
+ }
+ },
+
+ closeDetachedWindow: function(userCommands)
+ {
+ Firebug.showBar(false);
+
+ if (Firebug.currentContext)
+ ToolInterface.browser.closeContext(Firebug.currentContext, userCommands);
+
+ // else the user closed Firebug external window while not looking at
+ // a debugged web page.
+ Firebug.StartButton.resetTooltip();
+ },
+
+ detachBar: function()
+ {
+ if (Firebug.isDetached()) // can be set true attachBrowser
+ {
+ Firebug.chrome.focus();
+ return null;
+ }
+
+ if (Firebug.chrome.waitingForDetach)
+ return null;
+
+ Firebug.chrome.waitingForDetach = true;
+ Firebug.chrome.toggleOpen(false); // don't show in browser.xul now
+
+ if (FBTrace.DBG_ACTIVATION)
+ {
+ FBTrace.sysout("Firebug.detachBar opening firebug.xul for context " +
+ Firebug.currentContext.getName() );
+ }
+
+ Firebug.chrome.syncPositionPref("detached");
+
+ return Firefox.openWindow("Firebug",
+ "chrome://firebug/content/firefox/firebug.xul",
+ "", {});
+ },
+
+ // show firebug if we should
+ syncBar: function()
+ {
+ var browser = Firefox.getCurrentBrowser();
+
+ // implicitly this is operating in the chrome of browser.xul
+ this.showBar(browser && browser.showFirebug);
+ },
+
+ toggleCommandLine: function(showCommandEditor)
+ {
+ Options.set("commandEditor", showCommandEditor);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /**
+ * Returns parent of the firebugFrame.xul frame. The actual parent depends on whether
+ * Firebug is attached or detached.
+ *
+ * attached -> browser.xul
+ * detached -> firebug.xul
+ */
+ getFirebugFrameParent: function()
+ {
+ // We need firebug.xul in case of detached state. So, don't use 'top' since
+ // it references browser.xul
+ return Firebug.chrome.window.parent;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // deprecated
+
+ resetAllOptions: function(confirm)
+ {
+ if (confirm)
+ {
+ var promptService = Cc["@mozilla.org/embedcomp/prompt-service;1"].
+ getService(Ci.nsIPromptService);
+
+ // Do not reset options if the user changed its mind.
+ if (!promptService.confirm(null, Locale.$STR("Firebug"),
+ Locale.$STR("confirmation.Reset_All_Firebug_Options")))
+ {
+ return;
+ }
+ }
+
+ // Dispatch to non-module objects.
+ Options.resetAllOptions(confirm);
+
+ // Dispatch to all modules so that additional settings can be reset.
+ Events.dispatch(modules, "resetAllOptions", []);
+
+ // Dispatch to all modules so 'after' actions can be executed.
+ Events.dispatch(modules, "afterResetAllOptions", []);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Panels
+
+ getPanelType: function(panelName)
+ {
+ if (panelTypeMap.hasOwnProperty(panelName))
+ return panelTypeMap[panelName];
+ else
+ return null;
+ },
+
+ getPanelTitle: function(panelType)
+ {
+ if (!panelType)
+ return null;
+
+ return panelType.prototype.title ? panelType.prototype.title
+ : Locale.$STR("Panel-"+panelType.prototype.name);
+ },
+
+ getPanelTooltip: function(panelType)
+ {
+ var tooltip = panelType.prototype.tooltip ? panelType.prototype.tooltip
+ : Locale.$STR("panel.tip."+panelType.prototype.name);
+ return tooltip != panelType.prototype.name ? tooltip : this.getPanelTitle(panelType);
+ },
+
+ getMainPanelTypes: function(context)
+ {
+ var resultTypes = [];
+
+ for (var i = 0; i < panelTypes.length; ++i)
+ {
+ var panelType = panelTypes[i];
+ if (!panelType.prototype.parentPanel)
+ resultTypes.push(panelType);
+ }
+
+ if (context.panelTypes)
+ {
+ for (var i = 0; i < context.panelTypes.length; ++i)
+ {
+ var panelType = context.panelTypes[i];
+ if (!panelType.prototype.parentPanel)
+ resultTypes.push(panelType);
+ }
+ }
+
+ resultTypes.sort(function(a, b)
+ {
+ return a.prototype.order < b.prototype.order ? -1 : 1;
+ });
+
+ return resultTypes;
+ },
+
+ getSidePanelTypes: function(context, mainPanel)
+ {
+ if (!mainPanel)
+ return [];
+
+ var resultTypes = [];
+
+ for (var i = 0; i < panelTypes.length; ++i)
+ {
+ var panelType = panelTypes[i];
+
+ if (panelType.prototype.parentPanel &&
+ (panelType.prototype.parentPanel == mainPanel.name))
+ {
+ resultTypes.push(panelType);
+ }
+ }
+
+ if (context.panelTypes)
+ {
+ for (var i = 0; i < context.panelTypes.length; ++i)
+ {
+ var panelType = context.panelTypes[i];
+ if (panelType.prototype.parentPanel == mainPanel.name)
+ resultTypes.push(panelType);
+ }
+ }
+
+ resultTypes.sort(function(a, b)
+ {
+ return a.prototype.order < b.prototype.order ? -1 : 1;
+ });
+
+ return resultTypes;
+ },
+
+ /**
+ * Returns all panel types, whose activation can be toggled
+ * @returns {Object} Activable panel types
+ */
+ getActivablePanelTypes: function()
+ {
+ var activablePanelTypes = [];
+ for (var i = 0; i < panelTypes.length; ++i)
+ {
+ if (this.PanelActivation.isPanelActivable(panelTypes[i]))
+ activablePanelTypes.push(panelTypes[i]);
+ }
+
+ return activablePanelTypes;
+ },
+
+ /**
+ * Gets an object containing the state of the panel from the last time
+ * it was displayed before one or more page reloads.
+ * The 'null' return here is a too-subtle signal to the panel code in bindings.xml.
+ * Note that panel.context may not have a persistedState, but in addition the persisted
+ * state for panel.name may be null.
+ *
+ * xxxHonza: the method should never return null. The implementation should
+ * just use: Persist.getPersistedState() method.
+ */
+ getPanelState: function(panel)
+ {
+ var persistedState = panel.context.persistedState;
+ if (!persistedState || !persistedState.panelState)
+ return null;
+
+ return persistedState.panelState[panel.name];
+ },
+
+ showPanel: function(browser, panel)
+ {
+ // The panel may be null
+ Events.dispatch(modules, "showPanel", [browser, panel]);
+ },
+
+ showSidePanel: function(browser, sidePanel)
+ {
+ Events.dispatch(modules, "showSidePanel", [browser, sidePanel]);
+ },
+
+ eachPanel: function(callback)
+ {
+ Firebug.connection.eachContext(function iteratePanels(context)
+ {
+ var rc = context.eachPanelInContext(callback);
+ if (rc)
+ return rc;
+ });
+ },
+
+ dispatchToPanels: function(fName, args)
+ {
+ Firebug.eachPanel( function dispatchToPanel(panel)
+ {
+ if (panel[fName])
+ return panel[fName].apply(panel,args);
+ });
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ dispatch: function(listeners, eventId, args)
+ {
+ Events.dispatch(listeners, eventId, args);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // URL mapping
+
+ getObjectByURL: function(context, url)
+ {
+ for (var i = 0; i < modules.length; ++i)
+ {
+ var object = modules[i].getObjectByURL(context, url);
+ if (object)
+ return object;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Reps
+
+ getRep: function(object, context)
+ {
+ var type = typeof(object);
+ if (type == 'object' && object instanceof String)
+ type = 'string';
+
+ for (var i = 0; i < reps.length; ++i)
+ {
+ var rep = reps[i];
+ try
+ {
+ if (rep.supportsObject(object, type, (context?context:Firebug.currentContext) ))
+ {
+ //if (FBTrace.DBG_DOM)
+ // FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
+ return rep;
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("firebug.getRep FAILS: "+ exc, exc);
+ FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: "+
+ (typeof(reps[i])), reps[i]);
+ }
+ }
+ }
+
+ //if (FBTrace.DBG_DOM)
+ // FBTrace.sysout("getRep default type: "+type+" object: "+object, rep);
+
+ return (type == "function") ? defaultFuncRep : defaultRep;
+ },
+
+ getRepObject: function(node)
+ {
+ var target = null;
+ for (var child = node; child; child = child.parentNode)
+ {
+ if (Css.hasClass(child, "repTarget"))
+ target = child;
+
+ if (child.repObject != null)
+ {
+ if (!target && Css.hasClass(child, "repIgnore"))
+ break;
+ else
+ return child.repObject;
+ }
+ }
+ },
+
+ /**
+ * The child node that has a repObject
+ */
+ getRepNode: function(node)
+ {
+ for (var child = node; child; child = child.parentNode)
+ {
+ if (child.repObject != null)
+ return child;
+ }
+ },
+
+ getElementByRepObject: function(element, object)
+ {
+ for (var child = element.firstChild; child; child = child.nextSibling)
+ {
+ if (child.repObject === object)
+ return child;
+ }
+ },
+
+ /**
+ * Takes an element from a panel document and finds the owning panel.
+ */
+ getElementPanel: function(element)
+ {
+ for (; element; element = element.parentNode)
+ {
+ if (element.ownerPanel)
+ return element.ownerPanel;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // nsISupports
+
+ QueryInterface : function(iid)
+ {
+ if (iid.equals(nsISupports))
+ {
+ return this;
+ }
+
+ throw Components.results.NS_NOINTERFACE;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Placement
+
+ isDetached: function()
+ {
+ return Firebug.placement == PLACEMENT_DETACHED;
+ },
+
+ isMinimized: function()
+ {
+ return Firebug.placement == PLACEMENT_MINIMIZED;
+ },
+
+ isInBrowser: function()
+ {
+ return Firebug.placement == PLACEMENT_INBROWSER;
+ },
+
+ placements: ["none", "inBrowser", "detached", "minimized"],
+
+ placement: 1,
+
+ setPlacement: function(toPlacement)
+ {
+ // TODO : This should probably be an event so others can link into this
+ Firebug.chrome.$("fbSearchBox").hideOptions();
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("Firebug.setPlacement from " + Firebug.getPlacement() + " to " +
+ toPlacement + " with chrome " + Firebug.chrome.window.location);
+
+ for (var i=0; i<Firebug.placements.length; i++)
+ {
+ if (toPlacement == Firebug.placements[i])
+ {
+ if (Firebug.placement != i) // then we are changing the value
+ {
+ Firebug.placement = i;
+ delete Firebug.previousPlacement;
+ Options.set("previousPlacement", Firebug.placement);
+ Firebug.StartButton.resetTooltip();
+ }
+ return Firebug.placement;
+ }
+ }
+ throw new Error("Firebug.setPlacement cannot match "+toPlacement+" as a placement");
+ },
+
+ getPlacement: function()
+ {
+ return Firebug.placements[Firebug.placement];
+ },
+
+ openMinimized: function()
+ {
+ if (!Firebug.previousPlacement)
+ Firebug.previousPlacement = Options.get("previousPlacement");
+
+ return (Firebug.previousPlacement && (Firebug.previousPlacement == PLACEMENT_MINIMIZED) );
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Firebug.TabWatcher Listener
+
+ getContextType: function()
+ {
+ return Firebug.TabContext;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /**
+ * This method syncs the UI to a context
+ * @param context to become the active and visible context
+ */
+ selectContext: function(context)
+ {
+ this.showContext(context.browser, context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ focusBrowserTab: function(win) // TODO move to FBL
+ {
+ Firefox.selectTabByWindow(win);
+ this.chrome.focus();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // FBTest
+
+ // Expose our test list to the FBTest console for automated testing.
+ onGetTestList: function(testLists)
+ {
+ testLists.push({
+ extension: "Firebug",
+ testListURL: "http://getfirebug.com/tests/head/firebug.html"
+ });
+ }
+};
+
+// ********************************************************************************************* //
+// API for Greasemonkey, Jetpack and other Firefox extensions
+
+/**
+ * @param global wrapped up global: outer window or sandbox
+ * @return a |console| object for the window
+ */
+Firebug.getConsoleByGlobal = function getConsoleByGlobal(global)
+{
+ try
+ {
+ if (!(global instanceof Window))
+ throw new Error("global is not a Window object");
+ var win = Wrapper.wrapObject(global);
+ return Firebug.Console.getExposedConsole(win);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Firebug.getConsoleByGlobal FAILS " + exc, exc);
+ }
+};
+
+// ********************************************************************************************* //
+
+/**
+ * Support for listeners registration. This object is also extended by Firebug.Module,
+ * so all modules supports listening automatically. Note that an array of listeners is
+ * created for each intance of a module within the initialize method. Thus all derived
+ * module classes must ensure that the Firebug.Module.initialize method is called for the
+ * super class.
+ */
+Firebug.Listener = function()
+{
+ // The array is created when the first listeners is added.
+ // It can't be created here since derived objects would share
+ // the same array.
+ this.fbListeners = null;
+};
+
+Firebug.Listener.prototype =
+{
+ addListener: function(listener)
+ {
+ if (!listener)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("firebug.Listener.addListener; ERROR null listener registered.");
+ return;
+ }
+
+ // Delay the creation until the objects are created so 'this' causes new array
+ // for this object (e.g. module, panel, etc.)
+ if (!this.fbListeners)
+ this.fbListeners = [];
+
+ this.fbListeners.push(listener);
+ },
+
+ removeListener: function(listener)
+ {
+ // if this.fbListeners is null, remove is being called with no add
+ Arr.remove(this.fbListeners, listener);
+ },
+
+ dispatch: function(eventName, args)
+ {
+ if (this.fbListeners && this.fbListeners.length > 0)
+ Events.dispatch(this.fbListeners, eventName, args);
+ },
+
+ dispatch2: function(eventName, args)
+ {
+ if (this.fbListeners && this.fbListeners.length > 0)
+ return Events.dispatch2(this.fbListeners, eventName, args);
+ }
+};
+
+// ********************************************************************************************* //
+
+/**
+ * @module Base class for all modules. Every derived module object must be registered using
+ * <code>Firebug.registerModule</code> method. There is always one instance of a module object
+ * per browser window.
+ */
+Firebug.Module = Obj.extend(new Firebug.Listener(),
+/** @lends Firebug.Module */
+{
+ /**
+ * Called by Firebug when Firefox window is opened.
+ */
+ initialize: function()
+ {
+ },
+
+ /**
+ * Called when the UI is ready for context creation.
+ * Used by chromebug; normally FrameProgressListener events trigger UI synchronization,
+ * this event allows sync without progress events.
+ */
+ initializeUI: function(detachArgs)
+ {
+ },
+
+ /**
+ * Called by Firebug when Firefox window is closed.
+ */
+ shutdown: function()
+ {
+ },
+
+ /**
+ * Called when a new context is created but before the page is loaded.
+ */
+ initContext: function(context, persistedState)
+ {
+ },
+
+ /**
+ * Called when a context is destroyed. Module may store info on persistedState
+ * for reloaded pages.
+ */
+ destroyContext: function(context, persistedState)
+ {
+ },
+
+ /**
+ * Called when attaching to a window (top-level or frame).
+ */
+ watchWindow: function(context, win)
+ {
+ },
+
+ /**
+ * Called when unwatching a window (top-level or frame).
+ */
+ unwatchWindow: function(context, win)
+ {
+ },
+
+ // Called when a FF tab is create or activated (user changes FF tab)
+ // Called after context is created or with context == null (to abort?)
+ showContext: function(browser, context)
+ {
+ },
+
+ /**
+ * Called after a context's page gets DOMContentLoaded
+ */
+ loadedContext: function(context)
+ {
+ },
+
+ /*
+ * After "onSelectingPanel", a panel has been selected but is not yet visible
+ * @param browser a tab's browser element
+ * @param panel selectet panel OR null
+ */
+ showPanel: function(browser, panel)
+ {
+ },
+
+ showSidePanel: function(browser, sidePanel)
+ {
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ updateOption: function(name, value)
+ {
+ },
+
+ getObjectByURL: function(context, url)
+ {
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // intermodule dependency
+
+ // caller needs module. win maybe context.window or iframe in context.window.
+ // true means module is ready now, else getting ready
+ isReadyElsePreparing: function(context, win)
+ {
+ },
+});
+
+// ********************************************************************************************* //
+
+Firebug.Extension =
+{
+ acceptContext: function(win,uri)
+ {
+ return false;
+ },
+
+ declineContext: function(win,uri)
+ {
+ return false;
+ }
+};
+
+// ********************************************************************************************* //
+
+/**
+ * @panel Base class for all panels. Every derived panel must define a constructor and
+ * register with <code>Firebug.registerPanel</code> method. An instance of the panel
+ * object is created by the framework for each browser tab where Firebug is activated.
+ */
+Firebug.Panel = Obj.extend(new Firebug.Listener(),
+/** @lends Firebug.Panel */
+{
+ searchable: false, // supports search
+ editable: true, // clicking on contents in the panel will invoke the inline editor, eg the CSS Style panel or HTML panel.
+ breakable: false, // if true, supports break-on-next (the pause button functionality)
+ order: 2147483647, // relative position of the panel (or a side panel)
+ statusSeparator: "<", // the character used to separate items on the panel status (aka breadcrumbs) in the tool bar, eg ">" in the DOM panel
+ enableA11y: false, // true if the panel wants to participate in A11y accessibility support.
+ deriveA11yFrom: null, // Name of the panel that uses the same a11y logic.
+ inspectable: false, // true to support inspecting elements inside this panel
+
+ initialize: function(context, doc)
+ {
+ if (!context.browser)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("attempt to create panel with dud context!");
+ return false;
+ }
+
+ this.context = context;
+ this.document = doc;
+
+ this.panelNode = doc.createElement("div");
+ this.panelNode.ownerPanel = this;
+
+ Css.setClass(this.panelNode, "panelNode panelNode-" + this.name + " contextUID=" +
+ context.uid);
+
+ // Load persistent content if any.
+ var persistedState = Firebug.getPanelState(this);
+ if (persistedState)
+ {
+ this.persistContent = persistedState.persistContent;
+ if (this.persistContent && persistedState.panelNode)
+ this.loadPersistedContent(persistedState);
+ }
+
+ // The default value for 'Persist' is set only the first time.
+ if (typeof(this.persistContent) == "undefined")
+ this.persistContent = Options.get(this.name + ".defaultPersist");
+
+ doc.body.appendChild(this.panelNode);
+
+ // Update panel's tab in case the break-on-next (BON) is active.
+ var shouldBreak = this.shouldBreakOnNext();
+ Firebug.Breakpoint.updatePanelTab(this, shouldBreak);
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("firebug.initialize panelNode for " + this.name);
+
+ this.initializeNode(this.panelNode);
+ },
+
+ destroy: function(state) // Panel may store info on state
+ {
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("firebug.destroy panelNode for " + this.name);
+
+ state.persistContent = this.persistContent;
+
+ if (this.panelNode)
+ {
+ if (this.persistContent)
+ this.savePersistedContent(state);
+
+ delete this.panelNode.ownerPanel;
+ }
+
+ this.destroyNode();
+
+ // xxxHonza: not exactly sure why, but it helps when testing memory-leask.
+ // Note the the selection can point to a document (in case of the HTML panel).
+ // Perhaps it breaks a cycle (page -> firebug -> page)?
+ delete this.selection;
+ delete this.panelBrowser;
+ },
+
+ savePersistedContent: function(state)
+ {
+ state.panelNode = this.panelNode;
+ },
+
+ loadPersistedContent: function(persistedState)
+ {
+ // move the nodes from the persistedState to the panel
+ while (persistedState.panelNode.firstChild)
+ this.panelNode.appendChild(persistedState.panelNode.firstChild);
+
+ Dom.scrollToBottom(this.panelNode);
+ },
+
+ // called when a panel in one XUL window is about to disappear to later reappear
+ // another XUL window.
+ detach: function(oldChrome, newChrome)
+ {
+ },
+
+ // this is how a panel in one window reappears in another window; lazy called
+ reattach: function(doc)
+ {
+ this.document = doc;
+
+ if (this.panelNode)
+ {
+ var scrollTop = this.panelNode.scrollTop;
+ this.panelNode = doc.adoptNode(this.panelNode, true);
+ this.panelNode.ownerPanel = this;
+ doc.body.appendChild(this.panelNode);
+ this.panelNode.scrollTop = scrollTop;
+ }
+ },
+
+ // Called at the end of module.initialize; addEventListener-s here
+ initializeNode: function(panelNode)
+ {
+ Events.dispatch(this.fbListeners, "onInitializeNode", [this]);
+ },
+
+ // removeEventListener-s here.
+ destroyNode: function()
+ {
+ Events.dispatch(this.fbListeners, "onDestroyNode", [this]);
+ },
+
+ show: function(state) // persistedPanelState plus non-persisted hide() values
+ {
+ },
+
+ hide: function(state) // store info on state for next show.
+ {
+ },
+
+ watchWindow: function(context, win)
+ {
+ },
+
+ unwatchWindow: function(context, win)
+ {
+ },
+
+ loadWindow: function(context, win)
+ {
+ },
+
+ updateOption: function(name, value)
+ {
+ },
+
+ /**
+ * Called after chrome.applyTextSize
+ * @param zoom: ratio of current size to normal size, eg 1.5
+ */
+ onTextSizeChange: function(zoom)
+ {
+
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Toolbar
+
+ showToolbarButtons: function(buttonsId, show)
+ {
+ try
+ {
+ var buttons = Firebug.chrome.$(buttonsId);
+ Dom.collapse(buttons, !show);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("firebug.Panel showToolbarButtons FAILS "+exc, exc);
+ }
+ },
+
+ onGetPanelToolbarButtons: function(panel, items)
+ {
+ return [];
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /**
+ * Returns a number indicating the view's ability to inspect the object.
+ *
+ * Zero means not supported, and higher numbers indicate specificity.
+ */
+ supportsObject: function(object, type)
+ {
+ return 0;
+ },
+
+ hasObject: function(object) // beyond type testing, is this object selectable?
+ {
+ return false;
+ },
+
+ navigate: function(object)
+ {
+ // Get default location object if none is specified.
+ if (!object)
+ object = this.getDefaultLocation();
+
+ // Make sure the location is *not* undefined.
+ if (!object)
+ object = null;
+
+ // We should be extra careful when dealing with the |location| object (include
+ // converting it to string).
+ // There might be cases where the object is removed from the page (e.g. a stylesheet
+ // that is currently displayed in the CSS panel) and the panel location not updated.
+ //
+ // This might happen because of optimalization where backround panels do not observe
+ // changes on the page (e.g. using Mutation Observer).
+ //
+ // The object is a dead wrapper at such moments, firing an exception anytime
+ // it's properties or methods are accessed.
+ // So, just pass the object back to the panel, which must do proper checking.
+ if (!this.location || (object != this.location))
+ {
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("Panel.navigate; " + this.name);
+
+ this.location = object;
+ this.updateLocation(object);
+
+ Events.dispatch(Firebug.uiListeners, "onPanelNavigate", [object, this]);
+ }
+ else
+ {
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("Panel.navigate; Skipped for panel " + this.name);
+ }
+ },
+
+ /**
+ * The location object has been changed, the panel should update it view
+ * @param object a location, must be one of getLocationList() returns
+ * if getDefaultLocation() can return null, then updateLocation must handle it here.
+ */
+ updateLocation: function(object)
+ {
+ },
+
+ select: function(object, forceUpdate)
+ {
+ if (!object)
+ object = this.getDefaultSelection();
+
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+
+ object+((object==this.selection)?"==":"!=")+this.selection);
+
+ if (forceUpdate || object != this.selection)
+ {
+ this.selection = object;
+ this.updateSelection(object);
+
+ Events.dispatch(Firebug.uiListeners, "onObjectSelected", [object, this]);
+ }
+ },
+
+ /**
+ * Firebug wants to show an object to the user and this panel has the best supportsObject()
+ * result for the object. If the panel displays a container for objects of this type,
+ * it should set this.selectedObject = object
+ */
+ updateSelection: function(object)
+ {
+ },
+
+ /**
+ * Redisplay the panel based on the current location and selection
+ */
+ refresh: function()
+ {
+ if (this.location)
+ this.updateLocation(this.location);
+ else if (this.selection)
+ this.updateSelection(this.selection);
+ },
+
+ markChange: function(skipSelf)
+ {
+ if (this.dependents)
+ {
+ if (skipSelf)
+ {
+ for (var i = 0; i < this.dependents.length; ++i)
+ {
+ var panelName = this.dependents[i];
+ if (panelName != this.name)
+ this.context.invalidatePanels(panelName);
+ }
+ }
+ else
+ this.context.invalidatePanels.apply(this.context, this.dependents);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Inspector
+
+ /**
+ * Called by the framework when the user starts inspecting. Inspecting must be enabled
+ * for the panel (panel.inspectable == true)
+ */
+ startInspecting: function()
+ {
+ },
+
+ /**
+ * Called by the framework when inspecting is in progress and the user moves mouse over
+ * a new page element. Inspecting must be enabled for the panel (panel.inspectable == true).
+ * This method is called in a timeout to avoid performance penalties when the user moves
+ * the mouse over the page elements too fast.
+ * @param {Element} node The page element being inspected
+ * @returns {Boolean} Returns true if the node should be selected within the panel using
+ * the default panel selection mechanism (i.e. by calling panel.select(node) method).
+ */
+ inspectNode: function(node)
+ {
+ return true;
+ },
+
+ /**
+ * Called by the framework when the user stops inspecting. Inspecting must be enabled
+ * for the panel (panel.inspectable == true)
+ * @param {Element} node The last page element inspected
+ * @param {Boolean} canceled Set to true if inspecing has been canceled
+ * by pressing the escape key.
+ */
+ stopInspecting: function(node, canceled)
+ {
+ },
+
+ /**
+ * Called by the framework when inspecting is in progress. Allows to inspect
+ * only nodes that are supported by the panel. Derived panels can provide effective
+ * algorithms to provide these nodes.
+ * @param {Element} node Currently inspected page element.
+ */
+ getInspectNode: function(node)
+ {
+ while (node)
+ {
+ if (this.supportsObject(node, typeof node))
+ return node;
+ node = node.parentNode;
+ }
+ return null;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /*
+ * Called by search in the case something was found.
+ * This will highlight the given node for a specific timespan. There's only one node
+ * highlighted at a time.
+ * @param {Node} Node to highlight
+ */
+ highlightNode: function(node)
+ {
+ if (this.highlightedNode)
+ Css.cancelClassTimed(this.highlightedNode, "jumpHighlight", this.context);
+
+ this.highlightedNode = node;
+
+ if (node)
+ Css.setClassTimed(node, "jumpHighlight", this.context);
+ },
+
+ /*
+ * Called by the framework when panel search is used.
+ * This is responsible for finding and highlighting search matches.
+ * @param {String} text String to search for
+ * @param {Boolean} reverse Indicates, if search is reversed
+ * @return true, if search matched, otherwise false
+ */
+ search: function(text, reverse)
+ {
+ },
+
+ /**
+ * Retrieves the search options that this modules supports.
+ * This is used by the search UI to present the proper options.
+ */
+ getSearchOptionsMenuItems: function()
+ {
+ return [
+ Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive",
+ "search.tip.Case_Sensitive")
+ ];
+ },
+
+ /**
+ * Navigates to the next document whose match parameter returns true.
+ */
+ navigateToNextDocument: function(match, reverse)
+ {
+ // This is an approximation of the UI that is displayed by the location
+ // selector. This should be close enough, although it may be better
+ // to simply generate the sorted list within the module, rather than
+ // sorting within the UI.
+ var self = this;
+ function compare(a, b)
+ {
+ var locA = self.getObjectDescription(a);
+ var locB = self.getObjectDescription(b);
+ if (locA.path > locB.path)
+ return 1;
+ if (locA.path < locB.path)
+ return -1;
+ if (locA.name > locB.name)
+ return 1;
+ if (locA.name < locB.name)
+ return -1;
+ return 0;
+ }
+
+ var allLocs = this.getLocationList().sort(compare);
+ for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++);
+
+ function transformIndex(index)
+ {
+ if (reverse)
+ {
+ // For the reverse case we need to implement wrap around.
+ var intermediate = curPos - index - 1;
+ return (intermediate < 0 ? allLocs.length : 0) + intermediate;
+ }
+ else
+ {
+ return (curPos + index + 1) % allLocs.length;
+ }
+ };
+
+ for (var next = 0; next < allLocs.length - 1; next++)
+ {
+ var object = allLocs[transformIndex(next)];
+
+ if (match(object))
+ {
+ this.navigate(object);
+ return object;
+ }
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ // Called when "Options" clicked. Return array of
+ // {label: 'name', nol10n: true, type: "checkbox", checked: <value>,
+ // command:function to set <value>}
+ getOptionsMenuItems: function()
+ {
+ return null;
+ },
+
+ /**
+ * Called by chrome.onContextMenu to build the context menu when this panel has focus.
+ * See also FirebugRep for a similar function also called by onContextMenu
+ * Extensions may monkey patch and chain off this call
+ * @param object: the 'realObject', a model value, eg a DOM property
+ * @param target: the HTML element clicked on.
+ * @return an array of menu items.
+ */
+ getContextMenuItems: function(object, target)
+ {
+ return [];
+ },
+
+ getBreakOnMenuItems: function()
+ {
+ return [];
+ },
+
+ getEditor: function(target, value)
+ {
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getDefaultSelection: function()
+ {
+ return null;
+ },
+
+ browseObject: function(object)
+ {
+ },
+
+ getPopupObject: function(target)
+ {
+ return Firebug.getRepObject(target);
+ },
+
+ getTooltipObject: function(target)
+ {
+ return Firebug.getRepObject(target);
+ },
+
+ showInfoTip: function(infoTip, x, y)
+ {
+
+ },
+
+ getObjectPath: function(object)
+ {
+ return null;
+ },
+
+ // An array of objects that can be passed to getObjectLocation.
+ // The list of things a panel can show, eg sourceFiles.
+ // Only shown if panel.location defined and supportsObject true
+ getLocationList: function()
+ {
+ return null;
+ },
+
+ getDefaultLocation: function()
+ {
+ return null;
+ },
+
+ getObjectLocation: function(object)
+ {
+ return "";
+ },
+
+ // Text for the location list menu eg script panel source file list
+ // return.path: group/category label, return.name: item label
+ getObjectDescription: function(object)
+ {
+ var url = this.getObjectLocation(object);
+ return Url.splitURLBase(url);
+ },
+
+ /**
+ * UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint
+ * @param: show boolean, true turns on.
+ */
+ highlight: function(show)
+ {
+ var tab = this.getTab();
+ if (!tab)
+ return;
+
+ if (show)
+ tab.setAttribute("highlight", "true");
+ else
+ tab.removeAttribute("highlight");
+ },
+
+ getTab: function()
+ {
+ var chrome = Firebug.chrome;
+
+ var tab = chrome.$("fbPanelBar2").getTab(this.name);
+ if (!tab)
+ tab = chrome.$("fbPanelBar1").getTab(this.name);
+ return tab;
+ },
+
+ /**
+ * If the panel supports source viewing, then return a SourceLink, else null
+ * @param target an element from the panel under the mouse
+ * @param object the realObject under the mouse
+ */
+ getSourceLink: function(target, object)
+ {
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Support for Break On Next
+
+ /**
+ * Called by the framework to see if the panel currently supports BON
+ */
+ supportsBreakOnNext: function()
+ {
+ return this.breakable; // most panels just use this flag
+ },
+
+ /**
+ * Called by the framework when the user clicks on the Break On Next button.
+ * @param {Boolean} armed Set to true if the Break On Next feature is
+ * to be armed for action and set to false if the Break On Next should be disarmed.
+ * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|.
+ */
+ breakOnNext: function(armed)
+ {
+ },
+
+ /**
+ * Called when a panel is selected/displayed. The method should return true
+ * if the Break On Next feature is currently armed for this panel.
+ */
+ shouldBreakOnNext: function()
+ {
+ return false;
+ },
+
+ /**
+ * Returns labels for Break On Next tooltip (one for enabled and one for disabled state).
+ * @param {Boolean} enabled Set to true if the Break On Next feature is
+ * currently activated for this panel.
+ */
+ getBreakOnNextTooltip: function(enabled)
+ {
+ return null;
+ },
+});
+
+// ********************************************************************************************* //
+
+/**
+ * @panel This object represents a panel with two states: enabled/disabled. Such support
+ * is important for panel that represents performance penalties and it's useful for the
+ * user to have the option to disable them.
+ *
+ * All methods in this object are used on the prototype object (they reprent class methods)
+ * and so, |this| points to the panel's prototype and *not* to the panel instance.
+ */
+Firebug.ActivablePanel = Obj.extend(Firebug.Panel,
+{
+ activable: true,
+
+ isActivable: function()
+ {
+ return this.activable;
+ },
+
+ isEnabled: function()
+ {
+ if (!this.isActivable())
+ return true;
+
+ if (!this.name)
+ return false;
+
+ return Options.get(this.name+".enableSites");
+ },
+
+ setEnabled: function(enable)
+ {
+ if (!this.name || !this.activable)
+ return;
+
+ Options.set(this.name+".enableSites", enable);
+ },
+
+ /**
+ * Called when an instance of this panel type is enabled or disabled. Again notice that
+ * this is a class method and so, panel instance variables (like e.g. context) are
+ * not accessible from this method.
+ * @param {Object} enable Set to true if this panel type is now enabled.
+ */
+ onActivationChanged: function(enable)
+ {
+ // TODO: Use Firebug.ActivableModule.addObserver to express dependencies on modules.
+ },
+});
+
+// ********************************************************************************************* //
+
+/**
+ * @module Should be used by modules (Firebug specific task controllers) that supports
+ * activation. An example of such 'activable' module can be the debugger module
+ * {@link Firebug.Debugger}, which can be disabled in order to avoid performance
+ * penalties (in cases where the user doesn't need a debugger for the moment).
+ */
+Firebug.ActivableModule = Obj.extend(Firebug.Module,
+/** @lends Firebug.ActivableModule */
+{
+ /**
+ * Every activable module is disabled by default waiting for on a panel
+ * that wants to have it enabled (and display provided data). The rule is
+ * if there is no panel (view) the module is disabled.
+ */
+ enabled: false,
+
+ /**
+ * List of observers (typically panels). If there is at least one observer registered
+ * The module becomes active.
+ */
+ observers: null,
+
+ /**
+ * List of dependent modules.
+ */
+ dependents: null,
+
+ initialize: function()
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Observers (dependencies)
+
+ hasObservers: function()
+ {
+ return this.observers ? this.observers.length > 0 : false;
+ },
+
+ addObserver: function(observer)
+ {
+ if (!this.observers)
+ this.observers = [];
+
+ if (this.observers.indexOf(observer) === -1)
+ {
+ this.observers.push(observer);
+ this.onObserverChange(observer); // targeted, not dispatched.
+ }
+ // else no-op
+ },
+
+ removeObserver: function(observer)
+ {
+ if (!this.observers)
+ return;
+
+ if (this.observers.indexOf(observer) !== -1)
+ {
+ Arr.remove(this.observers, observer);
+ this.onObserverChange(observer); // targeted, not dispatched
+ }
+ // else no-op
+ },
+
+ /**
+ * This method is called if an observer (e.g. {@link Firebug.Panel}) is added or removed.
+ * The module should decide about activation/deactivation upon existence of at least one
+ * observer.
+ */
+ onObserverChange: function(observer)
+ {
+ if (FBTrace.DBG_WINDOWS)
+ FBTrace.sysout("firebug.ActivableModule.onObserverChange;");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Firebug Activation
+
+ onSuspendingFirebug: function()
+ {
+ // Called before any suspend actions. First caller to return true aborts suspend.
+ },
+
+ onSuspendFirebug: function()
+ {
+ // When the number of activeContexts decreases to zero. Modules should remove
+ // listeners, disable function that takes resources
+ },
+
+ onResumeFirebug: function()
+ {
+ // When the number of activeContexts increases from zero. Modules should undo the
+ // work done in onSuspendFirebug
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Module enable/disable APIs.
+
+ setDefaultState: function(enable)
+ {
+ //@deprecated
+ Firebug.Console.log("Deprecated: don't use ActivableModule.setDefaultState!",
+ Firebug.currentContext);
+ },
+
+ isEnabled: function()
+ {
+ return this.hasObservers();
+ },
+
+ isAlwaysEnabled: function()
+ {
+ return this.hasObservers();
+ }
+});
+
+// ********************************************************************************************* //
+
+/**
+ * MeasureBox
+ * To get pixels size.width and size.height:
+ * <ul><li> this.startMeasuring(view); </li>
+ * <li> var size = this.measureText(lineNoCharsSpacer); </li>
+ * <li> this.stopMeasuring(); </li>
+ * </ul>
+ */
+Firebug.MeasureBox =
+{
+ startMeasuring: function(target)
+ {
+ if (!this.measureBox)
+ {
+ this.measureBox = target.ownerDocument.createElement("span");
+ this.measureBox.className = "measureBox";
+ }
+
+ Css.copyTextStyles(target, this.measureBox);
+ target.ownerDocument.body.appendChild(this.measureBox);
+ },
+
+ getMeasuringElement: function()
+ {
+ return this.measureBox;
+ },
+
+ measureText: function(value)
+ {
+ this.measureBox.textContent = value || "m";
+ return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
+ },
+
+ measureInputText: function(value)
+ {
+ if (!value)
+ value = "m";
+ if (!Firebug.showTextNodesWithWhitespace)
+ value = value.replace(/\t/g, "mmmmmm").replace(/\ /g, "m");
+
+ this.measureBox.textContent = value;
+ return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
+ },
+
+ getBox: function(target)
+ {
+ var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, "");
+ var box = Css.getBoxFromStyles(style, this.measureBox);
+ return box;
+ },
+
+ stopMeasuring: function()
+ {
+ this.measureBox.parentNode.removeChild(this.measureBox);
+ }
+};
+
+// ********************************************************************************************* //
+
+with (Domplate) {
+Firebug.Rep = domplate(
+{
+ className: "",
+ inspectable: true,
+
+ supportsObject: function(object, type)
+ {
+ return false;
+ },
+
+ highlightObject: function(object, context)
+ {
+ var realObject = this.getRealObject(object, context);
+ if (realObject)
+ Firebug.Inspector.highlightObject(realObject, context);
+ },
+
+ unhighlightObject: function(object, context)
+ {
+ Firebug.Inspector.highlightObject(null);
+ },
+
+ inspectObject: function(object, context)
+ {
+ Firebug.chrome.select(object);
+ },
+
+ browseObject: function(object, context)
+ {
+ },
+
+ persistObject: function(object, context)
+ {
+ },
+
+ getRealObject: function(object, context)
+ {
+ return object;
+ },
+
+ getTitle: function(object)
+ {
+ if (!object)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Rep.getTitle; ERROR No object provided");
+ return "null object";
+ }
+
+ try
+ {
+ if (object.constructor && typeof(object.constructor) == 'function')
+ {
+ var ctorName = object.constructor.name;
+ // xxxsz: Objects with 'Object' as constructor name should also be shown.
+ // See issue 6148.
+ if (ctorName)
+ return ctorName;
+ }
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Rep.getTitle; EXCEPTION " + e, e);
+ }
+
+ var label = Str.safeToString(object); // eg [object XPCWrappedNative [object foo]]
+
+ const re =/\[object ([^\]]*)/;
+ var m = re.exec(label);
+ var n = null;
+ if (m)
+ n = re.exec(m[1]); // eg XPCWrappedNative [object foo
+
+ if (n)
+ return n[1]; // eg foo
+ else
+ return m ? m[1] : label;
+ },
+
+ showInfoTip: function(infoTip, target, x, y)
+ {
+ return false;
+ },
+
+ getTooltip: function(object)
+ {
+ return null;
+ },
+
+ /**
+ * Called by chrome.onContextMenu to build the context menu when the underlying object
+ * has this rep. See also Panel for a similar function also called by onContextMenu
+ * Extensions may monkey patch and chain off this call
+ *
+ * @param object: the 'realObject', a model value, eg a DOM property
+ * @param target: the HTML element clicked on.
+ * @param context: the context, probably Firebug.currentContext
+ * @return an array of menu items.
+ */
+ getContextMenuItems: function(object, target, context)
+ {
+ return [];
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Convenience for domplates
+
+ STR: function(name)
+ {
+ return Locale.$STR(name);
+ },
+
+ cropString: function(text)
+ {
+ return Str.cropString(text);
+ },
+
+ cropMultipleLines: function(text, limit)
+ {
+ return Str.cropMultipleLines(text, limit);
+ },
+
+ toLowerCase: function(text)
+ {
+ return text ? text.toLowerCase() : text;
+ },
+
+ plural: function(n)
+ {
+ return n == 1 ? "" : "s";
+ }
+});
+};
+
+// ********************************************************************************************* //
+
+Firebug.Migrator =
+{
+ /*
+ * UI Update from element oldButton to element newButton.
+ * On first call, Arrow points from old to new, button OK required
+ * After OK, the oldButton is removed and not shown again unless preference is erased.
+ */
+ migrateButton: function(oldButton, newButton)
+ {
+ if (Firebug.Migrator.getMigrated(oldButton))
+ {
+ oldButton.parentNode.removeChild(oldButton);
+ return;
+ }
+
+ function showMigration(event)
+ {
+ oldButton.removeEventListener('mouseover', showMigration, false);
+
+ var endPoint = newButton.getBoundingClientRect();
+ var origin = oldButton.getBoundingClientRect();
+
+ // A box surrounding both buttons
+ var left = Math.min(origin.left, endPoint.left);
+ var right = Math.max(origin.right, endPoint.right);
+ var top = Math.min(origin.top, endPoint.top);
+ var bottom = Math.max(origin.bottom, endPoint.bottom);
+
+ var width = right - left;
+ var height = bottom - top;
+
+ var migrationPanel = Firebug.chrome.$("fbMigrator");
+ var panelWidth = Math.max(width, 150);
+ var panelHeight = Math.max(height, 150);
+ migrationPanel.sizeTo(panelWidth, panelHeight);
+
+ // x, y are offsets from the upper left corner of the oldButton, that
+ // is the reference point of the 'overlap' position of the popup
+ // (Hint, think about all the x values then all the y values.)
+ if (left == origin.left)
+ {
+ var x = 0;
+ var x1 = origin.width;
+ }
+ else
+ {
+ var x = origin.width - width;
+ var x1 = width - origin.width;
+ }
+ if (top == origin.top)
+ {
+ var y = 0;
+ var y1 = origin.height;
+ }
+ else
+ {
+ var y = origin.height - origin;
+ var y1 = height - origin.height;
+ }
+
+ if (left == endPoint.left)
+ var x2 = endPoint.width;
+ else
+ var x2 = width - endPoint.width;
+
+ if (top == endPoint.top)
+ var y2 = endPoint.height;
+ else
+ var y2 = height - endPoint.height;
+
+ migrationPanel.openPopup(oldButton, 'overlap', x, y, false, true);
+
+ Firebug.Migrator.drawMigrationLine(x1, y1, x2, y2);
+
+ Firebug.Migrator.removeButtonOnOk(oldButton, migrationPanel);
+ }
+ oldButton.addEventListener('mouseover', showMigration, false);
+ },
+
+ drawMigrationLine: function(x1, y1, x2, y2)
+ {
+ var migrationFrame = Firebug.chrome.$('fbMigrationFrame');
+
+ var line = migrationFrame.contentDocument.getElementById("migrationPath");
+ line.setAttribute("x1", x1);
+ line.setAttribute("x2", x1);
+ line.setAttribute("y1", y1);
+ line.setAttribute("y2", y1);
+
+ var progress = 0;
+ var steps = 100;
+ var stepStep = 1;
+ var xStep = (x2 - x1)/steps;
+ var yStep = (y2 - y1)/steps;
+ var xCur = x1;
+ var yCur = y1;
+ Firebug.Migrator.animate = setInterval(function growLine()
+ {
+ xCur += stepStep*xStep;
+ yCur += stepStep*yStep;
+ steps -= stepStep;
+ if (steps > 50)
+ stepStep++;
+ else
+ stepStep--;
+ //FBTrace.sysout("animate steps "+steps+" stepStep "+stepStep+" x "+xCur+" y "+yCur);
+ line.setAttribute("x2", xCur);
+ line.setAttribute("y2", yCur);
+ if (steps < 0)
+ clearInterval(animate);
+ }, 50);
+ },
+
+ removeButtonOnOk: function(oldButton, migrationPanel)
+ {
+ var migrationOk = Firebug.chrome.$('fbMigrationOk');
+ migrationOk.addEventListener('click', function migrationComplete(event)
+ {
+ // xxxHonza, XXXjjb: I have seen an exception saying that oldButton.parentNode is null.
+ oldButton.parentNode.removeChild(oldButton);
+ Firebug.Migrator.setMigrated(oldButton);
+ clearInterval(Firebug.Migrator.animate);
+ migrationPanel.hidePopup();
+ migrationOk.removeEventListener('click', migrationComplete, true);
+ }, true);
+ },
+
+ getMigrated: function(elt)
+ {
+ var id = elt.getAttribute('id');
+ return Options.get("migrated_"+id);
+ },
+
+ setMigrated: function(elt)
+ {
+ var id = elt.getAttribute('id');
+ Options.set( "migrated_"+id, true, typeof(true));
+ }
+};
+
+// ********************************************************************************************* //
+
+/**
+ * If we are detached and the main Firefox window closes, also close the matching Firebug window.
+ */
+function shutdownFirebug()
+{
+ try
+ {
+ if (Firebug.isDetached())
+ Firebug.chrome.close();
+ }
+ catch (exc)
+ {
+ window.dump("Firebug.shutdownFirebug EXCEPTION: " + exc + "\n");
+ }
+
+ Firebug.shutdown();
+}
+
+if (preFirebugKeys)
+{
+ // Add back the preLoad properties
+ preFirebugKeys.forEach(function copyProps(key)
+ {
+ Firebug[key] = PreFirebug[key];
+ });
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.Firefox = Firefox;
+Firebug.Domplate = Domplate;
+Firebug.ChromeFactory = ChromeFactory;
+
+return Firebug;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/firebugOverlay.xul b/content/firebug/firebugOverlay.xul
index 0e3a27a..81eb7d9 100644
--- a/content/firebug/firebugOverlay.xul
+++ b/content/firebug/firebugOverlay.xul
@@ -1,539 +1,539 @@
-<?xml version="1.0"?>
-<!-- See license.txt for terms of usage -->
-
-<?xul-overlay href="firefox/firebugMenuOverlay.xul"?>
-<?xul-overlay href="chrome://firebug/content/cookies/cookiePanel.xul"?>
-
-<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- xmlns:html="http://www.w3.org/1999/xhtml">
-
- <stringbundleset id="stringbundleset">
- <stringbundle id="strings_firebug" src="chrome://firebug/locale/firebug.properties"/>
- </stringbundleset>
-
- <popupset id="mainPopupSet">
- <menupopup id="fbContextMenu" onpopupshowing="return Firebug.chrome.onContextShowing(event);">
- <menuitem label="Copy" command="cmd_copy" class="fbInternational"/>
- </menupopup>
-
- <menupopup id="fbInlineEditorPopup" />
-
- <tooltip id="fbTooltip" class="fbURLMenuItem"
- onpopupshowing="return Firebug.chrome.onTooltipShowing(event);"/>
-
- <panel id="fbQuickInfoPanel" width="210" noautofocus="true"
- onmousedown="Firebug.QuickInfoBox.quickInfoBoxHandler(event);"
- onmouseover="Firebug.QuickInfoBox.quickInfoBoxHandler(event);"
- onmouseout="Firebug.QuickInfoBox.quickInfoBoxHandler(event);">
- <vbox></vbox>
- </panel>
-
- <menupopup id="fbNavigationHistoryMenu"
- oncommand="Firebug.NavigationHistory.onHistoryCommand(event, Firebug.currentContext)"
- onpopupshowing="return Firebug.NavigationHistory.onPopupShowing(this, Firebug.currentContext)" />
-
- <panel id="fbCommandLineCompletionList" class="fbCommandLineCompletionPanel"
- noautofocus="true">
- </panel>
-
- <menupopup id="fbCommandHistory" noautofocus="true" ignorekeys="true">
- </menupopup>
-
- <!-- Context menu for the Command Editor -->
- <menupopup id="fbCommandEditorPopup" />
- </popupset>
-
- <!-- Main UI -->
- <vbox id="fbContentBox">
- <box id="fbPanelBox" flex="1">
- <panelBar id="fbPanelBar1" class="panelBar" flex="3" persist="width,height">
- <hbox id="fbPanelBar1-tabBox" class="panelTabBox">
- <hbox id="fbPanelBar1-innerToolbar" class="innerToolbar fbInternational"
- role="toolbar" aria-label="a11y.labels.firebug_tools">
- <hbox id="fbPanelBar1-buttons">
-
- <!-- Firebug Icon Menu -->
- <toolbarbutton id="fbFirebugMenu" type="menu"
- tooltiptext="firebug_options"
- role="button" aria-haspopup="true" owns="fbFirebugMenuPopup"
- class="fbInternational">
-
- <!-- Button image-->
- <image src="chrome://firebug/skin/firebug.png"/>
-
- <menupopup id="menu_firebug_iconMenu" class="fbFirebugMenuPopup"
- onpopupshowing="return Firebug.browserOverlay.onMenuShowing(this, event);"
- onpopuphiding="return Firebug.browserOverlay.onMenuHiding(this, event);">
- <!-- Content comes from firebugMenuContent -->
- </menupopup>
- </toolbarbutton>
-
- <!-- HTML Inspector -->
- <toolbarbutton id="fbInspectButton" tooltiptext="firebug.InspectTooltip"
- command="cmd_firebug_toggleInspecting" collapsed="false"
- class="fbInternational">
- </toolbarbutton>
-
- <toolbarseparator id="fbInspectSeparator"/>
-
- <!-- History of Navigation -->
- <toolbaritem contextmenu="fbNavigationHistoryMenu" class="noTabStop">
- <toolbarbutton id="fbNavigateBackButton" disabled="true"
- tooltiptext="firebug.history.Go back"
- command="cmd_firebug_navBack" class="fbInternational"/>
- <toolbarbutton id="fbNavigateForwardButton" disabled="true"
- tooltiptext="firebug.history.Go forward"
- command="cmd_firebug_navForward" class="fbInternational"/>
- </toolbaritem>
-
- <toolbarseparator id="fbNavigationSeparator"/>
-
- <toolbarbutton id="fbCommandPopupButton"
- tooltiptext="panel.tooltip.Show_Command_Line_Popup"
- command="cmd_firebug_toggleCommandPopup" class="fbInternational">
- </toolbarbutton>
- </hbox>
-
- <!-- Panel selector (list of all panels) -->
- <panelBarTabList id="panelBarTabList" tooltiptext="firebug.panel selector"
- class="fbInternational"/>
- </hbox>
-
- <!-- xxxHonza: ltr should come from &locale.dir; -->
- <panelBarArrowscrollbox id="fbPanelBar1-Arrowscrollbox" orient="horizontal"
- flex="100" chromedir="ltr"
- clicktoscroll="true"
- class="panelbar-arrowscrollbox">
-
- <!-- Tab Bar -->
- <hbox id="fbPanelBar1-panelTabs" class="panelTabs" role="tablist"
- aria-label="firebug panels" />
- </panelBarArrowscrollbox>
-
- <!-- Search Box -->
- <splitter resizebefore="flex" resizeafter="flex" class="fbsearch-splitter"/>
- <textbox flex="70" id="fbSearchBox" type="fbSearchBox"/>
-
- <!-- Open In New Window & Minimize & Close -->
- <hbox id="fbWindowButtons" role="toolbar" class="innerToolbar"
- aria-label="firebug window" context="_child">
- <menupopup onpopupshowing="Firebug.browserOverlay.onPositionPopupShowing(this)"/>
- <toolbarbutton id="fbMinimizeButton"
- class="toolbarbutton-iconic fbInternational"
- tooltiptext="Minimize Firebug" command="cmd_firebug_minimizeFirebug"/>
- <tooltip id="fbDetachButtonTooltip"
- onpopupshowing="return Firebug.onShowDetachTooltip(this)"/>
- <toolbarbutton id="fbDetachButton" class="toolbarbutton-iconic"
- tooltip="fbDetachButtonTooltip" command="cmd_firebug_detachFirebug"/>
- <toolbarbutton id="fbCloseButton"
- class="toolbarbutton-iconic fbInternational"
- tooltiptext="firebug.tip.Deactivate_Firebug" command="cmd_firebug_closeFirebug"/>
- </hbox>
- </hbox>
-
- <!-- Firebug Panels Content -->
- <box id="fbPanelPane" flex="1" persist="orient">
-
- <vbox flex="3">
- <toolbox id="fbToolbox">
- <toolbar id="fbToolbar" align="center" role="toolbar">
-
- <hbox id="fbToolbarInner" class="innerToolbar"
- insertbefore="fbDetachButton" flex="1" align="center">
-
- <!-- Break On Next -->
- <hbox id="fbBonButtons" collapsed="true" class="noTabStop">
- <toolbarbutton id="fbBreakOnNextButton"
- command="cmd_firebug_toggleBreakOn"
- tooltiptext="script.Break On Next" breakable="disabled"
- class="fbInternational">
- <stack id="fbBreakOnNextButtonStack">
- <image id="fbBreakOnImage" class="fbBreakOnImage"></image>
- <image id="fbBreakOnImageArmed" class="fbBreakOnImage"></image>
- <!-- Badges -->
- <image id="fbBreakOnImageError" class="fbBreakOnImage"></image>
- <image id="fbBreakOnImageMutate" class="fbBreakOnImage"></image>
- <image id="fbBreakOnImageNext" class="fbBreakOnImage"></image>
- <image id="fbBreakOnImageXHR" class="fbBreakOnImage"></image>
- </stack>
- </toolbarbutton>
- </hbox>
-
- <hbox id="fbConsoleButtons" collapsed="true" class="noTabStop">
- <toolbarseparator class="fbPanelSpecificButtonsSeparator"/>
- <toolbarbutton id="fbConsoleClear" label="firebug.Clear"
- class="toolbar-text-button fbInternational"
- tooltiptext="firebug.ClearTooltip" command="cmd_firebug_clearConsole"/>
- <toolbarbutton id="fbConsolePersist"
- label="firebug.console.Persist"
- class="toolbar-text-button fbInternational"
- type="checkbox"
- tooltiptext="firebug.console.Do_Not_Clear_On_Reload2"
- command="cmd_firebug_togglePersistConsole"/>
- <toolbarbutton id="fbToggleProfiling" label="firebug.Profile"
- class="toolbar-text-button fbInternational"
- type="checkbox" command="cmd_firebug_toggleProfiling"/>
- <!-- <toolbarbutton id="fbToggleMemoryProfiling" label="firebug.Memory Profile"
- class="toolbar-text-button fbInternational"
- type="checkbox" command="cmd_firebug_toggleMemoryProfiling"/> -->
- <toolbarseparator class="fbPanelSpecificButtonsSeparator"/>
- <hbox id="fbConsoleFilterButtons" class="noTabStop">
- <toolbarbutton
- id="fbConsoleFilter-all"
- type="checkbox"
- label="firebug.console.All"
- class="toolbar-text-button fbConsoleFilter fbInternational"
- tooltiptext="firebug.console.Show All Log Entries"
- oncommand="Firebug.Console.onToggleFilter(event, Firebug.currentContext, 'all')"/>
- <toolbarbutton
- id="fbConsoleFilter-error"
- type="checkbox"
- label="firebug.console.Errors"
- class="toolbar-text-button fbConsoleFilter fbInternational"
- tooltiptext="firebug.console.Filter by Errors"
- oncommand="Firebug.Console.onToggleFilter(event, Firebug.currentContext, 'error')"/>
- <toolbarbutton
- id="fbConsoleFilter-warning"
- type="checkbox"
- label="firebug.console.Warnings"
- class="toolbar-text-button fbConsoleFilter fbInternational"
- tooltiptext="firebug.console.Filter by Warnings"
- oncommand="Firebug.Console.onToggleFilter(event, Firebug.currentContext, 'warning')"/>
- <toolbarbutton
- id="fbConsoleFilter-info"
- type="checkbox"
- label="firebug.console.Info"
- class="toolbar-text-button fbConsoleFilter fbInternational"
- tooltiptext="firebug.console.Filter by Info"
- oncommand="Firebug.Console.onToggleFilter(event, Firebug.currentContext, 'info')"/>
- <toolbarbutton
- id="fbConsoleFilter-debug"
- type="checkbox"
- label="firebug.console.Debug Info"
- class="toolbar-text-button fbConsoleFilter fbInternational"
- tooltiptext="firebug.console.Filter by Debug Info"
- oncommand="Firebug.Console.onToggleFilter(event, Firebug.currentContext, 'debug')"/>
- </hbox>
- </hbox>
-
- <hbox id="fbHTMLButtons" collapsed="true" class="noTabStop" >
- <toolbarseparator class="fbPanelSpecificButtonsSeparator"/>
- <toolbarbutton id="fbToggleHTMLEditing" label="firebug.Edit"
- class="toolbar-text-button fbInternational"
- tooltiptext="firebug.EditHTMLTooltip"
- command="cmd_firebug_toggleHTMLEditing"/>
- </hbox>
-
- <!-- Toolbar buttons for the CSS panel -->
- <hbox id="fbCSSButtons" collapsed="true" class="noTabStop">
- <toolbarbutton id="fbToggleCSSEditing"
- label="firebug.Edit"
- class="fbInternational"
- tooltiptext="firebug.EditCSSTooltip"
- command="cmd_firebug_togglecssEditMode"
- type="menu-button">
- <menupopup id="fbCSSEditorMenu"
- onpopupshowing="Firebug.CSSModule.onOptionsShowing(this)">
- <!-- id must be menu_firebug_+getEditOptionKey+mode -->
- <menuitem id="menu_firebug_cssEditModeSource" mode="Source"
- label="firebug.css.sourceEdit"
- tooltiptext="firebug.css.sourceEdit.tooltip"
- oncommand="Firebug.CSSModule.onEditMode(event, this)"
- type="radio" autocheck="false"
- class="fbInternational"/>
- <menuitem id="menu_firebug_cssEditModeLive" mode="Live"
- label="firebug.css.liveEdit"
- tooltiptext="firebug.css.liveEdit.tooltip"
- oncommand="Firebug.CSSModule.onEditMode(event, this)"
- type="radio" autocheck="false"
- class="fbInternational"/>
- </menupopup>
- </toolbarbutton>
- </hbox>
-
- <hbox id="fbScriptButtons" collapsed="true" class="noTabStop">
- <toolbarseparator class="fbPanelSpecificButtonsSeparator"/>
- <tooltip id="fbScriptFilterMenuTooltip" role="presentation"
- onpopupshowing="return Firebug.Debugger.onScriptFilterMenuTooltipShowing(this, Firebug.currentContext)"/>
- <toolbarbutton id="fbScriptFilterMenu" type="menu" tooltiptext="script.tip.Script_Type"
- tooltip="fbScriptFilterTooltip" role="button" aria-haspopup="true" class="fbInternational">
- <menupopup
- oncommand="return Firebug.Debugger.onScriptFilterMenuCommand(event, Firebug.currentContext)"
- onpopupshowing="return Firebug.Debugger.onScriptFilterMenuPopupShowing(this, Firebug.currentContext)"
- onpopuphiding="return Firebug.Debugger.onScriptFilterMenuPopupHiding(this, Firebug.currentContext)">
- <menuitem type="radio" name="fbScriptFilterMenu"
- value="static" tooltiptext="script.tip.Script_Filter_Static"
- class="fbInternational"/>
- <menuitem type="radio" name="fbScriptFilterMenu"
- value="evals" tooltiptext="script.tip.Script_Filter_Evals"
- class="fbInternational"/>
- <menuitem type="radio" name="fbScriptFilterMenu"
- value="events" tooltiptext="script.tip.Script_Filter_Events"
- class="fbInternational"/>
- <menuitem type="radio" name="fbScriptFilterMenu"
- value="all" tooltiptext="script.tip.Script_Filter_All"
- class="fbInternational"/>
- </menupopup>
- </toolbarbutton>
- </hbox>
-
- <hbox id="fbNetButtons" collapsed="true" class="noTabStop">
- <toolbarseparator class="fbPanelSpecificButtonsSeparator"/>
- <toolbarbutton id="fbNetClear" label="firebug.Clear"
- class="toolbar-text-button fbInternational"
- tooltiptext="net.tip.Clear" command="cmd_firebug_clearNet"/>
- <toolbarbutton id="fbNetPersist" label="firebug.console.Persist"
- class="toolbar-text-button fbInternational"
- tooltiptext="firebug.console.Do_Not_Clear_On_Reload2"
- command="cmd_firebug_togglePersistNet"/>
- <hbox id="fbNetButtonsFilter" class="noTabStop">
- <toolbarseparator/>
- <toolbarbutton id="fbNetFilter-all"
- type="checkbox"
- label="net.filter.label.All"
- tooltiptext="net.filter.tooltip.All"
- class="toolbar-text-button fbNetFilter fbInternational"
- oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'all')"/>
- <toolbarbutton id="fbNetFilter-html"
- type="checkbox"
- label="net.filter.label.HTML"
- tooltiptext="net.filter.tooltip.HTML"
- class="toolbar-text-button fbNetFilter fbInternational"
- oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'html')"/>
- <toolbarbutton id="fbNetFilter-css"
- type="checkbox"
- label="net.filter.label.CSS"
- tooltiptext="net.filter.tooltip.CSS"
- class="toolbar-text-button fbNetFilter fbInternational"
- oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'css')"/>
- <toolbarbutton id="fbNetFilter-js"
- type="checkbox"
- label="net.filter.label.JS"
- tooltiptext="net.filter.tooltip.JS"
- class="toolbar-text-button fbNetFilter fbInternational"
- oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'js')"/>
- <toolbarbutton id="fbNetFilter-xhr"
- type="checkbox"
- label="net.filter.label.XHR"
- tooltiptext="net.filter.tooltip.XHR"
- class="toolbar-text-button fbNetFilter fbInternational"
- oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'xhr')"/>
- <toolbarbutton id="fbNetFilter-image"
- type="checkbox"
- label="net.filter.label.Images"
- tooltiptext="net.filter.tooltip.Images"
- class="toolbar-text-button fbNetFilter fbInternational"
- oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'image')"/>
- <toolbarbutton id="fbNetFilter-plugin"
- type="checkbox"
- label="net.filter.label.Plugins"
- tooltiptext="net.filter.tooltip.Plugins"
- class="toolbar-text-button fbNetFilter fbInternational"
- oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'plugin')"/>
- <toolbarbutton id="fbNetFilter-media"
- type="checkbox"
- label="net.filter.label.Media"
- tooltiptext="net.filter.tooltip.Media"
- class="toolbar-text-button fbNetFilter fbInternational"
- oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'media')"/>
- <toolbarbutton id="fbNetFilter-font"
- type="checkbox"
- label="net.filter.label.Fonts"
- tooltiptext="net.filter.tooltip.Fonts"
- class="toolbar-text-button fbNetFilter fbInternational"
- oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'font')"/>
- </hbox>
- </hbox>
-
- <hbox id="fbTraceButtons" collapsed="true">
- <toolbarseparator/>
- <toolbarbutton id="fbTraceOpenConsole" class="toolbar-text-button"
- label="Open Console" tooltiptext="Open Console Tooltip"
- command="cmd_firebug_toggleTraceConsole"/>
- </hbox>
-
- <!-- Location buttons, used e.g. by the Script panel
- to show name of the currently displayed file name.
- The button also allows to pick another one. -->
- <hbox id="fbLocationButtons" collapsed="true">
- <toolbarseparator id="fbLocationSeparator"/>
- <toolbarbutton id="fbLocationList" type="menu"
- locationProvider="Firebug.chrome.getLocationProvider();"
- tooltip="fbTooltip" contextmenu="fbContextMenu"
- class="noTabStop fbInternational"
- role="button" aria-haspopup="true"
- aria-label="a11y.labels.file selector"/>
- </hbox>
-
- <!-- Status buttons, used e.g. by the HTML panel to show
- a parent list of the currently selected element. -->
- <hbox id="fbStatusButtons" flex="100" collapsed="true">
- <toolbarseparator id="fbStatusSeparator"/>
- <arrowscrollbox flex="1" smoothscroll="true" orient="horizontal">
- <panelStatus id="fbPanelStatus"
- tooltip="fbTooltip" contextmenu="fbContextMenu"
- class="noTabStop"/>
- </arrowscrollbox>
- </hbox>
-
- <hbox id="fbDebuggerButtons" collapsed="true" class="noTabStop">
- <toolbarbutton id="fbRerunButton" command="cmd_firebug_rerun"
- tooltiptext="firebug.Rerun"
- class="toolbar-image-button fbInternational" />
- <toolbarbutton id="fbContinueButton"
- command="cmd_firebug_resumeExecution"
- tooltiptext="firebug.Continue"
- class="toolbar-image-button fbInternational" />
- <toolbarbutton id="fbStepIntoButton" command="cmd_firebug_stepInto"
- tooltiptext="firebug.StepInto"
- class="toolbar-image-button fbInternational" />
- <toolbarbutton id="fbStepOverButton" command="cmd_firebug_stepOver"
- tooltiptext="firebug.StepOver"
- class="toolbar-image-button fbInternational" />
- <toolbarbutton id="fbStepOutButton" command="cmd_firebug_stepOut"
- tooltiptext="firebug.StepOut"
- class="toolbar-image-button fbInternational"/>
- </hbox>
-
- <!-- Toolbar buttons provided by extensions through Firebug API -->
- <hbox id="fbPanelToolbar" collapsed="true" class="noTabStop">
- </hbox>
-
- <!-- Toggle visibility of the side panels area -->
- <vbox id="fbToggleSidePanelsBox" collapsed="false" align="end" flex="1">
- <toolbarbutton id="fbToggleSidePanels"
- class="toolbar-image-button fbInternational"
- tooltiptext="firebug.tip.Toggle_Side_Panels"/>
- </vbox>
- </hbox>
- </toolbar>
- </toolbox>
-
- <deck anonid="deck" id="fbPanelBar1-deck" flex="1">
- <!-- src attribute should be set here otherwise about:empty
- is used by default, which could launch FirebugChrome.initializeUI
- yet before the right content (i.e. panel.html) is loaded.
- The same for the fbPanelBar1-browser. -->
- <browser id="fbPanelBar1-browser"
- tooltip="fbTooltip" contextmenu="fbContextMenu"
- disablehistory="true"
- src="resource://firebugui/panel.html"
- type="content"
- role="tabpanel" />
- </deck>
- </vbox>
-
- <splitter id="fbPanelSplitter"/>
-
- <deck id="fbSidePanelDeck" persist="width,height">
- <panelBar id="fbPanelBar2" class="panelBar">
- <hbox id="fbPanelBar2-tabBox" class="panelTabBox" collapsed="true">
- <panelBarArrowscrollbox id="fbPanelBar2-Arrowscrollbox"
- orient="horizontal" flex="1"
- style="min-width: 1px;" chromedir="ltr"
- clicktoscroll="true"
- class="panelbar-arrowscrollbox">
- <!-- Tab Side Bar -->
- <hbox id="fbPanelBar2-panelTabs"
- class="panelTabs fbInternational" role="tablist"
- aria-label="a11y.labels.firebug_side_panels" />
- </panelBarArrowscrollbox>
- </hbox>
- <deck id="fbPanelBar2-deck" flex="1">
- <browser id="fbPanelBar2-browser"
- tooltip="fbTooltip" contextmenu="fbContextMenu"
- disablehistory="true"
- src="resource://firebugui/panel.html"
- type="content"
- role="tabpanel" />
- </deck>
- </panelBar>
-
- <!-- Command Editor -->
- <vbox id="fbCommandEditorBox">
- <hbox id="fbCommandEditor" flex="1" />
- <hbox id="fbCommandToolbar">
- <toolbarbutton id="fbCmdLineRunButton" label="firebug.Run"
- class="toolbar-text-button fbInternational"
- tooltiptext="firebug.Run_the_entered_command"
- oncommand="Firebug.CommandLine.enter(Firebug.currentContext)"/>
- <toolbarbutton id="fbCmdLineClearButton" label="firebug.Clear"
- class="toolbar-text-button fbInternational"
- tooltiptext="firebug.Clear_the_Command_Editor"
- oncommand="Firebug.CommandLine.clear(Firebug.currentContext)"/>
- <toolbarbutton id="fbCmdLineCopyButton" label="firebug.Copy"
- class="toolbar-text-button fbInternational"
- tooltiptext="firebug.Copy_the_script_as_a_bookmarklet"
- oncommand="Firebug.CommandLine.copyBookmarklet(Firebug.currentContext)"/>
- <toolbarbutton id="fbCommandEditorHistoryButton"
- label="firebug.History"
- class="toolbarbutton fbInternational" type="checkbox"
- checked="false"
- tooltiptext="firebug.Insert_a_previously_entered_command"
- onmousedown="Firebug.CommandLine.commandHistory.show(this);"
- disabled="true"/>
- <toolbarspacer flex="1"/>
- <toolbarbutton id="fbToggleCommandEditor"
- tooltiptext="console.option.Show_Command_Line"
- class="toolbarbutton-iconic fbInternational"
- oncommand="Firebug.toggleCommandLine(false)"/>
- </hbox>
- </vbox>
- </deck>
- </box>
- </panelBar>
-
- <!-- xxxHonza: where is this used? -->
- <menupopup id="inspectorPopup" style="background: transparent; border: 2px solid red">
- <label value="inspect"/>
- </menupopup>
- </box>
-
- <!-- CommandLine popup (available on other panels) -->
- <splitter id="fbCommandPopupSplitter" collapsed="true" collapse="after" />
- <vbox id="fbCommandPopup" collapsed="true" height="35" persist="width,height">
- <deck id="fbCommandPopup-deck" flex="1">
- <browser id="fbCommandPopupBrowser"
- tooltip="fbTooltip" contextmenu="fbContextMenu"
- disablehistory="true"
- src="resource://firebugui/panel.html"
- type="content"/>
- </deck>
- </vbox>
-
- <!-- Command Line (small) -->
- <hbox id="fbCommandBox">
- <toolbarbutton id="fbCommandLineHistoryButton" tooltiptext="Command_History"
- class="toolbarbutton-iconic fbInternational"
- onmousedown="Firebug.CommandLine.commandHistory.show(this);"
- disabled="true" type="checkbox" checked="false"/>
- <vbox pack="center">
- <label id="fbCommandArrow" value=">>>"/>
- </vbox>
- <hbox flex="1">
- <vbox class="fbCommandHtmlBox" pack="center" flex="100%">
- <!-- transparent background, silver text over user inputs -->
- <html:div class="background">
- <!-- completion text -->
- <html:input id="fbCommandLineCompletion" class="fbCommandLine"
- type="text" maxlength="2048" autocomplete="off" tabindex="-1" />
- <textbox id="fbCommandLine" class="fbCommandLine" flex="1"
- aria-autocomplete="inline" multiline="false" newlines="pasteintact"/>
- <!-- font width measurer, contains 60 arbitrary characters -->
- <html:span id="fbCommandLineMeasurer" class="fbCommandLine"
- >aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</html:span>
- </html:div>
- </vbox>
- </hbox>
-
- <!-- Toggle into multi-line command line -->
- <toolbarbutton id="fbToggleCommandLine" tooltiptext="console.option.Show_Command_Editor"
- class="toolbarbutton-iconic fbInternational"
- oncommand="Firebug.toggleCommandLine(true)"/>
- </hbox>
-
- </vbox>
-<script>
-
-</script>
-</overlay>
+<?xml version="1.0"?>
+<!-- See license.txt for terms of usage -->
+
+<?xul-overlay href="firefox/firebugMenuOverlay.xul"?>
+<?xul-overlay href="chrome://firebug/content/cookies/cookiePanel.xul"?>
+
+<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+
+ <stringbundleset id="stringbundleset">
+ <stringbundle id="strings_firebug" src="chrome://firebug/locale/firebug.properties"/>
+ </stringbundleset>
+
+ <popupset id="mainPopupSet">
+ <menupopup id="fbContextMenu" onpopupshowing="return Firebug.chrome.onContextShowing(event);">
+ <menuitem label="Copy" command="cmd_copy" class="fbInternational"/>
+ </menupopup>
+
+ <menupopup id="fbInlineEditorPopup" />
+
+ <tooltip id="fbTooltip" class="fbURLMenuItem"
+ onpopupshowing="return Firebug.chrome.onTooltipShowing(event);"/>
+
+ <panel id="fbQuickInfoPanel" width="210" noautofocus="true"
+ onmousedown="Firebug.QuickInfoBox.quickInfoBoxHandler(event);"
+ onmouseover="Firebug.QuickInfoBox.quickInfoBoxHandler(event);"
+ onmouseout="Firebug.QuickInfoBox.quickInfoBoxHandler(event);">
+ <vbox></vbox>
+ </panel>
+
+ <menupopup id="fbNavigationHistoryMenu"
+ oncommand="Firebug.NavigationHistory.onHistoryCommand(event, Firebug.currentContext)"
+ onpopupshowing="return Firebug.NavigationHistory.onPopupShowing(this, Firebug.currentContext)" />
+
+ <panel id="fbCommandLineCompletionList" class="fbCommandLineCompletionPanel"
+ noautofocus="true">
+ </panel>
+
+ <menupopup id="fbCommandHistory" noautofocus="true" ignorekeys="true">
+ </menupopup>
+
+ <!-- Context menu for the Command Editor -->
+ <menupopup id="fbCommandEditorPopup" />
+ </popupset>
+
+ <!-- Main UI -->
+ <vbox id="fbContentBox">
+ <box id="fbPanelBox" flex="1">
+ <panelBar id="fbPanelBar1" class="panelBar" flex="3" persist="width,height">
+ <hbox id="fbPanelBar1-tabBox" class="panelTabBox">
+ <hbox id="fbPanelBar1-innerToolbar" class="innerToolbar fbInternational"
+ role="toolbar" aria-label="a11y.labels.firebug_tools">
+ <hbox id="fbPanelBar1-buttons">
+
+ <!-- Firebug Icon Menu -->
+ <toolbarbutton id="fbFirebugMenu" type="menu"
+ tooltiptext="firebug_options"
+ role="button" aria-haspopup="true" owns="fbFirebugMenuPopup"
+ class="fbInternational">
+
+ <!-- Button image-->
+ <image src="chrome://firebug/skin/firebug.png"/>
+
+ <menupopup id="menu_firebug_iconMenu" class="fbFirebugMenuPopup"
+ onpopupshowing="return Firebug.browserOverlay.onMenuShowing(this, event);"
+ onpopuphiding="return Firebug.browserOverlay.onMenuHiding(this, event);">
+ <!-- Content comes from firebugMenuContent -->
+ </menupopup>
+ </toolbarbutton>
+
+ <!-- HTML Inspector -->
+ <toolbarbutton id="fbInspectButton" tooltiptext="firebug.InspectTooltip"
+ command="cmd_firebug_toggleInspecting" collapsed="false"
+ class="fbInternational">
+ </toolbarbutton>
+
+ <toolbarseparator id="fbInspectSeparator"/>
+
+ <!-- History of Navigation -->
+ <toolbaritem contextmenu="fbNavigationHistoryMenu" class="noTabStop">
+ <toolbarbutton id="fbNavigateBackButton" disabled="true"
+ tooltiptext="firebug.history.Go back"
+ command="cmd_firebug_navBack" class="fbInternational"/>
+ <toolbarbutton id="fbNavigateForwardButton" disabled="true"
+ tooltiptext="firebug.history.Go forward"
+ command="cmd_firebug_navForward" class="fbInternational"/>
+ </toolbaritem>
+
+ <toolbarseparator id="fbNavigationSeparator"/>
+
+ <toolbarbutton id="fbCommandPopupButton"
+ tooltiptext="panel.tooltip.Show_Command_Line_Popup"
+ command="cmd_firebug_toggleCommandPopup" class="fbInternational">
+ </toolbarbutton>
+ </hbox>
+
+ <!-- Panel selector (list of all panels) -->
+ <panelBarTabList id="panelBarTabList" tooltiptext="firebug.panel selector"
+ class="fbInternational"/>
+ </hbox>
+
+ <!-- xxxHonza: ltr should come from &locale.dir; -->
+ <panelBarArrowscrollbox id="fbPanelBar1-Arrowscrollbox" orient="horizontal"
+ flex="100" chromedir="ltr"
+ clicktoscroll="true"
+ class="panelbar-arrowscrollbox">
+
+ <!-- Tab Bar -->
+ <hbox id="fbPanelBar1-panelTabs" class="panelTabs" role="tablist"
+ aria-label="firebug panels" />
+ </panelBarArrowscrollbox>
+
+ <!-- Search Box -->
+ <splitter resizebefore="flex" resizeafter="flex" class="fbsearch-splitter"/>
+ <textbox flex="70" id="fbSearchBox" type="fbSearchBox"/>
+
+ <!-- Open In New Window & Minimize & Close -->
+ <hbox id="fbWindowButtons" role="toolbar" class="innerToolbar"
+ aria-label="firebug window" context="_child">
+ <menupopup onpopupshowing="Firebug.browserOverlay.onPositionPopupShowing(this)"/>
+ <toolbarbutton id="fbMinimizeButton"
+ class="toolbarbutton-iconic fbInternational"
+ tooltiptext="Minimize Firebug" command="cmd_firebug_minimizeFirebug"/>
+ <tooltip id="fbDetachButtonTooltip"
+ onpopupshowing="return Firebug.onShowDetachTooltip(this)"/>
+ <toolbarbutton id="fbDetachButton" class="toolbarbutton-iconic"
+ tooltip="fbDetachButtonTooltip" command="cmd_firebug_detachFirebug"/>
+ <toolbarbutton id="fbCloseButton"
+ class="toolbarbutton-iconic fbInternational"
+ tooltiptext="firebug.tip.Deactivate_Firebug" command="cmd_firebug_closeFirebug"/>
+ </hbox>
+ </hbox>
+
+ <!-- Firebug Panels Content -->
+ <box id="fbPanelPane" flex="1" persist="orient">
+
+ <vbox flex="3">
+ <toolbox id="fbToolbox">
+ <toolbar id="fbToolbar" align="center" role="toolbar">
+
+ <hbox id="fbToolbarInner" class="innerToolbar"
+ insertbefore="fbDetachButton" flex="1" align="center">
+
+ <!-- Break On Next -->
+ <hbox id="fbBonButtons" collapsed="true" class="noTabStop">
+ <toolbarbutton id="fbBreakOnNextButton"
+ command="cmd_firebug_toggleBreakOn"
+ tooltiptext="script.Break On Next" breakable="disabled"
+ class="fbInternational">
+ <stack id="fbBreakOnNextButtonStack">
+ <image id="fbBreakOnImage" class="fbBreakOnImage"></image>
+ <image id="fbBreakOnImageArmed" class="fbBreakOnImage"></image>
+ <!-- Badges -->
+ <image id="fbBreakOnImageError" class="fbBreakOnImage"></image>
+ <image id="fbBreakOnImageMutate" class="fbBreakOnImage"></image>
+ <image id="fbBreakOnImageNext" class="fbBreakOnImage"></image>
+ <image id="fbBreakOnImageXHR" class="fbBreakOnImage"></image>
+ </stack>
+ </toolbarbutton>
+ </hbox>
+
+ <hbox id="fbConsoleButtons" collapsed="true" class="noTabStop">
+ <toolbarseparator class="fbPanelSpecificButtonsSeparator"/>
+ <toolbarbutton id="fbConsoleClear" label="firebug.Clear"
+ class="toolbar-text-button fbInternational"
+ tooltiptext="firebug.ClearTooltip" command="cmd_firebug_clearConsole"/>
+ <toolbarbutton id="fbConsolePersist"
+ label="firebug.console.Persist"
+ class="toolbar-text-button fbInternational"
+ type="checkbox"
+ tooltiptext="firebug.console.Do_Not_Clear_On_Reload2"
+ command="cmd_firebug_togglePersistConsole"/>
+ <toolbarbutton id="fbToggleProfiling" label="firebug.Profile"
+ class="toolbar-text-button fbInternational"
+ type="checkbox" command="cmd_firebug_toggleProfiling"/>
+ <!-- <toolbarbutton id="fbToggleMemoryProfiling" label="firebug.Memory Profile"
+ class="toolbar-text-button fbInternational"
+ type="checkbox" command="cmd_firebug_toggleMemoryProfiling"/> -->
+ <toolbarseparator class="fbPanelSpecificButtonsSeparator"/>
+ <hbox id="fbConsoleFilterButtons" class="noTabStop">
+ <toolbarbutton
+ id="fbConsoleFilter-all"
+ type="checkbox"
+ label="firebug.console.All"
+ class="toolbar-text-button fbConsoleFilter fbInternational"
+ tooltiptext="firebug.console.Show All Log Entries"
+ oncommand="Firebug.Console.onToggleFilter(event, Firebug.currentContext, 'all')"/>
+ <toolbarbutton
+ id="fbConsoleFilter-error"
+ type="checkbox"
+ label="firebug.console.Errors"
+ class="toolbar-text-button fbConsoleFilter fbInternational"
+ tooltiptext="firebug.console.Filter by Errors"
+ oncommand="Firebug.Console.onToggleFilter(event, Firebug.currentContext, 'error')"/>
+ <toolbarbutton
+ id="fbConsoleFilter-warning"
+ type="checkbox"
+ label="firebug.console.Warnings"
+ class="toolbar-text-button fbConsoleFilter fbInternational"
+ tooltiptext="firebug.console.Filter by Warnings"
+ oncommand="Firebug.Console.onToggleFilter(event, Firebug.currentContext, 'warning')"/>
+ <toolbarbutton
+ id="fbConsoleFilter-info"
+ type="checkbox"
+ label="firebug.console.Info"
+ class="toolbar-text-button fbConsoleFilter fbInternational"
+ tooltiptext="firebug.console.Filter by Info"
+ oncommand="Firebug.Console.onToggleFilter(event, Firebug.currentContext, 'info')"/>
+ <toolbarbutton
+ id="fbConsoleFilter-debug"
+ type="checkbox"
+ label="firebug.console.Debug Info"
+ class="toolbar-text-button fbConsoleFilter fbInternational"
+ tooltiptext="firebug.console.Filter by Debug Info"
+ oncommand="Firebug.Console.onToggleFilter(event, Firebug.currentContext, 'debug')"/>
+ </hbox>
+ </hbox>
+
+ <hbox id="fbHTMLButtons" collapsed="true" class="noTabStop" >
+ <toolbarseparator class="fbPanelSpecificButtonsSeparator"/>
+ <toolbarbutton id="fbToggleHTMLEditing" label="firebug.Edit"
+ class="toolbar-text-button fbInternational"
+ tooltiptext="firebug.EditHTMLTooltip"
+ command="cmd_firebug_toggleHTMLEditing"/>
+ </hbox>
+
+ <!-- Toolbar buttons for the CSS panel -->
+ <hbox id="fbCSSButtons" collapsed="true" class="noTabStop">
+ <toolbarbutton id="fbToggleCSSEditing"
+ label="firebug.Edit"
+ class="fbInternational"
+ tooltiptext="firebug.EditCSSTooltip"
+ command="cmd_firebug_togglecssEditMode"
+ type="menu-button">
+ <menupopup id="fbCSSEditorMenu"
+ onpopupshowing="Firebug.CSSModule.onOptionsShowing(this)">
+ <!-- id must be menu_firebug_+getEditOptionKey+mode -->
+ <menuitem id="menu_firebug_cssEditModeSource" mode="Source"
+ label="firebug.css.sourceEdit"
+ tooltiptext="firebug.css.sourceEdit.tooltip"
+ oncommand="Firebug.CSSModule.onEditMode(event, this)"
+ type="radio" autocheck="false"
+ class="fbInternational"/>
+ <menuitem id="menu_firebug_cssEditModeLive" mode="Live"
+ label="firebug.css.liveEdit"
+ tooltiptext="firebug.css.liveEdit.tooltip"
+ oncommand="Firebug.CSSModule.onEditMode(event, this)"
+ type="radio" autocheck="false"
+ class="fbInternational"/>
+ </menupopup>
+ </toolbarbutton>
+ </hbox>
+
+ <hbox id="fbScriptButtons" collapsed="true" class="noTabStop">
+ <toolbarseparator class="fbPanelSpecificButtonsSeparator"/>
+ <tooltip id="fbScriptFilterMenuTooltip" role="presentation"
+ onpopupshowing="return Firebug.Debugger.onScriptFilterMenuTooltipShowing(this, Firebug.currentContext)"/>
+ <toolbarbutton id="fbScriptFilterMenu" type="menu" tooltiptext="script.tip.Script_Type"
+ tooltip="fbScriptFilterTooltip" role="button" aria-haspopup="true" class="fbInternational">
+ <menupopup
+ oncommand="return Firebug.Debugger.onScriptFilterMenuCommand(event, Firebug.currentContext)"
+ onpopupshowing="return Firebug.Debugger.onScriptFilterMenuPopupShowing(this, Firebug.currentContext)"
+ onpopuphiding="return Firebug.Debugger.onScriptFilterMenuPopupHiding(this, Firebug.currentContext)">
+ <menuitem type="radio" name="fbScriptFilterMenu"
+ value="static" tooltiptext="script.tip.Script_Filter_Static"
+ class="fbInternational"/>
+ <menuitem type="radio" name="fbScriptFilterMenu"
+ value="evals" tooltiptext="script.tip.Script_Filter_Evals"
+ class="fbInternational"/>
+ <menuitem type="radio" name="fbScriptFilterMenu"
+ value="events" tooltiptext="script.tip.Script_Filter_Events"
+ class="fbInternational"/>
+ <menuitem type="radio" name="fbScriptFilterMenu"
+ value="all" tooltiptext="script.tip.Script_Filter_All"
+ class="fbInternational"/>
+ </menupopup>
+ </toolbarbutton>
+ </hbox>
+
+ <hbox id="fbNetButtons" collapsed="true" class="noTabStop">
+ <toolbarseparator class="fbPanelSpecificButtonsSeparator"/>
+ <toolbarbutton id="fbNetClear" label="firebug.Clear"
+ class="toolbar-text-button fbInternational"
+ tooltiptext="net.tip.Clear" command="cmd_firebug_clearNet"/>
+ <toolbarbutton id="fbNetPersist" label="firebug.console.Persist"
+ class="toolbar-text-button fbInternational"
+ tooltiptext="firebug.console.Do_Not_Clear_On_Reload2"
+ command="cmd_firebug_togglePersistNet"/>
+ <hbox id="fbNetButtonsFilter" class="noTabStop">
+ <toolbarseparator/>
+ <toolbarbutton id="fbNetFilter-all"
+ type="checkbox"
+ label="net.filter.label.All"
+ tooltiptext="net.filter.tooltip.All"
+ class="toolbar-text-button fbNetFilter fbInternational"
+ oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'all')"/>
+ <toolbarbutton id="fbNetFilter-html"
+ type="checkbox"
+ label="net.filter.label.HTML"
+ tooltiptext="net.filter.tooltip.HTML"
+ class="toolbar-text-button fbNetFilter fbInternational"
+ oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'html')"/>
+ <toolbarbutton id="fbNetFilter-css"
+ type="checkbox"
+ label="net.filter.label.CSS"
+ tooltiptext="net.filter.tooltip.CSS"
+ class="toolbar-text-button fbNetFilter fbInternational"
+ oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'css')"/>
+ <toolbarbutton id="fbNetFilter-js"
+ type="checkbox"
+ label="net.filter.label.JS"
+ tooltiptext="net.filter.tooltip.JS"
+ class="toolbar-text-button fbNetFilter fbInternational"
+ oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'js')"/>
+ <toolbarbutton id="fbNetFilter-xhr"
+ type="checkbox"
+ label="net.filter.label.XHR"
+ tooltiptext="net.filter.tooltip.XHR"
+ class="toolbar-text-button fbNetFilter fbInternational"
+ oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'xhr')"/>
+ <toolbarbutton id="fbNetFilter-image"
+ type="checkbox"
+ label="net.filter.label.Images"
+ tooltiptext="net.filter.tooltip.Images"
+ class="toolbar-text-button fbNetFilter fbInternational"
+ oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'image')"/>
+ <toolbarbutton id="fbNetFilter-plugin"
+ type="checkbox"
+ label="net.filter.label.Plugins"
+ tooltiptext="net.filter.tooltip.Plugins"
+ class="toolbar-text-button fbNetFilter fbInternational"
+ oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'plugin')"/>
+ <toolbarbutton id="fbNetFilter-media"
+ type="checkbox"
+ label="net.filter.label.Media"
+ tooltiptext="net.filter.tooltip.Media"
+ class="toolbar-text-button fbNetFilter fbInternational"
+ oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'media')"/>
+ <toolbarbutton id="fbNetFilter-font"
+ type="checkbox"
+ label="net.filter.label.Fonts"
+ tooltiptext="net.filter.tooltip.Fonts"
+ class="toolbar-text-button fbNetFilter fbInternational"
+ oncommand="Firebug.NetMonitor.onToggleFilter(event, Firebug.currentContext, 'font')"/>
+ </hbox>
+ </hbox>
+
+ <hbox id="fbTraceButtons" collapsed="true">
+ <toolbarseparator/>
+ <toolbarbutton id="fbTraceOpenConsole" class="toolbar-text-button"
+ label="Open Console" tooltiptext="Open Console Tooltip"
+ command="cmd_firebug_toggleTraceConsole"/>
+ </hbox>
+
+ <!-- Location buttons, used e.g. by the Script panel
+ to show name of the currently displayed file name.
+ The button also allows to pick another one. -->
+ <hbox id="fbLocationButtons" collapsed="true">
+ <toolbarseparator id="fbLocationSeparator"/>
+ <toolbarbutton id="fbLocationList" type="menu"
+ locationProvider="Firebug.chrome.getLocationProvider();"
+ tooltip="fbTooltip" contextmenu="fbContextMenu"
+ class="noTabStop fbInternational"
+ role="button" aria-haspopup="true"
+ aria-label="a11y.labels.file selector"/>
+ </hbox>
+
+ <!-- Status buttons, used e.g. by the HTML panel to show
+ a parent list of the currently selected element. -->
+ <hbox id="fbStatusButtons" flex="100" collapsed="true">
+ <toolbarseparator id="fbStatusSeparator"/>
+ <arrowscrollbox flex="1" smoothscroll="true" orient="horizontal">
+ <panelStatus id="fbPanelStatus"
+ tooltip="fbTooltip" contextmenu="fbContextMenu"
+ class="noTabStop"/>
+ </arrowscrollbox>
+ </hbox>
+
+ <hbox id="fbDebuggerButtons" collapsed="true" class="noTabStop">
+ <toolbarbutton id="fbRerunButton" command="cmd_firebug_rerun"
+ tooltiptext="firebug.Rerun"
+ class="toolbar-image-button fbInternational" />
+ <toolbarbutton id="fbContinueButton"
+ command="cmd_firebug_resumeExecution"
+ tooltiptext="firebug.Continue"
+ class="toolbar-image-button fbInternational" />
+ <toolbarbutton id="fbStepIntoButton" command="cmd_firebug_stepInto"
+ tooltiptext="firebug.StepInto"
+ class="toolbar-image-button fbInternational" />
+ <toolbarbutton id="fbStepOverButton" command="cmd_firebug_stepOver"
+ tooltiptext="firebug.StepOver"
+ class="toolbar-image-button fbInternational" />
+ <toolbarbutton id="fbStepOutButton" command="cmd_firebug_stepOut"
+ tooltiptext="firebug.StepOut"
+ class="toolbar-image-button fbInternational"/>
+ </hbox>
+
+ <!-- Toolbar buttons provided by extensions through Firebug API -->
+ <hbox id="fbPanelToolbar" collapsed="true" class="noTabStop">
+ </hbox>
+
+ <!-- Toggle visibility of the side panels area -->
+ <vbox id="fbToggleSidePanelsBox" collapsed="false" align="end" flex="1">
+ <toolbarbutton id="fbToggleSidePanels"
+ class="toolbar-image-button fbInternational"
+ tooltiptext="firebug.tip.Toggle_Side_Panels"/>
+ </vbox>
+ </hbox>
+ </toolbar>
+ </toolbox>
+
+ <deck anonid="deck" id="fbPanelBar1-deck" flex="1">
+ <!-- src attribute should be set here otherwise about:empty
+ is used by default, which could launch FirebugChrome.initializeUI
+ yet before the right content (i.e. panel.html) is loaded.
+ The same for the fbPanelBar1-browser. -->
+ <browser id="fbPanelBar1-browser"
+ tooltip="fbTooltip" contextmenu="fbContextMenu"
+ disablehistory="true"
+ src="resource://firebugui/panel.html"
+ type="content"
+ role="tabpanel" />
+ </deck>
+ </vbox>
+
+ <splitter id="fbPanelSplitter"/>
+
+ <deck id="fbSidePanelDeck" persist="width,height">
+ <panelBar id="fbPanelBar2" class="panelBar">
+ <hbox id="fbPanelBar2-tabBox" class="panelTabBox" collapsed="true">
+ <panelBarArrowscrollbox id="fbPanelBar2-Arrowscrollbox"
+ orient="horizontal" flex="1"
+ style="min-width: 1px;" chromedir="ltr"
+ clicktoscroll="true"
+ class="panelbar-arrowscrollbox">
+ <!-- Tab Side Bar -->
+ <hbox id="fbPanelBar2-panelTabs"
+ class="panelTabs fbInternational" role="tablist"
+ aria-label="a11y.labels.firebug_side_panels" />
+ </panelBarArrowscrollbox>
+ </hbox>
+ <deck id="fbPanelBar2-deck" flex="1">
+ <browser id="fbPanelBar2-browser"
+ tooltip="fbTooltip" contextmenu="fbContextMenu"
+ disablehistory="true"
+ src="resource://firebugui/panel.html"
+ type="content"
+ role="tabpanel" />
+ </deck>
+ </panelBar>
+
+ <!-- Command Editor -->
+ <vbox id="fbCommandEditorBox">
+ <hbox id="fbCommandEditor" flex="1" />
+ <hbox id="fbCommandToolbar">
+ <toolbarbutton id="fbCmdLineRunButton" label="firebug.Run"
+ class="toolbar-text-button fbInternational"
+ tooltiptext="firebug.Run_the_entered_command"
+ oncommand="Firebug.CommandLine.enter(Firebug.currentContext)"/>
+ <toolbarbutton id="fbCmdLineClearButton" label="firebug.Clear"
+ class="toolbar-text-button fbInternational"
+ tooltiptext="firebug.Clear_the_Command_Editor"
+ oncommand="Firebug.CommandLine.clear(Firebug.currentContext)"/>
+ <toolbarbutton id="fbCmdLineCopyButton" label="firebug.Copy"
+ class="toolbar-text-button fbInternational"
+ tooltiptext="firebug.Copy_the_script_as_a_bookmarklet"
+ oncommand="Firebug.CommandLine.copyBookmarklet(Firebug.currentContext)"/>
+ <toolbarbutton id="fbCommandEditorHistoryButton"
+ label="firebug.History"
+ class="toolbarbutton fbInternational" type="checkbox"
+ checked="false"
+ tooltiptext="firebug.Insert_a_previously_entered_command"
+ onmousedown="Firebug.CommandLine.commandHistory.show(this);"
+ disabled="true"/>
+ <toolbarspacer flex="1"/>
+ <toolbarbutton id="fbToggleCommandEditor"
+ tooltiptext="console.option.Show_Command_Line"
+ class="toolbarbutton-iconic fbInternational"
+ oncommand="Firebug.toggleCommandLine(false)"/>
+ </hbox>
+ </vbox>
+ </deck>
+ </box>
+ </panelBar>
+
+ <!-- xxxHonza: where is this used? -->
+ <menupopup id="inspectorPopup" style="background: transparent; border: 2px solid red">
+ <label value="inspect"/>
+ </menupopup>
+ </box>
+
+ <!-- CommandLine popup (available on other panels) -->
+ <splitter id="fbCommandPopupSplitter" collapsed="true" collapse="after" />
+ <vbox id="fbCommandPopup" collapsed="true" height="35" persist="width,height">
+ <deck id="fbCommandPopup-deck" flex="1">
+ <browser id="fbCommandPopupBrowser"
+ tooltip="fbTooltip" contextmenu="fbContextMenu"
+ disablehistory="true"
+ src="resource://firebugui/panel.html"
+ type="content"/>
+ </deck>
+ </vbox>
+
+ <!-- Command Line (small) -->
+ <hbox id="fbCommandBox">
+ <toolbarbutton id="fbCommandLineHistoryButton" tooltiptext="Command_History"
+ class="toolbarbutton-iconic fbInternational"
+ onmousedown="Firebug.CommandLine.commandHistory.show(this);"
+ disabled="true" type="checkbox" checked="false"/>
+ <vbox pack="center">
+ <label id="fbCommandArrow" value=">>>"/>
+ </vbox>
+ <hbox flex="1">
+ <vbox class="fbCommandHtmlBox" pack="center" flex="100%">
+ <!-- transparent background, silver text over user inputs -->
+ <html:div class="background">
+ <!-- completion text -->
+ <html:input id="fbCommandLineCompletion" class="fbCommandLine"
+ type="text" maxlength="2048" autocomplete="off" tabindex="-1" />
+ <textbox id="fbCommandLine" class="fbCommandLine" flex="1"
+ aria-autocomplete="inline" multiline="false" newlines="pasteintact"/>
+ <!-- font width measurer, contains 60 arbitrary characters -->
+ <html:span id="fbCommandLineMeasurer" class="fbCommandLine"
+ >aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</html:span>
+ </html:div>
+ </vbox>
+ </hbox>
+
+ <!-- Toggle into multi-line command line -->
+ <toolbarbutton id="fbToggleCommandLine" tooltiptext="console.option.Show_Command_Editor"
+ class="toolbarbutton-iconic fbInternational"
+ oncommand="Firebug.toggleCommandLine(true)"/>
+ </hbox>
+
+ </vbox>
+<script>
+
+</script>
+</overlay>
diff --git a/content/firebug/firebugui/filters.svg b/content/firebug/firebugui/filters.svg
deleted file mode 100644
index 67ff22f..0000000
--- a/content/firebug/firebugui/filters.svg
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- See license.txt for terms of usage -->
-<svg xmlns="http://www.w3.org/2000/svg">
- <filter id="darken">
- <feComponentTransfer>
- <feFuncR type="linear" intercept="-0.1" slope="1"/>
- <feFuncG type="linear" intercept="-0.1" slope="1"/>
- <feFuncB type="linear" intercept="-0.1" slope="1"/>
- </feComponentTransfer>
- </filter>
- <filter id="deepDarken">
- <feComponentTransfer>
- <feFuncR type="linear" intercept="-0.2" slope="1"/>
- <feFuncG type="linear" intercept="-0.2" slope="1"/>
- <feFuncB type="linear" intercept="-0.2" slope="1"/>
- </feComponentTransfer>
- </filter>
- <filter id="brighten">
- <feComponentTransfer>
- <feFuncR type="linear" intercept="0.2" slope="1"/>
- <feFuncG type="linear" intercept="0.2" slope="1"/>
- <feFuncB type="linear" intercept="0.2" slope="1"/>
- </feComponentTransfer>
- </filter>
- <filter id="grayscale">
- <feColorMatrix type="saturate" values="0"/>
- </filter>
- <filter id="brightenedGrayscale">
- <feColorMatrix type="saturate" values="0" result="grayscale"/>
- <feComponentTransfer in="grayscale">
- <feFuncR type="linear" intercept="0.2" slope="1"/>
- <feFuncG type="linear" intercept="0.2" slope="1"/>
- <feFuncB type="linear" intercept="0.2" slope="1"/>
- </feComponentTransfer>
- </filter>
-</svg>
\ No newline at end of file
diff --git a/content/firebug/firebugui/panel.html b/content/firebug/firebugui/panel.html
index 4f9d3f5..6e39664 100644
--- a/content/firebug/firebugui/panel.html
+++ b/content/firebug/firebugui/panel.html
@@ -1,13 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>Firebug</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <link rel="stylesheet" href="chrome://firebug/skin/panel.css" type="text/css"/>
-</head>
-<body role="application">
-<div class="disabledPanelNode" role="progressbar"></div>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Firebug</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <link rel="stylesheet" href="chrome://firebug/skin/panel.css" type="text/css"/>
+</head>
+<body role="application">
+<div class="disabledPanelNode" role="progressbar"></div>
+</body>
+</html>
diff --git a/content/firebug/firefox/bindings.xml b/content/firebug/firefox/bindings.xml
index 0fed428..02c6ac6 100644
--- a/content/firebug/firefox/bindings.xml
+++ b/content/firebug/firefox/bindings.xml
@@ -1,1952 +1,1952 @@
-<?xml version="1.0"?>
-<!-- See license.txt for terms of usage -->
-
-<bindings xmlns="http://www.mozilla.org/xbl"
- xmlns:xbl="http://www.mozilla.org/xbl"
- xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- xmlns:html="http://www.w3.org/1999/xhtml">
-
-<binding id="initializer">
- <implementation>
- <destructor><![CDATA[
- Firebug.chrome.shutdown();
- ]]></destructor>
- </implementation>
-</binding>
-
-<binding id="panelBar">
- <!-- The XUL structure for the panel bar is specified in the XUL source
- inside each "panelBar" element. This allows us to have panel bars
- with substantially different layout, including the ability to embed
- one panel bar within another - albeit at some cost in maintainability. -->
- <content>
- <children/>
- </content>
-
- <implementation>
- <constructor><![CDATA[
- this.tabBox = this.getChildElement("tabBox");
- this.deck = this.getChildElement("deck");
- this.browser = this.getChildElement("browser");
- this.panelTabs = this.getChildElement("panelTabs");
- this.tabMap = {};
-
- function onBrowserLoad()
- {
- this.removeEventListener("load", onBrowserLoad, true);
- this.complete = true;
- }
- this.browser.addEventListener("load", onBrowserLoad, true);
-
- window.panelBarWaiter.panelBarReady();
- ]]></constructor>
-
- <method name="getChildElement">
- <parameter name="id"/>
- <body><![CDATA[
- // Construct a unique ID from the panel bar ID and the child element ID,
- // for example: "panelBar1-panelTabs". This allows us to define children
- // in the XUL source, which in turn allows us to have panel bars with
- // substantially different layouts.
- return document.getElementById(this.id + "-" + id);
- ]]></body>
- </method>
-
- <method name="createTab">
- <parameter name="panelType"/>
- <body><![CDATA[
- var tab = document.createElement("panelTab");
- tab.panelType = panelType;
-
- var title = Firebug.getPanelTitle(panelType);
- var tooltip = Firebug.getPanelTooltip(panelType);
- tab.setAttribute("label", title);
- tab.setAttribute("tooltiptext", tooltip);
-
- this.tabMap[panelType.prototype.name] = tab;
- this.updateTab(panelType);
-
- return tab;
- ]]></body>
- </method>
-
- <method name="addTab">
- <parameter name="panelType"/>
- <body><![CDATA[
- var tab = this.createTab(panelType);
- this.panelTabs.appendChild(tab);
- ]]></body>
- </method>
-
- <method name="getTab">
- <parameter name="panelName"/>
- <body><![CDATA[
- return this.tabMap[panelName];
- ]]></body>
- </method>
-
- <method name="updateTab">
- <parameter name="panelType"/>
- <body><![CDATA[
- var tab = this.getTab(panelType.prototype.name);
-
- if (tab && panelType.prototype.activable)
- {
- var enabled = panelType.prototype.isEnabled();
- tab.setAttribute("aria-disabled", enabled ? "false" : "true");
- }
-
- // xxxHonza: Does this belong here?
- Firebug.StartButton.resetTooltip();
- ]]></body>
- </method>
-
- <method name="updatePanels">
- <parameter name="panelTypes"/>
- <body><![CDATA[
- this.tabMap = {};
-
- // Replace tabs at the same position if type has changed
- var i = 0;
- var tab = this.panelTabs.firstChild;
- for (; i < panelTypes.length && tab; tab = tab.nextSibling)
- {
- var panelType = panelTypes[i++];
- if (tab.panelType.prototype.name != panelType.prototype.name)
- {
- var newTab = this.createTab(panelType);
- this.panelTabs.replaceChild(newTab, tab);
- tab = newTab;
- }
- else
- {
- this.tabMap[panelType.prototype.name] = tab;
- }
- }
-
- // Remove old tabs after the last panel
- while (tab)
- {
- var nextTab = tab.nextSibling;
- this.panelTabs.removeChild(tab);
- tab = nextTab;
- }
-
- // Insert new tabs after the last old tab
- for (; i < panelTypes.length; ++i)
- {
- var panelType = panelTypes[i];
- var newTab = this.createTab(panelType);
- this.panelTabs.appendChild(newTab);
- }
-
- // Make sure hidden panels are collapsed.
- if (Firebug.Options)
- var prefValue = Firebug.Options.get("hiddenPanels");
- else
- var prefValue = Firebug.getPref(Firebug.prefDomain, "hiddenPanels");
- if (!prefValue || !prefValue.length)
- return;
-
- var closedPanels = prefValue.split(" ");
- for (i=0; i<closedPanels.length; i++)
- {
- var tab = this.tabMap[closedPanels[i]];
- if (tab)
- FBL.collapse(tab, true);
- }
- ]]></body>
- </method>
-
- <method name="selectTab">
- <parameter name="tab"/>
- <body><![CDATA[
- var panelName = tab ? tab.panelType.prototype.name : null;
- this.selectPanel(panelName);
- var scrollBox = this.getElementsByClassName("panelbar-arrowscrollbox").item(0);
- scrollBox.ensureVisibleTab(tab);
- ]]></body>
- </method>
-
- <method name="selectPanel">
- <parameter name="panelName"/>
- <parameter name="forceUpdate"/>
- <parameter name="noRefresh"/>
- <body><![CDATA[
- var tab = panelName ? this.tabMap[panelName] : null;
- var panelType = tab ? tab.panelType : null;
- var panel = Firebug.currentContext ?
- Firebug.currentContext.getPanel(panelName) : null;
-
- if (panelName && tab && !tab.panelType.prototype.parentPanel)
- {
- if (Firebug.Options)
- Firebug.Options.set("defaultPanelName", panelName);
- else
- Firebug.setPref(Firebug.prefDomain, "defaultPanelName", panelName);
- }
-
- // Make sure the panel is visible.
- this.togglePanel(panelName, true);
-
- // Optimization is done only if the panel really doesn't need to be refreshed.
- if (panel && (panel == this.selectedPanel) && !forceUpdate)
- return panel;
-
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("selectPanel " + panelName + " panel: " + panel +
- ", forceUpdate: " + forceUpdate + ", noRefresh: " + noRefresh +
- ", needsUpdate: " + (panel ? panel.needsRefresh : ""));
-
- this.hideSelectedPanel();
-
- //xxxHonza: can be removed, but Chromebug needs it for now.
- this.tabBox.removeAttribute("collapsed");
-
- if (this.selectedTab)
- this.selectedTab.selected = false;
-
- this.selectedTab = tab;
- this.selectedPanel = panel;
-
- if (tab)
- {
- tab.selected = true;
- if (Firebug.A11yModel && Firebug.A11yModel.isEnabled() &&
- Firebug.A11yModel.tabFocused && !forceUpdate)
- {
- tab.focus();
- }
- }
-
- if (panel)
- {
- panel.panelBrowser = panel.browser ? panel.browser : this.browser;
- panel.panelBrowser.currentPanel = panel;
- }
-
- if (!panel || panel.panelBrowser != this.browser)
- this.browser.currentPanel = null;
-
- this.dispatch("selectingPanel");
-
- var sel = this.browser.contentWindow.getSelection();
- if (sel)
- sel.removeAllRanges();
-
- this.showSelectedPanel(panelName); // sets active attribute true
-
- if (panel && !noRefresh && panel.needsRefresh)
- {
- delete panel.needsRefresh;
- panel.refresh();
- }
-
- if (panel && panel.browser)
- {
- if (panel.browser.parentNode != this.deck)
- this.deck.appendChild(panel.browser);
-
- this.deck.selectedPanel = panel.browser;
- }
- else
- {
- this.deck.selectedPanel = this.browser;
- }
-
- this.dispatch("selectPanel");
-
- return panel;
- ]]></body>
- </method>
-
- <method name="dispatch">
- <parameter name="eventName"/>
- <body><![CDATA[
- var ev = document.createEvent("Events");
- ev.initEvent(eventName, true, false);
- this.dispatchEvent(ev);
- ]]></body>
- </method>
-
- <method name="showSelectedPanel">
- <parameter name="panelName"/>
- <body><![CDATA[
- var panel = this.selectedPanel;
- if (panel)
- {
- panel.visible = true;
- panel.panelNode.setAttribute("active", true);
-
- var state = Firebug.getPanelState(panel);
- panel.show(state);
-
- Firebug.dispatch(Firebug.uiListeners, "onShowPanel", [panel]);
- }
- else
- {
- // Render default content (note that the template is available as soon as
- // FB namespaces are evaluated)
- if (Firebug.DisabledPanelBox)
- Firebug.DisabledPanelBox.show(this.browser, panelName);
- }
-
- this.updateToolbarVisibility();
- ]]></body>
- </method>
-
- <method name="hideSelectedPanel">
- <body><![CDATA[
- var oldPanel = this.selectedPanel;
- if (oldPanel)
- {
- var state = FBL.getPersistedState(Firebug.currentContext, oldPanel.name);
- oldPanel.hide(state);
-
- Firebug.dispatch(Firebug.uiListeners, "onHidePanel", [oldPanel]);
-
- oldPanel.visible = false; // xxxjjb Why three ways to un-show the panel?
- oldPanel.panelNode.removeAttribute("active");
- }
-
- // Also hide disabled panel content if any
- if (Firebug.DisabledPanelBox)
- Firebug.DisabledPanelBox.hide(this.browser);
- ]]></body>
- </method>
-
- <method name="updateToolbarVisibility">
- <body><![CDATA[
- var noButtons = true;
- var toolbarInner = Firebug.chrome.$("fbToolbarInner");
- var box = toolbarInner.firstChild;
- while (box)
- {
- var tagName = box.tagName.toLowerCase();
- var collapsed = box.getAttribute("collapsed");
- if (collapsed != "true")
- {
- if (tagName == "panelstatus" && !box.firstChild)
- {
- box = box.nextSibling;
- continue;
- }
-
- noButtons = false;
- break;
- }
-
- box = box.nextSibling;
- }
-
- var toolbar = Firebug.chrome.$("fbToolbox");
- FBL.collapse(toolbar, noButtons);
- ]]></body>
- </method>
-
- <method name="closePanel">
- <parameter name="panelName"/>
- <body><![CDATA[
- var tab = this.getTab(panelName);
- FBL.collapse(tab, true);
- this.storeHiddenPanels();
-
- if (this.selectedTab != tab)
- return;
-
- // If the selected panel has been closed, select the first one that is visible.
- tab = this.panelTabs.firstChild;
- while (tab)
- {
- if (FBL.isVisible(tab))
- {
- this.selectTab(tab);
- break;
- }
- tab = tab.nextSibling;
- }
- ]]></body>
- </method>
-
- <method name="openPanel">
- <parameter name="panelName"/>
- <body><![CDATA[
- var tab = this.getTab(panelName);
- FBL.collapse(tab, false);
- this.storeHiddenPanels();
- ]]></body>
- </method>
-
- <method name="togglePanel">
- <parameter name="panelName"/>
- <parameter name="forceOpen"/>
- <body><![CDATA[
- var tab = this.getTab(panelName);
- if (!tab)
- return;
-
- var open = FBL.isVisible(tab);
- if (open && forceOpen)
- return;
-
- if (open)
- this.closePanel(panelName);
- else
- this.openPanel(panelName);
- ]]></body>
- </method>
-
- <method name="storeHiddenPanels">
- <body><![CDATA[
- var closedPanels = [];
- var tab = this.panelTabs.firstChild;
- while (tab)
- {
- if (!FBL.isVisible(tab))
- closedPanels.push(tab.panelType.prototype.name);
- tab = tab.nextSibling;
- }
- if (Firebug.Options)
- Firebug.Options.set("hiddenPanels", closedPanels.join(" "));
- else
- Firebug.setPref(Firebug.prefDomain, "hiddenPanels", closedPanels.join(" "));
- ]]></body>
- </method>
-
- <method name="openAllPanels">
- <parameter name="event"/>
- <body><![CDATA[
- var tab = this.panelTabs.firstChild;
- while (tab)
- {
- if (!FBL.isVisible(tab))
- FBL.collapse(tab, false);
- tab = tab.nextSibling;
- }
- if (Firebug.Options)
- Firebug.Options.set("hiddenPanels", "");
- else
- Firebug.setPref(Firebug.prefDomain, "hiddenPanels", "");
- FBL.cancelEvent(event);
- ]]></body>
- </method>
- </implementation>
-
- <handlers>
- <handler event="mousedown" button="0"><![CDATA[
- event.stopPropagation();
- var tab = event.target;
- for (; tab && !tab.panelType; tab = tab.parentNode);
-
- if (tab && tab.getAttribute("selected") != "true")
- {
- // Select after a timeout to increase the snappy
- setTimeout(FBL.bindFixed(function()
- {
- this.selectTab(tab);
- }, this));
- }
- ]]></handler>
- </handlers>
-</binding>
-
-<binding id="panelBarArrowscrollbox"
- extends="chrome://global/content/bindings/scrollbox.xml#arrowscrollbox-clicktoscroll">
- <implementation>
- <constructor><![CDATA[
- var id = this.getAttribute("id")
- var index = id.indexOf("-Arrowscrollbox");
- var parentPanelBarId = id.substr(0, index);
-
- this.panelBar = document.getElementById(parentPanelBarId);
- this.panelTabs = document.getElementById(parentPanelBarId + "-panelTabs");
-
- this.scrollbox = document.getAnonymousElementByAttribute(this, "anonid", "scrollbox");
- window.addEventListener("resize", this, false);
- ]]></constructor>
-
- <destructor><![CDATA[
- window.removeEventListener("resize", this, false);
- ]]></destructor>
-
- <method name="_getScrollableElements">
- <body><![CDATA[
- return this.panelTabs.childNodes;
- ]]></body>
- </method>
-
- <method name="handleEvent">
- <parameter name="event"/>
- <body><![CDATA[
- switch (event.type)
- {
- case "resize":
- this.adjustTabSize(event);
- break;
- }
- ]]></body>
- </method>
-
- <method name="adjustTabSize">
- <parameter name="event"/>
- <body><![CDATA[
- if (!this.initialized)
- return;
-
- // Don't shrink at all, if the pref is set to zero or less
- if (Firebug.panelTabMinWidth <= 0)
- return;
-
- var totalWidth = parseInt(this.scrollbox.boxObject.width, 10);
- if (!totalWidth)
- return;
-
- var tabs = FBL.cloneArray(this.panelTabs.children);
- if (!tabs.length)
- return;
-
- var availableSpace = totalWidth;
- while (tabs.length && availableSpace > 0)
- {
- var noSpace = true;
- var tabWidth = Math.max(Firebug.panelTabMinWidth,
- availableSpace / tabs.length);
-
- for (var i=0; i<tabs.length; i++)
- {
- var tab = tabs[i];
- tab.style.maxWidth = tab.selected == "true" ? "none" : tabWidth + "px";
- if (tab.originalWidth <= tabWidth)
- {
- noSpace = false;
- tabs.splice(i, 1);
- availableSpace = availableSpace - tab.originalWidth;
- break;
- }
- }
- if (noSpace)
- break;
- }
- ]]></body>
- </method>
-
- <method name="updateOriginalSize">
- <body><![CDATA[
- if (this.initialized)
- return;
-
- if (!this.panelTabs)
- return;
-
- var tab = this.panelTabs.firstChild;
- while (tab)
- {
- tab.originalWidth = tab.boxObject.width;
- tab = tab.nextSibling;
- }
- this.initialized = true;
- ]]></body>
- </method>
-
- <method name="ensureVisibleTab">
- <parameter name="tab"/>
- <body><![CDATA[
- if (tab)
- this.scrollBoxObject.ensureElementIsVisible(tab);
- ]]></body>
- </method>
- </implementation>
-
- <handlers>
- <handler event="underflow"><![CDATA[
- if (event.detail == 0)
- return; // Ignore vertical events
- this.updateOriginalSize();
- ]]></handler>
-
- <handler event="overflow"><![CDATA[
- if (event.detail == 0)
- return; // Ignore vertical events
-
- this.updateOriginalSize();
-
- this.ensureVisibleTab(this.panelBar.selectedTab);
- ]]></handler>
- </handlers>
-</binding>
-
-<binding id="panelBarTabList" display="xul:box">
- <content>
- <xul:toolbarbutton class="fb-tabs-alltabs-button noTabStop" type="menu" xbl:inherits="tooltiptext">
- <xul:menupopup anonid="popup" />
- </xul:toolbarbutton>
- </content>
- <implementation>
- <constructor><![CDATA[
- this.popup = document.getAnonymousElementByAttribute(this, "anonid", "popup");
- this.panelBar = document.getElementById("fbPanelBar1");
- ]]>
- </constructor>
- <method name="updateMenuItems">
- <body><![CDATA[
- var visibleTabs = [];
- var menuItem = this.popup.firstChild;
- while (menuItem)
- {
- var checked = menuItem.getAttribute("checked") == "true";
- if (checked)
- visibleTabs.push(menuItem);
-
- menuItem.removeAttribute("disabled");
- menuItem = menuItem.nextSibling;
- }
-
- // If there is only one panel visible don't allow to close it.
- if (visibleTabs.length == 1)
- visibleTabs[0].setAttribute("disabled", true);
- ]]></body>
- </method>
- </implementation>
-
- <handlers>
- <handler event="popupshowing"><![CDATA[
- var tab = this.panelBar.panelTabs.firstChild;
- while (tab)
- {
- var menuItem = document.createElement("menuitem");
- menuItem.setAttribute("class", "panelBarTabListMenuItem");
- menuItem.setAttribute("type", "checkbox");
- menuItem.setAttribute("checked", FBL.isVisible(tab));
- menuItem.setAttribute("label", tab.label);
- menuItem.panelType = tab.panelType;
- this.popup.appendChild(menuItem);
- tab = tab.nextSibling;
- }
-
- // Create separator
- this.popup.appendChild(document.createElement("menuseparator"));
-
- this.updateMenuItems();
-
- // The last menu item is for opening all panels.
- var menuItem = document.createElement("menuitem");
- menuItem.setAttribute("label", FBL.$STR("firebug.Show_All_Panels"));
- menuItem.setAttribute("class", "panelBarTabListOpenAllPanels");
- this.popup.appendChild(menuItem);
-
- return true;
- ]]></handler>
-
- <handler event="popuphidden"><![CDATA[
- FBL.eraseNode(this.popup);
- ]]></handler>
-
- <handler event="command"><![CDATA[
- var menuItem = event.originalTarget;
- var className = menuItem.getAttribute("class");
- if (className == "panelBarTabListOpenAllPanels")
- {
- this.panelBar.openAllPanels(event);
- return;
- }
-
- var panelName = menuItem.panelType.prototype.name;
- this.panelBar.selectPanel(panelName);
- ]]></handler>
- </handlers>
-</binding>
-
-<binding id="panelBarTabListMenuItem" extends="chrome://global/content/bindings/menu.xml#menuitem-iconic">
- <implementation>
- <constructor><![CDATA[
- var iconNode = document.getAnonymousElementByAttribute(this, "class",
- "menu-iconic-left");
- iconNode.allowEvents = true;
- iconNode.addEventListener("click", FBL.bind(this.onTogglePanel, this), true);
- iconNode.addEventListener("mouseover", FBL.bind(this.onOverToggleCheckmark, this,
- iconNode), true);
- this.panelBar = FBL.getAncestorByClass(this, "panelBar");
- ]]>
- </constructor>
-
- <method name="onTogglePanel">
- <parameter name="event"/>
- <body><![CDATA[
- if (this.getAttribute("disabled") == "true")
- return;
-
- var panelName = this.panelType.prototype.name;
- var checked = this.getAttribute("checked") == "true";
- this.setAttribute("checked", checked ? "false" : "true");
- this.panelBar.togglePanel(panelName, !checked);
-
- Firebug.chrome.$("panelBarTabList").updateMenuItems();
- ]]></body>
- </method>
-
- <method name="onOverToggleCheckmark">
- <parameter name="event"/>
- <parameter name="iconNode"/>
- <body><![CDATA[
- // xxxHonza: the goal here is to visually indicate that clicking on
- // checkmarks in the panel list popup selects the panel.
- // FBTrace.sysout('Here is the iconNode', iconNode);
- // iconNode.style.backgroundColor = "red";
- // So, iconNode here is XUL - change the current
- // background-image style (?) of <xul:image> to something that
- // pops out a little
- ]]></body>
- </method>
- </implementation>
-</binding>
-
-<binding id="panelTab" display="xul:button">
- <content>
- <xul:label class="panelTab-text" crop="right" flex="1"
- xbl:inherits="value=label,accesskey,crop,toolbarmode,buttonstyle,disabled"/>
- <children includes="panelTabMenu"/>
- </content>
- <implementation>
- <constructor><![CDATA[
- this.labelNode = document.getAnonymousElementByAttribute(this, "class",
- "panelTab-text");
- this.setAttribute("role", "tab");
- this.setAttribute("aria-haspopup", "true");
- if (!this.tabMenu)
- {
- this.tabMenu = document.createElement("panelTabMenu");
- this.appendChild(this.tabMenu);
- }
- return this.tabMenu;
- ]]>
- </constructor>
-
- <property name="selected">
- <getter><![CDATA[
- return this.getAttribute("selected");
- ]]></getter>
-
- <setter><![CDATA[
- this.setAttribute("selected", val);
- this.tabMenu.updateVisibility();
- ]]></setter>
- </property>
-
- <property name="label">
- <getter><![CDATA[
- return this.labelNode.getAttribute("value");
- ]]></getter>
-
- <setter><![CDATA[
- this.labelNode.setAttribute(val);
- ]]></setter>
- </property>
- </implementation>
- <handlers>
- <handler event="contextmenu"><![CDATA[
- var panelTabMenu = this.getElementsByTagName('panelTabMenu')[0];
- if (panelTabMenu)
- panelTabMenu.showMenu(this);
- ]]></handler>
- </handlers>
-</binding>
-
-<binding id="panelTabMenu" display="xul:button" extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton">
- <content>
- <!-- Specify an empty tooltiptext to avoid displaying tooltip from the tab -->
- <xul:menupopup anonid="popup" tooltiptext="" class="menuPopup"/>
- <xul:image anonid="menuTarget" class="menuTarget"/>
- </content>
-
- <implementation>
- <constructor><![CDATA[
- this.setAttribute("role", "presentation");
- this.popup = document.getAnonymousElementByAttribute(this, "anonid", "popup");
- this.panelBar = FBL.getAncestorByClass(this, "panelBar");
- ]]>
- </constructor>
-
- <field name="value"/>
-
- <method name="onToggle">
- <body><![CDATA[
- var panelType = this.parentNode.panelType;
- panelType.prototype.setEnabled(!panelType.prototype.isEnabled());
- this.panelBar.updateTab(panelType);
- ]]></body>
- </method>
-
- <method name="onEnable">
- <body><![CDATA[
- var panelType = this.parentNode.panelType;
- panelType.prototype.setEnabled(true);
- this.panelBar.updateTab(panelType);
- ]]></body>
- </method>
-
- <method name="onDisable">
- <body><![CDATA[
- var panelType = this.parentNode.panelType;
- panelType.prototype.setEnabled(false);
- this.panelBar.updateTab(panelType);
- ]]></body>
- </method>
-
- <method name="optionMenu">
- <parameter name="label"/>
- <parameter name="checked"/>
- <parameter name="command"/>
- <parameter name="tooltiptext"/>
- <body><![CDATA[
- return {label: label, type: "checkbox", checked: checked, tooltiptext: tooltiptext,
- command: FBL.bindFixed(command, this), closemenu: true};
- ]]></body>
- </method>
-
- <method name="updateVisibility">
- <body><![CDATA[
- // Hide the mini-menu (displaying panel's option) if following is true:
- // 1) The panel isn't activable and so there are no enable/disable options.
- // 2) The panel doesn't provide any additional options.
- var panel = this.panelBar.selectedPanel;
- if (!panel)
- return;
-
- var panelItems = this.getOptionsMenuItems(panel);
-
- if (!panel.activable && !(panelItems && panelItems.length))
- this.setAttribute("collapsed", "true");
- else
- this.removeAttribute("collapsed");
- ]]></body>
- </method>
-
- <method name="showMenu">
- <parameter name="anchor"/>
- <body><![CDATA[
- var popupBoxObject = this.popup.popupBoxObject;
- popupBoxObject.setConsumeRollupEvent(popupBoxObject.ROLLUP_NO_CONSUME);
- var style = this.ownerDocument.defaultView.getComputedStyle(this.popup, null);
- var rtlLanguage = style.direction == "rtl";
- this.popup.showPopup(anchor || this, -1, -1, "popup",
- rtlLanguage ? "bottomright" : "bottomleft",
- rtlLanguage ? "topright" : "topleft");
- ]]></body>
- </method>
-
- <method name="getOptionsMenuItems">
- <parameter name="panel"/>
- <body><![CDATA[
- if (!panel)
- return null;
-
- // Get menu items from the current panel.
- var context = Firebug.currentContext;
- var items = panel.getOptionsMenuItems(context);
-
- // Distribute to listeners so, other modules/extensions can extend the menu.
- Firebug.dispatch(Firebug.uiListeners, "onOptionsMenu", [context, panel, items]);
-
- return items;
- ]]></body>
- </method>
- </implementation>
-
- <handlers>
- <handler event="mousedown" button="0"><![CDATA[
- this.showMenu();
- // needed for displaying menu on not selected tabs
- event.stopPropagation();
- ]]></handler>
-
- <handler event="popupshowing"><![CDATA[
- // If the event comes from a sub-menu ignore it (just the root has "menuPopup" class)
- if (!FBL.hasClass(event.originalTarget, "menuPopup"))
- return;
-
- var tab = this.parentNode;
- if (!tab)
- return false;
- this.setAttribute("role", "menu");
- var items = [];
- var panelType = tab.panelType;
- var enabled = true;
-
- // Create menu items for activation (only for activable panels).
- if (panelType.prototype.activable)
- {
- enabled = panelType.prototype.isEnabled();
- items.push(this.optionMenu("panel.Enabled", enabled, this.onToggle,
- "panel.tip.Enabled"));
- }
-
- // force creating panel only if it's not disabled
- var panel = Firebug.currentContext.getPanelByType(panelType, !enabled);
-
- if (panel)
- {
- // Get panel's option items
- var panelItems = this.getOptionsMenuItems(panel);
- if (panelItems && panelItems.length > 0)
- items.push("-");
- }
-
- var menu = FBL.extendArray(items, panelItems);
- for (var i = 0; i < menu.length; ++i)
- FBL.createMenuItem(this.popup, menu[i]);
-
- if (!this.popup.childNodes.length)
- return false;
-
- return true;
- ]]></handler>
-
- <handler event="popuphidden"><![CDATA[
- // If the event comes from a sub-menu ignore it (just the root has "menuPopup" class)
- if (!FBL.hasClass(event.originalTarget, "menuPopup"))
- return;
-
- this.setAttribute("role", "presentation");
- FBL.eraseNode(this.popup);
- ]]></handler>
- </handlers>
-</binding>
-
-<binding id="panelStatus">
- <implementation>
- <method name="addItem">
- <parameter name="label"/>
- <parameter name="object"/>
- <parameter name="rep"/>
- <parameter name="separator"/>
- <body><![CDATA[
- if (this.firstChild)
- {
- // extra box needed to fix alignment issue in Vista theme
- var box = document.createElement("hbox");
- box.setAttribute("role", "separator");
- box.setAttribute("align", "center");
- var sep = document.createElement("label");
- sep.setAttribute("class", "panelStatusSeparator");
- sep.setAttribute("value", separator);
- sep.setAttribute("role", "presentation");
- box.appendChild(sep);
- this.appendChild(box);
- }
-
- var item = document.createElement("toolbarbutton");
- item.setAttribute("class", "panelStatusLabel");
- item.setAttribute("label", label);
- item.repObject = object;
- item.rep = rep;
- this.appendChild(item);
- return item;
- ]]></body>
- </method>
-
- <method name="clear">
- <parameter name="tab"/>
- <body><![CDATA[
- while (this.lastChild)
- this.removeChild(this.lastChild);
- this.selectedItem = null;
- ]]></body>
- </method>
-
- <method name="getItems">
- <body><![CDATA[
- var items = [];
- for (var item = this.lastChild; item; item = item.previousSibling)
- {
- if (item.repObject)
- items.push(item);
- }
- return items;
- ]]></body>
- </method>
-
- <method name="getItemByObject">
- <parameter name="object"/>
- <body><![CDATA[
- for (var item = this.lastChild; item; item = item.previousSibling)
- {
- if (item.rep)
- {
- var itemObject = item.rep.getRealObject(item.repObject,
- Firebug.currentContext);
- if (itemObject == object)
- return item;
- }
- }
- ]]></body>
- </method>
-
- <method name="selectObject">
- <parameter name="object"/>
- <body><![CDATA[
- var item = this.getItemByObject(object);
- this.selectItem(item);
- ]]></body>
- </method>
-
- <method name="selectItem">
- <parameter name="item"/>
- <body><![CDATA[
- if (this.selectedItem)
- this.selectedItem.removeAttribute("selected");
-
- this.selectedItem = item;
-
- if (item)
- {
- item.setAttribute("selected", "true");
-
- var ev = document.createEvent("Events");
- ev.initEvent("selectItem", true, false);
- this.dispatchEvent(ev);
- }
- ]]></body>
- </method>
- </implementation>
-
- <handlers>
- <handler event="command" ><![CDATA[
- var object = Firebug.getRepObject(event.target);
- if (object)
- {
- var rep = Firebug.getRep(object, Firebug.currentContext);
- object = rep.getRealObject(object, Firebug.currentContext);
- if (object)
- {
- this.selectObject(object);
- Firebug.chrome.select(object, null, null, true);
- }
- }
- ]]></handler>
-
- <handler event="mouseover"><![CDATA[
- var object = Firebug.getRepObject(event.target);
- if (object)
- {
- var rep = Firebug.getRep(object, Firebug.currentContext);
- object = rep.getRealObject(object, Firebug.currentContext);
- if (object)
- Firebug.Inspector.highlightObject(object, Firebug.currentContext);
- }
- ]]></handler>
-
- <handler event="mouseout"><![CDATA[
- Firebug.Inspector.highlightObject(null);
- ]]></handler>
- </handlers>
-</binding>
-
-<!-- This binding represents a location list used in a panel. The list is based
- on a menu-button (toolbar button with a popup-menu) and its purpose is displaying
- available files on the current page. For instance, in the Script panel, the location
- list displays list of all scripts. -->
-<binding id="panelFileList" display="xul:menu"
- extends="chrome://global/content/bindings/toolbarbutton.xml#menu-button">
- <content popup="_child">
- <xul:label class="toolbarbutton-text title" crop="right" flex="1"
- xbl:inherits="value=title"/>
- <xul:menupopup anonid="popup"/>
- <xul:toolbarbutton class="fb-toolbarbutton box-inherit toolbarbutton-menubutton-button"
- anonid="button" flex="1"
- xbl:inherits="disabled,crop,image,label,accesskey,command,align,dir,pack,orient" />
- <xul:dropmarker type="menu-button" class="toolbarbutton-menubutton-dropmarker"
- xbl:inherits="align,dir,pack,orient,disabled,label"/>
- </content>
-
- <resources>
- <stylesheet src="chrome://global/skin/toolbarbutton.css"/>
- </resources>
-
- <implementation>
- <constructor><![CDATA[
- this.popup = document.getAnonymousElementByAttribute(this, "anonid", "popup");
- this._closed = true;
- ]]></constructor>
-
- <property name="location">
- <getter><![CDATA[
- if (FBTrace.DBG_LOCATIONS)
- FBTrace.sysout("location getter label:" + this.getAttribute("label") +
- " location: " + this.getAttribute("location"));
- return this.getAttribute("location");
- ]]></getter>
-
- <setter><![CDATA[
- var locator = this.getLocator();
-
- var fileName = "";
- if (!locator)
- {
- fileName = "no locator!";
- }
- else if (val)
- {
- var description = locator.getObjectDescription(val);
- fileName = (description.protocol == "file" && description.path == "" &&
- description.name == "") ? description.domain : description.name;
- }
-
- this.repObject = val;
-
- var button = document.getAnonymousElementByAttribute(this, "anonid", "button");
-
- var path = description.path != "/" ? description.path : description.domain;
- if (fileName == path)
- FBL.setClass(button, "fbInlineItem");
- else
- FBL.removeClass(button, "fbInlineItem");
-
- this.setAttribute("label", fileName != path ?
- FBL.cropString(fileName, 80) : FBL.$STR("location.inline"));
- this.setAttribute("location", val);
- if (FBTrace.DBG_LOCATIONS)
- {
- FBTrace.sysout("location setter label:" + this.getAttribute("label") +
- " fileName: " + fileName + " val: " + val);
- }
- ]]></setter>
- </property>
-
- <method name="getLocator">
- <body><![CDATA[
- // XXXjjb this is complicated because the location list depends upon
- // the current panel
- if (!this.locator)
- {
- var functionYieldingExpression = this.getAttribute("locationProvider");
- try {
- if (functionYieldingExpression && functionYieldingExpression.length > 0)
- this.locator = eval(functionYieldingExpression);
- }
- catch (e)
- {
- FBTrace.sysout("getLocator Fails " + e + " in " + window.location);
- }
-
- if (!this.locator || typeof(this.locator) != "function")
- {
- var whichBinding = this.getAttribute("id");
- var msg = "ERROR: panelFileList " + whichBinding + " requires attribute " +
- "\'locationProvider\', an expression yielding a function";
- FBTrace.sysout(msg, {locator: this.locator,
- expression: functionYieldingExpression});
- return null;
- }
- }
-
- // The locator needs
- // getObjectDescription(object): return {path, name}
- // getLocationList(), a list of objects that can be fed into getObjectDescription
- // getObjectLocation(object)
- return this.locator(this);
- ]]></body>
- </method>
-
- <method name="selectObject">
- <parameter name="object"/>
- <body><![CDATA[
- this.repObject = object;
-
- var ev = document.createEvent("Events");
- ev.initEvent("selectObject", true, false);
- this.dispatchEvent(ev);
- ]]></body>
- </method>
-
- <method name="enterActiveItem">
- <body><![CDATA[
- for (var child = this.popup.firstChild; child; child = child.nextSibling)
- {
- if (child.getAttribute("_moz-menuactive") == "true")
- {
- this.location = child.repObject;
- this.selectObject(child.repObject);
- this.popup.hidePopup();
- }
- }
- ]]></body>
- </method>
-
- <method name="onKeyPress">
- <parameter name="event"/>
- <body><![CDATA[
- if (event.keyCode == KeyEvent.DOM_VK_RETURN)
- {
- this.enterActiveItem();
- FBL.cancelEvent(event);
- }
-
- this.filter.onKeyPress(event);
- ]]></body>
- </method>
-
- <method name="onClick">
- <parameter name="event"/>
- <body><![CDATA[
- //https://developer.mozilla.org/en/XUL/arrowscrollbox
- var scrollbutton = event.originalTarget;
- var anonid = scrollbutton.getAttribute("anonid");
- if (anonid == "scrollbutton-up")
- scrollbutton.parentNode.scrollByIndex(-15);
- if (anonid == "scrollbutton-down")
- scrollbutton.parentNode.scrollByIndex(+15);
- ]]>
- </body>
- </method>
- </implementation>
-
- <handlers>
- <handler event="popupshowing"><![CDATA[
- if (this.popup.firstChild)
- return false;
-
- var locator = this.getLocator();
- var objects = locator.getLocationList();
- if (!objects)
- {
- this.setAttribute("label", "");
- this.setAttribute("location", null);
- return false;
- }
-
- if (locator.getLocationContent)
- {
- locator.getLocationContent(objects, this.popup);
- return;
- }
-
- this.filter = FBL.createMenuHeader(this.popup,
- {label: "script.Type any key to filter list"});
- FBL.setClass(this.filter, "fbURLMenuItem");
- FBL.setClass(this.filter, "fbLocationListFilter");
-
- var groupNames = [];
- var groups = {};
-
- var currentDescription = null;
- if (this.repObject)
- currentDescription = locator.getObjectDescription(this.repObject);
-
- for (var i = 0; i < objects.length; ++i)
- {
- var object = objects[i];
- var description = locator.getObjectDescription(object);
- if (!description)
- FBTrace.sysout("binding.xml popupshowing Fails", object);
-
- var name = (description.protocol == "file" && description.path == "" &&
- description.name == "") ? description.domain : description.name;
- var entry = {object: object, fileName: name};
-
- if (currentDescription &&
- currentDescription.protocol == description.protocol &&
- currentDescription.domain == description.domain &&
- currentDescription.path == description.path &&
- currentDescription.name == description.name)
- {
- entry.selected = true;
- }
-
- var path = description.path != "/" ? description.path : description.domain;
- if (groups.hasOwnProperty(description.path))
- {
- groups[path].push(entry);
- }
- else
- {
- groups[path] = [entry];
- groupNames.push(path);
- }
- }
-
- groupNames.sort();
-
- for (var i = 0; i < groupNames.length; ++i)
- {
- var path = groupNames[i];
- var urls = groups[path];
- urls.sort(function(a, b) { return a.fileName < b.fileName ? -1 : 1; });
-
- var menuHeader = FBL.createMenuHeader(this.popup, {
- label: path || FBL.$STR("location.no_domain"),
- nol10n: true
- });
- FBL.setClass(menuHeader, "fbURLMenuItem");
- if (path == "")
- FBL.setClass(menuHeader, "fbNoDomain");
-
- for (var j = 0; j < urls.length; ++j)
- {
- var label = urls[j].fileName != path ?
- urls[j].fileName : FBL.$STR("location.inline");
- var menuInfo = {
- label: FBL.cropString(label, Firebug.Options.get("stringCropLength")),
- tooltiptext: path + urls[j].fileName,
- nol10n: true
- };
-
- if (urls[j].selected)
- {
- menuInfo.type = "checkbox";
- menuInfo.checked = true;
- }
-
- var menuItem = FBL.createMenuItem(this.popup, menuInfo);
- menuItem.repObject = urls[j].object;
- FBL.setClass(menuItem, "fbURLMenuItem");
- if (urls[j].fileName == path)
- FBL.setClass(menuItem, "fbInlineItem");
- }
- }
-
- // Focus Firebug UI so that keyboard navigation (up/down) in the menu works.
- Firebug.chrome.focus();
- ]]></handler>
-
- <handler event="popupshown"><![CDATA[
- // Weird, but this gets fired when the user clicks on a menuitem,
- // which hides the buttons again and resulting in jitters - let's avoid that.
- if (!this._closed)
- return;
-
- this._closed = false;
-
- this.filter.filterString = "";
-
- this.onkeypress = FBL.bind(this.onKeyPress, this);
- window.parent.addEventListener("keypress", this.onkeypress, true);
-
- this.onclick = FBL.bind(this.onClick, this);
- this.popup.addEventListener("click", this.onclick, true);
- ]]></handler>
-
- <handler event="popuphidden"><![CDATA[
- window.parent.removeEventListener("keypress", this.onkeypress, true);
- this.popup.removeEventListener("click", this.onclick, true);
-
- delete this.onkeypress;
-
- delete this.filter.filterString;
-
- FBL.eraseNode(this.popup);
- this._closed = true;
- ]]></handler>
-
- <handler event="command"><![CDATA[
- var object = event.originalTarget.repObject;
-
- // Select after a timeout to increase the snappy
- setTimeout(FBL.bindFixed(function()
- {
- this.selectObject(object);
- }, this));
- ]]></handler>
- </handlers>
-</binding>
-
-<!-- Panel file list filter is used in the file list (location list) to filter its content. -->
-<binding id="panelFileListFilter">
- <implementation>
- <constructor><![CDATA[
- this.popup = this.parentNode;
- ]]></constructor>
-
- <method name="filterList">
- <parameter name="substring"/>
- <body><![CDATA[
- this.firstMatch = null;
- var groupMatchCount = 0;
- substring = substring.toLowerCase();
- for (var child = this.popup.lastChild; child; child = child.previousSibling)
- {
- if (child.localName == "menuitem")
- {
- var label = child.getAttribute("tooltiptext").toLowerCase();
- child._searchMatch = label.indexOf(substring) != -1;
- if (child._searchMatch)
- {
- this.firstMatch = child;
- ++groupMatchCount;
- }
- }
- else
- {
- child._searchMatch = !!groupMatchCount;
- groupMatchCount = 0;
- }
- }
-
- if (this.firstMatch)
- {
- // skip the filterMessageHeader
- for (var child = this.popup.firstChild.nextSibling; child;
- child = child.nextSibling)
- {
- child.hidden = !child._searchMatch;
- }
-
- try
- {
- var toolbarButtonBO = this.popup.parentNode.boxObject;
- if (toolbarButtonBO instanceof Components.interfaces.nsIMenuBoxObject)
- toolbarButtonBO.activeChild = this.firstMatch;
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("bindings; panelFileListFilter EXCEPTION " + err, err);
- }
- }
-
- return this.firstMatch;
- ]]></body>
- </method>
-
- <method name="onKeyPress">
- <parameter name="event"/>
- <body><![CDATA[
- if (event.keyCode == KeyEvent.DOM_VK_RETURN)
- {
- this.filterString = "";
- }
- else if (event.keyCode == KeyEvent.DOM_VK_BACK_SPACE)
- {
- this.filterString = this.filterString.substr(0, this.filterString.length - 1);
- this.filterList(this.filterString);
- }
- else if (event.charCode)
- {
- this.filterString += String.fromCharCode(event.charCode).toLowerCase();
- this.filterList(this.filterString);
- }
- else
- {
- return;
- }
-
- this.setFilterStringMessage(this.filterString, this.firstMatch);
- FBL.cancelEvent(event);
- ]]></body>
- </method>
-
- <method name="setFilterStringMessage">
- <parameter name="filterString"/>
- <parameter name="matched"/>
- <body><![CDATA[
- // The placeholder is displayed in gray while the filter is in black
- this.setAttribute("keyword", filterString ? true : false);
-
- // If there is no match the background is red
- this.setAttribute("match", matched ? true : false);
-
- // Set the text into the box. If the user entirely removed the text use
- // the placeholder again.
- filterString = filterString ? filterString :
- FBL.$STR("script.Type any key to filter list");
-
- this.setAttribute("value", filterString);
- ]]>
- </body>
- </method>
- </implementation>
-</binding>
-
-<!-- Searchbox is located in the main Firebug toolbar and can be used to search
- for a keyword within the current panel. -->
-<binding id="searchBox">
- <content sizetopopup="none" align="center">
- <xul:textbox anonid="searchBox" flex="1" width="0"
- rows="1" label="search.Firebug_Search" class="fbsearch-textbox"
- onkeyup="onSearchBoxKeyUp(event, this);" aria-describedby="fbSearchBoxDescription">
- <xul:box class="fbsearch-icon" onclick="onSearchIconClick(event, this.parentNode)"/>
- </xul:textbox>
- <xul:description anonid="fbSearchBoxDescription" collapsed="true"/>
- <xul:panel id="fbSearchOptionsPanel" norestorefocus="true" noautofocus="true"
- ignorekeys="true" role="presentation">
- <xul:description id="fbSearchBoxIsSensitive" value="search.Case_AutoSensitive"/>
- <xul:description id="fbSearchBoxIsNotSensitive" value="search.Case_Insensitive"/>
- <xul:vbox class="searchOptionsMenu innerToolbar" role="menu" anonid="fbSearchOptionsMenu">
- <xul:box anonid="startPanelFocus" class="panelFocusBound" onfocus="startFocusHandler()" />
- <xul:vbox anonid="searchOptionsList" role="presentation" />
- <xul:hbox pack="center" align="center" role="presentation">
- <xul:button anonid="searchPrev" class="fbsearch-options-buttons prev a11yFocus"
- label="search.Previous" tooltiptext="search.tip.Previous"
- oncommand="searchPrev()" role="menuitem" />
- <xul:button anonid="searchNext" class="fbsearch-options-buttons next a11yFocus"
- label="search.Next" tooltiptext="search.tip.Next"
- oncommand="searchNext()" role="menuitem" />
- </xul:hbox>
- <xul:box anonid="endPanelFocus" class="panelFocusBound" onfocus="endFocusHandler()" />
- </xul:vbox>
- </xul:panel>
- <xul:box anonid="endTextFocus" class="panelFocusBound" onfocus="endTextFocusHandler()" />
- </content>
-
- <implementation>
- <constructor><![CDATA[
- var searchBox = document.getAnonymousElementByAttribute(this, "anonid", "searchBox");
- var optionsPopup = document.getElementById("fbSearchOptionsPanel");
-
- var self = this;
-
- this.onFocusSearchBox = function(event)
- {
- self.focusHandler(event);
- };
-
- this.onFocusOptionsPopup = function(event)
- {
- self.panelFocusHandler(event);
- };
-
- searchBox.addEventListener("focus", this.onFocusSearchBox, true);
- optionsPopup.addEventListener("focus", this.onFocusOptionsPopup, true);
-
- // Dynamically set noautohide to avoid mozilla bug 545265.
- optionsPopup.addEventListener("popupshowing", function runOnce()
- {
- optionsPopup.removeEventListener("popupshowing", runOnce, false);
- optionsPopup.setAttribute("noautohide", true);
- }, false);
- ]]></constructor>
-
- <destructor><![CDATA[
- var searchBox = document.getAnonymousElementByAttribute(this, "anonid", "searchBox");
- var optionsPopup = document.getElementById("fbSearchOptionsPanel");
-
- searchBox.removeEventListener("focus", this.onFocusSearchBox, true);
- optionsPopup.removeEventListener("focus", this.onFocusOptionsPopup, true);
- ]]></destructor>
-
- <property name="value">
- <xbl:getter><![CDATA[
- var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
- "searchBox");
- return searchBox.value;
- ]]></xbl:getter>
-
- <xbl:setter><![CDATA[
- var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
- "searchBox");
- searchBox.setAttribute("active-search", !!val);
- searchBox.value = val;
- ]]></xbl:setter>
- </property>
-
- <property name="placeholder">
- <xbl:getter><![CDATA[
- var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
- "searchBox");
- return searchBox.placeholder;
- ]]></xbl:getter>
-
- <xbl:setter><![CDATA[
- var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
- "searchBox");
- searchBox.placeholder = val;
- ]]></xbl:setter>
- </property>
-
- <property name="status">
- <xbl:getter><![CDATA[
- return Firebug.Search.status;
- ]]></xbl:getter>
-
- <xbl:setter><![CDATA[
- var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
- "searchBox");
- Firebug.Search.status = searchBox.value == "" || val || "notfound";
- searchBox.setAttribute("status", Firebug.Search.status);
- searchBox.placeholder = "";
- ]]></xbl:setter>
- </property>
-
- <property name="optionsShown">
- <xbl:getter><![CDATA[
- var optionsPopup = document.getElementById("fbSearchOptionsPanel");
- return optionsPopup.state == "open";
- ]]></xbl:getter>
- </property>
-
- <!-- Flag indicating that the child of the panel has or just had focus -->
- <field name="panelHasFocus" />
-
- <!-- Timer to close the popup, set on blur. Any kind of focus that directly follows
- the blur should clear it with clearBlurTimeout(). -->
- <field name="blurTimeout">null</field>
-
- <method name="clearBlurTimeout">
- <body><![CDATA[
- if (this.blurTimeout !== null) {
- clearTimeout(this.blurTimeout);
- this.blurTimeout = null;
- }
- ]]></body>
- </method>
-
- <method name="updateOptions">
- <parameter name="menuItems" />
- <body><![CDATA[
- var searchOptions = document.getAnonymousElementByAttribute(this, "anonid",
- "searchOptionsList");
- FBL.eraseNode(searchOptions);
-
- if (menuItems)
- {
- for (var i=0; i<menuItems.length; i++)
- {
- var checkbox = document.createElement("checkbox");
- checkbox.className = "fbsearch-options-label a11yFocus";
- checkbox.setAttribute("role", "menuitemcheckbox")
- FBL.setItemIntoElement(checkbox, menuItems[i]);
-
- searchOptions.appendChild(checkbox);
- }
- }
- ]]></body>
- </method>
-
- <method name="showOptions">
- <body><![CDATA[
- var searchBox = document.getAnonymousElementByAttribute(this, "anonid", "searchBox");
- var searchPrev = document.getAnonymousElementByAttribute(this, "anonid", "searchPrev");
- var searchNext = document.getAnonymousElementByAttribute(this, "anonid", "searchNext");
-
- FBL.internationalize(searchBox, "label");
- FBL.internationalize(searchPrev, "label");
- FBL.internationalize(searchPrev, "tooltiptext");
- FBL.internationalize(searchNext, "label");
- FBL.internationalize(searchNext, "tooltiptext");
-
- var searchMenu = document.getAnonymousElementByAttribute(this, "anonid",
- "fbSearchOptionsMenu");
- var searchDescription = document.getAnonymousElementByAttribute(this, "anonid",
- "fbSearchBoxDescription");
-
- if (searchMenu)
- searchMenu.setAttribute("aria-label", FBL.$STR("a11y.labels.search options"));
-
- if (searchDescription)
- {
- searchDescription.setAttribute("tooltiptext",
- FBL.$STR("a11y.labels.Press up or down arrow key for search options"));
- }
-
- var optionsPopup = document.getElementById("fbSearchOptionsPanel");
- var position = (Firebug.getPlacement() == "detached" ? "after_end" : "before_end");
-
- this.focused = true;
- optionsPopup.setAttribute("position", position);
- var popupBoxObject = optionsPopup.popupBoxObject;
- popupBoxObject.setConsumeRollupEvent(popupBoxObject.ROLLUP_NO_CONSUME);
- optionsPopup.openPopup(this, position, 0, 0, false, false);
-
- this.clearBlurTimeout();
- ]]></body>
- </method>
-
- <method name="hideOptions">
- <body><![CDATA[
- var optionsPopup = document.getElementById("fbSearchOptionsPanel");
- optionsPopup.hidePopup();
-
- this.clearBlurTimeout();
- ]]></body>
- </method>
-
- <method name="searchNext">
- <body><![CDATA[
- this.status = Firebug.Search.searchNext(Firebug.currentContext);
- ]]></body>
- </method>
-
- <method name="searchPrev">
- <body><![CDATA[
- this.status = Firebug.Search.searchPrev(Firebug.currentContext);
- ]]></body>
- </method>
-
- <method name="focus">
- <body><![CDATA[
- var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
- "searchBox");
- searchBox.focus();
- ]]></body>
- </method>
-
- <method name="select">
- <body><![CDATA[
- var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
- "searchBox");
- searchBox.select();
- ]]></body>
- </method>
-
- <!-- Focus management handlers. These must be defined as methods and registered
- using addEventListener or attribute registration as XBL handlers do not
- appear to allow access to anonymous event targets when capturing. -->
- <method name="focusHandler">
- <parameter name="event" />
- <body><![CDATA[
- this.panelHasFocus = false;
- this.clearBlurTimeout();
-
- if (!FBL.hasClass(event.target, "panelFocusBound") && !this.optionsShown)
- {
- this.showOptions();
- }
- ]]></body>
- </method>
-
- <method name="panelFocusHandler">
- <parameter name="event" />
- <body><![CDATA[
- this.clearBlurTimeout();
-
- if (!FBL.hasClass(event.target, "panelFocusBound"))
- this.panelHasFocus = true;
- ]]></body>
- </method>
-
- <method name="endTextFocusHandler">
- <body><![CDATA[
- this.clearBlurTimeout();
-
- if (this.panelHasFocus)
- {
- // The user has just tabbed out of the panel
- document.commandDispatcher.advanceFocus();
- this.panelHasFocus = false;
- }
- else if (this.optionsShown)
- {
- // The user has just tabbed out of the search box (and into the panel)
- var optionsPopup = document.getElementById("fbSearchOptionsPanel");
- document.commandDispatcher.advanceFocusIntoSubtree(optionsPopup);
- }
- else
- {
- // The user has just reverse tabbed from the next tab target
- this.showOptions();
-
- var searchNext = document.getAnonymousElementByAttribute(this, "anonid",
- "searchNext");
- setTimeout(function() { searchNext.focus(); }, 0);
- this.panelHasFocus = true;
- }
- ]]></body>
- </method>
-
- <method name="startFocusHandler">
- <body><![CDATA[
- if (this.panelHasFocus)
- {
- // The user has shift-tabbed out of the panel
- var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
- "searchBox");
- searchBox.focus();
- this.panelHasFocus = false;
- }
- else
- {
- // The user has just tabbed into the panel
- document.commandDispatcher.advanceFocus();
- this.panelHasFocus = true;
- }
- ]]></body>
- </method>
-
- <method name="endFocusHandler">
- <body><![CDATA[
- // The user has just tabbed out of the panel
- this.hideOptions();
-
- var endTextFocus = document.getAnonymousElementByAttribute(this, "anonid",
- "endTextFocus");
- endTextFocus.focus();
- ]]></body>
- </method>
-
- <method name="onSearchBoxKeyUp">
- <parameter name="event" />
- <parameter name="textbox" />
- <body><![CDATA[
- textbox.setAttribute("active-search", !!textbox.value);
-
- if (!Firebug.A11yModel || !Firebug.A11yModel.isEnabled())
- return;
- if (event.keyCode == KeyEvent.DOM_VK_UP || event.keyCode == KeyEvent.DOM_VK_DOWN)
- {
- var goingDown = (event.keyCode == KeyEvent.DOM_VK_DOWN);
- var optionsPopup = document.getElementById("fbSearchOptionsPanel");
- var items = optionsPopup.getElementsByClassName("a11yFocus");
- if (!optionsPopup || !items)
- return;
- if (optionsPopup.state == "closed")
- this.showOptions();
-
- setTimeout(FBL.bindFixed(function()
- {
- items[goingDown ? 0 : items.length -1].focus();
- }));
- }
- else if (event.keyCode == KeyEvent.DOM_VK_ESCAPE)
- {
- this.hideOptions();
- }
- ]]></body>
- </method>
-
- <method name="onSearchIconClick">
- <parameter name="event" />
- <parameter name="textbox" />
- <body><![CDATA[
- if (textbox.value)
- {
- this.value = "";
- Firebug.Search.update(Firebug.currentContext);
- }
- else
- {
- this.optionsShown ? this.hideOptions() : this.showOptions();
- }
-
- if (!this.focused)
- this.focus();
- ]]></body>
- </method>
- </implementation>
-
- <handlers>
- <handler event="keypress"><![CDATA[
- if (event.keyCode == KeyEvent.DOM_VK_UP)
- {
- if (!FBL.isControl(event))
- this.value = Firebug.Search.cycleHistory(1);
- else
- this.searchPrev();
- }
- else if (event.keyCode == KeyEvent.DOM_VK_DOWN)
- {
- if (!FBL.isControl(event))
- this.value = Firebug.Search.cycleHistory(-1);
- else
- this.searchNext();
- }
- else if (event.keyCode == KeyEvent.DOM_VK_ESCAPE)
- {
- var optionsPopup = document.getElementById("fbSearchOptionsPanel");
- var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
- "searchBox");
- if (!optionsPopup || !searchBox)
- return;
- searchBox.focus();
- if (optionsPopup.state == "open")
- {
- event.stopPropagation(); // prevent cmd popup toggle
- optionsPopup.hidePopup();
- }
- else
- {
- return;
- }
- }
- else if (event.keyCode == KeyEvent.DOM_VK_RETURN)
- {
- if (FBL.isShift(event))
- this.searchPrev();
- else if (FBL.isControl(event))
- FBL.dispatch([Firebug.A11yModel], "moveToSearchMatch");
- else
- this.searchNext();
- }
- else
- {
- return;
- }
-
- FBL.cancelEvent(event);
- ]]></handler>
-
- <handler event="input"><![CDATA[
- Firebug.Search.update(Firebug.currentContext);
- ]]></handler>
-
- <handler event="popupshowing"><![CDATA[
- this.panelHasFocus = false;
- ]]></handler>
-
- <handler event="blur" phase="capturing"><![CDATA[
- this.clearBlurTimeout();
- this.blurTimeout = setTimeout(function()
- {
- hideOptions();
- status = "noSearch";
- focused = false;
- }, 0);
- ]]></handler>
- </handlers>
-</binding>
-
-<binding id="commandEditor" extends="chrome://global/content/bindings/textbox.xml#textarea">
- <handlers>
- <handler event="input"><![CDATA[
- Firebug.CommandLine.update(Firebug.currentContext);
- ]]></handler>
-
- <handler event="keypress" keycode="VK_TAB"><![CDATA[
- var input = document.getAnonymousElementByAttribute(this, "anonid", "input");
- FBL.insertTextIntoElement(input, Firebug.Editor.tabCharacter);
- event.preventDefault();
- ]]></handler>
-
- <handler event="keypress" keycode="VK_RETURN" modifiers="meta" preventdefault="true"><![CDATA[
- Firebug.CommandLine.enter(Firebug.currentContext);
- ]]></handler>
-
- <handler event="keypress" keycode="VK_RETURN" modifiers="control" preventdefault="true"><![CDATA[
- Firebug.CommandLine.enter(Firebug.currentContext);
- ]]></handler>
-
- <handler event="keypress" keycode="VK_ESCAPE" preventdefault="true"><![CDATA[
- Firebug.CommandLine.cancel(Firebug.currentContext);
- ]]></handler>
- </handlers>
-</binding>
-
-<binding id="splitmenu" extends="chrome://global/content/bindings/menu.xml#menuitem-base">
- <content align="stretch">
- <xul:menuitem anonid="item" flex="1"
- class="menuitem-tooltip split-menuitem-item"
- xbl:inherits="label,key,image,value,checked" allowevents="true"/>
- <xul:hbox class="split-menu-right-image" xbl:inherits="_moz-menuactive" >
- <xul:hbox align="center" class="menu-right" xbl:inherits="_moz-menuactive,disabled">
- <xul:image/>
- </xul:hbox>
- </xul:hbox>
- <children includes="menupopup"/>
- </content>
-
- <implementation implements="nsIDOMXULSelectControlItemElement, nsIDOMXULContainerItemElement, nsIAccessibleProvider">
- <constructor><![CDATA[
- if (this.getAttribute("iconic") == "true")
- {
- this.item.classList.remove("menuitem-tooltip");
- this.item.classList.add("menuitem-iconic-tooltip");
- this.item.classList.add("menuitem-iconic");
- }
- // workaround for 3.6 bug
- this.item.classList.add("split-menuitem-item");
- ]]></constructor>
-
- <field name="item" readonly="true">
- document.getAnonymousElementByAttribute(this, "anonid", "item");
- </field>
- </implementation>
-</binding>
-</bindings>
+<?xml version="1.0"?>
+<!-- See license.txt for terms of usage -->
+
+<bindings xmlns="http://www.mozilla.org/xbl"
+ xmlns:xbl="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+
+<binding id="initializer">
+ <implementation>
+ <destructor><![CDATA[
+ Firebug.chrome.shutdown();
+ ]]></destructor>
+ </implementation>
+</binding>
+
+<binding id="panelBar">
+ <!-- The XUL structure for the panel bar is specified in the XUL source
+ inside each "panelBar" element. This allows us to have panel bars
+ with substantially different layout, including the ability to embed
+ one panel bar within another - albeit at some cost in maintainability. -->
+ <content>
+ <children/>
+ </content>
+
+ <implementation>
+ <constructor><![CDATA[
+ this.tabBox = this.getChildElement("tabBox");
+ this.deck = this.getChildElement("deck");
+ this.browser = this.getChildElement("browser");
+ this.panelTabs = this.getChildElement("panelTabs");
+ this.tabMap = {};
+
+ function onBrowserLoad()
+ {
+ this.removeEventListener("load", onBrowserLoad, true);
+ this.complete = true;
+ }
+ this.browser.addEventListener("load", onBrowserLoad, true);
+
+ window.panelBarWaiter.panelBarReady();
+ ]]></constructor>
+
+ <method name="getChildElement">
+ <parameter name="id"/>
+ <body><![CDATA[
+ // Construct a unique ID from the panel bar ID and the child element ID,
+ // for example: "panelBar1-panelTabs". This allows us to define children
+ // in the XUL source, which in turn allows us to have panel bars with
+ // substantially different layouts.
+ return document.getElementById(this.id + "-" + id);
+ ]]></body>
+ </method>
+
+ <method name="createTab">
+ <parameter name="panelType"/>
+ <body><![CDATA[
+ var tab = document.createElement("panelTab");
+ tab.panelType = panelType;
+
+ var title = Firebug.getPanelTitle(panelType);
+ var tooltip = Firebug.getPanelTooltip(panelType);
+ tab.setAttribute("label", title);
+ tab.setAttribute("tooltiptext", tooltip);
+
+ this.tabMap[panelType.prototype.name] = tab;
+ this.updateTab(panelType);
+
+ return tab;
+ ]]></body>
+ </method>
+
+ <method name="addTab">
+ <parameter name="panelType"/>
+ <body><![CDATA[
+ var tab = this.createTab(panelType);
+ this.panelTabs.appendChild(tab);
+ ]]></body>
+ </method>
+
+ <method name="getTab">
+ <parameter name="panelName"/>
+ <body><![CDATA[
+ return this.tabMap[panelName];
+ ]]></body>
+ </method>
+
+ <method name="updateTab">
+ <parameter name="panelType"/>
+ <body><![CDATA[
+ var tab = this.getTab(panelType.prototype.name);
+
+ if (tab && panelType.prototype.activable)
+ {
+ var enabled = panelType.prototype.isEnabled();
+ tab.setAttribute("aria-disabled", enabled ? "false" : "true");
+ }
+
+ // xxxHonza: Does this belong here?
+ Firebug.StartButton.resetTooltip();
+ ]]></body>
+ </method>
+
+ <method name="updatePanels">
+ <parameter name="panelTypes"/>
+ <body><![CDATA[
+ this.tabMap = {};
+
+ // Replace tabs at the same position if type has changed
+ var i = 0;
+ var tab = this.panelTabs.firstChild;
+ for (; i < panelTypes.length && tab; tab = tab.nextSibling)
+ {
+ var panelType = panelTypes[i++];
+ if (tab.panelType.prototype.name != panelType.prototype.name)
+ {
+ var newTab = this.createTab(panelType);
+ this.panelTabs.replaceChild(newTab, tab);
+ tab = newTab;
+ }
+ else
+ {
+ this.tabMap[panelType.prototype.name] = tab;
+ }
+ }
+
+ // Remove old tabs after the last panel
+ while (tab)
+ {
+ var nextTab = tab.nextSibling;
+ this.panelTabs.removeChild(tab);
+ tab = nextTab;
+ }
+
+ // Insert new tabs after the last old tab
+ for (; i < panelTypes.length; ++i)
+ {
+ var panelType = panelTypes[i];
+ var newTab = this.createTab(panelType);
+ this.panelTabs.appendChild(newTab);
+ }
+
+ // Make sure hidden panels are collapsed.
+ if (Firebug.Options)
+ var prefValue = Firebug.Options.get("hiddenPanels");
+ else
+ var prefValue = Firebug.getPref(Firebug.prefDomain, "hiddenPanels");
+ if (!prefValue || !prefValue.length)
+ return;
+
+ var closedPanels = prefValue.split(" ");
+ for (i=0; i<closedPanels.length; i++)
+ {
+ var tab = this.tabMap[closedPanels[i]];
+ if (tab)
+ FBL.collapse(tab, true);
+ }
+ ]]></body>
+ </method>
+
+ <method name="selectTab">
+ <parameter name="tab"/>
+ <body><![CDATA[
+ var panelName = tab ? tab.panelType.prototype.name : null;
+ this.selectPanel(panelName);
+ var scrollBox = this.getElementsByClassName("panelbar-arrowscrollbox").item(0);
+ scrollBox.ensureVisibleTab(tab);
+ ]]></body>
+ </method>
+
+ <method name="selectPanel">
+ <parameter name="panelName"/>
+ <parameter name="forceUpdate"/>
+ <parameter name="noRefresh"/>
+ <body><![CDATA[
+ var tab = panelName ? this.tabMap[panelName] : null;
+ var panelType = tab ? tab.panelType : null;
+ var panel = Firebug.currentContext ?
+ Firebug.currentContext.getPanel(panelName) : null;
+
+ if (panelName && tab && !tab.panelType.prototype.parentPanel)
+ {
+ if (Firebug.Options)
+ Firebug.Options.set("defaultPanelName", panelName);
+ else
+ Firebug.setPref(Firebug.prefDomain, "defaultPanelName", panelName);
+ }
+
+ // Make sure the panel is visible.
+ this.togglePanel(panelName, true);
+
+ // Optimization is done only if the panel really doesn't need to be refreshed.
+ if (panel && (panel == this.selectedPanel) && !forceUpdate)
+ return panel;
+
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("selectPanel " + panelName + " panel: " + panel +
+ ", forceUpdate: " + forceUpdate + ", noRefresh: " + noRefresh +
+ ", needsUpdate: " + (panel ? panel.needsRefresh : ""));
+
+ this.hideSelectedPanel();
+
+ //xxxHonza: can be removed, but Chromebug needs it for now.
+ this.tabBox.removeAttribute("collapsed");
+
+ if (this.selectedTab)
+ this.selectedTab.selected = false;
+
+ this.selectedTab = tab;
+ this.selectedPanel = panel;
+
+ if (tab)
+ {
+ tab.selected = true;
+ if (Firebug.A11yModel && Firebug.A11yModel.isEnabled() &&
+ Firebug.A11yModel.tabFocused && !forceUpdate)
+ {
+ tab.focus();
+ }
+ }
+
+ if (panel)
+ {
+ panel.panelBrowser = panel.browser ? panel.browser : this.browser;
+ panel.panelBrowser.currentPanel = panel;
+ }
+
+ if (!panel || panel.panelBrowser != this.browser)
+ this.browser.currentPanel = null;
+
+ this.dispatch("selectingPanel");
+
+ var sel = this.browser.contentWindow.getSelection();
+ if (sel)
+ sel.removeAllRanges();
+
+ this.showSelectedPanel(panelName); // sets active attribute true
+
+ if (panel && !noRefresh && panel.needsRefresh)
+ {
+ delete panel.needsRefresh;
+ panel.refresh();
+ }
+
+ if (panel && panel.browser)
+ {
+ if (panel.browser.parentNode != this.deck)
+ this.deck.appendChild(panel.browser);
+
+ this.deck.selectedPanel = panel.browser;
+ }
+ else
+ {
+ this.deck.selectedPanel = this.browser;
+ }
+
+ this.dispatch("selectPanel");
+
+ return panel;
+ ]]></body>
+ </method>
+
+ <method name="dispatch">
+ <parameter name="eventName"/>
+ <body><![CDATA[
+ var ev = document.createEvent("Events");
+ ev.initEvent(eventName, true, false);
+ this.dispatchEvent(ev);
+ ]]></body>
+ </method>
+
+ <method name="showSelectedPanel">
+ <parameter name="panelName"/>
+ <body><![CDATA[
+ var panel = this.selectedPanel;
+ if (panel)
+ {
+ panel.visible = true;
+ panel.panelNode.setAttribute("active", true);
+
+ var state = Firebug.getPanelState(panel);
+ panel.show(state);
+
+ Firebug.dispatch(Firebug.uiListeners, "onShowPanel", [panel]);
+ }
+ else
+ {
+ // Render default content (note that the template is available as soon as
+ // FB namespaces are evaluated)
+ if (Firebug.DisabledPanelBox)
+ Firebug.DisabledPanelBox.show(this.browser, panelName);
+ }
+
+ this.updateToolbarVisibility();
+ ]]></body>
+ </method>
+
+ <method name="hideSelectedPanel">
+ <body><![CDATA[
+ var oldPanel = this.selectedPanel;
+ if (oldPanel)
+ {
+ var state = FBL.getPersistedState(Firebug.currentContext, oldPanel.name);
+ oldPanel.hide(state);
+
+ Firebug.dispatch(Firebug.uiListeners, "onHidePanel", [oldPanel]);
+
+ oldPanel.visible = false; // xxxjjb Why three ways to un-show the panel?
+ oldPanel.panelNode.removeAttribute("active");
+ }
+
+ // Also hide disabled panel content if any
+ if (Firebug.DisabledPanelBox)
+ Firebug.DisabledPanelBox.hide(this.browser);
+ ]]></body>
+ </method>
+
+ <method name="updateToolbarVisibility">
+ <body><![CDATA[
+ var noButtons = true;
+ var toolbarInner = Firebug.chrome.$("fbToolbarInner");
+ var box = toolbarInner.firstChild;
+ while (box)
+ {
+ var tagName = box.tagName.toLowerCase();
+ var collapsed = box.getAttribute("collapsed");
+ if (collapsed != "true")
+ {
+ if (tagName == "panelstatus" && !box.firstChild)
+ {
+ box = box.nextSibling;
+ continue;
+ }
+
+ noButtons = false;
+ break;
+ }
+
+ box = box.nextSibling;
+ }
+
+ var toolbar = Firebug.chrome.$("fbToolbox");
+ FBL.collapse(toolbar, noButtons);
+ ]]></body>
+ </method>
+
+ <method name="closePanel">
+ <parameter name="panelName"/>
+ <body><![CDATA[
+ var tab = this.getTab(panelName);
+ FBL.collapse(tab, true);
+ this.storeHiddenPanels();
+
+ if (this.selectedTab != tab)
+ return;
+
+ // If the selected panel has been closed, select the first one that is visible.
+ tab = this.panelTabs.firstChild;
+ while (tab)
+ {
+ if (FBL.isVisible(tab))
+ {
+ this.selectTab(tab);
+ break;
+ }
+ tab = tab.nextSibling;
+ }
+ ]]></body>
+ </method>
+
+ <method name="openPanel">
+ <parameter name="panelName"/>
+ <body><![CDATA[
+ var tab = this.getTab(panelName);
+ FBL.collapse(tab, false);
+ this.storeHiddenPanels();
+ ]]></body>
+ </method>
+
+ <method name="togglePanel">
+ <parameter name="panelName"/>
+ <parameter name="forceOpen"/>
+ <body><![CDATA[
+ var tab = this.getTab(panelName);
+ if (!tab)
+ return;
+
+ var open = FBL.isVisible(tab);
+ if (open && forceOpen)
+ return;
+
+ if (open)
+ this.closePanel(panelName);
+ else
+ this.openPanel(panelName);
+ ]]></body>
+ </method>
+
+ <method name="storeHiddenPanels">
+ <body><![CDATA[
+ var closedPanels = [];
+ var tab = this.panelTabs.firstChild;
+ while (tab)
+ {
+ if (!FBL.isVisible(tab))
+ closedPanels.push(tab.panelType.prototype.name);
+ tab = tab.nextSibling;
+ }
+ if (Firebug.Options)
+ Firebug.Options.set("hiddenPanels", closedPanels.join(" "));
+ else
+ Firebug.setPref(Firebug.prefDomain, "hiddenPanels", closedPanels.join(" "));
+ ]]></body>
+ </method>
+
+ <method name="openAllPanels">
+ <parameter name="event"/>
+ <body><![CDATA[
+ var tab = this.panelTabs.firstChild;
+ while (tab)
+ {
+ if (!FBL.isVisible(tab))
+ FBL.collapse(tab, false);
+ tab = tab.nextSibling;
+ }
+ if (Firebug.Options)
+ Firebug.Options.set("hiddenPanels", "");
+ else
+ Firebug.setPref(Firebug.prefDomain, "hiddenPanels", "");
+ FBL.cancelEvent(event);
+ ]]></body>
+ </method>
+ </implementation>
+
+ <handlers>
+ <handler event="mousedown" button="0"><![CDATA[
+ event.stopPropagation();
+ var tab = event.target;
+ for (; tab && !tab.panelType; tab = tab.parentNode);
+
+ if (tab && tab.getAttribute("selected") != "true")
+ {
+ // Select after a timeout to increase the snappy
+ setTimeout(FBL.bindFixed(function()
+ {
+ this.selectTab(tab);
+ }, this));
+ }
+ ]]></handler>
+ </handlers>
+</binding>
+
+<binding id="panelBarArrowscrollbox"
+ extends="chrome://global/content/bindings/scrollbox.xml#arrowscrollbox-clicktoscroll">
+ <implementation>
+ <constructor><![CDATA[
+ var id = this.getAttribute("id")
+ var index = id.indexOf("-Arrowscrollbox");
+ var parentPanelBarId = id.substr(0, index);
+
+ this.panelBar = document.getElementById(parentPanelBarId);
+ this.panelTabs = document.getElementById(parentPanelBarId + "-panelTabs");
+
+ this.scrollbox = document.getAnonymousElementByAttribute(this, "anonid", "scrollbox");
+ window.addEventListener("resize", this, false);
+ ]]></constructor>
+
+ <destructor><![CDATA[
+ window.removeEventListener("resize", this, false);
+ ]]></destructor>
+
+ <method name="_getScrollableElements">
+ <body><![CDATA[
+ return this.panelTabs.childNodes;
+ ]]></body>
+ </method>
+
+ <method name="handleEvent">
+ <parameter name="event"/>
+ <body><![CDATA[
+ switch (event.type)
+ {
+ case "resize":
+ this.adjustTabSize(event);
+ break;
+ }
+ ]]></body>
+ </method>
+
+ <method name="adjustTabSize">
+ <parameter name="event"/>
+ <body><![CDATA[
+ if (!this.initialized)
+ return;
+
+ // Don't shrink at all, if the pref is set to zero or less
+ if (Firebug.panelTabMinWidth <= 0)
+ return;
+
+ var totalWidth = parseInt(this.scrollbox.boxObject.width, 10);
+ if (!totalWidth)
+ return;
+
+ var tabs = FBL.cloneArray(this.panelTabs.children);
+ if (!tabs.length)
+ return;
+
+ var availableSpace = totalWidth;
+ while (tabs.length && availableSpace > 0)
+ {
+ var noSpace = true;
+ var tabWidth = Math.max(Firebug.panelTabMinWidth,
+ availableSpace / tabs.length);
+
+ for (var i=0; i<tabs.length; i++)
+ {
+ var tab = tabs[i];
+ tab.style.maxWidth = tab.selected == "true" ? "none" : tabWidth + "px";
+ if (tab.originalWidth <= tabWidth)
+ {
+ noSpace = false;
+ tabs.splice(i, 1);
+ availableSpace = availableSpace - tab.originalWidth;
+ break;
+ }
+ }
+ if (noSpace)
+ break;
+ }
+ ]]></body>
+ </method>
+
+ <method name="updateOriginalSize">
+ <body><![CDATA[
+ if (this.initialized)
+ return;
+
+ if (!this.panelTabs)
+ return;
+
+ var tab = this.panelTabs.firstChild;
+ while (tab)
+ {
+ tab.originalWidth = tab.boxObject.width;
+ tab = tab.nextSibling;
+ }
+ this.initialized = true;
+ ]]></body>
+ </method>
+
+ <method name="ensureVisibleTab">
+ <parameter name="tab"/>
+ <body><![CDATA[
+ if (tab)
+ this.scrollBoxObject.ensureElementIsVisible(tab);
+ ]]></body>
+ </method>
+ </implementation>
+
+ <handlers>
+ <handler event="underflow"><![CDATA[
+ if (event.detail == 0)
+ return; // Ignore vertical events
+ this.updateOriginalSize();
+ ]]></handler>
+
+ <handler event="overflow"><![CDATA[
+ if (event.detail == 0)
+ return; // Ignore vertical events
+
+ this.updateOriginalSize();
+
+ this.ensureVisibleTab(this.panelBar.selectedTab);
+ ]]></handler>
+ </handlers>
+</binding>
+
+<binding id="panelBarTabList" display="xul:box">
+ <content>
+ <xul:toolbarbutton class="fb-tabs-alltabs-button noTabStop" type="menu" xbl:inherits="tooltiptext">
+ <xul:menupopup anonid="popup" />
+ </xul:toolbarbutton>
+ </content>
+ <implementation>
+ <constructor><![CDATA[
+ this.popup = document.getAnonymousElementByAttribute(this, "anonid", "popup");
+ this.panelBar = document.getElementById("fbPanelBar1");
+ ]]>
+ </constructor>
+ <method name="updateMenuItems">
+ <body><![CDATA[
+ var visibleTabs = [];
+ var menuItem = this.popup.firstChild;
+ while (menuItem)
+ {
+ var checked = menuItem.getAttribute("checked") == "true";
+ if (checked)
+ visibleTabs.push(menuItem);
+
+ menuItem.removeAttribute("disabled");
+ menuItem = menuItem.nextSibling;
+ }
+
+ // If there is only one panel visible don't allow to close it.
+ if (visibleTabs.length == 1)
+ visibleTabs[0].setAttribute("disabled", true);
+ ]]></body>
+ </method>
+ </implementation>
+
+ <handlers>
+ <handler event="popupshowing"><![CDATA[
+ var tab = this.panelBar.panelTabs.firstChild;
+ while (tab)
+ {
+ var menuItem = document.createElement("menuitem");
+ menuItem.setAttribute("class", "panelBarTabListMenuItem");
+ menuItem.setAttribute("type", "checkbox");
+ menuItem.setAttribute("checked", FBL.isVisible(tab));
+ menuItem.setAttribute("label", tab.label);
+ menuItem.panelType = tab.panelType;
+ this.popup.appendChild(menuItem);
+ tab = tab.nextSibling;
+ }
+
+ // Create separator
+ this.popup.appendChild(document.createElement("menuseparator"));
+
+ this.updateMenuItems();
+
+ // The last menu item is for opening all panels.
+ var menuItem = document.createElement("menuitem");
+ menuItem.setAttribute("label", FBL.$STR("firebug.Show_All_Panels"));
+ menuItem.setAttribute("class", "panelBarTabListOpenAllPanels");
+ this.popup.appendChild(menuItem);
+
+ return true;
+ ]]></handler>
+
+ <handler event="popuphidden"><![CDATA[
+ FBL.eraseNode(this.popup);
+ ]]></handler>
+
+ <handler event="command"><![CDATA[
+ var menuItem = event.originalTarget;
+ var className = menuItem.getAttribute("class");
+ if (className == "panelBarTabListOpenAllPanels")
+ {
+ this.panelBar.openAllPanels(event);
+ return;
+ }
+
+ var panelName = menuItem.panelType.prototype.name;
+ this.panelBar.selectPanel(panelName);
+ ]]></handler>
+ </handlers>
+</binding>
+
+<binding id="panelBarTabListMenuItem" extends="chrome://global/content/bindings/menu.xml#menuitem-iconic">
+ <implementation>
+ <constructor><![CDATA[
+ var iconNode = document.getAnonymousElementByAttribute(this, "class",
+ "menu-iconic-left");
+ iconNode.allowEvents = true;
+ iconNode.addEventListener("click", FBL.bind(this.onTogglePanel, this), true);
+ iconNode.addEventListener("mouseover", FBL.bind(this.onOverToggleCheckmark, this,
+ iconNode), true);
+ this.panelBar = FBL.getAncestorByClass(this, "panelBar");
+ ]]>
+ </constructor>
+
+ <method name="onTogglePanel">
+ <parameter name="event"/>
+ <body><![CDATA[
+ if (this.getAttribute("disabled") == "true")
+ return;
+
+ var panelName = this.panelType.prototype.name;
+ var checked = this.getAttribute("checked") == "true";
+ this.setAttribute("checked", checked ? "false" : "true");
+ this.panelBar.togglePanel(panelName, !checked);
+
+ Firebug.chrome.$("panelBarTabList").updateMenuItems();
+ ]]></body>
+ </method>
+
+ <method name="onOverToggleCheckmark">
+ <parameter name="event"/>
+ <parameter name="iconNode"/>
+ <body><![CDATA[
+ // xxxHonza: the goal here is to visually indicate that clicking on
+ // checkmarks in the panel list popup selects the panel.
+ // FBTrace.sysout('Here is the iconNode', iconNode);
+ // iconNode.style.backgroundColor = "red";
+ // So, iconNode here is XUL - change the current
+ // background-image style (?) of <xul:image> to something that
+ // pops out a little
+ ]]></body>
+ </method>
+ </implementation>
+</binding>
+
+<binding id="panelTab" display="xul:button">
+ <content>
+ <xul:label class="panelTab-text" crop="right" flex="1"
+ xbl:inherits="value=label,accesskey,crop,toolbarmode,buttonstyle,disabled"/>
+ <children includes="panelTabMenu"/>
+ </content>
+ <implementation>
+ <constructor><![CDATA[
+ this.labelNode = document.getAnonymousElementByAttribute(this, "class",
+ "panelTab-text");
+ this.setAttribute("role", "tab");
+ this.setAttribute("aria-haspopup", "true");
+ if (!this.tabMenu)
+ {
+ this.tabMenu = document.createElement("panelTabMenu");
+ this.appendChild(this.tabMenu);
+ }
+ return this.tabMenu;
+ ]]>
+ </constructor>
+
+ <property name="selected">
+ <getter><![CDATA[
+ return this.getAttribute("selected");
+ ]]></getter>
+
+ <setter><![CDATA[
+ this.setAttribute("selected", val);
+ this.tabMenu.updateVisibility();
+ ]]></setter>
+ </property>
+
+ <property name="label">
+ <getter><![CDATA[
+ return this.labelNode.getAttribute("value");
+ ]]></getter>
+
+ <setter><![CDATA[
+ this.labelNode.setAttribute(val);
+ ]]></setter>
+ </property>
+ </implementation>
+ <handlers>
+ <handler event="contextmenu"><![CDATA[
+ var panelTabMenu = this.getElementsByTagName('panelTabMenu')[0];
+ if (panelTabMenu)
+ panelTabMenu.showMenu(this);
+ ]]></handler>
+ </handlers>
+</binding>
+
+<binding id="panelTabMenu" display="xul:button" extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton">
+ <content>
+ <!-- Specify an empty tooltiptext to avoid displaying tooltip from the tab -->
+ <xul:menupopup anonid="popup" tooltiptext="" class="menuPopup"/>
+ <xul:image anonid="menuTarget" class="menuTarget"/>
+ </content>
+
+ <implementation>
+ <constructor><![CDATA[
+ this.setAttribute("role", "presentation");
+ this.popup = document.getAnonymousElementByAttribute(this, "anonid", "popup");
+ this.panelBar = FBL.getAncestorByClass(this, "panelBar");
+ ]]>
+ </constructor>
+
+ <field name="value"/>
+
+ <method name="onToggle">
+ <body><![CDATA[
+ var panelType = this.parentNode.panelType;
+ panelType.prototype.setEnabled(!panelType.prototype.isEnabled());
+ this.panelBar.updateTab(panelType);
+ ]]></body>
+ </method>
+
+ <method name="onEnable">
+ <body><![CDATA[
+ var panelType = this.parentNode.panelType;
+ panelType.prototype.setEnabled(true);
+ this.panelBar.updateTab(panelType);
+ ]]></body>
+ </method>
+
+ <method name="onDisable">
+ <body><![CDATA[
+ var panelType = this.parentNode.panelType;
+ panelType.prototype.setEnabled(false);
+ this.panelBar.updateTab(panelType);
+ ]]></body>
+ </method>
+
+ <method name="optionMenu">
+ <parameter name="label"/>
+ <parameter name="checked"/>
+ <parameter name="command"/>
+ <parameter name="tooltiptext"/>
+ <body><![CDATA[
+ return {label: label, type: "checkbox", checked: checked, tooltiptext: tooltiptext,
+ command: FBL.bindFixed(command, this), closemenu: true};
+ ]]></body>
+ </method>
+
+ <method name="updateVisibility">
+ <body><![CDATA[
+ // Hide the mini-menu (displaying panel's option) if following is true:
+ // 1) The panel isn't activable and so there are no enable/disable options.
+ // 2) The panel doesn't provide any additional options.
+ var panel = this.panelBar.selectedPanel;
+ if (!panel)
+ return;
+
+ var panelItems = this.getOptionsMenuItems(panel);
+
+ if (!panel.activable && !(panelItems && panelItems.length))
+ this.setAttribute("collapsed", "true");
+ else
+ this.removeAttribute("collapsed");
+ ]]></body>
+ </method>
+
+ <method name="showMenu">
+ <parameter name="anchor"/>
+ <body><![CDATA[
+ var popupBoxObject = this.popup.popupBoxObject;
+ popupBoxObject.setConsumeRollupEvent(popupBoxObject.ROLLUP_NO_CONSUME);
+ var style = this.ownerDocument.defaultView.getComputedStyle(this.popup, null);
+ var rtlLanguage = style.direction == "rtl";
+ this.popup.showPopup(anchor || this, -1, -1, "popup",
+ rtlLanguage ? "bottomright" : "bottomleft",
+ rtlLanguage ? "topright" : "topleft");
+ ]]></body>
+ </method>
+
+ <method name="getOptionsMenuItems">
+ <parameter name="panel"/>
+ <body><![CDATA[
+ if (!panel)
+ return null;
+
+ // Get menu items from the current panel.
+ var context = Firebug.currentContext;
+ var items = panel.getOptionsMenuItems(context);
+
+ // Distribute to listeners so, other modules/extensions can extend the menu.
+ Firebug.dispatch(Firebug.uiListeners, "onOptionsMenu", [context, panel, items]);
+
+ return items;
+ ]]></body>
+ </method>
+ </implementation>
+
+ <handlers>
+ <handler event="mousedown" button="0"><![CDATA[
+ this.showMenu();
+ // needed for displaying menu on not selected tabs
+ event.stopPropagation();
+ ]]></handler>
+
+ <handler event="popupshowing"><![CDATA[
+ // If the event comes from a sub-menu ignore it (just the root has "menuPopup" class)
+ if (!FBL.hasClass(event.originalTarget, "menuPopup"))
+ return;
+
+ var tab = this.parentNode;
+ if (!tab)
+ return false;
+ this.setAttribute("role", "menu");
+ var items = [];
+ var panelType = tab.panelType;
+ var enabled = true;
+
+ // Create menu items for activation (only for activable panels).
+ if (panelType.prototype.activable)
+ {
+ enabled = panelType.prototype.isEnabled();
+ items.push(this.optionMenu("panel.Enabled", enabled, this.onToggle,
+ "panel.tip.Enabled"));
+ }
+
+ // force creating panel only if it's not disabled
+ var panel = Firebug.currentContext.getPanelByType(panelType, !enabled);
+
+ if (panel)
+ {
+ // Get panel's option items
+ var panelItems = this.getOptionsMenuItems(panel);
+ if (panelItems && panelItems.length > 0)
+ items.push("-");
+ }
+
+ var menu = FBL.extendArray(items, panelItems);
+ for (var i = 0; i < menu.length; ++i)
+ FBL.createMenuItem(this.popup, menu[i]);
+
+ if (!this.popup.childNodes.length)
+ return false;
+
+ return true;
+ ]]></handler>
+
+ <handler event="popuphidden"><![CDATA[
+ // If the event comes from a sub-menu ignore it (just the root has "menuPopup" class)
+ if (!FBL.hasClass(event.originalTarget, "menuPopup"))
+ return;
+
+ this.setAttribute("role", "presentation");
+ FBL.eraseNode(this.popup);
+ ]]></handler>
+ </handlers>
+</binding>
+
+<binding id="panelStatus">
+ <implementation>
+ <method name="addItem">
+ <parameter name="label"/>
+ <parameter name="object"/>
+ <parameter name="rep"/>
+ <parameter name="separator"/>
+ <body><![CDATA[
+ if (this.firstChild)
+ {
+ // extra box needed to fix alignment issue in Vista theme
+ var box = document.createElement("hbox");
+ box.setAttribute("role", "separator");
+ box.setAttribute("align", "center");
+ var sep = document.createElement("label");
+ sep.setAttribute("class", "panelStatusSeparator");
+ sep.setAttribute("value", separator);
+ sep.setAttribute("role", "presentation");
+ box.appendChild(sep);
+ this.appendChild(box);
+ }
+
+ var item = document.createElement("toolbarbutton");
+ item.setAttribute("class", "panelStatusLabel");
+ item.setAttribute("label", label);
+ item.repObject = object;
+ item.rep = rep;
+ this.appendChild(item);
+ return item;
+ ]]></body>
+ </method>
+
+ <method name="clear">
+ <parameter name="tab"/>
+ <body><![CDATA[
+ while (this.lastChild)
+ this.removeChild(this.lastChild);
+ this.selectedItem = null;
+ ]]></body>
+ </method>
+
+ <method name="getItems">
+ <body><![CDATA[
+ var items = [];
+ for (var item = this.lastChild; item; item = item.previousSibling)
+ {
+ if (item.repObject)
+ items.push(item);
+ }
+ return items;
+ ]]></body>
+ </method>
+
+ <method name="getItemByObject">
+ <parameter name="object"/>
+ <body><![CDATA[
+ for (var item = this.lastChild; item; item = item.previousSibling)
+ {
+ if (item.rep)
+ {
+ var itemObject = item.rep.getRealObject(item.repObject,
+ Firebug.currentContext);
+ if (itemObject == object)
+ return item;
+ }
+ }
+ ]]></body>
+ </method>
+
+ <method name="selectObject">
+ <parameter name="object"/>
+ <body><![CDATA[
+ var item = this.getItemByObject(object);
+ this.selectItem(item);
+ ]]></body>
+ </method>
+
+ <method name="selectItem">
+ <parameter name="item"/>
+ <body><![CDATA[
+ if (this.selectedItem)
+ this.selectedItem.removeAttribute("selected");
+
+ this.selectedItem = item;
+
+ if (item)
+ {
+ item.setAttribute("selected", "true");
+
+ var ev = document.createEvent("Events");
+ ev.initEvent("selectItem", true, false);
+ this.dispatchEvent(ev);
+ }
+ ]]></body>
+ </method>
+ </implementation>
+
+ <handlers>
+ <handler event="command" ><![CDATA[
+ var object = Firebug.getRepObject(event.target);
+ if (object)
+ {
+ var rep = Firebug.getRep(object, Firebug.currentContext);
+ object = rep.getRealObject(object, Firebug.currentContext);
+ if (object)
+ {
+ this.selectObject(object);
+ Firebug.chrome.select(object, null, null, true);
+ }
+ }
+ ]]></handler>
+
+ <handler event="mouseover"><![CDATA[
+ var object = Firebug.getRepObject(event.target);
+ if (object)
+ {
+ var rep = Firebug.getRep(object, Firebug.currentContext);
+ object = rep.getRealObject(object, Firebug.currentContext);
+ if (object)
+ Firebug.Inspector.highlightObject(object, Firebug.currentContext);
+ }
+ ]]></handler>
+
+ <handler event="mouseout"><![CDATA[
+ Firebug.Inspector.highlightObject(null);
+ ]]></handler>
+ </handlers>
+</binding>
+
+<!-- This binding represents a location list used in a panel. The list is based
+ on a menu-button (toolbar button with a popup-menu) and its purpose is displaying
+ available files on the current page. For instance, in the Script panel, the location
+ list displays list of all scripts. -->
+<binding id="panelFileList" display="xul:menu"
+ extends="chrome://global/content/bindings/toolbarbutton.xml#menu-button">
+ <content popup="_child">
+ <xul:label class="toolbarbutton-text title" crop="right" flex="1"
+ xbl:inherits="value=title"/>
+ <xul:menupopup anonid="popup"/>
+ <xul:toolbarbutton class="fb-toolbarbutton box-inherit toolbarbutton-menubutton-button"
+ anonid="button" flex="1"
+ xbl:inherits="disabled,crop,image,label,accesskey,command,align,dir,pack,orient" />
+ <xul:dropmarker type="menu-button" class="toolbarbutton-menubutton-dropmarker"
+ xbl:inherits="align,dir,pack,orient,disabled,label"/>
+ </content>
+
+ <resources>
+ <stylesheet src="chrome://global/skin/toolbarbutton.css"/>
+ </resources>
+
+ <implementation>
+ <constructor><![CDATA[
+ this.popup = document.getAnonymousElementByAttribute(this, "anonid", "popup");
+ this._closed = true;
+ ]]></constructor>
+
+ <property name="location">
+ <getter><![CDATA[
+ if (FBTrace.DBG_LOCATIONS)
+ FBTrace.sysout("location getter label:" + this.getAttribute("label") +
+ " location: " + this.getAttribute("location"));
+ return this.getAttribute("location");
+ ]]></getter>
+
+ <setter><![CDATA[
+ var locator = this.getLocator();
+
+ var fileName = "";
+ if (!locator)
+ {
+ fileName = "no locator!";
+ }
+ else if (val)
+ {
+ var description = locator.getObjectDescription(val);
+ fileName = (description.protocol == "file" && description.path == "" &&
+ description.name == "") ? description.domain : description.name;
+ }
+
+ this.repObject = val;
+
+ var button = document.getAnonymousElementByAttribute(this, "anonid", "button");
+
+ var path = description.path != "/" ? description.path : description.domain;
+ if (fileName == path)
+ FBL.setClass(button, "fbInlineItem");
+ else
+ FBL.removeClass(button, "fbInlineItem");
+
+ this.setAttribute("label", fileName != path ?
+ FBL.cropString(fileName, 80) : FBL.$STR("location.inline"));
+ this.setAttribute("location", val);
+ if (FBTrace.DBG_LOCATIONS)
+ {
+ FBTrace.sysout("location setter label:" + this.getAttribute("label") +
+ " fileName: " + fileName + " val: " + val);
+ }
+ ]]></setter>
+ </property>
+
+ <method name="getLocator">
+ <body><![CDATA[
+ // XXXjjb this is complicated because the location list depends upon
+ // the current panel
+ if (!this.locator)
+ {
+ var functionYieldingExpression = this.getAttribute("locationProvider");
+ try {
+ if (functionYieldingExpression && functionYieldingExpression.length > 0)
+ this.locator = eval(functionYieldingExpression);
+ }
+ catch (e)
+ {
+ FBTrace.sysout("getLocator Fails " + e + " in " + window.location);
+ }
+
+ if (!this.locator || typeof(this.locator) != "function")
+ {
+ var whichBinding = this.getAttribute("id");
+ var msg = "ERROR: panelFileList " + whichBinding + " requires attribute " +
+ "\'locationProvider\', an expression yielding a function";
+ FBTrace.sysout(msg, {locator: this.locator,
+ expression: functionYieldingExpression});
+ return null;
+ }
+ }
+
+ // The locator needs
+ // getObjectDescription(object): return {path, name}
+ // getLocationList(), a list of objects that can be fed into getObjectDescription
+ // getObjectLocation(object)
+ return this.locator(this);
+ ]]></body>
+ </method>
+
+ <method name="selectObject">
+ <parameter name="object"/>
+ <body><![CDATA[
+ this.repObject = object;
+
+ var ev = document.createEvent("Events");
+ ev.initEvent("selectObject", true, false);
+ this.dispatchEvent(ev);
+ ]]></body>
+ </method>
+
+ <method name="enterActiveItem">
+ <body><![CDATA[
+ for (var child = this.popup.firstChild; child; child = child.nextSibling)
+ {
+ if (child.getAttribute("_moz-menuactive") == "true")
+ {
+ this.location = child.repObject;
+ this.selectObject(child.repObject);
+ this.popup.hidePopup();
+ }
+ }
+ ]]></body>
+ </method>
+
+ <method name="onKeyPress">
+ <parameter name="event"/>
+ <body><![CDATA[
+ if (event.keyCode == KeyEvent.DOM_VK_RETURN)
+ {
+ this.enterActiveItem();
+ FBL.cancelEvent(event);
+ }
+
+ this.filter.onKeyPress(event);
+ ]]></body>
+ </method>
+
+ <method name="onClick">
+ <parameter name="event"/>
+ <body><![CDATA[
+ //https://developer.mozilla.org/en/XUL/arrowscrollbox
+ var scrollbutton = event.originalTarget;
+ var anonid = scrollbutton.getAttribute("anonid");
+ if (anonid == "scrollbutton-up")
+ scrollbutton.parentNode.scrollByIndex(-15);
+ if (anonid == "scrollbutton-down")
+ scrollbutton.parentNode.scrollByIndex(+15);
+ ]]>
+ </body>
+ </method>
+ </implementation>
+
+ <handlers>
+ <handler event="popupshowing"><![CDATA[
+ if (this.popup.firstChild)
+ return false;
+
+ var locator = this.getLocator();
+ var objects = locator.getLocationList();
+ if (!objects)
+ {
+ this.setAttribute("label", "");
+ this.setAttribute("location", null);
+ return false;
+ }
+
+ if (locator.getLocationContent)
+ {
+ locator.getLocationContent(objects, this.popup);
+ return;
+ }
+
+ this.filter = FBL.createMenuHeader(this.popup,
+ {label: "script.Type any key to filter list"});
+ FBL.setClass(this.filter, "fbURLMenuItem");
+ FBL.setClass(this.filter, "fbLocationListFilter");
+
+ var groupNames = [];
+ var groups = {};
+
+ var currentDescription = null;
+ if (this.repObject)
+ currentDescription = locator.getObjectDescription(this.repObject);
+
+ for (var i = 0; i < objects.length; ++i)
+ {
+ var object = objects[i];
+ var description = locator.getObjectDescription(object);
+ if (!description)
+ FBTrace.sysout("binding.xml popupshowing Fails", object);
+
+ var name = (description.protocol == "file" && description.path == "" &&
+ description.name == "") ? description.domain : description.name;
+ var entry = {object: object, fileName: name};
+
+ if (currentDescription &&
+ currentDescription.protocol == description.protocol &&
+ currentDescription.domain == description.domain &&
+ currentDescription.path == description.path &&
+ currentDescription.name == description.name)
+ {
+ entry.selected = true;
+ }
+
+ var path = description.path != "/" ? description.path : description.domain;
+ if (groups.hasOwnProperty(description.path))
+ {
+ groups[path].push(entry);
+ }
+ else
+ {
+ groups[path] = [entry];
+ groupNames.push(path);
+ }
+ }
+
+ groupNames.sort();
+
+ for (var i = 0; i < groupNames.length; ++i)
+ {
+ var path = groupNames[i];
+ var urls = groups[path];
+ urls.sort(function(a, b) { return a.fileName < b.fileName ? -1 : 1; });
+
+ var menuHeader = FBL.createMenuHeader(this.popup, {
+ label: path || FBL.$STR("location.no_domain"),
+ nol10n: true
+ });
+ FBL.setClass(menuHeader, "fbURLMenuItem");
+ if (path == "")
+ FBL.setClass(menuHeader, "fbNoDomain");
+
+ for (var j = 0; j < urls.length; ++j)
+ {
+ var label = urls[j].fileName != path ?
+ urls[j].fileName : FBL.$STR("location.inline");
+ var menuInfo = {
+ label: FBL.cropString(label, Firebug.Options.get("stringCropLength")),
+ tooltiptext: path + urls[j].fileName,
+ nol10n: true
+ };
+
+ if (urls[j].selected)
+ {
+ menuInfo.type = "checkbox";
+ menuInfo.checked = true;
+ }
+
+ var menuItem = FBL.createMenuItem(this.popup, menuInfo);
+ menuItem.repObject = urls[j].object;
+ FBL.setClass(menuItem, "fbURLMenuItem");
+ if (urls[j].fileName == path)
+ FBL.setClass(menuItem, "fbInlineItem");
+ }
+ }
+
+ // Focus Firebug UI so that keyboard navigation (up/down) in the menu works.
+ Firebug.chrome.focus();
+ ]]></handler>
+
+ <handler event="popupshown"><![CDATA[
+ // Weird, but this gets fired when the user clicks on a menuitem,
+ // which hides the buttons again and resulting in jitters - let's avoid that.
+ if (!this._closed)
+ return;
+
+ this._closed = false;
+
+ this.filter.filterString = "";
+
+ this.onkeypress = FBL.bind(this.onKeyPress, this);
+ window.parent.addEventListener("keypress", this.onkeypress, true);
+
+ this.onclick = FBL.bind(this.onClick, this);
+ this.popup.addEventListener("click", this.onclick, true);
+ ]]></handler>
+
+ <handler event="popuphidden"><![CDATA[
+ window.parent.removeEventListener("keypress", this.onkeypress, true);
+ this.popup.removeEventListener("click", this.onclick, true);
+
+ delete this.onkeypress;
+
+ delete this.filter.filterString;
+
+ FBL.eraseNode(this.popup);
+ this._closed = true;
+ ]]></handler>
+
+ <handler event="command"><![CDATA[
+ var object = event.originalTarget.repObject;
+
+ // Select after a timeout to increase the snappy
+ setTimeout(FBL.bindFixed(function()
+ {
+ this.selectObject(object);
+ }, this));
+ ]]></handler>
+ </handlers>
+</binding>
+
+<!-- Panel file list filter is used in the file list (location list) to filter its content. -->
+<binding id="panelFileListFilter">
+ <implementation>
+ <constructor><![CDATA[
+ this.popup = this.parentNode;
+ ]]></constructor>
+
+ <method name="filterList">
+ <parameter name="substring"/>
+ <body><![CDATA[
+ this.firstMatch = null;
+ var groupMatchCount = 0;
+ substring = substring.toLowerCase();
+ for (var child = this.popup.lastChild; child; child = child.previousSibling)
+ {
+ if (child.localName == "menuitem")
+ {
+ var label = child.getAttribute("tooltiptext").toLowerCase();
+ child._searchMatch = label.indexOf(substring) != -1;
+ if (child._searchMatch)
+ {
+ this.firstMatch = child;
+ ++groupMatchCount;
+ }
+ }
+ else
+ {
+ child._searchMatch = !!groupMatchCount;
+ groupMatchCount = 0;
+ }
+ }
+
+ if (this.firstMatch)
+ {
+ // skip the filterMessageHeader
+ for (var child = this.popup.firstChild.nextSibling; child;
+ child = child.nextSibling)
+ {
+ child.hidden = !child._searchMatch;
+ }
+
+ try
+ {
+ var toolbarButtonBO = this.popup.parentNode.boxObject;
+ if (toolbarButtonBO instanceof Components.interfaces.nsIMenuBoxObject)
+ toolbarButtonBO.activeChild = this.firstMatch;
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("bindings; panelFileListFilter EXCEPTION " + err, err);
+ }
+ }
+
+ return this.firstMatch;
+ ]]></body>
+ </method>
+
+ <method name="onKeyPress">
+ <parameter name="event"/>
+ <body><![CDATA[
+ if (event.keyCode == KeyEvent.DOM_VK_RETURN)
+ {
+ this.filterString = "";
+ }
+ else if (event.keyCode == KeyEvent.DOM_VK_BACK_SPACE)
+ {
+ this.filterString = this.filterString.substr(0, this.filterString.length - 1);
+ this.filterList(this.filterString);
+ }
+ else if (event.charCode)
+ {
+ this.filterString += String.fromCharCode(event.charCode).toLowerCase();
+ this.filterList(this.filterString);
+ }
+ else
+ {
+ return;
+ }
+
+ this.setFilterStringMessage(this.filterString, this.firstMatch);
+ FBL.cancelEvent(event);
+ ]]></body>
+ </method>
+
+ <method name="setFilterStringMessage">
+ <parameter name="filterString"/>
+ <parameter name="matched"/>
+ <body><![CDATA[
+ // The placeholder is displayed in gray while the filter is in black
+ this.setAttribute("keyword", filterString ? true : false);
+
+ // If there is no match the background is red
+ this.setAttribute("match", matched ? true : false);
+
+ // Set the text into the box. If the user entirely removed the text use
+ // the placeholder again.
+ filterString = filterString ? filterString :
+ FBL.$STR("script.Type any key to filter list");
+
+ this.setAttribute("value", filterString);
+ ]]>
+ </body>
+ </method>
+ </implementation>
+</binding>
+
+<!-- Searchbox is located in the main Firebug toolbar and can be used to search
+ for a keyword within the current panel. -->
+<binding id="searchBox">
+ <content sizetopopup="none" align="center">
+ <xul:textbox anonid="searchBox" flex="1" width="0"
+ rows="1" label="search.Firebug_Search" class="fbsearch-textbox"
+ onkeyup="onSearchBoxKeyUp(event, this);" aria-describedby="fbSearchBoxDescription">
+ <xul:box class="fbsearch-icon" onclick="onSearchIconClick(event, this.parentNode)"/>
+ </xul:textbox>
+ <xul:description anonid="fbSearchBoxDescription" collapsed="true"/>
+ <xul:panel id="fbSearchOptionsPanel" norestorefocus="true" noautofocus="true"
+ ignorekeys="true" role="presentation">
+ <xul:description id="fbSearchBoxIsSensitive" value="search.Case_AutoSensitive"/>
+ <xul:description id="fbSearchBoxIsNotSensitive" value="search.Case_Insensitive"/>
+ <xul:vbox class="searchOptionsMenu innerToolbar" role="menu" anonid="fbSearchOptionsMenu">
+ <xul:box anonid="startPanelFocus" class="panelFocusBound" onfocus="startFocusHandler()" />
+ <xul:vbox anonid="searchOptionsList" role="presentation" />
+ <xul:hbox pack="center" align="center" role="presentation">
+ <xul:button anonid="searchPrev" class="fbsearch-options-buttons prev a11yFocus"
+ label="search.Previous" tooltiptext="search.tip.Previous"
+ oncommand="searchPrev()" role="menuitem" />
+ <xul:button anonid="searchNext" class="fbsearch-options-buttons next a11yFocus"
+ label="search.Next" tooltiptext="search.tip.Next"
+ oncommand="searchNext()" role="menuitem" />
+ </xul:hbox>
+ <xul:box anonid="endPanelFocus" class="panelFocusBound" onfocus="endFocusHandler()" />
+ </xul:vbox>
+ </xul:panel>
+ <xul:box anonid="endTextFocus" class="panelFocusBound" onfocus="endTextFocusHandler()" />
+ </content>
+
+ <implementation>
+ <constructor><![CDATA[
+ var searchBox = document.getAnonymousElementByAttribute(this, "anonid", "searchBox");
+ var optionsPopup = document.getElementById("fbSearchOptionsPanel");
+
+ var self = this;
+
+ this.onFocusSearchBox = function(event)
+ {
+ self.focusHandler(event);
+ };
+
+ this.onFocusOptionsPopup = function(event)
+ {
+ self.panelFocusHandler(event);
+ };
+
+ searchBox.addEventListener("focus", this.onFocusSearchBox, true);
+ optionsPopup.addEventListener("focus", this.onFocusOptionsPopup, true);
+
+ // Dynamically set noautohide to avoid mozilla bug 545265.
+ optionsPopup.addEventListener("popupshowing", function runOnce()
+ {
+ optionsPopup.removeEventListener("popupshowing", runOnce, false);
+ optionsPopup.setAttribute("noautohide", true);
+ }, false);
+ ]]></constructor>
+
+ <destructor><![CDATA[
+ var searchBox = document.getAnonymousElementByAttribute(this, "anonid", "searchBox");
+ var optionsPopup = document.getElementById("fbSearchOptionsPanel");
+
+ searchBox.removeEventListener("focus", this.onFocusSearchBox, true);
+ optionsPopup.removeEventListener("focus", this.onFocusOptionsPopup, true);
+ ]]></destructor>
+
+ <property name="value">
+ <xbl:getter><![CDATA[
+ var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
+ "searchBox");
+ return searchBox.value;
+ ]]></xbl:getter>
+
+ <xbl:setter><![CDATA[
+ var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
+ "searchBox");
+ searchBox.setAttribute("active-search", !!val);
+ searchBox.value = val;
+ ]]></xbl:setter>
+ </property>
+
+ <property name="placeholder">
+ <xbl:getter><![CDATA[
+ var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
+ "searchBox");
+ return searchBox.placeholder;
+ ]]></xbl:getter>
+
+ <xbl:setter><![CDATA[
+ var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
+ "searchBox");
+ searchBox.placeholder = val;
+ ]]></xbl:setter>
+ </property>
+
+ <property name="status">
+ <xbl:getter><![CDATA[
+ return Firebug.Search.status;
+ ]]></xbl:getter>
+
+ <xbl:setter><![CDATA[
+ var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
+ "searchBox");
+ Firebug.Search.status = searchBox.value == "" || val || "notfound";
+ searchBox.setAttribute("status", Firebug.Search.status);
+ searchBox.placeholder = "";
+ ]]></xbl:setter>
+ </property>
+
+ <property name="optionsShown">
+ <xbl:getter><![CDATA[
+ var optionsPopup = document.getElementById("fbSearchOptionsPanel");
+ return optionsPopup.state == "open";
+ ]]></xbl:getter>
+ </property>
+
+ <!-- Flag indicating that the child of the panel has or just had focus -->
+ <field name="panelHasFocus" />
+
+ <!-- Timer to close the popup, set on blur. Any kind of focus that directly follows
+ the blur should clear it with clearBlurTimeout(). -->
+ <field name="blurTimeout">null</field>
+
+ <method name="clearBlurTimeout">
+ <body><![CDATA[
+ if (this.blurTimeout !== null) {
+ clearTimeout(this.blurTimeout);
+ this.blurTimeout = null;
+ }
+ ]]></body>
+ </method>
+
+ <method name="updateOptions">
+ <parameter name="menuItems" />
+ <body><![CDATA[
+ var searchOptions = document.getAnonymousElementByAttribute(this, "anonid",
+ "searchOptionsList");
+ FBL.eraseNode(searchOptions);
+
+ if (menuItems)
+ {
+ for (var i=0; i<menuItems.length; i++)
+ {
+ var checkbox = document.createElement("checkbox");
+ checkbox.className = "fbsearch-options-label a11yFocus";
+ checkbox.setAttribute("role", "menuitemcheckbox")
+ FBL.setItemIntoElement(checkbox, menuItems[i]);
+
+ searchOptions.appendChild(checkbox);
+ }
+ }
+ ]]></body>
+ </method>
+
+ <method name="showOptions">
+ <body><![CDATA[
+ var searchBox = document.getAnonymousElementByAttribute(this, "anonid", "searchBox");
+ var searchPrev = document.getAnonymousElementByAttribute(this, "anonid", "searchPrev");
+ var searchNext = document.getAnonymousElementByAttribute(this, "anonid", "searchNext");
+
+ FBL.internationalize(searchBox, "label");
+ FBL.internationalize(searchPrev, "label");
+ FBL.internationalize(searchPrev, "tooltiptext");
+ FBL.internationalize(searchNext, "label");
+ FBL.internationalize(searchNext, "tooltiptext");
+
+ var searchMenu = document.getAnonymousElementByAttribute(this, "anonid",
+ "fbSearchOptionsMenu");
+ var searchDescription = document.getAnonymousElementByAttribute(this, "anonid",
+ "fbSearchBoxDescription");
+
+ if (searchMenu)
+ searchMenu.setAttribute("aria-label", FBL.$STR("a11y.labels.search options"));
+
+ if (searchDescription)
+ {
+ searchDescription.setAttribute("tooltiptext",
+ FBL.$STR("a11y.labels.Press up or down arrow key for search options"));
+ }
+
+ var optionsPopup = document.getElementById("fbSearchOptionsPanel");
+ var position = (Firebug.getPlacement() == "detached" ? "after_end" : "before_end");
+
+ this.focused = true;
+ optionsPopup.setAttribute("position", position);
+ var popupBoxObject = optionsPopup.popupBoxObject;
+ popupBoxObject.setConsumeRollupEvent(popupBoxObject.ROLLUP_NO_CONSUME);
+ optionsPopup.openPopup(this, position, 0, 0, false, false);
+
+ this.clearBlurTimeout();
+ ]]></body>
+ </method>
+
+ <method name="hideOptions">
+ <body><![CDATA[
+ var optionsPopup = document.getElementById("fbSearchOptionsPanel");
+ optionsPopup.hidePopup();
+
+ this.clearBlurTimeout();
+ ]]></body>
+ </method>
+
+ <method name="searchNext">
+ <body><![CDATA[
+ this.status = Firebug.Search.searchNext(Firebug.currentContext);
+ ]]></body>
+ </method>
+
+ <method name="searchPrev">
+ <body><![CDATA[
+ this.status = Firebug.Search.searchPrev(Firebug.currentContext);
+ ]]></body>
+ </method>
+
+ <method name="focus">
+ <body><![CDATA[
+ var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
+ "searchBox");
+ searchBox.focus();
+ ]]></body>
+ </method>
+
+ <method name="select">
+ <body><![CDATA[
+ var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
+ "searchBox");
+ searchBox.select();
+ ]]></body>
+ </method>
+
+ <!-- Focus management handlers. These must be defined as methods and registered
+ using addEventListener or attribute registration as XBL handlers do not
+ appear to allow access to anonymous event targets when capturing. -->
+ <method name="focusHandler">
+ <parameter name="event" />
+ <body><![CDATA[
+ this.panelHasFocus = false;
+ this.clearBlurTimeout();
+
+ if (!FBL.hasClass(event.target, "panelFocusBound") && !this.optionsShown)
+ {
+ this.showOptions();
+ }
+ ]]></body>
+ </method>
+
+ <method name="panelFocusHandler">
+ <parameter name="event" />
+ <body><![CDATA[
+ this.clearBlurTimeout();
+
+ if (!FBL.hasClass(event.target, "panelFocusBound"))
+ this.panelHasFocus = true;
+ ]]></body>
+ </method>
+
+ <method name="endTextFocusHandler">
+ <body><![CDATA[
+ this.clearBlurTimeout();
+
+ if (this.panelHasFocus)
+ {
+ // The user has just tabbed out of the panel
+ document.commandDispatcher.advanceFocus();
+ this.panelHasFocus = false;
+ }
+ else if (this.optionsShown)
+ {
+ // The user has just tabbed out of the search box (and into the panel)
+ var optionsPopup = document.getElementById("fbSearchOptionsPanel");
+ document.commandDispatcher.advanceFocusIntoSubtree(optionsPopup);
+ }
+ else
+ {
+ // The user has just reverse tabbed from the next tab target
+ this.showOptions();
+
+ var searchNext = document.getAnonymousElementByAttribute(this, "anonid",
+ "searchNext");
+ setTimeout(function() { searchNext.focus(); }, 0);
+ this.panelHasFocus = true;
+ }
+ ]]></body>
+ </method>
+
+ <method name="startFocusHandler">
+ <body><![CDATA[
+ if (this.panelHasFocus)
+ {
+ // The user has shift-tabbed out of the panel
+ var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
+ "searchBox");
+ searchBox.focus();
+ this.panelHasFocus = false;
+ }
+ else
+ {
+ // The user has just tabbed into the panel
+ document.commandDispatcher.advanceFocus();
+ this.panelHasFocus = true;
+ }
+ ]]></body>
+ </method>
+
+ <method name="endFocusHandler">
+ <body><![CDATA[
+ // The user has just tabbed out of the panel
+ this.hideOptions();
+
+ var endTextFocus = document.getAnonymousElementByAttribute(this, "anonid",
+ "endTextFocus");
+ endTextFocus.focus();
+ ]]></body>
+ </method>
+
+ <method name="onSearchBoxKeyUp">
+ <parameter name="event" />
+ <parameter name="textbox" />
+ <body><![CDATA[
+ textbox.setAttribute("active-search", !!textbox.value);
+
+ if (!Firebug.A11yModel || !Firebug.A11yModel.isEnabled())
+ return;
+ if (event.keyCode == KeyEvent.DOM_VK_UP || event.keyCode == KeyEvent.DOM_VK_DOWN)
+ {
+ var goingDown = (event.keyCode == KeyEvent.DOM_VK_DOWN);
+ var optionsPopup = document.getElementById("fbSearchOptionsPanel");
+ var items = optionsPopup.getElementsByClassName("a11yFocus");
+ if (!optionsPopup || !items)
+ return;
+ if (optionsPopup.state == "closed")
+ this.showOptions();
+
+ setTimeout(FBL.bindFixed(function()
+ {
+ items[goingDown ? 0 : items.length -1].focus();
+ }));
+ }
+ else if (event.keyCode == KeyEvent.DOM_VK_ESCAPE)
+ {
+ this.hideOptions();
+ }
+ ]]></body>
+ </method>
+
+ <method name="onSearchIconClick">
+ <parameter name="event" />
+ <parameter name="textbox" />
+ <body><![CDATA[
+ if (textbox.value)
+ {
+ this.value = "";
+ Firebug.Search.update(Firebug.currentContext);
+ }
+ else
+ {
+ this.optionsShown ? this.hideOptions() : this.showOptions();
+ }
+
+ if (!this.focused)
+ this.focus();
+ ]]></body>
+ </method>
+ </implementation>
+
+ <handlers>
+ <handler event="keypress"><![CDATA[
+ if (event.keyCode == KeyEvent.DOM_VK_UP)
+ {
+ if (!FBL.isControl(event))
+ this.value = Firebug.Search.cycleHistory(1);
+ else
+ this.searchPrev();
+ }
+ else if (event.keyCode == KeyEvent.DOM_VK_DOWN)
+ {
+ if (!FBL.isControl(event))
+ this.value = Firebug.Search.cycleHistory(-1);
+ else
+ this.searchNext();
+ }
+ else if (event.keyCode == KeyEvent.DOM_VK_ESCAPE)
+ {
+ var optionsPopup = document.getElementById("fbSearchOptionsPanel");
+ var searchBox = document.getAnonymousElementByAttribute(this, "anonid",
+ "searchBox");
+ if (!optionsPopup || !searchBox)
+ return;
+ searchBox.focus();
+ if (optionsPopup.state == "open")
+ {
+ event.stopPropagation(); // prevent cmd popup toggle
+ optionsPopup.hidePopup();
+ }
+ else
+ {
+ return;
+ }
+ }
+ else if (event.keyCode == KeyEvent.DOM_VK_RETURN)
+ {
+ if (FBL.isShift(event))
+ this.searchPrev();
+ else if (FBL.isControl(event))
+ FBL.dispatch([Firebug.A11yModel], "moveToSearchMatch");
+ else
+ this.searchNext();
+ }
+ else
+ {
+ return;
+ }
+
+ FBL.cancelEvent(event);
+ ]]></handler>
+
+ <handler event="input"><![CDATA[
+ Firebug.Search.update(Firebug.currentContext);
+ ]]></handler>
+
+ <handler event="popupshowing"><![CDATA[
+ this.panelHasFocus = false;
+ ]]></handler>
+
+ <handler event="blur" phase="capturing"><![CDATA[
+ this.clearBlurTimeout();
+ this.blurTimeout = setTimeout(function()
+ {
+ hideOptions();
+ status = "noSearch";
+ focused = false;
+ }, 0);
+ ]]></handler>
+ </handlers>
+</binding>
+
+<binding id="commandEditor" extends="chrome://global/content/bindings/textbox.xml#textarea">
+ <handlers>
+ <handler event="input"><![CDATA[
+ Firebug.CommandLine.update(Firebug.currentContext);
+ ]]></handler>
+
+ <handler event="keypress" keycode="VK_TAB"><![CDATA[
+ var input = document.getAnonymousElementByAttribute(this, "anonid", "input");
+ FBL.insertTextIntoElement(input, Firebug.Editor.tabCharacter);
+ event.preventDefault();
+ ]]></handler>
+
+ <handler event="keypress" keycode="VK_RETURN" modifiers="meta" preventdefault="true"><![CDATA[
+ Firebug.CommandLine.enter(Firebug.currentContext);
+ ]]></handler>
+
+ <handler event="keypress" keycode="VK_RETURN" modifiers="control" preventdefault="true"><![CDATA[
+ Firebug.CommandLine.enter(Firebug.currentContext);
+ ]]></handler>
+
+ <handler event="keypress" keycode="VK_ESCAPE" preventdefault="true"><![CDATA[
+ Firebug.CommandLine.cancel(Firebug.currentContext);
+ ]]></handler>
+ </handlers>
+</binding>
+
+<binding id="splitmenu" extends="chrome://global/content/bindings/menu.xml#menuitem-base">
+ <content align="stretch">
+ <xul:menuitem anonid="item" flex="1"
+ class="menuitem-tooltip split-menuitem-item"
+ xbl:inherits="label,key,image,value,checked" allowevents="true"/>
+ <xul:hbox class="split-menu-right-image" xbl:inherits="_moz-menuactive" >
+ <xul:hbox align="center" class="menu-right" xbl:inherits="_moz-menuactive,disabled">
+ <xul:image/>
+ </xul:hbox>
+ </xul:hbox>
+ <children includes="menupopup"/>
+ </content>
+
+ <implementation implements="nsIDOMXULSelectControlItemElement, nsIDOMXULContainerItemElement, nsIAccessibleProvider">
+ <constructor><![CDATA[
+ if (this.getAttribute("iconic") == "true")
+ {
+ this.item.classList.remove("menuitem-tooltip");
+ this.item.classList.add("menuitem-iconic-tooltip");
+ this.item.classList.add("menuitem-iconic");
+ }
+ // workaround for 3.6 bug
+ this.item.classList.add("split-menuitem-item");
+ ]]></constructor>
+
+ <field name="item" readonly="true">
+ document.getAnonymousElementByAttribute(this, "anonid", "item");
+ </field>
+ </implementation>
+</binding>
+</bindings>
diff --git a/content/firebug/firefox/browserCommands.js b/content/firebug/firefox/browserCommands.js
index dbb1f1d..6c64192 100644
--- a/content/firebug/firefox/browserCommands.js
+++ b/content/firebug/firefox/browserCommands.js
@@ -1,107 +1,107 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/options",
- "firebug/lib/locale",
- "firebug/firefox/browserOverlayLib",
-],
-function(FBTrace, Options, Locale, BrowserOverlayLib) {
-with (BrowserOverlayLib) {
-
-// ********************************************************************************************* //
-// Constants
-
-var shortcuts = [
- "toggleFirebug",
- "toggleInspecting",
- "focusCommandLine",
- "detachFirebug",
- "closeFirebug",
- "toggleBreakOn"
-];
-
-/* Used by the browser menu, but should be really global shortcuts?
-key_increaseTextSize
-key_decreaseTextSize
-key_normalTextSize
-key_help
-key_toggleProfiling
-key_focusFirebugSearch
-key_customizeFBKeys
-*/
-
-// ********************************************************************************************* //
-// BrowserCommands Implementation
-
-var BrowserCommands =
-{
- overlay: function(doc)
- {
- this.overlayCommands(doc);
- this.overlayShortcuts(doc);
- },
-
- overlayCommands: function(doc)
- {
- $command(doc, "cmd_firebug_closeFirebug", "Firebug.closeFirebug(true);");
- $command(doc, "cmd_firebug_toggleInspecting", "if (!Firebug.currentContext) Firebug.toggleBar(true); Firebug.Inspector.toggleInspecting(Firebug.currentContext);");
- $command(doc, "cmd_firebug_focusCommandLine", "if (!Firebug.currentContext) Firebug.toggleBar(true); Firebug.CommandLine.focus(Firebug.currentContext);");
- $command(doc, "cmd_firebug_toggleFirebug", "Firebug.toggleBar();");
- $command(doc, "cmd_firebug_detachFirebug", "Firebug.toggleDetachBar(false, true);");
- $command(doc, "cmd_firebug_inspect", "Firebug.Inspector.inspectFromContextMenu(arg);", "document.popupNode");
- $command(doc, "cmd_firebug_toggleBreakOn", "if (Firebug.currentContext) Firebug.chrome.breakOnNext(Firebug.currentContext, event);");
- $command(doc, "cmd_firebug_toggleDetachFirebug", "Firebug.toggleDetachBar(false, true);");
- $command(doc, "cmd_firebug_increaseTextSize", "Firebug.Options.changeTextSize(1);");
- $command(doc, "cmd_firebug_decreaseTextSize", "Firebug.Options.changeTextSize(-1);");
- $command(doc, "cmd_firebug_normalTextSize", "Firebug.Options.setTextSize(0);");
- $command(doc, "cmd_firebug_focusFirebugSearch", "if (Firebug.currentContext) Firebug.Search.onSearchCommand(document);");
- $command(doc, "cmd_firebug_customizeFBKeys", "Firebug.ShortcutsModel.customizeShortcuts();");
- $command(doc, "cmd_firebug_enablePanels", "Firebug.PanelActivation.enableAllPanels();");
- $command(doc, "cmd_firebug_disablePanels", "Firebug.PanelActivation.disableAllPanels();");
- $command(doc, "cmd_firebug_clearActivationList", "Firebug.PanelActivation.clearAnnotations();");
- $command(doc, "cmd_firebug_clearConsole", "Firebug.Console.clear(Firebug.currentContext);");
- $command(doc, "cmd_firebug_allOn", "Firebug.PanelActivation.toggleAll('on');");
- $command(doc, "cmd_firebug_toggleOrient", "Firebug.chrome.toggleOrient();");
- $command(doc, "cmd_firebug_resetAllOptions", "Firebug.resetAllOptions(true);");
- $command(doc, "cmd_firebug_toggleProfiling", ""); //todo
- $command(doc, "cmd_firebug_openInEditor", "Firebug.ExternalEditors.onContextMenuCommand(event)");
- },
-
- overlayShortcuts: function(doc)
- {
- var keyset = $(doc, "mainKeyset");
-
- for (var i=0; i<shortcuts.length ; i++)
- {
- var id = shortcuts[i];
- var shortcut = Options.get("key.shortcut." + id);
- var tokens = shortcut.split(" ");
- var key = tokens.pop();
-
- var keyProps = {
- id: "key_firebug_" + id,
- modifiers: tokens.join(","),
- command: "cmd_firebug_" + id,
- position: 1
- };
-
- if (key.length <= 1)
- keyProps.key = key;
- else if (doc.defaultView.KeyEvent["DOM_"+key])
- keyProps.keycode = key;
-
- $el(doc, "key", keyProps, keyset);
- }
-
- keyset.parentNode.insertBefore(keyset, keyset.nextSibling);
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return BrowserCommands;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/options",
+ "firebug/lib/locale",
+ "firebug/firefox/browserOverlayLib",
+],
+function(FBTrace, Options, Locale, BrowserOverlayLib) {
+with (BrowserOverlayLib) {
+
+// ********************************************************************************************* //
+// Constants
+
+var shortcuts = [
+ "toggleFirebug",
+ "toggleInspecting",
+ "focusCommandLine",
+ "detachFirebug",
+ "closeFirebug",
+ "toggleBreakOn"
+];
+
+/* Used by the browser menu, but should be really global shortcuts?
+key_increaseTextSize
+key_decreaseTextSize
+key_normalTextSize
+key_help
+key_toggleProfiling
+key_focusFirebugSearch
+key_customizeFBKeys
+*/
+
+// ********************************************************************************************* //
+// BrowserCommands Implementation
+
+var BrowserCommands =
+{
+ overlay: function(doc)
+ {
+ this.overlayCommands(doc);
+ this.overlayShortcuts(doc);
+ },
+
+ overlayCommands: function(doc)
+ {
+ $command(doc, "cmd_firebug_closeFirebug", "Firebug.closeFirebug(true);");
+ $command(doc, "cmd_firebug_toggleInspecting", "if (!Firebug.currentContext) Firebug.toggleBar(true); Firebug.Inspector.toggleInspecting(Firebug.currentContext);");
+ $command(doc, "cmd_firebug_focusCommandLine", "if (!Firebug.currentContext) Firebug.toggleBar(true); Firebug.CommandLine.focus(Firebug.currentContext);");
+ $command(doc, "cmd_firebug_toggleFirebug", "Firebug.toggleBar();");
+ $command(doc, "cmd_firebug_detachFirebug", "Firebug.toggleDetachBar(false, true);");
+ $command(doc, "cmd_firebug_inspect", "Firebug.Inspector.inspectFromContextMenu(arg);", "document.popupNode");
+ $command(doc, "cmd_firebug_toggleBreakOn", "if (Firebug.currentContext) Firebug.chrome.breakOnNext(Firebug.currentContext, event);");
+ $command(doc, "cmd_firebug_toggleDetachFirebug", "Firebug.toggleDetachBar(false, true);");
+ $command(doc, "cmd_firebug_increaseTextSize", "Firebug.Options.changeTextSize(1);");
+ $command(doc, "cmd_firebug_decreaseTextSize", "Firebug.Options.changeTextSize(-1);");
+ $command(doc, "cmd_firebug_normalTextSize", "Firebug.Options.setTextSize(0);");
+ $command(doc, "cmd_firebug_focusFirebugSearch", "if (Firebug.currentContext) Firebug.Search.onSearchCommand(document);");
+ $command(doc, "cmd_firebug_customizeFBKeys", "Firebug.ShortcutsModel.customizeShortcuts();");
+ $command(doc, "cmd_firebug_enablePanels", "Firebug.PanelActivation.enableAllPanels();");
+ $command(doc, "cmd_firebug_disablePanels", "Firebug.PanelActivation.disableAllPanels();");
+ $command(doc, "cmd_firebug_clearActivationList", "Firebug.PanelActivation.clearAnnotations();");
+ $command(doc, "cmd_firebug_clearConsole", "Firebug.Console.clear(Firebug.currentContext);");
+ $command(doc, "cmd_firebug_allOn", "Firebug.PanelActivation.toggleAll('on');");
+ $command(doc, "cmd_firebug_toggleOrient", "Firebug.chrome.toggleOrient();");
+ $command(doc, "cmd_firebug_resetAllOptions", "Firebug.resetAllOptions(true);");
+ $command(doc, "cmd_firebug_toggleProfiling", ""); //todo
+ $command(doc, "cmd_firebug_openInEditor", "Firebug.ExternalEditors.onContextMenuCommand(event)");
+ },
+
+ overlayShortcuts: function(doc)
+ {
+ var keyset = $(doc, "mainKeyset");
+
+ for (var i=0; i<shortcuts.length ; i++)
+ {
+ var id = shortcuts[i];
+ var shortcut = Options.get("key.shortcut." + id);
+ var tokens = shortcut.split(" ");
+ var key = tokens.pop();
+
+ var keyProps = {
+ id: "key_firebug_" + id,
+ modifiers: tokens.join(","),
+ command: "cmd_firebug_" + id,
+ position: 1
+ };
+
+ if (key.length <= 1)
+ keyProps.key = key;
+ else if (doc.defaultView.KeyEvent["DOM_"+key])
+ keyProps.keycode = key;
+
+ $el(doc, "key", keyProps, keyset);
+ }
+
+ keyset.parentNode.insertBefore(keyset, keyset.nextSibling);
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return BrowserCommands;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/firefox/browserMenu.js b/content/firebug/firefox/browserMenu.js
index e696f58..81c75e6 100644
--- a/content/firebug/firefox/browserMenu.js
+++ b/content/firebug/firefox/browserMenu.js
@@ -1,532 +1,532 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/options",
- "firebug/lib/locale",
- "firebug/firefox/browserOverlayLib",
-],
-function(FBTrace, Options, Locale, BrowserOverlayLib) {
-with (BrowserOverlayLib) {
-
-// ********************************************************************************************* //
-// GlobalCommands Implementation
-
-var BrowserMenu =
-{
- overlay: function(doc)
- {
- this.overlayStartButtonMenu(doc);
- this.overlayFirebugMenu(doc);
- this.overlayFirefoxMenu(doc);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Firebug Start Button Popup Menu
-
- overlayStartButtonMenu: function(doc)
- {
- $menupopupOverlay(doc, $(doc, "mainPopupSet"), [
- $menupopup(doc,
- {
- id: "fbStatusContextMenu",
- onpopupshowing: "Firebug.browserOverlay.onOptionsShowing(this)"
- },
- [
- $menu(doc,
- {
- label: "firebug.uiLocation",
- tooltiptext: "firebug.menu.tip.UI_Location",
- "class": "fbInternational"
- },
- [
- $menupopup(doc, {
- onpopupshowing: "Firebug.browserOverlay.onPositionPopupShowing(this)"
- })
- ]),
- $menuseparator(doc),
- $menuitem(doc, {
- id: "menu_firebug_ClearConsole",
- label: "firebug.ClearConsole",
- tooltiptext: "firebug.ClearTooltip",
- command: "cmd_firebug_clearConsole",
- key: "key_firebug_clearConsole"
- }),
- $menuitem(doc, {
- id: "menu_firebug_showErrorCount",
- type: "checkbox",
- label: "firebug.Show_Error_Count",
- tooltiptext: "firebug.menu.tip.Show_Error_Count",
- oncommand: "Firebug.browserOverlay.onToggleOption(this)",
- option: "showErrorCount"
- }),
- $menuseparator(doc),
- $menuitem(doc, {
- id: "menu_firebug_enablePanels",
- label: "firebug.menu.Enable_All_Panels",
- tooltiptext: "firebug.menu.tip.Enable_All_Panels",
- command: "cmd_firebug_enablePanels"
- }),
- $menuitem(doc, {
- id: "menu_firebug_disablePanels",
- label: "firebug.menu.Disable_All_Panels",
- tooltiptext: "firebug.menu.tip.Disable_All_Panels",
- command: "cmd_firebug_disablePanels"
- }),
- $menuseparator(doc),
- $menuitem(doc, {
- id: "menu_firebug_AllOn",
- type: "checkbox",
- label: "On_for_all_web_pages",
- tooltiptext: "firebug.menu.tip.On_for_all_Web_Sites",
- command: "cmd_firebug_allOn",
- option: "allPagesActivation"
- }),
- $menuitem(doc, {
- id: "menu_firebug_clearActivationList",
- label: "firebug.menu.Clear_Activation_List",
- tooltiptext: "firebug.menu.tip.Clear_Activation_List",
- command: "cmd_firebug_clearActivationList"
- })
- ])
- ]);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Firebug Global Menu
-
- /**
- * There are more instances of Firebug Menu (e.g. one in Firefox -> Tools -> Web Developer
- * and one in Firefox 4 (top-left orange button menu) -> Web Developer
- *
- * If extensions want to override the menu thay need to iterate all existing instance
- * using document.querySelectorAll(".fbFirebugMenuPopup") and append new menu items to all
- * of them. Iteration must be done in the global space (browser.xul)
- *
- * The same menu is also used for Firebug Icon Menu (Firebug's toolbar). This menu is cloned
- * and initialized as soon as Firebug UI is actually loaded. Since it's cloned from the original
- * (global scope) extensions don't have to extend it (possible new menu items are already there).
- */
- overlayFirebugMenu: function(doc)
- {
- this.firebugMenuContent =
- [
- // Open/close Firebug
- $menuitem(doc,
- {
- id: "menu_firebug_toggleFirebug",
- label: "firebug.ShowFirebug",
- tooltiptext: "firebug.menu.tip.Open_Firebug",
- command: "cmd_firebug_toggleFirebug",
- key: "key_firebug_toggleFirebug",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_closeFirebug",
- label: "firebug.Deactivate_Firebug",
- tooltiptext: "firebug.tip.Deactivate_Firebug",
- command: "cmd_firebug_closeFirebug",
- key: "key_firebug_closeFirebug",
- "class": "fbInternational"
- }),
-
- // Firebug UI position
- $menu(doc,
- {
- label: "firebug.uiLocation",
- tooltiptext: "firebug.menu.tip.UI_Location",
- "class": "fbInternational"
- },
- [
- $menupopup(doc, {
- onpopupshowing: "Firebug.browserOverlay.onPositionPopupShowing(this)"
- })
- ]),
-
- $menuseparator(doc),
-
- // External Editors
- $menu(doc,
- {
- id: "FirebugMenu_OpenWith",
- label:"firebug.OpenWith",
- tooltiptext:"firebug.menu.tip.Open_With",
- "class": "fbInternational",
- insertafter: "menu_firebug_openActionsSeparator",
- openFromContext: "true",
- command: "cmd_firebug_openInEditor"
- },
- [
- $menupopup(doc,{id:"fbFirebugMenu_OpenWith",
- onpopupshowing: "return Firebug.browserOverlay.onEditorsShowing(this);"})
- ]),
-
- // Text Size
- $menu(doc,
- {
- id: "FirebugMenu_TextSize",
- label: "firebug.TextSize",
- tooltiptext: "firebug.menu.tip.Text_Size",
- "class": "fbInternational"
- },
- [
- $menupopup(doc,{},
- [
- $menuitem(doc,
- {
- id: "menu_firebug_increaseTextSize",
- label: "firebug.IncreaseTextSize",
- tooltiptext: "firebug.menu.tip.Increase_Text_Size",
- command: "cmd_firebug_increaseTextSize",
- key: "key_firebug_increaseTextSize",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_decreaseTextSize",
- label: "firebug.DecreaseTextSize",
- tooltiptext: "firebug.menu.tip.Decrease_Text_Size",
- command: "cmd_firebug_decreaseTextSize",
- key: "key_firebug_decreaseTextSize",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_normalTextSize",
- label: "firebug.NormalTextSize",
- tooltiptext: "firebug.menu.tip.Normal_Text_Size",
- command: "cmd_firebug_normalTextSize",
- key: "key_firebug_normalTextSize",
- "class": "fbInternational"
- }),
- ])
- ]),
-
- // Options
- $menu(doc,
- {
- id: "FirebugMenu_Options",
- label: "firebug.Options",
- tooltiptext: "firebug.menu.tip.Options",
- "class": "fbInternational"
- },
- [
- $menupopup(doc,
- {
- id: "FirebugMenu_OptionsPopup",
- onpopupshowing: "return Firebug.browserOverlay.onOptionsShowing(this);"
- },
- [
- $menuitem(doc,
- {
- id: "menu_firebug_toggleShowErrorCount",
- type: "checkbox",
- label: "firebug.Show_Error_Count",
- tooltiptext: "firebug.menu.tip.Show_Error_Count",
- oncommand: "Firebug.browserOverlay.onToggleOption(this)",
- option: "showErrorCount",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_showTooltips",
- type: "checkbox",
- label: "firebug.menu.Show_Info_Tips",
- tooltiptext: "firebug.menu.tip.Show_Info_Tips",
- oncommand: "Firebug.browserOverlay.onToggleOption(this)",
- option: "showInfoTips",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_shadeBoxModel",
- type: "checkbox",
- label: "ShadeBoxModel",
- tooltiptext: "inspect.option.tip.Shade_Box_Model",
- oncommand: "Firebug.browserOverlay.onToggleOption(this)",
- option: "shadeBoxModel",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_showQuickInfoBox",
- type: "checkbox",
- label: "ShowQuickInfoBox",
- tooltiptext: "inspect.option.tip.Show_Quick_Info_Box",
- oncommand: "Firebug.browserOverlay.onToggleOption(this)",
- option: "showQuickInfoBox",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_enableA11y",
- type: "checkbox",
- label: "firebug.menu.Enable_Accessibility_Enhancements",
- tooltiptext: "firebug.menu.tip.Enable_Accessibility_Enhancements",
- oncommand: "Firebug.browserOverlay.onToggleOption(this)",
- option: "a11y.enable",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_activateSameOrigin",
- type: "checkbox",
- label: "firebug.menu.Activate_Same_Origin_URLs2",
- tooltiptext: "firebug.menu.tip.Activate_Same_Origin_URLs",
- oncommand: "Firebug.browserOverlay.onToggleOption(this)",
- option: "activateSameOrigin",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_toggleOrient",
- type: "checkbox",
- label: "firebug.menu.Vertical_Panels",
- tooltiptext: "firebug.menu.tip.Vertical_Panels",
- command: "cmd_firebug_toggleOrient",
- option: "viewPanelOrient",
- "class": "fbInternational"
- }),
- $menuseparator(doc, {id: "menu_firebug_optionsSeparator"}),
- $menuitem(doc,
- {
- id: "menu_firebug_resetAllOptions",
- label: "firebug.menu.Reset_All_Firebug_Options",
- tooltiptext: "firebug.menu.tip.Reset_All_Firebug_Options",
- command: "cmd_firebug_resetAllOptions",
- "class": "fbInternational"
- }),
- ])
- ]),
-
- $menuseparator(doc,{id: "FirebugBetweenOptionsAndSites", collapsed: "true"}),
-
- // Sites
- $menu(doc,
- {
- id: "FirebugMenu_Sites",
- label: "firebug.menu.Firebug_Online",
- tooltiptext: "firebug.menu.tip.Firebug_Online",
- "class": "fbInternational"
- },
- [
- $menupopup(doc,{},
- [
- $menuitem(doc,
- {
- id: "menu_firebug_firebugUrlWebsite",
- label: "firebug.Website",
- tooltiptext: "firebug.menu.tip.Website",
- oncommand: "Firebug.chrome.visitWebsite('main')",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_firebugUrlExtensions",
- label: "firebug.menu.Extensions",
- tooltiptext: "firebug.menu.tip.Extensions",
- oncommand: "Firebug.chrome.visitWebsite('extensions')",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_firebugHelp",
- label: "firebug.help",
- tooltiptext: "firebug.menu.tip.help",
- command: "cmd_firebug_openHelp",
- key: "key_firebug_help",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_firebugDoc",
- label: "firebug.Documentation",
- tooltiptext: "firebug.menu.tip.Documentation",
- oncommand: "Firebug.chrome.visitWebsite('docs')",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_firebugKeyboard",
- label: "firebug.KeyShortcuts",
- tooltiptext: "firebug.menu.tip.Key_Shortcuts",
- oncommand: "Firebug.chrome.visitWebsite('keyboard')",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_firebugForums",
- label: "firebug.Forums",
- tooltiptext: "firebug.menu.tip.Forums",
- oncommand: "Firebug.chrome.visitWebsite('discuss')",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_firebugIssues",
- label: "firebug.Issues",
- tooltiptext: "firebug.menu.tip.Issues",
- oncommand: "Firebug.chrome.visitWebsite('issues')",
- "class": "fbInternational"
- }),
- $menuitem(doc,
- {
- id: "menu_firebug_firebugDonate",
- label: "firebug.Donate",
- tooltiptext: "firebug.menu.tip.Donate",
- oncommand: "Firebug.chrome.visitWebsite('donate')",
- "class": "fbInternational"
- }),
- ])
- ]),
-
- $menuseparator(doc, {id: "menu_firebug_miscActionsSeparator", collapsed: "true"}),
-
- $menuseparator(doc, {id: "menu_firebug_toolsSeparator", collapsed: "true"}),
-
- $menuitem(doc,
- {
- id: "menu_firebug_customizeShortcuts",
- label: "firebug.menu.Customize_shortcuts",
- tooltiptext: "firebug.menu.tip.Customize_Shortcuts",
- command: "cmd_firebug_customizeFBKeys",
- key: "key_firebug_customizeFBKeys",
- "class": "fbInternational"
- }),
-
- $menuseparator(doc, {id: "menu_firebug_aboutSeparator"}),
-
- $menuitem(doc, {
- id: "menu_firebug_about",
- label: "firebug.About",
- tooltiptext: "firebug.menu.tip.About",
- oncommand: "Firebug.browserOverlay.openAboutDialog()",
- "class": "firebugAbout fbInternational"
- }),
- ];
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Global Menu Overlays
-
- overlayFirefoxMenu: function(doc)
- {
- // Firefox page context menu
- $menupopupOverlay(doc, $(doc, "contentAreaContextMenu"), [
- $menuseparator(doc),
- $menuitem(doc,{
- id: "menu_firebug_firebugInspect",
- label: "firebug.InspectElementWithFirebug",
- command: "cmd_firebug_inspect",
- "class": "menuitem-iconic fbInternational"
- })
- ]);
-
- // Firefox view menu
- $menupopupOverlay(doc, $(doc, "menu_viewPopup"),
- [
- $menuitem(doc, {
- id: "menu_firebug_viewToggleFirebug",
- insertbefore: "toggle_taskbar",
- label: "firebug.Firebug",
- type: "checkbox",
- key: "key_firebug_toggleFirebug",
- command: "cmd_firebug_toggleFirebug",
- "class": "fbInternational"
- })
- ],
- {
- onpopupshowing: "return Firebug.browserOverlay.onViewMenuShowing();"
- }
- );
-
- // SeaMonkey view menu
- $menupopupOverlay(doc, $(doc, "menu_View_Popup"),
- [
- $menuitem(doc, {
- id: "menu_firebug_viewToggleFirebug",
- insertafter: "menuitem_fullScreen",
- label: "firebug.Firebug",
- type: "checkbox",
- key: "key_firebug_toggleFirebug",
- command: "cmd_firebug_toggleFirebug",
- "class": "menuitem-iconic fbInternational"
- })
- ],
- {
- onpopupshowing: "return Firebug.browserOverlay.onViewMenuShowing();"
- }
- );
-
- // Firefox Tools -> Web Developer Menu
- $menupopupOverlay(doc, $(doc, "menuWebDeveloperPopup"), [
- $menu(doc, {
- id: "menu_webDeveloper_firebug",
- position: 1,
- label: "firebug.Firebug",
- "class": "menu-iconic fbInternational"
- }, [
- $menupopup(doc, {
- id: "menu_firebug_firebugMenuPopup",
- "class": "fbFirebugMenuPopup",
- onpopupshowing: "return Firebug.browserOverlay.onMenuShowing(this, event);",
- onpopuphiding: "return Firebug.browserOverlay.onMenuHiding(this, event);"
- })
- ]),
- $menuseparator(doc, {
- insertafter: "menu_webDeveloper_firebug"
- })
- ]);
-
- // Firefox Button -> Web Developer Menu
- $menupopupOverlay(doc, $(doc, "appmenu_webDeveloper_popup"), [
- $splitmenu(doc, {
- id: "appmenu_firebug",
- position: 1,
- command: "cmd_firebug_toggleFirebug",
- key: "key_firebug_toggleFirebug",
- label: "firebug.Firebug",
- iconic: "true",
- "class": "fbInternational"
- }, [
- $menupopup(doc, {
- id: "appmenu_firebugMenuPopup",
- "class": "fbFirebugMenuPopup",
- onpopupshowing: "return Firebug.browserOverlay.onMenuShowing(this, event);",
- onpopuphiding: "return Firebug.browserOverlay.onMenuHiding(this, event);"
- })
- ]),
- $menuseparator(doc, {
- insertafter: "appmenu_firebug"
- })
- ]);
-
- // Sea Monkey Tools Menu
- $menupopupOverlay(doc, $(doc, "toolsPopup"), [
- $menu(doc, {
- id: "menu_firebug",
- insertbefore: "appmenu_webConsole",
- command: "cmd_firebug_toggleFirebug",
- key: "key_firebug_toggleFirebug",
- label: "firebug.Firebug",
- "class": "menuitem-iconic fbInternational"
- }, [
- $menupopup(doc, {
- id: "toolsmenu_firebugMenuPopup",
- "class": "fbFirebugMenuPopup",
- onpopupshowing: "return Firebug.browserOverlay.onMenuShowing(this, event);",
- onpopuphiding: "return Firebug.browserOverlay.onMenuHiding(this, event);"
- })
- ])
- ]);
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return BrowserMenu;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/options",
+ "firebug/lib/locale",
+ "firebug/firefox/browserOverlayLib",
+],
+function(FBTrace, Options, Locale, BrowserOverlayLib) {
+with (BrowserOverlayLib) {
+
+// ********************************************************************************************* //
+// GlobalCommands Implementation
+
+var BrowserMenu =
+{
+ overlay: function(doc)
+ {
+ this.overlayStartButtonMenu(doc);
+ this.overlayFirebugMenu(doc);
+ this.overlayFirefoxMenu(doc);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Firebug Start Button Popup Menu
+
+ overlayStartButtonMenu: function(doc)
+ {
+ $menupopupOverlay(doc, $(doc, "mainPopupSet"), [
+ $menupopup(doc,
+ {
+ id: "fbStatusContextMenu",
+ onpopupshowing: "Firebug.browserOverlay.onOptionsShowing(this)"
+ },
+ [
+ $menu(doc,
+ {
+ label: "firebug.uiLocation",
+ tooltiptext: "firebug.menu.tip.UI_Location",
+ "class": "fbInternational"
+ },
+ [
+ $menupopup(doc, {
+ onpopupshowing: "Firebug.browserOverlay.onPositionPopupShowing(this)"
+ })
+ ]),
+ $menuseparator(doc),
+ $menuitem(doc, {
+ id: "menu_firebug_ClearConsole",
+ label: "firebug.ClearConsole",
+ tooltiptext: "firebug.ClearTooltip",
+ command: "cmd_firebug_clearConsole",
+ key: "key_firebug_clearConsole"
+ }),
+ $menuitem(doc, {
+ id: "menu_firebug_showErrorCount",
+ type: "checkbox",
+ label: "firebug.Show_Error_Count",
+ tooltiptext: "firebug.menu.tip.Show_Error_Count",
+ oncommand: "Firebug.browserOverlay.onToggleOption(this)",
+ option: "showErrorCount"
+ }),
+ $menuseparator(doc),
+ $menuitem(doc, {
+ id: "menu_firebug_enablePanels",
+ label: "firebug.menu.Enable_All_Panels",
+ tooltiptext: "firebug.menu.tip.Enable_All_Panels",
+ command: "cmd_firebug_enablePanels"
+ }),
+ $menuitem(doc, {
+ id: "menu_firebug_disablePanels",
+ label: "firebug.menu.Disable_All_Panels",
+ tooltiptext: "firebug.menu.tip.Disable_All_Panels",
+ command: "cmd_firebug_disablePanels"
+ }),
+ $menuseparator(doc),
+ $menuitem(doc, {
+ id: "menu_firebug_AllOn",
+ type: "checkbox",
+ label: "On_for_all_web_pages",
+ tooltiptext: "firebug.menu.tip.On_for_all_Web_Sites",
+ command: "cmd_firebug_allOn",
+ option: "allPagesActivation"
+ }),
+ $menuitem(doc, {
+ id: "menu_firebug_clearActivationList",
+ label: "firebug.menu.Clear_Activation_List",
+ tooltiptext: "firebug.menu.tip.Clear_Activation_List",
+ command: "cmd_firebug_clearActivationList"
+ })
+ ])
+ ]);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Firebug Global Menu
+
+ /**
+ * There are more instances of Firebug Menu (e.g. one in Firefox -> Tools -> Web Developer
+ * and one in Firefox 4 (top-left orange button menu) -> Web Developer
+ *
+ * If extensions want to override the menu thay need to iterate all existing instance
+ * using document.querySelectorAll(".fbFirebugMenuPopup") and append new menu items to all
+ * of them. Iteration must be done in the global space (browser.xul)
+ *
+ * The same menu is also used for Firebug Icon Menu (Firebug's toolbar). This menu is cloned
+ * and initialized as soon as Firebug UI is actually loaded. Since it's cloned from the original
+ * (global scope) extensions don't have to extend it (possible new menu items are already there).
+ */
+ overlayFirebugMenu: function(doc)
+ {
+ this.firebugMenuContent =
+ [
+ // Open/close Firebug
+ $menuitem(doc,
+ {
+ id: "menu_firebug_toggleFirebug",
+ label: "firebug.ShowFirebug",
+ tooltiptext: "firebug.menu.tip.Open_Firebug",
+ command: "cmd_firebug_toggleFirebug",
+ key: "key_firebug_toggleFirebug",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_closeFirebug",
+ label: "firebug.Deactivate_Firebug",
+ tooltiptext: "firebug.tip.Deactivate_Firebug",
+ command: "cmd_firebug_closeFirebug",
+ key: "key_firebug_closeFirebug",
+ "class": "fbInternational"
+ }),
+
+ // Firebug UI position
+ $menu(doc,
+ {
+ label: "firebug.uiLocation",
+ tooltiptext: "firebug.menu.tip.UI_Location",
+ "class": "fbInternational"
+ },
+ [
+ $menupopup(doc, {
+ onpopupshowing: "Firebug.browserOverlay.onPositionPopupShowing(this)"
+ })
+ ]),
+
+ $menuseparator(doc),
+
+ // External Editors
+ $menu(doc,
+ {
+ id: "FirebugMenu_OpenWith",
+ label:"firebug.OpenWith",
+ tooltiptext:"firebug.menu.tip.Open_With",
+ "class": "fbInternational",
+ insertafter: "menu_firebug_openActionsSeparator",
+ openFromContext: "true",
+ command: "cmd_firebug_openInEditor"
+ },
+ [
+ $menupopup(doc,{id:"fbFirebugMenu_OpenWith",
+ onpopupshowing: "return Firebug.browserOverlay.onEditorsShowing(this);"})
+ ]),
+
+ // Text Size
+ $menu(doc,
+ {
+ id: "FirebugMenu_TextSize",
+ label: "firebug.TextSize",
+ tooltiptext: "firebug.menu.tip.Text_Size",
+ "class": "fbInternational"
+ },
+ [
+ $menupopup(doc,{},
+ [
+ $menuitem(doc,
+ {
+ id: "menu_firebug_increaseTextSize",
+ label: "firebug.IncreaseTextSize",
+ tooltiptext: "firebug.menu.tip.Increase_Text_Size",
+ command: "cmd_firebug_increaseTextSize",
+ key: "key_firebug_increaseTextSize",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_decreaseTextSize",
+ label: "firebug.DecreaseTextSize",
+ tooltiptext: "firebug.menu.tip.Decrease_Text_Size",
+ command: "cmd_firebug_decreaseTextSize",
+ key: "key_firebug_decreaseTextSize",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_normalTextSize",
+ label: "firebug.NormalTextSize",
+ tooltiptext: "firebug.menu.tip.Normal_Text_Size",
+ command: "cmd_firebug_normalTextSize",
+ key: "key_firebug_normalTextSize",
+ "class": "fbInternational"
+ }),
+ ])
+ ]),
+
+ // Options
+ $menu(doc,
+ {
+ id: "FirebugMenu_Options",
+ label: "firebug.Options",
+ tooltiptext: "firebug.menu.tip.Options",
+ "class": "fbInternational"
+ },
+ [
+ $menupopup(doc,
+ {
+ id: "FirebugMenu_OptionsPopup",
+ onpopupshowing: "return Firebug.browserOverlay.onOptionsShowing(this);"
+ },
+ [
+ $menuitem(doc,
+ {
+ id: "menu_firebug_toggleShowErrorCount",
+ type: "checkbox",
+ label: "firebug.Show_Error_Count",
+ tooltiptext: "firebug.menu.tip.Show_Error_Count",
+ oncommand: "Firebug.browserOverlay.onToggleOption(this)",
+ option: "showErrorCount",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_showTooltips",
+ type: "checkbox",
+ label: "firebug.menu.Show_Info_Tips",
+ tooltiptext: "firebug.menu.tip.Show_Info_Tips",
+ oncommand: "Firebug.browserOverlay.onToggleOption(this)",
+ option: "showInfoTips",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_shadeBoxModel",
+ type: "checkbox",
+ label: "ShadeBoxModel",
+ tooltiptext: "inspect.option.tip.Shade_Box_Model",
+ oncommand: "Firebug.browserOverlay.onToggleOption(this)",
+ option: "shadeBoxModel",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_showQuickInfoBox",
+ type: "checkbox",
+ label: "ShowQuickInfoBox",
+ tooltiptext: "inspect.option.tip.Show_Quick_Info_Box",
+ oncommand: "Firebug.browserOverlay.onToggleOption(this)",
+ option: "showQuickInfoBox",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_enableA11y",
+ type: "checkbox",
+ label: "firebug.menu.Enable_Accessibility_Enhancements",
+ tooltiptext: "firebug.menu.tip.Enable_Accessibility_Enhancements",
+ oncommand: "Firebug.browserOverlay.onToggleOption(this)",
+ option: "a11y.enable",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_activateSameOrigin",
+ type: "checkbox",
+ label: "firebug.menu.Activate_Same_Origin_URLs2",
+ tooltiptext: "firebug.menu.tip.Activate_Same_Origin_URLs",
+ oncommand: "Firebug.browserOverlay.onToggleOption(this)",
+ option: "activateSameOrigin",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_toggleOrient",
+ type: "checkbox",
+ label: "firebug.menu.Vertical_Panels",
+ tooltiptext: "firebug.menu.tip.Vertical_Panels",
+ command: "cmd_firebug_toggleOrient",
+ option: "viewPanelOrient",
+ "class": "fbInternational"
+ }),
+ $menuseparator(doc, {id: "menu_firebug_optionsSeparator"}),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_resetAllOptions",
+ label: "firebug.menu.Reset_All_Firebug_Options",
+ tooltiptext: "firebug.menu.tip.Reset_All_Firebug_Options",
+ command: "cmd_firebug_resetAllOptions",
+ "class": "fbInternational"
+ }),
+ ])
+ ]),
+
+ $menuseparator(doc,{id: "FirebugBetweenOptionsAndSites", collapsed: "true"}),
+
+ // Sites
+ $menu(doc,
+ {
+ id: "FirebugMenu_Sites",
+ label: "firebug.menu.Firebug_Online",
+ tooltiptext: "firebug.menu.tip.Firebug_Online",
+ "class": "fbInternational"
+ },
+ [
+ $menupopup(doc,{},
+ [
+ $menuitem(doc,
+ {
+ id: "menu_firebug_firebugUrlWebsite",
+ label: "firebug.Website",
+ tooltiptext: "firebug.menu.tip.Website",
+ oncommand: "Firebug.chrome.visitWebsite('main')",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_firebugUrlExtensions",
+ label: "firebug.menu.Extensions",
+ tooltiptext: "firebug.menu.tip.Extensions",
+ oncommand: "Firebug.chrome.visitWebsite('extensions')",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_firebugHelp",
+ label: "firebug.help",
+ tooltiptext: "firebug.menu.tip.help",
+ command: "cmd_firebug_openHelp",
+ key: "key_firebug_help",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_firebugDoc",
+ label: "firebug.Documentation",
+ tooltiptext: "firebug.menu.tip.Documentation",
+ oncommand: "Firebug.chrome.visitWebsite('docs')",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_firebugKeyboard",
+ label: "firebug.KeyShortcuts",
+ tooltiptext: "firebug.menu.tip.Key_Shortcuts",
+ oncommand: "Firebug.chrome.visitWebsite('keyboard')",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_firebugForums",
+ label: "firebug.Forums",
+ tooltiptext: "firebug.menu.tip.Forums",
+ oncommand: "Firebug.chrome.visitWebsite('discuss')",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_firebugIssues",
+ label: "firebug.Issues",
+ tooltiptext: "firebug.menu.tip.Issues",
+ oncommand: "Firebug.chrome.visitWebsite('issues')",
+ "class": "fbInternational"
+ }),
+ $menuitem(doc,
+ {
+ id: "menu_firebug_firebugDonate",
+ label: "firebug.Donate",
+ tooltiptext: "firebug.menu.tip.Donate",
+ oncommand: "Firebug.chrome.visitWebsite('donate')",
+ "class": "fbInternational"
+ }),
+ ])
+ ]),
+
+ $menuseparator(doc, {id: "menu_firebug_miscActionsSeparator", collapsed: "true"}),
+
+ $menuseparator(doc, {id: "menu_firebug_toolsSeparator", collapsed: "true"}),
+
+ $menuitem(doc,
+ {
+ id: "menu_firebug_customizeShortcuts",
+ label: "firebug.menu.Customize_shortcuts",
+ tooltiptext: "firebug.menu.tip.Customize_Shortcuts",
+ command: "cmd_firebug_customizeFBKeys",
+ key: "key_firebug_customizeFBKeys",
+ "class": "fbInternational"
+ }),
+
+ $menuseparator(doc, {id: "menu_firebug_aboutSeparator"}),
+
+ $menuitem(doc, {
+ id: "menu_firebug_about",
+ label: "firebug.About",
+ tooltiptext: "firebug.menu.tip.About",
+ oncommand: "Firebug.browserOverlay.openAboutDialog()",
+ "class": "firebugAbout fbInternational"
+ }),
+ ];
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Global Menu Overlays
+
+ overlayFirefoxMenu: function(doc)
+ {
+ // Firefox page context menu
+ $menupopupOverlay(doc, $(doc, "contentAreaContextMenu"), [
+ $menuseparator(doc),
+ $menuitem(doc,{
+ id: "menu_firebug_firebugInspect",
+ label: "firebug.InspectElementWithFirebug",
+ command: "cmd_firebug_inspect",
+ "class": "menuitem-iconic fbInternational"
+ })
+ ]);
+
+ // Firefox view menu
+ $menupopupOverlay(doc, $(doc, "menu_viewPopup"),
+ [
+ $menuitem(doc, {
+ id: "menu_firebug_viewToggleFirebug",
+ insertbefore: "toggle_taskbar",
+ label: "firebug.Firebug",
+ type: "checkbox",
+ key: "key_firebug_toggleFirebug",
+ command: "cmd_firebug_toggleFirebug",
+ "class": "fbInternational"
+ })
+ ],
+ {
+ onpopupshowing: "return Firebug.browserOverlay.onViewMenuShowing();"
+ }
+ );
+
+ // SeaMonkey view menu
+ $menupopupOverlay(doc, $(doc, "menu_View_Popup"),
+ [
+ $menuitem(doc, {
+ id: "menu_firebug_viewToggleFirebug",
+ insertafter: "menuitem_fullScreen",
+ label: "firebug.Firebug",
+ type: "checkbox",
+ key: "key_firebug_toggleFirebug",
+ command: "cmd_firebug_toggleFirebug",
+ "class": "menuitem-iconic fbInternational"
+ })
+ ],
+ {
+ onpopupshowing: "return Firebug.browserOverlay.onViewMenuShowing();"
+ }
+ );
+
+ // Firefox Tools -> Web Developer Menu
+ $menupopupOverlay(doc, $(doc, "menuWebDeveloperPopup"), [
+ $menu(doc, {
+ id: "menu_webDeveloper_firebug",
+ position: 1,
+ label: "firebug.Firebug",
+ "class": "menu-iconic fbInternational"
+ }, [
+ $menupopup(doc, {
+ id: "menu_firebug_firebugMenuPopup",
+ "class": "fbFirebugMenuPopup",
+ onpopupshowing: "return Firebug.browserOverlay.onMenuShowing(this, event);",
+ onpopuphiding: "return Firebug.browserOverlay.onMenuHiding(this, event);"
+ })
+ ]),
+ $menuseparator(doc, {
+ insertafter: "menu_webDeveloper_firebug"
+ })
+ ]);
+
+ // Firefox Button -> Web Developer Menu
+ $menupopupOverlay(doc, $(doc, "appmenu_webDeveloper_popup"), [
+ $splitmenu(doc, {
+ id: "appmenu_firebug",
+ position: 1,
+ command: "cmd_firebug_toggleFirebug",
+ key: "key_firebug_toggleFirebug",
+ label: "firebug.Firebug",
+ iconic: "true",
+ "class": "fbInternational"
+ }, [
+ $menupopup(doc, {
+ id: "appmenu_firebugMenuPopup",
+ "class": "fbFirebugMenuPopup",
+ onpopupshowing: "return Firebug.browserOverlay.onMenuShowing(this, event);",
+ onpopuphiding: "return Firebug.browserOverlay.onMenuHiding(this, event);"
+ })
+ ]),
+ $menuseparator(doc, {
+ insertafter: "appmenu_firebug"
+ })
+ ]);
+
+ // Sea Monkey Tools Menu
+ $menupopupOverlay(doc, $(doc, "toolsPopup"), [
+ $menu(doc, {
+ id: "menu_firebug",
+ insertbefore: "appmenu_webConsole",
+ command: "cmd_firebug_toggleFirebug",
+ key: "key_firebug_toggleFirebug",
+ label: "firebug.Firebug",
+ "class": "menuitem-iconic fbInternational"
+ }, [
+ $menupopup(doc, {
+ id: "toolsmenu_firebugMenuPopup",
+ "class": "fbFirebugMenuPopup",
+ onpopupshowing: "return Firebug.browserOverlay.onMenuShowing(this, event);",
+ onpopuphiding: "return Firebug.browserOverlay.onMenuHiding(this, event);"
+ })
+ ])
+ ]);
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return BrowserMenu;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/firefox/browserOverlay.css b/content/firebug/firefox/browserOverlay.css
index f329864..b498813 100644
--- a/content/firebug/firefox/browserOverlay.css
+++ b/content/firebug/firefox/browserOverlay.css
@@ -1,180 +1,180 @@
-/* See license.txt for terms of usage */
-
-/*************************************************************************************************/
-/* Customizable Dialog Toolbar Buttons */
-
-/* Inspector button */
-#firebug-inspectorButton {
- list-style-image: url(chrome://firebug/skin/inspect.png);
- -moz-image-region: rect(0, 16px, 16px, 0);
-}
-
-#firebug-inspectorButton:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0);
-}
-
-/* Firebug Start Button */
-#firebug-button {
- -moz-binding: url("chrome://firebug/content/firefox/start-button/startButton.xml#start-button");
- list-style-image: url(chrome://firebug/skin/firebug16Disabled.png) !important;
-}
-
-#firebug-button[firebugActive="true"] {
- list-style-image: url(chrome://firebug/skin/firebug16.png) !important;
-}
-
-/* Error badge (displays an error counter). The badge is only visible if error count
- should be displayed */
-#firebug-button .badge {
- display: none;
-}
-
-#firebug-button[showErrors="true"] .badge {
- display: block;
- -moz-box-sizing: border-box;
- margin: 0;
-}
-
-#firebug-button .badge > .label {
- -moz-box-sizing: border-box;
- visibility: hidden;
- font-size: 10px;
- padding: 0 3px;
- line-height: 13px;
- font-family: Arial, Helvetica, sans-serif;
- text-shadow: 0 0 1px #EEF1F7;
- color: #900;
- border-radius: 3px;
- background-color: rgba(255, 0, 0, 0.9);
- box-shadow: inset 0px 0px 1px white;
- background-image: linear-gradient(
- to top,
- #DBE1EB 0%,
- #DEE4EB 80%,
- #E7EBF3 81%
- );
- border-width: 1px;
- border-style: solid;
- border-color: #B3BBC4 #9DA4AD #868D96 #9DA4AD;
- box-shadow: 0 0 1px rgba(255, 255, 255, 0.3) inset,
- 0 1px 0 rgba(180, 189, 202, 0.7),
- 0 0 3px rgba(153, 0, 0, 0.9);
-}
-
-#firebug-button[showErrors="true"]:not([errorCount="0"]) .badge .label {
- visibility: visible;
-}
-
-/* old statusbar item look when on addonbar*/
-#addon-bar #firebug-button dropmarker {
- display: none;
-}
-#addon-bar #firebug-button .fb-toolbarbutton{
- padding: 0 3px!important;
-}
-
-/* Slightly different positions of the badge for individual toolbars */
-#nav-bar #firebug-button .badge {
- margin: 3px -10px 0 -8px;
-}
-
-#addon-bar #firebug-button .badge {
- margin-top: 1px;
-}
-
-#TabsToolbar #firebug-button .badge {
- margin-top: 4px;
-}
-
-#toolbar-menubar #firebug-button .badge {
- margin-top: 4px;
-}
-
-#firebug-button .fb-toolbarbutton {
- padding: 0;
-}
-
-/*************************************************************************************************/
-/* Firebug Menu & Firefox context menu */
-
-#menu_firebug, #appmenu_firebug, #menu_webDeveloper_firebug {
- list-style-image: url(chrome://firebug/skin/firebug16.png);
-}
-
-#menu_firebug_firebugInspect {
- list-style-image: url(chrome://firebug/skin/inspect.png);
- -moz-image-region: rect(0, 16px, 16px, 0);
-}
-
-#menu_firebug_firebugInspect:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0);
-}
-
-/*************************************************************************************************/
-/* browser.xul & browserOverlayWithFrame */
-
-#fbMainFrame {
- height: 270px;
- width: 370px;
- min-height: 30px;
- min-width: 30px;
-}
-
-/*************************************************************************************************/
-/* Firebug Splitter */
-
-#fbContentSplitter{
- border-color: threedShadow !important;
- background-color: #FFFFFF;
-}
-
-#fbContentSplitter[dir=reverse]{
- transform: scale(-1, -1);
-}
-
-#fbContentSplitter[orient=vertical] {
- border-top: 1px solid !important;
- border-bottom: none;
- min-height: 5px;
- max-height: 5px;
- background-color: -moz-dialog;
-}
-
-#fbContentSplitter[orient=horizontal] {
- border-right: 1px solid !important;
- border-left: none;
- min-width: 5px;
- max-width: 5px;
- background-color: -moz-dialog;
-}
-
-/*************************************************************************************************/
-/* Start Button Tooltip */
-
-.firebugButtonTooltip .version {
- font-weight: bold;
-}
-
-.firebugButtonTooltip .alwaysOn {
- color: gray;
-}
-
-.firebugButtonTooltip .enablement {
- border-top: 1px gray dotted;
- margin-top: 5px;
- padding-top: 5px;
- font-style: italic;
-}
-
-.firebugButtonTooltip .panelName,
-.firebugButtonTooltip .panelStatus {
- color: gray;
- margin-top: 0;
- margin-bottom: 0;
- min-width: 75px
-}
-
-.firebugButtonTooltip .panelStatus.on,
-.firebugButtonTooltip .panelName.on {
- color: black;
-}
+/* See license.txt for terms of usage */
+
+/*************************************************************************************************/
+/* Customizable Dialog Toolbar Buttons */
+
+/* Inspector button */
+#firebug-inspectorButton {
+ list-style-image: url(chrome://firebug/skin/inspect.png);
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#firebug-inspectorButton:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0);
+}
+
+/* Firebug Start Button */
+#firebug-button {
+ -moz-binding: url("chrome://firebug/content/firefox/start-button/startButton.xml#start-button");
+ list-style-image: url(chrome://firebug/skin/firebug16Disabled.png) !important;
+}
+
+#firebug-button[firebugActive="true"] {
+ list-style-image: url(chrome://firebug/skin/firebug16.png) !important;
+}
+
+/* Error badge (displays an error counter). The badge is only visible if error count
+ should be displayed */
+#firebug-button .badge {
+ display: none;
+}
+
+#firebug-button[showErrors="true"] .badge {
+ display: block;
+ -moz-box-sizing: border-box;
+ margin: 0;
+}
+
+#firebug-button .badge > .label {
+ -moz-box-sizing: border-box;
+ visibility: hidden;
+ font-size: 10px;
+ padding: 0 3px;
+ line-height: 13px;
+ font-family: Arial, Helvetica, sans-serif;
+ text-shadow: 0 0 1px #EEF1F7;
+ color: #900;
+ border-radius: 3px;
+ background-color: rgba(255, 0, 0, 0.9);
+ box-shadow: inset 0px 0px 1px white;
+ background-image: linear-gradient(
+ to top,
+ #DBE1EB 0%,
+ #DEE4EB 80%,
+ #E7EBF3 81%
+ );
+ border-width: 1px;
+ border-style: solid;
+ border-color: #B3BBC4 #9DA4AD #868D96 #9DA4AD;
+ box-shadow: 0 0 1px rgba(255, 255, 255, 0.3) inset,
+ 0 1px 0 rgba(180, 189, 202, 0.7),
+ 0 0 3px rgba(153, 0, 0, 0.9);
+}
+
+#firebug-button[showErrors="true"]:not([errorCount="0"]) .badge .label {
+ visibility: visible;
+}
+
+/* old statusbar item look when on addonbar*/
+#addon-bar #firebug-button dropmarker {
+ display: none;
+}
+#addon-bar #firebug-button .fb-toolbarbutton{
+ padding: 0 3px!important;
+}
+
+/* Slightly different positions of the badge for individual toolbars */
+#nav-bar #firebug-button .badge {
+ margin: 3px -10px 0 -8px;
+}
+
+#addon-bar #firebug-button .badge {
+ margin-top: 1px;
+}
+
+#TabsToolbar #firebug-button .badge {
+ margin-top: 4px;
+}
+
+#toolbar-menubar #firebug-button .badge {
+ margin-top: 4px;
+}
+
+#firebug-button .fb-toolbarbutton {
+ padding: 0;
+}
+
+/*************************************************************************************************/
+/* Firebug Menu & Firefox context menu */
+
+#menu_firebug, #appmenu_firebug, #menu_webDeveloper_firebug {
+ list-style-image: url(chrome://firebug/skin/firebug16.png);
+}
+
+#menu_firebug_firebugInspect {
+ list-style-image: url(chrome://firebug/skin/inspect.png);
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#menu_firebug_firebugInspect:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0);
+}
+
+/*************************************************************************************************/
+/* browser.xul & browserOverlayWithFrame */
+
+#fbMainFrame {
+ height: 270px;
+ width: 370px;
+ min-height: 30px;
+ min-width: 30px;
+}
+
+/*************************************************************************************************/
+/* Firebug Splitter */
+
+#fbContentSplitter{
+ border-color: threedShadow !important;
+ background-color: #FFFFFF;
+}
+
+#fbContentSplitter[dir=reverse]{
+ transform: scale(-1, -1);
+}
+
+#fbContentSplitter[orient=vertical] {
+ border-top: 1px solid !important;
+ border-bottom: none;
+ min-height: 5px;
+ max-height: 5px;
+ background-color: -moz-dialog;
+}
+
+#fbContentSplitter[orient=horizontal] {
+ border-right: 1px solid !important;
+ border-left: none;
+ min-width: 5px;
+ max-width: 5px;
+ background-color: -moz-dialog;
+}
+
+/*************************************************************************************************/
+/* Start Button Tooltip */
+
+.firebugButtonTooltip .version {
+ font-weight: bold;
+}
+
+.firebugButtonTooltip .alwaysOn {
+ color: gray;
+}
+
+.firebugButtonTooltip .enablement {
+ border-top: 1px gray dotted;
+ margin-top: 5px;
+ padding-top: 5px;
+ font-style: italic;
+}
+
+.firebugButtonTooltip .panelName,
+.firebugButtonTooltip .panelStatus {
+ color: gray;
+ margin-top: 0;
+ margin-bottom: 0;
+ min-width: 75px
+}
+
+.firebugButtonTooltip .panelStatus.on,
+.firebugButtonTooltip .panelName.on {
+ color: black;
+}
diff --git a/content/firebug/firefox/browserOverlay.js b/content/firebug/firefox/browserOverlay.js
index f887edd..cafd200 100644
--- a/content/firebug/firefox/browserOverlay.js
+++ b/content/firebug/firefox/browserOverlay.js
@@ -1,556 +1,556 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/options",
- "firebug/lib/locale",
- "firebug/lib/array",
- "firebug/lib/xpcom",
- "firebug/firefox/browserOverlayLib",
- "firebug/firefox/browserCommands",
- "firebug/firefox/browserMenu",
- "firebug/firefox/browserToolbar",
-],
-function(FBTrace, Options, Locale, Arr, Xpcom, BrowserOverlayLib, BrowserCommands, BrowserMenu,
- BrowserToolbar) {
-
-with (BrowserOverlayLib) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-var Cu = Components.utils;
-
-Locale.registerStringBundle("chrome://firebug/locale/firebug.properties");
-Locale.registerStringBundle("chrome://firebug/locale/cookies.properties");
-Locale.registerStringBundle("chrome://firebug/locale/selectors.properties");
-
-Cu.import("resource://firebug/loader.js");
-Cu.import("resource://firebug/fbtrace.js");
-
-const firstRunPage = "https://getfirebug.com/firstrun#Firebug ";
-
-// ********************************************************************************************* //
-// BrowserOverlay Implementation
-
-function BrowserOverlay(win)
-{
- this.win = win;
- this.doc = win.document;
-}
-
-BrowserOverlay.prototype =
-{
- // When Firebug is disabled or unistalled this elements must be removed from
- // chrome UI (XUL).
- nodesToRemove: [],
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Initialization
-
- initialize: function(reason)
- {
- // Expose BrowserOverlayLib object to extensions.
- this.win.Firebug.BrowserOverlayLib = BrowserOverlayLib;
-
- // This element (a broadcaster) is storing Firebug state information. Other elements
- // (like for example the Firebug start button) can watch it and display the info to
- // the user.
- $el(this.doc, "broadcaster", {id: "firebugStatus", suspended: true},
- $(this.doc, "mainBroadcasterSet"));
-
- var node = $stylesheet(this.doc, "chrome://firebug/content/firefox/browserOverlay.css");
-
- if (this.win.navigator.platform.search("Mac") == 0)
- $stylesheet(this.doc, "chrome://firebug/content/firefox/macBrowserOverlay.css");
-
- this.nodesToRemove.push(node);
-
- this.loadContextMenuOverlay();
- this.loadFirstRunPage(reason);
-
- var version = this.getVersion();
-
- BrowserCommands.overlay(this.doc);
- BrowserMenu.overlay(this.doc);
- BrowserToolbar.overlay(this.doc, version);
-
- this.internationalize();
- this.allPagesActivation();
- },
-
- internationalize: function()
- {
- // Internationalize all elements with 'fbInternational' class. Clone
- // before internationalizing.
- var elements = Arr.cloneArray(this.doc.getElementsByClassName("fbInternational"));
- Locale.internationalizeElements(this.doc, elements, ["label", "tooltiptext", "aria-label"]);
- },
-
- allPagesActivation: function()
- {
- // Load Firebug by default if activation is on for all pages (see issue 5522)
- if (Options.get("allPagesActivation") == "on" || !Options.get("delayLoad"))
- {
- var self = this;
- this.startFirebug(function(Firebug)
- {
- var browser = Firebug.Firefox.getBrowserForWindow(self.win);
- var uri = Firebug.Firefox.getCurrentURI();
-
- // Open Firebug UI (e.g. if the annotations say so, issue 5623)
- if (uri && Firebug.TabWatcher.shouldCreateContext(browser, uri.spec, null))
- Firebug.toggleBar(true);
-
- FBTrace.sysout("Firebug loaded by default since 'allPagesActivation' is on " +
- "or 'delayLoad' is false");
- });
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Load Rest of Firebug
-
- /**
- * This method is called by the Framework to load entire Firebug. It's executed when
- * the user requires Firebug for the first time.
- *
- * @param {Object} callback Executed when Firebug is fully loaded
- */
- startFirebug: function(callback)
- {
- if (this.win.Firebug.waitingForFirstLoad)
- return;
-
- if (this.win.Firebug.isInitialized)
- return callback && callback(this.win.Firebug);
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("overlay; Load Firebug...", (callback ? callback.toString() : ""));
-
- this.win.Firebug.waitingForFirstLoad = true;
-
- var container = $(this.doc, "appcontent");
-
- // List of Firebug scripts that must be loaded into the global scope (browser.xul)
- // FBTrace is no longer loaded into the global space.
- var scriptSources = [
- "chrome://firebug/content/legacy.js",
- "chrome://firebug/content/moduleConfig.js"
- ];
-
- // Create script elements.
- var self = this;
- scriptSources.forEach(function(url)
- {
- $script(self.doc, url);
- });
-
- // Create Firebug splitter element.
- $el(this.doc, "splitter", {id: "fbContentSplitter", collapsed: "true"}, container);
-
- // Create Firebug main frame and container.
- $el(this.doc, "vbox", {id: "fbMainFrame", collapsed: "true", persist: "height,width"}, [
- $el(this.doc, "browser", {
- id: "fbMainContainer",
- flex: "2",
- src: "chrome://firebug/content/firefox/firebugFrame.xul",
- disablehistory: "true"
- })
- ], container);
-
- // When Firebug is fully loaded and initialized it fires a "FirebugLoaded"
- // event to the browser document (browser.xul scope). Wait for that to happen.
- this.doc.addEventListener("FirebugLoaded", function onLoad()
- {
- self.doc.removeEventListener("FirebugLoaded", onLoad, false);
- self.win.Firebug.waitingForFirstLoad = false;
-
- // xxxHonza: TODO find a better place for notifying extensions
- FirebugLoader.dispatchToScopes("firebugFrameLoad", [self.win.Firebug]);
- callback && callback(self.win.Firebug);
- }, false);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Firebug Menu Handlers
-
- onOptionsShowing: function(popup)
- {
- for (var child = popup.firstChild; child; child = child.nextSibling)
- {
- if (child.localName == "menuitem")
- {
- var option = child.getAttribute("option");
- if (option)
- {
- var checked = Options.get(option);
-
- // xxxHonza: I believe that allPagesActivation could be simple boolean option.
- if (option == "allPagesActivation")
- checked = (checked == "on") ? true : false;
-
- child.setAttribute("checked", checked);
- }
- }
- }
- },
-
- onToggleOption: function(menuItem)
- {
- var option = menuItem.getAttribute("option");
- var checked = menuItem.getAttribute("checked") == "true";
-
- Options.set(option, checked);
- },
-
- onMenuShowing: function(popup, event)
- {
- // If the event comes from a sub menu, just ignore it.
- if (popup != event.target)
- return;
-
- while (popup.lastChild)
- popup.removeChild(popup.lastChild);
-
- // Generate dynamic content.
- for (var i=0; i<BrowserMenu.firebugMenuContent.length; i++)
- popup.appendChild(BrowserMenu.firebugMenuContent[i].cloneNode(true));
-
- var collapsed = "true";
- if (this.win.Firebug.chrome)
- {
- var fbContentBox = this.win.Firebug.chrome.$("fbContentBox");
- collapsed = fbContentBox.getAttribute("collapsed");
- }
-
- var currPos = Options.get("framePosition");
- var placement = this.win.Firebug.getPlacement ? this.win.Firebug.getPlacement() : "";
-
- // Switch between "Open Firebug" and "Hide Firebug" label in the popup menu.
- var toggleFirebug = popup.querySelector("#menu_firebug_toggleFirebug");
- if (toggleFirebug)
- {
- var hiddenUI = (collapsed == "true" || placement == "minimized");
- toggleFirebug.setAttribute("label", (hiddenUI ?
- Locale.$STR("firebug.ShowFirebug") : Locale.$STR("firebug.HideFirebug")));
-
- toggleFirebug.setAttribute("tooltiptext", (hiddenUI ?
- Locale.$STR("firebug.menu.tip.Open_Firebug") :
- Locale.$STR("firebug.menu.tip.Minimize_Firebug")));
-
- var currentLocation = toggleFirebug.ownerDocument.defaultView.top.location.href;
- var inDetachedWindow = currentLocation.indexOf("firebug.xul") > 0;
-
- // If Firebug is detached, use "Focus Firebug Window" label
- // instead of "Hide Firebug" when the menu isn't opened from
- // within the detached Firebug window. the 'placement' is used
- // to ensure Firebug isn't closed with close button of detached window
- // and 'inDetachedWindow' variable is also used to ensure the menu is
- // opened from within the detached window.
- if (currPos == "detached" && this.win.Firebug.currentContext &&
- placement != "minimized" && !inDetachedWindow)
- {
- toggleFirebug.setAttribute("label", Locale.$STR("firebug.FocusFirebug"));
- toggleFirebug.setAttribute("tooltiptext",
- Locale.$STR("firebug.menu.tip.Focus_Firebug"));
- }
- }
-
- // Hide "Deactivate Firebug" menu if Firebug is not active.
- var closeFirebug = popup.querySelector("#menu_firebug_closeFirebug");
- if (closeFirebug)
- {
- closeFirebug.setAttribute("collapsed",
- (this.win.Firebug.currentContext ? "false" : "true"));
- }
-
- // Update About Menu
- var version = this.getVersion();
- if (version)
- {
- var node = popup.getElementsByClassName("firebugAbout")[0];
- var aboutLabel = node.getAttribute("label");
- node.setAttribute("label", aboutLabel + " " + version);
- node.classList.remove("firebugAbout");
- }
-
- // Allow Firebug menu customization (see FBTest and FBTrace as an example).
- var event = new this.win.CustomEvent("firebugMenuShowing", {detail: popup});
- this.doc.dispatchEvent(event);
- },
-
- onMenuHiding: function(popup, event)
- {
- if (popup != event.target)
- return;
-
- // xxxHonza: I don't know why the timeout must be here, but if it isn't
- // the icon menu is broken (see issue 5427)
- this.win.setTimeout(function()
- {
- while (popup.lastChild)
- popup.removeChild(popup.lastChild);
- });
- },
-
- onViewMenuShowing: function()
- {
- var suspendMarker = this.win.document.getElementById("firebugStatus");
-
- // Check whether Firebug is open
- var open = false;
- if (this.win.Firebug.chrome)
- {
- var fbContentBox = this.win.Firebug.chrome.$("fbContentBox");
- open = fbContentBox.getAttribute("collapsed") == "true" ? false : true;
- }
-
- var firebugViewMenuItem = this.win.document.
- getElementById("menu_firebug_viewToggleFirebug");
- firebugViewMenuItem.setAttribute("checked", open);
- },
-
- onPositionPopupShowing: function(popup)
- {
- while (popup.lastChild)
- popup.removeChild(popup.lastChild);
-
- // Load Firebug before the position is changed.
- var oncommand = "Firebug.browserOverlay.startFirebug(function(){" +
- "Firebug.chrome.setPosition('%pos%')" + "})";
-
- var items = [];
- var currPos = Options.get("framePosition");
-
- var positions = ["detached", "top", "bottom", "left", "right"];
- for (var i=0; i<positions.length; i++)
- {
- var pos = positions[i];
- var label = pos.charAt(0).toUpperCase() + pos.slice(1);
-
- var item = $menuitem(this.doc, {
- label: Locale.$STR("firebug.menu." + label),
- tooltiptext: Locale.$STR("firebug.menu.tip." + label),
- type: "radio",
- oncommand: oncommand.replace("%pos%", pos),
- checked: (currPos == pos)
- });
-
- if (pos == "detached")
- items.key = "key_firebug_detachFirebug";
-
- popup.appendChild(item);
- }
-
- return true;
- },
-
- openAboutDialog: function()
- {
- var self = this;
-
- // Firefox 4.0+
- Cu["import"]("resource://gre/modules/AddonManager.jsm");
- this.win.AddonManager.getAddonByID("firebug at software.joehewitt.com", function(addon)
- {
- self.win.openDialog("chrome://mozapps/content/extensions/about.xul", "",
- "chrome,centerscreen,modal", addon);
- });
- },
-
- setPosition: function(newPosition)
- {
- // todo
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Firebug Version
-
- getVersion: function()
- {
- var versionURL = "chrome://firebug/content/branch.properties";
- var ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
-
- var channel = ioService.newChannel(versionURL, null, null);
- var input = channel.open();
- var sis = Cc["@mozilla.org/scriptableinputstream;1"].
- createInstance(Ci.nsIScriptableInputStream);
- sis.init(input);
-
- var content = sis.readBytes(input.available());
- sis.close();
-
- var m = /RELEASE=(.*)/.exec(content);
- if (m)
- var release = m[1];
- else
- return "no RELEASE in " + versionURL;
-
- m = /VERSION=(.*)/.exec(content);
- if (m)
- var version = m[1];
- else
- return "no VERSION in " + versionURL;
-
- return version+""+release;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // External Editors
-
- onEditorsShowing: function(popup)
- {
- var self = this;
- this.startFirebug(function()
- {
- self.win.Firebug.ExternalEditors.onEditorsShowing(popup);
- });
-
- return true;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Page Context Menu Overlay
-
- loadContextMenuOverlay: function()
- {
- var contextMenu = this.win.nsContextMenu;
- if (typeof(contextMenu) == "undefined")
- return;
-
- // isTargetAFormControl is removed, see:
- // https://bugzilla.mozilla.org/show_bug.cgi?id=433168
- if (typeof(contextMenu.prototype.isTargetAFormControl) != "undefined")
- {
- var setTargetOriginal = this.setTargetOriginal = contextMenu.prototype.setTarget;
- contextMenu.prototype.setTarget = function(aNode, aRangeParent, aRangeOffset)
- {
- setTargetOriginal.apply(this, arguments);
-
- if (this.isTargetAFormControl(aNode))
- this.shouldDisplay = true;
- };
- }
-
- // Hide built-in inspector if the pref says so.
- var initItemsOriginal = this.initItemsOriginal = contextMenu.prototype.initItems;
- contextMenu.prototype.initItems = function()
- {
- initItemsOriginal.apply(this, arguments);
-
- // Hide built-in inspector menu item if the pref "extensions.firebug.hideDefaultInspector"
- // says so. Note that there is also built-in preference "devtools.inspector.enable" that
- // can be used for the same purpose.
- var hideInspect = Options.get("hideDefaultInspector");
- if (hideInspect)
- {
- this.showItem("inspect-separator", false);
- this.showItem("context-inspect", false);
- }
- };
- },
-
- unloadContextMenuOverlay: function()
- {
- var contextMenu = this.win.nsContextMenu;
- if (typeof(contextMenu) == "undefined")
- return;
-
- if (this.setTargetOriginal)
- contextMenu.prototype.setTarget = this.setTargetOriginal;
-
- if (this.initItemsOriginal)
- contextMenu.prototype.initItems = this.initItemsOriginal;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // First Run Page
-
- loadFirstRunPage: function(reason)
- {
- if (this.checkFirebugVersion(Options.get("currentVersion")) <= 0)
- return;
-
- // Do not show the first run page when Firebug is being updated. It'll be displayed
- // the next time the browser is restarted
- // # ADDON_UPGRADE == 7
- if (reason == 7)
- return;
-
- // Open the page in the top most window, so the user can see it immediately.
- var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
- if (wm.getMostRecentWindow("navigator:browser") == this.win.top)
- {
- // Update the preference to make sure the page is not displayed again.
- // To avoid being annoying when Firefox crashes, forcibly save it, too.
- var version = this.getVersion();
- Options.set("currentVersion", version);
-
- if (Options.get("showFirstRunPage"))
- {
- var self = this;
- var timeout = this.win.setTimeout(function()
- {
- if (self.win.closed)
- return;
-
- self.openFirstRunPage(self.win);
- }, 1000);
-
- this.win.addEventListener("unload", function()
- {
- self.win.clearTimeout(timeout);
- }, false);
- }
- }
- },
-
- openFirstRunPage: function(win)
- {
- var version = this.getVersion();
- var url = firstRunPage + version;
-
- var browser = win.gBrowser;
- if (!browser)
- {
- FBTrace.sysout("browserOverlay.openFirstRunPage; ERROR there is no gBrowser!");
- return;
- }
-
- // Open the firstRunPage in background
- /*gBrowser.selectedTab = */browser.addTab(url, null, null, null);
-
- // Make sure prefs are stored, otherwise the firstRunPage would be displayed
- // again if Firefox crashes.
- this.win.setTimeout(function()
- {
- Options.forceSave();
- }, 400);
- },
-
- // xxxsz: Can't System.checkFirebugVersion() be used for that?
- checkFirebugVersion: function(currentVersion)
- {
- if (!currentVersion)
- return 1;
-
- var version = this.getVersion();
-
- // Use Firefox comparator service
- var versionChecker = Xpcom.CCSV("@mozilla.org/xpcom/version-comparator;1",
- "nsIVersionComparator");
-
- return versionChecker.compare(version, currentVersion);
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return BrowserOverlay;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/options",
+ "firebug/lib/locale",
+ "firebug/lib/array",
+ "firebug/lib/xpcom",
+ "firebug/firefox/browserOverlayLib",
+ "firebug/firefox/browserCommands",
+ "firebug/firefox/browserMenu",
+ "firebug/firefox/browserToolbar",
+],
+function(FBTrace, Options, Locale, Arr, Xpcom, BrowserOverlayLib, BrowserCommands, BrowserMenu,
+ BrowserToolbar) {
+
+with (BrowserOverlayLib) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cu = Components.utils;
+
+Locale.registerStringBundle("chrome://firebug/locale/firebug.properties");
+Locale.registerStringBundle("chrome://firebug/locale/cookies.properties");
+Locale.registerStringBundle("chrome://firebug/locale/selectors.properties");
+
+Cu.import("resource://firebug/loader.js");
+Cu.import("resource://firebug/fbtrace.js");
+
+const firstRunPage = "https://getfirebug.com/firstrun#Firebug ";
+
+// ********************************************************************************************* //
+// BrowserOverlay Implementation
+
+function BrowserOverlay(win)
+{
+ this.win = win;
+ this.doc = win.document;
+}
+
+BrowserOverlay.prototype =
+{
+ // When Firebug is disabled or unistalled this elements must be removed from
+ // chrome UI (XUL).
+ nodesToRemove: [],
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Initialization
+
+ initialize: function(reason)
+ {
+ // Expose BrowserOverlayLib object to extensions.
+ this.win.Firebug.BrowserOverlayLib = BrowserOverlayLib;
+
+ // This element (a broadcaster) is storing Firebug state information. Other elements
+ // (like for example the Firebug start button) can watch it and display the info to
+ // the user.
+ $el(this.doc, "broadcaster", {id: "firebugStatus", suspended: true},
+ $(this.doc, "mainBroadcasterSet"));
+
+ var node = $stylesheet(this.doc, "chrome://firebug/content/firefox/browserOverlay.css");
+
+ if (this.win.navigator.platform.search("Mac") == 0)
+ $stylesheet(this.doc, "chrome://firebug/content/firefox/macBrowserOverlay.css");
+
+ this.nodesToRemove.push(node);
+
+ this.loadContextMenuOverlay();
+ this.loadFirstRunPage(reason);
+
+ var version = this.getVersion();
+
+ BrowserCommands.overlay(this.doc);
+ BrowserMenu.overlay(this.doc);
+ BrowserToolbar.overlay(this.doc, version);
+
+ this.internationalize();
+ this.allPagesActivation();
+ },
+
+ internationalize: function()
+ {
+ // Internationalize all elements with 'fbInternational' class. Clone
+ // before internationalizing.
+ var elements = Arr.cloneArray(this.doc.getElementsByClassName("fbInternational"));
+ Locale.internationalizeElements(this.doc, elements, ["label", "tooltiptext", "aria-label"]);
+ },
+
+ allPagesActivation: function()
+ {
+ // Load Firebug by default if activation is on for all pages (see issue 5522)
+ if (Options.get("allPagesActivation") == "on" || !Options.get("delayLoad"))
+ {
+ var self = this;
+ this.startFirebug(function(Firebug)
+ {
+ var browser = Firebug.Firefox.getBrowserForWindow(self.win);
+ var uri = Firebug.Firefox.getCurrentURI();
+
+ // Open Firebug UI (e.g. if the annotations say so, issue 5623)
+ if (uri && Firebug.TabWatcher.shouldCreateContext(browser, uri.spec, null))
+ Firebug.toggleBar(true);
+
+ FBTrace.sysout("Firebug loaded by default since 'allPagesActivation' is on " +
+ "or 'delayLoad' is false");
+ });
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Load Rest of Firebug
+
+ /**
+ * This method is called by the Framework to load entire Firebug. It's executed when
+ * the user requires Firebug for the first time.
+ *
+ * @param {Object} callback Executed when Firebug is fully loaded
+ */
+ startFirebug: function(callback)
+ {
+ if (this.win.Firebug.waitingForFirstLoad)
+ return;
+
+ if (this.win.Firebug.isInitialized)
+ return callback && callback(this.win.Firebug);
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("overlay; Load Firebug...", (callback ? callback.toString() : ""));
+
+ this.win.Firebug.waitingForFirstLoad = true;
+
+ var container = $(this.doc, "appcontent");
+
+ // List of Firebug scripts that must be loaded into the global scope (browser.xul)
+ // FBTrace is no longer loaded into the global space.
+ var scriptSources = [
+ "chrome://firebug/content/legacy.js",
+ "chrome://firebug/content/moduleConfig.js"
+ ];
+
+ // Create script elements.
+ var self = this;
+ scriptSources.forEach(function(url)
+ {
+ $script(self.doc, url);
+ });
+
+ // Create Firebug splitter element.
+ $el(this.doc, "splitter", {id: "fbContentSplitter", collapsed: "true"}, container);
+
+ // Create Firebug main frame and container.
+ $el(this.doc, "vbox", {id: "fbMainFrame", collapsed: "true", persist: "height,width"}, [
+ $el(this.doc, "browser", {
+ id: "fbMainContainer",
+ flex: "2",
+ src: "chrome://firebug/content/firefox/firebugFrame.xul",
+ disablehistory: "true"
+ })
+ ], container);
+
+ // When Firebug is fully loaded and initialized it fires a "FirebugLoaded"
+ // event to the browser document (browser.xul scope). Wait for that to happen.
+ this.doc.addEventListener("FirebugLoaded", function onLoad()
+ {
+ self.doc.removeEventListener("FirebugLoaded", onLoad, false);
+ self.win.Firebug.waitingForFirstLoad = false;
+
+ // xxxHonza: TODO find a better place for notifying extensions
+ FirebugLoader.dispatchToScopes("firebugFrameLoad", [self.win.Firebug]);
+ callback && callback(self.win.Firebug);
+ }, false);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Firebug Menu Handlers
+
+ onOptionsShowing: function(popup)
+ {
+ for (var child = popup.firstChild; child; child = child.nextSibling)
+ {
+ if (child.localName == "menuitem")
+ {
+ var option = child.getAttribute("option");
+ if (option)
+ {
+ var checked = Options.get(option);
+
+ // xxxHonza: I believe that allPagesActivation could be simple boolean option.
+ if (option == "allPagesActivation")
+ checked = (checked == "on") ? true : false;
+
+ child.setAttribute("checked", checked);
+ }
+ }
+ }
+ },
+
+ onToggleOption: function(menuItem)
+ {
+ var option = menuItem.getAttribute("option");
+ var checked = menuItem.getAttribute("checked") == "true";
+
+ Options.set(option, checked);
+ },
+
+ onMenuShowing: function(popup, event)
+ {
+ // If the event comes from a sub menu, just ignore it.
+ if (popup != event.target)
+ return;
+
+ while (popup.lastChild)
+ popup.removeChild(popup.lastChild);
+
+ // Generate dynamic content.
+ for (var i=0; i<BrowserMenu.firebugMenuContent.length; i++)
+ popup.appendChild(BrowserMenu.firebugMenuContent[i].cloneNode(true));
+
+ var collapsed = "true";
+ if (this.win.Firebug.chrome)
+ {
+ var fbContentBox = this.win.Firebug.chrome.$("fbContentBox");
+ collapsed = fbContentBox.getAttribute("collapsed");
+ }
+
+ var currPos = Options.get("framePosition");
+ var placement = this.win.Firebug.getPlacement ? this.win.Firebug.getPlacement() : "";
+
+ // Switch between "Open Firebug" and "Hide Firebug" label in the popup menu.
+ var toggleFirebug = popup.querySelector("#menu_firebug_toggleFirebug");
+ if (toggleFirebug)
+ {
+ var hiddenUI = (collapsed == "true" || placement == "minimized");
+ toggleFirebug.setAttribute("label", (hiddenUI ?
+ Locale.$STR("firebug.ShowFirebug") : Locale.$STR("firebug.HideFirebug")));
+
+ toggleFirebug.setAttribute("tooltiptext", (hiddenUI ?
+ Locale.$STR("firebug.menu.tip.Open_Firebug") :
+ Locale.$STR("firebug.menu.tip.Minimize_Firebug")));
+
+ var currentLocation = toggleFirebug.ownerDocument.defaultView.top.location.href;
+ var inDetachedWindow = currentLocation.indexOf("firebug.xul") > 0;
+
+ // If Firebug is detached, use "Focus Firebug Window" label
+ // instead of "Hide Firebug" when the menu isn't opened from
+ // within the detached Firebug window. the 'placement' is used
+ // to ensure Firebug isn't closed with close button of detached window
+ // and 'inDetachedWindow' variable is also used to ensure the menu is
+ // opened from within the detached window.
+ if (currPos == "detached" && this.win.Firebug.currentContext &&
+ placement != "minimized" && !inDetachedWindow)
+ {
+ toggleFirebug.setAttribute("label", Locale.$STR("firebug.FocusFirebug"));
+ toggleFirebug.setAttribute("tooltiptext",
+ Locale.$STR("firebug.menu.tip.Focus_Firebug"));
+ }
+ }
+
+ // Hide "Deactivate Firebug" menu if Firebug is not active.
+ var closeFirebug = popup.querySelector("#menu_firebug_closeFirebug");
+ if (closeFirebug)
+ {
+ closeFirebug.setAttribute("collapsed",
+ (this.win.Firebug.currentContext ? "false" : "true"));
+ }
+
+ // Update About Menu
+ var version = this.getVersion();
+ if (version)
+ {
+ var node = popup.getElementsByClassName("firebugAbout")[0];
+ var aboutLabel = node.getAttribute("label");
+ node.setAttribute("label", aboutLabel + " " + version);
+ node.classList.remove("firebugAbout");
+ }
+
+ // Allow Firebug menu customization (see FBTest and FBTrace as an example).
+ var event = new this.win.CustomEvent("firebugMenuShowing", {detail: popup});
+ this.doc.dispatchEvent(event);
+ },
+
+ onMenuHiding: function(popup, event)
+ {
+ if (popup != event.target)
+ return;
+
+ // xxxHonza: I don't know why the timeout must be here, but if it isn't
+ // the icon menu is broken (see issue 5427)
+ this.win.setTimeout(function()
+ {
+ while (popup.lastChild)
+ popup.removeChild(popup.lastChild);
+ });
+ },
+
+ onViewMenuShowing: function()
+ {
+ var suspendMarker = this.win.document.getElementById("firebugStatus");
+
+ // Check whether Firebug is open
+ var open = false;
+ if (this.win.Firebug.chrome)
+ {
+ var fbContentBox = this.win.Firebug.chrome.$("fbContentBox");
+ open = fbContentBox.getAttribute("collapsed") == "true" ? false : true;
+ }
+
+ var firebugViewMenuItem = this.win.document.
+ getElementById("menu_firebug_viewToggleFirebug");
+ firebugViewMenuItem.setAttribute("checked", open);
+ },
+
+ onPositionPopupShowing: function(popup)
+ {
+ while (popup.lastChild)
+ popup.removeChild(popup.lastChild);
+
+ // Load Firebug before the position is changed.
+ var oncommand = "Firebug.browserOverlay.startFirebug(function(){" +
+ "Firebug.chrome.setPosition('%pos%')" + "})";
+
+ var items = [];
+ var currPos = Options.get("framePosition");
+
+ var positions = ["detached", "top", "bottom", "left", "right"];
+ for (var i=0; i<positions.length; i++)
+ {
+ var pos = positions[i];
+ var label = pos.charAt(0).toUpperCase() + pos.slice(1);
+
+ var item = $menuitem(this.doc, {
+ label: Locale.$STR("firebug.menu." + label),
+ tooltiptext: Locale.$STR("firebug.menu.tip." + label),
+ type: "radio",
+ oncommand: oncommand.replace("%pos%", pos),
+ checked: (currPos == pos)
+ });
+
+ if (pos == "detached")
+ items.key = "key_firebug_detachFirebug";
+
+ popup.appendChild(item);
+ }
+
+ return true;
+ },
+
+ openAboutDialog: function()
+ {
+ var self = this;
+
+ // Firefox 4.0+
+ Cu["import"]("resource://gre/modules/AddonManager.jsm");
+ this.win.AddonManager.getAddonByID("firebug at software.joehewitt.com", function(addon)
+ {
+ self.win.openDialog("chrome://mozapps/content/extensions/about.xul", "",
+ "chrome,centerscreen,modal", addon);
+ });
+ },
+
+ setPosition: function(newPosition)
+ {
+ // todo
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Firebug Version
+
+ getVersion: function()
+ {
+ var versionURL = "chrome://firebug/content/branch.properties";
+ var ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
+
+ var channel = ioService.newChannel(versionURL, null, null);
+ var input = channel.open();
+ var sis = Cc["@mozilla.org/scriptableinputstream;1"].
+ createInstance(Ci.nsIScriptableInputStream);
+ sis.init(input);
+
+ var content = sis.readBytes(input.available());
+ sis.close();
+
+ var m = /RELEASE=(.*)/.exec(content);
+ if (m)
+ var release = m[1];
+ else
+ return "no RELEASE in " + versionURL;
+
+ m = /VERSION=(.*)/.exec(content);
+ if (m)
+ var version = m[1];
+ else
+ return "no VERSION in " + versionURL;
+
+ return version+""+release;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // External Editors
+
+ onEditorsShowing: function(popup)
+ {
+ var self = this;
+ this.startFirebug(function()
+ {
+ self.win.Firebug.ExternalEditors.onEditorsShowing(popup);
+ });
+
+ return true;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Page Context Menu Overlay
+
+ loadContextMenuOverlay: function()
+ {
+ var contextMenu = this.win.nsContextMenu;
+ if (typeof(contextMenu) == "undefined")
+ return;
+
+ // isTargetAFormControl is removed, see:
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=433168
+ if (typeof(contextMenu.prototype.isTargetAFormControl) != "undefined")
+ {
+ var setTargetOriginal = this.setTargetOriginal = contextMenu.prototype.setTarget;
+ contextMenu.prototype.setTarget = function(aNode, aRangeParent, aRangeOffset)
+ {
+ setTargetOriginal.apply(this, arguments);
+
+ if (this.isTargetAFormControl(aNode))
+ this.shouldDisplay = true;
+ };
+ }
+
+ // Hide built-in inspector if the pref says so.
+ var initItemsOriginal = this.initItemsOriginal = contextMenu.prototype.initItems;
+ contextMenu.prototype.initItems = function()
+ {
+ initItemsOriginal.apply(this, arguments);
+
+ // Hide built-in inspector menu item if the pref "extensions.firebug.hideDefaultInspector"
+ // says so. Note that there is also built-in preference "devtools.inspector.enable" that
+ // can be used for the same purpose.
+ var hideInspect = Options.get("hideDefaultInspector");
+ if (hideInspect)
+ {
+ this.showItem("inspect-separator", false);
+ this.showItem("context-inspect", false);
+ }
+ };
+ },
+
+ unloadContextMenuOverlay: function()
+ {
+ var contextMenu = this.win.nsContextMenu;
+ if (typeof(contextMenu) == "undefined")
+ return;
+
+ if (this.setTargetOriginal)
+ contextMenu.prototype.setTarget = this.setTargetOriginal;
+
+ if (this.initItemsOriginal)
+ contextMenu.prototype.initItems = this.initItemsOriginal;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // First Run Page
+
+ loadFirstRunPage: function(reason)
+ {
+ if (this.checkFirebugVersion(Options.get("currentVersion")) <= 0)
+ return;
+
+ // Do not show the first run page when Firebug is being updated. It'll be displayed
+ // the next time the browser is restarted
+ // # ADDON_UPGRADE == 7
+ if (reason == 7)
+ return;
+
+ // Open the page in the top most window, so the user can see it immediately.
+ var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
+ if (wm.getMostRecentWindow("navigator:browser") == this.win.top)
+ {
+ // Update the preference to make sure the page is not displayed again.
+ // To avoid being annoying when Firefox crashes, forcibly save it, too.
+ var version = this.getVersion();
+ Options.set("currentVersion", version);
+
+ if (Options.get("showFirstRunPage"))
+ {
+ var self = this;
+ var timeout = this.win.setTimeout(function()
+ {
+ if (self.win.closed)
+ return;
+
+ self.openFirstRunPage(self.win);
+ }, 1000);
+
+ this.win.addEventListener("unload", function()
+ {
+ self.win.clearTimeout(timeout);
+ }, false);
+ }
+ }
+ },
+
+ openFirstRunPage: function(win)
+ {
+ var version = this.getVersion();
+ var url = firstRunPage + version;
+
+ var browser = win.gBrowser;
+ if (!browser)
+ {
+ FBTrace.sysout("browserOverlay.openFirstRunPage; ERROR there is no gBrowser!");
+ return;
+ }
+
+ // Open the firstRunPage in background
+ /*gBrowser.selectedTab = */browser.addTab(url, null, null, null);
+
+ // Make sure prefs are stored, otherwise the firstRunPage would be displayed
+ // again if Firefox crashes.
+ this.win.setTimeout(function()
+ {
+ Options.forceSave();
+ }, 400);
+ },
+
+ // xxxsz: Can't System.checkFirebugVersion() be used for that?
+ checkFirebugVersion: function(currentVersion)
+ {
+ if (!currentVersion)
+ return 1;
+
+ var version = this.getVersion();
+
+ // Use Firefox comparator service
+ var versionChecker = Xpcom.CCSV("@mozilla.org/xpcom/version-comparator;1",
+ "nsIVersionComparator");
+
+ return versionChecker.compare(version, currentVersion);
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return BrowserOverlay;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/firefox/browserOverlayLib.js b/content/firebug/firefox/browserOverlayLib.js
index 93e8ccc..b2b9e25 100644
--- a/content/firebug/firefox/browserOverlayLib.js
+++ b/content/firebug/firefox/browserOverlayLib.js
@@ -1,277 +1,277 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/locale",
-],
-function(FBTrace, Locale) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-// Overlay Helpers
-
-var BrowserOverlayLib =
-{
- $: function(doc, id)
- {
- return doc.getElementById(id);
- },
-
- $$: function(doc, selector)
- {
- return doc.querySelectorAll(selector);
- },
-
- $el: function(doc, name, attributes, children, parent)
- {
- if (!(doc instanceof Ci.nsIDOMDocument))
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("browserOvelayLib.$el; No document!");
- return;
- }
-
- attributes = attributes || {};
-
- if (!Array.isArray(children) && !parent)
- {
- parent = children;
- children = null;
- }
-
- // localize
- if (attributes.label)
- attributes.label = Locale.$STR(attributes.label);
-
- if (attributes.tooltiptext)
- attributes.tooltiptext = Locale.$STR(attributes.tooltiptext);
-
- // persist
- if (attributes.persist)
- updatePersistedValues(doc, attributes);
-
- var el = doc.createElement(name);
- for (var a in attributes)
- el.setAttribute(a, attributes[a]);
-
- for (var i=0; children && i<children.length; i++)
- el.appendChild(children[i]);
-
- if (parent)
- {
- if (attributes.position)
- parent.insertBefore(el, parent.children[attributes.position - 1]);
- else
- parent.appendChild(el);
-
- // Mark to remove when Firebug is uninstalled.
- el.setAttribute("firebugRootNode", true);
- }
-
- return el;
- },
-
- $command: function(doc, id, oncommand, arg)
- {
- // Wrap the command within a startFirebug call. If Firebug isn't yet loaded
- // this will force it to load.
- oncommand = "Firebug.browserOverlay.startFirebug(function(){" + oncommand + "})";
- if (arg)
- oncommand = "void function(arg){" + oncommand + "}(" + arg + ")";
-
- return this.$el(doc, "command", {
- id: id,
- oncommand: oncommand
- }, this.$(doc, "mainCommandSet"));
- },
-
- $key: function(doc, id, key, modifiers, command, position)
- {
- var attributes = {
- id: id,
- modifiers: modifiers,
- command: command,
- position: position
- };
-
- attributes[KeyEvent["DOM_" + key] ? "keycode" : "key"] = key;
-
- return this.$el(doc, "key", attributes, $(doc, "mainKeyset"));
- },
-
- $menupopup: function(doc, attributes, children, parent)
- {
- return this.$el(doc, "menupopup", attributes, children, parent);
- },
-
- $menu: function(doc, attrs, children)
- {
- return this.$el(doc, "menu", attrs, children);
- },
-
- $menuseparator: function(doc, attrs)
- {
- return this.$el(doc, "menuseparator", attrs);
- },
-
- $menuitem: function(doc, attrs)
- {
- return this.$el(doc, "menuitem", attrs);
- },
-
- $splitmenu: function(doc, attrs, children)
- {
- return this.$el(doc, "splitmenu", attrs, children);
- },
-
- $menupopupOverlay: function(doc, parent, children, attributes)
- {
- if (!parent)
- return;
-
- attributes = attributes || {};
- for (var a in attributes)
- parent.setAttribute(a, attributes[a]);
-
- for (var i=0; i<children.length; ++i)
- {
- var child = children[i];
- var beforeEl = null;
-
- if (child.getAttribute("position"))
- {
- var pos = child.getAttribute("position");
- beforeEl = parent.children[pos - 1];
- }
- else if (child.getAttribute("insertbefore"))
- {
- var ids = child.getAttribute("insertbefore").split(",");
- for (var j=0; j < ids.length; ++j)
- {
- beforeEl = parent.querySelector("#" + ids[j]);
- if (beforeEl)
- break;
- }
- }
- else if (child.getAttribute("insertafter"))
- {
- var ids = child.getAttribute("insertafter").split(",");
- for (var j=0; j < ids.length; ++j)
- {
- beforeEl = parent.querySelector("#" + ids[j]);
- if (beforeEl)
- break;
- }
- if (beforeEl)
- beforeEl = beforeEl.nextSibling;
- }
-
- if (beforeEl)
- parent.insertBefore(child, beforeEl);
- else
- parent.appendChild(child);
-
- // Mark the inserted node to remove it when Firebug is uninstalled.
- child.setAttribute("firebugRootNode", true);
- }
- },
-
- $toolbarButton: function(doc, id, attrs, children, defaultPos)
- {
- attrs["class"] = "toolbarbutton-1";
- attrs.firebugRootNode = true;
- attrs.id = id;
-
- // in seamonkey gNavToolbox is null onload
- this.$el(doc, "toolbarbutton", attrs, children,
- (doc.defaultView.gNavToolbox || this.$(doc, "navigator-toolbox")).palette);
-
- var selector = "[currentset^='" + id + ",'],[currentset*='," + id +
- ",'],[currentset$='," + id + "']";
-
- var toolbar = doc.querySelector(selector);
- if (!toolbar)
- return; // todo defaultPos
-
- var currentset = toolbar.getAttribute("currentset").split(",");
- var i = currentset.indexOf(id) + 1;
-
- var len = currentset.length;
- var beforeEl = null;
- while (i < len && !(beforeEl = this.$(doc, currentset[i])))
- i++;
-
- return toolbar.insertItem(id, beforeEl);
- },
-
- $tooltip: function(doc, attrs, children)
- {
- return this.$el(doc, "tooltip", attrs, children);
- },
-
- $label: function(doc, attrs)
- {
- return this.$el(doc, "label", attrs);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Stylesheets & Scripts
-
- $stylesheet: function(doc, href)
- {
- var s = doc.createProcessingInstruction("xml-stylesheet", 'href="' + href + '"');
- doc.insertBefore(s, doc.documentElement);
- return s;
- },
-
- $script: function(doc, src)
- {
- var script = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script");
- script.src = src;
- script.type = "text/javascript";
- script.setAttribute("firebugRootNode", true);
- doc.documentElement.appendChild(script);
- }
-};
-
-// ********************************************************************************************* //
-// Helpers
-
-function updatePersistedValues(doc, options)
-{
- var persist = options.persist.split(",");
- var id = options.id;
- var RDF = Cc["@mozilla.org/rdf/rdf-service;1"].getService(Ci.nsIRDFService);
- var store = doc.defaultView.PlacesUIUtils.localStore; //this.RDF.GetDataSource("rdf:local-store");
- var root = RDF.GetResource("chrome://browser/content/browser.xul#" + id);
-
- var getPersist = function getPersist(aProperty)
- {
- var property = RDF.GetResource(aProperty);
- var target = store.GetTarget(root, property, true);
-
- if (target instanceof Ci.nsIRDFLiteral)
- return target.Value;
- };
-
- for (var i=0; i<persist.length; i++)
- {
- var attr = persist[i];
- var val = getPersist(attr);
- if (val)
- options[attr] = val;
- }
-}
-
-// ********************************************************************************************* //
-// Registration
-
-return BrowserOverlayLib;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/locale",
+],
+function(FBTrace, Locale) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+// Overlay Helpers
+
+var BrowserOverlayLib =
+{
+ $: function(doc, id)
+ {
+ return doc.getElementById(id);
+ },
+
+ $$: function(doc, selector)
+ {
+ return doc.querySelectorAll(selector);
+ },
+
+ $el: function(doc, name, attributes, children, parent)
+ {
+ if (!(doc instanceof Ci.nsIDOMDocument))
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("browserOvelayLib.$el; No document!");
+ return;
+ }
+
+ attributes = attributes || {};
+
+ if (!Array.isArray(children) && !parent)
+ {
+ parent = children;
+ children = null;
+ }
+
+ // localize
+ if (attributes.label)
+ attributes.label = Locale.$STR(attributes.label);
+
+ if (attributes.tooltiptext)
+ attributes.tooltiptext = Locale.$STR(attributes.tooltiptext);
+
+ // persist
+ if (attributes.persist)
+ updatePersistedValues(doc, attributes);
+
+ var el = doc.createElement(name);
+ for (var a in attributes)
+ el.setAttribute(a, attributes[a]);
+
+ for (var i=0; children && i<children.length; i++)
+ el.appendChild(children[i]);
+
+ if (parent)
+ {
+ if (attributes.position)
+ parent.insertBefore(el, parent.children[attributes.position - 1]);
+ else
+ parent.appendChild(el);
+
+ // Mark to remove when Firebug is uninstalled.
+ el.setAttribute("firebugRootNode", true);
+ }
+
+ return el;
+ },
+
+ $command: function(doc, id, oncommand, arg)
+ {
+ // Wrap the command within a startFirebug call. If Firebug isn't yet loaded
+ // this will force it to load.
+ oncommand = "Firebug.browserOverlay.startFirebug(function(){" + oncommand + "})";
+ if (arg)
+ oncommand = "void function(arg){" + oncommand + "}(" + arg + ")";
+
+ return this.$el(doc, "command", {
+ id: id,
+ oncommand: oncommand
+ }, this.$(doc, "mainCommandSet"));
+ },
+
+ $key: function(doc, id, key, modifiers, command, position)
+ {
+ var attributes = {
+ id: id,
+ modifiers: modifiers,
+ command: command,
+ position: position
+ };
+
+ attributes[KeyEvent["DOM_" + key] ? "keycode" : "key"] = key;
+
+ return this.$el(doc, "key", attributes, $(doc, "mainKeyset"));
+ },
+
+ $menupopup: function(doc, attributes, children, parent)
+ {
+ return this.$el(doc, "menupopup", attributes, children, parent);
+ },
+
+ $menu: function(doc, attrs, children)
+ {
+ return this.$el(doc, "menu", attrs, children);
+ },
+
+ $menuseparator: function(doc, attrs)
+ {
+ return this.$el(doc, "menuseparator", attrs);
+ },
+
+ $menuitem: function(doc, attrs)
+ {
+ return this.$el(doc, "menuitem", attrs);
+ },
+
+ $splitmenu: function(doc, attrs, children)
+ {
+ return this.$el(doc, "splitmenu", attrs, children);
+ },
+
+ $menupopupOverlay: function(doc, parent, children, attributes)
+ {
+ if (!parent)
+ return;
+
+ attributes = attributes || {};
+ for (var a in attributes)
+ parent.setAttribute(a, attributes[a]);
+
+ for (var i=0; i<children.length; ++i)
+ {
+ var child = children[i];
+ var beforeEl = null;
+
+ if (child.getAttribute("position"))
+ {
+ var pos = child.getAttribute("position");
+ beforeEl = parent.children[pos - 1];
+ }
+ else if (child.getAttribute("insertbefore"))
+ {
+ var ids = child.getAttribute("insertbefore").split(",");
+ for (var j=0; j < ids.length; ++j)
+ {
+ beforeEl = parent.querySelector("#" + ids[j]);
+ if (beforeEl)
+ break;
+ }
+ }
+ else if (child.getAttribute("insertafter"))
+ {
+ var ids = child.getAttribute("insertafter").split(",");
+ for (var j=0; j < ids.length; ++j)
+ {
+ beforeEl = parent.querySelector("#" + ids[j]);
+ if (beforeEl)
+ break;
+ }
+ if (beforeEl)
+ beforeEl = beforeEl.nextSibling;
+ }
+
+ if (beforeEl)
+ parent.insertBefore(child, beforeEl);
+ else
+ parent.appendChild(child);
+
+ // Mark the inserted node to remove it when Firebug is uninstalled.
+ child.setAttribute("firebugRootNode", true);
+ }
+ },
+
+ $toolbarButton: function(doc, id, attrs, children, defaultPos)
+ {
+ attrs["class"] = "toolbarbutton-1";
+ attrs.firebugRootNode = true;
+ attrs.id = id;
+
+ // in seamonkey gNavToolbox is null onload
+ this.$el(doc, "toolbarbutton", attrs, children,
+ (doc.defaultView.gNavToolbox || this.$(doc, "navigator-toolbox")).palette);
+
+ var selector = "[currentset^='" + id + ",'],[currentset*='," + id +
+ ",'],[currentset$='," + id + "']";
+
+ var toolbar = doc.querySelector(selector);
+ if (!toolbar)
+ return; // todo defaultPos
+
+ var currentset = toolbar.getAttribute("currentset").split(",");
+ var i = currentset.indexOf(id) + 1;
+
+ var len = currentset.length;
+ var beforeEl = null;
+ while (i < len && !(beforeEl = this.$(doc, currentset[i])))
+ i++;
+
+ return toolbar.insertItem(id, beforeEl);
+ },
+
+ $tooltip: function(doc, attrs, children)
+ {
+ return this.$el(doc, "tooltip", attrs, children);
+ },
+
+ $label: function(doc, attrs)
+ {
+ return this.$el(doc, "label", attrs);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Stylesheets & Scripts
+
+ $stylesheet: function(doc, href)
+ {
+ var s = doc.createProcessingInstruction("xml-stylesheet", 'href="' + href + '"');
+ doc.insertBefore(s, doc.documentElement);
+ return s;
+ },
+
+ $script: function(doc, src)
+ {
+ var script = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script");
+ script.src = src;
+ script.type = "text/javascript";
+ script.setAttribute("firebugRootNode", true);
+ doc.documentElement.appendChild(script);
+ }
+};
+
+// ********************************************************************************************* //
+// Helpers
+
+function updatePersistedValues(doc, options)
+{
+ var persist = options.persist.split(",");
+ var id = options.id;
+ var RDF = Cc["@mozilla.org/rdf/rdf-service;1"].getService(Ci.nsIRDFService);
+ var store = doc.defaultView.PlacesUIUtils.localStore; //this.RDF.GetDataSource("rdf:local-store");
+ var root = RDF.GetResource("chrome://browser/content/browser.xul#" + id);
+
+ var getPersist = function getPersist(aProperty)
+ {
+ var property = RDF.GetResource(aProperty);
+ var target = store.GetTarget(root, property, true);
+
+ if (target instanceof Ci.nsIRDFLiteral)
+ return target.Value;
+ };
+
+ for (var i=0; i<persist.length; i++)
+ {
+ var attr = persist[i];
+ var val = getPersist(attr);
+ if (val)
+ options[attr] = val;
+ }
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return BrowserOverlayLib;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/firefox/browserToolbar.js b/content/firebug/firefox/browserToolbar.js
index e3bb146..4d2d709 100644
--- a/content/firebug/firefox/browserToolbar.js
+++ b/content/firebug/firefox/browserToolbar.js
@@ -1,139 +1,139 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/options",
- "firebug/lib/locale",
- "firebug/firefox/browserOverlayLib",
-],
-function(FBTrace, Options, Locale, BrowserOverlayLib) {
-with (BrowserOverlayLib) {
-
-// ********************************************************************************************* //
-// Constants
-
-// ********************************************************************************************* //
-// Firefox Toolbar Buttons
-
-var BrowserToolbar =
-{
- overlay: function(doc, version)
- {
- this.overlayToolbarButtons(doc, version);
- this.customizeToolbar(doc);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Firebug Start Button Popup Menu
-
- overlayToolbarButtons: function(doc, version)
- {
- $toolbarButton(doc, "firebug-inspectorButton", {
- label: "firebug.Inspect",
- tooltiptext: "firebug.InspectElement",
- observes: "cmd_firebug_toggleInspecting",
- // Needed for the 'Customize Toolbar' dialog
- style: "list-style-image: url(chrome://firebug/skin/inspect.png); " +
- "-moz-image-region: rect(0, 16px, 16px, 0);"
- });
-
- // Start Button Tooltip. As soon as Firebug is fully loaded, the tooltip content will be
- // generated by firebug/firefox/start-button/startButtonOverlay module.
- $menupopupOverlay(doc, $(doc, "mainPopupSet"), [
- $tooltip(doc, {
- "class": "firebugButtonTooltip",
- id: "firebug-buttonTooltip",
- orient: "vertical",
- }, [
- $label(doc, {
- "class": "version",
- "value": "Firebug " + version
- }),
- $label(doc, {
- "class": "status",
- "value": Locale.$STR("startbutton.tip.deactivated")
- })
- ])
- ]);
-
- // TODO: why contextmenu doesn't work without cloning
- $toolbarButton(doc, "firebug-button", {
- label: "firebug.Firebug",
- tooltip: "firebug-buttonTooltip",
- type: "menu-button",
- command: "cmd_firebug_toggleFirebug",
- contextmenu: "fbStatusContextMenu",
- observes: "firebugStatus",
- // Needed for the 'Customize Toolbar' dialog
- style: "list-style-image: url(chrome://firebug/skin/firebug16.png); " +
- "-moz-image-region: rect(0, 16px, 16px, 0);"
- }, [$(doc, "fbStatusContextMenu").cloneNode(true)]);
- },
-
- customizeToolbar: function(doc)
- {
- // Appends Firebug start button into Firefox toolbar automatically after installation.
- // The button is appended only once - if the user removes it, it isn't appended again.
- // TODO: merge into $toolbarButton?
- // toolbarpalette check is for seamonkey, where it is in the document
- if ((!$(doc, "firebug-button") ||
- $(doc, "firebug-button").parentNode.tagName == "toolbarpalette")
- && !Options.get("toolbarCustomizationDone"))
- {
- Options.set("toolbarCustomizationDone", true);
-
- // Get the current navigation bar button set (a string of button IDs) and append
- // ID of the Firebug start button into it.
- var startButtonId = "firebug-button";
- var navBarId = "nav-bar";
- var navBar = $(doc, navBarId);
- var currentSet = navBar.currentSet;
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("Startbutton; curSet (before modification): " + currentSet);
-
- // Append only if the button is not already there.
- var curSet = currentSet.split(",");
- if (curSet.indexOf(startButtonId) == -1)
- {
- navBar.insertItem(startButtonId);
- navBar.setAttribute("currentset", navBar.currentSet);
- navBar.ownerDocument.persist("nav-bar", "currentset");
-
- // Check whether insertItem really works
- var curSet = navBar.currentSet.split(",");
- if (curSet.indexOf(startButtonId) == -1)
- FBTrace.sysout("Startbutton; navBar.insertItem doesn't work", curSet);
-
- if (FBTrace.DBG_INITIALIZE)
- {
- FBTrace.sysout("Startbutton; curSet (after modification): " +
- navBar.currentSet);
- }
-
- try
- {
- // The current global scope is browser.xul.
- BrowserToolboxCustomizeDone(true);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("startButton; appendToToolbar EXCEPTION " + e, e);
- }
- }
-
- // Don't forget to show the navigation bar - just in case it's hidden.
- navBar.removeAttribute("collapsed");
- doc.persist(navBarId, "collapsed");
- }
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return BrowserToolbar;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/options",
+ "firebug/lib/locale",
+ "firebug/firefox/browserOverlayLib",
+],
+function(FBTrace, Options, Locale, BrowserOverlayLib) {
+with (BrowserOverlayLib) {
+
+// ********************************************************************************************* //
+// Constants
+
+// ********************************************************************************************* //
+// Firefox Toolbar Buttons
+
+var BrowserToolbar =
+{
+ overlay: function(doc, version)
+ {
+ this.overlayToolbarButtons(doc, version);
+ this.customizeToolbar(doc);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Firebug Start Button Popup Menu
+
+ overlayToolbarButtons: function(doc, version)
+ {
+ $toolbarButton(doc, "firebug-inspectorButton", {
+ label: "firebug.Inspect",
+ tooltiptext: "firebug.InspectElement",
+ observes: "cmd_firebug_toggleInspecting",
+ // Needed for the 'Customize Toolbar' dialog
+ style: "list-style-image: url(chrome://firebug/skin/inspect.png); " +
+ "-moz-image-region: rect(0, 16px, 16px, 0);"
+ });
+
+ // Start Button Tooltip. As soon as Firebug is fully loaded, the tooltip content will be
+ // generated by firebug/firefox/start-button/startButtonOverlay module.
+ $menupopupOverlay(doc, $(doc, "mainPopupSet"), [
+ $tooltip(doc, {
+ "class": "firebugButtonTooltip",
+ id: "firebug-buttonTooltip",
+ orient: "vertical",
+ }, [
+ $label(doc, {
+ "class": "version",
+ "value": "Firebug " + version
+ }),
+ $label(doc, {
+ "class": "status",
+ "value": Locale.$STR("startbutton.tip.deactivated")
+ })
+ ])
+ ]);
+
+ // TODO: why contextmenu doesn't work without cloning
+ $toolbarButton(doc, "firebug-button", {
+ label: "firebug.Firebug",
+ tooltip: "firebug-buttonTooltip",
+ type: "menu-button",
+ command: "cmd_firebug_toggleFirebug",
+ contextmenu: "fbStatusContextMenu",
+ observes: "firebugStatus",
+ // Needed for the 'Customize Toolbar' dialog
+ style: "list-style-image: url(chrome://firebug/skin/firebug16.png); " +
+ "-moz-image-region: rect(0, 16px, 16px, 0);"
+ }, [$(doc, "fbStatusContextMenu").cloneNode(true)]);
+ },
+
+ customizeToolbar: function(doc)
+ {
+ // Appends Firebug start button into Firefox toolbar automatically after installation.
+ // The button is appended only once - if the user removes it, it isn't appended again.
+ // TODO: merge into $toolbarButton?
+ // toolbarpalette check is for seamonkey, where it is in the document
+ if ((!$(doc, "firebug-button") ||
+ $(doc, "firebug-button").parentNode.tagName == "toolbarpalette")
+ && !Options.get("toolbarCustomizationDone"))
+ {
+ Options.set("toolbarCustomizationDone", true);
+
+ // Get the current navigation bar button set (a string of button IDs) and append
+ // ID of the Firebug start button into it.
+ var startButtonId = "firebug-button";
+ var navBarId = "nav-bar";
+ var navBar = $(doc, navBarId);
+ var currentSet = navBar.currentSet;
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("Startbutton; curSet (before modification): " + currentSet);
+
+ // Append only if the button is not already there.
+ var curSet = currentSet.split(",");
+ if (curSet.indexOf(startButtonId) == -1)
+ {
+ navBar.insertItem(startButtonId);
+ navBar.setAttribute("currentset", navBar.currentSet);
+ navBar.ownerDocument.persist("nav-bar", "currentset");
+
+ // Check whether insertItem really works
+ var curSet = navBar.currentSet.split(",");
+ if (curSet.indexOf(startButtonId) == -1)
+ FBTrace.sysout("Startbutton; navBar.insertItem doesn't work", curSet);
+
+ if (FBTrace.DBG_INITIALIZE)
+ {
+ FBTrace.sysout("Startbutton; curSet (after modification): " +
+ navBar.currentSet);
+ }
+
+ try
+ {
+ // The current global scope is browser.xul.
+ BrowserToolboxCustomizeDone(true);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("startButton; appendToToolbar EXCEPTION " + e, e);
+ }
+ }
+
+ // Don't forget to show the navigation bar - just in case it's hidden.
+ navBar.removeAttribute("collapsed");
+ doc.persist(navBarId, "collapsed");
+ }
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return BrowserToolbar;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/firefox/customizeShortcuts.js b/content/firebug/firefox/customizeShortcuts.js
index 619375d..9c3bbcc 100644
--- a/content/firebug/firefox/customizeShortcuts.js
+++ b/content/firebug/firefox/customizeShortcuts.js
@@ -1,311 +1,311 @@
-/* See license.txt for terms of usage */
-/* Reused code from Keyconfig by Dorando: http://mozilla.dorando.at/keyconfig.xpi*/
-
-// ************************************************************************************************
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-Components.utils.import("resource://gre/modules/Services.jsm");
-
-var branch = Services.prefs.getBranch("extensions.firebug.key.shortcut.");
-var defaultBranch = Services.prefs.getDefaultBranch("extensions.firebug.key.shortcut.");
-
-// Initialized from window parameters.
-var FBL;
-var FBTrace;
-var Locale;
-
-// Global variables used by this dialog.
-var shortcutNames = null;
-var gVKNames = [];
-var gLocaleKeys = [];
-var gPlatformKeys = new Object();
-var updatedShortcuts = {};
-var modified = false;
-var mustBeKeyChars = {
- VK_SEMICOLON : ";",
- VK_EQUALS : "=",
- VK_MULTIPLY : "*",
- VK_ADD : "+",
- VK_SUBTRACT : "-",
- VK_DECIMAL : ".",
- VK_DIVIDE : "/",
- VK_COMMA : ",",
- VK_PERIOD : ".",
- VK_SLASH : "/",
- VK_BACK_QUOTE : "`",
- VK_OPEN_BRACKET : "[",
- VK_BACK_SLASH : "\\",
- VK_CLOSE_BRACKET : "]",
- VK_QUOTE : "'"
-};
-
-// ************************************************************************************************
-// Implemantation
-
-function init()
-{
- var args = window.arguments[0];
- FBL = args.FBL;
- FBTrace = args.FBTrace;
- Locale = FBL;
-
- setKeyInfo();
- shortcutNames = branch.getChildList("", {});
- shortcutNames.sort();
- shortcutNames.forEach(addShortcutRow);
- setHandlers();
- document.title = Locale.$STR("customizeShortcuts");
-
- if (FBTrace.DBG_SHORTCUTS)
- FBTrace.sysout("shortcuts.init; Customize Shortcuts dialog initialized.");
-}
-
-function setKeyInfo()
-{
- gLocaleKeys = document.getElementById("localeKeys");
- var platformKeys = document.getElementById("platformKeys");
- gPlatformKeys.shift = Locale.$STR("VK_SHIFT", platformKeys);
- gPlatformKeys.meta = Locale.$STR("VK_META", platformKeys);
- gPlatformKeys.alt = Locale.$STR("VK_ALT", platformKeys);
- gPlatformKeys.ctrl = Locale.$STR("VK_CONTROL", platformKeys);
- gPlatformKeys.sep = Locale.$STR("MODIFIER_SEPARATOR", platformKeys);
-
- switch (Services.prefs.getIntPref("ui.key.accelKey"))
- {
- case KeyEvent.DOM_VK_CONTROL:
- gPlatformKeys.accel = gPlatformKeys.ctrl;
- break;
- case KeyEvent.DOM_VK_ALT:
- gPlatformKeys.accel = gPlatformKeys.alt;
- break;
- case KeyEvent.DOM_VK_META:
- gPlatformKeys.accel = gPlatformKeys.meta;
- break;
- default:
- gPlatformKeys.accel = (window.navigator.platform.search("Mac") == 0 ? gPlatformKeys.meta : gPlatformKeys.ctrl);
- }
-
- for (var property in KeyEvent)
- gVKNames[KeyEvent[property]] = property.replace("DOM_", "");
- gVKNames[8] = "VK_BACK";
-}
-
-function setHandlers()
-{
- var i;
- var shortcutSinks = document.getElementsByClassName("shortcutSink");
- for (i = 0; i < shortcutSinks.length; i++)
- shortcutSinks[i].addEventListener("keydown", recognizeShortcut, false);
-
- var resetBtns = document.getElementsByClassName("shortcutResetBtn");
- for (i = 0; i < resetBtns.length; i++)
- resetBtns[i].addEventListener("command", handleResetBtn, false);
-}
-
-function saveChanges()
-{
- if (!modified)
- return true;
-
- shortcutNames.forEach(saveShortcut);
-
- var e = Services.wm.getEnumerator("navigator:browser");
- while (e.hasMoreElements())
- {
- var fbug = e.getNext().Firebug;
- fbug && fbug.ShortcutsModel.initShortcuts();
- }
- return true;
-}
-
-function saveShortcut(shortcutId, index, array)
-{
- if (shortcutId in updatedShortcuts)
- branch.setCharPref(shortcutId, updatedShortcuts[shortcutId]);
-}
-
-function handleResetBtn(event)
-{
- var element = event.target.id.replace("_reset", "");
- if (branch.prefHasUserValue(element))
- {
- branch.clearUserPref(element);
- modified = true;
- }
-
- event.target.hidden = true;
- var textbox = document.getElementById(element + "_shortcut");
- if (textbox)
- textbox.value = getHumanShortcut(element);
-}
-
-function getHumanShortcut(element, getDefault)
-{
- var shortcut = (getDefault ? defaultBranch : branch).getCharPref(element);
- var tokens = shortcut.split(" ");
- var keyCode = tokens.pop();
-
- if (keyCode.length == 1)
- return getFormattedKey(tokens.join(","), keyCode, null);
- else
- return getFormattedKey(tokens.join(","), null, keyCode);
-}
-
-function addShortcutRow(element, index, array)
-{
- // Get key configuration from preference
- var shortcut = getHumanShortcut(element);
- var defaultShortcut = getHumanShortcut(element, true);
- var rows = document.getElementById("shortcutGridRows");
- var row = document.createElement("row");
-
- var label = document.createElement("label");
- // Get the label from firebug.properties
- var labelText = Locale.$STR("firebug.shortcut."+element+".label");
- var tooltipText = Locale.$STR("firebug.shortcut.tip."+element);
-
- // $STR defaults to property name (label) if it's not defined. We don't want that
- if (labelText == "label")
- labelText = element;
- label.setAttribute("value", labelText);
- row.appendChild(label);
-
- var textbox = document.createElement("textbox");
- textbox.id = element + "_shortcut";
- textbox.className = "shortcutSink";
- row.setAttribute("tooltiptext", tooltipText != "tip" ? tooltipText : "");
- textbox.setAttribute("value", shortcut);
- textbox.setAttribute("default_value", defaultShortcut);
- row.appendChild(textbox);
-
- var resetBtn = document.createElement("toolbarbutton");
- resetBtn.id = element + "_reset";
- resetBtn.setAttribute("label", Locale.$STR("a11y.labels.reset"));
- resetBtn.setAttribute("aria-label", Locale.$STRF("a11y.labels.reset_shortcut", [labelText]));
- resetBtn.className = "shortcutResetBtn";
- resetBtn.hidden = defaultShortcut == shortcut;
- row.appendChild(resetBtn);
- rows.appendChild(row);
-}
-
-function recognizeShortcut(event)
-{
- // We're using keydown, so we always start with keycode
- var shortcut = "";
- if ([KeyEvent.DOM_VK_TAB, KeyEvent.DOM_VK_SHIFT, KeyEvent.DOM_VK_CONTROL, KeyEvent.DOM_VK_ALT].
- indexOf(event.keyCode) != -1 ||
- ((!event.shiftKey && !event.altKey && !event.ctrlKey) &&
- [KeyEvent.DOM_VK_RETURN, KeyEvent.DOM_VK_ESCAPE].indexOf(event.keyCode) != -1))
- {
- // Always let tab pass. Let enter & escape pass, if no modifiers are used
- return;
- }
-
- modified = true;
- event.preventDefault();
- event.stopPropagation();
-
- var target = event.target;
-
- // Backspace pressed
- if (event.keyCode == 8 && !event.shiftKey && !event.altKey && !event.ctrlKey)
- {
- updatedShortcuts[target.id.replace("_shortcut", "")] = "";
- target.value = "";
-
- // Update reset button visibility
- target.nextSibling.hidden = false;
-
- return false;
- }
-
- var modifiers = [];
- if (event.altKey)
- modifiers.push("alt");
- if (event.ctrlKey)
- modifiers.push("control");
- if (event.metaKey)
- modifiers.push("meta");
- if (event.shiftKey)
- modifiers.push("shift");
-
- modifiers = modifiers.join(" ");
- var keyConstant = key = null;
-
- keyConstant = gVKNames[event.keyCode];
-
- if (!keyConstant) //should not happen
- return;
-
- // Check if the keycode is actually a printable character
- // 1. Convert some of the punctuation keyConstants (e.g. VK_COMMA) back to actual characters
- if (mustBeKeyChars[keyConstant])
- {
- key = mustBeKeyChars[keyConstant];
- }
- else
- {
- // 2. Detect basic alphanumeric keys
- var keyNameGuess = keyConstant.replace("VK_", "");
- if (keyNameGuess.length == 1)
- key = keyNameGuess.toLowerCase();
- }
-
- if (modifiers.length > 0)
- shortcut += modifiers+" ";
- shortcut += (key ? key : keyConstant);
-
- updatedShortcuts[target.id.replace("_shortcut", "")] = shortcut;
-
- // Show formatted shortcut in textbox
- modifiers = modifiers.replace(" ", ",");
- var formatted = getFormattedKey(modifiers, key, keyConstant);
-
- target.value = formatted;
-
- // Update reset button visibility
- target.nextSibling.hidden = formatted == target.getAttribute("default_value");
- return false;
-}
-
-function getFormattedKey(modifiers, key, keyConstant)
-{
- if ((modifiers == "shift,alt,control,accel" && keyConstant == "VK_SCROLL_LOCK") ||
- (key == "" || (!key && keyConstant == "")))
- {
- return "";
- }
-
- var val = "";
- if (modifiers)
- {
- val = modifiers.replace(/^[\s,]+|[\s,]+$/g, "").split(/[\s,]+/g).join(gPlatformKeys.sep).
- replace("alt", gPlatformKeys.alt).replace("shift", gPlatformKeys.shift).
- replace("control", gPlatformKeys.ctrl).replace("meta", gPlatformKeys.meta).
- replace("accel", gPlatformKeys.accel) +
- gPlatformKeys.sep;
- }
-
- if (key)
- return val += key;
-
- if (keyConstant)
- {
- try
- {
- // See if a localized version for keyConstant exists (F keys, arrow, enter, pgup, etc.)
- val += gLocaleKeys.getString(keyConstant);
- }
- catch (e)
- {
- // Create human friendly alternative ourself
- val += keyConstant.replace("VK_", "").replace("_", " ").toLowerCase();
- }
- }
- return val;
-}
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+/* Reused code from Keyconfig by Dorando: http://mozilla.dorando.at/keyconfig.xpi*/
+
+// ************************************************************************************************
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+Components.utils.import("resource://gre/modules/Services.jsm");
+
+var branch = Services.prefs.getBranch("extensions.firebug.key.shortcut.");
+var defaultBranch = Services.prefs.getDefaultBranch("extensions.firebug.key.shortcut.");
+
+// Initialized from window parameters.
+var FBL;
+var FBTrace;
+var Locale;
+
+// Global variables used by this dialog.
+var shortcutNames = null;
+var gVKNames = [];
+var gLocaleKeys = [];
+var gPlatformKeys = new Object();
+var updatedShortcuts = {};
+var modified = false;
+var mustBeKeyChars = {
+ VK_SEMICOLON : ";",
+ VK_EQUALS : "=",
+ VK_MULTIPLY : "*",
+ VK_ADD : "+",
+ VK_SUBTRACT : "-",
+ VK_DECIMAL : ".",
+ VK_DIVIDE : "/",
+ VK_COMMA : ",",
+ VK_PERIOD : ".",
+ VK_SLASH : "/",
+ VK_BACK_QUOTE : "`",
+ VK_OPEN_BRACKET : "[",
+ VK_BACK_SLASH : "\\",
+ VK_CLOSE_BRACKET : "]",
+ VK_QUOTE : "'"
+};
+
+// ************************************************************************************************
+// Implemantation
+
+function init()
+{
+ var args = window.arguments[0];
+ FBL = args.FBL;
+ FBTrace = args.FBTrace;
+ Locale = FBL;
+
+ setKeyInfo();
+ shortcutNames = branch.getChildList("", {});
+ shortcutNames.sort();
+ shortcutNames.forEach(addShortcutRow);
+ setHandlers();
+ document.title = Locale.$STR("customizeShortcuts");
+
+ if (FBTrace.DBG_SHORTCUTS)
+ FBTrace.sysout("shortcuts.init; Customize Shortcuts dialog initialized.");
+}
+
+function setKeyInfo()
+{
+ gLocaleKeys = document.getElementById("localeKeys");
+ var platformKeys = document.getElementById("platformKeys");
+ gPlatformKeys.shift = Locale.$STR("VK_SHIFT", platformKeys);
+ gPlatformKeys.meta = Locale.$STR("VK_META", platformKeys);
+ gPlatformKeys.alt = Locale.$STR("VK_ALT", platformKeys);
+ gPlatformKeys.ctrl = Locale.$STR("VK_CONTROL", platformKeys);
+ gPlatformKeys.sep = Locale.$STR("MODIFIER_SEPARATOR", platformKeys);
+
+ switch (Services.prefs.getIntPref("ui.key.accelKey"))
+ {
+ case KeyEvent.DOM_VK_CONTROL:
+ gPlatformKeys.accel = gPlatformKeys.ctrl;
+ break;
+ case KeyEvent.DOM_VK_ALT:
+ gPlatformKeys.accel = gPlatformKeys.alt;
+ break;
+ case KeyEvent.DOM_VK_META:
+ gPlatformKeys.accel = gPlatformKeys.meta;
+ break;
+ default:
+ gPlatformKeys.accel = (window.navigator.platform.search("Mac") == 0 ? gPlatformKeys.meta : gPlatformKeys.ctrl);
+ }
+
+ for (var property in KeyEvent)
+ gVKNames[KeyEvent[property]] = property.replace("DOM_", "");
+ gVKNames[8] = "VK_BACK";
+}
+
+function setHandlers()
+{
+ var i;
+ var shortcutSinks = document.getElementsByClassName("shortcutSink");
+ for (i = 0; i < shortcutSinks.length; i++)
+ shortcutSinks[i].addEventListener("keydown", recognizeShortcut, false);
+
+ var resetBtns = document.getElementsByClassName("shortcutResetBtn");
+ for (i = 0; i < resetBtns.length; i++)
+ resetBtns[i].addEventListener("command", handleResetBtn, false);
+}
+
+function saveChanges()
+{
+ if (!modified)
+ return true;
+
+ shortcutNames.forEach(saveShortcut);
+
+ var e = Services.wm.getEnumerator("navigator:browser");
+ while (e.hasMoreElements())
+ {
+ var fbug = e.getNext().Firebug;
+ fbug && fbug.ShortcutsModel.initShortcuts();
+ }
+ return true;
+}
+
+function saveShortcut(shortcutId, index, array)
+{
+ if (shortcutId in updatedShortcuts)
+ branch.setCharPref(shortcutId, updatedShortcuts[shortcutId]);
+}
+
+function handleResetBtn(event)
+{
+ var element = event.target.id.replace("_reset", "");
+ if (branch.prefHasUserValue(element))
+ {
+ branch.clearUserPref(element);
+ modified = true;
+ }
+
+ event.target.hidden = true;
+ var textbox = document.getElementById(element + "_shortcut");
+ if (textbox)
+ textbox.value = getHumanShortcut(element);
+}
+
+function getHumanShortcut(element, getDefault)
+{
+ var shortcut = (getDefault ? defaultBranch : branch).getCharPref(element);
+ var tokens = shortcut.split(" ");
+ var keyCode = tokens.pop();
+
+ if (keyCode.length == 1)
+ return getFormattedKey(tokens.join(","), keyCode, null);
+ else
+ return getFormattedKey(tokens.join(","), null, keyCode);
+}
+
+function addShortcutRow(element, index, array)
+{
+ // Get key configuration from preference
+ var shortcut = getHumanShortcut(element);
+ var defaultShortcut = getHumanShortcut(element, true);
+ var rows = document.getElementById("shortcutGridRows");
+ var row = document.createElement("row");
+
+ var label = document.createElement("label");
+ // Get the label from firebug.properties
+ var labelText = Locale.$STR("firebug.shortcut."+element+".label");
+ var tooltipText = Locale.$STR("firebug.shortcut.tip."+element);
+
+ // $STR defaults to property name (label) if it's not defined. We don't want that
+ if (labelText == "label")
+ labelText = element;
+ label.setAttribute("value", labelText);
+ row.appendChild(label);
+
+ var textbox = document.createElement("textbox");
+ textbox.id = element + "_shortcut";
+ textbox.className = "shortcutSink";
+ row.setAttribute("tooltiptext", tooltipText != "tip" ? tooltipText : "");
+ textbox.setAttribute("value", shortcut);
+ textbox.setAttribute("default_value", defaultShortcut);
+ row.appendChild(textbox);
+
+ var resetBtn = document.createElement("toolbarbutton");
+ resetBtn.id = element + "_reset";
+ resetBtn.setAttribute("label", Locale.$STR("a11y.labels.reset"));
+ resetBtn.setAttribute("aria-label", Locale.$STRF("a11y.labels.reset_shortcut", [labelText]));
+ resetBtn.className = "shortcutResetBtn";
+ resetBtn.hidden = defaultShortcut == shortcut;
+ row.appendChild(resetBtn);
+ rows.appendChild(row);
+}
+
+function recognizeShortcut(event)
+{
+ // We're using keydown, so we always start with keycode
+ var shortcut = "";
+ if ([KeyEvent.DOM_VK_TAB, KeyEvent.DOM_VK_SHIFT, KeyEvent.DOM_VK_CONTROL, KeyEvent.DOM_VK_ALT].
+ indexOf(event.keyCode) != -1 ||
+ ((!event.shiftKey && !event.altKey && !event.ctrlKey) &&
+ [KeyEvent.DOM_VK_RETURN, KeyEvent.DOM_VK_ESCAPE].indexOf(event.keyCode) != -1))
+ {
+ // Always let tab pass. Let enter & escape pass, if no modifiers are used
+ return;
+ }
+
+ modified = true;
+ event.preventDefault();
+ event.stopPropagation();
+
+ var target = event.target;
+
+ // Backspace pressed
+ if (event.keyCode == 8 && !event.shiftKey && !event.altKey && !event.ctrlKey)
+ {
+ updatedShortcuts[target.id.replace("_shortcut", "")] = "";
+ target.value = "";
+
+ // Update reset button visibility
+ target.nextSibling.hidden = false;
+
+ return false;
+ }
+
+ var modifiers = [];
+ if (event.altKey)
+ modifiers.push("alt");
+ if (event.ctrlKey)
+ modifiers.push("control");
+ if (event.metaKey)
+ modifiers.push("meta");
+ if (event.shiftKey)
+ modifiers.push("shift");
+
+ modifiers = modifiers.join(" ");
+ var keyConstant = key = null;
+
+ keyConstant = gVKNames[event.keyCode];
+
+ if (!keyConstant) //should not happen
+ return;
+
+ // Check if the keycode is actually a printable character
+ // 1. Convert some of the punctuation keyConstants (e.g. VK_COMMA) back to actual characters
+ if (mustBeKeyChars[keyConstant])
+ {
+ key = mustBeKeyChars[keyConstant];
+ }
+ else
+ {
+ // 2. Detect basic alphanumeric keys
+ var keyNameGuess = keyConstant.replace("VK_", "");
+ if (keyNameGuess.length == 1)
+ key = keyNameGuess.toLowerCase();
+ }
+
+ if (modifiers.length > 0)
+ shortcut += modifiers+" ";
+ shortcut += (key ? key : keyConstant);
+
+ updatedShortcuts[target.id.replace("_shortcut", "")] = shortcut;
+
+ // Show formatted shortcut in textbox
+ modifiers = modifiers.replace(" ", ",");
+ var formatted = getFormattedKey(modifiers, key, keyConstant);
+
+ target.value = formatted;
+
+ // Update reset button visibility
+ target.nextSibling.hidden = formatted == target.getAttribute("default_value");
+ return false;
+}
+
+function getFormattedKey(modifiers, key, keyConstant)
+{
+ if ((modifiers == "shift,alt,control,accel" && keyConstant == "VK_SCROLL_LOCK") ||
+ (key == "" || (!key && keyConstant == "")))
+ {
+ return "";
+ }
+
+ var val = "";
+ if (modifiers)
+ {
+ val = modifiers.replace(/^[\s,]+|[\s,]+$/g, "").split(/[\s,]+/g).join(gPlatformKeys.sep).
+ replace("alt", gPlatformKeys.alt).replace("shift", gPlatformKeys.shift).
+ replace("control", gPlatformKeys.ctrl).replace("meta", gPlatformKeys.meta).
+ replace("accel", gPlatformKeys.accel) +
+ gPlatformKeys.sep;
+ }
+
+ if (key)
+ return val += key;
+
+ if (keyConstant)
+ {
+ try
+ {
+ // See if a localized version for keyConstant exists (F keys, arrow, enter, pgup, etc.)
+ val += gLocaleKeys.getString(keyConstant);
+ }
+ catch (e)
+ {
+ // Create human friendly alternative ourself
+ val += keyConstant.replace("VK_", "").replace("_", " ").toLowerCase();
+ }
+ }
+ return val;
+}
+
+// ********************************************************************************************* //
diff --git a/content/firebug/firefox/customizeShortcuts.xul b/content/firebug/firefox/customizeShortcuts.xul
index 2a699a1..8de6d9c 100644
--- a/content/firebug/firefox/customizeShortcuts.xul
+++ b/content/firebug/firefox/customizeShortcuts.xul
@@ -1,33 +1,33 @@
-<?xml version="1.0"?>
-<!-- See license.txt for terms of usage -->
-
-<?xml-stylesheet href="chrome://global/skin/global.css"?>
-<?xml-stylesheet href="chrome://firebug/skin/customizeShortcuts.css" ?>
-
-<dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- class="windowDialog"
- id="firebug-customize-keyboard"
- width="400" height="500"
- buttons="accept,cancel"
- onload="init();"
- ondialogaccept="return saveChanges();"
- ondialogcancel="return true;"
- persist="screenX screenY width height">
-
- <script type="application/x-javascript" src="chrome://firebug/content/firefox/customizeShortcuts.js" />
-
- <stringbundleset>
- <stringbundle id="platformKeys" src="chrome://global-platform/locale/platformKeys.properties"/>
- <stringbundle id="localeKeys" src="chrome://global/locale/keys.properties"/>
- </stringbundleset>
-
- <!-- Dialog UI structure (list of registered shortcuts) -->
- <grid flex="1" id="shortcutGrid">
- <columns>
- <column id="labelColumn"/>
- <column flex="1"/>
- <column/>
- </columns>
- <rows id="shortcutGridRows"></rows>
- </grid>
+<?xml version="1.0"?>
+<!-- See license.txt for terms of usage -->
+
+<?xml-stylesheet href="chrome://global/skin/global.css"?>
+<?xml-stylesheet href="chrome://firebug/skin/customizeShortcuts.css" ?>
+
+<dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ class="windowDialog"
+ id="firebug-customize-keyboard"
+ width="400" height="500"
+ buttons="accept,cancel"
+ onload="init();"
+ ondialogaccept="return saveChanges();"
+ ondialogcancel="return true;"
+ persist="screenX screenY width height">
+
+ <script type="application/x-javascript" src="chrome://firebug/content/firefox/customizeShortcuts.js" />
+
+ <stringbundleset>
+ <stringbundle id="platformKeys" src="chrome://global-platform/locale/platformKeys.properties"/>
+ <stringbundle id="localeKeys" src="chrome://global/locale/keys.properties"/>
+ </stringbundleset>
+
+ <!-- Dialog UI structure (list of registered shortcuts) -->
+ <grid flex="1" id="shortcutGrid">
+ <columns>
+ <column id="labelColumn"/>
+ <column flex="1"/>
+ <column/>
+ </columns>
+ <rows id="shortcutGridRows"></rows>
+ </grid>
</dialog>
\ No newline at end of file
diff --git a/content/firebug/firefox/external-editors/changeeditor.js b/content/firebug/firefox/external-editors/changeeditor.js
index ff53e09..2f11d85 100644
--- a/content/firebug/firefox/external-editors/changeeditor.js
+++ b/content/firebug/firefox/external-editors/changeeditor.js
@@ -1,269 +1,269 @@
-/* See license.txt for terms of usage */
-
-// ************************************************************************************************
-// Globals
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-var item;
-var FBL;
-var internalFilefieldTextbox;
-var browseButton;
-
-// browsing for a new file modifies image and label only if they are autogenereted from filename
-var origLabel = "";
-var origImage = null;
-
-function onLoad()
-{
- var args = window.arguments[0];
- item = args.item;
- FBL = args.FBL;
-
- browseButton = document.getElementById("browse-button");
-
- document.getElementById("name").value = item.label;
- if (item.executable)
- {
- origImage = FBL.getIconURLForFile(item.executable);
- try
- {
- var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
- file.initWithPath(item.executable);
- document.getElementById("executable").file = file;
- origLabel = file.leafName.replace(".exe","");
- }
- catch(exc) {}
- }
-
- if (item.cmdline)
- document.getElementById("cmdline").value = item.cmdline;
-
- onChange();
-
- // Localization
- internationalizeUI(document);
-
- window.sizeToContent();
-
- if (document.getAnonymousElementByAttribute && !document.getElementById("executable").file)
- {
- setTimeout(function()
- {
- internalFilefieldTextbox = document.getAnonymousElementByAttribute(
- document.getElementById("executable"), "class", "fileFieldLabel");
-
- if (internalFilefieldTextbox)
- {
- internalFilefieldTextbox.readOnly = false;
- internalFilefieldTextbox.addEventListener("input", function(e) {
- browseButton.disabled = (this.value != "");
- onChange();
- }, false);
- }
- }, 100);
- }
-}
-
-function internationalizeUI(doc)
-{
- var elements = doc.getElementsByClassName("fbInternational");
- var attributes = ["title", "label", "value"];
- for (var i=0; i<elements.length; i++)
- {
- if (elements[i].nodeName == "description")
- {
- var localized = FBL.$STR(elements[i].textContent);
- var parser = Cc["@mozilla.org/xmlextras/domparser;1"].createInstance(Ci.nsIDOMParser);
- var doc = parser.parseFromString("<vbox>" + localized + "</vbox>", "text/xml");
- var root = doc.documentElement;
-
- while(elements[i].firstChild)
- elements[i].removeChild(elements[i].firstChild);
-
- for(var j=0; j<root.childNodes.length; j++)
- {
- // ToDo: Show labels correctly
- // Namespaces are not inherited from doc, so labels
- // are not shown as links
- node = doc.importNode(root.childNodes[j], true);
- elements[i].appendChild(node);
- }
- }
- else
- {
- for(var j=0; j<attributes.length; j++)
- {
- if (elements[i].hasAttribute(attributes[j]))
- FBL.internationalize(elements[i], attributes[j]);
- }
- }
- }
-}
-
-function onAccept()
-{
- item.label = document.getElementById("name").value;
- if (!browseButton.disabled)
- {
- var file = document.getElementById("executable").file;
- item.executable = "";
- if (file)
- item.executable = file.path;
- }
- else
- {
- item.executable = internalFilefieldTextbox.value.replace(/^\s+|\s+$/g, '');
- }
-
- item.cmdline = document.getElementById("cmdline").value;
- if (item.image == origImage)
- item.image = FBL.getIconURLForFile(item.executable);
-
- try
- {
- var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
- file.initWithPath(item.executable);
- if (!file.isExecutable())
- throw "NotAnExecutable";
-
- window.arguments[1].saveChanges = true;
- return true;
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("changeEditor.onAccept; EXCEPTION " + exc, exc);
-
- var promptService = Cc["@mozilla.org/embedcomp/prompt-service;1"].createInstance(
- Ci.nsIPromptService);
-
- if (exc == "NotAnExecutable")
- {
- promptService.alert(null, FBL.$STR("changeEditor.Invalid_Application_Path"),
- FBL.$STR("changeEditor.Path_is_not_an_executable"));
- }
- else
- {
- promptService.alert(null, FBL.$STR("changeEditor.Invalid_Application_Path"),
- FBL.$STR("changeEditor.Application_does_not_exist"));
- }
-
- return false;
- }
-}
-
-function onChange()
-{
- document.documentElement.getButton("accept").disabled = !(
- document.getElementById("name").value && (
- (browseButton.disabled && internalFilefieldTextbox &&
- internalFilefieldTextbox.value &&
- internalFilefieldTextbox.value.replace(/^\s+|\s+$/g, '')) ||
- (!browseButton.disabled && document.getElementById("executable").file)
- )
- );
-}
-
-function onBrowse()
-{
- const Ci = Components.interfaces;
- const nsIFilePicker = Ci.nsIFilePicker;
- var picker = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
- picker.init(window, "", nsIFilePicker.modeOpen);
- picker.appendFilters(nsIFilePicker.filterApps);
-
- if (picker.show() == nsIFilePicker.returnOK && picker.file)
- {
- var nameField = document.getElementById("name");
- var execField = document.getElementById("executable");
- execField.file = picker.file;
-
- if (internalFilefieldTextbox)
- internalFilefieldTextbox.readOnly = true;
-
- if (nameField.value == origLabel || nameField.value == "")
- origLabel = nameField.value = execField.file.leafName.replace(".exe","");
-
- onChange();
- return true;
- }
-
- return false;
-}
-
-function insertText(text, whole)
-{
- var textbox = document.getElementById("cmdline");
- if(whole)
- textbox.select();
-
- textbox.editor.QueryInterface(Components.interfaces.nsIPlaintextEditor).insertText(text);
- textbox.focus();
-}
-
-// ************************************************************************************************
-
-// would be good to have autosuggest for popular editors
-var defaultCommandLines =
-{
- "emacs/vim/gedit/nano/geany": "+%line %file",
- "sublimetext": "%file:%line:%col",
- "notepad++": "-n%line %file",
- "emeditor": "/l %line %file",
- "IntelliJ IDEA": "%{--line %line%} %file",
- "browser": "%url",
- "explorer": "/select,%file",
- "wget/curl": "%url",
- "firefox": "http://validator.w3.org/check?uri=%url"
-};
-
-function suggestionPopupShowing(popup)
-{
- FBL.eraseNode(popup);
-
- for (var i in defaultCommandLines)
- {
- var box = document.createElement('hbox');
- var label = document.createElement('label');
- label.setAttribute('value', i + ': ');
- box.appendChild(label);
-
- var spacer = document.createElement('spacer');
- spacer.setAttribute('flex', 1);
- box.appendChild(spacer);
-
- label = document.createElement('label');
- label.setAttribute('value', defaultCommandLines[i]);
- label.className = 'text-link';
- box.appendChild(label);
-
- popup.appendChild(box);
- }
-}
-
-// ************************************************************************************************
-// TODO: suggestions for application?
-/*
-var paths = []
-var handlers = Cc["@mozilla.org/uriloader/external-helper-app-service;1"]
- .getService(Ci.nsIMIMEService).getFromTypeAndExtension("", "js").possibleLocalHandlers;
-for (var i = handlers.length - 1; i >= 0; i--)
- paths.unshift(handlers.queryElementAt(i, Ci.nsILocalHandlerApp).executable.path);
-
-paths
-*/
-
-// ************************************************************************************************
-var testEditor = function()
-{
- var tmpItem = {};
- var file = document.getElementById("executable").file;
- if (file)
- tmpItem.executable = file.path;
- tmpItem.cmdline = document.getElementById("cmdline").value;
-
- var Firebug = opener.opener.Firebug;
- Firebug.ExternalEditors.open(Firebug.Firefox.getCurrentBrowser().currentURI.spec, 5, tmpItem);
-};
+/* See license.txt for terms of usage */
+
+// ************************************************************************************************
+// Globals
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+var item;
+var FBL;
+var internalFilefieldTextbox;
+var browseButton;
+
+// browsing for a new file modifies image and label only if they are autogenereted from filename
+var origLabel = "";
+var origImage = null;
+
+function onLoad()
+{
+ var args = window.arguments[0];
+ item = args.item;
+ FBL = args.FBL;
+
+ browseButton = document.getElementById("browse-button");
+
+ document.getElementById("name").value = item.label;
+ if (item.executable)
+ {
+ origImage = FBL.getIconURLForFile(item.executable);
+ try
+ {
+ var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
+ file.initWithPath(item.executable);
+ document.getElementById("executable").file = file;
+ origLabel = file.leafName.replace(".exe","");
+ }
+ catch(exc) {}
+ }
+
+ if (item.cmdline)
+ document.getElementById("cmdline").value = item.cmdline;
+
+ onChange();
+
+ // Localization
+ internationalizeUI(document);
+
+ window.sizeToContent();
+
+ if (document.getAnonymousElementByAttribute && !document.getElementById("executable").file)
+ {
+ setTimeout(function()
+ {
+ internalFilefieldTextbox = document.getAnonymousElementByAttribute(
+ document.getElementById("executable"), "class", "fileFieldLabel");
+
+ if (internalFilefieldTextbox)
+ {
+ internalFilefieldTextbox.readOnly = false;
+ internalFilefieldTextbox.addEventListener("input", function(e) {
+ browseButton.disabled = (this.value != "");
+ onChange();
+ }, false);
+ }
+ }, 100);
+ }
+}
+
+function internationalizeUI(doc)
+{
+ var elements = doc.getElementsByClassName("fbInternational");
+ var attributes = ["title", "label", "value"];
+ for (var i=0; i<elements.length; i++)
+ {
+ if (elements[i].nodeName == "description")
+ {
+ var localized = FBL.$STR(elements[i].textContent);
+ var parser = Cc["@mozilla.org/xmlextras/domparser;1"].createInstance(Ci.nsIDOMParser);
+ var doc = parser.parseFromString("<vbox>" + localized + "</vbox>", "text/xml");
+ var root = doc.documentElement;
+
+ while(elements[i].firstChild)
+ elements[i].removeChild(elements[i].firstChild);
+
+ for(var j=0; j<root.childNodes.length; j++)
+ {
+ // ToDo: Show labels correctly
+ // Namespaces are not inherited from doc, so labels
+ // are not shown as links
+ node = doc.importNode(root.childNodes[j], true);
+ elements[i].appendChild(node);
+ }
+ }
+ else
+ {
+ for(var j=0; j<attributes.length; j++)
+ {
+ if (elements[i].hasAttribute(attributes[j]))
+ FBL.internationalize(elements[i], attributes[j]);
+ }
+ }
+ }
+}
+
+function onAccept()
+{
+ item.label = document.getElementById("name").value;
+ if (!browseButton.disabled)
+ {
+ var file = document.getElementById("executable").file;
+ item.executable = "";
+ if (file)
+ item.executable = file.path;
+ }
+ else
+ {
+ item.executable = internalFilefieldTextbox.value.replace(/^\s+|\s+$/g, '');
+ }
+
+ item.cmdline = document.getElementById("cmdline").value;
+ if (item.image == origImage)
+ item.image = FBL.getIconURLForFile(item.executable);
+
+ try
+ {
+ var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
+ file.initWithPath(item.executable);
+ if (!file.isExecutable())
+ throw "NotAnExecutable";
+
+ window.arguments[1].saveChanges = true;
+ return true;
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("changeEditor.onAccept; EXCEPTION " + exc, exc);
+
+ var promptService = Cc["@mozilla.org/embedcomp/prompt-service;1"].createInstance(
+ Ci.nsIPromptService);
+
+ if (exc == "NotAnExecutable")
+ {
+ promptService.alert(null, FBL.$STR("changeEditor.Invalid_Application_Path"),
+ FBL.$STR("changeEditor.Path_is_not_an_executable"));
+ }
+ else
+ {
+ promptService.alert(null, FBL.$STR("changeEditor.Invalid_Application_Path"),
+ FBL.$STR("changeEditor.Application_does_not_exist"));
+ }
+
+ return false;
+ }
+}
+
+function onChange()
+{
+ document.documentElement.getButton("accept").disabled = !(
+ document.getElementById("name").value && (
+ (browseButton.disabled && internalFilefieldTextbox &&
+ internalFilefieldTextbox.value &&
+ internalFilefieldTextbox.value.replace(/^\s+|\s+$/g, '')) ||
+ (!browseButton.disabled && document.getElementById("executable").file)
+ )
+ );
+}
+
+function onBrowse()
+{
+ const Ci = Components.interfaces;
+ const nsIFilePicker = Ci.nsIFilePicker;
+ var picker = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
+ picker.init(window, "", nsIFilePicker.modeOpen);
+ picker.appendFilters(nsIFilePicker.filterApps);
+
+ if (picker.show() == nsIFilePicker.returnOK && picker.file)
+ {
+ var nameField = document.getElementById("name");
+ var execField = document.getElementById("executable");
+ execField.file = picker.file;
+
+ if (internalFilefieldTextbox)
+ internalFilefieldTextbox.readOnly = true;
+
+ if (nameField.value == origLabel || nameField.value == "")
+ origLabel = nameField.value = execField.file.leafName.replace(".exe","");
+
+ onChange();
+ return true;
+ }
+
+ return false;
+}
+
+function insertText(text, whole)
+{
+ var textbox = document.getElementById("cmdline");
+ if(whole)
+ textbox.select();
+
+ textbox.editor.QueryInterface(Components.interfaces.nsIPlaintextEditor).insertText(text);
+ textbox.focus();
+}
+
+// ************************************************************************************************
+
+// would be good to have autosuggest for popular editors
+var defaultCommandLines =
+{
+ "emacs/vim/gedit/nano/geany": "+%line %file",
+ "sublimetext": "%file:%line:%col",
+ "notepad++": "-n%line %file",
+ "emeditor": "/l %line %file",
+ "IntelliJ IDEA": "%{--line %line%} %file",
+ "browser": "%url",
+ "explorer": "/select,%file",
+ "wget/curl": "%url",
+ "firefox": "http://validator.w3.org/check?uri=%url"
+};
+
+function suggestionPopupShowing(popup)
+{
+ FBL.eraseNode(popup);
+
+ for (var i in defaultCommandLines)
+ {
+ var box = document.createElement('hbox');
+ var label = document.createElement('label');
+ label.setAttribute('value', i + ': ');
+ box.appendChild(label);
+
+ var spacer = document.createElement('spacer');
+ spacer.setAttribute('flex', 1);
+ box.appendChild(spacer);
+
+ label = document.createElement('label');
+ label.setAttribute('value', defaultCommandLines[i]);
+ label.className = 'text-link';
+ box.appendChild(label);
+
+ popup.appendChild(box);
+ }
+}
+
+// ************************************************************************************************
+// TODO: suggestions for application?
+/*
+var paths = []
+var handlers = Cc["@mozilla.org/uriloader/external-helper-app-service;1"]
+ .getService(Ci.nsIMIMEService).getFromTypeAndExtension("", "js").possibleLocalHandlers;
+for (var i = handlers.length - 1; i >= 0; i--)
+ paths.unshift(handlers.queryElementAt(i, Ci.nsILocalHandlerApp).executable.path);
+
+paths
+*/
+
+// ************************************************************************************************
+var testEditor = function()
+{
+ var tmpItem = {};
+ var file = document.getElementById("executable").file;
+ if (file)
+ tmpItem.executable = file.path;
+ tmpItem.cmdline = document.getElementById("cmdline").value;
+
+ var Firebug = opener.opener.Firebug;
+ Firebug.ExternalEditors.open(Firebug.Firefox.getCurrentBrowser().currentURI.spec, 5, tmpItem);
+};
diff --git a/content/firebug/firefox/external-editors/changeeditor.xul b/content/firebug/firefox/external-editors/changeeditor.xul
index bec34dd..8542088 100644
--- a/content/firebug/firefox/external-editors/changeeditor.xul
+++ b/content/firebug/firefox/external-editors/changeeditor.xul
@@ -1,54 +1,54 @@
-<?xml version="1.0"?>
-
-<?xml-stylesheet href="chrome://global/skin/"?>
-<?xml-stylesheet href="chrome://mozapps/content/preferences/preferences.css" type="text/css"?>
-<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css" type="text/css"?>
-
-<dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- buttons="extra2,accept,cancel"
- id="firebug-external-editors-change"
- title="changeEditor.Editor_Configuration"
- onload="onLoad();"
- ondialogaccept="return onAccept();"
- persist="screenX screenY"
- class="fbInternational"
- buttonlabelextra2="test"
- ondialogextra2="testEditor()">
-
- <script src="chrome://firebug/content/trace.js"/>
- <script src="chrome://firebug/content/firefox/external-editors/changeeditor.js"/>
-
- <vbox flex="1">
- <hbox align="center">
- <label id="fbNameLabel" control="name"
- value="changeEditor.Name" class="fbInternational"/>
- <textbox id="name" flex="1" oninput="onChange()"/>
- </hbox>
- <separator class="groove"/>
- <hbox align="center">
- <label id="fbExecutableLabel" control="executable" align="baseline"
- value="changeEditor.Executable" class="fbInternational"/>
- <filefield id="executable" flex="1"/>
- <button id="browse-button" oncommand="onBrowse();"
- label="editors.Browse" class="fbInternational"/>
- </hbox>
- <separator class="thin"/>
- <hbox align="center">
- <label id="fbCmdLineLabel" control="cmdline"
- value="changeEditor.CmdLine" class="fbInternational"/>
- <textbox id="cmdline" flex="1" oninput="onChange()"/>
- <toolbarbutton type="menu" label="">
- <panel onpopupshowing="suggestionPopupShowing(this)"
- onclick="if(event.target.className=='text-link') insertText(event.target.value,true);"
- position="after_end"/>
- </toolbarbutton>
- </hbox>
- <vbox align="left" onclick="if(event.target.className=='text-link') insertText(event.target.textContent);">
- <description class="fbInternational">changeEditor.Supplied_arguments</description>
- <hbox><label class='text-link'>%url </label> <description class="fbInternational">changeEditor.URL_of_file</description></hbox>
- <hbox><label class='text-link'>%file </label><description class="fbInternational">changeEditor.Path_to_local_file</description></hbox>
- <hbox><label class='text-link'>%line </label><description class="fbInternational">changeEditor.Line_number</description></hbox>
- </vbox>
- <separator class="groove"/>
- </vbox>
-</dialog>
+<?xml version="1.0"?>
+
+<?xml-stylesheet href="chrome://global/skin/"?>
+<?xml-stylesheet href="chrome://mozapps/content/preferences/preferences.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css" type="text/css"?>
+
+<dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ buttons="extra2,accept,cancel"
+ id="firebug-external-editors-change"
+ title="changeEditor.Editor_Configuration"
+ onload="onLoad();"
+ ondialogaccept="return onAccept();"
+ persist="screenX screenY"
+ class="fbInternational"
+ buttonlabelextra2="test"
+ ondialogextra2="testEditor()">
+
+ <script src="chrome://firebug/content/trace.js"/>
+ <script src="chrome://firebug/content/firefox/external-editors/changeeditor.js"/>
+
+ <vbox flex="1">
+ <hbox align="center">
+ <label id="fbNameLabel" control="name"
+ value="changeEditor.Name" class="fbInternational"/>
+ <textbox id="name" flex="1" oninput="onChange()"/>
+ </hbox>
+ <separator class="groove"/>
+ <hbox align="center">
+ <label id="fbExecutableLabel" control="executable" align="baseline"
+ value="changeEditor.Executable" class="fbInternational"/>
+ <filefield id="executable" flex="1"/>
+ <button id="browse-button" oncommand="onBrowse();"
+ label="editors.Browse" class="fbInternational"/>
+ </hbox>
+ <separator class="thin"/>
+ <hbox align="center">
+ <label id="fbCmdLineLabel" control="cmdline"
+ value="changeEditor.CmdLine" class="fbInternational"/>
+ <textbox id="cmdline" flex="1" oninput="onChange()"/>
+ <toolbarbutton type="menu" label="">
+ <panel onpopupshowing="suggestionPopupShowing(this)"
+ onclick="if(event.target.className=='text-link') insertText(event.target.value,true);"
+ position="after_end"/>
+ </toolbarbutton>
+ </hbox>
+ <vbox align="left" onclick="if(event.target.className=='text-link') insertText(event.target.textContent);">
+ <description class="fbInternational">changeEditor.Supplied_arguments</description>
+ <hbox><label class='text-link'>%url </label> <description class="fbInternational">changeEditor.URL_of_file</description></hbox>
+ <hbox><label class='text-link'>%file </label><description class="fbInternational">changeEditor.Path_to_local_file</description></hbox>
+ <hbox><label class='text-link'>%line </label><description class="fbInternational">changeEditor.Line_number</description></hbox>
+ </vbox>
+ <separator class="groove"/>
+ </vbox>
+</dialog>
diff --git a/content/firebug/firefox/external-editors/editors.js b/content/firebug/firefox/external-editors/editors.js
index 5520ddf..ca659b6 100644
--- a/content/firebug/firefox/external-editors/editors.js
+++ b/content/firebug/firefox/external-editors/editors.js
@@ -1,452 +1,452 @@
-/* See license.txt for terms of usage */
-
-// ************************************************************************************************
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-const prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
-const names = ["label", "executable", "cmdline", "image"];
-
-// ************************************************************************************************
-// Globals
-
-var gEditorManager =
-{
- _tree : null,
- _data : [],
- _removeButton : null,
- _changeButton : null,
- _moveUpButton : null,
-
- init: function()
- {
- var args = window.arguments[0];
- this._FBL = args.FBL;
- this._prefName = args.prefName;
-
- (this._removeButton = document.getElementById("removeEditor")).disabled = true;
- (this._changeButton = document.getElementById("changeEditor")).disabled = true;
- (this._moveUpButton = document.getElementById("moveUpEditor")).disabled = true;
-
- this._tree = document.getElementById("editorsList");
-
- this._treeView =
- {
- data: this._data,
- selection: null,
-
- get rowCount() { return this.data.length; },
- getCellText: function(row, column)
- {
- switch(column.id)
- {
- case "editorName":
- return " "+this.data[row].label;
- case "editorExecutable":
- return this.data[row].executable;
- case "editorParams":
- return this.data[row].cmdline;
- }
- return "";
- },
- setTree: function(treebox){ this.treebox = treebox; },
- isContainer: function(row) { return false; },
- isContainerOpen: function(row) { return false; },
- isContainerEmpty: function(row) { return false; },
- isSeparator: function(row) { return false; },
- isSorted: function() { return false; },
- getLevel: function(row) { return 0; },
- getImageSrc: function(row,column) { return column.id=="editorName" ? this.data[row].image : null; },
- getRowProperties: function(row,props) {},
- getCellProperties: function(row,column,props) {},
- getColumnProperties: function(colid,column,props) {}
- };
-
- this._load();
- this._tree.view = this._treeView;
-
- this.internationalizeUI(document);
- },
-
- uninit: function()
- {
- },
-
- internationalizeUI: function(doc)
- {
- var elements = doc.getElementsByClassName("fbInternational");
- var attributes = ["title", "label", "value"];
- for (var i=0; i<elements.length; i++)
- {
- for(var j=0; j<attributes.length; j++)
- {
- if (elements[i].hasAttribute(attributes[j]))
- this._FBL.internationalize(elements[i], attributes[j]);
- }
- }
- },
-
- onSelectionChanged: function()
- {
- var selection = this._tree.view.selection, disabled = (selection.count != 1);
- this._removeButton.disabled = disabled;
- this._changeButton.disabled = disabled;
- this._moveUpButton.disabled = disabled || (selection.currentIndex == 0);
- },
-
- addEditorHandler: function()
- {
- var item = { label: "", executable: null, cmdline: "" };
- var result = {};
- var args = {
- item: item,
- FBL: this._FBL
- };
-
- openDialog("chrome://firebug/content/firefox/external-editors/changeeditor.xul",
- "_blank", "modal,centerscreen,resizable", args, result);
-
- if (result.saveChanges)
- {
- item.id = item.label.replace(/\W/g, "_");
- this._saveItem(item);
-
- this._loadItem(item);
- this._data.push(item);
- this._tree.view = this._treeView;
-
- var editors = [];
- try {
- editors = prefs.getCharPref(this._prefName).split(",");
- for( var i = 0; i < editors.length; ++i )
- {
- if ( editors[i].replace(/^\s+|\s+$/,"") == "" )
- editors.splice(i, 1);
- }
- }
- catch(exc)
- {
- this._FBL.ERROR(exc);
- }
- editors.push(item.id);
- prefs.setCharPref(this._prefName, editors.join(","));
- }
- },
-
- removeEditorHandler: function()
- {
- var selection = this._tree.view.selection;
- if (selection.count < 1)
- return;
- var item = this._data[selection.currentIndex];
- this._data.splice(selection.currentIndex, 1);
- this._tree.view = this._treeView;
-
- try {
- var editors = prefs.getCharPref(this._prefName).split(",");
- this._FBL.remove(editors, item.id);
- prefs.setCharPref(this._prefName, editors.join(","));
- prefs.deleteBranch(this._prefName+"."+item.id);
- }
- catch(exc)
- {
- this._FBL.ERROR(exc);
- }
- // update disabled state of buttons
- if (this._data.length == 0)
- selection.clearSelection();
- },
-
- changeEditorHandler: function()
- {
- var selection = this._tree.view.selection;
- if (selection.count != 1)
- return;
- var item = this._data[selection.currentIndex];
- var args = {
- item: item,
- FBL: this._FBL
- };
- var result = {};
-
- openDialog("chrome://firebug/content/firefox/external-editors/changeeditor.xul",
- "_blank", "modal,centerscreen", args, result);
-
- if (result.saveChanges)
- {
- this._saveItem(item);
- }
- this._loadItem(item);
- this._tree.view = this._treeView;
- },
-
- moveUpEditorHandler: function()
- {
- var selection = this._tree.view.selection;
- if (selection.count < 1)
- return;
- var item = this._data[selection.currentIndex];
- this._data.splice(selection.currentIndex, 1);
- this._data.unshift(item);
- this._tree.view = this._treeView;
- try {
- var editors = this._data.map(function(x) x.id);
- prefs.setCharPref(this._prefName, editors.join(","));
- }
- catch(exc)
- {
- this._FBL.ERROR(exc);
- }
- },
-
-
- _loadItem: function(item)
- {
- const prefName = this._prefName;
- for( var i = 0; i < names.length; ++i )
- {
- try {
- item[names[i]] = prefs.getCharPref(prefName+"."+item.id+"."+names[i]);
- }
- catch(exc)
- {}
- }
- if (!item.image)
- item.image = this._FBL.getIconURLForFile(item.executable);
- },
-
- _saveItem: function(item)
- {
- if ( item.image && item.image == this._FBL.getIconURLForFile(item.executable) )
- item.image = null;
-
- const prefName = this._prefName;
- for( var i = 0; i < names.length; ++i )
- {
- try {
- var value = item[names[i]];
- if ( value )
- prefs.setCharPref(prefName+"."+item.id+"."+names[i], value);
- else
- prefs.clearUserPref(prefName+"."+item.id+"."+names[i]);
- }
- catch(exc)
- {}
- }
- },
-
- _load: function()
- {
- try {
- var list = prefs.getCharPref(this._prefName).split(",");
- for (var i = 0; i < list.length; ++i)
- {
- var editorId = list[i].replace(/\s/g, "_");
- if ( !editorId )
- continue;
- var item = { id: editorId };
- this._data.push(item);
- this._loadItem(item);
- }
- }
- catch(exc)
- {
- this._FBL.ERROR(exc);
- }
- }
-};
-
-// ************************************************************************************************
-// URLMappings
-Cu.import("resource://firebug/loader.js");
-
-var headerName = "X-Local-File-Path";
-var headerExplaination = "\
-// the following regexp is used by firebug to determine\n\
-// if it should send request to the server to get\n\
-// file path with " + headerName + " header\n\
-// defalt value is ^https?:\\/\\/(localhost)(\\/|:|$)";
-
-var listExplaination = "\
-// list of mappings in the form\n\
-// ^https?:\\/\\/my.domain.com/ => c:\\php/www\\ \n\
-// ";
-var noMapping = "no mappings for tested url";
-var willQueryServer = "for this url Firebug will send query to server";
-
-var splitter = " => ";
-var gUrlMappingManager = {
- init: function()
- {
- var Firebug = opener.Firebug;
- var extModule = Firebug.ExternalEditors;
- this.checkHeaderRe = extModule.checkHeaderRe;
- this.pathTransformations = extModule.pathTransformations;
-
- var val = [
- headerExplaination, "\n",
- headerName, splitter, extModule.checkHeaderRe.source,
- "\n\n",
- listExplaination,
- "\n"
- ];
-
- for (var i = 0; i < this.pathTransformations.length; i++)
- {
- var transform = this.pathTransformations[i];
- val.push(transform.regexp.source, splitter, transform.filePath, '\n');
- }
-
- val.push(splitter, "\n");
-
- document.getElementById("urlMappings").value = val.join("");
- document.getElementById("test").value = Firebug.Firefox.getCurrentBrowser().currentURI.spec;
-
- this.onMainInput();
- },
-
- uninit: function()
- {
- this.save();
- opener.Firebug.ExternalEditors.saveUrlMappings();
- },
-
- save: function()
- {
- var checkHeaderRe = this.checkHeaderRe;
- var pathTransformations = this.pathTransformations;
-
- FirebugLoader.forEachWindow(function(win)
- {
- var extModule = win.Firebug.ExternalEditors;
- delete extModule.pathTransformations;
- delete extModule.checkHeaderRe;
- extModule.checkHeaderRe = checkHeaderRe;
- extModule.pathTransformations = pathTransformations;
- });
- },
-
- parse: function(val)
- {
- var lines = val.split(/(?:\n\r|\n|\r)/);
- var errors = this.errors = [];
- function addRegexp(source, line)
- {
- if (!source)
- return;
-
- try
- {
- source = source.replace(/\\?\//g, '\\/');
- return RegExp(source, 'i');
- }
- catch(e)
- {
- errors.push(line + ': ' + e);
- return null;
- }
- }
-
- this.pathTransformations = [];
- this.checkHeaderRe = null;
- for (var i in lines)
- {
- var line = lines[i].split('=>');
-
- if (!line[1] || !line[0])
- continue;
-
- var start = line[0].trim();
- var end = line[1].trim();
-
- if (start[0] == '/' && start[1] == '/')
- continue;
-
- if (start == headerName)
- {
- if (this.checkHeaderRe)
- erors.push(i);
- else
- this.checkHeaderRe = addRegexp(end, i);
- continue;
- }
- var t = {
- regexp: addRegexp(start, i),
- filePath: end
- };
- if (t.regexp && t.filePath)
- this.pathTransformations.push(t);
- }
-
- if (!this.checkHeaderRe)
- this.checkHeaderRe = /^$/;
- },
-
- onTestInput: function()
- {
- var testBox = document.getElementById("test");
- var resultBox = document.getElementById("result");
- var href = testBox.value;
-
- if (this.checkHeaderRe.test(href))
- {
- resultBox.value = "firebug will send query to server";
- }
- else
- {
- for (var i = 0; i < this.pathTransformations.length; i++)
- {
- var transform = this.pathTransformations[i];
- if (transform.regexp.test(href))
- {
- var path = href.replace(transform.regexp, transform.filePath);
- break;
- }
- }
-
- if (path)
- {
- resultBox.style.cssText = "box-shadow: 0px 0px 1.5px 1px lime;";
- href = path;
- }
-
- resultBox.value = href.replace(/([^:\\\/])[\\\/]+/g, '$1/');
- }
- },
-
- onMainInput: function()
- {
- this.parse(document.getElementById("urlMappings").value);
- var resultBox = document.getElementById("result");
- if (this.errors.length)
- {
- resultBox.value = this.errors;
- resultBox.style.cssText = "box-shadow: 0px 0px 1.5px 1px red;";
- } else
- {
- resultBox.style.cssText = "";
- this.onTestInput();
- }
- },
-
- schedule: function(funcName)
- {
- if (this._scheduled != "onMainInput")
- this._scheduled = funcName;
-
- if (this.timeOut != null)
- return;
- this.timeOut = setTimeout(function(_this)
- {
- _this[_this._scheduled]();
- _this._scheduled = _this.timeOut = null;
- _this.save()
- }, 80, this);
- }
-};
-
-// ************************************************************************************************
-
+/* See license.txt for terms of usage */
+
+// ************************************************************************************************
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+
+const prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
+const names = ["label", "executable", "cmdline", "image"];
+
+// ************************************************************************************************
+// Globals
+
+var gEditorManager =
+{
+ _tree : null,
+ _data : [],
+ _removeButton : null,
+ _changeButton : null,
+ _moveUpButton : null,
+
+ init: function()
+ {
+ var args = window.arguments[0];
+ this._FBL = args.FBL;
+ this._prefName = args.prefName;
+
+ (this._removeButton = document.getElementById("removeEditor")).disabled = true;
+ (this._changeButton = document.getElementById("changeEditor")).disabled = true;
+ (this._moveUpButton = document.getElementById("moveUpEditor")).disabled = true;
+
+ this._tree = document.getElementById("editorsList");
+
+ this._treeView =
+ {
+ data: this._data,
+ selection: null,
+
+ get rowCount() { return this.data.length; },
+ getCellText: function(row, column)
+ {
+ switch(column.id)
+ {
+ case "editorName":
+ return " "+this.data[row].label;
+ case "editorExecutable":
+ return this.data[row].executable;
+ case "editorParams":
+ return this.data[row].cmdline;
+ }
+ return "";
+ },
+ setTree: function(treebox){ this.treebox = treebox; },
+ isContainer: function(row) { return false; },
+ isContainerOpen: function(row) { return false; },
+ isContainerEmpty: function(row) { return false; },
+ isSeparator: function(row) { return false; },
+ isSorted: function() { return false; },
+ getLevel: function(row) { return 0; },
+ getImageSrc: function(row,column) { return column.id=="editorName" ? this.data[row].image : null; },
+ getRowProperties: function(row,props) {},
+ getCellProperties: function(row,column,props) {},
+ getColumnProperties: function(colid,column,props) {}
+ };
+
+ this._load();
+ this._tree.view = this._treeView;
+
+ this.internationalizeUI(document);
+ },
+
+ uninit: function()
+ {
+ },
+
+ internationalizeUI: function(doc)
+ {
+ var elements = doc.getElementsByClassName("fbInternational");
+ var attributes = ["title", "label", "value"];
+ for (var i=0; i<elements.length; i++)
+ {
+ for(var j=0; j<attributes.length; j++)
+ {
+ if (elements[i].hasAttribute(attributes[j]))
+ this._FBL.internationalize(elements[i], attributes[j]);
+ }
+ }
+ },
+
+ onSelectionChanged: function()
+ {
+ var selection = this._tree.view.selection, disabled = (selection.count != 1);
+ this._removeButton.disabled = disabled;
+ this._changeButton.disabled = disabled;
+ this._moveUpButton.disabled = disabled || (selection.currentIndex == 0);
+ },
+
+ addEditorHandler: function()
+ {
+ var item = { label: "", executable: null, cmdline: "" };
+ var result = {};
+ var args = {
+ item: item,
+ FBL: this._FBL
+ };
+
+ openDialog("chrome://firebug/content/firefox/external-editors/changeeditor.xul",
+ "_blank", "modal,centerscreen,resizable", args, result);
+
+ if (result.saveChanges)
+ {
+ item.id = item.label.replace(/\W/g, "_");
+ this._saveItem(item);
+
+ this._loadItem(item);
+ this._data.push(item);
+ this._tree.view = this._treeView;
+
+ var editors = [];
+ try {
+ editors = prefs.getCharPref(this._prefName).split(",");
+ for( var i = 0; i < editors.length; ++i )
+ {
+ if ( editors[i].replace(/^\s+|\s+$/,"") == "" )
+ editors.splice(i, 1);
+ }
+ }
+ catch(exc)
+ {
+ this._FBL.ERROR(exc);
+ }
+ editors.push(item.id);
+ prefs.setCharPref(this._prefName, editors.join(","));
+ }
+ },
+
+ removeEditorHandler: function()
+ {
+ var selection = this._tree.view.selection;
+ if (selection.count < 1)
+ return;
+ var item = this._data[selection.currentIndex];
+ this._data.splice(selection.currentIndex, 1);
+ this._tree.view = this._treeView;
+
+ try {
+ var editors = prefs.getCharPref(this._prefName).split(",");
+ this._FBL.remove(editors, item.id);
+ prefs.setCharPref(this._prefName, editors.join(","));
+ prefs.deleteBranch(this._prefName+"."+item.id);
+ }
+ catch(exc)
+ {
+ this._FBL.ERROR(exc);
+ }
+ // update disabled state of buttons
+ if (this._data.length == 0)
+ selection.clearSelection();
+ },
+
+ changeEditorHandler: function()
+ {
+ var selection = this._tree.view.selection;
+ if (selection.count != 1)
+ return;
+ var item = this._data[selection.currentIndex];
+ var args = {
+ item: item,
+ FBL: this._FBL
+ };
+ var result = {};
+
+ openDialog("chrome://firebug/content/firefox/external-editors/changeeditor.xul",
+ "_blank", "modal,centerscreen", args, result);
+
+ if (result.saveChanges)
+ {
+ this._saveItem(item);
+ }
+ this._loadItem(item);
+ this._tree.view = this._treeView;
+ },
+
+ moveUpEditorHandler: function()
+ {
+ var selection = this._tree.view.selection;
+ if (selection.count < 1)
+ return;
+ var item = this._data[selection.currentIndex];
+ this._data.splice(selection.currentIndex, 1);
+ this._data.unshift(item);
+ this._tree.view = this._treeView;
+ try {
+ var editors = this._data.map(function(x) x.id);
+ prefs.setCharPref(this._prefName, editors.join(","));
+ }
+ catch(exc)
+ {
+ this._FBL.ERROR(exc);
+ }
+ },
+
+
+ _loadItem: function(item)
+ {
+ const prefName = this._prefName;
+ for( var i = 0; i < names.length; ++i )
+ {
+ try {
+ item[names[i]] = prefs.getCharPref(prefName+"."+item.id+"."+names[i]);
+ }
+ catch(exc)
+ {}
+ }
+ if (!item.image)
+ item.image = this._FBL.getIconURLForFile(item.executable);
+ },
+
+ _saveItem: function(item)
+ {
+ if ( item.image && item.image == this._FBL.getIconURLForFile(item.executable) )
+ item.image = null;
+
+ const prefName = this._prefName;
+ for( var i = 0; i < names.length; ++i )
+ {
+ try {
+ var value = item[names[i]];
+ if ( value )
+ prefs.setCharPref(prefName+"."+item.id+"."+names[i], value);
+ else
+ prefs.clearUserPref(prefName+"."+item.id+"."+names[i]);
+ }
+ catch(exc)
+ {}
+ }
+ },
+
+ _load: function()
+ {
+ try {
+ var list = prefs.getCharPref(this._prefName).split(",");
+ for (var i = 0; i < list.length; ++i)
+ {
+ var editorId = list[i].replace(/\s/g, "_");
+ if ( !editorId )
+ continue;
+ var item = { id: editorId };
+ this._data.push(item);
+ this._loadItem(item);
+ }
+ }
+ catch(exc)
+ {
+ this._FBL.ERROR(exc);
+ }
+ }
+};
+
+// ************************************************************************************************
+// URLMappings
+Cu.import("resource://firebug/loader.js");
+
+var headerName = "X-Local-File-Path";
+var headerExplaination = "\
+// the following regexp is used by firebug to determine\n\
+// if it should send request to the server to get\n\
+// file path with " + headerName + " header\n\
+// defalt value is ^https?:\\/\\/(localhost)(\\/|:|$)";
+
+var listExplaination = "\
+// list of mappings in the form\n\
+// ^https?:\\/\\/my.domain.com/ => c:\\php/www\\ \n\
+// ";
+var noMapping = "no mappings for tested url";
+var willQueryServer = "for this url Firebug will send query to server";
+
+var splitter = " => ";
+var gUrlMappingManager = {
+ init: function()
+ {
+ var Firebug = opener.Firebug;
+ var extModule = Firebug.ExternalEditors;
+ this.checkHeaderRe = extModule.checkHeaderRe;
+ this.pathTransformations = extModule.pathTransformations;
+
+ var val = [
+ headerExplaination, "\n",
+ headerName, splitter, extModule.checkHeaderRe.source,
+ "\n\n",
+ listExplaination,
+ "\n"
+ ];
+
+ for (var i = 0; i < this.pathTransformations.length; i++)
+ {
+ var transform = this.pathTransformations[i];
+ val.push(transform.regexp.source, splitter, transform.filePath, '\n');
+ }
+
+ val.push(splitter, "\n");
+
+ document.getElementById("urlMappings").value = val.join("");
+ document.getElementById("test").value = Firebug.Firefox.getCurrentBrowser().currentURI.spec;
+
+ this.onMainInput();
+ },
+
+ uninit: function()
+ {
+ this.save();
+ opener.Firebug.ExternalEditors.saveUrlMappings();
+ },
+
+ save: function()
+ {
+ var checkHeaderRe = this.checkHeaderRe;
+ var pathTransformations = this.pathTransformations;
+
+ FirebugLoader.forEachWindow(function(win)
+ {
+ var extModule = win.Firebug.ExternalEditors;
+ delete extModule.pathTransformations;
+ delete extModule.checkHeaderRe;
+ extModule.checkHeaderRe = checkHeaderRe;
+ extModule.pathTransformations = pathTransformations;
+ });
+ },
+
+ parse: function(val)
+ {
+ var lines = val.split(/(?:\n\r|\n|\r)/);
+ var errors = this.errors = [];
+ function addRegexp(source, line)
+ {
+ if (!source)
+ return;
+
+ try
+ {
+ source = source.replace(/\\?\//g, '\\/');
+ return RegExp(source, 'i');
+ }
+ catch(e)
+ {
+ errors.push(line + ': ' + e);
+ return null;
+ }
+ }
+
+ this.pathTransformations = [];
+ this.checkHeaderRe = null;
+ for (var i in lines)
+ {
+ var line = lines[i].split('=>');
+
+ if (!line[1] || !line[0])
+ continue;
+
+ var start = line[0].trim();
+ var end = line[1].trim();
+
+ if (start[0] == '/' && start[1] == '/')
+ continue;
+
+ if (start == headerName)
+ {
+ if (this.checkHeaderRe)
+ erors.push(i);
+ else
+ this.checkHeaderRe = addRegexp(end, i);
+ continue;
+ }
+ var t = {
+ regexp: addRegexp(start, i),
+ filePath: end
+ };
+ if (t.regexp && t.filePath)
+ this.pathTransformations.push(t);
+ }
+
+ if (!this.checkHeaderRe)
+ this.checkHeaderRe = /^$/;
+ },
+
+ onTestInput: function()
+ {
+ var testBox = document.getElementById("test");
+ var resultBox = document.getElementById("result");
+ var href = testBox.value;
+
+ if (this.checkHeaderRe.test(href))
+ {
+ resultBox.value = "firebug will send query to server";
+ }
+ else
+ {
+ for (var i = 0; i < this.pathTransformations.length; i++)
+ {
+ var transform = this.pathTransformations[i];
+ if (transform.regexp.test(href))
+ {
+ var path = href.replace(transform.regexp, transform.filePath);
+ break;
+ }
+ }
+
+ if (path)
+ {
+ resultBox.style.cssText = "box-shadow: 0px 0px 1.5px 1px lime;";
+ href = path;
+ }
+
+ resultBox.value = href.replace(/([^:\\\/])[\\\/]+/g, '$1/');
+ }
+ },
+
+ onMainInput: function()
+ {
+ this.parse(document.getElementById("urlMappings").value);
+ var resultBox = document.getElementById("result");
+ if (this.errors.length)
+ {
+ resultBox.value = this.errors;
+ resultBox.style.cssText = "box-shadow: 0px 0px 1.5px 1px red;";
+ } else
+ {
+ resultBox.style.cssText = "";
+ this.onTestInput();
+ }
+ },
+
+ schedule: function(funcName)
+ {
+ if (this._scheduled != "onMainInput")
+ this._scheduled = funcName;
+
+ if (this.timeOut != null)
+ return;
+ this.timeOut = setTimeout(function(_this)
+ {
+ _this[_this._scheduled]();
+ _this._scheduled = _this.timeOut = null;
+ _this.save()
+ }, 80, this);
+ }
+};
+
+// ************************************************************************************************
+
diff --git a/content/firebug/firefox/external-editors/editors.xul b/content/firebug/firefox/external-editors/editors.xul
index 8da86d3..017a3af 100644
--- a/content/firebug/firefox/external-editors/editors.xul
+++ b/content/firebug/firefox/external-editors/editors.xul
@@ -1,93 +1,93 @@
-<?xml version="1.0"?>
-
-<?xml-stylesheet href="chrome://global/skin/global.css"?>
-<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css"?>
-
-<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- class="windowDialog fbInternational"
- windowtype="Firebug:ExternalEditors"
- id="firebug-external-editors"
- width="600" height="300"
- title="firebug.Configure_Editors"
- onload="gEditorManager.init();/*gUrlMappingManager.init()*/"
- onunload="gEditorManager.uninit();/*gUrlMappingManager.uninit()*/"
- persist="screenX screenY width height">
-
- <script type="application/x-javascript" src="chrome://firebug/content/xpcom.js"/>
- <script type="application/x-javascript"
- src="chrome://firebug/content/firefox/external-editors/editors.js"/>
-
- <!--
- <tabbox flex="1" class="contentPane">
- <tabs>
- <tab label="editors.Configured_Firebug_Editors" class="fbInternational"/>
- <tab label="editors.Url_mappings" class="fbInternational"/>
- </tabs>
- <tabpanels flex="1">
- <tabpanel flex="1" orient="vertical">
- -->
- <vbox flex="1" class="contentPane">
- <label id="actionsIntro" control="editorsList"
- value="editors.Configured_Firebug_Editors" class="fbInternational"/>
- <separator class="thin"/>
- <tree id="editorsList" flex="1" seltype="single"
- lastSelected="0" persist="lastSelected"
- onselect="gEditorManager.onSelectionChanged();"
- ondblclick="gEditorManager.changeEditorHandler();">
- <treecols>
- <treecol id="editorName" ignoreincolumnpicker="true" flex="1"
- persist="width" class="fbInternational"
- label="editors.Editor"/>
- <splitter class="tree-splitter" />
- <treecol id="editorExecutable" flex="1"
- persist="width" class="fbInternational"
- label="editors.Executable"/>
- <splitter class="tree-splitter" />
- <treecol id="editorParams" flex="1"
- persist="width" class="fbInternational"
- label="editors.Launch_Arguments"/>
- </treecols>
- <treechildren/>
- </tree>
- </vbox>
-
- <separator class="thin"/>
-
- <hbox>
- <hbox flex="1" class="actionButtons">
- <button id="addEditor" icon="add"
- label="editors.Add" class="fbInternational"
- oncommand="gEditorManager.addEditorHandler();"/>
- <button id="removeEditor" icon="remove"
- label="editors.Remove" class="fbInternational"
- oncommand="gEditorManager.removeEditorHandler();"/>
- <button id="changeEditor"
- label="editors.Change" class="fbInternational"
- oncommand="gEditorManager.changeEditorHandler();"/>
- <button id="moveUpEditor"
- label="editors.Move_Up" class="fbInternational"
- oncommand="gEditorManager.moveUpEditorHandler();"/>
- <spacer flex="1"/>
- <button id="closeDialogButton"
- oncommand="close();" icon="close"
- label="editors.Close" class="fbInternational"/>
- </hbox>
- <resizer dir="bottomright"/>
- </hbox>
- <!--
- </tabpanel>
- <tabpanel flex="1" orient="vertical">
- <textbox id="urlMappings" multiline="true" flex="1" wrap="off"
- oninput="gUrlMappingManager.schedule('onMainInput')"/>
- <hbox>
- <textbox id="test" flex="1"
- oninput="gUrlMappingManager.schedule('onTestInput')"/>
- <splitter class='plain'/>
- <textbox id="result" flex="1" />
- </hbox>
- </tabpanel>
- </tabpanels>
- </tabbox>
- -->
-
-</window>
+<?xml version="1.0"?>
+
+<?xml-stylesheet href="chrome://global/skin/global.css"?>
+<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css"?>
+
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ class="windowDialog fbInternational"
+ windowtype="Firebug:ExternalEditors"
+ id="firebug-external-editors"
+ width="600" height="300"
+ title="firebug.Configure_Editors"
+ onload="gEditorManager.init();/*gUrlMappingManager.init()*/"
+ onunload="gEditorManager.uninit();/*gUrlMappingManager.uninit()*/"
+ persist="screenX screenY width height">
+
+ <script type="application/x-javascript" src="chrome://firebug/content/xpcom.js"/>
+ <script type="application/x-javascript"
+ src="chrome://firebug/content/firefox/external-editors/editors.js"/>
+
+ <!--
+ <tabbox flex="1" class="contentPane">
+ <tabs>
+ <tab label="editors.Configured_Firebug_Editors" class="fbInternational"/>
+ <tab label="editors.Url_mappings" class="fbInternational"/>
+ </tabs>
+ <tabpanels flex="1">
+ <tabpanel flex="1" orient="vertical">
+ -->
+ <vbox flex="1" class="contentPane">
+ <label id="actionsIntro" control="editorsList"
+ value="editors.Configured_Firebug_Editors" class="fbInternational"/>
+ <separator class="thin"/>
+ <tree id="editorsList" flex="1" seltype="single"
+ lastSelected="0" persist="lastSelected"
+ onselect="gEditorManager.onSelectionChanged();"
+ ondblclick="gEditorManager.changeEditorHandler();">
+ <treecols>
+ <treecol id="editorName" ignoreincolumnpicker="true" flex="1"
+ persist="width" class="fbInternational"
+ label="editors.Editor"/>
+ <splitter class="tree-splitter" />
+ <treecol id="editorExecutable" flex="1"
+ persist="width" class="fbInternational"
+ label="editors.Executable"/>
+ <splitter class="tree-splitter" />
+ <treecol id="editorParams" flex="1"
+ persist="width" class="fbInternational"
+ label="editors.Launch_Arguments"/>
+ </treecols>
+ <treechildren/>
+ </tree>
+ </vbox>
+
+ <separator class="thin"/>
+
+ <hbox>
+ <hbox flex="1" class="actionButtons">
+ <button id="addEditor" icon="add"
+ label="editors.Add" class="fbInternational"
+ oncommand="gEditorManager.addEditorHandler();"/>
+ <button id="removeEditor" icon="remove"
+ label="editors.Remove" class="fbInternational"
+ oncommand="gEditorManager.removeEditorHandler();"/>
+ <button id="changeEditor"
+ label="editors.Change" class="fbInternational"
+ oncommand="gEditorManager.changeEditorHandler();"/>
+ <button id="moveUpEditor"
+ label="editors.Move_Up" class="fbInternational"
+ oncommand="gEditorManager.moveUpEditorHandler();"/>
+ <spacer flex="1"/>
+ <button id="closeDialogButton"
+ oncommand="close();" icon="close"
+ label="editors.Close" class="fbInternational"/>
+ </hbox>
+ <resizer dir="bottomright"/>
+ </hbox>
+ <!--
+ </tabpanel>
+ <tabpanel flex="1" orient="vertical">
+ <textbox id="urlMappings" multiline="true" flex="1" wrap="off"
+ oninput="gUrlMappingManager.schedule('onMainInput')"/>
+ <hbox>
+ <textbox id="test" flex="1"
+ oninput="gUrlMappingManager.schedule('onTestInput')"/>
+ <splitter class='plain'/>
+ <textbox id="result" flex="1" />
+ </hbox>
+ </tabpanel>
+ </tabpanels>
+ </tabbox>
+ -->
+
+</window>
diff --git a/content/firebug/firefox/external-editors/externalEditors.js b/content/firebug/firefox/external-editors/externalEditors.js
index b2d5db0..00311ab 100644
--- a/content/firebug/firefox/external-editors/externalEditors.js
+++ b/content/firebug/firefox/external-editors/externalEditors.js
@@ -1,746 +1,746 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/lib",
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/locale",
- "firebug/lib/xpcom",
- "firebug/lib/url",
- "firebug/lib/string",
- "firebug/js/sourceLink",
- "firebug/lib/css",
- "firebug/lib/system",
- "firebug/lib/array",
- "firebug/lib/dom",
- "firebug/chrome/menu",
- "firebug/trace/debug",
- "firebug/chrome/firefox"
-],
-function(FBL, Obj, Firebug, Locale, Xpcom, Url, Str, SourceLink, Css, System, Arr, Dom,
- Menu, Debug, Firefox) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const DirService = Xpcom.CCSV("@mozilla.org/file/directory_service;1",
- "nsIDirectoryServiceProvider");
-const NS_OS_TEMP_DIR = "TmpD";
-const nsIFile = Ci.nsIFile;
-const nsISafeOutputStream = Ci.nsISafeOutputStream;
-const nsIURI = Ci.nsIURI;
-
-const prefDomain = "extensions.firebug";
-
-var editors = [];
-var externalEditors = [];
-var temporaryFiles = [];
-var temporaryDirectory = null;
-
-// ********************************************************************************************* //
-// Module Implementation
-
-Firebug.ExternalEditors = Obj.extend(Firebug.Module,
-{
- dispatchName: "externalEditors",
-
- initializeUI: function()
- {
- Firebug.Module.initializeUI.apply(this, arguments);
-
- Firebug.registerUIListener(this);
- this.loadExternalEditors();
- },
-
- updateOption: function(name, value)
- {
- if (name.substr(0, 15) == "externalEditors")
- this.loadExternalEditors();
- },
-
- shutdown: function()
- {
- this.deleteTemporaryFiles();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- registerEditor: function()
- {
- editors.push.apply(editors, arguments);
- },
-
- getRegisteredEditors: function()
- {
- var newArray = [];
-
- if (editors.length > 0)
- {
- newArray.push.apply(newArray, editors);
- if (externalEditors.length > 0)
- newArray.push("-");
- }
-
- if (externalEditors.length > 0)
- newArray.push.apply(newArray, externalEditors);
-
- return newArray;
- },
-
- loadExternalEditors: function()
- {
- const prefName = "externalEditors";
- const editorPrefNames = ["label", "executable", "cmdline", "image"];
-
- externalEditors = [];
- var prefDomain = Firebug.Options.getPrefDomain();
- var list = Firebug.Options.getPref(prefDomain, prefName).split(",");
-
- for (var i=0; i<list.length; ++i)
- {
- var editorId = list[i];
- if (!editorId || editorId == "")
- continue;
-
- var item = { id: editorId };
- for (var j=0; j<editorPrefNames.length; ++j)
- {
- try
- {
- item[editorPrefNames[j]] = Firebug.Options.getPref(prefDomain,
- prefName + "." + editorId + "." + editorPrefNames[j]);
- }
- catch(exc)
- {
- }
- }
-
- if (item.label && item.executable)
- {
- if (!item.image)
- item.image = System.getIconURLForFile(item.executable);
- externalEditors.push(item);
- }
- }
- return externalEditors;
- },
-
- getDefaultEditor: function()
- {
- return externalEditors[0] || editors[0];
- },
-
- getEditor: function(id)
- {
- if (typeof id == "object")
- return id;
-
- if (!id)
- return this.getDefaultEditor();
-
- var list = Arr.extendArray(externalEditors, editors);
- for (var i=0; i<list.length; i++)
- {
- var editor = list[i];
- if (editor.id == id)
- return editor;
- }
- },
-
- count: function()
- {
- return externalEditors.length + editors.length;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Overlay menu support
-
- onEditorsShowing: function(popup)
- {
- Dom.eraseNode(popup);
-
- var editors = this.getRegisteredEditors();
- for (var i=0; i<editors.length; ++i)
- {
- if (editors[i] == "-")
- {
- Menu.createMenuItem(popup, "-");
- continue;
- }
-
- var item = {
- label: editors[i].label,
- image: editors[i].image,
- nol10n: true
- };
-
- var menuitem = Menu.createMenuItem(popup, item);
- menuitem.value = editors[i].id;
- }
-
- if (editors.length > 0)
- Menu.createMenuItem(popup, "-");
-
- Menu.createMenuItem(popup, {
- label: Locale.$STR("firebug.Configure_Editors") + "...",
- nol10n: true,
- option: "openEditorList"
- });
- },
-
- openEditorList: function()
- {
- var args = {
- FBL: FBL,
- prefName: prefDomain + ".externalEditors"
- };
-
- Firefox.openWindow("Firebug:ExternalEditors",
- "chrome://firebug/content/firefox/external-editors/editors.xul",
- "", args);
- },
-
- onContextMenu: function(items, object, target, context, panel, popup)
- {
- if (!this.count())
- return
-
- if (object instanceof SourceLink.SourceLink)
- {
- this.appendContextMenuItem(popup, object.href, object.line);
- }
- else if (target.id == "fbLocationList")
- {
- if (object.href)
- this.appendContextMenuItem(popup, object.href, 0);
- }
- else if (panel)
- {
- var sourceLink = panel.getSourceLink(target, object);
- if (sourceLink)
- this.appendContextMenuItem(popup, sourceLink.href, sourceLink.line);
- }
- },
-
- createContextMenuItem: function(doc)
- {
- var item = doc.createElement("menu");
- item.setAttribute("type", "splitmenu");
- item.setAttribute("iconic", "true");
-
- item.addEventListener("command", function(event)
- {
- Firebug.ExternalEditors.onContextMenuCommand(event);
- });
-
- var menupopup = doc.createElement("menupopup");
- menupopup.addEventListener("popupshowing", function(event)
- {
- return Firebug.ExternalEditors.onEditorsShowing(this);
- });
-
- item.appendChild(menupopup);
- return item;
- },
-
- appendContextMenuItem: function(popup, url, line)
- {
- if (FBTrace.DBG_EXTERNALEDITORS)
- {
- FBTrace.sysout("externalEditors.appendContextMenuItem; href: " + url +
- ", line: " + line);
- }
-
- var editor = this.getDefaultEditor();
- var doc = popup.ownerDocument;
- var item = doc.getElementById("menu_firebug_firebugOpenWithEditor");
-
- if (item)
- {
- item = item.cloneNode(true);
- item.hidden = false;
- item.removeAttribute("openFromContext");
- }
- else
- {
- item = this.createContextMenuItem(doc);
- }
-
- item.setAttribute("image", editor.image);
- item.setAttribute("label", editor.label);
- item.value = editor.id;
-
- popup.appendChild(item);
-
- this.lastSource={url: url, line: line};
- },
-
- onContextMenuCommand: function(event)
- {
- if (event.target.getAttribute("option") == "openEditorList")
- this.openEditorList();
- else if (event.currentTarget.hasAttribute("openFromContext"))
- this.openContext(Firebug.currentContext, event.target.value);
- else
- this.open(this.lastSource.url, this.lastSource.line, event.target.value);
- },
-
- openContext: function(context, editorId)
- {
- var line = null;
- var panel = Firebug.chrome.getSelectedPanel();
- if (panel)
- {
- var box = panel.selectedSourceBox;
- if (box && box.centralLine)
- line = box.centralLine;
- }
-
- // if firebug isn't active this will redturn documentURI
- var url = Firebug.chrome.getSelectedPanelURL();
- this.open(url, line, editorId, context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // main
-
- open: function(href, line, editorId, context)
- {
- try
- {
- if (FBTrace.DBG_EXTERNALEDITORS)
- FBTrace.sysout("externalEditors.open; href: " + href + ", line: " + line +
- ", editorId: " + editorId + ", context: " + context, context);
-
- if (!href)
- return;
-
- var editor = this.getEditor(editorId);
- if (!editor)
- return;
-
- if (editor.handler)
- return editor.handler(href, line);
-
- var options = {
- url: href,
- href: href,
- line: line,
- editor: editor,
- cmdline: editor.cmdline
- };
-
- var self = this;
- this.getLocalFile(options, function(file)
- {
- if (file.exists())
- {
- if (file.isDirectory())
- {
- file.reveal();
- return;
- }
-
- options.file = file.path;
- }
-
- var args = self.parseCmdLine(options.cmdline, options);
-
- if (FBTrace.DBG_EXTERNALEDITORS)
- FBTrace.sysout("externalEditors.open; launch program with args:", args);
-
- System.launchProgram(editor.executable, args);
- });
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("externalEditors.open; EXCEPTION " + exc, exc);
-
- Debug.ERROR(exc);
- }
- },
-
- getLocalFile: function(options, callback)
- {
- var href = options.href;
- var file = Url.getLocalOrSystemFile(href);
- if (file)
- return callback(file);
-
- if (this.checkHeaderRe.test(href))
- {
- if (FBTrace.DBG_EXTERNALEDITORS)
- FBTrace.sysout("externalEditors. connecting server for", href);
-
- var req = new XMLHttpRequest;
- req.open("HEAD", href, true);
- req.setRequestHeader("X-Line", options.line);
- req.setRequestHeader("X-Column", options.col);
- req.onloadend = function()
- {
- var path = req.getResponseHeader("X-Local-File-Path");
- if (FBTrace.DBG_EXTERNALEDITORS)
- FBTrace.sysout("externalEditors. server says", path);
-
- var file = fixupFilePath(path);
- if (file)
- callback(file);
-
- // TODO: do we need to notify the user if path was wrong?
- // xxxHonza: note that there can be already a notification
- // coming from external editor (e.g. Notepad has its own
- // error dialog informing about an invalid path).
- };
-
- req.send(null);
- return;
- }
-
- file = this.transformHref(href);
- if (file)
- return callback(file);
-
- this.saveToTemporaryFile(href, callback);
- },
-
- parseCmdLine: function(cmdLine, options)
- {
- cmdLine = cmdLine || "";
-
- var lastI = 0, args = [], argIndex = 0, inGroup;
- var subs = "col|line|file|url".split("|");
-
- // do not send argument with bogus line number
- function checkGroup()
- {
- var group = args.slice(argIndex), isValid = null;
- for (var i=0; i<subs.length; i++)
- {
- var sub = subs[i];
- if (group.indexOf("%" + sub) == -1)
- continue;
-
- if (options[sub] == undefined)
- {
- isValid = false;
- }
- else
- {
- isValid = true;
- break;
- }
- }
-
- if (isValid == false)
- args = args.slice(0, argIndex);
-
- argIndex = args.length;
- }
-
- cmdLine.replace(/(\s+|$)|(?:%([{}]|(%|col|line|file|url)))/g, function(a, b, c, d, i, str)
- {
- var skipped = str.substring(lastI, i);
- lastI = i + a.length;
- skipped && args.push(skipped);
-
- if (b || !a)
- {
- args.push(" ");
- if (!inGroup)
- checkGroup();
- }
- else if (c == "{")
- {
- inGroup = true;
- }
- else if (c == "}")
- {
- inGroup = false;
- checkGroup();
- }
- else if (d)
- {
- args.push(a);
- }
- });
-
- cmdLine = args.join("");
-
- // add %file
- if (!/%(url|file)/.test(cmdLine))
- cmdLine += " %file";
-
- args = cmdLine.trim().split(" ");
- args = args.map(function(x)
- {
- return x.replace(/(?:%(%|col|line|file|url))/g, function(a, b)
- {
- if (b == "%")
- return b;
- if (options[b] == null)
- return "";
- return options[b];
- });
- });
-
- return args;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- transformHref: function(href)
- {
- for (var i=0; i<this.pathTransformations.length; i++)
- {
- var transform = this.pathTransformations[i];
- if (transform.regexp.test(href))
- {
- var path = href.replace(transform.regexp, transform.filePath);
- var file = fixupFilePath(path);
- if (file && file.exists())
- {
- if (FBTrace.DBG_EXTERNALEDITORS)
- FBTrace.sysout("externalEditors. " + href + " transformed to", file.path);
- return file;
- }
- }
- }
- },
-
- saveToTemporaryFile: function(href, callback)
- {
- var data = Firebug.currentContext.sourceCache.loadText(href);
- var file = this.createTemporaryFile(href, data);
-
- callback(file);
- },
-
- createTemporaryFile: function(href, data)
- {
- if (!data)
- return;
-
- if (!temporaryDirectory)
- {
- var tmpDir = DirService.getFile(NS_OS_TEMP_DIR, {});
- tmpDir.append("fbtmp");
- tmpDir.createUnique(nsIFile.DIRECTORY_TYPE, 0775);
- temporaryDirectory = tmpDir;
- }
-
- var lpath = href.replace(/^[^:]+:\/*/g, "").replace(/\?.*$/g, "")
- .replace(/[^0-9a-zA-Z\/.]/g, "_");
-
- /* dummy comment to workaround eclipse bug */
- if (!/\.[\w]{1,5}$/.test(lpath))
- {
- if (lpath.charAt(lpath.length-1) == "/")
- lpath += "index";
- lpath += ".html";
- }
-
- if (System.getPlatformName() == "WINNT")
- lpath = lpath.replace(/\//g, "\\");
-
- var file = Xpcom.QI(temporaryDirectory.clone(), nsIFile);
- file.appendRelativePath(lpath);
- if (!file.exists())
- file.create(nsIFile.NORMAL_FILE_TYPE, 0664);
- temporaryFiles.push(file.path);
-
- // TODO detect charset from current tab
- data = Str.convertFromUnicode(data);
-
- var stream = Xpcom.CCIN("@mozilla.org/network/safe-file-output-stream;1",
- "nsIFileOutputStream");
- stream.init(file, 0x04 | 0x08 | 0x20, 0664, 0); // write, create, truncate
- stream.write(data, data.length);
-
- if (stream instanceof nsISafeOutputStream)
- stream.finish();
- else
- stream.close();
-
- return file;
- },
-
- deleteTemporaryFiles: function() // TODO call on "shutdown" event to modules
- {
- try
- {
- var file = Xpcom.CCIN("@mozilla.org/file/local;1", "nsIFile");
- for (var i = 0; i < temporaryFiles.length; ++i)
- {
- file.initWithPath(temporaryFiles[i]);
- if (file.exists())
- file.remove(false);
- }
- }
- catch(exc)
- {
- }
-
- try
- {
- if (temporaryDirectory && temporaryDirectory.exists())
- temporaryDirectory.remove(true);
- }
- catch(exc)
- {
- }
- },
-});
-
-// ********************************************************************************************* //
-// Helpers
-
-function fixupFilePath(path)
-{
- var file = Url.getLocalOrSystemFile(path);
- if (!file)
- {
- path = "file:///" + path.replace(/[\/\\]+/g, "/");
- file = Url.getLocalOrSystemFile(path);
- }
- return file;
-}
-
-// object.extend doesn't handle getters
-Firebug.ExternalEditors.__defineGetter__("pathTransformations",
- lazyLoadUrlMappings.bind(Firebug.ExternalEditors, "pathTransformations"));
-
-Firebug.ExternalEditors.__defineGetter__("checkHeaderRe",
- lazyLoadUrlMappings.bind(Firebug.ExternalEditors, "checkHeaderRe"));
-
-function lazyLoadUrlMappings(propName)
-{
- delete this.pathTransformations;
- delete this.checkHeaderRe;
-
- var lines = readEntireFile(userFile("urlMappings.txt")).split(/[\n\r]+/);
- var sp = "=>";
-
- function safeRegexp(source)
- {
- try
- {
- return RegExp(source, "i");
- }
- catch(e)
- {
- }
- }
-
- this.pathTransformations = [];
- this.checkHeaderRe = null;
-
- for (var i in lines)
- {
- var line = lines[i].split("=>");
-
- if (!line[1] || !line[0])
- continue;
-
- var start = line[0].trim();
- var end = line[1].trim();
-
- if (start[0] == "/" && start[1] == "/")
- continue;
-
- if (start == "X-Local-File-Path")
- {
- this.checkHeaderRe = safeRegexp(end);
- continue;
- }
- var t = {
- regexp: safeRegexp(start, i),
- filePath: end
- };
- if (t.regexp && t.filePath)
- this.pathTransformations.push(t);
- }
-
- if (!this.checkHeaderRe)
- this.checkHeaderRe = /^https?:\/\/(localhost)(\/|:|$)/i;
-
- return this[propName];
-}
-
-Firebug.ExternalEditors.saveUrlMappings = function()
-{
- var sp = " => ";
- var text = [
- "X-Local-File-Path", sp, this.checkHeaderRe.source, "\n\n"
- ];
-
- for (var i = 0; i < this.pathTransformations.length; i++)
- {
- var t = this.pathTransformations[i];
- text.push(t.regexp, sp, t.filePath, "\n");
- }
-
- var file = userFile("urlMappings.txt");
- writeToFile(file, text.join(""));
-};
-
-// file helpers
-function userFile(name)
-{
- var file = Services.dirsvc.get("ProfD", Ci.nsIFile);
- file.append("firebug");
- file.append(name);
- return file;
-}
-
-function readEntireFile(file)
-{
- if (!file.exists())
- return "";
-
- var data = "", str = {};
- var fstream = Cc["@mozilla.org/network/file-input-stream;1"]
- .createInstance(Ci.nsIFileInputStream);
- var converter = Cc["@mozilla.org/intl/converter-input-stream;1"]
- .createInstance(Ci.nsIConverterInputStream);
-
- const replacementChar = Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER;
- fstream.init(file, -1, 0, 0);
- converter.init(fstream, "UTF-8", 1024, replacementChar);
-
- while (converter.readString(4096, str) != 0)
- data += str.value;
-
- converter.close();
-
- return data;
-}
-
-function writeToFile(file, text)
-{
- var fostream = Cc["@mozilla.org/network/file-output-stream;1"]
- .createInstance(Ci.nsIFileOutputStream);
- var converter = Cc["@mozilla.org/intl/converter-output-stream;1"]
- .createInstance(Ci.nsIConverterOutputStream);
-
- if (!file.exists())
- file.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0664);
-
- fostream.init(file, 0x02 | 0x08 | 0x20, 0664, 0); // write, create, truncate
- converter.init(fostream, "UTF-8", 4096, 0x0000);
- converter.writeString(text);
- converter.close();
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.ExternalEditors);
-
-return Firebug.ExternalEditors;
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/lib",
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/locale",
+ "firebug/lib/xpcom",
+ "firebug/lib/url",
+ "firebug/lib/string",
+ "firebug/js/sourceLink",
+ "firebug/lib/css",
+ "firebug/lib/system",
+ "firebug/lib/array",
+ "firebug/lib/dom",
+ "firebug/chrome/menu",
+ "firebug/trace/debug",
+ "firebug/chrome/firefox"
+],
+function(FBL, Obj, Firebug, Locale, Xpcom, Url, Str, SourceLink, Css, System, Arr, Dom,
+ Menu, Debug, Firefox) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+const DirService = Xpcom.CCSV("@mozilla.org/file/directory_service;1",
+ "nsIDirectoryServiceProvider");
+const NS_OS_TEMP_DIR = "TmpD";
+const nsIFile = Ci.nsIFile;
+const nsISafeOutputStream = Ci.nsISafeOutputStream;
+const nsIURI = Ci.nsIURI;
+
+const prefDomain = "extensions.firebug";
+
+var editors = [];
+var externalEditors = [];
+var temporaryFiles = [];
+var temporaryDirectory = null;
+
+// ********************************************************************************************* //
+// Module Implementation
+
+Firebug.ExternalEditors = Obj.extend(Firebug.Module,
+{
+ dispatchName: "externalEditors",
+
+ initializeUI: function()
+ {
+ Firebug.Module.initializeUI.apply(this, arguments);
+
+ Firebug.registerUIListener(this);
+ this.loadExternalEditors();
+ },
+
+ updateOption: function(name, value)
+ {
+ if (name.substr(0, 15) == "externalEditors")
+ this.loadExternalEditors();
+ },
+
+ shutdown: function()
+ {
+ this.deleteTemporaryFiles();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ registerEditor: function()
+ {
+ editors.push.apply(editors, arguments);
+ },
+
+ getRegisteredEditors: function()
+ {
+ var newArray = [];
+
+ if (editors.length > 0)
+ {
+ newArray.push.apply(newArray, editors);
+ if (externalEditors.length > 0)
+ newArray.push("-");
+ }
+
+ if (externalEditors.length > 0)
+ newArray.push.apply(newArray, externalEditors);
+
+ return newArray;
+ },
+
+ loadExternalEditors: function()
+ {
+ const prefName = "externalEditors";
+ const editorPrefNames = ["label", "executable", "cmdline", "image"];
+
+ externalEditors = [];
+ var prefDomain = Firebug.Options.getPrefDomain();
+ var list = Firebug.Options.getPref(prefDomain, prefName).split(",");
+
+ for (var i=0; i<list.length; ++i)
+ {
+ var editorId = list[i];
+ if (!editorId || editorId == "")
+ continue;
+
+ var item = { id: editorId };
+ for (var j=0; j<editorPrefNames.length; ++j)
+ {
+ try
+ {
+ item[editorPrefNames[j]] = Firebug.Options.getPref(prefDomain,
+ prefName + "." + editorId + "." + editorPrefNames[j]);
+ }
+ catch(exc)
+ {
+ }
+ }
+
+ if (item.label && item.executable)
+ {
+ if (!item.image)
+ item.image = System.getIconURLForFile(item.executable);
+ externalEditors.push(item);
+ }
+ }
+ return externalEditors;
+ },
+
+ getDefaultEditor: function()
+ {
+ return externalEditors[0] || editors[0];
+ },
+
+ getEditor: function(id)
+ {
+ if (typeof id == "object")
+ return id;
+
+ if (!id)
+ return this.getDefaultEditor();
+
+ var list = Arr.extendArray(externalEditors, editors);
+ for (var i=0; i<list.length; i++)
+ {
+ var editor = list[i];
+ if (editor.id == id)
+ return editor;
+ }
+ },
+
+ count: function()
+ {
+ return externalEditors.length + editors.length;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Overlay menu support
+
+ onEditorsShowing: function(popup)
+ {
+ Dom.eraseNode(popup);
+
+ var editors = this.getRegisteredEditors();
+ for (var i=0; i<editors.length; ++i)
+ {
+ if (editors[i] == "-")
+ {
+ Menu.createMenuItem(popup, "-");
+ continue;
+ }
+
+ var item = {
+ label: editors[i].label,
+ image: editors[i].image,
+ nol10n: true
+ };
+
+ var menuitem = Menu.createMenuItem(popup, item);
+ menuitem.value = editors[i].id;
+ }
+
+ if (editors.length > 0)
+ Menu.createMenuItem(popup, "-");
+
+ Menu.createMenuItem(popup, {
+ label: Locale.$STR("firebug.Configure_Editors") + "...",
+ nol10n: true,
+ option: "openEditorList"
+ });
+ },
+
+ openEditorList: function()
+ {
+ var args = {
+ FBL: FBL,
+ prefName: prefDomain + ".externalEditors"
+ };
+
+ Firefox.openWindow("Firebug:ExternalEditors",
+ "chrome://firebug/content/firefox/external-editors/editors.xul",
+ "", args);
+ },
+
+ onContextMenu: function(items, object, target, context, panel, popup)
+ {
+ if (!this.count())
+ return
+
+ if (object instanceof SourceLink.SourceLink)
+ {
+ this.appendContextMenuItem(popup, object.href, object.line);
+ }
+ else if (target.id == "fbLocationList")
+ {
+ if (object.href)
+ this.appendContextMenuItem(popup, object.href, 0);
+ }
+ else if (panel)
+ {
+ var sourceLink = panel.getSourceLink(target, object);
+ if (sourceLink)
+ this.appendContextMenuItem(popup, sourceLink.href, sourceLink.line);
+ }
+ },
+
+ createContextMenuItem: function(doc)
+ {
+ var item = doc.createElement("menu");
+ item.setAttribute("type", "splitmenu");
+ item.setAttribute("iconic", "true");
+
+ item.addEventListener("command", function(event)
+ {
+ Firebug.ExternalEditors.onContextMenuCommand(event);
+ });
+
+ var menupopup = doc.createElement("menupopup");
+ menupopup.addEventListener("popupshowing", function(event)
+ {
+ return Firebug.ExternalEditors.onEditorsShowing(this);
+ });
+
+ item.appendChild(menupopup);
+ return item;
+ },
+
+ appendContextMenuItem: function(popup, url, line)
+ {
+ if (FBTrace.DBG_EXTERNALEDITORS)
+ {
+ FBTrace.sysout("externalEditors.appendContextMenuItem; href: " + url +
+ ", line: " + line);
+ }
+
+ var editor = this.getDefaultEditor();
+ var doc = popup.ownerDocument;
+ var item = doc.getElementById("menu_firebug_firebugOpenWithEditor");
+
+ if (item)
+ {
+ item = item.cloneNode(true);
+ item.hidden = false;
+ item.removeAttribute("openFromContext");
+ }
+ else
+ {
+ item = this.createContextMenuItem(doc);
+ }
+
+ item.setAttribute("image", editor.image);
+ item.setAttribute("label", editor.label);
+ item.value = editor.id;
+
+ popup.appendChild(item);
+
+ this.lastSource={url: url, line: line};
+ },
+
+ onContextMenuCommand: function(event)
+ {
+ if (event.target.getAttribute("option") == "openEditorList")
+ this.openEditorList();
+ else if (event.currentTarget.hasAttribute("openFromContext"))
+ this.openContext(Firebug.currentContext, event.target.value);
+ else
+ this.open(this.lastSource.url, this.lastSource.line, event.target.value);
+ },
+
+ openContext: function(context, editorId)
+ {
+ var line = null;
+ var panel = Firebug.chrome.getSelectedPanel();
+ if (panel)
+ {
+ var box = panel.selectedSourceBox;
+ if (box && box.centralLine)
+ line = box.centralLine;
+ }
+
+ // if firebug isn't active this will redturn documentURI
+ var url = Firebug.chrome.getSelectedPanelURL();
+ this.open(url, line, editorId, context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // main
+
+ open: function(href, line, editorId, context)
+ {
+ try
+ {
+ if (FBTrace.DBG_EXTERNALEDITORS)
+ FBTrace.sysout("externalEditors.open; href: " + href + ", line: " + line +
+ ", editorId: " + editorId + ", context: " + context, context);
+
+ if (!href)
+ return;
+
+ var editor = this.getEditor(editorId);
+ if (!editor)
+ return;
+
+ if (editor.handler)
+ return editor.handler(href, line);
+
+ var options = {
+ url: href,
+ href: href,
+ line: line,
+ editor: editor,
+ cmdline: editor.cmdline
+ };
+
+ var self = this;
+ this.getLocalFile(options, function(file)
+ {
+ if (file.exists())
+ {
+ if (file.isDirectory())
+ {
+ file.reveal();
+ return;
+ }
+
+ options.file = file.path;
+ }
+
+ var args = self.parseCmdLine(options.cmdline, options);
+
+ if (FBTrace.DBG_EXTERNALEDITORS)
+ FBTrace.sysout("externalEditors.open; launch program with args:", args);
+
+ System.launchProgram(editor.executable, args);
+ });
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("externalEditors.open; EXCEPTION " + exc, exc);
+
+ Debug.ERROR(exc);
+ }
+ },
+
+ getLocalFile: function(options, callback)
+ {
+ var href = options.href;
+ var file = Url.getLocalOrSystemFile(href);
+ if (file)
+ return callback(file);
+
+ if (this.checkHeaderRe.test(href))
+ {
+ if (FBTrace.DBG_EXTERNALEDITORS)
+ FBTrace.sysout("externalEditors. connecting server for", href);
+
+ var req = new XMLHttpRequest;
+ req.open("HEAD", href, true);
+ req.setRequestHeader("X-Line", options.line);
+ req.setRequestHeader("X-Column", options.col);
+ req.onloadend = function()
+ {
+ var path = req.getResponseHeader("X-Local-File-Path");
+ if (FBTrace.DBG_EXTERNALEDITORS)
+ FBTrace.sysout("externalEditors. server says", path);
+
+ var file = fixupFilePath(path);
+ if (file)
+ callback(file);
+
+ // TODO: do we need to notify the user if path was wrong?
+ // xxxHonza: note that there can be already a notification
+ // coming from external editor (e.g. Notepad has its own
+ // error dialog informing about an invalid path).
+ };
+
+ req.send(null);
+ return;
+ }
+
+ file = this.transformHref(href);
+ if (file)
+ return callback(file);
+
+ this.saveToTemporaryFile(href, callback);
+ },
+
+ parseCmdLine: function(cmdLine, options)
+ {
+ cmdLine = cmdLine || "";
+
+ var lastI = 0, args = [], argIndex = 0, inGroup;
+ var subs = "col|line|file|url".split("|");
+
+ // do not send argument with bogus line number
+ function checkGroup()
+ {
+ var group = args.slice(argIndex), isValid = null;
+ for (var i=0; i<subs.length; i++)
+ {
+ var sub = subs[i];
+ if (group.indexOf("%" + sub) == -1)
+ continue;
+
+ if (options[sub] == undefined)
+ {
+ isValid = false;
+ }
+ else
+ {
+ isValid = true;
+ break;
+ }
+ }
+
+ if (isValid == false)
+ args = args.slice(0, argIndex);
+
+ argIndex = args.length;
+ }
+
+ cmdLine.replace(/(\s+|$)|(?:%([{}]|(%|col|line|file|url)))/g, function(a, b, c, d, i, str)
+ {
+ var skipped = str.substring(lastI, i);
+ lastI = i + a.length;
+ skipped && args.push(skipped);
+
+ if (b || !a)
+ {
+ args.push(" ");
+ if (!inGroup)
+ checkGroup();
+ }
+ else if (c == "{")
+ {
+ inGroup = true;
+ }
+ else if (c == "}")
+ {
+ inGroup = false;
+ checkGroup();
+ }
+ else if (d)
+ {
+ args.push(a);
+ }
+ });
+
+ cmdLine = args.join("");
+
+ // add %file
+ if (!/%(url|file)/.test(cmdLine))
+ cmdLine += " %file";
+
+ args = cmdLine.trim().split(" ");
+ args = args.map(function(x)
+ {
+ return x.replace(/(?:%(%|col|line|file|url))/g, function(a, b)
+ {
+ if (b == "%")
+ return b;
+ if (options[b] == null)
+ return "";
+ return options[b];
+ });
+ });
+
+ return args;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ transformHref: function(href)
+ {
+ for (var i=0; i<this.pathTransformations.length; i++)
+ {
+ var transform = this.pathTransformations[i];
+ if (transform.regexp.test(href))
+ {
+ var path = href.replace(transform.regexp, transform.filePath);
+ var file = fixupFilePath(path);
+ if (file && file.exists())
+ {
+ if (FBTrace.DBG_EXTERNALEDITORS)
+ FBTrace.sysout("externalEditors. " + href + " transformed to", file.path);
+ return file;
+ }
+ }
+ }
+ },
+
+ saveToTemporaryFile: function(href, callback)
+ {
+ var data = Firebug.currentContext.sourceCache.loadText(href);
+ var file = this.createTemporaryFile(href, data);
+
+ callback(file);
+ },
+
+ createTemporaryFile: function(href, data)
+ {
+ if (!data)
+ return;
+
+ if (!temporaryDirectory)
+ {
+ var tmpDir = DirService.getFile(NS_OS_TEMP_DIR, {});
+ tmpDir.append("fbtmp");
+ tmpDir.createUnique(nsIFile.DIRECTORY_TYPE, 0775);
+ temporaryDirectory = tmpDir;
+ }
+
+ var lpath = href.replace(/^[^:]+:\/*/g, "").replace(/\?.*$/g, "")
+ .replace(/[^0-9a-zA-Z\/.]/g, "_");
+
+ /* dummy comment to workaround eclipse bug */
+ if (!/\.[\w]{1,5}$/.test(lpath))
+ {
+ if (lpath.charAt(lpath.length-1) == "/")
+ lpath += "index";
+ lpath += ".html";
+ }
+
+ if (System.getPlatformName() == "WINNT")
+ lpath = lpath.replace(/\//g, "\\");
+
+ var file = Xpcom.QI(temporaryDirectory.clone(), nsIFile);
+ file.appendRelativePath(lpath);
+ if (!file.exists())
+ file.create(nsIFile.NORMAL_FILE_TYPE, 0664);
+ temporaryFiles.push(file.path);
+
+ // TODO detect charset from current tab
+ data = Str.convertFromUnicode(data);
+
+ var stream = Xpcom.CCIN("@mozilla.org/network/safe-file-output-stream;1",
+ "nsIFileOutputStream");
+ stream.init(file, 0x04 | 0x08 | 0x20, 0664, 0); // write, create, truncate
+ stream.write(data, data.length);
+
+ if (stream instanceof nsISafeOutputStream)
+ stream.finish();
+ else
+ stream.close();
+
+ return file;
+ },
+
+ deleteTemporaryFiles: function() // TODO call on "shutdown" event to modules
+ {
+ try
+ {
+ var file = Xpcom.CCIN("@mozilla.org/file/local;1", "nsIFile");
+ for (var i = 0; i < temporaryFiles.length; ++i)
+ {
+ file.initWithPath(temporaryFiles[i]);
+ if (file.exists())
+ file.remove(false);
+ }
+ }
+ catch(exc)
+ {
+ }
+
+ try
+ {
+ if (temporaryDirectory && temporaryDirectory.exists())
+ temporaryDirectory.remove(true);
+ }
+ catch(exc)
+ {
+ }
+ },
+});
+
+// ********************************************************************************************* //
+// Helpers
+
+function fixupFilePath(path)
+{
+ var file = Url.getLocalOrSystemFile(path);
+ if (!file)
+ {
+ path = "file:///" + path.replace(/[\/\\]+/g, "/");
+ file = Url.getLocalOrSystemFile(path);
+ }
+ return file;
+}
+
+// object.extend doesn't handle getters
+Firebug.ExternalEditors.__defineGetter__("pathTransformations",
+ lazyLoadUrlMappings.bind(Firebug.ExternalEditors, "pathTransformations"));
+
+Firebug.ExternalEditors.__defineGetter__("checkHeaderRe",
+ lazyLoadUrlMappings.bind(Firebug.ExternalEditors, "checkHeaderRe"));
+
+function lazyLoadUrlMappings(propName)
+{
+ delete this.pathTransformations;
+ delete this.checkHeaderRe;
+
+ var lines = readEntireFile(userFile("urlMappings.txt")).split(/[\n\r]+/);
+ var sp = "=>";
+
+ function safeRegexp(source)
+ {
+ try
+ {
+ return RegExp(source, "i");
+ }
+ catch(e)
+ {
+ }
+ }
+
+ this.pathTransformations = [];
+ this.checkHeaderRe = null;
+
+ for (var i in lines)
+ {
+ var line = lines[i].split("=>");
+
+ if (!line[1] || !line[0])
+ continue;
+
+ var start = line[0].trim();
+ var end = line[1].trim();
+
+ if (start[0] == "/" && start[1] == "/")
+ continue;
+
+ if (start == "X-Local-File-Path")
+ {
+ this.checkHeaderRe = safeRegexp(end);
+ continue;
+ }
+ var t = {
+ regexp: safeRegexp(start, i),
+ filePath: end
+ };
+ if (t.regexp && t.filePath)
+ this.pathTransformations.push(t);
+ }
+
+ if (!this.checkHeaderRe)
+ this.checkHeaderRe = /^https?:\/\/(localhost)(\/|:|$)/i;
+
+ return this[propName];
+}
+
+Firebug.ExternalEditors.saveUrlMappings = function()
+{
+ var sp = " => ";
+ var text = [
+ "X-Local-File-Path", sp, this.checkHeaderRe.source, "\n\n"
+ ];
+
+ for (var i = 0; i < this.pathTransformations.length; i++)
+ {
+ var t = this.pathTransformations[i];
+ text.push(t.regexp, sp, t.filePath, "\n");
+ }
+
+ var file = userFile("urlMappings.txt");
+ writeToFile(file, text.join(""));
+};
+
+// file helpers
+function userFile(name)
+{
+ var file = Services.dirsvc.get("ProfD", Ci.nsIFile);
+ file.append("firebug");
+ file.append(name);
+ return file;
+}
+
+function readEntireFile(file)
+{
+ if (!file.exists())
+ return "";
+
+ var data = "", str = {};
+ var fstream = Cc["@mozilla.org/network/file-input-stream;1"]
+ .createInstance(Ci.nsIFileInputStream);
+ var converter = Cc["@mozilla.org/intl/converter-input-stream;1"]
+ .createInstance(Ci.nsIConverterInputStream);
+
+ const replacementChar = Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER;
+ fstream.init(file, -1, 0, 0);
+ converter.init(fstream, "UTF-8", 1024, replacementChar);
+
+ while (converter.readString(4096, str) != 0)
+ data += str.value;
+
+ converter.close();
+
+ return data;
+}
+
+function writeToFile(file, text)
+{
+ var fostream = Cc["@mozilla.org/network/file-output-stream;1"]
+ .createInstance(Ci.nsIFileOutputStream);
+ var converter = Cc["@mozilla.org/intl/converter-output-stream;1"]
+ .createInstance(Ci.nsIConverterOutputStream);
+
+ if (!file.exists())
+ file.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0664);
+
+ fostream.init(file, 0x02 | 0x08 | 0x20, 0664, 0); // write, create, truncate
+ converter.init(fostream, "UTF-8", 4096, 0x0000);
+ converter.writeString(text);
+ converter.close();
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.ExternalEditors);
+
+return Firebug.ExternalEditors;
+
+// ********************************************************************************************* //
});
\ No newline at end of file
diff --git a/content/firebug/firefox/firebug.xul b/content/firebug/firefox/firebug.xul
index dc35fa6..4325e73 100644
--- a/content/firebug/firefox/firebug.xul
+++ b/content/firebug/firefox/firebug.xul
@@ -1,82 +1,82 @@
-<?xml version="1.0"?>
-
-<?xml-stylesheet href="chrome://global/skin/global.css"?>
-
-<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- windowtype="Firebug:Detached"
- id="firebug"
- title="Firebug"
- width="800" height="600"
- persist="screenX,screenY,width,height,sizemode"
- onload="importFirebug()" onunload="" onclose="return exportFirebug();">
-
- <vbox flex="2" id="fbMainFrame" collapsed="false">
- <browser id="fbMainContainer" flex="2" src="" disablehistory="true" />
- </vbox>
-
- <keyset id="mainkeyset">
- <key oncommand="exportFirebug();window.close();" key='W' modifiers='accel'/>
- <key oncommand="doFirefoxCommand('Browser:Reload')" keycode='VK_F5'/>
- <key oncommand="doFirefoxCommand('Browser:Reload')" key='r' modifiers='accel'/>
- <key oncommand="doFirefoxCommand('Browser:ReloadSkipCache')" keycode='VK_F5' modifiers='accel'/>
- <key oncommand="doFirefoxCommand('Browser:ReloadSkipCache')" key='r' modifiers='accel,shift'/>
- </keyset>
-
- <script type="application/x-javascript" src="chrome://firebug/content/trace.js"/>
-
- <script type="application/x-javascript">
- doFirefoxCommand = function(id)
- {
- opener.Firebug.Firefox.getElementById(id).doCommand();
- }
-
- importFirebug = function()
- {
- FBTrace.sysout("firebug.xul; importFirebug");
-
- var Firebug = opener.Firebug, fbc = Firebug.chrome;
- if (fbc.inDetachedScope)
- {
- exportFirebug = null;
- return window.close();
- }
-
- fbc.inDetachedScope = true;
- fbc.waitingForDetach = false;
-
- fbc.originalBrowser = fbc.window.top.document.getElementById("fbMainContainer");
- fbc.swapBrowsers(
- fbc.originalBrowser,
- document.getElementById("fbMainContainer")
- );
- Firebug.setPlacement("detached");
-
- fbc.originalBrowser.contentWindow.onunload = function()
- {
- window.close();
- }
-
- fbc.onDetach();
- document.getElementById("fbMainContainer").focus();
- }
-
- exportFirebug = function()
- {
- FBTrace.sysout("firebug.xul; exportFirebug");
-
- exportFirebug = null;
- var Firebug = opener.Firebug, fbc = Firebug.chrome;
-
- fbc.originalBrowser.contentWindow.onunload = null;
- fbc.inDetachedScope = false;
-
- fbc.swapBrowsers(
- document.getElementById("fbMainContainer"),
- fbc.originalBrowser
- );
- Firebug.setPlacement("minimized");
- fbc.onUndetach();
- }
- </script>
-
-</window>
+<?xml version="1.0"?>
+
+<?xml-stylesheet href="chrome://global/skin/global.css"?>
+
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ windowtype="Firebug:Detached"
+ id="firebug"
+ title="Firebug"
+ width="800" height="600"
+ persist="screenX,screenY,width,height,sizemode"
+ onload="importFirebug()" onunload="" onclose="return exportFirebug();">
+
+ <vbox flex="2" id="fbMainFrame" collapsed="false">
+ <browser id="fbMainContainer" flex="2" src="" disablehistory="true" />
+ </vbox>
+
+ <keyset id="mainkeyset">
+ <key oncommand="exportFirebug();window.close();" key='W' modifiers='accel'/>
+ <key oncommand="doFirefoxCommand('Browser:Reload')" keycode='VK_F5'/>
+ <key oncommand="doFirefoxCommand('Browser:Reload')" key='r' modifiers='accel'/>
+ <key oncommand="doFirefoxCommand('Browser:ReloadSkipCache')" keycode='VK_F5' modifiers='accel'/>
+ <key oncommand="doFirefoxCommand('Browser:ReloadSkipCache')" key='r' modifiers='accel,shift'/>
+ </keyset>
+
+ <script type="application/x-javascript" src="chrome://firebug/content/trace.js"/>
+
+ <script type="application/x-javascript">
+ doFirefoxCommand = function(id)
+ {
+ opener.Firebug.Firefox.getElementById(id).doCommand();
+ }
+
+ importFirebug = function()
+ {
+ FBTrace.sysout("firebug.xul; importFirebug");
+
+ var Firebug = opener.Firebug, fbc = Firebug.chrome;
+ if (fbc.inDetachedScope)
+ {
+ exportFirebug = null;
+ return window.close();
+ }
+
+ fbc.inDetachedScope = true;
+ fbc.waitingForDetach = false;
+
+ fbc.originalBrowser = fbc.window.top.document.getElementById("fbMainContainer");
+ fbc.swapBrowsers(
+ fbc.originalBrowser,
+ document.getElementById("fbMainContainer")
+ );
+ Firebug.setPlacement("detached");
+
+ fbc.originalBrowser.contentWindow.onunload = function()
+ {
+ window.close();
+ }
+
+ fbc.onDetach();
+ document.getElementById("fbMainContainer").focus();
+ }
+
+ exportFirebug = function()
+ {
+ FBTrace.sysout("firebug.xul; exportFirebug");
+
+ exportFirebug = null;
+ var Firebug = opener.Firebug, fbc = Firebug.chrome;
+
+ fbc.originalBrowser.contentWindow.onunload = null;
+ fbc.inDetachedScope = false;
+
+ fbc.swapBrowsers(
+ document.getElementById("fbMainContainer"),
+ fbc.originalBrowser
+ );
+ Firebug.setPlacement("minimized");
+ fbc.onUndetach();
+ }
+ </script>
+
+</window>
diff --git a/content/firebug/firefox/firebugFrame.xul b/content/firebug/firefox/firebugFrame.xul
index c848960..d84c8dd 100644
--- a/content/firebug/firefox/firebugFrame.xul
+++ b/content/firebug/firefox/firebugFrame.xul
@@ -1,83 +1,83 @@
-<?xml version="1.0"?>
-<!-- See license.txt for terms of usage -->
-
-<?xul-overlay href="chrome://firebug/content/firebugOverlay.xul"?>
-
-<?xml-stylesheet href="chrome://global/skin/global.css"?>
-<?xml-stylesheet href="../firebug.css"?>
-<?xml-stylesheet href="chrome://firebug/skin/window.css"?>
-<?xml-stylesheet href="chrome://browser/skin/browser.css"?>
-
-<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- id="firebug"
- title="Firebug"
- width="800" height="600"
- persist="screenX,screenY,width,height,sizemode">
-
- <script type="application/x-javascript" src="chrome://firebug/content/trace.js"/>
- <script type="application/x-javascript" src="chrome://firebug/content/legacy.js"/>
- <script type="application/x-javascript">
- window.Firebug = top.Firebug;
- window.goDoCommand = function(aCommand) {
- try
- {
- var controller = document.commandDispatcher.getControllerForCommand(aCommand);
- if (controller && controller.isCommandEnabled(aCommand))
- controller.doCommand(aCommand);
- }
- catch (e)
- {
- Components.utils.reportError("An error occurred executing the " + aCommand + ": " + e);
- }
- };
- </script>
- <script type="application/x-javascript" src="chrome://firebug/content/firefox/panelBarWaiter.js"/>
-
- <script type="application/x-javascript" src="resource://firebug/mini-require.js"/>
- <script type="application/x-javascript" src="resource://firebug/require-debug.js"/>
- <script type="application/x-javascript" src="chrome://firebug/content/main.js"/>
-
- <stringbundleset id="stringbundleset"/>
- <commandset id="baseMenuCommandSet"/>
- <keyset id="baseMenuKeyset"/>
-
- <commandset id="mainCommandSet">
- <command id="cmd_undo" oncommand="goDoCommand('cmd_undo')"/>
- <command id="cmd_redo" oncommand="goDoCommand('cmd_redo')"/>
- <command id="cmd_cut" oncommand="goDoCommand('cmd_cut')"/>
- <command id="cmd_copy" oncommand="goDoCommand('cmd_copy')"/>
- <command id="cmd_paste" oncommand="goDoCommand('cmd_paste')"/>
- <command id="cmd_delete" oncommand="goDoCommand('cmd_delete')"/>
- <command id="cmd_selectAll" oncommand="goDoCommand('cmd_selectAll')"/>
- <command id="cmd_reload" oncommand="Firebug.chrome.reload()"/>
- <command id="cmd_firebug_reloadSkipCache" oncommand="Firebug.chrome.reload(true)"/>
- <command id="cmd_firebug_toggleOrient" oncommand="Firebug.chrome.toggleOrient()"/>
- </commandset>
-
- <keyset id="mainKeyset"/>
-
- <broadcasterset id="mainBroadcasterSet"/>
-
- <popupset id="mainPopupSet"/>
-
- <!-- Entire Firebug UI -->
- <vbox id="fbContentBox" flex="1">
- </vbox>
-
- <!-- If Firebug is displayed in this external window, but not active for currently selected
- Firefox tab, the following button allows to resume it. -->
- <vbox id="fbResumeBox" flex="1" collapsed="true">
- <hbox id="fbWindowButtons" role="toolbar" class="innerToolbar" aria-label="a11y.labels.firebug window">
- <spacer flex="1"/>
- <!-- Allow to minimize/attach Firebug if deactivated -->
- <toolbarbutton id="fbMinimizeButton" class="toolbarbutton-iconic fbInternational"
- tooltiptext="Minimize Firebug" command="cmd_firebug_minimizeFirebug"/>
- </hbox>
- <hbox flex="1" pack="center" align="center">
- <button id="fbResumeBoxButton"
- label="label.Activate Firebug for the current website"
- command="cmd_firebug_toggleSuspendFirebug" class="fbInternational"/>
- </hbox>
- </vbox>
-
-</window>
+<?xml version="1.0"?>
+<!-- See license.txt for terms of usage -->
+
+<?xul-overlay href="chrome://firebug/content/firebugOverlay.xul"?>
+
+<?xml-stylesheet href="chrome://global/skin/global.css"?>
+<?xml-stylesheet href="../firebug.css"?>
+<?xml-stylesheet href="chrome://firebug/skin/window.css"?>
+<?xml-stylesheet href="chrome://browser/skin/browser.css"?>
+
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ id="firebug"
+ title="Firebug"
+ width="800" height="600"
+ persist="screenX,screenY,width,height,sizemode">
+
+ <script type="application/x-javascript" src="chrome://firebug/content/trace.js"/>
+ <script type="application/x-javascript" src="chrome://firebug/content/legacy.js"/>
+ <script type="application/x-javascript">
+ window.Firebug = top.Firebug;
+ window.goDoCommand = function(aCommand) {
+ try
+ {
+ var controller = document.commandDispatcher.getControllerForCommand(aCommand);
+ if (controller && controller.isCommandEnabled(aCommand))
+ controller.doCommand(aCommand);
+ }
+ catch (e)
+ {
+ Components.utils.reportError("An error occurred executing the " + aCommand + ": " + e);
+ }
+ };
+ </script>
+ <script type="application/x-javascript" src="chrome://firebug/content/firefox/panelBarWaiter.js"/>
+
+ <script type="application/x-javascript" src="resource://firebug/mini-require.js"/>
+ <script type="application/x-javascript" src="resource://firebug/require-debug.js"/>
+ <script type="application/x-javascript" src="chrome://firebug/content/main.js"/>
+
+ <stringbundleset id="stringbundleset"/>
+ <commandset id="baseMenuCommandSet"/>
+ <keyset id="baseMenuKeyset"/>
+
+ <commandset id="mainCommandSet">
+ <command id="cmd_undo" oncommand="goDoCommand('cmd_undo')"/>
+ <command id="cmd_redo" oncommand="goDoCommand('cmd_redo')"/>
+ <command id="cmd_cut" oncommand="goDoCommand('cmd_cut')"/>
+ <command id="cmd_copy" oncommand="goDoCommand('cmd_copy')"/>
+ <command id="cmd_paste" oncommand="goDoCommand('cmd_paste')"/>
+ <command id="cmd_delete" oncommand="goDoCommand('cmd_delete')"/>
+ <command id="cmd_selectAll" oncommand="goDoCommand('cmd_selectAll')"/>
+ <command id="cmd_reload" oncommand="Firebug.chrome.reload()"/>
+ <command id="cmd_firebug_reloadSkipCache" oncommand="Firebug.chrome.reload(true)"/>
+ <command id="cmd_firebug_toggleOrient" oncommand="Firebug.chrome.toggleOrient()"/>
+ </commandset>
+
+ <keyset id="mainKeyset"/>
+
+ <broadcasterset id="mainBroadcasterSet"/>
+
+ <popupset id="mainPopupSet"/>
+
+ <!-- Entire Firebug UI -->
+ <vbox id="fbContentBox" flex="1">
+ </vbox>
+
+ <!-- If Firebug is displayed in this external window, but not active for currently selected
+ Firefox tab, the following button allows to resume it. -->
+ <vbox id="fbResumeBox" flex="1" collapsed="true">
+ <hbox id="fbWindowButtons" role="toolbar" class="innerToolbar" aria-label="a11y.labels.firebug window">
+ <spacer flex="1"/>
+ <!-- Allow to minimize/attach Firebug if deactivated -->
+ <toolbarbutton id="fbMinimizeButton" class="toolbarbutton-iconic fbInternational"
+ tooltiptext="Minimize Firebug" command="cmd_firebug_minimizeFirebug"/>
+ </hbox>
+ <hbox flex="1" pack="center" align="center">
+ <button id="fbResumeBoxButton"
+ label="label.Activate Firebug for the current website"
+ command="cmd_firebug_toggleSuspendFirebug" class="fbInternational"/>
+ </hbox>
+ </vbox>
+
+</window>
diff --git a/content/firebug/firefox/firebugMenuOverlay.xul b/content/firebug/firefox/firebugMenuOverlay.xul
index 1f58e1f..9a19cb5 100644
--- a/content/firebug/firefox/firebugMenuOverlay.xul
+++ b/content/firebug/firefox/firebugMenuOverlay.xul
@@ -1,108 +1,108 @@
-<?xml version="1.0"?>
-<!-- See license.txt for terms of usage -->
-
-<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- xmlns:html="http://www.w3.org/1999/xhtml">
-
- <!-- Shortcuts and commands that are active only in Firebug UI (Firebug has focus) -->
- <commandset id="mainCommandSet">
- <command id="cmd_firebug_clearConsole" oncommand="Firebug.Console.clear(Firebug.currentContext)"/>
- <command id="cmd_firebug_togglePersistConsole" oncommand="Firebug.Console.togglePersist(Firebug.currentContext)"/>
- <command id="cmd_firebug_clearNet" oncommand="Firebug.NetMonitor.clear(Firebug.currentContext)"/>
- <command id="cmd_firebug_toggleSuspendFirebug" oncommand="Firebug.toggleSuspend()"/>
- <command id="cmd_firebug_closeFirebug" oncommand="Firebug.closeFirebug(true)"/>
-
- <command id="cmd_firebug_toggleInspecting" oncommand="if (!Firebug.currentContext) Firebug.toggleBar(true); Firebug.Inspector.toggleInspecting(Firebug.currentContext)"
- checked="false"/>
- <command id="cmd_firebug_toggleQuickInfoBox" oncommand="Firebug.QuickInfoBox.toggleQuickInfoBox()"
- checked="false"/>
- <command id="cmd_firebug_toggleProfiling" oncommand="Firebug.Profiler.toggleProfiling(Firebug.currentContext)"/>
- <!-- <command id="cmd_firebug_toggleMemoryProfiling" oncommand="Firebug.MemoryProfiler.toggleProfiling(Firebug.currentContext)"/> -->
- <command id="cmd_firebug_toggleHTMLEditing" oncommand="Firebug.currentContext.getPanel('html').toggleEditing()"/>
- <command id="cmd_firebug_togglecssEditMode" oncommand="Firebug.currentContext.getPanel('stylesheet').toggleEditing()"/>
-
- <command id="cmd_firebug_focusCommandLine" oncommand="if (!Firebug.currentContext) Firebug.toggleBar(true); Firebug.CommandLine.focus(Firebug.currentContext)"/>
- <command id="cmd_firebug_focusFirebugSearch" oncommand="if (Firebug.currentContext) Firebug.Search.onSearchCommand(document);"/>
- <command id="cmd_firebug_focusWatchEditor" oncommand="if (Firebug.currentContext) Firebug.chrome.focusWatch(Firebug.currentContext);"/>
- <command id="cmd_firebug_focusLocation" oncommand="if (Firebug.currentContext) Firebug.chrome.focusLocationList(Firebug.currentContext);"/>
-
- <command id="cmd_firebug_toggleBreakOn" oncommand="Firebug.chrome.breakOnNext(Firebug.currentContext, event);"/>
-
- <command id="cmd_firebug_rerun" oncommand="Firebug.Debugger.rerun(Firebug.currentContext)" disabled="true"/>
- <command id="cmd_firebug_resumeExecution" oncommand="Firebug.Debugger.resume(Firebug.currentContext)" disabled="true"/>
- <command id="cmd_firebug_stepOver" oncommand="Firebug.Debugger.stepOver(Firebug.currentContext)" disabled="true"/>
- <command id="cmd_firebug_stepInto" oncommand="Firebug.Debugger.stepInto(Firebug.currentContext)" disabled="true"/>
- <command id="cmd_firebug_stepOut" oncommand="Firebug.Debugger.stepOut(Firebug.currentContext)" disabled="true"/>
- <command id="cmd_firebug_reenterCommand" oncommand="Firebug.CommandLine.reenter(Firebug.currentContext)"/>
-
- <command id="cmd_firebug_previousFirebugTab" oncommand="Firebug.chrome.gotoPreviousTab()"/>
- <command id="cmd_firebug_leftFirebugTab" oncommand="Firebug.chrome.gotoSiblingTab(false)"/>
- <command id="cmd_firebug_rightFirebugTab" oncommand="Firebug.chrome.gotoSiblingTab(true)"/>
- <command id="cmd_firebug_nextObject" oncommand="Firebug.chrome.gotoNextObject()"/>
- <command id="cmd_firebug_previousObject" oncommand="Firebug.chrome.gotoNextObject(true)"/>
-
- <command id="cmd_firebug_clearAllBreakpoints" oncommand="Firebug.Debugger.clearAllBreakpoints(Firebug.currentContext)"/>
- <command id="cmd_firebug_breakOnErrors" oncommand="Firebug.Options.togglePref('breakOnErrors')"/>
-
- <command id="cmd_firebug_toggleTraceConsole" oncommand="Firebug.TraceModule.openConsole()"/>
-
- <command id="cmd_firebug_toggleFirebug" oncommand="Firebug.toggleBar()"/>
- <command id="cmd_firebug_detachFirebug" oncommand="Firebug.toggleDetachBar(false, true)"/>
- <command id="cmd_firebug_minimizeFirebug" oncommand="Firebug.minimizeBar()"/>
- <command id="cmd_firebug_toggleDetachFirebug" oncommand="Firebug.toggleDetachBar(false, true)"/>
- <command id="cmd_firebug_enablePanels" oncommand="Firebug.PanelActivation.enableAllPanels()"/>
- <command id="cmd_firebug_disablePanels" oncommand="Firebug.PanelActivation.disableAllPanels()"/>
- <command id="cmd_firebug_allOn" oncommand="Firebug.PanelActivation.toggleAll('on')"/>
- <command id="cmd_firebug_clearActivationList" oncommand="Firebug.PanelActivation.clearAnnotations()"/>
- <command id="cmd_firebug_customizeFBKeys" oncommand="Firebug.ShortcutsModel.customizeShortcuts()"/>
- <command id="cmd_firebug_resetAllOptions" oncommand="Firebug.resetAllOptions(true);"/>
- <command id="cmd_firebug_inspect" oncommand="Firebug.Inspector.inspectFromContextMenu(document.popupNode);"/>
-
- <command id="cmd_firebug_togglePersistNet" oncommand="Firebug.NetMonitor.togglePersist(Firebug.currentContext)"/>
- <command id="cmd_firebug_toggleOrient" oncommand="Firebug.chrome.toggleOrient()" />
- <command id="cmd_firebug_navBack" oncommand="Firebug.NavigationHistory.goBack(Firebug.currentContext)" />
- <command id="cmd_firebug_navForward" oncommand="Firebug.NavigationHistory.goForward(Firebug.currentContext)" />
- <command id="cmd_firebug_toggleFreezeWindow" oncommand="Firebug.Debugger.toggleFreezeWindow(Firebug.currentContext)" />
-
- <command id="cmd_firebug_increaseTextSize" oncommand="Firebug.Options.changeTextSize(1);"/>
- <command id="cmd_firebug_decreaseTextSize" oncommand="Firebug.Options.changeTextSize(-1);"/>
- <command id="cmd_firebug_normalTextSize" oncommand="Firebug.Options.setTextSize(0);"/>
-
- <command id="cmd_firebug_toggleCommandPopup" oncommand="Firebug.CommandLine.Popup.toggle(Firebug.currentContext)"
- checked="false"/>
-
- <command id="cmd_firebug_openHelp" oncommand="Firebug.chrome.visitWebsite('help');"/>
- <command id="cmd_firebug_openInEditor" oncommand="Firebug.ExternalEditors.onContextMenuCommand(event);"/>
- </commandset>
-
- <keyset id="mainKeyset">
- <key id="key_firebug_toggleFirebug" keycode="VK_F12" command="cmd_firebug_toggleFirebug"/>
- <key id="key_firebug_reenterCommand" key="e" modifiers="accel shift" command="cmd_firebug_reenterCommand"/>
- <key id="key_firebug_toggleInspecting" key="c" modifiers="accel shift" command="cmd_firebug_toggleInspecting" />
- <key id="key_firebug_toggleQuickInfoBox" key="i" modifiers="accel shift" command="cmd_firebug_toggleQuickInfoBox"/>
- <key id="key_firebug_toggleProfiling" key="p" modifiers="accel shift" command="cmd_firebug_toggleProfiling"/>
- <key id="key_firebug_focusCommandLine" key="l" modifiers="accel shift" command="cmd_firebug_focusCommandLine"/>
- <key id="key_firebug_focusFirebugSearch" key="f" modifiers="accel" command="cmd_firebug_focusFirebugSearch"/>
- <key id="key_firebug_focusWatchEditor" key="n" modifiers="accel shift" command="cmd_firebug_focusWatchEditor"/>
- <key id="key_firebug_focusLocation" key=" " modifiers="accel shift" command="cmd_firebug_focusLocation"/>
- <key id="key_firebug_focusLocation" key=" " modifiers="control" command="cmd_firebug_focusLocation"/>
- <key id="key_firebug_nextObject" key="." modifiers="accel" command="cmd_firebug_nextObject"/>
- <key id="key_firebug_previousObject" key="," modifiers="accel" command="cmd_firebug_previousObject"/>
- <key id="key_firebug_previousFirebugTab" key="`" modifiers="accel" command="cmd_firebug_previousFirebugTab"/>
- <key id="key_firebug_leftFirebugTab" keycode="VK_PAGE_UP" modifiers="accel shift" command="cmd_firebug_leftFirebugTab"/>
- <key id="key_firebug_rightFirebugTab" keycode="VK_PAGE_DOWN" modifiers="accel shift" command="cmd_firebug_rightFirebugTab"/>
- <key id="key_firebug_customizeFBKeys" key="b" modifiers="accel shift alt" command="cmd_firebug_customizeFBKeys"/>
- <key id="key_firebug_detachFirebug" keycode="VK_F12" modifiers="accel" command="cmd_firebug_detachFirebug"/>
- <key id="key_firebug_closeFirebug" keycode="VK_F12" modifiers="shift" command="cmd_firebug_closeFirebug"/>
- <key id="key_firebug_clearConsole" key="r" modifiers="accel shift" command="cmd_firebug_clearConsole"/>
- <key id="key_firebug_navBack" keycode="VK_LEFT" modifiers="accel shift" command="cmd_firebug_navBack"/>
- <key id="key_firebug_navForward" keycode="VK_RIGHT" modifiers="accel shift" command="cmd_firebug_navForward"/>
- <key id="key_firebug_toggleFreezeWindow" key="f" modifiers="control shift" command="cmd_firebug_toggleFreezeWindow"/>
- <key id="key_firebug_increaseTextSize" key="+" modifiers="accel" command="cmd_firebug_increaseTextSize"/>
- <key id="key_firebug_decreaseTextSize" key="-" modifiers="accel" command="cmd_firebug_decreaseTextSize"/>
- <key id="key_firebug_normalTextSize" key="0" modifiers="accel" command="cmd_firebug_normalTextSize"/>
- <key id="key_firebug_help" keycode="VK_F1" command="cmd_firebug_openHelp"/>
- <key id="key_firebug_toggleBreakOn" key="b" modifiers="accel alt" command="cmd_firebug_toggleBreakOn"/>
- </keyset>
-
-</overlay>
+<?xml version="1.0"?>
+<!-- See license.txt for terms of usage -->
+
+<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+
+ <!-- Shortcuts and commands that are active only in Firebug UI (Firebug has focus) -->
+ <commandset id="mainCommandSet">
+ <command id="cmd_firebug_clearConsole" oncommand="Firebug.Console.clear(Firebug.currentContext)"/>
+ <command id="cmd_firebug_togglePersistConsole" oncommand="Firebug.Console.togglePersist(Firebug.currentContext)"/>
+ <command id="cmd_firebug_clearNet" oncommand="Firebug.NetMonitor.clear(Firebug.currentContext)"/>
+ <command id="cmd_firebug_toggleSuspendFirebug" oncommand="Firebug.toggleSuspend()"/>
+ <command id="cmd_firebug_closeFirebug" oncommand="Firebug.closeFirebug(true)"/>
+
+ <command id="cmd_firebug_toggleInspecting" oncommand="if (!Firebug.currentContext) Firebug.toggleBar(true); Firebug.Inspector.toggleInspecting(Firebug.currentContext)"
+ checked="false"/>
+ <command id="cmd_firebug_toggleQuickInfoBox" oncommand="Firebug.QuickInfoBox.toggleQuickInfoBox()"
+ checked="false"/>
+ <command id="cmd_firebug_toggleProfiling" oncommand="Firebug.Profiler.toggleProfiling(Firebug.currentContext)"/>
+ <!-- <command id="cmd_firebug_toggleMemoryProfiling" oncommand="Firebug.MemoryProfiler.toggleProfiling(Firebug.currentContext)"/> -->
+ <command id="cmd_firebug_toggleHTMLEditing" oncommand="Firebug.currentContext.getPanel('html').toggleEditing()"/>
+ <command id="cmd_firebug_togglecssEditMode" oncommand="Firebug.currentContext.getPanel('stylesheet').toggleEditing()"/>
+
+ <command id="cmd_firebug_focusCommandLine" oncommand="if (!Firebug.currentContext) Firebug.toggleBar(true); Firebug.CommandLine.focus(Firebug.currentContext)"/>
+ <command id="cmd_firebug_focusFirebugSearch" oncommand="if (Firebug.currentContext) Firebug.Search.onSearchCommand(document);"/>
+ <command id="cmd_firebug_focusWatchEditor" oncommand="if (Firebug.currentContext) Firebug.chrome.focusWatch(Firebug.currentContext);"/>
+ <command id="cmd_firebug_focusLocation" oncommand="if (Firebug.currentContext) Firebug.chrome.focusLocationList(Firebug.currentContext);"/>
+
+ <command id="cmd_firebug_toggleBreakOn" oncommand="Firebug.chrome.breakOnNext(Firebug.currentContext, event);"/>
+
+ <command id="cmd_firebug_rerun" oncommand="Firebug.Debugger.rerun(Firebug.currentContext)" disabled="true"/>
+ <command id="cmd_firebug_resumeExecution" oncommand="Firebug.Debugger.resume(Firebug.currentContext)" disabled="true"/>
+ <command id="cmd_firebug_stepOver" oncommand="Firebug.Debugger.stepOver(Firebug.currentContext)" disabled="true"/>
+ <command id="cmd_firebug_stepInto" oncommand="Firebug.Debugger.stepInto(Firebug.currentContext)" disabled="true"/>
+ <command id="cmd_firebug_stepOut" oncommand="Firebug.Debugger.stepOut(Firebug.currentContext)" disabled="true"/>
+ <command id="cmd_firebug_reenterCommand" oncommand="Firebug.CommandLine.reenter(Firebug.currentContext)"/>
+
+ <command id="cmd_firebug_previousFirebugTab" oncommand="Firebug.chrome.gotoPreviousTab()"/>
+ <command id="cmd_firebug_leftFirebugTab" oncommand="Firebug.chrome.gotoSiblingTab(false)"/>
+ <command id="cmd_firebug_rightFirebugTab" oncommand="Firebug.chrome.gotoSiblingTab(true)"/>
+ <command id="cmd_firebug_nextObject" oncommand="Firebug.chrome.gotoNextObject()"/>
+ <command id="cmd_firebug_previousObject" oncommand="Firebug.chrome.gotoNextObject(true)"/>
+
+ <command id="cmd_firebug_clearAllBreakpoints" oncommand="Firebug.Debugger.clearAllBreakpoints(Firebug.currentContext)"/>
+ <command id="cmd_firebug_breakOnErrors" oncommand="Firebug.Options.togglePref('breakOnErrors')"/>
+
+ <command id="cmd_firebug_toggleTraceConsole" oncommand="Firebug.TraceModule.openConsole()"/>
+
+ <command id="cmd_firebug_toggleFirebug" oncommand="Firebug.toggleBar()"/>
+ <command id="cmd_firebug_detachFirebug" oncommand="Firebug.toggleDetachBar(false, true)"/>
+ <command id="cmd_firebug_minimizeFirebug" oncommand="Firebug.minimizeBar()"/>
+ <command id="cmd_firebug_toggleDetachFirebug" oncommand="Firebug.toggleDetachBar(false, true)"/>
+ <command id="cmd_firebug_enablePanels" oncommand="Firebug.PanelActivation.enableAllPanels()"/>
+ <command id="cmd_firebug_disablePanels" oncommand="Firebug.PanelActivation.disableAllPanels()"/>
+ <command id="cmd_firebug_allOn" oncommand="Firebug.PanelActivation.toggleAll('on')"/>
+ <command id="cmd_firebug_clearActivationList" oncommand="Firebug.PanelActivation.clearAnnotations()"/>
+ <command id="cmd_firebug_customizeFBKeys" oncommand="Firebug.ShortcutsModel.customizeShortcuts()"/>
+ <command id="cmd_firebug_resetAllOptions" oncommand="Firebug.resetAllOptions(true);"/>
+ <command id="cmd_firebug_inspect" oncommand="Firebug.Inspector.inspectFromContextMenu(document.popupNode);"/>
+
+ <command id="cmd_firebug_togglePersistNet" oncommand="Firebug.NetMonitor.togglePersist(Firebug.currentContext)"/>
+ <command id="cmd_firebug_toggleOrient" oncommand="Firebug.chrome.toggleOrient()" />
+ <command id="cmd_firebug_navBack" oncommand="Firebug.NavigationHistory.goBack(Firebug.currentContext)" />
+ <command id="cmd_firebug_navForward" oncommand="Firebug.NavigationHistory.goForward(Firebug.currentContext)" />
+ <command id="cmd_firebug_toggleFreezeWindow" oncommand="Firebug.Debugger.toggleFreezeWindow(Firebug.currentContext)" />
+
+ <command id="cmd_firebug_increaseTextSize" oncommand="Firebug.Options.changeTextSize(1);"/>
+ <command id="cmd_firebug_decreaseTextSize" oncommand="Firebug.Options.changeTextSize(-1);"/>
+ <command id="cmd_firebug_normalTextSize" oncommand="Firebug.Options.setTextSize(0);"/>
+
+ <command id="cmd_firebug_toggleCommandPopup" oncommand="Firebug.CommandLine.Popup.toggle(Firebug.currentContext)"
+ checked="false"/>
+
+ <command id="cmd_firebug_openHelp" oncommand="Firebug.chrome.visitWebsite('help');"/>
+ <command id="cmd_firebug_openInEditor" oncommand="Firebug.ExternalEditors.onContextMenuCommand(event);"/>
+ </commandset>
+
+ <keyset id="mainKeyset">
+ <key id="key_firebug_toggleFirebug" keycode="VK_F12" command="cmd_firebug_toggleFirebug"/>
+ <key id="key_firebug_reenterCommand" key="e" modifiers="accel shift" command="cmd_firebug_reenterCommand"/>
+ <key id="key_firebug_toggleInspecting" key="c" modifiers="accel shift" command="cmd_firebug_toggleInspecting" />
+ <key id="key_firebug_toggleQuickInfoBox" key="i" modifiers="accel shift" command="cmd_firebug_toggleQuickInfoBox"/>
+ <key id="key_firebug_toggleProfiling" key="p" modifiers="accel shift" command="cmd_firebug_toggleProfiling"/>
+ <key id="key_firebug_focusCommandLine" key="l" modifiers="accel shift" command="cmd_firebug_focusCommandLine"/>
+ <key id="key_firebug_focusFirebugSearch" key="f" modifiers="accel" command="cmd_firebug_focusFirebugSearch"/>
+ <key id="key_firebug_focusWatchEditor" key="n" modifiers="accel shift" command="cmd_firebug_focusWatchEditor"/>
+ <key id="key_firebug_focusLocation" key=" " modifiers="accel shift" command="cmd_firebug_focusLocation"/>
+ <key id="key_firebug_focusLocation" key=" " modifiers="control" command="cmd_firebug_focusLocation"/>
+ <key id="key_firebug_nextObject" key="." modifiers="accel" command="cmd_firebug_nextObject"/>
+ <key id="key_firebug_previousObject" key="," modifiers="accel" command="cmd_firebug_previousObject"/>
+ <key id="key_firebug_previousFirebugTab" key="`" modifiers="accel" command="cmd_firebug_previousFirebugTab"/>
+ <key id="key_firebug_leftFirebugTab" keycode="VK_PAGE_UP" modifiers="accel shift" command="cmd_firebug_leftFirebugTab"/>
+ <key id="key_firebug_rightFirebugTab" keycode="VK_PAGE_DOWN" modifiers="accel shift" command="cmd_firebug_rightFirebugTab"/>
+ <key id="key_firebug_customizeFBKeys" key="b" modifiers="accel shift alt" command="cmd_firebug_customizeFBKeys"/>
+ <key id="key_firebug_detachFirebug" keycode="VK_F12" modifiers="accel" command="cmd_firebug_detachFirebug"/>
+ <key id="key_firebug_closeFirebug" keycode="VK_F12" modifiers="shift" command="cmd_firebug_closeFirebug"/>
+ <key id="key_firebug_clearConsole" key="r" modifiers="accel shift" command="cmd_firebug_clearConsole"/>
+ <key id="key_firebug_navBack" keycode="VK_LEFT" modifiers="accel shift" command="cmd_firebug_navBack"/>
+ <key id="key_firebug_navForward" keycode="VK_RIGHT" modifiers="accel shift" command="cmd_firebug_navForward"/>
+ <key id="key_firebug_toggleFreezeWindow" key="f" modifiers="control shift" command="cmd_firebug_toggleFreezeWindow"/>
+ <key id="key_firebug_increaseTextSize" key="+" modifiers="accel" command="cmd_firebug_increaseTextSize"/>
+ <key id="key_firebug_decreaseTextSize" key="-" modifiers="accel" command="cmd_firebug_decreaseTextSize"/>
+ <key id="key_firebug_normalTextSize" key="0" modifiers="accel" command="cmd_firebug_normalTextSize"/>
+ <key id="key_firebug_help" keycode="VK_F1" command="cmd_firebug_openHelp"/>
+ <key id="key_firebug_toggleBreakOn" key="b" modifiers="accel alt" command="cmd_firebug_toggleBreakOn"/>
+ </keyset>
+
+</overlay>
diff --git a/content/firebug/firefox/macBrowserOverlay.css b/content/firebug/firefox/macBrowserOverlay.css
index d5d1093..05ed1e7 100644
--- a/content/firebug/firefox/macBrowserOverlay.css
+++ b/content/firebug/firefox/macBrowserOverlay.css
@@ -1,45 +1,45 @@
-#firebug-button .badge > .label {
- -moz-box-sizing: border-box;
- visibility: hidden;
- font-size: 9px;
- padding: 0 3px;
- line-height: 13px;
- font-family: Arial, Helvetica, sans-serif;
- color: #fff;
- border-radius: 8px;
- background-color: #d95b09;
- border: 2px solid #fff;
- box-shadow: none;
- background-image: none;
-}
-
-/* Slightly different positions of the badge for individual toolbars */
-#nav-bar #firebug-button .badge {
- margin: -5px -10px 0 -8px;
-}
-
-#fbContentSplitter{
- border-color: threedShadow !important;
- background-color: #FFFFFF;
-}
-
-#fbContentSplitter[dir=reverse]{
- transform: scale(-1, -1);
-}
-
-#fbContentSplitter[orient=vertical] {
- background: transparent;
- border-bottom-width: 0;
- min-height: 7px;
- height: 7px;
- margin-bottom: -7px;
- position: relative;
-}
-
-#fbContentSplitter[orient=horizontal] {
- border-right: 1px solid !important;
- border-left: none;
- min-width: 5px;
- max-width: 5px;
- background-color: -moz-dialog;
+#firebug-button .badge > .label {
+ -moz-box-sizing: border-box;
+ visibility: hidden;
+ font-size: 9px;
+ padding: 0 3px;
+ line-height: 13px;
+ font-family: Arial, Helvetica, sans-serif;
+ color: #fff;
+ border-radius: 8px;
+ background-color: #d95b09;
+ border: 2px solid #fff;
+ box-shadow: none;
+ background-image: none;
+}
+
+/* Slightly different positions of the badge for individual toolbars */
+#nav-bar #firebug-button .badge {
+ margin: -5px -10px 0 -8px;
+}
+
+#fbContentSplitter{
+ border-color: threedShadow !important;
+ background-color: #FFFFFF;
+}
+
+#fbContentSplitter[dir=reverse]{
+ transform: scale(-1, -1);
+}
+
+#fbContentSplitter[orient=vertical] {
+ background: transparent;
+ border-bottom-width: 0;
+ min-height: 7px;
+ height: 7px;
+ margin-bottom: -7px;
+ position: relative;
+}
+
+#fbContentSplitter[orient=horizontal] {
+ border-right: 1px solid !important;
+ border-left: none;
+ min-width: 5px;
+ max-width: 5px;
+ background-color: -moz-dialog;
}
\ No newline at end of file
diff --git a/content/firebug/firefox/panelBarWaiter.js b/content/firebug/firefox/panelBarWaiter.js
index 0de1075..a74d2e1 100644
--- a/content/firebug/firefox/panelBarWaiter.js
+++ b/content/firebug/firefox/panelBarWaiter.js
@@ -1,127 +1,127 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-
-/**
- * This file should be loaded by script tags ahead of bindings.xml and module loading.
- * It synchronizes the panelBar initialization with the module loading.
- */
-window.panelBarWaiter = function()
-{
- var panelBarWaiter = {};
- var waitingPanelBarCount = 2;
- var waitLimit = 200;
- var chromeFactory = false; // set when the module loader is ready
- var preInitializeCallback = null;
- var postInitializeCallback = null;
-
- /**
- * Called by module loader to signal modules loaded
- */
- panelBarWaiter.waitForPanelBar = function(chromeFactoryIn, preInitializeCallbackIn,
- postInitializeCallbackIn)
- {
- // set these via closure scope, we don't know which call will be fire
- if (chromeFactoryIn)
- chromeFactory = chromeFactoryIn;
-
- if (preInitializeCallbackIn)
- preInitializeCallback = preInitializeCallbackIn;
-
- if (postInitializeCallbackIn)
- postInitializeCallback = postInitializeCallbackIn;
-
- waitLimit -= 1;
-
- if (!panelBarWaiter.initializeWhenReady() && waitLimit > 0)
- {
- if (FBTrace.DBG_INITIALIZE)
- {
- var msg = "panelBarWaiter; waitForPanelBar "+waitLimit;
- msg += " waitingPanelBarCount: "+waitingPanelBarCount;
- msg += " chromeFactory: "+ chromeFactory;
- FBTrace.sysout(msg);
- }
-
- if (!chromeFactory)
- setTimeout(panelBarWaiter.waitForPanelBar, 10);
- }
- };
-
- panelBarWaiter.initializeWhenReady = function()
- {
- try
- {
- // Wait until all panelBar bindings and modules are ready before initializing
- if (waitingPanelBarCount == 0 && chromeFactory)
- {
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("panelBarWaiter; initializing now");
-
- var chrome = chromeFactory.createFirebugChrome(window);
-
- if (FBTrace.DBG_INITIALIZE)
- {
- FBTrace.sysout("panelBarWaiter; callbacks ",
- {
- preInitializeCallback: preInitializeCallback,
- postInitializeCallback: postInitializeCallback
- });
- }
-
- if (preInitializeCallback)
- preInitializeCallback(chrome);
-
- chrome.initialize(); // This needs to be the window-specific chrome
-
- if (postInitializeCallback)
- postInitializeCallback(chrome);
-
- delete window.panelBarWaiter;
- return true; // the panel bar is ready
- }
- }
- catch (exc)
- {
- // Disaster!
- var msg = exc.toString() +" "+(exc.fileName || exc.sourceName) + "@" + exc.lineNumber;
- Components.utils.reportError(msg);
- if (FBTrace.sysout)
- FBTrace.sysout("chrome.panelBarReady FAILS: "+msg, exc);
- window.dump("getStackDump:"+FBL.getStackDump()+"\n");
- }
- return false;
- };
-
- /**
- * Called by binding.xml to signal ctor for a panel.
- */
- panelBarWaiter.panelBarReady = function()
- {
- // We initialize Firebug from here instead of from the onload event because
- // we need to make sure it is initialized before the browser starts loading
- // the home page
- try
- {
- waitingPanelBarCount -= 1;
-
- if (FBTrace.DBG_INITIALIZE)
- {
- FBTrace.sysout("chrome; panelBarReady (" + waitingPanelBarCount + ") " +
- (chromeFactory ? "Modules loaded" : "Modules not yet loaded") +
- " in " + window.location);
- }
-
- panelBarWaiter.initializeWhenReady();
- }
- catch (e)
- {
- dump("bindings panelBar ctor FAILs: " + e + "\n");
- dump("window.top " + window.top.location + " window.opener: " + window.opener + "\n");
- }
- };
-
- return panelBarWaiter;
-}();
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+
+/**
+ * This file should be loaded by script tags ahead of bindings.xml and module loading.
+ * It synchronizes the panelBar initialization with the module loading.
+ */
+window.panelBarWaiter = function()
+{
+ var panelBarWaiter = {};
+ var waitingPanelBarCount = 2;
+ var waitLimit = 200;
+ var chromeFactory = false; // set when the module loader is ready
+ var preInitializeCallback = null;
+ var postInitializeCallback = null;
+
+ /**
+ * Called by module loader to signal modules loaded
+ */
+ panelBarWaiter.waitForPanelBar = function(chromeFactoryIn, preInitializeCallbackIn,
+ postInitializeCallbackIn)
+ {
+ // set these via closure scope, we don't know which call will be fire
+ if (chromeFactoryIn)
+ chromeFactory = chromeFactoryIn;
+
+ if (preInitializeCallbackIn)
+ preInitializeCallback = preInitializeCallbackIn;
+
+ if (postInitializeCallbackIn)
+ postInitializeCallback = postInitializeCallbackIn;
+
+ waitLimit -= 1;
+
+ if (!panelBarWaiter.initializeWhenReady() && waitLimit > 0)
+ {
+ if (FBTrace.DBG_INITIALIZE)
+ {
+ var msg = "panelBarWaiter; waitForPanelBar "+waitLimit;
+ msg += " waitingPanelBarCount: "+waitingPanelBarCount;
+ msg += " chromeFactory: "+ chromeFactory;
+ FBTrace.sysout(msg);
+ }
+
+ if (!chromeFactory)
+ setTimeout(panelBarWaiter.waitForPanelBar, 10);
+ }
+ };
+
+ panelBarWaiter.initializeWhenReady = function()
+ {
+ try
+ {
+ // Wait until all panelBar bindings and modules are ready before initializing
+ if (waitingPanelBarCount == 0 && chromeFactory)
+ {
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("panelBarWaiter; initializing now");
+
+ var chrome = chromeFactory.createFirebugChrome(window);
+
+ if (FBTrace.DBG_INITIALIZE)
+ {
+ FBTrace.sysout("panelBarWaiter; callbacks ",
+ {
+ preInitializeCallback: preInitializeCallback,
+ postInitializeCallback: postInitializeCallback
+ });
+ }
+
+ if (preInitializeCallback)
+ preInitializeCallback(chrome);
+
+ chrome.initialize(); // This needs to be the window-specific chrome
+
+ if (postInitializeCallback)
+ postInitializeCallback(chrome);
+
+ delete window.panelBarWaiter;
+ return true; // the panel bar is ready
+ }
+ }
+ catch (exc)
+ {
+ // Disaster!
+ var msg = exc.toString() +" "+(exc.fileName || exc.sourceName) + "@" + exc.lineNumber;
+ Components.utils.reportError(msg);
+ if (FBTrace.sysout)
+ FBTrace.sysout("chrome.panelBarReady FAILS: "+msg, exc);
+ window.dump("getStackDump:"+FBL.getStackDump()+"\n");
+ }
+ return false;
+ };
+
+ /**
+ * Called by binding.xml to signal ctor for a panel.
+ */
+ panelBarWaiter.panelBarReady = function()
+ {
+ // We initialize Firebug from here instead of from the onload event because
+ // we need to make sure it is initialized before the browser starts loading
+ // the home page
+ try
+ {
+ waitingPanelBarCount -= 1;
+
+ if (FBTrace.DBG_INITIALIZE)
+ {
+ FBTrace.sysout("chrome; panelBarReady (" + waitingPanelBarCount + ") " +
+ (chromeFactory ? "Modules loaded" : "Modules not yet loaded") +
+ " in " + window.location);
+ }
+
+ panelBarWaiter.initializeWhenReady();
+ }
+ catch (e)
+ {
+ dump("bindings panelBar ctor FAILs: " + e + "\n");
+ dump("window.top " + window.top.location + " window.opener: " + window.opener + "\n");
+ }
+ };
+
+ return panelBarWaiter;
+}();
+
+// ********************************************************************************************* //
diff --git a/content/firebug/firefox/start-button/startButton.xml b/content/firebug/firefox/start-button/startButton.xml
index a105859..1b1235a 100644
--- a/content/firebug/firefox/start-button/startButton.xml
+++ b/content/firebug/firefox/start-button/startButton.xml
@@ -1,26 +1,26 @@
-<?xml version="1.0"?>
-
-<bindings xmlns="http://www.mozilla.org/xbl"
- xmlns:xbl="http://www.mozilla.org/xbl"
- xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-<!-- Firebug start button is available in a 'Customize Toolbar' dialog with support
- for error badge that displays number of errors on the current page (if any) -->
-<binding id="start-button" display="xul:menu"
- extends="chrome://global/content/bindings/toolbarbutton.xml#menu-button">
-
- <content>
- <children includes="observes|template|menupopup|panel|tooltip"/>
- <xul:stack class="badge">
- <xul:label class="label" value="0" xbl:inherits="value=errorCount"/>
- </xul:stack>
- <xul:toolbarbutton class="fb-toolbarbutton box-inherit toolbarbutton-menubutton-button"
- anonid="button" flex="1" allowevents="true"
- xbl:inherits="disabled,crop,image,label,accesskey,command,align,dir,pack,orient"/>
- <xul:dropmarker type="menu-button" class="toolbarbutton-menubutton-dropmarker"
- xbl:inherits="align,dir,pack,orient,disabled,label"/>
- </content>
-
-</binding>
-
-</bindings>
+<?xml version="1.0"?>
+
+<bindings xmlns="http://www.mozilla.org/xbl"
+ xmlns:xbl="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<!-- Firebug start button is available in a 'Customize Toolbar' dialog with support
+ for error badge that displays number of errors on the current page (if any) -->
+<binding id="start-button" display="xul:menu"
+ extends="chrome://global/content/bindings/toolbarbutton.xml#menu-button">
+
+ <content>
+ <children includes="observes|template|menupopup|panel|tooltip"/>
+ <xul:stack class="badge">
+ <xul:label class="label" value="0" xbl:inherits="value=errorCount"/>
+ </xul:stack>
+ <xul:toolbarbutton class="fb-toolbarbutton box-inherit toolbarbutton-menubutton-button"
+ anonid="button" flex="1" allowevents="true"
+ xbl:inherits="disabled,crop,image,label,accesskey,command,align,dir,pack,orient"/>
+ <xul:dropmarker type="menu-button" class="toolbarbutton-menubutton-dropmarker"
+ xbl:inherits="align,dir,pack,orient,disabled,label"/>
+ </content>
+
+</binding>
+
+</bindings>
diff --git a/content/firebug/firefox/start-button/startButtonOverlay.js b/content/firebug/firefox/start-button/startButtonOverlay.js
index 12c88b5..8410f3e 100644
--- a/content/firebug/firefox/start-button/startButtonOverlay.js
+++ b/content/firebug/firefox/start-button/startButtonOverlay.js
@@ -1,235 +1,235 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/firefox",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/dom",
- "firebug/lib/options",
- "firebug/firefox/browserOverlayLib",
-],
-function(Obj, Firebug, Firefox, Locale, Events, Dom, Options, BrowserOverlayLib) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-// Module Implementation
-
-/**
- * @module StartButton module represents the UI entry point to Firebug. This "start button"
- * formerly known as "the status bar icon" is automatically appended into Firefox toolbar
- * (since Firefox 4).
- *
- * Start button is associated with a menu (fbStatusContextMenu) that contains basic actions
- * such as panel activation and also indicates whether Firebug is activated/deactivated for
- * the current page (by changing its color).
- */
-Firebug.StartButton = Obj.extend(Firebug.Module,
-/** @lends Firebug.StartButton */
-{
- dispatchName: "startButton",
-
- initializeUI: function()
- {
- Firebug.Module.initializeUI.apply(this, arguments);
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("StartButton.initializeUI;");
-
- // When Firebug is full loaded content of the start button tooltip
- // will be generated by this StartButton object.
- var firebugButton = Firefox.getElementById("firebug-buttonTooltip");
- var listener = Firebug.StartButton.onTooltipShowing.bind(this);
- firebugButton.addEventListener("popupshowing", listener);
- },
-
- shutdown: function()
- {
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Tooltip
-
- onTooltipShowing: function(event)
- {
- var tooltip = event.target;
- var doc = tooltip.ownerDocument;
-
- Dom.eraseNode(tooltip);
-
- with (BrowserOverlayLib)
- {
- tooltip.appendChild($label(doc, {
- "class": "version",
- value: "Firebug " + Firebug.getVersion()
- }));
-
- var status = $el(doc, "hbox");
- tooltip.appendChild(status);
-
- var suspended = Firebug.getSuspended();
- status.appendChild($label(doc, {
- "class": "status",
- value: suspended ? Locale.$STR("startbutton.tip.deactivated") :
- Locale.$STRP("plural.Total_Firebugs2", [Firebug.TabWatcher.contexts.length])
- }));
-
- if (suspended)
- return;
-
- status.appendChild($label(doc, {
- "class": "placement",
- value: "(" + Locale.$STR(Firebug.getPlacement()) + ")"
- }));
-
- if (Firebug.allPagesActivation == "on")
- {
- tooltip.appendChild($label(doc, {
- "class": "alwaysOn",
- value: Locale.$STR("enablement.on") + " " +
- Locale.$STR("enablement.for_all_pages")
- }));
- }
-
- // Panel enablement status info
- tooltip.appendChild($label(doc, {
- "class": "enablement",
- value: Locale.$STR("enablement.Panel_activation_status")
- }));
-
- var statuses = this.getEnablementStatus();
- for (var i=0; i<statuses.length; i++)
- {
- var status = statuses[i];
- var parent = $el(doc, "hbox");
- tooltip.appendChild(parent);
-
- parent.appendChild($label(doc, {
- "class": "panelName " + status.status,
- value: status.name + ":"
- }));
-
- parent.appendChild($label(doc, {
- "class": "panelStatus " + status.status,
- value: status.statusLabel
- }));
- }
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Error count
-
- showCount: function(errorCount)
- {
- var firebugButton = Firefox.getElementById("firebug-button");
- if (errorCount && Firebug.showErrorCount)
- {
- if (firebugButton)
- {
- firebugButton.setAttribute("showErrors", "true");
- firebugButton.setAttribute("errorCount", errorCount);
- }
- }
- else
- {
- if (firebugButton)
- {
- firebugButton.removeAttribute("showErrors");
-
- // Use '0', so the horizontal space for the number is still allocated.
- // The button will cause re-layout if there are more than 9 errors.
- firebugButton.setAttribute("errorCount", "0");
- }
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Tooltip
-
- resetTooltip: function()
- {
- var firebugStatus = Firefox.getElementById("firebugStatus");
- if (!firebugStatus)
- return;
-
- // The start button is colorful only if there is a context
- var active = Firebug.currentContext ? "true" : "false";
- firebugStatus.setAttribute("firebugActive", active);
-
- if (FBTrace.DBG_TOOLTIP)
- FBTrace.sysout("StartButton.resetTooltip; called: firebug active: " + active);
- },
-
- getEnablementStatus: function()
- {
- var firebugStatus = Firefox.getElementById("firebugStatus");
- if (!firebugStatus)
- return;
-
- var panels = Firebug.getActivablePanelTypes();
- var statuses = [];
-
- var strOn = Locale.$STR("enablement.on");
- var strOff = Locale.$STR("enablement.off");
-
- for (var i=0; i<panels.length; ++i)
- {
- var panelName = panels[i].prototype.name;
- var status = firebugStatus.getAttribute(panelName);
- var statusLabel = (status == "on") ? strOn : strOff;
-
- statuses.push({
- name: Firebug.getPanelTitle(panels[i]),
- status: status,
- statusLabel: statusLabel
- });
- }
-
- return statuses;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Activation
-
- getSuspended: function()
- {
- var suspendMarker = Firefox.getElementById("firebugStatus");
- if (suspendMarker && suspendMarker.hasAttribute("suspended"))
- return suspendMarker.getAttribute("suspended");
-
- return null;
- },
-
- setSuspended: function(value)
- {
- var suspendMarker = Firefox.getElementById("firebugStatus");
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("StartButton.setSuspended; to " + value + ". Browser: " +
- Firebug.chrome.window.document.title);
-
- if (value == "suspended")
- suspendMarker.setAttribute("suspended", value);
- else
- suspendMarker.removeAttribute("suspended");
-
- this.resetTooltip();
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.StartButton);
-
-// ********************************************************************************************* //
-
-return Firebug.StartButton;
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/firefox",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/dom",
+ "firebug/lib/options",
+ "firebug/firefox/browserOverlayLib",
+],
+function(Obj, Firebug, Firefox, Locale, Events, Dom, Options, BrowserOverlayLib) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+// Module Implementation
+
+/**
+ * @module StartButton module represents the UI entry point to Firebug. This "start button"
+ * formerly known as "the status bar icon" is automatically appended into Firefox toolbar
+ * (since Firefox 4).
+ *
+ * Start button is associated with a menu (fbStatusContextMenu) that contains basic actions
+ * such as panel activation and also indicates whether Firebug is activated/deactivated for
+ * the current page (by changing its color).
+ */
+Firebug.StartButton = Obj.extend(Firebug.Module,
+/** @lends Firebug.StartButton */
+{
+ dispatchName: "startButton",
+
+ initializeUI: function()
+ {
+ Firebug.Module.initializeUI.apply(this, arguments);
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("StartButton.initializeUI;");
+
+ // When Firebug is full loaded content of the start button tooltip
+ // will be generated by this StartButton object.
+ var firebugButton = Firefox.getElementById("firebug-buttonTooltip");
+ var listener = Firebug.StartButton.onTooltipShowing.bind(this);
+ firebugButton.addEventListener("popupshowing", listener);
+ },
+
+ shutdown: function()
+ {
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Tooltip
+
+ onTooltipShowing: function(event)
+ {
+ var tooltip = event.target;
+ var doc = tooltip.ownerDocument;
+
+ Dom.eraseNode(tooltip);
+
+ with (BrowserOverlayLib)
+ {
+ tooltip.appendChild($label(doc, {
+ "class": "version",
+ value: "Firebug " + Firebug.getVersion()
+ }));
+
+ var status = $el(doc, "hbox");
+ tooltip.appendChild(status);
+
+ var suspended = Firebug.getSuspended();
+ status.appendChild($label(doc, {
+ "class": "status",
+ value: suspended ? Locale.$STR("startbutton.tip.deactivated") :
+ Locale.$STRP("plural.Total_Firebugs2", [Firebug.TabWatcher.contexts.length])
+ }));
+
+ if (suspended)
+ return;
+
+ status.appendChild($label(doc, {
+ "class": "placement",
+ value: "(" + Locale.$STR(Firebug.getPlacement()) + ")"
+ }));
+
+ if (Firebug.allPagesActivation == "on")
+ {
+ tooltip.appendChild($label(doc, {
+ "class": "alwaysOn",
+ value: Locale.$STR("enablement.on") + " " +
+ Locale.$STR("enablement.for_all_pages")
+ }));
+ }
+
+ // Panel enablement status info
+ tooltip.appendChild($label(doc, {
+ "class": "enablement",
+ value: Locale.$STR("enablement.Panel_activation_status")
+ }));
+
+ var statuses = this.getEnablementStatus();
+ for (var i=0; i<statuses.length; i++)
+ {
+ var status = statuses[i];
+ var parent = $el(doc, "hbox");
+ tooltip.appendChild(parent);
+
+ parent.appendChild($label(doc, {
+ "class": "panelName " + status.status,
+ value: status.name + ":"
+ }));
+
+ parent.appendChild($label(doc, {
+ "class": "panelStatus " + status.status,
+ value: status.statusLabel
+ }));
+ }
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Error count
+
+ showCount: function(errorCount)
+ {
+ var firebugButton = Firefox.getElementById("firebug-button");
+ if (errorCount && Firebug.showErrorCount)
+ {
+ if (firebugButton)
+ {
+ firebugButton.setAttribute("showErrors", "true");
+ firebugButton.setAttribute("errorCount", errorCount);
+ }
+ }
+ else
+ {
+ if (firebugButton)
+ {
+ firebugButton.removeAttribute("showErrors");
+
+ // Use '0', so the horizontal space for the number is still allocated.
+ // The button will cause re-layout if there are more than 9 errors.
+ firebugButton.setAttribute("errorCount", "0");
+ }
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Tooltip
+
+ resetTooltip: function()
+ {
+ var firebugStatus = Firefox.getElementById("firebugStatus");
+ if (!firebugStatus)
+ return;
+
+ // The start button is colorful only if there is a context
+ var active = Firebug.currentContext ? "true" : "false";
+ firebugStatus.setAttribute("firebugActive", active);
+
+ if (FBTrace.DBG_TOOLTIP)
+ FBTrace.sysout("StartButton.resetTooltip; called: firebug active: " + active);
+ },
+
+ getEnablementStatus: function()
+ {
+ var firebugStatus = Firefox.getElementById("firebugStatus");
+ if (!firebugStatus)
+ return;
+
+ var panels = Firebug.getActivablePanelTypes();
+ var statuses = [];
+
+ var strOn = Locale.$STR("enablement.on");
+ var strOff = Locale.$STR("enablement.off");
+
+ for (var i=0; i<panels.length; ++i)
+ {
+ var panelName = panels[i].prototype.name;
+ var status = firebugStatus.getAttribute(panelName);
+ var statusLabel = (status == "on") ? strOn : strOff;
+
+ statuses.push({
+ name: Firebug.getPanelTitle(panels[i]),
+ status: status,
+ statusLabel: statusLabel
+ });
+ }
+
+ return statuses;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Activation
+
+ getSuspended: function()
+ {
+ var suspendMarker = Firefox.getElementById("firebugStatus");
+ if (suspendMarker && suspendMarker.hasAttribute("suspended"))
+ return suspendMarker.getAttribute("suspended");
+
+ return null;
+ },
+
+ setSuspended: function(value)
+ {
+ var suspendMarker = Firefox.getElementById("firebugStatus");
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("StartButton.setSuspended; to " + value + ". Browser: " +
+ Firebug.chrome.window.document.title);
+
+ if (value == "suspended")
+ suspendMarker.setAttribute("suspended", value);
+ else
+ suspendMarker.removeAttribute("suspended");
+
+ this.resetTooltip();
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.StartButton);
+
+// ********************************************************************************************* //
+
+return Firebug.StartButton;
+});
diff --git a/content/firebug/html/highlighter.css b/content/firebug/html/highlighter.css
index 049ed82..3b70fd8 100644
--- a/content/firebug/html/highlighter.css
+++ b/content/firebug/html/highlighter.css
@@ -1,130 +1,130 @@
-/* See license.txt for terms of usage */
-/** reset styling **/
-.firebugResetStyles {
- z-index: 2147483646 !important;
- top: 0 !important;
- left: 0 !important;
- display: block !important;
- border: 0 none !important;
- margin: 0 !important;
- padding: 0 !important;
- outline: 0 !important;
- min-width: 0 !important;
- max-width: none !important;
- min-height: 0 !important;
- max-height: none !important;
- position: fixed !important;
- transform: rotate(0deg) !important;
- transform-origin: 50% 50% !important;
- border-radius: 0 !important;
- box-shadow: none !important;
- background: transparent none !important;
- pointer-events: none !important;
- white-space: normal !important;
-}
-
-.firebugBlockBackgroundColor {
- background-color: transparent !important;
-}
-
-.firebugResetStyles:before, .firebugResetStyles:after {
- content: "" !important;
-}
-/**actual styling to be modified by firebug theme**/
-.firebugCanvas {
- display: none !important;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-.firebugLayoutBox {
- width: auto !important;
- position: static !important;
-}
-
-.firebugLayoutBoxOffset {
- opacity: 0.8 !important;
- position: fixed !important;
-}
-
-.firebugLayoutLine {
- opacity: 0.4 !important;
- background-color: #000000 !important;
-}
-
-.firebugLayoutLineLeft, .firebugLayoutLineRight {
- width: 1px !important;
- height: 100% !important;
-}
-
-.firebugLayoutLineTop, .firebugLayoutLineBottom {
- width: 100% !important;
- height: 1px !important;
-}
-
-.firebugLayoutLineTop {
- margin-top: -1px !important;
- border-top: 1px solid #999999 !important;
-}
-
-.firebugLayoutLineRight {
- border-right: 1px solid #999999 !important;
-}
-
-.firebugLayoutLineBottom {
- border-bottom: 1px solid #999999 !important;
-}
-
-.firebugLayoutLineLeft {
- margin-left: -1px !important;
- border-left: 1px solid #999999 !important;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-.firebugLayoutBoxParent {
- border-top: 0 none !important;
- border-right: 1px dashed #E00 !important;
- border-bottom: 1px dashed #E00 !important;
- border-left: 0 none !important;
- position: fixed !important;
- width: auto !important;
-}
-
-.firebugRuler{
- position: absolute !important;
-}
-
-.firebugRulerH {
- top: -15px !important;
- left: 0 !important;
- width: 100% !important;
- height: 14px !important;
- background: url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%13%88%00%00%00%0E%08%02%00%00%00L%25a%0A%00%00%00%04gAMA%00%00%D6%D8%D4OX2%00%00%00%19tEXtSoftware%00Adobe%20ImageReadyq%C9e%3C%00%00%04%F8IDATx%DA%EC%DD%D1n%E2%3A%00E%D1%80%F8%FF%EF%E2%AF2%95%D0D4%0E%C1%14%B0%8Fa-%E9%3E%CC%9C%87n%B9%81%A6W0%1C%A6i%9A%E7y%0As8%1CT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AATE9%FE%FCw%3E%9F%AF%2B%2F%BA%97%F [...]
- border-top: 1px solid #BBBBBB !important;
- border-right: 1px dashed #BBBBBB !important;
- border-bottom: 1px solid #000000 !important;
-}
-
-.firebugRulerV {
- top: 0 !important;
- left: -15px !important;
- width: 14px !important;
- height: 100% !important;
- background: url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0E%00%00%13%88%08%02%00%00%00%0E%F5%CB%10%00%00%00%04gAMA%00%00%D6%D8%D4OX2%00%00%00%19tEXtSoftware%00Adobe%20ImageReadyq%C9e%3C%00%00%06~IDATx%DA%EC%DD%D1v%A20%14%40Qt%F1%FF%FF%E4%97%D9%07%3BT%19%92%DC%40(%90%EEy%9A5%CB%B6%E8%F6%9Ac%A4%CC0%84%FF%DC%9E%CF%E7%E3%F1%88%DE4%F8%5D%C7%9F%2F%BA%DD%5E%7FI%7D%F18%DDn%BA%C5%FB%DF%97%BFk%F2%10%FF%FD%B4%F2M%A7%FB%FD%FD%B3%22%07p%8F%3F%AE%E3%F4S%8A%8F%40%EEq%9D%BE8D%F0%0 [...]
- border-left: 1px solid #BBBBBB !important;
- border-right: 1px solid #000000 !important;
- border-bottom: 1px dashed #BBBBBB !important;
-}
-
-.overflowRulerX > .firebugRulerV {
- left: 0 !important;
-}
-
-.overflowRulerY > .firebugRulerH {
- top: 0 !important;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-.fbProxyElement {
- position: fixed !important;
- pointer-events: auto !important;
-}
+/* See license.txt for terms of usage */
+/** reset styling **/
+.firebugResetStyles {
+ z-index: 2147483646 !important;
+ top: 0 !important;
+ left: 0 !important;
+ display: block !important;
+ border: 0 none !important;
+ margin: 0 !important;
+ padding: 0 !important;
+ outline: 0 !important;
+ min-width: 0 !important;
+ max-width: none !important;
+ min-height: 0 !important;
+ max-height: none !important;
+ position: fixed !important;
+ transform: rotate(0deg) !important;
+ transform-origin: 50% 50% !important;
+ border-radius: 0 !important;
+ box-shadow: none !important;
+ background: transparent none !important;
+ pointer-events: none !important;
+ white-space: normal !important;
+}
+
+.firebugBlockBackgroundColor {
+ background-color: transparent !important;
+}
+
+.firebugResetStyles:before, .firebugResetStyles:after {
+ content: "" !important;
+}
+/**actual styling to be modified by firebug theme**/
+.firebugCanvas {
+ display: none !important;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+.firebugLayoutBox {
+ width: auto !important;
+ position: static !important;
+}
+
+.firebugLayoutBoxOffset {
+ opacity: 0.8 !important;
+ position: fixed !important;
+}
+
+.firebugLayoutLine {
+ opacity: 0.4 !important;
+ background-color: #000000 !important;
+}
+
+.firebugLayoutLineLeft, .firebugLayoutLineRight {
+ width: 1px !important;
+ height: 100% !important;
+}
+
+.firebugLayoutLineTop, .firebugLayoutLineBottom {
+ width: 100% !important;
+ height: 1px !important;
+}
+
+.firebugLayoutLineTop {
+ margin-top: -1px !important;
+ border-top: 1px solid #999999 !important;
+}
+
+.firebugLayoutLineRight {
+ border-right: 1px solid #999999 !important;
+}
+
+.firebugLayoutLineBottom {
+ border-bottom: 1px solid #999999 !important;
+}
+
+.firebugLayoutLineLeft {
+ margin-left: -1px !important;
+ border-left: 1px solid #999999 !important;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+.firebugLayoutBoxParent {
+ border-top: 0 none !important;
+ border-right: 1px dashed #E00 !important;
+ border-bottom: 1px dashed #E00 !important;
+ border-left: 0 none !important;
+ position: fixed !important;
+ width: auto !important;
+}
+
+.firebugRuler{
+ position: absolute !important;
+}
+
+.firebugRulerH {
+ top: -15px !important;
+ left: 0 !important;
+ width: 100% !important;
+ height: 14px !important;
+ background: url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%13%88%00%00%00%0E%08%02%00%00%00L%25a%0A%00%00%00%04gAMA%00%00%D6%D8%D4OX2%00%00%00%19tEXtSoftware%00Adobe%20ImageReadyq%C9e%3C%00%00%04%F8IDATx%DA%EC%DD%D1n%E2%3A%00E%D1%80%F8%FF%EF%E2%AF2%95%D0D4%0E%C1%14%B0%8Fa-%E9%3E%CC%9C%87n%B9%81%A6W0%1C%A6i%9A%E7y%0As8%1CT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AAT%A9R%A5J%95*U%AATE9%FE%FCw%3E%9F%AF%2B%2F%BA%97%F [...]
+ border-top: 1px solid #BBBBBB !important;
+ border-right: 1px dashed #BBBBBB !important;
+ border-bottom: 1px solid #000000 !important;
+}
+
+.firebugRulerV {
+ top: 0 !important;
+ left: -15px !important;
+ width: 14px !important;
+ height: 100% !important;
+ background: url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0E%00%00%13%88%08%02%00%00%00%0E%F5%CB%10%00%00%00%04gAMA%00%00%D6%D8%D4OX2%00%00%00%19tEXtSoftware%00Adobe%20ImageReadyq%C9e%3C%00%00%06~IDATx%DA%EC%DD%D1v%A20%14%40Qt%F1%FF%FF%E4%97%D9%07%3BT%19%92%DC%40(%90%EEy%9A5%CB%B6%E8%F6%9Ac%A4%CC0%84%FF%DC%9E%CF%E7%E3%F1%88%DE4%F8%5D%C7%9F%2F%BA%DD%5E%7FI%7D%F18%DDn%BA%C5%FB%DF%97%BFk%F2%10%FF%FD%B4%F2M%A7%FB%FD%FD%B3%22%07p%8F%3F%AE%E3%F4S%8A%8F%40%EEq%9D%BE8D%F0%0 [...]
+ border-left: 1px solid #BBBBBB !important;
+ border-right: 1px solid #000000 !important;
+ border-bottom: 1px dashed #BBBBBB !important;
+}
+
+.overflowRulerX > .firebugRulerV {
+ left: 0 !important;
+}
+
+.overflowRulerY > .firebugRulerH {
+ top: 0 !important;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+.fbProxyElement {
+ position: fixed !important;
+ pointer-events: auto !important;
+}
diff --git a/content/firebug/html/highlighterCache.js b/content/firebug/html/highlighterCache.js
index a0bb8fd..5a2d050 100644
--- a/content/firebug/html/highlighterCache.js
+++ b/content/firebug/html/highlighterCache.js
@@ -1,159 +1,159 @@
-/* See license.txt for terms of usage */
-
-define([
-],
-function() {
-
-// ********************************************************************************************* //
-// Constants
-
-const ident = {
- frame: 0,
- boxModel: 1,
- imageMap: 2,
- proxyElt: 3
-};
-
-// ********************************************************************************************* //
-// Implementation
-
-var HighlighterCache =
-{
- ident: ident,
-
- highlighters: {
- frameArr: [],
- boxModelArr: [],
- proxyEltArr: []
- },
-
- get: function(type)
- {
- var node;
- var hl = this.highlighters;
-
- switch (type)
- {
- case ident.boxModel:
- if (hl.boxModelArr.length === 1)
- {
- node = hl.boxModelArr[0];
- if (!node.parentElement)
- return node;
- }
- break;
- case ident.frame:
- if (hl.frameArr.length === 1)
- {
- node = hl.frameArr[0];
- if (!node.parentElement)
- return node;
- }
- break;
- case ident.proxyElt:
- if (hl.proxyEltArr.length === 1)
- {
- node = hl.proxyEltArr[0];
- if (!node.parentElement)
- return node;
- }
- break;
- }
- },
-
- add: function(node)
- {
- switch (node.ident)
- {
- case ident.boxModel:
- this.highlighters.boxModelArr.push(node);
- break;
- case ident.frame:
- this.highlighters.frameArr.push(node);
- break;
- case ident.proxyElt:
- this.highlighters.proxyEltArr.push(node);
- break;
- }
- },
-
- clear: function()
- {
- clearBoxModelCache(this.highlighters.boxModelArr);
-
- clearCache(this.highlighters.frameArr);
- clearCache(this.highlighters.proxyEltArr);
-
- this.highlighters.boxModelArr = [];
- this.highlighters.frameArr = [];
- this.highlighters.proxyEltArr = [];
- }
-};
-
-// ********************************************************************************************* //
-// Helpers
-
-function clearCache(arr)
-{
- try
- {
- var i, highlighter;
- for (i = arr.length - 1; i >= 0; i--)
- {
- highlighter = arr[i];
-
- if (highlighter && highlighter.parentNode)
- highlighter.parentNode.removeChild(highlighter);
- }
- }
- catch (err)
- {
- FBTrace.sysout("highlighterCache.clearCache; EXCEPTION " + err, err);
- }
-}
-
-function clearBoxModelCache(arr)
-{
- try
- {
- var node;
- for (var i = arr.length - 1; i >= 0; i--)
- {
- var names = ["lines", "offset", "parent"];
- for (var j=0; j<names.length; j++)
- {
- var name = names[j];
- if (name === "lines")
- {
- var lineNames = ["bottom", "left", "top", "right"];
- for (var k=0; k<lineNames.length; k++)
- {
- var lineName = lineNames[k];
- node = arr[i].lines[lineName];
-
- if (node && node.parentNode)
- node.parentNode.removeChild(node);
- }
- }
- else
- {
- node = arr[i][name];
- if (node && node.parentNode)
- node.parentNode.removeChild(node);
- }
- }
- }
- }
- catch (err)
- {
- FBTrace.sysout("clearBoxModelCache.clearCache; EXCEPTION " + err, err);
- }
-}
-
-// ********************************************************************************************* //
-// Registration
-
-return HighlighterCache;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+],
+function() {
+
+// ********************************************************************************************* //
+// Constants
+
+const ident = {
+ frame: 0,
+ boxModel: 1,
+ imageMap: 2,
+ proxyElt: 3
+};
+
+// ********************************************************************************************* //
+// Implementation
+
+var HighlighterCache =
+{
+ ident: ident,
+
+ highlighters: {
+ frameArr: [],
+ boxModelArr: [],
+ proxyEltArr: []
+ },
+
+ get: function(type)
+ {
+ var node;
+ var hl = this.highlighters;
+
+ switch (type)
+ {
+ case ident.boxModel:
+ if (hl.boxModelArr.length === 1)
+ {
+ node = hl.boxModelArr[0];
+ if (!node.parentElement)
+ return node;
+ }
+ break;
+ case ident.frame:
+ if (hl.frameArr.length === 1)
+ {
+ node = hl.frameArr[0];
+ if (!node.parentElement)
+ return node;
+ }
+ break;
+ case ident.proxyElt:
+ if (hl.proxyEltArr.length === 1)
+ {
+ node = hl.proxyEltArr[0];
+ if (!node.parentElement)
+ return node;
+ }
+ break;
+ }
+ },
+
+ add: function(node)
+ {
+ switch (node.ident)
+ {
+ case ident.boxModel:
+ this.highlighters.boxModelArr.push(node);
+ break;
+ case ident.frame:
+ this.highlighters.frameArr.push(node);
+ break;
+ case ident.proxyElt:
+ this.highlighters.proxyEltArr.push(node);
+ break;
+ }
+ },
+
+ clear: function()
+ {
+ clearBoxModelCache(this.highlighters.boxModelArr);
+
+ clearCache(this.highlighters.frameArr);
+ clearCache(this.highlighters.proxyEltArr);
+
+ this.highlighters.boxModelArr = [];
+ this.highlighters.frameArr = [];
+ this.highlighters.proxyEltArr = [];
+ }
+};
+
+// ********************************************************************************************* //
+// Helpers
+
+function clearCache(arr)
+{
+ try
+ {
+ var i, highlighter;
+ for (i = arr.length - 1; i >= 0; i--)
+ {
+ highlighter = arr[i];
+
+ if (highlighter && highlighter.parentNode)
+ highlighter.parentNode.removeChild(highlighter);
+ }
+ }
+ catch (err)
+ {
+ FBTrace.sysout("highlighterCache.clearCache; EXCEPTION " + err, err);
+ }
+}
+
+function clearBoxModelCache(arr)
+{
+ try
+ {
+ var node;
+ for (var i = arr.length - 1; i >= 0; i--)
+ {
+ var names = ["lines", "offset", "parent"];
+ for (var j=0; j<names.length; j++)
+ {
+ var name = names[j];
+ if (name === "lines")
+ {
+ var lineNames = ["bottom", "left", "top", "right"];
+ for (var k=0; k<lineNames.length; k++)
+ {
+ var lineName = lineNames[k];
+ node = arr[i].lines[lineName];
+
+ if (node && node.parentNode)
+ node.parentNode.removeChild(node);
+ }
+ }
+ else
+ {
+ node = arr[i][name];
+ if (node && node.parentNode)
+ node.parentNode.removeChild(node);
+ }
+ }
+ }
+ }
+ catch (err)
+ {
+ FBTrace.sysout("clearBoxModelCache.clearCache; EXCEPTION " + err, err);
+ }
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return HighlighterCache;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/html/htmlLib.js b/content/firebug/html/htmlLib.js
index 091e4ee..d2a030f 100644
--- a/content/firebug/html/htmlLib.js
+++ b/content/firebug/html/htmlLib.js
@@ -1,860 +1,860 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/lib/events",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/search",
- "firebug/lib/xml",
- "firebug/lib/string",
-],
-function(Obj, Events, Css, Dom, Search, Xml, Str) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Ci = Components.interfaces;
-const SHOW_ALL = Ci.nsIDOMNodeFilter.SHOW_ALL;
-
-// ********************************************************************************************* //
-
-/**
- * @class Static utility class. Contains utilities used for displaying and
- * searching a HTML tree.
- */
-var HTMLLib =
-{
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Node Search Utilities
-
- /**
- * Constructs a NodeSearch instance.
- *
- * @class Class used to search a DOM tree for the given text. Will display
- * the search results in a IO Box.
- *
- * @constructor
- * @param {String} text Text to search for
- * @param {Object} root Root of search. This may be an element or a document
- * @param {Object} panelNode Panel node containing the IO Box representing the DOM tree.
- * @param {Object} ioBox IO Box to display the search results in
- * @param {Object} walker Optional walker parameter.
- */
- NodeSearch: function(text, root, panelNode, ioBox, walker)
- {
- root = root.documentElement || root;
- walker = walker || new HTMLLib.DOMWalker(root);
- var re = new Search.ReversibleRegExp(text, "m");
- var matchCount = 0;
-
- /**
- * Finds the first match within the document.
- *
- * @param {boolean} revert true to search backward, false to search forward
- * @param {boolean} caseSensitive true to match exact case, false to ignore case
- * @return true if no more matches were found, but matches were found previously.
- */
- this.find = function(reverse, caseSensitive)
- {
- var match = this.findNextMatch(reverse, caseSensitive);
- if (match)
- {
- this.lastMatch = match;
- ++matchCount;
-
- var node = match.node;
- var nodeBox = this.openToNode(node, match.isValue);
-
- this.selectMatched(nodeBox, node, match, reverse);
- }
- else if (matchCount)
- {
- return true;
- }
- else
- {
- this.noMatch = true;
- Events.dispatch([Firebug.A11yModel], "onHTMLSearchNoMatchFound",
- [panelNode.ownerPanel, text]);
- }
- };
-
- /**
- * Resets the search to the beginning of the document.
- */
- this.reset = function()
- {
- delete this.lastMatch;
- };
-
- /**
- * Finds the next match in the document.
- *
- * The return value is an object with the fields
- * - node: Node that contains the match
- * - isValue: true if the match is a match due to the value of the node, false if it is due to the name
- * - match: Regular expression result from the match
- *
- * @param {boolean} revert true to search backward, false to search forward
- * @param {boolean} caseSensitive true to match exact case, false to ignore case
- * @return Match object if found
- */
- this.findNextMatch = function(reverse, caseSensitive)
- {
- var innerMatch = this.findNextInnerMatch(reverse, caseSensitive);
- if (innerMatch)
- return innerMatch;
- else
- this.reset();
-
- function walkNode() { return reverse ? walker.previousNode() : walker.nextNode(); }
-
- var node;
- while (node = walkNode())
- {
- if (node.nodeType == Node.TEXT_NODE && HTMLLib.isSourceElement(node.parentNode))
- continue;
-
- var m = this.checkNode(node, reverse, caseSensitive);
- if (m)
- return m;
- }
- };
-
- /**
- * Helper util used to scan the current search result for more results
- * in the same object.
- *
- * @private
- */
- this.findNextInnerMatch = function(reverse, caseSensitive)
- {
- if (this.lastMatch)
- {
- var lastMatchNode = this.lastMatch.node;
- var lastReMatch = this.lastMatch.match;
- var m = re.exec(lastReMatch.input, reverse, lastReMatch.caseSensitive, lastReMatch);
- if (m)
- {
- return {
- node: lastMatchNode,
- isValue: this.lastMatch.isValue,
- match: m
- };
- }
-
- // May need to check the pair for attributes
- if (lastMatchNode.nodeType == Node.ATTRIBUTE_NODE &&
- this.lastMatch.isValue == !!reverse)
- {
- return this.checkNode(lastMatchNode, reverse, caseSensitive, 1);
- }
- }
- };
-
- /**
- * Checks a given node for a search match.
- *
- * @private
- */
- this.checkNode = function(node, reverse, caseSensitive, firstStep)
- {
- var checkOrder;
- if (node.nodeType != Node.TEXT_NODE)
- {
- var nameCheck = { name: "nodeName", isValue: false, caseSensitive: caseSensitive };
- var valueCheck = { name: "nodeValue", isValue: true, caseSensitive: caseSensitive };
- checkOrder = reverse ? [ valueCheck, nameCheck ] : [ nameCheck, valueCheck ];
- }
- else
- {
- checkOrder = [{name: "nodeValue", isValue: false, caseSensitive: caseSensitive }];
- }
-
- for (var i = firstStep || 0; i < checkOrder.length; i++)
- {
- var m = re.exec(node[checkOrder[i].name], reverse, checkOrder[i].caseSensitive);
- if (m) {
- return {
- node: node,
- isValue: checkOrder[i].isValue,
- match: m
- };
- }
- }
- };
-
- /**
- * Opens the given node in the associated IO Box.
- *
- * @private
- */
- this.openToNode = function(node, isValue)
- {
- if (node.nodeType == Node.ELEMENT_NODE)
- {
- var nodeBox = ioBox.openToObject(node);
- return nodeBox.getElementsByClassName("nodeTag")[0];
- }
- else if (node.nodeType == Node.ATTRIBUTE_NODE)
- {
- var nodeBox = ioBox.openToObject(node.ownerElement);
- if (nodeBox)
- {
- var attrNodeBox = HTMLLib.findNodeAttrBox(nodeBox, node.name);
- return Dom.getChildByClass(attrNodeBox, isValue ? "nodeValue" : "nodeName");
- }
- }
- else if (node.nodeType == Node.TEXT_NODE)
- {
- var nodeBox = ioBox.openToObject(node);
- if (nodeBox)
- {
- return nodeBox;
- }
- else
- {
- var nodeBox = ioBox.openToObject(node.parentNode);
- if (Css.hasClass(nodeBox, "textNodeBox"))
- nodeBox = HTMLLib.getTextElementTextBox(nodeBox);
- return nodeBox;
- }
- }
- };
-
- /**
- * Selects the search results.
- *
- * @private
- */
- this.selectMatched = function(nodeBox, node, match, reverse)
- {
- setTimeout(Obj.bindFixed(function()
- {
- var reMatch = match.match;
- this.selectNodeText(nodeBox, node, reMatch[0], reMatch.index, reverse,
- reMatch.caseSensitive);
-
- Events.dispatch([Firebug.A11yModel], "onHTMLSearchMatchFound",
- [panelNode.ownerPanel, match]);
- }, this));
- };
-
- /**
- * Select text node search results.
- *
- * @private
- */
- this.selectNodeText = function(nodeBox, node, text, index, reverse, caseSensitive)
- {
- var row;
-
- // If we are still inside the same node as the last search, advance the range
- // to the next substring within that node
- if (nodeBox == this.lastNodeBox)
- {
- row = this.textSearch.findNext(false, true, reverse, caseSensitive);
- }
-
- if (!row)
- {
- // Search for the first instance of the string inside the node
- function findRow(node)
- {
- return node.nodeType == Node.ELEMENT_NODE ? node : node.parentNode;
- }
-
- this.textSearch = new Search.TextSearch(nodeBox, findRow);
- row = this.textSearch.find(text, reverse, caseSensitive);
- this.lastNodeBox = nodeBox;
- }
-
- if (row)
- {
- var trueNodeBox = Dom.getAncestorByClass(nodeBox, "nodeBox");
- Css.setClass(trueNodeBox, "search-selection");
-
- Dom.scrollIntoCenterView(row, panelNode);
- var sel = panelNode.ownerDocument.defaultView.getSelection();
- sel.removeAllRanges();
- sel.addRange(this.textSearch.range);
-
- Css.removeClass(trueNodeBox, "search-selection");
- return true;
- }
- };
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /**
- * XXXjjb this code is no longer called and won't be in 1.5; if FireFinder works out we can delete this.
- * Constructs a SelectorSearch instance.
- *
- * @class Class used to search a DOM tree for elements matching the given
- * CSS selector.
- *
- * @constructor
- * @param {String} text CSS selector to search for
- * @param {Document} doc Document to search
- * @param {Object} panelNode Panel node containing the IO Box representing the DOM tree.
- * @param {Object} ioBox IO Box to display the search results in
- */
- SelectorSearch: function(text, doc, panelNode, ioBox)
- {
- this.parent = new HTMLLib.NodeSearch(text, doc, panelNode, ioBox);
-
- /**
- * Finds the first match within the document.
- *
- * @param {boolean} revert true to search backward, false to search forward
- * @param {boolean} caseSensitive true to match exact case, false to ignore case
- * @return true if no more matches were found, but matches were found previously.
- */
- this.find = this.parent.find;
-
- /**
- * Resets the search to the beginning of the document.
- */
- this.reset = this.parent.reset;
-
- /**
- * Opens the given node in the associated IO Box.
- *
- * @private
- */
- this.openToNode = this.parent.openToNode;
-
- try
- {
- // http://dev.w3.org/2006/webapi/selectors-api/
- this.matchingNodes = doc.querySelectorAll(text);
- this.matchIndex = 0;
- }
- catch(exc)
- {
- FBTrace.sysout("SelectorSearch FAILS "+exc, exc);
- }
-
- /**
- * Finds the next match in the document.
- *
- * The return value is an object with the fields
- * - node: Node that contains the match
- * - isValue: true if the match is a match due to the value of the node, false if it is due to the name
- * - match: Regular expression result from the match
- *
- * @param {boolean} revert true to search backward, false to search forward
- * @param {boolean} caseSensitive true to match exact case, false to ignore case
- * @return Match object if found
- */
- this.findNextMatch = function(reverse, caseSensitive)
- {
- if (!this.matchingNodes || !this.matchingNodes.length)
- return undefined;
-
- if (reverse)
- {
- if (this.matchIndex > 0)
- return { node: this.matchingNodes[this.matchIndex--], isValue: false, match: "?XX?"};
- else
- return undefined;
- }
- else
- {
- if (this.matchIndex < this.matchingNodes.length)
- return { node: this.matchingNodes[this.matchIndex++], isValue: false, match: "?XX?"};
- else
- return undefined;
- }
- };
-
- /**
- * Selects the search results.
- *
- * @private
- */
- this.selectMatched = function(nodeBox, node, match, reverse)
- {
- setTimeout(Obj.bindFixed(function()
- {
- ioBox.select(node, true, true);
- Events.dispatch([Firebug.A11yModel], "onHTMLSearchMatchFound", [panelNode.ownerPanel, match]);
- }, this));
- };
- },
-
-
- /**
- * Constructs a DOMWalker instance.
- *
- * @constructor
- * @class Implements an ordered traveral of the document, including attributes and
- * iframe contents within the results.
- *
- * Note that the order for attributes is not defined. This will follow the
- * same order as the Element.attributes accessor.
- * @param {Element} root Element to traverse
- */
- DOMWalker: function(root)
- {
- var walker;
- var currentNode, attrIndex;
- var pastStart, pastEnd;
- var doc = root.ownerDocument;
-
- function createWalker(docElement)
- {
- var walk = doc.createTreeWalker(docElement, SHOW_ALL, null, true);
- walker.unshift(walk);
- }
-
- function getLastAncestor()
- {
- while (walker[0].lastChild()) {}
- return walker[0].currentNode;
- }
-
- /**
- * Move to the previous node.
- *
- * @return The previous node if one exists, undefined otherwise.
- */
- this.previousNode = function()
- {
- if (pastStart)
- return undefined;
-
- if (attrIndex)
- {
- attrIndex--;
- }
- else
- {
- var prevNode;
- if (currentNode == walker[0].root)
- {
- if (walker.length > 1)
- {
- walker.shift();
- prevNode = walker[0].currentNode;
- }
- else
- {
- prevNode = undefined;
- }
- }
- else
- {
- prevNode = !currentNode ? getLastAncestor(): walker[0].previousNode();
-
- // Really shouldn't occur, but to be safe
- if (!prevNode)
- prevNode = walker[0].root;
-
- while ((prevNode.nodeName || "").toUpperCase() == "IFRAME")
- {
- createWalker(prevNode.contentDocument.documentElement);
- prevNode = getLastAncestor();
- }
- }
- currentNode = prevNode;
- attrIndex = ((prevNode || {}).attributes || []).length;
- }
-
- if (!currentNode)
- pastStart = true;
- else
- pastEnd = false;
-
- return this.currentNode();
- };
-
- /**
- * Move to the next node.
- *
- * @return The next node if one exists, otherwise undefined.
- */
- this.nextNode = function()
- {
- if (pastEnd)
- return undefined;
-
- if (!currentNode)
- {
- // We are working with a new tree walker
- currentNode = walker[0].root;
- attrIndex = 0;
- }
- else
- {
- // First check attributes
- var attrs = currentNode.attributes || [];
- if (attrIndex < attrs.length)
- {
- attrIndex++;
- }
- else if ((currentNode.nodeName || "").toUpperCase() == "IFRAME")
- {
- // Attributes have completed, check for iframe contents
- createWalker(currentNode.contentDocument.documentElement);
- currentNode = walker[0].root;
- attrIndex = 0;
- }
- else
- {
- // Next node
- var nextNode = walker[0].nextNode();
- while (!nextNode && walker.length > 1)
- {
- walker.shift();
- nextNode = walker[0].nextNode();
- }
- currentNode = nextNode;
- attrIndex = 0;
- }
- }
-
- if (!currentNode)
- pastEnd = true;
- else
- pastStart = false;
-
- return this.currentNode();
- };
-
- /**
- * Retrieves the current node.
- *
- * @return The current node, if not past the beginning or end of the iteration.
- */
- this.currentNode = function()
- {
- return !attrIndex ? currentNode : currentNode.attributes[attrIndex-1];
- };
-
- /**
- * Resets the walker position back to the initial position.
- */
- this.reset = function()
- {
- pastStart = false;
- pastEnd = false;
- walker = [];
- currentNode = undefined;
- attrIndex = 0;
-
- createWalker(root);
- };
-
- this.reset();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Node/Element Utilities
-
- /**
- * Determines if the given element is the source for a non-DOM resource such
- * as Javascript source or CSS definition.
- *
- * @param {Element} element Element to test
- * @return true if the element is a source element
- */
- isSourceElement: function(element)
- {
- if (!Xml.isElementHTML(element) && !Xml.isElementXHTML(element))
- return false;
-
- var tag = element.localName ? element.localName.toLowerCase() : "";
- return tag == "script" || (tag == "link" && element.getAttribute("rel") == "stylesheet") ||
- tag == "style";
- },
-
- /**
- * Retrieves the source URL for any external resource associated with a node.
- *
- * @param {Element} element Element to examine
- * @return URL of the external resouce.
- */
- getSourceHref: function(element)
- {
- var tag = element.localName.toLowerCase();
- if (tag == "script" && element.src)
- return element.src;
- else if (tag == "link")
- return element.href;
- else
- return null;
- },
-
- /**
- * Retrieves the source text for inline script and style elements.
- *
- * @param {Element} element Script or style element
- * @return Source text
- */
- getSourceText: function(element)
- {
- var tag = element.localName.toLowerCase();
- if (tag == "script" && !element.src)
- return element.textContent;
- else if (tag == "style")
- return element.textContent;
- else
- return null;
- },
-
- /**
- * Determines if the given element is a container element.
- *
- * @param {Element} element Element to test
- * @return True if the element is a container element.
- */
- isContainerElement: function(element)
- {
- var tag = element.localName.toLowerCase();
- switch (tag)
- {
- case "script":
- case "style":
- case "iframe":
- case "frame":
- case "tabbrowser":
- case "browser":
- return true;
- case "link":
- return element.getAttribute("rel") == "stylesheet";
- case "embed":
- return element.getSVGDocument();
- }
- return false;
- },
-
- /**
- * Determines if the given node has any children which are elements.
- *
- * @param {Element} element Element to test.
- * @return true if immediate children of type Element exist, false otherwise
- */
- hasNoElementChildren: function(element)
- {
- if (element === null)
- return true;
-
- if (element.childElementCount != 0) // FF 3.5+
- return false;
-
- // https://developer.mozilla.org/en/XBL/XBL_1.0_Reference/DOM_Interfaces
- if (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL)
- {
- if (FBTrace.DBG_HTML)
- {
- FBTrace.sysout("hasNoElementChildren "+Css.getElementCSSSelector(element)+
- " (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL) "+
- (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL), element);
- }
-
- var walker = new HTMLLib.ElementWalker();
- var child = walker.getFirstChild(element);
-
- while (child)
- {
- if (child.nodeType === Node.ELEMENT_NODE)
- return false;
- child = walker.getNextSibling(child);
- }
- }
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("hasNoElementChildren TRUE "+element.tagName+
- " (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL) "+
- (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL), element);
-
- return true;
- },
-
-
- /**
- * Determines if the given node has any children which are comments.
- *
- * @param {Element} element Element to test.
- * @return true if immediate children of type Comment exist, false otherwise
- */
- hasCommentChildren: function(element)
- {
- if (element.hasChildNodes())
- {
- var children = element.childNodes;
- for (var i = 0; i < children.length; i++)
- {
- if (children[i] instanceof Comment)
- return true;
- }
- };
- return false;
- },
-
-
- /**
- * Determines if the given node consists solely of whitespace text.
- *
- * @param {Node} node Node to test.
- * @return true if the node is a whitespace text node
- */
- isWhitespaceText: function(node)
- {
- if (node instanceof window.HTMLAppletElement)
- return false;
-
- return node.nodeType == window.Node.TEXT_NODE && Str.isWhitespace(node.nodeValue);
- },
-
- /**
- * Determines if a given element is empty. When the
- * {@link Firebug#showTextNodesWithWhitespace} parameter is true, an element is
- * considered empty if it has no child elements and is self closing. When
- * false, an element is considered empty if the only children are whitespace
- * nodes.
- *
- * @param {Element} element Element to test
- * @return true if the element is empty, false otherwise
- */
- isEmptyElement: function(element)
- {
- // XXXjjb the commented code causes issues 48, 240, and 244. I think the lines should be deleted.
- // If the DOM has whitespace children, then the element is not empty even if
- // we decide not to show the whitespace in the UI.
-
- // XXXsroussey reverted above but added a check for self closing tags
- if (Firebug.showTextNodesWithWhitespace)
- {
- return !element.firstChild && Xml.isSelfClosing(element);
- }
- else
- {
- for (var child = element.firstChild; child; child = child.nextSibling)
- {
- if (!HTMLLib.isWhitespaceText(child))
- return false;
- }
- }
- return Xml.isSelfClosing(element);
- },
-
- /**
- * Finds the next sibling of the given node. If the
- * {@link Firebug#showTextNodesWithWhitespace} parameter is set to true, the next
- * sibling may be a whitespace, otherwise the next is the first adjacent
- * non-whitespace node.
- *
- * @param {Node} node Node to analyze.
- * @return Next sibling node, if one exists
- */
- findNextSibling: function(node)
- {
- return this.findNextNodeFrom(node.nextSibling);
- },
-
- /**
- * Like findNextSibling, except it also allows returning the node itself.
- */
- findNextNodeFrom: function(node)
- {
- if (Firebug.showTextNodesWithWhitespace)
- {
- return node;
- }
- else
- {
- // only return a non-whitespace node
- for (var child = node; child; child = child.nextSibling)
- {
- if (!HTMLLib.isWhitespaceText(child))
- return child;
- }
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Domplate Utilities
-
- /**
- * Locates the attribute domplate node for a given element domplate. This method will
- * only examine notes marked with the "nodeAttr" class that are the direct
- * children of the given element.
- *
- * @param {Object} objectNodeBox The domplate element to look up the attribute for.
- * @param {String} attrName Attribute name
- * @return Attribute's domplate node
- */
- findNodeAttrBox: function(objectNodeBox, attrName)
- {
- var child = objectNodeBox.firstChild.lastChild.firstChild;
- for (; child; child = child.nextSibling)
- {
- if (Css.hasClass(child, "nodeAttr") && child.childNodes[1].firstChild
- && child.childNodes[1].firstChild.nodeValue == attrName)
- {
- return child;
- }
- }
- },
-
- /**
- * Locates the text domplate node for a given text element domplate.
- * @param {Object} nodeBox Text element domplate
- * @return Element's domplate text node
- */
- getTextElementTextBox: function(nodeBox)
- {
- var nodeLabelBox = nodeBox.firstChild.lastChild;
- return Dom.getChildByClass(nodeLabelBox, "nodeText");
- },
-
- // These functions can be copied to add tree walking feature, they allow Chromebug
- // to reuse the HTML panel
- ElementWalkerFunctions:
- {
- getTreeWalker: function(node)
- {
- if (!this.treeWalker || this.treeWalker.currentNode !== node)
- this.treeWalker = node.ownerDocument.createTreeWalker(
- node, NodeFilter.SHOW_ALL, null, false);
-
- return this.treeWalker;
- },
-
- getFirstChild: function(node)
- {
- return node.firstChild;
- },
-
- getNextSibling: function(node)
- {
- // the Mozilla XBL tree walker fails for nextSibling
- return node.nextSibling;
- },
-
- getParentNode: function(node)
- {
- // the Mozilla XBL tree walker fails for parentNode
- return node.parentNode;
- }
- },
-
- ElementWalker: function() // tree walking via new ElementWalker
- {
-
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-HTMLLib.ElementWalker.prototype = HTMLLib.ElementWalkerFunctions;
-
-return HTMLLib;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/lib/events",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/search",
+ "firebug/lib/xml",
+ "firebug/lib/string",
+],
+function(Obj, Events, Css, Dom, Search, Xml, Str) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Ci = Components.interfaces;
+const SHOW_ALL = Ci.nsIDOMNodeFilter.SHOW_ALL;
+
+// ********************************************************************************************* //
+
+/**
+ * @class Static utility class. Contains utilities used for displaying and
+ * searching a HTML tree.
+ */
+var HTMLLib =
+{
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Node Search Utilities
+
+ /**
+ * Constructs a NodeSearch instance.
+ *
+ * @class Class used to search a DOM tree for the given text. Will display
+ * the search results in a IO Box.
+ *
+ * @constructor
+ * @param {String} text Text to search for
+ * @param {Object} root Root of search. This may be an element or a document
+ * @param {Object} panelNode Panel node containing the IO Box representing the DOM tree.
+ * @param {Object} ioBox IO Box to display the search results in
+ * @param {Object} walker Optional walker parameter.
+ */
+ NodeSearch: function(text, root, panelNode, ioBox, walker)
+ {
+ root = root.documentElement || root;
+ walker = walker || new HTMLLib.DOMWalker(root);
+ var re = new Search.ReversibleRegExp(text, "m");
+ var matchCount = 0;
+
+ /**
+ * Finds the first match within the document.
+ *
+ * @param {boolean} revert true to search backward, false to search forward
+ * @param {boolean} caseSensitive true to match exact case, false to ignore case
+ * @return true if no more matches were found, but matches were found previously.
+ */
+ this.find = function(reverse, caseSensitive)
+ {
+ var match = this.findNextMatch(reverse, caseSensitive);
+ if (match)
+ {
+ this.lastMatch = match;
+ ++matchCount;
+
+ var node = match.node;
+ var nodeBox = this.openToNode(node, match.isValue);
+
+ this.selectMatched(nodeBox, node, match, reverse);
+ }
+ else if (matchCount)
+ {
+ return true;
+ }
+ else
+ {
+ this.noMatch = true;
+ Events.dispatch([Firebug.A11yModel], "onHTMLSearchNoMatchFound",
+ [panelNode.ownerPanel, text]);
+ }
+ };
+
+ /**
+ * Resets the search to the beginning of the document.
+ */
+ this.reset = function()
+ {
+ delete this.lastMatch;
+ };
+
+ /**
+ * Finds the next match in the document.
+ *
+ * The return value is an object with the fields
+ * - node: Node that contains the match
+ * - isValue: true if the match is a match due to the value of the node, false if it is due to the name
+ * - match: Regular expression result from the match
+ *
+ * @param {boolean} revert true to search backward, false to search forward
+ * @param {boolean} caseSensitive true to match exact case, false to ignore case
+ * @return Match object if found
+ */
+ this.findNextMatch = function(reverse, caseSensitive)
+ {
+ var innerMatch = this.findNextInnerMatch(reverse, caseSensitive);
+ if (innerMatch)
+ return innerMatch;
+ else
+ this.reset();
+
+ function walkNode() { return reverse ? walker.previousNode() : walker.nextNode(); }
+
+ var node;
+ while (node = walkNode())
+ {
+ if (node.nodeType == Node.TEXT_NODE && HTMLLib.isSourceElement(node.parentNode))
+ continue;
+
+ var m = this.checkNode(node, reverse, caseSensitive);
+ if (m)
+ return m;
+ }
+ };
+
+ /**
+ * Helper util used to scan the current search result for more results
+ * in the same object.
+ *
+ * @private
+ */
+ this.findNextInnerMatch = function(reverse, caseSensitive)
+ {
+ if (this.lastMatch)
+ {
+ var lastMatchNode = this.lastMatch.node;
+ var lastReMatch = this.lastMatch.match;
+ var m = re.exec(lastReMatch.input, reverse, lastReMatch.caseSensitive, lastReMatch);
+ if (m)
+ {
+ return {
+ node: lastMatchNode,
+ isValue: this.lastMatch.isValue,
+ match: m
+ };
+ }
+
+ // May need to check the pair for attributes
+ if (lastMatchNode.nodeType == Node.ATTRIBUTE_NODE &&
+ this.lastMatch.isValue == !!reverse)
+ {
+ return this.checkNode(lastMatchNode, reverse, caseSensitive, 1);
+ }
+ }
+ };
+
+ /**
+ * Checks a given node for a search match.
+ *
+ * @private
+ */
+ this.checkNode = function(node, reverse, caseSensitive, firstStep)
+ {
+ var checkOrder;
+ if (node.nodeType != Node.TEXT_NODE)
+ {
+ var nameCheck = { name: "nodeName", isValue: false, caseSensitive: caseSensitive };
+ var valueCheck = { name: "nodeValue", isValue: true, caseSensitive: caseSensitive };
+ checkOrder = reverse ? [ valueCheck, nameCheck ] : [ nameCheck, valueCheck ];
+ }
+ else
+ {
+ checkOrder = [{name: "nodeValue", isValue: false, caseSensitive: caseSensitive }];
+ }
+
+ for (var i = firstStep || 0; i < checkOrder.length; i++)
+ {
+ var m = re.exec(node[checkOrder[i].name], reverse, checkOrder[i].caseSensitive);
+ if (m) {
+ return {
+ node: node,
+ isValue: checkOrder[i].isValue,
+ match: m
+ };
+ }
+ }
+ };
+
+ /**
+ * Opens the given node in the associated IO Box.
+ *
+ * @private
+ */
+ this.openToNode = function(node, isValue)
+ {
+ if (node.nodeType == Node.ELEMENT_NODE)
+ {
+ var nodeBox = ioBox.openToObject(node);
+ return nodeBox.getElementsByClassName("nodeTag")[0];
+ }
+ else if (node.nodeType == Node.ATTRIBUTE_NODE)
+ {
+ var nodeBox = ioBox.openToObject(node.ownerElement);
+ if (nodeBox)
+ {
+ var attrNodeBox = HTMLLib.findNodeAttrBox(nodeBox, node.name);
+ return Dom.getChildByClass(attrNodeBox, isValue ? "nodeValue" : "nodeName");
+ }
+ }
+ else if (node.nodeType == Node.TEXT_NODE)
+ {
+ var nodeBox = ioBox.openToObject(node);
+ if (nodeBox)
+ {
+ return nodeBox;
+ }
+ else
+ {
+ var nodeBox = ioBox.openToObject(node.parentNode);
+ if (Css.hasClass(nodeBox, "textNodeBox"))
+ nodeBox = HTMLLib.getTextElementTextBox(nodeBox);
+ return nodeBox;
+ }
+ }
+ };
+
+ /**
+ * Selects the search results.
+ *
+ * @private
+ */
+ this.selectMatched = function(nodeBox, node, match, reverse)
+ {
+ setTimeout(Obj.bindFixed(function()
+ {
+ var reMatch = match.match;
+ this.selectNodeText(nodeBox, node, reMatch[0], reMatch.index, reverse,
+ reMatch.caseSensitive);
+
+ Events.dispatch([Firebug.A11yModel], "onHTMLSearchMatchFound",
+ [panelNode.ownerPanel, match]);
+ }, this));
+ };
+
+ /**
+ * Select text node search results.
+ *
+ * @private
+ */
+ this.selectNodeText = function(nodeBox, node, text, index, reverse, caseSensitive)
+ {
+ var row;
+
+ // If we are still inside the same node as the last search, advance the range
+ // to the next substring within that node
+ if (nodeBox == this.lastNodeBox)
+ {
+ row = this.textSearch.findNext(false, true, reverse, caseSensitive);
+ }
+
+ if (!row)
+ {
+ // Search for the first instance of the string inside the node
+ function findRow(node)
+ {
+ return node.nodeType == Node.ELEMENT_NODE ? node : node.parentNode;
+ }
+
+ this.textSearch = new Search.TextSearch(nodeBox, findRow);
+ row = this.textSearch.find(text, reverse, caseSensitive);
+ this.lastNodeBox = nodeBox;
+ }
+
+ if (row)
+ {
+ var trueNodeBox = Dom.getAncestorByClass(nodeBox, "nodeBox");
+ Css.setClass(trueNodeBox, "search-selection");
+
+ Dom.scrollIntoCenterView(row, panelNode);
+ var sel = panelNode.ownerDocument.defaultView.getSelection();
+ sel.removeAllRanges();
+ sel.addRange(this.textSearch.range);
+
+ Css.removeClass(trueNodeBox, "search-selection");
+ return true;
+ }
+ };
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /**
+ * XXXjjb this code is no longer called and won't be in 1.5; if FireFinder works out we can delete this.
+ * Constructs a SelectorSearch instance.
+ *
+ * @class Class used to search a DOM tree for elements matching the given
+ * CSS selector.
+ *
+ * @constructor
+ * @param {String} text CSS selector to search for
+ * @param {Document} doc Document to search
+ * @param {Object} panelNode Panel node containing the IO Box representing the DOM tree.
+ * @param {Object} ioBox IO Box to display the search results in
+ */
+ SelectorSearch: function(text, doc, panelNode, ioBox)
+ {
+ this.parent = new HTMLLib.NodeSearch(text, doc, panelNode, ioBox);
+
+ /**
+ * Finds the first match within the document.
+ *
+ * @param {boolean} revert true to search backward, false to search forward
+ * @param {boolean} caseSensitive true to match exact case, false to ignore case
+ * @return true if no more matches were found, but matches were found previously.
+ */
+ this.find = this.parent.find;
+
+ /**
+ * Resets the search to the beginning of the document.
+ */
+ this.reset = this.parent.reset;
+
+ /**
+ * Opens the given node in the associated IO Box.
+ *
+ * @private
+ */
+ this.openToNode = this.parent.openToNode;
+
+ try
+ {
+ // http://dev.w3.org/2006/webapi/selectors-api/
+ this.matchingNodes = doc.querySelectorAll(text);
+ this.matchIndex = 0;
+ }
+ catch(exc)
+ {
+ FBTrace.sysout("SelectorSearch FAILS "+exc, exc);
+ }
+
+ /**
+ * Finds the next match in the document.
+ *
+ * The return value is an object with the fields
+ * - node: Node that contains the match
+ * - isValue: true if the match is a match due to the value of the node, false if it is due to the name
+ * - match: Regular expression result from the match
+ *
+ * @param {boolean} revert true to search backward, false to search forward
+ * @param {boolean} caseSensitive true to match exact case, false to ignore case
+ * @return Match object if found
+ */
+ this.findNextMatch = function(reverse, caseSensitive)
+ {
+ if (!this.matchingNodes || !this.matchingNodes.length)
+ return undefined;
+
+ if (reverse)
+ {
+ if (this.matchIndex > 0)
+ return { node: this.matchingNodes[this.matchIndex--], isValue: false, match: "?XX?"};
+ else
+ return undefined;
+ }
+ else
+ {
+ if (this.matchIndex < this.matchingNodes.length)
+ return { node: this.matchingNodes[this.matchIndex++], isValue: false, match: "?XX?"};
+ else
+ return undefined;
+ }
+ };
+
+ /**
+ * Selects the search results.
+ *
+ * @private
+ */
+ this.selectMatched = function(nodeBox, node, match, reverse)
+ {
+ setTimeout(Obj.bindFixed(function()
+ {
+ ioBox.select(node, true, true);
+ Events.dispatch([Firebug.A11yModel], "onHTMLSearchMatchFound", [panelNode.ownerPanel, match]);
+ }, this));
+ };
+ },
+
+
+ /**
+ * Constructs a DOMWalker instance.
+ *
+ * @constructor
+ * @class Implements an ordered traveral of the document, including attributes and
+ * iframe contents within the results.
+ *
+ * Note that the order for attributes is not defined. This will follow the
+ * same order as the Element.attributes accessor.
+ * @param {Element} root Element to traverse
+ */
+ DOMWalker: function(root)
+ {
+ var walker;
+ var currentNode, attrIndex;
+ var pastStart, pastEnd;
+ var doc = root.ownerDocument;
+
+ function createWalker(docElement)
+ {
+ var walk = doc.createTreeWalker(docElement, SHOW_ALL, null, true);
+ walker.unshift(walk);
+ }
+
+ function getLastAncestor()
+ {
+ while (walker[0].lastChild()) {}
+ return walker[0].currentNode;
+ }
+
+ /**
+ * Move to the previous node.
+ *
+ * @return The previous node if one exists, undefined otherwise.
+ */
+ this.previousNode = function()
+ {
+ if (pastStart)
+ return undefined;
+
+ if (attrIndex)
+ {
+ attrIndex--;
+ }
+ else
+ {
+ var prevNode;
+ if (currentNode == walker[0].root)
+ {
+ if (walker.length > 1)
+ {
+ walker.shift();
+ prevNode = walker[0].currentNode;
+ }
+ else
+ {
+ prevNode = undefined;
+ }
+ }
+ else
+ {
+ prevNode = !currentNode ? getLastAncestor(): walker[0].previousNode();
+
+ // Really shouldn't occur, but to be safe
+ if (!prevNode)
+ prevNode = walker[0].root;
+
+ while ((prevNode.nodeName || "").toUpperCase() == "IFRAME")
+ {
+ createWalker(prevNode.contentDocument.documentElement);
+ prevNode = getLastAncestor();
+ }
+ }
+ currentNode = prevNode;
+ attrIndex = ((prevNode || {}).attributes || []).length;
+ }
+
+ if (!currentNode)
+ pastStart = true;
+ else
+ pastEnd = false;
+
+ return this.currentNode();
+ };
+
+ /**
+ * Move to the next node.
+ *
+ * @return The next node if one exists, otherwise undefined.
+ */
+ this.nextNode = function()
+ {
+ if (pastEnd)
+ return undefined;
+
+ if (!currentNode)
+ {
+ // We are working with a new tree walker
+ currentNode = walker[0].root;
+ attrIndex = 0;
+ }
+ else
+ {
+ // First check attributes
+ var attrs = currentNode.attributes || [];
+ if (attrIndex < attrs.length)
+ {
+ attrIndex++;
+ }
+ else if ((currentNode.nodeName || "").toUpperCase() == "IFRAME")
+ {
+ // Attributes have completed, check for iframe contents
+ createWalker(currentNode.contentDocument.documentElement);
+ currentNode = walker[0].root;
+ attrIndex = 0;
+ }
+ else
+ {
+ // Next node
+ var nextNode = walker[0].nextNode();
+ while (!nextNode && walker.length > 1)
+ {
+ walker.shift();
+ nextNode = walker[0].nextNode();
+ }
+ currentNode = nextNode;
+ attrIndex = 0;
+ }
+ }
+
+ if (!currentNode)
+ pastEnd = true;
+ else
+ pastStart = false;
+
+ return this.currentNode();
+ };
+
+ /**
+ * Retrieves the current node.
+ *
+ * @return The current node, if not past the beginning or end of the iteration.
+ */
+ this.currentNode = function()
+ {
+ return !attrIndex ? currentNode : currentNode.attributes[attrIndex-1];
+ };
+
+ /**
+ * Resets the walker position back to the initial position.
+ */
+ this.reset = function()
+ {
+ pastStart = false;
+ pastEnd = false;
+ walker = [];
+ currentNode = undefined;
+ attrIndex = 0;
+
+ createWalker(root);
+ };
+
+ this.reset();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Node/Element Utilities
+
+ /**
+ * Determines if the given element is the source for a non-DOM resource such
+ * as Javascript source or CSS definition.
+ *
+ * @param {Element} element Element to test
+ * @return true if the element is a source element
+ */
+ isSourceElement: function(element)
+ {
+ if (!Xml.isElementHTML(element) && !Xml.isElementXHTML(element))
+ return false;
+
+ var tag = element.localName ? element.localName.toLowerCase() : "";
+ return tag == "script" || (tag == "link" && element.getAttribute("rel") == "stylesheet") ||
+ tag == "style";
+ },
+
+ /**
+ * Retrieves the source URL for any external resource associated with a node.
+ *
+ * @param {Element} element Element to examine
+ * @return URL of the external resouce.
+ */
+ getSourceHref: function(element)
+ {
+ var tag = element.localName.toLowerCase();
+ if (tag == "script" && element.src)
+ return element.src;
+ else if (tag == "link")
+ return element.href;
+ else
+ return null;
+ },
+
+ /**
+ * Retrieves the source text for inline script and style elements.
+ *
+ * @param {Element} element Script or style element
+ * @return Source text
+ */
+ getSourceText: function(element)
+ {
+ var tag = element.localName.toLowerCase();
+ if (tag == "script" && !element.src)
+ return element.textContent;
+ else if (tag == "style")
+ return element.textContent;
+ else
+ return null;
+ },
+
+ /**
+ * Determines if the given element is a container element.
+ *
+ * @param {Element} element Element to test
+ * @return True if the element is a container element.
+ */
+ isContainerElement: function(element)
+ {
+ var tag = element.localName.toLowerCase();
+ switch (tag)
+ {
+ case "script":
+ case "style":
+ case "iframe":
+ case "frame":
+ case "tabbrowser":
+ case "browser":
+ return true;
+ case "link":
+ return element.getAttribute("rel") == "stylesheet";
+ case "embed":
+ return element.getSVGDocument();
+ }
+ return false;
+ },
+
+ /**
+ * Determines if the given node has any children which are elements.
+ *
+ * @param {Element} element Element to test.
+ * @return true if immediate children of type Element exist, false otherwise
+ */
+ hasNoElementChildren: function(element)
+ {
+ if (element === null)
+ return true;
+
+ if (element.childElementCount != 0) // FF 3.5+
+ return false;
+
+ // https://developer.mozilla.org/en/XBL/XBL_1.0_Reference/DOM_Interfaces
+ if (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL)
+ {
+ if (FBTrace.DBG_HTML)
+ {
+ FBTrace.sysout("hasNoElementChildren "+Css.getElementCSSSelector(element)+
+ " (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL) "+
+ (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL), element);
+ }
+
+ var walker = new HTMLLib.ElementWalker();
+ var child = walker.getFirstChild(element);
+
+ while (child)
+ {
+ if (child.nodeType === Node.ELEMENT_NODE)
+ return false;
+ child = walker.getNextSibling(child);
+ }
+ }
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("hasNoElementChildren TRUE "+element.tagName+
+ " (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL) "+
+ (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL), element);
+
+ return true;
+ },
+
+
+ /**
+ * Determines if the given node has any children which are comments.
+ *
+ * @param {Element} element Element to test.
+ * @return true if immediate children of type Comment exist, false otherwise
+ */
+ hasCommentChildren: function(element)
+ {
+ if (element.hasChildNodes())
+ {
+ var children = element.childNodes;
+ for (var i = 0; i < children.length; i++)
+ {
+ if (children[i] instanceof Comment)
+ return true;
+ }
+ };
+ return false;
+ },
+
+
+ /**
+ * Determines if the given node consists solely of whitespace text.
+ *
+ * @param {Node} node Node to test.
+ * @return true if the node is a whitespace text node
+ */
+ isWhitespaceText: function(node)
+ {
+ if (node instanceof window.HTMLAppletElement)
+ return false;
+
+ return node.nodeType == window.Node.TEXT_NODE && Str.isWhitespace(node.nodeValue);
+ },
+
+ /**
+ * Determines if a given element is empty. When the
+ * {@link Firebug#showTextNodesWithWhitespace} parameter is true, an element is
+ * considered empty if it has no child elements and is self closing. When
+ * false, an element is considered empty if the only children are whitespace
+ * nodes.
+ *
+ * @param {Element} element Element to test
+ * @return true if the element is empty, false otherwise
+ */
+ isEmptyElement: function(element)
+ {
+ // XXXjjb the commented code causes issues 48, 240, and 244. I think the lines should be deleted.
+ // If the DOM has whitespace children, then the element is not empty even if
+ // we decide not to show the whitespace in the UI.
+
+ // XXXsroussey reverted above but added a check for self closing tags
+ if (Firebug.showTextNodesWithWhitespace)
+ {
+ return !element.firstChild && Xml.isSelfClosing(element);
+ }
+ else
+ {
+ for (var child = element.firstChild; child; child = child.nextSibling)
+ {
+ if (!HTMLLib.isWhitespaceText(child))
+ return false;
+ }
+ }
+ return Xml.isSelfClosing(element);
+ },
+
+ /**
+ * Finds the next sibling of the given node. If the
+ * {@link Firebug#showTextNodesWithWhitespace} parameter is set to true, the next
+ * sibling may be a whitespace, otherwise the next is the first adjacent
+ * non-whitespace node.
+ *
+ * @param {Node} node Node to analyze.
+ * @return Next sibling node, if one exists
+ */
+ findNextSibling: function(node)
+ {
+ return this.findNextNodeFrom(node.nextSibling);
+ },
+
+ /**
+ * Like findNextSibling, except it also allows returning the node itself.
+ */
+ findNextNodeFrom: function(node)
+ {
+ if (Firebug.showTextNodesWithWhitespace)
+ {
+ return node;
+ }
+ else
+ {
+ // only return a non-whitespace node
+ for (var child = node; child; child = child.nextSibling)
+ {
+ if (!HTMLLib.isWhitespaceText(child))
+ return child;
+ }
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Domplate Utilities
+
+ /**
+ * Locates the attribute domplate node for a given element domplate. This method will
+ * only examine notes marked with the "nodeAttr" class that are the direct
+ * children of the given element.
+ *
+ * @param {Object} objectNodeBox The domplate element to look up the attribute for.
+ * @param {String} attrName Attribute name
+ * @return Attribute's domplate node
+ */
+ findNodeAttrBox: function(objectNodeBox, attrName)
+ {
+ var child = objectNodeBox.firstChild.lastChild.firstChild;
+ for (; child; child = child.nextSibling)
+ {
+ if (Css.hasClass(child, "nodeAttr") && child.childNodes[1].firstChild
+ && child.childNodes[1].firstChild.nodeValue == attrName)
+ {
+ return child;
+ }
+ }
+ },
+
+ /**
+ * Locates the text domplate node for a given text element domplate.
+ * @param {Object} nodeBox Text element domplate
+ * @return Element's domplate text node
+ */
+ getTextElementTextBox: function(nodeBox)
+ {
+ var nodeLabelBox = nodeBox.firstChild.lastChild;
+ return Dom.getChildByClass(nodeLabelBox, "nodeText");
+ },
+
+ // These functions can be copied to add tree walking feature, they allow Chromebug
+ // to reuse the HTML panel
+ ElementWalkerFunctions:
+ {
+ getTreeWalker: function(node)
+ {
+ if (!this.treeWalker || this.treeWalker.currentNode !== node)
+ this.treeWalker = node.ownerDocument.createTreeWalker(
+ node, NodeFilter.SHOW_ALL, null, false);
+
+ return this.treeWalker;
+ },
+
+ getFirstChild: function(node)
+ {
+ return node.firstChild;
+ },
+
+ getNextSibling: function(node)
+ {
+ // the Mozilla XBL tree walker fails for nextSibling
+ return node.nextSibling;
+ },
+
+ getParentNode: function(node)
+ {
+ // the Mozilla XBL tree walker fails for parentNode
+ return node.parentNode;
+ }
+ },
+
+ ElementWalker: function() // tree walking via new ElementWalker
+ {
+
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+HTMLLib.ElementWalker.prototype = HTMLLib.ElementWalkerFunctions;
+
+return HTMLLib;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/html/htmlPanel.js b/content/firebug/html/htmlPanel.js
index 1cdc084..c43ab5c 100644
--- a/content/firebug/html/htmlPanel.js
+++ b/content/firebug/html/htmlPanel.js
@@ -1,3166 +1,3166 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/chrome/reps",
- "firebug/lib/locale",
- "firebug/html/htmlLib",
- "firebug/lib/events",
- "firebug/js/sourceLink",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/chrome/window",
- "firebug/lib/options",
- "firebug/lib/xpath",
- "firebug/lib/string",
- "firebug/lib/xml",
- "firebug/lib/array",
- "firebug/lib/persist",
- "firebug/chrome/menu",
- "firebug/lib/url",
- "firebug/css/cssModule",
- "firebug/css/cssReps",
- "firebug/js/breakpoint",
- "firebug/editor/editor",
- "firebug/chrome/searchBox",
- "firebug/html/insideOutBox",
- "firebug/html/inspector",
- "firebug/html/layout"
-],
-function(Obj, Firebug, Domplate, FirebugReps, Locale, HTMLLib, Events,
- SourceLink, Css, Dom, Win, Options, Xpath, Str, Xml, Arr, Persist, Menu,
- Url, CSSModule, CSSInfoTip) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const BP_BREAKONATTRCHANGE = 1;
-const BP_BREAKONCHILDCHANGE = 2;
-const BP_BREAKONREMOVE = 3;
-const BP_BREAKONTEXT = 4;
-
-var KeyEvent = window.KeyEvent;
-
-// ********************************************************************************************* //
-
-Firebug.HTMLModule = Obj.extend(Firebug.Module,
-{
- dispatchName: "htmlModule",
-
- initialize: function(prefDomain, prefNames)
- {
- Firebug.Module.initialize.apply(this, arguments);
- Firebug.connection.addListener(this.DebuggerListener);
- },
-
- shutdown: function()
- {
- Firebug.Module.shutdown.apply(this, arguments);
- Firebug.connection.removeListener(this.DebuggerListener);
- },
-
- initContext: function(context, persistedState)
- {
- Firebug.Module.initContext.apply(this, arguments);
- context.mutationBreakpoints = new MutationBreakpointGroup(context);
- },
-
- loadedContext: function(context, persistedState)
- {
- context.mutationBreakpoints.load(context);
- },
-
- destroyContext: function(context, persistedState)
- {
- Firebug.Module.destroyContext.apply(this, arguments);
-
- context.mutationBreakpoints.store(context);
- },
-
- deleteNode: function(node, context)
- {
- Events.dispatch(this.fbListeners, "onBeginFirebugChange", [node, context]);
- node.parentNode.removeChild(node);
- Events.dispatch(this.fbListeners, "onEndFirebugChange", [node, context]);
- },
-
- deleteAttribute: function(node, attr, context)
- {
- Events.dispatch(this.fbListeners, "onBeginFirebugChange", [node, context]);
- node.removeAttribute(attr);
- Events.dispatch(this.fbListeners, "onEndFirebugChange", [node, context]);
- }
-});
-
-// ********************************************************************************************* //
-
-Firebug.HTMLPanel = function() {};
-
-var WalkingPanel = Obj.extend(Firebug.Panel, HTMLLib.ElementWalkerFunctions);
-
-Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
-{
- inspectable: true,
-
- toggleEditing: function()
- {
- if (this.editing)
- this.stopEditing();
- else
- this.editNode(this.selection);
- },
-
- stopEditing: function()
- {
- Firebug.Editor.stopEditing();
- },
-
- isEditing: function()
- {
- var editButton = Firebug.chrome.$("fbToggleHTMLEditing");
- return (this.editing && editButton.getAttribute("checked") === "true");
- },
-
- // Update the Edit button to reflect editability of the selection
- setEditEnableState: function(ignoreEditing)
- {
- var editButton = Firebug.chrome.$("fbToggleHTMLEditing");
- editButton.disabled = (this.selection && (!this.isEditing() || ignoreEditing) &&
- Css.nonEditableTags.hasOwnProperty(this.selection.localName));
- },
-
- resetSearch: function()
- {
- delete this.lastSearch;
- },
-
- select: function(object, forceUpdate, noEditChange)
- {
- if (!object)
- object = this.getDefaultSelection();
-
- if (FBTrace.DBG_PANELS)
- {
- FBTrace.sysout("firebug.select " + this.name + " forceUpdate: " + forceUpdate + " " +
- object + ((object == this.selection) ? "==" : "!=") + this.selection);
- }
-
- if (forceUpdate || object != this.selection)
- {
- this.selection = object;
- this.updateSelection(object);
-
- this.setEditEnableState();
-
- // Distribute selection change further to listeners.
- Events.dispatch(Firebug.uiListeners, "onObjectSelected", [object, this]);
-
- // If the 'free text' edit mode is active change the current markup
- // displayed in the editor (textarea) so that it corresponds to the current
- // selection. This typically happens when the user clicks on object-status-path
- // buttons in the toolbar.
- // For the case when the selection is changed from within the editor, don't
- // change the edited element.
- if (this.isEditing() && !noEditChange)
- this.editNode(object);
- }
- },
-
- selectNext: function()
- {
- var objectBox = this.ioBox.createObjectBox(this.selection);
- var next = this.ioBox.getNextObjectBox(objectBox);
- if (next)
- {
- this.select(next.repObject);
-
- if (Firebug.Inspector.inspecting)
- Firebug.Inspector.inspectNode(next.repObject);
- }
- },
-
- selectPrevious: function()
- {
- var objectBox = this.ioBox.createObjectBox(this.selection);
- var previous = this.ioBox.getPreviousObjectBox(objectBox);
- if (previous)
- {
- this.select(previous.repObject);
-
- if (Firebug.Inspector.inspecting)
- Firebug.Inspector.inspectNode(previous.repObject);
- }
- },
-
- selectNodeBy: function(dir)
- {
- if (dir == "up")
- {
- this.selectPrevious();
- }
- else if (dir == "down")
- {
- this.selectNext();
- }
- else if (dir == "left")
- {
- var box = this.ioBox.createObjectBox(this.selection);
- if (Css.hasClass(box, "open"))
- {
- this.ioBox.contractObjectBox(box);
- }
- else
- {
- var parentBox = this.ioBox.getParentObjectBox(box);
- if (parentBox && parentBox.repObject instanceof window.Element)
- this.select(parentBox.repObject);
- }
- }
- else if (dir == "right")
- {
- var box = this.ioBox.createObjectBox(this.selection);
- if (!Css.hasClass(box, "open"))
- this.ioBox.expandObject(this.selection);
- else
- this.selectNext();
- }
-
- Firebug.Inspector.highlightObject(this.selection, this.context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- editNewAttribute: function(elt)
- {
- var objectNodeBox = this.ioBox.findObjectBox(elt);
- if (objectNodeBox)
- {
- var labelBox = objectNodeBox.querySelector("*> .nodeLabel > .nodeLabelBox");
- var bracketBox = labelBox.querySelector("*> .nodeBracket");
- Firebug.Editor.insertRow(bracketBox, "before");
- }
- },
-
- editAttribute: function(elt, attrName)
- {
- var objectNodeBox = this.ioBox.findObjectBox(elt);
- if (objectNodeBox)
- {
- var attrBox = HTMLLib.findNodeAttrBox(objectNodeBox, attrName);
- if (attrBox)
- {
- var attrValueBox = attrBox.childNodes[3];
- var value = elt.getAttribute(attrName);
- Firebug.Editor.startEditing(attrValueBox, value);
- }
- }
- },
-
- deleteAttribute: function(elt, attrName)
- {
- Firebug.HTMLModule.deleteAttribute(elt, attrName, this.context);
- },
-
- localEditors:{}, // instantiated editor cache
- editNode: function(node)
- {
- var objectNodeBox = this.ioBox.findObjectBox(node);
- if (objectNodeBox)
- {
- var type = Xml.getElementType(node);
- var editor = this.localEditors[type];
- if (!editor)
- {
- // look for special purpose editor (inserted by an extension),
- // otherwise use our html editor
- var specializedEditor = Firebug.HTMLPanel.Editors[type] ||
- Firebug.HTMLPanel.Editors["html"];
- editor = this.localEditors[type] = new specializedEditor(this.document);
- }
-
- this.startEditingNode(node, objectNodeBox, editor, type);
- }
- },
-
- startEditingNode: function(node, box, editor, type)
- {
- switch (type)
- {
- case "html":
- case "xhtml":
- this.startEditingHTMLNode(node, box, editor);
- break;
- default:
- this.startEditingXMLNode(node, box, editor);
- }
- },
-
- startEditingXMLNode: function(node, box, editor)
- {
- var xml = Xml.getElementXML(node);
- Firebug.Editor.startEditing(box, xml, editor);
- },
-
- startEditingHTMLNode: function(node, box, editor)
- {
- if (Css.nonEditableTags.hasOwnProperty(node.localName))
- return;
-
- editor.innerEditMode = node.localName in Css.innerEditableTags;
-
- var html = editor.innerEditMode ? node.innerHTML : Xml.getElementHTML(node);
- html = Str.escapeForHtmlEditor(html);
- Firebug.Editor.startEditing(box, html, editor);
- },
-
- deleteNode: function(node, dir)
- {
- var box = this.ioBox.createObjectBox(node);
- if (Css.hasClass(box, "open"))
- this.ioBox.contractObjectBox(box);
-
- if (dir === "up")
- {
- // We want a "backspace"-like behavior, including traversing parents.
- this.selectPrevious();
- }
- else
- {
- // Move to the next sibling if there is one, else backwards.
- var nextSelection = this.ioBox.getNextSiblingObjectBox(box);
- if (nextSelection)
- this.select(nextSelection.repObject);
- else
- this.selectPrevious();
- }
-
- Firebug.HTMLModule.deleteNode(node, this.context);
-
- Firebug.Inspector.highlightObject(this.selection, this.context);
- },
-
- toggleAll: function(event, node)
- {
- var expandExternalContentNodes = Events.isShift(event);
- this.ioBox.toggleObject(node, true, expandExternalContentNodes ?
- null : ["link", "script", "style"]);
- },
-
- updateNodeVisibility: function(node)
- {
- var wasHidden = node.classList.contains("nodeHidden");
- if (!Xml.isVisible(node.repObject))
- {
- // Hide this node and, through CSS, every descendant.
- node.classList.add("nodeHidden");
- }
- else if (wasHidden)
- {
- // The node has changed state from hidden to shown. While in the
- // hidden state, some descendants may have been explicitly marked
- // with .nodeHidden (not just through CSS inheritance), so we need
- // to recheck the visibility of those.
- node.classList.remove("nodeHidden");
- var desc = Arr.cloneArray(node.getElementsByClassName("nodeHidden"));
- for (var i = 0; i < desc.length; ++i)
- {
- if (Xml.isVisible(desc[i].repObject))
- desc[i].classList.remove("nodeHidden");
- }
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getElementSourceText: function(node)
- {
- if (this.sourceElements)
- {
- var index = this.sourceElementNodes.indexOf(node);
- if (index != -1)
- return this.sourceElements[index];
- }
-
- var lines;
-
- var url = HTMLLib.getSourceHref(node);
- if (url)
- {
- lines = this.context.sourceCache.load(url);
- }
- else
- {
- var text = HTMLLib.getSourceText(node);
- lines = Str.splitLines(text);
- }
-
- var sourceElt = new Firebug.HTMLModule.SourceText(lines, node);
-
- if (!this.sourceElements)
- {
- this.sourceElements = [sourceElt];
- this.sourceElementNodes = [node];
- }
- else
- {
- this.sourceElements.push(sourceElt);
- this.sourceElementNodes.push(node);
- }
-
- return sourceElt;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- registerMutationListeners: function(win)
- {
- var context = this.context;
- if (!context.registeredHTMLMutationObservers)
- context.registeredHTMLMutationObservers = new WeakMap();
-
- var self = this;
- function addObserver(win)
- {
- var doc = win.document;
- if (context.registeredHTMLMutationObservers.has(doc))
- return;
-
- // xxxHonza: an iframe doesn't have to be loaded yet, so do not
- // register mutation observers in such cases since they wouldn't
- // be removed.
- // The listeners can be registered later in watchWindowDelayed,
- // but it's also risky. Mutation observers should be registered
- // at the moment when it's clear that the window/frame has been
- // loaded.
-
- // This breaks HTML panel for about:blank pages (see issue 5120).
- //if (doc.location == "about:blank")
- // return;
-
- var observer = new MutationObserver(self.onMutationObserve);
- observer.observe(doc, {
- attributes: true,
- childList: true,
- characterData: true,
- subtree: true
- });
- context.registeredHTMLMutationObservers.set(doc, observer);
- }
-
- // If a window is specified use it, otherwise register observers for all
- // context windows (including the main window and all embedded iframes).
- if (win)
- addObserver(win);
- else
- Win.iterateWindows(this.context.window, addObserver);
-
- this.registerMutationBreakpointListeners(win);
- },
-
- unregisterMutationListeners: function(win)
- {
- this.unregisterMutationBreakpointListeners(win);
-
- var context = this.context;
- if (!context.registeredHTMLMutationObservers)
- return;
-
- function removeObserver(win)
- {
- var doc = win.document;
- var observer = context.registeredHTMLMutationObservers.get(doc);
- if (!observer)
- return;
-
- observer.disconnect();
- context.registeredHTMLMutationObservers.delete(doc);
- }
-
- if (win)
- removeObserver(win);
- else
- Win.iterateWindows(context.window, removeObserver);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- registerMutationBreakpointListeners: function(win)
- {
- var context = this.context;
- if (!context.mutationBreakpointListenersEnabled)
- return;
-
- if (!context.registeredHTMLMutationEvents)
- context.registeredHTMLMutationEvents = new WeakMap();
-
- var self = this;
- function addListeners(win)
- {
- var doc = win.document;
- if (context.registeredHTMLMutationEvents.has(doc))
- return;
- context.registeredHTMLMutationEvents.set(doc, 1);
-
- // (See also the changes in registerMutationListeners's addObserver)
- Events.addEventListener(doc, "DOMAttrModified", self.onMutateAttr, false);
- Events.addEventListener(doc, "DOMCharacterDataModified", self.onMutateText, false);
- Events.addEventListener(doc, "DOMNodeInserted", self.onMutateNode, false);
- Events.addEventListener(doc, "DOMNodeRemoved", self.onMutateNode, false);
- }
-
- if (win)
- addListeners(win);
- else
- Win.iterateWindows(context.window, addListeners);
- },
-
- unregisterMutationBreakpointListeners: function(win)
- {
- var context = this.context;
- if (!context.mutationBreakpointListenersEnabled)
- return;
-
- if (!context.registeredHTMLMutationEvents)
- return;
-
- var self = this;
- function removeListeners(win)
- {
- var doc = win.document;
- if (!context.registeredHTMLMutationEvents.has(doc))
- return;
- context.registeredHTMLMutationEvents.delete(doc);
-
- Events.removeEventListener(doc, "DOMAttrModified", self.onMutateAttr, false);
- Events.removeEventListener(doc, "DOMCharacterDataModified", self.onMutateText, false);
- Events.removeEventListener(doc, "DOMNodeInserted", self.onMutateNode, false);
- Events.removeEventListener(doc, "DOMNodeRemoved", self.onMutateNode, false);
- }
-
- if (win)
- removeListeners(win);
- else
- Win.iterateWindows(context.window, removeListeners);
- },
-
- updateMutationBreakpointListeners: function()
- {
- var context = this.context;
- var isEnabled = !!context.mutationBreakpointListenersEnabled;
- var shouldEnable = this.shouldBreakOnNext() ||
- context.mutationBreakpoints.hasEnabledBreakpoints();
- if (isEnabled === shouldEnable)
- return;
- if (shouldEnable)
- {
- context.mutationBreakpointListenersEnabled = true;
- this.registerMutationBreakpointListeners();
- }
- else
- {
- this.unregisterMutationBreakpointListeners();
- context.mutationBreakpointListenersEnabled = false;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- mutateAttr: function(target, attrName, attrValue, removal)
- {
- // Due to the delay call this may or may not exist in the tree anymore
- if (!this.ioBox.isInExistingRoot(target))
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("mutateAttr: different tree " + target, target);
- return;
- }
-
- if (FBTrace.DBG_HTML)
- {
- FBTrace.sysout("html.mutateAttr target:" + target + " attrName:" + attrName +
- " attrValue: " + attrValue + " removal: " + removal, target);
- }
-
- this.markChange();
-
- var objectNodeBox = Firebug.scrollToMutations || Firebug.expandMutations ?
- this.ioBox.createObjectBox(target) : this.ioBox.findObjectBox(target);
-
- if (!objectNodeBox)
- return;
-
- this.updateNodeVisibility(objectNodeBox);
-
- if (!removal)
- {
- var nodeAttr = HTMLLib.findNodeAttrBox(objectNodeBox, attrName);
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("mutateAttr " + removal + " " + attrName + "=" + attrValue +
- " node: " + nodeAttr, nodeAttr);
-
- if (nodeAttr && nodeAttr.childNodes.length > 3)
- {
- var attrValueBox = nodeAttr.getElementsByClassName("nodeValue")[0];
- var attrValueText = attrValueBox.firstChild;
- if (attrValueText)
- attrValueText.nodeValue = attrValue;
- else
- attrValueBox.textContent = attrValue;
-
- this.highlightMutation(attrValueBox, objectNodeBox, "mutated");
- }
- else
- {
- var attr = target.getAttributeNode(attrName);
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("mutateAttr getAttributeNode " + removal + " " + attrName +
- "=" + attrValue + " node: " + attr, attr);
-
- if (attr)
- {
- nodeAttr = Firebug.HTMLPanel.AttrNode.tag.replace({attr: attr},
- this.document);
-
- var labelBox = objectNodeBox.querySelector("*> .nodeLabel > .nodeLabelBox");
- var bracketBox = labelBox.querySelector("*> .nodeBracket");
- labelBox.insertBefore(nodeAttr, bracketBox);
-
- this.highlightMutation(nodeAttr, objectNodeBox, "mutated");
- }
- }
- }
- else
- {
- var nodeAttr = HTMLLib.findNodeAttrBox(objectNodeBox, attrName);
- if (nodeAttr)
- nodeAttr.parentNode.removeChild(nodeAttr);
-
- // We want to highlight regardless as the domplate may have been
- // generated after the attribute was removed from the node
- this.highlightMutation(objectNodeBox, objectNodeBox, "mutated");
- }
-
- Firebug.Inspector.repaint();
- },
-
- mutateText: function(target, parent, textValue)
- {
- // Due to the delay call this may or may not exist in the tree anymore
- if (!this.ioBox.isInExistingRoot(target))
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("mutateText: different tree " + target, target);
- return;
- }
-
- this.markChange();
-
- var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations ?
- this.ioBox.createObjectBox(parent) : this.ioBox.findObjectBox(parent);
-
- if (!parentNodeBox)
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("html.mutateText failed to update text, parent node " +
- "box does not exist");
- return;
- }
-
- if (!Firebug.showFullTextNodes)
- textValue = Str.cropMultipleLines(textValue);
-
- var parentTag = getNodeBoxTag(parentNodeBox);
- if (parentTag == Firebug.HTMLPanel.TextElement.tag)
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("html.mutateText target: " + target + " parent: " + parent);
-
- // Rerender the entire parentNodeBox. Proper entity-display logic will
- // be automatically applied according to the preferences.
- var newParentNodeBox = parentTag.replace({object: parentNodeBox.repObject}, this.document);
- if (parentNodeBox.parentNode)
- parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
-
- // Reselect if the element was selected before.
- if (this.selection && (!this.selection.parentNode || parent == this.selection))
- this.ioBox.select(parent, true);
-
- var nodeText = HTMLLib.getTextElementTextBox(newParentNodeBox);
- if (!nodeText.firstChild)
- {
- if (FBTrace.DBG_HTML)
- {
- FBTrace.sysout("html.mutateText failed to update text, " +
- "TextElement firstChild does not exist");
- }
- return;
- }
-
- // Highlight the text box only (not the entire parentNodeBox/element).
- this.highlightMutation(nodeText, newParentNodeBox, "mutated");
- }
- else
- {
- var childBox = this.ioBox.getChildObjectBox(parentNodeBox);
- if (!childBox)
- {
- if (FBTrace.DBG_HTML)
- {
- FBTrace.sysout("html.mutateText failed to update text, " +
- "no child object box found");
- }
- return;
- }
-
- var textNodeBox = this.ioBox.findChildObjectBox(childBox, target);
- if (textNodeBox)
- {
- // structure for comment and cdata. Are there others?
- textNodeBox.firstChild.firstChild.nodeValue = textValue;
-
- this.highlightMutation(textNodeBox, parentNodeBox, "mutated");
- }
- else if (Firebug.scrollToMutations || Firebug.expandMutations)
- {
- // We are not currently rendered but we are set to highlight
- var objectBox = this.ioBox.createObjectBox(target);
- this.highlightMutation(objectBox, objectBox, "mutated");
- }
- }
- },
-
- mutateNode: function(target, parent, nextSibling, removal)
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("html.mutateNode target:" + target + " parent:" + parent +
- (removal ? "REMOVE" : ""));
-
- // Due to the delay call this may or may not exist in the tree anymore
- if (!removal && !this.ioBox.isInExistingRoot(target))
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("mutateNode: different tree " + target, target);
- return;
- }
-
- this.markChange(); // This invalidates the panels for every mutate
-
- var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
- ? this.ioBox.createObjectBox(parent)
- : this.ioBox.findObjectBox(parent);
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("html.mutateNode parent:" + parent + " parentNodeBox:" +
- parentNodeBox);
-
- if (!parentNodeBox)
- return;
-
- // Ignore whitespace nodes.
- if (!Firebug.showTextNodesWithWhitespace && this.isWhitespaceText(target))
- return;
-
- var newParentTag = getNodeTag(parent);
- var oldParentTag = getNodeBoxTag(parentNodeBox);
-
- var objectBox = null;
-
- if (newParentTag == oldParentTag)
- {
- if (parentNodeBox.populated)
- {
- if (removal)
- {
- this.ioBox.removeChildBox(parentNodeBox, target);
-
- // Special case for docType.
- if (target instanceof HTMLHtmlElement)
- this.ioBox.removeChildBox(parentNodeBox, target.parentNode.doctype);
-
- this.highlightMutation(parentNodeBox, parentNodeBox, "mutated");
- }
- else
- {
- var childBox = this.ioBox.getChildObjectBox(parentNodeBox);
-
- var comments = Firebug.showCommentNodes;
- var whitespaces = Firebug.showTextNodesWithWhitespace;
-
- // Get the right next sibling that match following criteria:
- // 1) It's not a whitespace text node in case 'show whitespaces' is false.
- // 2) It's not a comment in case 'show comments' is false.
- // 3) There is a child box already created for it in the HTML panel UI.
- // The new node will then be inserted before that sibling's child box, or
- // appended at the end (issue 5255).
- while (nextSibling && (
- (!whitespaces && HTMLLib.isWhitespaceText(nextSibling)) ||
- (!comments && nextSibling instanceof window.Comment) ||
- (!this.ioBox.findChildObjectBox(childBox, nextSibling))))
- {
- nextSibling = this.findNextSibling(nextSibling);
- }
-
- objectBox = nextSibling ?
- this.ioBox.insertChildBoxBefore(parentNodeBox, target, nextSibling) :
- this.ioBox.appendChildBox(parentNodeBox, target);
-
- // Special case for docType.
- if (target instanceof HTMLHtmlElement)
- {
- this.ioBox.insertChildBoxBefore(parentNodeBox,
- target.parentNode.doctype, target);
- }
-
- this.highlightMutation(objectBox, objectBox, "mutated");
- }
- }
- else // !parentNodeBox.populated
- {
- var newParentNodeBox = newParentTag.replace({object: parent}, this.document);
- parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
-
- if (this.selection && (!this.selection.parentNode || parent == this.selection))
- this.ioBox.select(parent, true);
-
- this.highlightMutation(newParentNodeBox, newParentNodeBox, "mutated");
-
- if (!removal && (Firebug.scrollToMutations || Firebug.expandMutations))
- {
- objectBox = this.ioBox.createObjectBox(target);
- this.highlightMutation(objectBox, objectBox, "mutated");
- }
- }
- }
- else // newParentTag != oldParentTag
- {
- var newParentNodeBox = newParentTag.replace({object: parent}, this.document);
- if (parentNodeBox.parentNode)
- parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
-
- if (Css.hasClass(parentNodeBox, "open"))
- this.ioBox.toggleObjectBox(newParentNodeBox, true);
-
- if (this.selection && (!this.selection.parentNode || parent == this.selection))
- this.ioBox.select(parent, true);
-
- this.highlightMutation(newParentNodeBox, newParentNodeBox, "mutated");
-
- if (!removal && (Firebug.scrollToMutations || Firebug.expandMutations))
- {
- objectBox = this.ioBox.createObjectBox(target);
- this.highlightMutation(objectBox, objectBox, "mutated");
- }
- }
-
- if (objectBox && this.selection === target)
- this.ioBox.selectObjectBox(objectBox);
- },
-
- highlightMutation: function(elt, objectBox, type)
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("html.highlightMutation Firebug.highlightMutations:" +
- Firebug.highlightMutations, {elt: elt, objectBox: objectBox, type: type});
-
- if (!elt)
- return;
-
- if (Firebug.scrollToMutations || Firebug.expandMutations)
- {
- if (this.context.mutationTimeout)
- {
- this.context.clearTimeout(this.context.mutationTimeout);
- delete this.context.mutationTimeout;
- }
-
- var ioBox = this.ioBox;
- var panelNode = this.panelNode;
-
- this.context.mutationTimeout = this.context.setTimeout(function()
- {
- ioBox.openObjectBox(objectBox);
-
- if (Firebug.scrollToMutations)
- Dom.scrollIntoCenterView(objectBox, panelNode);
- }, 200);
- }
-
- if (Firebug.highlightMutations)
- Css.setClassTimed(elt, type, this.context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // InsideOutBoxView implementation
-
- createObjectBox: function(object, isRoot)
- {
- if (FBTrace.DBG_HTML)
- {
- FBTrace.sysout("html.createObjectBox(" + Css.getElementCSSSelector(object) +
- ", isRoot:" + (isRoot? "true" : "false")+")");
- }
-
- var tag = getNodeTag(object);
- if (tag)
- return tag.replace({object: object}, this.document);
- },
-
- getParentObject: function(node)
- {
- if (node instanceof Firebug.HTMLModule.SourceText)
- return node.owner;
-
- var parentNode = this.getParentNode(node);
-
- // for chromebug to avoid climbing out to browser.xul
- if (node.nodeName == "#document")
- return null;
-
- //if (FBTrace.DBG_HTML)
- // FBTrace.sysout("html.getParentObject for "+node.nodeName+" parentNode:"+
- // Css.getElementCSSSelector(parentNode));
-
- if (parentNode)
- {
- if (parentNode.nodeType == Node.DOCUMENT_NODE)
- {
- if (parentNode.defaultView)
- {
- if (parentNode.defaultView == this.context.window)
- return parentNode;
-
- if (FBTrace.DBG_HTML)
- {
- FBTrace.sysout("getParentObject; node is document node"+
- ", frameElement:" + parentNode.defaultView.frameElement);
- }
-
- return parentNode.defaultView.frameElement;
- }
- else
- {
- var skipParent = this.getEmbedConnection(parentNode);
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("getParentObject skipParent:" +
- (skipParent ? skipParent.nodeName : "none"));
-
- if (skipParent)
- return skipParent;
- else
- return null; // parent is document element, but no window at defaultView.
- }
- }
- else if (!parentNode.localName)
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("getParentObject: null localName must be window, no parentObject");
- return null;
- }
- else
- {
- return parentNode;
- }
- }
- else
- {
- // Documents have no parentNode; Attr, Document, DocumentFragment, Entity,
- // and Notation. top level windows have no parentNode
- if (node && node.nodeType == Node.DOCUMENT_NODE)
- {
- // generally a reference to the window object for the document, however
- // that is not defined in the specification
- if (node.defaultView)
- {
- var embeddingFrame = node.defaultView.frameElement;
- if (embeddingFrame)
- return embeddingFrame.contentDocument;
- }
- else
- {
- // a Document object without a parentNode or window
- return null; // top level has no parent
- }
- }
- }
- },
-
- setEmbedConnection: function(node, skipChild)
- {
- if (!this.embeddedBrowserParents)
- {
- this.embeddedBrowserParents = [];
- this.embeddedBrowserDocument = [];
- }
-
- this.embeddedBrowserDocument.push(skipChild);
-
- // store our adopted child in a side table
- this.embeddedBrowserParents.push(node);
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("Found skipChild " + Css.getElementCSSSelector(skipChild) +
- " for " + Css.getElementCSSSelector(node) + " with node.contentDocument " +
- node.contentDocument);
-
- return skipChild;
- },
-
- getEmbedConnection: function(node)
- {
- if (this.embeddedBrowserParents)
- {
- var index = this.embeddedBrowserParents.indexOf(node);
- if (index !== -1)
- return this.embeddedBrowserDocument[index];
- }
- },
-
- /**
- * @param: node a DOM node from the Web page
- * @param: index counter for important children, may skip whitespace
- * @param: previousSibling a node from the web page
- */
- getChildObject: function(node, index, previousSibling)
- {
- if (!node)
- {
- FBTrace.sysout("getChildObject: null node");
- return;
- }
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("getChildObject " + node.tagName + " index " + index +
- " previousSibling: " +
- (previousSibling ? Css.getElementCSSSelector(previousSibling) : "null"),
- {node: node, previousSibling:previousSibling});
-
- if (this.isSourceElement(node))
- {
- if (index == 0)
- return this.getElementSourceText(node);
- else
- return null; // no siblings of source elements
- }
- else if (node instanceof window.Document)
- {
- if (previousSibling !== null)
- return this.getNextSibling(previousSibling);
- else
- return this.getFirstChild(node);
- }
- else if (node.contentDocument) // then the node is a frame
- {
- if (index == 0)
- {
- // punch thru and adopt the document node as our child
- var skipChild = node.contentDocument.firstChild;
-
- // (the node's).(type 9 document).(HTMLElement)
- return this.setEmbedConnection(node, skipChild);
- }
- else if (previousSibling)
- {
- // Next child of a document (after doc-type) is <html>.
- return this.getNextSibling(previousSibling);
- }
- }
- else if (node.getSVGDocument && node.getSVGDocument()) // then the node is a frame
- {
- if (index == 0)
- {
- var skipChild = node.getSVGDocument().documentElement; // unwrap
-
- // (the node's).(type 9 document).(HTMLElement)
- return this.setEmbedConnection(node, skipChild);
- }
- else
- {
- return null;
- }
- }
-
- var child;
- if (previousSibling) // then we are walking
- child = this.getNextSibling(previousSibling); // may return null, meaning done with iteration.
- else
- child = this.getFirstChild(node); // child is set to at the beginning of an iteration.
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("getChildObject firstChild " + Css.getElementCSSSelector(child) +
- " with Firebug.showTextNodesWithWhitespace " +
- Firebug.showTextNodesWithWhitespace);
-
- if (Firebug.showTextNodesWithWhitespace) // then the index is true to the node list
- {
- return child;
- }
- else
- {
- for (; child; child = this.getNextSibling(child))
- {
- if (!this.isWhitespaceText(child))
- return child;
- }
- }
-
- return null; // we have no children worth showing.
- },
-
- isWhitespaceText: function(node)
- {
- return HTMLLib.isWhitespaceText(node);
- },
-
- findNextSibling: function (node)
- {
- return HTMLLib.findNextSibling(node);
- },
-
- isSourceElement: function(element)
- {
- return HTMLLib.isSourceElement(element);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Events
-
- onMutationObserve: function(records)
- {
- for (var ri = 0; ri < records.length; ++ri)
- {
- var record = records[ri];
-
- var target = record.target;
- if (Firebug.shouldIgnore(target))
- continue;
-
- var type = record.type;
- if (type === "attributes")
- {
- var attrName = record.attributeName;
- var newValue = target.getAttribute(attrName);
- var removal = (newValue === null);
- this.context.throttle(this.mutateAttr, this,
- [target, attrName, newValue, removal]);
- }
- else if (type === "childList")
- {
- var added = record.addedNodes, removed = record.removedNodes;
- if (added.length)
- {
- var nextSibling = HTMLLib.findNextNodeFrom(record.nextSibling);
- for (var i = 0; i < added.length; ++i)
- {
- var node = added[i];
- if (Firebug.shouldIgnore(node))
- continue;
- this.context.throttle(this.mutateNode, this,
- [node, target, nextSibling, false]);
- }
- }
- for (var i = 0; i < removed.length; ++i)
- {
- var node = removed[i];
- if (Firebug.shouldIgnore(node))
- continue;
- this.context.throttle(this.mutateNode, this,
- [node, target, null, true]);
- }
- }
- else if (type === "characterData")
- {
- this.context.throttle(this.mutateText, this,
- [target, target.parentNode, target.data]);
- }
- }
- },
-
- onMutateAttr: function(event)
- {
- var target = event.target;
- if (Firebug.shouldIgnore(target))
- return;
-
- Firebug.HTMLModule.MutationBreakpoints.onMutateAttr(event, this.context);
- this.updateMutationBreakpointListeners();
- },
-
- onMutateText: function(event)
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("html.onMutateText; ", event);
-
- Firebug.HTMLModule.MutationBreakpoints.onMutateText(event, this.context);
- this.updateMutationBreakpointListeners();
- },
-
- onMutateNode: function(event)
- {
- var target = event.target;
- if (Firebug.shouldIgnore(target))
- return;
-
- Firebug.HTMLModule.MutationBreakpoints.onMutateNode(event, this.context);
- this.updateMutationBreakpointListeners();
- },
-
- onClick: function(event)
- {
- if (Events.isLeftClick(event) && Events.isDoubleClick(event))
- {
- // The double-click (detail == 2) expands an HTML element, but the user must click
- // on the element itself not on the twisty.
- // The logic should be as follow:
- // - click on the twisty expands/collapses the element
- // - double click on the element name expands/collapses it
- // - click on the element name selects it
- if (!Css.hasClass(event.target, "twisty") && !Css.hasClass(event.target, "nodeLabel"))
- this.toggleNode(event);
- }
- else if (Events.isAltClick(event) && Events.isDoubleClick(event) && !this.editing)
- {
- var node = Firebug.getRepObject(event.target);
- this.editNode(node);
- }
- },
-
- onMouseDown: function(event)
- {
- if (!Events.isLeftClick(event))
- return;
-
- if (Dom.getAncestorByClass(event.target, "nodeTag"))
- {
- var node = Firebug.getRepObject(event.target);
- this.noScrollIntoView = true;
- this.select(node);
-
- delete this.noScrollIntoView;
-
- if (Css.hasClass(event.target, "twisty"))
- this.toggleNode(event);
- }
- },
-
- toggleNode: function(event)
- {
- var node = Firebug.getRepObject(event.target);
- var box = this.ioBox.createObjectBox(node);
- if (!Css.hasClass(box, "open"))
- this.ioBox.expandObject(node);
- else
- this.ioBox.contractObject(this.selection);
- },
-
- onKeyPress: function(event)
- {
- if (this.editing)
- return;
-
- var node = this.selection;
- if (!node)
- return;
-
- // * expands the node with all its children
- // + expands the node
- // - collapses the node
- var ch = String.fromCharCode(event.charCode);
- if (ch == "*")
- this.toggleAll(event, node);
-
- if (!Events.noKeyModifiers(event))
- return;
-
- if (ch == "+")
- this.ioBox.expandObject(node);
- else if (ch == "-")
- this.ioBox.contractObject(node);
-
- if (event.keyCode == KeyEvent.DOM_VK_UP)
- this.selectNodeBy("up");
- else if (event.keyCode == KeyEvent.DOM_VK_DOWN)
- this.selectNodeBy("down");
- else if (event.keyCode == KeyEvent.DOM_VK_LEFT)
- this.selectNodeBy("left");
- else if (event.keyCode == KeyEvent.DOM_VK_RIGHT)
- this.selectNodeBy("right");
- else if (event.keyCode == KeyEvent.DOM_VK_BACK_SPACE)
- {
- if (!Css.nonDeletableTags.hasOwnProperty(node.localName))
- this.deleteNode(node, "up");
- }
- else if (event.keyCode == KeyEvent.DOM_VK_DELETE)
- {
- if (!Css.nonDeletableTags.hasOwnProperty(node.localName))
- this.deleteNode(node, "down");
- }
- else
- return;
-
- Events.cancelEvent(event);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // CSS Listener
-
- updateVisibilitiesForSelectorInSheet: function(sheet, selector)
- {
- if (!selector)
- return;
- var doc = (sheet && sheet.ownerNode && sheet.ownerNode.ownerDocument);
- if (!doc)
- return;
-
- var affected = doc.querySelectorAll(selector);
- if (!affected.length || !this.ioBox.isInExistingRoot(affected[0]))
- return;
-
- for (var i = 0; i < affected.length; ++i)
- {
- var node = this.ioBox.findObjectBox(affected[i]);
- if (node)
- this.updateNodeVisibility(node);
- }
- },
-
- updateVisibilitiesForRule: function(rule)
- {
- this.updateVisibilitiesForSelectorInSheet(rule.parentStyleSheet, rule.selectorText);
- },
-
- cssPropAffectsVisibility: function(propName)
- {
- // Pretend that "display" is the only property which affects visibility,
- // which is a half-truth. We could make this more technically correct
- // by unconditionally returning true, but forcing a synchronous reflow
- // and computing offsetWidth/Height on up to every element on the page
- // isn't worth it.
- return (propName === "display");
- },
-
- cssTextAffectsVisibility: function(cssText)
- {
- return (cssText.indexOf("display:") !== -1);
- },
-
- onAfterCSSDeleteRule: function(styleSheet, cssText, selector)
- {
- if (this.cssTextAffectsVisibility(cssText))
- this.updateVisibilitiesForSelectorInSheet(styleSheet, selector);
- },
-
- onCSSInsertRule: function(styleSheet, cssText, ruleIndex)
- {
- if (this.cssTextAffectsVisibility(cssText))
- this.updateVisibilitiesForRule(styleSheet.cssRules[ruleIndex]);
- },
-
- onCSSSetProperty: function(style, propName, propValue, propPriority, prevValue,
- prevPriority, rule, baseText)
- {
- if (this.cssPropAffectsVisibility(propName))
- this.updateVisibilitiesForRule(rule);
- },
-
- onCSSRemoveProperty: function(style, propName, prevValue, prevPriority, rule, baseText)
- {
- if (this.cssPropAffectsVisibility(propName))
- this.updateVisibilitiesForRule(rule);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Panel
-
- name: "html",
- searchable: true,
- breakable: true,
- dependents: ["css", "computed", "layout", "dom", "domSide", "watch"],
- inspectorHistory: new Array(5),
- enableA11y: true,
- order: 20,
-
- initialize: function()
- {
- this.onMutationObserve = this.onMutationObserve.bind(this);
- this.onMutateText = this.onMutateText.bind(this);
- this.onMutateAttr = this.onMutateAttr.bind(this);
- this.onMutateNode = this.onMutateNode.bind(this);
- this.onClick = this.onClick.bind(this);
- this.onMouseDown = this.onMouseDown.bind(this);
- this.onKeyPress = this.onKeyPress.bind(this);
-
- Firebug.Panel.initialize.apply(this, arguments);
- Firebug.CSSModule.addListener(this);
- },
-
- destroy: function(state)
- {
- Persist.persistObjects(this, state);
-
- Firebug.Panel.destroy.apply(this, arguments);
-
- delete this.embeddedBrowserParents;
- delete this.embeddedBrowserDocument;
-
- // xxxHonza: I don't know why this helps, but it helps to release the
- // page compartment (at least by observing about:memory);
- // Note that inspectorHistory holds references to page elements.
- for (var i=0; i<this.inspectorHistory.length; i++)
- delete this.inspectorHistory[i];
- delete this.inspectorHistory;
-
- Firebug.CSSModule.removeListener(this);
- this.unregisterMutationListeners();
- },
-
- initializeNode: function(oldPanelNode)
- {
- if (!this.ioBox)
- this.ioBox = new Firebug.InsideOutBox(this, this.panelNode);
-
- Events.addEventListener(this.panelNode, "click", this.onClick, false);
- Events.addEventListener(this.panelNode, "mousedown", this.onMouseDown, false);
-
- Firebug.Panel.initializeNode.apply(this, arguments);
- },
-
- destroyNode: function()
- {
- Events.removeEventListener(this.panelNode, "click", this.onClick, false);
- Events.removeEventListener(this.panelNode, "mousedown", this.onMouseDown, false);
-
- Events.removeEventListener(this.panelNode.ownerDocument, "keypress",
- this.onKeyPress, true);
-
- if (this.ioBox)
- {
- this.ioBox.destroy();
- delete this.ioBox;
- }
-
- Firebug.Panel.destroyNode.apply(this, arguments);
- },
-
- show: function(state)
- {
- this.showToolbarButtons("fbHTMLButtons", true);
- this.showToolbarButtons("fbStatusButtons", true);
-
- Events.addEventListener(this.panelNode.ownerDocument, "keypress", this.onKeyPress, true);
-
- if (this.context.loaded)
- {
- this.registerMutationListeners();
-
- Persist.restoreObjects(this, state);
- }
- },
-
- hide: function()
- {
- // clear the state that is tracking the infotip so it is reset after next show()
- delete this.infoTipURL;
-
- Events.removeEventListener(this.panelNode.ownerDocument, "keypress", this.onKeyPress, true);
- },
-
- watchWindow: function(context, win)
- {
- var self = this;
- setTimeout(function() {
- self.watchWindowDelayed(context, win);
- }, 100);
- },
-
- watchWindowDelayed: function(context, win)
- {
- if (this.context.window && this.context.window != win)
- {
- // then I guess we are an embedded window
- var htmlPanel = this;
- Win.iterateWindows(this.context.window, function(subwin)
- {
- if (win == subwin)
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("html.watchWindow found subwin.location.href="+
- win.location.href);
-
- htmlPanel.mutateDocumentEmbedded(win, false);
- }
- });
- }
-
- this.registerMutationListeners(win);
- },
-
- unwatchWindow: function(context, win)
- {
- if (this.context.window && this.context.window != win)
- {
- // then I guess we are an embedded window
- var htmlPanel = this;
- Win.iterateWindows(this.context.window, function(subwin)
- {
- if (win == subwin)
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("html.unwatchWindow found subwin.location.href="+
- win.location.href);
-
- htmlPanel.mutateDocumentEmbedded(win, true);
- }
- });
- }
-
- this.unregisterMutationListeners(win);
- },
-
- mutateDocumentEmbedded: function(win, remove)
- {
- //xxxHonza: win.document.documentElement is null if this method is synchronously
- // called after watchWindow. This is why watchWindowDelayed is introduced.
- // See issue 3342
-
- // document.documentElement - Returns the Element that is a direct child of document.
- // For HTML documents, this normally the HTML element.
- var target = win.document.documentElement;
- var parent = win.frameElement;
- var nextSibling = this.findNextSibling(target || parent);
- try
- {
- this.mutateNode(target, parent, nextSibling, remove);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("html.mutateDocumentEmbedded FAILS " + exc, exc);
- }
- },
-
- supportsObject: function(object, type)
- {
- if (object instanceof window.Element || object instanceof window.Text ||
- object instanceof window.CDATASection)
- {
- return 2;
- }
- else if (object instanceof SourceLink.SourceLink && object.type == "css" &&
- !Url.reCSS.test(object.href))
- {
- return 2;
- }
- else
- {
- return 0;
- }
- },
-
- updateOption: function(name, value)
- {
- var options = new Set();
- options.add("showCommentNodes");
- options.add("entityDisplay");
- options.add("showTextNodesWithWhitespace");
- options.add("showFullTextNodes");
-
- if (options.has(name))
- {
- this.resetSearch();
- Dom.clearNode(this.panelNode);
- if (this.ioBox)
- this.ioBox.destroy();
-
- this.ioBox = new Firebug.InsideOutBox(this, this.panelNode);
- this.ioBox.select(this.selection, true, true);
- }
- },
-
- updateSelection: function(object)
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("html.updateSelection " + object, object);
-
- if (this.ioBox.sourceRow)
- this.ioBox.sourceRow.removeAttribute("exe_line");
-
- // && object.type == "css" and !Url.reCSS(object.href) by supports
- if (object instanceof SourceLink.SourceLink)
- {
- var sourceLink = object;
- var stylesheet = Css.getStyleSheetByHref(sourceLink.href, this.context);
- if (stylesheet)
- {
- var ownerNode = stylesheet.ownerNode;
-
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("html panel updateSelection stylesheet.ownerNode=" +
- stylesheet.ownerNode + " href:" + sourceLink.href);
- }
-
- if (ownerNode)
- {
- var objectbox = this.ioBox.select(ownerNode, true, true, this.noScrollIntoView);
-
- // XXXjjb seems like this could be bad for errors at the end of long files
- // first source row in style
- var sourceRow = objectbox.getElementsByClassName("sourceRow").item(0);
- for (var lineNo = 1; lineNo < sourceLink.line; lineNo++)
- {
- if (!sourceRow) break;
- sourceRow = Dom.getNextByClass(sourceRow, "sourceRow");
- }
-
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("html panel updateSelection sourceLink.line=" +
- sourceLink.line + " sourceRow=" +
- (sourceRow ? sourceRow.innerHTML : "undefined"));
- }
-
- if (sourceRow)
- {
- this.ioBox.sourceRow = sourceRow;
- this.ioBox.sourceRow.setAttribute("exe_line", "true");
-
- Dom.scrollIntoCenterView(sourceRow);
-
- // sourceRow isn't an objectBox, but the function should work anyway...
- this.ioBox.selectObjectBox(sourceRow, false);
- }
- }
- }
- }
- else if (Firebug.Inspector.inspecting)
- {
- this.ioBox.highlight(object);
- }
- else
- {
- var found = this.ioBox.select(object, true, false, this.noScrollIntoView);
- if (!found)
- {
- // Look up for an enclosing parent. NB this will mask failures in createObjectBoxes
- var parentNode = this.getParentObject(object);
-
- if (FBTrace.DBG_ERRORS && FBTrace.DBG_HTML)
- FBTrace.sysout("html.updateSelect no objectBox for object:"+
- Css.getElementCSSSelector(object) + " trying "+
- Css.getElementCSSSelector(parentNode));
-
- this.updateSelection(parentNode);
- return;
- }
-
- this.inspectorHistory.unshift(object);
- if (this.inspectorHistory.length > 5)
- this.inspectorHistory.pop();
- }
- },
-
- stopInspecting: function(object, canceled)
- {
- if (object != this.inspectorHistory)
- {
- // Manage history of selection for later access in the command line.
- this.inspectorHistory.unshift(object);
- if (this.inspectorHistory.length > 5)
- this.inspectorHistory.pop();
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("html.stopInspecting: inspectoryHistory updated",
- this.inspectorHistory);
- }
-
- this.ioBox.highlight(null);
-
- if (!canceled)
- this.ioBox.select(object, true);
- },
-
- search: function(text, reverse)
- {
- if (!text)
- return;
-
- var search;
- if (text == this.searchText && this.lastSearch)
- {
- search = this.lastSearch;
- }
- else
- {
- var doc = this.context.window.document;
- search = this.lastSearch = new HTMLLib.NodeSearch(text, doc, this.panelNode, this.ioBox);
- }
-
- var loopAround = search.find(reverse, Firebug.Search.isCaseSensitive(text));
- if (loopAround)
- {
- this.resetSearch();
- this.search(text, reverse);
- }
-
- return !search.noMatch && (loopAround ? "wraparound" : true);
- },
-
- getSearchOptionsMenuItems: function()
- {
- return [
- Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive",
- "search.tip.Case_Sensitive")
- ];
- },
-
- getDefaultSelection: function()
- {
- try
- {
- var doc = this.context.window.document;
- return doc.body ? doc.body : Dom.getPreviousElement(doc.documentElement.lastChild);
- }
- catch (exc)
- {
- return null;
- }
- },
-
- getObjectPath: function(element)
- {
- var path = [];
- for (; element; element = this.getParentObject(element))
- {
- // Ignore the document itself, it shouldn't be displayed in
- // the object path (aka breadcrumbs).
- if (element instanceof window.Document)
- continue;
-
- // Ignore elements without parent
- if (!element.parentNode)
- continue;
-
- path.push(element);
- }
- return path;
- },
-
- getPopupObject: function(target)
- {
- return Firebug.getRepObject(target);
- },
-
- getTooltipObject: function(target)
- {
- if (Dom.getAncestorByClass(target, "nodeLabelBox") ||
- Dom.getAncestorByClass(target, "nodeCloseLabelBox"))
- {
- return Firebug.getRepObject(target);
- }
- },
-
- getOptionsMenuItems: function()
- {
- return [
- Menu.optionMenu("ShowFullText", "showFullTextNodes",
- "html.option.tip.Show_Full_Text"),
- Menu.optionMenu("ShowWhitespace", "showTextNodesWithWhitespace",
- "html.option.tip.Show_Whitespace"),
- Menu.optionMenu("ShowComments", "showCommentNodes",
- "html.option.tip.Show_Comments"),
- "-",
- {
- label: "html.option.Show_Entities_As_Symbols",
- tooltiptext: "html.option.tip.Show_Entities_As_Symbols",
- type: "radio",
- name: "entityDisplay",
- id: "entityDisplaySymbols",
- command: Obj.bind(this.setEntityDisplay, this, "symbols"),
- checked: Options.get("entityDisplay") == "symbols"
- },
- {
- label: "html.option.Show_Entities_As_Names",
- tooltiptext: "html.option.tip.Show_Entities_As_Names",
- type: "radio",
- name: "entityDisplay",
- id: "entityDisplayNames",
- command: Obj.bind(this.setEntityDisplay, this, "names"),
- checked: Options.get("entityDisplay") == "names"
- },
- {
- label: "html.option.Show_Entities_As_Unicode",
- tooltiptext: "html.option.tip.Show_Entities_As_Unicode",
- type: "radio",
- name: "entityDisplay",
- id: "entityDisplayUnicode",
- command: Obj.bind(this.setEntityDisplay, this, "unicode"),
- checked: Options.get("entityDisplay") == "unicode"
- },
- "-",
- Menu.optionMenu("HighlightMutations", "highlightMutations",
- "html.option.tip.Highlight_Mutations"),
- Menu.optionMenu("ExpandMutations", "expandMutations",
- "html.option.tip.Expand_Mutations"),
- Menu.optionMenu("ScrollToMutations", "scrollToMutations",
- "html.option.tip.Scroll_To_Mutations"),
- "-",
- Menu.optionMenu("ShadeBoxModel", "shadeBoxModel",
- "inspect.option.tip.Shade_Box_Model"),
- Menu.optionMenu("ShowQuickInfoBox","showQuickInfoBox",
- "inspect.option.tip.Show_Quick_Info_Box")
- ];
- },
-
- getContextMenuItems: function(node, target)
- {
- if (!node)
- return null;
-
- var items = [];
-
- if (node.nodeType == Node.ELEMENT_NODE)
- {
- items.push(
- "-",
- {
- label: "NewAttribute",
- id: "htmlNewAttribute",
- tooltiptext: "html.tip.New_Attribute",
- command: Obj.bindFixed(this.editNewAttribute, this, node)
- }
- );
-
- var attrBox = Dom.getAncestorByClass(target, "nodeAttr");
- if (Dom.getAncestorByClass(target, "nodeAttr"))
- {
- var attrName = attrBox.childNodes[1].textContent;
-
- items.push(
- {
- label: Locale.$STRF("EditAttribute", [attrName]),
- tooltiptext: Locale.$STRF("html.tip.Edit_Attribute", [attrName]),
- nol10n: true,
- command: Obj.bindFixed(this.editAttribute, this, node, attrName)
- },
- {
- label: Locale.$STRF("DeleteAttribute", [attrName]),
- tooltiptext: Locale.$STRF("html.tip.Delete_Attribute", [attrName]),
- nol10n: true,
- command: Obj.bindFixed(this.deleteAttribute, this, node, attrName)
- }
- );
- }
-
- if (!(Css.nonEditableTags.hasOwnProperty(node.localName)))
- {
- var type;
-
- if (Xml.isElementHTML(node) || Xml.isElementXHTML(node))
- type = "HTML";
- else if (Xml.isElementMathML(node))
- type = "MathML";
- else if (Xml.isElementSVG(node))
- type = "SVG";
- else if (Xml.isElementXUL(node))
- type = "XUL";
- else
- type = "XML";
-
- items.push("-",
- {
- label: Locale.$STRF("html.Edit_Node", [type]),
- tooltiptext: Locale.$STRF("html.tip.Edit_Node", [type]),
- nol10n: true,
- command: Obj.bindFixed(this.editNode, this, node)
- },
- {
- label: "DeleteElement",
- tooltiptext: "html.Delete_Element",
-
- // xxxsz: 'Del' needs to be translated, but therefore customizeShortcuts
- // must be turned into a module
- acceltext: "Del",
- command: Obj.bindFixed(this.deleteNode, this, node),
- disabled:(node.localName in Css.innerEditableTags)
- });
- }
-
- var objectBox = Dom.getAncestorByClass(target, "nodeBox");
- var nodeChildBox = this.ioBox.getChildObjectBox(objectBox);
- if (nodeChildBox)
- {
- items.push(
- "-",
- {
- label: "html.label.Expand/Contract_All",
- tooltiptext: "html.tip.Expand/Contract_All",
- acceltext: "*",
- command: Obj.bind(this.toggleAll, this, node)
- }
- );
- }
- }
- else
- {
- var nodeLabel = Locale.$STR("html.Node");
- items.push(
- "-",
- {
- label: Locale.$STRF("html.Edit_Node", [nodeLabel]),
- tooltiptext: Locale.$STRF("html.tip.Edit_Node", [nodeLabel]),
- nol10n: true,
- command: Obj.bindFixed(this.editNode, this, node)
- },
- {
- label: "DeleteNode",
- tooltiptext: "html.Delete_Node",
- command: Obj.bindFixed(this.deleteNode, this, node)
- }
- );
- }
-
- Firebug.HTMLModule.MutationBreakpoints.getContextMenuItems(
- this.context, node, target, items);
-
- return items;
- },
-
- showInfoTip: function(infoTip, target, x, y)
- {
- if (!Css.hasClass(target, "nodeValue"))
- return;
-
- var node = Firebug.getRepObject(target);
- if (node && node.nodeType == Node.ELEMENT_NODE)
- {
- var nodeName = node.localName.toUpperCase();
- var attribute = Dom.getAncestorByClass(target, "nodeAttr");
- var attributeName = attribute.getElementsByClassName("nodeName").item(0).textContent;
-
- if ((nodeName == "IMG" || nodeName == "INPUT") && attributeName == "src")
- {
- var url = node.src;
-
- // This state cleared in hide()
- if (url == this.infoTipURL)
- return true;
-
- this.infoTipURL = url;
- return CSSInfoTip.populateImageInfoTip(infoTip, url);
- }
- }
- },
-
- getEditor: function(target, value)
- {
- if (Css.hasClass(target, "nodeName") || Css.hasClass(target, "nodeValue") ||
- Css.hasClass(target, "nodeBracket"))
- {
- if (!this.attrEditor)
- this.attrEditor = new Firebug.HTMLPanel.Editors.Attribute(this.document);
-
- return this.attrEditor;
- }
- else if (Css.hasClass(target, "nodeComment") || Css.hasClass(target, "nodeCDATA"))
- {
- if (!this.textDataEditor)
- this.textDataEditor = new Firebug.HTMLPanel.Editors.TextData(this.document);
-
- return this.textDataEditor;
- }
- else if (Css.hasClass(target, "nodeText"))
- {
- if (!this.textNodeEditor)
- this.textNodeEditor = new Firebug.HTMLPanel.Editors.TextNode(this.document);
-
- return this.textNodeEditor;
- }
- },
-
- getInspectorVars: function()
- {
- var vars = {};
- for (var i=0; i<this.inspectorHistory.length; i++)
- vars["$"+i] = this.inspectorHistory[i] || null;
-
- return vars;
- },
-
- setEntityDisplay: function(event, type)
- {
- Options.set("entityDisplay", type);
-
- var menuItem = event.target;
- menuItem.setAttribute("checked", "true");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Break on Mutate
-
- breakOnNext: function(breaking)
- {
- Firebug.HTMLModule.MutationBreakpoints.breakOnNext(this.context, breaking);
- this.updateMutationBreakpointListeners();
- },
-
- shouldBreakOnNext: function()
- {
- return !!this.context.breakOnNextMutate;
- },
-
- getBreakOnNextTooltip: function(enabled)
- {
- return (enabled ? Locale.$STR("html.Disable Break On Mutate") :
- Locale.$STR("html.Break On Mutate"));
- }
-});
-
-// ********************************************************************************************* //
-
-var AttrTag = Firebug.HTMLPanel.AttrTag =
- SPAN({"class": "nodeAttr editGroup"},
- " ", SPAN({"class": "nodeName editable"}, "$attr.name"), "="",
- SPAN({"class": "nodeValue editable"}, "$attr|getAttrValue"), """
- );
-
-var TextTag = Firebug.HTMLPanel.TextTag =
- SPAN({"class": "nodeText editable"},
- FOR("char", "$object|getNodeTextGroups",
- SPAN({"class": "$char.class $char.extra"}, "$char.str")
- )
- );
-
-// ********************************************************************************************* //
-
-Firebug.HTMLPanel.CompleteElement = domplate(FirebugReps.Element,
-{
- tag:
- DIV({"class": "nodeBox open $object|getHidden", _repObject: "$object", role : 'presentation'},
- DIV({"class": "nodeLabel", role: "presentation"},
- SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem', 'aria-expanded' : 'false'},
- "<",
- SPAN({"class": "nodeTag"}, "$object|getNodeName"),
- FOR("attr", "$object|attrIterator", AttrTag),
- SPAN({"class": "nodeBracket"}, ">")
- )
- ),
- DIV({"class": "nodeChildBox", role :"group"},
- FOR("child", "$object|childIterator",
- TAG("$child|getNodeTag", {object: "$child"})
- )
- ),
- DIV({"class": "nodeCloseLabel", role:"presentation"},
- "</",
- SPAN({"class": "nodeTag"}, "$object|getNodeName"),
- ">"
- )
- ),
-
- getNodeTag: function(node)
- {
- return getNodeTag(node, true);
- },
-
- childIterator: function(node)
- {
- if (node.contentDocument)
- return [node.contentDocument.documentElement];
-
- if (Firebug.showTextNodesWithWhitespace)
- {
- return Arr.cloneArray(node.childNodes);
- }
- else
- {
- var nodes = [];
- var walker = new HTMLLib.ElementWalker();
-
- for (var child = walker.getFirstChild(node); child; child = walker.getNextSibling(child))
- {
- if (child.nodeType != Node.TEXT_NODE || !HTMLLib.isWhitespaceText(child))
- nodes.push(child);
- }
-
- return nodes;
- }
- }
-});
-
-Firebug.HTMLPanel.SoloElement = domplate(Firebug.HTMLPanel.CompleteElement,
-{
- tag:
- DIV({"class": "soloElement", onmousedown: "$onMouseDown"},
- Firebug.HTMLPanel.CompleteElement.tag
- ),
-
- onMouseDown: function(event)
- {
- for (var child = event.target; child; child = child.parentNode)
- {
- if (child.repObject)
- {
- var panel = Firebug.getElementPanel(child);
- Firebug.chrome.select(child.repObject);
- break;
- }
- }
- }
-});
-
-Firebug.HTMLPanel.Element = domplate(FirebugReps.Element,
-{
- tag:
- DIV({"class": "nodeBox containerNodeBox $object|getHidden", _repObject: "$object",
- role: "presentation"},
- DIV({"class": "nodeLabel", role: "presentation"},
- DIV({"class": "twisty", role: "presentation"}),
- SPAN({"class": "nodeLabelBox repTarget", role: "treeitem", "aria-expanded": "false"},
- "<",
- SPAN({"class": "nodeTag"}, "$object|getNodeName"),
- FOR("attr", "$object|attrIterator", AttrTag),
- SPAN({"class": "nodeBracket editable insertBefore"}, ">")
- )
- ),
- DIV({"class": "nodeChildBox", role: "group"}), /* nodeChildBox is special signal in insideOutBox */
- DIV({"class": "nodeCloseLabel", role: "presentation"},
- SPAN({"class": "nodeCloseLabelBox repTarget"},
- "</",
- SPAN({"class": "nodeTag"}, "$object|getNodeName"),
- ">"
- )
- )
- )
-});
-
-Firebug.HTMLPanel.HTMLDocument = domplate(FirebugReps.Element,
-{
- tag:
- DIV({"class": "nodeBox documentNodeBox containerNodeBox",
- _repObject: "$object", role: "presentation"},
- DIV({"class": "nodeChildBox", role: "group"})
- )
-});
-
-Firebug.HTMLPanel.HTMLDocType = domplate(FirebugReps.Element,
-{
- tag:
- DIV({"class": "nodeBox docTypeNodeBox containerNodeBox",
- _repObject: "$object", role: "presentation"},
- DIV({"class": "docType"},
- "$object|getDocType"
- )
- ),
-
- getDocType: function(doctype)
- {
- return '<!DOCTYPE ' + doctype.name + (doctype.publicId ? ' PUBLIC "' + doctype.publicId +
- '"': '') + (doctype.systemId ? ' "' + doctype.systemId + '"' : '') + '>';
- }
-});
-
-Firebug.HTMLPanel.HTMLHtmlElement = domplate(FirebugReps.Element,
-{
- tag:
- DIV({"class": "nodeBox htmlNodeBox containerNodeBox $object|getHidden",
- _repObject: "$object", role: "presentation"},
- DIV({"class": "nodeLabel", role: "presentation"},
- DIV({"class": "twisty", role: "presentation"}),
- SPAN({"class": "nodeLabelBox repTarget", role: "treeitem",
- "aria-expanded": "false"},
- "<",
- SPAN({"class": "nodeTag"}, "$object|getNodeName"),
- FOR("attr", "$object|attrIterator", AttrTag),
- SPAN({"class": "nodeBracket editable insertBefore"}, ">")
- )
- ),
- DIV({"class": "nodeChildBox", role: "group"}), /* nodeChildBox is special signal in insideOutBox */
- DIV({"class": "nodeCloseLabel", role: "presentation"},
- SPAN({"class": "nodeCloseLabelBox repTarget"},
- "</",
- SPAN({"class": "nodeTag"}, "$object|getNodeName"),
- ">"
- )
- )
- )
-});
-
-Firebug.HTMLPanel.TextElement = domplate(FirebugReps.Element,
-{
- tag:
- DIV({"class": "nodeBox textNodeBox $object|getHidden", _repObject: "$object", role : 'presentation'},
- DIV({"class": "nodeLabel", role: "presentation"},
- SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
- "<",
- SPAN({"class": "nodeTag"}, "$object|getNodeName"),
- FOR("attr", "$object|attrIterator", AttrTag),
- SPAN({"class": "nodeBracket editable insertBefore"}, ">"),
- TextTag,
- "</",
- SPAN({"class": "nodeTag"}, "$object|getNodeName"),
- ">"
- )
- )
- )
-});
-
-Firebug.HTMLPanel.EmptyElement = domplate(FirebugReps.Element,
-{
- tag:
- DIV({"class": "nodeBox emptyNodeBox $object|getHidden", _repObject: "$object", role : 'presentation'},
- DIV({"class": "nodeLabel", role: "presentation"},
- SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
- "<",
- SPAN({"class": "nodeTag"}, "$object|getNodeName"),
- FOR("attr", "$object|attrIterator", AttrTag),
- SPAN({"class": "nodeBracket editable insertBefore"}, ">")
- )
- )
- )
-});
-
-Firebug.HTMLPanel.XEmptyElement = domplate(FirebugReps.Element,
-{
- tag:
- DIV({"class": "nodeBox emptyNodeBox $object|getHidden", _repObject: "$object", role : 'presentation'},
- DIV({"class": "nodeLabel", role: "presentation"},
- SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
- "<",
- SPAN({"class": "nodeTag"}, "$object|getNodeName"),
- FOR("attr", "$object|attrIterator", AttrTag),
- SPAN({"class": "nodeBracket editable insertBefore"}, "/>")
- )
- )
- )
-});
-
-Firebug.HTMLPanel.AttrNode = domplate(FirebugReps.Element,
-{
- tag: AttrTag
-});
-
-Firebug.HTMLPanel.TextNode = domplate(FirebugReps.Element,
-{
- tag:
- DIV({"class": "nodeBox", _repObject: "$object", role : 'presentation'},
- TextTag
- )
-});
-
-Firebug.HTMLPanel.CDATANode = domplate(FirebugReps.Element,
-{
- tag:
- DIV({"class": "nodeBox", _repObject: "$object", role : 'presentation'},
- "<![CDATA[",
- SPAN({"class": "nodeText nodeCDATA editable"}, "$object.nodeValue"),
- "]]>"
- )
-});
-
-Firebug.HTMLPanel.CommentNode = domplate(FirebugReps.Element,
-{
- tag:
- DIV({"class": "nodeBox nodeComment", _repObject: "$object", role : 'presentation'},
- "<!--",
- SPAN({"class": "nodeComment editable"}, "$object.nodeValue"),
- "-->"
- )
-});
-
-// ********************************************************************************************* //
-// TextDataEditor
-
-/**
- * TextDataEditor deals with text of comments and cdata nodes
- */
-function TextDataEditor(doc)
-{
- this.initializeInline(doc);
-}
-
-TextDataEditor.prototype = domplate(Firebug.InlineEditor.prototype,
-{
- saveEdit: function(target, value, previousValue)
- {
- var node = Firebug.getRepObject(target);
- if (!node)
- return;
-
- target.data = value;
- node.data = value;
- }
-});
-
-// ********************************************************************************************* //
-// TextNodeEditor
-
-/**
- * TextNodeEditor deals with text nodes that do and do not have sibling elements. If
- * there are no sibling elements, the parent is known as a TextElement. In other cases
- * we keep track of their position via a range (this is in part because as people type
- * html, the range will keep track of the text nodes and elements that the user
- * is creating as they type, and this range could be in the middle of the parent
- * elements children).
- */
-function TextNodeEditor(doc)
-{
- this.initializeInline(doc);
-}
-
-TextNodeEditor.prototype = domplate(Firebug.InlineEditor.prototype,
-{
- getInitialValue: function(target, value)
- {
- // The text displayed within the HTML panel can be shortened if the 'Show Full Text'
- // option is false, so get the original textContent from the associated page element
- // (issue 2183).
- var repObject = Firebug.getRepObject(target);
- if (repObject)
- return repObject.textContent;
-
- return value;
- },
-
- beginEditing: function(target, value)
- {
- var node = Firebug.getRepObject(target);
- if (!node || node instanceof window.Element)
- return;
-
- var document = node.ownerDocument;
- this.range = document.createRange();
- this.range.setStartBefore(node);
- this.range.setEndAfter(node);
- },
-
- endEditing: function(target, value, cancel)
- {
- if (this.range)
- {
- this.range.detach();
- delete this.range;
- }
-
- // Remove empty groups by default
- return true;
- },
-
- saveEdit: function(target, value, previousValue)
- {
- var node = Firebug.getRepObject(target);
- if (!node)
- return;
-
- value = Str.unescapeForTextNode(value || "");
- target.textContent = value;
-
- if (node instanceof window.Element)
- {
- if (Xml.isElementMathML(node) || Xml.isElementSVG(node))
- node.textContent = value;
- else
- node.innerHTML = value;
- }
- else
- {
- try
- {
- var documentFragment = this.range.createContextualFragment(value);
- var cnl = documentFragment.childNodes.length;
- this.range.deleteContents();
- this.range.insertNode(documentFragment);
- var r = this.range, sc = r.startContainer, so = r.startOffset;
- this.range.setEnd(sc,so+cnl);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("TextNodeEditor.saveEdit; EXCEPTION " + e, e);
- }
- }
- }
-});
-
-// ********************************************************************************************* //
-// AttributeEditor
-
-function AttributeEditor(doc)
-{
- this.initializeInline(doc);
-}
-
-AttributeEditor.prototype = domplate(Firebug.InlineEditor.prototype,
-{
- saveEdit: function(target, value, previousValue)
- {
- var element = Firebug.getRepObject(target);
- if (!element)
- return;
-
- // XXXstr unescape value
- target.textContent = value;
-
- if (Css.hasClass(target, "nodeName"))
- {
- if (value != previousValue)
- element.removeAttribute(previousValue);
-
- if (value)
- {
- var attrValue = Dom.getNextByClass(target, "nodeValue").textContent;
- element.setAttribute(value, attrValue);
- }
- else
- {
- element.removeAttribute(value);
- }
- }
- else if (Css.hasClass(target, "nodeValue"))
- {
- var attrName = Dom.getPreviousByClass(target, "nodeName").textContent;
- element.setAttribute(attrName, value);
- }
-
- var panel = Firebug.getElementPanel(target);
- Events.dispatch(Firebug.uiListeners, "onObjectChanged", [element, panel]);
-
- //this.panel.markChange();
- },
-
- advanceToNext: function(target, charCode)
- {
- if (charCode == 61 /* '=' */ && Css.hasClass(target, "nodeName"))
- {
- return true;
- }
- else if ((charCode == 34 /* '"' */ || charCode == 39 /* ''' */) &&
- Css.hasClass(target, "nodeValue"))
- {
- var nonRestrictiveAttributes =
- [
- "onabort",
- "onblur",
- "onchange",
- "onclick",
- "ondblclick",
- "onerror",
- "onfocus",
- "onkeydown",
- "onkeypress",
- "onkeyup",
- "onload",
- "onmousedown",
- "onmousemove",
- "onmouseout",
- "onmouseover",
- "onmouseup",
- "onreset",
- "onselect",
- "onsubmit",
- "onunload",
- "title",
- "alt",
- "style"
- ];
-
- var attrName = Dom.getPreviousByClass(target, "nodeName").textContent;
-
- // This should cover most of the cases where quotes are allowed inside the value
- // See issue 4542
- for (var i = 0; i < nonRestrictiveAttributes.length; i++)
- {
- if (attrName == nonRestrictiveAttributes[i])
- return false;
- }
- return true;
- }
- },
-
- insertNewRow: function(target, insertWhere)
- {
- var emptyAttr = {name: "", value: ""};
- var sibling = insertWhere == "before" ? target.previousSibling : target;
- return AttrTag.insertAfter({attr: emptyAttr}, sibling);
- },
-
- getInitialValue: function(target, value)
- {
- if (value == "")
- return value;
-
- var element = Firebug.getRepObject(target);
- if (element && element instanceof window.Element)
- {
- // If object that was clicked to edit was
- // attribute value, not attribute name.
- if (Css.hasClass(target, "nodeValue"))
- {
- var attributeName = Dom.getPreviousByClass(target, "nodeName").textContent;
- return element.getAttribute(attributeName);
- }
- }
- return value;
- }
-});
-
-// ********************************************************************************************* //
-// HTMLEditor
-
-function HTMLEditor(doc)
-{
- this.box = this.tag.replace({}, doc, this);
- this.input = this.box.firstChild;
- this.multiLine = true;
- this.tabNavigation = false;
- this.arrowCompletion = false;
-}
-
-HTMLEditor.prototype = domplate(Firebug.BaseEditor,
-{
- tag:
- DIV(
- TEXTAREA({"class": "htmlEditor fullPanelEditor", oninput: "$onInput"})
- ),
-
- getValue: function()
- {
- return this.input.value;
- },
-
- setValue: function(value)
- {
- return this.input.value = value;
- },
-
- show: function(target, panel, value, textSize)
- {
- this.target = target;
- this.panel = panel;
- var el = target.repObject;
- if (this.innerEditMode)
- {
- this.editingParent = el;
- }
- else
- {
- this.editingRange = el.ownerDocument.createRange();
- this.editingRange.selectNode(el);
- this.originalLocalName = el.localName;
- }
-
- this.panel.panelNode.appendChild(this.box);
-
- this.input.value = value;
- this.input.focus();
-
- var command = Firebug.chrome.$("cmd_firebug_toggleHTMLEditing");
- command.setAttribute("checked", true);
- },
-
- hide: function()
- {
- var command = Firebug.chrome.$("cmd_firebug_toggleHTMLEditing");
- command.setAttribute("checked", false);
-
- this.panel.panelNode.removeChild(this.box);
-
- delete this.editingParent;
- delete this.editingRange;
- delete this.originalLocalName;
- delete this.target;
- delete this.panel;
- },
-
- getNewSelection: function(fragment)
- {
- // Get a new element to select in the HTML panel. An element with the
- // same localName is preferred, or just any element. If there is none,
- // we choose the parent instead.
- var found = null;
- var nodes = fragment.childNodes;
- for (var i = 0; i < nodes.length; ++i)
- {
- var n = nodes[i];
- if (n.nodeType === Node.ELEMENT_NODE)
- {
- if (n.localName === this.originalLocalName)
- return n;
- if (!found)
- found = n;
- }
- }
- if (found)
- return found;
- return this.editingRange.startContainer;
- },
-
- saveEdit: function(target, value, previousValue)
- {
- if (this.innerEditMode)
- {
- try
- {
- // xxxHonza: Catch "can't access dead object" exception.
- this.editingParent.innerHTML = value;
- }
- catch (e)
- {
- FBTrace.sysout("htmlPanel.saveEdit; EXCEPTION " + e, e);
- }
- }
- else
- {
- try
- {
- var range = this.editingRange;
- var fragment = range.createContextualFragment(value);
- var sel = this.getNewSelection(fragment);
-
- var cnl = fragment.childNodes.length;
- range.deleteContents();
- range.insertNode(fragment);
- var sc = range.startContainer, so = range.startOffset;
- range.setEnd(sc, so + cnl);
-
- this.panel.select(sel, false, true);
-
- // Clear and update the status path, to make sure it doesn't
- // show elements no longer in the DOM.
- Firebug.chrome.clearStatusPath();
- Firebug.chrome.syncStatusPath();
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("HTMLEditor.saveEdit; EXCEPTION " + e, e);
- }
- }
- },
-
- endEditing: function()
- {
- //this.panel.markChange();
- this.panel.setEditEnableState(true);
- return true;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onInput: function()
- {
- Firebug.Editor.update();
- }
-});
-
-// ********************************************************************************************* //
-// Editors
-
-Firebug.HTMLPanel.Editors = {
- html : HTMLEditor,
- Attribute : AttributeEditor,
- TextNode: TextNodeEditor,
- TextData: TextDataEditor
-};
-
-// ********************************************************************************************* //
-// Local Helpers
-
-function getEmptyElementTag(node)
-{
- var isXhtml= Xml.isElementXHTML(node);
- if (isXhtml)
- return Firebug.HTMLPanel.XEmptyElement.tag;
- else
- return Firebug.HTMLPanel.EmptyElement.tag;
-}
-
-function getNodeTag(node, expandAll)
-{
- if (node instanceof window.Element)
- {
- if (node instanceof window.HTMLHtmlElement && node.ownerDocument && node.ownerDocument.doctype)
- return Firebug.HTMLPanel.HTMLHtmlElement.tag;
- else if (node instanceof window.HTMLAppletElement)
- return getEmptyElementTag(node);
- else if (Firebug.shouldIgnore(node))
- return null;
- else if (HTMLLib.isContainerElement(node))
- return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
- else if (HTMLLib.isEmptyElement(node))
- return getEmptyElementTag(node);
- else if (Firebug.showCommentNodes && HTMLLib.hasCommentChildren(node))
- return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
- else if (HTMLLib.hasNoElementChildren(node))
- return Firebug.HTMLPanel.TextElement.tag;
- else
- return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
- }
- else if (node instanceof window.Text)
- return Firebug.HTMLPanel.TextNode.tag;
- else if (node instanceof window.CDATASection)
- return Firebug.HTMLPanel.CDATANode.tag;
- else if (node instanceof window.Comment && (Firebug.showCommentNodes || expandAll))
- return Firebug.HTMLPanel.CommentNode.tag;
- else if (node instanceof Firebug.HTMLModule.SourceText)
- return FirebugReps.SourceText.tag;
- else if (node instanceof window.Document)
- return Firebug.HTMLPanel.HTMLDocument.tag;
- else if (node instanceof window.DocumentType)
- return Firebug.HTMLPanel.HTMLDocType.tag;
- else
- return FirebugReps.Nada.tag;
-}
-
-function getNodeBoxTag(nodeBox)
-{
- var re = /([^\s]+)NodeBox/;
- var m = re.exec(nodeBox.className);
- if (!m)
- return null;
-
- var nodeBoxType = m[1];
- if (nodeBoxType == "container")
- return Firebug.HTMLPanel.Element.tag;
- else if (nodeBoxType == "text")
- return Firebug.HTMLPanel.TextElement.tag;
- else if (nodeBoxType == "empty")
- return Firebug.HTMLPanel.EmptyElement.tag;
-}
-
-// ********************************************************************************************* //
-
-Firebug.HTMLModule.SourceText = function(lines, owner)
-{
- this.lines = lines;
- this.owner = owner;
-};
-
-Firebug.HTMLModule.SourceText.getLineAsHTML = function(lineNo)
-{
- return Str.escapeForSourceLine(this.lines[lineNo-1]);
-};
-
-// ********************************************************************************************* //
-// Mutation Breakpoints
-
-/**
- * @class Represents {@link Firebug.Debugger} listener. This listener is reponsible for
- * providing a list of mutation-breakpoints into the Breakpoints side-panel.
- */
-Firebug.HTMLModule.DebuggerListener =
-{
- getBreakpoints: function(context, groups)
- {
- if (!context.mutationBreakpoints.isEmpty())
- groups.push(context.mutationBreakpoints);
- }
-};
-
-Firebug.HTMLModule.MutationBreakpoints =
-{
- breakOnNext: function(context, breaking)
- {
- context.breakOnNextMutate = breaking;
- },
-
- breakOnNextMutate: function(event, context, type)
- {
- if (!context.breakOnNextMutate)
- return false;
-
- // Ignore changes in ignored branches
- if (isAncestorIgnored(event.target))
- return false;
-
- context.breakOnNextMutate = false;
-
- this.breakWithCause(event, context, type);
- },
-
- breakWithCause: function(event, context, type)
- {
- var changeLabel = Firebug.HTMLModule.BreakpointRep.getChangeLabel({type: type});
- context.breakingCause = {
- title: Locale.$STR("html.Break On Mutate"),
- message: changeLabel,
- type: event.type,
- target: event.target,
- relatedNode: event.relatedNode, // http://www.w3.org/TR/DOM-Level-2-Events/events.html
- prevValue: event.prevValue,
- newValue: event.newValue,
- attrName: event.attrName,
- attrChange: event.attrChange,
- };
-
- Firebug.Breakpoint.breakNow(context.getPanel("html", true));
- return true;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Mutation event handlers.
-
- onMutateAttr: function(event, context)
- {
- if (this.breakOnNextMutate(event, context, BP_BREAKONATTRCHANGE))
- return;
-
- var breakpoints = context.mutationBreakpoints;
- var self = this;
- breakpoints.enumerateBreakpoints(function(bp) {
- if (bp.checked && bp.node == event.target && bp.type == BP_BREAKONATTRCHANGE) {
- self.breakWithCause(event, context, BP_BREAKONATTRCHANGE);
- return true;
- }
- });
- },
-
- onMutateText: function(event, context)
- {
- if (this.breakOnNextMutate(event, context, BP_BREAKONTEXT))
- return;
- },
-
- onMutateNode: function(event, context)
- {
- var node = event.target;
- var removal = event.type == "DOMNodeRemoved";
-
- if (this.breakOnNextMutate(event, context, removal ?
- BP_BREAKONREMOVE : BP_BREAKONCHILDCHANGE))
- {
- return;
- }
-
- var breakpoints = context.mutationBreakpoints;
- var breaked = false;
-
- if (removal)
- {
- var self = this;
- breaked = breakpoints.enumerateBreakpoints(function(bp) {
- if (bp.checked && bp.node == node && bp.type == BP_BREAKONREMOVE) {
- self.breakWithCause(event, context, BP_BREAKONREMOVE);
- return true;
- }
- });
- }
-
- if (!breaked)
- {
- // Collect all parents of the mutated node.
- var parents = [];
- for (var parent = node.parentNode; parent; parent = parent.parentNode)
- parents.push(parent);
-
- // Iterate over all parents and see if some of them has a breakpoint.
- var self = this;
- breakpoints.enumerateBreakpoints(function(bp)
- {
- for (var i=0; i<parents.length; i++)
- {
- if (bp.checked && bp.node == parents[i] && bp.type == BP_BREAKONCHILDCHANGE)
- {
- self.breakWithCause(event, context, BP_BREAKONCHILDCHANGE);
- return true;
- }
- }
- });
- }
-
- if (removal)
- {
- // Remove all breakpoints associated with removed node.
- var invalidate = false;
- breakpoints.enumerateBreakpoints(function(bp)
- {
- if (bp.node == node)
- {
- breakpoints.removeBreakpoint(bp);
- invalidate = true;
- }
- });
-
- if (invalidate)
- context.invalidatePanels("breakpoints");
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Context menu items
-
- getContextMenuItems: function(context, node, target, items)
- {
- if (!(node && node.nodeType == Node.ELEMENT_NODE))
- return;
-
- var breakpoints = context.mutationBreakpoints;
-
- var attrBox = Dom.getAncestorByClass(target, "nodeAttr");
- if (Dom.getAncestorByClass(target, "nodeAttr"))
- {
- }
-
- if (!(Css.nonEditableTags.hasOwnProperty(node.localName)))
- {
- items.push(
- "-",
- {
- label: "html.label.Break_On_Attribute_Change",
- tooltiptext: "html.tip.Break_On_Attribute_Change",
- type: "checkbox",
- checked: breakpoints.findBreakpoint(node, BP_BREAKONATTRCHANGE),
- command: Obj.bindFixed(this.onModifyBreakpoint, this, context, node,
- BP_BREAKONATTRCHANGE)
- },
- {
- label: "html.label.Break_On_Child_Addition_or_Removal",
- tooltiptext: "html.tip.Break_On_Child_Addition_or_Removal",
- type: "checkbox",
- checked: breakpoints.findBreakpoint(node, BP_BREAKONCHILDCHANGE),
- command: Obj.bindFixed(this.onModifyBreakpoint, this, context, node,
- BP_BREAKONCHILDCHANGE)
- },
- {
- label: "html.label.Break_On_Element_Removal",
- tooltiptext: "html.tip.Break_On_Element_Removal",
- type: "checkbox",
- checked: breakpoints.findBreakpoint(node, BP_BREAKONREMOVE),
- command: Obj.bindFixed(this.onModifyBreakpoint, this, context, node,
- BP_BREAKONREMOVE)
- }
- );
- }
- },
-
- onModifyBreakpoint: function(context, node, type)
- {
- var xpath = Xpath.getElementXPath(node);
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("html.onModifyBreakpoint " + xpath );
-
- var breakpoints = context.mutationBreakpoints;
- var bp = breakpoints.findBreakpoint(node, type);
-
- // Remove an existing or create new breakpoint.
- if (bp)
- breakpoints.removeBreakpoint(bp);
- else
- breakpoints.addBreakpoint(node, type);
-
- Events.dispatch(Firebug.HTMLModule.fbListeners, "onModifyBreakpoint",
- [context, xpath, type]);
- }
-};
-
-Firebug.HTMLModule.Breakpoint = function(node, type)
-{
- this.node = node;
- this.xpath = Xpath.getElementXPath(node);
- this.checked = true;
- this.type = type;
-};
-
-Firebug.HTMLModule.BreakpointRep = domplate(Firebug.Rep,
-{
- inspectable: false,
-
- tag:
- DIV({"class": "breakpointRow focusRow", $disabled: "$bp|isDisabled", _repObject: "$bp",
- role: "option", "aria-checked": "$bp.checked"},
- DIV({"class": "breakpointBlockHead"},
- INPUT({"class": "breakpointCheckbox", type: "checkbox",
- _checked: "$bp.checked", tabindex : "-1", onclick: "$onEnable"}),
- TAG("$bp.node|getNodeTag", {object: "$bp.node"}),
- DIV({"class": "breakpointMutationType"}, "$bp|getChangeLabel"),
- SPAN({"class": "closeButton", onclick: "$onRemove"})
- ),
- DIV({"class": "breakpointCode"},
- TAG("$bp.node|getSourceLine", {object: "$bp.node"})
- )
- ),
-
- getNodeTag: function(node)
- {
- var rep = Firebug.getRep(node, Firebug.currentContext);
- return rep.shortTag ? rep.shortTag : rep.tag;
- },
-
- getSourceLine: function(node)
- {
- return getNodeTag(node, false);
- },
-
- getChangeLabel: function(bp)
- {
- switch (bp.type)
- {
- case BP_BREAKONATTRCHANGE:
- return Locale.$STR("html.label.Break On Attribute Change");
- case BP_BREAKONCHILDCHANGE:
- return Locale.$STR("html.label.Break On Child Addition or Removal");
- case BP_BREAKONREMOVE:
- return Locale.$STR("html.label.Break On Element Removal");
- case BP_BREAKONTEXT:
- return Locale.$STR("html.label.Break On Text Change");
- }
-
- return "";
- },
-
- isDisabled: function(bp)
- {
- return !bp.checked;
- },
-
- onRemove: function(event)
- {
- Events.cancelEvent(event);
-
- var bpPanel = Firebug.getElementPanel(event.target);
- var context = bpPanel.context;
-
- if (Css.hasClass(event.target, "closeButton"))
- {
- // Remove from list of breakpoints.
- var row = Dom.getAncestorByClass(event.target, "breakpointRow");
- context.mutationBreakpoints.removeBreakpoint(row.repObject);
-
- bpPanel.refresh();
- }
- },
-
- onEnable: function(event)
- {
- var checkBox = event.target;
- var bpRow = Dom.getAncestorByClass(checkBox, "breakpointRow");
-
- if (checkBox.checked)
- {
- Css.removeClass(bpRow, "disabled");
- bpRow.setAttribute("aria-checked", "true");
- }
- else
- {
- Css.setClass(bpRow, "disabled");
- bpRow.setAttribute("aria-checked", "false");
- }
-
- var bp = bpRow.repObject;
- bp.checked = checkBox.checked;
-
- var bpPanel = Firebug.getElementPanel(event.target);
- var context = bpPanel.context;
-
- context.mutationBreakpoints.updateListeners();
- },
-
- supportsObject: function(object, type)
- {
- return object instanceof Firebug.HTMLModule.Breakpoint;
- }
-});
-
-// ********************************************************************************************* //
-
-function MutationBreakpointGroup(context)
-{
- this.breakpoints = [];
- this.context = context;
-}
-
-MutationBreakpointGroup.prototype = Obj.extend(new Firebug.Breakpoint.BreakpointGroup(),
-{
- name: "mutationBreakpoints",
- title: Locale.$STR("html.label.HTML Breakpoints"),
-
- addBreakpoint: function(node, type)
- {
- this.breakpoints.push(new Firebug.HTMLModule.Breakpoint(node, type));
- this.updateListeners();
- },
-
- matchBreakpoint: function(bp, args)
- {
- var node = args[0];
- var type = args[1];
- return (bp.node == node) && (!bp.type || bp.type == type);
- },
-
- removeBreakpoint: function(bp)
- {
- Arr.remove(this.breakpoints, bp);
- this.updateListeners();
- },
-
- hasEnabledBreakpoints: function()
- {
- return this.breakpoints.some(function(bp)
- {
- return bp.checked;
- });
- },
-
- updateListeners: function()
- {
- var htmlPanel = this.context.getPanel("html");
- htmlPanel.updateMutationBreakpointListeners();
- },
-
- // Persistence
- load: function(context)
- {
- var panelState = Persist.getPersistedState(context, "html");
- if (panelState.breakpoints)
- this.breakpoints = panelState.breakpoints;
-
- this.enumerateBreakpoints(function(bp)
- {
- var elts = Xpath.getElementsByXPath(context.window.document, bp.xpath);
- bp.node = elts && elts.length ? elts[0] : null;
- });
-
- this.updateListeners();
- },
-
- store: function(context)
- {
- this.enumerateBreakpoints(function(bp)
- {
- bp.node = null;
- });
-
- var panelState = Persist.getPersistedState(context, "html");
- panelState.breakpoints = this.breakpoints;
- },
-});
-
-function isAncestorIgnored(node)
-{
- for (var parent = node; parent; parent = parent.parentNode)
- {
- if (Firebug.shouldIgnore(parent))
- return true;
- }
-
- return false;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(Firebug.HTMLPanel);
-Firebug.registerModule(Firebug.HTMLModule);
-Firebug.registerRep(Firebug.HTMLModule.BreakpointRep);
-
-return Firebug.HTMLModule;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/chrome/reps",
+ "firebug/lib/locale",
+ "firebug/html/htmlLib",
+ "firebug/lib/events",
+ "firebug/js/sourceLink",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/chrome/window",
+ "firebug/lib/options",
+ "firebug/lib/xpath",
+ "firebug/lib/string",
+ "firebug/lib/xml",
+ "firebug/lib/array",
+ "firebug/lib/persist",
+ "firebug/chrome/menu",
+ "firebug/lib/url",
+ "firebug/css/cssModule",
+ "firebug/css/cssReps",
+ "firebug/js/breakpoint",
+ "firebug/editor/editor",
+ "firebug/chrome/searchBox",
+ "firebug/html/insideOutBox",
+ "firebug/html/inspector",
+ "firebug/html/layout"
+],
+function(Obj, Firebug, Domplate, FirebugReps, Locale, HTMLLib, Events,
+ SourceLink, Css, Dom, Win, Options, Xpath, Str, Xml, Arr, Persist, Menu,
+ Url, CSSModule, CSSInfoTip) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+const BP_BREAKONATTRCHANGE = 1;
+const BP_BREAKONCHILDCHANGE = 2;
+const BP_BREAKONREMOVE = 3;
+const BP_BREAKONTEXT = 4;
+
+var KeyEvent = window.KeyEvent;
+
+// ********************************************************************************************* //
+
+Firebug.HTMLModule = Obj.extend(Firebug.Module,
+{
+ dispatchName: "htmlModule",
+
+ initialize: function(prefDomain, prefNames)
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+ Firebug.connection.addListener(this.DebuggerListener);
+ },
+
+ shutdown: function()
+ {
+ Firebug.Module.shutdown.apply(this, arguments);
+ Firebug.connection.removeListener(this.DebuggerListener);
+ },
+
+ initContext: function(context, persistedState)
+ {
+ Firebug.Module.initContext.apply(this, arguments);
+ context.mutationBreakpoints = new MutationBreakpointGroup(context);
+ },
+
+ loadedContext: function(context, persistedState)
+ {
+ context.mutationBreakpoints.load(context);
+ },
+
+ destroyContext: function(context, persistedState)
+ {
+ Firebug.Module.destroyContext.apply(this, arguments);
+
+ context.mutationBreakpoints.store(context);
+ },
+
+ deleteNode: function(node, context)
+ {
+ Events.dispatch(this.fbListeners, "onBeginFirebugChange", [node, context]);
+ node.parentNode.removeChild(node);
+ Events.dispatch(this.fbListeners, "onEndFirebugChange", [node, context]);
+ },
+
+ deleteAttribute: function(node, attr, context)
+ {
+ Events.dispatch(this.fbListeners, "onBeginFirebugChange", [node, context]);
+ node.removeAttribute(attr);
+ Events.dispatch(this.fbListeners, "onEndFirebugChange", [node, context]);
+ }
+});
+
+// ********************************************************************************************* //
+
+Firebug.HTMLPanel = function() {};
+
+var WalkingPanel = Obj.extend(Firebug.Panel, HTMLLib.ElementWalkerFunctions);
+
+Firebug.HTMLPanel.prototype = Obj.extend(WalkingPanel,
+{
+ inspectable: true,
+
+ toggleEditing: function()
+ {
+ if (this.editing)
+ this.stopEditing();
+ else
+ this.editNode(this.selection);
+ },
+
+ stopEditing: function()
+ {
+ Firebug.Editor.stopEditing();
+ },
+
+ isEditing: function()
+ {
+ var editButton = Firebug.chrome.$("fbToggleHTMLEditing");
+ return (this.editing && editButton.getAttribute("checked") === "true");
+ },
+
+ // Update the Edit button to reflect editability of the selection
+ setEditEnableState: function(ignoreEditing)
+ {
+ var editButton = Firebug.chrome.$("fbToggleHTMLEditing");
+ editButton.disabled = (this.selection && (!this.isEditing() || ignoreEditing) &&
+ Css.nonEditableTags.hasOwnProperty(this.selection.localName));
+ },
+
+ resetSearch: function()
+ {
+ delete this.lastSearch;
+ },
+
+ select: function(object, forceUpdate, noEditChange)
+ {
+ if (!object)
+ object = this.getDefaultSelection();
+
+ if (FBTrace.DBG_PANELS)
+ {
+ FBTrace.sysout("firebug.select " + this.name + " forceUpdate: " + forceUpdate + " " +
+ object + ((object == this.selection) ? "==" : "!=") + this.selection);
+ }
+
+ if (forceUpdate || object != this.selection)
+ {
+ this.selection = object;
+ this.updateSelection(object);
+
+ this.setEditEnableState();
+
+ // Distribute selection change further to listeners.
+ Events.dispatch(Firebug.uiListeners, "onObjectSelected", [object, this]);
+
+ // If the 'free text' edit mode is active change the current markup
+ // displayed in the editor (textarea) so that it corresponds to the current
+ // selection. This typically happens when the user clicks on object-status-path
+ // buttons in the toolbar.
+ // For the case when the selection is changed from within the editor, don't
+ // change the edited element.
+ if (this.isEditing() && !noEditChange)
+ this.editNode(object);
+ }
+ },
+
+ selectNext: function()
+ {
+ var objectBox = this.ioBox.createObjectBox(this.selection);
+ var next = this.ioBox.getNextObjectBox(objectBox);
+ if (next)
+ {
+ this.select(next.repObject);
+
+ if (Firebug.Inspector.inspecting)
+ Firebug.Inspector.inspectNode(next.repObject);
+ }
+ },
+
+ selectPrevious: function()
+ {
+ var objectBox = this.ioBox.createObjectBox(this.selection);
+ var previous = this.ioBox.getPreviousObjectBox(objectBox);
+ if (previous)
+ {
+ this.select(previous.repObject);
+
+ if (Firebug.Inspector.inspecting)
+ Firebug.Inspector.inspectNode(previous.repObject);
+ }
+ },
+
+ selectNodeBy: function(dir)
+ {
+ if (dir == "up")
+ {
+ this.selectPrevious();
+ }
+ else if (dir == "down")
+ {
+ this.selectNext();
+ }
+ else if (dir == "left")
+ {
+ var box = this.ioBox.createObjectBox(this.selection);
+ if (Css.hasClass(box, "open"))
+ {
+ this.ioBox.contractObjectBox(box);
+ }
+ else
+ {
+ var parentBox = this.ioBox.getParentObjectBox(box);
+ if (parentBox && parentBox.repObject instanceof window.Element)
+ this.select(parentBox.repObject);
+ }
+ }
+ else if (dir == "right")
+ {
+ var box = this.ioBox.createObjectBox(this.selection);
+ if (!Css.hasClass(box, "open"))
+ this.ioBox.expandObject(this.selection);
+ else
+ this.selectNext();
+ }
+
+ Firebug.Inspector.highlightObject(this.selection, this.context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ editNewAttribute: function(elt)
+ {
+ var objectNodeBox = this.ioBox.findObjectBox(elt);
+ if (objectNodeBox)
+ {
+ var labelBox = objectNodeBox.querySelector("*> .nodeLabel > .nodeLabelBox");
+ var bracketBox = labelBox.querySelector("*> .nodeBracket");
+ Firebug.Editor.insertRow(bracketBox, "before");
+ }
+ },
+
+ editAttribute: function(elt, attrName)
+ {
+ var objectNodeBox = this.ioBox.findObjectBox(elt);
+ if (objectNodeBox)
+ {
+ var attrBox = HTMLLib.findNodeAttrBox(objectNodeBox, attrName);
+ if (attrBox)
+ {
+ var attrValueBox = attrBox.childNodes[3];
+ var value = elt.getAttribute(attrName);
+ Firebug.Editor.startEditing(attrValueBox, value);
+ }
+ }
+ },
+
+ deleteAttribute: function(elt, attrName)
+ {
+ Firebug.HTMLModule.deleteAttribute(elt, attrName, this.context);
+ },
+
+ localEditors:{}, // instantiated editor cache
+ editNode: function(node)
+ {
+ var objectNodeBox = this.ioBox.findObjectBox(node);
+ if (objectNodeBox)
+ {
+ var type = Xml.getElementType(node);
+ var editor = this.localEditors[type];
+ if (!editor)
+ {
+ // look for special purpose editor (inserted by an extension),
+ // otherwise use our html editor
+ var specializedEditor = Firebug.HTMLPanel.Editors[type] ||
+ Firebug.HTMLPanel.Editors["html"];
+ editor = this.localEditors[type] = new specializedEditor(this.document);
+ }
+
+ this.startEditingNode(node, objectNodeBox, editor, type);
+ }
+ },
+
+ startEditingNode: function(node, box, editor, type)
+ {
+ switch (type)
+ {
+ case "html":
+ case "xhtml":
+ this.startEditingHTMLNode(node, box, editor);
+ break;
+ default:
+ this.startEditingXMLNode(node, box, editor);
+ }
+ },
+
+ startEditingXMLNode: function(node, box, editor)
+ {
+ var xml = Xml.getElementXML(node);
+ Firebug.Editor.startEditing(box, xml, editor);
+ },
+
+ startEditingHTMLNode: function(node, box, editor)
+ {
+ if (Css.nonEditableTags.hasOwnProperty(node.localName))
+ return;
+
+ editor.innerEditMode = node.localName in Css.innerEditableTags;
+
+ var html = editor.innerEditMode ? node.innerHTML : Xml.getElementHTML(node);
+ html = Str.escapeForHtmlEditor(html);
+ Firebug.Editor.startEditing(box, html, editor);
+ },
+
+ deleteNode: function(node, dir)
+ {
+ var box = this.ioBox.createObjectBox(node);
+ if (Css.hasClass(box, "open"))
+ this.ioBox.contractObjectBox(box);
+
+ if (dir === "up")
+ {
+ // We want a "backspace"-like behavior, including traversing parents.
+ this.selectPrevious();
+ }
+ else
+ {
+ // Move to the next sibling if there is one, else backwards.
+ var nextSelection = this.ioBox.getNextSiblingObjectBox(box);
+ if (nextSelection)
+ this.select(nextSelection.repObject);
+ else
+ this.selectPrevious();
+ }
+
+ Firebug.HTMLModule.deleteNode(node, this.context);
+
+ Firebug.Inspector.highlightObject(this.selection, this.context);
+ },
+
+ toggleAll: function(event, node)
+ {
+ var expandExternalContentNodes = Events.isShift(event);
+ this.ioBox.toggleObject(node, true, expandExternalContentNodes ?
+ null : ["link", "script", "style"]);
+ },
+
+ updateNodeVisibility: function(node)
+ {
+ var wasHidden = node.classList.contains("nodeHidden");
+ if (!Xml.isVisible(node.repObject))
+ {
+ // Hide this node and, through CSS, every descendant.
+ node.classList.add("nodeHidden");
+ }
+ else if (wasHidden)
+ {
+ // The node has changed state from hidden to shown. While in the
+ // hidden state, some descendants may have been explicitly marked
+ // with .nodeHidden (not just through CSS inheritance), so we need
+ // to recheck the visibility of those.
+ node.classList.remove("nodeHidden");
+ var desc = Arr.cloneArray(node.getElementsByClassName("nodeHidden"));
+ for (var i = 0; i < desc.length; ++i)
+ {
+ if (Xml.isVisible(desc[i].repObject))
+ desc[i].classList.remove("nodeHidden");
+ }
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getElementSourceText: function(node)
+ {
+ if (this.sourceElements)
+ {
+ var index = this.sourceElementNodes.indexOf(node);
+ if (index != -1)
+ return this.sourceElements[index];
+ }
+
+ var lines;
+
+ var url = HTMLLib.getSourceHref(node);
+ if (url)
+ {
+ lines = this.context.sourceCache.load(url);
+ }
+ else
+ {
+ var text = HTMLLib.getSourceText(node);
+ lines = Str.splitLines(text);
+ }
+
+ var sourceElt = new Firebug.HTMLModule.SourceText(lines, node);
+
+ if (!this.sourceElements)
+ {
+ this.sourceElements = [sourceElt];
+ this.sourceElementNodes = [node];
+ }
+ else
+ {
+ this.sourceElements.push(sourceElt);
+ this.sourceElementNodes.push(node);
+ }
+
+ return sourceElt;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ registerMutationListeners: function(win)
+ {
+ var context = this.context;
+ if (!context.registeredHTMLMutationObservers)
+ context.registeredHTMLMutationObservers = new WeakMap();
+
+ var self = this;
+ function addObserver(win)
+ {
+ var doc = win.document;
+ if (context.registeredHTMLMutationObservers.has(doc))
+ return;
+
+ // xxxHonza: an iframe doesn't have to be loaded yet, so do not
+ // register mutation observers in such cases since they wouldn't
+ // be removed.
+ // The listeners can be registered later in watchWindowDelayed,
+ // but it's also risky. Mutation observers should be registered
+ // at the moment when it's clear that the window/frame has been
+ // loaded.
+
+ // This breaks HTML panel for about:blank pages (see issue 5120).
+ //if (doc.location == "about:blank")
+ // return;
+
+ var observer = new MutationObserver(self.onMutationObserve);
+ observer.observe(doc, {
+ attributes: true,
+ childList: true,
+ characterData: true,
+ subtree: true
+ });
+ context.registeredHTMLMutationObservers.set(doc, observer);
+ }
+
+ // If a window is specified use it, otherwise register observers for all
+ // context windows (including the main window and all embedded iframes).
+ if (win)
+ addObserver(win);
+ else
+ Win.iterateWindows(this.context.window, addObserver);
+
+ this.registerMutationBreakpointListeners(win);
+ },
+
+ unregisterMutationListeners: function(win)
+ {
+ this.unregisterMutationBreakpointListeners(win);
+
+ var context = this.context;
+ if (!context.registeredHTMLMutationObservers)
+ return;
+
+ function removeObserver(win)
+ {
+ var doc = win.document;
+ var observer = context.registeredHTMLMutationObservers.get(doc);
+ if (!observer)
+ return;
+
+ observer.disconnect();
+ context.registeredHTMLMutationObservers.delete(doc);
+ }
+
+ if (win)
+ removeObserver(win);
+ else
+ Win.iterateWindows(context.window, removeObserver);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ registerMutationBreakpointListeners: function(win)
+ {
+ var context = this.context;
+ if (!context.mutationBreakpointListenersEnabled)
+ return;
+
+ if (!context.registeredHTMLMutationEvents)
+ context.registeredHTMLMutationEvents = new WeakMap();
+
+ var self = this;
+ function addListeners(win)
+ {
+ var doc = win.document;
+ if (context.registeredHTMLMutationEvents.has(doc))
+ return;
+ context.registeredHTMLMutationEvents.set(doc, 1);
+
+ // (See also the changes in registerMutationListeners's addObserver)
+ Events.addEventListener(doc, "DOMAttrModified", self.onMutateAttr, false);
+ Events.addEventListener(doc, "DOMCharacterDataModified", self.onMutateText, false);
+ Events.addEventListener(doc, "DOMNodeInserted", self.onMutateNode, false);
+ Events.addEventListener(doc, "DOMNodeRemoved", self.onMutateNode, false);
+ }
+
+ if (win)
+ addListeners(win);
+ else
+ Win.iterateWindows(context.window, addListeners);
+ },
+
+ unregisterMutationBreakpointListeners: function(win)
+ {
+ var context = this.context;
+ if (!context.mutationBreakpointListenersEnabled)
+ return;
+
+ if (!context.registeredHTMLMutationEvents)
+ return;
+
+ var self = this;
+ function removeListeners(win)
+ {
+ var doc = win.document;
+ if (!context.registeredHTMLMutationEvents.has(doc))
+ return;
+ context.registeredHTMLMutationEvents.delete(doc);
+
+ Events.removeEventListener(doc, "DOMAttrModified", self.onMutateAttr, false);
+ Events.removeEventListener(doc, "DOMCharacterDataModified", self.onMutateText, false);
+ Events.removeEventListener(doc, "DOMNodeInserted", self.onMutateNode, false);
+ Events.removeEventListener(doc, "DOMNodeRemoved", self.onMutateNode, false);
+ }
+
+ if (win)
+ removeListeners(win);
+ else
+ Win.iterateWindows(context.window, removeListeners);
+ },
+
+ updateMutationBreakpointListeners: function()
+ {
+ var context = this.context;
+ var isEnabled = !!context.mutationBreakpointListenersEnabled;
+ var shouldEnable = this.shouldBreakOnNext() ||
+ context.mutationBreakpoints.hasEnabledBreakpoints();
+ if (isEnabled === shouldEnable)
+ return;
+ if (shouldEnable)
+ {
+ context.mutationBreakpointListenersEnabled = true;
+ this.registerMutationBreakpointListeners();
+ }
+ else
+ {
+ this.unregisterMutationBreakpointListeners();
+ context.mutationBreakpointListenersEnabled = false;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ mutateAttr: function(target, attrName, attrValue, removal)
+ {
+ // Due to the delay call this may or may not exist in the tree anymore
+ if (!this.ioBox.isInExistingRoot(target))
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("mutateAttr: different tree " + target, target);
+ return;
+ }
+
+ if (FBTrace.DBG_HTML)
+ {
+ FBTrace.sysout("html.mutateAttr target:" + target + " attrName:" + attrName +
+ " attrValue: " + attrValue + " removal: " + removal, target);
+ }
+
+ this.markChange();
+
+ var objectNodeBox = Firebug.scrollToMutations || Firebug.expandMutations ?
+ this.ioBox.createObjectBox(target) : this.ioBox.findObjectBox(target);
+
+ if (!objectNodeBox)
+ return;
+
+ this.updateNodeVisibility(objectNodeBox);
+
+ if (!removal)
+ {
+ var nodeAttr = HTMLLib.findNodeAttrBox(objectNodeBox, attrName);
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("mutateAttr " + removal + " " + attrName + "=" + attrValue +
+ " node: " + nodeAttr, nodeAttr);
+
+ if (nodeAttr && nodeAttr.childNodes.length > 3)
+ {
+ var attrValueBox = nodeAttr.getElementsByClassName("nodeValue")[0];
+ var attrValueText = attrValueBox.firstChild;
+ if (attrValueText)
+ attrValueText.nodeValue = attrValue;
+ else
+ attrValueBox.textContent = attrValue;
+
+ this.highlightMutation(attrValueBox, objectNodeBox, "mutated");
+ }
+ else
+ {
+ var attr = target.getAttributeNode(attrName);
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("mutateAttr getAttributeNode " + removal + " " + attrName +
+ "=" + attrValue + " node: " + attr, attr);
+
+ if (attr)
+ {
+ nodeAttr = Firebug.HTMLPanel.AttrNode.tag.replace({attr: attr},
+ this.document);
+
+ var labelBox = objectNodeBox.querySelector("*> .nodeLabel > .nodeLabelBox");
+ var bracketBox = labelBox.querySelector("*> .nodeBracket");
+ labelBox.insertBefore(nodeAttr, bracketBox);
+
+ this.highlightMutation(nodeAttr, objectNodeBox, "mutated");
+ }
+ }
+ }
+ else
+ {
+ var nodeAttr = HTMLLib.findNodeAttrBox(objectNodeBox, attrName);
+ if (nodeAttr)
+ nodeAttr.parentNode.removeChild(nodeAttr);
+
+ // We want to highlight regardless as the domplate may have been
+ // generated after the attribute was removed from the node
+ this.highlightMutation(objectNodeBox, objectNodeBox, "mutated");
+ }
+
+ Firebug.Inspector.repaint();
+ },
+
+ mutateText: function(target, parent, textValue)
+ {
+ // Due to the delay call this may or may not exist in the tree anymore
+ if (!this.ioBox.isInExistingRoot(target))
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("mutateText: different tree " + target, target);
+ return;
+ }
+
+ this.markChange();
+
+ var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations ?
+ this.ioBox.createObjectBox(parent) : this.ioBox.findObjectBox(parent);
+
+ if (!parentNodeBox)
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("html.mutateText failed to update text, parent node " +
+ "box does not exist");
+ return;
+ }
+
+ if (!Firebug.showFullTextNodes)
+ textValue = Str.cropMultipleLines(textValue);
+
+ var parentTag = getNodeBoxTag(parentNodeBox);
+ if (parentTag == Firebug.HTMLPanel.TextElement.tag)
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("html.mutateText target: " + target + " parent: " + parent);
+
+ // Rerender the entire parentNodeBox. Proper entity-display logic will
+ // be automatically applied according to the preferences.
+ var newParentNodeBox = parentTag.replace({object: parentNodeBox.repObject}, this.document);
+ if (parentNodeBox.parentNode)
+ parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
+
+ // Reselect if the element was selected before.
+ if (this.selection && (!this.selection.parentNode || parent == this.selection))
+ this.ioBox.select(parent, true);
+
+ var nodeText = HTMLLib.getTextElementTextBox(newParentNodeBox);
+ if (!nodeText.firstChild)
+ {
+ if (FBTrace.DBG_HTML)
+ {
+ FBTrace.sysout("html.mutateText failed to update text, " +
+ "TextElement firstChild does not exist");
+ }
+ return;
+ }
+
+ // Highlight the text box only (not the entire parentNodeBox/element).
+ this.highlightMutation(nodeText, newParentNodeBox, "mutated");
+ }
+ else
+ {
+ var childBox = this.ioBox.getChildObjectBox(parentNodeBox);
+ if (!childBox)
+ {
+ if (FBTrace.DBG_HTML)
+ {
+ FBTrace.sysout("html.mutateText failed to update text, " +
+ "no child object box found");
+ }
+ return;
+ }
+
+ var textNodeBox = this.ioBox.findChildObjectBox(childBox, target);
+ if (textNodeBox)
+ {
+ // structure for comment and cdata. Are there others?
+ textNodeBox.firstChild.firstChild.nodeValue = textValue;
+
+ this.highlightMutation(textNodeBox, parentNodeBox, "mutated");
+ }
+ else if (Firebug.scrollToMutations || Firebug.expandMutations)
+ {
+ // We are not currently rendered but we are set to highlight
+ var objectBox = this.ioBox.createObjectBox(target);
+ this.highlightMutation(objectBox, objectBox, "mutated");
+ }
+ }
+ },
+
+ mutateNode: function(target, parent, nextSibling, removal)
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("html.mutateNode target:" + target + " parent:" + parent +
+ (removal ? "REMOVE" : ""));
+
+ // Due to the delay call this may or may not exist in the tree anymore
+ if (!removal && !this.ioBox.isInExistingRoot(target))
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("mutateNode: different tree " + target, target);
+ return;
+ }
+
+ this.markChange(); // This invalidates the panels for every mutate
+
+ var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
+ ? this.ioBox.createObjectBox(parent)
+ : this.ioBox.findObjectBox(parent);
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("html.mutateNode parent:" + parent + " parentNodeBox:" +
+ parentNodeBox);
+
+ if (!parentNodeBox)
+ return;
+
+ // Ignore whitespace nodes.
+ if (!Firebug.showTextNodesWithWhitespace && this.isWhitespaceText(target))
+ return;
+
+ var newParentTag = getNodeTag(parent);
+ var oldParentTag = getNodeBoxTag(parentNodeBox);
+
+ var objectBox = null;
+
+ if (newParentTag == oldParentTag)
+ {
+ if (parentNodeBox.populated)
+ {
+ if (removal)
+ {
+ this.ioBox.removeChildBox(parentNodeBox, target);
+
+ // Special case for docType.
+ if (target instanceof HTMLHtmlElement)
+ this.ioBox.removeChildBox(parentNodeBox, target.parentNode.doctype);
+
+ this.highlightMutation(parentNodeBox, parentNodeBox, "mutated");
+ }
+ else
+ {
+ var childBox = this.ioBox.getChildObjectBox(parentNodeBox);
+
+ var comments = Firebug.showCommentNodes;
+ var whitespaces = Firebug.showTextNodesWithWhitespace;
+
+ // Get the right next sibling that match following criteria:
+ // 1) It's not a whitespace text node in case 'show whitespaces' is false.
+ // 2) It's not a comment in case 'show comments' is false.
+ // 3) There is a child box already created for it in the HTML panel UI.
+ // The new node will then be inserted before that sibling's child box, or
+ // appended at the end (issue 5255).
+ while (nextSibling && (
+ (!whitespaces && HTMLLib.isWhitespaceText(nextSibling)) ||
+ (!comments && nextSibling instanceof window.Comment) ||
+ (!this.ioBox.findChildObjectBox(childBox, nextSibling))))
+ {
+ nextSibling = this.findNextSibling(nextSibling);
+ }
+
+ objectBox = nextSibling ?
+ this.ioBox.insertChildBoxBefore(parentNodeBox, target, nextSibling) :
+ this.ioBox.appendChildBox(parentNodeBox, target);
+
+ // Special case for docType.
+ if (target instanceof HTMLHtmlElement)
+ {
+ this.ioBox.insertChildBoxBefore(parentNodeBox,
+ target.parentNode.doctype, target);
+ }
+
+ this.highlightMutation(objectBox, objectBox, "mutated");
+ }
+ }
+ else // !parentNodeBox.populated
+ {
+ var newParentNodeBox = newParentTag.replace({object: parent}, this.document);
+ parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
+
+ if (this.selection && (!this.selection.parentNode || parent == this.selection))
+ this.ioBox.select(parent, true);
+
+ this.highlightMutation(newParentNodeBox, newParentNodeBox, "mutated");
+
+ if (!removal && (Firebug.scrollToMutations || Firebug.expandMutations))
+ {
+ objectBox = this.ioBox.createObjectBox(target);
+ this.highlightMutation(objectBox, objectBox, "mutated");
+ }
+ }
+ }
+ else // newParentTag != oldParentTag
+ {
+ var newParentNodeBox = newParentTag.replace({object: parent}, this.document);
+ if (parentNodeBox.parentNode)
+ parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
+
+ if (Css.hasClass(parentNodeBox, "open"))
+ this.ioBox.toggleObjectBox(newParentNodeBox, true);
+
+ if (this.selection && (!this.selection.parentNode || parent == this.selection))
+ this.ioBox.select(parent, true);
+
+ this.highlightMutation(newParentNodeBox, newParentNodeBox, "mutated");
+
+ if (!removal && (Firebug.scrollToMutations || Firebug.expandMutations))
+ {
+ objectBox = this.ioBox.createObjectBox(target);
+ this.highlightMutation(objectBox, objectBox, "mutated");
+ }
+ }
+
+ if (objectBox && this.selection === target)
+ this.ioBox.selectObjectBox(objectBox);
+ },
+
+ highlightMutation: function(elt, objectBox, type)
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("html.highlightMutation Firebug.highlightMutations:" +
+ Firebug.highlightMutations, {elt: elt, objectBox: objectBox, type: type});
+
+ if (!elt)
+ return;
+
+ if (Firebug.scrollToMutations || Firebug.expandMutations)
+ {
+ if (this.context.mutationTimeout)
+ {
+ this.context.clearTimeout(this.context.mutationTimeout);
+ delete this.context.mutationTimeout;
+ }
+
+ var ioBox = this.ioBox;
+ var panelNode = this.panelNode;
+
+ this.context.mutationTimeout = this.context.setTimeout(function()
+ {
+ ioBox.openObjectBox(objectBox);
+
+ if (Firebug.scrollToMutations)
+ Dom.scrollIntoCenterView(objectBox, panelNode);
+ }, 200);
+ }
+
+ if (Firebug.highlightMutations)
+ Css.setClassTimed(elt, type, this.context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // InsideOutBoxView implementation
+
+ createObjectBox: function(object, isRoot)
+ {
+ if (FBTrace.DBG_HTML)
+ {
+ FBTrace.sysout("html.createObjectBox(" + Css.getElementCSSSelector(object) +
+ ", isRoot:" + (isRoot? "true" : "false")+")");
+ }
+
+ var tag = getNodeTag(object);
+ if (tag)
+ return tag.replace({object: object}, this.document);
+ },
+
+ getParentObject: function(node)
+ {
+ if (node instanceof Firebug.HTMLModule.SourceText)
+ return node.owner;
+
+ var parentNode = this.getParentNode(node);
+
+ // for chromebug to avoid climbing out to browser.xul
+ if (node.nodeName == "#document")
+ return null;
+
+ //if (FBTrace.DBG_HTML)
+ // FBTrace.sysout("html.getParentObject for "+node.nodeName+" parentNode:"+
+ // Css.getElementCSSSelector(parentNode));
+
+ if (parentNode)
+ {
+ if (parentNode.nodeType == Node.DOCUMENT_NODE)
+ {
+ if (parentNode.defaultView)
+ {
+ if (parentNode.defaultView == this.context.window)
+ return parentNode;
+
+ if (FBTrace.DBG_HTML)
+ {
+ FBTrace.sysout("getParentObject; node is document node"+
+ ", frameElement:" + parentNode.defaultView.frameElement);
+ }
+
+ return parentNode.defaultView.frameElement;
+ }
+ else
+ {
+ var skipParent = this.getEmbedConnection(parentNode);
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("getParentObject skipParent:" +
+ (skipParent ? skipParent.nodeName : "none"));
+
+ if (skipParent)
+ return skipParent;
+ else
+ return null; // parent is document element, but no window at defaultView.
+ }
+ }
+ else if (!parentNode.localName)
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("getParentObject: null localName must be window, no parentObject");
+ return null;
+ }
+ else
+ {
+ return parentNode;
+ }
+ }
+ else
+ {
+ // Documents have no parentNode; Attr, Document, DocumentFragment, Entity,
+ // and Notation. top level windows have no parentNode
+ if (node && node.nodeType == Node.DOCUMENT_NODE)
+ {
+ // generally a reference to the window object for the document, however
+ // that is not defined in the specification
+ if (node.defaultView)
+ {
+ var embeddingFrame = node.defaultView.frameElement;
+ if (embeddingFrame)
+ return embeddingFrame.contentDocument;
+ }
+ else
+ {
+ // a Document object without a parentNode or window
+ return null; // top level has no parent
+ }
+ }
+ }
+ },
+
+ setEmbedConnection: function(node, skipChild)
+ {
+ if (!this.embeddedBrowserParents)
+ {
+ this.embeddedBrowserParents = [];
+ this.embeddedBrowserDocument = [];
+ }
+
+ this.embeddedBrowserDocument.push(skipChild);
+
+ // store our adopted child in a side table
+ this.embeddedBrowserParents.push(node);
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("Found skipChild " + Css.getElementCSSSelector(skipChild) +
+ " for " + Css.getElementCSSSelector(node) + " with node.contentDocument " +
+ node.contentDocument);
+
+ return skipChild;
+ },
+
+ getEmbedConnection: function(node)
+ {
+ if (this.embeddedBrowserParents)
+ {
+ var index = this.embeddedBrowserParents.indexOf(node);
+ if (index !== -1)
+ return this.embeddedBrowserDocument[index];
+ }
+ },
+
+ /**
+ * @param: node a DOM node from the Web page
+ * @param: index counter for important children, may skip whitespace
+ * @param: previousSibling a node from the web page
+ */
+ getChildObject: function(node, index, previousSibling)
+ {
+ if (!node)
+ {
+ FBTrace.sysout("getChildObject: null node");
+ return;
+ }
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("getChildObject " + node.tagName + " index " + index +
+ " previousSibling: " +
+ (previousSibling ? Css.getElementCSSSelector(previousSibling) : "null"),
+ {node: node, previousSibling:previousSibling});
+
+ if (this.isSourceElement(node))
+ {
+ if (index == 0)
+ return this.getElementSourceText(node);
+ else
+ return null; // no siblings of source elements
+ }
+ else if (node instanceof window.Document)
+ {
+ if (previousSibling !== null)
+ return this.getNextSibling(previousSibling);
+ else
+ return this.getFirstChild(node);
+ }
+ else if (node.contentDocument) // then the node is a frame
+ {
+ if (index == 0)
+ {
+ // punch thru and adopt the document node as our child
+ var skipChild = node.contentDocument.firstChild;
+
+ // (the node's).(type 9 document).(HTMLElement)
+ return this.setEmbedConnection(node, skipChild);
+ }
+ else if (previousSibling)
+ {
+ // Next child of a document (after doc-type) is <html>.
+ return this.getNextSibling(previousSibling);
+ }
+ }
+ else if (node.getSVGDocument && node.getSVGDocument()) // then the node is a frame
+ {
+ if (index == 0)
+ {
+ var skipChild = node.getSVGDocument().documentElement; // unwrap
+
+ // (the node's).(type 9 document).(HTMLElement)
+ return this.setEmbedConnection(node, skipChild);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ var child;
+ if (previousSibling) // then we are walking
+ child = this.getNextSibling(previousSibling); // may return null, meaning done with iteration.
+ else
+ child = this.getFirstChild(node); // child is set to at the beginning of an iteration.
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("getChildObject firstChild " + Css.getElementCSSSelector(child) +
+ " with Firebug.showTextNodesWithWhitespace " +
+ Firebug.showTextNodesWithWhitespace);
+
+ if (Firebug.showTextNodesWithWhitespace) // then the index is true to the node list
+ {
+ return child;
+ }
+ else
+ {
+ for (; child; child = this.getNextSibling(child))
+ {
+ if (!this.isWhitespaceText(child))
+ return child;
+ }
+ }
+
+ return null; // we have no children worth showing.
+ },
+
+ isWhitespaceText: function(node)
+ {
+ return HTMLLib.isWhitespaceText(node);
+ },
+
+ findNextSibling: function (node)
+ {
+ return HTMLLib.findNextSibling(node);
+ },
+
+ isSourceElement: function(element)
+ {
+ return HTMLLib.isSourceElement(element);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Events
+
+ onMutationObserve: function(records)
+ {
+ for (var ri = 0; ri < records.length; ++ri)
+ {
+ var record = records[ri];
+
+ var target = record.target;
+ if (Firebug.shouldIgnore(target))
+ continue;
+
+ var type = record.type;
+ if (type === "attributes")
+ {
+ var attrName = record.attributeName;
+ var newValue = target.getAttribute(attrName);
+ var removal = (newValue === null);
+ this.context.throttle(this.mutateAttr, this,
+ [target, attrName, newValue, removal]);
+ }
+ else if (type === "childList")
+ {
+ var added = record.addedNodes, removed = record.removedNodes;
+ if (added.length)
+ {
+ var nextSibling = HTMLLib.findNextNodeFrom(record.nextSibling);
+ for (var i = 0; i < added.length; ++i)
+ {
+ var node = added[i];
+ if (Firebug.shouldIgnore(node))
+ continue;
+ this.context.throttle(this.mutateNode, this,
+ [node, target, nextSibling, false]);
+ }
+ }
+ for (var i = 0; i < removed.length; ++i)
+ {
+ var node = removed[i];
+ if (Firebug.shouldIgnore(node))
+ continue;
+ this.context.throttle(this.mutateNode, this,
+ [node, target, null, true]);
+ }
+ }
+ else if (type === "characterData")
+ {
+ this.context.throttle(this.mutateText, this,
+ [target, target.parentNode, target.data]);
+ }
+ }
+ },
+
+ onMutateAttr: function(event)
+ {
+ var target = event.target;
+ if (Firebug.shouldIgnore(target))
+ return;
+
+ Firebug.HTMLModule.MutationBreakpoints.onMutateAttr(event, this.context);
+ this.updateMutationBreakpointListeners();
+ },
+
+ onMutateText: function(event)
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("html.onMutateText; ", event);
+
+ Firebug.HTMLModule.MutationBreakpoints.onMutateText(event, this.context);
+ this.updateMutationBreakpointListeners();
+ },
+
+ onMutateNode: function(event)
+ {
+ var target = event.target;
+ if (Firebug.shouldIgnore(target))
+ return;
+
+ Firebug.HTMLModule.MutationBreakpoints.onMutateNode(event, this.context);
+ this.updateMutationBreakpointListeners();
+ },
+
+ onClick: function(event)
+ {
+ if (Events.isLeftClick(event) && Events.isDoubleClick(event))
+ {
+ // The double-click (detail == 2) expands an HTML element, but the user must click
+ // on the element itself not on the twisty.
+ // The logic should be as follow:
+ // - click on the twisty expands/collapses the element
+ // - double click on the element name expands/collapses it
+ // - click on the element name selects it
+ if (!Css.hasClass(event.target, "twisty") && !Css.hasClass(event.target, "nodeLabel"))
+ this.toggleNode(event);
+ }
+ else if (Events.isAltClick(event) && Events.isDoubleClick(event) && !this.editing)
+ {
+ var node = Firebug.getRepObject(event.target);
+ this.editNode(node);
+ }
+ },
+
+ onMouseDown: function(event)
+ {
+ if (!Events.isLeftClick(event))
+ return;
+
+ if (Dom.getAncestorByClass(event.target, "nodeTag"))
+ {
+ var node = Firebug.getRepObject(event.target);
+ this.noScrollIntoView = true;
+ this.select(node);
+
+ delete this.noScrollIntoView;
+
+ if (Css.hasClass(event.target, "twisty"))
+ this.toggleNode(event);
+ }
+ },
+
+ toggleNode: function(event)
+ {
+ var node = Firebug.getRepObject(event.target);
+ var box = this.ioBox.createObjectBox(node);
+ if (!Css.hasClass(box, "open"))
+ this.ioBox.expandObject(node);
+ else
+ this.ioBox.contractObject(this.selection);
+ },
+
+ onKeyPress: function(event)
+ {
+ if (this.editing)
+ return;
+
+ var node = this.selection;
+ if (!node)
+ return;
+
+ // * expands the node with all its children
+ // + expands the node
+ // - collapses the node
+ var ch = String.fromCharCode(event.charCode);
+ if (ch == "*")
+ this.toggleAll(event, node);
+
+ if (!Events.noKeyModifiers(event))
+ return;
+
+ if (ch == "+")
+ this.ioBox.expandObject(node);
+ else if (ch == "-")
+ this.ioBox.contractObject(node);
+
+ if (event.keyCode == KeyEvent.DOM_VK_UP)
+ this.selectNodeBy("up");
+ else if (event.keyCode == KeyEvent.DOM_VK_DOWN)
+ this.selectNodeBy("down");
+ else if (event.keyCode == KeyEvent.DOM_VK_LEFT)
+ this.selectNodeBy("left");
+ else if (event.keyCode == KeyEvent.DOM_VK_RIGHT)
+ this.selectNodeBy("right");
+ else if (event.keyCode == KeyEvent.DOM_VK_BACK_SPACE)
+ {
+ if (!Css.nonDeletableTags.hasOwnProperty(node.localName))
+ this.deleteNode(node, "up");
+ }
+ else if (event.keyCode == KeyEvent.DOM_VK_DELETE)
+ {
+ if (!Css.nonDeletableTags.hasOwnProperty(node.localName))
+ this.deleteNode(node, "down");
+ }
+ else
+ return;
+
+ Events.cancelEvent(event);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // CSS Listener
+
+ updateVisibilitiesForSelectorInSheet: function(sheet, selector)
+ {
+ if (!selector)
+ return;
+ var doc = (sheet && sheet.ownerNode && sheet.ownerNode.ownerDocument);
+ if (!doc)
+ return;
+
+ var affected = doc.querySelectorAll(selector);
+ if (!affected.length || !this.ioBox.isInExistingRoot(affected[0]))
+ return;
+
+ for (var i = 0; i < affected.length; ++i)
+ {
+ var node = this.ioBox.findObjectBox(affected[i]);
+ if (node)
+ this.updateNodeVisibility(node);
+ }
+ },
+
+ updateVisibilitiesForRule: function(rule)
+ {
+ this.updateVisibilitiesForSelectorInSheet(rule.parentStyleSheet, rule.selectorText);
+ },
+
+ cssPropAffectsVisibility: function(propName)
+ {
+ // Pretend that "display" is the only property which affects visibility,
+ // which is a half-truth. We could make this more technically correct
+ // by unconditionally returning true, but forcing a synchronous reflow
+ // and computing offsetWidth/Height on up to every element on the page
+ // isn't worth it.
+ return (propName === "display");
+ },
+
+ cssTextAffectsVisibility: function(cssText)
+ {
+ return (cssText.indexOf("display:") !== -1);
+ },
+
+ onAfterCSSDeleteRule: function(styleSheet, cssText, selector)
+ {
+ if (this.cssTextAffectsVisibility(cssText))
+ this.updateVisibilitiesForSelectorInSheet(styleSheet, selector);
+ },
+
+ onCSSInsertRule: function(styleSheet, cssText, ruleIndex)
+ {
+ if (this.cssTextAffectsVisibility(cssText))
+ this.updateVisibilitiesForRule(styleSheet.cssRules[ruleIndex]);
+ },
+
+ onCSSSetProperty: function(style, propName, propValue, propPriority, prevValue,
+ prevPriority, rule, baseText)
+ {
+ if (this.cssPropAffectsVisibility(propName))
+ this.updateVisibilitiesForRule(rule);
+ },
+
+ onCSSRemoveProperty: function(style, propName, prevValue, prevPriority, rule, baseText)
+ {
+ if (this.cssPropAffectsVisibility(propName))
+ this.updateVisibilitiesForRule(rule);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Panel
+
+ name: "html",
+ searchable: true,
+ breakable: true,
+ dependents: ["css", "computed", "layout", "dom", "domSide", "watch"],
+ inspectorHistory: new Array(5),
+ enableA11y: true,
+ order: 20,
+
+ initialize: function()
+ {
+ this.onMutationObserve = this.onMutationObserve.bind(this);
+ this.onMutateText = this.onMutateText.bind(this);
+ this.onMutateAttr = this.onMutateAttr.bind(this);
+ this.onMutateNode = this.onMutateNode.bind(this);
+ this.onClick = this.onClick.bind(this);
+ this.onMouseDown = this.onMouseDown.bind(this);
+ this.onKeyPress = this.onKeyPress.bind(this);
+
+ Firebug.Panel.initialize.apply(this, arguments);
+ Firebug.CSSModule.addListener(this);
+ },
+
+ destroy: function(state)
+ {
+ Persist.persistObjects(this, state);
+
+ Firebug.Panel.destroy.apply(this, arguments);
+
+ delete this.embeddedBrowserParents;
+ delete this.embeddedBrowserDocument;
+
+ // xxxHonza: I don't know why this helps, but it helps to release the
+ // page compartment (at least by observing about:memory);
+ // Note that inspectorHistory holds references to page elements.
+ for (var i=0; i<this.inspectorHistory.length; i++)
+ delete this.inspectorHistory[i];
+ delete this.inspectorHistory;
+
+ Firebug.CSSModule.removeListener(this);
+ this.unregisterMutationListeners();
+ },
+
+ initializeNode: function(oldPanelNode)
+ {
+ if (!this.ioBox)
+ this.ioBox = new Firebug.InsideOutBox(this, this.panelNode);
+
+ Events.addEventListener(this.panelNode, "click", this.onClick, false);
+ Events.addEventListener(this.panelNode, "mousedown", this.onMouseDown, false);
+
+ Firebug.Panel.initializeNode.apply(this, arguments);
+ },
+
+ destroyNode: function()
+ {
+ Events.removeEventListener(this.panelNode, "click", this.onClick, false);
+ Events.removeEventListener(this.panelNode, "mousedown", this.onMouseDown, false);
+
+ Events.removeEventListener(this.panelNode.ownerDocument, "keypress",
+ this.onKeyPress, true);
+
+ if (this.ioBox)
+ {
+ this.ioBox.destroy();
+ delete this.ioBox;
+ }
+
+ Firebug.Panel.destroyNode.apply(this, arguments);
+ },
+
+ show: function(state)
+ {
+ this.showToolbarButtons("fbHTMLButtons", true);
+ this.showToolbarButtons("fbStatusButtons", true);
+
+ Events.addEventListener(this.panelNode.ownerDocument, "keypress", this.onKeyPress, true);
+
+ if (this.context.loaded)
+ {
+ this.registerMutationListeners();
+
+ Persist.restoreObjects(this, state);
+ }
+ },
+
+ hide: function()
+ {
+ // clear the state that is tracking the infotip so it is reset after next show()
+ delete this.infoTipURL;
+
+ Events.removeEventListener(this.panelNode.ownerDocument, "keypress", this.onKeyPress, true);
+ },
+
+ watchWindow: function(context, win)
+ {
+ var self = this;
+ setTimeout(function() {
+ self.watchWindowDelayed(context, win);
+ }, 100);
+ },
+
+ watchWindowDelayed: function(context, win)
+ {
+ if (this.context.window && this.context.window != win)
+ {
+ // then I guess we are an embedded window
+ var htmlPanel = this;
+ Win.iterateWindows(this.context.window, function(subwin)
+ {
+ if (win == subwin)
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("html.watchWindow found subwin.location.href="+
+ win.location.href);
+
+ htmlPanel.mutateDocumentEmbedded(win, false);
+ }
+ });
+ }
+
+ this.registerMutationListeners(win);
+ },
+
+ unwatchWindow: function(context, win)
+ {
+ if (this.context.window && this.context.window != win)
+ {
+ // then I guess we are an embedded window
+ var htmlPanel = this;
+ Win.iterateWindows(this.context.window, function(subwin)
+ {
+ if (win == subwin)
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("html.unwatchWindow found subwin.location.href="+
+ win.location.href);
+
+ htmlPanel.mutateDocumentEmbedded(win, true);
+ }
+ });
+ }
+
+ this.unregisterMutationListeners(win);
+ },
+
+ mutateDocumentEmbedded: function(win, remove)
+ {
+ //xxxHonza: win.document.documentElement is null if this method is synchronously
+ // called after watchWindow. This is why watchWindowDelayed is introduced.
+ // See issue 3342
+
+ // document.documentElement - Returns the Element that is a direct child of document.
+ // For HTML documents, this normally the HTML element.
+ var target = win.document.documentElement;
+ var parent = win.frameElement;
+ var nextSibling = this.findNextSibling(target || parent);
+ try
+ {
+ this.mutateNode(target, parent, nextSibling, remove);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("html.mutateDocumentEmbedded FAILS " + exc, exc);
+ }
+ },
+
+ supportsObject: function(object, type)
+ {
+ if (object instanceof window.Element || object instanceof window.Text ||
+ object instanceof window.CDATASection)
+ {
+ return 2;
+ }
+ else if (object instanceof SourceLink.SourceLink && object.type == "css" &&
+ !Url.reCSS.test(object.href))
+ {
+ return 2;
+ }
+ else
+ {
+ return 0;
+ }
+ },
+
+ updateOption: function(name, value)
+ {
+ var options = new Set();
+ options.add("showCommentNodes");
+ options.add("entityDisplay");
+ options.add("showTextNodesWithWhitespace");
+ options.add("showFullTextNodes");
+
+ if (options.has(name))
+ {
+ this.resetSearch();
+ Dom.clearNode(this.panelNode);
+ if (this.ioBox)
+ this.ioBox.destroy();
+
+ this.ioBox = new Firebug.InsideOutBox(this, this.panelNode);
+ this.ioBox.select(this.selection, true, true);
+ }
+ },
+
+ updateSelection: function(object)
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("html.updateSelection " + object, object);
+
+ if (this.ioBox.sourceRow)
+ this.ioBox.sourceRow.removeAttribute("exe_line");
+
+ // && object.type == "css" and !Url.reCSS(object.href) by supports
+ if (object instanceof SourceLink.SourceLink)
+ {
+ var sourceLink = object;
+ var stylesheet = Css.getStyleSheetByHref(sourceLink.href, this.context);
+ if (stylesheet)
+ {
+ var ownerNode = stylesheet.ownerNode;
+
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("html panel updateSelection stylesheet.ownerNode=" +
+ stylesheet.ownerNode + " href:" + sourceLink.href);
+ }
+
+ if (ownerNode)
+ {
+ var objectbox = this.ioBox.select(ownerNode, true, true, this.noScrollIntoView);
+
+ // XXXjjb seems like this could be bad for errors at the end of long files
+ // first source row in style
+ var sourceRow = objectbox.getElementsByClassName("sourceRow").item(0);
+ for (var lineNo = 1; lineNo < sourceLink.line; lineNo++)
+ {
+ if (!sourceRow) break;
+ sourceRow = Dom.getNextByClass(sourceRow, "sourceRow");
+ }
+
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("html panel updateSelection sourceLink.line=" +
+ sourceLink.line + " sourceRow=" +
+ (sourceRow ? sourceRow.innerHTML : "undefined"));
+ }
+
+ if (sourceRow)
+ {
+ this.ioBox.sourceRow = sourceRow;
+ this.ioBox.sourceRow.setAttribute("exe_line", "true");
+
+ Dom.scrollIntoCenterView(sourceRow);
+
+ // sourceRow isn't an objectBox, but the function should work anyway...
+ this.ioBox.selectObjectBox(sourceRow, false);
+ }
+ }
+ }
+ }
+ else if (Firebug.Inspector.inspecting)
+ {
+ this.ioBox.highlight(object);
+ }
+ else
+ {
+ var found = this.ioBox.select(object, true, false, this.noScrollIntoView);
+ if (!found)
+ {
+ // Look up for an enclosing parent. NB this will mask failures in createObjectBoxes
+ var parentNode = this.getParentObject(object);
+
+ if (FBTrace.DBG_ERRORS && FBTrace.DBG_HTML)
+ FBTrace.sysout("html.updateSelect no objectBox for object:"+
+ Css.getElementCSSSelector(object) + " trying "+
+ Css.getElementCSSSelector(parentNode));
+
+ this.updateSelection(parentNode);
+ return;
+ }
+
+ this.inspectorHistory.unshift(object);
+ if (this.inspectorHistory.length > 5)
+ this.inspectorHistory.pop();
+ }
+ },
+
+ stopInspecting: function(object, canceled)
+ {
+ if (object != this.inspectorHistory)
+ {
+ // Manage history of selection for later access in the command line.
+ this.inspectorHistory.unshift(object);
+ if (this.inspectorHistory.length > 5)
+ this.inspectorHistory.pop();
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("html.stopInspecting: inspectoryHistory updated",
+ this.inspectorHistory);
+ }
+
+ this.ioBox.highlight(null);
+
+ if (!canceled)
+ this.ioBox.select(object, true);
+ },
+
+ search: function(text, reverse)
+ {
+ if (!text)
+ return;
+
+ var search;
+ if (text == this.searchText && this.lastSearch)
+ {
+ search = this.lastSearch;
+ }
+ else
+ {
+ var doc = this.context.window.document;
+ search = this.lastSearch = new HTMLLib.NodeSearch(text, doc, this.panelNode, this.ioBox);
+ }
+
+ var loopAround = search.find(reverse, Firebug.Search.isCaseSensitive(text));
+ if (loopAround)
+ {
+ this.resetSearch();
+ this.search(text, reverse);
+ }
+
+ return !search.noMatch && (loopAround ? "wraparound" : true);
+ },
+
+ getSearchOptionsMenuItems: function()
+ {
+ return [
+ Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive",
+ "search.tip.Case_Sensitive")
+ ];
+ },
+
+ getDefaultSelection: function()
+ {
+ try
+ {
+ var doc = this.context.window.document;
+ return doc.body ? doc.body : Dom.getPreviousElement(doc.documentElement.lastChild);
+ }
+ catch (exc)
+ {
+ return null;
+ }
+ },
+
+ getObjectPath: function(element)
+ {
+ var path = [];
+ for (; element; element = this.getParentObject(element))
+ {
+ // Ignore the document itself, it shouldn't be displayed in
+ // the object path (aka breadcrumbs).
+ if (element instanceof window.Document)
+ continue;
+
+ // Ignore elements without parent
+ if (!element.parentNode)
+ continue;
+
+ path.push(element);
+ }
+ return path;
+ },
+
+ getPopupObject: function(target)
+ {
+ return Firebug.getRepObject(target);
+ },
+
+ getTooltipObject: function(target)
+ {
+ if (Dom.getAncestorByClass(target, "nodeLabelBox") ||
+ Dom.getAncestorByClass(target, "nodeCloseLabelBox"))
+ {
+ return Firebug.getRepObject(target);
+ }
+ },
+
+ getOptionsMenuItems: function()
+ {
+ return [
+ Menu.optionMenu("ShowFullText", "showFullTextNodes",
+ "html.option.tip.Show_Full_Text"),
+ Menu.optionMenu("ShowWhitespace", "showTextNodesWithWhitespace",
+ "html.option.tip.Show_Whitespace"),
+ Menu.optionMenu("ShowComments", "showCommentNodes",
+ "html.option.tip.Show_Comments"),
+ "-",
+ {
+ label: "html.option.Show_Entities_As_Symbols",
+ tooltiptext: "html.option.tip.Show_Entities_As_Symbols",
+ type: "radio",
+ name: "entityDisplay",
+ id: "entityDisplaySymbols",
+ command: Obj.bind(this.setEntityDisplay, this, "symbols"),
+ checked: Options.get("entityDisplay") == "symbols"
+ },
+ {
+ label: "html.option.Show_Entities_As_Names",
+ tooltiptext: "html.option.tip.Show_Entities_As_Names",
+ type: "radio",
+ name: "entityDisplay",
+ id: "entityDisplayNames",
+ command: Obj.bind(this.setEntityDisplay, this, "names"),
+ checked: Options.get("entityDisplay") == "names"
+ },
+ {
+ label: "html.option.Show_Entities_As_Unicode",
+ tooltiptext: "html.option.tip.Show_Entities_As_Unicode",
+ type: "radio",
+ name: "entityDisplay",
+ id: "entityDisplayUnicode",
+ command: Obj.bind(this.setEntityDisplay, this, "unicode"),
+ checked: Options.get("entityDisplay") == "unicode"
+ },
+ "-",
+ Menu.optionMenu("HighlightMutations", "highlightMutations",
+ "html.option.tip.Highlight_Mutations"),
+ Menu.optionMenu("ExpandMutations", "expandMutations",
+ "html.option.tip.Expand_Mutations"),
+ Menu.optionMenu("ScrollToMutations", "scrollToMutations",
+ "html.option.tip.Scroll_To_Mutations"),
+ "-",
+ Menu.optionMenu("ShadeBoxModel", "shadeBoxModel",
+ "inspect.option.tip.Shade_Box_Model"),
+ Menu.optionMenu("ShowQuickInfoBox","showQuickInfoBox",
+ "inspect.option.tip.Show_Quick_Info_Box")
+ ];
+ },
+
+ getContextMenuItems: function(node, target)
+ {
+ if (!node)
+ return null;
+
+ var items = [];
+
+ if (node.nodeType == Node.ELEMENT_NODE)
+ {
+ items.push(
+ "-",
+ {
+ label: "NewAttribute",
+ id: "htmlNewAttribute",
+ tooltiptext: "html.tip.New_Attribute",
+ command: Obj.bindFixed(this.editNewAttribute, this, node)
+ }
+ );
+
+ var attrBox = Dom.getAncestorByClass(target, "nodeAttr");
+ if (Dom.getAncestorByClass(target, "nodeAttr"))
+ {
+ var attrName = attrBox.childNodes[1].textContent;
+
+ items.push(
+ {
+ label: Locale.$STRF("EditAttribute", [attrName]),
+ tooltiptext: Locale.$STRF("html.tip.Edit_Attribute", [attrName]),
+ nol10n: true,
+ command: Obj.bindFixed(this.editAttribute, this, node, attrName)
+ },
+ {
+ label: Locale.$STRF("DeleteAttribute", [attrName]),
+ tooltiptext: Locale.$STRF("html.tip.Delete_Attribute", [attrName]),
+ nol10n: true,
+ command: Obj.bindFixed(this.deleteAttribute, this, node, attrName)
+ }
+ );
+ }
+
+ if (!(Css.nonEditableTags.hasOwnProperty(node.localName)))
+ {
+ var type;
+
+ if (Xml.isElementHTML(node) || Xml.isElementXHTML(node))
+ type = "HTML";
+ else if (Xml.isElementMathML(node))
+ type = "MathML";
+ else if (Xml.isElementSVG(node))
+ type = "SVG";
+ else if (Xml.isElementXUL(node))
+ type = "XUL";
+ else
+ type = "XML";
+
+ items.push("-",
+ {
+ label: Locale.$STRF("html.Edit_Node", [type]),
+ tooltiptext: Locale.$STRF("html.tip.Edit_Node", [type]),
+ nol10n: true,
+ command: Obj.bindFixed(this.editNode, this, node)
+ },
+ {
+ label: "DeleteElement",
+ tooltiptext: "html.Delete_Element",
+
+ // xxxsz: 'Del' needs to be translated, but therefore customizeShortcuts
+ // must be turned into a module
+ acceltext: "Del",
+ command: Obj.bindFixed(this.deleteNode, this, node),
+ disabled:(node.localName in Css.innerEditableTags)
+ });
+ }
+
+ var objectBox = Dom.getAncestorByClass(target, "nodeBox");
+ var nodeChildBox = this.ioBox.getChildObjectBox(objectBox);
+ if (nodeChildBox)
+ {
+ items.push(
+ "-",
+ {
+ label: "html.label.Expand/Contract_All",
+ tooltiptext: "html.tip.Expand/Contract_All",
+ acceltext: "*",
+ command: Obj.bind(this.toggleAll, this, node)
+ }
+ );
+ }
+ }
+ else
+ {
+ var nodeLabel = Locale.$STR("html.Node");
+ items.push(
+ "-",
+ {
+ label: Locale.$STRF("html.Edit_Node", [nodeLabel]),
+ tooltiptext: Locale.$STRF("html.tip.Edit_Node", [nodeLabel]),
+ nol10n: true,
+ command: Obj.bindFixed(this.editNode, this, node)
+ },
+ {
+ label: "DeleteNode",
+ tooltiptext: "html.Delete_Node",
+ command: Obj.bindFixed(this.deleteNode, this, node)
+ }
+ );
+ }
+
+ Firebug.HTMLModule.MutationBreakpoints.getContextMenuItems(
+ this.context, node, target, items);
+
+ return items;
+ },
+
+ showInfoTip: function(infoTip, target, x, y)
+ {
+ if (!Css.hasClass(target, "nodeValue"))
+ return;
+
+ var node = Firebug.getRepObject(target);
+ if (node && node.nodeType == Node.ELEMENT_NODE)
+ {
+ var nodeName = node.localName.toUpperCase();
+ var attribute = Dom.getAncestorByClass(target, "nodeAttr");
+ var attributeName = attribute.getElementsByClassName("nodeName").item(0).textContent;
+
+ if ((nodeName == "IMG" || nodeName == "INPUT") && attributeName == "src")
+ {
+ var url = node.src;
+
+ // This state cleared in hide()
+ if (url == this.infoTipURL)
+ return true;
+
+ this.infoTipURL = url;
+ return CSSInfoTip.populateImageInfoTip(infoTip, url);
+ }
+ }
+ },
+
+ getEditor: function(target, value)
+ {
+ if (Css.hasClass(target, "nodeName") || Css.hasClass(target, "nodeValue") ||
+ Css.hasClass(target, "nodeBracket"))
+ {
+ if (!this.attrEditor)
+ this.attrEditor = new Firebug.HTMLPanel.Editors.Attribute(this.document);
+
+ return this.attrEditor;
+ }
+ else if (Css.hasClass(target, "nodeComment") || Css.hasClass(target, "nodeCDATA"))
+ {
+ if (!this.textDataEditor)
+ this.textDataEditor = new Firebug.HTMLPanel.Editors.TextData(this.document);
+
+ return this.textDataEditor;
+ }
+ else if (Css.hasClass(target, "nodeText"))
+ {
+ if (!this.textNodeEditor)
+ this.textNodeEditor = new Firebug.HTMLPanel.Editors.TextNode(this.document);
+
+ return this.textNodeEditor;
+ }
+ },
+
+ getInspectorVars: function()
+ {
+ var vars = {};
+ for (var i=0; i<this.inspectorHistory.length; i++)
+ vars["$"+i] = this.inspectorHistory[i] || null;
+
+ return vars;
+ },
+
+ setEntityDisplay: function(event, type)
+ {
+ Options.set("entityDisplay", type);
+
+ var menuItem = event.target;
+ menuItem.setAttribute("checked", "true");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Break on Mutate
+
+ breakOnNext: function(breaking)
+ {
+ Firebug.HTMLModule.MutationBreakpoints.breakOnNext(this.context, breaking);
+ this.updateMutationBreakpointListeners();
+ },
+
+ shouldBreakOnNext: function()
+ {
+ return !!this.context.breakOnNextMutate;
+ },
+
+ getBreakOnNextTooltip: function(enabled)
+ {
+ return (enabled ? Locale.$STR("html.Disable Break On Mutate") :
+ Locale.$STR("html.Break On Mutate"));
+ }
+});
+
+// ********************************************************************************************* //
+
+var AttrTag = Firebug.HTMLPanel.AttrTag =
+ SPAN({"class": "nodeAttr editGroup"},
+ " ", SPAN({"class": "nodeName editable"}, "$attr.name"), "="",
+ SPAN({"class": "nodeValue editable"}, "$attr|getAttrValue"), """
+ );
+
+var TextTag = Firebug.HTMLPanel.TextTag =
+ SPAN({"class": "nodeText editable"},
+ FOR("char", "$object|getNodeTextGroups",
+ SPAN({"class": "$char.class $char.extra"}, "$char.str")
+ )
+ );
+
+// ********************************************************************************************* //
+
+Firebug.HTMLPanel.CompleteElement = domplate(FirebugReps.Element,
+{
+ tag:
+ DIV({"class": "nodeBox open $object|getHidden", _repObject: "$object", role : 'presentation'},
+ DIV({"class": "nodeLabel", role: "presentation"},
+ SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem', 'aria-expanded' : 'false'},
+ "<",
+ SPAN({"class": "nodeTag"}, "$object|getNodeName"),
+ FOR("attr", "$object|attrIterator", AttrTag),
+ SPAN({"class": "nodeBracket"}, ">")
+ )
+ ),
+ DIV({"class": "nodeChildBox", role :"group"},
+ FOR("child", "$object|childIterator",
+ TAG("$child|getNodeTag", {object: "$child"})
+ )
+ ),
+ DIV({"class": "nodeCloseLabel", role:"presentation"},
+ "</",
+ SPAN({"class": "nodeTag"}, "$object|getNodeName"),
+ ">"
+ )
+ ),
+
+ getNodeTag: function(node)
+ {
+ return getNodeTag(node, true);
+ },
+
+ childIterator: function(node)
+ {
+ if (node.contentDocument)
+ return [node.contentDocument.documentElement];
+
+ if (Firebug.showTextNodesWithWhitespace)
+ {
+ return Arr.cloneArray(node.childNodes);
+ }
+ else
+ {
+ var nodes = [];
+ var walker = new HTMLLib.ElementWalker();
+
+ for (var child = walker.getFirstChild(node); child; child = walker.getNextSibling(child))
+ {
+ if (child.nodeType != Node.TEXT_NODE || !HTMLLib.isWhitespaceText(child))
+ nodes.push(child);
+ }
+
+ return nodes;
+ }
+ }
+});
+
+Firebug.HTMLPanel.SoloElement = domplate(Firebug.HTMLPanel.CompleteElement,
+{
+ tag:
+ DIV({"class": "soloElement", onmousedown: "$onMouseDown"},
+ Firebug.HTMLPanel.CompleteElement.tag
+ ),
+
+ onMouseDown: function(event)
+ {
+ for (var child = event.target; child; child = child.parentNode)
+ {
+ if (child.repObject)
+ {
+ var panel = Firebug.getElementPanel(child);
+ Firebug.chrome.select(child.repObject);
+ break;
+ }
+ }
+ }
+});
+
+Firebug.HTMLPanel.Element = domplate(FirebugReps.Element,
+{
+ tag:
+ DIV({"class": "nodeBox containerNodeBox $object|getHidden", _repObject: "$object",
+ role: "presentation"},
+ DIV({"class": "nodeLabel", role: "presentation"},
+ DIV({"class": "twisty", role: "presentation"}),
+ SPAN({"class": "nodeLabelBox repTarget", role: "treeitem", "aria-expanded": "false"},
+ "<",
+ SPAN({"class": "nodeTag"}, "$object|getNodeName"),
+ FOR("attr", "$object|attrIterator", AttrTag),
+ SPAN({"class": "nodeBracket editable insertBefore"}, ">")
+ )
+ ),
+ DIV({"class": "nodeChildBox", role: "group"}), /* nodeChildBox is special signal in insideOutBox */
+ DIV({"class": "nodeCloseLabel", role: "presentation"},
+ SPAN({"class": "nodeCloseLabelBox repTarget"},
+ "</",
+ SPAN({"class": "nodeTag"}, "$object|getNodeName"),
+ ">"
+ )
+ )
+ )
+});
+
+Firebug.HTMLPanel.HTMLDocument = domplate(FirebugReps.Element,
+{
+ tag:
+ DIV({"class": "nodeBox documentNodeBox containerNodeBox",
+ _repObject: "$object", role: "presentation"},
+ DIV({"class": "nodeChildBox", role: "group"})
+ )
+});
+
+Firebug.HTMLPanel.HTMLDocType = domplate(FirebugReps.Element,
+{
+ tag:
+ DIV({"class": "nodeBox docTypeNodeBox containerNodeBox",
+ _repObject: "$object", role: "presentation"},
+ DIV({"class": "docType"},
+ "$object|getDocType"
+ )
+ ),
+
+ getDocType: function(doctype)
+ {
+ return '<!DOCTYPE ' + doctype.name + (doctype.publicId ? ' PUBLIC "' + doctype.publicId +
+ '"': '') + (doctype.systemId ? ' "' + doctype.systemId + '"' : '') + '>';
+ }
+});
+
+Firebug.HTMLPanel.HTMLHtmlElement = domplate(FirebugReps.Element,
+{
+ tag:
+ DIV({"class": "nodeBox htmlNodeBox containerNodeBox $object|getHidden",
+ _repObject: "$object", role: "presentation"},
+ DIV({"class": "nodeLabel", role: "presentation"},
+ DIV({"class": "twisty", role: "presentation"}),
+ SPAN({"class": "nodeLabelBox repTarget", role: "treeitem",
+ "aria-expanded": "false"},
+ "<",
+ SPAN({"class": "nodeTag"}, "$object|getNodeName"),
+ FOR("attr", "$object|attrIterator", AttrTag),
+ SPAN({"class": "nodeBracket editable insertBefore"}, ">")
+ )
+ ),
+ DIV({"class": "nodeChildBox", role: "group"}), /* nodeChildBox is special signal in insideOutBox */
+ DIV({"class": "nodeCloseLabel", role: "presentation"},
+ SPAN({"class": "nodeCloseLabelBox repTarget"},
+ "</",
+ SPAN({"class": "nodeTag"}, "$object|getNodeName"),
+ ">"
+ )
+ )
+ )
+});
+
+Firebug.HTMLPanel.TextElement = domplate(FirebugReps.Element,
+{
+ tag:
+ DIV({"class": "nodeBox textNodeBox $object|getHidden", _repObject: "$object", role : 'presentation'},
+ DIV({"class": "nodeLabel", role: "presentation"},
+ SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
+ "<",
+ SPAN({"class": "nodeTag"}, "$object|getNodeName"),
+ FOR("attr", "$object|attrIterator", AttrTag),
+ SPAN({"class": "nodeBracket editable insertBefore"}, ">"),
+ TextTag,
+ "</",
+ SPAN({"class": "nodeTag"}, "$object|getNodeName"),
+ ">"
+ )
+ )
+ )
+});
+
+Firebug.HTMLPanel.EmptyElement = domplate(FirebugReps.Element,
+{
+ tag:
+ DIV({"class": "nodeBox emptyNodeBox $object|getHidden", _repObject: "$object", role : 'presentation'},
+ DIV({"class": "nodeLabel", role: "presentation"},
+ SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
+ "<",
+ SPAN({"class": "nodeTag"}, "$object|getNodeName"),
+ FOR("attr", "$object|attrIterator", AttrTag),
+ SPAN({"class": "nodeBracket editable insertBefore"}, ">")
+ )
+ )
+ )
+});
+
+Firebug.HTMLPanel.XEmptyElement = domplate(FirebugReps.Element,
+{
+ tag:
+ DIV({"class": "nodeBox emptyNodeBox $object|getHidden", _repObject: "$object", role : 'presentation'},
+ DIV({"class": "nodeLabel", role: "presentation"},
+ SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
+ "<",
+ SPAN({"class": "nodeTag"}, "$object|getNodeName"),
+ FOR("attr", "$object|attrIterator", AttrTag),
+ SPAN({"class": "nodeBracket editable insertBefore"}, "/>")
+ )
+ )
+ )
+});
+
+Firebug.HTMLPanel.AttrNode = domplate(FirebugReps.Element,
+{
+ tag: AttrTag
+});
+
+Firebug.HTMLPanel.TextNode = domplate(FirebugReps.Element,
+{
+ tag:
+ DIV({"class": "nodeBox", _repObject: "$object", role : 'presentation'},
+ TextTag
+ )
+});
+
+Firebug.HTMLPanel.CDATANode = domplate(FirebugReps.Element,
+{
+ tag:
+ DIV({"class": "nodeBox", _repObject: "$object", role : 'presentation'},
+ "<![CDATA[",
+ SPAN({"class": "nodeText nodeCDATA editable"}, "$object.nodeValue"),
+ "]]>"
+ )
+});
+
+Firebug.HTMLPanel.CommentNode = domplate(FirebugReps.Element,
+{
+ tag:
+ DIV({"class": "nodeBox nodeComment", _repObject: "$object", role : 'presentation'},
+ "<!--",
+ SPAN({"class": "nodeComment editable"}, "$object.nodeValue"),
+ "-->"
+ )
+});
+
+// ********************************************************************************************* //
+// TextDataEditor
+
+/**
+ * TextDataEditor deals with text of comments and cdata nodes
+ */
+function TextDataEditor(doc)
+{
+ this.initializeInline(doc);
+}
+
+TextDataEditor.prototype = domplate(Firebug.InlineEditor.prototype,
+{
+ saveEdit: function(target, value, previousValue)
+ {
+ var node = Firebug.getRepObject(target);
+ if (!node)
+ return;
+
+ target.data = value;
+ node.data = value;
+ }
+});
+
+// ********************************************************************************************* //
+// TextNodeEditor
+
+/**
+ * TextNodeEditor deals with text nodes that do and do not have sibling elements. If
+ * there are no sibling elements, the parent is known as a TextElement. In other cases
+ * we keep track of their position via a range (this is in part because as people type
+ * html, the range will keep track of the text nodes and elements that the user
+ * is creating as they type, and this range could be in the middle of the parent
+ * elements children).
+ */
+function TextNodeEditor(doc)
+{
+ this.initializeInline(doc);
+}
+
+TextNodeEditor.prototype = domplate(Firebug.InlineEditor.prototype,
+{
+ getInitialValue: function(target, value)
+ {
+ // The text displayed within the HTML panel can be shortened if the 'Show Full Text'
+ // option is false, so get the original textContent from the associated page element
+ // (issue 2183).
+ var repObject = Firebug.getRepObject(target);
+ if (repObject)
+ return repObject.textContent;
+
+ return value;
+ },
+
+ beginEditing: function(target, value)
+ {
+ var node = Firebug.getRepObject(target);
+ if (!node || node instanceof window.Element)
+ return;
+
+ var document = node.ownerDocument;
+ this.range = document.createRange();
+ this.range.setStartBefore(node);
+ this.range.setEndAfter(node);
+ },
+
+ endEditing: function(target, value, cancel)
+ {
+ if (this.range)
+ {
+ this.range.detach();
+ delete this.range;
+ }
+
+ // Remove empty groups by default
+ return true;
+ },
+
+ saveEdit: function(target, value, previousValue)
+ {
+ var node = Firebug.getRepObject(target);
+ if (!node)
+ return;
+
+ value = Str.unescapeForTextNode(value || "");
+ target.textContent = value;
+
+ if (node instanceof window.Element)
+ {
+ if (Xml.isElementMathML(node) || Xml.isElementSVG(node))
+ node.textContent = value;
+ else
+ node.innerHTML = value;
+ }
+ else
+ {
+ try
+ {
+ var documentFragment = this.range.createContextualFragment(value);
+ var cnl = documentFragment.childNodes.length;
+ this.range.deleteContents();
+ this.range.insertNode(documentFragment);
+ var r = this.range, sc = r.startContainer, so = r.startOffset;
+ this.range.setEnd(sc,so+cnl);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("TextNodeEditor.saveEdit; EXCEPTION " + e, e);
+ }
+ }
+ }
+});
+
+// ********************************************************************************************* //
+// AttributeEditor
+
+function AttributeEditor(doc)
+{
+ this.initializeInline(doc);
+}
+
+AttributeEditor.prototype = domplate(Firebug.InlineEditor.prototype,
+{
+ saveEdit: function(target, value, previousValue)
+ {
+ var element = Firebug.getRepObject(target);
+ if (!element)
+ return;
+
+ // XXXstr unescape value
+ target.textContent = value;
+
+ if (Css.hasClass(target, "nodeName"))
+ {
+ if (value != previousValue)
+ element.removeAttribute(previousValue);
+
+ if (value)
+ {
+ var attrValue = Dom.getNextByClass(target, "nodeValue").textContent;
+ element.setAttribute(value, attrValue);
+ }
+ else
+ {
+ element.removeAttribute(value);
+ }
+ }
+ else if (Css.hasClass(target, "nodeValue"))
+ {
+ var attrName = Dom.getPreviousByClass(target, "nodeName").textContent;
+ element.setAttribute(attrName, value);
+ }
+
+ var panel = Firebug.getElementPanel(target);
+ Events.dispatch(Firebug.uiListeners, "onObjectChanged", [element, panel]);
+
+ //this.panel.markChange();
+ },
+
+ advanceToNext: function(target, charCode)
+ {
+ if (charCode == 61 /* '=' */ && Css.hasClass(target, "nodeName"))
+ {
+ return true;
+ }
+ else if ((charCode == 34 /* '"' */ || charCode == 39 /* ''' */) &&
+ Css.hasClass(target, "nodeValue"))
+ {
+ var nonRestrictiveAttributes =
+ [
+ "onabort",
+ "onblur",
+ "onchange",
+ "onclick",
+ "ondblclick",
+ "onerror",
+ "onfocus",
+ "onkeydown",
+ "onkeypress",
+ "onkeyup",
+ "onload",
+ "onmousedown",
+ "onmousemove",
+ "onmouseout",
+ "onmouseover",
+ "onmouseup",
+ "onreset",
+ "onselect",
+ "onsubmit",
+ "onunload",
+ "title",
+ "alt",
+ "style"
+ ];
+
+ var attrName = Dom.getPreviousByClass(target, "nodeName").textContent;
+
+ // This should cover most of the cases where quotes are allowed inside the value
+ // See issue 4542
+ for (var i = 0; i < nonRestrictiveAttributes.length; i++)
+ {
+ if (attrName == nonRestrictiveAttributes[i])
+ return false;
+ }
+ return true;
+ }
+ },
+
+ insertNewRow: function(target, insertWhere)
+ {
+ var emptyAttr = {name: "", value: ""};
+ var sibling = insertWhere == "before" ? target.previousSibling : target;
+ return AttrTag.insertAfter({attr: emptyAttr}, sibling);
+ },
+
+ getInitialValue: function(target, value)
+ {
+ if (value == "")
+ return value;
+
+ var element = Firebug.getRepObject(target);
+ if (element && element instanceof window.Element)
+ {
+ // If object that was clicked to edit was
+ // attribute value, not attribute name.
+ if (Css.hasClass(target, "nodeValue"))
+ {
+ var attributeName = Dom.getPreviousByClass(target, "nodeName").textContent;
+ return element.getAttribute(attributeName);
+ }
+ }
+ return value;
+ }
+});
+
+// ********************************************************************************************* //
+// HTMLEditor
+
+function HTMLEditor(doc)
+{
+ this.box = this.tag.replace({}, doc, this);
+ this.input = this.box.firstChild;
+ this.multiLine = true;
+ this.tabNavigation = false;
+ this.arrowCompletion = false;
+}
+
+HTMLEditor.prototype = domplate(Firebug.BaseEditor,
+{
+ tag:
+ DIV(
+ TEXTAREA({"class": "htmlEditor fullPanelEditor", oninput: "$onInput"})
+ ),
+
+ getValue: function()
+ {
+ return this.input.value;
+ },
+
+ setValue: function(value)
+ {
+ return this.input.value = value;
+ },
+
+ show: function(target, panel, value, textSize)
+ {
+ this.target = target;
+ this.panel = panel;
+ var el = target.repObject;
+ if (this.innerEditMode)
+ {
+ this.editingParent = el;
+ }
+ else
+ {
+ this.editingRange = el.ownerDocument.createRange();
+ this.editingRange.selectNode(el);
+ this.originalLocalName = el.localName;
+ }
+
+ this.panel.panelNode.appendChild(this.box);
+
+ this.input.value = value;
+ this.input.focus();
+
+ var command = Firebug.chrome.$("cmd_firebug_toggleHTMLEditing");
+ command.setAttribute("checked", true);
+ },
+
+ hide: function()
+ {
+ var command = Firebug.chrome.$("cmd_firebug_toggleHTMLEditing");
+ command.setAttribute("checked", false);
+
+ this.panel.panelNode.removeChild(this.box);
+
+ delete this.editingParent;
+ delete this.editingRange;
+ delete this.originalLocalName;
+ delete this.target;
+ delete this.panel;
+ },
+
+ getNewSelection: function(fragment)
+ {
+ // Get a new element to select in the HTML panel. An element with the
+ // same localName is preferred, or just any element. If there is none,
+ // we choose the parent instead.
+ var found = null;
+ var nodes = fragment.childNodes;
+ for (var i = 0; i < nodes.length; ++i)
+ {
+ var n = nodes[i];
+ if (n.nodeType === Node.ELEMENT_NODE)
+ {
+ if (n.localName === this.originalLocalName)
+ return n;
+ if (!found)
+ found = n;
+ }
+ }
+ if (found)
+ return found;
+ return this.editingRange.startContainer;
+ },
+
+ saveEdit: function(target, value, previousValue)
+ {
+ if (this.innerEditMode)
+ {
+ try
+ {
+ // xxxHonza: Catch "can't access dead object" exception.
+ this.editingParent.innerHTML = value;
+ }
+ catch (e)
+ {
+ FBTrace.sysout("htmlPanel.saveEdit; EXCEPTION " + e, e);
+ }
+ }
+ else
+ {
+ try
+ {
+ var range = this.editingRange;
+ var fragment = range.createContextualFragment(value);
+ var sel = this.getNewSelection(fragment);
+
+ var cnl = fragment.childNodes.length;
+ range.deleteContents();
+ range.insertNode(fragment);
+ var sc = range.startContainer, so = range.startOffset;
+ range.setEnd(sc, so + cnl);
+
+ this.panel.select(sel, false, true);
+
+ // Clear and update the status path, to make sure it doesn't
+ // show elements no longer in the DOM.
+ Firebug.chrome.clearStatusPath();
+ Firebug.chrome.syncStatusPath();
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("HTMLEditor.saveEdit; EXCEPTION " + e, e);
+ }
+ }
+ },
+
+ endEditing: function()
+ {
+ //this.panel.markChange();
+ this.panel.setEditEnableState(true);
+ return true;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onInput: function()
+ {
+ Firebug.Editor.update();
+ }
+});
+
+// ********************************************************************************************* //
+// Editors
+
+Firebug.HTMLPanel.Editors = {
+ html : HTMLEditor,
+ Attribute : AttributeEditor,
+ TextNode: TextNodeEditor,
+ TextData: TextDataEditor
+};
+
+// ********************************************************************************************* //
+// Local Helpers
+
+function getEmptyElementTag(node)
+{
+ var isXhtml= Xml.isElementXHTML(node);
+ if (isXhtml)
+ return Firebug.HTMLPanel.XEmptyElement.tag;
+ else
+ return Firebug.HTMLPanel.EmptyElement.tag;
+}
+
+function getNodeTag(node, expandAll)
+{
+ if (node instanceof window.Element)
+ {
+ if (node instanceof window.HTMLHtmlElement && node.ownerDocument && node.ownerDocument.doctype)
+ return Firebug.HTMLPanel.HTMLHtmlElement.tag;
+ else if (node instanceof window.HTMLAppletElement)
+ return getEmptyElementTag(node);
+ else if (Firebug.shouldIgnore(node))
+ return null;
+ else if (HTMLLib.isContainerElement(node))
+ return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
+ else if (HTMLLib.isEmptyElement(node))
+ return getEmptyElementTag(node);
+ else if (Firebug.showCommentNodes && HTMLLib.hasCommentChildren(node))
+ return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
+ else if (HTMLLib.hasNoElementChildren(node))
+ return Firebug.HTMLPanel.TextElement.tag;
+ else
+ return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
+ }
+ else if (node instanceof window.Text)
+ return Firebug.HTMLPanel.TextNode.tag;
+ else if (node instanceof window.CDATASection)
+ return Firebug.HTMLPanel.CDATANode.tag;
+ else if (node instanceof window.Comment && (Firebug.showCommentNodes || expandAll))
+ return Firebug.HTMLPanel.CommentNode.tag;
+ else if (node instanceof Firebug.HTMLModule.SourceText)
+ return FirebugReps.SourceText.tag;
+ else if (node instanceof window.Document)
+ return Firebug.HTMLPanel.HTMLDocument.tag;
+ else if (node instanceof window.DocumentType)
+ return Firebug.HTMLPanel.HTMLDocType.tag;
+ else
+ return FirebugReps.Nada.tag;
+}
+
+function getNodeBoxTag(nodeBox)
+{
+ var re = /([^\s]+)NodeBox/;
+ var m = re.exec(nodeBox.className);
+ if (!m)
+ return null;
+
+ var nodeBoxType = m[1];
+ if (nodeBoxType == "container")
+ return Firebug.HTMLPanel.Element.tag;
+ else if (nodeBoxType == "text")
+ return Firebug.HTMLPanel.TextElement.tag;
+ else if (nodeBoxType == "empty")
+ return Firebug.HTMLPanel.EmptyElement.tag;
+}
+
+// ********************************************************************************************* //
+
+Firebug.HTMLModule.SourceText = function(lines, owner)
+{
+ this.lines = lines;
+ this.owner = owner;
+};
+
+Firebug.HTMLModule.SourceText.getLineAsHTML = function(lineNo)
+{
+ return Str.escapeForSourceLine(this.lines[lineNo-1]);
+};
+
+// ********************************************************************************************* //
+// Mutation Breakpoints
+
+/**
+ * @class Represents {@link Firebug.Debugger} listener. This listener is reponsible for
+ * providing a list of mutation-breakpoints into the Breakpoints side-panel.
+ */
+Firebug.HTMLModule.DebuggerListener =
+{
+ getBreakpoints: function(context, groups)
+ {
+ if (!context.mutationBreakpoints.isEmpty())
+ groups.push(context.mutationBreakpoints);
+ }
+};
+
+Firebug.HTMLModule.MutationBreakpoints =
+{
+ breakOnNext: function(context, breaking)
+ {
+ context.breakOnNextMutate = breaking;
+ },
+
+ breakOnNextMutate: function(event, context, type)
+ {
+ if (!context.breakOnNextMutate)
+ return false;
+
+ // Ignore changes in ignored branches
+ if (isAncestorIgnored(event.target))
+ return false;
+
+ context.breakOnNextMutate = false;
+
+ this.breakWithCause(event, context, type);
+ },
+
+ breakWithCause: function(event, context, type)
+ {
+ var changeLabel = Firebug.HTMLModule.BreakpointRep.getChangeLabel({type: type});
+ context.breakingCause = {
+ title: Locale.$STR("html.Break On Mutate"),
+ message: changeLabel,
+ type: event.type,
+ target: event.target,
+ relatedNode: event.relatedNode, // http://www.w3.org/TR/DOM-Level-2-Events/events.html
+ prevValue: event.prevValue,
+ newValue: event.newValue,
+ attrName: event.attrName,
+ attrChange: event.attrChange,
+ };
+
+ Firebug.Breakpoint.breakNow(context.getPanel("html", true));
+ return true;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Mutation event handlers.
+
+ onMutateAttr: function(event, context)
+ {
+ if (this.breakOnNextMutate(event, context, BP_BREAKONATTRCHANGE))
+ return;
+
+ var breakpoints = context.mutationBreakpoints;
+ var self = this;
+ breakpoints.enumerateBreakpoints(function(bp) {
+ if (bp.checked && bp.node == event.target && bp.type == BP_BREAKONATTRCHANGE) {
+ self.breakWithCause(event, context, BP_BREAKONATTRCHANGE);
+ return true;
+ }
+ });
+ },
+
+ onMutateText: function(event, context)
+ {
+ if (this.breakOnNextMutate(event, context, BP_BREAKONTEXT))
+ return;
+ },
+
+ onMutateNode: function(event, context)
+ {
+ var node = event.target;
+ var removal = event.type == "DOMNodeRemoved";
+
+ if (this.breakOnNextMutate(event, context, removal ?
+ BP_BREAKONREMOVE : BP_BREAKONCHILDCHANGE))
+ {
+ return;
+ }
+
+ var breakpoints = context.mutationBreakpoints;
+ var breaked = false;
+
+ if (removal)
+ {
+ var self = this;
+ breaked = breakpoints.enumerateBreakpoints(function(bp) {
+ if (bp.checked && bp.node == node && bp.type == BP_BREAKONREMOVE) {
+ self.breakWithCause(event, context, BP_BREAKONREMOVE);
+ return true;
+ }
+ });
+ }
+
+ if (!breaked)
+ {
+ // Collect all parents of the mutated node.
+ var parents = [];
+ for (var parent = node.parentNode; parent; parent = parent.parentNode)
+ parents.push(parent);
+
+ // Iterate over all parents and see if some of them has a breakpoint.
+ var self = this;
+ breakpoints.enumerateBreakpoints(function(bp)
+ {
+ for (var i=0; i<parents.length; i++)
+ {
+ if (bp.checked && bp.node == parents[i] && bp.type == BP_BREAKONCHILDCHANGE)
+ {
+ self.breakWithCause(event, context, BP_BREAKONCHILDCHANGE);
+ return true;
+ }
+ }
+ });
+ }
+
+ if (removal)
+ {
+ // Remove all breakpoints associated with removed node.
+ var invalidate = false;
+ breakpoints.enumerateBreakpoints(function(bp)
+ {
+ if (bp.node == node)
+ {
+ breakpoints.removeBreakpoint(bp);
+ invalidate = true;
+ }
+ });
+
+ if (invalidate)
+ context.invalidatePanels("breakpoints");
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Context menu items
+
+ getContextMenuItems: function(context, node, target, items)
+ {
+ if (!(node && node.nodeType == Node.ELEMENT_NODE))
+ return;
+
+ var breakpoints = context.mutationBreakpoints;
+
+ var attrBox = Dom.getAncestorByClass(target, "nodeAttr");
+ if (Dom.getAncestorByClass(target, "nodeAttr"))
+ {
+ }
+
+ if (!(Css.nonEditableTags.hasOwnProperty(node.localName)))
+ {
+ items.push(
+ "-",
+ {
+ label: "html.label.Break_On_Attribute_Change",
+ tooltiptext: "html.tip.Break_On_Attribute_Change",
+ type: "checkbox",
+ checked: breakpoints.findBreakpoint(node, BP_BREAKONATTRCHANGE),
+ command: Obj.bindFixed(this.onModifyBreakpoint, this, context, node,
+ BP_BREAKONATTRCHANGE)
+ },
+ {
+ label: "html.label.Break_On_Child_Addition_or_Removal",
+ tooltiptext: "html.tip.Break_On_Child_Addition_or_Removal",
+ type: "checkbox",
+ checked: breakpoints.findBreakpoint(node, BP_BREAKONCHILDCHANGE),
+ command: Obj.bindFixed(this.onModifyBreakpoint, this, context, node,
+ BP_BREAKONCHILDCHANGE)
+ },
+ {
+ label: "html.label.Break_On_Element_Removal",
+ tooltiptext: "html.tip.Break_On_Element_Removal",
+ type: "checkbox",
+ checked: breakpoints.findBreakpoint(node, BP_BREAKONREMOVE),
+ command: Obj.bindFixed(this.onModifyBreakpoint, this, context, node,
+ BP_BREAKONREMOVE)
+ }
+ );
+ }
+ },
+
+ onModifyBreakpoint: function(context, node, type)
+ {
+ var xpath = Xpath.getElementXPath(node);
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("html.onModifyBreakpoint " + xpath );
+
+ var breakpoints = context.mutationBreakpoints;
+ var bp = breakpoints.findBreakpoint(node, type);
+
+ // Remove an existing or create new breakpoint.
+ if (bp)
+ breakpoints.removeBreakpoint(bp);
+ else
+ breakpoints.addBreakpoint(node, type);
+
+ Events.dispatch(Firebug.HTMLModule.fbListeners, "onModifyBreakpoint",
+ [context, xpath, type]);
+ }
+};
+
+Firebug.HTMLModule.Breakpoint = function(node, type)
+{
+ this.node = node;
+ this.xpath = Xpath.getElementXPath(node);
+ this.checked = true;
+ this.type = type;
+};
+
+Firebug.HTMLModule.BreakpointRep = domplate(Firebug.Rep,
+{
+ inspectable: false,
+
+ tag:
+ DIV({"class": "breakpointRow focusRow", $disabled: "$bp|isDisabled", _repObject: "$bp",
+ role: "option", "aria-checked": "$bp.checked"},
+ DIV({"class": "breakpointBlockHead"},
+ INPUT({"class": "breakpointCheckbox", type: "checkbox",
+ _checked: "$bp.checked", tabindex : "-1", onclick: "$onEnable"}),
+ TAG("$bp.node|getNodeTag", {object: "$bp.node"}),
+ DIV({"class": "breakpointMutationType"}, "$bp|getChangeLabel"),
+ SPAN({"class": "closeButton", onclick: "$onRemove"})
+ ),
+ DIV({"class": "breakpointCode"},
+ TAG("$bp.node|getSourceLine", {object: "$bp.node"})
+ )
+ ),
+
+ getNodeTag: function(node)
+ {
+ var rep = Firebug.getRep(node, Firebug.currentContext);
+ return rep.shortTag ? rep.shortTag : rep.tag;
+ },
+
+ getSourceLine: function(node)
+ {
+ return getNodeTag(node, false);
+ },
+
+ getChangeLabel: function(bp)
+ {
+ switch (bp.type)
+ {
+ case BP_BREAKONATTRCHANGE:
+ return Locale.$STR("html.label.Break On Attribute Change");
+ case BP_BREAKONCHILDCHANGE:
+ return Locale.$STR("html.label.Break On Child Addition or Removal");
+ case BP_BREAKONREMOVE:
+ return Locale.$STR("html.label.Break On Element Removal");
+ case BP_BREAKONTEXT:
+ return Locale.$STR("html.label.Break On Text Change");
+ }
+
+ return "";
+ },
+
+ isDisabled: function(bp)
+ {
+ return !bp.checked;
+ },
+
+ onRemove: function(event)
+ {
+ Events.cancelEvent(event);
+
+ var bpPanel = Firebug.getElementPanel(event.target);
+ var context = bpPanel.context;
+
+ if (Css.hasClass(event.target, "closeButton"))
+ {
+ // Remove from list of breakpoints.
+ var row = Dom.getAncestorByClass(event.target, "breakpointRow");
+ context.mutationBreakpoints.removeBreakpoint(row.repObject);
+
+ bpPanel.refresh();
+ }
+ },
+
+ onEnable: function(event)
+ {
+ var checkBox = event.target;
+ var bpRow = Dom.getAncestorByClass(checkBox, "breakpointRow");
+
+ if (checkBox.checked)
+ {
+ Css.removeClass(bpRow, "disabled");
+ bpRow.setAttribute("aria-checked", "true");
+ }
+ else
+ {
+ Css.setClass(bpRow, "disabled");
+ bpRow.setAttribute("aria-checked", "false");
+ }
+
+ var bp = bpRow.repObject;
+ bp.checked = checkBox.checked;
+
+ var bpPanel = Firebug.getElementPanel(event.target);
+ var context = bpPanel.context;
+
+ context.mutationBreakpoints.updateListeners();
+ },
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof Firebug.HTMLModule.Breakpoint;
+ }
+});
+
+// ********************************************************************************************* //
+
+function MutationBreakpointGroup(context)
+{
+ this.breakpoints = [];
+ this.context = context;
+}
+
+MutationBreakpointGroup.prototype = Obj.extend(new Firebug.Breakpoint.BreakpointGroup(),
+{
+ name: "mutationBreakpoints",
+ title: Locale.$STR("html.label.HTML Breakpoints"),
+
+ addBreakpoint: function(node, type)
+ {
+ this.breakpoints.push(new Firebug.HTMLModule.Breakpoint(node, type));
+ this.updateListeners();
+ },
+
+ matchBreakpoint: function(bp, args)
+ {
+ var node = args[0];
+ var type = args[1];
+ return (bp.node == node) && (!bp.type || bp.type == type);
+ },
+
+ removeBreakpoint: function(bp)
+ {
+ Arr.remove(this.breakpoints, bp);
+ this.updateListeners();
+ },
+
+ hasEnabledBreakpoints: function()
+ {
+ return this.breakpoints.some(function(bp)
+ {
+ return bp.checked;
+ });
+ },
+
+ updateListeners: function()
+ {
+ var htmlPanel = this.context.getPanel("html");
+ htmlPanel.updateMutationBreakpointListeners();
+ },
+
+ // Persistence
+ load: function(context)
+ {
+ var panelState = Persist.getPersistedState(context, "html");
+ if (panelState.breakpoints)
+ this.breakpoints = panelState.breakpoints;
+
+ this.enumerateBreakpoints(function(bp)
+ {
+ var elts = Xpath.getElementsByXPath(context.window.document, bp.xpath);
+ bp.node = elts && elts.length ? elts[0] : null;
+ });
+
+ this.updateListeners();
+ },
+
+ store: function(context)
+ {
+ this.enumerateBreakpoints(function(bp)
+ {
+ bp.node = null;
+ });
+
+ var panelState = Persist.getPersistedState(context, "html");
+ panelState.breakpoints = this.breakpoints;
+ },
+});
+
+function isAncestorIgnored(node)
+{
+ for (var parent = node; parent; parent = parent.parentNode)
+ {
+ if (Firebug.shouldIgnore(parent))
+ return true;
+ }
+
+ return false;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(Firebug.HTMLPanel);
+Firebug.registerModule(Firebug.HTMLModule);
+Firebug.registerRep(Firebug.HTMLModule.BreakpointRep);
+
+return Firebug.HTMLModule;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/html/insideOutBox.js b/content/firebug/html/insideOutBox.js
index be3cb13..ed3e6b2 100644
--- a/content/firebug/html/insideOutBox.js
+++ b/content/firebug/html/insideOutBox.js
@@ -1,734 +1,734 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/events",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/xml",
-],
-function(Obj, Firebug, Events, Css, Dom, Xml) {
-
-// ************************************************************************************************
-
-/**
- * View interface used to populate an InsideOutBox object.
- *
- * All views must implement this interface (directly or via duck typing).
- */
-var InsideOutBoxView = {
- /**
- * Retrieves the parent object for a given child object.
- */
- getParentObject: function(child) {},
-
- /**
- * Retrieves a given child node.
- *
- * If both index and previousSibling are passed, the implementation
- * may assume that previousSibling will be the return for getChildObject
- * with index-1.
- */
- getChildObject: function(parent, index, previousSibling) {},
-
- /**
- * Renders the HTML representation of the object. Should return an HTML
- * object which will be displayed to the user.
- */
- createObjectBox: function(object, isRoot) {}
-};
-
-/**
- * Creates a tree based on objects provided by a separate "view" object.
- *
- * Construction uses an "inside-out" algorithm, meaning that the view's job is first
- * to tell us the ancestry of each object, and secondarily its descendants.
- */
-Firebug.InsideOutBox = function(view, box)
-{
- this.view = view;
- this.box = box;
-
- this.rootObject = null;
-
- this.rootObjectBox = null;
- this.selectedObjectBox = null;
- this.highlightedObjectBox = null;
-
- this.onMouseDown = Obj.bind(this.onMouseDown, this);
- Events.addEventListener(this.box, "mousedown", this.onMouseDown, false);
-};
-
-Firebug.InsideOutBox.prototype =
-{
- destroy: function()
- {
- Events.removeEventListener(this.box, "mousedown", this.onMouseDown, false);
- },
-
- highlight: function(object)
- {
- var objectBox = this.createObjectBox(object);
- this.highlightObjectBox(objectBox);
- return objectBox;
- },
-
- openObject: function(object)
- {
- var firstChild = this.view.getChildObject(object, 0);
- if (firstChild)
- object = firstChild;
-
- var objectBox = this.createObjectBox(object);
- this.openObjectBox(objectBox);
- return objectBox;
- },
-
- openToObject: function(object)
- {
- var objectBox = this.createObjectBox(object);
- this.openObjectBox(objectBox);
- return objectBox;
- },
-
- select: function(object, makeBoxVisible, forceOpen, noScrollIntoView)
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("insideOutBox.select object:"+object, object);
-
- var objectBox = this.createObjectBox(object);
- this.selectObjectBox(objectBox, forceOpen);
-
- if (makeBoxVisible)
- {
- this.openObjectBox(objectBox);
- if (!noScrollIntoView)
- Dom.scrollIntoCenterView(objectBox, this.box);
- }
-
- return objectBox;
- },
-
- toggleObject: function(object, all, exceptions)
- {
- var objectBox = this.createObjectBox(object);
- if (!objectBox)
- return;
-
- if (Css.hasClass(objectBox, "open"))
- this.contractObjectBox(objectBox, all);
- else
- this.expandObjectBox(objectBox, all, exceptions);
- },
-
- expandObject: function(object, expandAll)
- {
- var objectBox = this.createObjectBox(object);
- if (objectBox)
- this.expandObjectBox(objectBox, expandAll);
- },
-
- contractObject: function(object, contractAll)
- {
- var objectBox = this.createObjectBox(object);
- if (objectBox)
- this.contractObjectBox(objectBox, contractAll);
- },
-
- highlightObjectBox: function(objectBox)
- {
- if (this.highlightedObjectBox)
- {
- Css.removeClass(this.highlightedObjectBox, "highlighted");
-
- var highlightedBox = this.getParentObjectBox(this.highlightedObjectBox);
- for (; highlightedBox; highlightedBox = this.getParentObjectBox(highlightedBox))
- Css.removeClass(highlightedBox, "highlightOpen");
- }
-
- this.highlightedObjectBox = objectBox;
-
- if (objectBox)
- {
- Css.setClass(objectBox, "highlighted");
-
- var highlightedBox = this.getParentObjectBox(objectBox);
- for (; highlightedBox; highlightedBox = this.getParentObjectBox(highlightedBox))
- Css.setClass(highlightedBox, "highlightOpen");
-
- Dom.scrollIntoCenterView(objectBox, this.box);
- }
- },
-
- selectObjectBox: function(objectBox, forceOpen)
- {
- var panel = Firebug.getElementPanel(objectBox);
-
- if (!panel)
- {
- if (FBTrace.DBG_ERRORS && FBTrace.DBG_HTML)
- FBTrace.sysout("selectObjectBox no panel for " + objectBox, objectBox);
- return;
- }
-
- var isSelected = this.selectedObjectBox && objectBox == this.selectedObjectBox;
- if (!isSelected)
- {
- Css.removeClass(this.selectedObjectBox, "selected");
- Events.dispatch(panel.fbListeners, "onObjectBoxUnselected", [this.selectedObjectBox]);
- this.selectedObjectBox = objectBox;
-
- if (objectBox)
- {
- Css.setClass(objectBox, "selected");
-
- // Force it open the first time it is selected
- if (forceOpen)
- this.toggleObjectBox(objectBox, true);
- }
- }
- Events.dispatch(panel.fbListeners, "onObjectBoxSelected", [objectBox]);
- },
-
- openObjectBox: function(objectBox)
- {
- if (objectBox)
- {
- // Set all of the node's ancestors to be permanently open
- var parentBox = this.getParentObjectBox(objectBox);
- var labelBox;
- for (; parentBox; parentBox = this.getParentObjectBox(parentBox))
- {
- Css.setClass(parentBox, "open");
- labelBox = parentBox.getElementsByClassName("nodeLabelBox").item(0);
- if (labelBox)
- labelBox.setAttribute("aria-expanded", "true");
- }
- }
- },
-
- expandObjectBox: function(objectBox, expandAll, exceptions)
- {
- var nodeChildBox = this.getChildObjectBox(objectBox);
- if (!nodeChildBox)
- return;
-
- if (!objectBox.populated)
- {
- var firstChild = this.view.getChildObject(objectBox.repObject, 0);
- this.populateChildBox(firstChild, nodeChildBox);
- }
-
- var labelBox = objectBox.getElementsByClassName("nodeLabelBox").item(0);
- if (labelBox)
- labelBox.setAttribute("aria-expanded", "true");
- Css.setClass(objectBox, "open");
-
- // Recursively expand all child boxes
- if (expandAll)
- {
- for (var child = nodeChildBox.firstChild; child; child = child.nextSibling)
- {
- if (exceptions && child.repObject)
- {
- var shouldBeExpanded = true;
- var localName = child.repObject.localName;
- localName = localName ? localName.toLowerCase() : "";
-
- for (var i=0; i<exceptions.length; i++)
- {
- if (localName == exceptions[i] &&
- (Xml.isElementHTML(child.repObject) || Xml.isElementXHTML(child.repObject)))
- {
- shouldBeExpanded = false;
- break;
- }
- }
- if (!shouldBeExpanded)
- continue;
- }
-
- if (Css.hasClass(child, "containerNodeBox"))
- this.expandObjectBox(child, expandAll, exceptions);
- }
- }
- },
-
- contractObjectBox: function(objectBox, contractAll)
- {
- Css.removeClass(objectBox, "open");
-
- var nodeLabel = objectBox.getElementsByClassName("nodeLabel").item(0);
- var labelBox = nodeLabel.getElementsByClassName('nodeLabelBox').item(0);
- if (labelBox)
- labelBox.setAttribute("aria-expanded", "false");
-
- if (contractAll)
- {
- // Recursively contract all child boxes
- var nodeChildBox = this.getChildObjectBox(objectBox);
- if (!nodeChildBox)
- return;
-
- for (var child = nodeChildBox.firstChild; child; child = child.nextSibling)
- {
- if (Css.hasClass(child, "containerNodeBox") && Css.hasClass(child, "open"))
- this.contractObjectBox(child, contractAll);
- }
- }
- },
-
- toggleObjectBox: function(objectBox, forceOpen)
- {
- var isOpen = Css.hasClass(objectBox, "open");
- var nodeLabel = objectBox.getElementsByClassName("nodeLabel").item(0);
- var labelBox = nodeLabel.getElementsByClassName('nodeLabelBox').item(0);
- if (labelBox)
- labelBox.setAttribute("aria-expanded", isOpen);
-
- if (!forceOpen && isOpen)
- this.contractObjectBox(objectBox);
- else if (!isOpen)
- this.expandObjectBox(objectBox);
- },
-
- getNextObjectBox: function(objectBox)
- {
- return Dom.findNext(objectBox, isVisibleTarget, false, this.box);
- },
-
- getPreviousObjectBox: function(objectBox)
- {
- return Dom.findPrevious(objectBox, isVisibleTarget, true, this.box);
- },
-
- getNextSiblingObjectBox: function(objectBox)
- {
- if (!objectBox)
- return null;
- return Dom.findNext(objectBox, isVisibleTarget, true, objectBox.parentNode);
- },
-
- /**
- * Creates all of the boxes for an object, its ancestors, and siblings.
- */
- createObjectBox: function(object)
- {
- if (!object)
- return null;
-
- this.rootObject = this.getRootNode(object);
-
- // Get or create all of the boxes for the target and its ancestors
- var objectBox = this.createObjectBoxes(object, this.rootObject);
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("----insideOutBox.createObjectBox: createObjectBoxes(object="+
- formatNode(object)+", rootObject="+formatNode(this.rootObject)+") ="+
- formatNode(objectBox), objectBox);
-
- if (!objectBox) // we found an object outside of the navigatible tree
- return;
- else if (object == this.rootObject)
- return objectBox;
- else
- return this.populateChildBox(object, objectBox.parentNode);
- },
-
- /**
- * Creates all of the boxes for an object, its ancestors, and siblings up to a root.
- */
- createObjectBoxes: function(object, rootObject)
- {
- if (!object)
- return null;
-
- if (object == rootObject)
- {
- if (!this.rootObjectBox || this.rootObjectBox.repObject != rootObject)
- {
- if (this.rootObjectBox)
- {
- try
- {
- this.box.removeChild(this.rootObjectBox);
- }
- catch (exc)
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout(" this.box.removeChild(this.rootObjectBox) FAILS "+
- this.box+" must not contain "+this.rootObjectBox);
- }
- }
-
- this.highlightedObjectBox = null;
- this.selectedObjectBox = null;
- this.rootObjectBox = this.view.createObjectBox(object, true);
- this.box.appendChild(this.rootObjectBox);
- }
-
- if (FBTrace.DBG_HTML)
- {
- FBTrace.sysout("insideOutBox.createObjectBoxes("+formatNode(object)+","+
- formatNode(rootObject)+") rootObjectBox: "+this.rootObjectBox, object);
- }
-
- if ((FBTrace.DBG_HTML || FBTrace.DBG_ERRORS) && !this.rootObjectBox.parentNode)
- FBTrace.sysout("insideOutBox.createObjectBoxes; ERROR - null parent node. "+
- "object: " + formatNode(object)+", rootObjectBox: "+
- formatObjectBox(this.rootObjectBox), object);
-
- return this.rootObjectBox;
- }
- else
- {
- var parentNode = this.view.getParentObject(object);
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("insideOutBox.createObjectBoxes createObjectBoxes recursing " +
- "with parentNode "+formatNode(parentNode)+" from object "+formatNode(object));
-
- // recurse towards parent, eventually returning rootObjectBox
- var parentObjectBox = this.createObjectBoxes(parentNode, rootObject);
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("insideOutBox.createObjectBoxes createObjectBoxes("+
- formatNode(parentNode)+","+formatNode(rootObject)+"):parentObjectBox: "+
- formatObjectBox(parentObjectBox), parentObjectBox);
-
- if (!parentObjectBox)
- return null;
-
- // Returns an inner box (nodeChildBox) that contains list of child boxes (nodeBox).
- var childrenBox = this.getChildObjectBox(parentObjectBox);
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("insideOutBox.createObjectBoxes getChildObjectBox("+
- formatObjectBox(parentObjectBox)+")= childrenBox: "+formatObjectBox(childrenBox));
-
- if (!childrenBox)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("insideOutBox.createObjectBoxes FAILS for "+formatNode(object)+
- " getChildObjectBox("+formatObjectBox(parentObjectBox)+")= childrenBox: "+
- formatObjectBox(childrenBox));
-
- // This is where we could try to create a box for objects we cannot get to by
- // navigation via walker or DOM nodes (native anonymous)
- return null;
- }
-
- var childObjectBox = this.findChildObjectBox(childrenBox, object);
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("insideOutBox.createObjectBoxes findChildObjectBox("+
- formatNode(childrenBox)+","+formatNode(object)+"): childObjectBox: "+
- formatObjectBox(childObjectBox), childObjectBox);
-
- return childObjectBox ? childObjectBox : this.populateChildBox(object, childrenBox);
- }
- },
-
- findObjectBox: function(object)
- {
- if (!object)
- return null;
-
- if (object == this.rootObject)
- return this.rootObjectBox;
- else
- {
- var parentNode = this.view.getParentObject(object);
- var parentObjectBox = this.findObjectBox(parentNode);
- if (!parentObjectBox)
- return null;
-
- var childrenBox = this.getChildObjectBox(parentObjectBox);
- if (!childrenBox)
- return null;
-
- return this.findChildObjectBox(childrenBox, object);
- }
- },
-
- appendChildBox: function(parentNodeBox, repObject)
- {
- var childBox = this.getChildObjectBox(parentNodeBox);
- var objectBox = this.findChildObjectBox(childBox, repObject);
- if (objectBox)
- return objectBox;
-
- objectBox = this.view.createObjectBox(repObject);
- if (objectBox)
- {
- var childBox = this.getChildObjectBox(parentNodeBox);
- childBox.appendChild(objectBox);
- }
- return objectBox;
- },
-
- insertChildBoxBefore: function(parentNodeBox, repObject, nextSibling)
- {
- var childBox = this.getChildObjectBox(parentNodeBox);
- var objectBox = this.findChildObjectBox(childBox, repObject);
- if (objectBox)
- return objectBox;
-
- objectBox = this.view.createObjectBox(repObject);
- if (objectBox)
- {
- var siblingBox = this.findChildObjectBox(childBox, nextSibling);
- childBox.insertBefore(objectBox, siblingBox);
- }
- return objectBox;
- },
-
- removeChildBox: function(parentNodeBox, repObject)
- {
- var childBox = this.getChildObjectBox(parentNodeBox);
- var objectBox = this.findChildObjectBox(childBox, repObject);
- if (objectBox)
- childBox.removeChild(objectBox);
- },
-
- // We want all children of the parent of repObject.
- populateChildBox: function(repObject, nodeChildBox)
- {
- if (!repObject)
- return null;
-
- var parentObjectBox = Dom.getAncestorByClass(nodeChildBox, "nodeBox");
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("+++insideOutBox.populateChildBox("+
- Css.getElementCSSSelector(repObject)+") parentObjectBox.populated "+
- parentObjectBox.populated);
-
- if (parentObjectBox.populated)
- return this.findChildObjectBox(nodeChildBox, repObject);
-
- var lastSiblingBox = this.getChildObjectBox(nodeChildBox);
- var siblingBox = nodeChildBox.firstChild;
- var targetBox = null;
-
- var view = this.view;
-
- var targetSibling = null;
- var parentNode = view.getParentObject(repObject);
- for (var i = 0; 1; ++i)
- {
- targetSibling = view.getChildObject(parentNode, i, targetSibling);
- if (!targetSibling)
- break;
-
- // Check if we need to start appending, or continue to insert before
- if (lastSiblingBox && lastSiblingBox.repObject == targetSibling)
- lastSiblingBox = null;
-
- if (!siblingBox || siblingBox.repObject != targetSibling)
- {
- var newBox = view.createObjectBox(targetSibling);
- if (newBox)
- {
- if (!nodeChildBox)
- FBTrace.sysout("insideOutBox FAILS no nodeChildBox "+repObject, repObject);
-
- if (lastSiblingBox)
- {
- try
- {
- nodeChildBox.insertBefore(newBox, lastSiblingBox);
- }
- catch(exc)
- {
- FBTrace.sysout("insideOutBox FAILS insertBefore",
- {repObject:repObject, nodeChildBox: nodeChildBox, newBox: newBox,
- lastSiblingBox: lastSiblingBox});
- }
- }
- else
- nodeChildBox.appendChild(newBox);
- }
-
- siblingBox = newBox;
- }
-
- if (targetSibling == repObject)
- targetBox = siblingBox;
-
- if (siblingBox && siblingBox.repObject == targetSibling)
- siblingBox = siblingBox.nextSibling;
- }
-
- if (targetBox)
- parentObjectBox.populated = true;
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("---insideOutBox.populateChildBox("+
- (repObject.localName?repObject.localName:repObject)+") targetBox "+targetBox);
-
- return targetBox;
- },
-
- getParentObjectBox: function(objectBox)
- {
- var parent = objectBox.parentNode ? objectBox.parentNode.parentNode : null;
- return parent && parent.repObject ? parent : null;
- },
-
- getChildObjectBox: function(objectBox)
- {
- return objectBox.getElementsByClassName("nodeChildBox").item(0);
- },
-
- findChildObjectBox: function(parentNodeBox, repObject)
- {
- for (var childBox = parentNodeBox.firstChild; childBox; childBox = childBox.nextSibling)
- {
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("insideOutBox.findChildObjectBox repObject: " +
- formatNode(repObject)+" in "+formatNode(childBox)+" = "+
- formatNode(childBox.repObject),
- {childBoxRepObject: childBox.repObject,repObject:repObject});
-
- if (childBox.repObject == repObject)
- return childBox;
- }
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("insideOutBox.findChildObjectBox no match for repObject: " +
- formatNode(repObject)+" in "+formatNode(parentNodeBox));
- },
-
- /**
- * Determines if the given node is an ancestor of the current root.
- */
- isInExistingRoot: function(node)
- {
- if (FBTrace.DBG_HTML)
- var dbg_isInExistingRoot = "";
-
- var parentNode = node;
- while (parentNode && parentNode != this.rootObject)
- {
- if (FBTrace.DBG_HTML)
- dbg_isInExistingRoot = dbg_isInExistingRoot + parentNode.localName+" < ";
-
- parentNode = this.view.getParentObject(parentNode);
- }
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("insideOutBox.isInExistingRoot "+dbg_isInExistingRoot+
- ": (parentNode == this.rootObject)="+(parentNode == this.rootObject));
-
- return parentNode == this.rootObject;
- },
-
- getRootNode: function(node)
- {
- if (FBTrace.DBG_HTML)
- var dbg_getRootNode = "";
-
- while (1)
- {
- var parentNode = this.view.getParentObject(node);
-
- if (!parentNode)
- break;
-
- if (FBTrace.DBG_HTML)
- dbg_getRootNode += node.localName+" < ";
-
- node = parentNode;
- }
-
- if (FBTrace.DBG_HTML)
- FBTrace.sysout("insideOutBox.getRootNode "+dbg_getRootNode);
-
- return node;
- },
-
- // ********************************************************************************************
-
- onMouseDown: function(event)
- {
- var hitTwisty = false;
- for (var child = event.target; child; child = child.parentNode)
- {
- if (Css.hasClass(child, "twisty"))
- hitTwisty = true;
- else if (child.repObject)
- {
- if (hitTwisty)
- this.toggleObjectBox(child);
- break;
- }
- }
- }
-};
-
-// ************************************************************************************************
-// Local Helpers
-
-function isVisibleTarget(node)
-{
- if (node.repObject && node.repObject.nodeType == Node.ELEMENT_NODE)
- {
- for (var parent = node.parentNode; parent; parent = parent.parentNode)
- {
- if (Css.hasClass(parent, "nodeChildBox")
- && !Css.hasClass(parent.parentNode, "open")
- && !Css.hasClass(parent.parentNode, "highlightOpen"))
- return false;
- }
- return true;
- }
-}
-
-function formatNode(object)
-{
- if (object)
- {
- if (!object.localName)
- {
- var str = object.toString();
- if (str)
- return str;
- else
- return "(an object with no localName or toString result)";
- }
- else return Css.getElementCSSSelector(object);
- }
- else
- return "(null object)";
-}
-
-function formatObjectBox(object)
-{
- if (object)
- {
- if (object.localName)
- return Css.getElementCSSSelector(object);
- return object.textContent;
- }
- else
- return "(null object)";
-}
-
-function getObjectPath(element, aView)
-{
- var path = [];
- for (; element; element = aView.getParentObject(element))
- path.push(element);
-
- return path;
-}
-
-// ************************************************************************************************
-// Registration
-
-return Firebug.InsideOutBox;
-
-// ************************************************************************************************
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/events",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/xml",
+],
+function(Obj, Firebug, Events, Css, Dom, Xml) {
+
+// ************************************************************************************************
+
+/**
+ * View interface used to populate an InsideOutBox object.
+ *
+ * All views must implement this interface (directly or via duck typing).
+ */
+var InsideOutBoxView = {
+ /**
+ * Retrieves the parent object for a given child object.
+ */
+ getParentObject: function(child) {},
+
+ /**
+ * Retrieves a given child node.
+ *
+ * If both index and previousSibling are passed, the implementation
+ * may assume that previousSibling will be the return for getChildObject
+ * with index-1.
+ */
+ getChildObject: function(parent, index, previousSibling) {},
+
+ /**
+ * Renders the HTML representation of the object. Should return an HTML
+ * object which will be displayed to the user.
+ */
+ createObjectBox: function(object, isRoot) {}
+};
+
+/**
+ * Creates a tree based on objects provided by a separate "view" object.
+ *
+ * Construction uses an "inside-out" algorithm, meaning that the view's job is first
+ * to tell us the ancestry of each object, and secondarily its descendants.
+ */
+Firebug.InsideOutBox = function(view, box)
+{
+ this.view = view;
+ this.box = box;
+
+ this.rootObject = null;
+
+ this.rootObjectBox = null;
+ this.selectedObjectBox = null;
+ this.highlightedObjectBox = null;
+
+ this.onMouseDown = Obj.bind(this.onMouseDown, this);
+ Events.addEventListener(this.box, "mousedown", this.onMouseDown, false);
+};
+
+Firebug.InsideOutBox.prototype =
+{
+ destroy: function()
+ {
+ Events.removeEventListener(this.box, "mousedown", this.onMouseDown, false);
+ },
+
+ highlight: function(object)
+ {
+ var objectBox = this.createObjectBox(object);
+ this.highlightObjectBox(objectBox);
+ return objectBox;
+ },
+
+ openObject: function(object)
+ {
+ var firstChild = this.view.getChildObject(object, 0);
+ if (firstChild)
+ object = firstChild;
+
+ var objectBox = this.createObjectBox(object);
+ this.openObjectBox(objectBox);
+ return objectBox;
+ },
+
+ openToObject: function(object)
+ {
+ var objectBox = this.createObjectBox(object);
+ this.openObjectBox(objectBox);
+ return objectBox;
+ },
+
+ select: function(object, makeBoxVisible, forceOpen, noScrollIntoView)
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("insideOutBox.select object:"+object, object);
+
+ var objectBox = this.createObjectBox(object);
+ this.selectObjectBox(objectBox, forceOpen);
+
+ if (makeBoxVisible)
+ {
+ this.openObjectBox(objectBox);
+ if (!noScrollIntoView)
+ Dom.scrollIntoCenterView(objectBox, this.box);
+ }
+
+ return objectBox;
+ },
+
+ toggleObject: function(object, all, exceptions)
+ {
+ var objectBox = this.createObjectBox(object);
+ if (!objectBox)
+ return;
+
+ if (Css.hasClass(objectBox, "open"))
+ this.contractObjectBox(objectBox, all);
+ else
+ this.expandObjectBox(objectBox, all, exceptions);
+ },
+
+ expandObject: function(object, expandAll)
+ {
+ var objectBox = this.createObjectBox(object);
+ if (objectBox)
+ this.expandObjectBox(objectBox, expandAll);
+ },
+
+ contractObject: function(object, contractAll)
+ {
+ var objectBox = this.createObjectBox(object);
+ if (objectBox)
+ this.contractObjectBox(objectBox, contractAll);
+ },
+
+ highlightObjectBox: function(objectBox)
+ {
+ if (this.highlightedObjectBox)
+ {
+ Css.removeClass(this.highlightedObjectBox, "highlighted");
+
+ var highlightedBox = this.getParentObjectBox(this.highlightedObjectBox);
+ for (; highlightedBox; highlightedBox = this.getParentObjectBox(highlightedBox))
+ Css.removeClass(highlightedBox, "highlightOpen");
+ }
+
+ this.highlightedObjectBox = objectBox;
+
+ if (objectBox)
+ {
+ Css.setClass(objectBox, "highlighted");
+
+ var highlightedBox = this.getParentObjectBox(objectBox);
+ for (; highlightedBox; highlightedBox = this.getParentObjectBox(highlightedBox))
+ Css.setClass(highlightedBox, "highlightOpen");
+
+ Dom.scrollIntoCenterView(objectBox, this.box);
+ }
+ },
+
+ selectObjectBox: function(objectBox, forceOpen)
+ {
+ var panel = Firebug.getElementPanel(objectBox);
+
+ if (!panel)
+ {
+ if (FBTrace.DBG_ERRORS && FBTrace.DBG_HTML)
+ FBTrace.sysout("selectObjectBox no panel for " + objectBox, objectBox);
+ return;
+ }
+
+ var isSelected = this.selectedObjectBox && objectBox == this.selectedObjectBox;
+ if (!isSelected)
+ {
+ Css.removeClass(this.selectedObjectBox, "selected");
+ Events.dispatch(panel.fbListeners, "onObjectBoxUnselected", [this.selectedObjectBox]);
+ this.selectedObjectBox = objectBox;
+
+ if (objectBox)
+ {
+ Css.setClass(objectBox, "selected");
+
+ // Force it open the first time it is selected
+ if (forceOpen)
+ this.toggleObjectBox(objectBox, true);
+ }
+ }
+ Events.dispatch(panel.fbListeners, "onObjectBoxSelected", [objectBox]);
+ },
+
+ openObjectBox: function(objectBox)
+ {
+ if (objectBox)
+ {
+ // Set all of the node's ancestors to be permanently open
+ var parentBox = this.getParentObjectBox(objectBox);
+ var labelBox;
+ for (; parentBox; parentBox = this.getParentObjectBox(parentBox))
+ {
+ Css.setClass(parentBox, "open");
+ labelBox = parentBox.getElementsByClassName("nodeLabelBox").item(0);
+ if (labelBox)
+ labelBox.setAttribute("aria-expanded", "true");
+ }
+ }
+ },
+
+ expandObjectBox: function(objectBox, expandAll, exceptions)
+ {
+ var nodeChildBox = this.getChildObjectBox(objectBox);
+ if (!nodeChildBox)
+ return;
+
+ if (!objectBox.populated)
+ {
+ var firstChild = this.view.getChildObject(objectBox.repObject, 0);
+ this.populateChildBox(firstChild, nodeChildBox);
+ }
+
+ var labelBox = objectBox.getElementsByClassName("nodeLabelBox").item(0);
+ if (labelBox)
+ labelBox.setAttribute("aria-expanded", "true");
+ Css.setClass(objectBox, "open");
+
+ // Recursively expand all child boxes
+ if (expandAll)
+ {
+ for (var child = nodeChildBox.firstChild; child; child = child.nextSibling)
+ {
+ if (exceptions && child.repObject)
+ {
+ var shouldBeExpanded = true;
+ var localName = child.repObject.localName;
+ localName = localName ? localName.toLowerCase() : "";
+
+ for (var i=0; i<exceptions.length; i++)
+ {
+ if (localName == exceptions[i] &&
+ (Xml.isElementHTML(child.repObject) || Xml.isElementXHTML(child.repObject)))
+ {
+ shouldBeExpanded = false;
+ break;
+ }
+ }
+ if (!shouldBeExpanded)
+ continue;
+ }
+
+ if (Css.hasClass(child, "containerNodeBox"))
+ this.expandObjectBox(child, expandAll, exceptions);
+ }
+ }
+ },
+
+ contractObjectBox: function(objectBox, contractAll)
+ {
+ Css.removeClass(objectBox, "open");
+
+ var nodeLabel = objectBox.getElementsByClassName("nodeLabel").item(0);
+ var labelBox = nodeLabel.getElementsByClassName('nodeLabelBox').item(0);
+ if (labelBox)
+ labelBox.setAttribute("aria-expanded", "false");
+
+ if (contractAll)
+ {
+ // Recursively contract all child boxes
+ var nodeChildBox = this.getChildObjectBox(objectBox);
+ if (!nodeChildBox)
+ return;
+
+ for (var child = nodeChildBox.firstChild; child; child = child.nextSibling)
+ {
+ if (Css.hasClass(child, "containerNodeBox") && Css.hasClass(child, "open"))
+ this.contractObjectBox(child, contractAll);
+ }
+ }
+ },
+
+ toggleObjectBox: function(objectBox, forceOpen)
+ {
+ var isOpen = Css.hasClass(objectBox, "open");
+ var nodeLabel = objectBox.getElementsByClassName("nodeLabel").item(0);
+ var labelBox = nodeLabel.getElementsByClassName('nodeLabelBox').item(0);
+ if (labelBox)
+ labelBox.setAttribute("aria-expanded", isOpen);
+
+ if (!forceOpen && isOpen)
+ this.contractObjectBox(objectBox);
+ else if (!isOpen)
+ this.expandObjectBox(objectBox);
+ },
+
+ getNextObjectBox: function(objectBox)
+ {
+ return Dom.findNext(objectBox, isVisibleTarget, false, this.box);
+ },
+
+ getPreviousObjectBox: function(objectBox)
+ {
+ return Dom.findPrevious(objectBox, isVisibleTarget, true, this.box);
+ },
+
+ getNextSiblingObjectBox: function(objectBox)
+ {
+ if (!objectBox)
+ return null;
+ return Dom.findNext(objectBox, isVisibleTarget, true, objectBox.parentNode);
+ },
+
+ /**
+ * Creates all of the boxes for an object, its ancestors, and siblings.
+ */
+ createObjectBox: function(object)
+ {
+ if (!object)
+ return null;
+
+ this.rootObject = this.getRootNode(object);
+
+ // Get or create all of the boxes for the target and its ancestors
+ var objectBox = this.createObjectBoxes(object, this.rootObject);
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("----insideOutBox.createObjectBox: createObjectBoxes(object="+
+ formatNode(object)+", rootObject="+formatNode(this.rootObject)+") ="+
+ formatNode(objectBox), objectBox);
+
+ if (!objectBox) // we found an object outside of the navigatible tree
+ return;
+ else if (object == this.rootObject)
+ return objectBox;
+ else
+ return this.populateChildBox(object, objectBox.parentNode);
+ },
+
+ /**
+ * Creates all of the boxes for an object, its ancestors, and siblings up to a root.
+ */
+ createObjectBoxes: function(object, rootObject)
+ {
+ if (!object)
+ return null;
+
+ if (object == rootObject)
+ {
+ if (!this.rootObjectBox || this.rootObjectBox.repObject != rootObject)
+ {
+ if (this.rootObjectBox)
+ {
+ try
+ {
+ this.box.removeChild(this.rootObjectBox);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout(" this.box.removeChild(this.rootObjectBox) FAILS "+
+ this.box+" must not contain "+this.rootObjectBox);
+ }
+ }
+
+ this.highlightedObjectBox = null;
+ this.selectedObjectBox = null;
+ this.rootObjectBox = this.view.createObjectBox(object, true);
+ this.box.appendChild(this.rootObjectBox);
+ }
+
+ if (FBTrace.DBG_HTML)
+ {
+ FBTrace.sysout("insideOutBox.createObjectBoxes("+formatNode(object)+","+
+ formatNode(rootObject)+") rootObjectBox: "+this.rootObjectBox, object);
+ }
+
+ if ((FBTrace.DBG_HTML || FBTrace.DBG_ERRORS) && !this.rootObjectBox.parentNode)
+ FBTrace.sysout("insideOutBox.createObjectBoxes; ERROR - null parent node. "+
+ "object: " + formatNode(object)+", rootObjectBox: "+
+ formatObjectBox(this.rootObjectBox), object);
+
+ return this.rootObjectBox;
+ }
+ else
+ {
+ var parentNode = this.view.getParentObject(object);
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("insideOutBox.createObjectBoxes createObjectBoxes recursing " +
+ "with parentNode "+formatNode(parentNode)+" from object "+formatNode(object));
+
+ // recurse towards parent, eventually returning rootObjectBox
+ var parentObjectBox = this.createObjectBoxes(parentNode, rootObject);
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("insideOutBox.createObjectBoxes createObjectBoxes("+
+ formatNode(parentNode)+","+formatNode(rootObject)+"):parentObjectBox: "+
+ formatObjectBox(parentObjectBox), parentObjectBox);
+
+ if (!parentObjectBox)
+ return null;
+
+ // Returns an inner box (nodeChildBox) that contains list of child boxes (nodeBox).
+ var childrenBox = this.getChildObjectBox(parentObjectBox);
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("insideOutBox.createObjectBoxes getChildObjectBox("+
+ formatObjectBox(parentObjectBox)+")= childrenBox: "+formatObjectBox(childrenBox));
+
+ if (!childrenBox)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("insideOutBox.createObjectBoxes FAILS for "+formatNode(object)+
+ " getChildObjectBox("+formatObjectBox(parentObjectBox)+")= childrenBox: "+
+ formatObjectBox(childrenBox));
+
+ // This is where we could try to create a box for objects we cannot get to by
+ // navigation via walker or DOM nodes (native anonymous)
+ return null;
+ }
+
+ var childObjectBox = this.findChildObjectBox(childrenBox, object);
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("insideOutBox.createObjectBoxes findChildObjectBox("+
+ formatNode(childrenBox)+","+formatNode(object)+"): childObjectBox: "+
+ formatObjectBox(childObjectBox), childObjectBox);
+
+ return childObjectBox ? childObjectBox : this.populateChildBox(object, childrenBox);
+ }
+ },
+
+ findObjectBox: function(object)
+ {
+ if (!object)
+ return null;
+
+ if (object == this.rootObject)
+ return this.rootObjectBox;
+ else
+ {
+ var parentNode = this.view.getParentObject(object);
+ var parentObjectBox = this.findObjectBox(parentNode);
+ if (!parentObjectBox)
+ return null;
+
+ var childrenBox = this.getChildObjectBox(parentObjectBox);
+ if (!childrenBox)
+ return null;
+
+ return this.findChildObjectBox(childrenBox, object);
+ }
+ },
+
+ appendChildBox: function(parentNodeBox, repObject)
+ {
+ var childBox = this.getChildObjectBox(parentNodeBox);
+ var objectBox = this.findChildObjectBox(childBox, repObject);
+ if (objectBox)
+ return objectBox;
+
+ objectBox = this.view.createObjectBox(repObject);
+ if (objectBox)
+ {
+ var childBox = this.getChildObjectBox(parentNodeBox);
+ childBox.appendChild(objectBox);
+ }
+ return objectBox;
+ },
+
+ insertChildBoxBefore: function(parentNodeBox, repObject, nextSibling)
+ {
+ var childBox = this.getChildObjectBox(parentNodeBox);
+ var objectBox = this.findChildObjectBox(childBox, repObject);
+ if (objectBox)
+ return objectBox;
+
+ objectBox = this.view.createObjectBox(repObject);
+ if (objectBox)
+ {
+ var siblingBox = this.findChildObjectBox(childBox, nextSibling);
+ childBox.insertBefore(objectBox, siblingBox);
+ }
+ return objectBox;
+ },
+
+ removeChildBox: function(parentNodeBox, repObject)
+ {
+ var childBox = this.getChildObjectBox(parentNodeBox);
+ var objectBox = this.findChildObjectBox(childBox, repObject);
+ if (objectBox)
+ childBox.removeChild(objectBox);
+ },
+
+ // We want all children of the parent of repObject.
+ populateChildBox: function(repObject, nodeChildBox)
+ {
+ if (!repObject)
+ return null;
+
+ var parentObjectBox = Dom.getAncestorByClass(nodeChildBox, "nodeBox");
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("+++insideOutBox.populateChildBox("+
+ Css.getElementCSSSelector(repObject)+") parentObjectBox.populated "+
+ parentObjectBox.populated);
+
+ if (parentObjectBox.populated)
+ return this.findChildObjectBox(nodeChildBox, repObject);
+
+ var lastSiblingBox = this.getChildObjectBox(nodeChildBox);
+ var siblingBox = nodeChildBox.firstChild;
+ var targetBox = null;
+
+ var view = this.view;
+
+ var targetSibling = null;
+ var parentNode = view.getParentObject(repObject);
+ for (var i = 0; 1; ++i)
+ {
+ targetSibling = view.getChildObject(parentNode, i, targetSibling);
+ if (!targetSibling)
+ break;
+
+ // Check if we need to start appending, or continue to insert before
+ if (lastSiblingBox && lastSiblingBox.repObject == targetSibling)
+ lastSiblingBox = null;
+
+ if (!siblingBox || siblingBox.repObject != targetSibling)
+ {
+ var newBox = view.createObjectBox(targetSibling);
+ if (newBox)
+ {
+ if (!nodeChildBox)
+ FBTrace.sysout("insideOutBox FAILS no nodeChildBox "+repObject, repObject);
+
+ if (lastSiblingBox)
+ {
+ try
+ {
+ nodeChildBox.insertBefore(newBox, lastSiblingBox);
+ }
+ catch(exc)
+ {
+ FBTrace.sysout("insideOutBox FAILS insertBefore",
+ {repObject:repObject, nodeChildBox: nodeChildBox, newBox: newBox,
+ lastSiblingBox: lastSiblingBox});
+ }
+ }
+ else
+ nodeChildBox.appendChild(newBox);
+ }
+
+ siblingBox = newBox;
+ }
+
+ if (targetSibling == repObject)
+ targetBox = siblingBox;
+
+ if (siblingBox && siblingBox.repObject == targetSibling)
+ siblingBox = siblingBox.nextSibling;
+ }
+
+ if (targetBox)
+ parentObjectBox.populated = true;
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("---insideOutBox.populateChildBox("+
+ (repObject.localName?repObject.localName:repObject)+") targetBox "+targetBox);
+
+ return targetBox;
+ },
+
+ getParentObjectBox: function(objectBox)
+ {
+ var parent = objectBox.parentNode ? objectBox.parentNode.parentNode : null;
+ return parent && parent.repObject ? parent : null;
+ },
+
+ getChildObjectBox: function(objectBox)
+ {
+ return objectBox.getElementsByClassName("nodeChildBox").item(0);
+ },
+
+ findChildObjectBox: function(parentNodeBox, repObject)
+ {
+ for (var childBox = parentNodeBox.firstChild; childBox; childBox = childBox.nextSibling)
+ {
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("insideOutBox.findChildObjectBox repObject: " +
+ formatNode(repObject)+" in "+formatNode(childBox)+" = "+
+ formatNode(childBox.repObject),
+ {childBoxRepObject: childBox.repObject,repObject:repObject});
+
+ if (childBox.repObject == repObject)
+ return childBox;
+ }
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("insideOutBox.findChildObjectBox no match for repObject: " +
+ formatNode(repObject)+" in "+formatNode(parentNodeBox));
+ },
+
+ /**
+ * Determines if the given node is an ancestor of the current root.
+ */
+ isInExistingRoot: function(node)
+ {
+ if (FBTrace.DBG_HTML)
+ var dbg_isInExistingRoot = "";
+
+ var parentNode = node;
+ while (parentNode && parentNode != this.rootObject)
+ {
+ if (FBTrace.DBG_HTML)
+ dbg_isInExistingRoot = dbg_isInExistingRoot + parentNode.localName+" < ";
+
+ parentNode = this.view.getParentObject(parentNode);
+ }
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("insideOutBox.isInExistingRoot "+dbg_isInExistingRoot+
+ ": (parentNode == this.rootObject)="+(parentNode == this.rootObject));
+
+ return parentNode == this.rootObject;
+ },
+
+ getRootNode: function(node)
+ {
+ if (FBTrace.DBG_HTML)
+ var dbg_getRootNode = "";
+
+ while (1)
+ {
+ var parentNode = this.view.getParentObject(node);
+
+ if (!parentNode)
+ break;
+
+ if (FBTrace.DBG_HTML)
+ dbg_getRootNode += node.localName+" < ";
+
+ node = parentNode;
+ }
+
+ if (FBTrace.DBG_HTML)
+ FBTrace.sysout("insideOutBox.getRootNode "+dbg_getRootNode);
+
+ return node;
+ },
+
+ // ********************************************************************************************
+
+ onMouseDown: function(event)
+ {
+ var hitTwisty = false;
+ for (var child = event.target; child; child = child.parentNode)
+ {
+ if (Css.hasClass(child, "twisty"))
+ hitTwisty = true;
+ else if (child.repObject)
+ {
+ if (hitTwisty)
+ this.toggleObjectBox(child);
+ break;
+ }
+ }
+ }
+};
+
+// ************************************************************************************************
+// Local Helpers
+
+function isVisibleTarget(node)
+{
+ if (node.repObject && node.repObject.nodeType == Node.ELEMENT_NODE)
+ {
+ for (var parent = node.parentNode; parent; parent = parent.parentNode)
+ {
+ if (Css.hasClass(parent, "nodeChildBox")
+ && !Css.hasClass(parent.parentNode, "open")
+ && !Css.hasClass(parent.parentNode, "highlightOpen"))
+ return false;
+ }
+ return true;
+ }
+}
+
+function formatNode(object)
+{
+ if (object)
+ {
+ if (!object.localName)
+ {
+ var str = object.toString();
+ if (str)
+ return str;
+ else
+ return "(an object with no localName or toString result)";
+ }
+ else return Css.getElementCSSSelector(object);
+ }
+ else
+ return "(null object)";
+}
+
+function formatObjectBox(object)
+{
+ if (object)
+ {
+ if (object.localName)
+ return Css.getElementCSSSelector(object);
+ return object.textContent;
+ }
+ else
+ return "(null object)";
+}
+
+function getObjectPath(element, aView)
+{
+ var path = [];
+ for (; element; element = aView.getParentObject(element))
+ path.push(element);
+
+ return path;
+}
+
+// ************************************************************************************************
+// Registration
+
+return Firebug.InsideOutBox;
+
+// ************************************************************************************************
+});
diff --git a/content/firebug/html/inspector.js b/content/firebug/html/inspector.js
index 671d79f..ab4c81a 100644
--- a/content/firebug/html/inspector.js
+++ b/content/firebug/html/inspector.js
@@ -1,1598 +1,1598 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/firefox",
- "firebug/chrome/reps",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/wrapper",
- "firebug/lib/array",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/xml",
- "firebug/chrome/window",
- "firebug/lib/system",
- "firebug/html/highlighterCache",
- "firebug/html/quickInfoBox",
-],
-function(Obj, Firebug, Firefox, FirebugReps, Locale, Events, Wrapper, Arr, Css, Dom, Xml,
- Win, System, HighlighterCache, QuickInfoBox) {
-
-// ********************************************************************************************* //
-// Constants
-
-const inspectDelay = 200;
-const highlightCssUrl = "chrome://firebug/content/html/highlighter.css";
-const ident = HighlighterCache.ident;
-const Cu = Components.utils;
-
-// ********************************************************************************************* //
-// Globals
-
-var boxModelHighlighter = null;
-var frameHighlighter = null;
-
-// ********************************************************************************************* //
-
-/**
- * @module Implements Firebug Inspector logic.
- */
-Firebug.Inspector = Obj.extend(Firebug.Module,
-{
- dispatchName: "inspector",
- inspecting: false,
- inspectingPanel: null,
-
- /**
- * Main highlighter method. Can be used to highlight elements using the box model,
- * frame or image map highlighters. Can highlight single or multiple elements.
- *
- * Examples:
- * Firebug.Inspector.highlightObject([window.content.document.getElementById("gbar"),
- * window.content.document.getElementById("logo")],
- * window.content, "frame", null,
- * ["#ff0000",{background:"#0000ff", border:"#ff0000"}])
- * or
- * Firebug.Inspector.highlightObject([window.content.document.getElementById("gbar"),
- * window.content.document.getElementById("logo")], window.content, "boxModel", null,
- * [{content: "#ff0000", padding: "#eeeeee", border: "#00ff00", margin: "#0000ff"},
- * {content: "#00ff00", padding: "#eeeeee", border: "#00ff00", margin: "#0000ff"}])
- *
- * @param {Array} elementArr Elements to highlight
- * @param {Window} context Context of the elements to be highlighted
- * @param {String} [highlightType] Either "frame" or "boxModel". Default is configurable.
- * @param {String} [boxFrame] Displays the line guides for the box model layout view.
- * Valid values are: "content", "padding", "border" or "margin"
- * @param {String | Array} [colorObj] Any valid html color e.g. red, #f00, #ff0000, etc.,
- * a valid color object or any valid highlighter color array.
- */
- highlightObject: function(elementArr, context, highlightType, boxFrame, colorObj)
- {
- var i, elt, elementLen, oldContext, usingColorArray;
- var highlighter = highlightType ? getHighlighter(highlightType) : this.defaultHighlighter;
-
- if (!elementArr || !Arr.isArrayLike(elementArr))
- {
- // Not everything that comes through here is wrapped - fix that.
- elementArr = Wrapper.wrapObject(elementArr);
-
- // highlight a single element
- if (!elementArr || !Dom.isElement(elementArr) ||
- (typeof elementArr === "object" && !Xml.isVisible(elementArr)))
- {
- if (elementArr && Dom.isRange(elementArr))
- elementArr = elementArr;
- else if (elementArr && elementArr.nodeType == Node.TEXT_NODE)
- elementArr = elementArr.parentNode;
- else
- elementArr = null;
- }
-
- if (elementArr && context && context.highlightTimeout)
- {
- context.clearTimeout(context.highlightTimeout);
- delete context.highlightTimeout;
- }
-
- oldContext = this.highlightedContext;
- if (oldContext && oldContext.window)
- this.clearAllHighlights();
-
- // Stop multi element highlighting
- if (!elementArr)
- this.repaint.element = null;
-
- this.highlighter = highlighter;
- this.highlightedContext = context;
-
- if (elementArr)
- {
- if (elementArr.nodeName && !isVisibleElement(elementArr))
- highlighter.unhighlight(context);
- else if (context && context.window && context.window.document)
- highlighter.highlight(context, elementArr, boxFrame, colorObj, false);
- }
- else if (oldContext)
- {
- oldContext.highlightTimeout = oldContext.setTimeout(function()
- {
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("Removing inspector highlighter due to setTimeout loop");
-
- if (!oldContext.highlightTimeout)
- return;
-
- delete oldContext.highlightTimeout;
-
- if (oldContext.window && oldContext.window.document)
- {
- highlighter.unhighlight(oldContext);
- }
- }, inspectDelay);
- }
- }
- else
- {
- // Highlight multiple elements
- if (context && context.highlightTimeout)
- {
- context.clearTimeout(context.highlightTimeout);
- delete context.highlightTimeout;
- }
-
- this.clearAllHighlights();
- usingColorArray = Arr.isArray(colorObj);
-
- if (context && context.window && context.window.document)
- {
- for (i=0, elementLen=elementArr.length; i<elementLen; i++)
- {
- // Like above, wrap things.
- elt = Wrapper.wrapObject(elementArr[i]);
-
- if (elt && elt instanceof HTMLElement)
- {
- if (elt.nodeType == Node.TEXT_NODE)
- elt = elt.parentNode;
-
- var obj = usingColorArray ? colorObj[i] : colorObj;
- highlighter.highlight(context, elt, null, obj, true);
- }
- }
- }
-
- storeHighlighterParams(null, context, elementArr, null, colorObj, highlightType, true);
- }
- },
-
- /**
- * Clear all highlighted areas on a page.
- */
- clearAllHighlights: function()
- {
- HighlighterCache.clear();
- },
-
- /**
- * Toggle inspecting on / off
- * @param {Window} [context] The window to begin inspecting in, necessary to toggle inspecting on.
- */
- toggleInspecting: function(context)
- {
- if (this.inspecting)
- this.stopInspecting(true);
- else
- this.startInspecting(context);
- },
-
- /**
- * Check if the new panel has the inspectable property set. If so set it as the new inspectingPanel.
- */
- onPanelChanged: function()
- {
- if (this.inspecting)
- {
- var panelBar1 = Firebug.chrome.$("fbPanelBar1");
- var panel = panelBar1.selectedPanel;
-
- if (panel && panel.inspectable)
- {
- this.inspectNode(null);
- this.inspectingPanel = panel;
- }
- }
- },
-
- /**
- * Turn inspecting on.
- * @param {Window} context The main browser window
- */
- startInspecting: function(context)
- {
- if (this.inspecting || !context || !context.loaded)
- return;
-
- this.clearAllHighlights();
-
- this.inspecting = true;
- this.inspectingContext = context;
-
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleInspecting", "checked", "true");
- this.attachInspectListeners(context);
-
- var inspectingPanelName = this._resolveInspectingPanelName(context);
- this.inspectingPanel = Firebug.chrome.switchToPanel(context, inspectingPanelName);
-
- if (Firebug.isDetached())
- context.window.focus();
- else if (Firebug.isMinimized())
- Firebug.showBar(true);
-
- this.inspectingPanel.panelNode.focus();
- this.inspectingPanel.startInspecting();
-
- Events.dispatch(this.fbListeners, "onStartInspecting", [context]);
-
- if (context.stopped)
- Firebug.Debugger.thaw(context);
-
- var hoverNodes = context.window.document.querySelectorAll(":hover");
-
- if (hoverNodes.length != 0)
- this.inspectNode(hoverNodes[hoverNodes.length-1]);
- },
-
- /**
- * Highlight a node using the frame highlighter. Can only be used after inspecting has already started.
- * @param {Element} node The element to inspect
- */
- inspectNode: function(node)
- {
- if (node && node.nodeType != Node.ELEMENT_NODE)
- node = node.parentNode;
-
- if (node && Firebug.shouldIgnore(node) && !node.fbProxyFor)
- return;
-
- var context = this.inspectingContext;
-
- if (this.inspectTimeout)
- {
- context.clearTimeout(this.inspectTimeout);
- delete this.inspectTimeout;
- }
-
- if (node && node.fbProxyFor)
- node = node.fbProxyFor;
-
- var inspectingPanel = this.inspectingPanel;
-
- // Some panels may want to only allow inspection of panel-supported objects
- node = inspectingPanel ? inspectingPanel.getInspectNode(node) : node;
-
- var highlightColor = inspectingPanel ? inspectingPanel.inspectHighlightColor : "";
- this.highlightObject(node, context, "frame", undefined, highlightColor);
-
- this.inspectingNode = node;
-
- if (node)
- {
- var _this = this;
-
- this.inspectTimeout = context.setTimeout(function()
- {
- var selection = inspectingPanel ? inspectingPanel.inspectNode(node) : null;
- Events.dispatch(_this.fbListeners, "onInspectNode", [context, node]);
- if (selection)
- inspectingPanel.select(node);
- }, inspectDelay);
- }
- },
-
- /**
- * Stop inspecting and clear all highlights.
- * @param {Boolean} canceled Indicates whether inspect was canceled (usually via the escape key)
- * @param {Boolean} [waitForClick] Indicates whether the next click will still forward you
- * to the clicked element in the HTML panel.
- */
- stopInspecting: function(canceled, waitForClick)
- {
- if (!this.inspecting)
- return;
-
- var context = this.inspectingContext;
-
- if (context.stopped)
- Firebug.Debugger.freeze(context);
-
- if (this.inspectTimeout)
- {
- context.clearTimeout(this.inspectTimeout);
- delete this.inspectTimeout;
- }
-
- this.detachInspectListeners(context);
- if (!waitForClick)
- this.detachClickInspectListeners(context.window);
-
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleInspecting", "checked", "false");
-
- this.inspecting = false;
-
- if (this.inspectingPanel)
- {
- Firebug.chrome.unswitchToPanel(context, this.inspectingPanel.name, canceled);
- this.inspectingPanel.stopInspecting(this.inspectingNode, canceled);
- }
- else
- {
- FBTrace.sysout("inspector.stopInspecting; ERROR? inspectingPanel is NULL");
- }
-
- Events.dispatch(this.fbListeners, "onStopInspecting", [context, this.inspectingNode, canceled]);
-
- this.inspectNode(null);
-
- // Make sure there are no (indirect) references to the page document.
- this.inspectingPanel = null;
- this.inspectingContext = null;
-
- if (Firebug.isDetached())
- window.focus();
- },
-
- /**
- * Get the name of the inspectable panel.
- * @param {Window} context Context of the panel
- */
- _resolveInspectingPanelName: function(context)
- {
- var requestingPanel = context && context.getPanel(context.panelName);
-
- return (requestingPanel && requestingPanel.inspectable) ? requestingPanel.name : "html";
- },
-
- /**
- * Inspect from context menu.
- * @param {Element} elt The element to inspect
- */
- inspectFromContextMenu: function(elt)
- {
- var panel;
- var inspectingPanelName = "html";
-
- Firebug.toggleBar(true, inspectingPanelName);
- Firebug.chrome.select(elt, inspectingPanelName);
- panel = Firebug.chrome.selectPanel(inspectingPanelName);
- panel.panelNode.focus();
- },
-
- /**
- * Navigate up and down through the DOM and highlight the result. This method is used by
- * the key handlers for the up and down arrow keys.
- *
- * @param {String} dir Direction to navigate the Dom, either "up" or "down"
- */
- inspectNodeBy: function(dir)
- {
- var target;
- var node = this.inspectingNode;
-
- if (dir == "up")
- {
- target = Firebug.chrome.getNextObject();
- }
- else if (dir == "down")
- {
- target = Firebug.chrome.getNextObject(true);
- if (node && !target)
- {
- target = node.contentDocument ?
- node.contentDocument.documentElement : Dom.getNextElement(node.firstChild);
- }
- }
-
- if (target && Dom.isElement(target))
- this.inspectNode(target);
- else
- System.beep();
- },
-
- /**
- * Repaint the highlighter. Called from the window scroll and resize handlers.
- */
- repaint: function()
- {
- var rp = this.repaint;
- var highlighter = rp.highlighter;
- var context = rp.context;
- var element = rp.element;
- var boxFrame = rp.boxFrame;
- var colorObj = rp.colorObj;
- var highlightType = rp.highlightType;
- var isMulti = rp.isMulti;
-
- if (!context || (!highlighter && !isMulti))
- return;
-
- if (isMulti && element)
- {
- this.highlightObject(element, context, highlightType, null, colorObj);
- }
- else if (!isMulti)
- {
- var highlighterNode = HighlighterCache.get(highlighter.ident);
-
- if (highlighterNode && highlighter.ident === ident.boxModel)
- highlighterNode = highlighterNode.offset;
-
- if (highlighterNode && highlighterNode.parentNode)
- {
- this.clearAllHighlights();
- highlighter.highlight(context, element, boxFrame, colorObj, isMulti);
- }
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /**
- * Attach the scroll and resize handlers to elt's window. Called from every highlight call.
- * @param {Element} elt Passed in order to reliably obtain context
- */
- attachRepaintInspectListeners: function(context, elt)
- {
- if (!elt || !elt.ownerDocument || !elt.ownerDocument.defaultView)
- return;
-
- var win = elt.ownerDocument.defaultView;
-
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("inspector.attachRepaintInspectListeners to " + win.location.href, elt);
-
- // there is no way to check if the listeners have already been added and we should
- // avoid adding properties to the users page.
- // Adding them again will do no harm so lets just do that.
-
- // xxxHonza: I think that adding them twice could actually do harm,
- // so make sure they are removed before.
- context.removeEventListener(win.document, "resize", this.onInspectingResizeWindow, true);
- context.removeEventListener(win.document, "scroll", this.onInspectingScroll, true);
-
- // Register again.
- context.addEventListener(win.document, "resize", this.onInspectingResizeWindow, true);
- context.addEventListener(win.document, "scroll", this.onInspectingScroll, true);
- },
-
- /**
- * Attach key and mouse events to windows recursively.
- * @param {Window} context Context of the main browser window
- */
- attachInspectListeners: function(context)
- {
- var win = context.window;
- if (!win || !win.document)
- return;
-
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("inspector.attachInspectListeners to all subWindows of " + win.location);
-
- var chrome = Firebug.chrome;
-
- this.keyListeners =
- [
- chrome.keyCodeListen("RETURN", null, Obj.bindFixed(this.stopInspecting, this)),
- chrome.keyCodeListen("ESCAPE", null, Obj.bindFixed(this.stopInspecting, this, true)),
- chrome.keyCodeListen("UP", Events.isControl, Obj.bindFixed(this.inspectNodeBy, this,
- "up"), true),
- chrome.keyCodeListen("DOWN", Events.isControl, Obj.bindFixed(this.inspectNodeBy, this,
- "down"), true),
- ];
-
- Win.iterateWindows(win, Obj.bind(function(subWin)
- {
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("inspector.attacheInspectListeners to " + subWin.location +
- " subWindow of " + win.location);
-
- Events.addEventListener(subWin.document, "mouseover", this.onInspectingMouseOver,
- true);
- Events.addEventListener(subWin.document, "mousedown", this.onInspectingMouseDown,
- true);
- Events.addEventListener(subWin.document, "mouseup", this.onInspectingMouseUp, true);
- Events.addEventListener(subWin.document, "click", this.onInspectingClick, true);
- Events.addEventListener(subWin.document, "keypress", this.onInspectingKeyPress, true);
- }, this));
- },
-
- /**
- * Remove all event listeners except click listener from windows recursively.
- * @param {Window} context Context of the main browser window
- */
- detachInspectListeners: function(context)
- {
- var i, keyListenersLen;
- var win = context.window;
-
- if (!win || !win.document)
- return;
-
- var chrome = Firebug.chrome;
-
- if (this.keyListeners) // XXXjjb for some reason this is null sometimes.
- {
- keyListenersLen = this.keyListeners.length;
- for (i = 0; i < keyListenersLen; ++i)
- chrome.keyIgnore(this.keyListeners[i]);
- delete this.keyListeners;
- }
-
- Win.iterateWindows(win, Obj.bind(function(subWin)
- {
- Events.removeEventListener(subWin.document, "mouseover", this.onInspectingMouseOver,
- true);
- Events.removeEventListener(subWin.document, "mousedown", this.onInspectingMouseDown,
- true);
- Events.removeEventListener(subWin.document, "mouseup", this.onInspectingMouseUp, true);
- Events.removeEventListener(subWin.document, "keypress", this.onInspectingKeyPress,
- true);
- }, this));
- },
-
- /**
- * Remove the click listener independently from detachInspectListeners because if we remove
- * it after mousedown, we won't be able to cancel clicked links.
- *
- * @param {Window} context Context of the main browser window
- */
- detachClickInspectListeners: function(context)
- {
- Win.iterateWindows(context, Obj.bind(function(subWin)
- {
- Events.removeEventListener(subWin.document, "click", this.onInspectingClick, true);
- }, this));
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /**
- * Repaint last highlight in the correct position on window resize.
- * @param {Event} event Passed for tracing
- */
- onInspectingResizeWindow: function(event)
- {
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("onInspectingResizeWindow event", event);
-
- this.repaint();
- },
-
- /**
- * Repaint last highlight in the correct position on scroll.
- * @param {Event} event Passed for tracing
- */
- onInspectingScroll: function(event)
- {
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("onInspectingScroll event", event);
-
- this.repaint();
- },
-
- /**
- * Call inspectNode(event.target) highlighting the element that was moused over.
- * @param {Event} event Passed for tracing and to identify the target of inspection
- */
- onInspectingMouseOver: function(event)
- {
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("onInspectingMouseOver event", event);
-
- this.inspectNode(event.target);
- },
-
- /**
- * Trap mousedown events to prevent clicking a document from triggering a document's
- * mousedown event when inspecting.
- *
- * @param {Event} event Used for tracing and canceling the event
- */
- onInspectingMouseDown: function(event)
- {
- if (FBTrace.DBG_INSPECT)
- {
- FBTrace.sysout("onInspectingMouseDown event", {originalTarget: event.originalTarget,
- tmpRealOriginalTarget:event.tmpRealOriginalTarget, event:event});
- }
-
- // Allow to scroll the document while inspecting
- if (event.originalTarget && event.originalTarget.tagName == "xul:thumb")
- return;
-
- Events.cancelEvent(event);
- },
-
- /**
- * Trap mouseup events to prevent clicking a document from triggering a document's mouseup
- * event when inspecting.
- *
- * @param {Event} event Used for tracing and canceling the event
- */
- onInspectingMouseUp: function(event)
- {
- if (FBTrace.DBG_INSPECT)
- {
- FBTrace.sysout("onInspectingMouseUp event", {originalTarget: event.originalTarget,
- tmpRealOriginalTarget:event.tmpRealOriginalTarget,event:event});
- }
-
- // Allow to release scrollbar while inspecting
- if (event.originalTarget && event.originalTarget.tagName == "xul:thumb")
- return;
-
- this.stopInspecting(false, true);
-
- Events.cancelEvent(event);
- },
-
- /**
- * Trap click events to prevent clicking a document from triggering a document's click event
- * when inspecting and removes the click inspect listener.
- *
- * @param {Event} event Used for tracing and canceling the event
- */
- onInspectingClick: function(event)
- {
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("onInspectingClick event", event);
-
- var win = event.currentTarget.defaultView;
- if (win)
- {
- win = Win.getRootWindow(win);
- this.detachClickInspectListeners(win);
- }
-
- Events.cancelEvent(event);
- },
-
- /**
- * Trap keypress events to allow manipulation of the hovered elements
- *
- * @param {Event} event Used for canceling the event
- */
- onInspectingKeyPress: function(event)
- {
- if (event.keyCode == KeyEvent.DOM_VK_DELETE)
- {
- Events.dispatch(this.fbListeners, "onBeginFirebugChange", [this.inspectingNode, this]);
- this.inspectingNode.parentNode.removeChild(this.inspectingNode);
- Events.dispatch(this.fbListeners, "onEndFirebugChange", [this.inspectingNode, this]);
- Events.cancelEvent(event);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Module
-
- /**
- * Initialize the inspector
- */
- initialize: function()
- {
- Firebug.Module.initialize.apply(this, arguments);
-
- this.onInspectingResizeWindow = Obj.bind(this.onInspectingResizeWindow, this);
- this.onInspectingScroll = Obj.bind(this.onInspectingScroll, this);
- this.onInspectingMouseOver = Obj.bind(this.onInspectingMouseOver, this);
- this.onInspectingMouseDown = Obj.bind(this.onInspectingMouseDown, this);
- this.onInspectingMouseUp = Obj.bind(this.onInspectingMouseUp, this);
- this.onInspectingClick = Obj.bind(this.onInspectingClick, this);
- this.onInspectingKeyPress = Obj.bind(this.onInspectingKeyPress, this);
- this.onPanelChanged = Obj.bind(this.onPanelChanged, this);
-
- this.updateOption("shadeBoxModel", Firebug.shadeBoxModel);
- this.updateOption("showQuickInfoBox", Firebug.showQuickInfoBox);
-
- var panelBar1 = Firebug.chrome.$("fbPanelBar1");
- Events.addEventListener(panelBar1, "selectPanel", this.onPanelChanged, false);
-
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("inspector.initialize;");
- },
-
- shutdown: function()
- {
- Firebug.Module.shutdown.apply(this, arguments);
-
- var panelBar1 = Firebug.chrome.$("fbPanelBar1");
- Events.removeEventListener(panelBar1, "selectPanel", this.onPanelChanged, false);
- },
-
- /**
- * Stop inspecting and delete timers.
- * @param {Window} context Context of the main window
- */
- destroyContext: function(context)
- {
- if (context.highlightTimeout)
- {
- context.clearTimeout(context.highlightTimeout);
- delete context.highlightTimeout;
- }
-
- if (this.inspecting)
- this.stopInspecting(true);
- },
-
- /**
- */
- unwatchWindow: function(context, win)
- {
- try
- {
- QuickInfoBox.hideQuickInfoBox();
- this.inspectNode(null);
- }
- catch (ex)
- {
- // Get unfortunate errors here sometimes, so let's just ignore them since the
- // window is going away anyhow
- }
- },
-
- /**
- * Called when a FF tab is created or activated (user changes FF tab). We stop inspecting
- * in this situation.
- *
- * @param {xul:browser} [browser] Browser
- * @param {Window} [context] The main browser window
- */
- showContext: function(browser, context)
- {
- if (this.inspecting)
- this.stopInspecting(true);
- },
-
- /**
- * Called when a panel is shown.
- * @param {xul:browser} [browser] Browser
- * @param {Panel} [panel] Panel
- */
- showPanel: function(browser, panel)
- {
- // Don't disable the cmd_toggleInspecting command. The related shortcut <key> must
- // be available even if Firebug is not activated for the site. See 4452
- // The panel can be null (if disabled) so use the global context.
- // var context = Firebug.currentContext;
- // var disabled = (context && context.loaded) ? false : true;
- // Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleInspecting", "disabled", disabled);
- },
-
- /**
- * Called after a context's page gets DOMContentLoaded. We enable inspection here.
- * @param {Window} [context] Context of the main window
- */
- loadedContext: function(context)
- {
- // See the comment in showPanel.
- // Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleInspecting", "disabled", "false");
- },
-
- /**
- * Update the shadeBoxModel or showQuickInfoBox options
- * @param {String} name Either "shadeBoxModel" or "showQuickInfoBox"
- * @param {Boolean} value Enable or Disable the option
- */
- updateOption: function(name, value)
- {
- if (name == "shadeBoxModel")
- {
- this.highlightObject(null);
- this.defaultHighlighter = value ? getHighlighter("boxModel") : getHighlighter("frame");
- }
- else if(name == "showQuickInfoBox")
- {
- QuickInfoBox.boxEnabled = value;
- }
- },
-
- /**
- * Gets stylesheet by Url.
- * @param {Window} context the main browser window
- * @param {String} url URL of the stylesheet
- */
- getObjectByURL: function(context, url)
- {
- var styleSheet = Css.getStyleSheetByHref(url, context);
- if (styleSheet)
- return styleSheet;
- },
-});
-
-// ********************************************************************************************* //
-// Local Helpers
-
-function getHighlighter(type)
-{
- switch (type)
- {
- case "boxModel":
- if (!boxModelHighlighter)
- boxModelHighlighter = new BoxModelHighlighter();
-
- return boxModelHighlighter;
-
- case "frame":
- if (!frameHighlighter)
- frameHighlighter = new Firebug.Inspector.FrameHighlighter();
-
- return frameHighlighter;
- }
-}
-
-function pad(element, t, r, b, l)
-{
- var css = "padding:" + Math.abs(t) + "px " + Math.abs(r) + "px "
- + Math.abs(b) + "px " + Math.abs(l) + "px !important;";
-
- if (element)
- element.style.cssText = css;
- else
- return css;
-}
-
-function moveImp(element, x, y)
-{
- var css = "left:" + x + "px !important;top:" + y + "px !important;";
-
- if (element)
- element.style.cssText = css;
- else
- return css;
-}
-
-function resizeImp(element, w, h)
-{
- var css = "width:" + w + "px !important;height:" + h + "px !important;";
-
- if (element)
- element.style.cssText = css;
- else
- return css;
-}
-
-// ********************************************************************************************* //
-// Imagemap Highlighter
-
-function getImageMapHighlighter(context)
-{
- if (!context)
- return;
-
- var canvas, ctx, mx, my;
- var doc = context.window.document;
-
- var init = function(elt)
- {
- if (elt)
- doc = elt.ownerDocument;
-
- canvas = doc.getElementById("firebugCanvas");
-
- if (!canvas)
- {
- canvas = doc.createElementNS("http://www.w3.org/1999/xhtml", "canvas");
- hideElementFromInspection(canvas);
- canvas.id = "firebugCanvas";
- canvas.className = "firebugResetStyles firebugBlockBackgroundColor firebugCanvas";
- canvas.width = context.window.innerWidth;
- canvas.height = context.window.innerHeight;
-
- Events.addEventListener(context.window, "scroll", function()
- {
- context.imageMapHighlighter.show(false);
- }, true);
-
- Events.addEventListener(doc, "mousemove", function(event)
- {
- mx = event.clientX;
- my = event.clientY;
- }, true);
-
- doc.body.appendChild(canvas);
- }
- };
-
- if (!context.imageMapHighlighter)
- {
- context.imageMapHighlighter =
- {
- ident: ident.imageMap,
-
- show: function(state)
- {
- if (!canvas)
- init(null);
-
- canvas.style.cssText = "display:"+(state ? "block" : "none")+" !important";
- },
-
- getImages: function(mapName, multi)
- {
- if (!mapName)
- return;
-
- var xpe = new XPathEvaluator();
- var nsResolver = xpe.createNSResolver(doc.documentElement);
-
- var elts = xpe.evaluate("//map[@name='" + mapName + "']", doc,
- nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
-
- if (elts.snapshotLength === 0)
- return;
-
- elts = xpe.evaluate("(//img | //input)[@usemap='#" + mapName + "']",
- doc.documentElement, nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
- var eltsLen = elts.snapshotLength;
-
- var images = [];
- for (var i = 0; i < eltsLen; ++i)
- {
- var elt = elts.snapshotItem(i);
- var rect = Dom.getLTRBWH(elt);
-
- if (multi)
- {
- images.push(elt);
- }
- else if (rect.left <= mx && rect.right >= mx && rect.top <= my &&
- rect.bottom >= my)
- {
- images[0] = elt;
- break;
- }
- }
-
- return images;
- },
-
- highlight: function(eltArea, multi)
- {
- if (!eltArea || !eltArea.coords)
- return;
-
- var images = this.getImages(eltArea.parentNode.name, multi) || [];
-
- init(eltArea);
-
- var v = eltArea.coords.split(",");
-
- if (!ctx)
- ctx = canvas.getContext("2d");
-
- ctx.fillStyle = "rgba(135, 206, 235, 0.7)";
- ctx.strokeStyle = "rgb(44, 167, 220)";
- ctx.lineWidth = 2;
-
- if (images.length == 0)
- images[0] = eltArea;
-
- for (var j = 0, imagesLen = images.length; j < imagesLen; ++j)
- {
- var rect = Dom.getLTRBWH(images[j], context);
-
- ctx.beginPath();
-
- if (!multi || (multi && j===0))
- ctx.clearRect(0, 0, canvas.width, canvas.height);
-
- var shape = eltArea.shape.toLowerCase();
-
- if (shape === "rect")
- {
- ctx.rect(rect.left + parseInt(v[0], 10), rect.top + parseInt(v[1], 10), v[2] - v[0], v[3] - v[1]);
- }
- else if (shape === "circle")
- {
- ctx.arc(rect.left + parseInt(v[0], 10) + ctx.lineWidth / 2, rect.top + parseInt(v[1], 10) + ctx.lineWidth / 2, v[2], 0, Math.PI / 180 * 360, false);
- }
- else
- {
- var vLen = v.length;
- ctx.moveTo(rect.left + parseInt(v[0], 10), rect.top + parseInt(v[1], 10));
- for (var i = 2; i < vLen; i += 2)
- ctx.lineTo(rect.left + parseInt(v[i], 10), rect.top + parseInt(v[i + 1], 10));
- ctx.lineTo(rect.left + parseInt(v[0], 10), rect.top + parseInt(v[1], 10));
- }
-
- ctx.fill();
- ctx.stroke();
- ctx.closePath();
- }
-
- this.show(true);
- },
-
- destroy: function()
- {
- this.show(false);
- canvas = null;
- ctx = null;
- }
- };
- }
-
- return context.imageMapHighlighter;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-Firebug.Inspector.FrameHighlighter = function()
-{
-};
-
-Firebug.Inspector.FrameHighlighter.prototype =
-{
- ident: ident.frame,
-
- doNotHighlight: function(element)
- {
- return false; // (element instanceof XULElement);
- },
-
- highlight: function(context, element, extra, colorObj, isMulti)
- {
- if (this.doNotHighlight(element))
- return;
-
- // if a single color was passed in lets use it as the border color
- if (typeof colorObj === "string")
- colorObj = {background: "transparent", border: colorObj};
- else
- colorObj = colorObj || {background: "transparent", border: "highlight"};
-
- Firebug.Inspector.attachRepaintInspectListeners(context, element);
- storeHighlighterParams(this, context, element, null, colorObj, null, isMulti);
-
- var cs;
- var offset = Dom.getLTRBWH(element);
- var x = offset.left, y = offset.top;
- var w = offset.width, h = offset.height;
-
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("FrameHighlighter HTML tag:" + element.tagName + " x:" + x +
- " y:" + y + " w:" + w + " h:" + h);
-
- var wacked = isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h);
- if (wacked)
- {
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("FrameHighlighter.highlight has bad boxObject for " + element.tagName);
-
- return;
- }
-
- if (element.tagName !== "AREA")
- {
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("FrameHighlighter " + element.tagName);
-
- var body = Dom.getNonFrameBody(element);
- if (!body)
- return this.unhighlight(context);
-
- this.ihl && this.ihl.show(false);
-
- QuickInfoBox.show(element);
-
- var highlighter = this.getHighlighter(context, isMulti);
- var bgDiv = highlighter.firstChild;
- var css = moveImp(null, x, y) + resizeImp(null, w, h);
-
- if (Dom.isElement(element))
- {
- cs = body.ownerDocument.defaultView.getComputedStyle(element, null);
-
- if (cs.transform && cs.transform != "none")
- css += "transform: " + cs.transform + " !important;" +
- "transform-origin: " + cs.transformOrigin + " !important;";
- if (cs.borderRadius)
- css += "border-radius: " + cs.borderRadius + " !important;";
- if (cs.borderTopLeftRadius)
- css += "border-top-left-radius: " + cs.borderTopLeftRadius + " !important;";
- if (cs.borderTopRightRadius)
- css += "border-top-right-radius: " + cs.borderTopRightRadius + " !important;";
- if (cs.borderBottomRightRadius)
- css += "border-bottom-right-radius: " + cs.borderBottomRightRadius + " !important;";
- if (cs.borderBottomLeftRadius)
- css += "border-bottom-left-radius: " + cs.borderBottomLeftRadius + " !important;";
- }
- css += "box-shadow: 0 0 2px 2px "+
- (colorObj && colorObj.border ? colorObj.border : "highlight")+"!important;";
-
- if (colorObj && colorObj.background)
- {
- bgDiv.style.cssText = "width: 100%!important; height: 100%!important;" +
- "background-color: "+colorObj.background+"!important; opacity: 0.6!important;";
- }
- else
- {
- bgDiv.style.cssText = "background-color: transparent!important;";
- }
-
- highlighter.style.cssText = css;
-
- var needsAppend = !highlighter.parentNode || highlighter.ownerDocument != body.ownerDocument;
- if (needsAppend)
- {
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("FrameHighlighter needsAppend: " + highlighter.ownerDocument.documentURI +
- " !?= " + body.ownerDocument.documentURI, highlighter);
-
- attachStyles(context, body.ownerDocument);
-
- try
- {
- body.appendChild(highlighter);
- }
- catch(exc)
- {
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("inspector.FrameHighlighter.highlight body.appendChild FAILS for body " +
- body + " " + exc, exc);
- }
-
- // otherwise the proxies take up screen space in browser.xul
- if (element.ownerDocument && element.ownerDocument.contentType.indexOf("xul") === -1)
- createProxiesForDisabledElements(body);
- }
- }
- else
- {
- this.ihl = getImageMapHighlighter(context);
- this.ihl.highlight(element, false);
- }
- },
-
- unhighlight: function(context)
- {
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("FrameHighlighter unhighlight", context.window.location);
-
- var highlighter = this.getHighlighter(context);
- var body = highlighter.parentNode;
- if (body)
- {
- body.removeChild(highlighter);
- QuickInfoBox.hide();
- }
-
- this.ihl && this.ihl.destroy();
- this.ihl = null;
- },
-
- getHighlighter: function(context, isMulti)
- {
- if (!isMulti)
- {
- var div = HighlighterCache.get(ident.frame);
- if (div)
- return div;
- }
-
- var doc = context.window.document;
- div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
- var div2 = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
-
- hideElementFromInspection(div);
- hideElementFromInspection(div2);
-
- div.className = "firebugResetStyles firebugBlockBackgroundColor";
- div2.className = "firebugResetStyles";
- div.appendChild(div2);
- div.ident = ident.frame;
- HighlighterCache.add(div);
- return div;
- }
-};
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-function BoxModelHighlighter()
-{
-}
-
-Firebug.Inspector.BoxModelHighlighter = BoxModelHighlighter;
-
-BoxModelHighlighter.prototype =
-{
- ident: ident.boxModel,
-
- highlight: function(context, element, boxFrame, colorObj, isMulti)
- {
- var line, contentCssText, paddingCssText, borderCssText, marginCssText,
- nodes = this.getNodes(context, isMulti),
- highlightFrame = boxFrame ? nodes[boxFrame] : null;
-
- // if a single color was passed in lets use it as the content box color
- if (typeof colorObj === "string")
- colorObj = {content: colorObj, padding: "SlateBlue", border: "#444444", margin: "#EDFF64"};
- else
- colorObj = colorObj || {content: "SkyBlue", padding: "SlateBlue", border: "#444444", margin: "#EDFF64"};
-
- Firebug.Inspector.attachRepaintInspectListeners(context, element);
- storeHighlighterParams(this, context, element, boxFrame, colorObj, null, isMulti);
-
- if (context.highlightFrame)
- Css.removeClass(context.highlightFrame, "firebugHighlightBox");
-
- if (element.tagName !== "AREA")
- {
- this.ihl && this.ihl.show(false);
-
- QuickInfoBox.show(element);
- context.highlightFrame = highlightFrame;
-
- if (highlightFrame)
- {
- Css.setClass(nodes.offset, "firebugHighlightGroup");
- Css.setClass(highlightFrame, "firebugHighlightBox");
- }
- else
- Css.removeClass(nodes.offset, "firebugHighlightGroup");
-
- var win = (element.ownerDocument ? element.ownerDocument.defaultView : null);
- if (!win)
- return;
-
- var style = win.getComputedStyle(element, "");
- if (!style)
- {
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("highlight: no style for element " + element, element);
- return;
- }
-
- var styles = Css.readBoxStyles(style);
- var offset = Dom.getLTRBWH(element);
- var x = offset.left - Math.abs(styles.marginLeft);
- var y = offset.top - Math.abs(styles.marginTop);
- var w = offset.width - (styles.paddingLeft + styles.paddingRight + styles.borderLeft + styles.borderRight);
- var h = offset.height - (styles.paddingTop + styles.paddingBottom + styles.borderTop + styles.borderBottom);
-
- moveImp(nodes.offset, x, y);
- marginCssText = pad(null, styles.marginTop, styles.marginRight, styles.marginBottom, styles.marginLeft);
- borderCssText = pad(null, styles.borderTop, styles.borderRight, styles.borderBottom, styles.borderLeft);
- paddingCssText = pad(null, styles.paddingTop, styles.paddingRight, styles.paddingBottom, styles.paddingLeft);
- contentCssText = resizeImp(null, w, h);
-
- // element.tagName !== "BODY" for issue 2447. hopefully temporary, robc
- var showLines = Firebug.showRulers && boxFrame && element.tagName !== "BODY";
- if (showLines)
- {
- var offsetParent = element.offsetParent;
-
- if (offsetParent)
- this.setNodesByOffsetParent(win, offsetParent, nodes);
-
- var left = x;
- var top = y;
- var width = w-1;
- var height = h-1;
-
- if (boxFrame == "content")
- {
- left += Math.abs(styles.marginLeft) + Math.abs(styles.borderLeft)
- + Math.abs(styles.paddingLeft);
- top += Math.abs(styles.marginTop) + Math.abs(styles.borderTop)
- + Math.abs(styles.paddingTop);
- }
- else if (boxFrame == "padding")
- {
- left += Math.abs(styles.marginLeft) + Math.abs(styles.borderLeft);
- top += Math.abs(styles.marginTop) + Math.abs(styles.borderTop);
- width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight);
- height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom);
- }
- else if (boxFrame == "border")
- {
- left += Math.abs(styles.marginLeft);
- top += Math.abs(styles.marginTop);
- width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight)
- + Math.abs(styles.borderLeft) + Math.abs(styles.borderRight);
- height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom)
- + Math.abs(styles.borderTop) + Math.abs(styles.borderBottom);
- }
- else if (boxFrame == "margin")
- {
- width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight)
- + Math.abs(styles.borderLeft) + Math.abs(styles.borderRight)
- + Math.abs(styles.marginLeft) + Math.abs(styles.marginRight);
- height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom)
- + Math.abs(styles.borderTop) + Math.abs(styles.borderBottom)
- + Math.abs(styles.marginTop) + Math.abs(styles.marginBottom);
- }
-
- moveImp(nodes.lines.top, 0, top);
- moveImp(nodes.lines.right, left + width, 0);
- moveImp(nodes.lines.bottom, 0, top + height);
- moveImp(nodes.lines.left, left, 0);
- }
-
- var body = Dom.getNonFrameBody(element);
- if (!body)
- return this.unhighlight(context);
-
- if (colorObj.content)
- nodes.content.style.cssText = contentCssText + " background-color: " + colorObj.content + " !important;";
- else
- nodes.content.style.cssText = contentCssText + " background-color: #87CEEB !important;";
-
- if (colorObj.padding)
- nodes.padding.style.cssText = paddingCssText + " background-color: " + colorObj.padding + " !important;";
- else
- nodes.padding.style.cssText = paddingCssText + " background-color: #6A5ACD !important;";
-
- if (colorObj.border)
- nodes.border.style.cssText = borderCssText + " background-color: " + colorObj.border + " !important;";
- else
- nodes.border.style.cssText = borderCssText + " background-color: #444444 !important;";
-
- if (colorObj.margin)
- nodes.margin.style.cssText = marginCssText + " background-color: " + colorObj.margin + " !important;";
- else
- nodes.margin.style.cssText = marginCssText + " background-color: #EDFF64 !important;";
-
- var needsAppend = !nodes.offset.parentNode
- || nodes.offset.parentNode.ownerDocument != body.ownerDocument;
-
- if (needsAppend)
- {
- attachStyles(context, body.ownerDocument);
- body.appendChild(nodes.offset);
- }
-
- if (showLines)
- {
- if (!nodes.lines.top.parentNode)
- {
- if (nodes.parent)
- body.appendChild(nodes.parent);
-
- for (line in nodes.lines)
- body.appendChild(nodes.lines[line]);
- }
- }
- else if (nodes.lines.top.parentNode)
- {
- if (nodes.parent)
- body.removeChild(nodes.parent);
-
- for (line in nodes.lines)
- body.removeChild(nodes.lines[line]);
- }
- }
- else
- {
- this.ihl = getImageMapHighlighter(context);
- this.ihl.highlight(element, true);
- }
- },
-
- unhighlight: function(context)
- {
- HighlighterCache.clear();
- QuickInfoBox.hide();
- },
-
- getNodes: function(context, isMulti)
- {
- if (context.window)
- {
- var doc = context.window.document;
-
- if (FBTrace.DBG_ERRORS && !doc)
- FBTrace.sysout("inspector getNodes no document for window:" + window.location);
- if (FBTrace.DBG_INSPECT && doc)
- FBTrace.sysout("inspect.getNodes doc: " + doc.location);
-
- if (!isMulti)
- {
- var nodes = HighlighterCache.get(ident.boxModel);
- if (nodes)
- return nodes;
- }
-
- var Ruler = "firebugResetStyles firebugBlockBackgroundColor firebugRuler firebugRuler";
- var Box = "firebugResetStyles firebugBlockBackgroundColor firebugLayoutBox firebugLayoutBox";
- var CustomizableBox = "firebugResetStyles firebugLayoutBox";
- var Line = "firebugResetStyles firebugBlockBackgroundColor firebugLayoutLine firebugLayoutLine";
-
- function create(className, name)
- {
- var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
- hideElementFromInspection(div);
-
- if (className !== CustomizableBox)
- div.className = className + name;
- else
- div.className = className;
-
- return div;
- }
-
- nodes =
- {
- parent: create(Box, "Parent"),
- rulerH: create(Ruler, "H"),
- rulerV: create(Ruler, "V"),
- offset: create(Box, "Offset"),
- margin: create(CustomizableBox, "Margin"),
- border: create(CustomizableBox, "Border"),
- padding: create(CustomizableBox, "Padding"),
- content: create(CustomizableBox, "Content"),
- lines: {
- top: create(Line, "Top"),
- right: create(Line, "Right"),
- bottom: create(Line, "Bottom"),
- left: create(Line, "Left")
- }
- };
-
- nodes.parent.appendChild(nodes.rulerH);
- nodes.parent.appendChild(nodes.rulerV);
- nodes.offset.appendChild(nodes.margin);
- nodes.margin.appendChild(nodes.border);
- nodes.border.appendChild(nodes.padding);
- nodes.padding.appendChild(nodes.content);
- }
-
- nodes.ident = ident.boxModel;
- HighlighterCache.add(nodes);
- return nodes;
- },
-
- setNodesByOffsetParent: function(win, offsetParent, nodes)
- {
- var parentStyle = win.getComputedStyle(offsetParent, "");
- var parentOffset = Dom.getLTRBWH(offsetParent);
- var parentX = parentOffset.left + parseInt(parentStyle.borderLeftWidth, 10);
- var parentY = parentOffset.top + parseInt(parentStyle.borderTopWidth, 10);
- var parentW = offsetParent.offsetWidth-1;
- var parentH = offsetParent.offsetHeight-1;
-
- nodes.parent.style.cssText = moveImp(null, parentX, parentY) + resizeImp(null, parentW, parentH);
-
- if (parentX < 14)
- Css.setClass(nodes.parent, "overflowRulerX");
- else
- Css.removeClass(nodes.parent, "overflowRulerX");
-
- if (parentY < 14)
- Css.setClass(nodes.parent, "overflowRulerY");
- else
- Css.removeClass(nodes.parent, "overflowRulerY");
- }
-};
-
-// ********************************************************************************************* //
-
-function attachStyles(context, doc)
-{
- if (!context.highlightStyleCache)
- context.highlightStyleCache = new WeakMap();
- var highlightStyleCache = context.highlightStyleCache;
-
- var style;
- if (highlightStyleCache.has(doc))
- {
- style = highlightStyleCache.get(doc);
- }
- else
- {
- style = Css.createStyleSheet(doc, highlightCssUrl);
- highlightStyleCache.set(doc, style);
- }
-
- // Cater for the possiblity that someone might have removed our stylesheet.
- if (!style.parentNode)
- Css.addStyleSheet(doc, style);
-}
-
-function createProxiesForDisabledElements(body)
-{
- var i, rect, div, node, cs, css,
- doc = body.ownerDocument,
- xpe = new XPathEvaluator(),
- nsResolver = xpe.createNSResolver(doc.documentElement);
-
- var result = xpe.evaluate("//*[@disabled]", doc.documentElement,
- nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
-
- var l = result.snapshotLength;
- for (i=0; i<l; i++)
- {
- node = result.snapshotItem(i);
- cs = body.ownerDocument.defaultView.getComputedStyle(node, null);
- rect = node.getBoundingClientRect();
- div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
- hideElementFromInspection(div);
- div.className = "firebugResetStyles fbProxyElement";
-
- css = moveImp(null, rect.left, rect.top + body.scrollTop) + resizeImp(null, rect.width, rect.height);
- if (cs.transform && cs.transform != "none")
- css += "transform:" + cs.transform + " !important;" +
- "transform-origin:" + cs.transformOrigin + " !important;";
- if (cs.borderRadius)
- css += "border-radius:" + cs.borderRadius + " !important;";
- if (cs.borderTopLeftRadius)
- css += "border-top-left-radius:" + cs.borderTopLeftRadius + " !important;";
- if (cs.borderTopRightRadius)
- css += "border-top-right-radius:" + cs.borderTopRightRadius + " !important;";
- if (cs.borderBottomRightRadius)
- css += "border-bottom-right-radius:" + cs.borderBottomRightRadius + " !important;";
- if (cs.borderBottomLeftRadius)
- css += "border-bottom-left-radius:" + cs.borderBottomLeftRadius + " !important;";
-
- div.style.cssText = css;
- div.fbProxyFor = node;
-
- body.appendChild(div);
- div.ident = ident.proxyElt;
- HighlighterCache.add(div);
- }
-}
-
-function isVisibleElement(elt)
-{
- var invisibleElements =
- {
- "head": true,
- "base": true,
- "basefont": true,
- "isindex": true,
- "link": true,
- "meta": true,
- "script": true,
- "style": true,
- "title": true
- };
-
- return !invisibleElements[elt.nodeName.toLowerCase()];
-}
-
-function hideElementFromInspection(elt)
-{
- if (!FBTrace.DBG_INSPECT)
- Firebug.setIgnored(elt);
-}
-
-// highlightType is only to be used for multihighlighters
-function storeHighlighterParams(highlighter, context, element, boxFrame, colorObj,
- highlightType, isMulti)
-{
- var fir = Firebug.Inspector.repaint;
-
- fir.highlighter = highlighter;
- fir.context = context;
- fir.element = element;
- fir.boxFrame = boxFrame;
- fir.colorObj = colorObj;
- fir.highlightType = highlightType;
- fir.isMulti = isMulti;
-
- Firebug.Inspector.highlightedContext = context;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.Inspector);
-
-return Firebug.Inspector;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/firefox",
+ "firebug/chrome/reps",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/wrapper",
+ "firebug/lib/array",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/xml",
+ "firebug/chrome/window",
+ "firebug/lib/system",
+ "firebug/html/highlighterCache",
+ "firebug/html/quickInfoBox",
+],
+function(Obj, Firebug, Firefox, FirebugReps, Locale, Events, Wrapper, Arr, Css, Dom, Xml,
+ Win, System, HighlighterCache, QuickInfoBox) {
+
+// ********************************************************************************************* //
+// Constants
+
+const inspectDelay = 200;
+const highlightCssUrl = "chrome://firebug/content/html/highlighter.css";
+const ident = HighlighterCache.ident;
+const Cu = Components.utils;
+
+// ********************************************************************************************* //
+// Globals
+
+var boxModelHighlighter = null;
+var frameHighlighter = null;
+
+// ********************************************************************************************* //
+
+/**
+ * @module Implements Firebug Inspector logic.
+ */
+Firebug.Inspector = Obj.extend(Firebug.Module,
+{
+ dispatchName: "inspector",
+ inspecting: false,
+ inspectingPanel: null,
+
+ /**
+ * Main highlighter method. Can be used to highlight elements using the box model,
+ * frame or image map highlighters. Can highlight single or multiple elements.
+ *
+ * Examples:
+ * Firebug.Inspector.highlightObject([window.content.document.getElementById("gbar"),
+ * window.content.document.getElementById("logo")],
+ * window.content, "frame", null,
+ * ["#ff0000",{background:"#0000ff", border:"#ff0000"}])
+ * or
+ * Firebug.Inspector.highlightObject([window.content.document.getElementById("gbar"),
+ * window.content.document.getElementById("logo")], window.content, "boxModel", null,
+ * [{content: "#ff0000", padding: "#eeeeee", border: "#00ff00", margin: "#0000ff"},
+ * {content: "#00ff00", padding: "#eeeeee", border: "#00ff00", margin: "#0000ff"}])
+ *
+ * @param {Array} elementArr Elements to highlight
+ * @param {Window} context Context of the elements to be highlighted
+ * @param {String} [highlightType] Either "frame" or "boxModel". Default is configurable.
+ * @param {String} [boxFrame] Displays the line guides for the box model layout view.
+ * Valid values are: "content", "padding", "border" or "margin"
+ * @param {String | Array} [colorObj] Any valid html color e.g. red, #f00, #ff0000, etc.,
+ * a valid color object or any valid highlighter color array.
+ */
+ highlightObject: function(elementArr, context, highlightType, boxFrame, colorObj)
+ {
+ var i, elt, elementLen, oldContext, usingColorArray;
+ var highlighter = highlightType ? getHighlighter(highlightType) : this.defaultHighlighter;
+
+ if (!elementArr || !Arr.isArrayLike(elementArr))
+ {
+ // Not everything that comes through here is wrapped - fix that.
+ elementArr = Wrapper.wrapObject(elementArr);
+
+ // highlight a single element
+ if (!elementArr || !Dom.isElement(elementArr) ||
+ (typeof elementArr === "object" && !Xml.isVisible(elementArr)))
+ {
+ if (elementArr && Dom.isRange(elementArr))
+ elementArr = elementArr;
+ else if (elementArr && elementArr.nodeType == Node.TEXT_NODE)
+ elementArr = elementArr.parentNode;
+ else
+ elementArr = null;
+ }
+
+ if (elementArr && context && context.highlightTimeout)
+ {
+ context.clearTimeout(context.highlightTimeout);
+ delete context.highlightTimeout;
+ }
+
+ oldContext = this.highlightedContext;
+ if (oldContext && oldContext.window)
+ this.clearAllHighlights();
+
+ // Stop multi element highlighting
+ if (!elementArr)
+ this.repaint.element = null;
+
+ this.highlighter = highlighter;
+ this.highlightedContext = context;
+
+ if (elementArr)
+ {
+ if (elementArr.nodeName && !isVisibleElement(elementArr))
+ highlighter.unhighlight(context);
+ else if (context && context.window && context.window.document)
+ highlighter.highlight(context, elementArr, boxFrame, colorObj, false);
+ }
+ else if (oldContext)
+ {
+ oldContext.highlightTimeout = oldContext.setTimeout(function()
+ {
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("Removing inspector highlighter due to setTimeout loop");
+
+ if (!oldContext.highlightTimeout)
+ return;
+
+ delete oldContext.highlightTimeout;
+
+ if (oldContext.window && oldContext.window.document)
+ {
+ highlighter.unhighlight(oldContext);
+ }
+ }, inspectDelay);
+ }
+ }
+ else
+ {
+ // Highlight multiple elements
+ if (context && context.highlightTimeout)
+ {
+ context.clearTimeout(context.highlightTimeout);
+ delete context.highlightTimeout;
+ }
+
+ this.clearAllHighlights();
+ usingColorArray = Arr.isArray(colorObj);
+
+ if (context && context.window && context.window.document)
+ {
+ for (i=0, elementLen=elementArr.length; i<elementLen; i++)
+ {
+ // Like above, wrap things.
+ elt = Wrapper.wrapObject(elementArr[i]);
+
+ if (elt && elt instanceof HTMLElement)
+ {
+ if (elt.nodeType == Node.TEXT_NODE)
+ elt = elt.parentNode;
+
+ var obj = usingColorArray ? colorObj[i] : colorObj;
+ highlighter.highlight(context, elt, null, obj, true);
+ }
+ }
+ }
+
+ storeHighlighterParams(null, context, elementArr, null, colorObj, highlightType, true);
+ }
+ },
+
+ /**
+ * Clear all highlighted areas on a page.
+ */
+ clearAllHighlights: function()
+ {
+ HighlighterCache.clear();
+ },
+
+ /**
+ * Toggle inspecting on / off
+ * @param {Window} [context] The window to begin inspecting in, necessary to toggle inspecting on.
+ */
+ toggleInspecting: function(context)
+ {
+ if (this.inspecting)
+ this.stopInspecting(true);
+ else
+ this.startInspecting(context);
+ },
+
+ /**
+ * Check if the new panel has the inspectable property set. If so set it as the new inspectingPanel.
+ */
+ onPanelChanged: function()
+ {
+ if (this.inspecting)
+ {
+ var panelBar1 = Firebug.chrome.$("fbPanelBar1");
+ var panel = panelBar1.selectedPanel;
+
+ if (panel && panel.inspectable)
+ {
+ this.inspectNode(null);
+ this.inspectingPanel = panel;
+ }
+ }
+ },
+
+ /**
+ * Turn inspecting on.
+ * @param {Window} context The main browser window
+ */
+ startInspecting: function(context)
+ {
+ if (this.inspecting || !context || !context.loaded)
+ return;
+
+ this.clearAllHighlights();
+
+ this.inspecting = true;
+ this.inspectingContext = context;
+
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleInspecting", "checked", "true");
+ this.attachInspectListeners(context);
+
+ var inspectingPanelName = this._resolveInspectingPanelName(context);
+ this.inspectingPanel = Firebug.chrome.switchToPanel(context, inspectingPanelName);
+
+ if (Firebug.isDetached())
+ context.window.focus();
+ else if (Firebug.isMinimized())
+ Firebug.showBar(true);
+
+ this.inspectingPanel.panelNode.focus();
+ this.inspectingPanel.startInspecting();
+
+ Events.dispatch(this.fbListeners, "onStartInspecting", [context]);
+
+ if (context.stopped)
+ Firebug.Debugger.thaw(context);
+
+ var hoverNodes = context.window.document.querySelectorAll(":hover");
+
+ if (hoverNodes.length != 0)
+ this.inspectNode(hoverNodes[hoverNodes.length-1]);
+ },
+
+ /**
+ * Highlight a node using the frame highlighter. Can only be used after inspecting has already started.
+ * @param {Element} node The element to inspect
+ */
+ inspectNode: function(node)
+ {
+ if (node && node.nodeType != Node.ELEMENT_NODE)
+ node = node.parentNode;
+
+ if (node && Firebug.shouldIgnore(node) && !node.fbProxyFor)
+ return;
+
+ var context = this.inspectingContext;
+
+ if (this.inspectTimeout)
+ {
+ context.clearTimeout(this.inspectTimeout);
+ delete this.inspectTimeout;
+ }
+
+ if (node && node.fbProxyFor)
+ node = node.fbProxyFor;
+
+ var inspectingPanel = this.inspectingPanel;
+
+ // Some panels may want to only allow inspection of panel-supported objects
+ node = inspectingPanel ? inspectingPanel.getInspectNode(node) : node;
+
+ var highlightColor = inspectingPanel ? inspectingPanel.inspectHighlightColor : "";
+ this.highlightObject(node, context, "frame", undefined, highlightColor);
+
+ this.inspectingNode = node;
+
+ if (node)
+ {
+ var _this = this;
+
+ this.inspectTimeout = context.setTimeout(function()
+ {
+ var selection = inspectingPanel ? inspectingPanel.inspectNode(node) : null;
+ Events.dispatch(_this.fbListeners, "onInspectNode", [context, node]);
+ if (selection)
+ inspectingPanel.select(node);
+ }, inspectDelay);
+ }
+ },
+
+ /**
+ * Stop inspecting and clear all highlights.
+ * @param {Boolean} canceled Indicates whether inspect was canceled (usually via the escape key)
+ * @param {Boolean} [waitForClick] Indicates whether the next click will still forward you
+ * to the clicked element in the HTML panel.
+ */
+ stopInspecting: function(canceled, waitForClick)
+ {
+ if (!this.inspecting)
+ return;
+
+ var context = this.inspectingContext;
+
+ if (context.stopped)
+ Firebug.Debugger.freeze(context);
+
+ if (this.inspectTimeout)
+ {
+ context.clearTimeout(this.inspectTimeout);
+ delete this.inspectTimeout;
+ }
+
+ this.detachInspectListeners(context);
+ if (!waitForClick)
+ this.detachClickInspectListeners(context.window);
+
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleInspecting", "checked", "false");
+
+ this.inspecting = false;
+
+ if (this.inspectingPanel)
+ {
+ Firebug.chrome.unswitchToPanel(context, this.inspectingPanel.name, canceled);
+ this.inspectingPanel.stopInspecting(this.inspectingNode, canceled);
+ }
+ else
+ {
+ FBTrace.sysout("inspector.stopInspecting; ERROR? inspectingPanel is NULL");
+ }
+
+ Events.dispatch(this.fbListeners, "onStopInspecting", [context, this.inspectingNode, canceled]);
+
+ this.inspectNode(null);
+
+ // Make sure there are no (indirect) references to the page document.
+ this.inspectingPanel = null;
+ this.inspectingContext = null;
+
+ if (Firebug.isDetached())
+ window.focus();
+ },
+
+ /**
+ * Get the name of the inspectable panel.
+ * @param {Window} context Context of the panel
+ */
+ _resolveInspectingPanelName: function(context)
+ {
+ var requestingPanel = context && context.getPanel(context.panelName);
+
+ return (requestingPanel && requestingPanel.inspectable) ? requestingPanel.name : "html";
+ },
+
+ /**
+ * Inspect from context menu.
+ * @param {Element} elt The element to inspect
+ */
+ inspectFromContextMenu: function(elt)
+ {
+ var panel;
+ var inspectingPanelName = "html";
+
+ Firebug.toggleBar(true, inspectingPanelName);
+ Firebug.chrome.select(elt, inspectingPanelName);
+ panel = Firebug.chrome.selectPanel(inspectingPanelName);
+ panel.panelNode.focus();
+ },
+
+ /**
+ * Navigate up and down through the DOM and highlight the result. This method is used by
+ * the key handlers for the up and down arrow keys.
+ *
+ * @param {String} dir Direction to navigate the Dom, either "up" or "down"
+ */
+ inspectNodeBy: function(dir)
+ {
+ var target;
+ var node = this.inspectingNode;
+
+ if (dir == "up")
+ {
+ target = Firebug.chrome.getNextObject();
+ }
+ else if (dir == "down")
+ {
+ target = Firebug.chrome.getNextObject(true);
+ if (node && !target)
+ {
+ target = node.contentDocument ?
+ node.contentDocument.documentElement : Dom.getNextElement(node.firstChild);
+ }
+ }
+
+ if (target && Dom.isElement(target))
+ this.inspectNode(target);
+ else
+ System.beep();
+ },
+
+ /**
+ * Repaint the highlighter. Called from the window scroll and resize handlers.
+ */
+ repaint: function()
+ {
+ var rp = this.repaint;
+ var highlighter = rp.highlighter;
+ var context = rp.context;
+ var element = rp.element;
+ var boxFrame = rp.boxFrame;
+ var colorObj = rp.colorObj;
+ var highlightType = rp.highlightType;
+ var isMulti = rp.isMulti;
+
+ if (!context || (!highlighter && !isMulti))
+ return;
+
+ if (isMulti && element)
+ {
+ this.highlightObject(element, context, highlightType, null, colorObj);
+ }
+ else if (!isMulti)
+ {
+ var highlighterNode = HighlighterCache.get(highlighter.ident);
+
+ if (highlighterNode && highlighter.ident === ident.boxModel)
+ highlighterNode = highlighterNode.offset;
+
+ if (highlighterNode && highlighterNode.parentNode)
+ {
+ this.clearAllHighlights();
+ highlighter.highlight(context, element, boxFrame, colorObj, isMulti);
+ }
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /**
+ * Attach the scroll and resize handlers to elt's window. Called from every highlight call.
+ * @param {Element} elt Passed in order to reliably obtain context
+ */
+ attachRepaintInspectListeners: function(context, elt)
+ {
+ if (!elt || !elt.ownerDocument || !elt.ownerDocument.defaultView)
+ return;
+
+ var win = elt.ownerDocument.defaultView;
+
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("inspector.attachRepaintInspectListeners to " + win.location.href, elt);
+
+ // there is no way to check if the listeners have already been added and we should
+ // avoid adding properties to the users page.
+ // Adding them again will do no harm so lets just do that.
+
+ // xxxHonza: I think that adding them twice could actually do harm,
+ // so make sure they are removed before.
+ context.removeEventListener(win.document, "resize", this.onInspectingResizeWindow, true);
+ context.removeEventListener(win.document, "scroll", this.onInspectingScroll, true);
+
+ // Register again.
+ context.addEventListener(win.document, "resize", this.onInspectingResizeWindow, true);
+ context.addEventListener(win.document, "scroll", this.onInspectingScroll, true);
+ },
+
+ /**
+ * Attach key and mouse events to windows recursively.
+ * @param {Window} context Context of the main browser window
+ */
+ attachInspectListeners: function(context)
+ {
+ var win = context.window;
+ if (!win || !win.document)
+ return;
+
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("inspector.attachInspectListeners to all subWindows of " + win.location);
+
+ var chrome = Firebug.chrome;
+
+ this.keyListeners =
+ [
+ chrome.keyCodeListen("RETURN", null, Obj.bindFixed(this.stopInspecting, this)),
+ chrome.keyCodeListen("ESCAPE", null, Obj.bindFixed(this.stopInspecting, this, true)),
+ chrome.keyCodeListen("UP", Events.isControl, Obj.bindFixed(this.inspectNodeBy, this,
+ "up"), true),
+ chrome.keyCodeListen("DOWN", Events.isControl, Obj.bindFixed(this.inspectNodeBy, this,
+ "down"), true),
+ ];
+
+ Win.iterateWindows(win, Obj.bind(function(subWin)
+ {
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("inspector.attacheInspectListeners to " + subWin.location +
+ " subWindow of " + win.location);
+
+ Events.addEventListener(subWin.document, "mouseover", this.onInspectingMouseOver,
+ true);
+ Events.addEventListener(subWin.document, "mousedown", this.onInspectingMouseDown,
+ true);
+ Events.addEventListener(subWin.document, "mouseup", this.onInspectingMouseUp, true);
+ Events.addEventListener(subWin.document, "click", this.onInspectingClick, true);
+ Events.addEventListener(subWin.document, "keypress", this.onInspectingKeyPress, true);
+ }, this));
+ },
+
+ /**
+ * Remove all event listeners except click listener from windows recursively.
+ * @param {Window} context Context of the main browser window
+ */
+ detachInspectListeners: function(context)
+ {
+ var i, keyListenersLen;
+ var win = context.window;
+
+ if (!win || !win.document)
+ return;
+
+ var chrome = Firebug.chrome;
+
+ if (this.keyListeners) // XXXjjb for some reason this is null sometimes.
+ {
+ keyListenersLen = this.keyListeners.length;
+ for (i = 0; i < keyListenersLen; ++i)
+ chrome.keyIgnore(this.keyListeners[i]);
+ delete this.keyListeners;
+ }
+
+ Win.iterateWindows(win, Obj.bind(function(subWin)
+ {
+ Events.removeEventListener(subWin.document, "mouseover", this.onInspectingMouseOver,
+ true);
+ Events.removeEventListener(subWin.document, "mousedown", this.onInspectingMouseDown,
+ true);
+ Events.removeEventListener(subWin.document, "mouseup", this.onInspectingMouseUp, true);
+ Events.removeEventListener(subWin.document, "keypress", this.onInspectingKeyPress,
+ true);
+ }, this));
+ },
+
+ /**
+ * Remove the click listener independently from detachInspectListeners because if we remove
+ * it after mousedown, we won't be able to cancel clicked links.
+ *
+ * @param {Window} context Context of the main browser window
+ */
+ detachClickInspectListeners: function(context)
+ {
+ Win.iterateWindows(context, Obj.bind(function(subWin)
+ {
+ Events.removeEventListener(subWin.document, "click", this.onInspectingClick, true);
+ }, this));
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /**
+ * Repaint last highlight in the correct position on window resize.
+ * @param {Event} event Passed for tracing
+ */
+ onInspectingResizeWindow: function(event)
+ {
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("onInspectingResizeWindow event", event);
+
+ this.repaint();
+ },
+
+ /**
+ * Repaint last highlight in the correct position on scroll.
+ * @param {Event} event Passed for tracing
+ */
+ onInspectingScroll: function(event)
+ {
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("onInspectingScroll event", event);
+
+ this.repaint();
+ },
+
+ /**
+ * Call inspectNode(event.target) highlighting the element that was moused over.
+ * @param {Event} event Passed for tracing and to identify the target of inspection
+ */
+ onInspectingMouseOver: function(event)
+ {
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("onInspectingMouseOver event", event);
+
+ this.inspectNode(event.target);
+ },
+
+ /**
+ * Trap mousedown events to prevent clicking a document from triggering a document's
+ * mousedown event when inspecting.
+ *
+ * @param {Event} event Used for tracing and canceling the event
+ */
+ onInspectingMouseDown: function(event)
+ {
+ if (FBTrace.DBG_INSPECT)
+ {
+ FBTrace.sysout("onInspectingMouseDown event", {originalTarget: event.originalTarget,
+ tmpRealOriginalTarget:event.tmpRealOriginalTarget, event:event});
+ }
+
+ // Allow to scroll the document while inspecting
+ if (event.originalTarget && event.originalTarget.tagName == "xul:thumb")
+ return;
+
+ Events.cancelEvent(event);
+ },
+
+ /**
+ * Trap mouseup events to prevent clicking a document from triggering a document's mouseup
+ * event when inspecting.
+ *
+ * @param {Event} event Used for tracing and canceling the event
+ */
+ onInspectingMouseUp: function(event)
+ {
+ if (FBTrace.DBG_INSPECT)
+ {
+ FBTrace.sysout("onInspectingMouseUp event", {originalTarget: event.originalTarget,
+ tmpRealOriginalTarget:event.tmpRealOriginalTarget,event:event});
+ }
+
+ // Allow to release scrollbar while inspecting
+ if (event.originalTarget && event.originalTarget.tagName == "xul:thumb")
+ return;
+
+ this.stopInspecting(false, true);
+
+ Events.cancelEvent(event);
+ },
+
+ /**
+ * Trap click events to prevent clicking a document from triggering a document's click event
+ * when inspecting and removes the click inspect listener.
+ *
+ * @param {Event} event Used for tracing and canceling the event
+ */
+ onInspectingClick: function(event)
+ {
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("onInspectingClick event", event);
+
+ var win = event.currentTarget.defaultView;
+ if (win)
+ {
+ win = Win.getRootWindow(win);
+ this.detachClickInspectListeners(win);
+ }
+
+ Events.cancelEvent(event);
+ },
+
+ /**
+ * Trap keypress events to allow manipulation of the hovered elements
+ *
+ * @param {Event} event Used for canceling the event
+ */
+ onInspectingKeyPress: function(event)
+ {
+ if (event.keyCode == KeyEvent.DOM_VK_DELETE)
+ {
+ Events.dispatch(this.fbListeners, "onBeginFirebugChange", [this.inspectingNode, this]);
+ this.inspectingNode.parentNode.removeChild(this.inspectingNode);
+ Events.dispatch(this.fbListeners, "onEndFirebugChange", [this.inspectingNode, this]);
+ Events.cancelEvent(event);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Module
+
+ /**
+ * Initialize the inspector
+ */
+ initialize: function()
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+
+ this.onInspectingResizeWindow = Obj.bind(this.onInspectingResizeWindow, this);
+ this.onInspectingScroll = Obj.bind(this.onInspectingScroll, this);
+ this.onInspectingMouseOver = Obj.bind(this.onInspectingMouseOver, this);
+ this.onInspectingMouseDown = Obj.bind(this.onInspectingMouseDown, this);
+ this.onInspectingMouseUp = Obj.bind(this.onInspectingMouseUp, this);
+ this.onInspectingClick = Obj.bind(this.onInspectingClick, this);
+ this.onInspectingKeyPress = Obj.bind(this.onInspectingKeyPress, this);
+ this.onPanelChanged = Obj.bind(this.onPanelChanged, this);
+
+ this.updateOption("shadeBoxModel", Firebug.shadeBoxModel);
+ this.updateOption("showQuickInfoBox", Firebug.showQuickInfoBox);
+
+ var panelBar1 = Firebug.chrome.$("fbPanelBar1");
+ Events.addEventListener(panelBar1, "selectPanel", this.onPanelChanged, false);
+
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("inspector.initialize;");
+ },
+
+ shutdown: function()
+ {
+ Firebug.Module.shutdown.apply(this, arguments);
+
+ var panelBar1 = Firebug.chrome.$("fbPanelBar1");
+ Events.removeEventListener(panelBar1, "selectPanel", this.onPanelChanged, false);
+ },
+
+ /**
+ * Stop inspecting and delete timers.
+ * @param {Window} context Context of the main window
+ */
+ destroyContext: function(context)
+ {
+ if (context.highlightTimeout)
+ {
+ context.clearTimeout(context.highlightTimeout);
+ delete context.highlightTimeout;
+ }
+
+ if (this.inspecting)
+ this.stopInspecting(true);
+ },
+
+ /**
+ */
+ unwatchWindow: function(context, win)
+ {
+ try
+ {
+ QuickInfoBox.hideQuickInfoBox();
+ this.inspectNode(null);
+ }
+ catch (ex)
+ {
+ // Get unfortunate errors here sometimes, so let's just ignore them since the
+ // window is going away anyhow
+ }
+ },
+
+ /**
+ * Called when a FF tab is created or activated (user changes FF tab). We stop inspecting
+ * in this situation.
+ *
+ * @param {xul:browser} [browser] Browser
+ * @param {Window} [context] The main browser window
+ */
+ showContext: function(browser, context)
+ {
+ if (this.inspecting)
+ this.stopInspecting(true);
+ },
+
+ /**
+ * Called when a panel is shown.
+ * @param {xul:browser} [browser] Browser
+ * @param {Panel} [panel] Panel
+ */
+ showPanel: function(browser, panel)
+ {
+ // Don't disable the cmd_toggleInspecting command. The related shortcut <key> must
+ // be available even if Firebug is not activated for the site. See 4452
+ // The panel can be null (if disabled) so use the global context.
+ // var context = Firebug.currentContext;
+ // var disabled = (context && context.loaded) ? false : true;
+ // Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleInspecting", "disabled", disabled);
+ },
+
+ /**
+ * Called after a context's page gets DOMContentLoaded. We enable inspection here.
+ * @param {Window} [context] Context of the main window
+ */
+ loadedContext: function(context)
+ {
+ // See the comment in showPanel.
+ // Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleInspecting", "disabled", "false");
+ },
+
+ /**
+ * Update the shadeBoxModel or showQuickInfoBox options
+ * @param {String} name Either "shadeBoxModel" or "showQuickInfoBox"
+ * @param {Boolean} value Enable or Disable the option
+ */
+ updateOption: function(name, value)
+ {
+ if (name == "shadeBoxModel")
+ {
+ this.highlightObject(null);
+ this.defaultHighlighter = value ? getHighlighter("boxModel") : getHighlighter("frame");
+ }
+ else if(name == "showQuickInfoBox")
+ {
+ QuickInfoBox.boxEnabled = value;
+ }
+ },
+
+ /**
+ * Gets stylesheet by Url.
+ * @param {Window} context the main browser window
+ * @param {String} url URL of the stylesheet
+ */
+ getObjectByURL: function(context, url)
+ {
+ var styleSheet = Css.getStyleSheetByHref(url, context);
+ if (styleSheet)
+ return styleSheet;
+ },
+});
+
+// ********************************************************************************************* //
+// Local Helpers
+
+function getHighlighter(type)
+{
+ switch (type)
+ {
+ case "boxModel":
+ if (!boxModelHighlighter)
+ boxModelHighlighter = new BoxModelHighlighter();
+
+ return boxModelHighlighter;
+
+ case "frame":
+ if (!frameHighlighter)
+ frameHighlighter = new Firebug.Inspector.FrameHighlighter();
+
+ return frameHighlighter;
+ }
+}
+
+function pad(element, t, r, b, l)
+{
+ var css = "padding:" + Math.abs(t) + "px " + Math.abs(r) + "px "
+ + Math.abs(b) + "px " + Math.abs(l) + "px !important;";
+
+ if (element)
+ element.style.cssText = css;
+ else
+ return css;
+}
+
+function moveImp(element, x, y)
+{
+ var css = "left:" + x + "px !important;top:" + y + "px !important;";
+
+ if (element)
+ element.style.cssText = css;
+ else
+ return css;
+}
+
+function resizeImp(element, w, h)
+{
+ var css = "width:" + w + "px !important;height:" + h + "px !important;";
+
+ if (element)
+ element.style.cssText = css;
+ else
+ return css;
+}
+
+// ********************************************************************************************* //
+// Imagemap Highlighter
+
+function getImageMapHighlighter(context)
+{
+ if (!context)
+ return;
+
+ var canvas, ctx, mx, my;
+ var doc = context.window.document;
+
+ var init = function(elt)
+ {
+ if (elt)
+ doc = elt.ownerDocument;
+
+ canvas = doc.getElementById("firebugCanvas");
+
+ if (!canvas)
+ {
+ canvas = doc.createElementNS("http://www.w3.org/1999/xhtml", "canvas");
+ hideElementFromInspection(canvas);
+ canvas.id = "firebugCanvas";
+ canvas.className = "firebugResetStyles firebugBlockBackgroundColor firebugCanvas";
+ canvas.width = context.window.innerWidth;
+ canvas.height = context.window.innerHeight;
+
+ Events.addEventListener(context.window, "scroll", function()
+ {
+ context.imageMapHighlighter.show(false);
+ }, true);
+
+ Events.addEventListener(doc, "mousemove", function(event)
+ {
+ mx = event.clientX;
+ my = event.clientY;
+ }, true);
+
+ doc.body.appendChild(canvas);
+ }
+ };
+
+ if (!context.imageMapHighlighter)
+ {
+ context.imageMapHighlighter =
+ {
+ ident: ident.imageMap,
+
+ show: function(state)
+ {
+ if (!canvas)
+ init(null);
+
+ canvas.style.cssText = "display:"+(state ? "block" : "none")+" !important";
+ },
+
+ getImages: function(mapName, multi)
+ {
+ if (!mapName)
+ return;
+
+ var xpe = new XPathEvaluator();
+ var nsResolver = xpe.createNSResolver(doc.documentElement);
+
+ var elts = xpe.evaluate("//map[@name='" + mapName + "']", doc,
+ nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+
+ if (elts.snapshotLength === 0)
+ return;
+
+ elts = xpe.evaluate("(//img | //input)[@usemap='#" + mapName + "']",
+ doc.documentElement, nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+ var eltsLen = elts.snapshotLength;
+
+ var images = [];
+ for (var i = 0; i < eltsLen; ++i)
+ {
+ var elt = elts.snapshotItem(i);
+ var rect = Dom.getLTRBWH(elt);
+
+ if (multi)
+ {
+ images.push(elt);
+ }
+ else if (rect.left <= mx && rect.right >= mx && rect.top <= my &&
+ rect.bottom >= my)
+ {
+ images[0] = elt;
+ break;
+ }
+ }
+
+ return images;
+ },
+
+ highlight: function(eltArea, multi)
+ {
+ if (!eltArea || !eltArea.coords)
+ return;
+
+ var images = this.getImages(eltArea.parentNode.name, multi) || [];
+
+ init(eltArea);
+
+ var v = eltArea.coords.split(",");
+
+ if (!ctx)
+ ctx = canvas.getContext("2d");
+
+ ctx.fillStyle = "rgba(135, 206, 235, 0.7)";
+ ctx.strokeStyle = "rgb(44, 167, 220)";
+ ctx.lineWidth = 2;
+
+ if (images.length == 0)
+ images[0] = eltArea;
+
+ for (var j = 0, imagesLen = images.length; j < imagesLen; ++j)
+ {
+ var rect = Dom.getLTRBWH(images[j], context);
+
+ ctx.beginPath();
+
+ if (!multi || (multi && j===0))
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+
+ var shape = eltArea.shape.toLowerCase();
+
+ if (shape === "rect")
+ {
+ ctx.rect(rect.left + parseInt(v[0], 10), rect.top + parseInt(v[1], 10), v[2] - v[0], v[3] - v[1]);
+ }
+ else if (shape === "circle")
+ {
+ ctx.arc(rect.left + parseInt(v[0], 10) + ctx.lineWidth / 2, rect.top + parseInt(v[1], 10) + ctx.lineWidth / 2, v[2], 0, Math.PI / 180 * 360, false);
+ }
+ else
+ {
+ var vLen = v.length;
+ ctx.moveTo(rect.left + parseInt(v[0], 10), rect.top + parseInt(v[1], 10));
+ for (var i = 2; i < vLen; i += 2)
+ ctx.lineTo(rect.left + parseInt(v[i], 10), rect.top + parseInt(v[i + 1], 10));
+ ctx.lineTo(rect.left + parseInt(v[0], 10), rect.top + parseInt(v[1], 10));
+ }
+
+ ctx.fill();
+ ctx.stroke();
+ ctx.closePath();
+ }
+
+ this.show(true);
+ },
+
+ destroy: function()
+ {
+ this.show(false);
+ canvas = null;
+ ctx = null;
+ }
+ };
+ }
+
+ return context.imageMapHighlighter;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+Firebug.Inspector.FrameHighlighter = function()
+{
+};
+
+Firebug.Inspector.FrameHighlighter.prototype =
+{
+ ident: ident.frame,
+
+ doNotHighlight: function(element)
+ {
+ return false; // (element instanceof XULElement);
+ },
+
+ highlight: function(context, element, extra, colorObj, isMulti)
+ {
+ if (this.doNotHighlight(element))
+ return;
+
+ // if a single color was passed in lets use it as the border color
+ if (typeof colorObj === "string")
+ colorObj = {background: "transparent", border: colorObj};
+ else
+ colorObj = colorObj || {background: "transparent", border: "highlight"};
+
+ Firebug.Inspector.attachRepaintInspectListeners(context, element);
+ storeHighlighterParams(this, context, element, null, colorObj, null, isMulti);
+
+ var cs;
+ var offset = Dom.getLTRBWH(element);
+ var x = offset.left, y = offset.top;
+ var w = offset.width, h = offset.height;
+
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("FrameHighlighter HTML tag:" + element.tagName + " x:" + x +
+ " y:" + y + " w:" + w + " h:" + h);
+
+ var wacked = isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h);
+ if (wacked)
+ {
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("FrameHighlighter.highlight has bad boxObject for " + element.tagName);
+
+ return;
+ }
+
+ if (element.tagName !== "AREA")
+ {
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("FrameHighlighter " + element.tagName);
+
+ var body = Dom.getNonFrameBody(element);
+ if (!body)
+ return this.unhighlight(context);
+
+ this.ihl && this.ihl.show(false);
+
+ QuickInfoBox.show(element);
+
+ var highlighter = this.getHighlighter(context, isMulti);
+ var bgDiv = highlighter.firstChild;
+ var css = moveImp(null, x, y) + resizeImp(null, w, h);
+
+ if (Dom.isElement(element))
+ {
+ cs = body.ownerDocument.defaultView.getComputedStyle(element, null);
+
+ if (cs.transform && cs.transform != "none")
+ css += "transform: " + cs.transform + " !important;" +
+ "transform-origin: " + cs.transformOrigin + " !important;";
+ if (cs.borderRadius)
+ css += "border-radius: " + cs.borderRadius + " !important;";
+ if (cs.borderTopLeftRadius)
+ css += "border-top-left-radius: " + cs.borderTopLeftRadius + " !important;";
+ if (cs.borderTopRightRadius)
+ css += "border-top-right-radius: " + cs.borderTopRightRadius + " !important;";
+ if (cs.borderBottomRightRadius)
+ css += "border-bottom-right-radius: " + cs.borderBottomRightRadius + " !important;";
+ if (cs.borderBottomLeftRadius)
+ css += "border-bottom-left-radius: " + cs.borderBottomLeftRadius + " !important;";
+ }
+ css += "box-shadow: 0 0 2px 2px "+
+ (colorObj && colorObj.border ? colorObj.border : "highlight")+"!important;";
+
+ if (colorObj && colorObj.background)
+ {
+ bgDiv.style.cssText = "width: 100%!important; height: 100%!important;" +
+ "background-color: "+colorObj.background+"!important; opacity: 0.6!important;";
+ }
+ else
+ {
+ bgDiv.style.cssText = "background-color: transparent!important;";
+ }
+
+ highlighter.style.cssText = css;
+
+ var needsAppend = !highlighter.parentNode || highlighter.ownerDocument != body.ownerDocument;
+ if (needsAppend)
+ {
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("FrameHighlighter needsAppend: " + highlighter.ownerDocument.documentURI +
+ " !?= " + body.ownerDocument.documentURI, highlighter);
+
+ attachStyles(context, body.ownerDocument);
+
+ try
+ {
+ body.appendChild(highlighter);
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("inspector.FrameHighlighter.highlight body.appendChild FAILS for body " +
+ body + " " + exc, exc);
+ }
+
+ // otherwise the proxies take up screen space in browser.xul
+ if (element.ownerDocument && element.ownerDocument.contentType.indexOf("xul") === -1)
+ createProxiesForDisabledElements(body);
+ }
+ }
+ else
+ {
+ this.ihl = getImageMapHighlighter(context);
+ this.ihl.highlight(element, false);
+ }
+ },
+
+ unhighlight: function(context)
+ {
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("FrameHighlighter unhighlight", context.window.location);
+
+ var highlighter = this.getHighlighter(context);
+ var body = highlighter.parentNode;
+ if (body)
+ {
+ body.removeChild(highlighter);
+ QuickInfoBox.hide();
+ }
+
+ this.ihl && this.ihl.destroy();
+ this.ihl = null;
+ },
+
+ getHighlighter: function(context, isMulti)
+ {
+ if (!isMulti)
+ {
+ var div = HighlighterCache.get(ident.frame);
+ if (div)
+ return div;
+ }
+
+ var doc = context.window.document;
+ div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
+ var div2 = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
+
+ hideElementFromInspection(div);
+ hideElementFromInspection(div2);
+
+ div.className = "firebugResetStyles firebugBlockBackgroundColor";
+ div2.className = "firebugResetStyles";
+ div.appendChild(div2);
+ div.ident = ident.frame;
+ HighlighterCache.add(div);
+ return div;
+ }
+};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+function BoxModelHighlighter()
+{
+}
+
+Firebug.Inspector.BoxModelHighlighter = BoxModelHighlighter;
+
+BoxModelHighlighter.prototype =
+{
+ ident: ident.boxModel,
+
+ highlight: function(context, element, boxFrame, colorObj, isMulti)
+ {
+ var line, contentCssText, paddingCssText, borderCssText, marginCssText,
+ nodes = this.getNodes(context, isMulti),
+ highlightFrame = boxFrame ? nodes[boxFrame] : null;
+
+ // if a single color was passed in lets use it as the content box color
+ if (typeof colorObj === "string")
+ colorObj = {content: colorObj, padding: "SlateBlue", border: "#444444", margin: "#EDFF64"};
+ else
+ colorObj = colorObj || {content: "SkyBlue", padding: "SlateBlue", border: "#444444", margin: "#EDFF64"};
+
+ Firebug.Inspector.attachRepaintInspectListeners(context, element);
+ storeHighlighterParams(this, context, element, boxFrame, colorObj, null, isMulti);
+
+ if (context.highlightFrame)
+ Css.removeClass(context.highlightFrame, "firebugHighlightBox");
+
+ if (element.tagName !== "AREA")
+ {
+ this.ihl && this.ihl.show(false);
+
+ QuickInfoBox.show(element);
+ context.highlightFrame = highlightFrame;
+
+ if (highlightFrame)
+ {
+ Css.setClass(nodes.offset, "firebugHighlightGroup");
+ Css.setClass(highlightFrame, "firebugHighlightBox");
+ }
+ else
+ Css.removeClass(nodes.offset, "firebugHighlightGroup");
+
+ var win = (element.ownerDocument ? element.ownerDocument.defaultView : null);
+ if (!win)
+ return;
+
+ var style = win.getComputedStyle(element, "");
+ if (!style)
+ {
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("highlight: no style for element " + element, element);
+ return;
+ }
+
+ var styles = Css.readBoxStyles(style);
+ var offset = Dom.getLTRBWH(element);
+ var x = offset.left - Math.abs(styles.marginLeft);
+ var y = offset.top - Math.abs(styles.marginTop);
+ var w = offset.width - (styles.paddingLeft + styles.paddingRight + styles.borderLeft + styles.borderRight);
+ var h = offset.height - (styles.paddingTop + styles.paddingBottom + styles.borderTop + styles.borderBottom);
+
+ moveImp(nodes.offset, x, y);
+ marginCssText = pad(null, styles.marginTop, styles.marginRight, styles.marginBottom, styles.marginLeft);
+ borderCssText = pad(null, styles.borderTop, styles.borderRight, styles.borderBottom, styles.borderLeft);
+ paddingCssText = pad(null, styles.paddingTop, styles.paddingRight, styles.paddingBottom, styles.paddingLeft);
+ contentCssText = resizeImp(null, w, h);
+
+ // element.tagName !== "BODY" for issue 2447. hopefully temporary, robc
+ var showLines = Firebug.showRulers && boxFrame && element.tagName !== "BODY";
+ if (showLines)
+ {
+ var offsetParent = element.offsetParent;
+
+ if (offsetParent)
+ this.setNodesByOffsetParent(win, offsetParent, nodes);
+
+ var left = x;
+ var top = y;
+ var width = w-1;
+ var height = h-1;
+
+ if (boxFrame == "content")
+ {
+ left += Math.abs(styles.marginLeft) + Math.abs(styles.borderLeft)
+ + Math.abs(styles.paddingLeft);
+ top += Math.abs(styles.marginTop) + Math.abs(styles.borderTop)
+ + Math.abs(styles.paddingTop);
+ }
+ else if (boxFrame == "padding")
+ {
+ left += Math.abs(styles.marginLeft) + Math.abs(styles.borderLeft);
+ top += Math.abs(styles.marginTop) + Math.abs(styles.borderTop);
+ width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight);
+ height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom);
+ }
+ else if (boxFrame == "border")
+ {
+ left += Math.abs(styles.marginLeft);
+ top += Math.abs(styles.marginTop);
+ width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight)
+ + Math.abs(styles.borderLeft) + Math.abs(styles.borderRight);
+ height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom)
+ + Math.abs(styles.borderTop) + Math.abs(styles.borderBottom);
+ }
+ else if (boxFrame == "margin")
+ {
+ width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight)
+ + Math.abs(styles.borderLeft) + Math.abs(styles.borderRight)
+ + Math.abs(styles.marginLeft) + Math.abs(styles.marginRight);
+ height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom)
+ + Math.abs(styles.borderTop) + Math.abs(styles.borderBottom)
+ + Math.abs(styles.marginTop) + Math.abs(styles.marginBottom);
+ }
+
+ moveImp(nodes.lines.top, 0, top);
+ moveImp(nodes.lines.right, left + width, 0);
+ moveImp(nodes.lines.bottom, 0, top + height);
+ moveImp(nodes.lines.left, left, 0);
+ }
+
+ var body = Dom.getNonFrameBody(element);
+ if (!body)
+ return this.unhighlight(context);
+
+ if (colorObj.content)
+ nodes.content.style.cssText = contentCssText + " background-color: " + colorObj.content + " !important;";
+ else
+ nodes.content.style.cssText = contentCssText + " background-color: #87CEEB !important;";
+
+ if (colorObj.padding)
+ nodes.padding.style.cssText = paddingCssText + " background-color: " + colorObj.padding + " !important;";
+ else
+ nodes.padding.style.cssText = paddingCssText + " background-color: #6A5ACD !important;";
+
+ if (colorObj.border)
+ nodes.border.style.cssText = borderCssText + " background-color: " + colorObj.border + " !important;";
+ else
+ nodes.border.style.cssText = borderCssText + " background-color: #444444 !important;";
+
+ if (colorObj.margin)
+ nodes.margin.style.cssText = marginCssText + " background-color: " + colorObj.margin + " !important;";
+ else
+ nodes.margin.style.cssText = marginCssText + " background-color: #EDFF64 !important;";
+
+ var needsAppend = !nodes.offset.parentNode
+ || nodes.offset.parentNode.ownerDocument != body.ownerDocument;
+
+ if (needsAppend)
+ {
+ attachStyles(context, body.ownerDocument);
+ body.appendChild(nodes.offset);
+ }
+
+ if (showLines)
+ {
+ if (!nodes.lines.top.parentNode)
+ {
+ if (nodes.parent)
+ body.appendChild(nodes.parent);
+
+ for (line in nodes.lines)
+ body.appendChild(nodes.lines[line]);
+ }
+ }
+ else if (nodes.lines.top.parentNode)
+ {
+ if (nodes.parent)
+ body.removeChild(nodes.parent);
+
+ for (line in nodes.lines)
+ body.removeChild(nodes.lines[line]);
+ }
+ }
+ else
+ {
+ this.ihl = getImageMapHighlighter(context);
+ this.ihl.highlight(element, true);
+ }
+ },
+
+ unhighlight: function(context)
+ {
+ HighlighterCache.clear();
+ QuickInfoBox.hide();
+ },
+
+ getNodes: function(context, isMulti)
+ {
+ if (context.window)
+ {
+ var doc = context.window.document;
+
+ if (FBTrace.DBG_ERRORS && !doc)
+ FBTrace.sysout("inspector getNodes no document for window:" + window.location);
+ if (FBTrace.DBG_INSPECT && doc)
+ FBTrace.sysout("inspect.getNodes doc: " + doc.location);
+
+ if (!isMulti)
+ {
+ var nodes = HighlighterCache.get(ident.boxModel);
+ if (nodes)
+ return nodes;
+ }
+
+ var Ruler = "firebugResetStyles firebugBlockBackgroundColor firebugRuler firebugRuler";
+ var Box = "firebugResetStyles firebugBlockBackgroundColor firebugLayoutBox firebugLayoutBox";
+ var CustomizableBox = "firebugResetStyles firebugLayoutBox";
+ var Line = "firebugResetStyles firebugBlockBackgroundColor firebugLayoutLine firebugLayoutLine";
+
+ function create(className, name)
+ {
+ var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
+ hideElementFromInspection(div);
+
+ if (className !== CustomizableBox)
+ div.className = className + name;
+ else
+ div.className = className;
+
+ return div;
+ }
+
+ nodes =
+ {
+ parent: create(Box, "Parent"),
+ rulerH: create(Ruler, "H"),
+ rulerV: create(Ruler, "V"),
+ offset: create(Box, "Offset"),
+ margin: create(CustomizableBox, "Margin"),
+ border: create(CustomizableBox, "Border"),
+ padding: create(CustomizableBox, "Padding"),
+ content: create(CustomizableBox, "Content"),
+ lines: {
+ top: create(Line, "Top"),
+ right: create(Line, "Right"),
+ bottom: create(Line, "Bottom"),
+ left: create(Line, "Left")
+ }
+ };
+
+ nodes.parent.appendChild(nodes.rulerH);
+ nodes.parent.appendChild(nodes.rulerV);
+ nodes.offset.appendChild(nodes.margin);
+ nodes.margin.appendChild(nodes.border);
+ nodes.border.appendChild(nodes.padding);
+ nodes.padding.appendChild(nodes.content);
+ }
+
+ nodes.ident = ident.boxModel;
+ HighlighterCache.add(nodes);
+ return nodes;
+ },
+
+ setNodesByOffsetParent: function(win, offsetParent, nodes)
+ {
+ var parentStyle = win.getComputedStyle(offsetParent, "");
+ var parentOffset = Dom.getLTRBWH(offsetParent);
+ var parentX = parentOffset.left + parseInt(parentStyle.borderLeftWidth, 10);
+ var parentY = parentOffset.top + parseInt(parentStyle.borderTopWidth, 10);
+ var parentW = offsetParent.offsetWidth-1;
+ var parentH = offsetParent.offsetHeight-1;
+
+ nodes.parent.style.cssText = moveImp(null, parentX, parentY) + resizeImp(null, parentW, parentH);
+
+ if (parentX < 14)
+ Css.setClass(nodes.parent, "overflowRulerX");
+ else
+ Css.removeClass(nodes.parent, "overflowRulerX");
+
+ if (parentY < 14)
+ Css.setClass(nodes.parent, "overflowRulerY");
+ else
+ Css.removeClass(nodes.parent, "overflowRulerY");
+ }
+};
+
+// ********************************************************************************************* //
+
+function attachStyles(context, doc)
+{
+ if (!context.highlightStyleCache)
+ context.highlightStyleCache = new WeakMap();
+ var highlightStyleCache = context.highlightStyleCache;
+
+ var style;
+ if (highlightStyleCache.has(doc))
+ {
+ style = highlightStyleCache.get(doc);
+ }
+ else
+ {
+ style = Css.createStyleSheet(doc, highlightCssUrl);
+ highlightStyleCache.set(doc, style);
+ }
+
+ // Cater for the possiblity that someone might have removed our stylesheet.
+ if (!style.parentNode)
+ Css.addStyleSheet(doc, style);
+}
+
+function createProxiesForDisabledElements(body)
+{
+ var i, rect, div, node, cs, css,
+ doc = body.ownerDocument,
+ xpe = new XPathEvaluator(),
+ nsResolver = xpe.createNSResolver(doc.documentElement);
+
+ var result = xpe.evaluate("//*[@disabled]", doc.documentElement,
+ nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+
+ var l = result.snapshotLength;
+ for (i=0; i<l; i++)
+ {
+ node = result.snapshotItem(i);
+ cs = body.ownerDocument.defaultView.getComputedStyle(node, null);
+ rect = node.getBoundingClientRect();
+ div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
+ hideElementFromInspection(div);
+ div.className = "firebugResetStyles fbProxyElement";
+
+ css = moveImp(null, rect.left, rect.top + body.scrollTop) + resizeImp(null, rect.width, rect.height);
+ if (cs.transform && cs.transform != "none")
+ css += "transform:" + cs.transform + " !important;" +
+ "transform-origin:" + cs.transformOrigin + " !important;";
+ if (cs.borderRadius)
+ css += "border-radius:" + cs.borderRadius + " !important;";
+ if (cs.borderTopLeftRadius)
+ css += "border-top-left-radius:" + cs.borderTopLeftRadius + " !important;";
+ if (cs.borderTopRightRadius)
+ css += "border-top-right-radius:" + cs.borderTopRightRadius + " !important;";
+ if (cs.borderBottomRightRadius)
+ css += "border-bottom-right-radius:" + cs.borderBottomRightRadius + " !important;";
+ if (cs.borderBottomLeftRadius)
+ css += "border-bottom-left-radius:" + cs.borderBottomLeftRadius + " !important;";
+
+ div.style.cssText = css;
+ div.fbProxyFor = node;
+
+ body.appendChild(div);
+ div.ident = ident.proxyElt;
+ HighlighterCache.add(div);
+ }
+}
+
+function isVisibleElement(elt)
+{
+ var invisibleElements =
+ {
+ "head": true,
+ "base": true,
+ "basefont": true,
+ "isindex": true,
+ "link": true,
+ "meta": true,
+ "script": true,
+ "style": true,
+ "title": true
+ };
+
+ return !invisibleElements[elt.nodeName.toLowerCase()];
+}
+
+function hideElementFromInspection(elt)
+{
+ if (!FBTrace.DBG_INSPECT)
+ Firebug.setIgnored(elt);
+}
+
+// highlightType is only to be used for multihighlighters
+function storeHighlighterParams(highlighter, context, element, boxFrame, colorObj,
+ highlightType, isMulti)
+{
+ var fir = Firebug.Inspector.repaint;
+
+ fir.highlighter = highlighter;
+ fir.context = context;
+ fir.element = element;
+ fir.boxFrame = boxFrame;
+ fir.colorObj = colorObj;
+ fir.highlightType = highlightType;
+ fir.isMulti = isMulti;
+
+ Firebug.Inspector.highlightedContext = context;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.Inspector);
+
+return Firebug.Inspector;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/html/layout.js b/content/firebug/html/layout.js
index 6c88deb..57b4a1b 100644
--- a/content/firebug/html/layout.js
+++ b/content/firebug/html/layout.js
@@ -1,593 +1,593 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/xml",
- "firebug/chrome/menu",
- "firebug/editor/editor",
-],
-function(Obj, Firebug, Domplate, Locale, Events, Css, Dom, Xml, Menu) {
-
-"use strict"
-
-// ********************************************************************************************* //
-// Constants
-
-var {domplate, DIV, SPAN} = Domplate;
-
-// ********************************************************************************************* //
-// LayoutPanel Implementation
-
-/**
- * @panel Represents the Layout side panel available within the HTML panel. The Layout
- * panel allows inspecting and manipulating the layout data of the selected DOM node.
- * The layout data editing is done through {@LayoutEditor} object.
- */
-function LayoutPanel() {}
-LayoutPanel.prototype = Obj.extend(Firebug.Panel,
-/** @lends LayoutPanel */
-{
- name: "layout",
- parentPanel: "html",
- order: 2,
- enableA11y: true,
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Domplate
-
- template: domplate(
- {
- tag:
- DIV({"class": "outerLayoutBox"},
- DIV({"class": "positionLayoutBox $outerTopMode $outerRightMode " +
- "$outerBottomMode $outerLeftMode focusGroup"},
- DIV({"class": "layoutEdgeTop layoutEdge"}),
- DIV({"class": "layoutEdgeRight layoutEdge"}),
- DIV({"class": "layoutEdgeBottom layoutEdge"}),
- DIV({"class": "layoutEdgeLeft layoutEdge"}),
-
- DIV({"class": "layoutLabelBottom layoutLabel layoutLabelPosition"},
- SPAN({"class": "layoutPosition layoutCaption",
- "aria-label": Locale.$STR("a11y.layout.position")},
- Locale.$STR("position") + ": " + "$position"),
- SPAN({"class": "layoutBoxSizing layoutCaption",
- "aria-label": Locale.$STR("a11y.layout.box-sizing")},
- Locale.$STR("a11y.layout.box-sizing") + ": " + "$boxSizing"),
- SPAN({"class": "layoutZIndex", $invisible: "$zIndex|isInvisible",
- "aria-label": Locale.$STR("a11y.layout.z-index")},
- "z: " + "$zIndex")
- ),
-
- DIV({"class": "layoutLabelTop layoutLabel",
- $invisible: "$outerTop|isInvisible"},
- SPAN({"class": "layoutLabelOuterTop editable focusStart",
- "aria-label": Locale.$STR("a11y.layout.position top")},
- "$outerTop"
- )
- ),
- DIV({"class": "layoutLabelRight layoutLabel",
- $invisible: "$outerRight|isInvisible"},
- SPAN({"class": "layoutLabelOuterRight editable",
- "aria-label": Locale.$STR("a11y.layout.position right")},
- "$outerRight"
- )
- ),
- DIV({"class": "layoutLabelBottom layoutLabel",
- $invisible: "$outerBottom|isInvisible"},
- SPAN({"class": "layoutLabelOuterBottom editable",
- "aria-label": Locale.$STR("a11y.layout.position bottom")},
- "$outerBottom"
- )
- ),
- DIV({"class": "layoutLabelLeft layoutLabel",
- $invisible: "$outerLeft|isInvisible"},
- SPAN({"class": "layoutLabelOuterLeft editable",
- "aria-label": Locale.$STR("a11y.layout.position left")},
- "$outerLeft"
- )
- ),
-
- DIV({"class": "outerLabel layoutCaption"}, "$outerLabel"),
-
-
- DIV({"class": "marginLayoutBox layoutBox editGroup focusGroup"},
- DIV({"class": "layoutCaption"}, Locale.$STR("LayoutMargin")),
- DIV({"class": "layoutLabelTop layoutLabel",
- $invisible: "$marginTop|isInvisible"},
- SPAN({"class": "layoutLabelMarginTop editable focusStart",
- "aria-label": Locale.$STR("a11y.layout.margin top")},
- "$marginTop"
- )
- ),
- DIV({"class": "layoutLabelRight layoutLabel",
- $invisible: "$marginRight|isInvisible"},
- SPAN({"class": "layoutLabelMarginRight editable",
- "aria-label": Locale.$STR("a11y.layout.margin right")},
- "$marginRight"
- )
- ),
- DIV({"class": "layoutLabelBottom layoutLabel",
- $invisible: "$marginBottom|isInvisible"},
- SPAN({"class": "layoutLabelMarginBottom editable",
- "aria-label": Locale.$STR("a11y.layout.margin bottom")},
- "$marginBottom"
- )
- ),
- DIV({"class": "layoutLabelLeft layoutLabel",
- $invisible: "$marginLeft|isInvisible"},
- SPAN({"class": "layoutLabelMarginLeft editable",
- "aria-label": Locale.$STR("a11y.layout.margin left")},
- "$marginLeft"
- )
- ),
-
- DIV({"class": "borderLayoutBox layoutBox editGroup focusGroup"},
- DIV({"class": "layoutCaption"}, Locale.$STR("LayoutBorder")),
- DIV({"class": "layoutLabelTop layoutLabel",
- $invisible: "$borderTop|isInvisible"},
- SPAN({"class": "layoutLabelBorderTop editable focusStart",
- "aria-label": Locale.$STR("a11y.layout.border top")},
- "$borderTop"
- )
- ),
- DIV({"class": "layoutLabelRight layoutLabel",
- $invisible: "$borderRight|isInvisible"},
- SPAN({"class": "layoutLabelBorderRight editable",
- "aria-label": Locale.$STR("a11y.layout.border right")},
- "$borderRight"
- )
- ),
- DIV({"class": "layoutLabelBottom layoutLabel",
- $invisible: "$borderBottom|isInvisible"},
- SPAN({"class": "layoutLabelBorderBottom editable",
- "aria-label": Locale.$STR("a11y.layout.border bottom")},
- "$borderBottom"
- )
- ),
- DIV({"class": "layoutLabelLeft layoutLabel",
- $invisible: "$borderLeft|isInvisible"},
- SPAN({"class": "layoutLabelBorderLeft editable",
- "aria-label": Locale.$STR("a11y.layout.border left")},
- "$borderLeft"
- )
- ),
-
- DIV({"class": "paddingLayoutBox layoutBox editGroup focusGroup"},
- DIV({"class": "layoutCaption"}, Locale.$STR("LayoutPadding")),
- DIV({"class": "layoutLabelTop layoutLabel",
- $invisible: "$paddingTop|isInvisible"},
- SPAN({"class": "layoutLabelPaddingTop editable focusStart",
- "aria-label": Locale.$STR("a11y.layout.padding top")},
- "$paddingTop"
- )
- ),
- DIV({"class": "layoutLabelRight layoutLabel",
- $invisible: "$paddingRight|isInvisible"},
- SPAN(
- {
- "class": "layoutLabelPaddingRight editable",
- "aria-label":
- Locale.$STR("a11y.layout.padding right")
- },
- "$paddingRight"
- )
- ),
- DIV({"class": "layoutLabelBottom layoutLabel",
- $invisible: "$paddingBottom|isInvisible"},
- SPAN(
- {
- "class": "layoutLabelPaddingBottom editable",
- "aria-label":
- Locale.$STR("a11y.layout.padding bottom")
- },
- "$paddingBottom"
- )
- ),
- DIV({"class": "layoutLabelLeft layoutLabel",
- $invisible: "$paddingLeft|isInvisible"},
- SPAN({"class": "layoutLabelPaddingLeft editable",
- "aria-label": Locale.$STR("a11y.layout.padding left")},
- "$paddingLeft"
- )
- ),
-
- DIV({"class": "contentLayoutBox layoutBox editGroup focusGroup"},
- DIV({"class": "layoutLabelCenter layoutLabel"},
- SPAN({"class": "layoutLabelWidth layoutLabel editable "+
- "focusStart",
- "aria-label": Locale.$STR("a11y.layout.width")},
- "$width"
- ),
- " x ",
- SPAN({"class": "layoutLabelHeight layoutLabel editable",
- "aria-label": Locale.$STR("a11y.layout.height")},
- "$height"
- )
- )
- )
- )
- )
- )
- )
- ),
-
- isInvisible: function(value)
- {
- return value == 0;
- }
- }),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onMouseOver: function(event)
- {
- var layoutBox = Dom.getAncestorByClass(event.target, "layoutBox");
- var boxFrame = layoutBox ? getBoxFrame(layoutBox) : null;
-
- if (this.highlightedBox)
- Css.removeClass(this.highlightedBox, "highlighted");
-
- this.highlightedBox = layoutBox;
-
- if (layoutBox)
- Css.setClass(layoutBox, "highlighted");
-
- Firebug.Inspector.highlightObject(this.selection, this.context, "boxModel", boxFrame);
- },
-
- onMouseOut: function(event)
- {
- var nextTarget = event.relatedTarget;
- if (nextTarget && Dom.getAncestorByClass(nextTarget, "layoutBox"))
- return;
-
- if (this.highlightedBox)
- Css.removeClass(this.highlightedBox, "highlighted");
-
- this.highlightedBox = null;
-
- Firebug.Inspector.highlightObject(null, null, "boxModel");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Extends Panel
-
- initialize: function()
- {
- this.onMouseOver = Obj.bind(this.onMouseOver, this);
- this.onMouseOut = Obj.bind(this.onMouseOut, this);
- this.onAfterPaint = Obj.bindFixed(this.onMozAfterPaint, this);
-
- Firebug.Panel.initialize.apply(this, arguments);
- },
-
- initializeNode: function(oldPanelNode)
- {
- Events.addEventListener(this.panelNode, "mouseover", this.onMouseOver, false);
- Events.addEventListener(this.panelNode, "mouseout", this.onMouseOut, false);
-
- Firebug.Panel.initializeNode.apply(this, arguments);
- },
-
- destroyNode: function()
- {
- Events.removeEventListener(this.panelNode, "mouseover", this.onMouseOver, false);
- Events.removeEventListener(this.panelNode, "mouseout", this.onMouseOut, false);
-
- Firebug.Panel.destroyNode.apply(this, arguments);
- },
-
- show: function(state)
- {
- Events.addEventListener(this.context.browser, "MozAfterPaint", this.onAfterPaint, true);
- },
-
- hide: function()
- {
- Events.removeEventListener(this.context.browser, "MozAfterPaint", this.onAfterPaint, true);
- },
-
- supportsObject: function(object, type)
- {
- return object instanceof window.Element ? 1 : 0;
- },
-
- onMozAfterPaint: function()
- {
- // TabContext.invalidatePanels() method calls panel.refresh() on timeout and ensures
- // that it isn't executed too often. This is necessary in this case since
- // "MozAfterPaint" event can be fired very often (especially in case of animations)
- // and the update (see: updateSelection) could consume CPU cycles (see issue 6336).
- this.context.invalidatePanels("layout");
- },
-
- refresh: function()
- {
- this.updateSelection(this.selection);
- },
-
- updateSelection: function(element)
- {
- var view = element ? element.ownerDocument.defaultView : null;
- if (!view)
- return this.panelNode.textContent = "";
-
- var style = view.getComputedStyle(element, "");
- var args = Css.getBoxFromStyles(style, element);
-
- args.outerLeft = args.outerRight = args.outerTop = args.outerBottom = '';
- args.outerLeftMode = args.outerRightMode = args.outerTopMode = args.outerBottomMode = "";
- args.zIndex = args.zIndex ? args.zIndex : "auto";
-
- var boxSizing = style.getPropertyCSSValue("box-sizing") ||
- style.getPropertyCSSValue("-moz-box-sizing");
- args.boxSizing = boxSizing.cssText;
-
- var position = style.getPropertyCSSValue("position").cssText;
- args.position = position;
- args.outerLabel = "";
-
- if (Xml.isElementSVG(element) || Xml.isElementMathML(element) || Xml.isElementXUL(element))
- {
- var rect = element.getBoundingClientRect();
- // XXXjjb I believe this is incorrect. We should use the value as given by the call
- //if (rect.wrappedJSObject)
- // rect = rect.wrappedJSObject;
-
- args.width = Math.round(rect.width);
- args.height = Math.round(rect.height);
- }
-
- // these Modes are classes on the domplate
- args.outerLeftMode = args.outerRightMode = args.outerTopMode = args.outerBottomMode =
- "blankEdge";
-
- function getStyle(style, name)
- {
- var value = style.getPropertyCSSValue(name);
- return value && value.cssText ? parseInt(value.cssText) : " ";
- }
-
- if (position == "absolute" || position == "fixed" || position == "relative")
- {
- args.outerLabel = Locale.$STR("LayoutPosition");
- args.outerLeft = getStyle(style, "left");
- args.outerTop = getStyle(style, "top");
- args.outerRight = getStyle(style, "right");
- args.outerBottom = getStyle(style, "bottom");
- args.outerLeftMode = args.outerRightMode = args.outerTopMode = args.outerBottomMode =
- "absoluteEdge";
- }
-
- var node = this.panelNode.getElementsByClassName("outerLayoutBox").item(0);
- // If the layout panel content was already created, just fill in the new values
- if (node)
- {
- // The styles for the positionLayoutBox need to be set manually
- var positionLayoutBox = this.panelNode.getElementsByClassName("positionLayoutBox").
- item(0);
-
- positionLayoutBox.className = "positionLayoutBox " + args.outerTopMode + " " +
- args.outerRightMode + " " + args.outerBottomMode + " " + args.outerLeftMode +
- " focusGroup";
-
- var values =
- {
- layoutPosition: {label: Locale.$STR("position"), value: "position"},
- layoutBoxSizing: {label: Locale.$STR("a11y.layout.box-sizing"),
- value: "boxSizing"},
- layoutZIndex: {label: "z", value: "zIndex"},
- layoutLabelOuterTop: {value: "outerTop"},
- layoutLabelOuterRight: {value: "outerRight"},
- layoutLabelOuterBottom: {value: "outerBottom"},
- layoutLabelOuterLeft: {value: "outerLeft"},
- layoutLabelMarginTop: {value: "marginTop"},
- layoutLabelMarginRight: {value: "marginRight"},
- layoutLabelMarginBottom: {value: "marginBottom"},
- layoutLabelMarginLeft: {value: "marginLeft"},
- layoutLabelBorderTop: {value: "borderTop"},
- layoutLabelBorderRight: {value: "borderRight"},
- layoutLabelBorderBottom: {value: "borderBottom"},
- layoutLabelBorderLeft: {value: "borderLeft"},
- layoutLabelPaddingTop: {value: "paddingTop"},
- layoutLabelPaddingRight: {value: "paddingRight"},
- layoutLabelPaddingBottom: {value: "paddingBottom"},
- layoutLabelPaddingLeft: {value: "paddingLeft"},
- layoutLabelWidth: {value: "width"},
- layoutLabelHeight: {value: "height"},
- outerLabel: {value: "outerLabel"}
- };
-
- for (var val in values)
- {
- var element = this.panelNode.getElementsByClassName(val).item(0);
-
- element.textContent = values[val].label ?
- values[val].label+": "+args[values[val].value] : args[values[val].value];
-
- if (this.template.isInvisible(args[values[val].value]))
- Css.setClass(element.parentNode, "invisible");
- else
- Css.removeClass(element.parentNode, "invisible");
- }
- }
- else
- {
- node = this.template.tag.replace(args, this.panelNode);
- }
-
- this.adjustCharWidth(this.getMaxCharWidth(args, node), this.panelNode);
-
- Events.dispatch(this.fbListeners, "onLayoutBoxCreated", [this, node, args]);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /**
- * The nested boxes of the Layout panel have digits which need to fit between the boxes.
- * @param maxWidth: pixels the largest digit string
- * @param node: panelNode to be adjusted (from tag:)
- */
- adjustCharWidth: function(maxWidth, node)
- {
- maxWidth += 10; // margin
- if (maxWidth < 20)
- maxWidth = 20;
-
- this.adjustBoxWidth(node, "marginLayoutBox", maxWidth);
- this.adjustBoxWidth(node, "borderLayoutBox", maxWidth);
- this.adjustBoxWidth(node, "paddingLayoutBox", maxWidth);
-
- var box = node.getElementsByClassName("outerLayoutBox").item(0);
- box.style.cssText = "width: "+(240 + 3*maxWidth) + "px;"; // defaults to 300px
-
- this.adjustLabelWidth(node, "layoutLabelLeft", maxWidth);
- this.adjustLabelWidth(node, "layoutLabelRight", maxWidth);
- },
-
- /**
- * By adjusting this width, the labels can be centered.
- */
- adjustLabelWidth: function(node, labelName, maxWidth)
- {
- var labels = node.getElementsByClassName(labelName);
- for (var i = 0; i < labels.length; i++)
- labels[i].style.cssText = "width: " + maxWidth + "px;";
- },
-
- adjustBoxWidth: function(node, boxName, width)
- {
- var box = node.getElementsByClassName(boxName).item(0);
- box.style.cssText = "right: " + width + "px;" + " left: " + width + "px;";
- },
-
- getMaxCharWidth: function(args, node)
- {
- Firebug.MeasureBox.startMeasuring(node);
- var maxWidth = Math.max(
- Firebug.MeasureBox.measureText(args.marginLeft + "").width,
- Firebug.MeasureBox.measureText(args.marginRight + "").width,
- Firebug.MeasureBox.measureText(args.borderLeft + "").width,
- Firebug.MeasureBox.measureText(args.borderRight + "").width,
- Firebug.MeasureBox.measureText(args.paddingLeft + "").width,
- Firebug.MeasureBox.measureText(args.paddingRight + "").width
- );
-
- Firebug.MeasureBox.stopMeasuring();
- return maxWidth;
- },
-
- getOptionsMenuItems: function()
- {
- return [
- Menu.optionMenu("ShowRulers", "showRulers", "layout.option.tip.Show_Rulers")
- ];
- },
-
- getEditor: function(target, value)
- {
- if (!this.editor)
- this.editor = new LayoutEditor(this.document);
-
- return this.editor;
- }
-});
-
-// ********************************************************************************************* //
-// LayoutEditor Implementation
-
-function LayoutEditor(doc)
-{
- this.initializeInline(doc);
-
- this.noWrap = false;
- this.numeric = true;
-}
-
-/**
- * @editor Represents an inline editor that is used by {@LayoutPanel} to modify layout data.
- */
-LayoutEditor.prototype = domplate(Firebug.InlineEditor.prototype,
-/** @lends LayoutEditor */
-{
- saveEdit: function(target, value, previousValue)
- {
- if (!this.panel.selection.style)
- return;
-
- var labelBox = Dom.getAncestorByClass(target, "layoutLabel");
- var layoutBox = getLayoutBox(labelBox);
-
- var boxFrame = getBoxFrame(layoutBox);
- var boxEdge = getBoxEdge(labelBox);
-
- var styleName;
- if (boxFrame == "content" || boxFrame == "position")
- styleName = boxEdge.toLowerCase();
- else if (boxFrame == "border")
- styleName = boxFrame+boxEdge+"Width";
- else
- styleName = boxFrame+boxEdge;
-
- var intValue = value ? value : 0;
- this.panel.selection.style[styleName] = intValue + "px";
-
- if (Firebug.Inspector.highlightedElement == this.panel.selection)
- {
- var boxFrame = this.highlightedBox ? getBoxFrame(this.highlightedBox) : null;
- Firebug.Inspector.highlightObject(this.panel.selection, this.panel.context,
- "boxModel", boxFrame);
- }
-
- target.textContent = intValue;
- },
-
- endEditing: function(target, value, cancel)
- {
- // Don't remove groups
- return false;
- }
-});
-
-// ********************************************************************************************* //
-// Local Helpers
-
-function getLayoutBox(element)
-{
- var re = /([^\s]+)LayoutBox/;
- for (var box = element; box; box = box.parentNode)
- {
- if (re.exec(box.className))
- return box;
- }
-}
-
-function getBoxFrame(element)
-{
- var re = /([^\s]+)LayoutBox/;
- var m = re.exec(element.className);
- return m ? m[1] : "";
-}
-
-function getBoxEdge(element)
-{
- var re = /layoutLabel([^\s]+)/;
- var m = re.exec(element.className);
- return m ? m[1] : "";
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(LayoutPanel);
-
-return LayoutPanel;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/xml",
+ "firebug/chrome/menu",
+ "firebug/editor/editor",
+],
+function(Obj, Firebug, Domplate, Locale, Events, Css, Dom, Xml, Menu) {
+
+"use strict"
+
+// ********************************************************************************************* //
+// Constants
+
+var {domplate, DIV, SPAN} = Domplate;
+
+// ********************************************************************************************* //
+// LayoutPanel Implementation
+
+/**
+ * @panel Represents the Layout side panel available within the HTML panel. The Layout
+ * panel allows inspecting and manipulating the layout data of the selected DOM node.
+ * The layout data editing is done through {@LayoutEditor} object.
+ */
+function LayoutPanel() {}
+LayoutPanel.prototype = Obj.extend(Firebug.Panel,
+/** @lends LayoutPanel */
+{
+ name: "layout",
+ parentPanel: "html",
+ order: 2,
+ enableA11y: true,
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Domplate
+
+ template: domplate(
+ {
+ tag:
+ DIV({"class": "outerLayoutBox"},
+ DIV({"class": "positionLayoutBox $outerTopMode $outerRightMode " +
+ "$outerBottomMode $outerLeftMode focusGroup"},
+ DIV({"class": "layoutEdgeTop layoutEdge"}),
+ DIV({"class": "layoutEdgeRight layoutEdge"}),
+ DIV({"class": "layoutEdgeBottom layoutEdge"}),
+ DIV({"class": "layoutEdgeLeft layoutEdge"}),
+
+ DIV({"class": "layoutLabelBottom layoutLabel layoutLabelPosition"},
+ SPAN({"class": "layoutPosition layoutCaption",
+ "aria-label": Locale.$STR("a11y.layout.position")},
+ Locale.$STR("position") + ": " + "$position"),
+ SPAN({"class": "layoutBoxSizing layoutCaption",
+ "aria-label": Locale.$STR("a11y.layout.box-sizing")},
+ Locale.$STR("a11y.layout.box-sizing") + ": " + "$boxSizing"),
+ SPAN({"class": "layoutZIndex", $invisible: "$zIndex|isInvisible",
+ "aria-label": Locale.$STR("a11y.layout.z-index")},
+ "z: " + "$zIndex")
+ ),
+
+ DIV({"class": "layoutLabelTop layoutLabel",
+ $invisible: "$outerTop|isInvisible"},
+ SPAN({"class": "layoutLabelOuterTop editable focusStart",
+ "aria-label": Locale.$STR("a11y.layout.position top")},
+ "$outerTop"
+ )
+ ),
+ DIV({"class": "layoutLabelRight layoutLabel",
+ $invisible: "$outerRight|isInvisible"},
+ SPAN({"class": "layoutLabelOuterRight editable",
+ "aria-label": Locale.$STR("a11y.layout.position right")},
+ "$outerRight"
+ )
+ ),
+ DIV({"class": "layoutLabelBottom layoutLabel",
+ $invisible: "$outerBottom|isInvisible"},
+ SPAN({"class": "layoutLabelOuterBottom editable",
+ "aria-label": Locale.$STR("a11y.layout.position bottom")},
+ "$outerBottom"
+ )
+ ),
+ DIV({"class": "layoutLabelLeft layoutLabel",
+ $invisible: "$outerLeft|isInvisible"},
+ SPAN({"class": "layoutLabelOuterLeft editable",
+ "aria-label": Locale.$STR("a11y.layout.position left")},
+ "$outerLeft"
+ )
+ ),
+
+ DIV({"class": "outerLabel layoutCaption"}, "$outerLabel"),
+
+
+ DIV({"class": "marginLayoutBox layoutBox editGroup focusGroup"},
+ DIV({"class": "layoutCaption"}, Locale.$STR("LayoutMargin")),
+ DIV({"class": "layoutLabelTop layoutLabel",
+ $invisible: "$marginTop|isInvisible"},
+ SPAN({"class": "layoutLabelMarginTop editable focusStart",
+ "aria-label": Locale.$STR("a11y.layout.margin top")},
+ "$marginTop"
+ )
+ ),
+ DIV({"class": "layoutLabelRight layoutLabel",
+ $invisible: "$marginRight|isInvisible"},
+ SPAN({"class": "layoutLabelMarginRight editable",
+ "aria-label": Locale.$STR("a11y.layout.margin right")},
+ "$marginRight"
+ )
+ ),
+ DIV({"class": "layoutLabelBottom layoutLabel",
+ $invisible: "$marginBottom|isInvisible"},
+ SPAN({"class": "layoutLabelMarginBottom editable",
+ "aria-label": Locale.$STR("a11y.layout.margin bottom")},
+ "$marginBottom"
+ )
+ ),
+ DIV({"class": "layoutLabelLeft layoutLabel",
+ $invisible: "$marginLeft|isInvisible"},
+ SPAN({"class": "layoutLabelMarginLeft editable",
+ "aria-label": Locale.$STR("a11y.layout.margin left")},
+ "$marginLeft"
+ )
+ ),
+
+ DIV({"class": "borderLayoutBox layoutBox editGroup focusGroup"},
+ DIV({"class": "layoutCaption"}, Locale.$STR("LayoutBorder")),
+ DIV({"class": "layoutLabelTop layoutLabel",
+ $invisible: "$borderTop|isInvisible"},
+ SPAN({"class": "layoutLabelBorderTop editable focusStart",
+ "aria-label": Locale.$STR("a11y.layout.border top")},
+ "$borderTop"
+ )
+ ),
+ DIV({"class": "layoutLabelRight layoutLabel",
+ $invisible: "$borderRight|isInvisible"},
+ SPAN({"class": "layoutLabelBorderRight editable",
+ "aria-label": Locale.$STR("a11y.layout.border right")},
+ "$borderRight"
+ )
+ ),
+ DIV({"class": "layoutLabelBottom layoutLabel",
+ $invisible: "$borderBottom|isInvisible"},
+ SPAN({"class": "layoutLabelBorderBottom editable",
+ "aria-label": Locale.$STR("a11y.layout.border bottom")},
+ "$borderBottom"
+ )
+ ),
+ DIV({"class": "layoutLabelLeft layoutLabel",
+ $invisible: "$borderLeft|isInvisible"},
+ SPAN({"class": "layoutLabelBorderLeft editable",
+ "aria-label": Locale.$STR("a11y.layout.border left")},
+ "$borderLeft"
+ )
+ ),
+
+ DIV({"class": "paddingLayoutBox layoutBox editGroup focusGroup"},
+ DIV({"class": "layoutCaption"}, Locale.$STR("LayoutPadding")),
+ DIV({"class": "layoutLabelTop layoutLabel",
+ $invisible: "$paddingTop|isInvisible"},
+ SPAN({"class": "layoutLabelPaddingTop editable focusStart",
+ "aria-label": Locale.$STR("a11y.layout.padding top")},
+ "$paddingTop"
+ )
+ ),
+ DIV({"class": "layoutLabelRight layoutLabel",
+ $invisible: "$paddingRight|isInvisible"},
+ SPAN(
+ {
+ "class": "layoutLabelPaddingRight editable",
+ "aria-label":
+ Locale.$STR("a11y.layout.padding right")
+ },
+ "$paddingRight"
+ )
+ ),
+ DIV({"class": "layoutLabelBottom layoutLabel",
+ $invisible: "$paddingBottom|isInvisible"},
+ SPAN(
+ {
+ "class": "layoutLabelPaddingBottom editable",
+ "aria-label":
+ Locale.$STR("a11y.layout.padding bottom")
+ },
+ "$paddingBottom"
+ )
+ ),
+ DIV({"class": "layoutLabelLeft layoutLabel",
+ $invisible: "$paddingLeft|isInvisible"},
+ SPAN({"class": "layoutLabelPaddingLeft editable",
+ "aria-label": Locale.$STR("a11y.layout.padding left")},
+ "$paddingLeft"
+ )
+ ),
+
+ DIV({"class": "contentLayoutBox layoutBox editGroup focusGroup"},
+ DIV({"class": "layoutLabelCenter layoutLabel"},
+ SPAN({"class": "layoutLabelWidth layoutLabel editable "+
+ "focusStart",
+ "aria-label": Locale.$STR("a11y.layout.width")},
+ "$width"
+ ),
+ " x ",
+ SPAN({"class": "layoutLabelHeight layoutLabel editable",
+ "aria-label": Locale.$STR("a11y.layout.height")},
+ "$height"
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ ),
+
+ isInvisible: function(value)
+ {
+ return value == 0;
+ }
+ }),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onMouseOver: function(event)
+ {
+ var layoutBox = Dom.getAncestorByClass(event.target, "layoutBox");
+ var boxFrame = layoutBox ? getBoxFrame(layoutBox) : null;
+
+ if (this.highlightedBox)
+ Css.removeClass(this.highlightedBox, "highlighted");
+
+ this.highlightedBox = layoutBox;
+
+ if (layoutBox)
+ Css.setClass(layoutBox, "highlighted");
+
+ Firebug.Inspector.highlightObject(this.selection, this.context, "boxModel", boxFrame);
+ },
+
+ onMouseOut: function(event)
+ {
+ var nextTarget = event.relatedTarget;
+ if (nextTarget && Dom.getAncestorByClass(nextTarget, "layoutBox"))
+ return;
+
+ if (this.highlightedBox)
+ Css.removeClass(this.highlightedBox, "highlighted");
+
+ this.highlightedBox = null;
+
+ Firebug.Inspector.highlightObject(null, null, "boxModel");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Extends Panel
+
+ initialize: function()
+ {
+ this.onMouseOver = Obj.bind(this.onMouseOver, this);
+ this.onMouseOut = Obj.bind(this.onMouseOut, this);
+ this.onAfterPaint = Obj.bindFixed(this.onMozAfterPaint, this);
+
+ Firebug.Panel.initialize.apply(this, arguments);
+ },
+
+ initializeNode: function(oldPanelNode)
+ {
+ Events.addEventListener(this.panelNode, "mouseover", this.onMouseOver, false);
+ Events.addEventListener(this.panelNode, "mouseout", this.onMouseOut, false);
+
+ Firebug.Panel.initializeNode.apply(this, arguments);
+ },
+
+ destroyNode: function()
+ {
+ Events.removeEventListener(this.panelNode, "mouseover", this.onMouseOver, false);
+ Events.removeEventListener(this.panelNode, "mouseout", this.onMouseOut, false);
+
+ Firebug.Panel.destroyNode.apply(this, arguments);
+ },
+
+ show: function(state)
+ {
+ Events.addEventListener(this.context.browser, "MozAfterPaint", this.onAfterPaint, true);
+ },
+
+ hide: function()
+ {
+ Events.removeEventListener(this.context.browser, "MozAfterPaint", this.onAfterPaint, true);
+ },
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof window.Element ? 1 : 0;
+ },
+
+ onMozAfterPaint: function()
+ {
+ // TabContext.invalidatePanels() method calls panel.refresh() on timeout and ensures
+ // that it isn't executed too often. This is necessary in this case since
+ // "MozAfterPaint" event can be fired very often (especially in case of animations)
+ // and the update (see: updateSelection) could consume CPU cycles (see issue 6336).
+ this.context.invalidatePanels("layout");
+ },
+
+ refresh: function()
+ {
+ this.updateSelection(this.selection);
+ },
+
+ updateSelection: function(element)
+ {
+ var view = element ? element.ownerDocument.defaultView : null;
+ if (!view)
+ return this.panelNode.textContent = "";
+
+ var style = view.getComputedStyle(element, "");
+ var args = Css.getBoxFromStyles(style, element);
+
+ args.outerLeft = args.outerRight = args.outerTop = args.outerBottom = '';
+ args.outerLeftMode = args.outerRightMode = args.outerTopMode = args.outerBottomMode = "";
+ args.zIndex = args.zIndex ? args.zIndex : "auto";
+
+ var boxSizing = style.getPropertyCSSValue("box-sizing") ||
+ style.getPropertyCSSValue("-moz-box-sizing");
+ args.boxSizing = boxSizing.cssText;
+
+ var position = style.getPropertyCSSValue("position").cssText;
+ args.position = position;
+ args.outerLabel = "";
+
+ if (Xml.isElementSVG(element) || Xml.isElementMathML(element) || Xml.isElementXUL(element))
+ {
+ var rect = element.getBoundingClientRect();
+ // XXXjjb I believe this is incorrect. We should use the value as given by the call
+ //if (rect.wrappedJSObject)
+ // rect = rect.wrappedJSObject;
+
+ args.width = Math.round(rect.width);
+ args.height = Math.round(rect.height);
+ }
+
+ // these Modes are classes on the domplate
+ args.outerLeftMode = args.outerRightMode = args.outerTopMode = args.outerBottomMode =
+ "blankEdge";
+
+ function getStyle(style, name)
+ {
+ var value = style.getPropertyCSSValue(name);
+ return value && value.cssText ? parseInt(value.cssText) : " ";
+ }
+
+ if (position == "absolute" || position == "fixed" || position == "relative")
+ {
+ args.outerLabel = Locale.$STR("LayoutPosition");
+ args.outerLeft = getStyle(style, "left");
+ args.outerTop = getStyle(style, "top");
+ args.outerRight = getStyle(style, "right");
+ args.outerBottom = getStyle(style, "bottom");
+ args.outerLeftMode = args.outerRightMode = args.outerTopMode = args.outerBottomMode =
+ "absoluteEdge";
+ }
+
+ var node = this.panelNode.getElementsByClassName("outerLayoutBox").item(0);
+ // If the layout panel content was already created, just fill in the new values
+ if (node)
+ {
+ // The styles for the positionLayoutBox need to be set manually
+ var positionLayoutBox = this.panelNode.getElementsByClassName("positionLayoutBox").
+ item(0);
+
+ positionLayoutBox.className = "positionLayoutBox " + args.outerTopMode + " " +
+ args.outerRightMode + " " + args.outerBottomMode + " " + args.outerLeftMode +
+ " focusGroup";
+
+ var values =
+ {
+ layoutPosition: {label: Locale.$STR("position"), value: "position"},
+ layoutBoxSizing: {label: Locale.$STR("a11y.layout.box-sizing"),
+ value: "boxSizing"},
+ layoutZIndex: {label: "z", value: "zIndex"},
+ layoutLabelOuterTop: {value: "outerTop"},
+ layoutLabelOuterRight: {value: "outerRight"},
+ layoutLabelOuterBottom: {value: "outerBottom"},
+ layoutLabelOuterLeft: {value: "outerLeft"},
+ layoutLabelMarginTop: {value: "marginTop"},
+ layoutLabelMarginRight: {value: "marginRight"},
+ layoutLabelMarginBottom: {value: "marginBottom"},
+ layoutLabelMarginLeft: {value: "marginLeft"},
+ layoutLabelBorderTop: {value: "borderTop"},
+ layoutLabelBorderRight: {value: "borderRight"},
+ layoutLabelBorderBottom: {value: "borderBottom"},
+ layoutLabelBorderLeft: {value: "borderLeft"},
+ layoutLabelPaddingTop: {value: "paddingTop"},
+ layoutLabelPaddingRight: {value: "paddingRight"},
+ layoutLabelPaddingBottom: {value: "paddingBottom"},
+ layoutLabelPaddingLeft: {value: "paddingLeft"},
+ layoutLabelWidth: {value: "width"},
+ layoutLabelHeight: {value: "height"},
+ outerLabel: {value: "outerLabel"}
+ };
+
+ for (var val in values)
+ {
+ var element = this.panelNode.getElementsByClassName(val).item(0);
+
+ element.textContent = values[val].label ?
+ values[val].label+": "+args[values[val].value] : args[values[val].value];
+
+ if (this.template.isInvisible(args[values[val].value]))
+ Css.setClass(element.parentNode, "invisible");
+ else
+ Css.removeClass(element.parentNode, "invisible");
+ }
+ }
+ else
+ {
+ node = this.template.tag.replace(args, this.panelNode);
+ }
+
+ this.adjustCharWidth(this.getMaxCharWidth(args, node), this.panelNode);
+
+ Events.dispatch(this.fbListeners, "onLayoutBoxCreated", [this, node, args]);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /**
+ * The nested boxes of the Layout panel have digits which need to fit between the boxes.
+ * @param maxWidth: pixels the largest digit string
+ * @param node: panelNode to be adjusted (from tag:)
+ */
+ adjustCharWidth: function(maxWidth, node)
+ {
+ maxWidth += 10; // margin
+ if (maxWidth < 20)
+ maxWidth = 20;
+
+ this.adjustBoxWidth(node, "marginLayoutBox", maxWidth);
+ this.adjustBoxWidth(node, "borderLayoutBox", maxWidth);
+ this.adjustBoxWidth(node, "paddingLayoutBox", maxWidth);
+
+ var box = node.getElementsByClassName("outerLayoutBox").item(0);
+ box.style.cssText = "width: "+(240 + 3*maxWidth) + "px;"; // defaults to 300px
+
+ this.adjustLabelWidth(node, "layoutLabelLeft", maxWidth);
+ this.adjustLabelWidth(node, "layoutLabelRight", maxWidth);
+ },
+
+ /**
+ * By adjusting this width, the labels can be centered.
+ */
+ adjustLabelWidth: function(node, labelName, maxWidth)
+ {
+ var labels = node.getElementsByClassName(labelName);
+ for (var i = 0; i < labels.length; i++)
+ labels[i].style.cssText = "width: " + maxWidth + "px;";
+ },
+
+ adjustBoxWidth: function(node, boxName, width)
+ {
+ var box = node.getElementsByClassName(boxName).item(0);
+ box.style.cssText = "right: " + width + "px;" + " left: " + width + "px;";
+ },
+
+ getMaxCharWidth: function(args, node)
+ {
+ Firebug.MeasureBox.startMeasuring(node);
+ var maxWidth = Math.max(
+ Firebug.MeasureBox.measureText(args.marginLeft + "").width,
+ Firebug.MeasureBox.measureText(args.marginRight + "").width,
+ Firebug.MeasureBox.measureText(args.borderLeft + "").width,
+ Firebug.MeasureBox.measureText(args.borderRight + "").width,
+ Firebug.MeasureBox.measureText(args.paddingLeft + "").width,
+ Firebug.MeasureBox.measureText(args.paddingRight + "").width
+ );
+
+ Firebug.MeasureBox.stopMeasuring();
+ return maxWidth;
+ },
+
+ getOptionsMenuItems: function()
+ {
+ return [
+ Menu.optionMenu("ShowRulers", "showRulers", "layout.option.tip.Show_Rulers")
+ ];
+ },
+
+ getEditor: function(target, value)
+ {
+ if (!this.editor)
+ this.editor = new LayoutEditor(this.document);
+
+ return this.editor;
+ }
+});
+
+// ********************************************************************************************* //
+// LayoutEditor Implementation
+
+function LayoutEditor(doc)
+{
+ this.initializeInline(doc);
+
+ this.noWrap = false;
+ this.numeric = true;
+}
+
+/**
+ * @editor Represents an inline editor that is used by {@LayoutPanel} to modify layout data.
+ */
+LayoutEditor.prototype = domplate(Firebug.InlineEditor.prototype,
+/** @lends LayoutEditor */
+{
+ saveEdit: function(target, value, previousValue)
+ {
+ if (!this.panel.selection.style)
+ return;
+
+ var labelBox = Dom.getAncestorByClass(target, "layoutLabel");
+ var layoutBox = getLayoutBox(labelBox);
+
+ var boxFrame = getBoxFrame(layoutBox);
+ var boxEdge = getBoxEdge(labelBox);
+
+ var styleName;
+ if (boxFrame == "content" || boxFrame == "position")
+ styleName = boxEdge.toLowerCase();
+ else if (boxFrame == "border")
+ styleName = boxFrame+boxEdge+"Width";
+ else
+ styleName = boxFrame+boxEdge;
+
+ var intValue = value ? value : 0;
+ this.panel.selection.style[styleName] = intValue + "px";
+
+ if (Firebug.Inspector.highlightedElement == this.panel.selection)
+ {
+ var boxFrame = this.highlightedBox ? getBoxFrame(this.highlightedBox) : null;
+ Firebug.Inspector.highlightObject(this.panel.selection, this.panel.context,
+ "boxModel", boxFrame);
+ }
+
+ target.textContent = intValue;
+ },
+
+ endEditing: function(target, value, cancel)
+ {
+ // Don't remove groups
+ return false;
+ }
+});
+
+// ********************************************************************************************* //
+// Local Helpers
+
+function getLayoutBox(element)
+{
+ var re = /([^\s]+)LayoutBox/;
+ for (var box = element; box; box = box.parentNode)
+ {
+ if (re.exec(box.className))
+ return box;
+ }
+}
+
+function getBoxFrame(element)
+{
+ var re = /([^\s]+)LayoutBox/;
+ var m = re.exec(element.className);
+ return m ? m[1] : "";
+}
+
+function getBoxEdge(element)
+{
+ var re = /layoutLabel([^\s]+)/;
+ var m = re.exec(element.className);
+ return m ? m[1] : "";
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(LayoutPanel);
+
+return LayoutPanel;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/html/quickInfoBox.js b/content/firebug/html/quickInfoBox.js
index 39c40fa..47e1aae 100644
--- a/content/firebug/html/quickInfoBox.js
+++ b/content/firebug/html/quickInfoBox.js
@@ -1,279 +1,279 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/chrome/firefox",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/dom",
- "firebug/lib/options",
-],
-function(Firebug, Firefox, Locale, Events, Dom, Options) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-var domAttribs = ["nodeName", "id", "name", "offsetWidth", "offsetHeight"];
-var cssAttribs = ["position"];
-var compAttribs = [
- "width", "height", "zIndex", "position", "top", "right", "bottom", "left",
- "margin-top", "margin-right", "margin-bottom", "margin-left", "color",
- "backgroundColor", "fontFamily", "cssFloat", "display", "visibility"];
-
-// ********************************************************************************************* //
-// Implementation
-
-var QuickInfoBox =
-{
- boxEnabled: undefined,
- dragging: false,
- storedX: null,
- storedY: null,
- prevX: null,
- prevY: null,
-
- show: function(element)
- {
- if (FBTrace.DBG_QUICKINFOBOX)
- FBTrace.sysout("quickInfoBox.show;");
-
- if (!this.boxEnabled || !element)
- return;
-
- this.needsToHide = false;
-
- var qiBox = Firebug.chrome.$("fbQuickInfoPanel");
- if (qiBox.state === "closed")
- {
- var content = Firefox.getElementById("content");
- this.storedX = this.storedX || content.tabContainer.boxObject.screenX + 5;
- this.storedY = this.storedY || content.tabContainer.boxObject.screenY + 35;
-
- // Dynamically set noautohide to avoid mozilla bug 545265.
- if (!this.noautohideAdded)
- {
- this.noautohideAdded = true;
- qiBox.addEventListener("popupshowing", function runOnce()
- {
- qiBox.removeEventListener("popupshowing", runOnce, false);
- qiBox.setAttribute("noautohide", true);
- }, false);
- }
-
- qiBox.openPopupAtScreen(this.storedX, this.storedY, false);
- }
-
- qiBox.removeChild(qiBox.firstChild);
- var vbox = document.createElement("vbox");
- qiBox.appendChild(vbox);
-
- var needsTitle = this.addRows(element, vbox, domAttribs);
- var needsTitle2 = this.addRows(element.style, vbox, cssAttribs);
-
- var lab;
- if (needsTitle || needsTitle2)
- {
- lab = document.createElement("label");
- lab.setAttribute("class", "fbQuickInfoBoxTitle");
- lab.setAttribute("value", Locale.$STR("quickInfo"));
- vbox.insertBefore(lab, vbox.firstChild);
- }
-
- lab = document.createElement("label");
- lab.setAttribute("class", "fbQuickInfoBoxTitle");
- lab.setAttribute("value", Locale.$STR("computedStyle"));
- vbox.appendChild(lab);
-
- this.addRows(element, vbox, compAttribs, true);
- },
-
- hide: function()
- {
- if (FBTrace.DBG_QUICKINFOBOX)
- FBTrace.sysout("quickInfoBox.hide;");
-
- // if mouse is over panel defer hiding to mouseout to not cause flickering
- if (this.mouseover || this.dragging)
- {
- this.needsToHide = true;
- return;
- }
-
- var qiBox = Firebug.chrome.$("fbQuickInfoPanel");
-
- this.prevX = null;
- this.prevY = null;
- this.needsToHide = false;
-
- qiBox.hidePopup();
- },
-
- handleEvent: function(event)
- {
- switch (event.type)
- {
- case "mousemove":
- if (!this.dragging)
- return;
-
- var diffX, diffY,
- boxX = this.qiBox.screenX,
- boxY = this.qiBox.screenY,
- x = event.screenX,
- y = event.screenY;
-
- diffX = x - this.prevX;
- diffY = y - this.prevY;
-
- this.qiBox.moveTo(boxX + diffX, boxY + diffY);
-
- this.prevX = x;
- this.prevY = y;
- this.storedX = boxX;
- this.storedY = boxY;
- break;
-
- case "mousedown":
- this.qiPanel = Firebug.chrome.$("fbQuickInfoPanel");
- this.qiBox = this.qiPanel.boxObject;
- Events.addEventListener(this.qiPanel, "mousemove", this, true);
- Events.addEventListener(this.qiPanel, "mouseup", this, true);
- this.dragging = true;
- this.prevX = event.screenX;
- this.prevY = event.screenY;
- break;
-
- case "mouseup":
- Events.removeEventListener(this.qiPanel, "mousemove", this, true);
- Events.removeEventListener(this.qiPanel, "mouseup", this, true);
- this.qiPanel = this.qiBox = null;
- this.prevX = this.prevY = null;
- this.dragging = false;
- break;
-
- // this is a hack to find when mouse enters and leaves panel
- // it requires that #fbQuickInfoPanel have border
- case "mouseover":
- if (this.dragging)
- return;
- this.mouseover = true;
- break;
-
- case "mouseout":
- if (this.dragging)
- return;
- this.mouseover = false;
- // if hiding was defered because mouse was over panel hide it
- if (this.needsToHide && event.target.nodeName == "panel")
- this.hide();
- break;
- }
- },
-
- addRows: function(domBase, vbox, attribs, computedStyle)
- {
- if (!domBase)
- return;
-
- var needsTitle = false;
- for (var i=0; i<attribs.length; i++)
- {
- var value;
- if (computedStyle)
- {
- var cs = Dom.getNonFrameBody(domBase).ownerDocument.defaultView.getComputedStyle(
- domBase, null);
-
- value = cs.getPropertyValue(attribs[i]);
-
- if (value && /rgb\(\d+,\s\d+,\s\d+\)/.test(value))
- value = rgbToHex(value);
- }
- else
- {
- value = domBase[attribs[i]];
- }
-
- if (value)
- {
- needsTitle = true;
- var hbox = document.createElement("hbox");
- var lab = document.createElement("label");
- lab.setAttribute("class", "fbQuickInfoName");
- lab.setAttribute("value", attribs[i]);
- hbox.appendChild(lab);
- var desc = document.createElement("label");
- desc.setAttribute("class", "fbQuickInfoValue");
- desc.appendChild(document.createTextNode(": " + value));
- hbox.appendChild(desc);
- vbox.appendChild(hbox);
- }
- }
-
- return needsTitle;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /**
- * Toggle the quick info box.
- */
- toggleQuickInfoBox: function()
- {
- var qiBox = Firebug.chrome.$("fbQuickInfoPanel");
-
- if (qiBox.state == "open")
- QuickInfoBox.hide();
-
- QuickInfoBox.boxEnabled = !QuickInfoBox.boxEnabled;
-
- Options.set("showQuickInfoBox", QuickInfoBox.boxEnabled);
- },
-
- /**
- * Pass all quick info box events to QuickInfoBox.handleEvent() for handling.
- * @param {Event} event Event to handle
- */
- quickInfoBoxHandler: function(event)
- {
- QuickInfoBox.handleEvent(event);
- },
-
- /**
- * Hide the quick info box.
- */
- hideQuickInfoBox: function()
- {
- var qiBox = Firebug.chrome.$("fbQuickInfoPanel");
-
- if (qiBox.state === "open")
- QuickInfoBox.hide();
- },
-};
-
-// ********************************************************************************************* //
-// Helpers
-
-// xxxHonza: duplication of Css.rgbToHex
-function rgbToHex(value)
-{
- return value.replace(/\brgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)/gi, function(_, r, g, b)
- {
- return "#"+((1 << 24) + (r << 16) + (g << 8) + (b << 0)).toString(16).substr(-6).toUpperCase();
- });
-}
-
-// ********************************************************************************************* //
-// Registration
-
-// XUL commands need global access.
-Firebug.QuickInfoBox = QuickInfoBox;
-
-return QuickInfoBox;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/chrome/firefox",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/dom",
+ "firebug/lib/options",
+],
+function(Firebug, Firefox, Locale, Events, Dom, Options) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+
+var domAttribs = ["nodeName", "id", "name", "offsetWidth", "offsetHeight"];
+var cssAttribs = ["position"];
+var compAttribs = [
+ "width", "height", "zIndex", "position", "top", "right", "bottom", "left",
+ "margin-top", "margin-right", "margin-bottom", "margin-left", "color",
+ "backgroundColor", "fontFamily", "cssFloat", "display", "visibility"];
+
+// ********************************************************************************************* //
+// Implementation
+
+var QuickInfoBox =
+{
+ boxEnabled: undefined,
+ dragging: false,
+ storedX: null,
+ storedY: null,
+ prevX: null,
+ prevY: null,
+
+ show: function(element)
+ {
+ if (FBTrace.DBG_QUICKINFOBOX)
+ FBTrace.sysout("quickInfoBox.show;");
+
+ if (!this.boxEnabled || !element)
+ return;
+
+ this.needsToHide = false;
+
+ var qiBox = Firebug.chrome.$("fbQuickInfoPanel");
+ if (qiBox.state === "closed")
+ {
+ var content = Firefox.getElementById("content");
+ this.storedX = this.storedX || content.tabContainer.boxObject.screenX + 5;
+ this.storedY = this.storedY || content.tabContainer.boxObject.screenY + 35;
+
+ // Dynamically set noautohide to avoid mozilla bug 545265.
+ if (!this.noautohideAdded)
+ {
+ this.noautohideAdded = true;
+ qiBox.addEventListener("popupshowing", function runOnce()
+ {
+ qiBox.removeEventListener("popupshowing", runOnce, false);
+ qiBox.setAttribute("noautohide", true);
+ }, false);
+ }
+
+ qiBox.openPopupAtScreen(this.storedX, this.storedY, false);
+ }
+
+ qiBox.removeChild(qiBox.firstChild);
+ var vbox = document.createElement("vbox");
+ qiBox.appendChild(vbox);
+
+ var needsTitle = this.addRows(element, vbox, domAttribs);
+ var needsTitle2 = this.addRows(element.style, vbox, cssAttribs);
+
+ var lab;
+ if (needsTitle || needsTitle2)
+ {
+ lab = document.createElement("label");
+ lab.setAttribute("class", "fbQuickInfoBoxTitle");
+ lab.setAttribute("value", Locale.$STR("quickInfo"));
+ vbox.insertBefore(lab, vbox.firstChild);
+ }
+
+ lab = document.createElement("label");
+ lab.setAttribute("class", "fbQuickInfoBoxTitle");
+ lab.setAttribute("value", Locale.$STR("computedStyle"));
+ vbox.appendChild(lab);
+
+ this.addRows(element, vbox, compAttribs, true);
+ },
+
+ hide: function()
+ {
+ if (FBTrace.DBG_QUICKINFOBOX)
+ FBTrace.sysout("quickInfoBox.hide;");
+
+ // if mouse is over panel defer hiding to mouseout to not cause flickering
+ if (this.mouseover || this.dragging)
+ {
+ this.needsToHide = true;
+ return;
+ }
+
+ var qiBox = Firebug.chrome.$("fbQuickInfoPanel");
+
+ this.prevX = null;
+ this.prevY = null;
+ this.needsToHide = false;
+
+ qiBox.hidePopup();
+ },
+
+ handleEvent: function(event)
+ {
+ switch (event.type)
+ {
+ case "mousemove":
+ if (!this.dragging)
+ return;
+
+ var diffX, diffY,
+ boxX = this.qiBox.screenX,
+ boxY = this.qiBox.screenY,
+ x = event.screenX,
+ y = event.screenY;
+
+ diffX = x - this.prevX;
+ diffY = y - this.prevY;
+
+ this.qiBox.moveTo(boxX + diffX, boxY + diffY);
+
+ this.prevX = x;
+ this.prevY = y;
+ this.storedX = boxX;
+ this.storedY = boxY;
+ break;
+
+ case "mousedown":
+ this.qiPanel = Firebug.chrome.$("fbQuickInfoPanel");
+ this.qiBox = this.qiPanel.boxObject;
+ Events.addEventListener(this.qiPanel, "mousemove", this, true);
+ Events.addEventListener(this.qiPanel, "mouseup", this, true);
+ this.dragging = true;
+ this.prevX = event.screenX;
+ this.prevY = event.screenY;
+ break;
+
+ case "mouseup":
+ Events.removeEventListener(this.qiPanel, "mousemove", this, true);
+ Events.removeEventListener(this.qiPanel, "mouseup", this, true);
+ this.qiPanel = this.qiBox = null;
+ this.prevX = this.prevY = null;
+ this.dragging = false;
+ break;
+
+ // this is a hack to find when mouse enters and leaves panel
+ // it requires that #fbQuickInfoPanel have border
+ case "mouseover":
+ if (this.dragging)
+ return;
+ this.mouseover = true;
+ break;
+
+ case "mouseout":
+ if (this.dragging)
+ return;
+ this.mouseover = false;
+ // if hiding was defered because mouse was over panel hide it
+ if (this.needsToHide && event.target.nodeName == "panel")
+ this.hide();
+ break;
+ }
+ },
+
+ addRows: function(domBase, vbox, attribs, computedStyle)
+ {
+ if (!domBase)
+ return;
+
+ var needsTitle = false;
+ for (var i=0; i<attribs.length; i++)
+ {
+ var value;
+ if (computedStyle)
+ {
+ var cs = Dom.getNonFrameBody(domBase).ownerDocument.defaultView.getComputedStyle(
+ domBase, null);
+
+ value = cs.getPropertyValue(attribs[i]);
+
+ if (value && /rgb\(\d+,\s\d+,\s\d+\)/.test(value))
+ value = rgbToHex(value);
+ }
+ else
+ {
+ value = domBase[attribs[i]];
+ }
+
+ if (value)
+ {
+ needsTitle = true;
+ var hbox = document.createElement("hbox");
+ var lab = document.createElement("label");
+ lab.setAttribute("class", "fbQuickInfoName");
+ lab.setAttribute("value", attribs[i]);
+ hbox.appendChild(lab);
+ var desc = document.createElement("label");
+ desc.setAttribute("class", "fbQuickInfoValue");
+ desc.appendChild(document.createTextNode(": " + value));
+ hbox.appendChild(desc);
+ vbox.appendChild(hbox);
+ }
+ }
+
+ return needsTitle;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /**
+ * Toggle the quick info box.
+ */
+ toggleQuickInfoBox: function()
+ {
+ var qiBox = Firebug.chrome.$("fbQuickInfoPanel");
+
+ if (qiBox.state == "open")
+ QuickInfoBox.hide();
+
+ QuickInfoBox.boxEnabled = !QuickInfoBox.boxEnabled;
+
+ Options.set("showQuickInfoBox", QuickInfoBox.boxEnabled);
+ },
+
+ /**
+ * Pass all quick info box events to QuickInfoBox.handleEvent() for handling.
+ * @param {Event} event Event to handle
+ */
+ quickInfoBoxHandler: function(event)
+ {
+ QuickInfoBox.handleEvent(event);
+ },
+
+ /**
+ * Hide the quick info box.
+ */
+ hideQuickInfoBox: function()
+ {
+ var qiBox = Firebug.chrome.$("fbQuickInfoPanel");
+
+ if (qiBox.state === "open")
+ QuickInfoBox.hide();
+ },
+};
+
+// ********************************************************************************************* //
+// Helpers
+
+// xxxHonza: duplication of Css.rgbToHex
+function rgbToHex(value)
+{
+ return value.replace(/\brgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)/gi, function(_, r, g, b)
+ {
+ return "#"+((1 << 24) + (r << 16) + (g << 8) + (b << 0)).toString(16).substr(-6).toUpperCase();
+ });
+}
+
+// ********************************************************************************************* //
+// Registration
+
+// XUL commands need global access.
+Firebug.QuickInfoBox = QuickInfoBox;
+
+return QuickInfoBox;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/js/breakpoint.js b/content/firebug/js/breakpoint.js
index 7219f31..41a3af6 100644
--- a/content/firebug/js/breakpoint.js
+++ b/content/firebug/js/breakpoint.js
@@ -1,1396 +1,1396 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/chrome/reps",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/js/sourceLink",
- "firebug/js/stackFrame",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/string",
- "firebug/lib/array",
- "firebug/lib/persist",
- "firebug/chrome/menu",
- "firebug/js/fbs",
- "firebug/editor/editor",
- "firebug/console/autoCompleter"
-],
-function(Obj, Firebug, Domplate, FirebugReps, Locale, Events, SourceLink,
- StackFrame, Css, Dom, Str, Arr, Persist, Menu, FBS) {
-
-// ********************************************************************************************* //
-// Constants
-
-const animationDuration = 0.8;
-
-// ********************************************************************************************* //
-// Breakpoints
-
-Firebug.Breakpoint = Obj.extend(Firebug.Module,
-{
- dispatchName: "breakpoints",
-
- initialize: function()
- {
- Firebug.connection.addListener(this);
- },
-
- shutdown: function()
- {
- Firebug.connection.removeListener(this);
- },
-
- toggleBreakOnNext: function(panel)
- {
- var breakable = Firebug.chrome.getGlobalAttribute("cmd_firebug_toggleBreakOn", "breakable");
-
- if (FBTrace.DBG_BP)
- FBTrace.sysout("breakpoint.toggleBreakOnNext; currentBreakable "+breakable+
- " in " + panel.context.getName());
-
- // Toggle button's state.
- breakable = (breakable == "true" ? "false" : "true");
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleBreakOn", "breakable", breakable);
-
- // Call the current panel's logic related to break-on-next.
- // If breakable == "true" the feature is currently disabled.
- var enabled = (breakable == "true" ? false : true);
- panel.breakOnNext(enabled);
-
- // Make sure the correct tooltip (coming from the current panel) is used.
- this.updateBreakOnNextTooltips(panel);
-
- // Light up the tab whenever break on next is selected
- this.updatePanelTab(panel, enabled);
-
- return enabled;
- },
-
- showPanel: function(browser, panel)
- {
- this.updatePanelState(panel);
- },
-
- onDebuggerEnabled: function()
- {
- var panel = Firebug.chrome.getSelectedPanel();
- this.updatePanelState(panel);
- },
-
- updatePanelState: function(panel)
- {
- if (!panel) // there is no selectedPanel?
- return;
-
- var breakButton = Firebug.chrome.$("fbBreakOnNextButton");
- if (panel.name)
- breakButton.setAttribute("panelName", panel.name);
-
- breakButton.removeAttribute("type");
- Dom.collapse(Firebug.chrome.$("fbBonButtons"), !panel.breakable);
-
- // The script panel can be created at this moment (the second parameter is false)
- // It's needed for break on next to work (do not wait till the user actually
- // selects the panel).
- var scriptPanel = panel.context.getPanel("script");
- var scriptEnabled = scriptPanel && scriptPanel.isEnabled();
- var tool = Firebug.connection.getTool("script");
- var scriptActive = tool && tool.getActive();
- var supported = panel.supportsBreakOnNext();
-
- // Enable by default and disable if needed.
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleBreakOn", "disabled", null);
-
- // Disable BON if script is disabled or if BON isn't supported by the current panel.
- if (!scriptEnabled || !scriptActive || !supported)
- {
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleBreakOn", "breakable", "disabled");
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleBreakOn", "disabled", "true");
- this.updateBreakOnNextTooltips(panel);
- return;
- }
-
- // Set the tooltips and update break-on-next button's state.
- var shouldBreak = panel.shouldBreakOnNext();
- this.updateBreakOnNextState(panel, shouldBreak);
- this.updateBreakOnNextTooltips(panel);
- this.updatePanelTab(panel, shouldBreak);
-
- var menuItems = panel.getBreakOnMenuItems();
- if (!menuItems || !menuItems.length)
- return;
-
- breakButton.setAttribute("type", "menu-button");
-
- var menuPopup = Firebug.chrome.$("fbBreakOnNextOptions");
- Dom.eraseNode(menuPopup);
-
- Menu.createMenuItems(menuPopup, menuItems);
- },
-
- toggleTabHighlighting: function(event)
- {
- // Don't continue if it's the wrong animation phase
- if (Math.floor(event.elapsedTime * 10) % (animationDuration * 20) != 0)
- return;
-
- Events.removeEventListener(event.target, "animationiteration",
- Firebug.Breakpoint.toggleTabHighlighting, true);
-
- var panel = Firebug.currentContext.getPanel(event.target.panelType.prototype.name);
- if (!panel)
- return;
-
- if (!panel.context.delayedArmedTab)
- return;
-
- panel.context.delayedArmedTab.setAttribute("breakOnNextArmed", "true");
- delete panel.context.delayedArmedTab;
- },
-
- updateBreakOnNextTooltips: function(panel)
- {
- var breakable = Firebug.chrome.getGlobalAttribute("cmd_firebug_toggleBreakOn", "breakable");
-
- // Get proper tooltip for the break-on-next button from the current panel.
- // If breakable is set to "false" the feature is already activated (throbbing).
- var armed = (breakable == "false");
- var tooltip = panel.getBreakOnNextTooltip(armed);
- if (!tooltip)
- tooltip = "";
-
- // The user should know that BON is disabled if the Script panel (debugger) is disabled.
- if (breakable == "disabled")
- tooltip += " " + Locale.$STR("firebug.bon.scriptPanelNeeded");
-
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleBreakOn", "tooltiptext", tooltip);
- },
-
- updateBreakOnNextState: function(panel, armed)
- {
- // If the panel should break at the next chance, set the button to not breakable,
- // which means already active (throbbing).
- var breakable = armed ? "false" : "true";
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleBreakOn", "breakable", breakable);
- },
-
- updatePanelTab: function(panel, armed)
- {
- if (!panel)
- return;
-
- // If the script panels is disabled, BON can't be active.
- if (!Firebug.PanelActivation.isPanelEnabled("script"))
- armed = false;
-
- var panelBar = Firebug.chrome.$("fbPanelBar1");
- var tab = panelBar.getTab(panel.name);
- if (tab)
- {
- if (armed)
- {
- // If there is already a panel armed synchronize highlighting of the panel tabs
- var tabPanel = tab.parentNode;
- var otherTabIsArmed = false;
- for (var i = 0; i < tabPanel.children.length; ++i)
- {
- var panelTab = tabPanel.children[i];
- if (panelTab !== tab && panelTab.getAttribute("breakOnNextArmed") == "true")
- {
- panel.context.delayedArmedTab = tab;
- Events.addEventListener(panelTab, "animationiteration",
- this.toggleTabHighlighting, true);
- otherTabIsArmed = true;
- break;
- }
- }
-
- if (!otherTabIsArmed)
- tab.setAttribute("breakOnNextArmed", "true");
- }
- else
- {
- delete panel.context.delayedArmedTab;
- tab.setAttribute("breakOnNextArmed", "false");
- }
- }
- },
-
- updatePanelTabs: function(context)
- {
- if (!context)
- return;
-
- var panelTypes = Firebug.getMainPanelTypes(context);
- for (var i=0; i<panelTypes.length; ++i)
- {
- var panelType = panelTypes[i];
- var panel = context.getPanel(panelType.prototype.name);
- var shouldBreak = (panel && panel.shouldBreakOnNext()) ? true : false;
- this.updatePanelTab(panel, shouldBreak);
- }
- },
-
- // supports non-JS break on next
- breakNow: function(panel)
- {
- this.updatePanelTab(panel, false);
- Firebug.Debugger.breakNow(panel.context); // TODO BTI
- },
-
- updateOption: function(name, value)
- {
- if (name == "showBreakNotification")
- {
- var panelBar1 = Firebug.chrome.$("fbPanelBar1");
- var doc = panelBar1.browser.contentDocument;
- var checkboxes = doc.querySelectorAll(".doNotShowBreakNotification");
-
- for (var i=0; i<checkboxes.length; i++)
- checkboxes[i].checked = !value;
- }
- },
-});
-
-// ********************************************************************************************* //
-
-with (Domplate) {
-Firebug.Breakpoint.BreakpointListRep = domplate(Firebug.Rep,
-{
- tag:
- DIV({role : "list"},
- FOR("group", "$groups",
- DIV({"class": "breakpointBlock breakpointBlock-$group.name", role: "list",
- $opened: "$group.opened", _repObject: "$group", onclick: "$onClick"},
- H1({"class": "breakpointHeader groupHeader"},
- DIV({"class": "twisty", role: "presentation"}),
- SPAN({"class": "breakpointsHeaderLabel"}, "$group.title")
- ),
- DIV({"class": "breakpointsGroupListBox", role: "listbox"},
- FOR("bp", "$group.breakpoints",
- TAG("$bp|getBreakpointRep", {bp: "$bp"})
- )
- )
- )
- )
- ),
-
- getBreakpointRep: function(bp)
- {
- var rep = Firebug.getRep(bp, Firebug.currentContext);
- return rep.tag;
- },
-
- toggleGroup: function(node)
- {
- var panel = Firebug.getElementPanel(node);
- var groupNode = Dom.getAncestorByClass(node, "breakpointBlock");
- var group = Firebug.getRepObject(groupNode);
-
- Css.toggleClass(groupNode, "opened");
- var opened = Css.hasClass(groupNode, "opened");
- panel.groupOpened[group.name] = opened;
-
- if (opened)
- {
- var offset = Dom.getClientOffset(node);
- var titleAtTop = offset.y < panel.panelNode.scrollTop;
- Dom.scrollTo(groupNode, panel.panelNode, null,
- groupNode.offsetHeight > panel.panelNode.clientHeight || titleAtTop ? "top" : "bottom");
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onClick: function(event)
- {
- if (!Events.isLeftClick(event))
- return;
-
- var header = Dom.getAncestorByClass(event.target, "breakpointHeader");
- if (header)
- {
- this.toggleGroup(event.target);
- return;
- }
- }
-});
-
-// ********************************************************************************************* //
-
-Firebug.Breakpoint.BreakpointRep = domplate(Firebug.Rep,
-{
- tag:
- DIV({"class": "breakpointRow focusRow", $disabled: "$bp|isDisabled", role: "option",
- "aria-checked": "$bp.checked", _repObject: "$bp", onclick: "$onClick"},
- DIV({"class": "breakpointBlockHead"},
- INPUT({"class": "breakpointCheckbox", type: "checkbox",
- _checked: "$bp.checked", tabindex : '-1'}),
- SPAN({"class": "breakpointName"}, "$bp.name"),
- TAG(FirebugReps.SourceLink.tag, {object: "$bp|getSourceLink"}),
- SPAN({"class": "closeButton"})
- ),
- DIV({"class": "breakpointCode"}, "$bp.sourceLine")
- ),
-
- getSourceLink: function(bp)
- {
- return new SourceLink.SourceLink(bp.href, bp.lineNumber, "js");
- },
-
- removeBreakpoint: function(groupName, href, lineNumber)
- {
- if (groupName == "breakpoints")
- FBS.clearBreakpoint(href, lineNumber);
- else if (groupName == "errorBreakpoints")
- FBS.clearErrorBreakpoint(href, lineNumber);
- else if (groupName == "monitors")
- FBS.unmonitor(href, lineNumber);
- },
-
- enableBreakpoint: function(href, lineNumber)
- {
- FBS.enableBreakpoint(href, lineNumber);
- },
-
- disableBreakpoint: function(href, lineNumber)
- {
- FBS.disableBreakpoint(href, lineNumber);
- },
-
- isDisabled: function(bp)
- {
- return !bp.checked;
- },
-
- getContextMenuItems: function(breakpoint, target)
- {
- var head = Dom.getAncestorByClass(target, "breakpointBlock");
- var groupName = Css.getClassValue(head, "breakpointBlock");
-
- var items = [{
- label: "breakpoints.Remove_Breakpoint",
- tooltiptext: "breakpoints.tip.Remove_Breakpoint",
- command: Obj.bindFixed(this.removeBreakpoint, this, groupName,
- breakpoint.href, breakpoint.lineNumber)
- }];
-
- if (groupName == "breakpoints")
- {
- if (breakpoint.checked)
- {
- items.push({
- label: "breakpoints.Disable_Breakpoint",
- tooltiptext: "breakpoints.tip.Disable_Breakpoint",
- command: Obj.bindFixed(this.disableBreakpoint, this, breakpoint.href,
- breakpoint.lineNumber)
- });
- }
- else
- {
- items.push({
- label: "breakpoints.Enable_Breakpoint",
- tooltiptext: "breakpoints.tip.Enable_Breakpoint",
- command: Obj.bindFixed(this.enableBreakpoint, this, breakpoint.href,
- breakpoint.lineNumber)
- });
- }
- }
-
- items.push(
- "-"
- );
-
- return items;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- inspectable: false,
-
- supportsObject: function(object, type)
- {
- return (object instanceof Firebug.Debugger.Breakpoint); // FIXME moz back end
- },
-
- onClick: function(event)
- {
- var panel = Firebug.getElementPanel(event.target);
-
- if (Dom.getAncestorByClass(event.target, "breakpointCheckbox"))
- {
- var node = event.target.parentNode.getElementsByClassName(
- "objectLink-sourceLink").item(0);
-
- if (!node)
- return;
-
- var sourceLink = node.repObject;
-
- panel.noRefresh = true;
- var checkBox = event.target;
- var bpRow = Dom.getAncestorByClass(checkBox, "breakpointRow");
-
- if (checkBox.checked)
- {
- this.enableBreakpoint(sourceLink.href, sourceLink.line);
- bpRow.setAttribute("aria-checked", "true");
- }
- else
- {
- this.disableBreakpoint(sourceLink.href, sourceLink.line);
- bpRow.setAttribute("aria-checked", "false");
- }
- panel.noRefresh = false;
- }
- else if (Dom.getAncestorByClass(event.target, "closeButton"))
- {
- panel.noRefresh = true;
- var sourceLink = event.target.parentNode.getElementsByClassName(
- "objectLink-sourceLink").item(0).repObject;
-
- var head = Dom.getAncestorByClass(event.target, "breakpointBlock");
- var groupName = Css.getClassValue(head, "breakpointBlock");
-
- this.removeBreakpoint(groupName, sourceLink.href, sourceLink.line);
-
- panel.noRefresh = false;
- }
-
- panel.refresh();
- }
-});
-};
-
-// ********************************************************************************************* //
-
-Firebug.Breakpoint.BreakpointsPanel = function() {};
-
-Firebug.Breakpoint.BreakpointsPanel.prototype = Obj.extend(Firebug.Panel,
-{
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Panel
-
- name: "breakpoints",
- parentPanel: "script",
- order: 2,
- enableA11y: true,
- deriveA11yFrom: "console",
-
- initialize: function()
- {
- this.groupOpened = [];
-
- Firebug.Panel.initialize.apply(this, arguments);
- },
-
- destroy: function(state)
- {
- state.groupOpened = this.groupOpened;
-
- Firebug.Panel.destroy.apply(this, arguments);
- },
-
- show: function(state)
- {
- if (this.context.loaded)
- {
- var state = null;
- Persist.restoreObjects(this, state);
-
- if (state)
- {
- if (state.groupOpened)
- this.groupOpened = state.groupOpened;
- }
- }
-
- this.refresh();
- },
-
- refresh: function()
- {
- if (this.noRefresh)
- return;
-
- var extracted = this.extractBreakpoints(this.context);
-
- var breakpoints = extracted.breakpoints;
- var errorBreakpoints = extracted.errorBreakpoints;
- var monitors = extracted.monitors;
-
- if (FBTrace.DBG_BP)
- FBTrace.sysout("breakpoints.refresh extracted " +
- breakpoints.length+errorBreakpoints.length+monitors.length,
- [breakpoints, errorBreakpoints, monitors]);
-
- function sortBreakpoints(a, b)
- {
- if (a.href == b.href)
- return a.lineNumber < b.lineNumber ? -1 : 1;
- else
- return a.href < b.href ? -1 : 1;
- }
-
- breakpoints.sort(sortBreakpoints);
- errorBreakpoints.sort(sortBreakpoints);
- monitors.sort(sortBreakpoints);
-
- if (FBTrace.DBG_BP)
- FBTrace.sysout("breakpoints.refresh sorted "+breakpoints.length+
- errorBreakpoints.length+monitors.length, [breakpoints, errorBreakpoints, monitors]);
-
- var groups = [];
-
- if (breakpoints.length)
- groups.push({name: "breakpoints", title: Locale.$STR("Breakpoints"),
- breakpoints: breakpoints});
-
- if (errorBreakpoints.length)
- groups.push({name: "errorBreakpoints", title: Locale.$STR("ErrorBreakpoints"),
- breakpoints: errorBreakpoints});
-
- if (monitors.length)
- groups.push({name: "monitors", title: Locale.$STR("LoggedFunctions"),
- breakpoints: monitors});
-
- Firebug.connection.dispatch("getBreakpoints", [this.context, groups]);
-
- if (groups.length != 0)
- {
- for (var i = 0; i < groups.length; ++i)
- {
- groups[i].opened = typeof this.groupOpened[groups[i].name] != "undefined" ?
- this.groupOpened[groups[i].name] : true;
- }
-
- Firebug.Breakpoint.BreakpointListRep.tag.replace({groups: groups}, this.panelNode);
- }
- else
- {
- FirebugReps.Warning.tag.replace({object: "NoBreakpointsWarning"}, this.panelNode);
- }
-
- if (FBTrace.DBG_BP)
- {
- FBTrace.sysout("breakpoints.refresh "+breakpoints.length+
- errorBreakpoints.length+monitors.length, [breakpoints, errorBreakpoints, monitors]);
- }
-
- Events.dispatch(this.fbListeners, "onBreakRowsRefreshed", [this, this.panelNode]);
- },
-
- extractBreakpoints: function(context)
- {
- var breakpoints = [];
- var errorBreakpoints = [];
- var monitors = [];
-
- var renamer = new SourceFileRenamer(context);
- var Breakpoint = Firebug.Debugger.Breakpoint;
-
- for (var url in context.sourceFileMap)
- {
- FBS.enumerateBreakpoints(url, {call: function(url, line, props, scripts)
- {
- if (FBTrace.DBG_BP)
- FBTrace.sysout("breakpoints.extractBreakpoints type: "+props.type+" in url "+
- url+"@"+line+" context "+context.getName(), props);
-
- // some url in this sourceFileMap has changed, we'll be back.
- if (renamer.checkForRename(url, line, props))
- return;
-
- var isFuture = false;
- var name = "";
- if (scripts) // then this is a current (not future) breakpoint
- {
- var script = scripts[0];
- var analyzer = Firebug.SourceFile.getScriptAnalyzer(context, script);
- if (FBTrace.DBG_BP)
- FBTrace.sysout("breakpoints.refresh enumerateBreakpoints for script="+
- script.tag+(analyzer?" has analyzer":" no analyzer")+" in context "+
- context.getName());
-
- name = analyzer ?
- analyzer.getFunctionDescription(script, context).name :
- StackFrame.guessFunctionName(url, 1, context);
- }
- else
- {
- if (FBTrace.DBG_BP)
- FBTrace.sysout("breakpoints.refresh enumerateBreakpoints future for url at line="+
- url+"@"+line+"\n");
-
- isFuture = true;
- }
-
- var source = context.sourceCache.getLine(url, line);
- breakpoints.push(new Breakpoint(name, url, line, !props.disabled, source, isFuture));
- }});
-
- FBS.enumerateErrorBreakpoints(url, {call: function(url, line, props)
- {
- // some url in this sourceFileMap has changed, we'll be back.
- if (renamer.checkForRename(url, line, props))
- return;
-
- var name = Firebug.SourceFile.guessEnclosingFunctionName(url, line, context);
- var source = context.sourceCache.getLine(url, line);
- errorBreakpoints.push(new Breakpoint(name, url, line, true, source));
- }});
-
- FBS.enumerateMonitors(url, {call: function(url, line, props)
- {
- // some url in this sourceFileMap has changed, we'll be back.
- if (renamer.checkForRename(url, line, props))
- return;
-
- var name = Firebug.SourceFile.guessEnclosingFunctionName(url, line, context);
- monitors.push(new Breakpoint(name, url, line, true, ""));
- }});
- }
-
- var result = null;
-
- if (renamer.needToRename(context))
- {
- // since we renamed some sourceFiles we need to refresh the breakpoints again.
- result = this.extractBreakpoints(context);
- }
- else
- {
- result = {
- breakpoints: breakpoints,
- errorBreakpoints: errorBreakpoints,
- monitors: monitors
- };
- }
-
- // even if we did not rename, some bp may be dynamic
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("breakpoints.extractBreakpoints context.dynamicURLhasBP: "+
- context.dynamicURLhasBP, result);
-
- return result;
- },
-
- getOptionsMenuItems: function()
- {
- var items = [];
-
- var context = this.context;
-
- var bpCount = 0, disabledCount = 0;
- var checkBoxes = this.panelNode.getElementsByClassName("breakpointCheckbox");
- for (var i=0; i<checkBoxes.length; i++)
- {
- ++bpCount;
- if (!checkBoxes[i].checked)
- ++disabledCount;
- }
-
- if (disabledCount)
- {
- items.push(
- {
- label: "EnableAllBreakpoints",
- command: Obj.bindFixed(this.enableAllBreakpoints, this, context, true),
- tooltiptext: "breakpoints.option.tip.Enable_All_Breakpoints"
- }
- );
- }
- if (bpCount && disabledCount != bpCount)
- {
- items.push(
- {
- label: "DisableAllBreakpoints",
- command: Obj.bindFixed(this.enableAllBreakpoints, this, context, false),
- tooltiptext: "breakpoints.option.tip.Disable_All_Breakpoints"
- }
- );
- }
-
- items.push(
- "-",
- {
- label: "ClearAllBreakpoints",
- disabled: !bpCount,
- command: Obj.bindFixed(this.clearAllBreakpoints, this, context),
- tooltiptext: "breakpoints.option.tip.Clear_All_Breakpoints"
- }
- );
-
- return items;
- },
-
- getContextMenuItems: function(object, target, context)
- {
- return this.getOptionsMenuItems();
- },
-
- enableAllBreakpoints: function(context, status)
- {
- var checkBoxes = this.panelNode.getElementsByClassName("breakpointCheckbox");
- for (var i=0; i<checkBoxes.length; i++)
- {
- var box = checkBoxes[i];
- if (box.checked != status)
- this.click(box);
- }
- },
-
- clearAllBreakpoints: function(context)
- {
- this.noRefresh = true;
-
- try
- {
- // Remove regular JSD breakpoints
- Firebug.Debugger.clearAllBreakpoints(context);
- }
- catch(exc)
- {
- FBTrace.sysout("breakpoint.clearAllBreakpoints FAILS "+exc, exc);
- }
-
- this.noRefresh = false;
- this.refresh();
-
- // Remove the rest of all the other kinds of breakpoints (after refresh).
- // These can come from various modules and perhaps extensions, so use
- // the appropriate remove buttons.
- var buttons = this.panelNode.getElementsByClassName("closeButton");
- while (buttons.length)
- this.click(buttons[0]);
-
- // Breakpoint group titles must also go away.
- this.refresh();
- },
-
- click: function(node)
- {
- var doc = node.ownerDocument, event = doc.createEvent("MouseEvents");
- event.initMouseEvent("click", true, true, doc.defaultView, 0, 0, 0, 0, 0,
- false, false, false, false, 0, null);
- return node.dispatchEvent(event);
- }
-});
-
-// ********************************************************************************************* //
-
-function countBreakpoints(context)
-{
- var count = 0;
- for (var url in context.sourceFileMap)
- {
- FBS.enumerateBreakpoints(url, {call: function(url, lineNo)
- {
- ++count;
- }});
- }
- return count;
-}
-
-// ********************************************************************************************* //
-
-Firebug.Breakpoint.BreakpointGroup = function()
-{
- this.breakpoints = [];
-};
-
-Firebug.Breakpoint.BreakpointGroup.prototype =
-{
- removeBreakpoint: function(bp)
- {
- Arr.remove(this.breakpoints, bp);
- },
-
- enumerateBreakpoints: function(callback)
- {
- var breakpoints = Arr.cloneArray(this.breakpoints);
- for (var i=0; i<breakpoints.length; i++)
- {
- var bp = breakpoints[i];
- if (callback(bp))
- return true;
- }
- return false;
- },
-
- findBreakpoint: function()
- {
- for (var i=0; i<this.breakpoints.length; i++)
- {
- var bp = this.breakpoints[i];
- if (this.matchBreakpoint(bp, arguments))
- return bp;
- }
- return null;
- },
-
- matchBreakpoint: function(bp, args)
- {
- // TODO: must be implemented in derived objects.
- return false;
- },
-
- isEmpty: function()
- {
- return !this.breakpoints.length;
- }
-};
-
-// ********************************************************************************************* //
-// TODO move to mozilla back end
-
-function SourceFileRenamer(context)
-{
- this.renamedSourceFiles = [];
- this.context = context;
- this.bps = [];
-}
-
-SourceFileRenamer.prototype.checkForRename = function(url, line, props)
-{
- var sourceFile = this.context.sourceFileMap[url];
- if (sourceFile.isEval() || sourceFile.isEvent())
- {
- var segs = sourceFile.href.split('/');
- if (segs.length > 2)
- {
- if (segs[segs.length - 2] == "seq")
- {
- this.renamedSourceFiles.push(sourceFile);
- this.bps.push(props);
- }
- }
-
- // whether not we needed to rename, the dynamic sourceFile has a bp.
- this.context.dynamicURLhasBP = true;
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("breakpoints.checkForRename found bp in "+sourceFile+" renamed files:",
- this.renamedSourceFiles);
- }
- else
- {
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("breakpoints.checkForRename found static bp in " + sourceFile +
- " bp:", props);
- }
-
- return (this.renamedSourceFiles.length > 0);
-};
-
-SourceFileRenamer.prototype.needToRename = function(context)
-{
- if (this.renamedSourceFiles.length > 0)
- this.renameSourceFiles(context);
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("debugger renamed " + this.renamedSourceFiles.length + " sourceFiles",
- context.sourceFileMap);
-
- return this.renamedSourceFiles.length;
-};
-
-SourceFileRenamer.prototype.renameSourceFiles = function(context)
-{
- for (var i = 0; i < this.renamedSourceFiles.length; i++)
- {
- var sourceFile = this.renamedSourceFiles[i];
- var bp = this.bps[i];
-
- var oldURL = sourceFile.href;
- var sameType = bp.type;
- var sameLineNo = bp.lineNo;
-
- // last is sequence #, next-last is "seq", next-next-last is kind
- var segs = oldURL.split('/');
- var kind = segs.splice(segs.length - 3, 3)[0];
- var callerURL = segs.join('/');
- if (!sourceFile.source)
- {
- FBTrace.sysout("breakpoint.renameSourceFiles no source for " + oldURL +
- " callerURL " + callerURL, sourceFile);
- continue;
- }
-
- var newURL = Firebug.Debugger.getURLFromMD5(callerURL, sourceFile.source, kind);
- sourceFile.href = newURL.href;
-
- FBS.removeBreakpoint(bp.type, oldURL, bp.lineNo);
- delete context.sourceFileMap[oldURL]; // SourceFile delete
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("breakpoints.renameSourceFiles type: "+bp.type, bp);
-
- Firebug.Debugger.watchSourceFile(context, sourceFile);
- var newBP = FBS.addBreakpoint(sameType, sourceFile, sameLineNo, bp, Firebug.Debugger);
-
- var panel = context.getPanel("script", true);
- if (panel)
- {
- panel.context.invalidatePanels("breakpoints");
- panel.renameSourceBox(oldURL, newURL.href);
- }
-
- if (context.sourceCache.isCached(oldURL))
- {
- var lines = context.sourceCache.load(oldURL);
- context.sourceCache.storeSplitLines(newURL.href, lines);
- context.sourceCache.invalidate(oldURL);
- }
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("SourceFileRenamer renamed " + oldURL + " to " + newURL,
- { newBP: newBP, oldBP: bp});
- }
-
- return this.renamedSourceFiles.length;
-};
-
-// ********************************************************************************************* //
-
-Firebug.Breakpoint.ConditionEditor = function(doc)
-{
- this.initialize(doc);
-};
-
-with (Domplate) {
-Firebug.Breakpoint.ConditionEditor.prototype = domplate(Firebug.JSEditor.prototype,
-{
- tag:
- DIV({"class": "conditionEditor"},
- DIV({"class": "conditionCaption"}, Locale.$STR("ConditionInput")),
- INPUT({"class": "conditionInput completionBox", type: "text",
- tabindex: "-1"}),
- INPUT({"class": "conditionInput completionInput", type: "text",
- "aria-label": Locale.$STR("ConditionInput"),
- oninput: "$onInput", onkeypress: "$onKeyPress"}
- )
- ),
-
- initialize: function(doc)
- {
- this.box = this.tag.replace({}, doc, this);
- this.input = this.box.getElementsByClassName("completionInput").item(0);
-
- var completionBox = this.box.getElementsByClassName("completionBox").item(0);
- var options = {
- tabWarnings: true
- };
- this.setupCompleter(completionBox, options);
- },
-
- show: function(sourceLine, panel, value)
- {
- this.target = sourceLine;
- this.panel = panel;
-
- this.getAutoCompleter().reset();
-
- Dom.hide(this.box, true);
- panel.selectedSourceBox.appendChild(this.box);
-
- this.input.value = value;
-
- setTimeout(Obj.bindFixed(function()
- {
- var offset = Dom.getClientOffset(sourceLine);
-
- var bottom = offset.y+sourceLine.offsetHeight;
- var y = bottom - this.box.offsetHeight;
- if (y < panel.selectedSourceBox.scrollTop)
- {
- y = offset.y;
- Css.setClass(this.box, "upsideDown");
- }
- else
- {
- Css.removeClass(this.box, "upsideDown");
- }
-
- this.box.style.top = y + "px";
- Dom.hide(this.box, false);
-
- this.input.focus();
- this.input.select();
- }, this));
- },
-
- hide: function()
- {
- this.box.parentNode.removeChild(this.box);
-
- delete this.target;
- delete this.panel;
- },
-
- layout: function()
- {
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- endEditing: function(target, value, cancel)
- {
- if (!cancel)
- {
- var compilationUnit = this.panel.location;
- var lineNo = parseInt(this.target.textContent);
- // TODO rest is mozilla backend
- var sourceFile = compilationUnit.sourceFile;
- FBS.setBreakpointCondition(sourceFile, lineNo, value, Firebug.Debugger);
- }
- }
-});
-
-// ********************************************************************************************* //
-
-/**
- * Construct a break notification popup
- * @param doc the document to contain the notification
- * @param cause info object for the popup, with these optional fields:
- * strings: title, message, attrName
- * elements: target, relatedTarget: element
- * objects: prevValue, newValue
- */
-Firebug.Breakpoint.BreakNotification = function(doc, cause)
-{
- this.document = doc;
- this.cause = cause;
-};
-
-Firebug.Breakpoint.BreakNotification.prototype = domplate(Firebug.Rep,
-/** @lends Firebug.ScriptPanel.Notification */
-{
- tag:
- DIV({"class": "notificationBox"},
- TABLE({"class": "notificationTable", onclick: "$onHide",
- onmouseover: "$onMouseOver", onmouseout: "$onMouseOut"},
- TBODY(
- TR(
- TD({"class": "imageCol"},
- IMG({"class": "notificationImage",
- src: "chrome://firebug/skin/breakpoint.png"})
- ),
- TD({"class": "descCol"},
- SPAN({"class": "notificationDesc"}, "$cause|getDescription"),
- SPAN(" "),
- SPAN({"class": "diff"}, "$cause|getDiff"),
- SPAN({"class": "targets"}),
- DIV({"class": "noNotificationDesc"})
- ),
- TD({"class": "buttonsCol"},
- BUTTON({"class": "notificationButton copyButton",
- onclick: "$onCopyAction",
- $collapsed: "$cause|hideCopyAction"},
- Locale.$STR("Copy")
- ),
- BUTTON({"class": "notificationButton skipButton",
- onclick: "$onSkipAction",
- $collapsed: "$cause|hideSkipAction"},
- Locale.$STR("script.balloon.Disable")
- ),
- BUTTON({"class": "notificationButton okButton",
- onclick: "$onOkAction",
- $collapsed: "$cause|hideOkAction"},
- Locale.$STR("script.balloon.Continue")
- )
- ),
- TD(
- DIV({"class": "notificationClose", onclick: "$onHide"})
- )
- )
- )
- )
- ),
-
- targets:
- SPAN(
- SPAN(" "),
- TAG("$cause|getTargetTag", {object: "$cause.target"}),
- SPAN(" "),
- TAG("$cause|getRelatedTargetTag", {object: "$cause.relatedNode"})
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onMouseOver: function(event)
- {
- var target = event.target;
- var box = Dom.getAncestorByClass(target, "notificationBox");
- var close = box.querySelector(".notificationClose");
-
- // The close button is "active" (red) if the mouse hovers over the notification
- // area except when it hovers over a button or link.
- var localName = target.localName ? target.localName.toLowerCase() : "";
- if (Css.hasClass(target, "notificationButton") || localName == "a")
- close.removeAttribute("active");
- else
- close.setAttribute("active", true);
- },
-
- onMouseOut: function(event)
- {
- var box = Dom.getAncestorByClass(event.target, "notificationBox");
- var close = box.querySelector(".notificationClose");
- close.removeAttribute("active");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onHide: function(event)
- {
- var notify = this.getNotifyObject(event.target);
- notify.hide();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getDescription: function(cause)
- {
- var str = cause.message + (cause.attrName ? (" '" + cause.attrName + "'") : "");
- if (this.getDiff(cause))
- str += ":";
-
- return str;
- },
-
- getTargetTag: function(cause)
- {
- return this.getElementTag(cause.target) || null;
- },
-
- getRelatedTargetTag: function(cause)
- {
- return this.getElementTag(cause.relatedNode) || null;
- },
-
- getElementTag: function(node)
- {
- if (node)
- {
- var rep = Firebug.getRep(node);
- if (rep)
- return rep.shortTag || rep.tag;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Button Handlers
-
- hideCopyAction: function(cause)
- {
- return !cause.copyAction;
- },
-
- hideSkipAction: function(cause)
- {
- return !cause.skipAction;
- },
-
- hideOkAction: function(cause)
- {
- return !cause.okAction;
- },
-
- onCopyAction: function(event)
- {
- var notify = this.getNotifyObject(event.target);
- if (notify.cause.copyAction)
- notify.cause.copyAction();
- },
-
- onSkipAction: function(event)
- {
- var notify = this.getNotifyObject(event.target);
- if (notify.cause.skipAction)
- notify.cause.skipAction();
- },
-
- onOkAction: function(event)
- {
- var notify = this.getNotifyObject(event.target);
- if (notify.cause.okAction)
- notify.cause.okAction();
- },
-
- onCloseAction: function(event)
- {
- var notify = this.getNotifyObject(event.target);
- if (notify.cause.onCloseAction)
- notify.cause.onCloseAction();
- else
- notify.hide(event); // same as click on notify body
- },
-
- getNotifyObject: function(target)
- {
- var parentNode = Dom.getAncestorByClass(target, "notificationBox");
- return parentNode.repObject;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Action handlers from "do not show again" description
-
- onClickLink: function(event)
- {
- this.showTabMenu(event);
- },
-
- disableNotifications: function(event)
- {
- Firebug.setPref(Firebug.prefDomain, "showBreakNotification", false);
-
- // Hide the notification, but default processing of this event would hide it anyway.
- this.onHide(event);
- },
-
- showTabMenu: function(event)
- {
- // Open panel's tab menu to show the "Show Break Notifications" option
- // to teach the user where to enable it again.
- var panelBar = Firebug.chrome.$("fbPanelBar1");
- var tab = panelBar.getTab("script");
- tab.tabMenu.showMenu();
-
- // Avoid default processing that hides the notification popup.
- Events.cancelEvent(event);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Helpers
-
- getDiff: function(cause)
- {
- var str = "";
-
- if (cause.prevValue)
- str += Str.cropString(cause.prevValue, 40) + " -> ";
-
- if (cause.newValue)
- str += Str.cropString(cause.newValue, 40);
-
- if (!str.length)
- return "";
-
- if (!cause.target)
- return str;
-
- return str;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Public
-
- show: function(parentNode)
- {
- if (FBTrace.DBG_BP)
- FBTrace.sysout("breakNotification.show; " + this.id);
-
- // Reneder the entire notification box.
- this.box = this.tag.append(this.cause, parentNode, this);
- this.box.repObject = this;
-
- // Appends the HTML targets dynamically. In case they are null, it breaks
- // click events.
- // xxxHonza: this problem would deserve clarification.
- if (this.cause.target || this.cause.relatedNode)
- {
- var targetsNode = this.box.querySelector(".targets");
- this.targets.replace(this.cause, targetsNode, this);
- }
-
- // Render "do not show again" text
- var descNode = this.box.querySelector(".noNotificationDesc");
- FirebugReps.Description.render(Locale.$STR("firebug.breakpoint.doNotShowBreakNotification2"),
- descNode, Obj.bind(this.onClickLink, this));
-
- // Tooltips
- if (this.cause.skipActionTooltip)
- this.box.querySelector(".skipButton").setAttribute("title", this.cause.skipActionTooltip);
- if (this.cause.okActionTooltip)
- this.box.querySelector(".okButton").setAttribute("title", this.cause.okActionTooltip);
- if (this.cause.copyActionTooltip)
- this.box.querySelector(".copyButton").setAttribute("title", this.cause.copyActionTooltip);
-
- // xxxHonza: disable the animation, the interval seems to be frozen during debugger break.
- this.box.style.top = "0";
- return;
-
- // Animation
- var self = this;
- var delta = Math.max(3, Math.floor(this.box.clientHeight/5));
- var clientHeight = this.box.clientHeight;
-
- this.box.style.top = -clientHeight + "px";
- var interval = setInterval(function slide(event)
- {
- var top = parseInt(self.box.style.top, 10);
- if (top >= 0)
- {
- clearInterval(interval);
- }
- else
- {
- var newTop = (top + delta) > 0 ? 0 : (top + delta);
- self.box.style.top = newTop + "px";
- }
- }, 15);
-
- return this.box;
- },
-
- hide: function()
- {
- if (FBTrace.DBG_BP)
- FBTrace.sysout("breakNotification.hide;");
-
- // xxxHonza: disable the animation, the interval seems to be frozen during debugger break.
- if (this.box.parentNode)
- this.box.parentNode.removeChild(this.box);
- return;
-
- // Animation
- var self = this;
- var delta = Math.max(3, Math.floor(this.box.clientHeight/5));
- var clientHeight = this.box.clientHeight;
- var top = 0;
-
- var interval = setInterval(function slide(event)
- {
- top = top - delta;
- if (top < -clientHeight)
- {
- clearInterval(interval);
-
- if (self.box.parentNode)
- self.box.parentNode.removeChild(self.box);
- }
- else
- {
- self.box.style.top = top + "px";
- }
- }, 15);
- }
-});
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(Firebug.Breakpoint.BreakpointsPanel);
-Firebug.registerRep(Firebug.Breakpoint.BreakpointRep);
-Firebug.registerModule(Firebug.Breakpoint);
-
-return Firebug.Breakpoint;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/chrome/reps",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/js/sourceLink",
+ "firebug/js/stackFrame",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/string",
+ "firebug/lib/array",
+ "firebug/lib/persist",
+ "firebug/chrome/menu",
+ "firebug/js/fbs",
+ "firebug/editor/editor",
+ "firebug/console/autoCompleter"
+],
+function(Obj, Firebug, Domplate, FirebugReps, Locale, Events, SourceLink,
+ StackFrame, Css, Dom, Str, Arr, Persist, Menu, FBS) {
+
+// ********************************************************************************************* //
+// Constants
+
+const animationDuration = 0.8;
+
+// ********************************************************************************************* //
+// Breakpoints
+
+Firebug.Breakpoint = Obj.extend(Firebug.Module,
+{
+ dispatchName: "breakpoints",
+
+ initialize: function()
+ {
+ Firebug.connection.addListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.connection.removeListener(this);
+ },
+
+ toggleBreakOnNext: function(panel)
+ {
+ var breakable = Firebug.chrome.getGlobalAttribute("cmd_firebug_toggleBreakOn", "breakable");
+
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("breakpoint.toggleBreakOnNext; currentBreakable "+breakable+
+ " in " + panel.context.getName());
+
+ // Toggle button's state.
+ breakable = (breakable == "true" ? "false" : "true");
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleBreakOn", "breakable", breakable);
+
+ // Call the current panel's logic related to break-on-next.
+ // If breakable == "true" the feature is currently disabled.
+ var enabled = (breakable == "true" ? false : true);
+ panel.breakOnNext(enabled);
+
+ // Make sure the correct tooltip (coming from the current panel) is used.
+ this.updateBreakOnNextTooltips(panel);
+
+ // Light up the tab whenever break on next is selected
+ this.updatePanelTab(panel, enabled);
+
+ return enabled;
+ },
+
+ showPanel: function(browser, panel)
+ {
+ this.updatePanelState(panel);
+ },
+
+ onDebuggerEnabled: function()
+ {
+ var panel = Firebug.chrome.getSelectedPanel();
+ this.updatePanelState(panel);
+ },
+
+ updatePanelState: function(panel)
+ {
+ if (!panel) // there is no selectedPanel?
+ return;
+
+ var breakButton = Firebug.chrome.$("fbBreakOnNextButton");
+ if (panel.name)
+ breakButton.setAttribute("panelName", panel.name);
+
+ breakButton.removeAttribute("type");
+ Dom.collapse(Firebug.chrome.$("fbBonButtons"), !panel.breakable);
+
+ // The script panel can be created at this moment (the second parameter is false)
+ // It's needed for break on next to work (do not wait till the user actually
+ // selects the panel).
+ var scriptPanel = panel.context.getPanel("script");
+ var scriptEnabled = scriptPanel && scriptPanel.isEnabled();
+ var tool = Firebug.connection.getTool("script");
+ var scriptActive = tool && tool.getActive();
+ var supported = panel.supportsBreakOnNext();
+
+ // Enable by default and disable if needed.
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleBreakOn", "disabled", null);
+
+ // Disable BON if script is disabled or if BON isn't supported by the current panel.
+ if (!scriptEnabled || !scriptActive || !supported)
+ {
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleBreakOn", "breakable", "disabled");
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleBreakOn", "disabled", "true");
+ this.updateBreakOnNextTooltips(panel);
+ return;
+ }
+
+ // Set the tooltips and update break-on-next button's state.
+ var shouldBreak = panel.shouldBreakOnNext();
+ this.updateBreakOnNextState(panel, shouldBreak);
+ this.updateBreakOnNextTooltips(panel);
+ this.updatePanelTab(panel, shouldBreak);
+
+ var menuItems = panel.getBreakOnMenuItems();
+ if (!menuItems || !menuItems.length)
+ return;
+
+ breakButton.setAttribute("type", "menu-button");
+
+ var menuPopup = Firebug.chrome.$("fbBreakOnNextOptions");
+ Dom.eraseNode(menuPopup);
+
+ Menu.createMenuItems(menuPopup, menuItems);
+ },
+
+ toggleTabHighlighting: function(event)
+ {
+ // Don't continue if it's the wrong animation phase
+ if (Math.floor(event.elapsedTime * 10) % (animationDuration * 20) != 0)
+ return;
+
+ Events.removeEventListener(event.target, "animationiteration",
+ Firebug.Breakpoint.toggleTabHighlighting, true);
+
+ var panel = Firebug.currentContext.getPanel(event.target.panelType.prototype.name);
+ if (!panel)
+ return;
+
+ if (!panel.context.delayedArmedTab)
+ return;
+
+ panel.context.delayedArmedTab.setAttribute("breakOnNextArmed", "true");
+ delete panel.context.delayedArmedTab;
+ },
+
+ updateBreakOnNextTooltips: function(panel)
+ {
+ var breakable = Firebug.chrome.getGlobalAttribute("cmd_firebug_toggleBreakOn", "breakable");
+
+ // Get proper tooltip for the break-on-next button from the current panel.
+ // If breakable is set to "false" the feature is already activated (throbbing).
+ var armed = (breakable == "false");
+ var tooltip = panel.getBreakOnNextTooltip(armed);
+ if (!tooltip)
+ tooltip = "";
+
+ // The user should know that BON is disabled if the Script panel (debugger) is disabled.
+ if (breakable == "disabled")
+ tooltip += " " + Locale.$STR("firebug.bon.scriptPanelNeeded");
+
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleBreakOn", "tooltiptext", tooltip);
+ },
+
+ updateBreakOnNextState: function(panel, armed)
+ {
+ // If the panel should break at the next chance, set the button to not breakable,
+ // which means already active (throbbing).
+ var breakable = armed ? "false" : "true";
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleBreakOn", "breakable", breakable);
+ },
+
+ updatePanelTab: function(panel, armed)
+ {
+ if (!panel)
+ return;
+
+ // If the script panels is disabled, BON can't be active.
+ if (!Firebug.PanelActivation.isPanelEnabled("script"))
+ armed = false;
+
+ var panelBar = Firebug.chrome.$("fbPanelBar1");
+ var tab = panelBar.getTab(panel.name);
+ if (tab)
+ {
+ if (armed)
+ {
+ // If there is already a panel armed synchronize highlighting of the panel tabs
+ var tabPanel = tab.parentNode;
+ var otherTabIsArmed = false;
+ for (var i = 0; i < tabPanel.children.length; ++i)
+ {
+ var panelTab = tabPanel.children[i];
+ if (panelTab !== tab && panelTab.getAttribute("breakOnNextArmed") == "true")
+ {
+ panel.context.delayedArmedTab = tab;
+ Events.addEventListener(panelTab, "animationiteration",
+ this.toggleTabHighlighting, true);
+ otherTabIsArmed = true;
+ break;
+ }
+ }
+
+ if (!otherTabIsArmed)
+ tab.setAttribute("breakOnNextArmed", "true");
+ }
+ else
+ {
+ delete panel.context.delayedArmedTab;
+ tab.setAttribute("breakOnNextArmed", "false");
+ }
+ }
+ },
+
+ updatePanelTabs: function(context)
+ {
+ if (!context)
+ return;
+
+ var panelTypes = Firebug.getMainPanelTypes(context);
+ for (var i=0; i<panelTypes.length; ++i)
+ {
+ var panelType = panelTypes[i];
+ var panel = context.getPanel(panelType.prototype.name);
+ var shouldBreak = (panel && panel.shouldBreakOnNext()) ? true : false;
+ this.updatePanelTab(panel, shouldBreak);
+ }
+ },
+
+ // supports non-JS break on next
+ breakNow: function(panel)
+ {
+ this.updatePanelTab(panel, false);
+ Firebug.Debugger.breakNow(panel.context); // TODO BTI
+ },
+
+ updateOption: function(name, value)
+ {
+ if (name == "showBreakNotification")
+ {
+ var panelBar1 = Firebug.chrome.$("fbPanelBar1");
+ var doc = panelBar1.browser.contentDocument;
+ var checkboxes = doc.querySelectorAll(".doNotShowBreakNotification");
+
+ for (var i=0; i<checkboxes.length; i++)
+ checkboxes[i].checked = !value;
+ }
+ },
+});
+
+// ********************************************************************************************* //
+
+with (Domplate) {
+Firebug.Breakpoint.BreakpointListRep = domplate(Firebug.Rep,
+{
+ tag:
+ DIV({role : "list"},
+ FOR("group", "$groups",
+ DIV({"class": "breakpointBlock breakpointBlock-$group.name", role: "list",
+ $opened: "$group.opened", _repObject: "$group", onclick: "$onClick"},
+ H1({"class": "breakpointHeader groupHeader"},
+ DIV({"class": "twisty", role: "presentation"}),
+ SPAN({"class": "breakpointsHeaderLabel"}, "$group.title")
+ ),
+ DIV({"class": "breakpointsGroupListBox", role: "listbox"},
+ FOR("bp", "$group.breakpoints",
+ TAG("$bp|getBreakpointRep", {bp: "$bp"})
+ )
+ )
+ )
+ )
+ ),
+
+ getBreakpointRep: function(bp)
+ {
+ var rep = Firebug.getRep(bp, Firebug.currentContext);
+ return rep.tag;
+ },
+
+ toggleGroup: function(node)
+ {
+ var panel = Firebug.getElementPanel(node);
+ var groupNode = Dom.getAncestorByClass(node, "breakpointBlock");
+ var group = Firebug.getRepObject(groupNode);
+
+ Css.toggleClass(groupNode, "opened");
+ var opened = Css.hasClass(groupNode, "opened");
+ panel.groupOpened[group.name] = opened;
+
+ if (opened)
+ {
+ var offset = Dom.getClientOffset(node);
+ var titleAtTop = offset.y < panel.panelNode.scrollTop;
+ Dom.scrollTo(groupNode, panel.panelNode, null,
+ groupNode.offsetHeight > panel.panelNode.clientHeight || titleAtTop ? "top" : "bottom");
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onClick: function(event)
+ {
+ if (!Events.isLeftClick(event))
+ return;
+
+ var header = Dom.getAncestorByClass(event.target, "breakpointHeader");
+ if (header)
+ {
+ this.toggleGroup(event.target);
+ return;
+ }
+ }
+});
+
+// ********************************************************************************************* //
+
+Firebug.Breakpoint.BreakpointRep = domplate(Firebug.Rep,
+{
+ tag:
+ DIV({"class": "breakpointRow focusRow", $disabled: "$bp|isDisabled", role: "option",
+ "aria-checked": "$bp.checked", _repObject: "$bp", onclick: "$onClick"},
+ DIV({"class": "breakpointBlockHead"},
+ INPUT({"class": "breakpointCheckbox", type: "checkbox",
+ _checked: "$bp.checked", tabindex : '-1'}),
+ SPAN({"class": "breakpointName"}, "$bp.name"),
+ TAG(FirebugReps.SourceLink.tag, {object: "$bp|getSourceLink"}),
+ SPAN({"class": "closeButton"})
+ ),
+ DIV({"class": "breakpointCode"}, "$bp.sourceLine")
+ ),
+
+ getSourceLink: function(bp)
+ {
+ return new SourceLink.SourceLink(bp.href, bp.lineNumber, "js");
+ },
+
+ removeBreakpoint: function(groupName, href, lineNumber)
+ {
+ if (groupName == "breakpoints")
+ FBS.clearBreakpoint(href, lineNumber);
+ else if (groupName == "errorBreakpoints")
+ FBS.clearErrorBreakpoint(href, lineNumber);
+ else if (groupName == "monitors")
+ FBS.unmonitor(href, lineNumber);
+ },
+
+ enableBreakpoint: function(href, lineNumber)
+ {
+ FBS.enableBreakpoint(href, lineNumber);
+ },
+
+ disableBreakpoint: function(href, lineNumber)
+ {
+ FBS.disableBreakpoint(href, lineNumber);
+ },
+
+ isDisabled: function(bp)
+ {
+ return !bp.checked;
+ },
+
+ getContextMenuItems: function(breakpoint, target)
+ {
+ var head = Dom.getAncestorByClass(target, "breakpointBlock");
+ var groupName = Css.getClassValue(head, "breakpointBlock");
+
+ var items = [{
+ label: "breakpoints.Remove_Breakpoint",
+ tooltiptext: "breakpoints.tip.Remove_Breakpoint",
+ command: Obj.bindFixed(this.removeBreakpoint, this, groupName,
+ breakpoint.href, breakpoint.lineNumber)
+ }];
+
+ if (groupName == "breakpoints")
+ {
+ if (breakpoint.checked)
+ {
+ items.push({
+ label: "breakpoints.Disable_Breakpoint",
+ tooltiptext: "breakpoints.tip.Disable_Breakpoint",
+ command: Obj.bindFixed(this.disableBreakpoint, this, breakpoint.href,
+ breakpoint.lineNumber)
+ });
+ }
+ else
+ {
+ items.push({
+ label: "breakpoints.Enable_Breakpoint",
+ tooltiptext: "breakpoints.tip.Enable_Breakpoint",
+ command: Obj.bindFixed(this.enableBreakpoint, this, breakpoint.href,
+ breakpoint.lineNumber)
+ });
+ }
+ }
+
+ items.push(
+ "-"
+ );
+
+ return items;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ inspectable: false,
+
+ supportsObject: function(object, type)
+ {
+ return (object instanceof Firebug.Debugger.Breakpoint); // FIXME moz back end
+ },
+
+ onClick: function(event)
+ {
+ var panel = Firebug.getElementPanel(event.target);
+
+ if (Dom.getAncestorByClass(event.target, "breakpointCheckbox"))
+ {
+ var node = event.target.parentNode.getElementsByClassName(
+ "objectLink-sourceLink").item(0);
+
+ if (!node)
+ return;
+
+ var sourceLink = node.repObject;
+
+ panel.noRefresh = true;
+ var checkBox = event.target;
+ var bpRow = Dom.getAncestorByClass(checkBox, "breakpointRow");
+
+ if (checkBox.checked)
+ {
+ this.enableBreakpoint(sourceLink.href, sourceLink.line);
+ bpRow.setAttribute("aria-checked", "true");
+ }
+ else
+ {
+ this.disableBreakpoint(sourceLink.href, sourceLink.line);
+ bpRow.setAttribute("aria-checked", "false");
+ }
+ panel.noRefresh = false;
+ }
+ else if (Dom.getAncestorByClass(event.target, "closeButton"))
+ {
+ panel.noRefresh = true;
+ var sourceLink = event.target.parentNode.getElementsByClassName(
+ "objectLink-sourceLink").item(0).repObject;
+
+ var head = Dom.getAncestorByClass(event.target, "breakpointBlock");
+ var groupName = Css.getClassValue(head, "breakpointBlock");
+
+ this.removeBreakpoint(groupName, sourceLink.href, sourceLink.line);
+
+ panel.noRefresh = false;
+ }
+
+ panel.refresh();
+ }
+});
+};
+
+// ********************************************************************************************* //
+
+Firebug.Breakpoint.BreakpointsPanel = function() {};
+
+Firebug.Breakpoint.BreakpointsPanel.prototype = Obj.extend(Firebug.Panel,
+{
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Panel
+
+ name: "breakpoints",
+ parentPanel: "script",
+ order: 2,
+ enableA11y: true,
+ deriveA11yFrom: "console",
+
+ initialize: function()
+ {
+ this.groupOpened = [];
+
+ Firebug.Panel.initialize.apply(this, arguments);
+ },
+
+ destroy: function(state)
+ {
+ state.groupOpened = this.groupOpened;
+
+ Firebug.Panel.destroy.apply(this, arguments);
+ },
+
+ show: function(state)
+ {
+ if (this.context.loaded)
+ {
+ var state = null;
+ Persist.restoreObjects(this, state);
+
+ if (state)
+ {
+ if (state.groupOpened)
+ this.groupOpened = state.groupOpened;
+ }
+ }
+
+ this.refresh();
+ },
+
+ refresh: function()
+ {
+ if (this.noRefresh)
+ return;
+
+ var extracted = this.extractBreakpoints(this.context);
+
+ var breakpoints = extracted.breakpoints;
+ var errorBreakpoints = extracted.errorBreakpoints;
+ var monitors = extracted.monitors;
+
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("breakpoints.refresh extracted " +
+ breakpoints.length+errorBreakpoints.length+monitors.length,
+ [breakpoints, errorBreakpoints, monitors]);
+
+ function sortBreakpoints(a, b)
+ {
+ if (a.href == b.href)
+ return a.lineNumber < b.lineNumber ? -1 : 1;
+ else
+ return a.href < b.href ? -1 : 1;
+ }
+
+ breakpoints.sort(sortBreakpoints);
+ errorBreakpoints.sort(sortBreakpoints);
+ monitors.sort(sortBreakpoints);
+
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("breakpoints.refresh sorted "+breakpoints.length+
+ errorBreakpoints.length+monitors.length, [breakpoints, errorBreakpoints, monitors]);
+
+ var groups = [];
+
+ if (breakpoints.length)
+ groups.push({name: "breakpoints", title: Locale.$STR("Breakpoints"),
+ breakpoints: breakpoints});
+
+ if (errorBreakpoints.length)
+ groups.push({name: "errorBreakpoints", title: Locale.$STR("ErrorBreakpoints"),
+ breakpoints: errorBreakpoints});
+
+ if (monitors.length)
+ groups.push({name: "monitors", title: Locale.$STR("LoggedFunctions"),
+ breakpoints: monitors});
+
+ Firebug.connection.dispatch("getBreakpoints", [this.context, groups]);
+
+ if (groups.length != 0)
+ {
+ for (var i = 0; i < groups.length; ++i)
+ {
+ groups[i].opened = typeof this.groupOpened[groups[i].name] != "undefined" ?
+ this.groupOpened[groups[i].name] : true;
+ }
+
+ Firebug.Breakpoint.BreakpointListRep.tag.replace({groups: groups}, this.panelNode);
+ }
+ else
+ {
+ FirebugReps.Warning.tag.replace({object: "NoBreakpointsWarning"}, this.panelNode);
+ }
+
+ if (FBTrace.DBG_BP)
+ {
+ FBTrace.sysout("breakpoints.refresh "+breakpoints.length+
+ errorBreakpoints.length+monitors.length, [breakpoints, errorBreakpoints, monitors]);
+ }
+
+ Events.dispatch(this.fbListeners, "onBreakRowsRefreshed", [this, this.panelNode]);
+ },
+
+ extractBreakpoints: function(context)
+ {
+ var breakpoints = [];
+ var errorBreakpoints = [];
+ var monitors = [];
+
+ var renamer = new SourceFileRenamer(context);
+ var Breakpoint = Firebug.Debugger.Breakpoint;
+
+ for (var url in context.sourceFileMap)
+ {
+ FBS.enumerateBreakpoints(url, {call: function(url, line, props, scripts)
+ {
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("breakpoints.extractBreakpoints type: "+props.type+" in url "+
+ url+"@"+line+" context "+context.getName(), props);
+
+ // some url in this sourceFileMap has changed, we'll be back.
+ if (renamer.checkForRename(url, line, props))
+ return;
+
+ var isFuture = false;
+ var name = "";
+ if (scripts) // then this is a current (not future) breakpoint
+ {
+ var script = scripts[0];
+ var analyzer = Firebug.SourceFile.getScriptAnalyzer(context, script);
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("breakpoints.refresh enumerateBreakpoints for script="+
+ script.tag+(analyzer?" has analyzer":" no analyzer")+" in context "+
+ context.getName());
+
+ name = analyzer ?
+ analyzer.getFunctionDescription(script, context).name :
+ StackFrame.guessFunctionName(url, 1, context);
+ }
+ else
+ {
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("breakpoints.refresh enumerateBreakpoints future for url at line="+
+ url+"@"+line+"\n");
+
+ isFuture = true;
+ }
+
+ var source = context.sourceCache.getLine(url, line);
+ breakpoints.push(new Breakpoint(name, url, line, !props.disabled, source, isFuture));
+ }});
+
+ FBS.enumerateErrorBreakpoints(url, {call: function(url, line, props)
+ {
+ // some url in this sourceFileMap has changed, we'll be back.
+ if (renamer.checkForRename(url, line, props))
+ return;
+
+ var name = Firebug.SourceFile.guessEnclosingFunctionName(url, line, context);
+ var source = context.sourceCache.getLine(url, line);
+ errorBreakpoints.push(new Breakpoint(name, url, line, true, source));
+ }});
+
+ FBS.enumerateMonitors(url, {call: function(url, line, props)
+ {
+ // some url in this sourceFileMap has changed, we'll be back.
+ if (renamer.checkForRename(url, line, props))
+ return;
+
+ var name = Firebug.SourceFile.guessEnclosingFunctionName(url, line, context);
+ monitors.push(new Breakpoint(name, url, line, true, ""));
+ }});
+ }
+
+ var result = null;
+
+ if (renamer.needToRename(context))
+ {
+ // since we renamed some sourceFiles we need to refresh the breakpoints again.
+ result = this.extractBreakpoints(context);
+ }
+ else
+ {
+ result = {
+ breakpoints: breakpoints,
+ errorBreakpoints: errorBreakpoints,
+ monitors: monitors
+ };
+ }
+
+ // even if we did not rename, some bp may be dynamic
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("breakpoints.extractBreakpoints context.dynamicURLhasBP: "+
+ context.dynamicURLhasBP, result);
+
+ return result;
+ },
+
+ getOptionsMenuItems: function()
+ {
+ var items = [];
+
+ var context = this.context;
+
+ var bpCount = 0, disabledCount = 0;
+ var checkBoxes = this.panelNode.getElementsByClassName("breakpointCheckbox");
+ for (var i=0; i<checkBoxes.length; i++)
+ {
+ ++bpCount;
+ if (!checkBoxes[i].checked)
+ ++disabledCount;
+ }
+
+ if (disabledCount)
+ {
+ items.push(
+ {
+ label: "EnableAllBreakpoints",
+ command: Obj.bindFixed(this.enableAllBreakpoints, this, context, true),
+ tooltiptext: "breakpoints.option.tip.Enable_All_Breakpoints"
+ }
+ );
+ }
+ if (bpCount && disabledCount != bpCount)
+ {
+ items.push(
+ {
+ label: "DisableAllBreakpoints",
+ command: Obj.bindFixed(this.enableAllBreakpoints, this, context, false),
+ tooltiptext: "breakpoints.option.tip.Disable_All_Breakpoints"
+ }
+ );
+ }
+
+ items.push(
+ "-",
+ {
+ label: "ClearAllBreakpoints",
+ disabled: !bpCount,
+ command: Obj.bindFixed(this.clearAllBreakpoints, this, context),
+ tooltiptext: "breakpoints.option.tip.Clear_All_Breakpoints"
+ }
+ );
+
+ return items;
+ },
+
+ getContextMenuItems: function(object, target, context)
+ {
+ return this.getOptionsMenuItems();
+ },
+
+ enableAllBreakpoints: function(context, status)
+ {
+ var checkBoxes = this.panelNode.getElementsByClassName("breakpointCheckbox");
+ for (var i=0; i<checkBoxes.length; i++)
+ {
+ var box = checkBoxes[i];
+ if (box.checked != status)
+ this.click(box);
+ }
+ },
+
+ clearAllBreakpoints: function(context)
+ {
+ this.noRefresh = true;
+
+ try
+ {
+ // Remove regular JSD breakpoints
+ Firebug.Debugger.clearAllBreakpoints(context);
+ }
+ catch(exc)
+ {
+ FBTrace.sysout("breakpoint.clearAllBreakpoints FAILS "+exc, exc);
+ }
+
+ this.noRefresh = false;
+ this.refresh();
+
+ // Remove the rest of all the other kinds of breakpoints (after refresh).
+ // These can come from various modules and perhaps extensions, so use
+ // the appropriate remove buttons.
+ var buttons = this.panelNode.getElementsByClassName("closeButton");
+ while (buttons.length)
+ this.click(buttons[0]);
+
+ // Breakpoint group titles must also go away.
+ this.refresh();
+ },
+
+ click: function(node)
+ {
+ var doc = node.ownerDocument, event = doc.createEvent("MouseEvents");
+ event.initMouseEvent("click", true, true, doc.defaultView, 0, 0, 0, 0, 0,
+ false, false, false, false, 0, null);
+ return node.dispatchEvent(event);
+ }
+});
+
+// ********************************************************************************************* //
+
+function countBreakpoints(context)
+{
+ var count = 0;
+ for (var url in context.sourceFileMap)
+ {
+ FBS.enumerateBreakpoints(url, {call: function(url, lineNo)
+ {
+ ++count;
+ }});
+ }
+ return count;
+}
+
+// ********************************************************************************************* //
+
+Firebug.Breakpoint.BreakpointGroup = function()
+{
+ this.breakpoints = [];
+};
+
+Firebug.Breakpoint.BreakpointGroup.prototype =
+{
+ removeBreakpoint: function(bp)
+ {
+ Arr.remove(this.breakpoints, bp);
+ },
+
+ enumerateBreakpoints: function(callback)
+ {
+ var breakpoints = Arr.cloneArray(this.breakpoints);
+ for (var i=0; i<breakpoints.length; i++)
+ {
+ var bp = breakpoints[i];
+ if (callback(bp))
+ return true;
+ }
+ return false;
+ },
+
+ findBreakpoint: function()
+ {
+ for (var i=0; i<this.breakpoints.length; i++)
+ {
+ var bp = this.breakpoints[i];
+ if (this.matchBreakpoint(bp, arguments))
+ return bp;
+ }
+ return null;
+ },
+
+ matchBreakpoint: function(bp, args)
+ {
+ // TODO: must be implemented in derived objects.
+ return false;
+ },
+
+ isEmpty: function()
+ {
+ return !this.breakpoints.length;
+ }
+};
+
+// ********************************************************************************************* //
+// TODO move to mozilla back end
+
+function SourceFileRenamer(context)
+{
+ this.renamedSourceFiles = [];
+ this.context = context;
+ this.bps = [];
+}
+
+SourceFileRenamer.prototype.checkForRename = function(url, line, props)
+{
+ var sourceFile = this.context.sourceFileMap[url];
+ if (sourceFile.isEval() || sourceFile.isEvent())
+ {
+ var segs = sourceFile.href.split('/');
+ if (segs.length > 2)
+ {
+ if (segs[segs.length - 2] == "seq")
+ {
+ this.renamedSourceFiles.push(sourceFile);
+ this.bps.push(props);
+ }
+ }
+
+ // whether not we needed to rename, the dynamic sourceFile has a bp.
+ this.context.dynamicURLhasBP = true;
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("breakpoints.checkForRename found bp in "+sourceFile+" renamed files:",
+ this.renamedSourceFiles);
+ }
+ else
+ {
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("breakpoints.checkForRename found static bp in " + sourceFile +
+ " bp:", props);
+ }
+
+ return (this.renamedSourceFiles.length > 0);
+};
+
+SourceFileRenamer.prototype.needToRename = function(context)
+{
+ if (this.renamedSourceFiles.length > 0)
+ this.renameSourceFiles(context);
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("debugger renamed " + this.renamedSourceFiles.length + " sourceFiles",
+ context.sourceFileMap);
+
+ return this.renamedSourceFiles.length;
+};
+
+SourceFileRenamer.prototype.renameSourceFiles = function(context)
+{
+ for (var i = 0; i < this.renamedSourceFiles.length; i++)
+ {
+ var sourceFile = this.renamedSourceFiles[i];
+ var bp = this.bps[i];
+
+ var oldURL = sourceFile.href;
+ var sameType = bp.type;
+ var sameLineNo = bp.lineNo;
+
+ // last is sequence #, next-last is "seq", next-next-last is kind
+ var segs = oldURL.split('/');
+ var kind = segs.splice(segs.length - 3, 3)[0];
+ var callerURL = segs.join('/');
+ if (!sourceFile.source)
+ {
+ FBTrace.sysout("breakpoint.renameSourceFiles no source for " + oldURL +
+ " callerURL " + callerURL, sourceFile);
+ continue;
+ }
+
+ var newURL = Firebug.Debugger.getURLFromMD5(callerURL, sourceFile.source, kind);
+ sourceFile.href = newURL.href;
+
+ FBS.removeBreakpoint(bp.type, oldURL, bp.lineNo);
+ delete context.sourceFileMap[oldURL]; // SourceFile delete
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("breakpoints.renameSourceFiles type: "+bp.type, bp);
+
+ Firebug.Debugger.watchSourceFile(context, sourceFile);
+ var newBP = FBS.addBreakpoint(sameType, sourceFile, sameLineNo, bp, Firebug.Debugger);
+
+ var panel = context.getPanel("script", true);
+ if (panel)
+ {
+ panel.context.invalidatePanels("breakpoints");
+ panel.renameSourceBox(oldURL, newURL.href);
+ }
+
+ if (context.sourceCache.isCached(oldURL))
+ {
+ var lines = context.sourceCache.load(oldURL);
+ context.sourceCache.storeSplitLines(newURL.href, lines);
+ context.sourceCache.invalidate(oldURL);
+ }
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("SourceFileRenamer renamed " + oldURL + " to " + newURL,
+ { newBP: newBP, oldBP: bp});
+ }
+
+ return this.renamedSourceFiles.length;
+};
+
+// ********************************************************************************************* //
+
+Firebug.Breakpoint.ConditionEditor = function(doc)
+{
+ this.initialize(doc);
+};
+
+with (Domplate) {
+Firebug.Breakpoint.ConditionEditor.prototype = domplate(Firebug.JSEditor.prototype,
+{
+ tag:
+ DIV({"class": "conditionEditor"},
+ DIV({"class": "conditionCaption"}, Locale.$STR("ConditionInput")),
+ INPUT({"class": "conditionInput completionBox", type: "text",
+ tabindex: "-1"}),
+ INPUT({"class": "conditionInput completionInput", type: "text",
+ "aria-label": Locale.$STR("ConditionInput"),
+ oninput: "$onInput", onkeypress: "$onKeyPress"}
+ )
+ ),
+
+ initialize: function(doc)
+ {
+ this.box = this.tag.replace({}, doc, this);
+ this.input = this.box.getElementsByClassName("completionInput").item(0);
+
+ var completionBox = this.box.getElementsByClassName("completionBox").item(0);
+ var options = {
+ tabWarnings: true
+ };
+ this.setupCompleter(completionBox, options);
+ },
+
+ show: function(sourceLine, panel, value)
+ {
+ this.target = sourceLine;
+ this.panel = panel;
+
+ this.getAutoCompleter().reset();
+
+ Dom.hide(this.box, true);
+ panel.selectedSourceBox.appendChild(this.box);
+
+ this.input.value = value;
+
+ setTimeout(Obj.bindFixed(function()
+ {
+ var offset = Dom.getClientOffset(sourceLine);
+
+ var bottom = offset.y+sourceLine.offsetHeight;
+ var y = bottom - this.box.offsetHeight;
+ if (y < panel.selectedSourceBox.scrollTop)
+ {
+ y = offset.y;
+ Css.setClass(this.box, "upsideDown");
+ }
+ else
+ {
+ Css.removeClass(this.box, "upsideDown");
+ }
+
+ this.box.style.top = y + "px";
+ Dom.hide(this.box, false);
+
+ this.input.focus();
+ this.input.select();
+ }, this));
+ },
+
+ hide: function()
+ {
+ this.box.parentNode.removeChild(this.box);
+
+ delete this.target;
+ delete this.panel;
+ },
+
+ layout: function()
+ {
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ endEditing: function(target, value, cancel)
+ {
+ if (!cancel)
+ {
+ var compilationUnit = this.panel.location;
+ var lineNo = parseInt(this.target.textContent);
+ // TODO rest is mozilla backend
+ var sourceFile = compilationUnit.sourceFile;
+ FBS.setBreakpointCondition(sourceFile, lineNo, value, Firebug.Debugger);
+ }
+ }
+});
+
+// ********************************************************************************************* //
+
+/**
+ * Construct a break notification popup
+ * @param doc the document to contain the notification
+ * @param cause info object for the popup, with these optional fields:
+ * strings: title, message, attrName
+ * elements: target, relatedTarget: element
+ * objects: prevValue, newValue
+ */
+Firebug.Breakpoint.BreakNotification = function(doc, cause)
+{
+ this.document = doc;
+ this.cause = cause;
+};
+
+Firebug.Breakpoint.BreakNotification.prototype = domplate(Firebug.Rep,
+/** @lends Firebug.ScriptPanel.Notification */
+{
+ tag:
+ DIV({"class": "notificationBox"},
+ TABLE({"class": "notificationTable", onclick: "$onHide",
+ onmouseover: "$onMouseOver", onmouseout: "$onMouseOut"},
+ TBODY(
+ TR(
+ TD({"class": "imageCol"},
+ IMG({"class": "notificationImage",
+ src: "chrome://firebug/skin/breakpoint.png"})
+ ),
+ TD({"class": "descCol"},
+ SPAN({"class": "notificationDesc"}, "$cause|getDescription"),
+ SPAN(" "),
+ SPAN({"class": "diff"}, "$cause|getDiff"),
+ SPAN({"class": "targets"}),
+ DIV({"class": "noNotificationDesc"})
+ ),
+ TD({"class": "buttonsCol"},
+ BUTTON({"class": "notificationButton copyButton",
+ onclick: "$onCopyAction",
+ $collapsed: "$cause|hideCopyAction"},
+ Locale.$STR("Copy")
+ ),
+ BUTTON({"class": "notificationButton skipButton",
+ onclick: "$onSkipAction",
+ $collapsed: "$cause|hideSkipAction"},
+ Locale.$STR("script.balloon.Disable")
+ ),
+ BUTTON({"class": "notificationButton okButton",
+ onclick: "$onOkAction",
+ $collapsed: "$cause|hideOkAction"},
+ Locale.$STR("script.balloon.Continue")
+ )
+ ),
+ TD(
+ DIV({"class": "notificationClose", onclick: "$onHide"})
+ )
+ )
+ )
+ )
+ ),
+
+ targets:
+ SPAN(
+ SPAN(" "),
+ TAG("$cause|getTargetTag", {object: "$cause.target"}),
+ SPAN(" "),
+ TAG("$cause|getRelatedTargetTag", {object: "$cause.relatedNode"})
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onMouseOver: function(event)
+ {
+ var target = event.target;
+ var box = Dom.getAncestorByClass(target, "notificationBox");
+ var close = box.querySelector(".notificationClose");
+
+ // The close button is "active" (red) if the mouse hovers over the notification
+ // area except when it hovers over a button or link.
+ var localName = target.localName ? target.localName.toLowerCase() : "";
+ if (Css.hasClass(target, "notificationButton") || localName == "a")
+ close.removeAttribute("active");
+ else
+ close.setAttribute("active", true);
+ },
+
+ onMouseOut: function(event)
+ {
+ var box = Dom.getAncestorByClass(event.target, "notificationBox");
+ var close = box.querySelector(".notificationClose");
+ close.removeAttribute("active");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onHide: function(event)
+ {
+ var notify = this.getNotifyObject(event.target);
+ notify.hide();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getDescription: function(cause)
+ {
+ var str = cause.message + (cause.attrName ? (" '" + cause.attrName + "'") : "");
+ if (this.getDiff(cause))
+ str += ":";
+
+ return str;
+ },
+
+ getTargetTag: function(cause)
+ {
+ return this.getElementTag(cause.target) || null;
+ },
+
+ getRelatedTargetTag: function(cause)
+ {
+ return this.getElementTag(cause.relatedNode) || null;
+ },
+
+ getElementTag: function(node)
+ {
+ if (node)
+ {
+ var rep = Firebug.getRep(node);
+ if (rep)
+ return rep.shortTag || rep.tag;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Button Handlers
+
+ hideCopyAction: function(cause)
+ {
+ return !cause.copyAction;
+ },
+
+ hideSkipAction: function(cause)
+ {
+ return !cause.skipAction;
+ },
+
+ hideOkAction: function(cause)
+ {
+ return !cause.okAction;
+ },
+
+ onCopyAction: function(event)
+ {
+ var notify = this.getNotifyObject(event.target);
+ if (notify.cause.copyAction)
+ notify.cause.copyAction();
+ },
+
+ onSkipAction: function(event)
+ {
+ var notify = this.getNotifyObject(event.target);
+ if (notify.cause.skipAction)
+ notify.cause.skipAction();
+ },
+
+ onOkAction: function(event)
+ {
+ var notify = this.getNotifyObject(event.target);
+ if (notify.cause.okAction)
+ notify.cause.okAction();
+ },
+
+ onCloseAction: function(event)
+ {
+ var notify = this.getNotifyObject(event.target);
+ if (notify.cause.onCloseAction)
+ notify.cause.onCloseAction();
+ else
+ notify.hide(event); // same as click on notify body
+ },
+
+ getNotifyObject: function(target)
+ {
+ var parentNode = Dom.getAncestorByClass(target, "notificationBox");
+ return parentNode.repObject;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Action handlers from "do not show again" description
+
+ onClickLink: function(event)
+ {
+ this.showTabMenu(event);
+ },
+
+ disableNotifications: function(event)
+ {
+ Firebug.setPref(Firebug.prefDomain, "showBreakNotification", false);
+
+ // Hide the notification, but default processing of this event would hide it anyway.
+ this.onHide(event);
+ },
+
+ showTabMenu: function(event)
+ {
+ // Open panel's tab menu to show the "Show Break Notifications" option
+ // to teach the user where to enable it again.
+ var panelBar = Firebug.chrome.$("fbPanelBar1");
+ var tab = panelBar.getTab("script");
+ tab.tabMenu.showMenu();
+
+ // Avoid default processing that hides the notification popup.
+ Events.cancelEvent(event);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Helpers
+
+ getDiff: function(cause)
+ {
+ var str = "";
+
+ if (cause.prevValue)
+ str += Str.cropString(cause.prevValue, 40) + " -> ";
+
+ if (cause.newValue)
+ str += Str.cropString(cause.newValue, 40);
+
+ if (!str.length)
+ return "";
+
+ if (!cause.target)
+ return str;
+
+ return str;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Public
+
+ show: function(parentNode)
+ {
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("breakNotification.show; " + this.id);
+
+ // Reneder the entire notification box.
+ this.box = this.tag.append(this.cause, parentNode, this);
+ this.box.repObject = this;
+
+ // Appends the HTML targets dynamically. In case they are null, it breaks
+ // click events.
+ // xxxHonza: this problem would deserve clarification.
+ if (this.cause.target || this.cause.relatedNode)
+ {
+ var targetsNode = this.box.querySelector(".targets");
+ this.targets.replace(this.cause, targetsNode, this);
+ }
+
+ // Render "do not show again" text
+ var descNode = this.box.querySelector(".noNotificationDesc");
+ FirebugReps.Description.render(Locale.$STR("firebug.breakpoint.doNotShowBreakNotification2"),
+ descNode, Obj.bind(this.onClickLink, this));
+
+ // Tooltips
+ if (this.cause.skipActionTooltip)
+ this.box.querySelector(".skipButton").setAttribute("title", this.cause.skipActionTooltip);
+ if (this.cause.okActionTooltip)
+ this.box.querySelector(".okButton").setAttribute("title", this.cause.okActionTooltip);
+ if (this.cause.copyActionTooltip)
+ this.box.querySelector(".copyButton").setAttribute("title", this.cause.copyActionTooltip);
+
+ // xxxHonza: disable the animation, the interval seems to be frozen during debugger break.
+ this.box.style.top = "0";
+ return;
+
+ // Animation
+ var self = this;
+ var delta = Math.max(3, Math.floor(this.box.clientHeight/5));
+ var clientHeight = this.box.clientHeight;
+
+ this.box.style.top = -clientHeight + "px";
+ var interval = setInterval(function slide(event)
+ {
+ var top = parseInt(self.box.style.top, 10);
+ if (top >= 0)
+ {
+ clearInterval(interval);
+ }
+ else
+ {
+ var newTop = (top + delta) > 0 ? 0 : (top + delta);
+ self.box.style.top = newTop + "px";
+ }
+ }, 15);
+
+ return this.box;
+ },
+
+ hide: function()
+ {
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("breakNotification.hide;");
+
+ // xxxHonza: disable the animation, the interval seems to be frozen during debugger break.
+ if (this.box.parentNode)
+ this.box.parentNode.removeChild(this.box);
+ return;
+
+ // Animation
+ var self = this;
+ var delta = Math.max(3, Math.floor(this.box.clientHeight/5));
+ var clientHeight = this.box.clientHeight;
+ var top = 0;
+
+ var interval = setInterval(function slide(event)
+ {
+ top = top - delta;
+ if (top < -clientHeight)
+ {
+ clearInterval(interval);
+
+ if (self.box.parentNode)
+ self.box.parentNode.removeChild(self.box);
+ }
+ else
+ {
+ self.box.style.top = top + "px";
+ }
+ }, 15);
+ }
+});
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(Firebug.Breakpoint.BreakpointsPanel);
+Firebug.registerRep(Firebug.Breakpoint.BreakpointRep);
+Firebug.registerModule(Firebug.Breakpoint);
+
+return Firebug.Breakpoint;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/js/callstack.js b/content/firebug/js/callstack.js
index d90f39d..17c4652 100644
--- a/content/firebug/js/callstack.js
+++ b/content/firebug/js/callstack.js
@@ -1,460 +1,460 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/reps",
- "arch/javascripttool",
- "firebug/lib/events",
- "firebug/lib/wrapper",
- "firebug/js/stackFrame",
- "firebug/lib/css",
- "firebug/lib/array",
- "firebug/lib/dom",
- "firebug/lib/options",
- "firebug/chrome/menu"
-],
-function(Obj, Firebug, FirebugReps, JavaScriptTool, Events, Wrapper, StackFrame,
- Css, Arr, Dom, Options, Menu) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-// Callstack Panel
-
-/**
- * @Panel This panel is responsible for displaying a call-stack (list of function calls)
- * at specified point of Javascript execution. It's used as a side panel for the Script
- * panel.
- */
-Firebug.CallstackPanel = function() {};
-Firebug.CallstackPanel.prototype = Obj.extend(Firebug.Panel,
-/** @lends Firebug.CallstackPanel */
-{
- name: "callstack",
- parentPanel: "script",
- order: 1,
- enableA11y: true,
- deriveA11yFrom: "console",
-
- initialize: function(context, doc)
- {
- Firebug.Panel.initialize.apply(this, arguments);
-
- Firebug.connection.addListener(this);
- },
-
- destroy: function(state)
- {
- Firebug.connection.removeListener(this);
-
- Firebug.Panel.destroy.apply(this, arguments);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onStartDebugging: function(context, frame)
- {
- // if we get a show() call then create and set new location
- delete this.location;
-
- // then we should reshow
- if (this.visible)
- this.show();
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("callstack; onStartDebugging "+this.visible, this);
- },
-
- onStopDebugging: function(context)
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("callstack; onStopDebugging");
-
- // clear the view
- this.showStackTrace(null);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- show: function(state)
- {
- if (!this.location)
- {
- this.location = StackFrame.buildStackTrace(JavaScriptTool.Turn.currentFrame);
- this.updateLocation(this.location);
- }
- // then we are lazy
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("callstack.show state: "+state+" this.location: "+this.location,
- {state: state, panel: this,
- currentFrame: JavaScriptTool.Turn.currentFrame});
-
- if (state)
- {
- if (state.callstackToggles)
- {
- var frameElts = this.panelNode.getElementsByClassName("objectBox-stackFrame");
- for (var i = 0; i < frameElts.length; i++)
- {
- if (state.callstackToggles[i])
- FirebugReps.StackFrame.expandArguments(frameElts[i]);
- }
- }
-
- if (state.selectedCallStackFrameIndex)
- {
- this.selectFrame(state.selectedCallStackFrameIndex);
- }
- }
- },
-
- hide: function(state)
- {
- var frameElts = this.panelNode.getElementsByClassName("objectBox-stackFrame");
- state.callstackToggles = [];
- for (var i = 0; i < frameElts.length; i++)
- {
- var item = frameElts[i];
- if (item.classList.contains("opened"))
- state.callstackToggles[i] = true;
-
- if (item.getAttribute("selected") == "true")
- state.selectedCallStackFrameIndex = i + 1; // traces are 1 base
- }
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("callstack.hide state: "+state, state);
- },
-
- supportsObject: function(object, type)
- {
- return (object instanceof StackFrame.StackTrace) ||
- (object instanceof Ci.jsdIStackFrame) ||
- (object instanceof StackFrame.StackFrame);
- },
-
- // this.selection is a StackFrame in our this.location
- updateSelection: function(object)
- {
- if (!this.location) // then we are lazy
- {
- this.location = StackFrame.buildStackTrace(JavaScriptTool.Turn.currentFrame);
- this.updateLocation(this.location);
- }
-
- // The selection object should be StackFrame
- if (object instanceof StackFrame.StackFrame)
- {
- var trace = this.location;
- var frameIndex = object.getFrameIndex();
- if (frameIndex)
- {
- trace.currentFrameIndex = frameIndex;
- this.selectFrame(frameIndex);
- }
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("Callstack updateSelection index:"+trace.currentFrameIndex+
- " StackFrame "+object, object);
- }
- else if (object instanceof Ci.jsdIStackFrame)
- {
- var trace = this.location;
- if (trace)
- {
- trace.frames.forEach(function selectMatching(frame)
- {
- if (frame.nativeFrame === object)
- this.select(frame);
- }, this);
- }
- }
- },
-
- // this.location is a StackTrace
- updateLocation: function(object)
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("callstack; updateLocation "+object, object);
-
- // All paths lead to showStackTrace
- if (object instanceof StackFrame.StackTrace)
- this.showStackTrace(object);
- else if (object instanceof Ci.jsdIStackFrame)
- this.navigate(StackFrame.getCorrectedStackTrace(object, this.context));
- else if (object instanceof StackFrame.StackFrame)
- this.showStackFrame(object);
- },
-
- showStackFrame: function(frame)
- {
- var trace = StackFrame.buildStackTrace(frame);
- this.navigate(trace);
- },
-
- showStackTrace: function(trace)
- {
- Dom.clearNode(this.panelNode);
-
- Css.setClass(this.panelNode, "objectBox-stackTrace");
-
- // Update visibility of stack frame arguments.
- var name = "showStackFrameArguments";
- this.updateOption(name, Options.get(name));
-
- if (trace && trace.frames.length != 0)
- {
- var rep = Firebug.getRep(trace, this.context);
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("callstack showStackFrame with "+trace.frames.length+" frames using "
- +rep+" into "+this.panelNode, {trace: trace, rep:rep, node:this.panelNode});
-
- rep.tag.replace({object:trace}, this.panelNode);
-
- if (trace.currentFrameIndex)
- this.select(trace[trace.currentFrameIndex]);
-
- Events.dispatch(this.fbListeners, "onStackCreated", [this]);
- }
- else
- {
- FirebugReps.Warning.tag.replace({object: "callstack.Execution_not_stopped"}, this.panelNode);
- }
- },
-
- selectFrame: function(frameIndex)
- {
- var frameElts = this.panelNode.getElementsByClassName("objectBox-stackFrame");
- this.selectItem(frameElts[frameIndex - 1]);
- },
-
- selectItem: function(item)
- {
- if (this.selectedItem)
- this.selectedItem.removeAttribute("selected");
-
- this.selectedItem = item;
-
- if (item)
- item.setAttribute("selected", "true");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Menus
-
- getOptionsMenuItems: function()
- {
- var items = [];
-
- // an option handled by chrome.js
- items.push(Menu.optionMenu("OmitObjectPathStack",
- "omitObjectPathStack",
- "callstack.option.tip.Omit_Object_Path_Stack"));
-
- // Show/hide stack frame arguments.
- items.push(Menu.optionMenu("callstack.option.Show_Arguments",
- "showStackFrameArguments",
- "callstack.option.tip.Show_Arguments"));
-
- return items;
- },
-
- getContextMenuItems: function(nada, target)
- {
- var items = [
- {
- label: "callstack.Expand_All",
- tooltiptext: "callstack.tip.Expand_All",
- command: Obj.bindFixed(this.onExpandAll, this, target)
- },
- {
- label: "callstack.Collapse_All",
- tooltiptext: "callstack.tip.Collapse_All",
- command: Obj.bindFixed(this.onCollapseAll, this, target)
- }
- ];
- return items;
- },
-
- onExpandAll: function()
- {
- var elements = this.panelNode.querySelectorAll(".objectBox-stackFrame");
- for (var i=0; i<elements.length; i++)
- FirebugReps.StackFrame.expandArguments(elements[i]);
- },
-
- onCollapseAll: function()
- {
- var elements = this.panelNode.querySelectorAll(".objectBox-stackFrame");
- for (var i=0; i<elements.length; i++)
- FirebugReps.StackFrame.collapseArguments(elements[i]);
- },
-
- updateOption: function(name, value)
- {
- if (name == "showStackFrameArguments")
- {
- if (value)
- Css.removeClass(this.panelNode, "hideArguments");
- else
- Css.setClass(this.panelNode, "hideArguments");
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Referents xxxHonza, xxxJJB: what is this? Incomplete feature for finding all
- // references to a function
-
- showReferents: function()
- {
- // Find obj.functionName for the currently executing function
- // The general case is (expr_for_this).(expr_for_fn)().
- // expr navigates us using names from the scope chain
- delete this.parent;
-
- var frame = this.context.currentFrame;
- var fnName = StackFrame.getFunctionName(frame.script, this.context, frame, true);
-
- var referents = this.getReferents(frame, fnName);
- },
-});
-
-// ********************************************************************************************* //
-
-function Referent(containerName, container, propertyName, obj)
-{
- this._firebug = true;
- // Reverse order, deep is first
- this.values = [container];
- this.names = [propertyName, containerName];
- this.object = obj;
-}
-
-Referent.prototype =
-{
- getContainer: function()
- {
- return this.container;
- },
-
- /**
- * A string of identifiers separated by dots such that container[string] gives obj
- */
- getObjectPathExpression: function()
- {
- this.objectPathExpr = Arr.cloneArray(this.names).reverse().join('.');
- return this.objectPathExpr;
- },
-
- getObjectPathObjects: function()
- {
- this.objChain = Arr.cloneArray(this.values);
- this.objChain.push(this.object);
- this.objChain.reverse();
- return this.objChain;
- },
-
- prependPath: function(p, segmentObject)
- {
- this.names.push(p);
- this.values.push(segmentObject);
- },
-};
-
-// ********************************************************************************************* //
-
-function getReferents(frame, fnName)
-{
- if (FBTrace.DBG_STACK)
- FBTrace.sysout('showReferents '+frame, frame);
-
- // lookup the name of the function using frame.eval() -> function object
- // use 'this' as a lookup scope since function calls can be obj.fn or just fn
- var js = "with (this) {"+fnName +";}";
-
- var result = {};
- var ok = frame.eval(js, "", 1, result);
- if (ok)
- {
- if (result.value instanceof Ci.jsdIValue)
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("Firebug.Debugger.showReferents evaled "+js+" and got "+
- result.value, result);
-
- try
- {
- var fn = result.value.getWrappedValue();
- var thisObject = Wrapper.unwrapIValueObject(frame.thisValue, Firebug.viewChrome);
- var referents = findObjectPropertyPath("this", thisObject, fn, []);
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("Firebug.Debugger.showReferents found from thisObject "+
- referents.length, {thisObject: thisObject, fn: fn, referents: referents});
-
- var containingScope = Wrapper.unwrapIValueObject(result.value.jsParent,
- Firebug.viewwChrome);
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("Firebug.Debugger.showReferents containingScope from "+
- result.value.jsParent.jsClassName, containingScope);
-
- var scopeReferents = findObjectPropertyPath(result.value.jsParent.jsClassName,
- containingScope, fn, []);
- // Do we need to look in the entire scope chain? I think yes
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("Firebug.Debugger.showReferents found scope referents "+
- scopeReferents.length, {containingScope: containingScope, fn: fn,
- referents: scopeReferents});
-
- referents = referents.concat(scopeReferents);
- FBTrace.sysout("Firebug.Debugger.showReferents found total referents "+
- referents.length, {fn: fn, referents: referents});
-
- for (var i = 0; i < referents.length; i++)
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("Firebug.Debugger.showReferents found referent "+
- referents[i].getObjectPathExpression(), {fn: fn, referent: referents[i],
- path:referents[i].getObjectPathObjects() });
- }
- }
- catch(exc)
- {
- if (FBTrace.DBG_STACK || FBTrace.DBG_ERRORS)
- FBTrace.sysout("Firebug.Debugger.showReferents FAILED: "+exc, exc);
- }
- }
- else
- {
- if (FBTrace.DBG_STACK || FBTrace.DBG_ERRORS)
- FBTrace.sysout("Firebug.Debugger.showReferents evaled "+js+
- " but result.value not instanceof Ci.jsdIValue "+result.value, result);
- }
- return referents;
- }
- else
- {
- if (FBTrace.DBG_STACK || FBTrace.DBG_ERRORS)
- FBTrace.sysout("Firebug.Debugger.showReferents eval failed with "+ok+" result "+
- result.value, result);
- }
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(Firebug.CallstackPanel);
-
-return Firebug.CallstackPanel;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/reps",
+ "arch/javascripttool",
+ "firebug/lib/events",
+ "firebug/lib/wrapper",
+ "firebug/js/stackFrame",
+ "firebug/lib/css",
+ "firebug/lib/array",
+ "firebug/lib/dom",
+ "firebug/lib/options",
+ "firebug/chrome/menu"
+],
+function(Obj, Firebug, FirebugReps, JavaScriptTool, Events, Wrapper, StackFrame,
+ Css, Arr, Dom, Options, Menu) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+// Callstack Panel
+
+/**
+ * @Panel This panel is responsible for displaying a call-stack (list of function calls)
+ * at specified point of Javascript execution. It's used as a side panel for the Script
+ * panel.
+ */
+Firebug.CallstackPanel = function() {};
+Firebug.CallstackPanel.prototype = Obj.extend(Firebug.Panel,
+/** @lends Firebug.CallstackPanel */
+{
+ name: "callstack",
+ parentPanel: "script",
+ order: 1,
+ enableA11y: true,
+ deriveA11yFrom: "console",
+
+ initialize: function(context, doc)
+ {
+ Firebug.Panel.initialize.apply(this, arguments);
+
+ Firebug.connection.addListener(this);
+ },
+
+ destroy: function(state)
+ {
+ Firebug.connection.removeListener(this);
+
+ Firebug.Panel.destroy.apply(this, arguments);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onStartDebugging: function(context, frame)
+ {
+ // if we get a show() call then create and set new location
+ delete this.location;
+
+ // then we should reshow
+ if (this.visible)
+ this.show();
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("callstack; onStartDebugging "+this.visible, this);
+ },
+
+ onStopDebugging: function(context)
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("callstack; onStopDebugging");
+
+ // clear the view
+ this.showStackTrace(null);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ show: function(state)
+ {
+ if (!this.location)
+ {
+ this.location = StackFrame.buildStackTrace(JavaScriptTool.Turn.currentFrame);
+ this.updateLocation(this.location);
+ }
+ // then we are lazy
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("callstack.show state: "+state+" this.location: "+this.location,
+ {state: state, panel: this,
+ currentFrame: JavaScriptTool.Turn.currentFrame});
+
+ if (state)
+ {
+ if (state.callstackToggles)
+ {
+ var frameElts = this.panelNode.getElementsByClassName("objectBox-stackFrame");
+ for (var i = 0; i < frameElts.length; i++)
+ {
+ if (state.callstackToggles[i])
+ FirebugReps.StackFrame.expandArguments(frameElts[i]);
+ }
+ }
+
+ if (state.selectedCallStackFrameIndex)
+ {
+ this.selectFrame(state.selectedCallStackFrameIndex);
+ }
+ }
+ },
+
+ hide: function(state)
+ {
+ var frameElts = this.panelNode.getElementsByClassName("objectBox-stackFrame");
+ state.callstackToggles = [];
+ for (var i = 0; i < frameElts.length; i++)
+ {
+ var item = frameElts[i];
+ if (item.classList.contains("opened"))
+ state.callstackToggles[i] = true;
+
+ if (item.getAttribute("selected") == "true")
+ state.selectedCallStackFrameIndex = i + 1; // traces are 1 base
+ }
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("callstack.hide state: "+state, state);
+ },
+
+ supportsObject: function(object, type)
+ {
+ return (object instanceof StackFrame.StackTrace) ||
+ (object instanceof Ci.jsdIStackFrame) ||
+ (object instanceof StackFrame.StackFrame);
+ },
+
+ // this.selection is a StackFrame in our this.location
+ updateSelection: function(object)
+ {
+ if (!this.location) // then we are lazy
+ {
+ this.location = StackFrame.buildStackTrace(JavaScriptTool.Turn.currentFrame);
+ this.updateLocation(this.location);
+ }
+
+ // The selection object should be StackFrame
+ if (object instanceof StackFrame.StackFrame)
+ {
+ var trace = this.location;
+ var frameIndex = object.getFrameIndex();
+ if (frameIndex)
+ {
+ trace.currentFrameIndex = frameIndex;
+ this.selectFrame(frameIndex);
+ }
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("Callstack updateSelection index:"+trace.currentFrameIndex+
+ " StackFrame "+object, object);
+ }
+ else if (object instanceof Ci.jsdIStackFrame)
+ {
+ var trace = this.location;
+ if (trace)
+ {
+ trace.frames.forEach(function selectMatching(frame)
+ {
+ if (frame.nativeFrame === object)
+ this.select(frame);
+ }, this);
+ }
+ }
+ },
+
+ // this.location is a StackTrace
+ updateLocation: function(object)
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("callstack; updateLocation "+object, object);
+
+ // All paths lead to showStackTrace
+ if (object instanceof StackFrame.StackTrace)
+ this.showStackTrace(object);
+ else if (object instanceof Ci.jsdIStackFrame)
+ this.navigate(StackFrame.getCorrectedStackTrace(object, this.context));
+ else if (object instanceof StackFrame.StackFrame)
+ this.showStackFrame(object);
+ },
+
+ showStackFrame: function(frame)
+ {
+ var trace = StackFrame.buildStackTrace(frame);
+ this.navigate(trace);
+ },
+
+ showStackTrace: function(trace)
+ {
+ Dom.clearNode(this.panelNode);
+
+ Css.setClass(this.panelNode, "objectBox-stackTrace");
+
+ // Update visibility of stack frame arguments.
+ var name = "showStackFrameArguments";
+ this.updateOption(name, Options.get(name));
+
+ if (trace && trace.frames.length != 0)
+ {
+ var rep = Firebug.getRep(trace, this.context);
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("callstack showStackFrame with "+trace.frames.length+" frames using "
+ +rep+" into "+this.panelNode, {trace: trace, rep:rep, node:this.panelNode});
+
+ rep.tag.replace({object:trace}, this.panelNode);
+
+ if (trace.currentFrameIndex)
+ this.select(trace[trace.currentFrameIndex]);
+
+ Events.dispatch(this.fbListeners, "onStackCreated", [this]);
+ }
+ else
+ {
+ FirebugReps.Warning.tag.replace({object: "callstack.Execution_not_stopped"}, this.panelNode);
+ }
+ },
+
+ selectFrame: function(frameIndex)
+ {
+ var frameElts = this.panelNode.getElementsByClassName("objectBox-stackFrame");
+ this.selectItem(frameElts[frameIndex - 1]);
+ },
+
+ selectItem: function(item)
+ {
+ if (this.selectedItem)
+ this.selectedItem.removeAttribute("selected");
+
+ this.selectedItem = item;
+
+ if (item)
+ item.setAttribute("selected", "true");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Menus
+
+ getOptionsMenuItems: function()
+ {
+ var items = [];
+
+ // an option handled by chrome.js
+ items.push(Menu.optionMenu("OmitObjectPathStack",
+ "omitObjectPathStack",
+ "callstack.option.tip.Omit_Object_Path_Stack"));
+
+ // Show/hide stack frame arguments.
+ items.push(Menu.optionMenu("callstack.option.Show_Arguments",
+ "showStackFrameArguments",
+ "callstack.option.tip.Show_Arguments"));
+
+ return items;
+ },
+
+ getContextMenuItems: function(nada, target)
+ {
+ var items = [
+ {
+ label: "callstack.Expand_All",
+ tooltiptext: "callstack.tip.Expand_All",
+ command: Obj.bindFixed(this.onExpandAll, this, target)
+ },
+ {
+ label: "callstack.Collapse_All",
+ tooltiptext: "callstack.tip.Collapse_All",
+ command: Obj.bindFixed(this.onCollapseAll, this, target)
+ }
+ ];
+ return items;
+ },
+
+ onExpandAll: function()
+ {
+ var elements = this.panelNode.querySelectorAll(".objectBox-stackFrame");
+ for (var i=0; i<elements.length; i++)
+ FirebugReps.StackFrame.expandArguments(elements[i]);
+ },
+
+ onCollapseAll: function()
+ {
+ var elements = this.panelNode.querySelectorAll(".objectBox-stackFrame");
+ for (var i=0; i<elements.length; i++)
+ FirebugReps.StackFrame.collapseArguments(elements[i]);
+ },
+
+ updateOption: function(name, value)
+ {
+ if (name == "showStackFrameArguments")
+ {
+ if (value)
+ Css.removeClass(this.panelNode, "hideArguments");
+ else
+ Css.setClass(this.panelNode, "hideArguments");
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Referents xxxHonza, xxxJJB: what is this? Incomplete feature for finding all
+ // references to a function
+
+ showReferents: function()
+ {
+ // Find obj.functionName for the currently executing function
+ // The general case is (expr_for_this).(expr_for_fn)().
+ // expr navigates us using names from the scope chain
+ delete this.parent;
+
+ var frame = this.context.currentFrame;
+ var fnName = StackFrame.getFunctionName(frame.script, this.context, frame, true);
+
+ var referents = this.getReferents(frame, fnName);
+ },
+});
+
+// ********************************************************************************************* //
+
+function Referent(containerName, container, propertyName, obj)
+{
+ this._firebug = true;
+ // Reverse order, deep is first
+ this.values = [container];
+ this.names = [propertyName, containerName];
+ this.object = obj;
+}
+
+Referent.prototype =
+{
+ getContainer: function()
+ {
+ return this.container;
+ },
+
+ /**
+ * A string of identifiers separated by dots such that container[string] gives obj
+ */
+ getObjectPathExpression: function()
+ {
+ this.objectPathExpr = Arr.cloneArray(this.names).reverse().join('.');
+ return this.objectPathExpr;
+ },
+
+ getObjectPathObjects: function()
+ {
+ this.objChain = Arr.cloneArray(this.values);
+ this.objChain.push(this.object);
+ this.objChain.reverse();
+ return this.objChain;
+ },
+
+ prependPath: function(p, segmentObject)
+ {
+ this.names.push(p);
+ this.values.push(segmentObject);
+ },
+};
+
+// ********************************************************************************************* //
+
+function getReferents(frame, fnName)
+{
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout('showReferents '+frame, frame);
+
+ // lookup the name of the function using frame.eval() -> function object
+ // use 'this' as a lookup scope since function calls can be obj.fn or just fn
+ var js = "with (this) {"+fnName +";}";
+
+ var result = {};
+ var ok = frame.eval(js, "", 1, result);
+ if (ok)
+ {
+ if (result.value instanceof Ci.jsdIValue)
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("Firebug.Debugger.showReferents evaled "+js+" and got "+
+ result.value, result);
+
+ try
+ {
+ var fn = result.value.getWrappedValue();
+ var thisObject = Wrapper.unwrapIValueObject(frame.thisValue, Firebug.viewChrome);
+ var referents = findObjectPropertyPath("this", thisObject, fn, []);
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("Firebug.Debugger.showReferents found from thisObject "+
+ referents.length, {thisObject: thisObject, fn: fn, referents: referents});
+
+ var containingScope = Wrapper.unwrapIValueObject(result.value.jsParent,
+ Firebug.viewwChrome);
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("Firebug.Debugger.showReferents containingScope from "+
+ result.value.jsParent.jsClassName, containingScope);
+
+ var scopeReferents = findObjectPropertyPath(result.value.jsParent.jsClassName,
+ containingScope, fn, []);
+ // Do we need to look in the entire scope chain? I think yes
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("Firebug.Debugger.showReferents found scope referents "+
+ scopeReferents.length, {containingScope: containingScope, fn: fn,
+ referents: scopeReferents});
+
+ referents = referents.concat(scopeReferents);
+ FBTrace.sysout("Firebug.Debugger.showReferents found total referents "+
+ referents.length, {fn: fn, referents: referents});
+
+ for (var i = 0; i < referents.length; i++)
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("Firebug.Debugger.showReferents found referent "+
+ referents[i].getObjectPathExpression(), {fn: fn, referent: referents[i],
+ path:referents[i].getObjectPathObjects() });
+ }
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_STACK || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Firebug.Debugger.showReferents FAILED: "+exc, exc);
+ }
+ }
+ else
+ {
+ if (FBTrace.DBG_STACK || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Firebug.Debugger.showReferents evaled "+js+
+ " but result.value not instanceof Ci.jsdIValue "+result.value, result);
+ }
+ return referents;
+ }
+ else
+ {
+ if (FBTrace.DBG_STACK || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Firebug.Debugger.showReferents eval failed with "+ok+" result "+
+ result.value, result);
+ }
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(Firebug.CallstackPanel);
+
+return Firebug.CallstackPanel;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/js/debugger.js b/content/firebug/js/debugger.js
index b45828c..d7625db 100644
--- a/content/firebug/js/debugger.js
+++ b/content/firebug/js/debugger.js
@@ -1,2990 +1,2990 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/firefox",
- "arch/compilationunit",
- "firebug/lib/xpcom",
- "firebug/chrome/reps",
- "firebug/lib/locale",
- "firebug/lib/wrapper",
- "firebug/lib/url",
- "firebug/js/sourceLink",
- "firebug/js/stackFrame",
- "firebug/lib/css",
- "firebug/chrome/window",
- "firebug/lib/string",
- "firebug/lib/array",
- "firebug/trace/debug",
- "firebug/js/fbs",
- "firebug/lib/events",
- "firebug/console/errors",
-],
-function(Obj, Firebug, Firefox, CompilationUnit, Xpcom, FirebugReps, Locale,
- Wrapper, Url, SourceLink, StackFrame, Css, Win, Str, Arr, Debug, FBS, Events) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const jsdIScript = Ci.jsdIScript;
-const jsdIStackFrame = Ci.jsdIStackFrame;
-const jsdIExecutionHook = Ci.jsdIExecutionHook;
-const nsISupports = Ci.nsISupports;
-const nsICryptoHash = Ci.nsICryptoHash;
-const nsIURI = Ci.nsIURI;
-
-const PCMAP_SOURCETEXT = jsdIScript.PCMAP_SOURCETEXT;
-const PCMAP_PRETTYPRINT = jsdIScript.PCMAP_PRETTYPRINT;
-
-const RETURN_VALUE = jsdIExecutionHook.RETURN_RET_WITH_VAL;
-const RETURN_THROW_WITH_VAL = jsdIExecutionHook.RETURN_THROW_WITH_VAL;
-const RETURN_CONTINUE = jsdIExecutionHook.RETURN_CONTINUE;
-const RETURN_CONTINUE_THROW = jsdIExecutionHook.RETURN_CONTINUE_THROW;
-const RETURN_ABORT = jsdIExecutionHook.RETURN_ABORT;
-const RETURN_HOOK_ERROR = jsdIExecutionHook.RETURN_HOOK_ERROR;
-
-const TYPE_THROW = jsdIExecutionHook.TYPE_THROW;
-const TYPE_DEBUGGER_KEYWORD = jsdIExecutionHook.TYPE_DEBUGGER_KEYWORD;
-
-const STEP_OVER = 1;
-const STEP_INTO = 2;
-const STEP_OUT = 3;
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-const tooltipTimeout = 300;
-
-const reEval = /\s*eval\s*\(([^)]*)\)/m; // eval ( $1 )
-const reHTM = /\.[hH][tT][mM]/;
-const reFunction = /\s*Function\s*\(([^)]*)\)/m;
-const reTooMuchRecursion = /too\smuch\srecursion/;
-
-var jsd = Cc["@mozilla.org/js/jsd/debugger-service;1"].getService(Ci.jsdIDebuggerService);
-
-// ************************************************************************************************
-
-Firebug.Debugger = Obj.extend(Firebug.ActivableModule,
-{
- dispatchName: "debugger",
- fbs: FBS, // access to firebug-service in chromebug under browser.xul.Dom.Firebug.Debugger.fbs
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // Debugging
-
- // moz
- hasValidStack: function(context)
- {
- return context.stopped && context.currentFrame.isValid;
- },
-
- // on bti, method of stack
- evaluate: function(js, context, scope) // TODO remote: move to backend, proxy to front
- {
- var frame = context.currentFrame;
- if (!frame)
- return;
-
- frame.scope.refresh(); // XXX what's this do?
-
- var result = {};
- var scriptToEval = js;
-
- // This seem to be safe; eval'ing a getter property in content that tries to
- // be evil and get Components.classes results in a permission denied error.
- var ok = frame.eval(scriptToEval, "", 1, result);
-
- var value = Wrapper.unwrapIValue(result.value, Firebug.viewChrome);
- if (ok)
- return value;
- else
- throw value;
- },
-
- // on bti (not called in firebug source)
- evaluateInCallingFrame: function(js, fileName, lineNo)
- {
- return this.halt(function evalInFrame(frame)
- {
- FBTrace.sysout("evaluateInCallingFrame " + js + " fileName: " +
- frame.script.fileName + " stack: " + StackFrame.getJSDStackDump(frame));
-
- var result = {};
- var ok = frame.eval(js, fileName, lineNo, result);
- var value = Wrapper.unwrapIValue(result.value, Firebug.viewChrome);
-
- if (ok)
- return value;
- else
- throw value;
- });
- },
-
- _temporaryTransformSyntax: function(expr, win, context)
- {
- return Firebug.ClosureInspector.extendLanguageSyntax(expr, win, context);
- },
-
- /**
- * Used by autocomplete in commandLine
- * @return array of locally visible property names for each scope we are in
- */
- getCurrentFrameKeys: function(context) // TODO remote, on bti
- {
- // return is safe
- var globals = Arr.keys(Wrapper.getContentView(context.getCurrentGlobal()));
- if (context.currentFrame)
- return this.getFrameKeys(context.currentFrame, globals);
-
- return globals;
- },
-
- /**
- * private to Debugger, returns list of strings
- */
- getFrameKeys: function(frame, names) // moz
- {
- var scope = frame.scope;
- while (scope)
- {
- var listValue = {value: null}, lengthValue = {value: 0};
- scope.getProperties(listValue, lengthValue);
-
- for (var i=0; i<lengthValue.value; ++i)
- {
- var prop = listValue.value[i];
- var name = Wrapper.unwrapIValue(prop.name);
- names.push(name);
- }
-
- scope = scope.jsParent;
- }
-
- return names;
- },
-
- // @Deprecated see chrome.js
- focusWatch: function(context) // TODO moved
- {
- return Firebug.chrome.focusWatch(context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Private to Debugger
-
- // moz
- beginInternalOperation: function() // stop debugger operations like breakOnErrors
- {
- var state = {breakOnErrors: Firebug.breakOnErrors};
- Firebug.breakOnErrors = false;
- return state;
- },
-
- // moz
- endInternalOperation: function(state) // pass back the object given by beginInternalOperation
- {
- Firebug.breakOnErrors = state.breakOnErrors;
- return true;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- // moz
- halt: function(fnOfFrame)
- {
- if(FBTrace.DBG_BP)
- FBTrace.sysout('debugger.halt '+fnOfFrame);
-
- return FBS.halt(this, fnOfFrame);
- },
-
- // on bti
- getCurrentStackTrace: function(context)
- {
- var trace = null;
-
- Firebug.Debugger.halt(function(frame)
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("lib.getCurrentStackTrace frame:", frame);
-
- trace = StackFrame.getCorrectedStackTrace(frame, context);
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("lib.getCurrentStackTrace trace:", trace.toString().split('\n'));
- });
-
- return trace;
- },
-
- // Used by FBTest
- breakAsIfDebugger: function(frame)
- {
- // should return 'this' but also sets this.breakContext
- var debuggr = FBS.findDebugger(frame);
- FBS.breakIntoDebugger(debuggr, frame, 3);
- },
-
- // This URL prefix is used to skip frames from chrome URLs. Note that sometimes chrome URLs
- // are used even in web pages, but only in rare cases so don't worry about it.
- // Don't be specific like: chrome://firebug/ since frames coming from extensions e.g.
- // chrome://firecookie/ wouldn't be skipped then.
- breakNowURLPrefix: "chrome://",
-
- // on bti
- breakNow: function(context)
- {
- Firebug.Debugger.halt(function haltAnalysis(frame)
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.breakNow: frame "+frame.script.fileName+" context "+
- context.getName(), StackFrame.getJSDStackDump(frame) );
-
- for (; frame && frame.isValid; frame = frame.callingFrame)
- {
- var fileName = frame.script.fileName;
- if (!fileName)
- continue;
- else if (Str.hasPrefix(fileName, Firebug.Debugger.breakNowURLPrefix))
- continue;
- else if (fileName.indexOf("/modules/firebug-") != -1)
- continue;
- else
- break;
- }
-
- if (frame)
- {
- Firebug.Debugger.breakContext = context;
-
- // I just made up a type that won't match TYPE_DEBUGGER_KEYWORD
- Firebug.Debugger.onBreak(frame, "halt");
- }
- else
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.breakNow: no frame that not starting with "+
- Firebug.Debugger.breakNowURLPrefix);
- }
- });
- },
-
- // moz, called by back end
- stop: function(context, frame, type, rv)
- {
- if (context.stopped)
- return RETURN_CONTINUE;
-
- if (!this.isAlwaysEnabled())
- return RETURN_CONTINUE;
-
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.stop "+context.getName()+" frame",frame);
-
- // Do not break if the user is on another tab
- if (Firefox.getCurrentURI().spec !== context.window.location.toString())
- {
- if (FBTrace.DBG_UI_LOOP)
- {
- var current = Firefox.getCurrentURI().spec;
- var prev = context.window.location.toString();
- var locations = {current: current, context: prev};
-
- FBTrace.sysout("debugger.stop ERROR break is not in current window ", locations);
- }
- return RETURN_CONTINUE;
- }
-
- context.stoppedFrame = frame; // the frame we stopped in, don't change this elsewhere.
- context.currentFrame = frame; // the frame we show to user, depends on selection
- context.stopped = true;
- try
- {
- context.stoppedGlobal = Wrapper.wrapObject(
- Wrapper.unwrapIValue(frame.executionContext.globalObject));
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("debugger.stop failed to get global scope");
- }
-
- var hookReturn = Firebug.connection.dispatch("onStop", [context, frame, type, rv]);
- if ( hookReturn && hookReturn >= 0 )
- {
- delete context.stopped;
- delete context.stoppedFrame;
- delete context.stoppedGlobal;
- delete context.currentFrame;
-
- if (FBTrace.DBG_UI_LOOP)
- {
- FBTrace.sysout("debugger.stop extension vetoed stop with hookReturn " +
- hookReturn);
- }
-
- return hookReturn;
- }
-
- try
- {
- this.freeze(context);
-
- // If firebug hits a breakpoint in an event handler, which used setCapture
- // the entire browser window is unclickable (see issue 5064)
- context.window.document.releaseCapture();
-
- // We will pause here until resume is called
- var depth = FBS.enterNestedEventLoop({
- onNest: Obj.bindFixed(this.startDebugging, this, context)
- });
-
- // For some reason we don't always end up here
-
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.stop, nesting depth:"+depth+" jsd.pauseDepth: "+
- jsd.pauseDepth+" context:"+context.getName());
- }
- catch (exc)
- {
- // Just ignore exceptions that happened while in the nested loop
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("debugger exception in nested event loop: "+exc, exc);
- else
- Debug.ERROR("debugger exception in nested event loop: "+exc+"\n");
- }
- finally
- {
- this.thaw(context);
- }
-
- this.stopDebugging(context);
-
- Firebug.connection.dispatch("onResume",[context]);
-
- if (context.aborted)
- {
- delete context.aborted;
- return RETURN_ABORT;
- }
- else if (Firebug.rerun)
- {
- setTimeout(function reExecute()
- {
- var rerun = context.savedRerun = Firebug.rerun;
- delete Firebug.rerun;
-
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("Firebug.debugger.reExecute ", {rerun: rerun});
-
- // fire the prestored script
- function successConsoleFunction(result, context)
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("Firebug.debugger.reExecute success", result);
- Firebug.connection.dispatch( "onRerunComplete", [true, result]);
- }
-
- function exceptionFunction(result, context)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("Firebug.debugger.reExecute FAILED "+result, result);
- Firebug.connection.dispatch( "onRerunComplete", [false, result]);
- }
-
- Firebug.CommandLine.evaluate("window._firebug.rerunFunction()", context, null,
- context.window, successConsoleFunction, exceptionFunction);
- });
-
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("Firebug.debugger.reExecute return "+RETURN_HOOK_ERROR);
-
- return RETURN_HOOK_ERROR;
- }
- else
- {
- return RETURN_CONTINUE;
- }
- },
-
- // on bti
- rerun: function(context)
- {
- if(!context.stopped)
- {
- FBTrace.sysout("debugger.rerun FAILS: not stopped");
- return;
- }
-
- if (Firebug.rerun)
- {
- FBTrace.sysout("debugger.rerun FAILS: Firebug.rerun in progress");
- return;
- }
-
- Firebug.rerun = this.getRerun(context);
-
- // now continue but abort the current call stack.
- this.resume(context); // the Firebug.rerun will signal abort stack
- },
-
- // moz
- getRerun: function(context)
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.rerun for "+context.getName());
- try
- {
- // walk back to the oldest frame, but not top level
- var frame = context.stoppedFrame;
- while (frame.callingFrame && frame.callingFrame.script.functionName)
- {
- frame = frame.callingFrame;
-
- if (frame.script.functionName == "_firebugRerun") // re-reRun
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("getRerun re-rerun ", context.savedRerun);
- return context.savedRerun;
- }
- }
-
- // In this oldest frame we have element.onclick(event) or window.foo()
- // We want to cause the page to run this again after we abort this call stack.
- function getStoreRerunInfoScript(fnName)
- {
- var str = "if (!window._firebug)window._firebug={};\n";
- str += "window._firebug.rerunThis = this;\n";
- str += "window._firebug.rerunArgs = [];\n";
- str += "if (arguments && arguments.length) for (var i = 0; i < arguments.length; i++) window._firebug.rerunArgs.push(arguments[i]);\n";
- str += "window._firebug.rerunFunctionName = "+fnName+";\n";
- str +="window._firebug.rerunFunction = function _firebugRerun() { "+fnName+".apply(window._firebug.rerunThis, window._firebug.rerunArgs); }";
- return str;
- }
-
- var rerun = {};
-
- var fnName = StackFrame.getFunctionName(frame.script, context, frame, true);
- rerun.script = getStoreRerunInfoScript(fnName);
- var jsdFunctionName = frame.script.functionName;
-
- // now run the script that stores the rerun info in the page
- var result = {};
- var ok = frame.eval(rerun.script, context.window.location + "/RerunScript", 1, result);
-
- // If the eval goes off somewhere wacky, the frame may be invalid by this point.
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.rerun "+ok+" and result: "+result+" for "+context.getName(),
- {result: result, rerun: rerun, functionName: jsdFunctionName});
- }
- catch(exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("debugger.rerun FAILS for "+context.getName()+" because "+exc,
- {exc:exc, rerun: rerun});
- }
-
- return rerun;
- },
-
- // bti
- resume: function(context)
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.resume, context.stopped:"+context.stopped+"\n");
-
- // this will cause us to return to just after the enterNestedEventLoop call
- var depth = FBS.exitNestedEventLoop();
-
-
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.resume, depth:"+depth+"\n");
- },
-
- // bti
- abort: function(context)
- {
- if (context.stopped)
- {
- context.aborted = true;
- this.thaw(context);
- this.resume(context);
- FBS.unPause(true);
- }
- },
-
- // bti
- stepOver: function(context)
- {
- if (!context.stoppedFrame || !context.stoppedFrame.isValid)
- return;
-
- FBS.step(STEP_OVER, context, this);
- this.resume(context);
- },
-
- stepInto: function(context)
- {
- if (!context.stoppedFrame || !context.stoppedFrame.isValid)
- return;
-
- FBS.step(STEP_INTO, context, this);
- this.resume(context);
- },
-
- stepOut: function(context)
- {
- if (!context.stoppedFrame || !context.stoppedFrame.isValid)
- return;
-
- FBS.step(STEP_OUT, context, this);
- this.resume(context);
- },
-
- suspend: function(context)
- {
- if (context.stopped)
- return;
-
- FBS.suspend(this, context);
- },
-
- unSuspend: function(context)
- {
- FBS.stopStepping(null, context); // TODO per context
- FBS.cancelBreakOnNextCall(this, context);
- },
-
- runUntil: function(context, compilationUnit, lineNo)
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("runUntil "+lineNo+" @"+compilationUnit);
-
- if (!context.stoppedFrame || !context.stoppedFrame.isValid)
- return;
-
- var sourceFile = compilationUnit.sourceFile;
- FBS.runUntil(compilationUnit.sourceFile, lineNo, context.stoppedFrame, this);
- this.resume(context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // moz
-
- freeze: function(context)
- {
- var executionContext = context.stoppedFrame.executionContext;
- try {
- executionContext.scriptsEnabled = false;
- this.suppressEventHandling(context);
- context.isFrozen = true;
-
- // https://developer.mozilla.org/en/XUL_Tutorial/Focus_and_Selection#Getting_the_currently_focused_element
- if (context.window && context.window.document.commandDispatcher)
- {
- context.saveFocus = context.window.document.commandDispatcher.focusedElement;
- if (context.saveFocus && !context.discardBlurEvents)
- {
- context.discardBlurEvents = function blurDiscarder(event)
- {
- if (!context.saveFocus)
- {
- Events.removeEventListener(context.window, "blur",
- context.discardBlurEvents, true);
- delete context.discardBlurEvents;
- }
-
- if (FBTrace.DBG_UI_LOOP)
- {
- FBTrace.sysout("debugger.freeze discard blur event " +
- context.saveFocus + " while focus is " +
- context.window.document.commandDispatcher.focusedElement,
- event);
- }
-
- event.preventDefault();
- event.stopPropagation();
- },
-
- Events.addEventListener(context.window, "blur",
- context.discardBlurEvents, true);
- }
- }
-
- if (FBTrace.DBG_UI_LOOP)
- {
- FBTrace.sysout("debugger.freeze context.saveFocus "+context.saveFocus,
- context.saveFocus);
-
- FBTrace.sysout("debugger.freeze try to disable scripts "+
- (context.eventSuppressor?"and events":"but not events")+" in "+
- context.getName()+" executionContext.tag "+executionContext.tag+
- ".scriptsEnabled: "+executionContext.scriptsEnabled);
- }
- }
- catch (exc)
- {
- // This attribute is only valid for contexts which implement nsIScriptContext.
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.freeze, freeze exception " + exc + " in " +
- context.getName(), exc);
- }
- },
-
- suppressEventHandling: function(context)
- {
- if (context.window instanceof Ci.nsIInterfaceRequestor)
- {
- context.eventSuppressor = context.window.getInterface(Ci.nsIDOMWindowUtils);
- if (context.eventSuppressor)
- context.eventSuppressor.suppressEventHandling(true);
- }
- },
-
- thaw: function(context)
- {
- try {
- if (context.isFrozen)
- delete context.isFrozen;
- else
- return; // bail, we did not freeze this context
-
- var executionContext = context.stoppedFrame.executionContext;
- if (executionContext.isValid)
- {
- this.unsuppressEventHandling(context);
-
- // Before we release JS, put the focus back
- if (context.saveFocus)
- {
- context.window.focus();
- context.saveFocus.focus();
- delete context.saveFocus;
-
- if (FBTrace.DBG_UI_LOOP)
- {
- var nowFocused = context.window.document.commandDispatcher ?
- context.window.document.commandDispatcher.focusedElement : null;
- FBTrace.sysout("debugger.thaw context.saveFocus "+context.saveFocus+
- " vs "+nowFocused, context.saveFocus);
- }
- }
-
- executionContext.scriptsEnabled = true;
- }
- else
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.thaw "+executionContext.tag+
- " executionContext is not valid");
- }
-
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.thaw try to enable scripts " +
- (context.eventSuppressor?"with events suppressed":"events enabled")+
- " in "+context.getName()+" executionContext.tag "+executionContext.tag+
- ".scriptsEnabled: "+executionContext.scriptsEnabled);
- }
- catch (exc)
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.stop, scriptsEnabled = true exception:", exc);
- }
- },
-
- unsuppressEventHandling: function(context)
- {
- if (context.eventSuppressor)
- {
- context.eventSuppressor.suppressEventHandling(false);
- delete context.eventSuppressor;
- }
- },
-
- // on bti
- toggleFreezeWindow: function(context)
- {
- // then we need to break into debugger to get the executionContext
- if (!context.stopped)
- {
- Firebug.Debugger.halt(function grabContext(frame)
- {
- context.stoppedFrame = frame;
- Firebug.Debugger.doToggleFreezeWindow(context);
- delete context.stoppedFrame;
- });
-
- Firebug.Debugger.suspend(context);
- }
- else
- {
- Firebug.Debugger.doToggleFreezeWindow(context);
- }
- },
-
- // moz
- doToggleFreezeWindow: function(context)
- {
- if (context.isFrozen)
- Firebug.Debugger.unsuppressEventHandling(context);
- else
- Firebug.Debugger.suppressEventHandling(context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Breakpoints
-
- setBreakpoint: function(sourceFile, lineNo) // TODO: arg should be url
- {
- if (sourceFile instanceof CompilationUnit)
- sourceFile = sourceFile.sourceFile; // see HACK in tabContext
- FBS.setBreakpoint(sourceFile, lineNo, null, Firebug.Debugger);
- },
-
- clearBreakpoint: function(sourceFile, lineNo)
- {
- if (sourceFile instanceof CompilationUnit)
- sourceFile = sourceFile.sourceFile; // see HACK in tabContext
- FBS.clearBreakpoint(sourceFile.href, lineNo);
- },
-
- setErrorBreakpoint: function(compilationUnit, line)
- {
- FBS.setErrorBreakpoint(compilationUnit.sourceFile, line, Firebug.Debugger);
- },
-
- clearErrorBreakpoint: function(compilationUnit, line)
- {
- FBS.clearErrorBreakpoint(compilationUnit.getURL(), line, Firebug.Debugger);
- },
-
- // Called by bti browser.clearAllBreakpoints
- clearAllBreakpoints: function(context)
- {
- if (context)
- {
- var units = context.getAllCompilationUnits();
- FBS.clearAllBreakpoints(units, Firebug.Debugger);
- FBS.clearErrorBreakpoints(units, Firebug.Debugger);
- }
- else
- {
- // null means all urls
- FBS.enumerateBreakpoints(null, {call: function(url, lineNo, bp)
- {
- // skip breakpoints of other debuggers.
- if (bp.debuggerName !== Firebug.Debugger.debuggerName)
- return;
-
- FBS.clearBreakpoint(url, lineNo);
- }});
-
- // and also error breakpoints
- FBS.enumerateErrorBreakpoints(null, {call: function(url, lineNo)
- {
- FBS.clearErrorBreakpoint(url, lineNo, Firebug.Debugger);
- }});
- }
- },
-
- enableAllBreakpoints: function(context)
- {
- if (FBTrace.DBG_BP)
- FBTrace.sysout("enableAllBreakpoints sourceFileMap:", context.sourceFileMap);
-
- for (var url in context.sourceFileMap)
- {
- FBS.enumerateBreakpoints(url, {call: function(url, lineNo)
- {
- FBS.enableBreakpoint(url, lineNo);
- }});
- }
- },
-
- disableAllBreakpoints: function(context)
- {
- for (var url in context.sourceFileMap)
- {
- FBS.enumerateBreakpoints(url, {call: function(url, lineNo)
- {
- FBS.disableBreakpoint(url, lineNo);
- }});
- }
- },
-
- getBreakpointCount: function(context)
- {
- var count = 0;
- for (var url in context.sourceFileMap)
- {
- FBS.enumerateBreakpoints(url,
- {
- call: function(url, lineNo)
- {
- ++count;
- }
- });
-
- FBS.enumerateErrorBreakpoints(url,
- {
- call: function(url, lineNo)
- {
- ++count;
- }
- });
- }
- return count;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Debugging and monitoring
-
- traceAll: function(context)
- {
- FBS.traceAll(Firebug.SourceFile.sourceURLsAsArray(context), this);
- },
-
- untraceAll: function(context)
- {
- FBS.untraceAll(this);
- },
-
- monitorFunction: function(fn, mode)
- {
- if (typeof(fn) == "function" || fn instanceof Function)
- {
- var script = Firebug.SourceFile.findScriptForFunctionInContext(
- Firebug.currentContext, fn);
-
- if (script)
- {
- this.monitorScript(fn, script, mode);
- }
- else
- {
- Firebug.Console.logFormatted(
- ["Firebug unable to locate jsdIScript for function", fn],
- Firebug.currentContext, "info");
- }
- }
- else
- {
- Firebug.Console.logFormatted(
- ["Firebug.Debugger.monitorFunction requires a function", fn],
- Firebug.currentContext, "info");
- }
- },
-
- unmonitorFunction: function(fn, mode)
- {
- if (typeof(fn) == "function" || fn instanceof Function)
- {
- var script = Firebug.SourceFile.findScriptForFunctionInContext(
- Firebug.currentContext, fn);
-
- if (script)
- this.unmonitorScript(fn, script, mode);
- }
- },
-
- monitorScript: function(fn, script, mode)
- {
- var scriptInfo = Firebug.SourceFile.getSourceFileAndLineByScript(
- Firebug.currentContext, script);
-
- if (scriptInfo)
- {
- if (mode == "debug")
- Firebug.Debugger.setBreakpoint(scriptInfo.sourceFile, scriptInfo.lineNo);
- else if (mode == "monitor")
- FBS.monitor(scriptInfo.sourceFile, scriptInfo.lineNo, Firebug.Debugger);
- }
- },
-
- unmonitorScript: function(fn, script, mode)
- {
- var scriptInfo = Firebug.SourceFile.getSourceFileAndLineByScript(
- Firebug.currentContext, script);
-
- if (scriptInfo)
- {
- if (mode == "debug")
- this.clearBreakpoint(scriptInfo.sourceFile, scriptInfo.lineNo);
- else if (mode == "monitor")
- FBS.unmonitor(scriptInfo.sourceFile.href, scriptInfo.lineNo);
- }
- },
-
- traceCalls: function(context, fn)
- {
- if (typeof(fn) == "function" || fn instanceof Function)
- {
- var script = Firebug.SourceFile.findScriptForFunctionInContext(context, fn);
- if (script)
- this.traceScriptCalls(context, script);
- else
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("debugger.traceCalls no script found for "+fn, fn);
- }
- }
- },
-
- untraceCalls: function(context, fn)
- {
- if (typeof(fn) == "function" || fn instanceof Function)
- {
- var script = Firebug.SourceFile.findScriptForFunctionInContext(context, fn);
- if (script)
- this.untraceScriptCalls(context, script);
- }
- },
-
- traceScriptCalls: function(context, script)
- {
- var scriptInfo = Firebug.SourceFile.getSourceFileAndLineByScript(context, script);
- if (scriptInfo)
- FBS.traceCalls(scriptInfo.sourceFile, scriptInfo.lineNo, Firebug.Debugger);
- },
-
- untraceScriptCalls: function(context, script)
- {
- var scriptInfo = Firebug.SourceFile.getSourceFileAndLineByScript(context, script);
- if (scriptInfo)
- FBS.untraceCalls(scriptInfo.sourceFile, scriptInfo.lineNo, Firebug.Debugger);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // UI Stuff
-
- /*
- * Called when a nestedEventLoop begins
- */
- startDebugging: function(context)
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("Firebug.Debugger startDebugging enter context.stopped:" +
- context.stopped + " for context: " + context.getName());
-
- try
- {
- FBS.lockDebugger();
-
- context.executingSourceFile =
- Firebug.SourceFile.getSourceFileByScript(context, context.stoppedFrame.script);
-
- // bail out, we don't want the user stuck in debug with out source.
- if (!context.executingSourceFile)
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("startDebugging resuming, no sourceFile for "+
- context.stoppedFrame.script.fileName,
- context.stoppedFrame.script.functionSource);
-
- this.resume(context);
- return;
- }
-
- // Make Firebug.currentContext = context and sync the UI
- if (context != Firebug.currentContext)
- Firebug.selectContext(context);
-
- }
- catch(exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("Resuming debugger: error during debugging loop: "+exc, exc);
-
- Firebug.Console.log("Resuming debugger: error during debugging loop: "+exc);
-
- this.resume(context);
- }
-
- var frame = StackFrame.getStackFrame(context.stoppedFrame, context);
- Firebug.connection.dispatch( "onStartDebugging", [context, frame]);
-
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("startDebugging exit context.stopped:" + context.stopped +
- " for context: " + context.getName());
- },
-
- /**
- * Called in the main event loop, from jsd, after we have exited the nested event loop
- */
- stopDebugging: function(context)
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("stopDebugging enter context: " + context.getName());
-
- try
- {
- FBS.unlockDebugger();
-
- // If the user reloads the page while the debugger is stopped, then
- // the current context will be destroyed just before
- if (context && !context.aborted)
- {
- delete context.stopped;
- delete context.stoppedFrame;
- delete context.stoppedGlobal;
- delete context.currentFrame;
- context.executingSourceFile = null;
- delete context.breakLineNumber;
-
- Firebug.connection.dispatch( "onStopDebugging", [context]);
-
- }
- else
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.stopDebugging else "+context.getName()+" "+
- Win.safeGetWindowLocation(context.window));
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.stopDebugging FAILS", exc);
-
- // If the window is closed while the debugger is stopped,
- // then all hell will break loose here
- Debug.ERROR(exc);
- }
- },
-
- suspendFirebug: function()
- {
- Firebug.suspendFirebug();
- },
-
- resumeFirebug: function()
- {
- Firebug.resumeFirebug();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- supportsWindow: function(win)
- {
- if (!this.isAlwaysEnabled())
- return false;
-
- var context = ((win && Firebug.TabWatcher) ?
- Firebug.TabWatcher.getContextByWindow(win) : null);
-
- this.breakContext = context;
- return !!context;
- },
-
- // This is called from fbs for almost all fbs operations
- supportsGlobal: function(frameWin)
- {
- var context = ( (frameWin && Firebug.TabWatcher) ?
- Firebug.TabWatcher.getContextByWindow(frameWin) : null);
-
- if (!context)
- return false;
-
- // otherwise we cannot be called.
- context.jsDebuggerCalledUs = true;
-
- this.breakContext = context;
- //FBTrace.sysout("debugger.js this.breakContext "+this.breakContext.getName());
- return true;
- },
-
- onLock: function(state)
- {
- // XXXjoe For now, trying to see if it's ok to have multiple contexts
- // debugging simultaneously - otherwise we need this
- //if (this.context != this.debugContext)
- {
- // XXXjoe Disable step/continue buttons
- }
- },
-
- onBreak: function(frame, type)
- {
- try
- {
- var context = this.breakContext;
-
- // If the script panel is disabled, Firebug can't break (issue 4290).
- if (!Firebug.PanelActivation.isPanelEnabled("script"))
- return RETURN_CONTINUE;
-
- if (FBTrace.DBG_BP || (!context && FBTrace.DBG_FBS_ERRORS))
- FBTrace.sysout("debugger.onBreak breakContext: " +
- (context ? context.getName() : " none!"), StackFrame.getJSDStackDump(frame));
-
- delete this.breakContext;
-
- if (!context)
- return RETURN_CONTINUE;
-
- if (type == TYPE_DEBUGGER_KEYWORD)
- {
- var trace = Wrapper.getContentView(context.window)._firebugStackTrace;
- if (trace == "console-tracer")
- return this.debuggerTracer(context, frame);
- else
- this.setDebuggerKeywordCause(context, frame);
- if (!context.breakingCause)
- return RETURN_CONTINUE;
- }
-
- return this.stop(context, frame, type);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS && FBTrace.DBG_BP)
- FBTrace.sysout("debugger.onBreak FAILS", exc);
- throw exc;
- }
- },
-
- debuggerTracer: function(context, frame)
- {
- var trace = StackFrame.getCorrectedStackTrace(frame, context);
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("debugger.firebugDebuggerTracer corrected trace.frames "+
- trace.frames.length, trace.frames);
-
- if (trace)
- {
- // drop the firebugDebuggerTracer and reorder
- //trace.frames = trace.frames.slice(1);
-
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("debugger.firebugDebuggerTracer dropped tracer trace.frames "+
- trace.frames.length, trace.frames);
-
- // drop one frame see attachConsoleInjector
- //trace.frames = trace.frames.slice(1);
- Firebug.Console.log(trace, context, "stackTrace");
- }
-
- if (FBTrace.DBG_BP)
- FBTrace.sysout("debugger.onBreak "+(trace?"debugger trace":" debugger no trace!"));
-
- return RETURN_CONTINUE;
- },
-
- /**
- * for |debugger;| keyword offer the skip/continue dialog (optionally?)
- */
- setDebuggerKeywordCause: function(context, frame)
- {
- var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, frame.script);
- if (!sourceFile)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("debugger.setDebuggerKeywordCause FAILS, no sourceFile for "+
- frame.script.tag+"@"+frame.script.fileName+" in "+context.getName());
- return;
- }
-
- var analyzer = sourceFile.getScriptAnalyzer(frame.script);
- var lineNo = analyzer.getSourceLineFromFrame(context, frame);
-
- context.breakingCause =
- {
- title: Locale.$STR("debugger keyword"),
- skipActionTooltip: Locale.$STR("firebug.bon.tooltip.disableDebuggerKeyword2"),
- message: Locale.$STR("firebug.bon.cause.disableDebuggerKeyword2"),
- skipAction: function addSkipperAndGo()
- {
- // a breakpoint that never hits, but prevents debugger keyword
- // (see FBS.onDebugger as well)
- var bp = Firebug.Debugger.setBreakpoint(sourceFile, lineNo);
- FBS.disableBreakpoint(sourceFile.href, lineNo);
-
- if (FBTrace.DBG_BP)
- FBTrace.sysout("debugger.onBreak converted to disabled bp "+sourceFile.href+
- "@"+lineNo+" tag: "+frame.script.tag, bp);
-
- Firebug.Debugger.resume(context);
- },
- };
- },
-
- onThrow: function(frame, rv)
- {
- // onThrow is called for throw, for catches that do not succeed,
- // and for functions that exceptions pass through.
- var context = this.breakContext;
- delete this.breakContext;
-
- if (!context)
- {
- if (FBTrace.DBG_BP)
- FBTrace.sysout("debugger.onThrow, no context, try to get from frame\n");
- context = this.getContextByFrame(frame);
- }
-
- if (FBTrace.DBG_ERRORLOG)
- {
- var lines = [];
- var frames = StackFrame.getCorrectedStackTrace(frame, context).frames;
- for (var i=0; i<frames.length; i++)
- lines.push(frames[i].line + ", " + frames[i].fn);
-
- FBTrace.sysout("debugger.onThrow context:" + (context ? context.getName() :
- "undefined") + ", " + lines.join("; "), frames);
- }
-
- if (!context)
- return RETURN_CONTINUE_THROW;
-
- if (!FBS.showStackTrace)
- return RETURN_CONTINUE_THROW;
-
- try
- {
- var realThrow = this.isRealThrow(frame, context);
- if (realThrow)
- {
- context.thrownStackTrace = StackFrame.getCorrectedStackTrace(frame, context);
-
- if (FBTrace.DBG_BP)
- FBTrace.sysout("debugger.onThrow reset context.thrownStackTrace",
- context.thrownStackTrace.frames);
-
- // xxxHonza: this could fix Issue 3276: Track Throw/Catch is not working
- /*if (FBS.trackThrowCatch)
- {
- var object = {
- errorMessage: errorObject.value.stringValue,
- message: errorObject.value.stringValue,
- sourceName: "",
- lineNumber: -1,
- sourceLine: "",
- category: "javascript",
- flags: 2,
- exceptionFlag: 2,
- };
-
- Firebug.Errors.logScriptError(context, object, false);
-
- context.thrownStackTrace = StackFrame.getCorrectedStackTrace(frame, context);
- }*/
- }
- else
- {
- if (FBTrace.DBG_BP)
- FBTrace.sysout("debugger.onThrow not a real throw");
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("onThrow FAILS: " + exc, exc);
- }
-
- if (Firebug.connection.dispatch("onThrow",[context, frame, rv]))
- return this.stop(context, frame, TYPE_THROW, rv);
-
- return RETURN_CONTINUE_THROW;
- },
-
- isRealThrow: function(mozFrame, context)
- {
- // Determine whether the throw was a real one, or just a rethrow of the
- // last exception (probably automatically inserted - which it seems
- // happens for every function an exception passes through - but it
- // could also be manual because there is no simple way to tell them
- // apart). A rethrow is detected when the current stack exists at the
- // end of the previous exception's, except that the current top-most
- // stack frame only has to be in the same function to match.
- if (!context.thrownStackTrace)
- return true;
-
- var trace = context.thrownStackTrace.frames;
- var findMozFrame = mozFrame.callingFrame, againstFrame = null;
- if (findMozFrame)
- {
- // Verify that the previous exception includes this frame's call
- // site somewhere.
- var findFrameSig = findMozFrame.script.tag + "." + findMozFrame.pc;
- for (var i=1; i<trace.length; i++)
- {
- var preFrameSig = trace[i].signature();
-
- if (FBTrace.DBG_ERRORS && FBTrace.DBG_STACK)
- {
- FBTrace.sysout("debugger.isRealThrow " + findFrameSig + "==" +
- preFrameSig);
- }
-
- if (findFrameSig === preFrameSig)
- {
- againstFrame = trace[i-1];
- break;
- }
- }
-
- if (!againstFrame)
- return true;
- }
- else
- {
- againstFrame = trace[trace.length-1];
- }
-
- // Verify that the current frame's function location matches what the
- // exception has above the matched frame.
- if (mozFrame.script !== againstFrame.script)
- return true;
-
- return false;
- },
-
- onMonitorScript: function(frame)
- {
- var context = this.breakContext;
- delete this.breakContext;
-
- if (!context)
- context = this.getContextByFrame(frame);
- if (!context)
- return RETURN_CONTINUE;
-
- frame = StackFrame.getStackFrame(frame, context);
-
- Firebug.connection.dispatch("onMonitorScript",[context, frame]);
- },
-
- onFunctionCall: function(context, frame, depth, calling)
- {
- if (!context)
- context = this.getContextByFrame(frame);
-
- if (!context)
- return RETURN_CONTINUE;
-
- frame = StackFrame.getStackFrame(frame, context);
-
- Firebug.connection.dispatch("onFunctionCall",[context, frame, depth, calling]);
-
- return context; // returned as first arg on next call from same trace
- },
-
- onError: function(frame, error, hitErrorBreakpoint)
- {
- var context = this.breakContext;
- delete this.breakContext;
-
- // If the script panel is disabled, Firebug can't break on error.
- if (!Firebug.PanelActivation.isPanelEnabled("script"))
- return 0;
-
- try
- {
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("debugger.onError: "+error.errorMessage+" in "+
- (context?context.getName():"no context"), error);
-
- if (reTooMuchRecursion.test(error.errorMessage))
- frame = FBS.discardRecursionFrames(frame);
-
- Firebug.errorStackTrace = StackFrame.getCorrectedStackTrace(frame, context);
-
- if (FBTrace.DBG_ERRORLOG)
- FBTrace.sysout("debugger.onError; break=" + Firebug.breakOnErrors +
- ", errorStackTrace:", Firebug.errorStackTrace);
-
- delete context.breakingCause;
-
- if (Firebug.breakOnErrors || hitErrorBreakpoint)
- {
- var eventOrigin = Wrapper.unwrapIValue(frame.executionContext.globalObject);
- if (!eventOrigin)
- return 0;
-
- // Check if the eventOrigin (window) comes from this context.
- var eventOriginIndex = -1;
- for (var i=0; i<context.windows.length; i++)
- {
- if (Wrapper.getContentView(context.windows[i]) == eventOrigin) {
- eventOriginIndex = i;
- break;
- }
- }
-
- // Bail out if the event that lead the error is not cause by code in this context.
- if (eventOriginIndex < 0)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("debugger.onError; error is not from this context: (" +
- eventOriginIndex + ") " + frame.script.tag+"@"+frame.script.fileName);
- return 0;
- }
-
- var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, frame.script);
- if (!sourceFile)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("debugger.breakon Errors no sourceFile for "+
- frame.script.tag+"@"+frame.script.fileName);
- return;
- }
-
- var analyzer = sourceFile.getScriptAnalyzer(frame.script);
- var lineNo = analyzer.getSourceLineFromFrame(context, frame);
-
- var doBreak = true;
- FBS.enumerateBreakpoints(sourceFile.href, {call: function(url, line, props, scripts)
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("debugger.breakon Errors bp "+url+"@"+line+" scripts "+
- (scripts?scripts.length:"none"));
-
- if (line === lineNo)
- doBreak = false;
- }});
-
- if (FBTrace.DBG_BP)
- FBTrace.sysout("debugger.breakon Errors " + doBreak + " for " +
- sourceFile.href + "@" + lineNo);
-
- if (doBreak)
- {
- context.breakingCause =
- {
- title: Locale.$STR("Break on Error"),
- message: error.message,
- copyAction: Obj.bindFixed(FirebugReps.ErrorMessage.copyError,
- FirebugReps.ErrorMessage, error),
-
- skipAction: function addSkipperAndGo()
- {
- // a breakpoint that never hits, but prevents BON for errors
- var bp = Firebug.Debugger.setBreakpoint(sourceFile, lineNo);
- FBS.disableBreakpoint(sourceFile.href, lineNo);
-
- if (FBTrace.DBG_BP)
- FBTrace.sysout("debugger.breakon Errors set "+sourceFile.href+"@"+
- lineNo+" tag: "+frame.script.tag, bp);
-
- Firebug.Debugger.resume(context);
- },
- };
- }
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("debugger.onError getCorrectedStackTrace FAILED: "+exc, exc);
- }
-
- var hookReturn = Firebug.connection.dispatch("onError",[context, frame, error]);
-
- if (!context.breakingCause)
- return 0;
-
- if (Firebug.breakOnErrors)
- {
- // Switch of Break on Next tab lightning.
- //var panel = context.getPanel("console", true);
- //Firebug.Breakpoint.updatePanelTab(panel, false);
-
- return -1; // break
- }
-
- if (hookReturn)
- return hookReturn;
-
- return -2; /* let firebug service decide to break or not */
- },
-
- onUncaughtException: function(errorInfo)
- {
- var context = this.breakContext;
- delete this.breakContext;
-
- Firebug.Errors.logScriptError(context, errorInfo, false);
- return -2;
- },
-
- onXULScriptCreated: function(frame, outerScript, innerScriptEnumerator)
- {
- try
- {
- var context = this.breakContext;
- delete this.breakContext;
-
- var sourceFile = context.sourceFileMap[outerScript.fileName];
- if (sourceFile)
- {
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("debugger.onXULScriptCreated reuse sourcefile="+
- sourceFile.toString()+" -> "+context.getName()+" ("+context.uid+")");
-
- Firebug.SourceFile.addScriptsToSourceFile(sourceFile, null, innerScriptEnumerator);
- }
- else
- {
- sourceFile = new Firebug.XULSourceFile(outerScript.fileName, outerScript,
- innerScriptEnumerator);
- }
-
- this.watchSourceFile(context, sourceFile);
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("debugger.onXULScriptCreated script.fileName="+outerScript.fileName+
- " in "+context.getName()+" "+sourceFile);
-
- Firebug.connection.dispatch("onXULScriptCreated",[context, frame, sourceFile.href]);
- return sourceFile;
- }
- catch (e)
- {
- if (FBTrace.DBG_TOPLEVEL || FBTrace.DBG_ERRORS)
- FBTrace.sysout("onXULScriptCreated FaILS "+e, e);
- }
- },
-
- onEvalScriptCreated: function(frame, outerScript, innerScripts)
- {
- try
- {
- if (FBTrace.DBG_EVAL)
- FBTrace.sysout("debugger.onEvalLevelScript script.fileName=" +
- outerScript.fileName);
-
- var context = this.breakContext;
- delete this.breakContext;
-
- var sourceFile = this.getEvalLevelSourceFile(frame, context, innerScripts);
-
- if (FBTrace.DBG_EVAL)
- FBTrace.sysout("debugger.onEvalScriptCreated url="+sourceFile.href,
- StackFrame.getCorrectedStackTrace(frame, context));
-
- Firebug.connection.dispatch("onEvalScriptCreated",[context, frame, sourceFile.href]);
- return sourceFile;
- }
- catch (e)
- {
- if (FBTrace.DBG_EVAL || FBTrace.DBG_ERRORS)
- FBTrace.sysout("onEvalScriptCreated FaILS "+e, e);
- }
- },
-
- onEventScriptCreated: function(frame, outerScript, innerScripts)
- {
- if (FBTrace.DBG_EVENTS)
- FBTrace.sysout("debugger.onEventScriptCreated script.fileName=" +
- outerScript.fileName, {outerScript: outerScript, script: frame.script});
-
- var context = this.breakContext;
- delete this.breakContext;
-
- var script = frame.script;
- var creatorURL = Url.normalizeURL(frame.script.fileName);
- var innerScriptArray = [];
-
- try
- {
- var source = script.functionSource;
-
- while (innerScripts.hasMoreElements())
- {
- var inner = innerScripts.getNext();
- source += "\n"+inner.functionSource;
- innerScriptArray.push(inner);
- }
- }
- catch (exc)
- {
- /*Bug 426692 */
- var source = creatorURL + "/"+Obj.getUniqueId();
- }
-
- var lines = Str.splitLines(source);
-
- var urlDescribed = this.getDynamicURL(context,
- Url.normalizeURL(frame.script.fileName), lines, "event");
-
- var handlerName = outerScript.functionName;
- if (handlerName)
- var url = urlDescribed.href + '/' + handlerName;
- else
- var url = urlDescribed.href;
-
- context.sourceCache.invalidate(url);
- context.sourceCache.storeSplitLines(url, lines);
-
- var sourceFile = new Firebug.EventSourceFile(url, frame.script, "event:"+
- script.functionName+"."+script.tag, lines, new ArrayEnumerator(innerScriptArray));
-
- this.watchSourceFile(context, sourceFile);
-
- if (FBTrace.DBG_EVENTS)
- FBTrace.sysout("debugger.onEventScriptCreated url="+sourceFile.href+"\n");
-
- if (FBTrace.DBG_EVENTS)
- FBTrace.sysout("debugger.onEventScriptCreated sourceFileMap:", context.sourceFileMap);
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("debugger.onEventScriptCreated sourcefile="+sourceFile.toString()+
- " -> "+context.getName()+"\n");
-
- Firebug.connection.dispatch("onEventScriptCreated",[context, frame, url]);
- return sourceFile;
- },
-
- // We just compiled a bunch of JS, eg a script tag in HTML. We are about to run the outerScript.
- onTopLevelScriptCreated: function(frame, outerScript, innerScripts)
- {
- if (FBTrace.DBG_TOPLEVEL)
- FBTrace.sysout("debugger("+this.debuggerName+").onTopLevelScriptCreated script.fileName="+
- outerScript.fileName+"\n");
-
- var context = this.breakContext;
- delete this.breakContext;
-
- // This is our only chance to get the linetable for the outerScript
- // since it will run and be GC next.
- var script = frame.script;
- var url = Url.normalizeURL(script.fileName);
-
- if (FBTrace.DBG_TOPLEVEL)
- FBTrace.sysout("debugger.onTopLevelScriptCreated frame.script.tag="+frame.script.tag+
- " has url="+url);
-
- var isInline = false;
-
- /* The primary purpose here was to deal with http://code.google.com/p/fbug/issues/detail?id=2912
- * This approach could be applied to inline scripts, so I'll leave the code here until we decide.
- Win.iterateWindows(context.window, function isInlineScriptTag(win)
- {
- var location = Win.safeGetWindowLocation(win);
- if (location === url)
- {
- isInline = true;
- return isInline;
- }
- });
- */
-
- if (FBTrace.DBG_TOPLEVEL)
- FBTrace.sysout("debugger.onTopLevelScriptCreated has inLine:"+isInline+" url="+url);
-
- if (isInline) // never true see above
- {
- var href = url +"/"+context.dynamicURLIndex++;
- sourceFile = new Firebug.ScriptTagAppendSourceFile(href, script,
- script.lineExtent, innerScripts);
- this.watchSourceFile(context, sourceFile);
- context.pendingScriptTagSourceFile = sourceFile;
- }
- else
- {
- var sourceFile = context.sourceFileMap[url];
-
- // Multiple script tags in HTML or duplicate .js file names.
- if (sourceFile && (sourceFile instanceof Firebug.TopLevelSourceFile))
- {
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("debugger.onTopLevelScriptCreated reuse sourcefile="+
- sourceFile.toString()+" -> "+context.getName()+" ("+context.uid+")");
-
- if (!sourceFile.outerScript || !sourceFile.outerScript.isValid)
- sourceFile.outerScript = outerScript;
-
- Firebug.SourceFile.addScriptsToSourceFile(sourceFile, outerScript,
- innerScripts);
- }
- else
- {
- sourceFile = new Firebug.TopLevelSourceFile(url, script, script.lineExtent,
- innerScripts);
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("debugger.onTopLevelScriptCreated create sourcefile="+
- sourceFile.toString()+" -> "+context.getName()+" ("+context.uid+")");
- }
-
- // If a script is inserted multiple times in HTML, we still need to make
- // sure that meta info is updated (e.g. sourceFileByTag in the context)
- // (see issue 4880)
- this.watchSourceFile(context, sourceFile);
- }
-
- Firebug.connection.dispatch("onTopLevelScriptCreated",[context, frame, sourceFile.href]);
- return sourceFile;
- },
-
- getContextByFrame: function(frame)
- {
- if (FBTrace.DBG_BP)
- FBTrace.sysout("debugger.getContextByFrame");
-
- var win = FBS.getOutermostScope(frame);
- return win ? Firebug.TabWatcher.getContextByWindow(win) : null;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- watchSourceFile: function(context, sourceFile)
- {
- context.addSourceFile(sourceFile); // store in the context and notify listeners
- //FBS.watchSourceFile(sourceFile); // tell the service to watch this file
-
- // Update the Script panel, this script could have been loaded asynchronously
- // and perhaps is the only one that should be displayed (otherwise the panel
- // would show: No Javascript on this page). See issue 4932
- var panel = context.getPanel("script", true);
- if (panel)
- panel.context.invalidatePanels("script");
- },
-
- unwatchSourceFile: function(context, sourceFile)
- {
- //FBS.unwatchSourceFile(sourceFile);
- context.removeSourceFile(sourceFile);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onToggleBreakpoint: function(url, lineNo, isSet, props)
- {
- if (props.debuggerName != this.debuggerName) // then not for us
- {
- if (FBTrace.DBG_BP)
- FBTrace.sysout("debugger(" + this.debuggerName +
- ").onToggleBreakpoint ignoring toggle for " +
- props.debuggerName + " target " + lineNo + "@" + url);
- return;
- }
-
- var found = false;
- for (var i = 0; i < Firebug.TabWatcher.contexts.length; ++i)
- {
- var context = Firebug.TabWatcher.contexts[i];
- var sourceFile = context.sourceFileMap[url];
- if (sourceFile)
- {
- if (FBTrace.DBG_BP)
- FBTrace.sysout("debugger(" + this.debuggerName +
- ").onToggleBreakpoint found context " +
- context.getName());
-
- if (!isSet && context.dynamicURLhasBP)
- this.checkDynamicURLhasBP(context);
-
- var panel = context.getPanel("script", true);
- if (!panel)
- continue;
-
- panel.context.invalidatePanels("breakpoints");
-
- var sourceBox = panel.getSourceBoxByURL(url);
- if (!sourceBox)
- {
- if (FBTrace.DBG_BP)
- FBTrace.sysout("debugger("+this.debuggerName+").onToggleBreakpoint context "+
- i+" script panel no sourcebox for url: "+url, panel.sourceBoxes);
- continue;
- }
-
- var row = sourceBox.getLineNode(lineNo);
- if (FBTrace.DBG_BP)
- FBTrace.sysout(i+") onToggleBreakpoint getLineNode="+row+" lineNo="+lineNo+
- " context:"+context.getName());
-
- if (!row)
- continue; // we *should* only be called for lines in the viewport...
-
- row.setAttribute("breakpoint", isSet);
- if (isSet && props)
- {
- row.setAttribute("condition", props.condition ? "true" : "false");
- row.breakpointCondition = props.condition ? props.condition : null;
-
- if (props.condition) // issue 1371
- {
- var watchPanel = this.ableWatchSidePanel(context);
-
- if (watchPanel)
- {
- watchPanel.addWatch(props.condition);
- }
- else
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("onToggleBreakpoint no watch panel in context "+
- context.getName());
- }
- }
- row.setAttribute("disabledBreakpoint", new Boolean(props.disabled).toString());
- }
- else
- {
- row.removeAttribute("condition");
- if (props.condition)
- {
- var watchPanel = this.ableWatchSidePanel(context);
- watchPanel.removeWatch(props.condition);
- watchPanel.rebuild();
- }
- row.removeAttribute("disabledBreakpoint");
- }
- Firebug.connection.dispatch( "onToggleBreakpoint", [context, url, lineNo, isSet]);
- found = true;
- continue;
- }
- }
-
- if (FBTrace.DBG_BP && !found)
- FBTrace.sysout("debugger("+this.debuggerName+").onToggleBreakpoint no find context");
- },
-
- // xxxHonza, xxxjjb: duplicated in script.js, does it belong here?
- // But onToggleBreakpoint needs it.
- ableWatchSidePanel: function(context)
- {
- // TODO if (commandline is not active, then we should not show the new watch feature)
- var watchPanel = context.getPanel("watches", true);
- if (watchPanel)
- return watchPanel;
- },
-
- onToggleErrorBreakpoint: function(url, lineNo, isSet)
- {
- for (var i = 0; i < Firebug.TabWatcher.contexts.length; ++i)
- {
- var context = Firebug.TabWatcher.contexts[i];
- var panel = context.getPanel("console", true);
- if (panel)
- {
- panel.context.invalidatePanels("breakpoints");
-
- for (var row = panel.panelNode.firstChild; row; row = row.nextSibling)
- {
- var errorMessage = row.getElementsByClassName("objectBox-errorMessage");
- if (!errorMessage.length)
- continue;
-
- errorMessage = errorMessage[0];
- var error = errorMessage.repObject;
- if (error instanceof FirebugReps.ErrorMessageObj && error.href == url &&
- error.lineNo == lineNo)
- {
- if (isSet)
- Css.setClass(errorMessage, "breakForError");
- else
- Css.removeClass(errorMessage, "breakForError");
-
- Firebug.connection.dispatch( "onToggleErrorBreakpoint",
- [context, url, lineNo, isSet]);
- }
- }
- }
- }
- },
-
- onToggleMonitor: function(url, lineNo, isSet)
- {
- for (var i = 0; i < Firebug.TabWatcher.contexts.length; ++i)
- {
- var panel = Firebug.TabWatcher.contexts[i].getPanel("console", true);
- if (panel)
- panel.context.invalidatePanels("breakpoints");
- }
- },
-
- checkDynamicURLhasBP: function (context)
- {
- context.dynamicURLhasBP = false;
- for (var url in context.sourceFileMap)
- {
- var sourceFile = context.sourceFileMap[url];
- if (sourceFile.isEval() || sourceFile.isEvent())
- {
- FBS.enumerateBreakpoints(url, {call: function setDynamicIfSet(url, lineNo)
- {
- context.dynamicURLhasBP = true;
- }});
- }
- if (context.dynamicURLhasBP)
- break;
- }
- if (FBTrace.DBG_SOURCEFILES || FBTrace.DBG_BP)
- FBTrace.sysout("debugger.checkDynamicURLhasBP "+context.dynamicURLhasBP);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // XXXjjb this code is not called, because I found the scheme for detecting Function
- // too complex. I'm leaving it here to remind us that we need to support new Function().
- onFunctionConstructor: function(frame, ctor_script)
- {
- try
- {
- var context = this.breakContext;
- delete this.breakContext;
-
- var sourceFile = this.createSourceFileForFunctionConstructor(frame, ctor_script, context);
-
- if (FBTrace.DBG_EVAL)
- {
- FBTrace.sysout("debugger.onFunctionConstructor tag=" + ctor_script.tag +
- " url=" + sourceFile.href);
-
- FBTrace.sysout(StackFrame.traceToString(
- StackFrame.getCorrectedStackTrace(frame, context)));
- }
-
- Firebug.connection.dispatch("onFunctionConstructor",
- [context, frame, ctor_script, sourceFile.href]);
-
- return sourceFile.href;
- }
- catch(exc)
- {
- Debug.ERROR("debugger.onFunctionConstructor failed: "+exc);
-
- if (FBTrace.DBG_EVAL)
- FBTrace.sysout("debugger.onFunctionConstructor failed: ",exc);
-
- return null;
- }
-
- },
-
- createSourceFileForFunctionConstructor: function(caller_frame, ctor_script, context)
- {
- var ctor_expr = null; // this.getConstructorExpression(caller_frame, context);
- if (FBTrace.DBG_EVAL)
- FBTrace.sysout("createSourceFileForFunctionConstructor ctor_expr:"+ctor_expr+"\n");
-
- var source;
- if (ctor_expr)
- {
- source = this.getEvalBody(caller_frame,
- "lib.createSourceFileForFunctionConstructor ctor_expr", 1, ctor_expr);
- }
- else
- {
- source = " bah createSourceFileForFunctionConstructor"; //ctor_script.functionSource;
- }
-
- if (FBTrace.DBG_EVAL)
- FBTrace.sysout("createSourceFileForFunctionConstructor source:"+source);
-
- var url = this.getDynamicURL(context, Url.normalizeURL(caller_frame.script.fileName),
- source, "Function");
-
- var lines = context.sourceCache.store(url.href, source);
- var sourceFile = new Firebug.FunctionConstructorSourceFile(url, caller_frame.script,
- ctor_expr, lines.length);
-
- this.watchSourceFile(context, sourceFile);
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("debugger.onNewFunction sourcefile="+sourceFile.toString()+" -> "+
- context.getName()+"\n");
-
- return sourceFile;
- },
-
- getConstructorExpression: function(caller_frame, context)
- {
- // We believe we are just after the ctor call.
- var decompiled_lineno = getLineAtPC(caller_frame, context);
- if (FBTrace.DBG_EVAL)
- FBTrace.sysout("debugger.getConstructoreExpression decompiled_lineno:"+
- decompiled_lineno+"\n");
-
- // TODO place in sourceCache?
- var decompiled_lines = Str.splitLines(caller_frame.script.functionSource);
- if (FBTrace.DBG_EVAL)
- FBTrace.sysout("debugger.getConstructoreExpression decompiled_lines:",decompiled_lines);
-
- var candidate_line = decompiled_lines[decompiled_lineno - 1]; // zero origin
- if (FBTrace.DBG_EVAL)
- FBTrace.sysout("debugger.getConstructoreExpression candidate_line:" + candidate_line);
-
- if (candidate_line && candidate_line != null)
- {
- var m = reFunction.exec(candidate_line);
- if (m)
- var arguments = m[1]; // TODO Lame: need to count parens, with escapes and quotes
- }
-
- if (FBTrace.DBG_EVAL)
- FBTrace.sysout("debugger.getConstructoreExpression arguments:"+arguments+"\n");
-
- if (arguments) // need to break down commas and get last arg.
- {
- var lastComma = arguments.lastIndexOf(',');
- return arguments.substring(lastComma+1); // if -1 then 0
- }
-
- return null;
- },
-
- // end of guilt trip
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- // Called by debugger.onEval() to store eval() source.
- // The frame has the blank-function-name script and it is not the top frame.
- // The frame.script.fileName is given by spidermonkey as file of the first eval().
- // The frame.script.baseLineNumber is given by spidermonkey as the line of the first eval() call
- // The source that contains the eval() call is the source of our caller.
- // If our caller is a file, the source of our caller is at frame.script.baseLineNumber
- // If our caller is an eval, the source of our caller is TODO Check Test Case
- getEvalLevelSourceFile: function(frame, context, innerScripts)
- {
- var eval_expr = this.getEvalExpression(frame, context);
-
- if (FBTrace.DBG_EVAL)
- FBTrace.sysout("getEvalLevelSourceFile eval_expr:"+eval_expr);
-
- if (eval_expr)
- {
- var source = this.getEvalBody(frame, "lib.getEvalLevelSourceFile.getEvalBody",
- 1, eval_expr);
- var mapType = PCMAP_SOURCETEXT;
- }
- else
- {
- var source = frame.script.functionSource; // XXXms - possible crash on OSX FF2
- var mapType = PCMAP_PRETTYPRINT;
- }
-
- var lines = Str.splitLines(source);
-
- if (FBTrace.DBG_EVAL)
- FBTrace.sysout("getEvalLevelSourceFile "+lines.length+ "lines, mapType:"+
- ((mapType==PCMAP_SOURCETEXT)?"SOURCE":"PRETTY")+" source:"+source);
-
- var url = this.getDynamicURL(context, Url.normalizeURL(frame.script.fileName),
- lines, "eval");
-
- context.sourceCache.invalidate(url.href);
- context.sourceCache.storeSplitLines(url.href, lines);
-
- var sourceFile = new Firebug.EvalLevelSourceFile(url, frame.script, eval_expr, lines,
- mapType, innerScripts);
-
- this.watchSourceFile(context, sourceFile);
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("debugger.getEvalLevelSourceFile sourcefile="+sourceFile.toString()+
- " -> "+context.getName()+"\n");
-
- return sourceFile;
- },
-
- getDynamicURL: function(context, callerURL, lines, kind)
- {
- var url = this.getURLFromLastLine(context, lines);
- if (url)
- return url;
-
- var url = this.getSequentialURL(context, callerURL, kind);
- if (url)
- return url;
-
- var url = this.getURLFromMD5(callerURL, lines, kind);
- if (url)
- return url;
-
- var url = this.getDataURLForScript(callerURL, lines);
- if (url)
- return url;
-
- return url;
- },
-
- getURLFromLastLine: function(context, lines)
- {
- var url = null;
- // Ignores any trailing whitespace in |source|
- const reURIinComment = /\/\/[@#]\ssourceURL=\s*(\S*?)\s*$/m;
- var m = reURIinComment.exec(lines[lines.length - 1]);
-
- if (m)
- {
- // add context info to the sourceURL so eval'd sources are grouped
- // correctly in the source file list
- if (m[1] && m[1].indexOf('://') == -1)
- {
- var loc = context.window.location;
- if (m[1].charAt(0) != '/') m[1] = '/'+m[1]; // prepend leading slash if necessary
- m[1] = loc.protocol + '//' + loc.host + m[1]; // prepend protocol and host
- }
-
- var href = new String(m[1]);
- href = Url.normalizeURL(href);
-
- url = {href: href, kind: "source"};
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("debugger.getURLFromLastLine "+url.href, url);
- }
- else
- {
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("debugger.getURLFromLastLine no match"+lines[lines.length - 1]);
- }
-
- return url;
- },
-
- getSequentialURL: function(context, callerURL, kind)
- {
- var url = null;
- if (!context.dynamicURLhasBP)
- {
- // If no breakpoints live in dynamic code then we don't need to compare
- // the previous and reloaded source. In that case let's use a cheap Url.
- var href = new String(callerURL + (kind ? "/"+kind+"/" : "/nokind/")+"seq/"
- +(context.dynamicURLIndex++));
- url = {href: href, kind: "seq"};
-
- if (FBTrace.DBG_SOURCEFILES || isNaN(context.dynamicURLIndex))
- FBTrace.sysout("debugger.getSequentialURL context:"+context.getName()+
- " url:"+url.href+" index: "+context.dynamicURLIndex, url);
- }
- return url;
- },
-
- getURLFromMD5: function(callerURL, lines, kind)
- {
- this.hash_service.init(this.nsICryptoHash.MD5);
- var source = lines.join('\n'); // we could double loop, would that be any faster?
- byteArray = [];
- for (var j = 0; j < source.length; j++)
- {
- byteArray.push( source.charCodeAt(j) );
- }
- this.hash_service.update(byteArray, byteArray.length);
- var hash = this.hash_service.finish(true);
-
- // encoding the hash should be ok, it should be information-preserving?
- // Or at least reversable?
- var href= new String(callerURL + (kind ? "/"+kind+"/" : "/nokind/")+"MD5/" +
- encodeURIComponent(hash));
- url = {href: href, kind: "MD5"};
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("debugger.getURLFromMD5 "+url.href, url);
-
- return url;
- },
-
- getDataURLForScript: function(callerURL, lines)
- {
- var url = null;
- var href = null;
- if (!source)
- {
- href = "eval."+script.tag;
- }
- else
- {
- // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
- href = new String("data:text/javascript;");
- href += "fileName="+encodeURIComponent(callerURL);
- var source = lines.join('\n');
- //url += ";"+ "baseLineNumber="+encodeURIComponent(script.baseLineNumber) +
- href +="," + encodeURIComponent(source);
- }
-
- url = {href:href, kind:"data"};
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("debugger.getDataURLForScript "+url.href, url);
-
- return url;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getEvalExpression: function(frame, context)
- {
- var expr = this.getEvalExpressionFromEval(frame, context); // eval in eval
-
- return (expr) ? expr : this.getEvalExpressionFromFile(Url.normalizeURL(frame.script.fileName),
- frame.script.baseLineNumber, context);
- },
-
- getEvalExpressionFromFile: function(url, lineNo, context)
- {
- if (context && context.sourceCache)
- {
- var in_url = Url.reJavascript.exec(url);
- if (in_url)
- {
- var m = reEval.exec(in_url[1]);
- if (m)
- return m[1];
- else
- return null;
- }
-
- var htm = reHTM.exec(url);
- if (htm)
- lineNo = lineNo + 1; // embedded scripts seem to be off by one? XXXjjb heuristic
-
- // Walk backwards from the first line in the function until we find the line which
- // matches the pattern above, which is the eval call
- var line = "";
- for (var i = 0; i < 3; ++i)
- {
- line = context.sourceCache.getLine(url, lineNo-i) + line;
- if (line && line != null)
- {
- var m = reEval.exec(line);
- if (m)
- return m[1];
- }
- }
- }
- return null;
- },
-
- getEvalExpressionFromEval: function(frame, context)
- {
- var callingFrame = frame.callingFrame;
- var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, callingFrame.script);
- if (sourceFile)
- {
- if (FBTrace.DBG_EVAL)
- {
- FBTrace.sysout("debugger.getEvalExpressionFromEval sourceFile.href=" +
- sourceFile.href);
-
- FBTrace.sysout("debugger.getEvalExpressionFromEval callingFrame.pc=" +
- callingFrame.pc + " callingFrame.script.baseLineNumber=" +
- callingFrame.script.baseLineNumber);
- }
-
- var lineNo = callingFrame.script.pcToLine(callingFrame.pc, PCMAP_SOURCETEXT);
- lineNo = lineNo - callingFrame.script.baseLineNumber + 1;
- var url = sourceFile.href;
-
- if (FBTrace.DBG_EVAL && !context.sourceCache)
- FBTrace.sysout("debugger.getEvalExpressionFromEval context.sourceCache null??\n");
-
- // Walk backwards from the first line in the function until we find the line which
- // matches the pattern above, which is the eval call
- var line = "";
- for (var i = 0; i < 3; ++i)
- {
- line = context.sourceCache.getLine(url, lineNo-i) + line;
- if (FBTrace.DBG_EVAL)
- FBTrace.sysout("debugger.getEvalExpressionFromEval lineNo-i="+lineNo+"-"+i+"="+
- (lineNo-i)+" line:"+line+"\n");
-
- if (line && line != null)
- {
- var m = reEval.exec(line);
- if (m)
- return m[1]; // TODO Lame: need to count parens, with escapes and quotes
- }
- }
- }
- return null;
- },
-
- getEvalBody: function(frame, asName, asLine, evalExpr)
- {
- if (evalExpr)
- {
- var result_src = {};
- var evalThis = "new String("+evalExpr+");";
- var evaled = frame.eval(evalThis, asName, asLine, result_src);
-
- if (evaled)
- {
- var src = Wrapper.unwrapIValue(result_src.value);
- return src+"";
- }
- else
- {
- // Either we failed, or this was a window.eval() call
- var source;
-
- if (frame.callingFrame && !this.avoidRecursing)
- {
- // Try the caller, in case we are in window.eval() where the scope is global
- this.avoidRecursing = true;
- source = this.getEvalBody(frame.callingFrame, asName, asLine, evalExpr);
- delete this.avoidRecursing;
-
- if (FBTrace.DBG_EVAL)
- FBTrace.sysout("callingFrame used to get source ", source);
-
- return source;
- }
-
- if(evalExpr == "function(p,a,c,k,e,r")
- source = "/packer/ JS compressor detected";
- else
- source = frame.script.functionSource;
-
- return source+" /* !eval("+evalThis+")) */";
- }
- }
- else
- {
- return frame.script.functionSource; // XXXms - possible crash on OSX FF2
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Module
-
- initialize: function()
- {
- Firebug.clientID = this.registerClient(Firebug.JSDebugClient);
- this.nsICryptoHash = Components.interfaces["nsICryptoHash"];
-
- this.debuggerName = window.location.href +"- at -"+Obj.getUniqueId();
- this.toString = function() { return this.debuggerName; };
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("debugger.initialize "+ this.debuggerName+" Firebug.clientID "+
- Firebug.clientID);
-
- this.hash_service = Xpcom.CCSV("@mozilla.org/security/hash;1", "nsICryptoHash");
-
-
- this.wrappedJSObject = this; // how we communicate with fbs
-
- this.onFunctionCall = Obj.bind(this.onFunctionCall, this);
-
- Firebug.ActivableModule.initialize.apply(this, arguments);
- },
-
- shutdown: function()
- {
- //Firebug.connection.unregisterTool(this.asTool);
-
- Firebug.ActivableModule.destroy.apply(this, arguments);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // BTI
-
- toolName: "script",
-
- addListener: function(listener)
- {
- Firebug.connection.addListener(listener);
- },
-
- removeListener: function(listener)
- {
- Firebug.connection.removeListener(listener);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /**
- * per-XUL window registration; this method just allows us to keep fbs in this file.
- * @param clientAPI an object that implements functions called by fbs for clients.
- */
- registerClient: function(clientAPI)
- {
- return FBS.registerClient(clientAPI);
- },
-
- unregisterClient: function(clientAPI)
- {
- FBS.unregisterClient(clientAPI);
- },
-
- enable: function()
- {
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("debugger.Firebug.Debugger.enable; " + this.enabled);
- },
-
- disable: function()
- {
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("debugger.Firebug.Debugger.disable; " + this.enabled);
- },
-
- selfObserver: {}, // empty listener, registered as observer while Script panel is enabled.
-
- initializeUI: function()
- {
- Firebug.ActivableModule.initializeUI.apply(this, arguments);
- this.obeyPrefs();
- this.filterButton = Firebug.chrome.$("fbScriptFilterMenu"); // TODO move to script.js
- this.filterMenuUpdate();
- if (FBS.isJSDActive()) // notify frontend of current state
- Firebug.JSDebugClient.onJSDActivate(true, 'Firebug.Debugger.initializeUI');
- },
-
- obeyPrefs: function()
- {
- var name = "script.enableSites";
- var value = Firebug.Options.get("script.enableSites");
- this.updateOption(name, value);
- },
-
- initContext: function(context, persistedState)
- {
- if (persistedState)
- context.dynamicURLhasBP = persistedState.dynamicURLhasBP;
-
- context.dynamicURLIndex = 1; // any dynamic urls need to be unique to the context.
-
- context.jsDebuggerCalledUs = false;
-
- Firebug.ActivableModule.initContext.apply(this, arguments);
- },
-
- showContext: function(browser, context)
- {
- // then context was not active during load
- if (context && context.loaded && !context.onLoadWindowContent)
- this.updateScriptFiles(context);
- },
-
- // scan windows for 'script' tags (only if debugger is not enabled)
- updateScriptFiles: function(context)
- {
- function addFile(url, scriptTagNumber, dependentURL)
- {
- var sourceFile = new Firebug.ScriptTagSourceFile(context, url, scriptTagNumber);
- sourceFile.dependentURL = dependentURL;
- context.addSourceFile(sourceFile);
- return true;
- }
-
- Win.iterateWindows(context.window, function updateEachWin(win)
- {
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("updateScriptFiles Win.iterateWindows: "+win.location.href+
- " documentElement: "+win.document.documentElement);
-
- if (!win.document.documentElement)
- return;
-
- var url = Url.normalizeURL(win.location.href);
-
- if (url)
- {
- if (!context.sourceFileMap.hasOwnProperty(url))
- {
- var URLOnly = new Firebug.NoScriptSourceFile(context, url);
- context.addSourceFile(URLOnly);
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("updateScriptFiles created NoScriptSourceFile for URL:" +
- url, URLOnly);
- }
- }
-
- var baseUrl = win.location.href;
- var bases = win.document.documentElement.getElementsByTagName("base");
- if (bases && bases[0])
- {
- baseUrl = bases[0].href;
- }
-
- var scripts = win.document.documentElement.getElementsByTagName("script");
- for (var i = 0; i < scripts.length; ++i)
- {
- var scriptSrc = scripts[i].getAttribute('src'); // for XUL use attribute
- var url = scriptSrc ? Url.absoluteURL(scriptSrc, baseUrl) : win.location.href;
- url = Url.normalizeURL(url ? url : win.location.href);
- var added = addFile(url, i, (scriptSrc?win.location.href:null));
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("updateScriptFiles "+(scriptSrc?"inclusion":"inline")+
- " script #"+i+"/"+scripts.length+(added?" adding ":" readded ")+url+
- " to context="+context.getName()+"\n");
- }
- });
-
- if (FBTrace.DBG_SOURCEFILES)
- {
- FBTrace.sysout("updateScriptFiles sourcefiles:",
- Firebug.SourceFile.sourceFilesAsArray(context.sourceFileMap));
- }
- },
-
- loadedContext: function(context)
- {
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("loadedContext needs to trigger watchpanel updates");
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("debugger("+this.debuggerName+").loadedContext enabled on load: "+
- context.onLoadWindowContent+" context.sourceFileMap", context.sourceFileMap);
- },
-
- // clean up the source file map in case the frame is being reloaded.
- unwatchWindow: function(context, win)
- {
- var scriptTags = win.document.getElementsByTagName("script");
- for (var i = 0; i < scriptTags.length; i++)
- {
- var src = scriptTags[i].getAttribute("src");
- src = src ? src : Win.safeGetWindowLocation(win);
-
- // If the src is not in the source map, try to use absolute url.
- if (!context.sourceFileMap[src])
- src = Url.absoluteURL(src, win.location.href);
-
- delete context.sourceFileMap[src];
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("debugger.unWatchWindow; delete sourceFileMap entry for " + src);
- }
- if (scriptTags.length > 0)
- context.invalidatePanels('script');
- },
-
- destroyContext: function(context, persistedState)
- {
- Firebug.ActivableModule.destroyContext.apply(this, arguments);
-
- if (context.stopped)
- {
- // the abort will call resume, but the nestedEventLoop would continue the load...
- this.abort(context);
- }
-
- if (persistedState)
- {
- if (context.dynamicURLhasBP)
- persistedState.dynamicURLhasBP = context.dynamicURLhasBP;
- else
- delete persistedState.dynamicURLhasBP;
- }
- },
-
- updateOption: function(name, value)
- {
- if (name == "breakOnErrors")
- Firebug.chrome.getElementById("cmd_firebug_breakOnErrors").setAttribute("checked", value);
- },
-
- getObjectByURL: function(context, url)
- {
- var sourceFile = Firebug.SourceFile.getSourceFileByHref(url, context);
- if (sourceFile)
- return new SourceLink.SourceLink(sourceFile.href, 0, "js");
- },
-
- shutdown: function()
- {
- this.unregisterClient(Firebug.JSDebugClient);
- FBS.unregisterDebugger(this);
- },
-
- /**
- * 1.3.1 safe for multiple calls
- */
- registerDebugger: function()
- {
- // Do not activate JSD on shutdown.
- // https://bugzilla.mozilla.org/show_bug.cgi?id=756267#c12
- if (Firebug.isShutdown)
- return;
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("registerDebugger");
-
- // this will eventually set 'jsd' on the statusIcon
- var check = FBS.registerDebugger(this);
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("debugger.registerDebugger "+check+" debuggers");
- },
-
- unregisterDebugger: function() // 1.3.1 safe for multiple calls
- {
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("debugger.unregisterDebugger");
-
- // stay registered if we are profiling across a reload.
- if (Firebug.Profiler && Firebug.Profiler.isProfiling())
- return;
-
- var check = FBS.unregisterDebugger(this);
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("debugger.unregisterDebugger: "+check+" debuggers");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends ActivableModule
-
- onObserverChange: function(observer)
- {
- if (FBTrace.DBG_ACTIVATION)
- {
- var names = [];
- this.observers.forEach(function(ob){names.push(ob.name || ob.dispatchName || ob.toolName);});
-
- FBTrace.sysout("debugger.onObserverChange "+this.hasObservers()+" "+
- this.observers.length+": "+names.join(','), this.observers);
- }
-
- if (this.hasObservers())
- this.activateDebugger();
- else
- this.deactivateDebugger();
- },
-
- activateDebugger: function()
- {
- this.registerDebugger();
-
- // If jsd is already active, we'll notify true; else we'll get another event
- var isActive = FBS.isJSDActive();
- if (isActive)
- Firebug.JSDebugClient.onJSDActivate(true, 'activated already');
-
- if (FBTrace.DBG_PANELS || FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("debugger.activateDebugger requested; activated already? "+isActive);
- },
-
- deactivateDebugger: function()
- {
- this.unregisterDebugger();
-
- var isActive = FBS.isJSDActive();
- if (!isActive)
- Firebug.JSDebugClient.onJSDDeactivate(false, 'deactivate');
-
- if (FBTrace.DBG_PANELS || FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("debugger.deactivate");
- },
-
- onSuspendingFirebug: function()
- {
- var anyStopped = Firebug.TabWatcher.iterateContexts(function isAnyStopped(context)
- {
- return context.stopped;
- });
-
- return anyStopped;
- },
-
- onSuspendFirebug: function()
- {
- if (!Firebug.Debugger.isAlwaysEnabled())
- return;
-
- // can be called multiple times.
- var paused = FBS.pause(this.debuggerName);
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("debugger.onSuspendFirebug paused: "+paused+" isAlwaysEnabled " +
- Firebug.Debugger.isAlwaysEnabled());
-
- // JSD activation is not per browser-tab, so FBS.pause can return 'not-paused' when
- // Firebug is activated on another tab.
- // The start-button should somehow reflect that JSD can be still active (even if
- // Firebug is suspended for the current tab).
- if (!paused) // then we failed to suspend, undo
- return true;
-
- return false;
- },
-
- onResumeFirebug: function()
- {
- if (!Firebug.Debugger.isAlwaysEnabled())
- return;
-
- var unpaused = FBS.unPause();
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("debugger.onResumeFirebug unpaused: "+unpaused+" isAlwaysEnabled " +
- Firebug.Debugger.isAlwaysEnabled());
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Menu in toolbar.
-
- onScriptFilterMenuTooltipShowing: function(tooltip, context)
- {
- if (FBTrace.DBG_OPTIONS)
- FBTrace.sysout("onScriptFilterMenuTooltipShowing not implemented");
- },
-
- onScriptFilterMenuCommand: function(event, context)
- {
- var menu = event.target;
- Firebug.Options.set("scriptsFilter", menu.value);
- Firebug.Debugger.filterMenuUpdate();
- },
-
- menuFullLabel:
- {
- "static": Locale.$STR("ScriptsFilterStatic"),
- evals: Locale.$STR("ScriptsFilterEval"),
- events: Locale.$STR("ScriptsFilterEvent"),
- all: Locale.$STR("ScriptsFilterAll"),
- },
-
- menuShortLabel:
- {
- "static": Locale.$STR("ScriptsFilterStaticShort"),
- evals: Locale.$STR("ScriptsFilterEvalShort"),
- events: Locale.$STR("ScriptsFilterEventShort"),
- all: Locale.$STR("ScriptsFilterAllShort"),
- },
-
- onScriptFilterMenuPopupShowing: function(menu, context)
- {
- if (this.menuTooltip)
- this.menuTooltip.fbEnabled = false;
-
- var items = menu.getElementsByTagName("menuitem");
- var value = this.filterButton.value;
-
- for (var i=0; i<items.length; i++)
- {
- var option = items[i].value;
- if (!option)
- continue;
-
- if (option == value)
- items[i].setAttribute("checked", "true");
-
- items[i].label = Firebug.Debugger.menuFullLabel[option];
- }
-
- return true;
- },
-
- onScriptFilterMenuPopupHiding: function(tooltip, context)
- {
- if (this.menuTooltip)
- this.menuTooltip.fbEnabled = true;
-
- return true;
- },
-
- filterMenuUpdate: function()
- {
- var value = Firebug.Options.get("scriptsFilter");
- this.filterButton.value = value;
- this.filterButton.label = this.menuShortLabel[value];
- this.filterButton.removeAttribute("disabled");
- this.filterButton.setAttribute("value", value);
- if (FBTrace.DBG_OPTIONS)
- FBTrace.sysout("debugger.filterMenuUpdate value: "+value+" label:"+
- this.filterButton.label+'\n');
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Options
-
- resetAllOptions: function()
- {
- Firebug.TabWatcher.iterateContexts( function clearBPs(context)
- {
- Firebug.Debugger.clearAllBreakpoints(context);
- });
-
- var breakpointStore = FBS.getBreakpointStore();
- breakpointStore.clear(true);
- }
-});
-
-// ********************************************************************************************* //
-
-Firebug.Debugger.Breakpoint = function(name, href, lineNumber, checked, sourceLine, isFuture)
-{
- this.name = name;
- this.href = href;
- this.lineNumber = lineNumber;
- this.checked = checked;
- this.sourceLine = sourceLine;
- this.isFuture = isFuture;
-};
-
-// ********************************************************************************************* //
-
-Firebug.DebuggerListener =
-{
- onStop: function(context, frame, type, rv)
- {
- },
-
- onResume: function(context)
- {
- },
-
- onThrow: function(context, frame, rv)
- {
- return false; /* continue throw */
- },
-
- onError: function(context, frame, error)
- {
- },
-
- onEventScriptCreated: function(context, frame, url, sourceFile)
- {
- },
-
- onTopLevelScriptCreated: function(context, frame, url, sourceFile)
- {
- },
-
- onEvalScriptCreated: function(context, frame, url, sourceFile)
- {
- },
-
- onFunctionConstructor: function(context, frame, ctor_script, url, sourceFile)
- {
- }
-};
-
-// ********************************************************************************************* //
-// Signals from fbs, passed along to our listeners
-
-Firebug.JSDebugClient =
-{
- onJSDActivate: function(active, fromMsg)
- {
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("Firebug.JSDebugClient onJSDActivate "+active+" "+fromMsg);
- Firebug.connection.dispatch("onActivateTool", ["script", active]);
- },
-
- onJSDDeactivate: function(active, fromMsg)
- {
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("Firebug.JSDebugClient onJSDDeactivate "+active+" "+fromMsg);
- Firebug.connection.dispatch("onActivateTool", ["script", active]);
- },
-
- onPauseJSDRequested: function(rejection, debuggerName)
- {
- // A debugger client (an instance of Firebug.JSDebugClient) asked to pause JSD.
- // Note that there is one instance of Firebug.JSDebugClient per browser (XUL) window.
- // If the debugger is 'on' in this browser window JSD and the request comes from
- // another window (debugger) JSD should *not* be paused (see issue 4609).
- // So, reject only if the request comes from another browser window and Firebug
- // is resumed in this window.
- if (debuggerName != Firebug.Debugger.debuggerName && !Firebug.getSuspended())
- {
- rejection.push(true);
-
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("Firebug.JSDebugClient onPauseJSDRequested rejected to suspend; " +
- "Current debugger: " + Firebug.Debugger.debuggerName + ", requestor debugger: " +
- debuggerName);
- }
-
- //Firebug.connection.dispatch("onPauseJSDRequested", arguments);
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("Firebug.JSDebugClient onPauseJSDRequested rejection: " +
- rejection.length + ", jsDebuggerOn: " + Firebug.jsDebuggerOn);
- }
-};
-
-// Recursively look for obj in container using array of visited objects
-function findObjectPropertyPath(containerName, container, obj, visited)
-{
- if (!container || !obj || !visited)
- return false;
-
- var referents = [];
- visited.push(container);
- for (var p in container)
- {
- if (container.hasOwnProperty(p))
- {
- var candidate = null;
- try
- {
- candidate = container[p];
- }
- catch(exc)
- {
- // eg sessionStorage
- }
-
- if (candidate === obj) // then we found a property pointing to our obj
- {
- referents.push(new Referent(containerName, container, p, obj));
- }
- else // recurse
- {
- var candidateType = typeof (candidate);
- if (candidateType === 'object' || candidateType === 'function')
- {
- if (visited.indexOf(candidate) === -1)
- {
- var refsInChildren = findObjectPropertyPath(p, candidate, obj, visited);
- if (refsInChildren.length)
- {
- // As we unwind the recursion we tack on layers of the path.
- for (var i = 0; i < refsInChildren.length; i++)
- {
- var refInChildren = refsInChildren[i];
- refInChildren.prependPath(containerName, container);
- referents.push(refInChildren);
-
- FBTrace.sysout(" Did prependPath with p "+p+" gave "+
- referents[referents.length - 1].getObjectPathExpression(),
- referents[referents.length - 1]);
- }
- }
- }
- //else we already looked at that object.
- } // else the object has no properties
- }
- }
- }
-
- FBTrace.sysout(" Returning "+referents.length+ " referents", referents);
-
- return referents;
-}
-
-// ********************************************************************************************* //
-
-function getFrameWindow(frame)
-{
- var result = {};
- if (frame.eval("window", "", 1, result))
- {
- var win = Wrapper.unwrapIValue(result.value, Firebug.viewChrome);
- return Win.getRootWindow(win);
- }
-}
-
-function ArrayEnumerator(array)
-{
- this.index = 0;
- this.array = array;
- this.hasMoreElements = function()
- {
- return (this.index < array.length);
- };
- this.getNext = function()
- {
- return this.array[++this.index];
- };
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerActivableModule(Firebug.Debugger);
-
-return Firebug.Debugger;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/firefox",
+ "arch/compilationunit",
+ "firebug/lib/xpcom",
+ "firebug/chrome/reps",
+ "firebug/lib/locale",
+ "firebug/lib/wrapper",
+ "firebug/lib/url",
+ "firebug/js/sourceLink",
+ "firebug/js/stackFrame",
+ "firebug/lib/css",
+ "firebug/chrome/window",
+ "firebug/lib/string",
+ "firebug/lib/array",
+ "firebug/trace/debug",
+ "firebug/js/fbs",
+ "firebug/lib/events",
+ "firebug/console/errors",
+],
+function(Obj, Firebug, Firefox, CompilationUnit, Xpcom, FirebugReps, Locale,
+ Wrapper, Url, SourceLink, StackFrame, Css, Win, Str, Arr, Debug, FBS, Events) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const jsdIScript = Ci.jsdIScript;
+const jsdIStackFrame = Ci.jsdIStackFrame;
+const jsdIExecutionHook = Ci.jsdIExecutionHook;
+const nsISupports = Ci.nsISupports;
+const nsICryptoHash = Ci.nsICryptoHash;
+const nsIURI = Ci.nsIURI;
+
+const PCMAP_SOURCETEXT = jsdIScript.PCMAP_SOURCETEXT;
+const PCMAP_PRETTYPRINT = jsdIScript.PCMAP_PRETTYPRINT;
+
+const RETURN_VALUE = jsdIExecutionHook.RETURN_RET_WITH_VAL;
+const RETURN_THROW_WITH_VAL = jsdIExecutionHook.RETURN_THROW_WITH_VAL;
+const RETURN_CONTINUE = jsdIExecutionHook.RETURN_CONTINUE;
+const RETURN_CONTINUE_THROW = jsdIExecutionHook.RETURN_CONTINUE_THROW;
+const RETURN_ABORT = jsdIExecutionHook.RETURN_ABORT;
+const RETURN_HOOK_ERROR = jsdIExecutionHook.RETURN_HOOK_ERROR;
+
+const TYPE_THROW = jsdIExecutionHook.TYPE_THROW;
+const TYPE_DEBUGGER_KEYWORD = jsdIExecutionHook.TYPE_DEBUGGER_KEYWORD;
+
+const STEP_OVER = 1;
+const STEP_INTO = 2;
+const STEP_OUT = 3;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+const tooltipTimeout = 300;
+
+const reEval = /\s*eval\s*\(([^)]*)\)/m; // eval ( $1 )
+const reHTM = /\.[hH][tT][mM]/;
+const reFunction = /\s*Function\s*\(([^)]*)\)/m;
+const reTooMuchRecursion = /too\smuch\srecursion/;
+
+var jsd = Cc["@mozilla.org/js/jsd/debugger-service;1"].getService(Ci.jsdIDebuggerService);
+
+// ************************************************************************************************
+
+Firebug.Debugger = Obj.extend(Firebug.ActivableModule,
+{
+ dispatchName: "debugger",
+ fbs: FBS, // access to firebug-service in chromebug under browser.xul.Dom.Firebug.Debugger.fbs
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ // Debugging
+
+ // moz
+ hasValidStack: function(context)
+ {
+ return context.stopped && context.currentFrame.isValid;
+ },
+
+ // on bti, method of stack
+ evaluate: function(js, context, scope) // TODO remote: move to backend, proxy to front
+ {
+ var frame = context.currentFrame;
+ if (!frame)
+ return;
+
+ frame.scope.refresh(); // XXX what's this do?
+
+ var result = {};
+ var scriptToEval = js;
+
+ // This seem to be safe; eval'ing a getter property in content that tries to
+ // be evil and get Components.classes results in a permission denied error.
+ var ok = frame.eval(scriptToEval, "", 1, result);
+
+ var value = Wrapper.unwrapIValue(result.value, Firebug.viewChrome);
+ if (ok)
+ return value;
+ else
+ throw value;
+ },
+
+ // on bti (not called in firebug source)
+ evaluateInCallingFrame: function(js, fileName, lineNo)
+ {
+ return this.halt(function evalInFrame(frame)
+ {
+ FBTrace.sysout("evaluateInCallingFrame " + js + " fileName: " +
+ frame.script.fileName + " stack: " + StackFrame.getJSDStackDump(frame));
+
+ var result = {};
+ var ok = frame.eval(js, fileName, lineNo, result);
+ var value = Wrapper.unwrapIValue(result.value, Firebug.viewChrome);
+
+ if (ok)
+ return value;
+ else
+ throw value;
+ });
+ },
+
+ _temporaryTransformSyntax: function(expr, win, context)
+ {
+ return Firebug.ClosureInspector.extendLanguageSyntax(expr, win, context);
+ },
+
+ /**
+ * Used by autocomplete in commandLine
+ * @return array of locally visible property names for each scope we are in
+ */
+ getCurrentFrameKeys: function(context) // TODO remote, on bti
+ {
+ // return is safe
+ var globals = Arr.keys(Wrapper.getContentView(context.getCurrentGlobal()));
+ if (context.currentFrame)
+ return this.getFrameKeys(context.currentFrame, globals);
+
+ return globals;
+ },
+
+ /**
+ * private to Debugger, returns list of strings
+ */
+ getFrameKeys: function(frame, names) // moz
+ {
+ var scope = frame.scope;
+ while (scope)
+ {
+ var listValue = {value: null}, lengthValue = {value: 0};
+ scope.getProperties(listValue, lengthValue);
+
+ for (var i=0; i<lengthValue.value; ++i)
+ {
+ var prop = listValue.value[i];
+ var name = Wrapper.unwrapIValue(prop.name);
+ names.push(name);
+ }
+
+ scope = scope.jsParent;
+ }
+
+ return names;
+ },
+
+ // @Deprecated see chrome.js
+ focusWatch: function(context) // TODO moved
+ {
+ return Firebug.chrome.focusWatch(context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Private to Debugger
+
+ // moz
+ beginInternalOperation: function() // stop debugger operations like breakOnErrors
+ {
+ var state = {breakOnErrors: Firebug.breakOnErrors};
+ Firebug.breakOnErrors = false;
+ return state;
+ },
+
+ // moz
+ endInternalOperation: function(state) // pass back the object given by beginInternalOperation
+ {
+ Firebug.breakOnErrors = state.breakOnErrors;
+ return true;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ // moz
+ halt: function(fnOfFrame)
+ {
+ if(FBTrace.DBG_BP)
+ FBTrace.sysout('debugger.halt '+fnOfFrame);
+
+ return FBS.halt(this, fnOfFrame);
+ },
+
+ // on bti
+ getCurrentStackTrace: function(context)
+ {
+ var trace = null;
+
+ Firebug.Debugger.halt(function(frame)
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("lib.getCurrentStackTrace frame:", frame);
+
+ trace = StackFrame.getCorrectedStackTrace(frame, context);
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("lib.getCurrentStackTrace trace:", trace.toString().split('\n'));
+ });
+
+ return trace;
+ },
+
+ // Used by FBTest
+ breakAsIfDebugger: function(frame)
+ {
+ // should return 'this' but also sets this.breakContext
+ var debuggr = FBS.findDebugger(frame);
+ FBS.breakIntoDebugger(debuggr, frame, 3);
+ },
+
+ // This URL prefix is used to skip frames from chrome URLs. Note that sometimes chrome URLs
+ // are used even in web pages, but only in rare cases so don't worry about it.
+ // Don't be specific like: chrome://firebug/ since frames coming from extensions e.g.
+ // chrome://firecookie/ wouldn't be skipped then.
+ breakNowURLPrefix: "chrome://",
+
+ // on bti
+ breakNow: function(context)
+ {
+ Firebug.Debugger.halt(function haltAnalysis(frame)
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.breakNow: frame "+frame.script.fileName+" context "+
+ context.getName(), StackFrame.getJSDStackDump(frame) );
+
+ for (; frame && frame.isValid; frame = frame.callingFrame)
+ {
+ var fileName = frame.script.fileName;
+ if (!fileName)
+ continue;
+ else if (Str.hasPrefix(fileName, Firebug.Debugger.breakNowURLPrefix))
+ continue;
+ else if (fileName.indexOf("/modules/firebug-") != -1)
+ continue;
+ else
+ break;
+ }
+
+ if (frame)
+ {
+ Firebug.Debugger.breakContext = context;
+
+ // I just made up a type that won't match TYPE_DEBUGGER_KEYWORD
+ Firebug.Debugger.onBreak(frame, "halt");
+ }
+ else
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.breakNow: no frame that not starting with "+
+ Firebug.Debugger.breakNowURLPrefix);
+ }
+ });
+ },
+
+ // moz, called by back end
+ stop: function(context, frame, type, rv)
+ {
+ if (context.stopped)
+ return RETURN_CONTINUE;
+
+ if (!this.isAlwaysEnabled())
+ return RETURN_CONTINUE;
+
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.stop "+context.getName()+" frame",frame);
+
+ // Do not break if the user is on another tab
+ if (Firefox.getCurrentURI().spec !== context.window.location.toString())
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ {
+ var current = Firefox.getCurrentURI().spec;
+ var prev = context.window.location.toString();
+ var locations = {current: current, context: prev};
+
+ FBTrace.sysout("debugger.stop ERROR break is not in current window ", locations);
+ }
+ return RETURN_CONTINUE;
+ }
+
+ context.stoppedFrame = frame; // the frame we stopped in, don't change this elsewhere.
+ context.currentFrame = frame; // the frame we show to user, depends on selection
+ context.stopped = true;
+ try
+ {
+ context.stoppedGlobal = Wrapper.wrapObject(
+ Wrapper.unwrapIValue(frame.executionContext.globalObject));
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("debugger.stop failed to get global scope");
+ }
+
+ var hookReturn = Firebug.connection.dispatch("onStop", [context, frame, type, rv]);
+ if ( hookReturn && hookReturn >= 0 )
+ {
+ delete context.stopped;
+ delete context.stoppedFrame;
+ delete context.stoppedGlobal;
+ delete context.currentFrame;
+
+ if (FBTrace.DBG_UI_LOOP)
+ {
+ FBTrace.sysout("debugger.stop extension vetoed stop with hookReturn " +
+ hookReturn);
+ }
+
+ return hookReturn;
+ }
+
+ try
+ {
+ this.freeze(context);
+
+ // If firebug hits a breakpoint in an event handler, which used setCapture
+ // the entire browser window is unclickable (see issue 5064)
+ context.window.document.releaseCapture();
+
+ // We will pause here until resume is called
+ var depth = FBS.enterNestedEventLoop({
+ onNest: Obj.bindFixed(this.startDebugging, this, context)
+ });
+
+ // For some reason we don't always end up here
+
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.stop, nesting depth:"+depth+" jsd.pauseDepth: "+
+ jsd.pauseDepth+" context:"+context.getName());
+ }
+ catch (exc)
+ {
+ // Just ignore exceptions that happened while in the nested loop
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("debugger exception in nested event loop: "+exc, exc);
+ else
+ Debug.ERROR("debugger exception in nested event loop: "+exc+"\n");
+ }
+ finally
+ {
+ this.thaw(context);
+ }
+
+ this.stopDebugging(context);
+
+ Firebug.connection.dispatch("onResume",[context]);
+
+ if (context.aborted)
+ {
+ delete context.aborted;
+ return RETURN_ABORT;
+ }
+ else if (Firebug.rerun)
+ {
+ setTimeout(function reExecute()
+ {
+ var rerun = context.savedRerun = Firebug.rerun;
+ delete Firebug.rerun;
+
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("Firebug.debugger.reExecute ", {rerun: rerun});
+
+ // fire the prestored script
+ function successConsoleFunction(result, context)
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("Firebug.debugger.reExecute success", result);
+ Firebug.connection.dispatch( "onRerunComplete", [true, result]);
+ }
+
+ function exceptionFunction(result, context)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Firebug.debugger.reExecute FAILED "+result, result);
+ Firebug.connection.dispatch( "onRerunComplete", [false, result]);
+ }
+
+ Firebug.CommandLine.evaluate("window._firebug.rerunFunction()", context, null,
+ context.window, successConsoleFunction, exceptionFunction);
+ });
+
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("Firebug.debugger.reExecute return "+RETURN_HOOK_ERROR);
+
+ return RETURN_HOOK_ERROR;
+ }
+ else
+ {
+ return RETURN_CONTINUE;
+ }
+ },
+
+ // on bti
+ rerun: function(context)
+ {
+ if(!context.stopped)
+ {
+ FBTrace.sysout("debugger.rerun FAILS: not stopped");
+ return;
+ }
+
+ if (Firebug.rerun)
+ {
+ FBTrace.sysout("debugger.rerun FAILS: Firebug.rerun in progress");
+ return;
+ }
+
+ Firebug.rerun = this.getRerun(context);
+
+ // now continue but abort the current call stack.
+ this.resume(context); // the Firebug.rerun will signal abort stack
+ },
+
+ // moz
+ getRerun: function(context)
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.rerun for "+context.getName());
+ try
+ {
+ // walk back to the oldest frame, but not top level
+ var frame = context.stoppedFrame;
+ while (frame.callingFrame && frame.callingFrame.script.functionName)
+ {
+ frame = frame.callingFrame;
+
+ if (frame.script.functionName == "_firebugRerun") // re-reRun
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("getRerun re-rerun ", context.savedRerun);
+ return context.savedRerun;
+ }
+ }
+
+ // In this oldest frame we have element.onclick(event) or window.foo()
+ // We want to cause the page to run this again after we abort this call stack.
+ function getStoreRerunInfoScript(fnName)
+ {
+ var str = "if (!window._firebug)window._firebug={};\n";
+ str += "window._firebug.rerunThis = this;\n";
+ str += "window._firebug.rerunArgs = [];\n";
+ str += "if (arguments && arguments.length) for (var i = 0; i < arguments.length; i++) window._firebug.rerunArgs.push(arguments[i]);\n";
+ str += "window._firebug.rerunFunctionName = "+fnName+";\n";
+ str +="window._firebug.rerunFunction = function _firebugRerun() { "+fnName+".apply(window._firebug.rerunThis, window._firebug.rerunArgs); }";
+ return str;
+ }
+
+ var rerun = {};
+
+ var fnName = StackFrame.getFunctionName(frame.script, context, frame, true);
+ rerun.script = getStoreRerunInfoScript(fnName);
+ var jsdFunctionName = frame.script.functionName;
+
+ // now run the script that stores the rerun info in the page
+ var result = {};
+ var ok = frame.eval(rerun.script, context.window.location + "/RerunScript", 1, result);
+
+ // If the eval goes off somewhere wacky, the frame may be invalid by this point.
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.rerun "+ok+" and result: "+result+" for "+context.getName(),
+ {result: result, rerun: rerun, functionName: jsdFunctionName});
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("debugger.rerun FAILS for "+context.getName()+" because "+exc,
+ {exc:exc, rerun: rerun});
+ }
+
+ return rerun;
+ },
+
+ // bti
+ resume: function(context)
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.resume, context.stopped:"+context.stopped+"\n");
+
+ // this will cause us to return to just after the enterNestedEventLoop call
+ var depth = FBS.exitNestedEventLoop();
+
+
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.resume, depth:"+depth+"\n");
+ },
+
+ // bti
+ abort: function(context)
+ {
+ if (context.stopped)
+ {
+ context.aborted = true;
+ this.thaw(context);
+ this.resume(context);
+ FBS.unPause(true);
+ }
+ },
+
+ // bti
+ stepOver: function(context)
+ {
+ if (!context.stoppedFrame || !context.stoppedFrame.isValid)
+ return;
+
+ FBS.step(STEP_OVER, context, this);
+ this.resume(context);
+ },
+
+ stepInto: function(context)
+ {
+ if (!context.stoppedFrame || !context.stoppedFrame.isValid)
+ return;
+
+ FBS.step(STEP_INTO, context, this);
+ this.resume(context);
+ },
+
+ stepOut: function(context)
+ {
+ if (!context.stoppedFrame || !context.stoppedFrame.isValid)
+ return;
+
+ FBS.step(STEP_OUT, context, this);
+ this.resume(context);
+ },
+
+ suspend: function(context)
+ {
+ if (context.stopped)
+ return;
+
+ FBS.suspend(this, context);
+ },
+
+ unSuspend: function(context)
+ {
+ FBS.stopStepping(null, context); // TODO per context
+ FBS.cancelBreakOnNextCall(this, context);
+ },
+
+ runUntil: function(context, compilationUnit, lineNo)
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("runUntil "+lineNo+" @"+compilationUnit);
+
+ if (!context.stoppedFrame || !context.stoppedFrame.isValid)
+ return;
+
+ var sourceFile = compilationUnit.sourceFile;
+ FBS.runUntil(compilationUnit.sourceFile, lineNo, context.stoppedFrame, this);
+ this.resume(context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // moz
+
+ freeze: function(context)
+ {
+ var executionContext = context.stoppedFrame.executionContext;
+ try {
+ executionContext.scriptsEnabled = false;
+ this.suppressEventHandling(context);
+ context.isFrozen = true;
+
+ // https://developer.mozilla.org/en/XUL_Tutorial/Focus_and_Selection#Getting_the_currently_focused_element
+ if (context.window && context.window.document.commandDispatcher)
+ {
+ context.saveFocus = context.window.document.commandDispatcher.focusedElement;
+ if (context.saveFocus && !context.discardBlurEvents)
+ {
+ context.discardBlurEvents = function blurDiscarder(event)
+ {
+ if (!context.saveFocus)
+ {
+ Events.removeEventListener(context.window, "blur",
+ context.discardBlurEvents, true);
+ delete context.discardBlurEvents;
+ }
+
+ if (FBTrace.DBG_UI_LOOP)
+ {
+ FBTrace.sysout("debugger.freeze discard blur event " +
+ context.saveFocus + " while focus is " +
+ context.window.document.commandDispatcher.focusedElement,
+ event);
+ }
+
+ event.preventDefault();
+ event.stopPropagation();
+ },
+
+ Events.addEventListener(context.window, "blur",
+ context.discardBlurEvents, true);
+ }
+ }
+
+ if (FBTrace.DBG_UI_LOOP)
+ {
+ FBTrace.sysout("debugger.freeze context.saveFocus "+context.saveFocus,
+ context.saveFocus);
+
+ FBTrace.sysout("debugger.freeze try to disable scripts "+
+ (context.eventSuppressor?"and events":"but not events")+" in "+
+ context.getName()+" executionContext.tag "+executionContext.tag+
+ ".scriptsEnabled: "+executionContext.scriptsEnabled);
+ }
+ }
+ catch (exc)
+ {
+ // This attribute is only valid for contexts which implement nsIScriptContext.
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.freeze, freeze exception " + exc + " in " +
+ context.getName(), exc);
+ }
+ },
+
+ suppressEventHandling: function(context)
+ {
+ if (context.window instanceof Ci.nsIInterfaceRequestor)
+ {
+ context.eventSuppressor = context.window.getInterface(Ci.nsIDOMWindowUtils);
+ if (context.eventSuppressor)
+ context.eventSuppressor.suppressEventHandling(true);
+ }
+ },
+
+ thaw: function(context)
+ {
+ try {
+ if (context.isFrozen)
+ delete context.isFrozen;
+ else
+ return; // bail, we did not freeze this context
+
+ var executionContext = context.stoppedFrame.executionContext;
+ if (executionContext.isValid)
+ {
+ this.unsuppressEventHandling(context);
+
+ // Before we release JS, put the focus back
+ if (context.saveFocus)
+ {
+ context.window.focus();
+ context.saveFocus.focus();
+ delete context.saveFocus;
+
+ if (FBTrace.DBG_UI_LOOP)
+ {
+ var nowFocused = context.window.document.commandDispatcher ?
+ context.window.document.commandDispatcher.focusedElement : null;
+ FBTrace.sysout("debugger.thaw context.saveFocus "+context.saveFocus+
+ " vs "+nowFocused, context.saveFocus);
+ }
+ }
+
+ executionContext.scriptsEnabled = true;
+ }
+ else
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.thaw "+executionContext.tag+
+ " executionContext is not valid");
+ }
+
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.thaw try to enable scripts " +
+ (context.eventSuppressor?"with events suppressed":"events enabled")+
+ " in "+context.getName()+" executionContext.tag "+executionContext.tag+
+ ".scriptsEnabled: "+executionContext.scriptsEnabled);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.stop, scriptsEnabled = true exception:", exc);
+ }
+ },
+
+ unsuppressEventHandling: function(context)
+ {
+ if (context.eventSuppressor)
+ {
+ context.eventSuppressor.suppressEventHandling(false);
+ delete context.eventSuppressor;
+ }
+ },
+
+ // on bti
+ toggleFreezeWindow: function(context)
+ {
+ // then we need to break into debugger to get the executionContext
+ if (!context.stopped)
+ {
+ Firebug.Debugger.halt(function grabContext(frame)
+ {
+ context.stoppedFrame = frame;
+ Firebug.Debugger.doToggleFreezeWindow(context);
+ delete context.stoppedFrame;
+ });
+
+ Firebug.Debugger.suspend(context);
+ }
+ else
+ {
+ Firebug.Debugger.doToggleFreezeWindow(context);
+ }
+ },
+
+ // moz
+ doToggleFreezeWindow: function(context)
+ {
+ if (context.isFrozen)
+ Firebug.Debugger.unsuppressEventHandling(context);
+ else
+ Firebug.Debugger.suppressEventHandling(context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Breakpoints
+
+ setBreakpoint: function(sourceFile, lineNo) // TODO: arg should be url
+ {
+ if (sourceFile instanceof CompilationUnit)
+ sourceFile = sourceFile.sourceFile; // see HACK in tabContext
+ FBS.setBreakpoint(sourceFile, lineNo, null, Firebug.Debugger);
+ },
+
+ clearBreakpoint: function(sourceFile, lineNo)
+ {
+ if (sourceFile instanceof CompilationUnit)
+ sourceFile = sourceFile.sourceFile; // see HACK in tabContext
+ FBS.clearBreakpoint(sourceFile.href, lineNo);
+ },
+
+ setErrorBreakpoint: function(compilationUnit, line)
+ {
+ FBS.setErrorBreakpoint(compilationUnit.sourceFile, line, Firebug.Debugger);
+ },
+
+ clearErrorBreakpoint: function(compilationUnit, line)
+ {
+ FBS.clearErrorBreakpoint(compilationUnit.getURL(), line, Firebug.Debugger);
+ },
+
+ // Called by bti browser.clearAllBreakpoints
+ clearAllBreakpoints: function(context)
+ {
+ if (context)
+ {
+ var units = context.getAllCompilationUnits();
+ FBS.clearAllBreakpoints(units, Firebug.Debugger);
+ FBS.clearErrorBreakpoints(units, Firebug.Debugger);
+ }
+ else
+ {
+ // null means all urls
+ FBS.enumerateBreakpoints(null, {call: function(url, lineNo, bp)
+ {
+ // skip breakpoints of other debuggers.
+ if (bp.debuggerName !== Firebug.Debugger.debuggerName)
+ return;
+
+ FBS.clearBreakpoint(url, lineNo);
+ }});
+
+ // and also error breakpoints
+ FBS.enumerateErrorBreakpoints(null, {call: function(url, lineNo)
+ {
+ FBS.clearErrorBreakpoint(url, lineNo, Firebug.Debugger);
+ }});
+ }
+ },
+
+ enableAllBreakpoints: function(context)
+ {
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("enableAllBreakpoints sourceFileMap:", context.sourceFileMap);
+
+ for (var url in context.sourceFileMap)
+ {
+ FBS.enumerateBreakpoints(url, {call: function(url, lineNo)
+ {
+ FBS.enableBreakpoint(url, lineNo);
+ }});
+ }
+ },
+
+ disableAllBreakpoints: function(context)
+ {
+ for (var url in context.sourceFileMap)
+ {
+ FBS.enumerateBreakpoints(url, {call: function(url, lineNo)
+ {
+ FBS.disableBreakpoint(url, lineNo);
+ }});
+ }
+ },
+
+ getBreakpointCount: function(context)
+ {
+ var count = 0;
+ for (var url in context.sourceFileMap)
+ {
+ FBS.enumerateBreakpoints(url,
+ {
+ call: function(url, lineNo)
+ {
+ ++count;
+ }
+ });
+
+ FBS.enumerateErrorBreakpoints(url,
+ {
+ call: function(url, lineNo)
+ {
+ ++count;
+ }
+ });
+ }
+ return count;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Debugging and monitoring
+
+ traceAll: function(context)
+ {
+ FBS.traceAll(Firebug.SourceFile.sourceURLsAsArray(context), this);
+ },
+
+ untraceAll: function(context)
+ {
+ FBS.untraceAll(this);
+ },
+
+ monitorFunction: function(fn, mode)
+ {
+ if (typeof(fn) == "function" || fn instanceof Function)
+ {
+ var script = Firebug.SourceFile.findScriptForFunctionInContext(
+ Firebug.currentContext, fn);
+
+ if (script)
+ {
+ this.monitorScript(fn, script, mode);
+ }
+ else
+ {
+ Firebug.Console.logFormatted(
+ ["Firebug unable to locate jsdIScript for function", fn],
+ Firebug.currentContext, "info");
+ }
+ }
+ else
+ {
+ Firebug.Console.logFormatted(
+ ["Firebug.Debugger.monitorFunction requires a function", fn],
+ Firebug.currentContext, "info");
+ }
+ },
+
+ unmonitorFunction: function(fn, mode)
+ {
+ if (typeof(fn) == "function" || fn instanceof Function)
+ {
+ var script = Firebug.SourceFile.findScriptForFunctionInContext(
+ Firebug.currentContext, fn);
+
+ if (script)
+ this.unmonitorScript(fn, script, mode);
+ }
+ },
+
+ monitorScript: function(fn, script, mode)
+ {
+ var scriptInfo = Firebug.SourceFile.getSourceFileAndLineByScript(
+ Firebug.currentContext, script);
+
+ if (scriptInfo)
+ {
+ if (mode == "debug")
+ Firebug.Debugger.setBreakpoint(scriptInfo.sourceFile, scriptInfo.lineNo);
+ else if (mode == "monitor")
+ FBS.monitor(scriptInfo.sourceFile, scriptInfo.lineNo, Firebug.Debugger);
+ }
+ },
+
+ unmonitorScript: function(fn, script, mode)
+ {
+ var scriptInfo = Firebug.SourceFile.getSourceFileAndLineByScript(
+ Firebug.currentContext, script);
+
+ if (scriptInfo)
+ {
+ if (mode == "debug")
+ this.clearBreakpoint(scriptInfo.sourceFile, scriptInfo.lineNo);
+ else if (mode == "monitor")
+ FBS.unmonitor(scriptInfo.sourceFile.href, scriptInfo.lineNo);
+ }
+ },
+
+ traceCalls: function(context, fn)
+ {
+ if (typeof(fn) == "function" || fn instanceof Function)
+ {
+ var script = Firebug.SourceFile.findScriptForFunctionInContext(context, fn);
+ if (script)
+ this.traceScriptCalls(context, script);
+ else
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("debugger.traceCalls no script found for "+fn, fn);
+ }
+ }
+ },
+
+ untraceCalls: function(context, fn)
+ {
+ if (typeof(fn) == "function" || fn instanceof Function)
+ {
+ var script = Firebug.SourceFile.findScriptForFunctionInContext(context, fn);
+ if (script)
+ this.untraceScriptCalls(context, script);
+ }
+ },
+
+ traceScriptCalls: function(context, script)
+ {
+ var scriptInfo = Firebug.SourceFile.getSourceFileAndLineByScript(context, script);
+ if (scriptInfo)
+ FBS.traceCalls(scriptInfo.sourceFile, scriptInfo.lineNo, Firebug.Debugger);
+ },
+
+ untraceScriptCalls: function(context, script)
+ {
+ var scriptInfo = Firebug.SourceFile.getSourceFileAndLineByScript(context, script);
+ if (scriptInfo)
+ FBS.untraceCalls(scriptInfo.sourceFile, scriptInfo.lineNo, Firebug.Debugger);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // UI Stuff
+
+ /*
+ * Called when a nestedEventLoop begins
+ */
+ startDebugging: function(context)
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("Firebug.Debugger startDebugging enter context.stopped:" +
+ context.stopped + " for context: " + context.getName());
+
+ try
+ {
+ FBS.lockDebugger();
+
+ context.executingSourceFile =
+ Firebug.SourceFile.getSourceFileByScript(context, context.stoppedFrame.script);
+
+ // bail out, we don't want the user stuck in debug with out source.
+ if (!context.executingSourceFile)
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("startDebugging resuming, no sourceFile for "+
+ context.stoppedFrame.script.fileName,
+ context.stoppedFrame.script.functionSource);
+
+ this.resume(context);
+ return;
+ }
+
+ // Make Firebug.currentContext = context and sync the UI
+ if (context != Firebug.currentContext)
+ Firebug.selectContext(context);
+
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Resuming debugger: error during debugging loop: "+exc, exc);
+
+ Firebug.Console.log("Resuming debugger: error during debugging loop: "+exc);
+
+ this.resume(context);
+ }
+
+ var frame = StackFrame.getStackFrame(context.stoppedFrame, context);
+ Firebug.connection.dispatch( "onStartDebugging", [context, frame]);
+
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("startDebugging exit context.stopped:" + context.stopped +
+ " for context: " + context.getName());
+ },
+
+ /**
+ * Called in the main event loop, from jsd, after we have exited the nested event loop
+ */
+ stopDebugging: function(context)
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("stopDebugging enter context: " + context.getName());
+
+ try
+ {
+ FBS.unlockDebugger();
+
+ // If the user reloads the page while the debugger is stopped, then
+ // the current context will be destroyed just before
+ if (context && !context.aborted)
+ {
+ delete context.stopped;
+ delete context.stoppedFrame;
+ delete context.stoppedGlobal;
+ delete context.currentFrame;
+ context.executingSourceFile = null;
+ delete context.breakLineNumber;
+
+ Firebug.connection.dispatch( "onStopDebugging", [context]);
+
+ }
+ else
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.stopDebugging else "+context.getName()+" "+
+ Win.safeGetWindowLocation(context.window));
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.stopDebugging FAILS", exc);
+
+ // If the window is closed while the debugger is stopped,
+ // then all hell will break loose here
+ Debug.ERROR(exc);
+ }
+ },
+
+ suspendFirebug: function()
+ {
+ Firebug.suspendFirebug();
+ },
+
+ resumeFirebug: function()
+ {
+ Firebug.resumeFirebug();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ supportsWindow: function(win)
+ {
+ if (!this.isAlwaysEnabled())
+ return false;
+
+ var context = ((win && Firebug.TabWatcher) ?
+ Firebug.TabWatcher.getContextByWindow(win) : null);
+
+ this.breakContext = context;
+ return !!context;
+ },
+
+ // This is called from fbs for almost all fbs operations
+ supportsGlobal: function(frameWin)
+ {
+ var context = ( (frameWin && Firebug.TabWatcher) ?
+ Firebug.TabWatcher.getContextByWindow(frameWin) : null);
+
+ if (!context)
+ return false;
+
+ // otherwise we cannot be called.
+ context.jsDebuggerCalledUs = true;
+
+ this.breakContext = context;
+ //FBTrace.sysout("debugger.js this.breakContext "+this.breakContext.getName());
+ return true;
+ },
+
+ onLock: function(state)
+ {
+ // XXXjoe For now, trying to see if it's ok to have multiple contexts
+ // debugging simultaneously - otherwise we need this
+ //if (this.context != this.debugContext)
+ {
+ // XXXjoe Disable step/continue buttons
+ }
+ },
+
+ onBreak: function(frame, type)
+ {
+ try
+ {
+ var context = this.breakContext;
+
+ // If the script panel is disabled, Firebug can't break (issue 4290).
+ if (!Firebug.PanelActivation.isPanelEnabled("script"))
+ return RETURN_CONTINUE;
+
+ if (FBTrace.DBG_BP || (!context && FBTrace.DBG_FBS_ERRORS))
+ FBTrace.sysout("debugger.onBreak breakContext: " +
+ (context ? context.getName() : " none!"), StackFrame.getJSDStackDump(frame));
+
+ delete this.breakContext;
+
+ if (!context)
+ return RETURN_CONTINUE;
+
+ if (type == TYPE_DEBUGGER_KEYWORD)
+ {
+ var trace = Wrapper.getContentView(context.window)._firebugStackTrace;
+ if (trace == "console-tracer")
+ return this.debuggerTracer(context, frame);
+ else
+ this.setDebuggerKeywordCause(context, frame);
+ if (!context.breakingCause)
+ return RETURN_CONTINUE;
+ }
+
+ return this.stop(context, frame, type);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS && FBTrace.DBG_BP)
+ FBTrace.sysout("debugger.onBreak FAILS", exc);
+ throw exc;
+ }
+ },
+
+ debuggerTracer: function(context, frame)
+ {
+ var trace = StackFrame.getCorrectedStackTrace(frame, context);
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("debugger.firebugDebuggerTracer corrected trace.frames "+
+ trace.frames.length, trace.frames);
+
+ if (trace)
+ {
+ // drop the firebugDebuggerTracer and reorder
+ //trace.frames = trace.frames.slice(1);
+
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("debugger.firebugDebuggerTracer dropped tracer trace.frames "+
+ trace.frames.length, trace.frames);
+
+ // drop one frame see attachConsoleInjector
+ //trace.frames = trace.frames.slice(1);
+ Firebug.Console.log(trace, context, "stackTrace");
+ }
+
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("debugger.onBreak "+(trace?"debugger trace":" debugger no trace!"));
+
+ return RETURN_CONTINUE;
+ },
+
+ /**
+ * for |debugger;| keyword offer the skip/continue dialog (optionally?)
+ */
+ setDebuggerKeywordCause: function(context, frame)
+ {
+ var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, frame.script);
+ if (!sourceFile)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("debugger.setDebuggerKeywordCause FAILS, no sourceFile for "+
+ frame.script.tag+"@"+frame.script.fileName+" in "+context.getName());
+ return;
+ }
+
+ var analyzer = sourceFile.getScriptAnalyzer(frame.script);
+ var lineNo = analyzer.getSourceLineFromFrame(context, frame);
+
+ context.breakingCause =
+ {
+ title: Locale.$STR("debugger keyword"),
+ skipActionTooltip: Locale.$STR("firebug.bon.tooltip.disableDebuggerKeyword2"),
+ message: Locale.$STR("firebug.bon.cause.disableDebuggerKeyword2"),
+ skipAction: function addSkipperAndGo()
+ {
+ // a breakpoint that never hits, but prevents debugger keyword
+ // (see FBS.onDebugger as well)
+ var bp = Firebug.Debugger.setBreakpoint(sourceFile, lineNo);
+ FBS.disableBreakpoint(sourceFile.href, lineNo);
+
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("debugger.onBreak converted to disabled bp "+sourceFile.href+
+ "@"+lineNo+" tag: "+frame.script.tag, bp);
+
+ Firebug.Debugger.resume(context);
+ },
+ };
+ },
+
+ onThrow: function(frame, rv)
+ {
+ // onThrow is called for throw, for catches that do not succeed,
+ // and for functions that exceptions pass through.
+ var context = this.breakContext;
+ delete this.breakContext;
+
+ if (!context)
+ {
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("debugger.onThrow, no context, try to get from frame\n");
+ context = this.getContextByFrame(frame);
+ }
+
+ if (FBTrace.DBG_ERRORLOG)
+ {
+ var lines = [];
+ var frames = StackFrame.getCorrectedStackTrace(frame, context).frames;
+ for (var i=0; i<frames.length; i++)
+ lines.push(frames[i].line + ", " + frames[i].fn);
+
+ FBTrace.sysout("debugger.onThrow context:" + (context ? context.getName() :
+ "undefined") + ", " + lines.join("; "), frames);
+ }
+
+ if (!context)
+ return RETURN_CONTINUE_THROW;
+
+ if (!FBS.showStackTrace)
+ return RETURN_CONTINUE_THROW;
+
+ try
+ {
+ var realThrow = this.isRealThrow(frame, context);
+ if (realThrow)
+ {
+ context.thrownStackTrace = StackFrame.getCorrectedStackTrace(frame, context);
+
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("debugger.onThrow reset context.thrownStackTrace",
+ context.thrownStackTrace.frames);
+
+ // xxxHonza: this could fix Issue 3276: Track Throw/Catch is not working
+ /*if (FBS.trackThrowCatch)
+ {
+ var object = {
+ errorMessage: errorObject.value.stringValue,
+ message: errorObject.value.stringValue,
+ sourceName: "",
+ lineNumber: -1,
+ sourceLine: "",
+ category: "javascript",
+ flags: 2,
+ exceptionFlag: 2,
+ };
+
+ Firebug.Errors.logScriptError(context, object, false);
+
+ context.thrownStackTrace = StackFrame.getCorrectedStackTrace(frame, context);
+ }*/
+ }
+ else
+ {
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("debugger.onThrow not a real throw");
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("onThrow FAILS: " + exc, exc);
+ }
+
+ if (Firebug.connection.dispatch("onThrow",[context, frame, rv]))
+ return this.stop(context, frame, TYPE_THROW, rv);
+
+ return RETURN_CONTINUE_THROW;
+ },
+
+ isRealThrow: function(mozFrame, context)
+ {
+ // Determine whether the throw was a real one, or just a rethrow of the
+ // last exception (probably automatically inserted - which it seems
+ // happens for every function an exception passes through - but it
+ // could also be manual because there is no simple way to tell them
+ // apart). A rethrow is detected when the current stack exists at the
+ // end of the previous exception's, except that the current top-most
+ // stack frame only has to be in the same function to match.
+ if (!context.thrownStackTrace)
+ return true;
+
+ var trace = context.thrownStackTrace.frames;
+ var findMozFrame = mozFrame.callingFrame, againstFrame = null;
+ if (findMozFrame)
+ {
+ // Verify that the previous exception includes this frame's call
+ // site somewhere.
+ var findFrameSig = findMozFrame.script.tag + "." + findMozFrame.pc;
+ for (var i=1; i<trace.length; i++)
+ {
+ var preFrameSig = trace[i].signature();
+
+ if (FBTrace.DBG_ERRORS && FBTrace.DBG_STACK)
+ {
+ FBTrace.sysout("debugger.isRealThrow " + findFrameSig + "==" +
+ preFrameSig);
+ }
+
+ if (findFrameSig === preFrameSig)
+ {
+ againstFrame = trace[i-1];
+ break;
+ }
+ }
+
+ if (!againstFrame)
+ return true;
+ }
+ else
+ {
+ againstFrame = trace[trace.length-1];
+ }
+
+ // Verify that the current frame's function location matches what the
+ // exception has above the matched frame.
+ if (mozFrame.script !== againstFrame.script)
+ return true;
+
+ return false;
+ },
+
+ onMonitorScript: function(frame)
+ {
+ var context = this.breakContext;
+ delete this.breakContext;
+
+ if (!context)
+ context = this.getContextByFrame(frame);
+ if (!context)
+ return RETURN_CONTINUE;
+
+ frame = StackFrame.getStackFrame(frame, context);
+
+ Firebug.connection.dispatch("onMonitorScript",[context, frame]);
+ },
+
+ onFunctionCall: function(context, frame, depth, calling)
+ {
+ if (!context)
+ context = this.getContextByFrame(frame);
+
+ if (!context)
+ return RETURN_CONTINUE;
+
+ frame = StackFrame.getStackFrame(frame, context);
+
+ Firebug.connection.dispatch("onFunctionCall",[context, frame, depth, calling]);
+
+ return context; // returned as first arg on next call from same trace
+ },
+
+ onError: function(frame, error, hitErrorBreakpoint)
+ {
+ var context = this.breakContext;
+ delete this.breakContext;
+
+ // If the script panel is disabled, Firebug can't break on error.
+ if (!Firebug.PanelActivation.isPanelEnabled("script"))
+ return 0;
+
+ try
+ {
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("debugger.onError: "+error.errorMessage+" in "+
+ (context?context.getName():"no context"), error);
+
+ if (reTooMuchRecursion.test(error.errorMessage))
+ frame = FBS.discardRecursionFrames(frame);
+
+ Firebug.errorStackTrace = StackFrame.getCorrectedStackTrace(frame, context);
+
+ if (FBTrace.DBG_ERRORLOG)
+ FBTrace.sysout("debugger.onError; break=" + Firebug.breakOnErrors +
+ ", errorStackTrace:", Firebug.errorStackTrace);
+
+ delete context.breakingCause;
+
+ if (Firebug.breakOnErrors || hitErrorBreakpoint)
+ {
+ var eventOrigin = Wrapper.unwrapIValue(frame.executionContext.globalObject);
+ if (!eventOrigin)
+ return 0;
+
+ // Check if the eventOrigin (window) comes from this context.
+ var eventOriginIndex = -1;
+ for (var i=0; i<context.windows.length; i++)
+ {
+ if (Wrapper.getContentView(context.windows[i]) == eventOrigin) {
+ eventOriginIndex = i;
+ break;
+ }
+ }
+
+ // Bail out if the event that lead the error is not cause by code in this context.
+ if (eventOriginIndex < 0)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("debugger.onError; error is not from this context: (" +
+ eventOriginIndex + ") " + frame.script.tag+"@"+frame.script.fileName);
+ return 0;
+ }
+
+ var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, frame.script);
+ if (!sourceFile)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("debugger.breakon Errors no sourceFile for "+
+ frame.script.tag+"@"+frame.script.fileName);
+ return;
+ }
+
+ var analyzer = sourceFile.getScriptAnalyzer(frame.script);
+ var lineNo = analyzer.getSourceLineFromFrame(context, frame);
+
+ var doBreak = true;
+ FBS.enumerateBreakpoints(sourceFile.href, {call: function(url, line, props, scripts)
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("debugger.breakon Errors bp "+url+"@"+line+" scripts "+
+ (scripts?scripts.length:"none"));
+
+ if (line === lineNo)
+ doBreak = false;
+ }});
+
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("debugger.breakon Errors " + doBreak + " for " +
+ sourceFile.href + "@" + lineNo);
+
+ if (doBreak)
+ {
+ context.breakingCause =
+ {
+ title: Locale.$STR("Break on Error"),
+ message: error.message,
+ copyAction: Obj.bindFixed(FirebugReps.ErrorMessage.copyError,
+ FirebugReps.ErrorMessage, error),
+
+ skipAction: function addSkipperAndGo()
+ {
+ // a breakpoint that never hits, but prevents BON for errors
+ var bp = Firebug.Debugger.setBreakpoint(sourceFile, lineNo);
+ FBS.disableBreakpoint(sourceFile.href, lineNo);
+
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("debugger.breakon Errors set "+sourceFile.href+"@"+
+ lineNo+" tag: "+frame.script.tag, bp);
+
+ Firebug.Debugger.resume(context);
+ },
+ };
+ }
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("debugger.onError getCorrectedStackTrace FAILED: "+exc, exc);
+ }
+
+ var hookReturn = Firebug.connection.dispatch("onError",[context, frame, error]);
+
+ if (!context.breakingCause)
+ return 0;
+
+ if (Firebug.breakOnErrors)
+ {
+ // Switch of Break on Next tab lightning.
+ //var panel = context.getPanel("console", true);
+ //Firebug.Breakpoint.updatePanelTab(panel, false);
+
+ return -1; // break
+ }
+
+ if (hookReturn)
+ return hookReturn;
+
+ return -2; /* let firebug service decide to break or not */
+ },
+
+ onUncaughtException: function(errorInfo)
+ {
+ var context = this.breakContext;
+ delete this.breakContext;
+
+ Firebug.Errors.logScriptError(context, errorInfo, false);
+ return -2;
+ },
+
+ onXULScriptCreated: function(frame, outerScript, innerScriptEnumerator)
+ {
+ try
+ {
+ var context = this.breakContext;
+ delete this.breakContext;
+
+ var sourceFile = context.sourceFileMap[outerScript.fileName];
+ if (sourceFile)
+ {
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("debugger.onXULScriptCreated reuse sourcefile="+
+ sourceFile.toString()+" -> "+context.getName()+" ("+context.uid+")");
+
+ Firebug.SourceFile.addScriptsToSourceFile(sourceFile, null, innerScriptEnumerator);
+ }
+ else
+ {
+ sourceFile = new Firebug.XULSourceFile(outerScript.fileName, outerScript,
+ innerScriptEnumerator);
+ }
+
+ this.watchSourceFile(context, sourceFile);
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("debugger.onXULScriptCreated script.fileName="+outerScript.fileName+
+ " in "+context.getName()+" "+sourceFile);
+
+ Firebug.connection.dispatch("onXULScriptCreated",[context, frame, sourceFile.href]);
+ return sourceFile;
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_TOPLEVEL || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("onXULScriptCreated FaILS "+e, e);
+ }
+ },
+
+ onEvalScriptCreated: function(frame, outerScript, innerScripts)
+ {
+ try
+ {
+ if (FBTrace.DBG_EVAL)
+ FBTrace.sysout("debugger.onEvalLevelScript script.fileName=" +
+ outerScript.fileName);
+
+ var context = this.breakContext;
+ delete this.breakContext;
+
+ var sourceFile = this.getEvalLevelSourceFile(frame, context, innerScripts);
+
+ if (FBTrace.DBG_EVAL)
+ FBTrace.sysout("debugger.onEvalScriptCreated url="+sourceFile.href,
+ StackFrame.getCorrectedStackTrace(frame, context));
+
+ Firebug.connection.dispatch("onEvalScriptCreated",[context, frame, sourceFile.href]);
+ return sourceFile;
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_EVAL || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("onEvalScriptCreated FaILS "+e, e);
+ }
+ },
+
+ onEventScriptCreated: function(frame, outerScript, innerScripts)
+ {
+ if (FBTrace.DBG_EVENTS)
+ FBTrace.sysout("debugger.onEventScriptCreated script.fileName=" +
+ outerScript.fileName, {outerScript: outerScript, script: frame.script});
+
+ var context = this.breakContext;
+ delete this.breakContext;
+
+ var script = frame.script;
+ var creatorURL = Url.normalizeURL(frame.script.fileName);
+ var innerScriptArray = [];
+
+ try
+ {
+ var source = script.functionSource;
+
+ while (innerScripts.hasMoreElements())
+ {
+ var inner = innerScripts.getNext();
+ source += "\n"+inner.functionSource;
+ innerScriptArray.push(inner);
+ }
+ }
+ catch (exc)
+ {
+ /*Bug 426692 */
+ var source = creatorURL + "/"+Obj.getUniqueId();
+ }
+
+ var lines = Str.splitLines(source);
+
+ var urlDescribed = this.getDynamicURL(context,
+ Url.normalizeURL(frame.script.fileName), lines, "event");
+
+ var handlerName = outerScript.functionName;
+ if (handlerName)
+ var url = urlDescribed.href + '/' + handlerName;
+ else
+ var url = urlDescribed.href;
+
+ context.sourceCache.invalidate(url);
+ context.sourceCache.storeSplitLines(url, lines);
+
+ var sourceFile = new Firebug.EventSourceFile(url, frame.script, "event:"+
+ script.functionName+"."+script.tag, lines, new ArrayEnumerator(innerScriptArray));
+
+ this.watchSourceFile(context, sourceFile);
+
+ if (FBTrace.DBG_EVENTS)
+ FBTrace.sysout("debugger.onEventScriptCreated url="+sourceFile.href+"\n");
+
+ if (FBTrace.DBG_EVENTS)
+ FBTrace.sysout("debugger.onEventScriptCreated sourceFileMap:", context.sourceFileMap);
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("debugger.onEventScriptCreated sourcefile="+sourceFile.toString()+
+ " -> "+context.getName()+"\n");
+
+ Firebug.connection.dispatch("onEventScriptCreated",[context, frame, url]);
+ return sourceFile;
+ },
+
+ // We just compiled a bunch of JS, eg a script tag in HTML. We are about to run the outerScript.
+ onTopLevelScriptCreated: function(frame, outerScript, innerScripts)
+ {
+ if (FBTrace.DBG_TOPLEVEL)
+ FBTrace.sysout("debugger("+this.debuggerName+").onTopLevelScriptCreated script.fileName="+
+ outerScript.fileName+"\n");
+
+ var context = this.breakContext;
+ delete this.breakContext;
+
+ // This is our only chance to get the linetable for the outerScript
+ // since it will run and be GC next.
+ var script = frame.script;
+ var url = Url.normalizeURL(script.fileName);
+
+ if (FBTrace.DBG_TOPLEVEL)
+ FBTrace.sysout("debugger.onTopLevelScriptCreated frame.script.tag="+frame.script.tag+
+ " has url="+url);
+
+ var isInline = false;
+
+ /* The primary purpose here was to deal with http://code.google.com/p/fbug/issues/detail?id=2912
+ * This approach could be applied to inline scripts, so I'll leave the code here until we decide.
+ Win.iterateWindows(context.window, function isInlineScriptTag(win)
+ {
+ var location = Win.safeGetWindowLocation(win);
+ if (location === url)
+ {
+ isInline = true;
+ return isInline;
+ }
+ });
+ */
+
+ if (FBTrace.DBG_TOPLEVEL)
+ FBTrace.sysout("debugger.onTopLevelScriptCreated has inLine:"+isInline+" url="+url);
+
+ if (isInline) // never true see above
+ {
+ var href = url +"/"+context.dynamicURLIndex++;
+ sourceFile = new Firebug.ScriptTagAppendSourceFile(href, script,
+ script.lineExtent, innerScripts);
+ this.watchSourceFile(context, sourceFile);
+ context.pendingScriptTagSourceFile = sourceFile;
+ }
+ else
+ {
+ var sourceFile = context.sourceFileMap[url];
+
+ // Multiple script tags in HTML or duplicate .js file names.
+ if (sourceFile && (sourceFile instanceof Firebug.TopLevelSourceFile))
+ {
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("debugger.onTopLevelScriptCreated reuse sourcefile="+
+ sourceFile.toString()+" -> "+context.getName()+" ("+context.uid+")");
+
+ if (!sourceFile.outerScript || !sourceFile.outerScript.isValid)
+ sourceFile.outerScript = outerScript;
+
+ Firebug.SourceFile.addScriptsToSourceFile(sourceFile, outerScript,
+ innerScripts);
+ }
+ else
+ {
+ sourceFile = new Firebug.TopLevelSourceFile(url, script, script.lineExtent,
+ innerScripts);
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("debugger.onTopLevelScriptCreated create sourcefile="+
+ sourceFile.toString()+" -> "+context.getName()+" ("+context.uid+")");
+ }
+
+ // If a script is inserted multiple times in HTML, we still need to make
+ // sure that meta info is updated (e.g. sourceFileByTag in the context)
+ // (see issue 4880)
+ this.watchSourceFile(context, sourceFile);
+ }
+
+ Firebug.connection.dispatch("onTopLevelScriptCreated",[context, frame, sourceFile.href]);
+ return sourceFile;
+ },
+
+ getContextByFrame: function(frame)
+ {
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("debugger.getContextByFrame");
+
+ var win = FBS.getOutermostScope(frame);
+ return win ? Firebug.TabWatcher.getContextByWindow(win) : null;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ watchSourceFile: function(context, sourceFile)
+ {
+ context.addSourceFile(sourceFile); // store in the context and notify listeners
+ //FBS.watchSourceFile(sourceFile); // tell the service to watch this file
+
+ // Update the Script panel, this script could have been loaded asynchronously
+ // and perhaps is the only one that should be displayed (otherwise the panel
+ // would show: No Javascript on this page). See issue 4932
+ var panel = context.getPanel("script", true);
+ if (panel)
+ panel.context.invalidatePanels("script");
+ },
+
+ unwatchSourceFile: function(context, sourceFile)
+ {
+ //FBS.unwatchSourceFile(sourceFile);
+ context.removeSourceFile(sourceFile);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onToggleBreakpoint: function(url, lineNo, isSet, props)
+ {
+ if (props.debuggerName != this.debuggerName) // then not for us
+ {
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("debugger(" + this.debuggerName +
+ ").onToggleBreakpoint ignoring toggle for " +
+ props.debuggerName + " target " + lineNo + "@" + url);
+ return;
+ }
+
+ var found = false;
+ for (var i = 0; i < Firebug.TabWatcher.contexts.length; ++i)
+ {
+ var context = Firebug.TabWatcher.contexts[i];
+ var sourceFile = context.sourceFileMap[url];
+ if (sourceFile)
+ {
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("debugger(" + this.debuggerName +
+ ").onToggleBreakpoint found context " +
+ context.getName());
+
+ if (!isSet && context.dynamicURLhasBP)
+ this.checkDynamicURLhasBP(context);
+
+ var panel = context.getPanel("script", true);
+ if (!panel)
+ continue;
+
+ panel.context.invalidatePanels("breakpoints");
+
+ var sourceBox = panel.getSourceBoxByURL(url);
+ if (!sourceBox)
+ {
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout("debugger("+this.debuggerName+").onToggleBreakpoint context "+
+ i+" script panel no sourcebox for url: "+url, panel.sourceBoxes);
+ continue;
+ }
+
+ var row = sourceBox.getLineNode(lineNo);
+ if (FBTrace.DBG_BP)
+ FBTrace.sysout(i+") onToggleBreakpoint getLineNode="+row+" lineNo="+lineNo+
+ " context:"+context.getName());
+
+ if (!row)
+ continue; // we *should* only be called for lines in the viewport...
+
+ row.setAttribute("breakpoint", isSet);
+ if (isSet && props)
+ {
+ row.setAttribute("condition", props.condition ? "true" : "false");
+ row.breakpointCondition = props.condition ? props.condition : null;
+
+ if (props.condition) // issue 1371
+ {
+ var watchPanel = this.ableWatchSidePanel(context);
+
+ if (watchPanel)
+ {
+ watchPanel.addWatch(props.condition);
+ }
+ else
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("onToggleBreakpoint no watch panel in context "+
+ context.getName());
+ }
+ }
+ row.setAttribute("disabledBreakpoint", new Boolean(props.disabled).toString());
+ }
+ else
+ {
+ row.removeAttribute("condition");
+ if (props.condition)
+ {
+ var watchPanel = this.ableWatchSidePanel(context);
+ watchPanel.removeWatch(props.condition);
+ watchPanel.rebuild();
+ }
+ row.removeAttribute("disabledBreakpoint");
+ }
+ Firebug.connection.dispatch( "onToggleBreakpoint", [context, url, lineNo, isSet]);
+ found = true;
+ continue;
+ }
+ }
+
+ if (FBTrace.DBG_BP && !found)
+ FBTrace.sysout("debugger("+this.debuggerName+").onToggleBreakpoint no find context");
+ },
+
+ // xxxHonza, xxxjjb: duplicated in script.js, does it belong here?
+ // But onToggleBreakpoint needs it.
+ ableWatchSidePanel: function(context)
+ {
+ // TODO if (commandline is not active, then we should not show the new watch feature)
+ var watchPanel = context.getPanel("watches", true);
+ if (watchPanel)
+ return watchPanel;
+ },
+
+ onToggleErrorBreakpoint: function(url, lineNo, isSet)
+ {
+ for (var i = 0; i < Firebug.TabWatcher.contexts.length; ++i)
+ {
+ var context = Firebug.TabWatcher.contexts[i];
+ var panel = context.getPanel("console", true);
+ if (panel)
+ {
+ panel.context.invalidatePanels("breakpoints");
+
+ for (var row = panel.panelNode.firstChild; row; row = row.nextSibling)
+ {
+ var errorMessage = row.getElementsByClassName("objectBox-errorMessage");
+ if (!errorMessage.length)
+ continue;
+
+ errorMessage = errorMessage[0];
+ var error = errorMessage.repObject;
+ if (error instanceof FirebugReps.ErrorMessageObj && error.href == url &&
+ error.lineNo == lineNo)
+ {
+ if (isSet)
+ Css.setClass(errorMessage, "breakForError");
+ else
+ Css.removeClass(errorMessage, "breakForError");
+
+ Firebug.connection.dispatch( "onToggleErrorBreakpoint",
+ [context, url, lineNo, isSet]);
+ }
+ }
+ }
+ }
+ },
+
+ onToggleMonitor: function(url, lineNo, isSet)
+ {
+ for (var i = 0; i < Firebug.TabWatcher.contexts.length; ++i)
+ {
+ var panel = Firebug.TabWatcher.contexts[i].getPanel("console", true);
+ if (panel)
+ panel.context.invalidatePanels("breakpoints");
+ }
+ },
+
+ checkDynamicURLhasBP: function (context)
+ {
+ context.dynamicURLhasBP = false;
+ for (var url in context.sourceFileMap)
+ {
+ var sourceFile = context.sourceFileMap[url];
+ if (sourceFile.isEval() || sourceFile.isEvent())
+ {
+ FBS.enumerateBreakpoints(url, {call: function setDynamicIfSet(url, lineNo)
+ {
+ context.dynamicURLhasBP = true;
+ }});
+ }
+ if (context.dynamicURLhasBP)
+ break;
+ }
+ if (FBTrace.DBG_SOURCEFILES || FBTrace.DBG_BP)
+ FBTrace.sysout("debugger.checkDynamicURLhasBP "+context.dynamicURLhasBP);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // XXXjjb this code is not called, because I found the scheme for detecting Function
+ // too complex. I'm leaving it here to remind us that we need to support new Function().
+ onFunctionConstructor: function(frame, ctor_script)
+ {
+ try
+ {
+ var context = this.breakContext;
+ delete this.breakContext;
+
+ var sourceFile = this.createSourceFileForFunctionConstructor(frame, ctor_script, context);
+
+ if (FBTrace.DBG_EVAL)
+ {
+ FBTrace.sysout("debugger.onFunctionConstructor tag=" + ctor_script.tag +
+ " url=" + sourceFile.href);
+
+ FBTrace.sysout(StackFrame.traceToString(
+ StackFrame.getCorrectedStackTrace(frame, context)));
+ }
+
+ Firebug.connection.dispatch("onFunctionConstructor",
+ [context, frame, ctor_script, sourceFile.href]);
+
+ return sourceFile.href;
+ }
+ catch(exc)
+ {
+ Debug.ERROR("debugger.onFunctionConstructor failed: "+exc);
+
+ if (FBTrace.DBG_EVAL)
+ FBTrace.sysout("debugger.onFunctionConstructor failed: ",exc);
+
+ return null;
+ }
+
+ },
+
+ createSourceFileForFunctionConstructor: function(caller_frame, ctor_script, context)
+ {
+ var ctor_expr = null; // this.getConstructorExpression(caller_frame, context);
+ if (FBTrace.DBG_EVAL)
+ FBTrace.sysout("createSourceFileForFunctionConstructor ctor_expr:"+ctor_expr+"\n");
+
+ var source;
+ if (ctor_expr)
+ {
+ source = this.getEvalBody(caller_frame,
+ "lib.createSourceFileForFunctionConstructor ctor_expr", 1, ctor_expr);
+ }
+ else
+ {
+ source = " bah createSourceFileForFunctionConstructor"; //ctor_script.functionSource;
+ }
+
+ if (FBTrace.DBG_EVAL)
+ FBTrace.sysout("createSourceFileForFunctionConstructor source:"+source);
+
+ var url = this.getDynamicURL(context, Url.normalizeURL(caller_frame.script.fileName),
+ source, "Function");
+
+ var lines = context.sourceCache.store(url.href, source);
+ var sourceFile = new Firebug.FunctionConstructorSourceFile(url, caller_frame.script,
+ ctor_expr, lines.length);
+
+ this.watchSourceFile(context, sourceFile);
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("debugger.onNewFunction sourcefile="+sourceFile.toString()+" -> "+
+ context.getName()+"\n");
+
+ return sourceFile;
+ },
+
+ getConstructorExpression: function(caller_frame, context)
+ {
+ // We believe we are just after the ctor call.
+ var decompiled_lineno = getLineAtPC(caller_frame, context);
+ if (FBTrace.DBG_EVAL)
+ FBTrace.sysout("debugger.getConstructoreExpression decompiled_lineno:"+
+ decompiled_lineno+"\n");
+
+ // TODO place in sourceCache?
+ var decompiled_lines = Str.splitLines(caller_frame.script.functionSource);
+ if (FBTrace.DBG_EVAL)
+ FBTrace.sysout("debugger.getConstructoreExpression decompiled_lines:",decompiled_lines);
+
+ var candidate_line = decompiled_lines[decompiled_lineno - 1]; // zero origin
+ if (FBTrace.DBG_EVAL)
+ FBTrace.sysout("debugger.getConstructoreExpression candidate_line:" + candidate_line);
+
+ if (candidate_line && candidate_line != null)
+ {
+ var m = reFunction.exec(candidate_line);
+ if (m)
+ var arguments = m[1]; // TODO Lame: need to count parens, with escapes and quotes
+ }
+
+ if (FBTrace.DBG_EVAL)
+ FBTrace.sysout("debugger.getConstructoreExpression arguments:"+arguments+"\n");
+
+ if (arguments) // need to break down commas and get last arg.
+ {
+ var lastComma = arguments.lastIndexOf(',');
+ return arguments.substring(lastComma+1); // if -1 then 0
+ }
+
+ return null;
+ },
+
+ // end of guilt trip
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ // Called by debugger.onEval() to store eval() source.
+ // The frame has the blank-function-name script and it is not the top frame.
+ // The frame.script.fileName is given by spidermonkey as file of the first eval().
+ // The frame.script.baseLineNumber is given by spidermonkey as the line of the first eval() call
+ // The source that contains the eval() call is the source of our caller.
+ // If our caller is a file, the source of our caller is at frame.script.baseLineNumber
+ // If our caller is an eval, the source of our caller is TODO Check Test Case
+ getEvalLevelSourceFile: function(frame, context, innerScripts)
+ {
+ var eval_expr = this.getEvalExpression(frame, context);
+
+ if (FBTrace.DBG_EVAL)
+ FBTrace.sysout("getEvalLevelSourceFile eval_expr:"+eval_expr);
+
+ if (eval_expr)
+ {
+ var source = this.getEvalBody(frame, "lib.getEvalLevelSourceFile.getEvalBody",
+ 1, eval_expr);
+ var mapType = PCMAP_SOURCETEXT;
+ }
+ else
+ {
+ var source = frame.script.functionSource; // XXXms - possible crash on OSX FF2
+ var mapType = PCMAP_PRETTYPRINT;
+ }
+
+ var lines = Str.splitLines(source);
+
+ if (FBTrace.DBG_EVAL)
+ FBTrace.sysout("getEvalLevelSourceFile "+lines.length+ "lines, mapType:"+
+ ((mapType==PCMAP_SOURCETEXT)?"SOURCE":"PRETTY")+" source:"+source);
+
+ var url = this.getDynamicURL(context, Url.normalizeURL(frame.script.fileName),
+ lines, "eval");
+
+ context.sourceCache.invalidate(url.href);
+ context.sourceCache.storeSplitLines(url.href, lines);
+
+ var sourceFile = new Firebug.EvalLevelSourceFile(url, frame.script, eval_expr, lines,
+ mapType, innerScripts);
+
+ this.watchSourceFile(context, sourceFile);
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("debugger.getEvalLevelSourceFile sourcefile="+sourceFile.toString()+
+ " -> "+context.getName()+"\n");
+
+ return sourceFile;
+ },
+
+ getDynamicURL: function(context, callerURL, lines, kind)
+ {
+ var url = this.getURLFromLastLine(context, lines);
+ if (url)
+ return url;
+
+ var url = this.getSequentialURL(context, callerURL, kind);
+ if (url)
+ return url;
+
+ var url = this.getURLFromMD5(callerURL, lines, kind);
+ if (url)
+ return url;
+
+ var url = this.getDataURLForScript(callerURL, lines);
+ if (url)
+ return url;
+
+ return url;
+ },
+
+ getURLFromLastLine: function(context, lines)
+ {
+ var url = null;
+ // Ignores any trailing whitespace in |source|
+ const reURIinComment = /\/\/[@#]\ssourceURL=\s*(\S*?)\s*$/m;
+ var m = reURIinComment.exec(lines[lines.length - 1]);
+
+ if (m)
+ {
+ // add context info to the sourceURL so eval'd sources are grouped
+ // correctly in the source file list
+ if (m[1] && m[1].indexOf('://') == -1)
+ {
+ var loc = context.window.location;
+ if (m[1].charAt(0) != '/') m[1] = '/'+m[1]; // prepend leading slash if necessary
+ m[1] = loc.protocol + '//' + loc.host + m[1]; // prepend protocol and host
+ }
+
+ var href = new String(m[1]);
+ href = Url.normalizeURL(href);
+
+ url = {href: href, kind: "source"};
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("debugger.getURLFromLastLine "+url.href, url);
+ }
+ else
+ {
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("debugger.getURLFromLastLine no match"+lines[lines.length - 1]);
+ }
+
+ return url;
+ },
+
+ getSequentialURL: function(context, callerURL, kind)
+ {
+ var url = null;
+ if (!context.dynamicURLhasBP)
+ {
+ // If no breakpoints live in dynamic code then we don't need to compare
+ // the previous and reloaded source. In that case let's use a cheap Url.
+ var href = new String(callerURL + (kind ? "/"+kind+"/" : "/nokind/")+"seq/"
+ +(context.dynamicURLIndex++));
+ url = {href: href, kind: "seq"};
+
+ if (FBTrace.DBG_SOURCEFILES || isNaN(context.dynamicURLIndex))
+ FBTrace.sysout("debugger.getSequentialURL context:"+context.getName()+
+ " url:"+url.href+" index: "+context.dynamicURLIndex, url);
+ }
+ return url;
+ },
+
+ getURLFromMD5: function(callerURL, lines, kind)
+ {
+ this.hash_service.init(this.nsICryptoHash.MD5);
+ var source = lines.join('\n'); // we could double loop, would that be any faster?
+ byteArray = [];
+ for (var j = 0; j < source.length; j++)
+ {
+ byteArray.push( source.charCodeAt(j) );
+ }
+ this.hash_service.update(byteArray, byteArray.length);
+ var hash = this.hash_service.finish(true);
+
+ // encoding the hash should be ok, it should be information-preserving?
+ // Or at least reversable?
+ var href= new String(callerURL + (kind ? "/"+kind+"/" : "/nokind/")+"MD5/" +
+ encodeURIComponent(hash));
+ url = {href: href, kind: "MD5"};
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("debugger.getURLFromMD5 "+url.href, url);
+
+ return url;
+ },
+
+ getDataURLForScript: function(callerURL, lines)
+ {
+ var url = null;
+ var href = null;
+ if (!source)
+ {
+ href = "eval."+script.tag;
+ }
+ else
+ {
+ // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
+ href = new String("data:text/javascript;");
+ href += "fileName="+encodeURIComponent(callerURL);
+ var source = lines.join('\n');
+ //url += ";"+ "baseLineNumber="+encodeURIComponent(script.baseLineNumber) +
+ href +="," + encodeURIComponent(source);
+ }
+
+ url = {href:href, kind:"data"};
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("debugger.getDataURLForScript "+url.href, url);
+
+ return url;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getEvalExpression: function(frame, context)
+ {
+ var expr = this.getEvalExpressionFromEval(frame, context); // eval in eval
+
+ return (expr) ? expr : this.getEvalExpressionFromFile(Url.normalizeURL(frame.script.fileName),
+ frame.script.baseLineNumber, context);
+ },
+
+ getEvalExpressionFromFile: function(url, lineNo, context)
+ {
+ if (context && context.sourceCache)
+ {
+ var in_url = Url.reJavascript.exec(url);
+ if (in_url)
+ {
+ var m = reEval.exec(in_url[1]);
+ if (m)
+ return m[1];
+ else
+ return null;
+ }
+
+ var htm = reHTM.exec(url);
+ if (htm)
+ lineNo = lineNo + 1; // embedded scripts seem to be off by one? XXXjjb heuristic
+
+ // Walk backwards from the first line in the function until we find the line which
+ // matches the pattern above, which is the eval call
+ var line = "";
+ for (var i = 0; i < 3; ++i)
+ {
+ line = context.sourceCache.getLine(url, lineNo-i) + line;
+ if (line && line != null)
+ {
+ var m = reEval.exec(line);
+ if (m)
+ return m[1];
+ }
+ }
+ }
+ return null;
+ },
+
+ getEvalExpressionFromEval: function(frame, context)
+ {
+ var callingFrame = frame.callingFrame;
+ var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, callingFrame.script);
+ if (sourceFile)
+ {
+ if (FBTrace.DBG_EVAL)
+ {
+ FBTrace.sysout("debugger.getEvalExpressionFromEval sourceFile.href=" +
+ sourceFile.href);
+
+ FBTrace.sysout("debugger.getEvalExpressionFromEval callingFrame.pc=" +
+ callingFrame.pc + " callingFrame.script.baseLineNumber=" +
+ callingFrame.script.baseLineNumber);
+ }
+
+ var lineNo = callingFrame.script.pcToLine(callingFrame.pc, PCMAP_SOURCETEXT);
+ lineNo = lineNo - callingFrame.script.baseLineNumber + 1;
+ var url = sourceFile.href;
+
+ if (FBTrace.DBG_EVAL && !context.sourceCache)
+ FBTrace.sysout("debugger.getEvalExpressionFromEval context.sourceCache null??\n");
+
+ // Walk backwards from the first line in the function until we find the line which
+ // matches the pattern above, which is the eval call
+ var line = "";
+ for (var i = 0; i < 3; ++i)
+ {
+ line = context.sourceCache.getLine(url, lineNo-i) + line;
+ if (FBTrace.DBG_EVAL)
+ FBTrace.sysout("debugger.getEvalExpressionFromEval lineNo-i="+lineNo+"-"+i+"="+
+ (lineNo-i)+" line:"+line+"\n");
+
+ if (line && line != null)
+ {
+ var m = reEval.exec(line);
+ if (m)
+ return m[1]; // TODO Lame: need to count parens, with escapes and quotes
+ }
+ }
+ }
+ return null;
+ },
+
+ getEvalBody: function(frame, asName, asLine, evalExpr)
+ {
+ if (evalExpr)
+ {
+ var result_src = {};
+ var evalThis = "new String("+evalExpr+");";
+ var evaled = frame.eval(evalThis, asName, asLine, result_src);
+
+ if (evaled)
+ {
+ var src = Wrapper.unwrapIValue(result_src.value);
+ return src+"";
+ }
+ else
+ {
+ // Either we failed, or this was a window.eval() call
+ var source;
+
+ if (frame.callingFrame && !this.avoidRecursing)
+ {
+ // Try the caller, in case we are in window.eval() where the scope is global
+ this.avoidRecursing = true;
+ source = this.getEvalBody(frame.callingFrame, asName, asLine, evalExpr);
+ delete this.avoidRecursing;
+
+ if (FBTrace.DBG_EVAL)
+ FBTrace.sysout("callingFrame used to get source ", source);
+
+ return source;
+ }
+
+ if(evalExpr == "function(p,a,c,k,e,r")
+ source = "/packer/ JS compressor detected";
+ else
+ source = frame.script.functionSource;
+
+ return source+" /* !eval("+evalThis+")) */";
+ }
+ }
+ else
+ {
+ return frame.script.functionSource; // XXXms - possible crash on OSX FF2
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Module
+
+ initialize: function()
+ {
+ Firebug.clientID = this.registerClient(Firebug.JSDebugClient);
+ this.nsICryptoHash = Components.interfaces["nsICryptoHash"];
+
+ this.debuggerName = window.location.href +"- at -"+Obj.getUniqueId();
+ this.toString = function() { return this.debuggerName; };
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("debugger.initialize "+ this.debuggerName+" Firebug.clientID "+
+ Firebug.clientID);
+
+ this.hash_service = Xpcom.CCSV("@mozilla.org/security/hash;1", "nsICryptoHash");
+
+
+ this.wrappedJSObject = this; // how we communicate with fbs
+
+ this.onFunctionCall = Obj.bind(this.onFunctionCall, this);
+
+ Firebug.ActivableModule.initialize.apply(this, arguments);
+ },
+
+ shutdown: function()
+ {
+ //Firebug.connection.unregisterTool(this.asTool);
+
+ Firebug.ActivableModule.destroy.apply(this, arguments);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // BTI
+
+ toolName: "script",
+
+ addListener: function(listener)
+ {
+ Firebug.connection.addListener(listener);
+ },
+
+ removeListener: function(listener)
+ {
+ Firebug.connection.removeListener(listener);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /**
+ * per-XUL window registration; this method just allows us to keep fbs in this file.
+ * @param clientAPI an object that implements functions called by fbs for clients.
+ */
+ registerClient: function(clientAPI)
+ {
+ return FBS.registerClient(clientAPI);
+ },
+
+ unregisterClient: function(clientAPI)
+ {
+ FBS.unregisterClient(clientAPI);
+ },
+
+ enable: function()
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("debugger.Firebug.Debugger.enable; " + this.enabled);
+ },
+
+ disable: function()
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("debugger.Firebug.Debugger.disable; " + this.enabled);
+ },
+
+ selfObserver: {}, // empty listener, registered as observer while Script panel is enabled.
+
+ initializeUI: function()
+ {
+ Firebug.ActivableModule.initializeUI.apply(this, arguments);
+ this.obeyPrefs();
+ this.filterButton = Firebug.chrome.$("fbScriptFilterMenu"); // TODO move to script.js
+ this.filterMenuUpdate();
+ if (FBS.isJSDActive()) // notify frontend of current state
+ Firebug.JSDebugClient.onJSDActivate(true, 'Firebug.Debugger.initializeUI');
+ },
+
+ obeyPrefs: function()
+ {
+ var name = "script.enableSites";
+ var value = Firebug.Options.get("script.enableSites");
+ this.updateOption(name, value);
+ },
+
+ initContext: function(context, persistedState)
+ {
+ if (persistedState)
+ context.dynamicURLhasBP = persistedState.dynamicURLhasBP;
+
+ context.dynamicURLIndex = 1; // any dynamic urls need to be unique to the context.
+
+ context.jsDebuggerCalledUs = false;
+
+ Firebug.ActivableModule.initContext.apply(this, arguments);
+ },
+
+ showContext: function(browser, context)
+ {
+ // then context was not active during load
+ if (context && context.loaded && !context.onLoadWindowContent)
+ this.updateScriptFiles(context);
+ },
+
+ // scan windows for 'script' tags (only if debugger is not enabled)
+ updateScriptFiles: function(context)
+ {
+ function addFile(url, scriptTagNumber, dependentURL)
+ {
+ var sourceFile = new Firebug.ScriptTagSourceFile(context, url, scriptTagNumber);
+ sourceFile.dependentURL = dependentURL;
+ context.addSourceFile(sourceFile);
+ return true;
+ }
+
+ Win.iterateWindows(context.window, function updateEachWin(win)
+ {
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("updateScriptFiles Win.iterateWindows: "+win.location.href+
+ " documentElement: "+win.document.documentElement);
+
+ if (!win.document.documentElement)
+ return;
+
+ var url = Url.normalizeURL(win.location.href);
+
+ if (url)
+ {
+ if (!context.sourceFileMap.hasOwnProperty(url))
+ {
+ var URLOnly = new Firebug.NoScriptSourceFile(context, url);
+ context.addSourceFile(URLOnly);
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("updateScriptFiles created NoScriptSourceFile for URL:" +
+ url, URLOnly);
+ }
+ }
+
+ var baseUrl = win.location.href;
+ var bases = win.document.documentElement.getElementsByTagName("base");
+ if (bases && bases[0])
+ {
+ baseUrl = bases[0].href;
+ }
+
+ var scripts = win.document.documentElement.getElementsByTagName("script");
+ for (var i = 0; i < scripts.length; ++i)
+ {
+ var scriptSrc = scripts[i].getAttribute('src'); // for XUL use attribute
+ var url = scriptSrc ? Url.absoluteURL(scriptSrc, baseUrl) : win.location.href;
+ url = Url.normalizeURL(url ? url : win.location.href);
+ var added = addFile(url, i, (scriptSrc?win.location.href:null));
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("updateScriptFiles "+(scriptSrc?"inclusion":"inline")+
+ " script #"+i+"/"+scripts.length+(added?" adding ":" readded ")+url+
+ " to context="+context.getName()+"\n");
+ }
+ });
+
+ if (FBTrace.DBG_SOURCEFILES)
+ {
+ FBTrace.sysout("updateScriptFiles sourcefiles:",
+ Firebug.SourceFile.sourceFilesAsArray(context.sourceFileMap));
+ }
+ },
+
+ loadedContext: function(context)
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("loadedContext needs to trigger watchpanel updates");
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("debugger("+this.debuggerName+").loadedContext enabled on load: "+
+ context.onLoadWindowContent+" context.sourceFileMap", context.sourceFileMap);
+ },
+
+ // clean up the source file map in case the frame is being reloaded.
+ unwatchWindow: function(context, win)
+ {
+ var scriptTags = win.document.getElementsByTagName("script");
+ for (var i = 0; i < scriptTags.length; i++)
+ {
+ var src = scriptTags[i].getAttribute("src");
+ src = src ? src : Win.safeGetWindowLocation(win);
+
+ // If the src is not in the source map, try to use absolute url.
+ if (!context.sourceFileMap[src])
+ src = Url.absoluteURL(src, win.location.href);
+
+ delete context.sourceFileMap[src];
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("debugger.unWatchWindow; delete sourceFileMap entry for " + src);
+ }
+ if (scriptTags.length > 0)
+ context.invalidatePanels('script');
+ },
+
+ destroyContext: function(context, persistedState)
+ {
+ Firebug.ActivableModule.destroyContext.apply(this, arguments);
+
+ if (context.stopped)
+ {
+ // the abort will call resume, but the nestedEventLoop would continue the load...
+ this.abort(context);
+ }
+
+ if (persistedState)
+ {
+ if (context.dynamicURLhasBP)
+ persistedState.dynamicURLhasBP = context.dynamicURLhasBP;
+ else
+ delete persistedState.dynamicURLhasBP;
+ }
+ },
+
+ updateOption: function(name, value)
+ {
+ if (name == "breakOnErrors")
+ Firebug.chrome.getElementById("cmd_firebug_breakOnErrors").setAttribute("checked", value);
+ },
+
+ getObjectByURL: function(context, url)
+ {
+ var sourceFile = Firebug.SourceFile.getSourceFileByHref(url, context);
+ if (sourceFile)
+ return new SourceLink.SourceLink(sourceFile.href, 0, "js");
+ },
+
+ shutdown: function()
+ {
+ this.unregisterClient(Firebug.JSDebugClient);
+ FBS.unregisterDebugger(this);
+ },
+
+ /**
+ * 1.3.1 safe for multiple calls
+ */
+ registerDebugger: function()
+ {
+ // Do not activate JSD on shutdown.
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=756267#c12
+ if (Firebug.isShutdown)
+ return;
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("registerDebugger");
+
+ // this will eventually set 'jsd' on the statusIcon
+ var check = FBS.registerDebugger(this);
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("debugger.registerDebugger "+check+" debuggers");
+ },
+
+ unregisterDebugger: function() // 1.3.1 safe for multiple calls
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("debugger.unregisterDebugger");
+
+ // stay registered if we are profiling across a reload.
+ if (Firebug.Profiler && Firebug.Profiler.isProfiling())
+ return;
+
+ var check = FBS.unregisterDebugger(this);
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("debugger.unregisterDebugger: "+check+" debuggers");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends ActivableModule
+
+ onObserverChange: function(observer)
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ {
+ var names = [];
+ this.observers.forEach(function(ob){names.push(ob.name || ob.dispatchName || ob.toolName);});
+
+ FBTrace.sysout("debugger.onObserverChange "+this.hasObservers()+" "+
+ this.observers.length+": "+names.join(','), this.observers);
+ }
+
+ if (this.hasObservers())
+ this.activateDebugger();
+ else
+ this.deactivateDebugger();
+ },
+
+ activateDebugger: function()
+ {
+ this.registerDebugger();
+
+ // If jsd is already active, we'll notify true; else we'll get another event
+ var isActive = FBS.isJSDActive();
+ if (isActive)
+ Firebug.JSDebugClient.onJSDActivate(true, 'activated already');
+
+ if (FBTrace.DBG_PANELS || FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("debugger.activateDebugger requested; activated already? "+isActive);
+ },
+
+ deactivateDebugger: function()
+ {
+ this.unregisterDebugger();
+
+ var isActive = FBS.isJSDActive();
+ if (!isActive)
+ Firebug.JSDebugClient.onJSDDeactivate(false, 'deactivate');
+
+ if (FBTrace.DBG_PANELS || FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("debugger.deactivate");
+ },
+
+ onSuspendingFirebug: function()
+ {
+ var anyStopped = Firebug.TabWatcher.iterateContexts(function isAnyStopped(context)
+ {
+ return context.stopped;
+ });
+
+ return anyStopped;
+ },
+
+ onSuspendFirebug: function()
+ {
+ if (!Firebug.Debugger.isAlwaysEnabled())
+ return;
+
+ // can be called multiple times.
+ var paused = FBS.pause(this.debuggerName);
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("debugger.onSuspendFirebug paused: "+paused+" isAlwaysEnabled " +
+ Firebug.Debugger.isAlwaysEnabled());
+
+ // JSD activation is not per browser-tab, so FBS.pause can return 'not-paused' when
+ // Firebug is activated on another tab.
+ // The start-button should somehow reflect that JSD can be still active (even if
+ // Firebug is suspended for the current tab).
+ if (!paused) // then we failed to suspend, undo
+ return true;
+
+ return false;
+ },
+
+ onResumeFirebug: function()
+ {
+ if (!Firebug.Debugger.isAlwaysEnabled())
+ return;
+
+ var unpaused = FBS.unPause();
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("debugger.onResumeFirebug unpaused: "+unpaused+" isAlwaysEnabled " +
+ Firebug.Debugger.isAlwaysEnabled());
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Menu in toolbar.
+
+ onScriptFilterMenuTooltipShowing: function(tooltip, context)
+ {
+ if (FBTrace.DBG_OPTIONS)
+ FBTrace.sysout("onScriptFilterMenuTooltipShowing not implemented");
+ },
+
+ onScriptFilterMenuCommand: function(event, context)
+ {
+ var menu = event.target;
+ Firebug.Options.set("scriptsFilter", menu.value);
+ Firebug.Debugger.filterMenuUpdate();
+ },
+
+ menuFullLabel:
+ {
+ "static": Locale.$STR("ScriptsFilterStatic"),
+ evals: Locale.$STR("ScriptsFilterEval"),
+ events: Locale.$STR("ScriptsFilterEvent"),
+ all: Locale.$STR("ScriptsFilterAll"),
+ },
+
+ menuShortLabel:
+ {
+ "static": Locale.$STR("ScriptsFilterStaticShort"),
+ evals: Locale.$STR("ScriptsFilterEvalShort"),
+ events: Locale.$STR("ScriptsFilterEventShort"),
+ all: Locale.$STR("ScriptsFilterAllShort"),
+ },
+
+ onScriptFilterMenuPopupShowing: function(menu, context)
+ {
+ if (this.menuTooltip)
+ this.menuTooltip.fbEnabled = false;
+
+ var items = menu.getElementsByTagName("menuitem");
+ var value = this.filterButton.value;
+
+ for (var i=0; i<items.length; i++)
+ {
+ var option = items[i].value;
+ if (!option)
+ continue;
+
+ if (option == value)
+ items[i].setAttribute("checked", "true");
+
+ items[i].label = Firebug.Debugger.menuFullLabel[option];
+ }
+
+ return true;
+ },
+
+ onScriptFilterMenuPopupHiding: function(tooltip, context)
+ {
+ if (this.menuTooltip)
+ this.menuTooltip.fbEnabled = true;
+
+ return true;
+ },
+
+ filterMenuUpdate: function()
+ {
+ var value = Firebug.Options.get("scriptsFilter");
+ this.filterButton.value = value;
+ this.filterButton.label = this.menuShortLabel[value];
+ this.filterButton.removeAttribute("disabled");
+ this.filterButton.setAttribute("value", value);
+ if (FBTrace.DBG_OPTIONS)
+ FBTrace.sysout("debugger.filterMenuUpdate value: "+value+" label:"+
+ this.filterButton.label+'\n');
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Options
+
+ resetAllOptions: function()
+ {
+ Firebug.TabWatcher.iterateContexts( function clearBPs(context)
+ {
+ Firebug.Debugger.clearAllBreakpoints(context);
+ });
+
+ var breakpointStore = FBS.getBreakpointStore();
+ breakpointStore.clear(true);
+ }
+});
+
+// ********************************************************************************************* //
+
+Firebug.Debugger.Breakpoint = function(name, href, lineNumber, checked, sourceLine, isFuture)
+{
+ this.name = name;
+ this.href = href;
+ this.lineNumber = lineNumber;
+ this.checked = checked;
+ this.sourceLine = sourceLine;
+ this.isFuture = isFuture;
+};
+
+// ********************************************************************************************* //
+
+Firebug.DebuggerListener =
+{
+ onStop: function(context, frame, type, rv)
+ {
+ },
+
+ onResume: function(context)
+ {
+ },
+
+ onThrow: function(context, frame, rv)
+ {
+ return false; /* continue throw */
+ },
+
+ onError: function(context, frame, error)
+ {
+ },
+
+ onEventScriptCreated: function(context, frame, url, sourceFile)
+ {
+ },
+
+ onTopLevelScriptCreated: function(context, frame, url, sourceFile)
+ {
+ },
+
+ onEvalScriptCreated: function(context, frame, url, sourceFile)
+ {
+ },
+
+ onFunctionConstructor: function(context, frame, ctor_script, url, sourceFile)
+ {
+ }
+};
+
+// ********************************************************************************************* //
+// Signals from fbs, passed along to our listeners
+
+Firebug.JSDebugClient =
+{
+ onJSDActivate: function(active, fromMsg)
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("Firebug.JSDebugClient onJSDActivate "+active+" "+fromMsg);
+ Firebug.connection.dispatch("onActivateTool", ["script", active]);
+ },
+
+ onJSDDeactivate: function(active, fromMsg)
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("Firebug.JSDebugClient onJSDDeactivate "+active+" "+fromMsg);
+ Firebug.connection.dispatch("onActivateTool", ["script", active]);
+ },
+
+ onPauseJSDRequested: function(rejection, debuggerName)
+ {
+ // A debugger client (an instance of Firebug.JSDebugClient) asked to pause JSD.
+ // Note that there is one instance of Firebug.JSDebugClient per browser (XUL) window.
+ // If the debugger is 'on' in this browser window JSD and the request comes from
+ // another window (debugger) JSD should *not* be paused (see issue 4609).
+ // So, reject only if the request comes from another browser window and Firebug
+ // is resumed in this window.
+ if (debuggerName != Firebug.Debugger.debuggerName && !Firebug.getSuspended())
+ {
+ rejection.push(true);
+
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Firebug.JSDebugClient onPauseJSDRequested rejected to suspend; " +
+ "Current debugger: " + Firebug.Debugger.debuggerName + ", requestor debugger: " +
+ debuggerName);
+ }
+
+ //Firebug.connection.dispatch("onPauseJSDRequested", arguments);
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("Firebug.JSDebugClient onPauseJSDRequested rejection: " +
+ rejection.length + ", jsDebuggerOn: " + Firebug.jsDebuggerOn);
+ }
+};
+
+// Recursively look for obj in container using array of visited objects
+function findObjectPropertyPath(containerName, container, obj, visited)
+{
+ if (!container || !obj || !visited)
+ return false;
+
+ var referents = [];
+ visited.push(container);
+ for (var p in container)
+ {
+ if (container.hasOwnProperty(p))
+ {
+ var candidate = null;
+ try
+ {
+ candidate = container[p];
+ }
+ catch(exc)
+ {
+ // eg sessionStorage
+ }
+
+ if (candidate === obj) // then we found a property pointing to our obj
+ {
+ referents.push(new Referent(containerName, container, p, obj));
+ }
+ else // recurse
+ {
+ var candidateType = typeof (candidate);
+ if (candidateType === 'object' || candidateType === 'function')
+ {
+ if (visited.indexOf(candidate) === -1)
+ {
+ var refsInChildren = findObjectPropertyPath(p, candidate, obj, visited);
+ if (refsInChildren.length)
+ {
+ // As we unwind the recursion we tack on layers of the path.
+ for (var i = 0; i < refsInChildren.length; i++)
+ {
+ var refInChildren = refsInChildren[i];
+ refInChildren.prependPath(containerName, container);
+ referents.push(refInChildren);
+
+ FBTrace.sysout(" Did prependPath with p "+p+" gave "+
+ referents[referents.length - 1].getObjectPathExpression(),
+ referents[referents.length - 1]);
+ }
+ }
+ }
+ //else we already looked at that object.
+ } // else the object has no properties
+ }
+ }
+ }
+
+ FBTrace.sysout(" Returning "+referents.length+ " referents", referents);
+
+ return referents;
+}
+
+// ********************************************************************************************* //
+
+function getFrameWindow(frame)
+{
+ var result = {};
+ if (frame.eval("window", "", 1, result))
+ {
+ var win = Wrapper.unwrapIValue(result.value, Firebug.viewChrome);
+ return Win.getRootWindow(win);
+ }
+}
+
+function ArrayEnumerator(array)
+{
+ this.index = 0;
+ this.array = array;
+ this.hasMoreElements = function()
+ {
+ return (this.index < array.length);
+ };
+ this.getNext = function()
+ {
+ return this.array[++this.index];
+ };
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerActivableModule(Firebug.Debugger);
+
+return Firebug.Debugger;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/js/fbs.js b/content/firebug/js/fbs.js
index d7402e9..f0bff32 100644
--- a/content/firebug/js/fbs.js
+++ b/content/firebug/js/fbs.js
@@ -1,26 +1,26 @@
-/* See license.txt for terms of usage */
-
-define([], function() {
-
-// ********************************************************************************************* //
-// Constants
-
-var FBS = {};
-
-// ********************************************************************************************* //
-
-try
-{
- // xxxHonza: The entire firebug-service implementation should be here
- Components.utils["import"]("resource://firebug/firebug-service.js", FBS);
-}
-catch (err)
-{
-}
-
-// ********************************************************************************************* //
-
-return FBS.fbs;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([], function() {
+
+// ********************************************************************************************* //
+// Constants
+
+var FBS = {};
+
+// ********************************************************************************************* //
+
+try
+{
+ // xxxHonza: The entire firebug-service implementation should be here
+ Components.utils["import"]("resource://firebug/firebug-service.js", FBS);
+}
+catch (err)
+{
+}
+
+// ********************************************************************************************* //
+
+return FBS.fbs;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/js/scriptPanel.js b/content/firebug/js/scriptPanel.js
index 6d30750..85dab7d 100644
--- a/content/firebug/js/scriptPanel.js
+++ b/content/firebug/js/scriptPanel.js
@@ -1,1986 +1,1986 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/firefox",
- "firebug/chrome/reps",
- "firebug/lib/domplate",
- "arch/javascripttool",
- "arch/compilationunit",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/url",
- "firebug/js/sourceLink",
- "firebug/js/stackFrame",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/chrome/window",
- "firebug/lib/search",
- "firebug/lib/persist",
- "firebug/lib/system",
- "firebug/chrome/menu",
- "firebug/trace/debug",
- "firebug/lib/keywords",
- "firebug/editor/editorSelector",
- "firebug/chrome/infotip",
- "firebug/chrome/searchBox",
- "firebug/js/sourceBox",
- "firebug/js/watchPanel",
-],
-function (Obj, Firebug, Firefox, FirebugReps, Domplate, JavaScriptTool, CompilationUnit,
- Locale, Events, Url, SourceLink, StackFrame, Css, Dom, Win, Search, Persist,
- System, Menu, Debug, Keywords) {
-
-// ********************************************************************************************* //
-// Script panel
-
-Firebug.ScriptPanel = function() {};
-
-for (var p in Firebug.EditorSelector)
-{
- if (Firebug.EditorSelector.hasOwnProperty(p))
- Firebug.ScriptPanel[p] = Firebug.EditorSelector[p];
-}
-
-Firebug.ScriptPanel.getEditorOptionKey = function()
-{
- return "JSEditor";
-};
-
-Firebug.ScriptPanel.reLineNumber = /^[^\\]?#(\d*)$/;
-
-/**
- * object used to markup JavaScript source lines.
- * In the namespace Firebug.ScriptPanel.
- */
-Firebug.ScriptPanel.decorator = Obj.extend(new Firebug.SourceBoxDecorator,
-{
- decorate: function(sourceBox, unused)
- {
- this.markExecutableLines(sourceBox);
- this.setLineBreakpoints(sourceBox.repObject, sourceBox);
- },
-
- markExecutableLines: function(sourceBox)
- {
- var compilationUnit = sourceBox.repObject;
- if (FBTrace.DBG_BP || FBTrace.DBG_LINETABLE)
- FBTrace.sysout("script.markExecutableLines START: "+compilationUnit.toString());
-
- var lineNode;
- var lineNo = sourceBox.firstViewableLine;
- while (lineNode = sourceBox.getLineNode(lineNo))
- {
- if (lineNode.alreadyMarked)
- {
- lineNo++;
- continue;
- }
-
- var script = compilationUnit.isExecutableLine(lineNo);
-
- if (FBTrace.DBG_LINETABLE)
- FBTrace.sysout("script.markExecutableLines [" + lineNo + "]=" + script);
-
- if (script)
- lineNode.setAttribute("executable", "true");
- else
- lineNode.removeAttribute("executable");
-
- lineNode.alreadyMarked = true;
-
- if (lineNo > sourceBox.lastViewableLine)
- break;
-
- lineNo++;
- }
-
- if (FBTrace.DBG_BP || FBTrace.DBG_LINETABLE)
- FBTrace.sysout("script.markExecutableLines DONE: " + compilationUnit.toString());
- },
-
- setLineBreakpoints: function(compilationUnit, sourceBox)
- {
- compilationUnit.eachBreakpoint(function setAttributes(line, props)
- {
- var scriptRow = sourceBox.getLineNode(line);
- if (scriptRow)
- {
- scriptRow.setAttribute("breakpoint", "true");
- if (props.disabled)
- scriptRow.setAttribute("disabledBreakpoint", "true");
-
- if (props.condition)
- {
- scriptRow.setAttribute("condition", "true");
- scriptRow.breakpointCondition = props.condition;
- }
- }
-
- if (FBTrace.DBG_LINETABLE)
- {
- FBTrace.sysout("script.setLineBreakpoints found " + scriptRow + " for " + line +
- "@" + compilationUnit.getURL(), props);
- }
- });
- },
-});
-
-// ********************************************************************************************* //
-
-Firebug.ScriptPanel.prototype = Obj.extend(Firebug.SourceBoxPanel,
-{
- dispatchName: "scriptPanel",
-
- /**
- * Framework connection
- */
- updateSourceBox: function(sourceBox)
- {
- this.location = sourceBox.repObject;
- },
-
- /**
- * Framework connection
- */
- getSourceType: function()
- {
- return "js";
- },
-
- /**
- * Framework connection
- */
- getDecorator: function(sourceBox)
- {
- return Firebug.ScriptPanel.decorator;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // TODO Class method
-
- onJavaScriptDebugging: function(active)
- {
- // Front side state
- Firebug.jsDebuggerOn = active;
-
- // If this panel is selected, the change in JSD causes a refresh.
- // Note that onJavaScriptDebugging is called on the prototype.
- var selectedPanel = Firebug.chrome.getSelectedPanel();
- if (selectedPanel && Object.getPrototypeOf(selectedPanel) === this)
- Firebug.chrome.syncPanel(this.name);
-
- // Front side UI mark
- var firebugStatus = Firefox.getElementById("firebugStatus");
- if (firebugStatus)
- {
- // Use enabled state for the status flag. JSD can be active even if
- // the Script panel itself is deactivated (i.e. because the Console
- // panel is enabled). See issue 2582 for more details.
- var enabled = this.isEnabled();
- firebugStatus.setAttribute("script", (enabled && active) ? "on" : "off");
- }
-
- if (Firebug.StartButton)
- Firebug.StartButton.resetTooltip();
- else
- FBTrace.sysout("No Firebug.StartButton in onJavaScriptDebugging?");
-
- if (FBTrace.DBG_ACTIVATION)
- {
- FBTrace.sysout("script.onJavaScriptDebugging " + active + " icon attribute: " +
- Firefox.getElementById("firebugStatus").getAttribute("script"));
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- showFunction: function(fn)
- {
- var sourceLink = Firebug.SourceFile.findSourceForFunction(fn, this.context);
- if (sourceLink)
- {
- this.showSourceLink(sourceLink);
- }
- else
- {
- // Want to avoid the Script panel if possible
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("no sourcelink for function");
- }
- },
-
- showSourceLink: function(sourceLink, noHighlight)
- {
- var compilationUnit = this.context.getCompilationUnit(sourceLink.href);
- if (compilationUnit)
- {
- this.navigate(compilationUnit);
- if (sourceLink.line)
- {
- var highlighter = noHighlight ? null :
- this.jumpHighlightFactory(sourceLink.line, this.context);
-
- this.scrollToLine(sourceLink.href, sourceLink.line, highlighter);
-
- Events.dispatch(this.fbListeners, "onShowSourceLink", [this, sourceLink.line]);
- }
-
- // If the source link is selected, clear it so the next link will scroll and highlight.
- if (sourceLink == this.selection)
- delete this.selection;
- }
- },
-
- /**
- * Some source files (compilation units) can be loaded asynchronously (e.g. when using
- * RequireJS). If this case happens, this method tries it again after a short timeout.
- *
- * @param {Object} sourceLink Link to the script and line to be displayed.
- * @param {Boolean} noHighlight Do not highlight the line
- * @param {Number} counter Number of async attempts.
- */
- showSourceLinkAsync: function(sourceLink, noHighlight, counter)
- {
- var compilationUnit = this.context.getCompilationUnit(sourceLink.href);
- if (compilationUnit)
- {
- this.showSourceLink(sourceLink, noHighlight);
- }
- else
- {
- if (typeof(counter) == "undefined")
- counter = 15;
-
- // Stop trying. The target script is probably not going to appear.
- if (counter < 0)
- return;
-
- var self = this;
- this.context.setTimeout(function()
- {
- // If JS execution is stopped at a breakpoint, do not restore the previous
- // location. The user wants to see the breakpoint now.
- if (!self.context.stopped)
- self.showSourceLinkAsync(sourceLink, noHighlight, --counter);
- }, 50);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- highlightingAttribute: "exe_line",
-
- removeExeLineHighlight: function(sourceBox)
- {
- if (sourceBox.selectedLine)
- {
- sourceBox.selectedLine.removeAttribute(this.highlightingAttribute);
-
- // Make sure the highlighter for the selected line is removed, too (issue 4359).
- sourceBox.highlighter = null;
- }
- },
-
- highlightLine: function(lineNumber, context)
- {
- var panel = this;
- return function exeHighlightFactory(sourceBox)
- {
- panel.removeExeLineHighlight(sourceBox);
-
- // We close over lineNumber
- var lineNode = sourceBox.getLineNode(lineNumber);
- // If null, clears
- sourceBox.selectedLine = lineNode;
-
- if (sourceBox.selectedLine)
- {
- lineNode.setAttribute(panel.highlightingAttribute, "true");
- if (context.breakingCause && !context.breakingCause.shown)
- {
- context.breakingCause.shown = true;
- var cause = context.breakingCause;
- if (cause && Firebug.showBreakNotification)
- {
- var box = new Firebug.Breakpoint.BreakNotification(panel.document, cause);
- box.show(panel.panelNode);
- sourceBox.breakCauseBox = box;
- }
- }
- }
-
- if (FBTrace.DBG_BP || FBTrace.DBG_STACK || FBTrace.DBG_COMPILATION_UNITS)
- {
- FBTrace.sysout("sourceBox.highlightLine lineNo: "+lineNumber+
- " sourceBox.selectedLine="+sourceBox.selectedLine+" in "+
- sourceBox.repObject.getURL());
- }
-
- // Sticky, if we have a valid line
- return sourceBox.selectedLine;
- };
- },
-
- showStackFrameXB: function(frameXB)
- {
- if (this.context.stopped)
- this.showStackFrameTrue(frameXB);
- else
- this.showNoStackFrame();
- },
-
- showStackFrameTrue: function(frame)
- {
- // Make sure the current frame seen by the user is set (issue 4818)
- // xxxHonza: Better solution (important for remoting)
- // Set this.context.currentFrame = frame (meaning frameXB) and pass the value of
- // frameXB during evaluation calls, causing the backend to select the appropriate
- // frame for frame.eval().
- this.context.currentFrame = frame.nativeFrame;
-
- var url = frame.getURL();
- var lineNo = frame.getLineNumber();
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("showStackFrame: "+url+"@"+lineNo+"\n");
-
- if (this.context.breakingCause)
- this.context.breakingCause.lineNo = lineNo;
-
- this.scrollToLine(url, lineNo, this.highlightLine(lineNo, this.context));
- this.context.throttle(this.updateInfoTip, this);
- },
-
- showNoStackFrame: function()
- {
- if (this.selectedSourceBox)
- {
- this.removeExeLineHighlight(this.selectedSourceBox);
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("showNoStackFrame clear "+this.selectedSourceBox.repObject.url);
- }
-
- var panelStatus = Firebug.chrome.getPanelStatusElements();
- // Clear the stack on the panel toolbar
- panelStatus.clear();
- this.updateInfoTip();
-
- var watchPanel = this.context.getPanel("watches", true);
- if (watchPanel)
- watchPanel.showEmptyMembers();
- },
-
- toggleBreakpoint: function(lineNo)
- {
- var href = this.getSourceBoxURL(this.selectedSourceBox);
- var lineNode = this.selectedSourceBox.getLineNode(lineNo);
-
- if (!lineNode)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("script.toggleBreakpoint no lineNode at " + lineNo +
- " in selectedSourceBox with URL " + href, this.selectedSourceBox);
- }
-
- return;
- }
-
- if (FBTrace.DBG_BP)
- {
- FBTrace.sysout("script.toggleBreakpoint lineNo=" + lineNo + " lineNode.breakpoint:" +
- (lineNode ? lineNode.getAttribute("breakpoint") : "(no lineNode)"),
- this.selectedSourceBox);
- }
-
- if (lineNode.getAttribute("breakpoint") == "true")
- JavaScriptTool.clearBreakpoint(this.context, href, lineNo);
- else
- JavaScriptTool.setBreakpoint(this.context, href, lineNo);
- },
-
- toggleDisableBreakpoint: function(lineNo)
- {
- var href = this.getSourceBoxURL(this.selectedSourceBox);
-
- var lineNode = this.selectedSourceBox.getLineNode(lineNo);
- if (lineNode.getAttribute("disabledBreakpoint") == "true")
- {
- JavaScriptTool.enableBreakpoint(this.context, href, lineNo);
- }
- else
- {
- if (lineNode.getAttribute("breakpoint") != "true")
- JavaScriptTool.setBreakpoint(this.context, href, lineNo);
-
- JavaScriptTool.disableBreakpoint(this.context, href, lineNo);
- }
- },
-
- editBreakpointCondition: function(lineNo)
- {
- var sourceRow = this.selectedSourceBox.getLineNode(lineNo);
- var sourceLine = Dom.getChildByClass(sourceRow, "sourceLine");
- var condition = JavaScriptTool.getBreakpointCondition(this.context,
- this.location.getURL(), lineNo);
-
- if (condition)
- {
- var watchPanel = this.context.getPanel("watches", true);
- watchPanel.removeWatch(condition);
- watchPanel.rebuild();
- }
-
- Firebug.Editor.startEditing(sourceLine, condition);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- addSelectionWatch: function()
- {
- var watchPanel = this.context.getPanel("watches", true);
- if (watchPanel)
- {
- var selection = this.document.defaultView.getSelection();
- var source = this.getSourceLinesFrom(selection);
- watchPanel.addWatch(source);
- }
- },
-
- copySource: function()
- {
- var selection = this.document.defaultView.getSelection();
- var source = this.getSourceLinesFrom(selection);
- System.copyToClipboard(source);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Info Tips
-
- updateInfoTip: function()
- {
- var infoTip = this.panelBrowser.infoTip;
- if (infoTip && this.infoTipExpr)
- this.populateInfoTip(infoTip, this.infoTipExpr);
- },
-
- showInfoTip: function(infoTip, target, x, y, rangeParent, rangeOffset)
- {
- var sourceLine = Dom.getAncestorByClass(target, "sourceLine");
- if (sourceLine)
- return this.populateBreakpointInfoTip(infoTip, sourceLine);
-
- var frame = this.context.currentFrame;
- if (!frame)
- return;
-
- var sourceRowText = Dom.getAncestorByClass(target, "sourceRowText");
- if (!sourceRowText)
- return;
-
- // See http://code.google.com/p/fbug/issues/detail?id=889
- // Idea from: Jonathan Zarate's rikaichan extension (http://www.polarcloud.com/rikaichan/)
- if (!rangeParent)
- return;
-
- rangeOffset = rangeOffset || 0;
- var expr = getExpressionAt(rangeParent.data, rangeOffset);
- if (!expr || !expr.expr)
- return;
-
- if (expr.expr == this.infoTipExpr)
- return true;
- else
- return this.populateInfoTip(infoTip, expr.expr);
- },
-
- populateInfoTip: function(infoTip, expr)
- {
- if (!expr || Keywords.isJavaScriptKeyword(expr))
- return false;
-
- var self = this;
-
- // If the evaluate fails, then we report an error and don't show the infotip
- Firebug.CommandLine.evaluate(expr, this.context, null, this.context.getCurrentGlobal(),
- function success(result, context)
- {
- var rep = Firebug.getRep(result, context);
- var tag = rep.shortTag ? rep.shortTag : rep.tag;
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("populateInfoTip result is "+result, result);
-
- tag.replace({object: result}, infoTip);
-
- // If the menu is never displayed, the contextMenuObject is not reset
- // (back to null) and is reused at the next time the user opens the
- // context menu, which is wrong.
- // This line was appended when fixing:
- // http://code.google.com/p/fbug/issues/detail?id=1700
- // The object should be returned by getPopupObject(),
- // that is called when the context menu is showing.
- // The problem is, that the "onContextShowing" event doesn't have the
- // rangeParent field set and so it isn't possible to get the
- // expression under the cursor (see getExpressionAt).
- //Firebug.chrome.contextMenuObject = result;
-
- self.infoTipExpr = expr;
- },
- function failed(result, context)
- {
- self.infoTipExpr = "";
- }
- );
- return (self.infoTipExpr == expr);
- },
-
- populateBreakpointInfoTip: function(infoTip, sourceLine)
- {
- var sourceRow = Dom.getAncestorByClass(sourceLine, "sourceRow");
- var condition = sourceRow.getAttribute("condition");
- if (!condition)
- return false;
-
- var expr = sourceRow.breakpointCondition;
- if (!expr)
- return false;
-
- if (expr == this.infoTipExpr)
- return true;
-
- Firebug.ScriptPanel.BreakpointInfoTip.render(infoTip, expr);
-
- this.infoTipExpr = expr;
-
- return true;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // UI event listeners
-
- onMouseDown: function(event)
- {
- // Don't interfere with clicks made into a notification editor.
- if (Dom.getAncestorByClass(event.target, "breakNotification"))
- return;
-
- var sourceLine = Dom.getAncestorByClass(event.target, "sourceLine");
- if (!sourceLine)
- return;
-
- var compilationUnit = Dom.getAncestorByClass(sourceLine, "sourceBox").repObject;
- var lineNo = parseInt(sourceLine.textContent);
-
- if (Events.isLeftClick(event))
- {
- this.toggleBreakpoint(lineNo);
- }
- else if (Events.isShiftClick(event))
- {
- this.toggleDisableBreakpoint(lineNo);
- }
- else if (Events.isControlClick(event) || Events.isMiddleClick(event))
- {
- JavaScriptTool.runUntil(compilationUnit, lineNo);
- Events.cancelEvent(event);
- }
- },
-
- onContextMenu: function(event)
- {
- var sourceLine = Dom.getAncestorByClass(event.target, "sourceLine");
- if (!sourceLine)
- return;
-
- var lineNo = parseInt(sourceLine.textContent);
- this.editBreakpointCondition(lineNo);
- Events.cancelEvent(event);
- },
-
- onMouseOver: function(event)
- {
- var sourceLine = Dom.getAncestorByClass(event.target, "sourceLine");
- if (sourceLine)
- {
- if (this.hoveredLine)
- Css.removeClass(this.hoveredLine.parentNode, "hovered");
-
- this.hoveredLine = sourceLine;
-
- if (Dom.getAncestorByClass(sourceLine, "sourceViewport"))
- Css.setClass(sourceLine.parentNode, "hovered");
- }
- },
-
- onMouseOut: function(event)
- {
- var sourceLine = Dom.getAncestorByClass(event.relatedTarget, "sourceLine");
- if (!sourceLine)
- {
- if (this.hoveredLine)
- Css.removeClass(this.hoveredLine.parentNode, "hovered");
-
- delete this.hoveredLine;
- }
- },
-
- onScroll: function(event)
- {
- var scrollingElement = event.target;
- this.reView(scrollingElement);
- var searchBox = Firebug.chrome.$("fbSearchBox");
- searchBox.placeholder = Locale.$STR("Use hash plus number to go to line");
- },
-
- onKeyPress: function(event)
- {
- var ch = String.fromCharCode(event.charCode);
- var searchBox = Firebug.chrome.$("fbSearchBox");
-
- if (ch == "l" && Events.isControl(event))
- {
- searchBox.value = "#";
- searchBox.focus();
-
- Events.cancelEvent(event);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Panel
-
- name: "script",
- searchable: true,
- breakable: true,
- enableA11y: true,
- order: 40,
-
- initialize: function(context, doc)
- {
- this.location = null;
-
- this.onMouseDown = Obj.bind(this.onMouseDown, this);
- this.onContextMenu = Obj.bind(this.onContextMenu, this);
- this.onMouseOver = Obj.bind(this.onMouseOver, this);
- this.onMouseOut = Obj.bind(this.onMouseOut, this);
- this.onScroll = Obj.bind(this.onScroll, this);
- this.onKeyPress = Obj.bind(this.onKeyPress, this);
-
- this.panelSplitter = Firebug.chrome.$("fbPanelSplitter");
- this.sidePanelDeck = Firebug.chrome.$("fbSidePanelDeck");
-
- Firebug.SourceBoxPanel.initialize.apply(this, arguments);
- },
-
- destroy: function(state)
- {
- // We want the location (compilationUnit) to persist, not the selection (eg stackFrame).
- delete this.selection;
-
- var sourceBox = this.selectedSourceBox;
- if (sourceBox)
- {
- if (sourceBox.centralLine)
- state.previousCentralLine = sourceBox.centralLine;
- else
- state.scrollTop = sourceBox.scrollTop ? sourceBox.scrollTop : this.lastScrollTop;
-
- delete this.selectedSourceBox;
- }
-
- Persist.persistObjects(this, state);
-
- if (this.location instanceof CompilationUnit)
- {
- state.location = this.location;
- }
- else
- {
- if (FBTrace.DBG_COMPILATION_UNITS)
- {
- FBTrace.sysout("script.destroy had location not a CompilationUnit ",
- this.location);
- }
- }
-
- // xxxHonza: why this is here? I don't see addListener.
- //Firebug.connection.removeListener(this);
-
- // Make sure listeners are removed.
- this.detachListeners(this.context, Firebug.chrome);
-
- Firebug.SourceBoxPanel.destroy.apply(this, arguments);
- },
-
- initializeNode: function(oldPanelNode)
- {
- this.tooltip = this.document.createElement("div");
- Css.setClass(this.tooltip, "scriptTooltip");
- this.tooltip.setAttribute('aria-live', 'polite');
- Css.obscure(this.tooltip, true);
- this.panelNode.appendChild(this.tooltip);
-
- Events.addEventListener(this.panelNode, "mousedown", this.onMouseDown, true);
- Events.addEventListener(this.panelNode, "contextmenu", this.onContextMenu, false);
- Events.addEventListener(this.panelNode, "mouseover", this.onMouseOver, false);
- Events.addEventListener(this.panelNode, "mouseout", this.onMouseOut, false);
- Events.addEventListener(this.panelNode, "scroll", this.onScroll, true);
-
- Firebug.SourceBoxPanel.initializeNode.apply(this, arguments);
- },
-
- destroyNode: function()
- {
- if (this.tooltipTimeout)
- clearTimeout(this.tooltipTimeout);
-
- Events.removeEventListener(this.panelNode, "mousedown", this.onMouseDown, true);
- Events.removeEventListener(this.panelNode, "contextmenu", this.onContextMenu, false);
- Events.removeEventListener(this.panelNode, "mouseover", this.onMouseOver, false);
- Events.removeEventListener(this.panelNode, "mouseout", this.onMouseOut, false);
- Events.removeEventListener(this.panelNode, "scroll", this.onScroll, true);
-
- Firebug.SourceBoxPanel.destroyNode.apply(this, arguments);
- },
-
- clear: function()
- {
- Dom.clearNode(this.panelNode);
- },
-
- showWarning: function()
- {
- // Fill the panel node with a warning if needed
- var aLocation = this.getDefaultLocation();
- var jsEnabled = Firebug.Options.getPref("javascript", "enabled");
-
- if (FBTrace.DBG_PANELS)
- {
- FBTrace.sysout("script.showWarning; " + this.context.getName(), {
- jsDebuggerOn: Firebug.jsDebuggerOn,
- jsDebuggerCalledUs: this.context.jsDebuggerCalledUs,
- jsEnabled: jsEnabled,
- aLocation: aLocation,
- activitySuspended: this.context.activitySuspended,
- stopped: this.context.stopped
- });
- }
-
- var currentURI = Firefox.getCurrentURI();
- var activitySuspended = this.isActivitySuspended();
- if (activitySuspended && !this.context.stopped)
- {
- // Make sure that the content of the panel is restored as soon as
- // the debugger is resumed.
- this.restored = false;
- this.activeWarningTag = WarningRep.showActivitySuspended(this.panelNode);
- }
- else if (!jsEnabled)
- {
- this.activeWarningTag = WarningRep.showNotEnabled(this.panelNode);
- }
- else if (currentURI && (Url.isSystemURL(currentURI.spec) ||
- currentURI.spec.match(Url.reChrome)))
- {
- this.activeWarningTag = WarningRep.showNoDebuggingForSystemSources(this.panelNode);
- }
- else if (this.context.allScriptsWereFiltered)
- {
- this.activeWarningTag = WarningRep.showFiltered(this.panelNode);
- }
- else if (aLocation && !this.context.jsDebuggerCalledUs)
- {
- this.activeWarningTag = WarningRep.showInactive(this.panelNode);
- }
- else if (!Firebug.jsDebuggerOn) // set asynchronously by jsd in FF 4.0
- {
- this.activeWarningTag = WarningRep.showDebuggerInactive(this.panelNode);
- }
- else if (!aLocation) // they were not filtered, we just had none
- {
- this.activeWarningTag = WarningRep.showNoScript(this.panelNode);
- }
- else
- {
- return false;
- }
-
- return true;
- },
-
- isActivitySuspended: function()
- {
- return Win.iterateBrowserWindows("navigator:browser", function(win)
- {
- // Firebug doesn't have to be loaded in every browser window (see delayed load).
- if (!win.Firebug.TabWatcher)
- return false;
-
- return win.Firebug.TabWatcher.iterateContexts(function(context)
- {
- if (context.stopped)
- return true;
- });
- });
- },
-
- show: function(state)
- {
- var enabled = this.isEnabled();
- if (!enabled)
- return;
-
- var active = !this.showWarning();
-
- if (active)
- {
- Events.addEventListener(this.panelNode.ownerDocument, "keypress", this.onKeyPress, true);
- Events.addEventListener(this.resizeEventTarget, "resize", this.onResize, true);
-
- this.location = this.getDefaultLocation();
-
- if (this.context.loaded)
- {
- if (!this.restored)
- {
- // remove the default location, if any
- delete this.location;
- Persist.restoreLocation(this, state);
- this.restored = true;
- }
- else
- {
- // we already restored
- if (!this.selectedSourceBox)
- {
- // but somehow we did not make a sourcebox?
- this.navigate(this.location);
- }
- else
- {
- // then we can sync the location to the sourcebox
- this.updateSourceBox(this.selectedSourceBox);
- }
- }
-
- if (state)
- {
- if (state.location)
- {
- var sourceLink = new SourceLink.SourceLink(state.location.getURL(),
- state.previousCentralLine, "js");
-
- // Causes the Script panel to show the proper location.
- // Do not highlight the line (second argument true), we just want
- // to restore the position.
- // Also do it asynchronously, the script doesn't have to be
- // available immediately.
- this.showSourceLinkAsync(sourceLink, true);
-
- // Do not restore the location again, it could happen during
- // the single stepping and overwrite the debugger location.
- delete state.location;
- }
-
- if (state.scrollTop)
- {
- this.selectedSourceBox.scrollTop = state.scrollTop;
- }
- }
- }
- else // show default
- {
- this.navigate(this.location);
- }
-
- this.highlight(this.context.stopped);
-
- var breakpointPanel = this.context.getPanel("breakpoints", true);
- if (breakpointPanel)
- breakpointPanel.refresh();
-
- this.syncCommands(this.context);
- this.ableWatchSidePanel(this.context);
- }
-
- Dom.collapse(Firebug.chrome.$("fbToolbar"), !active);
-
- // These buttons are visible only, if debugger is enabled.
- this.showToolbarButtons("fbLocationSeparator", active);
- this.showToolbarButtons("fbDebuggerButtons", active);
- this.showToolbarButtons("fbLocationButtons", active);
- this.showToolbarButtons("fbScriptButtons", active);
- this.showToolbarButtons("fbStatusButtons", active);
- this.showToolbarButtons("fbLocationList", active);
-
- Firebug.chrome.$("fbRerunButton").setAttribute("tooltiptext",
- Locale.$STRF("firebug.labelWithShortcut", [Locale.$STR("script.Rerun"), "Shift+F8"]));
- Firebug.chrome.$("fbContinueButton").setAttribute("tooltiptext",
- Locale.$STRF("firebug.labelWithShortcut", [Locale.$STR("script.Continue"), "F8"]));
- Firebug.chrome.$("fbStepIntoButton").setAttribute("tooltiptext",
- Locale.$STRF("firebug.labelWithShortcut", [Locale.$STR("script.Step_Into"), "F11"]));
- Firebug.chrome.$("fbStepOverButton").setAttribute("tooltiptext",
- Locale.$STRF("firebug.labelWithShortcut", [Locale.$STR("script.Step_Over"), "F10"]));
- Firebug.chrome.$("fbStepOutButton").setAttribute("tooltiptext",
- Locale.$STRF("firebug.labelWithShortcut",
- [Locale.$STR("script.Step_Out"), "Shift+F11"]));
-
- // Additional debugger panels are visible only, if debugger is active.
- this.panelSplitter.collapsed = !active;
- this.sidePanelDeck.collapsed = !active;
- },
-
- hide: function(state)
- {
- if (this.selectedSourceBox)
- this.lastScrollTop = this.selectedSourceBox.scrollTop;
-
- this.highlight(this.context.stopped);
-
- Events.removeEventListener(this.panelNode.ownerDocument, "keypress", this.onKeyPress,
- true);
- Events.removeEventListener(this.resizeEventTarget, "resize", this.onResize, true);
-
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("script panel HIDE removed onResize eventhandler");
-
- var panelStatus = Firebug.chrome.getPanelStatusElements();
- Dom.hide(panelStatus, false);
-
- delete this.infoTipExpr;
- },
-
- ableWatchSidePanel: function(context)
- {
- // TODO if (commandline is not active, then we should not show the new watch feature)
- var watchPanel = context.getPanel("watches", true);
- if (watchPanel)
- return watchPanel;
- },
-
- search: function(text, reverse)
- {
- var sourceBox = this.selectedSourceBox;
- if (!text || !sourceBox)
- {
- delete this.currentSearch;
- return false;
- }
-
- // Check, if the search is for a line number
- var m = Firebug.ScriptPanel.reLineNumber.exec(text);
- if (m)
- {
- if (!m[1])
- return true; // Don't beep, if only a # has been typed
-
- var lineNo = parseInt(m[1]);
- if (!isNaN(lineNo) && (lineNo > 0) && (lineNo < sourceBox.lines.length) )
- {
- this.scrollToLine(sourceBox.repObject.getURL(), lineNo,
- this.jumpHighlightFactory(lineNo, this.context));
- return true;
- }
- }
-
- var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse);
- if (!curDoc && Firebug.searchGlobal)
- {
- return this.searchOtherDocs(text, reverse) ||
- this.searchCurrentDoc(true, text, reverse);
- }
- return curDoc;
- },
-
- searchOtherDocs: function(text, reverse)
- {
- var scanRE = Firebug.Search.getTestingRegex(text);
-
- var self = this;
-
- function scanDoc(compilationUnit)
- {
- var lines = null;
-
- // TODO The source lines arrive asynchronous in general
- compilationUnit.getSourceLines(-1, -1, function loadSource(unit, firstLineNumber,
- lastLineNumber, linesRead)
- {
- lines = linesRead;
- });
-
- if (!lines)
- return;
-
- // We don't care about reverse here as we are just looking for existence.
- // If we do have a result, we will handle the reverse logic on display.
- for (var i = 0; i < lines.length; i++)
- {
- if (scanRE.test(lines[i]))
- return true;
- }
- }
-
- if (this.navigateToNextDocument(scanDoc, reverse))
- return this.searchCurrentDoc(true, text, reverse) && "wraparound";
- },
-
- searchCurrentDoc: function(wrapSearch, text, reverse)
- {
- var sourceBox = this.selectedSourceBox;
-
- var lineNo = null;
- if (this.currentSearch && text == this.currentSearch.text)
- {
- lineNo = this.currentSearch.findNext(wrapSearch, reverse,
- Firebug.Search.isCaseSensitive(text));
- }
- else
- {
- if (!this.currentSearch || !this.currentSearch.tryToContinueSearch(sourceBox, text))
- this.currentSearch = new Search.SourceBoxTextSearch(sourceBox);
-
- lineNo = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
- }
-
- if (lineNo || lineNo === 0)
- {
- // This lineNo is an zero-based index into sourceBox.lines.
- // Add one for user line numbers
- this.scrollToLine(sourceBox.repObject.getURL(), lineNo,
- this.jumpHighlightFactory(lineNo+1, this.context));
-
- Events.dispatch(this.fbListeners, "onScriptSearchMatchFound",
- [this, text, sourceBox.repObject, lineNo]);
-
- return this.currentSearch.wrapped ? "wraparound" : true;
- }
- else
- {
- Events.dispatch(this.fbListeners, "onScriptSearchMatchFound",
- [this, text, null, null]);
-
- return false;
- }
- },
-
- getSearchOptionsMenuItems: function()
- {
- return [
- Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive",
- "search.tip.Case_Sensitive"),
- Firebug.Search.searchOptionMenu("search.Multiple_Files", "searchGlobal",
- "search.tip.Multiple_Files"),
- Firebug.Search.searchOptionMenu("search.Use_Regular_Expression",
- "searchUseRegularExpression", "search.tip.Use_Regular_Expression")
- ];
- },
-
- supportsObject: function(object, type)
- {
- if (object instanceof CompilationUnit
- || (object instanceof SourceLink.SourceLink && object.type == "js")
- || typeof(object) == "function"
- || object instanceof StackFrame.StackFrame)
- {
- return 1;
- }
-
- return 0;
- },
-
- // Delete any sourceBoxes that are not in sync with compilationUnits
- refresh: function()
- {
- var previousCentralLine;
- var previousUrl;
-
- for (var url in this.sourceBoxes)
- {
- if (this.sourceBoxes.hasOwnProperty(url))
- {
- var sourceBox = this.sourceBoxes[url];
- var compilationUnit = this.context.getCompilationUnit(url);
-
- // then out of sync
- if (!compilationUnit || compilationUnit != sourceBox.repObject)
- {
- var victim = this.sourceBoxes[url];
- delete this.sourceBoxes[url];
- if (this.selectedSourceBox == victim)
- {
- previousCentralLine = this.selectedSourceBox.centralLine;
- previousUrl = this.getSourceBoxURL(this.selectedSourceBox);
-
- Dom.collapse(this.selectedSourceBox, true);
- delete this.selectedSourceBox;
- }
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("script.refresh deleted sourceBox for " + url);
- }
- }
- }
-
- // If selectedSourceBox is undefined, then show() has not run,
- // but we have to refresh, so do the default.
- if (!this.selectedSourceBox)
- {
- // If the current source-box has been deleted because it's out of sync
- // (the victim, see above), we need to navigate again to the same URL.
- // Otherwise the script panel would coincidentally switch to another script.
- // (see issue 5134)
- var object;
- if (previousUrl)
- object = this.context.getCompilationUnit(previousUrl);
-
- this.navigate(object);
-
- // Restore the scroll position (issue 5111)
- if (this.selectedSourceBox)
- {
- var url = this.getSourceBoxURL(this.selectedSourceBox);
- if (this.selectedSourceBox && url == previousUrl)
- this.scrollToLine(null, previousCentralLine);
- }
- }
- },
-
- updateLocation: function(compilationUnit)
- {
- // XXXjjb do we need to show a blank?
- if (!compilationUnit)
- return;
-
- if (!(compilationUnit instanceof CompilationUnit))
- {
- FBTrace.sysout("Script panel location not a CompilationUnit: ", compilationUnit);
- throw new Error("Script panel location not a CompilationUnit: " + compilationUnit);
- }
-
- // Since our last use of the compilationUnit we may have compiled or
- // recompiled the source
- var updatedCompilationUnit = this.context.getCompilationUnit(compilationUnit.getURL());
- if (!updatedCompilationUnit)
- updatedCompilationUnit = this.getDefaultLocation();
-
- if (!updatedCompilationUnit)
- return;
-
- if (this.activeWarningTag)
- {
- Dom.clearNode(this.panelNode);
- delete this.activeWarningTag;
-
- // The user was seeing the warning, but selected a file to show in the Script panel.
- // The removal of the warning leaves the panel without a clientHeight, so
- // the old sourcebox will be out of sync. Just remove it and start over.
- this.removeAllSourceBoxes();
- // we are not passing state so I guess we could miss a restore
- this.show();
-
- // If show() reset the flag, obey it
- if (this.activeWarningTag)
- return;
- }
-
- this.showSource(updatedCompilationUnit.getURL());
- Events.dispatch(this.fbListeners, "onUpdateScriptLocation", [this, updatedCompilationUnit]);
- },
-
- updateSelection: function(object)
- {
- if (FBTrace.DBG_PANELS)
- {
- FBTrace.sysout("script updateSelection object:" + object + " of type " +
- typeof(object), object);
-
- if (object instanceof CompilationUnit)
- FBTrace.sysout("script updateSelection this.navigate(object)", object);
- else if (object instanceof SourceLink.SourceLink)
- FBTrace.sysout("script updateSelection this.showSourceLink(object)", object);
- else if (typeof(object) == "function")
- FBTrace.sysout("script updateSelection this.showFunction(object)", object);
- else if (object instanceof StackFrame.StackFrame)
- FBTrace.sysout("script updateSelection this.showStackFrameXB(object)", object);
- else
- FBTrace.sysout("script updateSelection this.showStackFrame(null)", object);
- }
-
- if (object instanceof CompilationUnit)
- this.navigate(object);
- else if (object instanceof SourceLink.SourceLink)
- this.showSourceLink(object);
- else if (typeof(object) == "function")
- this.showFunction(object);
- else if (object instanceof StackFrame.StackFrame)
- this.showStackFrameXB(object);
- },
-
- showThisCompilationUnit: function(compilationUnit)
- {
- if (compilationUnit.getURL().lastIndexOf("chrome://", 0) === 0)
- return false;
-
- if (compilationUnit.getKind() === CompilationUnit.EVAL && !this.showEvals)
- return false;
-
- if (compilationUnit.getKind() === CompilationUnit.BROWSER_GENERATED && !this.showEvents)
- return false;
-
- return true;
- },
-
- getLocationList: function()
- {
- var context = this.context;
-
- var allSources = context.getAllCompilationUnits();
-
- if (!allSources.length)
- return [];
-
- var filter = Firebug.Options.get("scriptsFilter");
- this.showEvents = (filter == "all" || filter == "events");
- this.showEvals = (filter == "all" || filter == "evals");
-
- var list = [];
- for (var i = 0; i < allSources.length; i++)
- {
- if (this.showThisCompilationUnit(allSources[i]))
- {
- list.push(allSources[i]);
- }
- else if (FBTrace.DBG_COMPILATION_UNITS)
- {
- FBTrace.sysout("scrpt.getLocationList filtered "+allSources[i].getURL(),
- allSources[i]);
- }
- }
-
- if (!list.length && allSources.length)
- this.context.allScriptsWereFiltered = true;
- else
- delete this.context.allScriptsWereFiltered;
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- {
- FBTrace.sysout("script.getLocationList enabledOnLoad:" + context.onLoadWindowContent +
- " all:" + allSources.length + " filtered:" + list.length + " allFiltered: " +
- this.context.allScriptsWereFiltered, list);
- }
-
- return list;
- },
-
- getDefaultLocation: function()
- {
- var compilationUnits = this.getLocationList();
- if (!compilationUnits.length)
- return null;
-
- if (this.context)
- {
- var url = this.context.getWindowLocation();
- for (var i = 0; i < compilationUnits.length; i++)
- {
- if (url == compilationUnits[i].getURL())
- return compilationUnits[i];
- }
- }
-
- return compilationUnits[0];
- },
-
- getDefaultSelection: function()
- {
- return this.getDefaultLocation();
- },
-
- getTooltipObject: function(target)
- {
- // Target should be an element with class = sourceLine
- if (Css.hasClass(target, "sourceLine"))
- return null; // TODO
-
- return null;
- },
-
- getPopupObject: function(target)
- {
- // Don't show the popup over the line numbers. We show the conditional breakpoint
- // editor there instead
- if (Dom.getAncestorByClass(target, "sourceLine"))
- return;
-
- var sourceRow = Dom.getAncestorByClass(target, "sourceRow");
- if (!sourceRow)
- return;
-
- var lineNo = parseInt(sourceRow.firstChild.textContent);
- var scripts = Firebug.SourceFile.findScripts(this.context, this.location.getURL(), lineNo);
-
- // Gee I wonder what will happen?
- return scripts;
- },
-
- getObjectPath: function(frame)
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("script.getObjectPath "+frame, frame);
-
- if (!frame || !frame.getStackNewestFrame) // then its probably not a frame after all
- return;
-
- var frames = [];
- frame = frame.getStackNewestFrame();
- for (; frame; frame = frame.getCallingFrame())
- frames.push(frame);
-
- return frames;
- },
-
- getObjectLocation: function(compilationUnit)
- {
- return compilationUnit.getURL();
- },
-
- // return.path: group/category label, return.name: item label
- getObjectDescription: function(compilationUnit)
- {
- return Url.splitURLBase(compilationUnit.getURL());
- },
-
- getSourceLink: function(target, object)
- {
- var sourceRow = Dom.getAncestorByClass(target, "sourceRow");
- if (!sourceRow)
- return;
-
- var sourceLine = Dom.getChildByClass(sourceRow, "sourceLine");
- var lineNo = parseInt(sourceLine.textContent);
- return new SourceLink.SourceLink(this.location.url, lineNo, "js");
- },
-
- getOptionsMenuItems: function()
- {
- var context = this.context;
-
- return [
- // 1.2: always check last line; optionMenu("UseLastLineForEvalName", "useLastLineForEvalName"),
- // 1.2: always use MD5 optionMenu("UseMD5ForEvalName", "useMD5ForEvalName")
- Menu.optionMenu("script.option.Track_Throw_Catch", "trackThrowCatch",
- "script.option.tip.Track_Throw_Catch"),
- //"-",
- //1.2 option on toolbar this.optionMenu("DebuggerEnableAlways", enableAlwaysPref)
- Menu.optionMenu("firebug.breakpoint.showBreakNotifications", "showBreakNotification",
- "firebug.breakpoint.tip.Show_Break_Notifications")
- ];
- },
-
- optionMenu: function(label, option)
- {
- var checked = Firebug.Options.get(option);
- return {
- label: label, type: "checkbox", checked: checked,
- command: function()
- {
- var checked = this.hasAttribute("checked");
- Firebug.Options.set(option, checked);
- }
- };
- },
-
- getContextMenuItems: function(fn, target)
- {
- if (Dom.getAncestorByClass(target, "sourceLine"))
- return;
-
- var sourceRow = Dom.getAncestorByClass(target, "sourceRow");
- if (!sourceRow)
- return;
-
- var sourceLine = Dom.getChildByClass(sourceRow, "sourceLine");
- var lineNo = parseInt(sourceLine.textContent);
-
- var items = [];
-
- var selection = this.document.defaultView.getSelection();
- if (selection.toString())
- {
- items.push(
- {
- label: "CopySourceCode",
- tooltiptext: "script.tip.Copy_Source_Code",
- command: Obj.bind(this.copySource, this)
- },
- "-",
- {
- label: "AddWatch",
- tooltiptext: "watch.tip.Add_Watch",
- command: Obj.bind(this.addSelectionWatch, this)
- }
- );
- }
-
- var hasBreakpoint = sourceRow.getAttribute("breakpoint") == "true";
-
- items.push(
- "-",
- {
- label: "SetBreakpoint",
- tooltiptext: "script.tip.Set_Breakpoint",
- type: "checkbox",
- checked: hasBreakpoint,
- command: Obj.bindFixed(this.toggleBreakpoint, this, lineNo)
- }
- );
-
- if (hasBreakpoint)
- {
- var isDisabled = JavaScriptTool.isBreakpointDisabled(this.context, this.location.href,
- lineNo);
- items.push(
- {
- label: "breakpoints.Disable_Breakpoint",
- tooltiptext: "breakpoints.tip.Disable_Breakpoint",
- type: "checkbox",
- checked: isDisabled,
- command: Obj.bindFixed(this.toggleDisableBreakpoint, this, lineNo)
- }
- );
- }
-
- items.push(
- {
- label: "EditBreakpointCondition",
- tooltiptext: "breakpoints.tip.Edit_Breakpoint_Condition",
- command: Obj.bindFixed(this.editBreakpointCondition, this, lineNo)
- }
- );
-
- if (this.context.stopped)
- {
- var sourceRow = Dom.getAncestorByClass(target, "sourceRow");
- if (sourceRow)
- {
- var compilationUnit = Dom.getAncestorByClass(sourceRow, "sourceBox").repObject;
- var lineNo = parseInt(sourceRow.firstChild.textContent);
-
- var debuggr = this;
- items.push(
- "-",
- {
- label: "script.Rerun",
- tooltiptext: "script.tip.Rerun",
- id: "contextMenuRerun",
- command: Obj.bindFixed(debuggr.rerun, debuggr, this.context),
- acceltext: "Shift+F8"
- },
- {
- label: "script.Continue",
- tooltiptext: "script.tip.Continue",
- id: "contextMenuContinue",
- command: Obj.bindFixed(debuggr.resume, debuggr, this.context),
- acceltext: "F8"
- },
- {
- label: "script.Step_Over",
- tooltiptext: "script.tip.Step_Over",
- id: "contextMenuStepOver",
- command: Obj.bindFixed(debuggr.stepOver, debuggr, this.context),
- acceltext: "F10"
- },
- {
- label: "script.Step_Into",
- tooltiptext: "script.tip.Step_Into",
- id: "contextMenuStepInto",
- command: Obj.bindFixed(debuggr.stepInto, debuggr, this.context),
- acceltext: "F11"
- },
- {
- label: "script.Step_Out",
- tooltiptext: "script.tip.Step_Out",
- id: "contextMenuStepOut",
- command: Obj.bindFixed(debuggr.stepOut, debuggr, this.context),
- acceltext: "Shift+F11"
- },
- {
- label: "firebug.RunUntil",
- tooltiptext: "script.tip.Run_Until",
- id: "contextMenuRunUntil",
- command: Obj.bindFixed(debuggr.runUntil, debuggr, this.context,
- compilationUnit, lineNo)
- }
- );
- }
- }
-
- return items;
- },
-
- getEditor: function(target, value)
- {
- if (!this.conditionEditor)
- this.conditionEditor = new Firebug.Breakpoint.ConditionEditor(this.document);
-
- return this.conditionEditor;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- supportsBreakOnNext: function()
- {
- return this.breakable && Firebug.jsDebuggerOn;
- },
-
- breakOnNext: function(enabled)
- {
- if (enabled)
- JavaScriptTool.breakOnNext(this.context, true);
- else
- JavaScriptTool.breakOnNext(this.context, false);
- },
-
- getBreakOnNextTooltip: function(armed)
- {
- return (armed ?
- Locale.$STR("script.Disable Break On Next") : Locale.$STR("script.Break On Next"));
- },
-
- shouldBreakOnNext: function()
- {
- return !!this.context.breakOnNextHook; // TODO BTI
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends ActivablePanel
-
- /**
- * Support for panel activation.
- */
- onActivationChanged: function(enable)
- {
- JavaScriptTool.setActivation(enable);
-
- if (enable)
- Firebug.TabCacheModel.addObserver(this);
- else
- Firebug.TabCacheModel.removeObserver(this);
-
- // If the Script is disabled make sure the BON tab flag (orange background)
- // is properly updated.
- Firebug.Breakpoint.updatePanelTabs(Firebug.currentContext);
- },
-
- // implements Tool
- onActiveTool: function(isActive)
- {
- this.onJavaScriptDebugging(isActive, "onActiveTool");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Toolbar functions
-
- attachListeners: function(context, chrome)
- {
- this.keyListeners =
- [
- chrome.keyCodeListen("F8", Events.isShift, Obj.bind(this.rerun, this, context), true),
- chrome.keyCodeListen("F8", null, Obj.bind(this.resume, this, context), true),
- chrome.keyCodeListen("F10", null, Obj.bind(this.stepOver, this, context), true),
- chrome.keyCodeListen("F11", null, Obj.bind(this.stepInto, this, context)),
- chrome.keyCodeListen("F11", Events.isShift, Obj.bind(this.stepOut, this, context))
- ];
- },
-
- detachListeners: function(context, chrome)
- {
- if (this.keyListeners)
- {
- for (var i = 0; i < this.keyListeners.length; ++i)
- chrome.keyIgnore(this.keyListeners[i]);
- delete this.keyListeners;
- }
- },
-
- syncListeners: function(context)
- {
- var chrome = Firebug.chrome;
-
- if (context.stopped)
- this.attachListeners(context, chrome);
- else
- this.detachListeners(context, chrome);
- },
-
- syncCommands: function(context)
- {
- var chrome = Firebug.chrome;
- if (!chrome)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("debugger.syncCommand, context with no chrome", context);
- return;
- }
-
- if (context.stopped)
- {
- chrome.setGlobalAttribute("fbDebuggerButtons", "stopped", "true");
- chrome.setGlobalAttribute("cmd_firebug_rerun", "disabled", "false");
- chrome.setGlobalAttribute("cmd_firebug_resumeExecution", "disabled", "false");
- chrome.setGlobalAttribute("cmd_firebug_stepOver", "disabled", "false");
- chrome.setGlobalAttribute("cmd_firebug_stepInto", "disabled", "false");
- chrome.setGlobalAttribute("cmd_firebug_stepOut", "disabled", "false");
- }
- else
- {
- chrome.setGlobalAttribute("fbDebuggerButtons", "stopped", "false");
- chrome.setGlobalAttribute("cmd_firebug_rerun", "disabled", "true");
- chrome.setGlobalAttribute("cmd_firebug_stepOver", "disabled", "true");
- chrome.setGlobalAttribute("cmd_firebug_stepInto", "disabled", "true");
- chrome.setGlobalAttribute("cmd_firebug_stepOut", "disabled", "true");
- chrome.setGlobalAttribute("cmd_firebug_resumeExecution", "disabled", "true");
- }
- },
-
- rerun: function(context)
- {
- JavaScriptTool.rerun(context);
- },
-
- resume: function(context)
- {
- JavaScriptTool.resumeJavaScript(context);
- },
-
- stepOver: function(context)
- {
- JavaScriptTool.stepOver(context);
- },
-
- stepInto: function(context)
- {
- JavaScriptTool.stepInto(context);
- },
-
- stepOut: function(context)
- {
- JavaScriptTool.stepOut(context);
- },
-
- runUntil: function(context, compilationUnit, lineNo)
- {
- JavaScriptTool.runUntil(compilationUnit, lineNo);
- },
-
- onStartDebugging: function(frame)
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("script.startDebugging enter context: " + this.context.getName());
-
- try
- {
- var currentBreakable = Firebug.chrome.getGlobalAttribute("cmd_firebug_toggleBreakOn",
- "breakable");
-
- if (FBTrace.DBG_BP)
- {
- FBTrace.sysout("debugger.startDebugging; currentBreakable " + currentBreakable +
- " in " + this.context.getName() + " currentContext " +
- Firebug.currentContext.getName());
- }
-
- // If currentBreakable is false, then we are armed, but we broke
- if (currentBreakable == "false")
- Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleBreakOn", "breakable", "true");
-
- // If Firebug is minimized, open the UI to show we are stopped
- if (Firebug.isMinimized())
- Firebug.unMinimize();
-
- this.syncCommands(this.context);
- this.syncListeners(this.context);
-
- // Update Break on Next lightning
- Firebug.Breakpoint.updatePanelTab(this, false);
- Firebug.chrome.select(frame, "script", null, true);
- Firebug.chrome.syncPanel("script"); // issue 3463 and 4213
- Firebug.chrome.focus();
- }
- catch(exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("Resuming debugger: error during debugging loop: " + exc, exc);
-
- Firebug.Console.log("Resuming debugger: error during debugging loop: " + exc);
- this.resume(this.context);
- }
-
- if (FBTrace.DBG_UI_LOOP)
- {
- FBTrace.sysout("script.onStartDebugging exit context.stopped:" +
- this.context.stopped + " for context: " + this.context.getName());
- }
- },
-
- onStopDebugging: function()
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("script.onStopDebugging enter context: " + this.context.getName());
-
- try
- {
- var chrome = Firebug.chrome;
-
- if (this.selectedSourceBox && this.selectedSourceBox.breakCauseBox)
- {
- this.selectedSourceBox.breakCauseBox.hide();
- delete this.selectedSourceBox.breakCauseBox;
- }
-
- this.syncCommands(this.context);
- this.syncListeners(this.context);
- this.highlight(false);
-
- // After main panel is completely updated
- chrome.syncSidePanels();
- }
- catch (exc)
- {
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("debugger.stopDebugging FAILS", exc);
-
- // If the window is closed while the debugger is stopped,
- // then all hell will break loose here
- Debug.ERROR(exc);
- }
- },
-
-});
-
-// ********************************************************************************************* //
-
-const reWord = /([A-Za-z_$0-9]+)(\.([A-Za-z_$0-9]+)|\[([A-Za-z_$0-9]+|["'].+?["'])\])*/;
-
-function getExpressionAt(text, charOffset)
-{
- var offset = 0;
- for (var m = reWord.exec(text); m; m = reWord.exec(text.substr(offset)))
- {
- var word = m[0];
- var wordOffset = offset+m.index;
- if (charOffset >= wordOffset && charOffset <= wordOffset+word.length)
- {
- var innerOffset = charOffset-wordOffset;
- m = word.substr(innerOffset+1).match(/\.|\]|\[|$/);
- var end = m.index + innerOffset + 1, start = 0;
-
- var openBr = word.lastIndexOf('[', innerOffset);
- var closeBr = word.lastIndexOf(']', innerOffset);
-
- if (openBr == innerOffset)
- end++;
- else if (closeBr < openBr)
- {
- if (/['"\d]/.test(word[openBr+1]))
- end++;
- else
- start = openBr + 1;
- }
-
- word = word.substring(start, end);
-
- if (/^\d+$/.test(word) && word[0] != '0')
- word = '';
-
- return {expr: word, offset: wordOffset-start};
- }
- offset = wordOffset+word.length;
- }
-
- return {expr: null, offset: -1};
-};
-
-// ********************************************************************************************* //
-// Domplate Templates
-
-with (Domplate) {
-
-/**
- * @domplate Displays various warning messages within the Script panel.
- */
-Firebug.ScriptPanel.WarningRep = domplate(Firebug.Rep,
-{
- tag:
- DIV({"class": "disabledPanelBox"},
- H1({"class": "disabledPanelHead"},
- SPAN("$pageTitle")
- ),
- P({"class": "disabledPanelDescription", style: "margin-top: 15px;"},
- SPAN("$suggestion")
- )
- ),
-
- enableScriptTag:
- SPAN({"class": "objectLink", onclick: "$onEnableScript", style: "color: blue"},
- Locale.$STR("script.button.enable_javascript")
- ),
-
- focusDebuggerTag:
- SPAN({"class": "objectLink", onclick: "$onFocusDebugger", style: "color: blue"},
- Locale.$STR("script.button.Go to that page")
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onEnableScript: function(event)
- {
- Firebug.Options.setPref("javascript", "enabled", true);
-
- Firebug.TabWatcher.reloadPageFromMemory(Firebug.currentContext);
- },
-
- onFocusDebugger: function(event)
- {
- Win.iterateBrowserWindows("navigator:browser", function(win)
- {
- return win.Firebug.TabWatcher.iterateContexts(function(context)
- {
- if (context.stopped)
- {
- // Focus browser window with active debugger and select the Script panel
- win.Firebug.focusBrowserTab(context.window);
- win.Firebug.chrome.selectPanel("script");
- return true;
- }
- });
- });
-
- // No context is stopped
- if (FBTrace.DBG_UI_LOOP)
- FBTrace.sysout("script.onFocusDebugger FAILED");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- showInactive: function(parentNode)
- {
- var args = {
- pageTitle: Locale.$STR("script.warning.inactive_during_page_load"),
- suggestion: Locale.$STR("script.suggestion.inactive_during_page_load2")
- };
-
- var box = this.tag.replace(args, parentNode, this);
- var description = box.getElementsByClassName("disabledPanelDescription").item(0);
- FirebugReps.Description.render(args.suggestion, description,
- Obj.bindFixed(Firebug.TabWatcher.reloadPageFromMemory, Firebug.TabWatcher,
- Firebug.currentContext));
-
- return box;
- },
-
- showNotEnabled: function(parentNode)
- {
- var args = {
- pageTitle: Locale.$STR("script.warning.javascript_not_enabled"),
- suggestion: Locale.$STR("script.suggestion.javascript_not_enabled")
- };
-
- var box = this.tag.replace(args, parentNode, this);
- this.enableScriptTag.append({}, box, this);
-
- return box;
- },
-
- showDebuggerInactive: function(parentNode)
- {
- var args = {
- pageTitle: Locale.$STR("script.warning.debugger_not_activated"),
- suggestion: Locale.$STR("script.suggestion.debugger_not_activated")
- };
-
- var box = this.tag.replace(args, parentNode, this);
-
- return box;
- },
-
- showFiltered: function(parentNode)
- {
- var args = {
- pageTitle: Locale.$STR("script.warning.all_scripts_filtered"),
- suggestion: Locale.$STR("script.suggestion.all_scripts_filtered")
- };
- return this.tag.replace(args, parentNode, this);
- },
-
- showNoScript: function(parentNode)
- {
- var args = {
- pageTitle: Locale.$STR("script.warning.no_javascript"),
- suggestion: Locale.$STR("script.suggestion.no_javascript2")
- };
- return this.tag.replace(args, parentNode, this);
- },
-
- showNoDebuggingForSystemSources: function(parentNode)
- {
- var args = {
- pageTitle: Locale.$STR("script.warning.no_system_source_debugging"),
- suggestion: Locale.$STR("script.suggestion.no_system_source_debugging")
- };
-
- var box = this.tag.replace(args, parentNode, this);
- var description = box.getElementsByClassName("disabledPanelDescription").item(0);
- FirebugReps.Description.render(args.suggestion, description,
- Obj.bindFixed(Firebug.chrome.visitWebsite, this, "issue5110"));
-
- return box;
- },
-
- showActivitySuspended: function(parentNode)
- {
- var args = {
- pageTitle: Locale.$STR("script.warning.debugger_active"),
- suggestion: Locale.$STR("script.suggestion.debugger_active")
- };
-
- var box = this.tag.replace(args, parentNode, this);
- this.focusDebuggerTag.append({}, box, this);
-
- return box;
- }
-});
-
-var WarningRep = Firebug.ScriptPanel.WarningRep;
-
-// ********************************************************************************************* //
-
-Firebug.ScriptPanel.BreakpointInfoTip = domplate(Firebug.Rep,
-{
- tag:
- DIV("$expr"),
-
- render: function(parentNode, expr)
- {
- this.tag.replace({expr: expr}, parentNode, this);
- }
-});
-
-// ********************************************************************************************* //
-
-}; // END with (Domplate)
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(Firebug.ScriptPanel);
-
-return Firebug.ScriptPanel;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/firefox",
+ "firebug/chrome/reps",
+ "firebug/lib/domplate",
+ "arch/javascripttool",
+ "arch/compilationunit",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/url",
+ "firebug/js/sourceLink",
+ "firebug/js/stackFrame",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/chrome/window",
+ "firebug/lib/search",
+ "firebug/lib/persist",
+ "firebug/lib/system",
+ "firebug/chrome/menu",
+ "firebug/trace/debug",
+ "firebug/lib/keywords",
+ "firebug/editor/editorSelector",
+ "firebug/chrome/infotip",
+ "firebug/chrome/searchBox",
+ "firebug/js/sourceBox",
+ "firebug/js/watchPanel",
+],
+function (Obj, Firebug, Firefox, FirebugReps, Domplate, JavaScriptTool, CompilationUnit,
+ Locale, Events, Url, SourceLink, StackFrame, Css, Dom, Win, Search, Persist,
+ System, Menu, Debug, Keywords) {
+
+// ********************************************************************************************* //
+// Script panel
+
+Firebug.ScriptPanel = function() {};
+
+for (var p in Firebug.EditorSelector)
+{
+ if (Firebug.EditorSelector.hasOwnProperty(p))
+ Firebug.ScriptPanel[p] = Firebug.EditorSelector[p];
+}
+
+Firebug.ScriptPanel.getEditorOptionKey = function()
+{
+ return "JSEditor";
+};
+
+Firebug.ScriptPanel.reLineNumber = /^[^\\]?#(\d*)$/;
+
+/**
+ * object used to markup JavaScript source lines.
+ * In the namespace Firebug.ScriptPanel.
+ */
+Firebug.ScriptPanel.decorator = Obj.extend(new Firebug.SourceBoxDecorator,
+{
+ decorate: function(sourceBox, unused)
+ {
+ this.markExecutableLines(sourceBox);
+ this.setLineBreakpoints(sourceBox.repObject, sourceBox);
+ },
+
+ markExecutableLines: function(sourceBox)
+ {
+ var compilationUnit = sourceBox.repObject;
+ if (FBTrace.DBG_BP || FBTrace.DBG_LINETABLE)
+ FBTrace.sysout("script.markExecutableLines START: "+compilationUnit.toString());
+
+ var lineNode;
+ var lineNo = sourceBox.firstViewableLine;
+ while (lineNode = sourceBox.getLineNode(lineNo))
+ {
+ if (lineNode.alreadyMarked)
+ {
+ lineNo++;
+ continue;
+ }
+
+ var script = compilationUnit.isExecutableLine(lineNo);
+
+ if (FBTrace.DBG_LINETABLE)
+ FBTrace.sysout("script.markExecutableLines [" + lineNo + "]=" + script);
+
+ if (script)
+ lineNode.setAttribute("executable", "true");
+ else
+ lineNode.removeAttribute("executable");
+
+ lineNode.alreadyMarked = true;
+
+ if (lineNo > sourceBox.lastViewableLine)
+ break;
+
+ lineNo++;
+ }
+
+ if (FBTrace.DBG_BP || FBTrace.DBG_LINETABLE)
+ FBTrace.sysout("script.markExecutableLines DONE: " + compilationUnit.toString());
+ },
+
+ setLineBreakpoints: function(compilationUnit, sourceBox)
+ {
+ compilationUnit.eachBreakpoint(function setAttributes(line, props)
+ {
+ var scriptRow = sourceBox.getLineNode(line);
+ if (scriptRow)
+ {
+ scriptRow.setAttribute("breakpoint", "true");
+ if (props.disabled)
+ scriptRow.setAttribute("disabledBreakpoint", "true");
+
+ if (props.condition)
+ {
+ scriptRow.setAttribute("condition", "true");
+ scriptRow.breakpointCondition = props.condition;
+ }
+ }
+
+ if (FBTrace.DBG_LINETABLE)
+ {
+ FBTrace.sysout("script.setLineBreakpoints found " + scriptRow + " for " + line +
+ "@" + compilationUnit.getURL(), props);
+ }
+ });
+ },
+});
+
+// ********************************************************************************************* //
+
+Firebug.ScriptPanel.prototype = Obj.extend(Firebug.SourceBoxPanel,
+{
+ dispatchName: "scriptPanel",
+
+ /**
+ * Framework connection
+ */
+ updateSourceBox: function(sourceBox)
+ {
+ this.location = sourceBox.repObject;
+ },
+
+ /**
+ * Framework connection
+ */
+ getSourceType: function()
+ {
+ return "js";
+ },
+
+ /**
+ * Framework connection
+ */
+ getDecorator: function(sourceBox)
+ {
+ return Firebug.ScriptPanel.decorator;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // TODO Class method
+
+ onJavaScriptDebugging: function(active)
+ {
+ // Front side state
+ Firebug.jsDebuggerOn = active;
+
+ // If this panel is selected, the change in JSD causes a refresh.
+ // Note that onJavaScriptDebugging is called on the prototype.
+ var selectedPanel = Firebug.chrome.getSelectedPanel();
+ if (selectedPanel && Object.getPrototypeOf(selectedPanel) === this)
+ Firebug.chrome.syncPanel(this.name);
+
+ // Front side UI mark
+ var firebugStatus = Firefox.getElementById("firebugStatus");
+ if (firebugStatus)
+ {
+ // Use enabled state for the status flag. JSD can be active even if
+ // the Script panel itself is deactivated (i.e. because the Console
+ // panel is enabled). See issue 2582 for more details.
+ var enabled = this.isEnabled();
+ firebugStatus.setAttribute("script", (enabled && active) ? "on" : "off");
+ }
+
+ if (Firebug.StartButton)
+ Firebug.StartButton.resetTooltip();
+ else
+ FBTrace.sysout("No Firebug.StartButton in onJavaScriptDebugging?");
+
+ if (FBTrace.DBG_ACTIVATION)
+ {
+ FBTrace.sysout("script.onJavaScriptDebugging " + active + " icon attribute: " +
+ Firefox.getElementById("firebugStatus").getAttribute("script"));
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ showFunction: function(fn)
+ {
+ var sourceLink = Firebug.SourceFile.findSourceForFunction(fn, this.context);
+ if (sourceLink)
+ {
+ this.showSourceLink(sourceLink);
+ }
+ else
+ {
+ // Want to avoid the Script panel if possible
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("no sourcelink for function");
+ }
+ },
+
+ showSourceLink: function(sourceLink, noHighlight)
+ {
+ var compilationUnit = this.context.getCompilationUnit(sourceLink.href);
+ if (compilationUnit)
+ {
+ this.navigate(compilationUnit);
+ if (sourceLink.line)
+ {
+ var highlighter = noHighlight ? null :
+ this.jumpHighlightFactory(sourceLink.line, this.context);
+
+ this.scrollToLine(sourceLink.href, sourceLink.line, highlighter);
+
+ Events.dispatch(this.fbListeners, "onShowSourceLink", [this, sourceLink.line]);
+ }
+
+ // If the source link is selected, clear it so the next link will scroll and highlight.
+ if (sourceLink == this.selection)
+ delete this.selection;
+ }
+ },
+
+ /**
+ * Some source files (compilation units) can be loaded asynchronously (e.g. when using
+ * RequireJS). If this case happens, this method tries it again after a short timeout.
+ *
+ * @param {Object} sourceLink Link to the script and line to be displayed.
+ * @param {Boolean} noHighlight Do not highlight the line
+ * @param {Number} counter Number of async attempts.
+ */
+ showSourceLinkAsync: function(sourceLink, noHighlight, counter)
+ {
+ var compilationUnit = this.context.getCompilationUnit(sourceLink.href);
+ if (compilationUnit)
+ {
+ this.showSourceLink(sourceLink, noHighlight);
+ }
+ else
+ {
+ if (typeof(counter) == "undefined")
+ counter = 15;
+
+ // Stop trying. The target script is probably not going to appear.
+ if (counter < 0)
+ return;
+
+ var self = this;
+ this.context.setTimeout(function()
+ {
+ // If JS execution is stopped at a breakpoint, do not restore the previous
+ // location. The user wants to see the breakpoint now.
+ if (!self.context.stopped)
+ self.showSourceLinkAsync(sourceLink, noHighlight, --counter);
+ }, 50);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ highlightingAttribute: "exe_line",
+
+ removeExeLineHighlight: function(sourceBox)
+ {
+ if (sourceBox.selectedLine)
+ {
+ sourceBox.selectedLine.removeAttribute(this.highlightingAttribute);
+
+ // Make sure the highlighter for the selected line is removed, too (issue 4359).
+ sourceBox.highlighter = null;
+ }
+ },
+
+ highlightLine: function(lineNumber, context)
+ {
+ var panel = this;
+ return function exeHighlightFactory(sourceBox)
+ {
+ panel.removeExeLineHighlight(sourceBox);
+
+ // We close over lineNumber
+ var lineNode = sourceBox.getLineNode(lineNumber);
+ // If null, clears
+ sourceBox.selectedLine = lineNode;
+
+ if (sourceBox.selectedLine)
+ {
+ lineNode.setAttribute(panel.highlightingAttribute, "true");
+ if (context.breakingCause && !context.breakingCause.shown)
+ {
+ context.breakingCause.shown = true;
+ var cause = context.breakingCause;
+ if (cause && Firebug.showBreakNotification)
+ {
+ var box = new Firebug.Breakpoint.BreakNotification(panel.document, cause);
+ box.show(panel.panelNode);
+ sourceBox.breakCauseBox = box;
+ }
+ }
+ }
+
+ if (FBTrace.DBG_BP || FBTrace.DBG_STACK || FBTrace.DBG_COMPILATION_UNITS)
+ {
+ FBTrace.sysout("sourceBox.highlightLine lineNo: "+lineNumber+
+ " sourceBox.selectedLine="+sourceBox.selectedLine+" in "+
+ sourceBox.repObject.getURL());
+ }
+
+ // Sticky, if we have a valid line
+ return sourceBox.selectedLine;
+ };
+ },
+
+ showStackFrameXB: function(frameXB)
+ {
+ if (this.context.stopped)
+ this.showStackFrameTrue(frameXB);
+ else
+ this.showNoStackFrame();
+ },
+
+ showStackFrameTrue: function(frame)
+ {
+ // Make sure the current frame seen by the user is set (issue 4818)
+ // xxxHonza: Better solution (important for remoting)
+ // Set this.context.currentFrame = frame (meaning frameXB) and pass the value of
+ // frameXB during evaluation calls, causing the backend to select the appropriate
+ // frame for frame.eval().
+ this.context.currentFrame = frame.nativeFrame;
+
+ var url = frame.getURL();
+ var lineNo = frame.getLineNumber();
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("showStackFrame: "+url+"@"+lineNo+"\n");
+
+ if (this.context.breakingCause)
+ this.context.breakingCause.lineNo = lineNo;
+
+ this.scrollToLine(url, lineNo, this.highlightLine(lineNo, this.context));
+ this.context.throttle(this.updateInfoTip, this);
+ },
+
+ showNoStackFrame: function()
+ {
+ if (this.selectedSourceBox)
+ {
+ this.removeExeLineHighlight(this.selectedSourceBox);
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("showNoStackFrame clear "+this.selectedSourceBox.repObject.url);
+ }
+
+ var panelStatus = Firebug.chrome.getPanelStatusElements();
+ // Clear the stack on the panel toolbar
+ panelStatus.clear();
+ this.updateInfoTip();
+
+ var watchPanel = this.context.getPanel("watches", true);
+ if (watchPanel)
+ watchPanel.showEmptyMembers();
+ },
+
+ toggleBreakpoint: function(lineNo)
+ {
+ var href = this.getSourceBoxURL(this.selectedSourceBox);
+ var lineNode = this.selectedSourceBox.getLineNode(lineNo);
+
+ if (!lineNode)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("script.toggleBreakpoint no lineNode at " + lineNo +
+ " in selectedSourceBox with URL " + href, this.selectedSourceBox);
+ }
+
+ return;
+ }
+
+ if (FBTrace.DBG_BP)
+ {
+ FBTrace.sysout("script.toggleBreakpoint lineNo=" + lineNo + " lineNode.breakpoint:" +
+ (lineNode ? lineNode.getAttribute("breakpoint") : "(no lineNode)"),
+ this.selectedSourceBox);
+ }
+
+ if (lineNode.getAttribute("breakpoint") == "true")
+ JavaScriptTool.clearBreakpoint(this.context, href, lineNo);
+ else
+ JavaScriptTool.setBreakpoint(this.context, href, lineNo);
+ },
+
+ toggleDisableBreakpoint: function(lineNo)
+ {
+ var href = this.getSourceBoxURL(this.selectedSourceBox);
+
+ var lineNode = this.selectedSourceBox.getLineNode(lineNo);
+ if (lineNode.getAttribute("disabledBreakpoint") == "true")
+ {
+ JavaScriptTool.enableBreakpoint(this.context, href, lineNo);
+ }
+ else
+ {
+ if (lineNode.getAttribute("breakpoint") != "true")
+ JavaScriptTool.setBreakpoint(this.context, href, lineNo);
+
+ JavaScriptTool.disableBreakpoint(this.context, href, lineNo);
+ }
+ },
+
+ editBreakpointCondition: function(lineNo)
+ {
+ var sourceRow = this.selectedSourceBox.getLineNode(lineNo);
+ var sourceLine = Dom.getChildByClass(sourceRow, "sourceLine");
+ var condition = JavaScriptTool.getBreakpointCondition(this.context,
+ this.location.getURL(), lineNo);
+
+ if (condition)
+ {
+ var watchPanel = this.context.getPanel("watches", true);
+ watchPanel.removeWatch(condition);
+ watchPanel.rebuild();
+ }
+
+ Firebug.Editor.startEditing(sourceLine, condition);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ addSelectionWatch: function()
+ {
+ var watchPanel = this.context.getPanel("watches", true);
+ if (watchPanel)
+ {
+ var selection = this.document.defaultView.getSelection();
+ var source = this.getSourceLinesFrom(selection);
+ watchPanel.addWatch(source);
+ }
+ },
+
+ copySource: function()
+ {
+ var selection = this.document.defaultView.getSelection();
+ var source = this.getSourceLinesFrom(selection);
+ System.copyToClipboard(source);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Info Tips
+
+ updateInfoTip: function()
+ {
+ var infoTip = this.panelBrowser.infoTip;
+ if (infoTip && this.infoTipExpr)
+ this.populateInfoTip(infoTip, this.infoTipExpr);
+ },
+
+ showInfoTip: function(infoTip, target, x, y, rangeParent, rangeOffset)
+ {
+ var sourceLine = Dom.getAncestorByClass(target, "sourceLine");
+ if (sourceLine)
+ return this.populateBreakpointInfoTip(infoTip, sourceLine);
+
+ var frame = this.context.currentFrame;
+ if (!frame)
+ return;
+
+ var sourceRowText = Dom.getAncestorByClass(target, "sourceRowText");
+ if (!sourceRowText)
+ return;
+
+ // See http://code.google.com/p/fbug/issues/detail?id=889
+ // Idea from: Jonathan Zarate's rikaichan extension (http://www.polarcloud.com/rikaichan/)
+ if (!rangeParent)
+ return;
+
+ rangeOffset = rangeOffset || 0;
+ var expr = getExpressionAt(rangeParent.data, rangeOffset);
+ if (!expr || !expr.expr)
+ return;
+
+ if (expr.expr == this.infoTipExpr)
+ return true;
+ else
+ return this.populateInfoTip(infoTip, expr.expr);
+ },
+
+ populateInfoTip: function(infoTip, expr)
+ {
+ if (!expr || Keywords.isJavaScriptKeyword(expr))
+ return false;
+
+ var self = this;
+
+ // If the evaluate fails, then we report an error and don't show the infotip
+ Firebug.CommandLine.evaluate(expr, this.context, null, this.context.getCurrentGlobal(),
+ function success(result, context)
+ {
+ var rep = Firebug.getRep(result, context);
+ var tag = rep.shortTag ? rep.shortTag : rep.tag;
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("populateInfoTip result is "+result, result);
+
+ tag.replace({object: result}, infoTip);
+
+ // If the menu is never displayed, the contextMenuObject is not reset
+ // (back to null) and is reused at the next time the user opens the
+ // context menu, which is wrong.
+ // This line was appended when fixing:
+ // http://code.google.com/p/fbug/issues/detail?id=1700
+ // The object should be returned by getPopupObject(),
+ // that is called when the context menu is showing.
+ // The problem is, that the "onContextShowing" event doesn't have the
+ // rangeParent field set and so it isn't possible to get the
+ // expression under the cursor (see getExpressionAt).
+ //Firebug.chrome.contextMenuObject = result;
+
+ self.infoTipExpr = expr;
+ },
+ function failed(result, context)
+ {
+ self.infoTipExpr = "";
+ }
+ );
+ return (self.infoTipExpr == expr);
+ },
+
+ populateBreakpointInfoTip: function(infoTip, sourceLine)
+ {
+ var sourceRow = Dom.getAncestorByClass(sourceLine, "sourceRow");
+ var condition = sourceRow.getAttribute("condition");
+ if (!condition)
+ return false;
+
+ var expr = sourceRow.breakpointCondition;
+ if (!expr)
+ return false;
+
+ if (expr == this.infoTipExpr)
+ return true;
+
+ Firebug.ScriptPanel.BreakpointInfoTip.render(infoTip, expr);
+
+ this.infoTipExpr = expr;
+
+ return true;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // UI event listeners
+
+ onMouseDown: function(event)
+ {
+ // Don't interfere with clicks made into a notification editor.
+ if (Dom.getAncestorByClass(event.target, "breakNotification"))
+ return;
+
+ var sourceLine = Dom.getAncestorByClass(event.target, "sourceLine");
+ if (!sourceLine)
+ return;
+
+ var compilationUnit = Dom.getAncestorByClass(sourceLine, "sourceBox").repObject;
+ var lineNo = parseInt(sourceLine.textContent);
+
+ if (Events.isLeftClick(event))
+ {
+ this.toggleBreakpoint(lineNo);
+ }
+ else if (Events.isShiftClick(event))
+ {
+ this.toggleDisableBreakpoint(lineNo);
+ }
+ else if (Events.isControlClick(event) || Events.isMiddleClick(event))
+ {
+ JavaScriptTool.runUntil(compilationUnit, lineNo);
+ Events.cancelEvent(event);
+ }
+ },
+
+ onContextMenu: function(event)
+ {
+ var sourceLine = Dom.getAncestorByClass(event.target, "sourceLine");
+ if (!sourceLine)
+ return;
+
+ var lineNo = parseInt(sourceLine.textContent);
+ this.editBreakpointCondition(lineNo);
+ Events.cancelEvent(event);
+ },
+
+ onMouseOver: function(event)
+ {
+ var sourceLine = Dom.getAncestorByClass(event.target, "sourceLine");
+ if (sourceLine)
+ {
+ if (this.hoveredLine)
+ Css.removeClass(this.hoveredLine.parentNode, "hovered");
+
+ this.hoveredLine = sourceLine;
+
+ if (Dom.getAncestorByClass(sourceLine, "sourceViewport"))
+ Css.setClass(sourceLine.parentNode, "hovered");
+ }
+ },
+
+ onMouseOut: function(event)
+ {
+ var sourceLine = Dom.getAncestorByClass(event.relatedTarget, "sourceLine");
+ if (!sourceLine)
+ {
+ if (this.hoveredLine)
+ Css.removeClass(this.hoveredLine.parentNode, "hovered");
+
+ delete this.hoveredLine;
+ }
+ },
+
+ onScroll: function(event)
+ {
+ var scrollingElement = event.target;
+ this.reView(scrollingElement);
+ var searchBox = Firebug.chrome.$("fbSearchBox");
+ searchBox.placeholder = Locale.$STR("Use hash plus number to go to line");
+ },
+
+ onKeyPress: function(event)
+ {
+ var ch = String.fromCharCode(event.charCode);
+ var searchBox = Firebug.chrome.$("fbSearchBox");
+
+ if (ch == "l" && Events.isControl(event))
+ {
+ searchBox.value = "#";
+ searchBox.focus();
+
+ Events.cancelEvent(event);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Panel
+
+ name: "script",
+ searchable: true,
+ breakable: true,
+ enableA11y: true,
+ order: 40,
+
+ initialize: function(context, doc)
+ {
+ this.location = null;
+
+ this.onMouseDown = Obj.bind(this.onMouseDown, this);
+ this.onContextMenu = Obj.bind(this.onContextMenu, this);
+ this.onMouseOver = Obj.bind(this.onMouseOver, this);
+ this.onMouseOut = Obj.bind(this.onMouseOut, this);
+ this.onScroll = Obj.bind(this.onScroll, this);
+ this.onKeyPress = Obj.bind(this.onKeyPress, this);
+
+ this.panelSplitter = Firebug.chrome.$("fbPanelSplitter");
+ this.sidePanelDeck = Firebug.chrome.$("fbSidePanelDeck");
+
+ Firebug.SourceBoxPanel.initialize.apply(this, arguments);
+ },
+
+ destroy: function(state)
+ {
+ // We want the location (compilationUnit) to persist, not the selection (eg stackFrame).
+ delete this.selection;
+
+ var sourceBox = this.selectedSourceBox;
+ if (sourceBox)
+ {
+ if (sourceBox.centralLine)
+ state.previousCentralLine = sourceBox.centralLine;
+ else
+ state.scrollTop = sourceBox.scrollTop ? sourceBox.scrollTop : this.lastScrollTop;
+
+ delete this.selectedSourceBox;
+ }
+
+ Persist.persistObjects(this, state);
+
+ if (this.location instanceof CompilationUnit)
+ {
+ state.location = this.location;
+ }
+ else
+ {
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ {
+ FBTrace.sysout("script.destroy had location not a CompilationUnit ",
+ this.location);
+ }
+ }
+
+ // xxxHonza: why this is here? I don't see addListener.
+ //Firebug.connection.removeListener(this);
+
+ // Make sure listeners are removed.
+ this.detachListeners(this.context, Firebug.chrome);
+
+ Firebug.SourceBoxPanel.destroy.apply(this, arguments);
+ },
+
+ initializeNode: function(oldPanelNode)
+ {
+ this.tooltip = this.document.createElement("div");
+ Css.setClass(this.tooltip, "scriptTooltip");
+ this.tooltip.setAttribute('aria-live', 'polite');
+ Css.obscure(this.tooltip, true);
+ this.panelNode.appendChild(this.tooltip);
+
+ Events.addEventListener(this.panelNode, "mousedown", this.onMouseDown, true);
+ Events.addEventListener(this.panelNode, "contextmenu", this.onContextMenu, false);
+ Events.addEventListener(this.panelNode, "mouseover", this.onMouseOver, false);
+ Events.addEventListener(this.panelNode, "mouseout", this.onMouseOut, false);
+ Events.addEventListener(this.panelNode, "scroll", this.onScroll, true);
+
+ Firebug.SourceBoxPanel.initializeNode.apply(this, arguments);
+ },
+
+ destroyNode: function()
+ {
+ if (this.tooltipTimeout)
+ clearTimeout(this.tooltipTimeout);
+
+ Events.removeEventListener(this.panelNode, "mousedown", this.onMouseDown, true);
+ Events.removeEventListener(this.panelNode, "contextmenu", this.onContextMenu, false);
+ Events.removeEventListener(this.panelNode, "mouseover", this.onMouseOver, false);
+ Events.removeEventListener(this.panelNode, "mouseout", this.onMouseOut, false);
+ Events.removeEventListener(this.panelNode, "scroll", this.onScroll, true);
+
+ Firebug.SourceBoxPanel.destroyNode.apply(this, arguments);
+ },
+
+ clear: function()
+ {
+ Dom.clearNode(this.panelNode);
+ },
+
+ showWarning: function()
+ {
+ // Fill the panel node with a warning if needed
+ var aLocation = this.getDefaultLocation();
+ var jsEnabled = Firebug.Options.getPref("javascript", "enabled");
+
+ if (FBTrace.DBG_PANELS)
+ {
+ FBTrace.sysout("script.showWarning; " + this.context.getName(), {
+ jsDebuggerOn: Firebug.jsDebuggerOn,
+ jsDebuggerCalledUs: this.context.jsDebuggerCalledUs,
+ jsEnabled: jsEnabled,
+ aLocation: aLocation,
+ activitySuspended: this.context.activitySuspended,
+ stopped: this.context.stopped
+ });
+ }
+
+ var currentURI = Firefox.getCurrentURI();
+ var activitySuspended = this.isActivitySuspended();
+ if (activitySuspended && !this.context.stopped)
+ {
+ // Make sure that the content of the panel is restored as soon as
+ // the debugger is resumed.
+ this.restored = false;
+ this.activeWarningTag = WarningRep.showActivitySuspended(this.panelNode);
+ }
+ else if (!jsEnabled)
+ {
+ this.activeWarningTag = WarningRep.showNotEnabled(this.panelNode);
+ }
+ else if (currentURI && (Url.isSystemURL(currentURI.spec) ||
+ currentURI.spec.match(Url.reChrome)))
+ {
+ this.activeWarningTag = WarningRep.showNoDebuggingForSystemSources(this.panelNode);
+ }
+ else if (this.context.allScriptsWereFiltered)
+ {
+ this.activeWarningTag = WarningRep.showFiltered(this.panelNode);
+ }
+ else if (aLocation && !this.context.jsDebuggerCalledUs)
+ {
+ this.activeWarningTag = WarningRep.showInactive(this.panelNode);
+ }
+ else if (!Firebug.jsDebuggerOn) // set asynchronously by jsd in FF 4.0
+ {
+ this.activeWarningTag = WarningRep.showDebuggerInactive(this.panelNode);
+ }
+ else if (!aLocation) // they were not filtered, we just had none
+ {
+ this.activeWarningTag = WarningRep.showNoScript(this.panelNode);
+ }
+ else
+ {
+ return false;
+ }
+
+ return true;
+ },
+
+ isActivitySuspended: function()
+ {
+ return Win.iterateBrowserWindows("navigator:browser", function(win)
+ {
+ // Firebug doesn't have to be loaded in every browser window (see delayed load).
+ if (!win.Firebug.TabWatcher)
+ return false;
+
+ return win.Firebug.TabWatcher.iterateContexts(function(context)
+ {
+ if (context.stopped)
+ return true;
+ });
+ });
+ },
+
+ show: function(state)
+ {
+ var enabled = this.isEnabled();
+ if (!enabled)
+ return;
+
+ var active = !this.showWarning();
+
+ if (active)
+ {
+ Events.addEventListener(this.panelNode.ownerDocument, "keypress", this.onKeyPress, true);
+ Events.addEventListener(this.resizeEventTarget, "resize", this.onResize, true);
+
+ this.location = this.getDefaultLocation();
+
+ if (this.context.loaded)
+ {
+ if (!this.restored)
+ {
+ // remove the default location, if any
+ delete this.location;
+ Persist.restoreLocation(this, state);
+ this.restored = true;
+ }
+ else
+ {
+ // we already restored
+ if (!this.selectedSourceBox)
+ {
+ // but somehow we did not make a sourcebox?
+ this.navigate(this.location);
+ }
+ else
+ {
+ // then we can sync the location to the sourcebox
+ this.updateSourceBox(this.selectedSourceBox);
+ }
+ }
+
+ if (state)
+ {
+ if (state.location)
+ {
+ var sourceLink = new SourceLink.SourceLink(state.location.getURL(),
+ state.previousCentralLine, "js");
+
+ // Causes the Script panel to show the proper location.
+ // Do not highlight the line (second argument true), we just want
+ // to restore the position.
+ // Also do it asynchronously, the script doesn't have to be
+ // available immediately.
+ this.showSourceLinkAsync(sourceLink, true);
+
+ // Do not restore the location again, it could happen during
+ // the single stepping and overwrite the debugger location.
+ delete state.location;
+ }
+
+ if (state.scrollTop)
+ {
+ this.selectedSourceBox.scrollTop = state.scrollTop;
+ }
+ }
+ }
+ else // show default
+ {
+ this.navigate(this.location);
+ }
+
+ this.highlight(this.context.stopped);
+
+ var breakpointPanel = this.context.getPanel("breakpoints", true);
+ if (breakpointPanel)
+ breakpointPanel.refresh();
+
+ this.syncCommands(this.context);
+ this.ableWatchSidePanel(this.context);
+ }
+
+ Dom.collapse(Firebug.chrome.$("fbToolbar"), !active);
+
+ // These buttons are visible only, if debugger is enabled.
+ this.showToolbarButtons("fbLocationSeparator", active);
+ this.showToolbarButtons("fbDebuggerButtons", active);
+ this.showToolbarButtons("fbLocationButtons", active);
+ this.showToolbarButtons("fbScriptButtons", active);
+ this.showToolbarButtons("fbStatusButtons", active);
+ this.showToolbarButtons("fbLocationList", active);
+
+ Firebug.chrome.$("fbRerunButton").setAttribute("tooltiptext",
+ Locale.$STRF("firebug.labelWithShortcut", [Locale.$STR("script.Rerun"), "Shift+F8"]));
+ Firebug.chrome.$("fbContinueButton").setAttribute("tooltiptext",
+ Locale.$STRF("firebug.labelWithShortcut", [Locale.$STR("script.Continue"), "F8"]));
+ Firebug.chrome.$("fbStepIntoButton").setAttribute("tooltiptext",
+ Locale.$STRF("firebug.labelWithShortcut", [Locale.$STR("script.Step_Into"), "F11"]));
+ Firebug.chrome.$("fbStepOverButton").setAttribute("tooltiptext",
+ Locale.$STRF("firebug.labelWithShortcut", [Locale.$STR("script.Step_Over"), "F10"]));
+ Firebug.chrome.$("fbStepOutButton").setAttribute("tooltiptext",
+ Locale.$STRF("firebug.labelWithShortcut",
+ [Locale.$STR("script.Step_Out"), "Shift+F11"]));
+
+ // Additional debugger panels are visible only, if debugger is active.
+ this.panelSplitter.collapsed = !active;
+ this.sidePanelDeck.collapsed = !active;
+ },
+
+ hide: function(state)
+ {
+ if (this.selectedSourceBox)
+ this.lastScrollTop = this.selectedSourceBox.scrollTop;
+
+ this.highlight(this.context.stopped);
+
+ Events.removeEventListener(this.panelNode.ownerDocument, "keypress", this.onKeyPress,
+ true);
+ Events.removeEventListener(this.resizeEventTarget, "resize", this.onResize, true);
+
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("script panel HIDE removed onResize eventhandler");
+
+ var panelStatus = Firebug.chrome.getPanelStatusElements();
+ Dom.hide(panelStatus, false);
+
+ delete this.infoTipExpr;
+ },
+
+ ableWatchSidePanel: function(context)
+ {
+ // TODO if (commandline is not active, then we should not show the new watch feature)
+ var watchPanel = context.getPanel("watches", true);
+ if (watchPanel)
+ return watchPanel;
+ },
+
+ search: function(text, reverse)
+ {
+ var sourceBox = this.selectedSourceBox;
+ if (!text || !sourceBox)
+ {
+ delete this.currentSearch;
+ return false;
+ }
+
+ // Check, if the search is for a line number
+ var m = Firebug.ScriptPanel.reLineNumber.exec(text);
+ if (m)
+ {
+ if (!m[1])
+ return true; // Don't beep, if only a # has been typed
+
+ var lineNo = parseInt(m[1]);
+ if (!isNaN(lineNo) && (lineNo > 0) && (lineNo < sourceBox.lines.length) )
+ {
+ this.scrollToLine(sourceBox.repObject.getURL(), lineNo,
+ this.jumpHighlightFactory(lineNo, this.context));
+ return true;
+ }
+ }
+
+ var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse);
+ if (!curDoc && Firebug.searchGlobal)
+ {
+ return this.searchOtherDocs(text, reverse) ||
+ this.searchCurrentDoc(true, text, reverse);
+ }
+ return curDoc;
+ },
+
+ searchOtherDocs: function(text, reverse)
+ {
+ var scanRE = Firebug.Search.getTestingRegex(text);
+
+ var self = this;
+
+ function scanDoc(compilationUnit)
+ {
+ var lines = null;
+
+ // TODO The source lines arrive asynchronous in general
+ compilationUnit.getSourceLines(-1, -1, function loadSource(unit, firstLineNumber,
+ lastLineNumber, linesRead)
+ {
+ lines = linesRead;
+ });
+
+ if (!lines)
+ return;
+
+ // We don't care about reverse here as we are just looking for existence.
+ // If we do have a result, we will handle the reverse logic on display.
+ for (var i = 0; i < lines.length; i++)
+ {
+ if (scanRE.test(lines[i]))
+ return true;
+ }
+ }
+
+ if (this.navigateToNextDocument(scanDoc, reverse))
+ return this.searchCurrentDoc(true, text, reverse) && "wraparound";
+ },
+
+ searchCurrentDoc: function(wrapSearch, text, reverse)
+ {
+ var sourceBox = this.selectedSourceBox;
+
+ var lineNo = null;
+ if (this.currentSearch && text == this.currentSearch.text)
+ {
+ lineNo = this.currentSearch.findNext(wrapSearch, reverse,
+ Firebug.Search.isCaseSensitive(text));
+ }
+ else
+ {
+ if (!this.currentSearch || !this.currentSearch.tryToContinueSearch(sourceBox, text))
+ this.currentSearch = new Search.SourceBoxTextSearch(sourceBox);
+
+ lineNo = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
+ }
+
+ if (lineNo || lineNo === 0)
+ {
+ // This lineNo is an zero-based index into sourceBox.lines.
+ // Add one for user line numbers
+ this.scrollToLine(sourceBox.repObject.getURL(), lineNo,
+ this.jumpHighlightFactory(lineNo+1, this.context));
+
+ Events.dispatch(this.fbListeners, "onScriptSearchMatchFound",
+ [this, text, sourceBox.repObject, lineNo]);
+
+ return this.currentSearch.wrapped ? "wraparound" : true;
+ }
+ else
+ {
+ Events.dispatch(this.fbListeners, "onScriptSearchMatchFound",
+ [this, text, null, null]);
+
+ return false;
+ }
+ },
+
+ getSearchOptionsMenuItems: function()
+ {
+ return [
+ Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive",
+ "search.tip.Case_Sensitive"),
+ Firebug.Search.searchOptionMenu("search.Multiple_Files", "searchGlobal",
+ "search.tip.Multiple_Files"),
+ Firebug.Search.searchOptionMenu("search.Use_Regular_Expression",
+ "searchUseRegularExpression", "search.tip.Use_Regular_Expression")
+ ];
+ },
+
+ supportsObject: function(object, type)
+ {
+ if (object instanceof CompilationUnit
+ || (object instanceof SourceLink.SourceLink && object.type == "js")
+ || typeof(object) == "function"
+ || object instanceof StackFrame.StackFrame)
+ {
+ return 1;
+ }
+
+ return 0;
+ },
+
+ // Delete any sourceBoxes that are not in sync with compilationUnits
+ refresh: function()
+ {
+ var previousCentralLine;
+ var previousUrl;
+
+ for (var url in this.sourceBoxes)
+ {
+ if (this.sourceBoxes.hasOwnProperty(url))
+ {
+ var sourceBox = this.sourceBoxes[url];
+ var compilationUnit = this.context.getCompilationUnit(url);
+
+ // then out of sync
+ if (!compilationUnit || compilationUnit != sourceBox.repObject)
+ {
+ var victim = this.sourceBoxes[url];
+ delete this.sourceBoxes[url];
+ if (this.selectedSourceBox == victim)
+ {
+ previousCentralLine = this.selectedSourceBox.centralLine;
+ previousUrl = this.getSourceBoxURL(this.selectedSourceBox);
+
+ Dom.collapse(this.selectedSourceBox, true);
+ delete this.selectedSourceBox;
+ }
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("script.refresh deleted sourceBox for " + url);
+ }
+ }
+ }
+
+ // If selectedSourceBox is undefined, then show() has not run,
+ // but we have to refresh, so do the default.
+ if (!this.selectedSourceBox)
+ {
+ // If the current source-box has been deleted because it's out of sync
+ // (the victim, see above), we need to navigate again to the same URL.
+ // Otherwise the script panel would coincidentally switch to another script.
+ // (see issue 5134)
+ var object;
+ if (previousUrl)
+ object = this.context.getCompilationUnit(previousUrl);
+
+ this.navigate(object);
+
+ // Restore the scroll position (issue 5111)
+ if (this.selectedSourceBox)
+ {
+ var url = this.getSourceBoxURL(this.selectedSourceBox);
+ if (this.selectedSourceBox && url == previousUrl)
+ this.scrollToLine(null, previousCentralLine);
+ }
+ }
+ },
+
+ updateLocation: function(compilationUnit)
+ {
+ // XXXjjb do we need to show a blank?
+ if (!compilationUnit)
+ return;
+
+ if (!(compilationUnit instanceof CompilationUnit))
+ {
+ FBTrace.sysout("Script panel location not a CompilationUnit: ", compilationUnit);
+ throw new Error("Script panel location not a CompilationUnit: " + compilationUnit);
+ }
+
+ // Since our last use of the compilationUnit we may have compiled or
+ // recompiled the source
+ var updatedCompilationUnit = this.context.getCompilationUnit(compilationUnit.getURL());
+ if (!updatedCompilationUnit)
+ updatedCompilationUnit = this.getDefaultLocation();
+
+ if (!updatedCompilationUnit)
+ return;
+
+ if (this.activeWarningTag)
+ {
+ Dom.clearNode(this.panelNode);
+ delete this.activeWarningTag;
+
+ // The user was seeing the warning, but selected a file to show in the Script panel.
+ // The removal of the warning leaves the panel without a clientHeight, so
+ // the old sourcebox will be out of sync. Just remove it and start over.
+ this.removeAllSourceBoxes();
+ // we are not passing state so I guess we could miss a restore
+ this.show();
+
+ // If show() reset the flag, obey it
+ if (this.activeWarningTag)
+ return;
+ }
+
+ this.showSource(updatedCompilationUnit.getURL());
+ Events.dispatch(this.fbListeners, "onUpdateScriptLocation", [this, updatedCompilationUnit]);
+ },
+
+ updateSelection: function(object)
+ {
+ if (FBTrace.DBG_PANELS)
+ {
+ FBTrace.sysout("script updateSelection object:" + object + " of type " +
+ typeof(object), object);
+
+ if (object instanceof CompilationUnit)
+ FBTrace.sysout("script updateSelection this.navigate(object)", object);
+ else if (object instanceof SourceLink.SourceLink)
+ FBTrace.sysout("script updateSelection this.showSourceLink(object)", object);
+ else if (typeof(object) == "function")
+ FBTrace.sysout("script updateSelection this.showFunction(object)", object);
+ else if (object instanceof StackFrame.StackFrame)
+ FBTrace.sysout("script updateSelection this.showStackFrameXB(object)", object);
+ else
+ FBTrace.sysout("script updateSelection this.showStackFrame(null)", object);
+ }
+
+ if (object instanceof CompilationUnit)
+ this.navigate(object);
+ else if (object instanceof SourceLink.SourceLink)
+ this.showSourceLink(object);
+ else if (typeof(object) == "function")
+ this.showFunction(object);
+ else if (object instanceof StackFrame.StackFrame)
+ this.showStackFrameXB(object);
+ },
+
+ showThisCompilationUnit: function(compilationUnit)
+ {
+ if (compilationUnit.getURL().lastIndexOf("chrome://", 0) === 0)
+ return false;
+
+ if (compilationUnit.getKind() === CompilationUnit.EVAL && !this.showEvals)
+ return false;
+
+ if (compilationUnit.getKind() === CompilationUnit.BROWSER_GENERATED && !this.showEvents)
+ return false;
+
+ return true;
+ },
+
+ getLocationList: function()
+ {
+ var context = this.context;
+
+ var allSources = context.getAllCompilationUnits();
+
+ if (!allSources.length)
+ return [];
+
+ var filter = Firebug.Options.get("scriptsFilter");
+ this.showEvents = (filter == "all" || filter == "events");
+ this.showEvals = (filter == "all" || filter == "evals");
+
+ var list = [];
+ for (var i = 0; i < allSources.length; i++)
+ {
+ if (this.showThisCompilationUnit(allSources[i]))
+ {
+ list.push(allSources[i]);
+ }
+ else if (FBTrace.DBG_COMPILATION_UNITS)
+ {
+ FBTrace.sysout("scrpt.getLocationList filtered "+allSources[i].getURL(),
+ allSources[i]);
+ }
+ }
+
+ if (!list.length && allSources.length)
+ this.context.allScriptsWereFiltered = true;
+ else
+ delete this.context.allScriptsWereFiltered;
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ {
+ FBTrace.sysout("script.getLocationList enabledOnLoad:" + context.onLoadWindowContent +
+ " all:" + allSources.length + " filtered:" + list.length + " allFiltered: " +
+ this.context.allScriptsWereFiltered, list);
+ }
+
+ return list;
+ },
+
+ getDefaultLocation: function()
+ {
+ var compilationUnits = this.getLocationList();
+ if (!compilationUnits.length)
+ return null;
+
+ if (this.context)
+ {
+ var url = this.context.getWindowLocation();
+ for (var i = 0; i < compilationUnits.length; i++)
+ {
+ if (url == compilationUnits[i].getURL())
+ return compilationUnits[i];
+ }
+ }
+
+ return compilationUnits[0];
+ },
+
+ getDefaultSelection: function()
+ {
+ return this.getDefaultLocation();
+ },
+
+ getTooltipObject: function(target)
+ {
+ // Target should be an element with class = sourceLine
+ if (Css.hasClass(target, "sourceLine"))
+ return null; // TODO
+
+ return null;
+ },
+
+ getPopupObject: function(target)
+ {
+ // Don't show the popup over the line numbers. We show the conditional breakpoint
+ // editor there instead
+ if (Dom.getAncestorByClass(target, "sourceLine"))
+ return;
+
+ var sourceRow = Dom.getAncestorByClass(target, "sourceRow");
+ if (!sourceRow)
+ return;
+
+ var lineNo = parseInt(sourceRow.firstChild.textContent);
+ var scripts = Firebug.SourceFile.findScripts(this.context, this.location.getURL(), lineNo);
+
+ // Gee I wonder what will happen?
+ return scripts;
+ },
+
+ getObjectPath: function(frame)
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("script.getObjectPath "+frame, frame);
+
+ if (!frame || !frame.getStackNewestFrame) // then its probably not a frame after all
+ return;
+
+ var frames = [];
+ frame = frame.getStackNewestFrame();
+ for (; frame; frame = frame.getCallingFrame())
+ frames.push(frame);
+
+ return frames;
+ },
+
+ getObjectLocation: function(compilationUnit)
+ {
+ return compilationUnit.getURL();
+ },
+
+ // return.path: group/category label, return.name: item label
+ getObjectDescription: function(compilationUnit)
+ {
+ return Url.splitURLBase(compilationUnit.getURL());
+ },
+
+ getSourceLink: function(target, object)
+ {
+ var sourceRow = Dom.getAncestorByClass(target, "sourceRow");
+ if (!sourceRow)
+ return;
+
+ var sourceLine = Dom.getChildByClass(sourceRow, "sourceLine");
+ var lineNo = parseInt(sourceLine.textContent);
+ return new SourceLink.SourceLink(this.location.url, lineNo, "js");
+ },
+
+ getOptionsMenuItems: function()
+ {
+ var context = this.context;
+
+ return [
+ // 1.2: always check last line; optionMenu("UseLastLineForEvalName", "useLastLineForEvalName"),
+ // 1.2: always use MD5 optionMenu("UseMD5ForEvalName", "useMD5ForEvalName")
+ Menu.optionMenu("script.option.Track_Throw_Catch", "trackThrowCatch",
+ "script.option.tip.Track_Throw_Catch"),
+ //"-",
+ //1.2 option on toolbar this.optionMenu("DebuggerEnableAlways", enableAlwaysPref)
+ Menu.optionMenu("firebug.breakpoint.showBreakNotifications", "showBreakNotification",
+ "firebug.breakpoint.tip.Show_Break_Notifications")
+ ];
+ },
+
+ optionMenu: function(label, option)
+ {
+ var checked = Firebug.Options.get(option);
+ return {
+ label: label, type: "checkbox", checked: checked,
+ command: function()
+ {
+ var checked = this.hasAttribute("checked");
+ Firebug.Options.set(option, checked);
+ }
+ };
+ },
+
+ getContextMenuItems: function(fn, target)
+ {
+ if (Dom.getAncestorByClass(target, "sourceLine"))
+ return;
+
+ var sourceRow = Dom.getAncestorByClass(target, "sourceRow");
+ if (!sourceRow)
+ return;
+
+ var sourceLine = Dom.getChildByClass(sourceRow, "sourceLine");
+ var lineNo = parseInt(sourceLine.textContent);
+
+ var items = [];
+
+ var selection = this.document.defaultView.getSelection();
+ if (selection.toString())
+ {
+ items.push(
+ {
+ label: "CopySourceCode",
+ tooltiptext: "script.tip.Copy_Source_Code",
+ command: Obj.bind(this.copySource, this)
+ },
+ "-",
+ {
+ label: "AddWatch",
+ tooltiptext: "watch.tip.Add_Watch",
+ command: Obj.bind(this.addSelectionWatch, this)
+ }
+ );
+ }
+
+ var hasBreakpoint = sourceRow.getAttribute("breakpoint") == "true";
+
+ items.push(
+ "-",
+ {
+ label: "SetBreakpoint",
+ tooltiptext: "script.tip.Set_Breakpoint",
+ type: "checkbox",
+ checked: hasBreakpoint,
+ command: Obj.bindFixed(this.toggleBreakpoint, this, lineNo)
+ }
+ );
+
+ if (hasBreakpoint)
+ {
+ var isDisabled = JavaScriptTool.isBreakpointDisabled(this.context, this.location.href,
+ lineNo);
+ items.push(
+ {
+ label: "breakpoints.Disable_Breakpoint",
+ tooltiptext: "breakpoints.tip.Disable_Breakpoint",
+ type: "checkbox",
+ checked: isDisabled,
+ command: Obj.bindFixed(this.toggleDisableBreakpoint, this, lineNo)
+ }
+ );
+ }
+
+ items.push(
+ {
+ label: "EditBreakpointCondition",
+ tooltiptext: "breakpoints.tip.Edit_Breakpoint_Condition",
+ command: Obj.bindFixed(this.editBreakpointCondition, this, lineNo)
+ }
+ );
+
+ if (this.context.stopped)
+ {
+ var sourceRow = Dom.getAncestorByClass(target, "sourceRow");
+ if (sourceRow)
+ {
+ var compilationUnit = Dom.getAncestorByClass(sourceRow, "sourceBox").repObject;
+ var lineNo = parseInt(sourceRow.firstChild.textContent);
+
+ var debuggr = this;
+ items.push(
+ "-",
+ {
+ label: "script.Rerun",
+ tooltiptext: "script.tip.Rerun",
+ id: "contextMenuRerun",
+ command: Obj.bindFixed(debuggr.rerun, debuggr, this.context),
+ acceltext: "Shift+F8"
+ },
+ {
+ label: "script.Continue",
+ tooltiptext: "script.tip.Continue",
+ id: "contextMenuContinue",
+ command: Obj.bindFixed(debuggr.resume, debuggr, this.context),
+ acceltext: "F8"
+ },
+ {
+ label: "script.Step_Over",
+ tooltiptext: "script.tip.Step_Over",
+ id: "contextMenuStepOver",
+ command: Obj.bindFixed(debuggr.stepOver, debuggr, this.context),
+ acceltext: "F10"
+ },
+ {
+ label: "script.Step_Into",
+ tooltiptext: "script.tip.Step_Into",
+ id: "contextMenuStepInto",
+ command: Obj.bindFixed(debuggr.stepInto, debuggr, this.context),
+ acceltext: "F11"
+ },
+ {
+ label: "script.Step_Out",
+ tooltiptext: "script.tip.Step_Out",
+ id: "contextMenuStepOut",
+ command: Obj.bindFixed(debuggr.stepOut, debuggr, this.context),
+ acceltext: "Shift+F11"
+ },
+ {
+ label: "firebug.RunUntil",
+ tooltiptext: "script.tip.Run_Until",
+ id: "contextMenuRunUntil",
+ command: Obj.bindFixed(debuggr.runUntil, debuggr, this.context,
+ compilationUnit, lineNo)
+ }
+ );
+ }
+ }
+
+ return items;
+ },
+
+ getEditor: function(target, value)
+ {
+ if (!this.conditionEditor)
+ this.conditionEditor = new Firebug.Breakpoint.ConditionEditor(this.document);
+
+ return this.conditionEditor;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ supportsBreakOnNext: function()
+ {
+ return this.breakable && Firebug.jsDebuggerOn;
+ },
+
+ breakOnNext: function(enabled)
+ {
+ if (enabled)
+ JavaScriptTool.breakOnNext(this.context, true);
+ else
+ JavaScriptTool.breakOnNext(this.context, false);
+ },
+
+ getBreakOnNextTooltip: function(armed)
+ {
+ return (armed ?
+ Locale.$STR("script.Disable Break On Next") : Locale.$STR("script.Break On Next"));
+ },
+
+ shouldBreakOnNext: function()
+ {
+ return !!this.context.breakOnNextHook; // TODO BTI
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends ActivablePanel
+
+ /**
+ * Support for panel activation.
+ */
+ onActivationChanged: function(enable)
+ {
+ JavaScriptTool.setActivation(enable);
+
+ if (enable)
+ Firebug.TabCacheModel.addObserver(this);
+ else
+ Firebug.TabCacheModel.removeObserver(this);
+
+ // If the Script is disabled make sure the BON tab flag (orange background)
+ // is properly updated.
+ Firebug.Breakpoint.updatePanelTabs(Firebug.currentContext);
+ },
+
+ // implements Tool
+ onActiveTool: function(isActive)
+ {
+ this.onJavaScriptDebugging(isActive, "onActiveTool");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Toolbar functions
+
+ attachListeners: function(context, chrome)
+ {
+ this.keyListeners =
+ [
+ chrome.keyCodeListen("F8", Events.isShift, Obj.bind(this.rerun, this, context), true),
+ chrome.keyCodeListen("F8", null, Obj.bind(this.resume, this, context), true),
+ chrome.keyCodeListen("F10", null, Obj.bind(this.stepOver, this, context), true),
+ chrome.keyCodeListen("F11", null, Obj.bind(this.stepInto, this, context)),
+ chrome.keyCodeListen("F11", Events.isShift, Obj.bind(this.stepOut, this, context))
+ ];
+ },
+
+ detachListeners: function(context, chrome)
+ {
+ if (this.keyListeners)
+ {
+ for (var i = 0; i < this.keyListeners.length; ++i)
+ chrome.keyIgnore(this.keyListeners[i]);
+ delete this.keyListeners;
+ }
+ },
+
+ syncListeners: function(context)
+ {
+ var chrome = Firebug.chrome;
+
+ if (context.stopped)
+ this.attachListeners(context, chrome);
+ else
+ this.detachListeners(context, chrome);
+ },
+
+ syncCommands: function(context)
+ {
+ var chrome = Firebug.chrome;
+ if (!chrome)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("debugger.syncCommand, context with no chrome", context);
+ return;
+ }
+
+ if (context.stopped)
+ {
+ chrome.setGlobalAttribute("fbDebuggerButtons", "stopped", "true");
+ chrome.setGlobalAttribute("cmd_firebug_rerun", "disabled", "false");
+ chrome.setGlobalAttribute("cmd_firebug_resumeExecution", "disabled", "false");
+ chrome.setGlobalAttribute("cmd_firebug_stepOver", "disabled", "false");
+ chrome.setGlobalAttribute("cmd_firebug_stepInto", "disabled", "false");
+ chrome.setGlobalAttribute("cmd_firebug_stepOut", "disabled", "false");
+ }
+ else
+ {
+ chrome.setGlobalAttribute("fbDebuggerButtons", "stopped", "false");
+ chrome.setGlobalAttribute("cmd_firebug_rerun", "disabled", "true");
+ chrome.setGlobalAttribute("cmd_firebug_stepOver", "disabled", "true");
+ chrome.setGlobalAttribute("cmd_firebug_stepInto", "disabled", "true");
+ chrome.setGlobalAttribute("cmd_firebug_stepOut", "disabled", "true");
+ chrome.setGlobalAttribute("cmd_firebug_resumeExecution", "disabled", "true");
+ }
+ },
+
+ rerun: function(context)
+ {
+ JavaScriptTool.rerun(context);
+ },
+
+ resume: function(context)
+ {
+ JavaScriptTool.resumeJavaScript(context);
+ },
+
+ stepOver: function(context)
+ {
+ JavaScriptTool.stepOver(context);
+ },
+
+ stepInto: function(context)
+ {
+ JavaScriptTool.stepInto(context);
+ },
+
+ stepOut: function(context)
+ {
+ JavaScriptTool.stepOut(context);
+ },
+
+ runUntil: function(context, compilationUnit, lineNo)
+ {
+ JavaScriptTool.runUntil(compilationUnit, lineNo);
+ },
+
+ onStartDebugging: function(frame)
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("script.startDebugging enter context: " + this.context.getName());
+
+ try
+ {
+ var currentBreakable = Firebug.chrome.getGlobalAttribute("cmd_firebug_toggleBreakOn",
+ "breakable");
+
+ if (FBTrace.DBG_BP)
+ {
+ FBTrace.sysout("debugger.startDebugging; currentBreakable " + currentBreakable +
+ " in " + this.context.getName() + " currentContext " +
+ Firebug.currentContext.getName());
+ }
+
+ // If currentBreakable is false, then we are armed, but we broke
+ if (currentBreakable == "false")
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_toggleBreakOn", "breakable", "true");
+
+ // If Firebug is minimized, open the UI to show we are stopped
+ if (Firebug.isMinimized())
+ Firebug.unMinimize();
+
+ this.syncCommands(this.context);
+ this.syncListeners(this.context);
+
+ // Update Break on Next lightning
+ Firebug.Breakpoint.updatePanelTab(this, false);
+ Firebug.chrome.select(frame, "script", null, true);
+ Firebug.chrome.syncPanel("script"); // issue 3463 and 4213
+ Firebug.chrome.focus();
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Resuming debugger: error during debugging loop: " + exc, exc);
+
+ Firebug.Console.log("Resuming debugger: error during debugging loop: " + exc);
+ this.resume(this.context);
+ }
+
+ if (FBTrace.DBG_UI_LOOP)
+ {
+ FBTrace.sysout("script.onStartDebugging exit context.stopped:" +
+ this.context.stopped + " for context: " + this.context.getName());
+ }
+ },
+
+ onStopDebugging: function()
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("script.onStopDebugging enter context: " + this.context.getName());
+
+ try
+ {
+ var chrome = Firebug.chrome;
+
+ if (this.selectedSourceBox && this.selectedSourceBox.breakCauseBox)
+ {
+ this.selectedSourceBox.breakCauseBox.hide();
+ delete this.selectedSourceBox.breakCauseBox;
+ }
+
+ this.syncCommands(this.context);
+ this.syncListeners(this.context);
+ this.highlight(false);
+
+ // After main panel is completely updated
+ chrome.syncSidePanels();
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("debugger.stopDebugging FAILS", exc);
+
+ // If the window is closed while the debugger is stopped,
+ // then all hell will break loose here
+ Debug.ERROR(exc);
+ }
+ },
+
+});
+
+// ********************************************************************************************* //
+
+const reWord = /([A-Za-z_$0-9]+)(\.([A-Za-z_$0-9]+)|\[([A-Za-z_$0-9]+|["'].+?["'])\])*/;
+
+function getExpressionAt(text, charOffset)
+{
+ var offset = 0;
+ for (var m = reWord.exec(text); m; m = reWord.exec(text.substr(offset)))
+ {
+ var word = m[0];
+ var wordOffset = offset+m.index;
+ if (charOffset >= wordOffset && charOffset <= wordOffset+word.length)
+ {
+ var innerOffset = charOffset-wordOffset;
+ m = word.substr(innerOffset+1).match(/\.|\]|\[|$/);
+ var end = m.index + innerOffset + 1, start = 0;
+
+ var openBr = word.lastIndexOf('[', innerOffset);
+ var closeBr = word.lastIndexOf(']', innerOffset);
+
+ if (openBr == innerOffset)
+ end++;
+ else if (closeBr < openBr)
+ {
+ if (/['"\d]/.test(word[openBr+1]))
+ end++;
+ else
+ start = openBr + 1;
+ }
+
+ word = word.substring(start, end);
+
+ if (/^\d+$/.test(word) && word[0] != '0')
+ word = '';
+
+ return {expr: word, offset: wordOffset-start};
+ }
+ offset = wordOffset+word.length;
+ }
+
+ return {expr: null, offset: -1};
+};
+
+// ********************************************************************************************* //
+// Domplate Templates
+
+with (Domplate) {
+
+/**
+ * @domplate Displays various warning messages within the Script panel.
+ */
+Firebug.ScriptPanel.WarningRep = domplate(Firebug.Rep,
+{
+ tag:
+ DIV({"class": "disabledPanelBox"},
+ H1({"class": "disabledPanelHead"},
+ SPAN("$pageTitle")
+ ),
+ P({"class": "disabledPanelDescription", style: "margin-top: 15px;"},
+ SPAN("$suggestion")
+ )
+ ),
+
+ enableScriptTag:
+ SPAN({"class": "objectLink", onclick: "$onEnableScript", style: "color: blue"},
+ Locale.$STR("script.button.enable_javascript")
+ ),
+
+ focusDebuggerTag:
+ SPAN({"class": "objectLink", onclick: "$onFocusDebugger", style: "color: blue"},
+ Locale.$STR("script.button.Go to that page")
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onEnableScript: function(event)
+ {
+ Firebug.Options.setPref("javascript", "enabled", true);
+
+ Firebug.TabWatcher.reloadPageFromMemory(Firebug.currentContext);
+ },
+
+ onFocusDebugger: function(event)
+ {
+ Win.iterateBrowserWindows("navigator:browser", function(win)
+ {
+ return win.Firebug.TabWatcher.iterateContexts(function(context)
+ {
+ if (context.stopped)
+ {
+ // Focus browser window with active debugger and select the Script panel
+ win.Firebug.focusBrowserTab(context.window);
+ win.Firebug.chrome.selectPanel("script");
+ return true;
+ }
+ });
+ });
+
+ // No context is stopped
+ if (FBTrace.DBG_UI_LOOP)
+ FBTrace.sysout("script.onFocusDebugger FAILED");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ showInactive: function(parentNode)
+ {
+ var args = {
+ pageTitle: Locale.$STR("script.warning.inactive_during_page_load"),
+ suggestion: Locale.$STR("script.suggestion.inactive_during_page_load2")
+ };
+
+ var box = this.tag.replace(args, parentNode, this);
+ var description = box.getElementsByClassName("disabledPanelDescription").item(0);
+ FirebugReps.Description.render(args.suggestion, description,
+ Obj.bindFixed(Firebug.TabWatcher.reloadPageFromMemory, Firebug.TabWatcher,
+ Firebug.currentContext));
+
+ return box;
+ },
+
+ showNotEnabled: function(parentNode)
+ {
+ var args = {
+ pageTitle: Locale.$STR("script.warning.javascript_not_enabled"),
+ suggestion: Locale.$STR("script.suggestion.javascript_not_enabled")
+ };
+
+ var box = this.tag.replace(args, parentNode, this);
+ this.enableScriptTag.append({}, box, this);
+
+ return box;
+ },
+
+ showDebuggerInactive: function(parentNode)
+ {
+ var args = {
+ pageTitle: Locale.$STR("script.warning.debugger_not_activated"),
+ suggestion: Locale.$STR("script.suggestion.debugger_not_activated")
+ };
+
+ var box = this.tag.replace(args, parentNode, this);
+
+ return box;
+ },
+
+ showFiltered: function(parentNode)
+ {
+ var args = {
+ pageTitle: Locale.$STR("script.warning.all_scripts_filtered"),
+ suggestion: Locale.$STR("script.suggestion.all_scripts_filtered")
+ };
+ return this.tag.replace(args, parentNode, this);
+ },
+
+ showNoScript: function(parentNode)
+ {
+ var args = {
+ pageTitle: Locale.$STR("script.warning.no_javascript"),
+ suggestion: Locale.$STR("script.suggestion.no_javascript2")
+ };
+ return this.tag.replace(args, parentNode, this);
+ },
+
+ showNoDebuggingForSystemSources: function(parentNode)
+ {
+ var args = {
+ pageTitle: Locale.$STR("script.warning.no_system_source_debugging"),
+ suggestion: Locale.$STR("script.suggestion.no_system_source_debugging")
+ };
+
+ var box = this.tag.replace(args, parentNode, this);
+ var description = box.getElementsByClassName("disabledPanelDescription").item(0);
+ FirebugReps.Description.render(args.suggestion, description,
+ Obj.bindFixed(Firebug.chrome.visitWebsite, this, "issue5110"));
+
+ return box;
+ },
+
+ showActivitySuspended: function(parentNode)
+ {
+ var args = {
+ pageTitle: Locale.$STR("script.warning.debugger_active"),
+ suggestion: Locale.$STR("script.suggestion.debugger_active")
+ };
+
+ var box = this.tag.replace(args, parentNode, this);
+ this.focusDebuggerTag.append({}, box, this);
+
+ return box;
+ }
+});
+
+var WarningRep = Firebug.ScriptPanel.WarningRep;
+
+// ********************************************************************************************* //
+
+Firebug.ScriptPanel.BreakpointInfoTip = domplate(Firebug.Rep,
+{
+ tag:
+ DIV("$expr"),
+
+ render: function(parentNode, expr)
+ {
+ this.tag.replace({expr: expr}, parentNode, this);
+ }
+});
+
+// ********************************************************************************************* //
+
+}; // END with (Domplate)
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(Firebug.ScriptPanel);
+
+return Firebug.ScriptPanel;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/js/sourceBox.js b/content/firebug/js/sourceBox.js
index 5be6454..3cf284a 100644
--- a/content/firebug/js/sourceBox.js
+++ b/content/firebug/js/sourceBox.js
@@ -1,1230 +1,1230 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "arch/compilationunit",
- "firebug/lib/events",
- "firebug/js/sourceLink",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/string",
-],
-function(Obj, Firebug, CompilationUnit, Events, SourceLink, Css, Dom, Str) {
-
-// ********************************************************************************************* //
-
-/**
- * @class Defines the API for SourceBoxDecorator and provides the default implementation.
- * Decorators are passed the source box on construction, called to create the HTML,
- * and called whenever the user scrolls the view.
- */
-Firebug.SourceBoxDecorator = function(sourceBox)
-{
-};
-
-Firebug.SourceBoxDecorator.sourceBoxCounter = 0;
-
-Firebug.SourceBoxDecorator.prototype =
-/** @lends Firebug.SourceBoxDecorator */
-{
- onSourceBoxCreation: function(sourceBox)
- {
- // allow panel-document unique ids to be generated for lines.
- sourceBox.uniqueId = ++Firebug.SourceBoxDecorator.sourceBoxCounter;
- },
-
- /**
- * called on a delay after the view port is updated, eg vertical scroll
- * The sourceBox will contain lines from firstRenderedLine to lastRenderedLine
- * The user will be able to see sourceBox.firstViewableLine to sourceBox.lastViewableLine
- */
- decorate: function(sourceBox, compilationUnit)
- {
- return;
- },
-
- /**
- * called once as each line is being rendered.
- * @param lineNo integer 1-maxLineNumbers
- */
- getUserVisibleLineNumber: function(sourceBox, lineNo)
- {
- return lineNo;
- },
-
- /**
- * call once as each line is being rendered.
- * @param lineNo integer 1-maxLineNumbers
- */
- getLineHTML: function(sourceBox, lineNo)
- {
- var line = sourceBox.lines[lineNo-1];
-
- // Crop huge lines.
- if (Firebug.maxScriptLineLength > 0)
- {
- if (line.length > Firebug.maxScriptLineLength)
- line = Str.cropString(line, Firebug.maxScriptLineLength);
- }
-
- var html = Str.escapeForSourceLine(line);
-
- // If the pref says so, replace tabs by corresponding number of spaces.
- if (Firebug.replaceTabs > 0)
- {
- var space = new Array(Firebug.replaceTabs + 1).join(" ");
- html = html.replace(/\t/g, space);
- }
-
- return html;
- },
-
- /**
- * @return a string unique to the sourcebox and line number, valid in getElementById()
- */
- getLineId: function(sourceBox, lineNo)
- {
- return 'sb' + sourceBox.uniqueId + '-L' + lineNo;
- }
-};
-
-// ********************************************************************************************* //
-
-/**
- * @panel Firebug.SourceBoxPanel: Intermediate level class for showing lines of source, eg Script Panel
- * Implements a 'viewport' to render only the lines the user is viewing or has recently viewed.
- * Scroll events or scrollToLine calls are converted to viewableRange line number range.
- * The range of lines is rendered, skipping any that have already been rendered. Then if the
- * new line range overlaps the old line range, done; else delete the old range.
- * That way the lines kept contiguous.
- * The rendering details are delegated to SourceBoxDecorator; each source line may be expanded into
- * more rendered lines.
- */
-Firebug.SourceBoxPanel = function() {};
-
-var SourceBoxPanelBase = Obj.extend(Firebug.MeasureBox, Firebug.ActivablePanel);
-Firebug.SourceBoxPanel = Obj.extend(SourceBoxPanelBase,
-/** @lends Firebug.SourceBoxPanel */
-{
- initialize: function(context, doc)
- {
- this.onResize = Obj.bind(this.resizer, this);
- this.sourceBoxes = {};
- this.decorator = this.getDecorator();
-
- Firebug.ActivablePanel.initialize.apply(this, arguments);
- },
-
- initializeNode: function(panelNode)
- {
- this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
- Events.addEventListener(this.resizeEventTarget, "resize", this.onResize, true);
- this.attachToCache();
-
- Firebug.ActivablePanel.initializeNode.apply(this, arguments);
- },
-
- destroyNode: function()
- {
- if (this.resizeEventTarget)
- {
- Events.removeEventListener(this.resizeEventTarget, "resize", this.onResize, true);
- }
- else
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("sourceBox.destroyNode; ERROR this.resizeEventTarget is NULL " +
- this, this);
- }
-
- this.detachFromCache();
-
- Firebug.ActivablePanel.destroyNode.apply(this, arguments);
- },
-
- attachToCache: function()
- {
- this.context.sourceCache.addListener(this);
- },
-
- detachFromCache: function()
- {
- this.context.sourceCache.removeListener(this);
- },
-
- onTextSizeChange: function(zoom)
- {
- this.refresh();
- },
-
- removeAllSourceBoxes: function()
- {
- for (var url in this.sourceBoxes)
- {
- var sourceBox = this.sourceBoxes[url];
- if (sourceBox)
- {
- try
- {
- this.panelNode.removeChild(sourceBox);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("sourceBox.removeAllSourceBoxes; EXCEPTION " + err, err);
- }
- }
- else if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("sourceBoxPanel ERROR no sourceBox at "+url+" in context "+
- this.context.getName());
- }
- }
-
- this.sourceBoxes = {};
-
- delete this.selectedSourceBox;
- delete this.location;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // TabCache listener implementation
-
- onStartRequest: function(context, request)
- {
-
- },
-
- onStopRequest: function(context, request, responseText)
- {
- if (context === this.context)
- {
- var url = request.URI.spec;
- var compilationUnit = context.getCompilationUnit(url);
-
- // The compilation unit is created when JSD is compiling the script
- // (e.g. onTopLevelScriptCreated), but onStopRequest can be triggered
- // before (by a response channel listener) and so, the compilation
- // unit doesn't have to exist at this moment
- // However it should be ok, since the UI shouldn't exist before compilation
- // and so, there shouldn't be what to update.
- if (compilationUnit)
- this.removeSourceBoxByCompilationUnit(compilationUnit);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /**
- * Panel extension point.
- * Called just before box is shown
- */
- updateSourceBox: function(sourceBox)
- {
-
- },
-
- /* Panel extension point. Called on panel initialization
- * @return Must implement SourceBoxDecorator API.
- */
- getDecorator: function()
- {
- return new Firebug.SourceBoxDecorator();
- },
-
- /* Panel extension point
- * @return string eg "js" or "css"
- */
- getSourceType: function()
- {
- throw "SourceBox.getSourceType: Need to override in extender ";
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- disablePanel: function(module)
- {
- this.sourceBoxes = {}; // clear so we start fresh if enabled
- Firebug.ActivablePanel.disablePanel.apply(this, arguments);
- },
-
- getSourceLinesFrom: function(selection)
- {
- // https://developer.mozilla.org/en/DOM/Selection
- if (selection.isCollapsed)
- return "";
-
- var anchorSourceRow = Dom.getAncestorByClass(selection.anchorNode, "sourceRow");
- var focusSourceRow = Dom.getAncestorByClass(selection.focusNode, "sourceRow");
- if (anchorSourceRow == focusSourceRow)
- {
- return selection.toString();// trivial case
- }
-
- var buf = this.getSourceLine(anchorSourceRow, selection.anchorOffset);
- var currentSourceRow = anchorSourceRow.nextSibling;
-
- while(currentSourceRow && (currentSourceRow != focusSourceRow) &&
- Css.hasClass(currentSourceRow, "sourceRow"))
- {
- buf += this.getSourceLine(currentSourceRow);
- currentSourceRow = currentSourceRow.nextSibling;
- }
-
- buf += this.getSourceLine(focusSourceRow, 0, selection.focusOffset);
- return buf;
- },
-
- getSourceLine: function(sourceRow, beginOffset, endOffset)
- {
- var source = Dom.getChildByClass(sourceRow, "sourceRowText").textContent;
- if (endOffset)
- source = source.substring(beginOffset, endOffset);
- else if (beginOffset)
- source = source.substring(beginOffset);
-
- return source;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getSourceBoxByCompilationUnit: function(compilationUnit)
- {
- if (compilationUnit.getURL())
- {
- var sourceBox = this.getSourceBoxByURL(compilationUnit.getURL());
- if (sourceBox && sourceBox.repObject == compilationUnit)
- return sourceBox;
- else
- return null; // cause a new one to be created
- }
- },
-
- getCompilationUnit: function()
- {
- if (this.selectedSourceBox)
- return this.seletedSourceBox.repObject;
- },
-
- getSourceBoxByURL: function(url)
- {
- if (!this.sourceBoxes)
- return null;
-
- return url ? this.sourceBoxes[url] : null;
- },
-
- removeSourceBoxByCompilationUnit: function(compilationUnit)
- {
- var sourceBox = this.getSourceBoxByCompilationUnit(compilationUnit);
- if (sourceBox) // else we did not create one for this compilationUnit
- {
- delete this.sourceBoxes[compilationUnit.getURL()];
-
- if (sourceBox.parentNode === this.panelNode)
- this.panelNode.removeChild(sourceBox);
-
- if (this.selectedSourceBox === sourceBox) // need to update the view
- {
- delete this.selectedSourceBox;
- delete this.location;
- this.showSource(compilationUnit.getURL());
- }
- }
- },
-
- renameSourceBox: function(oldURL, newURL)
- {
- var sourceBox = this.sourceBoxes[oldURL];
- if (sourceBox)
- {
- delete this.sourceBoxes[oldURL];
- this.sourceBoxes[newURL] = sourceBox;
- }
- },
-
- showSource: function(url)
- {
- var sourceBox = this.getOrCreateSourceBox(url);
- this.showSourceBox(sourceBox);
- },
-
- getOrCreateSourceBox: function(url)
- {
- var compilationUnit = this.context.getCompilationUnit(url);
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("firebug.showSource: "+url, compilationUnit);
-
- if (!compilationUnit)
- return;
-
- var sourceBox = this.getSourceBoxByCompilationUnit(compilationUnit);
- if (!sourceBox)
- sourceBox = this.createSourceBox(compilationUnit);
-
- return sourceBox;
- },
-
- /**
- * Assumes that locations are compilationUnits, TODO lower class
- */
- showSourceLink: function(sourceLink)
- {
- var sourceBox = this.getOrCreateSourceBox(sourceLink.href);
-
- if (sourceBox)
- {
- if (sourceLink.line)
- {
- this.showSourceBox(sourceBox, sourceLink.line);
- this.scrollToLine(sourceLink.href, sourceLink.line,
- this.jumpHighlightFactory(sourceLink.line, this.context));
- }
- else
- {
- this.showSourceBox(sourceBox);
- }
-
- Events.dispatch(this.fbListeners, "onShowSourceLink", [this, sourceLink.line]);
- }
-
- // then clear it so the next link will scroll and highlight.
- if (sourceLink == this.selection)
- delete this.selection;
- },
-
- showSourceBox: function(sourceBox, lineNo)
- {
- if (this.selectedSourceBox)
- Dom.collapse(this.selectedSourceBox, true);
-
- if (this.selectedSourceBox !== sourceBox)
- delete this.currentSearch;
-
- this.selectedSourceBox = sourceBox;
-
- if (sourceBox)
- {
- sourceBox.targetedLineNumber = lineNo; // signal reView to put this line in the center
- Dom.collapse(sourceBox, false);
- this.reView(sourceBox);
- this.updateSourceBox(sourceBox);
- }
- },
-
- /**
- * Private, do not call outside of this object
- * A sourceBox is a div with additional operations and state.
- * @param compilationUnit there is at most one sourceBox for each compilationUnit
- */
- createSourceBox: function(compilationUnit) // decorator(compilationUnit, sourceBox)
- {
- var sourceBox = this.initializeSourceBox(compilationUnit);
-
- sourceBox.decorator = this.decorator;
-
- // Framework connection
- sourceBox.decorator.onSourceBoxCreation(sourceBox);
-
- this.sourceBoxes[compilationUnit.getURL()] = sourceBox;
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("firebug.createSourceBox with " + sourceBox.maximumLineNumber +
- " lines for "+compilationUnit+(compilationUnit.getURL()?" sourceBoxes":" anon "),
- sourceBox);
-
- this.panelNode.appendChild(sourceBox);
- this.setSourceBoxLineSizes(sourceBox);
-
- return sourceBox;
- },
-
- getSourceBoxURL: function(sourceBox)
- {
- return sourceBox.repObject.getURL();
- },
-
- initializeSourceBox: function(compilationUnit)
- {
- var sourceBox = this.document.createElement("div");
- Css.setClass(sourceBox, "sourceBox");
- Dom.collapse(sourceBox, true);
- sourceBox.repObject = compilationUnit;
- compilationUnit.sourceBox = sourceBox;
-
- sourceBox.getLineNode = function(lineNo)
- {
- // XXXjjb this method is supposed to return null if the lineNo is not in the viewport
- return this.ownerDocument.getElementById(this.decorator.getLineId(this, lineNo));
- };
-
- var paddedSource =
- "<div class='topSourcePadding'>" +
- "<div class='sourceRow'><div class='sourceLine'></div><div class='sourceRowText'></div></div>"+
- "</div>"+
- "<div class='sourceViewport'></div>"+
- "<div class='bottomSourcePadding'>"+
- "<div class='sourceRow'><div class='sourceLine'></div><div class='sourceRowText'></div></div>"+
- "</div>";
-
- Dom.appendInnerHTML(sourceBox, paddedSource);
-
- sourceBox.viewport = Dom.getChildByClass(sourceBox, 'sourceViewport');
- return sourceBox;
- },
-
- onSourceLinesAvailable: function(compilationUnit, firstLineAvailable, lastLineAvailable, lines)
- {
- var sourceBox = compilationUnit.sourceBox;
- var requestedLines = compilationUnit.pendingViewRange;
- delete compilationUnit.pendingViewRange;
-
- if (requestedLines) // then are viewing a range
- {
- if (firstLineAvailable > requestedLines.firstLine)
- requestedLines.firstLine = firstLineAvailable;
-
- if (lastLineAvailable < requestedLines.lastLine)
- requestedLines.lastLine = lastLineAvailable;
- }
- else // then no range was given, render all.
- {
- requestedLines = {firstLine: firstLineAvailable, lastLine: lastLineAvailable};
- }
-
- sourceBox.lines = lines; // an array indexed from firstLineAvailable to lastLineAvailable
-
- sourceBox.maximumLineNumber = compilationUnit.getNumberOfLines();
- sourceBox.maxLineNoChars = (sourceBox.maximumLineNumber + "").length;
-
- this.setSourceBoxLineSizes(sourceBox);
-
- this.reViewOnSourceLinesAvailable(sourceBox, requestedLines);
- },
-
- setSourceBoxLineSizes: function(sourceBox)
- {
- var view = sourceBox.viewport;
-
- var lineNoCharsSpacer = "";
- for (var i = 0; i < sourceBox.maxLineNoChars; i++)
- lineNoCharsSpacer += "0";
-
- this.startMeasuring(view);
- var size = this.measureText(lineNoCharsSpacer);
- this.stopMeasuring();
-
- sourceBox.lineHeight = size.height + 1;
- sourceBox.lineNoWidth = size.width;
-
- var view = sourceBox.viewport; // TODO some cleaner way
- view.previousSibling.firstChild.firstChild.style.width = sourceBox.lineNoWidth + "px";
- view.nextSibling.firstChild.firstChild.style.width = sourceBox.lineNoWidth + "px";
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- {
- FBTrace.sysout("setSourceBoxLineSizes size for lineNoCharsSpacer " +
- lineNoCharsSpacer, size);
- FBTrace.sysout("firebug.setSourceBoxLineSizes, sourceBox.scrollTop " +
- sourceBox.scrollTop+ " sourceBox.lineHeight: "+sourceBox.lineHeight+
- " sourceBox.lineNoWidth:"+sourceBox.lineNoWidth);
- }
- },
-
- /**
- * @return SourceLink to currently selected source file
- */
- getSourceLink: function(lineNo)
- {
- if (!this.selectedSourceBox)
- return;
-
- if (!lineNo)
- lineNo = this.getCentralLine(this.selectedSourceBox);
-
- return new SourceLink.SourceLink(this.selectedSourceBox.repObject.href, lineNo,
- this.getSourceType());
- },
-
- /**
- * Select sourcebox with href, scroll lineNo into center, highlight lineNo with
- * highlighter given
- *
- * @param href a Url, null means the selected compilationUnit
- * @param lineNo integer 1 - maximumLineNumber
- * @param highlighter callback, a function(sourceBox). sourceBox.centralLine will be lineNo
- */
- scrollToLine: function(href, lineNo, highlighter)
- {
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("SourceBoxPanel.scrollToLine: "+lineNo+"@"+href+" with highlighter "+
- highlighter, highlighter);
-
- if (this.context.scrollTimeout)
- {
- this.context.clearTimeout(this.context.scrollTimeout);
- delete this.context.scrollTimeout;
- }
-
- if (href)
- {
- var sourceBox = this.getOrCreateSourceBox(href);
- this.showSourceBox(sourceBox, lineNo);
- }
-
- if (!this.skipScrolling(lineNo))
- {
- var viewRange = this.getViewRangeFromTargetLine(this.selectedSourceBox, lineNo);
- this.selectedSourceBox.newScrollTop = this.getScrollTopFromViewRange(
- this.selectedSourceBox, viewRange);
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("SourceBoxPanel.scrollTimeout: newScrollTop "+
- this.selectedSourceBox.newScrollTop+" vs old "+
- this.selectedSourceBox.scrollTop+" for "+this.selectedSourceBox.repObject.href);
-
- // *may* cause scrolling
- this.selectedSourceBox.scrollTop = this.selectedSourceBox.newScrollTop;
- }
-
- this.context.scrollTimeout = this.context.setTimeout(Obj.bindFixed(function()
- {
- if (!this.selectedSourceBox)
- {
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("SourceBoxPanel.scrollTimeout no selectedSourceBox");
- return;
- }
-
- if (this.selectedSourceBox.highlighter)
- this.applyDecorator(this.selectedSourceBox); // may need to highlight even if we don't scroll
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("SourceBoxPanel.scrollTimeout: scrollTo "+lineNo+
- " this.selectedSourceBox.highlighter: "+this.selectedSourceBox.highlighter);
- }, this));
-
- this.selectedSourceBox.highlighter = highlighter; // clears if null
- },
-
- skipScrolling: function(lineNo)
- {
- var skipScrolling = false;
- var firstViewRangeElement = this.selectedSourceBox.getLineNode(
- this.selectedSourceBox.firstViewableLine);
- var scrollTopOffset = this.selectedSourceBox.scrollTop - firstViewRangeElement.offsetTop;
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("SourceBoxPanel.skipScrolling scrollTopOffset "+
- Math.abs(scrollTopOffset) + " > " + firstViewRangeElement.offsetHeight);
-
- if (Math.abs(scrollTopOffset) > firstViewRangeElement.offsetHeight)
- return skipScrolling;
-
- if (this.selectedSourceBox.firstViewableLine && this.selectedSourceBox.lastViewableLine)
- {
- var linesFromTop = lineNo - this.selectedSourceBox.firstViewableLine;
- var linesFromBot = this.selectedSourceBox.lastViewableLine - lineNo;
- skipScrolling = (linesFromTop > 3 && linesFromBot > 3);
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("SourceBoxPanel.skipScrolling: skipScrolling: "+skipScrolling+
- " fromTop:"+linesFromTop+" fromBot:"+linesFromBot);
- }
- else // the selectedSourceBox has not been built
- {
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("SourceBoxPanel.skipScrolling, no viewable lines",
- this.selectedSourceBox);
- }
-
- return skipScrolling;
- },
-
- /**
- * @return a highlighter function(sourceBox) that puts a class on the line for a time slice
- */
- jumpHighlightFactory: function(lineNo, context)
- {
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("sourceBox.jumpHighlightFactory; highlighter created for " + lineNo);
-
- return function jumpHighlightIfInView(sourceBox)
- {
- var lineNode = sourceBox.getLineNode(lineNo);
-
- if (context.highlightedRow)
- Css.cancelClassTimed(context.highlightedRow, "jumpHighlight", context);
-
- if (lineNode)
- {
- Css.setClassTimed(lineNode, "jumpHighlight", context);
-
- context.highlightedRow = lineNode;
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- {
- FBTrace.sysout("jumpHighlightFactory on line "+lineNo+" lineNode:"+
- lineNode.getElementsByClassName("sourceRowText")[0].textContent);
- }
- }
- else
- {
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("jumpHighlightFactory no node at line "+lineNo, sourceBox);
- }
-
- return false; // not sticky
- };
- },
-
- /*
- * resize and scroll event handler
- */
- resizer: function(event)
- {
- // The resize target is Firebug as a whole. But most of the UI needs no special
- // code for resize.
- // But our SourceBoxPanel has viewport that will change size.
- if (this.selectedSourceBox && this.visible)
- {
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("resizer event: "+event.type+" in panel "+this.name+" for "+
- this.context.getName(), event);
-
- this.reView(this.selectedSourceBox);
- }
- },
-
- // called for all scroll events, including any time sourcebox.scrollTop is set
- reView: function(sourceBox, clearCache)
- {
- var viewRange = null;
- if (sourceBox.targetedLineNumber) // then we requested a certain line
- {
- viewRange = this.getViewRangeFromTargetLine(sourceBox, sourceBox.targetedLineNumber);
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("reView got viewRange from target line: "+
- sourceBox.targetedLineNumber, viewRange);
-
- // We've positioned on the targeted line. Now the user may scroll
- delete sourceBox.targetedLineNumber;
-
- // our current scrolltop is not useful, so clear the saved value to avoid comparing below.
- delete sourceBox.lastScrollTop;
- }
- else // no special line, assume scrolling
- {
- viewRange = this.getViewRangeFromScrollTop(sourceBox, sourceBox.scrollTop);
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("reView got viewRange from scrollTop: "+sourceBox.scrollTop, viewRange);
- }
-
- if (clearCache)
- {
- this.clearSourceBox(sourceBox);
- }
- else if (sourceBox.scrollTop === sourceBox.lastScrollTop && sourceBox.clientHeight &&
- sourceBox.clientHeight === sourceBox.lastClientHeight)
- {
- if (sourceBox.firstRenderedLine <= viewRange.firstLine &&
- sourceBox.lastRenderedLine >= viewRange.lastLine)
- {
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("reView skipping sourceBox "+sourceBox.scrollTop+
- "=scrollTop="+sourceBox.lastScrollTop+", "+ sourceBox.clientHeight+
- "=clientHeight="+sourceBox.lastClientHeight, sourceBox);
-
- // skip work if nothing changes.
- return;
- }
- }
-
- var compilationUnit = sourceBox.repObject;
- compilationUnit.pendingViewRange = viewRange;
- compilationUnit.getSourceLines(viewRange.firstLine, viewRange.lastLine,
- Obj.bind(this.onSourceLinesAvailable, this));
- },
-
- reViewOnSourceLinesAvailable: function(sourceBox, viewRange)
- {
- // XXXjjb TODO where should this be?
- Events.dispatch(this.fbListeners, "onBeforeViewportChange", [this]);
-
- this.buildViewAround(sourceBox, viewRange);
-
- if (Firebug.uiListeners.length > 0)
- {
- var link = new SourceLink.SourceLink(sourceBox.repObject.href, sourceBox.centralLine,
- this.getSourceType());
-
- Events.dispatch(Firebug.uiListeners, "onViewportChange", [link]);
- }
-
- sourceBox.lastScrollTop = sourceBox.scrollTop;
- sourceBox.lastClientHeight = sourceBox.clientHeight;
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("sourceBox.reViewOnSourceLinesAvailable sourceBox.lastScrollTop "+
- sourceBox.lastScrollTop+" sourceBox.lastClientHeight "+sourceBox.lastClientHeight);
- },
-
- buildViewAround: function(sourceBox, viewRange)
- {
- try
- {
- this.updateViewportCache(sourceBox, viewRange);
- }
- catch(exc)
- {
- if(FBTrace.DBG_ERRORS)
- FBTrace.sysout("buildViewAround updateViewportCache FAILS "+exc, exc);
- }
-
- Dom.collapse(sourceBox, false); // the elements must be visible for the offset values
- this.setViewportPadding(sourceBox, viewRange);
-
- sourceBox.centralLine = Math.ceil((viewRange.lastLine + viewRange.firstLine)/2);
-
- this.applyDecorator(sourceBox);
-
- return;
- },
-
- updateViewportCache: function(sourceBox, viewRange)
- {
- var cacheHit = this.insertedLinesOverlapCache(sourceBox, viewRange);
-
- if (!cacheHit)
- {
- this.clearSourceBox(sourceBox); // no overlap, remove old range
- sourceBox.firstRenderedLine = viewRange.firstLine; // reset cached range
- sourceBox.lastRenderedLine = viewRange.lastLine;
- }
- else // cache overlap, expand range of cache
- {
- sourceBox.firstRenderedLine = Math.min(viewRange.firstLine, sourceBox.firstRenderedLine);
- sourceBox.lastRenderedLine = Math.max(viewRange.lastLine, sourceBox.lastRenderedLine);
- }
-
- // todo actually check that these are viewable
- sourceBox.firstViewableLine = viewRange.firstLine;
- sourceBox.lastViewableLine = viewRange.lastLine;
- sourceBox.numberOfRenderedLines = sourceBox.lastRenderedLine - sourceBox.firstRenderedLine + 1;
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("buildViewAround viewRange: "+viewRange.firstLine+"-"+
- viewRange.lastLine+" rendered: "+sourceBox.firstRenderedLine+"-"+
- sourceBox.lastRenderedLine, sourceBox);
- },
-
- /*
- * Add lines from viewRange, but do not adjust first/lastRenderedLine.
- * @return true if viewRange overlaps first/lastRenderedLine
- */
- insertedLinesOverlapCache: function(sourceBox, viewRange)
- {
- var topCacheLine = null;
- var cacheHit = false;
- for (var line = viewRange.firstLine; line <= viewRange.lastLine; line++)
- {
- if (line >= sourceBox.firstRenderedLine && line <= sourceBox.lastRenderedLine )
- {
- cacheHit = true;
- continue;
- }
-
- var lineHTML = this.getSourceLineHTML(sourceBox, line);
-
- var ref = null;
- if (line < sourceBox.firstRenderedLine) // prepend if we are above the cache
- {
- if (!topCacheLine)
- topCacheLine = sourceBox.getLineNode(sourceBox.firstRenderedLine);
- ref = topCacheLine;
- }
-
- Dom.appendInnerHTML(sourceBox.viewport, lineHTML, ref);
- }
- return cacheHit;
- },
-
- clearSourceBox: function(sourceBox)
- {
- if (sourceBox.firstRenderedLine)
- {
- var topMostCachedElement = sourceBox.getLineNode(sourceBox.firstRenderedLine); // eg 1
- var totalCached = sourceBox.lastRenderedLine - sourceBox.firstRenderedLine + 1; // eg 20 - 1 + 1 = 19
- if (topMostCachedElement && totalCached)
- this.removeLines(sourceBox, topMostCachedElement, totalCached);
- }
- sourceBox.lastRenderedLine = 0;
- sourceBox.firstRenderedLine = 0;
- sourceBox.numberOfRenderedLines = 0;
- },
-
- getSourceLineHTML: function(sourceBox, i)
- {
- var lineNo = sourceBox.decorator.getUserVisibleLineNumber(sourceBox, i);
- var lineHTML = sourceBox.decorator.getLineHTML(sourceBox, i);
-
- // decorator lines may not have ids
- var lineId = sourceBox.decorator.getLineId(sourceBox, i);
-
- var lineNoText = this.getTextForLineNo(lineNo, sourceBox.maxLineNoChars);
-
- var theHTML =
- '<div '
- + (lineId ? ('id="' + lineId + '"') : "")
- + ' class="sourceRow" role="presentation"><a class="'
- + 'sourceLine' + '" role="presentation">'
- + lineNoText
- + '</a><span class="sourceRowText" role="presentation">'
- + lineHTML
- + '</span></div>';
-
- return theHTML;
- },
-
- getTextForLineNo: function(lineNo, maxLineNoChars)
- {
- // Make sure all line numbers are the same width (with a fixed-width font)
- var lineNoText = lineNo + "";
- while (lineNoText.length < maxLineNoChars)
- lineNoText = " " + lineNoText;
-
- return lineNoText;
- },
-
- removeLines: function(sourceBox, firstRemoval, totalRemovals)
- {
- for(var i = 1; i <= totalRemovals; i++)
- {
- var nextSourceLine = firstRemoval;
- firstRemoval = firstRemoval.nextSibling;
- sourceBox.viewport.removeChild(nextSourceLine);
- }
- },
-
- getCentralLine: function(sourceBox)
- {
- return sourceBox.centralLine;
- },
-
- getViewRangeFromTargetLine: function(sourceBox, targetLineNumber)
- {
- var viewRange = {firstLine: 1, centralLine: targetLineNumber, lastLine: 1};
-
- var averageLineHeight = this.getAverageLineHeight(sourceBox);
- var panelHeight = this.panelNode.clientHeight;
- // We never want viewableLines * lineHeight > clientHeight
- // So viewableLines <= clientHeight / lineHeight
- //
- // In some cases when Script panel is restored flooring the result can cause
- // loosing one line and so, the Script panel is not properly restored
- // (the top line is less by one)
- // Math.floor changed to Math.round
- // So, 'viewableLines * lineHeight' can be a bit higher than 'clientHeight'.
- var linesPerViewport = Math.round((panelHeight / averageLineHeight));
-
- viewRange.firstLine = Math.round(targetLineNumber - linesPerViewport / 2);
-
- if (viewRange.firstLine <= 0)
- viewRange.firstLine = 1;
-
- viewRange.lastLine = viewRange.firstLine + linesPerViewport;
-
- if (viewRange.lastLine > sourceBox.maximumLineNumber)
- viewRange.lastLine = sourceBox.maximumLineNumber;
-
- return viewRange;
- },
-
- /**
- * Use the average height of source lines in the cache to estimate where the scroll bar
- * points based on scrollTop
- */
- getViewRangeFromScrollTop: function(sourceBox, scrollTop)
- {
- var viewRange = {};
- var averageLineHeight = this.getAverageLineHeight(sourceBox);
- // If the scrollTop comes in zero, then we better pick line 1. (0 / 14) + 1 = 1
- // If the scrollTop is in the middle of line 2, pick line 2. (20 / 14) + 1 = 2.43 ==> 2
- viewRange.firstLine = Math.floor((scrollTop / averageLineHeight) + 1);
-
- var panelHeight = this.panelNode.clientHeight;
-
- // then we probably have not inserted the elements yet and the clientHeight is bogus
- if (panelHeight === 0)
- panelHeight = this.panelNode.ownerDocument.documentElement.clientHeight;
-
- // Set minimum height of the panel (in case Firebug UI is set to minimum using
- // the splitter) such that the source box can be properly created (issue 4417).
- panelHeight = (panelHeight < 100) ? 100 : panelHeight;
-
- // see getViewRangeFromTargetLine
- var viewableLines = Math.round((panelHeight / averageLineHeight));
- viewRange.lastLine = viewRange.firstLine + viewableLines - 1; // 15 = 1 + 15 - 1;
-
- if (viewRange.lastLine > sourceBox.maximumLineNumber)
- viewRange.lastLine = sourceBox.maximumLineNumber;
-
- viewRange.centralLine = Math.ceil((viewRange.lastLine - viewRange.firstLine)/2);
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- {
- FBTrace.sysout("getViewRangeFromScrollTop scrollTop:"+scrollTop+" viewRange: "+
- viewRange.firstLine+"-"+viewRange.lastLine+" max: "+sourceBox.maximumLineNumber+
- " panelHeight "+panelHeight);
-
- if (!this.noRecurse)
- {
- this.noRecurse = true;
- var testScrollTop = this.getScrollTopFromViewRange(sourceBox, viewRange);
- delete this.noRecurse;
-
- FBTrace.sysout("getViewRangeFromScrollTop "+((scrollTop==testScrollTop)?
- "checks":(scrollTop+"=!scrollTop!="+testScrollTop)));
- }
- }
-
- return viewRange;
- },
-
- /**
- * inverse of the getViewRangeFromScrollTop.
- * If the viewRange was set by targetLineNumber, then this value become the new scroll top
- * else the value will be the same as the scrollbar's given value of scrollTop.
- */
- getScrollTopFromViewRange: function(sourceBox, viewRange)
- {
- var averageLineHeight = this.getAverageLineHeight(sourceBox);
- // If the fist line is 1, scrollTop should be 0 14 * (1 - 1) = 0
- // If the first line is 2, scrollTop would be lineHeight 14 * (2 - 1) = 14
-
- var scrollTop = averageLineHeight * (viewRange.firstLine - 1);
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- {
- FBTrace.sysout("getScrollTopFromViewRange viewRange:"+viewRange.firstLine+"-"+
- viewRange.lastLine+" averageLineHeight: "+averageLineHeight+" scrollTop "+scrollTop);
-
- if (!this.noRecurse)
- {
- this.noRecurse = true;
- var testViewRange = this.getViewRangeFromScrollTop(sourceBox, scrollTop);
- delete this.noRecurse;
- var vrStr = viewRange.firstLine+"-"+viewRange.lastLine;
- var tvrStr = testViewRange.firstLine+"-"+testViewRange.lastLine;
-
- FBTrace.sysout("getScrollTopFromViewRange "+
- ((vrStr==tvrStr)? "checks" : vrStr+"=!viewRange!="+tvrStr));
- }
- }
-
- return scrollTop;
- },
-
- /**
- * The virtual sourceBox height is the averageLineHeight * max lines
- * @return float
- */
- getAverageLineHeight: function(sourceBox)
- {
- var averageLineHeight = sourceBox.lineHeight; // fall back to single line height
-
- var renderedViewportHeight = sourceBox.viewport.clientHeight;
- var numberOfRenderedLines = sourceBox.numberOfRenderedLines;
- if (renderedViewportHeight && numberOfRenderedLines)
- averageLineHeight = renderedViewportHeight / numberOfRenderedLines;
-
- return averageLineHeight;
- },
-
- /**
- * The virtual sourceBox = topPadding + sourceBox.viewport + bottomPadding
- * The viewport grows as more lines are added to the cache
- * The virtual sourceBox height is estimated from the average height lines in the
- * viewport cache
- */
- getTotalPadding: function(sourceBox)
- {
- var numberOfRenderedLines = sourceBox.numberOfRenderedLines;
- if (!numberOfRenderedLines)
- return 0;
-
- var max = sourceBox.maximumLineNumber;
- var averageLineHeight = this.getAverageLineHeight(sourceBox);
- // total box will be the average line height times total lines
- var virtualSourceBoxHeight = Math.floor(max * averageLineHeight);
-
- // the total - view-taken-up - scrollbar
- // clientHeight excludes scrollbar
- var totalPadding = virtualSourceBoxHeight < sourceBox.clientHeight ?
- sourceBox.clientHeight - 1 : virtualSourceBoxHeight;
- totalPadding -= sourceBox.viewport.clientHeight;
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- {
- FBTrace.sysout("getTotalPadding clientHeight:"+sourceBox.viewport.clientHeight+
- " max: "+max+" gives total padding "+totalPadding);
- }
-
- return totalPadding;
- },
-
- setViewportPadding: function(sourceBox, viewRange)
- {
- var firstRenderedLineElement = sourceBox.getLineNode(sourceBox.firstRenderedLine);
- if (!firstRenderedLineElement)
- {
- // It's not an error if the panel is disabled.
- if (FBTrace.DBG_ERRORS && this.isEnabled())
- FBTrace.sysout("setViewportPadding FAILS, no line at "+
- sourceBox.firstRenderedLine, sourceBox);
- return;
- }
-
- var averageLineHeight = this.getAverageLineHeight(sourceBox);
- // At this point our rendered range should surround our viewRange
- var linesOfPadding = sourceBox.firstRenderedLine; // above our viewRange.firstLine might be some rendered lines in the buffer.
- var topPadding = (linesOfPadding - 1) * averageLineHeight; // pixels
- // Because of rounding when converting from pixels to lines, topPadding can be +/- lineHeight/2, round up
- linesOfPadding = Math.floor( (topPadding + averageLineHeight)/ averageLineHeight);
- var topPadding = (linesOfPadding - 1)* averageLineHeight;
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("setViewportPadding topPadding = "+topPadding+
- " = (linesOfPadding - 1)* averageLineHeight = ("+linesOfPadding+" - 1)* "+
- averageLineHeight);
-
- // we want the bottomPadding to take up the rest
-
- var totalPadding = this.getTotalPadding(sourceBox);
- var bottomPadding = totalPadding < 0 ?
- Math.abs(totalPadding) : Math.floor(totalPadding - topPadding);
-
- if (bottomPadding < 0)
- bottomPadding = 0;
-
- var view = sourceBox.viewport;
-
- // Set the size on the line number field so the padding is filled with
- // same style as source lines.
- view.previousSibling.style.height = topPadding + "px";
- view.nextSibling.style.height = bottomPadding + "px";
-
- //sourceRow
- view.previousSibling.firstChild.style.height = topPadding + "px";
- view.nextSibling.firstChild.style.height = bottomPadding + "px";
-
- //sourceLine
- view.previousSibling.firstChild.firstChild.style.height = topPadding + "px";
- view.nextSibling.firstChild.firstChild.style.height = bottomPadding + "px";
-
-
- if(FBTrace.DBG_COMPILATION_UNITS)
- {
- var firstViewRangeElement = sourceBox.getLineNode(viewRange.firstLine);
- var scrollTopOffset = sourceBox.scrollTop - firstViewRangeElement.offsetTop;
- FBTrace.sysout("setViewportPadding viewport offsetHeight: "+
- sourceBox.viewport.offsetHeight+", clientHeight "+sourceBox.viewport.clientHeight);
- FBTrace.sysout("setViewportPadding sourceBox, offsetHeight: "+
- sourceBox.offsetHeight+", clientHeight "+sourceBox.clientHeight+
- ", scrollHeight: "+sourceBox.scrollHeight);
- FBTrace.sysout("setViewportPadding scrollTopOffset: "+scrollTopOffset+
- " firstLine "+viewRange.firstLine+" bottom: "+bottomPadding+" top: "+topPadding);
- }
-
- },
-
- applyDecorator: function(sourceBox)
- {
- if (this.context.sourceBoxDecoratorTimeout)
- {
- this.context.clearTimeout(this.context.sourceBoxDecoratorTimeout);
- delete this.context.sourceBoxDecoratorTimeout;
- }
-
- // Run source code decorating on 150ms timeout, which is bigger than
- // the period in which scroll events are fired. So, if the user is moving
- // scroll-bar thumb (or quickly clicking on scroll-arrows), the source code is
- // not decorated (the timeout cleared by the code above) and the scrolling is fast.
- this.context.sourceBoxDecoratorTimeout = this.context.setTimeout(
- Obj.bindFixed(this.asyncDecorating, this, sourceBox), 150);
-
- if (this.context.sourceBoxHighlighterTimeout)
- {
- this.context.clearTimeout(this.context.sourceBoxHighlighterTimeout);
- delete this.context.sourceBoxHighlighterTimeout;
- }
-
- // Source code highlighting is using different timeout: 0ms. When searching
- // within the Script panel, the user expects immediate response.
- this.context.sourceBoxHighlighterTimeout = this.context.setTimeout(
- Obj.bindFixed(this.asyncHighlighting, this, sourceBox));
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("applyDecorator "+sourceBox.repObject.url+" sourceBox.highlighter "+
- sourceBox.highlighter, sourceBox);
- },
-
- asyncDecorating: function(sourceBox)
- {
- try
- {
- sourceBox.decorator.decorate(sourceBox, sourceBox.repObject);
-
- if (Firebug.uiListeners.length > 0)
- Events.dispatch(Firebug.uiListeners, "onApplyDecorator", [sourceBox]);
-
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("sourceBoxDecoratorTimeout "+sourceBox.repObject, sourceBox);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("sourcebox applyDecorator FAILS "+exc, exc);
- }
- },
-
- asyncHighlighting: function(sourceBox)
- {
- try
- {
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("asyncHighlighting "+sourceBox.repObject.url+
- " sourceBox.highlighter "+sourceBox.highlighter, sourceBox);
-
- if (sourceBox.highlighter)
- {
- // If the sticky flag is false, the highlight is removed, eg the search
- // and sourcelink highlights.
- // else the highlight must be removed by the caller, eg breakpoint
- // hit executable line.
- var sticky = sourceBox.highlighter(sourceBox);
- if (FBTrace.DBG_COMPILATION_UNITS)
- FBTrace.sysout("asyncHighlighting highlighter sticky:"+sticky,
- sourceBox.highlighter);
-
- if (!sticky)
- delete sourceBox.highlighter;
- // else we delete these when we get highlighting call with invalid line (eg -1)
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("sourcebox highlighter FAILS "+exc, exc);
- }
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-return Firebug.SourceBoxPanel;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "arch/compilationunit",
+ "firebug/lib/events",
+ "firebug/js/sourceLink",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/string",
+],
+function(Obj, Firebug, CompilationUnit, Events, SourceLink, Css, Dom, Str) {
+
+// ********************************************************************************************* //
+
+/**
+ * @class Defines the API for SourceBoxDecorator and provides the default implementation.
+ * Decorators are passed the source box on construction, called to create the HTML,
+ * and called whenever the user scrolls the view.
+ */
+Firebug.SourceBoxDecorator = function(sourceBox)
+{
+};
+
+Firebug.SourceBoxDecorator.sourceBoxCounter = 0;
+
+Firebug.SourceBoxDecorator.prototype =
+/** @lends Firebug.SourceBoxDecorator */
+{
+ onSourceBoxCreation: function(sourceBox)
+ {
+ // allow panel-document unique ids to be generated for lines.
+ sourceBox.uniqueId = ++Firebug.SourceBoxDecorator.sourceBoxCounter;
+ },
+
+ /**
+ * called on a delay after the view port is updated, eg vertical scroll
+ * The sourceBox will contain lines from firstRenderedLine to lastRenderedLine
+ * The user will be able to see sourceBox.firstViewableLine to sourceBox.lastViewableLine
+ */
+ decorate: function(sourceBox, compilationUnit)
+ {
+ return;
+ },
+
+ /**
+ * called once as each line is being rendered.
+ * @param lineNo integer 1-maxLineNumbers
+ */
+ getUserVisibleLineNumber: function(sourceBox, lineNo)
+ {
+ return lineNo;
+ },
+
+ /**
+ * call once as each line is being rendered.
+ * @param lineNo integer 1-maxLineNumbers
+ */
+ getLineHTML: function(sourceBox, lineNo)
+ {
+ var line = sourceBox.lines[lineNo-1];
+
+ // Crop huge lines.
+ if (Firebug.maxScriptLineLength > 0)
+ {
+ if (line.length > Firebug.maxScriptLineLength)
+ line = Str.cropString(line, Firebug.maxScriptLineLength);
+ }
+
+ var html = Str.escapeForSourceLine(line);
+
+ // If the pref says so, replace tabs by corresponding number of spaces.
+ if (Firebug.replaceTabs > 0)
+ {
+ var space = new Array(Firebug.replaceTabs + 1).join(" ");
+ html = html.replace(/\t/g, space);
+ }
+
+ return html;
+ },
+
+ /**
+ * @return a string unique to the sourcebox and line number, valid in getElementById()
+ */
+ getLineId: function(sourceBox, lineNo)
+ {
+ return 'sb' + sourceBox.uniqueId + '-L' + lineNo;
+ }
+};
+
+// ********************************************************************************************* //
+
+/**
+ * @panel Firebug.SourceBoxPanel: Intermediate level class for showing lines of source, eg Script Panel
+ * Implements a 'viewport' to render only the lines the user is viewing or has recently viewed.
+ * Scroll events or scrollToLine calls are converted to viewableRange line number range.
+ * The range of lines is rendered, skipping any that have already been rendered. Then if the
+ * new line range overlaps the old line range, done; else delete the old range.
+ * That way the lines kept contiguous.
+ * The rendering details are delegated to SourceBoxDecorator; each source line may be expanded into
+ * more rendered lines.
+ */
+Firebug.SourceBoxPanel = function() {};
+
+var SourceBoxPanelBase = Obj.extend(Firebug.MeasureBox, Firebug.ActivablePanel);
+Firebug.SourceBoxPanel = Obj.extend(SourceBoxPanelBase,
+/** @lends Firebug.SourceBoxPanel */
+{
+ initialize: function(context, doc)
+ {
+ this.onResize = Obj.bind(this.resizer, this);
+ this.sourceBoxes = {};
+ this.decorator = this.getDecorator();
+
+ Firebug.ActivablePanel.initialize.apply(this, arguments);
+ },
+
+ initializeNode: function(panelNode)
+ {
+ this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
+ Events.addEventListener(this.resizeEventTarget, "resize", this.onResize, true);
+ this.attachToCache();
+
+ Firebug.ActivablePanel.initializeNode.apply(this, arguments);
+ },
+
+ destroyNode: function()
+ {
+ if (this.resizeEventTarget)
+ {
+ Events.removeEventListener(this.resizeEventTarget, "resize", this.onResize, true);
+ }
+ else
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("sourceBox.destroyNode; ERROR this.resizeEventTarget is NULL " +
+ this, this);
+ }
+
+ this.detachFromCache();
+
+ Firebug.ActivablePanel.destroyNode.apply(this, arguments);
+ },
+
+ attachToCache: function()
+ {
+ this.context.sourceCache.addListener(this);
+ },
+
+ detachFromCache: function()
+ {
+ this.context.sourceCache.removeListener(this);
+ },
+
+ onTextSizeChange: function(zoom)
+ {
+ this.refresh();
+ },
+
+ removeAllSourceBoxes: function()
+ {
+ for (var url in this.sourceBoxes)
+ {
+ var sourceBox = this.sourceBoxes[url];
+ if (sourceBox)
+ {
+ try
+ {
+ this.panelNode.removeChild(sourceBox);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("sourceBox.removeAllSourceBoxes; EXCEPTION " + err, err);
+ }
+ }
+ else if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("sourceBoxPanel ERROR no sourceBox at "+url+" in context "+
+ this.context.getName());
+ }
+ }
+
+ this.sourceBoxes = {};
+
+ delete this.selectedSourceBox;
+ delete this.location;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // TabCache listener implementation
+
+ onStartRequest: function(context, request)
+ {
+
+ },
+
+ onStopRequest: function(context, request, responseText)
+ {
+ if (context === this.context)
+ {
+ var url = request.URI.spec;
+ var compilationUnit = context.getCompilationUnit(url);
+
+ // The compilation unit is created when JSD is compiling the script
+ // (e.g. onTopLevelScriptCreated), but onStopRequest can be triggered
+ // before (by a response channel listener) and so, the compilation
+ // unit doesn't have to exist at this moment
+ // However it should be ok, since the UI shouldn't exist before compilation
+ // and so, there shouldn't be what to update.
+ if (compilationUnit)
+ this.removeSourceBoxByCompilationUnit(compilationUnit);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /**
+ * Panel extension point.
+ * Called just before box is shown
+ */
+ updateSourceBox: function(sourceBox)
+ {
+
+ },
+
+ /* Panel extension point. Called on panel initialization
+ * @return Must implement SourceBoxDecorator API.
+ */
+ getDecorator: function()
+ {
+ return new Firebug.SourceBoxDecorator();
+ },
+
+ /* Panel extension point
+ * @return string eg "js" or "css"
+ */
+ getSourceType: function()
+ {
+ throw "SourceBox.getSourceType: Need to override in extender ";
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ disablePanel: function(module)
+ {
+ this.sourceBoxes = {}; // clear so we start fresh if enabled
+ Firebug.ActivablePanel.disablePanel.apply(this, arguments);
+ },
+
+ getSourceLinesFrom: function(selection)
+ {
+ // https://developer.mozilla.org/en/DOM/Selection
+ if (selection.isCollapsed)
+ return "";
+
+ var anchorSourceRow = Dom.getAncestorByClass(selection.anchorNode, "sourceRow");
+ var focusSourceRow = Dom.getAncestorByClass(selection.focusNode, "sourceRow");
+ if (anchorSourceRow == focusSourceRow)
+ {
+ return selection.toString();// trivial case
+ }
+
+ var buf = this.getSourceLine(anchorSourceRow, selection.anchorOffset);
+ var currentSourceRow = anchorSourceRow.nextSibling;
+
+ while(currentSourceRow && (currentSourceRow != focusSourceRow) &&
+ Css.hasClass(currentSourceRow, "sourceRow"))
+ {
+ buf += this.getSourceLine(currentSourceRow);
+ currentSourceRow = currentSourceRow.nextSibling;
+ }
+
+ buf += this.getSourceLine(focusSourceRow, 0, selection.focusOffset);
+ return buf;
+ },
+
+ getSourceLine: function(sourceRow, beginOffset, endOffset)
+ {
+ var source = Dom.getChildByClass(sourceRow, "sourceRowText").textContent;
+ if (endOffset)
+ source = source.substring(beginOffset, endOffset);
+ else if (beginOffset)
+ source = source.substring(beginOffset);
+
+ return source;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getSourceBoxByCompilationUnit: function(compilationUnit)
+ {
+ if (compilationUnit.getURL())
+ {
+ var sourceBox = this.getSourceBoxByURL(compilationUnit.getURL());
+ if (sourceBox && sourceBox.repObject == compilationUnit)
+ return sourceBox;
+ else
+ return null; // cause a new one to be created
+ }
+ },
+
+ getCompilationUnit: function()
+ {
+ if (this.selectedSourceBox)
+ return this.seletedSourceBox.repObject;
+ },
+
+ getSourceBoxByURL: function(url)
+ {
+ if (!this.sourceBoxes)
+ return null;
+
+ return url ? this.sourceBoxes[url] : null;
+ },
+
+ removeSourceBoxByCompilationUnit: function(compilationUnit)
+ {
+ var sourceBox = this.getSourceBoxByCompilationUnit(compilationUnit);
+ if (sourceBox) // else we did not create one for this compilationUnit
+ {
+ delete this.sourceBoxes[compilationUnit.getURL()];
+
+ if (sourceBox.parentNode === this.panelNode)
+ this.panelNode.removeChild(sourceBox);
+
+ if (this.selectedSourceBox === sourceBox) // need to update the view
+ {
+ delete this.selectedSourceBox;
+ delete this.location;
+ this.showSource(compilationUnit.getURL());
+ }
+ }
+ },
+
+ renameSourceBox: function(oldURL, newURL)
+ {
+ var sourceBox = this.sourceBoxes[oldURL];
+ if (sourceBox)
+ {
+ delete this.sourceBoxes[oldURL];
+ this.sourceBoxes[newURL] = sourceBox;
+ }
+ },
+
+ showSource: function(url)
+ {
+ var sourceBox = this.getOrCreateSourceBox(url);
+ this.showSourceBox(sourceBox);
+ },
+
+ getOrCreateSourceBox: function(url)
+ {
+ var compilationUnit = this.context.getCompilationUnit(url);
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("firebug.showSource: "+url, compilationUnit);
+
+ if (!compilationUnit)
+ return;
+
+ var sourceBox = this.getSourceBoxByCompilationUnit(compilationUnit);
+ if (!sourceBox)
+ sourceBox = this.createSourceBox(compilationUnit);
+
+ return sourceBox;
+ },
+
+ /**
+ * Assumes that locations are compilationUnits, TODO lower class
+ */
+ showSourceLink: function(sourceLink)
+ {
+ var sourceBox = this.getOrCreateSourceBox(sourceLink.href);
+
+ if (sourceBox)
+ {
+ if (sourceLink.line)
+ {
+ this.showSourceBox(sourceBox, sourceLink.line);
+ this.scrollToLine(sourceLink.href, sourceLink.line,
+ this.jumpHighlightFactory(sourceLink.line, this.context));
+ }
+ else
+ {
+ this.showSourceBox(sourceBox);
+ }
+
+ Events.dispatch(this.fbListeners, "onShowSourceLink", [this, sourceLink.line]);
+ }
+
+ // then clear it so the next link will scroll and highlight.
+ if (sourceLink == this.selection)
+ delete this.selection;
+ },
+
+ showSourceBox: function(sourceBox, lineNo)
+ {
+ if (this.selectedSourceBox)
+ Dom.collapse(this.selectedSourceBox, true);
+
+ if (this.selectedSourceBox !== sourceBox)
+ delete this.currentSearch;
+
+ this.selectedSourceBox = sourceBox;
+
+ if (sourceBox)
+ {
+ sourceBox.targetedLineNumber = lineNo; // signal reView to put this line in the center
+ Dom.collapse(sourceBox, false);
+ this.reView(sourceBox);
+ this.updateSourceBox(sourceBox);
+ }
+ },
+
+ /**
+ * Private, do not call outside of this object
+ * A sourceBox is a div with additional operations and state.
+ * @param compilationUnit there is at most one sourceBox for each compilationUnit
+ */
+ createSourceBox: function(compilationUnit) // decorator(compilationUnit, sourceBox)
+ {
+ var sourceBox = this.initializeSourceBox(compilationUnit);
+
+ sourceBox.decorator = this.decorator;
+
+ // Framework connection
+ sourceBox.decorator.onSourceBoxCreation(sourceBox);
+
+ this.sourceBoxes[compilationUnit.getURL()] = sourceBox;
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("firebug.createSourceBox with " + sourceBox.maximumLineNumber +
+ " lines for "+compilationUnit+(compilationUnit.getURL()?" sourceBoxes":" anon "),
+ sourceBox);
+
+ this.panelNode.appendChild(sourceBox);
+ this.setSourceBoxLineSizes(sourceBox);
+
+ return sourceBox;
+ },
+
+ getSourceBoxURL: function(sourceBox)
+ {
+ return sourceBox.repObject.getURL();
+ },
+
+ initializeSourceBox: function(compilationUnit)
+ {
+ var sourceBox = this.document.createElement("div");
+ Css.setClass(sourceBox, "sourceBox");
+ Dom.collapse(sourceBox, true);
+ sourceBox.repObject = compilationUnit;
+ compilationUnit.sourceBox = sourceBox;
+
+ sourceBox.getLineNode = function(lineNo)
+ {
+ // XXXjjb this method is supposed to return null if the lineNo is not in the viewport
+ return this.ownerDocument.getElementById(this.decorator.getLineId(this, lineNo));
+ };
+
+ var paddedSource =
+ "<div class='topSourcePadding'>" +
+ "<div class='sourceRow'><div class='sourceLine'></div><div class='sourceRowText'></div></div>"+
+ "</div>"+
+ "<div class='sourceViewport'></div>"+
+ "<div class='bottomSourcePadding'>"+
+ "<div class='sourceRow'><div class='sourceLine'></div><div class='sourceRowText'></div></div>"+
+ "</div>";
+
+ Dom.appendInnerHTML(sourceBox, paddedSource);
+
+ sourceBox.viewport = Dom.getChildByClass(sourceBox, 'sourceViewport');
+ return sourceBox;
+ },
+
+ onSourceLinesAvailable: function(compilationUnit, firstLineAvailable, lastLineAvailable, lines)
+ {
+ var sourceBox = compilationUnit.sourceBox;
+ var requestedLines = compilationUnit.pendingViewRange;
+ delete compilationUnit.pendingViewRange;
+
+ if (requestedLines) // then are viewing a range
+ {
+ if (firstLineAvailable > requestedLines.firstLine)
+ requestedLines.firstLine = firstLineAvailable;
+
+ if (lastLineAvailable < requestedLines.lastLine)
+ requestedLines.lastLine = lastLineAvailable;
+ }
+ else // then no range was given, render all.
+ {
+ requestedLines = {firstLine: firstLineAvailable, lastLine: lastLineAvailable};
+ }
+
+ sourceBox.lines = lines; // an array indexed from firstLineAvailable to lastLineAvailable
+
+ sourceBox.maximumLineNumber = compilationUnit.getNumberOfLines();
+ sourceBox.maxLineNoChars = (sourceBox.maximumLineNumber + "").length;
+
+ this.setSourceBoxLineSizes(sourceBox);
+
+ this.reViewOnSourceLinesAvailable(sourceBox, requestedLines);
+ },
+
+ setSourceBoxLineSizes: function(sourceBox)
+ {
+ var view = sourceBox.viewport;
+
+ var lineNoCharsSpacer = "";
+ for (var i = 0; i < sourceBox.maxLineNoChars; i++)
+ lineNoCharsSpacer += "0";
+
+ this.startMeasuring(view);
+ var size = this.measureText(lineNoCharsSpacer);
+ this.stopMeasuring();
+
+ sourceBox.lineHeight = size.height + 1;
+ sourceBox.lineNoWidth = size.width;
+
+ var view = sourceBox.viewport; // TODO some cleaner way
+ view.previousSibling.firstChild.firstChild.style.width = sourceBox.lineNoWidth + "px";
+ view.nextSibling.firstChild.firstChild.style.width = sourceBox.lineNoWidth + "px";
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ {
+ FBTrace.sysout("setSourceBoxLineSizes size for lineNoCharsSpacer " +
+ lineNoCharsSpacer, size);
+ FBTrace.sysout("firebug.setSourceBoxLineSizes, sourceBox.scrollTop " +
+ sourceBox.scrollTop+ " sourceBox.lineHeight: "+sourceBox.lineHeight+
+ " sourceBox.lineNoWidth:"+sourceBox.lineNoWidth);
+ }
+ },
+
+ /**
+ * @return SourceLink to currently selected source file
+ */
+ getSourceLink: function(lineNo)
+ {
+ if (!this.selectedSourceBox)
+ return;
+
+ if (!lineNo)
+ lineNo = this.getCentralLine(this.selectedSourceBox);
+
+ return new SourceLink.SourceLink(this.selectedSourceBox.repObject.href, lineNo,
+ this.getSourceType());
+ },
+
+ /**
+ * Select sourcebox with href, scroll lineNo into center, highlight lineNo with
+ * highlighter given
+ *
+ * @param href a Url, null means the selected compilationUnit
+ * @param lineNo integer 1 - maximumLineNumber
+ * @param highlighter callback, a function(sourceBox). sourceBox.centralLine will be lineNo
+ */
+ scrollToLine: function(href, lineNo, highlighter)
+ {
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("SourceBoxPanel.scrollToLine: "+lineNo+"@"+href+" with highlighter "+
+ highlighter, highlighter);
+
+ if (this.context.scrollTimeout)
+ {
+ this.context.clearTimeout(this.context.scrollTimeout);
+ delete this.context.scrollTimeout;
+ }
+
+ if (href)
+ {
+ var sourceBox = this.getOrCreateSourceBox(href);
+ this.showSourceBox(sourceBox, lineNo);
+ }
+
+ if (!this.skipScrolling(lineNo))
+ {
+ var viewRange = this.getViewRangeFromTargetLine(this.selectedSourceBox, lineNo);
+ this.selectedSourceBox.newScrollTop = this.getScrollTopFromViewRange(
+ this.selectedSourceBox, viewRange);
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("SourceBoxPanel.scrollTimeout: newScrollTop "+
+ this.selectedSourceBox.newScrollTop+" vs old "+
+ this.selectedSourceBox.scrollTop+" for "+this.selectedSourceBox.repObject.href);
+
+ // *may* cause scrolling
+ this.selectedSourceBox.scrollTop = this.selectedSourceBox.newScrollTop;
+ }
+
+ this.context.scrollTimeout = this.context.setTimeout(Obj.bindFixed(function()
+ {
+ if (!this.selectedSourceBox)
+ {
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("SourceBoxPanel.scrollTimeout no selectedSourceBox");
+ return;
+ }
+
+ if (this.selectedSourceBox.highlighter)
+ this.applyDecorator(this.selectedSourceBox); // may need to highlight even if we don't scroll
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("SourceBoxPanel.scrollTimeout: scrollTo "+lineNo+
+ " this.selectedSourceBox.highlighter: "+this.selectedSourceBox.highlighter);
+ }, this));
+
+ this.selectedSourceBox.highlighter = highlighter; // clears if null
+ },
+
+ skipScrolling: function(lineNo)
+ {
+ var skipScrolling = false;
+ var firstViewRangeElement = this.selectedSourceBox.getLineNode(
+ this.selectedSourceBox.firstViewableLine);
+ var scrollTopOffset = this.selectedSourceBox.scrollTop - firstViewRangeElement.offsetTop;
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("SourceBoxPanel.skipScrolling scrollTopOffset "+
+ Math.abs(scrollTopOffset) + " > " + firstViewRangeElement.offsetHeight);
+
+ if (Math.abs(scrollTopOffset) > firstViewRangeElement.offsetHeight)
+ return skipScrolling;
+
+ if (this.selectedSourceBox.firstViewableLine && this.selectedSourceBox.lastViewableLine)
+ {
+ var linesFromTop = lineNo - this.selectedSourceBox.firstViewableLine;
+ var linesFromBot = this.selectedSourceBox.lastViewableLine - lineNo;
+ skipScrolling = (linesFromTop > 3 && linesFromBot > 3);
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("SourceBoxPanel.skipScrolling: skipScrolling: "+skipScrolling+
+ " fromTop:"+linesFromTop+" fromBot:"+linesFromBot);
+ }
+ else // the selectedSourceBox has not been built
+ {
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("SourceBoxPanel.skipScrolling, no viewable lines",
+ this.selectedSourceBox);
+ }
+
+ return skipScrolling;
+ },
+
+ /**
+ * @return a highlighter function(sourceBox) that puts a class on the line for a time slice
+ */
+ jumpHighlightFactory: function(lineNo, context)
+ {
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("sourceBox.jumpHighlightFactory; highlighter created for " + lineNo);
+
+ return function jumpHighlightIfInView(sourceBox)
+ {
+ var lineNode = sourceBox.getLineNode(lineNo);
+
+ if (context.highlightedRow)
+ Css.cancelClassTimed(context.highlightedRow, "jumpHighlight", context);
+
+ if (lineNode)
+ {
+ Css.setClassTimed(lineNode, "jumpHighlight", context);
+
+ context.highlightedRow = lineNode;
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ {
+ FBTrace.sysout("jumpHighlightFactory on line "+lineNo+" lineNode:"+
+ lineNode.getElementsByClassName("sourceRowText")[0].textContent);
+ }
+ }
+ else
+ {
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("jumpHighlightFactory no node at line "+lineNo, sourceBox);
+ }
+
+ return false; // not sticky
+ };
+ },
+
+ /*
+ * resize and scroll event handler
+ */
+ resizer: function(event)
+ {
+ // The resize target is Firebug as a whole. But most of the UI needs no special
+ // code for resize.
+ // But our SourceBoxPanel has viewport that will change size.
+ if (this.selectedSourceBox && this.visible)
+ {
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("resizer event: "+event.type+" in panel "+this.name+" for "+
+ this.context.getName(), event);
+
+ this.reView(this.selectedSourceBox);
+ }
+ },
+
+ // called for all scroll events, including any time sourcebox.scrollTop is set
+ reView: function(sourceBox, clearCache)
+ {
+ var viewRange = null;
+ if (sourceBox.targetedLineNumber) // then we requested a certain line
+ {
+ viewRange = this.getViewRangeFromTargetLine(sourceBox, sourceBox.targetedLineNumber);
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("reView got viewRange from target line: "+
+ sourceBox.targetedLineNumber, viewRange);
+
+ // We've positioned on the targeted line. Now the user may scroll
+ delete sourceBox.targetedLineNumber;
+
+ // our current scrolltop is not useful, so clear the saved value to avoid comparing below.
+ delete sourceBox.lastScrollTop;
+ }
+ else // no special line, assume scrolling
+ {
+ viewRange = this.getViewRangeFromScrollTop(sourceBox, sourceBox.scrollTop);
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("reView got viewRange from scrollTop: "+sourceBox.scrollTop, viewRange);
+ }
+
+ if (clearCache)
+ {
+ this.clearSourceBox(sourceBox);
+ }
+ else if (sourceBox.scrollTop === sourceBox.lastScrollTop && sourceBox.clientHeight &&
+ sourceBox.clientHeight === sourceBox.lastClientHeight)
+ {
+ if (sourceBox.firstRenderedLine <= viewRange.firstLine &&
+ sourceBox.lastRenderedLine >= viewRange.lastLine)
+ {
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("reView skipping sourceBox "+sourceBox.scrollTop+
+ "=scrollTop="+sourceBox.lastScrollTop+", "+ sourceBox.clientHeight+
+ "=clientHeight="+sourceBox.lastClientHeight, sourceBox);
+
+ // skip work if nothing changes.
+ return;
+ }
+ }
+
+ var compilationUnit = sourceBox.repObject;
+ compilationUnit.pendingViewRange = viewRange;
+ compilationUnit.getSourceLines(viewRange.firstLine, viewRange.lastLine,
+ Obj.bind(this.onSourceLinesAvailable, this));
+ },
+
+ reViewOnSourceLinesAvailable: function(sourceBox, viewRange)
+ {
+ // XXXjjb TODO where should this be?
+ Events.dispatch(this.fbListeners, "onBeforeViewportChange", [this]);
+
+ this.buildViewAround(sourceBox, viewRange);
+
+ if (Firebug.uiListeners.length > 0)
+ {
+ var link = new SourceLink.SourceLink(sourceBox.repObject.href, sourceBox.centralLine,
+ this.getSourceType());
+
+ Events.dispatch(Firebug.uiListeners, "onViewportChange", [link]);
+ }
+
+ sourceBox.lastScrollTop = sourceBox.scrollTop;
+ sourceBox.lastClientHeight = sourceBox.clientHeight;
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("sourceBox.reViewOnSourceLinesAvailable sourceBox.lastScrollTop "+
+ sourceBox.lastScrollTop+" sourceBox.lastClientHeight "+sourceBox.lastClientHeight);
+ },
+
+ buildViewAround: function(sourceBox, viewRange)
+ {
+ try
+ {
+ this.updateViewportCache(sourceBox, viewRange);
+ }
+ catch(exc)
+ {
+ if(FBTrace.DBG_ERRORS)
+ FBTrace.sysout("buildViewAround updateViewportCache FAILS "+exc, exc);
+ }
+
+ Dom.collapse(sourceBox, false); // the elements must be visible for the offset values
+ this.setViewportPadding(sourceBox, viewRange);
+
+ sourceBox.centralLine = Math.ceil((viewRange.lastLine + viewRange.firstLine)/2);
+
+ this.applyDecorator(sourceBox);
+
+ return;
+ },
+
+ updateViewportCache: function(sourceBox, viewRange)
+ {
+ var cacheHit = this.insertedLinesOverlapCache(sourceBox, viewRange);
+
+ if (!cacheHit)
+ {
+ this.clearSourceBox(sourceBox); // no overlap, remove old range
+ sourceBox.firstRenderedLine = viewRange.firstLine; // reset cached range
+ sourceBox.lastRenderedLine = viewRange.lastLine;
+ }
+ else // cache overlap, expand range of cache
+ {
+ sourceBox.firstRenderedLine = Math.min(viewRange.firstLine, sourceBox.firstRenderedLine);
+ sourceBox.lastRenderedLine = Math.max(viewRange.lastLine, sourceBox.lastRenderedLine);
+ }
+
+ // todo actually check that these are viewable
+ sourceBox.firstViewableLine = viewRange.firstLine;
+ sourceBox.lastViewableLine = viewRange.lastLine;
+ sourceBox.numberOfRenderedLines = sourceBox.lastRenderedLine - sourceBox.firstRenderedLine + 1;
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("buildViewAround viewRange: "+viewRange.firstLine+"-"+
+ viewRange.lastLine+" rendered: "+sourceBox.firstRenderedLine+"-"+
+ sourceBox.lastRenderedLine, sourceBox);
+ },
+
+ /*
+ * Add lines from viewRange, but do not adjust first/lastRenderedLine.
+ * @return true if viewRange overlaps first/lastRenderedLine
+ */
+ insertedLinesOverlapCache: function(sourceBox, viewRange)
+ {
+ var topCacheLine = null;
+ var cacheHit = false;
+ for (var line = viewRange.firstLine; line <= viewRange.lastLine; line++)
+ {
+ if (line >= sourceBox.firstRenderedLine && line <= sourceBox.lastRenderedLine )
+ {
+ cacheHit = true;
+ continue;
+ }
+
+ var lineHTML = this.getSourceLineHTML(sourceBox, line);
+
+ var ref = null;
+ if (line < sourceBox.firstRenderedLine) // prepend if we are above the cache
+ {
+ if (!topCacheLine)
+ topCacheLine = sourceBox.getLineNode(sourceBox.firstRenderedLine);
+ ref = topCacheLine;
+ }
+
+ Dom.appendInnerHTML(sourceBox.viewport, lineHTML, ref);
+ }
+ return cacheHit;
+ },
+
+ clearSourceBox: function(sourceBox)
+ {
+ if (sourceBox.firstRenderedLine)
+ {
+ var topMostCachedElement = sourceBox.getLineNode(sourceBox.firstRenderedLine); // eg 1
+ var totalCached = sourceBox.lastRenderedLine - sourceBox.firstRenderedLine + 1; // eg 20 - 1 + 1 = 19
+ if (topMostCachedElement && totalCached)
+ this.removeLines(sourceBox, topMostCachedElement, totalCached);
+ }
+ sourceBox.lastRenderedLine = 0;
+ sourceBox.firstRenderedLine = 0;
+ sourceBox.numberOfRenderedLines = 0;
+ },
+
+ getSourceLineHTML: function(sourceBox, i)
+ {
+ var lineNo = sourceBox.decorator.getUserVisibleLineNumber(sourceBox, i);
+ var lineHTML = sourceBox.decorator.getLineHTML(sourceBox, i);
+
+ // decorator lines may not have ids
+ var lineId = sourceBox.decorator.getLineId(sourceBox, i);
+
+ var lineNoText = this.getTextForLineNo(lineNo, sourceBox.maxLineNoChars);
+
+ var theHTML =
+ '<div '
+ + (lineId ? ('id="' + lineId + '"') : "")
+ + ' class="sourceRow" role="presentation"><a class="'
+ + 'sourceLine' + '" role="presentation">'
+ + lineNoText
+ + '</a><span class="sourceRowText" role="presentation">'
+ + lineHTML
+ + '</span></div>';
+
+ return theHTML;
+ },
+
+ getTextForLineNo: function(lineNo, maxLineNoChars)
+ {
+ // Make sure all line numbers are the same width (with a fixed-width font)
+ var lineNoText = lineNo + "";
+ while (lineNoText.length < maxLineNoChars)
+ lineNoText = " " + lineNoText;
+
+ return lineNoText;
+ },
+
+ removeLines: function(sourceBox, firstRemoval, totalRemovals)
+ {
+ for(var i = 1; i <= totalRemovals; i++)
+ {
+ var nextSourceLine = firstRemoval;
+ firstRemoval = firstRemoval.nextSibling;
+ sourceBox.viewport.removeChild(nextSourceLine);
+ }
+ },
+
+ getCentralLine: function(sourceBox)
+ {
+ return sourceBox.centralLine;
+ },
+
+ getViewRangeFromTargetLine: function(sourceBox, targetLineNumber)
+ {
+ var viewRange = {firstLine: 1, centralLine: targetLineNumber, lastLine: 1};
+
+ var averageLineHeight = this.getAverageLineHeight(sourceBox);
+ var panelHeight = this.panelNode.clientHeight;
+ // We never want viewableLines * lineHeight > clientHeight
+ // So viewableLines <= clientHeight / lineHeight
+ //
+ // In some cases when Script panel is restored flooring the result can cause
+ // loosing one line and so, the Script panel is not properly restored
+ // (the top line is less by one)
+ // Math.floor changed to Math.round
+ // So, 'viewableLines * lineHeight' can be a bit higher than 'clientHeight'.
+ var linesPerViewport = Math.round((panelHeight / averageLineHeight));
+
+ viewRange.firstLine = Math.round(targetLineNumber - linesPerViewport / 2);
+
+ if (viewRange.firstLine <= 0)
+ viewRange.firstLine = 1;
+
+ viewRange.lastLine = viewRange.firstLine + linesPerViewport;
+
+ if (viewRange.lastLine > sourceBox.maximumLineNumber)
+ viewRange.lastLine = sourceBox.maximumLineNumber;
+
+ return viewRange;
+ },
+
+ /**
+ * Use the average height of source lines in the cache to estimate where the scroll bar
+ * points based on scrollTop
+ */
+ getViewRangeFromScrollTop: function(sourceBox, scrollTop)
+ {
+ var viewRange = {};
+ var averageLineHeight = this.getAverageLineHeight(sourceBox);
+ // If the scrollTop comes in zero, then we better pick line 1. (0 / 14) + 1 = 1
+ // If the scrollTop is in the middle of line 2, pick line 2. (20 / 14) + 1 = 2.43 ==> 2
+ viewRange.firstLine = Math.floor((scrollTop / averageLineHeight) + 1);
+
+ var panelHeight = this.panelNode.clientHeight;
+
+ // then we probably have not inserted the elements yet and the clientHeight is bogus
+ if (panelHeight === 0)
+ panelHeight = this.panelNode.ownerDocument.documentElement.clientHeight;
+
+ // Set minimum height of the panel (in case Firebug UI is set to minimum using
+ // the splitter) such that the source box can be properly created (issue 4417).
+ panelHeight = (panelHeight < 100) ? 100 : panelHeight;
+
+ // see getViewRangeFromTargetLine
+ var viewableLines = Math.round((panelHeight / averageLineHeight));
+ viewRange.lastLine = viewRange.firstLine + viewableLines - 1; // 15 = 1 + 15 - 1;
+
+ if (viewRange.lastLine > sourceBox.maximumLineNumber)
+ viewRange.lastLine = sourceBox.maximumLineNumber;
+
+ viewRange.centralLine = Math.ceil((viewRange.lastLine - viewRange.firstLine)/2);
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ {
+ FBTrace.sysout("getViewRangeFromScrollTop scrollTop:"+scrollTop+" viewRange: "+
+ viewRange.firstLine+"-"+viewRange.lastLine+" max: "+sourceBox.maximumLineNumber+
+ " panelHeight "+panelHeight);
+
+ if (!this.noRecurse)
+ {
+ this.noRecurse = true;
+ var testScrollTop = this.getScrollTopFromViewRange(sourceBox, viewRange);
+ delete this.noRecurse;
+
+ FBTrace.sysout("getViewRangeFromScrollTop "+((scrollTop==testScrollTop)?
+ "checks":(scrollTop+"=!scrollTop!="+testScrollTop)));
+ }
+ }
+
+ return viewRange;
+ },
+
+ /**
+ * inverse of the getViewRangeFromScrollTop.
+ * If the viewRange was set by targetLineNumber, then this value become the new scroll top
+ * else the value will be the same as the scrollbar's given value of scrollTop.
+ */
+ getScrollTopFromViewRange: function(sourceBox, viewRange)
+ {
+ var averageLineHeight = this.getAverageLineHeight(sourceBox);
+ // If the fist line is 1, scrollTop should be 0 14 * (1 - 1) = 0
+ // If the first line is 2, scrollTop would be lineHeight 14 * (2 - 1) = 14
+
+ var scrollTop = averageLineHeight * (viewRange.firstLine - 1);
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ {
+ FBTrace.sysout("getScrollTopFromViewRange viewRange:"+viewRange.firstLine+"-"+
+ viewRange.lastLine+" averageLineHeight: "+averageLineHeight+" scrollTop "+scrollTop);
+
+ if (!this.noRecurse)
+ {
+ this.noRecurse = true;
+ var testViewRange = this.getViewRangeFromScrollTop(sourceBox, scrollTop);
+ delete this.noRecurse;
+ var vrStr = viewRange.firstLine+"-"+viewRange.lastLine;
+ var tvrStr = testViewRange.firstLine+"-"+testViewRange.lastLine;
+
+ FBTrace.sysout("getScrollTopFromViewRange "+
+ ((vrStr==tvrStr)? "checks" : vrStr+"=!viewRange!="+tvrStr));
+ }
+ }
+
+ return scrollTop;
+ },
+
+ /**
+ * The virtual sourceBox height is the averageLineHeight * max lines
+ * @return float
+ */
+ getAverageLineHeight: function(sourceBox)
+ {
+ var averageLineHeight = sourceBox.lineHeight; // fall back to single line height
+
+ var renderedViewportHeight = sourceBox.viewport.clientHeight;
+ var numberOfRenderedLines = sourceBox.numberOfRenderedLines;
+ if (renderedViewportHeight && numberOfRenderedLines)
+ averageLineHeight = renderedViewportHeight / numberOfRenderedLines;
+
+ return averageLineHeight;
+ },
+
+ /**
+ * The virtual sourceBox = topPadding + sourceBox.viewport + bottomPadding
+ * The viewport grows as more lines are added to the cache
+ * The virtual sourceBox height is estimated from the average height lines in the
+ * viewport cache
+ */
+ getTotalPadding: function(sourceBox)
+ {
+ var numberOfRenderedLines = sourceBox.numberOfRenderedLines;
+ if (!numberOfRenderedLines)
+ return 0;
+
+ var max = sourceBox.maximumLineNumber;
+ var averageLineHeight = this.getAverageLineHeight(sourceBox);
+ // total box will be the average line height times total lines
+ var virtualSourceBoxHeight = Math.floor(max * averageLineHeight);
+
+ // the total - view-taken-up - scrollbar
+ // clientHeight excludes scrollbar
+ var totalPadding = virtualSourceBoxHeight < sourceBox.clientHeight ?
+ sourceBox.clientHeight - 1 : virtualSourceBoxHeight;
+ totalPadding -= sourceBox.viewport.clientHeight;
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ {
+ FBTrace.sysout("getTotalPadding clientHeight:"+sourceBox.viewport.clientHeight+
+ " max: "+max+" gives total padding "+totalPadding);
+ }
+
+ return totalPadding;
+ },
+
+ setViewportPadding: function(sourceBox, viewRange)
+ {
+ var firstRenderedLineElement = sourceBox.getLineNode(sourceBox.firstRenderedLine);
+ if (!firstRenderedLineElement)
+ {
+ // It's not an error if the panel is disabled.
+ if (FBTrace.DBG_ERRORS && this.isEnabled())
+ FBTrace.sysout("setViewportPadding FAILS, no line at "+
+ sourceBox.firstRenderedLine, sourceBox);
+ return;
+ }
+
+ var averageLineHeight = this.getAverageLineHeight(sourceBox);
+ // At this point our rendered range should surround our viewRange
+ var linesOfPadding = sourceBox.firstRenderedLine; // above our viewRange.firstLine might be some rendered lines in the buffer.
+ var topPadding = (linesOfPadding - 1) * averageLineHeight; // pixels
+ // Because of rounding when converting from pixels to lines, topPadding can be +/- lineHeight/2, round up
+ linesOfPadding = Math.floor( (topPadding + averageLineHeight)/ averageLineHeight);
+ var topPadding = (linesOfPadding - 1)* averageLineHeight;
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("setViewportPadding topPadding = "+topPadding+
+ " = (linesOfPadding - 1)* averageLineHeight = ("+linesOfPadding+" - 1)* "+
+ averageLineHeight);
+
+ // we want the bottomPadding to take up the rest
+
+ var totalPadding = this.getTotalPadding(sourceBox);
+ var bottomPadding = totalPadding < 0 ?
+ Math.abs(totalPadding) : Math.floor(totalPadding - topPadding);
+
+ if (bottomPadding < 0)
+ bottomPadding = 0;
+
+ var view = sourceBox.viewport;
+
+ // Set the size on the line number field so the padding is filled with
+ // same style as source lines.
+ view.previousSibling.style.height = topPadding + "px";
+ view.nextSibling.style.height = bottomPadding + "px";
+
+ //sourceRow
+ view.previousSibling.firstChild.style.height = topPadding + "px";
+ view.nextSibling.firstChild.style.height = bottomPadding + "px";
+
+ //sourceLine
+ view.previousSibling.firstChild.firstChild.style.height = topPadding + "px";
+ view.nextSibling.firstChild.firstChild.style.height = bottomPadding + "px";
+
+
+ if(FBTrace.DBG_COMPILATION_UNITS)
+ {
+ var firstViewRangeElement = sourceBox.getLineNode(viewRange.firstLine);
+ var scrollTopOffset = sourceBox.scrollTop - firstViewRangeElement.offsetTop;
+ FBTrace.sysout("setViewportPadding viewport offsetHeight: "+
+ sourceBox.viewport.offsetHeight+", clientHeight "+sourceBox.viewport.clientHeight);
+ FBTrace.sysout("setViewportPadding sourceBox, offsetHeight: "+
+ sourceBox.offsetHeight+", clientHeight "+sourceBox.clientHeight+
+ ", scrollHeight: "+sourceBox.scrollHeight);
+ FBTrace.sysout("setViewportPadding scrollTopOffset: "+scrollTopOffset+
+ " firstLine "+viewRange.firstLine+" bottom: "+bottomPadding+" top: "+topPadding);
+ }
+
+ },
+
+ applyDecorator: function(sourceBox)
+ {
+ if (this.context.sourceBoxDecoratorTimeout)
+ {
+ this.context.clearTimeout(this.context.sourceBoxDecoratorTimeout);
+ delete this.context.sourceBoxDecoratorTimeout;
+ }
+
+ // Run source code decorating on 150ms timeout, which is bigger than
+ // the period in which scroll events are fired. So, if the user is moving
+ // scroll-bar thumb (or quickly clicking on scroll-arrows), the source code is
+ // not decorated (the timeout cleared by the code above) and the scrolling is fast.
+ this.context.sourceBoxDecoratorTimeout = this.context.setTimeout(
+ Obj.bindFixed(this.asyncDecorating, this, sourceBox), 150);
+
+ if (this.context.sourceBoxHighlighterTimeout)
+ {
+ this.context.clearTimeout(this.context.sourceBoxHighlighterTimeout);
+ delete this.context.sourceBoxHighlighterTimeout;
+ }
+
+ // Source code highlighting is using different timeout: 0ms. When searching
+ // within the Script panel, the user expects immediate response.
+ this.context.sourceBoxHighlighterTimeout = this.context.setTimeout(
+ Obj.bindFixed(this.asyncHighlighting, this, sourceBox));
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("applyDecorator "+sourceBox.repObject.url+" sourceBox.highlighter "+
+ sourceBox.highlighter, sourceBox);
+ },
+
+ asyncDecorating: function(sourceBox)
+ {
+ try
+ {
+ sourceBox.decorator.decorate(sourceBox, sourceBox.repObject);
+
+ if (Firebug.uiListeners.length > 0)
+ Events.dispatch(Firebug.uiListeners, "onApplyDecorator", [sourceBox]);
+
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("sourceBoxDecoratorTimeout "+sourceBox.repObject, sourceBox);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("sourcebox applyDecorator FAILS "+exc, exc);
+ }
+ },
+
+ asyncHighlighting: function(sourceBox)
+ {
+ try
+ {
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("asyncHighlighting "+sourceBox.repObject.url+
+ " sourceBox.highlighter "+sourceBox.highlighter, sourceBox);
+
+ if (sourceBox.highlighter)
+ {
+ // If the sticky flag is false, the highlight is removed, eg the search
+ // and sourcelink highlights.
+ // else the highlight must be removed by the caller, eg breakpoint
+ // hit executable line.
+ var sticky = sourceBox.highlighter(sourceBox);
+ if (FBTrace.DBG_COMPILATION_UNITS)
+ FBTrace.sysout("asyncHighlighting highlighter sticky:"+sticky,
+ sourceBox.highlighter);
+
+ if (!sticky)
+ delete sourceBox.highlighter;
+ // else we delete these when we get highlighting call with invalid line (eg -1)
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("sourcebox highlighter FAILS "+exc, exc);
+ }
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+return Firebug.SourceBoxPanel;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/js/sourceCache.js b/content/firebug/js/sourceCache.js
index 926df09..a2c983b 100644
--- a/content/firebug/js/sourceCache.js
+++ b/content/firebug/js/sourceCache.js
@@ -1,430 +1,430 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/xpcom",
- "firebug/lib/url",
- "firebug/lib/http",
- "firebug/lib/string"
-],
-function(Obj, Firebug, Xpcom, Url, Http, Str) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const nsIIOService = Ci.nsIIOService;
-const nsIRequest = Ci.nsIRequest;
-const nsICachingChannel = Ci.nsICachingChannel;
-const nsIScriptableInputStream = Ci.nsIScriptableInputStream;
-const nsIUploadChannel = Ci.nsIUploadChannel;
-const nsIHttpChannel = Ci.nsIHttpChannel;
-
-const IOService = Cc["@mozilla.org/network/io-service;1"];
-const ioService = IOService.getService(nsIIOService);
-const ScriptableInputStream = Cc["@mozilla.org/scriptableinputstream;1"];
-const chromeReg = Xpcom.CCSV("@mozilla.org/chrome/chrome-registry;1", "nsIToolkitChromeRegistry");
-
-const LOAD_FROM_CACHE = nsIRequest.LOAD_FROM_CACHE;
-const LOAD_BYPASS_LOCAL_CACHE_IF_BUSY = nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE_IF_BUSY;
-
-const NS_BINDING_ABORTED = 0x804b0002;
-
-// ********************************************************************************************* //
-
-Firebug.SourceCache = function(context)
-{
- this.context = context;
- this.cache = {};
-};
-
-Firebug.SourceCache.prototype = Obj.extend(new Firebug.Listener(),
-{
- isCached: function(url)
- {
- return (this.cache[url] ? true : false);
- },
-
- loadText: function(url, method, file)
- {
- var lines = this.load(url, method, file);
- return lines ? lines.join("") : null;
- },
-
- load: function(url, method, file)
- {
- if (FBTrace.DBG_CACHE)
- {
- FBTrace.sysout("sourceCache.load: " + url);
-
- if (!this.cache.hasOwnProperty(url) && this.cache[url])
- FBTrace.sysout("sourceCache.load; ERROR - hasOwnProperty returns false, " +
- "but the URL is cached: " + url, this.cache[url]);
- }
-
- // xxxHonza: sometimes hasOwnProperty return false even if the URL is obviously there.
- //if (this.cache.hasOwnProperty(url))
- var response = this.cache[this.removeAnchor(url)];
- if (response)
- return response;
-
- if (FBTrace.DBG_CACHE)
- {
- var urls = [];
- for (var prop in this.cache)
- urls.push(prop);
-
- FBTrace.sysout("sourceCache.load: Not in the Firebug internal cache", urls);
- }
-
- var d = Url.splitDataURL(url); //TODO the RE should not have baseLine
- if (d)
- {
- var src = d.encodedContent;
- var data = decodeURIComponent(src);
- var lines = Str.splitLines(data);
- this.cache[url] = lines;
-
- return lines;
- }
-
- var j = Url.reJavascript.exec(url);
- if (j)
- {
- var src = url.substring(Url.reJavascript.lastIndex);
- var lines = Str.splitLines(src);
- this.cache[url] = lines;
-
- return lines;
- }
-
- var c = Url.reChrome.test(url);
- if (c)
- {
- if (Firebug.filterSystemURLs)
- return ["Filtered chrome url "+url]; // ignore chrome
-
- // If the chrome.manifest has xpcnativewrappers=no, platform munges the url
- var reWrapperMunge = /(\S*)\s*->\s*(\S*)/;
- var m = reWrapperMunge.exec(url);
- if (m)
- {
- url = m[2];
-
- if (FBTrace.DBG_CACHE)
- {
- FBTrace.sysout("sourceCache found munged xpcnativewrapper url " +
- "and set it to " + url + " m " + m + " m[0]:" + m[0] + " [1]" +
- m[1], m);
- }
- }
-
- var chromeURI = Url.makeURI(url);
- if (!chromeURI)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("sourceCache.load failed to convert chrome to local: " + url);
-
- return ["sourceCache failed to make URI from " + url];
- }
-
- var localURI = chromeReg.convertChromeURL(chromeURI);
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("sourceCache.load converting chrome to local: " + url,
- " -> "+localURI.spec);
-
- return this.loadFromLocal(localURI.spec);
- }
-
- c = Url.reFile.test(url);
- if (c)
- {
- return this.loadFromLocal(url);
- }
-
- if (Str.hasPrefix(url, 'resource://'))
- {
- var fileURL = Url.resourceToFile(url);
- return this.loadFromLocal(url);
- }
-
- // Unfortunately, the URL isn't available, so let's try to use FF cache.
- // Note that an additional network request to the server could be made
- // in this method (a double-load).
- return this.loadFromCache(url, method, file);
- },
-
- store: function(url, text)
- {
- var tempURL = this.removeAnchor(url);
-
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("sourceCache for " + this.context.getName() + " store url=" +
- url + ((tempURL != url) ? " -> " + tempURL : ""), text);
-
- var lines = Str.splitLines(text);
- return this.storeSplitLines(tempURL, lines);
- },
-
- removeAnchor: function(url)
- {
- if (FBTrace.DBG_ERRORS && !url)
- FBTrace.sysout("sourceCache.removeAnchor; ERROR url must not be null");
-
- var index = url ? url.indexOf("#") : -1;
- if (index < 0)
- return url;
-
- return url.substr(0, index);
- },
-
- loadFromLocal: function(url)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.loadFromLocal url: " + url);
-
- // if we get this far then we have either a file: or chrome: url converted to file:
- var src = Http.getResource(url);
- if (src)
- {
- var lines = Str.splitLines(src);
-
- // Don't cache locale files to get latest version (issue 1328)
- // Local files can be currently fetched any time.
- //this.cache[url] = lines;
-
- return lines;
- }
- },
-
- loadFromCache: function(url, method, file)
- {
- if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.loadFromCache url:"+url);
-
- var doc = this.context.window.document;
- if (doc)
- var charset = doc.characterSet;
- else
- var charset = "UTF-8";
-
- var channel;
- try
- {
- channel = ioService.newChannel(url, null, null);
- channel.loadFlags |= LOAD_FROM_CACHE | LOAD_BYPASS_LOCAL_CACHE_IF_BUSY;
-
- if (method && (channel instanceof nsIHttpChannel))
- {
- var httpChannel = Xpcom.QI(channel, nsIHttpChannel);
- httpChannel.requestMethod = method;
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("sourceCache for url:" + url + " window=" +
- this.context.window.location.href + " FAILS:", exc);
- return;
- }
-
- if (url == this.context.browser.contentWindow.location.href)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("sourceCache.load content window href");
-
- if (channel instanceof nsIUploadChannel)
- {
- var postData = getPostStream(this.context);
- if (postData)
- {
- var uploadChannel = Xpcom.QI(channel, nsIUploadChannel);
- uploadChannel.setUploadStream(postData, "", -1);
-
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("sourceCache.load uploadChannel set");
- }
- }
-
- if (channel instanceof nsICachingChannel)
- {
- var cacheChannel = Xpcom.QI(channel, nsICachingChannel);
- cacheChannel.cacheKey = getCacheKey(this.context);
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("sourceCache.load cacheChannel key" + cacheChannel.cacheKey);
- }
- }
- else if ((method == "POST" || method == "PUT" || method == "PATCH") && file)
- {
- if (channel instanceof nsIUploadChannel)
- {
- // In case of PUT and POST, don't forget to use the original body.
- var postData = getPostText(file, this.context);
- if (postData)
- {
- var postDataStream = Http.getInputStreamFromString(postData);
- var uploadChannel = Xpcom.QI(channel, nsIUploadChannel);
- uploadChannel.setUploadStream(postDataStream,
- "application/x-www-form-urlencoded", -1);
-
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("sourceCache.load uploadChannel set");
- }
- }
- }
-
- var stream;
- try
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("sourceCache.load url:" + url + " with charset" + charset);
-
- stream = channel.open();
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- {
- var isCache = (channel instanceof nsICachingChannel) ?
- "nsICachingChannel" : "NOT caching channel";
- var isUp = (channel instanceof nsIUploadChannel) ?
- "nsIUploadChannel" : "NOT nsIUploadChannel";
-
- FBTrace.sysout(url + " vs " + this.context.browser.contentWindow.location.href +
- " and " + isCache + " " + isUp);
- FBTrace.sysout("sourceCache.load fails channel.open for url=" + url +
- " cause:", exc);
- FBTrace.sysout("sourceCache.load fails channel=", channel);
- }
-
- return ["sourceCache.load FAILS for url=" + url, exc.toString()];
- }
-
- try
- {
- var data = Http.readFromStream(stream, charset);
- var lines = Str.splitLines(data);
- this.cache[url] = lines;
- return lines;
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("sourceCache.load FAILS, url="+url, exc);
- return ["sourceCache.load FAILS for url="+url, exc.toString()];
- }
- finally
- {
- stream.close();
- }
- },
-
- storeSplitLines: function(url, lines)
- {
- if (FBTrace.DBG_CACHE)
- {
- FBTrace.sysout("sourceCache for window=" + this.context.getName() +
- " store url=" + url);
- }
-
- return this.cache[url] = lines;
- },
-
- invalidate: function(url)
- {
- url = this.removeAnchor(url);
-
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("sourceCache.invalidate; " + url);
-
- delete this.cache[url];
- },
-
- getLine: function(url, lineNo)
- {
- var lines;
-
- try
- {
- lines = this.load(url);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("sourceCache.getLine; EXCEPTION " + e, e);
- }
-
- if (!lines)
- return "(no source for " + url + ")";
-
- if (lineNo <= lines.length)
- {
- return lines[lineNo-1];
- }
- else
- {
- return (lines.length == 1) ?
- lines[0] : "(" + lineNo + " out of range " + lines.length + ")";
- }
- }
-});
-
-// xxxHonza getPostText and Http.readPostTextFromRequest are copied from
-// net.js. These functions should be removed when this cache is
-// refactored due to the double-load problem.
-function getPostText(file, context)
-{
- if (!file.postText)
- file.postText = Http.readPostTextFromPage(file.href, context);
-
- if (!file.postText)
- file.postText = Http.readPostTextFromRequest(file.request, context);
-
- return file.postText;
-}
-
-// ********************************************************************************************* //
-
-function getPostStream(context)
-{
- try
- {
- var webNav = context.browser.webNavigation;
- var descriptor = Xpcom.QI(webNav, Ci.nsIWebPageDescriptor).currentDescriptor;
- var entry = Xpcom.QI(descriptor, Ci.nsISHEntry);
-
- if (entry.postData)
- {
- // Seek to the beginning, or it will probably start reading at the end
- var postStream = Xpcom.QI(entry.postData, Ci.nsISeekableStream);
- postStream.seek(0, 0);
- return postStream;
- }
- }
- catch (exc)
- {
- }
-}
-
-function getCacheKey(context)
-{
- try
- {
- var webNav = context.browser.webNavigation;
- var descriptor = Xpcom.QI(webNav, Ci.nsIWebPageDescriptor).currentDescriptor;
- var entry = Xpcom.QI(descriptor, Ci.nsISHEntry);
- return entry.cacheKey;
- }
- catch (exc)
- {
- }
-}
-
-// ********************************************************************************************* //
-// Registration
-
-return Firebug.SourceCache;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/xpcom",
+ "firebug/lib/url",
+ "firebug/lib/http",
+ "firebug/lib/string"
+],
+function(Obj, Firebug, Xpcom, Url, Http, Str) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const nsIIOService = Ci.nsIIOService;
+const nsIRequest = Ci.nsIRequest;
+const nsICachingChannel = Ci.nsICachingChannel;
+const nsIScriptableInputStream = Ci.nsIScriptableInputStream;
+const nsIUploadChannel = Ci.nsIUploadChannel;
+const nsIHttpChannel = Ci.nsIHttpChannel;
+
+const IOService = Cc["@mozilla.org/network/io-service;1"];
+const ioService = IOService.getService(nsIIOService);
+const ScriptableInputStream = Cc["@mozilla.org/scriptableinputstream;1"];
+const chromeReg = Xpcom.CCSV("@mozilla.org/chrome/chrome-registry;1", "nsIToolkitChromeRegistry");
+
+const LOAD_FROM_CACHE = nsIRequest.LOAD_FROM_CACHE;
+const LOAD_BYPASS_LOCAL_CACHE_IF_BUSY = nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE_IF_BUSY;
+
+const NS_BINDING_ABORTED = 0x804b0002;
+
+// ********************************************************************************************* //
+
+Firebug.SourceCache = function(context)
+{
+ this.context = context;
+ this.cache = {};
+};
+
+Firebug.SourceCache.prototype = Obj.extend(new Firebug.Listener(),
+{
+ isCached: function(url)
+ {
+ return (this.cache[url] ? true : false);
+ },
+
+ loadText: function(url, method, file)
+ {
+ var lines = this.load(url, method, file);
+ return lines ? lines.join("") : null;
+ },
+
+ load: function(url, method, file)
+ {
+ if (FBTrace.DBG_CACHE)
+ {
+ FBTrace.sysout("sourceCache.load: " + url);
+
+ if (!this.cache.hasOwnProperty(url) && this.cache[url])
+ FBTrace.sysout("sourceCache.load; ERROR - hasOwnProperty returns false, " +
+ "but the URL is cached: " + url, this.cache[url]);
+ }
+
+ // xxxHonza: sometimes hasOwnProperty return false even if the URL is obviously there.
+ //if (this.cache.hasOwnProperty(url))
+ var response = this.cache[this.removeAnchor(url)];
+ if (response)
+ return response;
+
+ if (FBTrace.DBG_CACHE)
+ {
+ var urls = [];
+ for (var prop in this.cache)
+ urls.push(prop);
+
+ FBTrace.sysout("sourceCache.load: Not in the Firebug internal cache", urls);
+ }
+
+ var d = Url.splitDataURL(url); //TODO the RE should not have baseLine
+ if (d)
+ {
+ var src = d.encodedContent;
+ var data = decodeURIComponent(src);
+ var lines = Str.splitLines(data);
+ this.cache[url] = lines;
+
+ return lines;
+ }
+
+ var j = Url.reJavascript.exec(url);
+ if (j)
+ {
+ var src = url.substring(Url.reJavascript.lastIndex);
+ var lines = Str.splitLines(src);
+ this.cache[url] = lines;
+
+ return lines;
+ }
+
+ var c = Url.reChrome.test(url);
+ if (c)
+ {
+ if (Firebug.filterSystemURLs)
+ return ["Filtered chrome url "+url]; // ignore chrome
+
+ // If the chrome.manifest has xpcnativewrappers=no, platform munges the url
+ var reWrapperMunge = /(\S*)\s*->\s*(\S*)/;
+ var m = reWrapperMunge.exec(url);
+ if (m)
+ {
+ url = m[2];
+
+ if (FBTrace.DBG_CACHE)
+ {
+ FBTrace.sysout("sourceCache found munged xpcnativewrapper url " +
+ "and set it to " + url + " m " + m + " m[0]:" + m[0] + " [1]" +
+ m[1], m);
+ }
+ }
+
+ var chromeURI = Url.makeURI(url);
+ if (!chromeURI)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.load failed to convert chrome to local: " + url);
+
+ return ["sourceCache failed to make URI from " + url];
+ }
+
+ var localURI = chromeReg.convertChromeURL(chromeURI);
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.load converting chrome to local: " + url,
+ " -> "+localURI.spec);
+
+ return this.loadFromLocal(localURI.spec);
+ }
+
+ c = Url.reFile.test(url);
+ if (c)
+ {
+ return this.loadFromLocal(url);
+ }
+
+ if (Str.hasPrefix(url, 'resource://'))
+ {
+ var fileURL = Url.resourceToFile(url);
+ return this.loadFromLocal(url);
+ }
+
+ // Unfortunately, the URL isn't available, so let's try to use FF cache.
+ // Note that an additional network request to the server could be made
+ // in this method (a double-load).
+ return this.loadFromCache(url, method, file);
+ },
+
+ store: function(url, text)
+ {
+ var tempURL = this.removeAnchor(url);
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache for " + this.context.getName() + " store url=" +
+ url + ((tempURL != url) ? " -> " + tempURL : ""), text);
+
+ var lines = Str.splitLines(text);
+ return this.storeSplitLines(tempURL, lines);
+ },
+
+ removeAnchor: function(url)
+ {
+ if (FBTrace.DBG_ERRORS && !url)
+ FBTrace.sysout("sourceCache.removeAnchor; ERROR url must not be null");
+
+ var index = url ? url.indexOf("#") : -1;
+ if (index < 0)
+ return url;
+
+ return url.substr(0, index);
+ },
+
+ loadFromLocal: function(url)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.loadFromLocal url: " + url);
+
+ // if we get this far then we have either a file: or chrome: url converted to file:
+ var src = Http.getResource(url);
+ if (src)
+ {
+ var lines = Str.splitLines(src);
+
+ // Don't cache locale files to get latest version (issue 1328)
+ // Local files can be currently fetched any time.
+ //this.cache[url] = lines;
+
+ return lines;
+ }
+ },
+
+ loadFromCache: function(url, method, file)
+ {
+ if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.loadFromCache url:"+url);
+
+ var doc = this.context.window.document;
+ if (doc)
+ var charset = doc.characterSet;
+ else
+ var charset = "UTF-8";
+
+ var channel;
+ try
+ {
+ channel = ioService.newChannel(url, null, null);
+ channel.loadFlags |= LOAD_FROM_CACHE | LOAD_BYPASS_LOCAL_CACHE_IF_BUSY;
+
+ if (method && (channel instanceof nsIHttpChannel))
+ {
+ var httpChannel = Xpcom.QI(channel, nsIHttpChannel);
+ httpChannel.requestMethod = method;
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache for url:" + url + " window=" +
+ this.context.window.location.href + " FAILS:", exc);
+ return;
+ }
+
+ if (url == this.context.browser.contentWindow.location.href)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.load content window href");
+
+ if (channel instanceof nsIUploadChannel)
+ {
+ var postData = getPostStream(this.context);
+ if (postData)
+ {
+ var uploadChannel = Xpcom.QI(channel, nsIUploadChannel);
+ uploadChannel.setUploadStream(postData, "", -1);
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.load uploadChannel set");
+ }
+ }
+
+ if (channel instanceof nsICachingChannel)
+ {
+ var cacheChannel = Xpcom.QI(channel, nsICachingChannel);
+ cacheChannel.cacheKey = getCacheKey(this.context);
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.load cacheChannel key" + cacheChannel.cacheKey);
+ }
+ }
+ else if ((method == "POST" || method == "PUT" || method == "PATCH") && file)
+ {
+ if (channel instanceof nsIUploadChannel)
+ {
+ // In case of PUT and POST, don't forget to use the original body.
+ var postData = getPostText(file, this.context);
+ if (postData)
+ {
+ var postDataStream = Http.getInputStreamFromString(postData);
+ var uploadChannel = Xpcom.QI(channel, nsIUploadChannel);
+ uploadChannel.setUploadStream(postDataStream,
+ "application/x-www-form-urlencoded", -1);
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.load uploadChannel set");
+ }
+ }
+ }
+
+ var stream;
+ try
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.load url:" + url + " with charset" + charset);
+
+ stream = channel.open();
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ var isCache = (channel instanceof nsICachingChannel) ?
+ "nsICachingChannel" : "NOT caching channel";
+ var isUp = (channel instanceof nsIUploadChannel) ?
+ "nsIUploadChannel" : "NOT nsIUploadChannel";
+
+ FBTrace.sysout(url + " vs " + this.context.browser.contentWindow.location.href +
+ " and " + isCache + " " + isUp);
+ FBTrace.sysout("sourceCache.load fails channel.open for url=" + url +
+ " cause:", exc);
+ FBTrace.sysout("sourceCache.load fails channel=", channel);
+ }
+
+ return ["sourceCache.load FAILS for url=" + url, exc.toString()];
+ }
+
+ try
+ {
+ var data = Http.readFromStream(stream, charset);
+ var lines = Str.splitLines(data);
+ this.cache[url] = lines;
+ return lines;
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("sourceCache.load FAILS, url="+url, exc);
+ return ["sourceCache.load FAILS for url="+url, exc.toString()];
+ }
+ finally
+ {
+ stream.close();
+ }
+ },
+
+ storeSplitLines: function(url, lines)
+ {
+ if (FBTrace.DBG_CACHE)
+ {
+ FBTrace.sysout("sourceCache for window=" + this.context.getName() +
+ " store url=" + url);
+ }
+
+ return this.cache[url] = lines;
+ },
+
+ invalidate: function(url)
+ {
+ url = this.removeAnchor(url);
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.invalidate; " + url);
+
+ delete this.cache[url];
+ },
+
+ getLine: function(url, lineNo)
+ {
+ var lines;
+
+ try
+ {
+ lines = this.load(url);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("sourceCache.getLine; EXCEPTION " + e, e);
+ }
+
+ if (!lines)
+ return "(no source for " + url + ")";
+
+ if (lineNo <= lines.length)
+ {
+ return lines[lineNo-1];
+ }
+ else
+ {
+ return (lines.length == 1) ?
+ lines[0] : "(" + lineNo + " out of range " + lines.length + ")";
+ }
+ }
+});
+
+// xxxHonza getPostText and Http.readPostTextFromRequest are copied from
+// net.js. These functions should be removed when this cache is
+// refactored due to the double-load problem.
+function getPostText(file, context)
+{
+ if (!file.postText)
+ file.postText = Http.readPostTextFromPage(file.href, context);
+
+ if (!file.postText)
+ file.postText = Http.readPostTextFromRequest(file.request, context);
+
+ return file.postText;
+}
+
+// ********************************************************************************************* //
+
+function getPostStream(context)
+{
+ try
+ {
+ var webNav = context.browser.webNavigation;
+ var descriptor = Xpcom.QI(webNav, Ci.nsIWebPageDescriptor).currentDescriptor;
+ var entry = Xpcom.QI(descriptor, Ci.nsISHEntry);
+
+ if (entry.postData)
+ {
+ // Seek to the beginning, or it will probably start reading at the end
+ var postStream = Xpcom.QI(entry.postData, Ci.nsISeekableStream);
+ postStream.seek(0, 0);
+ return postStream;
+ }
+ }
+ catch (exc)
+ {
+ }
+}
+
+function getCacheKey(context)
+{
+ try
+ {
+ var webNav = context.browser.webNavigation;
+ var descriptor = Xpcom.QI(webNav, Ci.nsIWebPageDescriptor).currentDescriptor;
+ var entry = Xpcom.QI(descriptor, Ci.nsISHEntry);
+ return entry.cacheKey;
+ }
+ catch (exc)
+ {
+ }
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return Firebug.SourceCache;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/js/sourceFile.js b/content/firebug/js/sourceFile.js
index 48c1b9b..5cb05d8 100644
--- a/content/firebug/js/sourceFile.js
+++ b/content/firebug/js/sourceFile.js
@@ -1,1070 +1,1070 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/url",
- "firebug/js/sourceLink",
- "firebug/js/stackFrame",
-],
-function(Obj, Firebug, Url, SourceLink, StackFrame) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const PCMAP_SOURCETEXT = Ci.jsdIScript.PCMAP_SOURCETEXT;
-const PCMAP_PRETTYPRINT = Ci.jsdIScript.PCMAP_PRETTYPRINT;
-
-var jsd = Cc["@mozilla.org/js/jsd/debugger-service;1"].getService(Ci.jsdIDebuggerService);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-/**
- * SourceFile one for every compilation unit.
- * Unique URL for each. (href)
- * Unique outerScript, the statements outside of any function definition
- * sourceCache keyed by href has source for this compilation unit
- * Stored by href in context.
- * Contains array of jsdIScript for functions (scripts) defined in this unit
- * May contain line table (for sources viewed)
- */
-Firebug.SourceFile = function (compilation_unit_type)
-{
- this.compilation_unit_type = compilation_unit_type;
-};
-
-Firebug.SourceFile.prototype =
-{
- getBaseLineOffset: function()
- {
- return 0;
- },
-
- getURL: function()
- {
- return this.href;
- },
-
- toString: function()
- {
- var str = (this.compilation_unit_type?this.compilation_unit_type + " " : "") +
- this.href + " script.tags( ";
-
- if (this.outerScript)
- str += (this.outerScript.isValid?this.outerScript.tag:"X") +"| ";
-
- if (this.innerScripts)
- {
- var numberInvalid = 0;
- for (var p in this.innerScripts)
- {
- var script = this.innerScripts[p];
- if (script.isValid)
- str += p+" ";
- else
- numberInvalid++;
- }
- }
-
- str += ")" + (numberInvalid ? "(" + numberInvalid + " invalid)" : "");
- return str;
- },
-
- forEachScript: function(callback)
- {
- if (this.outerScript)
- callback(this.outerScript);
-
- if (this.innerScripts)
- {
- for (var p in this.innerScripts)
- {
- var script = this.innerScripts[p];
- var rc = callback(script);
- if (rc)
- return rc;
- }
- }
- },
-
- getLineRanges: function()
- {
- var str = "";
- this.forEachScript(function appendARange(script)
- {
- var endLineNumber = script.baseLineNumber + script.lineExtent;
- str += " "+script.baseLineNumber +"-("+script.tag+")-"+endLineNumber;
- });
-
- return str;
- },
-
- getSourceLength: function()
- {
- return this.sourceLength;
- },
-
- getLine: function(context, lineNo)
- {
- return context.sourceCache.getLine(this.href, lineNo);
- },
-
- addToLineTable: function(script)
- {
- if (!script || !script.isValid)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("addToLineTable got invalid script " +
- (script ? script.tag : "null"));
- return;
- }
-
- // For outer scripts, a better algorithm would loop over PC, use pcToLine to mark the lines.
- // This assumes there are fewer PCs in an outer script than lines, probably true for large
- // systems.
- // And now addToLineTable is only used for outerScripts (eval and top-level).
- // But since we can't know the range of PC values we cannot use that approach.
-
- if (!this.outerScriptLineMap)
- this.outerScriptLineMap = [];
-
- var lineCount = script.lineExtent + 1;
- var offset = this.getBaseLineOffset();
-
- if (FBTrace.DBG_LINETABLE)
- {
- FBTrace.sysout("lib.SourceFile.addToLineTable script.tag:" + script.tag +
- " lineExtent=" + lineCount + " baseLineNumber=" + script.baseLineNumber +
- " offset=" + offset + " for " + this.compilation_unit_type);
- var startTime = new Date().getTime();
- }
-
- // isLineExecutable requires about 1ms per line, so it can only be called for toy programs
- if (lineCount > 100)
- lineCount = 100;
-
- for (var i = 0; i <= lineCount; i++)
- {
- // the max is (i + script.baseLineNumber + script.lineExtent)
- var scriptLineNo = i + script.baseLineNumber;
- var mapLineNo = scriptLineNo - offset;
- try
- {
- if (script.isLineExecutable(scriptLineNo, this.pcmap_type))
- this.outerScriptLineMap.push(mapLineNo);
- }
- catch (e)
- {
- // I guess not...
- }
-
- if (FBTrace.DBG_LINETABLE)
- {
- var pcFromLine = script.lineToPc(scriptLineNo, this.pcmap_type);
- var lineFromPC = script.pcToLine(pcFromLine, this.pcmap_type);
-
- if (this.outerScriptLineMap.indexOf(mapLineNo) != -1)
- {
- FBTrace.sysout("lib.SourceFile.addToLineTable ["+mapLineNo+"]="+script.tag+
- " for scriptLineNo="+scriptLineNo+" vs "+lineFromPC+
- "=lineFromPC; lineToPc="+pcFromLine+" with map="+
- (this.pcmap_type==PCMAP_PRETTYPRINT?"PP":"SOURCE"));
- }
- else
- {
- FBTrace.sysout("lib.SourceFile.addToLineTable not executable scriptLineNo="+
- scriptLineNo+" vs "+lineFromPC+"=lineFromPC; lineToPc="+pcFromLine);
- }
- }
- }
-
- if (FBTrace.DBG_LINETABLE)
- {
- var endTime = new Date().getTime();
- var delta = endTime - startTime;
- if (delta > 0)
- {
- FBTrace.sysout("SourceFile.addToLineTable processed "+lineCount+" lines in "+
- delta+" millisecs "+Math.round(lineCount/delta)+" lines per millisecond");
- }
-
- FBTrace.sysout("SourceFile.addToLineTable: "+this.toString());
- }
- },
-
- addToLineTableByPCLoop: function(script)
- {
- // This code is not called; it crashes FF3pre
- // https://bugzilla.mozilla.org/show_bug.cgi?id=430205
- if (!this.outerScriptLineMap)
- this.outerScriptLineMap = {};
-
- var lineCount = script.lineExtent;
- var offset = this.getBaseLineOffset();
- if (FBTrace.DBG_LINETABLE)
- {
- FBTrace.sysout("lib.SourceFile.addToLineTableByPCLoop script.tag:"+script.tag+
- " lineCount="+lineCount+" offset="+offset+" for "+this.compilation_unit_type);
- var startTime = new Date().getTime();
- }
-
- for (var i = 0; i <= 10*lineCount; i++)
- {
- var lineFromPC = script.pcToLine(i, this.pcmap_type);
- //FBTrace.sysout("lib.SourceFile.addToLineTableByPCLoop pc="+i+" line: "+lineFromPC+"\n");
- this.outerScriptLineMap[lineFromPC] = script;
- if (lineFromPC >= lineCount)
- break;
- }
-
- if (FBTrace.DBG_LINETABLE)
- {
- FBTrace.sysout("SourceFile.addToLineTableByPCLoop: "+this.toString()+"\n");
- var endTime = new Date().getTime();
- var delta = endTime - startTime;
-
- if (delta > 0)
- {
- FBTrace.sysout("SourceFileaddToLineTableByPCLoop processed "+lineCount+
- " lines in "+delta+" millisecs "+Math.round(lineCount/delta)+
- " lines per millisecond\n");
- }
- }
- },
-
- hasScriptAtLineNumber: function(lineNo, mustBeExecutableLine)
- {
- var offset = this.getBaseLineOffset();
-
- if (!this.innerScripts)
- return; // eg URLOnly
-
- // lineNo is user-viewed number, targetLineNo is jsd number
- var targetLineNo = lineNo + offset;
-
- var scripts = [];
- for (var p in this.innerScripts)
- {
- var script = this.innerScripts[p];
- if (mustBeExecutableLine && !script.isValid)
- continue;
-
- this.addScriptAtLineNumber(scripts, script, targetLineNo,
- mustBeExecutableLine, offset);
-
- if (scripts.length)
- return true;
- }
-
- if (this.outerScript && !(mustBeExecutableLine && !this.outerScript.isValid))
- {
- this.addScriptAtLineNumber(scripts, this.outerScript, targetLineNo,
- mustBeExecutableLine, offset);
- }
-
- return (scripts.length > 0);
- },
-
- getScriptsAtLineNumber: function(lineNo, mustBeExecutableLine)
- {
- var offset = this.getBaseLineOffset();
-
- if (!this.innerScripts)
- return; // eg URLOnly
-
- // lineNo is user-viewed number, targetLineNo is jsd number
- var targetLineNo = lineNo + offset;
-
- var scripts = [];
- for (var p in this.innerScripts)
- {
- var script = this.innerScripts[p];
- if (mustBeExecutableLine && !script.isValid)
- continue;
-
- this.addScriptAtLineNumber(scripts, script, targetLineNo,
- mustBeExecutableLine, offset);
- }
-
- if (this.outerScript && !(mustBeExecutableLine && !this.outerScript.isValid))
- {
- this.addScriptAtLineNumber(scripts, this.outerScript, targetLineNo,
- mustBeExecutableLine, offset);
- }
-
- if (FBTrace.DBG_LINETABLE)
- {
- if (scripts.length < 1)
- {
- FBTrace.sysout("lib.getScriptsAtLineNumber no targetScript at "+lineNo,
- " for sourceFile:"+this.toString());
- return false;
- }
- else
- {
- FBTrace.sysout("getScriptsAtLineNumber offset "+offset+" for sourcefile: "+
- this.toString());
- }
- }
-
- return (scripts.length > 0) ? scripts : false;
- },
-
- addScriptAtLineNumber: function(scripts, script, targetLineNo, mustBeExecutableLine, offset)
- {
- // script.isValid will be true.
- if (FBTrace.DBG_LINETABLE)
- FBTrace.sysout("addScriptAtLineNumber trying "+script.tag+", is "+
- script.baseLineNumber+" <= "+targetLineNo +" <= "+ (script.baseLineNumber +
- script.lineExtent)+"? using offset = "+offset+"\n");
-
- if (targetLineNo >= script.baseLineNumber)
- {
- if ((script.baseLineNumber + script.lineExtent) >= targetLineNo)
- {
- if (mustBeExecutableLine)
- {
- try
- {
- if (!script.isLineExecutable(targetLineNo, this.pcmap_type) )
- {
- if (FBTrace.DBG_LINETABLE)
- FBTrace.sysout("getScriptsAtLineNumber tried "+script.tag+
- ", not executable at targetLineNo:"+targetLineNo+" pcmap:"+
- this.pcmap_type);
- return;
- }
- }
- catch (e)
- {
- // Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE)
- // [jsdIScript.isLineExecutable]
- return;
- }
- }
-
- scripts.push(script);
-
- if (FBTrace.DBG_LINETABLE)
- {
- var checkExecutable = "";
- if (mustBeExecutableLine)
- checkExecutable = " isLineExecutable: "+
- script.isLineExecutable(targetLineNo, this.pcmap_type)+"@pc:"+
- script.lineToPc(targetLineNo, this.pcmap_type);
-
- FBTrace.sysout("getScriptsAtLineNumber found "+script.tag+", isValid: "+
- script.isValid+" targetLineNo:"+targetLineNo+checkExecutable);
- }
- }
- }
- },
-
- scriptsIfLineCouldBeExecutable: function(lineNo) // script may not be valid
- {
- var scripts = this.getScriptsAtLineNumber(lineNo, true);
-
- if (FBTrace.DBG_LINETABLE && !scripts)
- FBTrace.sysout("lib.scriptsIfLineCouldBeExecutable this.outerScriptLineMap",
- this.outerScriptLineMap);
-
- if (!scripts && this.outerScriptLineMap && (this.outerScriptLineMap.indexOf(lineNo) != -1))
- return [this.outerScript];
-
- return scripts;
- },
-
- isExecutableLine: function(lineNo) // script may not be valid
- {
- if (this.hasScriptAtLineNumber(lineNo, true))
- return true;
-
- if (this.outerScriptLineMap && (this.outerScriptLineMap.indexOf(lineNo) != -1))
- return true;
-
- return false;
- },
-
- hasScript: function(script)
- {
- if (this.outerScript && (this.outerScript.tag == script.tag) )
- return true;
-
- // XXXjjb Don't use indexOf or similar tests that rely on ===, since we are really
- // working with wrappers around jsdIScript, not script themselves. I guess.
-
- return (this.innerScripts && this.innerScripts.hasOwnProperty(script.tag));
- },
-
- // these objects map JSD's values to correct values
- getScriptAnalyzer: function(script)
- {
- if (script && this.outerScript && (script.tag == this.outerScript.tag) )
- return this.getOuterScriptAnalyzer();
-
- return new Firebug.SourceFile.NestedScriptAnalyzer(this);
- },
-
- // return.path: group/category label, return.name: item label
- getObjectDescription: function()
- {
- return Url.splitURLBase(this.href);
- },
-
- isEval: function()
- {
- return (this.compilation_unit_type == "eval-level") ||
- (this.compilation_unit_type == "newFunction");
- },
-
- isEvent: function()
- {
- return (this.compilation_unit_type == "event");
- },
-
- loadScriptLines: function(context) // array of lines
- {
- if (this.source)
- return this.source;
- else if (context.sourceCache)
- return context.sourceCache.load(this.href);
- else if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("sourceFile.loadScriptLines FAILS no sourceCache "+
- context.getName(), context);
- },
-
- getOuterScriptAnalyzer: function()
- {
- FBTrace.sysout("getOuterScriptAnalyzer not overridden for "+sourceFile, this);
- }
-};
-
-Firebug.SourceFile.summarizeSourceLineArray = function(sourceLines, size)
-{
- var buf = "";
- for (var i = 0; i < sourceLines.length; i++)
- {
- var aLine = sourceLines[i].substr(0,240); // avoid huge lines
- buf += aLine.replace(/\s/, " ", "g");
- if (buf.length > size || aLine.length > 240)
- break;
- }
- return buf.substr(0, size);
-};
-
-
-Firebug.SourceFile.NestedScriptAnalyzer = function(sourceFile)
-{
- this.sourceFile = sourceFile;
-};
-
-Firebug.SourceFile.NestedScriptAnalyzer.prototype =
-{
- // Adjust JSD line numbers based on origin of script
- getSourceLineFromFrame: function(context, frame)
- {
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("NestedScriptAnalyzer in "+this.sourceFile.compilation_unit_type+
- ": frame.line - this.sourceFile.getBaseLineOffset() "+
- frame.line +" - "+this.sourceFile.getBaseLineOffset());
-
- return frame.line - (this.sourceFile.getBaseLineOffset());
- },
-
- // Interpret frame to give fn(args)
- getFunctionDescription: function(script, context, frame)
- {
- if (frame)
- {
- var name = frame.name;
- var args = StackFrame.getFunctionArgValues(frame);
- }
- else
- {
- var name = script.functionName;
- var args = [];
- }
-
- if (name == "anonymous")
- {
- var name = StackFrame.guessFunctionName(this.sourceFile.href,
- this.getBaseLineNumberByScript(script), context);
- }
-
- return {name: name, args: args};
- },
-
- // link to source for this script.
- getSourceLinkForScript: function (script)
- {
- var line = this.getBaseLineNumberByScript(script);
- return new SourceLink.SourceLink(this.sourceFile.href, line, "js");
- },
-
- getBaseLineNumberByScript: function(script)
- {
- // Do not subtract 1 (see issue 6566)
- return script.baseLineNumber - (this.sourceFile.getBaseLineOffset()/* - 1*/);
- }
-};
-
-Firebug.SourceFile.addScriptsToSourceFile = function(sourceFile, outerScript, innerScripts)
-{
- // Attach the innerScripts for use later
- if (!sourceFile.innerScripts)
- sourceFile.innerScripts = {};
-
- var total = 0;
- while (innerScripts.hasMoreElements())
- {
- var script = innerScripts.getNext();
- if (!script || ((script instanceof Ci.jsdIScript) && !script.tag))
- {
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("addScriptsToSourceFile innerScripts.getNext FAILS "+
- sourceFile, script);
- continue;
- }
-
- sourceFile.innerScripts[script.tag] = script;
-
- if (FBTrace.DBG_SOURCEFILES)
- total++;
- }
-
- if (FBTrace.DBG_SOURCEFILES)
- {
- FBTrace.sysout("addScriptsToSourceFile "+ total +" scripts, sourcefile="+
- sourceFile.toString(), sourceFile);
- }
-};
-
-// ********************************************************************************************* //
-
-Firebug.EvalLevelSourceFile = function(url, script, eval_expr, source, mapType,
- innerScriptEnumerator)
-{
- this.href = url.href;
- this.hrefKind = url.kind;
- this.outerScript = script;
- this.containingURL = script.fileName;
- this.evalExpression = eval_expr;
- this.sourceLength = source.length;
- this.source = source;
- this.pcmap_type = mapType;
- Firebug.SourceFile.addScriptsToSourceFile(this, script, innerScriptEnumerator);
-};
-
-Firebug.EvalLevelSourceFile.prototype =
- Obj.descend(new Firebug.SourceFile("eval-level"), // shared prototype
-{
- getLine: function(context, lineNo)
- {
- return this.source[lineNo - 1];
- },
-
- getBaseLineOffset: function()
- {
- // baseLineNumber always valid even after jsdIscript isValid false
- return this.outerScript.baseLineNumber - 1;
- },
-
- getObjectDescription: function()
- {
- if (this.hrefKind == "source" || this.hrefKind == "data")
- return Url.splitURLBase(this.href);
-
- if (!this.summary)
- {
- if (this.evalExpression)
- this.summary = Firebug.SourceFile.summarizeSourceLineArray(
- this.evalExpression.substr(0, 240), 120);
-
- if (!this.summary)
- this.summary = "";
-
- if (this.summary.length < 120)
- this.summary = "eval("+this.summary + "...)=" +
- Firebug.SourceFile.summarizeSourceLineArray(this.source,
- 120 - this.summary.length);
- }
-
- var containingFileDescription = Url.splitURLBase(this.containingURL);
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("EvalLevelSourceFile this.evalExpression.substr(0, 240):"+
- (this.evalExpression?this.evalExpression.substr(0, 240):"null")+" summary",
- this.summary);
-
- return {
- path: containingFileDescription.path,
- name: containingFileDescription.name+"/eval: "+this.summary
- };
- },
-
- getOuterScriptAnalyzer: function()
- {
- return new Firebug.EvalLevelSourceFile.OuterScriptAnalyzer(this);
- },
-});
-
-Firebug.EvalLevelSourceFile.OuterScriptAnalyzer = function(sourceFile)
-{
- this.sourceFile = sourceFile;
-};
-
-Firebug.EvalLevelSourceFile.OuterScriptAnalyzer.prototype =
-{
- // Adjust JSD line numbers based on origin of script
- getSourceLineFromFrame: function(context, frame)
- {
- return frame.line - this.sourceFile.getBaseLineOffset();
- },
-
- // Interpret frame to give fn(args)
- getFunctionDescription: function(script, context, frame)
- {
- return {name: "eval", args: [this.evalExpression] };
- },
-
- getSourceLinkForScript: function (script)
- {
- return new SourceLink.SourceLink(this.sourceFile.href, 1, "js");
- }
-};
-
-// ********************************************************************************************* //
-
-Firebug.EventSourceFile = function(url, script, title, source, innerScriptEnumerator)
-{
- this.href = url;
- this.outerScript = script;
- this.containingURL = script.fileName;
- this.title = title;
- this.source = source; // points to the sourceCache lines
- this.sourceLength = source.length;
- this.pcmap_type = PCMAP_PRETTYPRINT;
-
- Firebug.SourceFile.addScriptsToSourceFile(this, script, innerScriptEnumerator);
-};
-
-Firebug.EventSourceFile.prototype = Obj.descend(new Firebug.SourceFile("event"),
-{
- getLine: function(context, lineNo)
- {
- return this.source[lineNo - 1];
- },
-
- getBaseLineOffset: function()
- {
- return 1;
- },
-
- getObjectDescription: function()
- {
- if (!this.summary)
- this.summary = Firebug.SourceFile.summarizeSourceLineArray(this.source, 120);
-
- var containingFileDescription = Url.splitURLBase(this.containingURL);
-
- return {
- path: containingFileDescription.path,
- name: containingFileDescription.name+"/event: "+this.summary
- };
- },
-
- getOuterScriptAnalyzer: function()
- {
- return new Firebug.EventSourceFile.OuterScriptAnalyzer(this);
- },
-});
-
-Firebug.EventSourceFile.OuterScriptAnalyzer = function(sourceFile)
-{
- this.sourceFile = sourceFile;
-};
-
-Firebug.EventSourceFile.OuterScriptAnalyzer.prototype =
-{
- // Adjust JSD line numbers based on origin of script
- getSourceLineFromFrame: function(context, frame)
- {
- var script = frame.script;
- var line = script.pcToLine(frame.pc, PCMAP_PRETTYPRINT);
- return line - 1;
- },
-
- // Interpret frame to give fn(args)
- getFunctionDescription: function(script, context, frame)
- {
- var name = script.functionName;
- if (!name)
- name = "jsdbug_NoScriptFunctionName";
-
- if (frame)
- {
- var args = StackFrame.getFunctionArgValues(frame);
- }
- else
- {
- var args = [];
- }
- return {name: name, args: args};
- },
-
- getSourceLinkForScript: function (script)
- {
- return new SourceLink.SourceLink(this.sourceFile.href, 1, "js");
- }
-};
-
-// ********************************************************************************************* //
-
-Firebug.SourceFile.CommonBase =
-{
- getSourceLength: function()
- {
- if (!this.sourceLength)
- this.sourceLength = this.context.sourceCache.load(this.href).length;
- return this.sourceLength;
- },
-
- getOuterScriptAnalyzer: function()
- {
- return Firebug.TopLevelSourceFile.OuterScriptAnalyzer;
- }
-};
-
-// ********************************************************************************************* //
-
-Firebug.TopLevelSourceFile = function(url, outerScript, sourceLength, innerScriptEnumerator)
-{
- this.href = url;
- this.outerScript = outerScript; // Beware may not be valid after we return!!
- this.sourceLength = sourceLength;
- this.pcmap_type = PCMAP_SOURCETEXT;
-
- Firebug.SourceFile.addScriptsToSourceFile(this, outerScript, innerScriptEnumerator);
-};
-
-Firebug.TopLevelSourceFile.prototype = Obj.descend(new Firebug.SourceFile("top-level"),
- Firebug.SourceFile.CommonBase);
-
-Firebug.TopLevelSourceFile.OuterScriptAnalyzer =
-{
- // Adjust JSD line numbers based on origin of script
- getSourceLineFromFrame: function(context, frame)
- {
- return frame.line;
- },
-
- // Interpret frame to give fn(args)
- getFunctionDescription: function(script, context, frame)
- {
- // this is more useful that just "top_level"
- var file_name = Url.getFileName(Url.normalizeURL(script.fileName));
- file_name = file_name ? file_name: "__top_level__";
- return {name: file_name, args: []};
- },
-
- getSourceLinkForScript: function (script)
- {
- return SourceLink.SourceLink(Url.normalizeURL(script.fileName),
- script.baseLineNumber, "js");
- }
-};
-
-// ********************************************************************************************* //
-
-// we don't have the outer script and we delay source load.
-Firebug.EnumeratedSourceFile = function(url)
-{
- // may not be outerScript file name, eg this could be an enumerated eval
- this.href = new String(url);
- this.innerScripts = {};
- this.pcmap_type = PCMAP_SOURCETEXT;
-};
-
-Firebug.EnumeratedSourceFile.prototype = Obj.descend(
- new Firebug.SourceFile("enumerated"),
- Firebug.SourceFile.CommonBase);
-
-// ********************************************************************************************* //
-
-Firebug.NoScriptSourceFile = function(context, url) // Somehow we got the Url, but not the script
-{
- this.href = url; // we know this much
- this.innerScripts = {};
-};
-
-Firebug.NoScriptSourceFile.prototype = Obj.descend(
- new Firebug.SourceFile("URLOnly"),
- Firebug.SourceFile.CommonBase);
-
-// ********************************************************************************************* //
-// javascript in a .xul or .xml file, no outerScript
-
-Firebug.XULSourceFile = function(url, outerScript, innerScriptEnumerator)
-{
- this.href = url;
- this.pcmap_type = PCMAP_SOURCETEXT;
- this.outerScript = outerScript; // Beware may not be valid after we return!!
-
- Firebug.SourceFile.addScriptsToSourceFile(this, outerScript, innerScriptEnumerator);
-};
-
-Firebug.XULSourceFile.prototype = Obj.descend(
- new Firebug.SourceFile("xul"),
- Firebug.SourceFile.CommonBase);
-
-// ********************************************************************************************* //
-
-// element.appendChild(scriptTag)
-Firebug.ScriptTagAppendSourceFile = function(url, outerScript, sourceLength, innerScriptEnumerator)
-{
- this.href = url;
- this.outerScript = outerScript; // Beware may not be valid after we return!!
- this.sourceLength = sourceLength;
- this.pcmap_type = PCMAP_SOURCETEXT;
-
- Firebug.SourceFile.addScriptsToSourceFile(this, outerScript, innerScriptEnumerator);
-};
-
-Firebug.ScriptTagAppendSourceFile.prototype = Obj.descend(
- new Firebug.SourceFile("scriptTagAppend"),
- Firebug.SourceFile.CommonBase);
-
-// ********************************************************************************************* //
-
-// we don't have the outer script and we delay source load
-Firebug.ScriptTagSourceFile = function(context, url, scriptTagNumber)
-{
- this.context = context;
- this.href = url; // we know this is not an eval
- this.scriptTagNumber = scriptTagNumber;
- this.innerScripts = {};
- this.pcmap_type = PCMAP_SOURCETEXT;
-};
-
-Firebug.ScriptTagSourceFile.prototype = Obj.descend(
- new Firebug.SourceFile("scriptTag"),
- Firebug.SourceFile.CommonBase);
-
-// ********************************************************************************************* //
-
-Firebug.SourceFile.getSourceFileByScript = function(context, script)
-{
- if (!context.sourceFileMap)
- return null;
-
- // Other algorithms are possible:
- // We could store an index, context.sourceFileByTag
- // Or we could build a tree keyed by url, with SpiderMonkey script.fileNames at the top
- // and our urls below
-
- // we won't be lucky for file:/ urls, no normalizeURL applied
- var lucky = context.sourceFileMap[script.fileName];
- if (FBTrace.DBG_SOURCEFILES && lucky)
- FBTrace.sysout("getSourceFileByScript trying to be lucky for "+
- script.tag + " in "+lucky, script);
-
- if (lucky && lucky.hasScript(script))
- return lucky;
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("getSourceFileByScript looking for "+script.tag+"@"+script.fileName+" in "+
- context.getName()+": ", context.sourceFileMap);
-
- for (var url in context.sourceFileMap)
- {
- var sourceFile = context.sourceFileMap[url];
- if (sourceFile.hasScript(script))
- return sourceFile;
- }
-};
-
-Firebug.SourceFile.getScriptAnalyzer = function(context, script)
-{
- var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, script);
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("getScriptAnalyzer "+ (sourceFile?"finds sourceFile: ":
- "FAILS to find sourceFile"), sourceFile);
-
- if (sourceFile)
- {
- var analyzer = sourceFile.getScriptAnalyzer(script);
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("getScriptAnalyzer finds analyzer: ", analyzer);
-
- return analyzer;
- }
-
- return undefined;
-};
-
-Firebug.SourceFile.getSourceFileAndLineByScript= function(context, script, frame)
-{
- var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, script);
- if (sourceFile)
- {
- if (sourceFile.pcmap_type)
- var line = script.pcToLine(1, sourceFile.pcmap_type);
- else
- var line = 1;
-
- return { sourceFile: sourceFile, lineNo: line };
- }
-};
-
-Firebug.SourceFile.guessEnclosingFunctionName = function(url, line, context)
-{
- var sourceFile = context.sourceFileMap[url];
- if (sourceFile)
- {
- var scripts = sourceFile.getScriptsAtLineNumber(line);
- if (scripts)
- {
- // TODO try others?
- var script = scripts[0];
- var analyzer = sourceFile.getScriptAnalyzer(script);
-
- // Some analyzers don't implement this method.
- if (analyzer.getBaseLineNumberByScript)
- line = analyzer.getBaseLineNumberByScript(script);
- }
- }
-
- // Do not subtract 1 (see issue 6566)
- return StackFrame.guessFunctionName(url, line/*-1*/+1, context);
-};
-
-// ********************************************************************************************* //
-// Functions
-
-Firebug.SourceFile.findScripts = function(context, url, line)
-{
- var sourceFile = context.sourceFileMap[url];
- if (sourceFile)
- {
- var scripts = sourceFile.scriptsIfLineCouldBeExecutable(line);
- }
- else
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("lib.findScript, no sourceFile in context for url=", url);
- }
- return scripts;
-};
-
-Firebug.SourceFile.findScriptForFunctionInContext = function(context, fn)
-{
- var found = null;
-
- if (!fn || typeof(fn) !== "function")
- return found;
-
- try
- {
- var wrapped = jsd.wrapValue(fn);
- found = wrapped.script;
- if (!found)
- found = wrapped.jsParent.script;
-
- if (!found && FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("findScriptForFunctionInContext ",
- {fn: fn, wrapValue: jsd.wrapValue(fn), found: found});
- }
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("sourceFile.findScriptForFunctionInContext; EXCEPTION " + err, err);
- }
-
- if (FBTrace.DBG_FUNCTION_NAMES)
- FBTrace.sysout("findScriptForFunctionInContext found " + (found ? found.tag : "none"));
-
- return found;
-};
-
-Firebug.SourceFile.findSourceForFunction = function(fn, context)
-{
- var script = Firebug.SourceFile.findScriptForFunctionInContext(context, fn);
- return script ? Firebug.SourceFile.getSourceLinkForScript(script, context) : null;
-};
-
-Firebug.SourceFile.getSourceLinkForScript = function(script, context)
-{
- var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, script);
- if (sourceFile)
- {
- var scriptAnalyzer = sourceFile.getScriptAnalyzer(script);
- if (scriptAnalyzer)
- {
- return scriptAnalyzer.getSourceLinkForScript(script);
- }
- else
- {
- // no-op for detrace
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("getSourceLineForScript FAILS no scriptAnalyser for sourceFile " +
- sourceFile);
- }
- }
- }
-};
-
-// ********************************************************************************************* //
-// Source Files
-
-Firebug.SourceFile.getSourceFileByHref = function(url, context)
-{
- return context.sourceFileMap[url];
-};
-
-Firebug.SourceFile.sourceURLsAsArray = function(context)
-{
- var urls = [];
- var sourceFileMap = context.sourceFileMap;
- for (var url in sourceFileMap)
- urls.push(url);
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("sourceURLsAsArray urls="+urls.length+" in context "+context.getName());
-
- return urls;
-};
-
-// deprecated, use mapAsArray
-Firebug.SourceFile.sourceFilesAsArray = function(sourceFileMap)
-{
- var sourceFiles = [];
- for (var url in sourceFileMap)
- sourceFiles.push(sourceFileMap[url]);
-
- if (FBTrace.DBG_SOURCEFILES)
- FBTrace.sysout("sourceFilesAsArray sourcefiles="+sourceFiles.length, sourceFiles);
-
- return sourceFiles;
-};
-
-Firebug.SourceFile.mapAsArray = function(map)
-{
- var entries = [];
- for (var url in map)
- entries.push(map[url]);
-
- return entries;
-};
-
-// ********************************************************************************************* //
-
-return Firebug.SourceFile;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/url",
+ "firebug/js/sourceLink",
+ "firebug/js/stackFrame",
+],
+function(Obj, Firebug, Url, SourceLink, StackFrame) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+const PCMAP_SOURCETEXT = Ci.jsdIScript.PCMAP_SOURCETEXT;
+const PCMAP_PRETTYPRINT = Ci.jsdIScript.PCMAP_PRETTYPRINT;
+
+var jsd = Cc["@mozilla.org/js/jsd/debugger-service;1"].getService(Ci.jsdIDebuggerService);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+/**
+ * SourceFile one for every compilation unit.
+ * Unique URL for each. (href)
+ * Unique outerScript, the statements outside of any function definition
+ * sourceCache keyed by href has source for this compilation unit
+ * Stored by href in context.
+ * Contains array of jsdIScript for functions (scripts) defined in this unit
+ * May contain line table (for sources viewed)
+ */
+Firebug.SourceFile = function (compilation_unit_type)
+{
+ this.compilation_unit_type = compilation_unit_type;
+};
+
+Firebug.SourceFile.prototype =
+{
+ getBaseLineOffset: function()
+ {
+ return 0;
+ },
+
+ getURL: function()
+ {
+ return this.href;
+ },
+
+ toString: function()
+ {
+ var str = (this.compilation_unit_type?this.compilation_unit_type + " " : "") +
+ this.href + " script.tags( ";
+
+ if (this.outerScript)
+ str += (this.outerScript.isValid?this.outerScript.tag:"X") +"| ";
+
+ if (this.innerScripts)
+ {
+ var numberInvalid = 0;
+ for (var p in this.innerScripts)
+ {
+ var script = this.innerScripts[p];
+ if (script.isValid)
+ str += p+" ";
+ else
+ numberInvalid++;
+ }
+ }
+
+ str += ")" + (numberInvalid ? "(" + numberInvalid + " invalid)" : "");
+ return str;
+ },
+
+ forEachScript: function(callback)
+ {
+ if (this.outerScript)
+ callback(this.outerScript);
+
+ if (this.innerScripts)
+ {
+ for (var p in this.innerScripts)
+ {
+ var script = this.innerScripts[p];
+ var rc = callback(script);
+ if (rc)
+ return rc;
+ }
+ }
+ },
+
+ getLineRanges: function()
+ {
+ var str = "";
+ this.forEachScript(function appendARange(script)
+ {
+ var endLineNumber = script.baseLineNumber + script.lineExtent;
+ str += " "+script.baseLineNumber +"-("+script.tag+")-"+endLineNumber;
+ });
+
+ return str;
+ },
+
+ getSourceLength: function()
+ {
+ return this.sourceLength;
+ },
+
+ getLine: function(context, lineNo)
+ {
+ return context.sourceCache.getLine(this.href, lineNo);
+ },
+
+ addToLineTable: function(script)
+ {
+ if (!script || !script.isValid)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("addToLineTable got invalid script " +
+ (script ? script.tag : "null"));
+ return;
+ }
+
+ // For outer scripts, a better algorithm would loop over PC, use pcToLine to mark the lines.
+ // This assumes there are fewer PCs in an outer script than lines, probably true for large
+ // systems.
+ // And now addToLineTable is only used for outerScripts (eval and top-level).
+ // But since we can't know the range of PC values we cannot use that approach.
+
+ if (!this.outerScriptLineMap)
+ this.outerScriptLineMap = [];
+
+ var lineCount = script.lineExtent + 1;
+ var offset = this.getBaseLineOffset();
+
+ if (FBTrace.DBG_LINETABLE)
+ {
+ FBTrace.sysout("lib.SourceFile.addToLineTable script.tag:" + script.tag +
+ " lineExtent=" + lineCount + " baseLineNumber=" + script.baseLineNumber +
+ " offset=" + offset + " for " + this.compilation_unit_type);
+ var startTime = new Date().getTime();
+ }
+
+ // isLineExecutable requires about 1ms per line, so it can only be called for toy programs
+ if (lineCount > 100)
+ lineCount = 100;
+
+ for (var i = 0; i <= lineCount; i++)
+ {
+ // the max is (i + script.baseLineNumber + script.lineExtent)
+ var scriptLineNo = i + script.baseLineNumber;
+ var mapLineNo = scriptLineNo - offset;
+ try
+ {
+ if (script.isLineExecutable(scriptLineNo, this.pcmap_type))
+ this.outerScriptLineMap.push(mapLineNo);
+ }
+ catch (e)
+ {
+ // I guess not...
+ }
+
+ if (FBTrace.DBG_LINETABLE)
+ {
+ var pcFromLine = script.lineToPc(scriptLineNo, this.pcmap_type);
+ var lineFromPC = script.pcToLine(pcFromLine, this.pcmap_type);
+
+ if (this.outerScriptLineMap.indexOf(mapLineNo) != -1)
+ {
+ FBTrace.sysout("lib.SourceFile.addToLineTable ["+mapLineNo+"]="+script.tag+
+ " for scriptLineNo="+scriptLineNo+" vs "+lineFromPC+
+ "=lineFromPC; lineToPc="+pcFromLine+" with map="+
+ (this.pcmap_type==PCMAP_PRETTYPRINT?"PP":"SOURCE"));
+ }
+ else
+ {
+ FBTrace.sysout("lib.SourceFile.addToLineTable not executable scriptLineNo="+
+ scriptLineNo+" vs "+lineFromPC+"=lineFromPC; lineToPc="+pcFromLine);
+ }
+ }
+ }
+
+ if (FBTrace.DBG_LINETABLE)
+ {
+ var endTime = new Date().getTime();
+ var delta = endTime - startTime;
+ if (delta > 0)
+ {
+ FBTrace.sysout("SourceFile.addToLineTable processed "+lineCount+" lines in "+
+ delta+" millisecs "+Math.round(lineCount/delta)+" lines per millisecond");
+ }
+
+ FBTrace.sysout("SourceFile.addToLineTable: "+this.toString());
+ }
+ },
+
+ addToLineTableByPCLoop: function(script)
+ {
+ // This code is not called; it crashes FF3pre
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=430205
+ if (!this.outerScriptLineMap)
+ this.outerScriptLineMap = {};
+
+ var lineCount = script.lineExtent;
+ var offset = this.getBaseLineOffset();
+ if (FBTrace.DBG_LINETABLE)
+ {
+ FBTrace.sysout("lib.SourceFile.addToLineTableByPCLoop script.tag:"+script.tag+
+ " lineCount="+lineCount+" offset="+offset+" for "+this.compilation_unit_type);
+ var startTime = new Date().getTime();
+ }
+
+ for (var i = 0; i <= 10*lineCount; i++)
+ {
+ var lineFromPC = script.pcToLine(i, this.pcmap_type);
+ //FBTrace.sysout("lib.SourceFile.addToLineTableByPCLoop pc="+i+" line: "+lineFromPC+"\n");
+ this.outerScriptLineMap[lineFromPC] = script;
+ if (lineFromPC >= lineCount)
+ break;
+ }
+
+ if (FBTrace.DBG_LINETABLE)
+ {
+ FBTrace.sysout("SourceFile.addToLineTableByPCLoop: "+this.toString()+"\n");
+ var endTime = new Date().getTime();
+ var delta = endTime - startTime;
+
+ if (delta > 0)
+ {
+ FBTrace.sysout("SourceFileaddToLineTableByPCLoop processed "+lineCount+
+ " lines in "+delta+" millisecs "+Math.round(lineCount/delta)+
+ " lines per millisecond\n");
+ }
+ }
+ },
+
+ hasScriptAtLineNumber: function(lineNo, mustBeExecutableLine)
+ {
+ var offset = this.getBaseLineOffset();
+
+ if (!this.innerScripts)
+ return; // eg URLOnly
+
+ // lineNo is user-viewed number, targetLineNo is jsd number
+ var targetLineNo = lineNo + offset;
+
+ var scripts = [];
+ for (var p in this.innerScripts)
+ {
+ var script = this.innerScripts[p];
+ if (mustBeExecutableLine && !script.isValid)
+ continue;
+
+ this.addScriptAtLineNumber(scripts, script, targetLineNo,
+ mustBeExecutableLine, offset);
+
+ if (scripts.length)
+ return true;
+ }
+
+ if (this.outerScript && !(mustBeExecutableLine && !this.outerScript.isValid))
+ {
+ this.addScriptAtLineNumber(scripts, this.outerScript, targetLineNo,
+ mustBeExecutableLine, offset);
+ }
+
+ return (scripts.length > 0);
+ },
+
+ getScriptsAtLineNumber: function(lineNo, mustBeExecutableLine)
+ {
+ var offset = this.getBaseLineOffset();
+
+ if (!this.innerScripts)
+ return; // eg URLOnly
+
+ // lineNo is user-viewed number, targetLineNo is jsd number
+ var targetLineNo = lineNo + offset;
+
+ var scripts = [];
+ for (var p in this.innerScripts)
+ {
+ var script = this.innerScripts[p];
+ if (mustBeExecutableLine && !script.isValid)
+ continue;
+
+ this.addScriptAtLineNumber(scripts, script, targetLineNo,
+ mustBeExecutableLine, offset);
+ }
+
+ if (this.outerScript && !(mustBeExecutableLine && !this.outerScript.isValid))
+ {
+ this.addScriptAtLineNumber(scripts, this.outerScript, targetLineNo,
+ mustBeExecutableLine, offset);
+ }
+
+ if (FBTrace.DBG_LINETABLE)
+ {
+ if (scripts.length < 1)
+ {
+ FBTrace.sysout("lib.getScriptsAtLineNumber no targetScript at "+lineNo,
+ " for sourceFile:"+this.toString());
+ return false;
+ }
+ else
+ {
+ FBTrace.sysout("getScriptsAtLineNumber offset "+offset+" for sourcefile: "+
+ this.toString());
+ }
+ }
+
+ return (scripts.length > 0) ? scripts : false;
+ },
+
+ addScriptAtLineNumber: function(scripts, script, targetLineNo, mustBeExecutableLine, offset)
+ {
+ // script.isValid will be true.
+ if (FBTrace.DBG_LINETABLE)
+ FBTrace.sysout("addScriptAtLineNumber trying "+script.tag+", is "+
+ script.baseLineNumber+" <= "+targetLineNo +" <= "+ (script.baseLineNumber +
+ script.lineExtent)+"? using offset = "+offset+"\n");
+
+ if (targetLineNo >= script.baseLineNumber)
+ {
+ if ((script.baseLineNumber + script.lineExtent) >= targetLineNo)
+ {
+ if (mustBeExecutableLine)
+ {
+ try
+ {
+ if (!script.isLineExecutable(targetLineNo, this.pcmap_type) )
+ {
+ if (FBTrace.DBG_LINETABLE)
+ FBTrace.sysout("getScriptsAtLineNumber tried "+script.tag+
+ ", not executable at targetLineNo:"+targetLineNo+" pcmap:"+
+ this.pcmap_type);
+ return;
+ }
+ }
+ catch (e)
+ {
+ // Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE)
+ // [jsdIScript.isLineExecutable]
+ return;
+ }
+ }
+
+ scripts.push(script);
+
+ if (FBTrace.DBG_LINETABLE)
+ {
+ var checkExecutable = "";
+ if (mustBeExecutableLine)
+ checkExecutable = " isLineExecutable: "+
+ script.isLineExecutable(targetLineNo, this.pcmap_type)+"@pc:"+
+ script.lineToPc(targetLineNo, this.pcmap_type);
+
+ FBTrace.sysout("getScriptsAtLineNumber found "+script.tag+", isValid: "+
+ script.isValid+" targetLineNo:"+targetLineNo+checkExecutable);
+ }
+ }
+ }
+ },
+
+ scriptsIfLineCouldBeExecutable: function(lineNo) // script may not be valid
+ {
+ var scripts = this.getScriptsAtLineNumber(lineNo, true);
+
+ if (FBTrace.DBG_LINETABLE && !scripts)
+ FBTrace.sysout("lib.scriptsIfLineCouldBeExecutable this.outerScriptLineMap",
+ this.outerScriptLineMap);
+
+ if (!scripts && this.outerScriptLineMap && (this.outerScriptLineMap.indexOf(lineNo) != -1))
+ return [this.outerScript];
+
+ return scripts;
+ },
+
+ isExecutableLine: function(lineNo) // script may not be valid
+ {
+ if (this.hasScriptAtLineNumber(lineNo, true))
+ return true;
+
+ if (this.outerScriptLineMap && (this.outerScriptLineMap.indexOf(lineNo) != -1))
+ return true;
+
+ return false;
+ },
+
+ hasScript: function(script)
+ {
+ if (this.outerScript && (this.outerScript.tag == script.tag) )
+ return true;
+
+ // XXXjjb Don't use indexOf or similar tests that rely on ===, since we are really
+ // working with wrappers around jsdIScript, not script themselves. I guess.
+
+ return (this.innerScripts && this.innerScripts.hasOwnProperty(script.tag));
+ },
+
+ // these objects map JSD's values to correct values
+ getScriptAnalyzer: function(script)
+ {
+ if (script && this.outerScript && (script.tag == this.outerScript.tag) )
+ return this.getOuterScriptAnalyzer();
+
+ return new Firebug.SourceFile.NestedScriptAnalyzer(this);
+ },
+
+ // return.path: group/category label, return.name: item label
+ getObjectDescription: function()
+ {
+ return Url.splitURLBase(this.href);
+ },
+
+ isEval: function()
+ {
+ return (this.compilation_unit_type == "eval-level") ||
+ (this.compilation_unit_type == "newFunction");
+ },
+
+ isEvent: function()
+ {
+ return (this.compilation_unit_type == "event");
+ },
+
+ loadScriptLines: function(context) // array of lines
+ {
+ if (this.source)
+ return this.source;
+ else if (context.sourceCache)
+ return context.sourceCache.load(this.href);
+ else if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("sourceFile.loadScriptLines FAILS no sourceCache "+
+ context.getName(), context);
+ },
+
+ getOuterScriptAnalyzer: function()
+ {
+ FBTrace.sysout("getOuterScriptAnalyzer not overridden for "+sourceFile, this);
+ }
+};
+
+Firebug.SourceFile.summarizeSourceLineArray = function(sourceLines, size)
+{
+ var buf = "";
+ for (var i = 0; i < sourceLines.length; i++)
+ {
+ var aLine = sourceLines[i].substr(0,240); // avoid huge lines
+ buf += aLine.replace(/\s/, " ", "g");
+ if (buf.length > size || aLine.length > 240)
+ break;
+ }
+ return buf.substr(0, size);
+};
+
+
+Firebug.SourceFile.NestedScriptAnalyzer = function(sourceFile)
+{
+ this.sourceFile = sourceFile;
+};
+
+Firebug.SourceFile.NestedScriptAnalyzer.prototype =
+{
+ // Adjust JSD line numbers based on origin of script
+ getSourceLineFromFrame: function(context, frame)
+ {
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("NestedScriptAnalyzer in "+this.sourceFile.compilation_unit_type+
+ ": frame.line - this.sourceFile.getBaseLineOffset() "+
+ frame.line +" - "+this.sourceFile.getBaseLineOffset());
+
+ return frame.line - (this.sourceFile.getBaseLineOffset());
+ },
+
+ // Interpret frame to give fn(args)
+ getFunctionDescription: function(script, context, frame)
+ {
+ if (frame)
+ {
+ var name = frame.name;
+ var args = StackFrame.getFunctionArgValues(frame);
+ }
+ else
+ {
+ var name = script.functionName;
+ var args = [];
+ }
+
+ if (name == "anonymous")
+ {
+ var name = StackFrame.guessFunctionName(this.sourceFile.href,
+ this.getBaseLineNumberByScript(script), context);
+ }
+
+ return {name: name, args: args};
+ },
+
+ // link to source for this script.
+ getSourceLinkForScript: function (script)
+ {
+ var line = this.getBaseLineNumberByScript(script);
+ return new SourceLink.SourceLink(this.sourceFile.href, line, "js");
+ },
+
+ getBaseLineNumberByScript: function(script)
+ {
+ // Do not subtract 1 (see issue 6566)
+ return script.baseLineNumber - (this.sourceFile.getBaseLineOffset()/* - 1*/);
+ }
+};
+
+Firebug.SourceFile.addScriptsToSourceFile = function(sourceFile, outerScript, innerScripts)
+{
+ // Attach the innerScripts for use later
+ if (!sourceFile.innerScripts)
+ sourceFile.innerScripts = {};
+
+ var total = 0;
+ while (innerScripts.hasMoreElements())
+ {
+ var script = innerScripts.getNext();
+ if (!script || ((script instanceof Ci.jsdIScript) && !script.tag))
+ {
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("addScriptsToSourceFile innerScripts.getNext FAILS "+
+ sourceFile, script);
+ continue;
+ }
+
+ sourceFile.innerScripts[script.tag] = script;
+
+ if (FBTrace.DBG_SOURCEFILES)
+ total++;
+ }
+
+ if (FBTrace.DBG_SOURCEFILES)
+ {
+ FBTrace.sysout("addScriptsToSourceFile "+ total +" scripts, sourcefile="+
+ sourceFile.toString(), sourceFile);
+ }
+};
+
+// ********************************************************************************************* //
+
+Firebug.EvalLevelSourceFile = function(url, script, eval_expr, source, mapType,
+ innerScriptEnumerator)
+{
+ this.href = url.href;
+ this.hrefKind = url.kind;
+ this.outerScript = script;
+ this.containingURL = script.fileName;
+ this.evalExpression = eval_expr;
+ this.sourceLength = source.length;
+ this.source = source;
+ this.pcmap_type = mapType;
+ Firebug.SourceFile.addScriptsToSourceFile(this, script, innerScriptEnumerator);
+};
+
+Firebug.EvalLevelSourceFile.prototype =
+ Obj.descend(new Firebug.SourceFile("eval-level"), // shared prototype
+{
+ getLine: function(context, lineNo)
+ {
+ return this.source[lineNo - 1];
+ },
+
+ getBaseLineOffset: function()
+ {
+ // baseLineNumber always valid even after jsdIscript isValid false
+ return this.outerScript.baseLineNumber - 1;
+ },
+
+ getObjectDescription: function()
+ {
+ if (this.hrefKind == "source" || this.hrefKind == "data")
+ return Url.splitURLBase(this.href);
+
+ if (!this.summary)
+ {
+ if (this.evalExpression)
+ this.summary = Firebug.SourceFile.summarizeSourceLineArray(
+ this.evalExpression.substr(0, 240), 120);
+
+ if (!this.summary)
+ this.summary = "";
+
+ if (this.summary.length < 120)
+ this.summary = "eval("+this.summary + "...)=" +
+ Firebug.SourceFile.summarizeSourceLineArray(this.source,
+ 120 - this.summary.length);
+ }
+
+ var containingFileDescription = Url.splitURLBase(this.containingURL);
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("EvalLevelSourceFile this.evalExpression.substr(0, 240):"+
+ (this.evalExpression?this.evalExpression.substr(0, 240):"null")+" summary",
+ this.summary);
+
+ return {
+ path: containingFileDescription.path,
+ name: containingFileDescription.name+"/eval: "+this.summary
+ };
+ },
+
+ getOuterScriptAnalyzer: function()
+ {
+ return new Firebug.EvalLevelSourceFile.OuterScriptAnalyzer(this);
+ },
+});
+
+Firebug.EvalLevelSourceFile.OuterScriptAnalyzer = function(sourceFile)
+{
+ this.sourceFile = sourceFile;
+};
+
+Firebug.EvalLevelSourceFile.OuterScriptAnalyzer.prototype =
+{
+ // Adjust JSD line numbers based on origin of script
+ getSourceLineFromFrame: function(context, frame)
+ {
+ return frame.line - this.sourceFile.getBaseLineOffset();
+ },
+
+ // Interpret frame to give fn(args)
+ getFunctionDescription: function(script, context, frame)
+ {
+ return {name: "eval", args: [this.evalExpression] };
+ },
+
+ getSourceLinkForScript: function (script)
+ {
+ return new SourceLink.SourceLink(this.sourceFile.href, 1, "js");
+ }
+};
+
+// ********************************************************************************************* //
+
+Firebug.EventSourceFile = function(url, script, title, source, innerScriptEnumerator)
+{
+ this.href = url;
+ this.outerScript = script;
+ this.containingURL = script.fileName;
+ this.title = title;
+ this.source = source; // points to the sourceCache lines
+ this.sourceLength = source.length;
+ this.pcmap_type = PCMAP_PRETTYPRINT;
+
+ Firebug.SourceFile.addScriptsToSourceFile(this, script, innerScriptEnumerator);
+};
+
+Firebug.EventSourceFile.prototype = Obj.descend(new Firebug.SourceFile("event"),
+{
+ getLine: function(context, lineNo)
+ {
+ return this.source[lineNo - 1];
+ },
+
+ getBaseLineOffset: function()
+ {
+ return 1;
+ },
+
+ getObjectDescription: function()
+ {
+ if (!this.summary)
+ this.summary = Firebug.SourceFile.summarizeSourceLineArray(this.source, 120);
+
+ var containingFileDescription = Url.splitURLBase(this.containingURL);
+
+ return {
+ path: containingFileDescription.path,
+ name: containingFileDescription.name+"/event: "+this.summary
+ };
+ },
+
+ getOuterScriptAnalyzer: function()
+ {
+ return new Firebug.EventSourceFile.OuterScriptAnalyzer(this);
+ },
+});
+
+Firebug.EventSourceFile.OuterScriptAnalyzer = function(sourceFile)
+{
+ this.sourceFile = sourceFile;
+};
+
+Firebug.EventSourceFile.OuterScriptAnalyzer.prototype =
+{
+ // Adjust JSD line numbers based on origin of script
+ getSourceLineFromFrame: function(context, frame)
+ {
+ var script = frame.script;
+ var line = script.pcToLine(frame.pc, PCMAP_PRETTYPRINT);
+ return line - 1;
+ },
+
+ // Interpret frame to give fn(args)
+ getFunctionDescription: function(script, context, frame)
+ {
+ var name = script.functionName;
+ if (!name)
+ name = "jsdbug_NoScriptFunctionName";
+
+ if (frame)
+ {
+ var args = StackFrame.getFunctionArgValues(frame);
+ }
+ else
+ {
+ var args = [];
+ }
+ return {name: name, args: args};
+ },
+
+ getSourceLinkForScript: function (script)
+ {
+ return new SourceLink.SourceLink(this.sourceFile.href, 1, "js");
+ }
+};
+
+// ********************************************************************************************* //
+
+Firebug.SourceFile.CommonBase =
+{
+ getSourceLength: function()
+ {
+ if (!this.sourceLength)
+ this.sourceLength = this.context.sourceCache.load(this.href).length;
+ return this.sourceLength;
+ },
+
+ getOuterScriptAnalyzer: function()
+ {
+ return Firebug.TopLevelSourceFile.OuterScriptAnalyzer;
+ }
+};
+
+// ********************************************************************************************* //
+
+Firebug.TopLevelSourceFile = function(url, outerScript, sourceLength, innerScriptEnumerator)
+{
+ this.href = url;
+ this.outerScript = outerScript; // Beware may not be valid after we return!!
+ this.sourceLength = sourceLength;
+ this.pcmap_type = PCMAP_SOURCETEXT;
+
+ Firebug.SourceFile.addScriptsToSourceFile(this, outerScript, innerScriptEnumerator);
+};
+
+Firebug.TopLevelSourceFile.prototype = Obj.descend(new Firebug.SourceFile("top-level"),
+ Firebug.SourceFile.CommonBase);
+
+Firebug.TopLevelSourceFile.OuterScriptAnalyzer =
+{
+ // Adjust JSD line numbers based on origin of script
+ getSourceLineFromFrame: function(context, frame)
+ {
+ return frame.line;
+ },
+
+ // Interpret frame to give fn(args)
+ getFunctionDescription: function(script, context, frame)
+ {
+ // this is more useful that just "top_level"
+ var file_name = Url.getFileName(Url.normalizeURL(script.fileName));
+ file_name = file_name ? file_name: "__top_level__";
+ return {name: file_name, args: []};
+ },
+
+ getSourceLinkForScript: function (script)
+ {
+ return SourceLink.SourceLink(Url.normalizeURL(script.fileName),
+ script.baseLineNumber, "js");
+ }
+};
+
+// ********************************************************************************************* //
+
+// we don't have the outer script and we delay source load.
+Firebug.EnumeratedSourceFile = function(url)
+{
+ // may not be outerScript file name, eg this could be an enumerated eval
+ this.href = new String(url);
+ this.innerScripts = {};
+ this.pcmap_type = PCMAP_SOURCETEXT;
+};
+
+Firebug.EnumeratedSourceFile.prototype = Obj.descend(
+ new Firebug.SourceFile("enumerated"),
+ Firebug.SourceFile.CommonBase);
+
+// ********************************************************************************************* //
+
+Firebug.NoScriptSourceFile = function(context, url) // Somehow we got the Url, but not the script
+{
+ this.href = url; // we know this much
+ this.innerScripts = {};
+};
+
+Firebug.NoScriptSourceFile.prototype = Obj.descend(
+ new Firebug.SourceFile("URLOnly"),
+ Firebug.SourceFile.CommonBase);
+
+// ********************************************************************************************* //
+// javascript in a .xul or .xml file, no outerScript
+
+Firebug.XULSourceFile = function(url, outerScript, innerScriptEnumerator)
+{
+ this.href = url;
+ this.pcmap_type = PCMAP_SOURCETEXT;
+ this.outerScript = outerScript; // Beware may not be valid after we return!!
+
+ Firebug.SourceFile.addScriptsToSourceFile(this, outerScript, innerScriptEnumerator);
+};
+
+Firebug.XULSourceFile.prototype = Obj.descend(
+ new Firebug.SourceFile("xul"),
+ Firebug.SourceFile.CommonBase);
+
+// ********************************************************************************************* //
+
+// element.appendChild(scriptTag)
+Firebug.ScriptTagAppendSourceFile = function(url, outerScript, sourceLength, innerScriptEnumerator)
+{
+ this.href = url;
+ this.outerScript = outerScript; // Beware may not be valid after we return!!
+ this.sourceLength = sourceLength;
+ this.pcmap_type = PCMAP_SOURCETEXT;
+
+ Firebug.SourceFile.addScriptsToSourceFile(this, outerScript, innerScriptEnumerator);
+};
+
+Firebug.ScriptTagAppendSourceFile.prototype = Obj.descend(
+ new Firebug.SourceFile("scriptTagAppend"),
+ Firebug.SourceFile.CommonBase);
+
+// ********************************************************************************************* //
+
+// we don't have the outer script and we delay source load
+Firebug.ScriptTagSourceFile = function(context, url, scriptTagNumber)
+{
+ this.context = context;
+ this.href = url; // we know this is not an eval
+ this.scriptTagNumber = scriptTagNumber;
+ this.innerScripts = {};
+ this.pcmap_type = PCMAP_SOURCETEXT;
+};
+
+Firebug.ScriptTagSourceFile.prototype = Obj.descend(
+ new Firebug.SourceFile("scriptTag"),
+ Firebug.SourceFile.CommonBase);
+
+// ********************************************************************************************* //
+
+Firebug.SourceFile.getSourceFileByScript = function(context, script)
+{
+ if (!context.sourceFileMap)
+ return null;
+
+ // Other algorithms are possible:
+ // We could store an index, context.sourceFileByTag
+ // Or we could build a tree keyed by url, with SpiderMonkey script.fileNames at the top
+ // and our urls below
+
+ // we won't be lucky for file:/ urls, no normalizeURL applied
+ var lucky = context.sourceFileMap[script.fileName];
+ if (FBTrace.DBG_SOURCEFILES && lucky)
+ FBTrace.sysout("getSourceFileByScript trying to be lucky for "+
+ script.tag + " in "+lucky, script);
+
+ if (lucky && lucky.hasScript(script))
+ return lucky;
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("getSourceFileByScript looking for "+script.tag+"@"+script.fileName+" in "+
+ context.getName()+": ", context.sourceFileMap);
+
+ for (var url in context.sourceFileMap)
+ {
+ var sourceFile = context.sourceFileMap[url];
+ if (sourceFile.hasScript(script))
+ return sourceFile;
+ }
+};
+
+Firebug.SourceFile.getScriptAnalyzer = function(context, script)
+{
+ var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, script);
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("getScriptAnalyzer "+ (sourceFile?"finds sourceFile: ":
+ "FAILS to find sourceFile"), sourceFile);
+
+ if (sourceFile)
+ {
+ var analyzer = sourceFile.getScriptAnalyzer(script);
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("getScriptAnalyzer finds analyzer: ", analyzer);
+
+ return analyzer;
+ }
+
+ return undefined;
+};
+
+Firebug.SourceFile.getSourceFileAndLineByScript= function(context, script, frame)
+{
+ var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, script);
+ if (sourceFile)
+ {
+ if (sourceFile.pcmap_type)
+ var line = script.pcToLine(1, sourceFile.pcmap_type);
+ else
+ var line = 1;
+
+ return { sourceFile: sourceFile, lineNo: line };
+ }
+};
+
+Firebug.SourceFile.guessEnclosingFunctionName = function(url, line, context)
+{
+ var sourceFile = context.sourceFileMap[url];
+ if (sourceFile)
+ {
+ var scripts = sourceFile.getScriptsAtLineNumber(line);
+ if (scripts)
+ {
+ // TODO try others?
+ var script = scripts[0];
+ var analyzer = sourceFile.getScriptAnalyzer(script);
+
+ // Some analyzers don't implement this method.
+ if (analyzer.getBaseLineNumberByScript)
+ line = analyzer.getBaseLineNumberByScript(script);
+ }
+ }
+
+ // Do not subtract 1 (see issue 6566)
+ return StackFrame.guessFunctionName(url, line/*-1*/+1, context);
+};
+
+// ********************************************************************************************* //
+// Functions
+
+Firebug.SourceFile.findScripts = function(context, url, line)
+{
+ var sourceFile = context.sourceFileMap[url];
+ if (sourceFile)
+ {
+ var scripts = sourceFile.scriptsIfLineCouldBeExecutable(line);
+ }
+ else
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("lib.findScript, no sourceFile in context for url=", url);
+ }
+ return scripts;
+};
+
+Firebug.SourceFile.findScriptForFunctionInContext = function(context, fn)
+{
+ var found = null;
+
+ if (!fn || typeof(fn) !== "function")
+ return found;
+
+ try
+ {
+ var wrapped = jsd.wrapValue(fn);
+ found = wrapped.script;
+ if (!found)
+ found = wrapped.jsParent.script;
+
+ if (!found && FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("findScriptForFunctionInContext ",
+ {fn: fn, wrapValue: jsd.wrapValue(fn), found: found});
+ }
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("sourceFile.findScriptForFunctionInContext; EXCEPTION " + err, err);
+ }
+
+ if (FBTrace.DBG_FUNCTION_NAMES)
+ FBTrace.sysout("findScriptForFunctionInContext found " + (found ? found.tag : "none"));
+
+ return found;
+};
+
+Firebug.SourceFile.findSourceForFunction = function(fn, context)
+{
+ var script = Firebug.SourceFile.findScriptForFunctionInContext(context, fn);
+ return script ? Firebug.SourceFile.getSourceLinkForScript(script, context) : null;
+};
+
+Firebug.SourceFile.getSourceLinkForScript = function(script, context)
+{
+ var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, script);
+ if (sourceFile)
+ {
+ var scriptAnalyzer = sourceFile.getScriptAnalyzer(script);
+ if (scriptAnalyzer)
+ {
+ return scriptAnalyzer.getSourceLinkForScript(script);
+ }
+ else
+ {
+ // no-op for detrace
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("getSourceLineForScript FAILS no scriptAnalyser for sourceFile " +
+ sourceFile);
+ }
+ }
+ }
+};
+
+// ********************************************************************************************* //
+// Source Files
+
+Firebug.SourceFile.getSourceFileByHref = function(url, context)
+{
+ return context.sourceFileMap[url];
+};
+
+Firebug.SourceFile.sourceURLsAsArray = function(context)
+{
+ var urls = [];
+ var sourceFileMap = context.sourceFileMap;
+ for (var url in sourceFileMap)
+ urls.push(url);
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("sourceURLsAsArray urls="+urls.length+" in context "+context.getName());
+
+ return urls;
+};
+
+// deprecated, use mapAsArray
+Firebug.SourceFile.sourceFilesAsArray = function(sourceFileMap)
+{
+ var sourceFiles = [];
+ for (var url in sourceFileMap)
+ sourceFiles.push(sourceFileMap[url]);
+
+ if (FBTrace.DBG_SOURCEFILES)
+ FBTrace.sysout("sourceFilesAsArray sourcefiles="+sourceFiles.length, sourceFiles);
+
+ return sourceFiles;
+};
+
+Firebug.SourceFile.mapAsArray = function(map)
+{
+ var entries = [];
+ for (var url in map)
+ entries.push(map[url]);
+
+ return entries;
+};
+
+// ********************************************************************************************* //
+
+return Firebug.SourceFile;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/js/sourceLink.js b/content/firebug/js/sourceLink.js
index c1418ce..e82a5d9 100644
--- a/content/firebug/js/sourceLink.js
+++ b/content/firebug/js/sourceLink.js
@@ -1,42 +1,42 @@
-/* See license.txt for terms of usage */
-
-define([], function() {
-
-// ********************************************************************************************* //
-// Constants
-
-function SourceLink(url, line, type, object, instance, col)
-{
- this.href = url;
- this.instance = instance;
- this.line = line;
- this.type = type;
- this.object = object;
- this.col = col;
-};
-
-SourceLink.prototype =
-{
- toString: function()
- {
- return this.href+"@"+(this.line || '?');
- },
-
- toJSON: function() // until 3.1...
- {
- return "{\"href\":\""+this.href+"\", "+
- (this.line?("\"line\":"+this.line+","):"")+
- (this.type?(" \"type\":\""+this.type+"\","):"")+
- "}";
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return {
- SourceLink: SourceLink
-};
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([], function() {
+
+// ********************************************************************************************* //
+// Constants
+
+function SourceLink(url, line, type, object, instance, col)
+{
+ this.href = url;
+ this.instance = instance;
+ this.line = line;
+ this.type = type;
+ this.object = object;
+ this.col = col;
+};
+
+SourceLink.prototype =
+{
+ toString: function()
+ {
+ return this.href+"@"+(this.line || '?');
+ },
+
+ toJSON: function() // until 3.1...
+ {
+ return "{\"href\":\""+this.href+"\", "+
+ (this.line?("\"line\":"+this.line+","):"")+
+ (this.type?(" \"type\":\""+this.type+"\","):"")+
+ "}";
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return {
+ SourceLink: SourceLink
+};
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/js/stackFrame.js b/content/firebug/js/stackFrame.js
index d23f11f..403bbf9 100644
--- a/content/firebug/js/stackFrame.js
+++ b/content/firebug/js/stackFrame.js
@@ -1,738 +1,738 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/url",
- "firebug/lib/locale",
- "firebug/lib/wrapper",
- "firebug/js/sourceLink",
- "firebug/lib/deprecated",
- "firebug/lib/options",
-],
-function (FBTrace, Url, Locale, Wrapper, SourceLink, Deprecated, Options) {
-
-// ********************************************************************************************* //
-// Constants
-
-// ********************************************************************************************* //
-// Implementation
-
-var StackFrame = {};
-
-StackFrame.getStackTrace = Deprecated.deprecated("name change for self-documentation",
- StackFrame.getCorrectedStackTrace);
-
-/**
- * Converts a Mozilla stack frame to a frameXB
- */
-StackFrame.getCorrectedStackTrace = function(frame, context)
-{
- var trace = null;
- try
- {
- trace = new StackFrame.StackTrace();
- var newestFrame = null;
- var nextOlderFrame = null;
- for (; frame && frame.isValid; frame = frame.callingFrame)
- {
- var skip = Options.get("filterSystemURLs") &&
- Url.isSystemURL(Url.normalizeURL(frame.script.fileName));
- if (!skip)
- {
- var stackFrame = StackFrame.getStackFrame(frame, context, newestFrame);
- if (stackFrame)
- {
- if (!newestFrame)
- newestFrame = stackFrame;
-
- if (context.currentFrame && context.currentFrame === frame)
- trace.currentFrameIndex = trace.length;
-
- stackFrame.setCallingFrame(nextOlderFrame, trace.frames.length);
- nextOlderFrame = stackFrame;
- trace.frames.push(stackFrame);
- }
- }
- else
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("lib.getCorrectedStackTrace isSystemURL frame.script.fileName "+
- frame.script.fileName+"\n");
- }
- }
-
- if (trace.frames.length > 100) // TODO in the loop above
- {
- var originalLength = trace.frames.length;
- trace.frames.splice(50, originalLength - 100, null);
- var excuse = "(eliding "+(originalLength - 100)+" frames)";
-
- trace.frames[50] = new StackFrame.StackFrame({href: excuse}, 0, excuse,
- [], null, null, context, newestFrame);
- }
-
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("getCorrectedStackTrace FAILS "+exc, exc);
- }
- return trace;
-};
-
-/*
- * Converts from Mozilla stack frame to frameXB
- */
-StackFrame.getStackFrame = function(frame, context, newestFrameXB)
-{
- if (frame.isNative || frame.isDebugger)
- {
- var excuse = (frame.isNative) ? "(native)" : "(debugger)";
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("lib.getStackFrame "+excuse+" frame\n");
-
- return new StackFrame.StackFrame({href: excuse}, 0, excuse, [],
- null, null, context, newestFrameXB);
- }
- try
- {
- var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, frame.script);
- if (sourceFile)
- {
- var url = sourceFile.href;
- var analyzer = sourceFile.getScriptAnalyzer(frame.script);
-
- var lineNo = analyzer.getSourceLineFromFrame(context, frame);
- var fncSpec = analyzer.getFunctionDescription(frame.script, context, frame);
- if (!fncSpec.name || fncSpec.name === "anonymous")
- {
- fncSpec.name = StackFrame.guessFunctionName(url, frame.script.baseLineNumber, context);
- if (!fncSpec.name)
- fncSpec.name = "?";
- }
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("lib.getStackFrame "+fncSpec.name, {sourceFile: sourceFile,
- script: frame.script, fncSpec: fncSpec, analyzer: analyzer});
-
- return new StackFrame.StackFrame(sourceFile, lineNo, fncSpec.name, fncSpec.args, frame,
- frame.pc, sourceFile.context, newestFrameXB);
- }
- else
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("lib.getStackFrame NO sourceFile tag at file:"+frame.script.tag+
- "@"+frame.script.fileName, frame.script.functionSource);
-
- var script = frame.script;
- return new StackFrame.StackFrame({href: Url.normalizeURL(script.fileName)}, frame.line,
- script.functionName, [], frame, frame.pc, context, newestFrameXB);
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("getStackFrame fails: "+exc, exc);
- return null;
- }
-};
-
-// ********************************************************************************************* //
-// frameXB, cross-browser frame
-
-StackFrame.StackFrame = function(sourceFile, lineNo, functionName, args, nativeFrame, pc,
- context, newestFrame)
-{
- // Essential fields
- this.sourceFile = sourceFile;
- this.line = lineNo;
-
- var fn = StackFrame.getDisplayName(nativeFrame ? nativeFrame.scope : null);
- this.fn = fn || functionName; // cache?
-
- this.context = context;
-
- // the newest frame in the stack containing 'this' frame
- this.newestFrame = (newestFrame ? newestFrame : this);
-
- // optional
- this.args = args;
-
- // Derived from sourceFile
- this.href = sourceFile.href;
-
- // Mozilla
- this.nativeFrame = nativeFrame;
- this.pc = pc;
- this.script = nativeFrame ? nativeFrame.script : null; // TODO-XB
-};
-
-StackFrame.StackFrame.prototype =
-{
- getURL: function()
- {
- return this.href;
- },
-
- getCompilationUnit: function()
- {
- return this.context.getCompilationUnit(this.href);
- },
-
- getStackNewestFrame: function()
- {
- return this.newestFrame;
- },
-
- getFunctionName: function()
- {
- return this.fn;
- },
-
- toSourceLink: function()
- {
- return new SourceLink.SourceLink(this.sourceFile.href, this.line, "js");
- },
-
- toString: function()
- {
- return this.fn+", "+this.sourceFile.href+"@"+this.line;
- },
-
- setCallingFrame: function(caller, frameIndex)
- {
- this.callingFrame = caller;
- this.frameIndex = frameIndex;
- },
-
- getCallingFrame: function()
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("getCallingFrame "+this, this);
-
- if (!this.callingFrame && this.nativeFrame && this.nativeFrame.isValid)
- {
- var nativeCallingFrame = this.nativeFrame.callingFrame;
- if (nativeCallingFrame)
- this.callingFrame = StackFrame.getStackFrame(nativeCallingFrame, this.context,
- this.newestFrame);
- }
- return this.callingFrame;
- },
-
- getFrameIndex: function()
- {
- return this.frameIndex;
- },
-
- getLineNumber: function()
- {
- return this.line;
- },
-
- destroy: function()
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("StackFrame destroyed:"+this.uid+"\n");
-
- this.script = null;
- this.nativeFrame = null;
- this.context = null;
- },
-
- signature: function()
- {
- return this.script.tag + "." + this.pc;
- },
-
- getThisValue: function()
- {
- if (this.nativeFrame && !this.thisVar)
- this.thisVar = Wrapper.unwrapIValue(this.nativeFrame.thisValue, Firebug.viewChrome);
- return this.thisVar;
- },
-
- getScopes: function(viewChrome)
- {
- if (this.nativeFrame && !this.scope)
- this.scope = this.generateScopeChain(this.nativeFrame.scope, viewChrome);
- return this.scope;
- },
-
- clearScopes: function(viewChrome)
- {
- // Clears cached scope chain, so that it regenerates the next time
- // getScopes() is executed.
- this.scope = null;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Private
-
- generateScopeChain: function (scope, viewChrome)
- {
- var ret = [];
- while (scope)
- {
- var scopeVars;
-
- // getWrappedValue will not contain any variables for closure
- // scopes, so we want to special case this to get all variables
- // in all cases.
- if (scope.jsClassName == "Call")
- {
- scopeVars = Wrapper.unwrapIValueObject(scope, viewChrome);
- scopeVars.toString = function() { return Locale.$STR("Closure Scope"); };
- }
- else if (scope.jsClassName == "Block")
- {
- scopeVars = Wrapper.unwrapIValueObject(scope, viewChrome);
- scopeVars.toString = function() { return Locale.$STR("Block Scope"); };
- }
- else
- {
- scopeVars = Wrapper.unwrapIValue(scope, Firebug.viewChrome);
- if (!scopeVars || !scopeVars.hasOwnProperty)
- {
- // XXXsimon not sure if this ever happens
- // do not trace scopeVars, you will get a uncatchable exception
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("dom .generateScopeChain: bad scopeVars for " +
- "scope.jsClassName:" + scope.jsClassName);
-
- scopeVars = {error: "Mozilla error: invalid scope variables"};
- }
- }
-
- if (scopeVars)
- ret.push(scopeVars);
-
- scope = scope.jsParent;
- }
-
- ret.toString = function()
- {
- return Locale.$STR("Scope Chain");
- };
-
- return ret;
- },
-};
-
-//-----------------------111111----222222-----33---444 1 All 'Not a (' followed by (; 2 All 'Not a )' followed by a ); 3 text between @ and : digits
-
-var reErrorStackLine = /^(.*)@(.*):(\d*)$/;
-var reErrorStackLine2 = /^([^\(]*)\((.*)\)$/;
-
-StackFrame.parseToStackFrame = function(line, context) // function name (arg, arg, arg)@fileName:lineNo
-{
- var last255 = line.length - 255;
- if (last255 > 0)
- line = line.substr(last255); // avoid regexp on monster compressed source (issue 4135)
-
- var m = reErrorStackLine.exec(line);
- if (m)
- {
- var m2 = reErrorStackLine2.exec(m[1]);
- if (m2)
- {
- var params = m2[2].split(',');
- //FBTrace.sysout("parseToStackFrame",{line:line,paramStr:m2[2],params:params});
- //var params = JSON.parse("["+m2[2]+"]");
- return new StackFrame.StackFrame({href:m[2]}, m[3], m2[1], params, null, null, context);
- }
- else
- {
- // Firefox 14 removes arguments from <exception-object>.stack.toString()
- // That's why the m2 reg doesn't match
- // See: https://bugzilla.mozilla.org/show_bug.cgi?id=744842
- return new StackFrame.StackFrame({href:m[2]}, m[3], m[1], [], null, null, context);
- }
- }
-};
-
-StackFrame.parseToStackTrace = function(stack, context)
-{
- var lines = stack.split('\n');
- var trace = new StackFrame.StackTrace();
- for (var i = 0; i < lines.length; i++)
- {
- var frame = StackFrame.parseToStackFrame(lines[i],context);
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("parseToStackTrace i "+i+" line:"+lines[i]+ "->frame: "+frame, frame);
-
- if (frame)
- trace.frames.push(frame);
- }
- return trace;
-};
-
-StackFrame.cleanStackTraceOfFirebug = function(trace)
-{
- if (trace && trace.frames)
- {
- while (trace.frames.length && /^_[fF]irebug/.test(trace.frames[trace.frames.length - 1].fn))
- {
- trace.frames.pop();
- }
- if (trace.frames.length == 0)
- trace = undefined;
- }
- return trace;
-};
-
-StackFrame.getStackDump = function()
-{
- var lines = [];
- for (var frame = Components.stack; frame; frame = frame.caller)
- lines.push(frame.filename + " (" + frame.lineNumber + ")");
-
- return lines.join("\n");
-};
-
-StackFrame.getJSDStackDump = function(newestFrame)
-{
- var lines = [];
- for (var frame = newestFrame; frame; frame = frame.callingFrame)
- lines.push(frame.script.fileName + " (" + frame.line + ")");
-
- return lines.join("\n");
-};
-
-StackFrame.getStackSourceLink = function()
-{
- for (var frame = Components.stack; frame; frame = frame.caller)
- {
- if (frame.filename && frame.filename.indexOf("://firebug/") > 0)
- {
- for (; frame; frame = frame.caller)
- {
- var firebugComponent = "/modules/firebug-";
- if (frame.filename && frame.filename.indexOf("://firebug/") < 0 &&
- frame.filename.indexOf(firebugComponent) == -1)
- break;
- }
- break;
- }
- }
- return StackFrame.getFrameSourceLink(frame);
-};
-
-StackFrame.getFrameSourceLink = function(frame)
-{
- if (frame && frame.filename && frame.filename.indexOf("XPCSafeJSObjectWrapper") == -1)
- return new SourceLink.SourceLink(frame.filename, frame.lineNumber, "js");
- else
- return null;
-};
-
-// TODO delete this, it's unused
-StackFrame.getStackFrameId = function()
-{
- for (var frame = Components.stack; frame; frame = frame.caller)
- {
- if (frame.languageName == "JavaScript"
- && !(frame.filename && frame.filename.indexOf("://firebug/") > 0))
- {
- return frame.filename + "/" + frame.lineNumber;
- }
- }
- return null;
-};
-
-// ********************************************************************************************* //
-
-StackFrame.StackTrace = function(adoptFrames)
-{
- this.frames = adoptFrames || [];
-};
-
-StackFrame.StackTrace.prototype =
-{
- toString: function()
- {
- var trace = "<top>\n";
- for (var i = 0; i < this.frames.length; i++)
- {
- trace += "[" + i + "]"+ this.frames[i]+"\n";
- }
- trace += "<bottom>\n";
- return trace;
- },
-
- reverse: function()
- {
- this.frames.reverse();
- return this;
- },
-
- destroy: function()
- {
- for (var i = 0; i < this.frames.length; i++)
- this.frames[i].destroy();
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("lib.StackTrace destroy "+this.uid+"\n");
- },
-
- toSourceLink: function()
- {
- if (this.frames.length > 0)
- return this.frames[0];
- }
-};
-
-// ********************************************************************************************* //
-
-StackFrame.traceToString = function(trace)
-{
- var str = "<top>";
- for(var i = 0; i < trace.frames.length; i++)
- str += "\n" + trace.frames[i];
- str += "\n<bottom>";
- return str;
-};
-
-StackFrame.buildStackTrace = function(frame)
-{
- var trace = new StackFrame.StackTrace();
- while (frame)
- {
- trace.frames.push(frame);
- frame.frameIndex = trace.frames.length;
- frame = frame.getCallingFrame();
- }
-
- // Set the first frame (the one passed into this function) as the current one (issue 4249).
- if (trace.frames.length > 0)
- trace.currentFrameIndex = 1;
-
- return trace;
-};
-
-// ********************************************************************************************* //
-
-StackFrame.getFunctionName = function(script, context, frame, noArgs)
-{
- if (!script)
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("stackFrame.getFunctionName FAILS typeof(script)="+typeof(script)+"\n");
- return "(no script)";
- }
-
- var name = this.getDisplayName(frame ? frame.scope : null, script);
- if (name)
- return name;
-
- name = script.functionName;
- if (!name || (name == "anonymous"))
- {
- name = null;
- var analyzer = Firebug.SourceFile.getScriptAnalyzer(context, script);
- if (analyzer && frame)
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("getFunctionName analyzer.sourceFile:", analyzer.sourceFile);
-
- var functionSpec = analyzer.getFunctionDescription(script, context, frame);
- if (functionSpec.name)
- name = functionSpec.name + (noArgs ? "" : "("+functionSpec.args.join(',')+")");
- }
-
- if (!name || name == "anonymous")
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("getFunctionName no analyzer, "+script.baseLineNumber+"@"+
- script.fileName+"\n");
- name = StackFrame.guessFunctionName(Url.normalizeURL(script.fileName),
- script.baseLineNumber, context);
- }
- }
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("getFunctionName "+script.tag+" ="+name+"\n");
-
- return name;
-};
-
-StackFrame.getDisplayName = function(scope, script)
-{
- try
- {
- if (scope)
- {
- return Wrapper.unwrapIValue(scope).arguments.callee.displayName;
- }
- else if (script)
- {
- var fnObj = Wrapper.unwrapIValue(script.functionObject);
- return (fnObj && fnObj.displayName) ? fnObj.displayName : script.functionName;
- }
- }
- catch (err)
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("stackFrame.getDisplayName; EXCEPTION " + err, err);
- }
-};
-
-StackFrame.guessFunctionName = function(url, lineNo, context)
-{
- if (context)
- {
- if (context.sourceCache)
- return StackFrame.guessFunctionNameFromLines(url, lineNo, context.sourceCache);
- }
- return "? in "+Url.getFileName(url)+"@"+lineNo;
-};
-
-var reGuessFunction = /['"]?([$0-9A-Za-z_]+)['"]?\s*[:=]\s*(function|eval|new Function)/;
-var reFunctionArgNames = /function ([^(]*)\(([^)]*)\)/;
-StackFrame.guessFunctionNameFromLines = function(url, lineNo, sourceCache)
-{
- // Walk backwards from the first line in the function until we find the line which
- // matches the pattern above, which is the function definition
- var line = "";
- if (FBTrace.DBG_FUNCTION_NAMES)
- FBTrace.sysout("getFunctionNameFromLines for line at URL=" + lineNo + "@" + url);
-
- for (var i=0; i<4; ++i)
- {
- line = sourceCache.getLine(url, lineNo-i) + line;
- if (line != undefined)
- {
- var m = reGuessFunction.exec(line);
- if (m)
- {
- return m[1];
- }
- else
- {
- if (FBTrace.DBG_FUNCTION_NAMES)
- {
- FBTrace.sysout("lib.guessFunctionName re failed for lineNo-i=" + lineNo +
- "-" + i + " line=" + line);
- }
- }
-
- m = reFunctionArgNames.exec(line);
- if (m && m[1])
- return m[1];
- }
- }
-
- return "(?)";
-};
-
-StackFrame.guessFunctionArgNamesFromSource = function(source)
-{
- // XXXsimon: This fails with ES6 destructuring and parentheses in default parameters.
- // We'd need a proper JavaScript parser for that.
- var m = /[^\(]*\(([^\)]*)\)/.exec(source);
- if (!m)
- return null;
- var args = m[1].split(",");
- for (var i = 0; i < args.length; i++)
- {
- var arg = args[i];
- if (arg.indexOf("=") !== -1)
- arg = arg.substr(0, arg.indexOf("="));
- arg = arg.trim();
- if (!/^[a-zA-Z$_][a-zA-Z$_0-9]*$/.test(arg))
- return null;
- args[i] = arg;
- }
- return args;
-};
-
-// Mozilla
-StackFrame.getFunctionArgValues = function(frame)
-{
- var values = (frame.isValid && frame.scope.jsClassName == "Call") ?
- StackFrame.getArgumentsFromCallScope(frame) :
- StackFrame.getArgumentsFromObjectScope(frame);
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("stackFrame.getFunctionArgValues "+frame+" scope: "+frame.scope.jsClassName,
- {values: values});
-
- return values;
-};
-
-// Mozilla
-StackFrame.getArgumentsFromObjectScope = function(frame)
-{
- var argNames = frame.script.getParameterNames();
- var scope = Wrapper.unwrapIValue(frame.scope, Firebug.viewChrome);
-
- var values = [];
-
- for (var i = 0; i < argNames.length; ++i)
- {
- var argName = argNames[i];
- if (scope)
- {
- var pvalue = scope[argName];
- //?? XXXjjb why are we unwrapping here, scope is a normal object
- //var value = pvalue ? Wrapper.unwrapIValue(pvalue.value) : undefined;
- values.push({name: argName, value: pvalue});
- }
- else
- {
- values.push({name: argName});
- }
- }
-
- return values;
-};
-
-StackFrame.getArgumentsFromCallScope = function(frame)
-{
- var argNames = frame.script.getParameterNames();
- var scope = frame.scope;
- var values = [];
- for (var i = 0; i < argNames.length; ++i)
- {
- var argName = argNames[i];
- var pvalue = scope.getProperty(argName); // jsdIValue in jsdIDebuggerService
- var value = pvalue ? Wrapper.unwrapIValue(pvalue.value, Firebug.viewChrome) : undefined;
- values.push({name: argName, value: value});
- }
-
- return values;
-};
-
-// ********************************************************************************************* //
-
-var saveShowStackTrace;
-
-/**
- * use in the try{} around a call to getInterface to prevent fbs from generating stack traces
- */
-StackFrame.suspendShowStackTrace = function()
-{
- saveShowStackTrace = Firebug.showStackTrace;
- Firebug.showStackTrace = false;
-};
-
-/**
- * use in the finally{} to undo the suspendShowStackTrace
- */
-StackFrame.resumeShowStackTrace = function()
-{
- if (saveShowStackTrace)
- {
- Firebug.showStackTrace = saveShowStackTrace;
- saveShowStackTrace = null;
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return StackFrame;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/url",
+ "firebug/lib/locale",
+ "firebug/lib/wrapper",
+ "firebug/js/sourceLink",
+ "firebug/lib/deprecated",
+ "firebug/lib/options",
+],
+function (FBTrace, Url, Locale, Wrapper, SourceLink, Deprecated, Options) {
+
+// ********************************************************************************************* //
+// Constants
+
+// ********************************************************************************************* //
+// Implementation
+
+var StackFrame = {};
+
+StackFrame.getStackTrace = Deprecated.deprecated("name change for self-documentation",
+ StackFrame.getCorrectedStackTrace);
+
+/**
+ * Converts a Mozilla stack frame to a frameXB
+ */
+StackFrame.getCorrectedStackTrace = function(frame, context)
+{
+ var trace = null;
+ try
+ {
+ trace = new StackFrame.StackTrace();
+ var newestFrame = null;
+ var nextOlderFrame = null;
+ for (; frame && frame.isValid; frame = frame.callingFrame)
+ {
+ var skip = Options.get("filterSystemURLs") &&
+ Url.isSystemURL(Url.normalizeURL(frame.script.fileName));
+ if (!skip)
+ {
+ var stackFrame = StackFrame.getStackFrame(frame, context, newestFrame);
+ if (stackFrame)
+ {
+ if (!newestFrame)
+ newestFrame = stackFrame;
+
+ if (context.currentFrame && context.currentFrame === frame)
+ trace.currentFrameIndex = trace.length;
+
+ stackFrame.setCallingFrame(nextOlderFrame, trace.frames.length);
+ nextOlderFrame = stackFrame;
+ trace.frames.push(stackFrame);
+ }
+ }
+ else
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("lib.getCorrectedStackTrace isSystemURL frame.script.fileName "+
+ frame.script.fileName+"\n");
+ }
+ }
+
+ if (trace.frames.length > 100) // TODO in the loop above
+ {
+ var originalLength = trace.frames.length;
+ trace.frames.splice(50, originalLength - 100, null);
+ var excuse = "(eliding "+(originalLength - 100)+" frames)";
+
+ trace.frames[50] = new StackFrame.StackFrame({href: excuse}, 0, excuse,
+ [], null, null, context, newestFrame);
+ }
+
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("getCorrectedStackTrace FAILS "+exc, exc);
+ }
+ return trace;
+};
+
+/*
+ * Converts from Mozilla stack frame to frameXB
+ */
+StackFrame.getStackFrame = function(frame, context, newestFrameXB)
+{
+ if (frame.isNative || frame.isDebugger)
+ {
+ var excuse = (frame.isNative) ? "(native)" : "(debugger)";
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("lib.getStackFrame "+excuse+" frame\n");
+
+ return new StackFrame.StackFrame({href: excuse}, 0, excuse, [],
+ null, null, context, newestFrameXB);
+ }
+ try
+ {
+ var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, frame.script);
+ if (sourceFile)
+ {
+ var url = sourceFile.href;
+ var analyzer = sourceFile.getScriptAnalyzer(frame.script);
+
+ var lineNo = analyzer.getSourceLineFromFrame(context, frame);
+ var fncSpec = analyzer.getFunctionDescription(frame.script, context, frame);
+ if (!fncSpec.name || fncSpec.name === "anonymous")
+ {
+ fncSpec.name = StackFrame.guessFunctionName(url, frame.script.baseLineNumber, context);
+ if (!fncSpec.name)
+ fncSpec.name = "?";
+ }
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("lib.getStackFrame "+fncSpec.name, {sourceFile: sourceFile,
+ script: frame.script, fncSpec: fncSpec, analyzer: analyzer});
+
+ return new StackFrame.StackFrame(sourceFile, lineNo, fncSpec.name, fncSpec.args, frame,
+ frame.pc, sourceFile.context, newestFrameXB);
+ }
+ else
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("lib.getStackFrame NO sourceFile tag at file:"+frame.script.tag+
+ "@"+frame.script.fileName, frame.script.functionSource);
+
+ var script = frame.script;
+ return new StackFrame.StackFrame({href: Url.normalizeURL(script.fileName)}, frame.line,
+ script.functionName, [], frame, frame.pc, context, newestFrameXB);
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("getStackFrame fails: "+exc, exc);
+ return null;
+ }
+};
+
+// ********************************************************************************************* //
+// frameXB, cross-browser frame
+
+StackFrame.StackFrame = function(sourceFile, lineNo, functionName, args, nativeFrame, pc,
+ context, newestFrame)
+{
+ // Essential fields
+ this.sourceFile = sourceFile;
+ this.line = lineNo;
+
+ var fn = StackFrame.getDisplayName(nativeFrame ? nativeFrame.scope : null);
+ this.fn = fn || functionName; // cache?
+
+ this.context = context;
+
+ // the newest frame in the stack containing 'this' frame
+ this.newestFrame = (newestFrame ? newestFrame : this);
+
+ // optional
+ this.args = args;
+
+ // Derived from sourceFile
+ this.href = sourceFile.href;
+
+ // Mozilla
+ this.nativeFrame = nativeFrame;
+ this.pc = pc;
+ this.script = nativeFrame ? nativeFrame.script : null; // TODO-XB
+};
+
+StackFrame.StackFrame.prototype =
+{
+ getURL: function()
+ {
+ return this.href;
+ },
+
+ getCompilationUnit: function()
+ {
+ return this.context.getCompilationUnit(this.href);
+ },
+
+ getStackNewestFrame: function()
+ {
+ return this.newestFrame;
+ },
+
+ getFunctionName: function()
+ {
+ return this.fn;
+ },
+
+ toSourceLink: function()
+ {
+ return new SourceLink.SourceLink(this.sourceFile.href, this.line, "js");
+ },
+
+ toString: function()
+ {
+ return this.fn+", "+this.sourceFile.href+"@"+this.line;
+ },
+
+ setCallingFrame: function(caller, frameIndex)
+ {
+ this.callingFrame = caller;
+ this.frameIndex = frameIndex;
+ },
+
+ getCallingFrame: function()
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("getCallingFrame "+this, this);
+
+ if (!this.callingFrame && this.nativeFrame && this.nativeFrame.isValid)
+ {
+ var nativeCallingFrame = this.nativeFrame.callingFrame;
+ if (nativeCallingFrame)
+ this.callingFrame = StackFrame.getStackFrame(nativeCallingFrame, this.context,
+ this.newestFrame);
+ }
+ return this.callingFrame;
+ },
+
+ getFrameIndex: function()
+ {
+ return this.frameIndex;
+ },
+
+ getLineNumber: function()
+ {
+ return this.line;
+ },
+
+ destroy: function()
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("StackFrame destroyed:"+this.uid+"\n");
+
+ this.script = null;
+ this.nativeFrame = null;
+ this.context = null;
+ },
+
+ signature: function()
+ {
+ return this.script.tag + "." + this.pc;
+ },
+
+ getThisValue: function()
+ {
+ if (this.nativeFrame && !this.thisVar)
+ this.thisVar = Wrapper.unwrapIValue(this.nativeFrame.thisValue, Firebug.viewChrome);
+ return this.thisVar;
+ },
+
+ getScopes: function(viewChrome)
+ {
+ if (this.nativeFrame && !this.scope)
+ this.scope = this.generateScopeChain(this.nativeFrame.scope, viewChrome);
+ return this.scope;
+ },
+
+ clearScopes: function(viewChrome)
+ {
+ // Clears cached scope chain, so that it regenerates the next time
+ // getScopes() is executed.
+ this.scope = null;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Private
+
+ generateScopeChain: function (scope, viewChrome)
+ {
+ var ret = [];
+ while (scope)
+ {
+ var scopeVars;
+
+ // getWrappedValue will not contain any variables for closure
+ // scopes, so we want to special case this to get all variables
+ // in all cases.
+ if (scope.jsClassName == "Call")
+ {
+ scopeVars = Wrapper.unwrapIValueObject(scope, viewChrome);
+ scopeVars.toString = function() { return Locale.$STR("Closure Scope"); };
+ }
+ else if (scope.jsClassName == "Block")
+ {
+ scopeVars = Wrapper.unwrapIValueObject(scope, viewChrome);
+ scopeVars.toString = function() { return Locale.$STR("Block Scope"); };
+ }
+ else
+ {
+ scopeVars = Wrapper.unwrapIValue(scope, Firebug.viewChrome);
+ if (!scopeVars || !scopeVars.hasOwnProperty)
+ {
+ // XXXsimon not sure if this ever happens
+ // do not trace scopeVars, you will get a uncatchable exception
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("dom .generateScopeChain: bad scopeVars for " +
+ "scope.jsClassName:" + scope.jsClassName);
+
+ scopeVars = {error: "Mozilla error: invalid scope variables"};
+ }
+ }
+
+ if (scopeVars)
+ ret.push(scopeVars);
+
+ scope = scope.jsParent;
+ }
+
+ ret.toString = function()
+ {
+ return Locale.$STR("Scope Chain");
+ };
+
+ return ret;
+ },
+};
+
+//-----------------------111111----222222-----33---444 1 All 'Not a (' followed by (; 2 All 'Not a )' followed by a ); 3 text between @ and : digits
+
+var reErrorStackLine = /^(.*)@(.*):(\d*)$/;
+var reErrorStackLine2 = /^([^\(]*)\((.*)\)$/;
+
+StackFrame.parseToStackFrame = function(line, context) // function name (arg, arg, arg)@fileName:lineNo
+{
+ var last255 = line.length - 255;
+ if (last255 > 0)
+ line = line.substr(last255); // avoid regexp on monster compressed source (issue 4135)
+
+ var m = reErrorStackLine.exec(line);
+ if (m)
+ {
+ var m2 = reErrorStackLine2.exec(m[1]);
+ if (m2)
+ {
+ var params = m2[2].split(',');
+ //FBTrace.sysout("parseToStackFrame",{line:line,paramStr:m2[2],params:params});
+ //var params = JSON.parse("["+m2[2]+"]");
+ return new StackFrame.StackFrame({href:m[2]}, m[3], m2[1], params, null, null, context);
+ }
+ else
+ {
+ // Firefox 14 removes arguments from <exception-object>.stack.toString()
+ // That's why the m2 reg doesn't match
+ // See: https://bugzilla.mozilla.org/show_bug.cgi?id=744842
+ return new StackFrame.StackFrame({href:m[2]}, m[3], m[1], [], null, null, context);
+ }
+ }
+};
+
+StackFrame.parseToStackTrace = function(stack, context)
+{
+ var lines = stack.split('\n');
+ var trace = new StackFrame.StackTrace();
+ for (var i = 0; i < lines.length; i++)
+ {
+ var frame = StackFrame.parseToStackFrame(lines[i],context);
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("parseToStackTrace i "+i+" line:"+lines[i]+ "->frame: "+frame, frame);
+
+ if (frame)
+ trace.frames.push(frame);
+ }
+ return trace;
+};
+
+StackFrame.cleanStackTraceOfFirebug = function(trace)
+{
+ if (trace && trace.frames)
+ {
+ while (trace.frames.length && /^_[fF]irebug/.test(trace.frames[trace.frames.length - 1].fn))
+ {
+ trace.frames.pop();
+ }
+ if (trace.frames.length == 0)
+ trace = undefined;
+ }
+ return trace;
+};
+
+StackFrame.getStackDump = function()
+{
+ var lines = [];
+ for (var frame = Components.stack; frame; frame = frame.caller)
+ lines.push(frame.filename + " (" + frame.lineNumber + ")");
+
+ return lines.join("\n");
+};
+
+StackFrame.getJSDStackDump = function(newestFrame)
+{
+ var lines = [];
+ for (var frame = newestFrame; frame; frame = frame.callingFrame)
+ lines.push(frame.script.fileName + " (" + frame.line + ")");
+
+ return lines.join("\n");
+};
+
+StackFrame.getStackSourceLink = function()
+{
+ for (var frame = Components.stack; frame; frame = frame.caller)
+ {
+ if (frame.filename && frame.filename.indexOf("://firebug/") > 0)
+ {
+ for (; frame; frame = frame.caller)
+ {
+ var firebugComponent = "/modules/firebug-";
+ if (frame.filename && frame.filename.indexOf("://firebug/") < 0 &&
+ frame.filename.indexOf(firebugComponent) == -1)
+ break;
+ }
+ break;
+ }
+ }
+ return StackFrame.getFrameSourceLink(frame);
+};
+
+StackFrame.getFrameSourceLink = function(frame)
+{
+ if (frame && frame.filename && frame.filename.indexOf("XPCSafeJSObjectWrapper") == -1)
+ return new SourceLink.SourceLink(frame.filename, frame.lineNumber, "js");
+ else
+ return null;
+};
+
+// TODO delete this, it's unused
+StackFrame.getStackFrameId = function()
+{
+ for (var frame = Components.stack; frame; frame = frame.caller)
+ {
+ if (frame.languageName == "JavaScript"
+ && !(frame.filename && frame.filename.indexOf("://firebug/") > 0))
+ {
+ return frame.filename + "/" + frame.lineNumber;
+ }
+ }
+ return null;
+};
+
+// ********************************************************************************************* //
+
+StackFrame.StackTrace = function(adoptFrames)
+{
+ this.frames = adoptFrames || [];
+};
+
+StackFrame.StackTrace.prototype =
+{
+ toString: function()
+ {
+ var trace = "<top>\n";
+ for (var i = 0; i < this.frames.length; i++)
+ {
+ trace += "[" + i + "]"+ this.frames[i]+"\n";
+ }
+ trace += "<bottom>\n";
+ return trace;
+ },
+
+ reverse: function()
+ {
+ this.frames.reverse();
+ return this;
+ },
+
+ destroy: function()
+ {
+ for (var i = 0; i < this.frames.length; i++)
+ this.frames[i].destroy();
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("lib.StackTrace destroy "+this.uid+"\n");
+ },
+
+ toSourceLink: function()
+ {
+ if (this.frames.length > 0)
+ return this.frames[0];
+ }
+};
+
+// ********************************************************************************************* //
+
+StackFrame.traceToString = function(trace)
+{
+ var str = "<top>";
+ for(var i = 0; i < trace.frames.length; i++)
+ str += "\n" + trace.frames[i];
+ str += "\n<bottom>";
+ return str;
+};
+
+StackFrame.buildStackTrace = function(frame)
+{
+ var trace = new StackFrame.StackTrace();
+ while (frame)
+ {
+ trace.frames.push(frame);
+ frame.frameIndex = trace.frames.length;
+ frame = frame.getCallingFrame();
+ }
+
+ // Set the first frame (the one passed into this function) as the current one (issue 4249).
+ if (trace.frames.length > 0)
+ trace.currentFrameIndex = 1;
+
+ return trace;
+};
+
+// ********************************************************************************************* //
+
+StackFrame.getFunctionName = function(script, context, frame, noArgs)
+{
+ if (!script)
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("stackFrame.getFunctionName FAILS typeof(script)="+typeof(script)+"\n");
+ return "(no script)";
+ }
+
+ var name = this.getDisplayName(frame ? frame.scope : null, script);
+ if (name)
+ return name;
+
+ name = script.functionName;
+ if (!name || (name == "anonymous"))
+ {
+ name = null;
+ var analyzer = Firebug.SourceFile.getScriptAnalyzer(context, script);
+ if (analyzer && frame)
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("getFunctionName analyzer.sourceFile:", analyzer.sourceFile);
+
+ var functionSpec = analyzer.getFunctionDescription(script, context, frame);
+ if (functionSpec.name)
+ name = functionSpec.name + (noArgs ? "" : "("+functionSpec.args.join(',')+")");
+ }
+
+ if (!name || name == "anonymous")
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("getFunctionName no analyzer, "+script.baseLineNumber+"@"+
+ script.fileName+"\n");
+ name = StackFrame.guessFunctionName(Url.normalizeURL(script.fileName),
+ script.baseLineNumber, context);
+ }
+ }
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("getFunctionName "+script.tag+" ="+name+"\n");
+
+ return name;
+};
+
+StackFrame.getDisplayName = function(scope, script)
+{
+ try
+ {
+ if (scope)
+ {
+ return Wrapper.unwrapIValue(scope).arguments.callee.displayName;
+ }
+ else if (script)
+ {
+ var fnObj = Wrapper.unwrapIValue(script.functionObject);
+ return (fnObj && fnObj.displayName) ? fnObj.displayName : script.functionName;
+ }
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("stackFrame.getDisplayName; EXCEPTION " + err, err);
+ }
+};
+
+StackFrame.guessFunctionName = function(url, lineNo, context)
+{
+ if (context)
+ {
+ if (context.sourceCache)
+ return StackFrame.guessFunctionNameFromLines(url, lineNo, context.sourceCache);
+ }
+ return "? in "+Url.getFileName(url)+"@"+lineNo;
+};
+
+var reGuessFunction = /['"]?([$0-9A-Za-z_]+)['"]?\s*[:=]\s*(function|eval|new Function)/;
+var reFunctionArgNames = /function ([^(]*)\(([^)]*)\)/;
+StackFrame.guessFunctionNameFromLines = function(url, lineNo, sourceCache)
+{
+ // Walk backwards from the first line in the function until we find the line which
+ // matches the pattern above, which is the function definition
+ var line = "";
+ if (FBTrace.DBG_FUNCTION_NAMES)
+ FBTrace.sysout("getFunctionNameFromLines for line at URL=" + lineNo + "@" + url);
+
+ for (var i=0; i<4; ++i)
+ {
+ line = sourceCache.getLine(url, lineNo-i) + line;
+ if (line != undefined)
+ {
+ var m = reGuessFunction.exec(line);
+ if (m)
+ {
+ return m[1];
+ }
+ else
+ {
+ if (FBTrace.DBG_FUNCTION_NAMES)
+ {
+ FBTrace.sysout("lib.guessFunctionName re failed for lineNo-i=" + lineNo +
+ "-" + i + " line=" + line);
+ }
+ }
+
+ m = reFunctionArgNames.exec(line);
+ if (m && m[1])
+ return m[1];
+ }
+ }
+
+ return "(?)";
+};
+
+StackFrame.guessFunctionArgNamesFromSource = function(source)
+{
+ // XXXsimon: This fails with ES6 destructuring and parentheses in default parameters.
+ // We'd need a proper JavaScript parser for that.
+ var m = /[^\(]*\(([^\)]*)\)/.exec(source);
+ if (!m)
+ return null;
+ var args = m[1].split(",");
+ for (var i = 0; i < args.length; i++)
+ {
+ var arg = args[i];
+ if (arg.indexOf("=") !== -1)
+ arg = arg.substr(0, arg.indexOf("="));
+ arg = arg.trim();
+ if (!/^[a-zA-Z$_][a-zA-Z$_0-9]*$/.test(arg))
+ return null;
+ args[i] = arg;
+ }
+ return args;
+};
+
+// Mozilla
+StackFrame.getFunctionArgValues = function(frame)
+{
+ var values = (frame.isValid && frame.scope.jsClassName == "Call") ?
+ StackFrame.getArgumentsFromCallScope(frame) :
+ StackFrame.getArgumentsFromObjectScope(frame);
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("stackFrame.getFunctionArgValues "+frame+" scope: "+frame.scope.jsClassName,
+ {values: values});
+
+ return values;
+};
+
+// Mozilla
+StackFrame.getArgumentsFromObjectScope = function(frame)
+{
+ var argNames = frame.script.getParameterNames();
+ var scope = Wrapper.unwrapIValue(frame.scope, Firebug.viewChrome);
+
+ var values = [];
+
+ for (var i = 0; i < argNames.length; ++i)
+ {
+ var argName = argNames[i];
+ if (scope)
+ {
+ var pvalue = scope[argName];
+ //?? XXXjjb why are we unwrapping here, scope is a normal object
+ //var value = pvalue ? Wrapper.unwrapIValue(pvalue.value) : undefined;
+ values.push({name: argName, value: pvalue});
+ }
+ else
+ {
+ values.push({name: argName});
+ }
+ }
+
+ return values;
+};
+
+StackFrame.getArgumentsFromCallScope = function(frame)
+{
+ var argNames = frame.script.getParameterNames();
+ var scope = frame.scope;
+ var values = [];
+ for (var i = 0; i < argNames.length; ++i)
+ {
+ var argName = argNames[i];
+ var pvalue = scope.getProperty(argName); // jsdIValue in jsdIDebuggerService
+ var value = pvalue ? Wrapper.unwrapIValue(pvalue.value, Firebug.viewChrome) : undefined;
+ values.push({name: argName, value: value});
+ }
+
+ return values;
+};
+
+// ********************************************************************************************* //
+
+var saveShowStackTrace;
+
+/**
+ * use in the try{} around a call to getInterface to prevent fbs from generating stack traces
+ */
+StackFrame.suspendShowStackTrace = function()
+{
+ saveShowStackTrace = Firebug.showStackTrace;
+ Firebug.showStackTrace = false;
+};
+
+/**
+ * use in the finally{} to undo the suspendShowStackTrace
+ */
+StackFrame.resumeShowStackTrace = function()
+{
+ if (saveShowStackTrace)
+ {
+ Firebug.showStackTrace = saveShowStackTrace;
+ saveShowStackTrace = null;
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return StackFrame;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/js/tabCache.js b/content/firebug/js/tabCache.js
index 4145afc..c4c4005 100644
--- a/content/firebug/js/tabCache.js
+++ b/content/firebug/js/tabCache.js
@@ -1,634 +1,634 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/xpcom",
- "firebug/net/requestObserver",
- "firebug/net/responseObserver",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/url",
- "firebug/lib/http",
- "firebug/lib/string",
- "firebug/chrome/window",
- "firebug/net/jsonViewer",
- "firebug/trace/traceModule",
- "firebug/trace/traceListener",
- "firebug/js/sourceCache"
-],
-function(Obj, Firebug, Xpcom, HttpRequestObserver, HttpResponseObserver, Locale, Events,
- Url, Http, Str, Win, JSONViewerModel, TraceModule, TraceListener) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
-
-// Maximum cached size of a single response (bytes)
-var responseSizeLimit = 1024 * 1024 * 5;
-
-// List of text content types. These content-types are cached.
-var contentTypes =
-{
- "text/plain": 1,
- "text/html": 1,
- "text/xml": 1,
- "text/xsl": 1,
- "text/xul": 1,
- "text/css": 1,
- "text/sgml": 1,
- "text/rtf": 1,
- "text/x-setext": 1,
- "text/richtext": 1,
- "text/javascript": 1,
- "text/jscript": 1,
- "text/tab-separated-values": 1,
- "text/rdf": 1,
- "text/xif": 1,
- "text/ecmascript": 1,
- "text/vnd.curl": 1,
- "text/x-json": 1,
- "text/x-js": 1,
- "text/js": 1,
- "text/vbscript": 1,
- "view-source": 1,
- "view-fragment": 1,
- "application/xml": 1,
- "application/xhtml+xml": 1,
- "application/atom+xml": 1,
- "application/rss+xml": 1,
- "application/mathml+xml": 1,
- "application/rdf+xml": 1,
- "application/vnd.mozilla.maybe.feed": 1,
- "application/vnd.mozilla.xul+xml": 1,
- "application/javascript": 1,
- "application/x-javascript": 1,
- "application/x-httpd-php": 1,
- "application/rdf+xml": 1,
- "application/ecmascript": 1,
- "application/http-index-format": 1,
- "application/json": 1,
- "application/x-js": 1,
- "multipart/mixed" : 1,
- "multipart/x-mixed-replace" : 1,
- "image/svg+xml" : 1
-};
-
-// ********************************************************************************************* //
-// Model implementation
-
-/**
- * Implementation of cache model. The only purpose of this object is to register an HTTP
- * observer, so that HTTP communication can be intercepted and all incoming data stored
- * within a cache.
- */
-Firebug.TabCacheModel = Obj.extend(Firebug.ActivableModule,
-{
- dispatchName: "tabCache",
- contentTypes: contentTypes,
- fbListeners: [],
-
- initialize: function()
- {
- Firebug.ActivableModule.initialize.apply(this, arguments);
-
- this.traceListener = new TraceListener("tabCache.", "DBG_CACHE", false);
- TraceModule.addListener(this.traceListener);
- },
-
- initializeUI: function(owner)
- {
- Firebug.ActivableModule.initializeUI.apply(this, arguments);
-
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.initializeUI;");
-
- // Read maximum size limit for cached response from preferences.
- responseSizeLimit = Firebug.Options.get("cache.responseLimit");
-
- // Read additional text MIME types from preferences.
- var mimeTypes = Firebug.Options.get("cache.mimeTypes");
- if (mimeTypes)
- {
- var list = mimeTypes.split(" ");
- for (var i=0; i<list.length; i++)
- contentTypes[list[i]] = 1;
- }
-
- // Merge with JSON types
- var jsonTypes = JSONViewerModel.contentTypes;
- for (var p in jsonTypes)
- contentTypes[p] = 1;
- },
-
- onObserverChange: function(observer)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.onObserverChange; hasObservers: " + this.hasObservers());
-
- // If Firebug is in action, we need to test to see if we need to addObserver
- if (!Firebug.getSuspended())
- this.onResumeFirebug();
- },
-
- onResumeFirebug: function()
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.onResumeFirebug; hasObsevers: " + this.hasObservers());
-
- if (this.hasObservers() && !this.observing)
- {
- HttpRequestObserver.addObserver(this, "firebug-http-event", false);
- this.observing = true;
- }
- },
-
- onSuspendFirebug: function()
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.onSuspendFirebug; hasObsevers: " + this.hasObservers());
-
- if (this.observing)
- {
- HttpRequestObserver.removeObserver(this, "firebug-http-event");
- this.observing = false;
- }
- },
-
- shutdown: function()
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.shutdown; Cache model destroyed.");
-
- TraceModule.removeListener(this.traceListener);
-
- if (this.observing)
- HttpRequestObserver.removeObserver(this, "firebug-http-event");
- },
-
- initContext: function(context)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.initContext for: " + context.getName());
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // nsIObserver
-
- observe: function(subject, topic, data)
- {
- try
- {
- if (!(subject instanceof Ci.nsIHttpChannel))
- return;
-
- // XXXjjb this same code is in net.js, better to have it only once
- var win = Http.getWindowForRequest(subject);
- if (!win)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.observe; " + topic + ", NO WINDOW");
- return;
- }
-
- if (topic == "http-on-modify-request")
- this.onModifyRequest(subject, win);
- else if (topic == "http-on-examine-response")
- this.onExamineResponse(subject, win);
- else if (topic == "http-on-examine-cached-response")
- this.onCachedResponse(subject, win);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("tabCache.observe EXCEPTION", err);
- }
- },
-
- onModifyRequest: function(request, win)
- {
- },
-
- onExamineResponse: function(request, win)
- {
- this.registerStreamListener(request, win);
- },
-
- onCachedResponse: function(request, win)
- {
- this.registerStreamListener(request, win);
- },
-
- registerStreamListener: function(request, win, forceRegister)
- {
- if (Firebug.getSuspended() && !forceRegister)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.registerStreamListener; DO NOT TRACK, " +
- "Firebug suspended for: " + Http.safeGetRequestName(request));
- return;
- }
-
- if (!this.hasObservers())
- return;
-
- try
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.registerStreamListener; " +
- Http.safeGetRequestName(request));
-
- HttpResponseObserver.register(win, request, new ChannelListenerProxy(win));
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("tabCache.Register Traceable Listener EXCEPTION", err);
- }
- },
-
- shouldCacheRequest: function(request)
- {
- if (!(request instanceof Ci.nsIHttpChannel))
- return;
-
- // Allow to customize caching rules.
- if (Events.dispatch2(this.fbListeners, "shouldCacheRequest", [request]))
- return true;
-
- // Cache only text responses for now.
- var contentType = request.contentType;
- if (contentType)
- contentType = contentType.split(";")[0];
-
- contentType = Str.trim(contentType);
- if (contentTypes[contentType])
- return true;
-
- // Hack to work around application/octet-stream for js files (see issue 2063).
- // Let's cache all files with js extensions.
- var extension = Url.getFileExtension(Http.safeGetRequestName(request));
- if (extension == "js")
- return true;
-
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.shouldCacheRequest; Request not cached: " +
- request.contentType + ", " + Http.safeGetRequestName(request));
-
- return false;
- },
-});
-
-// ********************************************************************************************* //
-// Tab Cache
-
-/**
- * This cache object is intended to cache all responses made by a specific tab.
- * The implementation is based on nsITraceableChannel interface introduced in
- * Firefox 3.0.4. This interface allows to intercept all incoming HTTP data.
- *
- * This object replaces the SourceCache, which still exist only for backward
- * compatibility.
- *
- * The object is derived from SourceCache, so the same interface and most of the
- * implementation is used.
- */
-Firebug.TabCache = function(context)
-{
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.TabCache Created for: " + context.getName());
-
- Firebug.SourceCache.call(this, context);
-};
-
-Firebug.TabCache.prototype = Obj.extend(Firebug.SourceCache.prototype,
-{
- // Responses in progress
- responses: [],
-
- storePartialResponse: function(request, responseText, win, offset)
- {
- if (!offset)
- offset = 0;
-
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.storePartialResponse " + Http.safeGetRequestName(request),
- request.contentCharset);
-
- var url = Http.safeGetRequestName(request);
- var response = this.getResponse(request);
-
- // Skip any response data that we have received before (f ex when
- // response packets are repeated due to quirks in how authentication
- // requests are projected to the channel listener)
- var newRawSize = offset + responseText.length;
- var addRawBytes = newRawSize - response.rawSize;
-
- if (responseText.length > addRawBytes)
- responseText = responseText.substr(responseText.length - addRawBytes);
-
- try
- {
- responseText = Str.convertToUnicode(responseText, win.document.characterSet);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS || FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.storePartialResponse EXCEPTION " +
- Http.safeGetRequestName(request), err);
-
- // Even responses that are not converted are stored into the cache.
- // return false;
- }
-
- // Size of each response is limited.
- var limitNotReached = true;
- if (response.size + responseText.length >= responseSizeLimit)
- {
- limitNotReached = false;
- responseText = responseText.substr(0, responseSizeLimit - response.size);
- FBTrace.sysout("tabCache.storePartialResponse Max size limit reached for: " + url);
- }
-
- response.size += responseText.length;
- response.rawSize = newRawSize;
-
- // Store partial content into the cache.
- this.store(url, responseText);
-
- // Return false if furhter parts of this response should be ignored.
- return limitNotReached;
- },
-
- getResponse: function(request)
- {
- var url = Http.safeGetRequestName(request);
- var response = this.responses[url];
- if (!response)
- {
- this.invalidate(url);
- this.responses[url] = response = {
- request: request,
- size: 0,
- rawSize: 0
- };
- }
-
- return response;
- },
-
- storeSplitLines: function(url, lines)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.storeSplitLines: " + url, lines);
-
- var currLines = this.cache[url];
- if (!currLines)
- currLines = this.cache[url] = [];
-
- // Join the last line with the new first one to make the source code
- // lines properly formatted...
- if (currLines.length && lines.length)
- {
- // ... but only if the last line isn't already completed.
- var lastLine = currLines[currLines.length-1];
- if (lastLine && lastLine.search(/\r|\n/) == -1)
- currLines[currLines.length-1] += lines.shift();
- }
-
- // Append new lines (if any) into the array for specified url.
- if (lines.length)
- this.cache[url] = currLines.concat(lines);
-
- return this.cache[url];
- },
-
- loadFromCache: function(url, method, file)
- {
- // The ancestor implementation (SourceCache) uses ioService.newChannel, which
- // can result in additional request to the server (in case the response can't
- // be loaded from the Firefox cache) - known as the double-load problem.
- // This new implementation (TabCache) uses nsITraceableChannel, so all responses
- // should be already cached.
-
- // xxxHonza: TODO entire implementation of this method should be removed in Firebug 1.5
- // xxxHonza: let's try to get the response from the cache till #449198 is fixed.
- var stream;
- var responseText;
- try
- {
- if (!url)
- return responseText;
-
- if (url === "<unknown>")
- return [Locale.$STR("message.sourceNotAvailableFor") + ": " + url];
-
- var channel = ioService.newChannel(url, null, null);
-
- // These flag combination doesn't repost the request.
- channel.loadFlags = Ci.nsIRequest.LOAD_FROM_CACHE |
- Ci.nsICachingChannel.LOAD_ONLY_FROM_CACHE |
- Ci.nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE_IF_BUSY;
-
- var charset = "UTF-8";
-
- if (!this.context.window)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("tabCache.loadFromCache; ERROR this.context.window " +
- "is undefined");
- }
- }
-
- var doc = this.context.window ? this.context.window.document : null;
- if (doc)
- charset = doc.characterSet;
-
- stream = channel.open();
-
- // The response doesn't have to be in the browser cache.
- if (!stream.available())
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.loadFromCache; Failed to load source for: " + url);
-
- stream.close();
- return [Locale.$STR("message.sourceNotAvailableFor") + ": " + url];
- }
-
- // Don't load responses that shouldn't be cached.
- if (!Firebug.TabCacheModel.shouldCacheRequest(channel))
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.loadFromCache; The resource from this URL is not text: " + url);
-
- stream.close();
- return [Locale.$STR("message.The resource from this URL is not text") + ": " + url];
- }
-
- responseText = Http.readFromStream(stream, charset);
-
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.loadFromCache (response coming from FF Cache) " +
- url, responseText);
-
- responseText = this.store(url, responseText);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS || FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.loadFromCache EXCEPTION on url \'" + url +"\'", err);
- }
- finally
- {
- if (stream)
- stream.close();
- }
-
- return responseText;
- },
-
- // nsIStreamListener - callbacks from channel stream listener component.
- onStartRequest: function(request, requestContext)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.channel.startRequest: " + Http.safeGetRequestName(request));
-
- // Make sure the response-entry (used to count total response size) is properly
- // initialized (cleared) now. If no data is received, the response entry remains empty.
- var response = this.getResponse(request);
-
- Events.dispatch(Firebug.TabCacheModel.fbListeners, "onStartRequest", [this.context, request]);
- Events.dispatch(this.fbListeners, "onStartRequest", [this.context, request]);
- },
-
- onDataAvailable: function(request, requestContext, inputStream, offset, count)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.channel.onDataAvailable: " + Http.safeGetRequestName(request));
-
- // If the stream is read a new one must be provided (the stream doesn't implement
- // nsISeekableStream).
- var stream = {
- value: inputStream
- };
-
- Events.dispatch(Firebug.TabCacheModel.fbListeners, "onDataAvailable",
- [this.context, request, requestContext, stream, offset, count]);
- Events.dispatch(this.fbListeners, "onDataAvailable", [this.context,
- request, requestContext, stream, offset, count]);
-
- return stream.value;
- },
-
- onStopRequest: function(request, requestContext, statusCode)
- {
- // The response has been received; remove the request from the list of
- // current responses.
- var url = Http.safeGetRequestName(request);
- delete this.responses[url];
-
- var lines = this.cache[this.removeAnchor(url)];
- var responseText = lines ? lines.join("") : "";
-
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.channel.stopRequest: " + Http.safeGetRequestName(request),
- responseText);
-
- Events.dispatch(Firebug.TabCacheModel.fbListeners, "onStopRequest",
- [this.context, request, responseText]);
- Events.dispatch(this.fbListeners, "onStopRequest", [this.context, request, responseText]);
- }
-});
-
-// ********************************************************************************************* //
-// Proxy Listener
-
-function ChannelListenerProxy(win)
-{
- this.window = win;
-}
-
-ChannelListenerProxy.prototype =
-{
- onStartRequest: function(request, requestContext)
- {
- var context = this.getContext();
- if (context)
- context.sourceCache.onStartRequest(request, requestContext);
- },
-
- onDataAvailable: function(request, requestContext, inputStream, offset, count)
- {
- var context = this.getContext();
- if (!context)
- return null;
-
- return context.sourceCache.onDataAvailable(request, requestContext,
- inputStream, offset, count);
- },
-
- onStopRequest: function(request, requestContext, statusCode)
- {
- var context = this.getContext();
- if (context)
- context.sourceCache.onStopRequest(request, requestContext, statusCode);
- },
-
- onCollectData: function(request, data, offset)
- {
- var context = this.getContext();
- if (!context)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("tabCache.channel.onCollectData: NO CONTEXT " +
- Http.safeGetRequestName(request), data);
-
- return false;
- }
-
- // Store received data into the cache as they come. If the method returns
- // false, the rest of the response is ignored (not cached). This is used
- // to limit size of a cached response.
- return context.sourceCache.storePartialResponse(request, data, this.window, offset);
- },
-
- getContext: function()
- {
- try
- {
- return Firebug.connection.getContextByWindow(this.window);
- }
- catch (e)
- {
- }
- return null;
- },
-
- shouldCacheRequest: function(request)
- {
- try
- {
- return Firebug.TabCacheModel.shouldCacheRequest(request);
- }
- catch (err)
- {
- }
- return false;
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerActivableModule(Firebug.TabCacheModel);
-
-return Firebug.TabCacheModel;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/xpcom",
+ "firebug/net/requestObserver",
+ "firebug/net/responseObserver",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/url",
+ "firebug/lib/http",
+ "firebug/lib/string",
+ "firebug/chrome/window",
+ "firebug/net/jsonViewer",
+ "firebug/trace/traceModule",
+ "firebug/trace/traceListener",
+ "firebug/js/sourceCache"
+],
+function(Obj, Firebug, Xpcom, HttpRequestObserver, HttpResponseObserver, Locale, Events,
+ Url, Http, Str, Win, JSONViewerModel, TraceModule, TraceListener) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
+
+// Maximum cached size of a single response (bytes)
+var responseSizeLimit = 1024 * 1024 * 5;
+
+// List of text content types. These content-types are cached.
+var contentTypes =
+{
+ "text/plain": 1,
+ "text/html": 1,
+ "text/xml": 1,
+ "text/xsl": 1,
+ "text/xul": 1,
+ "text/css": 1,
+ "text/sgml": 1,
+ "text/rtf": 1,
+ "text/x-setext": 1,
+ "text/richtext": 1,
+ "text/javascript": 1,
+ "text/jscript": 1,
+ "text/tab-separated-values": 1,
+ "text/rdf": 1,
+ "text/xif": 1,
+ "text/ecmascript": 1,
+ "text/vnd.curl": 1,
+ "text/x-json": 1,
+ "text/x-js": 1,
+ "text/js": 1,
+ "text/vbscript": 1,
+ "view-source": 1,
+ "view-fragment": 1,
+ "application/xml": 1,
+ "application/xhtml+xml": 1,
+ "application/atom+xml": 1,
+ "application/rss+xml": 1,
+ "application/mathml+xml": 1,
+ "application/rdf+xml": 1,
+ "application/vnd.mozilla.maybe.feed": 1,
+ "application/vnd.mozilla.xul+xml": 1,
+ "application/javascript": 1,
+ "application/x-javascript": 1,
+ "application/x-httpd-php": 1,
+ "application/rdf+xml": 1,
+ "application/ecmascript": 1,
+ "application/http-index-format": 1,
+ "application/json": 1,
+ "application/x-js": 1,
+ "multipart/mixed" : 1,
+ "multipart/x-mixed-replace" : 1,
+ "image/svg+xml" : 1
+};
+
+// ********************************************************************************************* //
+// Model implementation
+
+/**
+ * Implementation of cache model. The only purpose of this object is to register an HTTP
+ * observer, so that HTTP communication can be intercepted and all incoming data stored
+ * within a cache.
+ */
+Firebug.TabCacheModel = Obj.extend(Firebug.ActivableModule,
+{
+ dispatchName: "tabCache",
+ contentTypes: contentTypes,
+ fbListeners: [],
+
+ initialize: function()
+ {
+ Firebug.ActivableModule.initialize.apply(this, arguments);
+
+ this.traceListener = new TraceListener("tabCache.", "DBG_CACHE", false);
+ TraceModule.addListener(this.traceListener);
+ },
+
+ initializeUI: function(owner)
+ {
+ Firebug.ActivableModule.initializeUI.apply(this, arguments);
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.initializeUI;");
+
+ // Read maximum size limit for cached response from preferences.
+ responseSizeLimit = Firebug.Options.get("cache.responseLimit");
+
+ // Read additional text MIME types from preferences.
+ var mimeTypes = Firebug.Options.get("cache.mimeTypes");
+ if (mimeTypes)
+ {
+ var list = mimeTypes.split(" ");
+ for (var i=0; i<list.length; i++)
+ contentTypes[list[i]] = 1;
+ }
+
+ // Merge with JSON types
+ var jsonTypes = JSONViewerModel.contentTypes;
+ for (var p in jsonTypes)
+ contentTypes[p] = 1;
+ },
+
+ onObserverChange: function(observer)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.onObserverChange; hasObservers: " + this.hasObservers());
+
+ // If Firebug is in action, we need to test to see if we need to addObserver
+ if (!Firebug.getSuspended())
+ this.onResumeFirebug();
+ },
+
+ onResumeFirebug: function()
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.onResumeFirebug; hasObsevers: " + this.hasObservers());
+
+ if (this.hasObservers() && !this.observing)
+ {
+ HttpRequestObserver.addObserver(this, "firebug-http-event", false);
+ this.observing = true;
+ }
+ },
+
+ onSuspendFirebug: function()
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.onSuspendFirebug; hasObsevers: " + this.hasObservers());
+
+ if (this.observing)
+ {
+ HttpRequestObserver.removeObserver(this, "firebug-http-event");
+ this.observing = false;
+ }
+ },
+
+ shutdown: function()
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.shutdown; Cache model destroyed.");
+
+ TraceModule.removeListener(this.traceListener);
+
+ if (this.observing)
+ HttpRequestObserver.removeObserver(this, "firebug-http-event");
+ },
+
+ initContext: function(context)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.initContext for: " + context.getName());
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // nsIObserver
+
+ observe: function(subject, topic, data)
+ {
+ try
+ {
+ if (!(subject instanceof Ci.nsIHttpChannel))
+ return;
+
+ // XXXjjb this same code is in net.js, better to have it only once
+ var win = Http.getWindowForRequest(subject);
+ if (!win)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.observe; " + topic + ", NO WINDOW");
+ return;
+ }
+
+ if (topic == "http-on-modify-request")
+ this.onModifyRequest(subject, win);
+ else if (topic == "http-on-examine-response")
+ this.onExamineResponse(subject, win);
+ else if (topic == "http-on-examine-cached-response")
+ this.onCachedResponse(subject, win);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("tabCache.observe EXCEPTION", err);
+ }
+ },
+
+ onModifyRequest: function(request, win)
+ {
+ },
+
+ onExamineResponse: function(request, win)
+ {
+ this.registerStreamListener(request, win);
+ },
+
+ onCachedResponse: function(request, win)
+ {
+ this.registerStreamListener(request, win);
+ },
+
+ registerStreamListener: function(request, win, forceRegister)
+ {
+ if (Firebug.getSuspended() && !forceRegister)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.registerStreamListener; DO NOT TRACK, " +
+ "Firebug suspended for: " + Http.safeGetRequestName(request));
+ return;
+ }
+
+ if (!this.hasObservers())
+ return;
+
+ try
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.registerStreamListener; " +
+ Http.safeGetRequestName(request));
+
+ HttpResponseObserver.register(win, request, new ChannelListenerProxy(win));
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("tabCache.Register Traceable Listener EXCEPTION", err);
+ }
+ },
+
+ shouldCacheRequest: function(request)
+ {
+ if (!(request instanceof Ci.nsIHttpChannel))
+ return;
+
+ // Allow to customize caching rules.
+ if (Events.dispatch2(this.fbListeners, "shouldCacheRequest", [request]))
+ return true;
+
+ // Cache only text responses for now.
+ var contentType = request.contentType;
+ if (contentType)
+ contentType = contentType.split(";")[0];
+
+ contentType = Str.trim(contentType);
+ if (contentTypes[contentType])
+ return true;
+
+ // Hack to work around application/octet-stream for js files (see issue 2063).
+ // Let's cache all files with js extensions.
+ var extension = Url.getFileExtension(Http.safeGetRequestName(request));
+ if (extension == "js")
+ return true;
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.shouldCacheRequest; Request not cached: " +
+ request.contentType + ", " + Http.safeGetRequestName(request));
+
+ return false;
+ },
+});
+
+// ********************************************************************************************* //
+// Tab Cache
+
+/**
+ * This cache object is intended to cache all responses made by a specific tab.
+ * The implementation is based on nsITraceableChannel interface introduced in
+ * Firefox 3.0.4. This interface allows to intercept all incoming HTTP data.
+ *
+ * This object replaces the SourceCache, which still exist only for backward
+ * compatibility.
+ *
+ * The object is derived from SourceCache, so the same interface and most of the
+ * implementation is used.
+ */
+Firebug.TabCache = function(context)
+{
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.TabCache Created for: " + context.getName());
+
+ Firebug.SourceCache.call(this, context);
+};
+
+Firebug.TabCache.prototype = Obj.extend(Firebug.SourceCache.prototype,
+{
+ // Responses in progress
+ responses: [],
+
+ storePartialResponse: function(request, responseText, win, offset)
+ {
+ if (!offset)
+ offset = 0;
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.storePartialResponse " + Http.safeGetRequestName(request),
+ request.contentCharset);
+
+ var url = Http.safeGetRequestName(request);
+ var response = this.getResponse(request);
+
+ // Skip any response data that we have received before (f ex when
+ // response packets are repeated due to quirks in how authentication
+ // requests are projected to the channel listener)
+ var newRawSize = offset + responseText.length;
+ var addRawBytes = newRawSize - response.rawSize;
+
+ if (responseText.length > addRawBytes)
+ responseText = responseText.substr(responseText.length - addRawBytes);
+
+ try
+ {
+ responseText = Str.convertToUnicode(responseText, win.document.characterSet);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.storePartialResponse EXCEPTION " +
+ Http.safeGetRequestName(request), err);
+
+ // Even responses that are not converted are stored into the cache.
+ // return false;
+ }
+
+ // Size of each response is limited.
+ var limitNotReached = true;
+ if (response.size + responseText.length >= responseSizeLimit)
+ {
+ limitNotReached = false;
+ responseText = responseText.substr(0, responseSizeLimit - response.size);
+ FBTrace.sysout("tabCache.storePartialResponse Max size limit reached for: " + url);
+ }
+
+ response.size += responseText.length;
+ response.rawSize = newRawSize;
+
+ // Store partial content into the cache.
+ this.store(url, responseText);
+
+ // Return false if furhter parts of this response should be ignored.
+ return limitNotReached;
+ },
+
+ getResponse: function(request)
+ {
+ var url = Http.safeGetRequestName(request);
+ var response = this.responses[url];
+ if (!response)
+ {
+ this.invalidate(url);
+ this.responses[url] = response = {
+ request: request,
+ size: 0,
+ rawSize: 0
+ };
+ }
+
+ return response;
+ },
+
+ storeSplitLines: function(url, lines)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.storeSplitLines: " + url, lines);
+
+ var currLines = this.cache[url];
+ if (!currLines)
+ currLines = this.cache[url] = [];
+
+ // Join the last line with the new first one to make the source code
+ // lines properly formatted...
+ if (currLines.length && lines.length)
+ {
+ // ... but only if the last line isn't already completed.
+ var lastLine = currLines[currLines.length-1];
+ if (lastLine && lastLine.search(/\r|\n/) == -1)
+ currLines[currLines.length-1] += lines.shift();
+ }
+
+ // Append new lines (if any) into the array for specified url.
+ if (lines.length)
+ this.cache[url] = currLines.concat(lines);
+
+ return this.cache[url];
+ },
+
+ loadFromCache: function(url, method, file)
+ {
+ // The ancestor implementation (SourceCache) uses ioService.newChannel, which
+ // can result in additional request to the server (in case the response can't
+ // be loaded from the Firefox cache) - known as the double-load problem.
+ // This new implementation (TabCache) uses nsITraceableChannel, so all responses
+ // should be already cached.
+
+ // xxxHonza: TODO entire implementation of this method should be removed in Firebug 1.5
+ // xxxHonza: let's try to get the response from the cache till #449198 is fixed.
+ var stream;
+ var responseText;
+ try
+ {
+ if (!url)
+ return responseText;
+
+ if (url === "<unknown>")
+ return [Locale.$STR("message.sourceNotAvailableFor") + ": " + url];
+
+ var channel = ioService.newChannel(url, null, null);
+
+ // These flag combination doesn't repost the request.
+ channel.loadFlags = Ci.nsIRequest.LOAD_FROM_CACHE |
+ Ci.nsICachingChannel.LOAD_ONLY_FROM_CACHE |
+ Ci.nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE_IF_BUSY;
+
+ var charset = "UTF-8";
+
+ if (!this.context.window)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("tabCache.loadFromCache; ERROR this.context.window " +
+ "is undefined");
+ }
+ }
+
+ var doc = this.context.window ? this.context.window.document : null;
+ if (doc)
+ charset = doc.characterSet;
+
+ stream = channel.open();
+
+ // The response doesn't have to be in the browser cache.
+ if (!stream.available())
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.loadFromCache; Failed to load source for: " + url);
+
+ stream.close();
+ return [Locale.$STR("message.sourceNotAvailableFor") + ": " + url];
+ }
+
+ // Don't load responses that shouldn't be cached.
+ if (!Firebug.TabCacheModel.shouldCacheRequest(channel))
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.loadFromCache; The resource from this URL is not text: " + url);
+
+ stream.close();
+ return [Locale.$STR("message.The resource from this URL is not text") + ": " + url];
+ }
+
+ responseText = Http.readFromStream(stream, charset);
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.loadFromCache (response coming from FF Cache) " +
+ url, responseText);
+
+ responseText = this.store(url, responseText);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.loadFromCache EXCEPTION on url \'" + url +"\'", err);
+ }
+ finally
+ {
+ if (stream)
+ stream.close();
+ }
+
+ return responseText;
+ },
+
+ // nsIStreamListener - callbacks from channel stream listener component.
+ onStartRequest: function(request, requestContext)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.channel.startRequest: " + Http.safeGetRequestName(request));
+
+ // Make sure the response-entry (used to count total response size) is properly
+ // initialized (cleared) now. If no data is received, the response entry remains empty.
+ var response = this.getResponse(request);
+
+ Events.dispatch(Firebug.TabCacheModel.fbListeners, "onStartRequest", [this.context, request]);
+ Events.dispatch(this.fbListeners, "onStartRequest", [this.context, request]);
+ },
+
+ onDataAvailable: function(request, requestContext, inputStream, offset, count)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.channel.onDataAvailable: " + Http.safeGetRequestName(request));
+
+ // If the stream is read a new one must be provided (the stream doesn't implement
+ // nsISeekableStream).
+ var stream = {
+ value: inputStream
+ };
+
+ Events.dispatch(Firebug.TabCacheModel.fbListeners, "onDataAvailable",
+ [this.context, request, requestContext, stream, offset, count]);
+ Events.dispatch(this.fbListeners, "onDataAvailable", [this.context,
+ request, requestContext, stream, offset, count]);
+
+ return stream.value;
+ },
+
+ onStopRequest: function(request, requestContext, statusCode)
+ {
+ // The response has been received; remove the request from the list of
+ // current responses.
+ var url = Http.safeGetRequestName(request);
+ delete this.responses[url];
+
+ var lines = this.cache[this.removeAnchor(url)];
+ var responseText = lines ? lines.join("") : "";
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.channel.stopRequest: " + Http.safeGetRequestName(request),
+ responseText);
+
+ Events.dispatch(Firebug.TabCacheModel.fbListeners, "onStopRequest",
+ [this.context, request, responseText]);
+ Events.dispatch(this.fbListeners, "onStopRequest", [this.context, request, responseText]);
+ }
+});
+
+// ********************************************************************************************* //
+// Proxy Listener
+
+function ChannelListenerProxy(win)
+{
+ this.window = win;
+}
+
+ChannelListenerProxy.prototype =
+{
+ onStartRequest: function(request, requestContext)
+ {
+ var context = this.getContext();
+ if (context)
+ context.sourceCache.onStartRequest(request, requestContext);
+ },
+
+ onDataAvailable: function(request, requestContext, inputStream, offset, count)
+ {
+ var context = this.getContext();
+ if (!context)
+ return null;
+
+ return context.sourceCache.onDataAvailable(request, requestContext,
+ inputStream, offset, count);
+ },
+
+ onStopRequest: function(request, requestContext, statusCode)
+ {
+ var context = this.getContext();
+ if (context)
+ context.sourceCache.onStopRequest(request, requestContext, statusCode);
+ },
+
+ onCollectData: function(request, data, offset)
+ {
+ var context = this.getContext();
+ if (!context)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.channel.onCollectData: NO CONTEXT " +
+ Http.safeGetRequestName(request), data);
+
+ return false;
+ }
+
+ // Store received data into the cache as they come. If the method returns
+ // false, the rest of the response is ignored (not cached). This is used
+ // to limit size of a cached response.
+ return context.sourceCache.storePartialResponse(request, data, this.window, offset);
+ },
+
+ getContext: function()
+ {
+ try
+ {
+ return Firebug.connection.getContextByWindow(this.window);
+ }
+ catch (e)
+ {
+ }
+ return null;
+ },
+
+ shouldCacheRequest: function(request)
+ {
+ try
+ {
+ return Firebug.TabCacheModel.shouldCacheRequest(request);
+ }
+ catch (err)
+ {
+ }
+ return false;
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerActivableModule(Firebug.TabCacheModel);
+
+return Firebug.TabCacheModel;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/js/watchPanel.js b/content/firebug/js/watchPanel.js
index 56eafc4..5c4647c 100644
--- a/content/firebug/js/watchPanel.js
+++ b/content/firebug/js/watchPanel.js
@@ -1,460 +1,460 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/chrome/firefox",
- "firebug/firebug",
- "firebug/dom/toggleBranch",
- "firebug/lib/events",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/js/stackFrame",
- "firebug/lib/locale",
- "firebug/lib/string",
- "firebug/dom/domPanel", // Firebug.DOMBasePanel, Firebug.DOMPanel.DirTable
-],
-function(Obj, Firefox, Firebug, ToggleBranch, Events, Dom, Css, StackFrame, Locale, Str) {
-
-// ********************************************************************************************* //
-// Watch Panel
-
-Firebug.WatchPanel = function()
-{
-};
-
-/**
- * Represents the Watch side panel available in the Script panel.
- */
-Firebug.WatchPanel.prototype = Obj.extend(Firebug.DOMBasePanel.prototype,
-/** @lends Firebug.WatchPanel */
-{
- tag: Firebug.DOMPanel.DirTable.watchTag,
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // extends Panel
-
- name: "watches",
- order: 0,
- parentPanel: "script",
- enableA11y: true,
- deriveA11yFrom: "console",
-
- initialize: function()
- {
- this.onMouseDown = Obj.bind(this.onMouseDown, this);
- this.onMouseOver = Obj.bind(this.onMouseOver, this);
- this.onMouseOut = Obj.bind(this.onMouseOut, this);
-
- Firebug.registerUIListener(this);
-
- Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
- },
-
- destroy: function(state)
- {
- state.watches = this.watches;
-
- Firebug.unregisterUIListener(this);
-
- Firebug.DOMBasePanel.prototype.destroy.apply(this, arguments);
- },
-
- show: function(state)
- {
- if (state && state.watches)
- this.watches = state.watches;
- },
-
- initializeNode: function(oldPanelNode)
- {
- Events.addEventListener(this.panelNode, "mousedown", this.onMouseDown, false);
- Events.addEventListener(this.panelNode, "mouseover", this.onMouseOver, false);
- Events.addEventListener(this.panelNode, "mouseout", this.onMouseOut, false);
-
- Firebug.DOMBasePanel.prototype.initializeNode.apply(this, arguments);
- },
-
- destroyNode: function()
- {
- Events.removeEventListener(this.panelNode, "mousedown", this.onMouseDown, false);
- Events.removeEventListener(this.panelNode, "mouseover", this.onMouseOver, false);
- Events.removeEventListener(this.panelNode, "mouseout", this.onMouseOut, false);
-
- Firebug.DOMBasePanel.prototype.destroyNode.apply(this, arguments);
- },
-
- refresh: function()
- {
- this.rebuild(true);
- },
-
- updateSelection: function(frame)
- {
- // this method is called while the debugger has halted JS,
- // so failures don't show up in FBS_ERRORS
- try
- {
- this.doUpdateSelection(frame);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS && FBTrace.DBG_STACK)
- FBTrace.sysout("updateSelection FAILS " + exc, exc);
- }
- },
-
- doUpdateSelection: function(frame)
- {
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("dom watch panel updateSelection frame " + frame, frame);
-
- Events.dispatch(this.fbListeners, "onBeforeDomUpdateSelection", [this]);
-
- var newFrame = frame && ("signature" in frame) &&
- (frame.signature() != this.frameSignature);
-
- if (newFrame)
- {
- this.toggles = new ToggleBranch.ToggleBranch();
- this.frameSignature = frame.signature();
- }
-
- var scopes;
- if (frame instanceof StackFrame.StackFrame)
- scopes = frame.getScopes(Firebug.viewChrome);
- else
- scopes = [this.context.getCurrentGlobal()];
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("dom watch frame isStackFrame " +
- (frame instanceof StackFrame.StackFrame) +
- " updateSelection scopes " + scopes.length, scopes);
-
- var members = [];
-
- var context = this.context;
- if (this.watches)
- {
- for (var i = 0; i < this.watches.length; ++i)
- {
- var expr = this.watches[i];
- var value = null;
-
- Firebug.CommandLine.evaluate(expr, context, null, context.getCurrentGlobal(),
- function success(result, context)
- {
- value = result;
- },
- function failed(result, context)
- {
- var exc = result;
- value = new FirebugReps.ErrorCopy(exc+"");
- }
- );
-
- this.addMember(scopes[0], "watch", members, expr, value, 0);
-
- if (FBTrace.DBG_DOM)
- {
- FBTrace.sysout("watch.updateSelection \"" + expr + "\"",
- {expr: expr, value: value, members: members});
- }
- }
- }
-
- if (frame && frame instanceof StackFrame.StackFrame)
- {
- var thisVar = frame.getThisValue();
- if (thisVar)
- this.addMember(scopes[0], "user", members, "this", thisVar, 0);
-
- // locals, pre-expanded
- members.push.apply(members, this.getMembers(scopes[0], 0));
-
- for (var i=1; i<scopes.length; i++)
- {
- var scope = scopes[i];
- var name = (scope.hasOwnProperty("toString") ? scope.toString() :
- Object.prototype.toString.call(scope));
-
- // Some objects are stringified as [object ClassName]; extract
- // the [[Class]] from those.
- var re = /\[object (.*)\]/.exec(name);
- if (re)
- {
- if (re[1] === "Window")
- name = Locale.$STR("Window_Scope");
- else
- name = re[1];
- }
-
- this.addMember(scope, "scopes", members, name, scope, 0);
- }
- }
-
- this.expandMembers(members, this.toggles, 0, 0);
- this.showMembers(members, false);
-
- if (FBTrace.DBG_STACK)
- FBTrace.sysout("dom watch panel updateSelection members " + members.length, members);
- },
-
- rebuild: function()
- {
- if (FBTrace.DBG_WATCH)
- FBTrace.sysout("Firebug.WatchPanel.rebuild", this.selection);
-
- this.updateSelection(this.selection);
- },
-
- showEmptyMembers: function()
- {
- var domTable = this.tag.replace({domPanel: this, toggles: new ToggleBranch.ToggleBranch()},
- this.panelNode);
-
- // The direction needs to be adjusted according to the direction
- // of the user agent. See issue 5073.
- // TODO: Set the direction at the <body> to allow correct formatting of all relevant parts.
- // This requires more adjustments related for rtl user agents.
- var mainFrame = Firefox.getElementById("fbMainFrame");
- var cs = mainFrame.ownerDocument.defaultView.getComputedStyle(mainFrame);
- var watchRow = domTable.getElementsByClassName("watchNewRow").item(0);
- watchRow.style.direction = cs.direction;
- },
-
- addWatch: function(expression)
- {
- expression = Str.trim(expression);
-
- if (FBTrace.DBG_WATCH)
- FBTrace.sysout("Firebug.WatchPanel.addWatch; expression: "+expression);
-
- if (!this.watches)
- this.watches = [];
-
- for (var i=0; i<this.watches.length; i++)
- {
- if (expression == this.watches[i])
- return;
- }
-
- this.watches.splice(0, 0, expression);
- this.rebuild(true);
- },
-
- removeWatch: function(expression)
- {
- if (FBTrace.DBG_WATCH)
- FBTrace.sysout("Firebug.WatchPanel.removeWatch; expression: " + expression);
-
- if (!this.watches)
- return;
-
- var index = this.watches.indexOf(expression);
- if (index != -1)
- this.watches.splice(index, 1);
- },
-
- editNewWatch: function(value)
- {
- if (FBTrace.DBG_WATCH)
- FBTrace.sysout("Firebug.WatchPanel.editNewWatch; value: " + value);
-
- var watchNewRow = this.panelNode.getElementsByClassName("watchNewRow").item(0);
- if (watchNewRow)
- this.editProperty(watchNewRow, value);
- },
-
- setWatchValue: function(row, value)
- {
- if (FBTrace.DBG_WATCH)
- FBTrace.sysout("Firebug.WatchPanel.setWatchValue", {row: row, value: value});
-
- var rowIndex = getWatchRowIndex(row);
- this.watches[rowIndex] = value;
- this.rebuild(true);
- },
-
- deleteWatch: function(row)
- {
- if (FBTrace.DBG_WATCH)
- FBTrace.sysout("Firebug.WatchPanel.deleteWatch", row);
-
- var rowIndex = getWatchRowIndex(row);
- this.watches.splice(rowIndex, 1);
- this.rebuild(true);
-
- this.context.setTimeout(Obj.bindFixed(function()
- {
- this.showToolbox(null);
- }, this));
- },
-
- // deletes all the watches
- deleteAllWatches: function()
- {
- if (FBTrace.DBG_WATCH)
- FBTrace.sysout("Firebug.WatchPanel.deleteAllWatches");
- this.watches = [];
- this.rebuild(true);
- this.context.setTimeout(Obj.bindFixed(function()
- {
- this.showToolbox(null);
- }, this));
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- showToolbox: function(row)
- {
- var toolbox = this.getToolbox();
- if (row)
- {
- if (Css.hasClass(row, "editing"))
- return;
-
- toolbox.watchRow = row;
-
- var offset = Dom.getClientOffset(row);
- toolbox.style.top = offset.y + "px";
- this.panelNode.appendChild(toolbox);
- }
- else
- {
- delete toolbox.watchRow;
-
- if (toolbox.parentNode)
- toolbox.parentNode.removeChild(toolbox);
- }
- },
-
- getToolbox: function()
- {
- if (!this.toolbox)
- {
- this.toolbox = Firebug.DOMBasePanel.ToolboxPlate.tag.replace(
- {domPanel: this}, this.document);
- }
-
- return this.toolbox;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onMouseDown: function(event)
- {
- var watchNewRow = Dom.getAncestorByClass(event.target, "watchNewRow");
- if (watchNewRow)
- {
- this.editProperty(watchNewRow);
- Events.cancelEvent(event);
- }
- },
-
- onMouseOver: function(event)
- {
- var watchRow = Dom.getAncestorByClass(event.target, "watchRow");
- if (watchRow)
- this.showToolbox(watchRow);
- },
-
- onMouseOut: function(event)
- {
- if (Dom.isAncestor(event.relatedTarget, this.getToolbox()))
- return;
-
- var watchRow = Dom.getAncestorByClass(event.relatedTarget, "watchRow");
- if (!watchRow)
- this.showToolbox(null);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Context Menu
-
- /**
- * Creates "Add Watch" menu item within DOM and Watch panel context menus.
- */
- onContextMenu: function(items, object, target, context, panel, popup)
- {
- // Ignore events from other contexts.
- if (this.context != context)
- return;
-
- if (panel.name != "dom" && panel.name != "watches")
- return;
-
- var row = Dom.getAncestorByClass(target, "memberRow");
- if (!row || row.domObject.ignoredPath)
- return;
-
- var path = this.getPropertyPath(row);
- if (!path || !path.length)
- return;
-
- // Ignore top level variables in the Watch panel.
- if (panel.name == "watches" && path.length == 1)
- return;
-
- items.push({
- id: "fbAddWatch",
- label: "AddWatch",
- tooltiptext: "watch.tip.Add_Watch",
- command: Obj.bindFixed(this.addWatch, this, path.join(""))
- });
- },
-
- getContextMenuItems: function(object, target)
- {
- var items = Firebug.DOMBasePanel.prototype.getContextMenuItems.apply(this, arguments);
-
- if (!this.watches || this.watches.length == 0)
- return items;
-
- // find the index of "DeletePropery" in the items:
- var deleteWatchIndex = items.map(function(item)
- {
- return item.id;
- }).indexOf("DeleteProperty");
-
- // if DeleteWatch was found, we insert DeleteAllWatches after it
- // otherwise, we insert the item at the beginning of the menu
- var deleteAllWatchesIndex = (deleteWatchIndex >= 0) ? deleteWatchIndex + 1 : 0;
-
- if (FBTrace.DBG_WATCH)
- FBTrace.sysout("insert DeleteAllWatches at: "+ deleteAllWatchesIndex);
-
- // insert DeleteAllWatches after DeleteWatch
- items.splice(deleteAllWatchesIndex, 0, {
- id: "fbDeleteAllWatches",
- label: "DeleteAllWatches",
- tooltiptext: "watch.tip.Delete_All_Watches",
- command: Obj.bindFixed(this.deleteAllWatches, this)
- });
-
- return items;
- }
-});
-
-// ********************************************************************************************* //
-// Local Helpers
-
-function getWatchRowIndex(row)
-{
- var index = -1;
- for (; row; row = row.previousSibling)
- {
- if (Css.hasClass(row, "watchRow"))
- ++index;
- }
- return index;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(Firebug.WatchPanel);
-
-return Firebug.WatchPanel;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/chrome/firefox",
+ "firebug/firebug",
+ "firebug/dom/toggleBranch",
+ "firebug/lib/events",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/js/stackFrame",
+ "firebug/lib/locale",
+ "firebug/lib/string",
+ "firebug/dom/domPanel", // Firebug.DOMBasePanel, Firebug.DOMPanel.DirTable
+],
+function(Obj, Firefox, Firebug, ToggleBranch, Events, Dom, Css, StackFrame, Locale, Str) {
+
+// ********************************************************************************************* //
+// Watch Panel
+
+Firebug.WatchPanel = function()
+{
+};
+
+/**
+ * Represents the Watch side panel available in the Script panel.
+ */
+Firebug.WatchPanel.prototype = Obj.extend(Firebug.DOMBasePanel.prototype,
+/** @lends Firebug.WatchPanel */
+{
+ tag: Firebug.DOMPanel.DirTable.watchTag,
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // extends Panel
+
+ name: "watches",
+ order: 0,
+ parentPanel: "script",
+ enableA11y: true,
+ deriveA11yFrom: "console",
+
+ initialize: function()
+ {
+ this.onMouseDown = Obj.bind(this.onMouseDown, this);
+ this.onMouseOver = Obj.bind(this.onMouseOver, this);
+ this.onMouseOut = Obj.bind(this.onMouseOut, this);
+
+ Firebug.registerUIListener(this);
+
+ Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
+ },
+
+ destroy: function(state)
+ {
+ state.watches = this.watches;
+
+ Firebug.unregisterUIListener(this);
+
+ Firebug.DOMBasePanel.prototype.destroy.apply(this, arguments);
+ },
+
+ show: function(state)
+ {
+ if (state && state.watches)
+ this.watches = state.watches;
+ },
+
+ initializeNode: function(oldPanelNode)
+ {
+ Events.addEventListener(this.panelNode, "mousedown", this.onMouseDown, false);
+ Events.addEventListener(this.panelNode, "mouseover", this.onMouseOver, false);
+ Events.addEventListener(this.panelNode, "mouseout", this.onMouseOut, false);
+
+ Firebug.DOMBasePanel.prototype.initializeNode.apply(this, arguments);
+ },
+
+ destroyNode: function()
+ {
+ Events.removeEventListener(this.panelNode, "mousedown", this.onMouseDown, false);
+ Events.removeEventListener(this.panelNode, "mouseover", this.onMouseOver, false);
+ Events.removeEventListener(this.panelNode, "mouseout", this.onMouseOut, false);
+
+ Firebug.DOMBasePanel.prototype.destroyNode.apply(this, arguments);
+ },
+
+ refresh: function()
+ {
+ this.rebuild(true);
+ },
+
+ updateSelection: function(frame)
+ {
+ // this method is called while the debugger has halted JS,
+ // so failures don't show up in FBS_ERRORS
+ try
+ {
+ this.doUpdateSelection(frame);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS && FBTrace.DBG_STACK)
+ FBTrace.sysout("updateSelection FAILS " + exc, exc);
+ }
+ },
+
+ doUpdateSelection: function(frame)
+ {
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("dom watch panel updateSelection frame " + frame, frame);
+
+ Events.dispatch(this.fbListeners, "onBeforeDomUpdateSelection", [this]);
+
+ var newFrame = frame && ("signature" in frame) &&
+ (frame.signature() != this.frameSignature);
+
+ if (newFrame)
+ {
+ this.toggles = new ToggleBranch.ToggleBranch();
+ this.frameSignature = frame.signature();
+ }
+
+ var scopes;
+ if (frame instanceof StackFrame.StackFrame)
+ scopes = frame.getScopes(Firebug.viewChrome);
+ else
+ scopes = [this.context.getCurrentGlobal()];
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("dom watch frame isStackFrame " +
+ (frame instanceof StackFrame.StackFrame) +
+ " updateSelection scopes " + scopes.length, scopes);
+
+ var members = [];
+
+ var context = this.context;
+ if (this.watches)
+ {
+ for (var i = 0; i < this.watches.length; ++i)
+ {
+ var expr = this.watches[i];
+ var value = null;
+
+ Firebug.CommandLine.evaluate(expr, context, null, context.getCurrentGlobal(),
+ function success(result, context)
+ {
+ value = result;
+ },
+ function failed(result, context)
+ {
+ var exc = result;
+ value = new FirebugReps.ErrorCopy(exc+"");
+ }
+ );
+
+ this.addMember(scopes[0], "watch", members, expr, value, 0);
+
+ if (FBTrace.DBG_DOM)
+ {
+ FBTrace.sysout("watch.updateSelection \"" + expr + "\"",
+ {expr: expr, value: value, members: members});
+ }
+ }
+ }
+
+ if (frame && frame instanceof StackFrame.StackFrame)
+ {
+ var thisVar = frame.getThisValue();
+ if (thisVar)
+ this.addMember(scopes[0], "user", members, "this", thisVar, 0);
+
+ // locals, pre-expanded
+ members.push.apply(members, this.getMembers(scopes[0], 0));
+
+ for (var i=1; i<scopes.length; i++)
+ {
+ var scope = scopes[i];
+ var name = (scope.hasOwnProperty("toString") ? scope.toString() :
+ Object.prototype.toString.call(scope));
+
+ // Some objects are stringified as [object ClassName]; extract
+ // the [[Class]] from those.
+ var re = /\[object (.*)\]/.exec(name);
+ if (re)
+ {
+ if (re[1] === "Window")
+ name = Locale.$STR("Window_Scope");
+ else
+ name = re[1];
+ }
+
+ this.addMember(scope, "scopes", members, name, scope, 0);
+ }
+ }
+
+ this.expandMembers(members, this.toggles, 0, 0);
+ this.showMembers(members, false);
+
+ if (FBTrace.DBG_STACK)
+ FBTrace.sysout("dom watch panel updateSelection members " + members.length, members);
+ },
+
+ rebuild: function()
+ {
+ if (FBTrace.DBG_WATCH)
+ FBTrace.sysout("Firebug.WatchPanel.rebuild", this.selection);
+
+ this.updateSelection(this.selection);
+ },
+
+ showEmptyMembers: function()
+ {
+ var domTable = this.tag.replace({domPanel: this, toggles: new ToggleBranch.ToggleBranch()},
+ this.panelNode);
+
+ // The direction needs to be adjusted according to the direction
+ // of the user agent. See issue 5073.
+ // TODO: Set the direction at the <body> to allow correct formatting of all relevant parts.
+ // This requires more adjustments related for rtl user agents.
+ var mainFrame = Firefox.getElementById("fbMainFrame");
+ var cs = mainFrame.ownerDocument.defaultView.getComputedStyle(mainFrame);
+ var watchRow = domTable.getElementsByClassName("watchNewRow").item(0);
+ watchRow.style.direction = cs.direction;
+ },
+
+ addWatch: function(expression)
+ {
+ expression = Str.trim(expression);
+
+ if (FBTrace.DBG_WATCH)
+ FBTrace.sysout("Firebug.WatchPanel.addWatch; expression: "+expression);
+
+ if (!this.watches)
+ this.watches = [];
+
+ for (var i=0; i<this.watches.length; i++)
+ {
+ if (expression == this.watches[i])
+ return;
+ }
+
+ this.watches.splice(0, 0, expression);
+ this.rebuild(true);
+ },
+
+ removeWatch: function(expression)
+ {
+ if (FBTrace.DBG_WATCH)
+ FBTrace.sysout("Firebug.WatchPanel.removeWatch; expression: " + expression);
+
+ if (!this.watches)
+ return;
+
+ var index = this.watches.indexOf(expression);
+ if (index != -1)
+ this.watches.splice(index, 1);
+ },
+
+ editNewWatch: function(value)
+ {
+ if (FBTrace.DBG_WATCH)
+ FBTrace.sysout("Firebug.WatchPanel.editNewWatch; value: " + value);
+
+ var watchNewRow = this.panelNode.getElementsByClassName("watchNewRow").item(0);
+ if (watchNewRow)
+ this.editProperty(watchNewRow, value);
+ },
+
+ setWatchValue: function(row, value)
+ {
+ if (FBTrace.DBG_WATCH)
+ FBTrace.sysout("Firebug.WatchPanel.setWatchValue", {row: row, value: value});
+
+ var rowIndex = getWatchRowIndex(row);
+ this.watches[rowIndex] = value;
+ this.rebuild(true);
+ },
+
+ deleteWatch: function(row)
+ {
+ if (FBTrace.DBG_WATCH)
+ FBTrace.sysout("Firebug.WatchPanel.deleteWatch", row);
+
+ var rowIndex = getWatchRowIndex(row);
+ this.watches.splice(rowIndex, 1);
+ this.rebuild(true);
+
+ this.context.setTimeout(Obj.bindFixed(function()
+ {
+ this.showToolbox(null);
+ }, this));
+ },
+
+ // deletes all the watches
+ deleteAllWatches: function()
+ {
+ if (FBTrace.DBG_WATCH)
+ FBTrace.sysout("Firebug.WatchPanel.deleteAllWatches");
+ this.watches = [];
+ this.rebuild(true);
+ this.context.setTimeout(Obj.bindFixed(function()
+ {
+ this.showToolbox(null);
+ }, this));
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ showToolbox: function(row)
+ {
+ var toolbox = this.getToolbox();
+ if (row)
+ {
+ if (Css.hasClass(row, "editing"))
+ return;
+
+ toolbox.watchRow = row;
+
+ var offset = Dom.getClientOffset(row);
+ toolbox.style.top = offset.y + "px";
+ this.panelNode.appendChild(toolbox);
+ }
+ else
+ {
+ delete toolbox.watchRow;
+
+ if (toolbox.parentNode)
+ toolbox.parentNode.removeChild(toolbox);
+ }
+ },
+
+ getToolbox: function()
+ {
+ if (!this.toolbox)
+ {
+ this.toolbox = Firebug.DOMBasePanel.ToolboxPlate.tag.replace(
+ {domPanel: this}, this.document);
+ }
+
+ return this.toolbox;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onMouseDown: function(event)
+ {
+ var watchNewRow = Dom.getAncestorByClass(event.target, "watchNewRow");
+ if (watchNewRow)
+ {
+ this.editProperty(watchNewRow);
+ Events.cancelEvent(event);
+ }
+ },
+
+ onMouseOver: function(event)
+ {
+ var watchRow = Dom.getAncestorByClass(event.target, "watchRow");
+ if (watchRow)
+ this.showToolbox(watchRow);
+ },
+
+ onMouseOut: function(event)
+ {
+ if (Dom.isAncestor(event.relatedTarget, this.getToolbox()))
+ return;
+
+ var watchRow = Dom.getAncestorByClass(event.relatedTarget, "watchRow");
+ if (!watchRow)
+ this.showToolbox(null);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Context Menu
+
+ /**
+ * Creates "Add Watch" menu item within DOM and Watch panel context menus.
+ */
+ onContextMenu: function(items, object, target, context, panel, popup)
+ {
+ // Ignore events from other contexts.
+ if (this.context != context)
+ return;
+
+ if (panel.name != "dom" && panel.name != "watches")
+ return;
+
+ var row = Dom.getAncestorByClass(target, "memberRow");
+ if (!row || row.domObject.ignoredPath)
+ return;
+
+ var path = this.getPropertyPath(row);
+ if (!path || !path.length)
+ return;
+
+ // Ignore top level variables in the Watch panel.
+ if (panel.name == "watches" && path.length == 1)
+ return;
+
+ items.push({
+ id: "fbAddWatch",
+ label: "AddWatch",
+ tooltiptext: "watch.tip.Add_Watch",
+ command: Obj.bindFixed(this.addWatch, this, path.join(""))
+ });
+ },
+
+ getContextMenuItems: function(object, target)
+ {
+ var items = Firebug.DOMBasePanel.prototype.getContextMenuItems.apply(this, arguments);
+
+ if (!this.watches || this.watches.length == 0)
+ return items;
+
+ // find the index of "DeletePropery" in the items:
+ var deleteWatchIndex = items.map(function(item)
+ {
+ return item.id;
+ }).indexOf("DeleteProperty");
+
+ // if DeleteWatch was found, we insert DeleteAllWatches after it
+ // otherwise, we insert the item at the beginning of the menu
+ var deleteAllWatchesIndex = (deleteWatchIndex >= 0) ? deleteWatchIndex + 1 : 0;
+
+ if (FBTrace.DBG_WATCH)
+ FBTrace.sysout("insert DeleteAllWatches at: "+ deleteAllWatchesIndex);
+
+ // insert DeleteAllWatches after DeleteWatch
+ items.splice(deleteAllWatchesIndex, 0, {
+ id: "fbDeleteAllWatches",
+ label: "DeleteAllWatches",
+ tooltiptext: "watch.tip.Delete_All_Watches",
+ command: Obj.bindFixed(this.deleteAllWatches, this)
+ });
+
+ return items;
+ }
+});
+
+// ********************************************************************************************* //
+// Local Helpers
+
+function getWatchRowIndex(row)
+{
+ var index = -1;
+ for (; row; row = row.previousSibling)
+ {
+ if (Css.hasClass(row, "watchRow"))
+ ++index;
+ }
+ return index;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(Firebug.WatchPanel);
+
+return Firebug.WatchPanel;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/legacy.js b/content/firebug/legacy.js
index d3d2cc7..4d7ed3f 100644
--- a/content/firebug/legacy.js
+++ b/content/firebug/legacy.js
@@ -1,79 +1,79 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Backward compatibility with Extensions
-
-// xxxHonza: the only global should be Firebug object, but extensions use FBL
-// to register namespaces (and bindings.xml uses it too). So, FBL must be
-// available before extension's scripts are loaded.
-window.FBL =
-{
- namespaces: [],
-
- ns: function(fn)
- {
- var ns = {};
- this.namespaces.push(fn, ns);
- return ns;
- },
-
- initialize: function()
- {
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("FBL.initialize BEGIN "+FBL.namespaces.length+" namespaces\n");
-
- for (var i=0; i<FBL.namespaces.length; i+=2)
- {
- var fn = FBL.namespaces[i];
- var ns = FBL.namespaces[i+1];
-
- try
- {
- fn.apply(ns);
- }
- catch (exc)
- {
- FBTrace.sysout("fbl.initialize; EXCEPTION " + exc, exc);
-
- if (exc.stack)
- Components.utils.reportError("Firebug initialize FAILS "+exc+" "+exc.stack);
- else
- Components.utils.reportError("Firebug initialize FAILS "+exc+" "+
- fn.toSource().substr(0,500));
- }
- }
-
- if (FBTrace.DBG_INITIALIZE)
- {
- FBTrace.sysout("FBL.initialize END " + FBL.namespaces.length + " namespaces");
- FBTrace.sysout("Modules: " + Firebug.modules.length);
- FBTrace.sysout("Panel types: " + Firebug.earlyRegPanelTypes.length);
- }
- }
-};
-
-// ********************************************************************************************* //
-// Called by firebugFrame main.js to pump global and deprecated API back.
-
-window.FBL.legacyPatch = function(FBL, Firebug)
-{
- if (top === window)
- return;
-
- top.FBL = FBL;
- top.Firebug = Firebug;
-};
-
-window.FBL.legacyApiPatch = function(FBL, Firebug, Firefox)
-{
- // Backward compatibility with extensions
- // deprecated
- Firebug.getTabIdForWindow = FBL.getWindowProxyIdForWindow;
- Firebug.getTabForWindow = FBL.getTabForWindow;
-
- Firebug.chrome.getBrowsers = Firefox.getBrowsers;
- Firebug.chrome.getCurrentBrowsers = Firefox.getCurrentBrowsers;
- Firebug.chrome.getCurrentURI = Firefox.getCurrentURI;
-};
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Backward compatibility with Extensions
+
+// xxxHonza: the only global should be Firebug object, but extensions use FBL
+// to register namespaces (and bindings.xml uses it too). So, FBL must be
+// available before extension's scripts are loaded.
+window.FBL =
+{
+ namespaces: [],
+
+ ns: function(fn)
+ {
+ var ns = {};
+ this.namespaces.push(fn, ns);
+ return ns;
+ },
+
+ initialize: function()
+ {
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("FBL.initialize BEGIN "+FBL.namespaces.length+" namespaces\n");
+
+ for (var i=0; i<FBL.namespaces.length; i+=2)
+ {
+ var fn = FBL.namespaces[i];
+ var ns = FBL.namespaces[i+1];
+
+ try
+ {
+ fn.apply(ns);
+ }
+ catch (exc)
+ {
+ FBTrace.sysout("fbl.initialize; EXCEPTION " + exc, exc);
+
+ if (exc.stack)
+ Components.utils.reportError("Firebug initialize FAILS "+exc+" "+exc.stack);
+ else
+ Components.utils.reportError("Firebug initialize FAILS "+exc+" "+
+ fn.toSource().substr(0,500));
+ }
+ }
+
+ if (FBTrace.DBG_INITIALIZE)
+ {
+ FBTrace.sysout("FBL.initialize END " + FBL.namespaces.length + " namespaces");
+ FBTrace.sysout("Modules: " + Firebug.modules.length);
+ FBTrace.sysout("Panel types: " + Firebug.earlyRegPanelTypes.length);
+ }
+ }
+};
+
+// ********************************************************************************************* //
+// Called by firebugFrame main.js to pump global and deprecated API back.
+
+window.FBL.legacyPatch = function(FBL, Firebug)
+{
+ if (top === window)
+ return;
+
+ top.FBL = FBL;
+ top.Firebug = Firebug;
+};
+
+window.FBL.legacyApiPatch = function(FBL, Firebug, Firefox)
+{
+ // Backward compatibility with extensions
+ // deprecated
+ Firebug.getTabIdForWindow = FBL.getWindowProxyIdForWindow;
+ Firebug.getTabForWindow = FBL.getTabForWindow;
+
+ Firebug.chrome.getBrowsers = Firefox.getBrowsers;
+ Firebug.chrome.getCurrentBrowsers = Firefox.getCurrentBrowsers;
+ Firebug.chrome.getCurrentURI = Firefox.getCurrentURI;
+};
+
+// ********************************************************************************************* //
diff --git a/content/firebug/lib/array.js b/content/firebug/lib/array.js
index fb0d79d..1540b33 100644
--- a/content/firebug/lib/array.js
+++ b/content/firebug/lib/array.js
@@ -1,209 +1,209 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
-],
-function(FBTrace) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-var Arr = {};
-
-// ********************************************************************************************* //
-// Arrays
-
-Arr.isArray = Array.isArray || function(obj)
-{
- return Object.prototype.toString.call(obj) === "[object Array]";
-};
-
-Arr.isArrayLike = function(obj)
-{
- try
- {
- if (typeof obj !== "object")
- return false;
- if (!isFinite(obj.length))
- return false;
- if (Arr.isArray(obj))
- return true;
- if (typeof obj.callee === "function") // arguments
- return true;
- if (typeof obj.splice === "function") // jQuery etc.
- return true;
- var str = Object.prototype.toString.call(obj);
- if (str === "[object HTMLCollection]" || str === "[object NodeList]" ||
- str === "[object DOMTokenList]")
- {
- return true;
- }
- }
- catch (exc) {}
- return false;
-};
-
-// At least sometimes the keys will be on user-level window objects
-Arr.keys = function(map)
-{
- var keys = [];
- try
- {
- for (var name in map) // enumeration is safe
- keys.push(name); // name is string, safe
- }
- catch (exc)
- {
- // Sometimes we get exceptions trying to iterate properties
- }
-
- return keys; // return is safe
-};
-
-Arr.values = function(map)
-{
- var values = [];
- try
- {
- for (var name in map)
- {
- try
- {
- values.push(map[name]);
- }
- catch (exc)
- {
- // Sometimes we get exceptions trying to access properties
- if (FBTrace.DBG_ERRORS)
- FBTrace.dumpPropreties("lib.values FAILED ", exc);
- }
- }
- }
- catch (exc)
- {
- // Sometimes we get exceptions trying to iterate properties
- if (FBTrace.DBG_ERRORS)
- FBTrace.dumpPropreties("lib.values FAILED ", exc);
- }
-
- return values;
-};
-
-Arr.remove = function(list, item)
-{
- for (var i = 0; i < list.length; ++i)
- {
- if (list[i] == item)
- {
- list.splice(i, 1);
- return true;
- }
- }
- return false;
-};
-
-Arr.sliceArray = function(array, index)
-{
- var slice = [];
- for (var i = index; i < array.length; ++i)
- slice.push(array[i]);
-
- return slice;
-};
-
-Arr.cloneArray = function(array, fn)
-{
- var newArray = [], len = array.length;
-
- if (fn)
- for (var i = 0; i < len; ++i)
- newArray.push(fn(array[i]));
- else
- for (var i = 0; i < len; ++i)
- newArray.push(array[i]);
-
- return newArray;
-};
-
-Arr.extendArray = function(array, array2)
-{
- var newArray = [];
- newArray.push.apply(newArray, array);
- newArray.push.apply(newArray, array2);
- return newArray;
-};
-
-Arr.arrayInsert = function(array, index, other)
-{
- // Prepare arguments for Array.splice()
- // 1) index: at which to start inserting the 'other' array.
- // 2) howMany: elements to remove (none in this case)
- // 3-N) elements: to insert
- var args = [index, 0];
- args.push.apply(args, other);
-
- // Insert 'other' array into 'array'
- array.splice.apply(array, args);
-
- return array;
-};
-
-// xxxFlorent: [ES6-SET] [ES6-SPREAD]
-/**
- * Filter out unique values of an array, saving only the first occurrence of
- * every value. In case the array is sorted, a faster path is taken.
- */
-Arr.unique = function(ar, sorted)
-{
- var ret = [], len = ar.length;
- if (sorted)
- {
- for (var i = 0; i < len; ++i)
- {
- // Skip duplicated entries
- if (i && ar[i-1] === ar[i])
- continue;
- ret.push(ar[i]);
- }
- }
- else
- {
- // Keep a map whose ","-prefixed keys represent the values that have
- // occurred so far in the array (this avoids overwriting e.g. __proto__).
- var map = {};
- for (var i = 0; i < len; ++i)
- {
- if (!map.hasOwnProperty("," + ar[i]))
- {
- ret.push(ar[i]);
- map["," + ar[i]] = 1;
- }
- }
- }
- return ret;
-};
-
-/**
- * Sort an array and eliminate duplicates from it.
- */
-Arr.sortUnique = function(ar, sortFunc)
-{
- return Arr.unique(ar.slice().sort(sortFunc), true);
-};
-
-/**
- * Merge together two arrays, sort the result, and eliminate any duplicates.
- */
-Arr.merge = function(arr1, arr2, sortFunc)
-{
- return Arr.sortUnique(arr1.concat(arr2), sortFunc);
-};
-
-// ********************************************************************************************* //
-
-return Arr;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+],
+function(FBTrace) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+var Arr = {};
+
+// ********************************************************************************************* //
+// Arrays
+
+Arr.isArray = Array.isArray || function(obj)
+{
+ return Object.prototype.toString.call(obj) === "[object Array]";
+};
+
+Arr.isArrayLike = function(obj)
+{
+ try
+ {
+ if (typeof obj !== "object")
+ return false;
+ if (!isFinite(obj.length))
+ return false;
+ if (Arr.isArray(obj))
+ return true;
+ if (typeof obj.callee === "function") // arguments
+ return true;
+ if (typeof obj.splice === "function") // jQuery etc.
+ return true;
+ var str = Object.prototype.toString.call(obj);
+ if (str === "[object HTMLCollection]" || str === "[object NodeList]" ||
+ str === "[object DOMTokenList]")
+ {
+ return true;
+ }
+ }
+ catch (exc) {}
+ return false;
+};
+
+// At least sometimes the keys will be on user-level window objects
+Arr.keys = function(map)
+{
+ var keys = [];
+ try
+ {
+ for (var name in map) // enumeration is safe
+ keys.push(name); // name is string, safe
+ }
+ catch (exc)
+ {
+ // Sometimes we get exceptions trying to iterate properties
+ }
+
+ return keys; // return is safe
+};
+
+Arr.values = function(map)
+{
+ var values = [];
+ try
+ {
+ for (var name in map)
+ {
+ try
+ {
+ values.push(map[name]);
+ }
+ catch (exc)
+ {
+ // Sometimes we get exceptions trying to access properties
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.dumpPropreties("lib.values FAILED ", exc);
+ }
+ }
+ }
+ catch (exc)
+ {
+ // Sometimes we get exceptions trying to iterate properties
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.dumpPropreties("lib.values FAILED ", exc);
+ }
+
+ return values;
+};
+
+Arr.remove = function(list, item)
+{
+ for (var i = 0; i < list.length; ++i)
+ {
+ if (list[i] == item)
+ {
+ list.splice(i, 1);
+ return true;
+ }
+ }
+ return false;
+};
+
+Arr.sliceArray = function(array, index)
+{
+ var slice = [];
+ for (var i = index; i < array.length; ++i)
+ slice.push(array[i]);
+
+ return slice;
+};
+
+Arr.cloneArray = function(array, fn)
+{
+ var newArray = [], len = array.length;
+
+ if (fn)
+ for (var i = 0; i < len; ++i)
+ newArray.push(fn(array[i]));
+ else
+ for (var i = 0; i < len; ++i)
+ newArray.push(array[i]);
+
+ return newArray;
+};
+
+Arr.extendArray = function(array, array2)
+{
+ var newArray = [];
+ newArray.push.apply(newArray, array);
+ newArray.push.apply(newArray, array2);
+ return newArray;
+};
+
+Arr.arrayInsert = function(array, index, other)
+{
+ // Prepare arguments for Array.splice()
+ // 1) index: at which to start inserting the 'other' array.
+ // 2) howMany: elements to remove (none in this case)
+ // 3-N) elements: to insert
+ var args = [index, 0];
+ args.push.apply(args, other);
+
+ // Insert 'other' array into 'array'
+ array.splice.apply(array, args);
+
+ return array;
+};
+
+// xxxFlorent: [ES6-SET] [ES6-SPREAD]
+/**
+ * Filter out unique values of an array, saving only the first occurrence of
+ * every value. In case the array is sorted, a faster path is taken.
+ */
+Arr.unique = function(ar, sorted)
+{
+ var ret = [], len = ar.length;
+ if (sorted)
+ {
+ for (var i = 0; i < len; ++i)
+ {
+ // Skip duplicated entries
+ if (i && ar[i-1] === ar[i])
+ continue;
+ ret.push(ar[i]);
+ }
+ }
+ else
+ {
+ // Keep a map whose ","-prefixed keys represent the values that have
+ // occurred so far in the array (this avoids overwriting e.g. __proto__).
+ var map = {};
+ for (var i = 0; i < len; ++i)
+ {
+ if (!map.hasOwnProperty("," + ar[i]))
+ {
+ ret.push(ar[i]);
+ map["," + ar[i]] = 1;
+ }
+ }
+ }
+ return ret;
+};
+
+/**
+ * Sort an array and eliminate duplicates from it.
+ */
+Arr.sortUnique = function(ar, sortFunc)
+{
+ return Arr.unique(ar.slice().sort(sortFunc), true);
+};
+
+/**
+ * Merge together two arrays, sort the result, and eliminate any duplicates.
+ */
+Arr.merge = function(arr1, arr2, sortFunc)
+{
+ return Arr.sortUnique(arr1.concat(arr2), sortFunc);
+};
+
+// ********************************************************************************************* //
+
+return Arr;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/css.js b/content/firebug/lib/css.js
index e0144bb..c927625 100644
--- a/content/firebug/lib/css.js
+++ b/content/firebug/lib/css.js
@@ -1,2867 +1,2891 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/url",
- "firebug/lib/options",
- "firebug/chrome/window",
- "firebug/lib/xml",
- "firebug/lib/http",
- "firebug/lib/xpath"
-],
-function(FBTrace, Url, Options, Win, Xml, Http, Xpath) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Ci = Components.interfaces;
-var Cc = Components.classes;
-
-// ********************************************************************************************* //
-// Module Implementation
-
-var Css = {};
-
-// ********************************************************************************************* //
-// CSS
-
-var cssKeywordMap = {};
-var cssPropNames = {};
-var cssColorNames = null;
-var imageRules = null;
-var domUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
-
-Css.getCSSKeywordsByProperty = function(nodeType, propName, avoid)
-{
- if (!cssKeywordMap[nodeType])
- {
- cssKeywordMap[nodeType] = {};
-
- for (var name in Css.cssInfo[nodeType])
- {
- var list = [];
-
- var types = Css.cssInfo[nodeType][name];
- for (var i = 0; i < types.length; ++i)
- {
- var keywords = Css.cssKeywords[types[i]];
- if (keywords)
- list.push.apply(list, keywords);
- else
- list.push(types[i]);
- }
-
- cssKeywordMap[nodeType][name] = list;
- }
- }
-
- propName = propName.toLowerCase();
-
- if (avoid)
- return getCSSPropertyKeywordsExcludingCategories(nodeType, propName, avoid);
-
- return cssKeywordMap[nodeType][propName] || [];
-};
-
-function getCSSPropertyKeywordsExcludingCategories(nodeType, propName, avoid)
-{
- if (!(nodeType in Css.cssInfo) || !(propName in Css.cssInfo[nodeType]))
- return [];
-
- var list = [];
- var types = Css.cssInfo[nodeType][propName];
- for (var i = 0; i < types.length; ++i)
- {
- var type = types[i];
- if (avoid.indexOf(type) !== -1)
- continue;
- var keywords = Css.cssKeywords[type];
- if (keywords)
- list.push.apply(list, keywords);
- else
- list.push(type);
- }
- return list;
-}
-
-Css.getCSSPropertyNames = function(nodeType)
-{
- if (!cssPropNames[nodeType])
- {
- cssPropNames[nodeType] = [];
-
- for (var name in Css.cssInfo[nodeType])
- cssPropNames[nodeType].push(name);
- }
-
- return cssPropNames[nodeType];
-};
-
-Css.getCSSShorthandCategory = function(nodeType, shorthandProp, keyword)
-{
- if (!(nodeType in Css.cssInfo) || !(shorthandProp in Css.cssInfo[nodeType]))
- return null;
-
- var category = null;
- var types = Css.cssInfo[nodeType][shorthandProp];
- for (var i = 0; i < types.length; ++i)
- {
- var type = types[i];
- var keywords = Css.cssKeywords[type];
- if (keywords ? (keywords.indexOf(keyword) !== -1) : (type === keyword))
- {
- // Set this as the matched category, or if there is one already
- // bail out (we don't have a unique one).
- if (category)
- return null;
- category = type;
- }
- }
- return category;
-};
-
-/**
- * Parses the CSS properties of a CSSStyleRule
- * @param {Object} style CSSStyleRule to get the properties of
- * @param {Object} element Element to which the style applies. Needed for parsing
- * shorthand properties correctly.
- *
- * @returns {Array} Properties represented by {name, value, priority, longhandProps}
- */
-Css.parseCSSProps = function(style, element)
-{
- var props = [];
-
- if (!element)
- {
- for (var i = 0, len = style.length; i < len; ++i)
- {
- var prop = style.item(i);
- props.push({name: prop,
- value: style.getPropertyValue(prop),
- priority: style.getPropertyPriority(longhandProp)});
- }
- }
- else
- {
- var lineRE = /(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g;
- var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(?:! (important))?;?$/;
- var lines = style.cssText.match(lineRE);
- for (var i = 0, len = lines.length; i < len; ++i)
- {
- var match = propRE.exec(lines[i]);
- if (!match)
- continue;
-
- if (match[2])
- {
- var prop = {name: match[1], value: match[2], priority: match[3] || ""};
-
- // Add longhand properties to shorthand property
- var doc = element.ownerDocument;
- var dummyElement = doc.createElementNS(element.namespaceURI, element.tagName);
- var dummyStyle = dummyElement.style;
- dummyStyle.cssText = "";
- dummyStyle.setProperty(prop.name, prop.value, prop.priority);
-
- if (dummyStyle.length > 1)
- {
- prop.longhandProps = [];
- for (var j = 0, propLen = dummyStyle.length; j < propLen; ++j)
- {
- var longhandProp = dummyStyle.item(j);
- prop.longhandProps.push({name: longhandProp,
- value: dummyStyle.getPropertyValue(longhandProp),
- priority: dummyStyle.getPropertyPriority(longhandProp)});
- }
- }
-
- props.push(prop);
- }
- }
- }
-
- return props;
-};
-
-Css.isColorKeyword = function(keyword)
-{
- if (keyword == "transparent")
- return false;
-
- if (!cssColorNames)
- {
- cssColorNames = [];
-
- var colors = Css.cssKeywords["color"];
- for (var i = 0; i < colors.length; ++i)
- cssColorNames.push(colors[i].toLowerCase());
- }
-
- return cssColorNames.indexOf(keyword.toLowerCase()) != -1;
-};
-
-Css.isImageRule = function(nodeType,rule)
-{
- if (!imageRules)
- {
- imageRules = [];
-
- for (var i in Css.cssInfo[nodeType])
- {
- var r = i.toLowerCase();
- var suffix = "image";
- if (r.match(suffix + "$") == suffix || r == "background")
- imageRules.push(r);
- }
- }
-
- return imageRules.indexOf(rule.toLowerCase()) != -1;
-};
-
-Css.copyTextStyles = function(fromNode, toNode, style)
-{
- var view = fromNode ? fromNode.ownerDocument.defaultView : null;
- if (view)
- {
- if (!style)
- style = view.getComputedStyle(fromNode, "");
-
- toNode.style.fontFamily = style.fontFamily;
- toNode.style.fontSize = style.fontSize;
- toNode.style.fontWeight = style.fontWeight;
- toNode.style.fontStyle = style.fontStyle;
- toNode.style.fontSizeAdjust = style.fontSizeAdjust;
- toNode.style.fontStretch = style.fontStretch;
- toNode.style.fontVariant = style.fontVariant;
- toNode.style.MozFontFeatureSettings = style.MozFontFeatureSettings;
-
- return style;
- }
-};
-
-Css.copyBoxStyles = function(fromNode, toNode, style)
-{
- var view = fromNode.ownerDocument.defaultView;
- if (view)
- {
- if (!style)
- style = view.getComputedStyle(fromNode, "");
-
- toNode.style.marginTop = style.marginTop;
- toNode.style.marginRight = style.marginRight;
- toNode.style.marginBottom = style.marginBottom;
- toNode.style.marginLeft = style.marginLeft;
- toNode.style.borderTopWidth = style.borderTopWidth;
- toNode.style.borderRightWidth = style.borderRightWidth;
- toNode.style.borderBottomWidth = style.borderBottomWidth;
- toNode.style.borderLeftWidth = style.borderLeftWidth;
- toNode.style.unicodeBidi = style.unicodeBidi;
-
- return style;
- }
-};
-
-Css.readBoxStyles = function(style)
-{
- const styleNames = {
- "margin-top": "marginTop", "margin-right": "marginRight",
- "margin-left": "marginLeft", "margin-bottom": "marginBottom",
- "border-top-width": "borderTop", "border-right-width": "borderRight",
- "border-left-width": "borderLeft", "border-bottom-width": "borderBottom",
- "padding-top": "paddingTop", "padding-right": "paddingRight",
- "padding-left": "paddingLeft", "padding-bottom": "paddingBottom",
- "z-index": "zIndex"
- };
-
- var styles = {};
- for (var styleName in styleNames)
- styles[styleNames[styleName]] = parseInt(style.getPropertyCSSValue(styleName).cssText) || 0;
-
- if (FBTrace.DBG_INSPECT)
- FBTrace.sysout("readBoxStyles ", styles);
-
- return styles;
-};
-
-Css.getBoxFromStyles = function(style, element)
-{
- var args = Css.readBoxStyles(style);
- args.width = element.offsetWidth
- - (args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight);
- args.height = element.offsetHeight
- - (args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom);
- return args;
-};
-
-Css.getElementCSSSelector = function(element)
-{
- if (!element || !element.localName)
- return "null";
-
- var label = Xml.getLocalName(element);
- if (element.id)
- label += "#" + element.id;
-
- if (element.classList && element.classList.length > 0)
- label += "." + element.classList.item(0);
-
- return label;
-};
-
-Css.getElementCSSPath = function(element)
-{
- var paths = [];
-
- for (; element && element.nodeType == Node.ELEMENT_NODE; element = element.parentNode)
- {
- var selector = Css.getElementCSSSelector(element);
- paths.splice(0, 0, selector);
- }
-
- return paths.length ? paths.join(" ") : null;
-};
-
-// ********************************************************************************************* //
-// CSS classes
-
-var classNameReCache={};
-
-Css.hasClass = function(node, name)
-{
- if (!node || node.nodeType != Node.ELEMENT_NODE || !node.className || !name)
- return false;
-
- if (name.indexOf(" ") != -1)
- {
- var classes = name.split(" "), len = classes.length, found=false;
- for (var i = 0; i < len; i++)
- {
- var cls = classes[i].trim();
- if (cls != "")
- {
- if (Css.hasClass(node, cls) == false)
- return false;
- found = true;
- }
- }
- return found;
- }
-
- var re;
- if (name.indexOf("-") == -1)
- re = classNameReCache[name] = classNameReCache[name] || new RegExp('(^|\\s)' + name + '(\\s|$)', "g");
- else // XXXsroussey don't cache these, they are often setting values. Should be using setUserData/getUserData???
- re = new RegExp('(^|\\s)' + name + '(\\s|$)', "g");
- return node.className.search(re) != -1;
-};
-
-Css.setClass = function(node, name)
-{
- if (!node || node.nodeType != Node.ELEMENT_NODE || name == '')
- return;
-
- if (name.indexOf(" ") != -1)
- {
- var classes = name.split(" "), len = classes.length;
- for (var i = 0; i < len; i++)
- {
- var cls = classes[i].trim();
- if (cls != "")
- {
- Css.setClass(node, cls);
- }
- }
- return;
- }
- if (!Css.hasClass(node, name))
- node.className = node.className.trim() + " " + name;
-};
-
-Css.getClassValue = function(node, name)
-{
- var re = new RegExp(name+"-([^ ]+)");
- var m = re.exec(node.className);
- return m ? m[1] : "";
-};
-
-Css.removeClass = function(node, name)
-{
- if (!node || node.nodeType != Node.ELEMENT_NODE || node.className == '' || name == '')
- return;
-
- if (name.indexOf(" ") != -1)
- {
- var classes = name.split(" "), len = classes.length;
- for (var i = 0; i < len; i++)
- {
- var cls = classes[i].trim();
- if (cls != "")
- {
- if (Css.hasClass(node, cls) == false)
- Css.removeClass(node, cls);
- }
- }
- return;
- }
-
- var re;
- if (name.indexOf("-") == -1)
- re = classNameReCache[name] = classNameReCache[name] || new RegExp('(^|\\s)' + name + '(\\s|$)', "g");
- else // XXXsroussey don't cache these, they are often setting values. Should be using setUserData/getUserData???
- re = new RegExp('(^|\\s)' + name + '(\\s|$)', "g");
-
- node.className = node.className.replace(re, " ");
-
-};
-
-Css.toggleClass = function(elt, name)
-{
- if (Css.hasClass(elt, name))
- Css.removeClass(elt, name);
- else
- Css.setClass(elt, name);
-};
-
-Css.obscure = function(elt, obscured)
-{
- if (obscured)
- Css.setClass(elt, "obscured");
- else
- Css.removeClass(elt, "obscured");
-};
-
-Css.setClassTimed = function(elt, name, context, timeout)
-{
- if (FBTrace.DBG_HTML || FBTrace.DBG_SOURCEFILES)
- {
- FBTrace.sysout("css.setClassTimed elt.__setClassTimeout: "+elt.__setClassTimeout+
- " Xml.isVisible(elt): "+Xml.isVisible(elt)+
- " elt.__invisibleAtSetPoint: "+elt.__invisibleAtSetPoint);
- }
-
- if (!timeout)
- timeout = 1300;
-
- if (elt.__setClassTimeout) // then we are already waiting to remove the class mark
- context.clearTimeout(elt.__setClassTimeout); // reset the timer
- else // then we are not waiting to remove the mark
- Css.setClass(elt, name);
-
- if (!Xml.isVisible(elt))
- {
- if (elt.__invisibleAtSetPoint)
- elt.__invisibleAtSetPoint--;
- else
- elt.__invisibleAtSetPoint = 5;
- }
- else
- {
- delete elt.__invisibleAtSetPoint;
- }
-
- elt.__setClassTimeout = context.setTimeout(function()
- {
- delete elt.__setClassTimeout;
-
- if (elt.__invisibleAtSetPoint) // then user can't see it, try again later
- Css.setClassTimed(elt, name, context, timeout);
- else
- {
- delete elt.__invisibleAtSetPoint; // may be zero
- Css.removeClass(elt, name);
- }
- }, timeout);
-};
-
-Css.cancelClassTimed = function(elt, name, context)
-{
- if (elt.__setClassTimeout)
- {
- Css.removeClass(elt, name);
- context.clearTimeout(elt.__setClassTimeout);
- delete elt.__setClassTimeout;
- }
-};
-
-Css.safeGetCSSRules = function(styleSheet)
-{
- try
- {
- return styleSheet.cssRules;
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("safeGetCSSRules "+e, e);
- }
-
- return null;
-};
-
-Css.isValidStylesheet = function(styleSheet)
-{
- try
- {
- var dummy = styleSheet.cssRules; // Mozilla throws
- return true;
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("isValidStylesheet "+e, e);
- }
-
- return false;
-};
-
-// ********************************************************************************************* //
-// Stylesheet API
-
-Css.shouldIgnoreSheet = function(sheet)
-{
- // Ignore by the regular method, except for default stylesheets that are
- // used in case there is no other stylesheet.
- if (sheet.defaultStylesheet)
- return false;
- return (sheet.ownerNode && Firebug.shouldIgnore(sheet.ownerNode));
-};
-
-Css.createStyleSheet = function(doc, url)
-{
- var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
- style.setAttribute("charset", "utf-8");
- style.setAttribute("type", "text/css");
-
- var cssText = url ? Http.getResource(url) : null;
- if (cssText)
- {
- var index = url.lastIndexOf("/");
- var absURL = url.substr(0, index+1);
-
- // Replace all relative URLs with absolute (using the passed url).
- // Note that stylesheets can come from various extensions and the source can
- // be even used in a browser env where relative URLs make more sense.
- var expr = /url\(([\'"]?)(?![\'"]?(?:[a-z]+:|\/))/gi;
- cssText = cssText.replace(expr, "url($1" + absURL);
-
- style.textContent = cssText;
- }
-
- Firebug.setIgnored(style);
- return style;
-};
-
-Css.addStyleSheet = function(doc, style)
-{
- var heads = doc.getElementsByTagName("head");
- if (heads.length)
- {
- heads[0].appendChild(style);
- }
- else if (doc.documentElement)
- {
- doc.documentElement.appendChild(style);
- }
- else
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("css.addStyleSheet; ERROR to append a stylesheet");
- }
-};
-
-Css.appendStylesheet = function(doc, uri)
-{
- // Make sure the stylesheet is not appended twice.
- var styleSheet = doc.getElementById(uri);
- if (styleSheet)
- return styleSheet;
-
- var styleSheet = Css.createStyleSheet(doc, uri);
- styleSheet.setAttribute("id", uri);
- Css.addStyleSheet(doc, styleSheet);
-
- return styleSheet;
-},
-
-Css.getStyleSheetByHref = function(url, context)
-{
- if (!context.styleSheetMap)
- Css.createStyleSheetMap(context); // fill cache
-
- // hasOwnProperty is called to prevent possible conflicts with prototype extensions
- // and strict mode warnings
- return context.styleSheetMap.hasOwnProperty(url) ? context.styleSheetMap[url] : undefined;
-};
-
-Css.createStyleSheetMap = function(context)
-{
- context.styleSheetMap = {};
-
- function addSheet(sheet)
- {
- var sheetURL = Css.getURLForStyleSheet(sheet);
- context.styleSheetMap[sheetURL] = sheet;
-
- // recurse for imported sheets
-
- for (var i = 0; i < sheet.cssRules.length; ++i)
- {
- var rule = sheet.cssRules[i];
- if (rule instanceof CSSStyleRule)
- {
- if (rule.type == CSSRule.STYLE_RULE) // once we get here no more imports
- return;
- }
- else if (rule instanceof CSSImportRule)
- {
- addSheet(rule.styleSheet);
- }
- }
- }
-
- Win.iterateWindows(context.window, function(subwin)
- {
- var rootSheets = subwin.document.styleSheets;
- if (!rootSheets)
- return; // XUL?
-
- for (var i = 0; i < rootSheets.length; ++i)
- {
- try
- {
- addSheet(rootSheets[i]);
- }
- catch (err)
- {
- //if (FBTrace.DBG_ERRORS)
- // FBTrace.sysout("css.createStyleSheetMap; EXCEPTION " + err, err);
- }
- }
- });
-
- if (FBTrace.DBG_ERRORS && FBTrace.DBG_CSS)
- FBTrace.sysout("css.createStyleSheetMap for "+context.getName(), context.styleSheetMap);
-
- return context.styleSheetMap;
-};
-
-Css.getAllStyleSheets = function(context)
-{
- if (!context)
- return [];
-
- var styleSheets = [];
-
- var showUACSS = Options.get("showUserAgentCSS");
- function addSheet(sheet)
- {
- var sheetLocation = Css.getURLForStyleSheet(sheet);
-
- if (!showUACSS && Url.isSystemURL(sheetLocation))
- return;
-
- if (Css.shouldIgnoreSheet(sheet))
- return;
-
- styleSheets.push(sheet);
-
- try
- {
- for (var i = 0; i < sheet.cssRules.length; ++i)
- {
- var rule = sheet.cssRules[i];
- if (rule instanceof window.CSSImportRule)
- addSheet(rule.styleSheet);
- }
- }
- catch(e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("getAllStyleSheets sheet.cssRules FAILS for "+
- (sheet?sheet.href:"null sheet")+e, e);
- }
- }
-
- Win.iterateWindows(context.window, function(subwin)
- {
- var rootSheets = subwin.document.styleSheets;
- for (var i = 0; i < rootSheets.length; ++i)
- addSheet(rootSheets[i]);
- });
-
- return styleSheets;
-};
-
-Css.getURLForStyleSheet = function(styleSheet)
-{
- // http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet.
- // For inline style sheets, the value of this attribute is null.
- if (!styleSheet.href && !styleSheet.ownerNode)
- return null;
-
- return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.documentURI);
-};
-
-/**
- * Retrieves the instance number for a given style sheet. The instance number
- * is sheet's index within the set of all other sheets whose URL is the same.
- */
-Css.getInstanceForStyleSheet = function(styleSheet, ownerDocument)
-{
- // ownerDocument is an optional hint for performance
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("getInstanceForStyleSheet href:" + styleSheet.href + " mediaText:" +
- styleSheet.media.mediaText + " path to ownerNode" +
- (styleSheet.ownerNode && Xpath.getElementXPath(styleSheet.ownerNode)), ownerDocument);
- }
-
- ownerDocument = ownerDocument || Css.getDocumentForStyleSheet(styleSheet);
- if (!ownerDocument)
- return;
-
- var ret = 0,
- styleSheets = ownerDocument.styleSheets,
- href = styleSheet.href;
-
- for (var i = 0; i < styleSheets.length; i++)
- {
- var curSheet = styleSheets[i];
-
- if (FBTrace.DBG_CSS)
- {
- FBTrace.sysout("getInstanceForStyleSheet: compare href " + i +
- " " + curSheet.href + " " + curSheet.media.mediaText + " " +
- (curSheet.ownerNode && Xpath.getElementXPath(curSheet.ownerNode)));
- }
-
- if (Css.shouldIgnoreSheet(curSheet))
- break;
-
- if (curSheet == styleSheet)
- break;
-
- if (curSheet.href == href)
- ret++;
- }
- return ret;
-};
-
-Css.getDocumentForStyleSheet = function(styleSheet)
-{
- if (!styleSheet)
- return;
-
- while (styleSheet.parentStyleSheet && !styleSheet.ownerNode)
- styleSheet = styleSheet.parentStyleSheet;
-
- if (styleSheet.ownerNode)
- return styleSheet.ownerNode.ownerDocument;
-};
-
-// ********************************************************************************************* //
-
-Css.stripUnits = function(value)
-{
- // remove units from '0px', '0em' etc. leave non-zero units in-tact.
- return value.replace(/(url\(.*?\)|[^0]\S*\s*)|0(%|em|ex|px|in|cm|mm|pt|pc)(\s|$)/gi,
- function(_, skip, remove, whitespace)
- {
- return skip || ('0' + whitespace);
- }
- );
-};
-
-Css.extractURLs = function(value)
-{
- var urls = [];
- var urlValues = value.match(/url\((["']).*?\1\)/g);
-
- for (var i in urlValues)
- urls.push(urlValues[i].replace(/url\((["'])(.*?)\1\)/, "$2"));
-
- return urls;
-};
-
-Css.colorNameToRGB = function(value)
-{
- if (!domUtils.colorNameToRGB)
- return value;
-
- if (value === "transparent")
- return "rgba(0, 0, 0, 0)";
-
- try
- {
- var rgbValue = domUtils.colorNameToRGB(value);
- return "rgb(" + rgbValue.r + ", " + rgbValue.g + ", " + rgbValue.b + ")";
- }
- catch(e)
- {
- return value;
- }
-};
-
-Css.rgbToHex = function(value)
-{
- function convertRGBToHex(r, g, b)
- {
- return "#" + ((1 << 24) + (r << 16) + (g << 8) + (b << 0)).
- toString(16).substr(-6).toUpperCase();
- }
-
- value = Css.colorNameToRGB(value);
-
- return value.replace(/\brgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)/gi,
- function(_, r, g, b) {
- return convertRGBToHex(r, g, b);
- });
-};
-
-Css.rgbToHSL = function(value)
-{
- function convertRGBToHSL(r, g, b, a)
- {
- r = parseInt(r);
- g = parseInt(g);
- b = parseInt(b);
-
- var gray = (r == g && g == b);
-
- r /= 255;
- g /= 255;
- b /= 255;
-
- var max = Math.max(r, g, b);
- var min = Math.min(r, g, b);
-
- var h = 0;
- var s = 0;
- var l = (max+min)/2;
-
- if (!gray)
- {
- var delta = max - min;
- s = l > 0.5 ? delta/(2-max-min) : delta/(max+min);
-
- switch (max)
- {
- case r:
- h = (g-b)/delta + (g < b ? 6 : 0);
- break;
-
- case g:
- h = (b-r)/delta + 2;
- break;
-
- case b:
- h = (r-g)/delta + 4;
- break;
- }
- }
-
- h = Math.round(h * 60);
- s = Math.round(s * 100);
- l = Math.round(l * 100);
-
- if (a)
- return "hsla("+h+", "+s+"%, "+l+"%, "+a+")";
- else
- return "hsl("+h+", "+s+"%, "+l+"%)";
- }
-
- value = Css.colorNameToRGB(value);
-
- return value.replace(/\brgba?\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})(,\s*(\d.\d+|\d))?\)/gi,
- function(_, r, g, b, _, a)
- {
- return convertRGBToHSL(r, g, b, a);
- });
-};
-
-// ********************************************************************************************* //
-// CSS Info
-
-Css.cssInfo = {};
-Css.cssInfo.html =
-{
- "animation": [],
- "animation-delay": [],
- "animation-direction": ["normal", "alternate", "reverse", "alternate-reverse"],
- "animation-duration": [],
- "animation-iteration-count": ["infinite"],
- "animation-name" : ["none"],
- "animation-play-state": ["running", "paused"],
- "animation-timing-function": [],
- "animation-fill-mode": ["none", "forwards", "backwards", "both"],
-
- "background": ["bgRepeat", "bgAttachment", "position", "color", "image", "none", "boxModels"],
- "background-attachment": ["bgAttachment"],
- "background-color": ["color"],
- "background-image": ["image", "none"],
- "background-position": ["position", "length"],
- "background-repeat": ["bgRepeat"],
- "background-size": ["bgSize", "length"],
- "background-clip": ["boxModels"], // FF 4.0
- "background-origin": ["boxModels"], // FF 4.0
-
- "border": ["borderStyle", "thickness", "color"],
- "border-top": ["borderStyle", "borderCollapse", "color"],
- "border-right": ["borderStyle", "borderCollapse", "color"],
- "border-bottom": ["borderStyle", "borderCollapse", "color"],
- "border-left": ["borderStyle", "borderCollapse", "color"],
- "border-collapse": ["borderCollapse"],
- "border-color": ["color"],
- "border-top-color": ["color"],
- "border-right-color": ["color"],
- "border-bottom-color": ["color"],
- "border-left-color": ["color"],
- "border-spacing": ["length"],
- "border-style": ["borderStyle"],
- "border-top-style": ["borderStyle"],
- "border-right-style": ["borderStyle"],
- "border-bottom-style": ["borderStyle"],
- "border-left-style": ["borderStyle"],
- "border-width": ["thickness", "length"],
- "border-top-width": ["thickness", "length"],
- "border-right-width": ["thickness", "length"],
- "border-bottom-width": ["thickness", "length"],
- "border-left-width": ["thickness", "length"],
- "border-radius": ["length"], // FF 4.0
- "border-top-left-radius": ["length"], // FF 4.0
- "border-top-right-radius": ["length"], // FF 4.0
- "border-bottom-right-radius": ["length"], // FF 4.0
- "border-bottom-left-radius": ["length"], // FF 4.0
- "border-image": ["borderImageRepeat", "thickness", "url()", "none"], // FF 15.0
- "border-image-outset": ["length"], // FF 15.0
- "border-image-repeat": ["borderImageRepeat"], // FF 15.0
- "border-image-slice": ["fill"],
- "border-image-source": ["image", "none"],
- "border-image-width": ["auto", "length"], // FF 15.0
-
- "top": ["auto", "length"],
- "right": ["auto", "length"],
- "bottom": ["auto", "length"],
- "left": ["auto", "length"],
- "height": ["auto", "length"],
- "caption-side": ["captionSide"],
- "clear": ["clear", "none"],
- "clip": ["shape", "auto"],
- "color": ["color"],
- "content": ["string", "none", "normal"],
- "counter-increment": ["none"],
- "counter-reset": ["none"],
- "cursor": ["cursor", "url()", "none"],
- "direction": ["direction"],
- "display": ["display"],
- "empty-cells": ["emptyCells"],
- "float": ["float"],
-
- "align-items": ["alignItems"],
- "align-self": ["alignSelf"],
- "flex": ["flexBasis"],
- "flex-basis": ["flexBasis"],
- "flex-direction": ["flexDirection"],
- "flex-grow": [],
- "flex-shrink": [],
- "justify-content": ["justifyContent"],
- "order": [],
-
- // specification of font families in "font" is special-cased
- "font": ["fontStyle", "fontVariant", "namedFontWeight", "fontSize", "lineHeight", "mozFont"],
- "font-family": ["fontFamily"],
- "font-size": ["fontSize", "length"],
- "font-size-adjust": ["none"],
- "font-stretch": ["fontStretch"],
- "font-style": ["fontStyle"],
- "font-variant": ["fontVariant"],
- "font-weight": ["fontWeight"],
-
- "ime-mode": ["imeMode"], // FF 3.0
- "letter-spacing": ["normal", "length"],
- "line-height": ["lineHeight", "length"],
- "word-break": ["wordBreak"],
-
- "list-style": ["listStyleType", "listStylePosition"],
- "list-style-image": ["url()", "none"],
- "list-style-position": ["listStylePosition"],
- "list-style-type": ["listStyleType"],
-
- "margin": ["auto", "length"],
- "margin-top": ["auto", "length"],
- "margin-right": ["auto", "length"],
- "margin-bottom": ["auto", "length"],
- "margin-left": ["auto", "length"],
-
- "marker-offset": ["auto", "length"],
- "min-height": ["length"],
- "max-height": ["none", "length"],
- "min-width": ["width", "length"],
- "max-width": ["width", "none", "length"],
-
- "opacity": [],
-
- "outline": ["color", "borderStyle", "thickness", "auto"],
- "outline-color": ["color"],
- "outline-style": ["borderStyle", "auto"],
- "outline-width": ["thickness", "length"],
- "outline-offset": ["length"],
-
- "overflow": ["overflow", "auto"],
- "overflow-x": ["overflow", "auto"],
- "overflow-y": ["overflow", "auto"],
-
- "padding": ["length"],
- "padding-top": ["length"],
- "padding-right": ["length"],
- "padding-bottom": ["length"],
- "padding-left": ["length"],
-
- "page-break-after": ["pageBreak"],
- "page-break-before": ["pageBreak"],
- "pointer-events": ["auto", "none"],
- "position": ["elPosition"],
- "quotes": ["none"],
- "resize": ["resize"], // FF 4.0
- "table-layout": ["tableLayout"],
- "text-align": ["textAlign"],
- "-moz-text-align-last": ["textAlign"], // FF 12.0
- "box-shadow": ["boxShadow", "color", "none", "length"], // FF 4.0
- "text-decoration": ["textDecoration"],
- "text-indent": ["length"],
- "text-rendering": ["textRendering"],
- "text-shadow": ["color", "length"],
- "text-transform": ["textTransform"],
- "transition": ["transitionProperty", "timingFunction"],
- "transition-property": ["transitionProperty"],
- "transition-duration": [],
- "transition-timing-function": ["timingFunction"],
- "transition-delay": [],
- "transform": ["transformFunction", "none", "length"],
- "transform-origin": ["position", "length"],
- "transform-style": ["transformStyle"],
- "unicode-bidi": ["unicodeBidi"],
- "vertical-align": ["verticalAlign", "length"],
- "visibility": ["visibility"],
- "white-space": ["whiteSpace"],
- "width": ["width", "length", "auto"],
- "word-spacing": ["normal", "length"],
- "word-wrap": ["wordWrap"], // FF 3.5
- "z-index": ["auto"],
-
- "-moz-appearance": ["mozAppearance"],
- "-moz-backface-visibility": ["mozBackfaceVisibility"], // FF 10.0
- "-moz-border-top-colors": ["color"],
- "-moz-border-right-colors": ["color"],
- "-moz-border-bottom-colors": ["color"],
- "-moz-border-left-colors": ["color"],
- "-moz-border-start": ["borderStyle", "borderCollapse", "color", "none"],
- "-moz-border-end": ["borderStyle", "borderCollapse", "color", "none"],
- "-moz-border-start-color": ["color"],
- "-moz-border-end-color": ["color"],
- "-moz-border-start-style": ["borderStyle"],
- "-moz-border-end-style": ["borderStyle"],
- "-moz-border-start-width": ["thickness"],
- "-moz-border-end-width": ["thickness"],
- "-moz-box-align": ["mozBoxAlign"],
- "-moz-box-direction": ["mozBoxDirection"],
- "-moz-box-flex": [],
- "-moz-box-ordinal-group": [],
- "-moz-box-orient": ["mozBoxOrient"],
- "-moz-box-pack": ["mozBoxPack"],
- "-moz-box-sizing": ["mozBoxSizing"],
- "-moz-user-focus": ["userFocus", "none"],
- "-moz-user-input": ["userInput", "none"],
- "-moz-user-modify": ["mozUserModify"],
- "-moz-user-select": ["userSelect", "none"],
- "-moz-background-inline-policy": [],
- "-moz-binding": ["url()", "none"],
- "-moz-columns": ["auto", "length"],
- "-moz-column-count": ["auto"],
- "-moz-column-gap": ["normal", "length"],
- "-moz-column-rule": ["thickness", "borderStyle", "color"],
- "-moz-column-rule-width": ["thickness", "length"],
- "-moz-column-rule-style": ["borderStyle"],
- "-moz-column-rule-color": ["color"],
- "-moz-column-width": ["auto", "length"],
- "-moz-image-region": ["rect()"],
- "-moz-font-feature-settings": ["mozFontFeatureSettings"], // FF 4.0
- "-moz-font-language-override": ["normal"],
- "-moz-tab-size": [], // FF 4.0,
- "orient": ["horizontal", "vertical"], // FF 6.0
- "-moz-text-blink": ["none", "blink"], // FF 6.0
- "-moz-text-decoration-color": ["color"], // FF 6.0
- "-moz-text-decoration-line": ["mozTextDecorationLine"], // FF 6.0
- "-moz-text-decoration-style": ["mozTextDecorationStyle"], // FF 6.0
- "-moz-hyphens": ["mozHyphens"], // FF 6.0
- "text-overflow": ["textOverflow"], // FF 7.0
- "-moz-perspective": ["none", "length"], // FF 10.0
- "-moz-perspective-origin": ["position", "length"] // FF 10.0
-};
-
-// ::-moz-progress-bar // FF 6 TODO
-
-Css.cssInfo.svg =
-{
- "alignment-baseline": ["svgAlignmentBaseline"],
- "baseline-shift": ["baselineShift"],
- "clip": ["auto", "length"],
- "clip-path": ["url()", "none"],
- "clip-rule": ["clipRule"],
- "color": ["color"],
- "color-interpolation": ["colorInterpolation"],
- "color-interpolation-filters": ["colorInterpolation"],
- "color-profile": ["colorProfile"],
- "color-rendering": ["colorRendering"],
- "cursor": ["cursor", "url()"],
- "direction": ["direction"],
- "display": ["display"],
- "dominant-baseline": ["dominantBaseline"],
- "enable-background": ["accumulate"],
- "fill": ["clipRule"],
- "fill-opacity": [],
- "fill-rule": ["clipRule"],
- "filter": ["url()", "none"],
- "flood-color": ["currentColor"],
- "flood-opacity": [],
- "font": ["fontStyle", "fontSize", "fontVariant", "namedFontWeight"],
- "font-family": ["fontFamily"],
- "font-size": ["fontSize"],
- "font-size-adjust": [],
- "font-stretch": ["fontStretch"],
- "font-style": ["fontStyle"],
- "font-variant": ["fontVariant"],
- "font-weight": ["fontWeight"],
- "glyph-orientation-horizontal": [],
- "glyph-orientation-vertical": ["auto"],
- "image-rendering": ["imageRendering"], // FF 3.6
- "kerning": ["auto"],
- "letter-spacing": ["normal"],
- "lighting-color": ["currentColor"],
- "marker": ["none"],
- "marker-end": ["none"],
- "mask": ["url()", "none"],
- "opacity": [],
- "overflow": ["auto", "svgOverflow"],
- "pointer-events": ["pointerEvents"], // FF 1.5/3.6
- "shape-rendering": ["auto", "shapeRendering"],
- "stop-color": ["currentColor"],
- "stop-opacity": [],
- "stroke": [],
- "stroke-dasharray": ["none"],
- "stroke-dashoffset": [],
- "stroke-linecap": ["strokeLinecap"],
- "stroke-linejoin": ["strokeLinejoin"],
- "stroke-miterlimit": [],
- "stroke-opacity": [],
- "stroke-width": [],
- "text-anchor": ["mozBoxPack"],
- "text-decoration": ["textDecoration"],
- "text-rendering": ["textRendering"],
- "unicode-bidi": ["unicodeBidi"],
- "visibility": ["visibility"],
- "word-spacing": ["normal"],
- "writing-mode": ["writingMode"]
-};
-
-Css.multiValuedProperties =
-{
- "animation": 1,
- "background": 1,
- "background-position": 1,
- "border": 1,
- "border-color": 1,
- "border-style": 1,
- "border-width": 1,
- "border-radius": 1,
- "box-shadow": 1,
- "font": 1,
- "font-family": 1,
- "margin": 1,
- "padding": 1
-};
-
-Css.unitlessProperties =
-{
- "counter-increment": 1,
- "counter-reset": 1,
- "font-size-adjust": 1,
- "font-weight": 1,
- "line-height": 1,
- "opacity": 1,
- "orphans": 1,
- "widows": 1,
- "z-index": 1,
- "-moz-column-count": 1
-};
-
-Css.cssKeywords =
-{
- "mozAppearance":
- [
- "none",
- "button",
- "button-arrow-down",
- "button-arrow-next",
- "button-arrow-previous",
- "button-arrow-up",
- "button-bevel",
- "button-focus",
- "caret",
- "checkbox",
- "checkbox-container",
- "checkbox-label",
- "checkmenuitem",
- "dualbutton",
- "groupbox",
- "listbox",
- "listitem",
- "menuarrow",
- "menubar",
- "menucheckbox",
- "menuimage",
- "menuitem",
- "menuitemtext",
- "menulist",
- "menulist-button",
- "menulist-text",
- "menulist-textfield",
- "menupopup",
- "menuradio",
- "menuseparator",
- "meterbar",
- "meterchunk",
- "progressbar",
- "progressbar-vertical",
- "progresschunk",
- "progresschunk-vertical",
- "radio",
- "radio-container",
- "radio-label",
- "radiomenuitem",
- "resizer",
- "resizerpanel",
- "scale-horizontal",
- "scalethumbend",
- "scalethumb-horizontal",
- "scalethumbstart",
- "scalethumbtick",
- "scalethumb-vertical",
- "scale-vertical",
- "scrollbarbutton-down",
- "scrollbarbutton-left",
- "scrollbarbutton-right",
- "scrollbarbutton-up",
- "scrollbarthumb-horizontal",
- "scrollbarthumb-vertical",
- "scrollbartrack-horizontal",
- "scrollbartrack-vertical",
- "searchfield",
- "separator",
- "sheet",
- "spinner",
- "spinner-downbutton",
- "spinner-textfield",
- "spinner-upbutton",
- "splitter",
- "statusbar",
- "statusbarpanel",
- "tab",
- "tabpanel",
- "tabpanels",
- "tab-scroll-arrow-back",
- "tab-scroll-arrow-forward",
- "textfield",
- "textfield-multiline",
- "toolbar",
- "toolbarbutton",
- "toolbarbutton-dropdown",
- "toolbargripper",
- "toolbox",
- "tooltip",
- "treeheader",
- "treeheadercell",
- "treeheadersortarrow",
- "treeitem",
- "treeline",
- "treetwisty",
- "treetwistyopen",
- "treeview",
-
- "-moz-mac-unified-toolbar",
- "-moz-win-borderless-glass", // FF 4.0
- "-moz-win-browsertabbar-toolbox",
- "-moz-win-communicationstext",
- "-moz-win-communications-toolbox",
- "-moz-win-exclude-glass", // FF 6.0
- "-moz-win-glass",
- "-moz-win-mediatext",
- "-moz-win-media-toolbox",
- "-moz-window-button-box",
- "-moz-window-button-box-maximized",
- "-moz-window-button-close",
- "-moz-window-button-maximize",
- "-moz-window-button-minimize",
- "-moz-window-button-restore",
- "-moz-window-frame-bottom",
- "-moz-window-frame-left",
- "-moz-window-frame-right",
- "-moz-window-titlebar",
- "-moz-window-titlebar-maximized"
- ],
-
- "mozBackfaceVisibility":
- [
- "visible",
- "hidden"
- ],
-
- "color":
- [
- // Color functions
- "rgb()",
- "rgba()",
- "hsl()",
- "hsla()",
-
- // Color keywords
- "aliceblue",
- "antiquewhite",
- "aqua",
- "aquamarine",
- "azure",
- "beige",
- "bisque",
- "black",
- "blanchedalmond",
- "blue",
- "blueviolet",
- "brown",
- "burlywood",
- "cadetblue",
- "chartreuse",
- "chocolate",
- "coral",
- "cornflowerblue",
- "cornsilk",
- "crimson",
- "cyan",
- "darkblue",
- "darkcyan",
- "darkgoldenrod",
- "darkgray",
- "darkgreen",
- "darkgrey",
- "darkkhaki",
- "darkmagenta",
- "darkolivegreen",
- "darkorange",
- "darkorchid",
- "darkred",
- "darksalmon",
- "darkseagreen",
- "darkslateblue",
- "darkslategray",
- "darkslategrey",
- "darkturquoise",
- "darkviolet",
- "deeppink",
- "deepskyblue",
- "dimgray",
- "dimgrey",
- "dodgerblue",
- "firebrick",
- "floralwhite",
- "forestgreen",
- "fuchsia",
- "gainsboro",
- "ghostwhite",
- "gold",
- "goldenrod",
- "gray",
- "green",
- "greenyellow",
- "grey",
- "honeydew",
- "hotpink",
- "indianred",
- "indigo",
- "ivory",
- "khaki",
- "lavender",
- "lavenderblush",
- "lawngreen",
- "lemonchiffon",
- "lightblue",
- "lightcoral",
- "lightcyan",
- "lightgoldenrodyellow",
- "lightgray",
- "lightgreen",
- "lightgrey",
- "lightpink",
- "lightsalmon",
- "lightseagreen",
- "lightskyblue",
- "lightslategray",
- "lightslategrey",
- "lightsteelblue",
- "lightyellow",
- "lime",
- "limegreen",
- "linen",
- "magenta",
- "maroon",
- "mediumaquamarine",
- "mediumblue",
- "mediumorchid",
- "mediumpurple",
- "mediumseagreen",
- "mediumslateblue",
- "mediumspringgreen",
- "mediumturquoise",
- "mediumvioletred",
- "midnightblue",
- "mintcream",
- "mistyrose",
- "moccasin",
- "navajowhite",
- "navy",
- "oldlace",
- "olive",
- "olivedrab",
- "orange",
- "orangered",
- "orchid",
- "palegoldenrod",
- "palegreen",
- "paleturquoise",
- "palevioletred",
- "papayawhip",
- "peachpuff",
- "peru",
- "pink",
- "plum",
- "powderblue",
- "purple",
- "red",
- "rosybrown",
- "royalblue",
- "saddlebrown",
- "salmon",
- "sandybrown",
- "seagreen",
- "seashell",
- "sienna",
- "silver",
- "skyblue",
- "slateblue",
- "slategray",
- "slategrey",
- "snow",
- "springgreen",
- "steelblue",
- "tan",
- "teal",
- "thistle",
- "tomato",
- "turquoise",
- "violet",
- "wheat",
- "white",
- "whitesmoke",
- "yellow",
- "yellowgreen",
-
- // Special color keywords
- "transparent",
- "currentColor",
-
- // System colors
- "ActiveBorder",
- "ActiveCaption",
- "AppWorkspace",
- "Background",
- "ButtonFace",
- "ButtonHighlight",
- "ButtonShadow",
- "ButtonText",
- "CaptionText",
- "GrayText",
- "Highlight",
- "HighlightText",
- "InactiveBorder",
- "InactiveCaption",
- "InactiveCaptionText",
- "InfoBackground",
- "InfoText",
- "Menu",
- "MenuText",
- "Scrollbar",
- "ThreeDDarkShadow",
- "ThreeDFace",
- "ThreeDHighlight",
- "ThreeDLightShadow",
- "ThreeDShadow",
- "Window",
- "WindowFrame",
- "WindowText",
-
- // Mozilla system color extensions
- "-moz-ButtonDefault",
- "-moz-ButtonHoverFace",
- "-moz-ButtonHoverText",
- "-moz-CellHighlight",
- "-moz-CellHighlightText",
- "-moz-Combobox",
- "-moz-ComboboxText",
- "-moz-Dialog",
- "-moz-DialogText",
- "-moz-dragtargetzone",
- "-moz-EvenTreeRow",
- "-moz-Field",
- "-moz-FieldText",
- "-moz-html-CellHighlight",
- "-moz-html-CellHighlightText",
- "-moz-mac-accentdarkestshadow",
- "-moz-mac-accentdarkshadow",
- "-moz-mac-accentface",
- "-moz-mac-accentlightesthighlight",
- "-moz-mac-accentlightshadow",
- "-moz-mac-accentregularhighlight",
- "-moz-mac-accentregularshadow",
- "-moz-mac-chrome-active",
- "-moz-mac-chrome-inactive",
- "-moz-mac-focusring",
- "-moz-mac-menuselect",
- "-moz-mac-menushadow",
- "-moz-mac-menutextselect",
- "-moz-MenuHover",
- "-moz-MenuHoverText",
- "-moz-MenuBarText",
- "-moz-MenuBarHoverText",
- "-moz-nativehyperlinktext",
- "-moz-OddTreeRow",
- "-moz-win-communicationstext",
- "-moz-win-mediatext",
-
- // Mozilla color preference extensions
- "-moz-activehyperlinktext",
- "-moz-default-background-color", // FF 5.0
- "-moz-default-color", // FF 5.0
- "-moz-hyperlinktext",
- "-moz-visitedhyperlinktext"
- ],
-
- "auto":
- [
- "auto"
- ],
-
- "none":
- [
- "none"
- ],
-
- "normal":
- [
- "normal"
- ],
-
- "captionSide":
- [
- "top",
- "bottom",
- "left",
- "right"
- ],
-
- "emptyCells":
- [
- "show",
- "hide",
- "-moz-show-background"
- ],
-
- "alignItems":
- [
- "flex-start",
- "flex-end",
- "center",
- "baseline",
- "stretch"
- ],
-
- "alignSelf":
- [
- "auto",
- "flex-start",
- "flex-end",
- "center",
- "baseline",
- "stretch"
- ],
-
- "flexBasis":
- [
- "initial",
- "auto"
- ],
-
- "flexDirection":
- [
- "row",
- "row-reverse",
- "column",
- "column-reverse"
- ],
-
- "justifyContent":
- [
- "flex-start",
- "flex-end",
- "center",
- "space-between",
- "space-around"
- ],
-
- "clear":
- [
- "left",
- "right",
- "both"
- ],
-
- "cursor":
- [
- "auto",
- "default",
- "pointer",
- "text",
- "crosshair",
- "move",
- "help",
- "no-drop",
- "not-allowed",
- "none", // FF 3.0
- "-moz-grab",
- "-moz-grabbing",
- "-moz-zoom-in",
- "-moz-zoom-out",
- "e-resize",
- "all-scroll",
- "ne-resize",
- "nw-resize",
- "n-resize",
- "se-resize",
- "sw-resize",
- "s-resize",
- "w-resize",
- "ew-resize",
- "ns-resize",
- "nesw-resize",
- "nwse-resize",
- "col-resize",
- "row-resize",
- "cell",
- "context-menu",
- "progress",
- "vertical-text",
- "wait",
- "copy",
- "alias"
- ],
-
- "boxModels": // FF 4.0
- [
- "padding-box",
- "border-box",
- "content-box"
- ],
-
- "direction":
- [
- "ltr",
- "rtl"
- ],
-
- "bgAttachment":
- [
- "scroll",
- "fixed"
- ],
-
- "position":
- [
- "top",
- "center",
- "bottom",
- "left",
- "right"
- ],
-
- "bgRepeat":
- [
- "repeat",
- "repeat-x",
- "repeat-y",
- "no-repeat"
- ],
-
- "bgSize": // FF 4.0
- [
- "auto",
- "cover",
- "contain"
- ],
-
- "borderStyle":
- [
- "solid",
- "none",
- "dotted",
- "dashed",
- "double",
- "hidden",
- "groove",
- "ridge",
- "inset",
- "outset",
- "-moz-bg-inset",
- "-moz-bg-outset",
- "-moz-bg-solid"
- ],
-
- "borderCollapse":
- [
- "collapse",
- "separate"
- ],
-
- "overflow":
- [
- "visible",
- "hidden",
- "scroll",
- "auto",
- "-moz-hidden-unscrollable"
- ],
-
- "listStyleType":
- [
- "none",
- "disc",
- "circle",
- "square",
- "decimal",
- "decimal-leading-zero",
- "lower-roman",
- "upper-roman",
- "lower-greek",
- "lower-alpha",
- "lower-latin",
- "upper-alpha",
- "upper-latin",
- "armenian",
- "georgian",
- "hebrew",
- "cjk-ideographic",
- "hiragana",
- "katakana",
- "hiragana-iroha",
- "katakana-iroha",
- "-moz-arabic-indic",
- "-moz-bengali",
- "-moz-cjk-earthly-branch",
- "-moz-cjk-heavenly-stem",
- "-moz-devanagari",
- "-moz-ethiopic-halehame",
- "-moz-ethiopic-halehame-am",
- "-moz-ethiopic-halehame-ti-er",
- "-moz-ethiopic-halehame-ti-et",
- "-moz-ethiopic-numeric",
- "-moz-gujarati",
- "-moz-gurmukhi",
- "-moz-hangul",
- "-moz-hangul-consonant",
- "-moz-japanese-formal",
- "-moz-japanese-informal",
- "-moz-kannada",
- "-moz-khmer",
- "-moz-lao",
- "-moz-malayalam",
- "-moz-myanmar",
- "-moz-oriya",
- "-moz-persian",
- "-moz-simp-chinese-formal",
- "-moz-simp-chinese-informal",
- "-moz-tamil",
- "-moz-telugu",
- "-moz-thai",
- "-moz-trad-chinese-formal",
- "-moz-trad-chinese-informal",
- "-moz-urdu"
- ],
-
- "listStylePosition":
- [
- "inside",
- "outside"
- ],
-
- "string":
- [
- "open-quote",
- "close-quote",
- "no-open-quote",
- "no-close-quote",
- "url()",
- "attr()",
- "counter()",
- "counters()"
- ],
-
- "fontStyle":
- [
- "normal",
- "italic",
- "oblique"
- ],
-
- "fontVariant":
- [
- "normal",
- "small-caps"
- ],
-
- // Named font-weight values, worth completing in "font"
- "namedFontWeight":
- [
- // Absolute keywords
- "normal",
- "bold",
-
- // Relative keywords
- "bolder",
- "lighter"
- ],
-
- "fontWeight":
- [
- // Absolute keywords
- "normal",
- "bold",
-
- // Relative keywords
- "bolder",
- "lighter",
-
- // Numeric values
- "100",
- "200",
- "300",
- "400",
- "500",
- "600",
- "700",
- "800",
- "900"
- ],
-
- "fontSize":
- [
- // Absolute size keywords
- "xx-small",
- "x-small",
- "small",
- "medium",
- "large",
- "x-large",
- "xx-large",
-
- // Relative size keywords
- "smaller",
- "larger"
- ],
-
- "lineHeight":
- [
- "normal"
- ],
-
- "wordBreak":
- [
- "normal",
- "break-all",
- "keep-all"
- ],
-
- "fontFamily":
- [
- // Common font families
- "Arial",
- "Comic Sans MS",
- "Georgia",
- "Tahoma",
- "Verdana",
- "Times New Roman",
- "Trebuchet MS",
- "Lucida Console",
- "Lucida Grande",
- "Helvetica",
-
- // Generic font families
- "serif",
- "sans-serif",
- "cursive",
- "fantasy",
- "monospace",
-
- // Additional font families
- "caption",
- "icon",
- "menu",
- "message-box",
- "small-caption",
- "status-bar",
- "-moz-fixed"
- ],
-
- "mozFont":
- [
- "-moz-button",
- "-moz-info",
- "-moz-desktop",
- "-moz-dialog",
- "-moz-document",
- "-moz-workspace",
- "-moz-window",
- "-moz-list",
- "-moz-pull-down-menu",
- "-moz-field"
- ],
-
- "display":
- [
- "block",
- "none",
- "inline",
- "inline-block",
- "list-item",
- "flex",
- "inline-flex",
- "marker",
- "run-in",
- "compact",
- "table",
- "inline-table",
- "table-row-group",
- "table-column",
- "table-column-group",
- "table-header-group",
- "table-footer-group",
- "table-row",
- "table-cell",
- "table-caption",
- "-moz-box",
- "-moz-compact",
- "-moz-deck",
- "-moz-grid",
- "-moz-grid-group",
- "-moz-grid-line",
- "-moz-groupbox",
- "-moz-inline-box",
- "-moz-inline-grid",
- "-moz-inline-stack",
- "-moz-marker",
- "-moz-popup",
- "-moz-stack"
- ],
-
- "elPosition":
- [
- "static",
- "relative",
- "absolute",
- "fixed"
- ],
-
- "float":
- [
- "left",
- "right",
- "none"
- ],
-
- "textAlign":
- [
- "left",
- "right",
- "center",
- "justify",
- "start",
- "end", // FF 3.6
-
- "-moz-center",
- "-moz-left",
- "-moz-right"
- ],
-
- "tableLayout":
- [
- "fixed",
- "auto"
- ],
-
- "textDecoration":
- [
- "none",
- "underline",
- "overline",
- "line-through",
- "blink",
- "-moz-anchor-decoration"
- ],
-
- "textTransform":
- [
- "capitalize",
- "lowercase",
- "uppercase",
- "none"
- ],
-
- "unicodeBidi":
- [
- "normal",
- "embed",
- "bidi-override",
- "-moz-isolate", // FF 10.0
- "-moz-plaintext" // FF 10.0
- ],
-
- "visibility":
- [
- "visible",
- "hidden",
- "collapse"
- ],
-
- "whiteSpace":
- [
- "normal",
- "pre",
- "nowrap",
- "pre-wrap", // FF 3.0
- "pre-line" // FF 3.5
- ],
-
- "verticalAlign":
- [
- "baseline",
- "sub",
- "super",
- "top",
- "middle",
- "bottom",
- "text-top",
- "text-bottom"
- ],
-
- "thickness":
- [
- "thin",
- "medium",
- "thick"
- ],
-
- "shape":
- [
- "rect()"
- ],
-
- "userFocus":
- [
- "ignore",
- "normal"
- ],
-
- "userInput":
- [
- "disabled",
- "enabled"
- ],
-
- "mozUserModify":
- [
- "read-only",
- "read-write",
- "write-only"
- ],
-
- "userSelect":
- [
- "text",
- "-moz-none",
- "all",
- "element"
- ],
-
- "mozBoxSizing":
- [
- "content-box",
- "padding-box",
- "border-box"
- ],
-
- "mozBoxAlign":
- [
- "start",
- "center",
- "end",
- "baseline",
- "stretch"
- ],
-
- "mozBoxDirection":
- [
- "normal",
- "reverse"
- ],
-
- "mozBoxOrient":
- [
- "horizontal",
- "vertical",
- "inline-axis",
- "block-axis"
- ],
-
- "mozBoxPack":
- [
- "start",
- "center",
- "end",
- "justify"
- ],
-
- "boxShadow":
- [
- "inset"
- ],
-
- "borderImageRepeat":
- [
- "stretch",
- "round",
- "repeat",
- "space"
- ],
-
- "image":
- [
- "url()",
- "linear-gradient()",
- "radial-gradient()",
- "repeating-linear-gradient()",
- "repeating-radial-gradient()",
- "-moz-linear-gradient()",
- "-moz-radial-gradient()",
- "-moz-repeating-linear-gradient()",
- "-moz-repeating-radial-gradient()",
- "-moz-image-rect()",
- "-moz-element()",
- ],
-
- "length":
- [
- "calc()"
- ],
-
- "transformFunction":
- [
- "matrix()",
- "matrix3d()",
- "rotate()",
- "rotateX()",
- "rotateY()",
- "rotateZ()",
- "scale()",
- "scaleX()",
- "scaleY()",
- "scaleZ()",
- "scale3d()",
- "scaleZ()",
- "skewX()",
- "skewY()",
- "translate()",
- "translateX()",
- "translateY()",
- "translateZ()"
- ],
-
- "mozFontFeatureSettings":
- [
- "normal",
- "on",
- "off",
-
- // Font features
- // Doesn't include cv01-cv99
- "\"aalt\"",
- "\"abvf\"",
- "\"abvm\"",
- "\"abvs\"",
- "\"afrc\"",
- "\"akhn\"",
- "\"blwf\"",
- "\"blwm\"",
- "\"blws\"",
- "\"calt\"",
- "\"case\"",
- "\"ccmp\"",
- "\"cfar\"",
- "\"cjct\"",
- "\"clig\"",
- "\"cpct\"",
- "\"cpsp\"",
- "\"cswh\"",
- "\"curs\"",
- "\"c2pc\"",
- "\"c2sc\"",
- "\"dist\"",
- "\"dlig\"",
- "\"dnom\"",
- "\"expt\"",
- "\"falt\"",
- "\"fin2\"",
- "\"fin3\"",
- "\"fina\"",
- "\"frac\"",
- "\"fwid\"",
- "\"half\"",
- "\"haln\"",
- "\"halt\"",
- "\"hist\"",
- "\"hkna\"",
- "\"hlig\"",
- "\"hngl\"",
- "\"hojo\"",
- "\"hwid\"",
- "\"init\"",
- "\"isol\"",
- "\"ital\"",
- "\"jalt\"",
- "\"jp78\"",
- "\"jp83\"",
- "\"jp90\"",
- "\"jp04\"",
- "\"kern\"",
- "\"lfbd\"",
- "\"liga\"",
- "\"ljmo\"",
- "\"lnum\"",
- "\"locl\"",
- "\"ltra\"",
- "\"ltrm\"",
- "\"mark\"",
- "\"med2\"",
- "\"medi\"",
- "\"mgrk\"",
- "\"mkmk\"",
- "\"mset\"",
- "\"nalt\"",
- "\"nlck\"",
- "\"nukt\"",
- "\"numr\"",
- "\"onum\"",
- "\"opbd\"",
- "\"ordn\"",
- "\"ornm\"",
- "\"palt\"",
- "\"pcap\"",
- "\"pkna\"",
- "\"pnum\"",
- "\"pref\"",
- "\"pres\"",
- "\"pstf\"",
- "\"psts\"",
- "\"pwid\"",
- "\"qwid\"",
- "\"rand\"",
- "\"rkrf\"",
- "\"rlig\"",
- "\"rphf\"",
- "\"rtbd\"",
- "\"rtla\"",
- "\"rtlm\"",
- "\"ruby\"",
- "\"salt\"",
- "\"sinf\"",
- "\"size\"",
- "\"smcp\"",
- "\"smpl\"",
- "\"ss01\"",
- "\"ss02\"",
- "\"ss03\"",
- "\"ss04\"",
- "\"ss05\"",
- "\"ss06\"",
- "\"ss07\"",
- "\"ss08\"",
- "\"ss09\"",
- "\"ss10\"",
- "\"ss11\"",
- "\"ss12\"",
- "\"ss13\"",
- "\"ss14\"",
- "\"ss15\"",
- "\"ss16\"",
- "\"ss17\"",
- "\"ss18\"",
- "\"ss19\"",
- "\"ss20\"",
- "\"subs\"",
- "\"sups\"",
- "\"swsh\"",
- "\"titl\"",
- "\"tjmo\"",
- "\"tnam\"",
- "\"tnum\"",
- "\"trad\"",
- "\"twid\"",
- "\"unic\"",
- "\"valt\"",
- "\"vatu\"",
- "\"vert\"",
- "\"vhal\"",
- "\"vjmo\"",
- "\"vkna\"",
- "\"vkrn\"",
- "\"vpal\"",
- "\"vrt2\"",
- "\"zero\""
- ],
-
- // FF 10.0
- "transformStyle":
- [
- "preserve-3d",
- "flat"
- ],
-
- // FF 4.0
- "transitionProperty":
- [
- "none",
- "all",
- "background-color",
- "background-image",
- "background-position",
- "background-size",
- "border-color",
- "border-radius",
- "border-width",
- "border-spacing",
- "bottom",
- "box-shadow",
- "color",
- "clip",
- "fill",
- "fill-opacity",
- "flood-color",
- "font-size",
- "font-size-adjust",
- "font-stretch",
- "font-weight",
- "height",
- "left",
- "letter-spacing",
- "lighting-color",
- "line-height",
- "margin ",
- "marker-offset",
- "max-height",
- "max-width",
- "min-height",
- "min-width",
- "opacity",
- "outline-color",
- "outline-offset",
- "outline-width",
- "padding",
- "right",
- "stop-color",
- "stop-opacity",
- "stroke",
- "stroke-dasharray",
- "stroke-dashoffset",
- "stroke-miterlimit",
- "stroke-opacity",
- "stroke-width",
- "text-indent",
- "text-shadow",
- "top",
- "transform-origin",
- "transform",
- "vertical-align",
- "visibility",
- "width",
- "word-spacing",
- "z-index",
- "-moz-box-flex",
- "-moz-column-count",
- "-moz-column-gap",
- "-moz-column-rule-color",
- "-moz-column-rule-width",
- "-moz-column-width",
- "-moz-image-region",
- "-moz-outline-radius"
- ],
-
- "timingFunction": // FF 4.0
- [
- "cubic-bezier()",
- "ease",
- "ease-in",
- "ease-in-out",
- "ease-out",
- "linear",
- "step-start",
- "step-end",
- "steps()"
- ],
-
- "mozTextDecorationLine": // FF 6.0
- [
- "underline",
- "overline",
- "line-through",
- "none"
- ],
-
- "mozTextDecorationStyle": // FF 6.0
- [
- "solid",
- "double",
- "dotted",
- "dashed",
- "wavy"
- ],
-
- "mozHyphens": // FF 6.0
- [
- "none",
- "manual",
- "auto"
- ],
-
- // FF 7.0
- "textOverflow":
- [
- "clip",
- "ellipsis"
- ],
-
- // FF 3.0
- "width":
- [
- "-moz-max-content",
- "-moz-min-content",
- "-moz-fit-content",
- "-moz-available"
- ],
-
- "imeMode":
- [
- "auto",
- "normal",
- "active",
- "inactive",
- "disabled"
- ],
-
- // FF 3.0
- "textRendering":
- [
- "auto",
- "optimizeSpeed",
- "optimizeLegibility",
- "geometricPrecision"
- ],
-
- "wordWrap":
- [
- "normal",
- "break-word"
- ],
-
- "pageBreak":
- [
- "auto",
- "always",
- "avoid",
- "left",
- "right"
- ],
-
- // start SVG specific
-
- "alignmentBaseline":
- [
- "auto",
- "baseline",
- "before-edge",
- "text-before-edge",
- "middle",
- "central",
- "after-edge",
- "text-after-edge",
- "ideographic",
- "alphabetic",
- "hanging",
- "mathematical"
- ],
-
- "baselineShift":
- [
- "baseline",
- "sub",
- "super"
- ],
-
- "colorInterpolation":
- [
- "auto",
- "sRGB",
- "linearRGB"
- ],
-
- "clipRule":
- [
- "nonzero",
- "evenodd"
- ],
-
- "colorProfile":
- [
- "auto",
- "sRGB"
- ],
-
- "colorRendering":
- [
- "auto",
- "optimizeSpeed",
- "optimizeQuality"
- ],
-
- "dominantBaseline":
- [
- "auto",
- "use-script",
- "no-change",
- "reset-size",
- "ideographic",
- "alphabetic",
- "hanging",
- "mathematical",
- "central",
- "middle",
- "text-after-edge",
- "text-before-edge"
- ],
-
- "accumulate":
- [
- "accumulate"
- ],
-
- "fontStretch":
- [
- "normal",
- "wider",
- "narrower",
- "ultra-condensed",
- "extra-condensed",
- "condensed",
- "semi-condensed",
- "semi-expanded",
- "expanded",
- "extra-expanded",
- "ultra-expanded"
- ],
-
- "imageRendering":
- [
- "auto",
- "optimizespeed",
- "optimizequality",
- "-moz-crisp-edges"
- ],
-
- "svgOverflow":
- [
- "visible",
- "hidden",
- "scroll"
- ],
-
- "pointerEvents":
- [
- "none",
- "all",
- "auto",
- "visiblePainted",
- "visibleFill",
- "visibleStroke",
- "visible",
- "painted",
- "fill",
- "stroke"
- ],
-
- "shapeRendering":
- [
- "optimizeSpeed",
- "crispEdges",
- "geometricPrecision"
- ],
-
- "strokeLinecap":
- [
- "butt",
- "round",
- "square"
- ],
-
- "strokeLinejoin":
- [
- "miter",
- "round",
- "bevel"
- ],
-
- "writingMode":
- [
- "lr-tb",
- "rl-tb",
- "tb-rl",
- "lr",
- "rl",
- "tb"
- ],
-
- "resize":
- [
- "none",
- "both",
- "horizontal",
- "vertical"
- ]
-};
-
-// Most common supported charsets according to http://en.wikipedia.org/wiki/Character_encoding
-Css.charsets =
-[
- "Big5",
- "Big5-HKSCS",
- "EUC-JP",
- "EUC-KR",
- "GB18030",
- "GB2312",
- "GBK",
- "ISO-2022-JP",
- "ISO-2022-JP-2",
- "ISO-2022-KR",
- "ISO-8859-1",
- "ISO-8859-2",
- "ISO-8859-3",
- "ISO-8859-4",
- "ISO-8859-5",
- "ISO-8859-6",
- "ISO-8859-7",
- "ISO-8859-8",
- "ISO-8859-9",
- "ISO-8859-10",
- "JIS_Encoding",
- "KOI8-R",
- "KOI8-U",
- "Shift_JIS",
- "TSCII",
- "UTF-8",
- "US-ASCII",
- "VISCII",
- "Windows-1250",
- "Windows-1251",
- "Windows-1252",
- "Windows-1253",
- "Windows-1254",
- "Windows-1255",
- "Windows-1256",
- "Windows-1257",
- "Windows-1258"
-];
-
-// http://www.w3.org/TR/CSS21/media.html#media-types
-Css.mediaTypes =
-[
- "all",
- "aural",
- "braille",
- "embossed",
- "handheld",
- "print",
- "projection",
- "screen",
- "tty",
- "tv"
-];
-
-// https://developer.mozilla.org/en-US/docs/CSS/@document
-Css.documentConditions =
-[
- "url()",
- "url-prefix()",
- "domain()",
- "regexp()"
-];
-
-// https://developer.mozilla.org/en-US/docs/CSS/@keyframes#Values
-Css.keyframeKeys =
-{
- "from": "0%",
- "to": "100%"
-};
-
-// http://mxr.mozilla.org/mozilla-central/source/layout/style/nsCSSPseudoClassList.h
-// Also http://mxr.mozilla.org/mozilla-central/source/layout/style/nsCSSAnonBoxList.h
-// but that's not relevant for our purposes.
-Css.pseudoClasses =
-[
- ":active",
- ":checked",
- ":default",
- ":disabled",
- ":empty",
- ":enabled",
- ":first-child",
- ":first-of-type",
- ":focus",
- ":hover",
- ":indeterminate",
- ":in-range",
- ":invalid",
- ":lang()",
- ":last-child",
- ":last-of-type",
- ":link",
- ":not()",
- ":nth-child()",
- ":nth-last-child()",
- ":nth-last-of-type()",
- ":nth-of-type()",
- ":only-child",
- ":only-of-type",
- ":optional",
- ":out-of-range",
- ":required",
- ":root",
- ":target",
- ":valid",
- ":visited",
- ":-moz-any()",
- ":-moz-any-link",
- ":-moz-bound-element",
- ":-moz-broken",
- ":-moz-drag-over",
- ":-moz-empty-except-children-with-localname()",
- ":-moz-first-node",
- ":-moz-focusring",
- ":-moz-full-screen",
- ":-moz-full-screen-ancestor",
- ":-moz-handler-blocked",
- ":-moz-handler-clicktoplay",
- ":-moz-handler-crashed",
- ":-moz-handler-disabled",
- ":-moz-has-handlerref",
- ":-moz-is-html",
- ":-moz-last-node",
- ":-moz-loading",
- // ":-moz-locale-dir(ltr)", // http://bugzil.la/588996
- // ":-moz-locale-dir(rtl)",
- ":-moz-lwtheme",
- ":-moz-lwtheme-brighttext",
- ":-moz-lwtheme-darktext",
- ":-moz-math-increment-script-level",
- ":-moz-meter-optimum",
- ":-moz-meter-sub-optimum",
- ":-moz-meter-sub-sub-optimum",
- ":-moz-only-whitespace",
- ":-moz-placeholder",
- ":-moz-read-only",
- ":-moz-read-write",
- ":-moz-submit-invalid",
- ":-moz-suppressed",
- ":-moz-system-metric(images-in-menus)",
- ":-moz-system-metric(mac-graphite-theme)",
- ":-moz-system-metric(scrollbar-end-backward)",
- ":-moz-system-metric(scrollbar-end-forward)",
- ":-moz-system-metric(scrollbar-start-backward)",
- ":-moz-system-metric(scrollbar-start-forward)",
- ":-moz-system-metric(scrollbar-thumb-proportional)",
- ":-moz-system-metric(touch-enabled)",
- ":-moz-system-metric(windows-default-theme)",
- ":-moz-table-border-nonzero",
- ":-moz-type-unsupported",
- ":-moz-ui-invalid",
- ":-moz-ui-valid",
- ":-moz-user-disabled",
- ":-moz-window-inactive"
-];
-
-// https://developer.mozilla.org/en-US/docs/CSS/CSS_Reference/Mozilla_Extensions#Pseudo-elements_and_pseudo-classes
-// http://mxr.mozilla.org/mozilla-central/source/browser/devtools/styleinspector/CssLogic.jsm
-Css.pseudoElements =
-[
- "::after",
- "::before",
- "::first-letter",
- "::first-line",
- "::-moz-focus-inner",
- "::-moz-focus-outer",
- "::-moz-list-bullet",
- "::-moz-list-number",
- "::-moz-math-anonymous",
- "::-moz-math-stretchy",
- "::-moz-placeholder",
- "::-moz-progress-bar",
- "::-moz-selection"
-];
-
-Css.nonEditableTags =
-{
- "HTML": 1, "html": 1,
- "HEAD": 1, "head": 1
-};
-
-Css.innerEditableTags =
-{
- "BODY": 1, "body": 1
-};
-
-Css.nonDeletableTags =
-{
- "HTML": 1, "html": 1,
- "HEAD": 1, "head": 1,
- "BODY": 1, "body": 1
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return Css;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/url",
+ "firebug/lib/options",
+ "firebug/chrome/window",
+ "firebug/lib/xml",
+ "firebug/lib/http",
+ "firebug/lib/xpath"
+],
+function(FBTrace, Url, Options, Win, Xml, Http, Xpath) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Ci = Components.interfaces;
+var Cc = Components.classes;
+
+// ********************************************************************************************* //
+// Module Implementation
+
+var Css = {};
+
+// ********************************************************************************************* //
+// CSS
+
+var cssKeywordMap = {};
+var cssPropNames = {};
+var cssColorNames = null;
+var imageRules = null;
+var domUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
+
+Css.getCSSKeywordsByProperty = function(nodeType, propName, avoid)
+{
+ if (!cssKeywordMap[nodeType])
+ {
+ cssKeywordMap[nodeType] = {};
+
+ for (var name in Css.cssInfo[nodeType])
+ {
+ var list = [];
+
+ var types = Css.cssInfo[nodeType][name];
+ for (var i = 0; i < types.length; ++i)
+ {
+ var keywords = Css.cssKeywords[types[i]];
+ if (keywords)
+ list.push.apply(list, keywords);
+ else
+ list.push(types[i]);
+ }
+
+ cssKeywordMap[nodeType][name] = list;
+ }
+ }
+
+ propName = propName.toLowerCase();
+
+ if (avoid)
+ return getCSSPropertyKeywordsExcludingCategories(nodeType, propName, avoid);
+
+ return cssKeywordMap[nodeType][propName] || [];
+};
+
+function getCSSPropertyKeywordsExcludingCategories(nodeType, propName, avoid)
+{
+ if (!(nodeType in Css.cssInfo) || !(propName in Css.cssInfo[nodeType]))
+ return [];
+
+ var list = [];
+ var types = Css.cssInfo[nodeType][propName];
+ for (var i = 0; i < types.length; ++i)
+ {
+ var type = types[i];
+ if (avoid.indexOf(type) !== -1)
+ continue;
+ var keywords = Css.cssKeywords[type];
+ if (keywords)
+ list.push.apply(list, keywords);
+ else
+ list.push(type);
+ }
+ return list;
+}
+
+Css.getCSSPropertyNames = function(nodeType)
+{
+ if (!cssPropNames[nodeType])
+ {
+ cssPropNames[nodeType] = [];
+
+ for (var name in Css.cssInfo[nodeType])
+ cssPropNames[nodeType].push(name);
+ }
+
+ return cssPropNames[nodeType];
+};
+
+Css.getCSSShorthandCategory = function(nodeType, shorthandProp, keyword)
+{
+ if (!(nodeType in Css.cssInfo) || !(shorthandProp in Css.cssInfo[nodeType]))
+ return null;
+
+ var category = null;
+ var types = Css.cssInfo[nodeType][shorthandProp];
+ for (var i = 0; i < types.length; ++i)
+ {
+ var type = types[i];
+ var keywords = Css.cssKeywords[type];
+ if (keywords ? (keywords.indexOf(keyword) !== -1) : (type === keyword))
+ {
+ // Set this as the matched category, or if there is one already
+ // bail out (we don't have a unique one).
+ if (category)
+ return null;
+ category = type;
+ }
+ }
+ return category;
+};
+
+/**
+ * Parses the CSS properties of a CSSStyleRule
+ * @param {Object} style CSSStyleRule to get the properties of
+ * @param {Object} element Element to which the style applies. Needed for parsing
+ * shorthand properties correctly.
+ *
+ * @returns {Array} Properties represented by {name, value, priority, longhandProps}
+ */
+Css.parseCSSProps = function(style, element)
+{
+ var props = [];
+
+ if (!element)
+ {
+ for (var i = 0, len = style.length; i < len; ++i)
+ {
+ var prop = style.item(i);
+ props.push({name: prop,
+ value: style.getPropertyValue(prop),
+ priority: style.getPropertyPriority(longhandProp)});
+ }
+ }
+ else
+ {
+ var lineRE = /(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g;
+ var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(?:! (important))?;?$/;
+ var lines = style.cssText.match(lineRE);
+ for (var i = 0, len = lines.length; i < len; ++i)
+ {
+ var match = propRE.exec(lines[i]);
+ if (!match)
+ continue;
+
+ if (match[2])
+ {
+ var prop = {name: match[1], value: match[2], priority: match[3] || ""};
+
+ // Add longhand properties to shorthand property
+ var doc = element.ownerDocument;
+ var dummyElement = doc.createElementNS(element.namespaceURI, element.tagName);
+ var dummyStyle = dummyElement.style;
+ dummyStyle.cssText = "";
+ dummyStyle.setProperty(prop.name, prop.value, prop.priority);
+
+ if (dummyStyle.length > 1)
+ {
+ prop.longhandProps = [];
+ for (var j = 0, propLen = dummyStyle.length; j < propLen; ++j)
+ {
+ var longhandProp = dummyStyle.item(j);
+ prop.longhandProps.push({name: longhandProp,
+ value: dummyStyle.getPropertyValue(longhandProp),
+ priority: dummyStyle.getPropertyPriority(longhandProp)});
+ }
+ }
+
+ props.push(prop);
+ }
+ }
+ }
+
+ return props;
+};
+
+Css.isColorKeyword = function(keyword)
+{
+ if (keyword == "transparent")
+ return false;
+
+ if (!cssColorNames)
+ {
+ cssColorNames = [];
+
+ var colors = Css.cssKeywords["color"];
+ for (var i = 0; i < colors.length; ++i)
+ cssColorNames.push(colors[i].toLowerCase());
+ }
+
+ return cssColorNames.indexOf(keyword.toLowerCase()) != -1;
+};
+
+Css.isImageRule = function(nodeType,rule)
+{
+ if (!imageRules)
+ {
+ imageRules = [];
+
+ for (var i in Css.cssInfo[nodeType])
+ {
+ var r = i.toLowerCase();
+ var suffix = "image";
+ if (r.match(suffix + "$") == suffix || r == "background")
+ imageRules.push(r);
+ }
+ }
+
+ return imageRules.indexOf(rule.toLowerCase()) != -1;
+};
+
+Css.copyTextStyles = function(fromNode, toNode, style)
+{
+ var view = fromNode ? fromNode.ownerDocument.defaultView : null;
+ if (view)
+ {
+ if (!style)
+ style = view.getComputedStyle(fromNode, "");
+
+ toNode.style.fontFamily = style.fontFamily;
+ toNode.style.fontSize = style.fontSize;
+ toNode.style.fontWeight = style.fontWeight;
+ toNode.style.fontStyle = style.fontStyle;
+ toNode.style.fontSizeAdjust = style.fontSizeAdjust;
+ toNode.style.fontStretch = style.fontStretch;
+ toNode.style.fontVariant = style.fontVariant;
+ toNode.style.MozFontFeatureSettings = style.MozFontFeatureSettings;
+
+ return style;
+ }
+};
+
+Css.copyBoxStyles = function(fromNode, toNode, style)
+{
+ var view = fromNode.ownerDocument.defaultView;
+ if (view)
+ {
+ if (!style)
+ style = view.getComputedStyle(fromNode, "");
+
+ toNode.style.marginTop = style.marginTop;
+ toNode.style.marginRight = style.marginRight;
+ toNode.style.marginBottom = style.marginBottom;
+ toNode.style.marginLeft = style.marginLeft;
+ toNode.style.borderTopWidth = style.borderTopWidth;
+ toNode.style.borderRightWidth = style.borderRightWidth;
+ toNode.style.borderBottomWidth = style.borderBottomWidth;
+ toNode.style.borderLeftWidth = style.borderLeftWidth;
+ toNode.style.unicodeBidi = style.unicodeBidi;
+
+ return style;
+ }
+};
+
+Css.readBoxStyles = function(style)
+{
+ const styleNames = {
+ "margin-top": "marginTop", "margin-right": "marginRight",
+ "margin-left": "marginLeft", "margin-bottom": "marginBottom",
+ "border-top-width": "borderTop", "border-right-width": "borderRight",
+ "border-left-width": "borderLeft", "border-bottom-width": "borderBottom",
+ "padding-top": "paddingTop", "padding-right": "paddingRight",
+ "padding-left": "paddingLeft", "padding-bottom": "paddingBottom",
+ "z-index": "zIndex"
+ };
+
+ var styles = {};
+ for (var styleName in styleNames)
+ styles[styleNames[styleName]] = parseInt(style.getPropertyCSSValue(styleName).cssText) || 0;
+
+ if (FBTrace.DBG_INSPECT)
+ FBTrace.sysout("readBoxStyles ", styles);
+
+ return styles;
+};
+
+Css.getBoxFromStyles = function(style, element)
+{
+ var args = Css.readBoxStyles(style);
+ args.width = element.offsetWidth
+ - (args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight);
+ args.height = element.offsetHeight
+ - (args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom);
+ return args;
+};
+
+Css.getElementCSSSelector = function(element)
+{
+ if (!element || !element.localName)
+ return "null";
+
+ var label = Xml.getLocalName(element);
+ if (element.id)
+ label += "#" + element.id;
+
+ if (element.classList && element.classList.length > 0)
+ label += "." + element.classList.item(0);
+
+ return label;
+};
+
+Css.getElementCSSPath = function(element)
+{
+ var paths = [];
+
+ for (; element && element.nodeType == Node.ELEMENT_NODE; element = element.parentNode)
+ {
+ var selector = Css.getElementCSSSelector(element);
+ paths.splice(0, 0, selector);
+ }
+
+ return paths.length ? paths.join(" ") : null;
+};
+
+// ********************************************************************************************* //
+// CSS classes
+
+var classNameReCache={};
+
+Css.hasClass = function(node, name)
+{
+ if (!node || node.nodeType != Node.ELEMENT_NODE || !node.className || !name)
+ return false;
+
+ if (name.indexOf(" ") != -1)
+ {
+ var classes = name.split(" "), len = classes.length, found=false;
+ for (var i = 0; i < len; i++)
+ {
+ var cls = classes[i].trim();
+ if (cls != "")
+ {
+ if (Css.hasClass(node, cls) == false)
+ return false;
+ found = true;
+ }
+ }
+ return found;
+ }
+
+ var re;
+ if (name.indexOf("-") == -1)
+ re = classNameReCache[name] = classNameReCache[name] || new RegExp('(^|\\s)' + name + '(\\s|$)', "g");
+ else // XXXsroussey don't cache these, they are often setting values. Should be using setUserData/getUserData???
+ re = new RegExp('(^|\\s)' + name + '(\\s|$)', "g");
+ return node.className.search(re) != -1;
+};
+
+Css.setClass = function(node, name)
+{
+ if (!node || node.nodeType != Node.ELEMENT_NODE || name == '')
+ return;
+
+ if (name.indexOf(" ") != -1)
+ {
+ var classes = name.split(" "), len = classes.length;
+ for (var i = 0; i < len; i++)
+ {
+ var cls = classes[i].trim();
+ if (cls != "")
+ {
+ Css.setClass(node, cls);
+ }
+ }
+ return;
+ }
+ if (!Css.hasClass(node, name))
+ node.className = node.className.trim() + " " + name;
+};
+
+Css.getClassValue = function(node, name)
+{
+ var re = new RegExp(name+"-([^ ]+)");
+ var m = re.exec(node.className);
+ return m ? m[1] : "";
+};
+
+Css.removeClass = function(node, name)
+{
+ if (!node || node.nodeType != Node.ELEMENT_NODE || node.className == '' || name == '')
+ return;
+
+ if (name.indexOf(" ") != -1)
+ {
+ var classes = name.split(" "), len = classes.length;
+ for (var i = 0; i < len; i++)
+ {
+ var cls = classes[i].trim();
+ if (cls != "")
+ {
+ if (Css.hasClass(node, cls) == false)
+ Css.removeClass(node, cls);
+ }
+ }
+ return;
+ }
+
+ var re;
+ if (name.indexOf("-") == -1)
+ re = classNameReCache[name] = classNameReCache[name] || new RegExp('(^|\\s)' + name + '(\\s|$)', "g");
+ else // XXXsroussey don't cache these, they are often setting values. Should be using setUserData/getUserData???
+ re = new RegExp('(^|\\s)' + name + '(\\s|$)', "g");
+
+ node.className = node.className.replace(re, " ");
+
+};
+
+Css.toggleClass = function(elt, name)
+{
+ if (Css.hasClass(elt, name))
+ Css.removeClass(elt, name);
+ else
+ Css.setClass(elt, name);
+};
+
+Css.obscure = function(elt, obscured)
+{
+ if (obscured)
+ Css.setClass(elt, "obscured");
+ else
+ Css.removeClass(elt, "obscured");
+};
+
+Css.setClassTimed = function(elt, name, context, timeout)
+{
+ if (FBTrace.DBG_HTML || FBTrace.DBG_SOURCEFILES)
+ {
+ FBTrace.sysout("css.setClassTimed elt.__setClassTimeout: "+elt.__setClassTimeout+
+ " Xml.isVisible(elt): "+Xml.isVisible(elt)+
+ " elt.__invisibleAtSetPoint: "+elt.__invisibleAtSetPoint);
+ }
+
+ if (!timeout)
+ timeout = 1300;
+
+ if (elt.__setClassTimeout) // then we are already waiting to remove the class mark
+ context.clearTimeout(elt.__setClassTimeout); // reset the timer
+ else // then we are not waiting to remove the mark
+ Css.setClass(elt, name);
+
+ if (!Xml.isVisible(elt))
+ {
+ if (elt.__invisibleAtSetPoint)
+ elt.__invisibleAtSetPoint--;
+ else
+ elt.__invisibleAtSetPoint = 5;
+ }
+ else
+ {
+ delete elt.__invisibleAtSetPoint;
+ }
+
+ elt.__setClassTimeout = context.setTimeout(function()
+ {
+ delete elt.__setClassTimeout;
+
+ if (elt.__invisibleAtSetPoint) // then user can't see it, try again later
+ Css.setClassTimed(elt, name, context, timeout);
+ else
+ {
+ delete elt.__invisibleAtSetPoint; // may be zero
+ Css.removeClass(elt, name);
+ }
+ }, timeout);
+};
+
+Css.cancelClassTimed = function(elt, name, context)
+{
+ if (elt.__setClassTimeout)
+ {
+ Css.removeClass(elt, name);
+ context.clearTimeout(elt.__setClassTimeout);
+ delete elt.__setClassTimeout;
+ }
+};
+
+Css.safeGetCSSRules = function(styleSheet)
+{
+ try
+ {
+ return styleSheet.cssRules;
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("safeGetCSSRules "+e, e);
+ }
+
+ return null;
+};
+
+Css.isValidStylesheet = function(styleSheet)
+{
+ try
+ {
+ var dummy = styleSheet.cssRules; // Mozilla throws
+ return true;
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("isValidStylesheet "+e, e);
+ }
+
+ return false;
+};
+
+// ********************************************************************************************* //
+// Stylesheet API
+
+Css.shouldIgnoreSheet = function(sheet)
+{
+ // Ignore by the regular method, except for default stylesheets that are
+ // used in case there is no other stylesheet.
+ if (sheet.defaultStylesheet)
+ return false;
+ return (sheet.ownerNode && Firebug.shouldIgnore(sheet.ownerNode));
+};
+
+Css.createStyleSheet = function(doc, url)
+{
+ var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
+ style.setAttribute("charset", "utf-8");
+ style.setAttribute("type", "text/css");
+
+ var cssText = url ? Http.getResource(url) : null;
+ if (cssText)
+ {
+ var index = url.lastIndexOf("/");
+ var absURL = url.substr(0, index+1);
+
+ // Replace all relative URLs with absolute (using the passed url).
+ // Note that stylesheets can come from various extensions and the source can
+ // be even used in a browser env where relative URLs make more sense.
+ var expr = /url\(([\'"]?)(?![\'"]?(?:[a-z]+:|\/))/gi;
+ cssText = cssText.replace(expr, "url($1" + absURL);
+
+ style.textContent = cssText;
+ }
+
+ Firebug.setIgnored(style);
+ return style;
+};
+
+Css.addStyleSheet = function(doc, style)
+{
+ var heads = doc.getElementsByTagName("head");
+ if (heads.length)
+ {
+ heads[0].appendChild(style);
+ }
+ else if (doc.documentElement)
+ {
+ doc.documentElement.appendChild(style);
+ }
+ else
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("css.addStyleSheet; ERROR to append a stylesheet");
+ }
+};
+
+Css.appendStylesheet = function(doc, uri)
+{
+ // Make sure the stylesheet is not appended twice.
+ var styleSheet = doc.getElementById(uri);
+ if (styleSheet)
+ return styleSheet;
+
+ var styleSheet = Css.createStyleSheet(doc, uri);
+ styleSheet.setAttribute("id", uri);
+ Css.addStyleSheet(doc, styleSheet);
+
+ return styleSheet;
+},
+
+Css.getStyleSheetByHref = function(url, context)
+{
+ if (!context.styleSheetMap)
+ Css.createStyleSheetMap(context); // fill cache
+
+ // hasOwnProperty is called to prevent possible conflicts with prototype extensions
+ // and strict mode warnings
+ return context.styleSheetMap.hasOwnProperty(url) ? context.styleSheetMap[url] : undefined;
+};
+
+Css.createStyleSheetMap = function(context)
+{
+ context.styleSheetMap = {};
+
+ function addSheet(sheet)
+ {
+ var sheetURL = Css.getURLForStyleSheet(sheet);
+ context.styleSheetMap[sheetURL] = sheet;
+
+ // recurse for imported sheets
+
+ for (var i = 0; i < sheet.cssRules.length; ++i)
+ {
+ var rule = sheet.cssRules[i];
+ if (rule instanceof CSSStyleRule)
+ {
+ if (rule.type == CSSRule.STYLE_RULE) // once we get here no more imports
+ return;
+ }
+ else if (rule instanceof CSSImportRule)
+ {
+ addSheet(rule.styleSheet);
+ }
+ }
+ }
+
+ Win.iterateWindows(context.window, function(subwin)
+ {
+ var rootSheets = subwin.document.styleSheets;
+ if (!rootSheets)
+ return; // XUL?
+
+ for (var i = 0; i < rootSheets.length; ++i)
+ {
+ try
+ {
+ addSheet(rootSheets[i]);
+ }
+ catch (err)
+ {
+ //if (FBTrace.DBG_ERRORS)
+ // FBTrace.sysout("css.createStyleSheetMap; EXCEPTION " + err, err);
+ }
+ }
+ });
+
+ if (FBTrace.DBG_ERRORS && FBTrace.DBG_CSS)
+ FBTrace.sysout("css.createStyleSheetMap for "+context.getName(), context.styleSheetMap);
+
+ return context.styleSheetMap;
+};
+
+Css.getAllStyleSheets = function(context)
+{
+ if (!context)
+ return [];
+
+ var styleSheets = [];
+
+ var showUACSS = Options.get("showUserAgentCSS");
+ function addSheet(sheet)
+ {
+ var sheetLocation = Css.getURLForStyleSheet(sheet);
+
+ if (!showUACSS && Url.isSystemURL(sheetLocation))
+ return;
+
+ if (Css.shouldIgnoreSheet(sheet))
+ return;
+
+ styleSheets.push(sheet);
+
+ try
+ {
+ for (var i = 0; i < sheet.cssRules.length; ++i)
+ {
+ var rule = sheet.cssRules[i];
+ if (rule instanceof window.CSSImportRule)
+ addSheet(rule.styleSheet);
+ }
+ }
+ catch(e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("getAllStyleSheets sheet.cssRules FAILS for "+
+ (sheet?sheet.href:"null sheet")+e, e);
+ }
+ }
+
+ Win.iterateWindows(context.window, function(subwin)
+ {
+ var rootSheets = subwin.document.styleSheets;
+ for (var i = 0; i < rootSheets.length; ++i)
+ addSheet(rootSheets[i]);
+ });
+
+ return styleSheets;
+};
+
+Css.getURLForStyleSheet = function(styleSheet)
+{
+ // http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet.
+ // For inline style sheets, the value of this attribute is null.
+ if (!styleSheet.href && !styleSheet.ownerNode)
+ return null;
+
+ return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.documentURI);
+};
+
+/**
+ * Retrieves the instance number for a given style sheet. The instance number
+ * is sheet's index within the set of all other sheets whose URL is the same.
+ */
+Css.getInstanceForStyleSheet = function(styleSheet, ownerDocument)
+{
+ // ownerDocument is an optional hint for performance
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("getInstanceForStyleSheet href:" + styleSheet.href + " mediaText:" +
+ styleSheet.media.mediaText + " path to ownerNode" +
+ (styleSheet.ownerNode && Xpath.getElementXPath(styleSheet.ownerNode)), ownerDocument);
+ }
+
+ ownerDocument = ownerDocument || Css.getDocumentForStyleSheet(styleSheet);
+ if (!ownerDocument)
+ return;
+
+ var ret = 0,
+ styleSheets = ownerDocument.styleSheets,
+ href = styleSheet.href;
+
+ for (var i = 0; i < styleSheets.length; i++)
+ {
+ var curSheet = styleSheets[i];
+
+ if (FBTrace.DBG_CSS)
+ {
+ FBTrace.sysout("getInstanceForStyleSheet: compare href " + i +
+ " " + curSheet.href + " " + curSheet.media.mediaText + " " +
+ (curSheet.ownerNode && Xpath.getElementXPath(curSheet.ownerNode)));
+ }
+
+ if (Css.shouldIgnoreSheet(curSheet))
+ break;
+
+ if (curSheet == styleSheet)
+ break;
+
+ if (curSheet.href == href)
+ ret++;
+ }
+ return ret;
+};
+
+Css.getDocumentForStyleSheet = function(styleSheet)
+{
+ if (!styleSheet)
+ return;
+
+ while (styleSheet.parentStyleSheet && !styleSheet.ownerNode)
+ styleSheet = styleSheet.parentStyleSheet;
+
+ if (styleSheet.ownerNode)
+ return styleSheet.ownerNode.ownerDocument;
+};
+
+// ********************************************************************************************* //
+
+Css.stripUnits = function(value)
+{
+ // remove units from '0px', '0em' etc. leave non-zero units in-tact.
+ return value.replace(/(url\(.*?\)|[^0]\S*\s*)|0(%|em|ex|px|in|cm|mm|pt|pc)(\s|$)/gi,
+ function(_, skip, remove, whitespace)
+ {
+ return skip || ('0' + whitespace);
+ }
+ );
+};
+
+Css.extractURLs = function(value)
+{
+ var urls = [];
+ var urlValues = value.match(/url\((["']).*?\1\)/g);
+
+ for (var i in urlValues)
+ urls.push(urlValues[i].replace(/url\((["'])(.*?)\1\)/, "$2"));
+
+ return urls;
+};
+
+Css.colorNameToRGB = function(value)
+{
+ if (!domUtils.colorNameToRGB)
+ return value;
+
+ var reSplit = /(\(|,|\)|\s)/;
+ var parts = value.split(reSplit);
+
+ var newValue = "";
+ for (var i=0, len=parts.length; i<len; ++i)
+ {
+ var part = parts[i];
+ if (part === "transparent")
+ {
+ newValue += "rgba(0, 0, 0, 0)";
+ }
+ else
+ {
+ if (Css.isColorKeyword(part))
+ {
+ try
+ {
+ var rgbValue = domUtils.colorNameToRGB(part);
+ newValue += "rgb(" + rgbValue.r + ", " + rgbValue.g + ", " + rgbValue.b + ")";
+ }
+ catch(e)
+ {
+ // Color keyword is a system color, which can't be resolved by
+ // domUtils.colorNameToRGB(), so just return the keyword itself
+ // (see issue 6753)
+ newValue += part;
+ }
+ }
+ else
+ {
+ newValue += part;
+ }
+ }
+ }
+
+ return newValue;
+};
+
+Css.rgbToHex = function(value)
+{
+ function convertRGBToHex(r, g, b)
+ {
+ return "#" + ((1 << 24) + (r << 16) + (g << 8) + (b << 0)).
+ toString(16).substr(-6).toUpperCase();
+ }
+
+ value = Css.colorNameToRGB(value);
+
+ return value.replace(/\brgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)/gi,
+ function(_, r, g, b) {
+ return convertRGBToHex(r, g, b);
+ });
+};
+
+Css.rgbToHSL = function(value)
+{
+ function convertRGBToHSL(r, g, b, a)
+ {
+ r = parseInt(r);
+ g = parseInt(g);
+ b = parseInt(b);
+
+ var gray = (r == g && g == b);
+
+ r /= 255;
+ g /= 255;
+ b /= 255;
+
+ var max = Math.max(r, g, b);
+ var min = Math.min(r, g, b);
+
+ var h = 0;
+ var s = 0;
+ var l = (max+min)/2;
+
+ if (!gray)
+ {
+ var delta = max - min;
+ s = l > 0.5 ? delta/(2-max-min) : delta/(max+min);
+
+ switch (max)
+ {
+ case r:
+ h = (g-b)/delta + (g < b ? 6 : 0);
+ break;
+
+ case g:
+ h = (b-r)/delta + 2;
+ break;
+
+ case b:
+ h = (r-g)/delta + 4;
+ break;
+ }
+ }
+
+ h = Math.round(h * 60);
+ s = Math.round(s * 100);
+ l = Math.round(l * 100);
+
+ if (a)
+ return "hsla("+h+", "+s+"%, "+l+"%, "+a+")";
+ else
+ return "hsl("+h+", "+s+"%, "+l+"%)";
+ }
+
+ value = Css.colorNameToRGB(value);
+
+ return value.replace(/\brgba?\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})(,\s*(\d.\d+|\d))?\)/gi,
+ function(_, r, g, b, _, a)
+ {
+ return convertRGBToHSL(r, g, b, a);
+ });
+};
+
+// ********************************************************************************************* //
+// CSS Info
+
+Css.cssInfo = {};
+Css.cssInfo.html =
+{
+ "animation": [],
+ "animation-delay": [],
+ "animation-direction": ["normal", "alternate", "reverse", "alternate-reverse"],
+ "animation-duration": [],
+ "animation-iteration-count": ["infinite"],
+ "animation-name" : ["none"],
+ "animation-play-state": ["running", "paused"],
+ "animation-timing-function": [],
+ "animation-fill-mode": ["none", "forwards", "backwards", "both"],
+
+ "background": ["bgRepeat", "bgAttachment", "position", "color", "image", "none", "boxModels"],
+ "background-attachment": ["bgAttachment"],
+ "background-color": ["color"],
+ "background-image": ["image", "none"],
+ "background-position": ["position", "length"],
+ "background-repeat": ["bgRepeat"],
+ "background-size": ["bgSize", "length"],
+ "background-clip": ["boxModels"], // FF 4.0
+ "background-origin": ["boxModels"], // FF 4.0
+
+ "border": ["borderStyle", "thickness", "color"],
+ "border-top": ["borderStyle", "borderCollapse", "color"],
+ "border-right": ["borderStyle", "borderCollapse", "color"],
+ "border-bottom": ["borderStyle", "borderCollapse", "color"],
+ "border-left": ["borderStyle", "borderCollapse", "color"],
+ "border-collapse": ["borderCollapse"],
+ "border-color": ["color"],
+ "border-top-color": ["color"],
+ "border-right-color": ["color"],
+ "border-bottom-color": ["color"],
+ "border-left-color": ["color"],
+ "border-spacing": ["length"],
+ "border-style": ["borderStyle"],
+ "border-top-style": ["borderStyle"],
+ "border-right-style": ["borderStyle"],
+ "border-bottom-style": ["borderStyle"],
+ "border-left-style": ["borderStyle"],
+ "border-width": ["thickness", "length"],
+ "border-top-width": ["thickness", "length"],
+ "border-right-width": ["thickness", "length"],
+ "border-bottom-width": ["thickness", "length"],
+ "border-left-width": ["thickness", "length"],
+ "border-radius": ["length"], // FF 4.0
+ "border-top-left-radius": ["length"], // FF 4.0
+ "border-top-right-radius": ["length"], // FF 4.0
+ "border-bottom-right-radius": ["length"], // FF 4.0
+ "border-bottom-left-radius": ["length"], // FF 4.0
+ "border-image": ["borderImageRepeat", "thickness", "url()", "none"], // FF 15.0
+ "border-image-outset": ["length"], // FF 15.0
+ "border-image-repeat": ["borderImageRepeat"], // FF 15.0
+ "border-image-slice": ["fill"],
+ "border-image-source": ["image", "none"],
+ "border-image-width": ["auto", "length"], // FF 15.0
+
+ "top": ["auto", "length"],
+ "right": ["auto", "length"],
+ "bottom": ["auto", "length"],
+ "left": ["auto", "length"],
+ "height": ["auto", "length"],
+ "caption-side": ["captionSide"],
+ "clear": ["clear", "none"],
+ "clip": ["shape", "auto"],
+ "color": ["color"],
+ "content": ["string", "none", "normal"],
+ "counter-increment": ["none"],
+ "counter-reset": ["none"],
+ "cursor": ["cursor", "url()", "none"],
+ "direction": ["direction"],
+ "display": ["display"],
+ "empty-cells": ["emptyCells"],
+ "float": ["float"],
+
+ "align-items": ["alignItems"],
+ "align-self": ["alignSelf"],
+ "flex": ["flexBasis"],
+ "flex-basis": ["flexBasis"],
+ "flex-direction": ["flexDirection"],
+ "flex-grow": [],
+ "flex-shrink": [],
+ "justify-content": ["justifyContent"],
+ "order": [],
+
+ // specification of font families in "font" is special-cased
+ "font": ["fontStyle", "fontVariant", "namedFontWeight", "fontSize", "lineHeight", "mozFont"],
+ "font-family": ["fontFamily"],
+ "font-size": ["fontSize", "length"],
+ "font-size-adjust": ["none"],
+ "font-stretch": ["fontStretch"],
+ "font-style": ["fontStyle"],
+ "font-variant": ["fontVariant"],
+ "font-weight": ["fontWeight"],
+
+ "ime-mode": ["imeMode"], // FF 3.0
+ "letter-spacing": ["normal", "length"],
+ "line-height": ["lineHeight", "length"],
+ "word-break": ["wordBreak"],
+
+ "list-style": ["listStyleType", "listStylePosition"],
+ "list-style-image": ["url()", "none"],
+ "list-style-position": ["listStylePosition"],
+ "list-style-type": ["listStyleType"],
+
+ "margin": ["auto", "length"],
+ "margin-top": ["auto", "length"],
+ "margin-right": ["auto", "length"],
+ "margin-bottom": ["auto", "length"],
+ "margin-left": ["auto", "length"],
+
+ "marker-offset": ["auto", "length"],
+ "min-height": ["length"],
+ "max-height": ["none", "length"],
+ "min-width": ["width", "length"],
+ "max-width": ["width", "none", "length"],
+
+ "opacity": [],
+
+ "outline": ["color", "borderStyle", "thickness", "auto"],
+ "outline-color": ["color"],
+ "outline-style": ["borderStyle", "auto"],
+ "outline-width": ["thickness", "length"],
+ "outline-offset": ["length"],
+
+ "overflow": ["overflow", "auto"],
+ "overflow-x": ["overflow", "auto"],
+ "overflow-y": ["overflow", "auto"],
+
+ "padding": ["length"],
+ "padding-top": ["length"],
+ "padding-right": ["length"],
+ "padding-bottom": ["length"],
+ "padding-left": ["length"],
+
+ "page-break-after": ["pageBreak"],
+ "page-break-before": ["pageBreak"],
+ "pointer-events": ["auto", "none"],
+ "position": ["elPosition"],
+ "quotes": ["none"],
+ "resize": ["resize"], // FF 4.0
+ "table-layout": ["tableLayout"],
+ "text-align": ["textAlign"],
+ "-moz-text-align-last": ["textAlign"], // FF 12.0
+ "box-shadow": ["boxShadow", "color", "none", "length"], // FF 4.0
+ "text-decoration": ["textDecoration"],
+ "text-indent": ["length"],
+ "text-rendering": ["textRendering"],
+ "text-shadow": ["color", "length"],
+ "text-transform": ["textTransform"],
+ "transition": ["transitionProperty", "timingFunction"],
+ "transition-property": ["transitionProperty"],
+ "transition-duration": [],
+ "transition-timing-function": ["timingFunction"],
+ "transition-delay": [],
+ "transform": ["transformFunction", "none", "length"],
+ "transform-origin": ["position", "length"],
+ "transform-style": ["transformStyle"],
+ "unicode-bidi": ["unicodeBidi"],
+ "vertical-align": ["verticalAlign", "length"],
+ "visibility": ["visibility"],
+ "white-space": ["whiteSpace"],
+ "width": ["width", "length", "auto"],
+ "word-spacing": ["normal", "length"],
+ "word-wrap": ["wordWrap"], // FF 3.5
+ "z-index": ["auto"],
+
+ "-moz-appearance": ["mozAppearance"],
+ "-moz-backface-visibility": ["mozBackfaceVisibility"], // FF 10.0
+ "-moz-border-top-colors": ["color"],
+ "-moz-border-right-colors": ["color"],
+ "-moz-border-bottom-colors": ["color"],
+ "-moz-border-left-colors": ["color"],
+ "-moz-border-start": ["borderStyle", "borderCollapse", "color", "none"],
+ "-moz-border-end": ["borderStyle", "borderCollapse", "color", "none"],
+ "-moz-border-start-color": ["color"],
+ "-moz-border-end-color": ["color"],
+ "-moz-border-start-style": ["borderStyle"],
+ "-moz-border-end-style": ["borderStyle"],
+ "-moz-border-start-width": ["thickness"],
+ "-moz-border-end-width": ["thickness"],
+ "-moz-box-align": ["mozBoxAlign"],
+ "-moz-box-direction": ["mozBoxDirection"],
+ "-moz-box-flex": [],
+ "-moz-box-ordinal-group": [],
+ "-moz-box-orient": ["mozBoxOrient"],
+ "-moz-box-pack": ["mozBoxPack"],
+ "-moz-box-sizing": ["mozBoxSizing"],
+ "-moz-user-focus": ["userFocus", "none"],
+ "-moz-user-input": ["userInput", "none"],
+ "-moz-user-modify": ["mozUserModify"],
+ "-moz-user-select": ["userSelect", "none"],
+ "-moz-background-inline-policy": [],
+ "-moz-binding": ["url()", "none"],
+ "-moz-columns": ["auto", "length"],
+ "-moz-column-count": ["auto"],
+ "-moz-column-gap": ["normal", "length"],
+ "-moz-column-rule": ["thickness", "borderStyle", "color"],
+ "-moz-column-rule-width": ["thickness", "length"],
+ "-moz-column-rule-style": ["borderStyle"],
+ "-moz-column-rule-color": ["color"],
+ "-moz-column-width": ["auto", "length"],
+ "-moz-image-region": ["rect()"],
+ "-moz-font-feature-settings": ["mozFontFeatureSettings"], // FF 4.0
+ "-moz-font-language-override": ["normal"],
+ "-moz-tab-size": [], // FF 4.0,
+ "orient": ["horizontal", "vertical"], // FF 6.0
+ "-moz-text-blink": ["none", "blink"], // FF 6.0
+ "-moz-text-decoration-color": ["color"], // FF 6.0
+ "-moz-text-decoration-line": ["mozTextDecorationLine"], // FF 6.0
+ "-moz-text-decoration-style": ["mozTextDecorationStyle"], // FF 6.0
+ "-moz-hyphens": ["mozHyphens"], // FF 6.0
+ "text-overflow": ["textOverflow"], // FF 7.0
+ "-moz-perspective": ["none", "length"], // FF 10.0
+ "-moz-perspective-origin": ["position", "length"] // FF 10.0
+};
+
+// ::-moz-progress-bar // FF 6 TODO
+
+Css.cssInfo.svg =
+{
+ "alignment-baseline": ["svgAlignmentBaseline"],
+ "baseline-shift": ["baselineShift"],
+ "clip": ["auto", "length"],
+ "clip-path": ["url()", "none"],
+ "clip-rule": ["clipRule"],
+ "color": ["color"],
+ "color-interpolation": ["colorInterpolation"],
+ "color-interpolation-filters": ["colorInterpolation"],
+ "color-profile": ["colorProfile"],
+ "color-rendering": ["colorRendering"],
+ "cursor": ["cursor", "url()"],
+ "direction": ["direction"],
+ "display": ["display"],
+ "dominant-baseline": ["dominantBaseline"],
+ "enable-background": ["accumulate"],
+ "fill": ["clipRule"],
+ "fill-opacity": [],
+ "fill-rule": ["clipRule"],
+ "filter": ["url()", "none"],
+ "flood-color": ["currentColor"],
+ "flood-opacity": [],
+ "font": ["fontStyle", "fontSize", "fontVariant", "namedFontWeight"],
+ "font-family": ["fontFamily"],
+ "font-size": ["fontSize"],
+ "font-size-adjust": [],
+ "font-stretch": ["fontStretch"],
+ "font-style": ["fontStyle"],
+ "font-variant": ["fontVariant"],
+ "font-weight": ["fontWeight"],
+ "glyph-orientation-horizontal": [],
+ "glyph-orientation-vertical": ["auto"],
+ "image-rendering": ["imageRendering"], // FF 3.6
+ "kerning": ["auto"],
+ "letter-spacing": ["normal"],
+ "lighting-color": ["currentColor"],
+ "marker": ["none"],
+ "marker-end": ["none"],
+ "mask": ["url()", "none"],
+ "opacity": [],
+ "overflow": ["auto", "svgOverflow"],
+ "pointer-events": ["pointerEvents"], // FF 1.5/3.6
+ "shape-rendering": ["auto", "shapeRendering"],
+ "stop-color": ["currentColor"],
+ "stop-opacity": [],
+ "stroke": [],
+ "stroke-dasharray": ["none"],
+ "stroke-dashoffset": [],
+ "stroke-linecap": ["strokeLinecap"],
+ "stroke-linejoin": ["strokeLinejoin"],
+ "stroke-miterlimit": [],
+ "stroke-opacity": [],
+ "stroke-width": [],
+ "text-anchor": ["mozBoxPack"],
+ "text-decoration": ["textDecoration"],
+ "text-rendering": ["textRendering"],
+ "unicode-bidi": ["unicodeBidi"],
+ "visibility": ["visibility"],
+ "word-spacing": ["normal"],
+ "writing-mode": ["writingMode"]
+};
+
+Css.multiValuedProperties =
+{
+ "animation": 1,
+ "background": 1,
+ "background-position": 1,
+ "border": 1,
+ "border-color": 1,
+ "border-style": 1,
+ "border-width": 1,
+ "border-radius": 1,
+ "box-shadow": 1,
+ "font": 1,
+ "font-family": 1,
+ "margin": 1,
+ "padding": 1
+};
+
+Css.unitlessProperties =
+{
+ "counter-increment": 1,
+ "counter-reset": 1,
+ "font-size-adjust": 1,
+ "font-weight": 1,
+ "line-height": 1,
+ "opacity": 1,
+ "orphans": 1,
+ "widows": 1,
+ "z-index": 1,
+ "-moz-column-count": 1
+};
+
+Css.cssKeywords =
+{
+ "mozAppearance":
+ [
+ "none",
+ "button",
+ "button-arrow-down",
+ "button-arrow-next",
+ "button-arrow-previous",
+ "button-arrow-up",
+ "button-bevel",
+ "button-focus",
+ "caret",
+ "checkbox",
+ "checkbox-container",
+ "checkbox-label",
+ "checkmenuitem",
+ "dualbutton",
+ "groupbox",
+ "listbox",
+ "listitem",
+ "menuarrow",
+ "menubar",
+ "menucheckbox",
+ "menuimage",
+ "menuitem",
+ "menuitemtext",
+ "menulist",
+ "menulist-button",
+ "menulist-text",
+ "menulist-textfield",
+ "menupopup",
+ "menuradio",
+ "menuseparator",
+ "meterbar",
+ "meterchunk",
+ "progressbar",
+ "progressbar-vertical",
+ "progresschunk",
+ "progresschunk-vertical",
+ "radio",
+ "radio-container",
+ "radio-label",
+ "radiomenuitem",
+ "resizer",
+ "resizerpanel",
+ "scale-horizontal",
+ "scalethumbend",
+ "scalethumb-horizontal",
+ "scalethumbstart",
+ "scalethumbtick",
+ "scalethumb-vertical",
+ "scale-vertical",
+ "scrollbarbutton-down",
+ "scrollbarbutton-left",
+ "scrollbarbutton-right",
+ "scrollbarbutton-up",
+ "scrollbarthumb-horizontal",
+ "scrollbarthumb-vertical",
+ "scrollbartrack-horizontal",
+ "scrollbartrack-vertical",
+ "searchfield",
+ "separator",
+ "sheet",
+ "spinner",
+ "spinner-downbutton",
+ "spinner-textfield",
+ "spinner-upbutton",
+ "splitter",
+ "statusbar",
+ "statusbarpanel",
+ "tab",
+ "tabpanel",
+ "tabpanels",
+ "tab-scroll-arrow-back",
+ "tab-scroll-arrow-forward",
+ "textfield",
+ "textfield-multiline",
+ "toolbar",
+ "toolbarbutton",
+ "toolbarbutton-dropdown",
+ "toolbargripper",
+ "toolbox",
+ "tooltip",
+ "treeheader",
+ "treeheadercell",
+ "treeheadersortarrow",
+ "treeitem",
+ "treeline",
+ "treetwisty",
+ "treetwistyopen",
+ "treeview",
+
+ "-moz-mac-unified-toolbar",
+ "-moz-win-borderless-glass", // FF 4.0
+ "-moz-win-browsertabbar-toolbox",
+ "-moz-win-communicationstext",
+ "-moz-win-communications-toolbox",
+ "-moz-win-exclude-glass", // FF 6.0
+ "-moz-win-glass",
+ "-moz-win-mediatext",
+ "-moz-win-media-toolbox",
+ "-moz-window-button-box",
+ "-moz-window-button-box-maximized",
+ "-moz-window-button-close",
+ "-moz-window-button-maximize",
+ "-moz-window-button-minimize",
+ "-moz-window-button-restore",
+ "-moz-window-frame-bottom",
+ "-moz-window-frame-left",
+ "-moz-window-frame-right",
+ "-moz-window-titlebar",
+ "-moz-window-titlebar-maximized"
+ ],
+
+ "mozBackfaceVisibility":
+ [
+ "visible",
+ "hidden"
+ ],
+
+ "color":
+ [
+ // Color functions
+ "rgb()",
+ "rgba()",
+ "hsl()",
+ "hsla()",
+
+ // Color keywords
+ "aliceblue",
+ "antiquewhite",
+ "aqua",
+ "aquamarine",
+ "azure",
+ "beige",
+ "bisque",
+ "black",
+ "blanchedalmond",
+ "blue",
+ "blueviolet",
+ "brown",
+ "burlywood",
+ "cadetblue",
+ "chartreuse",
+ "chocolate",
+ "coral",
+ "cornflowerblue",
+ "cornsilk",
+ "crimson",
+ "cyan",
+ "darkblue",
+ "darkcyan",
+ "darkgoldenrod",
+ "darkgray",
+ "darkgreen",
+ "darkgrey",
+ "darkkhaki",
+ "darkmagenta",
+ "darkolivegreen",
+ "darkorange",
+ "darkorchid",
+ "darkred",
+ "darksalmon",
+ "darkseagreen",
+ "darkslateblue",
+ "darkslategray",
+ "darkslategrey",
+ "darkturquoise",
+ "darkviolet",
+ "deeppink",
+ "deepskyblue",
+ "dimgray",
+ "dimgrey",
+ "dodgerblue",
+ "firebrick",
+ "floralwhite",
+ "forestgreen",
+ "fuchsia",
+ "gainsboro",
+ "ghostwhite",
+ "gold",
+ "goldenrod",
+ "gray",
+ "green",
+ "greenyellow",
+ "grey",
+ "honeydew",
+ "hotpink",
+ "indianred",
+ "indigo",
+ "ivory",
+ "khaki",
+ "lavender",
+ "lavenderblush",
+ "lawngreen",
+ "lemonchiffon",
+ "lightblue",
+ "lightcoral",
+ "lightcyan",
+ "lightgoldenrodyellow",
+ "lightgray",
+ "lightgreen",
+ "lightgrey",
+ "lightpink",
+ "lightsalmon",
+ "lightseagreen",
+ "lightskyblue",
+ "lightslategray",
+ "lightslategrey",
+ "lightsteelblue",
+ "lightyellow",
+ "lime",
+ "limegreen",
+ "linen",
+ "magenta",
+ "maroon",
+ "mediumaquamarine",
+ "mediumblue",
+ "mediumorchid",
+ "mediumpurple",
+ "mediumseagreen",
+ "mediumslateblue",
+ "mediumspringgreen",
+ "mediumturquoise",
+ "mediumvioletred",
+ "midnightblue",
+ "mintcream",
+ "mistyrose",
+ "moccasin",
+ "navajowhite",
+ "navy",
+ "oldlace",
+ "olive",
+ "olivedrab",
+ "orange",
+ "orangered",
+ "orchid",
+ "palegoldenrod",
+ "palegreen",
+ "paleturquoise",
+ "palevioletred",
+ "papayawhip",
+ "peachpuff",
+ "peru",
+ "pink",
+ "plum",
+ "powderblue",
+ "purple",
+ "red",
+ "rosybrown",
+ "royalblue",
+ "saddlebrown",
+ "salmon",
+ "sandybrown",
+ "seagreen",
+ "seashell",
+ "sienna",
+ "silver",
+ "skyblue",
+ "slateblue",
+ "slategray",
+ "slategrey",
+ "snow",
+ "springgreen",
+ "steelblue",
+ "tan",
+ "teal",
+ "thistle",
+ "tomato",
+ "turquoise",
+ "violet",
+ "wheat",
+ "white",
+ "whitesmoke",
+ "yellow",
+ "yellowgreen",
+
+ // Special color keywords
+ "transparent",
+ "currentColor",
+
+ // System colors
+ "ActiveBorder",
+ "ActiveCaption",
+ "AppWorkspace",
+ "Background",
+ "ButtonFace",
+ "ButtonHighlight",
+ "ButtonShadow",
+ "ButtonText",
+ "CaptionText",
+ "GrayText",
+ "Highlight",
+ "HighlightText",
+ "InactiveBorder",
+ "InactiveCaption",
+ "InactiveCaptionText",
+ "InfoBackground",
+ "InfoText",
+ "Menu",
+ "MenuText",
+ "Scrollbar",
+ "ThreeDDarkShadow",
+ "ThreeDFace",
+ "ThreeDHighlight",
+ "ThreeDLightShadow",
+ "ThreeDShadow",
+ "Window",
+ "WindowFrame",
+ "WindowText",
+
+ // Mozilla system color extensions
+ "-moz-ButtonDefault",
+ "-moz-ButtonHoverFace",
+ "-moz-ButtonHoverText",
+ "-moz-CellHighlight",
+ "-moz-CellHighlightText",
+ "-moz-Combobox",
+ "-moz-ComboboxText",
+ "-moz-Dialog",
+ "-moz-DialogText",
+ "-moz-dragtargetzone",
+ "-moz-EvenTreeRow",
+ "-moz-Field",
+ "-moz-FieldText",
+ "-moz-html-CellHighlight",
+ "-moz-html-CellHighlightText",
+ "-moz-mac-accentdarkestshadow",
+ "-moz-mac-accentdarkshadow",
+ "-moz-mac-accentface",
+ "-moz-mac-accentlightesthighlight",
+ "-moz-mac-accentlightshadow",
+ "-moz-mac-accentregularhighlight",
+ "-moz-mac-accentregularshadow",
+ "-moz-mac-chrome-active",
+ "-moz-mac-chrome-inactive",
+ "-moz-mac-focusring",
+ "-moz-mac-menuselect",
+ "-moz-mac-menushadow",
+ "-moz-mac-menutextselect",
+ "-moz-MenuHover",
+ "-moz-MenuHoverText",
+ "-moz-MenuBarText",
+ "-moz-MenuBarHoverText",
+ "-moz-nativehyperlinktext",
+ "-moz-OddTreeRow",
+ "-moz-win-communicationstext",
+ "-moz-win-mediatext",
+
+ // Mozilla color preference extensions
+ "-moz-activehyperlinktext",
+ "-moz-default-background-color", // FF 5.0
+ "-moz-default-color", // FF 5.0
+ "-moz-hyperlinktext",
+ "-moz-visitedhyperlinktext"
+ ],
+
+ "auto":
+ [
+ "auto"
+ ],
+
+ "none":
+ [
+ "none"
+ ],
+
+ "normal":
+ [
+ "normal"
+ ],
+
+ "captionSide":
+ [
+ "top",
+ "bottom",
+ "left",
+ "right"
+ ],
+
+ "emptyCells":
+ [
+ "show",
+ "hide",
+ "-moz-show-background"
+ ],
+
+ "alignItems":
+ [
+ "flex-start",
+ "flex-end",
+ "center",
+ "baseline",
+ "stretch"
+ ],
+
+ "alignSelf":
+ [
+ "auto",
+ "flex-start",
+ "flex-end",
+ "center",
+ "baseline",
+ "stretch"
+ ],
+
+ "flexBasis":
+ [
+ "initial",
+ "auto"
+ ],
+
+ "flexDirection":
+ [
+ "row",
+ "row-reverse",
+ "column",
+ "column-reverse"
+ ],
+
+ "justifyContent":
+ [
+ "flex-start",
+ "flex-end",
+ "center",
+ "space-between",
+ "space-around"
+ ],
+
+ "clear":
+ [
+ "left",
+ "right",
+ "both"
+ ],
+
+ "cursor":
+ [
+ "auto",
+ "default",
+ "pointer",
+ "text",
+ "crosshair",
+ "move",
+ "help",
+ "no-drop",
+ "not-allowed",
+ "none", // FF 3.0
+ "-moz-grab",
+ "-moz-grabbing",
+ "-moz-zoom-in",
+ "-moz-zoom-out",
+ "e-resize",
+ "all-scroll",
+ "ne-resize",
+ "nw-resize",
+ "n-resize",
+ "se-resize",
+ "sw-resize",
+ "s-resize",
+ "w-resize",
+ "ew-resize",
+ "ns-resize",
+ "nesw-resize",
+ "nwse-resize",
+ "col-resize",
+ "row-resize",
+ "cell",
+ "context-menu",
+ "progress",
+ "vertical-text",
+ "wait",
+ "copy",
+ "alias"
+ ],
+
+ "boxModels": // FF 4.0
+ [
+ "padding-box",
+ "border-box",
+ "content-box"
+ ],
+
+ "direction":
+ [
+ "ltr",
+ "rtl"
+ ],
+
+ "bgAttachment":
+ [
+ "scroll",
+ "fixed"
+ ],
+
+ "position":
+ [
+ "top",
+ "center",
+ "bottom",
+ "left",
+ "right"
+ ],
+
+ "bgRepeat":
+ [
+ "repeat",
+ "repeat-x",
+ "repeat-y",
+ "no-repeat"
+ ],
+
+ "bgSize": // FF 4.0
+ [
+ "auto",
+ "cover",
+ "contain"
+ ],
+
+ "borderStyle":
+ [
+ "solid",
+ "none",
+ "dotted",
+ "dashed",
+ "double",
+ "hidden",
+ "groove",
+ "ridge",
+ "inset",
+ "outset",
+ "-moz-bg-inset",
+ "-moz-bg-outset",
+ "-moz-bg-solid"
+ ],
+
+ "borderCollapse":
+ [
+ "collapse",
+ "separate"
+ ],
+
+ "overflow":
+ [
+ "visible",
+ "hidden",
+ "scroll",
+ "auto",
+ "-moz-hidden-unscrollable"
+ ],
+
+ "listStyleType":
+ [
+ "none",
+ "disc",
+ "circle",
+ "square",
+ "decimal",
+ "decimal-leading-zero",
+ "lower-roman",
+ "upper-roman",
+ "lower-greek",
+ "lower-alpha",
+ "lower-latin",
+ "upper-alpha",
+ "upper-latin",
+ "armenian",
+ "georgian",
+ "hebrew",
+ "cjk-ideographic",
+ "hiragana",
+ "katakana",
+ "hiragana-iroha",
+ "katakana-iroha",
+ "-moz-arabic-indic",
+ "-moz-bengali",
+ "-moz-cjk-earthly-branch",
+ "-moz-cjk-heavenly-stem",
+ "-moz-devanagari",
+ "-moz-ethiopic-halehame",
+ "-moz-ethiopic-halehame-am",
+ "-moz-ethiopic-halehame-ti-er",
+ "-moz-ethiopic-halehame-ti-et",
+ "-moz-ethiopic-numeric",
+ "-moz-gujarati",
+ "-moz-gurmukhi",
+ "-moz-hangul",
+ "-moz-hangul-consonant",
+ "-moz-japanese-formal",
+ "-moz-japanese-informal",
+ "-moz-kannada",
+ "-moz-khmer",
+ "-moz-lao",
+ "-moz-malayalam",
+ "-moz-myanmar",
+ "-moz-oriya",
+ "-moz-persian",
+ "-moz-simp-chinese-formal",
+ "-moz-simp-chinese-informal",
+ "-moz-tamil",
+ "-moz-telugu",
+ "-moz-thai",
+ "-moz-trad-chinese-formal",
+ "-moz-trad-chinese-informal",
+ "-moz-urdu"
+ ],
+
+ "listStylePosition":
+ [
+ "inside",
+ "outside"
+ ],
+
+ "string":
+ [
+ "open-quote",
+ "close-quote",
+ "no-open-quote",
+ "no-close-quote",
+ "url()",
+ "attr()",
+ "counter()",
+ "counters()"
+ ],
+
+ "fontStyle":
+ [
+ "normal",
+ "italic",
+ "oblique"
+ ],
+
+ "fontVariant":
+ [
+ "normal",
+ "small-caps"
+ ],
+
+ // Named font-weight values, worth completing in "font"
+ "namedFontWeight":
+ [
+ // Absolute keywords
+ "normal",
+ "bold",
+
+ // Relative keywords
+ "bolder",
+ "lighter"
+ ],
+
+ "fontWeight":
+ [
+ // Absolute keywords
+ "normal",
+ "bold",
+
+ // Relative keywords
+ "bolder",
+ "lighter",
+
+ // Numeric values
+ "100",
+ "200",
+ "300",
+ "400",
+ "500",
+ "600",
+ "700",
+ "800",
+ "900"
+ ],
+
+ "fontSize":
+ [
+ // Absolute size keywords
+ "xx-small",
+ "x-small",
+ "small",
+ "medium",
+ "large",
+ "x-large",
+ "xx-large",
+
+ // Relative size keywords
+ "smaller",
+ "larger"
+ ],
+
+ "lineHeight":
+ [
+ "normal"
+ ],
+
+ "wordBreak":
+ [
+ "normal",
+ "break-all",
+ "keep-all"
+ ],
+
+ "fontFamily":
+ [
+ // Common font families
+ "Arial",
+ "Comic Sans MS",
+ "Georgia",
+ "Tahoma",
+ "Verdana",
+ "Times New Roman",
+ "Trebuchet MS",
+ "Lucida Console",
+ "Lucida Grande",
+ "Helvetica",
+
+ // Generic font families
+ "serif",
+ "sans-serif",
+ "cursive",
+ "fantasy",
+ "monospace",
+
+ // Additional font families
+ "caption",
+ "icon",
+ "menu",
+ "message-box",
+ "small-caption",
+ "status-bar",
+ "-moz-fixed"
+ ],
+
+ "mozFont":
+ [
+ "-moz-button",
+ "-moz-info",
+ "-moz-desktop",
+ "-moz-dialog",
+ "-moz-document",
+ "-moz-workspace",
+ "-moz-window",
+ "-moz-list",
+ "-moz-pull-down-menu",
+ "-moz-field"
+ ],
+
+ "display":
+ [
+ "block",
+ "none",
+ "inline",
+ "inline-block",
+ "list-item",
+ "flex",
+ "inline-flex",
+ "marker",
+ "run-in",
+ "compact",
+ "table",
+ "inline-table",
+ "table-row-group",
+ "table-column",
+ "table-column-group",
+ "table-header-group",
+ "table-footer-group",
+ "table-row",
+ "table-cell",
+ "table-caption",
+ "-moz-box",
+ "-moz-compact",
+ "-moz-deck",
+ "-moz-grid",
+ "-moz-grid-group",
+ "-moz-grid-line",
+ "-moz-groupbox",
+ "-moz-inline-box",
+ "-moz-inline-grid",
+ "-moz-inline-stack",
+ "-moz-marker",
+ "-moz-popup",
+ "-moz-stack"
+ ],
+
+ "elPosition":
+ [
+ "static",
+ "relative",
+ "absolute",
+ "fixed"
+ ],
+
+ "float":
+ [
+ "left",
+ "right",
+ "none"
+ ],
+
+ "textAlign":
+ [
+ "left",
+ "right",
+ "center",
+ "justify",
+ "start",
+ "end", // FF 3.6
+
+ "-moz-center",
+ "-moz-left",
+ "-moz-right"
+ ],
+
+ "tableLayout":
+ [
+ "fixed",
+ "auto"
+ ],
+
+ "textDecoration":
+ [
+ "none",
+ "underline",
+ "overline",
+ "line-through",
+ "blink",
+ "-moz-anchor-decoration"
+ ],
+
+ "textTransform":
+ [
+ "capitalize",
+ "lowercase",
+ "uppercase",
+ "none"
+ ],
+
+ "unicodeBidi":
+ [
+ "normal",
+ "embed",
+ "bidi-override",
+ "-moz-isolate", // FF 10.0
+ "-moz-plaintext" // FF 10.0
+ ],
+
+ "visibility":
+ [
+ "visible",
+ "hidden",
+ "collapse"
+ ],
+
+ "whiteSpace":
+ [
+ "normal",
+ "pre",
+ "nowrap",
+ "pre-wrap", // FF 3.0
+ "pre-line" // FF 3.5
+ ],
+
+ "verticalAlign":
+ [
+ "baseline",
+ "sub",
+ "super",
+ "top",
+ "middle",
+ "bottom",
+ "text-top",
+ "text-bottom"
+ ],
+
+ "thickness":
+ [
+ "thin",
+ "medium",
+ "thick"
+ ],
+
+ "shape":
+ [
+ "rect()"
+ ],
+
+ "userFocus":
+ [
+ "ignore",
+ "normal"
+ ],
+
+ "userInput":
+ [
+ "disabled",
+ "enabled"
+ ],
+
+ "mozUserModify":
+ [
+ "read-only",
+ "read-write",
+ "write-only"
+ ],
+
+ "userSelect":
+ [
+ "text",
+ "-moz-none",
+ "all",
+ "element"
+ ],
+
+ "mozBoxSizing":
+ [
+ "content-box",
+ "padding-box",
+ "border-box"
+ ],
+
+ "mozBoxAlign":
+ [
+ "start",
+ "center",
+ "end",
+ "baseline",
+ "stretch"
+ ],
+
+ "mozBoxDirection":
+ [
+ "normal",
+ "reverse"
+ ],
+
+ "mozBoxOrient":
+ [
+ "horizontal",
+ "vertical",
+ "inline-axis",
+ "block-axis"
+ ],
+
+ "mozBoxPack":
+ [
+ "start",
+ "center",
+ "end",
+ "justify"
+ ],
+
+ "boxShadow":
+ [
+ "inset"
+ ],
+
+ "borderImageRepeat":
+ [
+ "stretch",
+ "round",
+ "repeat",
+ "space"
+ ],
+
+ "image":
+ [
+ "url()",
+ "linear-gradient()",
+ "radial-gradient()",
+ "repeating-linear-gradient()",
+ "repeating-radial-gradient()",
+ "-moz-linear-gradient()",
+ "-moz-radial-gradient()",
+ "-moz-repeating-linear-gradient()",
+ "-moz-repeating-radial-gradient()",
+ "-moz-image-rect()",
+ "-moz-element()",
+ ],
+
+ "length":
+ [
+ "calc()"
+ ],
+
+ "transformFunction":
+ [
+ "matrix()",
+ "matrix3d()",
+ "rotate()",
+ "rotateX()",
+ "rotateY()",
+ "rotateZ()",
+ "scale()",
+ "scaleX()",
+ "scaleY()",
+ "scaleZ()",
+ "scale3d()",
+ "scaleZ()",
+ "skewX()",
+ "skewY()",
+ "translate()",
+ "translateX()",
+ "translateY()",
+ "translateZ()"
+ ],
+
+ "mozFontFeatureSettings":
+ [
+ "normal",
+ "on",
+ "off",
+
+ // Font features
+ // Doesn't include cv01-cv99
+ "\"aalt\"",
+ "\"abvf\"",
+ "\"abvm\"",
+ "\"abvs\"",
+ "\"afrc\"",
+ "\"akhn\"",
+ "\"blwf\"",
+ "\"blwm\"",
+ "\"blws\"",
+ "\"calt\"",
+ "\"case\"",
+ "\"ccmp\"",
+ "\"cfar\"",
+ "\"cjct\"",
+ "\"clig\"",
+ "\"cpct\"",
+ "\"cpsp\"",
+ "\"cswh\"",
+ "\"curs\"",
+ "\"c2pc\"",
+ "\"c2sc\"",
+ "\"dist\"",
+ "\"dlig\"",
+ "\"dnom\"",
+ "\"expt\"",
+ "\"falt\"",
+ "\"fin2\"",
+ "\"fin3\"",
+ "\"fina\"",
+ "\"frac\"",
+ "\"fwid\"",
+ "\"half\"",
+ "\"haln\"",
+ "\"halt\"",
+ "\"hist\"",
+ "\"hkna\"",
+ "\"hlig\"",
+ "\"hngl\"",
+ "\"hojo\"",
+ "\"hwid\"",
+ "\"init\"",
+ "\"isol\"",
+ "\"ital\"",
+ "\"jalt\"",
+ "\"jp78\"",
+ "\"jp83\"",
+ "\"jp90\"",
+ "\"jp04\"",
+ "\"kern\"",
+ "\"lfbd\"",
+ "\"liga\"",
+ "\"ljmo\"",
+ "\"lnum\"",
+ "\"locl\"",
+ "\"ltra\"",
+ "\"ltrm\"",
+ "\"mark\"",
+ "\"med2\"",
+ "\"medi\"",
+ "\"mgrk\"",
+ "\"mkmk\"",
+ "\"mset\"",
+ "\"nalt\"",
+ "\"nlck\"",
+ "\"nukt\"",
+ "\"numr\"",
+ "\"onum\"",
+ "\"opbd\"",
+ "\"ordn\"",
+ "\"ornm\"",
+ "\"palt\"",
+ "\"pcap\"",
+ "\"pkna\"",
+ "\"pnum\"",
+ "\"pref\"",
+ "\"pres\"",
+ "\"pstf\"",
+ "\"psts\"",
+ "\"pwid\"",
+ "\"qwid\"",
+ "\"rand\"",
+ "\"rkrf\"",
+ "\"rlig\"",
+ "\"rphf\"",
+ "\"rtbd\"",
+ "\"rtla\"",
+ "\"rtlm\"",
+ "\"ruby\"",
+ "\"salt\"",
+ "\"sinf\"",
+ "\"size\"",
+ "\"smcp\"",
+ "\"smpl\"",
+ "\"ss01\"",
+ "\"ss02\"",
+ "\"ss03\"",
+ "\"ss04\"",
+ "\"ss05\"",
+ "\"ss06\"",
+ "\"ss07\"",
+ "\"ss08\"",
+ "\"ss09\"",
+ "\"ss10\"",
+ "\"ss11\"",
+ "\"ss12\"",
+ "\"ss13\"",
+ "\"ss14\"",
+ "\"ss15\"",
+ "\"ss16\"",
+ "\"ss17\"",
+ "\"ss18\"",
+ "\"ss19\"",
+ "\"ss20\"",
+ "\"subs\"",
+ "\"sups\"",
+ "\"swsh\"",
+ "\"titl\"",
+ "\"tjmo\"",
+ "\"tnam\"",
+ "\"tnum\"",
+ "\"trad\"",
+ "\"twid\"",
+ "\"unic\"",
+ "\"valt\"",
+ "\"vatu\"",
+ "\"vert\"",
+ "\"vhal\"",
+ "\"vjmo\"",
+ "\"vkna\"",
+ "\"vkrn\"",
+ "\"vpal\"",
+ "\"vrt2\"",
+ "\"zero\""
+ ],
+
+ // FF 10.0
+ "transformStyle":
+ [
+ "preserve-3d",
+ "flat"
+ ],
+
+ // FF 4.0
+ "transitionProperty":
+ [
+ "none",
+ "all",
+ "background-color",
+ "background-image",
+ "background-position",
+ "background-size",
+ "border-color",
+ "border-radius",
+ "border-width",
+ "border-spacing",
+ "bottom",
+ "box-shadow",
+ "color",
+ "clip",
+ "fill",
+ "fill-opacity",
+ "flood-color",
+ "font-size",
+ "font-size-adjust",
+ "font-stretch",
+ "font-weight",
+ "height",
+ "left",
+ "letter-spacing",
+ "lighting-color",
+ "line-height",
+ "margin ",
+ "marker-offset",
+ "max-height",
+ "max-width",
+ "min-height",
+ "min-width",
+ "opacity",
+ "outline-color",
+ "outline-offset",
+ "outline-width",
+ "padding",
+ "right",
+ "stop-color",
+ "stop-opacity",
+ "stroke",
+ "stroke-dasharray",
+ "stroke-dashoffset",
+ "stroke-miterlimit",
+ "stroke-opacity",
+ "stroke-width",
+ "text-indent",
+ "text-shadow",
+ "top",
+ "transform-origin",
+ "transform",
+ "vertical-align",
+ "visibility",
+ "width",
+ "word-spacing",
+ "z-index",
+ "-moz-box-flex",
+ "-moz-column-count",
+ "-moz-column-gap",
+ "-moz-column-rule-color",
+ "-moz-column-rule-width",
+ "-moz-column-width",
+ "-moz-image-region",
+ "-moz-outline-radius"
+ ],
+
+ "timingFunction": // FF 4.0
+ [
+ "cubic-bezier()",
+ "ease",
+ "ease-in",
+ "ease-in-out",
+ "ease-out",
+ "linear",
+ "step-start",
+ "step-end",
+ "steps()"
+ ],
+
+ "mozTextDecorationLine": // FF 6.0
+ [
+ "underline",
+ "overline",
+ "line-through",
+ "none"
+ ],
+
+ "mozTextDecorationStyle": // FF 6.0
+ [
+ "solid",
+ "double",
+ "dotted",
+ "dashed",
+ "wavy"
+ ],
+
+ "mozHyphens": // FF 6.0
+ [
+ "none",
+ "manual",
+ "auto"
+ ],
+
+ // FF 7.0
+ "textOverflow":
+ [
+ "clip",
+ "ellipsis"
+ ],
+
+ // FF 3.0
+ "width":
+ [
+ "-moz-max-content",
+ "-moz-min-content",
+ "-moz-fit-content",
+ "-moz-available"
+ ],
+
+ "imeMode":
+ [
+ "auto",
+ "normal",
+ "active",
+ "inactive",
+ "disabled"
+ ],
+
+ // FF 3.0
+ "textRendering":
+ [
+ "auto",
+ "optimizeSpeed",
+ "optimizeLegibility",
+ "geometricPrecision"
+ ],
+
+ "wordWrap":
+ [
+ "normal",
+ "break-word"
+ ],
+
+ "pageBreak":
+ [
+ "auto",
+ "always",
+ "avoid",
+ "left",
+ "right"
+ ],
+
+ // start SVG specific
+
+ "alignmentBaseline":
+ [
+ "auto",
+ "baseline",
+ "before-edge",
+ "text-before-edge",
+ "middle",
+ "central",
+ "after-edge",
+ "text-after-edge",
+ "ideographic",
+ "alphabetic",
+ "hanging",
+ "mathematical"
+ ],
+
+ "baselineShift":
+ [
+ "baseline",
+ "sub",
+ "super"
+ ],
+
+ "colorInterpolation":
+ [
+ "auto",
+ "sRGB",
+ "linearRGB"
+ ],
+
+ "clipRule":
+ [
+ "nonzero",
+ "evenodd"
+ ],
+
+ "colorProfile":
+ [
+ "auto",
+ "sRGB"
+ ],
+
+ "colorRendering":
+ [
+ "auto",
+ "optimizeSpeed",
+ "optimizeQuality"
+ ],
+
+ "dominantBaseline":
+ [
+ "auto",
+ "use-script",
+ "no-change",
+ "reset-size",
+ "ideographic",
+ "alphabetic",
+ "hanging",
+ "mathematical",
+ "central",
+ "middle",
+ "text-after-edge",
+ "text-before-edge"
+ ],
+
+ "accumulate":
+ [
+ "accumulate"
+ ],
+
+ "fontStretch":
+ [
+ "normal",
+ "wider",
+ "narrower",
+ "ultra-condensed",
+ "extra-condensed",
+ "condensed",
+ "semi-condensed",
+ "semi-expanded",
+ "expanded",
+ "extra-expanded",
+ "ultra-expanded"
+ ],
+
+ "imageRendering":
+ [
+ "auto",
+ "optimizespeed",
+ "optimizequality",
+ "-moz-crisp-edges"
+ ],
+
+ "svgOverflow":
+ [
+ "visible",
+ "hidden",
+ "scroll"
+ ],
+
+ "pointerEvents":
+ [
+ "none",
+ "all",
+ "auto",
+ "visiblePainted",
+ "visibleFill",
+ "visibleStroke",
+ "visible",
+ "painted",
+ "fill",
+ "stroke"
+ ],
+
+ "shapeRendering":
+ [
+ "optimizeSpeed",
+ "crispEdges",
+ "geometricPrecision"
+ ],
+
+ "strokeLinecap":
+ [
+ "butt",
+ "round",
+ "square"
+ ],
+
+ "strokeLinejoin":
+ [
+ "miter",
+ "round",
+ "bevel"
+ ],
+
+ "writingMode":
+ [
+ "lr-tb",
+ "rl-tb",
+ "tb-rl",
+ "lr",
+ "rl",
+ "tb"
+ ],
+
+ "resize":
+ [
+ "none",
+ "both",
+ "horizontal",
+ "vertical"
+ ]
+};
+
+// Most common supported charsets according to http://en.wikipedia.org/wiki/Character_encoding
+Css.charsets =
+[
+ "Big5",
+ "Big5-HKSCS",
+ "EUC-JP",
+ "EUC-KR",
+ "GB18030",
+ "GB2312",
+ "GBK",
+ "ISO-2022-JP",
+ "ISO-2022-JP-2",
+ "ISO-2022-KR",
+ "ISO-8859-1",
+ "ISO-8859-2",
+ "ISO-8859-3",
+ "ISO-8859-4",
+ "ISO-8859-5",
+ "ISO-8859-6",
+ "ISO-8859-7",
+ "ISO-8859-8",
+ "ISO-8859-9",
+ "ISO-8859-10",
+ "JIS_Encoding",
+ "KOI8-R",
+ "KOI8-U",
+ "Shift_JIS",
+ "TSCII",
+ "UTF-8",
+ "US-ASCII",
+ "VISCII",
+ "Windows-1250",
+ "Windows-1251",
+ "Windows-1252",
+ "Windows-1253",
+ "Windows-1254",
+ "Windows-1255",
+ "Windows-1256",
+ "Windows-1257",
+ "Windows-1258"
+];
+
+// http://www.w3.org/TR/CSS21/media.html#media-types
+Css.mediaTypes =
+[
+ "all",
+ "aural",
+ "braille",
+ "embossed",
+ "handheld",
+ "print",
+ "projection",
+ "screen",
+ "tty",
+ "tv"
+];
+
+// https://developer.mozilla.org/en-US/docs/CSS/@document
+Css.documentConditions =
+[
+ "url()",
+ "url-prefix()",
+ "domain()",
+ "regexp()"
+];
+
+// https://developer.mozilla.org/en-US/docs/CSS/@keyframes#Values
+Css.keyframeKeys =
+{
+ "from": "0%",
+ "to": "100%"
+};
+
+// http://mxr.mozilla.org/mozilla-central/source/layout/style/nsCSSPseudoClassList.h
+// Also http://mxr.mozilla.org/mozilla-central/source/layout/style/nsCSSAnonBoxList.h
+// but that's not relevant for our purposes.
+Css.pseudoClasses =
+[
+ ":active",
+ ":checked",
+ ":default",
+ ":disabled",
+ ":empty",
+ ":enabled",
+ ":first-child",
+ ":first-of-type",
+ ":focus",
+ ":hover",
+ ":indeterminate",
+ ":in-range",
+ ":invalid",
+ ":lang()",
+ ":last-child",
+ ":last-of-type",
+ ":link",
+ ":not()",
+ ":nth-child()",
+ ":nth-last-child()",
+ ":nth-last-of-type()",
+ ":nth-of-type()",
+ ":only-child",
+ ":only-of-type",
+ ":optional",
+ ":out-of-range",
+ ":required",
+ ":root",
+ ":target",
+ ":valid",
+ ":visited",
+ ":-moz-any()",
+ ":-moz-any-link",
+ ":-moz-bound-element",
+ ":-moz-broken",
+ ":-moz-drag-over",
+ ":-moz-empty-except-children-with-localname()",
+ ":-moz-first-node",
+ ":-moz-focusring",
+ ":-moz-full-screen",
+ ":-moz-full-screen-ancestor",
+ ":-moz-handler-blocked",
+ ":-moz-handler-clicktoplay",
+ ":-moz-handler-crashed",
+ ":-moz-handler-disabled",
+ ":-moz-has-handlerref",
+ ":-moz-is-html",
+ ":-moz-last-node",
+ ":-moz-loading",
+ // ":-moz-locale-dir(ltr)", // http://bugzil.la/588996
+ // ":-moz-locale-dir(rtl)",
+ ":-moz-lwtheme",
+ ":-moz-lwtheme-brighttext",
+ ":-moz-lwtheme-darktext",
+ ":-moz-math-increment-script-level",
+ ":-moz-meter-optimum",
+ ":-moz-meter-sub-optimum",
+ ":-moz-meter-sub-sub-optimum",
+ ":-moz-only-whitespace",
+ ":-moz-placeholder",
+ ":-moz-read-only",
+ ":-moz-read-write",
+ ":-moz-submit-invalid",
+ ":-moz-suppressed",
+ ":-moz-system-metric(images-in-menus)",
+ ":-moz-system-metric(mac-graphite-theme)",
+ ":-moz-system-metric(scrollbar-end-backward)",
+ ":-moz-system-metric(scrollbar-end-forward)",
+ ":-moz-system-metric(scrollbar-start-backward)",
+ ":-moz-system-metric(scrollbar-start-forward)",
+ ":-moz-system-metric(scrollbar-thumb-proportional)",
+ ":-moz-system-metric(touch-enabled)",
+ ":-moz-system-metric(windows-default-theme)",
+ ":-moz-table-border-nonzero",
+ ":-moz-type-unsupported",
+ ":-moz-ui-invalid",
+ ":-moz-ui-valid",
+ ":-moz-user-disabled",
+ ":-moz-window-inactive"
+];
+
+// https://developer.mozilla.org/en-US/docs/CSS/CSS_Reference/Mozilla_Extensions#Pseudo-elements_and_pseudo-classes
+// http://mxr.mozilla.org/mozilla-central/source/browser/devtools/styleinspector/CssLogic.jsm
+Css.pseudoElements =
+[
+ "::after",
+ "::before",
+ "::first-letter",
+ "::first-line",
+ "::-moz-focus-inner",
+ "::-moz-focus-outer",
+ "::-moz-list-bullet",
+ "::-moz-list-number",
+ "::-moz-math-anonymous",
+ "::-moz-math-stretchy",
+ "::-moz-placeholder",
+ "::-moz-progress-bar",
+ "::-moz-selection"
+];
+
+Css.nonEditableTags =
+{
+ "HTML": 1, "html": 1,
+ "HEAD": 1, "head": 1
+};
+
+Css.innerEditableTags =
+{
+ "BODY": 1, "body": 1
+};
+
+Css.nonDeletableTags =
+{
+ "HTML": 1, "html": 1,
+ "HEAD": 1, "head": 1,
+ "BODY": 1, "body": 1
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return Css;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/deprecated.js b/content/firebug/lib/deprecated.js
index 579217c..b4b4885 100644
--- a/content/firebug/lib/deprecated.js
+++ b/content/firebug/lib/deprecated.js
@@ -1,68 +1,68 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace"
-],
-function(FBTrace) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-var consoleService = Cc["@mozilla.org/consoleservice;1"].getService(Ci["nsIConsoleService"]);
-
-// ********************************************************************************************* //
-// Module implementation
-
-var Deprecated = {};
-Deprecated.deprecated = function(msg, fnc, args)
-{
- return function deprecationWrapper()
- {
- if (!this.nagged)
- {
- // drop frame with deprecated()
- var caller = Components.stack.caller;
- var explain = "Deprecated function, " + msg;
-
- if (typeof(FBTrace) !== undefined)
- {
- FBTrace.sysout(explain, getStackDump());
-
- //if (exc.stack)
- // exc.stack = exc.stack.split("\n");
-
- FBTrace.sysout(explain + " " + caller.toString());
- }
-
- if (consoleService)
- consoleService.logStringMessage(explain + " " + caller.toString());
-
- this.nagged = true;
- }
-
- return fnc.apply(this, args || arguments);
- };
-};
-
-// ********************************************************************************************* //
-// Local helpers
-
-function getStackDump()
-{
- var lines = [];
- for (var frame = Components.stack; frame; frame = frame.caller)
- lines.push(frame.filename + " (" + frame.lineNumber + ")");
-
- return lines.join("\n");
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return Deprecated;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace"
+],
+function(FBTrace) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+var consoleService = Cc["@mozilla.org/consoleservice;1"].getService(Ci["nsIConsoleService"]);
+
+// ********************************************************************************************* //
+// Module implementation
+
+var Deprecated = {};
+Deprecated.deprecated = function(msg, fnc, args)
+{
+ return function deprecationWrapper()
+ {
+ if (!this.nagged)
+ {
+ // drop frame with deprecated()
+ var caller = Components.stack.caller;
+ var explain = "Deprecated function, " + msg;
+
+ if (typeof(FBTrace) !== undefined)
+ {
+ FBTrace.sysout(explain, getStackDump());
+
+ //if (exc.stack)
+ // exc.stack = exc.stack.split("\n");
+
+ FBTrace.sysout(explain + " " + caller.toString());
+ }
+
+ if (consoleService)
+ consoleService.logStringMessage(explain + " " + caller.toString());
+
+ this.nagged = true;
+ }
+
+ return fnc.apply(this, args || arguments);
+ };
+};
+
+// ********************************************************************************************* //
+// Local helpers
+
+function getStackDump()
+{
+ var lines = [];
+ for (var frame = Components.stack; frame; frame = frame.caller)
+ lines.push(frame.filename + " (" + frame.lineNumber + ")");
+
+ return lines.join("\n");
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return Deprecated;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/dom.js b/content/firebug/lib/dom.js
index 954e845..4c3463f 100644
--- a/content/firebug/lib/dom.js
+++ b/content/firebug/lib/dom.js
@@ -1,2765 +1,2765 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/deprecated",
- "firebug/lib/css",
- "firebug/lib/array",
- "firebug/lib/xml",
- "firebug/lib/wrapper",
-],
-function(FBTrace, Deprecated, Css, Arr, Xml, Wrapper) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Ci = Components.interfaces;
-var Cc = Components.classes;
-
-var Dom = {};
-var domMemberCache = null;
-var domMemberMap = {};
-var domMappedData = new WeakMap();
-
-Dom.domUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
-
-// ********************************************************************************************* //
-// DOM APIs
-
-Dom.getChildByClass = function(node) // ,classname, classname, classname...
-{
- if (!node)
- {
- FBTrace.sysout("dom.getChildByClass; ERROR, no parent node!");
- return null;
- }
-
- for (var i = 1; i < arguments.length; ++i)
- {
- var className = arguments[i];
- var child = node.firstChild;
- node = null;
- for (; child; child = child.nextSibling)
- {
- if (Css.hasClass(child, className))
- {
- node = child;
- break;
- }
- }
- }
-
- return node;
-};
-
-Dom.getAncestorByClass = function(node, className)
-{
- for (var parent = node; parent; parent = parent.parentNode)
- {
- if (Css.hasClass(parent, className))
- return parent;
- }
-
- return null;
-};
-
-Dom.getAncestorByTagName = function(node, tagName)
-{
- for (var parent = node; parent; parent = parent.parentNode)
- {
- if (parent.localName && parent.tagName.toLowerCase() == tagName)
- return parent;
- }
-
- return null;
-};
-
-/* @Deprecated Use native Firefox: node.getElementsByClassName(names).item(0) */
-Dom.getElementByClass = function(node, className) // className, className, ...
-{
- return Dom.getElementsByClass.apply(this,arguments).item(0);
-};
-
-/* @Deprecated Use native Firefox: node.getElementsByClassName(names) */
-Dom.getElementsByClass = function(node, className) // className, className, ...
-{
- var args = Arr.cloneArray(arguments); args.splice(0, 1);
- return node.getElementsByClassName(args.join(" "));
-};
-
-Dom.getElementsByAttribute = function(node, attrName, attrValue)
-{
- function iteratorHelper(node, attrName, attrValue, result)
- {
- // xxxFlorent: sadly, Documents and DocumentFragments do not have firstElementChild
- // properties currently.
- for (var child = node.firstChild; child; child = child.nextSibling)
- {
- if (child.nodeType !== document.ELEMENT_NODE)
- continue;
-
- if (child.getAttribute(attrName) == attrValue)
- result.push(child);
-
- iteratorHelper(child, attrName, attrValue, result);
- }
- }
-
- var result = [];
- iteratorHelper(node, attrName, attrValue, result);
- return result;
-};
-
-Dom.isAncestor = function(node, potentialAncestor)
-{
- for (var parent = node; parent; parent = parent.parentNode)
- {
- if (parent == potentialAncestor)
- return true;
- }
-
- return false;
-};
-
-Dom.getNextElement = function(node)
-{
- while (node && node.nodeType != Node.ELEMENT_NODE)
- node = node.nextSibling;
-
- return node;
-};
-
-Dom.getPreviousElement = function(node)
-{
- while (node && node.nodeType != Node.ELEMENT_NODE)
- node = node.previousSibling;
-
- return node;
-};
-
-Dom.getBody = function(doc)
-{
- if (doc.body)
- return doc.body;
-
- var body = doc.getElementsByTagName("body")[0];
- if (body)
- return body;
-
- return doc.documentElement; // For non-HTML docs
-};
-
-Dom.getNonFrameBody = function(elt)
-{
- if (Dom.isRange(elt))
- elt = elt.commonAncestorContainer;
-
- var body = Dom.getBody(elt.ownerDocument);
- return (body.localName && body.localName.toUpperCase() === "FRAMESET") ? null : body;
-}
-
-// ********************************************************************************************* //
-// DOM Modification
-
-Dom.insertAfter = function(newNode, referenceNode)
-{
- if (referenceNode.parentNode)
- referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
-};
-
-Dom.addScript = function(doc, id, src)
-{
- var element = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script");
- element.setAttribute("type", "text/javascript");
- element.setAttribute("id", id);
-
- if (!FBTrace.DBG_CONSOLE)
- Firebug.setIgnored(element);
-
- element.textContent = src;
-
- if (doc.documentElement)
- {
- doc.documentElement.appendChild(element);
- }
- else
- {
- // See issue 1079, the svg test case gives this error
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("lib.addScript doc has no documentElement (" +
- doc.readyState + ") " + doc.location, doc);
- return;
- }
- return element;
-};
-
-Dom.setOuterHTML = function(element, html)
-{
- try
- {
- var fragment = Dom.markupToDocFragment(html, element);
-
- var first = fragment.firstChild;
- var last = fragment.lastChild;
- element.parentNode.replaceChild(fragment, element);
- return [first, last];
- }
- catch (e)
- {
- return [element, element];
- }
-};
-
-Dom.markupToDocFragment = function(markup, parent)
-{
- var doc = parent.ownerDocument;
- var range = doc.createRange();
- range.selectNode(parent || doc.documentElement);
-
- return range.createContextualFragment(markup);
-};
-
-Dom.appendInnerHTML = function(element, html, referenceElement)
-{
- var doc = element.ownerDocument;
- var range = doc.createRange(); // a helper object
- range.selectNodeContents(element); // the environment to interpret the html
-
- var fragment = range.createContextualFragment(html); // parse
- var firstChild = fragment.firstChild;
- element.insertBefore(fragment, referenceElement);
-
- return firstChild;
-};
-
-Dom.insertTextIntoElement = function(element, text)
-{
- var command = "cmd_insertText";
-
- var controller = element.controllers.getControllerForCommand(command);
- if (!controller || !controller.isCommandEnabled(command))
- return;
-
- var params = Cc["@mozilla.org/embedcomp/command-params;1"].createInstance(Ci.nsICommandParams);
- params.setStringValue("state_data", text);
-
- if (controller instanceof Ci.nsICommandController)
- controller.doCommandWithParams(command, params);
-};
-
-// ********************************************************************************************* //
-
-Dom.collapse = function(elt, collapsed)
-{
- if (!elt)
- {
- FBTrace.sysout("Dom.collapse; ERROR null element.");
- return;
- }
-
- elt.setAttribute("collapsed", collapsed ? "true" : "false");
-};
-
-Dom.isCollapsed = function(elt)
-{
- return (elt.getAttribute("collapsed") == "true") ? true : false;
-};
-
-Dom.hide = function(elt, hidden)
-{
- elt.style.visibility = hidden ? "hidden" : "visible";
-};
-
-Dom.clearNode = function(node)
-{
- node.textContent = "";
-};
-
-Dom.eraseNode = function(node)
-{
- while (node.lastChild)
- node.removeChild(node.lastChild);
-};
-
-// ********************************************************************************************* //
-
-Dom.isNode = function(o)
-{
- try {
- return o && o instanceof window.Node;
- }
- catch (ex) {
- return false;
- }
-};
-
-Dom.isElement = function(o)
-{
- try {
- return o && o instanceof window.Element;
- }
- catch (ex) {
- return false;
- }
-};
-
-Dom.isRange = function(o)
-{
- try {
- return o && o instanceof window.Range;
- }
- catch (ex) {
- return false;
- }
-};
-
-Dom.hasChildElements = function(node)
-{
- if (node.contentDocument) // iframes
- return true;
-
- for (var child = node.firstChild; child; child = child.nextSibling)
- {
- if (child.nodeType == Node.ELEMENT_NODE)
- return true;
- }
-
- return false;
-};
-
-// ********************************************************************************************* //
-
-Dom.getNextByClass = function(root, state)
-{
- function iter(node) { return node.nodeType == Node.ELEMENT_NODE && Css.hasClass(node, state); }
- return Dom.findNext(root, iter);
-};
-
-Dom.getPreviousByClass = function(root, state)
-{
- function iter(node) { return node.nodeType == Node.ELEMENT_NODE && Css.hasClass(node, state); }
- return Dom.findPrevious(root, iter);
-};
-
-Dom.findNextDown = function(node, criteria)
-{
- if (!node)
- return null;
-
- for (var child = node.firstChild; child; child = child.nextSibling)
- {
- if (criteria(child))
- return child;
-
- var next = Dom.findNextDown(child, criteria);
- if (next)
- return next;
- }
-};
-
-Dom.findPreviousUp = function(node, criteria)
-{
- if (!node)
- return null;
-
- for (var child = node.lastChild; child; child = child.previousSibling)
- {
- var next = Dom.findPreviousUp(child, criteria);
- if (next)
- return next;
-
- if (criteria(child))
- return child;
- }
-};
-
-Dom.findNext = function(node, criteria, upOnly, maxRoot)
-{
- if (!node)
- return null;
-
- if (!upOnly)
- {
- var next = Dom.findNextDown(node, criteria);
- if (next)
- return next;
- }
-
- for (var sib = node.nextSibling; sib; sib = sib.nextSibling)
- {
- if (criteria(sib))
- return sib;
-
- var next = Dom.findNextDown(sib, criteria);
- if (next)
- return next;
- }
-
- if (node.parentNode && node.parentNode != maxRoot)
- {
- return Dom.findNext(node.parentNode, criteria, true, maxRoot);
- }
- return null;
-};
-
-Dom.findPrevious = function(node, criteria, downOnly, maxRoot)
-{
- if (!node)
- return null;
-
- for (var sib = node.previousSibling; sib; sib = sib.previousSibling)
- {
- var prev = Dom.findPreviousUp(sib, criteria);
- if (prev)
- return prev;
-
- if (criteria(sib))
- return sib;
- }
-
- if (!downOnly)
- {
- var next = Dom.findPreviousUp(node, criteria);
- if (next)
- return next;
- }
-
- if (node.parentNode && node.parentNode != maxRoot)
- {
- if (criteria(node.parentNode))
- return node.parentNode;
-
- return Dom.findPrevious(node.parentNode, criteria, true, maxRoot);
- }
- return null;
-};
-
-// ********************************************************************************************* //
-// Graphics
-
-/**
- * Gets the absolute offset of an element
- * @param {Element} elt Element to get the info for
- * @returns {Object} x and y offset of the element
- */
-Dom.getClientOffset = function(elt)
-{
- function addOffset(elt, coords, view)
- {
- var p = elt.offsetParent;
-
- var style = view.getComputedStyle(elt, "");
-
- if (elt.offsetLeft)
- coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth);
- if (elt.offsetTop)
- coords.y += elt.offsetTop + parseInt(style.borderTopWidth);
-
- if (p)
- {
- if (p.nodeType == Node.ELEMENT_NODE)
- addOffset(p, coords, view);
- }
- else if (elt.ownerDocument.defaultView.frameElement)
- {
- addOffset(elt.ownerDocument.defaultView.frameElement, coords,
- elt.ownerDocument.defaultView);
- }
- }
-
- var coords = {x: 0, y: 0};
- if (elt)
- {
- var view = elt.ownerDocument.defaultView;
- addOffset(elt, coords, view);
- }
-
- return coords;
-};
-
-/**
- * Gets layout info about an element
- * @param {Object} elt Element to get the info for
- * @returns {Object} Layout information including "left", "top", "right", "bottom",
- * "width" and "height"
- */
-Dom.getLTRBWH = function(elt)
-{
- var bcrect;
- var dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0};
-
- if (elt)
- {
- bcrect = elt.getBoundingClientRect();
- dims.left = bcrect.left;
- dims.top = bcrect.top;
- dims.right = bcrect.right;
- dims.bottom = bcrect.bottom;
-
- if (bcrect.width)
- {
- dims.width = bcrect.width;
- dims.height = bcrect.height;
- }
- else
- {
- dims.width = dims.right - dims.left;
- dims.height = dims.bottom - dims.top;
- }
- }
- return dims;
-};
-
-/**
- * Gets the offset of an element relative to an ancestor
- * @param {Element} elt Element to get the info for
- * @param {Element} ancestor Ancestor element used as origin
- */
-Dom.getAncestorOffset = function(elt, ancestor)
-{
- var offset = {x: 0, y: 0};
- var offsetParent = elt;
- do
- {
- offset.x += offsetParent.offsetLeft;
- offset.y += offsetParent.offsetTop;
- offsetParent = offsetParent.offsetParent;
- } while (offsetParent && offsetParent !== ancestor);
-
- return offset;
-};
-
-/**
- * Gets the offset size of an element
- * @param {Object} elt Element to move
- * @returns {Object} Offset width and height of the element
- */
-Dom.getOffsetSize = function(elt)
-{
- return {width: elt.offsetWidth, height: elt.offsetHeight};
-};
-
-/**
- * Get the next scrollable ancestor
- * @param {Object} element Element to search the ancestor for
- * @returns {Object} Scrollable ancestor
- */
-Dom.getOverflowParent = function(element)
-{
- for (var scrollParent = element.parentNode; scrollParent;
- scrollParent = scrollParent.offsetParent)
- {
- if (scrollParent.scrollHeight > scrollParent.offsetHeight)
- return scrollParent;
- }
-};
-
-/**
- * Checks whether an element is scrolled to the bottom
- * @param {Object} element Element to check
- * @returns {Boolean} True, if element is scrolled to the bottom, otherwise false
- */
-Dom.isScrolledToBottom = function(element)
-{
- var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight;
-
- if (FBTrace.DBG_CONSOLE)
- {
- FBTrace.sysout("Dom.isScrolledToBottom offsetHeight: " + element.offsetHeight +
- ", scrollTop: " + element.scrollTop + ", scrollHeight: " + element.scrollHeight +
- ", onBottom: " + onBottom);
- }
-
- return onBottom;
-};
-
-/**
- * Scrolls a scrollable element to the bottom
- * @param {Object} element Element to scroll
- * @returns {Boolean} True, if the element could be scrolled to the bottom, otherwise false
- */
-Dom.scrollToBottom = function(element)
-{
- element.scrollTop = element.scrollHeight;
-
- if (FBTrace.DBG_CONSOLE)
- {
- FBTrace.sysout("scrollToBottom reset scrollTop " + element.scrollTop + " = " +
- element.scrollHeight);
-
- if (element.scrollHeight == element.offsetHeight)
- {
- FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element " +
- element, element);
- }
- }
-
- return (element.scrollTop == element.scrollHeight);
-};
-
-/**
- * Moves an element
- * @param {Object} element Element to move
- * @param {Number} x New horizontal position
- * @param {Number} y New vertical position
- */
-Dom.move = function(element, x, y)
-{
- element.style.left = x + "px";
- element.style.top = y + "px";
-};
-
-/**
- * Resizes an element
- * @param {Object} element Element to resize
- * @param {Number} w New width
- * @param {Number} h New height
- */
-Dom.resize = function(element, w, h)
-{
- element.style.width = w + "px";
- element.style.height = h + "px";
-};
-
-Dom.linesIntoCenterView = function(element, scrollBox) // {before: int, after: int}
-{
- if (!scrollBox)
- scrollBox = Dom.getOverflowParent(element);
-
- if (!scrollBox)
- return;
-
- var offset = Dom.getClientOffset(element);
-
- var topSpace = offset.y - scrollBox.scrollTop;
- var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) -
- (offset.y + element.offsetHeight);
-
- if (topSpace < 0 || bottomSpace < 0)
- {
- var split = (scrollBox.clientHeight/2);
- var centerY = offset.y - split;
- scrollBox.scrollTop = centerY;
- topSpace = split;
- bottomSpace = split - element.offsetHeight;
- }
-
- return {
- before: Math.round((topSpace/element.offsetHeight) + 0.5),
- after: Math.round((bottomSpace/element.offsetHeight) + 0.5)
- };
-};
-
-/**
- * Scrolls an element into view
- * @param {Object} element Element to scroll to
- * @param {Object} scrollBox Scrolled element (Must be an ancestor of "element" or
- * null for automatically determining the ancestor)
- * @param {String} alignmentX Horizontal alignment for the element
- * (valid values: "centerOrLeft", "left", "middle", "right", "none")
- * @param {String} alignmentY Vertical alignment for the element
- * (valid values: "centerOrTop", "top", "middle", "bottom", "none")
- * @param {Boolean} scrollWhenVisible Specifies whether "scrollBox" should be scrolled even when
- * "element" is completely visible
- */
-Dom.scrollTo = function(element, scrollBox, alignmentX, alignmentY, scrollWhenVisible)
-{
- if (!element)
- return;
-
- if (!scrollBox)
- scrollBox = Dom.getOverflowParent(element);
-
- if (!scrollBox)
- return;
-
- var offset = Dom.getAncestorOffset(element, scrollBox);
-
- if (!alignmentX)
- alignmentX = "centerOrLeft";
-
- if (!alignmentY)
- alignmentY = "centerOrTop";
-
- if (alignmentY)
- {
- var topSpace = offset.y - scrollBox.scrollTop;
- var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) -
- (offset.y + element.offsetHeight);
-
- // Element is vertically not completely visible or scrolling is enforced
- if (topSpace < 0 || bottomSpace < 0 || scrollWhenVisible)
- {
- switch (alignmentY)
- {
- case "top":
- scrollBox.scrollTop = offset.y;
- break;
-
- case "center":
- case "centerOrTop":
- var elementFitsIntoScrollBox = element.offsetHeight <= scrollBox.clientHeight;
- var y = elementFitsIntoScrollBox || alignmentY != "centerOrTop" ?
- offset.y - (scrollBox.clientHeight - element.offsetHeight) / 2 :
- offset.y;
- scrollBox.scrollTop = y;
- break;
-
- case "bottom":
- var y = offset.y + element.offsetHeight - scrollBox.clientHeight;
- scrollBox.scrollTop = y;
- break;
- }
- }
- }
-
- if (alignmentX)
- {
- var leftSpace = offset.x - scrollBox.scrollLeft;
- var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth) -
- (offset.x + element.clientWidth);
-
- // Element is horizontally not completely visible or scrolling is enforced
- if (leftSpace < 0 || rightSpace < 0 || scrollWhenVisible)
- {
- switch (alignmentX)
- {
- case "left":
- scrollBox.scrollLeft = offset.x;
- break;
-
- case "center":
- case "centerOrLeft":
- var elementFitsIntoScrollBox = element.offsetWidth <= scrollBox.clientWidth;
- var x = elementFitsIntoScrollBox || alignmentX != "centerOrLeft" ?
- offset.x - (scrollBox.clientWidth - element.offsetWidth) / 2 :
- offset.x;
- scrollBox.scrollLeft = x;
- break;
-
- case "right":
- var x = offset.x + element.offsetWidth - scrollBox.clientWidth;
- scrollBox.scrollLeft = x;
- break;
- }
- }
- }
-
- if (FBTrace.DBG_PANELS)
- FBTrace.sysout("dom.scrollTo", element);
-};
-
-/**
- * Centers an element inside a scrollable area
- * @param {Object} element Element to scroll to
- * @param {Object} scrollBox Scrolled element (Must be an ancestor of "element" or
- * null for automatically determining the ancestor)
- * @param {Boolean} notX Specifies whether the element should be centered horizontally
- * @param {Boolean} notY Specifies whether the element should be centered vertically
- */
-Dom.scrollIntoCenterView = function(element, scrollBox, notX, notY)
-{
- Dom.scrollTo(element, scrollBox, notX ? "none" : "centerOrLeft",
- notY ? "none" : "centerOrTop");
-};
-
-Dom.scrollMenupopup = function(popup, item)
-{
- var doc = popup.ownerDocument;
- var box = doc.getAnonymousNodes(popup)[0];
- var scrollBox = doc.getAnonymousNodes(box)[1];
-
- if (item == undefined)
- {
- scrollBox.scrollTop = scrollBox.scrollHeight + 100;
- }
- else if (item == 0)
- {
- scrollBox.scrollTop = 0;
- }
- else
- {
- var popupRect = popup.getBoundingClientRect();
- var itemRect = item.getBoundingClientRect();
-
- if (itemRect.top < popupRect.top + itemRect.height)
- {
- scrollBox.scrollTop += itemRect.top - popupRect.top - itemRect.height;
- }
- else if (itemRect.bottom + itemRect.height > popupRect.bottom)
- {
- scrollBox.scrollTop -= popupRect.bottom - itemRect.bottom - itemRect.height;
- }
- }
-};
-
-// ********************************************************************************************* //
-// MappedData
-
-function getElementData(element)
-{
- var elementData;
-
- // force element to be wrapped:
- element = new XPCNativeWrapper(element);
-
- if (!domMappedData.has(element))
- {
- elementData = {};
- domMappedData.set(element, elementData);
- }
- else
- elementData = domMappedData.get(element);
-
- return elementData;
-}
-
-Dom.getMappedData = function(element, key)
-{
- var elementData = getElementData(element);
- return elementData[key];
-};
-
-Dom.setMappedData = function(element, key, value)
-{
- if (!Dom.isNode(element))
- throw new TypeError("expected an element as the first argument");
-
- if (typeof key !== "string")
- throw new TypeError("the key argument must be a string");
-
- var elementData = getElementData(element);
- elementData[key] = value;
-};
-
-Dom.deleteMappedData = function(element, key)
-{
- var elementData = getElementData(element);
- delete elementData[key];
-};
-
-// ********************************************************************************************* //
-// DOM Members
-
-Dom.getDOMMembers = function(object)
-{
- if (!domMemberCache)
- {
- domMemberCache = {};
-
- for (var name in domMemberMap)
- {
- var builtins = domMemberMap[name];
- var cache = domMemberCache[name] = {};
-
- for (var i = 0; i < builtins.length; ++i)
- cache[builtins[i]] = i;
- }
- }
-
- if (object instanceof Window)
- { return domMemberCache.Window; }
- else if (object instanceof Document || object instanceof XMLDocument)
- { return domMemberCache.Document; }
- else if (object instanceof Location)
- { return domMemberCache.Location; }
- else if (object instanceof HTMLImageElement)
- { return domMemberCache.HTMLImageElement; }
- else if (object instanceof HTMLAnchorElement)
- { return domMemberCache.HTMLAnchorElement; }
- else if (object instanceof HTMLInputElement)
- { return domMemberCache.HTMLInputElement; }
- else if (object instanceof HTMLButtonElement)
- { return domMemberCache.HTMLButtonElement; }
- else if (object instanceof HTMLFormElement)
- { return domMemberCache.HTMLFormElement; }
- else if (object instanceof HTMLBodyElement)
- { return domMemberCache.HTMLBodyElement; }
- else if (object instanceof HTMLHtmlElement)
- { return domMemberCache.HTMLHtmlElement; }
- else if (object instanceof HTMLScriptElement)
- { return domMemberCache.HTMLScriptElement; }
- else if (object instanceof HTMLTableElement)
- { return domMemberCache.HTMLTableElement; }
- else if (object instanceof HTMLTableRowElement)
- { return domMemberCache.HTMLTableRowElement; }
- else if (object instanceof HTMLTableCellElement)
- { return domMemberCache.HTMLTableCellElement; }
- else if (object instanceof HTMLIFrameElement)
- { return domMemberCache.HTMLIFrameElement; }
- else if (object instanceof SVGSVGElement)
- { return domMemberCache.SVGSVGElement; }
- else if (object instanceof SVGElement)
- { return domMemberCache.SVGElement; }
- else if (object instanceof Element)
- { return domMemberCache.Element; }
- else if (object instanceof Text || object instanceof CDATASection)
- { return domMemberCache.Text; }
- else if (object instanceof Attr)
- { return domMemberCache.Attr; }
- else if (object instanceof Node)
- { return domMemberCache.Node; }
- else if (object instanceof Event || object instanceof Dom.EventCopy)
- { return domMemberCache.Event; }
-
- return null;
-};
-
-Dom.isDOMMember = function(object, propName)
-{
- // We use "in" here instead of "hasOwnProperty" so that things on Object.prototype
- // also get treated as DOM members.
- // XXXsimon: Non-DOM objects should also get this behavior.
- var members = Dom.getDOMMembers(object);
- return members && propName in members;
-};
-
-Dom.isDOMConstant = function(object, name)
-{
- if (!Dom.domConstantMap.hasOwnProperty(name))
- return false;
-
- try
- {
- // Test for nativeness. This is a fragile piece of dark magic, and might be
- // equivalent to |Cu.isXrayWrapper(XPCNativeWrapper(object))| in >= Fx 20.
- object = XPCNativeWrapper.unwrap(object);
- var isNative = (XPCNativeWrapper(object).toString !== XPCNativeWrapper(object.toString));
- return (isNative ||
- object instanceof window.Event ||
- object instanceof Dom.EventCopy);
- }
- catch (exc)
- {
- return false;
- }
-};
-
-Dom.isInlineEventHandler = function(name)
-{
- return !!Dom.domInlineEventHandlersMap[name];
-};
-
-Dom.EventCopy = function(event)
-{
- // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to
- // represent them long term in the inspector.
- for (var name in event)
- {
- try {
- this[name] = event[name];
- } catch (exc) { }
- }
-};
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-// Note: Missing HTML elements:
-// <tbody>, <object>, <embed>, <video>, <audio>, <source>, <option>, <select>, <textarea>, <br>,
-// <frame>, <iframe>, <frameset>, <link>, <meta>, <style>, probably more
-// Instead of adding them, effort should rather be spent on automatic scanning.
-
-domMemberMap.Window =
-[
- "document",
- "frameElement",
-
- "innerWidth",
- "innerHeight",
- "outerWidth",
- "outerHeight",
- "screenX",
- "screenY",
- "mozInnerScreenX",
- "mozInnerScreenY",
- "pageXOffset",
- "pageYOffset",
- "scrollX",
- "scrollY",
- "scrollMaxX",
- "scrollMaxY",
-
- "URL", //FF4.0
- "mozAnimationStartTime", //FF4.0
- "mozPaintCount", //FF4.0
- "mozRequestAnimationFrame", //FF4.0
- "mozCancelAnimationFrame",
- "mozCancelRequestAnimationFrame",
-
- "mozCancelAnimationFrame",
- "mozCancelRequestAnimationFrame",
- "indexedDB",
-
- "status",
- "defaultStatus",
-
- "parent",
- "opener",
- "top",
- "window",
- "content",
- "self",
-
- "location",
- "history",
- "frames",
- "navigator",
- "screen",
- "menubar",
- "toolbar",
- "locationbar",
- "personalbar",
- "statusbar",
- "directories",
- "scrollbars",
- "fullScreen",
- "netscape",
- "console",
- "Components",
- "controllers",
- "closed",
- "crypto",
- "pkcs11",
-
- "name",
- "property",
- "length",
-
- "sessionStorage",
-
- "setTimeout",
- "setInterval",
- "clearTimeout",
- "clearInterval",
- "addEventListener",
- "removeEventListener",
- "dispatchEvent",
- "getComputedStyle",
- "captureEvents",
- "releaseEvents",
- "routeEvent",
- "enableExternalCapture",
- "disableExternalCapture",
- "moveTo",
- "moveBy",
- "resizeTo",
- "resizeBy",
- "scroll",
- "scrollTo",
- "scrollBy",
- "scrollByLines",
- "scrollByPages",
- "sizeToContent",
- "setResizable",
- "getSelection",
- "open",
- "openDialog",
- "close",
- "alert",
- "confirm",
- "prompt",
- "dump",
- "focus",
- "blur",
- "find",
- "back",
- "forward",
- "home",
- "stop",
- "print",
- "atob",
- "btoa",
- "updateCommands",
- "XPCNativeWrapper",
- "applicationCache", // FF3
- "postMessage",
- "localStorage", // FF3.5
- "showModalDialog", // FF 3.0, MS IE4
-
- "InstallTrigger",
-
- "performance",
- "matchMedia",
-
- "getInterface",
-
- "BarProp",
- "Controllers",
- "Crypto",
- "DOMException",
- "DOMStringList",
- "EventTarget",
- "History",
- "MimeTypeArray",
- "Navigator",
- "NodeList",
- "OfflineResourceList",
- "Screen",
- "Storage",
- "XULControllers",
- "Document",
- "Element",
- "Attr",
- "CharacterData",
- "DOMTokenList",
- "Text",
- "Proxy",
- "Blob",
- "File",
- "Image",
- "Option",
-
- "HTMLDocument",
- "HTMLByteRanges",
- "HTMLCollection",
- "HTMLOptionsCollection",
- "HTMLPropertiesCollection",
-
- "HTMLElement",
- "HTMLUnknownElement",
- "HTMLAnchorElement",
- "HTMLAppletElement",
- "HTMLAreaElement",
- "HTMLAudioElement",
- "HTMLBaseElement",
- "HTMLBodyElement",
- "HTMLBRElement",
- "HTMLButtonElement",
- "HTMLCanvasElement",
- "HTMLCommandElement",
- "HTMLDataListElement",
- "HTMLDirectoryElement",
- "HTMLDivElement",
- "HTMLDListElement",
- "HTMLEmbedElement",
- "HTMLFieldSetElement",
- "HTMLFontElement",
- "HTMLFormElement",
- "HTMLFrameElement",
- "HTMLFrameSetElement",
- "HTMLHeadElement",
- "HTMLHeadingElement",
- "HTMLHRElement",
- "HTMLHtmlElement",
- "HTMLHtmlElement",
- "HTMLIFrameElement",
- "HTMLImageElement",
- "HTMLInputElement",
- "HTMLLabelElement",
- "HTMLLegendElement",
- "HTMLLIElement",
- "HTMLLinkElement",
- "HTMLMapElement",
- "HTMLMediaElement",
- "HTMLMenuElement",
- "HTMLMenuItemElement",
- "HTMLMetaElement",
- "HTMLMeterElement",
- "HTMLModElement",
- "HTMLObjectElement",
- "HTMLOListElement",
- "HTMLOptGroupElement",
- "HTMLOptionElement",
- "HTMLOutputElement",
- "HTMLParagraphElement",
- "HTMLParamElement",
- "HTMLPreElement",
- "HTMLProgressElement",
- "HTMLQuoteElement",
- "HTMLScriptElement",
- "HTMLSelectElement",
- "HTMLSourceElement",
- "HTMLSpanElement",
- "HTMLStyleElement",
- "HTMLTableCaptionElement",
- "HTMLTableCellElement",
- "HTMLTableColElement",
- "HTMLTableElement",
- "HTMLTableRowElement",
- "HTMLTableSectionElement",
- "HTMLTextAreaElement",
- "HTMLTitleElement",
- "HTMLUListElement",
- "HTMLVideoElement",
-
- "JSON",
- "Location",
- "Math",
- "Node",
- "StopIteration",
- "Window",
- "XULElement",
- "CSS2Properties",
- "CSSStyleDeclaration",
- "Error",
- "EvalError",
- "InternalError",
- "Namespace",
- "QName",
- "RangeError",
- "ReferenceError",
- "SyntaxError",
- "TypeError",
- "URIError",
- "Array",
- "ArrayBuffer",
- "Boolean",
- "DataView",
- "Date",
- "Float32Array",
- "Float64Array",
- "Function",
- "Int16Array",
- "Int32Array",
- "Int8Array",
- "Iterator",
- "Map",
- "Number",
- "Object",
- "ParallelArray",
- "QueryInterface",
- "RegExp",
- "Set",
- "String",
- "Uint16Array",
- "Uint32Array",
- "Uint8Array",
- "Uint8ClampedArray",
- "WeakMap",
- "XML",
- "XMLList",
- "decodeURI",
- "decodeURIComponent",
- "dumpProfile",
- "encodeURI",
- "encodeURIComponent",
- "escape",
- "isFinite",
- "isNaN",
- "isXMLName",
- "parseFloat",
- "parseInt",
- "pauseProfilers",
- "resumeProfilers",
- "startProfiling",
- "stopProfiling",
- "unescape",
- "uneval",
- "Performance",
- "PerformanceNavigation",
- "PerformanceTiming",
-
- "AnimationEvent",
- "BeforeUnloadEvent",
- "CommandEvent",
- "CompositionEvent",
- "DataContainerEvent",
- "DataErrorEvent",
- "DeviceMotionEvent",
- "DragEvent",
- "IDBVersionChangeEvent",
- "KeyEvent",
- "KeyboardEvent",
- "LSProgressEvent",
- "MessageEvent",
- "MouseScrollEvent",
- "MozSmsEvent",
- "MutationEvent",
- "NSEvent",
- "NotifyAudioAvailableEvent",
- "NotifyPaintEvent",
- "SVGEvent",
- "SVGZoomEvent",
- "ScrollAreaEvent",
- "SimpleGestureEvent",
- "SmartCardEvent",
- "TimeEvent",
- "TransitionEvent",
- "USSDReceivedEvent",
- "XMLHttpProgressEvent",
- "XULCommandEvent",
-
- "Event",
- "CloseEvent",
- "CustomEvent",
- "DOMTransactionEvent",
- "DeviceLightEvent",
- "DeviceOrientationEvent",
- "DeviceProximityEvent",
- "DeviceStorageChangeEvent",
- "HashChangeEvent",
- "MouseEvent",
- "MozApplicationEvent",
- "MozContactChangeEvent",
- "MozSettingsEvent",
- "PageTransitionEvent",
- "PopStateEvent",
- "PopupBlockedEvent",
- "ProgressEvent",
- "StorageEvent",
- "UIEvent",
- "UserProximityEvent",
- "WheelEvent",
-
- "AsyncScrollEventDetail",
- "BatteryManager",
- "BoxObject",
- "CRMFObject",
- "CSSCharsetRule",
- "CSSConditionRule",
- "CSSFontFaceRule",
- "CSSGroupRuleRuleList",
- "CSSGroupingRule",
- "CSSImportRule",
- "CSSMediaRule",
- "CSSMozDocumentRule",
- "CSSNameSpaceRule",
- "CSSPageRule",
- "CSSRect",
- "CSSRule",
- "CSSRuleList",
- "CSSStyleRule",
- "CSSStyleSheet",
- "CSSSupportsRule",
- "CSSUnknownRule",
- "CameraCapabilities",
- "CameraControl",
- "CameraManager",
- "CanvasGradient",
- "CanvasPattern",
- "ChromeWindow",
- "ClientInformation",
- "ClientRect",
- "Contact",
- "ContactAddress",
- "ContactField",
- "ContactFindOptions",
- "ContactManager",
- "ContactProperties",
- "ContactTelField",
- "Counter",
- "CryptoDialogs",
- "DOMError",
- "DOMRequest",
- "DataChannel",
- "DataTransfer",
- "DesktopNotification",
- "DesktopNotificationCenter",
- "DeviceAcceleration",
- "DeviceRotationRate",
- "DeviceStorage",
- "DeviceStorageCursor",
- "DeviceStorageStat",
- "DocumentTouch",
- "DocumentXBL",
- "ElementCSSInlineStyle",
- "ElementTimeControl",
- "EventListener",
- "EventListenerInfo",
- "FileRequest",
- "FontFace",
- "FontFaceList",
- "GeoGeolocation",
- "GeoPosition",
- "GeoPositionCallback",
- "GeoPositionCoords",
- "GeoPositionError",
- "GeoPositionErrorCallback",
- "GetSVGDocument",
- "GetUserMediaErrorCallback",
- "GetUserMediaSuccessCallback",
- "GlobalObjectConstructor",
- "GlobalPropertyInitializer",
- "IDBCursor",
- "IDBCursorWithValue",
- "IDBDatabase",
- "IDBFactory",
- "IDBIndex",
- "IDBKeyRange",
- "IDBObjectStore",
- "IDBOpenDBRequest",
- "IDBRequest",
- "IDBTransaction",
- "ImageDocument",
- "JSWindow",
- "LinkStyle",
- "LoadStatus",
- "LocalMediaStream",
- "LockedFile",
- "MediaError",
- "MediaList",
- "MediaQueryList",
- "MediaQueryListListener",
- "MediaStream",
- "MimeType",
- "ModalContentWindow",
- "MozAlarmsManager",
- "MozBrowserFrame",
- "MozCSSKeyframeRule",
- "MozCSSKeyframesRule",
- "MozCanvasPrintState",
- "MozConnection",
- "MozNavigatorNetwork",
- "MozNavigatorSms",
- "MozPowerManager",
- "MozSmsCursor",
- "MozSmsManager",
- "MozSmsMessage",
- "MozSmsRequest",
- "MozSmsSegmentInfo",
- "MozWakeLock",
- "MozWakeLockListener",
- "NSEditableElement",
- "NSXPathExpression",
- "NamedNodeMap",
- "NavigatorCamera",
- "NavigatorDesktopNotification",
- "NavigatorDeviceStorage",
- "NavigatorGeolocation",
- "NavigatorUserMedia",
- "NodeFilter",
- "NodeIterator",
- "NodeSelector",
- "OpenWindowEventDetail",
- "Parser",
- "PermissionSettings",
- "Pkcs11",
- "Plugin",
- "PluginArray",
- "RTCIceCandidate",
- "RTCPeerConnection",
- "RTCSessionDescription",
- "Range",
- "RequestService",
- "Selection",
- "Serializer",
- "SettingsLock",
- "SettingsManager",
- "StorageIndexedDB",
- "StorageItem",
- "StorageManager",
- "StorageObsolete",
- "StyleSheet",
- "StyleSheetList",
- "TCPSocket",
- "TextMetrics",
- "TimeRanges",
- "ToString",
- "TreeColumn",
- "TreeColumns",
- "TreeContentView",
- "TreeSelection",
- "TreeWalker",
- "UserDataHandler",
- "ValidityState",
- "WindowCollection",
- "WindowInternal",
- "WindowPerformance",
- "WindowUtils",
- "XMLDocument",
- "XMLStylesheetProcessingInstruction",
- "XPathExpression",
- "XPathNSResolver",
- "XPathNamespace",
- "XPathResult",
-
- "Audio",
- "AudioBuffer",
- "AudioBufferSourceNode",
- "AudioDestinationNode",
- "AudioListener",
- "AudioNode",
- "AudioParam",
- "AudioSourceNode",
- "BiquadFilterNode",
- "CDATASection",
- "CSSPrimitiveValue",
- "CSSValue",
- "CSSValueList",
- "CanvasRenderingContext2D",
- "CaretPosition",
- "ClientRectList",
- "Comment",
- "DOMImplementation",
- "DOMParser",
- "DOMSettableTokenList",
- "DelayNode",
- "DocumentFragment",
- "DocumentType",
- "DynamicsCompressorNode",
- "EventSource",
- "FileHandle",
- "FileList",
- "FileReader",
- "FormData",
- "GainNode",
- "ImageData",
- "MozSmsFilter",
- "MutationObserver",
- "MutationRecord",
- "PaintRequest",
- "PaintRequestList",
- "PannerNode",
- "ProcessingInstruction",
- "PropertyNodeList",
- "RGBColor",
- "Rect",
- "TextDecoder",
- "TextEncoder",
- "WebGLActiveInfo",
- "WebGLRenderingContext",
- "WebGLShaderPrecisionFormat",
- "WebSocket",
- "XMLHttpRequest",
- "XMLHttpRequestUpload",
- "XMLSerializer",
- "XPathEvaluator",
- "XSLTProcessor",
-
- "SVGAElement",
- "SVGAltGlyphElement",
- "SVGAngle",
- "SVGAnimatedAngle",
- "SVGAnimatedBoolean",
- "SVGAnimatedEnumeration",
- "SVGAnimatedInteger",
- "SVGAnimatedLength",
- "SVGAnimatedLengthList",
- "SVGAnimatedNumber",
- "SVGAnimatedNumberList",
- "SVGAnimatedPathData",
- "SVGAnimatedPoints",
- "SVGAnimatedPreserveAspectRatio",
- "SVGAnimatedRect",
- "SVGAnimatedString",
- "SVGAnimatedTransformList",
- "SVGAnimateElement",
- "SVGAnimateMotionElement",
- "SVGAnimateTransformElement",
- "SVGAnimationElement",
- "SVGCircleElement",
- "SVGClipPathElement",
- "SVGComponentTransferFunctionElement",
- "SVGDefsElement",
- "SVGDescElement",
- "SVGDocument",
- "SVGElement",
- "SVGEllipseElement",
- "SVGFEBlendElement",
- "SVGFEColorMatrixElement",
- "SVGFEComponentTransferElement",
- "SVGFECompositeElement",
- "SVGFEConvolveMatrixElement",
- "SVGFEDiffuseLightingElement",
- "SVGFEDisplacementMapElement",
- "SVGFEDistantLightElement",
- "SVGFEFloodElement",
- "SVGFEFuncAElement",
- "SVGFEFuncBElement",
- "SVGFEFuncGElement",
- "SVGFEFuncRElement",
- "SVGFEGaussianBlurElement",
- "SVGFEImageElement",
- "SVGFEMergeElement",
- "SVGFEMergeNodeElement",
- "SVGFEMorphologyElement",
- "SVGFEOffsetElement",
- "SVGFEPointLightElement",
- "SVGFESpecularLightingElement",
- "SVGFESpotLightElement",
- "SVGFETileElement",
- "SVGFETurbulenceElement",
- "SVGFilterElement",
- "SVGFilterPrimitiveStandardAttributes",
- "SVGFitToViewBox",
- "SVGForeignObjectElement",
- "SVGGElement",
- "SVGGradientElement",
- "SVGGraphicsElement",
- "SVGImageElement",
- "SVGLength",
- "SVGLengthList",
- "SVGLinearGradientElement",
- "SVGLineElement",
- "SVGLocatable",
- "SVGLocatableElement",
- "SVGMarkerElement",
- "SVGMaskElement",
- "SVGMatrix",
- "SVGMetadataElement",
- "SVGMpathElement",
- "SVGMPathElement",
- "SVGNumber",
- "SVGNumberList",
- "SVGPathElement",
- "SVGPathSeg",
- "SVGPathSegArcAbs",
- "SVGPathSegArcRel",
- "SVGPathSegClosePath",
- "SVGPathSegCurvetoCubicAbs",
- "SVGPathSegCurvetoCubicRel",
- "SVGPathSegCurvetoCubicSmoothAbs",
- "SVGPathSegCurvetoCubicSmoothRel",
- "SVGPathSegCurvetoQuadraticAbs",
- "SVGPathSegCurvetoQuadraticRel",
- "SVGPathSegCurvetoQuadraticSmoothAbs",
- "SVGPathSegCurvetoQuadraticSmoothRel",
- "SVGPathSegLinetoAbs",
- "SVGPathSegLinetoHorizontalAbs",
- "SVGPathSegLinetoHorizontalRel",
- "SVGPathSegLinetoRel",
- "SVGPathSegLinetoVerticalAbs",
- "SVGPathSegLinetoVerticalRel",
- "SVGPathSegList",
- "SVGPathSegMovetoAbs",
- "SVGPathSegMovetoRel",
- "SVGPatternElement",
- "SVGPoint",
- "SVGPointList",
- "SVGPolygonElement",
- "SVGPolylineElement",
- "SVGPreserveAspectRatio",
- "SVGRadialGradientElement",
- "SVGRect",
- "SVGRectElement",
- "SVGScriptElement",
- "SVGSetElement",
- "SVGStopElement",
- "SVGStringList",
- "SVGStyleElement",
- "SVGSVGElement",
- "SVGSwitchElement",
- "SVGSymbolElement",
- "SVGTests",
- "SVGTextContentElement",
- "SVGTextElement",
- "SVGTextPathElement",
- "SVGTextPositioningElement",
- "SVGTitleElement",
- "SVGTransform",
- "SVGTransformable",
- "SVGTransformableElement",
- "SVGTransformList",
- "SVGTSpanElement",
- "SVGUnitTypes",
- "SVGURIReference",
- "SVGUseElement",
- "SVGViewElement",
-
- "XULButtonElement",
- "XULCheckboxElement",
- "XULCommandDispatcher",
- "XULContainerElement",
- "XULContainerItemElement",
- "XULControlElement",
- "XULDescriptionElement",
- "XULDocument",
- "XULImageElement",
- "XULLabelElement",
- "XULLabeledControlElement",
- "XULMenuListElement",
- "XULMultiSelectControlElement",
- "XULPopupElement",
- "XULRelatedElement",
- "XULSelectControlElement",
- "XULSelectControlItemElement",
- "XULTemplateBuilder",
- "XULTextBoxElement",
- "XULTreeBuilder",
- "XULTreeElement",
-
- "mozAudioContext",
- "BrowserFeedWriter",
- "CSS",
- "DOMStringMap",
- "WebGLBuffer",
- "WebGLFramebuffer",
- "WebGLProgram",
- "WebGLRenderbuffer",
- "WebGLShader",
- "WebGLTexture",
- "WebGLUniformLocation",
- "mozContact",
- "mozRTCIceCandidate",
- "mozRTCPeerConnection",
- "mozRTCSessionDescription",
-
- "devicePixelRatio",
- "external",
- "mozIndexedDB",
- "sidebar",
- "getDefaultComputedStyle",
-
- "Infinity",
- "NaN",
- "undefined",
- "eval",
-
- "speechSynthesis",
- "requestAnimationFrame",
-];
-
-domMemberMap.Location =
-[
- "href",
- "protocol",
- "host",
- "hostname",
- "port",
- "pathname",
- "search",
- "hash",
-
- "assign",
- "reload",
- "replace",
-
- "QueryInterface"
-];
-
-domMemberMap.Node =
-[
- "id",
- "className",
-
- "nodeType",
- "tagName",
- "nodeName",
- "localName",
- "prefix",
- "namespaceURI",
- "nodeValue",
-
- "ownerDocument",
- "parentNode",
- "parentElement",
- "offsetParent",
- "nextSibling",
- "previousSibling",
- "firstChild",
- "lastChild",
- "childNodes",
- "attributes",
- "contains",
-
- "dir",
- "baseURI",
- "textContent",
- "innerHTML",
-
- "addEventListener",
- "removeEventListener",
- "dispatchEvent",
- "cloneNode",
- "appendChild",
- "insertBefore",
- "replaceChild",
- "removeChild",
- "compareDocumentPosition",
- "hasAttributes",
- "hasChildNodes",
- "lookupNamespaceURI",
- "lookupPrefix",
- "normalize",
- "isDefaultNamespace",
- "isEqualNode",
- "isSameNode",
- "isSupported",
- "getFeature",
- "getUserData",
- "setUserData",
-
- "QueryInterface"
-];
-
-domMemberMap.Document = Arr.extendArray(domMemberMap.Node,
-[
- "documentElement",
- "body",
- "head",
- "title",
- "location",
- "referrer",
- "cookie",
- "contentType",
- "lastModified",
- "characterSet",
- "inputEncoding",
- "xmlEncoding",
- "xmlStandalone",
- "xmlVersion",
- "strictErrorChecking",
- "documentURI",
- "URL",
-
- "defaultView",
- "doctype",
- "implementation",
- "styleSheets",
- "images",
- "links",
- "forms",
- "anchors",
- "embeds",
- "plugins",
- "applets",
-
- "width",
- "height",
-
- "designMode",
- "compatMode",
- "async",
- "readyState",
-
- "preferredStyleSheetSet",
- "lastStyleSheetSet",
- "styleSheetSets",
- "selectedStyleSheetSet",
- "enableStyleSheetsForSet",
-
- "elementFromPoint",
- "hasFocus",
- "activeElement",
-
- "getElementsByClassName",
- "querySelector",
- "querySelectorAll",
-
- "alinkColor",
- "linkColor",
- "vlinkColor",
- "bgColor",
- "fgColor",
- "domain",
-
- "addEventListener",
- "removeEventListener",
- "dispatchEvent",
- "captureEvents",
- "releaseEvents",
- "routeEvent",
- "clear",
- "open",
- "close",
- "execCommand",
- "execCommandShowHelp",
- "getElementsByName",
- "getSelection",
- "queryCommandEnabled",
- "queryCommandIndeterm",
- "queryCommandState",
- "queryCommandSupported",
- "queryCommandText",
- "queryCommandValue",
- "write",
- "writeln",
- "adoptNode",
- "appendChild",
- "removeChild",
- "renameNode",
- "cloneNode",
- "compareDocumentPosition",
- "createAttribute",
- "createAttributeNS",
- "createCDATASection",
- "createComment",
- "createDocumentFragment",
- "createElement",
- "createElementNS",
- "createEntityReference",
- "createEvent",
- "createExpression",
- "createNSResolver",
- "createNodeIterator",
- "createProcessingInstruction",
- "createRange",
- "createTextNode",
- "createTreeWalker",
- "domConfig",
- "evaluate",
- "evaluateFIXptr",
- "evaluateXPointer",
- "getAnonymousElementByAttribute",
- "getAnonymousNodes",
- "addBinding",
- "removeBinding",
- "getBindingParent",
- "getBoxObjectFor",
- "setBoxObjectFor",
- "getElementById",
- "getElementsByTagName",
- "getElementsByTagNameNS",
- "hasAttributes",
- "hasChildNodes",
- "importNode",
- "insertBefore",
- "isDefaultNamespace",
- "isEqualNode",
- "isSameNode",
- "isSupported",
- "load",
- "loadBindingDocument",
- "lookupNamespaceURI",
- "lookupPrefix",
- "normalize",
- "normalizeDocument",
- "getFeature",
- "getUserData",
- "setUserData",
-
- "hidden",
- "mozFullScreen",
- "mozFullScreenElement",
- "mozFullScreenEnabled",
- "mozHidden",
- "mozPointerLockElement",
- "mozSyntheticDocument",
- "mozVisibilityState",
- "currentScript",
- "scripts",
- "visibilityState",
- "caretPositionFromPoint",
- "getItems",
- "mozCancelFullScreen",
- "mozExitPointerLock",
- "mozSetImageElement",
- "releaseCapture"
-]);
-
-domMemberMap.Element = Arr.extendArray(domMemberMap.Node,
-[
- "clientWidth",
- "clientHeight",
- "offsetLeft",
- "offsetTop",
- "offsetWidth",
- "offsetHeight",
- "scrollLeft",
- "scrollTop",
- "scrollWidth",
- "scrollHeight",
-
- "style",
-
- "tabIndex",
- "title",
- "lang",
- "align",
- "spellcheck",
-
- "addEventListener",
- "removeEventListener",
- "dispatchEvent",
- "focus",
- "blur",
- "click",
- "cloneNode",
- "appendChild",
- "insertBefore",
- "replaceChild",
- "removeChild",
- "compareDocumentPosition",
- "getElementsByTagName",
- "getElementsByTagNameNS",
- "getAttribute",
- "getAttributeNS",
- "getAttributeNode",
- "getAttributeNodeNS",
- "setAttribute",
- "setAttributeNS",
- "setAttributeNode",
- "setAttributeNodeNS",
- "removeAttribute",
- "removeAttributeNS",
- "removeAttributeNode",
- "hasAttribute",
- "hasAttributeNS",
- "hasAttributes",
- "hasChildNodes",
- "lookupNamespaceURI",
- "lookupPrefix",
- "normalize",
- "isDefaultNamespace",
- "isEqualNode",
- "isSameNode",
- "isSupported",
- "getFeature",
- "getUserData",
- "setUserData",
-
- "childElementCount",
- "children",
- "classList",
- "clientLeft",
- "clientTop",
- "contentEditable",
- "draggable",
- "firstElementChild",
- "lastElementChild",
- "nextElementSibling",
- "previousElementSibling",
-
- "getBoundingClientRect",
- "getClientRects",
- "getElementsByClassName",
- "mozMatchesSelector",
- "querySelector",
- "querySelectorAll",
- "scrollIntoView",
-
- "isContentEditable",
- "dataset",
- "contextMenu",
- "accessKey",
- "accessKeyLabel",
- "outerHTML",
- "properties",
- "scrollLeftMax",
- "scrollTopMax",
- "insertAdjacentHTML",
- "mozRequestFullScreen",
- "mozRequestPointerLock",
-
- "itemId",
- "itemRef",
- "itemScope",
- "itemProp",
- "itemType",
- "itemValue",
-
- "onload",
- "hidden",
- "setCapture",
- "releaseCapture"
-]);
-
-domMemberMap.SVGElement = Arr.extendArray(domMemberMap.Element,
-[
- "x",
- "y",
- "width",
- "height",
- "rx",
- "ry",
- "transform",
- "href",
-
- "ownerSVGElement",
- "viewportElement",
- "farthestViewportElement",
- "nearestViewportElement",
-
- "getBBox",
- "getCTM",
- "getScreenCTM",
- "getTransformToElement",
- "getPresentationAttribute",
- "preserveAspectRatio"
-]);
-
-domMemberMap.SVGSVGElement = Arr.extendArray(domMemberMap.Element,
-[
- "x",
- "y",
- "width",
- "height",
- "rx",
- "ry",
- "transform",
-
- "viewBox",
- "viewport",
- "currentView",
- "useCurrentView",
- "pixelUnitToMillimeterX",
- "pixelUnitToMillimeterY",
- "screenPixelToMillimeterX",
- "screenPixelToMillimeterY",
- "currentScale",
- "currentTranslate",
- "zoomAndPan",
-
- "ownerSVGElement",
- "viewportElement",
- "farthestViewportElement",
- "nearestViewportElement",
- "contentScriptType",
- "contentStyleType",
-
- "getBBox",
- "getCTM",
- "getScreenCTM",
- "getTransformToElement",
- "getEnclosureList",
- "getIntersectionList",
- "getViewboxToViewportTransform",
- "getPresentationAttribute",
- "getElementById",
- "checkEnclosure",
- "checkIntersection",
- "createSVGAngle",
- "createSVGLength",
- "createSVGMatrix",
- "createSVGNumber",
- "createSVGPoint",
- "createSVGRect",
- "createSVGString",
- "createSVGTransform",
- "createSVGTransformFromMatrix",
- "deSelectAll",
- "preserveAspectRatio",
- "forceRedraw",
- "suspendRedraw",
- "unsuspendRedraw",
- "unsuspendRedrawAll",
- "getCurrentTime",
- "setCurrentTime",
- "animationsPaused",
- "pauseAnimations",
- "unpauseAnimations"
-]);
-
-domMemberMap.HTMLImageElement = Arr.extendArray(domMemberMap.Element,
-[
- "src",
- "naturalWidth",
- "naturalHeight",
- "width",
- "height",
- "x",
- "y",
- "name",
- "alt",
- "longDesc",
- "lowsrc",
- "border",
- "complete",
- "hspace",
- "vspace",
- "isMap",
- "useMap",
-]);
-
-domMemberMap.HTMLAnchorElement = Arr.extendArray(domMemberMap.Element,
-[
- "name",
- "target",
- "accessKey",
- "href",
- "protocol",
- "host",
- "hostname",
- "port",
- "pathname",
- "search",
- "hash",
- "hreflang",
- "coords",
- "shape",
- "text",
- "type",
- "rel",
- "rev",
- "ping",
- "download",
- "charset"
-]);
-
-domMemberMap.HTMLIFrameElement = Arr.extendArray(domMemberMap.Element,
-[
- "contentDocument",
- "contentWindow",
- "frameBorder",
- "height",
- "longDesc",
- "marginHeight",
- "marginWidth",
- "name",
- "scrolling",
- "src",
- "width"
-]);
-
-domMemberMap.HTMLTableElement = Arr.extendArray(domMemberMap.Element,
-[
- "bgColor",
- "border",
- "caption",
- "cellPadding",
- "cellSpacing",
- "frame",
- "rows",
- "rules",
- "summary",
- "tBodies",
- "tFoot",
- "tHead",
- "width",
-
- "createCaption",
- "createTFoot",
- "createTHead",
- "deleteCaption",
- "deleteRow",
- "deleteTFoot",
- "deleteTHead",
- "insertRow"
-]);
-
-domMemberMap.HTMLTableRowElement = Arr.extendArray(domMemberMap.Element,
-[
- "bgColor",
- "cells",
- "ch",
- "chOff",
- "rowIndex",
- "sectionRowIndex",
- "vAlign",
-
- "deleteCell",
- "insertCell"
-]);
-
-domMemberMap.HTMLTableCellElement = Arr.extendArray(domMemberMap.Element,
-[
- "abbr",
- "axis",
- "bgColor",
- "cellIndex",
- "ch",
- "chOff",
- "colSpan",
- "headers",
- "height",
- "noWrap",
- "rowSpan",
- "scope",
- "vAlign",
- "width"
-
-]);
-
-domMemberMap.HTMLScriptElement = Arr.extendArray(domMemberMap.Element,
-[
- "src",
- "type",
- "async",
- "charset",
- "crossOrigin",
- "defer",
- "event",
- "htmlFor",
- "text"
-]);
-
-domMemberMap.HTMLButtonElement = Arr.extendArray(domMemberMap.Element,
-[
- "accessKey",
- "disabled",
- "form",
- "name",
- "type",
- "value",
-
- "autofocus",
- "formAction",
- "formEnctype",
- "formMethod",
- "formNoValidate",
- "formTarget",
-
- "validity",
- "validationMessage",
- "willValidate",
- "checkValidity",
- "setCustomValidity",
-
- "click"
-]);
-
-domMemberMap.HTMLInputElement = Arr.extendArray(domMemberMap.Element,
-[
- "type",
- "value",
- "checked",
- "accept",
- "accessKey",
- "alt",
- "autocomplete",
- "autofocus",
- "controllers",
- "defaultChecked",
- "defaultValue",
- "disabled",
- "form",
- "formAction",
- "formEnctype",
- "formMethod",
- "formNoValidate",
- "formTarget",
- "maxLength",
- "name",
- "readOnly",
- "selectionEnd",
- "selectionStart",
- "size",
- "src",
- "textLength",
- "useMap",
-
- "files",
- "indeterminate",
- "multiple",
- "list",
- "mozGetFileNameArray",
- "mozSetFileNameArray",
-
- "pattern",
- "placeholder",
- "required",
-
- "height",
- "width",
- "inputmode",
- "max",
- "min",
- "step",
- "selectionDirection",
- "validity",
- "validationMessage",
- "willValidate",
- "checkValidity",
- "setCustomValidity",
- "valueAsDate",
- "valueAsNumber",
- "mozIsTextField",
- "stepUp",
- "stepDown",
-
- "click",
- "select",
- "setSelectionRange"
-]);
-
-domMemberMap.HTMLFormElement = Arr.extendArray(domMemberMap.Element,
-[
- "acceptCharset",
- "action",
- "author",
- "elements",
- "encoding",
- "enctype",
- "entry_id",
- "length",
- "method",
- "name",
- "post",
- "target",
- "text",
- "url",
-
- "checkValidity",
- "noValidate",
- "autocomplete",
-
- "reset",
- "submit"
-]);
-
-domMemberMap.HTMLBodyElement = Arr.extendArray(domMemberMap.Element,
-[
- "aLink",
- "background",
- "bgColor",
- "link",
- "text",
- "vLink"
-]);
-
-domMemberMap.HTMLHtmlElement = Arr.extendArray(domMemberMap.Element,
-[
- "version"
-]);
-
-domMemberMap.Text = Arr.extendArray(domMemberMap.Node,
-[
- "data",
- "length",
-
- "appendData",
- "deleteData",
- "insertData",
- "replaceData",
- "splitText",
- "wholeText",
- "substringData"
-]);
-
-domMemberMap.Attr = Arr.extendArray(domMemberMap.Node,
-[
- "name",
- "value",
- "specified",
- "ownerElement"
-]);
-
-domMemberMap.Event =
-[
- "type",
- "target",
- "currentTarget",
- "originalTarget",
- "explicitOriginalTarget",
- "relatedTarget",
- "rangeParent",
- "rangeOffset",
- "view",
-
- "keyCode",
- "charCode",
- "screenX",
- "screenY",
- "clientX",
- "clientY",
- "layerX",
- "layerY",
- "pageX",
- "pageY",
-
- "detail",
- "button",
- "which",
- "ctrlKey",
- "shiftKey",
- "altKey",
- "metaKey",
-
- "eventPhase",
- "timeStamp",
- "bubbles",
- "cancelable",
- "cancelBubble",
-
- "isTrusted",
- "isChar",
-
- "getPreventDefault",
- "initEvent",
- "initMouseEvent",
- "initKeyEvent",
- "initUIEvent",
- "preventBubble",
- "preventCapture",
- "preventDefault",
- "stopPropagation"
-];
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-Dom.domConstantMap =
-{
- "ELEMENT_NODE": 1,
- "ATTRIBUTE_NODE": 1,
- "TEXT_NODE": 1,
- "CDATA_SECTION_NODE": 1,
- "ENTITY_REFERENCE_NODE": 1,
- "ENTITY_NODE": 1,
- "PROCESSING_INSTRUCTION_NODE": 1,
- "COMMENT_NODE": 1,
- "DOCUMENT_NODE": 1,
- "DOCUMENT_TYPE_NODE": 1,
- "DOCUMENT_FRAGMENT_NODE": 1,
- "NOTATION_NODE": 1,
-
- "DOCUMENT_POSITION_DISCONNECTED": 1,
- "DOCUMENT_POSITION_PRECEDING": 1,
- "DOCUMENT_POSITION_FOLLOWING": 1,
- "DOCUMENT_POSITION_CONTAINS": 1,
- "DOCUMENT_POSITION_CONTAINED_BY": 1,
- "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1,
-
- "UNKNOWN_RULE": 1,
- "STYLE_RULE": 1,
- "CHARSET_RULE": 1,
- "IMPORT_RULE": 1,
- "MEDIA_RULE": 1,
- "FONT_FACE_RULE": 1,
- "PAGE_RULE": 1,
- "KEYFRAMES_RULE": 1,
- "KEYFRAME_RULE": 1,
- "MOZ_KEYFRAMES_RULE": 1,
- "MOZ_KEYFRAME_RULE": 1,
- "NAMESPACE_RULE": 1,
- "SUPPORTS_RULE": 1,
-
- "CAPTURING_PHASE": 1,
- "AT_TARGET": 1,
- "BUBBLING_PHASE": 1,
-
- "SCROLL_PAGE_UP": 1,
- "SCROLL_PAGE_DOWN": 1,
-
- "MOUSEUP": 1,
- "MOUSEDOWN": 1,
- "MOUSEOVER": 1,
- "MOUSEOUT": 1,
- "MOUSEMOVE": 1,
- "MOUSEDRAG": 1,
- "CLICK": 1,
- "DBLCLICK": 1,
- "KEYDOWN": 1,
- "KEYUP": 1,
- "KEYPRESS": 1,
- "DRAGDROP": 1,
- "FOCUS": 1,
- "BLUR": 1,
- "SELECT": 1,
- "CHANGE": 1,
- "RESET": 1,
- "SUBMIT": 1,
- "SCROLL": 1,
- "LOAD": 1,
- "UNLOAD": 1,
- "XFER_DONE": 1,
- "ABORT": 1,
- "ERROR": 1,
- "LOCATE": 1,
- "MOVE": 1,
- "RESIZE": 1,
- "FORWARD": 1,
- "HELP": 1,
- "BACK": 1,
- "TEXT": 1,
-
- "ALT_MASK": 1,
- "CONTROL_MASK": 1,
- "SHIFT_MASK": 1,
- "META_MASK": 1,
-
- "DOM_VK_TAB": 1,
- "DOM_VK_PAGE_UP": 1,
- "DOM_VK_PAGE_DOWN": 1,
- "DOM_VK_UP": 1,
- "DOM_VK_DOWN": 1,
- "DOM_VK_LEFT": 1,
- "DOM_VK_RIGHT": 1,
- "DOM_VK_CANCEL": 1,
- "DOM_VK_HELP": 1,
- "DOM_VK_BACK_SPACE": 1,
- "DOM_VK_CLEAR": 1,
- "DOM_VK_RETURN": 1,
- "DOM_VK_ENTER": 1,
- "DOM_VK_SHIFT": 1,
- "DOM_VK_CONTROL": 1,
- "DOM_VK_ALT": 1,
- "DOM_VK_PAUSE": 1,
- "DOM_VK_CAPS_LOCK": 1,
- "DOM_VK_ESCAPE": 1,
- "DOM_VK_SPACE": 1,
- "DOM_VK_END": 1,
- "DOM_VK_HOME": 1,
- "DOM_VK_PRINTSCREEN": 1,
- "DOM_VK_INSERT": 1,
- "DOM_VK_DELETE": 1,
- "DOM_VK_0": 1,
- "DOM_VK_1": 1,
- "DOM_VK_2": 1,
- "DOM_VK_3": 1,
- "DOM_VK_4": 1,
- "DOM_VK_5": 1,
- "DOM_VK_6": 1,
- "DOM_VK_7": 1,
- "DOM_VK_8": 1,
- "DOM_VK_9": 1,
- "DOM_VK_SEMICOLON": 1,
- "DOM_VK_EQUALS": 1,
- "DOM_VK_A": 1,
- "DOM_VK_B": 1,
- "DOM_VK_C": 1,
- "DOM_VK_D": 1,
- "DOM_VK_E": 1,
- "DOM_VK_F": 1,
- "DOM_VK_G": 1,
- "DOM_VK_H": 1,
- "DOM_VK_I": 1,
- "DOM_VK_J": 1,
- "DOM_VK_K": 1,
- "DOM_VK_L": 1,
- "DOM_VK_M": 1,
- "DOM_VK_N": 1,
- "DOM_VK_O": 1,
- "DOM_VK_P": 1,
- "DOM_VK_Q": 1,
- "DOM_VK_R": 1,
- "DOM_VK_S": 1,
- "DOM_VK_T": 1,
- "DOM_VK_U": 1,
- "DOM_VK_V": 1,
- "DOM_VK_W": 1,
- "DOM_VK_X": 1,
- "DOM_VK_Y": 1,
- "DOM_VK_Z": 1,
- "DOM_VK_CONTEXT_MENU": 1,
- "DOM_VK_NUMPAD0": 1,
- "DOM_VK_NUMPAD1": 1,
- "DOM_VK_NUMPAD2": 1,
- "DOM_VK_NUMPAD3": 1,
- "DOM_VK_NUMPAD4": 1,
- "DOM_VK_NUMPAD5": 1,
- "DOM_VK_NUMPAD6": 1,
- "DOM_VK_NUMPAD7": 1,
- "DOM_VK_NUMPAD8": 1,
- "DOM_VK_NUMPAD9": 1,
- "DOM_VK_MULTIPLY": 1,
- "DOM_VK_ADD": 1,
- "DOM_VK_SEPARATOR": 1,
- "DOM_VK_SUBTRACT": 1,
- "DOM_VK_DECIMAL": 1,
- "DOM_VK_DIVIDE": 1,
- "DOM_VK_F1": 1,
- "DOM_VK_F2": 1,
- "DOM_VK_F3": 1,
- "DOM_VK_F4": 1,
- "DOM_VK_F5": 1,
- "DOM_VK_F6": 1,
- "DOM_VK_F7": 1,
- "DOM_VK_F8": 1,
- "DOM_VK_F9": 1,
- "DOM_VK_F10": 1,
- "DOM_VK_F11": 1,
- "DOM_VK_F12": 1,
- "DOM_VK_F13": 1,
- "DOM_VK_F14": 1,
- "DOM_VK_F15": 1,
- "DOM_VK_F16": 1,
- "DOM_VK_F17": 1,
- "DOM_VK_F18": 1,
- "DOM_VK_F19": 1,
- "DOM_VK_F20": 1,
- "DOM_VK_F21": 1,
- "DOM_VK_F22": 1,
- "DOM_VK_F23": 1,
- "DOM_VK_F24": 1,
- "DOM_VK_NUM_LOCK": 1,
- "DOM_VK_SCROLL_LOCK": 1,
- "DOM_VK_COMMA": 1,
- "DOM_VK_PERIOD": 1,
- "DOM_VK_SLASH": 1,
- "DOM_VK_BACK_QUOTE": 1,
- "DOM_VK_OPEN_BRACKET": 1,
- "DOM_VK_BACK_SLASH": 1,
- "DOM_VK_CLOSE_BRACKET": 1,
- "DOM_VK_QUOTE": 1,
- "DOM_VK_META": 1,
-
- "UNCACHED": 1,
- "IDLE": 1,
- "CHECKING": 1,
- "DOWNLOADING": 1,
- "UPDATEREADY": 1,
- "OBSOLETE": 1,
-
- "SVG_ZOOMANDPAN_DISABLE": 1,
- "SVG_ZOOMANDPAN_MAGNIFY": 1,
- "SVG_ZOOMANDPAN_UNKNOWN": 1
-};
-
-// ********************************************************************************************* //
-// Inline Event Handlers (introduced in Firefox 9)
-
-/**
- * List of event handlers that are settable via on* DOM properties.
- */
-Dom.domInlineEventHandlersMap =
-{
- "onabort": 1,
- "onafterprint": 1,
- "onafterscriptexecute": 1,
- "onbeforeprint": 1,
- "onbeforescriptexecute": 1,
- "onbeforeunload": 1,
- "onblur": 1,
- "oncanplay": 1,
- "oncanplaythrough": 1,
- "onchange": 1,
- "onclick": 1,
- "oncontextmenu": 1,
- "oncopy": 1,
- "oncut": 1,
- "ondblclick": 1,
- "ondevicemotion": 1,
- "ondeviceorientation": 1,
- "ondrag": 1,
- "ondragend": 1,
- "ondragenter": 1,
- "ondragleave": 1,
- "ondragover": 1,
- "ondragstart": 1,
- "ondrop": 1,
- "ondurationchange": 1,
- "onemptied": 1,
- "onended": 1,
- "onerror": 1,
- "onfocus": 1,
- "onhashchange": 1,
- "oninput": 1,
- "oninvalid": 1,
- "onkeydown": 1,
- "onkeypress": 1,
- "onkeyup": 1,
- "onload": 1,
- "onloadeddata": 1,
- "onloadedmetadata": 1,
- "onloadstart": 1,
- "onmessage": 1,
- "onmousedown": 1,
- "onmousemove": 1,
- "onmouseout": 1,
- "onmouseover": 1,
- "onmouseup": 1,
- "onoffline": 1,
- "ononline": 1,
- "onpagehide": 1,
- "onpageshow": 1,
- "onpaste": 1,
- "onpause": 1,
- "onplay": 1,
- "onplaying": 1,
- "onpopstate": 1,
- "onprogress": 1,
- "onratechange": 1,
- "onreadystatechange": 1,
- "onreset": 1,
- "onresize": 1,
- "onscroll": 1,
- "onseeked": 1,
- "onseeking": 1,
- "onselect": 1,
- "onshow": 1,
- "onstalled": 1,
- "onsubmit": 1,
- "onsuspend": 1,
- "ontimeupdate": 1,
- "onunload": 1,
- "onvolumechange": 1,
- "onwaiting": 1,
- "onmozfullscreenchange": 1,
- "ondevicelight": 1,
- "ondeviceproximity": 1,
- "onmouseenter": 1,
- "onmouseleave": 1,
- "onmozfullscreenerror": 1,
- "onmozpointerlockchange": 1,
- "onmozpointerlockerror": 1,
- "onuserproximity": 1,
- "onwheel": 1
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return Dom;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/deprecated",
+ "firebug/lib/css",
+ "firebug/lib/array",
+ "firebug/lib/xml",
+ "firebug/lib/wrapper",
+],
+function(FBTrace, Deprecated, Css, Arr, Xml, Wrapper) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Ci = Components.interfaces;
+var Cc = Components.classes;
+
+var Dom = {};
+var domMemberCache = null;
+var domMemberMap = {};
+var domMappedData = new WeakMap();
+
+Dom.domUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
+
+// ********************************************************************************************* //
+// DOM APIs
+
+Dom.getChildByClass = function(node) // ,classname, classname, classname...
+{
+ if (!node)
+ {
+ FBTrace.sysout("dom.getChildByClass; ERROR, no parent node!");
+ return null;
+ }
+
+ for (var i = 1; i < arguments.length; ++i)
+ {
+ var className = arguments[i];
+ var child = node.firstChild;
+ node = null;
+ for (; child; child = child.nextSibling)
+ {
+ if (Css.hasClass(child, className))
+ {
+ node = child;
+ break;
+ }
+ }
+ }
+
+ return node;
+};
+
+Dom.getAncestorByClass = function(node, className)
+{
+ for (var parent = node; parent; parent = parent.parentNode)
+ {
+ if (Css.hasClass(parent, className))
+ return parent;
+ }
+
+ return null;
+};
+
+Dom.getAncestorByTagName = function(node, tagName)
+{
+ for (var parent = node; parent; parent = parent.parentNode)
+ {
+ if (parent.localName && parent.tagName.toLowerCase() == tagName)
+ return parent;
+ }
+
+ return null;
+};
+
+/* @Deprecated Use native Firefox: node.getElementsByClassName(names).item(0) */
+Dom.getElementByClass = function(node, className) // className, className, ...
+{
+ return Dom.getElementsByClass.apply(this,arguments).item(0);
+};
+
+/* @Deprecated Use native Firefox: node.getElementsByClassName(names) */
+Dom.getElementsByClass = function(node, className) // className, className, ...
+{
+ var args = Arr.cloneArray(arguments); args.splice(0, 1);
+ return node.getElementsByClassName(args.join(" "));
+};
+
+Dom.getElementsByAttribute = function(node, attrName, attrValue)
+{
+ function iteratorHelper(node, attrName, attrValue, result)
+ {
+ // xxxFlorent: sadly, Documents and DocumentFragments do not have firstElementChild
+ // properties currently.
+ for (var child = node.firstChild; child; child = child.nextSibling)
+ {
+ if (child.nodeType !== document.ELEMENT_NODE)
+ continue;
+
+ if (child.getAttribute(attrName) == attrValue)
+ result.push(child);
+
+ iteratorHelper(child, attrName, attrValue, result);
+ }
+ }
+
+ var result = [];
+ iteratorHelper(node, attrName, attrValue, result);
+ return result;
+};
+
+Dom.isAncestor = function(node, potentialAncestor)
+{
+ for (var parent = node; parent; parent = parent.parentNode)
+ {
+ if (parent == potentialAncestor)
+ return true;
+ }
+
+ return false;
+};
+
+Dom.getNextElement = function(node)
+{
+ while (node && node.nodeType != Node.ELEMENT_NODE)
+ node = node.nextSibling;
+
+ return node;
+};
+
+Dom.getPreviousElement = function(node)
+{
+ while (node && node.nodeType != Node.ELEMENT_NODE)
+ node = node.previousSibling;
+
+ return node;
+};
+
+Dom.getBody = function(doc)
+{
+ if (doc.body)
+ return doc.body;
+
+ var body = doc.getElementsByTagName("body")[0];
+ if (body)
+ return body;
+
+ return doc.documentElement; // For non-HTML docs
+};
+
+Dom.getNonFrameBody = function(elt)
+{
+ if (Dom.isRange(elt))
+ elt = elt.commonAncestorContainer;
+
+ var body = Dom.getBody(elt.ownerDocument);
+ return (body.localName && body.localName.toUpperCase() === "FRAMESET") ? null : body;
+}
+
+// ********************************************************************************************* //
+// DOM Modification
+
+Dom.insertAfter = function(newNode, referenceNode)
+{
+ if (referenceNode.parentNode)
+ referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
+};
+
+Dom.addScript = function(doc, id, src)
+{
+ var element = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script");
+ element.setAttribute("type", "text/javascript");
+ element.setAttribute("id", id);
+
+ if (!FBTrace.DBG_CONSOLE)
+ Firebug.setIgnored(element);
+
+ element.textContent = src;
+
+ if (doc.documentElement)
+ {
+ doc.documentElement.appendChild(element);
+ }
+ else
+ {
+ // See issue 1079, the svg test case gives this error
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("lib.addScript doc has no documentElement (" +
+ doc.readyState + ") " + doc.location, doc);
+ return;
+ }
+ return element;
+};
+
+Dom.setOuterHTML = function(element, html)
+{
+ try
+ {
+ var fragment = Dom.markupToDocFragment(html, element);
+
+ var first = fragment.firstChild;
+ var last = fragment.lastChild;
+ element.parentNode.replaceChild(fragment, element);
+ return [first, last];
+ }
+ catch (e)
+ {
+ return [element, element];
+ }
+};
+
+Dom.markupToDocFragment = function(markup, parent)
+{
+ var doc = parent.ownerDocument;
+ var range = doc.createRange();
+ range.selectNode(parent || doc.documentElement);
+
+ return range.createContextualFragment(markup);
+};
+
+Dom.appendInnerHTML = function(element, html, referenceElement)
+{
+ var doc = element.ownerDocument;
+ var range = doc.createRange(); // a helper object
+ range.selectNodeContents(element); // the environment to interpret the html
+
+ var fragment = range.createContextualFragment(html); // parse
+ var firstChild = fragment.firstChild;
+ element.insertBefore(fragment, referenceElement);
+
+ return firstChild;
+};
+
+Dom.insertTextIntoElement = function(element, text)
+{
+ var command = "cmd_insertText";
+
+ var controller = element.controllers.getControllerForCommand(command);
+ if (!controller || !controller.isCommandEnabled(command))
+ return;
+
+ var params = Cc["@mozilla.org/embedcomp/command-params;1"].createInstance(Ci.nsICommandParams);
+ params.setStringValue("state_data", text);
+
+ if (controller instanceof Ci.nsICommandController)
+ controller.doCommandWithParams(command, params);
+};
+
+// ********************************************************************************************* //
+
+Dom.collapse = function(elt, collapsed)
+{
+ if (!elt)
+ {
+ FBTrace.sysout("Dom.collapse; ERROR null element.");
+ return;
+ }
+
+ elt.setAttribute("collapsed", collapsed ? "true" : "false");
+};
+
+Dom.isCollapsed = function(elt)
+{
+ return (elt.getAttribute("collapsed") == "true") ? true : false;
+};
+
+Dom.hide = function(elt, hidden)
+{
+ elt.style.visibility = hidden ? "hidden" : "visible";
+};
+
+Dom.clearNode = function(node)
+{
+ node.textContent = "";
+};
+
+Dom.eraseNode = function(node)
+{
+ while (node.lastChild)
+ node.removeChild(node.lastChild);
+};
+
+// ********************************************************************************************* //
+
+Dom.isNode = function(o)
+{
+ try {
+ return o && o instanceof window.Node;
+ }
+ catch (ex) {
+ return false;
+ }
+};
+
+Dom.isElement = function(o)
+{
+ try {
+ return o && o instanceof window.Element;
+ }
+ catch (ex) {
+ return false;
+ }
+};
+
+Dom.isRange = function(o)
+{
+ try {
+ return o && o instanceof window.Range;
+ }
+ catch (ex) {
+ return false;
+ }
+};
+
+Dom.hasChildElements = function(node)
+{
+ if (node.contentDocument) // iframes
+ return true;
+
+ for (var child = node.firstChild; child; child = child.nextSibling)
+ {
+ if (child.nodeType == Node.ELEMENT_NODE)
+ return true;
+ }
+
+ return false;
+};
+
+// ********************************************************************************************* //
+
+Dom.getNextByClass = function(root, state)
+{
+ function iter(node) { return node.nodeType == Node.ELEMENT_NODE && Css.hasClass(node, state); }
+ return Dom.findNext(root, iter);
+};
+
+Dom.getPreviousByClass = function(root, state)
+{
+ function iter(node) { return node.nodeType == Node.ELEMENT_NODE && Css.hasClass(node, state); }
+ return Dom.findPrevious(root, iter);
+};
+
+Dom.findNextDown = function(node, criteria)
+{
+ if (!node)
+ return null;
+
+ for (var child = node.firstChild; child; child = child.nextSibling)
+ {
+ if (criteria(child))
+ return child;
+
+ var next = Dom.findNextDown(child, criteria);
+ if (next)
+ return next;
+ }
+};
+
+Dom.findPreviousUp = function(node, criteria)
+{
+ if (!node)
+ return null;
+
+ for (var child = node.lastChild; child; child = child.previousSibling)
+ {
+ var next = Dom.findPreviousUp(child, criteria);
+ if (next)
+ return next;
+
+ if (criteria(child))
+ return child;
+ }
+};
+
+Dom.findNext = function(node, criteria, upOnly, maxRoot)
+{
+ if (!node)
+ return null;
+
+ if (!upOnly)
+ {
+ var next = Dom.findNextDown(node, criteria);
+ if (next)
+ return next;
+ }
+
+ for (var sib = node.nextSibling; sib; sib = sib.nextSibling)
+ {
+ if (criteria(sib))
+ return sib;
+
+ var next = Dom.findNextDown(sib, criteria);
+ if (next)
+ return next;
+ }
+
+ if (node.parentNode && node.parentNode != maxRoot)
+ {
+ return Dom.findNext(node.parentNode, criteria, true, maxRoot);
+ }
+ return null;
+};
+
+Dom.findPrevious = function(node, criteria, downOnly, maxRoot)
+{
+ if (!node)
+ return null;
+
+ for (var sib = node.previousSibling; sib; sib = sib.previousSibling)
+ {
+ var prev = Dom.findPreviousUp(sib, criteria);
+ if (prev)
+ return prev;
+
+ if (criteria(sib))
+ return sib;
+ }
+
+ if (!downOnly)
+ {
+ var next = Dom.findPreviousUp(node, criteria);
+ if (next)
+ return next;
+ }
+
+ if (node.parentNode && node.parentNode != maxRoot)
+ {
+ if (criteria(node.parentNode))
+ return node.parentNode;
+
+ return Dom.findPrevious(node.parentNode, criteria, true, maxRoot);
+ }
+ return null;
+};
+
+// ********************************************************************************************* //
+// Graphics
+
+/**
+ * Gets the absolute offset of an element
+ * @param {Element} elt Element to get the info for
+ * @returns {Object} x and y offset of the element
+ */
+Dom.getClientOffset = function(elt)
+{
+ function addOffset(elt, coords, view)
+ {
+ var p = elt.offsetParent;
+
+ var style = view.getComputedStyle(elt, "");
+
+ if (elt.offsetLeft)
+ coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth);
+ if (elt.offsetTop)
+ coords.y += elt.offsetTop + parseInt(style.borderTopWidth);
+
+ if (p)
+ {
+ if (p.nodeType == Node.ELEMENT_NODE)
+ addOffset(p, coords, view);
+ }
+ else if (elt.ownerDocument.defaultView.frameElement)
+ {
+ addOffset(elt.ownerDocument.defaultView.frameElement, coords,
+ elt.ownerDocument.defaultView);
+ }
+ }
+
+ var coords = {x: 0, y: 0};
+ if (elt)
+ {
+ var view = elt.ownerDocument.defaultView;
+ addOffset(elt, coords, view);
+ }
+
+ return coords;
+};
+
+/**
+ * Gets layout info about an element
+ * @param {Object} elt Element to get the info for
+ * @returns {Object} Layout information including "left", "top", "right", "bottom",
+ * "width" and "height"
+ */
+Dom.getLTRBWH = function(elt)
+{
+ var bcrect;
+ var dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0};
+
+ if (elt)
+ {
+ bcrect = elt.getBoundingClientRect();
+ dims.left = bcrect.left;
+ dims.top = bcrect.top;
+ dims.right = bcrect.right;
+ dims.bottom = bcrect.bottom;
+
+ if (bcrect.width)
+ {
+ dims.width = bcrect.width;
+ dims.height = bcrect.height;
+ }
+ else
+ {
+ dims.width = dims.right - dims.left;
+ dims.height = dims.bottom - dims.top;
+ }
+ }
+ return dims;
+};
+
+/**
+ * Gets the offset of an element relative to an ancestor
+ * @param {Element} elt Element to get the info for
+ * @param {Element} ancestor Ancestor element used as origin
+ */
+Dom.getAncestorOffset = function(elt, ancestor)
+{
+ var offset = {x: 0, y: 0};
+ var offsetParent = elt;
+ do
+ {
+ offset.x += offsetParent.offsetLeft;
+ offset.y += offsetParent.offsetTop;
+ offsetParent = offsetParent.offsetParent;
+ } while (offsetParent && offsetParent !== ancestor);
+
+ return offset;
+};
+
+/**
+ * Gets the offset size of an element
+ * @param {Object} elt Element to move
+ * @returns {Object} Offset width and height of the element
+ */
+Dom.getOffsetSize = function(elt)
+{
+ return {width: elt.offsetWidth, height: elt.offsetHeight};
+};
+
+/**
+ * Get the next scrollable ancestor
+ * @param {Object} element Element to search the ancestor for
+ * @returns {Object} Scrollable ancestor
+ */
+Dom.getOverflowParent = function(element)
+{
+ for (var scrollParent = element.parentNode; scrollParent;
+ scrollParent = scrollParent.offsetParent)
+ {
+ if (scrollParent.scrollHeight > scrollParent.offsetHeight)
+ return scrollParent;
+ }
+};
+
+/**
+ * Checks whether an element is scrolled to the bottom
+ * @param {Object} element Element to check
+ * @returns {Boolean} True, if element is scrolled to the bottom, otherwise false
+ */
+Dom.isScrolledToBottom = function(element)
+{
+ var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight;
+
+ if (FBTrace.DBG_CONSOLE)
+ {
+ FBTrace.sysout("Dom.isScrolledToBottom offsetHeight: " + element.offsetHeight +
+ ", scrollTop: " + element.scrollTop + ", scrollHeight: " + element.scrollHeight +
+ ", onBottom: " + onBottom);
+ }
+
+ return onBottom;
+};
+
+/**
+ * Scrolls a scrollable element to the bottom
+ * @param {Object} element Element to scroll
+ * @returns {Boolean} True, if the element could be scrolled to the bottom, otherwise false
+ */
+Dom.scrollToBottom = function(element)
+{
+ element.scrollTop = element.scrollHeight;
+
+ if (FBTrace.DBG_CONSOLE)
+ {
+ FBTrace.sysout("scrollToBottom reset scrollTop " + element.scrollTop + " = " +
+ element.scrollHeight);
+
+ if (element.scrollHeight == element.offsetHeight)
+ {
+ FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element " +
+ element, element);
+ }
+ }
+
+ return (element.scrollTop == element.scrollHeight);
+};
+
+/**
+ * Moves an element
+ * @param {Object} element Element to move
+ * @param {Number} x New horizontal position
+ * @param {Number} y New vertical position
+ */
+Dom.move = function(element, x, y)
+{
+ element.style.left = x + "px";
+ element.style.top = y + "px";
+};
+
+/**
+ * Resizes an element
+ * @param {Object} element Element to resize
+ * @param {Number} w New width
+ * @param {Number} h New height
+ */
+Dom.resize = function(element, w, h)
+{
+ element.style.width = w + "px";
+ element.style.height = h + "px";
+};
+
+Dom.linesIntoCenterView = function(element, scrollBox) // {before: int, after: int}
+{
+ if (!scrollBox)
+ scrollBox = Dom.getOverflowParent(element);
+
+ if (!scrollBox)
+ return;
+
+ var offset = Dom.getClientOffset(element);
+
+ var topSpace = offset.y - scrollBox.scrollTop;
+ var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) -
+ (offset.y + element.offsetHeight);
+
+ if (topSpace < 0 || bottomSpace < 0)
+ {
+ var split = (scrollBox.clientHeight/2);
+ var centerY = offset.y - split;
+ scrollBox.scrollTop = centerY;
+ topSpace = split;
+ bottomSpace = split - element.offsetHeight;
+ }
+
+ return {
+ before: Math.round((topSpace/element.offsetHeight) + 0.5),
+ after: Math.round((bottomSpace/element.offsetHeight) + 0.5)
+ };
+};
+
+/**
+ * Scrolls an element into view
+ * @param {Object} element Element to scroll to
+ * @param {Object} scrollBox Scrolled element (Must be an ancestor of "element" or
+ * null for automatically determining the ancestor)
+ * @param {String} alignmentX Horizontal alignment for the element
+ * (valid values: "centerOrLeft", "left", "middle", "right", "none")
+ * @param {String} alignmentY Vertical alignment for the element
+ * (valid values: "centerOrTop", "top", "middle", "bottom", "none")
+ * @param {Boolean} scrollWhenVisible Specifies whether "scrollBox" should be scrolled even when
+ * "element" is completely visible
+ */
+Dom.scrollTo = function(element, scrollBox, alignmentX, alignmentY, scrollWhenVisible)
+{
+ if (!element)
+ return;
+
+ if (!scrollBox)
+ scrollBox = Dom.getOverflowParent(element);
+
+ if (!scrollBox)
+ return;
+
+ var offset = Dom.getAncestorOffset(element, scrollBox);
+
+ if (!alignmentX)
+ alignmentX = "centerOrLeft";
+
+ if (!alignmentY)
+ alignmentY = "centerOrTop";
+
+ if (alignmentY)
+ {
+ var topSpace = offset.y - scrollBox.scrollTop;
+ var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) -
+ (offset.y + element.offsetHeight);
+
+ // Element is vertically not completely visible or scrolling is enforced
+ if (topSpace < 0 || bottomSpace < 0 || scrollWhenVisible)
+ {
+ switch (alignmentY)
+ {
+ case "top":
+ scrollBox.scrollTop = offset.y;
+ break;
+
+ case "center":
+ case "centerOrTop":
+ var elementFitsIntoScrollBox = element.offsetHeight <= scrollBox.clientHeight;
+ var y = elementFitsIntoScrollBox || alignmentY != "centerOrTop" ?
+ offset.y - (scrollBox.clientHeight - element.offsetHeight) / 2 :
+ offset.y;
+ scrollBox.scrollTop = y;
+ break;
+
+ case "bottom":
+ var y = offset.y + element.offsetHeight - scrollBox.clientHeight;
+ scrollBox.scrollTop = y;
+ break;
+ }
+ }
+ }
+
+ if (alignmentX)
+ {
+ var leftSpace = offset.x - scrollBox.scrollLeft;
+ var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth) -
+ (offset.x + element.clientWidth);
+
+ // Element is horizontally not completely visible or scrolling is enforced
+ if (leftSpace < 0 || rightSpace < 0 || scrollWhenVisible)
+ {
+ switch (alignmentX)
+ {
+ case "left":
+ scrollBox.scrollLeft = offset.x;
+ break;
+
+ case "center":
+ case "centerOrLeft":
+ var elementFitsIntoScrollBox = element.offsetWidth <= scrollBox.clientWidth;
+ var x = elementFitsIntoScrollBox || alignmentX != "centerOrLeft" ?
+ offset.x - (scrollBox.clientWidth - element.offsetWidth) / 2 :
+ offset.x;
+ scrollBox.scrollLeft = x;
+ break;
+
+ case "right":
+ var x = offset.x + element.offsetWidth - scrollBox.clientWidth;
+ scrollBox.scrollLeft = x;
+ break;
+ }
+ }
+ }
+
+ if (FBTrace.DBG_PANELS)
+ FBTrace.sysout("dom.scrollTo", element);
+};
+
+/**
+ * Centers an element inside a scrollable area
+ * @param {Object} element Element to scroll to
+ * @param {Object} scrollBox Scrolled element (Must be an ancestor of "element" or
+ * null for automatically determining the ancestor)
+ * @param {Boolean} notX Specifies whether the element should be centered horizontally
+ * @param {Boolean} notY Specifies whether the element should be centered vertically
+ */
+Dom.scrollIntoCenterView = function(element, scrollBox, notX, notY)
+{
+ Dom.scrollTo(element, scrollBox, notX ? "none" : "centerOrLeft",
+ notY ? "none" : "centerOrTop");
+};
+
+Dom.scrollMenupopup = function(popup, item)
+{
+ var doc = popup.ownerDocument;
+ var box = doc.getAnonymousNodes(popup)[0];
+ var scrollBox = doc.getAnonymousNodes(box)[1];
+
+ if (item == undefined)
+ {
+ scrollBox.scrollTop = scrollBox.scrollHeight + 100;
+ }
+ else if (item == 0)
+ {
+ scrollBox.scrollTop = 0;
+ }
+ else
+ {
+ var popupRect = popup.getBoundingClientRect();
+ var itemRect = item.getBoundingClientRect();
+
+ if (itemRect.top < popupRect.top + itemRect.height)
+ {
+ scrollBox.scrollTop += itemRect.top - popupRect.top - itemRect.height;
+ }
+ else if (itemRect.bottom + itemRect.height > popupRect.bottom)
+ {
+ scrollBox.scrollTop -= popupRect.bottom - itemRect.bottom - itemRect.height;
+ }
+ }
+};
+
+// ********************************************************************************************* //
+// MappedData
+
+function getElementData(element)
+{
+ var elementData;
+
+ // force element to be wrapped:
+ element = new XPCNativeWrapper(element);
+
+ if (!domMappedData.has(element))
+ {
+ elementData = {};
+ domMappedData.set(element, elementData);
+ }
+ else
+ elementData = domMappedData.get(element);
+
+ return elementData;
+}
+
+Dom.getMappedData = function(element, key)
+{
+ var elementData = getElementData(element);
+ return elementData[key];
+};
+
+Dom.setMappedData = function(element, key, value)
+{
+ if (!Dom.isNode(element))
+ throw new TypeError("expected an element as the first argument");
+
+ if (typeof key !== "string")
+ throw new TypeError("the key argument must be a string");
+
+ var elementData = getElementData(element);
+ elementData[key] = value;
+};
+
+Dom.deleteMappedData = function(element, key)
+{
+ var elementData = getElementData(element);
+ delete elementData[key];
+};
+
+// ********************************************************************************************* //
+// DOM Members
+
+Dom.getDOMMembers = function(object)
+{
+ if (!domMemberCache)
+ {
+ domMemberCache = {};
+
+ for (var name in domMemberMap)
+ {
+ var builtins = domMemberMap[name];
+ var cache = domMemberCache[name] = {};
+
+ for (var i = 0; i < builtins.length; ++i)
+ cache[builtins[i]] = i;
+ }
+ }
+
+ if (object instanceof Window)
+ { return domMemberCache.Window; }
+ else if (object instanceof Document || object instanceof XMLDocument)
+ { return domMemberCache.Document; }
+ else if (object instanceof Location)
+ { return domMemberCache.Location; }
+ else if (object instanceof HTMLImageElement)
+ { return domMemberCache.HTMLImageElement; }
+ else if (object instanceof HTMLAnchorElement)
+ { return domMemberCache.HTMLAnchorElement; }
+ else if (object instanceof HTMLInputElement)
+ { return domMemberCache.HTMLInputElement; }
+ else if (object instanceof HTMLButtonElement)
+ { return domMemberCache.HTMLButtonElement; }
+ else if (object instanceof HTMLFormElement)
+ { return domMemberCache.HTMLFormElement; }
+ else if (object instanceof HTMLBodyElement)
+ { return domMemberCache.HTMLBodyElement; }
+ else if (object instanceof HTMLHtmlElement)
+ { return domMemberCache.HTMLHtmlElement; }
+ else if (object instanceof HTMLScriptElement)
+ { return domMemberCache.HTMLScriptElement; }
+ else if (object instanceof HTMLTableElement)
+ { return domMemberCache.HTMLTableElement; }
+ else if (object instanceof HTMLTableRowElement)
+ { return domMemberCache.HTMLTableRowElement; }
+ else if (object instanceof HTMLTableCellElement)
+ { return domMemberCache.HTMLTableCellElement; }
+ else if (object instanceof HTMLIFrameElement)
+ { return domMemberCache.HTMLIFrameElement; }
+ else if (object instanceof SVGSVGElement)
+ { return domMemberCache.SVGSVGElement; }
+ else if (object instanceof SVGElement)
+ { return domMemberCache.SVGElement; }
+ else if (object instanceof Element)
+ { return domMemberCache.Element; }
+ else if (object instanceof Text || object instanceof CDATASection)
+ { return domMemberCache.Text; }
+ else if (object instanceof Attr)
+ { return domMemberCache.Attr; }
+ else if (object instanceof Node)
+ { return domMemberCache.Node; }
+ else if (object instanceof Event || object instanceof Dom.EventCopy)
+ { return domMemberCache.Event; }
+
+ return null;
+};
+
+Dom.isDOMMember = function(object, propName)
+{
+ // We use "in" here instead of "hasOwnProperty" so that things on Object.prototype
+ // also get treated as DOM members.
+ // XXXsimon: Non-DOM objects should also get this behavior.
+ var members = Dom.getDOMMembers(object);
+ return members && propName in members;
+};
+
+Dom.isDOMConstant = function(object, name)
+{
+ if (!Dom.domConstantMap.hasOwnProperty(name))
+ return false;
+
+ try
+ {
+ // Test for nativeness. This is a fragile piece of dark magic, and might be
+ // equivalent to |Cu.isXrayWrapper(XPCNativeWrapper(object))| in >= Fx 20.
+ object = XPCNativeWrapper.unwrap(object);
+ var isNative = (XPCNativeWrapper(object).toString !== XPCNativeWrapper(object.toString));
+ return (isNative ||
+ object instanceof window.Event ||
+ object instanceof Dom.EventCopy);
+ }
+ catch (exc)
+ {
+ return false;
+ }
+};
+
+Dom.isInlineEventHandler = function(name)
+{
+ return !!Dom.domInlineEventHandlersMap[name];
+};
+
+Dom.EventCopy = function(event)
+{
+ // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to
+ // represent them long term in the inspector.
+ for (var name in event)
+ {
+ try {
+ this[name] = event[name];
+ } catch (exc) { }
+ }
+};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Note: Missing HTML elements:
+// <tbody>, <object>, <embed>, <video>, <audio>, <source>, <option>, <select>, <textarea>, <br>,
+// <frame>, <iframe>, <frameset>, <link>, <meta>, <style>, probably more
+// Instead of adding them, effort should rather be spent on automatic scanning.
+
+domMemberMap.Window =
+[
+ "document",
+ "frameElement",
+
+ "innerWidth",
+ "innerHeight",
+ "outerWidth",
+ "outerHeight",
+ "screenX",
+ "screenY",
+ "mozInnerScreenX",
+ "mozInnerScreenY",
+ "pageXOffset",
+ "pageYOffset",
+ "scrollX",
+ "scrollY",
+ "scrollMaxX",
+ "scrollMaxY",
+
+ "URL", //FF4.0
+ "mozAnimationStartTime", //FF4.0
+ "mozPaintCount", //FF4.0
+ "mozRequestAnimationFrame", //FF4.0
+ "mozCancelAnimationFrame",
+ "mozCancelRequestAnimationFrame",
+
+ "mozCancelAnimationFrame",
+ "mozCancelRequestAnimationFrame",
+ "indexedDB",
+
+ "status",
+ "defaultStatus",
+
+ "parent",
+ "opener",
+ "top",
+ "window",
+ "content",
+ "self",
+
+ "location",
+ "history",
+ "frames",
+ "navigator",
+ "screen",
+ "menubar",
+ "toolbar",
+ "locationbar",
+ "personalbar",
+ "statusbar",
+ "directories",
+ "scrollbars",
+ "fullScreen",
+ "netscape",
+ "console",
+ "Components",
+ "controllers",
+ "closed",
+ "crypto",
+ "pkcs11",
+
+ "name",
+ "property",
+ "length",
+
+ "sessionStorage",
+
+ "setTimeout",
+ "setInterval",
+ "clearTimeout",
+ "clearInterval",
+ "addEventListener",
+ "removeEventListener",
+ "dispatchEvent",
+ "getComputedStyle",
+ "captureEvents",
+ "releaseEvents",
+ "routeEvent",
+ "enableExternalCapture",
+ "disableExternalCapture",
+ "moveTo",
+ "moveBy",
+ "resizeTo",
+ "resizeBy",
+ "scroll",
+ "scrollTo",
+ "scrollBy",
+ "scrollByLines",
+ "scrollByPages",
+ "sizeToContent",
+ "setResizable",
+ "getSelection",
+ "open",
+ "openDialog",
+ "close",
+ "alert",
+ "confirm",
+ "prompt",
+ "dump",
+ "focus",
+ "blur",
+ "find",
+ "back",
+ "forward",
+ "home",
+ "stop",
+ "print",
+ "atob",
+ "btoa",
+ "updateCommands",
+ "XPCNativeWrapper",
+ "applicationCache", // FF3
+ "postMessage",
+ "localStorage", // FF3.5
+ "showModalDialog", // FF 3.0, MS IE4
+
+ "InstallTrigger",
+
+ "performance",
+ "matchMedia",
+
+ "getInterface",
+
+ "BarProp",
+ "Controllers",
+ "Crypto",
+ "DOMException",
+ "DOMStringList",
+ "EventTarget",
+ "History",
+ "MimeTypeArray",
+ "Navigator",
+ "NodeList",
+ "OfflineResourceList",
+ "Screen",
+ "Storage",
+ "XULControllers",
+ "Document",
+ "Element",
+ "Attr",
+ "CharacterData",
+ "DOMTokenList",
+ "Text",
+ "Proxy",
+ "Blob",
+ "File",
+ "Image",
+ "Option",
+
+ "HTMLDocument",
+ "HTMLByteRanges",
+ "HTMLCollection",
+ "HTMLOptionsCollection",
+ "HTMLPropertiesCollection",
+
+ "HTMLElement",
+ "HTMLUnknownElement",
+ "HTMLAnchorElement",
+ "HTMLAppletElement",
+ "HTMLAreaElement",
+ "HTMLAudioElement",
+ "HTMLBaseElement",
+ "HTMLBodyElement",
+ "HTMLBRElement",
+ "HTMLButtonElement",
+ "HTMLCanvasElement",
+ "HTMLCommandElement",
+ "HTMLDataListElement",
+ "HTMLDirectoryElement",
+ "HTMLDivElement",
+ "HTMLDListElement",
+ "HTMLEmbedElement",
+ "HTMLFieldSetElement",
+ "HTMLFontElement",
+ "HTMLFormElement",
+ "HTMLFrameElement",
+ "HTMLFrameSetElement",
+ "HTMLHeadElement",
+ "HTMLHeadingElement",
+ "HTMLHRElement",
+ "HTMLHtmlElement",
+ "HTMLHtmlElement",
+ "HTMLIFrameElement",
+ "HTMLImageElement",
+ "HTMLInputElement",
+ "HTMLLabelElement",
+ "HTMLLegendElement",
+ "HTMLLIElement",
+ "HTMLLinkElement",
+ "HTMLMapElement",
+ "HTMLMediaElement",
+ "HTMLMenuElement",
+ "HTMLMenuItemElement",
+ "HTMLMetaElement",
+ "HTMLMeterElement",
+ "HTMLModElement",
+ "HTMLObjectElement",
+ "HTMLOListElement",
+ "HTMLOptGroupElement",
+ "HTMLOptionElement",
+ "HTMLOutputElement",
+ "HTMLParagraphElement",
+ "HTMLParamElement",
+ "HTMLPreElement",
+ "HTMLProgressElement",
+ "HTMLQuoteElement",
+ "HTMLScriptElement",
+ "HTMLSelectElement",
+ "HTMLSourceElement",
+ "HTMLSpanElement",
+ "HTMLStyleElement",
+ "HTMLTableCaptionElement",
+ "HTMLTableCellElement",
+ "HTMLTableColElement",
+ "HTMLTableElement",
+ "HTMLTableRowElement",
+ "HTMLTableSectionElement",
+ "HTMLTextAreaElement",
+ "HTMLTitleElement",
+ "HTMLUListElement",
+ "HTMLVideoElement",
+
+ "JSON",
+ "Location",
+ "Math",
+ "Node",
+ "StopIteration",
+ "Window",
+ "XULElement",
+ "CSS2Properties",
+ "CSSStyleDeclaration",
+ "Error",
+ "EvalError",
+ "InternalError",
+ "Namespace",
+ "QName",
+ "RangeError",
+ "ReferenceError",
+ "SyntaxError",
+ "TypeError",
+ "URIError",
+ "Array",
+ "ArrayBuffer",
+ "Boolean",
+ "DataView",
+ "Date",
+ "Float32Array",
+ "Float64Array",
+ "Function",
+ "Int16Array",
+ "Int32Array",
+ "Int8Array",
+ "Iterator",
+ "Map",
+ "Number",
+ "Object",
+ "ParallelArray",
+ "QueryInterface",
+ "RegExp",
+ "Set",
+ "String",
+ "Uint16Array",
+ "Uint32Array",
+ "Uint8Array",
+ "Uint8ClampedArray",
+ "WeakMap",
+ "XML",
+ "XMLList",
+ "decodeURI",
+ "decodeURIComponent",
+ "dumpProfile",
+ "encodeURI",
+ "encodeURIComponent",
+ "escape",
+ "isFinite",
+ "isNaN",
+ "isXMLName",
+ "parseFloat",
+ "parseInt",
+ "pauseProfilers",
+ "resumeProfilers",
+ "startProfiling",
+ "stopProfiling",
+ "unescape",
+ "uneval",
+ "Performance",
+ "PerformanceNavigation",
+ "PerformanceTiming",
+
+ "AnimationEvent",
+ "BeforeUnloadEvent",
+ "CommandEvent",
+ "CompositionEvent",
+ "DataContainerEvent",
+ "DataErrorEvent",
+ "DeviceMotionEvent",
+ "DragEvent",
+ "IDBVersionChangeEvent",
+ "KeyEvent",
+ "KeyboardEvent",
+ "LSProgressEvent",
+ "MessageEvent",
+ "MouseScrollEvent",
+ "MozSmsEvent",
+ "MutationEvent",
+ "NSEvent",
+ "NotifyAudioAvailableEvent",
+ "NotifyPaintEvent",
+ "SVGEvent",
+ "SVGZoomEvent",
+ "ScrollAreaEvent",
+ "SimpleGestureEvent",
+ "SmartCardEvent",
+ "TimeEvent",
+ "TransitionEvent",
+ "USSDReceivedEvent",
+ "XMLHttpProgressEvent",
+ "XULCommandEvent",
+
+ "Event",
+ "CloseEvent",
+ "CustomEvent",
+ "DOMTransactionEvent",
+ "DeviceLightEvent",
+ "DeviceOrientationEvent",
+ "DeviceProximityEvent",
+ "DeviceStorageChangeEvent",
+ "HashChangeEvent",
+ "MouseEvent",
+ "MozApplicationEvent",
+ "MozContactChangeEvent",
+ "MozSettingsEvent",
+ "PageTransitionEvent",
+ "PopStateEvent",
+ "PopupBlockedEvent",
+ "ProgressEvent",
+ "StorageEvent",
+ "UIEvent",
+ "UserProximityEvent",
+ "WheelEvent",
+
+ "AsyncScrollEventDetail",
+ "BatteryManager",
+ "BoxObject",
+ "CRMFObject",
+ "CSSCharsetRule",
+ "CSSConditionRule",
+ "CSSFontFaceRule",
+ "CSSGroupRuleRuleList",
+ "CSSGroupingRule",
+ "CSSImportRule",
+ "CSSMediaRule",
+ "CSSMozDocumentRule",
+ "CSSNameSpaceRule",
+ "CSSPageRule",
+ "CSSRect",
+ "CSSRule",
+ "CSSRuleList",
+ "CSSStyleRule",
+ "CSSStyleSheet",
+ "CSSSupportsRule",
+ "CSSUnknownRule",
+ "CameraCapabilities",
+ "CameraControl",
+ "CameraManager",
+ "CanvasGradient",
+ "CanvasPattern",
+ "ChromeWindow",
+ "ClientInformation",
+ "ClientRect",
+ "Contact",
+ "ContactAddress",
+ "ContactField",
+ "ContactFindOptions",
+ "ContactManager",
+ "ContactProperties",
+ "ContactTelField",
+ "Counter",
+ "CryptoDialogs",
+ "DOMError",
+ "DOMRequest",
+ "DataChannel",
+ "DataTransfer",
+ "DesktopNotification",
+ "DesktopNotificationCenter",
+ "DeviceAcceleration",
+ "DeviceRotationRate",
+ "DeviceStorage",
+ "DeviceStorageCursor",
+ "DeviceStorageStat",
+ "DocumentTouch",
+ "DocumentXBL",
+ "ElementCSSInlineStyle",
+ "ElementTimeControl",
+ "EventListener",
+ "EventListenerInfo",
+ "FileRequest",
+ "FontFace",
+ "FontFaceList",
+ "GeoGeolocation",
+ "GeoPosition",
+ "GeoPositionCallback",
+ "GeoPositionCoords",
+ "GeoPositionError",
+ "GeoPositionErrorCallback",
+ "GetSVGDocument",
+ "GetUserMediaErrorCallback",
+ "GetUserMediaSuccessCallback",
+ "GlobalObjectConstructor",
+ "GlobalPropertyInitializer",
+ "IDBCursor",
+ "IDBCursorWithValue",
+ "IDBDatabase",
+ "IDBFactory",
+ "IDBIndex",
+ "IDBKeyRange",
+ "IDBObjectStore",
+ "IDBOpenDBRequest",
+ "IDBRequest",
+ "IDBTransaction",
+ "ImageDocument",
+ "JSWindow",
+ "LinkStyle",
+ "LoadStatus",
+ "LocalMediaStream",
+ "LockedFile",
+ "MediaError",
+ "MediaList",
+ "MediaQueryList",
+ "MediaQueryListListener",
+ "MediaStream",
+ "MimeType",
+ "ModalContentWindow",
+ "MozAlarmsManager",
+ "MozBrowserFrame",
+ "MozCSSKeyframeRule",
+ "MozCSSKeyframesRule",
+ "MozCanvasPrintState",
+ "MozConnection",
+ "MozNavigatorNetwork",
+ "MozNavigatorSms",
+ "MozPowerManager",
+ "MozSmsCursor",
+ "MozSmsManager",
+ "MozSmsMessage",
+ "MozSmsRequest",
+ "MozSmsSegmentInfo",
+ "MozWakeLock",
+ "MozWakeLockListener",
+ "NSEditableElement",
+ "NSXPathExpression",
+ "NamedNodeMap",
+ "NavigatorCamera",
+ "NavigatorDesktopNotification",
+ "NavigatorDeviceStorage",
+ "NavigatorGeolocation",
+ "NavigatorUserMedia",
+ "NodeFilter",
+ "NodeIterator",
+ "NodeSelector",
+ "OpenWindowEventDetail",
+ "Parser",
+ "PermissionSettings",
+ "Pkcs11",
+ "Plugin",
+ "PluginArray",
+ "RTCIceCandidate",
+ "RTCPeerConnection",
+ "RTCSessionDescription",
+ "Range",
+ "RequestService",
+ "Selection",
+ "Serializer",
+ "SettingsLock",
+ "SettingsManager",
+ "StorageIndexedDB",
+ "StorageItem",
+ "StorageManager",
+ "StorageObsolete",
+ "StyleSheet",
+ "StyleSheetList",
+ "TCPSocket",
+ "TextMetrics",
+ "TimeRanges",
+ "ToString",
+ "TreeColumn",
+ "TreeColumns",
+ "TreeContentView",
+ "TreeSelection",
+ "TreeWalker",
+ "UserDataHandler",
+ "ValidityState",
+ "WindowCollection",
+ "WindowInternal",
+ "WindowPerformance",
+ "WindowUtils",
+ "XMLDocument",
+ "XMLStylesheetProcessingInstruction",
+ "XPathExpression",
+ "XPathNSResolver",
+ "XPathNamespace",
+ "XPathResult",
+
+ "Audio",
+ "AudioBuffer",
+ "AudioBufferSourceNode",
+ "AudioDestinationNode",
+ "AudioListener",
+ "AudioNode",
+ "AudioParam",
+ "AudioSourceNode",
+ "BiquadFilterNode",
+ "CDATASection",
+ "CSSPrimitiveValue",
+ "CSSValue",
+ "CSSValueList",
+ "CanvasRenderingContext2D",
+ "CaretPosition",
+ "ClientRectList",
+ "Comment",
+ "DOMImplementation",
+ "DOMParser",
+ "DOMSettableTokenList",
+ "DelayNode",
+ "DocumentFragment",
+ "DocumentType",
+ "DynamicsCompressorNode",
+ "EventSource",
+ "FileHandle",
+ "FileList",
+ "FileReader",
+ "FormData",
+ "GainNode",
+ "ImageData",
+ "MozSmsFilter",
+ "MutationObserver",
+ "MutationRecord",
+ "PaintRequest",
+ "PaintRequestList",
+ "PannerNode",
+ "ProcessingInstruction",
+ "PropertyNodeList",
+ "RGBColor",
+ "Rect",
+ "TextDecoder",
+ "TextEncoder",
+ "WebGLActiveInfo",
+ "WebGLRenderingContext",
+ "WebGLShaderPrecisionFormat",
+ "WebSocket",
+ "XMLHttpRequest",
+ "XMLHttpRequestUpload",
+ "XMLSerializer",
+ "XPathEvaluator",
+ "XSLTProcessor",
+
+ "SVGAElement",
+ "SVGAltGlyphElement",
+ "SVGAngle",
+ "SVGAnimatedAngle",
+ "SVGAnimatedBoolean",
+ "SVGAnimatedEnumeration",
+ "SVGAnimatedInteger",
+ "SVGAnimatedLength",
+ "SVGAnimatedLengthList",
+ "SVGAnimatedNumber",
+ "SVGAnimatedNumberList",
+ "SVGAnimatedPathData",
+ "SVGAnimatedPoints",
+ "SVGAnimatedPreserveAspectRatio",
+ "SVGAnimatedRect",
+ "SVGAnimatedString",
+ "SVGAnimatedTransformList",
+ "SVGAnimateElement",
+ "SVGAnimateMotionElement",
+ "SVGAnimateTransformElement",
+ "SVGAnimationElement",
+ "SVGCircleElement",
+ "SVGClipPathElement",
+ "SVGComponentTransferFunctionElement",
+ "SVGDefsElement",
+ "SVGDescElement",
+ "SVGDocument",
+ "SVGElement",
+ "SVGEllipseElement",
+ "SVGFEBlendElement",
+ "SVGFEColorMatrixElement",
+ "SVGFEComponentTransferElement",
+ "SVGFECompositeElement",
+ "SVGFEConvolveMatrixElement",
+ "SVGFEDiffuseLightingElement",
+ "SVGFEDisplacementMapElement",
+ "SVGFEDistantLightElement",
+ "SVGFEFloodElement",
+ "SVGFEFuncAElement",
+ "SVGFEFuncBElement",
+ "SVGFEFuncGElement",
+ "SVGFEFuncRElement",
+ "SVGFEGaussianBlurElement",
+ "SVGFEImageElement",
+ "SVGFEMergeElement",
+ "SVGFEMergeNodeElement",
+ "SVGFEMorphologyElement",
+ "SVGFEOffsetElement",
+ "SVGFEPointLightElement",
+ "SVGFESpecularLightingElement",
+ "SVGFESpotLightElement",
+ "SVGFETileElement",
+ "SVGFETurbulenceElement",
+ "SVGFilterElement",
+ "SVGFilterPrimitiveStandardAttributes",
+ "SVGFitToViewBox",
+ "SVGForeignObjectElement",
+ "SVGGElement",
+ "SVGGradientElement",
+ "SVGGraphicsElement",
+ "SVGImageElement",
+ "SVGLength",
+ "SVGLengthList",
+ "SVGLinearGradientElement",
+ "SVGLineElement",
+ "SVGLocatable",
+ "SVGLocatableElement",
+ "SVGMarkerElement",
+ "SVGMaskElement",
+ "SVGMatrix",
+ "SVGMetadataElement",
+ "SVGMpathElement",
+ "SVGMPathElement",
+ "SVGNumber",
+ "SVGNumberList",
+ "SVGPathElement",
+ "SVGPathSeg",
+ "SVGPathSegArcAbs",
+ "SVGPathSegArcRel",
+ "SVGPathSegClosePath",
+ "SVGPathSegCurvetoCubicAbs",
+ "SVGPathSegCurvetoCubicRel",
+ "SVGPathSegCurvetoCubicSmoothAbs",
+ "SVGPathSegCurvetoCubicSmoothRel",
+ "SVGPathSegCurvetoQuadraticAbs",
+ "SVGPathSegCurvetoQuadraticRel",
+ "SVGPathSegCurvetoQuadraticSmoothAbs",
+ "SVGPathSegCurvetoQuadraticSmoothRel",
+ "SVGPathSegLinetoAbs",
+ "SVGPathSegLinetoHorizontalAbs",
+ "SVGPathSegLinetoHorizontalRel",
+ "SVGPathSegLinetoRel",
+ "SVGPathSegLinetoVerticalAbs",
+ "SVGPathSegLinetoVerticalRel",
+ "SVGPathSegList",
+ "SVGPathSegMovetoAbs",
+ "SVGPathSegMovetoRel",
+ "SVGPatternElement",
+ "SVGPoint",
+ "SVGPointList",
+ "SVGPolygonElement",
+ "SVGPolylineElement",
+ "SVGPreserveAspectRatio",
+ "SVGRadialGradientElement",
+ "SVGRect",
+ "SVGRectElement",
+ "SVGScriptElement",
+ "SVGSetElement",
+ "SVGStopElement",
+ "SVGStringList",
+ "SVGStyleElement",
+ "SVGSVGElement",
+ "SVGSwitchElement",
+ "SVGSymbolElement",
+ "SVGTests",
+ "SVGTextContentElement",
+ "SVGTextElement",
+ "SVGTextPathElement",
+ "SVGTextPositioningElement",
+ "SVGTitleElement",
+ "SVGTransform",
+ "SVGTransformable",
+ "SVGTransformableElement",
+ "SVGTransformList",
+ "SVGTSpanElement",
+ "SVGUnitTypes",
+ "SVGURIReference",
+ "SVGUseElement",
+ "SVGViewElement",
+
+ "XULButtonElement",
+ "XULCheckboxElement",
+ "XULCommandDispatcher",
+ "XULContainerElement",
+ "XULContainerItemElement",
+ "XULControlElement",
+ "XULDescriptionElement",
+ "XULDocument",
+ "XULImageElement",
+ "XULLabelElement",
+ "XULLabeledControlElement",
+ "XULMenuListElement",
+ "XULMultiSelectControlElement",
+ "XULPopupElement",
+ "XULRelatedElement",
+ "XULSelectControlElement",
+ "XULSelectControlItemElement",
+ "XULTemplateBuilder",
+ "XULTextBoxElement",
+ "XULTreeBuilder",
+ "XULTreeElement",
+
+ "mozAudioContext",
+ "BrowserFeedWriter",
+ "CSS",
+ "DOMStringMap",
+ "WebGLBuffer",
+ "WebGLFramebuffer",
+ "WebGLProgram",
+ "WebGLRenderbuffer",
+ "WebGLShader",
+ "WebGLTexture",
+ "WebGLUniformLocation",
+ "mozContact",
+ "mozRTCIceCandidate",
+ "mozRTCPeerConnection",
+ "mozRTCSessionDescription",
+
+ "devicePixelRatio",
+ "external",
+ "mozIndexedDB",
+ "sidebar",
+ "getDefaultComputedStyle",
+
+ "Infinity",
+ "NaN",
+ "undefined",
+ "eval",
+
+ "speechSynthesis",
+ "requestAnimationFrame",
+];
+
+domMemberMap.Location =
+[
+ "href",
+ "protocol",
+ "host",
+ "hostname",
+ "port",
+ "pathname",
+ "search",
+ "hash",
+
+ "assign",
+ "reload",
+ "replace",
+
+ "QueryInterface"
+];
+
+domMemberMap.Node =
+[
+ "id",
+ "className",
+
+ "nodeType",
+ "tagName",
+ "nodeName",
+ "localName",
+ "prefix",
+ "namespaceURI",
+ "nodeValue",
+
+ "ownerDocument",
+ "parentNode",
+ "parentElement",
+ "offsetParent",
+ "nextSibling",
+ "previousSibling",
+ "firstChild",
+ "lastChild",
+ "childNodes",
+ "attributes",
+ "contains",
+
+ "dir",
+ "baseURI",
+ "textContent",
+ "innerHTML",
+
+ "addEventListener",
+ "removeEventListener",
+ "dispatchEvent",
+ "cloneNode",
+ "appendChild",
+ "insertBefore",
+ "replaceChild",
+ "removeChild",
+ "compareDocumentPosition",
+ "hasAttributes",
+ "hasChildNodes",
+ "lookupNamespaceURI",
+ "lookupPrefix",
+ "normalize",
+ "isDefaultNamespace",
+ "isEqualNode",
+ "isSameNode",
+ "isSupported",
+ "getFeature",
+ "getUserData",
+ "setUserData",
+
+ "QueryInterface"
+];
+
+domMemberMap.Document = Arr.extendArray(domMemberMap.Node,
+[
+ "documentElement",
+ "body",
+ "head",
+ "title",
+ "location",
+ "referrer",
+ "cookie",
+ "contentType",
+ "lastModified",
+ "characterSet",
+ "inputEncoding",
+ "xmlEncoding",
+ "xmlStandalone",
+ "xmlVersion",
+ "strictErrorChecking",
+ "documentURI",
+ "URL",
+
+ "defaultView",
+ "doctype",
+ "implementation",
+ "styleSheets",
+ "images",
+ "links",
+ "forms",
+ "anchors",
+ "embeds",
+ "plugins",
+ "applets",
+
+ "width",
+ "height",
+
+ "designMode",
+ "compatMode",
+ "async",
+ "readyState",
+
+ "preferredStyleSheetSet",
+ "lastStyleSheetSet",
+ "styleSheetSets",
+ "selectedStyleSheetSet",
+ "enableStyleSheetsForSet",
+
+ "elementFromPoint",
+ "hasFocus",
+ "activeElement",
+
+ "getElementsByClassName",
+ "querySelector",
+ "querySelectorAll",
+
+ "alinkColor",
+ "linkColor",
+ "vlinkColor",
+ "bgColor",
+ "fgColor",
+ "domain",
+
+ "addEventListener",
+ "removeEventListener",
+ "dispatchEvent",
+ "captureEvents",
+ "releaseEvents",
+ "routeEvent",
+ "clear",
+ "open",
+ "close",
+ "execCommand",
+ "execCommandShowHelp",
+ "getElementsByName",
+ "getSelection",
+ "queryCommandEnabled",
+ "queryCommandIndeterm",
+ "queryCommandState",
+ "queryCommandSupported",
+ "queryCommandText",
+ "queryCommandValue",
+ "write",
+ "writeln",
+ "adoptNode",
+ "appendChild",
+ "removeChild",
+ "renameNode",
+ "cloneNode",
+ "compareDocumentPosition",
+ "createAttribute",
+ "createAttributeNS",
+ "createCDATASection",
+ "createComment",
+ "createDocumentFragment",
+ "createElement",
+ "createElementNS",
+ "createEntityReference",
+ "createEvent",
+ "createExpression",
+ "createNSResolver",
+ "createNodeIterator",
+ "createProcessingInstruction",
+ "createRange",
+ "createTextNode",
+ "createTreeWalker",
+ "domConfig",
+ "evaluate",
+ "evaluateFIXptr",
+ "evaluateXPointer",
+ "getAnonymousElementByAttribute",
+ "getAnonymousNodes",
+ "addBinding",
+ "removeBinding",
+ "getBindingParent",
+ "getBoxObjectFor",
+ "setBoxObjectFor",
+ "getElementById",
+ "getElementsByTagName",
+ "getElementsByTagNameNS",
+ "hasAttributes",
+ "hasChildNodes",
+ "importNode",
+ "insertBefore",
+ "isDefaultNamespace",
+ "isEqualNode",
+ "isSameNode",
+ "isSupported",
+ "load",
+ "loadBindingDocument",
+ "lookupNamespaceURI",
+ "lookupPrefix",
+ "normalize",
+ "normalizeDocument",
+ "getFeature",
+ "getUserData",
+ "setUserData",
+
+ "hidden",
+ "mozFullScreen",
+ "mozFullScreenElement",
+ "mozFullScreenEnabled",
+ "mozHidden",
+ "mozPointerLockElement",
+ "mozSyntheticDocument",
+ "mozVisibilityState",
+ "currentScript",
+ "scripts",
+ "visibilityState",
+ "caretPositionFromPoint",
+ "getItems",
+ "mozCancelFullScreen",
+ "mozExitPointerLock",
+ "mozSetImageElement",
+ "releaseCapture"
+]);
+
+domMemberMap.Element = Arr.extendArray(domMemberMap.Node,
+[
+ "clientWidth",
+ "clientHeight",
+ "offsetLeft",
+ "offsetTop",
+ "offsetWidth",
+ "offsetHeight",
+ "scrollLeft",
+ "scrollTop",
+ "scrollWidth",
+ "scrollHeight",
+
+ "style",
+
+ "tabIndex",
+ "title",
+ "lang",
+ "align",
+ "spellcheck",
+
+ "addEventListener",
+ "removeEventListener",
+ "dispatchEvent",
+ "focus",
+ "blur",
+ "click",
+ "cloneNode",
+ "appendChild",
+ "insertBefore",
+ "replaceChild",
+ "removeChild",
+ "compareDocumentPosition",
+ "getElementsByTagName",
+ "getElementsByTagNameNS",
+ "getAttribute",
+ "getAttributeNS",
+ "getAttributeNode",
+ "getAttributeNodeNS",
+ "setAttribute",
+ "setAttributeNS",
+ "setAttributeNode",
+ "setAttributeNodeNS",
+ "removeAttribute",
+ "removeAttributeNS",
+ "removeAttributeNode",
+ "hasAttribute",
+ "hasAttributeNS",
+ "hasAttributes",
+ "hasChildNodes",
+ "lookupNamespaceURI",
+ "lookupPrefix",
+ "normalize",
+ "isDefaultNamespace",
+ "isEqualNode",
+ "isSameNode",
+ "isSupported",
+ "getFeature",
+ "getUserData",
+ "setUserData",
+
+ "childElementCount",
+ "children",
+ "classList",
+ "clientLeft",
+ "clientTop",
+ "contentEditable",
+ "draggable",
+ "firstElementChild",
+ "lastElementChild",
+ "nextElementSibling",
+ "previousElementSibling",
+
+ "getBoundingClientRect",
+ "getClientRects",
+ "getElementsByClassName",
+ "mozMatchesSelector",
+ "querySelector",
+ "querySelectorAll",
+ "scrollIntoView",
+
+ "isContentEditable",
+ "dataset",
+ "contextMenu",
+ "accessKey",
+ "accessKeyLabel",
+ "outerHTML",
+ "properties",
+ "scrollLeftMax",
+ "scrollTopMax",
+ "insertAdjacentHTML",
+ "mozRequestFullScreen",
+ "mozRequestPointerLock",
+
+ "itemId",
+ "itemRef",
+ "itemScope",
+ "itemProp",
+ "itemType",
+ "itemValue",
+
+ "onload",
+ "hidden",
+ "setCapture",
+ "releaseCapture"
+]);
+
+domMemberMap.SVGElement = Arr.extendArray(domMemberMap.Element,
+[
+ "x",
+ "y",
+ "width",
+ "height",
+ "rx",
+ "ry",
+ "transform",
+ "href",
+
+ "ownerSVGElement",
+ "viewportElement",
+ "farthestViewportElement",
+ "nearestViewportElement",
+
+ "getBBox",
+ "getCTM",
+ "getScreenCTM",
+ "getTransformToElement",
+ "getPresentationAttribute",
+ "preserveAspectRatio"
+]);
+
+domMemberMap.SVGSVGElement = Arr.extendArray(domMemberMap.Element,
+[
+ "x",
+ "y",
+ "width",
+ "height",
+ "rx",
+ "ry",
+ "transform",
+
+ "viewBox",
+ "viewport",
+ "currentView",
+ "useCurrentView",
+ "pixelUnitToMillimeterX",
+ "pixelUnitToMillimeterY",
+ "screenPixelToMillimeterX",
+ "screenPixelToMillimeterY",
+ "currentScale",
+ "currentTranslate",
+ "zoomAndPan",
+
+ "ownerSVGElement",
+ "viewportElement",
+ "farthestViewportElement",
+ "nearestViewportElement",
+ "contentScriptType",
+ "contentStyleType",
+
+ "getBBox",
+ "getCTM",
+ "getScreenCTM",
+ "getTransformToElement",
+ "getEnclosureList",
+ "getIntersectionList",
+ "getViewboxToViewportTransform",
+ "getPresentationAttribute",
+ "getElementById",
+ "checkEnclosure",
+ "checkIntersection",
+ "createSVGAngle",
+ "createSVGLength",
+ "createSVGMatrix",
+ "createSVGNumber",
+ "createSVGPoint",
+ "createSVGRect",
+ "createSVGString",
+ "createSVGTransform",
+ "createSVGTransformFromMatrix",
+ "deSelectAll",
+ "preserveAspectRatio",
+ "forceRedraw",
+ "suspendRedraw",
+ "unsuspendRedraw",
+ "unsuspendRedrawAll",
+ "getCurrentTime",
+ "setCurrentTime",
+ "animationsPaused",
+ "pauseAnimations",
+ "unpauseAnimations"
+]);
+
+domMemberMap.HTMLImageElement = Arr.extendArray(domMemberMap.Element,
+[
+ "src",
+ "naturalWidth",
+ "naturalHeight",
+ "width",
+ "height",
+ "x",
+ "y",
+ "name",
+ "alt",
+ "longDesc",
+ "lowsrc",
+ "border",
+ "complete",
+ "hspace",
+ "vspace",
+ "isMap",
+ "useMap",
+]);
+
+domMemberMap.HTMLAnchorElement = Arr.extendArray(domMemberMap.Element,
+[
+ "name",
+ "target",
+ "accessKey",
+ "href",
+ "protocol",
+ "host",
+ "hostname",
+ "port",
+ "pathname",
+ "search",
+ "hash",
+ "hreflang",
+ "coords",
+ "shape",
+ "text",
+ "type",
+ "rel",
+ "rev",
+ "ping",
+ "download",
+ "charset"
+]);
+
+domMemberMap.HTMLIFrameElement = Arr.extendArray(domMemberMap.Element,
+[
+ "contentDocument",
+ "contentWindow",
+ "frameBorder",
+ "height",
+ "longDesc",
+ "marginHeight",
+ "marginWidth",
+ "name",
+ "scrolling",
+ "src",
+ "width"
+]);
+
+domMemberMap.HTMLTableElement = Arr.extendArray(domMemberMap.Element,
+[
+ "bgColor",
+ "border",
+ "caption",
+ "cellPadding",
+ "cellSpacing",
+ "frame",
+ "rows",
+ "rules",
+ "summary",
+ "tBodies",
+ "tFoot",
+ "tHead",
+ "width",
+
+ "createCaption",
+ "createTFoot",
+ "createTHead",
+ "deleteCaption",
+ "deleteRow",
+ "deleteTFoot",
+ "deleteTHead",
+ "insertRow"
+]);
+
+domMemberMap.HTMLTableRowElement = Arr.extendArray(domMemberMap.Element,
+[
+ "bgColor",
+ "cells",
+ "ch",
+ "chOff",
+ "rowIndex",
+ "sectionRowIndex",
+ "vAlign",
+
+ "deleteCell",
+ "insertCell"
+]);
+
+domMemberMap.HTMLTableCellElement = Arr.extendArray(domMemberMap.Element,
+[
+ "abbr",
+ "axis",
+ "bgColor",
+ "cellIndex",
+ "ch",
+ "chOff",
+ "colSpan",
+ "headers",
+ "height",
+ "noWrap",
+ "rowSpan",
+ "scope",
+ "vAlign",
+ "width"
+
+]);
+
+domMemberMap.HTMLScriptElement = Arr.extendArray(domMemberMap.Element,
+[
+ "src",
+ "type",
+ "async",
+ "charset",
+ "crossOrigin",
+ "defer",
+ "event",
+ "htmlFor",
+ "text"
+]);
+
+domMemberMap.HTMLButtonElement = Arr.extendArray(domMemberMap.Element,
+[
+ "accessKey",
+ "disabled",
+ "form",
+ "name",
+ "type",
+ "value",
+
+ "autofocus",
+ "formAction",
+ "formEnctype",
+ "formMethod",
+ "formNoValidate",
+ "formTarget",
+
+ "validity",
+ "validationMessage",
+ "willValidate",
+ "checkValidity",
+ "setCustomValidity",
+
+ "click"
+]);
+
+domMemberMap.HTMLInputElement = Arr.extendArray(domMemberMap.Element,
+[
+ "type",
+ "value",
+ "checked",
+ "accept",
+ "accessKey",
+ "alt",
+ "autocomplete",
+ "autofocus",
+ "controllers",
+ "defaultChecked",
+ "defaultValue",
+ "disabled",
+ "form",
+ "formAction",
+ "formEnctype",
+ "formMethod",
+ "formNoValidate",
+ "formTarget",
+ "maxLength",
+ "name",
+ "readOnly",
+ "selectionEnd",
+ "selectionStart",
+ "size",
+ "src",
+ "textLength",
+ "useMap",
+
+ "files",
+ "indeterminate",
+ "multiple",
+ "list",
+ "mozGetFileNameArray",
+ "mozSetFileNameArray",
+
+ "pattern",
+ "placeholder",
+ "required",
+
+ "height",
+ "width",
+ "inputmode",
+ "max",
+ "min",
+ "step",
+ "selectionDirection",
+ "validity",
+ "validationMessage",
+ "willValidate",
+ "checkValidity",
+ "setCustomValidity",
+ "valueAsDate",
+ "valueAsNumber",
+ "mozIsTextField",
+ "stepUp",
+ "stepDown",
+
+ "click",
+ "select",
+ "setSelectionRange"
+]);
+
+domMemberMap.HTMLFormElement = Arr.extendArray(domMemberMap.Element,
+[
+ "acceptCharset",
+ "action",
+ "author",
+ "elements",
+ "encoding",
+ "enctype",
+ "entry_id",
+ "length",
+ "method",
+ "name",
+ "post",
+ "target",
+ "text",
+ "url",
+
+ "checkValidity",
+ "noValidate",
+ "autocomplete",
+
+ "reset",
+ "submit"
+]);
+
+domMemberMap.HTMLBodyElement = Arr.extendArray(domMemberMap.Element,
+[
+ "aLink",
+ "background",
+ "bgColor",
+ "link",
+ "text",
+ "vLink"
+]);
+
+domMemberMap.HTMLHtmlElement = Arr.extendArray(domMemberMap.Element,
+[
+ "version"
+]);
+
+domMemberMap.Text = Arr.extendArray(domMemberMap.Node,
+[
+ "data",
+ "length",
+
+ "appendData",
+ "deleteData",
+ "insertData",
+ "replaceData",
+ "splitText",
+ "wholeText",
+ "substringData"
+]);
+
+domMemberMap.Attr = Arr.extendArray(domMemberMap.Node,
+[
+ "name",
+ "value",
+ "specified",
+ "ownerElement"
+]);
+
+domMemberMap.Event =
+[
+ "type",
+ "target",
+ "currentTarget",
+ "originalTarget",
+ "explicitOriginalTarget",
+ "relatedTarget",
+ "rangeParent",
+ "rangeOffset",
+ "view",
+
+ "keyCode",
+ "charCode",
+ "screenX",
+ "screenY",
+ "clientX",
+ "clientY",
+ "layerX",
+ "layerY",
+ "pageX",
+ "pageY",
+
+ "detail",
+ "button",
+ "which",
+ "ctrlKey",
+ "shiftKey",
+ "altKey",
+ "metaKey",
+
+ "eventPhase",
+ "timeStamp",
+ "bubbles",
+ "cancelable",
+ "cancelBubble",
+
+ "isTrusted",
+ "isChar",
+
+ "getPreventDefault",
+ "initEvent",
+ "initMouseEvent",
+ "initKeyEvent",
+ "initUIEvent",
+ "preventBubble",
+ "preventCapture",
+ "preventDefault",
+ "stopPropagation"
+];
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+Dom.domConstantMap =
+{
+ "ELEMENT_NODE": 1,
+ "ATTRIBUTE_NODE": 1,
+ "TEXT_NODE": 1,
+ "CDATA_SECTION_NODE": 1,
+ "ENTITY_REFERENCE_NODE": 1,
+ "ENTITY_NODE": 1,
+ "PROCESSING_INSTRUCTION_NODE": 1,
+ "COMMENT_NODE": 1,
+ "DOCUMENT_NODE": 1,
+ "DOCUMENT_TYPE_NODE": 1,
+ "DOCUMENT_FRAGMENT_NODE": 1,
+ "NOTATION_NODE": 1,
+
+ "DOCUMENT_POSITION_DISCONNECTED": 1,
+ "DOCUMENT_POSITION_PRECEDING": 1,
+ "DOCUMENT_POSITION_FOLLOWING": 1,
+ "DOCUMENT_POSITION_CONTAINS": 1,
+ "DOCUMENT_POSITION_CONTAINED_BY": 1,
+ "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1,
+
+ "UNKNOWN_RULE": 1,
+ "STYLE_RULE": 1,
+ "CHARSET_RULE": 1,
+ "IMPORT_RULE": 1,
+ "MEDIA_RULE": 1,
+ "FONT_FACE_RULE": 1,
+ "PAGE_RULE": 1,
+ "KEYFRAMES_RULE": 1,
+ "KEYFRAME_RULE": 1,
+ "MOZ_KEYFRAMES_RULE": 1,
+ "MOZ_KEYFRAME_RULE": 1,
+ "NAMESPACE_RULE": 1,
+ "SUPPORTS_RULE": 1,
+
+ "CAPTURING_PHASE": 1,
+ "AT_TARGET": 1,
+ "BUBBLING_PHASE": 1,
+
+ "SCROLL_PAGE_UP": 1,
+ "SCROLL_PAGE_DOWN": 1,
+
+ "MOUSEUP": 1,
+ "MOUSEDOWN": 1,
+ "MOUSEOVER": 1,
+ "MOUSEOUT": 1,
+ "MOUSEMOVE": 1,
+ "MOUSEDRAG": 1,
+ "CLICK": 1,
+ "DBLCLICK": 1,
+ "KEYDOWN": 1,
+ "KEYUP": 1,
+ "KEYPRESS": 1,
+ "DRAGDROP": 1,
+ "FOCUS": 1,
+ "BLUR": 1,
+ "SELECT": 1,
+ "CHANGE": 1,
+ "RESET": 1,
+ "SUBMIT": 1,
+ "SCROLL": 1,
+ "LOAD": 1,
+ "UNLOAD": 1,
+ "XFER_DONE": 1,
+ "ABORT": 1,
+ "ERROR": 1,
+ "LOCATE": 1,
+ "MOVE": 1,
+ "RESIZE": 1,
+ "FORWARD": 1,
+ "HELP": 1,
+ "BACK": 1,
+ "TEXT": 1,
+
+ "ALT_MASK": 1,
+ "CONTROL_MASK": 1,
+ "SHIFT_MASK": 1,
+ "META_MASK": 1,
+
+ "DOM_VK_TAB": 1,
+ "DOM_VK_PAGE_UP": 1,
+ "DOM_VK_PAGE_DOWN": 1,
+ "DOM_VK_UP": 1,
+ "DOM_VK_DOWN": 1,
+ "DOM_VK_LEFT": 1,
+ "DOM_VK_RIGHT": 1,
+ "DOM_VK_CANCEL": 1,
+ "DOM_VK_HELP": 1,
+ "DOM_VK_BACK_SPACE": 1,
+ "DOM_VK_CLEAR": 1,
+ "DOM_VK_RETURN": 1,
+ "DOM_VK_ENTER": 1,
+ "DOM_VK_SHIFT": 1,
+ "DOM_VK_CONTROL": 1,
+ "DOM_VK_ALT": 1,
+ "DOM_VK_PAUSE": 1,
+ "DOM_VK_CAPS_LOCK": 1,
+ "DOM_VK_ESCAPE": 1,
+ "DOM_VK_SPACE": 1,
+ "DOM_VK_END": 1,
+ "DOM_VK_HOME": 1,
+ "DOM_VK_PRINTSCREEN": 1,
+ "DOM_VK_INSERT": 1,
+ "DOM_VK_DELETE": 1,
+ "DOM_VK_0": 1,
+ "DOM_VK_1": 1,
+ "DOM_VK_2": 1,
+ "DOM_VK_3": 1,
+ "DOM_VK_4": 1,
+ "DOM_VK_5": 1,
+ "DOM_VK_6": 1,
+ "DOM_VK_7": 1,
+ "DOM_VK_8": 1,
+ "DOM_VK_9": 1,
+ "DOM_VK_SEMICOLON": 1,
+ "DOM_VK_EQUALS": 1,
+ "DOM_VK_A": 1,
+ "DOM_VK_B": 1,
+ "DOM_VK_C": 1,
+ "DOM_VK_D": 1,
+ "DOM_VK_E": 1,
+ "DOM_VK_F": 1,
+ "DOM_VK_G": 1,
+ "DOM_VK_H": 1,
+ "DOM_VK_I": 1,
+ "DOM_VK_J": 1,
+ "DOM_VK_K": 1,
+ "DOM_VK_L": 1,
+ "DOM_VK_M": 1,
+ "DOM_VK_N": 1,
+ "DOM_VK_O": 1,
+ "DOM_VK_P": 1,
+ "DOM_VK_Q": 1,
+ "DOM_VK_R": 1,
+ "DOM_VK_S": 1,
+ "DOM_VK_T": 1,
+ "DOM_VK_U": 1,
+ "DOM_VK_V": 1,
+ "DOM_VK_W": 1,
+ "DOM_VK_X": 1,
+ "DOM_VK_Y": 1,
+ "DOM_VK_Z": 1,
+ "DOM_VK_CONTEXT_MENU": 1,
+ "DOM_VK_NUMPAD0": 1,
+ "DOM_VK_NUMPAD1": 1,
+ "DOM_VK_NUMPAD2": 1,
+ "DOM_VK_NUMPAD3": 1,
+ "DOM_VK_NUMPAD4": 1,
+ "DOM_VK_NUMPAD5": 1,
+ "DOM_VK_NUMPAD6": 1,
+ "DOM_VK_NUMPAD7": 1,
+ "DOM_VK_NUMPAD8": 1,
+ "DOM_VK_NUMPAD9": 1,
+ "DOM_VK_MULTIPLY": 1,
+ "DOM_VK_ADD": 1,
+ "DOM_VK_SEPARATOR": 1,
+ "DOM_VK_SUBTRACT": 1,
+ "DOM_VK_DECIMAL": 1,
+ "DOM_VK_DIVIDE": 1,
+ "DOM_VK_F1": 1,
+ "DOM_VK_F2": 1,
+ "DOM_VK_F3": 1,
+ "DOM_VK_F4": 1,
+ "DOM_VK_F5": 1,
+ "DOM_VK_F6": 1,
+ "DOM_VK_F7": 1,
+ "DOM_VK_F8": 1,
+ "DOM_VK_F9": 1,
+ "DOM_VK_F10": 1,
+ "DOM_VK_F11": 1,
+ "DOM_VK_F12": 1,
+ "DOM_VK_F13": 1,
+ "DOM_VK_F14": 1,
+ "DOM_VK_F15": 1,
+ "DOM_VK_F16": 1,
+ "DOM_VK_F17": 1,
+ "DOM_VK_F18": 1,
+ "DOM_VK_F19": 1,
+ "DOM_VK_F20": 1,
+ "DOM_VK_F21": 1,
+ "DOM_VK_F22": 1,
+ "DOM_VK_F23": 1,
+ "DOM_VK_F24": 1,
+ "DOM_VK_NUM_LOCK": 1,
+ "DOM_VK_SCROLL_LOCK": 1,
+ "DOM_VK_COMMA": 1,
+ "DOM_VK_PERIOD": 1,
+ "DOM_VK_SLASH": 1,
+ "DOM_VK_BACK_QUOTE": 1,
+ "DOM_VK_OPEN_BRACKET": 1,
+ "DOM_VK_BACK_SLASH": 1,
+ "DOM_VK_CLOSE_BRACKET": 1,
+ "DOM_VK_QUOTE": 1,
+ "DOM_VK_META": 1,
+
+ "UNCACHED": 1,
+ "IDLE": 1,
+ "CHECKING": 1,
+ "DOWNLOADING": 1,
+ "UPDATEREADY": 1,
+ "OBSOLETE": 1,
+
+ "SVG_ZOOMANDPAN_DISABLE": 1,
+ "SVG_ZOOMANDPAN_MAGNIFY": 1,
+ "SVG_ZOOMANDPAN_UNKNOWN": 1
+};
+
+// ********************************************************************************************* //
+// Inline Event Handlers (introduced in Firefox 9)
+
+/**
+ * List of event handlers that are settable via on* DOM properties.
+ */
+Dom.domInlineEventHandlersMap =
+{
+ "onabort": 1,
+ "onafterprint": 1,
+ "onafterscriptexecute": 1,
+ "onbeforeprint": 1,
+ "onbeforescriptexecute": 1,
+ "onbeforeunload": 1,
+ "onblur": 1,
+ "oncanplay": 1,
+ "oncanplaythrough": 1,
+ "onchange": 1,
+ "onclick": 1,
+ "oncontextmenu": 1,
+ "oncopy": 1,
+ "oncut": 1,
+ "ondblclick": 1,
+ "ondevicemotion": 1,
+ "ondeviceorientation": 1,
+ "ondrag": 1,
+ "ondragend": 1,
+ "ondragenter": 1,
+ "ondragleave": 1,
+ "ondragover": 1,
+ "ondragstart": 1,
+ "ondrop": 1,
+ "ondurationchange": 1,
+ "onemptied": 1,
+ "onended": 1,
+ "onerror": 1,
+ "onfocus": 1,
+ "onhashchange": 1,
+ "oninput": 1,
+ "oninvalid": 1,
+ "onkeydown": 1,
+ "onkeypress": 1,
+ "onkeyup": 1,
+ "onload": 1,
+ "onloadeddata": 1,
+ "onloadedmetadata": 1,
+ "onloadstart": 1,
+ "onmessage": 1,
+ "onmousedown": 1,
+ "onmousemove": 1,
+ "onmouseout": 1,
+ "onmouseover": 1,
+ "onmouseup": 1,
+ "onoffline": 1,
+ "ononline": 1,
+ "onpagehide": 1,
+ "onpageshow": 1,
+ "onpaste": 1,
+ "onpause": 1,
+ "onplay": 1,
+ "onplaying": 1,
+ "onpopstate": 1,
+ "onprogress": 1,
+ "onratechange": 1,
+ "onreadystatechange": 1,
+ "onreset": 1,
+ "onresize": 1,
+ "onscroll": 1,
+ "onseeked": 1,
+ "onseeking": 1,
+ "onselect": 1,
+ "onshow": 1,
+ "onstalled": 1,
+ "onsubmit": 1,
+ "onsuspend": 1,
+ "ontimeupdate": 1,
+ "onunload": 1,
+ "onvolumechange": 1,
+ "onwaiting": 1,
+ "onmozfullscreenchange": 1,
+ "ondevicelight": 1,
+ "ondeviceproximity": 1,
+ "onmouseenter": 1,
+ "onmouseleave": 1,
+ "onmozfullscreenerror": 1,
+ "onmozpointerlockchange": 1,
+ "onmozpointerlockerror": 1,
+ "onuserproximity": 1,
+ "onwheel": 1
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return Dom;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/domplate.js b/content/firebug/lib/domplate.js
index 7692705..67df70c 100644
--- a/content/firebug/lib/domplate.js
+++ b/content/firebug/lib/domplate.js
@@ -1,1326 +1,1326 @@
-/* See license.txt for terms of usage */
-
-// xxxHonza: remove deps on FBL.
-define([
- "firebug/lib/lib",
- "firebug/lib/string"
-],
-function(FBL, Str) {
-
-// ********************************************************************************************* //
-
-var Domplate = {};
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-function DomplateTag(tagName)
-{
- this.tagName = tagName;
-}
-
-Domplate.DomplateTag = DomplateTag;
-
-function DomplateEmbed()
-{
-}
-
-function DomplateLoop()
-{
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-var womb = null;
-var uid = 0;
-
-// xxxHonza: the only global should be Firebug object.
-var domplate = function()
-{
- var lastSubject = null;
- for (var i = 0; i < arguments.length; ++i)
- lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
-
- for (var name in lastSubject)
- {
- var val = lastSubject[name];
- if (isTag(val))
- {
- if (val.tag.subject)
- {
- // Clone the entire domplate tag, e.g. DIV(), that is derived from
- // an existing template. This allows to hold correct 'subject'
- // reference that is used when executing callbacks implemented by
- // templates. Note that 'subject' points to the current template object.
- // See issue: http://code.google.com/p/fbug/issues/detail?id=4425
- lastSubject[name] = val = copyObject({}, val);
- val.tag = copyObject({}, val.tag);
- }
- val.tag.subject = lastSubject;
- }
- }
-
- return lastSubject;
-};
-
-domplate.context = function(context, fn)
-{
- var lastContext = domplate.lastContext;
- domplate.topContext = context;
- fn.apply(context);
- domplate.topContext = lastContext;
-};
-
-// xxxHonza: the only global should be Firebug object.
-Domplate.domplate = FBL.domplate = window.domplate = domplate;
-
-Domplate.TAG = function()
-{
- var embed = new DomplateEmbed();
- return embed.merge(arguments);
-};
-
-Domplate.FOR = function()
-{
- var loop = new DomplateLoop();
- return loop.merge(arguments);
-};
-
-DomplateTag.prototype =
-{
- /**
- * Initializer for DOM templates. Called to create new Functions objects like TR, TD,
- * OBJLINK, etc. See defineTag
- *
- * @param args keyword argments for the template, the {} brace stuff after the tag name,
- * eg TR({...}, TD(...
- * @param oldTag a nested tag, eg the TD tag in TR({...}, TD(...
- */
- merge: function(args, oldTag)
- {
- if (oldTag)
- this.tagName = oldTag.tagName;
-
- this.context = oldTag ? oldTag.context : null; // normally null on construction
- this.subject = oldTag ? oldTag.subject : null;
- this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
- this.classes = oldTag ? copyObject(oldTag.classes) : {};
- this.props = oldTag ? copyObject(oldTag.props) : null;
- this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
- this.children = oldTag ? copyArray(oldTag.children) : [];
- this.vars = oldTag ? copyArray(oldTag.vars) : [];
-
- var attrs = args.length ? args[0] : null;
- var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
-
- // Do not clear children, they can be copied from the oldTag.
- //this.children = [];
-
- if (domplate.topContext)
- this.context = domplate.topContext;
-
- if (args.length)
- parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
-
- if (hasAttrs)
- this.parseAttrs(attrs);
-
- return creator(this, DomplateTag);
- },
-
- parseAttrs: function(args)
- {
- for (var name in args)
- {
- var val = parseValue(args[name]);
- readPartNames(val, this.vars);
-
- if (name.lastIndexOf("on", 0) == 0)
- {
- var eventName = name.substr(2);
- if (!this.listeners)
- this.listeners = [];
- this.listeners.push(eventName, val);
- }
- else if (name[0] == "_")
- {
- var propName = name.substr(1);
- if (!this.props)
- this.props = {};
- this.props[propName] = val;
- }
- else if (name[0] == "$")
- {
- var className = name.substr(1);
- if (!this.classes)
- this.classes = {};
- this.classes[className] = val;
- }
- else
- {
- if (name == "class" && this.attrs.hasOwnProperty(name))
- this.attrs[name] += " " + val;
- else
- this.attrs[name] = val;
- }
- }
- },
-
- compile: function()
- {
- if (this.renderMarkup)
- return;
-
- this.compileMarkup();
- this.compileDOM();
- },
-
- compileMarkup: function()
- {
- this.markupArgs = [];
- var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
-
- this.generateMarkup(topBlock, topOuts, blocks, info);
- this.addCode(topBlock, topOuts, blocks);
-
- var fnBlock = ['(function (__code__, __context__, __in__, __out__'];
- for (var i = 0; i < info.argIndex; ++i)
- fnBlock.push(', s', i);
- fnBlock.push(') {\n');
-
- if (this.subject)
- fnBlock.push('with (this) {\n');
- if (this.context)
- fnBlock.push('with (__context__) {\n');
- fnBlock.push('with (__in__) {\n');
-
- fnBlock.push.apply(fnBlock, blocks);
-
- if (this.subject)
- fnBlock.push('}\n');
- if (this.context)
- fnBlock.push('}\n');
-
- fnBlock.push('}})\n');
-
- function __link__(tag, code, outputs, args)
- {
- if (!tag || !tag.tag)
- {
- if (FBTrace.DBG_DOMPLATE)
- {
- FBTrace.sysout("domplate.Empty tag object passed to __link__ " +
- "(compileMarkup). Ignoring element.");
- }
- return;
- }
-
- tag.tag.compile();
-
- var tagOutputs = [];
- var markupArgs = [code, tag.tag.context, args, tagOutputs];
- markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
- tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
-
- outputs.push(tag);
- outputs.push(tagOutputs);
- }
-
- function __escape__(value)
- {
- return Str.escapeForElementAttribute(value);
- }
-
- function __attr__(name, valueParts)
- {
- // Will be called with valueParts = [,arg,arg,...], but we don't
- // care that the first element is undefined.
- if (valueParts.length === 2 && valueParts[1] === undefined)
- return "";
- var value = valueParts.join("");
- return ' ' + name + '="' + __escape__(value) + '"';
- }
-
- function isArray(it)
- {
- return Object.prototype.toString.call(it) === "[object Array]";
- }
-
- function __loop__(iter, outputs, fn)
- {
- var iterOuts = [];
- outputs.push(iterOuts);
-
- if (!iter)
- return;
-
- if (isArray(iter) || iter instanceof NodeList)
- iter = new ArrayIterator(iter);
-
- var value = null;
- try
- {
- while (1)
- {
- value = iter.next();
- var itemOuts = [0,0];
- iterOuts.push(itemOuts);
- fn.apply(this, [value, itemOuts]);
- }
- }
- catch (exc)
- {
- if (exc != StopIteration && FBTrace.DBG_ERRORS)
- FBTrace.sysout("domplate; __loop__ EXCEPTION " +
- (value ? value.name : "no value") + ", " + exc, exc);
-
- // Don't throw the exception, many built in objects in Firefox throws exceptions
- // these days and it breaks the UI. We can remove as soon as:
- // 389002 and 455013 are fixed.
- //if (exc != StopIteration)
- // throw exc;
- }
- }
-
- if (FBTrace.DBG_DOMPLATE)
- {
- fnBlock.push("//@ sourceURL=chrome://firebug/compileMarkup_" +
- (this.tagName?this.tagName:'')+"_"+(uid++)+".js\n");
- }
-
- var js = fnBlock.join("");
- this.renderMarkup = eval(js);
- },
-
- getVarNames: function(args)
- {
- if (this.vars)
- args.push.apply(args, this.vars);
-
- for (var i = 0; i < this.children.length; ++i)
- {
- var child = this.children[i];
- if (isTag(child))
- child.tag.getVarNames(args);
- else if (child instanceof Parts)
- {
- for (var i = 0; i < child.parts.length; ++i)
- {
- if (child.parts[i] instanceof Variables)
- {
- var name = child.parts[i].names[0];
- var names = name.split(".");
- args.push(names[0]);
- }
- }
- }
- }
- },
-
- generateMarkup: function(topBlock, topOuts, blocks, info)
- {
- if (FBTrace.DBG_DOMPLATE)
- var beginBlock = topBlock.length;
-
- topBlock.push(',"<', this.tagName, '"');
-
- for (var name in this.attrs)
- {
- if (name != "class")
- {
- var val = this.attrs[name];
- topBlock.push(',__attr__("', name, '",[');
- addParts(val, ',', topBlock, info, false);
- topBlock.push('])');
- }
- }
- if (this.listeners)
- {
- for (var i = 0; i < this.listeners.length; i += 2)
- readPartNames(this.listeners[i+1], topOuts);
- }
-
- if (this.props)
- {
- for (var name in this.props)
- readPartNames(this.props[name], topOuts);
- }
-
- if (this.attrs.hasOwnProperty("class") || this.classes)
- {
- topBlock.push(', " class=\\""');
- if (this.attrs.hasOwnProperty("class"))
- addParts(this.attrs["class"], ',', topBlock, info, true);
- topBlock.push(', " "');
- for (var name in this.classes)
- {
- topBlock.push(', (');
- addParts(this.classes[name], '', topBlock, info);
- topBlock.push(' ? "', name, '" + " " : "")');
- }
- topBlock.push(', "\\""');
- }
- topBlock.push(',">"');
-
- this.generateChildMarkup(topBlock, topOuts, blocks, info);
-
- // <br> element doesn't use end tag.
- if (this.tagName != "br")
- topBlock.push(',"</', this.tagName, '>"');
-
- if (FBTrace.DBG_DOMPLATE)
- FBTrace.sysout("DomplateTag.generateMarkup " + this.tagName + ": " +
- topBlock.slice( - topBlock.length + beginBlock).join("").replace("\n"," "),
- {listeners: this.listeners, props: this.props, attrs: this.attrs});
-
- },
-
- generateChildMarkup: function(topBlock, topOuts, blocks, info)
- {
- for (var i = 0; i < this.children.length; ++i)
- {
- var child = this.children[i];
- if (isTag(child))
- child.tag.generateMarkup(topBlock, topOuts, blocks, info);
- else
- addParts(child, ',', topBlock, info, true);
- }
- },
-
- addCode: function(topBlock, topOuts, blocks)
- {
- if (topBlock.length)
- {
- blocks.push('__code__.push(""', topBlock.join(""), ');\n');
- if (FBTrace.DBG_DOMPLATE)
- blocks.push('FBTrace.sysout("addCode "+__code__.join(""));\n');
- }
-
- if (topOuts.length)
- blocks.push('__out__.push(', topOuts.join(","), ');\n');
- topBlock.splice(0, topBlock.length);
- topOuts.splice(0, topOuts.length);
- },
-
- addLocals: function(blocks)
- {
- var varNames = [];
- this.getVarNames(varNames);
-
- var map = {};
- for (var i = 0; i < varNames.length; ++i)
- {
- var name = varNames[i];
- if ( map.hasOwnProperty(name) )
- continue;
-
- map[name] = 1;
- var names = name.split(".");
- blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';\n');
- }
- },
-
- compileDOM: function()
- {
- var path = [];
- var blocks = [];
- this.domArgs = [];
- path.embedIndex = 0;
- path.loopIndex = 0;
- path.staticIndex = 0;
- path.renderIndex = 0;
- var nodeCount = this.generateDOM(path, blocks, this.domArgs);
-
- var fnBlock = ['(function (root, context, o'];
- for (var i = 0; i < path.staticIndex; ++i)
- fnBlock.push(', ', 's'+i);
- for (var i = 0; i < path.renderIndex; ++i)
- fnBlock.push(', ', 'd'+i);
-
- fnBlock.push(') {\n');
- for (var i = 0; i < path.loopIndex; ++i)
- fnBlock.push('var l', i, ' = 0;\n');
- for (var i = 0; i < path.embedIndex; ++i)
- fnBlock.push('var e', i, ' = 0;\n');
-
- if (this.subject)
- fnBlock.push('with (this) {\n');
- if (this.context)
- fnBlock.push('with (context) {\n');
-
- fnBlock.push(blocks.join(""));
-
- if (this.context)
- fnBlock.push('}\n');
- if (this.subject)
- fnBlock.push('}\n');
-
- fnBlock.push('return ', nodeCount, ';\n');
- fnBlock.push('})\n');
-
- function __bind__(object, fn)
- {
- return function(event) { return fn.apply(object, [event]); };
- }
-
- function __link__(node, tag, args)
- {
- if (!tag || !tag.tag)
- {
- if (FBTrace.DBG_DOMPLATE)
- {
- FBTrace.sysout("domplate.Empty tag object passed to __link__ " +
- "(compileDOM). Ignoring element.");
- }
- return;
- }
-
- tag.tag.compile();
-
- var domArgs = [node, tag.tag.context, 0];
- domArgs.push.apply(domArgs, tag.tag.domArgs);
- domArgs.push.apply(domArgs, args);
-
- return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
- }
-
- function __loop__(iter, fn)
- {
- if (!iter)
- return 0;
-
- var nodeCount = 0;
- for (var i = 0; i < iter.length; ++i)
- {
- iter[i][0] = i;
- iter[i][1] = nodeCount;
- nodeCount += fn.apply(this, iter[i]);
- }
- return nodeCount;
- }
-
- // start at a given node |parent|, then index recursively into its children using
- // arguments 2, 3, ... The primary purpose of the 'path' is to name variables in the
- // generated code
- function __path__(parent, offset)
- {
- var root = parent;
-
- for (var i = 2; i < arguments.length; ++i)
- {
- var index = arguments[i];
-
- if (i == 3)
- index += offset;
-
- if (index == -1) // then walk up the tree
- parent = parent.parentNode;
- else
- parent = parent.childNodes[index];
-
- if (FBTrace.DBG_DOMPLATE && !parent)
- FBTrace.sysout("domplate.__path__ will return null for root "+root+
- " and offset "+offset+" arguments["+i+"]="+arguments[i]+' index: '+
- index, {root: root});
- }
-
- return parent;
- }
-
- if (FBTrace.DBG_DOMPLATE)
- fnBlock.push("//@ sourceURL=chrome://firebug/compileDOM_"+
- (this.tagName?this.tagName:'')+"_"+(uid++)+".js\n");
-
- var js = fnBlock.join("");
- // Exceptions on this line are often in the eval
- try
- {
- this.renderDOM = eval(js);
- }
- catch(exc)
- {
- if (FBTrace.DBG_DOMPLATE)
- FBTrace.sysout("renderDOM FAILS "+exc, {exc:exc, js: js});
- var chained = new Error("Domplate.renderDom FAILS");
- chained.cause = {exc:exc, js: js};
- throw chained;
- }
- },
-
- generateDOM: function(path, blocks, args)
- {
- if (this.listeners || this.props)
- this.generateNodePath(path, blocks);
-
- if (this.listeners)
- {
- for (var i = 0; i < this.listeners.length; i += 2)
- {
- var val = this.listeners[i+1];
- var arg = generateArg(val, path, args);
-
- blocks.push('node.addEventListener("', this.listeners[i],
- '", __bind__(this, ', arg, '), false);\n');
- }
- }
-
- if (this.props)
- {
- for (var name in this.props)
- {
- var val = this.props[name];
- var arg = generateArg(val, path, args);
- blocks.push('node.', name, ' = ', arg, ';\n');
- }
- }
-
- this.generateChildDOM(path, blocks, args);
- return 1;
- },
-
- generateNodePath: function(path, blocks)
- {
- blocks.push("var node = __path__(root, o");
-
- // this will be a sum of integers as a string which will be summed in the eval,
- // then passed to __path__
- for (var i = 0; i < path.length; ++i)
- blocks.push(",", path[i]);
-
- blocks.push(");\n");
-
- if (FBTrace.DBG_DOMPLATE)
- {
- var nBlocks = 2*path.length + 2;
- var genTrace = "FBTrace.sysout(\'"+blocks.slice(-nBlocks).join("").replace("\n","")+
- "\'+'->'+(node?FBL.getElementHTML(node):'null'), node);\n";
- blocks.push(genTrace);
- }
- },
-
- generateChildDOM: function(path, blocks, args)
- {
- path.push(0);
- for (var i = 0; i < this.children.length; ++i)
- {
- var child = this.children[i];
- if (isTag(child))
- path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
- else
- path[path.length-1] += '+1';
- }
- path.pop();
- },
-
- /**
- * We are just hiding from javascript.options.strict. For some reasons it's ok if
- * we return undefined here.
- *
- * @return null or undefined or possibly a context.
- */
- getContext: function()
- {
- return this.context;
- }
-};
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-DomplateEmbed.prototype = copyObject(DomplateTag.prototype,
-{
- merge: function(args, oldTag)
- {
- this.value = oldTag ? oldTag.value : parseValue(args[0]);
- this.attrs = oldTag ? oldTag.attrs : {};
- this.vars = oldTag ? copyArray(oldTag.vars) : [];
-
- var attrs = args[1];
- for (var name in attrs)
- {
- var val = parseValue(attrs[name]);
- this.attrs[name] = val;
- readPartNames(val, this.vars);
- }
-
- return creator(this, DomplateEmbed);
- },
-
- getVarNames: function(names)
- {
- if (this.value instanceof Parts)
- names.push(this.value.parts[0].name);
-
- if (this.vars)
- names.push.apply(names, this.vars);
- },
-
- generateMarkup: function(topBlock, topOuts, blocks, info)
- {
- this.addCode(topBlock, topOuts, blocks);
-
- if (FBTrace.DBG_DOMPLATE)
- var beginBlock = blocks.length;
-
- blocks.push('__link__(');
- addParts(this.value, '', blocks, info);
- blocks.push(', __code__, __out__, {\n');
-
- var lastName = null;
- for (var name in this.attrs)
- {
- if (lastName)
- blocks.push(',');
- lastName = name;
-
- var val = this.attrs[name];
- blocks.push('"', name, '":');
- addParts(val, '', blocks, info);
- }
-
- blocks.push('});\n');
-
- if (FBTrace.DBG_DOMPLATE)
- {
- FBTrace.sysout("DomplateEmbed.generateMarkup "+blocks.slice( - blocks.length +
- beginBlock).join("").replace("\n"," "), {value: this.value, attrs: this.attrs});
- }
-
- //this.generateChildMarkup(topBlock, topOuts, blocks, info);
- },
-
- generateDOM: function(path, blocks, args) // XXXjjb args not used?
- {
- if (FBTrace.DBG_DOMPLATE)
- var beginBlock = blocks.length;
-
- var embedName = 'e'+path.embedIndex++;
-
- this.generateNodePath(path, blocks);
-
- var valueName = 'd' + path.renderIndex++;
- var argsName = 'd' + path.renderIndex++;
- blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');\n');
-
- if (FBTrace.DBG_DOMPLATE)
- {
- FBTrace.sysout("DomplateEmbed.generateDOM "+blocks.slice( - blocks.length +
- beginBlock).join("").replace("\n"," "), {path: path});
-
- blocks.push("FBTrace.sysout('__link__ called with node:'+" +
- "FBL.getElementHTML(node), node);\n");
- }
-
- return embedName;
- }
-});
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-DomplateLoop.prototype = copyObject(DomplateTag.prototype,
-{
- merge: function(args, oldTag)
- {
- this.isLoop = true;
- this.varName = oldTag ? oldTag.varName : args[0];
- this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
- this.vars = [];
-
- this.children = oldTag ? copyArray(oldTag.children) : [];
-
- var offset = Math.min(args.length, 2);
- parseChildren(args, offset, this.vars, this.children);
-
- return creator(this, DomplateLoop);
- },
-
- getVarNames: function(names)
- {
- if (this.iter instanceof Parts)
- names.push(this.iter.parts[0].name);
-
- DomplateTag.prototype.getVarNames.apply(this, [names]);
- },
-
- generateMarkup: function(topBlock, topOuts, blocks, info)
- {
- this.addCode(topBlock, topOuts, blocks);
-
- // We are in a FOR loop and our this.iter property contains
- // either a simple function name as a string or a Parts object
- // with only ONE Variables object. There is only one variables object
- // as the FOR argument can contain only ONE valid function callback
- // with optional arguments or just one variable. Allowed arguments are
- // func or $var or $var.sub or $var|func or $var1,$var2|func or $var|func1|func2 or $var1,$var2|func1|func2
- var iterName;
- if (this.iter instanceof Parts)
- {
- // We have a function with optional aruments or just one variable
- var part = this.iter.parts[0];
-
- // Join our function arguments or variables
- // If the user has supplied multiple variables without a function
- // this will create an invalid result and we should probably add an
- // error message here or just take the first variable
- iterName = part.names.join(",");
-
- // Nest our functions
- if (part.format)
- {
- for (var i = 0; i < part.format.length; ++i)
- iterName = part.format[i] + "(" + iterName + ")";
- }
- }
- else
- {
- // We have just a simple function name without any arguments
- iterName = this.iter;
- }
-
- blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(',
- this.varName, ', __out__) {\n');
- this.generateChildMarkup(topBlock, topOuts, blocks, info);
- this.addCode(topBlock, topOuts, blocks);
-
- blocks.push('}]);\n');
- },
-
- generateDOM: function(path, blocks, args)
- {
- var iterName = 'd'+path.renderIndex++;
- var counterName = 'i'+path.loopIndex;
- var loopName = 'l'+path.loopIndex++;
-
- if (!path.length)
- path.push(-1, 0);
-
- var preIndex = path.renderIndex;
- path.renderIndex = 0;
-
- var nodeCount = 0;
-
- var subBlocks = [];
- var basePath = path[path.length-1];
- for (var i = 0; i < this.children.length; ++i)
- {
- path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
-
- var child = this.children[i];
- if (isTag(child))
- nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
- else
- nodeCount += '+1';
- }
-
- path[path.length-1] = basePath+'+'+loopName;
-
- blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(',
- counterName,',',loopName);
-
- for (var i = 0; i < path.renderIndex; ++i)
- blocks.push(',d'+i);
-
- blocks.push(') {\n');
- blocks.push(subBlocks.join(""));
- blocks.push('return ', nodeCount, ';\n');
- blocks.push('}]);\n');
-
- path.renderIndex = preIndex;
-
- return loopName;
- }
-});
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-function Variables(names, format)
-{
- this.names = names;
- this.format = format;
-}
-
-function Parts(parts)
-{
- this.parts = parts;
-}
-
-// ********************************************************************************************* //
-
-function parseParts(str)
-{
- // Match $var or $var.sub or $var|func or $var1,$var2|func or $var|func1|func2 or $var1,$var2|func1|func2
- var re = /\$([_A-Za-z][_A-Za-z0-9.]*(,\$[_A-Za-z][_A-Za-z0-9.]*)*([_A-Za-z0-9.|]*))/g;
- var index = 0;
- var parts = [];
-
- var m;
- while (m = re.exec(str))
- {
- var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
- if (pre)
- parts.push(pre);
-
- var segs = m[1].split("|");
- var vars = segs[0].split(",$");
-
- // Assemble the variables object and append to buffer
- parts.push(new Variables(vars, segs.slice(1)));
-
- index = re.lastIndex;
- }
-
- // No matches found at all so we return the whole string
- if (!index)
- return str;
-
- // If we have data after our last matched index we append it here as the final step
- var post = str.substr(index);
- if (post)
- parts.push(post);
-
- return new Parts(parts);
-}
-
-function parseValue(val)
-{
- return typeof(val) == 'string' ? parseParts(val) : val;
-}
-
-function parseChildren(args, offset, vars, children)
-{
- for (var i = offset; i < args.length; ++i)
- {
- var val = parseValue(args[i]);
- children.push(val);
- readPartNames(val, vars);
- }
-}
-
-function readPartNames(val, vars)
-{
- if (val instanceof Parts)
- {
- for (var i = 0; i < val.parts.length; ++i)
- {
- var part = val.parts[i];
- if (part instanceof Variables)
- vars.push(part.names[0]);
- }
- }
-}
-
-function generateArg(val, path, args)
-{
- if (val instanceof Parts)
- {
- var vals = [];
- for (var i = 0; i < val.parts.length; ++i)
- {
- var part = val.parts[i];
- if (part instanceof Variables)
- {
- var varName = 'd'+path.renderIndex++;
- if (part.format)
- {
- for (var j = 0; j < part.format.length; ++j)
- varName = part.format[j] + '(' + varName + ')';
- }
-
- vals.push(varName);
- }
- else
- vals.push('"'+part.replace(/"/g, '\\"')+'"');
- }
-
- return vals.join('+');
- }
- else
- {
- args.push(val);
- return 's' + path.staticIndex++;
- }
-}
-
-function addParts(val, delim, block, info, escapeIt)
-{
- var vals = [];
- if (val instanceof Parts)
- {
- for (var i = 0; i < val.parts.length; ++i)
- {
- var part = val.parts[i];
- if (part instanceof Variables)
- {
- var partName = part.names.join(",");
- if (part.format)
- {
- for (var j = 0; j < part.format.length; ++j)
- partName = part.format[j] + "(" + partName + ")";
- }
-
- if (escapeIt)
- vals.push("__escape__(" + partName + ")");
- else
- vals.push(partName);
- }
- else
- vals.push('"'+ part + '"');
- }
- }
- else if (isTag(val))
- {
- info.args.push(val);
- vals.push('s'+info.argIndex++);
- }
- else
- vals.push('"'+ val + '"');
-
- var parts = vals.join(delim);
- if (parts)
- block.push(delim, parts);
-}
-
-function isTag(obj)
-{
- return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
-}
-
-function creator(tag, cons)
-{
- var fn = function()
- {
- var tag = fn.tag;
- var cons = fn.cons;
- var newTag = new cons();
- return newTag.merge(arguments, tag);
- };
-
- fn.tag = tag;
- fn.cons = cons;
- extend(fn, Renderer);
-
- return fn;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-function copyArray(oldArray)
-{
- var ary = [];
- if (oldArray)
- for (var i = 0; i < oldArray.length; ++i)
- ary.push(oldArray[i]);
- return ary;
-}
-
-function copyObject(l, r)
-{
- var m = {};
- extend(m, l);
- extend(m, r);
- return m;
-}
-
-function extend(l, r)
-{
- for (var n in r)
- l[n] = r[n];
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-function ArrayIterator(array)
-{
- var index = -1;
-
- this.next = function()
- {
- if (++index >= array.length)
- throw StopIteration;
-
- return array[index];
- };
-}
-
-function StopIteration() {}
-
-FBL.$break = function()
-{
- throw StopIteration;
-};
-
-// ********************************************************************************************* //
-
-var Renderer =
-{
- renderHTML: function(args, outputs, self)
- {
- try
- {
- var code = [];
- var markupArgs = [code, this.tag.getContext(), args, outputs];
- markupArgs.push.apply(markupArgs, this.tag.markupArgs);
- this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
- return code.join("");
- }
- catch (e)
- {
- if (FBTrace.DBG_DOMPLATE || FBTrace.DBG_ERRORS)
- FBTrace.sysout("domplate.renderHTML; EXCEPTION " + e,
- {exc: e, render: this.tag.renderMarkup.toSource()});
- }
- },
-
- insertRows: function(args, before, self)
- {
- if (!args)
- args = {};
-
- this.tag.compile();
-
- var outputs = [];
- var html = this.renderHTML(args, outputs, self);
-
- var doc = before.ownerDocument;
- var table = doc.createElement("table");
- table.innerHTML = html;
-
- var tbody = table.firstChild;
- var parent = before.localName.toLowerCase() == "tr" ? before.parentNode : before;
- var after = before.localName.toLowerCase() == "tr" ? before.nextSibling : null;
-
- var firstRow = tbody.firstChild;
- var lastRow = null;
- while (tbody.firstChild)
- {
- lastRow = tbody.firstChild;
- if (after)
- parent.insertBefore(lastRow, after);
- else
- parent.appendChild(lastRow);
- }
-
- // To save the next poor soul:
- // In order to properly apply properties and event handlers on elements
- // constructed by a FOR tag, the tag needs to be able to iterate up and
- // down the tree. If FOR is the root element, as is the case with
- // many 'insertRows' calls, it will need to iterator over portions of the
- // new parent.
- //
- // To achieve this end, __path__ defines the -1 operator which allows
- // parent traversal. When combined with the offset that we calculate
- // below we are able to iterate over the elements.
- //
- // This fails when applied to a non-loop element as non-loop elements
- // do not generate to proper path to bounce up and down the tree.
- //
- var offset = 0;
- if (this.tag.isLoop)
- {
- var node = firstRow.parentNode.firstChild;
- for (; node && node != firstRow; node = node.nextSibling)
- ++offset;
- }
-
- // strict warning: this.tag.context undefined
- var domArgs = [firstRow, this.tag.getContext(), offset];
- domArgs.push.apply(domArgs, this.tag.domArgs);
- domArgs.push.apply(domArgs, outputs);
-
- this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
- return [firstRow, lastRow];
- },
-
- insertBefore: function(args, before, self)
- {
- return this.insertNode(
- args, before.ownerDocument,
- function beforeInserter(frag) {
- before.parentNode.insertBefore(frag, before);
- },
- self);
- },
-
- insertAfter: function(args, after, self)
- {
- return this.insertNode(
- args, after.ownerDocument,
- function(frag) {
- after.parentNode.insertBefore(frag, after.nextSibling);
- },
- self);
- },
-
- insertNode: function(args, doc, inserter, self)
- {
- if (!args)
- args = {};
-
- this.tag.compile();
-
- var outputs = [];
- var html = this.renderHTML(args, outputs, self);
- if (FBTrace.DBG_DOMPLATE)
- FBTrace.sysout("domplate.insertNode html: "+html+"\n");
-
- var range = doc.createRange();
-
- // if doc starts with a Text node, domplate fails because the fragment starts
- // with a text node. That must be a gecko bug, but let's just workaround it since
- // we want to switch to innerHTML anyway
- var aDiv = doc.getElementsByTagName("div").item(0);
- range.setStartBefore(aDiv);
-
- // TODO replace with standard innerHTML
- var frag = range.createContextualFragment(html);
-
- var root = frag.firstChild;
- root = inserter(frag) || root;
-
- var domArgs = [root, this.tag.context, 0];
- domArgs.push.apply(domArgs, this.tag.domArgs);
- domArgs.push.apply(domArgs, outputs);
-
- if (FBTrace.DBG_DOMPLATE)
- FBTrace.sysout("domplate.insertNode domArgs:", domArgs);
- this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
-
- return root;
- },
-
- replace: function(args, parent, self)
- {
- if (!args)
- args = {};
-
- this.tag.compile();
-
- var outputs = [];
- var html = this.renderHTML(args, outputs, self);
-
- var root;
- if (parent.nodeType == Node.ELEMENT_NODE)
- {
- parent.innerHTML = html;
- root = parent.firstChild;
- }
- else
- {
- if (!parent || parent.nodeType != Node.DOCUMENT_NODE)
- parent = document;
-
- if (!womb || womb.ownerDocument != parent)
- womb = parent.createElement("div");
- womb.innerHTML = html;
-
- root = womb.firstChild;
- //womb.removeChild(root);
- }
-
- var domArgs = [root, this.tag.context, 0];
- domArgs.push.apply(domArgs, this.tag.domArgs);
- domArgs.push.apply(domArgs, outputs);
-
- try
- {
- this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
- }
- catch(exc)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("domplate renderDom FAILS " + exc, {exc: exc, renderDOM:
- this.tag.renderDOM.toSource(), domplate: this, domArgs: domArgs, self: self});
- }
-
- var chained = new Error("Domplate.renderDom FAILS: "+exc);
- chained.cause = {exc: exc, renderDOM: this.tag.renderDOM.toSource(),
- domplate: this, domArgs: domArgs, self: self};
-
- throw chained;
- }
-
- return root;
- },
-
- append: function(args, parent, self)
- {
- if (!args)
- args = {};
-
- this.tag.compile();
-
- var outputs = [];
- var html = this.renderHTML(args, outputs, self);
- if (FBTrace.DBG_DOMPLATE)
- FBTrace.sysout("domplate.append html: "+html+"\n");
-
- if (!womb || womb.ownerDocument != parent.ownerDocument)
- womb = parent.ownerDocument.createElement("div");
- womb.innerHTML = html;
-
- var root = womb.firstChild;
- while (womb.firstChild)
- parent.appendChild(womb.firstChild);
-
- var domArgs = [root, this.tag.context, 0];
- domArgs.push.apply(domArgs, this.tag.domArgs);
- domArgs.push.apply(domArgs, outputs);
-
- if (FBTrace.DBG_DOMPLATE)
- FBTrace.sysout("domplate.append domArgs:", domArgs);
-
- this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
-
- return root;
- }
-};
-
-// ********************************************************************************************* //
-
-function defineTags()
-{
- for (var i = 0; i < arguments.length; ++i)
- {
- var tagName = arguments[i];
- var fn = createTagHandler(tagName);
- var fnName = tagName.toUpperCase();
-
- // xxxHonza: Domplate is injected into FBL namespace only for backward
- // compatibility with extensions.
- Domplate[fnName] = FBL[fnName]= fn;
- }
-
- function createTagHandler(tagName)
- {
- return function() {
- var newTag = new Domplate.DomplateTag(tagName);
- return newTag.merge(arguments);
- };
- }
-}
-
-// xxxHonza: Domplate is injected into FBL namespace only for backward
-// compatibility with extensions.
-// We need to mark this as deprecated.
-FBL.TAG = Domplate.TAG;
-FBL.FOR = Domplate.FOR;
-FBL.DomplateTag = Domplate.DomplateTag;
-
-defineTags(
- "a", "button", "br", "canvas", "col", "colgroup", "div", "fieldset", "form", "h1", "h2",
- "h3", "hr", "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p",
- "pre", "select", "b", "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th",
- "thead", "tr", "tt", "ul", "iframe", "code", "style",
-
- // HTML5
- "article", "aside", "audio", "bb", "command", "datagrid", "datalist", "details",
- "dialog", "embed", "eventsource", "figure", "footer", "keygen", "mark", "meter", "nav",
- "output", "progress", "ruby", "rp", "rt", "section", "source", "time", "video"
-);
-
-// ********************************************************************************************* //
-// Registration
-
-return Domplate;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+// xxxHonza: remove deps on FBL.
+define([
+ "firebug/lib/lib",
+ "firebug/lib/string"
+],
+function(FBL, Str) {
+
+// ********************************************************************************************* //
+
+var Domplate = {};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+function DomplateTag(tagName)
+{
+ this.tagName = tagName;
+}
+
+Domplate.DomplateTag = DomplateTag;
+
+function DomplateEmbed()
+{
+}
+
+function DomplateLoop()
+{
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+var womb = null;
+var uid = 0;
+
+// xxxHonza: the only global should be Firebug object.
+var domplate = function()
+{
+ var lastSubject = null;
+ for (var i = 0; i < arguments.length; ++i)
+ lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
+
+ for (var name in lastSubject)
+ {
+ var val = lastSubject[name];
+ if (isTag(val))
+ {
+ if (val.tag.subject)
+ {
+ // Clone the entire domplate tag, e.g. DIV(), that is derived from
+ // an existing template. This allows to hold correct 'subject'
+ // reference that is used when executing callbacks implemented by
+ // templates. Note that 'subject' points to the current template object.
+ // See issue: http://code.google.com/p/fbug/issues/detail?id=4425
+ lastSubject[name] = val = copyObject({}, val);
+ val.tag = copyObject({}, val.tag);
+ }
+ val.tag.subject = lastSubject;
+ }
+ }
+
+ return lastSubject;
+};
+
+domplate.context = function(context, fn)
+{
+ var lastContext = domplate.lastContext;
+ domplate.topContext = context;
+ fn.apply(context);
+ domplate.topContext = lastContext;
+};
+
+// xxxHonza: the only global should be Firebug object.
+Domplate.domplate = FBL.domplate = window.domplate = domplate;
+
+Domplate.TAG = function()
+{
+ var embed = new DomplateEmbed();
+ return embed.merge(arguments);
+};
+
+Domplate.FOR = function()
+{
+ var loop = new DomplateLoop();
+ return loop.merge(arguments);
+};
+
+DomplateTag.prototype =
+{
+ /**
+ * Initializer for DOM templates. Called to create new Functions objects like TR, TD,
+ * OBJLINK, etc. See defineTag
+ *
+ * @param args keyword argments for the template, the {} brace stuff after the tag name,
+ * eg TR({...}, TD(...
+ * @param oldTag a nested tag, eg the TD tag in TR({...}, TD(...
+ */
+ merge: function(args, oldTag)
+ {
+ if (oldTag)
+ this.tagName = oldTag.tagName;
+
+ this.context = oldTag ? oldTag.context : null; // normally null on construction
+ this.subject = oldTag ? oldTag.subject : null;
+ this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
+ this.classes = oldTag ? copyObject(oldTag.classes) : {};
+ this.props = oldTag ? copyObject(oldTag.props) : null;
+ this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
+ this.children = oldTag ? copyArray(oldTag.children) : [];
+ this.vars = oldTag ? copyArray(oldTag.vars) : [];
+
+ var attrs = args.length ? args[0] : null;
+ var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
+
+ // Do not clear children, they can be copied from the oldTag.
+ //this.children = [];
+
+ if (domplate.topContext)
+ this.context = domplate.topContext;
+
+ if (args.length)
+ parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
+
+ if (hasAttrs)
+ this.parseAttrs(attrs);
+
+ return creator(this, DomplateTag);
+ },
+
+ parseAttrs: function(args)
+ {
+ for (var name in args)
+ {
+ var val = parseValue(args[name]);
+ readPartNames(val, this.vars);
+
+ if (name.lastIndexOf("on", 0) == 0)
+ {
+ var eventName = name.substr(2);
+ if (!this.listeners)
+ this.listeners = [];
+ this.listeners.push(eventName, val);
+ }
+ else if (name[0] == "_")
+ {
+ var propName = name.substr(1);
+ if (!this.props)
+ this.props = {};
+ this.props[propName] = val;
+ }
+ else if (name[0] == "$")
+ {
+ var className = name.substr(1);
+ if (!this.classes)
+ this.classes = {};
+ this.classes[className] = val;
+ }
+ else
+ {
+ if (name == "class" && this.attrs.hasOwnProperty(name))
+ this.attrs[name] += " " + val;
+ else
+ this.attrs[name] = val;
+ }
+ }
+ },
+
+ compile: function()
+ {
+ if (this.renderMarkup)
+ return;
+
+ this.compileMarkup();
+ this.compileDOM();
+ },
+
+ compileMarkup: function()
+ {
+ this.markupArgs = [];
+ var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
+
+ this.generateMarkup(topBlock, topOuts, blocks, info);
+ this.addCode(topBlock, topOuts, blocks);
+
+ var fnBlock = ['(function (__code__, __context__, __in__, __out__'];
+ for (var i = 0; i < info.argIndex; ++i)
+ fnBlock.push(', s', i);
+ fnBlock.push(') {\n');
+
+ if (this.subject)
+ fnBlock.push('with (this) {\n');
+ if (this.context)
+ fnBlock.push('with (__context__) {\n');
+ fnBlock.push('with (__in__) {\n');
+
+ fnBlock.push.apply(fnBlock, blocks);
+
+ if (this.subject)
+ fnBlock.push('}\n');
+ if (this.context)
+ fnBlock.push('}\n');
+
+ fnBlock.push('}})\n');
+
+ function __link__(tag, code, outputs, args)
+ {
+ if (!tag || !tag.tag)
+ {
+ if (FBTrace.DBG_DOMPLATE)
+ {
+ FBTrace.sysout("domplate.Empty tag object passed to __link__ " +
+ "(compileMarkup). Ignoring element.");
+ }
+ return;
+ }
+
+ tag.tag.compile();
+
+ var tagOutputs = [];
+ var markupArgs = [code, tag.tag.context, args, tagOutputs];
+ markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
+ tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
+
+ outputs.push(tag);
+ outputs.push(tagOutputs);
+ }
+
+ function __escape__(value)
+ {
+ return Str.escapeForElementAttribute(value);
+ }
+
+ function __attr__(name, valueParts)
+ {
+ // Will be called with valueParts = [,arg,arg,...], but we don't
+ // care that the first element is undefined.
+ if (valueParts.length === 2 && valueParts[1] === undefined)
+ return "";
+ var value = valueParts.join("");
+ return ' ' + name + '="' + __escape__(value) + '"';
+ }
+
+ function isArray(it)
+ {
+ return Object.prototype.toString.call(it) === "[object Array]";
+ }
+
+ function __loop__(iter, outputs, fn)
+ {
+ var iterOuts = [];
+ outputs.push(iterOuts);
+
+ if (!iter)
+ return;
+
+ if (isArray(iter) || iter instanceof NodeList)
+ iter = new ArrayIterator(iter);
+
+ var value = null;
+ try
+ {
+ while (1)
+ {
+ value = iter.next();
+ var itemOuts = [0,0];
+ iterOuts.push(itemOuts);
+ fn.apply(this, [value, itemOuts]);
+ }
+ }
+ catch (exc)
+ {
+ if (exc != StopIteration && FBTrace.DBG_ERRORS)
+ FBTrace.sysout("domplate; __loop__ EXCEPTION " +
+ (value ? value.name : "no value") + ", " + exc, exc);
+
+ // Don't throw the exception, many built in objects in Firefox throws exceptions
+ // these days and it breaks the UI. We can remove as soon as:
+ // 389002 and 455013 are fixed.
+ //if (exc != StopIteration)
+ // throw exc;
+ }
+ }
+
+ if (FBTrace.DBG_DOMPLATE)
+ {
+ fnBlock.push("//@ sourceURL=chrome://firebug/compileMarkup_" +
+ (this.tagName?this.tagName:'')+"_"+(uid++)+".js\n");
+ }
+
+ var js = fnBlock.join("");
+ this.renderMarkup = eval(js);
+ },
+
+ getVarNames: function(args)
+ {
+ if (this.vars)
+ args.push.apply(args, this.vars);
+
+ for (var i = 0; i < this.children.length; ++i)
+ {
+ var child = this.children[i];
+ if (isTag(child))
+ child.tag.getVarNames(args);
+ else if (child instanceof Parts)
+ {
+ for (var i = 0; i < child.parts.length; ++i)
+ {
+ if (child.parts[i] instanceof Variables)
+ {
+ var name = child.parts[i].names[0];
+ var names = name.split(".");
+ args.push(names[0]);
+ }
+ }
+ }
+ }
+ },
+
+ generateMarkup: function(topBlock, topOuts, blocks, info)
+ {
+ if (FBTrace.DBG_DOMPLATE)
+ var beginBlock = topBlock.length;
+
+ topBlock.push(',"<', this.tagName, '"');
+
+ for (var name in this.attrs)
+ {
+ if (name != "class")
+ {
+ var val = this.attrs[name];
+ topBlock.push(',__attr__("', name, '",[');
+ addParts(val, ',', topBlock, info, false);
+ topBlock.push('])');
+ }
+ }
+ if (this.listeners)
+ {
+ for (var i = 0; i < this.listeners.length; i += 2)
+ readPartNames(this.listeners[i+1], topOuts);
+ }
+
+ if (this.props)
+ {
+ for (var name in this.props)
+ readPartNames(this.props[name], topOuts);
+ }
+
+ if (this.attrs.hasOwnProperty("class") || this.classes)
+ {
+ topBlock.push(', " class=\\""');
+ if (this.attrs.hasOwnProperty("class"))
+ addParts(this.attrs["class"], ',', topBlock, info, true);
+ topBlock.push(', " "');
+ for (var name in this.classes)
+ {
+ topBlock.push(', (');
+ addParts(this.classes[name], '', topBlock, info);
+ topBlock.push(' ? "', name, '" + " " : "")');
+ }
+ topBlock.push(', "\\""');
+ }
+ topBlock.push(',">"');
+
+ this.generateChildMarkup(topBlock, topOuts, blocks, info);
+
+ // <br> element doesn't use end tag.
+ if (this.tagName != "br")
+ topBlock.push(',"</', this.tagName, '>"');
+
+ if (FBTrace.DBG_DOMPLATE)
+ FBTrace.sysout("DomplateTag.generateMarkup " + this.tagName + ": " +
+ topBlock.slice( - topBlock.length + beginBlock).join("").replace("\n"," "),
+ {listeners: this.listeners, props: this.props, attrs: this.attrs});
+
+ },
+
+ generateChildMarkup: function(topBlock, topOuts, blocks, info)
+ {
+ for (var i = 0; i < this.children.length; ++i)
+ {
+ var child = this.children[i];
+ if (isTag(child))
+ child.tag.generateMarkup(topBlock, topOuts, blocks, info);
+ else
+ addParts(child, ',', topBlock, info, true);
+ }
+ },
+
+ addCode: function(topBlock, topOuts, blocks)
+ {
+ if (topBlock.length)
+ {
+ blocks.push('__code__.push(""', topBlock.join(""), ');\n');
+ if (FBTrace.DBG_DOMPLATE)
+ blocks.push('FBTrace.sysout("addCode "+__code__.join(""));\n');
+ }
+
+ if (topOuts.length)
+ blocks.push('__out__.push(', topOuts.join(","), ');\n');
+ topBlock.splice(0, topBlock.length);
+ topOuts.splice(0, topOuts.length);
+ },
+
+ addLocals: function(blocks)
+ {
+ var varNames = [];
+ this.getVarNames(varNames);
+
+ var map = {};
+ for (var i = 0; i < varNames.length; ++i)
+ {
+ var name = varNames[i];
+ if ( map.hasOwnProperty(name) )
+ continue;
+
+ map[name] = 1;
+ var names = name.split(".");
+ blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';\n');
+ }
+ },
+
+ compileDOM: function()
+ {
+ var path = [];
+ var blocks = [];
+ this.domArgs = [];
+ path.embedIndex = 0;
+ path.loopIndex = 0;
+ path.staticIndex = 0;
+ path.renderIndex = 0;
+ var nodeCount = this.generateDOM(path, blocks, this.domArgs);
+
+ var fnBlock = ['(function (root, context, o'];
+ for (var i = 0; i < path.staticIndex; ++i)
+ fnBlock.push(', ', 's'+i);
+ for (var i = 0; i < path.renderIndex; ++i)
+ fnBlock.push(', ', 'd'+i);
+
+ fnBlock.push(') {\n');
+ for (var i = 0; i < path.loopIndex; ++i)
+ fnBlock.push('var l', i, ' = 0;\n');
+ for (var i = 0; i < path.embedIndex; ++i)
+ fnBlock.push('var e', i, ' = 0;\n');
+
+ if (this.subject)
+ fnBlock.push('with (this) {\n');
+ if (this.context)
+ fnBlock.push('with (context) {\n');
+
+ fnBlock.push(blocks.join(""));
+
+ if (this.context)
+ fnBlock.push('}\n');
+ if (this.subject)
+ fnBlock.push('}\n');
+
+ fnBlock.push('return ', nodeCount, ';\n');
+ fnBlock.push('})\n');
+
+ function __bind__(object, fn)
+ {
+ return function(event) { return fn.apply(object, [event]); };
+ }
+
+ function __link__(node, tag, args)
+ {
+ if (!tag || !tag.tag)
+ {
+ if (FBTrace.DBG_DOMPLATE)
+ {
+ FBTrace.sysout("domplate.Empty tag object passed to __link__ " +
+ "(compileDOM). Ignoring element.");
+ }
+ return;
+ }
+
+ tag.tag.compile();
+
+ var domArgs = [node, tag.tag.context, 0];
+ domArgs.push.apply(domArgs, tag.tag.domArgs);
+ domArgs.push.apply(domArgs, args);
+
+ return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
+ }
+
+ function __loop__(iter, fn)
+ {
+ if (!iter)
+ return 0;
+
+ var nodeCount = 0;
+ for (var i = 0; i < iter.length; ++i)
+ {
+ iter[i][0] = i;
+ iter[i][1] = nodeCount;
+ nodeCount += fn.apply(this, iter[i]);
+ }
+ return nodeCount;
+ }
+
+ // start at a given node |parent|, then index recursively into its children using
+ // arguments 2, 3, ... The primary purpose of the 'path' is to name variables in the
+ // generated code
+ function __path__(parent, offset)
+ {
+ var root = parent;
+
+ for (var i = 2; i < arguments.length; ++i)
+ {
+ var index = arguments[i];
+
+ if (i == 3)
+ index += offset;
+
+ if (index == -1) // then walk up the tree
+ parent = parent.parentNode;
+ else
+ parent = parent.childNodes[index];
+
+ if (FBTrace.DBG_DOMPLATE && !parent)
+ FBTrace.sysout("domplate.__path__ will return null for root "+root+
+ " and offset "+offset+" arguments["+i+"]="+arguments[i]+' index: '+
+ index, {root: root});
+ }
+
+ return parent;
+ }
+
+ if (FBTrace.DBG_DOMPLATE)
+ fnBlock.push("//@ sourceURL=chrome://firebug/compileDOM_"+
+ (this.tagName?this.tagName:'')+"_"+(uid++)+".js\n");
+
+ var js = fnBlock.join("");
+ // Exceptions on this line are often in the eval
+ try
+ {
+ this.renderDOM = eval(js);
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_DOMPLATE)
+ FBTrace.sysout("renderDOM FAILS "+exc, {exc:exc, js: js});
+ var chained = new Error("Domplate.renderDom FAILS");
+ chained.cause = {exc:exc, js: js};
+ throw chained;
+ }
+ },
+
+ generateDOM: function(path, blocks, args)
+ {
+ if (this.listeners || this.props)
+ this.generateNodePath(path, blocks);
+
+ if (this.listeners)
+ {
+ for (var i = 0; i < this.listeners.length; i += 2)
+ {
+ var val = this.listeners[i+1];
+ var arg = generateArg(val, path, args);
+
+ blocks.push('node.addEventListener("', this.listeners[i],
+ '", __bind__(this, ', arg, '), false);\n');
+ }
+ }
+
+ if (this.props)
+ {
+ for (var name in this.props)
+ {
+ var val = this.props[name];
+ var arg = generateArg(val, path, args);
+ blocks.push('node.', name, ' = ', arg, ';\n');
+ }
+ }
+
+ this.generateChildDOM(path, blocks, args);
+ return 1;
+ },
+
+ generateNodePath: function(path, blocks)
+ {
+ blocks.push("var node = __path__(root, o");
+
+ // this will be a sum of integers as a string which will be summed in the eval,
+ // then passed to __path__
+ for (var i = 0; i < path.length; ++i)
+ blocks.push(",", path[i]);
+
+ blocks.push(");\n");
+
+ if (FBTrace.DBG_DOMPLATE)
+ {
+ var nBlocks = 2*path.length + 2;
+ var genTrace = "FBTrace.sysout(\'"+blocks.slice(-nBlocks).join("").replace("\n","")+
+ "\'+'->'+(node?FBL.getElementHTML(node):'null'), node);\n";
+ blocks.push(genTrace);
+ }
+ },
+
+ generateChildDOM: function(path, blocks, args)
+ {
+ path.push(0);
+ for (var i = 0; i < this.children.length; ++i)
+ {
+ var child = this.children[i];
+ if (isTag(child))
+ path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
+ else
+ path[path.length-1] += '+1';
+ }
+ path.pop();
+ },
+
+ /**
+ * We are just hiding from javascript.options.strict. For some reasons it's ok if
+ * we return undefined here.
+ *
+ * @return null or undefined or possibly a context.
+ */
+ getContext: function()
+ {
+ return this.context;
+ }
+};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+DomplateEmbed.prototype = copyObject(DomplateTag.prototype,
+{
+ merge: function(args, oldTag)
+ {
+ this.value = oldTag ? oldTag.value : parseValue(args[0]);
+ this.attrs = oldTag ? oldTag.attrs : {};
+ this.vars = oldTag ? copyArray(oldTag.vars) : [];
+
+ var attrs = args[1];
+ for (var name in attrs)
+ {
+ var val = parseValue(attrs[name]);
+ this.attrs[name] = val;
+ readPartNames(val, this.vars);
+ }
+
+ return creator(this, DomplateEmbed);
+ },
+
+ getVarNames: function(names)
+ {
+ if (this.value instanceof Parts)
+ names.push(this.value.parts[0].name);
+
+ if (this.vars)
+ names.push.apply(names, this.vars);
+ },
+
+ generateMarkup: function(topBlock, topOuts, blocks, info)
+ {
+ this.addCode(topBlock, topOuts, blocks);
+
+ if (FBTrace.DBG_DOMPLATE)
+ var beginBlock = blocks.length;
+
+ blocks.push('__link__(');
+ addParts(this.value, '', blocks, info);
+ blocks.push(', __code__, __out__, {\n');
+
+ var lastName = null;
+ for (var name in this.attrs)
+ {
+ if (lastName)
+ blocks.push(',');
+ lastName = name;
+
+ var val = this.attrs[name];
+ blocks.push('"', name, '":');
+ addParts(val, '', blocks, info);
+ }
+
+ blocks.push('});\n');
+
+ if (FBTrace.DBG_DOMPLATE)
+ {
+ FBTrace.sysout("DomplateEmbed.generateMarkup "+blocks.slice( - blocks.length +
+ beginBlock).join("").replace("\n"," "), {value: this.value, attrs: this.attrs});
+ }
+
+ //this.generateChildMarkup(topBlock, topOuts, blocks, info);
+ },
+
+ generateDOM: function(path, blocks, args) // XXXjjb args not used?
+ {
+ if (FBTrace.DBG_DOMPLATE)
+ var beginBlock = blocks.length;
+
+ var embedName = 'e'+path.embedIndex++;
+
+ this.generateNodePath(path, blocks);
+
+ var valueName = 'd' + path.renderIndex++;
+ var argsName = 'd' + path.renderIndex++;
+ blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');\n');
+
+ if (FBTrace.DBG_DOMPLATE)
+ {
+ FBTrace.sysout("DomplateEmbed.generateDOM "+blocks.slice( - blocks.length +
+ beginBlock).join("").replace("\n"," "), {path: path});
+
+ blocks.push("FBTrace.sysout('__link__ called with node:'+" +
+ "FBL.getElementHTML(node), node);\n");
+ }
+
+ return embedName;
+ }
+});
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+DomplateLoop.prototype = copyObject(DomplateTag.prototype,
+{
+ merge: function(args, oldTag)
+ {
+ this.isLoop = true;
+ this.varName = oldTag ? oldTag.varName : args[0];
+ this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
+ this.vars = [];
+
+ this.children = oldTag ? copyArray(oldTag.children) : [];
+
+ var offset = Math.min(args.length, 2);
+ parseChildren(args, offset, this.vars, this.children);
+
+ return creator(this, DomplateLoop);
+ },
+
+ getVarNames: function(names)
+ {
+ if (this.iter instanceof Parts)
+ names.push(this.iter.parts[0].name);
+
+ DomplateTag.prototype.getVarNames.apply(this, [names]);
+ },
+
+ generateMarkup: function(topBlock, topOuts, blocks, info)
+ {
+ this.addCode(topBlock, topOuts, blocks);
+
+ // We are in a FOR loop and our this.iter property contains
+ // either a simple function name as a string or a Parts object
+ // with only ONE Variables object. There is only one variables object
+ // as the FOR argument can contain only ONE valid function callback
+ // with optional arguments or just one variable. Allowed arguments are
+ // func or $var or $var.sub or $var|func or $var1,$var2|func or $var|func1|func2 or $var1,$var2|func1|func2
+ var iterName;
+ if (this.iter instanceof Parts)
+ {
+ // We have a function with optional aruments or just one variable
+ var part = this.iter.parts[0];
+
+ // Join our function arguments or variables
+ // If the user has supplied multiple variables without a function
+ // this will create an invalid result and we should probably add an
+ // error message here or just take the first variable
+ iterName = part.names.join(",");
+
+ // Nest our functions
+ if (part.format)
+ {
+ for (var i = 0; i < part.format.length; ++i)
+ iterName = part.format[i] + "(" + iterName + ")";
+ }
+ }
+ else
+ {
+ // We have just a simple function name without any arguments
+ iterName = this.iter;
+ }
+
+ blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(',
+ this.varName, ', __out__) {\n');
+ this.generateChildMarkup(topBlock, topOuts, blocks, info);
+ this.addCode(topBlock, topOuts, blocks);
+
+ blocks.push('}]);\n');
+ },
+
+ generateDOM: function(path, blocks, args)
+ {
+ var iterName = 'd'+path.renderIndex++;
+ var counterName = 'i'+path.loopIndex;
+ var loopName = 'l'+path.loopIndex++;
+
+ if (!path.length)
+ path.push(-1, 0);
+
+ var preIndex = path.renderIndex;
+ path.renderIndex = 0;
+
+ var nodeCount = 0;
+
+ var subBlocks = [];
+ var basePath = path[path.length-1];
+ for (var i = 0; i < this.children.length; ++i)
+ {
+ path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
+
+ var child = this.children[i];
+ if (isTag(child))
+ nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
+ else
+ nodeCount += '+1';
+ }
+
+ path[path.length-1] = basePath+'+'+loopName;
+
+ blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(',
+ counterName,',',loopName);
+
+ for (var i = 0; i < path.renderIndex; ++i)
+ blocks.push(',d'+i);
+
+ blocks.push(') {\n');
+ blocks.push(subBlocks.join(""));
+ blocks.push('return ', nodeCount, ';\n');
+ blocks.push('}]);\n');
+
+ path.renderIndex = preIndex;
+
+ return loopName;
+ }
+});
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+function Variables(names, format)
+{
+ this.names = names;
+ this.format = format;
+}
+
+function Parts(parts)
+{
+ this.parts = parts;
+}
+
+// ********************************************************************************************* //
+
+function parseParts(str)
+{
+ // Match $var or $var.sub or $var|func or $var1,$var2|func or $var|func1|func2 or $var1,$var2|func1|func2
+ var re = /\$([_A-Za-z][_A-Za-z0-9.]*(,\$[_A-Za-z][_A-Za-z0-9.]*)*([_A-Za-z0-9.|]*))/g;
+ var index = 0;
+ var parts = [];
+
+ var m;
+ while (m = re.exec(str))
+ {
+ var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
+ if (pre)
+ parts.push(pre);
+
+ var segs = m[1].split("|");
+ var vars = segs[0].split(",$");
+
+ // Assemble the variables object and append to buffer
+ parts.push(new Variables(vars, segs.slice(1)));
+
+ index = re.lastIndex;
+ }
+
+ // No matches found at all so we return the whole string
+ if (!index)
+ return str;
+
+ // If we have data after our last matched index we append it here as the final step
+ var post = str.substr(index);
+ if (post)
+ parts.push(post);
+
+ return new Parts(parts);
+}
+
+function parseValue(val)
+{
+ return typeof(val) == 'string' ? parseParts(val) : val;
+}
+
+function parseChildren(args, offset, vars, children)
+{
+ for (var i = offset; i < args.length; ++i)
+ {
+ var val = parseValue(args[i]);
+ children.push(val);
+ readPartNames(val, vars);
+ }
+}
+
+function readPartNames(val, vars)
+{
+ if (val instanceof Parts)
+ {
+ for (var i = 0; i < val.parts.length; ++i)
+ {
+ var part = val.parts[i];
+ if (part instanceof Variables)
+ vars.push(part.names[0]);
+ }
+ }
+}
+
+function generateArg(val, path, args)
+{
+ if (val instanceof Parts)
+ {
+ var vals = [];
+ for (var i = 0; i < val.parts.length; ++i)
+ {
+ var part = val.parts[i];
+ if (part instanceof Variables)
+ {
+ var varName = 'd'+path.renderIndex++;
+ if (part.format)
+ {
+ for (var j = 0; j < part.format.length; ++j)
+ varName = part.format[j] + '(' + varName + ')';
+ }
+
+ vals.push(varName);
+ }
+ else
+ vals.push('"'+part.replace(/"/g, '\\"')+'"');
+ }
+
+ return vals.join('+');
+ }
+ else
+ {
+ args.push(val);
+ return 's' + path.staticIndex++;
+ }
+}
+
+function addParts(val, delim, block, info, escapeIt)
+{
+ var vals = [];
+ if (val instanceof Parts)
+ {
+ for (var i = 0; i < val.parts.length; ++i)
+ {
+ var part = val.parts[i];
+ if (part instanceof Variables)
+ {
+ var partName = part.names.join(",");
+ if (part.format)
+ {
+ for (var j = 0; j < part.format.length; ++j)
+ partName = part.format[j] + "(" + partName + ")";
+ }
+
+ if (escapeIt)
+ vals.push("__escape__(" + partName + ")");
+ else
+ vals.push(partName);
+ }
+ else
+ vals.push('"'+ part + '"');
+ }
+ }
+ else if (isTag(val))
+ {
+ info.args.push(val);
+ vals.push('s'+info.argIndex++);
+ }
+ else
+ vals.push('"'+ val + '"');
+
+ var parts = vals.join(delim);
+ if (parts)
+ block.push(delim, parts);
+}
+
+function isTag(obj)
+{
+ return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
+}
+
+function creator(tag, cons)
+{
+ var fn = function()
+ {
+ var tag = fn.tag;
+ var cons = fn.cons;
+ var newTag = new cons();
+ return newTag.merge(arguments, tag);
+ };
+
+ fn.tag = tag;
+ fn.cons = cons;
+ extend(fn, Renderer);
+
+ return fn;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+function copyArray(oldArray)
+{
+ var ary = [];
+ if (oldArray)
+ for (var i = 0; i < oldArray.length; ++i)
+ ary.push(oldArray[i]);
+ return ary;
+}
+
+function copyObject(l, r)
+{
+ var m = {};
+ extend(m, l);
+ extend(m, r);
+ return m;
+}
+
+function extend(l, r)
+{
+ for (var n in r)
+ l[n] = r[n];
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+function ArrayIterator(array)
+{
+ var index = -1;
+
+ this.next = function()
+ {
+ if (++index >= array.length)
+ throw StopIteration;
+
+ return array[index];
+ };
+}
+
+function StopIteration() {}
+
+FBL.$break = function()
+{
+ throw StopIteration;
+};
+
+// ********************************************************************************************* //
+
+var Renderer =
+{
+ renderHTML: function(args, outputs, self)
+ {
+ try
+ {
+ var code = [];
+ var markupArgs = [code, this.tag.getContext(), args, outputs];
+ markupArgs.push.apply(markupArgs, this.tag.markupArgs);
+ this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
+ return code.join("");
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_DOMPLATE || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("domplate.renderHTML; EXCEPTION " + e,
+ {exc: e, render: this.tag.renderMarkup.toSource()});
+ }
+ },
+
+ insertRows: function(args, before, self)
+ {
+ if (!args)
+ args = {};
+
+ this.tag.compile();
+
+ var outputs = [];
+ var html = this.renderHTML(args, outputs, self);
+
+ var doc = before.ownerDocument;
+ var table = doc.createElement("table");
+ table.innerHTML = html;
+
+ var tbody = table.firstChild;
+ var parent = before.localName.toLowerCase() == "tr" ? before.parentNode : before;
+ var after = before.localName.toLowerCase() == "tr" ? before.nextSibling : null;
+
+ var firstRow = tbody.firstChild;
+ var lastRow = null;
+ while (tbody.firstChild)
+ {
+ lastRow = tbody.firstChild;
+ if (after)
+ parent.insertBefore(lastRow, after);
+ else
+ parent.appendChild(lastRow);
+ }
+
+ // To save the next poor soul:
+ // In order to properly apply properties and event handlers on elements
+ // constructed by a FOR tag, the tag needs to be able to iterate up and
+ // down the tree. If FOR is the root element, as is the case with
+ // many 'insertRows' calls, it will need to iterator over portions of the
+ // new parent.
+ //
+ // To achieve this end, __path__ defines the -1 operator which allows
+ // parent traversal. When combined with the offset that we calculate
+ // below we are able to iterate over the elements.
+ //
+ // This fails when applied to a non-loop element as non-loop elements
+ // do not generate to proper path to bounce up and down the tree.
+ //
+ var offset = 0;
+ if (this.tag.isLoop)
+ {
+ var node = firstRow.parentNode.firstChild;
+ for (; node && node != firstRow; node = node.nextSibling)
+ ++offset;
+ }
+
+ // strict warning: this.tag.context undefined
+ var domArgs = [firstRow, this.tag.getContext(), offset];
+ domArgs.push.apply(domArgs, this.tag.domArgs);
+ domArgs.push.apply(domArgs, outputs);
+
+ this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
+ return [firstRow, lastRow];
+ },
+
+ insertBefore: function(args, before, self)
+ {
+ return this.insertNode(
+ args, before.ownerDocument,
+ function beforeInserter(frag) {
+ before.parentNode.insertBefore(frag, before);
+ },
+ self);
+ },
+
+ insertAfter: function(args, after, self)
+ {
+ return this.insertNode(
+ args, after.ownerDocument,
+ function(frag) {
+ after.parentNode.insertBefore(frag, after.nextSibling);
+ },
+ self);
+ },
+
+ insertNode: function(args, doc, inserter, self)
+ {
+ if (!args)
+ args = {};
+
+ this.tag.compile();
+
+ var outputs = [];
+ var html = this.renderHTML(args, outputs, self);
+ if (FBTrace.DBG_DOMPLATE)
+ FBTrace.sysout("domplate.insertNode html: "+html+"\n");
+
+ var range = doc.createRange();
+
+ // if doc starts with a Text node, domplate fails because the fragment starts
+ // with a text node. That must be a gecko bug, but let's just workaround it since
+ // we want to switch to innerHTML anyway
+ var aDiv = doc.getElementsByTagName("div").item(0);
+ range.setStartBefore(aDiv);
+
+ // TODO replace with standard innerHTML
+ var frag = range.createContextualFragment(html);
+
+ var root = frag.firstChild;
+ root = inserter(frag) || root;
+
+ var domArgs = [root, this.tag.context, 0];
+ domArgs.push.apply(domArgs, this.tag.domArgs);
+ domArgs.push.apply(domArgs, outputs);
+
+ if (FBTrace.DBG_DOMPLATE)
+ FBTrace.sysout("domplate.insertNode domArgs:", domArgs);
+ this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
+
+ return root;
+ },
+
+ replace: function(args, parent, self)
+ {
+ if (!args)
+ args = {};
+
+ this.tag.compile();
+
+ var outputs = [];
+ var html = this.renderHTML(args, outputs, self);
+
+ var root;
+ if (parent.nodeType == Node.ELEMENT_NODE)
+ {
+ parent.innerHTML = html;
+ root = parent.firstChild;
+ }
+ else
+ {
+ if (!parent || parent.nodeType != Node.DOCUMENT_NODE)
+ parent = document;
+
+ if (!womb || womb.ownerDocument != parent)
+ womb = parent.createElement("div");
+ womb.innerHTML = html;
+
+ root = womb.firstChild;
+ //womb.removeChild(root);
+ }
+
+ var domArgs = [root, this.tag.context, 0];
+ domArgs.push.apply(domArgs, this.tag.domArgs);
+ domArgs.push.apply(domArgs, outputs);
+
+ try
+ {
+ this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("domplate renderDom FAILS " + exc, {exc: exc, renderDOM:
+ this.tag.renderDOM.toSource(), domplate: this, domArgs: domArgs, self: self});
+ }
+
+ var chained = new Error("Domplate.renderDom FAILS: "+exc);
+ chained.cause = {exc: exc, renderDOM: this.tag.renderDOM.toSource(),
+ domplate: this, domArgs: domArgs, self: self};
+
+ throw chained;
+ }
+
+ return root;
+ },
+
+ append: function(args, parent, self)
+ {
+ if (!args)
+ args = {};
+
+ this.tag.compile();
+
+ var outputs = [];
+ var html = this.renderHTML(args, outputs, self);
+ if (FBTrace.DBG_DOMPLATE)
+ FBTrace.sysout("domplate.append html: "+html+"\n");
+
+ if (!womb || womb.ownerDocument != parent.ownerDocument)
+ womb = parent.ownerDocument.createElement("div");
+ womb.innerHTML = html;
+
+ var root = womb.firstChild;
+ while (womb.firstChild)
+ parent.appendChild(womb.firstChild);
+
+ var domArgs = [root, this.tag.context, 0];
+ domArgs.push.apply(domArgs, this.tag.domArgs);
+ domArgs.push.apply(domArgs, outputs);
+
+ if (FBTrace.DBG_DOMPLATE)
+ FBTrace.sysout("domplate.append domArgs:", domArgs);
+
+ this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
+
+ return root;
+ }
+};
+
+// ********************************************************************************************* //
+
+function defineTags()
+{
+ for (var i = 0; i < arguments.length; ++i)
+ {
+ var tagName = arguments[i];
+ var fn = createTagHandler(tagName);
+ var fnName = tagName.toUpperCase();
+
+ // xxxHonza: Domplate is injected into FBL namespace only for backward
+ // compatibility with extensions.
+ Domplate[fnName] = FBL[fnName]= fn;
+ }
+
+ function createTagHandler(tagName)
+ {
+ return function() {
+ var newTag = new Domplate.DomplateTag(tagName);
+ return newTag.merge(arguments);
+ };
+ }
+}
+
+// xxxHonza: Domplate is injected into FBL namespace only for backward
+// compatibility with extensions.
+// We need to mark this as deprecated.
+FBL.TAG = Domplate.TAG;
+FBL.FOR = Domplate.FOR;
+FBL.DomplateTag = Domplate.DomplateTag;
+
+defineTags(
+ "a", "button", "br", "canvas", "col", "colgroup", "div", "fieldset", "form", "h1", "h2",
+ "h3", "hr", "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p",
+ "pre", "select", "b", "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th",
+ "thead", "tr", "tt", "ul", "iframe", "code", "style",
+
+ // HTML5
+ "article", "aside", "audio", "bb", "command", "datagrid", "datalist", "details",
+ "dialog", "embed", "eventsource", "figure", "footer", "keygen", "mark", "meter", "nav",
+ "output", "progress", "ruby", "rp", "rt", "section", "source", "time", "video"
+);
+
+// ********************************************************************************************* //
+// Registration
+
+return Domplate;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/dragdrop.js b/content/firebug/lib/dragdrop.js
index 9c680f8..636f58d 100644
--- a/content/firebug/lib/dragdrop.js
+++ b/content/firebug/lib/dragdrop.js
@@ -1,216 +1,216 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/events",
-],
-function(Obj, Firebug, Events) {
-
-// ********************************************************************************************* //
-
-/**
- *
- * @param {Object} element
- * @param {Object} handle
- * @param {Object} callbacks: onDragStart, onDragOver, onDragLeave, onDrop
- */
-function Tracker(handle, callbacks)
-{
- this.element = handle;
- this.handle = handle;
- this.callbacks = callbacks;
-
- this.cursorStartPos = null;
- this.cursorLastPos = null;
- //this.elementStartPos = null;
- this.dragging = false;
-
- // Start listening
- this.onDragStart = Obj.bind(this.onDragStart, this);
- this.onDragOver = Obj.bind(this.onDragOver, this);
- this.onDrop = Obj.bind(this.onDrop, this);
-
- Events.addEventListener(this.element, "mousedown", this.onDragStart, false);
- this.active = true;
-}
-
-Tracker.prototype =
-{
- onDragStart: function(event)
- {
- if (this.dragging)
- return;
-
- if (this.callbacks.onDragStart)
- this.callbacks.onDragStart(this);
-
- this.dragging = true;
- this.cursorStartPos = absoluteCursorPostion(event);
- this.cursorLastPos = this.cursorStartPos;
- //this.elementStartPos = new Position(
- // parseInt(this.element.style.left),
- // parseInt(this.element.style.top));
-
- Events.addEventListener(this.element.ownerDocument, "mousemove", this.onDragOver, false);
- Events.addEventListener(this.element.ownerDocument, "mouseup", this.onDrop, false);
-
- Events.cancelEvent(event);
- },
-
- onDragOver: function(event)
- {
- if (!this.dragging)
- return;
-
- Events.cancelEvent(event);
-
- var newPos = absoluteCursorPostion(event);
- //newPos = newPos.Add(this.elementStartPos);
- newPos = newPos.Subtract(this.cursorStartPos);
- //newPos = newPos.Bound(lowerBound, upperBound);
- //newPos.Apply(this.element);
-
- // Only fire event if the position has beeb changed.
- if (this.cursorLastPos.x == newPos.x && this.cursorLastPos.y == newPos.y)
- return;
-
- this.cursorLastPos = newPos;
-
- if (this.callbacks.onDragOver != null)
- this.callbacks.onDragOver(newPos, this);
- },
-
- onDrop: function(event)
- {
- if (!this.dragging)
- return;
-
- Events.cancelEvent(event);
-
- this.dragStop();
- },
-
- dragStop: function()
- {
- if (!this.dragging)
- return;
-
- Events.removeEventListener(this.element.ownerDocument, "mousemove", this.onDragOver, false);
- Events.removeEventListener(this.element.ownerDocument, "mouseup", this.onDrop, false);
-
- this.cursorStartPos = null;
- this.cursorLastPos = null;
- //this.elementStartPos = null;
-
- if (this.callbacks.onDrop != null)
- this.callbacks.onDrop(this);
-
- this.dragging = false;
- },
-
- destroy: function()
- {
- Events.removeEventListener(this.element, "mousedown", this.onDragStart, false);
- this.active = false;
-
- if (this.dragging)
- this.dragStop();
- }
-};
-
-// ********************************************************************************************* //
-
-function Position(x, y)
-{
- this.x = x;
- this.y = y;
-
- this.Add = function(val)
- {
- var newPos = new Position(this.x, this.y);
- if (val != null)
- {
- if(!isNaN(val.x))
- newPos.x += val.x;
- if(!isNaN(val.y))
- newPos.y += val.y;
- }
- return newPos;
- };
-
- this.Subtract = function(val)
- {
- var newPos = new Position(this.x, this.y);
- if (val != null)
- {
- if(!isNaN(val.x))
- newPos.x -= val.x;
- if(!isNaN(val.y))
- newPos.y -= val.y;
- }
- return newPos;
- };
-
- this.Bound = function(lower, upper)
- {
- var newPos = this.Max(lower);
- return newPos.Min(upper);
- };
-
- this.Check = function()
- {
- var newPos = new Position(this.x, this.y);
- if (isNaN(newPos.x))
- newPos.x = 0;
-
- if (isNaN(newPos.y))
- newPos.y = 0;
-
- return newPos;
- };
-
- this.Apply = function(element)
- {
- if (typeof(element) == "string")
- element = document.getElementById(element);
-
- if (!element)
- return;
-
- if(!isNaN(this.x))
- element.style.left = this.x + "px";
-
- if(!isNaN(this.y))
- element.style.top = this.y + "px";
- };
-}
-
-// ********************************************************************************************* //
-
-function absoluteCursorPostion(e)
-{
- if (isNaN(window.scrollX))
- {
- return new Position(e.clientX + document.documentElement.scrollLeft
- + document.body.scrollLeft, e.clientY + document.documentElement.scrollTop
- + document.body.scrollTop);
- }
- else
- {
- return new Position(e.clientX + window.scrollX, e.clientY + window.scrollY);
- }
-}
-
-// ********************************************************************************************* //
-
-var DragDrop = {};
-DragDrop.Tracker = Tracker;
-
-// ********************************************************************************************* //
-// Registration in Firebug namespace
-
-return DragDrop;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/events",
+],
+function(Obj, Firebug, Events) {
+
+// ********************************************************************************************* //
+
+/**
+ *
+ * @param {Object} element
+ * @param {Object} handle
+ * @param {Object} callbacks: onDragStart, onDragOver, onDragLeave, onDrop
+ */
+function Tracker(handle, callbacks)
+{
+ this.element = handle;
+ this.handle = handle;
+ this.callbacks = callbacks;
+
+ this.cursorStartPos = null;
+ this.cursorLastPos = null;
+ //this.elementStartPos = null;
+ this.dragging = false;
+
+ // Start listening
+ this.onDragStart = Obj.bind(this.onDragStart, this);
+ this.onDragOver = Obj.bind(this.onDragOver, this);
+ this.onDrop = Obj.bind(this.onDrop, this);
+
+ Events.addEventListener(this.element, "mousedown", this.onDragStart, false);
+ this.active = true;
+}
+
+Tracker.prototype =
+{
+ onDragStart: function(event)
+ {
+ if (this.dragging)
+ return;
+
+ if (this.callbacks.onDragStart)
+ this.callbacks.onDragStart(this);
+
+ this.dragging = true;
+ this.cursorStartPos = absoluteCursorPostion(event);
+ this.cursorLastPos = this.cursorStartPos;
+ //this.elementStartPos = new Position(
+ // parseInt(this.element.style.left),
+ // parseInt(this.element.style.top));
+
+ Events.addEventListener(this.element.ownerDocument, "mousemove", this.onDragOver, false);
+ Events.addEventListener(this.element.ownerDocument, "mouseup", this.onDrop, false);
+
+ Events.cancelEvent(event);
+ },
+
+ onDragOver: function(event)
+ {
+ if (!this.dragging)
+ return;
+
+ Events.cancelEvent(event);
+
+ var newPos = absoluteCursorPostion(event);
+ //newPos = newPos.Add(this.elementStartPos);
+ newPos = newPos.Subtract(this.cursorStartPos);
+ //newPos = newPos.Bound(lowerBound, upperBound);
+ //newPos.Apply(this.element);
+
+ // Only fire event if the position has beeb changed.
+ if (this.cursorLastPos.x == newPos.x && this.cursorLastPos.y == newPos.y)
+ return;
+
+ this.cursorLastPos = newPos;
+
+ if (this.callbacks.onDragOver != null)
+ this.callbacks.onDragOver(newPos, this);
+ },
+
+ onDrop: function(event)
+ {
+ if (!this.dragging)
+ return;
+
+ Events.cancelEvent(event);
+
+ this.dragStop();
+ },
+
+ dragStop: function()
+ {
+ if (!this.dragging)
+ return;
+
+ Events.removeEventListener(this.element.ownerDocument, "mousemove", this.onDragOver, false);
+ Events.removeEventListener(this.element.ownerDocument, "mouseup", this.onDrop, false);
+
+ this.cursorStartPos = null;
+ this.cursorLastPos = null;
+ //this.elementStartPos = null;
+
+ if (this.callbacks.onDrop != null)
+ this.callbacks.onDrop(this);
+
+ this.dragging = false;
+ },
+
+ destroy: function()
+ {
+ Events.removeEventListener(this.element, "mousedown", this.onDragStart, false);
+ this.active = false;
+
+ if (this.dragging)
+ this.dragStop();
+ }
+};
+
+// ********************************************************************************************* //
+
+function Position(x, y)
+{
+ this.x = x;
+ this.y = y;
+
+ this.Add = function(val)
+ {
+ var newPos = new Position(this.x, this.y);
+ if (val != null)
+ {
+ if(!isNaN(val.x))
+ newPos.x += val.x;
+ if(!isNaN(val.y))
+ newPos.y += val.y;
+ }
+ return newPos;
+ };
+
+ this.Subtract = function(val)
+ {
+ var newPos = new Position(this.x, this.y);
+ if (val != null)
+ {
+ if(!isNaN(val.x))
+ newPos.x -= val.x;
+ if(!isNaN(val.y))
+ newPos.y -= val.y;
+ }
+ return newPos;
+ };
+
+ this.Bound = function(lower, upper)
+ {
+ var newPos = this.Max(lower);
+ return newPos.Min(upper);
+ };
+
+ this.Check = function()
+ {
+ var newPos = new Position(this.x, this.y);
+ if (isNaN(newPos.x))
+ newPos.x = 0;
+
+ if (isNaN(newPos.y))
+ newPos.y = 0;
+
+ return newPos;
+ };
+
+ this.Apply = function(element)
+ {
+ if (typeof(element) == "string")
+ element = document.getElementById(element);
+
+ if (!element)
+ return;
+
+ if(!isNaN(this.x))
+ element.style.left = this.x + "px";
+
+ if(!isNaN(this.y))
+ element.style.top = this.y + "px";
+ };
+}
+
+// ********************************************************************************************* //
+
+function absoluteCursorPostion(e)
+{
+ if (isNaN(window.scrollX))
+ {
+ return new Position(e.clientX + document.documentElement.scrollLeft
+ + document.body.scrollLeft, e.clientY + document.documentElement.scrollTop
+ + document.body.scrollTop);
+ }
+ else
+ {
+ return new Position(e.clientX + window.scrollX, e.clientY + window.scrollY);
+ }
+}
+
+// ********************************************************************************************* //
+
+var DragDrop = {};
+DragDrop.Tracker = Tracker;
+
+// ********************************************************************************************* //
+// Registration in Firebug namespace
+
+return DragDrop;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/events.js b/content/firebug/lib/events.js
index d892b3f..8f98bda 100644
--- a/content/firebug/lib/events.js
+++ b/content/firebug/lib/events.js
@@ -1,568 +1,568 @@
-/* See license.txt for terms of usage */
-/*global define:1, Components:1, MouseEvent:1, Window: 1, Firebug:1*/
-
-define([
- "firebug/lib/trace",
- "firebug/lib/xpcom",
- "firebug/lib/wrapper" // dependency will go away with jsd2
-],
-function(FBTrace, Xpcom, Wrapper) {
-"use strict";
-
-// ********************************************************************************************* //
-// Constants
-
-const Cu = Components.utils;
-const Ci = Components.interfaces;
-var elService = Xpcom.CCSV("@mozilla.org/eventlistenerservice;1", "nsIEventListenerService");
-var Events = {};
-
-// ********************************************************************************************* //
-
-Events.dispatch = function(listeners, name, args)
-{
- if (!listeners)
- {
- if (FBTrace.DBG_DISPATCH)
- FBTrace.sysout("Events.dispatch " + name + " without listeners");
-
- return;
- }
-
- try
- {
- var noMethods;
- if (FBTrace.DBG_DISPATCH)
- noMethods = [];
-
- for (var i = 0; i < listeners.length; ++i)
- {
- var listener = listeners[i];
- if (!listener)
- {
- if (FBTrace.DBG_DISPATCH || FBTrace.DBG_ERRORS)
- FBTrace.sysout("Events.dispatch ERROR " + i + " " + name + " to null listener.");
- continue;
- }
-
- if (listener[name])
- {
- try
- {
- listener[name].apply(listener, args);
- }
- catch(exc)
- {
- if (FBTrace.DBG_ERRORS)
- {
- if (exc.stack)
- {
- var stack = exc.stack;
- exc.stack = stack.split('\n');
- }
-
- var culprit = listeners[i] ? listeners[i].dispatchName : null;
- var loc = (exc.fileName ? exc.fileName + ":" + exc.lineNumber : "<unknown>");
- FBTrace.sysout("EXCEPTION in Events.dispatch " +
- (culprit ? culprit + "." : "") + name + ": " + exc + " in " + loc, exc);
- }
- }
- }
- else
- {
- if (FBTrace.DBG_DISPATCH)
- noMethods.push(listener);
- }
- }
-
- if (FBTrace.DBG_DISPATCH)
- FBTrace.sysout("Events.dispatch " + name + " to " + listeners.length + " listeners, " +
- noMethods.length + " had no such method", noMethods);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- {
- if (exc.stack)
- {
- var stack = exc.stack;
- exc.stack = stack.split('\n');
- }
-
- var culprit = listeners[i] ? listeners[i].dispatchName : null;
- FBTrace.sysout("Exception in Events.dispatch " + (culprit ? culprit + "." : "") +
- name + ": " + exc, exc);
- }
- }
-};
-
-Events.dispatch2 = function(listeners, name, args)
-{
- try
- {
- var noMethods;
- if (FBTrace.DBG_DISPATCH)
- noMethods = [];
-
- if (!listeners)
- {
- if (FBTrace.DBG_DISPATCH)
- FBTrace.sysout("dispatch2, no listeners for " + name);
- return;
- }
-
- for (var i = 0; i < listeners.length; ++i)
- {
- var listener = listeners[i];
- if (listener[name])
- {
- var result = listener[name].apply(listener, args);
-
- if (FBTrace.DBG_DISPATCH)
- FBTrace.sysout("dispatch2 " + name + " to #" + i + " of " + listeners.length +
- " listeners, result " + result, {result: result, listener: listeners[i],
- fn: listener[name].toSource()});
-
- if (result)
- return result;
- }
- else
- {
- if (FBTrace.DBG_DISPATCH)
- noMethods.push(listener);
- }
- }
-
- if (FBTrace.DBG_DISPATCH && noMethods.length === listeners.length)
- FBTrace.sysout("Events.dispatch2 " + name + " to " + listeners.length + " listeners, " +
- noMethods.length + " had no such method:", noMethods);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- {
- if (exc.stack)
- exc.stack = exc.stack.split('/n');
-
- FBTrace.sysout("Exception in Events.dispatch2 " + name + " exc: " + exc, exc);
- }
- }
-};
-
-// ********************************************************************************************* //
-// Events
-
-Events.cancelEvent = function(event)
-{
- event.stopPropagation();
- event.preventDefault();
-};
-
-Events.isLeftClick = function(event, allowKeyModifiers)
-{
- return event.button === 0 && (allowKeyModifiers || this.noKeyModifiers(event));
-};
-
-Events.isMiddleClick = function(event, allowKeyModifiers)
-{
- return event.button === 1 && (allowKeyModifiers || this.noKeyModifiers(event));
-};
-
-Events.isRightClick = function(event, allowKeyModifiers)
-{
- return event.button === 2 && (allowKeyModifiers || this.noKeyModifiers(event));
-};
-
-Events.isSingleClick = function(event)
-{
- return event instanceof MouseEvent && event.detail === 1;
-};
-
-Events.isDoubleClick = function(event)
-{
- return event instanceof MouseEvent && event.detail === 2;
-};
-
-Events.noKeyModifiers = function(event)
-{
- return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
-};
-
-Events.isControlClick = function(event)
-{
- return event.button === 0 && this.isControl(event);
-};
-
-Events.isShiftClick = function(event)
-{
- return event.button === 0 && this.isShift(event);
-};
-
-Events.isControl = function(event)
-{
- return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey;
-};
-
-Events.isAlt = function(event)
-{
- return event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey;
-};
-
-Events.isAltClick = function(event)
-{
- return event.button === 0 && this.isAlt(event);
-};
-
-Events.isControlShift = function(event)
-{
- return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey;
-};
-
-Events.isControlAlt = function(event)
-{
- return (event.metaKey || event.ctrlKey) && !event.shiftKey && event.altKey;
-};
-
-Events.isShift = function(event)
-{
- return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey;
-};
-
-// ********************************************************************************************* //
-// DOM Events
-
-const eventTypes =
-{
- composition: [
- "composition",
- "compositionstart",
- "compositionend"
- ],
-
- contextmenu: [
- "contextmenu"
- ],
-
- drag: [
- "dragenter",
- "dragover",
- "dragexit",
- "dragdrop",
- "draggesture"
- ],
-
- focus: [
- "focus",
- "blur"
- ],
-
- form: [
- "submit",
- "reset",
- "change",
- "select",
- "input"
- ],
-
- key: [
- "keydown",
- "keyup",
- "keypress"
- ],
-
- load: [
- "load",
- "beforeunload",
- "unload",
- "abort",
- "error"
- ],
-
- mouse: [
- "mousedown",
- "mouseup",
- "click",
- "dblclick",
- "mouseover",
- "mouseout",
- "mousemove"
- ],
-
- mutation: [
- "DOMSubtreeModified",
- "DOMNodeInserted",
- "DOMNodeRemoved",
- "DOMNodeRemovedFromDocument",
- "DOMNodeInsertedIntoDocument",
- "DOMAttrModified",
- "DOMCharacterDataModified"
- ],
-
- paint: [
- "paint",
- "resize",
- "scroll"
- ],
-
- scroll: [
- "overflow",
- "underflow",
- "overflowchanged"
- ],
-
- text: [
- "text"
- ],
-
- ui: [
- "DOMActivate",
- "DOMFocusIn",
- "DOMFocusOut"
- ],
-
- // xxxHonza: As Simon says, XUL events must die!
- /*xul: [
- "popupshowing",
- "popupshown",
- "popuphiding",
- "popuphidden",
- "close",
- "command",
- "broadcast",
- "commandupdate"
- ],*/
-
- clipboard: [
- "cut",
- "copy",
- "paste"
- ],
-
- touch: [
- "touchstart",
- "touchend",
- "touchmove",
- "touchenter",
- "touchleave",
- "touchcancel"
- ]
-};
-
-Events.getEventFamilies = function()
-{
- var families = [];
- for (var eventFamily in eventTypes)
- families.push(eventFamily);
- return families;
-};
-
-Events.getEventTypes = function(family)
-{
- var types = [];
- for (var eventFamily in eventTypes)
- {
- if (!family || family === eventFamily)
- {
- for (var type in eventTypes[eventFamily])
- types.push(eventTypes[eventFamily][type]);
- }
- }
-
- return types;
-};
-
-Events.isEventFamily = function(eventType)
-{
- return eventTypes.hasOwnProperty(eventType);
-};
-
-Events.getEventFamily = function(eventType)
-{
- if (!this.families)
- {
- this.families = {};
-
- for (var family in eventTypes)
- {
- var types = eventTypes[family];
- for (var i = 0; i < types.length; ++i)
- this.families[types[i]] = family;
- }
- }
-
- return this.families[eventType];
-};
-
-Events.attachAllListeners = function(object, listener)
-{
- for (var family in eventTypes)
- {
- if (family !== "mutation" || Firebug.attachMutationEvents)
- this.attachFamilyListeners(family, object, listener);
- }
-};
-
-Events.detachAllListeners = function(object, listener)
-{
- for (var family in eventTypes)
- {
- if (family !== "mutation" || Firebug.attachMutationEvents)
- this.detachFamilyListeners(family, object, listener);
- }
-};
-
-Events.attachFamilyListeners = function(family, object, listener)
-{
- var types = eventTypes[family];
- for (var i = 0; i < types.length; ++i)
- object.addEventListener(types[i], listener, false);
-};
-
-Events.detachFamilyListeners = function(family, object, listener)
-{
- var types = eventTypes[family];
- for (var i = 0; i < types.length; ++i)
- object.removeEventListener(types[i], listener, false);
-};
-
-// ********************************************************************************************* //
-// Event Listeners (+ support for tracking)
-
-var listeners = [];
-
-Events.addEventListener = function(parent, eventId, listener, capturing)
-{
- if (FBTrace.DBG_EVENTLISTENERS)
- {
- for (var i = 0; i < listeners.length; i++)
- {
- var l = listeners[i];
- if (l.parent === parent && l.eventId === eventId && l.listener === listener &&
- l.capturing === capturing)
- {
- FBTrace.sysout("Events.addEventListener; ERROR already registered!", l);
- return;
- }
- }
- }
-
- parent.addEventListener(eventId, listener, capturing);
-
- if (FBTrace.DBG_EVENTLISTENERS)
- {
- var frames = [];
- for (var frame = Components.stack; frame; frame = frame.caller)
- frames.push(frame.filename + " (" + frame.lineNumber + ")");
-
- frames.shift();
-
- var pid = (parent.location ? parent.location + "" : typeof parent);
-
- listeners.push({
- parentId: pid,
- eventId: eventId,
- capturing: capturing,
- listener: listener,
- stack: frames,
- parent: parent,
- });
- }
-};
-
-Events.removeEventListener = function(parent, eventId, listener, capturing)
-{
- try
- {
- parent.removeEventListener(eventId, listener, capturing);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("events.removeEventListener; (" + eventId + ") " + e, e);
- }
-
- if (FBTrace.DBG_EVENTLISTENERS)
- {
- for (var i = 0; i < listeners.length; i++)
- {
- var l = listeners[i];
- if (l.parent === parent && l.eventId === eventId && l.listener === listener &&
- l.capturing === capturing)
- {
- listeners.splice(i, 1);
- return;
- }
- }
-
- // xxxHonza: it's not necessary to pollute the tracing console with this message.
- /*
- var frames = [];
- for (var frame = Components.stack; frame; frame = frame.caller)
- frames.push(frame.filename + " (" + frame.lineNumber + ")");
-
- frames.shift();
-
- var info = {
- eventId: eventId,
- capturing: capturing,
- listener: listener,
- stack: frames,
- };
-
- FBTrace.sysout("Events.removeEventListener; ERROR not registered!", info);
- */
- }
-};
-
-Events.getEventListenersForTarget = function(target)
-{
- var listeners = elService.getListenerInfoFor(target, {});
- var ret = [];
- for (var i = 0; i < listeners.length; ++i)
- {
- var rawListener = listeners[i];
- var listener = {
- type: rawListener.type,
- capturing: rawListener.capturing,
- allowsUntrusted: rawListener.allowsUntrusted,
- func: null
- };
- if ("listenerObject" in rawListener)
- {
- listener.func = rawListener.listenerObject;
- }
- else
- {
- var debugObject = rawListener.getDebugObject();
- listener.func = (debugObject instanceof Ci.jsdIValue && Wrapper.unwrapIValue(debugObject));
- }
-
- // Skip chrome event listeners.
- if (!listener.func || rawListener.inSystemEventGroup)
- continue;
- var funcGlobal = Cu.getGlobalForObject(listener.func);
- if (!(funcGlobal instanceof Window))
- continue;
- if (funcGlobal.document.nodePrincipal.subsumes(document.nodePrincipal))
- continue;
-
- ret.push(listener);
- }
- return ret;
-};
-
-if (FBTrace.DBG_EVENTLISTENERS && typeof Firebug !== "undefined")
-{
- Firebug.Events = {};
- Firebug.Events.getRegisteredListeners = function()
- {
- return listeners;
- };
-}
-
-// ********************************************************************************************* //
-
-return Events;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+/*global define:1, Components:1, MouseEvent:1, Window: 1, Firebug:1*/
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/xpcom",
+ "firebug/lib/wrapper" // dependency will go away with jsd2
+],
+function(FBTrace, Xpcom, Wrapper) {
+"use strict";
+
+// ********************************************************************************************* //
+// Constants
+
+const Cu = Components.utils;
+const Ci = Components.interfaces;
+var elService = Xpcom.CCSV("@mozilla.org/eventlistenerservice;1", "nsIEventListenerService");
+var Events = {};
+
+// ********************************************************************************************* //
+
+Events.dispatch = function(listeners, name, args)
+{
+ if (!listeners)
+ {
+ if (FBTrace.DBG_DISPATCH)
+ FBTrace.sysout("Events.dispatch " + name + " without listeners");
+
+ return;
+ }
+
+ try
+ {
+ var noMethods;
+ if (FBTrace.DBG_DISPATCH)
+ noMethods = [];
+
+ for (var i = 0; i < listeners.length; ++i)
+ {
+ var listener = listeners[i];
+ if (!listener)
+ {
+ if (FBTrace.DBG_DISPATCH || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Events.dispatch ERROR " + i + " " + name + " to null listener.");
+ continue;
+ }
+
+ if (listener[name])
+ {
+ try
+ {
+ listener[name].apply(listener, args);
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ if (exc.stack)
+ {
+ var stack = exc.stack;
+ exc.stack = stack.split('\n');
+ }
+
+ var culprit = listeners[i] ? listeners[i].dispatchName : null;
+ var loc = (exc.fileName ? exc.fileName + ":" + exc.lineNumber : "<unknown>");
+ FBTrace.sysout("EXCEPTION in Events.dispatch " +
+ (culprit ? culprit + "." : "") + name + ": " + exc + " in " + loc, exc);
+ }
+ }
+ }
+ else
+ {
+ if (FBTrace.DBG_DISPATCH)
+ noMethods.push(listener);
+ }
+ }
+
+ if (FBTrace.DBG_DISPATCH)
+ FBTrace.sysout("Events.dispatch " + name + " to " + listeners.length + " listeners, " +
+ noMethods.length + " had no such method", noMethods);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ if (exc.stack)
+ {
+ var stack = exc.stack;
+ exc.stack = stack.split('\n');
+ }
+
+ var culprit = listeners[i] ? listeners[i].dispatchName : null;
+ FBTrace.sysout("Exception in Events.dispatch " + (culprit ? culprit + "." : "") +
+ name + ": " + exc, exc);
+ }
+ }
+};
+
+Events.dispatch2 = function(listeners, name, args)
+{
+ try
+ {
+ var noMethods;
+ if (FBTrace.DBG_DISPATCH)
+ noMethods = [];
+
+ if (!listeners)
+ {
+ if (FBTrace.DBG_DISPATCH)
+ FBTrace.sysout("dispatch2, no listeners for " + name);
+ return;
+ }
+
+ for (var i = 0; i < listeners.length; ++i)
+ {
+ var listener = listeners[i];
+ if (listener[name])
+ {
+ var result = listener[name].apply(listener, args);
+
+ if (FBTrace.DBG_DISPATCH)
+ FBTrace.sysout("dispatch2 " + name + " to #" + i + " of " + listeners.length +
+ " listeners, result " + result, {result: result, listener: listeners[i],
+ fn: listener[name].toSource()});
+
+ if (result)
+ return result;
+ }
+ else
+ {
+ if (FBTrace.DBG_DISPATCH)
+ noMethods.push(listener);
+ }
+ }
+
+ if (FBTrace.DBG_DISPATCH && noMethods.length === listeners.length)
+ FBTrace.sysout("Events.dispatch2 " + name + " to " + listeners.length + " listeners, " +
+ noMethods.length + " had no such method:", noMethods);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ if (exc.stack)
+ exc.stack = exc.stack.split('/n');
+
+ FBTrace.sysout("Exception in Events.dispatch2 " + name + " exc: " + exc, exc);
+ }
+ }
+};
+
+// ********************************************************************************************* //
+// Events
+
+Events.cancelEvent = function(event)
+{
+ event.stopPropagation();
+ event.preventDefault();
+};
+
+Events.isLeftClick = function(event, allowKeyModifiers)
+{
+ return event.button === 0 && (allowKeyModifiers || this.noKeyModifiers(event));
+};
+
+Events.isMiddleClick = function(event, allowKeyModifiers)
+{
+ return event.button === 1 && (allowKeyModifiers || this.noKeyModifiers(event));
+};
+
+Events.isRightClick = function(event, allowKeyModifiers)
+{
+ return event.button === 2 && (allowKeyModifiers || this.noKeyModifiers(event));
+};
+
+Events.isSingleClick = function(event)
+{
+ return event instanceof MouseEvent && event.detail === 1;
+};
+
+Events.isDoubleClick = function(event)
+{
+ return event instanceof MouseEvent && event.detail === 2;
+};
+
+Events.noKeyModifiers = function(event)
+{
+ return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
+};
+
+Events.isControlClick = function(event)
+{
+ return event.button === 0 && this.isControl(event);
+};
+
+Events.isShiftClick = function(event)
+{
+ return event.button === 0 && this.isShift(event);
+};
+
+Events.isControl = function(event)
+{
+ return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey;
+};
+
+Events.isAlt = function(event)
+{
+ return event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey;
+};
+
+Events.isAltClick = function(event)
+{
+ return event.button === 0 && this.isAlt(event);
+};
+
+Events.isControlShift = function(event)
+{
+ return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey;
+};
+
+Events.isControlAlt = function(event)
+{
+ return (event.metaKey || event.ctrlKey) && !event.shiftKey && event.altKey;
+};
+
+Events.isShift = function(event)
+{
+ return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey;
+};
+
+// ********************************************************************************************* //
+// DOM Events
+
+const eventTypes =
+{
+ composition: [
+ "composition",
+ "compositionstart",
+ "compositionend"
+ ],
+
+ contextmenu: [
+ "contextmenu"
+ ],
+
+ drag: [
+ "dragenter",
+ "dragover",
+ "dragexit",
+ "dragdrop",
+ "draggesture"
+ ],
+
+ focus: [
+ "focus",
+ "blur"
+ ],
+
+ form: [
+ "submit",
+ "reset",
+ "change",
+ "select",
+ "input"
+ ],
+
+ key: [
+ "keydown",
+ "keyup",
+ "keypress"
+ ],
+
+ load: [
+ "load",
+ "beforeunload",
+ "unload",
+ "abort",
+ "error"
+ ],
+
+ mouse: [
+ "mousedown",
+ "mouseup",
+ "click",
+ "dblclick",
+ "mouseover",
+ "mouseout",
+ "mousemove"
+ ],
+
+ mutation: [
+ "DOMSubtreeModified",
+ "DOMNodeInserted",
+ "DOMNodeRemoved",
+ "DOMNodeRemovedFromDocument",
+ "DOMNodeInsertedIntoDocument",
+ "DOMAttrModified",
+ "DOMCharacterDataModified"
+ ],
+
+ paint: [
+ "paint",
+ "resize",
+ "scroll"
+ ],
+
+ scroll: [
+ "overflow",
+ "underflow",
+ "overflowchanged"
+ ],
+
+ text: [
+ "text"
+ ],
+
+ ui: [
+ "DOMActivate",
+ "DOMFocusIn",
+ "DOMFocusOut"
+ ],
+
+ // xxxHonza: As Simon says, XUL events must die!
+ /*xul: [
+ "popupshowing",
+ "popupshown",
+ "popuphiding",
+ "popuphidden",
+ "close",
+ "command",
+ "broadcast",
+ "commandupdate"
+ ],*/
+
+ clipboard: [
+ "cut",
+ "copy",
+ "paste"
+ ],
+
+ touch: [
+ "touchstart",
+ "touchend",
+ "touchmove",
+ "touchenter",
+ "touchleave",
+ "touchcancel"
+ ]
+};
+
+Events.getEventFamilies = function()
+{
+ var families = [];
+ for (var eventFamily in eventTypes)
+ families.push(eventFamily);
+ return families;
+};
+
+Events.getEventTypes = function(family)
+{
+ var types = [];
+ for (var eventFamily in eventTypes)
+ {
+ if (!family || family === eventFamily)
+ {
+ for (var type in eventTypes[eventFamily])
+ types.push(eventTypes[eventFamily][type]);
+ }
+ }
+
+ return types;
+};
+
+Events.isEventFamily = function(eventType)
+{
+ return eventTypes.hasOwnProperty(eventType);
+};
+
+Events.getEventFamily = function(eventType)
+{
+ if (!this.families)
+ {
+ this.families = {};
+
+ for (var family in eventTypes)
+ {
+ var types = eventTypes[family];
+ for (var i = 0; i < types.length; ++i)
+ this.families[types[i]] = family;
+ }
+ }
+
+ return this.families[eventType];
+};
+
+Events.attachAllListeners = function(object, listener)
+{
+ for (var family in eventTypes)
+ {
+ if (family !== "mutation" || Firebug.attachMutationEvents)
+ this.attachFamilyListeners(family, object, listener);
+ }
+};
+
+Events.detachAllListeners = function(object, listener)
+{
+ for (var family in eventTypes)
+ {
+ if (family !== "mutation" || Firebug.attachMutationEvents)
+ this.detachFamilyListeners(family, object, listener);
+ }
+};
+
+Events.attachFamilyListeners = function(family, object, listener)
+{
+ var types = eventTypes[family];
+ for (var i = 0; i < types.length; ++i)
+ object.addEventListener(types[i], listener, false);
+};
+
+Events.detachFamilyListeners = function(family, object, listener)
+{
+ var types = eventTypes[family];
+ for (var i = 0; i < types.length; ++i)
+ object.removeEventListener(types[i], listener, false);
+};
+
+// ********************************************************************************************* //
+// Event Listeners (+ support for tracking)
+
+var listeners = [];
+
+Events.addEventListener = function(parent, eventId, listener, capturing)
+{
+ if (FBTrace.DBG_EVENTLISTENERS)
+ {
+ for (var i = 0; i < listeners.length; i++)
+ {
+ var l = listeners[i];
+ if (l.parent === parent && l.eventId === eventId && l.listener === listener &&
+ l.capturing === capturing)
+ {
+ FBTrace.sysout("Events.addEventListener; ERROR already registered!", l);
+ return;
+ }
+ }
+ }
+
+ parent.addEventListener(eventId, listener, capturing);
+
+ if (FBTrace.DBG_EVENTLISTENERS)
+ {
+ var frames = [];
+ for (var frame = Components.stack; frame; frame = frame.caller)
+ frames.push(frame.filename + " (" + frame.lineNumber + ")");
+
+ frames.shift();
+
+ var pid = (parent.location ? parent.location + "" : typeof parent);
+
+ listeners.push({
+ parentId: pid,
+ eventId: eventId,
+ capturing: capturing,
+ listener: listener,
+ stack: frames,
+ parent: parent,
+ });
+ }
+};
+
+Events.removeEventListener = function(parent, eventId, listener, capturing)
+{
+ try
+ {
+ parent.removeEventListener(eventId, listener, capturing);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("events.removeEventListener; (" + eventId + ") " + e, e);
+ }
+
+ if (FBTrace.DBG_EVENTLISTENERS)
+ {
+ for (var i = 0; i < listeners.length; i++)
+ {
+ var l = listeners[i];
+ if (l.parent === parent && l.eventId === eventId && l.listener === listener &&
+ l.capturing === capturing)
+ {
+ listeners.splice(i, 1);
+ return;
+ }
+ }
+
+ // xxxHonza: it's not necessary to pollute the tracing console with this message.
+ /*
+ var frames = [];
+ for (var frame = Components.stack; frame; frame = frame.caller)
+ frames.push(frame.filename + " (" + frame.lineNumber + ")");
+
+ frames.shift();
+
+ var info = {
+ eventId: eventId,
+ capturing: capturing,
+ listener: listener,
+ stack: frames,
+ };
+
+ FBTrace.sysout("Events.removeEventListener; ERROR not registered!", info);
+ */
+ }
+};
+
+Events.getEventListenersForTarget = function(target)
+{
+ var listeners = elService.getListenerInfoFor(target, {});
+ var ret = [];
+ for (var i = 0; i < listeners.length; ++i)
+ {
+ var rawListener = listeners[i];
+ var listener = {
+ type: rawListener.type,
+ capturing: rawListener.capturing,
+ allowsUntrusted: rawListener.allowsUntrusted,
+ func: null
+ };
+ if ("listenerObject" in rawListener)
+ {
+ listener.func = rawListener.listenerObject;
+ }
+ else
+ {
+ var debugObject = rawListener.getDebugObject();
+ listener.func = (debugObject instanceof Ci.jsdIValue && Wrapper.unwrapIValue(debugObject));
+ }
+
+ // Skip chrome event listeners.
+ if (!listener.func || rawListener.inSystemEventGroup)
+ continue;
+ var funcGlobal = Cu.getGlobalForObject(listener.func);
+ if (!(funcGlobal instanceof Window))
+ continue;
+ if (funcGlobal.document.nodePrincipal.subsumes(document.nodePrincipal))
+ continue;
+
+ ret.push(listener);
+ }
+ return ret;
+};
+
+if (FBTrace.DBG_EVENTLISTENERS && typeof Firebug !== "undefined")
+{
+ Firebug.Events = {};
+ Firebug.Events.getRegisteredListeners = function()
+ {
+ return listeners;
+ };
+}
+
+// ********************************************************************************************* //
+
+return Events;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/fonts.js b/content/firebug/lib/fonts.js
index 0615e60..474b7e4 100644
--- a/content/firebug/lib/fonts.js
+++ b/content/firebug/lib/fonts.js
@@ -1,116 +1,116 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/dom",
- "firebug/lib/url"
-],
-function(FBTrace, Dom, Url) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Fonts = {};
-
-// ********************************************************************************************* //
-// Fonts
-
-/**
- * Retrieves all fonts used inside a node
- * @node: Node to return the fonts for
- * @return Array of fonts
- */
-Fonts.getFonts = function(node)
-{
- if (!Dom.domUtils)
- return [];
-
- var range = node.ownerDocument.createRange();
- try
- {
- range.selectNode(node);
- }
- catch(err)
- {
- if (FBTrace.DBG_FONTS || FBTrace.DBG_ERRORS)
- FBTrace.sysout("Fonts.getFonts; node couldn't be selected", err);
- }
-
- var fontFaces = Dom.domUtils.getUsedFontFaces(range);
- var fonts = [];
- for (var i=0; i<fontFaces.length; i++)
- fonts.push(fontFaces.item(i));
-
- if (FBTrace.DBG_FONTS)
- FBTrace.sysout("Fonts.getFonts; used fonts", fonts);
-
- return fonts;
-};
-
-/**
- * Retrieves all fonts used in a context, cached so that the first use is
- * potentially slow (several seconds on the HTML5 spec), and later ones are
- * instant but not up-to-date.
- * @context: Context to return the fonts for
- * @return Array of fonts
- */
-Fonts.getFontsUsedInContext = function(context)
-{
- if (context.fontCache)
- return context.fontCache;
-
- var fonts = [];
- if (context.window)
- {
- var doc = context.window.document;
- if (doc)
- fonts = Fonts.getFonts(doc.documentElement);
- }
- context.fontCache = fonts;
- return fonts;
-};
-
-/**
- * Retrieves the information about a font
- * @context: Context of the font
- * @win: Window the font is used in
- * @identifier: Either a URL in case of a web font or the font name
- * @return Object with information about the font
- */
-Fonts.getFontInfo = function(context, win, identifier)
-{
- if (!context)
- context = Firebug.currentContext;
-
- var doc = win ? win.document : context.window.document;
- if (!doc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("lib.getFontInfo; NO DOCUMENT", {win:win, context:context});
- return false;
- }
-
- var fonts = Fonts.getFonts(doc.documentElement);
-
- if (FBTrace.DBG_FONTS)
- FBTrace.sysout("Fonts.getFontInfo;", {fonts:fonts, identifier: identifier});
-
- for (var i=0; i<fonts.length; i++)
- {
- if (identifier == fonts[i].URI ||
- identifier.toLowerCase() == fonts[i].CSSFamilyName.toLowerCase() ||
- identifier.toLowerCase() == fonts[i].name.toLowerCase())
- {
- return fonts[i];
- }
- }
-
- return false;
-};
-
-// ********************************************************************************************* //
-
-return Fonts;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/dom",
+ "firebug/lib/url"
+],
+function(FBTrace, Dom, Url) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Fonts = {};
+
+// ********************************************************************************************* //
+// Fonts
+
+/**
+ * Retrieves all fonts used inside a node
+ * @node: Node to return the fonts for
+ * @return Array of fonts
+ */
+Fonts.getFonts = function(node)
+{
+ if (!Dom.domUtils)
+ return [];
+
+ var range = node.ownerDocument.createRange();
+ try
+ {
+ range.selectNode(node);
+ }
+ catch(err)
+ {
+ if (FBTrace.DBG_FONTS || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Fonts.getFonts; node couldn't be selected", err);
+ }
+
+ var fontFaces = Dom.domUtils.getUsedFontFaces(range);
+ var fonts = [];
+ for (var i=0; i<fontFaces.length; i++)
+ fonts.push(fontFaces.item(i));
+
+ if (FBTrace.DBG_FONTS)
+ FBTrace.sysout("Fonts.getFonts; used fonts", fonts);
+
+ return fonts;
+};
+
+/**
+ * Retrieves all fonts used in a context, cached so that the first use is
+ * potentially slow (several seconds on the HTML5 spec), and later ones are
+ * instant but not up-to-date.
+ * @context: Context to return the fonts for
+ * @return Array of fonts
+ */
+Fonts.getFontsUsedInContext = function(context)
+{
+ if (context.fontCache)
+ return context.fontCache;
+
+ var fonts = [];
+ if (context.window)
+ {
+ var doc = context.window.document;
+ if (doc)
+ fonts = Fonts.getFonts(doc.documentElement);
+ }
+ context.fontCache = fonts;
+ return fonts;
+};
+
+/**
+ * Retrieves the information about a font
+ * @context: Context of the font
+ * @win: Window the font is used in
+ * @identifier: Either a URL in case of a web font or the font name
+ * @return Object with information about the font
+ */
+Fonts.getFontInfo = function(context, win, identifier)
+{
+ if (!context)
+ context = Firebug.currentContext;
+
+ var doc = win ? win.document : context.window.document;
+ if (!doc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("lib.getFontInfo; NO DOCUMENT", {win:win, context:context});
+ return false;
+ }
+
+ var fonts = Fonts.getFonts(doc.documentElement);
+
+ if (FBTrace.DBG_FONTS)
+ FBTrace.sysout("Fonts.getFontInfo;", {fonts:fonts, identifier: identifier});
+
+ for (var i=0; i<fonts.length; i++)
+ {
+ if (identifier == fonts[i].URI ||
+ identifier.toLowerCase() == fonts[i].CSSFamilyName.toLowerCase() ||
+ identifier.toLowerCase() == fonts[i].name.toLowerCase())
+ {
+ return fonts[i];
+ }
+ }
+
+ return false;
+};
+
+// ********************************************************************************************* //
+
+return Fonts;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/http.js b/content/firebug/lib/http.js
index 4715f0a..0e1ecf2 100644
--- a/content/firebug/lib/http.js
+++ b/content/firebug/lib/http.js
@@ -1,534 +1,534 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/xpcom",
- "firebug/lib/trace",
- "firebug/lib/deprecated",
- "firebug/js/stackFrame",
- "firebug/lib/string"
-],
-function(Xpcom, FBTrace, Deprecated, StackFrame, Str) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-
-const NS_SEEK_SET = Ci.nsISeekableStream.NS_SEEK_SET;
-const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
-
-var Http = {};
-
-// ********************************************************************************************* //
-// Module Implementation
-
-Http.readFromStream = function(stream, charset, noClose)
-{
- // Causes a memory leak (see https://bugzilla.mozilla.org/show_bug.cgi?id=699801)
- //var sis = Cc["@mozilla.org/binaryinputstream;1"].createInstance(Ci.nsIBinaryInputStream);
- //sis.setInputStream(stream);
-
- var sis = Cc["@mozilla.org/scriptableinputstream;1"].
- createInstance(Ci.nsIScriptableInputStream);
- sis.init(stream);
-
- var segments = [];
- for (var count = stream.available(); count; count = stream.available())
- segments.push(sis.readBytes(count));
-
- if (!noClose)
- sis.close();
-
- var text = segments.join("");
-
- try
- {
- return Str.convertToUnicode(text, charset);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("http.readFromStream EXCEPTION charset: " + charset, err);
- }
-
- return text;
-};
-
-Http.readPostTextFromPage = function(url, context)
-{
- if (url == context.browser.contentWindow.location.href)
- {
- try
- {
- var webNav = context.browser.webNavigation;
- var descriptor = (webNav instanceof Ci.nsIWebPageDescriptor) ?
- webNav.currentDescriptor : null;
-
- if (!(descriptor instanceof Ci.nsISHEntry))
- return;
-
- var entry = descriptor;
- if (entry && entry.postData)
- {
- if (!(entry.postData instanceof Ci.nsISeekableStream))
- return;
-
- var postStream = entry.postData;
- postStream.seek(NS_SEEK_SET, 0);
-
- var charset = context.window.document.characterSet;
- return Http.readFromStream(postStream, charset, true);
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("http.readPostText FAILS, url:"+url, exc);
- }
- }
-};
-
-Http.getResource = function(aURL)
-{
- try
- {
- var channel = ioService.newChannel(aURL, null, null);
- var input = channel.open();
-
- return Http.readFromStream(input);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("lib.getResource FAILS for \'"+aURL+"\'", e);
- }
-};
-
-/**
- * Returns a posted data for specified request object. The return value might contain
- * headers (if request.uploadStreamHasHeaders is set to true). You can remove these
- * headers using {@link Http.removeHeadersFromPostText}
- *
- * @param {Object} request The request object
- * @param {Object} context Current Firebug context (to get charset of the current document)
- */
-Http.readPostTextFromRequest = function(request, context)
-{
- try
- {
- var is = (request instanceof Ci.nsIUploadChannel) ? request.uploadStream : null;
- if (is)
- {
- if (!(is instanceof Ci.nsISeekableStream))
- return;
-
- var ss = is;
- var prevOffset;
- if (ss)
- {
- prevOffset = ss.tell();
- ss.seek(NS_SEEK_SET, 0);
- }
-
- // Read data from the stream..
- var charset = (context && context.window) ? context.window.document.characterSet : null;
- var text = Http.readFromStream(is, charset, true);
-
- // Seek locks the file, so seek to the beginning only if necko hasn't read it yet,
- // since necko doesn't seek to 0 before reading (at least not till 459384 is fixed).
- if (ss && prevOffset == 0)
- ss.seek(NS_SEEK_SET, 0);
-
- return text;
- }
- }
- catch(exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("http.readPostTextFromRequest FAILS ", exc);
- }
-
- return null;
-};
-
-/**
- * Remove headers from post body, https://bugzilla.mozilla.org/show_bug.cgi?id=649338
- *
- * @param {Object} request Channel implementing nsIUploadChannel2
- * @param {Object} text Extracted text (can include headers at the beginning).
- */
-Http.removeHeadersFromPostText = function(request, text)
-{
- if (!text)
- return text;
-
- if (typeof(Ci.nsIUploadChannel2) == "undefined")
- return text;
-
- if (!(request instanceof Ci.nsIUploadChannel2))
- return text;
-
- if (!request.uploadStreamHasHeaders)
- return text;
-
- var headerSeparator = "\r\n\r\n";
- var index = text.indexOf(headerSeparator);
- if (index == -1)
- return text;
-
- return text.substring(index + headerSeparator.length);
-};
-
-/**
- * Returns an array of headers from posted data (appended by Firefox)
- *
- * @param {Object} request Channel implementing nsIUploadChannel2
- * @param {Object} text Posted data from the channel object.
- */
-Http.getHeadersFromPostText = function(request, text)
-{
- var headers = [];
- if (!text)
- return headers;
-
- if (typeof(Ci.nsIUploadChannel2) == "undefined")
- return headers;
-
- if (!(request instanceof Ci.nsIUploadChannel2))
- return headers;
-
- if (!request.uploadStreamHasHeaders)
- return headers;
-
- var headerSeparator = "\r\n\r\n";
- var index = text.indexOf(headerSeparator);
- if (index == -1)
- return headers;
-
- var text = text.substring(0, index);
- var lines = Str.splitLines(text);
-
- for (var i=0; i<lines.length; i++)
- {
- var header = lines[i].split(":");
- if (header.length != 2)
- continue;
-
- headers.push({
- name: Str.trim(header[0]),
- value: Str.trim(header[1]),
- });
- }
-
- return headers;
-};
-
-Http.getInputStreamFromString = function(dataString)
-{
- var stringStream = Cc["@mozilla.org/io/string-input-stream;1"].
- createInstance(Ci.nsIStringInputStream);
-
- if ("data" in stringStream) // Gecko 1.9 or newer
- stringStream.data = dataString;
- else // 1.8 or older
- stringStream.setData(dataString, dataString.length);
-
- return stringStream;
-};
-
-Http.getWindowForRequest = function(request)
-{
- var loadContext = Http.getRequestLoadContext(request);
- try
- {
- if (loadContext)
- return loadContext.associatedWindow;
- }
- catch (ex)
- {
- }
-
- return null;
-};
-
-Http.getRequestLoadContext = function(request)
-{
- try
- {
- if (request && request.notificationCallbacks)
- {
- StackFrame.suspendShowStackTrace();
- return request.notificationCallbacks.getInterface(Ci.nsILoadContext);
- }
- }
- catch (exc)
- {
- }
- finally
- {
- StackFrame.resumeShowStackTrace();
- }
-
- try
- {
- if (request && request.loadGroup && request.loadGroup.notificationCallbacks)
- {
- StackFrame.suspendShowStackTrace();
- return request.loadGroup.notificationCallbacks.getInterface(Ci.nsILoadContext);
- }
- }
- catch (exc)
- {
- }
- finally
- {
- StackFrame.resumeShowStackTrace();
- }
-
- return null;
-};
-
-Http.getRequestWebProgress = Deprecated.deprecated("Use getRequestLoadContext function",
- Http.getRequestLoadContext);
-
-// ********************************************************************************************* //
-// HTTP Channel Fields
-
-Http.safeGetRequestName = function(request)
-{
- try
- {
- return request.name;
- }
- catch (exc)
- {
- }
-
- return null;
-};
-
-Http.safeGetURI = function(browser)
-{
- try
- {
- return browser.currentURI;
- }
- catch (exc)
- {
- }
-
- return null;
-};
-
-Http.safeGetContentType = function(request)
-{
- try
- {
- return new String(request.contentType).toLowerCase();
- }
- catch (err)
- {
- }
-
- return null;
-};
-
-Http.safeGetXHRResponseText = function(xhr)
-{
- try
- {
- return xhr.responseText;
- }
- catch (err)
- {
- }
-
- return null;
-};
-
-// ********************************************************************************************* //
-// IP Adress and port number (Requires Gecko 5).
-
-Http.safeGetLocalAddress = function(request)
-{
- try
- {
- if (request instanceof Ci.nsIHttpChannelInternal)
- return request.localAddress;
- }
- catch (err)
- {
- }
- return null;
-};
-
-Http.safeGetLocalPort = function(request)
-{
- try
- {
- if (request instanceof Ci.nsIHttpChannelInternal)
- return request.localPort;
- }
- catch (err)
- {
- }
- return null;
-};
-
-Http.safeGetRemoteAddress = function(request)
-{
- try
- {
- if (request instanceof Ci.nsIHttpChannelInternal)
- return request.remoteAddress;
- }
- catch (err)
- {
- }
- return null;
-};
-
-Http.safeGetRemotePort = function(request)
-{
- try
- {
- if (request instanceof Ci.nsIHttpChannelInternal)
- return request.remotePort;
- }
- catch (err)
- {
- }
- return null;
-};
-
-// ********************************************************************************************* //
-// XHR
-
-Http.isXHR = function(request)
-{
- try
- {
- var callbacks = request.notificationCallbacks;
- StackFrame.suspendShowStackTrace();
- var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null;
- return (xhrRequest != null);
- }
- catch (exc)
- {
- }
- finally
- {
- StackFrame.resumeShowStackTrace();
- }
-
- return false;
-};
-
-// ********************************************************************************************* //
-// Conversions
-
-Http.convertToUnicode = Deprecated.deprecated("Function moved to 'firebug/lib/string' module",
- Str.convertToUnicode);
-
-Http.convertFromUnicode = Deprecated.deprecated("Function moved to 'firebug/lib/string' module",
- Str.convertFromUnicode);
-
-// ********************************************************************************************* //
-// Network Tracing
-
-Http.getStateDescription = function(flag)
-{
- var state = [];
- var nsIWebProgressListener = Ci.nsIWebProgressListener;
- if (flag & nsIWebProgressListener.STATE_START) state.push("STATE_START");
- else if (flag & nsIWebProgressListener.STATE_REDIRECTING) state.push("STATE_REDIRECTING");
- else if (flag & nsIWebProgressListener.STATE_TRANSFERRING) state.push("STATE_TRANSFERRING");
- else if (flag & nsIWebProgressListener.STATE_NEGOTIATING) state.push("STATE_NEGOTIATING");
- else if (flag & nsIWebProgressListener.STATE_STOP) state.push("STATE_STOP");
-
- if (flag & nsIWebProgressListener.STATE_IS_REQUEST) state.push("STATE_IS_REQUEST");
- if (flag & nsIWebProgressListener.STATE_IS_DOCUMENT) state.push("STATE_IS_DOCUMENT");
- if (flag & nsIWebProgressListener.STATE_IS_NETWORK) state.push("STATE_IS_NETWORK");
- if (flag & nsIWebProgressListener.STATE_IS_WINDOW) state.push("STATE_IS_WINDOW");
- if (flag & nsIWebProgressListener.STATE_RESTORING) state.push("STATE_RESTORING");
- if (flag & nsIWebProgressListener.STATE_IS_INSECURE) state.push("STATE_IS_INSECURE");
- if (flag & nsIWebProgressListener.STATE_IS_BROKEN) state.push("STATE_IS_BROKEN");
- if (flag & nsIWebProgressListener.STATE_IS_SECURE) state.push("STATE_IS_SECURE");
- if (flag & nsIWebProgressListener.STATE_SECURE_HIGH) state.push("STATE_SECURE_HIGH");
- if (flag & nsIWebProgressListener.STATE_SECURE_MED) state.push("STATE_SECURE_MED");
- if (flag & nsIWebProgressListener.STATE_SECURE_LOW) state.push("STATE_SECURE_LOW");
-
- return state.join(", ");
-};
-
-Http.getStatusDescription = function(status)
-{
- var nsISocketTransport = Ci.nsISocketTransport;
- var nsITransport = Ci.nsITransport;
-
- if (status == nsISocketTransport.STATUS_RESOLVING) return "STATUS_RESOLVING";
- if (status == nsISocketTransport.STATUS_CONNECTING_TO) return "STATUS_CONNECTING_TO";
- if (status == nsISocketTransport.STATUS_CONNECTED_TO) return "STATUS_CONNECTED_TO";
- if (status == nsISocketTransport.STATUS_SENDING_TO) return "STATUS_SENDING_TO";
- if (status == nsISocketTransport.STATUS_WAITING_FOR) return "STATUS_WAITING_FOR";
- if (status == nsISocketTransport.STATUS_RECEIVING_FROM) return "STATUS_RECEIVING_FROM";
- if (status == nsITransport.STATUS_READING) return "STATUS_READING";
- if (status == nsITransport.STATUS_WRITING) return "STATUS_WRITING";
-};
-
-Http.getLoadFlagsDescription = function(loadFlags)
-{
- var flags = [];
- var nsIChannel = Ci.nsIChannel;
- var nsICachingChannel = Ci.nsICachingChannel;
-
- if (loadFlags & nsIChannel.LOAD_DOCUMENT_URI) flags.push("LOAD_DOCUMENT_URI");
- if (loadFlags & nsIChannel.LOAD_RETARGETED_DOCUMENT_URI) flags.push("LOAD_RETARGETED_DOCUMENT_URI");
- if (loadFlags & nsIChannel.LOAD_REPLACE) flags.push("LOAD_REPLACE");
- if (loadFlags & nsIChannel.LOAD_INITIAL_DOCUMENT_URI) flags.push("LOAD_INITIAL_DOCUMENT_URI");
- if (loadFlags & nsIChannel.LOAD_TARGETED) flags.push("LOAD_TARGETED");
- if (loadFlags & nsIChannel.LOAD_CALL_CONTENT_SNIFFERS) flags.push("LOAD_CALL_CONTENT_SNIFFERS");
- if (loadFlags & nsICachingChannel.LOAD_NO_NETWORK_IO) flags.push("LOAD_NO_NETWORK_IO");
- if (loadFlags & nsICachingChannel.LOAD_CHECK_OFFLINE_CACHE) flags.push("LOAD_CHECK_OFFLINE_CACHE");
- if (loadFlags & nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE) flags.push("LOAD_BYPASS_LOCAL_CACHE");
- if (loadFlags & nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE_IF_BUSY) flags.push("LOAD_BYPASS_LOCAL_CACHE_IF_BUSY");
- if (loadFlags & nsICachingChannel.LOAD_ONLY_FROM_CACHE) flags.push("LOAD_ONLY_FROM_CACHE");
- if (loadFlags & nsICachingChannel.LOAD_ONLY_IF_MODIFIED) flags.push("LOAD_ONLY_IF_MODIFIED");
-
- return flags.join(", ");
-};
-
-// ********************************************************************************************* //
-
-Http.BaseProgressListener =
-{
- QueryInterface : function(iid)
- {
- if (iid.equals(Ci.nsIWebProgressListener) ||
- iid.equals(Ci.nsISupportsWeakReference) ||
- iid.equals(Ci.nsISupports))
- {
- return this;
- }
-
- throw Components.results.NS_NOINTERFACE;
- },
-
- stateIsRequest: false,
- onLocationChange: function() {},
- onStateChange : function() {},
- onProgressChange : function() {},
- onStatusChange : function() {},
- onSecurityChange : function() {},
- onLinkIconAvailable : function() {}
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return Http;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/xpcom",
+ "firebug/lib/trace",
+ "firebug/lib/deprecated",
+ "firebug/js/stackFrame",
+ "firebug/lib/string"
+],
+function(Xpcom, FBTrace, Deprecated, StackFrame, Str) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+
+const NS_SEEK_SET = Ci.nsISeekableStream.NS_SEEK_SET;
+const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
+
+var Http = {};
+
+// ********************************************************************************************* //
+// Module Implementation
+
+Http.readFromStream = function(stream, charset, noClose)
+{
+ // Causes a memory leak (see https://bugzilla.mozilla.org/show_bug.cgi?id=699801)
+ //var sis = Cc["@mozilla.org/binaryinputstream;1"].createInstance(Ci.nsIBinaryInputStream);
+ //sis.setInputStream(stream);
+
+ var sis = Cc["@mozilla.org/scriptableinputstream;1"].
+ createInstance(Ci.nsIScriptableInputStream);
+ sis.init(stream);
+
+ var segments = [];
+ for (var count = stream.available(); count; count = stream.available())
+ segments.push(sis.readBytes(count));
+
+ if (!noClose)
+ sis.close();
+
+ var text = segments.join("");
+
+ try
+ {
+ return Str.convertToUnicode(text, charset);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("http.readFromStream EXCEPTION charset: " + charset, err);
+ }
+
+ return text;
+};
+
+Http.readPostTextFromPage = function(url, context)
+{
+ if (url == context.browser.contentWindow.location.href)
+ {
+ try
+ {
+ var webNav = context.browser.webNavigation;
+ var descriptor = (webNav instanceof Ci.nsIWebPageDescriptor) ?
+ webNav.currentDescriptor : null;
+
+ if (!(descriptor instanceof Ci.nsISHEntry))
+ return;
+
+ var entry = descriptor;
+ if (entry && entry.postData)
+ {
+ if (!(entry.postData instanceof Ci.nsISeekableStream))
+ return;
+
+ var postStream = entry.postData;
+ postStream.seek(NS_SEEK_SET, 0);
+
+ var charset = context.window.document.characterSet;
+ return Http.readFromStream(postStream, charset, true);
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("http.readPostText FAILS, url:"+url, exc);
+ }
+ }
+};
+
+Http.getResource = function(aURL)
+{
+ try
+ {
+ var channel = ioService.newChannel(aURL, null, null);
+ var input = channel.open();
+
+ return Http.readFromStream(input);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("lib.getResource FAILS for \'"+aURL+"\'", e);
+ }
+};
+
+/**
+ * Returns a posted data for specified request object. The return value might contain
+ * headers (if request.uploadStreamHasHeaders is set to true). You can remove these
+ * headers using {@link Http.removeHeadersFromPostText}
+ *
+ * @param {Object} request The request object
+ * @param {Object} context Current Firebug context (to get charset of the current document)
+ */
+Http.readPostTextFromRequest = function(request, context)
+{
+ try
+ {
+ var is = (request instanceof Ci.nsIUploadChannel) ? request.uploadStream : null;
+ if (is)
+ {
+ if (!(is instanceof Ci.nsISeekableStream))
+ return;
+
+ var ss = is;
+ var prevOffset;
+ if (ss)
+ {
+ prevOffset = ss.tell();
+ ss.seek(NS_SEEK_SET, 0);
+ }
+
+ // Read data from the stream..
+ var charset = (context && context.window) ? context.window.document.characterSet : null;
+ var text = Http.readFromStream(is, charset, true);
+
+ // Seek locks the file, so seek to the beginning only if necko hasn't read it yet,
+ // since necko doesn't seek to 0 before reading (at least not till 459384 is fixed).
+ if (ss && prevOffset == 0)
+ ss.seek(NS_SEEK_SET, 0);
+
+ return text;
+ }
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("http.readPostTextFromRequest FAILS ", exc);
+ }
+
+ return null;
+};
+
+/**
+ * Remove headers from post body, https://bugzilla.mozilla.org/show_bug.cgi?id=649338
+ *
+ * @param {Object} request Channel implementing nsIUploadChannel2
+ * @param {Object} text Extracted text (can include headers at the beginning).
+ */
+Http.removeHeadersFromPostText = function(request, text)
+{
+ if (!text)
+ return text;
+
+ if (typeof(Ci.nsIUploadChannel2) == "undefined")
+ return text;
+
+ if (!(request instanceof Ci.nsIUploadChannel2))
+ return text;
+
+ if (!request.uploadStreamHasHeaders)
+ return text;
+
+ var headerSeparator = "\r\n\r\n";
+ var index = text.indexOf(headerSeparator);
+ if (index == -1)
+ return text;
+
+ return text.substring(index + headerSeparator.length);
+};
+
+/**
+ * Returns an array of headers from posted data (appended by Firefox)
+ *
+ * @param {Object} request Channel implementing nsIUploadChannel2
+ * @param {Object} text Posted data from the channel object.
+ */
+Http.getHeadersFromPostText = function(request, text)
+{
+ var headers = [];
+ if (!text)
+ return headers;
+
+ if (typeof(Ci.nsIUploadChannel2) == "undefined")
+ return headers;
+
+ if (!(request instanceof Ci.nsIUploadChannel2))
+ return headers;
+
+ if (!request.uploadStreamHasHeaders)
+ return headers;
+
+ var headerSeparator = "\r\n\r\n";
+ var index = text.indexOf(headerSeparator);
+ if (index == -1)
+ return headers;
+
+ var text = text.substring(0, index);
+ var lines = Str.splitLines(text);
+
+ for (var i=0; i<lines.length; i++)
+ {
+ var header = lines[i].split(":");
+ if (header.length != 2)
+ continue;
+
+ headers.push({
+ name: Str.trim(header[0]),
+ value: Str.trim(header[1]),
+ });
+ }
+
+ return headers;
+};
+
+Http.getInputStreamFromString = function(dataString)
+{
+ var stringStream = Cc["@mozilla.org/io/string-input-stream;1"].
+ createInstance(Ci.nsIStringInputStream);
+
+ if ("data" in stringStream) // Gecko 1.9 or newer
+ stringStream.data = dataString;
+ else // 1.8 or older
+ stringStream.setData(dataString, dataString.length);
+
+ return stringStream;
+};
+
+Http.getWindowForRequest = function(request)
+{
+ var loadContext = Http.getRequestLoadContext(request);
+ try
+ {
+ if (loadContext)
+ return loadContext.associatedWindow;
+ }
+ catch (ex)
+ {
+ }
+
+ return null;
+};
+
+Http.getRequestLoadContext = function(request)
+{
+ try
+ {
+ if (request && request.notificationCallbacks)
+ {
+ StackFrame.suspendShowStackTrace();
+ return request.notificationCallbacks.getInterface(Ci.nsILoadContext);
+ }
+ }
+ catch (exc)
+ {
+ }
+ finally
+ {
+ StackFrame.resumeShowStackTrace();
+ }
+
+ try
+ {
+ if (request && request.loadGroup && request.loadGroup.notificationCallbacks)
+ {
+ StackFrame.suspendShowStackTrace();
+ return request.loadGroup.notificationCallbacks.getInterface(Ci.nsILoadContext);
+ }
+ }
+ catch (exc)
+ {
+ }
+ finally
+ {
+ StackFrame.resumeShowStackTrace();
+ }
+
+ return null;
+};
+
+Http.getRequestWebProgress = Deprecated.deprecated("Use getRequestLoadContext function",
+ Http.getRequestLoadContext);
+
+// ********************************************************************************************* //
+// HTTP Channel Fields
+
+Http.safeGetRequestName = function(request)
+{
+ try
+ {
+ return request.name;
+ }
+ catch (exc)
+ {
+ }
+
+ return null;
+};
+
+Http.safeGetURI = function(browser)
+{
+ try
+ {
+ return browser.currentURI;
+ }
+ catch (exc)
+ {
+ }
+
+ return null;
+};
+
+Http.safeGetContentType = function(request)
+{
+ try
+ {
+ return new String(request.contentType).toLowerCase();
+ }
+ catch (err)
+ {
+ }
+
+ return null;
+};
+
+Http.safeGetXHRResponseText = function(xhr)
+{
+ try
+ {
+ return xhr.responseText;
+ }
+ catch (err)
+ {
+ }
+
+ return null;
+};
+
+// ********************************************************************************************* //
+// IP Adress and port number (Requires Gecko 5).
+
+Http.safeGetLocalAddress = function(request)
+{
+ try
+ {
+ if (request instanceof Ci.nsIHttpChannelInternal)
+ return request.localAddress;
+ }
+ catch (err)
+ {
+ }
+ return null;
+};
+
+Http.safeGetLocalPort = function(request)
+{
+ try
+ {
+ if (request instanceof Ci.nsIHttpChannelInternal)
+ return request.localPort;
+ }
+ catch (err)
+ {
+ }
+ return null;
+};
+
+Http.safeGetRemoteAddress = function(request)
+{
+ try
+ {
+ if (request instanceof Ci.nsIHttpChannelInternal)
+ return request.remoteAddress;
+ }
+ catch (err)
+ {
+ }
+ return null;
+};
+
+Http.safeGetRemotePort = function(request)
+{
+ try
+ {
+ if (request instanceof Ci.nsIHttpChannelInternal)
+ return request.remotePort;
+ }
+ catch (err)
+ {
+ }
+ return null;
+};
+
+// ********************************************************************************************* //
+// XHR
+
+Http.isXHR = function(request)
+{
+ try
+ {
+ var callbacks = request.notificationCallbacks;
+ StackFrame.suspendShowStackTrace();
+ var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null;
+ return (xhrRequest != null);
+ }
+ catch (exc)
+ {
+ }
+ finally
+ {
+ StackFrame.resumeShowStackTrace();
+ }
+
+ return false;
+};
+
+// ********************************************************************************************* //
+// Conversions
+
+Http.convertToUnicode = Deprecated.deprecated("Function moved to 'firebug/lib/string' module",
+ Str.convertToUnicode);
+
+Http.convertFromUnicode = Deprecated.deprecated("Function moved to 'firebug/lib/string' module",
+ Str.convertFromUnicode);
+
+// ********************************************************************************************* //
+// Network Tracing
+
+Http.getStateDescription = function(flag)
+{
+ var state = [];
+ var nsIWebProgressListener = Ci.nsIWebProgressListener;
+ if (flag & nsIWebProgressListener.STATE_START) state.push("STATE_START");
+ else if (flag & nsIWebProgressListener.STATE_REDIRECTING) state.push("STATE_REDIRECTING");
+ else if (flag & nsIWebProgressListener.STATE_TRANSFERRING) state.push("STATE_TRANSFERRING");
+ else if (flag & nsIWebProgressListener.STATE_NEGOTIATING) state.push("STATE_NEGOTIATING");
+ else if (flag & nsIWebProgressListener.STATE_STOP) state.push("STATE_STOP");
+
+ if (flag & nsIWebProgressListener.STATE_IS_REQUEST) state.push("STATE_IS_REQUEST");
+ if (flag & nsIWebProgressListener.STATE_IS_DOCUMENT) state.push("STATE_IS_DOCUMENT");
+ if (flag & nsIWebProgressListener.STATE_IS_NETWORK) state.push("STATE_IS_NETWORK");
+ if (flag & nsIWebProgressListener.STATE_IS_WINDOW) state.push("STATE_IS_WINDOW");
+ if (flag & nsIWebProgressListener.STATE_RESTORING) state.push("STATE_RESTORING");
+ if (flag & nsIWebProgressListener.STATE_IS_INSECURE) state.push("STATE_IS_INSECURE");
+ if (flag & nsIWebProgressListener.STATE_IS_BROKEN) state.push("STATE_IS_BROKEN");
+ if (flag & nsIWebProgressListener.STATE_IS_SECURE) state.push("STATE_IS_SECURE");
+ if (flag & nsIWebProgressListener.STATE_SECURE_HIGH) state.push("STATE_SECURE_HIGH");
+ if (flag & nsIWebProgressListener.STATE_SECURE_MED) state.push("STATE_SECURE_MED");
+ if (flag & nsIWebProgressListener.STATE_SECURE_LOW) state.push("STATE_SECURE_LOW");
+
+ return state.join(", ");
+};
+
+Http.getStatusDescription = function(status)
+{
+ var nsISocketTransport = Ci.nsISocketTransport;
+ var nsITransport = Ci.nsITransport;
+
+ if (status == nsISocketTransport.STATUS_RESOLVING) return "STATUS_RESOLVING";
+ if (status == nsISocketTransport.STATUS_CONNECTING_TO) return "STATUS_CONNECTING_TO";
+ if (status == nsISocketTransport.STATUS_CONNECTED_TO) return "STATUS_CONNECTED_TO";
+ if (status == nsISocketTransport.STATUS_SENDING_TO) return "STATUS_SENDING_TO";
+ if (status == nsISocketTransport.STATUS_WAITING_FOR) return "STATUS_WAITING_FOR";
+ if (status == nsISocketTransport.STATUS_RECEIVING_FROM) return "STATUS_RECEIVING_FROM";
+ if (status == nsITransport.STATUS_READING) return "STATUS_READING";
+ if (status == nsITransport.STATUS_WRITING) return "STATUS_WRITING";
+};
+
+Http.getLoadFlagsDescription = function(loadFlags)
+{
+ var flags = [];
+ var nsIChannel = Ci.nsIChannel;
+ var nsICachingChannel = Ci.nsICachingChannel;
+
+ if (loadFlags & nsIChannel.LOAD_DOCUMENT_URI) flags.push("LOAD_DOCUMENT_URI");
+ if (loadFlags & nsIChannel.LOAD_RETARGETED_DOCUMENT_URI) flags.push("LOAD_RETARGETED_DOCUMENT_URI");
+ if (loadFlags & nsIChannel.LOAD_REPLACE) flags.push("LOAD_REPLACE");
+ if (loadFlags & nsIChannel.LOAD_INITIAL_DOCUMENT_URI) flags.push("LOAD_INITIAL_DOCUMENT_URI");
+ if (loadFlags & nsIChannel.LOAD_TARGETED) flags.push("LOAD_TARGETED");
+ if (loadFlags & nsIChannel.LOAD_CALL_CONTENT_SNIFFERS) flags.push("LOAD_CALL_CONTENT_SNIFFERS");
+ if (loadFlags & nsICachingChannel.LOAD_NO_NETWORK_IO) flags.push("LOAD_NO_NETWORK_IO");
+ if (loadFlags & nsICachingChannel.LOAD_CHECK_OFFLINE_CACHE) flags.push("LOAD_CHECK_OFFLINE_CACHE");
+ if (loadFlags & nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE) flags.push("LOAD_BYPASS_LOCAL_CACHE");
+ if (loadFlags & nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE_IF_BUSY) flags.push("LOAD_BYPASS_LOCAL_CACHE_IF_BUSY");
+ if (loadFlags & nsICachingChannel.LOAD_ONLY_FROM_CACHE) flags.push("LOAD_ONLY_FROM_CACHE");
+ if (loadFlags & nsICachingChannel.LOAD_ONLY_IF_MODIFIED) flags.push("LOAD_ONLY_IF_MODIFIED");
+
+ return flags.join(", ");
+};
+
+// ********************************************************************************************* //
+
+Http.BaseProgressListener =
+{
+ QueryInterface : function(iid)
+ {
+ if (iid.equals(Ci.nsIWebProgressListener) ||
+ iid.equals(Ci.nsISupportsWeakReference) ||
+ iid.equals(Ci.nsISupports))
+ {
+ return this;
+ }
+
+ throw Components.results.NS_NOINTERFACE;
+ },
+
+ stateIsRequest: false,
+ onLocationChange: function() {},
+ onStateChange : function() {},
+ onProgressChange : function() {},
+ onStatusChange : function() {},
+ onSecurityChange : function() {},
+ onLinkIconAvailable : function() {}
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return Http;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/json.js b/content/firebug/lib/json.js
index c7df225..457b1bf 100644
--- a/content/firebug/lib/json.js
+++ b/content/firebug/lib/json.js
@@ -1,99 +1,99 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace"
-],
-function(FBTrace) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Json = {};
-
-// ********************************************************************************************* //
-// JSON
-
-Json.parseJSONString = function(jsonString, originURL)
-{
- if (FBTrace.DBG_JSONVIEWER)
- FBTrace.sysout("jsonviewer.parseJSON; " + jsonString);
-
- // See if this is a Prototype style *-secure request.
- var regex = new RegExp(/\s*\/\*-secure-([\s\S]*)\*\/\s*$/);
- var matches = regex.exec(jsonString);
-
- if (matches)
- {
- jsonString = matches[1];
-
- if (jsonString[0] == "\\" && jsonString[1] == "n")
- jsonString = jsonString.substr(2);
-
- if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n")
- jsonString = jsonString.substr(0, jsonString.length-2);
- }
-
- if (jsonString.indexOf("&&&START&&&"))
- {
- regex = new RegExp(/&&&START&&& (.+) &&&END&&&/);
- matches = regex.exec(jsonString);
- if (matches)
- jsonString = matches[1];
- }
-
- try
- {
- var s = Components.utils.Sandbox(originURL);
-
- // throw on the extra parentheses
- return Components.utils.evalInSandbox("(" + jsonString + ")", s);
- }
- catch(e)
- {
- if (FBTrace.DBG_JSONVIEWER)
- FBTrace.sysout("jsonviewer.parseJSON FAILS on "+originURL+" for \""+jsonString+
- "\" with EXCEPTION "+e, e);
- }
-
- // Let's try to parse it as JSONP.
- var reJSONP = /^\s*([A-Za-z0-9_.]+\s*(?:\[.*\]|))\s*\(.*\)/;
- var m = reJSONP.exec(jsonString);
- if (!m || !m[1])
- return null;
-
- if (FBTrace.DBG_JSONVIEWER)
- FBTrace.sysout("jsonviewer.parseJSONP; " + jsonString);
-
- var callbackName = m[1];
-
- if (FBTrace.DBG_JSONVIEWER)
- FBTrace.sysout("jsonviewer.parseJSONP; Look like we have a JSONP callback: " + callbackName);
-
- // Replace the original callback (it can be e.g. foo.bar[1]) with simple function name.
- jsonString = jsonString.replace(callbackName, "callback");
-
- try
- {
- var s = Components.utils.Sandbox(originURL);
- s["callback"] = function(object) { return object; };
- return Components.utils.evalInSandbox(jsonString, s);
- }
- catch(ex)
- {
- if (FBTrace.DBG_JSONVIEWER)
- FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
- }
-
- return null;
-};
-
-Json.parseJSONPString = function(jsonString, originURL)
-{
-};
-
-// ********************************************************************************************* //
-
-return Json;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace"
+],
+function(FBTrace) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Json = {};
+
+// ********************************************************************************************* //
+// JSON
+
+Json.parseJSONString = function(jsonString, originURL)
+{
+ if (FBTrace.DBG_JSONVIEWER)
+ FBTrace.sysout("jsonviewer.parseJSON; " + jsonString);
+
+ // See if this is a Prototype style *-secure request.
+ var regex = new RegExp(/\s*\/\*-secure-([\s\S]*)\*\/\s*$/);
+ var matches = regex.exec(jsonString);
+
+ if (matches)
+ {
+ jsonString = matches[1];
+
+ if (jsonString[0] == "\\" && jsonString[1] == "n")
+ jsonString = jsonString.substr(2);
+
+ if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n")
+ jsonString = jsonString.substr(0, jsonString.length-2);
+ }
+
+ if (jsonString.indexOf("&&&START&&&"))
+ {
+ regex = new RegExp(/&&&START&&& (.+) &&&END&&&/);
+ matches = regex.exec(jsonString);
+ if (matches)
+ jsonString = matches[1];
+ }
+
+ try
+ {
+ var s = Components.utils.Sandbox(originURL);
+
+ // throw on the extra parentheses
+ return Components.utils.evalInSandbox("(" + jsonString + ")", s);
+ }
+ catch(e)
+ {
+ if (FBTrace.DBG_JSONVIEWER)
+ FBTrace.sysout("jsonviewer.parseJSON FAILS on "+originURL+" for \""+jsonString+
+ "\" with EXCEPTION "+e, e);
+ }
+
+ // Let's try to parse it as JSONP.
+ var reJSONP = /^\s*([A-Za-z0-9_.]+\s*(?:\[.*\]|))\s*\(.*\)/;
+ var m = reJSONP.exec(jsonString);
+ if (!m || !m[1])
+ return null;
+
+ if (FBTrace.DBG_JSONVIEWER)
+ FBTrace.sysout("jsonviewer.parseJSONP; " + jsonString);
+
+ var callbackName = m[1];
+
+ if (FBTrace.DBG_JSONVIEWER)
+ FBTrace.sysout("jsonviewer.parseJSONP; Look like we have a JSONP callback: " + callbackName);
+
+ // Replace the original callback (it can be e.g. foo.bar[1]) with simple function name.
+ jsonString = jsonString.replace(callbackName, "callback");
+
+ try
+ {
+ var s = Components.utils.Sandbox(originURL);
+ s["callback"] = function(object) { return object; };
+ return Components.utils.evalInSandbox(jsonString, s);
+ }
+ catch(ex)
+ {
+ if (FBTrace.DBG_JSONVIEWER)
+ FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
+ }
+
+ return null;
+};
+
+Json.parseJSONPString = function(jsonString, originURL)
+{
+};
+
+// ********************************************************************************************* //
+
+return Json;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/keywords.js b/content/firebug/lib/keywords.js
index 59f7807..c6bea2d 100644
--- a/content/firebug/lib/keywords.js
+++ b/content/firebug/lib/keywords.js
@@ -1,63 +1,63 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace"
-],
-function(FBTrace) {
-
-// ********************************************************************************************* //
-// Debug APIs
-
-var Keywords = {};
-
-// ************************************************************************************************
-// JavaScript Parsing
-
-Keywords.jsKeywords =
-{
- "var": 1,
- "const": 1,
- "class": 1,
- "extends": 1,
- "import": 1,
- "namespace": 1,
- "function": 1,
- "debugger": 1,
- "new": 1,
- "delete": 1,
- "null": 1,
- "undefined": 1,
- "true": 1,
- "false": 1,
- "void": 1,
- "typeof": 1,
- "instanceof": 1,
- "break": 1,
- "continue": 1,
- "return": 1,
- "throw": 1,
- "try": 1,
- "catch": 1,
- "finally": 1,
- "if": 1,
- "else": 1,
- "for": 1,
- "while": 1,
- "do": 1,
- "with": 1,
- "switch": 1,
- "case": 1,
- "default": 1
-};
-
-Keywords.isJavaScriptKeyword = function(name)
-{
- return name in Keywords.jsKeywords;
-};
-
-// ********************************************************************************************* //
-
-return Keywords;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace"
+],
+function(FBTrace) {
+
+// ********************************************************************************************* //
+// Debug APIs
+
+var Keywords = {};
+
+// ************************************************************************************************
+// JavaScript Parsing
+
+Keywords.jsKeywords =
+{
+ "var": 1,
+ "const": 1,
+ "class": 1,
+ "extends": 1,
+ "import": 1,
+ "namespace": 1,
+ "function": 1,
+ "debugger": 1,
+ "new": 1,
+ "delete": 1,
+ "null": 1,
+ "undefined": 1,
+ "true": 1,
+ "false": 1,
+ "void": 1,
+ "typeof": 1,
+ "instanceof": 1,
+ "break": 1,
+ "continue": 1,
+ "return": 1,
+ "throw": 1,
+ "try": 1,
+ "catch": 1,
+ "finally": 1,
+ "if": 1,
+ "else": 1,
+ "for": 1,
+ "while": 1,
+ "do": 1,
+ "with": 1,
+ "switch": 1,
+ "case": 1,
+ "default": 1
+};
+
+Keywords.isJavaScriptKeyword = function(name)
+{
+ return name in Keywords.jsKeywords;
+};
+
+// ********************************************************************************************* //
+
+return Keywords;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/lib.js b/content/firebug/lib/lib.js
index e6550d6..075cc8d 100644
--- a/content/firebug/lib/lib.js
+++ b/content/firebug/lib/lib.js
@@ -1,162 +1,162 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/lib/xpcom",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/options",
- "firebug/lib/deprecated",
- "firebug/lib/wrapper",
- "firebug/lib/url",
- "firebug/js/sourceLink",
- "firebug/js/stackFrame",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/http",
- "firebug/chrome/window",
- "firebug/lib/search",
- "firebug/lib/xpath",
- "firebug/lib/string",
- "firebug/lib/xml",
- "firebug/lib/persist",
- "firebug/lib/array",
- "firebug/lib/system",
- "firebug/lib/json",
- "firebug/lib/fonts",
- "firebug/chrome/menu",
- "firebug/dom/toggleBranch",
- "firebug/trace/debug",
- "firebug/lib/keywords",
- "firebug/chrome/firefox"
-],
-function(Obj, Xpcom, Locale, Events, Options, Deprecated, Wrapper, Url, SourceLink,
- StackFrame, Css, Dom, Http, Win, Search, Xpath, Str, Xml, Persist, Arr, System, Json,
- Fonts, Menu, ToggleBranch, Debug, Keywords, Firefox) {
-
-// ********************************************************************************************* //
-
-var FBL = window.FBL || {}; // legacy.js adds top.FBL, FIXME, remove after iframe version
-
-// ********************************************************************************************* //
-// xxxHonza: all deprecated API should be removed from 1.9+
-// All properties and methods of FBL namespace are deprecated.
-
-// Backward compatibility with extensions
-// deprecated
-for (var p in Obj)
- FBL[p] = Obj[p];
-
-for (var p in Xpcom)
- FBL[p] = Xpcom[p];
-
-for (var p in Locale)
- FBL[p] = Locale[p];
-
-for (var p in Events)
- FBL[p] = Events[p];
-
-for (var p in Wrapper)
- FBL[p] = Wrapper[p];
-
-for (var p in Url)
- FBL[p] = Url[p];
-
-for (var p in StackFrame)
- FBL[p] = StackFrame[p];
-
-for (var p in Css)
- FBL[p] = Css[p];
-
-for (var p in Dom)
- FBL[p] = Dom[p];
-
-for (var p in Http)
- FBL[p] = Http[p];
-
-for (var p in Win)
- FBL[p] = Win[p];
-
-for (var p in Search)
- FBL[p] = Search[p];
-
-for (var p in Xpath)
- FBL[p] = Xpath[p];
-
-for (var p in Str)
- FBL[p] = Str[p];
-
-for (var p in Xml)
- FBL[p] = Xml[p];
-
-for (var p in Persist)
- FBL[p] = Persist[p];
-
-for (var p in Arr)
- FBL[p] = Arr[p];
-
-for (var p in System)
- FBL[p] = System[p];
-
-for (var p in Json)
- FBL[p] = Json[p];
-
-for (var p in Fonts)
- FBL[p] = Fonts[p];
-
-for (var p in Menu)
- FBL[p] = Menu[p];
-
-for (var p in ToggleBranch)
- FBL[p] = ToggleBranch[p];
-
-for (var p in Debug)
- FBL[p] = Debug[p];
-
-for (var p in Keywords)
- FBL[p] = Keywords[p];
-
-for (var p in Firefox)
- FBL[p] = Firefox[p];
-
-FBL.deprecated = Deprecated.deprecated;
-FBL.SourceLink = SourceLink.SourceLink;
-
-// deprecated
-FBL.$ = function(id, doc)
-{
- if (doc)
- return doc.getElementById(id);
- else
- return document.getElementById(id);
-};
-
-// deprecated
-FBL.jsd = Components.classes["@mozilla.org/js/jsd/debugger-service;1"].
- getService(Components.interfaces.jsdIDebuggerService);
-
-// ********************************************************************************************* //
-// Constants
-
-try
-{
- Components.utils["import"]("resource://gre/modules/PluralForm.jsm");
- Components.utils["import"]("resource://firebug/firebug-service.js");
-
- // deprecated
- FBL.fbs = fbs; // left over from component.
-}
-catch (err)
-{
-}
-
-// deprecated
-FBL.reUpperCase = /[A-Z]/;
-
-// ********************************************************************************************* //
-// Registration
-
-return FBL;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/lib/xpcom",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/options",
+ "firebug/lib/deprecated",
+ "firebug/lib/wrapper",
+ "firebug/lib/url",
+ "firebug/js/sourceLink",
+ "firebug/js/stackFrame",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/http",
+ "firebug/chrome/window",
+ "firebug/lib/search",
+ "firebug/lib/xpath",
+ "firebug/lib/string",
+ "firebug/lib/xml",
+ "firebug/lib/persist",
+ "firebug/lib/array",
+ "firebug/lib/system",
+ "firebug/lib/json",
+ "firebug/lib/fonts",
+ "firebug/chrome/menu",
+ "firebug/dom/toggleBranch",
+ "firebug/trace/debug",
+ "firebug/lib/keywords",
+ "firebug/chrome/firefox"
+],
+function(Obj, Xpcom, Locale, Events, Options, Deprecated, Wrapper, Url, SourceLink,
+ StackFrame, Css, Dom, Http, Win, Search, Xpath, Str, Xml, Persist, Arr, System, Json,
+ Fonts, Menu, ToggleBranch, Debug, Keywords, Firefox) {
+
+// ********************************************************************************************* //
+
+var FBL = window.FBL || {}; // legacy.js adds top.FBL, FIXME, remove after iframe version
+
+// ********************************************************************************************* //
+// xxxHonza: all deprecated API should be removed from 1.9+
+// All properties and methods of FBL namespace are deprecated.
+
+// Backward compatibility with extensions
+// deprecated
+for (var p in Obj)
+ FBL[p] = Obj[p];
+
+for (var p in Xpcom)
+ FBL[p] = Xpcom[p];
+
+for (var p in Locale)
+ FBL[p] = Locale[p];
+
+for (var p in Events)
+ FBL[p] = Events[p];
+
+for (var p in Wrapper)
+ FBL[p] = Wrapper[p];
+
+for (var p in Url)
+ FBL[p] = Url[p];
+
+for (var p in StackFrame)
+ FBL[p] = StackFrame[p];
+
+for (var p in Css)
+ FBL[p] = Css[p];
+
+for (var p in Dom)
+ FBL[p] = Dom[p];
+
+for (var p in Http)
+ FBL[p] = Http[p];
+
+for (var p in Win)
+ FBL[p] = Win[p];
+
+for (var p in Search)
+ FBL[p] = Search[p];
+
+for (var p in Xpath)
+ FBL[p] = Xpath[p];
+
+for (var p in Str)
+ FBL[p] = Str[p];
+
+for (var p in Xml)
+ FBL[p] = Xml[p];
+
+for (var p in Persist)
+ FBL[p] = Persist[p];
+
+for (var p in Arr)
+ FBL[p] = Arr[p];
+
+for (var p in System)
+ FBL[p] = System[p];
+
+for (var p in Json)
+ FBL[p] = Json[p];
+
+for (var p in Fonts)
+ FBL[p] = Fonts[p];
+
+for (var p in Menu)
+ FBL[p] = Menu[p];
+
+for (var p in ToggleBranch)
+ FBL[p] = ToggleBranch[p];
+
+for (var p in Debug)
+ FBL[p] = Debug[p];
+
+for (var p in Keywords)
+ FBL[p] = Keywords[p];
+
+for (var p in Firefox)
+ FBL[p] = Firefox[p];
+
+FBL.deprecated = Deprecated.deprecated;
+FBL.SourceLink = SourceLink.SourceLink;
+
+// deprecated
+FBL.$ = function(id, doc)
+{
+ if (doc)
+ return doc.getElementById(id);
+ else
+ return document.getElementById(id);
+};
+
+// deprecated
+FBL.jsd = Components.classes["@mozilla.org/js/jsd/debugger-service;1"].
+ getService(Components.interfaces.jsdIDebuggerService);
+
+// ********************************************************************************************* //
+// Constants
+
+try
+{
+ Components.utils["import"]("resource://gre/modules/PluralForm.jsm");
+ Components.utils["import"]("resource://firebug/firebug-service.js");
+
+ // deprecated
+ FBL.fbs = fbs; // left over from component.
+}
+catch (err)
+{
+}
+
+// deprecated
+FBL.reUpperCase = /[A-Z]/;
+
+// ********************************************************************************************* //
+// Registration
+
+return FBL;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/locale.js b/content/firebug/lib/locale.js
index 472a2ed..7a1ef03 100644
--- a/content/firebug/lib/locale.js
+++ b/content/firebug/lib/locale.js
@@ -1,14 +1,14 @@
-/* See license.txt for terms of usage */
-
-define([], function() {
-
-// ********************************************************************************************* //
-// Module
-
-// The entire localization support is implemented as a Mozilla Module so that it can be
-// used before Firebug is fully loaded.
-
-return Components.utils["import"]("resource://firebug/locale.js").Locale;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([], function() {
+
+// ********************************************************************************************* //
+// Module
+
+// The entire localization support is implemented as a Mozilla Module so that it can be
+// used before Firebug is fully loaded.
+
+return Components.utils["import"]("resource://firebug/locale.js").Locale;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/object.js b/content/firebug/lib/object.js
index 1988856..dd9bf54 100644
--- a/content/firebug/lib/object.js
+++ b/content/firebug/lib/object.js
@@ -1,265 +1,265 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/xpcom",
- "firebug/lib/array",
- "firebug/lib/string"
-],
-function(FBTrace, Xpcom, Arr, Str) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-
-// ********************************************************************************************* //
-
-var Obj = {};
-
-// ********************************************************************************************* //
-
-Obj.bind = function() // fn, thisObject, args => thisObject.fn(arguments, args);
-{
- var args = Arr.cloneArray(arguments), fn = args.shift(), object = args.shift();
- return function bind() { return fn.apply(object, Arr.arrayInsert(Arr.cloneArray(args), 0, arguments)); };
-};
-
-Obj.bindFixed = function() // fn, thisObject, args => thisObject.fn(args);
-{
- var args = Arr.cloneArray(arguments), fn = args.shift(), object = args.shift();
- return function() { return fn.apply(object, args); };
-};
-
-Obj.extend = function()
-{
- if (arguments.length < 2)
- {
- FBTrace.sysout("object.extend; ERROR", arguments);
- throw new Error("Obj.extend on undefined object");
- }
-
- var newOb = {};
- for (var i = 0, len = arguments.length; i < len; ++i)
- {
- for (var prop in arguments[i])
- newOb[prop] = arguments[i][prop];
- }
-
- return newOb;
-};
-
-Obj.descend = function(prototypeParent, childProperties)
-{
- function protoSetter() {};
- protoSetter.prototype = prototypeParent;
- var newOb = new protoSetter();
- for (var n in childProperties)
- newOb[n] = childProperties[n];
- return newOb;
-};
-
-// ********************************************************************************************* //
-
-Obj.isFunction = function(ob)
-{
- return typeof(ob) == "function";
-}
-
-// ********************************************************************************************* //
-
-/**
- * Returns true if the passed object has any properties, otherwise returns false.
- *
- * @param {Object} ob Inspected object
- * @param {Object} nonEnumProps If set to true, check also non-enumerable properties (optional)
- * @param {Object} ownPropsOnly If set to true, only check own properties not inherited (optional)
- */
-Obj.hasProperties = function(ob, nonEnumProps, ownPropsOnly)
-{
- try
- {
- if (!ob)
- return false;
-
- var type = typeof(ob);
- if (type == "string" && ob.length)
- return true;
-
- if (type === "number" || type === "boolean" || type === "undefined" || ob === null)
- return false;
-
- try
- {
- // This is probably unnecessary in Firefox 19 or so.
- if ("toString" in ob && ob.toString() === "[xpconnect wrapped native prototype]")
- return true;
- }
- catch (exc) {}
-
- // The default case (both options false) is relatively simple.
- // Just use for..in loop.
- if (!nonEnumProps && !ownPropsOnly)
- {
- for (var name in ob)
- return true;
- return false;
- }
-
- if (nonEnumProps)
- props = Object.getOwnPropertyNames(ob);
- else
- props = Object.keys(ob);
-
- if (props.length)
- return true;
-
- // Not interested in inherited properties, bail out.
- if (ownPropsOnly)
- return false;
-
- // Climb prototype chain.
- var parent = Object.getPrototypeOf(ob);
- if (parent)
- return this.hasProperties(parent, nonEnumProps, ownPropsOnly);
- }
- catch (exc)
- {
- // Primitive (non string) objects will throw an exception when passed into
- // Object.keys or Object.getOwnPropertyNames APIs.
- // There are also many "security error" exceptions I guess none of which are really
- // necessary to display in the FBTrace console, so, remove the tracing for now.
- // if (FBTrace.DBG_ERRORS)
- // FBTrace.sysout("lib.hasProperties(" + Str.safeToString(ob) + ") ERROR " + exc, exc);
-
- // workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=648560
- if (ob.wrappedJSObject)
- return true;
- }
-
- return false;
-};
-
-Obj.getPrototype = function(ob)
-{
- try
- {
- return ob.prototype;
- } catch (exc) {}
- return null;
-};
-
-var uidCounter = 1;
-Obj.getUniqueId = function()
-{
- return uidCounter++;
-};
-
-Obj.getRandomInt = function(min, max)
-{
- return Math.floor(Math.random() * (max - min + 1) + min);
-};
-
-// Cross Window instanceof; type is local to this window
-Obj.XW_instanceof = function(obj, type)
-{
- if (obj instanceof type)
- return true; // within-window test
-
- if (!type)
- return false;
-
- if (!obj)
- return (type == "undefined");
-
- // compare strings: obj constructor.name to type.name.
- // This is not perfect, we should compare type.prototype to object.__proto__,
- // but mostly code does not change the constructor object.
- do
- {
- // then the function that constructed us is the argument
- if (obj.constructor && obj.constructor.name == type.name)
- return true;
- }
- while(obj = obj.__proto__); // walk the prototype chain.
-
- return false;
-
- // https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Property_Inheritance_Revisited
- // /Determining_Instance_Relationships
-};
-
-/**
- * Tells if the given property of the provided object is a non-native getter or not.
- * This method depends on PropertyPanel.jsm module available in Firefox 5+
- * isNonNativeGetter has been introduced in Firefox 7
- * The method has been moved to WebConsoleUtils.jsm in Fx 18
- *
- * @param object aObject The object that contains the property.
- * @param string aProp The property you want to check if it is a getter or not.
- * @return boolean True if the given property is a getter, false otherwise.
- */
-Obj.isNonNativeGetter = function(obj, propName)
-{
- try
- {
- var scope = {};
- Cu.import("resource://gre/modules/devtools/WebConsoleUtils.jsm", scope);
-
- if (scope.WebConsoleUtils.isNonNativeGetter)
- {
- Obj.isNonNativeGetter = function(obj, propName)
- {
- return scope.WebConsoleUtils.isNonNativeGetter(obj, propName);
- };
-
- return Obj.isNonNativeGetter(obj, propName);
- }
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("Obj.isNonNativeGetter; EXCEPTION " + err, err);
- }
-
- // OK, the method isn't available let's use an empty implementation
- Obj.isNonNativeGetter = function()
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("Obj.isNonNativeGetter; ERROR built-in method not found!");
- return true;
- };
-
- return true;
-};
-
-// xxxFlorent: [ES6-getPropertyNames]
-// http://wiki.ecmascript.org/doku.php?id=harmony:extended_object_api&s=getownpropertynames
-/**
- * Gets property names from an object.
- *
- * @param {*} subject The object
- * @return {Array} The property names
- *
- */
-Obj.getPropertyNames = Object.getPropertyNames || function(subject)
-{
- var props = Object.getOwnPropertyNames(subject);
- var proto = Object.getPrototypeOf(subject);
- while (proto !== null)
- {
- props = props.concat(Object.getOwnPropertyNames(proto));
- proto = Object.getPrototypeOf(proto);
- }
- // only keep unique elements from props (not optimised):
- // props = [...new Set(props)];
- return Arr.unique(props);
-};
-
-// ********************************************************************************************* //
-
-return Obj;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/xpcom",
+ "firebug/lib/array",
+ "firebug/lib/string"
+],
+function(FBTrace, Xpcom, Arr, Str) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+
+// ********************************************************************************************* //
+
+var Obj = {};
+
+// ********************************************************************************************* //
+
+Obj.bind = function() // fn, thisObject, args => thisObject.fn(arguments, args);
+{
+ var args = Arr.cloneArray(arguments), fn = args.shift(), object = args.shift();
+ return function bind() { return fn.apply(object, Arr.arrayInsert(Arr.cloneArray(args), 0, arguments)); };
+};
+
+Obj.bindFixed = function() // fn, thisObject, args => thisObject.fn(args);
+{
+ var args = Arr.cloneArray(arguments), fn = args.shift(), object = args.shift();
+ return function() { return fn.apply(object, args); };
+};
+
+Obj.extend = function()
+{
+ if (arguments.length < 2)
+ {
+ FBTrace.sysout("object.extend; ERROR", arguments);
+ throw new Error("Obj.extend on undefined object");
+ }
+
+ var newOb = {};
+ for (var i = 0, len = arguments.length; i < len; ++i)
+ {
+ for (var prop in arguments[i])
+ newOb[prop] = arguments[i][prop];
+ }
+
+ return newOb;
+};
+
+Obj.descend = function(prototypeParent, childProperties)
+{
+ function protoSetter() {};
+ protoSetter.prototype = prototypeParent;
+ var newOb = new protoSetter();
+ for (var n in childProperties)
+ newOb[n] = childProperties[n];
+ return newOb;
+};
+
+// ********************************************************************************************* //
+
+Obj.isFunction = function(ob)
+{
+ return typeof(ob) == "function";
+}
+
+// ********************************************************************************************* //
+
+/**
+ * Returns true if the passed object has any properties, otherwise returns false.
+ *
+ * @param {Object} ob Inspected object
+ * @param {Object} nonEnumProps If set to true, check also non-enumerable properties (optional)
+ * @param {Object} ownPropsOnly If set to true, only check own properties not inherited (optional)
+ */
+Obj.hasProperties = function(ob, nonEnumProps, ownPropsOnly)
+{
+ try
+ {
+ if (!ob)
+ return false;
+
+ var type = typeof(ob);
+ if (type == "string" && ob.length)
+ return true;
+
+ if (type === "number" || type === "boolean" || type === "undefined" || ob === null)
+ return false;
+
+ try
+ {
+ // This is probably unnecessary in Firefox 19 or so.
+ if ("toString" in ob && ob.toString() === "[xpconnect wrapped native prototype]")
+ return true;
+ }
+ catch (exc) {}
+
+ // The default case (both options false) is relatively simple.
+ // Just use for..in loop.
+ if (!nonEnumProps && !ownPropsOnly)
+ {
+ for (var name in ob)
+ return true;
+ return false;
+ }
+
+ if (nonEnumProps)
+ props = Object.getOwnPropertyNames(ob);
+ else
+ props = Object.keys(ob);
+
+ if (props.length)
+ return true;
+
+ // Not interested in inherited properties, bail out.
+ if (ownPropsOnly)
+ return false;
+
+ // Climb prototype chain.
+ var parent = Object.getPrototypeOf(ob);
+ if (parent)
+ return this.hasProperties(parent, nonEnumProps, ownPropsOnly);
+ }
+ catch (exc)
+ {
+ // Primitive (non string) objects will throw an exception when passed into
+ // Object.keys or Object.getOwnPropertyNames APIs.
+ // There are also many "security error" exceptions I guess none of which are really
+ // necessary to display in the FBTrace console, so, remove the tracing for now.
+ // if (FBTrace.DBG_ERRORS)
+ // FBTrace.sysout("lib.hasProperties(" + Str.safeToString(ob) + ") ERROR " + exc, exc);
+
+ // workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=648560
+ if (ob.wrappedJSObject)
+ return true;
+ }
+
+ return false;
+};
+
+Obj.getPrototype = function(ob)
+{
+ try
+ {
+ return ob.prototype;
+ } catch (exc) {}
+ return null;
+};
+
+var uidCounter = 1;
+Obj.getUniqueId = function()
+{
+ return uidCounter++;
+};
+
+Obj.getRandomInt = function(min, max)
+{
+ return Math.floor(Math.random() * (max - min + 1) + min);
+};
+
+// Cross Window instanceof; type is local to this window
+Obj.XW_instanceof = function(obj, type)
+{
+ if (obj instanceof type)
+ return true; // within-window test
+
+ if (!type)
+ return false;
+
+ if (!obj)
+ return (type == "undefined");
+
+ // compare strings: obj constructor.name to type.name.
+ // This is not perfect, we should compare type.prototype to object.__proto__,
+ // but mostly code does not change the constructor object.
+ do
+ {
+ // then the function that constructed us is the argument
+ if (obj.constructor && obj.constructor.name == type.name)
+ return true;
+ }
+ while(obj = obj.__proto__); // walk the prototype chain.
+
+ return false;
+
+ // https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Property_Inheritance_Revisited
+ // /Determining_Instance_Relationships
+};
+
+/**
+ * Tells if the given property of the provided object is a non-native getter or not.
+ * This method depends on PropertyPanel.jsm module available in Firefox 5+
+ * isNonNativeGetter has been introduced in Firefox 7
+ * The method has been moved to WebConsoleUtils.jsm in Fx 18
+ *
+ * @param object aObject The object that contains the property.
+ * @param string aProp The property you want to check if it is a getter or not.
+ * @return boolean True if the given property is a getter, false otherwise.
+ */
+Obj.isNonNativeGetter = function(obj, propName)
+{
+ try
+ {
+ var scope = {};
+ Cu.import("resource://gre/modules/devtools/WebConsoleUtils.jsm", scope);
+
+ if (scope.WebConsoleUtils.isNonNativeGetter)
+ {
+ Obj.isNonNativeGetter = function(obj, propName)
+ {
+ return scope.WebConsoleUtils.isNonNativeGetter(obj, propName);
+ };
+
+ return Obj.isNonNativeGetter(obj, propName);
+ }
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Obj.isNonNativeGetter; EXCEPTION " + err, err);
+ }
+
+ // OK, the method isn't available let's use an empty implementation
+ Obj.isNonNativeGetter = function()
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Obj.isNonNativeGetter; ERROR built-in method not found!");
+ return true;
+ };
+
+ return true;
+};
+
+// xxxFlorent: [ES6-getPropertyNames]
+// http://wiki.ecmascript.org/doku.php?id=harmony:extended_object_api&s=getownpropertynames
+/**
+ * Gets property names from an object.
+ *
+ * @param {*} subject The object
+ * @return {Array} The property names
+ *
+ */
+Obj.getPropertyNames = Object.getPropertyNames || function(subject)
+{
+ var props = Object.getOwnPropertyNames(subject);
+ var proto = Object.getPrototypeOf(subject);
+ while (proto !== null)
+ {
+ props = props.concat(Object.getOwnPropertyNames(proto));
+ proto = Object.getPrototypeOf(proto);
+ }
+ // only keep unique elements from props (not optimised):
+ // props = [...new Set(props)];
+ return Arr.unique(props);
+};
+
+// ********************************************************************************************* //
+
+return Obj;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/options.js b/content/firebug/lib/options.js
index 172faed..75f7b40 100644
--- a/content/firebug/lib/options.js
+++ b/content/firebug/lib/options.js
@@ -1,456 +1,456 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/events",
- "firebug/lib/trace"
-],
-function factoryOptions(Events, FBTrace) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const nsIPrefBranch = Ci.nsIPrefBranch;
-const PrefService = Cc["@mozilla.org/preferences-service;1"];
-
-const nsIPrefService = Ci.nsIPrefService;
-const prefService = PrefService.getService(nsIPrefService);
-const prefs = PrefService.getService(nsIPrefBranch);
-
-const prefNames = // XXXjjb TODO distribute to modules
-[
- // Global
- "defaultPanelName", "throttleMessages", "textSize", "showInfoTips",
- "commandEditor", "textWrapWidth", "framePosition", "showErrorCount",
- "activateSameOrigin", "allPagesActivation", "hiddenPanels",
- "panelTabMinWidth", "sourceLinkLabelWidth", "currentVersion",
- "useDefaultLocale", "toolbarCustomizationDone",
- "showBreakNotification", "stringCropLength", "showFirstRunPage",
-
- // Search
- "searchCaseSensitive", "searchGlobal", "searchUseRegularExpression",
- "netSearchHeaders", "netSearchParameters", "netSearchResponseBody",
-
- // Console
- "showJSErrors", "showJSWarnings", "showCSSErrors", "showXMLErrors",
- "showChromeErrors", "showChromeMessages",
- "showXMLHttpRequests", "showNetworkErrors", "tabularLogMaxHeight",
- "consoleFilterTypes", "alwaysShowCommandLine",
- "commandLineShowCompleterPopup",
-
- // HTML
- "showFullTextNodes", "showCommentNodes",
- "showTextNodesWithWhitespace", "entityDisplay",
- "highlightMutations", "expandMutations", "scrollToMutations", "shadeBoxModel",
- "showQuickInfoBox", "displayedAttributeValueLimit", "multiHighlightLimit",
-
- // CSS
- "onlyShowAppliedStyles",
- "showUserAgentCSS",
- "expandShorthandProps",
- "cssEditMode",
- "colorDisplay",
-
- // Computed
- "computedStylesDisplay",
- "showMozillaSpecificStyles",
-
- // Script
- "decompileEvals", "replaceTabs", "maxScriptLineLength",
-
- // DOM
- "showUserProps", "showUserFuncs", "showDOMProps", "showDOMFuncs", "showDOMConstants",
- "ObjectShortIteratorMax", "showEnumerableProperties", "showOwnProperties",
- "showInlineEventHandlers", "showClosures",
-
- // Layout
- "showRulers",
-
- // Net
- "netFilterCategories", "netDisplayedResponseLimit",
- "netDisplayedPostBodyLimit", "netPhaseInterval", "sizePrecision",
- "netParamNameLimit", "netShowPaintEvents", "netShowBFCacheResponses",
- "netHtmlPreviewHeight",
-
- // JSON Preview
- "sortJsonPreview",
-
- // Stack
- "omitObjectPathStack",
-
- "showStackTrace", // Console
- "filterSystemURLs", // Stack
- "breakOnErrors", "trackThrowCatch" // Script
-];
-
-var optionUpdateMap = {};
-
-// ********************************************************************************************* //
-
-/**
- * Interface to preference storage.
- * Panels send commands to request option change.
- * Backend responds with events when the change is accepted.
- */
-var Options =
-/** @lends Options */
-{
- prefDomain: "extensions.firebug",
-
- getPrefDomain: function()
- {
- return this.prefDomain;
- },
-
- initialize: function(prefDomain)
- {
- this.prefDomain = prefDomain;
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("options.initialize with prefDomain " + this.prefDomain);
-
- this.initializePrefs();
- },
-
- shutdown: function()
- {
- prefs.removeObserver(this.prefDomain, this, false);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Custom Listeners
-
- listeners: [],
-
- addListener: function(listener)
- {
- this.listeners.push(listener);
- },
-
- removeListener: function(listener)
- {
- for (var i=0; i<this.listeners.length; ++i)
- if (this.listeners[i] == listener)
- return this.listeners.splice(i, 1);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // nsIPrefObserver
-
- observe: function(subject, topic, data)
- {
- if (data.indexOf(Options.prefDomain) === -1)
- return;
-
- var name = data.substr(Options.prefDomain.length+1); // +1 for .
- var value = this.get(name);
-
- if (FBTrace.DBG_OPTIONS)
- FBTrace.sysout("options.observe name = value: "+name+"= "+value+"\n");
-
- this.updatePref(name, value);
- },
-
- updatePref: function(name, value)
- {
- // Prevent infinite recursion due to pref observer
- if (optionUpdateMap.hasOwnProperty(name))
- return;
-
- try
- {
- optionUpdateMap[name] = 1;
- Firebug[name] = value;
-
- Events.dispatch(this.listeners, "updateOption", [name, value]);
- }
- catch (err)
- {
- if (FBTrace.DBG_OPTIONS || FBTrace.DBG_ERRORS)
- FBTrace.sysout("options.updatePref EXCEPTION:" + err, err);
- }
- finally
- {
- delete optionUpdateMap[name];
- }
-
- if (FBTrace.DBG_OPTIONS)
- FBTrace.sysout("options.updatePref EXIT: "+name+"="+value+"\n");
- },
-
- register: function(name, value)
- {
- var currentValue = this.getPref(this.prefDomain, name);
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("registerPreference "+name+" -> "+value+" type "+typeof(value)+
- " with currentValue "+currentValue);
-
- if (currentValue === undefined)
- {
- // https://developer.mozilla.org/en/Code_snippets/Preferences
- // This is the reason why you should usually pass strings ending with a dot to
- // getBranch(), like prefs.getBranch("accessibility.").
- var defaultBranch = prefService.getDefaultBranch(this.prefDomain+"."); //
-
- var type = this.getPreferenceTypeByExample(typeof(value));
- if (this.setPreference(name, value, type, defaultBranch))
- return true;
- }
-
- return false;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Options
- // TODO support per context options eg break on error
-
- initializePrefs: function()
- {
- for (var i = 0; i < prefNames.length; ++i)
- Firebug[prefNames[i]] = this.getPref(this.prefDomain, prefNames[i]);
-
- prefs.addObserver(this.prefDomain, this, false);
-
- var basePrefNames = prefNames.length;
-
- for (var i = basePrefNames; i < prefNames.length; ++i)
- Firebug[prefNames[i]] = this.getPref(this.prefDomain, prefNames[i]);
-
- if (FBTrace.DBG_OPTIONS)
- {
- for (var i = 0; i < prefNames.length; ++i)
- {
- FBTrace.sysout("options.initialize option "+this.prefDomain+"."+prefNames[i]+"="+
- Firebug[prefNames[i]]+"\n");
- }
- }
- },
-
- togglePref: function(name)
- {
- this.set(name, !this.get(name));
- },
-
- get: function(name)
- {
- return Options.getPref(this.prefDomain, name);
- },
-
- getPref: function(prefDomain, name)
- {
- var prefName = prefDomain + "." + name;
-
- var type = prefs.getPrefType(prefName);
-
- var value = null;
- if (type == nsIPrefBranch.PREF_STRING)
- value = prefs.getCharPref(prefName);
- else if (type == nsIPrefBranch.PREF_INT)
- value = prefs.getIntPref(prefName);
- else if (type == nsIPrefBranch.PREF_BOOL)
- value = prefs.getBoolPref(prefName);
-
- if (FBTrace.DBG_OPTIONS)
- FBTrace.sysout("options.getPref "+prefName+" has type "+
- this.getPreferenceTypeName(type)+" and value "+value);
-
- return value;
- },
-
- getDefault: function(name)
- {
- return Options.getDefaultPref(this.prefDomain, name);
- },
-
- getDefaultPref: function(prefDomain, name)
- {
- var defaultPrefs = prefService.getDefaultBranch(prefDomain + ".");
- var type = defaultPrefs.getPrefType(name);
-
- var value = null;
- if (type == nsIPrefBranch.PREF_STRING)
- value = defaultPrefs.getCharPref(name);
- else if (type == nsIPrefBranch.PREF_INT)
- value = defaultPrefs.getIntPref(name);
- else if (type == nsIPrefBranch.PREF_BOOL)
- value = defaultPrefs.getBoolPref(name);
-
- if (FBTrace.DBG_OPTIONS)
- {
- FBTrace.sysout("options.getDefaultPref "+prefName+" has type "+
- this.getPreferenceTypeName(type)+" and value "+value);
- }
-
- return value;
- },
-
- set: function(name, value)
- {
- Options.setPref(Options.prefDomain, name, value);
- },
-
- /**
- * Set a preference value.
- *
- * @param prefDomain, e.g. "extensions.firebug"
- * @param name Name of the preference (the part after prfDomain without dot)
- * @param value New value for the preference.
- * @param prefType optional pref type useful when adding a new preference.
- */
- setPref: function(prefDomain, name, value, prefType)
- {
- var prefName = prefDomain + "." + name;
-
- var type = this.getPreferenceTypeByExample((prefType ? prefType : typeof(value)));
- if (!this.setPreference(prefName, value, type, prefs))
- return;
-
- if (FBTrace.DBG_OPTIONS)
- FBTrace.sysout("options.setPref type="+type+" name="+prefName+" value="+value);
- },
-
- setPreference: function(prefName, value, type, prefBranch)
- {
- if (FBTrace.DBG_OPTIONS)
- FBTrace.sysout("setPreference "+prefName, {prefName: prefName, value: value});
-
- if (type == nsIPrefBranch.PREF_STRING)
- prefBranch.setCharPref(prefName, value);
- else if (type == nsIPrefBranch.PREF_INT)
- prefBranch.setIntPref(prefName, value);
- else if (type == nsIPrefBranch.PREF_BOOL)
- prefBranch.setBoolPref(prefName, value);
- else if (type == nsIPrefBranch.PREF_INVALID)
- {
- FBTrace.sysout("options.setPref FAILS: Invalid preference "+prefName+" with type "+
- type+", check that it is listed in defaults/prefs.js");
-
- return false;
- }
-
- return true;
- },
-
- getPreferenceTypeByExample: function(prefType)
- {
- var type = nsIPrefBranch.PREF_INVALID;
- if (prefType)
- {
- if (prefType === typeof("s"))
- type = nsIPrefBranch.PREF_STRING;
- else if (prefType === typeof(1))
- type = nsIPrefBranch.PREF_INT;
- else if (prefType === typeof(true))
- type = nsIPrefBranch.PREF_BOOL;
- }
- else
- {
- type = prefs.getPrefType(prefName);
- }
-
- return type;
- },
-
- getPreferenceTypeName: function(prefType)
- {
- if (prefType == Ci.nsIPrefBranch.PREF_STRING)
- return "string";
- else if (prefType == Ci.nsIPrefBranch.PREF_INT)
- return "int";
- else if (prefType == Ci.nsIPrefBranch.PREF_BOOL)
- return "boolean";
- },
-
- clear: function(name)
- {
- Options.clearPref(Options.prefDomain, name);
- },
-
- clearPref: function(prefDomain, name)
- {
- var prefName = prefDomain + "." + name;
- if (prefs.prefHasUserValue(prefName))
- prefs.clearUserPref(prefName);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Firebug UI text zoom
-
- changeTextSize: function(amt)
- {
- var textSize = Options.get("textSize");
- var newTextSize = textSize + amt;
- if ((newTextSize < 0 && Math.abs(newTextSize) < this.negativeZoomFactors.length) ||
- (newTextSize >= 0 && textSize+amt < this.positiveZoomFactors.length))
- {
- this.setTextSize(textSize+amt);
- }
- },
-
- setTextSize: function(value)
- {
- var setValue = value;
- if (value >= this.positiveZoomFactors.length)
- setValue = this.positiveZoomFactors[this.positiveZoomFactors.length-1];
- else if (value < 0 && Math.abs(value) >= this.negativeZoomFactors.length)
- setValue = this.negativeZoomFactors[this.negativeZoomFactors.length-1];
- this.set("textSize", setValue);
- },
-
- positiveZoomFactors: [1, 1.1, 1.2, 1.3, 1.5, 2, 3],
- negativeZoomFactors: [1, 0.95, 0.8, 0.7, 0.5],
-
- getZoomByTextSize: function(value)
- {
- var zoom = value >= 0 ? (this.positiveZoomFactors[value] || 1) :
- (this.negativeZoomFactors[Math.abs(value)] || 1);
-
- return zoom;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /**
- * Resets all Firebug options to default state. Note that every option
- * starting with "extensions.firebug" is considered as a Firebug option.
- *
- * Options starting with DBG_ are intended for Firebug Tracing Console (FBTrace)
- * and ignored (their state is not changed).
- */
- resetAllOptions: function()
- {
- var preferences = prefs.getChildList("extensions.firebug", {});
- for (var i = 0; i < preferences.length; i++)
- {
- if (preferences[i].indexOf("DBG_") == -1)
- {
- if (FBTrace.DBG_OPTIONS)
- FBTrace.sysout("Clearing option: " + i + ") " + preferences[i]);
-
- if (prefs.prefHasUserValue(preferences[i])) // avoid exception
- prefs.clearUserPref(preferences[i]);
- }
- else
- {
- if (FBTrace.DBG_OPTIONS)
- FBTrace.sysout("Skipped clearing option: " + i + ") " + preferences[i]);
- }
- }
- },
-
- forceSave: function()
- {
- prefs.savePrefFile(null);
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return Options;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/events",
+ "firebug/lib/trace"
+],
+function factoryOptions(Events, FBTrace) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+const nsIPrefBranch = Ci.nsIPrefBranch;
+const PrefService = Cc["@mozilla.org/preferences-service;1"];
+
+const nsIPrefService = Ci.nsIPrefService;
+const prefService = PrefService.getService(nsIPrefService);
+const prefs = PrefService.getService(nsIPrefBranch);
+
+const prefNames = // XXXjjb TODO distribute to modules
+[
+ // Global
+ "defaultPanelName", "throttleMessages", "textSize", "showInfoTips",
+ "commandEditor", "textWrapWidth", "framePosition", "showErrorCount",
+ "activateSameOrigin", "allPagesActivation", "hiddenPanels",
+ "panelTabMinWidth", "sourceLinkLabelWidth", "currentVersion",
+ "useDefaultLocale", "toolbarCustomizationDone",
+ "showBreakNotification", "stringCropLength", "showFirstRunPage",
+
+ // Search
+ "searchCaseSensitive", "searchGlobal", "searchUseRegularExpression",
+ "netSearchHeaders", "netSearchParameters", "netSearchResponseBody",
+
+ // Console
+ "showJSErrors", "showJSWarnings", "showCSSErrors", "showXMLErrors",
+ "showChromeErrors", "showChromeMessages",
+ "showXMLHttpRequests", "showNetworkErrors", "tabularLogMaxHeight",
+ "consoleFilterTypes", "alwaysShowCommandLine",
+ "commandLineShowCompleterPopup",
+
+ // HTML
+ "showFullTextNodes", "showCommentNodes",
+ "showTextNodesWithWhitespace", "entityDisplay",
+ "highlightMutations", "expandMutations", "scrollToMutations", "shadeBoxModel",
+ "showQuickInfoBox", "displayedAttributeValueLimit", "multiHighlightLimit",
+
+ // CSS
+ "onlyShowAppliedStyles",
+ "showUserAgentCSS",
+ "expandShorthandProps",
+ "cssEditMode",
+ "colorDisplay",
+
+ // Computed
+ "computedStylesDisplay",
+ "showMozillaSpecificStyles",
+
+ // Script
+ "decompileEvals", "replaceTabs", "maxScriptLineLength",
+
+ // DOM
+ "showUserProps", "showUserFuncs", "showDOMProps", "showDOMFuncs", "showDOMConstants",
+ "ObjectShortIteratorMax", "showEnumerableProperties", "showOwnProperties",
+ "showInlineEventHandlers", "showClosures",
+
+ // Layout
+ "showRulers",
+
+ // Net
+ "netFilterCategories", "netDisplayedResponseLimit",
+ "netDisplayedPostBodyLimit", "netPhaseInterval", "sizePrecision",
+ "netParamNameLimit", "netShowPaintEvents", "netShowBFCacheResponses",
+ "netHtmlPreviewHeight",
+
+ // JSON Preview
+ "sortJsonPreview",
+
+ // Stack
+ "omitObjectPathStack",
+
+ "showStackTrace", // Console
+ "filterSystemURLs", // Stack
+ "breakOnErrors", "trackThrowCatch" // Script
+];
+
+var optionUpdateMap = {};
+
+// ********************************************************************************************* //
+
+/**
+ * Interface to preference storage.
+ * Panels send commands to request option change.
+ * Backend responds with events when the change is accepted.
+ */
+var Options =
+/** @lends Options */
+{
+ prefDomain: "extensions.firebug",
+
+ getPrefDomain: function()
+ {
+ return this.prefDomain;
+ },
+
+ initialize: function(prefDomain)
+ {
+ this.prefDomain = prefDomain;
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("options.initialize with prefDomain " + this.prefDomain);
+
+ this.initializePrefs();
+ },
+
+ shutdown: function()
+ {
+ prefs.removeObserver(this.prefDomain, this, false);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Custom Listeners
+
+ listeners: [],
+
+ addListener: function(listener)
+ {
+ this.listeners.push(listener);
+ },
+
+ removeListener: function(listener)
+ {
+ for (var i=0; i<this.listeners.length; ++i)
+ if (this.listeners[i] == listener)
+ return this.listeners.splice(i, 1);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // nsIPrefObserver
+
+ observe: function(subject, topic, data)
+ {
+ if (data.indexOf(Options.prefDomain) === -1)
+ return;
+
+ var name = data.substr(Options.prefDomain.length+1); // +1 for .
+ var value = this.get(name);
+
+ if (FBTrace.DBG_OPTIONS)
+ FBTrace.sysout("options.observe name = value: "+name+"= "+value+"\n");
+
+ this.updatePref(name, value);
+ },
+
+ updatePref: function(name, value)
+ {
+ // Prevent infinite recursion due to pref observer
+ if (optionUpdateMap.hasOwnProperty(name))
+ return;
+
+ try
+ {
+ optionUpdateMap[name] = 1;
+ Firebug[name] = value;
+
+ Events.dispatch(this.listeners, "updateOption", [name, value]);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_OPTIONS || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("options.updatePref EXCEPTION:" + err, err);
+ }
+ finally
+ {
+ delete optionUpdateMap[name];
+ }
+
+ if (FBTrace.DBG_OPTIONS)
+ FBTrace.sysout("options.updatePref EXIT: "+name+"="+value+"\n");
+ },
+
+ register: function(name, value)
+ {
+ var currentValue = this.getPref(this.prefDomain, name);
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("registerPreference "+name+" -> "+value+" type "+typeof(value)+
+ " with currentValue "+currentValue);
+
+ if (currentValue === undefined)
+ {
+ // https://developer.mozilla.org/en/Code_snippets/Preferences
+ // This is the reason why you should usually pass strings ending with a dot to
+ // getBranch(), like prefs.getBranch("accessibility.").
+ var defaultBranch = prefService.getDefaultBranch(this.prefDomain+"."); //
+
+ var type = this.getPreferenceTypeByExample(typeof(value));
+ if (this.setPreference(name, value, type, defaultBranch))
+ return true;
+ }
+
+ return false;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Options
+ // TODO support per context options eg break on error
+
+ initializePrefs: function()
+ {
+ for (var i = 0; i < prefNames.length; ++i)
+ Firebug[prefNames[i]] = this.getPref(this.prefDomain, prefNames[i]);
+
+ prefs.addObserver(this.prefDomain, this, false);
+
+ var basePrefNames = prefNames.length;
+
+ for (var i = basePrefNames; i < prefNames.length; ++i)
+ Firebug[prefNames[i]] = this.getPref(this.prefDomain, prefNames[i]);
+
+ if (FBTrace.DBG_OPTIONS)
+ {
+ for (var i = 0; i < prefNames.length; ++i)
+ {
+ FBTrace.sysout("options.initialize option "+this.prefDomain+"."+prefNames[i]+"="+
+ Firebug[prefNames[i]]+"\n");
+ }
+ }
+ },
+
+ togglePref: function(name)
+ {
+ this.set(name, !this.get(name));
+ },
+
+ get: function(name)
+ {
+ return Options.getPref(this.prefDomain, name);
+ },
+
+ getPref: function(prefDomain, name)
+ {
+ var prefName = prefDomain + "." + name;
+
+ var type = prefs.getPrefType(prefName);
+
+ var value = null;
+ if (type == nsIPrefBranch.PREF_STRING)
+ value = prefs.getCharPref(prefName);
+ else if (type == nsIPrefBranch.PREF_INT)
+ value = prefs.getIntPref(prefName);
+ else if (type == nsIPrefBranch.PREF_BOOL)
+ value = prefs.getBoolPref(prefName);
+
+ if (FBTrace.DBG_OPTIONS)
+ FBTrace.sysout("options.getPref "+prefName+" has type "+
+ this.getPreferenceTypeName(type)+" and value "+value);
+
+ return value;
+ },
+
+ getDefault: function(name)
+ {
+ return Options.getDefaultPref(this.prefDomain, name);
+ },
+
+ getDefaultPref: function(prefDomain, name)
+ {
+ var defaultPrefs = prefService.getDefaultBranch(prefDomain + ".");
+ var type = defaultPrefs.getPrefType(name);
+
+ var value = null;
+ if (type == nsIPrefBranch.PREF_STRING)
+ value = defaultPrefs.getCharPref(name);
+ else if (type == nsIPrefBranch.PREF_INT)
+ value = defaultPrefs.getIntPref(name);
+ else if (type == nsIPrefBranch.PREF_BOOL)
+ value = defaultPrefs.getBoolPref(name);
+
+ if (FBTrace.DBG_OPTIONS)
+ {
+ FBTrace.sysout("options.getDefaultPref "+prefName+" has type "+
+ this.getPreferenceTypeName(type)+" and value "+value);
+ }
+
+ return value;
+ },
+
+ set: function(name, value)
+ {
+ Options.setPref(Options.prefDomain, name, value);
+ },
+
+ /**
+ * Set a preference value.
+ *
+ * @param prefDomain, e.g. "extensions.firebug"
+ * @param name Name of the preference (the part after prfDomain without dot)
+ * @param value New value for the preference.
+ * @param prefType optional pref type useful when adding a new preference.
+ */
+ setPref: function(prefDomain, name, value, prefType)
+ {
+ var prefName = prefDomain + "." + name;
+
+ var type = this.getPreferenceTypeByExample((prefType ? prefType : typeof(value)));
+ if (!this.setPreference(prefName, value, type, prefs))
+ return;
+
+ if (FBTrace.DBG_OPTIONS)
+ FBTrace.sysout("options.setPref type="+type+" name="+prefName+" value="+value);
+ },
+
+ setPreference: function(prefName, value, type, prefBranch)
+ {
+ if (FBTrace.DBG_OPTIONS)
+ FBTrace.sysout("setPreference "+prefName, {prefName: prefName, value: value});
+
+ if (type == nsIPrefBranch.PREF_STRING)
+ prefBranch.setCharPref(prefName, value);
+ else if (type == nsIPrefBranch.PREF_INT)
+ prefBranch.setIntPref(prefName, value);
+ else if (type == nsIPrefBranch.PREF_BOOL)
+ prefBranch.setBoolPref(prefName, value);
+ else if (type == nsIPrefBranch.PREF_INVALID)
+ {
+ FBTrace.sysout("options.setPref FAILS: Invalid preference "+prefName+" with type "+
+ type+", check that it is listed in defaults/prefs.js");
+
+ return false;
+ }
+
+ return true;
+ },
+
+ getPreferenceTypeByExample: function(prefType)
+ {
+ var type = nsIPrefBranch.PREF_INVALID;
+ if (prefType)
+ {
+ if (prefType === typeof("s"))
+ type = nsIPrefBranch.PREF_STRING;
+ else if (prefType === typeof(1))
+ type = nsIPrefBranch.PREF_INT;
+ else if (prefType === typeof(true))
+ type = nsIPrefBranch.PREF_BOOL;
+ }
+ else
+ {
+ type = prefs.getPrefType(prefName);
+ }
+
+ return type;
+ },
+
+ getPreferenceTypeName: function(prefType)
+ {
+ if (prefType == Ci.nsIPrefBranch.PREF_STRING)
+ return "string";
+ else if (prefType == Ci.nsIPrefBranch.PREF_INT)
+ return "int";
+ else if (prefType == Ci.nsIPrefBranch.PREF_BOOL)
+ return "boolean";
+ },
+
+ clear: function(name)
+ {
+ Options.clearPref(Options.prefDomain, name);
+ },
+
+ clearPref: function(prefDomain, name)
+ {
+ var prefName = prefDomain + "." + name;
+ if (prefs.prefHasUserValue(prefName))
+ prefs.clearUserPref(prefName);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Firebug UI text zoom
+
+ changeTextSize: function(amt)
+ {
+ var textSize = Options.get("textSize");
+ var newTextSize = textSize + amt;
+ if ((newTextSize < 0 && Math.abs(newTextSize) < this.negativeZoomFactors.length) ||
+ (newTextSize >= 0 && textSize+amt < this.positiveZoomFactors.length))
+ {
+ this.setTextSize(textSize+amt);
+ }
+ },
+
+ setTextSize: function(value)
+ {
+ var setValue = value;
+ if (value >= this.positiveZoomFactors.length)
+ setValue = this.positiveZoomFactors[this.positiveZoomFactors.length-1];
+ else if (value < 0 && Math.abs(value) >= this.negativeZoomFactors.length)
+ setValue = this.negativeZoomFactors[this.negativeZoomFactors.length-1];
+ this.set("textSize", setValue);
+ },
+
+ positiveZoomFactors: [1, 1.1, 1.2, 1.3, 1.5, 2, 3],
+ negativeZoomFactors: [1, 0.95, 0.8, 0.7, 0.5],
+
+ getZoomByTextSize: function(value)
+ {
+ var zoom = value >= 0 ? (this.positiveZoomFactors[value] || 1) :
+ (this.negativeZoomFactors[Math.abs(value)] || 1);
+
+ return zoom;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /**
+ * Resets all Firebug options to default state. Note that every option
+ * starting with "extensions.firebug" is considered as a Firebug option.
+ *
+ * Options starting with DBG_ are intended for Firebug Tracing Console (FBTrace)
+ * and ignored (their state is not changed).
+ */
+ resetAllOptions: function()
+ {
+ var preferences = prefs.getChildList("extensions.firebug", {});
+ for (var i = 0; i < preferences.length; i++)
+ {
+ if (preferences[i].indexOf("DBG_") == -1)
+ {
+ if (FBTrace.DBG_OPTIONS)
+ FBTrace.sysout("Clearing option: " + i + ") " + preferences[i]);
+
+ if (prefs.prefHasUserValue(preferences[i])) // avoid exception
+ prefs.clearUserPref(preferences[i]);
+ }
+ else
+ {
+ if (FBTrace.DBG_OPTIONS)
+ FBTrace.sysout("Skipped clearing option: " + i + ") " + preferences[i]);
+ }
+ }
+ },
+
+ forceSave: function()
+ {
+ prefs.savePrefFile(null);
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return Options;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/persist.js b/content/firebug/lib/persist.js
index 8539c1a..c2e675d 100644
--- a/content/firebug/lib/persist.js
+++ b/content/firebug/lib/persist.js
@@ -1,140 +1,140 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
-],
-function(FBTrace) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Persist = {};
-
-const overrideDefaultsWithPersistedValuesTimeout = 500;
-
-// ********************************************************************************************* //
-// Persistence (cross page refresh)
-
-Persist.persistObjects = function(panel, panelState)
-{
- // Persist the location and selection so we can restore them in case of a reload
- if (panel.location)
- panelState.persistedLocation = Persist.persistObject(panel.location, panel.context); // fn(context)->location
-
- if (panel.selection)
- panelState.persistedSelection = Persist.persistObject(panel.selection, panel.context);
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("lib.persistObjects "+panel.name+" panel.location:"+panel.location+
- " panel.selection:"+panel.selection+" panelState:", panelState);
-};
-
-Persist.persistObject = function(object, context)
-{
- var rep = Firebug.getRep(object, context);
- return rep ? rep.persistObject(object, context) : null;
-};
-
-Persist.restoreLocation = function(panel, panelState)
-{
- var restored = false;
-
- if (!panel.location && panelState && panelState.persistedLocation)
- {
- var location = panelState.persistedLocation(panel.context);
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("lib.restoreObjects "+panel.name+" persistedLocation: "+location+
- " panelState:", panelState);
-
- if (location)
- {
- panel.navigate(location);
- restored = true;
- }
- }
-
- if (!panel.location)
- panel.navigate(null);
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("lib.restoreLocation panel.location: "+panel.location+" restored: "+
- restored+" panelState:", panelState);
-
- return restored;
-};
-
-Persist.restoreSelection = function(panel, panelState)
-{
- var needRetry = false;
-
- if (!panel.selection && panelState && panelState.persistedSelection)
- {
- var selection = panelState.persistedSelection(panel.context);
- if (selection)
- panel.select(selection);
- else
- needRetry = true;
- }
-
- if (!panel.selection) // Couldn't restore the selection, so select the default object
- panel.select(null);
-
- if (needRetry)
- {
- function overrideDefaultWithPersistedSelection()
- {
- if (panel.selection == panel.getDefaultSelection() && panelState.persistedSelection)
- {
- var selection = panelState.persistedSelection(panel.context);
- if (selection)
- panel.select(selection);
- }
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("lib.overrideDefaultsWithPersistedValues "+panel.name+
- " panel.location: "+panel.location+" panel.selection: "+panel.selection+
- " panelState:", panelState);
- }
-
- // If we couldn't restore the selection, wait a bit and try again
- panel.context.setTimeout(overrideDefaultWithPersistedSelection,
- overrideDefaultsWithPersistedValuesTimeout);
- }
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("lib.restore "+panel.name+" needRetry "+needRetry+" panel.selection: "+
- panel.selection+" panelState:", panelState);
-};
-
-Persist.restoreObjects = function(panel, panelState)
-{
- Persist.restoreLocation(panel, panelState);
- Persist.restoreSelection(panel, panelState);
-};
-
-Persist.getPersistedState = function(context, panelName)
-{
- if (!context)
- return null;
-
- var persistedState = context.persistedState;
- if (!persistedState)
- persistedState = context.persistedState = {};
-
- if (!persistedState.panelState)
- persistedState.panelState = {};
-
- var panelState = persistedState.panelState[panelName];
- if (!panelState)
- panelState = persistedState.panelState[panelName] = {};
-
- return panelState;
-};
-
-// ********************************************************************************************* //
-
-return Persist;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+],
+function(FBTrace) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Persist = {};
+
+const overrideDefaultsWithPersistedValuesTimeout = 500;
+
+// ********************************************************************************************* //
+// Persistence (cross page refresh)
+
+Persist.persistObjects = function(panel, panelState)
+{
+ // Persist the location and selection so we can restore them in case of a reload
+ if (panel.location)
+ panelState.persistedLocation = Persist.persistObject(panel.location, panel.context); // fn(context)->location
+
+ if (panel.selection)
+ panelState.persistedSelection = Persist.persistObject(panel.selection, panel.context);
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("lib.persistObjects "+panel.name+" panel.location:"+panel.location+
+ " panel.selection:"+panel.selection+" panelState:", panelState);
+};
+
+Persist.persistObject = function(object, context)
+{
+ var rep = Firebug.getRep(object, context);
+ return rep ? rep.persistObject(object, context) : null;
+};
+
+Persist.restoreLocation = function(panel, panelState)
+{
+ var restored = false;
+
+ if (!panel.location && panelState && panelState.persistedLocation)
+ {
+ var location = panelState.persistedLocation(panel.context);
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("lib.restoreObjects "+panel.name+" persistedLocation: "+location+
+ " panelState:", panelState);
+
+ if (location)
+ {
+ panel.navigate(location);
+ restored = true;
+ }
+ }
+
+ if (!panel.location)
+ panel.navigate(null);
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("lib.restoreLocation panel.location: "+panel.location+" restored: "+
+ restored+" panelState:", panelState);
+
+ return restored;
+};
+
+Persist.restoreSelection = function(panel, panelState)
+{
+ var needRetry = false;
+
+ if (!panel.selection && panelState && panelState.persistedSelection)
+ {
+ var selection = panelState.persistedSelection(panel.context);
+ if (selection)
+ panel.select(selection);
+ else
+ needRetry = true;
+ }
+
+ if (!panel.selection) // Couldn't restore the selection, so select the default object
+ panel.select(null);
+
+ if (needRetry)
+ {
+ function overrideDefaultWithPersistedSelection()
+ {
+ if (panel.selection == panel.getDefaultSelection() && panelState.persistedSelection)
+ {
+ var selection = panelState.persistedSelection(panel.context);
+ if (selection)
+ panel.select(selection);
+ }
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("lib.overrideDefaultsWithPersistedValues "+panel.name+
+ " panel.location: "+panel.location+" panel.selection: "+panel.selection+
+ " panelState:", panelState);
+ }
+
+ // If we couldn't restore the selection, wait a bit and try again
+ panel.context.setTimeout(overrideDefaultWithPersistedSelection,
+ overrideDefaultsWithPersistedValuesTimeout);
+ }
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("lib.restore "+panel.name+" needRetry "+needRetry+" panel.selection: "+
+ panel.selection+" panelState:", panelState);
+};
+
+Persist.restoreObjects = function(panel, panelState)
+{
+ Persist.restoreLocation(panel, panelState);
+ Persist.restoreSelection(panel, panelState);
+};
+
+Persist.getPersistedState = function(context, panelName)
+{
+ if (!context)
+ return null;
+
+ var persistedState = context.persistedState;
+ if (!persistedState)
+ persistedState = context.persistedState = {};
+
+ if (!persistedState.panelState)
+ persistedState.panelState = {};
+
+ var panelState = persistedState.panelState[panelName];
+ if (!panelState)
+ panelState = persistedState.panelState[panelName] = {};
+
+ return panelState;
+};
+
+// ********************************************************************************************* //
+
+return Persist;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/search.js b/content/firebug/lib/search.js
index 2bee814..fb878f0 100644
--- a/content/firebug/lib/search.js
+++ b/content/firebug/lib/search.js
@@ -1,350 +1,350 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/options",
-],
-function(FBTrace, Options) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Ci = Components.interfaces;
-var Cc = Components.classes;
-
-var Search = {};
-
-var finder = Search.finder = Cc["@mozilla.org/embedcomp/rangefind;1"].createInstance(Ci.nsIFind);
-
-// ********************************************************************************************* //
-
-/**
- * @class Searches for text in a given node.
- *
- * @constructor
- * @param {Node} rootNode Node to search
- * @param {Function} rowFinder results filter. On find this method will be called
- * with the node containing the matched text as the first parameter. This may
- * be undefined to return the node as is.
- */
-Search.TextSearch = function(rootNode, rowFinder)
-{
- var doc = rootNode.ownerDocument;
- var searchRange = null;
- var startPt = null;
-
- /**
- * Find the first result in the node.
- *
- * @param {String} text Text to search for
- * @param {boolean} reverse true to perform a reverse search
- * @param {boolean} caseSensitive true to perform a case sensitive search
- */
- this.find = function(text, reverse, caseSensitive)
- {
- this.text = text;
-
- finder.findBackwards = !!reverse;
- finder.caseSensitive = !!caseSensitive;
-
- var range = this.range = finder.Find(
- text, searchRange,
- startPt || searchRange,
- searchRange);
-
- var match = range ? range.startContainer : null;
- return this.currentNode = (rowFinder && match ? rowFinder(match) : match);
- };
-
- /**
- * Find the next search result
- *
- * @param {boolean} wrapAround true to wrap the search if the end of range is reached
- * @param {boolean} sameNode true to return multiple results from the same text node
- * @param {boolean} reverse true to search in reverse
- * @param {boolean} caseSensitive true to perform a case sensitive search
- */
- this.findNext = function(wrapAround, sameNode, reverse, caseSensitive)
- {
- this.wrapped = false;
- startPt = undefined;
-
- if (sameNode && this.range)
- {
- startPt = this.range.cloneRange();
- if (reverse)
- startPt.setEnd(startPt.startContainer, startPt.startOffset);
- else
- startPt.setStart(startPt.startContainer, startPt.startOffset+1);
- }
-
- if (!startPt)
- {
- var curNode = this.currentNode ? this.currentNode : rootNode;
- startPt = doc.createRange();
- try
- {
- if (reverse)
- {
- startPt.setStartBefore(curNode);
- }
- else
- {
- startPt.setStartAfter(curNode);
- }
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("lib.TextSearch.findNext setStartAfter fails for nodeType:"+
- (this.currentNode?this.currentNode.nodeType:rootNode.nodeType),e);
-
- try
- {
- FBTrace.sysout("setStart try\n");
- startPt.setStart(curNode);
- FBTrace.sysout("setStart success\n");
- }
- catch (exc)
- {
- return;
- }
- }
- }
-
- var match = startPt && this.find(this.text, reverse, caseSensitive);
- if (!match && wrapAround)
- {
- this.wrapped = true;
- this.reset();
- return this.find(this.text, reverse, caseSensitive);
- }
-
- return match;
- };
-
- /**
- * Resets the instance state to the initial state.
- */
- this.reset = function()
- {
- searchRange = doc.createRange();
- searchRange.selectNode(rootNode);
-
- startPt = searchRange;
- };
-
- this.reset();
-};
-
-Search.SourceBoxTextSearch = function(sourceBox)
-{
- this.tryToContinueSearch = function(sBox, text)
- {
- if (sBox != sourceBox)
- return false;
-
- var isSubstring = text.indexOf(this.text) !=-1 || this.text.indexOf(text) !=-1;
-
- if (isSubstring && this.mark && Math.abs(sourceBox.centralLine - this.mark) < 10)
- this.mark--;
- else
- this.reset();
-
- return true;
- };
- this.find = function(text, reverse, caseSensitive)
- {
- this.text = text;
-
- this.re = new Search.ReversibleRegExp(text);
-
- return this.findNext(false, reverse, caseSensitive);
- };
-
- this.findNext = function(wrapAround, reverse, caseSensitive)
- {
- this.wrapped = false;
- var lines = sourceBox.lines;
- var match = null;
- for (var iter = new Search.ReversibleIterator(lines.length, this.mark, reverse); iter.next();)
- {
- match = this.re.exec(lines[iter.index], false, caseSensitive);
- if (match)
- {
- this.mark = iter.index;
- return iter.index;
- }
- }
-
- if (!match && wrapAround)
- {
- this.reset();
- this.wrapped = true;
- return this.findNext(false, reverse, caseSensitive);
- }
-
- return match;
- };
-
- this.reset = function()
- {
- delete this.mark;
- };
-
- this.reset();
-};
-
-Search.ReversibleIterator = function(length, start, reverse)
-{
- this.length = length;
- this.index = start;
- this.reversed = !!reverse;
-
- this.next = function()
- {
- if (this.index === undefined || this.index === null)
- {
- this.index = this.reversed ? length : -1;
- }
- this.index += this.reversed ? -1 : 1;
-
- return 0 <= this.index && this.index < length;
- };
-
- this.reverse = function()
- {
- this.reversed = !this.reversed;
- };
-};
-
-
-/**
- * @class Implements a RegExp-like object that will search for the literal value
- * of a given string, rather than the regular expression. This allows for
- * iterative literal searches without having to escape user input strings
- * to prevent invalid regular expressions from being used.
- *
- * @constructor
- * @param {String} literal Text to search for
- * @param {Boolean} reverse Truthy to preform a reverse search, falsy to perform a forward seach
- * @param {Boolean} caseSensitive Truthy to perform a case sensitive search, falsy to perform a case insensitive search.
- */
-Search.LiteralRegExp = function(literal, reverse, caseSensitive)
-{
- var searchToken = (!caseSensitive) ? literal.toLowerCase() : literal;
-
- this.__defineGetter__("global", function() { return true; });
- this.__defineGetter__("multiline", function() { return true; });
- this.__defineGetter__("reverse", function() { return reverse; });
- this.__defineGetter__("ignoreCase", function() { return !caseSensitive; });
- this.lastIndex = 0;
-
- this.exec = function(text)
- {
- if (!text)
- return null;
-
- var searchText = (!caseSensitive) ? text.toLowerCase() : text,
- startIndex = (reverse ? text.length-1 : 0) + this.lastIndex,
- index;
-
- if (0 <= startIndex && startIndex < text.length)
- index = searchText[reverse ? "lastIndexOf" : "indexOf"](searchToken, startIndex);
- else
- index = -1;
-
- if (index >= 0)
- {
- var ret = [ text.substr(index, searchToken.length) ];
- ret.index = index;
- ret.input = text;
- this.lastIndex = index + (reverse ? -1*text.length : searchToken.length);
- return ret;
- }
- else
- this.lastIndex = 0;
-
- return null;
- };
-
- this.test = function(text)
- {
- if (!text)
- return false;
-
- var searchText = (!caseSensitive) ? text.toLowerCase() : text;
- return searchText.indexOf(searchToken) >= 0;
- };
-};
-
-Search.ReversibleRegExp = function(regex, flags)
-{
- var re = {};
-
- function expression(text, reverse)
- {
- return text + (reverse ? "(?![\\s\\S]*" + text + ")" : "");
- }
-
- function flag(flags, caseSensitive)
- {
- return (flags || "") + (caseSensitive ? "" : "i");
- }
-
- this.exec = function(text, reverse, caseSensitive, lastMatch)
- {
- // Ensure we have a regex
- var key = (reverse ? "r" : "n") + (caseSensitive ? "n" : "i")
- + (Firebug.searchUseRegularExpression ? "r" : "n");
- if (!re[key])
- {
- try
- {
- if (Firebug.searchUseRegularExpression)
- re[key] = new RegExp(expression(regex, reverse), flag(flags, caseSensitive));
- else
- re[key] = new Search.LiteralRegExp(regex, reverse, caseSensitive);
- }
- catch (ex)
- {
- // The user likely entered an invalid regular expression or is in the
- // process of entering a valid one. Treat this as a plain text search
- re[key] = new Search.LiteralRegExp(regex, reverse, caseSensitive);
- }
- }
-
- // Modify as needed to all for iterative searches
- var indexOffset = 0;
- var searchText = text;
- if (lastMatch)
- {
- if (reverse)
- {
- searchText = text.substr(0, lastMatch.index);
- }
- else
- {
- indexOffset = lastMatch.index+lastMatch[0].length;
- searchText = text.substr(indexOffset);
- }
- }
-
- var curRe = re[key];
- curRe.lastIndex = 0;
- var ret = curRe.exec(searchText);
- if (ret)
- {
- ret.input = text;
- ret.index = ret.index + indexOffset;
- ret.reverse = reverse;
- ret.caseSensitive = caseSensitive;
- }
- return ret;
- };
-};
-
-return Search;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/options",
+],
+function(FBTrace, Options) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Ci = Components.interfaces;
+var Cc = Components.classes;
+
+var Search = {};
+
+var finder = Search.finder = Cc["@mozilla.org/embedcomp/rangefind;1"].createInstance(Ci.nsIFind);
+
+// ********************************************************************************************* //
+
+/**
+ * @class Searches for text in a given node.
+ *
+ * @constructor
+ * @param {Node} rootNode Node to search
+ * @param {Function} rowFinder results filter. On find this method will be called
+ * with the node containing the matched text as the first parameter. This may
+ * be undefined to return the node as is.
+ */
+Search.TextSearch = function(rootNode, rowFinder)
+{
+ var doc = rootNode.ownerDocument;
+ var searchRange = null;
+ var startPt = null;
+
+ /**
+ * Find the first result in the node.
+ *
+ * @param {String} text Text to search for
+ * @param {boolean} reverse true to perform a reverse search
+ * @param {boolean} caseSensitive true to perform a case sensitive search
+ */
+ this.find = function(text, reverse, caseSensitive)
+ {
+ this.text = text;
+
+ finder.findBackwards = !!reverse;
+ finder.caseSensitive = !!caseSensitive;
+
+ var range = this.range = finder.Find(
+ text, searchRange,
+ startPt || searchRange,
+ searchRange);
+
+ var match = range ? range.startContainer : null;
+ return this.currentNode = (rowFinder && match ? rowFinder(match) : match);
+ };
+
+ /**
+ * Find the next search result
+ *
+ * @param {boolean} wrapAround true to wrap the search if the end of range is reached
+ * @param {boolean} sameNode true to return multiple results from the same text node
+ * @param {boolean} reverse true to search in reverse
+ * @param {boolean} caseSensitive true to perform a case sensitive search
+ */
+ this.findNext = function(wrapAround, sameNode, reverse, caseSensitive)
+ {
+ this.wrapped = false;
+ startPt = undefined;
+
+ if (sameNode && this.range)
+ {
+ startPt = this.range.cloneRange();
+ if (reverse)
+ startPt.setEnd(startPt.startContainer, startPt.startOffset);
+ else
+ startPt.setStart(startPt.startContainer, startPt.startOffset+1);
+ }
+
+ if (!startPt)
+ {
+ var curNode = this.currentNode ? this.currentNode : rootNode;
+ startPt = doc.createRange();
+ try
+ {
+ if (reverse)
+ {
+ startPt.setStartBefore(curNode);
+ }
+ else
+ {
+ startPt.setStartAfter(curNode);
+ }
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("lib.TextSearch.findNext setStartAfter fails for nodeType:"+
+ (this.currentNode?this.currentNode.nodeType:rootNode.nodeType),e);
+
+ try
+ {
+ FBTrace.sysout("setStart try\n");
+ startPt.setStart(curNode);
+ FBTrace.sysout("setStart success\n");
+ }
+ catch (exc)
+ {
+ return;
+ }
+ }
+ }
+
+ var match = startPt && this.find(this.text, reverse, caseSensitive);
+ if (!match && wrapAround)
+ {
+ this.wrapped = true;
+ this.reset();
+ return this.find(this.text, reverse, caseSensitive);
+ }
+
+ return match;
+ };
+
+ /**
+ * Resets the instance state to the initial state.
+ */
+ this.reset = function()
+ {
+ searchRange = doc.createRange();
+ searchRange.selectNode(rootNode);
+
+ startPt = searchRange;
+ };
+
+ this.reset();
+};
+
+Search.SourceBoxTextSearch = function(sourceBox)
+{
+ this.tryToContinueSearch = function(sBox, text)
+ {
+ if (sBox != sourceBox)
+ return false;
+
+ var isSubstring = text.indexOf(this.text) !=-1 || this.text.indexOf(text) !=-1;
+
+ if (isSubstring && this.mark && Math.abs(sourceBox.centralLine - this.mark) < 10)
+ this.mark--;
+ else
+ this.reset();
+
+ return true;
+ };
+ this.find = function(text, reverse, caseSensitive)
+ {
+ this.text = text;
+
+ this.re = new Search.ReversibleRegExp(text);
+
+ return this.findNext(false, reverse, caseSensitive);
+ };
+
+ this.findNext = function(wrapAround, reverse, caseSensitive)
+ {
+ this.wrapped = false;
+ var lines = sourceBox.lines;
+ var match = null;
+ for (var iter = new Search.ReversibleIterator(lines.length, this.mark, reverse); iter.next();)
+ {
+ match = this.re.exec(lines[iter.index], false, caseSensitive);
+ if (match)
+ {
+ this.mark = iter.index;
+ return iter.index;
+ }
+ }
+
+ if (!match && wrapAround)
+ {
+ this.reset();
+ this.wrapped = true;
+ return this.findNext(false, reverse, caseSensitive);
+ }
+
+ return match;
+ };
+
+ this.reset = function()
+ {
+ delete this.mark;
+ };
+
+ this.reset();
+};
+
+Search.ReversibleIterator = function(length, start, reverse)
+{
+ this.length = length;
+ this.index = start;
+ this.reversed = !!reverse;
+
+ this.next = function()
+ {
+ if (this.index === undefined || this.index === null)
+ {
+ this.index = this.reversed ? length : -1;
+ }
+ this.index += this.reversed ? -1 : 1;
+
+ return 0 <= this.index && this.index < length;
+ };
+
+ this.reverse = function()
+ {
+ this.reversed = !this.reversed;
+ };
+};
+
+
+/**
+ * @class Implements a RegExp-like object that will search for the literal value
+ * of a given string, rather than the regular expression. This allows for
+ * iterative literal searches without having to escape user input strings
+ * to prevent invalid regular expressions from being used.
+ *
+ * @constructor
+ * @param {String} literal Text to search for
+ * @param {Boolean} reverse Truthy to preform a reverse search, falsy to perform a forward seach
+ * @param {Boolean} caseSensitive Truthy to perform a case sensitive search, falsy to perform a case insensitive search.
+ */
+Search.LiteralRegExp = function(literal, reverse, caseSensitive)
+{
+ var searchToken = (!caseSensitive) ? literal.toLowerCase() : literal;
+
+ this.__defineGetter__("global", function() { return true; });
+ this.__defineGetter__("multiline", function() { return true; });
+ this.__defineGetter__("reverse", function() { return reverse; });
+ this.__defineGetter__("ignoreCase", function() { return !caseSensitive; });
+ this.lastIndex = 0;
+
+ this.exec = function(text)
+ {
+ if (!text)
+ return null;
+
+ var searchText = (!caseSensitive) ? text.toLowerCase() : text,
+ startIndex = (reverse ? text.length-1 : 0) + this.lastIndex,
+ index;
+
+ if (0 <= startIndex && startIndex < text.length)
+ index = searchText[reverse ? "lastIndexOf" : "indexOf"](searchToken, startIndex);
+ else
+ index = -1;
+
+ if (index >= 0)
+ {
+ var ret = [ text.substr(index, searchToken.length) ];
+ ret.index = index;
+ ret.input = text;
+ this.lastIndex = index + (reverse ? -1*text.length : searchToken.length);
+ return ret;
+ }
+ else
+ this.lastIndex = 0;
+
+ return null;
+ };
+
+ this.test = function(text)
+ {
+ if (!text)
+ return false;
+
+ var searchText = (!caseSensitive) ? text.toLowerCase() : text;
+ return searchText.indexOf(searchToken) >= 0;
+ };
+};
+
+Search.ReversibleRegExp = function(regex, flags)
+{
+ var re = {};
+
+ function expression(text, reverse)
+ {
+ return text + (reverse ? "(?![\\s\\S]*" + text + ")" : "");
+ }
+
+ function flag(flags, caseSensitive)
+ {
+ return (flags || "") + (caseSensitive ? "" : "i");
+ }
+
+ this.exec = function(text, reverse, caseSensitive, lastMatch)
+ {
+ // Ensure we have a regex
+ var key = (reverse ? "r" : "n") + (caseSensitive ? "n" : "i")
+ + (Firebug.searchUseRegularExpression ? "r" : "n");
+ if (!re[key])
+ {
+ try
+ {
+ if (Firebug.searchUseRegularExpression)
+ re[key] = new RegExp(expression(regex, reverse), flag(flags, caseSensitive));
+ else
+ re[key] = new Search.LiteralRegExp(regex, reverse, caseSensitive);
+ }
+ catch (ex)
+ {
+ // The user likely entered an invalid regular expression or is in the
+ // process of entering a valid one. Treat this as a plain text search
+ re[key] = new Search.LiteralRegExp(regex, reverse, caseSensitive);
+ }
+ }
+
+ // Modify as needed to all for iterative searches
+ var indexOffset = 0;
+ var searchText = text;
+ if (lastMatch)
+ {
+ if (reverse)
+ {
+ searchText = text.substr(0, lastMatch.index);
+ }
+ else
+ {
+ indexOffset = lastMatch.index+lastMatch[0].length;
+ searchText = text.substr(indexOffset);
+ }
+ }
+
+ var curRe = re[key];
+ curRe.lastIndex = 0;
+ var ret = curRe.exec(searchText);
+ if (ret)
+ {
+ ret.input = text;
+ ret.index = ret.index + indexOffset;
+ ret.reverse = reverse;
+ ret.caseSensitive = caseSensitive;
+ }
+ return ret;
+ };
+};
+
+return Search;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/string.js b/content/firebug/lib/string.js
index 488383f..d1e3362 100644
--- a/content/firebug/lib/string.js
+++ b/content/firebug/lib/string.js
@@ -1,939 +1,939 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/options",
- "firebug/lib/deprecated",
- "firebug/lib/xpcom"
-],
-function(FBTrace, Options, Deprecated, Xpcom) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
-
-const entityConverter = Xpcom.CCSV("@mozilla.org/intl/entityconverter;1", "nsIEntityConverter");
-
-const reNotWhitespace = /[^\s]/;
-
-var Str = {};
-
-// ********************************************************************************************* //
-// Whitespace and Entity conversions
-
-var entityConversionLists = Str.entityConversionLists =
-{
- normal : {
- whitespace : {
- "\t" : "\u200c\u2192",
- "\n" : "\u200c\u00b6",
- "\r" : "\u200c\u00ac",
- " " : "\u200c\u00b7"
- }
- },
- reverse : {
- whitespace : {
- "	" : "\t",
- "
" : "\n",
- "\u200c\u2192" : "\t",
- "\u200c\u00b6" : "\n",
- "\u200c\u00ac" : "\r",
- "\u200c\u00b7" : " "
- }
- }
-};
-
-var normal = entityConversionLists.normal,
- reverse = entityConversionLists.reverse;
-
-function addEntityMapToList(ccode, entity)
-{
- var lists = Array.slice(arguments, 2),
- len = lists.length,
- ch = String.fromCharCode(ccode);
-
- for (var i = 0; i < len; i++)
- {
- var list = lists[i];
- normal[list]=normal[list] || {};
- normal[list][ch] = "&" + entity + ";";
- reverse[list]=reverse[list] || {};
- reverse[list]["&" + entity + ";"] = ch;
- }
-}
-
-var e = addEntityMapToList,
- white = "whitespace",
- text = "text",
- attr = "attributes",
- css = "css",
- editor = "editor";
-
-e(0x0000, "#0", text, attr, css, editor);
-e(0x0022, "quot", attr, css);
-e(0x0026, "amp", attr, text, css);
-e(0x0027, "apos", css);
-e(0x003c, "lt", attr, text, css);
-e(0x003e, "gt", attr, text, css);
-e(0xa9, "copy", text, editor);
-e(0xae, "reg", text, editor);
-e(0x2122, "trade", text, editor);
-
-// See http://en.wikipedia.org/wiki/Dash
-e(0x2012, "#8210", attr, text, editor); // figure dash
-e(0x2013, "ndash", attr, text, editor); // en dash
-e(0x2014, "mdash", attr, text, editor); // em dash
-e(0x2015, "#8213", attr, text, editor); // horizontal bar
-
-// See http://www.cs.tut.fi/~jkorpela/chars/spaces.html
-e(0x00a0, "nbsp", attr, text, white, editor);
-e(0x2002, "ensp", attr, text, white, editor);
-e(0x2003, "emsp", attr, text, white, editor);
-e(0x2004, "emsp13", attr, text, white, editor);
-e(0x2005, "emsp14", attr, text, white, editor);
-e(0x2007, "numsp", attr, text, white, editor);
-e(0x2008, "puncsp", attr, text, white, editor);
-e(0x2009, "thinsp", attr, text, white, editor);
-e(0x200a, "hairsp", attr, text, white, editor);
-e(0x200b, "#8203", attr, text, white, editor); // zero-width space (ZWSP)
-e(0x200c, "zwnj", attr, text, white, editor);
-
-e(0x202f, "#8239", attr, text, white, editor); // NARROW NO-BREAK SPACE
-e(0x205f, "#8287", attr, text, white, editor); // MEDIUM MATHEMATICAL SPACE
-e(0x3000, "#12288", attr, text, white, editor); // IDEOGRAPHIC SPACE
-e(0xfeff, "#65279", attr, text, white, editor); // ZERO WIDTH NO-BREAK SPACE
-
-e(0x200d, "zwj", attr, text, white, editor);
-e(0x200e, "lrm", attr, text, white, editor);
-e(0x200f, "rlm", attr, text, white, editor);
-e(0x202d, "#8237", attr, text, white, editor); // left-to-right override
-e(0x202e, "#8238", attr, text, white, editor); // right-to-left override
-
-// ********************************************************************************************* //
-// Entity escaping
-
-var entityConversionRegexes =
-{
- normal : {},
- reverse : {}
-};
-
-var escapeEntitiesRegEx =
-{
- normal : function(list)
- {
- var chars = [];
- for (var ch in list)
- chars.push(ch);
- return new RegExp("([" + chars.join("") + "])", "gm");
- },
- reverse : function(list)
- {
- var chars = [];
- for (var ch in list)
- chars.push(ch);
- return new RegExp("(" + chars.join("|") + ")", "gm");
- }
-};
-
-function getEscapeRegexp(direction, lists)
-{
- var name = "";
- var re;
- var groups = [].concat(lists);
- for (i = 0; i < groups.length; i++)
- name += groups[i].group;
- re = entityConversionRegexes[direction][name];
- if (!re)
- {
- var list = {};
- if (groups.length > 1)
- {
- for ( var i = 0; i < groups.length; i++)
- {
- var aList = entityConversionLists[direction][groups[i].group];
- for ( var item in aList)
- list[item] = aList[item];
- }
- }
- else if (groups.length==1)
- {
- list = entityConversionLists[direction][groups[0].group]; // faster for special case
- }
- else
- {
- list = {}; // perhaps should print out an error here?
- }
- re = entityConversionRegexes[direction][name] = escapeEntitiesRegEx[direction](list);
- }
- return re;
-}
-
-function createSimpleEscape(name, direction)
-{
- return function(value)
- {
- var list = entityConversionLists[direction][name];
- return String(value).replace(
- getEscapeRegexp(direction, {
- group : name,
- list : list
- }),
- function(ch)
- {
- return list[ch];
- }
- );
- };
-}
-
-function escapeEntityAsName(char)
-{
- try
- {
- return entityConverter.ConvertToEntity(char, entityConverter.entityW3C);
- }
- catch(e)
- {
- return char;
- }
-}
-
-function escapeEntityAsUnicode(char)
-{
- var charCode = char.charCodeAt(0);
-
- if (charCode == 34)
- return """;
- else if (charCode == 38)
- return "&";
- else if (charCode < 32 || charCode >= 127)
- return "&#" + charCode + ";";
-
- return char;
-}
-
-function escapeGroupsForEntities(str, lists, type)
-{
- var results = [];
- var noEntityString = "";
- var textListIndex = -1;
-
- if (!type)
- type = "names";
-
- for (var i = 0, listsLen = lists.length; i < listsLen; i++)
- {
- if (lists[i].group == "text")
- {
- textListIndex = i;
- break;
- }
- }
-
- for (var i = 0, strLen = str.length; i < strLen; i++)
- {
- var result = str.charAt(i);
-
- // If there's "text" in the list groups, use a different
- // method for converting the characters
- if (textListIndex != -1)
- {
- if (type == "unicode")
- result = escapeEntityAsUnicode(str.charAt(i));
- else if (type == "names")
- result = escapeEntityAsName(str.charAt(i));
- }
-
- if (result != str.charAt(i))
- {
- if (noEntityString != "")
- {
- results.push({
- "str": noEntityString,
- "class": "",
- "extra": ""
- });
- noEntityString = "";
- }
-
- results.push({
- "str": result,
- "class": lists[textListIndex].class,
- "extra": lists[textListIndex].extra[result] ? lists[textListIndex].class
- + lists[textListIndex].extra[result] : ""
- });
- }
- else
- {
- var listEntity;
- for (var j = 0, listsLen = lists.length; j < listsLen; j++)
- {
- var list = lists[j];
- if (list.group != "text")
- {
- listEntity = entityConversionLists.normal[list.group][result];
- if (listEntity)
- {
- result = listEntity;
-
- if (noEntityString != "")
- {
- results.push({
- "str": noEntityString,
- "class": "",
- "extra": ""
- });
- noEntityString = "";
- }
-
- results.push({
- "str": result,
- "class": list.class,
- "extra": list.extra[result] ? list.class + list.extra[result] : ""
- });
- break;
- }
- }
- }
-
- if (result == str.charAt(i))
- {
- noEntityString += result;
- }
- }
- }
-
- if (noEntityString != "")
- {
- results.push({
- "str": noEntityString,
- "class": "",
- "extra": ""
- });
- }
-
- return results;
-}
-
-Str.escapeGroupsForEntities = escapeGroupsForEntities;
-
-function unescapeEntities(str, lists)
-{
- var re = getEscapeRegexp("reverse", lists),
- split = String(str).split(re),
- len = split.length,
- results = [],
- cur, r, i, ri = 0, l, list;
-
- if (!len)
- return str;
-
- lists = [].concat(lists);
- for (i = 0; i < len; i++)
- {
- cur = split[i];
- if (cur == '')
- continue;
-
- for (l = 0; l < lists.length; l++)
- {
- list = lists[l];
- r = entityConversionLists.reverse[list.group][cur];
- if (r)
- {
- results[ri] = r;
- break;
- }
- }
-
- if (!r)
- results[ri] = cur;
- ri++;
- }
- return results.join('') || '';
-}
-
-// ********************************************************************************************* //
-// String escaping
-
-var escapeForTextNode = Str.escapeForTextNode = createSimpleEscape("text", "normal");
-var escapeForElementAttribute = Str.escapeForElementAttribute = createSimpleEscape("attributes", "normal");
-Str.escapeForHtmlEditor = createSimpleEscape("editor", "normal");
-Str.escapeForCss = createSimpleEscape("css", "normal");
-
-// deprecated compatibility functions
-Str.deprecateEscapeHTML = createSimpleEscape("text", "normal");
-Str.deprecatedUnescapeHTML = createSimpleEscape("text", "reverse");
-
-Str.escapeHTML = Deprecated.deprecated("use appropriate escapeFor... function",
- Str.deprecateEscapeHTML);
-Str.unescapeHTML = Deprecated.deprecated("use appropriate unescapeFor... function",
- Str.deprecatedUnescapeHTML);
-
-var escapeForSourceLine = Str.escapeForSourceLine = createSimpleEscape("text", "normal");
-
-var unescapeWhitespace = createSimpleEscape("whitespace", "reverse");
-
-Str.unescapeForTextNode = function(str)
-{
- if (Options.get("showTextNodesWithWhitespace"))
- str = unescapeWhitespace(str);
-
- if (Options.get("entityDisplay") == "names")
- str = escapeForElementAttribute(str);
-
- return str;
-};
-
-Str.unescapeForURL = createSimpleEscape('text', 'reverse');
-
-Str.escapeNewLines = function(value)
-{
- return value.replace(/\r/gm, "\\r").replace(/\n/gm, "\\n");
-};
-
-Str.stripNewLines = function(value)
-{
- return typeof(value) == "string" ? value.replace(/[\r\n]/gm, " ") : value;
-};
-
-Str.escapeSingleQuoteJS = function(value)
-{
- return value.replace("\\", "\\\\", "g").replace(/\r/gm, "\\r")
- .replace(/\n/gm, "\\n").replace("'", "\\'", "g");
-};
-
-Str.reverseString = function(value)
-{
- return value.split("").reverse().join("");
-};
-
-Str.escapeJS = function(value)
-{
- return value.replace("\\", "\\\\", "g").replace(/\r/gm, "\\r")
- .replace(/\n/gm, "\\n").replace('"', '\\"', "g");
-};
-
-Str.cropString = function(text, limit, alterText)
-{
- if (!alterText)
- alterText = "...";
-
- // Make sure it's a string.
- text = text + "";
-
- // Use default limit if necessary.
- if (!limit)
- limit = Options.get("stringCropLength");
-
- // Crop the string only if a limit is actually specified.
- if (limit <= 0)
- return text;
-
- var halfLimit = (limit / 2);
- halfLimit -= 2; // adjustment for alterText's increase in size
-
- if (text.length > limit)
- return text.substr(0, halfLimit) + alterText + text.substr(text.length-halfLimit);
-
- return text;
-};
-
-Str.cropStringEx = function(text, limit, alterText, pivot)
-{
- if (!alterText)
- alterText = "...";
-
- // Make sure it's a string.
- text = text + "";
-
- // Use default limit if necessary.
- if (!limit)
- limit = Options.get("stringCropLength");
-
- // Crop the string only if a limit is actually specified.
- if (limit <= 0)
- return text;
-
- if (text.length < limit)
- return text;
-
- if (typeof(pivot) == "undefined")
- pivot = text.length / 2;
-
- var halfLimit = (limit / 2);
-
- // Adjust the pivot to the real center in case it's at an edge.
- if (pivot < halfLimit)
- pivot = halfLimit;
-
- if (pivot > text.length - halfLimit)
- pivot = text.length - halfLimit;
-
- // Get substring around the pivot
- var begin = Math.max(0, pivot - halfLimit);
- var end = Math.min(text.length - 1, pivot + halfLimit);
- var result = text.substring(begin, end);
-
- // Add alterText to the beginning or end of the result as necessary.
- if (begin > 0)
- result = alterText + result;
-
- if (end < text.length - 1)
- result += alterText;
-
- return result;
-};
-
-Str.lineBreak = function()
-{
- if (navigator.appVersion.indexOf("Win") != -1)
- return "\r\n";
-
- if (navigator.appVersion.indexOf("Mac") != -1)
- return "\r";
-
- return "\n";
-};
-
-Str.cropMultipleLines = function(text, limit)
-{
- return this.escapeNewLines(this.cropString(text, limit));
-};
-
-Str.isWhitespace = function(text)
-{
- return !reNotWhitespace.exec(text);
-};
-
-Str.splitLines = function(text)
-{
- if (!text)
- return [];
-
- const reSplitLines2 = /.*(:?\r\n|\n|\r)?/mg;
- var lines;
- if (text.match)
- {
- lines = text.match(reSplitLines2);
- }
- else
- {
- var str = text+"";
- lines = str.match(reSplitLines2);
- }
- lines.pop();
- return lines;
-};
-
-Str.trim = function(text)
-{
- return text.replace(/^\s*|\s*$/g, "");
-};
-
-Str.trimLeft = function(text)
-{
- return text.replace(/^\s+/, "");
-};
-
-Str.trimRight = function(text)
-{
- return text.replace(/\s+$/, "");
-};
-
-Str.hasPrefix = function(hay, needle)
-{
- // Passing empty string is ok, but null or undefined is not.
- if (hay == null)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("Str.hasPrefix; string must not be null", {hay: hay, needle: needle});
-
- return false;
- }
-
- // This is the fastest way of testing for prefixes - (hay.indexOf(needle) === 0)
- // can be O(|hay|) in the worst case, and (hay.substr(0, needle.length) === needle)
- // unnecessarily creates a new string and might be O(|needle|) in some JavaScript
- // implementations. See the discussion in issue 3071.
- return hay.lastIndexOf(needle, 0) === 0;
-};
-
-Str.endsWith = function(str, suffix)
-{
- return str.indexOf(suffix, str.length - suffix.length) !== -1;
-};
-
-// ********************************************************************************************* //
-// HTML Wrap
-
-Str.wrapText = function(text, noEscapeHTML)
-{
- var reNonAlphaNumeric = /[^A-Za-z_$0-9'"-]/;
-
- var html = [];
- var wrapWidth = Options.get("textWrapWidth");
-
- // Split long text into lines and put every line into a <code> element (only in case
- // if noEscapeHTML is false). This is useful for automatic scrolling when searching
- // within response body (in order to scroll we need an element).
- // Don't use <pre> elements since this adds additional new line endings when copying
- // selected source code using Firefox->Edit->Copy (Ctrl+C) (issue 2093).
- var lines = Str.splitLines(text);
- for (var i = 0; i < lines.length; ++i)
- {
- var line = lines[i];
-
- if (wrapWidth > 0)
- {
- while (line.length > wrapWidth)
- {
- var m = reNonAlphaNumeric.exec(line.substr(wrapWidth, 100));
- var wrapIndex = wrapWidth + (m ? m.index : 0);
- var subLine = line.substr(0, wrapIndex);
- line = line.substr(wrapIndex);
-
- if (!noEscapeHTML) html.push("<code class=\"wrappedText focusRow\" role=\"listitem\">");
- html.push(noEscapeHTML ? subLine : escapeForTextNode(subLine));
- if (!noEscapeHTML) html.push("</code>");
- }
- }
-
- if (!noEscapeHTML) html.push("<code class=\"wrappedText focusRow\" role=\"listitem\">");
- html.push(noEscapeHTML ? line : escapeForTextNode(line));
- if (!noEscapeHTML) html.push("</code>");
- }
-
- return html;
-};
-
-Str.insertWrappedText = function(text, textBox, noEscapeHTML)
-{
- var html = Str.wrapText(text, noEscapeHTML);
- textBox.innerHTML = "<pre role=\"list\">" + html.join("") + "</pre>";
-};
-
-// ********************************************************************************************* //
-// Indent
-
-const reIndent = /^(\s+)/;
-
-function getIndent(line)
-{
- var m = reIndent.exec(line);
- return m ? m[0].length : 0;
-}
-
-Str.cleanIndentation = function(text)
-{
- var lines = Str.splitLines(text);
-
- var minIndent = -1;
- for (var i = 0; i < lines.length; ++i)
- {
- var line = lines[i];
- var indent = getIndent(line);
- if (minIndent == -1 && line && !Str.isWhitespace(line))
- minIndent = indent;
- if (indent >= minIndent)
- lines[i] = line.substr(minIndent);
- }
- return lines.join("");
-};
-
-// ********************************************************************************************* //
-// Formatting
-
-//deprecated compatibility functions
-Str.deprecateEscapeHTML = createSimpleEscape("text", "normal");
-
-/**
- * Formats a number with a fixed number of decimal places considering the locale settings
- * @param {Integer} number Number to format
- * @param {Integer} decimals Number of decimal places
- * @returns {String} Formatted number
- */
-Str.toFixedLocaleString = function(number, decimals)
-{
- // Check whether 'number' is a valid number
- if (isNaN(parseFloat(number)))
- throw new Error("Value '" + number + "' of the 'number' parameter is not a number");
-
- // Check whether 'decimals' is a valid number
- if (isNaN(parseFloat(decimals)))
- throw new Error("Value '" + decimals + "' of the 'decimals' parameter is not a number");
-
- var precision = Math.pow(10, decimals);
- var formattedNumber = (Math.round(number * precision) / precision).toLocaleString();
- var decimalMark = (0.1).toLocaleString().match(/\D/);
- var decimalsCount = (formattedNumber.lastIndexOf(decimalMark) == -1) ?
- 0 : formattedNumber.length - formattedNumber.lastIndexOf(decimalMark) - 1;
-
- // Append decimals if needed
- if (decimalsCount < decimals)
- {
- // If the number doesn't have any decimals, add the decimal mark
- if (decimalsCount == 0)
- formattedNumber += decimalMark;
-
- // Append additional decimals
- for (var i=0, count = decimals - decimalsCount; i<count; ++i)
- formattedNumber += "0";
- }
-
- return formattedNumber;
-};
-
-Str.formatNumber = Deprecated.deprecated("use <number>.toLocaleString() instead",
- function(number) { return number.toLocaleString(); });
-
-Str.formatSize = function(bytes)
-{
- var negative = (bytes < 0);
- bytes = Math.abs(bytes);
-
- var sizePrecision = Options.get("sizePrecision");
- if (typeof(sizePrecision) == "undefined")
- {
- Options.set("sizePrecision", 2);
- sizePrecision = 2;
- }
-
- // Get size precision (number of decimal places from the preferences)
- // and make sure it's within limits.
- sizePrecision = (sizePrecision > 2) ? 2 : sizePrecision;
- sizePrecision = (sizePrecision < -1) ? -1 : sizePrecision;
-
- var result;
-
- if (sizePrecision == -1)
- result = bytes + " B";
-
- var precision = Math.pow(10, sizePrecision);
-
- if (bytes == -1 || bytes == undefined)
- return "?";
- else if (bytes == 0)
- return "0 B";
- else if (bytes < 1024)
- result = bytes.toLocaleString() + " B";
- else if (Math.round(bytes / 1024 * precision) / precision < 1024)
- result = this.toFixedLocaleString(bytes / 1024, sizePrecision) + " KB";
- else
- result = this.toFixedLocaleString(bytes / (1024 * 1024), sizePrecision) + " MB";
-
- return negative ? "-" + result : result;
-};
-
-/**
- * Returns a formatted time string
- *
- * Examples:
- * Str.formatTime(12345678) => default formatting options => "3h 25m 45.678s"
- * Str.formatTime(12345678, "ms") => use milliseconds as min. time unit => "3h 25m 45s 678ms"
- * Str.formatTime(12345678, null, "m") => use minutes as max. time unit => "205m 45.678s"
- * Str.formatTime(12345678, "m", "h") => use minutes as min. and hours as max. time unit
- * => "3h 25.7613m"
- *
- * @param {Integer} time Time to format in milliseconds
- * @param {Integer} [minTimeUnit=1] Minimal time unit to use in the formatted string
- * (default is seconds)
- * @param {Integer} [maxTimeUnit=4] Maximal time unit to use in the formatted string
- * (default is days)
- * @returns {String} Formatted time string
- */
-Str.formatTime = function(time, minTimeUnit, maxTimeUnit, decimalPlaces)
-{
- var time = parseInt(time);
-
- if (isNaN(time))
- return "";
-
- var timeUnits = [
- {
- unit: "ms",
- interval: 1000
- },
- {
- unit: "s",
- interval: 60
- },
- {
- unit: "m",
- interval: 60
- },
- {
- unit: "h",
- interval: 24
- },
- {
- unit: "d",
- interval: 1
- },
- ];
-
- if (time == -1)
- {
- return "";
- }
- else
- {
- // Get the index of the min. and max. time unit and the decimal places
- var minTimeUnitIndex = (Math.abs(time) < 1000) ? 0 : 1;
- var maxTimeUnitIndex = timeUnits.length - 1;
-
- for (var i=0, len=timeUnits.length; i<len; ++i)
- {
- if (timeUnits[i].unit == minTimeUnit)
- minTimeUnitIndex = i;
- if (timeUnits[i].unit == maxTimeUnit)
- maxTimeUnitIndex = i;
- }
-
- if (!decimalPlaces)
- decimalPlaces = (Math.abs(time) >= 60000 && minTimeUnitIndex == 1 ? 0 : 2);
-
- // Calculate the maximal time interval
- var timeUnitInterval = 1;
- for (var i=0; i<maxTimeUnitIndex; ++i)
- timeUnitInterval *= timeUnits[i].interval;
-
- var formattedString = (time < 0 ? "-" : "");
- time = Math.abs(time);
- for (var i=maxTimeUnitIndex; i>=minTimeUnitIndex; --i)
- {
- var value = time / timeUnitInterval;
- if (i != minTimeUnitIndex)
- {
- if (value < 0)
- value = Math.ceil(value);
- else
- value = Math.floor(value);
- }
- else
- {
- var decimalFactor = Math.pow(10, decimalPlaces);
- value = Math.round(value * decimalFactor) / decimalFactor;
- }
-
- if (value != 0 || (i == minTimeUnitIndex && formattedString == ""))
- formattedString += value.toLocaleString() + timeUnits[i].unit + " ";
- time %= timeUnitInterval;
- if (i != 0)
- timeUnitInterval /= timeUnits[i - 1].interval;
- }
-
- return formattedString.trim();
- }
-};
-
-/**
- * Formats an IPv4 or IPv6 address incl. port
- * @param {String} address IP address to format
- * @param {String} [port] IP port to format
- * @returns {String} Formatted IP address
- */
-Str.formatIP = function(address, port)
-{
- if (!address || address == "")
- return "";
-
- var result = address;
- var isIPv6Address = address.indexOf(":") != -1;
- if (isIPv6Address)
- result = "["+result+"]";
-
- if (port && port != "")
- result += ":"+port;
-
- return result;
-};
-
-// ********************************************************************************************* //
-// Conversions
-
-Str.convertToUnicode = function(text, charset)
-{
- if (!text)
- return "";
-
- try
- {
- var conv = Cc["@mozilla.org/intl/scriptableunicodeconverter"].getService(
- Ci.nsIScriptableUnicodeConverter);
- conv.charset = charset ? charset : "UTF-8";
- return conv.ConvertToUnicode(text);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("Str.convertToUnicode: fails: for charset "+charset+" conv.charset:"+
- conv.charset+" exc: "+exc, exc);
- }
-
- // the exception is worthless, make up a new one
- throw new Error("Firebug failed to convert to unicode using charset: "+conv.charset+
- " in @mozilla.org/intl/scriptableunicodeconverter");
- }
-};
-
-Str.convertFromUnicode = function(text, charset)
-{
- if (!text)
- return "";
-
- try
- {
- var conv = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(
- Ci.nsIScriptableUnicodeConverter);
- conv.charset = charset ? charset : "UTF-8";
- return conv.ConvertFromUnicode(text);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("Str.convertFromUnicode: fails: for charset "+charset+" conv.charset:"+
- conv.charset+" exc: "+exc, exc);
- }
- }
-};
-
-// ********************************************************************************************* //
-
-Str.safeToString = function(ob)
-{
- try
- {
- if (!ob)
- return ""+ob;
- if (ob && (typeof (ob["toString"]) == "function") )
- return ob.toString();
- if (ob && typeof (ob["toSource"]) == "function")
- return ob.toSource();
- /* https://bugzilla.mozilla.org/show_bug.cgi?id=522590 */
- var str = "[";
- for (var p in ob)
- str += p + ",";
- return str + "]";
-
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("Str.safeToString FAILS "+exc, exc);
- }
- return "[unsupported: no toString() function in type "+typeof(ob)+"]";
-};
-
-// ********************************************************************************************* //
-
-return Str;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/options",
+ "firebug/lib/deprecated",
+ "firebug/lib/xpcom"
+],
+function(FBTrace, Options, Deprecated, Xpcom) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Ci = Components.interfaces;
+const Cc = Components.classes;
+const Cu = Components.utils;
+
+const entityConverter = Xpcom.CCSV("@mozilla.org/intl/entityconverter;1", "nsIEntityConverter");
+
+const reNotWhitespace = /[^\s]/;
+
+var Str = {};
+
+// ********************************************************************************************* //
+// Whitespace and Entity conversions
+
+var entityConversionLists = Str.entityConversionLists =
+{
+ normal : {
+ whitespace : {
+ "\t" : "\u200c\u2192",
+ "\n" : "\u200c\u00b6",
+ "\r" : "\u200c\u00ac",
+ " " : "\u200c\u00b7"
+ }
+ },
+ reverse : {
+ whitespace : {
+ "	" : "\t",
+ "
" : "\n",
+ "\u200c\u2192" : "\t",
+ "\u200c\u00b6" : "\n",
+ "\u200c\u00ac" : "\r",
+ "\u200c\u00b7" : " "
+ }
+ }
+};
+
+var normal = entityConversionLists.normal,
+ reverse = entityConversionLists.reverse;
+
+function addEntityMapToList(ccode, entity)
+{
+ var lists = Array.slice(arguments, 2),
+ len = lists.length,
+ ch = String.fromCharCode(ccode);
+
+ for (var i = 0; i < len; i++)
+ {
+ var list = lists[i];
+ normal[list]=normal[list] || {};
+ normal[list][ch] = "&" + entity + ";";
+ reverse[list]=reverse[list] || {};
+ reverse[list]["&" + entity + ";"] = ch;
+ }
+}
+
+var e = addEntityMapToList,
+ white = "whitespace",
+ text = "text",
+ attr = "attributes",
+ css = "css",
+ editor = "editor";
+
+e(0x0000, "#0", text, attr, css, editor);
+e(0x0022, "quot", attr, css);
+e(0x0026, "amp", attr, text, css);
+e(0x0027, "apos", css);
+e(0x003c, "lt", attr, text, css);
+e(0x003e, "gt", attr, text, css);
+e(0xa9, "copy", text, editor);
+e(0xae, "reg", text, editor);
+e(0x2122, "trade", text, editor);
+
+// See http://en.wikipedia.org/wiki/Dash
+e(0x2012, "#8210", attr, text, editor); // figure dash
+e(0x2013, "ndash", attr, text, editor); // en dash
+e(0x2014, "mdash", attr, text, editor); // em dash
+e(0x2015, "#8213", attr, text, editor); // horizontal bar
+
+// See http://www.cs.tut.fi/~jkorpela/chars/spaces.html
+e(0x00a0, "nbsp", attr, text, white, editor);
+e(0x2002, "ensp", attr, text, white, editor);
+e(0x2003, "emsp", attr, text, white, editor);
+e(0x2004, "emsp13", attr, text, white, editor);
+e(0x2005, "emsp14", attr, text, white, editor);
+e(0x2007, "numsp", attr, text, white, editor);
+e(0x2008, "puncsp", attr, text, white, editor);
+e(0x2009, "thinsp", attr, text, white, editor);
+e(0x200a, "hairsp", attr, text, white, editor);
+e(0x200b, "#8203", attr, text, white, editor); // zero-width space (ZWSP)
+e(0x200c, "zwnj", attr, text, white, editor);
+
+e(0x202f, "#8239", attr, text, white, editor); // NARROW NO-BREAK SPACE
+e(0x205f, "#8287", attr, text, white, editor); // MEDIUM MATHEMATICAL SPACE
+e(0x3000, "#12288", attr, text, white, editor); // IDEOGRAPHIC SPACE
+e(0xfeff, "#65279", attr, text, white, editor); // ZERO WIDTH NO-BREAK SPACE
+
+e(0x200d, "zwj", attr, text, white, editor);
+e(0x200e, "lrm", attr, text, white, editor);
+e(0x200f, "rlm", attr, text, white, editor);
+e(0x202d, "#8237", attr, text, white, editor); // left-to-right override
+e(0x202e, "#8238", attr, text, white, editor); // right-to-left override
+
+// ********************************************************************************************* //
+// Entity escaping
+
+var entityConversionRegexes =
+{
+ normal : {},
+ reverse : {}
+};
+
+var escapeEntitiesRegEx =
+{
+ normal : function(list)
+ {
+ var chars = [];
+ for (var ch in list)
+ chars.push(ch);
+ return new RegExp("([" + chars.join("") + "])", "gm");
+ },
+ reverse : function(list)
+ {
+ var chars = [];
+ for (var ch in list)
+ chars.push(ch);
+ return new RegExp("(" + chars.join("|") + ")", "gm");
+ }
+};
+
+function getEscapeRegexp(direction, lists)
+{
+ var name = "";
+ var re;
+ var groups = [].concat(lists);
+ for (i = 0; i < groups.length; i++)
+ name += groups[i].group;
+ re = entityConversionRegexes[direction][name];
+ if (!re)
+ {
+ var list = {};
+ if (groups.length > 1)
+ {
+ for ( var i = 0; i < groups.length; i++)
+ {
+ var aList = entityConversionLists[direction][groups[i].group];
+ for ( var item in aList)
+ list[item] = aList[item];
+ }
+ }
+ else if (groups.length==1)
+ {
+ list = entityConversionLists[direction][groups[0].group]; // faster for special case
+ }
+ else
+ {
+ list = {}; // perhaps should print out an error here?
+ }
+ re = entityConversionRegexes[direction][name] = escapeEntitiesRegEx[direction](list);
+ }
+ return re;
+}
+
+function createSimpleEscape(name, direction)
+{
+ return function(value)
+ {
+ var list = entityConversionLists[direction][name];
+ return String(value).replace(
+ getEscapeRegexp(direction, {
+ group : name,
+ list : list
+ }),
+ function(ch)
+ {
+ return list[ch];
+ }
+ );
+ };
+}
+
+function escapeEntityAsName(char)
+{
+ try
+ {
+ return entityConverter.ConvertToEntity(char, entityConverter.entityW3C);
+ }
+ catch(e)
+ {
+ return char;
+ }
+}
+
+function escapeEntityAsUnicode(char)
+{
+ var charCode = char.charCodeAt(0);
+
+ if (charCode == 34)
+ return """;
+ else if (charCode == 38)
+ return "&";
+ else if (charCode < 32 || charCode >= 127)
+ return "&#" + charCode + ";";
+
+ return char;
+}
+
+function escapeGroupsForEntities(str, lists, type)
+{
+ var results = [];
+ var noEntityString = "";
+ var textListIndex = -1;
+
+ if (!type)
+ type = "names";
+
+ for (var i = 0, listsLen = lists.length; i < listsLen; i++)
+ {
+ if (lists[i].group == "text")
+ {
+ textListIndex = i;
+ break;
+ }
+ }
+
+ for (var i = 0, strLen = str.length; i < strLen; i++)
+ {
+ var result = str.charAt(i);
+
+ // If there's "text" in the list groups, use a different
+ // method for converting the characters
+ if (textListIndex != -1)
+ {
+ if (type == "unicode")
+ result = escapeEntityAsUnicode(str.charAt(i));
+ else if (type == "names")
+ result = escapeEntityAsName(str.charAt(i));
+ }
+
+ if (result != str.charAt(i))
+ {
+ if (noEntityString != "")
+ {
+ results.push({
+ "str": noEntityString,
+ "class": "",
+ "extra": ""
+ });
+ noEntityString = "";
+ }
+
+ results.push({
+ "str": result,
+ "class": lists[textListIndex].class,
+ "extra": lists[textListIndex].extra[result] ? lists[textListIndex].class
+ + lists[textListIndex].extra[result] : ""
+ });
+ }
+ else
+ {
+ var listEntity;
+ for (var j = 0, listsLen = lists.length; j < listsLen; j++)
+ {
+ var list = lists[j];
+ if (list.group != "text")
+ {
+ listEntity = entityConversionLists.normal[list.group][result];
+ if (listEntity)
+ {
+ result = listEntity;
+
+ if (noEntityString != "")
+ {
+ results.push({
+ "str": noEntityString,
+ "class": "",
+ "extra": ""
+ });
+ noEntityString = "";
+ }
+
+ results.push({
+ "str": result,
+ "class": list.class,
+ "extra": list.extra[result] ? list.class + list.extra[result] : ""
+ });
+ break;
+ }
+ }
+ }
+
+ if (result == str.charAt(i))
+ {
+ noEntityString += result;
+ }
+ }
+ }
+
+ if (noEntityString != "")
+ {
+ results.push({
+ "str": noEntityString,
+ "class": "",
+ "extra": ""
+ });
+ }
+
+ return results;
+}
+
+Str.escapeGroupsForEntities = escapeGroupsForEntities;
+
+function unescapeEntities(str, lists)
+{
+ var re = getEscapeRegexp("reverse", lists),
+ split = String(str).split(re),
+ len = split.length,
+ results = [],
+ cur, r, i, ri = 0, l, list;
+
+ if (!len)
+ return str;
+
+ lists = [].concat(lists);
+ for (i = 0; i < len; i++)
+ {
+ cur = split[i];
+ if (cur == '')
+ continue;
+
+ for (l = 0; l < lists.length; l++)
+ {
+ list = lists[l];
+ r = entityConversionLists.reverse[list.group][cur];
+ if (r)
+ {
+ results[ri] = r;
+ break;
+ }
+ }
+
+ if (!r)
+ results[ri] = cur;
+ ri++;
+ }
+ return results.join('') || '';
+}
+
+// ********************************************************************************************* //
+// String escaping
+
+var escapeForTextNode = Str.escapeForTextNode = createSimpleEscape("text", "normal");
+var escapeForElementAttribute = Str.escapeForElementAttribute = createSimpleEscape("attributes", "normal");
+Str.escapeForHtmlEditor = createSimpleEscape("editor", "normal");
+Str.escapeForCss = createSimpleEscape("css", "normal");
+
+// deprecated compatibility functions
+Str.deprecateEscapeHTML = createSimpleEscape("text", "normal");
+Str.deprecatedUnescapeHTML = createSimpleEscape("text", "reverse");
+
+Str.escapeHTML = Deprecated.deprecated("use appropriate escapeFor... function",
+ Str.deprecateEscapeHTML);
+Str.unescapeHTML = Deprecated.deprecated("use appropriate unescapeFor... function",
+ Str.deprecatedUnescapeHTML);
+
+var escapeForSourceLine = Str.escapeForSourceLine = createSimpleEscape("text", "normal");
+
+var unescapeWhitespace = createSimpleEscape("whitespace", "reverse");
+
+Str.unescapeForTextNode = function(str)
+{
+ if (Options.get("showTextNodesWithWhitespace"))
+ str = unescapeWhitespace(str);
+
+ if (Options.get("entityDisplay") == "names")
+ str = escapeForElementAttribute(str);
+
+ return str;
+};
+
+Str.unescapeForURL = createSimpleEscape('text', 'reverse');
+
+Str.escapeNewLines = function(value)
+{
+ return value.replace(/\r/gm, "\\r").replace(/\n/gm, "\\n");
+};
+
+Str.stripNewLines = function(value)
+{
+ return typeof(value) == "string" ? value.replace(/[\r\n]/gm, " ") : value;
+};
+
+Str.escapeSingleQuoteJS = function(value)
+{
+ return value.replace("\\", "\\\\", "g").replace(/\r/gm, "\\r")
+ .replace(/\n/gm, "\\n").replace("'", "\\'", "g");
+};
+
+Str.reverseString = function(value)
+{
+ return value.split("").reverse().join("");
+};
+
+Str.escapeJS = function(value)
+{
+ return value.replace("\\", "\\\\", "g").replace(/\r/gm, "\\r")
+ .replace(/\n/gm, "\\n").replace('"', '\\"', "g");
+};
+
+Str.cropString = function(text, limit, alterText)
+{
+ if (!alterText)
+ alterText = "...";
+
+ // Make sure it's a string.
+ text = text + "";
+
+ // Use default limit if necessary.
+ if (!limit)
+ limit = Options.get("stringCropLength");
+
+ // Crop the string only if a limit is actually specified.
+ if (limit <= 0)
+ return text;
+
+ var halfLimit = (limit / 2);
+ halfLimit -= 2; // adjustment for alterText's increase in size
+
+ if (text.length > limit)
+ return text.substr(0, halfLimit) + alterText + text.substr(text.length-halfLimit);
+
+ return text;
+};
+
+Str.cropStringEx = function(text, limit, alterText, pivot)
+{
+ if (!alterText)
+ alterText = "...";
+
+ // Make sure it's a string.
+ text = text + "";
+
+ // Use default limit if necessary.
+ if (!limit)
+ limit = Options.get("stringCropLength");
+
+ // Crop the string only if a limit is actually specified.
+ if (limit <= 0)
+ return text;
+
+ if (text.length < limit)
+ return text;
+
+ if (typeof(pivot) == "undefined")
+ pivot = text.length / 2;
+
+ var halfLimit = (limit / 2);
+
+ // Adjust the pivot to the real center in case it's at an edge.
+ if (pivot < halfLimit)
+ pivot = halfLimit;
+
+ if (pivot > text.length - halfLimit)
+ pivot = text.length - halfLimit;
+
+ // Get substring around the pivot
+ var begin = Math.max(0, pivot - halfLimit);
+ var end = Math.min(text.length - 1, pivot + halfLimit);
+ var result = text.substring(begin, end);
+
+ // Add alterText to the beginning or end of the result as necessary.
+ if (begin > 0)
+ result = alterText + result;
+
+ if (end < text.length - 1)
+ result += alterText;
+
+ return result;
+};
+
+Str.lineBreak = function()
+{
+ if (navigator.appVersion.indexOf("Win") != -1)
+ return "\r\n";
+
+ if (navigator.appVersion.indexOf("Mac") != -1)
+ return "\r";
+
+ return "\n";
+};
+
+Str.cropMultipleLines = function(text, limit)
+{
+ return this.escapeNewLines(this.cropString(text, limit));
+};
+
+Str.isWhitespace = function(text)
+{
+ return !reNotWhitespace.exec(text);
+};
+
+Str.splitLines = function(text)
+{
+ if (!text)
+ return [];
+
+ const reSplitLines2 = /.*(:?\r\n|\n|\r)?/mg;
+ var lines;
+ if (text.match)
+ {
+ lines = text.match(reSplitLines2);
+ }
+ else
+ {
+ var str = text+"";
+ lines = str.match(reSplitLines2);
+ }
+ lines.pop();
+ return lines;
+};
+
+Str.trim = function(text)
+{
+ return text.replace(/^\s*|\s*$/g, "");
+};
+
+Str.trimLeft = function(text)
+{
+ return text.replace(/^\s+/, "");
+};
+
+Str.trimRight = function(text)
+{
+ return text.replace(/\s+$/, "");
+};
+
+Str.hasPrefix = function(hay, needle)
+{
+ // Passing empty string is ok, but null or undefined is not.
+ if (hay == null)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Str.hasPrefix; string must not be null", {hay: hay, needle: needle});
+
+ return false;
+ }
+
+ // This is the fastest way of testing for prefixes - (hay.indexOf(needle) === 0)
+ // can be O(|hay|) in the worst case, and (hay.substr(0, needle.length) === needle)
+ // unnecessarily creates a new string and might be O(|needle|) in some JavaScript
+ // implementations. See the discussion in issue 3071.
+ return hay.lastIndexOf(needle, 0) === 0;
+};
+
+Str.endsWith = function(str, suffix)
+{
+ return str.indexOf(suffix, str.length - suffix.length) !== -1;
+};
+
+// ********************************************************************************************* //
+// HTML Wrap
+
+Str.wrapText = function(text, noEscapeHTML)
+{
+ var reNonAlphaNumeric = /[^A-Za-z_$0-9'"-]/;
+
+ var html = [];
+ var wrapWidth = Options.get("textWrapWidth");
+
+ // Split long text into lines and put every line into a <code> element (only in case
+ // if noEscapeHTML is false). This is useful for automatic scrolling when searching
+ // within response body (in order to scroll we need an element).
+ // Don't use <pre> elements since this adds additional new line endings when copying
+ // selected source code using Firefox->Edit->Copy (Ctrl+C) (issue 2093).
+ var lines = Str.splitLines(text);
+ for (var i = 0; i < lines.length; ++i)
+ {
+ var line = lines[i];
+
+ if (wrapWidth > 0)
+ {
+ while (line.length > wrapWidth)
+ {
+ var m = reNonAlphaNumeric.exec(line.substr(wrapWidth, 100));
+ var wrapIndex = wrapWidth + (m ? m.index : 0);
+ var subLine = line.substr(0, wrapIndex);
+ line = line.substr(wrapIndex);
+
+ if (!noEscapeHTML) html.push("<code class=\"wrappedText focusRow\" role=\"listitem\">");
+ html.push(noEscapeHTML ? subLine : escapeForTextNode(subLine));
+ if (!noEscapeHTML) html.push("</code>");
+ }
+ }
+
+ if (!noEscapeHTML) html.push("<code class=\"wrappedText focusRow\" role=\"listitem\">");
+ html.push(noEscapeHTML ? line : escapeForTextNode(line));
+ if (!noEscapeHTML) html.push("</code>");
+ }
+
+ return html;
+};
+
+Str.insertWrappedText = function(text, textBox, noEscapeHTML)
+{
+ var html = Str.wrapText(text, noEscapeHTML);
+ textBox.innerHTML = "<pre role=\"list\">" + html.join("") + "</pre>";
+};
+
+// ********************************************************************************************* //
+// Indent
+
+const reIndent = /^(\s+)/;
+
+function getIndent(line)
+{
+ var m = reIndent.exec(line);
+ return m ? m[0].length : 0;
+}
+
+Str.cleanIndentation = function(text)
+{
+ var lines = Str.splitLines(text);
+
+ var minIndent = -1;
+ for (var i = 0; i < lines.length; ++i)
+ {
+ var line = lines[i];
+ var indent = getIndent(line);
+ if (minIndent == -1 && line && !Str.isWhitespace(line))
+ minIndent = indent;
+ if (indent >= minIndent)
+ lines[i] = line.substr(minIndent);
+ }
+ return lines.join("");
+};
+
+// ********************************************************************************************* //
+// Formatting
+
+//deprecated compatibility functions
+Str.deprecateEscapeHTML = createSimpleEscape("text", "normal");
+
+/**
+ * Formats a number with a fixed number of decimal places considering the locale settings
+ * @param {Integer} number Number to format
+ * @param {Integer} decimals Number of decimal places
+ * @returns {String} Formatted number
+ */
+Str.toFixedLocaleString = function(number, decimals)
+{
+ // Check whether 'number' is a valid number
+ if (isNaN(parseFloat(number)))
+ throw new Error("Value '" + number + "' of the 'number' parameter is not a number");
+
+ // Check whether 'decimals' is a valid number
+ if (isNaN(parseFloat(decimals)))
+ throw new Error("Value '" + decimals + "' of the 'decimals' parameter is not a number");
+
+ var precision = Math.pow(10, decimals);
+ var formattedNumber = (Math.round(number * precision) / precision).toLocaleString();
+ var decimalMark = (0.1).toLocaleString().match(/\D/);
+ var decimalsCount = (formattedNumber.lastIndexOf(decimalMark) == -1) ?
+ 0 : formattedNumber.length - formattedNumber.lastIndexOf(decimalMark) - 1;
+
+ // Append decimals if needed
+ if (decimalsCount < decimals)
+ {
+ // If the number doesn't have any decimals, add the decimal mark
+ if (decimalsCount == 0)
+ formattedNumber += decimalMark;
+
+ // Append additional decimals
+ for (var i=0, count = decimals - decimalsCount; i<count; ++i)
+ formattedNumber += "0";
+ }
+
+ return formattedNumber;
+};
+
+Str.formatNumber = Deprecated.deprecated("use <number>.toLocaleString() instead",
+ function(number) { return number.toLocaleString(); });
+
+Str.formatSize = function(bytes)
+{
+ var negative = (bytes < 0);
+ bytes = Math.abs(bytes);
+
+ var sizePrecision = Options.get("sizePrecision");
+ if (typeof(sizePrecision) == "undefined")
+ {
+ Options.set("sizePrecision", 2);
+ sizePrecision = 2;
+ }
+
+ // Get size precision (number of decimal places from the preferences)
+ // and make sure it's within limits.
+ sizePrecision = (sizePrecision > 2) ? 2 : sizePrecision;
+ sizePrecision = (sizePrecision < -1) ? -1 : sizePrecision;
+
+ var result;
+
+ if (sizePrecision == -1)
+ result = bytes + " B";
+
+ var precision = Math.pow(10, sizePrecision);
+
+ if (bytes == -1 || bytes == undefined)
+ return "?";
+ else if (bytes == 0)
+ return "0 B";
+ else if (bytes < 1024)
+ result = bytes.toLocaleString() + " B";
+ else if (Math.round(bytes / 1024 * precision) / precision < 1024)
+ result = this.toFixedLocaleString(bytes / 1024, sizePrecision) + " KB";
+ else
+ result = this.toFixedLocaleString(bytes / (1024 * 1024), sizePrecision) + " MB";
+
+ return negative ? "-" + result : result;
+};
+
+/**
+ * Returns a formatted time string
+ *
+ * Examples:
+ * Str.formatTime(12345678) => default formatting options => "3h 25m 45.678s"
+ * Str.formatTime(12345678, "ms") => use milliseconds as min. time unit => "3h 25m 45s 678ms"
+ * Str.formatTime(12345678, null, "m") => use minutes as max. time unit => "205m 45.678s"
+ * Str.formatTime(12345678, "m", "h") => use minutes as min. and hours as max. time unit
+ * => "3h 25.7613m"
+ *
+ * @param {Integer} time Time to format in milliseconds
+ * @param {Integer} [minTimeUnit=1] Minimal time unit to use in the formatted string
+ * (default is seconds)
+ * @param {Integer} [maxTimeUnit=4] Maximal time unit to use in the formatted string
+ * (default is days)
+ * @returns {String} Formatted time string
+ */
+Str.formatTime = function(time, minTimeUnit, maxTimeUnit, decimalPlaces)
+{
+ var time = parseInt(time);
+
+ if (isNaN(time))
+ return "";
+
+ var timeUnits = [
+ {
+ unit: "ms",
+ interval: 1000
+ },
+ {
+ unit: "s",
+ interval: 60
+ },
+ {
+ unit: "m",
+ interval: 60
+ },
+ {
+ unit: "h",
+ interval: 24
+ },
+ {
+ unit: "d",
+ interval: 1
+ },
+ ];
+
+ if (time == -1)
+ {
+ return "";
+ }
+ else
+ {
+ // Get the index of the min. and max. time unit and the decimal places
+ var minTimeUnitIndex = (Math.abs(time) < 1000) ? 0 : 1;
+ var maxTimeUnitIndex = timeUnits.length - 1;
+
+ for (var i=0, len=timeUnits.length; i<len; ++i)
+ {
+ if (timeUnits[i].unit == minTimeUnit)
+ minTimeUnitIndex = i;
+ if (timeUnits[i].unit == maxTimeUnit)
+ maxTimeUnitIndex = i;
+ }
+
+ if (!decimalPlaces)
+ decimalPlaces = (Math.abs(time) >= 60000 && minTimeUnitIndex == 1 ? 0 : 2);
+
+ // Calculate the maximal time interval
+ var timeUnitInterval = 1;
+ for (var i=0; i<maxTimeUnitIndex; ++i)
+ timeUnitInterval *= timeUnits[i].interval;
+
+ var formattedString = (time < 0 ? "-" : "");
+ time = Math.abs(time);
+ for (var i=maxTimeUnitIndex; i>=minTimeUnitIndex; --i)
+ {
+ var value = time / timeUnitInterval;
+ if (i != minTimeUnitIndex)
+ {
+ if (value < 0)
+ value = Math.ceil(value);
+ else
+ value = Math.floor(value);
+ }
+ else
+ {
+ var decimalFactor = Math.pow(10, decimalPlaces);
+ value = Math.round(value * decimalFactor) / decimalFactor;
+ }
+
+ if (value != 0 || (i == minTimeUnitIndex && formattedString == ""))
+ formattedString += value.toLocaleString() + timeUnits[i].unit + " ";
+ time %= timeUnitInterval;
+ if (i != 0)
+ timeUnitInterval /= timeUnits[i - 1].interval;
+ }
+
+ return formattedString.trim();
+ }
+};
+
+/**
+ * Formats an IPv4 or IPv6 address incl. port
+ * @param {String} address IP address to format
+ * @param {String} [port] IP port to format
+ * @returns {String} Formatted IP address
+ */
+Str.formatIP = function(address, port)
+{
+ if (!address || address == "")
+ return "";
+
+ var result = address;
+ var isIPv6Address = address.indexOf(":") != -1;
+ if (isIPv6Address)
+ result = "["+result+"]";
+
+ if (port && port != "")
+ result += ":"+port;
+
+ return result;
+};
+
+// ********************************************************************************************* //
+// Conversions
+
+Str.convertToUnicode = function(text, charset)
+{
+ if (!text)
+ return "";
+
+ try
+ {
+ var conv = Cc["@mozilla.org/intl/scriptableunicodeconverter"].getService(
+ Ci.nsIScriptableUnicodeConverter);
+ conv.charset = charset ? charset : "UTF-8";
+ return conv.ConvertToUnicode(text);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("Str.convertToUnicode: fails: for charset "+charset+" conv.charset:"+
+ conv.charset+" exc: "+exc, exc);
+ }
+
+ // the exception is worthless, make up a new one
+ throw new Error("Firebug failed to convert to unicode using charset: "+conv.charset+
+ " in @mozilla.org/intl/scriptableunicodeconverter");
+ }
+};
+
+Str.convertFromUnicode = function(text, charset)
+{
+ if (!text)
+ return "";
+
+ try
+ {
+ var conv = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(
+ Ci.nsIScriptableUnicodeConverter);
+ conv.charset = charset ? charset : "UTF-8";
+ return conv.ConvertFromUnicode(text);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("Str.convertFromUnicode: fails: for charset "+charset+" conv.charset:"+
+ conv.charset+" exc: "+exc, exc);
+ }
+ }
+};
+
+// ********************************************************************************************* //
+
+Str.safeToString = function(ob)
+{
+ try
+ {
+ if (!ob)
+ return ""+ob;
+ if (ob && (typeof (ob["toString"]) == "function") )
+ return ob.toString();
+ if (ob && typeof (ob["toSource"]) == "function")
+ return ob.toSource();
+ /* https://bugzilla.mozilla.org/show_bug.cgi?id=522590 */
+ var str = "[";
+ for (var p in ob)
+ str += p + ",";
+ return str + "]";
+
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("Str.safeToString FAILS "+exc, exc);
+ }
+ return "[unsupported: no toString() function in type "+typeof(ob)+"]";
+};
+
+// ********************************************************************************************* //
+
+return Str;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/system.js b/content/firebug/lib/system.js
index df46848..be48d1d 100644
--- a/content/firebug/lib/system.js
+++ b/content/firebug/lib/system.js
@@ -1,176 +1,176 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/array",
- "firebug/trace/debug",
- "firebug/lib/xpcom"
-],
-function(FBTrace, Arr, Debug, Xpcom) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Ci = Components.interfaces;
-var Cc = Components.classes;
-
-var ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
-
-var System = {};
-
-// ********************************************************************************************* //
-
-System.getPlatformName = function()
-{
- return Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime).OS;
-};
-
-System.beep = function()
-{
- var sounder = Cc["@mozilla.org/sound;1"].getService(Ci.nsISound);
- sounder.beep();
-};
-
-// ********************************************************************************************* //
-// Programs
-
-System.launchProgram = function(exePath, args)
-{
- try
- {
- var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
- file.initWithPath(exePath);
-
- if (System.getPlatformName() == "Darwin" && file.isDirectory())
- {
- args = Arr.extendArray(["-a", exePath], args);
- file.initWithPath("/usr/bin/open");
- }
-
- if (!file.exists())
- return false;
-
- var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
- process.init(file);
- process.run(false, args, args.length, {});
- return true;
- }
- catch (exc)
- {
- Debug.ERROR(exc);
- }
-
- return false;
-};
-
-System.getIconURLForFile = function(path)
-{
- var fileHandler = ioService.getProtocolHandler("file")
- .QueryInterface(Ci.nsIFileProtocolHandler);
-
- try
- {
- var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
- file.initWithPath(path);
-
- if ((System.getPlatformName() == "Darwin") && !file.isDirectory() &&
- (path.indexOf(".app/") != -1))
- {
- path = path.substr(0,path.lastIndexOf(".app/")+4);
- file.initWithPath(path);
- }
-
- return "moz-icon://" + fileHandler.getURLSpecFromFile(file) + "?size=16";
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("getIconURLForFile ERROR " + exc + " for " + path, exc);
- }
-
- return null;
-};
-
-System.copyToClipboard = function(string)
-{
- var clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
- clipboard.copyString(string);
-
- if (FBTrace.DBG_ERRORS && !string)
- FBTrace.sysout("system.copyToClipboard; " + string, string);
-};
-
-System.getStringDataFromClipboard = function()
-{
- // https://developer.mozilla.org/en-US/docs/Using_the_Clipboard#Pasting_Clipboard_Contents
- var clip = Cc["@mozilla.org/widget/clipboard;1"].getService(Ci.nsIClipboard);
- if (!clip)
- return false;
-
- var trans = Cc["@mozilla.org/widget/transferable;1"].createInstance(Ci.nsITransferable);
- if (!trans)
- return false;
-
- if ("init" in trans)
- trans.init(null);
-
- trans.addDataFlavor("text/unicode");
-
- clip.getData(trans, clip.kGlobalClipboard);
-
- var str = {};
- var strLength = {};
-
- try
- {
- trans.getTransferData("text/unicode", str, strLength);
-
- if (str)
- {
- str = str.value.QueryInterface(Ci.nsISupportsString);
- return str.data.substring(0, strLength.value / 2);
- }
- }
- catch (ex)
- {
- }
-
- return false;
-};
-
-// ********************************************************************************************* //
-// Firebug Version Comparator
-
-/**
- * Compare expected Firebug version with the current Firebug installed.
- * @param {Object} expectedVersion Expected version of Firebug.
- * @returns
- * -1 the current version is smaller
- * 0 the current version is the same
- * 1 the current version is bigger
- *
- * @example:
- * if (compareFirebugVersion("1.9") >= 0)
- * {
- * // The current version is Firebug 1.9+
- * }
- */
-System.checkFirebugVersion = function(expectedVersion)
-{
- if (!expectedVersion)
- return 1;
-
- var version = Firebug.getVersion();
-
- // Use Firefox comparator service.
- var versionChecker = Xpcom.CCSV("@mozilla.org/xpcom/version-comparator;1",
- "nsIVersionComparator");
- return versionChecker.compare(version, expectedVersion);
-};
-
-// ********************************************************************************************* //
-
-return System;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/array",
+ "firebug/trace/debug",
+ "firebug/lib/xpcom"
+],
+function(FBTrace, Arr, Debug, Xpcom) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Ci = Components.interfaces;
+var Cc = Components.classes;
+
+var ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
+
+var System = {};
+
+// ********************************************************************************************* //
+
+System.getPlatformName = function()
+{
+ return Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime).OS;
+};
+
+System.beep = function()
+{
+ var sounder = Cc["@mozilla.org/sound;1"].getService(Ci.nsISound);
+ sounder.beep();
+};
+
+// ********************************************************************************************* //
+// Programs
+
+System.launchProgram = function(exePath, args)
+{
+ try
+ {
+ var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
+ file.initWithPath(exePath);
+
+ if (System.getPlatformName() == "Darwin" && file.isDirectory())
+ {
+ args = Arr.extendArray(["-a", exePath], args);
+ file.initWithPath("/usr/bin/open");
+ }
+
+ if (!file.exists())
+ return false;
+
+ var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
+ process.init(file);
+ process.run(false, args, args.length, {});
+ return true;
+ }
+ catch (exc)
+ {
+ Debug.ERROR(exc);
+ }
+
+ return false;
+};
+
+System.getIconURLForFile = function(path)
+{
+ var fileHandler = ioService.getProtocolHandler("file")
+ .QueryInterface(Ci.nsIFileProtocolHandler);
+
+ try
+ {
+ var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
+ file.initWithPath(path);
+
+ if ((System.getPlatformName() == "Darwin") && !file.isDirectory() &&
+ (path.indexOf(".app/") != -1))
+ {
+ path = path.substr(0,path.lastIndexOf(".app/")+4);
+ file.initWithPath(path);
+ }
+
+ return "moz-icon://" + fileHandler.getURLSpecFromFile(file) + "?size=16";
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("getIconURLForFile ERROR " + exc + " for " + path, exc);
+ }
+
+ return null;
+};
+
+System.copyToClipboard = function(string)
+{
+ var clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
+ clipboard.copyString(string);
+
+ if (FBTrace.DBG_ERRORS && !string)
+ FBTrace.sysout("system.copyToClipboard; " + string, string);
+};
+
+System.getStringDataFromClipboard = function()
+{
+ // https://developer.mozilla.org/en-US/docs/Using_the_Clipboard#Pasting_Clipboard_Contents
+ var clip = Cc["@mozilla.org/widget/clipboard;1"].getService(Ci.nsIClipboard);
+ if (!clip)
+ return false;
+
+ var trans = Cc["@mozilla.org/widget/transferable;1"].createInstance(Ci.nsITransferable);
+ if (!trans)
+ return false;
+
+ if ("init" in trans)
+ trans.init(null);
+
+ trans.addDataFlavor("text/unicode");
+
+ clip.getData(trans, clip.kGlobalClipboard);
+
+ var str = {};
+ var strLength = {};
+
+ try
+ {
+ trans.getTransferData("text/unicode", str, strLength);
+
+ if (str)
+ {
+ str = str.value.QueryInterface(Ci.nsISupportsString);
+ return str.data.substring(0, strLength.value / 2);
+ }
+ }
+ catch (ex)
+ {
+ }
+
+ return false;
+};
+
+// ********************************************************************************************* //
+// Firebug Version Comparator
+
+/**
+ * Compare expected Firebug version with the current Firebug installed.
+ * @param {Object} expectedVersion Expected version of Firebug.
+ * @returns
+ * -1 the current version is smaller
+ * 0 the current version is the same
+ * 1 the current version is bigger
+ *
+ * @example:
+ * if (compareFirebugVersion("1.9") >= 0)
+ * {
+ * // The current version is Firebug 1.9+
+ * }
+ */
+System.checkFirebugVersion = function(expectedVersion)
+{
+ if (!expectedVersion)
+ return 1;
+
+ var version = Firebug.getVersion();
+
+ // Use Firefox comparator service.
+ var versionChecker = Xpcom.CCSV("@mozilla.org/xpcom/version-comparator;1",
+ "nsIVersionComparator");
+ return versionChecker.compare(version, expectedVersion);
+};
+
+// ********************************************************************************************* //
+
+return System;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/tool.js b/content/firebug/lib/tool.js
index 07c1aaf..145e01e 100644
--- a/content/firebug/lib/tool.js
+++ b/content/firebug/lib/tool.js
@@ -1,35 +1,35 @@
-/* See license.txt for terms of usage */
-
-define([
-],
-function() {
-
-// ********************************************************************************************* //
-
-var FirebugTool = function(name)
-{
- this.toolName = name;
- this.active = false;
-};
-
-FirebugTool.prototype =
-{
- getName: function()
- {
- return this.toolName;
- },
- getActive: function()
- {
- return this.active;
- },
- setActive: function(active)
- {
- this.active = !!active;
- }
-};
-// ********************************************************************************************* //
-
-return FirebugTool;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+],
+function() {
+
+// ********************************************************************************************* //
+
+var FirebugTool = function(name)
+{
+ this.toolName = name;
+ this.active = false;
+};
+
+FirebugTool.prototype =
+{
+ getName: function()
+ {
+ return this.toolName;
+ },
+ getActive: function()
+ {
+ return this.active;
+ },
+ setActive: function(active)
+ {
+ this.active = !!active;
+ }
+};
+// ********************************************************************************************* //
+
+return FirebugTool;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/trace.js b/content/firebug/lib/trace.js
index 7ee5bc7..7a14c79 100644
--- a/content/firebug/lib/trace.js
+++ b/content/firebug/lib/trace.js
@@ -1,62 +1,62 @@
-/* See license.txt for terms of usage */
-
-define([], function() {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cu = Components.utils;
-
-var scope = {};
-Cu["import"]("resource://firebug/fbtrace.js", scope);
-
-// ********************************************************************************************* //
-// Wrapper
-
-/**
- * Wraps tracer for given option. Logs made through the wrapper will automatically
- * be checked against the option and only displayed if the option is true.
- * If FBTrace console isn't installed all options are false and there is no
- * additional performance penalty.
- */
-function TraceWrapper(tracer, option)
-{
- function createMethodWrapper(method)
- {
- return function()
- {
- // Check the option before the log is passed to the tracing console.
- if (tracer[option])
- tracer[method].apply(tracer, arguments);
- };
- }
-
- for (var i=0; i<TraceAPI.length; i++)
- {
- var method = TraceAPI[i];
- this[method] = createMethodWrapper(method);
- }
-}
-
-// ********************************************************************************************* //
-
-var tracer = scope.FBTrace;
-
-/**
- * Support for scoped logging.
- *
- * Example:
- * FBTrace = FBTrace.to("DBG_NET");
- *
- * // This log will be displayed only if DBG_NET option is on
- * FBTrace.sysout("net.initialiaze");
- */
-tracer.to = function(option)
-{
- return new TraceWrapper(this, option);
-};
-
-return tracer;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([], function() {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cu = Components.utils;
+
+var scope = {};
+Cu["import"]("resource://firebug/fbtrace.js", scope);
+
+// ********************************************************************************************* //
+// Wrapper
+
+/**
+ * Wraps tracer for given option. Logs made through the wrapper will automatically
+ * be checked against the option and only displayed if the option is true.
+ * If FBTrace console isn't installed all options are false and there is no
+ * additional performance penalty.
+ */
+function TraceWrapper(tracer, option)
+{
+ function createMethodWrapper(method)
+ {
+ return function()
+ {
+ // Check the option before the log is passed to the tracing console.
+ if (tracer[option])
+ tracer[method].apply(tracer, arguments);
+ };
+ }
+
+ for (var i=0; i<TraceAPI.length; i++)
+ {
+ var method = TraceAPI[i];
+ this[method] = createMethodWrapper(method);
+ }
+}
+
+// ********************************************************************************************* //
+
+var tracer = scope.FBTrace;
+
+/**
+ * Support for scoped logging.
+ *
+ * Example:
+ * FBTrace = FBTrace.to("DBG_NET");
+ *
+ * // This log will be displayed only if DBG_NET option is on
+ * FBTrace.sysout("net.initialiaze");
+ */
+tracer.to = function(option)
+{
+ return new TraceWrapper(this, option);
+};
+
+return tracer;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/url.js b/content/firebug/lib/url.js
index 3176615..2ed9ffa 100644
--- a/content/firebug/lib/url.js
+++ b/content/firebug/lib/url.js
@@ -1,577 +1,577 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/string",
-],
-function (FBTrace, Str) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
-
-// ********************************************************************************************* //
-// Implementation
-
-var Url = {};
-
-// ************************************************************************************************
-// Regular expressions
-
-Url.reCSS = /\.css$/;
-Url.reJavascript = /\s*javascript:\s*(.*)/;
-Url.reFile = /file:\/\/([^\/]*)\//;
-Url.reChrome = /chrome:\/\/([^\/]*)\//;
-Url.reDataURL = /data:text\/javascript;fileName=([^;]*);baseLineNumber=(\d*?),((?:.*?%0A)|(?:.*))/g;
-
-// ************************************************************************************************
-// URLs
-
-Url.getFileName = function(url)
-{
- var split = Url.splitURLBase(url);
- return split.name;
-};
-
-Url.getProtocol = function(url)
-{
- var split = Url.splitURLBase(url);
- return split.protocol;
-};
-
-Url.splitURLBase = function(url)
-{
- if (Url.isDataURL(url))
- return Url.splitDataURL(url);
- return Url.splitURLTrue(url);
-};
-
-Url.splitDataURL = function(url)
-{
- if (!Str.hasPrefix(url, "data:"))
- return false; // the first 5 chars must be 'data:'
-
- var point = url.indexOf(",", 5);
- if (point < 5)
- return false; // syntax error
-
- var props = { protocol: "data", encodedContent: url.substr(point+1) };
-
- var metadataBuffer = url.substring(5, point);
- var metadata = metadataBuffer.split(";");
- for (var i = 0; i < metadata.length; i++)
- {
- var nv = metadata[i].split("=");
- if (nv.length == 2)
- props[nv[0]] = nv[1];
- }
-
- // Additional Firebug-specific properties
- if (props.hasOwnProperty("fileName"))
- {
- var caller_URL = decodeURIComponent(props["fileName"]);
- var caller_split = Url.splitURLTrue(caller_URL);
-
- props["fileName"] = caller_URL;
-
- if (props.hasOwnProperty("baseLineNumber")) // this means it's probably an eval()
- {
- props["path"] = caller_split.path;
- props["line"] = props["baseLineNumber"];
- var hint = decodeURIComponent(props["encodedContent"]).substr(0,200).replace(/\s*$/, "");
- props["name"] = "eval->"+hint;
- }
- else
- {
- props["name"] = caller_split.name;
- props["path"] = caller_split.path;
- }
- }
- else
- {
- if (!props.hasOwnProperty("path"))
- props["path"] = "data:";
- if (!props.hasOwnProperty("name"))
- props["name"] = decodeURIComponent(props["encodedContent"]).substr(0,200).replace(/\s*$/, "");
- }
-
- return props;
-};
-
-const reSplitFile = /(.*?):\/{2,3}([^\/]*)(.*?)([^\/]*?)($|\?.*)/;
-Url.splitURLTrue = function(url)
-{
- var m = reSplitFile.exec(url);
- if (!m)
- return {name: url, path: url};
- else if (m[4] == "" && m[5] == "")
- return {protocol: m[1], domain: m[2], path: m[3], name: m[3] != "/" ? m[3] : m[2]};
- else
- return {protocol: m[1], domain: m[2], path: m[2]+m[3], name: m[4]+m[5]};
-};
-
-Url.getFileExtension = function(url)
-{
- if (!url)
- return null;
-
- // Remove query string from the URL if any.
- var queryString = url.indexOf("?");
- if (queryString != -1)
- url = url.substr(0, queryString);
-
- // Now get the file extension.
- var lastDot = url.lastIndexOf(".");
- return url.substr(lastDot+1);
-};
-
-Url.isSystemURL = function(url)
-{
- if (!url) return true;
- if (url.length == 0) return true;
- if (url[0] == "h") return false;
- if (url.substr(0, 9) == "resource:")
- return true;
- else if (url.substr(0, 16) == "chrome://firebug")
- return true;
- else if (url == "XPCSafeJSObjectWrapper.cpp")
- return true;
- else if (url.substr(0, 6) == "about:")
- return true;
- else if (url.indexOf("firebug-service.js") != -1)
- return true;
- else if (url.indexOf("/modules/debuggerHalter.js") != -1)
- return true;
- else
- return false;
-};
-
-Url.isSystemPage = function(win)
-{
- try
- {
- var doc = win.document;
- if (!doc)
- return false;
-
- // Detect pages for pretty printed XML
- if ((doc.styleSheets.length && doc.styleSheets[0].href
- == "chrome://global/content/xml/XMLPrettyPrint.css")
- || (doc.styleSheets.length > 1 && doc.styleSheets[1].href
- == "chrome://browser/skin/feeds/subscribe.css"))
- return true;
-
- return Url.isSystemURL(win.location.href);
- }
- catch (exc)
- {
- // Sometimes documents just aren't ready to be manipulated here, but don't let that
- // gum up the works
- FBTrace.sysout("Url.isSystemPage; EXCEPTION document not ready?: " + exc);
- return false;
- }
-};
-
-Url.isSystemStyleSheet = function(sheet)
-{
- var href = sheet && sheet.href;
- return href && Url.isSystemURL(href);
-};
-
-Url.getURIHost = function(uri)
-{
- try
- {
- if (uri)
- return uri.host;
- else
- return "";
- }
- catch (exc)
- {
- return "";
- }
-};
-
-Url.isLocalURL = function(url)
-{
- if (url.substr(0, 5) == "file:")
- return true;
- else if (url.substr(0, 8) == "wyciwyg:")
- return true;
- else
- return false;
-};
-
-Url.isDataURL = function(url)
-{
- return (url && url.substr(0,5) == "data:");
-};
-
-Url.getLocalPath = function(url)
-{
- if (this.isLocalURL(url))
- {
- var fileHandler = ioService.getProtocolHandler("file")
- .QueryInterface(Ci.nsIFileProtocolHandler);
- var file = fileHandler.getFileFromURLSpec(url);
- return file.path;
- }
-};
-
-/**
- * Mozilla URI from non-web URL
- * @param URL
- * @returns undefined or nsIURI
- */
-Url.getLocalSystemURI = function(url)
-{
- try
- {
- var uri = ioService.newURI(url, null, null);
- if (uri.schemeIs("resource"))
- {
- var ph = ioService.getProtocolHandler("resource")
- .QueryInterface(Ci.nsIResProtocolHandler);
- var abspath = ph.getSubstitution(uri.host);
- uri = ioService.newURI(uri.path.substr(1), null, abspath);
- }
- while (uri.schemeIs("chrome"))
- {
- var chromeRegistry = Cc["@mozilla.org/chrome/chrome-registry;1"]
- .getService(Ci.nsIChromeRegistry);
- uri = chromeRegistry.convertChromeURL(uri);
- }
- return uri;
- }
- catch(exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("getLocalSystemURI failed for "+url);
- }
-};
-
-/*
- * Mozilla native path for local URL
- */
-Url.getLocalOrSystemPath = function(url, allowDirectories)
-{
- var uri = Url.getLocalSystemURI(url);
- if (uri instanceof Ci.nsIFileURL)
- {
- var file = uri.file;
- if (allowDirectories)
- return file && file.path;
- else
- return file && !file.isDirectory() && file.path;
- }
-};
-
-Url.getLocalOrSystemFile = function(url)
-{
- var uri = Url.getLocalSystemURI(url);
- if (uri instanceof Ci.nsIFileURL)
- return uri.file;
-};
-
-Url.getURLFromLocalFile = function(file)
-{
- var fileHandler = ioService.getProtocolHandler("file")
- .QueryInterface(Ci.nsIFileProtocolHandler);
- var URL = fileHandler.getURLSpecFromFile(file);
- return URL;
-};
-
-Url.getDataURLForContent = function(content, url)
-{
- // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
- var uri = "data:text/html;";
- uri += "fileName="+encodeURIComponent(url)+ ",";
- uri += encodeURIComponent(content);
- return uri;
-};
-
-Url.getDomain = function(url)
-{
- var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url);
- return m ? m[1] : "";
-};
-
-Url.getURLPath = function(url)
-{
- var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
- return m ? m[1] : "";
-};
-
-Url.getPrettyDomain = function(url)
-{
- var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
- return m ? m[2] : "";
-};
-
-/**
- * Returns the base URL for a given window
- * @param {Object} win DOM window
- * @returns {String} Base URL
- */
-Url.getBaseURL = function(win)
-{
- if (!win)
- return;
-
- var base = win.document.getElementsByTagName("base").item(0);
- return base ? base.href : win.location.href;
-};
-
-Url.absoluteURL = function(url, baseURL)
-{
- // Replace "/./" with "/" using regular expressions (don't use string since /./
- // can be treated as regular expressoin too, see 3551).
- return Url.absoluteURLWithDots(url, baseURL).replace(/\/\.\//, "/", "g");
-};
-
-Url.absoluteURLWithDots = function(url, baseURL)
-{
- // Should implement http://www.apps.ietf.org/rfc/rfc3986.html#sec-5
- // or use the newURI approach described in issue 3110.
- // See tests/content/lib/absoluteURLs.js
-
- if (url.length === 0)
- return baseURL;
-
- var R_query_index = url.indexOf("?");
- var R_head = url;
- if (R_query_index !== -1)
- R_head = url.substr(0, R_query_index);
-
- if (url.indexOf(":") !== -1)
- return url;
-
- var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
- var m_url = reURL.exec(R_head);
- if (m_url)
- return url;
-
- var B_query_index = baseURL.indexOf("?");
- var B_head = baseURL;
- if (B_query_index !== -1)
- B_head = baseURL.substr(0, B_query_index);
-
- if (url[0] === "?") // cases where R.path is empty.
- return B_head + url;
- if (url[0] === "#")
- return baseURL.split("#")[0]+url;
-
- var m = reURL.exec(B_head);
- if (!m)
- return "";
-
- var head = m[1];
- var tail = m[3];
- if (url.substr(0, 2) == "//")
- return m[2] + url;
- else if (url[0] == "/")
- {
- return head + url;
- }
- else if (tail[tail.length-1] == "/")
- return B_head + url;
- else
- {
- var parts = tail.split("/");
- return head + parts.slice(0, parts.length-1).join("/") + "/" + url;
- }
-};
-
-var reChromeCase = /chrome:\/\/([^\/]*)\/(.*?)$/;
-Url.normalizeURL = function(url) // this gets called a lot, any performance improvement welcome
-{
- if (!url)
- return "";
- // Replace one or more characters that are not forward-slash followed by /.., by space.
- if (url.length < 255) // guard against monsters.
- {
- // Replace one or more characters that are not forward-slash followed by /.., by space.
- url = url.replace(/[^\/]+\/\.\.\//, "", "g");
- // Issue 1496, avoid #
- url = url.replace(/#.*/,"");
- // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they
- // don't match up with the URLs we get back from the DOM
- url = url.replace(/file:\/([^\/])/g, "file:///$1");
- // For script tags inserted dynamically sometimes the script.fileName is bogus
- url = url.replace(/[^\s]*\s->\s/, "");
-
- if (Str.hasPrefix(url, "chrome:"))
- {
- var m = reChromeCase.exec(url); // 1 is package name, 2 is path
- if (m)
- {
- url = "chrome://"+m[1].toLowerCase()+"/"+m[2];
- }
- }
- }
- return url;
-};
-
-Url.denormalizeURL = function(url)
-{
- return url.replace(/file:\/\/\//g, "file:/");
-};
-
-// ********************************************************************************************* //
-
-Url.parseURLParams = function(url)
-{
- var q = url ? url.indexOf("?") : -1;
- if (q == -1)
- return [];
-
- var search = url.substr(q+1);
- var h = search.lastIndexOf("#");
- if (h != -1)
- search = search.substr(0, h);
-
- if (!search)
- return [];
-
- return Url.parseURLEncodedText(search);
-};
-
-Url.parseURLEncodedText = function(text, noLimit)
-{
- const maxValueLength = 25000;
-
- var params = [];
-
- // In case the text is empty just return the empty parameters
- if (text == "")
- return params;
-
- // Unescape '+' characters that are used to encode a space.
- // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
- text = text.replace(/\+/g, " ");
-
- // Unescape '&' character
- text = Str.unescapeForURL(text);
-
- function decodeText(text)
- {
- try
- {
- return decodeURIComponent(text);
- }
- catch (e)
- {
- return decodeURIComponent(unescape(text));
- }
- }
-
- var args = text.split("&");
- for (var i = 0; i < args.length; ++i)
- {
- try
- {
- var index = args[i].indexOf("=");
- if (index != -1)
- {
- var paramName = args[i].substring(0, index);
- var paramValue = args[i].substring(index + 1);
-
- if (paramValue.length > maxValueLength && !noLimit)
- paramValue = Locale.$STR("LargeData");
-
- params.push({name: decodeText(paramName), value: decodeText(paramValue)});
- }
- else
- {
- var paramName = args[i];
- params.push({name: decodeText(paramName), value: ""});
- }
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
- FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
- }
- }
- }
-
- params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
-
- return params;
-};
-
-Url.reEncodeURL = function(file, text, noLimit)
-{
- var lines = text.split("\n");
- var params = Url.parseURLEncodedText(lines[lines.length-1], noLimit);
-
- var args = [];
- for (var i = 0; i < params.length; ++i)
- args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value));
-
- var url = file.href;
- url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&");
-
- return url;
-};
-
-/**
- * Extracts the URL from a CSS URL definition.
- * Example: url(../path/to/file) => ../path/to/file
- * @param {String} url CSS URL definition
- * @returns {String} Extracted URL
- */
-Url.extractFromCSS = function(url)
-{
- return url.replace(/^url\(["']?(.*?)["']?\)$/, "$1");
-};
-
-Url.makeURI = function(urlString)
-{
- try
- {
- if (urlString)
- return ioService.newURI(urlString, null, null);
- }
- catch (exc)
- {
- //var explain = {message: "Firebug.lib.makeURI FAILS", url: urlString, exception: exc};
- // todo convert explain to json and then to data url
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("makeURI FAILS for \""+urlString+"\" ", exc);
-
- return false;
- }
-};
-
-/**
- * Converts resource: to file: Url.
- * @param {String} resourceURL
- */
-Url.resourceToFile = function(resourceURL)
-{
- var resHandler = ioService.getProtocolHandler("resource")
- .QueryInterface(Ci.nsIResProtocolHandler);
-
- var justURL = resourceURL.split("resource://")[1];
- var split = justURL.split("/");
- var sub = split.shift();
-
- var path = resHandler.getSubstitution(sub).spec;
- return path + split.join("/");
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return Url;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/string",
+],
+function (FBTrace, Str) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
+
+// ********************************************************************************************* //
+// Implementation
+
+var Url = {};
+
+// ************************************************************************************************
+// Regular expressions
+
+Url.reCSS = /\.css$/;
+Url.reJavascript = /\s*javascript:\s*(.*)/;
+Url.reFile = /file:\/\/([^\/]*)\//;
+Url.reChrome = /chrome:\/\/([^\/]*)\//;
+Url.reDataURL = /data:text\/javascript;fileName=([^;]*);baseLineNumber=(\d*?),((?:.*?%0A)|(?:.*))/g;
+
+// ************************************************************************************************
+// URLs
+
+Url.getFileName = function(url)
+{
+ var split = Url.splitURLBase(url);
+ return split.name;
+};
+
+Url.getProtocol = function(url)
+{
+ var split = Url.splitURLBase(url);
+ return split.protocol;
+};
+
+Url.splitURLBase = function(url)
+{
+ if (Url.isDataURL(url))
+ return Url.splitDataURL(url);
+ return Url.splitURLTrue(url);
+};
+
+Url.splitDataURL = function(url)
+{
+ if (!Str.hasPrefix(url, "data:"))
+ return false; // the first 5 chars must be 'data:'
+
+ var point = url.indexOf(",", 5);
+ if (point < 5)
+ return false; // syntax error
+
+ var props = { protocol: "data", encodedContent: url.substr(point+1) };
+
+ var metadataBuffer = url.substring(5, point);
+ var metadata = metadataBuffer.split(";");
+ for (var i = 0; i < metadata.length; i++)
+ {
+ var nv = metadata[i].split("=");
+ if (nv.length == 2)
+ props[nv[0]] = nv[1];
+ }
+
+ // Additional Firebug-specific properties
+ if (props.hasOwnProperty("fileName"))
+ {
+ var caller_URL = decodeURIComponent(props["fileName"]);
+ var caller_split = Url.splitURLTrue(caller_URL);
+
+ props["fileName"] = caller_URL;
+
+ if (props.hasOwnProperty("baseLineNumber")) // this means it's probably an eval()
+ {
+ props["path"] = caller_split.path;
+ props["line"] = props["baseLineNumber"];
+ var hint = decodeURIComponent(props["encodedContent"]).substr(0,200).replace(/\s*$/, "");
+ props["name"] = "eval->"+hint;
+ }
+ else
+ {
+ props["name"] = caller_split.name;
+ props["path"] = caller_split.path;
+ }
+ }
+ else
+ {
+ if (!props.hasOwnProperty("path"))
+ props["path"] = "data:";
+ if (!props.hasOwnProperty("name"))
+ props["name"] = decodeURIComponent(props["encodedContent"]).substr(0,200).replace(/\s*$/, "");
+ }
+
+ return props;
+};
+
+const reSplitFile = /(.*?):\/{2,3}([^\/]*)(.*?)([^\/]*?)($|\?.*)/;
+Url.splitURLTrue = function(url)
+{
+ var m = reSplitFile.exec(url);
+ if (!m)
+ return {name: url, path: url};
+ else if (m[4] == "" && m[5] == "")
+ return {protocol: m[1], domain: m[2], path: m[3], name: m[3] != "/" ? m[3] : m[2]};
+ else
+ return {protocol: m[1], domain: m[2], path: m[2]+m[3], name: m[4]+m[5]};
+};
+
+Url.getFileExtension = function(url)
+{
+ if (!url)
+ return null;
+
+ // Remove query string from the URL if any.
+ var queryString = url.indexOf("?");
+ if (queryString != -1)
+ url = url.substr(0, queryString);
+
+ // Now get the file extension.
+ var lastDot = url.lastIndexOf(".");
+ return url.substr(lastDot+1);
+};
+
+Url.isSystemURL = function(url)
+{
+ if (!url) return true;
+ if (url.length == 0) return true;
+ if (url[0] == "h") return false;
+ if (url.substr(0, 9) == "resource:")
+ return true;
+ else if (url.substr(0, 16) == "chrome://firebug")
+ return true;
+ else if (url == "XPCSafeJSObjectWrapper.cpp")
+ return true;
+ else if (url.substr(0, 6) == "about:")
+ return true;
+ else if (url.indexOf("firebug-service.js") != -1)
+ return true;
+ else if (url.indexOf("/modules/debuggerHalter.js") != -1)
+ return true;
+ else
+ return false;
+};
+
+Url.isSystemPage = function(win)
+{
+ try
+ {
+ var doc = win.document;
+ if (!doc)
+ return false;
+
+ // Detect pages for pretty printed XML
+ if ((doc.styleSheets.length && doc.styleSheets[0].href
+ == "chrome://global/content/xml/XMLPrettyPrint.css")
+ || (doc.styleSheets.length > 1 && doc.styleSheets[1].href
+ == "chrome://browser/skin/feeds/subscribe.css"))
+ return true;
+
+ return Url.isSystemURL(win.location.href);
+ }
+ catch (exc)
+ {
+ // Sometimes documents just aren't ready to be manipulated here, but don't let that
+ // gum up the works
+ FBTrace.sysout("Url.isSystemPage; EXCEPTION document not ready?: " + exc);
+ return false;
+ }
+};
+
+Url.isSystemStyleSheet = function(sheet)
+{
+ var href = sheet && sheet.href;
+ return href && Url.isSystemURL(href);
+};
+
+Url.getURIHost = function(uri)
+{
+ try
+ {
+ if (uri)
+ return uri.host;
+ else
+ return "";
+ }
+ catch (exc)
+ {
+ return "";
+ }
+};
+
+Url.isLocalURL = function(url)
+{
+ if (url.substr(0, 5) == "file:")
+ return true;
+ else if (url.substr(0, 8) == "wyciwyg:")
+ return true;
+ else
+ return false;
+};
+
+Url.isDataURL = function(url)
+{
+ return (url && url.substr(0,5) == "data:");
+};
+
+Url.getLocalPath = function(url)
+{
+ if (this.isLocalURL(url))
+ {
+ var fileHandler = ioService.getProtocolHandler("file")
+ .QueryInterface(Ci.nsIFileProtocolHandler);
+ var file = fileHandler.getFileFromURLSpec(url);
+ return file.path;
+ }
+};
+
+/**
+ * Mozilla URI from non-web URL
+ * @param URL
+ * @returns undefined or nsIURI
+ */
+Url.getLocalSystemURI = function(url)
+{
+ try
+ {
+ var uri = ioService.newURI(url, null, null);
+ if (uri.schemeIs("resource"))
+ {
+ var ph = ioService.getProtocolHandler("resource")
+ .QueryInterface(Ci.nsIResProtocolHandler);
+ var abspath = ph.getSubstitution(uri.host);
+ uri = ioService.newURI(uri.path.substr(1), null, abspath);
+ }
+ while (uri.schemeIs("chrome"))
+ {
+ var chromeRegistry = Cc["@mozilla.org/chrome/chrome-registry;1"]
+ .getService(Ci.nsIChromeRegistry);
+ uri = chromeRegistry.convertChromeURL(uri);
+ }
+ return uri;
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("getLocalSystemURI failed for "+url);
+ }
+};
+
+/*
+ * Mozilla native path for local URL
+ */
+Url.getLocalOrSystemPath = function(url, allowDirectories)
+{
+ var uri = Url.getLocalSystemURI(url);
+ if (uri instanceof Ci.nsIFileURL)
+ {
+ var file = uri.file;
+ if (allowDirectories)
+ return file && file.path;
+ else
+ return file && !file.isDirectory() && file.path;
+ }
+};
+
+Url.getLocalOrSystemFile = function(url)
+{
+ var uri = Url.getLocalSystemURI(url);
+ if (uri instanceof Ci.nsIFileURL)
+ return uri.file;
+};
+
+Url.getURLFromLocalFile = function(file)
+{
+ var fileHandler = ioService.getProtocolHandler("file")
+ .QueryInterface(Ci.nsIFileProtocolHandler);
+ var URL = fileHandler.getURLSpecFromFile(file);
+ return URL;
+};
+
+Url.getDataURLForContent = function(content, url)
+{
+ // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
+ var uri = "data:text/html;";
+ uri += "fileName="+encodeURIComponent(url)+ ",";
+ uri += encodeURIComponent(content);
+ return uri;
+};
+
+Url.getDomain = function(url)
+{
+ var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url);
+ return m ? m[1] : "";
+};
+
+Url.getURLPath = function(url)
+{
+ var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
+ return m ? m[1] : "";
+};
+
+Url.getPrettyDomain = function(url)
+{
+ var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
+ return m ? m[2] : "";
+};
+
+/**
+ * Returns the base URL for a given window
+ * @param {Object} win DOM window
+ * @returns {String} Base URL
+ */
+Url.getBaseURL = function(win)
+{
+ if (!win)
+ return;
+
+ var base = win.document.getElementsByTagName("base").item(0);
+ return base ? base.href : win.location.href;
+};
+
+Url.absoluteURL = function(url, baseURL)
+{
+ // Replace "/./" with "/" using regular expressions (don't use string since /./
+ // can be treated as regular expressoin too, see 3551).
+ return Url.absoluteURLWithDots(url, baseURL).replace(/\/\.\//, "/", "g");
+};
+
+Url.absoluteURLWithDots = function(url, baseURL)
+{
+ // Should implement http://www.apps.ietf.org/rfc/rfc3986.html#sec-5
+ // or use the newURI approach described in issue 3110.
+ // See tests/content/lib/absoluteURLs.js
+
+ if (url.length === 0)
+ return baseURL;
+
+ var R_query_index = url.indexOf("?");
+ var R_head = url;
+ if (R_query_index !== -1)
+ R_head = url.substr(0, R_query_index);
+
+ if (url.indexOf(":") !== -1)
+ return url;
+
+ var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
+ var m_url = reURL.exec(R_head);
+ if (m_url)
+ return url;
+
+ var B_query_index = baseURL.indexOf("?");
+ var B_head = baseURL;
+ if (B_query_index !== -1)
+ B_head = baseURL.substr(0, B_query_index);
+
+ if (url[0] === "?") // cases where R.path is empty.
+ return B_head + url;
+ if (url[0] === "#")
+ return baseURL.split("#")[0]+url;
+
+ var m = reURL.exec(B_head);
+ if (!m)
+ return "";
+
+ var head = m[1];
+ var tail = m[3];
+ if (url.substr(0, 2) == "//")
+ return m[2] + url;
+ else if (url[0] == "/")
+ {
+ return head + url;
+ }
+ else if (tail[tail.length-1] == "/")
+ return B_head + url;
+ else
+ {
+ var parts = tail.split("/");
+ return head + parts.slice(0, parts.length-1).join("/") + "/" + url;
+ }
+};
+
+var reChromeCase = /chrome:\/\/([^\/]*)\/(.*?)$/;
+Url.normalizeURL = function(url) // this gets called a lot, any performance improvement welcome
+{
+ if (!url)
+ return "";
+ // Replace one or more characters that are not forward-slash followed by /.., by space.
+ if (url.length < 255) // guard against monsters.
+ {
+ // Replace one or more characters that are not forward-slash followed by /.., by space.
+ url = url.replace(/[^\/]+\/\.\.\//, "", "g");
+ // Issue 1496, avoid #
+ url = url.replace(/#.*/,"");
+ // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they
+ // don't match up with the URLs we get back from the DOM
+ url = url.replace(/file:\/([^\/])/g, "file:///$1");
+ // For script tags inserted dynamically sometimes the script.fileName is bogus
+ url = url.replace(/[^\s]*\s->\s/, "");
+
+ if (Str.hasPrefix(url, "chrome:"))
+ {
+ var m = reChromeCase.exec(url); // 1 is package name, 2 is path
+ if (m)
+ {
+ url = "chrome://"+m[1].toLowerCase()+"/"+m[2];
+ }
+ }
+ }
+ return url;
+};
+
+Url.denormalizeURL = function(url)
+{
+ return url.replace(/file:\/\/\//g, "file:/");
+};
+
+// ********************************************************************************************* //
+
+Url.parseURLParams = function(url)
+{
+ var q = url ? url.indexOf("?") : -1;
+ if (q == -1)
+ return [];
+
+ var search = url.substr(q+1);
+ var h = search.lastIndexOf("#");
+ if (h != -1)
+ search = search.substr(0, h);
+
+ if (!search)
+ return [];
+
+ return Url.parseURLEncodedText(search);
+};
+
+Url.parseURLEncodedText = function(text, noLimit)
+{
+ const maxValueLength = 25000;
+
+ var params = [];
+
+ // In case the text is empty just return the empty parameters
+ if (text == "")
+ return params;
+
+ // Unescape '+' characters that are used to encode a space.
+ // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
+ text = text.replace(/\+/g, " ");
+
+ // Unescape '&' character
+ text = Str.unescapeForURL(text);
+
+ function decodeText(text)
+ {
+ try
+ {
+ return decodeURIComponent(text);
+ }
+ catch (e)
+ {
+ return decodeURIComponent(unescape(text));
+ }
+ }
+
+ var args = text.split("&");
+ for (var i = 0; i < args.length; ++i)
+ {
+ try
+ {
+ var index = args[i].indexOf("=");
+ if (index != -1)
+ {
+ var paramName = args[i].substring(0, index);
+ var paramValue = args[i].substring(index + 1);
+
+ if (paramValue.length > maxValueLength && !noLimit)
+ paramValue = Locale.$STR("LargeData");
+
+ params.push({name: decodeText(paramName), value: decodeText(paramValue)});
+ }
+ else
+ {
+ var paramName = args[i];
+ params.push({name: decodeText(paramName), value: ""});
+ }
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
+ FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
+ }
+ }
+ }
+
+ params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
+
+ return params;
+};
+
+Url.reEncodeURL = function(file, text, noLimit)
+{
+ var lines = text.split("\n");
+ var params = Url.parseURLEncodedText(lines[lines.length-1], noLimit);
+
+ var args = [];
+ for (var i = 0; i < params.length; ++i)
+ args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value));
+
+ var url = file.href;
+ url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&");
+
+ return url;
+};
+
+/**
+ * Extracts the URL from a CSS URL definition.
+ * Example: url(../path/to/file) => ../path/to/file
+ * @param {String} url CSS URL definition
+ * @returns {String} Extracted URL
+ */
+Url.extractFromCSS = function(url)
+{
+ return url.replace(/^url\(["']?(.*?)["']?\)$/, "$1");
+};
+
+Url.makeURI = function(urlString)
+{
+ try
+ {
+ if (urlString)
+ return ioService.newURI(urlString, null, null);
+ }
+ catch (exc)
+ {
+ //var explain = {message: "Firebug.lib.makeURI FAILS", url: urlString, exception: exc};
+ // todo convert explain to json and then to data url
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("makeURI FAILS for \""+urlString+"\" ", exc);
+
+ return false;
+ }
+};
+
+/**
+ * Converts resource: to file: Url.
+ * @param {String} resourceURL
+ */
+Url.resourceToFile = function(resourceURL)
+{
+ var resHandler = ioService.getProtocolHandler("resource")
+ .QueryInterface(Ci.nsIResProtocolHandler);
+
+ var justURL = resourceURL.split("resource://")[1];
+ var split = justURL.split("/");
+ var sub = split.shift();
+
+ var path = resHandler.getSubstitution(sub).spec;
+ return path + split.join("/");
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return Url;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/wrapper.js b/content/firebug/lib/wrapper.js
index 7a3d327..04388be 100644
--- a/content/firebug/lib/wrapper.js
+++ b/content/firebug/lib/wrapper.js
@@ -1,158 +1,158 @@
-/* See license.txt for terms of usage */
-
-define([], function() {
-
-// ********************************************************************************************* //
-// Constants
-
-var Cu = Components.utils;
-var Wrapper = {};
-
-// ********************************************************************************************* //
-// Wrappers
-
-Wrapper.getContentView = function(object)
-{
- if (isPrimitive(object))
- return object;
-
- return object.wrappedJSObject;
-};
-
-Wrapper.unwrapObject = function(object)
-{
- if (isPrimitive(object))
- return object;
-
- return XPCNativeWrapper.unwrap(object);
-};
-
-Wrapper.wrapObject = function(object)
-{
- if (isPrimitive(object))
- return object;
-
- return XPCNativeWrapper(object);
-};
-
-Wrapper.isDeadWrapper = function(wrapper)
-{
- return Cu.isDeadWrapper(wrapper);
-};
-
-Wrapper.unwrapIValue = function(object, viewChrome)
-{
- var unwrapped = object.getWrappedValue();
- if (viewChrome)
- return unwrapped;
-
- try
- {
- // XPCSafeJSObjectWrapper is not defined in Firefox 4.0
- // this should be the only call to getWrappedValue in firebug
- if (typeof(XPCSafeJSObjectWrapper) != "undefined")
- {
- return XPCSafeJSObjectWrapper(unwrapped);
- }
- else if (typeof(unwrapped) == "object")
- {
- var result = XPCNativeWrapper.unwrap(unwrapped);
- if (result)
- return result;
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("unwrapIValue FAILS for " + object + " cause: " + exc,
- {exc: exc, object: object, unwrapped: unwrapped});
- }
- }
-
- return unwrapped;
-};
-
-Wrapper.unwrapIValueObject = function(scope, viewChrome)
-{
- var scopeVars = {};
- var listValue = {value: null}, lengthValue = {value: 0};
- scope.getProperties(listValue, lengthValue);
-
- for (var i = 0; i < lengthValue.value; ++i)
- {
- var prop = listValue.value[i];
- var name = Wrapper.unwrapIValue(prop.name);
-
- if (prop.value.jsType === prop.value.TYPE_NULL) // null is an object (!)
- {
- scopeVars[name] = null;
- }
- else
- {
- if (!Wrapper.shouldIgnore(name))
- scopeVars[name] = Wrapper.unwrapIValue(prop.value, viewChrome);
- }
- }
-
- return scopeVars;
-};
-
-/**
- * Create a content-accessible view of a simple chrome object. All properties
- * are marked as non-writable, except if they have explicit getters/setters.
- */
-Wrapper.cloneIntoContentScope = function(global, obj)
-{
- var newObj = Cu.createObjectIn(global);
- for (var prop in obj)
- {
- var desc = Object.getOwnPropertyDescriptor(obj, prop);
- if (!desc)
- continue;
- if ("writable" in desc)
- desc.writable = false;
- desc.configurable = false;
- Object.defineProperty(newObj, prop, desc);
- }
- Cu.makeObjectPropsNormal(newObj);
- return newObj;
-};
-
-// ********************************************************************************************* //
-
-Wrapper.ignoreVars =
-{
- // We are forced to ignore Java-related variables, because
- // trying to access them causes browser freeze
- "sun": 1,
- "Packages": 1,
- "JavaArray": 1,
- "JavaMember": 1,
- "JavaObject": 1,
- "JavaClass": 1,
- "JavaPackage": 1,
-
- // internal firebug things XXXjjb todo we should privatize these
- "_firebug": 1,
- "_firebugUnwrappedDebuggerObject": 1,
- "__fb_scopedVars": 1,
- "_FirebugCommandLine": 1,
-};
-
-Wrapper.shouldIgnore = function(name)
-{
- return (Wrapper.ignoreVars[name] === 1);
-};
-
-function isPrimitive(obj)
-{
- return !(obj && (typeof obj === "object" || typeof obj === "function"));
-}
-
-// ********************************************************************************************* //
-
-return Wrapper;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([], function() {
+
+// ********************************************************************************************* //
+// Constants
+
+var Cu = Components.utils;
+var Wrapper = {};
+
+// ********************************************************************************************* //
+// Wrappers
+
+Wrapper.getContentView = function(object)
+{
+ if (isPrimitive(object))
+ return object;
+
+ return object.wrappedJSObject;
+};
+
+Wrapper.unwrapObject = function(object)
+{
+ if (isPrimitive(object))
+ return object;
+
+ return XPCNativeWrapper.unwrap(object);
+};
+
+Wrapper.wrapObject = function(object)
+{
+ if (isPrimitive(object))
+ return object;
+
+ return XPCNativeWrapper(object);
+};
+
+Wrapper.isDeadWrapper = function(wrapper)
+{
+ return Cu.isDeadWrapper(wrapper);
+};
+
+Wrapper.unwrapIValue = function(object, viewChrome)
+{
+ var unwrapped = object.getWrappedValue();
+ if (viewChrome)
+ return unwrapped;
+
+ try
+ {
+ // XPCSafeJSObjectWrapper is not defined in Firefox 4.0
+ // this should be the only call to getWrappedValue in firebug
+ if (typeof(XPCSafeJSObjectWrapper) != "undefined")
+ {
+ return XPCSafeJSObjectWrapper(unwrapped);
+ }
+ else if (typeof(unwrapped) == "object")
+ {
+ var result = XPCNativeWrapper.unwrap(unwrapped);
+ if (result)
+ return result;
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("unwrapIValue FAILS for " + object + " cause: " + exc,
+ {exc: exc, object: object, unwrapped: unwrapped});
+ }
+ }
+
+ return unwrapped;
+};
+
+Wrapper.unwrapIValueObject = function(scope, viewChrome)
+{
+ var scopeVars = {};
+ var listValue = {value: null}, lengthValue = {value: 0};
+ scope.getProperties(listValue, lengthValue);
+
+ for (var i = 0; i < lengthValue.value; ++i)
+ {
+ var prop = listValue.value[i];
+ var name = Wrapper.unwrapIValue(prop.name);
+
+ if (prop.value.jsType === prop.value.TYPE_NULL) // null is an object (!)
+ {
+ scopeVars[name] = null;
+ }
+ else
+ {
+ if (!Wrapper.shouldIgnore(name))
+ scopeVars[name] = Wrapper.unwrapIValue(prop.value, viewChrome);
+ }
+ }
+
+ return scopeVars;
+};
+
+/**
+ * Create a content-accessible view of a simple chrome object. All properties
+ * are marked as non-writable, except if they have explicit getters/setters.
+ */
+Wrapper.cloneIntoContentScope = function(global, obj)
+{
+ var newObj = Cu.createObjectIn(global);
+ for (var prop in obj)
+ {
+ var desc = Object.getOwnPropertyDescriptor(obj, prop);
+ if (!desc)
+ continue;
+ if ("writable" in desc)
+ desc.writable = false;
+ desc.configurable = false;
+ Object.defineProperty(newObj, prop, desc);
+ }
+ Cu.makeObjectPropsNormal(newObj);
+ return newObj;
+};
+
+// ********************************************************************************************* //
+
+Wrapper.ignoreVars =
+{
+ // We are forced to ignore Java-related variables, because
+ // trying to access them causes browser freeze
+ "sun": 1,
+ "Packages": 1,
+ "JavaArray": 1,
+ "JavaMember": 1,
+ "JavaObject": 1,
+ "JavaClass": 1,
+ "JavaPackage": 1,
+
+ // internal firebug things XXXjjb todo we should privatize these
+ "_firebug": 1,
+ "_firebugUnwrappedDebuggerObject": 1,
+ "__fb_scopedVars": 1,
+ "_FirebugCommandLine": 1,
+};
+
+Wrapper.shouldIgnore = function(name)
+{
+ return (Wrapper.ignoreVars[name] === 1);
+};
+
+function isPrimitive(obj)
+{
+ return !(obj && (typeof obj === "object" || typeof obj === "function"));
+}
+
+// ********************************************************************************************* //
+
+return Wrapper;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/xml.js b/content/firebug/lib/xml.js
index ccc757c..fa13fcd 100644
--- a/content/firebug/lib/xml.js
+++ b/content/firebug/lib/xml.js
@@ -1,348 +1,348 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace",
- "firebug/lib/string"
-],
-function(FBTrace, Str) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Ci = Components.interfaces;
-var Cc = Components.classes;
-
-var Xml = {};
-
-// ************************************************************************************************
-// HTML and XML Serialization
-
-Xml.getElementType = function(node)
-{
- if (isElementXUL(node))
- return 'xul';
- else if (isElementSVG(node))
- return 'svg';
- else if (isElementMathML(node))
- return 'mathml';
- else if (isElementXHTML(node))
- return 'xhtml';
- else if (isElementHTML(node))
- return 'html';
-};
-
-Xml.getElementSimpleType = function(node)
-{
- if (isElementSVG(node))
- return 'svg';
- else if (isElementMathML(node))
- return 'mathml';
- else
- return 'html';
-};
-
-var isElementHTML = Xml.isElementHTML = function(node)
-{
- return node.nodeName == node.nodeName.toUpperCase() && node.namespaceURI == 'http://www.w3.org/1999/xhtml';
-};
-
-var isElementXHTML = Xml.isElementXHTML = function(node)
-{
- return node.nodeName != node.nodeName.toUpperCase() && node.namespaceURI == 'http://www.w3.org/1999/xhtml';
-};
-
-var isElementMathML = Xml.isElementMathML = function(node)
-{
- return node.namespaceURI == 'http://www.w3.org/1998/Math/MathML';
-};
-
-var isElementSVG = Xml.isElementSVG = function(node)
-{
- return node.namespaceURI == 'http://www.w3.org/2000/svg';
-};
-
-var isElementXUL = Xml.isElementXUL = function(node)
-{
- return node instanceof XULElement;
-};
-
-var getNodeName = Xml.getNodeName = function(node)
-{
- var name = node.nodeName;
- return isElementHTML(node) ? name.toLowerCase() : name;
-};
-
-Xml.getLocalName = function(node)
-{
- var name = node.localName;
- return isElementHTML(node) ? name.toLowerCase() : name;
-};
-
-// End tags for void elements are forbidden http://wiki.whatwg.org/wiki/HTML_vs._XHTML
-var selfClosingTags = Xml.selfClosingTags =
-{
- "meta": 1,
- "link": 1,
- "area": 1,
- "base": 1,
- "col": 1,
- "input": 1,
- "img": 1,
- "br": 1,
- "hr": 1,
- "param": 1,
- "embed": 1
-};
-
-var isSelfClosing = Xml.isSelfClosing = function(element)
-{
- if (isElementSVG(element) || isElementMathML(element))
- return true;
- var tag = element.localName.toLowerCase();
- return (selfClosingTags.hasOwnProperty(tag));
-};
-
-Xml.getElementHTML = function(element)
-{
- function toHTML(elt, html)
- {
- if (elt.nodeType == Node.ELEMENT_NODE)
- {
- if (Firebug.shouldIgnore(elt))
- return;
-
- var nodeName = getNodeName(elt);
- html.push('<', nodeName);
-
- for (var i = 0; i < elt.attributes.length; ++i)
- {
- var attr = elt.attributes[i];
-
- // Hide attributes set by Firebug
- // XXX Do we even have any?
- if (Str.hasPrefix(attr.localName, "firebug-"))
- continue;
-
- // MathML
- if (Str.hasPrefix(attr.localName, "-moz-math"))
- {
- // just hide for now
- continue;
- }
-
- html.push(' ', attr.name, '="', Str.escapeForElementAttribute(attr.value), '"');
- }
-
- if (elt.firstChild)
- {
- html.push('>');
-
- for (var child = elt.firstChild; child; child = child.nextSibling)
- toHTML(child, html);
-
- html.push('</', nodeName, '>');
- }
- else if (isElementSVG(elt) || isElementMathML(elt))
- {
- html.push('/>');
- }
- else if (isSelfClosing(elt))
- {
- html.push((isElementXHTML(elt))?'/>':'>');
- }
- else
- {
- html.push('></', nodeName, '>');
- }
- }
- else if (elt.nodeType == Node.TEXT_NODE)
- {
- html.push(Str.escapeForTextNode(elt.textContent));
- }
- else if (elt.nodeType == Node.CDATA_SECTION_NODE)
- {
- html.push('<![CDATA[', elt.nodeValue, ']]>');
- }
- else if (elt.nodeType == Node.COMMENT_NODE)
- {
- html.push('<!--', elt.nodeValue, '-->');
- }
- }
-
- var html = [];
- toHTML(element, html);
- return html.join("");
-};
-
-Xml.getElementXML = function(element)
-{
- function toXML(elt, xml)
- {
- if (elt.nodeType == Node.ELEMENT_NODE)
- {
- if (Firebug.shouldIgnore(elt))
- return;
-
- var nodeName = getNodeName(elt);
- xml.push('<', nodeName);
-
- for (var i = 0; i < elt.attributes.length; ++i)
- {
- var attr = elt.attributes[i];
-
- // Hide attributes set by Firebug
- if (Str.hasPrefix(attr.localName, "firebug-"))
- continue;
-
- // MathML
- if (Str.hasPrefix(attr.localName, "-moz-math"))
- {
- // just hide for now
- continue;
- }
-
- xml.push(' ', attr.nodeName, '="', Str.escapeForElementAttribute(attr.nodeValue),'"');
- }
-
- if (elt.firstChild)
- {
- xml.push('>');
-
- for (var child = elt.firstChild; child; child = child.nextSibling)
- toXML(child, xml);
-
- xml.push('</', nodeName, '>');
- }
- else
- xml.push('/>');
- }
- else if (elt.nodeType == Node.TEXT_NODE)
- xml.push(elt.nodeValue);
- else if (elt.nodeType == Node.CDATA_SECTION_NODE)
- xml.push('<![CDATA[', elt.nodeValue, ']]>');
- else if (elt.nodeType == Node.COMMENT_NODE)
- xml.push('<!--', elt.nodeValue, '-->');
- }
-
- var xml = [];
- toXML(element, xml);
- return xml.join("");
-};
-
-// ************************************************************************************************
-// Whitespace and Entity conversions
-
-var domUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
-
-/**
- * Returns true if given document is based on a XML and so displaying pretty printed XML elements.
- */
-Xml.isXMLPrettyPrint = function(context, win)
-{
- if (!context)
- return;
-
- if (context.isXMLPrettyPrintDetected)
- return context.isXMLPrettyPrint;
-
- try
- {
- var doc = win ? win.document : context.window.document;
- if (!doc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("lib.isXMLPrettyPrint; NO DOCUMENT", {win:win, context:context});
- return false;
- }
- if (!doc.documentElement)
- return false;
-
- var bindings = domUtils.getBindingURLs(doc.documentElement);
- for (var i = 0; i < bindings.length; i++)
- {
- var bindingURI = bindings.queryElementAt(i, Ci.nsIURI);
- if (FBTrace.DBG_CSS)
- FBTrace.sysout("bindingURL: " + i + " " + bindingURI.resolve(""));
-
- context.isXMLPrettyPrintDetected = true;
- return context.isXMLPrettyPrint = (bindingURI.resolve("") ===
- "chrome://global/content/xml/XMLPrettyPrint.xml");
- }
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("xml.isXMLPrettyPrint; EXCEPTION "+e, e);
- }
-};
-
-// ************************************************************************************************
-
-Xml.isVisible = function(elt)
-{
- if (isElementXUL(elt))
- {
- //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+
- // elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n");
- return (!elt.hidden && !elt.collapsed);
- }
-
- try
- {
- return (!isElementHTML(elt) && !isElementXHTML(elt)) ||
- elt.offsetWidth > 0 ||
- elt.offsetHeight > 0 ||
- elt.localName in invisibleTags;
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("lib.isVisible; EXCEPTION " + err, err);
- }
-
- return false;
-};
-
-var invisibleTags = Xml.invisibleTags =
-{
- "HTML": 1,
- "HEAD": 1,
- "TITLE": 1,
- "META": 1,
- "LINK": 1,
- "STYLE": 1,
- "SCRIPT": 1,
- "NOSCRIPT": 1,
- "BR": 1,
- "PARAM": 1,
- "COL": 1,
-
- "html": 1,
- "head": 1,
- "title": 1,
- "meta": 1,
- "link": 1,
- "style": 1,
- "script": 1,
- "noscript": 1,
- "br": 1,
- "param": 1,
- "col": 1,
- /*
- "window": 1,
- "browser": 1,
- "frame": 1,
- "tabbrowser": 1,
- "WINDOW": 1,
- "BROWSER": 1,
- "FRAME": 1,
- "TABBROWSER": 1,
- */
-};
-
-// ********************************************************************************************* //
-
-return Xml;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/string"
+],
+function(FBTrace, Str) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Ci = Components.interfaces;
+var Cc = Components.classes;
+
+var Xml = {};
+
+// ************************************************************************************************
+// HTML and XML Serialization
+
+Xml.getElementType = function(node)
+{
+ if (isElementXUL(node))
+ return 'xul';
+ else if (isElementSVG(node))
+ return 'svg';
+ else if (isElementMathML(node))
+ return 'mathml';
+ else if (isElementXHTML(node))
+ return 'xhtml';
+ else if (isElementHTML(node))
+ return 'html';
+};
+
+Xml.getElementSimpleType = function(node)
+{
+ if (isElementSVG(node))
+ return 'svg';
+ else if (isElementMathML(node))
+ return 'mathml';
+ else
+ return 'html';
+};
+
+var isElementHTML = Xml.isElementHTML = function(node)
+{
+ return node.nodeName == node.nodeName.toUpperCase() && node.namespaceURI == 'http://www.w3.org/1999/xhtml';
+};
+
+var isElementXHTML = Xml.isElementXHTML = function(node)
+{
+ return node.nodeName != node.nodeName.toUpperCase() && node.namespaceURI == 'http://www.w3.org/1999/xhtml';
+};
+
+var isElementMathML = Xml.isElementMathML = function(node)
+{
+ return node.namespaceURI == 'http://www.w3.org/1998/Math/MathML';
+};
+
+var isElementSVG = Xml.isElementSVG = function(node)
+{
+ return node.namespaceURI == 'http://www.w3.org/2000/svg';
+};
+
+var isElementXUL = Xml.isElementXUL = function(node)
+{
+ return node instanceof XULElement;
+};
+
+var getNodeName = Xml.getNodeName = function(node)
+{
+ var name = node.nodeName;
+ return isElementHTML(node) ? name.toLowerCase() : name;
+};
+
+Xml.getLocalName = function(node)
+{
+ var name = node.localName;
+ return isElementHTML(node) ? name.toLowerCase() : name;
+};
+
+// End tags for void elements are forbidden http://wiki.whatwg.org/wiki/HTML_vs._XHTML
+var selfClosingTags = Xml.selfClosingTags =
+{
+ "meta": 1,
+ "link": 1,
+ "area": 1,
+ "base": 1,
+ "col": 1,
+ "input": 1,
+ "img": 1,
+ "br": 1,
+ "hr": 1,
+ "param": 1,
+ "embed": 1
+};
+
+var isSelfClosing = Xml.isSelfClosing = function(element)
+{
+ if (isElementSVG(element) || isElementMathML(element))
+ return true;
+ var tag = element.localName.toLowerCase();
+ return (selfClosingTags.hasOwnProperty(tag));
+};
+
+Xml.getElementHTML = function(element)
+{
+ function toHTML(elt, html)
+ {
+ if (elt.nodeType == Node.ELEMENT_NODE)
+ {
+ if (Firebug.shouldIgnore(elt))
+ return;
+
+ var nodeName = getNodeName(elt);
+ html.push('<', nodeName);
+
+ for (var i = 0; i < elt.attributes.length; ++i)
+ {
+ var attr = elt.attributes[i];
+
+ // Hide attributes set by Firebug
+ // XXX Do we even have any?
+ if (Str.hasPrefix(attr.localName, "firebug-"))
+ continue;
+
+ // MathML
+ if (Str.hasPrefix(attr.localName, "-moz-math"))
+ {
+ // just hide for now
+ continue;
+ }
+
+ html.push(' ', attr.name, '="', Str.escapeForElementAttribute(attr.value), '"');
+ }
+
+ if (elt.firstChild)
+ {
+ html.push('>');
+
+ for (var child = elt.firstChild; child; child = child.nextSibling)
+ toHTML(child, html);
+
+ html.push('</', nodeName, '>');
+ }
+ else if (isElementSVG(elt) || isElementMathML(elt))
+ {
+ html.push('/>');
+ }
+ else if (isSelfClosing(elt))
+ {
+ html.push((isElementXHTML(elt))?'/>':'>');
+ }
+ else
+ {
+ html.push('></', nodeName, '>');
+ }
+ }
+ else if (elt.nodeType == Node.TEXT_NODE)
+ {
+ html.push(Str.escapeForTextNode(elt.textContent));
+ }
+ else if (elt.nodeType == Node.CDATA_SECTION_NODE)
+ {
+ html.push('<![CDATA[', elt.nodeValue, ']]>');
+ }
+ else if (elt.nodeType == Node.COMMENT_NODE)
+ {
+ html.push('<!--', elt.nodeValue, '-->');
+ }
+ }
+
+ var html = [];
+ toHTML(element, html);
+ return html.join("");
+};
+
+Xml.getElementXML = function(element)
+{
+ function toXML(elt, xml)
+ {
+ if (elt.nodeType == Node.ELEMENT_NODE)
+ {
+ if (Firebug.shouldIgnore(elt))
+ return;
+
+ var nodeName = getNodeName(elt);
+ xml.push('<', nodeName);
+
+ for (var i = 0; i < elt.attributes.length; ++i)
+ {
+ var attr = elt.attributes[i];
+
+ // Hide attributes set by Firebug
+ if (Str.hasPrefix(attr.localName, "firebug-"))
+ continue;
+
+ // MathML
+ if (Str.hasPrefix(attr.localName, "-moz-math"))
+ {
+ // just hide for now
+ continue;
+ }
+
+ xml.push(' ', attr.nodeName, '="', Str.escapeForElementAttribute(attr.nodeValue),'"');
+ }
+
+ if (elt.firstChild)
+ {
+ xml.push('>');
+
+ for (var child = elt.firstChild; child; child = child.nextSibling)
+ toXML(child, xml);
+
+ xml.push('</', nodeName, '>');
+ }
+ else
+ xml.push('/>');
+ }
+ else if (elt.nodeType == Node.TEXT_NODE)
+ xml.push(elt.nodeValue);
+ else if (elt.nodeType == Node.CDATA_SECTION_NODE)
+ xml.push('<![CDATA[', elt.nodeValue, ']]>');
+ else if (elt.nodeType == Node.COMMENT_NODE)
+ xml.push('<!--', elt.nodeValue, '-->');
+ }
+
+ var xml = [];
+ toXML(element, xml);
+ return xml.join("");
+};
+
+// ************************************************************************************************
+// Whitespace and Entity conversions
+
+var domUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
+
+/**
+ * Returns true if given document is based on a XML and so displaying pretty printed XML elements.
+ */
+Xml.isXMLPrettyPrint = function(context, win)
+{
+ if (!context)
+ return;
+
+ if (context.isXMLPrettyPrintDetected)
+ return context.isXMLPrettyPrint;
+
+ try
+ {
+ var doc = win ? win.document : context.window.document;
+ if (!doc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("lib.isXMLPrettyPrint; NO DOCUMENT", {win:win, context:context});
+ return false;
+ }
+ if (!doc.documentElement)
+ return false;
+
+ var bindings = domUtils.getBindingURLs(doc.documentElement);
+ for (var i = 0; i < bindings.length; i++)
+ {
+ var bindingURI = bindings.queryElementAt(i, Ci.nsIURI);
+ if (FBTrace.DBG_CSS)
+ FBTrace.sysout("bindingURL: " + i + " " + bindingURI.resolve(""));
+
+ context.isXMLPrettyPrintDetected = true;
+ return context.isXMLPrettyPrint = (bindingURI.resolve("") ===
+ "chrome://global/content/xml/XMLPrettyPrint.xml");
+ }
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("xml.isXMLPrettyPrint; EXCEPTION "+e, e);
+ }
+};
+
+// ************************************************************************************************
+
+Xml.isVisible = function(elt)
+{
+ if (isElementXUL(elt))
+ {
+ //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+
+ // elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n");
+ return (!elt.hidden && !elt.collapsed);
+ }
+
+ try
+ {
+ return (!isElementHTML(elt) && !isElementXHTML(elt)) ||
+ elt.offsetWidth > 0 ||
+ elt.offsetHeight > 0 ||
+ elt.localName in invisibleTags;
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("lib.isVisible; EXCEPTION " + err, err);
+ }
+
+ return false;
+};
+
+var invisibleTags = Xml.invisibleTags =
+{
+ "HTML": 1,
+ "HEAD": 1,
+ "TITLE": 1,
+ "META": 1,
+ "LINK": 1,
+ "STYLE": 1,
+ "SCRIPT": 1,
+ "NOSCRIPT": 1,
+ "BR": 1,
+ "PARAM": 1,
+ "COL": 1,
+
+ "html": 1,
+ "head": 1,
+ "title": 1,
+ "meta": 1,
+ "link": 1,
+ "style": 1,
+ "script": 1,
+ "noscript": 1,
+ "br": 1,
+ "param": 1,
+ "col": 1,
+ /*
+ "window": 1,
+ "browser": 1,
+ "frame": 1,
+ "tabbrowser": 1,
+ "WINDOW": 1,
+ "BROWSER": 1,
+ "FRAME": 1,
+ "TABBROWSER": 1,
+ */
+};
+
+// ********************************************************************************************* //
+
+return Xml;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/xpath.js b/content/firebug/lib/xpath.js
index 8a35419..17b33bb 100644
--- a/content/firebug/lib/xpath.js
+++ b/content/firebug/lib/xpath.js
@@ -1,244 +1,244 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/string"
-],
-function(Str) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Xpath = {};
-
-// ********************************************************************************************* //
-// XPATH
-
-/**
- * Gets an XPath for an element which describes its hierarchical location.
- */
-Xpath.getElementXPath = function(element)
-{
- if (element && element.id)
- return '//*[@id="' + element.id + '"]';
- else
- return Xpath.getElementTreeXPath(element);
-};
-
-Xpath.getElementTreeXPath = function(element)
-{
- var paths = [];
-
- // Use nodeName (instead of localName) so namespace prefix is included (if any).
- for (; element && element.nodeType == Node.ELEMENT_NODE; element = element.parentNode)
- {
- var index = 0;
- for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling)
- {
- // Ignore document type declaration.
- if (sibling.nodeType == Node.DOCUMENT_TYPE_NODE)
- continue;
-
- if (sibling.nodeName == element.nodeName)
- ++index;
- }
-
- var tagName = (element.prefix ? element.prefix + ":" : "") + element.localName;
- var pathIndex = (index ? "[" + (index+1) + "]" : "");
- paths.splice(0, 0, tagName + pathIndex);
- }
-
- return paths.length ? "/" + paths.join("/") : null;
-};
-
-Xpath.cssToXPath = function(rule)
-{
- var regElement = /^([#.]?)([a-z0-9\\*_-]*)((\|)([a-z0-9\\*_-]*))?/i;
- var regAttr1 = /^\[([^\]]*)\]/i;
- var regAttr2 = /^\[\s*([^~=\s]+)\s*(~?=)\s*"([^"]+)"\s*\]/i;
- var regPseudo = /^:([a-z_-])+/i;
- var regCombinator = /^(\s*[>+\s])?/i;
- var regComma = /^\s*,/i;
-
- var index = 1;
- var parts = ["//", "*"];
- var lastRule = null;
-
- while (rule.length && rule != lastRule)
- {
- lastRule = rule;
-
- // Trim leading whitespace
- rule = Str.trim(rule);
- if (!rule.length)
- break;
-
- // Match the element identifier
- var m = regElement.exec(rule);
- if (m)
- {
- if (!m[1])
- {
- // XXXjoe Namespace ignored for now
- if (m[5])
- parts[index] = m[5];
- else
- parts[index] = m[2];
- }
- else if (m[1] == '#')
- parts.push("[@id='" + m[2] + "']");
- else if (m[1] == '.')
- parts.push("[contains(concat(' ',normalize-space(@class),' '), ' " + m[2] + " ')]");
-
- rule = rule.substr(m[0].length);
- }
-
- // Match attribute selectors
- m = regAttr2.exec(rule);
- if (m)
- {
- if (m[2] == "~=")
- parts.push("[contains(@" + m[1] + ", '" + m[3] + "')]");
- else
- parts.push("[@" + m[1] + "='" + m[3] + "']");
-
- rule = rule.substr(m[0].length);
- }
- else
- {
- m = regAttr1.exec(rule);
- if (m)
- {
- parts.push("[@" + m[1] + "]");
- rule = rule.substr(m[0].length);
- }
- }
-
- // Skip over pseudo-classes and pseudo-elements, which are of no use to us
- m = regPseudo.exec(rule);
- while (m)
- {
- rule = rule.substr(m[0].length);
- m = regPseudo.exec(rule);
- }
-
- // Match combinators
- m = regCombinator.exec(rule);
- if (m && m[0].length)
- {
- if (m[0].indexOf(">") != -1)
- parts.push("/");
- else if (m[0].indexOf("+") != -1)
- parts.push("/following-sibling::");
- else
- parts.push("//");
-
- index = parts.length;
- parts.push("*");
- rule = rule.substr(m[0].length);
- }
-
- m = regComma.exec(rule);
- if (m)
- {
- parts.push(" | ", "//", "*");
- index = parts.length-1;
- rule = rule.substr(m[0].length);
- }
- }
-
- var xpath = parts.join("");
- return xpath;
-};
-
-Xpath.getElementsBySelector = function(doc, css)
-{
- var xpath = Xpath.cssToXPath(css);
- return Xpath.getElementsByXPath(doc, xpath);
-};
-
-Xpath.getElementsByXPath = function(doc, xpath)
-{
- try
- {
- return Xpath.evaluateXPath(doc, xpath);
- }
- catch(ex)
- {
- return [];
- }
-};
-
-/**
- * Evaluates an XPath expression.
- *
- * @param {Document} doc
- * @param {String} xpath The XPath expression.
- * @param {Node} contextNode The context node.
- * @param {int} resultType
- *
- * @returns {*} The result of the XPath expression, depending on resultType :<br> <ul>
- * <li>if it is XPathResult.NUMBER_TYPE, then it returns a Number</li>
- * <li>if it is XPathResult.STRING_TYPE, then it returns a String</li>
- * <li>if it is XPathResult.BOOLEAN_TYPE, then it returns a boolean</li>
- * <li>if it is XPathResult.UNORDERED_NODE_ITERATOR_TYPE
- * or XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, then it returns an array of nodes</li>
- * <li>if it is XPathResult.ORDERED_NODE_SNAPSHOT_TYPE
- * or XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, then it returns an array of nodes</li>
- * <li>if it is XPathResult.ANY_UNORDERED_NODE_TYPE
- * or XPathResult.FIRST_ORDERED_NODE_TYPE, then it returns a single node</li>
- * </ul>
- */
-Xpath.evaluateXPath = function(doc, xpath, contextNode, resultType)
-{
- if (contextNode === undefined)
- contextNode = doc;
-
- if (resultType === undefined)
- resultType = XPathResult.ANY_TYPE;
-
- var result = doc.evaluate(xpath, contextNode, null, resultType, null);
-
- switch (result.resultType)
- {
- case XPathResult.NUMBER_TYPE:
- return result.numberValue;
-
- case XPathResult.STRING_TYPE:
- return result.stringValue;
-
- case XPathResult.BOOLEAN_TYPE:
- return result.booleanValue;
-
- case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
- case XPathResult.ORDERED_NODE_ITERATOR_TYPE:
- var nodes = [];
- for (var item = result.iterateNext(); item; item = result.iterateNext())
- nodes.push(item);
- return nodes;
-
- case XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:
- case XPathResult.ORDERED_NODE_SNAPSHOT_TYPE:
- var nodes = [];
- for (var i = 0; i < result.snapshotLength; ++i)
- nodes.push(result.snapshotItem(i));
- return nodes;
-
- case XPathResult.ANY_UNORDERED_NODE_TYPE:
- case XPathResult.FIRST_ORDERED_NODE_TYPE:
- return result.singleNodeValue;
- }
-};
-
-Xpath.getRuleMatchingElements = function(rule, doc)
-{
- var css = rule.selectorText;
- var xpath = Xpath.cssToXPath(css);
- return Xpath.getElementsByXPath(doc, xpath);
-};
-
-// ********************************************************************************************* //
-
-return Xpath;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/string"
+],
+function(Str) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Xpath = {};
+
+// ********************************************************************************************* //
+// XPATH
+
+/**
+ * Gets an XPath for an element which describes its hierarchical location.
+ */
+Xpath.getElementXPath = function(element)
+{
+ if (element && element.id)
+ return '//*[@id="' + element.id + '"]';
+ else
+ return Xpath.getElementTreeXPath(element);
+};
+
+Xpath.getElementTreeXPath = function(element)
+{
+ var paths = [];
+
+ // Use nodeName (instead of localName) so namespace prefix is included (if any).
+ for (; element && element.nodeType == Node.ELEMENT_NODE; element = element.parentNode)
+ {
+ var index = 0;
+ for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling)
+ {
+ // Ignore document type declaration.
+ if (sibling.nodeType == Node.DOCUMENT_TYPE_NODE)
+ continue;
+
+ if (sibling.nodeName == element.nodeName)
+ ++index;
+ }
+
+ var tagName = (element.prefix ? element.prefix + ":" : "") + element.localName;
+ var pathIndex = (index ? "[" + (index+1) + "]" : "");
+ paths.splice(0, 0, tagName + pathIndex);
+ }
+
+ return paths.length ? "/" + paths.join("/") : null;
+};
+
+Xpath.cssToXPath = function(rule)
+{
+ var regElement = /^([#.]?)([a-z0-9\\*_-]*)((\|)([a-z0-9\\*_-]*))?/i;
+ var regAttr1 = /^\[([^\]]*)\]/i;
+ var regAttr2 = /^\[\s*([^~=\s]+)\s*(~?=)\s*"([^"]+)"\s*\]/i;
+ var regPseudo = /^:([a-z_-])+/i;
+ var regCombinator = /^(\s*[>+\s])?/i;
+ var regComma = /^\s*,/i;
+
+ var index = 1;
+ var parts = ["//", "*"];
+ var lastRule = null;
+
+ while (rule.length && rule != lastRule)
+ {
+ lastRule = rule;
+
+ // Trim leading whitespace
+ rule = Str.trim(rule);
+ if (!rule.length)
+ break;
+
+ // Match the element identifier
+ var m = regElement.exec(rule);
+ if (m)
+ {
+ if (!m[1])
+ {
+ // XXXjoe Namespace ignored for now
+ if (m[5])
+ parts[index] = m[5];
+ else
+ parts[index] = m[2];
+ }
+ else if (m[1] == '#')
+ parts.push("[@id='" + m[2] + "']");
+ else if (m[1] == '.')
+ parts.push("[contains(concat(' ',normalize-space(@class),' '), ' " + m[2] + " ')]");
+
+ rule = rule.substr(m[0].length);
+ }
+
+ // Match attribute selectors
+ m = regAttr2.exec(rule);
+ if (m)
+ {
+ if (m[2] == "~=")
+ parts.push("[contains(@" + m[1] + ", '" + m[3] + "')]");
+ else
+ parts.push("[@" + m[1] + "='" + m[3] + "']");
+
+ rule = rule.substr(m[0].length);
+ }
+ else
+ {
+ m = regAttr1.exec(rule);
+ if (m)
+ {
+ parts.push("[@" + m[1] + "]");
+ rule = rule.substr(m[0].length);
+ }
+ }
+
+ // Skip over pseudo-classes and pseudo-elements, which are of no use to us
+ m = regPseudo.exec(rule);
+ while (m)
+ {
+ rule = rule.substr(m[0].length);
+ m = regPseudo.exec(rule);
+ }
+
+ // Match combinators
+ m = regCombinator.exec(rule);
+ if (m && m[0].length)
+ {
+ if (m[0].indexOf(">") != -1)
+ parts.push("/");
+ else if (m[0].indexOf("+") != -1)
+ parts.push("/following-sibling::");
+ else
+ parts.push("//");
+
+ index = parts.length;
+ parts.push("*");
+ rule = rule.substr(m[0].length);
+ }
+
+ m = regComma.exec(rule);
+ if (m)
+ {
+ parts.push(" | ", "//", "*");
+ index = parts.length-1;
+ rule = rule.substr(m[0].length);
+ }
+ }
+
+ var xpath = parts.join("");
+ return xpath;
+};
+
+Xpath.getElementsBySelector = function(doc, css)
+{
+ var xpath = Xpath.cssToXPath(css);
+ return Xpath.getElementsByXPath(doc, xpath);
+};
+
+Xpath.getElementsByXPath = function(doc, xpath)
+{
+ try
+ {
+ return Xpath.evaluateXPath(doc, xpath);
+ }
+ catch(ex)
+ {
+ return [];
+ }
+};
+
+/**
+ * Evaluates an XPath expression.
+ *
+ * @param {Document} doc
+ * @param {String} xpath The XPath expression.
+ * @param {Node} contextNode The context node.
+ * @param {int} resultType
+ *
+ * @returns {*} The result of the XPath expression, depending on resultType :<br> <ul>
+ * <li>if it is XPathResult.NUMBER_TYPE, then it returns a Number</li>
+ * <li>if it is XPathResult.STRING_TYPE, then it returns a String</li>
+ * <li>if it is XPathResult.BOOLEAN_TYPE, then it returns a boolean</li>
+ * <li>if it is XPathResult.UNORDERED_NODE_ITERATOR_TYPE
+ * or XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, then it returns an array of nodes</li>
+ * <li>if it is XPathResult.ORDERED_NODE_SNAPSHOT_TYPE
+ * or XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, then it returns an array of nodes</li>
+ * <li>if it is XPathResult.ANY_UNORDERED_NODE_TYPE
+ * or XPathResult.FIRST_ORDERED_NODE_TYPE, then it returns a single node</li>
+ * </ul>
+ */
+Xpath.evaluateXPath = function(doc, xpath, contextNode, resultType)
+{
+ if (contextNode === undefined)
+ contextNode = doc;
+
+ if (resultType === undefined)
+ resultType = XPathResult.ANY_TYPE;
+
+ var result = doc.evaluate(xpath, contextNode, null, resultType, null);
+
+ switch (result.resultType)
+ {
+ case XPathResult.NUMBER_TYPE:
+ return result.numberValue;
+
+ case XPathResult.STRING_TYPE:
+ return result.stringValue;
+
+ case XPathResult.BOOLEAN_TYPE:
+ return result.booleanValue;
+
+ case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
+ case XPathResult.ORDERED_NODE_ITERATOR_TYPE:
+ var nodes = [];
+ for (var item = result.iterateNext(); item; item = result.iterateNext())
+ nodes.push(item);
+ return nodes;
+
+ case XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:
+ case XPathResult.ORDERED_NODE_SNAPSHOT_TYPE:
+ var nodes = [];
+ for (var i = 0; i < result.snapshotLength; ++i)
+ nodes.push(result.snapshotItem(i));
+ return nodes;
+
+ case XPathResult.ANY_UNORDERED_NODE_TYPE:
+ case XPathResult.FIRST_ORDERED_NODE_TYPE:
+ return result.singleNodeValue;
+ }
+};
+
+Xpath.getRuleMatchingElements = function(rule, doc)
+{
+ var css = rule.selectorText;
+ var xpath = Xpath.cssToXPath(css);
+ return Xpath.getElementsByXPath(doc, xpath);
+};
+
+// ********************************************************************************************* //
+
+return Xpath;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/lib/xpcom.js b/content/firebug/lib/xpcom.js
index 472ea3f..59f635d 100644
--- a/content/firebug/lib/xpcom.js
+++ b/content/firebug/lib/xpcom.js
@@ -1,85 +1,85 @@
-/* See license.txt for terms of usage */
-
-define([], function() {
-
-// ********************************************************************************************* //
-// Constants
-
-var Ci = Components.interfaces;
-var Cc = Components.classes;
-var Cu = Components.utils;
-
-var Xpcom = {};
-
-// ********************************************************************************************* //
-// XPCOM Utilities
-
-/**
- * Returns required XPCOM service
- * @param {Object} cName Name of the service.
- * @param {Object} ifaceName Name of the required interface
- */
-Xpcom.CCSV = function(cName, ifaceName)
-{
- try
- {
- // if fbs fails to load, the error can be Cc[cName] has no properties
- return Cc[cName].getService(Ci[ifaceName]);
- }
- catch (exc)
- {
- Cu.reportError(cName + "@" + ifaceName + " FAILED " + exc + " " +
- (exc.stack ? exc.stack : ""));
-
- if (!Cc[cName])
- Cu.reportError("Xpcom.CCSV; No Components.classes entry for " + cName);
- else if (!Ci[ifaceName])
- Cu.reportError("Xpcom.CCSV; No Components.interfaces entry for " + ifaceName);
- }
-};
-
-/**
- * Returns a new instance of required XPCOM component
- * @param {Object} cName Name of the component.
- * @param {Object} ifaceName Name of required interface.
- */
-Xpcom.CCIN = function(cName, ifaceName)
-{
- try
- {
- return Cc[cName].createInstance(Ci[ifaceName]);
- }
- catch (exc)
- {
- Cu.reportError(cName + "@" + ifaceName + " FAILED " + exc);
-
- if (!Cc[cName])
- Cu.reportError("Xpcom.CCIN; No Components.classes entry for " + cName);
- else if (!Ci[ifaceName])
- Cu.reportError("Xpcom.CCIN; No Components.interfaces entry for " + ifaceName);
- }
-};
-
-/**
- * Queries passed object for required interface.
- * @param {Object} obj Object to query an interface for.
- * @param {Object} iface Required interface.
- */
-Xpcom.QI = function(obj, iface)
-{
- try
- {
- return obj.QueryInterface(iface);
- }
- catch (exc)
- {
- Cu.reportError(cName + "@" + ifaceName + " FAILED " + exc);
- }
-};
-
-// ********************************************************************************************* //
-
-return Xpcom;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([], function() {
+
+// ********************************************************************************************* //
+// Constants
+
+var Ci = Components.interfaces;
+var Cc = Components.classes;
+var Cu = Components.utils;
+
+var Xpcom = {};
+
+// ********************************************************************************************* //
+// XPCOM Utilities
+
+/**
+ * Returns required XPCOM service
+ * @param {Object} cName Name of the service.
+ * @param {Object} ifaceName Name of the required interface
+ */
+Xpcom.CCSV = function(cName, ifaceName)
+{
+ try
+ {
+ // if fbs fails to load, the error can be Cc[cName] has no properties
+ return Cc[cName].getService(Ci[ifaceName]);
+ }
+ catch (exc)
+ {
+ Cu.reportError(cName + "@" + ifaceName + " FAILED " + exc + " " +
+ (exc.stack ? exc.stack : ""));
+
+ if (!Cc[cName])
+ Cu.reportError("Xpcom.CCSV; No Components.classes entry for " + cName);
+ else if (!Ci[ifaceName])
+ Cu.reportError("Xpcom.CCSV; No Components.interfaces entry for " + ifaceName);
+ }
+};
+
+/**
+ * Returns a new instance of required XPCOM component
+ * @param {Object} cName Name of the component.
+ * @param {Object} ifaceName Name of required interface.
+ */
+Xpcom.CCIN = function(cName, ifaceName)
+{
+ try
+ {
+ return Cc[cName].createInstance(Ci[ifaceName]);
+ }
+ catch (exc)
+ {
+ Cu.reportError(cName + "@" + ifaceName + " FAILED " + exc);
+
+ if (!Cc[cName])
+ Cu.reportError("Xpcom.CCIN; No Components.classes entry for " + cName);
+ else if (!Ci[ifaceName])
+ Cu.reportError("Xpcom.CCIN; No Components.interfaces entry for " + ifaceName);
+ }
+};
+
+/**
+ * Queries passed object for required interface.
+ * @param {Object} obj Object to query an interface for.
+ * @param {Object} iface Required interface.
+ */
+Xpcom.QI = function(obj, iface)
+{
+ try
+ {
+ return obj.QueryInterface(iface);
+ }
+ catch (exc)
+ {
+ Cu.reportError(cName + "@" + ifaceName + " FAILED " + exc);
+ }
+};
+
+// ********************************************************************************************* //
+
+return Xpcom;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/main.js b/content/firebug/main.js
index f25596f..82f5724 100644
--- a/content/firebug/main.js
+++ b/content/firebug/main.js
@@ -1,189 +1,189 @@
-/* See license.txt for terms of usage */
-
-(function() {
-
-// ********************************************************************************************* //
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-var prefDomain = "extensions.firebug";
-
-// xxxHonza: I am getting the following exception sometimes:
-// Console Firebug.getModuleLoaderConfig is not a function"
-// This could be be the reason why users can't open Firebug even if clicking on the start button.
-// Looks like 'moduleConfig.js' is not loaded yet?
-if (typeof(Firebug.getModuleLoaderConfig) != "function")
-{
- FBTrace.sysout("main; ERROR Firebug.getModuleLoaderConfig is not a function!");
- Cu.reportError("main; ERROR Firebug.getModuleLoaderConfig is not a function!");
- return;
-}
-
-var config = Firebug.getModuleLoaderConfig();
-
-if (FBTrace.DBG_INITIALIZE || FBTrace.DBG_MODULES)
-{
- if (FBTrace.DBG_MODULES)
- config.debug = true;
-
- FBTrace.sysout("main.js; Loading Firebug modules...", config);
- var startLoading = new Date().getTime();
-}
-
-// ********************************************************************************************* //
-
-try
-{
- // xxxHonza: temporary hack for Crossfire to provide custom set of modules.
- var prefService = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
- var value = prefService.getCharPref("extensions.firebug.defaultModuleList");
- if (value)
- {
- var modules = value.split(",");
- if (modules.length)
- config.modules = modules;
- }
-}
-catch (err)
-{
-}
-
-// ********************************************************************************************* //
-
-// Backward compatibility (some modules changed location)
-// http://getfirebug.com/wiki/index.php/Extension_Migration
-// http://code.google.com/p/fbug/issues/detail?id=5199
-var paths = {};
-paths["firebug/css/cssComputedElementPanel"] = "firebug/css/computedPanel";
-paths["firebug/css/cssElementPanel"] = "firebug/css/stylePanel";
-paths["firebug/firefox/annotations"] = "firebug/chrome/annotations";
-paths["firebug/firefox/privacy"] = "firebug/chrome/privacy";
-paths["firebug/firefox/system"] = "firebug/lib/system";
-paths["firebug/firefox/tabWatcher"] = "firebug/chrome/tabWatcher";
-paths["firebug/firefox/xpcom"] = "firebug/lib/xpcom";
-paths["firebug/firefox/window"] = "firebug/chrome/window";
-paths["firebug/firefox/firefox"] = "firebug/chrome/firefox";
-paths["firebug/net/httpLib"] = "firebug/lib/http";
-
-var originalLoad = require.load;
-require.load = function(context, fullName, url)
-{
- if (paths[fullName])
- {
- var newUrl = paths[fullName].replace("firebug/", "firebug/content/");
- url = "chrome://" + newUrl + ".js";
- }
-
- return originalLoad.apply(require, [context, fullName, url]);
-};
-
-// ********************************************************************************************* //
-
-// For now extensions should use 'Firebug.require' to load it's modules, so
-// initialize the field. It should be done now since overlays can be applied
-// before the core Firebug modules are (asynchronously) loaded.
-Firebug.require = require;
-
-// Load core Firebug modules.
-var modules = [
- "firebug/chrome/chrome",
- "firebug/lib/lib",
- "firebug/firebug",
- "firebug/bti/inProcess/browser"
-].concat(config.modules);
-
-// ********************************************************************************************* //
-
-require(config, modules, function(ChromeFactory, FBL, Firebug, Browser)
-{
- try
- {
- // Wait till all modules (including those coming from Firebug extensions)
- // are loaded and thus all panels, firebug-modules, bundles, etc. are properly
- // registered and Firebug can start to send initialization events.
- if (typeof(requirejs) != "undefined")
- {
- var prevResourcesReady = requirejs.resourcesReady;
- requirejs.resourcesReady = function(isReady)
- {
- if (isReady && requirejs.resourcesDone)
- onModulesLoaded(ChromeFactory, FBL, Firebug, Browser);
-
- if (prevResourcesReady)
- prevResourcesReady(isReady);
- };
- }
- else
- {
- onModulesLoaded(ChromeFactory, FBL, Firebug, Browser);
- }
- }
- catch(exc)
- {
- if (FBTrace)
- FBTrace.sysout("Firebug main initialization ERROR " + exc, exc);
-
- window.dump("Firebug main initialization ERROR " + exc);
-
- if (Components)
- Components.utils.reportError(exc);
- }
-});
-
-// ********************************************************************************************* //
-
-function onModulesLoaded(ChromeFactory, FBL, Firebug, Browser)
-{
- // Extensions are using the same loader, so make sure to not
- // initialize Firebug twice.
- if (Firebug.isInitialized)
- return;
-
- if (FBTrace.DBG_INITIALIZE || FBTrace.DBG_MODULES)
- {
- var delta = (new Date().getTime()) - startLoading;
- FBTrace.sysout("main.js; Firebug modules loaded using RequireJS in " + delta + " ms");
- }
-
- // Extensions also shouldn't use the global require since it should be removed
- // in the future (if possible). Global 'require' could collide with other
- // extensions.
- Firebug.connection = new Browser(); // prepare for addListener calls
-
- Browser.onDebug = function()
- {
- FBTrace.sysout.apply(FBTrace, arguments);
- };
-
- Firebug.Options.initialize(prefDomain);
-
- function connect()
- {
- Firebug.connection.connect(); // start firing events
- }
-
- if (FBTrace.DBG_INITIALIZE || FBTrace.DBG_MODULES)
- FBTrace.sysout("main.js; All RequireJS modules loaded");
-
- if (window.FBL.legacyPatch)
- {
- if (FBTrace.DBG_MODULES)
- FBTrace.sysout("firebug main.js; legacyPatch");
-
- window.FBL.legacyPatch(FBL, Firebug);
- }
-
- if (!window.panelBarWaiter && FBTrace.DBG_ERRORS)
- FBTrace.sysout("main; ERROR window.panelBarWaiter is not available " +
- ", Firebug already initialized: " + Firebug.isInitialized);
-
- if (window.panelBarWaiter)
- window.panelBarWaiter.waitForPanelBar(ChromeFactory, null, connect);
-}
-
-// ********************************************************************************************* //
-})();
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+(function() {
+
+// ********************************************************************************************* //
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+
+var prefDomain = "extensions.firebug";
+
+// xxxHonza: I am getting the following exception sometimes:
+// Console Firebug.getModuleLoaderConfig is not a function"
+// This could be be the reason why users can't open Firebug even if clicking on the start button.
+// Looks like 'moduleConfig.js' is not loaded yet?
+if (typeof(Firebug.getModuleLoaderConfig) != "function")
+{
+ FBTrace.sysout("main; ERROR Firebug.getModuleLoaderConfig is not a function!");
+ Cu.reportError("main; ERROR Firebug.getModuleLoaderConfig is not a function!");
+ return;
+}
+
+var config = Firebug.getModuleLoaderConfig();
+
+if (FBTrace.DBG_INITIALIZE || FBTrace.DBG_MODULES)
+{
+ if (FBTrace.DBG_MODULES)
+ config.debug = true;
+
+ FBTrace.sysout("main.js; Loading Firebug modules...", config);
+ var startLoading = new Date().getTime();
+}
+
+// ********************************************************************************************* //
+
+try
+{
+ // xxxHonza: temporary hack for Crossfire to provide custom set of modules.
+ var prefService = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
+ var value = prefService.getCharPref("extensions.firebug.defaultModuleList");
+ if (value)
+ {
+ var modules = value.split(",");
+ if (modules.length)
+ config.modules = modules;
+ }
+}
+catch (err)
+{
+}
+
+// ********************************************************************************************* //
+
+// Backward compatibility (some modules changed location)
+// http://getfirebug.com/wiki/index.php/Extension_Migration
+// http://code.google.com/p/fbug/issues/detail?id=5199
+var paths = {};
+paths["firebug/css/cssComputedElementPanel"] = "firebug/css/computedPanel";
+paths["firebug/css/cssElementPanel"] = "firebug/css/stylePanel";
+paths["firebug/firefox/annotations"] = "firebug/chrome/annotations";
+paths["firebug/firefox/privacy"] = "firebug/chrome/privacy";
+paths["firebug/firefox/system"] = "firebug/lib/system";
+paths["firebug/firefox/tabWatcher"] = "firebug/chrome/tabWatcher";
+paths["firebug/firefox/xpcom"] = "firebug/lib/xpcom";
+paths["firebug/firefox/window"] = "firebug/chrome/window";
+paths["firebug/firefox/firefox"] = "firebug/chrome/firefox";
+paths["firebug/net/httpLib"] = "firebug/lib/http";
+
+var originalLoad = require.load;
+require.load = function(context, fullName, url)
+{
+ if (paths[fullName])
+ {
+ var newUrl = paths[fullName].replace("firebug/", "firebug/content/");
+ url = "chrome://" + newUrl + ".js";
+ }
+
+ return originalLoad.apply(require, [context, fullName, url]);
+};
+
+// ********************************************************************************************* //
+
+// For now extensions should use 'Firebug.require' to load it's modules, so
+// initialize the field. It should be done now since overlays can be applied
+// before the core Firebug modules are (asynchronously) loaded.
+Firebug.require = require;
+
+// Load core Firebug modules.
+var modules = [
+ "firebug/chrome/chrome",
+ "firebug/lib/lib",
+ "firebug/firebug",
+ "firebug/bti/inProcess/browser"
+].concat(config.modules);
+
+// ********************************************************************************************* //
+
+require(config, modules, function(ChromeFactory, FBL, Firebug, Browser)
+{
+ try
+ {
+ // Wait till all modules (including those coming from Firebug extensions)
+ // are loaded and thus all panels, firebug-modules, bundles, etc. are properly
+ // registered and Firebug can start to send initialization events.
+ if (typeof(requirejs) != "undefined")
+ {
+ var prevResourcesReady = requirejs.resourcesReady;
+ requirejs.resourcesReady = function(isReady)
+ {
+ if (isReady && requirejs.resourcesDone)
+ onModulesLoaded(ChromeFactory, FBL, Firebug, Browser);
+
+ if (prevResourcesReady)
+ prevResourcesReady(isReady);
+ };
+ }
+ else
+ {
+ onModulesLoaded(ChromeFactory, FBL, Firebug, Browser);
+ }
+ }
+ catch(exc)
+ {
+ if (FBTrace)
+ FBTrace.sysout("Firebug main initialization ERROR " + exc, exc);
+
+ window.dump("Firebug main initialization ERROR " + exc);
+
+ if (Components)
+ Components.utils.reportError(exc);
+ }
+});
+
+// ********************************************************************************************* //
+
+function onModulesLoaded(ChromeFactory, FBL, Firebug, Browser)
+{
+ // Extensions are using the same loader, so make sure to not
+ // initialize Firebug twice.
+ if (Firebug.isInitialized)
+ return;
+
+ if (FBTrace.DBG_INITIALIZE || FBTrace.DBG_MODULES)
+ {
+ var delta = (new Date().getTime()) - startLoading;
+ FBTrace.sysout("main.js; Firebug modules loaded using RequireJS in " + delta + " ms");
+ }
+
+ // Extensions also shouldn't use the global require since it should be removed
+ // in the future (if possible). Global 'require' could collide with other
+ // extensions.
+ Firebug.connection = new Browser(); // prepare for addListener calls
+
+ Browser.onDebug = function()
+ {
+ FBTrace.sysout.apply(FBTrace, arguments);
+ };
+
+ Firebug.Options.initialize(prefDomain);
+
+ function connect()
+ {
+ Firebug.connection.connect(); // start firing events
+ }
+
+ if (FBTrace.DBG_INITIALIZE || FBTrace.DBG_MODULES)
+ FBTrace.sysout("main.js; All RequireJS modules loaded");
+
+ if (window.FBL.legacyPatch)
+ {
+ if (FBTrace.DBG_MODULES)
+ FBTrace.sysout("firebug main.js; legacyPatch");
+
+ window.FBL.legacyPatch(FBL, Firebug);
+ }
+
+ if (!window.panelBarWaiter && FBTrace.DBG_ERRORS)
+ FBTrace.sysout("main; ERROR window.panelBarWaiter is not available " +
+ ", Firebug already initialized: " + Firebug.isInitialized);
+
+ if (window.panelBarWaiter)
+ window.panelBarWaiter.waitForPanelBar(ChromeFactory, null, connect);
+}
+
+// ********************************************************************************************* //
+})();
+
+// ********************************************************************************************* //
diff --git a/content/firebug/moduleConfig.js b/content/firebug/moduleConfig.js
index d833c5c..e3f2ea7 100644
--- a/content/firebug/moduleConfig.js
+++ b/content/firebug/moduleConfig.js
@@ -1,199 +1,199 @@
-/* See license.txt for terms of usage */
-
-var Firebug = Firebug || {};
-
-// ********************************************************************************************* //
-
-/**
- * Returns default configuration object for Firebug module loader (RequireJS). Custom
- * value can be passed through the argument.
- *
- * @param {Object} baseConfig Custom configuration values.
- */
-Firebug.getModuleLoaderConfig = function(baseConfig)
-{
- baseConfig = baseConfig || {};
-
- // Set configuration defaults.
- baseConfig.baseLoaderUrl = baseConfig.baseLoaderUrl || "resource://moduleLoader/";
- baseConfig.prefDomain = baseConfig.prefDomain || "extensions.firebug";
- baseConfig.baseUrl = baseConfig.baseUrl || "resource://";
- baseConfig.xhtml = true; // createElementNS used
- baseConfig.arch = baseConfig.arch || "chrome://firebug/content/bti/inProcess";
-
- baseConfig.paths = baseConfig.paths || {
- "arch": baseConfig.arch,
- "firebug": "chrome://firebug/content"
- };
-
- var config = {};
- var keys = Object.keys(baseConfig);
- keys.forEach(function copy(key)
- {
- config[key] = baseConfig[key];
- });
-
- // This is the basic list of necessary modules. All the other modules will be
- // automatically loaded as dependencies.
- config.modules = [
- "firebug/trace/traceModule",
- "firebug/chrome/navigationHistory",
- "firebug/chrome/knownIssues",
- "firebug/js/sourceFile",
- "firebug/chrome/shortcuts",
- "firebug/firefox/start-button/startButtonOverlay",
- "firebug/firefox/external-editors/externalEditors",
- "firebug/chrome/panelActivation",
- //"firebug/console/memoryProfiler", xxxHonza: removed from 1.10 (issue 5599)
- "firebug/chrome/tableRep",
- "firebug/html/htmlPanel",
- "firebug/dom/domSidePanel",
- "firebug/console/commandLinePopup",
- "firebug/chrome/toggleSidePanels",
-
- // Commands
- "firebug/console/commands/lastCommandLineResult",
- "firebug/console/commands/useInCommandLine",
- "firebug/console/commands/getEventListeners",
-
- "firebug/accessible/a11y",
- "firebug/js/scriptPanel",
- "firebug/js/callstack",
- "firebug/console/consoleInjector",
- "firebug/net/spy",
- "firebug/js/tabCache",
- "firebug/chrome/activation",
- "firebug/css/stylePanel",
- "firebug/css/computedPanel",
- "firebug/cookies/cookieModule",
- "firebug/cookies/cookiePanel",
- "firebug/css/selectorPanel",
- "firebug/console/errorMessageRep",
- "firebug/console/exceptionRep",
- ];
-
- return config;
-};
-
-// ********************************************************************************************* //
-// Firebug Extension Registration
-
-Firebug.extensions = {};
-
-/**
- * Registers a Firebug extension. The framework automatically loads 'main' extension
- * module (AMD).
- *
- * @param {String} extName Unique name of the extension. This name is used to
- * build chrome paths for extension resource: chrome://<ext-id>/content/main.js
- * @param {Object} extConfig Configuration file
- */
-Firebug.registerExtension = function(extName, extConfig)
-{
- extConfig = extConfig || {};
-
- var tempConfig = this.getExtensionConfig(extName);
- if (tempConfig)
- {
- Components.utils.reportError("firebug.registerExtension; ERROR An extension " +
- "with the same ID already exists! - " + extName, tempConfig);
- return;
- }
-
- this.extensions[extName] = extConfig;
-
- var config = Firebug.getModuleLoaderConfig();
-
- // Do not use resource: protocol for extensions (it's not allowed for bootstrapped
- // extensions to specify the protocol in chrome.manifest and it would require
- // additional code in every extension (in bootstrap.js), use standard chrome: instead.
- //config.paths[extName] = extName + "/content";
- config.paths[extName] = "chrome://" + extName + "/content";
-
- // Load main.js module (the entry point of the extension) and support for tracing.
- // All other extension modules should be loaded within "main" module.
- Firebug.require(config, [
- extName + "/main",
- "firebug/lib/trace"
- ],
- function(Extension, FBTrace)
- {
- try
- {
- extConfig.app = Extension;
-
- // Extension intialization procedure should be within this method (in main.js).
- if (Extension.initialize)
- Extension.initialize();
-
- // Refresh Firebug tab-bar to make sure that any new registered panels
- // are displayed.
- if (Firebug.chrome)
- Firebug.chrome.syncMainPanels();
-
- if (FBTrace.DBG_INITIALIZE)
- FBTrace.sysout("firebug.main; Extension '" + extName + " - modules loaded!");
- }
- catch (err)
- {
- Components.utils.reportError("firebug.main; Extension: " + extName +
- " EXCEPTION " + err, err);
- }
- });
-};
-
-/**
- * Unregisters and shutdowns specific extension. Registered extensions are unregistered
- * automatically when Firebug shutdowns. Bootstrapped extensions should use this method
- * to dynamically uninstall an extension.
- *
- * @param {Object} extName ID of the extensions that should be unregistered.
- */
-Firebug.unregisterExtension = function(extName)
-{
- var extConfig = this.getExtensionConfig(extName);
- if (!extConfig)
- return;
-
- try
- {
- if (extConfig.app && extConfig.app.shutdown)
- extConfig.app.shutdown();
-
- delete this.extensions[extName];
- }
- catch (err)
- {
- Components.utils.reportError("unregisterExtension: " + extName +
- " EXCEPTION " + err, err);
- }
-};
-
-Firebug.getExtensionConfig = function(extName)
-{
- return this.extensions[extName];
-};
-
-Firebug.iterateExtensions = function(callback)
-{
- for (var ext in this.extensions)
- callback(ext, this.extensions[ext]);
-};
-
-/**
- * Unregisters and shutdowns all registered extensions. Called by the framework when
- * Firebug shutdowns.
- */
-Firebug.unregisterExtensions = function()
-{
- var extensions = {};
- for (var p in this.extensions)
- extensions[p] = this.extensions[p];
-
- for (var extName in extensions)
- this.unregisterExtension(extName);
-
- this.extensions = {};
-};
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+var Firebug = Firebug || {};
+
+// ********************************************************************************************* //
+
+/**
+ * Returns default configuration object for Firebug module loader (RequireJS). Custom
+ * value can be passed through the argument.
+ *
+ * @param {Object} baseConfig Custom configuration values.
+ */
+Firebug.getModuleLoaderConfig = function(baseConfig)
+{
+ baseConfig = baseConfig || {};
+
+ // Set configuration defaults.
+ baseConfig.baseLoaderUrl = baseConfig.baseLoaderUrl || "resource://moduleLoader/";
+ baseConfig.prefDomain = baseConfig.prefDomain || "extensions.firebug";
+ baseConfig.baseUrl = baseConfig.baseUrl || "resource://";
+ baseConfig.xhtml = true; // createElementNS used
+ baseConfig.arch = baseConfig.arch || "chrome://firebug/content/bti/inProcess";
+
+ baseConfig.paths = baseConfig.paths || {
+ "arch": baseConfig.arch,
+ "firebug": "chrome://firebug/content"
+ };
+
+ var config = {};
+ var keys = Object.keys(baseConfig);
+ keys.forEach(function copy(key)
+ {
+ config[key] = baseConfig[key];
+ });
+
+ // This is the basic list of necessary modules. All the other modules will be
+ // automatically loaded as dependencies.
+ config.modules = [
+ "firebug/trace/traceModule",
+ "firebug/chrome/navigationHistory",
+ "firebug/chrome/knownIssues",
+ "firebug/js/sourceFile",
+ "firebug/chrome/shortcuts",
+ "firebug/firefox/start-button/startButtonOverlay",
+ "firebug/firefox/external-editors/externalEditors",
+ "firebug/chrome/panelActivation",
+ //"firebug/console/memoryProfiler", xxxHonza: removed from 1.10 (issue 5599)
+ "firebug/chrome/tableRep",
+ "firebug/html/htmlPanel",
+ "firebug/dom/domSidePanel",
+ "firebug/console/commandLinePopup",
+ "firebug/chrome/toggleSidePanels",
+
+ // Commands
+ "firebug/console/commands/lastCommandLineResult",
+ "firebug/console/commands/useInCommandLine",
+ "firebug/console/commands/getEventListeners",
+
+ "firebug/accessible/a11y",
+ "firebug/js/scriptPanel",
+ "firebug/js/callstack",
+ "firebug/console/consoleInjector",
+ "firebug/net/spy",
+ "firebug/js/tabCache",
+ "firebug/chrome/activation",
+ "firebug/css/stylePanel",
+ "firebug/css/computedPanel",
+ "firebug/cookies/cookieModule",
+ "firebug/cookies/cookiePanel",
+ "firebug/css/selectorPanel",
+ "firebug/console/errorMessageRep",
+ "firebug/console/exceptionRep",
+ ];
+
+ return config;
+};
+
+// ********************************************************************************************* //
+// Firebug Extension Registration
+
+Firebug.extensions = {};
+
+/**
+ * Registers a Firebug extension. The framework automatically loads 'main' extension
+ * module (AMD).
+ *
+ * @param {String} extName Unique name of the extension. This name is used to
+ * build chrome paths for extension resource: chrome://<ext-id>/content/main.js
+ * @param {Object} extConfig Configuration file
+ */
+Firebug.registerExtension = function(extName, extConfig)
+{
+ extConfig = extConfig || {};
+
+ var tempConfig = this.getExtensionConfig(extName);
+ if (tempConfig)
+ {
+ Components.utils.reportError("firebug.registerExtension; ERROR An extension " +
+ "with the same ID already exists! - " + extName, tempConfig);
+ return;
+ }
+
+ this.extensions[extName] = extConfig;
+
+ var config = Firebug.getModuleLoaderConfig();
+
+ // Do not use resource: protocol for extensions (it's not allowed for bootstrapped
+ // extensions to specify the protocol in chrome.manifest and it would require
+ // additional code in every extension (in bootstrap.js), use standard chrome: instead.
+ //config.paths[extName] = extName + "/content";
+ config.paths[extName] = "chrome://" + extName + "/content";
+
+ // Load main.js module (the entry point of the extension) and support for tracing.
+ // All other extension modules should be loaded within "main" module.
+ Firebug.require(config, [
+ extName + "/main",
+ "firebug/lib/trace"
+ ],
+ function(Extension, FBTrace)
+ {
+ try
+ {
+ extConfig.app = Extension;
+
+ // Extension intialization procedure should be within this method (in main.js).
+ if (Extension.initialize)
+ Extension.initialize();
+
+ // Refresh Firebug tab-bar to make sure that any new registered panels
+ // are displayed.
+ if (Firebug.chrome)
+ Firebug.chrome.syncMainPanels();
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("firebug.main; Extension '" + extName + " - modules loaded!");
+ }
+ catch (err)
+ {
+ Components.utils.reportError("firebug.main; Extension: " + extName +
+ " EXCEPTION " + err, err);
+ }
+ });
+};
+
+/**
+ * Unregisters and shutdowns specific extension. Registered extensions are unregistered
+ * automatically when Firebug shutdowns. Bootstrapped extensions should use this method
+ * to dynamically uninstall an extension.
+ *
+ * @param {Object} extName ID of the extensions that should be unregistered.
+ */
+Firebug.unregisterExtension = function(extName)
+{
+ var extConfig = this.getExtensionConfig(extName);
+ if (!extConfig)
+ return;
+
+ try
+ {
+ if (extConfig.app && extConfig.app.shutdown)
+ extConfig.app.shutdown();
+
+ delete this.extensions[extName];
+ }
+ catch (err)
+ {
+ Components.utils.reportError("unregisterExtension: " + extName +
+ " EXCEPTION " + err, err);
+ }
+};
+
+Firebug.getExtensionConfig = function(extName)
+{
+ return this.extensions[extName];
+};
+
+Firebug.iterateExtensions = function(callback)
+{
+ for (var ext in this.extensions)
+ callback(ext, this.extensions[ext]);
+};
+
+/**
+ * Unregisters and shutdowns all registered extensions. Called by the framework when
+ * Firebug shutdowns.
+ */
+Firebug.unregisterExtensions = function()
+{
+ var extensions = {};
+ for (var p in this.extensions)
+ extensions[p] = this.extensions[p];
+
+ for (var extName in extensions)
+ this.unregisterExtension(extName);
+
+ this.extensions = {};
+};
+
+// ********************************************************************************************* //
diff --git a/content/firebug/net/fontViewer.js b/content/firebug/net/fontViewer.js
index ad0fc96..b4ba8c5 100644
--- a/content/firebug/net/fontViewer.js
+++ b/content/firebug/net/fontViewer.js
@@ -1,706 +1,706 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/xpcom",
- "firebug/lib/events",
- "firebug/chrome/window",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/string",
- "firebug/lib/fonts",
- "firebug/lib/url",
- "firebug/lib/http",
- "firebug/net/netUtils",
- "firebug/lib/options"
-],
-function(Obj, Firebug, Domplate, Locale, Xpcom, Events, Win, Css, Dom, Str, Fonts, Url, Http,
- NetUtils, Options) {
-
-// ********************************************************************************************* //
-
-// List of font content types
-var contentTypes =
-[
- "application/x-woff",
- "application/x-font-woff",
- "application/x-ttf",
- "application/x-font-ttf",
- "font/ttf",
- "font/woff",
- "application/x-otf",
- "application/x-font-otf",
- "application/font-woff"
-];
-
-// ********************************************************************************************* //
-// Model implementation
-
-Firebug.FontViewerModel = Obj.extend(Firebug.Module,
-{
- dispatchName: "fontViewer",
- contentTypes: contentTypes,
-
- initialize: function()
- {
- Firebug.TabCacheModel.addListener(this);
- Firebug.NetMonitor.NetInfoBody.addListener(this);
- Firebug.registerUIListener(this);
- },
-
- shutdown: function()
- {
- Firebug.TabCacheModel.removeListener(this);
- Firebug.NetMonitor.NetInfoBody.removeListener(this);
- Firebug.unregisterUIListener(this);
- },
-
- /**
- * Checks whether the given file name and content are a valid font file
- *
- * @param contentType: MIME type of the file
- * @param url: URL of the file
- * @param data: File contents
- * @return True, if the given data outlines a font file, otherwise false
- */
- isFont: function(contentType, url, data)
- {
- if (!contentType)
- return false;
-
- if (NetUtils.matchesContentType(contentType, contentTypes))
- {
- if (FBTrace.DBG_FONTS)
- {
- FBTrace.sysout("fontviewer.isFont; content type: "+contentType,
- {url: url, data: data});
- }
-
- return true;
- }
-
- // Workaround for font responses without proper content type
- // Let's consider all responses starting with "wOFF" as font. In the worst
- // case there will be an exception when parsing. This means that no-font
- // responses (and post data) (with "wOFF") can be parsed unnecessarily,
- // which represents a little overhead, but this happens only if the request
- // is actually expanded by the user in the UI (Net & Console panel).
- var extension = Url.getFileExtension(url);
- var validExtension = /woff|otf|ttf/.exec(extension);
- if (validExtension && (!data || Str.hasPrefix(data, "wOFF") || Str.hasPrefix(data, "OTTO")))
- {
- if (FBTrace.DBG_FONTS)
- {
- FBTrace.sysout("fontviewer.isFont; Font without proper content type",
- {url: url, data: data});
- }
-
- return true;
- }
-
- contentType = contentType.split(";")[0];
- contentType = Str.trim(contentType);
- return contentTypes[contentType];
- },
-
- /**
- * Parses the file and returns information about the font
- *
- * @param file: File to parse
- * @return Font related information
- */
- parseFont: function(file)
- {
- return Fonts.getFontInfo(Firebug.currentContext, null, file.href);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // TabCacheModel listener
-
- shouldCacheRequest: function(request)
- {
- if (this.isFont(request.contentType, request.name))
- return true;
-
- return false;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // NetInfoBody listener
-
- updateResponse: function(netInfoBox, file, context)
- {
- // Let listeners parse the font
- Events.dispatch(this.fbListeners, "onParseFont", [file]);
-
- // The font is still not there, try to parse most common cases
- if (!file.fontObject)
- {
- if (this.isFont(Http.safeGetContentType(file.request), file.href, file.responseText))
- file.fontObject = this.parseFont(file);
- }
-
- if (file.fontObject)
- {
- var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0);
- this.Preview.render(responseTextBox, file, context);
- netInfoBox.responsePresented = true;
-
- if (FBTrace.DBG_FONTS)
- FBTrace.sysout("fontviewer.updateResponse", file);
- }
- }
-});
-
-// ********************************************************************************************* //
-
-with (Domplate) {
-Firebug.FontViewerModel.Preview = domplate(
-{
- bodyTag:
- DIV({"class": "fontInfo", _repObject: "$fontObject"},
- DIV({"class": "fontInfoGroup fontInfoGeneralInfoTitle"},
- SPAN(Locale.$STR("fontviewer.General Info"))
- ),
- TABLE({cellpadding: 0, cellspacing: 0},
- TBODY({"class": "fontInfoGeneralInfoBody", "role": "list",
- "aria-label": Locale.$STR("fontviewer.General Info")})
- ),
- DIV({"class": "fontInfoGroup fontInfoMetaDataTitle",
- $collapsed: "$fontObject|noMetaData"},
- SPAN(Locale.$STR("fontviewer.Meta Data")),
- SPAN({"class": "fontInfoToggleView", onclick: "$onToggleView",
- _sourceDisplayed: false, _rowName: "MetaData"},
- Locale.$STR("fontviewer.view source")
- )
- ),
- TABLE({cellpadding: 0, cellspacing: 0},
- TBODY({"class": "fontInfoMetaDataBody", "role": "list",
- "aria-label": Locale.$STR("fontviewer.Meta Data")})
- ),
- DIV({"class": "fontInfoGroup fontInfoPreviewTitle"},
- SPAN(Locale.$STR("fontviewer.Preview")),
- SPAN({"class": "fontInfoToggleView", onclick: "$onToggleView",
- _lettersDisplayed: false, _rowName: "Preview"},
- Locale.$STR("fontviewer.view characters")
- )
- ),
- DIV({"class": "fontInfoPreview"},
- STYLE({"class": "fontInfoPreviewStyle"}),
- DIV({"class": "fontInfoPreviewSample"},
- FOR("style", "$styles",
- P({"class": "$fontObject.CSSFamilyName|getFontFaceClass",
- "style": "font-size: $style|getFontSize"},
- SPAN({"class": "fontViewerFontSize"}, "$style"),
- SPAN(Locale.$STR("fontviewer.pangram"))
- )
- )
- ),
- DIV({"class": "fontInfoPreviewCharacters"},
- FOR("charType", "$charTypes",
- P({"class": "$fontObject.CSSFamilyName|getFontFaceClass"},
- "$charType|getCharacters"
- )
- )
- )
- )
- ),
-
- propDataTag:
- FOR("prop", "$props",
- TR({"role": "listitem", _repObject: "$prop.node"},
- TD({"class": "fontInfoPropName", "role": "presentation"},
- SPAN("$prop|getPropName")
- ),
- TD({"class": "fontInfoPropValue", "role": "list", "aria-label": "$prop.name"},
- TAG("$prop|getTag", {node: "$prop.node"})
- )
- )
- ),
-
- sourceTag:
- TR({"role": "presentation"},
- TD({colspan: 2, "role": "presentation"},
- PRE({"class": "source"})
- )
- ),
-
- translatedInfoTag:
- DIV({"class": "fontInfoTranslatedInfo"},
- DIV({"class": "fontInfoLangInfo"},
- FOR("lang", "$node|getLanguages",
- A({"class": "fontInfoLangTab", $selected: "$lang.selected", role: "tab",
- onclick: "$onTranslatedLangChange"}, "$lang.name")
- )
- ),
- DIV({"class": "fontInfoTranslatedContent"},
- "$node|getTranslatedText"
- )
- ),
-
- vendorTag:
- TAG("$node|getLinkedTextTag", {node: "$node"}),
-
- licenseTag:
- DIV({"class": "fontInfoLicense"},
- TAG("$node|getLinkedTextTag", {node: "$node"}),
- TAG("$translatedInfoTag", {node: "$node"})
- ),
-
- creditsTag:
- UL({"class": "fontInfoCredits"},
- FOR("credit", "$node|getCredits",
- LI(
- TAG("$credit|getLinkedTextTag", {node: "$credit"}),
- " ",
- SPAN({"class": "fontInfoCreditsRole"}, "$credit|getRole")
- )
- )
- ),
-
- linkTag:
- A({"class": "fontInfoLink", href: "$node|getUrl", onclick: "$onOpenUrl"},
- "$node|getLinkName"),
-
- textTag:
- SPAN("$node|getText"),
-
- /**
- * Handles toggling of the font information display
- *
- * @param event: Click event
- */
- onToggleView: function(event)
- {
- var target = event.target;
- var fontInfo = Dom.getAncestorByClass(target, "fontInfo");
- var fontObject = fontInfo.repObject;
-
- switch (target.rowName)
- {
- case "MetaData":
- if (target.sourceDisplayed)
- {
- this.insertMetaDataFormatted(fontInfo, fontObject.metadata);
- target.textContent = Locale.$STR("fontviewer.view source");
- }
- else
- {
- this.insertMetaDataSource(fontInfo, fontObject.metadata);
- target.textContent = Locale.$STR("fontviewer.pretty print");
- }
- target.sourceDisplayed = !target.sourceDisplayed;
- break;
-
- case "Preview":
- var sample = fontInfo.getElementsByClassName("fontInfoPreviewSample").item(0);
- var chars = fontInfo.getElementsByClassName("fontInfoPreviewCharacters").item(0);
- if (target.lettersDisplayed)
- {
- sample.style.display = "block";
- chars.style.display = "none";
- target.textContent = Locale.$STR("fontviewer.view characters");
- }
- else
- {
- sample.style.display = "none";
- chars.style.display = "block";
- target.textContent = Locale.$STR("fontviewer.view sample");
- }
- target.lettersDisplayed = !target.lettersDisplayed;
- break;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Meta data
-
- /**
- * Checks, whether the font contains meta data
- *
- * @param fontObject: Font related information
- * @return True, if font contains meta data, otherwise false
- */
- noMetaData: function(fontObject)
- {
- return fontObject.metadata == "";
- },
-
- /**
- * Selects the corresponding Domplate template related to a given meta data property
- *
- * @param prop: Meta data property
- * @return Domplate template related to the property
- */
- getTag: function(prop)
- {
- return prop.tag ? prop.tag : Firebug.FontViewerModel.Preview.textTag;
- },
-
- /**
- * Returns the translated property name
- *
- * @param prop: Meta data property
- * @return Translated name of the property
- */
- getPropName: function(prop)
- {
- return prop.name ? prop.name : Locale.$STR("fontviewer."+prop.node.nodeName);
- },
-
- /**
- * Returns the text of a meta data property or a string
- *
- * @param value: Meta data property or string
- * @return String representing the text related to the property
- */
- getText: function(value)
- {
- if (typeof(value) == "string")
- return value;
-
- var name = value.getAttribute("id") || value.getAttribute("name");
- if (name)
- return name;
-
- return value.textContent;
- },
-
- /**
- * Opens a URL in a new browser tab
- *
- * @param event: Click event
- */
- onOpenUrl: function(event)
- {
- Win.openNewTab(event.target.getAttribute("href"));
- Events.cancelEvent(event);
- },
-
- /**
- * Returns either text or a linked text depending on a URL to be present of a
- * meta data property
- *
- * @param node: Meta data property node
- * @return Text or linked text
- */
- getLinkedTextTag: function(node)
- {
- if (this.getUrl(node))
- return Firebug.FontViewerModel.Preview.linkTag;
- else
- return Firebug.FontViewerModel.Preview.textTag;
- },
-
- /**
- * Returns the URL of a meta data property
- *
- * @param node: Meta data property node
- * @return URL of the meta data property
- */
- getUrl: function(node)
- {
- return node.getAttribute("url");
- },
-
- /**
- * Returns the name of a link related to a meta data property
- *
- * @param node: Meta data property node
- * @return Link name of the meta data property
- */
- getLinkName: function(node)
- {
- return node.getAttribute("id") || node.getAttribute("name") || node.getAttribute("url");
- },
-
- /**
- * Returns an array of font credits
- *
- * @param node: Meta data property node
- * @return Credits
- */
- getCredits: function(node)
- {
- return Array.prototype.slice.call(node.children);
- },
-
- /**
- * Returns the role of a contributor of the font
- *
- * @param node: Meta data property node
- * @return Contributor role
- */
- getRole: function(node)
- {
- var role = node.getAttribute("role");
- return role ? "("+role+")" : "";
- },
-
- /**
- * Returns the available languages of a translated meta data property text
- *
- * @param node: Meta data property node
- * @return Array of languages
- */
- getLanguages: function(node)
- {
- var texts = Array.prototype.slice.call(node.getElementsByTagName("text"));
- var langs = [];
- var defaultLang = this.getDefaultLang(node);
- texts.forEach(function(e, i, a) {
- var lang = e.getAttribute("lang");
- langs.push({name: lang, selected: lang == defaultLang});
- });
-
- return langs;
- },
-
- /**
- * Returns the default language of a meta data property
- *
- * @param node: Meta data property node
- * @return Language
- */
- getDefaultLang: function(node)
- {
- var localeDomain = "general.useragent";
- var localeName = "locale";
- var localeValue = Options.getPref(localeDomain, localeName);
-
- if (node.querySelector("text[lang="+localeValue+"]"))
- return localeValue;
-
- if (node.querySelector("text[lang=en]"))
- return "en";
-
- if (node.firstElementChild)
- return node.firstElementChild.getAttribute("lang");
-
- return null;
- },
-
- /**
- * Returns the translated text of meta data property
- *
- * @param node: Meta data property node
- * @param lang: Language of the text
- * @return Translated text
- */
- getTranslatedText: function(node, lang)
- {
- if (!lang)
- lang = this.getDefaultLang(node);
-
- if (lang)
- {
- var element = node.querySelector("text[lang="+lang+"]");
- if (element)
- return element.textContent;
- }
-
- return "";
- },
-
- /**
- * Displays the XML source of the meta data
- *
- * @param fontInfo: Font related information
- * @param source: XML source of the meta data
- */
- insertMetaDataSource: function(fontInfo, source)
- {
- var tbody = fontInfo.getElementsByClassName("fontInfoMetaDataBody").item(0);
- var node = this.sourceTag.replace({}, tbody);
- var sourceNode = node.getElementsByClassName("source").item(0);
- Str.insertWrappedText(source, sourceNode);
- },
-
- /**
- * Displays the meta data information formatted
- *
- * @param fontInfo: Font related information
- * @param source: XML source of the meta data
- */
- insertMetaDataFormatted: function(fontInfo, source)
- {
- var tbody = fontInfo.getElementsByClassName("fontInfoMetaDataBody").item(0);
- var parser = Xpcom.CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
- var doc = parser.parseFromString(source, "text/xml");
- var root = doc.documentElement;
-
- if (FBTrace.DBG_FONTS)
- FBTrace.sysout("fontviewer.insertMetaDataFormatted; XML", doc);
-
- Dom.clearNode(tbody);
-
- var props = [];
- var propValueTemplates = {
- vendor: Firebug.FontViewerModel.Preview.vendorTag,
- credits: Firebug.FontViewerModel.Preview.creditsTag,
- description: Firebug.FontViewerModel.Preview.translatedInfoTag,
- copyright: Firebug.FontViewerModel.Preview.translatedInfoTag,
- trademark: Firebug.FontViewerModel.Preview.translatedInfoTag,
- license: Firebug.FontViewerModel.Preview.licenseTag
- };
-
- for (var i=0; i<root.children.length; i++)
- {
- var child = root.children[i];
- props.push({tag: propValueTemplates[child.nodeName], node: child});
- }
-
- if (FBTrace.DBG_FONTS)
- FBTrace.sysout("fontviewer.insertMetaDataFormatted; props", props);
-
- tbody.repObject = root;
- Firebug.FontViewerModel.Preview.propDataTag.insertRows({props: props}, tbody);
- },
-
- /**
- * Handles text language changes
- *
- * @param event: Click event
- */
- onTranslatedLangChange: function(event)
- {
- var target = event.target;
- var translatedInfo = Dom.getAncestorByClass(target, "fontInfoTranslatedInfo");
- var selected = translatedInfo.getElementsByClassName("selected").item(0);
- Css.removeClass(selected, "selected");
- Css.setClass(target, "selected");
-
- var content = translatedInfo.getElementsByClassName("fontInfoTranslatedContent").item(0);
- content.textContent = this.getTranslatedText(Firebug.getRepObject(target),
- target.textContent);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Preview
-
- /**
- * Returns the CSS font-face class name
- *
- * @param cssFamilyName: CSS name of the font family
- * @return Name of the font-face class
- */
- getFontFaceClass: function(cssFamilyName)
- {
- return "fontFacePreview"+cssFamilyName.replace(/[^a-z0-9_]/ig, "");
- },
-
- /**
- * Returns the font size CSS
- *
- * @param size: Font size
- * @return Font size CSS
- */
- getFontSize: function(size)
- {
- return size+"pt";
- },
-
- /**
- * Returns the characters used for the font preview
- *
- * @param charType: Type of characters to return
- * @return Preview characters
- */
- getCharacters: function(charType)
- {
- switch (charType)
- {
- case "lowercase":
- return "abcdefghijklmnopqrstuvwxyz";
-
- case "uppercase":
- return "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-
- case "numbersAndSpecialChars":
- return "0123456789.:,;(\"*!?')";
- }
- },
-
- /**
- * Returns the CSS for the @font-face CSS
- *
- * @param fontObject: Font related information
- * @return @font-face CSS
- */
- getFontFaceCss: function(fontObject)
- {
- var fontFaceClass = this.getFontFaceClass(fontObject.CSSFamilyName);
- return fontObject.rule.cssText.replace(/url\(.*?\)/g, "url("+fontObject.URI+")")+
- " ."+fontFaceClass+" {font-family: \""+fontObject.CSSFamilyName+"\";}";
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- /**
- * Displays general information about the font
- *
- * @param body: Node containing the font information display
- * @param fontObject: Font related information
- */
- insertGeneralInfo: function(body, fontObject)
- {
-
- var fontInfo = body.getElementsByClassName("fontInfo").item(0);
- var tbody = fontInfo.getElementsByClassName("fontInfoGeneralInfoBody").item(0);
-
- Dom.clearNode(tbody);
-
- if (fontObject)
- {
- var props =
- [
- {name: Locale.$STR("fontviewer.Name"), node: fontObject.name},
- {name: Locale.$STR("fontviewer.CSS Family Name"), node: fontObject.CSSFamilyName},
- {name: Locale.$STR("fontviewer.Format"), node: fontObject.format}
- ];
- Firebug.FontViewerModel.Preview.propDataTag.insertRows({props: props}, tbody);
- }
- },
-
- /**
- * Renders the font display
- *
- * @param body: Node containing the font information display
- * @param file: Font file to be displayed
- * @param context: Related context
- */
- render: function(body, file, context)
- {
- var fontObject = file.fontObject;
- if (!fontObject)
- return;
-
- var styles = [10, 14, 18];
- var charTypes = ["lowercase", "uppercase", "numbersAndSpecialChars"];
-
- var node = this.bodyTag.replace({fontObject: fontObject, styles: styles,
- charTypes: charTypes}, body, this);
-
- var styleNode = node.getElementsByClassName("fontInfoPreviewStyle").item(0);
- styleNode.textContent = this.getFontFaceCss(fontObject);
-
- this.insertGeneralInfo(body, file.fontObject);
-
- if (fontObject.metadata != "")
- this.insertMetaDataFormatted(body, fontObject.metadata);
- }
-});
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.FontViewerModel);
-
-return Firebug.FontViewerModel;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/xpcom",
+ "firebug/lib/events",
+ "firebug/chrome/window",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/string",
+ "firebug/lib/fonts",
+ "firebug/lib/url",
+ "firebug/lib/http",
+ "firebug/net/netUtils",
+ "firebug/lib/options"
+],
+function(Obj, Firebug, Domplate, Locale, Xpcom, Events, Win, Css, Dom, Str, Fonts, Url, Http,
+ NetUtils, Options) {
+
+// ********************************************************************************************* //
+
+// List of font content types
+var contentTypes =
+[
+ "application/x-woff",
+ "application/x-font-woff",
+ "application/x-ttf",
+ "application/x-font-ttf",
+ "font/ttf",
+ "font/woff",
+ "application/x-otf",
+ "application/x-font-otf",
+ "application/font-woff"
+];
+
+// ********************************************************************************************* //
+// Model implementation
+
+Firebug.FontViewerModel = Obj.extend(Firebug.Module,
+{
+ dispatchName: "fontViewer",
+ contentTypes: contentTypes,
+
+ initialize: function()
+ {
+ Firebug.TabCacheModel.addListener(this);
+ Firebug.NetMonitor.NetInfoBody.addListener(this);
+ Firebug.registerUIListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.TabCacheModel.removeListener(this);
+ Firebug.NetMonitor.NetInfoBody.removeListener(this);
+ Firebug.unregisterUIListener(this);
+ },
+
+ /**
+ * Checks whether the given file name and content are a valid font file
+ *
+ * @param contentType: MIME type of the file
+ * @param url: URL of the file
+ * @param data: File contents
+ * @return True, if the given data outlines a font file, otherwise false
+ */
+ isFont: function(contentType, url, data)
+ {
+ if (!contentType)
+ return false;
+
+ if (NetUtils.matchesContentType(contentType, contentTypes))
+ {
+ if (FBTrace.DBG_FONTS)
+ {
+ FBTrace.sysout("fontviewer.isFont; content type: "+contentType,
+ {url: url, data: data});
+ }
+
+ return true;
+ }
+
+ // Workaround for font responses without proper content type
+ // Let's consider all responses starting with "wOFF" as font. In the worst
+ // case there will be an exception when parsing. This means that no-font
+ // responses (and post data) (with "wOFF") can be parsed unnecessarily,
+ // which represents a little overhead, but this happens only if the request
+ // is actually expanded by the user in the UI (Net & Console panel).
+ var extension = Url.getFileExtension(url);
+ var validExtension = /woff|otf|ttf/.exec(extension);
+ if (validExtension && (!data || Str.hasPrefix(data, "wOFF") || Str.hasPrefix(data, "OTTO")))
+ {
+ if (FBTrace.DBG_FONTS)
+ {
+ FBTrace.sysout("fontviewer.isFont; Font without proper content type",
+ {url: url, data: data});
+ }
+
+ return true;
+ }
+
+ contentType = contentType.split(";")[0];
+ contentType = Str.trim(contentType);
+ return contentTypes[contentType];
+ },
+
+ /**
+ * Parses the file and returns information about the font
+ *
+ * @param file: File to parse
+ * @return Font related information
+ */
+ parseFont: function(file)
+ {
+ return Fonts.getFontInfo(Firebug.currentContext, null, file.href);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // TabCacheModel listener
+
+ shouldCacheRequest: function(request)
+ {
+ if (this.isFont(request.contentType, request.name))
+ return true;
+
+ return false;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // NetInfoBody listener
+
+ updateResponse: function(netInfoBox, file, context)
+ {
+ // Let listeners parse the font
+ Events.dispatch(this.fbListeners, "onParseFont", [file]);
+
+ // The font is still not there, try to parse most common cases
+ if (!file.fontObject)
+ {
+ if (this.isFont(Http.safeGetContentType(file.request), file.href, file.responseText))
+ file.fontObject = this.parseFont(file);
+ }
+
+ if (file.fontObject)
+ {
+ var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0);
+ this.Preview.render(responseTextBox, file, context);
+ netInfoBox.responsePresented = true;
+
+ if (FBTrace.DBG_FONTS)
+ FBTrace.sysout("fontviewer.updateResponse", file);
+ }
+ }
+});
+
+// ********************************************************************************************* //
+
+with (Domplate) {
+Firebug.FontViewerModel.Preview = domplate(
+{
+ bodyTag:
+ DIV({"class": "fontInfo", _repObject: "$fontObject"},
+ DIV({"class": "fontInfoGroup fontInfoGeneralInfoTitle"},
+ SPAN(Locale.$STR("fontviewer.General Info"))
+ ),
+ TABLE({cellpadding: 0, cellspacing: 0},
+ TBODY({"class": "fontInfoGeneralInfoBody", "role": "list",
+ "aria-label": Locale.$STR("fontviewer.General Info")})
+ ),
+ DIV({"class": "fontInfoGroup fontInfoMetaDataTitle",
+ $collapsed: "$fontObject|noMetaData"},
+ SPAN(Locale.$STR("fontviewer.Meta Data")),
+ SPAN({"class": "fontInfoToggleView", onclick: "$onToggleView",
+ _sourceDisplayed: false, _rowName: "MetaData"},
+ Locale.$STR("fontviewer.view source")
+ )
+ ),
+ TABLE({cellpadding: 0, cellspacing: 0},
+ TBODY({"class": "fontInfoMetaDataBody", "role": "list",
+ "aria-label": Locale.$STR("fontviewer.Meta Data")})
+ ),
+ DIV({"class": "fontInfoGroup fontInfoPreviewTitle"},
+ SPAN(Locale.$STR("fontviewer.Preview")),
+ SPAN({"class": "fontInfoToggleView", onclick: "$onToggleView",
+ _lettersDisplayed: false, _rowName: "Preview"},
+ Locale.$STR("fontviewer.view characters")
+ )
+ ),
+ DIV({"class": "fontInfoPreview"},
+ STYLE({"class": "fontInfoPreviewStyle"}),
+ DIV({"class": "fontInfoPreviewSample"},
+ FOR("style", "$styles",
+ P({"class": "$fontObject.CSSFamilyName|getFontFaceClass",
+ "style": "font-size: $style|getFontSize"},
+ SPAN({"class": "fontViewerFontSize"}, "$style"),
+ SPAN(Locale.$STR("fontviewer.pangram"))
+ )
+ )
+ ),
+ DIV({"class": "fontInfoPreviewCharacters"},
+ FOR("charType", "$charTypes",
+ P({"class": "$fontObject.CSSFamilyName|getFontFaceClass"},
+ "$charType|getCharacters"
+ )
+ )
+ )
+ )
+ ),
+
+ propDataTag:
+ FOR("prop", "$props",
+ TR({"role": "listitem", _repObject: "$prop.node"},
+ TD({"class": "fontInfoPropName", "role": "presentation"},
+ SPAN("$prop|getPropName")
+ ),
+ TD({"class": "fontInfoPropValue", "role": "list", "aria-label": "$prop.name"},
+ TAG("$prop|getTag", {node: "$prop.node"})
+ )
+ )
+ ),
+
+ sourceTag:
+ TR({"role": "presentation"},
+ TD({colspan: 2, "role": "presentation"},
+ PRE({"class": "source"})
+ )
+ ),
+
+ translatedInfoTag:
+ DIV({"class": "fontInfoTranslatedInfo"},
+ DIV({"class": "fontInfoLangInfo"},
+ FOR("lang", "$node|getLanguages",
+ A({"class": "fontInfoLangTab", $selected: "$lang.selected", role: "tab",
+ onclick: "$onTranslatedLangChange"}, "$lang.name")
+ )
+ ),
+ DIV({"class": "fontInfoTranslatedContent"},
+ "$node|getTranslatedText"
+ )
+ ),
+
+ vendorTag:
+ TAG("$node|getLinkedTextTag", {node: "$node"}),
+
+ licenseTag:
+ DIV({"class": "fontInfoLicense"},
+ TAG("$node|getLinkedTextTag", {node: "$node"}),
+ TAG("$translatedInfoTag", {node: "$node"})
+ ),
+
+ creditsTag:
+ UL({"class": "fontInfoCredits"},
+ FOR("credit", "$node|getCredits",
+ LI(
+ TAG("$credit|getLinkedTextTag", {node: "$credit"}),
+ " ",
+ SPAN({"class": "fontInfoCreditsRole"}, "$credit|getRole")
+ )
+ )
+ ),
+
+ linkTag:
+ A({"class": "fontInfoLink", href: "$node|getUrl", onclick: "$onOpenUrl"},
+ "$node|getLinkName"),
+
+ textTag:
+ SPAN("$node|getText"),
+
+ /**
+ * Handles toggling of the font information display
+ *
+ * @param event: Click event
+ */
+ onToggleView: function(event)
+ {
+ var target = event.target;
+ var fontInfo = Dom.getAncestorByClass(target, "fontInfo");
+ var fontObject = fontInfo.repObject;
+
+ switch (target.rowName)
+ {
+ case "MetaData":
+ if (target.sourceDisplayed)
+ {
+ this.insertMetaDataFormatted(fontInfo, fontObject.metadata);
+ target.textContent = Locale.$STR("fontviewer.view source");
+ }
+ else
+ {
+ this.insertMetaDataSource(fontInfo, fontObject.metadata);
+ target.textContent = Locale.$STR("fontviewer.pretty print");
+ }
+ target.sourceDisplayed = !target.sourceDisplayed;
+ break;
+
+ case "Preview":
+ var sample = fontInfo.getElementsByClassName("fontInfoPreviewSample").item(0);
+ var chars = fontInfo.getElementsByClassName("fontInfoPreviewCharacters").item(0);
+ if (target.lettersDisplayed)
+ {
+ sample.style.display = "block";
+ chars.style.display = "none";
+ target.textContent = Locale.$STR("fontviewer.view characters");
+ }
+ else
+ {
+ sample.style.display = "none";
+ chars.style.display = "block";
+ target.textContent = Locale.$STR("fontviewer.view sample");
+ }
+ target.lettersDisplayed = !target.lettersDisplayed;
+ break;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Meta data
+
+ /**
+ * Checks, whether the font contains meta data
+ *
+ * @param fontObject: Font related information
+ * @return True, if font contains meta data, otherwise false
+ */
+ noMetaData: function(fontObject)
+ {
+ return fontObject.metadata == "";
+ },
+
+ /**
+ * Selects the corresponding Domplate template related to a given meta data property
+ *
+ * @param prop: Meta data property
+ * @return Domplate template related to the property
+ */
+ getTag: function(prop)
+ {
+ return prop.tag ? prop.tag : Firebug.FontViewerModel.Preview.textTag;
+ },
+
+ /**
+ * Returns the translated property name
+ *
+ * @param prop: Meta data property
+ * @return Translated name of the property
+ */
+ getPropName: function(prop)
+ {
+ return prop.name ? prop.name : Locale.$STR("fontviewer."+prop.node.nodeName);
+ },
+
+ /**
+ * Returns the text of a meta data property or a string
+ *
+ * @param value: Meta data property or string
+ * @return String representing the text related to the property
+ */
+ getText: function(value)
+ {
+ if (typeof(value) == "string")
+ return value;
+
+ var name = value.getAttribute("id") || value.getAttribute("name");
+ if (name)
+ return name;
+
+ return value.textContent;
+ },
+
+ /**
+ * Opens a URL in a new browser tab
+ *
+ * @param event: Click event
+ */
+ onOpenUrl: function(event)
+ {
+ Win.openNewTab(event.target.getAttribute("href"));
+ Events.cancelEvent(event);
+ },
+
+ /**
+ * Returns either text or a linked text depending on a URL to be present of a
+ * meta data property
+ *
+ * @param node: Meta data property node
+ * @return Text or linked text
+ */
+ getLinkedTextTag: function(node)
+ {
+ if (this.getUrl(node))
+ return Firebug.FontViewerModel.Preview.linkTag;
+ else
+ return Firebug.FontViewerModel.Preview.textTag;
+ },
+
+ /**
+ * Returns the URL of a meta data property
+ *
+ * @param node: Meta data property node
+ * @return URL of the meta data property
+ */
+ getUrl: function(node)
+ {
+ return node.getAttribute("url");
+ },
+
+ /**
+ * Returns the name of a link related to a meta data property
+ *
+ * @param node: Meta data property node
+ * @return Link name of the meta data property
+ */
+ getLinkName: function(node)
+ {
+ return node.getAttribute("id") || node.getAttribute("name") || node.getAttribute("url");
+ },
+
+ /**
+ * Returns an array of font credits
+ *
+ * @param node: Meta data property node
+ * @return Credits
+ */
+ getCredits: function(node)
+ {
+ return Array.prototype.slice.call(node.children);
+ },
+
+ /**
+ * Returns the role of a contributor of the font
+ *
+ * @param node: Meta data property node
+ * @return Contributor role
+ */
+ getRole: function(node)
+ {
+ var role = node.getAttribute("role");
+ return role ? "("+role+")" : "";
+ },
+
+ /**
+ * Returns the available languages of a translated meta data property text
+ *
+ * @param node: Meta data property node
+ * @return Array of languages
+ */
+ getLanguages: function(node)
+ {
+ var texts = Array.prototype.slice.call(node.getElementsByTagName("text"));
+ var langs = [];
+ var defaultLang = this.getDefaultLang(node);
+ texts.forEach(function(e, i, a) {
+ var lang = e.getAttribute("lang");
+ langs.push({name: lang, selected: lang == defaultLang});
+ });
+
+ return langs;
+ },
+
+ /**
+ * Returns the default language of a meta data property
+ *
+ * @param node: Meta data property node
+ * @return Language
+ */
+ getDefaultLang: function(node)
+ {
+ var localeDomain = "general.useragent";
+ var localeName = "locale";
+ var localeValue = Options.getPref(localeDomain, localeName);
+
+ if (node.querySelector("text[lang="+localeValue+"]"))
+ return localeValue;
+
+ if (node.querySelector("text[lang=en]"))
+ return "en";
+
+ if (node.firstElementChild)
+ return node.firstElementChild.getAttribute("lang");
+
+ return null;
+ },
+
+ /**
+ * Returns the translated text of meta data property
+ *
+ * @param node: Meta data property node
+ * @param lang: Language of the text
+ * @return Translated text
+ */
+ getTranslatedText: function(node, lang)
+ {
+ if (!lang)
+ lang = this.getDefaultLang(node);
+
+ if (lang)
+ {
+ var element = node.querySelector("text[lang="+lang+"]");
+ if (element)
+ return element.textContent;
+ }
+
+ return "";
+ },
+
+ /**
+ * Displays the XML source of the meta data
+ *
+ * @param fontInfo: Font related information
+ * @param source: XML source of the meta data
+ */
+ insertMetaDataSource: function(fontInfo, source)
+ {
+ var tbody = fontInfo.getElementsByClassName("fontInfoMetaDataBody").item(0);
+ var node = this.sourceTag.replace({}, tbody);
+ var sourceNode = node.getElementsByClassName("source").item(0);
+ Str.insertWrappedText(source, sourceNode);
+ },
+
+ /**
+ * Displays the meta data information formatted
+ *
+ * @param fontInfo: Font related information
+ * @param source: XML source of the meta data
+ */
+ insertMetaDataFormatted: function(fontInfo, source)
+ {
+ var tbody = fontInfo.getElementsByClassName("fontInfoMetaDataBody").item(0);
+ var parser = Xpcom.CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
+ var doc = parser.parseFromString(source, "text/xml");
+ var root = doc.documentElement;
+
+ if (FBTrace.DBG_FONTS)
+ FBTrace.sysout("fontviewer.insertMetaDataFormatted; XML", doc);
+
+ Dom.clearNode(tbody);
+
+ var props = [];
+ var propValueTemplates = {
+ vendor: Firebug.FontViewerModel.Preview.vendorTag,
+ credits: Firebug.FontViewerModel.Preview.creditsTag,
+ description: Firebug.FontViewerModel.Preview.translatedInfoTag,
+ copyright: Firebug.FontViewerModel.Preview.translatedInfoTag,
+ trademark: Firebug.FontViewerModel.Preview.translatedInfoTag,
+ license: Firebug.FontViewerModel.Preview.licenseTag
+ };
+
+ for (var i=0; i<root.children.length; i++)
+ {
+ var child = root.children[i];
+ props.push({tag: propValueTemplates[child.nodeName], node: child});
+ }
+
+ if (FBTrace.DBG_FONTS)
+ FBTrace.sysout("fontviewer.insertMetaDataFormatted; props", props);
+
+ tbody.repObject = root;
+ Firebug.FontViewerModel.Preview.propDataTag.insertRows({props: props}, tbody);
+ },
+
+ /**
+ * Handles text language changes
+ *
+ * @param event: Click event
+ */
+ onTranslatedLangChange: function(event)
+ {
+ var target = event.target;
+ var translatedInfo = Dom.getAncestorByClass(target, "fontInfoTranslatedInfo");
+ var selected = translatedInfo.getElementsByClassName("selected").item(0);
+ Css.removeClass(selected, "selected");
+ Css.setClass(target, "selected");
+
+ var content = translatedInfo.getElementsByClassName("fontInfoTranslatedContent").item(0);
+ content.textContent = this.getTranslatedText(Firebug.getRepObject(target),
+ target.textContent);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Preview
+
+ /**
+ * Returns the CSS font-face class name
+ *
+ * @param cssFamilyName: CSS name of the font family
+ * @return Name of the font-face class
+ */
+ getFontFaceClass: function(cssFamilyName)
+ {
+ return "fontFacePreview"+cssFamilyName.replace(/[^a-z0-9_]/ig, "");
+ },
+
+ /**
+ * Returns the font size CSS
+ *
+ * @param size: Font size
+ * @return Font size CSS
+ */
+ getFontSize: function(size)
+ {
+ return size+"pt";
+ },
+
+ /**
+ * Returns the characters used for the font preview
+ *
+ * @param charType: Type of characters to return
+ * @return Preview characters
+ */
+ getCharacters: function(charType)
+ {
+ switch (charType)
+ {
+ case "lowercase":
+ return "abcdefghijklmnopqrstuvwxyz";
+
+ case "uppercase":
+ return "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+ case "numbersAndSpecialChars":
+ return "0123456789.:,;(\"*!?')";
+ }
+ },
+
+ /**
+ * Returns the CSS for the @font-face CSS
+ *
+ * @param fontObject: Font related information
+ * @return @font-face CSS
+ */
+ getFontFaceCss: function(fontObject)
+ {
+ var fontFaceClass = this.getFontFaceClass(fontObject.CSSFamilyName);
+ return fontObject.rule.cssText.replace(/url\(.*?\)/g, "url("+fontObject.URI+")")+
+ " ."+fontFaceClass+" {font-family: \""+fontObject.CSSFamilyName+"\";}";
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ /**
+ * Displays general information about the font
+ *
+ * @param body: Node containing the font information display
+ * @param fontObject: Font related information
+ */
+ insertGeneralInfo: function(body, fontObject)
+ {
+
+ var fontInfo = body.getElementsByClassName("fontInfo").item(0);
+ var tbody = fontInfo.getElementsByClassName("fontInfoGeneralInfoBody").item(0);
+
+ Dom.clearNode(tbody);
+
+ if (fontObject)
+ {
+ var props =
+ [
+ {name: Locale.$STR("fontviewer.Name"), node: fontObject.name},
+ {name: Locale.$STR("fontviewer.CSS Family Name"), node: fontObject.CSSFamilyName},
+ {name: Locale.$STR("fontviewer.Format"), node: fontObject.format}
+ ];
+ Firebug.FontViewerModel.Preview.propDataTag.insertRows({props: props}, tbody);
+ }
+ },
+
+ /**
+ * Renders the font display
+ *
+ * @param body: Node containing the font information display
+ * @param file: Font file to be displayed
+ * @param context: Related context
+ */
+ render: function(body, file, context)
+ {
+ var fontObject = file.fontObject;
+ if (!fontObject)
+ return;
+
+ var styles = [10, 14, 18];
+ var charTypes = ["lowercase", "uppercase", "numbersAndSpecialChars"];
+
+ var node = this.bodyTag.replace({fontObject: fontObject, styles: styles,
+ charTypes: charTypes}, body, this);
+
+ var styleNode = node.getElementsByClassName("fontInfoPreviewStyle").item(0);
+ styleNode.textContent = this.getFontFaceCss(fontObject);
+
+ this.insertGeneralInfo(body, file.fontObject);
+
+ if (fontObject.metadata != "")
+ this.insertMetaDataFormatted(body, fontObject.metadata);
+ }
+});
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.FontViewerModel);
+
+return Firebug.FontViewerModel;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/net/httpActivityObserver.js b/content/firebug/net/httpActivityObserver.js
index 4882934..59637cf 100644
--- a/content/firebug/net/httpActivityObserver.js
+++ b/content/firebug/net/httpActivityObserver.js
@@ -1,346 +1,346 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/xpcom",
- "firebug/lib/object",
- "firebug/lib/trace",
- "firebug/lib/http",
- "firebug/chrome/window",
- "firebug/net/netProgress",
- "firebug/net/netUtils"
-],
-function(Xpcom, Obj, FBTrace, Http, Win, NetProgress, NetUtils) {
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-var Cr = Components.results;
-
-var nsIHttpActivityObserver = Ci.nsIHttpActivityObserver;
-var nsISocketTransport = Ci.nsISocketTransport;
-
-var activeRequests = [];
-
-// ********************************************************************************************* //
-// Callbacks
-
-var startFile = NetProgress.prototype.startFile;
-var requestedHeaderFile = NetProgress.prototype.requestedHeaderFile;
-var respondedHeaderFile = NetProgress.prototype.respondedHeaderFile;
-var requestedFile = NetProgress.prototype.requestedFile;
-var respondedFile = NetProgress.prototype.respondedFile;
-var bodySentFile = NetProgress.prototype.bodySentFile;
-var responseStartedFile = NetProgress.prototype.responseStartedFile;
-var respondedCacheFile = NetProgress.prototype.respondedCacheFile;
-var connectingFile = NetProgress.prototype.connectingFile;
-var connectedFile = NetProgress.prototype.connectedFile;
-var waitingForFile = NetProgress.prototype.waitingForFile;
-var sendingFile = NetProgress.prototype.sendingFile;
-var receivingFile = NetProgress.prototype.receivingFile;
-var responseCompletedFile = NetProgress.prototype.responseCompletedFile;
-var closedFile = NetProgress.prototype.closedFile;
-var resolvingFile = NetProgress.prototype.resolvingFile;
-var resolvedFile = NetProgress.prototype.resolvedFile;
-var windowPaint = NetProgress.prototype.windowPaint;
-var timeStamp = NetProgress.prototype.timeStamp;
-var windowLoad = NetProgress.prototype.windowLoad;
-var contentLoad = NetProgress.prototype.contentLoad;
-
-// ********************************************************************************************* //
-// Activity Observer
-
-var NetHttpActivityObserver =
-{
- registered: false,
-
- registerObserver: function()
- {
- if (!Ci.nsIHttpActivityDistributor)
- return;
-
- if (this.registered)
- return;
-
- var distributor = this.getActivityDistributor();
- if (!distributor)
- return;
-
- distributor.addObserver(this);
- this.registered = true;
-
- if (FBTrace.DBG_ACTIVITYOBSERVER || FBTrace.DBG_OBSERVERS)
- {
- // import fbObserverService
- Components.utils.import("resource://firebug/observer-service.js");
- this.trackId = fbObserverService.track(Components.stack);
- FBTrace.sysout("activityObserver.registerObserver;"+this.trackId+" this.registered: "+this.registered);
- }
-
- },
-
- unregisterObserver: function()
- {
- if (!Ci.nsIHttpActivityDistributor)
- return;
-
- if (!this.registered)
- return;
-
- var distributor = this.getActivityDistributor();
- if (!distributor)
- return;
-
- distributor.removeObserver(this);
- this.registered = false;
-
- if (FBTrace.DBG_ACTIVITYOBSERVER || FBTrace.DBG_OBSERVERS)
- {
- // import fbObserverService
- Components.utils.import("resource://firebug/observer-service.js");
- fbObserverService.untrack(this.trackId);
- FBTrace.sysout("activityObserver.unregisterObserver;"+this.trackId+" this.registered: "+this.registered);
- }
-
- },
-
- getActivityDistributor: function()
- {
- if (!this.activityDistributor)
- {
- try
- {
- var hadClass = Cc["@mozilla.org/network/http-activity-distributor;1"];
- if (!hadClass)
- return null;
-
- this.activityDistributor = hadClass.getService(Ci.nsIHttpActivityDistributor);
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.NetHttpActivityObserver; Activity Observer Registered");
- }
- catch (err)
- {
- if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS)
- FBTrace.sysout("net.NetHttpActivityObserver; Activity Observer EXCEPTION", err);
- }
- }
- return this.activityDistributor;
- },
-
- /* nsIActivityObserver */
- observeActivity: function(httpChannel, activityType, activitySubtype, timestamp,
- extraSizeData, extraStringData)
- {
- try
- {
- if (httpChannel instanceof Ci.nsIHttpChannel)
- this.observeRequest(httpChannel, activityType, activitySubtype, timestamp,
- extraSizeData, extraStringData);
- }
- catch (exc)
- {
- if ( (typeof(FBTrace) !== undefined) && FBTrace && FBTrace.DBG_ERRORS) // then we are in some sane scope
- FBTrace.sysout("net.observeActivity: EXCEPTION "+exc, exc);
- }
- },
-
- observeRequest: function(httpChannel, activityType, activitySubtype, timestamp,
- extraSizeData, extraStringData)
- {
- var win = Http.getWindowForRequest(httpChannel);
- if (!win)
- {
- var index = activeRequests.indexOf(httpChannel);
- if (index == -1)
- return;
-
- if (!(win = activeRequests[index+1]))
- return;
- }
-
- var context = Firebug.connection.getContextByWindow(win);
- var tabId = Win.getWindowProxyIdForWindow(win);
- if (!(tabId && win))
- return;
-
- var networkContext = Firebug.NetMonitor.contexts[tabId];
- if (!networkContext)
- networkContext = context ? context.netProgress : null;
-
- if (!networkContext)
- return;
-
- var time = new Date();
- time.setTime(timestamp/1000);
-
- if (FBTrace.DBG_ACTIVITYOBSERVER)
- {
- FBTrace.sysout("activityObserver.observeActivity; " +
- NetUtils.getTimeLabel(time) + ", " +
- Http.safeGetRequestName(httpChannel) + ", " +
- getActivityTypeDescription(activityType) + ", " +
- getActivitySubtypeDescription(activitySubtype) + ", " +
- extraSizeData,
- extraStringData);
- }
-
- time = time.getTime();
-
- if (activityType == nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION)
- {
- if (activitySubtype == nsIHttpActivityObserver.ACTIVITY_SUBTYPE_REQUEST_HEADER)
- {
- activeRequests.push(httpChannel);
- activeRequests.push(win);
-
- var isXHR = Http.isXHR(httpChannel);
- networkContext.post(requestedHeaderFile, [httpChannel, time, win, isXHR, extraStringData]);
- }
- else if (activitySubtype == nsIHttpActivityObserver.ACTIVITY_SUBTYPE_TRANSACTION_CLOSE)
- {
- var index = activeRequests.indexOf(httpChannel);
- activeRequests.splice(index, 2);
-
- networkContext.post(closedFile, [httpChannel, time]);
- }
- else if (activitySubtype == nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_HEADER)
- networkContext.post(respondedHeaderFile, [httpChannel, time, extraStringData]);
- else if (activitySubtype == nsIHttpActivityObserver.ACTIVITY_SUBTYPE_REQUEST_BODY_SENT)
- networkContext.post(bodySentFile, [httpChannel, time]);
- else if (activitySubtype == nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_START)
- networkContext.post(responseStartedFile, [httpChannel, time]);
- else if (activitySubtype == nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_COMPLETE)
- networkContext.post(responseCompletedFile, [httpChannel, time, extraSizeData]);
- }
- else if (activityType == nsIHttpActivityObserver.ACTIVITY_TYPE_SOCKET_TRANSPORT)
- {
- if (activitySubtype == nsISocketTransport.STATUS_RESOLVING)
- networkContext.post(resolvingFile, [httpChannel, time]);
- //else if (activitySubtype == nsISocketTransport.STATUS_RESOLVED)
- // networkContext.post(resolvedFile, [httpChannel, time]);
- else if (activitySubtype == nsISocketTransport.STATUS_CONNECTING_TO)
- networkContext.post(connectingFile, [httpChannel, time]);
- else if (activitySubtype == nsISocketTransport.STATUS_CONNECTED_TO)
- networkContext.post(connectedFile, [httpChannel, time]);
- else if (activitySubtype == nsISocketTransport.STATUS_SENDING_TO)
- networkContext.post(sendingFile, [httpChannel, time, extraSizeData]);
- else if (activitySubtype == nsISocketTransport.STATUS_WAITING_FOR)
- networkContext.post(waitingForFile, [httpChannel, time]);
- else if (activitySubtype == nsISocketTransport.STATUS_RECEIVING_FROM)
- networkContext.post(receivingFile, [httpChannel, time, extraSizeData]);
- }
- },
-
- /* nsISupports */
- QueryInterface: function(iid)
- {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIActivityObserver)) {
- return this;
- }
-
- throw Cr.NS_ERROR_NO_INTERFACE;
- }
-};
-
-// ********************************************************************************************* //
-// Activity Observer Tracing Support
-
-function getActivityTypeDescription(a)
-{
- switch (a)
- {
- case nsIHttpActivityObserver.ACTIVITY_TYPE_SOCKET_TRANSPORT:
- return "ACTIVITY_TYPE_SOCKET_TRANSPORT";
- case nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION:
- return "ACTIVITY_TYPE_HTTP_TRANSACTION";
- default:
- return a;
- }
-}
-
-function getActivitySubtypeDescription(a)
-{
- switch (a)
- {
- case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_REQUEST_HEADER:
- return "ACTIVITY_SUBTYPE_REQUEST_HEADER";
- case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_REQUEST_BODY_SENT:
- return "ACTIVITY_SUBTYPE_REQUEST_BODY_SENT";
- case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_START:
- return "ACTIVITY_SUBTYPE_RESPONSE_START";
- case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_HEADER:
- return "ACTIVITY_SUBTYPE_RESPONSE_HEADER";
- case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_COMPLETE:
- return "ACTIVITY_SUBTYPE_RESPONSE_COMPLETE";
- case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_TRANSACTION_CLOSE:
- return "ACTIVITY_SUBTYPE_TRANSACTION_CLOSE";
-
- case nsISocketTransport.STATUS_RESOLVING:
- return "STATUS_RESOLVING";
- case nsISocketTransport.STATUS_RESOLVED:
- return "STATUS_RESOLVED";
- case nsISocketTransport.STATUS_CONNECTING_TO:
- return "STATUS_CONNECTING_TO";
- case nsISocketTransport.STATUS_CONNECTED_TO:
- return "STATUS_CONNECTED_TO";
- case nsISocketTransport.STATUS_SENDING_TO:
- return "STATUS_SENDING_TO";
- case nsISocketTransport.STATUS_WAITING_FOR:
- return "STATUS_WAITING_FOR";
- case nsISocketTransport.STATUS_RECEIVING_FROM:
- return "STATUS_RECEIVING_FROM";
-
- default:
- return a;
- }
-}
-
-// ********************************************************************************************* //
-
-// https://bugzilla.mozilla.org/show_bug.cgi?id=669730
-var HttpActivityObserverModule = Obj.extend(Firebug.Module,
-{
- dispatchName: "HttpActivityObserverModule",
-
- destroyContext: function(context)
- {
- this.cleanUp(context.window);
- },
-
- unwatchWindow: function(context, win)
- {
- this.cleanUp(win);
- },
-
- cleanUp: function(win)
- {
- for (var i=0; i<activeRequests.length; i+=2)
- {
- if (activeRequests[i+1] == win)
- {
- activeRequests.splice(i, 2);
- i -= 2;
- }
- }
- },
-
- shutdown: function()
- {
- // destroy NetHttpActivityObserver
- NetHttpActivityObserver.unregisterObserver();
- NetHttpActivityObserver.registerObserver = function() {};
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(HttpActivityObserverModule);
-
-return NetHttpActivityObserver;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/xpcom",
+ "firebug/lib/object",
+ "firebug/lib/trace",
+ "firebug/lib/http",
+ "firebug/chrome/window",
+ "firebug/net/netProgress",
+ "firebug/net/netUtils"
+],
+function(Xpcom, Obj, FBTrace, Http, Win, NetProgress, NetUtils) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cr = Components.results;
+
+var nsIHttpActivityObserver = Ci.nsIHttpActivityObserver;
+var nsISocketTransport = Ci.nsISocketTransport;
+
+var activeRequests = [];
+
+// ********************************************************************************************* //
+// Callbacks
+
+var startFile = NetProgress.prototype.startFile;
+var requestedHeaderFile = NetProgress.prototype.requestedHeaderFile;
+var respondedHeaderFile = NetProgress.prototype.respondedHeaderFile;
+var requestedFile = NetProgress.prototype.requestedFile;
+var respondedFile = NetProgress.prototype.respondedFile;
+var bodySentFile = NetProgress.prototype.bodySentFile;
+var responseStartedFile = NetProgress.prototype.responseStartedFile;
+var respondedCacheFile = NetProgress.prototype.respondedCacheFile;
+var connectingFile = NetProgress.prototype.connectingFile;
+var connectedFile = NetProgress.prototype.connectedFile;
+var waitingForFile = NetProgress.prototype.waitingForFile;
+var sendingFile = NetProgress.prototype.sendingFile;
+var receivingFile = NetProgress.prototype.receivingFile;
+var responseCompletedFile = NetProgress.prototype.responseCompletedFile;
+var closedFile = NetProgress.prototype.closedFile;
+var resolvingFile = NetProgress.prototype.resolvingFile;
+var resolvedFile = NetProgress.prototype.resolvedFile;
+var windowPaint = NetProgress.prototype.windowPaint;
+var timeStamp = NetProgress.prototype.timeStamp;
+var windowLoad = NetProgress.prototype.windowLoad;
+var contentLoad = NetProgress.prototype.contentLoad;
+
+// ********************************************************************************************* //
+// Activity Observer
+
+var NetHttpActivityObserver =
+{
+ registered: false,
+
+ registerObserver: function()
+ {
+ if (!Ci.nsIHttpActivityDistributor)
+ return;
+
+ if (this.registered)
+ return;
+
+ var distributor = this.getActivityDistributor();
+ if (!distributor)
+ return;
+
+ distributor.addObserver(this);
+ this.registered = true;
+
+ if (FBTrace.DBG_ACTIVITYOBSERVER || FBTrace.DBG_OBSERVERS)
+ {
+ // import fbObserverService
+ Components.utils.import("resource://firebug/observer-service.js");
+ this.trackId = fbObserverService.track(Components.stack);
+ FBTrace.sysout("activityObserver.registerObserver;"+this.trackId+" this.registered: "+this.registered);
+ }
+
+ },
+
+ unregisterObserver: function()
+ {
+ if (!Ci.nsIHttpActivityDistributor)
+ return;
+
+ if (!this.registered)
+ return;
+
+ var distributor = this.getActivityDistributor();
+ if (!distributor)
+ return;
+
+ distributor.removeObserver(this);
+ this.registered = false;
+
+ if (FBTrace.DBG_ACTIVITYOBSERVER || FBTrace.DBG_OBSERVERS)
+ {
+ // import fbObserverService
+ Components.utils.import("resource://firebug/observer-service.js");
+ fbObserverService.untrack(this.trackId);
+ FBTrace.sysout("activityObserver.unregisterObserver;"+this.trackId+" this.registered: "+this.registered);
+ }
+
+ },
+
+ getActivityDistributor: function()
+ {
+ if (!this.activityDistributor)
+ {
+ try
+ {
+ var hadClass = Cc["@mozilla.org/network/http-activity-distributor;1"];
+ if (!hadClass)
+ return null;
+
+ this.activityDistributor = hadClass.getService(Ci.nsIHttpActivityDistributor);
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.NetHttpActivityObserver; Activity Observer Registered");
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("net.NetHttpActivityObserver; Activity Observer EXCEPTION", err);
+ }
+ }
+ return this.activityDistributor;
+ },
+
+ /* nsIActivityObserver */
+ observeActivity: function(httpChannel, activityType, activitySubtype, timestamp,
+ extraSizeData, extraStringData)
+ {
+ try
+ {
+ if (httpChannel instanceof Ci.nsIHttpChannel)
+ this.observeRequest(httpChannel, activityType, activitySubtype, timestamp,
+ extraSizeData, extraStringData);
+ }
+ catch (exc)
+ {
+ if ( (typeof(FBTrace) !== undefined) && FBTrace && FBTrace.DBG_ERRORS) // then we are in some sane scope
+ FBTrace.sysout("net.observeActivity: EXCEPTION "+exc, exc);
+ }
+ },
+
+ observeRequest: function(httpChannel, activityType, activitySubtype, timestamp,
+ extraSizeData, extraStringData)
+ {
+ var win = Http.getWindowForRequest(httpChannel);
+ if (!win)
+ {
+ var index = activeRequests.indexOf(httpChannel);
+ if (index == -1)
+ return;
+
+ if (!(win = activeRequests[index+1]))
+ return;
+ }
+
+ var context = Firebug.connection.getContextByWindow(win);
+ var tabId = Win.getWindowProxyIdForWindow(win);
+ if (!(tabId && win))
+ return;
+
+ var networkContext = Firebug.NetMonitor.contexts[tabId];
+ if (!networkContext)
+ networkContext = context ? context.netProgress : null;
+
+ if (!networkContext)
+ return;
+
+ var time = new Date();
+ time.setTime(timestamp/1000);
+
+ if (FBTrace.DBG_ACTIVITYOBSERVER)
+ {
+ FBTrace.sysout("activityObserver.observeActivity; " +
+ NetUtils.getTimeLabel(time) + ", " +
+ Http.safeGetRequestName(httpChannel) + ", " +
+ getActivityTypeDescription(activityType) + ", " +
+ getActivitySubtypeDescription(activitySubtype) + ", " +
+ extraSizeData,
+ extraStringData);
+ }
+
+ time = time.getTime();
+
+ if (activityType == nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION)
+ {
+ if (activitySubtype == nsIHttpActivityObserver.ACTIVITY_SUBTYPE_REQUEST_HEADER)
+ {
+ activeRequests.push(httpChannel);
+ activeRequests.push(win);
+
+ var isXHR = Http.isXHR(httpChannel);
+ networkContext.post(requestedHeaderFile, [httpChannel, time, win, isXHR, extraStringData]);
+ }
+ else if (activitySubtype == nsIHttpActivityObserver.ACTIVITY_SUBTYPE_TRANSACTION_CLOSE)
+ {
+ var index = activeRequests.indexOf(httpChannel);
+ activeRequests.splice(index, 2);
+
+ networkContext.post(closedFile, [httpChannel, time]);
+ }
+ else if (activitySubtype == nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_HEADER)
+ networkContext.post(respondedHeaderFile, [httpChannel, time, extraStringData]);
+ else if (activitySubtype == nsIHttpActivityObserver.ACTIVITY_SUBTYPE_REQUEST_BODY_SENT)
+ networkContext.post(bodySentFile, [httpChannel, time]);
+ else if (activitySubtype == nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_START)
+ networkContext.post(responseStartedFile, [httpChannel, time]);
+ else if (activitySubtype == nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_COMPLETE)
+ networkContext.post(responseCompletedFile, [httpChannel, time, extraSizeData]);
+ }
+ else if (activityType == nsIHttpActivityObserver.ACTIVITY_TYPE_SOCKET_TRANSPORT)
+ {
+ if (activitySubtype == nsISocketTransport.STATUS_RESOLVING)
+ networkContext.post(resolvingFile, [httpChannel, time]);
+ //else if (activitySubtype == nsISocketTransport.STATUS_RESOLVED)
+ // networkContext.post(resolvedFile, [httpChannel, time]);
+ else if (activitySubtype == nsISocketTransport.STATUS_CONNECTING_TO)
+ networkContext.post(connectingFile, [httpChannel, time]);
+ else if (activitySubtype == nsISocketTransport.STATUS_CONNECTED_TO)
+ networkContext.post(connectedFile, [httpChannel, time]);
+ else if (activitySubtype == nsISocketTransport.STATUS_SENDING_TO)
+ networkContext.post(sendingFile, [httpChannel, time, extraSizeData]);
+ else if (activitySubtype == nsISocketTransport.STATUS_WAITING_FOR)
+ networkContext.post(waitingForFile, [httpChannel, time]);
+ else if (activitySubtype == nsISocketTransport.STATUS_RECEIVING_FROM)
+ networkContext.post(receivingFile, [httpChannel, time, extraSizeData]);
+ }
+ },
+
+ /* nsISupports */
+ QueryInterface: function(iid)
+ {
+ if (iid.equals(Ci.nsISupports) ||
+ iid.equals(Ci.nsIActivityObserver)) {
+ return this;
+ }
+
+ throw Cr.NS_ERROR_NO_INTERFACE;
+ }
+};
+
+// ********************************************************************************************* //
+// Activity Observer Tracing Support
+
+function getActivityTypeDescription(a)
+{
+ switch (a)
+ {
+ case nsIHttpActivityObserver.ACTIVITY_TYPE_SOCKET_TRANSPORT:
+ return "ACTIVITY_TYPE_SOCKET_TRANSPORT";
+ case nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION:
+ return "ACTIVITY_TYPE_HTTP_TRANSACTION";
+ default:
+ return a;
+ }
+}
+
+function getActivitySubtypeDescription(a)
+{
+ switch (a)
+ {
+ case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_REQUEST_HEADER:
+ return "ACTIVITY_SUBTYPE_REQUEST_HEADER";
+ case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_REQUEST_BODY_SENT:
+ return "ACTIVITY_SUBTYPE_REQUEST_BODY_SENT";
+ case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_START:
+ return "ACTIVITY_SUBTYPE_RESPONSE_START";
+ case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_HEADER:
+ return "ACTIVITY_SUBTYPE_RESPONSE_HEADER";
+ case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_COMPLETE:
+ return "ACTIVITY_SUBTYPE_RESPONSE_COMPLETE";
+ case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_TRANSACTION_CLOSE:
+ return "ACTIVITY_SUBTYPE_TRANSACTION_CLOSE";
+
+ case nsISocketTransport.STATUS_RESOLVING:
+ return "STATUS_RESOLVING";
+ case nsISocketTransport.STATUS_RESOLVED:
+ return "STATUS_RESOLVED";
+ case nsISocketTransport.STATUS_CONNECTING_TO:
+ return "STATUS_CONNECTING_TO";
+ case nsISocketTransport.STATUS_CONNECTED_TO:
+ return "STATUS_CONNECTED_TO";
+ case nsISocketTransport.STATUS_SENDING_TO:
+ return "STATUS_SENDING_TO";
+ case nsISocketTransport.STATUS_WAITING_FOR:
+ return "STATUS_WAITING_FOR";
+ case nsISocketTransport.STATUS_RECEIVING_FROM:
+ return "STATUS_RECEIVING_FROM";
+
+ default:
+ return a;
+ }
+}
+
+// ********************************************************************************************* //
+
+// https://bugzilla.mozilla.org/show_bug.cgi?id=669730
+var HttpActivityObserverModule = Obj.extend(Firebug.Module,
+{
+ dispatchName: "HttpActivityObserverModule",
+
+ destroyContext: function(context)
+ {
+ this.cleanUp(context.window);
+ },
+
+ unwatchWindow: function(context, win)
+ {
+ this.cleanUp(win);
+ },
+
+ cleanUp: function(win)
+ {
+ for (var i=0; i<activeRequests.length; i+=2)
+ {
+ if (activeRequests[i+1] == win)
+ {
+ activeRequests.splice(i, 2);
+ i -= 2;
+ }
+ }
+ },
+
+ shutdown: function()
+ {
+ // destroy NetHttpActivityObserver
+ NetHttpActivityObserver.unregisterObserver();
+ NetHttpActivityObserver.registerObserver = function() {};
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(HttpActivityObserverModule);
+
+return NetHttpActivityObserver;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/net/jsonViewer.js b/content/firebug/net/jsonViewer.js
index 77bb079..9848470 100644
--- a/content/firebug/net/jsonViewer.js
+++ b/content/firebug/net/jsonViewer.js
@@ -1,283 +1,283 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/http",
- "firebug/lib/string",
- "firebug/lib/json",
- "firebug/dom/toggleBranch",
- "firebug/lib/array",
- "firebug/lib/system",
- "firebug/dom/domPanel",
- "firebug/chrome/reps"
-],
-function(Obj, Firebug, Domplate, Locale, Events, Css, Dom, Http, Str, Json,
- ToggleBranch, Arr, System) {
-
-// ********************************************************************************************* //
-
-// List of JSON content types.
-var contentTypes =
-{
- "text/plain": 1,
- "text/javascript": 1,
- "text/x-javascript": 1,
- "text/json": 1,
- "text/x-json": 1,
- "application/json": 1,
- "application/x-json": 1,
- "application/javascript": 1,
- "application/x-javascript": 1,
- "application/json-rpc": 1
-};
-
-// ********************************************************************************************* //
-// Model implementation
-
-Firebug.JSONViewerModel = Obj.extend(Firebug.Module,
-{
- dispatchName: "jsonViewer",
- contentTypes: contentTypes,
-
- initialize: function()
- {
- Firebug.NetMonitor.NetInfoBody.addListener(this);
- Firebug.registerUIListener(this);
- },
-
- shutdown: function()
- {
- Firebug.NetMonitor.NetInfoBody.removeListener(this);
- Firebug.unregisterUIListener(this);
- },
-
- onContextMenu: function(items, object, target, context, panel, popup)
- {
- if (panel.name != "net" && panel.name != "console")
- return;
-
- var memberLabel = Dom.getAncestorByClass(target, "memberLabel");
-
- if (!memberLabel)
- return;
-
- var row = Dom.getAncestorByClass(target, "memberRow");
- if (!row || !row.domObject.value)
- return;
-
- items.push({
- id: "fbNetCopyJSON",
- nol10n: true,
- label: Locale.$STRF("net.jsonviewer.Copy_JSON", [row.domObject.name]),
- command: Obj.bindFixed(this.copyJsonResponse, this, row)
- });
- },
-
- copyJsonResponse:function(row)
- {
- var value = JSON.stringify(row.domObject.value);
- if (value)
- System.copyToClipboard(value);
- },
-
- initTabBody: function(infoBox, file)
- {
- if (FBTrace.DBG_JSONVIEWER)
- FBTrace.sysout("jsonviewer.initTabBody", {infoBox: infoBox, file: file});
-
- // Let listeners to parse the JSON.
- Events.dispatch(this.fbListeners, "onParseJSON", [file]);
-
- // The JSON is still no there, try to parse most common cases.
- if (!file.jsonObject)
- {
- if (this.isJSON(Http.safeGetContentType(file.request), file.responseText))
- file.jsonObject = this.parseJSON(file);
- }
-
- // The jsonObject is created so, the JSON tab can be displayed.
- if (file.jsonObject)
- {
- Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "JSON",
- Locale.$STR("jsonviewer.tab.JSON"));
-
- if (FBTrace.DBG_JSONVIEWER)
- FBTrace.sysout("jsonviewer.initTabBody; JSON object available " +
- (typeof(file.jsonObject) != "undefined"), file.jsonObject);
- }
- },
-
- isJSON: function(contentType, data)
- {
- // Workaround for JSON responses without proper content type
- // Let's consider all responses starting with "{" as JSON. In the worst
- // case there will be an exception when parsing. This means that no-JSON
- // responses (and post data) (with "{") can be parsed unnecessarily,
- // which represents a little overhead, but this happens only if the request
- // is actually expanded by the user in the UI (Net & Console panels).
- var responseText = data ? Str.trimLeft(data) : null;
- if (responseText && responseText.charAt(0) === "{")
- return true;
-
- if (!contentType)
- return false;
-
- contentType = contentType.split(";")[0];
- contentType = Str.trim(contentType);
- return contentTypes[contentType];
- },
-
- // Update listener for TabView
- updateTabBody: function(infoBox, file, context)
- {
- var tab = infoBox.selectedTab;
- var tabBody = infoBox.getElementsByClassName("netInfoJSONText").item(0);
- if (!Css.hasClass(tab, "netInfoJSONTab") || tabBody.updated)
- return;
-
- if (FBTrace.DBG_JSONVIEWER)
- FBTrace.sysout("jsonviewer.updateTabBody", infoBox);
-
- tabBody.updated = true;
- tabBody.context = context;
-
- this.Preview.render(tabBody, file, context);
- },
-
- parseJSON: function(file)
- {
- var jsonString = new String(file.responseText);
- return Json.parseJSONString(jsonString, "http://" + file.request.originalURI.host);
- },
-});
-
-// ********************************************************************************************* //
-
-with (Domplate) {
-Firebug.JSONViewerModel.Preview = domplate(
-{
- bodyTag:
- DIV({"class": "jsonPreview", _repObject: "$file"},
- DIV({"class": "title"},
- DIV({"class": "sortLink", onclick: "$onSort", $sorted: "$sorted"},
- SPAN({"class": "doSort"}, Locale.$STR("jsonviewer.sort")),
- SPAN({"class": "doNotSort"}, Locale.$STR("jsonviewer.do not sort"))
- )
- ),
- DIV({"class": "jsonPreviewBody"})
- ),
-
- onSort: function(event)
- {
- var target = event.target;
- var sortLink = Dom.getAncestorByClass(target, "sortLink");
- if (!sortLink)
- return;
-
- Events.cancelEvent(event);
-
- Css.toggleClass(sortLink, "sorted");
- Firebug.Options.set("sortJsonPreview", !Firebug.sortJsonPreview);
-
- var preview = Dom.getAncestorByClass(sortLink, "jsonPreview");
- var body = Dom.getAncestorByClass(sortLink, "netInfoJSONText");
- if (!body)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("jsonViewer.onSort; ERROR body is null");
- return;
- }
-
- this.render(body, preview.repObject, body.context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- render: function(body, file, context)
- {
- if (!file.jsonObject)
- return;
-
- if (!body.jsonTree)
- body.jsonTree = new JSONTreePlate();
-
- var input = {file: file, sorted: Firebug.sortJsonPreview};
- parentNode = this.bodyTag.replace(input, body, this);
- parentNode = parentNode.getElementsByClassName("jsonPreviewBody").item(0);
-
- body.jsonTree.render(file.jsonObject, parentNode, context);
- }
-});
-};
-
-// ********************************************************************************************* //
-
-function JSONTreePlate()
-{
- // Used by Firebug.DOMPanel.DirTable domplate.
- this.toggles = new ToggleBranch.ToggleBranch();
-}
-
-// xxxHonza: this object is *not* a panel (using Firebug terminology), but
-// there is no other way how to subclass the DOM Tree than to derive from the DOMBasePanel.
-// Better solution would be to have a middle object between DirTablePlate and DOMBasePanel.
-JSONTreePlate.prototype = Obj.extend(Firebug.DOMBasePanel.prototype,
-{
- dispatchName: "JSONTreePlate",
-
- render: function(jsonObject, parentNode, context)
- {
- try
- {
- this.panelNode = parentNode;
- this.context = context;
-
- var members = this.getMembers(jsonObject, 0);
- this.expandMembers(members, this.toggles, 0, 0);
- this.showMembers(members, false, false);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
- FBTrace.sysout("jsonviewer.render; EXCEPTION", err);
- }
- },
-
- getMembers: function(object, level)
- {
- if (!level)
- level = 0;
-
- var members = [];
-
- for (var name in object)
- {
- var val = object[name];
- this.addMember(object, "user", members, name, val, level);
- }
-
- function sortName(a, b) { return a.name > b.name ? 1 : -1; }
-
- // Sort only if it isn't an array (issue 4382).
- if (Firebug.sortJsonPreview && !Arr.isArray(object, this.context.window))
- members.sort(sortName);
-
- return members;
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.JSONViewerModel);
-
-return Firebug.JSONViewerModel;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/http",
+ "firebug/lib/string",
+ "firebug/lib/json",
+ "firebug/dom/toggleBranch",
+ "firebug/lib/array",
+ "firebug/lib/system",
+ "firebug/dom/domPanel",
+ "firebug/chrome/reps"
+],
+function(Obj, Firebug, Domplate, Locale, Events, Css, Dom, Http, Str, Json,
+ ToggleBranch, Arr, System) {
+
+// ********************************************************************************************* //
+
+// List of JSON content types.
+var contentTypes =
+{
+ "text/plain": 1,
+ "text/javascript": 1,
+ "text/x-javascript": 1,
+ "text/json": 1,
+ "text/x-json": 1,
+ "application/json": 1,
+ "application/x-json": 1,
+ "application/javascript": 1,
+ "application/x-javascript": 1,
+ "application/json-rpc": 1
+};
+
+// ********************************************************************************************* //
+// Model implementation
+
+Firebug.JSONViewerModel = Obj.extend(Firebug.Module,
+{
+ dispatchName: "jsonViewer",
+ contentTypes: contentTypes,
+
+ initialize: function()
+ {
+ Firebug.NetMonitor.NetInfoBody.addListener(this);
+ Firebug.registerUIListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.NetMonitor.NetInfoBody.removeListener(this);
+ Firebug.unregisterUIListener(this);
+ },
+
+ onContextMenu: function(items, object, target, context, panel, popup)
+ {
+ if (panel.name != "net" && panel.name != "console")
+ return;
+
+ var memberLabel = Dom.getAncestorByClass(target, "memberLabel");
+
+ if (!memberLabel)
+ return;
+
+ var row = Dom.getAncestorByClass(target, "memberRow");
+ if (!row || !row.domObject.value)
+ return;
+
+ items.push({
+ id: "fbNetCopyJSON",
+ nol10n: true,
+ label: Locale.$STRF("net.jsonviewer.Copy_JSON", [row.domObject.name]),
+ command: Obj.bindFixed(this.copyJsonResponse, this, row)
+ });
+ },
+
+ copyJsonResponse:function(row)
+ {
+ var value = JSON.stringify(row.domObject.value);
+ if (value)
+ System.copyToClipboard(value);
+ },
+
+ initTabBody: function(infoBox, file)
+ {
+ if (FBTrace.DBG_JSONVIEWER)
+ FBTrace.sysout("jsonviewer.initTabBody", {infoBox: infoBox, file: file});
+
+ // Let listeners to parse the JSON.
+ Events.dispatch(this.fbListeners, "onParseJSON", [file]);
+
+ // The JSON is still no there, try to parse most common cases.
+ if (!file.jsonObject)
+ {
+ if (this.isJSON(Http.safeGetContentType(file.request), file.responseText))
+ file.jsonObject = this.parseJSON(file);
+ }
+
+ // The jsonObject is created so, the JSON tab can be displayed.
+ if (file.jsonObject)
+ {
+ Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "JSON",
+ Locale.$STR("jsonviewer.tab.JSON"));
+
+ if (FBTrace.DBG_JSONVIEWER)
+ FBTrace.sysout("jsonviewer.initTabBody; JSON object available " +
+ (typeof(file.jsonObject) != "undefined"), file.jsonObject);
+ }
+ },
+
+ isJSON: function(contentType, data)
+ {
+ // Workaround for JSON responses without proper content type
+ // Let's consider all responses starting with "{" as JSON. In the worst
+ // case there will be an exception when parsing. This means that no-JSON
+ // responses (and post data) (with "{") can be parsed unnecessarily,
+ // which represents a little overhead, but this happens only if the request
+ // is actually expanded by the user in the UI (Net & Console panels).
+ var responseText = data ? Str.trimLeft(data) : null;
+ if (responseText && responseText.charAt(0) === "{")
+ return true;
+
+ if (!contentType)
+ return false;
+
+ contentType = contentType.split(";")[0];
+ contentType = Str.trim(contentType);
+ return contentTypes[contentType];
+ },
+
+ // Update listener for TabView
+ updateTabBody: function(infoBox, file, context)
+ {
+ var tab = infoBox.selectedTab;
+ var tabBody = infoBox.getElementsByClassName("netInfoJSONText").item(0);
+ if (!Css.hasClass(tab, "netInfoJSONTab") || tabBody.updated)
+ return;
+
+ if (FBTrace.DBG_JSONVIEWER)
+ FBTrace.sysout("jsonviewer.updateTabBody", infoBox);
+
+ tabBody.updated = true;
+ tabBody.context = context;
+
+ this.Preview.render(tabBody, file, context);
+ },
+
+ parseJSON: function(file)
+ {
+ var jsonString = new String(file.responseText);
+ return Json.parseJSONString(jsonString, "http://" + file.request.originalURI.host);
+ },
+});
+
+// ********************************************************************************************* //
+
+with (Domplate) {
+Firebug.JSONViewerModel.Preview = domplate(
+{
+ bodyTag:
+ DIV({"class": "jsonPreview", _repObject: "$file"},
+ DIV({"class": "title"},
+ DIV({"class": "sortLink", onclick: "$onSort", $sorted: "$sorted"},
+ SPAN({"class": "doSort"}, Locale.$STR("jsonviewer.sort")),
+ SPAN({"class": "doNotSort"}, Locale.$STR("jsonviewer.do not sort"))
+ )
+ ),
+ DIV({"class": "jsonPreviewBody"})
+ ),
+
+ onSort: function(event)
+ {
+ var target = event.target;
+ var sortLink = Dom.getAncestorByClass(target, "sortLink");
+ if (!sortLink)
+ return;
+
+ Events.cancelEvent(event);
+
+ Css.toggleClass(sortLink, "sorted");
+ Firebug.Options.set("sortJsonPreview", !Firebug.sortJsonPreview);
+
+ var preview = Dom.getAncestorByClass(sortLink, "jsonPreview");
+ var body = Dom.getAncestorByClass(sortLink, "netInfoJSONText");
+ if (!body)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("jsonViewer.onSort; ERROR body is null");
+ return;
+ }
+
+ this.render(body, preview.repObject, body.context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ render: function(body, file, context)
+ {
+ if (!file.jsonObject)
+ return;
+
+ if (!body.jsonTree)
+ body.jsonTree = new JSONTreePlate();
+
+ var input = {file: file, sorted: Firebug.sortJsonPreview};
+ parentNode = this.bodyTag.replace(input, body, this);
+ parentNode = parentNode.getElementsByClassName("jsonPreviewBody").item(0);
+
+ body.jsonTree.render(file.jsonObject, parentNode, context);
+ }
+});
+};
+
+// ********************************************************************************************* //
+
+function JSONTreePlate()
+{
+ // Used by Firebug.DOMPanel.DirTable domplate.
+ this.toggles = new ToggleBranch.ToggleBranch();
+}
+
+// xxxHonza: this object is *not* a panel (using Firebug terminology), but
+// there is no other way how to subclass the DOM Tree than to derive from the DOMBasePanel.
+// Better solution would be to have a middle object between DirTablePlate and DOMBasePanel.
+JSONTreePlate.prototype = Obj.extend(Firebug.DOMBasePanel.prototype,
+{
+ dispatchName: "JSONTreePlate",
+
+ render: function(jsonObject, parentNode, context)
+ {
+ try
+ {
+ this.panelNode = parentNode;
+ this.context = context;
+
+ var members = this.getMembers(jsonObject, 0);
+ this.expandMembers(members, this.toggles, 0, 0);
+ this.showMembers(members, false, false);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
+ FBTrace.sysout("jsonviewer.render; EXCEPTION", err);
+ }
+ },
+
+ getMembers: function(object, level)
+ {
+ if (!level)
+ level = 0;
+
+ var members = [];
+
+ for (var name in object)
+ {
+ var val = object[name];
+ this.addMember(object, "user", members, name, val, level);
+ }
+
+ function sortName(a, b) { return a.name > b.name ? 1 : -1; }
+
+ // Sort only if it isn't an array (issue 4382).
+ if (Firebug.sortJsonPreview && !Arr.isArray(object, this.context.window))
+ members.sort(sortName);
+
+ return members;
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.JSONViewerModel);
+
+return Firebug.JSONViewerModel;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/net/netCacheReader.js b/content/firebug/net/netCacheReader.js
index 7b446d8..268d7cb 100644
--- a/content/firebug/net/netCacheReader.js
+++ b/content/firebug/net/netCacheReader.js
@@ -1,313 +1,313 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/object",
- "firebug/lib/locale",
- "firebug/lib/trace",
- "firebug/lib/dom",
- "firebug/lib/css",
- "firebug/net/netMonitor",
- "firebug/net/netUtils",
- "firebug/lib/domplate",
-],
-function(Firebug, Obj, Locale, FBTrace, Dom, Css, NetMonitor, NetUtils, Domplate) {
-
-"use strict"
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-var Cr = Components.results;
-
-var CacheService = Cc["@mozilla.org/network/cache-service;1"];
-
-var cacheSession = null;
-var autoFetchDelay = 1000;
-
-// ********************************************************************************************* //
-// Domplate Templates
-
-var {TABLE, TBODY} = Domplate;
-
-// Used to generate basic structure of the 'Cache' tab that is available within request
-// info body (visible when a request is expanded in the Net panel).
-var cacheBodyTag =
- TABLE({"class": "netInfoCacheTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
- TBODY({"role": "list", "aria-label": Locale.$STR("Cache")})
- );
-
-// ********************************************************************************************* //
-// Model implementation
-
-/**
- * @module Responsible for fetching given URL entry from the browser cache. The Net panel
- * displays such info for requests that are stored in the cache.
- *
- * The cache descriptor is fetched asynchronously when the user expands a requests row
- * within the Net panel. Note that opening the cache descriptor during the page load can
- * influence the caching logic (see issue 6385).
- */
-var NetCacheReader = Obj.extend(Firebug.Module,
-/** @lends NetCacheReader */
-{
- dispatchName: "netCacheReader",
-
- // Set to true if cache-data should be fetched automatically.
- autoFetch: false,
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Initialization
-
- initialize: function()
- {
- Firebug.Module.initialize.apply(this, arguments);
-
- // Register a listener so, we can create a custom info tab within request info body.
- NetMonitor.NetInfoBody.addListener(this);
- },
-
- shutdown: function()
- {
- Firebug.Module.shutdown.apply(this, arguments);
-
- NetMonitor.NetInfoBody.removeListener(this);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // TabView Listener
-
- initTabBody: function(infoBox, file)
- {
- if (!file.cacheEntryRequested)
- return;
-
- // This is the way how templates can access the current context.
- var panel = Firebug.getElementPanel(infoBox);
- var context = panel.context;
-
- // Create a custom 'Cache' tab.
- NetMonitor.NetInfoBody.appendTab(infoBox, "Cache", Locale.$STR("Cache"));
-
- // Fetch data from the cache.
- this.getCacheEntry(file, context.netProgress);
- },
-
- updateTabBody: function(infoBox, file, context)
- {
- // If the file is not loaded yet or the cache-entry is not available, bail out.
- if (!file.loaded || !file.cacheEntry)
- return;
-
- var tab = infoBox.selectedTab;
- var tabBody = infoBox.getElementsByClassName("netInfoCacheText").item(0);
- if (!Css.hasClass(tab, "netInfoCacheTab") || tabBody.updated)
- return;
-
- // The UI update should happen only once so, set this flag.
- tabBody.updated = true;
-
- // Render basic body structure (table).
- cacheBodyTag.replace({}, tabBody);
-
- // Render cache information in the UI.
- NetMonitor.NetInfoBody.insertHeaderRows(tabBody, file.cacheEntry, "Cache");
- },
-
- updateRequestTabBody: function(context, file)
- {
- var panel = context.getPanel("net");
- var row = file.row;
- if (!row)
- return;
-
- // If the row is already closed, bail out.
- if (!Css.hasClass(row, "opened"))
- return;
-
- // Update the cache info body.
- var infoRow = row.nextSibling;
- var netInfoBox = infoRow.getElementsByClassName("netInfoBody").item(0);
- if (!netInfoBox)
- return;
-
- this.updateTabBody(netInfoBox, file, context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- requestCacheEntry: function(file, netProgress)
- {
- // Bail out if the cache is disabled.
- if (!NetMonitor.BrowserCache.isEnabled())
- return;
-
- // Don't request the cache entry twice.
- if (file.cacheEntryRequested)
- return;
-
- // The actual request to the cache will be done as soon as the net panel entry
- // is expanded by the user. Reading cache during the page load can influence
- // the caching. See issue 6385.
- file.cacheEntryRequested = true;
-
- // In case of auto-exporters (such as NetExport) we need to fetch the
- // cache entry automatically and not wait till the user touches the UI.
- if (this.autoFetch)
- {
- var listener = this.getCacheEntry.bind(this, file, netProgress);
- netProgress.context.setTimeout(listener, autoFetchDelay);
- }
- },
-
- getCacheEntry: function(file, netProgress)
- {
- try
- {
- // Fetch data from the browser cache.
- fetchCacheEntry(file, netProgress);
- }
- catch (exc)
- {
- if (exc.name != "NS_ERROR_CACHE_KEY_NOT_FOUND")
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("net.getCacheEntry; FAILS " + file.href, exc);
- }
- }
- }
-});
-
-// ********************************************************************************************* //
-// Local Helpers
-
-function fetchCacheEntry(file, netProgress)
-{
- if (file.cacheEntry)
- return;
-
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.getCacheEntry; file.href: " + file.href);
-
- // Initialize cache session.
- if (!cacheSession)
- {
- var cacheService = CacheService.getService(Ci.nsICacheService);
- cacheSession = cacheService.createSession("HTTP", Ci.nsICache.STORE_ANYWHERE, true);
- cacheSession.doomEntriesIfExpired = false;
- }
-
- cacheSession.asyncOpenCacheEntry(file.href, Ci.nsICache.ACCESS_READ,
- {
- onCacheEntryAvailable: function(descriptor, accessGranted, status)
- {
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.onCacheEntryAvailable; file.href: " + file.href);
-
- if (descriptor)
- onDescriptorAvailable(netProgress, file, descriptor);
-
- getCachedHeaders(file);
- }
- });
-}
-
-function onDescriptorAvailable(netProgress, file, descriptor)
-{
- if (file.size <= 0)
- file.size = descriptor.dataSize;
-
- if (descriptor.lastModified && descriptor.lastFetched &&
- descriptor.lastModified < Math.floor(file.startTime/1000))
- {
- file.fromCache = true;
- }
-
- file.cacheEntry =
- [
- {
- name: "Last Modified",
- value: NetUtils.getDateFromSeconds(descriptor.lastModified)
- },
- {
- name: "Last Fetched",
- value: NetUtils.getDateFromSeconds(descriptor.lastFetched)
- },
- {
- name: "Expires",
- value: NetUtils.getDateFromSeconds(descriptor.expirationTime)
- },
- {
- name: "Data Size",
- value: descriptor.dataSize
- },
- {
- name: "Fetch Count",
- value: descriptor.fetchCount
- },
- {
- name: "Device",
- value: descriptor.deviceID
- }
- ];
-
- try
- {
- // Get contentType from the cache.
- var value = descriptor.getMetaDataElement("response-head");
- var contentType = getContentTypeFromResponseHead(value);
- file.mimeType = NetUtils.getMimeType(contentType, file.href);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("net.onCacheEntryAvailable; EXCEPTION " + e, e);
- }
-
- descriptor.close();
- netProgress.update(file);
-
- // Update UI (in case the request/file is currently expanded)
- NetCacheReader.updateRequestTabBody(netProgress.context, file);
-}
-
-function getCachedHeaders(file)
-{
- // Cached headers are important only if the request comes from the cache.
- if (!file.fromCache)
- return;
-
- // The request is containing cached headers now. These will be also displayed
- // within the Net panel.
- var cache = {};
- NetUtils.getHttpHeaders(file.request, cache);
- file.cachedResponseHeaders = cache.responseHeaders;
-}
-
-function getContentTypeFromResponseHead(value)
-{
- var values = value.split("\r\n");
- for (var i=0; i<values.length; i++)
- {
- var option = values[i].split(": ");
- var headerName = option[0];
- if (headerName && headerName.toLowerCase() == "content-type")
- return option[1];
- }
-}
-
-// ********************************************************************************************* //
-// Registration
-
-// xxxHonza: expose the module through NetMonitor namespace to avoid cycle dependency problem.
-// NetCacheReader module is used within NetProgress module, but can't be included there.
-NetMonitor.NetCacheReader = NetCacheReader;
-
-Firebug.registerModule(NetCacheReader);
-
-return NetCacheReader;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/object",
+ "firebug/lib/locale",
+ "firebug/lib/trace",
+ "firebug/lib/dom",
+ "firebug/lib/css",
+ "firebug/net/netMonitor",
+ "firebug/net/netUtils",
+ "firebug/lib/domplate",
+],
+function(Firebug, Obj, Locale, FBTrace, Dom, Css, NetMonitor, NetUtils, Domplate) {
+
+"use strict"
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cr = Components.results;
+
+var CacheService = Cc["@mozilla.org/network/cache-service;1"];
+
+var cacheSession = null;
+var autoFetchDelay = 1000;
+
+// ********************************************************************************************* //
+// Domplate Templates
+
+var {TABLE, TBODY} = Domplate;
+
+// Used to generate basic structure of the 'Cache' tab that is available within request
+// info body (visible when a request is expanded in the Net panel).
+var cacheBodyTag =
+ TABLE({"class": "netInfoCacheTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
+ TBODY({"role": "list", "aria-label": Locale.$STR("Cache")})
+ );
+
+// ********************************************************************************************* //
+// Model implementation
+
+/**
+ * @module Responsible for fetching given URL entry from the browser cache. The Net panel
+ * displays such info for requests that are stored in the cache.
+ *
+ * The cache descriptor is fetched asynchronously when the user expands a requests row
+ * within the Net panel. Note that opening the cache descriptor during the page load can
+ * influence the caching logic (see issue 6385).
+ */
+var NetCacheReader = Obj.extend(Firebug.Module,
+/** @lends NetCacheReader */
+{
+ dispatchName: "netCacheReader",
+
+ // Set to true if cache-data should be fetched automatically.
+ autoFetch: false,
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Initialization
+
+ initialize: function()
+ {
+ Firebug.Module.initialize.apply(this, arguments);
+
+ // Register a listener so, we can create a custom info tab within request info body.
+ NetMonitor.NetInfoBody.addListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.Module.shutdown.apply(this, arguments);
+
+ NetMonitor.NetInfoBody.removeListener(this);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // TabView Listener
+
+ initTabBody: function(infoBox, file)
+ {
+ if (!file.cacheEntryRequested)
+ return;
+
+ // This is the way how templates can access the current context.
+ var panel = Firebug.getElementPanel(infoBox);
+ var context = panel.context;
+
+ // Create a custom 'Cache' tab.
+ NetMonitor.NetInfoBody.appendTab(infoBox, "Cache", Locale.$STR("Cache"));
+
+ // Fetch data from the cache.
+ this.getCacheEntry(file, context.netProgress);
+ },
+
+ updateTabBody: function(infoBox, file, context)
+ {
+ // If the file is not loaded yet or the cache-entry is not available, bail out.
+ if (!file.loaded || !file.cacheEntry)
+ return;
+
+ var tab = infoBox.selectedTab;
+ var tabBody = infoBox.getElementsByClassName("netInfoCacheText").item(0);
+ if (!Css.hasClass(tab, "netInfoCacheTab") || tabBody.updated)
+ return;
+
+ // The UI update should happen only once so, set this flag.
+ tabBody.updated = true;
+
+ // Render basic body structure (table).
+ cacheBodyTag.replace({}, tabBody);
+
+ // Render cache information in the UI.
+ NetMonitor.NetInfoBody.insertHeaderRows(tabBody, file.cacheEntry, "Cache");
+ },
+
+ updateRequestTabBody: function(context, file)
+ {
+ var panel = context.getPanel("net");
+ var row = file.row;
+ if (!row)
+ return;
+
+ // If the row is already closed, bail out.
+ if (!Css.hasClass(row, "opened"))
+ return;
+
+ // Update the cache info body.
+ var infoRow = row.nextSibling;
+ var netInfoBox = infoRow.getElementsByClassName("netInfoBody").item(0);
+ if (!netInfoBox)
+ return;
+
+ this.updateTabBody(netInfoBox, file, context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ requestCacheEntry: function(file, netProgress)
+ {
+ // Bail out if the cache is disabled.
+ if (!NetMonitor.BrowserCache.isEnabled())
+ return;
+
+ // Don't request the cache entry twice.
+ if (file.cacheEntryRequested)
+ return;
+
+ // The actual request to the cache will be done as soon as the net panel entry
+ // is expanded by the user. Reading cache during the page load can influence
+ // the caching. See issue 6385.
+ file.cacheEntryRequested = true;
+
+ // In case of auto-exporters (such as NetExport) we need to fetch the
+ // cache entry automatically and not wait till the user touches the UI.
+ if (this.autoFetch)
+ {
+ var listener = this.getCacheEntry.bind(this, file, netProgress);
+ netProgress.context.setTimeout(listener, autoFetchDelay);
+ }
+ },
+
+ getCacheEntry: function(file, netProgress)
+ {
+ try
+ {
+ // Fetch data from the browser cache.
+ fetchCacheEntry(file, netProgress);
+ }
+ catch (exc)
+ {
+ if (exc.name != "NS_ERROR_CACHE_KEY_NOT_FOUND")
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("net.getCacheEntry; FAILS " + file.href, exc);
+ }
+ }
+ }
+});
+
+// ********************************************************************************************* //
+// Local Helpers
+
+function fetchCacheEntry(file, netProgress)
+{
+ if (file.cacheEntry)
+ return;
+
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.getCacheEntry; file.href: " + file.href);
+
+ // Initialize cache session.
+ if (!cacheSession)
+ {
+ var cacheService = CacheService.getService(Ci.nsICacheService);
+ cacheSession = cacheService.createSession("HTTP", Ci.nsICache.STORE_ANYWHERE, true);
+ cacheSession.doomEntriesIfExpired = false;
+ }
+
+ cacheSession.asyncOpenCacheEntry(file.href, Ci.nsICache.ACCESS_READ,
+ {
+ onCacheEntryAvailable: function(descriptor, accessGranted, status)
+ {
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.onCacheEntryAvailable; file.href: " + file.href);
+
+ if (descriptor)
+ onDescriptorAvailable(netProgress, file, descriptor);
+
+ getCachedHeaders(file);
+ }
+ });
+}
+
+function onDescriptorAvailable(netProgress, file, descriptor)
+{
+ if (file.size <= 0)
+ file.size = descriptor.dataSize;
+
+ if (descriptor.lastModified && descriptor.lastFetched &&
+ descriptor.lastModified < Math.floor(file.startTime/1000))
+ {
+ file.fromCache = true;
+ }
+
+ file.cacheEntry =
+ [
+ {
+ name: "Last Modified",
+ value: NetUtils.getDateFromSeconds(descriptor.lastModified)
+ },
+ {
+ name: "Last Fetched",
+ value: NetUtils.getDateFromSeconds(descriptor.lastFetched)
+ },
+ {
+ name: "Expires",
+ value: NetUtils.getDateFromSeconds(descriptor.expirationTime)
+ },
+ {
+ name: "Data Size",
+ value: descriptor.dataSize
+ },
+ {
+ name: "Fetch Count",
+ value: descriptor.fetchCount
+ },
+ {
+ name: "Device",
+ value: descriptor.deviceID
+ }
+ ];
+
+ try
+ {
+ // Get contentType from the cache.
+ var value = descriptor.getMetaDataElement("response-head");
+ var contentType = getContentTypeFromResponseHead(value);
+ file.mimeType = NetUtils.getMimeType(contentType, file.href);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("net.onCacheEntryAvailable; EXCEPTION " + e, e);
+ }
+
+ descriptor.close();
+ netProgress.update(file);
+
+ // Update UI (in case the request/file is currently expanded)
+ NetCacheReader.updateRequestTabBody(netProgress.context, file);
+}
+
+function getCachedHeaders(file)
+{
+ // Cached headers are important only if the request comes from the cache.
+ if (!file.fromCache)
+ return;
+
+ // The request is containing cached headers now. These will be also displayed
+ // within the Net panel.
+ var cache = {};
+ NetUtils.getHttpHeaders(file.request, cache);
+ file.cachedResponseHeaders = cache.responseHeaders;
+}
+
+function getContentTypeFromResponseHead(value)
+{
+ var values = value.split("\r\n");
+ for (var i=0; i<values.length; i++)
+ {
+ var option = values[i].split(": ");
+ var headerName = option[0];
+ if (headerName && headerName.toLowerCase() == "content-type")
+ return option[1];
+ }
+}
+
+// ********************************************************************************************* //
+// Registration
+
+// xxxHonza: expose the module through NetMonitor namespace to avoid cycle dependency problem.
+// NetCacheReader module is used within NetProgress module, but can't be included there.
+NetMonitor.NetCacheReader = NetCacheReader;
+
+Firebug.registerModule(NetCacheReader);
+
+return NetCacheReader;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/net/netDebugger.js b/content/firebug/net/netDebugger.js
index 45fdeb1..b5127b7 100644
--- a/content/firebug/net/netDebugger.js
+++ b/content/firebug/net/netDebugger.js
@@ -1,255 +1,255 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/url",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/lib/array",
- "firebug/net/netUtils",
-],
-function(Obj, Firebug, Domplate, Locale, Events, Url, Css, Dom, Arr, NetUtils) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-
-var panelName = "net";
-
-// ********************************************************************************************* //
-// Breakpoints
-
-function NetBreakpointGroup()
-{
- this.breakpoints = [];
-}
-
-NetBreakpointGroup.prototype = Obj.extend(new Firebug.Breakpoint.BreakpointGroup(),
-{
- name: "netBreakpoints",
- title: Locale.$STR("net.label.XHR Breakpoints"),
-
- addBreakpoint: function(href)
- {
- this.breakpoints.push(new Breakpoint(href));
- },
-
- removeBreakpoint: function(href)
- {
- var bp = this.findBreakpoint(href);
- Arr.remove(this.breakpoints, bp);
- },
-
- matchBreakpoint: function(bp, args)
- {
- var href = args[0];
- return bp.href == href;
- }
-});
-
-// ********************************************************************************************* //
-
-function Breakpoint(href)
-{
- this.href = href;
- this.checked = true;
- this.condition = "";
- this.onEvaluateFails = Obj.bind(this.onEvaluateFails, this);
- this.onEvaluateSucceeds = Obj.bind(this.onEvaluateSucceeds, this);
-}
-
-Breakpoint.prototype =
-{
- evaluateCondition: function(context, file)
- {
- try
- {
- var scope = {};
-
- var params = file.urlParams;
- for (var i=0; params && i<params.length; i++)
- {
- var param = params[i];
- scope[param.name] = param.value;
- }
-
- scope["$postBody"] = NetUtils.getPostText(file, context);
-
- // The properties of scope are all strings; we pass them in then
- // unpack them using 'with'. The function is called immediately.
- var expr = "(function (){var scope = " + JSON.stringify(scope) +
- "; with (scope) { return " + this.condition + ";}})();";
-
- // The callbacks will set this if the condition is true or if the eval faults.
- delete context.breakingCause;
-
- Firebug.CommandLine.evaluate(expr, context, null, context.window,
- this.onEvaluateSucceeds, this.onEvaluateFails );
-
- if (FBTrace.DBG_NET)
- {
- FBTrace.sysout("net.evaluateCondition", {expr: expr, scope: scope,
- json: JSON.stringify(scope)});
- }
-
- return !!context.breakingCause;
- }
- catch (err)
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.evaluateCondition; EXCEPTION "+err, err);
- }
-
- return false;
- },
-
- onEvaluateSucceeds: function(result, context)
- {
- // Don't break if the result is false.
- if (!result)
- return;
-
- context.breakingCause = {
- title: Locale.$STR("net.Break On XHR"),
- message: this.condition
- };
- },
-
- onEvaluateFails: function(result, context)
- {
- // Break if there is an error when evaluating the condition (to display the error).
- context.breakingCause = {
- title: Locale.$STR("net.Break On XHR"),
- message: "Breakpoint condition evaluation fails ",
- prevValue: this.condition,
- newValue:result
- };
- }
-};
-
-// ********************************************************************************************* //
-// Breakpoint UI
-
-with (Domplate) {
-var BreakpointRep = domplate(Firebug.Rep,
-{
- inspectable: false,
-
- tag:
- DIV({"class": "breakpointRow focusRow", $disabled: "$bp|isDisabled", _repObject: "$bp",
- role: "option", "aria-checked": "$bp.checked"},
- DIV({"class": "breakpointBlockHead"},
- INPUT({"class": "breakpointCheckbox", type: "checkbox",
- _checked: "$bp.checked", tabindex: "-1", onclick: "$onEnable"}),
- SPAN({"class": "breakpointName", title: "$bp|getTitle"}, "$bp|getName"),
- SPAN({"class": "closeButton", onclick: "$onRemove"})
- ),
- DIV({"class": "breakpointCondition"},
- SPAN("$bp.condition")
- )
- ),
-
- getTitle: function(bp)
- {
- return bp.href;
- },
-
- getName: function(bp)
- {
- return Url.getFileName(bp.href);
- },
-
- isDisabled: function(bp)
- {
- return !bp.checked;
- },
-
- onRemove: function(event)
- {
- Events.cancelEvent(event);
-
- if (!Css.hasClass(event.target, "closeButton"))
- return;
-
- var bpPanel = Firebug.getElementPanel(event.target);
- var context = bpPanel.context;
-
- // Remove from list of breakpoints.
- var row = Dom.getAncestorByClass(event.target, "breakpointRow");
- var bp = row.repObject;
- context.netProgress.breakpoints.removeBreakpoint(bp.href);
-
- bpPanel.refresh();
-
- var panel = context.getPanel(panelName, true);
- if (!panel)
- return;
-
- panel.enumerateRequests(function(file)
- {
- if (file.getFileURL() == bp.href)
- {
- file.row.removeAttribute("breakpoint");
- file.row.removeAttribute("disabledBreakpoint");
- }
- });
- },
-
- onEnable: function(event)
- {
- var checkBox = event.target;
- var bpRow = Dom.getAncestorByClass(checkBox, "breakpointRow");
-
- if (checkBox.checked)
- {
- Css.removeClass(bpRow, "disabled");
- bpRow.setAttribute("aria-checked", "true");
- }
- else
- {
- Css.setClass(bpRow, "disabled");
- bpRow.setAttribute("aria-checked", "false");
- }
-
- var bp = bpRow.repObject;
- bp.checked = checkBox.checked;
-
- var bpPanel = Firebug.getElementPanel(event.target);
- var context = bpPanel.context;
-
- var panel = context.getPanel(panelName, true);
- if (!panel)
- return;
-
- panel.enumerateRequests(function(file)
- {
- if (file.getFileURL() == bp.href)
- file.row.setAttribute("disabledBreakpoint", bp.checked ? "false" : "true");
- });
- },
-
- supportsObject: function(object, type)
- {
- return object instanceof Breakpoint;
- }
-});
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerRep(BreakpointRep);
-
-return {
- NetBreakpointGroup: NetBreakpointGroup
-};
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/url",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/lib/array",
+ "firebug/net/netUtils",
+],
+function(Obj, Firebug, Domplate, Locale, Events, Url, Css, Dom, Arr, NetUtils) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+
+var panelName = "net";
+
+// ********************************************************************************************* //
+// Breakpoints
+
+function NetBreakpointGroup()
+{
+ this.breakpoints = [];
+}
+
+NetBreakpointGroup.prototype = Obj.extend(new Firebug.Breakpoint.BreakpointGroup(),
+{
+ name: "netBreakpoints",
+ title: Locale.$STR("net.label.XHR Breakpoints"),
+
+ addBreakpoint: function(href)
+ {
+ this.breakpoints.push(new Breakpoint(href));
+ },
+
+ removeBreakpoint: function(href)
+ {
+ var bp = this.findBreakpoint(href);
+ Arr.remove(this.breakpoints, bp);
+ },
+
+ matchBreakpoint: function(bp, args)
+ {
+ var href = args[0];
+ return bp.href == href;
+ }
+});
+
+// ********************************************************************************************* //
+
+function Breakpoint(href)
+{
+ this.href = href;
+ this.checked = true;
+ this.condition = "";
+ this.onEvaluateFails = Obj.bind(this.onEvaluateFails, this);
+ this.onEvaluateSucceeds = Obj.bind(this.onEvaluateSucceeds, this);
+}
+
+Breakpoint.prototype =
+{
+ evaluateCondition: function(context, file)
+ {
+ try
+ {
+ var scope = {};
+
+ var params = file.urlParams;
+ for (var i=0; params && i<params.length; i++)
+ {
+ var param = params[i];
+ scope[param.name] = param.value;
+ }
+
+ scope["$postBody"] = NetUtils.getPostText(file, context);
+
+ // The properties of scope are all strings; we pass them in then
+ // unpack them using 'with'. The function is called immediately.
+ var expr = "(function (){var scope = " + JSON.stringify(scope) +
+ "; with (scope) { return " + this.condition + ";}})();";
+
+ // The callbacks will set this if the condition is true or if the eval faults.
+ delete context.breakingCause;
+
+ Firebug.CommandLine.evaluate(expr, context, null, context.window,
+ this.onEvaluateSucceeds, this.onEvaluateFails );
+
+ if (FBTrace.DBG_NET)
+ {
+ FBTrace.sysout("net.evaluateCondition", {expr: expr, scope: scope,
+ json: JSON.stringify(scope)});
+ }
+
+ return !!context.breakingCause;
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.evaluateCondition; EXCEPTION "+err, err);
+ }
+
+ return false;
+ },
+
+ onEvaluateSucceeds: function(result, context)
+ {
+ // Don't break if the result is false.
+ if (!result)
+ return;
+
+ context.breakingCause = {
+ title: Locale.$STR("net.Break On XHR"),
+ message: this.condition
+ };
+ },
+
+ onEvaluateFails: function(result, context)
+ {
+ // Break if there is an error when evaluating the condition (to display the error).
+ context.breakingCause = {
+ title: Locale.$STR("net.Break On XHR"),
+ message: "Breakpoint condition evaluation fails ",
+ prevValue: this.condition,
+ newValue:result
+ };
+ }
+};
+
+// ********************************************************************************************* //
+// Breakpoint UI
+
+with (Domplate) {
+var BreakpointRep = domplate(Firebug.Rep,
+{
+ inspectable: false,
+
+ tag:
+ DIV({"class": "breakpointRow focusRow", $disabled: "$bp|isDisabled", _repObject: "$bp",
+ role: "option", "aria-checked": "$bp.checked"},
+ DIV({"class": "breakpointBlockHead"},
+ INPUT({"class": "breakpointCheckbox", type: "checkbox",
+ _checked: "$bp.checked", tabindex: "-1", onclick: "$onEnable"}),
+ SPAN({"class": "breakpointName", title: "$bp|getTitle"}, "$bp|getName"),
+ SPAN({"class": "closeButton", onclick: "$onRemove"})
+ ),
+ DIV({"class": "breakpointCondition"},
+ SPAN("$bp.condition")
+ )
+ ),
+
+ getTitle: function(bp)
+ {
+ return bp.href;
+ },
+
+ getName: function(bp)
+ {
+ return Url.getFileName(bp.href);
+ },
+
+ isDisabled: function(bp)
+ {
+ return !bp.checked;
+ },
+
+ onRemove: function(event)
+ {
+ Events.cancelEvent(event);
+
+ if (!Css.hasClass(event.target, "closeButton"))
+ return;
+
+ var bpPanel = Firebug.getElementPanel(event.target);
+ var context = bpPanel.context;
+
+ // Remove from list of breakpoints.
+ var row = Dom.getAncestorByClass(event.target, "breakpointRow");
+ var bp = row.repObject;
+ context.netProgress.breakpoints.removeBreakpoint(bp.href);
+
+ bpPanel.refresh();
+
+ var panel = context.getPanel(panelName, true);
+ if (!panel)
+ return;
+
+ panel.enumerateRequests(function(file)
+ {
+ if (file.getFileURL() == bp.href)
+ {
+ file.row.removeAttribute("breakpoint");
+ file.row.removeAttribute("disabledBreakpoint");
+ }
+ });
+ },
+
+ onEnable: function(event)
+ {
+ var checkBox = event.target;
+ var bpRow = Dom.getAncestorByClass(checkBox, "breakpointRow");
+
+ if (checkBox.checked)
+ {
+ Css.removeClass(bpRow, "disabled");
+ bpRow.setAttribute("aria-checked", "true");
+ }
+ else
+ {
+ Css.setClass(bpRow, "disabled");
+ bpRow.setAttribute("aria-checked", "false");
+ }
+
+ var bp = bpRow.repObject;
+ bp.checked = checkBox.checked;
+
+ var bpPanel = Firebug.getElementPanel(event.target);
+ var context = bpPanel.context;
+
+ var panel = context.getPanel(panelName, true);
+ if (!panel)
+ return;
+
+ panel.enumerateRequests(function(file)
+ {
+ if (file.getFileURL() == bp.href)
+ file.row.setAttribute("disabledBreakpoint", bp.checked ? "false" : "true");
+ });
+ },
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof Breakpoint;
+ }
+});
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerRep(BreakpointRep);
+
+return {
+ NetBreakpointGroup: NetBreakpointGroup
+};
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/net/netMonitor.js b/content/firebug/net/netMonitor.js
index 38fcbf2..35581e1 100644
--- a/content/firebug/net/netMonitor.js
+++ b/content/firebug/net/netMonitor.js
@@ -1,811 +1,811 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/firefox",
- "firebug/lib/options",
- "firebug/chrome/window",
- "firebug/lib/string",
- "firebug/lib/persist",
- "firebug/net/httpActivityObserver",
- "firebug/net/requestObserver",
- "firebug/net/netProgress",
- "firebug/lib/http",
- "firebug/net/netUtils",
- "firebug/net/netDebugger",
- "firebug/lib/events",
- "firebug/lib/locale",
- "firebug/trace/traceListener",
- "firebug/trace/traceModule"
-],
-function(Obj, Firebug, Firefox, Options, Win, Str, Persist, NetHttpActivityObserver,
- HttpRequestObserver, NetProgress, Http, NetUtils, NetDebugger, Events, Locale,
- TraceListener, TraceModule) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-
-var panelName = "net";
-
-var startFile = NetProgress.prototype.startFile;
-var openingFile = NetProgress.prototype.openingFile;
-var requestedFile = NetProgress.prototype.requestedFile;
-var respondedFile = NetProgress.prototype.respondedFile;
-var respondedCacheFile = NetProgress.prototype.respondedCacheFile;
-var windowPaint = NetProgress.prototype.windowPaint;
-var timeStamp = NetProgress.prototype.timeStamp;
-var windowLoad = NetProgress.prototype.windowLoad;
-var contentLoad = NetProgress.prototype.contentLoad;
-
-// ********************************************************************************************* //
-
-/**
- * @module Represents a module object for the Net panel. This object is derived
- * from <code>Firebug.ActivableModule</code> in order to support activation (enable/disable).
- * This allows to avoid (performance) expensive features if the functionality is not necessary
- * for the user.
- */
-Firebug.NetMonitor = Obj.extend(Firebug.ActivableModule,
-/** @lends Firebug.NetMonitor */
-{
- dispatchName: "netMonitor",
- maxQueueRequests: 500,
- contexts: new Array(),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Module
-
- initialize: function()
- {
- Firebug.ActivableModule.initialize.apply(this, arguments);
-
- this.traceNetListener = new TraceListener("net.", "DBG_NET", true);
- this.traceActivityListener = new TraceListener("activityObserver.",
- "DBG_ACTIVITYOBSERVER", true);
-
- TraceModule.addListener(this.traceNetListener);
- TraceModule.addListener(this.traceActivityListener);
-
- Firebug.connection.addListener(this.DebuggerListener);
-
- NetHttpObserver.registerObserver();
- },
-
- initializeUI: function()
- {
- Firebug.ActivableModule.initializeUI.apply(this, arguments);
-
- // Initialize max limit for logged requests.
- Firebug.NetMonitor.updateMaxLimit();
-
- // Synchronize UI buttons with the current filter.
- this.syncFilterButtons(Firebug.chrome);
-
- // Initialize filter button tooltips
- var doc = Firebug.chrome.window.document;
- var filterButtons = doc.getElementsByClassName("fbNetFilter");
- for (var i=0, len=filterButtons.length; i<len; ++i)
- {
- if (filterButtons[i].id != "fbNetFilter-all")
- {
- filterButtons[i].tooltipText = Locale.$STRF("firebug.labelWithShortcut",
- [filterButtons[i].tooltipText, Locale.$STR("tooltip.multipleFiltersHint")]);
- }
- }
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.NetMonitor.initializeUI; enabled: " + this.isAlwaysEnabled());
- },
-
- shutdown: function()
- {
- Firebug.ActivableModule.shutdown.apply(this, arguments);
-
- TraceModule.removeListener(this.traceNetListener);
- TraceModule.removeListener(this.traceActivityListener);
-
- Firebug.connection.removeListener(this.DebuggerListener);
-
- NetHttpObserver.unregisterObserver();
- },
-
- initContext: function(context, persistedState)
- {
- Firebug.ActivableModule.initContext.apply(this, arguments);
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.initContext for: " + context.getName());
-
- // XXXjjb changed test to instanceof because jetpack uses fake window objects
- if (context.window && context.window instanceof Window)
- {
- var win = context.window;
-
- var onWindowPaintHandler = function()
- {
- if (context.netProgress)
- context.netProgress.post(windowPaint, [win, NetUtils.now()]);
- };
-
- if (Options.get("netShowPaintEvents"))
- {
- context.addEventListener(win, "MozAfterPaint", onWindowPaintHandler, false);
- }
-
- // Register "load" listener in order to track window load time.
- var onWindowLoadHandler = function()
- {
- if (context.netProgress)
- context.netProgress.post(windowLoad, [win, NetUtils.now()]);
- context.removeEventListener(win, "load", onWindowLoadHandler, true);
-
- context.setTimeout(function()
- {
- if (win && !win.closed)
- {
- context.removeEventListener(win, "MozAfterPaint", onWindowPaintHandler, false);
- }
- }, 2000); //xxxHonza: this should be customizable using preferences.
- };
- context.addEventListener(win, "load", onWindowLoadHandler, true);
-
- // Register "DOMContentLoaded" listener to track timing.
- var onContentLoadHandler = function()
- {
- if (context.netProgress)
- context.netProgress.post(contentLoad, [win, NetUtils.now()]);
- context.removeEventListener(win, "DOMContentLoaded", onContentLoadHandler, true);
- };
-
- context.addEventListener(win, "DOMContentLoaded", onContentLoadHandler, true);
- }
-
- if (Firebug.NetMonitor.isAlwaysEnabled())
- monitorContext(context);
-
- if (context.netProgress)
- {
- // Load existing breakpoints
- var persistedPanelState = Persist.getPersistedState(context, panelName);
- if (persistedPanelState.breakpoints)
- context.netProgress.breakpoints = persistedPanelState.breakpoints;
- }
- },
-
- showContext: function(browser, context)
- {
- Firebug.ActivableModule.showContext.apply(this, arguments);
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.showContext; " + (context ? context.getName() : "NULL") +
- ", temp contexts: " + getTempContextCount());
- },
-
- loadedContext: function(context)
- {
- var tabId = Win.getWindowProxyIdForWindow(context.browser.contentWindow);
- delete this.contexts[tabId];
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.loadedContext; temp contexts (" + getTempContextCount() + ")");
-
- var netProgress = context.netProgress;
- if (netProgress)
- {
- netProgress.loaded = true;
-
- // Set Page title and id into all document objects.
- for (var i=0; i<netProgress.documents.length; i++)
- {
- var doc = netProgress.documents[i];
- doc.id = context.uid;
- doc.title = NetUtils.getPageTitle(context);
- }
- }
- },
-
- destroyContext: function(context, persistedState)
- {
- Firebug.ActivableModule.destroyContext.apply(this, arguments);
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.destroyContext for: " +
- (context ? context.getName() : "No context"));
-
- if (context.netProgress)
- {
- // Remember existing breakpoints.
- var persistedPanelState = Persist.getPersistedState(context, panelName);
- persistedPanelState.breakpoints = context.netProgress.breakpoints;
- }
-
- if (Firebug.NetMonitor.isAlwaysEnabled())
- unmonitorContext(context);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Activable Module
-
- onObserverChange: function(observer)
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.onObserverChange; hasObservers: " + this.hasObservers() +
- ", Firebug suspended: " + Firebug.getSuspended());
-
- if (!Firebug.getSuspended()) // then Firebug is in action
- this.onResumeFirebug(); // and we need to test to see if we need to addObserver
- },
-
- onResumeFirebug: function()
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.onResumeFirebug; enabled: " + Firebug.NetMonitor.isAlwaysEnabled());
-
- // Resume only if NetPanel is enabled and so, observing NetMonitor module.
- if (Firebug.NetMonitor.isAlwaysEnabled())
- {
- NetHttpActivityObserver.registerObserver();
- Firebug.connection.eachContext(monitorContext);
- }
- else
- {
- // If the Net panel is not enabled, we need to make sure the unmonitorContext
- // is executed and so, the start button (aka Firebug status bar icons) is
- // properly updated.
- NetHttpActivityObserver.unregisterObserver();
- Firebug.connection.eachContext(unmonitorContext);
- }
- },
-
- onSuspendFirebug: function()
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.onSuspendFirebug; enabled: " + Firebug.NetMonitor.isAlwaysEnabled());
-
- NetHttpActivityObserver.unregisterObserver();
- Firebug.connection.eachContext(unmonitorContext);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // User Actions
-
- clear: function(context)
- {
- // The user pressed a Clear button so, remove content of the panel...
- var panel = context.getPanel(panelName, true);
- if (panel)
- panel.clear();
- },
-
- onToggleFilter: function(event, context, filterCategory)
- {
- if (!context.netProgress)
- return;
-
- var filterCategories = [];
- if (Events.isControl(event) && filterCategory != "all")
- {
- filterCategories = Options.get("netFilterCategories").split(" ");
- var filterCategoryIndex = filterCategories.indexOf(filterCategory);
- if (filterCategoryIndex == -1)
- filterCategories.push(filterCategory);
- else
- filterCategories.splice(filterCategoryIndex, 1);
- }
- else
- {
- filterCategories.push(filterCategory);
- }
-
- // Remove "all" filter in case several filters are selected
- if (filterCategories.length > 1)
- {
- var allIndex = filterCategories.indexOf("all");
- if (allIndex != -1)
- filterCategories.splice(allIndex, 1);
- }
-
- // If no filter categories are selected, use the default
- if (filterCategories.length == 0)
- filterCategories = Options.getDefault("netFilterCategories").split(" ");
-
- Options.set("netFilterCategories", filterCategories.join(" "));
-
- this.syncFilterButtons(Firebug.chrome);
-
- Events.dispatch(Firebug.NetMonitor.fbListeners, "onFiltersSet", [filterCategories]);
- },
-
- syncFilterButtons: function(chrome)
- {
- var filterCategories = new Set();
- Options.get("netFilterCategories").split(" ").forEach(function(element)
- {
- filterCategories.add(element);
- });
- var doc = chrome.window.document;
- var buttons = doc.getElementsByClassName("fbNetFilter");
-
- for (var i=0, len=buttons.length; i<len; ++i)
- {
- var filterCategory = buttons[i].id.substr(buttons[i].id.search("-") + 1);
- buttons[i].checked = filterCategories.has(filterCategory);
- }
- },
-
- togglePersist: function(context)
- {
- var panel = context.getPanel(panelName);
- panel.persistContent = panel.persistContent ? false : true;
-
- Firebug.chrome.setGlobalAttribute("cmd_firebug_togglePersistNet", "checked",
- panel.persistContent);
- },
-
- updateOption: function(name, value)
- {
- if (name == "net.logLimit")
- this.updateMaxLimit();
- },
-
- updateMaxLimit: function()
- {
- var value = Options.get("net.logLimit");
- this.maxQueueRequests = value ? value : this.maxQueueRequests;
- },
-
- addTimeStamp: function(context, time, label, color)
- {
- if (context.netProgress)
- context.netProgress.post(timeStamp, [context.window, time, label, color]);
- }
-});
-
-// ********************************************************************************************* //
-
-// HTTP Observer
-
-// HTTP listener - based on HttpRequestObserver module
-// This observer is used for observing the first document http-on-modify-request
-// and http-on-examine-response events, which are fired before the context
-// is initialized (initContext method call). Without this observer this events
-// would be lost and the time measuring would be wrong.
-//
-// This observer stores these early requests in helper array (contexts) and maps
-// them to appropriate tab - initContext then uses the array in order to access it.
-
-var NetHttpObserver =
-{
- dispatchName: "NetHttpObserver",
- registered: false,
-
- registerObserver: function()
- {
- if (this.registered)
- return;
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.NetHttpObserver.register;");
-
- HttpRequestObserver.addObserver(this, "firebug-http-event", false);
- this.registered = true;
- },
-
- unregisterObserver: function()
- {
- if (!this.registered)
- return;
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.NetHttpObserver.unregister;");
-
- HttpRequestObserver.removeObserver(this, "firebug-http-event");
- this.registered = false;
- },
-
- /* nsIObserve */
- observe: function(subject, topic, data)
- {
- if (!Firebug.NetMonitor.isAlwaysEnabled())
- return;
-
- try
- {
- if (FBTrace.DBG_NET_EVENTS)
- {
- FBTrace.sysout("net.events.observe " + (topic ? topic.toUpperCase() : topic) +
- ", " + ((subject instanceof Ci.nsIRequest) ? Http.safeGetRequestName(subject) : "") +
- ", Browser: " + Firebug.chrome.window.document.title);
- }
-
- if (!(subject instanceof Ci.nsIHttpChannel))
- return;
-
- var win = Http.getWindowForRequest(subject);
- var context = Firebug.connection.getContextByWindow(win);
-
- // The context doesn't have to exist yet. In such cases a temp Net context is
- // created within onModifyRequest.
-
- // Some requests are not associated with any page (e.g. favicon).
- // These are ignored as Net panel shows only page requests.
- var tabId = win ? Win.getWindowProxyIdForWindow(win) : null;
- if (!tabId)
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.observe NO TAB " + Http.safeGetRequestName(subject) +
- ", " + tabId + ", " + win);
- return;
- }
-
- if (topic == "http-on-modify-request")
- this.onModifyRequest(subject, win, tabId, context);
- else if (topic == "http-on-examine-response")
- this.onExamineResponse(subject, win, tabId, context);
- else if (topic == "http-on-examine-cached-response")
- this.onExamineCachedResponse(subject, win, tabId, context);
- else if (topic == "http-on-opening-request")
- this.openingFile(subject, win, tabId, context);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("net.observe EXCEPTION", err);
- }
- },
-
- onModifyRequest: function(request, win, tabId, context)
- {
- var name = request.URI.asciiSpec;
- var origName = request.originalURI.asciiSpec;
- var isRedirect = (name != origName);
-
- // We only need to create a new context if this is a top document uri (not frames).
- if ((request.loadFlags & Ci.nsIChannel.LOAD_DOCUMENT_URI) &&
- request.loadGroup && request.loadGroup.groupObserver &&
- win == win.parent && !isRedirect)
- {
- var browser = Firefox.getBrowserForWindow(win);
-
- if (!Firebug.TabWatcher.shouldCreateContext(browser, name, null))
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.onModifyRequest; Activation logic says don't create " +
- "temp context for: " + name);
- return;
- }
-
- // Create a new network context prematurely.
- if (!Firebug.NetMonitor.contexts[tabId])
- {
- Firebug.NetMonitor.contexts[tabId] = createNetProgress(null);
-
- // OK, we definitely want to watch this page load, temporary context is created
- // so, make sure the activity-observer is registered and we have detailed
- // timing info for this first document request.
- NetHttpActivityObserver.registerObserver();
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.onModifyRequest; Temp Context created (" +
- getTempContextCount() + "), " + tabId);
- }
- }
-
- var networkContext = Firebug.NetMonitor.contexts[tabId];
- if (!networkContext)
- networkContext = context ? context.netProgress : null;
-
- if (networkContext)
- {
- networkContext.post(startFile, [request, win]);
-
- // We need to track the request now since the activity observer is not used in case
- // the response comes from BF cache. If it's a regular HTTP request the timing
- // is properly overridden by the activity observer (ACTIVITY_SUBTYPE_REQUEST_HEADER).
- // Even if the Firebug.netShowBFCacheResponses is false now, the user could
- // switch it on later.
- var xhr = Http.isXHR(request);
- networkContext.post(requestedFile, [request, NetUtils.now(), win, xhr]);
- }
- },
-
- onExamineResponse: function(request, win, tabId, context)
- {
- var networkContext = Firebug.NetMonitor.contexts[tabId];
- if (!networkContext)
- networkContext = context ? context.netProgress : null;
-
- if (!networkContext)
- return;
-
- var info = new Object();
- info.responseStatus = request.responseStatus;
- info.responseStatusText = request.responseStatusText;
-
- // Initialize info.postText property.
- info.request = request;
- NetUtils.getPostText(info, context);
-
- // Get response headers now. They could be replaced by cached headers later
- // (if the response is coming from the cache).
- NetUtils.getHttpHeaders(request, info, context);
-
- if (FBTrace.DBG_NET && info.postText)
- FBTrace.sysout("net.onExamineResponse, POST data: " + info.postText, info);
-
- networkContext.post(respondedFile, [request, NetUtils.now(), info]);
-
- // Make sure to track the first document response.
- //Firebug.TabCacheModel.registerStreamListener(request, win, true);
- },
-
- onExamineCachedResponse: function(request, win, tabId, context)
- {
- var networkContext = Firebug.NetMonitor.contexts[tabId];
- if (!networkContext)
- networkContext = context ? context.netProgress : null;
-
- if (!networkContext)
- {
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.onExamineCachedResponse; No CONTEXT for:" +
- Http.safeGetRequestName(request));
- return;
- }
-
- var info = new Object();
- info.responseStatus = request.responseStatus;
- info.responseStatusText = request.responseStatusText;
-
- // Initialize info.postText property.
- info.request = request;
- NetUtils.getPostText(info, context);
-
- networkContext.post(respondedCacheFile, [request, NetUtils.now(), info]);
- },
-
- openingFile: function(request, win, tabId, context)
- {
- var networkContext = Firebug.NetMonitor.contexts[tabId];
- if (!networkContext)
- networkContext = context ? context.netProgress : null;
-
- if (!networkContext)
- return;
-
- networkContext.post(openingFile, [request, win]);
- },
-
- /* nsISupports */
- QueryInterface: function(iid)
- {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIObserver)) {
- return this;
- }
-
- throw Cr.NS_ERROR_NO_INTERFACE;
- }
-};
-
-// ********************************************************************************************* //
-// Monitoring start/stop
-
-function monitorContext(context)
-{
- if (context.netProgress)
- return;
-
- var networkContext = null;
-
- // Use an existing context associated with the browser tab if any
- // or create a pure new network context.
- if (context.window)
- {
- var tabId = Win.getWindowProxyIdForWindow(context.window);
- networkContext = Firebug.NetMonitor.contexts[tabId];
- }
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.monitorContext; (" + networkContext + ") " +
- tabId + ", " + context.getName());
-
- if (networkContext)
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.monitorContext; Use temporary context: " + tabId);
-
- networkContext.context = context;
- delete Firebug.NetMonitor.contexts[tabId];
- }
- else
- {
- if (FBTrace.DBG_NET)
- {
- FBTrace.sysout("net.monitorContext; create network monitor context object for: " +
- tabId);
- }
-
- networkContext = createNetProgress(context);
- }
-
- // Register activity-distributor observer if available (#488270)
- //NetHttpActivityObserver.registerObserver();
-
- context.netProgress = networkContext;
-
- // Add cache listener so, net panel has always fresh responses.
- // Safe to call multiple times.
- networkContext.cacheListener.register(context.sourceCache);
-
- // Activate net panel sub-context.
- var panel = context.getPanel(panelName);
- context.netProgress.activate(panel);
-
- // Display info message, but only if the panel isn't just reloaded or Persist == true.
- if (!context.persistedState)
- panel.insertActivationMessage();
-
- updateStartButton(true);
-}
-
-function unmonitorContext(context)
-{
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.unmonitorContext; (" +
- (context ? context.netProgress : "netProgress == NULL") + ") " +
- (context ? context.getName() : "no context"));
-
- var netProgress = context ? context.netProgress : null;
- if (!netProgress)
- return;
-
- // Since the print into the UI is done by timeout asynchronously,
- // make sure there are no requests left.
- var panel = context.getPanel(panelName, true);
- if (panel)
- panel.updateLayout();
-
- //NetHttpActivityObserver.unregisterObserver();
-
- // Remove cache listener. Safe to call multiple times.
- netProgress.cacheListener.unregister();
-
- // Deactivate net sub-context.
- context.netProgress.activate(null);
-
- updateStartButton(false);
-
- // And finaly destroy the net panel sub context.
- delete context.netProgress;
-}
-
-function updateStartButton(enabled)
-{
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.updateStartButton; update start button, enabled: " + enabled);
-
- var firebugStatus = Firefox.getElementById("firebugStatus");
-
- // Update status
- if (enabled)
- firebugStatus.setAttribute("net", "on");
- else
- firebugStatus.removeAttribute("net");
-
- // Update start button tooltip
- if (Firebug.StartButton)
- Firebug.StartButton.resetTooltip();
- else
- FBTrace.sysout("net.updateStartButton; ERROR No Firebug.StartButton ?");
-}
-
-function createNetProgress(context)
-{
- var netProgress = new NetProgress(context);
- netProgress.cacheListener = new NetCacheListener(netProgress);
- netProgress.breakpoints = new NetDebugger.NetBreakpointGroup();
- return netProgress;
-}
-
-// ********************************************************************************************* //
-// TabCache Listener
-
-/**
- * TabCache listner implementation. Net panel uses this listner to remember all
- * responses stored into the cache. There can be more requests to the same URL that
- * returns different responses. The Net panels must remember all of them (tab cache
- * remembers only the last one)
- */
-function NetCacheListener(netProgress)
-{
- this.netProgress = netProgress;
- this.cache = null;
-}
-
-NetCacheListener.prototype =
-{
- dispatchName: "NetCacheListener",
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Registration
-
- register: function(cache)
- {
- if (this.cache)
- return;
-
- this.cache = cache;
- this.cache.addListener(this);
- },
-
- unregister: function()
- {
- if (!this.cache)
- return;
-
- this.cache.removeListener(this);
- this.cache = null;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Cache Listener
-
- onStartRequest: function(context, request)
- {
- // Keep in mind that the file object (representing the request) doesn't have to be
- // created at this moment (top document request).
- },
-
- onStopRequest: function(context, request, responseText)
- {
- // Remember the response for this request.
- var file = this.netProgress.getRequestFile(request, null, true);
- if (file && responseText)
- file.responseText = responseText;
-
- Events.dispatch(Firebug.NetMonitor.fbListeners, "onResponseBody", [context, file]);
- }
-};
-
-// ********************************************************************************************* //
-// Debugger Listener
-
-Firebug.NetMonitor.DebuggerListener =
-{
- getBreakpoints: function(context, groups)
- {
- if (context.netProgress && !context.netProgress.breakpoints.isEmpty())
- groups.push(context.netProgress.breakpoints);
- },
-};
-
-// ********************************************************************************************* //
-// Tracing support
-
-function getTempContextCount()
-{
- var counter = 0;
- for (var p in Firebug.NetMonitor.contexts)
- counter++;
- return counter;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-// Keep compatibility with existing XUL based extensions
-// deprecated
-Firebug.NetMonitor.Utils = NetUtils;
-
-Firebug.registerActivableModule(Firebug.NetMonitor);
-
-return Firebug.NetMonitor;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/firefox",
+ "firebug/lib/options",
+ "firebug/chrome/window",
+ "firebug/lib/string",
+ "firebug/lib/persist",
+ "firebug/net/httpActivityObserver",
+ "firebug/net/requestObserver",
+ "firebug/net/netProgress",
+ "firebug/lib/http",
+ "firebug/net/netUtils",
+ "firebug/net/netDebugger",
+ "firebug/lib/events",
+ "firebug/lib/locale",
+ "firebug/trace/traceListener",
+ "firebug/trace/traceModule"
+],
+function(Obj, Firebug, Firefox, Options, Win, Str, Persist, NetHttpActivityObserver,
+ HttpRequestObserver, NetProgress, Http, NetUtils, NetDebugger, Events, Locale,
+ TraceListener, TraceModule) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+
+var panelName = "net";
+
+var startFile = NetProgress.prototype.startFile;
+var openingFile = NetProgress.prototype.openingFile;
+var requestedFile = NetProgress.prototype.requestedFile;
+var respondedFile = NetProgress.prototype.respondedFile;
+var respondedCacheFile = NetProgress.prototype.respondedCacheFile;
+var windowPaint = NetProgress.prototype.windowPaint;
+var timeStamp = NetProgress.prototype.timeStamp;
+var windowLoad = NetProgress.prototype.windowLoad;
+var contentLoad = NetProgress.prototype.contentLoad;
+
+// ********************************************************************************************* //
+
+/**
+ * @module Represents a module object for the Net panel. This object is derived
+ * from <code>Firebug.ActivableModule</code> in order to support activation (enable/disable).
+ * This allows to avoid (performance) expensive features if the functionality is not necessary
+ * for the user.
+ */
+Firebug.NetMonitor = Obj.extend(Firebug.ActivableModule,
+/** @lends Firebug.NetMonitor */
+{
+ dispatchName: "netMonitor",
+ maxQueueRequests: 500,
+ contexts: new Array(),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Module
+
+ initialize: function()
+ {
+ Firebug.ActivableModule.initialize.apply(this, arguments);
+
+ this.traceNetListener = new TraceListener("net.", "DBG_NET", true);
+ this.traceActivityListener = new TraceListener("activityObserver.",
+ "DBG_ACTIVITYOBSERVER", true);
+
+ TraceModule.addListener(this.traceNetListener);
+ TraceModule.addListener(this.traceActivityListener);
+
+ Firebug.connection.addListener(this.DebuggerListener);
+
+ NetHttpObserver.registerObserver();
+ },
+
+ initializeUI: function()
+ {
+ Firebug.ActivableModule.initializeUI.apply(this, arguments);
+
+ // Initialize max limit for logged requests.
+ Firebug.NetMonitor.updateMaxLimit();
+
+ // Synchronize UI buttons with the current filter.
+ this.syncFilterButtons(Firebug.chrome);
+
+ // Initialize filter button tooltips
+ var doc = Firebug.chrome.window.document;
+ var filterButtons = doc.getElementsByClassName("fbNetFilter");
+ for (var i=0, len=filterButtons.length; i<len; ++i)
+ {
+ if (filterButtons[i].id != "fbNetFilter-all")
+ {
+ filterButtons[i].tooltipText = Locale.$STRF("firebug.labelWithShortcut",
+ [filterButtons[i].tooltipText, Locale.$STR("tooltip.multipleFiltersHint")]);
+ }
+ }
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.NetMonitor.initializeUI; enabled: " + this.isAlwaysEnabled());
+ },
+
+ shutdown: function()
+ {
+ Firebug.ActivableModule.shutdown.apply(this, arguments);
+
+ TraceModule.removeListener(this.traceNetListener);
+ TraceModule.removeListener(this.traceActivityListener);
+
+ Firebug.connection.removeListener(this.DebuggerListener);
+
+ NetHttpObserver.unregisterObserver();
+ },
+
+ initContext: function(context, persistedState)
+ {
+ Firebug.ActivableModule.initContext.apply(this, arguments);
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.initContext for: " + context.getName());
+
+ // XXXjjb changed test to instanceof because jetpack uses fake window objects
+ if (context.window && context.window instanceof Window)
+ {
+ var win = context.window;
+
+ var onWindowPaintHandler = function()
+ {
+ if (context.netProgress)
+ context.netProgress.post(windowPaint, [win, NetUtils.now()]);
+ };
+
+ if (Options.get("netShowPaintEvents"))
+ {
+ context.addEventListener(win, "MozAfterPaint", onWindowPaintHandler, false);
+ }
+
+ // Register "load" listener in order to track window load time.
+ var onWindowLoadHandler = function()
+ {
+ if (context.netProgress)
+ context.netProgress.post(windowLoad, [win, NetUtils.now()]);
+ context.removeEventListener(win, "load", onWindowLoadHandler, true);
+
+ context.setTimeout(function()
+ {
+ if (win && !win.closed)
+ {
+ context.removeEventListener(win, "MozAfterPaint", onWindowPaintHandler, false);
+ }
+ }, 2000); //xxxHonza: this should be customizable using preferences.
+ };
+ context.addEventListener(win, "load", onWindowLoadHandler, true);
+
+ // Register "DOMContentLoaded" listener to track timing.
+ var onContentLoadHandler = function()
+ {
+ if (context.netProgress)
+ context.netProgress.post(contentLoad, [win, NetUtils.now()]);
+ context.removeEventListener(win, "DOMContentLoaded", onContentLoadHandler, true);
+ };
+
+ context.addEventListener(win, "DOMContentLoaded", onContentLoadHandler, true);
+ }
+
+ if (Firebug.NetMonitor.isAlwaysEnabled())
+ monitorContext(context);
+
+ if (context.netProgress)
+ {
+ // Load existing breakpoints
+ var persistedPanelState = Persist.getPersistedState(context, panelName);
+ if (persistedPanelState.breakpoints)
+ context.netProgress.breakpoints = persistedPanelState.breakpoints;
+ }
+ },
+
+ showContext: function(browser, context)
+ {
+ Firebug.ActivableModule.showContext.apply(this, arguments);
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.showContext; " + (context ? context.getName() : "NULL") +
+ ", temp contexts: " + getTempContextCount());
+ },
+
+ loadedContext: function(context)
+ {
+ var tabId = Win.getWindowProxyIdForWindow(context.browser.contentWindow);
+ delete this.contexts[tabId];
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.loadedContext; temp contexts (" + getTempContextCount() + ")");
+
+ var netProgress = context.netProgress;
+ if (netProgress)
+ {
+ netProgress.loaded = true;
+
+ // Set Page title and id into all document objects.
+ for (var i=0; i<netProgress.documents.length; i++)
+ {
+ var doc = netProgress.documents[i];
+ doc.id = context.uid;
+ doc.title = NetUtils.getPageTitle(context);
+ }
+ }
+ },
+
+ destroyContext: function(context, persistedState)
+ {
+ Firebug.ActivableModule.destroyContext.apply(this, arguments);
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.destroyContext for: " +
+ (context ? context.getName() : "No context"));
+
+ if (context.netProgress)
+ {
+ // Remember existing breakpoints.
+ var persistedPanelState = Persist.getPersistedState(context, panelName);
+ persistedPanelState.breakpoints = context.netProgress.breakpoints;
+ }
+
+ if (Firebug.NetMonitor.isAlwaysEnabled())
+ unmonitorContext(context);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Activable Module
+
+ onObserverChange: function(observer)
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.onObserverChange; hasObservers: " + this.hasObservers() +
+ ", Firebug suspended: " + Firebug.getSuspended());
+
+ if (!Firebug.getSuspended()) // then Firebug is in action
+ this.onResumeFirebug(); // and we need to test to see if we need to addObserver
+ },
+
+ onResumeFirebug: function()
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.onResumeFirebug; enabled: " + Firebug.NetMonitor.isAlwaysEnabled());
+
+ // Resume only if NetPanel is enabled and so, observing NetMonitor module.
+ if (Firebug.NetMonitor.isAlwaysEnabled())
+ {
+ NetHttpActivityObserver.registerObserver();
+ Firebug.connection.eachContext(monitorContext);
+ }
+ else
+ {
+ // If the Net panel is not enabled, we need to make sure the unmonitorContext
+ // is executed and so, the start button (aka Firebug status bar icons) is
+ // properly updated.
+ NetHttpActivityObserver.unregisterObserver();
+ Firebug.connection.eachContext(unmonitorContext);
+ }
+ },
+
+ onSuspendFirebug: function()
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.onSuspendFirebug; enabled: " + Firebug.NetMonitor.isAlwaysEnabled());
+
+ NetHttpActivityObserver.unregisterObserver();
+ Firebug.connection.eachContext(unmonitorContext);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // User Actions
+
+ clear: function(context)
+ {
+ // The user pressed a Clear button so, remove content of the panel...
+ var panel = context.getPanel(panelName, true);
+ if (panel)
+ panel.clear();
+ },
+
+ onToggleFilter: function(event, context, filterCategory)
+ {
+ if (!context.netProgress)
+ return;
+
+ var filterCategories = [];
+ if (Events.isControl(event) && filterCategory != "all")
+ {
+ filterCategories = Options.get("netFilterCategories").split(" ");
+ var filterCategoryIndex = filterCategories.indexOf(filterCategory);
+ if (filterCategoryIndex == -1)
+ filterCategories.push(filterCategory);
+ else
+ filterCategories.splice(filterCategoryIndex, 1);
+ }
+ else
+ {
+ filterCategories.push(filterCategory);
+ }
+
+ // Remove "all" filter in case several filters are selected
+ if (filterCategories.length > 1)
+ {
+ var allIndex = filterCategories.indexOf("all");
+ if (allIndex != -1)
+ filterCategories.splice(allIndex, 1);
+ }
+
+ // If no filter categories are selected, use the default
+ if (filterCategories.length == 0)
+ filterCategories = Options.getDefault("netFilterCategories").split(" ");
+
+ Options.set("netFilterCategories", filterCategories.join(" "));
+
+ this.syncFilterButtons(Firebug.chrome);
+
+ Events.dispatch(Firebug.NetMonitor.fbListeners, "onFiltersSet", [filterCategories]);
+ },
+
+ syncFilterButtons: function(chrome)
+ {
+ var filterCategories = new Set();
+ Options.get("netFilterCategories").split(" ").forEach(function(element)
+ {
+ filterCategories.add(element);
+ });
+ var doc = chrome.window.document;
+ var buttons = doc.getElementsByClassName("fbNetFilter");
+
+ for (var i=0, len=buttons.length; i<len; ++i)
+ {
+ var filterCategory = buttons[i].id.substr(buttons[i].id.search("-") + 1);
+ buttons[i].checked = filterCategories.has(filterCategory);
+ }
+ },
+
+ togglePersist: function(context)
+ {
+ var panel = context.getPanel(panelName);
+ panel.persistContent = panel.persistContent ? false : true;
+
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_togglePersistNet", "checked",
+ panel.persistContent);
+ },
+
+ updateOption: function(name, value)
+ {
+ if (name == "net.logLimit")
+ this.updateMaxLimit();
+ },
+
+ updateMaxLimit: function()
+ {
+ var value = Options.get("net.logLimit");
+ this.maxQueueRequests = value ? value : this.maxQueueRequests;
+ },
+
+ addTimeStamp: function(context, time, label, color)
+ {
+ if (context.netProgress)
+ context.netProgress.post(timeStamp, [context.window, time, label, color]);
+ }
+});
+
+// ********************************************************************************************* //
+
+// HTTP Observer
+
+// HTTP listener - based on HttpRequestObserver module
+// This observer is used for observing the first document http-on-modify-request
+// and http-on-examine-response events, which are fired before the context
+// is initialized (initContext method call). Without this observer this events
+// would be lost and the time measuring would be wrong.
+//
+// This observer stores these early requests in helper array (contexts) and maps
+// them to appropriate tab - initContext then uses the array in order to access it.
+
+var NetHttpObserver =
+{
+ dispatchName: "NetHttpObserver",
+ registered: false,
+
+ registerObserver: function()
+ {
+ if (this.registered)
+ return;
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.NetHttpObserver.register;");
+
+ HttpRequestObserver.addObserver(this, "firebug-http-event", false);
+ this.registered = true;
+ },
+
+ unregisterObserver: function()
+ {
+ if (!this.registered)
+ return;
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.NetHttpObserver.unregister;");
+
+ HttpRequestObserver.removeObserver(this, "firebug-http-event");
+ this.registered = false;
+ },
+
+ /* nsIObserve */
+ observe: function(subject, topic, data)
+ {
+ if (!Firebug.NetMonitor.isAlwaysEnabled())
+ return;
+
+ try
+ {
+ if (FBTrace.DBG_NET_EVENTS)
+ {
+ FBTrace.sysout("net.events.observe " + (topic ? topic.toUpperCase() : topic) +
+ ", " + ((subject instanceof Ci.nsIRequest) ? Http.safeGetRequestName(subject) : "") +
+ ", Browser: " + Firebug.chrome.window.document.title);
+ }
+
+ if (!(subject instanceof Ci.nsIHttpChannel))
+ return;
+
+ var win = Http.getWindowForRequest(subject);
+ var context = Firebug.connection.getContextByWindow(win);
+
+ // The context doesn't have to exist yet. In such cases a temp Net context is
+ // created within onModifyRequest.
+
+ // Some requests are not associated with any page (e.g. favicon).
+ // These are ignored as Net panel shows only page requests.
+ var tabId = win ? Win.getWindowProxyIdForWindow(win) : null;
+ if (!tabId)
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.observe NO TAB " + Http.safeGetRequestName(subject) +
+ ", " + tabId + ", " + win);
+ return;
+ }
+
+ if (topic == "http-on-modify-request")
+ this.onModifyRequest(subject, win, tabId, context);
+ else if (topic == "http-on-examine-response")
+ this.onExamineResponse(subject, win, tabId, context);
+ else if (topic == "http-on-examine-cached-response")
+ this.onExamineCachedResponse(subject, win, tabId, context);
+ else if (topic == "http-on-opening-request")
+ this.openingFile(subject, win, tabId, context);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("net.observe EXCEPTION", err);
+ }
+ },
+
+ onModifyRequest: function(request, win, tabId, context)
+ {
+ var name = request.URI.asciiSpec;
+ var origName = request.originalURI.asciiSpec;
+ var isRedirect = (name != origName);
+
+ // We only need to create a new context if this is a top document uri (not frames).
+ if ((request.loadFlags & Ci.nsIChannel.LOAD_DOCUMENT_URI) &&
+ request.loadGroup && request.loadGroup.groupObserver &&
+ win == win.parent && !isRedirect)
+ {
+ var browser = Firefox.getBrowserForWindow(win);
+
+ if (!Firebug.TabWatcher.shouldCreateContext(browser, name, null))
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.onModifyRequest; Activation logic says don't create " +
+ "temp context for: " + name);
+ return;
+ }
+
+ // Create a new network context prematurely.
+ if (!Firebug.NetMonitor.contexts[tabId])
+ {
+ Firebug.NetMonitor.contexts[tabId] = createNetProgress(null);
+
+ // OK, we definitely want to watch this page load, temporary context is created
+ // so, make sure the activity-observer is registered and we have detailed
+ // timing info for this first document request.
+ NetHttpActivityObserver.registerObserver();
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.onModifyRequest; Temp Context created (" +
+ getTempContextCount() + "), " + tabId);
+ }
+ }
+
+ var networkContext = Firebug.NetMonitor.contexts[tabId];
+ if (!networkContext)
+ networkContext = context ? context.netProgress : null;
+
+ if (networkContext)
+ {
+ networkContext.post(startFile, [request, win]);
+
+ // We need to track the request now since the activity observer is not used in case
+ // the response comes from BF cache. If it's a regular HTTP request the timing
+ // is properly overridden by the activity observer (ACTIVITY_SUBTYPE_REQUEST_HEADER).
+ // Even if the Firebug.netShowBFCacheResponses is false now, the user could
+ // switch it on later.
+ var xhr = Http.isXHR(request);
+ networkContext.post(requestedFile, [request, NetUtils.now(), win, xhr]);
+ }
+ },
+
+ onExamineResponse: function(request, win, tabId, context)
+ {
+ var networkContext = Firebug.NetMonitor.contexts[tabId];
+ if (!networkContext)
+ networkContext = context ? context.netProgress : null;
+
+ if (!networkContext)
+ return;
+
+ var info = new Object();
+ info.responseStatus = request.responseStatus;
+ info.responseStatusText = request.responseStatusText;
+
+ // Initialize info.postText property.
+ info.request = request;
+ NetUtils.getPostText(info, context);
+
+ // Get response headers now. They could be replaced by cached headers later
+ // (if the response is coming from the cache).
+ NetUtils.getHttpHeaders(request, info, context);
+
+ if (FBTrace.DBG_NET && info.postText)
+ FBTrace.sysout("net.onExamineResponse, POST data: " + info.postText, info);
+
+ networkContext.post(respondedFile, [request, NetUtils.now(), info]);
+
+ // Make sure to track the first document response.
+ //Firebug.TabCacheModel.registerStreamListener(request, win, true);
+ },
+
+ onExamineCachedResponse: function(request, win, tabId, context)
+ {
+ var networkContext = Firebug.NetMonitor.contexts[tabId];
+ if (!networkContext)
+ networkContext = context ? context.netProgress : null;
+
+ if (!networkContext)
+ {
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.onExamineCachedResponse; No CONTEXT for:" +
+ Http.safeGetRequestName(request));
+ return;
+ }
+
+ var info = new Object();
+ info.responseStatus = request.responseStatus;
+ info.responseStatusText = request.responseStatusText;
+
+ // Initialize info.postText property.
+ info.request = request;
+ NetUtils.getPostText(info, context);
+
+ networkContext.post(respondedCacheFile, [request, NetUtils.now(), info]);
+ },
+
+ openingFile: function(request, win, tabId, context)
+ {
+ var networkContext = Firebug.NetMonitor.contexts[tabId];
+ if (!networkContext)
+ networkContext = context ? context.netProgress : null;
+
+ if (!networkContext)
+ return;
+
+ networkContext.post(openingFile, [request, win]);
+ },
+
+ /* nsISupports */
+ QueryInterface: function(iid)
+ {
+ if (iid.equals(Ci.nsISupports) ||
+ iid.equals(Ci.nsIObserver)) {
+ return this;
+ }
+
+ throw Cr.NS_ERROR_NO_INTERFACE;
+ }
+};
+
+// ********************************************************************************************* //
+// Monitoring start/stop
+
+function monitorContext(context)
+{
+ if (context.netProgress)
+ return;
+
+ var networkContext = null;
+
+ // Use an existing context associated with the browser tab if any
+ // or create a pure new network context.
+ if (context.window)
+ {
+ var tabId = Win.getWindowProxyIdForWindow(context.window);
+ networkContext = Firebug.NetMonitor.contexts[tabId];
+ }
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.monitorContext; (" + networkContext + ") " +
+ tabId + ", " + context.getName());
+
+ if (networkContext)
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.monitorContext; Use temporary context: " + tabId);
+
+ networkContext.context = context;
+ delete Firebug.NetMonitor.contexts[tabId];
+ }
+ else
+ {
+ if (FBTrace.DBG_NET)
+ {
+ FBTrace.sysout("net.monitorContext; create network monitor context object for: " +
+ tabId);
+ }
+
+ networkContext = createNetProgress(context);
+ }
+
+ // Register activity-distributor observer if available (#488270)
+ //NetHttpActivityObserver.registerObserver();
+
+ context.netProgress = networkContext;
+
+ // Add cache listener so, net panel has always fresh responses.
+ // Safe to call multiple times.
+ networkContext.cacheListener.register(context.sourceCache);
+
+ // Activate net panel sub-context.
+ var panel = context.getPanel(panelName);
+ context.netProgress.activate(panel);
+
+ // Display info message, but only if the panel isn't just reloaded or Persist == true.
+ if (!context.persistedState)
+ panel.insertActivationMessage();
+
+ updateStartButton(true);
+}
+
+function unmonitorContext(context)
+{
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.unmonitorContext; (" +
+ (context ? context.netProgress : "netProgress == NULL") + ") " +
+ (context ? context.getName() : "no context"));
+
+ var netProgress = context ? context.netProgress : null;
+ if (!netProgress)
+ return;
+
+ // Since the print into the UI is done by timeout asynchronously,
+ // make sure there are no requests left.
+ var panel = context.getPanel(panelName, true);
+ if (panel)
+ panel.updateLayout();
+
+ //NetHttpActivityObserver.unregisterObserver();
+
+ // Remove cache listener. Safe to call multiple times.
+ netProgress.cacheListener.unregister();
+
+ // Deactivate net sub-context.
+ context.netProgress.activate(null);
+
+ updateStartButton(false);
+
+ // And finaly destroy the net panel sub context.
+ delete context.netProgress;
+}
+
+function updateStartButton(enabled)
+{
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.updateStartButton; update start button, enabled: " + enabled);
+
+ var firebugStatus = Firefox.getElementById("firebugStatus");
+
+ // Update status
+ if (enabled)
+ firebugStatus.setAttribute("net", "on");
+ else
+ firebugStatus.removeAttribute("net");
+
+ // Update start button tooltip
+ if (Firebug.StartButton)
+ Firebug.StartButton.resetTooltip();
+ else
+ FBTrace.sysout("net.updateStartButton; ERROR No Firebug.StartButton ?");
+}
+
+function createNetProgress(context)
+{
+ var netProgress = new NetProgress(context);
+ netProgress.cacheListener = new NetCacheListener(netProgress);
+ netProgress.breakpoints = new NetDebugger.NetBreakpointGroup();
+ return netProgress;
+}
+
+// ********************************************************************************************* //
+// TabCache Listener
+
+/**
+ * TabCache listner implementation. Net panel uses this listner to remember all
+ * responses stored into the cache. There can be more requests to the same URL that
+ * returns different responses. The Net panels must remember all of them (tab cache
+ * remembers only the last one)
+ */
+function NetCacheListener(netProgress)
+{
+ this.netProgress = netProgress;
+ this.cache = null;
+}
+
+NetCacheListener.prototype =
+{
+ dispatchName: "NetCacheListener",
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Registration
+
+ register: function(cache)
+ {
+ if (this.cache)
+ return;
+
+ this.cache = cache;
+ this.cache.addListener(this);
+ },
+
+ unregister: function()
+ {
+ if (!this.cache)
+ return;
+
+ this.cache.removeListener(this);
+ this.cache = null;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Cache Listener
+
+ onStartRequest: function(context, request)
+ {
+ // Keep in mind that the file object (representing the request) doesn't have to be
+ // created at this moment (top document request).
+ },
+
+ onStopRequest: function(context, request, responseText)
+ {
+ // Remember the response for this request.
+ var file = this.netProgress.getRequestFile(request, null, true);
+ if (file && responseText)
+ file.responseText = responseText;
+
+ Events.dispatch(Firebug.NetMonitor.fbListeners, "onResponseBody", [context, file]);
+ }
+};
+
+// ********************************************************************************************* //
+// Debugger Listener
+
+Firebug.NetMonitor.DebuggerListener =
+{
+ getBreakpoints: function(context, groups)
+ {
+ if (context.netProgress && !context.netProgress.breakpoints.isEmpty())
+ groups.push(context.netProgress.breakpoints);
+ },
+};
+
+// ********************************************************************************************* //
+// Tracing support
+
+function getTempContextCount()
+{
+ var counter = 0;
+ for (var p in Firebug.NetMonitor.contexts)
+ counter++;
+ return counter;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+// Keep compatibility with existing XUL based extensions
+// deprecated
+Firebug.NetMonitor.Utils = NetUtils;
+
+Firebug.registerActivableModule(Firebug.NetMonitor);
+
+return Firebug.NetMonitor;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/net/netPanel.js b/content/firebug/net/netPanel.js
index 9834fec..1e3110b 100644
--- a/content/firebug/net/netPanel.js
+++ b/content/firebug/net/netPanel.js
@@ -1,1712 +1,1712 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/firefox",
- "firebug/lib/domplate",
- "firebug/lib/xpcom",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/options",
- "firebug/lib/url",
- "firebug/js/sourceLink",
- "firebug/lib/http",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/chrome/window",
- "firebug/lib/search",
- "firebug/lib/string",
- "firebug/lib/array",
- "firebug/lib/system",
- "firebug/chrome/menu",
- "firebug/net/netUtils",
- "firebug/net/netProgress",
- "firebug/css/cssReps",
- "firebug/net/timeInfoTip",
- "firebug/js/breakpoint",
- "firebug/net/xmlViewer",
- "firebug/net/svgViewer",
- "firebug/net/jsonViewer",
- "firebug/net/fontViewer",
- "firebug/chrome/infotip",
- "firebug/css/cssPanel",
- "firebug/chrome/searchBox",
- "firebug/console/errors",
- "firebug/net/netMonitor",
- "firebug/net/netReps",
- "firebug/net/netCacheReader",
-],
-function(Obj, Firebug, Firefox, Domplate, Xpcom, Locale,
- Events, Options, Url, SourceLink, Http, Css, Dom, Win, Search, Str,
- Arr, System, Menu, NetUtils, NetProgress, CSSInfoTip, TimeInfoTip) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-
-var layoutInterval = 300;
-var panelName = "net";
-var NetRequestEntry = Firebug.NetMonitor.NetRequestEntry;
-
-// ********************************************************************************************* //
-
-/**
- * @panel Represents a Firebug panel that displays info about HTTP activity associated with
- * the current page. This class is derived from <code>Firebug.ActivablePanel</code> in order
- * to support activation (enable/disable). This allows to avoid (performance) expensive
- * features if the functionality is not necessary for the user.
- */
-function NetPanel() {}
-NetPanel.prototype = Obj.extend(Firebug.ActivablePanel,
-/** @lends NetPanel */
-{
- name: panelName,
- searchable: true,
- editable: true,
- breakable: true,
- enableA11y: true,
- order: 60,
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Initialization
-
- initialize: function(context, doc)
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.NetPanel.initialize; " + context.getName());
-
- this.queue = [];
- this.onContextMenu = Obj.bind(this.onContextMenu, this);
-
- Firebug.ActivablePanel.initialize.apply(this, arguments);
-
- // Listen for set filters, so the panel is properly updated when needed
- Firebug.NetMonitor.addListener(this);
- },
-
- destroy: function(state)
- {
- Firebug.NetMonitor.removeListener(this);
- Firebug.ActivablePanel.destroy.apply(this, arguments);
- },
-
- initializeNode : function()
- {
- Events.addEventListener(this.panelNode, "contextmenu", this.onContextMenu, false);
-
- this.onResizer = Obj.bind(this.onResize, this);
- this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
- Events.addEventListener(this.resizeEventTarget, "resize", this.onResizer, true);
-
- Firebug.ActivablePanel.initializeNode.apply(this, arguments);
- },
-
- destroyNode : function()
- {
- Events.removeEventListener(this.panelNode, "contextmenu", this.onContextMenu, false);
- Events.removeEventListener(this.resizeEventTarget, "resize", this.onResizer, true);
-
- Firebug.ActivablePanel.destroyNode.apply(this, arguments);
- },
-
- loadPersistedContent: function(state)
- {
- this.initLayout();
-
- var tbody = this.table.querySelector(".netTableBody");
-
- // Move all net-rows from the persistedState to this panel.
- var prevTableBody = state.panelNode.getElementsByClassName("netTableBody").item(0);
- if (!prevTableBody)
- return;
-
- var files = [];
-
- // Iterate persisted content - table rows. These rows can represent various things
- // 1) netPageRow - already persisted group
- // 2) netRow - request entries from the previous session (page load)
- while (prevTableBody.firstChild)
- {
- var row = prevTableBody.firstChild;
-
- // Collect all entries that belongs to the current page load (not history)
- if (Css.hasClass(row, "netRow") &&
- Css.hasClass(row, "hasHeaders") &&
- !Css.hasClass(row, "history"))
- {
- row.repObject.history = true;
- files.push({
- file: row.repObject,
- offset: 0 + "%",
- width: 0 + "%",
- elapsed: -1
- });
- }
-
- if (Css.hasClass(row, "netPageRow"))
- {
- Css.removeClass(row, "opened");
-
- // Insert the old page-load-history entry just before the summary-row,
- // but after the limit row.
- tbody.insertBefore(row, this.summaryRow);
- }
- else
- {
- prevTableBody.removeChild(row);
- }
- }
-
- // New page-load-history entry is inserted just before summary row
- // (at the end of page-load-history entry list)
- var lastRow = this.summaryRow.previousSibling;
- if (files.length)
- {
- var pageRow = Firebug.NetMonitor.NetPage.pageTag.insertRows({page: state}, lastRow)[0];
- pageRow.files = files;
-
- lastRow = this.summaryRow.previousSibling;
- }
-
- // Insert a separator tag at the end of page-load-history entry list.
- if (this.table.getElementsByClassName("netPageRow").item(0))
- Firebug.NetMonitor.NetPage.separatorTag.insertRows({}, lastRow);
-
- Dom.scrollToBottom(this.panelNode);
- },
-
- savePersistedContent: function(state)
- {
- Firebug.ActivablePanel.savePersistedContent.apply(this, arguments);
-
- state.pageTitle = NetUtils.getPageTitle(this.context);
- },
-
- show: function(state)
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.netPanel.show; " + this.context.getName(), state);
-
- var enabled = Firebug.NetMonitor.isAlwaysEnabled();
- this.showToolbarButtons("fbNetButtons", enabled);
-
- if (enabled)
- Firebug.chrome.setGlobalAttribute("cmd_firebug_togglePersistNet", "checked", this.persistContent);
- else
- this.table = null;
-
- if (!enabled)
- return;
-
- if (!this.filterCategories)
- this.setFilter(Options.get("netFilterCategories").split(" "));
-
- this.layout();
-
- if (!this.layoutInterval)
- this.layoutInterval = setInterval(Obj.bindFixed(this.updateLayout, this), layoutInterval);
-
- if (this.wasScrolledToBottom)
- Dom.scrollToBottom(this.panelNode);
- },
-
- hide: function()
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.netPanel.hide; " + this.context.getName());
-
- // clear the state that is tracking the infotip so it is reset after next show()
- delete this.infoTipURL;
- this.wasScrolledToBottom = Dom.isScrolledToBottom(this.panelNode);
-
- clearInterval(this.layoutInterval);
- delete this.layoutInterval;
- },
-
- updateOption: function(name, value)
- {
- if (name == "netShowBFCacheResponses")
- this.updateBFCacheResponses();
- },
-
- updateBFCacheResponses: function()
- {
- if (this.table)
- {
- if (Firebug.netShowBFCacheResponses)
- Css.setClass(this.table, "showBFCacheResponses");
- else
- Css.removeClass(this.table, "showBFCacheResponses");
-
- // Recalculate the summary information since some requests doesn't have to
- // be displayed now.
- this.updateSummaries(NetUtils.now(), true);
- }
- },
-
- updateSelection: function(object)
- {
- if (!object)
- return;
-
- var netProgress = this.context.netProgress;
- var file = netProgress.getRequestFile(object.request);
- if (!file)
- {
- for (var i=0; i<netProgress.requests.length; i++) {
- if (Http.safeGetRequestName(netProgress.requests[i]) == object.href) {
- file = netProgress.files[i];
- break;
- }
- }
- }
-
- if (file)
- {
- Dom.scrollIntoCenterView(file.row);
- if (!Css.hasClass(file.row, "opened"))
- NetRequestEntry.toggleHeadersRow(file.row);
- }
- },
-
- getPopupObject: function(target)
- {
- var header = Dom.getAncestorByClass(target, "netHeaderRow");
- if (header)
- return Firebug.NetMonitor.NetRequestTable;
-
- return Firebug.ActivablePanel.getPopupObject.apply(this, arguments);
- },
-
- supportsObject: function(object, type)
- {
- return ((object instanceof SourceLink.SourceLink && object.type == "net") ? 2 : 0);
- },
-
- getOptionsMenuItems: function()
- {
- return [
- this.disableCacheOption(),
- "-",
- Menu.optionMenu("net.option.Show_Paint_Events", "netShowPaintEvents",
- "net.option.tip.Show_Paint_Events"),
- Menu.optionMenu("net.option.Show_BFCache_Responses", "netShowBFCacheResponses",
- "net.option.tip.Show_BFCache_Responses")
- ];
- },
-
- disableCacheOption: function()
- {
- var BrowserCache = Firebug.NetMonitor.BrowserCache;
- var disabled = !BrowserCache.isEnabled();
- return {
- label: "net.option.Disable_Browser_Cache",
- type: "checkbox",
- checked: disabled,
- tooltiptext: "net.option.tip.Disable_Browser_Cache",
- command: function()
- {
- BrowserCache.toggle(!this.hasAttribute("checked"));
- }
- };
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Context Menu
-
- getContextMenuItems: function(nada, target)
- {
- var items = [];
-
- var file = Firebug.getRepObject(target);
- if (!file || !(file instanceof Firebug.NetFile))
- return items;
-
- var object = Firebug.getObjectByURL(this.context, file.href);
- var isPost = NetUtils.isURLEncodedRequest(file, this.context);
- var params = Url.parseURLParams(file.href);
-
- items.push(
- {
- label: "CopyLocation",
- tooltiptext: "clipboard.tip.Copy_Location",
- command: Obj.bindFixed(System.copyToClipboard, System, file.href)
- }
- );
-
- if (params.length > 0)
- {
- items.push(
- {
- id: "fbCopyUrlParameters",
- label: "CopyURLParameters",
- tooltiptext: "net.tip.Copy_URL_Parameters",
- command: Obj.bindFixed(this.copyURLParams, this, file)
- }
- );
- }
-
- if (isPost)
- {
- items.push(
- {
- label: "CopyLocationParameters",
- tooltiptext: "net.tip.Copy_Location_Parameters",
- command: Obj.bindFixed(this.copyParams, this, file)
- },
- {
- id: "fbCopyPOSTParameters",
- label: "CopyPOSTParameters",
- tooltiptext: "net.tip.Copy_POST_Parameters",
- command: Obj.bindFixed(this.copyPOSTParams, this, file)
- }
- );
- }
-
- items.push(
- {
- label: "CopyRequestHeaders",
- tooltiptext: "net.tip.Copy_Request_Headers",
- command: Obj.bindFixed(this.copyRequestHeaders, this, file)
- },
- {
- label: "CopyResponseHeaders",
- tooltiptext: "net.tip.Copy_Response_Headers",
- command: Obj.bindFixed(this.copyResponseHeaders, this, file)
- }
- );
-
- if (NetUtils.textFileCategories.hasOwnProperty(file.category))
- {
- items.push(
- {
- label: "CopyResponse",
- tooltiptext: "net.tip.Copy_Response",
- command: Obj.bindFixed(this.copyResponse, this, file)
- }
- );
- }
-
- items.push(
- {
- id: "fbCopyAsCurl",
- label: "CopyAsCurl",
- tooltiptext: "net.tip.Copy_as_cURL",
- command: Obj.bindFixed(this.copyAsCurl, this, file)
- }
- );
-
- items.push(
- "-",
- {
- label: "OpenInTab",
- tooltiptext: "firebug.tip.Open_In_Tab",
- command: Obj.bindFixed(this.openRequestInTab, this, file)
- }
- );
-
- if (NetUtils.textFileCategories.hasOwnProperty(file.category))
- {
- items.push(
- {
- label: "Open_Response_In_New_Tab",
- tooltiptext: "net.tip.Open_Response_In_New_Tab",
- command: Obj.bindFixed(NetUtils.openResponseInTab, this, file)
- }
- );
- }
-
- items.push("-");
-
- if (!file.loaded)
- {
- items.push(
- {
- label: "StopLoading",
- tooltiptext: "net.tip.Stop_Loading",
- command: Obj.bindFixed(this.stopLoading, this, file)
- }
- );
- }
-
- items.push(
- {
- label: "net.label.Resend",
- tooltiptext: "net.tip.Resend",
- id: "fbNetResend",
- command: Obj.bindFixed(Firebug.Spy.XHR.resend, Firebug.Spy.XHR, file, this.context)
- }
- );
-
- if (object)
- {
- // xxxHonza: This is dangerous construct. Inspect menu-items are generated
- // automatically for every context menu in FirebugChrome.onContextShowing().
- // Also, FirebugChrome is using Rep.getRealObject() while this logic is based
- // on Firebug.getObjectByURL(), which can return different objects to be inspected.
- // This feature has been introduced to allow inspecting of specific network requests
- // like stylesheets and javascript files, but at that time the network request
- // template (FirebugReps.NetFile) returned null for getRealObject().
- // FirebugReps.NetFile.getRealObject() now returns an object representing the request
- // itself (used also by 'Use in Command Line' feature), which is different from what
- // Firebug.getObjectByURL() returns. See also issue 6647.
- var subItems = Firebug.chrome.getInspectMenuItems(object);
- if (subItems.length)
- {
- items.push("-");
- items.push.apply(items, subItems);
- }
- }
-
- if (file.isXHR)
- {
- var bp = this.context.netProgress.breakpoints.findBreakpoint(file.getFileURL());
-
- items.push(
- "-",
- {
- label: "net.label.Break_On_XHR",
- tooltiptext: "net.tip.Break_On_XHR",
- type: "checkbox",
- checked: !!bp,
- command: Obj.bindFixed(this.breakOnRequest, this, file)
- }
- );
-
- if (bp)
- {
- items.push(
- {
- label: "EditBreakpointCondition",
- tooltiptext: "breakpoints.tip.Edit_Breakpoint_Condition",
- command: Obj.bindFixed(this.editBreakpointCondition, this, file)
- }
- );
- }
- }
-
- return items;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Context Menu Commands
-
- copyURLParams: function(file)
- {
- var params = Url.parseURLParams(file.href);
- var result = params.map(function(o) { return o.name + "=" + o.value; });
- System.copyToClipboard(result.join(Str.lineBreak()));
- },
-
- copyPOSTParams: function(file)
- {
- if (!NetUtils.isURLEncodedRequest(file, this.context))
- return;
-
- var text = NetUtils.getPostText(file, this.context, true);
- if (text)
- {
- var lines = text.split("\n");
- var params = Url.parseURLEncodedText(lines[lines.length-1]);
- var result = params.map(function(o) { return o.name + "=" + o.value; });
- System.copyToClipboard(result.join(Str.lineBreak()));
- }
- },
-
- copyParams: function(file)
- {
- var text = NetUtils.getPostText(file, this.context, true);
- var url = Url.reEncodeURL(file, text, true);
- System.copyToClipboard(url);
- },
-
- copyRequestHeaders: function(file)
- {
- System.copyToClipboard(file.requestHeadersText);
- },
-
- copyResponseHeaders: function(file)
- {
- System.copyToClipboard(file.responseHeadersText);
- },
-
- copyResponse: function(file)
- {
- // Copy response to the clipboard
- System.copyToClipboard(NetUtils.getResponseText(file, this.context));
- },
-
- copyAsCurl: function(file)
- {
- System.copyToClipboard(NetUtils.generateCurlCommand(file,
- Options.get("net.curlAddCompressedArgument")));
- },
-
- openRequestInTab: function(file)
- {
- if (file.postText)
- {
- var lines = file.postText.split("\n");
- Win.openNewTab(file.href, lines[lines.length-1]);
- }
- else
- {
- Win.openNewTab(file.href, null);
- }
- },
-
- breakOnRequest: function(file)
- {
- if (!file.isXHR)
- return;
-
- // Create new or remove an existing breakpoint.
- var breakpoints = this.context.netProgress.breakpoints;
- var url = file.getFileURL();
- var bp = breakpoints.findBreakpoint(url);
- if (bp)
- breakpoints.removeBreakpoint(url);
- else
- breakpoints.addBreakpoint(url);
-
- this.enumerateRequests(function(currFile)
- {
- if (url != currFile.getFileURL())
- return;
-
- if (bp)
- currFile.row.removeAttribute("breakpoint");
- else
- currFile.row.setAttribute("breakpoint", "true");
- });
- },
-
- stopLoading: function(file)
- {
- const NS_BINDING_ABORTED = 0x804b0002;
-
- file.request.cancel(NS_BINDING_ABORTED);
- },
-
- // Support for xhr breakpoint conditions.
- onContextMenu: function(event)
- {
- if (!Css.hasClass(event.target, "sourceLine"))
- return;
-
- var row = Dom.getAncestorByClass(event.target, "netRow");
- if (!row)
- return;
-
- var file = row.repObject;
- var bp = this.context.netProgress.breakpoints.findBreakpoint(file.getFileURL());
- if (!bp)
- return;
-
- this.editBreakpointCondition(file);
- Events.cancelEvent(event);
- },
-
- editBreakpointCondition: function(file)
- {
- var bp = this.context.netProgress.breakpoints.findBreakpoint(file.getFileURL());
- if (!bp)
- return;
-
- var condition = bp ? bp.condition : "";
-
- this.selectedSourceBox = this.panelNode;
- Firebug.Editor.startEditing(file.row, condition);
- },
-
- getEditor: function(target, value)
- {
- if (!this.conditionEditor)
- this.conditionEditor = new Firebug.NetMonitor.ConditionEditor(this.document);
-
- return this.conditionEditor;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Activable Panel
-
- /**
- * Support for panel activation.
- */
- onActivationChanged: function(enable)
- {
- if (FBTrace.DBG_NET || FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("net.NetPanel.onActivationChanged; enable: " + enable);
-
- if (enable)
- {
- Firebug.NetMonitor.addObserver(this);
- Firebug.TabCacheModel.addObserver(this);
- }
- else
- {
- Firebug.NetMonitor.removeObserver(this);
- Firebug.TabCacheModel.removeObserver(this);
- }
- },
-
- breakOnNext: function(breaking)
- {
- this.context.breakOnXHR = breaking;
- },
-
- shouldBreakOnNext: function()
- {
- return this.context.breakOnXHR;
- },
-
- getBreakOnNextTooltip: function(enabled)
- {
- return (enabled ? Locale.$STR("net.Disable Break On XHR") : Locale.$STR("net.Break On XHR"));
- },
-
- // Support for info tips.
- showInfoTip: function(infoTip, target, x, y)
- {
- var row = Dom.getAncestorByClass(target, "netRow");
- if (row && row.repObject)
- {
- if (Dom.getAncestorByClass(target, "netTotalSizeCol"))
- {
- var infoTipURL = "netTotalSize";
- if (infoTipURL == this.infoTipURL)
- return true;
-
- this.infoTipURL = infoTipURL;
- return this.populateTotalSizeInfoTip(infoTip, row);
- }
- else if (Dom.getAncestorByClass(target, "netSizeCol"))
- {
- var infoTipURL = row.repObject.href + "-netsize";
- if (infoTipURL == this.infoTipURL && row.repObject == this.infoTipFile)
- return true;
-
- this.infoTipURL = infoTipURL;
- this.infoTipFile = row.repObject;
- return this.populateSizeInfoTip(infoTip, row.repObject);
- }
- else if (Dom.getAncestorByClass(target, "netTimeCol"))
- {
- var infoTipURL = row.repObject.href + "-nettime";
- if (infoTipURL == this.infoTipURL && row.repObject == this.infoTipFile)
- return true;
-
- this.infoTipURL = infoTipURL;
- this.infoTipFile = row.repObject;
- return this.populateTimeInfoTip(infoTip, row.repObject);
- }
- else if (Css.hasClass(row, "category-image") &&
- !Dom.getAncestorByClass(target, "netRowHeader"))
- {
- var infoTipURL = row.repObject.href + "-image";
- if (infoTipURL == this.infoTipURL)
- return true;
-
- this.infoTipURL = infoTipURL;
- return CSSInfoTip.populateImageInfoTip(infoTip, row.repObject.href);
- }
- }
-
- delete this.infoTipURL;
- return false;
- },
-
- populateTimeInfoTip: function(infoTip, file)
- {
- return TimeInfoTip.render(this.context, file, infoTip);
- },
-
- populateSizeInfoTip: function(infoTip, file)
- {
- Firebug.NetMonitor.SizeInfoTip.render(file, infoTip);
- return true;
- },
-
- populateTotalSizeInfoTip: function(infoTip, row)
- {
- var totalSizeLabel = row.getElementsByClassName("netTotalSizeLabel").item(0);
- var file = {size: totalSizeLabel.getAttribute("totalSize")};
- Firebug.NetMonitor.SizeInfoTip.tag.replace({file: file}, infoTip);
- return true;
- },
-
- // Support for search within the panel.
- getSearchOptionsMenuItems: function()
- {
- return [
- Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive",
- "search.tip.Case_Sensitive"),
- //Firebug.Search.searchOptionMenu("search.net.Headers", "netSearchHeaders"),
- //Firebug.Search.searchOptionMenu("search.net.Parameters", "netSearchParameters"),
- Firebug.Search.searchOptionMenu("search.Use_Regular_Expression",
- "searchUseRegularExpression", "search.tip.Use_Regular_Expression"),
- Firebug.Search.searchOptionMenu("search.net.Response_Bodies", "netSearchResponseBody",
- "search.net.tip.Response_Bodies")
- ];
- },
-
- search: function(text, reverse)
- {
- if (!text)
- {
- delete this.currentSearch;
- this.highlightNode(null);
- return false;
- }
-
- var row;
- if (this.currentSearch && text == this.currentSearch.text)
- {
- row = this.currentSearch.findNext(true, false, reverse, Firebug.Search.isCaseSensitive(text));
- }
- else
- {
- this.currentSearch = new NetPanelSearch(this);
- row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
- }
-
- if (row)
- {
- var sel = this.document.defaultView.getSelection();
- sel.removeAllRanges();
- sel.addRange(this.currentSearch.range);
-
- Dom.scrollIntoCenterView(row, this.panelNode);
- if(this.currentSearch.shouldSearchResponses() &&
- Dom.getAncestorByClass(row, "netInfoResponseText"))
- {
- this.highlightNode(row);
- }
- else
- {
- this.highlightNode(Dom.getAncestorByClass(row, "netRow"));
- }
- Events.dispatch(this.fbListeners, 'onNetMatchFound', [this, text, row]);
- return true;
- }
- else
- {
- Events.dispatch(this.fbListeners, 'onNetMatchFound', [this, text, null]);
- return false;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onFiltersSet: function(filterCategories)
- {
- this.setFilter(filterCategories);
- this.updateSummaries(NetUtils.now(), true);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- updateFile: function(file)
- {
- if (!file.invalid)
- {
- file.invalid = true;
- this.queue.push(file);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- updateLayout: function()
- {
- if (!this.queue.length)
- return;
-
- var rightNow = NetUtils.now();
- var length = this.queue.length;
-
- if (this.panelNode.offsetHeight)
- this.wasScrolledToBottom = Dom.isScrolledToBottom(this.panelNode);
-
- this.layout();
-
- if (this.wasScrolledToBottom)
- Dom.scrollToBottom(this.panelNode);
-
- this.updateHRefLabelWidth();
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.updateLayout; Layout done, time elapsed: " +
- Str.formatTime(NetUtils.now() - rightNow) + " (" + length + ")");
- },
-
- layout: function()
- {
- if (!this.queue.length || !this.context.netProgress ||
- !Firebug.NetMonitor.isAlwaysEnabled())
- return;
-
- this.initLayout();
-
- var rightNow = NetUtils.now();
- this.updateRowData(rightNow);
- this.updateLogLimit(Firebug.NetMonitor.maxQueueRequests);
- this.updateTimeline(rightNow);
- this.updateSummaries(rightNow);
- },
-
- initLayout: function()
- {
- if (!this.table)
- {
- var limitInfo = {
- totalCount: 0,
- limitPrefsTitle: Locale.$STRF("LimitPrefsTitle",
- [Options.prefDomain+".net.logLimit"])
- };
-
- this.table = Firebug.NetMonitor.NetRequestTable.tableTag.append({}, this.panelNode);
- var tbody = this.table.querySelector(".netTableBody");
- this.limitRow = Firebug.NetMonitor.NetLimit.createRow(tbody, limitInfo);
- this.summaryRow = NetRequestEntry.summaryTag.insertRows({}, this.table.lastChild.lastChild)[0];
-
- NetRequestEntry.footerTag.insertRows({}, this.summaryRow);
-
- // Update visibility of columns according to the preferences
- var hiddenCols = Options.get("net.hiddenColumns");
- if (hiddenCols)
- this.table.setAttribute("hiddenCols", hiddenCols);
-
- this.updateBFCacheResponses();
- }
- },
-
- updateRowData: function(rightNow)
- {
- var queue = this.queue;
- this.queue = [];
-
- var phase;
- var newFileData = [];
-
- for (var i = 0; i < queue.length; ++i)
- {
- var file = queue[i];
-
- // xxxHonza: the entire phase management should ba part of NetPanel object
- if (!file.phase && this.context.netProgress)
- this.context.netProgress.extendPhase(file);
-
- if (!file.phase)
- continue;
-
- file.invalid = false;
-
- phase = this.calculateFileTimes(file, phase, rightNow);
-
- this.updateFileRow(file, newFileData);
- this.invalidatePhase(phase);
- }
-
- if (newFileData.length)
- {
- var tbody = this.table.querySelector(".netTableBody");
- var lastRow = this.summaryRow.previousSibling;
- this.insertRows(newFileData, lastRow);
- }
- },
-
- insertRows: function(files, lastRow)
- {
- var row = NetRequestEntry.fileTag.insertRows({files: files}, lastRow)[0];
-
- for (var i = 0; i < files.length; ++i)
- {
- var file = files[i].file;
- row.repObject = file;
- file.row = row;
-
- if (file.breakLayout)
- row.setAttribute("breakLayout", "true");
-
- // Make sure a breakpoint is displayed.
- var breakpoints = this.context.netProgress.breakpoints;
- if (breakpoints && breakpoints.findBreakpoint(file.getFileURL()))
- row.setAttribute("breakpoint", "true");
-
- // Allow customization of request entries in the list. A row is represented
- // by <TR> HTML element.
- Events.dispatch(Firebug.NetMonitor.NetRequestTable.fbListeners,
- "onCreateRequestEntry", [this, row]);
-
- row = row.nextSibling;
- }
- },
-
- invalidatePhase: function(phase)
- {
- if (phase && !phase.invalidPhase)
- {
- phase.invalidPhase = true;
- this.invalidPhases = true;
- }
- },
-
- updateFileRow: function(file, newFileData)
- {
- var row = file.row;
- if (!row)
- {
- newFileData.push({
- file: file,
- offset: this.barOffset + "%",
- width: this.barReceivingWidth + "%",
- elapsed: file.loaded ? this.elapsed : -1
- });
- }
- else
- {
- var sizeLabel = row.getElementsByClassName("netSizeLabel").item(0);
-
- var sizeText = NetRequestEntry.getSize(file);
-
- // Show also total downloaded size for requests in progress.
- if (file.totalReceived)
- sizeText += " (" + Str.formatSize(file.totalReceived) + ")";
-
- sizeLabel.firstChild.nodeValue = sizeText;
-
- var methodLabel = row.getElementsByClassName("netStatusLabel").item(0);
- methodLabel.firstChild.nodeValue = NetRequestEntry.getStatus(file);
-
- var hrefLabel = row.getElementsByClassName("netHrefLabel").item(0);
- hrefLabel.firstChild.nodeValue = NetRequestEntry.getHref(file);
-
- if (file.mimeType)
- {
- // Force update category.
- file.category = null;
- for (var category in NetUtils.fileCategories)
- Css.removeClass(row, "category-" + category);
- Css.setClass(row, "category-" + NetUtils.getFileCategory(file));
- }
-
- var remoteIPLabel = row.querySelector(".netRemoteAddressCol .netAddressLabel");
- remoteIPLabel.textContent = NetRequestEntry.getRemoteAddress(file);
-
- var localIPLabel = row.querySelector(".netLocalAddressCol .netAddressLabel");
- localIPLabel.textContent = NetRequestEntry.getLocalAddress(file);
-
- if (file.requestHeaders)
- Css.setClass(row, "hasHeaders");
-
- if (file.fromCache)
- Css.setClass(row, "fromCache");
- else
- Css.removeClass(row, "fromCache");
-
- if (file.fromBFCache)
- Css.setClass(row, "fromBFCache");
- else
- Css.removeClass(row, "fromBFCache");
-
- if (NetRequestEntry.isError(file))
- Css.setClass(row, "responseError");
- else
- Css.removeClass(row, "responseError");
-
- var netBar = Dom.getChildByClass(row, "netTimeCol").childNodes[1];
- var timeLabel = Dom.getChildByClass(netBar, "netReceivingBar").firstChild;
- timeLabel.textContent = NetRequestEntry.getElapsedTime({elapsed: this.elapsed});
-
- if (file.loaded)
- Css.setClass(row, "loaded");
- else
- Css.removeClass(row, "loaded");
-
- if (Css.hasClass(row, "opened"))
- {
- var netInfoBox = row.nextSibling.getElementsByClassName("netInfoBody").item(0);
- Firebug.NetMonitor.NetInfoBody.updateInfo(netInfoBox, file, this.context);
- }
- }
- },
-
- updateTimeline: function(rightNow)
- {
- var tbody = this.table.querySelector(".netTableBody");
-
- // XXXjoe Don't update rows whose phase is done and layed out already
- var phase;
- for (var row = tbody.firstChild; row; row = row.nextSibling)
- {
- var file = row.repObject;
-
- // Some rows aren't associated with a file (e.g. header, sumarry).
- if (!file)
- continue;
-
- if (!file.loaded)
- continue;
-
- phase = this.calculateFileTimes(file, phase, rightNow);
-
- // Parent node for all timing bars.
- var netBar = row.querySelector(".netBar");
-
- // Get bar nodes
- var blockingBar = netBar.childNodes[1];
- var resolvingBar = blockingBar.nextSibling;
- var connectingBar = resolvingBar.nextSibling;
- var sendingBar = connectingBar.nextSibling;
- var waitingBar = sendingBar.nextSibling;
- var receivingBar = waitingBar.nextSibling;
-
- // All bars starts at the beginning
- resolvingBar.style.left = connectingBar.style.left = sendingBar.style.left =
- blockingBar.style.left =
- waitingBar.style.left = receivingBar.style.left = this.barOffset + "%";
-
- // Sets width of all bars (using style). The width is computed according to measured timing.
- blockingBar.style.width = this.barBlockingWidth + "%";
- resolvingBar.style.width = this.barResolvingWidth + "%";
- connectingBar.style.width = this.barConnectingWidth + "%";
- sendingBar.style.width = this.barSendingWidth + "%";
- waitingBar.style.width = this.barWaitingWidth + "%";
- receivingBar.style.width = this.barReceivingWidth + "%";
-
- // Remove existing bars
- var bars = netBar.querySelectorAll(".netPageTimingBar");
- for (var i=0; i<bars.length; i++)
- bars[i].parentNode.removeChild(bars[i]);
-
- // Generate UI for page timings (vertical lines displayed for the first phase)
- for (var i=0; i<phase.timeStamps.length; i++)
- {
- var timing = phase.timeStamps[i];
- if (!timing.offset)
- continue;
-
- var bar = netBar.ownerDocument.createElement("DIV");
- netBar.appendChild(bar);
-
- if (timing.classes)
- Css.setClass(bar, timing.classes);
-
- Css.setClass(bar, "netPageTimingBar");
-
- bar.style.left = timing.offset + "%";
- bar.style.display = "block";
- }
- }
- },
-
- calculateFileTimes: function(file, phase, rightNow)
- {
- var phases = this.context.netProgress.phases;
-
- if (phase != file.phase)
- {
- phase = file.phase;
- this.phaseStartTime = phase.startTime;
- this.phaseEndTime = phase.endTime ? phase.endTime : rightNow;
-
- // End of the first phase has to respect even the window "onload" event time, which
- // can occur after the last received file. This sets the extent of the timeline so,
- // the windowLoadBar is visible.
- if (phase.windowLoadTime && this.phaseEndTime < phase.windowLoadTime)
- this.phaseEndTime = phase.windowLoadTime;
-
- this.phaseElapsed = this.phaseEndTime - phase.startTime;
- }
-
- var elapsed = file.loaded ? file.endTime - file.startTime : 0; /*this.phaseEndTime - file.startTime*/
- this.barOffset = Math.floor(((file.startTime-this.phaseStartTime)/this.phaseElapsed) * 100);
-
- //Helper log for debugging timing problems.
- //NetUtils.traceRequestTiming("net.calculateFileTimes;", file);
-
- var blockingEnd = NetUtils.getBlockingEndTime(file);
- this.barBlockingWidth = Math.round(((blockingEnd - file.startTime) / this.phaseElapsed) * 100);
- this.barResolvingWidth = Math.round(((file.connectingTime - file.startTime) / this.phaseElapsed) * 100);
- this.barConnectingWidth = Math.round(((file.sendingTime - file.startTime) / this.phaseElapsed) * 100);
- this.barSendingWidth = Math.round(((file.waitingForTime - file.startTime) / this.phaseElapsed) * 100);
- this.barWaitingWidth = Math.round(((file.respondedTime - file.startTime) / this.phaseElapsed) * 100);
- this.barReceivingWidth = Math.round((elapsed / this.phaseElapsed) * 100);
-
- // Total request time doesn't include the time spent in queue.
- // xxxHonza: since all phases are now graphically distinguished it's easy to
- // see blocking requests. It's make sense to display the real total time now.
- this.elapsed = elapsed/* - (file.sendingTime - file.connectedTime)*/;
-
- // The nspr timer doesn't have 1ms precision, so it can happen that entire
- // request is executed in l ms (so the total is zero). Let's display at least
- // one bar in such a case so the timeline is visible.
- if (this.elapsed <= 0)
- this.barReceivingWidth = "1";
-
- // Compute also offset for page timings, e.g.: contentLoadBar and windowLoadBar,
- // which are displayed for the first phase. This is done only if a page exists.
- this.calculateTimeStamps(file, phase);
-
- return phase;
- },
-
- calculateTimeStamps: function(file, phase)
- {
- // Iterate all time stamps for the current phase and calculate offsets (from the
- // beginning of the waterfall graphs) for the vertical lines.
- for (var i=0; i<phase.timeStamps.length; i++)
- {
- var timeStamp = phase.timeStamps[i];
- var time = timeStamp.time;
-
- if (time > 0)
- {
- var offset = (((time - this.phaseStartTime)/this.phaseElapsed) * 100).toFixed(3);
- timeStamp.offset = offset;
- }
- }
- },
-
- updateSummaries: function(rightNow, updateAll)
- {
- if (!this.invalidPhases && !updateAll)
- return;
-
- this.invalidPhases = false;
-
- var phases = this.context.netProgress.phases;
- if (!phases.length)
- return;
-
- var fileCount = 0, totalSize = 0, cachedSize = 0, totalTime = 0;
- for (var i = 0; i < phases.length; ++i)
- {
- var phase = phases[i];
- phase.invalidPhase = false;
-
- var summary = this.summarizePhase(phase, rightNow);
- fileCount += summary.fileCount;
- totalSize += summary.totalSize;
- cachedSize += summary.cachedSize;
- totalTime += summary.totalTime;
- }
-
- var row = this.summaryRow;
- if (!row)
- return;
-
- var countLabel = row.getElementsByClassName("netCountLabel").item(0); //childNodes[1].firstChild;
- countLabel.textContent = Locale.$STRP("plural.Request_Count2", [fileCount]);
-
- var sizeLabel = row.getElementsByClassName("netTotalSizeLabel").item(0); //childNodes[4].firstChild;
- sizeLabel.setAttribute("totalSize", totalSize);
- sizeLabel.textContent = NetRequestEntry.formatSize(totalSize);
-
- var cacheSizeLabel = row.getElementsByClassName("netCacheSizeLabel").item(0);
- cacheSizeLabel.setAttribute("collapsed", cachedSize == 0);
- cacheSizeLabel.textContent = "(" + Locale.$STRF("net.summary.from_cache",
- [NetRequestEntry.formatSize(cachedSize)]) + ")";
-
- var timeLabel = row.getElementsByClassName("netTotalTimeLabel").item(0);
- var timeText = NetRequestEntry.formatTime(totalTime);
- var firstPhase = phases[0];
- if (firstPhase.windowLoadTime)
- {
- var loadTime = firstPhase.windowLoadTime - firstPhase.startTime;
- timeText += " (onload: " + NetRequestEntry.formatTime(loadTime) + ")";
- }
-
- timeLabel.textContent = timeText;
- },
-
- summarizePhase: function(phase, rightNow)
- {
- var cachedSize = 0, totalSize = 0;
-
- var categories = this.filterCategories;
- if (categories == "all")
- categories = null;
-
- var fileCount = 0;
- var minTime = 0, maxTime = 0;
-
- for (var i=0; i<phase.files.length; i++)
- {
- var file = phase.files[i];
-
- // Do not count BFCache responses if the user says so.
- if (!Firebug.netShowBFCacheResponses && file.fromBFCache)
- continue;
-
- if (!categories || categories.indexOf(file.category) != -1)
- {
- if (file.loaded)
- {
- ++fileCount;
-
- if (file.size > 0)
- {
- totalSize += file.size;
- if (file.fromCache)
- cachedSize += file.size;
- }
-
- if (!minTime || file.startTime < minTime)
- minTime = file.startTime;
- if (file.endTime > maxTime)
- maxTime = file.endTime;
- }
- }
- }
-
- var totalTime = maxTime - minTime;
- return {cachedSize: cachedSize, totalSize: totalSize, totalTime: totalTime,
- fileCount: fileCount};
- },
-
- updateLogLimit: function(limit)
- {
- var netProgress = this.context.netProgress;
-
- if (!netProgress) // XXXjjb Honza, please check, I guess we are getting here with the context not setup
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.updateLogLimit; NO NET CONTEXT for: " + this.context.getName());
- return;
- }
-
- // Must be positive number;
- limit = Math.max(0, limit);
-
- var filesLength = netProgress.files.length;
- if (!filesLength || filesLength <= limit)
- return;
-
- // Remove old requests.
- var removeCount = Math.max(0, filesLength - limit);
- for (var i=0; i<removeCount; i++)
- {
- var file = netProgress.files[0];
- this.removeLogEntry(file);
-
- // Remove the file occurrence from the queue.
- for (var j=0; j<this.queue.length; j++)
- {
- if (this.queue[j] == file) {
- this.queue.splice(j, 1);
- j--;
- }
- }
- }
- },
-
- removeLogEntry: function(file, noInfo)
- {
- // Remove associated row-entry from the UI before the removeFile method
- // is called (and file.row erased).
- if (this.table)
- {
- var tbody = this.table.querySelector(".netTableBody");
- if (tbody && file.row)
- tbody.removeChild(file.row);
- }
-
- if (!this.removeFile(file))
- return;
-
- if (!this.table)
- return;
-
- var tbody = this.table.querySelector(".netTableBody");
- if (!tbody)
- return;
-
- if (noInfo || !this.limitRow)
- return;
-
- this.limitRow.limitInfo.totalCount++;
-
- Firebug.NetMonitor.NetLimit.updateCounter(this.limitRow);
-
- //if (netProgress.currentPhase == file.phase)
- // netProgress.currentPhase = null;
- },
-
- removeFile: function(file)
- {
- var netProgress = this.context.netProgress;
- var index = netProgress.files.indexOf(file);
- if (index == -1)
- return false;
-
- netProgress.files.splice(index, 1);
- netProgress.requests.splice(index, 1);
-
- // Don't forget to remove the phase whose last file has been removed.
- var phase = file.phase;
-
- // xxxHonza: This needs to be examined yet. Looks like the queue contains
- // requests from the previous page. When flushed the requestedFile isn't called
- // and the phase is not set.
- if (!phase)
- return true;
-
- phase.removeFile(file);
- if (!phase.files.length)
- {
- Arr.remove(netProgress.phases, phase);
-
- if (netProgress.currentPhase == phase)
- netProgress.currentPhase = null;
- }
-
- file.clear();
-
- return true;
- },
-
- insertActivationMessage: function()
- {
- if (!Firebug.NetMonitor.isAlwaysEnabled())
- return;
-
- // Make sure the basic structure of the table panel is there.
- this.initLayout();
-
- // Get the last request row before summary row.
- var lastRow = this.summaryRow.previousSibling;
-
- // Insert an activation message (if the last row isn't the message already);
- if (Css.hasClass(lastRow, "netActivationRow"))
- return;
-
- var message = NetRequestEntry.activationTag.insertRows({}, lastRow)[0];
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.insertActivationMessage; " + this.context.getName(), message);
- },
-
- enumerateRequests: function(fn)
- {
- if (!this.table)
- return;
-
- var rows = this.table.getElementsByClassName("netRow");
- for (var i=0; i<rows.length; i++)
- {
- var row = rows[i];
- var pageRow = Css.hasClass(row, "netPageRow");
-
- if (Css.hasClass(row, "collapsed") && !pageRow)
- continue;
-
- if (Css.hasClass(row, "history"))
- continue;
-
- // Export also history. These requests can be collapsed and so not visible.
- if (row.files)
- {
- for (var j=0; j<row.files.length; j++)
- fn(row.files[j].file);
- }
-
- var file = Firebug.getRepObject(row);
- if (file)
- fn(file);
- }
- },
-
- setFilter: function(filterCategories)
- {
- this.filterCategories = filterCategories;
-
- var panelNode = this.panelNode;
- for (var category in NetUtils.fileCategories)
- {
- if (filterCategories.join(" ") != "all" && filterCategories.indexOf(category) == -1)
- Css.setClass(panelNode, "hideCategory-" + category);
- else
- Css.removeClass(panelNode, "hideCategory-" + category);
- }
- },
-
- clear: function()
- {
- Dom.clearNode(this.panelNode);
-
- this.table = null;
- this.summaryRow = null;
- this.limitRow = null;
-
- this.queue = [];
- this.invalidPhases = false;
-
- if (this.context.netProgress)
- this.context.netProgress.clear();
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.panel.clear; " + this.context.getName());
- },
-
- onResize: function()
- {
- this.updateHRefLabelWidth();
- },
-
- updateHRefLabelWidth: function()
- {
- if (!this.table)
- return;
-
- // Update max-width of the netHrefLabel according to the width of the parent column.
- // I don't know if there is a way to do this in Css.
- // See Issue 3633: Truncated URLs in net panel
- var netHrefCol = this.table.querySelector("#netHrefCol");
- var hrefLabel = this.table.querySelector(".netHrefLabel");
-
- if (!hrefLabel)
- return;
-
- if (!Firebug.currentContext)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("net.updateHRefLabelWidth; Firebug.currentContext == NULL");
- return;
- }
-
- var maxWidth = netHrefCol.clientWidth;
-
- var rules = Dom.domUtils.getCSSStyleRules(hrefLabel);
- for (var i = 0; i < rules.Count(); ++i)
- {
- var rule = Xpcom.QI(rules.GetElementAt(i), Ci.nsIDOMCSSStyleRule);
- if (rule.selectorText == ".netHrefLabel")
- {
- var style = rule.style;
- var paddingLeft = parseInt(style.getPropertyValue("padding-left"));
- if (maxWidth == 0)
- style.setProperty("max-width", "15%", "");
- else
- style.setProperty("max-width", (maxWidth - paddingLeft) + "px", "");
- break;
- }
- }
- },
-});
-
-// ********************************************************************************************* //
-
-/**
- * Use this object to automatically select Net panel and inspect a network request.
- * Firebug.chrome.select(new Firebug.NetMonitor.NetFileLink(url [, request]));
- */
-Firebug.NetMonitor.NetFileLink = function(href, request)
-{
- this.href = href;
- this.request = request;
-};
-
-Firebug.NetMonitor.NetFileLink.prototype =
-{
- toString: function()
- {
- return this.message + this.href;
- }
-};
-
-// ********************************************************************************************* //
-
-var NetPanelSearch = function(panel, rowFinder)
-{
- var panelNode = panel.panelNode;
- var doc = panelNode.ownerDocument;
- var searchRange, startPt;
-
- // Common search object methods.
- this.find = function(text, reverse, caseSensitive)
- {
- this.text = text;
-
- Search.finder.findBackwards = !!reverse;
- Search.finder.caseSensitive = !!caseSensitive;
-
- this.currentRow = this.getFirstRow();
- this.resetRange();
-
- return this.findNext(false, false, reverse, caseSensitive);
- };
-
- this.findNext = function(wrapAround, sameNode, reverse, caseSensitive)
- {
- while (this.currentRow)
- {
- var match = this.findNextInRange(reverse, caseSensitive);
- if (match)
- return match;
-
- if (this.shouldSearchResponses())
- this.findNextInResponse(reverse, caseSensitive);
-
- this.currentRow = this.getNextRow(wrapAround, reverse);
-
- if (this.currentRow)
- this.resetRange();
- }
- };
-
- // Internal search helpers.
- this.findNextInRange = function(reverse, caseSensitive)
- {
- if (this.range)
- {
- startPt = doc.createRange();
- if (reverse)
- startPt.setStartBefore(this.currentNode);
- else
- startPt.setStart(this.currentNode, this.range.endOffset);
-
- this.range = Search.finder.Find(this.text, searchRange, startPt, searchRange);
- if (this.range)
- {
- this.currentNode = this.range ? this.range.startContainer : null;
- return this.currentNode ? this.currentNode.parentNode : null;
- }
- }
-
- if (this.currentNode)
- {
- startPt = doc.createRange();
- if (reverse)
- startPt.setStartBefore(this.currentNode);
- else
- startPt.setStartAfter(this.currentNode);
- }
-
- this.range = Search.finder.Find(this.text, searchRange, startPt, searchRange);
- this.currentNode = this.range ? this.range.startContainer : null;
- return this.currentNode ? this.currentNode.parentNode : null;
- },
-
- this.findNextInResponse = function(reverse, caseSensitive)
- {
- var file = Firebug.getRepObject(this.currentRow);
- if (!file)
- return;
-
- var scanRE = Firebug.Search.getTestingRegex(this.text);
- if (scanRE.test(file.responseText))
- {
- if (!Css.hasClass(this.currentRow, "opened"))
- NetRequestEntry.toggleHeadersRow(this.currentRow);
-
- var netInfoRow = this.currentRow.nextSibling;
- var netInfoBox = netInfoRow.getElementsByClassName("netInfoBody").item(0);
- Firebug.NetMonitor.NetInfoBody.selectTabByName(netInfoBox, "Response");
-
- // Before the search is started, the new content must be properly
- // layouted within the page. The layout is executed by reading
- // the following property.
- // xxxHonza: This workaround can be removed as soon as #488427 is fixed.
- doc.body.offsetWidth;
- }
- },
-
- // Helpers
- this.resetRange = function()
- {
- searchRange = doc.createRange();
- searchRange.setStart(this.currentRow, 0);
- searchRange.setEnd(this.currentRow, this.currentRow.childNodes.length);
-
- startPt = searchRange;
- };
-
- this.getFirstRow = function()
- {
- var table = panelNode.getElementsByClassName("netTable").item(0);
- return table.querySelector(".netTableBody").firstChild;
- };
-
- this.getNextRow = function(wrapAround, reverse)
- {
- // xxxHonza: reverse searching missing.
- for (var sib = this.currentRow.nextSibling; sib; sib = sib.nextSibling)
- {
- if (this.shouldSearchResponses())
- return sib;
- else if (Css.hasClass(sib, "netRow"))
- return sib;
- }
-
- return wrapAround ? this.getFirstRow() : null;
- };
-
- this.shouldSearchResponses = function()
- {
- return Firebug["netSearchResponseBody"];
- };
-};
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
-Firebug.NetMonitor.ConditionEditor = function(doc)
-{
- Firebug.Breakpoint.ConditionEditor.apply(this, arguments);
-};
-
-Firebug.NetMonitor.ConditionEditor.prototype = domplate(Firebug.Breakpoint.ConditionEditor.prototype,
-{
- endEditing: function(target, value, cancel)
- {
- if (cancel)
- return;
-
- var file = target.repObject;
- var panel = Firebug.getElementPanel(target);
- var bp = panel.context.netProgress.breakpoints.findBreakpoint(file.getFileURL());
- if (bp)
- bp.condition = value;
- }
-});
-
-// ********************************************************************************************* //
-// Browser Cache
-
-Firebug.NetMonitor.BrowserCache =
-{
- cacheDomain: "browser.cache",
-
- isEnabled: function()
- {
- var diskCache = Options.getPref(this.cacheDomain, "disk.enable");
- var memoryCache = Options.getPref(this.cacheDomain, "memory.enable");
- return diskCache && memoryCache;
- },
-
- toggle: function(state)
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.BrowserCache.toggle; " + state);
-
- Options.setPref(this.cacheDomain, "disk.enable", state);
- Options.setPref(this.cacheDomain, "memory.enable", state);
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerPanel(NetPanel);
-
-return Firebug.NetMonitor;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/firefox",
+ "firebug/lib/domplate",
+ "firebug/lib/xpcom",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/options",
+ "firebug/lib/url",
+ "firebug/js/sourceLink",
+ "firebug/lib/http",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/chrome/window",
+ "firebug/lib/search",
+ "firebug/lib/string",
+ "firebug/lib/array",
+ "firebug/lib/system",
+ "firebug/chrome/menu",
+ "firebug/net/netUtils",
+ "firebug/net/netProgress",
+ "firebug/css/cssReps",
+ "firebug/net/timeInfoTip",
+ "firebug/js/breakpoint",
+ "firebug/net/xmlViewer",
+ "firebug/net/svgViewer",
+ "firebug/net/jsonViewer",
+ "firebug/net/fontViewer",
+ "firebug/chrome/infotip",
+ "firebug/css/cssPanel",
+ "firebug/chrome/searchBox",
+ "firebug/console/errors",
+ "firebug/net/netMonitor",
+ "firebug/net/netReps",
+ "firebug/net/netCacheReader",
+],
+function(Obj, Firebug, Firefox, Domplate, Xpcom, Locale,
+ Events, Options, Url, SourceLink, Http, Css, Dom, Win, Search, Str,
+ Arr, System, Menu, NetUtils, NetProgress, CSSInfoTip, TimeInfoTip) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+
+var layoutInterval = 300;
+var panelName = "net";
+var NetRequestEntry = Firebug.NetMonitor.NetRequestEntry;
+
+// ********************************************************************************************* //
+
+/**
+ * @panel Represents a Firebug panel that displays info about HTTP activity associated with
+ * the current page. This class is derived from <code>Firebug.ActivablePanel</code> in order
+ * to support activation (enable/disable). This allows to avoid (performance) expensive
+ * features if the functionality is not necessary for the user.
+ */
+function NetPanel() {}
+NetPanel.prototype = Obj.extend(Firebug.ActivablePanel,
+/** @lends NetPanel */
+{
+ name: panelName,
+ searchable: true,
+ editable: true,
+ breakable: true,
+ enableA11y: true,
+ order: 60,
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Initialization
+
+ initialize: function(context, doc)
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.NetPanel.initialize; " + context.getName());
+
+ this.queue = [];
+ this.onContextMenu = Obj.bind(this.onContextMenu, this);
+
+ Firebug.ActivablePanel.initialize.apply(this, arguments);
+
+ // Listen for set filters, so the panel is properly updated when needed
+ Firebug.NetMonitor.addListener(this);
+ },
+
+ destroy: function(state)
+ {
+ Firebug.NetMonitor.removeListener(this);
+ Firebug.ActivablePanel.destroy.apply(this, arguments);
+ },
+
+ initializeNode : function()
+ {
+ Events.addEventListener(this.panelNode, "contextmenu", this.onContextMenu, false);
+
+ this.onResizer = Obj.bind(this.onResize, this);
+ this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
+ Events.addEventListener(this.resizeEventTarget, "resize", this.onResizer, true);
+
+ Firebug.ActivablePanel.initializeNode.apply(this, arguments);
+ },
+
+ destroyNode : function()
+ {
+ Events.removeEventListener(this.panelNode, "contextmenu", this.onContextMenu, false);
+ Events.removeEventListener(this.resizeEventTarget, "resize", this.onResizer, true);
+
+ Firebug.ActivablePanel.destroyNode.apply(this, arguments);
+ },
+
+ loadPersistedContent: function(state)
+ {
+ this.initLayout();
+
+ var tbody = this.table.querySelector(".netTableBody");
+
+ // Move all net-rows from the persistedState to this panel.
+ var prevTableBody = state.panelNode.getElementsByClassName("netTableBody").item(0);
+ if (!prevTableBody)
+ return;
+
+ var files = [];
+
+ // Iterate persisted content - table rows. These rows can represent various things
+ // 1) netPageRow - already persisted group
+ // 2) netRow - request entries from the previous session (page load)
+ while (prevTableBody.firstChild)
+ {
+ var row = prevTableBody.firstChild;
+
+ // Collect all entries that belongs to the current page load (not history)
+ if (Css.hasClass(row, "netRow") &&
+ Css.hasClass(row, "hasHeaders") &&
+ !Css.hasClass(row, "history"))
+ {
+ row.repObject.history = true;
+ files.push({
+ file: row.repObject,
+ offset: 0 + "%",
+ width: 0 + "%",
+ elapsed: -1
+ });
+ }
+
+ if (Css.hasClass(row, "netPageRow"))
+ {
+ Css.removeClass(row, "opened");
+
+ // Insert the old page-load-history entry just before the summary-row,
+ // but after the limit row.
+ tbody.insertBefore(row, this.summaryRow);
+ }
+ else
+ {
+ prevTableBody.removeChild(row);
+ }
+ }
+
+ // New page-load-history entry is inserted just before summary row
+ // (at the end of page-load-history entry list)
+ var lastRow = this.summaryRow.previousSibling;
+ if (files.length)
+ {
+ var pageRow = Firebug.NetMonitor.NetPage.pageTag.insertRows({page: state}, lastRow)[0];
+ pageRow.files = files;
+
+ lastRow = this.summaryRow.previousSibling;
+ }
+
+ // Insert a separator tag at the end of page-load-history entry list.
+ if (this.table.getElementsByClassName("netPageRow").item(0))
+ Firebug.NetMonitor.NetPage.separatorTag.insertRows({}, lastRow);
+
+ Dom.scrollToBottom(this.panelNode);
+ },
+
+ savePersistedContent: function(state)
+ {
+ Firebug.ActivablePanel.savePersistedContent.apply(this, arguments);
+
+ state.pageTitle = NetUtils.getPageTitle(this.context);
+ },
+
+ show: function(state)
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.netPanel.show; " + this.context.getName(), state);
+
+ var enabled = Firebug.NetMonitor.isAlwaysEnabled();
+ this.showToolbarButtons("fbNetButtons", enabled);
+
+ if (enabled)
+ Firebug.chrome.setGlobalAttribute("cmd_firebug_togglePersistNet", "checked", this.persistContent);
+ else
+ this.table = null;
+
+ if (!enabled)
+ return;
+
+ if (!this.filterCategories)
+ this.setFilter(Options.get("netFilterCategories").split(" "));
+
+ this.layout();
+
+ if (!this.layoutInterval)
+ this.layoutInterval = setInterval(Obj.bindFixed(this.updateLayout, this), layoutInterval);
+
+ if (this.wasScrolledToBottom)
+ Dom.scrollToBottom(this.panelNode);
+ },
+
+ hide: function()
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.netPanel.hide; " + this.context.getName());
+
+ // clear the state that is tracking the infotip so it is reset after next show()
+ delete this.infoTipURL;
+ this.wasScrolledToBottom = Dom.isScrolledToBottom(this.panelNode);
+
+ clearInterval(this.layoutInterval);
+ delete this.layoutInterval;
+ },
+
+ updateOption: function(name, value)
+ {
+ if (name == "netShowBFCacheResponses")
+ this.updateBFCacheResponses();
+ },
+
+ updateBFCacheResponses: function()
+ {
+ if (this.table)
+ {
+ if (Firebug.netShowBFCacheResponses)
+ Css.setClass(this.table, "showBFCacheResponses");
+ else
+ Css.removeClass(this.table, "showBFCacheResponses");
+
+ // Recalculate the summary information since some requests doesn't have to
+ // be displayed now.
+ this.updateSummaries(NetUtils.now(), true);
+ }
+ },
+
+ updateSelection: function(object)
+ {
+ if (!object)
+ return;
+
+ var netProgress = this.context.netProgress;
+ var file = netProgress.getRequestFile(object.request);
+ if (!file)
+ {
+ for (var i=0; i<netProgress.requests.length; i++) {
+ if (Http.safeGetRequestName(netProgress.requests[i]) == object.href) {
+ file = netProgress.files[i];
+ break;
+ }
+ }
+ }
+
+ if (file)
+ {
+ Dom.scrollIntoCenterView(file.row);
+ if (!Css.hasClass(file.row, "opened"))
+ NetRequestEntry.toggleHeadersRow(file.row);
+ }
+ },
+
+ getPopupObject: function(target)
+ {
+ var header = Dom.getAncestorByClass(target, "netHeaderRow");
+ if (header)
+ return Firebug.NetMonitor.NetRequestTable;
+
+ return Firebug.ActivablePanel.getPopupObject.apply(this, arguments);
+ },
+
+ supportsObject: function(object, type)
+ {
+ return ((object instanceof SourceLink.SourceLink && object.type == "net") ? 2 : 0);
+ },
+
+ getOptionsMenuItems: function()
+ {
+ return [
+ this.disableCacheOption(),
+ "-",
+ Menu.optionMenu("net.option.Show_Paint_Events", "netShowPaintEvents",
+ "net.option.tip.Show_Paint_Events"),
+ Menu.optionMenu("net.option.Show_BFCache_Responses", "netShowBFCacheResponses",
+ "net.option.tip.Show_BFCache_Responses")
+ ];
+ },
+
+ disableCacheOption: function()
+ {
+ var BrowserCache = Firebug.NetMonitor.BrowserCache;
+ var disabled = !BrowserCache.isEnabled();
+ return {
+ label: "net.option.Disable_Browser_Cache",
+ type: "checkbox",
+ checked: disabled,
+ tooltiptext: "net.option.tip.Disable_Browser_Cache",
+ command: function()
+ {
+ BrowserCache.toggle(!this.hasAttribute("checked"));
+ }
+ };
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Context Menu
+
+ getContextMenuItems: function(nada, target)
+ {
+ var items = [];
+
+ var file = Firebug.getRepObject(target);
+ if (!file || !(file instanceof Firebug.NetFile))
+ return items;
+
+ var object = Firebug.getObjectByURL(this.context, file.href);
+ var isPost = NetUtils.isURLEncodedRequest(file, this.context);
+ var params = Url.parseURLParams(file.href);
+
+ items.push(
+ {
+ label: "CopyLocation",
+ tooltiptext: "clipboard.tip.Copy_Location",
+ command: Obj.bindFixed(System.copyToClipboard, System, file.href)
+ }
+ );
+
+ if (params.length > 0)
+ {
+ items.push(
+ {
+ id: "fbCopyUrlParameters",
+ label: "CopyURLParameters",
+ tooltiptext: "net.tip.Copy_URL_Parameters",
+ command: Obj.bindFixed(this.copyURLParams, this, file)
+ }
+ );
+ }
+
+ if (isPost)
+ {
+ items.push(
+ {
+ label: "CopyLocationParameters",
+ tooltiptext: "net.tip.Copy_Location_Parameters",
+ command: Obj.bindFixed(this.copyParams, this, file)
+ },
+ {
+ id: "fbCopyPOSTParameters",
+ label: "CopyPOSTParameters",
+ tooltiptext: "net.tip.Copy_POST_Parameters",
+ command: Obj.bindFixed(this.copyPOSTParams, this, file)
+ }
+ );
+ }
+
+ items.push(
+ {
+ label: "CopyRequestHeaders",
+ tooltiptext: "net.tip.Copy_Request_Headers",
+ command: Obj.bindFixed(this.copyRequestHeaders, this, file)
+ },
+ {
+ label: "CopyResponseHeaders",
+ tooltiptext: "net.tip.Copy_Response_Headers",
+ command: Obj.bindFixed(this.copyResponseHeaders, this, file)
+ }
+ );
+
+ if (NetUtils.textFileCategories.hasOwnProperty(file.category))
+ {
+ items.push(
+ {
+ label: "CopyResponse",
+ tooltiptext: "net.tip.Copy_Response",
+ command: Obj.bindFixed(this.copyResponse, this, file)
+ }
+ );
+ }
+
+ items.push(
+ {
+ id: "fbCopyAsCurl",
+ label: "CopyAsCurl",
+ tooltiptext: "net.tip.Copy_as_cURL",
+ command: Obj.bindFixed(this.copyAsCurl, this, file)
+ }
+ );
+
+ items.push(
+ "-",
+ {
+ label: "OpenInTab",
+ tooltiptext: "firebug.tip.Open_In_Tab",
+ command: Obj.bindFixed(this.openRequestInTab, this, file)
+ }
+ );
+
+ if (NetUtils.textFileCategories.hasOwnProperty(file.category))
+ {
+ items.push(
+ {
+ label: "Open_Response_In_New_Tab",
+ tooltiptext: "net.tip.Open_Response_In_New_Tab",
+ command: Obj.bindFixed(NetUtils.openResponseInTab, this, file)
+ }
+ );
+ }
+
+ items.push("-");
+
+ if (!file.loaded)
+ {
+ items.push(
+ {
+ label: "StopLoading",
+ tooltiptext: "net.tip.Stop_Loading",
+ command: Obj.bindFixed(this.stopLoading, this, file)
+ }
+ );
+ }
+
+ items.push(
+ {
+ label: "net.label.Resend",
+ tooltiptext: "net.tip.Resend",
+ id: "fbNetResend",
+ command: Obj.bindFixed(Firebug.Spy.XHR.resend, Firebug.Spy.XHR, file, this.context)
+ }
+ );
+
+ if (object)
+ {
+ // xxxHonza: This is dangerous construct. Inspect menu-items are generated
+ // automatically for every context menu in FirebugChrome.onContextShowing().
+ // Also, FirebugChrome is using Rep.getRealObject() while this logic is based
+ // on Firebug.getObjectByURL(), which can return different objects to be inspected.
+ // This feature has been introduced to allow inspecting of specific network requests
+ // like stylesheets and javascript files, but at that time the network request
+ // template (FirebugReps.NetFile) returned null for getRealObject().
+ // FirebugReps.NetFile.getRealObject() now returns an object representing the request
+ // itself (used also by 'Use in Command Line' feature), which is different from what
+ // Firebug.getObjectByURL() returns. See also issue 6647.
+ var subItems = Firebug.chrome.getInspectMenuItems(object);
+ if (subItems.length)
+ {
+ items.push("-");
+ items.push.apply(items, subItems);
+ }
+ }
+
+ if (file.isXHR)
+ {
+ var bp = this.context.netProgress.breakpoints.findBreakpoint(file.getFileURL());
+
+ items.push(
+ "-",
+ {
+ label: "net.label.Break_On_XHR",
+ tooltiptext: "net.tip.Break_On_XHR",
+ type: "checkbox",
+ checked: !!bp,
+ command: Obj.bindFixed(this.breakOnRequest, this, file)
+ }
+ );
+
+ if (bp)
+ {
+ items.push(
+ {
+ label: "EditBreakpointCondition",
+ tooltiptext: "breakpoints.tip.Edit_Breakpoint_Condition",
+ command: Obj.bindFixed(this.editBreakpointCondition, this, file)
+ }
+ );
+ }
+ }
+
+ return items;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Context Menu Commands
+
+ copyURLParams: function(file)
+ {
+ var params = Url.parseURLParams(file.href);
+ var result = params.map(function(o) { return o.name + "=" + o.value; });
+ System.copyToClipboard(result.join(Str.lineBreak()));
+ },
+
+ copyPOSTParams: function(file)
+ {
+ if (!NetUtils.isURLEncodedRequest(file, this.context))
+ return;
+
+ var text = NetUtils.getPostText(file, this.context, true);
+ if (text)
+ {
+ var lines = text.split("\n");
+ var params = Url.parseURLEncodedText(lines[lines.length-1]);
+ var result = params.map(function(o) { return o.name + "=" + o.value; });
+ System.copyToClipboard(result.join(Str.lineBreak()));
+ }
+ },
+
+ copyParams: function(file)
+ {
+ var text = NetUtils.getPostText(file, this.context, true);
+ var url = Url.reEncodeURL(file, text, true);
+ System.copyToClipboard(url);
+ },
+
+ copyRequestHeaders: function(file)
+ {
+ System.copyToClipboard(file.requestHeadersText);
+ },
+
+ copyResponseHeaders: function(file)
+ {
+ System.copyToClipboard(file.responseHeadersText);
+ },
+
+ copyResponse: function(file)
+ {
+ // Copy response to the clipboard
+ System.copyToClipboard(NetUtils.getResponseText(file, this.context));
+ },
+
+ copyAsCurl: function(file)
+ {
+ System.copyToClipboard(NetUtils.generateCurlCommand(file,
+ Options.get("net.curlAddCompressedArgument")));
+ },
+
+ openRequestInTab: function(file)
+ {
+ if (file.postText)
+ {
+ var lines = file.postText.split("\n");
+ Win.openNewTab(file.href, lines[lines.length-1]);
+ }
+ else
+ {
+ Win.openNewTab(file.href, null);
+ }
+ },
+
+ breakOnRequest: function(file)
+ {
+ if (!file.isXHR)
+ return;
+
+ // Create new or remove an existing breakpoint.
+ var breakpoints = this.context.netProgress.breakpoints;
+ var url = file.getFileURL();
+ var bp = breakpoints.findBreakpoint(url);
+ if (bp)
+ breakpoints.removeBreakpoint(url);
+ else
+ breakpoints.addBreakpoint(url);
+
+ this.enumerateRequests(function(currFile)
+ {
+ if (url != currFile.getFileURL())
+ return;
+
+ if (bp)
+ currFile.row.removeAttribute("breakpoint");
+ else
+ currFile.row.setAttribute("breakpoint", "true");
+ });
+ },
+
+ stopLoading: function(file)
+ {
+ const NS_BINDING_ABORTED = 0x804b0002;
+
+ file.request.cancel(NS_BINDING_ABORTED);
+ },
+
+ // Support for xhr breakpoint conditions.
+ onContextMenu: function(event)
+ {
+ if (!Css.hasClass(event.target, "sourceLine"))
+ return;
+
+ var row = Dom.getAncestorByClass(event.target, "netRow");
+ if (!row)
+ return;
+
+ var file = row.repObject;
+ var bp = this.context.netProgress.breakpoints.findBreakpoint(file.getFileURL());
+ if (!bp)
+ return;
+
+ this.editBreakpointCondition(file);
+ Events.cancelEvent(event);
+ },
+
+ editBreakpointCondition: function(file)
+ {
+ var bp = this.context.netProgress.breakpoints.findBreakpoint(file.getFileURL());
+ if (!bp)
+ return;
+
+ var condition = bp ? bp.condition : "";
+
+ this.selectedSourceBox = this.panelNode;
+ Firebug.Editor.startEditing(file.row, condition);
+ },
+
+ getEditor: function(target, value)
+ {
+ if (!this.conditionEditor)
+ this.conditionEditor = new Firebug.NetMonitor.ConditionEditor(this.document);
+
+ return this.conditionEditor;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Activable Panel
+
+ /**
+ * Support for panel activation.
+ */
+ onActivationChanged: function(enable)
+ {
+ if (FBTrace.DBG_NET || FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("net.NetPanel.onActivationChanged; enable: " + enable);
+
+ if (enable)
+ {
+ Firebug.NetMonitor.addObserver(this);
+ Firebug.TabCacheModel.addObserver(this);
+ }
+ else
+ {
+ Firebug.NetMonitor.removeObserver(this);
+ Firebug.TabCacheModel.removeObserver(this);
+ }
+ },
+
+ breakOnNext: function(breaking)
+ {
+ this.context.breakOnXHR = breaking;
+ },
+
+ shouldBreakOnNext: function()
+ {
+ return this.context.breakOnXHR;
+ },
+
+ getBreakOnNextTooltip: function(enabled)
+ {
+ return (enabled ? Locale.$STR("net.Disable Break On XHR") : Locale.$STR("net.Break On XHR"));
+ },
+
+ // Support for info tips.
+ showInfoTip: function(infoTip, target, x, y)
+ {
+ var row = Dom.getAncestorByClass(target, "netRow");
+ if (row && row.repObject)
+ {
+ if (Dom.getAncestorByClass(target, "netTotalSizeCol"))
+ {
+ var infoTipURL = "netTotalSize";
+ if (infoTipURL == this.infoTipURL)
+ return true;
+
+ this.infoTipURL = infoTipURL;
+ return this.populateTotalSizeInfoTip(infoTip, row);
+ }
+ else if (Dom.getAncestorByClass(target, "netSizeCol"))
+ {
+ var infoTipURL = row.repObject.href + "-netsize";
+ if (infoTipURL == this.infoTipURL && row.repObject == this.infoTipFile)
+ return true;
+
+ this.infoTipURL = infoTipURL;
+ this.infoTipFile = row.repObject;
+ return this.populateSizeInfoTip(infoTip, row.repObject);
+ }
+ else if (Dom.getAncestorByClass(target, "netTimeCol"))
+ {
+ var infoTipURL = row.repObject.href + "-nettime";
+ if (infoTipURL == this.infoTipURL && row.repObject == this.infoTipFile)
+ return true;
+
+ this.infoTipURL = infoTipURL;
+ this.infoTipFile = row.repObject;
+ return this.populateTimeInfoTip(infoTip, row.repObject);
+ }
+ else if (Css.hasClass(row, "category-image") &&
+ !Dom.getAncestorByClass(target, "netRowHeader"))
+ {
+ var infoTipURL = row.repObject.href + "-image";
+ if (infoTipURL == this.infoTipURL)
+ return true;
+
+ this.infoTipURL = infoTipURL;
+ return CSSInfoTip.populateImageInfoTip(infoTip, row.repObject.href);
+ }
+ }
+
+ delete this.infoTipURL;
+ return false;
+ },
+
+ populateTimeInfoTip: function(infoTip, file)
+ {
+ return TimeInfoTip.render(this.context, file, infoTip);
+ },
+
+ populateSizeInfoTip: function(infoTip, file)
+ {
+ Firebug.NetMonitor.SizeInfoTip.render(file, infoTip);
+ return true;
+ },
+
+ populateTotalSizeInfoTip: function(infoTip, row)
+ {
+ var totalSizeLabel = row.getElementsByClassName("netTotalSizeLabel").item(0);
+ var file = {size: totalSizeLabel.getAttribute("totalSize")};
+ Firebug.NetMonitor.SizeInfoTip.tag.replace({file: file}, infoTip);
+ return true;
+ },
+
+ // Support for search within the panel.
+ getSearchOptionsMenuItems: function()
+ {
+ return [
+ Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive",
+ "search.tip.Case_Sensitive"),
+ //Firebug.Search.searchOptionMenu("search.net.Headers", "netSearchHeaders"),
+ //Firebug.Search.searchOptionMenu("search.net.Parameters", "netSearchParameters"),
+ Firebug.Search.searchOptionMenu("search.Use_Regular_Expression",
+ "searchUseRegularExpression", "search.tip.Use_Regular_Expression"),
+ Firebug.Search.searchOptionMenu("search.net.Response_Bodies", "netSearchResponseBody",
+ "search.net.tip.Response_Bodies")
+ ];
+ },
+
+ search: function(text, reverse)
+ {
+ if (!text)
+ {
+ delete this.currentSearch;
+ this.highlightNode(null);
+ return false;
+ }
+
+ var row;
+ if (this.currentSearch && text == this.currentSearch.text)
+ {
+ row = this.currentSearch.findNext(true, false, reverse, Firebug.Search.isCaseSensitive(text));
+ }
+ else
+ {
+ this.currentSearch = new NetPanelSearch(this);
+ row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
+ }
+
+ if (row)
+ {
+ var sel = this.document.defaultView.getSelection();
+ sel.removeAllRanges();
+ sel.addRange(this.currentSearch.range);
+
+ Dom.scrollIntoCenterView(row, this.panelNode);
+ if(this.currentSearch.shouldSearchResponses() &&
+ Dom.getAncestorByClass(row, "netInfoResponseText"))
+ {
+ this.highlightNode(row);
+ }
+ else
+ {
+ this.highlightNode(Dom.getAncestorByClass(row, "netRow"));
+ }
+ Events.dispatch(this.fbListeners, 'onNetMatchFound', [this, text, row]);
+ return true;
+ }
+ else
+ {
+ Events.dispatch(this.fbListeners, 'onNetMatchFound', [this, text, null]);
+ return false;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onFiltersSet: function(filterCategories)
+ {
+ this.setFilter(filterCategories);
+ this.updateSummaries(NetUtils.now(), true);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ updateFile: function(file)
+ {
+ if (!file.invalid)
+ {
+ file.invalid = true;
+ this.queue.push(file);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ updateLayout: function()
+ {
+ if (!this.queue.length)
+ return;
+
+ var rightNow = NetUtils.now();
+ var length = this.queue.length;
+
+ if (this.panelNode.offsetHeight)
+ this.wasScrolledToBottom = Dom.isScrolledToBottom(this.panelNode);
+
+ this.layout();
+
+ if (this.wasScrolledToBottom)
+ Dom.scrollToBottom(this.panelNode);
+
+ this.updateHRefLabelWidth();
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.updateLayout; Layout done, time elapsed: " +
+ Str.formatTime(NetUtils.now() - rightNow) + " (" + length + ")");
+ },
+
+ layout: function()
+ {
+ if (!this.queue.length || !this.context.netProgress ||
+ !Firebug.NetMonitor.isAlwaysEnabled())
+ return;
+
+ this.initLayout();
+
+ var rightNow = NetUtils.now();
+ this.updateRowData(rightNow);
+ this.updateLogLimit(Firebug.NetMonitor.maxQueueRequests);
+ this.updateTimeline(rightNow);
+ this.updateSummaries(rightNow);
+ },
+
+ initLayout: function()
+ {
+ if (!this.table)
+ {
+ var limitInfo = {
+ totalCount: 0,
+ limitPrefsTitle: Locale.$STRF("LimitPrefsTitle",
+ [Options.prefDomain+".net.logLimit"])
+ };
+
+ this.table = Firebug.NetMonitor.NetRequestTable.tableTag.append({}, this.panelNode);
+ var tbody = this.table.querySelector(".netTableBody");
+ this.limitRow = Firebug.NetMonitor.NetLimit.createRow(tbody, limitInfo);
+ this.summaryRow = NetRequestEntry.summaryTag.insertRows({}, this.table.lastChild.lastChild)[0];
+
+ NetRequestEntry.footerTag.insertRows({}, this.summaryRow);
+
+ // Update visibility of columns according to the preferences
+ var hiddenCols = Options.get("net.hiddenColumns");
+ if (hiddenCols)
+ this.table.setAttribute("hiddenCols", hiddenCols);
+
+ this.updateBFCacheResponses();
+ }
+ },
+
+ updateRowData: function(rightNow)
+ {
+ var queue = this.queue;
+ this.queue = [];
+
+ var phase;
+ var newFileData = [];
+
+ for (var i = 0; i < queue.length; ++i)
+ {
+ var file = queue[i];
+
+ // xxxHonza: the entire phase management should ba part of NetPanel object
+ if (!file.phase && this.context.netProgress)
+ this.context.netProgress.extendPhase(file);
+
+ if (!file.phase)
+ continue;
+
+ file.invalid = false;
+
+ phase = this.calculateFileTimes(file, phase, rightNow);
+
+ this.updateFileRow(file, newFileData);
+ this.invalidatePhase(phase);
+ }
+
+ if (newFileData.length)
+ {
+ var tbody = this.table.querySelector(".netTableBody");
+ var lastRow = this.summaryRow.previousSibling;
+ this.insertRows(newFileData, lastRow);
+ }
+ },
+
+ insertRows: function(files, lastRow)
+ {
+ var row = NetRequestEntry.fileTag.insertRows({files: files}, lastRow)[0];
+
+ for (var i = 0; i < files.length; ++i)
+ {
+ var file = files[i].file;
+ row.repObject = file;
+ file.row = row;
+
+ if (file.breakLayout)
+ row.setAttribute("breakLayout", "true");
+
+ // Make sure a breakpoint is displayed.
+ var breakpoints = this.context.netProgress.breakpoints;
+ if (breakpoints && breakpoints.findBreakpoint(file.getFileURL()))
+ row.setAttribute("breakpoint", "true");
+
+ // Allow customization of request entries in the list. A row is represented
+ // by <TR> HTML element.
+ Events.dispatch(Firebug.NetMonitor.NetRequestTable.fbListeners,
+ "onCreateRequestEntry", [this, row]);
+
+ row = row.nextSibling;
+ }
+ },
+
+ invalidatePhase: function(phase)
+ {
+ if (phase && !phase.invalidPhase)
+ {
+ phase.invalidPhase = true;
+ this.invalidPhases = true;
+ }
+ },
+
+ updateFileRow: function(file, newFileData)
+ {
+ var row = file.row;
+ if (!row)
+ {
+ newFileData.push({
+ file: file,
+ offset: this.barOffset + "%",
+ width: this.barReceivingWidth + "%",
+ elapsed: file.loaded ? this.elapsed : -1
+ });
+ }
+ else
+ {
+ var sizeLabel = row.getElementsByClassName("netSizeLabel").item(0);
+
+ var sizeText = NetRequestEntry.getSize(file);
+
+ // Show also total downloaded size for requests in progress.
+ if (file.totalReceived)
+ sizeText += " (" + Str.formatSize(file.totalReceived) + ")";
+
+ sizeLabel.firstChild.nodeValue = sizeText;
+
+ var methodLabel = row.getElementsByClassName("netStatusLabel").item(0);
+ methodLabel.firstChild.nodeValue = NetRequestEntry.getStatus(file);
+
+ var hrefLabel = row.getElementsByClassName("netHrefLabel").item(0);
+ hrefLabel.firstChild.nodeValue = NetRequestEntry.getHref(file);
+
+ if (file.mimeType)
+ {
+ // Force update category.
+ file.category = null;
+ for (var category in NetUtils.fileCategories)
+ Css.removeClass(row, "category-" + category);
+ Css.setClass(row, "category-" + NetUtils.getFileCategory(file));
+ }
+
+ var remoteIPLabel = row.querySelector(".netRemoteAddressCol .netAddressLabel");
+ remoteIPLabel.textContent = NetRequestEntry.getRemoteAddress(file);
+
+ var localIPLabel = row.querySelector(".netLocalAddressCol .netAddressLabel");
+ localIPLabel.textContent = NetRequestEntry.getLocalAddress(file);
+
+ if (file.requestHeaders)
+ Css.setClass(row, "hasHeaders");
+
+ if (file.fromCache)
+ Css.setClass(row, "fromCache");
+ else
+ Css.removeClass(row, "fromCache");
+
+ if (file.fromBFCache)
+ Css.setClass(row, "fromBFCache");
+ else
+ Css.removeClass(row, "fromBFCache");
+
+ if (NetRequestEntry.isError(file))
+ Css.setClass(row, "responseError");
+ else
+ Css.removeClass(row, "responseError");
+
+ var netBar = Dom.getChildByClass(row, "netTimeCol").childNodes[1];
+ var timeLabel = Dom.getChildByClass(netBar, "netReceivingBar").firstChild;
+ timeLabel.textContent = NetRequestEntry.getElapsedTime({elapsed: this.elapsed});
+
+ if (file.loaded)
+ Css.setClass(row, "loaded");
+ else
+ Css.removeClass(row, "loaded");
+
+ if (Css.hasClass(row, "opened"))
+ {
+ var netInfoBox = row.nextSibling.getElementsByClassName("netInfoBody").item(0);
+ Firebug.NetMonitor.NetInfoBody.updateInfo(netInfoBox, file, this.context);
+ }
+ }
+ },
+
+ updateTimeline: function(rightNow)
+ {
+ var tbody = this.table.querySelector(".netTableBody");
+
+ // XXXjoe Don't update rows whose phase is done and layed out already
+ var phase;
+ for (var row = tbody.firstChild; row; row = row.nextSibling)
+ {
+ var file = row.repObject;
+
+ // Some rows aren't associated with a file (e.g. header, sumarry).
+ if (!file)
+ continue;
+
+ if (!file.loaded)
+ continue;
+
+ phase = this.calculateFileTimes(file, phase, rightNow);
+
+ // Parent node for all timing bars.
+ var netBar = row.querySelector(".netBar");
+
+ // Get bar nodes
+ var blockingBar = netBar.childNodes[1];
+ var resolvingBar = blockingBar.nextSibling;
+ var connectingBar = resolvingBar.nextSibling;
+ var sendingBar = connectingBar.nextSibling;
+ var waitingBar = sendingBar.nextSibling;
+ var receivingBar = waitingBar.nextSibling;
+
+ // All bars starts at the beginning
+ resolvingBar.style.left = connectingBar.style.left = sendingBar.style.left =
+ blockingBar.style.left =
+ waitingBar.style.left = receivingBar.style.left = this.barOffset + "%";
+
+ // Sets width of all bars (using style). The width is computed according to measured timing.
+ blockingBar.style.width = this.barBlockingWidth + "%";
+ resolvingBar.style.width = this.barResolvingWidth + "%";
+ connectingBar.style.width = this.barConnectingWidth + "%";
+ sendingBar.style.width = this.barSendingWidth + "%";
+ waitingBar.style.width = this.barWaitingWidth + "%";
+ receivingBar.style.width = this.barReceivingWidth + "%";
+
+ // Remove existing bars
+ var bars = netBar.querySelectorAll(".netPageTimingBar");
+ for (var i=0; i<bars.length; i++)
+ bars[i].parentNode.removeChild(bars[i]);
+
+ // Generate UI for page timings (vertical lines displayed for the first phase)
+ for (var i=0; i<phase.timeStamps.length; i++)
+ {
+ var timing = phase.timeStamps[i];
+ if (!timing.offset)
+ continue;
+
+ var bar = netBar.ownerDocument.createElement("DIV");
+ netBar.appendChild(bar);
+
+ if (timing.classes)
+ Css.setClass(bar, timing.classes);
+
+ Css.setClass(bar, "netPageTimingBar");
+
+ bar.style.left = timing.offset + "%";
+ bar.style.display = "block";
+ }
+ }
+ },
+
+ calculateFileTimes: function(file, phase, rightNow)
+ {
+ var phases = this.context.netProgress.phases;
+
+ if (phase != file.phase)
+ {
+ phase = file.phase;
+ this.phaseStartTime = phase.startTime;
+ this.phaseEndTime = phase.endTime ? phase.endTime : rightNow;
+
+ // End of the first phase has to respect even the window "onload" event time, which
+ // can occur after the last received file. This sets the extent of the timeline so,
+ // the windowLoadBar is visible.
+ if (phase.windowLoadTime && this.phaseEndTime < phase.windowLoadTime)
+ this.phaseEndTime = phase.windowLoadTime;
+
+ this.phaseElapsed = this.phaseEndTime - phase.startTime;
+ }
+
+ var elapsed = file.loaded ? file.endTime - file.startTime : 0; /*this.phaseEndTime - file.startTime*/
+ this.barOffset = Math.floor(((file.startTime-this.phaseStartTime)/this.phaseElapsed) * 100);
+
+ //Helper log for debugging timing problems.
+ //NetUtils.traceRequestTiming("net.calculateFileTimes;", file);
+
+ var blockingEnd = NetUtils.getBlockingEndTime(file);
+ this.barBlockingWidth = Math.round(((blockingEnd - file.startTime) / this.phaseElapsed) * 100);
+ this.barResolvingWidth = Math.round(((file.connectingTime - file.startTime) / this.phaseElapsed) * 100);
+ this.barConnectingWidth = Math.round(((file.sendingTime - file.startTime) / this.phaseElapsed) * 100);
+ this.barSendingWidth = Math.round(((file.waitingForTime - file.startTime) / this.phaseElapsed) * 100);
+ this.barWaitingWidth = Math.round(((file.respondedTime - file.startTime) / this.phaseElapsed) * 100);
+ this.barReceivingWidth = Math.round((elapsed / this.phaseElapsed) * 100);
+
+ // Total request time doesn't include the time spent in queue.
+ // xxxHonza: since all phases are now graphically distinguished it's easy to
+ // see blocking requests. It's make sense to display the real total time now.
+ this.elapsed = elapsed/* - (file.sendingTime - file.connectedTime)*/;
+
+ // The nspr timer doesn't have 1ms precision, so it can happen that entire
+ // request is executed in l ms (so the total is zero). Let's display at least
+ // one bar in such a case so the timeline is visible.
+ if (this.elapsed <= 0)
+ this.barReceivingWidth = "1";
+
+ // Compute also offset for page timings, e.g.: contentLoadBar and windowLoadBar,
+ // which are displayed for the first phase. This is done only if a page exists.
+ this.calculateTimeStamps(file, phase);
+
+ return phase;
+ },
+
+ calculateTimeStamps: function(file, phase)
+ {
+ // Iterate all time stamps for the current phase and calculate offsets (from the
+ // beginning of the waterfall graphs) for the vertical lines.
+ for (var i=0; i<phase.timeStamps.length; i++)
+ {
+ var timeStamp = phase.timeStamps[i];
+ var time = timeStamp.time;
+
+ if (time > 0)
+ {
+ var offset = (((time - this.phaseStartTime)/this.phaseElapsed) * 100).toFixed(3);
+ timeStamp.offset = offset;
+ }
+ }
+ },
+
+ updateSummaries: function(rightNow, updateAll)
+ {
+ if (!this.invalidPhases && !updateAll)
+ return;
+
+ this.invalidPhases = false;
+
+ var phases = this.context.netProgress.phases;
+ if (!phases.length)
+ return;
+
+ var fileCount = 0, totalSize = 0, cachedSize = 0, totalTime = 0;
+ for (var i = 0; i < phases.length; ++i)
+ {
+ var phase = phases[i];
+ phase.invalidPhase = false;
+
+ var summary = this.summarizePhase(phase, rightNow);
+ fileCount += summary.fileCount;
+ totalSize += summary.totalSize;
+ cachedSize += summary.cachedSize;
+ totalTime += summary.totalTime;
+ }
+
+ var row = this.summaryRow;
+ if (!row)
+ return;
+
+ var countLabel = row.getElementsByClassName("netCountLabel").item(0); //childNodes[1].firstChild;
+ countLabel.textContent = Locale.$STRP("plural.Request_Count2", [fileCount]);
+
+ var sizeLabel = row.getElementsByClassName("netTotalSizeLabel").item(0); //childNodes[4].firstChild;
+ sizeLabel.setAttribute("totalSize", totalSize);
+ sizeLabel.textContent = NetRequestEntry.formatSize(totalSize);
+
+ var cacheSizeLabel = row.getElementsByClassName("netCacheSizeLabel").item(0);
+ cacheSizeLabel.setAttribute("collapsed", cachedSize == 0);
+ cacheSizeLabel.textContent = "(" + Locale.$STRF("net.summary.from_cache",
+ [NetRequestEntry.formatSize(cachedSize)]) + ")";
+
+ var timeLabel = row.getElementsByClassName("netTotalTimeLabel").item(0);
+ var timeText = NetRequestEntry.formatTime(totalTime);
+ var firstPhase = phases[0];
+ if (firstPhase.windowLoadTime)
+ {
+ var loadTime = firstPhase.windowLoadTime - firstPhase.startTime;
+ timeText += " (onload: " + NetRequestEntry.formatTime(loadTime) + ")";
+ }
+
+ timeLabel.textContent = timeText;
+ },
+
+ summarizePhase: function(phase, rightNow)
+ {
+ var cachedSize = 0, totalSize = 0;
+
+ var categories = this.filterCategories;
+ if (categories == "all")
+ categories = null;
+
+ var fileCount = 0;
+ var minTime = 0, maxTime = 0;
+
+ for (var i=0; i<phase.files.length; i++)
+ {
+ var file = phase.files[i];
+
+ // Do not count BFCache responses if the user says so.
+ if (!Firebug.netShowBFCacheResponses && file.fromBFCache)
+ continue;
+
+ if (!categories || categories.indexOf(file.category) != -1)
+ {
+ if (file.loaded)
+ {
+ ++fileCount;
+
+ if (file.size > 0)
+ {
+ totalSize += file.size;
+ if (file.fromCache)
+ cachedSize += file.size;
+ }
+
+ if (!minTime || file.startTime < minTime)
+ minTime = file.startTime;
+ if (file.endTime > maxTime)
+ maxTime = file.endTime;
+ }
+ }
+ }
+
+ var totalTime = maxTime - minTime;
+ return {cachedSize: cachedSize, totalSize: totalSize, totalTime: totalTime,
+ fileCount: fileCount};
+ },
+
+ updateLogLimit: function(limit)
+ {
+ var netProgress = this.context.netProgress;
+
+ if (!netProgress) // XXXjjb Honza, please check, I guess we are getting here with the context not setup
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.updateLogLimit; NO NET CONTEXT for: " + this.context.getName());
+ return;
+ }
+
+ // Must be positive number;
+ limit = Math.max(0, limit);
+
+ var filesLength = netProgress.files.length;
+ if (!filesLength || filesLength <= limit)
+ return;
+
+ // Remove old requests.
+ var removeCount = Math.max(0, filesLength - limit);
+ for (var i=0; i<removeCount; i++)
+ {
+ var file = netProgress.files[0];
+ this.removeLogEntry(file);
+
+ // Remove the file occurrence from the queue.
+ for (var j=0; j<this.queue.length; j++)
+ {
+ if (this.queue[j] == file) {
+ this.queue.splice(j, 1);
+ j--;
+ }
+ }
+ }
+ },
+
+ removeLogEntry: function(file, noInfo)
+ {
+ // Remove associated row-entry from the UI before the removeFile method
+ // is called (and file.row erased).
+ if (this.table)
+ {
+ var tbody = this.table.querySelector(".netTableBody");
+ if (tbody && file.row)
+ tbody.removeChild(file.row);
+ }
+
+ if (!this.removeFile(file))
+ return;
+
+ if (!this.table)
+ return;
+
+ var tbody = this.table.querySelector(".netTableBody");
+ if (!tbody)
+ return;
+
+ if (noInfo || !this.limitRow)
+ return;
+
+ this.limitRow.limitInfo.totalCount++;
+
+ Firebug.NetMonitor.NetLimit.updateCounter(this.limitRow);
+
+ //if (netProgress.currentPhase == file.phase)
+ // netProgress.currentPhase = null;
+ },
+
+ removeFile: function(file)
+ {
+ var netProgress = this.context.netProgress;
+ var index = netProgress.files.indexOf(file);
+ if (index == -1)
+ return false;
+
+ netProgress.files.splice(index, 1);
+ netProgress.requests.splice(index, 1);
+
+ // Don't forget to remove the phase whose last file has been removed.
+ var phase = file.phase;
+
+ // xxxHonza: This needs to be examined yet. Looks like the queue contains
+ // requests from the previous page. When flushed the requestedFile isn't called
+ // and the phase is not set.
+ if (!phase)
+ return true;
+
+ phase.removeFile(file);
+ if (!phase.files.length)
+ {
+ Arr.remove(netProgress.phases, phase);
+
+ if (netProgress.currentPhase == phase)
+ netProgress.currentPhase = null;
+ }
+
+ file.clear();
+
+ return true;
+ },
+
+ insertActivationMessage: function()
+ {
+ if (!Firebug.NetMonitor.isAlwaysEnabled())
+ return;
+
+ // Make sure the basic structure of the table panel is there.
+ this.initLayout();
+
+ // Get the last request row before summary row.
+ var lastRow = this.summaryRow.previousSibling;
+
+ // Insert an activation message (if the last row isn't the message already);
+ if (Css.hasClass(lastRow, "netActivationRow"))
+ return;
+
+ var message = NetRequestEntry.activationTag.insertRows({}, lastRow)[0];
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.insertActivationMessage; " + this.context.getName(), message);
+ },
+
+ enumerateRequests: function(fn)
+ {
+ if (!this.table)
+ return;
+
+ var rows = this.table.getElementsByClassName("netRow");
+ for (var i=0; i<rows.length; i++)
+ {
+ var row = rows[i];
+ var pageRow = Css.hasClass(row, "netPageRow");
+
+ if (Css.hasClass(row, "collapsed") && !pageRow)
+ continue;
+
+ if (Css.hasClass(row, "history"))
+ continue;
+
+ // Export also history. These requests can be collapsed and so not visible.
+ if (row.files)
+ {
+ for (var j=0; j<row.files.length; j++)
+ fn(row.files[j].file);
+ }
+
+ var file = Firebug.getRepObject(row);
+ if (file)
+ fn(file);
+ }
+ },
+
+ setFilter: function(filterCategories)
+ {
+ this.filterCategories = filterCategories;
+
+ var panelNode = this.panelNode;
+ for (var category in NetUtils.fileCategories)
+ {
+ if (filterCategories.join(" ") != "all" && filterCategories.indexOf(category) == -1)
+ Css.setClass(panelNode, "hideCategory-" + category);
+ else
+ Css.removeClass(panelNode, "hideCategory-" + category);
+ }
+ },
+
+ clear: function()
+ {
+ Dom.clearNode(this.panelNode);
+
+ this.table = null;
+ this.summaryRow = null;
+ this.limitRow = null;
+
+ this.queue = [];
+ this.invalidPhases = false;
+
+ if (this.context.netProgress)
+ this.context.netProgress.clear();
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.panel.clear; " + this.context.getName());
+ },
+
+ onResize: function()
+ {
+ this.updateHRefLabelWidth();
+ },
+
+ updateHRefLabelWidth: function()
+ {
+ if (!this.table)
+ return;
+
+ // Update max-width of the netHrefLabel according to the width of the parent column.
+ // I don't know if there is a way to do this in Css.
+ // See Issue 3633: Truncated URLs in net panel
+ var netHrefCol = this.table.querySelector("#netHrefCol");
+ var hrefLabel = this.table.querySelector(".netHrefLabel");
+
+ if (!hrefLabel)
+ return;
+
+ if (!Firebug.currentContext)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("net.updateHRefLabelWidth; Firebug.currentContext == NULL");
+ return;
+ }
+
+ var maxWidth = netHrefCol.clientWidth;
+
+ var rules = Dom.domUtils.getCSSStyleRules(hrefLabel);
+ for (var i = 0; i < rules.Count(); ++i)
+ {
+ var rule = Xpcom.QI(rules.GetElementAt(i), Ci.nsIDOMCSSStyleRule);
+ if (rule.selectorText == ".netHrefLabel")
+ {
+ var style = rule.style;
+ var paddingLeft = parseInt(style.getPropertyValue("padding-left"));
+ if (maxWidth == 0)
+ style.setProperty("max-width", "15%", "");
+ else
+ style.setProperty("max-width", (maxWidth - paddingLeft) + "px", "");
+ break;
+ }
+ }
+ },
+});
+
+// ********************************************************************************************* //
+
+/**
+ * Use this object to automatically select Net panel and inspect a network request.
+ * Firebug.chrome.select(new Firebug.NetMonitor.NetFileLink(url [, request]));
+ */
+Firebug.NetMonitor.NetFileLink = function(href, request)
+{
+ this.href = href;
+ this.request = request;
+};
+
+Firebug.NetMonitor.NetFileLink.prototype =
+{
+ toString: function()
+ {
+ return this.message + this.href;
+ }
+};
+
+// ********************************************************************************************* //
+
+var NetPanelSearch = function(panel, rowFinder)
+{
+ var panelNode = panel.panelNode;
+ var doc = panelNode.ownerDocument;
+ var searchRange, startPt;
+
+ // Common search object methods.
+ this.find = function(text, reverse, caseSensitive)
+ {
+ this.text = text;
+
+ Search.finder.findBackwards = !!reverse;
+ Search.finder.caseSensitive = !!caseSensitive;
+
+ this.currentRow = this.getFirstRow();
+ this.resetRange();
+
+ return this.findNext(false, false, reverse, caseSensitive);
+ };
+
+ this.findNext = function(wrapAround, sameNode, reverse, caseSensitive)
+ {
+ while (this.currentRow)
+ {
+ var match = this.findNextInRange(reverse, caseSensitive);
+ if (match)
+ return match;
+
+ if (this.shouldSearchResponses())
+ this.findNextInResponse(reverse, caseSensitive);
+
+ this.currentRow = this.getNextRow(wrapAround, reverse);
+
+ if (this.currentRow)
+ this.resetRange();
+ }
+ };
+
+ // Internal search helpers.
+ this.findNextInRange = function(reverse, caseSensitive)
+ {
+ if (this.range)
+ {
+ startPt = doc.createRange();
+ if (reverse)
+ startPt.setStartBefore(this.currentNode);
+ else
+ startPt.setStart(this.currentNode, this.range.endOffset);
+
+ this.range = Search.finder.Find(this.text, searchRange, startPt, searchRange);
+ if (this.range)
+ {
+ this.currentNode = this.range ? this.range.startContainer : null;
+ return this.currentNode ? this.currentNode.parentNode : null;
+ }
+ }
+
+ if (this.currentNode)
+ {
+ startPt = doc.createRange();
+ if (reverse)
+ startPt.setStartBefore(this.currentNode);
+ else
+ startPt.setStartAfter(this.currentNode);
+ }
+
+ this.range = Search.finder.Find(this.text, searchRange, startPt, searchRange);
+ this.currentNode = this.range ? this.range.startContainer : null;
+ return this.currentNode ? this.currentNode.parentNode : null;
+ },
+
+ this.findNextInResponse = function(reverse, caseSensitive)
+ {
+ var file = Firebug.getRepObject(this.currentRow);
+ if (!file)
+ return;
+
+ var scanRE = Firebug.Search.getTestingRegex(this.text);
+ if (scanRE.test(file.responseText))
+ {
+ if (!Css.hasClass(this.currentRow, "opened"))
+ NetRequestEntry.toggleHeadersRow(this.currentRow);
+
+ var netInfoRow = this.currentRow.nextSibling;
+ var netInfoBox = netInfoRow.getElementsByClassName("netInfoBody").item(0);
+ Firebug.NetMonitor.NetInfoBody.selectTabByName(netInfoBox, "Response");
+
+ // Before the search is started, the new content must be properly
+ // layouted within the page. The layout is executed by reading
+ // the following property.
+ // xxxHonza: This workaround can be removed as soon as #488427 is fixed.
+ doc.body.offsetWidth;
+ }
+ },
+
+ // Helpers
+ this.resetRange = function()
+ {
+ searchRange = doc.createRange();
+ searchRange.setStart(this.currentRow, 0);
+ searchRange.setEnd(this.currentRow, this.currentRow.childNodes.length);
+
+ startPt = searchRange;
+ };
+
+ this.getFirstRow = function()
+ {
+ var table = panelNode.getElementsByClassName("netTable").item(0);
+ return table.querySelector(".netTableBody").firstChild;
+ };
+
+ this.getNextRow = function(wrapAround, reverse)
+ {
+ // xxxHonza: reverse searching missing.
+ for (var sib = this.currentRow.nextSibling; sib; sib = sib.nextSibling)
+ {
+ if (this.shouldSearchResponses())
+ return sib;
+ else if (Css.hasClass(sib, "netRow"))
+ return sib;
+ }
+
+ return wrapAround ? this.getFirstRow() : null;
+ };
+
+ this.shouldSearchResponses = function()
+ {
+ return Firebug["netSearchResponseBody"];
+ };
+};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+Firebug.NetMonitor.ConditionEditor = function(doc)
+{
+ Firebug.Breakpoint.ConditionEditor.apply(this, arguments);
+};
+
+Firebug.NetMonitor.ConditionEditor.prototype = domplate(Firebug.Breakpoint.ConditionEditor.prototype,
+{
+ endEditing: function(target, value, cancel)
+ {
+ if (cancel)
+ return;
+
+ var file = target.repObject;
+ var panel = Firebug.getElementPanel(target);
+ var bp = panel.context.netProgress.breakpoints.findBreakpoint(file.getFileURL());
+ if (bp)
+ bp.condition = value;
+ }
+});
+
+// ********************************************************************************************* //
+// Browser Cache
+
+Firebug.NetMonitor.BrowserCache =
+{
+ cacheDomain: "browser.cache",
+
+ isEnabled: function()
+ {
+ var diskCache = Options.getPref(this.cacheDomain, "disk.enable");
+ var memoryCache = Options.getPref(this.cacheDomain, "memory.enable");
+ return diskCache && memoryCache;
+ },
+
+ toggle: function(state)
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.BrowserCache.toggle; " + state);
+
+ Options.setPref(this.cacheDomain, "disk.enable", state);
+ Options.setPref(this.cacheDomain, "memory.enable", state);
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerPanel(NetPanel);
+
+return Firebug.NetMonitor;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/net/netProgress.js b/content/firebug/net/netProgress.js
index a40d5a3..dc616a0 100644
--- a/content/firebug/net/netProgress.js
+++ b/content/firebug/net/netProgress.js
@@ -1,1172 +1,1172 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/url",
- "firebug/js/sourceLink",
- "firebug/lib/http",
- "firebug/lib/css",
- "firebug/chrome/window",
- "firebug/lib/string",
- "firebug/lib/array",
- "firebug/lib/system",
- "firebug/net/netUtils"
-],
-function(Obj, Firebug, Locale, Events, Url, SourceLink, Http, Css, Win, Str,
- Arr, System, NetUtils) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-const reIgnore = /about:|javascript:|resource:|chrome:|jar:/;
-const reResponseStatus = /HTTP\/1\.\d\s(\d+)\s(.*)/;
-
-var panelName = "net";
-
-// ********************************************************************************************* //
-// Net Progress
-
-function NetProgress(context)
-{
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.NetProgress.constructor; " +
- (context ? context.getName() : "NULL Context"));
-
- this.context = context;
-
- var panel = null;
- var queue = [];
-
- this.post = function(handler, args)
- {
- if (panel)
- {
- var file = handler.apply(this, args);
- if (file)
- {
- panel.updateFile(file);
-
- // If the panel isn't currently visible, make sure the limit is up to date.
- if (!panel.layoutInterval)
- panel.updateLogLimit(Firebug.NetMonitor.maxQueueRequests);
-
- return file;
- }
- }
- else
- {
- // The first page request is made before the initContext (known problem).
- queue.push(handler, args);
- }
- };
-
- this.flush = function()
- {
- for (var i=0; i<queue.length; i+=2)
- this.post(queue[i], queue[i+1]);
-
- queue = [];
- };
-
- this.activate = function(activePanel)
- {
- this.panel = panel = activePanel;
- if (panel)
- this.flush();
- };
-
- this.update = function(file)
- {
- if (panel)
- panel.updateFile(file);
- };
-
- this.clear = function()
- {
- for (var i=0; this.files && i<this.files.length; i++)
- this.files[i].clear();
-
- this.requests = [];
- this.files = [];
- this.phases = [];
- this.documents = [];
- this.windows = [];
- this.currentPhase = null;
-
- queue = [];
- };
-
- this.clear();
-}
-
-NetProgress.prototype =
-{
- dispatchName: "netProgress",
- panel: null,
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- requestNumber: 1,
-
- openingFile: function openingFile(request, win)
- {
- var file = this.getRequestFile(request, win);
- if (file)
- {
- // Parse URL params so, they are available for conditional breakpoints.
- file.urlParams = Url.parseURLParams(file.href);
- this.breakOnXHR(file);
- }
- },
-
- startFile: function startFile(request, win)
- {
- // Called asynchronously since Fx17, so can't be used for Break on XHR,
- // since JS stack is not available at the moment.
- // See https://bugzilla.mozilla.org/show_bug.cgi?id=800799
- },
-
- requestedHeaderFile: function requestedHeaderFile(request, time, win, xhr, extraStringData)
- {
- var file = this.getRequestFile(request);
- if (file)
- {
- logTime(file, "requestedHeaderFile", time);
-
- file.requestHeadersText = extraStringData;
-
- this.requestedFile(request, time, win, xhr);
-
- Events.dispatch(Firebug.NetMonitor.fbListeners, "onRequest", [this.context, file]);
- }
- },
-
- // Can be called from onModifyRequest (to catch request start even in case of BF cache) and also
- // from requestHeaderFile (activity observer)
- requestedFile: function requestedFile(request, time, win, xhr)
- {
- var file = this.getRequestFile(request, win);
- if (file)
- {
- logTime(file, "requestedFile", time);
-
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.events.requestedFile +0 " + getPrintableTime() + ", " +
- request.URI.path, file);
-
- // For cached image files, we may never hear another peep from any observers
- // after this point, so we have to assume that the file is cached and loaded
- // until we get a respondedFile call later
- file.startTime = file.endTime = time;
- file.resolvingTime = time;
- file.connectingTime = time;
- file.connectedTime = time;
- file.sendingTime = time;
- file.waitingForTime = time;
- file.respondedTime = time;
- file.isXHR = xhr;
- file.isBackground = request.loadFlags & Ci.nsIRequest.LOAD_BACKGROUND;
- file.method = request.requestMethod;
-
- if (!Ci.nsIHttpActivityDistributor)
- NetUtils.getPostText(file, this.context);
-
- this.extendPhase(file);
-
- return file;
- }
- else
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.requestedFile no file for request=");
- }
- },
-
- breakOnXHR: function breakOnXHR(file)
- {
- var halt = false;
- var conditionIsFalse = false;
-
- // If there is an enabled breakpoint with condition:
- // 1) break if the condition is evaluated to true.
- var breakpoints = this.context.netProgress.breakpoints;
- var bp = breakpoints ? breakpoints.findBreakpoint(file.getFileURL()) : null;
- if (bp && bp.checked)
- {
- halt = true;
- if (bp.condition)
- {
- halt = bp.evaluateCondition(this.context, file);
- conditionIsFalse = !halt;
- }
- }
-
- // 2) If break on XHR flag is set and there is no condition evaluated to false,
- // break with "break on next" breaking cause (this new breaking cause can override
- // an existing one that is set when evaluating a breakpoint condition).
- if (this.context.breakOnXHR && !conditionIsFalse)
- {
- this.context.breakingCause = {
- title: Locale.$STR("net.Break On XHR"),
- message: Str.cropString(file.href, 200),
- copyAction: Obj.bindFixed(System.copyToClipboard, System, file.href)
- };
-
- halt = true;
- }
-
- // Ignore if there is no reason to break.
- if (!halt)
- return;
-
- // Even if the execution was stopped at breakpoint reset the global
- // breakOnXHR flag.
- this.context.breakOnXHR = false;
-
- Firebug.Breakpoint.breakNow(this.context.getPanel(panelName, true));
- },
-
- respondedHeaderFile: function respondedHeaderFile(request, time, extraStringData)
- {
- var file = this.getRequestFile(request);
- if (file)
- {
- logTime(file, "respondedHeaderFile", time);
-
- file.responseHeadersText = extraStringData;
- }
- },
-
- bodySentFile: function bodySentFile(request, time)
- {
- var file = this.getRequestFile(request);
- if (file)
- {
- logTime(file, "bodySentFile", time);
-
- NetUtils.getPostText(file, this.context);
- }
- },
-
- responseStartedFile: function responseStartedFile(request, time)
- {
- var file = this.getRequestFile(request);
- if (file)
- {
- logTime(file, "responseStartedFile", time);
-
- if (!file.responseStarted)
- {
- file.respondedTime = time;
- file.responseStarted = true;
- }
-
- file.endTime = time;
- return file;
- }
- },
-
- respondedFile: function respondedFile(request, time, info)
- {
- Events.dispatch(Firebug.NetMonitor.fbListeners, "onExamineResponse", [this.context, request]);
-
- var file = this.getRequestFile(request);
- if (file)
- {
- logTime(file, "respondedFile", time);
-
- if (!Ci.nsIHttpActivityDistributor)
- {
- file.respondedTime = time;
- file.endTime = time;
-
- if (request.contentLength >= 0)
- file.size = request.contentLength;
- }
-
- if (info)
- {
- if (info.responseStatus == 304)
- file.fromCache = true;
- else if (!file.fromCache)
- file.fromCache = false;
- }
-
- // respondedFile can be executed asynchronously and getting headers now
- // could be too late. They could be already replaced by cached headers.
- if (info.responseHeaders)
- file.responseHeaders = info.responseHeaders;
-
- // Get also request headers (and perhaps also responseHeaders, they won't be
- // replaced if already available).
- NetUtils.getHttpHeaders(request, file, this.context);
-
- if (info)
- {
- file.responseStatus = info.responseStatus;
- file.responseStatusText = info.responseStatusText;
- file.postText = info.postText;
- }
-
- file.aborted = false;
-
- // Use ACTIVITY_SUBTYPE_RESPONSE_COMPLETE to get the info if possible.
- if (!Ci.nsIHttpActivityDistributor)
- {
- if (file.fromCache)
- getCacheEntry(file, this);
- }
-
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.events.respondedFile +" + (NetUtils.now() - file.startTime) + " " +
- getPrintableTime() + ", " + request.URI.path, file);
-
- // The ACTIVITY_SUBTYPE_TRANSACTION_CLOSE could come earlier.
- if (file.loaded)
- return;
-
- this.endLoad(file);
-
- // If there is a network error, log it into the Console panel.
- if (Firebug.showNetworkErrors && Firebug.NetMonitor.NetRequestEntry.isError(file))
- {
- Firebug.Errors.increaseCount(this.context);
- var message = "NetworkError: " + Firebug.NetMonitor.NetRequestEntry.getStatus(file) + " - "+file.href;
- Firebug.Console.log(message, this.context, "error", null, true, file.getFileLink(message));
- }
-
- Events.dispatch(Firebug.NetMonitor.fbListeners, "onResponse", [this.context, file]);
- return file;
- }
- },
-
- respondedCacheFile: function respondedCacheFile(request, time, info)
- {
- Events.dispatch(Firebug.NetMonitor.fbListeners, "onExamineCachedResponse",
- [this.context, request]);
-
- var file = this.getRequestFile(request, null, true);
- if (file)
- {
- logTime(file, "respondedCacheFile", time);
-
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.events.respondedCacheFile +" + (NetUtils.now() - file.startTime) + " " +
- getPrintableTime() + ", " + request.URI.path, file);
-
- // on-examine-cache-response is using different timer, do not track response
- // times from the cache and use the proper waiting time.
- if (file.waitingStarted)
- time = file.waitingForTime;
-
- if (!file.responseStarted)
- {
- file.respondedTime = time;
- file.responseStarted = true;
- }
-
- file.endTime = time;
- file.fromBFCache = true;
- file.fromCache = true;
- file.aborted = false;
-
- try
- {
- if (request instanceof Ci.nsIApplicationCacheChannel)
- {
- if (request.loadedFromApplicationCache)
- file.fromAppCache = true;
- }
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("net.respondedCacheFile ERROR " + e, e);
- }
-
- if (request.contentLength >= 0)
- file.size = request.contentLength;
-
- NetUtils.getHttpHeaders(request, file, this.context);
-
- if (info)
- {
- file.responseStatus = info.responseStatus;
- file.responseStatusText = info.responseStatusText;
- file.postText = info.postText;
- }
-
- getCacheEntry(file, this);
-
- this.endLoad(file);
-
- Events.dispatch(Firebug.NetMonitor.fbListeners, "onCachedResponse",
- [this.context, file]);
-
- return file;
- }
- else
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.respondedCacheFile; NO FILE FOR " +
- Http.safeGetRequestName(request));
- }
- },
-
- waitingForFile: function waitingForFile(request, time)
- {
- var file = this.getRequestFile(request, null, true);
- if (file)
- {
- logTime(file, "waitingForFile", time);
-
- if (!file.waitingStarted)
- {
- file.waitingForTime = time;
- file.waitingStarted = true;
- }
- }
-
- // Don't update the UI now (optimization).
- return null;
- },
-
- sendingFile: function sendingFile(request, time, size)
- {
- var file = this.getRequestFile(request, null, true);
- if (file)
- {
- logTime(file, "sendingFile", time);
-
- // Remember when the send started.
- if (!file.sendStarted)
- {
- file.sendingTime = time;
- file.waitingForTime = time; // in case waiting-for would never came.
- file.sendStarted = true;
- }
-
- // Catch 2.
- // It can happen that "connected" event sometimes comes after sending,
- // which doesn't make much sense (Firefox bug?)
- if (!file.connected)
- {
- file.connected = true;
- file.connectedTime = time;
- }
-
- file.totalSent = size;
-
- // Catch 1.
- // Request is sending so reset following flags. There are cases where
- // RESPONSE_COMPLETE and TRANSACTION_CLOSE came in the middle of
- // connetion initialization (resolving, connecting, connected).
- file.loaded = false;
- file.responseStarted = false;
-
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.events.sendingFile +" + (NetUtils.now() - file.startTime) + " " +
- getPrintableTime() + ", " + request.URI.path, file);
- }
-
- // Don't update the UI now (optimization).
- return null;
- },
-
- connectingFile: function connectingFile(request, time)
- {
- var file = this.getRequestFile(request, null, true);
-
- logTime(file, "connectingFile", time);
-
- // Resolving, connecting and connected can come after the file is loaded
- // (closedFile received). This happens if the response is coming from the
- // cache. Just ignore it.
- if (file && file.loaded)
- return null;
-
- if (file && !file.connectStarted)
- {
- file.connectStarted = true;
- file.connectingTime = time;
- file.connectedTime = time; // in case connected-to would never came.
- file.sendingTime = time; // in case sending-to would never came.
- file.waitingForTime = time; // in case waiting-for would never came.
- }
-
- // Don't update the UI now (optimization).
- return null;
- },
-
- connectedFile: function connectedFile(request, time)
- {
- var file = this.getRequestFile(request, null, true);
-
- logTime(file, "connectedFile", time);
-
- if (file && file.loaded)
- return null;
-
- if (file && !file.connected)
- {
- file.connected = true;
- file.connectedTime = time;
- file.sendingTime = time; // in case sending-to would never came.
- file.waitingForTime = time; // in case waiting-for would never came.
- }
-
- // Don't update the UI now (optimization).
- return null;
- },
-
- receivingFile: function receivingFile(request, time, size)
- {
- var file = this.getRequestFile(request, null, true);
- if (file)
- {
- logTime(file, "receivingFile", time);
-
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.events.receivingFile +" + time + " " +
- getPrintableTime() + ", " +
- Str.formatSize(size) + " (" + size + "B), " +
- request.URI.path, file);
-
- file.endTime = time;
- file.totalReceived = size;
-
- // Update phase's lastFinishedFile in case of long time downloads.
- // This forces the timeline to have proper extent.
- if (file.phase && file.phase.endTime < time)
- file.phase.lastFinishedFile = file;
-
- // Force update UI.
- if (file.row && Css.hasClass(file.row, "opened"))
- {
- var netInfoBox = file.row.nextSibling.getElementsByClassName("netInfoBody").item(0);
- if (netInfoBox)
- {
- netInfoBox.responsePresented = false;
- netInfoBox.htmlPresented = false;
- }
- }
- }
-
- return file;
- },
-
- responseCompletedFile: function responseCompletedFile(request, time, responseSize)
- {
- var file = this.getRequestFile(request, null, true);
- if (file)
- {
- logTime(file, "responseCompletedFile", time);
-
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.events.responseCompletedFile +" + time + " " +
- getPrintableTime() + ", " + request.URI.path, file);
-
- if (responseSize >= 0)
- file.size = responseSize;
-
- // This was only a helper to show download progress.
- file.totalReceived = 0;
-
- // The request is completed, get cache entry.
- getCacheEntry(file, this);
-
- // Sometimes the HTTP-ON-EXAMINE-RESPONSE doesn't come.
- if (!file.loaded && file.responseHeadersText)
- {
- var info = null;
- var m = file.responseHeadersText.match(reResponseStatus);
- if (m.length == 3)
- info = {responseStatus: m[1], responseStatusText: m[2]};
- this.respondedFile(request, NetUtils.now(), info);
- }
-
- this.updateIPInfo(request, file);
- }
-
- return file;
- },
-
- closedFile: function closedFile(request, time)
- {
- var file = this.getRequestFile(request, null, true);
- if (file)
- {
- logTime(file, "closedFile", time);
-
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.events.closedFile +" + time + " " +
- getPrintableTime() + ", " + request.URI.path);
-
- // If the response never came, stop the loading and set time info.
- // In this case the request is marked with "Timeout" and the
- // respondedTime is set to the time when ACTIVITY_SUBTYPE_TRANSACTION_CLOSE
- // is received (after timeout).
- // If file.responseHeadersText is null the response didn't come.
- if (!file.loaded && !file.responseHeadersText)
- {
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.events; TIMEOUT " + Http.safeGetRequestName(request));
-
- this.endLoad(file);
-
- file.aborted = true;
- if (!file.responseStatusText)
- file.responseStatusText = "Aborted";
-
- if (!file.responseStarted)
- {
- file.respondedTime = time;
- file.responseStarted = true;
- }
-
- file.endTime = time;
- }
- }
-
- return file;
- },
-
- resolvingFile: function resolvingFile(request, time)
- {
- var file = this.getRequestFile(request, null, true);
-
- if (file)
- logTime(file, "resolvingFile", time);
-
- if (file && file.loaded)
- return null;
-
- if (file && !file.resolveStarted)
- {
- file.resolveStarted = true;
- file.resolvingTime = time;
- file.connectingTime = time; // in case connecting would never came.
- file.connectedTime = time; // in case connected-to would never came.
- file.sendingTime = time; // in case sending-to would never came.
- file.waitingForTime = time; // in case waiting-for would never came.
- }
-
- return file;
- },
-
- resolvedFile: function resolvedFile(request, time)
- {
- return null;
- },
-
- stopFile: function stopFile(request, time, postText, responseText)
- {
- var file = this.getRequestFile(request, null, true);
- if (file)
- {
-
- logTime(file, "stopFile", time);
-
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.stopFile +" + (NetUtils.now() - file.startTime) + " " +
- getPrintableTime() + ", " + request.URI.path, file);
-
- // xxxHonza: spy should measure time using the activity observer too.
- // Don't ruin the endTime if it was already set.
- if (file.endTime == file.startTime)
- file.endTime = time;
-
- file.postText = postText;
- file.responseText = responseText;
-
- NetUtils.getHttpHeaders(request, file, this.context);
-
- this.endLoad(file);
-
- getCacheEntry(file, this);
- }
-
- return file;
- },
-
- abortFile: function abortFile(request, time, postText, responseText)
- {
- var file = this.getRequestFile(request, null, true);
- if (file)
- {
- logTime(file, "abortFile", time);
-
- file.aborted = true;
- file.responseStatusText = "Aborted";
- }
-
- return this.stopFile(request, time, postText, responseText);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // IP Address and port number
-
- updateIPInfo: function(request, file)
- {
- file.localAddress = Http.safeGetLocalAddress(request);
- file.localPort = Http.safeGetLocalPort(request);
- file.remoteAddress = Http.safeGetRemoteAddress(request);
- file.remotePort = Http.safeGetRemotePort(request);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- windowPaint: function windowPaint(window, time)
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.windowPaint +? " + getPrintableTime() + ", " +
- window.location.href, this.phases);
-
- if (!this.phases.length)
- return;
-
- var phase = this.context.netProgress.currentPhase;
- var timeStamp = phase.addTimeStamp("MozAfterPaint", "netPaintBar");
- timeStamp.time = time;
-
- // Return the first file, so the layout is updated. I can happen that the
- // onLoad event is the last one and the graph end-time must be recalculated.
- return phase.files[0];
- },
-
- timeStamp: function timeStamp(window, time, label)
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.timeStamp +? " + getPrintableTime() + ", " +
- window.location.href, this.phases);
-
- if (!this.phases.length)
- return;
-
- var phase = this.context.netProgress.currentPhase;
- var timeStamp = phase.addTimeStamp(label, "netTimeStampBar");
- timeStamp.time = time;
-
- return phase.files[0];
- },
-
- windowLoad: function windowLoad(window, time)
- {
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.windowLoad +? " + getPrintableTime() + ", " +
- window.location.href, this.phases);
-
- if (!this.phases.length)
- return;
-
- // Update all requests that belong to the first phase.
- var firstPhase = this.phases[0];
-
- // Keep the information also in the phase for now, NetExport and other could need it.
- firstPhase.windowLoadTime = time;
-
- var timeStamp = firstPhase.addTimeStamp("load", "netWindowLoadBar");
- timeStamp.time = time;
-
- // Return the first file, so the layout is updated. I can happen that the
- // onLoad event is the last one and the graph end-time must be recalculated.
- return firstPhase.files[0];
- },
-
- contentLoad: function contentLoad(window, time)
- {
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.contentLoad +? " + getPrintableTime() + ", " +
- window.location.href);
-
- if (!this.phases.length)
- return;
-
- // Update all requests that belong to the first phase.
- var firstPhase = this.phases[0];
-
- // Keep the information also in the phase for now, NetExport and other could need it.
- firstPhase.contentLoadTime = time;
-
- var timeStamp = firstPhase.addTimeStamp("DOMContentLoaded", "netContentLoadBar");
- timeStamp.time = time;
-
- return null;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getRequestFile: function getRequestFile(request, win, noCreate)
- {
- var name = Http.safeGetRequestName(request);
- if (!name || reIgnore.exec(name))
- return null;
-
- for (var i=0; i<this.files.length; i++)
- {
- var file = this.files[i];
- if (file.request == request)
- return file;
- }
-
- if (noCreate)
- return null;
-
- if (!win || Win.getRootWindow(win) != this.context.window)
- return;
-
- var fileDoc = this.getRequestDocument(win);
- var isDocument = request.loadFlags & Ci.nsIChannel.LOAD_DOCUMENT_URI && fileDoc.parent;
- var doc = isDocument ? fileDoc.parent : fileDoc;
-
- var file = doc.createFile(request);
- if (isDocument)
- {
- fileDoc.documentFile = file;
- file.ownDocument = fileDoc;
- }
-
- file.request = request;
- file.requestNumber = this.requestNumber;
- this.requestNumber++;
- this.requests.push(request);
- this.files.push(file);
-
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.createFile; " + Http.safeGetRequestName(request) +
- "(" + this.files.length + ")");
-
- return file;
- },
-
- getRequestDocument: function(win)
- {
- if (win)
- {
- var index = this.windows.indexOf(win);
- if (index == -1)
- {
- var doc = new NetDocument();
- if (win.parent != win)
- doc.parent = this.getRequestDocument(win.parent);
-
- //doc.level = NetUtils.getFrameLevel(win);
-
- this.documents.push(doc);
- this.windows.push(win);
-
- return doc;
- }
- else
- return this.documents[index];
- }
- else
- return this.documents[0];
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- endLoad: function(file)
- {
- if (FBTrace.DBG_NET_EVENTS)
- FBTrace.sysout("net.events.endLoad +" + (NetUtils.now() - file.startTime) + " " +
- getPrintableTime() + ", " + file.request.URI.path, file);
-
- // Set file as loaded.
- file.loaded = true;
-
- // Update last finished file of the associated phase.
- //xxxHonza: verify this.
- if (file.phase)
- file.phase.lastFinishedFile = file;
- },
-
- extendPhase: function(file)
- {
- // Phase start can be measured since HTTP-ON-MODIFIED-REQUEST as
- // ACTIVITY_SUBTYPE_REQUEST_HEADER won't fire if the response comes from the BF cache.
- // If it's real HTTP request we need to start again since ACTIVITY_SUBTYPE_REQUEST_HEADER
- // has the proper time.
- // Order of ACTIVITY_SUBTYPE_REQUEST_HEADER can be different than order of
- // HTTP-ON-MODIFIED-REQUEST events, see issue 4535
- if (file.phase)
- {
- if (file.phase.files[0] == file)
- file.phase.startTime = file.startTime;
-
- // Since the request order can be wrong (see above) we need to iterate all files
- // in this phase and find the one that actually executed first.
- // In some cases, the waterfall can display a request executed before another,
- // but started later.
- // See: https://bugzilla.mozilla.org/show_bug.cgi?id=664781
- var phase = file.phase;
- for (var i=0; i<phase.files.length; i++)
- {
- var file = phase.files[i];
- if (file.startTime > 0 && phase.startTime > file.startTime)
- phase.startTime = file.startTime;
- }
- return;
- }
-
- if (this.currentPhase)
- {
- // If the new request has been started within a "phaseInterval" after the
- // previous reqeust has been started, associate it with the current phase;
- // otherwise create a new phase.
- var phaseInterval = Firebug.netPhaseInterval;
- var lastStartTime = this.currentPhase.lastStartTime;
- if (phaseInterval > 0 && this.loaded && file.startTime - lastStartTime >= phaseInterval)
- this.startPhase(file);
- else
- this.currentPhase.addFile(file);
- }
- else
- {
- // If there is no phase yet, just create it.
- this.startPhase(file);
- }
- },
-
- startPhase: function(file)
- {
- var phase = new NetPhase(file);
- phase.initial = !this.currentPhase;
-
- file.breakLayout = true;
-
- this.currentPhase = phase;
- this.phases.push(phase);
- },
-};
-
-// ********************************************************************************************* //
-// Time Logging
-
-function logTime(file, title, time)
-{
- // xxxHonza: just for debugging purposes.
- return;
-
- if (!file._timings)
- file._timings = {counter: 0};
-
- if (!file._timings.logs)
- file._timings.logs = [];
-
- file._timings.logs.push({
- title: title,
- index: ++file._timings.counter,
- time: time
- });
-}
-
-// ********************************************************************************************* //
-
-/**
- * A Document is a helper object that represents a document (window) on the page.
- * This object is created for main page document and for every embedded document (iframe)
- * for which a request is made.
- */
-function NetDocument()
-{
- this.id = 0;
- this.title = "";
-}
-
-NetDocument.prototype =
-{
- createFile: function(request)
- {
- return new NetFile(request.name, this);
- }
-};
-
-// ********************************************************************************************* //
-
-/**
- * A File is a helper object that represents a file for which a request is made.
- * The document refers to it's parent document (NetDocument) through a member
- * variable.
- */
-function NetFile(href, document)
-{
- this.href = href;
- this.document = document;
-}
-
-NetFile.prototype =
-{
- status: 0,
- files: 0,
- loaded: false,
- fromCache: false,
- size: -1,
- expectedSize: -1,
- endTime: null,
- waitingForTime: null,
- connectingTime: null,
-
- getFileLink: function(message)
- {
- // this.SourceLink = function(url, line, type, object, instance)
- var link = new SourceLink.SourceLink(this.href, null, "net", this.request);
- return link;
- },
-
- getFileURL: function()
- {
- var index = this.href.indexOf("?");
- if (index < 0)
- return this.href;
-
- return this.href.substring(0, index);
- },
-
- clear: function()
- {
- // Remove all members to avoid circular references and memleaks.
- for (var name in this)
- delete this[name];
- }
-};
-
-Firebug.NetFile = NetFile;
-
-// ********************************************************************************************* //
-
-/**
- * A Phase is a helper object that groups requests made in the same time frame.
- * In other words, if a new requests is started within a given time (specified
- * by phaseInterval [ms]) - after previous request has been started -
- * it automatically belongs to the same phase.
- * If a request is started after this period, a new phase is created
- * and this file becomes to be the first in that phase.
- * The first phase is ended when the page finishes it's loading. Other phases
- * might be started by additional XHR made by the page.
- *
- * All phases are stored within NetProgress.phases array.
- *
- * Phases are used to compute size of the graphical timeline. The timeline
- * for each phase starts from the beginning of the graph.
- */
-function NetPhase(file)
-{
- // Start time of the phase. Remains the same, even if the file
- // is removed from the log (due to a max limit of entries).
- // This ensures stability of the time line.
- this.startTime = file.startTime;
-
- // The last finished request (file) in the phase.
- this.lastFinishedFile = null;
-
- // Set to true if the phase needs to be updated in the UI.
- this.invalidPhase = null;
-
- // List of files associated with this phase.
- this.files = [];
-
- // List of paint events.
- this.windowPaints = [];
-
- this.timeStamps = [];
-
- this.addFile(file);
-}
-
-NetPhase.prototype =
-{
- addFile: function(file)
- {
- this.files.push(file);
- file.phase = this;
- },
-
- removeFile: function removeFile(file)
- {
- Arr.remove(this.files, file);
-
- // The file don't have a parent phase now.
- file.phase = null;
-
- // If the last file has been removed, update the last file member.
- if (file == this.lastFinishedFile)
- {
- if (this.files.length == 0)
- {
- this.lastFinishedFile = null;
- }
- else
- {
- for (var i=0; i<this.files.length; i++)
- {
- if (this.lastFinishedFile.endTime < this.files[i].endTime)
- this.lastFinishedFile = this.files[i];
- }
- }
- }
- },
-
- get lastStartTime()
- {
- return this.files[this.files.length - 1].startTime;
- },
-
- get endTime()
- {
- var endTime = this.lastFinishedFile ? this.lastFinishedFile.endTime : null;
- if (this.timeStamps.length > 0)
- {
- var lastTimeStamp = this.timeStamps[this.timeStamps.length-1].time;
- endTime = (endTime > lastTimeStamp) ? endTime : lastTimeStamp;
- }
- return endTime;
- },
-
- addTimeStamp: function(label, classes)
- {
- var timeStamp = {
- label: label,
- classes: classes
- };
-
- this.timeStamps.push(timeStamp);
- return timeStamp;
- }
-};
-
-// ********************************************************************************************* //
-
-function getCacheEntry(file, netProgress)
-{
- // xxxHonza: dependency on NetCacheReader can't be used in this module
- // since it causes cycle dependency problem. So, use the module through
- // NetMonitor namespace.
- Firebug.NetMonitor.NetCacheReader.requestCacheEntry(file, netProgress);
-}
-
-// ********************************************************************************************* //
-// Helper for tracing
-
-function getPrintableTime()
-{
- var date = new Date();
- return "(" + date.getSeconds() + ":" + date.getMilliseconds() + ")";
-}
-
-// ********************************************************************************************* //
-// Registration
-
-return NetProgress;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/url",
+ "firebug/js/sourceLink",
+ "firebug/lib/http",
+ "firebug/lib/css",
+ "firebug/chrome/window",
+ "firebug/lib/string",
+ "firebug/lib/array",
+ "firebug/lib/system",
+ "firebug/net/netUtils"
+],
+function(Obj, Firebug, Locale, Events, Url, SourceLink, Http, Css, Win, Str,
+ Arr, System, NetUtils) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+const reIgnore = /about:|javascript:|resource:|chrome:|jar:/;
+const reResponseStatus = /HTTP\/1\.\d\s(\d+)\s(.*)/;
+
+var panelName = "net";
+
+// ********************************************************************************************* //
+// Net Progress
+
+function NetProgress(context)
+{
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.NetProgress.constructor; " +
+ (context ? context.getName() : "NULL Context"));
+
+ this.context = context;
+
+ var panel = null;
+ var queue = [];
+
+ this.post = function(handler, args)
+ {
+ if (panel)
+ {
+ var file = handler.apply(this, args);
+ if (file)
+ {
+ panel.updateFile(file);
+
+ // If the panel isn't currently visible, make sure the limit is up to date.
+ if (!panel.layoutInterval)
+ panel.updateLogLimit(Firebug.NetMonitor.maxQueueRequests);
+
+ return file;
+ }
+ }
+ else
+ {
+ // The first page request is made before the initContext (known problem).
+ queue.push(handler, args);
+ }
+ };
+
+ this.flush = function()
+ {
+ for (var i=0; i<queue.length; i+=2)
+ this.post(queue[i], queue[i+1]);
+
+ queue = [];
+ };
+
+ this.activate = function(activePanel)
+ {
+ this.panel = panel = activePanel;
+ if (panel)
+ this.flush();
+ };
+
+ this.update = function(file)
+ {
+ if (panel)
+ panel.updateFile(file);
+ };
+
+ this.clear = function()
+ {
+ for (var i=0; this.files && i<this.files.length; i++)
+ this.files[i].clear();
+
+ this.requests = [];
+ this.files = [];
+ this.phases = [];
+ this.documents = [];
+ this.windows = [];
+ this.currentPhase = null;
+
+ queue = [];
+ };
+
+ this.clear();
+}
+
+NetProgress.prototype =
+{
+ dispatchName: "netProgress",
+ panel: null,
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ requestNumber: 1,
+
+ openingFile: function openingFile(request, win)
+ {
+ var file = this.getRequestFile(request, win);
+ if (file)
+ {
+ // Parse URL params so, they are available for conditional breakpoints.
+ file.urlParams = Url.parseURLParams(file.href);
+ this.breakOnXHR(file);
+ }
+ },
+
+ startFile: function startFile(request, win)
+ {
+ // Called asynchronously since Fx17, so can't be used for Break on XHR,
+ // since JS stack is not available at the moment.
+ // See https://bugzilla.mozilla.org/show_bug.cgi?id=800799
+ },
+
+ requestedHeaderFile: function requestedHeaderFile(request, time, win, xhr, extraStringData)
+ {
+ var file = this.getRequestFile(request);
+ if (file)
+ {
+ logTime(file, "requestedHeaderFile", time);
+
+ file.requestHeadersText = extraStringData;
+
+ this.requestedFile(request, time, win, xhr);
+
+ Events.dispatch(Firebug.NetMonitor.fbListeners, "onRequest", [this.context, file]);
+ }
+ },
+
+ // Can be called from onModifyRequest (to catch request start even in case of BF cache) and also
+ // from requestHeaderFile (activity observer)
+ requestedFile: function requestedFile(request, time, win, xhr)
+ {
+ var file = this.getRequestFile(request, win);
+ if (file)
+ {
+ logTime(file, "requestedFile", time);
+
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.events.requestedFile +0 " + getPrintableTime() + ", " +
+ request.URI.path, file);
+
+ // For cached image files, we may never hear another peep from any observers
+ // after this point, so we have to assume that the file is cached and loaded
+ // until we get a respondedFile call later
+ file.startTime = file.endTime = time;
+ file.resolvingTime = time;
+ file.connectingTime = time;
+ file.connectedTime = time;
+ file.sendingTime = time;
+ file.waitingForTime = time;
+ file.respondedTime = time;
+ file.isXHR = xhr;
+ file.isBackground = request.loadFlags & Ci.nsIRequest.LOAD_BACKGROUND;
+ file.method = request.requestMethod;
+
+ if (!Ci.nsIHttpActivityDistributor)
+ NetUtils.getPostText(file, this.context);
+
+ this.extendPhase(file);
+
+ return file;
+ }
+ else
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.requestedFile no file for request=");
+ }
+ },
+
+ breakOnXHR: function breakOnXHR(file)
+ {
+ var halt = false;
+ var conditionIsFalse = false;
+
+ // If there is an enabled breakpoint with condition:
+ // 1) break if the condition is evaluated to true.
+ var breakpoints = this.context.netProgress.breakpoints;
+ var bp = breakpoints ? breakpoints.findBreakpoint(file.getFileURL()) : null;
+ if (bp && bp.checked)
+ {
+ halt = true;
+ if (bp.condition)
+ {
+ halt = bp.evaluateCondition(this.context, file);
+ conditionIsFalse = !halt;
+ }
+ }
+
+ // 2) If break on XHR flag is set and there is no condition evaluated to false,
+ // break with "break on next" breaking cause (this new breaking cause can override
+ // an existing one that is set when evaluating a breakpoint condition).
+ if (this.context.breakOnXHR && !conditionIsFalse)
+ {
+ this.context.breakingCause = {
+ title: Locale.$STR("net.Break On XHR"),
+ message: Str.cropString(file.href, 200),
+ copyAction: Obj.bindFixed(System.copyToClipboard, System, file.href)
+ };
+
+ halt = true;
+ }
+
+ // Ignore if there is no reason to break.
+ if (!halt)
+ return;
+
+ // Even if the execution was stopped at breakpoint reset the global
+ // breakOnXHR flag.
+ this.context.breakOnXHR = false;
+
+ Firebug.Breakpoint.breakNow(this.context.getPanel(panelName, true));
+ },
+
+ respondedHeaderFile: function respondedHeaderFile(request, time, extraStringData)
+ {
+ var file = this.getRequestFile(request);
+ if (file)
+ {
+ logTime(file, "respondedHeaderFile", time);
+
+ file.responseHeadersText = extraStringData;
+ }
+ },
+
+ bodySentFile: function bodySentFile(request, time)
+ {
+ var file = this.getRequestFile(request);
+ if (file)
+ {
+ logTime(file, "bodySentFile", time);
+
+ NetUtils.getPostText(file, this.context);
+ }
+ },
+
+ responseStartedFile: function responseStartedFile(request, time)
+ {
+ var file = this.getRequestFile(request);
+ if (file)
+ {
+ logTime(file, "responseStartedFile", time);
+
+ if (!file.responseStarted)
+ {
+ file.respondedTime = time;
+ file.responseStarted = true;
+ }
+
+ file.endTime = time;
+ return file;
+ }
+ },
+
+ respondedFile: function respondedFile(request, time, info)
+ {
+ Events.dispatch(Firebug.NetMonitor.fbListeners, "onExamineResponse", [this.context, request]);
+
+ var file = this.getRequestFile(request);
+ if (file)
+ {
+ logTime(file, "respondedFile", time);
+
+ if (!Ci.nsIHttpActivityDistributor)
+ {
+ file.respondedTime = time;
+ file.endTime = time;
+
+ if (request.contentLength >= 0)
+ file.size = request.contentLength;
+ }
+
+ if (info)
+ {
+ if (info.responseStatus == 304)
+ file.fromCache = true;
+ else if (!file.fromCache)
+ file.fromCache = false;
+ }
+
+ // respondedFile can be executed asynchronously and getting headers now
+ // could be too late. They could be already replaced by cached headers.
+ if (info.responseHeaders)
+ file.responseHeaders = info.responseHeaders;
+
+ // Get also request headers (and perhaps also responseHeaders, they won't be
+ // replaced if already available).
+ NetUtils.getHttpHeaders(request, file, this.context);
+
+ if (info)
+ {
+ file.responseStatus = info.responseStatus;
+ file.responseStatusText = info.responseStatusText;
+ file.postText = info.postText;
+ }
+
+ file.aborted = false;
+
+ // Use ACTIVITY_SUBTYPE_RESPONSE_COMPLETE to get the info if possible.
+ if (!Ci.nsIHttpActivityDistributor)
+ {
+ if (file.fromCache)
+ getCacheEntry(file, this);
+ }
+
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.events.respondedFile +" + (NetUtils.now() - file.startTime) + " " +
+ getPrintableTime() + ", " + request.URI.path, file);
+
+ // The ACTIVITY_SUBTYPE_TRANSACTION_CLOSE could come earlier.
+ if (file.loaded)
+ return;
+
+ this.endLoad(file);
+
+ // If there is a network error, log it into the Console panel.
+ if (Firebug.showNetworkErrors && Firebug.NetMonitor.NetRequestEntry.isError(file))
+ {
+ Firebug.Errors.increaseCount(this.context);
+ var message = "NetworkError: " + Firebug.NetMonitor.NetRequestEntry.getStatus(file) + " - "+file.href;
+ Firebug.Console.log(message, this.context, "error", null, true, file.getFileLink(message));
+ }
+
+ Events.dispatch(Firebug.NetMonitor.fbListeners, "onResponse", [this.context, file]);
+ return file;
+ }
+ },
+
+ respondedCacheFile: function respondedCacheFile(request, time, info)
+ {
+ Events.dispatch(Firebug.NetMonitor.fbListeners, "onExamineCachedResponse",
+ [this.context, request]);
+
+ var file = this.getRequestFile(request, null, true);
+ if (file)
+ {
+ logTime(file, "respondedCacheFile", time);
+
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.events.respondedCacheFile +" + (NetUtils.now() - file.startTime) + " " +
+ getPrintableTime() + ", " + request.URI.path, file);
+
+ // on-examine-cache-response is using different timer, do not track response
+ // times from the cache and use the proper waiting time.
+ if (file.waitingStarted)
+ time = file.waitingForTime;
+
+ if (!file.responseStarted)
+ {
+ file.respondedTime = time;
+ file.responseStarted = true;
+ }
+
+ file.endTime = time;
+ file.fromBFCache = true;
+ file.fromCache = true;
+ file.aborted = false;
+
+ try
+ {
+ if (request instanceof Ci.nsIApplicationCacheChannel)
+ {
+ if (request.loadedFromApplicationCache)
+ file.fromAppCache = true;
+ }
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("net.respondedCacheFile ERROR " + e, e);
+ }
+
+ if (request.contentLength >= 0)
+ file.size = request.contentLength;
+
+ NetUtils.getHttpHeaders(request, file, this.context);
+
+ if (info)
+ {
+ file.responseStatus = info.responseStatus;
+ file.responseStatusText = info.responseStatusText;
+ file.postText = info.postText;
+ }
+
+ getCacheEntry(file, this);
+
+ this.endLoad(file);
+
+ Events.dispatch(Firebug.NetMonitor.fbListeners, "onCachedResponse",
+ [this.context, file]);
+
+ return file;
+ }
+ else
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.respondedCacheFile; NO FILE FOR " +
+ Http.safeGetRequestName(request));
+ }
+ },
+
+ waitingForFile: function waitingForFile(request, time)
+ {
+ var file = this.getRequestFile(request, null, true);
+ if (file)
+ {
+ logTime(file, "waitingForFile", time);
+
+ if (!file.waitingStarted)
+ {
+ file.waitingForTime = time;
+ file.waitingStarted = true;
+ }
+ }
+
+ // Don't update the UI now (optimization).
+ return null;
+ },
+
+ sendingFile: function sendingFile(request, time, size)
+ {
+ var file = this.getRequestFile(request, null, true);
+ if (file)
+ {
+ logTime(file, "sendingFile", time);
+
+ // Remember when the send started.
+ if (!file.sendStarted)
+ {
+ file.sendingTime = time;
+ file.waitingForTime = time; // in case waiting-for would never came.
+ file.sendStarted = true;
+ }
+
+ // Catch 2.
+ // It can happen that "connected" event sometimes comes after sending,
+ // which doesn't make much sense (Firefox bug?)
+ if (!file.connected)
+ {
+ file.connected = true;
+ file.connectedTime = time;
+ }
+
+ file.totalSent = size;
+
+ // Catch 1.
+ // Request is sending so reset following flags. There are cases where
+ // RESPONSE_COMPLETE and TRANSACTION_CLOSE came in the middle of
+ // connetion initialization (resolving, connecting, connected).
+ file.loaded = false;
+ file.responseStarted = false;
+
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.events.sendingFile +" + (NetUtils.now() - file.startTime) + " " +
+ getPrintableTime() + ", " + request.URI.path, file);
+ }
+
+ // Don't update the UI now (optimization).
+ return null;
+ },
+
+ connectingFile: function connectingFile(request, time)
+ {
+ var file = this.getRequestFile(request, null, true);
+
+ logTime(file, "connectingFile", time);
+
+ // Resolving, connecting and connected can come after the file is loaded
+ // (closedFile received). This happens if the response is coming from the
+ // cache. Just ignore it.
+ if (file && file.loaded)
+ return null;
+
+ if (file && !file.connectStarted)
+ {
+ file.connectStarted = true;
+ file.connectingTime = time;
+ file.connectedTime = time; // in case connected-to would never came.
+ file.sendingTime = time; // in case sending-to would never came.
+ file.waitingForTime = time; // in case waiting-for would never came.
+ }
+
+ // Don't update the UI now (optimization).
+ return null;
+ },
+
+ connectedFile: function connectedFile(request, time)
+ {
+ var file = this.getRequestFile(request, null, true);
+
+ logTime(file, "connectedFile", time);
+
+ if (file && file.loaded)
+ return null;
+
+ if (file && !file.connected)
+ {
+ file.connected = true;
+ file.connectedTime = time;
+ file.sendingTime = time; // in case sending-to would never came.
+ file.waitingForTime = time; // in case waiting-for would never came.
+ }
+
+ // Don't update the UI now (optimization).
+ return null;
+ },
+
+ receivingFile: function receivingFile(request, time, size)
+ {
+ var file = this.getRequestFile(request, null, true);
+ if (file)
+ {
+ logTime(file, "receivingFile", time);
+
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.events.receivingFile +" + time + " " +
+ getPrintableTime() + ", " +
+ Str.formatSize(size) + " (" + size + "B), " +
+ request.URI.path, file);
+
+ file.endTime = time;
+ file.totalReceived = size;
+
+ // Update phase's lastFinishedFile in case of long time downloads.
+ // This forces the timeline to have proper extent.
+ if (file.phase && file.phase.endTime < time)
+ file.phase.lastFinishedFile = file;
+
+ // Force update UI.
+ if (file.row && Css.hasClass(file.row, "opened"))
+ {
+ var netInfoBox = file.row.nextSibling.getElementsByClassName("netInfoBody").item(0);
+ if (netInfoBox)
+ {
+ netInfoBox.responsePresented = false;
+ netInfoBox.htmlPresented = false;
+ }
+ }
+ }
+
+ return file;
+ },
+
+ responseCompletedFile: function responseCompletedFile(request, time, responseSize)
+ {
+ var file = this.getRequestFile(request, null, true);
+ if (file)
+ {
+ logTime(file, "responseCompletedFile", time);
+
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.events.responseCompletedFile +" + time + " " +
+ getPrintableTime() + ", " + request.URI.path, file);
+
+ if (responseSize >= 0)
+ file.size = responseSize;
+
+ // This was only a helper to show download progress.
+ file.totalReceived = 0;
+
+ // The request is completed, get cache entry.
+ getCacheEntry(file, this);
+
+ // Sometimes the HTTP-ON-EXAMINE-RESPONSE doesn't come.
+ if (!file.loaded && file.responseHeadersText)
+ {
+ var info = null;
+ var m = file.responseHeadersText.match(reResponseStatus);
+ if (m.length == 3)
+ info = {responseStatus: m[1], responseStatusText: m[2]};
+ this.respondedFile(request, NetUtils.now(), info);
+ }
+
+ this.updateIPInfo(request, file);
+ }
+
+ return file;
+ },
+
+ closedFile: function closedFile(request, time)
+ {
+ var file = this.getRequestFile(request, null, true);
+ if (file)
+ {
+ logTime(file, "closedFile", time);
+
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.events.closedFile +" + time + " " +
+ getPrintableTime() + ", " + request.URI.path);
+
+ // If the response never came, stop the loading and set time info.
+ // In this case the request is marked with "Timeout" and the
+ // respondedTime is set to the time when ACTIVITY_SUBTYPE_TRANSACTION_CLOSE
+ // is received (after timeout).
+ // If file.responseHeadersText is null the response didn't come.
+ if (!file.loaded && !file.responseHeadersText)
+ {
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.events; TIMEOUT " + Http.safeGetRequestName(request));
+
+ this.endLoad(file);
+
+ file.aborted = true;
+ if (!file.responseStatusText)
+ file.responseStatusText = "Aborted";
+
+ if (!file.responseStarted)
+ {
+ file.respondedTime = time;
+ file.responseStarted = true;
+ }
+
+ file.endTime = time;
+ }
+ }
+
+ return file;
+ },
+
+ resolvingFile: function resolvingFile(request, time)
+ {
+ var file = this.getRequestFile(request, null, true);
+
+ if (file)
+ logTime(file, "resolvingFile", time);
+
+ if (file && file.loaded)
+ return null;
+
+ if (file && !file.resolveStarted)
+ {
+ file.resolveStarted = true;
+ file.resolvingTime = time;
+ file.connectingTime = time; // in case connecting would never came.
+ file.connectedTime = time; // in case connected-to would never came.
+ file.sendingTime = time; // in case sending-to would never came.
+ file.waitingForTime = time; // in case waiting-for would never came.
+ }
+
+ return file;
+ },
+
+ resolvedFile: function resolvedFile(request, time)
+ {
+ return null;
+ },
+
+ stopFile: function stopFile(request, time, postText, responseText)
+ {
+ var file = this.getRequestFile(request, null, true);
+ if (file)
+ {
+
+ logTime(file, "stopFile", time);
+
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.stopFile +" + (NetUtils.now() - file.startTime) + " " +
+ getPrintableTime() + ", " + request.URI.path, file);
+
+ // xxxHonza: spy should measure time using the activity observer too.
+ // Don't ruin the endTime if it was already set.
+ if (file.endTime == file.startTime)
+ file.endTime = time;
+
+ file.postText = postText;
+ file.responseText = responseText;
+
+ NetUtils.getHttpHeaders(request, file, this.context);
+
+ this.endLoad(file);
+
+ getCacheEntry(file, this);
+ }
+
+ return file;
+ },
+
+ abortFile: function abortFile(request, time, postText, responseText)
+ {
+ var file = this.getRequestFile(request, null, true);
+ if (file)
+ {
+ logTime(file, "abortFile", time);
+
+ file.aborted = true;
+ file.responseStatusText = "Aborted";
+ }
+
+ return this.stopFile(request, time, postText, responseText);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // IP Address and port number
+
+ updateIPInfo: function(request, file)
+ {
+ file.localAddress = Http.safeGetLocalAddress(request);
+ file.localPort = Http.safeGetLocalPort(request);
+ file.remoteAddress = Http.safeGetRemoteAddress(request);
+ file.remotePort = Http.safeGetRemotePort(request);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ windowPaint: function windowPaint(window, time)
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.windowPaint +? " + getPrintableTime() + ", " +
+ window.location.href, this.phases);
+
+ if (!this.phases.length)
+ return;
+
+ var phase = this.context.netProgress.currentPhase;
+ var timeStamp = phase.addTimeStamp("MozAfterPaint", "netPaintBar");
+ timeStamp.time = time;
+
+ // Return the first file, so the layout is updated. I can happen that the
+ // onLoad event is the last one and the graph end-time must be recalculated.
+ return phase.files[0];
+ },
+
+ timeStamp: function timeStamp(window, time, label)
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.timeStamp +? " + getPrintableTime() + ", " +
+ window.location.href, this.phases);
+
+ if (!this.phases.length)
+ return;
+
+ var phase = this.context.netProgress.currentPhase;
+ var timeStamp = phase.addTimeStamp(label, "netTimeStampBar");
+ timeStamp.time = time;
+
+ return phase.files[0];
+ },
+
+ windowLoad: function windowLoad(window, time)
+ {
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.windowLoad +? " + getPrintableTime() + ", " +
+ window.location.href, this.phases);
+
+ if (!this.phases.length)
+ return;
+
+ // Update all requests that belong to the first phase.
+ var firstPhase = this.phases[0];
+
+ // Keep the information also in the phase for now, NetExport and other could need it.
+ firstPhase.windowLoadTime = time;
+
+ var timeStamp = firstPhase.addTimeStamp("load", "netWindowLoadBar");
+ timeStamp.time = time;
+
+ // Return the first file, so the layout is updated. I can happen that the
+ // onLoad event is the last one and the graph end-time must be recalculated.
+ return firstPhase.files[0];
+ },
+
+ contentLoad: function contentLoad(window, time)
+ {
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.contentLoad +? " + getPrintableTime() + ", " +
+ window.location.href);
+
+ if (!this.phases.length)
+ return;
+
+ // Update all requests that belong to the first phase.
+ var firstPhase = this.phases[0];
+
+ // Keep the information also in the phase for now, NetExport and other could need it.
+ firstPhase.contentLoadTime = time;
+
+ var timeStamp = firstPhase.addTimeStamp("DOMContentLoaded", "netContentLoadBar");
+ timeStamp.time = time;
+
+ return null;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getRequestFile: function getRequestFile(request, win, noCreate)
+ {
+ var name = Http.safeGetRequestName(request);
+ if (!name || reIgnore.exec(name))
+ return null;
+
+ for (var i=0; i<this.files.length; i++)
+ {
+ var file = this.files[i];
+ if (file.request == request)
+ return file;
+ }
+
+ if (noCreate)
+ return null;
+
+ if (!win || Win.getRootWindow(win) != this.context.window)
+ return;
+
+ var fileDoc = this.getRequestDocument(win);
+ var isDocument = request.loadFlags & Ci.nsIChannel.LOAD_DOCUMENT_URI && fileDoc.parent;
+ var doc = isDocument ? fileDoc.parent : fileDoc;
+
+ var file = doc.createFile(request);
+ if (isDocument)
+ {
+ fileDoc.documentFile = file;
+ file.ownDocument = fileDoc;
+ }
+
+ file.request = request;
+ file.requestNumber = this.requestNumber;
+ this.requestNumber++;
+ this.requests.push(request);
+ this.files.push(file);
+
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.createFile; " + Http.safeGetRequestName(request) +
+ "(" + this.files.length + ")");
+
+ return file;
+ },
+
+ getRequestDocument: function(win)
+ {
+ if (win)
+ {
+ var index = this.windows.indexOf(win);
+ if (index == -1)
+ {
+ var doc = new NetDocument();
+ if (win.parent != win)
+ doc.parent = this.getRequestDocument(win.parent);
+
+ //doc.level = NetUtils.getFrameLevel(win);
+
+ this.documents.push(doc);
+ this.windows.push(win);
+
+ return doc;
+ }
+ else
+ return this.documents[index];
+ }
+ else
+ return this.documents[0];
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ endLoad: function(file)
+ {
+ if (FBTrace.DBG_NET_EVENTS)
+ FBTrace.sysout("net.events.endLoad +" + (NetUtils.now() - file.startTime) + " " +
+ getPrintableTime() + ", " + file.request.URI.path, file);
+
+ // Set file as loaded.
+ file.loaded = true;
+
+ // Update last finished file of the associated phase.
+ //xxxHonza: verify this.
+ if (file.phase)
+ file.phase.lastFinishedFile = file;
+ },
+
+ extendPhase: function(file)
+ {
+ // Phase start can be measured since HTTP-ON-MODIFIED-REQUEST as
+ // ACTIVITY_SUBTYPE_REQUEST_HEADER won't fire if the response comes from the BF cache.
+ // If it's real HTTP request we need to start again since ACTIVITY_SUBTYPE_REQUEST_HEADER
+ // has the proper time.
+ // Order of ACTIVITY_SUBTYPE_REQUEST_HEADER can be different than order of
+ // HTTP-ON-MODIFIED-REQUEST events, see issue 4535
+ if (file.phase)
+ {
+ if (file.phase.files[0] == file)
+ file.phase.startTime = file.startTime;
+
+ // Since the request order can be wrong (see above) we need to iterate all files
+ // in this phase and find the one that actually executed first.
+ // In some cases, the waterfall can display a request executed before another,
+ // but started later.
+ // See: https://bugzilla.mozilla.org/show_bug.cgi?id=664781
+ var phase = file.phase;
+ for (var i=0; i<phase.files.length; i++)
+ {
+ var file = phase.files[i];
+ if (file.startTime > 0 && phase.startTime > file.startTime)
+ phase.startTime = file.startTime;
+ }
+ return;
+ }
+
+ if (this.currentPhase)
+ {
+ // If the new request has been started within a "phaseInterval" after the
+ // previous reqeust has been started, associate it with the current phase;
+ // otherwise create a new phase.
+ var phaseInterval = Firebug.netPhaseInterval;
+ var lastStartTime = this.currentPhase.lastStartTime;
+ if (phaseInterval > 0 && this.loaded && file.startTime - lastStartTime >= phaseInterval)
+ this.startPhase(file);
+ else
+ this.currentPhase.addFile(file);
+ }
+ else
+ {
+ // If there is no phase yet, just create it.
+ this.startPhase(file);
+ }
+ },
+
+ startPhase: function(file)
+ {
+ var phase = new NetPhase(file);
+ phase.initial = !this.currentPhase;
+
+ file.breakLayout = true;
+
+ this.currentPhase = phase;
+ this.phases.push(phase);
+ },
+};
+
+// ********************************************************************************************* //
+// Time Logging
+
+function logTime(file, title, time)
+{
+ // xxxHonza: just for debugging purposes.
+ return;
+
+ if (!file._timings)
+ file._timings = {counter: 0};
+
+ if (!file._timings.logs)
+ file._timings.logs = [];
+
+ file._timings.logs.push({
+ title: title,
+ index: ++file._timings.counter,
+ time: time
+ });
+}
+
+// ********************************************************************************************* //
+
+/**
+ * A Document is a helper object that represents a document (window) on the page.
+ * This object is created for main page document and for every embedded document (iframe)
+ * for which a request is made.
+ */
+function NetDocument()
+{
+ this.id = 0;
+ this.title = "";
+}
+
+NetDocument.prototype =
+{
+ createFile: function(request)
+ {
+ return new NetFile(request.name, this);
+ }
+};
+
+// ********************************************************************************************* //
+
+/**
+ * A File is a helper object that represents a file for which a request is made.
+ * The document refers to it's parent document (NetDocument) through a member
+ * variable.
+ */
+function NetFile(href, document)
+{
+ this.href = href;
+ this.document = document;
+}
+
+NetFile.prototype =
+{
+ status: 0,
+ files: 0,
+ loaded: false,
+ fromCache: false,
+ size: -1,
+ expectedSize: -1,
+ endTime: null,
+ waitingForTime: null,
+ connectingTime: null,
+
+ getFileLink: function(message)
+ {
+ // this.SourceLink = function(url, line, type, object, instance)
+ var link = new SourceLink.SourceLink(this.href, null, "net", this.request);
+ return link;
+ },
+
+ getFileURL: function()
+ {
+ var index = this.href.indexOf("?");
+ if (index < 0)
+ return this.href;
+
+ return this.href.substring(0, index);
+ },
+
+ clear: function()
+ {
+ // Remove all members to avoid circular references and memleaks.
+ for (var name in this)
+ delete this[name];
+ }
+};
+
+Firebug.NetFile = NetFile;
+
+// ********************************************************************************************* //
+
+/**
+ * A Phase is a helper object that groups requests made in the same time frame.
+ * In other words, if a new requests is started within a given time (specified
+ * by phaseInterval [ms]) - after previous request has been started -
+ * it automatically belongs to the same phase.
+ * If a request is started after this period, a new phase is created
+ * and this file becomes to be the first in that phase.
+ * The first phase is ended when the page finishes it's loading. Other phases
+ * might be started by additional XHR made by the page.
+ *
+ * All phases are stored within NetProgress.phases array.
+ *
+ * Phases are used to compute size of the graphical timeline. The timeline
+ * for each phase starts from the beginning of the graph.
+ */
+function NetPhase(file)
+{
+ // Start time of the phase. Remains the same, even if the file
+ // is removed from the log (due to a max limit of entries).
+ // This ensures stability of the time line.
+ this.startTime = file.startTime;
+
+ // The last finished request (file) in the phase.
+ this.lastFinishedFile = null;
+
+ // Set to true if the phase needs to be updated in the UI.
+ this.invalidPhase = null;
+
+ // List of files associated with this phase.
+ this.files = [];
+
+ // List of paint events.
+ this.windowPaints = [];
+
+ this.timeStamps = [];
+
+ this.addFile(file);
+}
+
+NetPhase.prototype =
+{
+ addFile: function(file)
+ {
+ this.files.push(file);
+ file.phase = this;
+ },
+
+ removeFile: function removeFile(file)
+ {
+ Arr.remove(this.files, file);
+
+ // The file don't have a parent phase now.
+ file.phase = null;
+
+ // If the last file has been removed, update the last file member.
+ if (file == this.lastFinishedFile)
+ {
+ if (this.files.length == 0)
+ {
+ this.lastFinishedFile = null;
+ }
+ else
+ {
+ for (var i=0; i<this.files.length; i++)
+ {
+ if (this.lastFinishedFile.endTime < this.files[i].endTime)
+ this.lastFinishedFile = this.files[i];
+ }
+ }
+ }
+ },
+
+ get lastStartTime()
+ {
+ return this.files[this.files.length - 1].startTime;
+ },
+
+ get endTime()
+ {
+ var endTime = this.lastFinishedFile ? this.lastFinishedFile.endTime : null;
+ if (this.timeStamps.length > 0)
+ {
+ var lastTimeStamp = this.timeStamps[this.timeStamps.length-1].time;
+ endTime = (endTime > lastTimeStamp) ? endTime : lastTimeStamp;
+ }
+ return endTime;
+ },
+
+ addTimeStamp: function(label, classes)
+ {
+ var timeStamp = {
+ label: label,
+ classes: classes
+ };
+
+ this.timeStamps.push(timeStamp);
+ return timeStamp;
+ }
+};
+
+// ********************************************************************************************* //
+
+function getCacheEntry(file, netProgress)
+{
+ // xxxHonza: dependency on NetCacheReader can't be used in this module
+ // since it causes cycle dependency problem. So, use the module through
+ // NetMonitor namespace.
+ Firebug.NetMonitor.NetCacheReader.requestCacheEntry(file, netProgress);
+}
+
+// ********************************************************************************************* //
+// Helper for tracing
+
+function getPrintableTime()
+{
+ var date = new Date();
+ return "(" + date.getSeconds() + ":" + date.getMilliseconds() + ")";
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return NetProgress;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/net/netReps.js b/content/firebug/net/netReps.js
index 2a8713d..e2b0d3c 100644
--- a/content/firebug/net/netReps.js
+++ b/content/firebug/net/netReps.js
@@ -1,1895 +1,1903 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/chrome/firefox",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/options",
- "firebug/lib/url",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/chrome/window",
- "firebug/lib/search",
- "firebug/lib/string",
- "firebug/lib/json",
- "firebug/lib/array",
- "firebug/dom/toggleBranch",
- "firebug/lib/dragdrop",
- "firebug/net/netUtils",
- "firebug/net/netProgress",
- "firebug/lib/http",
- "firebug/js/breakpoint",
- "firebug/net/xmlViewer",
- "firebug/net/svgViewer",
- "firebug/net/jsonViewer",
- "firebug/net/fontViewer",
- "firebug/chrome/infotip",
- "firebug/css/cssPanel",
- "firebug/chrome/searchBox",
- "firebug/console/errors",
- "firebug/net/netMonitor"
-],
-function(Obj, Firebug, Firefox, Domplate, Locale, Events, Options, Url, Css, Dom, Win, Search, Str,
- Json, Arr, ToggleBranch, DragDrop, NetUtils, NetProgress, Http) {
-
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-
-const hiddenColsPref = "net.hiddenColumns";
-
-var panelName = "net";
-
-// ********************************************************************************************* //
-
-const reSplitIP = /^(\d+)\.(\d+)\.(\d+)\.(\d+):(\d+)$/;
-
-/**
- * @domplate Represents a template that is used to render basic content of the net panel.
- */
-Firebug.NetMonitor.NetRequestTable = domplate(Firebug.Rep, new Firebug.Listener(),
-{
- inspectable: false,
-
- tableTag:
- TABLE({"class": "netTable", cellpadding: 0, cellspacing: 0, hiddenCols: "",
- "role": "treegrid"},
- THEAD(
- TR({"class": "netHeaderRow netRow focusRow outerFocusRow",
- onclick: "$onClickHeader", "role": "row"},
- TD({id: "netBreakpointBar", width: "1%", "class": "netHeaderCell",
- "role": "columnheader"},
- " "
- ),
- TD({id: "netHrefCol", width: "18%", "class": "netHeaderCell alphaValue a11yFocus",
- "role": "columnheader"},
- DIV({"class": "netHeaderCellBox",
- title: Locale.$STR("net.header.URL Tooltip")},
- Locale.$STR("net.header.URL")
- )
- ),
- TD({id: "netStatusCol", width: "12%", "class": "netHeaderCell alphaValue a11yFocus",
- "role": "columnheader"},
- DIV({"class": "netHeaderCellBox",
- title: Locale.$STR("net.header.Status Tooltip")},
- Locale.$STR("net.header.Status")
- )
- ),
- TD({id: "netProtocolCol", width: "4%", "class": "netHeaderCell alphaValue a11yFocus",
- "role": "columnheader"},
- DIV({"class": "netHeaderCellBox",
- title: Locale.$STR("net.header.Protocol Tooltip")},
- Locale.$STR("net.header.Protocol")
- )
- ),
- TD({id: "netDomainCol", width: "12%", "class": "netHeaderCell alphaValue a11yFocus",
- "role": "columnheader"},
- DIV({"class": "netHeaderCellBox",
- title: Locale.$STR("net.header.Domain Tooltip")},
- Locale.$STR("net.header.Domain")
- )
- ),
- TD({id: "netSizeCol", width: "4%", "class": "netHeaderCell a11yFocus",
- "role": "columnheader"},
- DIV({"class": "netHeaderCellBox",
- title: Locale.$STR("net.header.Size Tooltip")},
- Locale.$STR("net.header.Size")
- )
- ),
- TD({id: "netLocalAddressCol", width: "4%", "class": "netHeaderCell a11yFocus",
- "role": "columnheader"},
- DIV({"class": "netHeaderCellBox",
- title: Locale.$STR("net.header.Local IP Tooltip")},
- Locale.$STR("net.header.Local IP")
- )
- ),
- TD({id: "netRemoteAddressCol", width: "4%", "class": "netHeaderCell a11yFocus",
- "role": "columnheader"},
- DIV({"class": "netHeaderCellBox",
- title: Locale.$STR("net.header.Remote IP Tooltip")},
- Locale.$STR("net.header.Remote IP")
- )
- ),
- TD({id: "netTimeCol", width: "53%", "class": "netHeaderCell a11yFocus",
- "role": "columnheader"},
- DIV({"class": "netHeaderCellBox",
- title: Locale.$STR("net.header.Timeline Tooltip")},
- Locale.$STR("net.header.Timeline")
- )
- )
- )
- ),
- TBODY({"class": "netTableBody", "role" : "presentation"})
- ),
-
- onClickHeader: function(event)
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.onClickHeader\n");
-
- // Also support enter key for sorting
- if (!Events.isLeftClick(event) && !(event.type == "keypress" && event.keyCode == 13))
- return;
-
- var table = Dom.getAncestorByClass(event.target, "netTable");
- var column = Dom.getAncestorByClass(event.target, "netHeaderCell");
- this.sortColumn(table, column);
- },
-
- sortColumn: function(table, col, direction)
- {
- if (!col)
- return;
-
- var numerical = !Css.hasClass(col, "alphaValue");
-
- var colIndex = 0;
- for (col = col.previousSibling; col; col = col.previousSibling)
- ++colIndex;
-
- // the first breakpoint bar column is not sortable.
- if (colIndex == 0)
- return;
-
- this.sort(table, colIndex, numerical, direction);
- },
-
- sort: function(table, colIndex, numerical, direction)
- {
- var headerRow = table.querySelector(".netHeaderRow");
-
- // Remove class from the currently sorted column
- var headerSorted = Dom.getChildByClass(headerRow, "netHeaderSorted");
- Css.removeClass(headerSorted, "netHeaderSorted");
- if (headerSorted)
- headerSorted.removeAttribute("aria-sort");
-
- // Mark new column as sorted.
- var header = headerRow.childNodes[colIndex];
- Css.setClass(header, "netHeaderSorted");
-
- // If the column is already using required sort direction, bubble out.
- if ((direction == "desc" && header.sorted == 1) ||
- (direction == "asc" && header.sorted == -1))
- return;
-
- var newDirection = ((header.sorted && header.sorted == 1) || (!header.sorted && direction == "asc")) ? "ascending" : "descending";
- if (header)
- header.setAttribute("aria-sort", newDirection);
-
- var tbody = table.lastChild;
- var colID = header.getAttribute("id");
-
- table.setAttribute("sortcolumn", colID);
- table.setAttribute("sortdirection", newDirection);
-
- var values = [];
- for (var row = tbody.childNodes[1]; row; row = row.nextSibling)
- {
- if (!row.repObject)
- continue;
-
- if (Css.hasClass(row, "history"))
- continue;
-
- var cell = row.childNodes[colIndex];
- var sortFunction = function sort(a, b) { return a.value < b.value ? -1 : 1; };
- var ipSortFunction = function sort(a, b)
- {
- var aParts = reSplitIP.exec(a.value);
- var bParts = reSplitIP.exec(b.value);
-
- if (!aParts)
- return -1;
- if (!bParts)
- return 1;
-
- for (var i=1; i<aParts.length; ++i)
- {
- if (parseInt(aParts[i]) != parseInt(bParts[i]))
- return parseInt(aParts[i]) < parseInt(bParts[i]) ? -1 : 1;
- }
-
- return 1;
- };
- var value;
-
- switch (colID)
- {
- case "netTimeCol":
- value = row.repObject.requestNumber;
- break;
- case "netSizeCol":
- value = row.repObject.size;
- break;
- case "netRemoteAddressCol":
- case "netLocalAddressCol":
- value = cell.textContent;
- sortFunction = ipSortFunction;
- break;
- default:
- value = numerical ? parseFloat(cell.textContent) : cell.textContent;
- }
-
- if (Css.hasClass(row, "opened"))
- {
- var netInfoRow = row.nextSibling;
- values.push({row: row, value: value, info: netInfoRow});
- row = netInfoRow;
- }
- else
- {
- values.push({row: row, value: value});
- }
- }
-
- values.sort(sortFunction);
-
- if (newDirection == "ascending")
- {
- Css.removeClass(header, "sortedDescending");
- Css.setClass(header, "sortedAscending");
- header.sorted = -1;
-
- for (var i = 0; i < values.length; ++i)
- {
- tbody.appendChild(values[i].row);
- if (values[i].info)
- tbody.appendChild(values[i].info);
- }
- }
- else
- {
- Css.removeClass(header, "sortedAscending");
- Css.setClass(header, "sortedDescending");
-
- header.sorted = 1;
-
- for (var i = values.length-1; i >= 0; --i)
- {
- tbody.appendChild(values[i].row);
- if (values[i].info)
- tbody.appendChild(values[i].info);
- }
- }
-
- // Make sure the summary row is again at the end.
- var summaryRow = tbody.getElementsByClassName("netSummaryRow").item(0);
- tbody.appendChild(summaryRow);
- },
-
- supportsObject: function(object, type)
- {
- return (object == this);
- },
-
- /**
- * Provides menu items for header context menu.
- */
- getContextMenuItems: function(object, target, context)
- {
- var popup = Firebug.chrome.$("fbContextMenu");
- if (popup.firstChild && popup.firstChild.getAttribute("command") == "cmd_copy")
- popup.removeChild(popup.firstChild);
-
- var items = [];
-
- // Iterate over all columns and create a menu item for each.
- var table = context.getPanel(panelName, true).table;
- var hiddenCols = table.getAttribute("hiddenCols");
-
- var lastVisibleIndex;
- var visibleColCount = 0;
-
- // Iterate all columns except of the first one for breakpoints.
- var header = Dom.getAncestorByClass(target, "netHeaderRow");
- var columns = Arr.cloneArray(header.childNodes);
- columns.shift();
- for (var i=0; i<columns.length; i++)
- {
- var column = columns[i];
- var columnContent = column.getElementsByClassName("netHeaderCellBox").item(0);
- var visible = (hiddenCols.indexOf(column.id) == -1);
-
- items.push({
- label: columnContent.textContent,
- tooltiptext: columnContent.title,
- type: "checkbox",
- checked: visible,
- nol10n: true,
- command: Obj.bindFixed(this.onShowColumn, this, context, column.id)
- });
-
- if (visible)
- {
- lastVisibleIndex = i;
- visibleColCount++;
- }
- }
-
- // If the last column is visible, disable its menu item.
- if (visibleColCount == 1)
- items[lastVisibleIndex].disabled = true;
-
- items.push("-");
- items.push({
- label: "net.header.Reset_Header",
- tooltiptext: "net.header.tip.Reset_Header",
- command: Obj.bindFixed(this.onResetColumns, this, context)
- });
-
- return items;
- },
-
- onShowColumn: function(context, colId)
- {
- var panel = context.getPanel(panelName, true);
- var table = panel.table;
- var hiddenCols = table.getAttribute("hiddenCols");
-
- // If the column is already present in the list of hidden columns,
- // remove it, otherwise append it.
- var index = hiddenCols.indexOf(colId);
- if (index >= 0)
- {
- table.setAttribute("hiddenCols", hiddenCols.substr(0,index-1) +
- hiddenCols.substr(index+colId.length));
- }
- else
- {
- table.setAttribute("hiddenCols", hiddenCols + " " + colId);
- }
-
- // Store current state into the preferences.
- Options.set(hiddenColsPref, table.getAttribute("hiddenCols"));
-
- panel.updateHRefLabelWidth();
- },
-
- onResetColumns: function(context)
- {
- var panel = context.getPanel(panelName, true);
- var header = panel.panelNode.getElementsByClassName("netHeaderRow").item(0);
-
- // Reset widths
- var columns = header.childNodes;
- for (var i=0; i<columns.length; i++)
- {
- var col = columns[i];
- if (col.style)
- col.style.width = "";
- }
-
- // Reset visibility. Only the Status column is hidden by default.
- Options.clear(hiddenColsPref);
- panel.table.setAttribute("hiddenCols", Options.get(hiddenColsPref));
- },
-});
-
-// ********************************************************************************************* //
-
-/**
- * @domplate Represents a template that is used to render net panel entries.
- */
-Firebug.NetMonitor.NetRequestEntry = domplate(Firebug.Rep, new Firebug.Listener(),
-{
- fileTag:
- FOR("file", "$files",
- TR({"class": "netRow $file.file|getCategory focusRow outerFocusRow",
- onclick: "$onClick", "role": "row", "aria-expanded": "false",
- $hasHeaders: "$file.file|hasRequestHeaders",
- $history: "$file.file.history",
- $loaded: "$file.file.loaded",
- $responseError: "$file.file|isError",
- $fromBFCache: "$file.file|isFromBFCache",
- $fromCache: "$file.file.fromCache",
- $inFrame: "$file.file|getInFrame"},
- TD({"class": "netDebugCol netCol"},
- DIV({"class": "sourceLine netRowHeader",
- onclick: "$onClickRowHeader"},
- " "
- )
- ),
- TD({"class": "netHrefCol netCol a11yFocus", "role": "rowheader"},
- DIV({"class": "netHrefLabel netLabel",
- style: "margin-left: $file.file|getIndent\\px"},
- "$file.file|getHref"
- ),
- DIV({"class": "netFullHrefLabel netHrefLabel",
- style: "margin-left: $file.file|getIndent\\px"},
- "$file.file.href"
- )
- ),
- TD({"class": "netStatusCol netCol a11yFocus", "role": "gridcell"},
- DIV({"class": "netStatusLabel netLabel"}, "$file.file|getStatus")
- ),
- TD({"class": "netProtocolCol netCol a11yFocus", "role": "gridcell"},
- DIV({"class": "netProtocolLabel netLabel"}, "$file.file|getProtocol")
- ),
- TD({"class": "netDomainCol netCol a11yFocus", "role": "gridcell" },
- DIV({"class": "netDomainLabel netLabel"}, "$file.file|getDomain")
- ),
- TD({"class": "netSizeCol netCol a11yFocus", "role": "gridcell",
- "aria-describedby": "fbNetSizeInfoTip"},
- DIV({"class": "netSizeLabel netLabel"}, "$file.file|getSize")
- ),
- TD({"class": "netLocalAddressCol netCol a11yFocus", "role": "gridcell"},
- DIV({"class": "netAddressLabel netLabel"}, "$file.file|getLocalAddress")
- ),
- TD({"class": "netRemoteAddressCol netCol a11yFocus", "role": "gridcell"},
- DIV({"class": "netAddressLabel netLabel"}, "$file.file|getRemoteAddress")
- ),
- TD({"class": "netTimeCol netCol a11yFocus", "role": "gridcell",
- "aria-describedby": "fbNetTimeInfoTip" },
- DIV({"class": "netLoadingIcon"}),
- DIV({"class": "netBar"},
- " ",
- DIV({"class": "netBlockingBar", style: "left: $file.offset"}),
- DIV({"class": "netResolvingBar", style: "left: $file.offset"}),
- DIV({"class": "netConnectingBar", style: "left: $file.offset"}),
- DIV({"class": "netSendingBar", style: "left: $file.offset"}),
- DIV({"class": "netWaitingBar", style: "left: $file.offset"}),
- DIV({"class": "netReceivingBar", style: "left: $file.offset; width: $file.width"},
- SPAN({"class": "netTimeLabel"}, "$file|getElapsedTime")
- )
- // Page timings (vertical lines) are dynamically appended here.
- )
- )
- )
- ),
-
- netInfoTag:
- TR({"class": "netInfoRow $file|getCategory outerFocusRow", "role" : "row"},
- TD({"class": "sourceLine netRowHeader"}),
- TD({"class": "netInfoCol", colspan: 8, "role" : "gridcell"})
- ),
-
- activationTag:
- TR({"class": "netRow netActivationRow"},
- TD({"class": "netCol netActivationLabel", colspan: 9, "role": "status"},
- Locale.$STR("net.ActivationMessage")
- )
- ),
-
- summaryTag:
- TR({"class": "netRow netSummaryRow focusRow outerFocusRow", "role": "row",
- "aria-live": "polite"},
- TD({"class": "netCol"}, " "),
- TD({"class": "netCol netHrefCol a11yFocus", "role" : "rowheader"},
- DIV({"class": "netCountLabel netSummaryLabel",
- title: Locale.$STR("net.summary.tip.request count")},
- "-"
- )
- ),
- TD({"class": "netCol netStatusCol a11yFocus", "role" : "gridcell"}),
- TD({"class": "netCol netProtocolCol a11yFocus", "role" : "gridcell"}),
- TD({"class": "netCol netDomainCol a11yFocus", "role" : "gridcell"}),
- TD({"class": "netTotalSizeCol netCol netSizeCol a11yFocus", "role": "gridcell"},
- DIV({"class": "netTotalSizeLabel netSummaryLabel",
- title: Locale.$STR("net.summary.tip.total size")},
- "0 B"
- )
- ),
- TD({"class": "netTotalTimeCol netCol netTimeCol a11yFocus", "role":
- "gridcell", colspan: "3"},
- DIV({"class": "netSummaryBar", style: "width: 100%"},
- DIV({"class": "netCacheSizeLabel netSummaryLabel", collapsed: "true",
- title: Locale.$STR("net.summary.tip.total cached size")},
- "(" + Locale.$STRF("net.summary.from_cache", ["0 B"]) + ")"
- ),
- DIV({"class": "netTotalTimeLabel netSummaryLabel",
- title: Locale.$STR("net.summary.tip.total request time")},
- "0ms"
- )
- )
- )
- ),
-
- footerTag:
- TR({"class": "netFooterRow", "style" : "height: 100%"},
- TD({"class": "", colspan: 9})
- ),
-
- onClickRowHeader: function(event)
- {
- Events.cancelEvent(event);
-
- var rowHeader = event.target;
- if (!Css.hasClass(rowHeader, "netRowHeader"))
- return;
-
- var row = Dom.getAncestorByClass(event.target, "netRow");
- if (!row)
- return;
-
- var context = Firebug.getElementPanel(row).context;
- var panel = context.getPanel(panelName, true);
- if (panel)
- panel.breakOnRequest(row.repObject);
- },
-
- onClick: function(event)
- {
- if (Events.isLeftClick(event))
- {
- var row = Dom.getAncestorByClass(event.target, "netRow");
- if (row)
- {
- // Click on the rowHeader element inserts a breakpoint.
- if (Dom.getAncestorByClass(event.target, "netRowHeader"))
- return;
-
- this.toggleHeadersRow(row);
- Events.cancelEvent(event);
- }
- }
- },
-
- toggleHeadersRow: function(row)
- {
- if (!Css.hasClass(row, "hasHeaders"))
- return;
-
- var file = row.repObject;
-
- Css.toggleClass(row, "opened");
- if (Css.hasClass(row, "opened"))
- {
- var netInfoRow = this.netInfoTag.insertRows({file: file}, row)[0];
- var netInfoCol = netInfoRow.getElementsByClassName("netInfoCol").item(0);
- var netInfoBox = Firebug.NetMonitor.NetInfoBody.tag.replace({file: file}, netInfoCol);
-
- // Notify listeners so additional tabs can be created.
- Events.dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "initTabBody",
- [netInfoBox, file]);
-
- // Select "Headers" tab by default, if no other tab is selected already.
- // (e.g. by a third party Firebug extension in 'initTabBody' event)
- if (!netInfoBox.selectedTab)
- Firebug.NetMonitor.NetInfoBody.selectTabByName(netInfoBox, "Headers");
-
- var category = NetUtils.getFileCategory(row.repObject);
- if (category)
- Css.setClass(netInfoBox, "category-" + category);
-
- row.setAttribute("aria-expanded", "true");
- }
- else
- {
- var netInfoRow = row.nextSibling;
- var netInfoBox = netInfoRow.getElementsByClassName("netInfoBody").item(0);
-
- Events.dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody",
- [netInfoBox, file]);
-
- row.parentNode.removeChild(netInfoRow);
- row.setAttribute("aria-expanded", "false");
- }
- },
-
- getCategory: function(file)
- {
- var category = NetUtils.getFileCategory(file);
- if (category)
- return "category-" + category;
-
- return "category-undefined";
- },
-
- getInFrame: function(file)
- {
- return !!(file.document ? file.document.parent : false);
- },
-
- getIndent: function(file)
- {
- // XXXjoe Turn off indenting for now, it's confusing since we don't
- // actually place nested files directly below their parent
- //return file.document.level * indentWidth;
- return 10;
- },
-
- isNtlmAuthorizationRequest: function(file)
- {
- if (file.responseStatus != 401)
- return false;
-
- //xxxsz: file.responseHeaders is undefined here for some reason
- var resp = file.responseHeadersText.match(/www-authenticate:\s(.+)/i)[1];
- return (resp && resp.search(/ntlm|negotiate/i) >= 0);
- },
-
- isError: function(file)
- {
- if (file.aborted)
- return true;
-
- if (this.isNtlmAuthorizationRequest(file))
- return false;
-
- var errorRange = Math.floor(file.responseStatus/100);
- return errorRange == 4 || errorRange == 5;
- },
-
- isFromBFCache: function(file)
- {
- return file.fromBFCache;
- },
-
- getHref: function(file)
- {
- var fileName = Url.getFileName(file.href);
- var limit = Options.get("stringCropLength");
- if (limit > 0)
- fileName = Str.cropString(fileName, limit);
- return (file.method ? file.method.toUpperCase() : "?") + " " + fileName;
- },
-
- getProtocol: function(file)
- {
- var protocol = Url.getProtocol(file.href);
- var text = file.responseHeadersText;
- var spdy = text ? text.search(/X-Firefox-Spdy/i) >= 0 : null;
- return spdy ? protocol + " SPDY" : protocol;
- },
-
- getStatus: function(file)
- {
- var text = "";
-
- if (file.responseStatus)
- text += file.responseStatus + " ";
-
- if (file.responseStatusText)
- text += file.responseStatusText;
-
- text = text ? Str.cropString(text) : " ";
-
- if (file.fromAppCache)
- text += " (AppCache)";
- else if (file.fromBFCache)
- text += " (BFCache)";
-
- return text;
- },
-
- getDomain: function(file)
- {
- return Url.getPrettyDomain(file.href);
- },
-
- getSize: function(file)
- {
- var size = (file.size >= 0) ? file.size : 0;
- return this.formatSize(size);
- },
-
- getLocalAddress: function(file)
- {
- return Str.formatIP(file.localAddress, file.localPort);
- },
-
- getRemoteAddress: function(file)
- {
- return Str.formatIP(file.remoteAddress, file.remotePort);
- },
-
- getElapsedTime: function(file)
- {
- if (!file.elapsed || file.elapsed < 0)
- return "";
-
- return this.formatTime(file.elapsed);
- },
-
- hasRequestHeaders: function(file)
- {
- return !!file.requestHeaders;
- },
-
- formatSize: function(bytes)
- {
- return Str.formatSize(bytes);
- },
-
- formatTime: function(elapsed)
- {
- return Str.formatTime(elapsed);
- }
-});
-
-// ********************************************************************************************* //
-
-Firebug.NetMonitor.NetPage = domplate(Firebug.Rep,
-{
- separatorTag:
- TR({"class": "netRow netPageSeparatorRow"},
- TD({"class": "netCol netPageSeparatorLabel", colspan: 8, "role": "separator"})
- ),
-
- pageTag:
- TR({"class": "netRow netPageRow", onclick: "$onPageClick"},
- TD({"class": "netCol netPageCol", colspan: 8, "role": "separator"},
- DIV({"class": "netLabel netPageLabel netPageTitle"}, "$page|getTitle")
- )
- ),
-
- getTitle: function(page)
- {
- return page.pageTitle;
- },
-
- onPageClick: function(event)
- {
- if (!Events.isLeftClick(event))
- return;
-
- var target = event.target;
- var pageRow = Dom.getAncestorByClass(event.target, "netPageRow");
- var panel = Firebug.getElementPanel(pageRow);
-
- if (!Css.hasClass(pageRow, "opened"))
- {
- Css.setClass(pageRow, "opened");
-
- var files = pageRow.files;
-
- // Move all net-rows from the persistedState to this panel.
- panel.insertRows(files, pageRow);
-
- for (var i=0; i<files.length; i++)
- panel.queue.push(files[i].file);
-
- panel.layout();
- }
- else
- {
- Css.removeClass(pageRow, "opened");
-
- var nextRow = pageRow.nextSibling;
- while (!Css.hasClass(nextRow, "netPageRow") &&
- !Css.hasClass(nextRow, "netPageSeparatorRow"))
- {
- var nextSibling = nextRow.nextSibling;
- nextRow.parentNode.removeChild(nextRow);
- nextRow = nextSibling;
- }
- }
- },
-});
-
-// ********************************************************************************************* //
-
-/**
- * @domplate Represents a template that is used to render detailed info about a request.
- * This template is rendered when a request is expanded.
- */
-Firebug.NetMonitor.NetInfoBody = domplate(Firebug.Rep, new Firebug.Listener(),
-{
- tag:
- DIV({"class": "netInfoBody", _repObject: "$file"},
- TAG("$infoTabs", {file: "$file"}),
- TAG("$infoBodies", {file: "$file"})
- ),
-
- infoTabs:
- DIV({"class": "netInfoTabs focusRow subFocusRow", "role": "tablist"},
- A({"class": "netInfoParamsTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
- view: "Params",
- $collapsed: "$file|hideParams"},
- Locale.$STR("URLParameters")
- ),
- A({"class": "netInfoHeadersTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
- view: "Headers"},
- Locale.$STR("Headers")
- ),
- A({"class": "netInfoPostTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
- view: "Post",
- $collapsed: "$file|hidePost"},
- Locale.$STR("Post")
- ),
- A({"class": "netInfoPutTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
- view: "Put",
- $collapsed: "$file|hidePut"},
- Locale.$STR("Put")
- ),
- A({"class": "netInfoPatchTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
- view: "Patch",
- $collapsed: "$file|hidePatch"},
- Locale.$STR("net.label.Patch")
- ),
- A({"class": "netInfoResponseTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
- view: "Response",
- $collapsed: "$file|hideResponse"},
- Locale.$STR("Response")
- ),
- A({"class": "netInfoHtmlTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
- view: "Html",
- $collapsed: "$file|hideHtml"},
- Locale.$STR("HTML")
- )
- ),
-
- infoBodies:
- DIV({"class": "netInfoBodies outerFocusRow"},
- TABLE({"class": "netInfoParamsText netInfoText netInfoParamsTable", "role": "tabpanel",
- cellpadding: 0, cellspacing: 0}, TBODY()),
- DIV({"class": "netInfoHeadersText netInfoText", "role": "tabpanel"}),
- DIV({"class": "netInfoPostText netInfoText", "role": "tabpanel"}),
- DIV({"class": "netInfoPutText netInfoText", "role": "tabpanel"}),
- DIV({"class": "netInfoPatchText netInfoText", "role": "tabpanel"}),
- DIV({"class": "netInfoResponseText netInfoText", "role": "tabpanel"}),
- DIV({"class": "netInfoHtmlText netInfoText", "role": "tabpanel"},
- IFRAME({"class": "netInfoHtmlPreview", "role": "document"}),
- DIV({"class": "htmlPreviewResizer"})
- )
- ),
-
- headerDataTag:
- FOR("param", "$headers",
- TR({"role": "listitem"},
- TD({"class": "netInfoParamName", "role": "presentation"},
- TAG("$param|getNameTag", {param: "$param"})
- ),
- TD({"class": "netInfoParamValue", "role": "list", "aria-label": "$param.name"},
- FOR("line", "$param|getParamValueIterator",
- CODE({"class": "focusRow subFocusRow", "role": "listitem"}, "$line")
- )
- )
- )
- ),
-
- responseHeadersFromBFCacheTag:
- TR(
- TD({"class": "headerFromBFCache"},
- Locale.$STR("net.label.ResponseHeadersFromBFCache")
- )
- ),
-
- customTab:
- A({"class": "netInfo$tabId\\Tab netInfoTab", onclick: "$onClickTab",
- view: "$tabId", "role": "tab"},
- "$tabTitle"
- ),
-
- customBody:
- DIV({"class": "netInfo$tabId\\Text netInfoText", "role": "tabpanel"}),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- nameTag:
- SPAN("$param|getParamName"),
-
- nameWithTooltipTag:
- SPAN({title: "$param.name"}, "$param|getParamName"),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getNameTag: function(param)
- {
- return (this.getParamName(param) == param.name) ? this.nameTag : this.nameWithTooltipTag;
- },
-
- getParamName: function(param)
- {
- var name = param.name;
- var limit = Firebug.netParamNameLimit;
- if (limit <= 0)
- return name;
-
- if (name.length > limit)
- name = name.substr(0, limit) + "...";
- return name;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- hideParams: function(file)
- {
- return !file.urlParams || !file.urlParams.length;
- },
-
- hidePost: function(file)
- {
- return file.method.toUpperCase() != "POST";
- },
-
- hidePut: function(file)
- {
- return file.method.toUpperCase() != "PUT";
- },
-
- hidePatch: function(file)
- {
- return file.method.toUpperCase() != "PATCH";
- },
-
- hideResponse: function(file)
- {
- var headers = file.responseHeaders;
- for (var i=0; headers && i<headers.length; i++)
- {
- if (headers[i].name == "Content-Length")
- return headers[i].value == 0;
- }
-
- return file.category in NetUtils.binaryFileCategories || file.responseText == "";
- },
-
- hideHtml: function(file)
- {
- if (!file.mimeType)
- return true;
-
- var types = ["text/html", "application/xhtml+xml"];
- return !NetUtils.matchesContentType(file.mimeType, types);
- },
-
- onClickTab: function(event)
- {
- this.selectTab(event.currentTarget);
- },
-
- getParamValueIterator: function(param)
- {
- // This value is inserted into CODE element and so, make sure the HTML isn't escaped (1210).
- // This is why the second parameter is true.
- // The CODE (with style white-space:pre) element preserves whitespaces so they are
- // displayed the same, as they come from the server (1194).
- // In case of a long header values of post parameters the value must be wrapped (2105).
- return Str.wrapText(param.value, true);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- appendTab: function(netInfoBox, tabId, tabTitle)
- {
- // Create new tab and body.
- var args = {tabId: tabId, tabTitle: tabTitle};
- this.customTab.append(args, netInfoBox.getElementsByClassName("netInfoTabs").item(0));
- this.customBody.append(args, netInfoBox.getElementsByClassName("netInfoBodies").item(0));
- },
-
- selectTabByName: function(netInfoBox, tabName)
- {
- var tab = Dom.getChildByClass(netInfoBox, "netInfoTabs", "netInfo" + tabName + "Tab");
- if (!tab)
- return false;
-
- this.selectTab(tab);
-
- return true;
- },
-
- selectTab: function(tab)
- {
- var netInfoBox = Dom.getAncestorByClass(tab, "netInfoBody");
-
- var view = tab.getAttribute("view");
- if (netInfoBox.selectedTab)
- {
- netInfoBox.selectedTab.removeAttribute("selected");
- netInfoBox.selectedText.removeAttribute("selected");
- netInfoBox.selectedTab.setAttribute("aria-selected", "false");
- }
- var textBodyName = "netInfo" + view + "Text";
-
- netInfoBox.selectedTab = tab;
- netInfoBox.selectedText = netInfoBox.getElementsByClassName(textBodyName).item(0);
-
- netInfoBox.selectedTab.setAttribute("selected", "true");
- netInfoBox.selectedText.setAttribute("selected", "true");
- netInfoBox.selectedTab.setAttribute("aria-selected", "true");
-
- var file = Firebug.getRepObject(netInfoBox);
- var panel = Firebug.getElementPanel(netInfoBox);
- if (!panel)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("net.selectTab; ERROR no panel");
- return;
- }
-
- var context = panel.context;
- this.updateInfo(netInfoBox, file, context);
- },
-
- updateInfo: function(netInfoBox, file, context)
- {
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.updateInfo; file", file);
-
- if (!netInfoBox)
- {
- if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS)
- FBTrace.sysout("net.updateInfo; ERROR netInfo == null " + file.href, file);
- return;
- }
-
- var tab = netInfoBox.selectedTab;
- if (Css.hasClass(tab, "netInfoParamsTab"))
- {
- if (file.urlParams && !netInfoBox.urlParamsPresented)
- {
- netInfoBox.urlParamsPresented = true;
- this.insertHeaderRows(netInfoBox, file.urlParams, "Params");
- }
- }
-
- if (Css.hasClass(tab, "netInfoHeadersTab"))
- {
- var headersText = netInfoBox.getElementsByClassName("netInfoHeadersText").item(0);
-
- if (file.responseHeaders && !netInfoBox.responseHeadersPresented)
- {
- netInfoBox.responseHeadersPresented = true;
-
- Firebug.NetMonitor.NetInfoHeaders.renderHeaders(headersText,
- file.responseHeaders, "ResponseHeaders");
-
- // If the request comes from the BFCache do not display reponse headers.
- // There is not real response from the server and all headers come from
- // the cache. So, the user should see the 'Response Headers From Cache'
- // section (see issue 5573).
- if (file.fromBFCache)
- {
- // Display a message instead of headers.
- var body = Dom.getElementByClass(headersText, "netInfoResponseHeadersBody");
- Firebug.NetMonitor.NetInfoBody.responseHeadersFromBFCacheTag.replace({}, body);
- }
- }
-
- if (file.cachedResponseHeaders && !netInfoBox.cachedResponseHeadersPresented)
- {
- netInfoBox.cachedResponseHeadersPresented = true;
- Firebug.NetMonitor.NetInfoHeaders.renderHeaders(headersText,
- file.cachedResponseHeaders, "CachedResponseHeaders");
- }
-
- if (file.requestHeaders && !netInfoBox.requestHeadersPresented)
- {
- netInfoBox.requestHeadersPresented = true;
- Firebug.NetMonitor.NetInfoHeaders.renderHeaders(headersText,
- file.requestHeaders, "RequestHeaders");
- }
-
- if (!file.postRequestsHeaders)
- {
- var text = NetUtils.getPostText(file, context, true);
- file.postRequestsHeaders = Http.getHeadersFromPostText(file.request, text);
- }
-
- if (file.postRequestsHeaders && !netInfoBox.postRequestsHeadersPresented)
- {
- netInfoBox.postRequestsHeadersPresented = true;
- Firebug.NetMonitor.NetInfoHeaders.renderHeaders(headersText,
- file.postRequestsHeaders, "PostRequestHeaders");
- }
- }
-
- if (Css.hasClass(tab, "netInfoPostTab"))
- {
- if (!netInfoBox.postPresented)
- {
- netInfoBox.postPresented = true;
- var postText = netInfoBox.getElementsByClassName("netInfoPostText").item(0);
- Firebug.NetMonitor.NetInfoPostData.render(context, postText, file);
- }
- }
-
- if (Css.hasClass(tab, "netInfoPutTab"))
- {
- if (!netInfoBox.putPresented)
- {
- netInfoBox.putPresented = true;
- var putText = netInfoBox.getElementsByClassName("netInfoPutText").item(0);
- Firebug.NetMonitor.NetInfoPostData.render(context, putText, file);
- }
- }
-
- if (Css.hasClass(tab, "netInfoPatchTab"))
- {
- if (!netInfoBox.patchPresented)
- {
- netInfoBox.patchPresented = true;
- var patchText = netInfoBox.getElementsByClassName("netInfoPatchText").item(0);
- Firebug.NetMonitor.NetInfoPostData.render(context, patchText, file);
- }
- }
-
- if (Css.hasClass(tab, "netInfoResponseTab") && file.loaded && !netInfoBox.responsePresented)
- {
- var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0);
-
- // Let listeners display the response
- Events.dispatch(this.fbListeners, "updateResponse", [netInfoBox, file, context]);
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("netInfoResponseTab", {netInfoBox: netInfoBox, file: file});
- if (!netInfoBox.responsePresented)
- {
- if (file.category == "image")
- {
- netInfoBox.responsePresented = true;
-
- var responseImage = netInfoBox.ownerDocument.createElement("img");
- responseImage.src = file.href;
-
- Dom.clearNode(responseTextBox);
- responseTextBox.appendChild(responseImage, responseTextBox);
- }
- else if (!(NetUtils.binaryCategoryMap.hasOwnProperty(file.category)))
- {
- this.setResponseText(file, netInfoBox, responseTextBox, context);
- }
- }
- }
-
- if (Css.hasClass(tab, "netInfoHtmlTab") && file.loaded && !netInfoBox.htmlPresented)
- {
- netInfoBox.htmlPresented = true;
-
- var text = NetUtils.getResponseText(file, context);
- this.htmlPreview = netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0);
- this.htmlPreview.contentWindow.document.body.innerHTML = text;
-
- // Workaround for issue 5774 (it's not clear why the 'load' event is actually
- // sent to the iframe when the user swithes Firebug panels).
- // The event is sent only for the iframes in the Console panel.
- context.addEventListener(this.htmlPreview, "load", function(event)
- {
- event.target.contentDocument.body.innerHTML = text;
- });
-
- var defaultHeight = parseInt(Options.get("netHtmlPreviewHeight"));
- if (!isNaN(defaultHeight))
- this.htmlPreview.style.height = defaultHeight + "px";
-
- var handler = netInfoBox.querySelector(".htmlPreviewResizer");
- this.resizer = new DragDrop.Tracker(handler, {
- onDragStart: Obj.bind(this.onDragStart, this),
- onDragOver: Obj.bind(this.onDragOver, this),
- onDrop: Obj.bind(this.onDrop, this)
- });
- }
-
- // Notify listeners about update so, content of custom tabs can be updated.
- Events.dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "updateTabBody",
- [netInfoBox, file, context]);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // HTML Preview Resizer
-
- onDragStart: function(tracker)
- {
- var body = Dom.getBody(this.htmlPreview.ownerDocument);
- body.setAttribute("resizingHtmlPreview", "true");
- this.startHeight = this.htmlPreview.clientHeight;
- },
-
- onDragOver: function(newPos, tracker)
- {
- var newHeight = (this.startHeight + newPos.y);
- this.htmlPreview.style.height = newHeight + "px";
- Options.setPref(Firebug.prefDomain, "netHtmlPreviewHeight", newHeight);
- },
-
- onDrop: function(tracker)
- {
- var body = Dom.getBody(this.htmlPreview.ownerDocument);
- body.removeAttribute("resizingHtmlPreview");
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- setResponseText: function(file, netInfoBox, responseTextBox, context)
- {
- // Get response text and make sure it doesn't exceed the max limit.
- var text = NetUtils.getResponseText(file, context);
- var limit = Firebug.netDisplayedResponseLimit + 15;
- var limitReached = text ? (text.length > limit) : false;
- if (limitReached)
- text = text.substr(0, limit) + "...";
-
- // Insert the response into the UI.
- if (text)
- Str.insertWrappedText(text, responseTextBox);
- else
- Str.insertWrappedText("", responseTextBox);
-
- // Append a message informing the user that the response isn't fully displayed.
- if (limitReached)
- {
- var object = {
- text: Locale.$STR("net.responseSizeLimitMessage"),
- onClickLink: function() {
- NetUtils.openResponseInTab(file);
- }
- };
- Firebug.NetMonitor.ResponseSizeLimit.append(object, responseTextBox);
- }
-
- netInfoBox.responsePresented = true;
-
- if (FBTrace.DBG_NET)
- FBTrace.sysout("net.setResponseText; response text updated");
- },
-
- insertHeaderRows: function(netInfoBox, headers, tableName, rowName)
- {
- if (!headers.length)
- return;
-
- var headersTable = netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0);
- var tbody = Dom.getChildByClass(headersTable, "netInfo" + rowName + "Body");
- if (!tbody)
- tbody = headersTable.firstChild;
- var titleRow = Dom.getChildByClass(tbody, "netInfo" + rowName + "Title");
-
- headers.sort(function(a, b)
- {
- return a.name > b.name ? 1 : -1;
- });
-
- this.headerDataTag.insertRows({headers: headers}, titleRow ? titleRow : tbody);
- Css.removeClass(titleRow, "collapsed");
- },
-});
-
-// ********************************************************************************************* //
-
-/**
- * @domplate Represents posted data within request info (the info, which is visible when
- * a request entry is expanded. This template renders content of the Post tab.
- */
-Firebug.NetMonitor.NetInfoPostData = domplate(Firebug.Rep, new Firebug.Listener(),
-{
- // application/x-www-form-urlencoded
- paramsTable:
- TABLE({"class": "netInfoPostParamsTable", cellpadding: 0, cellspacing: 0,
- "role": "presentation"},
- TBODY({"role": "list", "aria-label": Locale.$STR("net.label.Parameters")},
- TR({"class": "netInfoPostParamsTitle", "role": "presentation"},
- TD({colspan: 2, "role": "presentation"},
- DIV({"class": "netInfoPostParams"},
- Locale.$STR("net.label.Parameters"),
- SPAN({"class": "netInfoPostContentType"},
- "application/x-www-form-urlencoded"
- )
- )
- )
- )
- )
- ),
-
- // multipart/form-data
- partsTable:
- TABLE({"class": "netInfoPostPartsTable", cellpadding: 0, cellspacing: 0,
- "role": "presentation"},
- TBODY({"role": "list", "aria-label": Locale.$STR("net.label.Parts")},
- TR({"class": "netInfoPostPartsTitle", "role": "presentation"},
- TD({colspan: 2, "role":"presentation" },
- DIV({"class": "netInfoPostParams"},
- Locale.$STR("net.label.Parts"),
- SPAN({"class": "netInfoPostContentType"},
- "multipart/form-data"
- )
- )
- )
- )
- )
- ),
-
- // application/json
- jsonTable:
- TABLE({"class": "netInfoPostJSONTable", cellpadding: 0, cellspacing: 0,
- "role": "presentation"},
- TBODY({"role": "list", "aria-label": Locale.$STR("jsonviewer.tab.JSON")},
- TR({"class": "netInfoPostJSONTitle", "role": "presentation"},
- TD({"role": "presentation" },
- DIV({"class": "netInfoPostParams"},
- Locale.$STR("jsonviewer.tab.JSON")
- )
- )
- ),
- TR(
- TD({"class": "netInfoPostJSONBody"})
- )
- )
- ),
-
- // application/xml
- xmlTable:
- TABLE({"class": "netInfoPostXMLTable", cellpadding: 0, cellspacing: 0,
- "role": "presentation"},
- TBODY({"role": "list", "aria-label": Locale.$STR("xmlviewer.tab.XML")},
- TR({"class": "netInfoPostXMLTitle", "role": "presentation"},
- TD({"role": "presentation" },
- DIV({"class": "netInfoPostParams"},
- Locale.$STR("xmlviewer.tab.XML")
- )
- )
- ),
- TR(
- TD({"class": "netInfoPostXMLBody"})
- )
- )
- ),
-
- // image/svg+xml
- svgTable:
- TABLE({"class": "netInfoPostSVGTable", cellpadding: 0, cellspacing: 0,
- "role": "presentation"},
- TBODY({"role": "list", "aria-label": Locale.$STR("svgviewer.tab.SVG")},
- TR({"class": "netInfoPostSVGTitle", "role": "presentation"},
- TD({"role": "presentation" },
- DIV({"class": "netInfoPostParams"},
- Locale.$STR("svgviewer.tab.SVG")
- )
- )
- ),
- TR(
- TD({"class": "netInfoPostSVGBody"})
- )
- )
- ),
-
- // application/x-woff
- fontTable:
- TABLE({"class": "netInfoPostFontTable", cellpadding: 0, cellspacing: 0,
- "role": "presentation"},
- TBODY({"role": "list", "aria-label": Locale.$STR("fontviewer.tab.Font")},
- TR({"class": "netInfoPostFontTitle", "role": "presentation"},
- TD({"role": "presentation" },
- Locale.$STR("fontviewer.tab.Font")
- )
- ),
- TR(
- TD({"class": "netInfoPostFontBody"})
- )
- )
- ),
-
- sourceTable:
- TABLE({"class": "netInfoPostSourceTable", cellpadding: 0, cellspacing: 0,
- "role": "presentation"},
- TBODY({"role": "list", "aria-label": Locale.$STR("net.label.Source")},
- TR({"class": "netInfoPostSourceTitle", "role": "presentation"},
- TD({colspan: 2, "role": "presentation"},
- DIV({"class": "netInfoPostSource"},
- Locale.$STR("net.label.Source")
- )
- )
- )
- )
- ),
-
- sourceBodyTag:
- TR({"role": "presentation"},
- TD({colspan: 2, "role": "presentation"},
- FOR("line", "$param|getParamValueIterator",
- CODE({"class":"focusRow subFocusRow", "role": "listitem"}, "$line")
- )
- )
- ),
-
- getParamValueIterator: function(param)
- {
- return Firebug.NetMonitor.NetInfoBody.getParamValueIterator(param);
- },
-
- render: function(context, parentNode, file)
- {
- var text = NetUtils.getPostText(file, context, true);
- if (text == undefined)
- return;
-
- if (NetUtils.isURLEncodedRequest(file, context))
- {
- var lines = text.split("\n");
- var params = Url.parseURLEncodedText(lines[lines.length-1]);
- if (params)
- this.insertParameters(parentNode, params);
- }
-
- if (NetUtils.isMultiPartRequest(file, context))
- {
- var data = this.parseMultiPartText(file, context);
- if (data)
- this.insertParts(parentNode, data);
- }
-
- var contentType = NetUtils.findHeader(file.requestHeaders, "content-type");
-
- // TODO: Trigger an event here instead and register the viewer models as listeners
- if (Firebug.JSONViewerModel.isJSON(contentType, text))
- this.insertJSON(parentNode, file, context);
-
- if (Firebug.XMLViewerModel.isXML(contentType))
- this.insertXML(parentNode, file, context);
-
- if (Firebug.SVGViewerModel.isSVG(contentType))
- this.insertSVG(parentNode, file, context);
-
- if (Firebug.FontViewerModel.isFont(contentType, file.href, text))
- this.insertFont(parentNode, file, context);
-
- var postText = NetUtils.getPostText(file, context);
-
- // Make sure headers are not displayed in the 'source' section.
- postText = Http.removeHeadersFromPostText(file.request, postText);
- postText = NetUtils.formatPostText(postText);
- if (postText)
- this.insertSource(parentNode, postText);
- },
-
- insertParameters: function(parentNode, params)
- {
- if (!params || !params.length)
- return;
-
- var paramTable = this.paramsTable.append(null, parentNode);
- var row = paramTable.getElementsByClassName("netInfoPostParamsTitle").item(0);
-
- Firebug.NetMonitor.NetInfoBody.headerDataTag.insertRows({headers: params}, row);
- },
-
- insertParts: function(parentNode, data)
- {
- if (!data.params || !data.params.length)
- return;
-
- var partsTable = this.partsTable.append(null, parentNode);
- var row = partsTable.getElementsByClassName("netInfoPostPartsTitle").item(0);
-
- Firebug.NetMonitor.NetInfoBody.headerDataTag.insertRows({headers: data.params}, row);
- },
-
- insertJSON: function(parentNode, file, context)
- {
- var text = NetUtils.getPostText(file, context);
- var data = Json.parseJSONString(text, "http://" + file.request.originalURI.host);
- if (!data)
- return;
-
- var jsonTable = this.jsonTable.append(null, parentNode);
- var jsonBody = jsonTable.getElementsByClassName("netInfoPostJSONBody").item(0);
-
- if (!this.toggles)
- this.toggles = new ToggleBranch.ToggleBranch();
-
- Firebug.DOMPanel.DirTable.tag.replace(
- {object: data, toggles: this.toggles}, jsonBody);
- },
-
- insertXML: function(parentNode, file, context)
- {
- var text = NetUtils.getPostText(file, context);
-
- var jsonTable = this.xmlTable.append(null, parentNode);
- var jsonBody = jsonTable.getElementsByClassName("netInfoPostXMLBody").item(0);
-
- Firebug.XMLViewerModel.insertXML(jsonBody, text);
- },
-
- insertSVG: function(parentNode, file, context)
- {
- var text = NetUtils.getPostText(file, context);
-
- var jsonTable = this.svgTable.append(null, parentNode);
- var jsonBody = jsonTable.getElementsByClassName("netInfoPostSVGBody").item(0);
-
- Firebug.SVGViewerModel.insertSVG(jsonBody, text);
- },
-
- insertFont: function(parentNode, file, context)
- {
- var text = NetUtils.getPostText(file, context);
-
- var fontTable = this.fontTable.append(null, parentNode);
- var fontBody = fontTable.getElementsByClassName("netInfoPostFontBody").item(0);
-
- Firebug.FontViewerModel.insertFont(fontBody, text);
- },
-
- insertSource: function(parentNode, text)
- {
- var sourceTable = this.sourceTable.append(null, parentNode);
- var row = sourceTable.getElementsByClassName("netInfoPostSourceTitle").item(0);
-
- var param = {value: text};
- this.sourceBodyTag.insertRows({param: param}, row);
- },
-
- parseMultiPartText: function(file, context)
- {
- var text = NetUtils.getPostText(file, context);
- if (text == undefined)
- return null;
-
- FBTrace.sysout("net.parseMultiPartText; boundary: ", text);
-
- var boundary = text.match(/\s*boundary=\s*(.*)/)[1];
-
- var divider = "\r\n\r\n";
- var bodyStart = text.indexOf(divider);
- var body = text.substr(bodyStart + divider.length);
-
- var postData = {};
- postData.mimeType = "multipart/form-data";
- postData.params = [];
-
- var parts = body.split("--" + boundary);
- for (var i=0; i<parts.length; i++)
- {
- var part = parts[i].split(divider);
- if (part.length != 2)
- continue;
-
- var m = part[0].match(/\s*name=\"(.*)\"(;|$)/);
- postData.params.push({
- name: (m && m.length > 1) ? m[1] : "",
- value: Str.trim(part[1])
- });
- }
-
- return postData;
- }
-});
-
-// ********************************************************************************************* //
-
-/**
- * @domplate Used within the Net panel to display raw source of request and response headers
- * as well as pretty-formatted summary of these headers.
- */
-Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, new Firebug.Listener(),
-{
- tag:
- DIV({"class": "netInfoHeadersTable", "role": "tabpanel"},
- DIV({"class": "netInfoHeadersGroup netInfoResponseHeadersTitle collapsed"},
- SPAN(Locale.$STR("ResponseHeaders")),
- SPAN({"class": "netHeadersViewSource response collapsed", onclick: "$onViewSource",
- _sourceDisplayed: false, _rowName: "ResponseHeaders"},
- Locale.$STR("net.headers.view source")
- )
- ),
- TABLE({cellpadding: 0, cellspacing: 0},
- TBODY({"class": "netInfoResponseHeadersBody", "role": "list",
- "aria-label": Locale.$STR("ResponseHeaders")})
- ),
- DIV({"class": "netInfoHeadersGroup netInfoRequestHeadersTitle collapsed"},
- SPAN(Locale.$STR("RequestHeaders")),
- SPAN({"class": "netHeadersViewSource request collapsed", onclick: "$onViewSource",
- _sourceDisplayed: false, _rowName: "RequestHeaders"},
- Locale.$STR("net.headers.view source")
- )
- ),
- TABLE({cellpadding: 0, cellspacing: 0},
- TBODY({"class": "netInfoRequestHeadersBody", "role": "list",
- "aria-label": Locale.$STR("RequestHeaders")})
- ),
- DIV({"class": "netInfoHeadersGroup netInfoCachedResponseHeadersTitle collapsed"},
- SPAN(Locale.$STR("CachedResponseHeaders"))
- ),
- TABLE({cellpadding: 0, cellspacing: 0},
- TBODY({"class": "netInfoCachedResponseHeadersBody", "role": "list",
- "aria-label": Locale.$STR("CachedResponseHeaders")})
- ),
- DIV({"class": "netInfoHeadersGroup netInfoPostRequestHeadersTitle collapsed"},
- SPAN(Locale.$STR("PostRequestHeaders"))
- ),
- TABLE({cellpadding: 0, cellspacing: 0},
- TBODY({"class": "netInfoPostRequestHeadersBody", "role": "list",
- "aria-label": Locale.$STR("PostRequestHeaders")})
- )
- ),
-
- sourceTag:
- TR({"role": "presentation"},
- TD({colspan: 2, "role": "presentation"},
- PRE({"class": "source"})
- )
- ),
-
- onViewSource: function(event)
- {
- var target = event.target;
- var requestHeaders = (target.rowName == "RequestHeaders");
-
- var netInfoBox = Dom.getAncestorByClass(target, "netInfoBody");
- var file = netInfoBox.repObject;
-
- if (target.sourceDisplayed)
- {
- var headers = requestHeaders ? file.requestHeaders : file.responseHeaders;
- this.insertHeaderRows(netInfoBox, headers, target.rowName);
- target.textContent = Locale.$STR("net.headers.view source");
- }
- else
- {
- var source = requestHeaders ? file.requestHeadersText : file.responseHeadersText;
- this.insertSource(netInfoBox, source, target.rowName);
- target.textContent = Locale.$STR("net.headers.pretty print");
- }
-
- target.sourceDisplayed = !target.sourceDisplayed;
-
- Events.cancelEvent(event);
- },
-
- insertSource: function(netInfoBox, source, rowName)
- {
- var tbody = netInfoBox.getElementsByClassName("netInfo" + rowName + "Body").item(0);
- var node = this.sourceTag.replace({}, tbody);
- var sourceNode = node.getElementsByClassName("source").item(0);
- sourceNode.textContent = source;
- },
-
- insertHeaderRows: function(netInfoBox, headers, rowName)
- {
- var headersTable = netInfoBox.getElementsByClassName("netInfoHeadersTable").item(0);
- var tbody = headersTable.getElementsByClassName("netInfo" + rowName + "Body").item(0);
-
- Dom.clearNode(tbody);
-
- if (headers && headers.length)
- {
- headers.sort(function(a, b)
- {
- return a.name > b.name ? 1 : -1;
- });
-
- Firebug.NetMonitor.NetInfoBody.headerDataTag.insertRows({headers: headers}, tbody);
-
- var titleRow = Dom.getChildByClass(headersTable, "netInfo" + rowName + "Title");
- Css.removeClass(titleRow, "collapsed");
- }
- },
-
- init: function(parent)
- {
- var rootNode = this.tag.append({}, parent);
-
- var netInfoBox = Dom.getAncestorByClass(parent, "netInfoBody");
- var file = netInfoBox.repObject;
-
- var viewSource;
-
- viewSource = rootNode.getElementsByClassName("netHeadersViewSource request").item(0);
- if (file.requestHeadersText)
- Css.removeClass(viewSource, "collapsed");
-
- viewSource = rootNode.getElementsByClassName("netHeadersViewSource response").item(0);
- if (file.responseHeadersText)
- Css.removeClass(viewSource, "collapsed");
- },
-
- renderHeaders: function(parent, headers, rowName)
- {
- if (!parent.firstChild)
- this.init(parent);
-
- this.insertHeaderRows(parent, headers, rowName);
- }
-});
-
-// ********************************************************************************************* //
-
-/**
- * @domplate Represents a template for a pupup tip with detailed size info.
- */
-Firebug.NetMonitor.SizeInfoTip = domplate(Firebug.Rep,
-{
- tag:
- TABLE({"class": "sizeInfoTip", "id": "fbNetSizeInfoTip", role:"presentation"},
- TBODY(
- FOR("size", "$sizeInfo",
- TAG("$size|getRowTag", {size: "$size"})
- )
- )
- ),
-
- sizeTag:
- TR({"class": "sizeInfoRow", $collapsed: "$size|hideRow"},
- TD({"class": "sizeInfoLabelCol"}, "$size.label"),
- TD({"class": "sizeInfoSizeCol"}, "$size|formatSize"),
- TD({"class": "sizeInfoDetailCol"}, "$size|formatNumber")
- ),
-
- separatorTag:
- TR(
- TD({"colspan": 3, "height": "7px"})
- ),
-
- descTag:
- TR(
- TD({"colspan": 3, "class": "sizeInfoDescCol"}, "$size.label")
- ),
-
- getRowTag: function(size)
- {
- if (size.size == -2)
- return this.descTag;
-
- return (size.label == "-") ? this.separatorTag : this.sizeTag;
- },
-
- hideRow: function(size)
- {
- return size.size < 0;
- },
-
- formatSize: function(size)
- {
- return Str.formatSize(size.size);
- },
-
- formatNumber: function(size)
- {
- return size.size && size.size >= 1024 ? "(" + size.size.toLocaleString() + " B)" : "";
- },
-
- render: function(file, parentNode)
- {
- var postText = NetUtils.getPostText(file, Firebug.currentContext, true);
- postText = postText ? postText : "";
-
- var sizeInfo = [];
- sizeInfo.push({label: Locale.$STR("net.sizeinfo.Response Body"), size: file.size});
- sizeInfo.push({label: Locale.$STR("net.sizeinfo.Post Body"), size: postText.length});
-
- if (file.requestHeadersText)
- {
- var responseHeaders = file.responseHeadersText ? file.responseHeadersText : 0;
- sizeInfo.push({label: "-", size: 0});
- sizeInfo.push({label: Locale.$STR("net.sizeinfo.Total Received") + "*",
- size: (responseHeaders.length ? responseHeaders.length : 0) + file.size});
- sizeInfo.push({label: Locale.$STR("net.sizeinfo.Total Sent") + "*",
- size: file.requestHeadersText.length + postText.length});
- sizeInfo.push({label: " ", size: -2});
- sizeInfo.push({label: "* " + Locale.$STR("net.sizeinfo.Including HTTP Headers"),
- size: -2});
- }
-
- this.tag.replace({sizeInfo: sizeInfo}, parentNode);
- }
-});
-
-// ********************************************************************************************* //
-
-Firebug.NetMonitor.NetLimit = domplate(Firebug.Rep,
-{
- collapsed: true,
-
- tableTag:
- DIV(
- TABLE({width: "100%", cellpadding: 0, cellspacing: 0},
- TBODY()
- )
- ),
-
- limitTag:
- TR({"class": "netRow netLimitRow", $collapsed: "$isCollapsed"},
- TD({"class": "netCol netLimitCol", colspan: 8},
- TABLE({cellpadding: 0, cellspacing: 0},
- TBODY(
- TR(
- TD(
- SPAN({"class": "netLimitLabel"},
- Locale.$STRP("plural.Limit_Exceeded2", [0])
- )
- ),
- TD({style: "width:100%"}),
- TD(
- BUTTON({"class": "netLimitButton", title: "$limitPrefsTitle",
- onclick: "$onPreferences"},
- Locale.$STR("LimitPrefs")
- )
- ),
- TD(" ")
- )
- )
- )
- )
- ),
-
- isCollapsed: function()
- {
- return this.collapsed;
- },
-
- onPreferences: function(event)
- {
- Win.openNewTab("about:config");
- },
-
- updateCounter: function(row)
- {
- Css.removeClass(row, "collapsed");
-
- // Update info within the limit row.
- var limitLabel = row.getElementsByClassName("netLimitLabel").item(0);
- limitLabel.firstChild.nodeValue = Locale.$STRP("plural.Limit_Exceeded2",
- [row.limitInfo.totalCount]);
- },
-
- createTable: function(parent, limitInfo)
- {
- var table = this.tableTag.replace({}, parent);
- var row = this.createRow(table.firstChild.firstChild, limitInfo);
- return [table, row];
- },
-
- createRow: function(parent, limitInfo)
- {
- var row = this.limitTag.insertRows(limitInfo, parent, this)[0];
- row.limitInfo = limitInfo;
- return row;
- }
-});
-
-// ********************************************************************************************* //
-
-Firebug.NetMonitor.ResponseSizeLimit = domplate(Firebug.Rep,
-{
- tag:
- DIV({"class": "netInfoResponseSizeLimit"},
- SPAN("$object.beforeLink"),
- A({"class": "objectLink", onclick: "$onClickLink"},
- "$object.linkText"
- ),
- SPAN("$object.afterLink")
- ),
-
- reLink: /^(.*)<a>(.*)<\/a>(.*$)/,
- append: function(obj, parent)
- {
- var m = obj.text.match(this.reLink);
- return this.tag.append({onClickLink: obj.onClickLink,
- object: {
- beforeLink: m[1],
- linkText: m[2],
- afterLink: m[3],
- }}, parent, this);
- }
-});
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerRep(Firebug.NetMonitor.NetRequestTable);
-
-return Firebug.NetMonitor.NetRequestTable;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/chrome/firefox",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/options",
+ "firebug/lib/url",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/chrome/window",
+ "firebug/lib/search",
+ "firebug/lib/string",
+ "firebug/lib/json",
+ "firebug/lib/array",
+ "firebug/dom/toggleBranch",
+ "firebug/lib/dragdrop",
+ "firebug/net/netUtils",
+ "firebug/net/netProgress",
+ "firebug/lib/http",
+ "firebug/js/breakpoint",
+ "firebug/net/xmlViewer",
+ "firebug/net/svgViewer",
+ "firebug/net/jsonViewer",
+ "firebug/net/fontViewer",
+ "firebug/chrome/infotip",
+ "firebug/css/cssPanel",
+ "firebug/chrome/searchBox",
+ "firebug/console/errors",
+ "firebug/net/netMonitor"
+],
+function(Obj, Firebug, Firefox, Domplate, Locale, Events, Options, Url, Css, Dom, Win, Search, Str,
+ Json, Arr, ToggleBranch, DragDrop, NetUtils, NetProgress, Http) {
+
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+
+const hiddenColsPref = "net.hiddenColumns";
+
+var panelName = "net";
+
+// ********************************************************************************************* //
+
+const reSplitIP = /^(\d+)\.(\d+)\.(\d+)\.(\d+):(\d+)$/;
+
+/**
+ * @domplate Represents a template that is used to render basic content of the net panel.
+ */
+Firebug.NetMonitor.NetRequestTable = domplate(Firebug.Rep, new Firebug.Listener(),
+{
+ inspectable: false,
+
+ tableTag:
+ TABLE({"class": "netTable", cellpadding: 0, cellspacing: 0, hiddenCols: "",
+ "role": "treegrid"},
+ THEAD(
+ TR({"class": "netHeaderRow netRow focusRow outerFocusRow",
+ onclick: "$onClickHeader", "role": "row"},
+ TD({id: "netBreakpointBar", width: "1%", "class": "netHeaderCell",
+ "role": "columnheader"},
+ " "
+ ),
+ TD({id: "netHrefCol", width: "18%", "class": "netHeaderCell alphaValue a11yFocus",
+ "role": "columnheader"},
+ DIV({"class": "netHeaderCellBox",
+ title: Locale.$STR("net.header.URL Tooltip")},
+ Locale.$STR("net.header.URL")
+ )
+ ),
+ TD({id: "netStatusCol", width: "12%", "class": "netHeaderCell alphaValue a11yFocus",
+ "role": "columnheader"},
+ DIV({"class": "netHeaderCellBox",
+ title: Locale.$STR("net.header.Status Tooltip")},
+ Locale.$STR("net.header.Status")
+ )
+ ),
+ TD({id: "netProtocolCol", width: "4%", "class": "netHeaderCell alphaValue a11yFocus",
+ "role": "columnheader"},
+ DIV({"class": "netHeaderCellBox",
+ title: Locale.$STR("net.header.Protocol Tooltip")},
+ Locale.$STR("net.header.Protocol")
+ )
+ ),
+ TD({id: "netDomainCol", width: "12%", "class": "netHeaderCell alphaValue a11yFocus",
+ "role": "columnheader"},
+ DIV({"class": "netHeaderCellBox",
+ title: Locale.$STR("net.header.Domain Tooltip")},
+ Locale.$STR("net.header.Domain")
+ )
+ ),
+ TD({id: "netSizeCol", width: "4%", "class": "netHeaderCell a11yFocus",
+ "role": "columnheader"},
+ DIV({"class": "netHeaderCellBox",
+ title: Locale.$STR("net.header.Size Tooltip")},
+ Locale.$STR("net.header.Size")
+ )
+ ),
+ TD({id: "netLocalAddressCol", width: "4%", "class": "netHeaderCell a11yFocus",
+ "role": "columnheader"},
+ DIV({"class": "netHeaderCellBox",
+ title: Locale.$STR("net.header.Local IP Tooltip")},
+ Locale.$STR("net.header.Local IP")
+ )
+ ),
+ TD({id: "netRemoteAddressCol", width: "4%", "class": "netHeaderCell a11yFocus",
+ "role": "columnheader"},
+ DIV({"class": "netHeaderCellBox",
+ title: Locale.$STR("net.header.Remote IP Tooltip")},
+ Locale.$STR("net.header.Remote IP")
+ )
+ ),
+ TD({id: "netTimeCol", width: "53%", "class": "netHeaderCell a11yFocus",
+ "role": "columnheader"},
+ DIV({"class": "netHeaderCellBox",
+ title: Locale.$STR("net.header.Timeline Tooltip")},
+ Locale.$STR("net.header.Timeline")
+ )
+ )
+ )
+ ),
+ TBODY({"class": "netTableBody", "role" : "presentation"})
+ ),
+
+ onClickHeader: function(event)
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.onClickHeader\n");
+
+ // Also support enter key for sorting
+ if (!Events.isLeftClick(event) && !(event.type == "keypress" && event.keyCode == 13))
+ return;
+
+ var table = Dom.getAncestorByClass(event.target, "netTable");
+ var column = Dom.getAncestorByClass(event.target, "netHeaderCell");
+ this.sortColumn(table, column);
+ },
+
+ sortColumn: function(table, col, direction)
+ {
+ if (!col)
+ return;
+
+ var numerical = !Css.hasClass(col, "alphaValue");
+
+ var colIndex = 0;
+ for (col = col.previousSibling; col; col = col.previousSibling)
+ ++colIndex;
+
+ // the first breakpoint bar column is not sortable.
+ if (colIndex == 0)
+ return;
+
+ this.sort(table, colIndex, numerical, direction);
+ },
+
+ sort: function(table, colIndex, numerical, direction)
+ {
+ var headerRow = table.querySelector(".netHeaderRow");
+
+ // Remove class from the currently sorted column
+ var headerSorted = Dom.getChildByClass(headerRow, "netHeaderSorted");
+ Css.removeClass(headerSorted, "netHeaderSorted");
+ if (headerSorted)
+ headerSorted.removeAttribute("aria-sort");
+
+ // Mark new column as sorted.
+ var header = headerRow.childNodes[colIndex];
+ Css.setClass(header, "netHeaderSorted");
+
+ // If the column is already using required sort direction, bubble out.
+ if ((direction == "desc" && header.sorted == 1) ||
+ (direction == "asc" && header.sorted == -1))
+ return;
+
+ var newDirection = ((header.sorted && header.sorted == 1) || (!header.sorted && direction == "asc")) ? "ascending" : "descending";
+ if (header)
+ header.setAttribute("aria-sort", newDirection);
+
+ var tbody = table.lastChild;
+ var colID = header.getAttribute("id");
+
+ table.setAttribute("sortcolumn", colID);
+ table.setAttribute("sortdirection", newDirection);
+
+ var values = [];
+ for (var row = tbody.childNodes[1]; row; row = row.nextSibling)
+ {
+ if (!row.repObject)
+ continue;
+
+ if (Css.hasClass(row, "history"))
+ continue;
+
+ var cell = row.childNodes[colIndex];
+ var sortFunction = function sort(a, b) { return a.value < b.value ? -1 : 1; };
+ var ipSortFunction = function sort(a, b)
+ {
+ var aParts = reSplitIP.exec(a.value);
+ var bParts = reSplitIP.exec(b.value);
+
+ if (!aParts)
+ return -1;
+ if (!bParts)
+ return 1;
+
+ for (var i=1; i<aParts.length; ++i)
+ {
+ if (parseInt(aParts[i]) != parseInt(bParts[i]))
+ return parseInt(aParts[i]) < parseInt(bParts[i]) ? -1 : 1;
+ }
+
+ return 1;
+ };
+ var value;
+
+ switch (colID)
+ {
+ case "netTimeCol":
+ value = row.repObject.requestNumber;
+ break;
+ case "netSizeCol":
+ value = row.repObject.size;
+ break;
+ case "netRemoteAddressCol":
+ case "netLocalAddressCol":
+ value = cell.textContent;
+ sortFunction = ipSortFunction;
+ break;
+ default:
+ value = numerical ? parseFloat(cell.textContent) : cell.textContent;
+ }
+
+ if (Css.hasClass(row, "opened"))
+ {
+ var netInfoRow = row.nextSibling;
+ values.push({row: row, value: value, info: netInfoRow});
+ row = netInfoRow;
+ }
+ else
+ {
+ values.push({row: row, value: value});
+ }
+ }
+
+ values.sort(sortFunction);
+
+ if (newDirection == "ascending")
+ {
+ Css.removeClass(header, "sortedDescending");
+ Css.setClass(header, "sortedAscending");
+ header.sorted = -1;
+
+ for (var i = 0; i < values.length; ++i)
+ {
+ tbody.appendChild(values[i].row);
+ if (values[i].info)
+ tbody.appendChild(values[i].info);
+ }
+ }
+ else
+ {
+ Css.removeClass(header, "sortedAscending");
+ Css.setClass(header, "sortedDescending");
+
+ header.sorted = 1;
+
+ for (var i = values.length-1; i >= 0; --i)
+ {
+ tbody.appendChild(values[i].row);
+ if (values[i].info)
+ tbody.appendChild(values[i].info);
+ }
+ }
+
+ // Make sure the summary row is again at the end.
+ var summaryRow = tbody.getElementsByClassName("netSummaryRow").item(0);
+ tbody.appendChild(summaryRow);
+ },
+
+ supportsObject: function(object, type)
+ {
+ return (object == this);
+ },
+
+ /**
+ * Provides menu items for header context menu.
+ */
+ getContextMenuItems: function(object, target, context)
+ {
+ var popup = Firebug.chrome.$("fbContextMenu");
+ if (popup.firstChild && popup.firstChild.getAttribute("command") == "cmd_copy")
+ popup.removeChild(popup.firstChild);
+
+ var items = [];
+
+ // Iterate over all columns and create a menu item for each.
+ var table = context.getPanel(panelName, true).table;
+ var hiddenCols = table.getAttribute("hiddenCols");
+
+ var lastVisibleIndex;
+ var visibleColCount = 0;
+
+ // Iterate all columns except of the first one for breakpoints.
+ var header = Dom.getAncestorByClass(target, "netHeaderRow");
+ var columns = Arr.cloneArray(header.childNodes);
+ columns.shift();
+ for (var i=0; i<columns.length; i++)
+ {
+ var column = columns[i];
+ var columnContent = column.getElementsByClassName("netHeaderCellBox").item(0);
+ var visible = (hiddenCols.indexOf(column.id) == -1);
+
+ items.push({
+ label: columnContent.textContent,
+ tooltiptext: columnContent.title,
+ type: "checkbox",
+ checked: visible,
+ nol10n: true,
+ command: Obj.bindFixed(this.onShowColumn, this, context, column.id)
+ });
+
+ if (visible)
+ {
+ lastVisibleIndex = i;
+ visibleColCount++;
+ }
+ }
+
+ // If the last column is visible, disable its menu item.
+ if (visibleColCount == 1)
+ items[lastVisibleIndex].disabled = true;
+
+ items.push("-");
+ items.push({
+ label: "net.header.Reset_Header",
+ tooltiptext: "net.header.tip.Reset_Header",
+ command: Obj.bindFixed(this.onResetColumns, this, context)
+ });
+
+ return items;
+ },
+
+ onShowColumn: function(context, colId)
+ {
+ var panel = context.getPanel(panelName, true);
+ var table = panel.table;
+ var hiddenCols = table.getAttribute("hiddenCols");
+
+ // If the column is already present in the list of hidden columns,
+ // remove it, otherwise append it.
+ var index = hiddenCols.indexOf(colId);
+ if (index >= 0)
+ {
+ table.setAttribute("hiddenCols", hiddenCols.substr(0,index-1) +
+ hiddenCols.substr(index+colId.length));
+ }
+ else
+ {
+ table.setAttribute("hiddenCols", hiddenCols + " " + colId);
+ }
+
+ // Store current state into the preferences.
+ Options.set(hiddenColsPref, table.getAttribute("hiddenCols"));
+
+ panel.updateHRefLabelWidth();
+ },
+
+ onResetColumns: function(context)
+ {
+ var panel = context.getPanel(panelName, true);
+ var header = panel.panelNode.getElementsByClassName("netHeaderRow").item(0);
+
+ // Reset widths
+ var columns = header.childNodes;
+ for (var i=0; i<columns.length; i++)
+ {
+ var col = columns[i];
+ if (col.style)
+ col.style.width = "";
+ }
+
+ // Reset visibility. Only the Status column is hidden by default.
+ Options.clear(hiddenColsPref);
+ panel.table.setAttribute("hiddenCols", Options.get(hiddenColsPref));
+ },
+});
+
+// ********************************************************************************************* //
+
+/**
+ * @domplate Represents a template that is used to render net panel entries.
+ */
+Firebug.NetMonitor.NetRequestEntry = domplate(Firebug.Rep, new Firebug.Listener(),
+{
+ fileTag:
+ FOR("file", "$files",
+ TR({"class": "netRow $file.file|getCategory focusRow outerFocusRow",
+ onclick: "$onClick", "role": "row", "aria-expanded": "false",
+ $hasHeaders: "$file.file|hasRequestHeaders",
+ $history: "$file.file.history",
+ $loaded: "$file.file.loaded",
+ $responseError: "$file.file|isError",
+ $fromBFCache: "$file.file|isFromBFCache",
+ $fromCache: "$file.file.fromCache",
+ $inFrame: "$file.file|getInFrame"},
+ TD({"class": "netDebugCol netCol"},
+ DIV({"class": "sourceLine netRowHeader",
+ onclick: "$onClickRowHeader"},
+ " "
+ )
+ ),
+ TD({"class": "netHrefCol netCol a11yFocus", "role": "rowheader"},
+ DIV({"class": "netHrefLabel netLabel",
+ style: "margin-left: $file.file|getIndent\\px"},
+ "$file.file|getHref"
+ ),
+ DIV({"class": "netFullHrefLabel netHrefLabel",
+ style: "margin-left: $file.file|getIndent\\px"},
+ "$file.file.href"
+ )
+ ),
+ TD({"class": "netStatusCol netCol a11yFocus", "role": "gridcell"},
+ DIV({"class": "netStatusLabel netLabel"}, "$file.file|getStatus")
+ ),
+ TD({"class": "netProtocolCol netCol a11yFocus", "role": "gridcell"},
+ DIV({"class": "netProtocolLabel netLabel"}, "$file.file|getProtocol")
+ ),
+ TD({"class": "netDomainCol netCol a11yFocus", "role": "gridcell" },
+ DIV({"class": "netDomainLabel netLabel"}, "$file.file|getDomain")
+ ),
+ TD({"class": "netSizeCol netCol a11yFocus", "role": "gridcell",
+ "aria-describedby": "fbNetSizeInfoTip"},
+ DIV({"class": "netSizeLabel netLabel"}, "$file.file|getSize")
+ ),
+ TD({"class": "netLocalAddressCol netCol a11yFocus", "role": "gridcell"},
+ DIV({"class": "netAddressLabel netLabel"}, "$file.file|getLocalAddress")
+ ),
+ TD({"class": "netRemoteAddressCol netCol a11yFocus", "role": "gridcell"},
+ DIV({"class": "netAddressLabel netLabel"}, "$file.file|getRemoteAddress")
+ ),
+ TD({"class": "netTimeCol netCol a11yFocus", "role": "gridcell",
+ "aria-describedby": "fbNetTimeInfoTip" },
+ DIV({"class": "netLoadingIcon"}),
+ DIV({"class": "netBar"},
+ " ",
+ DIV({"class": "netBlockingBar", style: "left: $file.offset"}),
+ DIV({"class": "netResolvingBar", style: "left: $file.offset"}),
+ DIV({"class": "netConnectingBar", style: "left: $file.offset"}),
+ DIV({"class": "netSendingBar", style: "left: $file.offset"}),
+ DIV({"class": "netWaitingBar", style: "left: $file.offset"}),
+ DIV({"class": "netReceivingBar", style: "left: $file.offset; width: $file.width"},
+ SPAN({"class": "netTimeLabel"}, "$file|getElapsedTime")
+ )
+ // Page timings (vertical lines) are dynamically appended here.
+ )
+ )
+ )
+ ),
+
+ netInfoTag:
+ TR({"class": "netInfoRow $file|getCategory outerFocusRow", "role" : "row"},
+ TD({"class": "sourceLine netRowHeader"}),
+ TD({"class": "netInfoCol", colspan: 8, "role" : "gridcell"})
+ ),
+
+ activationTag:
+ TR({"class": "netRow netActivationRow"},
+ TD({"class": "netCol netActivationLabel", colspan: 9, "role": "status"},
+ Locale.$STR("net.ActivationMessage")
+ )
+ ),
+
+ summaryTag:
+ TR({"class": "netRow netSummaryRow focusRow outerFocusRow", "role": "row",
+ "aria-live": "polite"},
+ TD({"class": "netCol"}, " "),
+ TD({"class": "netCol netHrefCol a11yFocus", "role" : "rowheader"},
+ DIV({"class": "netCountLabel netSummaryLabel",
+ title: Locale.$STR("net.summary.tip.request count")},
+ "-"
+ )
+ ),
+ TD({"class": "netCol netStatusCol a11yFocus", "role" : "gridcell"}),
+ TD({"class": "netCol netProtocolCol a11yFocus", "role" : "gridcell"}),
+ TD({"class": "netCol netDomainCol a11yFocus", "role" : "gridcell"}),
+ TD({"class": "netTotalSizeCol netCol netSizeCol a11yFocus", "role": "gridcell"},
+ DIV({"class": "netTotalSizeLabel netSummaryLabel",
+ title: Locale.$STR("net.summary.tip.total size")},
+ "0 B"
+ )
+ ),
+ TD({"class": "netTotalTimeCol netCol netTimeCol a11yFocus", "role":
+ "gridcell", colspan: "3"},
+ DIV({"class": "netSummaryBar", style: "width: 100%"},
+ DIV({"class": "netCacheSizeLabel netSummaryLabel", collapsed: "true",
+ title: Locale.$STR("net.summary.tip.total cached size")},
+ "(" + Locale.$STRF("net.summary.from_cache", ["0 B"]) + ")"
+ ),
+ DIV({"class": "netTotalTimeLabel netSummaryLabel",
+ title: Locale.$STR("net.summary.tip.total request time")},
+ "0ms"
+ )
+ )
+ )
+ ),
+
+ footerTag:
+ TR({"class": "netFooterRow", "style" : "height: 100%"},
+ TD({"class": "", colspan: 9})
+ ),
+
+ onClickRowHeader: function(event)
+ {
+ Events.cancelEvent(event);
+
+ var rowHeader = event.target;
+ if (!Css.hasClass(rowHeader, "netRowHeader"))
+ return;
+
+ var row = Dom.getAncestorByClass(event.target, "netRow");
+ if (!row)
+ return;
+
+ var context = Firebug.getElementPanel(row).context;
+ var panel = context.getPanel(panelName, true);
+ if (panel)
+ panel.breakOnRequest(row.repObject);
+ },
+
+ onClick: function(event)
+ {
+ if (Events.isLeftClick(event))
+ {
+ var row = Dom.getAncestorByClass(event.target, "netRow");
+ if (row)
+ {
+ // Click on the rowHeader element inserts a breakpoint.
+ if (Dom.getAncestorByClass(event.target, "netRowHeader"))
+ return;
+
+ this.toggleHeadersRow(row);
+ Events.cancelEvent(event);
+ }
+ }
+ },
+
+ toggleHeadersRow: function(row)
+ {
+ if (!Css.hasClass(row, "hasHeaders"))
+ return;
+
+ var file = row.repObject;
+
+ Css.toggleClass(row, "opened");
+ if (Css.hasClass(row, "opened"))
+ {
+ var netInfoRow = this.netInfoTag.insertRows({file: file}, row)[0];
+ var netInfoCol = netInfoRow.getElementsByClassName("netInfoCol").item(0);
+ var netInfoBox = Firebug.NetMonitor.NetInfoBody.tag.replace({file: file}, netInfoCol);
+
+ // Notify listeners so additional tabs can be created.
+ Events.dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "initTabBody",
+ [netInfoBox, file]);
+
+ // Select "Headers" tab by default, if no other tab is selected already.
+ // (e.g. by a third party Firebug extension in 'initTabBody' event)
+ if (!netInfoBox.selectedTab)
+ Firebug.NetMonitor.NetInfoBody.selectTabByName(netInfoBox, "Headers");
+
+ var category = NetUtils.getFileCategory(row.repObject);
+ if (category)
+ Css.setClass(netInfoBox, "category-" + category);
+
+ row.setAttribute("aria-expanded", "true");
+ }
+ else
+ {
+ var netInfoRow = row.nextSibling;
+ var netInfoBox = netInfoRow.getElementsByClassName("netInfoBody").item(0);
+
+ Events.dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody",
+ [netInfoBox, file]);
+
+ row.parentNode.removeChild(netInfoRow);
+ row.setAttribute("aria-expanded", "false");
+ }
+ },
+
+ getCategory: function(file)
+ {
+ var category = NetUtils.getFileCategory(file);
+ if (category)
+ return "category-" + category;
+
+ return "category-undefined";
+ },
+
+ getInFrame: function(file)
+ {
+ return !!(file.document ? file.document.parent : false);
+ },
+
+ getIndent: function(file)
+ {
+ // XXXjoe Turn off indenting for now, it's confusing since we don't
+ // actually place nested files directly below their parent
+ //return file.document.level * indentWidth;
+ return 10;
+ },
+
+ isNtlmAuthorizationRequest: function(file)
+ {
+ if (file.responseStatus != 401)
+ return false;
+
+ //xxxsz: file.responseHeaders is undefined here for some reason
+ var resp = file.responseHeadersText.match(/www-authenticate:\s(.+)/i)[1];
+ return (resp && resp.search(/ntlm|negotiate/i) >= 0);
+ },
+
+ isError: function(file)
+ {
+ if (file.aborted)
+ return true;
+
+ if (this.isNtlmAuthorizationRequest(file))
+ return false;
+
+ var errorRange = Math.floor(file.responseStatus/100);
+ return errorRange == 4 || errorRange == 5;
+ },
+
+ isFromBFCache: function(file)
+ {
+ return file.fromBFCache;
+ },
+
+ getHref: function(file)
+ {
+ var fileName = Url.getFileName(file.href);
+ var limit = Options.get("stringCropLength");
+ if (limit > 0)
+ fileName = Str.cropString(fileName, limit);
+ return (file.method ? file.method.toUpperCase() : "?") + " " + fileName;
+ },
+
+ getProtocol: function(file)
+ {
+ var protocol = Url.getProtocol(file.href);
+ var text = file.responseHeadersText;
+ var spdy = text ? text.search(/X-Firefox-Spdy/i) >= 0 : null;
+ return spdy ? protocol + " SPDY" : protocol;
+ },
+
+ getStatus: function(file)
+ {
+ var text = "";
+
+ if (file.responseStatus)
+ text += file.responseStatus + " ";
+
+ if (file.responseStatusText)
+ text += file.responseStatusText;
+
+ text = text ? Str.cropString(text) : " ";
+
+ if (file.fromAppCache)
+ text += " (AppCache)";
+ else if (file.fromBFCache)
+ text += " (BFCache)";
+
+ return text;
+ },
+
+ getDomain: function(file)
+ {
+ return Url.getPrettyDomain(file.href);
+ },
+
+ getSize: function(file)
+ {
+ var size = (file.size >= 0) ? file.size : 0;
+ return this.formatSize(size);
+ },
+
+ getLocalAddress: function(file)
+ {
+ return Str.formatIP(file.localAddress, file.localPort);
+ },
+
+ getRemoteAddress: function(file)
+ {
+ return Str.formatIP(file.remoteAddress, file.remotePort);
+ },
+
+ getElapsedTime: function(file)
+ {
+ if (!file.elapsed || file.elapsed < 0)
+ return "";
+
+ return this.formatTime(file.elapsed);
+ },
+
+ hasRequestHeaders: function(file)
+ {
+ return !!file.requestHeaders;
+ },
+
+ formatSize: function(bytes)
+ {
+ return Str.formatSize(bytes);
+ },
+
+ formatTime: function(elapsed)
+ {
+ return Str.formatTime(elapsed);
+ }
+});
+
+// ********************************************************************************************* //
+
+Firebug.NetMonitor.NetPage = domplate(Firebug.Rep,
+{
+ separatorTag:
+ TR({"class": "netRow netPageSeparatorRow"},
+ TD({"class": "netCol netPageSeparatorLabel", colspan: 8, "role": "separator"})
+ ),
+
+ pageTag:
+ TR({"class": "netRow netPageRow", onclick: "$onPageClick"},
+ TD({"class": "netCol netPageCol", colspan: 8, "role": "separator"},
+ DIV({"class": "netLabel netPageLabel netPageTitle"}, "$page|getTitle")
+ )
+ ),
+
+ getTitle: function(page)
+ {
+ return page.pageTitle;
+ },
+
+ onPageClick: function(event)
+ {
+ if (!Events.isLeftClick(event))
+ return;
+
+ var target = event.target;
+ var pageRow = Dom.getAncestorByClass(event.target, "netPageRow");
+ var panel = Firebug.getElementPanel(pageRow);
+
+ if (!Css.hasClass(pageRow, "opened"))
+ {
+ Css.setClass(pageRow, "opened");
+
+ var files = pageRow.files;
+
+ // Move all net-rows from the persistedState to this panel.
+ panel.insertRows(files, pageRow);
+
+ for (var i=0; i<files.length; i++)
+ panel.queue.push(files[i].file);
+
+ panel.layout();
+ }
+ else
+ {
+ Css.removeClass(pageRow, "opened");
+
+ var nextRow = pageRow.nextSibling;
+ while (!Css.hasClass(nextRow, "netPageRow") &&
+ !Css.hasClass(nextRow, "netPageSeparatorRow"))
+ {
+ var nextSibling = nextRow.nextSibling;
+ nextRow.parentNode.removeChild(nextRow);
+ nextRow = nextSibling;
+ }
+ }
+ },
+});
+
+// ********************************************************************************************* //
+
+/**
+ * @domplate Represents a template that is used to render detailed info about a request.
+ * This template is rendered when a request is expanded.
+ */
+Firebug.NetMonitor.NetInfoBody = domplate(Firebug.Rep, new Firebug.Listener(),
+{
+ tag:
+ DIV({"class": "netInfoBody", _repObject: "$file"},
+ TAG("$infoTabs", {file: "$file"}),
+ TAG("$infoBodies", {file: "$file"})
+ ),
+
+ infoTabs:
+ DIV({"class": "netInfoTabs focusRow subFocusRow", "role": "tablist"},
+ A({"class": "netInfoParamsTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
+ view: "Params",
+ $collapsed: "$file|hideParams"},
+ Locale.$STR("URLParameters")
+ ),
+ A({"class": "netInfoHeadersTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
+ view: "Headers"},
+ Locale.$STR("Headers")
+ ),
+ A({"class": "netInfoPostTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
+ view: "Post",
+ $collapsed: "$file|hidePost"},
+ Locale.$STR("Post")
+ ),
+ A({"class": "netInfoPutTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
+ view: "Put",
+ $collapsed: "$file|hidePut"},
+ Locale.$STR("Put")
+ ),
+ A({"class": "netInfoPatchTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
+ view: "Patch",
+ $collapsed: "$file|hidePatch"},
+ Locale.$STR("net.label.Patch")
+ ),
+ A({"class": "netInfoResponseTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
+ view: "Response",
+ $collapsed: "$file|hideResponse"},
+ Locale.$STR("Response")
+ ),
+ A({"class": "netInfoHtmlTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
+ view: "Html",
+ $collapsed: "$file|hideHtml"},
+ Locale.$STR("HTML")
+ )
+ ),
+
+ infoBodies:
+ DIV({"class": "netInfoBodies outerFocusRow"},
+ TABLE({"class": "netInfoParamsText netInfoText netInfoParamsTable", "role": "tabpanel",
+ cellpadding: 0, cellspacing: 0}, TBODY()),
+ DIV({"class": "netInfoHeadersText netInfoText", "role": "tabpanel"}),
+ DIV({"class": "netInfoPostText netInfoText", "role": "tabpanel"}),
+ DIV({"class": "netInfoPutText netInfoText", "role": "tabpanel"}),
+ DIV({"class": "netInfoPatchText netInfoText", "role": "tabpanel"}),
+ DIV({"class": "netInfoResponseText netInfoText", "role": "tabpanel"}),
+ DIV({"class": "netInfoHtmlText netInfoText", "role": "tabpanel"},
+ IFRAME({"class": "netInfoHtmlPreview", "role": "document", "sandbox": ""}),
+ DIV({"class": "htmlPreviewResizer"})
+ )
+ ),
+
+ headerDataTag:
+ FOR("param", "$headers",
+ TR({"role": "listitem"},
+ TD({"class": "netInfoParamName", "role": "presentation"},
+ TAG("$param|getNameTag", {param: "$param"})
+ ),
+ TD({"class": "netInfoParamValue", "role": "list", "aria-label": "$param.name"},
+ FOR("line", "$param|getParamValueIterator",
+ CODE({"class": "focusRow subFocusRow", "role": "listitem"}, "$line")
+ )
+ )
+ )
+ ),
+
+ responseHeadersFromBFCacheTag:
+ TR(
+ TD({"class": "headerFromBFCache"},
+ Locale.$STR("net.label.ResponseHeadersFromBFCache")
+ )
+ ),
+
+ customTab:
+ A({"class": "netInfo$tabId\\Tab netInfoTab", onclick: "$onClickTab",
+ view: "$tabId", "role": "tab"},
+ "$tabTitle"
+ ),
+
+ customBody:
+ DIV({"class": "netInfo$tabId\\Text netInfoText", "role": "tabpanel"}),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ nameTag:
+ SPAN("$param|getParamName"),
+
+ nameWithTooltipTag:
+ SPAN({title: "$param.name"}, "$param|getParamName"),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getNameTag: function(param)
+ {
+ return (this.getParamName(param) == param.name) ? this.nameTag : this.nameWithTooltipTag;
+ },
+
+ getParamName: function(param)
+ {
+ var name = param.name;
+ var limit = Firebug.netParamNameLimit;
+ if (limit <= 0)
+ return name;
+
+ if (name.length > limit)
+ name = name.substr(0, limit) + "...";
+ return name;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ hideParams: function(file)
+ {
+ return !file.urlParams || !file.urlParams.length;
+ },
+
+ hidePost: function(file)
+ {
+ return file.method.toUpperCase() != "POST";
+ },
+
+ hidePut: function(file)
+ {
+ return file.method.toUpperCase() != "PUT";
+ },
+
+ hidePatch: function(file)
+ {
+ return file.method.toUpperCase() != "PATCH";
+ },
+
+ hideResponse: function(file)
+ {
+ var headers = file.responseHeaders;
+ for (var i=0; headers && i<headers.length; i++)
+ {
+ if (headers[i].name == "Content-Length")
+ return headers[i].value == 0;
+ }
+
+ return file.category in NetUtils.binaryFileCategories || file.responseText == "";
+ },
+
+ hideHtml: function(file)
+ {
+ if (!file.mimeType)
+ return true;
+
+ var types = ["text/html", "application/xhtml+xml"];
+ return !NetUtils.matchesContentType(file.mimeType, types);
+ },
+
+ onClickTab: function(event)
+ {
+ this.selectTab(event.currentTarget);
+ },
+
+ getParamValueIterator: function(param)
+ {
+ // This value is inserted into CODE element and so, make sure the HTML isn't escaped (1210).
+ // This is why the second parameter is true.
+ // The CODE (with style white-space:pre) element preserves whitespaces so they are
+ // displayed the same, as they come from the server (1194).
+ // In case of a long header values of post parameters the value must be wrapped (2105).
+ return Str.wrapText(param.value, true);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ appendTab: function(netInfoBox, tabId, tabTitle)
+ {
+ // Create new tab and body.
+ var args = {tabId: tabId, tabTitle: tabTitle};
+ this.customTab.append(args, netInfoBox.getElementsByClassName("netInfoTabs").item(0));
+ this.customBody.append(args, netInfoBox.getElementsByClassName("netInfoBodies").item(0));
+ },
+
+ selectTabByName: function(netInfoBox, tabName)
+ {
+ var tab = Dom.getChildByClass(netInfoBox, "netInfoTabs", "netInfo" + tabName + "Tab");
+ if (!tab)
+ return false;
+
+ this.selectTab(tab);
+
+ return true;
+ },
+
+ selectTab: function(tab)
+ {
+ var netInfoBox = Dom.getAncestorByClass(tab, "netInfoBody");
+
+ var view = tab.getAttribute("view");
+ if (netInfoBox.selectedTab)
+ {
+ netInfoBox.selectedTab.removeAttribute("selected");
+ netInfoBox.selectedText.removeAttribute("selected");
+ netInfoBox.selectedTab.setAttribute("aria-selected", "false");
+ }
+ var textBodyName = "netInfo" + view + "Text";
+
+ netInfoBox.selectedTab = tab;
+ netInfoBox.selectedText = netInfoBox.getElementsByClassName(textBodyName).item(0);
+
+ netInfoBox.selectedTab.setAttribute("selected", "true");
+ netInfoBox.selectedText.setAttribute("selected", "true");
+ netInfoBox.selectedTab.setAttribute("aria-selected", "true");
+
+ var file = Firebug.getRepObject(netInfoBox);
+ var panel = Firebug.getElementPanel(netInfoBox);
+ if (!panel)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("net.selectTab; ERROR no panel");
+ return;
+ }
+
+ var context = panel.context;
+ this.updateInfo(netInfoBox, file, context);
+ },
+
+ updateInfo: function(netInfoBox, file, context)
+ {
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.updateInfo; file", file);
+
+ if (!netInfoBox)
+ {
+ if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("net.updateInfo; ERROR netInfo == null " + file.href, file);
+ return;
+ }
+
+ var tab = netInfoBox.selectedTab;
+ if (Css.hasClass(tab, "netInfoParamsTab"))
+ {
+ if (file.urlParams && !netInfoBox.urlParamsPresented)
+ {
+ netInfoBox.urlParamsPresented = true;
+ this.insertHeaderRows(netInfoBox, file.urlParams, "Params");
+ }
+ }
+
+ if (Css.hasClass(tab, "netInfoHeadersTab"))
+ {
+ var headersText = netInfoBox.getElementsByClassName("netInfoHeadersText").item(0);
+
+ if (file.responseHeaders && !netInfoBox.responseHeadersPresented)
+ {
+ netInfoBox.responseHeadersPresented = true;
+
+ Firebug.NetMonitor.NetInfoHeaders.renderHeaders(headersText,
+ file.responseHeaders, "ResponseHeaders");
+
+ // If the request comes from the BFCache do not display reponse headers.
+ // There is not real response from the server and all headers come from
+ // the cache. So, the user should see the 'Response Headers From Cache'
+ // section (see issue 5573).
+ if (file.fromBFCache)
+ {
+ // Display a message instead of headers.
+ var body = Dom.getElementByClass(headersText, "netInfoResponseHeadersBody");
+ Firebug.NetMonitor.NetInfoBody.responseHeadersFromBFCacheTag.replace({}, body);
+ }
+ }
+
+ if (file.cachedResponseHeaders && !netInfoBox.cachedResponseHeadersPresented)
+ {
+ netInfoBox.cachedResponseHeadersPresented = true;
+ Firebug.NetMonitor.NetInfoHeaders.renderHeaders(headersText,
+ file.cachedResponseHeaders, "CachedResponseHeaders");
+ }
+
+ if (file.requestHeaders && !netInfoBox.requestHeadersPresented)
+ {
+ netInfoBox.requestHeadersPresented = true;
+ Firebug.NetMonitor.NetInfoHeaders.renderHeaders(headersText,
+ file.requestHeaders, "RequestHeaders");
+ }
+
+ if (!file.postRequestsHeaders)
+ {
+ var text = NetUtils.getPostText(file, context, true);
+ file.postRequestsHeaders = Http.getHeadersFromPostText(file.request, text);
+ }
+
+ if (file.postRequestsHeaders && !netInfoBox.postRequestsHeadersPresented)
+ {
+ netInfoBox.postRequestsHeadersPresented = true;
+ Firebug.NetMonitor.NetInfoHeaders.renderHeaders(headersText,
+ file.postRequestsHeaders, "PostRequestHeaders");
+ }
+ }
+
+ if (Css.hasClass(tab, "netInfoPostTab"))
+ {
+ if (!netInfoBox.postPresented)
+ {
+ netInfoBox.postPresented = true;
+ var postText = netInfoBox.getElementsByClassName("netInfoPostText").item(0);
+ Firebug.NetMonitor.NetInfoPostData.render(context, postText, file);
+ }
+ }
+
+ if (Css.hasClass(tab, "netInfoPutTab"))
+ {
+ if (!netInfoBox.putPresented)
+ {
+ netInfoBox.putPresented = true;
+ var putText = netInfoBox.getElementsByClassName("netInfoPutText").item(0);
+ Firebug.NetMonitor.NetInfoPostData.render(context, putText, file);
+ }
+ }
+
+ if (Css.hasClass(tab, "netInfoPatchTab"))
+ {
+ if (!netInfoBox.patchPresented)
+ {
+ netInfoBox.patchPresented = true;
+ var patchText = netInfoBox.getElementsByClassName("netInfoPatchText").item(0);
+ Firebug.NetMonitor.NetInfoPostData.render(context, patchText, file);
+ }
+ }
+
+ if (Css.hasClass(tab, "netInfoResponseTab") && file.loaded && !netInfoBox.responsePresented)
+ {
+ var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0);
+
+ // Let listeners display the response
+ Events.dispatch(this.fbListeners, "updateResponse", [netInfoBox, file, context]);
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("netInfoResponseTab", {netInfoBox: netInfoBox, file: file});
+ if (!netInfoBox.responsePresented)
+ {
+ if (file.category == "image")
+ {
+ netInfoBox.responsePresented = true;
+
+ var responseImage = netInfoBox.ownerDocument.createElement("img");
+ responseImage.src = file.href;
+
+ Dom.clearNode(responseTextBox);
+ responseTextBox.appendChild(responseImage, responseTextBox);
+ }
+ else if (!(NetUtils.binaryCategoryMap.hasOwnProperty(file.category)))
+ {
+ this.setResponseText(file, netInfoBox, responseTextBox, context);
+ }
+ }
+ }
+
+ if (Css.hasClass(tab, "netInfoHtmlTab") && file.loaded && !netInfoBox.htmlPresented)
+ {
+ netInfoBox.htmlPresented = true;
+
+ var text = NetUtils.getResponseText(file, context);
+ this.htmlPreview = netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0);
+ this.htmlPreview.contentWindow.document.body.innerHTML = text;
+
+ // Workaround for issue 5774 (it's not clear why the 'load' event is actually
+ // sent to the iframe when the user swithes Firebug panels).
+ // The event is sent only for the iframes in the Console panel.
+ context.addEventListener(this.htmlPreview, "load", function(event)
+ {
+ try
+ {
+ event.target.contentDocument.body.innerHTML = text;
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("net.updateInfo; EXCEPTION " + err, err);
+ }
+ });
+
+ var defaultHeight = parseInt(Options.get("netHtmlPreviewHeight"));
+ if (!isNaN(defaultHeight))
+ this.htmlPreview.style.height = defaultHeight + "px";
+
+ var handler = netInfoBox.querySelector(".htmlPreviewResizer");
+ this.resizer = new DragDrop.Tracker(handler, {
+ onDragStart: Obj.bind(this.onDragStart, this),
+ onDragOver: Obj.bind(this.onDragOver, this),
+ onDrop: Obj.bind(this.onDrop, this)
+ });
+ }
+
+ // Notify listeners about update so, content of custom tabs can be updated.
+ Events.dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "updateTabBody",
+ [netInfoBox, file, context]);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // HTML Preview Resizer
+
+ onDragStart: function(tracker)
+ {
+ var body = Dom.getBody(this.htmlPreview.ownerDocument);
+ body.setAttribute("resizingHtmlPreview", "true");
+ this.startHeight = this.htmlPreview.clientHeight;
+ },
+
+ onDragOver: function(newPos, tracker)
+ {
+ var newHeight = (this.startHeight + newPos.y);
+ this.htmlPreview.style.height = newHeight + "px";
+ Options.setPref(Firebug.prefDomain, "netHtmlPreviewHeight", newHeight);
+ },
+
+ onDrop: function(tracker)
+ {
+ var body = Dom.getBody(this.htmlPreview.ownerDocument);
+ body.removeAttribute("resizingHtmlPreview");
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ setResponseText: function(file, netInfoBox, responseTextBox, context)
+ {
+ // Get response text and make sure it doesn't exceed the max limit.
+ var text = NetUtils.getResponseText(file, context);
+ var limit = Firebug.netDisplayedResponseLimit + 15;
+ var limitReached = text ? (text.length > limit) : false;
+ if (limitReached)
+ text = text.substr(0, limit) + "...";
+
+ // Insert the response into the UI.
+ if (text)
+ Str.insertWrappedText(text, responseTextBox);
+ else
+ Str.insertWrappedText("", responseTextBox);
+
+ // Append a message informing the user that the response isn't fully displayed.
+ if (limitReached)
+ {
+ var object = {
+ text: Locale.$STR("net.responseSizeLimitMessage"),
+ onClickLink: function() {
+ NetUtils.openResponseInTab(file);
+ }
+ };
+ Firebug.NetMonitor.ResponseSizeLimit.append(object, responseTextBox);
+ }
+
+ netInfoBox.responsePresented = true;
+
+ if (FBTrace.DBG_NET)
+ FBTrace.sysout("net.setResponseText; response text updated");
+ },
+
+ insertHeaderRows: function(netInfoBox, headers, tableName, rowName)
+ {
+ if (!headers.length)
+ return;
+
+ var headersTable = netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0);
+ var tbody = Dom.getChildByClass(headersTable, "netInfo" + rowName + "Body");
+ if (!tbody)
+ tbody = headersTable.firstChild;
+ var titleRow = Dom.getChildByClass(tbody, "netInfo" + rowName + "Title");
+
+ headers.sort(function(a, b)
+ {
+ return a.name > b.name ? 1 : -1;
+ });
+
+ this.headerDataTag.insertRows({headers: headers}, titleRow ? titleRow : tbody);
+ Css.removeClass(titleRow, "collapsed");
+ },
+});
+
+// ********************************************************************************************* //
+
+/**
+ * @domplate Represents posted data within request info (the info, which is visible when
+ * a request entry is expanded. This template renders content of the Post tab.
+ */
+Firebug.NetMonitor.NetInfoPostData = domplate(Firebug.Rep, new Firebug.Listener(),
+{
+ // application/x-www-form-urlencoded
+ paramsTable:
+ TABLE({"class": "netInfoPostParamsTable", cellpadding: 0, cellspacing: 0,
+ "role": "presentation"},
+ TBODY({"role": "list", "aria-label": Locale.$STR("net.label.Parameters")},
+ TR({"class": "netInfoPostParamsTitle", "role": "presentation"},
+ TD({colspan: 2, "role": "presentation"},
+ DIV({"class": "netInfoPostParams"},
+ Locale.$STR("net.label.Parameters"),
+ SPAN({"class": "netInfoPostContentType"},
+ "application/x-www-form-urlencoded"
+ )
+ )
+ )
+ )
+ )
+ ),
+
+ // multipart/form-data
+ partsTable:
+ TABLE({"class": "netInfoPostPartsTable", cellpadding: 0, cellspacing: 0,
+ "role": "presentation"},
+ TBODY({"role": "list", "aria-label": Locale.$STR("net.label.Parts")},
+ TR({"class": "netInfoPostPartsTitle", "role": "presentation"},
+ TD({colspan: 2, "role":"presentation" },
+ DIV({"class": "netInfoPostParams"},
+ Locale.$STR("net.label.Parts"),
+ SPAN({"class": "netInfoPostContentType"},
+ "multipart/form-data"
+ )
+ )
+ )
+ )
+ )
+ ),
+
+ // application/json
+ jsonTable:
+ TABLE({"class": "netInfoPostJSONTable", cellpadding: 0, cellspacing: 0,
+ "role": "presentation"},
+ TBODY({"role": "list", "aria-label": Locale.$STR("jsonviewer.tab.JSON")},
+ TR({"class": "netInfoPostJSONTitle", "role": "presentation"},
+ TD({"role": "presentation" },
+ DIV({"class": "netInfoPostParams"},
+ Locale.$STR("jsonviewer.tab.JSON")
+ )
+ )
+ ),
+ TR(
+ TD({"class": "netInfoPostJSONBody"})
+ )
+ )
+ ),
+
+ // application/xml
+ xmlTable:
+ TABLE({"class": "netInfoPostXMLTable", cellpadding: 0, cellspacing: 0,
+ "role": "presentation"},
+ TBODY({"role": "list", "aria-label": Locale.$STR("xmlviewer.tab.XML")},
+ TR({"class": "netInfoPostXMLTitle", "role": "presentation"},
+ TD({"role": "presentation" },
+ DIV({"class": "netInfoPostParams"},
+ Locale.$STR("xmlviewer.tab.XML")
+ )
+ )
+ ),
+ TR(
+ TD({"class": "netInfoPostXMLBody"})
+ )
+ )
+ ),
+
+ // image/svg+xml
+ svgTable:
+ TABLE({"class": "netInfoPostSVGTable", cellpadding: 0, cellspacing: 0,
+ "role": "presentation"},
+ TBODY({"role": "list", "aria-label": Locale.$STR("svgviewer.tab.SVG")},
+ TR({"class": "netInfoPostSVGTitle", "role": "presentation"},
+ TD({"role": "presentation" },
+ DIV({"class": "netInfoPostParams"},
+ Locale.$STR("svgviewer.tab.SVG")
+ )
+ )
+ ),
+ TR(
+ TD({"class": "netInfoPostSVGBody"})
+ )
+ )
+ ),
+
+ // application/x-woff
+ fontTable:
+ TABLE({"class": "netInfoPostFontTable", cellpadding: 0, cellspacing: 0,
+ "role": "presentation"},
+ TBODY({"role": "list", "aria-label": Locale.$STR("fontviewer.tab.Font")},
+ TR({"class": "netInfoPostFontTitle", "role": "presentation"},
+ TD({"role": "presentation" },
+ Locale.$STR("fontviewer.tab.Font")
+ )
+ ),
+ TR(
+ TD({"class": "netInfoPostFontBody"})
+ )
+ )
+ ),
+
+ sourceTable:
+ TABLE({"class": "netInfoPostSourceTable", cellpadding: 0, cellspacing: 0,
+ "role": "presentation"},
+ TBODY({"role": "list", "aria-label": Locale.$STR("net.label.Source")},
+ TR({"class": "netInfoPostSourceTitle", "role": "presentation"},
+ TD({colspan: 2, "role": "presentation"},
+ DIV({"class": "netInfoPostSource"},
+ Locale.$STR("net.label.Source")
+ )
+ )
+ )
+ )
+ ),
+
+ sourceBodyTag:
+ TR({"role": "presentation"},
+ TD({colspan: 2, "role": "presentation"},
+ FOR("line", "$param|getParamValueIterator",
+ CODE({"class":"focusRow subFocusRow", "role": "listitem"}, "$line")
+ )
+ )
+ ),
+
+ getParamValueIterator: function(param)
+ {
+ return Firebug.NetMonitor.NetInfoBody.getParamValueIterator(param);
+ },
+
+ render: function(context, parentNode, file)
+ {
+ var text = NetUtils.getPostText(file, context, true);
+ if (text == undefined)
+ return;
+
+ if (NetUtils.isURLEncodedRequest(file, context))
+ {
+ var lines = text.split("\n");
+ var params = Url.parseURLEncodedText(lines[lines.length-1]);
+ if (params)
+ this.insertParameters(parentNode, params);
+ }
+
+ if (NetUtils.isMultiPartRequest(file, context))
+ {
+ var data = this.parseMultiPartText(file, context);
+ if (data)
+ this.insertParts(parentNode, data);
+ }
+
+ var contentType = NetUtils.findHeader(file.requestHeaders, "content-type");
+
+ // TODO: Trigger an event here instead and register the viewer models as listeners
+ if (Firebug.JSONViewerModel.isJSON(contentType, text))
+ this.insertJSON(parentNode, file, context);
+
+ if (Firebug.XMLViewerModel.isXML(contentType))
+ this.insertXML(parentNode, file, context);
+
+ if (Firebug.SVGViewerModel.isSVG(contentType))
+ this.insertSVG(parentNode, file, context);
+
+ if (Firebug.FontViewerModel.isFont(contentType, file.href, text))
+ this.insertFont(parentNode, file, context);
+
+ var postText = NetUtils.getPostText(file, context);
+
+ // Make sure headers are not displayed in the 'source' section.
+ postText = Http.removeHeadersFromPostText(file.request, postText);
+ postText = NetUtils.formatPostText(postText);
+ if (postText)
+ this.insertSource(parentNode, postText);
+ },
+
+ insertParameters: function(parentNode, params)
+ {
+ if (!params || !params.length)
+ return;
+
+ var paramTable = this.paramsTable.append(null, parentNode);
+ var row = paramTable.getElementsByClassName("netInfoPostParamsTitle").item(0);
+
+ Firebug.NetMonitor.NetInfoBody.headerDataTag.insertRows({headers: params}, row);
+ },
+
+ insertParts: function(parentNode, data)
+ {
+ if (!data.params || !data.params.length)
+ return;
+
+ var partsTable = this.partsTable.append(null, parentNode);
+ var row = partsTable.getElementsByClassName("netInfoPostPartsTitle").item(0);
+
+ Firebug.NetMonitor.NetInfoBody.headerDataTag.insertRows({headers: data.params}, row);
+ },
+
+ insertJSON: function(parentNode, file, context)
+ {
+ var text = NetUtils.getPostText(file, context);
+ var data = Json.parseJSONString(text, "http://" + file.request.originalURI.host);
+ if (!data)
+ return;
+
+ var jsonTable = this.jsonTable.append(null, parentNode);
+ var jsonBody = jsonTable.getElementsByClassName("netInfoPostJSONBody").item(0);
+
+ if (!this.toggles)
+ this.toggles = new ToggleBranch.ToggleBranch();
+
+ Firebug.DOMPanel.DirTable.tag.replace(
+ {object: data, toggles: this.toggles}, jsonBody);
+ },
+
+ insertXML: function(parentNode, file, context)
+ {
+ var text = NetUtils.getPostText(file, context);
+
+ var jsonTable = this.xmlTable.append(null, parentNode);
+ var jsonBody = jsonTable.getElementsByClassName("netInfoPostXMLBody").item(0);
+
+ Firebug.XMLViewerModel.insertXML(jsonBody, text);
+ },
+
+ insertSVG: function(parentNode, file, context)
+ {
+ var text = NetUtils.getPostText(file, context);
+
+ var jsonTable = this.svgTable.append(null, parentNode);
+ var jsonBody = jsonTable.getElementsByClassName("netInfoPostSVGBody").item(0);
+
+ Firebug.SVGViewerModel.insertSVG(jsonBody, text);
+ },
+
+ insertFont: function(parentNode, file, context)
+ {
+ var text = NetUtils.getPostText(file, context);
+
+ var fontTable = this.fontTable.append(null, parentNode);
+ var fontBody = fontTable.getElementsByClassName("netInfoPostFontBody").item(0);
+
+ Firebug.FontViewerModel.insertFont(fontBody, text);
+ },
+
+ insertSource: function(parentNode, text)
+ {
+ var sourceTable = this.sourceTable.append(null, parentNode);
+ var row = sourceTable.getElementsByClassName("netInfoPostSourceTitle").item(0);
+
+ var param = {value: text};
+ this.sourceBodyTag.insertRows({param: param}, row);
+ },
+
+ parseMultiPartText: function(file, context)
+ {
+ var text = NetUtils.getPostText(file, context);
+ if (text == undefined)
+ return null;
+
+ FBTrace.sysout("net.parseMultiPartText; boundary: ", text);
+
+ var boundary = text.match(/\s*boundary=\s*(.*)/)[1];
+
+ var divider = "\r\n\r\n";
+ var bodyStart = text.indexOf(divider);
+ var body = text.substr(bodyStart + divider.length);
+
+ var postData = {};
+ postData.mimeType = "multipart/form-data";
+ postData.params = [];
+
+ var parts = body.split("--" + boundary);
+ for (var i=0; i<parts.length; i++)
+ {
+ var part = parts[i].split(divider);
+ if (part.length != 2)
+ continue;
+
+ var m = part[0].match(/\s*name=\"(.*)\"(;|$)/);
+ postData.params.push({
+ name: (m && m.length > 1) ? m[1] : "",
+ value: Str.trim(part[1])
+ });
+ }
+
+ return postData;
+ }
+});
+
+// ********************************************************************************************* //
+
+/**
+ * @domplate Used within the Net panel to display raw source of request and response headers
+ * as well as pretty-formatted summary of these headers.
+ */
+Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, new Firebug.Listener(),
+{
+ tag:
+ DIV({"class": "netInfoHeadersTable", "role": "tabpanel"},
+ DIV({"class": "netInfoHeadersGroup netInfoResponseHeadersTitle collapsed"},
+ SPAN(Locale.$STR("ResponseHeaders")),
+ SPAN({"class": "netHeadersViewSource response collapsed", onclick: "$onViewSource",
+ _sourceDisplayed: false, _rowName: "ResponseHeaders"},
+ Locale.$STR("net.headers.view source")
+ )
+ ),
+ TABLE({cellpadding: 0, cellspacing: 0},
+ TBODY({"class": "netInfoResponseHeadersBody", "role": "list",
+ "aria-label": Locale.$STR("ResponseHeaders")})
+ ),
+ DIV({"class": "netInfoHeadersGroup netInfoRequestHeadersTitle collapsed"},
+ SPAN(Locale.$STR("RequestHeaders")),
+ SPAN({"class": "netHeadersViewSource request collapsed", onclick: "$onViewSource",
+ _sourceDisplayed: false, _rowName: "RequestHeaders"},
+ Locale.$STR("net.headers.view source")
+ )
+ ),
+ TABLE({cellpadding: 0, cellspacing: 0},
+ TBODY({"class": "netInfoRequestHeadersBody", "role": "list",
+ "aria-label": Locale.$STR("RequestHeaders")})
+ ),
+ DIV({"class": "netInfoHeadersGroup netInfoCachedResponseHeadersTitle collapsed"},
+ SPAN(Locale.$STR("CachedResponseHeaders"))
+ ),
+ TABLE({cellpadding: 0, cellspacing: 0},
+ TBODY({"class": "netInfoCachedResponseHeadersBody", "role": "list",
+ "aria-label": Locale.$STR("CachedResponseHeaders")})
+ ),
+ DIV({"class": "netInfoHeadersGroup netInfoPostRequestHeadersTitle collapsed"},
+ SPAN(Locale.$STR("PostRequestHeaders"))
+ ),
+ TABLE({cellpadding: 0, cellspacing: 0},
+ TBODY({"class": "netInfoPostRequestHeadersBody", "role": "list",
+ "aria-label": Locale.$STR("PostRequestHeaders")})
+ )
+ ),
+
+ sourceTag:
+ TR({"role": "presentation"},
+ TD({colspan: 2, "role": "presentation"},
+ PRE({"class": "source"})
+ )
+ ),
+
+ onViewSource: function(event)
+ {
+ var target = event.target;
+ var requestHeaders = (target.rowName == "RequestHeaders");
+
+ var netInfoBox = Dom.getAncestorByClass(target, "netInfoBody");
+ var file = netInfoBox.repObject;
+
+ if (target.sourceDisplayed)
+ {
+ var headers = requestHeaders ? file.requestHeaders : file.responseHeaders;
+ this.insertHeaderRows(netInfoBox, headers, target.rowName);
+ target.textContent = Locale.$STR("net.headers.view source");
+ }
+ else
+ {
+ var source = requestHeaders ? file.requestHeadersText : file.responseHeadersText;
+ this.insertSource(netInfoBox, source, target.rowName);
+ target.textContent = Locale.$STR("net.headers.pretty print");
+ }
+
+ target.sourceDisplayed = !target.sourceDisplayed;
+
+ Events.cancelEvent(event);
+ },
+
+ insertSource: function(netInfoBox, source, rowName)
+ {
+ var tbody = netInfoBox.getElementsByClassName("netInfo" + rowName + "Body").item(0);
+ var node = this.sourceTag.replace({}, tbody);
+ var sourceNode = node.getElementsByClassName("source").item(0);
+ sourceNode.textContent = source;
+ },
+
+ insertHeaderRows: function(netInfoBox, headers, rowName)
+ {
+ var headersTable = netInfoBox.getElementsByClassName("netInfoHeadersTable").item(0);
+ var tbody = headersTable.getElementsByClassName("netInfo" + rowName + "Body").item(0);
+
+ Dom.clearNode(tbody);
+
+ if (headers && headers.length)
+ {
+ headers.sort(function(a, b)
+ {
+ return a.name > b.name ? 1 : -1;
+ });
+
+ Firebug.NetMonitor.NetInfoBody.headerDataTag.insertRows({headers: headers}, tbody);
+
+ var titleRow = Dom.getChildByClass(headersTable, "netInfo" + rowName + "Title");
+ Css.removeClass(titleRow, "collapsed");
+ }
+ },
+
+ init: function(parent)
+ {
+ var rootNode = this.tag.append({}, parent);
+
+ var netInfoBox = Dom.getAncestorByClass(parent, "netInfoBody");
+ var file = netInfoBox.repObject;
+
+ var viewSource;
+
+ viewSource = rootNode.getElementsByClassName("netHeadersViewSource request").item(0);
+ if (file.requestHeadersText)
+ Css.removeClass(viewSource, "collapsed");
+
+ viewSource = rootNode.getElementsByClassName("netHeadersViewSource response").item(0);
+ if (file.responseHeadersText)
+ Css.removeClass(viewSource, "collapsed");
+ },
+
+ renderHeaders: function(parent, headers, rowName)
+ {
+ if (!parent.firstChild)
+ this.init(parent);
+
+ this.insertHeaderRows(parent, headers, rowName);
+ }
+});
+
+// ********************************************************************************************* //
+
+/**
+ * @domplate Represents a template for a pupup tip with detailed size info.
+ */
+Firebug.NetMonitor.SizeInfoTip = domplate(Firebug.Rep,
+{
+ tag:
+ TABLE({"class": "sizeInfoTip", "id": "fbNetSizeInfoTip", role:"presentation"},
+ TBODY(
+ FOR("size", "$sizeInfo",
+ TAG("$size|getRowTag", {size: "$size"})
+ )
+ )
+ ),
+
+ sizeTag:
+ TR({"class": "sizeInfoRow", $collapsed: "$size|hideRow"},
+ TD({"class": "sizeInfoLabelCol"}, "$size.label"),
+ TD({"class": "sizeInfoSizeCol"}, "$size|formatSize"),
+ TD({"class": "sizeInfoDetailCol"}, "$size|formatNumber")
+ ),
+
+ separatorTag:
+ TR(
+ TD({"colspan": 3, "height": "7px"})
+ ),
+
+ descTag:
+ TR(
+ TD({"colspan": 3, "class": "sizeInfoDescCol"}, "$size.label")
+ ),
+
+ getRowTag: function(size)
+ {
+ if (size.size == -2)
+ return this.descTag;
+
+ return (size.label == "-") ? this.separatorTag : this.sizeTag;
+ },
+
+ hideRow: function(size)
+ {
+ return size.size < 0;
+ },
+
+ formatSize: function(size)
+ {
+ return Str.formatSize(size.size);
+ },
+
+ formatNumber: function(size)
+ {
+ return size.size && size.size >= 1024 ? "(" + size.size.toLocaleString() + " B)" : "";
+ },
+
+ render: function(file, parentNode)
+ {
+ var postText = NetUtils.getPostText(file, Firebug.currentContext, true);
+ postText = postText ? postText : "";
+
+ var sizeInfo = [];
+ sizeInfo.push({label: Locale.$STR("net.sizeinfo.Response Body"), size: file.size});
+ sizeInfo.push({label: Locale.$STR("net.sizeinfo.Post Body"), size: postText.length});
+
+ if (file.requestHeadersText)
+ {
+ var responseHeaders = file.responseHeadersText ? file.responseHeadersText : 0;
+ sizeInfo.push({label: "-", size: 0});
+ sizeInfo.push({label: Locale.$STR("net.sizeinfo.Total Received") + "*",
+ size: (responseHeaders.length ? responseHeaders.length : 0) + file.size});
+ sizeInfo.push({label: Locale.$STR("net.sizeinfo.Total Sent") + "*",
+ size: file.requestHeadersText.length + postText.length});
+ sizeInfo.push({label: " ", size: -2});
+ sizeInfo.push({label: "* " + Locale.$STR("net.sizeinfo.Including HTTP Headers"),
+ size: -2});
+ }
+
+ this.tag.replace({sizeInfo: sizeInfo}, parentNode);
+ }
+});
+
+// ********************************************************************************************* //
+
+Firebug.NetMonitor.NetLimit = domplate(Firebug.Rep,
+{
+ collapsed: true,
+
+ tableTag:
+ DIV(
+ TABLE({width: "100%", cellpadding: 0, cellspacing: 0},
+ TBODY()
+ )
+ ),
+
+ limitTag:
+ TR({"class": "netRow netLimitRow", $collapsed: "$isCollapsed"},
+ TD({"class": "netCol netLimitCol", colspan: 8},
+ TABLE({cellpadding: 0, cellspacing: 0},
+ TBODY(
+ TR(
+ TD(
+ SPAN({"class": "netLimitLabel"},
+ Locale.$STRP("plural.Limit_Exceeded2", [0])
+ )
+ ),
+ TD({style: "width:100%"}),
+ TD(
+ BUTTON({"class": "netLimitButton", title: "$limitPrefsTitle",
+ onclick: "$onPreferences"},
+ Locale.$STR("LimitPrefs")
+ )
+ ),
+ TD(" ")
+ )
+ )
+ )
+ )
+ ),
+
+ isCollapsed: function()
+ {
+ return this.collapsed;
+ },
+
+ onPreferences: function(event)
+ {
+ Win.openNewTab("about:config");
+ },
+
+ updateCounter: function(row)
+ {
+ Css.removeClass(row, "collapsed");
+
+ // Update info within the limit row.
+ var limitLabel = row.getElementsByClassName("netLimitLabel").item(0);
+ limitLabel.firstChild.nodeValue = Locale.$STRP("plural.Limit_Exceeded2",
+ [row.limitInfo.totalCount]);
+ },
+
+ createTable: function(parent, limitInfo)
+ {
+ var table = this.tableTag.replace({}, parent);
+ var row = this.createRow(table.firstChild.firstChild, limitInfo);
+ return [table, row];
+ },
+
+ createRow: function(parent, limitInfo)
+ {
+ var row = this.limitTag.insertRows(limitInfo, parent, this)[0];
+ row.limitInfo = limitInfo;
+ return row;
+ }
+});
+
+// ********************************************************************************************* //
+
+Firebug.NetMonitor.ResponseSizeLimit = domplate(Firebug.Rep,
+{
+ tag:
+ DIV({"class": "netInfoResponseSizeLimit"},
+ SPAN("$object.beforeLink"),
+ A({"class": "objectLink", onclick: "$onClickLink"},
+ "$object.linkText"
+ ),
+ SPAN("$object.afterLink")
+ ),
+
+ reLink: /^(.*)<a>(.*)<\/a>(.*$)/,
+ append: function(obj, parent)
+ {
+ var m = obj.text.match(this.reLink);
+ return this.tag.append({onClickLink: obj.onClickLink,
+ object: {
+ beforeLink: m[1],
+ linkText: m[2],
+ afterLink: m[3],
+ }}, parent, this);
+ }
+});
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerRep(Firebug.NetMonitor.NetRequestTable);
+
+return Firebug.NetMonitor.NetRequestTable;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/net/netUtils.js b/content/firebug/net/netUtils.js
index 03fc6cc..d812178 100644
--- a/content/firebug/net/netUtils.js
+++ b/content/firebug/net/netUtils.js
@@ -1,655 +1,655 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/locale",
- "firebug/lib/events",
- "firebug/lib/url",
- "firebug/chrome/firefox",
- "firebug/lib/wrapper",
- "firebug/lib/xpcom",
- "firebug/lib/http",
- "firebug/lib/string",
- "firebug/lib/xml"
-],
-function(Firebug, Locale, Events, Url, Firefox, Wrapper, Xpcom, Http, Str, Xml) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-const Cu = Components.utils;
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-const mimeExtensionMap =
-{
- "html": "text/html",
- "htm": "text/html",
- "xhtml": "text/html",
- "xml": "text/xml",
- "css": "text/css",
- "js": "application/x-javascript",
- "jss": "application/x-javascript",
- "jpg": "image/jpg",
- "jpeg": "image/jpeg",
- "gif": "image/gif",
- "png": "image/png",
- "bmp": "image/bmp",
- "woff": "application/font-woff",
- "ttf": "application/x-font-ttf",
- "otf": "application/x-font-otf",
- "swf": "application/x-shockwave-flash",
- "xap": "application/x-silverlight-app",
- "flv": "video/x-flv",
- "webm": "video/webm"
-};
-
-const mimeCategoryMap =
-{
- // xxxHonza: note that there is no filter for 'txt' category,
- // shell we use e.g. 'media' instead?
- "text/plain": "txt",
-
- "application/octet-stream": "bin",
- "text/html": "html",
- "text/xml": "html",
- "application/rss+xml": "html",
- "application/atom+xml": "html",
- "application/xhtml+xml": "html",
- "application/mathml+xml": "html",
- "application/rdf+xml": "html",
- "text/css": "css",
- "application/x-javascript": "js",
- "text/javascript": "js",
- "application/javascript" : "js",
- "text/ecmascript": "js",
- "application/ecmascript" : "js", // RFC4329
- "image/jpeg": "image",
- "image/jpg": "image",
- "image/gif": "image",
- "image/png": "image",
- "image/bmp": "image",
- "application/x-shockwave-flash": "plugin",
- "application/x-silverlight-app": "plugin",
- "video/x-flv": "media",
- "audio/mpeg3": "media",
- "audio/x-mpeg-3": "media",
- "video/mpeg": "media",
- "video/x-mpeg": "media",
- "video/webm": "media",
- "video/mp4": "media",
- "video/ogg": "media",
- "audio/ogg": "media",
- "application/ogg": "media",
- "application/x-ogg": "media",
- "application/x-midi": "media",
- "audio/midi": "media",
- "audio/x-mid": "media",
- "audio/x-midi": "media",
- "music/crescendo": "media",
- "audio/wav": "media",
- "audio/x-wav": "media",
- "application/x-woff": "font",
- "application/font-woff": "font",
- "application/x-font-woff": "font",
- "application/x-ttf": "font",
- "application/x-font-ttf": "font",
- "font/ttf": "font",
- "font/woff": "font",
- "application/x-otf": "font",
- "application/x-font-otf": "font"
-};
-
-const fileCategories =
-{
- "undefined": 1,
- "html": 1,
- "css": 1,
- "js": 1,
- "xhr": 1,
- "image": 1,
- "plugin": 1,
- "media": 1,
- "font": 1,
- "txt": 1,
- "bin": 1
-};
-
-const textFileCategories =
-{
- "txt": 1,
- "html": 1,
- "xhr": 1,
- "css": 1,
- "js": 1
-};
-
-const binaryFileCategories =
-{
- "bin": 1,
- "plugin": 1,
- "media": 1
-};
-
-const binaryCategoryMap =
-{
- "image": 1,
- "plugin" : 1,
- "font": 1
-};
-
-const requestProps =
-{
- "allowPipelining": 1,
- "allowSpdy": 1,
- "canceled": 1,
- "channelIsForDownload": 1,
- "contentCharset": 1,
- "contentLength": 1,
- "contentType": 1,
- "forceAllowThirdPartyCookie": 1,
- "loadAsBlocking": 1,
- "loadUnblocked": 1,
- "localAddress": 1,
- "localPort": 1,
- "name": 1,
- "redirectionLimit": 1,
- "remoteAddress": 1,
- "remotePort": 1,
- "requestMethod": 1,
- "requestSucceeded": 1,
- "responseStatus": 1,
- "responseStatusText": 1,
- "status": 1,
-};
-
-// ********************************************************************************************* //
-
-var NetUtils =
-{
- isXHR: Http.isXHR, // deprecated
-
- mimeExtensionMap: mimeExtensionMap,
- mimeCategoryMap: mimeCategoryMap,
- fileCategories: fileCategories,
- textFileCategories: textFileCategories,
- binaryFileCategories: binaryFileCategories,
- binaryCategoryMap: binaryCategoryMap,
-
- now: function()
- {
- return (new Date()).getTime();
- },
-
- getFrameLevel: function(win)
- {
- var level = 0;
- for (; win && (win != win.parent) && (win.parent instanceof window.Window); win = win.parent)
- ++level;
- return level;
- },
-
- findHeader: function(headers, name)
- {
- if (!headers)
- return null;
-
- name = name.toLowerCase();
- for (var i = 0; i < headers.length; ++i)
- {
- var headerName = headers[i].name.toLowerCase();
- if (headerName == name)
- return headers[i].value;
- }
- },
-
- formatPostText: function(text)
- {
- if (text instanceof window.XMLDocument)
- return Xml.getElementXML(text.documentElement);
- else
- return text;
- },
-
- getPostText: function(file, context, noLimit)
- {
- if (!file.postText)
- {
- file.postText = Http.readPostTextFromRequest(file.request, context);
-
- if (!file.postText && context)
- file.postText = Http.readPostTextFromPage(file.href, context);
- }
-
- if (!file.postText)
- return file.postText;
-
- var limit = Firebug.netDisplayedPostBodyLimit;
- if (file.postText.length > limit && !noLimit)
- {
- return Str.cropString(file.postText, limit,
- "\n\n... " + Locale.$STR("net.postDataSizeLimitMessage") + " ...\n\n");
- }
-
- return file.postText;
- },
-
- getResponseText: function(file, context)
- {
- // The response can be also empty string so, check agains "undefined".
- return (typeof(file.responseText) != "undefined") ?
- file.responseText :
- context.sourceCache.loadText(file.href, file.method, file);
- },
-
- matchesContentType: function(headerValue, contentType)
- {
- var contentTypes = (typeof contentType == "string" ? [contentType] : contentType);
- for (var i = 0; i < contentTypes.length; ++i)
- {
- // The header value doesn't have to match the content type exactly;
- // there can be a charset specified. So, test for a prefix instead.
- if (Str.hasPrefix(headerValue, contentTypes[i]))
- return true;
- }
- return false;
- },
-
- isURLEncodedRequest: function(file, context)
- {
- var text = NetUtils.getPostText(file, context);
- if (text && Str.hasPrefix(text.toLowerCase(), "content-type: application/x-www-form-urlencoded"))
- return true;
-
- var headerValue = NetUtils.findHeader(file.requestHeaders, "content-type");
- return (headerValue &&
- NetUtils.matchesContentType(headerValue, "application/x-www-form-urlencoded"));
- },
-
- isMultiPartRequest: function(file, context)
- {
- var text = NetUtils.getPostText(file, context);
- if (text && Str.hasPrefix(text.toLowerCase(), "content-type: multipart/form-data"))
- return true;
- return false;
- },
-
- getMimeType: function(mimeType, uri)
- {
- // Get rid of optional charset, e.g. "text/html; charset=UTF-8".
- // We need pure mime type so, we can use it as a key for look up.
- if (mimeType)
- mimeType = mimeType.split(";")[0];
-
- // If the mime-type exists and is known just return it...
- if (mimeType && mimeCategoryMap.hasOwnProperty(mimeType))
- return mimeType;
-
- // ... otherwise we need guess it according to the file extension.
- var ext = Url.getFileExtension(uri);
- if (!ext)
- return mimeType;
-
- var extMimeType = mimeExtensionMap[ext.toLowerCase()];
- return extMimeType ? extMimeType : mimeType;
- },
-
- getDateFromSeconds: function(s)
- {
- var d = new Date();
- d.setTime(s*1000);
- return d;
- },
-
- getHttpHeaders: function(request, file, context)
- {
- if (!(request instanceof Ci.nsIHttpChannel))
- return;
-
- // xxxHonza: is there any problem to do this in requestedFile method?
- file.method = request.requestMethod;
- file.urlParams = Url.parseURLParams(file.href);
-
- try
- {
- file.status = request.responseStatus;
- }
- catch (e) { }
-
- try
- {
- file.mimeType = NetUtils.getMimeType(request.contentType, request.name);
- }
- catch (e) { }
-
- try
- {
- if (!file.requestHeaders)
- {
- var requestHeaders = [];
- request.visitRequestHeaders({
- visitHeader: function(name, value)
- {
- requestHeaders.push({name: name, value: value});
- }
- });
- file.requestHeaders = requestHeaders;
- }
- }
- catch (e) { }
-
- try
- {
- if (!file.responseHeaders)
- {
- var responseHeaders = [];
- request.visitResponseHeaders({
- visitHeader: function(name, value)
- {
- responseHeaders.push({name: name, value: value});
- }
- });
- file.responseHeaders = responseHeaders;
-
- if (context)
- {
- // Response haeaders are available now, dispatch an event to listeners
- Events.dispatch(Firebug.NetMonitor.fbListeners, "onResponseHeaders",
- [context, file]);
- }
- }
- }
- catch (e) { }
- },
-
- /**
- * Returns a category for specific request (file). The logic is as follows:
- * 1) Use file-extension to guess the mime type. This is prefered since
- * mime-types in HTTP requests are often wrong.
- * This part is based on mimeExtensionMap map.
- * 2) If the file extension is missing or unknown, try to get the mime-type
- * from the HTTP request object.
- * 3) If there is still no mime-type, return empty category name.
- * 4) Use the mime-type and look up the right category.
- * This part is based on mimeCategoryMap map.
- */
- getFileCategory: function(file)
- {
- if (file.category)
- return file.category;
-
- // All XHRs have its own category.
- if (file.isXHR)
- return file.category = "xhr";
-
- // Guess mime-type according to the file extension. Using file extension
- // is prefered way since mime-types in HTTP requests are often wrong.
- var mimeType = this.getMimeType(null, file.href);
-
- // If no luck with file extension, let's try to get the mime-type from
- // the request object.
- if (!mimeType)
- mimeType = this.getMimeType(file.mimeType, file.href);
-
- // No mime-type, no category.
- if (!mimeType)
- return "";
-
- // Finally, get the category according to the mime type.
- return file.category = mimeCategoryMap[mimeType];
- },
-
- getPageTitle: function(context)
- {
- var title = context.getTitle();
- return (title) ? title : context.getName();
- },
-
- getBlockingEndTime: function(file)
- {
- //var blockingEnd = (file.sendingTime > file.startTime) ? file.sendingTime : file.waitingForTime;
-
- if (file.resolveStarted && file.connectStarted)
- return file.resolvingTime;
-
- if (file.connectStarted)
- return file.connectingTime;
-
- if (file.sendStarted)
- return file.sendingTime;
-
- return file.waitingForTime;
- },
-
- getTimeLabelFromMs: function(ms)
- {
- var time = new Date();
- time.setTime(ms);
- return this.getTimeLabel(time);
- },
-
- getTimeLabel: function(date)
- {
- var m = date.getMinutes() + "";
- var s = date.getSeconds() + "";
- var ms = date.getMilliseconds() + "";
- return "[" + ((m.length > 1) ? m : "0" + m) + ":" +
- ((s.length > 1) ? s : "0" + s) + "." +
- ((ms.length > 2) ? ms : ((ms.length > 1) ? "0" + ms : "00" + ms)) + "]";
- },
-
- openResponseInTab: function(file)
- {
- try
- {
- var response = NetUtils.getResponseText(file, this.context);
- var inputStream = Http.getInputStreamFromString(response);
- var stream = Xpcom.CCIN("@mozilla.org/binaryinputstream;1", "nsIBinaryInputStream");
- stream.setInputStream(inputStream);
- var encodedResponse = btoa(stream.readBytes(stream.available()));
- var dataURI = "data:" + file.request.contentType + ";base64," + encodedResponse;
-
- var tabBrowser = Firefox.getTabBrowser();
- tabBrowser.selectedTab = tabBrowser.addTab(dataURI);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("net.openResponseInTab EXCEPTION", err);
- }
- },
-
- traceRequestTiming: function(msg, file)
- {
- var blockingEnd = this.getBlockingEndTime(file);
-
- //Helper log for debugging timing problems.
- var timeLog = {};
- timeLog.startTime = this.getTimeLabelFromMs(file.startTime);
- timeLog.resolvingTime = this.getTimeLabelFromMs(file.resolvingTime);
- timeLog.connectingTime = this.getTimeLabelFromMs(file.connectingTime);
- timeLog.connectedTime = this.getTimeLabelFromMs(file.connectedTime);
- timeLog.blockingEnd = this.getTimeLabelFromMs(blockingEnd);
- timeLog.sendingTime = this.getTimeLabelFromMs(file.sendingTime);
- timeLog.waitingForTime = this.getTimeLabelFromMs(file.waitingForTime);
- timeLog.respondedTime = this.getTimeLabelFromMs(file.respondedTime);
- timeLog.endTime = this.getTimeLabelFromMs(file.endTime);
-
- if (file.request instanceof Ci.nsITimedChannel)
- {
- timeLog.startTime += " - " + this.getTimeLabelFromMs(file.request.channelCreationTime/1000);
- timeLog.startTime += this.getTimeLabelFromMs(file.request.asyncOpenTime/1000);
- timeLog.resolvingTime += " - " + this.getTimeLabelFromMs(file.request.domainLookupStartTime/1000);
- timeLog.resolvingTime += this.getTimeLabelFromMs(file.request.domainLookupEndTime/1000);
- timeLog.connectingTime += " - " + this.getTimeLabelFromMs(file.request.connectStartTime/1000);
- timeLog.connectedTime += " - " + this.getTimeLabelFromMs(file.request.connectEndTime/1000);
- timeLog.sendingTime += " - " + this.getTimeLabelFromMs(file.request.requestStartTime/1000);
- timeLog.respondedTime += " - " + this.getTimeLabelFromMs(file.request.responseStartTime/1000);
- timeLog.endTime += " - " + this.getTimeLabelFromMs(file.request.responseEndTime/1000);
- timeLog.cacheReadStartTime = this.getTimeLabelFromMs(file.request.cacheReadStartTime/1000);
- timeLog.cacheReadEndTime = this.getTimeLabelFromMs(file.request.cacheReadEndTime/1000);
- timeLog.timingEnabled = file.request.timingEnabled;
- }
-
- FBTrace.sysout(msg + " " + file.href, timeLog);
- },
-
- /**
- * Returns a content-accessible 'real object' that is used by 'Inspect in DOM Panel'
- * or 'Use in Command Line' features. Firebug is primarily a tool for web developers
- * and thus shouldn't expose internal chrome objects.
- */
- getRealObject: function(file, context)
- {
- var global = context.getCurrentGlobal();
- var clone = {};
-
- function cloneHeaders(headers)
- {
- var newHeaders = [];
- for (var i=0; headers && i<headers.length; i++)
- {
- var header = {name: headers[i].name, value: headers[i].value};
- header = Wrapper.cloneIntoContentScope(global, header);
- newHeaders.push(header);
- }
- return newHeaders;
- }
-
- // Iterate over all properties of the request object (nsIHttpChannel)
- // and pick only those that are specified in 'requestProps' list.
- var request = file.request;
- for (var p in request)
- {
- if (!(p in requestProps))
- continue;
-
- try
- {
- clone[p] = request[p];
- }
- catch (err)
- {
- // xxxHonza: too much unnecessary output
- //if (FBTrace.DBG_ERRORS)
- // FBTrace.sysout("net.getRealObject EXCEPTION " + err, err);
- }
- }
-
- // Additional props from |file|
- clone.responseBody = file.responseText;
- clone.postBody = file.postBody;
- clone.requestHeaders = cloneHeaders(file.requestHeaders);
- clone.responseHeaders = cloneHeaders(file.responseHeaders);
-
- return Wrapper.cloneIntoContentScope(global, clone);
- },
-
- generateCurlCommand: function(file, addCompressedArgument)
- {
- var command = ["curl"];
- var inferredMethod = "GET";
-
- function escapeCharacter(x)
- {
- var code = x.charCodeAt(0);
- if (code < 256)
- {
- // Add leading zero when needed to not care about the next character.
- return code < 16 ? "\\x0" + code.toString(16) : "\\x" + code.toString(16);
- }
- code = code.toString(16);
- return "\\u" + ("0000" + code).substr(code.length, 4);
- }
-
- function escape(str)
- {
- // String has unicode characters or single quotes
- if (/[^\x20-\x7E]|'/.test(str))
- {
- // Use ANSI-C quoting syntax
- return "$\'" + str.replace(/\\/g, "\\\\")
- .replace(/'/g, "\\\'")
- .replace(/\n/g, "\\n")
- .replace(/\r/g, "\\r")
- .replace(/[^\x20-\x7E]/g, escapeCharacter) + "'";
- }
- else
- {
- // Use single quote syntax.
- return "'" + str + "'";
- }
- }
-
- // Create data
- var data = [];
- var postText = NetUtils.getPostText(file, this.context, true);
- var isURLEncodedRequest = NetUtils.isURLEncodedRequest(file, this.context);
-
- if (postText && isURLEncodedRequest || file.method == "PUT")
- {
- var lines = postText.split("\n");
- var params = lines[lines.length - 1];
-
- data.push("--data");
- data.push(escape(params));
-
- inferredMethod = "POST";
- }
- else if (postText && NetUtils.isMultiPartRequest(file, this.context))
- {
- data.push("--data-binary");
- data.push(escape(postText));
-
- inferredMethod = "POST";
- }
-
- // Add URL
- command.push(escape(file.href));
-
- // Fix method if request is not a GET or POST request
- if (file.method != inferredMethod)
- {
- command.push("-X");
- command.push(file.method);
- }
-
- // Add request headers
- var requestHeaders = file.requestHeaders;
- var postRequestHeaders = Http.getHeadersFromPostText(file.request, postText);
- var headers = requestHeaders.concat(postRequestHeaders);
- for (var i=0; i<headers.length; i++)
- {
- var header = headers[i];
-
- // Firefox and cURL creates the optional Content-Length header for POST and
- // PUT requests. Omit adding this header as it is preferred to use the
- // Content-Length cURL creates.
- if (header.name.toLowerCase() == "content-length")
- continue;
-
- command.push("-H");
- command.push(escape(header.name + ": " + header.value));
- }
-
- // Add data
- command = command.concat(data);
-
- // Add --compressed
- if (addCompressedArgument)
- command.push("--compressed");
-
- return command.join(" ");
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return NetUtils;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/url",
+ "firebug/chrome/firefox",
+ "firebug/lib/wrapper",
+ "firebug/lib/xpcom",
+ "firebug/lib/http",
+ "firebug/lib/string",
+ "firebug/lib/xml"
+],
+function(Firebug, Locale, Events, Url, Firefox, Wrapper, Xpcom, Http, Str, Xml) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+const Cu = Components.utils;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+const mimeExtensionMap =
+{
+ "html": "text/html",
+ "htm": "text/html",
+ "xhtml": "text/html",
+ "xml": "text/xml",
+ "css": "text/css",
+ "js": "application/x-javascript",
+ "jss": "application/x-javascript",
+ "jpg": "image/jpg",
+ "jpeg": "image/jpeg",
+ "gif": "image/gif",
+ "png": "image/png",
+ "bmp": "image/bmp",
+ "woff": "application/font-woff",
+ "ttf": "application/x-font-ttf",
+ "otf": "application/x-font-otf",
+ "swf": "application/x-shockwave-flash",
+ "xap": "application/x-silverlight-app",
+ "flv": "video/x-flv",
+ "webm": "video/webm"
+};
+
+const mimeCategoryMap =
+{
+ // xxxHonza: note that there is no filter for 'txt' category,
+ // shell we use e.g. 'media' instead?
+ "text/plain": "txt",
+
+ "application/octet-stream": "bin",
+ "text/html": "html",
+ "text/xml": "html",
+ "application/rss+xml": "html",
+ "application/atom+xml": "html",
+ "application/xhtml+xml": "html",
+ "application/mathml+xml": "html",
+ "application/rdf+xml": "html",
+ "text/css": "css",
+ "application/x-javascript": "js",
+ "text/javascript": "js",
+ "application/javascript" : "js",
+ "text/ecmascript": "js",
+ "application/ecmascript" : "js", // RFC4329
+ "image/jpeg": "image",
+ "image/jpg": "image",
+ "image/gif": "image",
+ "image/png": "image",
+ "image/bmp": "image",
+ "application/x-shockwave-flash": "plugin",
+ "application/x-silverlight-app": "plugin",
+ "video/x-flv": "media",
+ "audio/mpeg3": "media",
+ "audio/x-mpeg-3": "media",
+ "video/mpeg": "media",
+ "video/x-mpeg": "media",
+ "video/webm": "media",
+ "video/mp4": "media",
+ "video/ogg": "media",
+ "audio/ogg": "media",
+ "application/ogg": "media",
+ "application/x-ogg": "media",
+ "application/x-midi": "media",
+ "audio/midi": "media",
+ "audio/x-mid": "media",
+ "audio/x-midi": "media",
+ "music/crescendo": "media",
+ "audio/wav": "media",
+ "audio/x-wav": "media",
+ "application/x-woff": "font",
+ "application/font-woff": "font",
+ "application/x-font-woff": "font",
+ "application/x-ttf": "font",
+ "application/x-font-ttf": "font",
+ "font/ttf": "font",
+ "font/woff": "font",
+ "application/x-otf": "font",
+ "application/x-font-otf": "font"
+};
+
+const fileCategories =
+{
+ "undefined": 1,
+ "html": 1,
+ "css": 1,
+ "js": 1,
+ "xhr": 1,
+ "image": 1,
+ "plugin": 1,
+ "media": 1,
+ "font": 1,
+ "txt": 1,
+ "bin": 1
+};
+
+const textFileCategories =
+{
+ "txt": 1,
+ "html": 1,
+ "xhr": 1,
+ "css": 1,
+ "js": 1
+};
+
+const binaryFileCategories =
+{
+ "bin": 1,
+ "plugin": 1,
+ "media": 1
+};
+
+const binaryCategoryMap =
+{
+ "image": 1,
+ "plugin" : 1,
+ "font": 1
+};
+
+const requestProps =
+{
+ "allowPipelining": 1,
+ "allowSpdy": 1,
+ "canceled": 1,
+ "channelIsForDownload": 1,
+ "contentCharset": 1,
+ "contentLength": 1,
+ "contentType": 1,
+ "forceAllowThirdPartyCookie": 1,
+ "loadAsBlocking": 1,
+ "loadUnblocked": 1,
+ "localAddress": 1,
+ "localPort": 1,
+ "name": 1,
+ "redirectionLimit": 1,
+ "remoteAddress": 1,
+ "remotePort": 1,
+ "requestMethod": 1,
+ "requestSucceeded": 1,
+ "responseStatus": 1,
+ "responseStatusText": 1,
+ "status": 1,
+};
+
+// ********************************************************************************************* //
+
+var NetUtils =
+{
+ isXHR: Http.isXHR, // deprecated
+
+ mimeExtensionMap: mimeExtensionMap,
+ mimeCategoryMap: mimeCategoryMap,
+ fileCategories: fileCategories,
+ textFileCategories: textFileCategories,
+ binaryFileCategories: binaryFileCategories,
+ binaryCategoryMap: binaryCategoryMap,
+
+ now: function()
+ {
+ return (new Date()).getTime();
+ },
+
+ getFrameLevel: function(win)
+ {
+ var level = 0;
+ for (; win && (win != win.parent) && (win.parent instanceof window.Window); win = win.parent)
+ ++level;
+ return level;
+ },
+
+ findHeader: function(headers, name)
+ {
+ if (!headers)
+ return null;
+
+ name = name.toLowerCase();
+ for (var i = 0; i < headers.length; ++i)
+ {
+ var headerName = headers[i].name.toLowerCase();
+ if (headerName == name)
+ return headers[i].value;
+ }
+ },
+
+ formatPostText: function(text)
+ {
+ if (text instanceof window.XMLDocument)
+ return Xml.getElementXML(text.documentElement);
+ else
+ return text;
+ },
+
+ getPostText: function(file, context, noLimit)
+ {
+ if (!file.postText)
+ {
+ file.postText = Http.readPostTextFromRequest(file.request, context);
+
+ if (!file.postText && context)
+ file.postText = Http.readPostTextFromPage(file.href, context);
+ }
+
+ if (!file.postText)
+ return file.postText;
+
+ var limit = Firebug.netDisplayedPostBodyLimit;
+ if (file.postText.length > limit && !noLimit)
+ {
+ return Str.cropString(file.postText, limit,
+ "\n\n... " + Locale.$STR("net.postDataSizeLimitMessage") + " ...\n\n");
+ }
+
+ return file.postText;
+ },
+
+ getResponseText: function(file, context)
+ {
+ // The response can be also empty string so, check agains "undefined".
+ return (typeof(file.responseText) != "undefined") ?
+ file.responseText :
+ context.sourceCache.loadText(file.href, file.method, file);
+ },
+
+ matchesContentType: function(headerValue, contentType)
+ {
+ var contentTypes = (typeof contentType == "string" ? [contentType] : contentType);
+ for (var i = 0; i < contentTypes.length; ++i)
+ {
+ // The header value doesn't have to match the content type exactly;
+ // there can be a charset specified. So, test for a prefix instead.
+ if (Str.hasPrefix(headerValue, contentTypes[i]))
+ return true;
+ }
+ return false;
+ },
+
+ isURLEncodedRequest: function(file, context)
+ {
+ var text = NetUtils.getPostText(file, context);
+ if (text && Str.hasPrefix(text.toLowerCase(), "content-type: application/x-www-form-urlencoded"))
+ return true;
+
+ var headerValue = NetUtils.findHeader(file.requestHeaders, "content-type");
+ return (headerValue &&
+ NetUtils.matchesContentType(headerValue, "application/x-www-form-urlencoded"));
+ },
+
+ isMultiPartRequest: function(file, context)
+ {
+ var text = NetUtils.getPostText(file, context);
+ if (text && Str.hasPrefix(text.toLowerCase(), "content-type: multipart/form-data"))
+ return true;
+ return false;
+ },
+
+ getMimeType: function(mimeType, uri)
+ {
+ // Get rid of optional charset, e.g. "text/html; charset=UTF-8".
+ // We need pure mime type so, we can use it as a key for look up.
+ if (mimeType)
+ mimeType = mimeType.split(";")[0];
+
+ // If the mime-type exists and is known just return it...
+ if (mimeType && mimeCategoryMap.hasOwnProperty(mimeType))
+ return mimeType;
+
+ // ... otherwise we need guess it according to the file extension.
+ var ext = Url.getFileExtension(uri);
+ if (!ext)
+ return mimeType;
+
+ var extMimeType = mimeExtensionMap[ext.toLowerCase()];
+ return extMimeType ? extMimeType : mimeType;
+ },
+
+ getDateFromSeconds: function(s)
+ {
+ var d = new Date();
+ d.setTime(s*1000);
+ return d;
+ },
+
+ getHttpHeaders: function(request, file, context)
+ {
+ if (!(request instanceof Ci.nsIHttpChannel))
+ return;
+
+ // xxxHonza: is there any problem to do this in requestedFile method?
+ file.method = request.requestMethod;
+ file.urlParams = Url.parseURLParams(file.href);
+
+ try
+ {
+ file.status = request.responseStatus;
+ }
+ catch (e) { }
+
+ try
+ {
+ file.mimeType = NetUtils.getMimeType(request.contentType, request.name);
+ }
+ catch (e) { }
+
+ try
+ {
+ if (!file.requestHeaders)
+ {
+ var requestHeaders = [];
+ request.visitRequestHeaders({
+ visitHeader: function(name, value)
+ {
+ requestHeaders.push({name: name, value: value});
+ }
+ });
+ file.requestHeaders = requestHeaders;
+ }
+ }
+ catch (e) { }
+
+ try
+ {
+ if (!file.responseHeaders)
+ {
+ var responseHeaders = [];
+ request.visitResponseHeaders({
+ visitHeader: function(name, value)
+ {
+ responseHeaders.push({name: name, value: value});
+ }
+ });
+ file.responseHeaders = responseHeaders;
+
+ if (context)
+ {
+ // Response haeaders are available now, dispatch an event to listeners
+ Events.dispatch(Firebug.NetMonitor.fbListeners, "onResponseHeaders",
+ [context, file]);
+ }
+ }
+ }
+ catch (e) { }
+ },
+
+ /**
+ * Returns a category for specific request (file). The logic is as follows:
+ * 1) Use file-extension to guess the mime type. This is prefered since
+ * mime-types in HTTP requests are often wrong.
+ * This part is based on mimeExtensionMap map.
+ * 2) If the file extension is missing or unknown, try to get the mime-type
+ * from the HTTP request object.
+ * 3) If there is still no mime-type, return empty category name.
+ * 4) Use the mime-type and look up the right category.
+ * This part is based on mimeCategoryMap map.
+ */
+ getFileCategory: function(file)
+ {
+ if (file.category)
+ return file.category;
+
+ // All XHRs have its own category.
+ if (file.isXHR)
+ return file.category = "xhr";
+
+ // Guess mime-type according to the file extension. Using file extension
+ // is prefered way since mime-types in HTTP requests are often wrong.
+ var mimeType = this.getMimeType(null, file.href);
+
+ // If no luck with file extension, let's try to get the mime-type from
+ // the request object.
+ if (!mimeType)
+ mimeType = this.getMimeType(file.mimeType, file.href);
+
+ // No mime-type, no category.
+ if (!mimeType)
+ return "";
+
+ // Finally, get the category according to the mime type.
+ return file.category = mimeCategoryMap[mimeType];
+ },
+
+ getPageTitle: function(context)
+ {
+ var title = context.getTitle();
+ return (title) ? title : context.getName();
+ },
+
+ getBlockingEndTime: function(file)
+ {
+ //var blockingEnd = (file.sendingTime > file.startTime) ? file.sendingTime : file.waitingForTime;
+
+ if (file.resolveStarted && file.connectStarted)
+ return file.resolvingTime;
+
+ if (file.connectStarted)
+ return file.connectingTime;
+
+ if (file.sendStarted)
+ return file.sendingTime;
+
+ return file.waitingForTime;
+ },
+
+ getTimeLabelFromMs: function(ms)
+ {
+ var time = new Date();
+ time.setTime(ms);
+ return this.getTimeLabel(time);
+ },
+
+ getTimeLabel: function(date)
+ {
+ var m = date.getMinutes() + "";
+ var s = date.getSeconds() + "";
+ var ms = date.getMilliseconds() + "";
+ return "[" + ((m.length > 1) ? m : "0" + m) + ":" +
+ ((s.length > 1) ? s : "0" + s) + "." +
+ ((ms.length > 2) ? ms : ((ms.length > 1) ? "0" + ms : "00" + ms)) + "]";
+ },
+
+ openResponseInTab: function(file)
+ {
+ try
+ {
+ var response = NetUtils.getResponseText(file, this.context);
+ var inputStream = Http.getInputStreamFromString(response);
+ var stream = Xpcom.CCIN("@mozilla.org/binaryinputstream;1", "nsIBinaryInputStream");
+ stream.setInputStream(inputStream);
+ var encodedResponse = btoa(stream.readBytes(stream.available()));
+ var dataURI = "data:" + file.request.contentType + ";base64," + encodedResponse;
+
+ var tabBrowser = Firefox.getTabBrowser();
+ tabBrowser.selectedTab = tabBrowser.addTab(dataURI);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("net.openResponseInTab EXCEPTION", err);
+ }
+ },
+
+ traceRequestTiming: function(msg, file)
+ {
+ var blockingEnd = this.getBlockingEndTime(file);
+
+ //Helper log for debugging timing problems.
+ var timeLog = {};
+ timeLog.startTime = this.getTimeLabelFromMs(file.startTime);
+ timeLog.resolvingTime = this.getTimeLabelFromMs(file.resolvingTime);
+ timeLog.connectingTime = this.getTimeLabelFromMs(file.connectingTime);
+ timeLog.connectedTime = this.getTimeLabelFromMs(file.connectedTime);
+ timeLog.blockingEnd = this.getTimeLabelFromMs(blockingEnd);
+ timeLog.sendingTime = this.getTimeLabelFromMs(file.sendingTime);
+ timeLog.waitingForTime = this.getTimeLabelFromMs(file.waitingForTime);
+ timeLog.respondedTime = this.getTimeLabelFromMs(file.respondedTime);
+ timeLog.endTime = this.getTimeLabelFromMs(file.endTime);
+
+ if (file.request instanceof Ci.nsITimedChannel)
+ {
+ timeLog.startTime += " - " + this.getTimeLabelFromMs(file.request.channelCreationTime/1000);
+ timeLog.startTime += this.getTimeLabelFromMs(file.request.asyncOpenTime/1000);
+ timeLog.resolvingTime += " - " + this.getTimeLabelFromMs(file.request.domainLookupStartTime/1000);
+ timeLog.resolvingTime += this.getTimeLabelFromMs(file.request.domainLookupEndTime/1000);
+ timeLog.connectingTime += " - " + this.getTimeLabelFromMs(file.request.connectStartTime/1000);
+ timeLog.connectedTime += " - " + this.getTimeLabelFromMs(file.request.connectEndTime/1000);
+ timeLog.sendingTime += " - " + this.getTimeLabelFromMs(file.request.requestStartTime/1000);
+ timeLog.respondedTime += " - " + this.getTimeLabelFromMs(file.request.responseStartTime/1000);
+ timeLog.endTime += " - " + this.getTimeLabelFromMs(file.request.responseEndTime/1000);
+ timeLog.cacheReadStartTime = this.getTimeLabelFromMs(file.request.cacheReadStartTime/1000);
+ timeLog.cacheReadEndTime = this.getTimeLabelFromMs(file.request.cacheReadEndTime/1000);
+ timeLog.timingEnabled = file.request.timingEnabled;
+ }
+
+ FBTrace.sysout(msg + " " + file.href, timeLog);
+ },
+
+ /**
+ * Returns a content-accessible 'real object' that is used by 'Inspect in DOM Panel'
+ * or 'Use in Command Line' features. Firebug is primarily a tool for web developers
+ * and thus shouldn't expose internal chrome objects.
+ */
+ getRealObject: function(file, context)
+ {
+ var global = context.getCurrentGlobal();
+ var clone = {};
+
+ function cloneHeaders(headers)
+ {
+ var newHeaders = [];
+ for (var i=0; headers && i<headers.length; i++)
+ {
+ var header = {name: headers[i].name, value: headers[i].value};
+ header = Wrapper.cloneIntoContentScope(global, header);
+ newHeaders.push(header);
+ }
+ return newHeaders;
+ }
+
+ // Iterate over all properties of the request object (nsIHttpChannel)
+ // and pick only those that are specified in 'requestProps' list.
+ var request = file.request;
+ for (var p in request)
+ {
+ if (!(p in requestProps))
+ continue;
+
+ try
+ {
+ clone[p] = request[p];
+ }
+ catch (err)
+ {
+ // xxxHonza: too much unnecessary output
+ //if (FBTrace.DBG_ERRORS)
+ // FBTrace.sysout("net.getRealObject EXCEPTION " + err, err);
+ }
+ }
+
+ // Additional props from |file|
+ clone.responseBody = file.responseText;
+ clone.postBody = file.postBody;
+ clone.requestHeaders = cloneHeaders(file.requestHeaders);
+ clone.responseHeaders = cloneHeaders(file.responseHeaders);
+
+ return Wrapper.cloneIntoContentScope(global, clone);
+ },
+
+ generateCurlCommand: function(file, addCompressedArgument)
+ {
+ var command = ["curl"];
+ var inferredMethod = "GET";
+
+ function escapeCharacter(x)
+ {
+ var code = x.charCodeAt(0);
+ if (code < 256)
+ {
+ // Add leading zero when needed to not care about the next character.
+ return code < 16 ? "\\x0" + code.toString(16) : "\\x" + code.toString(16);
+ }
+ code = code.toString(16);
+ return "\\u" + ("0000" + code).substr(code.length, 4);
+ }
+
+ function escape(str)
+ {
+ // String has unicode characters or single quotes
+ if (/[^\x20-\x7E]|'/.test(str))
+ {
+ // Use ANSI-C quoting syntax
+ return "$\'" + str.replace(/\\/g, "\\\\")
+ .replace(/'/g, "\\\'")
+ .replace(/\n/g, "\\n")
+ .replace(/\r/g, "\\r")
+ .replace(/[^\x20-\x7E]/g, escapeCharacter) + "'";
+ }
+ else
+ {
+ // Use single quote syntax.
+ return "'" + str + "'";
+ }
+ }
+
+ // Create data
+ var data = [];
+ var postText = NetUtils.getPostText(file, this.context, true);
+ var isURLEncodedRequest = NetUtils.isURLEncodedRequest(file, this.context);
+
+ if (postText && isURLEncodedRequest || file.method == "PUT")
+ {
+ var lines = postText.split("\n");
+ var params = lines[lines.length - 1];
+
+ data.push("--data");
+ data.push(escape(params));
+
+ inferredMethod = "POST";
+ }
+ else if (postText && NetUtils.isMultiPartRequest(file, this.context))
+ {
+ data.push("--data-binary");
+ data.push(escape(postText));
+
+ inferredMethod = "POST";
+ }
+
+ // Add URL
+ command.push(escape(file.href));
+
+ // Fix method if request is not a GET or POST request
+ if (file.method != inferredMethod)
+ {
+ command.push("-X");
+ command.push(file.method);
+ }
+
+ // Add request headers
+ var requestHeaders = file.requestHeaders;
+ var postRequestHeaders = Http.getHeadersFromPostText(file.request, postText);
+ var headers = requestHeaders.concat(postRequestHeaders);
+ for (var i=0; i<headers.length; i++)
+ {
+ var header = headers[i];
+
+ // Firefox and cURL creates the optional Content-Length header for POST and
+ // PUT requests. Omit adding this header as it is preferred to use the
+ // Content-Length cURL creates.
+ if (header.name.toLowerCase() == "content-length")
+ continue;
+
+ command.push("-H");
+ command.push(escape(header.name + ": " + header.value));
+ }
+
+ // Add data
+ command = command.concat(data);
+
+ // Add --compressed
+ if (addCompressedArgument)
+ command.push("--compressed");
+
+ return command.join(" ");
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return NetUtils;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/net/requestObserver.js b/content/firebug/net/requestObserver.js
index 5e31746..839ad4c 100644
--- a/content/firebug/net/requestObserver.js
+++ b/content/firebug/net/requestObserver.js
@@ -1,217 +1,217 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/xpcom",
- "firebug/lib/trace",
- "firebug/lib/string",
- "firebug/lib/http",
- "firebug/trace/traceModule",
- "firebug/trace/traceListener"
-],
-function(Xpcom, FBTrace, Str, Http, TraceModule, TraceListener) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-
-var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
-var categoryManager = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
-
-// ********************************************************************************************* //
-// HTTP Request Observer implementation
-
-/**
- * @service This service is intended as the only HTTP observer registered by Firebug.
- * All FB extensions and Firebug itself should register a listener within this
- * service in order to listen for http-on-modify-request, http-on-examine-response and
- * http-on-examine-cached-response events.
- *
- * See also: <a href="http://developer.mozilla.org/en/Setting_HTTP_request_headers">
- * Setting_HTTP_request_headers</a>
- */
-var HttpRequestObserver =
-/** lends HttpRequestObserver */
-{
- observers: [],
- observing: false,
-
- registerObservers: function()
- {
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.registerObservers; (" + this.observers.length + "), " +
- "active: " + this.observing, getObserverList());
-
- if (!this.observing)
- {
- observerService.addObserver(this, "http-on-opening-request", false);
- observerService.addObserver(this, "http-on-modify-request", false);
- observerService.addObserver(this, "http-on-examine-response", false);
- observerService.addObserver(this, "http-on-examine-cached-response", false);
- }
-
- this.observing = true;
- },
-
- unregisterObservers: function()
- {
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.unregisterObservers; (" + this.observers.length + "), " +
- "active: " + this.observing, getObserverList());
-
- if (this.observing)
- {
- observerService.removeObserver(this, "http-on-opening-request");
- observerService.removeObserver(this, "http-on-modify-request");
- observerService.removeObserver(this, "http-on-examine-response");
- observerService.removeObserver(this, "http-on-examine-cached-response");
- }
-
- this.observing = false;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // nsIObserver
-
- observe: function(subject, topic, data)
- {
- try
- {
- if (!(subject instanceof Ci.nsIHttpChannel))
- return;
-
- // Notify all registered observers.
- if (topic == "http-on-modify-request" ||
- topic == "http-on-examine-response" ||
- topic == "http-on-examine-cached-response" ||
- topic == "http-on-opening-request")
- {
- this.notifyObservers(subject, topic, data);
- }
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("httpObserver.observe EXCEPTION", err);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // nsIObserverService
-
- addObserver: function(observer, topic, weak)
- {
- if (!topic)
- topic = "firebug-http-event";
-
- if (topic != "firebug-http-event")
- throw Cr.NS_ERROR_INVALID_ARG;
-
- // Do not add an observer twice.
- for (var i=0; i<this.observers.length; i++)
- {
- if (this.observers[i] == observer)
- {
- // xxxHonza: firebug/debugger is registering itself more times,
- // not sure if it's on purpose, but it causes following error message:
- // Error: attempt to run compile-and-go script on a cleared scope
- // (on the first line of the observe method)
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.addObserver; ERROR? Observer already registered: " +
- observer.dispatchName, getObserverList());
- return;
- }
- }
-
- this.observers.push(observer);
-
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.addObserver; (" + this.observers.length +
- "), added: " + observer.dispatchName);
-
- if (this.observers.length > 0)
- this.registerObservers();
- },
-
- removeObserver: function(observer, topic)
- {
- if (!topic)
- topic = "firebug-http-event";
-
- if (topic != "firebug-http-event")
- throw Cr.NS_ERROR_INVALID_ARG;
-
- for (var i=0; i<this.observers.length; i++)
- {
- if (this.observers[i] == observer)
- {
- this.observers.splice(i, 1);
-
- if (this.observers.length == 0)
- this.unregisterObservers();
-
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.removeObserver; (" + this.observers.length +
- "), removed: " + observer.dispatchName, getObserverList());
- return;
- }
- }
-
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.removeObserver ERROR? (no such observer): " +
- observer.dispatchName);
- },
-
- notifyObservers: function(subject, topic, data)
- {
- if (FBTrace.DBG_HTTPOBSERVER)
- {
- FBTrace.sysout("httpObserver.notifyObservers (" + this.observers.length + ") " +
- (topic ? topic.toUpperCase() : topic) + ", " + Http.safeGetRequestName(subject),
- getObserverList());
- }
-
- for (var i=0; i<this.observers.length; i++)
- {
- var observer = this.observers[i];
- try
- {
- if (observer.observe)
- observer.observe(subject, topic, data);
- }
- catch (err)
- {
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.notifyObservers; EXCEPTION " + err, err);
- }
- }
- }
-};
-
-// ********************************************************************************************* //
-// Tracing Support
-
-function getObserverList()
-{
- var observerNames = [];
- for (var i=0; i<HttpRequestObserver.observers.length; i++)
- observerNames.push(HttpRequestObserver.observers[i].dispatchName);
-
- return observerNames;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-// Compatibility with Firebug 1.7 extensions: deprecated, obsolete
-FBL.httpObserver = HttpRequestObserver;
-
-// xxxHonza: Do we need to remove the listener?
-TraceModule.addListener(new TraceListener("httpObserver.", "DBG_HTTPOBSERVER", true));
-
-return HttpRequestObserver;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/xpcom",
+ "firebug/lib/trace",
+ "firebug/lib/string",
+ "firebug/lib/http",
+ "firebug/trace/traceModule",
+ "firebug/trace/traceListener"
+],
+function(Xpcom, FBTrace, Str, Http, TraceModule, TraceListener) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+
+var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
+var categoryManager = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
+
+// ********************************************************************************************* //
+// HTTP Request Observer implementation
+
+/**
+ * @service This service is intended as the only HTTP observer registered by Firebug.
+ * All FB extensions and Firebug itself should register a listener within this
+ * service in order to listen for http-on-modify-request, http-on-examine-response and
+ * http-on-examine-cached-response events.
+ *
+ * See also: <a href="http://developer.mozilla.org/en/Setting_HTTP_request_headers">
+ * Setting_HTTP_request_headers</a>
+ */
+var HttpRequestObserver =
+/** lends HttpRequestObserver */
+{
+ observers: [],
+ observing: false,
+
+ registerObservers: function()
+ {
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.registerObservers; (" + this.observers.length + "), " +
+ "active: " + this.observing, getObserverList());
+
+ if (!this.observing)
+ {
+ observerService.addObserver(this, "http-on-opening-request", false);
+ observerService.addObserver(this, "http-on-modify-request", false);
+ observerService.addObserver(this, "http-on-examine-response", false);
+ observerService.addObserver(this, "http-on-examine-cached-response", false);
+ }
+
+ this.observing = true;
+ },
+
+ unregisterObservers: function()
+ {
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.unregisterObservers; (" + this.observers.length + "), " +
+ "active: " + this.observing, getObserverList());
+
+ if (this.observing)
+ {
+ observerService.removeObserver(this, "http-on-opening-request");
+ observerService.removeObserver(this, "http-on-modify-request");
+ observerService.removeObserver(this, "http-on-examine-response");
+ observerService.removeObserver(this, "http-on-examine-cached-response");
+ }
+
+ this.observing = false;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // nsIObserver
+
+ observe: function(subject, topic, data)
+ {
+ try
+ {
+ if (!(subject instanceof Ci.nsIHttpChannel))
+ return;
+
+ // Notify all registered observers.
+ if (topic == "http-on-modify-request" ||
+ topic == "http-on-examine-response" ||
+ topic == "http-on-examine-cached-response" ||
+ topic == "http-on-opening-request")
+ {
+ this.notifyObservers(subject, topic, data);
+ }
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("httpObserver.observe EXCEPTION", err);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // nsIObserverService
+
+ addObserver: function(observer, topic, weak)
+ {
+ if (!topic)
+ topic = "firebug-http-event";
+
+ if (topic != "firebug-http-event")
+ throw Cr.NS_ERROR_INVALID_ARG;
+
+ // Do not add an observer twice.
+ for (var i=0; i<this.observers.length; i++)
+ {
+ if (this.observers[i] == observer)
+ {
+ // xxxHonza: firebug/debugger is registering itself more times,
+ // not sure if it's on purpose, but it causes following error message:
+ // Error: attempt to run compile-and-go script on a cleared scope
+ // (on the first line of the observe method)
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.addObserver; ERROR? Observer already registered: " +
+ observer.dispatchName, getObserverList());
+ return;
+ }
+ }
+
+ this.observers.push(observer);
+
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.addObserver; (" + this.observers.length +
+ "), added: " + observer.dispatchName);
+
+ if (this.observers.length > 0)
+ this.registerObservers();
+ },
+
+ removeObserver: function(observer, topic)
+ {
+ if (!topic)
+ topic = "firebug-http-event";
+
+ if (topic != "firebug-http-event")
+ throw Cr.NS_ERROR_INVALID_ARG;
+
+ for (var i=0; i<this.observers.length; i++)
+ {
+ if (this.observers[i] == observer)
+ {
+ this.observers.splice(i, 1);
+
+ if (this.observers.length == 0)
+ this.unregisterObservers();
+
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.removeObserver; (" + this.observers.length +
+ "), removed: " + observer.dispatchName, getObserverList());
+ return;
+ }
+ }
+
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.removeObserver ERROR? (no such observer): " +
+ observer.dispatchName);
+ },
+
+ notifyObservers: function(subject, topic, data)
+ {
+ if (FBTrace.DBG_HTTPOBSERVER)
+ {
+ FBTrace.sysout("httpObserver.notifyObservers (" + this.observers.length + ") " +
+ (topic ? topic.toUpperCase() : topic) + ", " + Http.safeGetRequestName(subject),
+ getObserverList());
+ }
+
+ for (var i=0; i<this.observers.length; i++)
+ {
+ var observer = this.observers[i];
+ try
+ {
+ if (observer.observe)
+ observer.observe(subject, topic, data);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.notifyObservers; EXCEPTION " + err, err);
+ }
+ }
+ }
+};
+
+// ********************************************************************************************* //
+// Tracing Support
+
+function getObserverList()
+{
+ var observerNames = [];
+ for (var i=0; i<HttpRequestObserver.observers.length; i++)
+ observerNames.push(HttpRequestObserver.observers[i].dispatchName);
+
+ return observerNames;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+// Compatibility with Firebug 1.7 extensions: deprecated, obsolete
+FBL.httpObserver = HttpRequestObserver;
+
+// xxxHonza: Do we need to remove the listener?
+TraceModule.addListener(new TraceListener("httpObserver.", "DBG_HTTPOBSERVER", true));
+
+return HttpRequestObserver;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/net/responseObserver.js b/content/firebug/net/responseObserver.js
index 72673a3..f330a7e 100644
--- a/content/firebug/net/responseObserver.js
+++ b/content/firebug/net/responseObserver.js
@@ -1,397 +1,397 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/xpcom",
- "firebug/lib/trace",
- "firebug/lib/http"
-],
-function(Xpcom, FBTrace, Http) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-const Cu = Components.utils;
-
-const PrefService = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
-var redirectionLimit = PrefService.getIntPref("network.http.redirection-limit");
-
-// ********************************************************************************************* //
-// ChannelListener implementation
-
-/**
- * This object implements nsIStreamListener interface and is intended to monitor all network
- * channels (nsIHttpChannel). A new instance of this object is created and registered an HTTP
- * channel. See Firebug.TabCacheModel.onExamineResponse method.
- */
-function ChannelListener(win, request, listener)
-/** lends ChannelListener */
-{
- this.window = win;
- this.request = request;
- this.proxyListener = listener;
-
- this.endOfLine = false;
- this.ignore = false;
-
- // The original channel listener (see nsITraceableChannel for more).
- this.listener = null;
-
- // The response will be written into the outputStream of this pipe.
- // Both ends of the pipe must be blocking.
- this.sink = Xpcom.CCIN("@mozilla.org/pipe;1", "nsIPipe");
- this.sink.init(false, false, 0x20000, 0x4000, null);
-
- // Remember the input stream, so it isn't released by GC.
- // See issue 2788 for more details.
- this.inputStream = this.sink.inputStream;
-
- this.downloadCounter = 0;
-
- // Add tee listener into the chain of request stream listeners so, the chain
- // doesn't include a JS code. This way all exceptions are propertly distributed
- // (#515051).
- var tee = Xpcom.CCIN("@mozilla.org/network/stream-listener-tee;1", "nsIStreamListenerTee");
- tee = tee.QueryInterface(Ci.nsIStreamListenerTee);
-
- var originalListener = request.setNewListener(tee);
- tee.init(originalListener, this.sink.outputStream, this);
-}
-
-ChannelListener.prototype =
-{
- setAsyncListener: function(request, stream, listener)
- {
- try
- {
- // xxxHonza: is there any other way how to find out the stream is closed?
- // Throws NS_BASE_STREAM_CLOSED if the stream is closed normally or at end-of-file.
- var available = stream.available();
- }
- catch (err)
- {
- if (err.name == "NS_BASE_STREAM_CLOSED")
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("ChannelListener.setAsyncListener; " +
- "Don't set, the stream is closed.");
- return;
- }
-
- if (FBTrace.DBG_CACHE || FBTrace.DBG_ERRORS)
- FBTrace.sysout("ChannelListener.setAsyncListener; EXCEPTION " +
- Http.safeGetRequestName(request), err);
- return;
- }
-
- try
- {
- // Asynchronously wait for the stream to be readable or closed.
- stream.asyncWait(listener, 0, 0, null);
- }
- catch (err)
- {
- if (FBTrace.DBG_CACHE || FBTrace.DBG_ERRORS)
- FBTrace.sysout("ChannelListener.setAsyncListener; EXCEPTION " +
- Http.safeGetRequestName(request), err);
- }
- },
-
- onCollectData: function(request, context, inputStream, offset, count)
- {
- if (FBTrace.DBG_CACHE && this.ignore)
- FBTrace.sysout("ChannelListener.onCollectData; IGNORE stopping further onCollectData");
-
- try
- {
- if (this.sink)
- {
- var bis = Xpcom.CCIN("@mozilla.org/binaryinputstream;1", "nsIBinaryInputStream");
- bis.setInputStream(inputStream);
- var data = bis.readBytes(count);
-
- // Data from the pipe has been consumed (to avoid mem leaks) so, we can end now.
- if (this.ignore)
- return;
- }
- else
- {
- // In this case, we don't need to read the data.
- if (this.ignore)
- return;
-
- var binaryInputStream =
- Xpcom.CCIN("@mozilla.org/binaryinputstream;1", "nsIBinaryInputStream");
- var storageStream =
- Xpcom.CCIN("@mozilla.org/storagestream;1", "nsIStorageStream");
- var binaryOutputStream =
- Xpcom.CCIN("@mozilla.org/binaryoutputstream;1", "nsIBinaryOutputStream");
-
- binaryInputStream.setInputStream(inputStream);
- storageStream.init(8192, count, null);
- binaryOutputStream.setOutputStream(storageStream.getOutputStream(0));
-
- var data = binaryInputStream.readBytes(count);
- binaryOutputStream.writeBytes(data, count);
- }
-
- // Avoid creating additional empty line if response comes in more pieces
- // and the split is made just between "\r" and "\n" (Win line-end).
- // So, if the response starts with "\n" while the previous part ended with "\r",
- // remove the first character.
- if (this.endOfLine && data.length && data[0] == "\n")
- data = data.substring(1);
-
- if (data.length)
- this.endOfLine = data[data.length-1] == "\r";
-
- // If the method returns false, the rest of the response is ignored (not cached).
- // This is used to limit size of a cached response.
- if (!this.proxyListener.onCollectData(request, data, offset))
- {
- this.ignore = true;
- }
-
- // Let other listeners use the stream.
- if (storageStream)
- return storageStream.newInputStream(0);
- }
- catch (err)
- {
- if (FBTrace.DBG_CACHE || FBTrace.DBG_ERRORS)
- FBTrace.sysout("ChannelListener.onCollectData EXCEPTION\n", err);
- }
-
- return null;
- },
-
- /* nsIStreamListener */
- onDataAvailable: function(request, requestContext, inputStream, offset, count)
- {
- try
- {
- // Force a garbage collection cycle, see:
- // https://bugzilla.mozilla.org/show_bug.cgi?id=638075
- this.downloadCounter += count;
- if (this.downloadCounter > (1024*1024*2))
- {
- this.downloadCounter = 0;
- Cu.forceGC();
- }
-
- var newStream = this.proxyListener.onDataAvailable(request, requestContext,
- inputStream, offset, count);
-
- if (newStream)
- inputStream = newStream;
-
- newStream = this.onCollectData(request, null, inputStream, offset, count);
- if (newStream)
- inputStream = newStream;
- }
- catch (err)
- {
- if (FBTrace.DBG_CACHE || FBTrace.DBG_ERRORS)
- FBTrace.sysout("ChannelListener.onDataAvailable onCollectData FAILS " +
- "(" + offset + ", " + count + ") EXCEPTION: " +
- Http.safeGetRequestName(request), err);
- }
-
- if (this.listener)
- {
- try // https://bugzilla.mozilla.org/show_bug.cgi?id=492534
- {
- this.listener.onDataAvailable(request, requestContext, inputStream, offset, count);
- }
- catch(exc)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("ChannelListener.onDataAvailable canceling request at " +
- "(" + offset + ", " + count + ") EXCEPTION: " +
- Http.safeGetRequestName(request), exc);
-
- request.cancel(exc.result);
- }
- }
- },
-
- onStartRequest: function(request, requestContext)
- {
- try
- {
- this.request = request.QueryInterface(Ci.nsIHttpChannel);
-
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("ChannelListener.onStartRequest; " +
- this.request.contentType + ", " + Http.safeGetRequestName(this.request));
-
- // Don't register listener twice (redirects, see also bug529536).
- // xxxHonza: I don't know any way how to find out that a listener
- // has been already registered for the channel. So, use the redirection limit
- // to see that the channel has been redirected and so, listener is there.
- if (request.redirectionLimit < redirectionLimit)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("ChannelListener.onStartRequest; redirected request " +
- request.redirectionLimit + " (max=" + redirectionLimit + ")");
- return;
- }
-
- // Due to #489317, the check whether this response should be cached
- // must be done here (the content type is not valid before calling
- // onStartRequest). Let's ignore the response if it should not be cached.
- this.ignore = !this.proxyListener.shouldCacheRequest(request);
-
- // Notify proxy listener.
- this.proxyListener.onStartRequest(request, requestContext);
-
- // Listen for incoming data.
- if (FBTrace.DBG_CACHE && !this.sink)
- FBTrace.sysout("ChannelListener.onStartRequest NO SINK stopping setAsyncListener");
-
- if (FBTrace.DBG_CACHE && this.ignore && this.sink)
- FBTrace.sysout("ChannelListener.onStartRequest IGNORE(shouldCacheRequest) " +
- "stopping setAsyncListener");
-
- // Even if the response is marked as ignored we need to read the sink
- // to avoid mem leaks.
- if (this.sink)
- this.setAsyncListener(request, this.sink.inputStream, this);
- }
- catch (err)
- {
- if (FBTrace.DBG_CACHE || FBTrace.DBG_ERRORS)
- FBTrace.sysout("ChannelListener.onStartRequest EXCEPTION\n", err);
- }
-
- if (this.listener)
- {
- try // https://bugzilla.mozilla.org/show_bug.cgi?id=492534
- {
- this.listener.onStartRequest(request, requestContext);
- }
- catch(exc)
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("ChannelListener.onStartRequest canceling request " +
- "EXCEPTION: " + Http.safeGetRequestName(request), exc);
-
- request.cancel(exc.result);
- }
- }
- },
-
- onStopRequest: function(request, requestContext, statusCode)
- {
- try
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("ChannelListener.onStopRequest; " +
- request.contentType + ", " + Http.safeGetRequestName(request));
-
- this.proxyListener.onStopRequest(request, requestContext, statusCode);
- }
- catch (err)
- {
- if (FBTrace.DBG_CACHE || FBTrace.DBG_ERRORS)
- FBTrace.sysout("ChannelListener.onStopRequest EXCEPTION\n", err);
- }
-
- // The request body has been downloaded. Remove the listener (the last parameter
- // is null) since it's not needed now.
- if (this.sink)
- this.setAsyncListener(request, this.sink.inputStream, null);
-
- if (this.listener)
- this.listener.onStopRequest(request, requestContext, statusCode);
- },
-
- /* nsITraceableChannel */
- setNewListener: function(listener)
- {
- this.proxyListener = listener;
- return null;
- },
-
- /* nsIInputStreamCallback */
- onInputStreamReady : function(stream)
- {
- try
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("ChannelListener.onInputStreamReady " +
- Http.safeGetRequestName(this.request));
-
- if (stream instanceof Ci.nsIAsyncInputStream)
- {
- try
- {
- var offset = stream.tell();
- var available = stream.available();
- this.onDataAvailable(this.request, null, stream, offset, available);
- }
- catch (err)
- {
- // stream.available throws an exception if the stream is closed,
- // which is ok, since this callback can be called even in this
- // situations.
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("ChannelListener.onInputStreamReady EXCEPTION calling onDataAvailable: " +
- Http.safeGetRequestName(this.request), err);
- }
-
- // Listen for further incoming data.
- if (FBTrace.DBG_CACHE && this.ignore)
- FBTrace.sysout("ChannelListener.onInputStreamReady IGNORE stopping setAsyncListener");
-
- this.setAsyncListener(this.request, stream, this);
- }
- else
- {
- if (FBTrace.DBG_CACHE)
- FBTrace.sysout("ChannelListener.onInputStreamReady NOT a nsIAsyncInputStream",stream);
- }
- }
- catch (err)
- {
- if (FBTrace.DBG_CACHE || FBTrace.DBG_ERRORS)
- FBTrace.sysout("ChannelListener.onInputStreamReady EXCEPTION " +
- Http.safeGetRequestName(this.request), err);
- }
- },
-
- /* nsISupports */
- QueryInterface: function(iid)
- {
- if (iid.equals(Ci.nsIStreamListener) ||
- iid.equals(Ci.nsIInputStreamCallback) ||
- iid.equals(Ci.nsISupportsWeakReference) ||
- iid.equals(Ci.nsITraceableChannel) ||
- iid.equals(Ci.nsISupports))
- {
- return this;
- }
-
- throw Components.results.NS_NOINTERFACE;
- }
-};
-
-// ********************************************************************************************* //
-
-var HttpResponseObserver =
-{
- register: function(win, request, listener)
- {
- if (request instanceof Ci.nsITraceableChannel)
- return new ChannelListener(win, request, listener);
-
- return null;
- }
-};
-
-return HttpResponseObserver;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/xpcom",
+ "firebug/lib/trace",
+ "firebug/lib/http"
+],
+function(Xpcom, FBTrace, Http) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+const Cu = Components.utils;
+
+const PrefService = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
+var redirectionLimit = PrefService.getIntPref("network.http.redirection-limit");
+
+// ********************************************************************************************* //
+// ChannelListener implementation
+
+/**
+ * This object implements nsIStreamListener interface and is intended to monitor all network
+ * channels (nsIHttpChannel). A new instance of this object is created and registered an HTTP
+ * channel. See Firebug.TabCacheModel.onExamineResponse method.
+ */
+function ChannelListener(win, request, listener)
+/** lends ChannelListener */
+{
+ this.window = win;
+ this.request = request;
+ this.proxyListener = listener;
+
+ this.endOfLine = false;
+ this.ignore = false;
+
+ // The original channel listener (see nsITraceableChannel for more).
+ this.listener = null;
+
+ // The response will be written into the outputStream of this pipe.
+ // Both ends of the pipe must be blocking.
+ this.sink = Xpcom.CCIN("@mozilla.org/pipe;1", "nsIPipe");
+ this.sink.init(false, false, 0x20000, 0x4000, null);
+
+ // Remember the input stream, so it isn't released by GC.
+ // See issue 2788 for more details.
+ this.inputStream = this.sink.inputStream;
+
+ this.downloadCounter = 0;
+
+ // Add tee listener into the chain of request stream listeners so, the chain
+ // doesn't include a JS code. This way all exceptions are propertly distributed
+ // (#515051).
+ var tee = Xpcom.CCIN("@mozilla.org/network/stream-listener-tee;1", "nsIStreamListenerTee");
+ tee = tee.QueryInterface(Ci.nsIStreamListenerTee);
+
+ var originalListener = request.setNewListener(tee);
+ tee.init(originalListener, this.sink.outputStream, this);
+}
+
+ChannelListener.prototype =
+{
+ setAsyncListener: function(request, stream, listener)
+ {
+ try
+ {
+ // xxxHonza: is there any other way how to find out the stream is closed?
+ // Throws NS_BASE_STREAM_CLOSED if the stream is closed normally or at end-of-file.
+ var available = stream.available();
+ }
+ catch (err)
+ {
+ if (err.name == "NS_BASE_STREAM_CLOSED")
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("ChannelListener.setAsyncListener; " +
+ "Don't set, the stream is closed.");
+ return;
+ }
+
+ if (FBTrace.DBG_CACHE || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("ChannelListener.setAsyncListener; EXCEPTION " +
+ Http.safeGetRequestName(request), err);
+ return;
+ }
+
+ try
+ {
+ // Asynchronously wait for the stream to be readable or closed.
+ stream.asyncWait(listener, 0, 0, null);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_CACHE || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("ChannelListener.setAsyncListener; EXCEPTION " +
+ Http.safeGetRequestName(request), err);
+ }
+ },
+
+ onCollectData: function(request, context, inputStream, offset, count)
+ {
+ if (FBTrace.DBG_CACHE && this.ignore)
+ FBTrace.sysout("ChannelListener.onCollectData; IGNORE stopping further onCollectData");
+
+ try
+ {
+ if (this.sink)
+ {
+ var bis = Xpcom.CCIN("@mozilla.org/binaryinputstream;1", "nsIBinaryInputStream");
+ bis.setInputStream(inputStream);
+ var data = bis.readBytes(count);
+
+ // Data from the pipe has been consumed (to avoid mem leaks) so, we can end now.
+ if (this.ignore)
+ return;
+ }
+ else
+ {
+ // In this case, we don't need to read the data.
+ if (this.ignore)
+ return;
+
+ var binaryInputStream =
+ Xpcom.CCIN("@mozilla.org/binaryinputstream;1", "nsIBinaryInputStream");
+ var storageStream =
+ Xpcom.CCIN("@mozilla.org/storagestream;1", "nsIStorageStream");
+ var binaryOutputStream =
+ Xpcom.CCIN("@mozilla.org/binaryoutputstream;1", "nsIBinaryOutputStream");
+
+ binaryInputStream.setInputStream(inputStream);
+ storageStream.init(8192, count, null);
+ binaryOutputStream.setOutputStream(storageStream.getOutputStream(0));
+
+ var data = binaryInputStream.readBytes(count);
+ binaryOutputStream.writeBytes(data, count);
+ }
+
+ // Avoid creating additional empty line if response comes in more pieces
+ // and the split is made just between "\r" and "\n" (Win line-end).
+ // So, if the response starts with "\n" while the previous part ended with "\r",
+ // remove the first character.
+ if (this.endOfLine && data.length && data[0] == "\n")
+ data = data.substring(1);
+
+ if (data.length)
+ this.endOfLine = data[data.length-1] == "\r";
+
+ // If the method returns false, the rest of the response is ignored (not cached).
+ // This is used to limit size of a cached response.
+ if (!this.proxyListener.onCollectData(request, data, offset))
+ {
+ this.ignore = true;
+ }
+
+ // Let other listeners use the stream.
+ if (storageStream)
+ return storageStream.newInputStream(0);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_CACHE || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("ChannelListener.onCollectData EXCEPTION\n", err);
+ }
+
+ return null;
+ },
+
+ /* nsIStreamListener */
+ onDataAvailable: function(request, requestContext, inputStream, offset, count)
+ {
+ try
+ {
+ // Force a garbage collection cycle, see:
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=638075
+ this.downloadCounter += count;
+ if (this.downloadCounter > (1024*1024*2))
+ {
+ this.downloadCounter = 0;
+ Cu.forceGC();
+ }
+
+ var newStream = this.proxyListener.onDataAvailable(request, requestContext,
+ inputStream, offset, count);
+
+ if (newStream)
+ inputStream = newStream;
+
+ newStream = this.onCollectData(request, null, inputStream, offset, count);
+ if (newStream)
+ inputStream = newStream;
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_CACHE || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("ChannelListener.onDataAvailable onCollectData FAILS " +
+ "(" + offset + ", " + count + ") EXCEPTION: " +
+ Http.safeGetRequestName(request), err);
+ }
+
+ if (this.listener)
+ {
+ try // https://bugzilla.mozilla.org/show_bug.cgi?id=492534
+ {
+ this.listener.onDataAvailable(request, requestContext, inputStream, offset, count);
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("ChannelListener.onDataAvailable canceling request at " +
+ "(" + offset + ", " + count + ") EXCEPTION: " +
+ Http.safeGetRequestName(request), exc);
+
+ request.cancel(exc.result);
+ }
+ }
+ },
+
+ onStartRequest: function(request, requestContext)
+ {
+ try
+ {
+ this.request = request.QueryInterface(Ci.nsIHttpChannel);
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("ChannelListener.onStartRequest; " +
+ this.request.contentType + ", " + Http.safeGetRequestName(this.request));
+
+ // Don't register listener twice (redirects, see also bug529536).
+ // xxxHonza: I don't know any way how to find out that a listener
+ // has been already registered for the channel. So, use the redirection limit
+ // to see that the channel has been redirected and so, listener is there.
+ if (request.redirectionLimit < redirectionLimit)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("ChannelListener.onStartRequest; redirected request " +
+ request.redirectionLimit + " (max=" + redirectionLimit + ")");
+ return;
+ }
+
+ // Due to #489317, the check whether this response should be cached
+ // must be done here (the content type is not valid before calling
+ // onStartRequest). Let's ignore the response if it should not be cached.
+ this.ignore = !this.proxyListener.shouldCacheRequest(request);
+
+ // Notify proxy listener.
+ this.proxyListener.onStartRequest(request, requestContext);
+
+ // Listen for incoming data.
+ if (FBTrace.DBG_CACHE && !this.sink)
+ FBTrace.sysout("ChannelListener.onStartRequest NO SINK stopping setAsyncListener");
+
+ if (FBTrace.DBG_CACHE && this.ignore && this.sink)
+ FBTrace.sysout("ChannelListener.onStartRequest IGNORE(shouldCacheRequest) " +
+ "stopping setAsyncListener");
+
+ // Even if the response is marked as ignored we need to read the sink
+ // to avoid mem leaks.
+ if (this.sink)
+ this.setAsyncListener(request, this.sink.inputStream, this);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_CACHE || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("ChannelListener.onStartRequest EXCEPTION\n", err);
+ }
+
+ if (this.listener)
+ {
+ try // https://bugzilla.mozilla.org/show_bug.cgi?id=492534
+ {
+ this.listener.onStartRequest(request, requestContext);
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("ChannelListener.onStartRequest canceling request " +
+ "EXCEPTION: " + Http.safeGetRequestName(request), exc);
+
+ request.cancel(exc.result);
+ }
+ }
+ },
+
+ onStopRequest: function(request, requestContext, statusCode)
+ {
+ try
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("ChannelListener.onStopRequest; " +
+ request.contentType + ", " + Http.safeGetRequestName(request));
+
+ this.proxyListener.onStopRequest(request, requestContext, statusCode);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_CACHE || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("ChannelListener.onStopRequest EXCEPTION\n", err);
+ }
+
+ // The request body has been downloaded. Remove the listener (the last parameter
+ // is null) since it's not needed now.
+ if (this.sink)
+ this.setAsyncListener(request, this.sink.inputStream, null);
+
+ if (this.listener)
+ this.listener.onStopRequest(request, requestContext, statusCode);
+ },
+
+ /* nsITraceableChannel */
+ setNewListener: function(listener)
+ {
+ this.proxyListener = listener;
+ return null;
+ },
+
+ /* nsIInputStreamCallback */
+ onInputStreamReady : function(stream)
+ {
+ try
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("ChannelListener.onInputStreamReady " +
+ Http.safeGetRequestName(this.request));
+
+ if (stream instanceof Ci.nsIAsyncInputStream)
+ {
+ try
+ {
+ var offset = stream.tell();
+ var available = stream.available();
+ this.onDataAvailable(this.request, null, stream, offset, available);
+ }
+ catch (err)
+ {
+ // stream.available throws an exception if the stream is closed,
+ // which is ok, since this callback can be called even in this
+ // situations.
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("ChannelListener.onInputStreamReady EXCEPTION calling onDataAvailable: " +
+ Http.safeGetRequestName(this.request), err);
+ }
+
+ // Listen for further incoming data.
+ if (FBTrace.DBG_CACHE && this.ignore)
+ FBTrace.sysout("ChannelListener.onInputStreamReady IGNORE stopping setAsyncListener");
+
+ this.setAsyncListener(this.request, stream, this);
+ }
+ else
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("ChannelListener.onInputStreamReady NOT a nsIAsyncInputStream",stream);
+ }
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_CACHE || FBTrace.DBG_ERRORS)
+ FBTrace.sysout("ChannelListener.onInputStreamReady EXCEPTION " +
+ Http.safeGetRequestName(this.request), err);
+ }
+ },
+
+ /* nsISupports */
+ QueryInterface: function(iid)
+ {
+ if (iid.equals(Ci.nsIStreamListener) ||
+ iid.equals(Ci.nsIInputStreamCallback) ||
+ iid.equals(Ci.nsISupportsWeakReference) ||
+ iid.equals(Ci.nsITraceableChannel) ||
+ iid.equals(Ci.nsISupports))
+ {
+ return this;
+ }
+
+ throw Components.results.NS_NOINTERFACE;
+ }
+};
+
+// ********************************************************************************************* //
+
+var HttpResponseObserver =
+{
+ register: function(win, request, listener)
+ {
+ if (request instanceof Ci.nsITraceableChannel)
+ return new ChannelListener(win, request, listener);
+
+ return null;
+ }
+};
+
+return HttpResponseObserver;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/net/spy.js b/content/firebug/net/spy.js
index 737a6ed..e497476 100644
--- a/content/firebug/net/spy.js
+++ b/content/firebug/net/spy.js
@@ -1,1376 +1,1376 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/chrome/reps",
- "firebug/lib/events",
- "firebug/net/requestObserver",
- "firebug/js/stackFrame",
- "firebug/lib/http",
- "firebug/lib/css",
- "firebug/lib/dom",
- "firebug/chrome/window",
- "firebug/lib/system",
- "firebug/lib/string",
- "firebug/lib/url",
- "firebug/lib/array",
- "firebug/trace/debug",
- "firebug/net/httpActivityObserver",
- "firebug/net/netUtils",
- "firebug/trace/traceListener",
- "firebug/trace/traceModule",
- "firebug/lib/wrapper",
- "firebug/lib/options",
- "firebug/net/netPanel",
- "firebug/console/errors"
-],
-function(Obj, Firebug, Domplate, FirebugReps, Events, HttpRequestObserver, StackFrame,
- Http, Css, Dom, Win, System, Str, Url, Arr, Debug, NetHttpActivityObserver, NetUtils,
- TraceListener, TraceModule, Wrapper, Options) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-var eventListenerService = Cc["@mozilla.org/eventlistenerservice;1"].
- getService(Ci.nsIEventListenerService);
-
-// List of contexts with XHR spy attached.
-var contexts = [];
-
-var redirectionLimit = Options.getPref("network.http", "redirection-limit");
-
-// ********************************************************************************************* //
-// Spy Module
-
-/**
- * @module Represents a XHR Spy module. The main purpose of the XHR Spy feature is to monitor
- * XHR activity of the current page and create appropriate log into the Console panel.
- * This feature can be controlled by an option <i>Show XMLHttpRequests</i> (from within the
- * console panel).
- *
- * The module is responsible for attaching/detaching a HTTP Observers when Firebug is
- * activated/deactivated for a site.
- */
-Firebug.Spy = Obj.extend(Firebug.Module,
-/** @lends Firebug.Spy */
-{
- dispatchName: "spy",
-
- initialize: function()
- {
- this.traceListener = new TraceListener("spy.", "DBG_SPY", true);
- TraceModule.addListener(this.traceListener);
-
- Firebug.Module.initialize.apply(this, arguments);
- },
-
- shutdown: function()
- {
- Firebug.Module.shutdown.apply(this, arguments);
-
- TraceModule.removeListener(this.traceListener);
- },
-
- initContext: function(context)
- {
- context.spies = [];
-
- if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
- this.attachObserver(context, context.window);
-
- if (FBTrace.DBG_SPY)
- FBTrace.sysout("spy.initContext " + contexts.length + " ", context.getName());
- },
-
- destroyContext: function(context)
- {
- // For any spies that are in progress, remove our listeners so that they don't leak
- this.detachObserver(context, null);
-
- if (FBTrace.DBG_SPY && context.spies && context.spies.length)
- {
- FBTrace.sysout("spy.destroyContext; ERROR There are spies in progress ("
- + context.spies.length + ") " + context.getName());
- }
-
- // Make sure that all Spies in progress are detached at this moment.
- // Clone the array beforehand since the spy object is removed from the
- // original array within detach.
- var spies = context.spies ? Arr.cloneArray(context.spies) : [];
- for (var i=0; i<spies.length; i++)
- spies[i].detach(true);
-
- delete context.spies;
-
- SpyHttpActivityObserver.cleanUp(context.window);
-
- if (FBTrace.DBG_SPY)
- FBTrace.sysout("spy.destroyContext " + contexts.length + " ", context.getName());
- },
-
- watchWindow: function(context, win)
- {
- if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
- this.attachObserver(context, win);
- },
-
- unwatchWindow: function(context, win)
- {
- if (FBTrace.DBG_SPY)
- FBTrace.sysout("spy.unwatchWindow; " + (context ? context.getName() : "no context"));
-
- try
- {
- // This make sure that the existing context is properly removed from "contexts" array.
- this.detachObserver(context, win);
-
- SpyHttpActivityObserver.cleanUp(win);
- }
- catch (ex)
- {
- // Get exceptions here sometimes, so let's just ignore them
- // since the window is going away anyhow
- Debug.ERROR(ex);
- }
- },
-
- updateOption: function(name, value)
- {
- // XXXjjb Honza, if Console.isEnabled(context) false, then this can't be called,
- // but somehow seems not correct
-
- // XHR Spy needs to be detached/attached when:
- // 1) The Show XMLHttpRequests options is off/on
- // 2) The Console panel is disabled/enabled
- // See also issue 5109
- if (name == "showXMLHttpRequests" || name == "console.enableSites")
- {
- var tach = value ? this.attachObserver : this.detachObserver;
-
- Firebug.connection.eachContext(function tachAll(context)
- {
- Win.iterateWindows(context.window, function(win)
- {
- tach.apply(this, [context, win]);
- });
- });
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Attaching Spy to XHR requests.
-
- /**
- * Returns false if Spy should not be attached to XHRs executed by the specified window.
- */
- skipSpy: function(win)
- {
- if (!win)
- return true;
-
- // Don't attach spy to chrome.
- var uri = Win.safeGetWindowLocation(win);
- if (uri && (Str.hasPrefix(uri, "about:") || Str.hasPrefix(uri, "chrome:")))
- return true;
- },
-
- attachObserver: function(context, win)
- {
- if (Firebug.Spy.skipSpy(win))
- return;
-
- for (var i=0; i<contexts.length; ++i)
- {
- if ((contexts[i].context == context) && (contexts[i].win == win))
- return;
- }
-
- // Register HTTP observers only once.
- if (contexts.length == 0)
- {
- HttpRequestObserver.addObserver(SpyHttpObserver, "firebug-http-event", false);
- SpyHttpActivityObserver.registerObserver();
- }
-
- contexts.push({context: context, win: win});
-
- if (FBTrace.DBG_SPY)
- FBTrace.sysout("spy.attachObserver (HTTP) " + contexts.length + " ", context.getName());
- },
-
- detachObserver: function(context, win)
- {
- for (var i=0; i<contexts.length; ++i)
- {
- if (contexts[i].context == context)
- {
- if (win && (contexts[i].win != win))
- continue;
-
- contexts.splice(i, 1);
-
- // If no context is using spy, remvove the (only one) HTTP observer.
- if (contexts.length == 0)
- {
- HttpRequestObserver.removeObserver(SpyHttpObserver, "firebug-http-event");
- SpyHttpActivityObserver.unregisterObserver();
- }
-
- if (FBTrace.DBG_SPY)
- FBTrace.sysout("spy.detachObserver (HTTP) " + contexts.length + " ",
- context.getName());
- return;
- }
- }
- },
-
- /**
- * Return XHR object that is associated with specified request <i>nsIHttpChannel</i>.
- * Returns null if the request doesn't represent XHR.
- */
- getXHR: function(request)
- {
- // Does also query-interface for nsIHttpChannel.
- if (!(request instanceof Ci.nsIHttpChannel))
- return null;
-
- try
- {
- var callbacks = request.notificationCallbacks;
- if (callbacks)
- {
- StackFrame.suspendShowStackTrace();
- return callbacks.getInterface(Ci.nsIXMLHttpRequest);
- }
- }
- catch (exc)
- {
- if (exc.name == "NS_NOINTERFACE")
- {
- if (FBTrace.DBG_SPY)
- FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: " +
- Http.safeGetRequestName(request));
- }
- }
- finally
- {
- StackFrame.resumeShowStackTrace();
- }
-
- return null;
- },
-});
-
-// ********************************************************************************************* //
-
-/**
- * @class This observer uses {@link HttpRequestObserver} to monitor start and end of all XHRs.
- * using <code>http-on-modify-request</code>, <code>http-on-examine-response</code> and
- * <code>http-on-examine-cached-response</code> events. For every monitored XHR a new
- * instance of {@link Firebug.Spy.XMLHttpRequestSpy} object is created. This instance is removed
- * when the XHR is finished.
- */
-var SpyHttpObserver =
-/** @lends SpyHttpObserver */
-{
- dispatchName: "SpyHttpObserver",
-
- observe: function(request, topic, data)
- {
- try
- {
- var redirect = (request.redirectionLimit < redirectionLimit);
-
- // There is no http-on-opening-request in case of redirect so, we need
- // to use http-on-modify-request.
- if ((topic == "http-on-modify-request" && redirect) ||
- topic == "http-on-opening-request" ||
- topic == "http-on-examine-response" ||
- topic == "http-on-examine-cached-response")
- {
- this.observeRequest(request, topic);
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS || FBTrace.DBG_SPY)
- FBTrace.sysout("spy.SpyHttpObserver EXCEPTION", exc);
- }
- },
-
- observeRequest: function(request, topic)
- {
- var win = Http.getWindowForRequest(request);
- var xhr = Firebug.Spy.getXHR(request);
-
- // The request must be associated with window (i.e. tab) and it also must be
- // real XHR request.
- if (!win || !xhr)
- return;
-
- var redirect = (request.redirectionLimit < redirectionLimit);
-
- for (var i=0; i<contexts.length; ++i)
- {
- var context = contexts[i];
- if (context.win == win)
- {
- var spyContext = context.context;
- var requestName = request.URI.asciiSpec;
- var requestMethod = request.requestMethod;
-
- if (topic == "http-on-modify-request" && redirect)
- this.requestStarted(request, xhr, spyContext, requestMethod, requestName);
- else if (topic == "http-on-opening-request")
- this.requestStarted(request, xhr, spyContext, requestMethod, requestName);
- else if (topic == "http-on-examine-response")
- this.requestStopped(request, xhr, spyContext, requestMethod, requestName);
- else if (topic == "http-on-examine-cached-response")
- this.requestStopped(request, xhr, spyContext, requestMethod, requestName);
-
- return;
- }
- }
- },
-
- requestStarted: function(request, xhr, context, method, url)
- {
- var spy = getSpyForXHR(request, xhr, context);
- spy.method = method;
- spy.href = url;
-
- if (FBTrace.DBG_SPY)
- FBTrace.sysout("spy.requestStarted; " + spy.href);
-
- // Get "body" for POST and PUT requests. It will be displayed in
- // appropriate tab of the XHR.
- if (method == "POST" || method == "PUT" || method == "PATCH")
- spy.postText = Http.readPostTextFromRequest(request, context);
-
- spy.urlParams = Url.parseURLParams(spy.href);
-
- // In case of redirects there is no stack and the source link is null.
- spy.sourceLink = StackFrame.getStackSourceLink();
-
- if (!spy.requestHeaders)
- spy.requestHeaders = getRequestHeaders(spy);
-
- // If it's enabled log the request into the console tab.
- if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
- {
- spy.logRow = Firebug.Console.log(spy, spy.context, "spy", null, true);
- Css.setClass(spy.logRow, "loading");
- }
-
- // Notify registered listeners. The onStart event is fired once for entire XHR
- // (even if there is more redirects within the process).
- if (!isRedirect(request))
- Events.dispatch(Firebug.Spy.fbListeners, "onStart", [context, spy]);
-
- // Remember the start time et the end, so it's most accurate.
- spy.sendTime = new Date().getTime();
- },
-
- requestStopped: function(request, xhr, context, method, url)
- {
- var spy = getSpyForXHR(request, xhr, context);
- if (!spy)
- return;
-
- spy.endTime = new Date().getTime();
- spy.responseTime = spy.endTime - spy.sendTime;
- spy.mimeType = NetUtils.getMimeType(request.contentType, request.name);
-
- if (!spy.responseHeaders)
- spy.responseHeaders = getResponseHeaders(spy);
-
- if (!spy.statusText)
- {
- try
- {
- spy.statusCode = request.responseStatus;
- spy.statusText = request.responseStatusText;
- }
- catch (exc)
- {
- if (FBTrace.DBG_SPY)
- FBTrace.sysout("spy.requestStopped " + spy.href + ", status access FAILED", exc);
- }
- }
-
- if (spy.logRow)
- {
- updateLogRow(spy);
- updateHttpSpyInfo(spy);
- }
-
- // Remove only the Spy object that has been created for an intermediate rediret
- // request. These exist only to be also displayed in the console and they
- // don't attach any listeners to the original XHR object (which is always created
- // only once even in case of redirects).
- // xxxHonza: These requests are not observer by the activityObserver now
- // (if they should be observed we have to remove them in the activityObserver)
- if (!spy.onLoad && spy.context.spies)
- Arr.remove(spy.context.spies, spy);
-
- if (FBTrace.DBG_SPY)
- {
- FBTrace.sysout("spy.requestStopped: " + spy.href + ", responseTime: " +
- spy.responseTime + "ms, spy.responseText: " +
- (spy.reponseText ? spy.responseText.length : 0) + " bytes");
- }
- }
-};
-
-// ************************************************************************************************
-// Activity Observer
-
-/**
- * @class This observer is used to properly monitor even multipart XHRs. It's based on
- * an activity-observer component that has been introduced in Firefox 3.6.
- */
-var SpyHttpActivityObserver = Obj.extend(NetHttpActivityObserver,
-/** @lends SpyHttpActivityObserver */
-{
- dispatchName: "SpyHttpActivityObserver",
- activeRequests: [],
-
- observeRequest: function(request, activityType, activitySubtype, timestamp,
- extraSizeData, extraStringData)
- {
- if (activityType != Ci.nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION &&
- (activityType == Ci.nsIHttpActivityObserver.ACTIVITY_TYPE_SOCKET_TRANSPORT &&
- activitySubtype != Ci.nsISocketTransport.STATUS_RECEIVING_FROM))
- return;
-
- // xxxHonza: this code is duplicated in net.js, it should be refactored.
- var win = Http.getWindowForRequest(request);
- if (!win)
- {
- var index = this.activeRequests.indexOf(request);
- if (index == -1)
- return;
-
- if (!(win = this.activeRequests[index+1]))
- return;
- }
-
- for (var i=0; i<contexts.length; ++i)
- {
- var context = contexts[i];
- if (context.win == win)
- {
- var spyContext = context.context;
- var spy = getSpyForXHR(request, null, spyContext, true);
- if (spy)
- this.observeXHRActivity(win, spy, request, activitySubtype, timestamp);
- return;
- }
- }
- },
-
- observeXHRActivity: function(win, spy, request, activitySubtype, timestamp)
- {
- // Activity observer has precise time info; use it.
- var time = new Date();
- time.setTime(timestamp/1000);
-
- if (activitySubtype == Ci.nsIHttpActivityObserver.ACTIVITY_SUBTYPE_REQUEST_HEADER)
- {
- if (FBTrace.DBG_SPY)
- FBTrace.sysout("spy.observeXHRActivity REQUEST_HEADER " +
- Http.safeGetRequestName(request));
-
- this.activeRequests.push(request);
- this.activeRequests.push(win);
-
- spy.sendTime = time;
- spy.transactionStarted = true;
- }
- else if (activitySubtype == Ci.nsIHttpActivityObserver.ACTIVITY_SUBTYPE_TRANSACTION_CLOSE)
- {
- if (FBTrace.DBG_SPY)
- FBTrace.sysout("spy.observeXHRActivity TRANSACTION_CLOSE " +
- Http.safeGetRequestName(request));
-
- var index = this.activeRequests.indexOf(request);
- this.activeRequests.splice(index, 2);
-
- spy.endTime = time;
- spy.transactionClosed = true;
-
- updateTime(spy);
-
- // This should be the proper time to detach the Spy object, but only
- // in the case when the XHR is already loaded. If the XHR is made as part of the
- // page load, it may happen that the event (readyState == 4) comes later
- // than actual TRANSACTION_CLOSE.
- if (spy.loaded)
- spy.detach(false);
- }
- else if (activitySubtype == Ci.nsISocketTransport.STATUS_RECEIVING_FROM)
- {
- spy.endTime = time;
- }
- },
-
- cleanUp: function(win)
- {
- // https://bugzilla.mozilla.org/show_bug.cgi?id=669730
- for (var i=0; i<this.activeRequests.length; i+=2)
- {
- if (this.activeRequests[i+1] == win)
- {
- this.activeRequests.splice(i, 2);
- i -= 2;
- }
- }
- }
-});
-
-// ********************************************************************************************* //
-
-function getSpyForXHR(request, xhrRequest, context, noCreate)
-{
- var spy = null;
-
- if (!context.spies)
- {
- if (FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("spy.getSpyForXHR; ERROR no spies array " +
- Http.safeGetRequestName(request));
- }
- return;
- }
-
- // Iterate all existing spy objects in this context and look for one that is
- // already created for this request.
- var length = context.spies.length;
- for (var i=0; i<length; i++)
- {
- spy = context.spies[i];
- if (spy.request == request)
- {
- if (FBTrace.DBG_SPY)
- {
- var name = Url.getFileName(spy.request.URI.asciiSpec);
- var origName = Url.getFileName(spy.request.originalURI.asciiSpec);
- FBTrace.sysout("spy.getSpyForXHR; FOUND spy object " + name + ", " + origName);
- }
- return spy;
- }
- }
-
- if (noCreate)
- return null;
-
- spy = new Firebug.Spy.XMLHttpRequestSpy(request, xhrRequest, context);
- context.spies.push(spy);
-
- var name = request.URI.asciiSpec;
- var origName = request.originalURI.asciiSpec;
-
- if (FBTrace.DBG_SPY)
- {
- var redirect = isRedirect(request);
- FBTrace.sysout("spy.getSpyForXHR; NEW spy object (" +
- (redirect ? "redirected XHR" : "new XHR") + ") for: " +
- Url.getFileName(name) + ", " + Url.getFileName(origName));
- }
-
- // Attach spy only to the original request. Notice that there can be more network requests
- // made by the same XHR if redirects are involved.
-
- // The Console panel should display XHR entry for evere redirect so we need to
- // attach spy for each request (even redirects). See issue 4009
- //if (name == origName)
- spy.attach();
-
- return spy;
-}
-
-// ********************************************************************************************* //
-
-/**
- * @class This class represents a Spy object that is attached to XHR. This object
- * registers various listeners into the XHR in order to monitor various events fired
- * during the request process (onLoad, onAbort, etc.)
- */
-Firebug.Spy.XMLHttpRequestSpy = function(request, xhrRequest, context)
-{
- this.request = request;
- this.xhrRequest = xhrRequest;
- this.context = context;
- this.responseText = "";
-
- // For compatibility with the Net templates.
- this.isXHR = true;
-
- // Support for activity-observer
- this.transactionStarted = false;
- this.transactionClosed = false;
-};
-
-Firebug.Spy.XMLHttpRequestSpy.prototype =
-/** @lends Firebug.Spy.XMLHttpRequestSpy */
-{
- attach: function()
- {
- var spy = this;
-
- this.onReadyStateChange = function(event) { onHTTPSpyReadyStateChange(spy, event); };
- this.onLoad = function() { onHTTPSpyLoad(spy); };
- this.onError = function() { onHTTPSpyError(spy); };
- this.onAbort = function() { onHTTPSpyAbort(spy); };
-
- this.onEventListener = function(event)
- {
- switch (event.type)
- {
- case "readystatechange":
- onHTTPSpyReadyStateChange(spy, event);
- break;
- case "load":
- onHTTPSpyLoad(spy);
- break;
- case "error":
- onHTTPSpyError(spy);
- break;
- case "abort":
- onHTTPSpyAbort(spy);
- break;
- }
- };
-
- if (typeof(eventListenerService.addListenerForAllEvents) == "function")
- {
- eventListenerService.addListenerForAllEvents(this.xhrRequest,
- this.onEventListener, true, false, false);
- }
- else
- {
- this.onreadystatechange = this.xhrRequest.onreadystatechange;
- this.xhrRequest.onreadystatechange = this.onReadyStateChange;
-
- this.xhrRequest.addEventListener("load", this.onLoad, false);
- this.xhrRequest.addEventListener("error", this.onError, false);
- this.xhrRequest.addEventListener("abort", this.onAbort, false);
- }
-
- if (FBTrace.DBG_SPY)
- FBTrace.sysout("spy.attach; " + Http.safeGetRequestName(this.request));
- },
-
- detach: function(force)
- {
- // Bubble out if already detached.
- if (!this.onEventListener)
- return;
-
- // If the activity distributor is available, let's detach it when the XHR
- // transaction is closed. Since, in case of multipart XHRs the onLoad method
- // (readyState == 4) can be called mutliple times.
- // Keep in mind:
- // 1) It can happen that the TRANSACTION_CLOSE event comes before onload (if
- // the XHR is made as part of the page load), so detach if it's already closed.
- // 2) In case of immediate cache responses, the transaction doesn't have to
- // be started at all (or the activity observer is not available in Firefox 3.5).
- // So, also detach in this case.
- // Make sure spy will detach if force is true.
- if (!force && this.transactionStarted && !this.transactionClosed)
- return;
-
- if (FBTrace.DBG_SPY)
- {
- FBTrace.sysout("spy.detach; " + Http.safeGetRequestName(this.request) + ", " +
- Url.getFileName(this.href));
- }
-
- // Remove itself from the list of active spies.
- Arr.remove(this.context.spies, this);
-
- if (typeof(eventListenerService.addListenerForAllEvents) == "function")
- {
- eventListenerService.removeListenerForAllEvents(this.xhrRequest,
- this.onEventListener, true, false);
- }
- else
- {
- if (this.onreadystatechange)
- this.xhrRequest.onreadystatechange = this.onreadystatechange;
-
- try { this.xhrRequest.removeEventListener("load", this.onLoad, false); } catch (e) {}
- try { this.xhrRequest.removeEventListener("error", this.onError, false); } catch (e) {}
- try { this.xhrRequest.removeEventListener("abort", this.onAbort, false); } catch (e) {}
- }
-
- this.onreadystatechange = null;
- this.onLoad = null;
- this.onError = null;
- this.onAbort = null;
-
- this.onEventListener = null;
- },
-
- getURL: function()
- {
- // Don't use this.xhrRequest.channel.name to get the URL. In cases where the
- // same XHR object is reused for more requests, the URL can be wrong (issue 4738).
- return this.href;
- },
-
- // Cache listener
- onStopRequest: function(context, request, responseText)
- {
- if (FBTrace.DBG_SPY)
- FBTrace.sysout("spy.onStopRequest: " + Http.safeGetRequestName(request));
-
- if (!responseText)
- return;
-
- if (request == this.request)
- this.responseText = responseText;
- },
-};
-
-// ********************************************************************************************* //
-
-function onHTTPSpyReadyStateChange(spy, event)
-{
- if (FBTrace.DBG_SPY)
- {
- var name = Url.getFileName(spy.request.URI.asciiSpec);
- var origName = Url.getFileName(spy.request.originalURI.asciiSpec);
-
- FBTrace.sysout("spy.onHTTPSpyReadyStateChange " + spy.xhrRequest.readyState +
- " (multipart: " + spy.xhrRequest.multipart + ") " + name + ", " + origName);
- }
-
- // Remember just in case spy is detached (readyState == 4).
- var originalHandler = spy.onreadystatechange;
-
- // ReadyStateChange event with readyState == 1 is fired when the page calls the |open| method.
- // This event is usually not cought since spy object is attached when HTTP-ON-OPENING-REQUEST
- // http even is fired - which happens after |readyState == 1|
- // This scenario happens if the xhr object is reused synchronously in page callback handler
- // (onreadystatechange) for another request. In such case we need to quickly detach our
- // Spy object. New one will be immediatelly created when HTTP-ON-OPENING-REQUEST is fired.
- // See issue 5049
- if (spy.xhrRequest.readyState == 1)
- {
- if (FBTrace.DBG_SPY)
- {
- FBTrace.sysout("spy.onHTTPSpyReadyStateChange; ready state == 1, XHR probably being " +
- "reused, detach" + Http.safeGetRequestName(spy.request) + ", " +
- Url.getFileName(spy.href));
- }
-
- spy.detach(false);
- return;
- }
-
- // Force response text to be updated in the UI (in case the console entry
- // has been already expanded and the response tab selected).
- if (spy.logRow && spy.xhrRequest.readyState >= 3)
- {
- var netInfoBox = getInfoBox(spy);
- if (netInfoBox)
- {
- netInfoBox.htmlPresented = false;
- netInfoBox.responsePresented = false;
- }
- }
-
- // If the request is loading update the end time.
- if (spy.logRow && spy.xhrRequest.readyState == 3 && spy.sendTime && spy.endTime)
- {
- spy.responseTime = spy.endTime - spy.sendTime;
- updateTime(spy);
- }
-
- // Request loaded. Get all the info from the request now, just in case the
- // XHR would be aborted in the original onReadyStateChange handler.
- if (spy.xhrRequest.readyState == 4)
- {
- // Cumulate response so that multipart response content is properly displayed.
- spy.responseText += Http.safeGetXHRResponseText(spy.xhrRequest);
-
- // The XHR is loaded now (used also by the activity observer).
- spy.loaded = true;
-
- // Update UI.
- updateLogRow(spy);
- updateHttpSpyInfo(spy, true);
-
- // Notify the Net panel about a request being loaded.
- // xxxHonza: I don't think this is necessary.
- // stopFile this breaks layout of the net panel in case of redirects.
- var netProgress = spy.context.netProgress;
- if (netProgress && !isRedirect(spy.request))
- netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText,
- spy.responseText]);
-
- // Notify registered listeners about finish of the XHR.
- Events.dispatch(Firebug.Spy.fbListeners, "onLoad", [spy.context, spy]);
- }
-
- // Pass the event to the original page handler.
- if (typeof(eventListenerService.addListenerForAllEvents) == "undefined")
- callPageHandler(spy, event, originalHandler);
-}
-
-function callPageHandler(spy, event, originalHandler)
-{
- try
- {
- // Calling the page handler throwed an exception (see #502959)
- // This should be fixed in Firefox 3.5
- if (originalHandler && event)
- {
- if (originalHandler.handleEvent)
- originalHandler.handleEvent(event);
- else
- originalHandler.call(spy.xhrRequest, event);
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("spy.onHTTPSpyReadyStateChange: EXCEPTION " + exc, [exc, event]);
-
- var xpcError = Firebug.Errors.reparseXPC(exc, spy.context);
- if (xpcError)
- {
- // TODO attach trace
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("spy.onHTTPSpyReadyStateChange: reparseXPC", xpcError);
-
- // Make sure the exception is displayed in both Firefox & Firebug console.
- throw new Error(xpcError.message, xpcError.href, xpcError.lineNo);
- }
- else
- {
- throw exc;
- }
- }
-}
-
-function onHTTPSpyLoad(spy)
-{
- if (FBTrace.DBG_SPY)
- {
- FBTrace.sysout("spy.onHTTPSpyLoad: " + Http.safeGetRequestName(spy.request) + ", " +
- Url.getFileName(spy.href) + ", state: " + spy.xhrRequest.readyState);
- }
-
- // Detach must be done in onLoad (not in onreadystatechange) otherwise onAbort would
- // not be handled. Note that onAbort, onError and onLoad events are fired after
- // onreadystatechange and must also be handled.
- // Issue 5049: only detach if XHR state == 4. It can happen that XHR object is being
- // reused for another request and onLoad fires too soon. See also onHTTPSpyReadyStateChange
- // for more details.
- if (spy.xhrRequest.readyState == 4)
- spy.detach(false);
-
- // If the spy is not loaded yet (and so, the response was not cached), do it now.
- // This can happen since synchronous XHRs don't fire onReadyStateChange event (issue 2868).
- if (!spy.loaded)
- {
- spy.loaded = true;
- spy.responseText = Http.safeGetXHRResponseText(spy.xhrRequest);
-
- updateLogRow(spy);
- updateHttpSpyInfo(spy, true);
- }
-}
-
-function onHTTPSpyError(spy)
-{
- if (FBTrace.DBG_SPY)
- FBTrace.sysout("spy.onHTTPSpyError; " + spy.href);
-
- spy.detach(false);
- spy.loaded = true;
- spy.error= true;
-
- updateLogRow(spy);
-}
-
-function onHTTPSpyAbort(spy)
-{
- if (FBTrace.DBG_SPY)
- FBTrace.sysout("spy.onHTTPSpyAbort: " + spy.href);
-
- spy.detach(false);
- spy.loaded = true;
-
- // Ignore aborts if the request already has a response status.
- if (spy.xhrRequest.status)
- {
- updateLogRow(spy);
- return;
- }
-
- spy.aborted = true;
- spy.statusText = "Aborted";
-
- updateLogRow(spy);
-
- // Notify Net pane about a request beeing aborted.
- // xxxHonza: the net panel shoud find out this itself.
- var netProgress = spy.context.netProgress;
- if (netProgress)
- {
- netProgress.post(netProgress.abortFile, [spy.request, spy.endTime, spy.postText,
- spy.responseText]);
- }
-}
-
-// ********************************************************************************************* //
-
-/**
- * @domplate Represents a template for XHRs logged in the Console panel. The body of the
- * log (displayed when expanded) is rendered using {@link Firebug.NetMonitor.NetInfoBody}.
- */
-with (Domplate) {
-Firebug.Spy.XHR = domplate(Firebug.Rep,
-/** @lends Firebug.Spy.XHR */
-{
- tag:
- DIV({"class": "spyHead", _repObject: "$object"},
- TABLE({"class": "spyHeadTable focusRow outerFocusRow", cellpadding: 0, cellspacing: 0,
- "role": "listitem", "aria-expanded": "false"},
- TBODY({"role": "presentation"},
- TR({"class": "spyRow"},
- TD({"class": "spyTitleCol spyCol", onclick: "$onToggleBody"},
- DIV({"class": "spyTitle"},
- "$object|getCaption"
- ),
- DIV({"class": "spyFullTitle spyTitle"},
- "$object|getFullUri"
- )
- ),
- TD({"class": "spyCol"},
- DIV({"class": "spyStatus"}, "$object|getStatus")
- ),
- TD({"class": "spyCol"},
- SPAN({"class": "spyIcon"})
- ),
- TD({"class": "spyCol"},
- SPAN({"class": "spyTime"})
- ),
- TD({"class": "spyCol"},
- TAG(FirebugReps.SourceLink.tag, {object: "$object.sourceLink"})
- )
- )
- )
- )
- ),
-
- getCaption: function(spy)
- {
- return spy.method.toUpperCase() + " " + Str.cropString(spy.getURL(), 100);
- },
-
- getFullUri: function(spy)
- {
- return spy.method.toUpperCase() + " " + spy.getURL();
- },
-
- getStatus: function(spy)
- {
- var text = "";
- if (spy.statusCode)
- text += spy.statusCode + " ";
-
- if (spy.statusText)
- return text += spy.statusText;
-
- return text;
- },
-
- onToggleBody: function(event)
- {
- var target = event.currentTarget;
- var logRow = Dom.getAncestorByClass(target, "logRow-spy");
-
- if (Events.isLeftClick(event))
- {
- Css.toggleClass(logRow, "opened");
-
- var spy = logRow.getElementsByClassName("spyHead")[0].repObject;
- var spyHeadTable = Dom.getAncestorByClass(target, "spyHeadTable");
-
- if (Css.hasClass(logRow, "opened"))
- {
- updateHttpSpyInfo(spy);
-
- if (spyHeadTable)
- spyHeadTable.setAttribute("aria-expanded", "true");
- }
- else
- {
- // Notify all listeners about closing XHR entry and destroying the body.
- // Any custom tabs should be removed now.
- var netInfoBox = getInfoBox(spy);
- Events.dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody",
- [netInfoBox, spy]);
-
- if (spyHeadTable)
- spyHeadTable.setAttribute("aria-expanded", "false");
-
- // Remove the info box, it'll be re-created (together with custom tabs)
- // the next time the XHR entry is opened/updated.
- netInfoBox.parentNode.removeChild(netInfoBox);
- }
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- copyURL: function(spy)
- {
- System.copyToClipboard(spy.getURL());
- },
-
- copyParams: function(spy)
- {
- var text = spy.postText;
- if (!text)
- return;
-
- var url = Url.reEncodeURL(spy, text, true);
- System.copyToClipboard(url);
- },
-
- copyAsCurl: function(spy)
- {
- System.copyToClipboard(NetUtils.generateCurlCommand(spy,
- Options.get("net.curlAddCompressedArgument")));
- },
-
- copyResponse: function(spy)
- {
- System.copyToClipboard(spy.responseText);
- },
-
- openInTab: function(spy)
- {
- Win.openNewTab(spy.getURL(), spy.postText);
- },
-
- resend: function(spy, context)
- {
- try
- {
- if (!context.window)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("spy.resend; ERROR no context");
- return;
- }
-
- // xxxHonza: must be done through Console RDP
- var win = Wrapper.unwrapObject(context.window);
- var request = new win.XMLHttpRequest();
- request.open(spy.method, spy.href, true);
-
- var headers = spy.requestHeaders;
- for (var i=0; headers && i<headers.length; i++)
- {
- var header = headers[i];
- request.setRequestHeader(header.name, header.value);
- }
-
- var postData = NetUtils.getPostText(spy, context, true);
- request.send(postData);
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("spy.resend; EXCEPTION " + err, err);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- supportsObject: function(object, type)
- {
- return object instanceof Firebug.Spy.XMLHttpRequestSpy;
- },
-
- browseObject: function(spy, context)
- {
- var url = spy.getURL();
- Win.openNewTab(url);
- return true;
- },
-
- getRealObject: function(spy, context)
- {
- return spy.xhrRequest;
- },
-
- getContextMenuItems: function(spy, target, context)
- {
- var items = [{
- label: "CopyLocation",
- tooltiptext: "clipboard.tip.Copy_Location",
- id: "fbSpyCopyLocation",
- command: Obj.bindFixed(this.copyURL, this, spy)
- }];
-
- if (spy.postText)
- {
- items.push({
- label: "CopyLocationParameters",
- tooltiptext: "net.tip.Copy_Location_Parameters",
- command: Obj.bindFixed(this.copyParams, this, spy)
- });
- }
-
- items.push({
- label: "CopyResponse",
- id: "fbSpyCopyResponse",
- command: Obj.bindFixed(this.copyResponse, this, spy)
- });
-
- items.push(
- {
- id: "fbCopyAsCurl",
- label: "CopyAsCurl",
- tooltiptext: "net.tip.Copy_as_cURL",
- command: Obj.bindFixed(this.copyAsCurl, this, spy)
- }
- );
-
- items.push("-");
-
- items.push({
- label: "OpenInTab",
- tooltiptext: "firebug.tip.Open_In_Tab",
- id: "fbSpyOpenInTab",
- command: Obj.bindFixed(this.openInTab, this, spy)
- });
-
- items.push({
- label: "Open_Response_In_New_Tab",
- tooltiptext: "net.tip.Open_Response_In_New_Tab",
- id: "fbSpyOpenResponseInTab",
- command: Obj.bindFixed(NetUtils.openResponseInTab, this, spy)
- });
-
- items.push("-");
-
- items.push({
- label: "net.label.Resend",
- tooltiptext: "net.tip.Resend",
- id: "fbSpyResend",
- command: Obj.bindFixed(this.resend, this, spy, context)
- });
-
- return items;
- }
-});
-};
-
-// ********************************************************************************************* //
-
-Firebug.XHRSpyListener =
-{
- onStart: function(context, spy)
- {
- },
-
- onLoad: function(context, spy)
- {
- }
-};
-
-// ********************************************************************************************* //
-
-function updateTime(spy)
-{
- if (spy.logRow)
- {
- var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0);
- if (spy.sendTime && spy.endTime)
- timeBox.textContent = " " + Str.formatTime(spy.endTime - spy.sendTime);
- }
-}
-
-function updateLogRow(spy)
-{
- updateTime(spy);
-
- if(spy.logRow)
- {
- var statusBox = spy.logRow.getElementsByClassName("spyStatus").item(0);
- statusBox.textContent = Firebug.Spy.XHR.getStatus(spy);
- }
-
- if (spy.loaded)
- {
- Css.removeClass(spy.logRow, "loading");
- Css.setClass(spy.logRow, "loaded");
- }
-
- if (spy.error || spy.aborted)
- {
- Css.setClass(spy.logRow, "error");
- }
-
- try
- {
- var errorRange = Math.floor(spy.xhrRequest.status/100);
- if (errorRange == 4 || errorRange == 5)
- Css.setClass(spy.logRow, "error");
- }
- catch (exc)
- {
- }
-}
-
-function updateHttpSpyInfo(spy, updateInfoBody)
-{
- if (!spy.logRow || !Css.hasClass(spy.logRow, "opened"))
- return;
-
- if (!spy.params)
- spy.params = Url.parseURLParams(spy.href + "");
-
- if (!spy.requestHeaders)
- spy.requestHeaders = getRequestHeaders(spy);
-
- if (!spy.responseHeaders && spy.loaded)
- spy.responseHeaders = getResponseHeaders(spy);
-
- var template = Firebug.NetMonitor.NetInfoBody;
- var netInfoBox = getInfoBox(spy);
-
- var defaultTab;
-
- // If the associated XHR row is currently expanded, make sure to recreate
- // the info bodies if the flag says so.
- if (updateInfoBody)
- {
- // Remember the current selected info tab.
- if (netInfoBox.selectedTab)
- defaultTab = netInfoBox.selectedTab.getAttribute("view");
-
- // Remove the info box so, it's recreated below.
- netInfoBox.parentNode.removeChild(netInfoBox);
- netInfoBox = null;
- }
-
- if (!netInfoBox)
- {
- var head = spy.logRow.getElementsByClassName("spyHead")[0];
- netInfoBox = template.tag.append({"file": spy}, head);
-
- // Notify listeners so, custom info tabs can be appended
- Events.dispatch(template.fbListeners, "initTabBody", [netInfoBox, spy]);
-
- // If the response tab isn't available/visible (perhaps the response didn't came yet),
- // select the 'Headers' tab by default or keep the default tab.
- defaultTab = defaultTab || (template.hideResponse(spy) ? "Headers" : "Response");
- template.selectTabByName(netInfoBox, defaultTab);
- }
- else
- {
- template.updateInfo(netInfoBox, spy, spy.context);
- }
-}
-
-function getInfoBox(spy)
-{
- return spy.logRow.querySelector(".spyHead > .netInfoBody");
-}
-
-function getInfoBox(spy)
-{
- return spy.logRow.querySelector(".spyHead > .netInfoBody");
-}
-
-// ********************************************************************************************* //
-
-function getRequestHeaders(spy)
-{
- var headers = [];
-
- var channel = spy.xhrRequest.channel;
- if (channel instanceof Ci.nsIHttpChannel)
- {
- channel.visitRequestHeaders(
- {
- visitHeader: function(name, value)
- {
- headers.push({name: name, value: value});
- }
- });
- }
-
- return headers;
-}
-
-function getResponseHeaders(spy)
-{
- var headers = [];
-
- try
- {
- var channel = spy.xhrRequest.channel;
- if (channel instanceof Ci.nsIHttpChannel)
- {
- channel.visitResponseHeaders(
- {
- visitHeader: function(name, value)
- {
- headers.push({name: name, value: value});
- }
- });
- }
- }
- catch (exc)
- {
- if (FBTrace.DBG_SPY || FBTrace.DBG_ERRORS)
- {
- FBTrace.sysout("spy.getResponseHeaders; EXCEPTION " +
- Http.safeGetRequestName(spy.request), exc);
- }
- }
-
- return headers;
-}
-
-function isRedirect(request)
-{
- try
- {
- var name = request.URI.asciiSpec;
- var origName = request.originalURI.asciiSpec;
- return (name != origName);
- }
- catch (e)
- {
- }
-
- return false;
-}
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.Spy);
-Firebug.registerRep(Firebug.Spy.XHR);
-
-return Firebug.Spy;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/chrome/reps",
+ "firebug/lib/events",
+ "firebug/net/requestObserver",
+ "firebug/js/stackFrame",
+ "firebug/lib/http",
+ "firebug/lib/css",
+ "firebug/lib/dom",
+ "firebug/chrome/window",
+ "firebug/lib/system",
+ "firebug/lib/string",
+ "firebug/lib/url",
+ "firebug/lib/array",
+ "firebug/trace/debug",
+ "firebug/net/httpActivityObserver",
+ "firebug/net/netUtils",
+ "firebug/trace/traceListener",
+ "firebug/trace/traceModule",
+ "firebug/lib/wrapper",
+ "firebug/lib/options",
+ "firebug/net/netPanel",
+ "firebug/console/errors"
+],
+function(Obj, Firebug, Domplate, FirebugReps, Events, HttpRequestObserver, StackFrame,
+ Http, Css, Dom, Win, System, Str, Url, Arr, Debug, NetHttpActivityObserver, NetUtils,
+ TraceListener, TraceModule, Wrapper, Options) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+var eventListenerService = Cc["@mozilla.org/eventlistenerservice;1"].
+ getService(Ci.nsIEventListenerService);
+
+// List of contexts with XHR spy attached.
+var contexts = [];
+
+var redirectionLimit = Options.getPref("network.http", "redirection-limit");
+
+// ********************************************************************************************* //
+// Spy Module
+
+/**
+ * @module Represents a XHR Spy module. The main purpose of the XHR Spy feature is to monitor
+ * XHR activity of the current page and create appropriate log into the Console panel.
+ * This feature can be controlled by an option <i>Show XMLHttpRequests</i> (from within the
+ * console panel).
+ *
+ * The module is responsible for attaching/detaching a HTTP Observers when Firebug is
+ * activated/deactivated for a site.
+ */
+Firebug.Spy = Obj.extend(Firebug.Module,
+/** @lends Firebug.Spy */
+{
+ dispatchName: "spy",
+
+ initialize: function()
+ {
+ this.traceListener = new TraceListener("spy.", "DBG_SPY", true);
+ TraceModule.addListener(this.traceListener);
+
+ Firebug.Module.initialize.apply(this, arguments);
+ },
+
+ shutdown: function()
+ {
+ Firebug.Module.shutdown.apply(this, arguments);
+
+ TraceModule.removeListener(this.traceListener);
+ },
+
+ initContext: function(context)
+ {
+ context.spies = [];
+
+ if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
+ this.attachObserver(context, context.window);
+
+ if (FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.initContext " + contexts.length + " ", context.getName());
+ },
+
+ destroyContext: function(context)
+ {
+ // For any spies that are in progress, remove our listeners so that they don't leak
+ this.detachObserver(context, null);
+
+ if (FBTrace.DBG_SPY && context.spies && context.spies.length)
+ {
+ FBTrace.sysout("spy.destroyContext; ERROR There are spies in progress ("
+ + context.spies.length + ") " + context.getName());
+ }
+
+ // Make sure that all Spies in progress are detached at this moment.
+ // Clone the array beforehand since the spy object is removed from the
+ // original array within detach.
+ var spies = context.spies ? Arr.cloneArray(context.spies) : [];
+ for (var i=0; i<spies.length; i++)
+ spies[i].detach(true);
+
+ delete context.spies;
+
+ SpyHttpActivityObserver.cleanUp(context.window);
+
+ if (FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.destroyContext " + contexts.length + " ", context.getName());
+ },
+
+ watchWindow: function(context, win)
+ {
+ if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
+ this.attachObserver(context, win);
+ },
+
+ unwatchWindow: function(context, win)
+ {
+ if (FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.unwatchWindow; " + (context ? context.getName() : "no context"));
+
+ try
+ {
+ // This make sure that the existing context is properly removed from "contexts" array.
+ this.detachObserver(context, win);
+
+ SpyHttpActivityObserver.cleanUp(win);
+ }
+ catch (ex)
+ {
+ // Get exceptions here sometimes, so let's just ignore them
+ // since the window is going away anyhow
+ Debug.ERROR(ex);
+ }
+ },
+
+ updateOption: function(name, value)
+ {
+ // XXXjjb Honza, if Console.isEnabled(context) false, then this can't be called,
+ // but somehow seems not correct
+
+ // XHR Spy needs to be detached/attached when:
+ // 1) The Show XMLHttpRequests options is off/on
+ // 2) The Console panel is disabled/enabled
+ // See also issue 5109
+ if (name == "showXMLHttpRequests" || name == "console.enableSites")
+ {
+ var tach = value ? this.attachObserver : this.detachObserver;
+
+ Firebug.connection.eachContext(function tachAll(context)
+ {
+ Win.iterateWindows(context.window, function(win)
+ {
+ tach.apply(this, [context, win]);
+ });
+ });
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Attaching Spy to XHR requests.
+
+ /**
+ * Returns false if Spy should not be attached to XHRs executed by the specified window.
+ */
+ skipSpy: function(win)
+ {
+ if (!win)
+ return true;
+
+ // Don't attach spy to chrome.
+ var uri = Win.safeGetWindowLocation(win);
+ if (uri && (Str.hasPrefix(uri, "about:") || Str.hasPrefix(uri, "chrome:")))
+ return true;
+ },
+
+ attachObserver: function(context, win)
+ {
+ if (Firebug.Spy.skipSpy(win))
+ return;
+
+ for (var i=0; i<contexts.length; ++i)
+ {
+ if ((contexts[i].context == context) && (contexts[i].win == win))
+ return;
+ }
+
+ // Register HTTP observers only once.
+ if (contexts.length == 0)
+ {
+ HttpRequestObserver.addObserver(SpyHttpObserver, "firebug-http-event", false);
+ SpyHttpActivityObserver.registerObserver();
+ }
+
+ contexts.push({context: context, win: win});
+
+ if (FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.attachObserver (HTTP) " + contexts.length + " ", context.getName());
+ },
+
+ detachObserver: function(context, win)
+ {
+ for (var i=0; i<contexts.length; ++i)
+ {
+ if (contexts[i].context == context)
+ {
+ if (win && (contexts[i].win != win))
+ continue;
+
+ contexts.splice(i, 1);
+
+ // If no context is using spy, remvove the (only one) HTTP observer.
+ if (contexts.length == 0)
+ {
+ HttpRequestObserver.removeObserver(SpyHttpObserver, "firebug-http-event");
+ SpyHttpActivityObserver.unregisterObserver();
+ }
+
+ if (FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.detachObserver (HTTP) " + contexts.length + " ",
+ context.getName());
+ return;
+ }
+ }
+ },
+
+ /**
+ * Return XHR object that is associated with specified request <i>nsIHttpChannel</i>.
+ * Returns null if the request doesn't represent XHR.
+ */
+ getXHR: function(request)
+ {
+ // Does also query-interface for nsIHttpChannel.
+ if (!(request instanceof Ci.nsIHttpChannel))
+ return null;
+
+ try
+ {
+ var callbacks = request.notificationCallbacks;
+ if (callbacks)
+ {
+ StackFrame.suspendShowStackTrace();
+ return callbacks.getInterface(Ci.nsIXMLHttpRequest);
+ }
+ }
+ catch (exc)
+ {
+ if (exc.name == "NS_NOINTERFACE")
+ {
+ if (FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: " +
+ Http.safeGetRequestName(request));
+ }
+ }
+ finally
+ {
+ StackFrame.resumeShowStackTrace();
+ }
+
+ return null;
+ },
+});
+
+// ********************************************************************************************* //
+
+/**
+ * @class This observer uses {@link HttpRequestObserver} to monitor start and end of all XHRs.
+ * using <code>http-on-modify-request</code>, <code>http-on-examine-response</code> and
+ * <code>http-on-examine-cached-response</code> events. For every monitored XHR a new
+ * instance of {@link Firebug.Spy.XMLHttpRequestSpy} object is created. This instance is removed
+ * when the XHR is finished.
+ */
+var SpyHttpObserver =
+/** @lends SpyHttpObserver */
+{
+ dispatchName: "SpyHttpObserver",
+
+ observe: function(request, topic, data)
+ {
+ try
+ {
+ var redirect = (request.redirectionLimit < redirectionLimit);
+
+ // There is no http-on-opening-request in case of redirect so, we need
+ // to use http-on-modify-request.
+ if ((topic == "http-on-modify-request" && redirect) ||
+ topic == "http-on-opening-request" ||
+ topic == "http-on-examine-response" ||
+ topic == "http-on-examine-cached-response")
+ {
+ this.observeRequest(request, topic);
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.SpyHttpObserver EXCEPTION", exc);
+ }
+ },
+
+ observeRequest: function(request, topic)
+ {
+ var win = Http.getWindowForRequest(request);
+ var xhr = Firebug.Spy.getXHR(request);
+
+ // The request must be associated with window (i.e. tab) and it also must be
+ // real XHR request.
+ if (!win || !xhr)
+ return;
+
+ var redirect = (request.redirectionLimit < redirectionLimit);
+
+ for (var i=0; i<contexts.length; ++i)
+ {
+ var context = contexts[i];
+ if (context.win == win)
+ {
+ var spyContext = context.context;
+ var requestName = request.URI.asciiSpec;
+ var requestMethod = request.requestMethod;
+
+ if (topic == "http-on-modify-request" && redirect)
+ this.requestStarted(request, xhr, spyContext, requestMethod, requestName);
+ else if (topic == "http-on-opening-request")
+ this.requestStarted(request, xhr, spyContext, requestMethod, requestName);
+ else if (topic == "http-on-examine-response")
+ this.requestStopped(request, xhr, spyContext, requestMethod, requestName);
+ else if (topic == "http-on-examine-cached-response")
+ this.requestStopped(request, xhr, spyContext, requestMethod, requestName);
+
+ return;
+ }
+ }
+ },
+
+ requestStarted: function(request, xhr, context, method, url)
+ {
+ var spy = getSpyForXHR(request, xhr, context);
+ spy.method = method;
+ spy.href = url;
+
+ if (FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.requestStarted; " + spy.href);
+
+ // Get "body" for POST and PUT requests. It will be displayed in
+ // appropriate tab of the XHR.
+ if (method == "POST" || method == "PUT" || method == "PATCH")
+ spy.postText = Http.readPostTextFromRequest(request, context);
+
+ spy.urlParams = Url.parseURLParams(spy.href);
+
+ // In case of redirects there is no stack and the source link is null.
+ spy.sourceLink = StackFrame.getStackSourceLink();
+
+ if (!spy.requestHeaders)
+ spy.requestHeaders = getRequestHeaders(spy);
+
+ // If it's enabled log the request into the console tab.
+ if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
+ {
+ spy.logRow = Firebug.Console.log(spy, spy.context, "spy", null, true);
+ Css.setClass(spy.logRow, "loading");
+ }
+
+ // Notify registered listeners. The onStart event is fired once for entire XHR
+ // (even if there is more redirects within the process).
+ if (!isRedirect(request))
+ Events.dispatch(Firebug.Spy.fbListeners, "onStart", [context, spy]);
+
+ // Remember the start time et the end, so it's most accurate.
+ spy.sendTime = new Date().getTime();
+ },
+
+ requestStopped: function(request, xhr, context, method, url)
+ {
+ var spy = getSpyForXHR(request, xhr, context);
+ if (!spy)
+ return;
+
+ spy.endTime = new Date().getTime();
+ spy.responseTime = spy.endTime - spy.sendTime;
+ spy.mimeType = NetUtils.getMimeType(request.contentType, request.name);
+
+ if (!spy.responseHeaders)
+ spy.responseHeaders = getResponseHeaders(spy);
+
+ if (!spy.statusText)
+ {
+ try
+ {
+ spy.statusCode = request.responseStatus;
+ spy.statusText = request.responseStatusText;
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.requestStopped " + spy.href + ", status access FAILED", exc);
+ }
+ }
+
+ if (spy.logRow)
+ {
+ updateLogRow(spy);
+ updateHttpSpyInfo(spy);
+ }
+
+ // Remove only the Spy object that has been created for an intermediate rediret
+ // request. These exist only to be also displayed in the console and they
+ // don't attach any listeners to the original XHR object (which is always created
+ // only once even in case of redirects).
+ // xxxHonza: These requests are not observer by the activityObserver now
+ // (if they should be observed we have to remove them in the activityObserver)
+ if (!spy.onLoad && spy.context.spies)
+ Arr.remove(spy.context.spies, spy);
+
+ if (FBTrace.DBG_SPY)
+ {
+ FBTrace.sysout("spy.requestStopped: " + spy.href + ", responseTime: " +
+ spy.responseTime + "ms, spy.responseText: " +
+ (spy.reponseText ? spy.responseText.length : 0) + " bytes");
+ }
+ }
+};
+
+// ************************************************************************************************
+// Activity Observer
+
+/**
+ * @class This observer is used to properly monitor even multipart XHRs. It's based on
+ * an activity-observer component that has been introduced in Firefox 3.6.
+ */
+var SpyHttpActivityObserver = Obj.extend(NetHttpActivityObserver,
+/** @lends SpyHttpActivityObserver */
+{
+ dispatchName: "SpyHttpActivityObserver",
+ activeRequests: [],
+
+ observeRequest: function(request, activityType, activitySubtype, timestamp,
+ extraSizeData, extraStringData)
+ {
+ if (activityType != Ci.nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION &&
+ (activityType == Ci.nsIHttpActivityObserver.ACTIVITY_TYPE_SOCKET_TRANSPORT &&
+ activitySubtype != Ci.nsISocketTransport.STATUS_RECEIVING_FROM))
+ return;
+
+ // xxxHonza: this code is duplicated in net.js, it should be refactored.
+ var win = Http.getWindowForRequest(request);
+ if (!win)
+ {
+ var index = this.activeRequests.indexOf(request);
+ if (index == -1)
+ return;
+
+ if (!(win = this.activeRequests[index+1]))
+ return;
+ }
+
+ for (var i=0; i<contexts.length; ++i)
+ {
+ var context = contexts[i];
+ if (context.win == win)
+ {
+ var spyContext = context.context;
+ var spy = getSpyForXHR(request, null, spyContext, true);
+ if (spy)
+ this.observeXHRActivity(win, spy, request, activitySubtype, timestamp);
+ return;
+ }
+ }
+ },
+
+ observeXHRActivity: function(win, spy, request, activitySubtype, timestamp)
+ {
+ // Activity observer has precise time info; use it.
+ var time = new Date();
+ time.setTime(timestamp/1000);
+
+ if (activitySubtype == Ci.nsIHttpActivityObserver.ACTIVITY_SUBTYPE_REQUEST_HEADER)
+ {
+ if (FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.observeXHRActivity REQUEST_HEADER " +
+ Http.safeGetRequestName(request));
+
+ this.activeRequests.push(request);
+ this.activeRequests.push(win);
+
+ spy.sendTime = time;
+ spy.transactionStarted = true;
+ }
+ else if (activitySubtype == Ci.nsIHttpActivityObserver.ACTIVITY_SUBTYPE_TRANSACTION_CLOSE)
+ {
+ if (FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.observeXHRActivity TRANSACTION_CLOSE " +
+ Http.safeGetRequestName(request));
+
+ var index = this.activeRequests.indexOf(request);
+ this.activeRequests.splice(index, 2);
+
+ spy.endTime = time;
+ spy.transactionClosed = true;
+
+ updateTime(spy);
+
+ // This should be the proper time to detach the Spy object, but only
+ // in the case when the XHR is already loaded. If the XHR is made as part of the
+ // page load, it may happen that the event (readyState == 4) comes later
+ // than actual TRANSACTION_CLOSE.
+ if (spy.loaded)
+ spy.detach(false);
+ }
+ else if (activitySubtype == Ci.nsISocketTransport.STATUS_RECEIVING_FROM)
+ {
+ spy.endTime = time;
+ }
+ },
+
+ cleanUp: function(win)
+ {
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=669730
+ for (var i=0; i<this.activeRequests.length; i+=2)
+ {
+ if (this.activeRequests[i+1] == win)
+ {
+ this.activeRequests.splice(i, 2);
+ i -= 2;
+ }
+ }
+ }
+});
+
+// ********************************************************************************************* //
+
+function getSpyForXHR(request, xhrRequest, context, noCreate)
+{
+ var spy = null;
+
+ if (!context.spies)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("spy.getSpyForXHR; ERROR no spies array " +
+ Http.safeGetRequestName(request));
+ }
+ return;
+ }
+
+ // Iterate all existing spy objects in this context and look for one that is
+ // already created for this request.
+ var length = context.spies.length;
+ for (var i=0; i<length; i++)
+ {
+ spy = context.spies[i];
+ if (spy.request == request)
+ {
+ if (FBTrace.DBG_SPY)
+ {
+ var name = Url.getFileName(spy.request.URI.asciiSpec);
+ var origName = Url.getFileName(spy.request.originalURI.asciiSpec);
+ FBTrace.sysout("spy.getSpyForXHR; FOUND spy object " + name + ", " + origName);
+ }
+ return spy;
+ }
+ }
+
+ if (noCreate)
+ return null;
+
+ spy = new Firebug.Spy.XMLHttpRequestSpy(request, xhrRequest, context);
+ context.spies.push(spy);
+
+ var name = request.URI.asciiSpec;
+ var origName = request.originalURI.asciiSpec;
+
+ if (FBTrace.DBG_SPY)
+ {
+ var redirect = isRedirect(request);
+ FBTrace.sysout("spy.getSpyForXHR; NEW spy object (" +
+ (redirect ? "redirected XHR" : "new XHR") + ") for: " +
+ Url.getFileName(name) + ", " + Url.getFileName(origName));
+ }
+
+ // Attach spy only to the original request. Notice that there can be more network requests
+ // made by the same XHR if redirects are involved.
+
+ // The Console panel should display XHR entry for evere redirect so we need to
+ // attach spy for each request (even redirects). See issue 4009
+ //if (name == origName)
+ spy.attach();
+
+ return spy;
+}
+
+// ********************************************************************************************* //
+
+/**
+ * @class This class represents a Spy object that is attached to XHR. This object
+ * registers various listeners into the XHR in order to monitor various events fired
+ * during the request process (onLoad, onAbort, etc.)
+ */
+Firebug.Spy.XMLHttpRequestSpy = function(request, xhrRequest, context)
+{
+ this.request = request;
+ this.xhrRequest = xhrRequest;
+ this.context = context;
+ this.responseText = "";
+
+ // For compatibility with the Net templates.
+ this.isXHR = true;
+
+ // Support for activity-observer
+ this.transactionStarted = false;
+ this.transactionClosed = false;
+};
+
+Firebug.Spy.XMLHttpRequestSpy.prototype =
+/** @lends Firebug.Spy.XMLHttpRequestSpy */
+{
+ attach: function()
+ {
+ var spy = this;
+
+ this.onReadyStateChange = function(event) { onHTTPSpyReadyStateChange(spy, event); };
+ this.onLoad = function() { onHTTPSpyLoad(spy); };
+ this.onError = function() { onHTTPSpyError(spy); };
+ this.onAbort = function() { onHTTPSpyAbort(spy); };
+
+ this.onEventListener = function(event)
+ {
+ switch (event.type)
+ {
+ case "readystatechange":
+ onHTTPSpyReadyStateChange(spy, event);
+ break;
+ case "load":
+ onHTTPSpyLoad(spy);
+ break;
+ case "error":
+ onHTTPSpyError(spy);
+ break;
+ case "abort":
+ onHTTPSpyAbort(spy);
+ break;
+ }
+ };
+
+ if (typeof(eventListenerService.addListenerForAllEvents) == "function")
+ {
+ eventListenerService.addListenerForAllEvents(this.xhrRequest,
+ this.onEventListener, true, false, false);
+ }
+ else
+ {
+ this.onreadystatechange = this.xhrRequest.onreadystatechange;
+ this.xhrRequest.onreadystatechange = this.onReadyStateChange;
+
+ this.xhrRequest.addEventListener("load", this.onLoad, false);
+ this.xhrRequest.addEventListener("error", this.onError, false);
+ this.xhrRequest.addEventListener("abort", this.onAbort, false);
+ }
+
+ if (FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.attach; " + Http.safeGetRequestName(this.request));
+ },
+
+ detach: function(force)
+ {
+ // Bubble out if already detached.
+ if (!this.onEventListener)
+ return;
+
+ // If the activity distributor is available, let's detach it when the XHR
+ // transaction is closed. Since, in case of multipart XHRs the onLoad method
+ // (readyState == 4) can be called mutliple times.
+ // Keep in mind:
+ // 1) It can happen that the TRANSACTION_CLOSE event comes before onload (if
+ // the XHR is made as part of the page load), so detach if it's already closed.
+ // 2) In case of immediate cache responses, the transaction doesn't have to
+ // be started at all (or the activity observer is not available in Firefox 3.5).
+ // So, also detach in this case.
+ // Make sure spy will detach if force is true.
+ if (!force && this.transactionStarted && !this.transactionClosed)
+ return;
+
+ if (FBTrace.DBG_SPY)
+ {
+ FBTrace.sysout("spy.detach; " + Http.safeGetRequestName(this.request) + ", " +
+ Url.getFileName(this.href));
+ }
+
+ // Remove itself from the list of active spies.
+ Arr.remove(this.context.spies, this);
+
+ if (typeof(eventListenerService.addListenerForAllEvents) == "function")
+ {
+ eventListenerService.removeListenerForAllEvents(this.xhrRequest,
+ this.onEventListener, true, false);
+ }
+ else
+ {
+ if (this.onreadystatechange)
+ this.xhrRequest.onreadystatechange = this.onreadystatechange;
+
+ try { this.xhrRequest.removeEventListener("load", this.onLoad, false); } catch (e) {}
+ try { this.xhrRequest.removeEventListener("error", this.onError, false); } catch (e) {}
+ try { this.xhrRequest.removeEventListener("abort", this.onAbort, false); } catch (e) {}
+ }
+
+ this.onreadystatechange = null;
+ this.onLoad = null;
+ this.onError = null;
+ this.onAbort = null;
+
+ this.onEventListener = null;
+ },
+
+ getURL: function()
+ {
+ // Don't use this.xhrRequest.channel.name to get the URL. In cases where the
+ // same XHR object is reused for more requests, the URL can be wrong (issue 4738).
+ return this.href;
+ },
+
+ // Cache listener
+ onStopRequest: function(context, request, responseText)
+ {
+ if (FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.onStopRequest: " + Http.safeGetRequestName(request));
+
+ if (!responseText)
+ return;
+
+ if (request == this.request)
+ this.responseText = responseText;
+ },
+};
+
+// ********************************************************************************************* //
+
+function onHTTPSpyReadyStateChange(spy, event)
+{
+ if (FBTrace.DBG_SPY)
+ {
+ var name = Url.getFileName(spy.request.URI.asciiSpec);
+ var origName = Url.getFileName(spy.request.originalURI.asciiSpec);
+
+ FBTrace.sysout("spy.onHTTPSpyReadyStateChange " + spy.xhrRequest.readyState +
+ " (multipart: " + spy.xhrRequest.multipart + ") " + name + ", " + origName);
+ }
+
+ // Remember just in case spy is detached (readyState == 4).
+ var originalHandler = spy.onreadystatechange;
+
+ // ReadyStateChange event with readyState == 1 is fired when the page calls the |open| method.
+ // This event is usually not cought since spy object is attached when HTTP-ON-OPENING-REQUEST
+ // http even is fired - which happens after |readyState == 1|
+ // This scenario happens if the xhr object is reused synchronously in page callback handler
+ // (onreadystatechange) for another request. In such case we need to quickly detach our
+ // Spy object. New one will be immediatelly created when HTTP-ON-OPENING-REQUEST is fired.
+ // See issue 5049
+ if (spy.xhrRequest.readyState == 1)
+ {
+ if (FBTrace.DBG_SPY)
+ {
+ FBTrace.sysout("spy.onHTTPSpyReadyStateChange; ready state == 1, XHR probably being " +
+ "reused, detach" + Http.safeGetRequestName(spy.request) + ", " +
+ Url.getFileName(spy.href));
+ }
+
+ spy.detach(false);
+ return;
+ }
+
+ // Force response text to be updated in the UI (in case the console entry
+ // has been already expanded and the response tab selected).
+ if (spy.logRow && spy.xhrRequest.readyState >= 3)
+ {
+ var netInfoBox = getInfoBox(spy);
+ if (netInfoBox)
+ {
+ netInfoBox.htmlPresented = false;
+ netInfoBox.responsePresented = false;
+ }
+ }
+
+ // If the request is loading update the end time.
+ if (spy.logRow && spy.xhrRequest.readyState == 3 && spy.sendTime && spy.endTime)
+ {
+ spy.responseTime = spy.endTime - spy.sendTime;
+ updateTime(spy);
+ }
+
+ // Request loaded. Get all the info from the request now, just in case the
+ // XHR would be aborted in the original onReadyStateChange handler.
+ if (spy.xhrRequest.readyState == 4)
+ {
+ // Cumulate response so that multipart response content is properly displayed.
+ spy.responseText += Http.safeGetXHRResponseText(spy.xhrRequest);
+
+ // The XHR is loaded now (used also by the activity observer).
+ spy.loaded = true;
+
+ // Update UI.
+ updateLogRow(spy);
+ updateHttpSpyInfo(spy, true);
+
+ // Notify the Net panel about a request being loaded.
+ // xxxHonza: I don't think this is necessary.
+ // stopFile this breaks layout of the net panel in case of redirects.
+ var netProgress = spy.context.netProgress;
+ if (netProgress && !isRedirect(spy.request))
+ netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText,
+ spy.responseText]);
+
+ // Notify registered listeners about finish of the XHR.
+ Events.dispatch(Firebug.Spy.fbListeners, "onLoad", [spy.context, spy]);
+ }
+
+ // Pass the event to the original page handler.
+ if (typeof(eventListenerService.addListenerForAllEvents) == "undefined")
+ callPageHandler(spy, event, originalHandler);
+}
+
+function callPageHandler(spy, event, originalHandler)
+{
+ try
+ {
+ // Calling the page handler throwed an exception (see #502959)
+ // This should be fixed in Firefox 3.5
+ if (originalHandler && event)
+ {
+ if (originalHandler.handleEvent)
+ originalHandler.handleEvent(event);
+ else
+ originalHandler.call(spy.xhrRequest, event);
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("spy.onHTTPSpyReadyStateChange: EXCEPTION " + exc, [exc, event]);
+
+ var xpcError = Firebug.Errors.reparseXPC(exc, spy.context);
+ if (xpcError)
+ {
+ // TODO attach trace
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("spy.onHTTPSpyReadyStateChange: reparseXPC", xpcError);
+
+ // Make sure the exception is displayed in both Firefox & Firebug console.
+ throw new Error(xpcError.message, xpcError.href, xpcError.lineNo);
+ }
+ else
+ {
+ throw exc;
+ }
+ }
+}
+
+function onHTTPSpyLoad(spy)
+{
+ if (FBTrace.DBG_SPY)
+ {
+ FBTrace.sysout("spy.onHTTPSpyLoad: " + Http.safeGetRequestName(spy.request) + ", " +
+ Url.getFileName(spy.href) + ", state: " + spy.xhrRequest.readyState);
+ }
+
+ // Detach must be done in onLoad (not in onreadystatechange) otherwise onAbort would
+ // not be handled. Note that onAbort, onError and onLoad events are fired after
+ // onreadystatechange and must also be handled.
+ // Issue 5049: only detach if XHR state == 4. It can happen that XHR object is being
+ // reused for another request and onLoad fires too soon. See also onHTTPSpyReadyStateChange
+ // for more details.
+ if (spy.xhrRequest.readyState == 4)
+ spy.detach(false);
+
+ // If the spy is not loaded yet (and so, the response was not cached), do it now.
+ // This can happen since synchronous XHRs don't fire onReadyStateChange event (issue 2868).
+ if (!spy.loaded)
+ {
+ spy.loaded = true;
+ spy.responseText = Http.safeGetXHRResponseText(spy.xhrRequest);
+
+ updateLogRow(spy);
+ updateHttpSpyInfo(spy, true);
+ }
+}
+
+function onHTTPSpyError(spy)
+{
+ if (FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.onHTTPSpyError; " + spy.href);
+
+ spy.detach(false);
+ spy.loaded = true;
+ spy.error= true;
+
+ updateLogRow(spy);
+}
+
+function onHTTPSpyAbort(spy)
+{
+ if (FBTrace.DBG_SPY)
+ FBTrace.sysout("spy.onHTTPSpyAbort: " + spy.href);
+
+ spy.detach(false);
+ spy.loaded = true;
+
+ // Ignore aborts if the request already has a response status.
+ if (spy.xhrRequest.status)
+ {
+ updateLogRow(spy);
+ return;
+ }
+
+ spy.aborted = true;
+ spy.statusText = "Aborted";
+
+ updateLogRow(spy);
+
+ // Notify Net pane about a request beeing aborted.
+ // xxxHonza: the net panel shoud find out this itself.
+ var netProgress = spy.context.netProgress;
+ if (netProgress)
+ {
+ netProgress.post(netProgress.abortFile, [spy.request, spy.endTime, spy.postText,
+ spy.responseText]);
+ }
+}
+
+// ********************************************************************************************* //
+
+/**
+ * @domplate Represents a template for XHRs logged in the Console panel. The body of the
+ * log (displayed when expanded) is rendered using {@link Firebug.NetMonitor.NetInfoBody}.
+ */
+with (Domplate) {
+Firebug.Spy.XHR = domplate(Firebug.Rep,
+/** @lends Firebug.Spy.XHR */
+{
+ tag:
+ DIV({"class": "spyHead", _repObject: "$object"},
+ TABLE({"class": "spyHeadTable focusRow outerFocusRow", cellpadding: 0, cellspacing: 0,
+ "role": "listitem", "aria-expanded": "false"},
+ TBODY({"role": "presentation"},
+ TR({"class": "spyRow"},
+ TD({"class": "spyTitleCol spyCol", onclick: "$onToggleBody"},
+ DIV({"class": "spyTitle"},
+ "$object|getCaption"
+ ),
+ DIV({"class": "spyFullTitle spyTitle"},
+ "$object|getFullUri"
+ )
+ ),
+ TD({"class": "spyCol"},
+ DIV({"class": "spyStatus"}, "$object|getStatus")
+ ),
+ TD({"class": "spyCol"},
+ SPAN({"class": "spyIcon"})
+ ),
+ TD({"class": "spyCol"},
+ SPAN({"class": "spyTime"})
+ ),
+ TD({"class": "spyCol"},
+ TAG(FirebugReps.SourceLink.tag, {object: "$object.sourceLink"})
+ )
+ )
+ )
+ )
+ ),
+
+ getCaption: function(spy)
+ {
+ return spy.method.toUpperCase() + " " + Str.cropString(spy.getURL(), 100);
+ },
+
+ getFullUri: function(spy)
+ {
+ return spy.method.toUpperCase() + " " + spy.getURL();
+ },
+
+ getStatus: function(spy)
+ {
+ var text = "";
+ if (spy.statusCode)
+ text += spy.statusCode + " ";
+
+ if (spy.statusText)
+ return text += spy.statusText;
+
+ return text;
+ },
+
+ onToggleBody: function(event)
+ {
+ var target = event.currentTarget;
+ var logRow = Dom.getAncestorByClass(target, "logRow-spy");
+
+ if (Events.isLeftClick(event))
+ {
+ Css.toggleClass(logRow, "opened");
+
+ var spy = logRow.getElementsByClassName("spyHead")[0].repObject;
+ var spyHeadTable = Dom.getAncestorByClass(target, "spyHeadTable");
+
+ if (Css.hasClass(logRow, "opened"))
+ {
+ updateHttpSpyInfo(spy);
+
+ if (spyHeadTable)
+ spyHeadTable.setAttribute("aria-expanded", "true");
+ }
+ else
+ {
+ // Notify all listeners about closing XHR entry and destroying the body.
+ // Any custom tabs should be removed now.
+ var netInfoBox = getInfoBox(spy);
+ Events.dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody",
+ [netInfoBox, spy]);
+
+ if (spyHeadTable)
+ spyHeadTable.setAttribute("aria-expanded", "false");
+
+ // Remove the info box, it'll be re-created (together with custom tabs)
+ // the next time the XHR entry is opened/updated.
+ netInfoBox.parentNode.removeChild(netInfoBox);
+ }
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ copyURL: function(spy)
+ {
+ System.copyToClipboard(spy.getURL());
+ },
+
+ copyParams: function(spy)
+ {
+ var text = spy.postText;
+ if (!text)
+ return;
+
+ var url = Url.reEncodeURL(spy, text, true);
+ System.copyToClipboard(url);
+ },
+
+ copyAsCurl: function(spy)
+ {
+ System.copyToClipboard(NetUtils.generateCurlCommand(spy,
+ Options.get("net.curlAddCompressedArgument")));
+ },
+
+ copyResponse: function(spy)
+ {
+ System.copyToClipboard(spy.responseText);
+ },
+
+ openInTab: function(spy)
+ {
+ Win.openNewTab(spy.getURL(), spy.postText);
+ },
+
+ resend: function(spy, context)
+ {
+ try
+ {
+ if (!context.window)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("spy.resend; ERROR no context");
+ return;
+ }
+
+ // xxxHonza: must be done through Console RDP
+ var win = Wrapper.unwrapObject(context.window);
+ var request = new win.XMLHttpRequest();
+ request.open(spy.method, spy.href, true);
+
+ var headers = spy.requestHeaders;
+ for (var i=0; headers && i<headers.length; i++)
+ {
+ var header = headers[i];
+ request.setRequestHeader(header.name, header.value);
+ }
+
+ var postData = NetUtils.getPostText(spy, context, true);
+ request.send(postData);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("spy.resend; EXCEPTION " + err, err);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ supportsObject: function(object, type)
+ {
+ return object instanceof Firebug.Spy.XMLHttpRequestSpy;
+ },
+
+ browseObject: function(spy, context)
+ {
+ var url = spy.getURL();
+ Win.openNewTab(url);
+ return true;
+ },
+
+ getRealObject: function(spy, context)
+ {
+ return spy.xhrRequest;
+ },
+
+ getContextMenuItems: function(spy, target, context)
+ {
+ var items = [{
+ label: "CopyLocation",
+ tooltiptext: "clipboard.tip.Copy_Location",
+ id: "fbSpyCopyLocation",
+ command: Obj.bindFixed(this.copyURL, this, spy)
+ }];
+
+ if (spy.postText)
+ {
+ items.push({
+ label: "CopyLocationParameters",
+ tooltiptext: "net.tip.Copy_Location_Parameters",
+ command: Obj.bindFixed(this.copyParams, this, spy)
+ });
+ }
+
+ items.push({
+ label: "CopyResponse",
+ id: "fbSpyCopyResponse",
+ command: Obj.bindFixed(this.copyResponse, this, spy)
+ });
+
+ items.push(
+ {
+ id: "fbCopyAsCurl",
+ label: "CopyAsCurl",
+ tooltiptext: "net.tip.Copy_as_cURL",
+ command: Obj.bindFixed(this.copyAsCurl, this, spy)
+ }
+ );
+
+ items.push("-");
+
+ items.push({
+ label: "OpenInTab",
+ tooltiptext: "firebug.tip.Open_In_Tab",
+ id: "fbSpyOpenInTab",
+ command: Obj.bindFixed(this.openInTab, this, spy)
+ });
+
+ items.push({
+ label: "Open_Response_In_New_Tab",
+ tooltiptext: "net.tip.Open_Response_In_New_Tab",
+ id: "fbSpyOpenResponseInTab",
+ command: Obj.bindFixed(NetUtils.openResponseInTab, this, spy)
+ });
+
+ items.push("-");
+
+ items.push({
+ label: "net.label.Resend",
+ tooltiptext: "net.tip.Resend",
+ id: "fbSpyResend",
+ command: Obj.bindFixed(this.resend, this, spy, context)
+ });
+
+ return items;
+ }
+});
+};
+
+// ********************************************************************************************* //
+
+Firebug.XHRSpyListener =
+{
+ onStart: function(context, spy)
+ {
+ },
+
+ onLoad: function(context, spy)
+ {
+ }
+};
+
+// ********************************************************************************************* //
+
+function updateTime(spy)
+{
+ if (spy.logRow)
+ {
+ var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0);
+ if (spy.sendTime && spy.endTime)
+ timeBox.textContent = " " + Str.formatTime(spy.endTime - spy.sendTime);
+ }
+}
+
+function updateLogRow(spy)
+{
+ updateTime(spy);
+
+ if(spy.logRow)
+ {
+ var statusBox = spy.logRow.getElementsByClassName("spyStatus").item(0);
+ statusBox.textContent = Firebug.Spy.XHR.getStatus(spy);
+ }
+
+ if (spy.loaded)
+ {
+ Css.removeClass(spy.logRow, "loading");
+ Css.setClass(spy.logRow, "loaded");
+ }
+
+ if (spy.error || spy.aborted)
+ {
+ Css.setClass(spy.logRow, "error");
+ }
+
+ try
+ {
+ var errorRange = Math.floor(spy.xhrRequest.status/100);
+ if (errorRange == 4 || errorRange == 5)
+ Css.setClass(spy.logRow, "error");
+ }
+ catch (exc)
+ {
+ }
+}
+
+function updateHttpSpyInfo(spy, updateInfoBody)
+{
+ if (!spy.logRow || !Css.hasClass(spy.logRow, "opened"))
+ return;
+
+ if (!spy.params)
+ spy.params = Url.parseURLParams(spy.href + "");
+
+ if (!spy.requestHeaders)
+ spy.requestHeaders = getRequestHeaders(spy);
+
+ if (!spy.responseHeaders && spy.loaded)
+ spy.responseHeaders = getResponseHeaders(spy);
+
+ var template = Firebug.NetMonitor.NetInfoBody;
+ var netInfoBox = getInfoBox(spy);
+
+ var defaultTab;
+
+ // If the associated XHR row is currently expanded, make sure to recreate
+ // the info bodies if the flag says so.
+ if (updateInfoBody)
+ {
+ // Remember the current selected info tab.
+ if (netInfoBox.selectedTab)
+ defaultTab = netInfoBox.selectedTab.getAttribute("view");
+
+ // Remove the info box so, it's recreated below.
+ netInfoBox.parentNode.removeChild(netInfoBox);
+ netInfoBox = null;
+ }
+
+ if (!netInfoBox)
+ {
+ var head = spy.logRow.getElementsByClassName("spyHead")[0];
+ netInfoBox = template.tag.append({"file": spy}, head);
+
+ // Notify listeners so, custom info tabs can be appended
+ Events.dispatch(template.fbListeners, "initTabBody", [netInfoBox, spy]);
+
+ // If the response tab isn't available/visible (perhaps the response didn't came yet),
+ // select the 'Headers' tab by default or keep the default tab.
+ defaultTab = defaultTab || (template.hideResponse(spy) ? "Headers" : "Response");
+ template.selectTabByName(netInfoBox, defaultTab);
+ }
+ else
+ {
+ template.updateInfo(netInfoBox, spy, spy.context);
+ }
+}
+
+function getInfoBox(spy)
+{
+ return spy.logRow.querySelector(".spyHead > .netInfoBody");
+}
+
+function getInfoBox(spy)
+{
+ return spy.logRow.querySelector(".spyHead > .netInfoBody");
+}
+
+// ********************************************************************************************* //
+
+function getRequestHeaders(spy)
+{
+ var headers = [];
+
+ var channel = spy.xhrRequest.channel;
+ if (channel instanceof Ci.nsIHttpChannel)
+ {
+ channel.visitRequestHeaders(
+ {
+ visitHeader: function(name, value)
+ {
+ headers.push({name: name, value: value});
+ }
+ });
+ }
+
+ return headers;
+}
+
+function getResponseHeaders(spy)
+{
+ var headers = [];
+
+ try
+ {
+ var channel = spy.xhrRequest.channel;
+ if (channel instanceof Ci.nsIHttpChannel)
+ {
+ channel.visitResponseHeaders(
+ {
+ visitHeader: function(name, value)
+ {
+ headers.push({name: name, value: value});
+ }
+ });
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_SPY || FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("spy.getResponseHeaders; EXCEPTION " +
+ Http.safeGetRequestName(spy.request), exc);
+ }
+ }
+
+ return headers;
+}
+
+function isRedirect(request)
+{
+ try
+ {
+ var name = request.URI.asciiSpec;
+ var origName = request.originalURI.asciiSpec;
+ return (name != origName);
+ }
+ catch (e)
+ {
+ }
+
+ return false;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.Spy);
+Firebug.registerRep(Firebug.Spy.XHR);
+
+return Firebug.Spy;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/net/svgViewer.js b/content/firebug/net/svgViewer.js
index 6b32f90..84476fe 100644
--- a/content/firebug/net/svgViewer.js
+++ b/content/firebug/net/svgViewer.js
@@ -1,183 +1,183 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/xpcom",
- "firebug/lib/css",
- "firebug/lib/http",
- "firebug/net/netUtils"
-],
-function(Obj, Firebug, Domplate, Locale, Xpcom, Css, Http, NetUtils) {
-
-// ************************************************************************************************
-// Constants
-
-// List of SVG related content types.
-var contentTypes =
-[
- "image/svg+xml",
-];
-
-// ************************************************************************************************
-// Model implementation
-
-/**
- * @module Implements viewer for SVG based network responses. In order to create a new
- * tab wihin network request detail, a listener is registered into
- * <code>Firebug.NetMonitor.NetInfoBody</code> object.
- */
-Firebug.SVGViewerModel = Obj.extend(Firebug.Module,
-/** lends Firebug.SVGViewerModel */
-{
- dispatchName: "svgViewer",
-
- initialize: function()
- {
- Firebug.ActivableModule.initialize.apply(this, arguments);
- Firebug.NetMonitor.NetInfoBody.addListener(this);
- },
-
- shutdown: function()
- {
- Firebug.ActivableModule.shutdown.apply(this, arguments);
- Firebug.NetMonitor.NetInfoBody.removeListener(this);
- },
-
- /**
- * Check response's content-type and if it's a SVG, create a new tab with SVG preview.
- */
- initTabBody: function(infoBox, file)
- {
- if (FBTrace.DBG_SVGVIEWER)
- FBTrace.sysout("svgviewer.initTabBody", infoBox);
-
- // If the response is SVG let's display a pretty preview.
- if (this.isSVG(Http.safeGetContentType(file.request)))
- {
- Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "SVG",
- Locale.$STR("svgviewer.tab.SVG"));
-
- if (FBTrace.DBG_SVGVIEWER)
- FBTrace.sysout("svgviewer.initTabBody; SVG response available");
- }
- },
-
- isSVG: function(contentType)
- {
- if (!contentType)
- return false;
-
- return NetUtils.matchesContentType(contentType, contentTypes);
- },
-
- /**
- * Parse SVG response and render pretty printed preview.
- */
- updateTabBody: function(infoBox, file, context)
- {
- var tab = infoBox.selectedTab;
- var tabBody = infoBox.getElementsByClassName("netInfoSVGText").item(0);
- if (!Css.hasClass(tab, "netInfoSVGTab") || tabBody.updated)
- return;
-
- tabBody.updated = true;
-
- this.insertSVG(tabBody, file.responseText);
- },
-
- insertSVG: function(parentNode, text)
- {
- var parser = Xpcom.CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
- var doc = parser.parseFromString(text, "text/xml");
- var root = doc.documentElement;
-
- // Error handling
- var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
- if (root.namespaceURI == nsURI && root.nodeName == "parsererror")
- {
- this.ParseError.tag.replace({error: {
- message: root.firstChild.nodeValue,
- source: root.lastChild.textContent
- }}, parentNode);
- return;
- }
-
- if (FBTrace.DBG_SVGVIEWER)
- FBTrace.sysout("svgviewer.updateTabBody; SVG response parsed", doc);
-
- // Override getHidden in these templates. The parsed SVG document is
- // hidden, but we want to display it using 'visible' styling.
- var templates = [
- Firebug.HTMLPanel.CompleteElement,
- Firebug.HTMLPanel.Element,
- Firebug.HTMLPanel.TextElement,
- Firebug.HTMLPanel.EmptyElement,
- Firebug.HTMLPanel.XEmptyElement,
- ];
-
- var originals = [];
- for (var i=0; i<templates.length; i++)
- {
- originals[i] = templates[i].getHidden;
- templates[i].getHidden = function() {
- return "";
- };
- }
-
- // Generate SVG preview.
- Firebug.HTMLPanel.CompleteElement.tag.replace({object: doc.documentElement}, parentNode);
-
- for (var i=0; i<originals.length; i++)
- templates[i].getHidden = originals[i];
- }
-});
-
-// ************************************************************************************************
-// Domplate
-
-/**
- * @domplate Represents a template for displaying SVG parser errors. Used by
- * <code>Firebug.SVGViewerModel</code>.
- */
-with (Domplate) {
-Firebug.SVGViewerModel.ParseError = domplate(Firebug.Rep,
-{
- tag:
- DIV({"class": "svgInfoError"},
- DIV({"class": "svgInfoErrorMsg"}, "$error.message"),
- PRE({"class": "svgInfoErrorSource"}, "$error|getSource")
- ),
-
- getSource: function(error)
- {
- var parts = error.source.split("\n");
- if (parts.length != 2)
- return error.source;
-
- var limit = 50;
- var column = parts[1].length;
- if (column >= limit) {
- parts[0] = "..." + parts[0].substr(column - limit);
- parts[1] = "..." + parts[1].substr(column - limit);
- }
-
- if (parts[0].length > 80)
- parts[0] = parts[0].substr(0, 80) + "...";
-
- return parts.join("\n");
- }
-});
-};
-
-// ************************************************************************************************
-// Registration
-
-Firebug.registerModule(Firebug.SVGViewerModel);
-
-return Firebug.SVGViewerModel;
-
-// ************************************************************************************************
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/xpcom",
+ "firebug/lib/css",
+ "firebug/lib/http",
+ "firebug/net/netUtils"
+],
+function(Obj, Firebug, Domplate, Locale, Xpcom, Css, Http, NetUtils) {
+
+// ************************************************************************************************
+// Constants
+
+// List of SVG related content types.
+var contentTypes =
+[
+ "image/svg+xml",
+];
+
+// ************************************************************************************************
+// Model implementation
+
+/**
+ * @module Implements viewer for SVG based network responses. In order to create a new
+ * tab wihin network request detail, a listener is registered into
+ * <code>Firebug.NetMonitor.NetInfoBody</code> object.
+ */
+Firebug.SVGViewerModel = Obj.extend(Firebug.Module,
+/** lends Firebug.SVGViewerModel */
+{
+ dispatchName: "svgViewer",
+
+ initialize: function()
+ {
+ Firebug.ActivableModule.initialize.apply(this, arguments);
+ Firebug.NetMonitor.NetInfoBody.addListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.ActivableModule.shutdown.apply(this, arguments);
+ Firebug.NetMonitor.NetInfoBody.removeListener(this);
+ },
+
+ /**
+ * Check response's content-type and if it's a SVG, create a new tab with SVG preview.
+ */
+ initTabBody: function(infoBox, file)
+ {
+ if (FBTrace.DBG_SVGVIEWER)
+ FBTrace.sysout("svgviewer.initTabBody", infoBox);
+
+ // If the response is SVG let's display a pretty preview.
+ if (this.isSVG(Http.safeGetContentType(file.request)))
+ {
+ Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "SVG",
+ Locale.$STR("svgviewer.tab.SVG"));
+
+ if (FBTrace.DBG_SVGVIEWER)
+ FBTrace.sysout("svgviewer.initTabBody; SVG response available");
+ }
+ },
+
+ isSVG: function(contentType)
+ {
+ if (!contentType)
+ return false;
+
+ return NetUtils.matchesContentType(contentType, contentTypes);
+ },
+
+ /**
+ * Parse SVG response and render pretty printed preview.
+ */
+ updateTabBody: function(infoBox, file, context)
+ {
+ var tab = infoBox.selectedTab;
+ var tabBody = infoBox.getElementsByClassName("netInfoSVGText").item(0);
+ if (!Css.hasClass(tab, "netInfoSVGTab") || tabBody.updated)
+ return;
+
+ tabBody.updated = true;
+
+ this.insertSVG(tabBody, file.responseText);
+ },
+
+ insertSVG: function(parentNode, text)
+ {
+ var parser = Xpcom.CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
+ var doc = parser.parseFromString(text, "text/xml");
+ var root = doc.documentElement;
+
+ // Error handling
+ var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
+ if (root.namespaceURI == nsURI && root.nodeName == "parsererror")
+ {
+ this.ParseError.tag.replace({error: {
+ message: root.firstChild.nodeValue,
+ source: root.lastChild.textContent
+ }}, parentNode);
+ return;
+ }
+
+ if (FBTrace.DBG_SVGVIEWER)
+ FBTrace.sysout("svgviewer.updateTabBody; SVG response parsed", doc);
+
+ // Override getHidden in these templates. The parsed SVG document is
+ // hidden, but we want to display it using 'visible' styling.
+ var templates = [
+ Firebug.HTMLPanel.CompleteElement,
+ Firebug.HTMLPanel.Element,
+ Firebug.HTMLPanel.TextElement,
+ Firebug.HTMLPanel.EmptyElement,
+ Firebug.HTMLPanel.XEmptyElement,
+ ];
+
+ var originals = [];
+ for (var i=0; i<templates.length; i++)
+ {
+ originals[i] = templates[i].getHidden;
+ templates[i].getHidden = function() {
+ return "";
+ };
+ }
+
+ // Generate SVG preview.
+ Firebug.HTMLPanel.CompleteElement.tag.replace({object: doc.documentElement}, parentNode);
+
+ for (var i=0; i<originals.length; i++)
+ templates[i].getHidden = originals[i];
+ }
+});
+
+// ************************************************************************************************
+// Domplate
+
+/**
+ * @domplate Represents a template for displaying SVG parser errors. Used by
+ * <code>Firebug.SVGViewerModel</code>.
+ */
+with (Domplate) {
+Firebug.SVGViewerModel.ParseError = domplate(Firebug.Rep,
+{
+ tag:
+ DIV({"class": "svgInfoError"},
+ DIV({"class": "svgInfoErrorMsg"}, "$error.message"),
+ PRE({"class": "svgInfoErrorSource"}, "$error|getSource")
+ ),
+
+ getSource: function(error)
+ {
+ var parts = error.source.split("\n");
+ if (parts.length != 2)
+ return error.source;
+
+ var limit = 50;
+ var column = parts[1].length;
+ if (column >= limit) {
+ parts[0] = "..." + parts[0].substr(column - limit);
+ parts[1] = "..." + parts[1].substr(column - limit);
+ }
+
+ if (parts[0].length > 80)
+ parts[0] = parts[0].substr(0, 80) + "...";
+
+ return parts.join("\n");
+ }
+});
+};
+
+// ************************************************************************************************
+// Registration
+
+Firebug.registerModule(Firebug.SVGViewerModel);
+
+return Firebug.SVGViewerModel;
+
+// ************************************************************************************************
+});
diff --git a/content/firebug/net/timeInfoTip.js b/content/firebug/net/timeInfoTip.js
index a0b4830..8554745 100644
--- a/content/firebug/net/timeInfoTip.js
+++ b/content/firebug/net/timeInfoTip.js
@@ -1,260 +1,260 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/string",
- "firebug/net/netUtils",
- "firebug/lib/dom",
-],
-function(Firebug, Domplate, Locale, Str, NetUtils, Dom) {
-with (Domplate) {
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-
-// ********************************************************************************************* //
-// Implementation
-
-/**
- * @domplate This template is used to render an info tip with detailed timing for network
- * requests. The info tip is used on the Net panel.
- */
-var TimeInfoTip = domplate(Firebug.Rep,
-{
- startTimeTag:
- TABLE({"class": "timeInfoTip"},
- TBODY(
- TR(
- TD("$startTime.time|formatStartTime"),
- TD({"class": "timeInfoTipStartLabel"},
- "$startTime|getLabel"
- )
- )
- )
- ),
-
- timingsTag:
- TABLE({"class": "timeInfoTip", "id": "fbNetTimeInfoTip", cellpadding: 0, cellspacing: 0},
- TBODY(
- TR(
- TD({width: "5%"}),
- TD({width: "5%"}),
- TD({width: "90%"})
- ),
- FOR("time", "$timings",
- TR({"class": "timeInfoTipRow", $collapsed: "$time|hideBar"},
- TD("$time|getLabel"),
- TD({"class": "timeInfoTipCell startTime"},
- "$time.start|formatStartTime"
- ),
- TD({"class": "timeInfoTipCell bars"},
- DIV({"class": "timeInfoTipBox"},
- DIV({"class": "timeInfoTipBar $time|getBarClass",
- style: "left: $time.left%; width: $time.width%"},
- SPAN({"class": "perfTimingBarLabel"}, "$time.elapsed|formatTime")
- )
- )
- )
- )
- )
- )
- ),
-
- descriptionTag:
- DIV({"class": "timeInfoTipDesc"},
- "$label"
- ),
-
- eventsTag:
- TABLE({"class": "timeInfoTip"},
- TBODY(
- FOR("event", "$events",
- TR({"class": "timeInfoTipEventRow"},
- TD({"class": "timeInfoTipBar", align: "center"},
- DIV({"class": "$event|getTimeStampClass timeInfoTipEventBar"})
- ),
- TD("$event.start|formatStartTime"),
- TD({"class": "timeInfotTipEventName"},
- "$event|getTimeStampLabel"
- )
- )
- )
- )
- ),
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Template Getters
-
- hideBar: function(obj)
- {
- return !obj.elapsed && obj.bar == "Blocking";
- },
-
- getBarClass: function(obj)
- {
- return "net" + obj.bar + "Bar";
- },
-
- getTimeStampClass: function(obj)
- {
- return obj.classes;
- },
-
- formatTime: function(time)
- {
- return Str.formatTime(time);
- },
-
- formatStartTime: function(time)
- {
- var label = Str.formatTime(time);
- if (!time)
- return label;
-
- return (time > 0 ? "+" : "") + label;
- },
-
- getLabel: function(obj)
- {
- return Locale.$STR("requestinfo." + obj.bar);
- },
-
- getTimeStampLabel: function(obj)
- {
- return obj.name;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Render
-
- render: function(context, file, parentNode)
- {
- Dom.clearNode(parentNode);
-
- var elapsed = file.loaded ? file.endTime - file.startTime :
- file.phase.phaseEndTime - file.startTime;
- var blockingEnd = NetUtils.getBlockingEndTime(file);
-
- //Helper log for debugging timing problems.
- //NetUtils.traceRequestTiming("net.timeInfoTip.render;", file);
-
- var startTime = 0;
-
- var timings = [];
- timings.push({bar: "Blocking",
- elapsed: blockingEnd - file.startTime,
- start: startTime});
-
- timings.push({bar: "Resolving",
- elapsed: file.connectingTime - file.resolvingTime,
- start: startTime += timings[0].elapsed});
-
- // Connecting time is measured till the sending time in order to include
- // also SSL negotiation.
- // xxxHonza: time between "connected" and "sending" is SSL negotiation?
- timings.push({bar: "Connecting",
- elapsed: file.connectStarted ? file.sendingTime - file.connectingTime : 0,
- start: startTime += timings[1].elapsed});
-
- // In Fx3.6 the STATUS_SENDING_TO is always fired (nsIHttpActivityDistributor)
- // In Fx3.5 the STATUS_SENDING_TO (nsIWebProgressListener) doesn't have to come
- // This workaround is for 3.5
- var sendElapsed = file.sendStarted ? file.waitingForTime - file.sendingTime : 0;
- var sendStarted = timings[0].elapsed + timings[1].elapsed + timings[2].elapsed;
-
- timings.push({bar: "Sending",
- elapsed: sendElapsed,
- start: file.sendStarted ? file.sendingTime - file.startTime : sendStarted});
-
- timings.push({bar: "Waiting",
- elapsed: file.respondedTime - file.waitingForTime,
- start: file.waitingForTime - file.startTime});
-
- timings.push({bar: "Receiving",
- elapsed: file.endTime - file.respondedTime,
- start: file.respondedTime - file.startTime,
- loaded: file.loaded, fromCache: file.fromCache});
-
- // Calculate position of waterfall bars.
- for (var i=0; i<timings.length; i++)
- {
- var time = timings[i];
- time.left = calculatePos(time.start, elapsed);
- time.width = calculatePos(time.elapsed, elapsed);
- }
-
- // Include custom time stamps
- var events = [];
- var timeStamps = file.phase.timeStamps;
- for (var i=0; i<timeStamps.length; i++)
- {
- var timeStamp = timeStamps[i];
- events.push({
- name: timeStamp.label,
- classes: timeStamp.classes,
- start: timeStamp.time - file.startTime
- });
- }
-
- events.sort(function(a, b) {
- return a.start < b.start ? -1 : 1;
- });
-
- var phases = context.netProgress.phases;
-
- if (FBTrace.DBG_ERROR && phases.length == 0)
- FBTrace.sysout("net.render; ERROR no phases");
-
- // Insert start request time. It's computed since the beginning (page load start time)
- // i.e. from the first phase start.
- var firstPhaseStartTime = (phases.length > 0) ? phases[0].startTime : file.startTime;
-
- var startTime = {};
- startTime.time = file.startTime - firstPhaseStartTime;
- startTime.bar = "started.label";
- this.startTimeTag.append({startTime: startTime}, parentNode);
-
- // Insert separator.
- this.descriptionTag.append(
- {label: Locale.$STR("requestinfo.phases.label")},
- parentNode);
-
- // Insert request timing info.
- this.timingsTag.append({timings: timings}, parentNode);
-
- // Insert events timing info.
- if (events.length)
- {
- // Insert separator.
- this.descriptionTag.append(
- {label: Locale.$STR("requestinfo.timings.label")},
- parentNode);
-
- this.eventsTag.append({events: events}, parentNode);
- }
-
- return true;
- }
-});
-
-// ********************************************************************************************* //
-// Helpers
-
-function calculatePos(time, elapsed)
-{
- return Math.round((time / elapsed) * 100);
-}
-
-// ********************************************************************************************* //
-// Registration
-
-return TimeInfoTip;
-
-// ********************************************************************************************* //
-}});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/string",
+ "firebug/net/netUtils",
+ "firebug/lib/dom",
+],
+function(Firebug, Domplate, Locale, Str, NetUtils, Dom) {
+with (Domplate) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+
+// ********************************************************************************************* //
+// Implementation
+
+/**
+ * @domplate This template is used to render an info tip with detailed timing for network
+ * requests. The info tip is used on the Net panel.
+ */
+var TimeInfoTip = domplate(Firebug.Rep,
+{
+ startTimeTag:
+ TABLE({"class": "timeInfoTip"},
+ TBODY(
+ TR(
+ TD("$startTime.time|formatStartTime"),
+ TD({"class": "timeInfoTipStartLabel"},
+ "$startTime|getLabel"
+ )
+ )
+ )
+ ),
+
+ timingsTag:
+ TABLE({"class": "timeInfoTip", "id": "fbNetTimeInfoTip", cellpadding: 0, cellspacing: 0},
+ TBODY(
+ TR(
+ TD({width: "5%"}),
+ TD({width: "5%"}),
+ TD({width: "90%"})
+ ),
+ FOR("time", "$timings",
+ TR({"class": "timeInfoTipRow", $collapsed: "$time|hideBar"},
+ TD("$time|getLabel"),
+ TD({"class": "timeInfoTipCell startTime"},
+ "$time.start|formatStartTime"
+ ),
+ TD({"class": "timeInfoTipCell bars"},
+ DIV({"class": "timeInfoTipBox"},
+ DIV({"class": "timeInfoTipBar $time|getBarClass",
+ style: "left: $time.left%; width: $time.width%"},
+ SPAN({"class": "perfTimingBarLabel"}, "$time.elapsed|formatTime")
+ )
+ )
+ )
+ )
+ )
+ )
+ ),
+
+ descriptionTag:
+ DIV({"class": "timeInfoTipDesc"},
+ "$label"
+ ),
+
+ eventsTag:
+ TABLE({"class": "timeInfoTip"},
+ TBODY(
+ FOR("event", "$events",
+ TR({"class": "timeInfoTipEventRow"},
+ TD({"class": "timeInfoTipBar", align: "center"},
+ DIV({"class": "$event|getTimeStampClass timeInfoTipEventBar"})
+ ),
+ TD("$event.start|formatStartTime"),
+ TD({"class": "timeInfotTipEventName"},
+ "$event|getTimeStampLabel"
+ )
+ )
+ )
+ )
+ ),
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Template Getters
+
+ hideBar: function(obj)
+ {
+ return !obj.elapsed && obj.bar == "Blocking";
+ },
+
+ getBarClass: function(obj)
+ {
+ return "net" + obj.bar + "Bar";
+ },
+
+ getTimeStampClass: function(obj)
+ {
+ return obj.classes;
+ },
+
+ formatTime: function(time)
+ {
+ return Str.formatTime(time);
+ },
+
+ formatStartTime: function(time)
+ {
+ var label = Str.formatTime(time);
+ if (!time)
+ return label;
+
+ return (time > 0 ? "+" : "") + label;
+ },
+
+ getLabel: function(obj)
+ {
+ return Locale.$STR("requestinfo." + obj.bar);
+ },
+
+ getTimeStampLabel: function(obj)
+ {
+ return obj.name;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Render
+
+ render: function(context, file, parentNode)
+ {
+ Dom.clearNode(parentNode);
+
+ var elapsed = file.loaded ? file.endTime - file.startTime :
+ file.phase.phaseEndTime - file.startTime;
+ var blockingEnd = NetUtils.getBlockingEndTime(file);
+
+ //Helper log for debugging timing problems.
+ //NetUtils.traceRequestTiming("net.timeInfoTip.render;", file);
+
+ var startTime = 0;
+
+ var timings = [];
+ timings.push({bar: "Blocking",
+ elapsed: blockingEnd - file.startTime,
+ start: startTime});
+
+ timings.push({bar: "Resolving",
+ elapsed: file.connectingTime - file.resolvingTime,
+ start: startTime += timings[0].elapsed});
+
+ // Connecting time is measured till the sending time in order to include
+ // also SSL negotiation.
+ // xxxHonza: time between "connected" and "sending" is SSL negotiation?
+ timings.push({bar: "Connecting",
+ elapsed: file.connectStarted ? file.sendingTime - file.connectingTime : 0,
+ start: startTime += timings[1].elapsed});
+
+ // In Fx3.6 the STATUS_SENDING_TO is always fired (nsIHttpActivityDistributor)
+ // In Fx3.5 the STATUS_SENDING_TO (nsIWebProgressListener) doesn't have to come
+ // This workaround is for 3.5
+ var sendElapsed = file.sendStarted ? file.waitingForTime - file.sendingTime : 0;
+ var sendStarted = timings[0].elapsed + timings[1].elapsed + timings[2].elapsed;
+
+ timings.push({bar: "Sending",
+ elapsed: sendElapsed,
+ start: file.sendStarted ? file.sendingTime - file.startTime : sendStarted});
+
+ timings.push({bar: "Waiting",
+ elapsed: file.respondedTime - file.waitingForTime,
+ start: file.waitingForTime - file.startTime});
+
+ timings.push({bar: "Receiving",
+ elapsed: file.endTime - file.respondedTime,
+ start: file.respondedTime - file.startTime,
+ loaded: file.loaded, fromCache: file.fromCache});
+
+ // Calculate position of waterfall bars.
+ for (var i=0; i<timings.length; i++)
+ {
+ var time = timings[i];
+ time.left = calculatePos(time.start, elapsed);
+ time.width = calculatePos(time.elapsed, elapsed);
+ }
+
+ // Include custom time stamps
+ var events = [];
+ var timeStamps = file.phase.timeStamps;
+ for (var i=0; i<timeStamps.length; i++)
+ {
+ var timeStamp = timeStamps[i];
+ events.push({
+ name: timeStamp.label,
+ classes: timeStamp.classes,
+ start: timeStamp.time - file.startTime
+ });
+ }
+
+ events.sort(function(a, b) {
+ return a.start < b.start ? -1 : 1;
+ });
+
+ var phases = context.netProgress.phases;
+
+ if (FBTrace.DBG_ERROR && phases.length == 0)
+ FBTrace.sysout("net.render; ERROR no phases");
+
+ // Insert start request time. It's computed since the beginning (page load start time)
+ // i.e. from the first phase start.
+ var firstPhaseStartTime = (phases.length > 0) ? phases[0].startTime : file.startTime;
+
+ var startTime = {};
+ startTime.time = file.startTime - firstPhaseStartTime;
+ startTime.bar = "started.label";
+ this.startTimeTag.append({startTime: startTime}, parentNode);
+
+ // Insert separator.
+ this.descriptionTag.append(
+ {label: Locale.$STR("requestinfo.phases.label")},
+ parentNode);
+
+ // Insert request timing info.
+ this.timingsTag.append({timings: timings}, parentNode);
+
+ // Insert events timing info.
+ if (events.length)
+ {
+ // Insert separator.
+ this.descriptionTag.append(
+ {label: Locale.$STR("requestinfo.timings.label")},
+ parentNode);
+
+ this.eventsTag.append({events: events}, parentNode);
+ }
+
+ return true;
+ }
+});
+
+// ********************************************************************************************* //
+// Helpers
+
+function calculatePos(time, elapsed)
+{
+ return Math.round((time / elapsed) * 100);
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return TimeInfoTip;
+
+// ********************************************************************************************* //
+}});
diff --git a/content/firebug/net/xmlViewer.js b/content/firebug/net/xmlViewer.js
index 8f6d410..d9d77ba 100644
--- a/content/firebug/net/xmlViewer.js
+++ b/content/firebug/net/xmlViewer.js
@@ -1,191 +1,191 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug",
- "firebug/lib/domplate",
- "firebug/lib/locale",
- "firebug/lib/xpcom",
- "firebug/lib/css",
- "firebug/lib/http",
- "firebug/net/netUtils"
-],
-function(Obj, Firebug, Domplate, Locale, Xpcom, Css, Http, NetUtils) {
-
-// ********************************************************************************************* //
-// Constants
-
-// List of XML related content types.
-var xmlContentTypes =
-[
- "text/xml",
- "application/xml",
- "application/xhtml+xml",
- "application/rss+xml",
- "application/atom+xml",,
- "application/vnd.mozilla.maybe.feed",
- "application/mathml+xml",
- "application/rdf+xml",
- "application/vnd.mozilla.xul+xml"
-];
-
-// ********************************************************************************************* //
-// Model implementation
-
-/**
- * @module Implements viewer for XML based network responses. In order to create a new
- * tab wihin network request detail, a listener is registered into
- * <code>Firebug.NetMonitor.NetInfoBody</code> object.
- */
-Firebug.XMLViewerModel = Obj.extend(Firebug.Module,
-/** lends Firebug.XMLViewerModel */
-{
- dispatchName: "xmlViewer",
-
- initialize: function()
- {
- Firebug.ActivableModule.initialize.apply(this, arguments);
- Firebug.NetMonitor.NetInfoBody.addListener(this);
- },
-
- shutdown: function()
- {
- Firebug.ActivableModule.shutdown.apply(this, arguments);
- Firebug.NetMonitor.NetInfoBody.removeListener(this);
- },
-
- /**
- * Check response's content-type and if it's a Xml, create a new tab with XML preview.
- */
- initTabBody: function(infoBox, file)
- {
- if (FBTrace.DBG_XMLVIEWER)
- FBTrace.sysout("xmlviewer.initTabBody", infoBox);
-
- // If the response is XML let's display a pretty preview.
- if (this.isXML(Http.safeGetContentType(file.request)))
- {
- Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "XML",
- Locale.$STR("xmlviewer.tab.XML"));
-
- if (FBTrace.DBG_XMLVIEWER)
- FBTrace.sysout("xmlviewer.initTabBody; XML response available");
- }
- },
-
- isXML: function(contentType)
- {
- if (!contentType)
- return false;
-
- return NetUtils.matchesContentType(contentType, xmlContentTypes);
- },
-
- /**
- * Parse XML response and render pretty printed preview.
- */
- updateTabBody: function(infoBox, file, context)
- {
- var tab = infoBox.selectedTab;
- var tabBody = infoBox.getElementsByClassName("netInfoXMLText").item(0);
- if (!Css.hasClass(tab, "netInfoXMLTab") || tabBody.updated)
- return;
-
- tabBody.updated = true;
-
- this.insertXML(tabBody, NetUtils.getResponseText(file, context));
- },
-
- insertXML: function(parentNode, text)
- {
- var parser = Xpcom.CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
- var doc = parser.parseFromString(text, "text/xml");
- var root = doc.documentElement;
-
- // Error handling
- var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
- if (root.namespaceURI == nsURI && root.nodeName == "parsererror")
- {
- this.ParseError.tag.replace({error: {
- message: root.firstChild.nodeValue,
- source: root.lastChild.textContent
- }}, parentNode);
- return;
- }
-
- if (FBTrace.DBG_XMLVIEWER)
- FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed", doc);
-
- // Override getHidden in these templates. The parsed XML documen is
- // hidden, but we want to display it using 'visible' styling.
- var templates = [
- Firebug.HTMLPanel.CompleteElement,
- Firebug.HTMLPanel.Element,
- Firebug.HTMLPanel.TextElement,
- Firebug.HTMLPanel.EmptyElement,
- Firebug.HTMLPanel.XEmptyElement,
- ];
-
- var originals = [];
- for (var i=0; i<templates.length; i++)
- {
- originals[i] = templates[i].getHidden;
- templates[i].getHidden = function() {
- return "";
- };
- }
-
- // Generate XML preview.
- Firebug.HTMLPanel.CompleteElement.tag.replace({object: doc.documentElement}, parentNode);
-
- for (var i=0; i<originals.length; i++)
- templates[i].getHidden = originals[i];
- }
-});
-
-// ********************************************************************************************* //
-// Domplate
-
-/**
- * @domplate Represents a template for displaying XML parser errors. Used by
- * <code>Firebug.XMLViewerModel</code>.
- */
-with (Domplate) {
-Firebug.XMLViewerModel.ParseError = domplate(Firebug.Rep,
-{
- tag:
- DIV({"class": "xmlInfoError"},
- DIV({"class": "xmlInfoErrorMsg"}, "$error.message"),
- PRE({"class": "xmlInfoErrorSource"}, "$error|getSource")
- ),
-
- getSource: function(error)
- {
- var parts = error.source.split("\n");
- if (parts.length != 2)
- return error.source;
-
- var limit = 50;
- var column = parts[1].length;
- if (column >= limit) {
- parts[0] = "..." + parts[0].substr(column - limit);
- parts[1] = "..." + parts[1].substr(column - limit);
- }
-
- if (parts[0].length > 80)
- parts[0] = parts[0].substr(0, 80) + "...";
-
- return parts.join("\n");
- }
-});
-};
-
-// ********************************************************************************************* //
-// Registration
-
-Firebug.registerModule(Firebug.XMLViewerModel);
-
-return Firebug.XMLViewerModel;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/domplate",
+ "firebug/lib/locale",
+ "firebug/lib/xpcom",
+ "firebug/lib/css",
+ "firebug/lib/http",
+ "firebug/net/netUtils"
+],
+function(Obj, Firebug, Domplate, Locale, Xpcom, Css, Http, NetUtils) {
+
+// ********************************************************************************************* //
+// Constants
+
+// List of XML related content types.
+var xmlContentTypes =
+[
+ "text/xml",
+ "application/xml",
+ "application/xhtml+xml",
+ "application/rss+xml",
+ "application/atom+xml",,
+ "application/vnd.mozilla.maybe.feed",
+ "application/mathml+xml",
+ "application/rdf+xml",
+ "application/vnd.mozilla.xul+xml"
+];
+
+// ********************************************************************************************* //
+// Model implementation
+
+/**
+ * @module Implements viewer for XML based network responses. In order to create a new
+ * tab wihin network request detail, a listener is registered into
+ * <code>Firebug.NetMonitor.NetInfoBody</code> object.
+ */
+Firebug.XMLViewerModel = Obj.extend(Firebug.Module,
+/** lends Firebug.XMLViewerModel */
+{
+ dispatchName: "xmlViewer",
+
+ initialize: function()
+ {
+ Firebug.ActivableModule.initialize.apply(this, arguments);
+ Firebug.NetMonitor.NetInfoBody.addListener(this);
+ },
+
+ shutdown: function()
+ {
+ Firebug.ActivableModule.shutdown.apply(this, arguments);
+ Firebug.NetMonitor.NetInfoBody.removeListener(this);
+ },
+
+ /**
+ * Check response's content-type and if it's a Xml, create a new tab with XML preview.
+ */
+ initTabBody: function(infoBox, file)
+ {
+ if (FBTrace.DBG_XMLVIEWER)
+ FBTrace.sysout("xmlviewer.initTabBody", infoBox);
+
+ // If the response is XML let's display a pretty preview.
+ if (this.isXML(Http.safeGetContentType(file.request)))
+ {
+ Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "XML",
+ Locale.$STR("xmlviewer.tab.XML"));
+
+ if (FBTrace.DBG_XMLVIEWER)
+ FBTrace.sysout("xmlviewer.initTabBody; XML response available");
+ }
+ },
+
+ isXML: function(contentType)
+ {
+ if (!contentType)
+ return false;
+
+ return NetUtils.matchesContentType(contentType, xmlContentTypes);
+ },
+
+ /**
+ * Parse XML response and render pretty printed preview.
+ */
+ updateTabBody: function(infoBox, file, context)
+ {
+ var tab = infoBox.selectedTab;
+ var tabBody = infoBox.getElementsByClassName("netInfoXMLText").item(0);
+ if (!Css.hasClass(tab, "netInfoXMLTab") || tabBody.updated)
+ return;
+
+ tabBody.updated = true;
+
+ this.insertXML(tabBody, NetUtils.getResponseText(file, context));
+ },
+
+ insertXML: function(parentNode, text)
+ {
+ var parser = Xpcom.CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
+ var doc = parser.parseFromString(text, "text/xml");
+ var root = doc.documentElement;
+
+ // Error handling
+ var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
+ if (root.namespaceURI == nsURI && root.nodeName == "parsererror")
+ {
+ this.ParseError.tag.replace({error: {
+ message: root.firstChild.nodeValue,
+ source: root.lastChild.textContent
+ }}, parentNode);
+ return;
+ }
+
+ if (FBTrace.DBG_XMLVIEWER)
+ FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed", doc);
+
+ // Override getHidden in these templates. The parsed XML documen is
+ // hidden, but we want to display it using 'visible' styling.
+ var templates = [
+ Firebug.HTMLPanel.CompleteElement,
+ Firebug.HTMLPanel.Element,
+ Firebug.HTMLPanel.TextElement,
+ Firebug.HTMLPanel.EmptyElement,
+ Firebug.HTMLPanel.XEmptyElement,
+ ];
+
+ var originals = [];
+ for (var i=0; i<templates.length; i++)
+ {
+ originals[i] = templates[i].getHidden;
+ templates[i].getHidden = function() {
+ return "";
+ };
+ }
+
+ // Generate XML preview.
+ Firebug.HTMLPanel.CompleteElement.tag.replace({object: doc.documentElement}, parentNode);
+
+ for (var i=0; i<originals.length; i++)
+ templates[i].getHidden = originals[i];
+ }
+});
+
+// ********************************************************************************************* //
+// Domplate
+
+/**
+ * @domplate Represents a template for displaying XML parser errors. Used by
+ * <code>Firebug.XMLViewerModel</code>.
+ */
+with (Domplate) {
+Firebug.XMLViewerModel.ParseError = domplate(Firebug.Rep,
+{
+ tag:
+ DIV({"class": "xmlInfoError"},
+ DIV({"class": "xmlInfoErrorMsg"}, "$error.message"),
+ PRE({"class": "xmlInfoErrorSource"}, "$error|getSource")
+ ),
+
+ getSource: function(error)
+ {
+ var parts = error.source.split("\n");
+ if (parts.length != 2)
+ return error.source;
+
+ var limit = 50;
+ var column = parts[1].length;
+ if (column >= limit) {
+ parts[0] = "..." + parts[0].substr(column - limit);
+ parts[1] = "..." + parts[1].substr(column - limit);
+ }
+
+ if (parts[0].length > 80)
+ parts[0] = parts[0].substr(0, 80) + "...";
+
+ return parts.join("\n");
+ }
+});
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerModule(Firebug.XMLViewerModel);
+
+return Firebug.XMLViewerModel;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/trace.js b/content/firebug/trace.js
index 3e4161b..e27bb4d 100644
--- a/content/firebug/trace.js
+++ b/content/firebug/trace.js
@@ -1,47 +1,47 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Our global trace object.
-
-var FBTrace = {};
-
-// ********************************************************************************************* //
-
-(function() {
-
-// ********************************************************************************************* //
-
-try
-{
- var scope = {};
- Components.utils["import"]("resource://firebug/fbtrace.js", scope);
- FBTrace = scope.FBTrace;
-
- FBTrace.time("SCRIPTTAG_TIME");
-}
-catch (err)
-{
- Components.utils.reportError(err);
-}
-
-// ********************************************************************************************* //
-// Some examples of tracing APIs
-
-// 1) Log "Hello World!" into the console.
-// FBTrace.sysout("Hello World!")
-//
-// 2) Log "Hello World!" if the DBG_ERRORS option is true.
-// if (FBTrace.DBG_ERRORS)
-// FBTrace.sysout("Hello World!");
-//
-// 3) Log "Hello World!" and various info about 'world' object.
-// FBTrace.sysout("Hello World!", world);
-//
-// 4) Log into specific console (created by Firebug extension).
-// FBTrace.dump("firebug.extensions", "Hello World!", world);
-// FBTrace.dump("chromebug.extensions", "Hello World!", world);
-//
-// TODO: how to open another console.
-
-// ********************************************************************************************* //
-})();
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Our global trace object.
+
+var FBTrace = {};
+
+// ********************************************************************************************* //
+
+(function() {
+
+// ********************************************************************************************* //
+
+try
+{
+ var scope = {};
+ Components.utils["import"]("resource://firebug/fbtrace.js", scope);
+ FBTrace = scope.FBTrace;
+
+ FBTrace.time("SCRIPTTAG_TIME");
+}
+catch (err)
+{
+ Components.utils.reportError(err);
+}
+
+// ********************************************************************************************* //
+// Some examples of tracing APIs
+
+// 1) Log "Hello World!" into the console.
+// FBTrace.sysout("Hello World!")
+//
+// 2) Log "Hello World!" if the DBG_ERRORS option is true.
+// if (FBTrace.DBG_ERRORS)
+// FBTrace.sysout("Hello World!");
+//
+// 3) Log "Hello World!" and various info about 'world' object.
+// FBTrace.sysout("Hello World!", world);
+//
+// 4) Log into specific console (created by Firebug extension).
+// FBTrace.dump("firebug.extensions", "Hello World!", world);
+// FBTrace.dump("chromebug.extensions", "Hello World!", world);
+//
+// TODO: how to open another console.
+
+// ********************************************************************************************* //
+})();
diff --git a/content/firebug/trace/debug.js b/content/firebug/trace/debug.js
index 4541e28..95f468d 100644
--- a/content/firebug/trace/debug.js
+++ b/content/firebug/trace/debug.js
@@ -1,62 +1,62 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/trace"
-],
-function(FBTrace) {
-
-// ********************************************************************************************* //
-// Debug APIs
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-var consoleService = Cc["@mozilla.org/consoleservice;1"].getService(Ci["nsIConsoleService"]);
-var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci["nsIObserverService"]);
-
-var Debug = {};
-
-//************************************************************************************************
-// Debug Logging
-
-Debug.ERROR = function(exc)
-{
- if (typeof(FBTrace) !== undefined)
- {
- if (exc.stack)
- exc.stack = exc.stack.split('\n');
-
- FBTrace.sysout("debug.ERROR: " + exc, exc);
- }
-
- if (consoleService)
- consoleService.logStringMessage("FIREBUG ERROR: " + exc);
-};
-
-// ********************************************************************************************* //
-// Tracing for observer service
-
-Debug.traceObservers = function(msg, topic)
-{
- var counter = 0;
- var enumerator = observerService.enumerateObservers(topic);
- while (enumerator.hasMoreElements())
- {
- var observer = enumerator.getNext();
- counter++;
- }
-
- var label = "observer";
- if (counter > 1)
- label = "observers";
-
- FBTrace.sysout("debug.observers: " + msg + " There is " + counter + " " +
- label + " for " + topic);
-};
-
-// ********************************************************************************************* //
-
-return Debug;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace"
+],
+function(FBTrace) {
+
+// ********************************************************************************************* //
+// Debug APIs
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+var consoleService = Cc["@mozilla.org/consoleservice;1"].getService(Ci["nsIConsoleService"]);
+var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci["nsIObserverService"]);
+
+var Debug = {};
+
+//************************************************************************************************
+// Debug Logging
+
+Debug.ERROR = function(exc)
+{
+ if (typeof(FBTrace) !== undefined)
+ {
+ if (exc.stack)
+ exc.stack = exc.stack.split('\n');
+
+ FBTrace.sysout("debug.ERROR: " + exc, exc);
+ }
+
+ if (consoleService)
+ consoleService.logStringMessage("FIREBUG ERROR: " + exc);
+};
+
+// ********************************************************************************************* //
+// Tracing for observer service
+
+Debug.traceObservers = function(msg, topic)
+{
+ var counter = 0;
+ var enumerator = observerService.enumerateObservers(topic);
+ while (enumerator.hasMoreElements())
+ {
+ var observer = enumerator.getNext();
+ counter++;
+ }
+
+ var label = "observer";
+ if (counter > 1)
+ label = "observers";
+
+ FBTrace.sysout("debug.observers: " + msg + " There is " + counter + " " +
+ label + " for " + topic);
+};
+
+// ********************************************************************************************* //
+
+return Debug;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/trace/traceListener.js b/content/firebug/trace/traceListener.js
index 417b364..45eaec4 100644
--- a/content/firebug/trace/traceListener.js
+++ b/content/firebug/trace/traceListener.js
@@ -1,55 +1,55 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/string",
- "firebug/lib/css",
-],
-function(Str, Css) {
-
-// ********************************************************************************************* //
-// Trace Listener
-
-/**
- * Default implementation of a Trace listener. Can be used to customize tracing logs
- * in the console in order to easily distinguish logs.
- */
-function TraceListener(prefix, type, removePrefix, stylesheetURL)
-{
- this.prefix = prefix;
- this.type = type;
- this.removePrefix = removePrefix;
- this.stylesheetURL = stylesheetURL;
-}
-
-TraceListener.prototype =
-/** @lends TraceListener */
-{
- // Called when console window is loaded.
- onLoadConsole: function(win, rootNode)
- {
- if (this.stylesheetURL)
- Css.appendStylesheet(rootNode.ownerDocument, this.stylesheetURL);
- },
-
- // Called when a new message is logged in to the trace-console window.
- onDump: function(message)
- {
- var index = message.text.indexOf(this.prefix);
- if (index == 0)
- {
- if (this.removePrefix)
- message.text = message.text.substr(this.prefix.length);
-
- message.text = Str.trim(message.text);
- message.type = this.type;
- }
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-return TraceListener;
-
-// ********************************************************************************************* //
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/string",
+ "firebug/lib/css",
+],
+function(Str, Css) {
+
+// ********************************************************************************************* //
+// Trace Listener
+
+/**
+ * Default implementation of a Trace listener. Can be used to customize tracing logs
+ * in the console in order to easily distinguish logs.
+ */
+function TraceListener(prefix, type, removePrefix, stylesheetURL)
+{
+ this.prefix = prefix;
+ this.type = type;
+ this.removePrefix = removePrefix;
+ this.stylesheetURL = stylesheetURL;
+}
+
+TraceListener.prototype =
+/** @lends TraceListener */
+{
+ // Called when console window is loaded.
+ onLoadConsole: function(win, rootNode)
+ {
+ if (this.stylesheetURL)
+ Css.appendStylesheet(rootNode.ownerDocument, this.stylesheetURL);
+ },
+
+ // Called when a new message is logged in to the trace-console window.
+ onDump: function(message)
+ {
+ var index = message.text.indexOf(this.prefix);
+ if (index == 0)
+ {
+ if (this.removePrefix)
+ message.text = message.text.substr(this.prefix.length);
+
+ message.text = Str.trim(message.text);
+ message.type = this.type;
+ }
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return TraceListener;
+
+// ********************************************************************************************* //
+});
diff --git a/content/firebug/trace/traceModule.js b/content/firebug/trace/traceModule.js
index 25d7afb..cab4a01 100644
--- a/content/firebug/trace/traceModule.js
+++ b/content/firebug/trace/traceModule.js
@@ -1,37 +1,37 @@
-/* See license.txt for terms of usage */
-
-define([
- "firebug/lib/object",
- "firebug/firebug"
-],
-function(Obj, Firebug) {
-
-// ************************************************************************************************
-// Trace Module
-
-/**
- * @module Use Firebug.TraceModule to register/unregister a trace listener that can be
- * used to customize look and feel of log messages in Tracing Console.
- *
- * Firebug.TraceModule.addListener - appends a tracing listener.
- * Firebug.TraceModule.removeListener - removes a tracing listener.
- */
-Firebug.TraceModule = Obj.extend(Firebug.Module,
-{
- dispatchName: "traceModule",
-
- getListenerByPrefix: function(prefix)
- {
- for (var i=0; i<this.fbListeners.length; i++)
- {
- var listener = this.fbListeners[i];
- if (listener.prefix == prefix)
- return listener;
- }
- }
-});
-
-return Firebug.TraceModule;
-
-// ************************************************************************************************
-});
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/object",
+ "firebug/firebug"
+],
+function(Obj, Firebug) {
+
+// ************************************************************************************************
+// Trace Module
+
+/**
+ * @module Use Firebug.TraceModule to register/unregister a trace listener that can be
+ * used to customize look and feel of log messages in Tracing Console.
+ *
+ * Firebug.TraceModule.addListener - appends a tracing listener.
+ * Firebug.TraceModule.removeListener - removes a tracing listener.
+ */
+Firebug.TraceModule = Obj.extend(Firebug.Module,
+{
+ dispatchName: "traceModule",
+
+ getListenerByPrefix: function(prefix)
+ {
+ for (var i=0; i<this.fbListeners.length; i++)
+ {
+ var listener = this.fbListeners[i];
+ if (listener.prefix == prefix)
+ return listener;
+ }
+ }
+});
+
+return Firebug.TraceModule;
+
+// ************************************************************************************************
+});
diff --git a/defaults/preferences/cookies.js b/defaults/preferences/cookies.js
index 80af3a4..d99591d 100644
--- a/defaults/preferences/cookies.js
+++ b/defaults/preferences/cookies.js
@@ -1,17 +1,17 @@
-// Global
-pref("extensions.firebug.cookies.enableSites", false);
-pref("extensions.firebug.cookies.logEvents", false);
-pref("extensions.firebug.cookies.clearWhenDeny", true);
-pref("extensions.firebug.cookies.filterByPath", true);
-pref("extensions.firebug.cookies.showRejectedCookies", false);
-pref("extensions.firebug.cookies.defaultExpireTime", 3600);
-pref("extensions.firebug.cookies.lastSortedColumn", "");
-pref("extensions.firebug.cookies.hiddenColumns", "colRawValue colStatus colSize");
-pref("extensions.firebug.cookies.removeConfirmation", true);
-pref("extensions.firebug.cookies.removeSessionConfirmation", true);
-
-// Firebug tracing support
-pref("extensions.firebug.DBG_COOKIES", false);
-
-// Shortcuts
-pref("extensions.firebug.key.shortcut.removeAllCookies", "control shift o");
+// Global
+pref("extensions.firebug.cookies.enableSites", false);
+pref("extensions.firebug.cookies.logEvents", false);
+pref("extensions.firebug.cookies.clearWhenDeny", true);
+pref("extensions.firebug.cookies.filterByPath", true);
+pref("extensions.firebug.cookies.showRejectedCookies", false);
+pref("extensions.firebug.cookies.defaultExpireTime", 3600);
+pref("extensions.firebug.cookies.lastSortedColumn", "");
+pref("extensions.firebug.cookies.hiddenColumns", "colRawValue colStatus colSize");
+pref("extensions.firebug.cookies.removeConfirmation", true);
+pref("extensions.firebug.cookies.removeSessionConfirmation", true);
+
+// Firebug tracing support
+pref("extensions.firebug.DBG_COOKIES", false);
+
+// Shortcuts
+pref("extensions.firebug.key.shortcut.removeAllCookies", "control shift o");
diff --git a/defaults/preferences/firebug.js b/defaults/preferences/firebug.js
index 37bde1b..39e3d71 100644
--- a/defaults/preferences/firebug.js
+++ b/defaults/preferences/firebug.js
@@ -1,172 +1,172 @@
-// For a detailed description of all preferences see http://getfirebug.com/wiki/index.php/Firebug_Preferences
-
-// Global
-pref("extensions.firebug.architecture", "inProcess");
-pref("extensions.firebug.defaultModuleList", "");
-
-pref("javascript.options.strict.debug", false);
-pref("extensions.firebug.defaultPanelName", "html");
-pref("extensions.firebug.throttleMessages", true);
-pref("extensions.firebug.textSize", 0);
-pref("extensions.firebug.showInfoTips", true);
-pref("extensions.firebug.textWrapWidth", 100);
-pref("extensions.firebug.framePosition", "bottom");
-pref("extensions.firebug.previousPlacement", 0);
-pref("extensions.firebug.showErrorCount", true);
-pref("extensions.firebug.viewPanelOrient", false);
-pref("extensions.firebug.allPagesActivation", "none");
-pref("extensions.firebug.hiddenPanels", "");
-pref("extensions.firebug.panelTabMinWidth", 50);
-pref("extensions.firebug.sourceLinkLabelWidth", 17);
-pref("extensions.firebug.currentVersion", "");
-pref("extensions.firebug.showFirstRunPage", true);
-pref("extensions.firebug.useDefaultLocale", false);
-pref("extensions.firebug.activateSameOrigin", true);
-pref("extensions.firebug.toolbarCustomizationDone", false);
-pref("extensions.firebug.showBreakNotification", true);
-pref("extensions.firebug.stringCropLength", 50);
-pref("extensions.firebug.hideDefaultInspector", false);
-pref("extensions.firebug.delayLoad", true);
-pref("extensions.firebug.enableOrion", true);
-pref("extensions.firebug.clearAnnotationsConfirmation", true);
-
-// Command line
-pref("extensions.firebug.commandEditor", false);
-pref("extensions.firebug.alwaysShowCommandLine", false);
-
-// Search
-pref("extensions.firebug.searchCaseSensitive", false);
-pref("extensions.firebug.searchGlobal", true);
-pref("extensions.firebug.searchUseRegularExpression", false);
-
-pref("extensions.firebug.netSearchHeaders", false);
-pref("extensions.firebug.netSearchParameters", false);
-pref("extensions.firebug.netSearchResponseBody", false);
-
-// Persist (default values)
-pref("extensions.firebug.console.defaultPersist", false);
-pref("extensions.firebug.net.defaultPersist", false);
-
-// Console
-pref("extensions.firebug.showJSErrors", true);
-pref("extensions.firebug.showJSWarnings", false);
-pref("extensions.firebug.showCSSErrors", false);
-pref("extensions.firebug.showXMLErrors", false);
-pref("extensions.firebug.showChromeErrors", false);
-pref("extensions.firebug.showChromeMessages", false);
-pref("extensions.firebug.showNetworkErrors", true);
-pref("extensions.firebug.showXMLHttpRequests", true);
-pref("extensions.firebug.showStackTrace", false);
-pref("extensions.firebug.console.logLimit", 500);
-pref("extensions.firebug.console.enableSites", false);
-pref("extensions.firebug.tabularLogMaxHeight", 200);
-pref("extensions.firebug.consoleFilterTypes", "all");
-pref("extensions.firebug.preferJSDSourceLinks", false);
-pref("extensions.firebug.commandLineShowCompleterPopup", true);
-pref("extensions.firebug.console.groupLogMessages", true);
-
-// HTML
-pref("extensions.firebug.showCommentNodes", false);
-pref("extensions.firebug.showTextNodesWithWhitespace", false);
-pref("extensions.firebug.entityDisplay", "symbols");
-pref("extensions.firebug.showFullTextNodes", true);
-pref("extensions.firebug.highlightMutations", true);
-pref("extensions.firebug.expandMutations", false);
-pref("extensions.firebug.scrollToMutations", false);
-pref("extensions.firebug.shadeBoxModel", true);
-pref("extensions.firebug.showQuickInfoBox", false);
-pref("extensions.firebug.displayedAttributeValueLimit", 1024);
-pref("extensions.firebug.multiHighlightLimit", 250);
-
-// CSS
-pref("extensions.firebug.onlyShowAppliedStyles", false);
-pref("extensions.firebug.showUserAgentCSS", false);
-pref("extensions.firebug.expandShorthandProps", false);
-pref("extensions.firebug.cssEditMode", "Source");
-pref("extensions.firebug.colorDisplay", "hex");
-
-// Computed
-pref("extensions.firebug.computedStylesDisplay", "grouped");
-pref("extensions.firebug.showMozillaSpecificStyles", false);
-
-// Script
-pref("extensions.firebug.breakOnErrors", false);
-pref("extensions.firebug.trackThrowCatch", false);
-pref("extensions.firebug.script.enableSites", false);
-pref("extensions.firebug.scriptsFilter", "all");
-pref("extensions.firebug.replaceTabs", 4);
-pref("extensions.firebug.filterSystemURLs", true);
-pref("extensions.firebug.maxScriptLineLength", 10000);
-
-// Stack
-pref("extensions.firebug.omitObjectPathStack", false);
-pref("extensions.firebug.showStackFrameArguments", true);
-
-// DOM
-pref("extensions.firebug.showUserProps", true);
-pref("extensions.firebug.showUserFuncs", true);
-pref("extensions.firebug.showDOMProps", true);
-pref("extensions.firebug.showDOMFuncs", false);
-pref("extensions.firebug.showDOMConstants", false);
-pref("extensions.firebug.showInlineEventHandlers", false);
-pref("extensions.firebug.showClosures", false);
-pref("extensions.firebug.ObjectShortIteratorMax", 3);
-pref("extensions.firebug.showEnumerableProperties", true);
-pref("extensions.firebug.showOwnProperties", false);
-
-// Layout
-pref("extensions.firebug.showRulers", true);
-
-// Net
-pref("extensions.firebug.netFilterCategories", "all");
-pref("extensions.firebug.net.logLimit", 500);
-pref("extensions.firebug.net.enableSites", false);
-pref("extensions.firebug.net.curlAddCompressedArgument", false);
-pref("extensions.firebug.netDisplayedResponseLimit", 102400);
-pref("extensions.firebug.netDisplayedPostBodyLimit", 10240);
-pref("extensions.firebug.net.hiddenColumns", "netProtocolCol netLocalAddressCol");
-pref("extensions.firebug.netPhaseInterval", 1000);
-pref("extensions.firebug.sizePrecision", 1);
-pref("extensions.firebug.netParamNameLimit", 25);
-pref("extensions.firebug.netShowPaintEvents", false);
-pref("extensions.firebug.netShowBFCacheResponses", false);
-pref("extensions.firebug.netHtmlPreviewHeight", 100);
-
-// JSON Preview
-pref("extensions.firebug.sortJsonPreview", false);
-
-// Cache
-pref("extensions.firebug.cache.mimeTypes", "");
-pref("extensions.firebug.cache.responseLimit", 5242880);
-
-// External Editors
-pref("extensions.firebug.externalEditors", "");
-
-// Keyboard
-pref("extensions.firebug.key.shortcut.reenterCommand", "control shift e");
-pref("extensions.firebug.key.shortcut.toggleInspecting", "accel shift c");
-pref("extensions.firebug.key.shortcut.toggleQuickInfoBox", "accel shift i");
-pref("extensions.firebug.key.shortcut.toggleProfiling", "accel shift p");
-pref("extensions.firebug.key.shortcut.focusCommandLine", "accel shift l");
-pref("extensions.firebug.key.shortcut.focusFirebugSearch", "accel f");
-pref("extensions.firebug.key.shortcut.focusWatchEditor", "accel shift n");
-pref("extensions.firebug.key.shortcut.focusLocation", "control shift VK_SPACE");
-pref("extensions.firebug.key.shortcut.nextObject", "control .");
-pref("extensions.firebug.key.shortcut.previousObject", "control ,");
-pref("extensions.firebug.key.shortcut.toggleFirebug", "VK_F12");
-pref("extensions.firebug.key.shortcut.closeFirebug", "shift VK_F12");
-pref("extensions.firebug.key.shortcut.detachFirebug", "accel VK_F12");
-pref("extensions.firebug.key.shortcut.leftFirebugTab", "accel shift VK_PAGE_UP");
-pref("extensions.firebug.key.shortcut.rightFirebugTab", "accel shift VK_PAGE_DOWN");
-pref("extensions.firebug.key.shortcut.previousFirebugTab", "control `");
-pref("extensions.firebug.key.shortcut.clearConsole", "accel shift r");
-pref("extensions.firebug.key.shortcut.navBack", "accel shift VK_LEFT");
-pref("extensions.firebug.key.shortcut.navForward", "accel shift VK_RIGHT");
-pref("extensions.firebug.key.shortcut.increaseTextSize", "accel +");
-pref("extensions.firebug.key.shortcut.decreaseTextSize", "accel -");
-pref("extensions.firebug.key.shortcut.normalTextSize", "accel 0");
-pref("extensions.firebug.key.shortcut.help", "VK_F1");
-pref("extensions.firebug.key.shortcut.toggleBreakOn", "accel alt b");
-
-// Accessibility
-pref("extensions.firebug.a11y.enable", false);
+// For a detailed description of all preferences see http://getfirebug.com/wiki/index.php/Firebug_Preferences
+
+// Global
+pref("extensions.firebug.architecture", "inProcess");
+pref("extensions.firebug.defaultModuleList", "");
+
+pref("javascript.options.strict.debug", false);
+pref("extensions.firebug.defaultPanelName", "html");
+pref("extensions.firebug.throttleMessages", true);
+pref("extensions.firebug.textSize", 0);
+pref("extensions.firebug.showInfoTips", true);
+pref("extensions.firebug.textWrapWidth", 100);
+pref("extensions.firebug.framePosition", "bottom");
+pref("extensions.firebug.previousPlacement", 0);
+pref("extensions.firebug.showErrorCount", true);
+pref("extensions.firebug.viewPanelOrient", false);
+pref("extensions.firebug.allPagesActivation", "none");
+pref("extensions.firebug.hiddenPanels", "");
+pref("extensions.firebug.panelTabMinWidth", 50);
+pref("extensions.firebug.sourceLinkLabelWidth", 17);
+pref("extensions.firebug.currentVersion", "");
+pref("extensions.firebug.showFirstRunPage", true);
+pref("extensions.firebug.useDefaultLocale", false);
+pref("extensions.firebug.activateSameOrigin", true);
+pref("extensions.firebug.toolbarCustomizationDone", false);
+pref("extensions.firebug.showBreakNotification", true);
+pref("extensions.firebug.stringCropLength", 50);
+pref("extensions.firebug.hideDefaultInspector", false);
+pref("extensions.firebug.delayLoad", true);
+pref("extensions.firebug.enableOrion", true);
+pref("extensions.firebug.clearAnnotationsConfirmation", true);
+
+// Command line
+pref("extensions.firebug.commandEditor", false);
+pref("extensions.firebug.alwaysShowCommandLine", false);
+
+// Search
+pref("extensions.firebug.searchCaseSensitive", false);
+pref("extensions.firebug.searchGlobal", true);
+pref("extensions.firebug.searchUseRegularExpression", false);
+
+pref("extensions.firebug.netSearchHeaders", false);
+pref("extensions.firebug.netSearchParameters", false);
+pref("extensions.firebug.netSearchResponseBody", false);
+
+// Persist (default values)
+pref("extensions.firebug.console.defaultPersist", false);
+pref("extensions.firebug.net.defaultPersist", false);
+
+// Console
+pref("extensions.firebug.showJSErrors", true);
+pref("extensions.firebug.showJSWarnings", false);
+pref("extensions.firebug.showCSSErrors", false);
+pref("extensions.firebug.showXMLErrors", false);
+pref("extensions.firebug.showChromeErrors", false);
+pref("extensions.firebug.showChromeMessages", false);
+pref("extensions.firebug.showNetworkErrors", true);
+pref("extensions.firebug.showXMLHttpRequests", true);
+pref("extensions.firebug.showStackTrace", false);
+pref("extensions.firebug.console.logLimit", 500);
+pref("extensions.firebug.console.enableSites", false);
+pref("extensions.firebug.tabularLogMaxHeight", 200);
+pref("extensions.firebug.consoleFilterTypes", "all");
+pref("extensions.firebug.preferJSDSourceLinks", false);
+pref("extensions.firebug.commandLineShowCompleterPopup", true);
+pref("extensions.firebug.console.groupLogMessages", true);
+
+// HTML
+pref("extensions.firebug.showCommentNodes", false);
+pref("extensions.firebug.showTextNodesWithWhitespace", false);
+pref("extensions.firebug.entityDisplay", "symbols");
+pref("extensions.firebug.showFullTextNodes", true);
+pref("extensions.firebug.highlightMutations", true);
+pref("extensions.firebug.expandMutations", false);
+pref("extensions.firebug.scrollToMutations", false);
+pref("extensions.firebug.shadeBoxModel", true);
+pref("extensions.firebug.showQuickInfoBox", false);
+pref("extensions.firebug.displayedAttributeValueLimit", 1024);
+pref("extensions.firebug.multiHighlightLimit", 250);
+
+// CSS
+pref("extensions.firebug.onlyShowAppliedStyles", false);
+pref("extensions.firebug.showUserAgentCSS", false);
+pref("extensions.firebug.expandShorthandProps", false);
+pref("extensions.firebug.cssEditMode", "Source");
+pref("extensions.firebug.colorDisplay", "hex");
+
+// Computed
+pref("extensions.firebug.computedStylesDisplay", "grouped");
+pref("extensions.firebug.showMozillaSpecificStyles", false);
+
+// Script
+pref("extensions.firebug.breakOnErrors", false);
+pref("extensions.firebug.trackThrowCatch", false);
+pref("extensions.firebug.script.enableSites", false);
+pref("extensions.firebug.scriptsFilter", "all");
+pref("extensions.firebug.replaceTabs", 4);
+pref("extensions.firebug.filterSystemURLs", true);
+pref("extensions.firebug.maxScriptLineLength", 10000);
+
+// Stack
+pref("extensions.firebug.omitObjectPathStack", false);
+pref("extensions.firebug.showStackFrameArguments", true);
+
+// DOM
+pref("extensions.firebug.showUserProps", true);
+pref("extensions.firebug.showUserFuncs", true);
+pref("extensions.firebug.showDOMProps", true);
+pref("extensions.firebug.showDOMFuncs", false);
+pref("extensions.firebug.showDOMConstants", false);
+pref("extensions.firebug.showInlineEventHandlers", false);
+pref("extensions.firebug.showClosures", false);
+pref("extensions.firebug.ObjectShortIteratorMax", 3);
+pref("extensions.firebug.showEnumerableProperties", true);
+pref("extensions.firebug.showOwnProperties", false);
+
+// Layout
+pref("extensions.firebug.showRulers", true);
+
+// Net
+pref("extensions.firebug.netFilterCategories", "all");
+pref("extensions.firebug.net.logLimit", 500);
+pref("extensions.firebug.net.enableSites", false);
+pref("extensions.firebug.net.curlAddCompressedArgument", false);
+pref("extensions.firebug.netDisplayedResponseLimit", 102400);
+pref("extensions.firebug.netDisplayedPostBodyLimit", 10240);
+pref("extensions.firebug.net.hiddenColumns", "netProtocolCol netLocalAddressCol");
+pref("extensions.firebug.netPhaseInterval", 1000);
+pref("extensions.firebug.sizePrecision", 1);
+pref("extensions.firebug.netParamNameLimit", 25);
+pref("extensions.firebug.netShowPaintEvents", false);
+pref("extensions.firebug.netShowBFCacheResponses", false);
+pref("extensions.firebug.netHtmlPreviewHeight", 100);
+
+// JSON Preview
+pref("extensions.firebug.sortJsonPreview", false);
+
+// Cache
+pref("extensions.firebug.cache.mimeTypes", "");
+pref("extensions.firebug.cache.responseLimit", 5242880);
+
+// External Editors
+pref("extensions.firebug.externalEditors", "");
+
+// Keyboard
+pref("extensions.firebug.key.shortcut.reenterCommand", "control shift e");
+pref("extensions.firebug.key.shortcut.toggleInspecting", "accel shift c");
+pref("extensions.firebug.key.shortcut.toggleQuickInfoBox", "accel shift i");
+pref("extensions.firebug.key.shortcut.toggleProfiling", "accel shift p");
+pref("extensions.firebug.key.shortcut.focusCommandLine", "accel shift l");
+pref("extensions.firebug.key.shortcut.focusFirebugSearch", "accel f");
+pref("extensions.firebug.key.shortcut.focusWatchEditor", "accel shift n");
+pref("extensions.firebug.key.shortcut.focusLocation", "control shift VK_SPACE");
+pref("extensions.firebug.key.shortcut.nextObject", "control .");
+pref("extensions.firebug.key.shortcut.previousObject", "control ,");
+pref("extensions.firebug.key.shortcut.toggleFirebug", "VK_F12");
+pref("extensions.firebug.key.shortcut.closeFirebug", "shift VK_F12");
+pref("extensions.firebug.key.shortcut.detachFirebug", "accel VK_F12");
+pref("extensions.firebug.key.shortcut.leftFirebugTab", "accel shift VK_PAGE_UP");
+pref("extensions.firebug.key.shortcut.rightFirebugTab", "accel shift VK_PAGE_DOWN");
+pref("extensions.firebug.key.shortcut.previousFirebugTab", "control `");
+pref("extensions.firebug.key.shortcut.clearConsole", "accel shift r");
+pref("extensions.firebug.key.shortcut.navBack", "accel shift VK_LEFT");
+pref("extensions.firebug.key.shortcut.navForward", "accel shift VK_RIGHT");
+pref("extensions.firebug.key.shortcut.increaseTextSize", "accel +");
+pref("extensions.firebug.key.shortcut.decreaseTextSize", "accel -");
+pref("extensions.firebug.key.shortcut.normalTextSize", "accel 0");
+pref("extensions.firebug.key.shortcut.help", "VK_F1");
+pref("extensions.firebug.key.shortcut.toggleBreakOn", "accel alt b");
+
+// Accessibility
+pref("extensions.firebug.a11y.enable", false);
diff --git a/defaults/preferences/tracingConsole.js b/defaults/preferences/tracingConsole.js
index 4189117..53e566d 100644
--- a/defaults/preferences/tracingConsole.js
+++ b/defaults/preferences/tracingConsole.js
@@ -1,66 +1,66 @@
-// Tracing Options
-pref("extensions.firebug.DBG_A11Y", false); // a11y
-pref("extensions.firebug.DBG_ACTIVATION", false); // firebug.js and tabWatcher.js
-pref("extensions.firebug.DBG_ACTIVITYOBSERVER", false); // Net panel's activity observer
-pref("extensions.firebug.DBG_ANNOTATIONS", false); // Page annotations service
-pref("extensions.firebug.DBG_BP", false); // debugger.js and firebug-services.js; lots of output
-pref("extensions.firebug.DBG_CACHE", false); // sourceCache
-pref("extensions.firebug.DBG_COMMANDEDITOR", false); // Multiline console based on SourceEditor (Orion)
-pref("extensions.firebug.DBG_COMMANDLINE", false); // command line
-pref("extensions.firebug.DBG_COMPILATION_UNITS", false);// debugger.js and firebug-services.js; lots of output
-pref("extensions.firebug.DBG_CONSOLE", false); // console
-pref("extensions.firebug.DBG_CSS", false); //
-pref("extensions.firebug.DBG_DISPATCH", false); //
-pref("extensions.firebug.DBG_DOM", false); //
-pref("extensions.firebug.DBG_DOMPLATE", false); // domplate engine
-pref("extensions.firebug.DBG_EDITOR", false); // Inline editors
-pref("extensions.firebug.DBG_ERRORS", false); // error.js
-pref("extensions.firebug.DBG_ERRORLOG", false); // error.js
-pref("extensions.firebug.DBG_EVAL", false); // debugger.js and firebug-service.js
-pref("extensions.firebug.DBG_EVENTLISTENERS", false); // track/untrack for registered event listeners, restart needed
-pref("extensions.firebug.DBG_EVENTS", false); // browser generated events
-pref("extensions.firebug.DBG_EXTERNALEDITORS", false); // integration with external editors/IDEs
-pref("extensions.firebug.DBG_FBS_BP", false); // firebug breakpoints
-pref("extensions.firebug.DBG_FBS_CREATION", false); // firebug script creation
-pref("extensions.firebug.DBG_FBS_ERRORS", false); // firebug errors
-pref("extensions.firebug.DBG_FBS_FINDDEBUGGER", false); // firebug findDebugger
-pref("extensions.firebug.DBG_FBS_FUNCTION", false); // firebug new Function
-pref("extensions.firebug.DBG_FBS_SRCUNITS", false); // firebug script creation
-pref("extensions.firebug.DBG_FBS_STEP", false); // firebug stepping
-pref("extensions.firebug.DBG_FBS_TRACKFILES", false); // dump all js files to disk
-pref("extensions.firebug.DBG_FONTS", false); // Fonts information and font viewer
-pref("extensions.firebug.DBG_FUNCTION_NAMES", false); // heuristics for anon functions
-pref("extensions.firebug.DBG_HISTORY", false); // panel navigation history
-pref("extensions.firebug.DBG_HTML", false); //
-pref("extensions.firebug.DBG_HTTPOBSERVER", false); // Centralized HTTP Observer
-pref("extensions.firebug.DBG_INFOTIP", false); // popup info tip in panels
-pref("extensions.firebug.DBG_INITIALIZE", false); // initialize FB
-pref("extensions.firebug.DBG_INSPECT", false); // inspector
-pref("extensions.firebug.DBG_JSONVIEWER", false); // JSON explorer
-pref("extensions.firebug.DBG_LINETABLE", false); //
-pref("extensions.firebug.DBG_LOCALE", false); // localization, missing strings
-pref("extensions.firebug.DBG_LOCATIONS", false); // panelFileList
-pref("extensions.firebug.DBG_MEMORY_PROFILER", false); //
-pref("extensions.firebug.DBG_MENU", false); // Menus and context menus in Firebug
-pref("extensions.firebug.DBG_MODULES", false); // moduleloading
-pref("extensions.firebug.DBG_NET", false); // net.js
-pref("extensions.firebug.DBG_NET_EVENTS", false); // net.js - network events
-pref("extensions.firebug.DBG_OBSERVERS", false); // track/untrack support, should be set, then restart Firefox
-pref("extensions.firebug.DBG_OPTIONS", false); //
-pref("extensions.firebug.DBG_PANELS", false); // panel selection
-pref("extensions.firebug.DBG_PROFILER", false); // profiler
-pref("extensions.firebug.DBG_QUICKINFOBOX", false); // Quick info box
-pref("extensions.firebug.DBG_REGISTRATION", false); // registry (modules panels);
-pref("extensions.firebug.DBG_SEARCH", false); // search box
-pref("extensions.firebug.DBG_SHORTCUTS", false); // Keyboard shortcuts
-pref("extensions.firebug.DBG_SOURCEFILES", false); // debugger and sourceCache
-pref("extensions.firebug.DBG_SPY", false); // spy.js
-pref("extensions.firebug.DBG_STACK", false); // call stack, mostly debugger.js
-pref("extensions.firebug.DBG_STORAGE", false); // storageService
-pref("extensions.firebug.DBG_SVGVIEWER", false); // SVG explorer
-pref("extensions.firebug.DBG_TOOLTIP", false); // tooltip debugging
-pref("extensions.firebug.DBG_TOPLEVEL", false); // top level jsd scripts
-pref("extensions.firebug.DBG_UI_LOOP", false); // debugger.js
-pref("extensions.firebug.DBG_WATCH", false); // Watch expressions
-pref("extensions.firebug.DBG_WINDOWS", false); // tabWatcher, dispatch events; very useful for understand modules/panels
-pref("extensions.firebug.DBG_XMLVIEWER", false); // XML explorer
+// Tracing Options
+pref("extensions.firebug.DBG_A11Y", false); // a11y
+pref("extensions.firebug.DBG_ACTIVATION", false); // firebug.js and tabWatcher.js
+pref("extensions.firebug.DBG_ACTIVITYOBSERVER", false); // Net panel's activity observer
+pref("extensions.firebug.DBG_ANNOTATIONS", false); // Page annotations service
+pref("extensions.firebug.DBG_BP", false); // debugger.js and firebug-services.js; lots of output
+pref("extensions.firebug.DBG_CACHE", false); // sourceCache
+pref("extensions.firebug.DBG_COMMANDEDITOR", false); // Multiline console based on SourceEditor (Orion)
+pref("extensions.firebug.DBG_COMMANDLINE", false); // command line
+pref("extensions.firebug.DBG_COMPILATION_UNITS", false);// debugger.js and firebug-services.js; lots of output
+pref("extensions.firebug.DBG_CONSOLE", false); // console
+pref("extensions.firebug.DBG_CSS", false); //
+pref("extensions.firebug.DBG_DISPATCH", false); //
+pref("extensions.firebug.DBG_DOM", false); //
+pref("extensions.firebug.DBG_DOMPLATE", false); // domplate engine
+pref("extensions.firebug.DBG_EDITOR", false); // Inline editors
+pref("extensions.firebug.DBG_ERRORS", false); // error.js
+pref("extensions.firebug.DBG_ERRORLOG", false); // error.js
+pref("extensions.firebug.DBG_EVAL", false); // debugger.js and firebug-service.js
+pref("extensions.firebug.DBG_EVENTLISTENERS", false); // track/untrack for registered event listeners, restart needed
+pref("extensions.firebug.DBG_EVENTS", false); // browser generated events
+pref("extensions.firebug.DBG_EXTERNALEDITORS", false); // integration with external editors/IDEs
+pref("extensions.firebug.DBG_FBS_BP", false); // firebug breakpoints
+pref("extensions.firebug.DBG_FBS_CREATION", false); // firebug script creation
+pref("extensions.firebug.DBG_FBS_ERRORS", false); // firebug errors
+pref("extensions.firebug.DBG_FBS_FINDDEBUGGER", false); // firebug findDebugger
+pref("extensions.firebug.DBG_FBS_FUNCTION", false); // firebug new Function
+pref("extensions.firebug.DBG_FBS_SRCUNITS", false); // firebug script creation
+pref("extensions.firebug.DBG_FBS_STEP", false); // firebug stepping
+pref("extensions.firebug.DBG_FBS_TRACKFILES", false); // dump all js files to disk
+pref("extensions.firebug.DBG_FONTS", false); // Fonts information and font viewer
+pref("extensions.firebug.DBG_FUNCTION_NAMES", false); // heuristics for anon functions
+pref("extensions.firebug.DBG_HISTORY", false); // panel navigation history
+pref("extensions.firebug.DBG_HTML", false); //
+pref("extensions.firebug.DBG_HTTPOBSERVER", false); // Centralized HTTP Observer
+pref("extensions.firebug.DBG_INFOTIP", false); // popup info tip in panels
+pref("extensions.firebug.DBG_INITIALIZE", false); // initialize FB
+pref("extensions.firebug.DBG_INSPECT", false); // inspector
+pref("extensions.firebug.DBG_JSONVIEWER", false); // JSON explorer
+pref("extensions.firebug.DBG_LINETABLE", false); //
+pref("extensions.firebug.DBG_LOCALE", false); // localization, missing strings
+pref("extensions.firebug.DBG_LOCATIONS", false); // panelFileList
+pref("extensions.firebug.DBG_MEMORY_PROFILER", false); //
+pref("extensions.firebug.DBG_MENU", false); // Menus and context menus in Firebug
+pref("extensions.firebug.DBG_MODULES", false); // moduleloading
+pref("extensions.firebug.DBG_NET", false); // net.js
+pref("extensions.firebug.DBG_NET_EVENTS", false); // net.js - network events
+pref("extensions.firebug.DBG_OBSERVERS", false); // track/untrack support, should be set, then restart Firefox
+pref("extensions.firebug.DBG_OPTIONS", false); //
+pref("extensions.firebug.DBG_PANELS", false); // panel selection
+pref("extensions.firebug.DBG_PROFILER", false); // profiler
+pref("extensions.firebug.DBG_QUICKINFOBOX", false); // Quick info box
+pref("extensions.firebug.DBG_REGISTRATION", false); // registry (modules panels);
+pref("extensions.firebug.DBG_SEARCH", false); // search box
+pref("extensions.firebug.DBG_SHORTCUTS", false); // Keyboard shortcuts
+pref("extensions.firebug.DBG_SOURCEFILES", false); // debugger and sourceCache
+pref("extensions.firebug.DBG_SPY", false); // spy.js
+pref("extensions.firebug.DBG_STACK", false); // call stack, mostly debugger.js
+pref("extensions.firebug.DBG_STORAGE", false); // storageService
+pref("extensions.firebug.DBG_SVGVIEWER", false); // SVG explorer
+pref("extensions.firebug.DBG_TOOLTIP", false); // tooltip debugging
+pref("extensions.firebug.DBG_TOPLEVEL", false); // top level jsd scripts
+pref("extensions.firebug.DBG_UI_LOOP", false); // debugger.js
+pref("extensions.firebug.DBG_WATCH", false); // Watch expressions
+pref("extensions.firebug.DBG_WINDOWS", false); // tabWatcher, dispatch events; very useful for understand modules/panels
+pref("extensions.firebug.DBG_XMLVIEWER", false); // XML explorer
diff --git a/install.rdf b/install.rdf
index 83c1140..6e1be5c 100644
--- a/install.rdf
+++ b/install.rdf
@@ -1,96 +1,97 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
- <Description about="urn:mozilla:install-manifest">
- <em:id>firebug at software.joehewitt.com</em:id>
- <em:version>1.12.1</em:version>
- <em:type>2</em:type>
- <em:bootstrap>true</em:bootstrap>
-
- <!-- Any suitably modern toolkit application -->
- <em:targetApplication>
- <Description>
- <em:id>toolkit at mozilla.org</em:id>
- <em:minVersion>23.0</em:minVersion>
- <em:maxVersion>26.0</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <!-- Firefox -->
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>23.0</em:minVersion>
- <em:maxVersion>26.0</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <em:name>Firebug</em:name>
- <em:description>Web Development Evolved. Firebug is free and open source software distributed under the BSD License.</em:description>
- <em:creator>Joe Hewitt</em:creator>
- <em:contributor>John J. Barton (IBM Almaden)</em:contributor>
- <em:contributor>Jan Odvarko (Mozilla Corp.)</em:contributor>
- <em:contributor>Max Stepanov (Aptana Inc.)</em:contributor>
- <em:contributor>Rob Campbell (Mozilla Corp.)</em:contributor>
- <em:contributor>Hans Hillen (Paciello Group, Mozilla)</em:contributor>
- <em:contributor>Curtis Bartley (Mozilla Corp.)</em:contributor>
- <em:contributor>Mike Collins (IBM Almaden)</em:contributor>
- <em:contributor>Kevin Decker</em:contributor>
- <em:contributor>Mike Ratcliffe (Mozilla Corp.)</em:contributor>
- <em:contributor>Hernan Rodriguez Colmeiro</em:contributor>
- <em:contributor>Austin Andrews</em:contributor>
- <em:contributor>Christoph Dorn</em:contributor>
- <em:contributor>Steven Roussey (Illuminations for Developers)</em:contributor>
- <em:contributor>Sebastian Zartner</em:contributor>
- <em:contributor>Harutyun Amirjanyan</em:contributor>
- <em:contributor>Simon Lindholm</em:contributor>
- <em:contributor>Stampolidis Anastasios</em:contributor>
- <em:contributor>Joe Walker (Mozilla Corp.)</em:contributor>
- <em:contributor>Vladimir Zhuravlev</em:contributor>
- <em:contributor>Farshid Beheshti</em:contributor>
- <em:contributor>Leon Sorokin</em:contributor>
- <em:contributor>Florent Fayolle</em:contributor>
- <em:contributor>Hector Zhao</em:contributor>
- <em:contributor>Bharath Thiruveedula</em:contributor>
- <em:contributor>Nathan Mische</em:contributor>
-
- <em:iconURL>chrome://firebug/skin/firebug64.png</em:iconURL>
- <em:homepageURL>http://www.getfirebug.com/</em:homepageURL>
-
-
- <em:translator>Leszek(teo)Zyczkowski (pl-PL)</em:translator>
- <em:translator>markh (nl)</em:translator>
- <em:translator>peter3 (sv-SE)</em:translator>
- <em:translator>AlleyKat (da-DK)</em:translator>
- <em:translator>Hector Zhao, lovelywcm (zh-CN)</em:translator>
- <em:translator>Lukas Kucharczyk, Michal Kec (cs-CZ)</em:translator>
- <em:translator>Team erweiterungen.de, ReinekeFux, Benedikt Langens, Sebastian Zartner (de-DE)</em:translator>
- <em:translator>l0stintranslation, gonzalopirobutirro, Luigi Grilli (it-IT)</em:translator>
- <em:translator>alexxed (ro-RO)</em:translator>
- <em:translator>Nicolas Martin, Franck Marcia (fr-FR)</em:translator>
- <em:translator>gLes (hu-HU)</em:translator>
- <em:translator>Xavi Ivars - Softcatala (ca)</em:translator>
- <em:translator>gezmen (tr-TR)</em:translator>
- <em:translator>eternoendless (es-AR)</em:translator>
- <em:translator>Dark Preacher (ru)</em:translator>
- <em:translator>Tiago Oliveira, Diego de Carvalho Zimmermann, Alexandre Rapaki (pt-BR)</em:translator>
- <em:translator>Juan Botias, Alvaro G. Vicario (es-ES)</em:translator>
- <em:translator>Andriy Zhouck (uk-UA)</em:translator>
- <em:translator>Hisateru Tanaka, k2jp (ja-JP)</em:translator>
- <em:translator>Mohsen Shadroo (fa-IR)</em:translator>
- <em:translator>Eduard Babayan (hy-AM)</em:translator>
- <em:translator>Helder Magalhaes (pt-PT)</em:translator>
- <em:translator>Tomaz Macus (sl-SI)</em:translator>
- <em:translator>Stoyan Stefanov, Alexander Shopov (bg)</em:translator>
- <em:translator>Kristjan Bjarni Guomundsson (is-IS)</em:translator>
- <em:translator>NGUYEN Manh Hung (vi-VN)</em:translator>
- <em:translator>Bwah (hr-HR)</em:translator>
- <em:translator>Sonickydon (el)</em:translator>
- <em:translator>David Gonzales (es)</em:translator>
- <em:translator>DakSrbija (sr)</em:translator>
- <em:translator>bootleq (zh-TW)</em:translator>
- <em:translator>Asier Iturralde Sarasola, Julen Irazoki Oteiza (eu)</em:translator>
- </Description>
-</RDF>
+<?xml version="1.0" encoding="utf-8"?>
+
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+
+ <Description about="urn:mozilla:install-manifest">
+ <em:id>firebug at software.joehewitt.com</em:id>
+ <em:version>1.12.2</em:version>
+ <em:type>2</em:type>
+ <em:bootstrap>true</em:bootstrap>
+
+ <!-- Any suitably modern toolkit application -->
+ <em:targetApplication>
+ <Description>
+ <em:id>toolkit at mozilla.org</em:id>
+ <em:minVersion>23.0</em:minVersion>
+ <em:maxVersion>26.0</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+
+ <!-- Firefox -->
+ <em:targetApplication>
+ <Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>23.0</em:minVersion>
+ <em:maxVersion>26.0</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+
+ <em:name>Firebug</em:name>
+ <em:description>Web Development Evolved. Firebug is free and open source software distributed under the BSD License.</em:description>
+ <em:creator>Joe Hewitt</em:creator>
+ <em:contributor>John J. Barton (IBM Almaden)</em:contributor>
+ <em:contributor>Jan Odvarko (Mozilla Corp.)</em:contributor>
+ <em:contributor>Max Stepanov (Aptana Inc.)</em:contributor>
+ <em:contributor>Rob Campbell (Mozilla Corp.)</em:contributor>
+ <em:contributor>Hans Hillen (Paciello Group, Mozilla)</em:contributor>
+ <em:contributor>Curtis Bartley (Mozilla Corp.)</em:contributor>
+ <em:contributor>Mike Collins (IBM Almaden)</em:contributor>
+ <em:contributor>Kevin Decker</em:contributor>
+ <em:contributor>Mike Ratcliffe (Mozilla Corp.)</em:contributor>
+ <em:contributor>Hernan Rodriguez Colmeiro</em:contributor>
+ <em:contributor>Austin Andrews</em:contributor>
+ <em:contributor>Christoph Dorn</em:contributor>
+ <em:contributor>Steven Roussey (Illuminations for Developers)</em:contributor>
+ <em:contributor>Sebastian Zartner</em:contributor>
+ <em:contributor>Harutyun Amirjanyan</em:contributor>
+ <em:contributor>Simon Lindholm</em:contributor>
+ <em:contributor>Stampolidis Anastasios</em:contributor>
+ <em:contributor>Joe Walker (Mozilla Corp.)</em:contributor>
+ <em:contributor>Vladimir Zhuravlev</em:contributor>
+ <em:contributor>Farshid Beheshti</em:contributor>
+ <em:contributor>Leon Sorokin</em:contributor>
+ <em:contributor>Florent Fayolle</em:contributor>
+ <em:contributor>Hector Zhao</em:contributor>
+ <em:contributor>Bharath Thiruveedula</em:contributor>
+ <em:contributor>Nathan Mische</em:contributor>
+ <em:contributor>Belakhdar Abdeldjalil</em:contributor>
+
+ <em:iconURL>chrome://firebug/skin/firebug64.png</em:iconURL>
+ <em:homepageURL>http://www.getfirebug.com/</em:homepageURL>
+
+
+ <em:translator>Leszek(teo)Zyczkowski (pl-PL)</em:translator>
+ <em:translator>markh (nl)</em:translator>
+ <em:translator>peter3 (sv-SE)</em:translator>
+ <em:translator>AlleyKat (da-DK)</em:translator>
+ <em:translator>Hector Zhao, lovelywcm (zh-CN)</em:translator>
+ <em:translator>Lukas Kucharczyk, Michal Kec (cs-CZ)</em:translator>
+ <em:translator>Team erweiterungen.de, ReinekeFux, Benedikt Langens, Sebastian Zartner (de-DE)</em:translator>
+ <em:translator>l0stintranslation, gonzalopirobutirro, Luigi Grilli (it-IT)</em:translator>
+ <em:translator>alexxed (ro-RO)</em:translator>
+ <em:translator>Nicolas Martin, Franck Marcia (fr-FR)</em:translator>
+ <em:translator>gLes (hu-HU)</em:translator>
+ <em:translator>Xavi Ivars - Softcatala (ca)</em:translator>
+ <em:translator>gezmen (tr-TR)</em:translator>
+ <em:translator>eternoendless (es-AR)</em:translator>
+ <em:translator>Dark Preacher (ru)</em:translator>
+ <em:translator>Tiago Oliveira, Diego de Carvalho Zimmermann, Alexandre Rapaki (pt-BR)</em:translator>
+ <em:translator>Juan Botias, Alvaro G. Vicario (es-ES)</em:translator>
+ <em:translator>Andriy Zhouck (uk-UA)</em:translator>
+ <em:translator>Hisateru Tanaka, k2jp (ja-JP)</em:translator>
+ <em:translator>Mohsen Shadroo (fa-IR)</em:translator>
+ <em:translator>Eduard Babayan (hy-AM)</em:translator>
+ <em:translator>Helder Magalhaes (pt-PT)</em:translator>
+ <em:translator>Tomaz Macus (sl-SI)</em:translator>
+ <em:translator>Stoyan Stefanov, Alexander Shopov (bg)</em:translator>
+ <em:translator>Kristjan Bjarni Guomundsson (is-IS)</em:translator>
+ <em:translator>NGUYEN Manh Hung (vi-VN)</em:translator>
+ <em:translator>Bwah (hr-HR)</em:translator>
+ <em:translator>Sonickydon (el)</em:translator>
+ <em:translator>David Gonzales (es)</em:translator>
+ <em:translator>DakSrbija (sr)</em:translator>
+ <em:translator>bootleq (zh-TW)</em:translator>
+ <em:translator>Asier Iturralde Sarasola, Julen Irazoki Oteiza (eu)</em:translator>
+ </Description>
+</RDF>
diff --git a/license.txt b/license.txt
index a926bbf..10cd088 100644
--- a/license.txt
+++ b/license.txt
@@ -1,30 +1,30 @@
-Software License Agreement (BSD License)
-
-Copyright (c) 2009, Mozilla Foundation
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the
- following disclaimer in the documentation and/or other
- materials provided with the distribution.
-
-* Neither the name of Mozilla Foundation nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of Mozilla Foundation.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+Software License Agreement (BSD License)
+
+Copyright (c) 2009, Mozilla Foundation
+All rights reserved.
+
+Redistribution and use of this software in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the
+ following disclaimer.
+
+* Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+* Neither the name of Mozilla Foundation nor the names of its
+ contributors may be used to endorse or promote products
+ derived from this software without specific prior
+ written permission of Mozilla Foundation.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/locale/bg/cookies.properties b/locale/bg/cookies.properties
index 66695d4..ec60718 100644
--- a/locale/bg/cookies.properties
+++ b/locale/bg/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Session
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Accept Cookies From Sites
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Clear cookies when denying
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cut
-cookies.Copy=Copy
-cookies.CopyAll=Copy All
-cookies.Paste=Paste
-cookies.Delete=Delete
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Edit
-cookies.Accept=Accept
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reset Header
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
-cookies.ExceptionsTitle=Exceptions - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support for Cookie Monitoring
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=Disable Cookies panel for %S
-cookies.Permissions=Enable or Disable Cookies panel
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=System Pages
-cookies.LocalFiles=Local Files
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Do you want to remove all cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remove all cookies in the list.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Create a new cookie for %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Value
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Manage cookie permissions for %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=All cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejected:
-cookies.console.nocookiesreceived=No cookies received
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=deleted
-cookies.console.added=added
-cookies.console.changed=changed
-cookies.console.cleared=cleared
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domain
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Secure
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Value
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Default (Accept session cookies)
-cookies.default.thirdPartySession=Default (Accept session cookies)
-cookies.default.thirdParty=Default (Accept cookies)
-cookies.default.allow=Default (Accept cookies)
-cookies.default.deny=Default (Deny cookies)
-cookies.default.warn=Default (Warn before accepting cookie)
-cookies.host.session=Accept session cookies from %S
-cookies.host.accept=Accept cookies from %S
-cookies.host.reject=Deny cookies from %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie name is not valid.
-cookies.edit.invalidhost=Cookie host is not valid.
-cookies.edit.invalidpath=Cookie path is not valid.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Name
-cookies.header.value=Value
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domain
-cookies.header.size=Size
-cookies.header.path=Path
-cookies.header.expires=Expires
-cookies.header.security=Security
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Name of the cookie
-cookies.header.value.tooltip=Value stored for the cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domain that has stored the cookie
-cookies.header.size.tooltip=Size of the stored cookie
-cookies.header.path.tooltip=Directory where the cookie is active
-cookies.header.expires.tooltip=Expiration date for the cookie
-cookies.header.security.tooltip=Shows whether it is a secure cookie or not
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Received Cookies
-cookies.netinfo.Sent_Cookies=Sent Cookies
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Path Filter
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Export All Cookies
-cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
-cookies.export.Export_For_Site=Export Cookies For This Site
-cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Remove Cookies
-cookies.Create=Create Cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Tools
-cookies.ToolsTooltip=Tools
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Show All Cookies
-cookies.ViewAllTooltip=Open the built-in Cookie Manager
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Web Sites Permissions
-cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filter
-cookies.FilterTooltip=Use given options to filter the cookie list.
-cookies.filter.byPath=Filter Cookies By Current Path
-cookies.filter.byPathTooltip=Show only cookies that match the current path.
-cookies.filter.showRejectedCookies=Show Rejected Cookies
-cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Edit Cookie
-cookies.edit.name.label=Name:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Path:
-cookies.edit.expire.label=Expires:
-cookies.edit.value.label=Value:
-cookies.edit.secure.label=Secure Cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Session
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Accept Cookies From Sites
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Clear cookies when denying
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cut
+cookies.Copy=Copy
+cookies.CopyAll=Copy All
+cookies.Paste=Paste
+cookies.Delete=Delete
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Edit
+cookies.Accept=Accept
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reset Header
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
+cookies.ExceptionsTitle=Exceptions - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support for Cookie Monitoring
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=Disable Cookies panel for %S
+cookies.Permissions=Enable or Disable Cookies panel
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=System Pages
+cookies.LocalFiles=Local Files
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Do you want to remove all cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remove all cookies in the list.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Create a new cookie for %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Value
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Manage cookie permissions for %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=All cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejected:
+cookies.console.nocookiesreceived=No cookies received
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=deleted
+cookies.console.added=added
+cookies.console.changed=changed
+cookies.console.cleared=cleared
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domain
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Secure
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Value
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Default (Accept session cookies)
+cookies.default.thirdPartySession=Default (Accept session cookies)
+cookies.default.thirdParty=Default (Accept cookies)
+cookies.default.allow=Default (Accept cookies)
+cookies.default.deny=Default (Deny cookies)
+cookies.default.warn=Default (Warn before accepting cookie)
+cookies.host.session=Accept session cookies from %S
+cookies.host.accept=Accept cookies from %S
+cookies.host.reject=Deny cookies from %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie name is not valid.
+cookies.edit.invalidhost=Cookie host is not valid.
+cookies.edit.invalidpath=Cookie path is not valid.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Name
+cookies.header.value=Value
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domain
+cookies.header.size=Size
+cookies.header.path=Path
+cookies.header.expires=Expires
+cookies.header.security=Security
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Name of the cookie
+cookies.header.value.tooltip=Value stored for the cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domain that has stored the cookie
+cookies.header.size.tooltip=Size of the stored cookie
+cookies.header.path.tooltip=Directory where the cookie is active
+cookies.header.expires.tooltip=Expiration date for the cookie
+cookies.header.security.tooltip=Shows whether it is a secure cookie or not
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Received Cookies
+cookies.netinfo.Sent_Cookies=Sent Cookies
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Path Filter
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Export All Cookies
+cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
+cookies.export.Export_For_Site=Export Cookies For This Site
+cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Remove Cookies
+cookies.Create=Create Cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Tools
+cookies.ToolsTooltip=Tools
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Show All Cookies
+cookies.ViewAllTooltip=Open the built-in Cookie Manager
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Web Sites Permissions
+cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filter
+cookies.FilterTooltip=Use given options to filter the cookie list.
+cookies.filter.byPath=Filter Cookies By Current Path
+cookies.filter.byPathTooltip=Show only cookies that match the current path.
+cookies.filter.showRejectedCookies=Show Rejected Cookies
+cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Edit Cookie
+cookies.edit.name.label=Name:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Path:
+cookies.edit.expire.label=Expires:
+cookies.edit.value.label=Value:
+cookies.edit.secure.label=Secure Cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/bg/firebug-amo.properties b/locale/bg/firebug-amo.properties
index 64c0077..ecc5c68 100644
--- a/locale/bg/firebug-amo.properties
+++ b/locale/bg/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug се интегрира с Firefox и ви предоставя множество инструменти за разработка докато разглеждате страници. Можете да редактирате, изчиствате грешки и наблюдавате CSS, HTML и JavaScript на живо — във всяка уеб страница.\n\nFirebug 1.6 изисква Firefox 3.6 или по-висока версия.
-firebug.amo.description=Firebug се интегрира с Firefox и ви предоставя множество инструменти за разработка докато разглеждате страници. Можете да редактирате, изчиствате грешки и наблюдавате CSS, HTML и JavaScript на живо — във всяка уеб страница.\n\nПосетете уеб сайта за документация, снимки на екрана и дискусионни форуми: http://getfirebug.com
-firebug.amo.developer.comments=Ако имате проблеми, прочетете отговорите на често задаваните въпроси за FireBug.\n\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug се интегрира с Firefox и ви предоставя множество инструменти за разработка докато разглеждате страници. Можете да редактирате, изчиствате грешки и наблюдавате CSS, HTML и JavaScript на живо — във всяка уеб страница.\n\nFirebug 1.6 изисква Firefox 3.6 или по-висока версия.
+firebug.amo.description=Firebug се интегрира с Firefox и ви предоставя множество инструменти за разработка докато разглеждате страници. Можете да редактирате, изчиствате грешки и наблюдавате CSS, HTML и JavaScript на живо — във всяка уеб страница.\n\nПосетете уеб сайта за документация, снимки на екрана и дискусионни форуми: http://getfirebug.com
+firebug.amo.developer.comments=Ако имате проблеми, прочетете отговорите на често задаваните въпроси за FireBug.\n\nhttp://getfirebug.com/faq.html
diff --git a/locale/bg/firebug-tracing.properties b/locale/bg/firebug-tracing.properties
index e32ef62..154965a 100644
--- a/locale/bg/firebug-tracing.properties
+++ b/locale/bg/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Отваряне на трасирането на Firebug
-Always_Open_Firebug_Tracing=Винаги да се отваря трасирането на Firebug
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Трасиране
-tracing.Show_Scope_Variables=Променливи от обхвата
-tracing.Show_Time=Времена
-tracing.tab.Stack=Стек
-tracing.tab.Exception=Изключение
-tracing.tab.Properties=Свойства
-tracing.tab.Scope=Обхват
-tracing.tab.Response=Отговор
-tracing.tab.Source=Изходен код
-tracing.tab.Interfaces=Интерфейси
-tracing.tab.Object=Обект
-tracing.tab.Event=Събитие
-tracing.cmd.Clear=Изчистване
-tracing.cmd.tip.Clear=Изчистване на всички съобщения
-tracing.cmd.Find=Търсене
-tracing.cmd.tip.Find=Търсене на текст
-tracing.cmd.Bookmark=Отметка
-tracing.cmd.tip.Bookmark=Вмъкване на отметка
-tracing.cmd.Restart=Рестартиране на Firefox
-tracing.cmd.tip.Restart=Рестартиране на Firefox
-tracing.cmd.Exit=Изход
-tracing.cmd.tip.Exit=Изход
-tracing.cmd.Save=Запис на файл
-tracing.cmd.tip.Save=Запис на журналите във файл
-tracing.cmd.Load=Зареждане от файл
-tracing.cmd.tip.Load=Зареждане на журналите от файл
-tracing.cmd.Expand_All=Разширяване на всички
-tracing.cmd.Collapse_All=Затваряне на всички
-tracing.cmd.Tools=Инструменти
-tracing.cmd.tip.Tools=Инструменти
-tracing.cmd.Clear_Browser_Cache=Изчистване на кеша
-tracing.cmd.tip.Clear_Browser_Cache=Изчистване на кеша
-tracing.cmd.Force_Garbage_Collector=Изчистване на паметта (GC)
-tracing.cmd.tip.Force_Garbage_Collector=Изчистване на паметта (GC)
-tracing.cmd.Open_Profile_Directory=Отваряне на папката на профила
-tracing.cmd.tip.Open_Profile_Directory=Отваряне на папката на профила
-tracing.option.A11Y_Description=Проблеми с достъпността
-tracing.option.ACTIVATION_Description=Включване на Firebug
-tracing.option.ACTIVITYOBSERVER_Description=Следене на работата на Firebug
-tracing.option.ANNOTATIONS_Description=Бележки за сайт
-tracing.option.BP_Description=Точки на прекъсване
-tracing.option.CACHE_Description=Кеш на кода
-tracing.option.COMMANDLINE_Description=Команден ред и прозорец
-tracing.option.COMPILATION_UNITS_Description=Части при компилиране на скриптове
-tracing.option.CONSOLE_Description=Панел на конзолата
-tracing.option.CSS_Description=Анализ на CSS
-tracing.option.DISPATCH_Description=Предаване на събития
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Създаване чрез шаблон (Domplate)
-tracing.option.EDITOR_Description=Вграден редактор и автоматично дописване
-tracing.option.ERRORLOG_Description=Журнал за грешки от JS, CSS, XML и др.
-tracing.option.ERRORS_Description=Вътрешни грешки на Firebug
-tracing.option.EVAL_Description=Изпълнение на скрипт
-tracing.option.FBS_BP_Description=Точки на прекъсване от Firebug
-tracing.option.FBS_CREATION_Description=Създаване на скриптове от Firebug
-tracing.option.FBS_ERRORS_Description=Грешки от Firebug
-tracing.option.FBS_FINDDEBUGGER_Description=Търсене на функционалност за изчистване на грешки от Firebug
-tracing.option.FBS_FUNCTION_Description=Функционалност от Firebug
-tracing.option.FBS_JSDCONTEXT_Description=Контекст при изчистване на грешки в JavaScript от Firebug
-tracing.option.FBS_SRCUNITS_Description=Изходен код от Firebug
-tracing.option.FBS_STEP_Description=Постъпково изпълнение при изчистване на грешки от Firebug
-tracing.option.FBS_TRACKFILES_Description=Следени файлове от Firebug
-tracing.option.FUNCTION_NAMES_Description=Имена на функции на JavaScript
-tracing.option.HISTORY_Description=История на навигацията във Firebug
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=Наблюдение на заявки по HTTP
-tracing.option.INFOTIP_Description=Съвет
-tracing.option.INITIALIZE_Description=Инициализация на Firebug
-tracing.option.INSPECT_Description=Инспектор
-tracing.option.JSONVIEWER_Description=Преглед на JSON
-tracing.option.LINETABLE_Description=Таблица с редовете на скриптовете
-tracing.option.LOCALE_Description=Локализация
-tracing.option.LOCATIONS_Description=Източник на код
-tracing.option.NET_Description=Мрежов панел
-tracing.option.NET_EVENTS_Description=Мрежови събития
-tracing.option.OPTIONS_Description=Настройки на Firebug
-tracing.option.PANELS_Description=Панели
-tracing.option.SHORTCUTS_Description=Клавишни комбинации
-tracing.option.SOURCEFILES_Description=Файлове с изходен код на JavaScript
-tracing.option.SPY_Description=Наблюдение на заявки по XMLHttpRequests
-tracing.option.STACK_Description=Стек на извикванията на JavaScript
-tracing.option.STORAGE_Description=Място на запазване на настройките
-tracing.option.SVGVIEWER_Description=Преглед на SVG
-tracing.option.FONTS_Description=Информация и преглед на шрифтове
-tracing.option.TOOLTIP_Description=Подсказка на бутона за стартиране
-tracing.option.TOPLEVEL_Description=JavaScript от най-горно ниво
-tracing.option.UI_LOOP_Description=Потребителски интерфейс за изчистване на грешки в JavaScript
-tracing.option.WINDOWS_Description=Наблюдение на прозорците и подпрозорците на Firebug
-tracing.option.XMLVIEWER_Description=Преглед на XML
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Отваряне на трасирането на Firebug
+Always_Open_Firebug_Tracing=Винаги да се отваря трасирането на Firebug
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Трасиране
+tracing.Show_Scope_Variables=Променливи от обхвата
+tracing.Show_Time=Времена
+tracing.tab.Stack=Стек
+tracing.tab.Exception=Изключение
+tracing.tab.Properties=Свойства
+tracing.tab.Scope=Обхват
+tracing.tab.Response=Отговор
+tracing.tab.Source=Изходен код
+tracing.tab.Interfaces=Интерфейси
+tracing.tab.Object=Обект
+tracing.tab.Event=Събитие
+tracing.cmd.Clear=Изчистване
+tracing.cmd.tip.Clear=Изчистване на всички съобщения
+tracing.cmd.Find=Търсене
+tracing.cmd.tip.Find=Търсене на текст
+tracing.cmd.Bookmark=Отметка
+tracing.cmd.tip.Bookmark=Вмъкване на отметка
+tracing.cmd.Restart=Рестартиране на Firefox
+tracing.cmd.tip.Restart=Рестартиране на Firefox
+tracing.cmd.Exit=Изход
+tracing.cmd.tip.Exit=Изход
+tracing.cmd.Save=Запис на файл
+tracing.cmd.tip.Save=Запис на журналите във файл
+tracing.cmd.Load=Зареждане от файл
+tracing.cmd.tip.Load=Зареждане на журналите от файл
+tracing.cmd.Expand_All=Разширяване на всички
+tracing.cmd.Collapse_All=Затваряне на всички
+tracing.cmd.Tools=Инструменти
+tracing.cmd.tip.Tools=Инструменти
+tracing.cmd.Clear_Browser_Cache=Изчистване на кеша
+tracing.cmd.tip.Clear_Browser_Cache=Изчистване на кеша
+tracing.cmd.Force_Garbage_Collector=Изчистване на паметта (GC)
+tracing.cmd.tip.Force_Garbage_Collector=Изчистване на паметта (GC)
+tracing.cmd.Open_Profile_Directory=Отваряне на папката на профила
+tracing.cmd.tip.Open_Profile_Directory=Отваряне на папката на профила
+tracing.option.A11Y_Description=Проблеми с достъпността
+tracing.option.ACTIVATION_Description=Включване на Firebug
+tracing.option.ACTIVITYOBSERVER_Description=Следене на работата на Firebug
+tracing.option.ANNOTATIONS_Description=Бележки за сайт
+tracing.option.BP_Description=Точки на прекъсване
+tracing.option.CACHE_Description=Кеш на кода
+tracing.option.COMMANDLINE_Description=Команден ред и прозорец
+tracing.option.COMPILATION_UNITS_Description=Части при компилиране на скриптове
+tracing.option.CONSOLE_Description=Панел на конзолата
+tracing.option.CSS_Description=Анализ на CSS
+tracing.option.DISPATCH_Description=Предаване на събития
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Създаване чрез шаблон (Domplate)
+tracing.option.EDITOR_Description=Вграден редактор и автоматично дописване
+tracing.option.ERRORLOG_Description=Журнал за грешки от JS, CSS, XML и др.
+tracing.option.ERRORS_Description=Вътрешни грешки на Firebug
+tracing.option.EVAL_Description=Изпълнение на скрипт
+tracing.option.FBS_BP_Description=Точки на прекъсване от Firebug
+tracing.option.FBS_CREATION_Description=Създаване на скриптове от Firebug
+tracing.option.FBS_ERRORS_Description=Грешки от Firebug
+tracing.option.FBS_FINDDEBUGGER_Description=Търсене на функционалност за изчистване на грешки от Firebug
+tracing.option.FBS_FUNCTION_Description=Функционалност от Firebug
+tracing.option.FBS_JSDCONTEXT_Description=Контекст при изчистване на грешки в JavaScript от Firebug
+tracing.option.FBS_SRCUNITS_Description=Изходен код от Firebug
+tracing.option.FBS_STEP_Description=Постъпково изпълнение при изчистване на грешки от Firebug
+tracing.option.FBS_TRACKFILES_Description=Следени файлове от Firebug
+tracing.option.FUNCTION_NAMES_Description=Имена на функции на JavaScript
+tracing.option.HISTORY_Description=История на навигацията във Firebug
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=Наблюдение на заявки по HTTP
+tracing.option.INFOTIP_Description=Съвет
+tracing.option.INITIALIZE_Description=Инициализация на Firebug
+tracing.option.INSPECT_Description=Инспектор
+tracing.option.JSONVIEWER_Description=Преглед на JSON
+tracing.option.LINETABLE_Description=Таблица с редовете на скриптовете
+tracing.option.LOCALE_Description=Локализация
+tracing.option.LOCATIONS_Description=Източник на код
+tracing.option.NET_Description=Мрежов панел
+tracing.option.NET_EVENTS_Description=Мрежови събития
+tracing.option.OPTIONS_Description=Настройки на Firebug
+tracing.option.PANELS_Description=Панели
+tracing.option.SHORTCUTS_Description=Клавишни комбинации
+tracing.option.SOURCEFILES_Description=Файлове с изходен код на JavaScript
+tracing.option.SPY_Description=Наблюдение на заявки по XMLHttpRequests
+tracing.option.STACK_Description=Стек на извикванията на JavaScript
+tracing.option.STORAGE_Description=Място на запазване на настройките
+tracing.option.SVGVIEWER_Description=Преглед на SVG
+tracing.option.FONTS_Description=Информация и преглед на шрифтове
+tracing.option.TOOLTIP_Description=Подсказка на бутона за стартиране
+tracing.option.TOPLEVEL_Description=JavaScript от най-горно ниво
+tracing.option.UI_LOOP_Description=Потребителски интерфейс за изчистване на грешки в JavaScript
+tracing.option.WINDOWS_Description=Наблюдение на прозорците и подпрозорците на Firebug
+tracing.option.XMLVIEWER_Description=Преглед на XML
diff --git a/locale/bg/firebug.properties b/locale/bg/firebug.properties
index 8b1d71f..721cbf1 100644
--- a/locale/bg/firebug.properties
+++ b/locale/bg/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug — %S
-# Panel titles
-Panel-console=Конзола
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Мрежа
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Скрипт
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Стил
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Изчислен
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Подредба
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Следени изрази
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Прекъсвания
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Стек
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Обхвати
-firebug.DetachFirebug=Отваряне на Firebug в нов прозорец
-firebug.AttachFirebug=Прикачане на Firebug към прозорец на браузъра
-# LOCALIZATION NOTE (plural.Total_Firebugs): Semi-colon list of plural forms.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox status bar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=Общо %1$S прозорец на Firebug;Общо %1$S прозореца на Firebug
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-startbutton.tip.deactivated=Deactivated
-# menu (available on Firebug's tab bar).
-# Console panel options.
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-panel.status=%S: %S
-inBrowser=В браузъра
-minimized=Минимизирано
-enablement.for_all_pages=за всички
-enablement.on=Включен
-enablement.off=Изключен
-enablement.Panel_activation_status=Panel activation status:
-none=Затворен
-Firebug_-_inactive_for_current_website=Firebug — изключен за този уеб сайт
-Activate_Firebug_for_the_current_website=Включване на Firebug за този уеб сайт
-Minimized=Минимизиран
-Minimize_Firebug=Минимизиране на Firebug
-On_for_all_web_pages=За всички уеб страници
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Изчистване на списъка за задействане
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Разположение на интерфейса на Firebug
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-firebug_options=Настройки на Firebug
-# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-firebug.Show_All_Panels=Всички панели
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# clicked element in the DOM panel (tab).
-ShowJavaScriptErrors=Грешки в JavaScript
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Предупреждения в JavaScript
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Грешки в CSS
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Стек със грешки
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Заявки XMLHttpRequest
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Грешки в Chrome
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Съобщения от Chrome
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Външни грешки
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Мрежови грешки
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Строги предупреждения (забавя)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=История на командите
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Предложения за автоматично дописване
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Грешно предположение
-# %S = Target panel title
-# examples: Inspect in DOM Tab
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-Line=%S (ред %S)
-LineAndCol=%S (ред %S, кол. %S)
-InstanceLine=%S #%S (ред %S)
-StackItem=%S (%S ред %S)
-SystemItem=<Системно>
-# HTML panel context menu items.
-# Quick Info Box
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(без име)
-# LOCALIZATION NOTE (html.label.Expand/Contract_All): Used within the HTML for a context
-# menu item. The user can expand/contract the element together with all its children to
-# quickly see the entire hierarchical structure or collapse it.
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange): Used within the DOM panel to create
-# a 'property breakpoint'. Right-click on an property of an object. The label is also
-# used for the 'break on next button' (available on the toolbar).
-ShowFullText=Пълен текст
-html.option.tip.Show_Full_Text=Don't crop element contents
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-# LOCALIZATION NOTE (EditAttribute): Menu item label used in HTML panel context menu. Allows
-ShowWhitespace=Междини с интервали
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-ShowComments=Коментари
-html.option.tip.Show_Comments=Show comment nodes
-# examples: Edit Attribute "onclick"...
-# LOCALIZATION NOTE (DeleteAttribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-HighlightMutations=Открояване на промените
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-ExpandMutations=Разширяване на промените
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-ScrollToMutations=Придвижване на изгледа до промените изгледа
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# The text between <a> and </a> is displayed as a link.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-ShowQuickInfoBox=Поле за бърза информация
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# The text between <a> and </a> is displayed as a link.
-# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-ShadeBoxModel=Открояване на модела на кутиите
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Придвижване на изгледа
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Нов атрибут…
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Изтриване на елемент
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Изтриване на възел
-html.Delete_Node=Delete the node from the tree
-# %S = Name of the clicked property
-quickInfo=Бърза информация
-computedStyle=Изчислен стил
-# examples: Edit "background-color"...
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-html.Break_On_Mutate=Прекъсване при промяна
-html.Disable_Break_On_Mutate=Изключване на прекъсването при промяна
-html.label.Break_On_Text_Change=Прекъсване при промяна на текста
-html.label.HTML_Breakpoints=Прекъсвания за HTML
-html.label.Break_On_Attribute_Change=Прекъсване при промяна на атрибут
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Прекъсване при добавяне или изтриване на дете
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Прекъсване при изтриване на елемент
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-html.label.Expand/Contract_All=Разширяване/свиване на всички
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-# Console context menu labels.
-dom.label.breakOnPropertyChange=Прекъсване при промяна на свойство
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# Breakpoints side panel
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-dom.disableBreakOnPropertyChange=Изключване на прекъсване при промяна на свойство
-dom.label.DOM_Breakpoints=Прекъсвания за DOM
-# breakpoints.Enable_Breakpoint): Context menu item labels in the Breakpoints side panel.
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-EditAttribute=Редактиране на атрибута „%S“…
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.Collapse_All): Context menu item labels used in
-# Stack side panel (within Script panel)
-DeleteAttribute=Изтриване на атрибута „%S“
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# Firebug needs to be halted at a breakpoint to see these items.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-InheritedFrom=Наследено от
-SothinkWarning=Разширението „Sothink SWF Catcher“ пречи на Firebug да работи нормално.<br><br>За помощ прочетете <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">това в ЧЗВ на Firebug</a>.
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-css.fontFamilyPreview=Под южно дърво, цъфтящо в синьо, бягаше малко пухкаво зайче.
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-css.EmptyStyleSheet=Няма стилови правила. Можете да <a>създадете и добавите</a>.
-# LOCALIZATION NOTE (ShowRulers): Label for context menu item.
-# Used in the Layout side panel (within HTML panel).
-# Net panel
-css.EmptyElementCSS=Този елемент няма стилови правила. Можете да му <a>създадете и добавите</a>.
-EditStyle=Редактиране на стила на елемент…
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Ново правило…
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu within the Net panel
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Ново свойство…
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel's context
-# menu for breaking on an XHR.
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-EditProp=Редактиране на „%S“…
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-DisableProp=Изключване на „%S“
-css.tip.Disable_Prop=Disable the property "%S"
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-DeleteProp=Изтриване на „%S“
-css.tip.Delete_Prop=Delete the property "%S"
-# when a Net panel entry is expanded)
-BreakOnThisError=Прекъсване при тази грешка
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Прекъсване при всички грешки
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-TrackThrowCatch=Проследяване на throw/catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Използване на последния ред в кода за име на eval()
-UseMD5ForEvalName=Използване на MD5 за име на eval()
-# in the Net & Console panel when copying JSON replies.
-Breakpoints=Прекъсвания
-ErrorBreakpoints=Прекъсвания при грешки
-LoggedFunctions=Следени функции
-EnableAllBreakpoints=Включване на всички прекъсвания
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Изключване на всички прекъсвания
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Изтриване на всички прекъсвания
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Прекъсването ще се задейства, само ако следният израз е верен:
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders): Label (noun)
-breakpoints.Remove_Breakpoint=Изтриване на прекъсване
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Изключване на прекъсване
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Включване на прекъсване
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# used in the Net panel (displayed inside the Headers tab of a request).
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-script.balloon.Continue=Продължаване
-script.balloon.Disable=Изключване
-ScriptsFilterStatic=Статични скриптове
-ScriptsFilterEval=Статични скриптове и тези в eval
-ScriptsFilterEvent=Статични скриптове и тези за обработка на събития
-ScriptsFilterAll=Статични скриптове, тези в eval и за обработка на събития
-ScriptsFilterStaticShort=статични
-ScriptsFilterEvalShort=в eval
-ScriptsFilterEventShort=за събития
-ScriptsFilterAllShort=всички
-# example: Firebug's log limit has been reached. 150 entries not shown.
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-callstack.Expand_All=Разширяване на всички
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Свиване на всички
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# (result of JavaScript profiler tool).
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-ShowUserProps=Свойства дефинирани от потребител
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Функции дефинирани от потребител
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Свойства от DOM
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Функции от DOM
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Константи от DOM
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Вградени функции за обработка на събития
-ShowInlineEventHandlersTooltip=Показване на вградените функции за обработка на събития.
-ShowOwnProperties=Само собствени свойства
-ShowOwnPropertiesTooltip=Без показване на наследените по веригата прототипи свойства
-ShowEnumerableProperties=Само изброимите свойства
-ShowEnumerablePropertiesTooltip=Без показване на свойствата, по които не се итерира чрез for
-NoMembersWarning=Няма свойства, които да бъдат показани за този обект.
-NewWatch=Нов израз за следене…
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-AddWatch=Добавяне на израз
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-CopySourceCode=Копиране на изходния код
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Използвайте #<число>, за да се придвижите до определен ред
-CopyValue=Копиране на стойност
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Копиране на името
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Копиране на пътя
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Ново свойство…
-EditProperty=Редактиране на свойство…
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Редактиране на променлива…
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Редактиране на израз…
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Изтриване на свойство
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Изтриване на израз
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-SetBreakpoint=Поставяне на прекъсване
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# Support for clipboard actions.
-# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Script
-# panel when clicking a function object.
-EditBreakpointCondition=Редактиране на условието за прекъсване…
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=В тази страница няма зададени прекъсвания.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): Tooltip used for a button on main
-Only_Show_Applied_Styles=Само приложени стилове
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-Show_User_Agent_CSS=CSS от браузъра
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# %S = Name of the unsupported method
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# in the Console panel
-# LOCALIZATION NOTE (console.Use_TAB_and_arrow_keys): Hint at the top of the Completion Popup
-# in the Command Line
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# JavaScript is not available
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# See 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-Expand_Shorthand_Properties=Разширяване на съкратените свойства
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-Sort_alphabetically=Азбучна подредба
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# sent and received headers size.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-Show_Mozilla_specific_styles=Специфичните за Mozilla стилове
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-# LOCALIZATION NOTE (net.xpy.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Натиснете клавиш за конкретизиране на списъка
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):
-# Labels for Net panel's options (located in tab's option menu)
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-LayoutPadding=отстъп
-LayoutBorder=контур
-LayoutMargin=граница
-LayoutPosition=разположение
-LayoutAdjacent=съсед
-position=разположение
-# Net panel's option. If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-ShowRulers=Линеал
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# (breaking on next executed JavaScript statement)
-Loading=Зареждане…
-Headers=Заглавни части
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-net.tip.Clear=Clear the request list
-# %1 = Number of requests
-# example: 21 requests
-net.header.Reset_Header=Изчистване на заглавните части
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-net.header.URL=Адрес
-net.header.URL_Tooltip=Изискан адрес и метод на HTTP
-net.header.Status=Състояние
-net.header.Status_Tooltip=Състояние на получения отговор.
-net.header.Domain=Домейн
-net.header.Domain_Tooltip=Домейн на изпълнената заявка.
-net.header.Size=Размер
-net.header.Size_Tooltip=Размер на получения отговор.
-net.header.Timeline=Времена
-net.header.Timeline_Tooltip=Подробен отчет за времената на цикъла заявка-отговор.
-net.header.Local_IP=Локален адрес
-net.header.Local_IP_Tooltip=Локален адрес по IP и порт на заявката
-net.header.Remote_IP=Отдалечен адрес
-net.header.Remote_IP_Tooltip=Отдалечен адрес по IP и порт на заявката
-net.header.Protocol=Протокол
-net.header.Protocol_Tooltip=Протоколът на заявката.
-# With: the scope inside of the with(obj) {} statement
-net.label.XHR_Breakpoints=Прекъсвания при XHR
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-# Window: the scope inside of a Javascript window object.
-net.label.Break_On_XHR=Прекъсване при XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-net.headers.view_source=изходен код
-net.headers.pretty_print=форматиран вид
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-net.filter.Media=Медия
-# waterfall graph in the Net panel.
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-Post=Заявка POST
-Put=Заявка PUT
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-Response=Отговор
-URLParameters=Параметри
-Cache=Кеш
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Обща информация
-fontviewer.Meta_Data=Метаданни
-fontviewer.view_source=изходен код
-fontviewer.Preview=Преглед
-fontviewer.view_characters=преглед на знаци
-fontviewer.pretty_print=красив вариант
-fontviewer.view_sample=мостра
-fontviewer.uniqueid=Уникален идентификатор
-fontviewer.vendor=Шрифтолейна
-fontviewer.license=Лиценз
-fontviewer.description=Описание
-fontviewer.copyright=Авторски права
-fontviewer.credits=Благодарности
-fontviewer.trademark=Търговска марка
-fontviewer.licensee=Лицензополучател
-fontviewer.extension=Разширение
-fontviewer.pangram=Под южно дърво, цъфтящо в синьо, бягаше малко пухкаво зайче.
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-jsonviewer.sort=Подреждане по ключ
-jsonviewer.do_not_sort=Без подреждане
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-# A11y Chrome Labels (not visible, spoken by screen readers)
-# A11y panelNode labels (not visible, spoken by screen readers)
-net.jsonviewer.Copy_JSON=Копиране на „%S“ като JSON
-# A11y Domplate labels (not visible, spoken by screen readers)
-# LOCALIZATION NOTE:
-RequestHeaders=Заглавни части на заявката
-ResponseHeaders=Заглавни части на отговора
-CachedResponseHeaders=Кеширани заглавни части на отговора
-PostRequestHeaders=Request Headers From Upload Stream
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-# LOCALIZATION NOTE (a11y.labels.overridden):
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-plural.Limit_Exceeded2=Максималният размер на журнала на Firebug е превишен, пропуснат е %1$S запис.;Максималният размер на журнала на Firebug е превишен, пропуснати са %1$S записа.
-LimitPrefs=Настройки
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-LimitPrefsTitle=За да промените ограничението, променете: „%S“
-Refresh=Обновяване
-panel.tip.Refresh=Refresh the panel display
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-OpenInTab=Отваряне в нов подпрозорец
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Отваряне на отговора в нов подпрозорец
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-Profile=Отчет
-ProfilerStarted=Програмата за отчитане работи. Натиснете „Отчет“ отново, за да видите този доклад.
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-plural.Profile_Time2=(%1$Sms, %2$S извикване);(%1$Sms, %2$S извиквания)
-NothingToProfile=Няма дейност, която да се отчита.
-PercentTooltip=Процент време, в което е работила тази функция.
-CallsHeaderTooltip=Брой извиквания на функцията.
-OwnTimeHeaderTooltip=Време във функцията без това на извиканите от нея функции.
-TimeHeaderTooltip=Време във функцията заедно с това на извиканите от нея функции.
-AvgHeaderTooltip=Средно време, включително извикванията на функции.
-MinHeaderTooltip=Минимално време, включително извикванията на функции.
-MaxHeaderTooltip=Максимално време, включително извикванията на функции.
-ProfileButton.Enabled.Tooltip=Отчитане на времето за изпълнение на JavaScript.
-ProfileButton.Disabled.Tooltip=Отчитане на времето за изпълнение на JavaScript. (Панелът за скриптове трябва да е включен.)
-Function=Функция
-Percent=Процент
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-Calls=Извиквания
-OwnTime=Собствено време
-Time=Време
-Avg=Срдн
-Min=Мин
-Max=Макс
-File=Файл
-# example: Match found for "obj" in object element at /html/body/object[2]
-Copy=Копиране
-Cut=Отрязване
-Remove=Изтриване
-Delete=Delete
-Paste=Поставяне
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Копиране на innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Копиране на XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Копиране на пътя за CSS
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-CopyLocation=Копиране на адрес
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Копиране на адрес с параметрите
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Копиране на заглавните части на заявката
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Копиране на заглавните части на отговора
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Копиране на тялото на отговора
-net.tip.Copy_Response=Copy the response body to the clipboard
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-CopyError=Копиране на грешката
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-CopySource=Копиране на функцията
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-ShowCallsInConsole=Засичане на извиквания на „%S“
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-ShowEventsInConsole=Засичане на събитията
-html.tip.Show_Events_In_Console=Log event information to the console
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-panel.Enabled=Включено
-panel.tip.Enabled=Toggle the panel activation
-# example: Match found for "main" in #mainContent h2 {
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-console.MethodNotSupported=Конзолата на Firebug не поддържа „%S“
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-commandline.MethodNotSupported=Командният ред на Firebug не поддържа „%S“
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-commandline.CurrentWindow=Current window:
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-console.Disable_Break_On_All_Errors=Без прекъсване при всички грешки
-console.Break_On_All_Errors=Прекъсване при всички грешки
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-console.Break_On_This_Error=Прекъсване при тази грешка
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-console.JSDisabledInFirefoxPrefs=JavaScript е изключен в настройките на Firefox. Ако искате да използвате панела на конзолата, трябва да включите тази възможност от: „Инструменти“ или „Редактиране“ → „Настройки“ → „Съдържание“ → „Включване на JavaScript“.
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-console.multiHighlightLimitExceeded=Прекалено много елементи в масива — всичките не могат да се покажат на страницата (текущият максимум е %S).\nПогледнете настройката „extensions.firebug.multiHighlightLimit“.
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-commandline.disabledForXMLDocs=Командният ред на Firebug не работи на страници от XML. <a>Превключете към HTML</a>, за да го включите.
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-# Console messages
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-net.sizeinfo.Response_Body=Тяло на отговора
-net.sizeinfo.Post_Body=Тяло на заявката POST
-net.sizeinfo.Total_Sent=Общо изпратени
-net.sizeinfo.Total_Received=Общо получени
-net.sizeinfo.Including_HTTP_Headers=Заедно със заглавните части
-net.ActivationMessage=Панелът за мрежата е включен. Не са показани заявките докато е бил изключен.
-net.responseSizeLimitMessage=Превишен е максималният размер на отговора за Firebug. Натиснете <a>тук</a>, за да отворите целия отговор в нов подпрозорец на Firefox.
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-net.postDataSizeLimitMessage=Превишен е максималният размер на отговора за Firebug.
-net.Break_On_XHR=Прекъсване при XHR
-net.label.Parameters=Параметри
-net.label.Parts=Части
-net.label.Source=Изходен код
-## LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-net.label.Resend=Изпращане наново
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-net.option.Disable_Browser_Cache=Изключване на кеша на браузъра
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-net.option.Show_Paint_Events=Събития за изобразяване
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-net.option.Show_BFCache_Responses=Отговори от кеша от историята
-net.option.tip.Show_BFCache_Responses=Панелът за мрежата може да показва и отговорите от кеша от историята
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-script.Break_On_Next=Прекъсване при следващо
-script.Disable_Break_On_Next=Без прекъсване при следващо
-ShowHttpHeaders=Заглавни части на HTTP
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-plural.Request_Count2=%1$S заявка;%1$S заявки
-FromCache=от кеша
-StopLoading=Спиране на зареждането
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Голям обем данни)
-ShowComputedStyle=Изчислен стил
-StyleGroup-text=Текст
-StyleGroup-background=Фон
-StyleGroup-box=Модел на разполагането
-StyleGroup-layout=Подредба
-StyleGroup-other=Други
-Dimensions=%S × %S
-# The suggestion message represents an advice how to solve the problem.
-# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-CopyColor=Копиране на цвета
-css.tip.Copy_Color=Copy the color to the clipboard
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-# firebug.dtd
-# LOCALIZATION NOTE (firebug.Rerun, firebug.Continue, firebug.StepOver, firebug.StepInto,
-CopyImageLocation=Копиране на адреса на изображението
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Отваряне на изображението в нов подпрозорец
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# firebug.StepOut, firebug.RunUntil)
-# Labels used for debugger options available in the Script panel.
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-OmitObjectPathStack=Пропускане на стека на лентата с инструменти
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Зареждане на първоначалния код
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-Copy_Rule_Declaration=Копиране на декларацията на правилото
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# editors.dtd
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-Copy_Style_Declaration=Копиране на декларацията на стила
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# Used in the CSS panel for the Edit button.
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-plural.Error_Count2=%1$S грешка;%1$S грешки
-moduleManager.title=Панелът за „%S“ е изключен
-moduleManager.desc3=Включвайте/изключвайте всички панели на Firebug чрез иконата в лентата за състояние. За контрол на отделните панели използвайте малките менюта към подпрозорците им.
-moduleManager.Enable=Включване
-Suspend_Firebug=Спиране на Firebug
-Resume_Firebug=Включване на Firebug
-Reset_Panels_To_Disabled=Всички панели да са изключени
-Open_Console=Отваряне на конзолата
-Open_Console_Tooltip=Отваряне на конзолата на Firebug за трасиране.
-Scope_Chain=Верига на обхватите
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-With_Scope=Обхват на with
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-Call_Scope=Обхват на call
-# Message displayed in a break notification popup next to a checkbox.
-Window_Scope=Обхват на window
-Logs=Журнали
-Options=Настройки
-Copy_Stack=Копиране на стека
-Copy Exception=Копиране на изключението
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-requestinfo.Blocking=Блокиране
-requestinfo.Resolving=Търсене по DNS
-requestinfo.Connecting=Свързване
-requestinfo.Sending=Изпращане
-requestinfo.Waiting=Изчакване
-requestinfo.Receiving=Получаване
-requestinfo.ContentLoad=„DOMContentLoaded“ (събитие)
-requestinfo.WindowLoad=„load“ (събитие)
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-requestinfo.started.label=Време спрямо началото на заявката
-requestinfo.phases.label=Фази и изминало време спрямо началото на заявката
-requestinfo.timings.label=Събития спрямо началото на заявката:
-search.Firebug_Search=Търсене на Firebug
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-search.Next=Следваща поява
-search.tip.Next=Search for the next match
-search.Previous=Предишна поява
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Разлика главни/малки
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Без разлика главни/малки
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Много файлове
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Регулярни изрази
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-search.html.CSS_Selector=Селектор на CSS
-search.net.Headers=Заглавни части
-search.net.Parameters=Параметри
-search.net.Response_Bodies=Тела на отговорите
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Запазване
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Всички журнални записи
-firebug.console.Errors=Грешки
-firebug.console.Filter_by_Errors=Само съобщения за грешки
-firebug.console.Warnings=Предупреждения
-firebug.console.Filter_by_Warnings=Само съобщения за предупреждения
-firebug.console.Info=Информация
-firebug.console.Filter_by_Info=Само съобщения за информация
-firebug.console.Debug_Info=Изчистване на грешки
-firebug.console.Filter_by_Debug_Info=Само съобщения за изчистване на грешки
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Отваряне на Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Скриване на Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Включване на всички панели
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Изключване на всички панели
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Промяна на клавишните комбинации
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Настройки
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Включване на достъпността
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Стандартни стойности за всички настройки на Firebug
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug в Мрежата
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Показване на броя на грешките
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Размер на шрифта
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Увеличаване
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Намаляване
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Стандартен
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Сайт на Firebug…
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Документация…
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Клавишни комбинации…
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Група за дискусии…
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Проследяване на грешки…
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Допринасяне…
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Относно…
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Търсене
-firebug.menu.tip.Search=Set focus to the search field
-# It's informing the user about the number of items in the storage.
-firebug.shortcut.reenterCommand.label=Въведете командата отново
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Превключване на инспекцията
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Превключване на полето за бърза информация
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Превключване на отчетите
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Фокусиране на командния ред
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Фокусиране на търсенето на Firebug
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Фокусиране на редактора на следените изрази
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Фокусиране на местоположението
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Следващ обект
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Предишен обект
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Промяна на клавишните комбинации
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Отваряне на Firebug в нов прозорец
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Превключване към левия панел на Firebug
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Превключване към десния панел на Firebug
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Отваряне на Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Предишен подпрозорец на Firebug
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Изчистване на конзолата
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Отваряне на конзолата за трасиране
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Назад
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Напред
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Увеличаване на размера на текста
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Намаляване на размера на текста
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Нормален размер на текста
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Избор на панел
-customizeShortcuts=Клавишни комбинации на Firebug
-# %1 = Number of storage items
-a11y.labels.panel_tools=инструменти на панела
-a11y.labels.firebug_panels=панели на Firebug
-a11y.labels.firebug_side_panels=странични панели на Firebug
-a11y.labels.firebug_window=прозорец на Firebug
-a11y.labels.firebug_status=състояние на Firebug
-a11y.labels.reset=изчистване
-a11y.labels.reset_shortcut=изчистване на клавишната комбинация за %S
-aria.labels.inactive_panel=изключен панел
-# example: 1 item in Storage
-a11y.labels.log_rows=редове на журнала
-a11y.labels.call_stack=стек на извикванията
-a11y.labels.document_structure=структура на документа
-a11y.labels.title_panel=панел %S
-a11y.labels.title_side_panel=страничен панел %S
-a11y.labels.cached=кеширани
-aria.labels.stack_trace=стек за трасиране
-# example: 2 items in Storage
-a11y.layout.padding=отстъп
-a11y.layout.border=контур
-a11y.layout.margin=граница
-a11y.layout.position=разположение
-a11y.layout.position_top=горно разположение
-a11y.layout.position_right=дясно разположение
-a11y.layout.position_bottom=долно разположение
-a11y.layout.position_left=ляво разположение
-a11y.layout.margin_top=горна граница
-a11y.layout.margin_right=дясна граница
-a11y.layout.margin_bottom=долна граница
-a11y.layout.margin_left=лява граница
-a11y.layout.border_top=горен контур
-a11y.layout.border_right=десен контур
-a11y.layout.border_bottom=долен контур
-a11y.layout.border_left=ляв контур
-a11y.layout.padding_top=горен отстъп
-a11y.layout.padding_right=десен отстъп
-a11y.layout.padding_bottom=долен отстъп
-a11y.layout.padding_left=ляв отстъп
-a11y.layout.top=отгоре
-a11y.layout.right=отдясно
-a11y.layout.bottom=отдолу
-a11y.layout.left=отляво
-a11y.layout.width=широчина
-a11y.layout.height=височина
-a11y.layout.size=размер
-a11y.layout.z-index=ниво при наслагване
-a11y.layout.box-sizing=модел на разполагането
-a11y.layout.clientBoundingRect=обхващащо поле на клиента
-a11y.descriptions.press_enter_to_edit_values=Натиснете Enter и след него Tab, за да редактирате отделните стойности
-a11y.labels.style_rules=стилови правила
-aria.labels.inherited_style_rules=наследени стилови правила
-a11y.labels.computed_styles=изчислени стилове
-a11y.labels.dom_properties=свойства на DOM
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-a11y.labels.inline_editor=вътрешен редактор
-a11y.labels.value_for_attribute_in_element=стойност на атрибута %S на елемента %S
-a11y.labels.attribute_for_element=атрибут на елемента %S
-a11y.labels.text_contents_for_element=текстовото съдържание на елемента %S
-a11y.labels.defined_in_file=дефиниран в %S
-a11y.labels.declarations_for_selector=декларация на стил за селектора „%S“
-a11y.labels.property_for_selector=свойство на CSS за селектора: %S
-a11y.labels.value_property_in_selector=стойност на свойството %S от селектора %S
-a11y.labels.css_selector=селектор на CSS
-a11y.labels.source_code_for_file=изходен код на файла %S
-a11y.labels.press_enter_to_add_new_watch_expression=натиснете Enter, за да добавите нов израз за следене
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-a11y.labels.overridden=променен при унаследяване
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-a11y.updates.has_conditional_break_point=има условно прекъсване
-a11y.updates.has_disabled_break_point=има изключено прекъсване
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-a11y.updates.script_suspended_on_line_in_file=Скриптът е спрян на ред %S в %S, файл %S
-# Message logged into the Console panel when memory profiler session starts.
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-a11y.updates.match_found_in_logrows=открито е съвпадение за „%S“ в %S реда на журналите
-# Message used within the Console panel when the memory profiler session is finished.
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=открито е съвпадение за „%S“ на ред %S в %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=открито е съвпадение за „%S“ в елемента %S, с път %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=открито е съвпадение за „%S“ в атрибута %S=%S на елемента %S, с път %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=открито е съвпадение за „%S“ в текста: %S на елемента %S, с път %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=открито е съвпадение за „%S“ в селектора %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=открито е съвпадение за „%S“ в декларацията на стила %S, в селектора %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=открито е съвпадение за „%S“ за свойството в DOM %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=открито е съвпадение за „%S“ в %S, %S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=открито е съвпадение за „%S“ в обобщения ред: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=няма съвпадения за „%S“
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Наистина ли всички настройки на Firebug да се върнат към стандартните стойности?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Текущите редакции на CSS ще бъдат отхвърлени.\nСигурни ли сте, че искате да редактирате кода?
-# Console messages
-warning.Console_must_be_enabled=Конзолата трябва да бъде включена
-warning.Command_line_blocked?=Блокиран ли е командният ред?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Презаредете, за да включите конзолата на прозореца
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Презаредете страницата за изходния код на
-message.The_resource_from_this_URL_is_not_text=Ресурсът на този адрес не е текст
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Назад до този панел
-firebug.history.Stay_on_this_panel=Оставане на този панел
-firebug.history.Go_forward_to_this_panel=Напред до този панел
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Назад
-firebug.history.Go_forward=Напред
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Панелът за скриптове не е бил включен при зареждане на страницата
-script.suggestion.inactive_during_page_load2=<a>Презаредете</a>, за да видите целия изходен код
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript е изключен
-script.suggestion.javascript_not_enabled=Проверете „Firefox“ → „Инструменти/Редактиране“ → „Настройки“ → „Съдържание“ → „Включване на Javascript“
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Включете JavaScript и презаредете страницата
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Всички скриптове са били филтрирани
-script.suggestion.all_scripts_filtered=Проверете в лентата с инструменти кои скриптове се показват или настройката „Изходен код на chrome“
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=На страницата няма Javascript
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Изчистването на грешки вече е включено
-script.suggestion.debugger_active=Изчистването на грешки е спряно на точка на прекъсване на друга страница.
-script.button.Go_to_that_page=Към другата страница
-script.warning.debugger_not_activated=Изчистването на грешки е изключено
-script.suggestion.debugger_not_activated=Изчистването на грешки е изключено
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Затваряне
-firebug.View=Изглед
-firebug.Help=Помощ
-firebug.Run=Изпълнение
-firebug.Copy=Копиране
-firebug.History=История
-firebug.Run_the_entered_command=Изпълняване на въведената команда
-firebug.Clear_the_Command_Editor=Изчистване на редактора на командите
-firebug.Copy_the_script_as_a_bookmarklet=Копиране на скрипта като изпълнима отметка
-firebug.Insert_a_previously_entered_command=Въвеждане на предишна команда
-firebug.AlwaysOpenInWindow=Винаги да се отваря в нов прозорец
-firebug.OpenWith=Отваряне с редактор
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Сайтове…
-firebug.Configure_Editors=Настройване на редакторите
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Изпълнение до този ред
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Изследване
-firebug.InspectElement=Изследване на елемент
-firebug.InspectElementWithFirebug=Изследване на елемент с Firebug
-firebug.BreakOnErrors=Прекъсване при грешки
-firebug.InspectTooltip=Натиснете върху елемента в страницата, който ще изследвате
-firebug.EditHTMLTooltip=Редактиране на този HTML
-firebug.Profile=Отчет
-firebug.Clear=Изчистване
-firebug.ClearConsole=Изчистване на конзолата
-firebug.ClearTooltip=Изчистване на конзолата
-firebug.All=Всички
-firebug.Images=Изображения
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Настроени редактори на Firebug
-editors.Editor=Редактор
-editors.Executable=Изпълним файл
-editors.Launch_Arguments=Аргументи при стартиране
-editors.Add=Добавяне
-editors.Remove=Премахване
-editors.Change=Промяна
-editors.Move_Up=Нагоре
-editors.Close=Затваряне
-editors.Browse=Избор…
-changeEditor.Editor_Configuration=Настройки на редактора
-changeEditor.Name=Име:
-changeEditor.Executable=Изпълним файл:
-changeEditor.CmdLine=Аргументи:
-changeEditor.Supplied_arguments=Аргументи добавяни от Firebug:
-changeEditor.URL_of_file=адресът на файла (ако %url липсва, стандартно се добавя %file)
-changeEditor.Path_to_local_file=пътят към локалния файл (или временното му копие)
-changeEditor.Line_number=номер на реда (ако е наличен)
-changeEditor.Invalid_Application_Path=Неправилен път до програма
-changeEditor.Application_does_not_exist=Указаната програма не съществува
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Редактиране
-firebug.css.sourceEdit=Редактиране на изходния код
-firebug.css.sourceEdit.tooltip=Редактиране на изходния код на CSS зареден от браузъра
-firebug.css.liveEdit=Директно редактиране
-firebug.css.liveEdit.tooltip=Редактиране на изходния код на CSS извлечен от браузъра
-firebug.EditCSSTooltip=Редактиране на този CSS
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=В режим на „Поверително сърфиране“ сайтовете не биват запомняни
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Известяване при прекъсване
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=Може да включвате/изключвате точките на прекъсване в <a>менюто на панела</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Натискането на бутона „Изключване“ е с по-голям приоритет от „debugger“ с изключена точка на прекъсване.
-firebug.bon.tooltip.disableDebuggerKeyword2=Изключена точка на прекъсване
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(Панелът за скриптове трябва да е включен, за да ползвате тази възможност)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=Липсват елементи-наследници
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=още
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S съхранен обект;%1$S съхранени обекта
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Свойства на обект
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(няма подходящо дописване)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=Обектът за адрес най-вероятно е отхвърлен чрез метода revokeObjectURL
-firebug.failedToPreviewImageURL=Неуспешно зареждане на този адрес
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Отчетът за паметта е стартиран
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Добавени обекти по време на отчитането
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Резултати от отчитането на времето
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=За цялата сесия
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug — %S
+# Panel titles
+Panel-console=Конзола
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Мрежа
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Скрипт
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Стил
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Изчислен
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Подредба
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Следени изрази
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Прекъсвания
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Стек
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Обхвати
+firebug.DetachFirebug=Отваряне на Firebug в нов прозорец
+firebug.AttachFirebug=Прикачане на Firebug към прозорец на браузъра
+# LOCALIZATION NOTE (plural.Total_Firebugs): Semi-colon list of plural forms.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox status bar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=Общо %1$S прозорец на Firebug;Общо %1$S прозореца на Firebug
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+startbutton.tip.deactivated=Deactivated
+# menu (available on Firebug's tab bar).
+# Console panel options.
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+panel.status=%S: %S
+inBrowser=В браузъра
+minimized=Минимизирано
+enablement.for_all_pages=за всички
+enablement.on=Включен
+enablement.off=Изключен
+enablement.Panel_activation_status=Panel activation status:
+none=Затворен
+Firebug_-_inactive_for_current_website=Firebug — изключен за този уеб сайт
+Activate_Firebug_for_the_current_website=Включване на Firebug за този уеб сайт
+Minimized=Минимизиран
+Minimize_Firebug=Минимизиране на Firebug
+On_for_all_web_pages=За всички уеб страници
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Изчистване на списъка за задействане
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Разположение на интерфейса на Firebug
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+firebug_options=Настройки на Firebug
+# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+firebug.Show_All_Panels=Всички панели
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# clicked element in the DOM panel (tab).
+ShowJavaScriptErrors=Грешки в JavaScript
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Предупреждения в JavaScript
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Грешки в CSS
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Стек със грешки
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Заявки XMLHttpRequest
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Грешки в Chrome
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Съобщения от Chrome
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Външни грешки
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Мрежови грешки
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Строги предупреждения (забавя)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=История на командите
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Предложения за автоматично дописване
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Грешно предположение
+# %S = Target panel title
+# examples: Inspect in DOM Tab
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+Line=%S (ред %S)
+LineAndCol=%S (ред %S, кол. %S)
+InstanceLine=%S #%S (ред %S)
+StackItem=%S (%S ред %S)
+SystemItem=<Системно>
+# HTML panel context menu items.
+# Quick Info Box
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(без име)
+# LOCALIZATION NOTE (html.label.Expand/Contract_All): Used within the HTML for a context
+# menu item. The user can expand/contract the element together with all its children to
+# quickly see the entire hierarchical structure or collapse it.
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange): Used within the DOM panel to create
+# a 'property breakpoint'. Right-click on an property of an object. The label is also
+# used for the 'break on next button' (available on the toolbar).
+ShowFullText=Пълен текст
+html.option.tip.Show_Full_Text=Don't crop element contents
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+# LOCALIZATION NOTE (EditAttribute): Menu item label used in HTML panel context menu. Allows
+ShowWhitespace=Междини с интервали
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+ShowComments=Коментари
+html.option.tip.Show_Comments=Show comment nodes
+# examples: Edit Attribute "onclick"...
+# LOCALIZATION NOTE (DeleteAttribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+HighlightMutations=Открояване на промените
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+ExpandMutations=Разширяване на промените
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+ScrollToMutations=Придвижване на изгледа до промените изгледа
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# The text between <a> and </a> is displayed as a link.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+ShowQuickInfoBox=Поле за бърза информация
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# The text between <a> and </a> is displayed as a link.
+# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+ShadeBoxModel=Открояване на модела на кутиите
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Придвижване на изгледа
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Нов атрибут…
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Изтриване на елемент
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Изтриване на възел
+html.Delete_Node=Delete the node from the tree
+# %S = Name of the clicked property
+quickInfo=Бърза информация
+computedStyle=Изчислен стил
+# examples: Edit "background-color"...
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+html.Break_On_Mutate=Прекъсване при промяна
+html.Disable_Break_On_Mutate=Изключване на прекъсването при промяна
+html.label.Break_On_Text_Change=Прекъсване при промяна на текста
+html.label.HTML_Breakpoints=Прекъсвания за HTML
+html.label.Break_On_Attribute_Change=Прекъсване при промяна на атрибут
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Прекъсване при добавяне или изтриване на дете
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Прекъсване при изтриване на елемент
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+html.label.Expand/Contract_All=Разширяване/свиване на всички
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+# Console context menu labels.
+dom.label.breakOnPropertyChange=Прекъсване при промяна на свойство
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# Breakpoints side panel
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+dom.disableBreakOnPropertyChange=Изключване на прекъсване при промяна на свойство
+dom.label.DOM_Breakpoints=Прекъсвания за DOM
+# breakpoints.Enable_Breakpoint): Context menu item labels in the Breakpoints side panel.
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+EditAttribute=Редактиране на атрибута „%S“…
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.Collapse_All): Context menu item labels used in
+# Stack side panel (within Script panel)
+DeleteAttribute=Изтриване на атрибута „%S“
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# Firebug needs to be halted at a breakpoint to see these items.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+InheritedFrom=Наследено от
+SothinkWarning=Разширението „Sothink SWF Catcher“ пречи на Firebug да работи нормално.<br><br>За помощ прочетете <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">това в ЧЗВ на Firebug</a>.
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+css.fontFamilyPreview=Под южно дърво, цъфтящо в синьо, бягаше малко пухкаво зайче.
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+css.EmptyStyleSheet=Няма стилови правила. Можете да <a>създадете и добавите</a>.
+# LOCALIZATION NOTE (ShowRulers): Label for context menu item.
+# Used in the Layout side panel (within HTML panel).
+# Net panel
+css.EmptyElementCSS=Този елемент няма стилови правила. Можете да му <a>създадете и добавите</a>.
+EditStyle=Редактиране на стила на елемент…
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Ново правило…
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu within the Net panel
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Ново свойство…
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel's context
+# menu for breaking on an XHR.
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+EditProp=Редактиране на „%S“…
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+DisableProp=Изключване на „%S“
+css.tip.Disable_Prop=Disable the property "%S"
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+DeleteProp=Изтриване на „%S“
+css.tip.Delete_Prop=Delete the property "%S"
+# when a Net panel entry is expanded)
+BreakOnThisError=Прекъсване при тази грешка
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Прекъсване при всички грешки
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+TrackThrowCatch=Проследяване на throw/catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Използване на последния ред в кода за име на eval()
+UseMD5ForEvalName=Използване на MD5 за име на eval()
+# in the Net & Console panel when copying JSON replies.
+Breakpoints=Прекъсвания
+ErrorBreakpoints=Прекъсвания при грешки
+LoggedFunctions=Следени функции
+EnableAllBreakpoints=Включване на всички прекъсвания
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Изключване на всички прекъсвания
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Изтриване на всички прекъсвания
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Прекъсването ще се задейства, само ако следният израз е верен:
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders): Label (noun)
+breakpoints.Remove_Breakpoint=Изтриване на прекъсване
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Изключване на прекъсване
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Включване на прекъсване
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# used in the Net panel (displayed inside the Headers tab of a request).
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+script.balloon.Continue=Продължаване
+script.balloon.Disable=Изключване
+ScriptsFilterStatic=Статични скриптове
+ScriptsFilterEval=Статични скриптове и тези в eval
+ScriptsFilterEvent=Статични скриптове и тези за обработка на събития
+ScriptsFilterAll=Статични скриптове, тези в eval и за обработка на събития
+ScriptsFilterStaticShort=статични
+ScriptsFilterEvalShort=в eval
+ScriptsFilterEventShort=за събития
+ScriptsFilterAllShort=всички
+# example: Firebug's log limit has been reached. 150 entries not shown.
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+callstack.Expand_All=Разширяване на всички
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Свиване на всички
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# (result of JavaScript profiler tool).
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+ShowUserProps=Свойства дефинирани от потребител
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Функции дефинирани от потребител
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Свойства от DOM
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Функции от DOM
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Константи от DOM
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Вградени функции за обработка на събития
+ShowInlineEventHandlersTooltip=Показване на вградените функции за обработка на събития.
+ShowOwnProperties=Само собствени свойства
+ShowOwnPropertiesTooltip=Без показване на наследените по веригата прототипи свойства
+ShowEnumerableProperties=Само изброимите свойства
+ShowEnumerablePropertiesTooltip=Без показване на свойствата, по които не се итерира чрез for
+NoMembersWarning=Няма свойства, които да бъдат показани за този обект.
+NewWatch=Нов израз за следене…
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+AddWatch=Добавяне на израз
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+CopySourceCode=Копиране на изходния код
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Използвайте #<число>, за да се придвижите до определен ред
+CopyValue=Копиране на стойност
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Копиране на името
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Копиране на пътя
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Ново свойство…
+EditProperty=Редактиране на свойство…
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Редактиране на променлива…
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Редактиране на израз…
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Изтриване на свойство
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Изтриване на израз
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+SetBreakpoint=Поставяне на прекъсване
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# Support for clipboard actions.
+# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Script
+# panel when clicking a function object.
+EditBreakpointCondition=Редактиране на условието за прекъсване…
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=В тази страница няма зададени прекъсвания.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): Tooltip used for a button on main
+Only_Show_Applied_Styles=Само приложени стилове
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+Show_User_Agent_CSS=CSS от браузъра
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# %S = Name of the unsupported method
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# in the Console panel
+# LOCALIZATION NOTE (console.Use_TAB_and_arrow_keys): Hint at the top of the Completion Popup
+# in the Command Line
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# JavaScript is not available
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# See 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+Expand_Shorthand_Properties=Разширяване на съкратените свойства
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+Sort_alphabetically=Азбучна подредба
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# sent and received headers size.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+Show_Mozilla_specific_styles=Специфичните за Mozilla стилове
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+# LOCALIZATION NOTE (net.xpy.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Натиснете клавиш за конкретизиране на списъка
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):
+# Labels for Net panel's options (located in tab's option menu)
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+LayoutPadding=отстъп
+LayoutBorder=контур
+LayoutMargin=граница
+LayoutPosition=разположение
+LayoutAdjacent=съсед
+position=разположение
+# Net panel's option. If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+ShowRulers=Линеал
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# (breaking on next executed JavaScript statement)
+Loading=Зареждане…
+Headers=Заглавни части
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+net.tip.Clear=Clear the request list
+# %1 = Number of requests
+# example: 21 requests
+net.header.Reset_Header=Изчистване на заглавните части
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+net.header.URL=Адрес
+net.header.URL_Tooltip=Изискан адрес и метод на HTTP
+net.header.Status=Състояние
+net.header.Status_Tooltip=Състояние на получения отговор.
+net.header.Domain=Домейн
+net.header.Domain_Tooltip=Домейн на изпълнената заявка.
+net.header.Size=Размер
+net.header.Size_Tooltip=Размер на получения отговор.
+net.header.Timeline=Времена
+net.header.Timeline_Tooltip=Подробен отчет за времената на цикъла заявка-отговор.
+net.header.Local_IP=Локален адрес
+net.header.Local_IP_Tooltip=Локален адрес по IP и порт на заявката
+net.header.Remote_IP=Отдалечен адрес
+net.header.Remote_IP_Tooltip=Отдалечен адрес по IP и порт на заявката
+net.header.Protocol=Протокол
+net.header.Protocol_Tooltip=Протоколът на заявката.
+# With: the scope inside of the with(obj) {} statement
+net.label.XHR_Breakpoints=Прекъсвания при XHR
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+# Window: the scope inside of a Javascript window object.
+net.label.Break_On_XHR=Прекъсване при XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+net.headers.view_source=изходен код
+net.headers.pretty_print=форматиран вид
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+net.filter.Media=Медия
+# waterfall graph in the Net panel.
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+Post=Заявка POST
+Put=Заявка PUT
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+Response=Отговор
+URLParameters=Параметри
+Cache=Кеш
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Обща информация
+fontviewer.Meta_Data=Метаданни
+fontviewer.view_source=изходен код
+fontviewer.Preview=Преглед
+fontviewer.view_characters=преглед на знаци
+fontviewer.pretty_print=красив вариант
+fontviewer.view_sample=мостра
+fontviewer.uniqueid=Уникален идентификатор
+fontviewer.vendor=Шрифтолейна
+fontviewer.license=Лиценз
+fontviewer.description=Описание
+fontviewer.copyright=Авторски права
+fontviewer.credits=Благодарности
+fontviewer.trademark=Търговска марка
+fontviewer.licensee=Лицензополучател
+fontviewer.extension=Разширение
+fontviewer.pangram=Под южно дърво, цъфтящо в синьо, бягаше малко пухкаво зайче.
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+jsonviewer.sort=Подреждане по ключ
+jsonviewer.do_not_sort=Без подреждане
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+# A11y Chrome Labels (not visible, spoken by screen readers)
+# A11y panelNode labels (not visible, spoken by screen readers)
+net.jsonviewer.Copy_JSON=Копиране на „%S“ като JSON
+# A11y Domplate labels (not visible, spoken by screen readers)
+# LOCALIZATION NOTE:
+RequestHeaders=Заглавни части на заявката
+ResponseHeaders=Заглавни части на отговора
+CachedResponseHeaders=Кеширани заглавни части на отговора
+PostRequestHeaders=Request Headers From Upload Stream
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+# LOCALIZATION NOTE (a11y.labels.overridden):
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+plural.Limit_Exceeded2=Максималният размер на журнала на Firebug е превишен, пропуснат е %1$S запис.;Максималният размер на журнала на Firebug е превишен, пропуснати са %1$S записа.
+LimitPrefs=Настройки
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+LimitPrefsTitle=За да промените ограничението, променете: „%S“
+Refresh=Обновяване
+panel.tip.Refresh=Refresh the panel display
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+OpenInTab=Отваряне в нов подпрозорец
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Отваряне на отговора в нов подпрозорец
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+Profile=Отчет
+ProfilerStarted=Програмата за отчитане работи. Натиснете „Отчет“ отново, за да видите този доклад.
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+plural.Profile_Time2=(%1$Sms, %2$S извикване);(%1$Sms, %2$S извиквания)
+NothingToProfile=Няма дейност, която да се отчита.
+PercentTooltip=Процент време, в което е работила тази функция.
+CallsHeaderTooltip=Брой извиквания на функцията.
+OwnTimeHeaderTooltip=Време във функцията без това на извиканите от нея функции.
+TimeHeaderTooltip=Време във функцията заедно с това на извиканите от нея функции.
+AvgHeaderTooltip=Средно време, включително извикванията на функции.
+MinHeaderTooltip=Минимално време, включително извикванията на функции.
+MaxHeaderTooltip=Максимално време, включително извикванията на функции.
+ProfileButton.Enabled.Tooltip=Отчитане на времето за изпълнение на JavaScript.
+ProfileButton.Disabled.Tooltip=Отчитане на времето за изпълнение на JavaScript. (Панелът за скриптове трябва да е включен.)
+Function=Функция
+Percent=Процент
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+Calls=Извиквания
+OwnTime=Собствено време
+Time=Време
+Avg=Срдн
+Min=Мин
+Max=Макс
+File=Файл
+# example: Match found for "obj" in object element at /html/body/object[2]
+Copy=Копиране
+Cut=Отрязване
+Remove=Изтриване
+Delete=Delete
+Paste=Поставяне
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Копиране на innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Копиране на XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Копиране на пътя за CSS
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+CopyLocation=Копиране на адрес
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Копиране на адрес с параметрите
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Копиране на заглавните части на заявката
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Копиране на заглавните части на отговора
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Копиране на тялото на отговора
+net.tip.Copy_Response=Copy the response body to the clipboard
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+CopyError=Копиране на грешката
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+CopySource=Копиране на функцията
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+ShowCallsInConsole=Засичане на извиквания на „%S“
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+ShowEventsInConsole=Засичане на събитията
+html.tip.Show_Events_In_Console=Log event information to the console
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+panel.Enabled=Включено
+panel.tip.Enabled=Toggle the panel activation
+# example: Match found for "main" in #mainContent h2 {
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+console.MethodNotSupported=Конзолата на Firebug не поддържа „%S“
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+commandline.MethodNotSupported=Командният ред на Firebug не поддържа „%S“
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+commandline.CurrentWindow=Current window:
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+console.Disable_Break_On_All_Errors=Без прекъсване при всички грешки
+console.Break_On_All_Errors=Прекъсване при всички грешки
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+console.Break_On_This_Error=Прекъсване при тази грешка
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+console.JSDisabledInFirefoxPrefs=JavaScript е изключен в настройките на Firefox. Ако искате да използвате панела на конзолата, трябва да включите тази възможност от: „Инструменти“ или „Редактиране“ → „Настройки“ → „Съдържание“ → „Включване на JavaScript“.
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+console.multiHighlightLimitExceeded=Прекалено много елементи в масива — всичките не могат да се покажат на страницата (текущият максимум е %S).\nПогледнете настройката „extensions.firebug.multiHighlightLimit“.
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+commandline.disabledForXMLDocs=Командният ред на Firebug не работи на страници от XML. <a>Превключете към HTML</a>, за да го включите.
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+# Console messages
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+net.sizeinfo.Response_Body=Тяло на отговора
+net.sizeinfo.Post_Body=Тяло на заявката POST
+net.sizeinfo.Total_Sent=Общо изпратени
+net.sizeinfo.Total_Received=Общо получени
+net.sizeinfo.Including_HTTP_Headers=Заедно със заглавните части
+net.ActivationMessage=Панелът за мрежата е включен. Не са показани заявките докато е бил изключен.
+net.responseSizeLimitMessage=Превишен е максималният размер на отговора за Firebug. Натиснете <a>тук</a>, за да отворите целия отговор в нов подпрозорец на Firefox.
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+net.postDataSizeLimitMessage=Превишен е максималният размер на отговора за Firebug.
+net.Break_On_XHR=Прекъсване при XHR
+net.label.Parameters=Параметри
+net.label.Parts=Части
+net.label.Source=Изходен код
+## LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+net.label.Resend=Изпращане наново
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+net.option.Disable_Browser_Cache=Изключване на кеша на браузъра
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+net.option.Show_Paint_Events=Събития за изобразяване
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+net.option.Show_BFCache_Responses=Отговори от кеша от историята
+net.option.tip.Show_BFCache_Responses=Панелът за мрежата може да показва и отговорите от кеша от историята
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+script.Break_On_Next=Прекъсване при следващо
+script.Disable_Break_On_Next=Без прекъсване при следващо
+ShowHttpHeaders=Заглавни части на HTTP
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+plural.Request_Count2=%1$S заявка;%1$S заявки
+FromCache=от кеша
+StopLoading=Спиране на зареждането
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Голям обем данни)
+ShowComputedStyle=Изчислен стил
+StyleGroup-text=Текст
+StyleGroup-background=Фон
+StyleGroup-box=Модел на разполагането
+StyleGroup-layout=Подредба
+StyleGroup-other=Други
+Dimensions=%S × %S
+# The suggestion message represents an advice how to solve the problem.
+# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+CopyColor=Копиране на цвета
+css.tip.Copy_Color=Copy the color to the clipboard
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+# firebug.dtd
+# LOCALIZATION NOTE (firebug.Rerun, firebug.Continue, firebug.StepOver, firebug.StepInto,
+CopyImageLocation=Копиране на адреса на изображението
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Отваряне на изображението в нов подпрозорец
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# firebug.StepOut, firebug.RunUntil)
+# Labels used for debugger options available in the Script panel.
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+OmitObjectPathStack=Пропускане на стека на лентата с инструменти
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Зареждане на първоначалния код
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+Copy_Rule_Declaration=Копиране на декларацията на правилото
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# editors.dtd
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+Copy_Style_Declaration=Копиране на декларацията на стила
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# Used in the CSS panel for the Edit button.
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+plural.Error_Count2=%1$S грешка;%1$S грешки
+moduleManager.title=Панелът за „%S“ е изключен
+moduleManager.desc3=Включвайте/изключвайте всички панели на Firebug чрез иконата в лентата за състояние. За контрол на отделните панели използвайте малките менюта към подпрозорците им.
+moduleManager.Enable=Включване
+Suspend_Firebug=Спиране на Firebug
+Resume_Firebug=Включване на Firebug
+Reset_Panels_To_Disabled=Всички панели да са изключени
+Open_Console=Отваряне на конзолата
+Open_Console_Tooltip=Отваряне на конзолата на Firebug за трасиране.
+Scope_Chain=Верига на обхватите
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+With_Scope=Обхват на with
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+Call_Scope=Обхват на call
+# Message displayed in a break notification popup next to a checkbox.
+Window_Scope=Обхват на window
+Logs=Журнали
+Options=Настройки
+Copy_Stack=Копиране на стека
+Copy Exception=Копиране на изключението
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+requestinfo.Blocking=Блокиране
+requestinfo.Resolving=Търсене по DNS
+requestinfo.Connecting=Свързване
+requestinfo.Sending=Изпращане
+requestinfo.Waiting=Изчакване
+requestinfo.Receiving=Получаване
+requestinfo.ContentLoad=„DOMContentLoaded“ (събитие)
+requestinfo.WindowLoad=„load“ (събитие)
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+requestinfo.started.label=Време спрямо началото на заявката
+requestinfo.phases.label=Фази и изминало време спрямо началото на заявката
+requestinfo.timings.label=Събития спрямо началото на заявката:
+search.Firebug_Search=Търсене на Firebug
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+search.Next=Следваща поява
+search.tip.Next=Search for the next match
+search.Previous=Предишна поява
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Разлика главни/малки
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Без разлика главни/малки
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Много файлове
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Регулярни изрази
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+search.html.CSS_Selector=Селектор на CSS
+search.net.Headers=Заглавни части
+search.net.Parameters=Параметри
+search.net.Response_Bodies=Тела на отговорите
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Запазване
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Всички журнални записи
+firebug.console.Errors=Грешки
+firebug.console.Filter_by_Errors=Само съобщения за грешки
+firebug.console.Warnings=Предупреждения
+firebug.console.Filter_by_Warnings=Само съобщения за предупреждения
+firebug.console.Info=Информация
+firebug.console.Filter_by_Info=Само съобщения за информация
+firebug.console.Debug_Info=Изчистване на грешки
+firebug.console.Filter_by_Debug_Info=Само съобщения за изчистване на грешки
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Отваряне на Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Скриване на Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Включване на всички панели
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Изключване на всички панели
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Промяна на клавишните комбинации
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Настройки
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Включване на достъпността
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Стандартни стойности за всички настройки на Firebug
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug в Мрежата
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Показване на броя на грешките
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Размер на шрифта
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Увеличаване
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Намаляване
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Стандартен
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Сайт на Firebug…
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Документация…
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Клавишни комбинации…
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Група за дискусии…
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Проследяване на грешки…
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Допринасяне…
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Относно…
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Търсене
+firebug.menu.tip.Search=Set focus to the search field
+# It's informing the user about the number of items in the storage.
+firebug.shortcut.reenterCommand.label=Въведете командата отново
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Превключване на инспекцията
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Превключване на полето за бърза информация
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Превключване на отчетите
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Фокусиране на командния ред
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Фокусиране на търсенето на Firebug
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Фокусиране на редактора на следените изрази
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Фокусиране на местоположението
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Следващ обект
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Предишен обект
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Промяна на клавишните комбинации
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Отваряне на Firebug в нов прозорец
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Превключване към левия панел на Firebug
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Превключване към десния панел на Firebug
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Отваряне на Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Предишен подпрозорец на Firebug
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Изчистване на конзолата
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Отваряне на конзолата за трасиране
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Назад
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Напред
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Увеличаване на размера на текста
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Намаляване на размера на текста
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Нормален размер на текста
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Избор на панел
+customizeShortcuts=Клавишни комбинации на Firebug
+# %1 = Number of storage items
+a11y.labels.panel_tools=инструменти на панела
+a11y.labels.firebug_panels=панели на Firebug
+a11y.labels.firebug_side_panels=странични панели на Firebug
+a11y.labels.firebug_window=прозорец на Firebug
+a11y.labels.firebug_status=състояние на Firebug
+a11y.labels.reset=изчистване
+a11y.labels.reset_shortcut=изчистване на клавишната комбинация за %S
+aria.labels.inactive_panel=изключен панел
+# example: 1 item in Storage
+a11y.labels.log_rows=редове на журнала
+a11y.labels.call_stack=стек на извикванията
+a11y.labels.document_structure=структура на документа
+a11y.labels.title_panel=панел %S
+a11y.labels.title_side_panel=страничен панел %S
+a11y.labels.cached=кеширани
+aria.labels.stack_trace=стек за трасиране
+# example: 2 items in Storage
+a11y.layout.padding=отстъп
+a11y.layout.border=контур
+a11y.layout.margin=граница
+a11y.layout.position=разположение
+a11y.layout.position_top=горно разположение
+a11y.layout.position_right=дясно разположение
+a11y.layout.position_bottom=долно разположение
+a11y.layout.position_left=ляво разположение
+a11y.layout.margin_top=горна граница
+a11y.layout.margin_right=дясна граница
+a11y.layout.margin_bottom=долна граница
+a11y.layout.margin_left=лява граница
+a11y.layout.border_top=горен контур
+a11y.layout.border_right=десен контур
+a11y.layout.border_bottom=долен контур
+a11y.layout.border_left=ляв контур
+a11y.layout.padding_top=горен отстъп
+a11y.layout.padding_right=десен отстъп
+a11y.layout.padding_bottom=долен отстъп
+a11y.layout.padding_left=ляв отстъп
+a11y.layout.top=отгоре
+a11y.layout.right=отдясно
+a11y.layout.bottom=отдолу
+a11y.layout.left=отляво
+a11y.layout.width=широчина
+a11y.layout.height=височина
+a11y.layout.size=размер
+a11y.layout.z-index=ниво при наслагване
+a11y.layout.box-sizing=модел на разполагането
+a11y.layout.clientBoundingRect=обхващащо поле на клиента
+a11y.descriptions.press_enter_to_edit_values=Натиснете Enter и след него Tab, за да редактирате отделните стойности
+a11y.labels.style_rules=стилови правила
+aria.labels.inherited_style_rules=наследени стилови правила
+a11y.labels.computed_styles=изчислени стилове
+a11y.labels.dom_properties=свойства на DOM
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+a11y.labels.inline_editor=вътрешен редактор
+a11y.labels.value_for_attribute_in_element=стойност на атрибута %S на елемента %S
+a11y.labels.attribute_for_element=атрибут на елемента %S
+a11y.labels.text_contents_for_element=текстовото съдържание на елемента %S
+a11y.labels.defined_in_file=дефиниран в %S
+a11y.labels.declarations_for_selector=декларация на стил за селектора „%S“
+a11y.labels.property_for_selector=свойство на CSS за селектора: %S
+a11y.labels.value_property_in_selector=стойност на свойството %S от селектора %S
+a11y.labels.css_selector=селектор на CSS
+a11y.labels.source_code_for_file=изходен код на файла %S
+a11y.labels.press_enter_to_add_new_watch_expression=натиснете Enter, за да добавите нов израз за следене
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+a11y.labels.overridden=променен при унаследяване
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+a11y.updates.has_conditional_break_point=има условно прекъсване
+a11y.updates.has_disabled_break_point=има изключено прекъсване
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+a11y.updates.script_suspended_on_line_in_file=Скриптът е спрян на ред %S в %S, файл %S
+# Message logged into the Console panel when memory profiler session starts.
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+a11y.updates.match_found_in_logrows=открито е съвпадение за „%S“ в %S реда на журналите
+# Message used within the Console panel when the memory profiler session is finished.
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=открито е съвпадение за „%S“ на ред %S в %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=открито е съвпадение за „%S“ в елемента %S, с път %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=открито е съвпадение за „%S“ в атрибута %S=%S на елемента %S, с път %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=открито е съвпадение за „%S“ в текста: %S на елемента %S, с път %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=открито е съвпадение за „%S“ в селектора %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=открито е съвпадение за „%S“ в декларацията на стила %S, в селектора %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=открито е съвпадение за „%S“ за свойството в DOM %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=открито е съвпадение за „%S“ в %S, %S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=открито е съвпадение за „%S“ в обобщения ред: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=няма съвпадения за „%S“
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Наистина ли всички настройки на Firebug да се върнат към стандартните стойности?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Текущите редакции на CSS ще бъдат отхвърлени.\nСигурни ли сте, че искате да редактирате кода?
+# Console messages
+warning.Console_must_be_enabled=Конзолата трябва да бъде включена
+warning.Command_line_blocked?=Блокиран ли е командният ред?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Презаредете, за да включите конзолата на прозореца
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Презаредете страницата за изходния код на
+message.The_resource_from_this_URL_is_not_text=Ресурсът на този адрес не е текст
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Назад до този панел
+firebug.history.Stay_on_this_panel=Оставане на този панел
+firebug.history.Go_forward_to_this_panel=Напред до този панел
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Назад
+firebug.history.Go_forward=Напред
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Панелът за скриптове не е бил включен при зареждане на страницата
+script.suggestion.inactive_during_page_load2=<a>Презаредете</a>, за да видите целия изходен код
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript е изключен
+script.suggestion.javascript_not_enabled=Проверете „Firefox“ → „Инструменти/Редактиране“ → „Настройки“ → „Съдържание“ → „Включване на Javascript“
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Включете JavaScript и презаредете страницата
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Всички скриптове са били филтрирани
+script.suggestion.all_scripts_filtered=Проверете в лентата с инструменти кои скриптове се показват или настройката „Изходен код на chrome“
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=На страницата няма Javascript
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Изчистването на грешки вече е включено
+script.suggestion.debugger_active=Изчистването на грешки е спряно на точка на прекъсване на друга страница.
+script.button.Go_to_that_page=Към другата страница
+script.warning.debugger_not_activated=Изчистването на грешки е изключено
+script.suggestion.debugger_not_activated=Изчистването на грешки е изключено
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Затваряне
+firebug.View=Изглед
+firebug.Help=Помощ
+firebug.Run=Изпълнение
+firebug.Copy=Копиране
+firebug.History=История
+firebug.Run_the_entered_command=Изпълняване на въведената команда
+firebug.Clear_the_Command_Editor=Изчистване на редактора на командите
+firebug.Copy_the_script_as_a_bookmarklet=Копиране на скрипта като изпълнима отметка
+firebug.Insert_a_previously_entered_command=Въвеждане на предишна команда
+firebug.AlwaysOpenInWindow=Винаги да се отваря в нов прозорец
+firebug.OpenWith=Отваряне с редактор
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Сайтове…
+firebug.Configure_Editors=Настройване на редакторите
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Изпълнение до този ред
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Изследване
+firebug.InspectElement=Изследване на елемент
+firebug.InspectElementWithFirebug=Изследване на елемент с Firebug
+firebug.BreakOnErrors=Прекъсване при грешки
+firebug.InspectTooltip=Натиснете върху елемента в страницата, който ще изследвате
+firebug.EditHTMLTooltip=Редактиране на този HTML
+firebug.Profile=Отчет
+firebug.Clear=Изчистване
+firebug.ClearConsole=Изчистване на конзолата
+firebug.ClearTooltip=Изчистване на конзолата
+firebug.All=Всички
+firebug.Images=Изображения
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Настроени редактори на Firebug
+editors.Editor=Редактор
+editors.Executable=Изпълним файл
+editors.Launch_Arguments=Аргументи при стартиране
+editors.Add=Добавяне
+editors.Remove=Премахване
+editors.Change=Промяна
+editors.Move_Up=Нагоре
+editors.Close=Затваряне
+editors.Browse=Избор…
+changeEditor.Editor_Configuration=Настройки на редактора
+changeEditor.Name=Име:
+changeEditor.Executable=Изпълним файл:
+changeEditor.CmdLine=Аргументи:
+changeEditor.Supplied_arguments=Аргументи добавяни от Firebug:
+changeEditor.URL_of_file=адресът на файла (ако %url липсва, стандартно се добавя %file)
+changeEditor.Path_to_local_file=пътят към локалния файл (или временното му копие)
+changeEditor.Line_number=номер на реда (ако е наличен)
+changeEditor.Invalid_Application_Path=Неправилен път до програма
+changeEditor.Application_does_not_exist=Указаната програма не съществува
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Редактиране
+firebug.css.sourceEdit=Редактиране на изходния код
+firebug.css.sourceEdit.tooltip=Редактиране на изходния код на CSS зареден от браузъра
+firebug.css.liveEdit=Директно редактиране
+firebug.css.liveEdit.tooltip=Редактиране на изходния код на CSS извлечен от браузъра
+firebug.EditCSSTooltip=Редактиране на този CSS
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=В режим на „Поверително сърфиране“ сайтовете не биват запомняни
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Известяване при прекъсване
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=Може да включвате/изключвате точките на прекъсване в <a>менюто на панела</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Натискането на бутона „Изключване“ е с по-голям приоритет от „debugger“ с изключена точка на прекъсване.
+firebug.bon.tooltip.disableDebuggerKeyword2=Изключена точка на прекъсване
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(Панелът за скриптове трябва да е включен, за да ползвате тази възможност)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=Липсват елементи-наследници
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=още
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S съхранен обект;%1$S съхранени обекта
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Свойства на обект
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(няма подходящо дописване)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=Обектът за адрес най-вероятно е отхвърлен чрез метода revokeObjectURL
+firebug.failedToPreviewImageURL=Неуспешно зареждане на този адрес
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Отчетът за паметта е стартиран
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Добавени обекти по време на отчитането
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Резултати от отчитането на времето
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=За цялата сесия
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/ca-AD/cookies.properties b/locale/ca-AD/cookies.properties
index 199bd27..d628549 100644
--- a/locale/ca-AD/cookies.properties
+++ b/locale/ca-AD/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Sessió
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Acceptar cookies dels llocs web
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Netejar cookies quan es deneguen
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Tallar
-cookies.Copy=Copiar
-cookies.CopyAll=Copiar tot
-cookies.Paste=Enganxar
-cookies.Delete=Eliminar
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Editar
-cookies.Accept=Acceptar
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reiniciar capçalera
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
-cookies.ExceptionsTitle=Exceptions - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support for Cookie Monitoring
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=Disable Cookies panel for %S
-cookies.Permissions=Enable or Disable Cookies panel
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=System Pages
-cookies.LocalFiles=Local Files
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Do you want to remove all cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remove all cookies in the list.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Create a new cookie for %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Value
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Manage cookie permissions for %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=All cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejected:
-cookies.console.nocookiesreceived=No cookies received
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=deleted
-cookies.console.added=added
-cookies.console.changed=changed
-cookies.console.cleared=cleared
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domain
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Secure
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Value
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Default (Accept session cookies)
-cookies.default.thirdPartySession=Default (Accept session cookies)
-cookies.default.thirdParty=Default (Accept cookies)
-cookies.default.allow=Default (Accept cookies)
-cookies.default.deny=Default (Deny cookies)
-cookies.default.warn=Default (Warn before accepting cookie)
-cookies.host.session=Accept session cookies from %S
-cookies.host.accept=Accept cookies from %S
-cookies.host.reject=Deny cookies from %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie name is not valid.
-cookies.edit.invalidhost=Cookie host is not valid.
-cookies.edit.invalidpath=Cookie path is not valid.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Name
-cookies.header.value=Value
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domain
-cookies.header.size=Size
-cookies.header.path=Path
-cookies.header.expires=Expires
-cookies.header.security=Security
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Name of the cookie
-cookies.header.value.tooltip=Value stored for the cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domain that has stored the cookie
-cookies.header.size.tooltip=Size of the stored cookie
-cookies.header.path.tooltip=Directory where the cookie is active
-cookies.header.expires.tooltip=Expiration date for the cookie
-cookies.header.security.tooltip=Shows whether it is a secure cookie or not
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Received Cookies
-cookies.netinfo.Sent_Cookies=Sent Cookies
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Path Filter
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Export All Cookies
-cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
-cookies.export.Export_For_Site=Export Cookies For This Site
-cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Eliminar Cookies
-cookies.Create=Crear Cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Eines
-cookies.ToolsTooltip=Eines
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Mostrar totes les Cookies...
-cookies.ViewAllTooltip=Obrir el gestor de Cookies
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Permisos de les pàgines web
-cookies.ViewExceptionsTooltip=Veure llista de pàgines web prohibides o permeses
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filtre
-cookies.FilterTooltip=Fer servir les opcions donades per filtrar la llista de Cookies.
-cookies.filter.byPath=Filtrar Cookies per camí actual
-cookies.filter.byPathTooltip=Mostrar només Cookies que coincideixin amb el camí actual.
-cookies.filter.showRejectedCookies=Mostrar Cookies rebutjades
-cookies.filter.showRejectedCookiesTooltip=Mostrar Cookies a la llista encara que estiguin rebutjades.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Editar Cookie
-cookies.edit.name.label=Nom:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Camí:
-cookies.edit.expire.label=Expira:
-cookies.edit.value.label=Valor:
-cookies.edit.secure.label=Cookie segura
-cookies.edit.httponly.label=Només HTTP
-cookies.edit.session.label=Sessió
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Sessió
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Acceptar cookies dels llocs web
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Netejar cookies quan es deneguen
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Tallar
+cookies.Copy=Copiar
+cookies.CopyAll=Copiar tot
+cookies.Paste=Enganxar
+cookies.Delete=Eliminar
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Editar
+cookies.Accept=Acceptar
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reiniciar capçalera
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
+cookies.ExceptionsTitle=Exceptions - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support for Cookie Monitoring
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=Disable Cookies panel for %S
+cookies.Permissions=Enable or Disable Cookies panel
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=System Pages
+cookies.LocalFiles=Local Files
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Do you want to remove all cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remove all cookies in the list.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Create a new cookie for %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Value
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Manage cookie permissions for %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=All cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejected:
+cookies.console.nocookiesreceived=No cookies received
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=deleted
+cookies.console.added=added
+cookies.console.changed=changed
+cookies.console.cleared=cleared
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domain
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Secure
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Value
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Default (Accept session cookies)
+cookies.default.thirdPartySession=Default (Accept session cookies)
+cookies.default.thirdParty=Default (Accept cookies)
+cookies.default.allow=Default (Accept cookies)
+cookies.default.deny=Default (Deny cookies)
+cookies.default.warn=Default (Warn before accepting cookie)
+cookies.host.session=Accept session cookies from %S
+cookies.host.accept=Accept cookies from %S
+cookies.host.reject=Deny cookies from %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie name is not valid.
+cookies.edit.invalidhost=Cookie host is not valid.
+cookies.edit.invalidpath=Cookie path is not valid.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Name
+cookies.header.value=Value
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domain
+cookies.header.size=Size
+cookies.header.path=Path
+cookies.header.expires=Expires
+cookies.header.security=Security
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Name of the cookie
+cookies.header.value.tooltip=Value stored for the cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domain that has stored the cookie
+cookies.header.size.tooltip=Size of the stored cookie
+cookies.header.path.tooltip=Directory where the cookie is active
+cookies.header.expires.tooltip=Expiration date for the cookie
+cookies.header.security.tooltip=Shows whether it is a secure cookie or not
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Received Cookies
+cookies.netinfo.Sent_Cookies=Sent Cookies
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Path Filter
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Export All Cookies
+cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
+cookies.export.Export_For_Site=Export Cookies For This Site
+cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Eliminar Cookies
+cookies.Create=Crear Cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Eines
+cookies.ToolsTooltip=Eines
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Mostrar totes les Cookies...
+cookies.ViewAllTooltip=Obrir el gestor de Cookies
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Permisos de les pàgines web
+cookies.ViewExceptionsTooltip=Veure llista de pàgines web prohibides o permeses
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filtre
+cookies.FilterTooltip=Fer servir les opcions donades per filtrar la llista de Cookies.
+cookies.filter.byPath=Filtrar Cookies per camí actual
+cookies.filter.byPathTooltip=Mostrar només Cookies que coincideixin amb el camí actual.
+cookies.filter.showRejectedCookies=Mostrar Cookies rebutjades
+cookies.filter.showRejectedCookiesTooltip=Mostrar Cookies a la llista encara que estiguin rebutjades.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Editar Cookie
+cookies.edit.name.label=Nom:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Camí:
+cookies.edit.expire.label=Expira:
+cookies.edit.value.label=Valor:
+cookies.edit.secure.label=Cookie segura
+cookies.edit.httponly.label=Només HTTP
+cookies.edit.session.label=Sessió
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/ca-AD/firebug-amo.properties b/locale/ca-AD/firebug-amo.properties
index 46df789..cec2db9 100644
--- a/locale/ca-AD/firebug-amo.properties
+++ b/locale/ca-AD/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=El Firebug s\'integra amb el Firefox per a oferir tot un conjunt d\'eines de desenvolupament a les vostres mans mentre navegueu. Poder editar, depurar i monitoritzar el CSS, l\'HTML i el JavaScript en viu a qualsevol pàgina web.\\n\\nEl Firebug 1.6 necessita el Firefox 3.6 o superior.
-firebug.amo.description=El Firebug s\'integra amb el Firefox per a oferir tot un conjunt d\'eines de desenvolupament a les vostres mans mentre navegueu. Poder editar, depurar i monitoritzar el CSS, l\'HTML i el JavaScript en viu a qualsevol pàgina web.\\n\\nVisiteu el lloc web del Firefox per a consultar documentació, captures de pantalla i fòrums de discussió: http://getfirebug.com
-firebug.amo.developer.comments=Si teniu cap problema, llegiu les PMF del Firebug.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=El Firebug s\'integra amb el Firefox per a oferir tot un conjunt d\'eines de desenvolupament a les vostres mans mentre navegueu. Poder editar, depurar i monitoritzar el CSS, l\'HTML i el JavaScript en viu a qualsevol pàgina web.\\n\\nEl Firebug 1.6 necessita el Firefox 3.6 o superior.
+firebug.amo.description=El Firebug s\'integra amb el Firefox per a oferir tot un conjunt d\'eines de desenvolupament a les vostres mans mentre navegueu. Poder editar, depurar i monitoritzar el CSS, l\'HTML i el JavaScript en viu a qualsevol pàgina web.\\n\\nVisiteu el lloc web del Firefox per a consultar documentació, captures de pantalla i fòrums de discussió: http://getfirebug.com
+firebug.amo.developer.comments=Si teniu cap problema, llegiu les PMF del Firebug.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/ca-AD/firebug-tracing.properties b/locale/ca-AD/firebug-tracing.properties
index c081e53..98f8a10 100644
--- a/locale/ca-AD/firebug-tracing.properties
+++ b/locale/ca-AD/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Obri seguiment de Firebug
-Always_Open_Firebug_Tracing=Obri sempre el seguiment de Firebug
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Seguiment
-tracing.Show_Scope_Variables=Mostrar variables d\' àmbit
-tracing.Show_Time=Mostrar temps
-tracing.tab.Stack=Pila
-tracing.tab.Exception=Excepció
-tracing.tab.Properties=Propietats
-tracing.tab.Scope=Àmbit
-tracing.tab.Response=Resposta
-tracing.tab.Source=Font
-tracing.tab.Interfaces=Interfícies
-tracing.tab.Object=Objecte
-tracing.tab.Event=Esdeveniment
-tracing.cmd.Clear=Netejar
-tracing.cmd.tip.Clear=Esborra tots el missatges
-tracing.cmd.Find=Cercar
-tracing.cmd.tip.Find=Cercar text
-tracing.cmd.Bookmark=Preferit
-tracing.cmd.tip.Bookmark=Afegeix preferit
-tracing.cmd.Restart=Reinicia Firefox
-tracing.cmd.tip.Restart=Reinicia Firefox
-tracing.cmd.Exit=Sortir de Firefox
-tracing.cmd.tip.Exit=Sortir de Firefox
-tracing.cmd.Save=Desa a arxiu
-tracing.cmd.tip.Save=Desa registre a un arxiu
-tracing.cmd.Load=Carregar des de arxiu
-tracing.cmd.tip.Load=Carregar logs des de arxiu
-tracing.cmd.Expand_All=Expandeix tot
-tracing.cmd.Collapse_All=Reduir tot
-tracing.cmd.Tools=Eines
-tracing.cmd.tip.Tools=Eines
-tracing.cmd.Clear_Browser_Cache=Neteja la memòria cau del navegador
-tracing.cmd.tip.Clear_Browser_Cache=Neteja la memòria cau del navegador
-tracing.cmd.Force_Garbage_Collector=Força recol·lector d\'escombraries
-tracing.cmd.tip.Force_Garbage_Collector=Força recol·lector d\'escombraries
-tracing.cmd.Open_Profile_Directory=Obri el directori dels perfils
-tracing.cmd.tip.Open_Profile_Directory=Obri el directori dels perfils
-tracing.option.A11Y_Description=Accessibility issues
-tracing.option.ACTIVATION_Description=Firebug activation
-tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
-tracing.option.ANNOTATIONS_Description=Firebug website annotation
-tracing.option.BP_Description=Breakpoints
-tracing.option.CACHE_Description=Source cache
-tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
-tracing.option.COMPILATION_UNITS_Description=Script compilation units
-tracing.option.CONSOLE_Description=Console Panel
-tracing.option.CSS_Description=CSS parsing
-tracing.option.DISPATCH_Description=Event dispatching
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate creation
-tracing.option.EDITOR_Description=Inline Editor & Autocompleter
-tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Internal Firebug errors
-tracing.option.EVAL_Description=Script evaluation
-tracing.option.FBS_BP_Description=Firebug service breakpoints
-tracing.option.FBS_CREATION_Description=Firebug service script creation
-tracing.option.FBS_ERRORS_Description=Firebug service errors
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
-tracing.option.FBS_FUNCTION_Description=Firebug service function
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
-tracing.option.FBS_SRCUNITS_Description=Firebug service source units
-tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
-tracing.option.FUNCTION_NAMES_Description=JavaScript function names
-tracing.option.HISTORY_Description=Firebug Navigation History
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP request observer
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug initialization
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON viewer
-tracing.option.LINETABLE_Description=Script line table
-tracing.option.LOCALE_Description=Localization
-tracing.option.LOCATIONS_Description=Source locations
-tracing.option.NET_Description=Net Panel
-tracing.option.NET_EVENTS_Description=Network events
-tracing.option.OPTIONS_Description=Firebug preferences
-tracing.option.PANELS_Description=Panels
-tracing.option.SHORTCUTS_Description=Keyboard shortcuts
-tracing.option.SOURCEFILES_Description=JavaScript source files
-tracing.option.SPY_Description=XMLHttpRequests observer
-tracing.option.STACK_Description=JavaScript call stack
-tracing.option.STORAGE_Description=Settings storage
-tracing.option.SVGVIEWER_Description=SVG viewer
-tracing.option.FONTS_Description=Fonts information and font viewer
-tracing.option.TOOLTIP_Description=Start Button tooltip
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging user interface
-tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
-tracing.option.XMLVIEWER_Description=XML viewer
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Obri seguiment de Firebug
+Always_Open_Firebug_Tracing=Obri sempre el seguiment de Firebug
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Seguiment
+tracing.Show_Scope_Variables=Mostrar variables d\' àmbit
+tracing.Show_Time=Mostrar temps
+tracing.tab.Stack=Pila
+tracing.tab.Exception=Excepció
+tracing.tab.Properties=Propietats
+tracing.tab.Scope=Àmbit
+tracing.tab.Response=Resposta
+tracing.tab.Source=Font
+tracing.tab.Interfaces=Interfícies
+tracing.tab.Object=Objecte
+tracing.tab.Event=Esdeveniment
+tracing.cmd.Clear=Netejar
+tracing.cmd.tip.Clear=Esborra tots el missatges
+tracing.cmd.Find=Cercar
+tracing.cmd.tip.Find=Cercar text
+tracing.cmd.Bookmark=Preferit
+tracing.cmd.tip.Bookmark=Afegeix preferit
+tracing.cmd.Restart=Reinicia Firefox
+tracing.cmd.tip.Restart=Reinicia Firefox
+tracing.cmd.Exit=Sortir de Firefox
+tracing.cmd.tip.Exit=Sortir de Firefox
+tracing.cmd.Save=Desa a arxiu
+tracing.cmd.tip.Save=Desa registre a un arxiu
+tracing.cmd.Load=Carregar des de arxiu
+tracing.cmd.tip.Load=Carregar logs des de arxiu
+tracing.cmd.Expand_All=Expandeix tot
+tracing.cmd.Collapse_All=Reduir tot
+tracing.cmd.Tools=Eines
+tracing.cmd.tip.Tools=Eines
+tracing.cmd.Clear_Browser_Cache=Neteja la memòria cau del navegador
+tracing.cmd.tip.Clear_Browser_Cache=Neteja la memòria cau del navegador
+tracing.cmd.Force_Garbage_Collector=Força recol·lector d\'escombraries
+tracing.cmd.tip.Force_Garbage_Collector=Força recol·lector d\'escombraries
+tracing.cmd.Open_Profile_Directory=Obri el directori dels perfils
+tracing.cmd.tip.Open_Profile_Directory=Obri el directori dels perfils
+tracing.option.A11Y_Description=Accessibility issues
+tracing.option.ACTIVATION_Description=Firebug activation
+tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
+tracing.option.ANNOTATIONS_Description=Firebug website annotation
+tracing.option.BP_Description=Breakpoints
+tracing.option.CACHE_Description=Source cache
+tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
+tracing.option.COMPILATION_UNITS_Description=Script compilation units
+tracing.option.CONSOLE_Description=Console Panel
+tracing.option.CSS_Description=CSS parsing
+tracing.option.DISPATCH_Description=Event dispatching
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate creation
+tracing.option.EDITOR_Description=Inline Editor & Autocompleter
+tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Internal Firebug errors
+tracing.option.EVAL_Description=Script evaluation
+tracing.option.FBS_BP_Description=Firebug service breakpoints
+tracing.option.FBS_CREATION_Description=Firebug service script creation
+tracing.option.FBS_ERRORS_Description=Firebug service errors
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
+tracing.option.FBS_FUNCTION_Description=Firebug service function
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
+tracing.option.FBS_SRCUNITS_Description=Firebug service source units
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
+tracing.option.FUNCTION_NAMES_Description=JavaScript function names
+tracing.option.HISTORY_Description=Firebug Navigation History
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request observer
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug initialization
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON viewer
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Localization
+tracing.option.LOCATIONS_Description=Source locations
+tracing.option.NET_Description=Net Panel
+tracing.option.NET_EVENTS_Description=Network events
+tracing.option.OPTIONS_Description=Firebug preferences
+tracing.option.PANELS_Description=Panels
+tracing.option.SHORTCUTS_Description=Keyboard shortcuts
+tracing.option.SOURCEFILES_Description=JavaScript source files
+tracing.option.SPY_Description=XMLHttpRequests observer
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Settings storage
+tracing.option.SVGVIEWER_Description=SVG viewer
+tracing.option.FONTS_Description=Fonts information and font viewer
+tracing.option.TOOLTIP_Description=Start Button tooltip
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging user interface
+tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
+tracing.option.XMLVIEWER_Description=XML viewer
diff --git a/locale/ca-AD/firebug.properties b/locale/ca-AD/firebug.properties
index 5bf58cd..232b452 100644
--- a/locale/ca-AD/firebug.properties
+++ b/locale/ca-AD/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Consola
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Xarxa
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Script
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Estil
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Computat
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Maquetació
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Observa
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Punts de parada
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Pila
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Àmbits
-firebug.DetachFirebug=Obre el Firebug en una finestra nova
-firebug.AttachFirebug=Attach Firebug to Browser Window
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Deactivated
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=Al navegador
-minimized=Minimitzat
-enablement.for_all_pages=per totes les pàgines
-enablement.on=On
-enablement.off=Off
-enablement.Panel_activation_status=Panel activation status:
-none=Tancat
-Firebug_-_inactive_for_current_website=Firebug - inactive for current website
-Activate_Firebug_for_the_current_website=Activate Firebug for the current website
-Minimized=Minimitzat
-Minimize_Firebug=Minimitza Firebug
-On_for_all_web_pages=Activar per totes les pàgines
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Neteja la llista d\' activació
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI Location
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Opcions de Firebug
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Show All Panels
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=Mostra les errades de Javascript
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Mostra els avisos de Javascript
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Mostra les errades de CSS
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Mostra la pila amb els errors
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Mostra les peticions XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Mostrar Errors Chrome
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Mostra els missatges del Chrome
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Mostra les errades externes
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Mostrar errors de xarxa
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Avisos estrictes (penalitza el rendiment)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Command History
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Show Completion List Popup
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Ha fallat una asserció
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (línia %S)
-LineAndCol=%S (line %S, col %S)
-InstanceLine=%S #%S (línia %S)
-StackItem=%S (%S línia %S)
-SystemItem=<Sistema>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(sense nom)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Mostra el text complet
-html.option.tip.Show_Full_Text=Don't crop element contents
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Mostra l\'espai en blanc
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Mostra els comentaris
-html.option.tip.Show_Comments=Show comment nodes
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Resalta els canvis
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Desplega els canvis
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Desplaça els canvis cap a la vista
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Mostra caixa d\' informació ràpida
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Model de caixa d\' ombra
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Desplaça cap a la vista
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Atribut nou...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Esborra l\'element
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Esborra el node
-html.Delete_Node=Delete the node from the tree
-# Quick Info Box
-quickInfo=Informació ràpida
-computedStyle=Estil computat
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Atura en canvis
-html.Disable_Break_On_Mutate=Deshabilita aturar en canvis
-html.label.Break_On_Text_Change=Atura en canvis de text
-html.label.HTML_Breakpoints=Punts d\' aturada HTML
-html.label.Break_On_Attribute_Change=Atura en canvis d\' atribut
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Atura en adició o eliminació de fills
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Atura en eliminar elements
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Expand/Contract All
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Break On Property Change
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Disable Break On Property Change
-dom.label.DOM_Breakpoints=Punts d\' aturada DOM
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Edita l\'atribut \"%S\"...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Esborra l\'atribut \"%S\"
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Heretat des de
-SothinkWarning=L\'extensió SWF Catcher impedeix al Firebug executar-se correctament.<br><br>Si voleu més informació, llegiu <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">aquesta entrada a les PMF de Firebug</a>.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
-EditStyle=Edita l\'estil de l\'element
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Nova norma...
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Afegeix una propietat
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=Edita \"%S\"...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=Deshabilita \"%S\"
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=Elimina \"%S\"
-css.tip.Delete_Prop=Delete the property "%S"
-# Console context menu labels.
-BreakOnThisError=Atura en aquesta errada
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Atura davant de qualsevol errada
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Vigila Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Utilitza l\'última línia de codi per noms eval()
-UseMD5ForEvalName=Utilitza MD5 per noms eval()
-# Breakpoints side panel
-Breakpoints=Punts de parada
-ErrorBreakpoints=Punts de parada d\'error
-LoggedFunctions=Funcions registrades
-EnableAllBreakpoints=Habilita tots els punts de parada
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Deshabilita tots els punts d\'aturada
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Elimina tots els punts d\'aturada
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Aquest punt de parada aturarà l\'execució només si aquesta expressió és certa:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Remove Breakpoint
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Disable Breakpoint
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Enable Breakpoint
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Continue
-script.balloon.Disable=Disable
-ScriptsFilterStatic=Mostra els scripts estàtics
-ScriptsFilterEval=Mostra els scripts estàtics i d\'avaluació
-ScriptsFilterEvent=Mostra els scripts estàtics i d\'esdeveniments
-ScriptsFilterAll=Mostra tots els scripts
-ScriptsFilterStaticShort=estàtic
-ScriptsFilterEvalShort=avaluació
-ScriptsFilterEventShort=esdeveniments
-ScriptsFilterAllShort=tot
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Expand All
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Collapse All
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Mostra les propietats definides per l\'usuari
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Mostra les funcions definides per l\'usuari
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Mostra les propietats del DOM
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Mostra les funcions del DOM
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Mostra les constants del DOM
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=Aquest objecte no té propietats per a mostrar
-NewWatch=Observa una nova expressió
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Afegeix una observació
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Copiar font
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
-CopyValue=Copiar valor
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Copiar nom
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Copiar camí
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Nova propietat
-EditProperty=Edita la propietat
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Edita la variable
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Edita l\'observació
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Esborra la propietat
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Esborra l\'observació
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Estableix un punt de parada
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Edita la condició del punt de parada
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=No hi ha punts de parada definits en aquesta pàgina
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Only Show Applied Styles
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Mostra l\'agent CSS d\'usuari
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Expand Shorthand Properties
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Sort Alphabetically
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Show Mozilla Specific Styles
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Type any key to filter list
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=position
-LayoutAdjacent=adjacent
-position=position
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Mostra regles i guies
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Net panel
-Loading=Carregant...
-Headers=Capçaleres
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Reinicialitzar capçalera
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=URL sol·licitada i mètode HTTP utilitzat
-net.header.Status=Estatus
-net.header.Status_Tooltip=Estatus de la resposta rebuda.
-net.header.Domain=Domini
-net.header.Domain_Tooltip=Domini de la sol·licitud executada.
-net.header.Size=Mida
-net.header.Size_Tooltip=Mida de la resposta rebuda.
-net.header.Timeline=Línia de temps
-net.header.Timeline_Tooltip=Informació detallada de temps en quant a la sol·licitud de resposta d\' anada i tornada.
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=Punts d\' aturada XHR
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Atura en XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=veure font
-net.headers.pretty_print=imprimir bonic
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Media
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Enviat
-Put=Posa
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Resposta
-URLParameters=Paràmetres de la URL
-Cache=Memòria cau
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Sort by key
-jsonviewer.do_not_sort=Do not sort
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Capçaleres de la sol·licitud
-ResponseHeaders=Capçaleres de la resposta
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
-LimitPrefs=Preferències
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Per a canviar el límit modifiqueu: %S
-Refresh=Refresca
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Obre una nova pestanya
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Obrir resposta en una pestanya nova
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Inspector
-ProfilerStarted=L\'Inspector s\'està executant. Premeu un altre cop \'Inspector\' per veure l\'informe.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
-NothingToProfile=No hi ha activitats per a inspeccionar.
-PercentTooltip=Percentatge de temps emprat en aquesta funció
-CallsHeaderTooltip=Número de vegades que s\'ha cridat la funció
-OwnTimeHeaderTooltip=Temps emprat per la funció, excepte les cridades niades.
-TimeHeaderTooltip=Temps emprat per la funció, cridades niades incloses.
-AvgHeaderTooltip=Temps mitjà, cridades a funcions incloses.
-MinHeaderTooltip=Temps mínim, crides a funcions incloses.
-MaxHeaderTooltip=Temps màxim, crides a funcions incloses.
-ProfileButton.Enabled.Tooltip=Temps d\' execució del Perfil Javascript.
-ProfileButton.Disabled.Tooltip=Temps d\' execució del Perfil Javascript. (El panell Script ha d\'estar habilitat)
-Function=Funció
-Percent=Percentatge
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Crides
-OwnTime=Temps propi
-Time=Temps
-Avg=Mitjana
-Min=Min
-Max=Màx
-File=Fitxer
-# Support for standard actions.
-Copy=Copia
-Cut=Retalla
-Remove=Elimina
-Delete=Delete
-Paste=Paste
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Copia l\'innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Copia l\'XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Copy CSS Path
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Copia l\'adreça
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Copia l\'adreça amb paràmetres
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Copiar les capçaleres de la sol·licitud
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Copiar Capçaleres de la resposta
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Copia el cos de la resposta
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Copia l\'errada
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Copia la funció
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Registra les crides a \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Registra els esdeveniments
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Habilitat
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=La consola de Firebug no suporta \'%S\'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=La línia d\'ordres del Firebug no suporta \'%S\'
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Deshabilita aturades en tots els errors
-console.Break_On_All_Errors=Atura en tots els errors
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Break On This Error
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript està desactivat a les preferències de Firefox. Si vols fer servir la consola, si us plau, habilita JavaScript a \'Eines\'-> \'Opcions\' -> \'Contingut\' -> \'Habilita el JavaScript\'
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Cos de la resposta
-net.sizeinfo.Post_Body=Cos del post
-net.sizeinfo.Total_Sent=Total enviat
-net.sizeinfo.Total_Received=Total rebut
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Panell de xarxa activat. Qualsevol sol·licitud mentre el panell de xarxa està desactivat no es mostrarà.
-net.responseSizeLimitMessage=El límit de mida de resposta de Firebug s\'ha assolit. Clica <a>aquí</a> per obrir la resposta completa a una nova pestanya de Firefox.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=El límit de mida del cos del post s\'ha assolit. Eliminat per Firebug.
-net.Break_On_XHR=Aturar en XHR
-net.label.Parameters=Paràmetres
-net.label.Parts=Parts
-net.label.Source=Font
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Deshabilita memòria cau del navegador
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Show Paint Events
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Atura en següent
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Mostra les capçaleres HTTP
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S request;%1$S requests
-FromCache=des de la memòria cau
-StopLoading=Atura la càrrega
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Dades massa extenses)
-ShowComputedStyle=Mostra amb estil d\'ordinador
-StyleGroup-text=Text
-StyleGroup-background=Fons
-StyleGroup-box=Model de caixa
-StyleGroup-layout=Disseny
-StyleGroup-other=Altres
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Copia el color
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Copia l\'adreça de la imatge
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Obre la imatge en una pestanya nova
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Omet la barra d\'eines de la pila
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copy Rule Declaration
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Copy Style Declaration
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Error;%1$S Errors
-moduleManager.title=Panell %S deshabilitat
-moduleManager.desc3=Fes servir la icona de menú de la barra d\' estat de Firebug per habilitar i deshabilitar tots els panells. Fes servir el menú petit del panell de la pestanya per controlar els panells individualment:
-moduleManager.Enable=Enable
-Suspend_Firebug=Suspèn el Firebug
-Resume_Firebug=Resumeix el Firebug
-Reset_Panels_To_Disabled=Reinicia els panells a deshabilitats
-Open_Console=Obre la consola
-Open_Console_Tooltip=Obre la consola de seguiment
-Scope_Chain=Cadena d\'àmbits
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=Amb
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Cridada
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Finestra
-Logs=Registres
-Options=Opcions
-Copy_Stack=Copia la pila
-Copy Exception=Copia l\'excepció
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Bloqueig
-requestinfo.Resolving=DNS Lookup
-requestinfo.Connecting=Connectant
-requestinfo.Sending=Enviant
-requestinfo.Waiting=Esperant
-requestinfo.Receiving=Rebent
-requestinfo.ContentLoad=\'DOMContentLoaded\' (esdeveniment)
-requestinfo.WindowLoad=\'load\' (esdeveniment)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Cerca de Firebug
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Següent
-search.tip.Next=Search for the next match
-search.Previous=Anterior
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Forçar sensibilitat entre majúscules i minúscules
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Múltiples arxius
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Use Regular Expression
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=Selector CSS
-search.net.Headers=Capçaleres
-search.net.Parameters=Paràmetres
-search.net.Response_Bodies=Cosos de resposta
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persistent
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Show all log entries
-firebug.console.Errors=Errors
-firebug.console.Filter_by_Errors=Filter by errors
-firebug.console.Warnings=Warnings
-firebug.console.Filter_by_Warnings=Filter by warnings
-firebug.console.Info=Info
-firebug.console.Filter_by_Info=Filter by info
-firebug.console.Debug_Info=Debug Info
-firebug.console.Filter_by_Debug_Info=Filter by debug info
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Obre el Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Hide Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Habilitar tots els panells
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Deshabilitar tots els panells
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Personalitza dreceres
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Opcions
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Habilita millores d\' accessibilitat
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Reinicialitzar totes les opcions de Firebug
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug Online
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Show Error Count
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Mida del Text
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Incrementa la mida del text
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Redueix la mida del text
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Mida del text normal
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Lloc Web de Firebug...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Documentació...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Tecles de funció...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Grup de Discussió...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Incidències...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Donatius...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Quant a...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Cerca
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Tornar a entrar comanda
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Alternar inspecció
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Alternar caixa d\' informació ràpida
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Alternar perfilat
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Enfoca la línia de comandes
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Enfoca la cerca de Firebug
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Enfoca l\' editor de vigilància
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Enfoca localització
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Objecte següent
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Objecte anterior
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Personalitza dreceres de Firebug
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Obrir Firebug a una nova finestra
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Canvia al panell esquerra de Firebug
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Canvia al panell dret de Firebug
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Obrir Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Anterior pestanya de Firebug
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Neteja consola
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Obrir consola de seguiment
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Go Back
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Go Forward
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Increase Text Size
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Decrease Text Size
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normal Text Size
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Panel Selector
-customizeShortcuts=Personalitza dreceres de Firebug
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=panell d\' eines
-a11y.labels.firebug_panels=Panells de Firebug
-a11y.labels.firebug_side_panels=panells laterals de Firebug
-a11y.labels.firebug_window=finestra de Firebug
-a11y.labels.firebug_status=estat de Firebug
-a11y.labels.reset=reinicialitza
-a11y.labels.reset_shortcut=reinicialitza drecera %S
-aria.labels.inactive_panel=panell inactiu
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=registra files
-a11y.labels.call_stack=crida la pila
-a11y.labels.document_structure=document structure
-a11y.labels.title_panel=panell %S
-a11y.labels.title_side_panel=panell lateral %S
-a11y.labels.cached=memòria cau
-aria.labels.stack_trace=seguiment de la pila
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=position
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=margin top
-a11y.layout.margin_right=margin right
-a11y.layout.margin_bottom=margin bottom
-a11y.layout.margin_left=margin left
-a11y.layout.border_top=border top
-a11y.layout.border_right=border right
-a11y.layout.border_bottom=border bottom
-a11y.layout.border_left=border left
-a11y.layout.padding_top=padding top
-a11y.layout.padding_right=padding right
-a11y.layout.padding_bottom=padding bottom
-a11y.layout.padding_left=padding left
-a11y.layout.top=top
-a11y.layout.right=right
-a11y.layout.bottom=bottom
-a11y.layout.left=left
-a11y.layout.width=width
-a11y.layout.height=height
-a11y.layout.size=size
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=coordenades rect del client
-a11y.descriptions.press_enter_to_edit_values=prem enter seguit del tabulador per editar valors individuals
-a11y.labels.style_rules=normes d\'estil
-aria.labels.inherited_style_rules=normes d\'estil heretades
-a11y.labels.computed_styles=estils computats
-a11y.labels.dom_properties=propietats del DOM
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=editor en línia
-a11y.labels.value_for_attribute_in_element=valor per %S atributs a %S elements
-a11y.labels.attribute_for_element=atributs per %S elements
-a11y.labels.text_contents_for_element=continguts de text per %S elements
-a11y.labels.defined_in_file=definit a %S
-a11y.labels.declarations_for_selector=declaracions d\'estil pel selector \"%S\"
-a11y.labels.property_for_selector=propietat CSS pel selector: %S
-a11y.labels.value_property_in_selector=valor de la propietat %S pel selector %S
-a11y.labels.css_selector=selector CSS
-a11y.labels.source_code_for_file=codi font de l\'arxiu %S
-a11y.labels.press_enter_to_add_new_watch_expression=prem enter per afegir una nova expressió de vigilància
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=sobreescrit
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=te un punt d\'aturada condicional
-a11y.updates.has_disabled_break_point=te punt d\'aturada deshabilitat
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script suspès a la línia %S en %S, arxiu %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=coincidència trobada per %S a %S files de registre
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=coincidència trobada per %S a la línia %S en %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=coincidència trobada per %S a %S elements al camí %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=coincidència trobada per %S a l\'atribut %S=%S de %S elements al camí %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=coincidència trobada per %S al contingut de text: %S de %S elements al camí %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=coincidència trobada per %S al selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=coincidència trobada per \"%S\" a la declaració d\'estil %S al selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=coincidència trobada per %S a la propietat %S del DOM
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=coincidència trobada per \"%S\" a %S, %S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=coincidència trobada per %S a la fila del sumari de xarxa: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=no s\'han trobat coincidències per \"%S\"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Estàs segur de reinicialitzar totes les opcions de Firebug al seu estat per defecte?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=La consola s\'ha d\'habilitar
-warning.Command_line_blocked?=Línia de comanda bloquejada?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Recarrega per activar la finestra de la consola
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=El recurs d\'aquesta URL no es text
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Go back to this panel
-firebug.history.Stay_on_this_panel=Stay on this panel
-firebug.history.Go_forward_to_this_panel=Go forward to this panel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Go back
-firebug.history.Go_forward=Go forward
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Script Panel was inactive during page load
-script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript is not enabled
-script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Enable JavaScript and Refresh
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=All scripts were filtered
-script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=No Javascript on this page
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Debugger is already active
-script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
-script.button.Go_to_that_page=Go to that page
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Tanca
-firebug.View=Visualitza
-firebug.Help=Ajuda
-firebug.Run=Executa
-firebug.Copy=Copia
-firebug.History=History
-firebug.Run_the_entered_command=Run the entered command
-firebug.Clear_the_Command_Editor=Clear the Command Editor
-firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
-firebug.Insert_a_previously_entered_command=Insert a previously entered command
-firebug.AlwaysOpenInWindow=Obre sempre en en una finestra nova
-firebug.OpenWith=Obre amb l\'editor
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Permisos...
-firebug.Configure_Editors=Configure Editors
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Inspecciona
-firebug.InspectElement=Inspecciona l\'element
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Atura si hi ha errors
-firebug.InspectTooltip=Premeu damunt d\'un element de la pàgina per inspeccionar-lo
-firebug.EditHTMLTooltip=Edita aquest codi HTML
-firebug.Profile=Inspecciona
-firebug.Clear=Neteja
-firebug.ClearConsole=Neteja la consola
-firebug.ClearTooltip=Neteja la consola
-firebug.All=Tot
-firebug.Images=Imatges
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Configured Firebug Editors
-editors.Editor=Editor
-editors.Executable=Executable
-editors.Launch_Arguments=Launch Arguments
-editors.Add=Add
-editors.Remove=Remove
-editors.Change=Change
-editors.Move_Up=Move Up
-editors.Close=Close
-editors.Browse=Browse...
-changeEditor.Editor_Configuration=Editor Configuration
-changeEditor.Name=Nom:
-changeEditor.Executable=Executable:
-changeEditor.CmdLine=Arguments:
-changeEditor.Supplied_arguments=Arguments supplied by Firebug:
-changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
-changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
-changeEditor.Line_number=Line number (if available)
-changeEditor.Invalid_Application_Path=Invalid Application Path
-changeEditor.Application_does_not_exist=The specified application doesn't exist!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Edita
-firebug.css.sourceEdit=Source Edit
-firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
-firebug.css.liveEdit=Live Edit
-firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
-firebug.EditCSSTooltip=Edita aquest full d\'estils
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Show Break Notifications
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
-firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=There are no child objects
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=more
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Object Properties
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(no completions)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
-firebug.failedToPreviewImageURL=Failed to load the given URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Consola
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Xarxa
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Script
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Estil
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Computat
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Maquetació
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Observa
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Punts de parada
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Pila
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Àmbits
+firebug.DetachFirebug=Obre el Firebug en una finestra nova
+firebug.AttachFirebug=Attach Firebug to Browser Window
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Deactivated
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=Al navegador
+minimized=Minimitzat
+enablement.for_all_pages=per totes les pàgines
+enablement.on=On
+enablement.off=Off
+enablement.Panel_activation_status=Panel activation status:
+none=Tancat
+Firebug_-_inactive_for_current_website=Firebug - inactive for current website
+Activate_Firebug_for_the_current_website=Activate Firebug for the current website
+Minimized=Minimitzat
+Minimize_Firebug=Minimitza Firebug
+On_for_all_web_pages=Activar per totes les pàgines
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Neteja la llista d\' activació
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI Location
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Opcions de Firebug
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Show All Panels
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=Mostra les errades de Javascript
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Mostra els avisos de Javascript
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Mostra les errades de CSS
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Mostra la pila amb els errors
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Mostra les peticions XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Mostrar Errors Chrome
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Mostra els missatges del Chrome
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Mostra les errades externes
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Mostrar errors de xarxa
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Avisos estrictes (penalitza el rendiment)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Command History
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Show Completion List Popup
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Ha fallat una asserció
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (línia %S)
+LineAndCol=%S (line %S, col %S)
+InstanceLine=%S #%S (línia %S)
+StackItem=%S (%S línia %S)
+SystemItem=<Sistema>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(sense nom)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Mostra el text complet
+html.option.tip.Show_Full_Text=Don't crop element contents
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Mostra l\'espai en blanc
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Mostra els comentaris
+html.option.tip.Show_Comments=Show comment nodes
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Resalta els canvis
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Desplega els canvis
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Desplaça els canvis cap a la vista
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Mostra caixa d\' informació ràpida
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Model de caixa d\' ombra
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Desplaça cap a la vista
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Atribut nou...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Esborra l\'element
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Esborra el node
+html.Delete_Node=Delete the node from the tree
+# Quick Info Box
+quickInfo=Informació ràpida
+computedStyle=Estil computat
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Atura en canvis
+html.Disable_Break_On_Mutate=Deshabilita aturar en canvis
+html.label.Break_On_Text_Change=Atura en canvis de text
+html.label.HTML_Breakpoints=Punts d\' aturada HTML
+html.label.Break_On_Attribute_Change=Atura en canvis d\' atribut
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Atura en adició o eliminació de fills
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Atura en eliminar elements
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Expand/Contract All
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Break On Property Change
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Disable Break On Property Change
+dom.label.DOM_Breakpoints=Punts d\' aturada DOM
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Edita l\'atribut \"%S\"...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Esborra l\'atribut \"%S\"
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Heretat des de
+SothinkWarning=L\'extensió SWF Catcher impedeix al Firebug executar-se correctament.<br><br>Si voleu més informació, llegiu <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">aquesta entrada a les PMF de Firebug</a>.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
+EditStyle=Edita l\'estil de l\'element
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Nova norma...
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Afegeix una propietat
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=Edita \"%S\"...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=Deshabilita \"%S\"
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=Elimina \"%S\"
+css.tip.Delete_Prop=Delete the property "%S"
+# Console context menu labels.
+BreakOnThisError=Atura en aquesta errada
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Atura davant de qualsevol errada
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Vigila Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Utilitza l\'última línia de codi per noms eval()
+UseMD5ForEvalName=Utilitza MD5 per noms eval()
+# Breakpoints side panel
+Breakpoints=Punts de parada
+ErrorBreakpoints=Punts de parada d\'error
+LoggedFunctions=Funcions registrades
+EnableAllBreakpoints=Habilita tots els punts de parada
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Deshabilita tots els punts d\'aturada
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Elimina tots els punts d\'aturada
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Aquest punt de parada aturarà l\'execució només si aquesta expressió és certa:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Remove Breakpoint
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Disable Breakpoint
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Enable Breakpoint
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Continue
+script.balloon.Disable=Disable
+ScriptsFilterStatic=Mostra els scripts estàtics
+ScriptsFilterEval=Mostra els scripts estàtics i d\'avaluació
+ScriptsFilterEvent=Mostra els scripts estàtics i d\'esdeveniments
+ScriptsFilterAll=Mostra tots els scripts
+ScriptsFilterStaticShort=estàtic
+ScriptsFilterEvalShort=avaluació
+ScriptsFilterEventShort=esdeveniments
+ScriptsFilterAllShort=tot
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Expand All
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Collapse All
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Mostra les propietats definides per l\'usuari
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Mostra les funcions definides per l\'usuari
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Mostra les propietats del DOM
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Mostra les funcions del DOM
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Mostra les constants del DOM
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=Aquest objecte no té propietats per a mostrar
+NewWatch=Observa una nova expressió
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Afegeix una observació
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Copiar font
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
+CopyValue=Copiar valor
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Copiar nom
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Copiar camí
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Nova propietat
+EditProperty=Edita la propietat
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Edita la variable
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Edita l\'observació
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Esborra la propietat
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Esborra l\'observació
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Estableix un punt de parada
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Edita la condició del punt de parada
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=No hi ha punts de parada definits en aquesta pàgina
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Only Show Applied Styles
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Mostra l\'agent CSS d\'usuari
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Expand Shorthand Properties
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Sort Alphabetically
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Show Mozilla Specific Styles
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Type any key to filter list
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=position
+LayoutAdjacent=adjacent
+position=position
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Mostra regles i guies
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Net panel
+Loading=Carregant...
+Headers=Capçaleres
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Reinicialitzar capçalera
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=URL sol·licitada i mètode HTTP utilitzat
+net.header.Status=Estatus
+net.header.Status_Tooltip=Estatus de la resposta rebuda.
+net.header.Domain=Domini
+net.header.Domain_Tooltip=Domini de la sol·licitud executada.
+net.header.Size=Mida
+net.header.Size_Tooltip=Mida de la resposta rebuda.
+net.header.Timeline=Línia de temps
+net.header.Timeline_Tooltip=Informació detallada de temps en quant a la sol·licitud de resposta d\' anada i tornada.
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=Punts d\' aturada XHR
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Atura en XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=veure font
+net.headers.pretty_print=imprimir bonic
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Media
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Enviat
+Put=Posa
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Resposta
+URLParameters=Paràmetres de la URL
+Cache=Memòria cau
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Sort by key
+jsonviewer.do_not_sort=Do not sort
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Capçaleres de la sol·licitud
+ResponseHeaders=Capçaleres de la resposta
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
+LimitPrefs=Preferències
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Per a canviar el límit modifiqueu: %S
+Refresh=Refresca
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Obre una nova pestanya
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Obrir resposta en una pestanya nova
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Inspector
+ProfilerStarted=L\'Inspector s\'està executant. Premeu un altre cop \'Inspector\' per veure l\'informe.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
+NothingToProfile=No hi ha activitats per a inspeccionar.
+PercentTooltip=Percentatge de temps emprat en aquesta funció
+CallsHeaderTooltip=Número de vegades que s\'ha cridat la funció
+OwnTimeHeaderTooltip=Temps emprat per la funció, excepte les cridades niades.
+TimeHeaderTooltip=Temps emprat per la funció, cridades niades incloses.
+AvgHeaderTooltip=Temps mitjà, cridades a funcions incloses.
+MinHeaderTooltip=Temps mínim, crides a funcions incloses.
+MaxHeaderTooltip=Temps màxim, crides a funcions incloses.
+ProfileButton.Enabled.Tooltip=Temps d\' execució del Perfil Javascript.
+ProfileButton.Disabled.Tooltip=Temps d\' execució del Perfil Javascript. (El panell Script ha d\'estar habilitat)
+Function=Funció
+Percent=Percentatge
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Crides
+OwnTime=Temps propi
+Time=Temps
+Avg=Mitjana
+Min=Min
+Max=Màx
+File=Fitxer
+# Support for standard actions.
+Copy=Copia
+Cut=Retalla
+Remove=Elimina
+Delete=Delete
+Paste=Paste
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Copia l\'innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Copia l\'XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Copy CSS Path
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Copia l\'adreça
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Copia l\'adreça amb paràmetres
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Copiar les capçaleres de la sol·licitud
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Copiar Capçaleres de la resposta
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Copia el cos de la resposta
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Copia l\'errada
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Copia la funció
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Registra les crides a \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Registra els esdeveniments
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Habilitat
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=La consola de Firebug no suporta \'%S\'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=La línia d\'ordres del Firebug no suporta \'%S\'
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Deshabilita aturades en tots els errors
+console.Break_On_All_Errors=Atura en tots els errors
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Break On This Error
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript està desactivat a les preferències de Firefox. Si vols fer servir la consola, si us plau, habilita JavaScript a \'Eines\'-> \'Opcions\' -> \'Contingut\' -> \'Habilita el JavaScript\'
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Cos de la resposta
+net.sizeinfo.Post_Body=Cos del post
+net.sizeinfo.Total_Sent=Total enviat
+net.sizeinfo.Total_Received=Total rebut
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Panell de xarxa activat. Qualsevol sol·licitud mentre el panell de xarxa està desactivat no es mostrarà.
+net.responseSizeLimitMessage=El límit de mida de resposta de Firebug s\'ha assolit. Clica <a>aquí</a> per obrir la resposta completa a una nova pestanya de Firefox.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=El límit de mida del cos del post s\'ha assolit. Eliminat per Firebug.
+net.Break_On_XHR=Aturar en XHR
+net.label.Parameters=Paràmetres
+net.label.Parts=Parts
+net.label.Source=Font
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Deshabilita memòria cau del navegador
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Show Paint Events
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Atura en següent
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Mostra les capçaleres HTTP
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S request;%1$S requests
+FromCache=des de la memòria cau
+StopLoading=Atura la càrrega
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Dades massa extenses)
+ShowComputedStyle=Mostra amb estil d\'ordinador
+StyleGroup-text=Text
+StyleGroup-background=Fons
+StyleGroup-box=Model de caixa
+StyleGroup-layout=Disseny
+StyleGroup-other=Altres
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Copia el color
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Copia l\'adreça de la imatge
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Obre la imatge en una pestanya nova
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Omet la barra d\'eines de la pila
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copy Rule Declaration
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Copy Style Declaration
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Error;%1$S Errors
+moduleManager.title=Panell %S deshabilitat
+moduleManager.desc3=Fes servir la icona de menú de la barra d\' estat de Firebug per habilitar i deshabilitar tots els panells. Fes servir el menú petit del panell de la pestanya per controlar els panells individualment:
+moduleManager.Enable=Enable
+Suspend_Firebug=Suspèn el Firebug
+Resume_Firebug=Resumeix el Firebug
+Reset_Panels_To_Disabled=Reinicia els panells a deshabilitats
+Open_Console=Obre la consola
+Open_Console_Tooltip=Obre la consola de seguiment
+Scope_Chain=Cadena d\'àmbits
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=Amb
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Cridada
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Finestra
+Logs=Registres
+Options=Opcions
+Copy_Stack=Copia la pila
+Copy Exception=Copia l\'excepció
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Bloqueig
+requestinfo.Resolving=DNS Lookup
+requestinfo.Connecting=Connectant
+requestinfo.Sending=Enviant
+requestinfo.Waiting=Esperant
+requestinfo.Receiving=Rebent
+requestinfo.ContentLoad=\'DOMContentLoaded\' (esdeveniment)
+requestinfo.WindowLoad=\'load\' (esdeveniment)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Cerca de Firebug
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Següent
+search.tip.Next=Search for the next match
+search.Previous=Anterior
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Forçar sensibilitat entre majúscules i minúscules
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Múltiples arxius
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Use Regular Expression
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=Selector CSS
+search.net.Headers=Capçaleres
+search.net.Parameters=Paràmetres
+search.net.Response_Bodies=Cosos de resposta
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persistent
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Show all log entries
+firebug.console.Errors=Errors
+firebug.console.Filter_by_Errors=Filter by errors
+firebug.console.Warnings=Warnings
+firebug.console.Filter_by_Warnings=Filter by warnings
+firebug.console.Info=Info
+firebug.console.Filter_by_Info=Filter by info
+firebug.console.Debug_Info=Debug Info
+firebug.console.Filter_by_Debug_Info=Filter by debug info
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Obre el Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Hide Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Habilitar tots els panells
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Deshabilitar tots els panells
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Personalitza dreceres
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Opcions
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Habilita millores d\' accessibilitat
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Reinicialitzar totes les opcions de Firebug
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug Online
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Show Error Count
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Mida del Text
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Incrementa la mida del text
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Redueix la mida del text
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Mida del text normal
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Lloc Web de Firebug...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Documentació...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Tecles de funció...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Grup de Discussió...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Incidències...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Donatius...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Quant a...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Cerca
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Tornar a entrar comanda
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Alternar inspecció
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Alternar caixa d\' informació ràpida
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Alternar perfilat
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Enfoca la línia de comandes
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Enfoca la cerca de Firebug
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Enfoca l\' editor de vigilància
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Enfoca localització
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Objecte següent
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Objecte anterior
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Personalitza dreceres de Firebug
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Obrir Firebug a una nova finestra
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Canvia al panell esquerra de Firebug
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Canvia al panell dret de Firebug
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Obrir Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Anterior pestanya de Firebug
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Neteja consola
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Obrir consola de seguiment
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Go Back
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Go Forward
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Increase Text Size
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Decrease Text Size
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normal Text Size
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Panel Selector
+customizeShortcuts=Personalitza dreceres de Firebug
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=panell d\' eines
+a11y.labels.firebug_panels=Panells de Firebug
+a11y.labels.firebug_side_panels=panells laterals de Firebug
+a11y.labels.firebug_window=finestra de Firebug
+a11y.labels.firebug_status=estat de Firebug
+a11y.labels.reset=reinicialitza
+a11y.labels.reset_shortcut=reinicialitza drecera %S
+aria.labels.inactive_panel=panell inactiu
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=registra files
+a11y.labels.call_stack=crida la pila
+a11y.labels.document_structure=document structure
+a11y.labels.title_panel=panell %S
+a11y.labels.title_side_panel=panell lateral %S
+a11y.labels.cached=memòria cau
+aria.labels.stack_trace=seguiment de la pila
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=position
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=margin top
+a11y.layout.margin_right=margin right
+a11y.layout.margin_bottom=margin bottom
+a11y.layout.margin_left=margin left
+a11y.layout.border_top=border top
+a11y.layout.border_right=border right
+a11y.layout.border_bottom=border bottom
+a11y.layout.border_left=border left
+a11y.layout.padding_top=padding top
+a11y.layout.padding_right=padding right
+a11y.layout.padding_bottom=padding bottom
+a11y.layout.padding_left=padding left
+a11y.layout.top=top
+a11y.layout.right=right
+a11y.layout.bottom=bottom
+a11y.layout.left=left
+a11y.layout.width=width
+a11y.layout.height=height
+a11y.layout.size=size
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=coordenades rect del client
+a11y.descriptions.press_enter_to_edit_values=prem enter seguit del tabulador per editar valors individuals
+a11y.labels.style_rules=normes d\'estil
+aria.labels.inherited_style_rules=normes d\'estil heretades
+a11y.labels.computed_styles=estils computats
+a11y.labels.dom_properties=propietats del DOM
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=editor en línia
+a11y.labels.value_for_attribute_in_element=valor per %S atributs a %S elements
+a11y.labels.attribute_for_element=atributs per %S elements
+a11y.labels.text_contents_for_element=continguts de text per %S elements
+a11y.labels.defined_in_file=definit a %S
+a11y.labels.declarations_for_selector=declaracions d\'estil pel selector \"%S\"
+a11y.labels.property_for_selector=propietat CSS pel selector: %S
+a11y.labels.value_property_in_selector=valor de la propietat %S pel selector %S
+a11y.labels.css_selector=selector CSS
+a11y.labels.source_code_for_file=codi font de l\'arxiu %S
+a11y.labels.press_enter_to_add_new_watch_expression=prem enter per afegir una nova expressió de vigilància
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=sobreescrit
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=te un punt d\'aturada condicional
+a11y.updates.has_disabled_break_point=te punt d\'aturada deshabilitat
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script suspès a la línia %S en %S, arxiu %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=coincidència trobada per %S a %S files de registre
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=coincidència trobada per %S a la línia %S en %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=coincidència trobada per %S a %S elements al camí %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=coincidència trobada per %S a l\'atribut %S=%S de %S elements al camí %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=coincidència trobada per %S al contingut de text: %S de %S elements al camí %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=coincidència trobada per %S al selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=coincidència trobada per \"%S\" a la declaració d\'estil %S al selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=coincidència trobada per %S a la propietat %S del DOM
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=coincidència trobada per \"%S\" a %S, %S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=coincidència trobada per %S a la fila del sumari de xarxa: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=no s\'han trobat coincidències per \"%S\"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Estàs segur de reinicialitzar totes les opcions de Firebug al seu estat per defecte?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=La consola s\'ha d\'habilitar
+warning.Command_line_blocked?=Línia de comanda bloquejada?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Recarrega per activar la finestra de la consola
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=El recurs d\'aquesta URL no es text
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Go back to this panel
+firebug.history.Stay_on_this_panel=Stay on this panel
+firebug.history.Go_forward_to_this_panel=Go forward to this panel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Go back
+firebug.history.Go_forward=Go forward
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Script Panel was inactive during page load
+script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript is not enabled
+script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Enable JavaScript and Refresh
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=All scripts were filtered
+script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=No Javascript on this page
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Debugger is already active
+script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
+script.button.Go_to_that_page=Go to that page
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Tanca
+firebug.View=Visualitza
+firebug.Help=Ajuda
+firebug.Run=Executa
+firebug.Copy=Copia
+firebug.History=History
+firebug.Run_the_entered_command=Run the entered command
+firebug.Clear_the_Command_Editor=Clear the Command Editor
+firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
+firebug.Insert_a_previously_entered_command=Insert a previously entered command
+firebug.AlwaysOpenInWindow=Obre sempre en en una finestra nova
+firebug.OpenWith=Obre amb l\'editor
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Permisos...
+firebug.Configure_Editors=Configure Editors
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Inspecciona
+firebug.InspectElement=Inspecciona l\'element
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Atura si hi ha errors
+firebug.InspectTooltip=Premeu damunt d\'un element de la pàgina per inspeccionar-lo
+firebug.EditHTMLTooltip=Edita aquest codi HTML
+firebug.Profile=Inspecciona
+firebug.Clear=Neteja
+firebug.ClearConsole=Neteja la consola
+firebug.ClearTooltip=Neteja la consola
+firebug.All=Tot
+firebug.Images=Imatges
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Configured Firebug Editors
+editors.Editor=Editor
+editors.Executable=Executable
+editors.Launch_Arguments=Launch Arguments
+editors.Add=Add
+editors.Remove=Remove
+editors.Change=Change
+editors.Move_Up=Move Up
+editors.Close=Close
+editors.Browse=Browse...
+changeEditor.Editor_Configuration=Editor Configuration
+changeEditor.Name=Nom:
+changeEditor.Executable=Executable:
+changeEditor.CmdLine=Arguments:
+changeEditor.Supplied_arguments=Arguments supplied by Firebug:
+changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
+changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
+changeEditor.Line_number=Line number (if available)
+changeEditor.Invalid_Application_Path=Invalid Application Path
+changeEditor.Application_does_not_exist=The specified application doesn't exist!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Edita
+firebug.css.sourceEdit=Source Edit
+firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
+firebug.css.liveEdit=Live Edit
+firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
+firebug.EditCSSTooltip=Edita aquest full d\'estils
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Show Break Notifications
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
+firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=There are no child objects
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=more
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Object Properties
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(no completions)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
+firebug.failedToPreviewImageURL=Failed to load the given URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/cs/cookies.properties b/locale/cs/cookies.properties
index dc15315..b5336ac 100644
--- a/locale/cs/cookies.properties
+++ b/locale/cs/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Povolit prohlížení a manipulaci s cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Sezení
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Přijímat cookies ze všech webů
-cookies.tip.AllowGlobally=Povolit nebo zablokovat všechny cookies jako výchozí
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Pročistit cookies při odmítnutí
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Vyjmout
-cookies.Copy=Kopírovat
-cookies.CopyAll=Kopírovat vše
-cookies.Paste=Vložit
-cookies.Delete=Odstranit
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Smazat hodnotu
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Upravit
-cookies.Accept=Přijmout
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Obnovit hlavičku
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=Můžete uvést, od kterých webů budete vždy nebo nikdy přijímat cookies.\nVlože přesnou adresu webu, který chcete nastavit a poté klikněte na Blokovat,\nPovolit nyní nebo Povolit.
-cookies.ExceptionsTitle=Vyjímky - cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Podpora sledování cookies
-cookies.HostEnable=Povolit panel cookies pro %S
-cookies.HostDisable=Zakázat panel cookies pro %S
-cookies.Permissions=Povolit či zakázat panel cookies
-cookies.PermissionsIntro=Zvolit stránky, kde bude panel cookies povolen či zakázán
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=Systémové stránky
-cookies.LocalFiles=Lokální soubory
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Chcete odstranit všechny cookies ze seznamu?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Chcete odstranit všechny cookies sezení ze seznamu?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Tuto zprávu již nezobrazovat
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Potvrdit odstranění cookie
-cookies.tip.Confirm_cookie_removal=Při zatržení se před vymazáním všech cookies ze seznamu zobrazí okno s potvrzením.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Odstranit všechny cookies ze seznamu
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Odstranit cookies sezení
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Odstranit všechny cookies sezení ze seznamu.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Vytvořit novou cookie pro %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Hodnota
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Upravit povolení cookie pro %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=Všechny cookies byly odstraněny.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=Všechny cookies sezení byly odstraněny.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Odmítnuté cookies:
-cookies.console.nocookiesreceived=Nebyly přijaty žádné cookies
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=Vymazané
-cookies.console.added=Přidané
-cookies.console.changed=Změněné
-cookies.console.cleared=Vyčištěno
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Doména
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Bezpečné
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Přijaté
-cookies.status.downgraded=Downgradeované
-cookies.status.flagged=Označené
-cookies.status.rejected=Odmítnuté
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Hodnota
-cookies.info.rawdatatab.Raw_Data=Surová data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Defaultní (Přijímat cookies sezení)
-cookies.default.thirdPartySession=Defaultní (Přijímat cookies sezení)
-cookies.default.thirdParty=Defaultní (Přijímat cookies)
-cookies.default.allow=Defaultní (Přijímat cookies)
-cookies.default.deny=Defaultní (Nepřijímat cookies)
-cookies.default.warn=Defaultní (Před přijmutím cookie zobrazit varování)
-cookies.host.session=Přijímat cookies sezení z %S
-cookies.host.accept=Přijímat cookies z %S
-cookies.host.reject=Nepřijímat cookies z %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Jméno cookie je nesprávné
-cookies.edit.invalidhost=Hostitel cookie je nesprávný
-cookies.edit.invalidpath=Cesta ke cookie je nesprávná
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Název
-cookies.header.value=Hodnota
-cookies.header.rawValue=Nezpracovaná hodnota
-cookies.header.domain=Doména
-cookies.header.size=Velikost
-cookies.header.path=Cesta
-cookies.header.expires=Vyprší
-cookies.header.security=Bezpečnost
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Název
-cookies.header.value.tooltip=Hodnota
-cookies.header.rawValue.tooltip=Nezpracovaná hodnota uložená pro cookie
-cookies.header.domain.tooltip=Doména
-cookies.header.size.tooltip=Velikost
-cookies.header.path.tooltip=Cesta
-cookies.header.expires.tooltip=Vyprší
-cookies.header.security.tooltip=Bezpečnost
-cookies.header.httponly.tooltip=Indikuje, zda se jedná o cookie pouze pro HTTP
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Přijaté cookies
-cookies.netinfo.Sent_Cookies=Odeslané cookies
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Filtr cesty
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Exportovat všechny cookies
-cookies.export.Export_All_Cookies_Tooltip=Exportovat všechny cookies z prohlížeče do souboru cookies.txt
-cookies.export.Export_For_Site=Exportovat cookies pro tento web...
-cookies.export.Export_For_Site_Tooltip=Exportovat cookies pro tento web do souboru cookies.txt
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=Žádná stránka není aktivní.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Pozastavit při změně cookie
-cookies.Disable_Break_On_Cookie=Vypnout pozastavení při změně cookie
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie breakpointy
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Pozastavit při cookie '%S'
-cookies.menu.tooltip.Break_On_Cookie=Pozastavit při '%S' pokud je odstraněna či změněna
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Upravit podmínky breakpointu
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Vyhodnocení podmínek breakpointu selhalo
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Odstranit cookies
-cookies.Create=Vytvořit cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Nástroje
-cookies.ToolsTooltip=Nástroje
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Zobrazit všechny cookies...
-cookies.ViewAllTooltip=Otevřít správce cookies
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Nastavení jednotlivých webů...
-cookies.ViewExceptionsTooltip=Zobrazit seznam povolených či zakázaných webů
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filtr
-cookies.FilterTooltip=Filtruje seznam cookies dle zadaných podmínek
-cookies.filter.byPath=Filtrovat cookie podle cesty
-cookies.filter.byPathTooltip=Zobrazit pouze cookies, které se shodují s aktuální cestou
-cookies.filter.showRejectedCookies=Zobrazit odmítnuté cookies
-cookies.filter.showRejectedCookiesTooltip=Zobrazí v seznamu také odmítnuté cookies
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Upravit cookies
-cookies.edit.name.label=Jméno:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Cesta:
-cookies.edit.expire.label=Platnost:
-cookies.edit.value.label=Hodnota:
-cookies.edit.secure.label=Bezpečná cookie
-cookies.edit.httponly.label=Pouze HTTP
-cookies.edit.session.label=Sezení
-cookies.edit.urlEncode.label=URL zakódovat hodnotu
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filtrovat podle cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Vymazat všechny cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Povolit prohlížení a manipulaci s cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Sezení
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Přijímat cookies ze všech webů
+cookies.tip.AllowGlobally=Povolit nebo zablokovat všechny cookies jako výchozí
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Pročistit cookies při odmítnutí
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Vyjmout
+cookies.Copy=Kopírovat
+cookies.CopyAll=Kopírovat vše
+cookies.Paste=Vložit
+cookies.Delete=Odstranit
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Smazat hodnotu
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Upravit
+cookies.Accept=Přijmout
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Obnovit hlavičku
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=Můžete uvést, od kterých webů budete vždy nebo nikdy přijímat cookies.\nVlože přesnou adresu webu, který chcete nastavit a poté klikněte na Blokovat,\nPovolit nyní nebo Povolit.
+cookies.ExceptionsTitle=Vyjímky - cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Podpora sledování cookies
+cookies.HostEnable=Povolit panel cookies pro %S
+cookies.HostDisable=Zakázat panel cookies pro %S
+cookies.Permissions=Povolit či zakázat panel cookies
+cookies.PermissionsIntro=Zvolit stránky, kde bude panel cookies povolen či zakázán
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=Systémové stránky
+cookies.LocalFiles=Lokální soubory
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Chcete odstranit všechny cookies ze seznamu?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Chcete odstranit všechny cookies sezení ze seznamu?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Tuto zprávu již nezobrazovat
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Potvrdit odstranění cookie
+cookies.tip.Confirm_cookie_removal=Při zatržení se před vymazáním všech cookies ze seznamu zobrazí okno s potvrzením.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Odstranit všechny cookies ze seznamu
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Odstranit cookies sezení
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Odstranit všechny cookies sezení ze seznamu.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Vytvořit novou cookie pro %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Hodnota
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Upravit povolení cookie pro %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=Všechny cookies byly odstraněny.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=Všechny cookies sezení byly odstraněny.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Odmítnuté cookies:
+cookies.console.nocookiesreceived=Nebyly přijaty žádné cookies
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=Vymazané
+cookies.console.added=Přidané
+cookies.console.changed=Změněné
+cookies.console.cleared=Vyčištěno
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Doména
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Bezpečné
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Přijaté
+cookies.status.downgraded=Downgradeované
+cookies.status.flagged=Označené
+cookies.status.rejected=Odmítnuté
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Hodnota
+cookies.info.rawdatatab.Raw_Data=Surová data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Defaultní (Přijímat cookies sezení)
+cookies.default.thirdPartySession=Defaultní (Přijímat cookies sezení)
+cookies.default.thirdParty=Defaultní (Přijímat cookies)
+cookies.default.allow=Defaultní (Přijímat cookies)
+cookies.default.deny=Defaultní (Nepřijímat cookies)
+cookies.default.warn=Defaultní (Před přijmutím cookie zobrazit varování)
+cookies.host.session=Přijímat cookies sezení z %S
+cookies.host.accept=Přijímat cookies z %S
+cookies.host.reject=Nepřijímat cookies z %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Jméno cookie je nesprávné
+cookies.edit.invalidhost=Hostitel cookie je nesprávný
+cookies.edit.invalidpath=Cesta ke cookie je nesprávná
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Název
+cookies.header.value=Hodnota
+cookies.header.rawValue=Nezpracovaná hodnota
+cookies.header.domain=Doména
+cookies.header.size=Velikost
+cookies.header.path=Cesta
+cookies.header.expires=Vyprší
+cookies.header.security=Bezpečnost
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Název
+cookies.header.value.tooltip=Hodnota
+cookies.header.rawValue.tooltip=Nezpracovaná hodnota uložená pro cookie
+cookies.header.domain.tooltip=Doména
+cookies.header.size.tooltip=Velikost
+cookies.header.path.tooltip=Cesta
+cookies.header.expires.tooltip=Vyprší
+cookies.header.security.tooltip=Bezpečnost
+cookies.header.httponly.tooltip=Indikuje, zda se jedná o cookie pouze pro HTTP
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Přijaté cookies
+cookies.netinfo.Sent_Cookies=Odeslané cookies
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Filtr cesty
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Exportovat všechny cookies
+cookies.export.Export_All_Cookies_Tooltip=Exportovat všechny cookies z prohlížeče do souboru cookies.txt
+cookies.export.Export_For_Site=Exportovat cookies pro tento web...
+cookies.export.Export_For_Site_Tooltip=Exportovat cookies pro tento web do souboru cookies.txt
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=Žádná stránka není aktivní.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Pozastavit při změně cookie
+cookies.Disable_Break_On_Cookie=Vypnout pozastavení při změně cookie
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie breakpointy
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Pozastavit při cookie '%S'
+cookies.menu.tooltip.Break_On_Cookie=Pozastavit při '%S' pokud je odstraněna či změněna
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Upravit podmínky breakpointu
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Vyhodnocení podmínek breakpointu selhalo
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Odstranit cookies
+cookies.Create=Vytvořit cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Nástroje
+cookies.ToolsTooltip=Nástroje
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Zobrazit všechny cookies...
+cookies.ViewAllTooltip=Otevřít správce cookies
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Nastavení jednotlivých webů...
+cookies.ViewExceptionsTooltip=Zobrazit seznam povolených či zakázaných webů
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filtr
+cookies.FilterTooltip=Filtruje seznam cookies dle zadaných podmínek
+cookies.filter.byPath=Filtrovat cookie podle cesty
+cookies.filter.byPathTooltip=Zobrazit pouze cookies, které se shodují s aktuální cestou
+cookies.filter.showRejectedCookies=Zobrazit odmítnuté cookies
+cookies.filter.showRejectedCookiesTooltip=Zobrazí v seznamu také odmítnuté cookies
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Upravit cookies
+cookies.edit.name.label=Jméno:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Cesta:
+cookies.edit.expire.label=Platnost:
+cookies.edit.value.label=Hodnota:
+cookies.edit.secure.label=Bezpečná cookie
+cookies.edit.httponly.label=Pouze HTTP
+cookies.edit.session.label=Sezení
+cookies.edit.urlEncode.label=URL zakódovat hodnotu
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filtrovat podle cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Vymazat všechny cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/cs/firebug-amo.properties b/locale/cs/firebug-amo.properties
index afdb214..1bfcb6a 100644
--- a/locale/cs/firebug-amo.properties
+++ b/locale/cs/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug se integruje s Firefoxem a nabízí řadu vývojářských nástrojů při procházení stránek. Můžete editovat, ladit a slednovat CSS, HTML a JavaScript na kterékoliv webové stránce...\\n\\nFirefox 1.6 vyžaduje Firefox 3.6 nebo vyšší.
-firebug.amo.description=Firebug svou integrací do Firefoxu poskytuje uživateli mnoho užitečných nástrojů pro vývoj webových aplikací. Můžete upravovat, ladit a sledovat CSS, HTML a JavaScript naživo na jakékoli stránce.\\n\\nNavštivte webovou stránku Firebugu, kde naleznete dokumentaci, screenshoty nebo diskuzní fórum: http://getfirebug.com
-firebug.amo.developer.comments=V případě jakýchkoli problému si prosím přečtěte Nejčastější otázky týkající se Firebugu.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug se integruje s Firefoxem a nabízí řadu vývojářských nástrojů při procházení stránek. Můžete editovat, ladit a slednovat CSS, HTML a JavaScript na kterékoliv webové stránce...\\n\\nFirefox 1.6 vyžaduje Firefox 3.6 nebo vyšší.
+firebug.amo.description=Firebug svou integrací do Firefoxu poskytuje uživateli mnoho užitečných nástrojů pro vývoj webových aplikací. Můžete upravovat, ladit a sledovat CSS, HTML a JavaScript naživo na jakékoli stránce.\\n\\nNavštivte webovou stránku Firebugu, kde naleznete dokumentaci, screenshoty nebo diskuzní fórum: http://getfirebug.com
+firebug.amo.developer.comments=V případě jakýchkoli problému si prosím přečtěte Nejčastější otázky týkající se Firebugu.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/cs/firebug-tracing.properties b/locale/cs/firebug-tracing.properties
index c3a0188..6031637 100644
--- a/locale/cs/firebug-tracing.properties
+++ b/locale/cs/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Otevřít tracing Firebugu
-Always_Open_Firebug_Tracing=Vždy otevírat tracing Firebugu
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Tracing
-tracing.Show_Scope_Variables=Zobrazovat proměnné pohledu
-tracing.Show_Time=Zobrazovat čas
-tracing.tab.Stack=Zásobník
-tracing.tab.Exception=Vyjímka
-tracing.tab.Properties=Vlastnosti
-tracing.tab.Scope=Pohled
-tracing.tab.Response=Odezva
-tracing.tab.Source=Zdroj
-tracing.tab.Interfaces=Rozhraní
-tracing.tab.Object=Objekt
-tracing.tab.Event=Událost
-tracing.cmd.Clear=Vyčistit
-tracing.cmd.tip.Clear=Odstraní všechny zprávy
-tracing.cmd.Find=Hledat
-tracing.cmd.tip.Find=Vyhledávání textu
-tracing.cmd.Bookmark=Záložka
-tracing.cmd.tip.Bookmark=Vloží záložku
-tracing.cmd.Restart=Restartovat Firefox
-tracing.cmd.tip.Restart=Restartuje Firefox
-tracing.cmd.Exit=Ukončit Firefox
-tracing.cmd.tip.Exit=Ukončí Firefox
-tracing.cmd.Save=Uložit do souboru
-tracing.cmd.tip.Save=Uloží logy do souboru
-tracing.cmd.Load=Nahrát ze souboru
-tracing.cmd.tip.Load=Nahraje logy ze souboru
-tracing.cmd.Expand_All=Rozbalit vše
-tracing.cmd.Collapse_All=Sbalit vše
-tracing.cmd.Tools=Nástroje
-tracing.cmd.tip.Tools=Nástroje
-tracing.cmd.Clear_Browser_Cache=Smazat keš prohlížeče
-tracing.cmd.tip.Clear_Browser_Cache=Smaže keš prohlížeče
-tracing.cmd.Force_Garbage_Collector=Vnutit Garbage Collector
-tracing.cmd.tip.Force_Garbage_Collector=Vnutí Garbage Collector
-tracing.cmd.Open_Profile_Directory=Otevřít profilový adresář
-tracing.cmd.tip.Open_Profile_Directory=Otevře profilový adresář
-tracing.option.A11Y_Description=Problémy s přístupností
-tracing.option.ACTIVATION_Description=Aktivace Firebugu
-tracing.option.ACTIVITYOBSERVER_Description=Pozorovatel aktivity
-tracing.option.ANNOTATIONS_Description=Anotace stránky
-tracing.option.BP_Description=Breakpointy
-tracing.option.CACHE_Description=Keš zdroje
-tracing.option.COMMANDLINE_Description=Příkazová řádka a vyskakování příkazové řádky
-tracing.option.COMPILATION_UNITS_Description=Kompilační jednotky skriptu
-tracing.option.CONSOLE_Description=Panel konzole
-tracing.option.CSS_Description=Parsování CSS
-tracing.option.DISPATCH_Description=Odesílání událostí
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Vytvořit Domplate
-tracing.option.EDITOR_Description=Automatické doplňování a místní editace
-tracing.option.ERRORLOG_Description=Chybový log JS, CSS, XML, atd.
-tracing.option.ERRORS_Description=Vnitřní chyby Firebugu
-tracing.option.EVAL_Description=Provedení skriptu
-tracing.option.FBS_BP_Description=Breakpointy služby Firebug
-tracing.option.FBS_CREATION_Description=Vytvořit skript služby Firebug
-tracing.option.FBS_ERRORS_Description=Chybové zprávy služby Firebug
-tracing.option.FBS_FINDDEBUGGER_Description=Nalezení debuggeru služby Firebug
-tracing.option.FBS_FUNCTION_Description=Funkce služby Firebug
-tracing.option.FBS_JSDCONTEXT_Description=Kontext debuggeru JavaScriptu služby Firebug
-tracing.option.FBS_SRCUNITS_Description=Zdrojové jednotky služby Firebug
-tracing.option.FBS_STEP_Description=Krokování debuggeru JavaScriptu služby Firebug
-tracing.option.FBS_TRACKFILES_Description=Sledované soubory služby Firebug
-tracing.option.FUNCTION_NAMES_Description=Názvy funkcí JavaScriptu
-tracing.option.HISTORY_Description=Historie navigace rozšíření Firebug
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=Sledování požadavku HTTP
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Inicializace rozšíření Firebug
-tracing.option.INSPECT_Description=Inspektor
-tracing.option.JSONVIEWER_Description=Prohlížeč JSON
-tracing.option.LINETABLE_Description=Tabulka řádku skriptu
-tracing.option.LOCALE_Description=Lokalizace
-tracing.option.LOCATIONS_Description=Zdrojové lokace
-tracing.option.NET_Description=Panel Síť
-tracing.option.NET_EVENTS_Description=Síťové události
-tracing.option.OPTIONS_Description=Možnosti Firebugu
-tracing.option.PANELS_Description=Panely
-tracing.option.SHORTCUTS_Description=Klávesové zkratky
-tracing.option.SOURCEFILES_Description=Zdrojové soubory JavaScriptu
-tracing.option.SPY_Description=XMLHttpRequests observer
-tracing.option.STACK_Description=Zásobník volání JavaScriptu
-tracing.option.STORAGE_Description=Úložiště nastavení
-tracing.option.SVGVIEWER_Description=Prohlížeč SVG
-tracing.option.FONTS_Description=Informace a prohlížení fontů
-tracing.option.TOOLTIP_Description=Nápověda tlačítka Start
-tracing.option.TOPLEVEL_Description=JavaScript nejvyšší úrovně
-tracing.option.UI_LOOP_Description=Debuggovací uživatelské rozhraní JavaScriptu
-tracing.option.WINDOWS_Description=Okna rozšíření Firebug a Sledování záložek
-tracing.option.XMLVIEWER_Description=Prohlížeč XML
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Otevřít tracing Firebugu
+Always_Open_Firebug_Tracing=Vždy otevírat tracing Firebugu
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Tracing
+tracing.Show_Scope_Variables=Zobrazovat proměnné pohledu
+tracing.Show_Time=Zobrazovat čas
+tracing.tab.Stack=Zásobník
+tracing.tab.Exception=Vyjímka
+tracing.tab.Properties=Vlastnosti
+tracing.tab.Scope=Pohled
+tracing.tab.Response=Odezva
+tracing.tab.Source=Zdroj
+tracing.tab.Interfaces=Rozhraní
+tracing.tab.Object=Objekt
+tracing.tab.Event=Událost
+tracing.cmd.Clear=Vyčistit
+tracing.cmd.tip.Clear=Odstraní všechny zprávy
+tracing.cmd.Find=Hledat
+tracing.cmd.tip.Find=Vyhledávání textu
+tracing.cmd.Bookmark=Záložka
+tracing.cmd.tip.Bookmark=Vloží záložku
+tracing.cmd.Restart=Restartovat Firefox
+tracing.cmd.tip.Restart=Restartuje Firefox
+tracing.cmd.Exit=Ukončit Firefox
+tracing.cmd.tip.Exit=Ukončí Firefox
+tracing.cmd.Save=Uložit do souboru
+tracing.cmd.tip.Save=Uloží logy do souboru
+tracing.cmd.Load=Nahrát ze souboru
+tracing.cmd.tip.Load=Nahraje logy ze souboru
+tracing.cmd.Expand_All=Rozbalit vše
+tracing.cmd.Collapse_All=Sbalit vše
+tracing.cmd.Tools=Nástroje
+tracing.cmd.tip.Tools=Nástroje
+tracing.cmd.Clear_Browser_Cache=Smazat keš prohlížeče
+tracing.cmd.tip.Clear_Browser_Cache=Smaže keš prohlížeče
+tracing.cmd.Force_Garbage_Collector=Vnutit Garbage Collector
+tracing.cmd.tip.Force_Garbage_Collector=Vnutí Garbage Collector
+tracing.cmd.Open_Profile_Directory=Otevřít profilový adresář
+tracing.cmd.tip.Open_Profile_Directory=Otevře profilový adresář
+tracing.option.A11Y_Description=Problémy s přístupností
+tracing.option.ACTIVATION_Description=Aktivace Firebugu
+tracing.option.ACTIVITYOBSERVER_Description=Pozorovatel aktivity
+tracing.option.ANNOTATIONS_Description=Anotace stránky
+tracing.option.BP_Description=Breakpointy
+tracing.option.CACHE_Description=Keš zdroje
+tracing.option.COMMANDLINE_Description=Příkazová řádka a vyskakování příkazové řádky
+tracing.option.COMPILATION_UNITS_Description=Kompilační jednotky skriptu
+tracing.option.CONSOLE_Description=Panel konzole
+tracing.option.CSS_Description=Parsování CSS
+tracing.option.DISPATCH_Description=Odesílání událostí
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Vytvořit Domplate
+tracing.option.EDITOR_Description=Automatické doplňování a místní editace
+tracing.option.ERRORLOG_Description=Chybový log JS, CSS, XML, atd.
+tracing.option.ERRORS_Description=Vnitřní chyby Firebugu
+tracing.option.EVAL_Description=Provedení skriptu
+tracing.option.FBS_BP_Description=Breakpointy služby Firebug
+tracing.option.FBS_CREATION_Description=Vytvořit skript služby Firebug
+tracing.option.FBS_ERRORS_Description=Chybové zprávy služby Firebug
+tracing.option.FBS_FINDDEBUGGER_Description=Nalezení debuggeru služby Firebug
+tracing.option.FBS_FUNCTION_Description=Funkce služby Firebug
+tracing.option.FBS_JSDCONTEXT_Description=Kontext debuggeru JavaScriptu služby Firebug
+tracing.option.FBS_SRCUNITS_Description=Zdrojové jednotky služby Firebug
+tracing.option.FBS_STEP_Description=Krokování debuggeru JavaScriptu služby Firebug
+tracing.option.FBS_TRACKFILES_Description=Sledované soubory služby Firebug
+tracing.option.FUNCTION_NAMES_Description=Názvy funkcí JavaScriptu
+tracing.option.HISTORY_Description=Historie navigace rozšíření Firebug
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=Sledování požadavku HTTP
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Inicializace rozšíření Firebug
+tracing.option.INSPECT_Description=Inspektor
+tracing.option.JSONVIEWER_Description=Prohlížeč JSON
+tracing.option.LINETABLE_Description=Tabulka řádku skriptu
+tracing.option.LOCALE_Description=Lokalizace
+tracing.option.LOCATIONS_Description=Zdrojové lokace
+tracing.option.NET_Description=Panel Síť
+tracing.option.NET_EVENTS_Description=Síťové události
+tracing.option.OPTIONS_Description=Možnosti Firebugu
+tracing.option.PANELS_Description=Panely
+tracing.option.SHORTCUTS_Description=Klávesové zkratky
+tracing.option.SOURCEFILES_Description=Zdrojové soubory JavaScriptu
+tracing.option.SPY_Description=XMLHttpRequests observer
+tracing.option.STACK_Description=Zásobník volání JavaScriptu
+tracing.option.STORAGE_Description=Úložiště nastavení
+tracing.option.SVGVIEWER_Description=Prohlížeč SVG
+tracing.option.FONTS_Description=Informace a prohlížení fontů
+tracing.option.TOOLTIP_Description=Nápověda tlačítka Start
+tracing.option.TOPLEVEL_Description=JavaScript nejvyšší úrovně
+tracing.option.UI_LOOP_Description=Debuggovací uživatelské rozhraní JavaScriptu
+tracing.option.WINDOWS_Description=Okna rozšíření Firebug a Sledování záložek
+tracing.option.XMLVIEWER_Description=Prohlížeč XML
diff --git a/locale/cs/firebug.properties b/locale/cs/firebug.properties
index d4d37dc..918edfd 100644
--- a/locale/cs/firebug.properties
+++ b/locale/cs/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.n\n
-# %S Title of the associated web page.n\n
-# examples: Firebug - Googlen\n
-WindowTitle=Firebug - %S
-# Panel titlesn\n
-Panel-console=Konzole
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Síť
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Skripty
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Styly
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Vypočtené
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Rozvržení
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Sledování
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Breakpointy
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Zásobník
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Pohledy
-firebug.DetachFirebug=Otevřít Firebug v novém okně
-firebug.AttachFirebug=Připojit Firbug k oknu prohlížeče
-# LOCALIZATION NOTE (plural.Total_Firebugs): Semi-colon list of plural forms.n\n
-# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsn\n
-# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.n\n
-# Displays number of pages with Firebug activated.n\n
-pluralRule=8
-# %S number of Firebugs activatedn\n
-# example: 2 Total Firebugsn\n
-# Console panel options.n\n
-# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,n\n
-# message, etc. within a source of a web page.n\n
-# #1 File name, #2 Line numbern\n
-plural.Total_Firebugs2=%1$S Firebug celkem;%1$S Firebugy celkem;%1$S Firebugů celkem
-# examples: somePage.htm (line 64)n\n
-# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.n\n
-# For example, right clicking on an element in the HTML panel offers an action to inspectn\n
-startbutton.tip.deactivated=Deactivated
-# clicked element in the DOM panel (tab).n\n
-# #1 Target panel titlen\n
-# examples: Inspect in DOM Tabn\n
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugn\n
-# do not translate.n\n
-panel.status=%S: %S
-inBrowser=V prohlížeči
-minimized=Minimalizováno
-enablement.for_all_pages=pro všechny stránky
-enablement.on=Zapnuto
-enablement.off=Vypnuto
-enablement.Panel_activation_status=Panel activation status:
-none=Zavřeno
-Firebug_-_inactive_for_current_website=Firebug - pro aktuální stránky neaktivní
-Activate_Firebug_for_the_current_website=Aktivovat Firebug pro aktuální stránky
-Minimized=Minimalizováno
-Minimize_Firebug=Minimalizovat Firebug
-On_for_all_web_pages=Zapnout pro všechny stránky
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Smazat seznam aktivací
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI Location
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# #1 jsdIScript.tagn\n
-# HTML panel context menu items.n\n
-firebug_options=Možnosti Firebugu
-# Quick Info Boxn\n
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumen\n
-firebug.Show_All_Panels=Zobrazit všechny panely
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# button that are used when the HTML panel is currently selected. The button allows stoppingn\n
-ShowJavaScriptErrors=Zobrazovat chyby v JavaScriptu
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Zobrazovat varování v JavaScriptu
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Zobrazovat chyby v CSS
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Zobrazovat stack trace s chybami
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Zobrazovat XMLHttpRequesty
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Zobrazovat chyby v Chrome
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Zobrazovat zprávy z Chrome
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Zobrazovat vnější chyby
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Zobrazit chyby sítě
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Zobrazovat přísná varování (vliv na výkon)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Historie příkazů
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Zobrazit okno se seznamem doplnění
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Selhání asertace
-# JS execution when DOM of the current page is modified.n\n
-# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
-# editing an existing HTML element attribute.n\n
-# #1 Name of the clicked attribute.n\n
-# examples: Edit Attribute \"onclick\"...n\n
-Line=%S (řádek %S)
-LineAndCol=%S (line %S, col %S)
-InstanceLine=%S #%S (řádek %S)
-StackItem=%S (%S řádek %S)
-SystemItem=<System>
-# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
-# deleting an existing HTML element attribute.n\n
-# #1 Name of the clicked attribute.n\n
-# examples: Delete Attribute \"onclick\"...n\n
-# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.n\n
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(beze jména)
-# that has been inherited. Used in the Style side panel (under HTML panel).n\n
-# examples: Inherited from table.tabViewn\n
-# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.n\n
-jsdIScript=jsdIScript %S
-# Allows to edit an existing CSS rule property.n\n
-# %S Name of the clicked propertyn\n
-# examples: Edit \"background-color\"...n\n
-ShowFullText=Zobrazit celý text
-html.option.tip.Show_Full_Text=Don't crop element contents
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.n\n
-# Allows to disable an existing CSS rule property.n\n
-# %S Name of the clicked propertyn\n
-ShowWhitespace=Zobrazit bílé znaky
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# examples: Disable \"background-color\"n\n
-# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.n\n
-ShowComments=Zobrazit komentáře
-html.option.tip.Show_Comments=Show comment nodes
-# Allows to delete an existing CSS rule property.n\n
-# %S Name of the clicked propertyn\n
-# examples: Delete \"background-color\"n\n
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# Console context menu labels.n\n
-# LOCALIZATION NOTE do not translate, no longer used(?)n\n
-# Breakpoints side paneln\n
-HighlightMutations=Zvýraznit změny
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# Script paneln\n
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):n\n
-# Labels used to describe layout properties a the selected HTML element.n\n
-ExpandMutations=Rozbalit změny
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# Used in the Layout side panel under HMTL panel.n\n
-# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side paneln\n
-# under HTML panel.n\n
-ScrollToMutations=Skrolovat na změny
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# Net paneln\n
-# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)n\n
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,n\n
-ShowQuickInfoBox=Zobrazit okno rychlých informací
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,n\n
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):n\n
-# Labels and tooltips for a headers displayed on top of the Net panel.n\n
-ShadeBoxModel=Stínovat box model
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Skrolovat do výhledu
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Nový atribut...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Smazat prvek
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Odstranit uzel
-html.Delete_Node=Delete the node from the tree
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.n\n
-quickInfo=Rychlé informace
-computedStyle=Vypočtený styl
-# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s contextn\n
-# menu for breaking on a XHR.n\n
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in then\n
-html.Break_On_Mutate=Zastavit při změně
-html.Disable_Break_On_Mutate=Zakázat zastavení při změně
-html.label.Break_On_Text_Change=Zastavit při změně textu
-html.label.HTML_Breakpoints=HTML breakpointy
-html.label.Break_On_Attribute_Change=Zastavit při změně atributu
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Zastavit při přidání nebo odebrání potomka
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Zastavit při odebrání elementu
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# Net panel\'s Headers tab (displayed if you expand a network request). The label is usedn\n
-# for a button that switches the view between \"show raw source code\" and \"pretty formated headern\n
-# values\".n\n
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutn\n
-html.label.Expand/Contract_All=Rozbalit/sbalit vše
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# a network request (displayed when a net panel entry is expanded). The content ofn\n
-# this tab displays sent data (related to a HTTP send method).n\n
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):n\n
-dom.label.breakOnPropertyChange=Zastavit při změně vlastnosti
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# Label used in the Net panel for detailed info about a network request (displayedn\n
-# when a net panel entry is expanded)n\n
-dom.disableBreakOnPropertyChange=Zakázat zastavení při změně vlastnosti
-dom.label.DOM_Breakpoints=DOM breakpointy
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net paneln\n
-# (expand an entry in the panel and select Headers tab).n\n
-# LOCALIZATION NOTE (plural.Limit_Exceeded): Semi-colon list of plural forms.n\n
-# A message displayed in the Net panel when some entries must be removed since maximum numbern\n
-EditAttribute=Upravit atribut \"%S\"...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# of entries has been reached.n\n
-# %S the number of entries removedn\n
-# example: Firebug\'s log limit has been reached. 150 entries not shown.n\n
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitn\n
-DeleteAttribute=Smazat atribut \"%S\"
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# has been reached. Informing the user what preferencee should be changed to modify the limit.n\n
-# %S Name of a preference.n\n
-# examples: In order to change the limit modify: firebug.extensions.console.logLimitn\n
-InheritedFrom=Zděděno od
-SothinkWarning=Doplněk Sothink SWF Catcher brání Firebugu ve správném fungování.<br><br>Pro nápovědu si prosím přečtěte <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">tuto část Často kladených otázek ohledně Firebugu</a>.
-# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.n\n
-# (result of javascript profiler tool). Represents a verb.n\n
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# LOCALIZATION NOTE (plural.Profile_Time): Semi-colon list of plural forms.n\n
-# Used as a caption for reported profile info (result of javascript profiler tool).n\n
-# #1 number of millisecondsn\n
-css.EmptyStyleSheet=Neexistují žádná pravidla. Můžete <a>vytvořit pravidlo</a>.
-# #2 number of calls (plural)n\n
-# example: (#1ms, #2 calls)n\n
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headern\n
-css.EmptyElementCSS=Tento element nemá žádná pravidla stylu. Můžete pro něj <a>vytvořit pravidlo</a>.
-EditStyle=Upravit styly prvku...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Nové pravidlo...
-css.tip.New_Rule=Add a new rule
-# (name of a report column). In order to see this, select the Console panel start profilingn\n
-# by clicking the Profile button and stop it by clicking again. The report is logged into then\n
-# console panel. Make sure Script panel is enabled.n\n
-# Support for clipboard actions.n\n
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptn\n
-# panel when clicking a function object.n\n
-# %S Name of the functionn\n
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Nová vlastnost...
-css.tip.New_Prop=Add a new property to the current rule
-# Log Calls to \"getData\"n\n
-# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console paneln\n
-# if specific method is not supported.n\n
-# %S Name of a not supported method.n\n
-EditProp=Upravit \"%S\"...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console paneln\n
-# when a not supported method is used on the command line.n\n
-# %S Name of a not supported method.n\n
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):n\n
-DisableProp=Zakázat \"%S\"
-css.tip.Disable_Prop=Disable the property "%S"
-# Tooltip for the \"Break on... \" button used when the Console panel is selected.n\n
-# Console strings used when JavaScript is not availablen\n
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,n\n
-# net.sizeinfo.Total_Received):n\n
-DeleteProp=Odstranit \"%S\"
-css.tip.Delete_Prop=Delete the property "%S"
-# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mousen\n
-BreakOnThisError=Zastavit při této chybě
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Zastavit při jakékoli chybě
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# over a Size displayed within the Net panel. \'Total Sent\' and \'Total Received\' info includesn\n
-# even sent and received heades size.n\n
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Netn\n
-TrackThrowCatch=Sledovat Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Pro názvy eval() používat poslední řádek zdroje
-UseMD5ForEvalName=Použít MD5 pro eval() jména
-# panel (inside the Post tab of an expanded request entry). The message informs the user thatn\n
-Breakpoints=Breakpointy
-ErrorBreakpoints=Chybové breakpointy
-LoggedFunctions=Logované funkce
-EnableAllBreakpoints=Povolit všechny breakpointy
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Zakázat všechny breakpointy
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Odstranit všechny breakpointy
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Tento breakpoint se aplikuje pouze tehdy, je-li tento výraz pravdivý:
-# posted data reached Firebug\'s size limit and only part of it is displayed in the UI.n\n
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache): A label for Net panel\'s option.n\n
-# LOCALIZATION NOTE (plural.Request_Count): Semi-colon list of plural forms.n\n
-breakpoints.Remove_Breakpoint=Remove Breakpoint
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Disable Breakpoint
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Enable Breakpoint
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# A label used in the Net panel. Displays number of HTTP requests executed by the current page.n\n
-# %S number of requestsn\n
-# example: 21 requestsn\n
-# LOCALIZATION NOTE (plural.Error_Count): Semi-colon list of plural forms.n\n
-# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.n\n
-script.balloon.Continue=Pokračovat
-script.balloon.Disable=Zakázat
-ScriptsFilterStatic=Zobrazovat statické skripty
-ScriptsFilterEval=Zobrazovat statické a eval skripty
-ScriptsFilterEvent=Zobrazovat statické a událostní skripty
-ScriptsFilterAll=Zobrazovat statické, eval a událostní skripty
-ScriptsFilterStaticShort=statické
-ScriptsFilterEvalShort=eval
-ScriptsFilterEventShort=události
-ScriptsFilterAllShort=všechny
-# %S number of errorsn\n
-# example: 111 Errorsn\n
-# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.n\n
-# With: the scope inside of the with(obj) {} statementn\n
-callstack.Expand_All=Expand All
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Collapse All
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };n\n
-# Window: the scope inside of a Javascript window object.n\n
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# Net panel timing info labelsn\n
-#A11y Chrome Labels (not visible, spoken by screen readers)n\n
-#A11y panelNode labels (not visible, spoken by screen readers)n\n
-#A11y Domplate labels (not visible, spoken by screen readers)n\n
-ShowUserProps=Zobrazit uživatelské vlastnosti
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Zobrazit uživatelské funkce
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Zobrazit vlastnosti DOM
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Zobrazit funkce DOM
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Zobrazit konstanty DOM
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=Pro tento objekt neexistují žádné vlastnosti.
-NewWatch=Sledování proměnné...
-# LOCALIZATION NOTEn\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-AddWatch=Přidat sledování
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# Describe contents of inline editor fieldsn\n
-# LOCALIZATION NOTE (a11y.labels.overridden):n\n
-CopySourceCode=Kopírovat zdroj
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Použijte #<číslo> pro přechod na řádku
-CopyValue=Kopírovat hodnotu
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Kopírovat název
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Kopírovat cestu
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Nová vlastnost...
-EditProperty=Upravit vlastnosti...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Upravit proměnnou...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Upravit sledování...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Smazat vlastnosti...
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Odstranit sledování
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# indicates style property is overridden by selector with higher specificityn\n
-SetBreakpoint=Nastavit breakpoint
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):n\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# Existence and state of a breakpointn\n
-EditBreakpointCondition=Upravit podmínku breakpointu
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=Pro tuto stránku nejsou nastaveny žádné breakpointy.
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# #1 Line number, #2 Function name, #3 File namen\n
-Only_Show_Applied_Styles=Zobrazit pouze použité styly
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a console panel search n\n
-Show_User_Agent_CSS=Zobrazovat User Agent CSS
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# #1 %S String key the use is looking for. #2 number of rows that contain the matched textn\n
-# examples: Match found for \"test\" in 17 log rowsn\n
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a script panel search n\n
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found inn\n
-# examples: Match found for \"window.alert\" on line 322 in utilities.jsn\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# Describes the match found when performing an HTML panel search (if it is found in an element node) n\n
-# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementn\n
-# examples: Match found for \"obj\" in object element at /html/body/object[2]n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlyn\n
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node) n\n
-# #1 Search string that was matched. #2 Attribute name #3 attribute value n\n
-# #4 the HTML element name containing. #5 XPATH string specifying the matched elementn\n
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# examples: Match found for \"abindex\" in tabindex=\"0\" in span element at /html/body/span[2]n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) n\n
-# #1 Search string that was matched. #2 element\'s text content n\n
-# #3 the HTML element name containing. #4 XPATH string specifying the matched elementn\n
-# examples: Match found for \"Firebug Rocks!\" in h2 element at /html/body/h2[2]n\n
-Expand_Shorthand_Properties=Rozdělit složené vlastnosti
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a CSS panel search (if it is found in a selector) n\n
-# #1 Search string that was matched. #2 selector in which the match was found n\n
-Sort_alphabetically=Abecedně setřídit
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# examples: Match found for \"main\" in #mainContent h2 {n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-Show_Mozilla_specific_styles=Zobrazit styly specifické pro Mozillu
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration) n\n
-# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to n\n
-# examples: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {n\n
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Seznam vyfiltrujete zmáčknutím libovolné klávesy
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a DOM panel search n\n
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=position
-LayoutAdjacent=adjacent
-position=position
-# #1 Search string that was matched. #2 DOM property in which the match was found n\n
-# examples: Match found for \"time\" in _starttime : 1257324992232 (Number)n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-ShowRulers=Zobrazit pravítka a vodítka
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Describes the match found when performing a Net panel search n\n
-Loading=Načítám...
-Headers=Hlavičky
-# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
-# #3 Column in which the match was found #4. Column value n\n
-net.tip.Clear=Clear the request list
-# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 msn\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
-net.header.Reset_Header=Obnovit hlavičky
-net.header.tip.Reset_Header=Reset the header display
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
-# #1 Search string that was matched. #2 Column value in which the match was found n\n
-# examples: Match found for \"05\" in net summary row: 4.05sn\n
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-net.header.URL=URL
-net.header.URL_Tooltip=Požadované URL a použitá HTTP metoda.
-net.header.Status=Status
-net.header.Status_Tooltip=Stav přijaté odpovědi.
-net.header.Domain=Doména
-net.header.Domain_Tooltip=Doména provedeného dotazu.
-net.header.Size=Velikost
-net.header.Size_Tooltip=Velikost získané odpovědi.
-net.header.Timeline=Časová osa
-net.header.Timeline_Tooltip=Detailní časové informace o odpovědi na požadavek.
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# Indicates that the searched string was not matched n\n
-net.label.XHR_Breakpoints=XHR breakpointy
-# %S Search string that was matched. n\n
-# examples: No matched found for \"wefkhwefkgwekhjgjh\"n\n
-net.label.Break_On_XHR=Zastavit při XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# Console messages.n\n
-# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
-# If Firebug is displayed in an external window (detached), but not active for then\n
-net.headers.view_source=zobrazit zdroj
-net.headers.pretty_print=formátovat výstup
-# currently selected Firefox tab, the following button label is used for ann\n
-net.filter.Media=Média
-# activation button.n\n
-# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
-# An error message displayed in the Script panel when a source can\'t be displayedn\n
-Post=Post
-Put=Put
-# for specific URL.n\n
-# examples: Failed to load source for: http://www.example.com/script.jsn\n
-# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
-Response=Odezva
-URLParameters=Parametry
-Cache=Vyrovnávací paměť
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration) n\n
-# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to n\n
-jsonviewer.sort=Setřídit podle klíče
-jsonviewer.do_not_sort=Netřídit
-# examples: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a DOM panel search n\n
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# #1 Search string that was matched. #2 DOM property in which the match was found n\n
-# examples: Match found for \"time\" in _starttime : 1257324992232 (Number)n\n
-RequestHeaders=Hlavičky požadavku
-ResponseHeaders=Hlavičky odezvy
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a Net panel search n\n
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
-# #3 Column in which the match was found #4. Column value n\n
-# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 msn\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-plural.Limit_Exceeded2=Byl dosažen limit Firebugu. %1$S záznam není zobrazen.;Byl dosažen limit Firebugu. %1$S záznamy nejsou zobrazeny.;Byl dosažen limit Firebugu. %1$S záznamů není zobrazeno.
-LimitPrefs=Předvolby
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
-# #1 Search string that was matched. #2 Column value in which the match was found n\n
-# examples: Match found for \"05\" in net summary row: 4.05sn\n
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
-LimitPrefsTitle=Pro změnu limitu upravte: %S
-Refresh=Obnovit
-panel.tip.Refresh=Refresh the panel display
-# visible in the UI, intended for screen readers.n\n
-# Indicates that the searched string was not matched n\n
-OpenInTab=Otevřít v novém panelu
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Otevřít odpověď v novém panelu
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# %S Search string that was matched. n\n
-# examples: No matched found for \"wefkhwefkgwekhjgjh\"n\n
-Profile=Profilování
-ProfilerStarted=Profilování běží. Opětovným stisknutím \"Profilování\" zobrazíte výsledky.
-# Console messages.n\n
-# LOCALIZATION NOTE (message.knownIssues40): A message displayed for Firefox 40 users showingn\n
-# a link to known issues (with Firefox 4.0) page.n\n
-# examples: See Firefox 4.0 known issues page: http://getfirebug.com/knownissuesn\n
-# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
-plural.Profile_Time2=(%1$Sms, %2$S volání);(%1$Sms, %2$S volání);(%1$Sms, %2$S volání)
-NothingToProfile=Není co profilovat.
-PercentTooltip=Procent času strávených touto funkcí.
-CallsHeaderTooltip=Počet volání.
-OwnTimeHeaderTooltip=Čas strávený ve funkci bez zanořených volání.
-TimeHeaderTooltip=Čas strávený ve funkci včetně zanořených volání.
-AvgHeaderTooltip=Průměrný čas, včetně volání funkcí.
-MinHeaderTooltip=Nejmenší čas, včetně volání funkcí.
-MaxHeaderTooltip=Největší čas, včetně volání funkcí.
-ProfileButton.Enabled.Tooltip=Profilování času vykonávání JavaScriptu.
-ProfileButton.Disabled.Tooltip=Profilování času vykonávání JavaScriptu (Panel Skripty musí být povolen).
-Function=Funkce
-Percent=Procent
-# If Firebug is displayed in an external window (detached), but not active for then\n
-# currently selected Firefox tab, the following button label is used for ann\n
-# activation button.n\n
-# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
-Calls=Volání
-OwnTime=Vlastní čas
-Time=Čas
-Avg=Průměr
-Min=Minimum
-Max=Maximum
-File=Soubor
-# An error message displayed in the Script panel when a source can\'t be displayedn\n
-Copy=Kopírovat
-Cut=Vyjmout
-Remove=Odstranit
-Delete=Delete
-Paste=Vložit
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Kopírovat innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Kopírovat XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Kopírovat cestu CSS
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# for specific URL.n\n
-# examples: Failed to load source for: http://www.example.com/script.jsn\n
-CopyLocation=Kopírovat umístění
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Kopírovat umístění i s parametry
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Kopírovat hlavičky požadavku
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Kopírovat hlavičky odezvy
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Kopírovat tělo odezvy
-net.tip.Copy_Response=Copy the response body to the clipboard
-# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,n\n
-CopyError=Kopírovat chybu
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.n\n
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):n\n
-CopySource=Kopírovat funkci
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# Tooltips for back/forward buttons on the Script panel toolbar.n\n
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):n\n
-# This message is displayed within the Script panel if debugger is inactive during page load.n\n
-# The suggestion message represents an advice how to solve the problem.n\n
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):n\n
-ShowCallsInConsole=Logovat volání funkce \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# This message is displayed within the Script panel if javascript is not enabled.n\n
-# The suggestion message represents an advice how to solve the problem.n\n
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed onn\n
-ShowEventsInConsole=Logovat události
-html.tip.Show_Events_In_Console=Log event information to the console
-# the Script panel if Javascript is disabled. This button allows to enable it.n\n
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):n\n
-panel.Enabled=Povoleno
-panel.tip.Enabled=Toggle the panel activation
-# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
-# The suggestion message represents an advice how to solve the problem.n\n
-# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):n\n
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
-# The suggestion message represents an advice how to solve the problem.n\n
-#firebug.dtdn\n
-#editors.dtdn\n
-console.MethodNotSupported=Konzola Firebugu nepodporuje \'%S\'
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
-# in the Console panel when the private browsing mode is on (in Firefox 4 it\'s Startn\n
-# Private Browsing mode)n\n
-commandline.MethodNotSupported=Příkazový řádek Firebugu nepodporuje \'%S\'
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
-# in a break notification balloon popup next to a checkbox.n\n
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
-commandline.CurrentWindow=Current window:
-# in a break notification balloon popup when break on debugger; keyword happens.n\n
-# The keyword can be disabled by creating a disabled breakpoint on the same line. n\n
-console.Disable_Break_On_All_Errors=Zakázat zastavení při všech chybách
-console.Break_On_All_Errors=Zastavit při všech chybách
-# LOCALIZATION NOTE (firebug.dom.noChildren): This message is displayed in the DOM paneln\n
-# in cases where there are no children objects and so nothing to display.n\n
-console.Break_On_This_Error=Zastavit při této chybě
-# LOCALIZATION NOTE (firebug.reps.more): This label is when displayed array/list hasn\n
-# more elements then it\'s displayed on the screen. \"...\" is automatically appended.n\n
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# example: more...n\n
-# LOCALIZATION NOTE (firebug.storage.totalItems): This label is used in the DOM paneln\n
-console.JSDisabledInFirefoxPrefs=JavaScript je zakázán v nastavení Firefoxu. Pokud chcete používat panel Konzole, tak prosím povolte tuto volbu pomocí \'Nástroje\' -> \'Možnosti\' -> \'Obsah\' -> \'Povolit JavaScript\'
-# for local/session/global storage. It\'s informing the user about number of items in the storage.n\n
-# #1 number of storage itemsn\n
-# example: 1 item in Storagen\n
-# example: 2 items in Storagen\n
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties): This label is used by console.tablen\n
-# method if an object is passed into it. Used in table header.n\n
-# LOCALIZATION NOTE (firebug.completion.empty): This label is used in the command linen\n
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# by auto-complete function. Displayed if there are no possible completions.n\n
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Pro XML stránky je zakázán příkazový řádek Firebugu. Můžete ho povolit <a>přepnutím do HTML</a>.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Tělo odpovědi
-net.sizeinfo.Post_Body=Tělo postu
-net.sizeinfo.Total_Sent=Celkem odesláno
-net.sizeinfo.Total_Received=Celkem přijato
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Panel Síť aktivován. Pokud je panel Síť neaktivní, žádné požadavky se nezobrazují.
-net.responseSizeLimitMessage=Bylo dosaženo limitu velikosti odpovědi. Kliknutím <a>sem</a> otevřete celou odpověď v novém panelu.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Byl dosažen limit velikosti požadavku Firebugu.
-net.Break_On_XHR=Pozastavit při XHR
-net.label.Parameters=Parametry
-net.label.Parts=Části
-net.label.Source=Zdroj
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Zakázat vyrovnávací paměť prohlížeče
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Zobrazit události vykreslení
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Zastavit na další
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Zobrazit HTTP hlavičky
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S požadavek;%1$S požadavky;%1$S požadavků
-FromCache=z vyrovnávací paměti
-StopLoading=Zastavit načítání
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Objemná data)
-ShowComputedStyle=Zobrazit vypočtené styly
-StyleGroup-text=Text
-StyleGroup-background=Pozadí
-StyleGroup-box=Box Model
-StyleGroup-layout=Rozvržení
-StyleGroup-other=Ostatní
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Kopírovat barvu
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Kopírovat umístění obrázku
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Otevřít obrázek v novém panelu
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Vynechat zásobník toolbaru
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Zkopírovat deklaraci pravidla
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Kopírovat deklaraci stylu
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S chyba;%1$S chyby;%1$S chyb
-moduleManager.title=Panel %S je zakázán
-moduleManager.desc3=Použijte ikonu Firebugu ve stavovém řádku pro povolení a zakázání všech panelů. Použijte nabídku panelu pro individuální ovládání:
-moduleManager.Enable=Povolit
-Suspend_Firebug=Vypnout Firebug
-Resume_Firebug=Obnovit Firebug
-Reset_Panels_To_Disabled=Znovu zakázat panely
-Open_Console=Otevřít konzolu
-Open_Console_Tooltip=Otevřít tracingovou konzolu pro Firebug
-Scope_Chain=Řetězec pohledů
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=Pohled \"With\"
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Pohled volání
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Pohled okna
-Logs=Logy
-Options=Předvolby
-Copy_Stack=Kopírovat zásobník
-Copy Exception=Kopírovat vyjímku
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blokující
-requestinfo.Resolving=DNS lookup
-requestinfo.Connecting=Připojování
-requestinfo.Sending=Posílání
-requestinfo.Waiting=Čekání
-requestinfo.Receiving=Přijímání
-requestinfo.ContentLoad=\'DOMContentLoaded\' (událost)
-requestinfo.WindowLoad=\'load\' (událost)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Vyhledávání Firebugu
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Další
-search.tip.Next=Search for the next match
-search.Previous=Předchozí
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Rozlišovat velikost písmen
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Více souborů
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Použít regulární výraz
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS selektor
-search.net.Headers=Hlavičky
-search.net.Parameters=Parametry
-search.net.Response_Bodies=Těla odpovědí
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Zachovat
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Zobrazit všechny záznamy logu
-firebug.console.Errors=Chyby
-firebug.console.Filter_by_Errors=Vyfiltrovat podle chyb
-firebug.console.Warnings=Varování
-firebug.console.Filter_by_Warnings=Vyfiltrovat podle varování
-firebug.console.Info=Informace
-firebug.console.Filter_by_Info=Vyfiltrovat podle informací
-firebug.console.Debug_Info=Ladící informace
-firebug.console.Filter_by_Debug_Info=Vyfiltrovat podle ladících informací
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Otevřít Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Schovat Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Povolit všechny panely
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Zakázat všechny panely
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Upravit klávesové zkratky
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Možnosti
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Povolit usnadnění přístupu
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Resetovat všechny nastavení Firebugu
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug online
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Zobrazit počet chyb
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Velikost textu
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Zvětšit velikost textu
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Zmenšit velikost textu
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Normální velikost textu
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Webové stránky Firebugu...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Dokumentace...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Klávesové zkratky...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Diskusní skupina...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Sledování chyb...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Přispět...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=O Firebugu...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Hledat
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Znovu zadat příkaz
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Přepnout prozkoumávání
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Přepnout okno rychlých informací
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Přepnout profilování
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Zaměřit příkazovou řádku
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Zaměřit vyhledávání
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Zaměřit editor hlídání
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Zaměřit umístění
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Další objekt
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Předchozí objekt
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Přizpůsobit klávesové zkratky
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Otevřít Firebug v novém okně
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Přepnout na levý panel
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Přepnout na pravý panel
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Otevřít Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Předchozí panel
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Vyčistit konzolu
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Otevřít konzolu
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Přejít zpět
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Přejít vpřed
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Zvětšit velikost textu
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Zmenšit velikost textu
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normální velikost textu
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Výběr panelu
-customizeShortcuts=Nastavení klávesových zkratek Firebugu
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=nástroje panelu
-a11y.labels.firebug_panels=panely Firebugu
-a11y.labels.firebug_side_panels=postranní panely Firebugu
-a11y.labels.firebug_window=okno Firebugu
-a11y.labels.firebug_status=stav Firebugu
-a11y.labels.reset=obnovit
-a11y.labels.reset_shortcut=obnovit zkratku %S
-aria.labels.inactive_panel=neaktivní panel
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=řádky logu
-a11y.labels.call_stack=zásobník volání
-a11y.labels.document_structure=struktura dokumentu
-a11y.labels.title_panel=panel %S
-a11y.labels.title_side_panel=postranní panel %S
-a11y.labels.cached=kešované
-aria.labels.stack_trace=stack trace
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=position
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=margin top
-a11y.layout.margin_right=margin right
-a11y.layout.margin_bottom=margin bottom
-a11y.layout.margin_left=margin left
-a11y.layout.border_top=border top
-a11y.layout.border_right=border right
-a11y.layout.border_bottom=border bottom
-a11y.layout.border_left=border left
-a11y.layout.padding_top=padding top
-a11y.layout.padding_right=padding right
-a11y.layout.padding_bottom=padding bottom
-a11y.layout.padding_left=padding left
-a11y.layout.top=top
-a11y.layout.right=right
-a11y.layout.bottom=bottom
-a11y.layout.left=left
-a11y.layout.width=width
-a11y.layout.height=height
-a11y.layout.size=size
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=Pro editaci jednotlivých hodnot stiskněte Enter následovaný Tabem
-a11y.labels.style_rules=pravidla stylu
-aria.labels.inherited_style_rules=zděděná pravidla stylu
-a11y.labels.computed_styles=vypočtené styly
-a11y.labels.dom_properties=vlastnosti DOMu
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=řádkový editor
-a11y.labels.value_for_attribute_in_element=hodnota atributu %S elementu %S
-a11y.labels.attribute_for_element=atribut elementu %S
-a11y.labels.text_contents_for_element=textový obsah elementu %S
-a11y.labels.defined_in_file=definováno v %S
-a11y.labels.declarations_for_selector=deklarace stylu selektoru \"%S\"
-a11y.labels.property_for_selector=CSS vlastnost selektoru: %S
-a11y.labels.value_property_in_selector=hodnota vlastnosti %S selektoru %S
-a11y.labels.css_selector=CSS selektor
-a11y.labels.source_code_for_file=zdrojový kód souboru %S
-a11y.labels.press_enter_to_add_new_watch_expression=pro přidání nového kukátka stiskněte Enter
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=přepsáno
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=obsahuje podmíněný breakpoint
-a11y.updates.has_disabled_break_point=obsahuje zakázaný breakpoint
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=skript zastaven na řádku %S v %S, soubor %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=shoda pro \"%S\" nalezena v %S řádcích logu
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=shoda pro \"%S\" nalezena na řádku %S v %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=shoda pro \"%S\" nalezena v elementu %S na cestě %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=shoda pro \"%S\" nalezena v atributu %S=%S elementu %S na cestě %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=shoda pro \"%S\" nalezena v textovém obsahu: %S elementu %S na cestě %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=shoda pro \"%S\" nalezena v selektoru %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=shoda pro \"%S\" nalezena v deklaraci stylu %S selektoru %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=shoda pro \"%S\" nalezena v DOM vlastnosti %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=shoda pro \"%S\" nalezena v %S, %S : %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=shoda pro \"%S\" nalezena na řádku přehledu sítě: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=pro \"%S\" nebyly nalezeny žádné shody
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Opravdu si přejete obnovit výchozí stav všech předvoleb Firebugu?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=Konzola musí být povolena
-warning.Command_line_blocked?=Příkazová řádka je blokována?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Znovu načtěte k aktivaci okna konzoly
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=Zdroj z tohoto URL není text
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Přejít zpět na tento panel
-firebug.history.Stay_on_this_panel=Zůstat na tomto panelu
-firebug.history.Go_forward_to_this_panel=Přejít vpřed na tento panel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Přejít zpět
-firebug.history.Go_forward=Přejít vpřed
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Panel Skripty byl neaktivní při nahrávání stránky
-script.suggestion.inactive_during_page_load2=Všechny zdroje zobrazíte <a>obnovením</a>
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=JavaScript není povolen
-script.suggestion.javascript_not_enabled=Viz Firefox > Nástroje > Možnosti > Obsah > Povolit JavaScript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Povolit JavaScript a obnovit
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Byly vyfiltrovány všechny skripty
-script.suggestion.all_scripts_filtered=Viz nastavení filtru skriptů na panelu nástrojů nebo \"volba zobrazit zdroje Chrome\"
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=Na této stránce není žádný JavaScript
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Debugger už je aktivní
-script.suggestion.debugger_active=Debugger je zrovna zastaven na breakpointu na jiné stránce.
-script.button.Go_to_that_page=Přejít na tuto stránku
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Zavřít
-firebug.View=Zobrazit
-firebug.Help=Nápověda
-firebug.Run=Spustit
-firebug.Copy=Kopírovat
-firebug.History=Historie
-firebug.Run_the_entered_command=Spustit zadaný příkaz
-firebug.Clear_the_Command_Editor=Vyčistit editor příkazu
-firebug.Copy_the_script_as_a_bookmarklet=Zkopírovat skript jako bookmarklet
-firebug.Insert_a_previously_entered_command=Vložit naposledy zadaný příkaz
-firebug.AlwaysOpenInWindow=Vždy otevírat v novém okně
-firebug.OpenWith=Otevřít v editoru
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Weby...
-firebug.Configure_Editors=Konfigurovat editory
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Zkoumat
-firebug.InspectElement=Zkoumat prvek
-firebug.InspectElementWithFirebug=Prozkoumat prvek ve Firebugu
-firebug.BreakOnErrors=Zastavit při chybě
-firebug.InspectTooltip=Kliknutím na prvek na stránce jej můžete prozkoumat
-firebug.EditHTMLTooltip=Upravit vybrané HTML
-firebug.Profile=Profilovat
-firebug.Clear=Vyčistit
-firebug.ClearConsole=Vyčistit konzolu
-firebug.ClearTooltip=Smaže vše z konzole
-firebug.All=Vše
-firebug.Images=Obrázky
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Konfigurované editory Firebugu
-editors.Editor=Editor
-editors.Executable=Spouštěcí soubor
-editors.Launch_Arguments=Argumenty pro spuštění
-editors.Add=Přidat
-editors.Remove=Odebrat
-editors.Change=Změnit
-editors.Move_Up=Přesunout výš
-editors.Close=Zavřít
-editors.Browse=Procházet...
-changeEditor.Editor_Configuration=Konfigurace editoru
-changeEditor.Name=Název:
-changeEditor.Executable=Spustit:
-changeEditor.CmdLine=Argumenty:
-changeEditor.Supplied_arguments=Argumenty předávané Firebugem:
-changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> URL souboru (pokud %url chybí, tak se místo toho přidá %file)
-changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> Cesta k lokálnímu souboru (nebo dočasné kopii)
-changeEditor.Line_number=<label class=\'text-link\'>%line</label> Číslo řádku (pokud je k dispozici)
-changeEditor.Invalid_Application_Path=Neplatná cesta k aplikaci
-changeEditor.Application_does_not_exist=Uvedená aplikace neexistuje!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Upravit
-firebug.css.sourceEdit=Editovat zdrojový kód
-firebug.css.sourceEdit.tooltip=Editace stylu nahraného prohlížečem
-firebug.css.liveEdit=Editovat živý kód
-firebug.css.liveEdit.tooltip=Editace CSS získaného z prohlížeče
-firebug.EditCSSTooltip=Upravit tuto tabulku stylů
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Při anonymním prohlížení se servery nepamatují
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Zobrazit oznámení o zastavení
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=Upozornění o přerušeních můžete zakázat/povolit v <a>menu záložky panelu</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Kliknutí na tlačítko \'Zakázat\' přebije \'debugger\' zakázaným breakpointem.
-firebug.bon.tooltip.disableDebuggerKeyword2=Vytvoří zakázaný breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=Neexistují objekty potomků
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=více
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S položka ve Storage;%1$S položky ve Storage;%1$S položek ve Storage
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Vlastnosti objektu
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(žádná doplnění)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=Objekt URL byl nejspíš zakázán metodou revokeObjectURL.
-firebug.failedToPreviewImageURL=Nepodařilo se nahrát danou URL.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.n\n
+# %S Title of the associated web page.n\n
+# examples: Firebug - Googlen\n
+WindowTitle=Firebug - %S
+# Panel titlesn\n
+Panel-console=Konzole
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Síť
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Skripty
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Styly
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Vypočtené
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Rozvržení
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Sledování
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Breakpointy
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Zásobník
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Pohledy
+firebug.DetachFirebug=Otevřít Firebug v novém okně
+firebug.AttachFirebug=Připojit Firbug k oknu prohlížeče
+# LOCALIZATION NOTE (plural.Total_Firebugs): Semi-colon list of plural forms.n\n
+# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsn\n
+# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.n\n
+# Displays number of pages with Firebug activated.n\n
+pluralRule=8
+# %S number of Firebugs activatedn\n
+# example: 2 Total Firebugsn\n
+# Console panel options.n\n
+# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,n\n
+# message, etc. within a source of a web page.n\n
+# #1 File name, #2 Line numbern\n
+plural.Total_Firebugs2=%1$S Firebug celkem;%1$S Firebugy celkem;%1$S Firebugů celkem
+# examples: somePage.htm (line 64)n\n
+# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.n\n
+# For example, right clicking on an element in the HTML panel offers an action to inspectn\n
+startbutton.tip.deactivated=Deactivated
+# clicked element in the DOM panel (tab).n\n
+# #1 Target panel titlen\n
+# examples: Inspect in DOM Tabn\n
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugn\n
+# do not translate.n\n
+panel.status=%S: %S
+inBrowser=V prohlížeči
+minimized=Minimalizováno
+enablement.for_all_pages=pro všechny stránky
+enablement.on=Zapnuto
+enablement.off=Vypnuto
+enablement.Panel_activation_status=Panel activation status:
+none=Zavřeno
+Firebug_-_inactive_for_current_website=Firebug - pro aktuální stránky neaktivní
+Activate_Firebug_for_the_current_website=Aktivovat Firebug pro aktuální stránky
+Minimized=Minimalizováno
+Minimize_Firebug=Minimalizovat Firebug
+On_for_all_web_pages=Zapnout pro všechny stránky
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Smazat seznam aktivací
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI Location
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# #1 jsdIScript.tagn\n
+# HTML panel context menu items.n\n
+firebug_options=Možnosti Firebugu
+# Quick Info Boxn\n
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumen\n
+firebug.Show_All_Panels=Zobrazit všechny panely
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# button that are used when the HTML panel is currently selected. The button allows stoppingn\n
+ShowJavaScriptErrors=Zobrazovat chyby v JavaScriptu
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Zobrazovat varování v JavaScriptu
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Zobrazovat chyby v CSS
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Zobrazovat stack trace s chybami
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Zobrazovat XMLHttpRequesty
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Zobrazovat chyby v Chrome
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Zobrazovat zprávy z Chrome
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Zobrazovat vnější chyby
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Zobrazit chyby sítě
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Zobrazovat přísná varování (vliv na výkon)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Historie příkazů
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Zobrazit okno se seznamem doplnění
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Selhání asertace
+# JS execution when DOM of the current page is modified.n\n
+# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
+# editing an existing HTML element attribute.n\n
+# #1 Name of the clicked attribute.n\n
+# examples: Edit Attribute \"onclick\"...n\n
+Line=%S (řádek %S)
+LineAndCol=%S (line %S, col %S)
+InstanceLine=%S #%S (řádek %S)
+StackItem=%S (%S řádek %S)
+SystemItem=<System>
+# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
+# deleting an existing HTML element attribute.n\n
+# #1 Name of the clicked attribute.n\n
+# examples: Delete Attribute \"onclick\"...n\n
+# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.n\n
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(beze jména)
+# that has been inherited. Used in the Style side panel (under HTML panel).n\n
+# examples: Inherited from table.tabViewn\n
+# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.n\n
+jsdIScript=jsdIScript %S
+# Allows to edit an existing CSS rule property.n\n
+# %S Name of the clicked propertyn\n
+# examples: Edit \"background-color\"...n\n
+ShowFullText=Zobrazit celý text
+html.option.tip.Show_Full_Text=Don't crop element contents
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.n\n
+# Allows to disable an existing CSS rule property.n\n
+# %S Name of the clicked propertyn\n
+ShowWhitespace=Zobrazit bílé znaky
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# examples: Disable \"background-color\"n\n
+# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.n\n
+ShowComments=Zobrazit komentáře
+html.option.tip.Show_Comments=Show comment nodes
+# Allows to delete an existing CSS rule property.n\n
+# %S Name of the clicked propertyn\n
+# examples: Delete \"background-color\"n\n
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# Console context menu labels.n\n
+# LOCALIZATION NOTE do not translate, no longer used(?)n\n
+# Breakpoints side paneln\n
+HighlightMutations=Zvýraznit změny
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# Script paneln\n
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):n\n
+# Labels used to describe layout properties a the selected HTML element.n\n
+ExpandMutations=Rozbalit změny
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# Used in the Layout side panel under HMTL panel.n\n
+# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side paneln\n
+# under HTML panel.n\n
+ScrollToMutations=Skrolovat na změny
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# Net paneln\n
+# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)n\n
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,n\n
+ShowQuickInfoBox=Zobrazit okno rychlých informací
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,n\n
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):n\n
+# Labels and tooltips for a headers displayed on top of the Net panel.n\n
+ShadeBoxModel=Stínovat box model
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Skrolovat do výhledu
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Nový atribut...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Smazat prvek
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Odstranit uzel
+html.Delete_Node=Delete the node from the tree
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.n\n
+quickInfo=Rychlé informace
+computedStyle=Vypočtený styl
+# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s contextn\n
+# menu for breaking on a XHR.n\n
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in then\n
+html.Break_On_Mutate=Zastavit při změně
+html.Disable_Break_On_Mutate=Zakázat zastavení při změně
+html.label.Break_On_Text_Change=Zastavit při změně textu
+html.label.HTML_Breakpoints=HTML breakpointy
+html.label.Break_On_Attribute_Change=Zastavit při změně atributu
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Zastavit při přidání nebo odebrání potomka
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Zastavit při odebrání elementu
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# Net panel\'s Headers tab (displayed if you expand a network request). The label is usedn\n
+# for a button that switches the view between \"show raw source code\" and \"pretty formated headern\n
+# values\".n\n
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutn\n
+html.label.Expand/Contract_All=Rozbalit/sbalit vše
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# a network request (displayed when a net panel entry is expanded). The content ofn\n
+# this tab displays sent data (related to a HTTP send method).n\n
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):n\n
+dom.label.breakOnPropertyChange=Zastavit při změně vlastnosti
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# Label used in the Net panel for detailed info about a network request (displayedn\n
+# when a net panel entry is expanded)n\n
+dom.disableBreakOnPropertyChange=Zakázat zastavení při změně vlastnosti
+dom.label.DOM_Breakpoints=DOM breakpointy
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net paneln\n
+# (expand an entry in the panel and select Headers tab).n\n
+# LOCALIZATION NOTE (plural.Limit_Exceeded): Semi-colon list of plural forms.n\n
+# A message displayed in the Net panel when some entries must be removed since maximum numbern\n
+EditAttribute=Upravit atribut \"%S\"...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# of entries has been reached.n\n
+# %S the number of entries removedn\n
+# example: Firebug\'s log limit has been reached. 150 entries not shown.n\n
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitn\n
+DeleteAttribute=Smazat atribut \"%S\"
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# has been reached. Informing the user what preferencee should be changed to modify the limit.n\n
+# %S Name of a preference.n\n
+# examples: In order to change the limit modify: firebug.extensions.console.logLimitn\n
+InheritedFrom=Zděděno od
+SothinkWarning=Doplněk Sothink SWF Catcher brání Firebugu ve správném fungování.<br><br>Pro nápovědu si prosím přečtěte <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">tuto část Často kladených otázek ohledně Firebugu</a>.
+# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.n\n
+# (result of javascript profiler tool). Represents a verb.n\n
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# LOCALIZATION NOTE (plural.Profile_Time): Semi-colon list of plural forms.n\n
+# Used as a caption for reported profile info (result of javascript profiler tool).n\n
+# #1 number of millisecondsn\n
+css.EmptyStyleSheet=Neexistují žádná pravidla. Můžete <a>vytvořit pravidlo</a>.
+# #2 number of calls (plural)n\n
+# example: (#1ms, #2 calls)n\n
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headern\n
+css.EmptyElementCSS=Tento element nemá žádná pravidla stylu. Můžete pro něj <a>vytvořit pravidlo</a>.
+EditStyle=Upravit styly prvku...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Nové pravidlo...
+css.tip.New_Rule=Add a new rule
+# (name of a report column). In order to see this, select the Console panel start profilingn\n
+# by clicking the Profile button and stop it by clicking again. The report is logged into then\n
+# console panel. Make sure Script panel is enabled.n\n
+# Support for clipboard actions.n\n
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptn\n
+# panel when clicking a function object.n\n
+# %S Name of the functionn\n
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Nová vlastnost...
+css.tip.New_Prop=Add a new property to the current rule
+# Log Calls to \"getData\"n\n
+# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console paneln\n
+# if specific method is not supported.n\n
+# %S Name of a not supported method.n\n
+EditProp=Upravit \"%S\"...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console paneln\n
+# when a not supported method is used on the command line.n\n
+# %S Name of a not supported method.n\n
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):n\n
+DisableProp=Zakázat \"%S\"
+css.tip.Disable_Prop=Disable the property "%S"
+# Tooltip for the \"Break on... \" button used when the Console panel is selected.n\n
+# Console strings used when JavaScript is not availablen\n
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,n\n
+# net.sizeinfo.Total_Received):n\n
+DeleteProp=Odstranit \"%S\"
+css.tip.Delete_Prop=Delete the property "%S"
+# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mousen\n
+BreakOnThisError=Zastavit při této chybě
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Zastavit při jakékoli chybě
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# over a Size displayed within the Net panel. \'Total Sent\' and \'Total Received\' info includesn\n
+# even sent and received heades size.n\n
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Netn\n
+TrackThrowCatch=Sledovat Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Pro názvy eval() používat poslední řádek zdroje
+UseMD5ForEvalName=Použít MD5 pro eval() jména
+# panel (inside the Post tab of an expanded request entry). The message informs the user thatn\n
+Breakpoints=Breakpointy
+ErrorBreakpoints=Chybové breakpointy
+LoggedFunctions=Logované funkce
+EnableAllBreakpoints=Povolit všechny breakpointy
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Zakázat všechny breakpointy
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Odstranit všechny breakpointy
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Tento breakpoint se aplikuje pouze tehdy, je-li tento výraz pravdivý:
+# posted data reached Firebug\'s size limit and only part of it is displayed in the UI.n\n
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache): A label for Net panel\'s option.n\n
+# LOCALIZATION NOTE (plural.Request_Count): Semi-colon list of plural forms.n\n
+breakpoints.Remove_Breakpoint=Remove Breakpoint
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Disable Breakpoint
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Enable Breakpoint
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# A label used in the Net panel. Displays number of HTTP requests executed by the current page.n\n
+# %S number of requestsn\n
+# example: 21 requestsn\n
+# LOCALIZATION NOTE (plural.Error_Count): Semi-colon list of plural forms.n\n
+# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.n\n
+script.balloon.Continue=Pokračovat
+script.balloon.Disable=Zakázat
+ScriptsFilterStatic=Zobrazovat statické skripty
+ScriptsFilterEval=Zobrazovat statické a eval skripty
+ScriptsFilterEvent=Zobrazovat statické a událostní skripty
+ScriptsFilterAll=Zobrazovat statické, eval a událostní skripty
+ScriptsFilterStaticShort=statické
+ScriptsFilterEvalShort=eval
+ScriptsFilterEventShort=události
+ScriptsFilterAllShort=všechny
+# %S number of errorsn\n
+# example: 111 Errorsn\n
+# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.n\n
+# With: the scope inside of the with(obj) {} statementn\n
+callstack.Expand_All=Expand All
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Collapse All
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };n\n
+# Window: the scope inside of a Javascript window object.n\n
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# Net panel timing info labelsn\n
+#A11y Chrome Labels (not visible, spoken by screen readers)n\n
+#A11y panelNode labels (not visible, spoken by screen readers)n\n
+#A11y Domplate labels (not visible, spoken by screen readers)n\n
+ShowUserProps=Zobrazit uživatelské vlastnosti
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Zobrazit uživatelské funkce
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Zobrazit vlastnosti DOM
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Zobrazit funkce DOM
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Zobrazit konstanty DOM
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=Pro tento objekt neexistují žádné vlastnosti.
+NewWatch=Sledování proměnné...
+# LOCALIZATION NOTEn\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+AddWatch=Přidat sledování
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# Describe contents of inline editor fieldsn\n
+# LOCALIZATION NOTE (a11y.labels.overridden):n\n
+CopySourceCode=Kopírovat zdroj
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Použijte #<číslo> pro přechod na řádku
+CopyValue=Kopírovat hodnotu
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Kopírovat název
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Kopírovat cestu
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Nová vlastnost...
+EditProperty=Upravit vlastnosti...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Upravit proměnnou...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Upravit sledování...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Smazat vlastnosti...
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Odstranit sledování
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# indicates style property is overridden by selector with higher specificityn\n
+SetBreakpoint=Nastavit breakpoint
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):n\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# Existence and state of a breakpointn\n
+EditBreakpointCondition=Upravit podmínku breakpointu
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=Pro tuto stránku nejsou nastaveny žádné breakpointy.
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# #1 Line number, #2 Function name, #3 File namen\n
+Only_Show_Applied_Styles=Zobrazit pouze použité styly
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a console panel search n\n
+Show_User_Agent_CSS=Zobrazovat User Agent CSS
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# #1 %S String key the use is looking for. #2 number of rows that contain the matched textn\n
+# examples: Match found for \"test\" in 17 log rowsn\n
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a script panel search n\n
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found inn\n
+# examples: Match found for \"window.alert\" on line 322 in utilities.jsn\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# Describes the match found when performing an HTML panel search (if it is found in an element node) n\n
+# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementn\n
+# examples: Match found for \"obj\" in object element at /html/body/object[2]n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlyn\n
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node) n\n
+# #1 Search string that was matched. #2 Attribute name #3 attribute value n\n
+# #4 the HTML element name containing. #5 XPATH string specifying the matched elementn\n
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# examples: Match found for \"abindex\" in tabindex=\"0\" in span element at /html/body/span[2]n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) n\n
+# #1 Search string that was matched. #2 element\'s text content n\n
+# #3 the HTML element name containing. #4 XPATH string specifying the matched elementn\n
+# examples: Match found for \"Firebug Rocks!\" in h2 element at /html/body/h2[2]n\n
+Expand_Shorthand_Properties=Rozdělit složené vlastnosti
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a CSS panel search (if it is found in a selector) n\n
+# #1 Search string that was matched. #2 selector in which the match was found n\n
+Sort_alphabetically=Abecedně setřídit
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# examples: Match found for \"main\" in #mainContent h2 {n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+Show_Mozilla_specific_styles=Zobrazit styly specifické pro Mozillu
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration) n\n
+# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to n\n
+# examples: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {n\n
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Seznam vyfiltrujete zmáčknutím libovolné klávesy
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a DOM panel search n\n
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=position
+LayoutAdjacent=adjacent
+position=position
+# #1 Search string that was matched. #2 DOM property in which the match was found n\n
+# examples: Match found for \"time\" in _starttime : 1257324992232 (Number)n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+ShowRulers=Zobrazit pravítka a vodítka
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Describes the match found when performing a Net panel search n\n
+Loading=Načítám...
+Headers=Hlavičky
+# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
+# #3 Column in which the match was found #4. Column value n\n
+net.tip.Clear=Clear the request list
+# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 msn\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
+net.header.Reset_Header=Obnovit hlavičky
+net.header.tip.Reset_Header=Reset the header display
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
+# #1 Search string that was matched. #2 Column value in which the match was found n\n
+# examples: Match found for \"05\" in net summary row: 4.05sn\n
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+net.header.URL=URL
+net.header.URL_Tooltip=Požadované URL a použitá HTTP metoda.
+net.header.Status=Status
+net.header.Status_Tooltip=Stav přijaté odpovědi.
+net.header.Domain=Doména
+net.header.Domain_Tooltip=Doména provedeného dotazu.
+net.header.Size=Velikost
+net.header.Size_Tooltip=Velikost získané odpovědi.
+net.header.Timeline=Časová osa
+net.header.Timeline_Tooltip=Detailní časové informace o odpovědi na požadavek.
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# Indicates that the searched string was not matched n\n
+net.label.XHR_Breakpoints=XHR breakpointy
+# %S Search string that was matched. n\n
+# examples: No matched found for \"wefkhwefkgwekhjgjh\"n\n
+net.label.Break_On_XHR=Zastavit při XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# Console messages.n\n
+# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
+# If Firebug is displayed in an external window (detached), but not active for then\n
+net.headers.view_source=zobrazit zdroj
+net.headers.pretty_print=formátovat výstup
+# currently selected Firefox tab, the following button label is used for ann\n
+net.filter.Media=Média
+# activation button.n\n
+# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
+# An error message displayed in the Script panel when a source can\'t be displayedn\n
+Post=Post
+Put=Put
+# for specific URL.n\n
+# examples: Failed to load source for: http://www.example.com/script.jsn\n
+# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
+Response=Odezva
+URLParameters=Parametry
+Cache=Vyrovnávací paměť
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration) n\n
+# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to n\n
+jsonviewer.sort=Setřídit podle klíče
+jsonviewer.do_not_sort=Netřídit
+# examples: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a DOM panel search n\n
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# #1 Search string that was matched. #2 DOM property in which the match was found n\n
+# examples: Match found for \"time\" in _starttime : 1257324992232 (Number)n\n
+RequestHeaders=Hlavičky požadavku
+ResponseHeaders=Hlavičky odezvy
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a Net panel search n\n
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
+# #3 Column in which the match was found #4. Column value n\n
+# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 msn\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+plural.Limit_Exceeded2=Byl dosažen limit Firebugu. %1$S záznam není zobrazen.;Byl dosažen limit Firebugu. %1$S záznamy nejsou zobrazeny.;Byl dosažen limit Firebugu. %1$S záznamů není zobrazeno.
+LimitPrefs=Předvolby
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
+# #1 Search string that was matched. #2 Column value in which the match was found n\n
+# examples: Match found for \"05\" in net summary row: 4.05sn\n
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
+LimitPrefsTitle=Pro změnu limitu upravte: %S
+Refresh=Obnovit
+panel.tip.Refresh=Refresh the panel display
+# visible in the UI, intended for screen readers.n\n
+# Indicates that the searched string was not matched n\n
+OpenInTab=Otevřít v novém panelu
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Otevřít odpověď v novém panelu
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# %S Search string that was matched. n\n
+# examples: No matched found for \"wefkhwefkgwekhjgjh\"n\n
+Profile=Profilování
+ProfilerStarted=Profilování běží. Opětovným stisknutím \"Profilování\" zobrazíte výsledky.
+# Console messages.n\n
+# LOCALIZATION NOTE (message.knownIssues40): A message displayed for Firefox 40 users showingn\n
+# a link to known issues (with Firefox 4.0) page.n\n
+# examples: See Firefox 4.0 known issues page: http://getfirebug.com/knownissuesn\n
+# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
+plural.Profile_Time2=(%1$Sms, %2$S volání);(%1$Sms, %2$S volání);(%1$Sms, %2$S volání)
+NothingToProfile=Není co profilovat.
+PercentTooltip=Procent času strávených touto funkcí.
+CallsHeaderTooltip=Počet volání.
+OwnTimeHeaderTooltip=Čas strávený ve funkci bez zanořených volání.
+TimeHeaderTooltip=Čas strávený ve funkci včetně zanořených volání.
+AvgHeaderTooltip=Průměrný čas, včetně volání funkcí.
+MinHeaderTooltip=Nejmenší čas, včetně volání funkcí.
+MaxHeaderTooltip=Největší čas, včetně volání funkcí.
+ProfileButton.Enabled.Tooltip=Profilování času vykonávání JavaScriptu.
+ProfileButton.Disabled.Tooltip=Profilování času vykonávání JavaScriptu (Panel Skripty musí být povolen).
+Function=Funkce
+Percent=Procent
+# If Firebug is displayed in an external window (detached), but not active for then\n
+# currently selected Firefox tab, the following button label is used for ann\n
+# activation button.n\n
+# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
+Calls=Volání
+OwnTime=Vlastní čas
+Time=Čas
+Avg=Průměr
+Min=Minimum
+Max=Maximum
+File=Soubor
+# An error message displayed in the Script panel when a source can\'t be displayedn\n
+Copy=Kopírovat
+Cut=Vyjmout
+Remove=Odstranit
+Delete=Delete
+Paste=Vložit
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Kopírovat innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Kopírovat XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Kopírovat cestu CSS
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# for specific URL.n\n
+# examples: Failed to load source for: http://www.example.com/script.jsn\n
+CopyLocation=Kopírovat umístění
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Kopírovat umístění i s parametry
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Kopírovat hlavičky požadavku
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Kopírovat hlavičky odezvy
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Kopírovat tělo odezvy
+net.tip.Copy_Response=Copy the response body to the clipboard
+# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,n\n
+CopyError=Kopírovat chybu
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.n\n
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):n\n
+CopySource=Kopírovat funkci
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# Tooltips for back/forward buttons on the Script panel toolbar.n\n
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):n\n
+# This message is displayed within the Script panel if debugger is inactive during page load.n\n
+# The suggestion message represents an advice how to solve the problem.n\n
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):n\n
+ShowCallsInConsole=Logovat volání funkce \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# This message is displayed within the Script panel if javascript is not enabled.n\n
+# The suggestion message represents an advice how to solve the problem.n\n
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed onn\n
+ShowEventsInConsole=Logovat události
+html.tip.Show_Events_In_Console=Log event information to the console
+# the Script panel if Javascript is disabled. This button allows to enable it.n\n
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):n\n
+panel.Enabled=Povoleno
+panel.tip.Enabled=Toggle the panel activation
+# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
+# The suggestion message represents an advice how to solve the problem.n\n
+# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):n\n
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
+# The suggestion message represents an advice how to solve the problem.n\n
+#firebug.dtdn\n
+#editors.dtdn\n
+console.MethodNotSupported=Konzola Firebugu nepodporuje \'%S\'
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
+# in the Console panel when the private browsing mode is on (in Firefox 4 it\'s Startn\n
+# Private Browsing mode)n\n
+commandline.MethodNotSupported=Příkazový řádek Firebugu nepodporuje \'%S\'
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
+# in a break notification balloon popup next to a checkbox.n\n
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
+commandline.CurrentWindow=Current window:
+# in a break notification balloon popup when break on debugger; keyword happens.n\n
+# The keyword can be disabled by creating a disabled breakpoint on the same line. n\n
+console.Disable_Break_On_All_Errors=Zakázat zastavení při všech chybách
+console.Break_On_All_Errors=Zastavit při všech chybách
+# LOCALIZATION NOTE (firebug.dom.noChildren): This message is displayed in the DOM paneln\n
+# in cases where there are no children objects and so nothing to display.n\n
+console.Break_On_This_Error=Zastavit při této chybě
+# LOCALIZATION NOTE (firebug.reps.more): This label is when displayed array/list hasn\n
+# more elements then it\'s displayed on the screen. \"...\" is automatically appended.n\n
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# example: more...n\n
+# LOCALIZATION NOTE (firebug.storage.totalItems): This label is used in the DOM paneln\n
+console.JSDisabledInFirefoxPrefs=JavaScript je zakázán v nastavení Firefoxu. Pokud chcete používat panel Konzole, tak prosím povolte tuto volbu pomocí \'Nástroje\' -> \'Možnosti\' -> \'Obsah\' -> \'Povolit JavaScript\'
+# for local/session/global storage. It\'s informing the user about number of items in the storage.n\n
+# #1 number of storage itemsn\n
+# example: 1 item in Storagen\n
+# example: 2 items in Storagen\n
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties): This label is used by console.tablen\n
+# method if an object is passed into it. Used in table header.n\n
+# LOCALIZATION NOTE (firebug.completion.empty): This label is used in the command linen\n
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# by auto-complete function. Displayed if there are no possible completions.n\n
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Pro XML stránky je zakázán příkazový řádek Firebugu. Můžete ho povolit <a>přepnutím do HTML</a>.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Tělo odpovědi
+net.sizeinfo.Post_Body=Tělo postu
+net.sizeinfo.Total_Sent=Celkem odesláno
+net.sizeinfo.Total_Received=Celkem přijato
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Panel Síť aktivován. Pokud je panel Síť neaktivní, žádné požadavky se nezobrazují.
+net.responseSizeLimitMessage=Bylo dosaženo limitu velikosti odpovědi. Kliknutím <a>sem</a> otevřete celou odpověď v novém panelu.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Byl dosažen limit velikosti požadavku Firebugu.
+net.Break_On_XHR=Pozastavit při XHR
+net.label.Parameters=Parametry
+net.label.Parts=Části
+net.label.Source=Zdroj
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Zakázat vyrovnávací paměť prohlížeče
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Zobrazit události vykreslení
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Zastavit na další
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Zobrazit HTTP hlavičky
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S požadavek;%1$S požadavky;%1$S požadavků
+FromCache=z vyrovnávací paměti
+StopLoading=Zastavit načítání
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Objemná data)
+ShowComputedStyle=Zobrazit vypočtené styly
+StyleGroup-text=Text
+StyleGroup-background=Pozadí
+StyleGroup-box=Box Model
+StyleGroup-layout=Rozvržení
+StyleGroup-other=Ostatní
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Kopírovat barvu
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Kopírovat umístění obrázku
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Otevřít obrázek v novém panelu
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Vynechat zásobník toolbaru
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Zkopírovat deklaraci pravidla
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Kopírovat deklaraci stylu
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S chyba;%1$S chyby;%1$S chyb
+moduleManager.title=Panel %S je zakázán
+moduleManager.desc3=Použijte ikonu Firebugu ve stavovém řádku pro povolení a zakázání všech panelů. Použijte nabídku panelu pro individuální ovládání:
+moduleManager.Enable=Povolit
+Suspend_Firebug=Vypnout Firebug
+Resume_Firebug=Obnovit Firebug
+Reset_Panels_To_Disabled=Znovu zakázat panely
+Open_Console=Otevřít konzolu
+Open_Console_Tooltip=Otevřít tracingovou konzolu pro Firebug
+Scope_Chain=Řetězec pohledů
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=Pohled \"With\"
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Pohled volání
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Pohled okna
+Logs=Logy
+Options=Předvolby
+Copy_Stack=Kopírovat zásobník
+Copy Exception=Kopírovat vyjímku
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blokující
+requestinfo.Resolving=DNS lookup
+requestinfo.Connecting=Připojování
+requestinfo.Sending=Posílání
+requestinfo.Waiting=Čekání
+requestinfo.Receiving=Přijímání
+requestinfo.ContentLoad=\'DOMContentLoaded\' (událost)
+requestinfo.WindowLoad=\'load\' (událost)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Vyhledávání Firebugu
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Další
+search.tip.Next=Search for the next match
+search.Previous=Předchozí
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Rozlišovat velikost písmen
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Více souborů
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Použít regulární výraz
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS selektor
+search.net.Headers=Hlavičky
+search.net.Parameters=Parametry
+search.net.Response_Bodies=Těla odpovědí
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Zachovat
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Zobrazit všechny záznamy logu
+firebug.console.Errors=Chyby
+firebug.console.Filter_by_Errors=Vyfiltrovat podle chyb
+firebug.console.Warnings=Varování
+firebug.console.Filter_by_Warnings=Vyfiltrovat podle varování
+firebug.console.Info=Informace
+firebug.console.Filter_by_Info=Vyfiltrovat podle informací
+firebug.console.Debug_Info=Ladící informace
+firebug.console.Filter_by_Debug_Info=Vyfiltrovat podle ladících informací
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Otevřít Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Schovat Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Povolit všechny panely
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Zakázat všechny panely
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Upravit klávesové zkratky
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Možnosti
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Povolit usnadnění přístupu
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Resetovat všechny nastavení Firebugu
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug online
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Zobrazit počet chyb
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Velikost textu
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Zvětšit velikost textu
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Zmenšit velikost textu
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Normální velikost textu
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Webové stránky Firebugu...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Dokumentace...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Klávesové zkratky...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Diskusní skupina...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Sledování chyb...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Přispět...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=O Firebugu...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Hledat
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Znovu zadat příkaz
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Přepnout prozkoumávání
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Přepnout okno rychlých informací
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Přepnout profilování
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Zaměřit příkazovou řádku
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Zaměřit vyhledávání
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Zaměřit editor hlídání
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Zaměřit umístění
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Další objekt
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Předchozí objekt
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Přizpůsobit klávesové zkratky
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Otevřít Firebug v novém okně
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Přepnout na levý panel
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Přepnout na pravý panel
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Otevřít Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Předchozí panel
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Vyčistit konzolu
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Otevřít konzolu
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Přejít zpět
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Přejít vpřed
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Zvětšit velikost textu
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Zmenšit velikost textu
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normální velikost textu
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Výběr panelu
+customizeShortcuts=Nastavení klávesových zkratek Firebugu
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=nástroje panelu
+a11y.labels.firebug_panels=panely Firebugu
+a11y.labels.firebug_side_panels=postranní panely Firebugu
+a11y.labels.firebug_window=okno Firebugu
+a11y.labels.firebug_status=stav Firebugu
+a11y.labels.reset=obnovit
+a11y.labels.reset_shortcut=obnovit zkratku %S
+aria.labels.inactive_panel=neaktivní panel
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=řádky logu
+a11y.labels.call_stack=zásobník volání
+a11y.labels.document_structure=struktura dokumentu
+a11y.labels.title_panel=panel %S
+a11y.labels.title_side_panel=postranní panel %S
+a11y.labels.cached=kešované
+aria.labels.stack_trace=stack trace
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=position
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=margin top
+a11y.layout.margin_right=margin right
+a11y.layout.margin_bottom=margin bottom
+a11y.layout.margin_left=margin left
+a11y.layout.border_top=border top
+a11y.layout.border_right=border right
+a11y.layout.border_bottom=border bottom
+a11y.layout.border_left=border left
+a11y.layout.padding_top=padding top
+a11y.layout.padding_right=padding right
+a11y.layout.padding_bottom=padding bottom
+a11y.layout.padding_left=padding left
+a11y.layout.top=top
+a11y.layout.right=right
+a11y.layout.bottom=bottom
+a11y.layout.left=left
+a11y.layout.width=width
+a11y.layout.height=height
+a11y.layout.size=size
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=Pro editaci jednotlivých hodnot stiskněte Enter následovaný Tabem
+a11y.labels.style_rules=pravidla stylu
+aria.labels.inherited_style_rules=zděděná pravidla stylu
+a11y.labels.computed_styles=vypočtené styly
+a11y.labels.dom_properties=vlastnosti DOMu
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=řádkový editor
+a11y.labels.value_for_attribute_in_element=hodnota atributu %S elementu %S
+a11y.labels.attribute_for_element=atribut elementu %S
+a11y.labels.text_contents_for_element=textový obsah elementu %S
+a11y.labels.defined_in_file=definováno v %S
+a11y.labels.declarations_for_selector=deklarace stylu selektoru \"%S\"
+a11y.labels.property_for_selector=CSS vlastnost selektoru: %S
+a11y.labels.value_property_in_selector=hodnota vlastnosti %S selektoru %S
+a11y.labels.css_selector=CSS selektor
+a11y.labels.source_code_for_file=zdrojový kód souboru %S
+a11y.labels.press_enter_to_add_new_watch_expression=pro přidání nového kukátka stiskněte Enter
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=přepsáno
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=obsahuje podmíněný breakpoint
+a11y.updates.has_disabled_break_point=obsahuje zakázaný breakpoint
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=skript zastaven na řádku %S v %S, soubor %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=shoda pro \"%S\" nalezena v %S řádcích logu
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=shoda pro \"%S\" nalezena na řádku %S v %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=shoda pro \"%S\" nalezena v elementu %S na cestě %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=shoda pro \"%S\" nalezena v atributu %S=%S elementu %S na cestě %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=shoda pro \"%S\" nalezena v textovém obsahu: %S elementu %S na cestě %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=shoda pro \"%S\" nalezena v selektoru %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=shoda pro \"%S\" nalezena v deklaraci stylu %S selektoru %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=shoda pro \"%S\" nalezena v DOM vlastnosti %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=shoda pro \"%S\" nalezena v %S, %S : %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=shoda pro \"%S\" nalezena na řádku přehledu sítě: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=pro \"%S\" nebyly nalezeny žádné shody
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Opravdu si přejete obnovit výchozí stav všech předvoleb Firebugu?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=Konzola musí být povolena
+warning.Command_line_blocked?=Příkazová řádka je blokována?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Znovu načtěte k aktivaci okna konzoly
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=Zdroj z tohoto URL není text
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Přejít zpět na tento panel
+firebug.history.Stay_on_this_panel=Zůstat na tomto panelu
+firebug.history.Go_forward_to_this_panel=Přejít vpřed na tento panel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Přejít zpět
+firebug.history.Go_forward=Přejít vpřed
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Panel Skripty byl neaktivní při nahrávání stránky
+script.suggestion.inactive_during_page_load2=Všechny zdroje zobrazíte <a>obnovením</a>
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=JavaScript není povolen
+script.suggestion.javascript_not_enabled=Viz Firefox > Nástroje > Možnosti > Obsah > Povolit JavaScript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Povolit JavaScript a obnovit
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Byly vyfiltrovány všechny skripty
+script.suggestion.all_scripts_filtered=Viz nastavení filtru skriptů na panelu nástrojů nebo \"volba zobrazit zdroje Chrome\"
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=Na této stránce není žádný JavaScript
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Debugger už je aktivní
+script.suggestion.debugger_active=Debugger je zrovna zastaven na breakpointu na jiné stránce.
+script.button.Go_to_that_page=Přejít na tuto stránku
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Zavřít
+firebug.View=Zobrazit
+firebug.Help=Nápověda
+firebug.Run=Spustit
+firebug.Copy=Kopírovat
+firebug.History=Historie
+firebug.Run_the_entered_command=Spustit zadaný příkaz
+firebug.Clear_the_Command_Editor=Vyčistit editor příkazu
+firebug.Copy_the_script_as_a_bookmarklet=Zkopírovat skript jako bookmarklet
+firebug.Insert_a_previously_entered_command=Vložit naposledy zadaný příkaz
+firebug.AlwaysOpenInWindow=Vždy otevírat v novém okně
+firebug.OpenWith=Otevřít v editoru
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Weby...
+firebug.Configure_Editors=Konfigurovat editory
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Zkoumat
+firebug.InspectElement=Zkoumat prvek
+firebug.InspectElementWithFirebug=Prozkoumat prvek ve Firebugu
+firebug.BreakOnErrors=Zastavit při chybě
+firebug.InspectTooltip=Kliknutím na prvek na stránce jej můžete prozkoumat
+firebug.EditHTMLTooltip=Upravit vybrané HTML
+firebug.Profile=Profilovat
+firebug.Clear=Vyčistit
+firebug.ClearConsole=Vyčistit konzolu
+firebug.ClearTooltip=Smaže vše z konzole
+firebug.All=Vše
+firebug.Images=Obrázky
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Konfigurované editory Firebugu
+editors.Editor=Editor
+editors.Executable=Spouštěcí soubor
+editors.Launch_Arguments=Argumenty pro spuštění
+editors.Add=Přidat
+editors.Remove=Odebrat
+editors.Change=Změnit
+editors.Move_Up=Přesunout výš
+editors.Close=Zavřít
+editors.Browse=Procházet...
+changeEditor.Editor_Configuration=Konfigurace editoru
+changeEditor.Name=Název:
+changeEditor.Executable=Spustit:
+changeEditor.CmdLine=Argumenty:
+changeEditor.Supplied_arguments=Argumenty předávané Firebugem:
+changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> URL souboru (pokud %url chybí, tak se místo toho přidá %file)
+changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> Cesta k lokálnímu souboru (nebo dočasné kopii)
+changeEditor.Line_number=<label class=\'text-link\'>%line</label> Číslo řádku (pokud je k dispozici)
+changeEditor.Invalid_Application_Path=Neplatná cesta k aplikaci
+changeEditor.Application_does_not_exist=Uvedená aplikace neexistuje!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Upravit
+firebug.css.sourceEdit=Editovat zdrojový kód
+firebug.css.sourceEdit.tooltip=Editace stylu nahraného prohlížečem
+firebug.css.liveEdit=Editovat živý kód
+firebug.css.liveEdit.tooltip=Editace CSS získaného z prohlížeče
+firebug.EditCSSTooltip=Upravit tuto tabulku stylů
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Při anonymním prohlížení se servery nepamatují
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Zobrazit oznámení o zastavení
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=Upozornění o přerušeních můžete zakázat/povolit v <a>menu záložky panelu</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Kliknutí na tlačítko \'Zakázat\' přebije \'debugger\' zakázaným breakpointem.
+firebug.bon.tooltip.disableDebuggerKeyword2=Vytvoří zakázaný breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=Neexistují objekty potomků
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=více
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S položka ve Storage;%1$S položky ve Storage;%1$S položek ve Storage
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Vlastnosti objektu
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(žádná doplnění)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=Objekt URL byl nejspíš zakázán metodou revokeObjectURL.
+firebug.failedToPreviewImageURL=Nepodařilo se nahrát danou URL.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/da/cookies.properties b/locale/da/cookies.properties
index 66695d4..ec60718 100644
--- a/locale/da/cookies.properties
+++ b/locale/da/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Session
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Accept Cookies From Sites
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Clear cookies when denying
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cut
-cookies.Copy=Copy
-cookies.CopyAll=Copy All
-cookies.Paste=Paste
-cookies.Delete=Delete
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Edit
-cookies.Accept=Accept
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reset Header
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
-cookies.ExceptionsTitle=Exceptions - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support for Cookie Monitoring
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=Disable Cookies panel for %S
-cookies.Permissions=Enable or Disable Cookies panel
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=System Pages
-cookies.LocalFiles=Local Files
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Do you want to remove all cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remove all cookies in the list.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Create a new cookie for %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Value
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Manage cookie permissions for %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=All cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejected:
-cookies.console.nocookiesreceived=No cookies received
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=deleted
-cookies.console.added=added
-cookies.console.changed=changed
-cookies.console.cleared=cleared
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domain
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Secure
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Value
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Default (Accept session cookies)
-cookies.default.thirdPartySession=Default (Accept session cookies)
-cookies.default.thirdParty=Default (Accept cookies)
-cookies.default.allow=Default (Accept cookies)
-cookies.default.deny=Default (Deny cookies)
-cookies.default.warn=Default (Warn before accepting cookie)
-cookies.host.session=Accept session cookies from %S
-cookies.host.accept=Accept cookies from %S
-cookies.host.reject=Deny cookies from %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie name is not valid.
-cookies.edit.invalidhost=Cookie host is not valid.
-cookies.edit.invalidpath=Cookie path is not valid.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Name
-cookies.header.value=Value
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domain
-cookies.header.size=Size
-cookies.header.path=Path
-cookies.header.expires=Expires
-cookies.header.security=Security
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Name of the cookie
-cookies.header.value.tooltip=Value stored for the cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domain that has stored the cookie
-cookies.header.size.tooltip=Size of the stored cookie
-cookies.header.path.tooltip=Directory where the cookie is active
-cookies.header.expires.tooltip=Expiration date for the cookie
-cookies.header.security.tooltip=Shows whether it is a secure cookie or not
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Received Cookies
-cookies.netinfo.Sent_Cookies=Sent Cookies
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Path Filter
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Export All Cookies
-cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
-cookies.export.Export_For_Site=Export Cookies For This Site
-cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Remove Cookies
-cookies.Create=Create Cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Tools
-cookies.ToolsTooltip=Tools
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Show All Cookies
-cookies.ViewAllTooltip=Open the built-in Cookie Manager
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Web Sites Permissions
-cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filter
-cookies.FilterTooltip=Use given options to filter the cookie list.
-cookies.filter.byPath=Filter Cookies By Current Path
-cookies.filter.byPathTooltip=Show only cookies that match the current path.
-cookies.filter.showRejectedCookies=Show Rejected Cookies
-cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Edit Cookie
-cookies.edit.name.label=Name:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Path:
-cookies.edit.expire.label=Expires:
-cookies.edit.value.label=Value:
-cookies.edit.secure.label=Secure Cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Session
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Accept Cookies From Sites
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Clear cookies when denying
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cut
+cookies.Copy=Copy
+cookies.CopyAll=Copy All
+cookies.Paste=Paste
+cookies.Delete=Delete
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Edit
+cookies.Accept=Accept
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reset Header
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
+cookies.ExceptionsTitle=Exceptions - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support for Cookie Monitoring
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=Disable Cookies panel for %S
+cookies.Permissions=Enable or Disable Cookies panel
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=System Pages
+cookies.LocalFiles=Local Files
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Do you want to remove all cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remove all cookies in the list.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Create a new cookie for %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Value
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Manage cookie permissions for %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=All cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejected:
+cookies.console.nocookiesreceived=No cookies received
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=deleted
+cookies.console.added=added
+cookies.console.changed=changed
+cookies.console.cleared=cleared
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domain
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Secure
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Value
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Default (Accept session cookies)
+cookies.default.thirdPartySession=Default (Accept session cookies)
+cookies.default.thirdParty=Default (Accept cookies)
+cookies.default.allow=Default (Accept cookies)
+cookies.default.deny=Default (Deny cookies)
+cookies.default.warn=Default (Warn before accepting cookie)
+cookies.host.session=Accept session cookies from %S
+cookies.host.accept=Accept cookies from %S
+cookies.host.reject=Deny cookies from %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie name is not valid.
+cookies.edit.invalidhost=Cookie host is not valid.
+cookies.edit.invalidpath=Cookie path is not valid.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Name
+cookies.header.value=Value
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domain
+cookies.header.size=Size
+cookies.header.path=Path
+cookies.header.expires=Expires
+cookies.header.security=Security
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Name of the cookie
+cookies.header.value.tooltip=Value stored for the cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domain that has stored the cookie
+cookies.header.size.tooltip=Size of the stored cookie
+cookies.header.path.tooltip=Directory where the cookie is active
+cookies.header.expires.tooltip=Expiration date for the cookie
+cookies.header.security.tooltip=Shows whether it is a secure cookie or not
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Received Cookies
+cookies.netinfo.Sent_Cookies=Sent Cookies
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Path Filter
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Export All Cookies
+cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
+cookies.export.Export_For_Site=Export Cookies For This Site
+cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Remove Cookies
+cookies.Create=Create Cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Tools
+cookies.ToolsTooltip=Tools
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Show All Cookies
+cookies.ViewAllTooltip=Open the built-in Cookie Manager
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Web Sites Permissions
+cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filter
+cookies.FilterTooltip=Use given options to filter the cookie list.
+cookies.filter.byPath=Filter Cookies By Current Path
+cookies.filter.byPathTooltip=Show only cookies that match the current path.
+cookies.filter.showRejectedCookies=Show Rejected Cookies
+cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Edit Cookie
+cookies.edit.name.label=Name:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Path:
+cookies.edit.expire.label=Expires:
+cookies.edit.value.label=Value:
+cookies.edit.secure.label=Secure Cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/da/firebug-amo.properties b/locale/da/firebug-amo.properties
index 26b73fb..2c27101 100644
--- a/locale/da/firebug-amo.properties
+++ b/locale/da/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
-firebug.amo.description=Firebug integrerer med Firefox og giver en mængde udviklingsværktøjer lige ved hånden mens du surfer. Du kan redigere, fejlfinde og overvåge CSS, HTML og JavaScript live på enhver webside...\\n\\nBesøg Firebugs hjemmeside for dokumentation, skærmbilleder og debatfora: http://getfirebug.com
-firebug.amo.developer.comments=I tilfælde af problemer, se venligst Firebug FAQ.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
+firebug.amo.description=Firebug integrerer med Firefox og giver en mængde udviklingsværktøjer lige ved hånden mens du surfer. Du kan redigere, fejlfinde og overvåge CSS, HTML og JavaScript live på enhver webside...\\n\\nBesøg Firebugs hjemmeside for dokumentation, skærmbilleder og debatfora: http://getfirebug.com
+firebug.amo.developer.comments=I tilfælde af problemer, se venligst Firebug FAQ.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/da/firebug-tracing.properties b/locale/da/firebug-tracing.properties
index f95f9a9..5139204 100644
--- a/locale/da/firebug-tracing.properties
+++ b/locale/da/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Åbn Firebug Tracing
-Always_Open_Firebug_Tracing=Åbn altid Firebug Tracing
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Tracing
-tracing.Show_Scope_Variables=Vis Scope-variabler
-tracing.Show_Time=Vis tid
-tracing.tab.Stack=Stak
-tracing.tab.Exception=Undtagelse
-tracing.tab.Properties=Egenskaber
-tracing.tab.Scope=Scope
-tracing.tab.Response=Svar
-tracing.tab.Source=Kilde
-tracing.tab.Interfaces=Interfaces
-tracing.tab.Object=Objekt
-tracing.tab.Event=Event
-tracing.cmd.Clear=Ryd
-tracing.cmd.tip.Clear=Fjern alle meddelelser
-tracing.cmd.Find=Find
-tracing.cmd.tip.Find=Find tekst
-tracing.cmd.Bookmark=Bogmærk
-tracing.cmd.tip.Bookmark=Indsæt bogmærke
-tracing.cmd.Restart=Genstart Firefox
-tracing.cmd.tip.Restart=Genstart Firefox
-tracing.cmd.Exit=Luk Firefox
-tracing.cmd.tip.Exit=Luk Firefox
-tracing.cmd.Save=Gem til fil
-tracing.cmd.tip.Save=Gem logs i en fil
-tracing.cmd.Load=Indlæs fra fil
-tracing.cmd.tip.Load=Indlæs logs fra fil
-tracing.cmd.Expand_All=Udvid alle
-tracing.cmd.Collapse_All=Sammenfold alle
-tracing.cmd.Tools=Tools
-tracing.cmd.tip.Tools=Tools
-tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.Open_Profile_Directory=Open Profile Directory
-tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
-tracing.option.A11Y_Description=Accessibility issues
-tracing.option.ACTIVATION_Description=Firebug activation
-tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
-tracing.option.ANNOTATIONS_Description=Firebug website annotation
-tracing.option.BP_Description=Breakpoints
-tracing.option.CACHE_Description=Source cache
-tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
-tracing.option.COMPILATION_UNITS_Description=Script compilation units
-tracing.option.CONSOLE_Description=Console Panel
-tracing.option.CSS_Description=CSS parsing
-tracing.option.DISPATCH_Description=Event dispatching
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate creation
-tracing.option.EDITOR_Description=Inline Editor & Autocompleter
-tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Internal Firebug errors
-tracing.option.EVAL_Description=Script evaluation
-tracing.option.FBS_BP_Description=Firebug service breakpoints
-tracing.option.FBS_CREATION_Description=Firebug service script creation
-tracing.option.FBS_ERRORS_Description=Firebug service errors
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
-tracing.option.FBS_FUNCTION_Description=Firebug service function
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
-tracing.option.FBS_SRCUNITS_Description=Firebug service source units
-tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
-tracing.option.FUNCTION_NAMES_Description=JavaScript function names
-tracing.option.HISTORY_Description=Firebug Navigation History
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP request observer
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug initialization
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON viewer
-tracing.option.LINETABLE_Description=Script line table
-tracing.option.LOCALE_Description=Localization
-tracing.option.LOCATIONS_Description=Source locations
-tracing.option.NET_Description=Net Panel
-tracing.option.NET_EVENTS_Description=Network events
-tracing.option.OPTIONS_Description=Firebug preferences
-tracing.option.PANELS_Description=Panels
-tracing.option.SHORTCUTS_Description=Keyboard shortcuts
-tracing.option.SOURCEFILES_Description=JavaScript source files
-tracing.option.SPY_Description=XMLHttpRequests observer
-tracing.option.STACK_Description=JavaScript call stack
-tracing.option.STORAGE_Description=Settings storage
-tracing.option.SVGVIEWER_Description=SVG viewer
-tracing.option.FONTS_Description=Fonts information and font viewer
-tracing.option.TOOLTIP_Description=Start Button tooltip
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging user interface
-tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
-tracing.option.XMLVIEWER_Description=XML viewer
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Åbn Firebug Tracing
+Always_Open_Firebug_Tracing=Åbn altid Firebug Tracing
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Tracing
+tracing.Show_Scope_Variables=Vis Scope-variabler
+tracing.Show_Time=Vis tid
+tracing.tab.Stack=Stak
+tracing.tab.Exception=Undtagelse
+tracing.tab.Properties=Egenskaber
+tracing.tab.Scope=Scope
+tracing.tab.Response=Svar
+tracing.tab.Source=Kilde
+tracing.tab.Interfaces=Interfaces
+tracing.tab.Object=Objekt
+tracing.tab.Event=Event
+tracing.cmd.Clear=Ryd
+tracing.cmd.tip.Clear=Fjern alle meddelelser
+tracing.cmd.Find=Find
+tracing.cmd.tip.Find=Find tekst
+tracing.cmd.Bookmark=Bogmærk
+tracing.cmd.tip.Bookmark=Indsæt bogmærke
+tracing.cmd.Restart=Genstart Firefox
+tracing.cmd.tip.Restart=Genstart Firefox
+tracing.cmd.Exit=Luk Firefox
+tracing.cmd.tip.Exit=Luk Firefox
+tracing.cmd.Save=Gem til fil
+tracing.cmd.tip.Save=Gem logs i en fil
+tracing.cmd.Load=Indlæs fra fil
+tracing.cmd.tip.Load=Indlæs logs fra fil
+tracing.cmd.Expand_All=Udvid alle
+tracing.cmd.Collapse_All=Sammenfold alle
+tracing.cmd.Tools=Tools
+tracing.cmd.tip.Tools=Tools
+tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.Open_Profile_Directory=Open Profile Directory
+tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
+tracing.option.A11Y_Description=Accessibility issues
+tracing.option.ACTIVATION_Description=Firebug activation
+tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
+tracing.option.ANNOTATIONS_Description=Firebug website annotation
+tracing.option.BP_Description=Breakpoints
+tracing.option.CACHE_Description=Source cache
+tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
+tracing.option.COMPILATION_UNITS_Description=Script compilation units
+tracing.option.CONSOLE_Description=Console Panel
+tracing.option.CSS_Description=CSS parsing
+tracing.option.DISPATCH_Description=Event dispatching
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate creation
+tracing.option.EDITOR_Description=Inline Editor & Autocompleter
+tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Internal Firebug errors
+tracing.option.EVAL_Description=Script evaluation
+tracing.option.FBS_BP_Description=Firebug service breakpoints
+tracing.option.FBS_CREATION_Description=Firebug service script creation
+tracing.option.FBS_ERRORS_Description=Firebug service errors
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
+tracing.option.FBS_FUNCTION_Description=Firebug service function
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
+tracing.option.FBS_SRCUNITS_Description=Firebug service source units
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
+tracing.option.FUNCTION_NAMES_Description=JavaScript function names
+tracing.option.HISTORY_Description=Firebug Navigation History
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request observer
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug initialization
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON viewer
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Localization
+tracing.option.LOCATIONS_Description=Source locations
+tracing.option.NET_Description=Net Panel
+tracing.option.NET_EVENTS_Description=Network events
+tracing.option.OPTIONS_Description=Firebug preferences
+tracing.option.PANELS_Description=Panels
+tracing.option.SHORTCUTS_Description=Keyboard shortcuts
+tracing.option.SOURCEFILES_Description=JavaScript source files
+tracing.option.SPY_Description=XMLHttpRequests observer
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Settings storage
+tracing.option.SVGVIEWER_Description=SVG viewer
+tracing.option.FONTS_Description=Fonts information and font viewer
+tracing.option.TOOLTIP_Description=Start Button tooltip
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging user interface
+tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
+tracing.option.XMLVIEWER_Description=XML viewer
diff --git a/locale/da/firebug.properties b/locale/da/firebug.properties
index 896a10f..3a9302a 100644
--- a/locale/da/firebug.properties
+++ b/locale/da/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Konsol
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Net
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Script
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Style
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Computed
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Layout
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Watch
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Breakpoints
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Stak
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Scopes
-firebug.DetachFirebug=Åbn Firebug i nyt vindue
-firebug.AttachFirebug=Påhæft Firebug i browser-vindue
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Deactivated
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=I Browser
-minimized=Minimeret
-enablement.for_all_pages=for alle sider
-enablement.on=Til
-enablement.off=Fra
-enablement.Panel_activation_status=Panel activation status:
-none=Lukket
-Firebug_-_inactive_for_current_website=Firebug - inactive for current website
-Activate_Firebug_for_the_current_website=Activate Firebug for the current website
-Minimized=Minimeret
-Minimize_Firebug=Minimér Firebug
-On_for_all_web_pages=Til for alle websider
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Ryd aktiveringsliste
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI Location
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Firebug indstillinger
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Vis alle paneler
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=Vis JavaScript-fejl
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Vis JavaScript-advarsler
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Vis CSS-fejl
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Vis stak-trace ved fejl
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Vis XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Vis Chrome-fejl
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Vis Chrome-beskeder
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Vis eksterne fejl
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Vis netværksfejl
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Strict-advarsler (forringer ydelsen)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Command History
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Show Completion List Popup
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Assertion mislykkedes
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (linje %S)
-LineAndCol=%S (line %S, col %S)
-InstanceLine=%S #%S (linje %S)
-StackItem=%S (%S linje %S)
-SystemItem=<System>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(intet navn)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Vis fuld tekst
-html.option.tip.Show_Full_Text=Don't crop element contents
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Vis White Space
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Vis kommentarer
-html.option.tip.Show_Comments=Show comment nodes
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Fremhæv ændringer
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Fold ændringer ud
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Rul ændringer ind i synsfelt
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Vis Kvik-info-boks
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Shade Box-model
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Rul ind i synsfelt
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Ny attribut...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Slet element
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Slet Node
-html.Delete_Node=Delete the node from the tree
-# Quick Info Box
-quickInfo=Kvik-info
-computedStyle=Computed Style
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Break ved mutation
-html.Disable_Break_On_Mutate=Deaktiver Break ved mutation
-html.label.Break_On_Text_Change=Break ved tekstændring
-html.label.HTML_Breakpoints=HTML Breakpoints
-html.label.Break_On_Attribute_Change=Break ved attribut-ændring
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Break ved Child tilføjelse eller fjernelse
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Break ved fjernelse af Element
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Expand/Contract All
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Break On Property Change
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Disable Break On Property Change
-dom.label.DOM_Breakpoints=DOM Breakpoints
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Ret attribut \"%S\"...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Slet attribut \"%S\"
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Nedarvet fra
-SothinkWarning=Sothink SWF Catcher-udvidelsen forhindrer Firebug i at fungere korrekt.<br><br>Læs venligst <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">dette emne på Firebugs FAQ</a> for hjælp (engelsk).
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
-EditStyle=Ret elementets style...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Ny regel...
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Ny Egenskab...
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=Ret \"%S\"...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=Deaktiver \"%S\"
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=Slet \"%S\"
-css.tip.Delete_Prop=Delete the property "%S"
-# Console context menu labels.
-BreakOnThisError=Stop ved denne fejl
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Stop ved alle fejl
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Følg Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Brug sidste kildelinje for eval() navne
-UseMD5ForEvalName=Brug MD5 som eval() navne
-# Breakpoints side panel
-Breakpoints=Breakpoints
-ErrorBreakpoints=Fejl-breakpoints
-LoggedFunctions=Loggede funktioner
-EnableAllBreakpoints=Aktiver alle breakpoints
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Deaktiver alle breakpoints
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Slet alle breakpoints
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Dette breakpoint stopper kun hvis dette udtryk er opfyldt:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Remove Breakpoint
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Disable Breakpoint
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Enable Breakpoint
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Fortsæt
-script.balloon.Disable=Deaktiver
-ScriptsFilterStatic=Vis statiske scripts
-ScriptsFilterEval=Vis statiske og eval Scripts
-ScriptsFilterEvent=Vis statiske og event Scripts
-ScriptsFilterAll=Vis statiske, eval og event Scripts
-ScriptsFilterStaticShort=statisk
-ScriptsFilterEvalShort=evals
-ScriptsFilterEventShort=events
-ScriptsFilterAllShort=alle
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Expand All
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Collapse All
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Vis brugerdefinerede egenskaber
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Vis brugerdefinerede funktioner
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Vis DOM-egenskaber
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Vis DOM-funktioner
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Vis DOM-konstanter
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=Der er ingen egenskaber at vise for dette objekt.
-NewWatch=Nyt watch-udtryk...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Tilføj Watch
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Kopiér kilde
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
-CopyValue=Kopier værdi
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Kopier navn
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Kopier sti
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Ny egenskab...
-EditProperty=Ret egenskab...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Ret variabel...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Ret Watch...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Slet egenskab
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Slet Watch
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Sæt breakpoint
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Ret breakpoint-betingelse...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=Der er ingen breakpoints på denne side.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Only Show Applied Styles
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Vis User Agent CSS
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Udvid Shorthand egenskaber
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Sort Alphabetically
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Show Mozilla Specific Styles
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Type any key to filter list
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=position
-LayoutAdjacent=tilstødende
-position=position
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Vis Rulers og Guides
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Net panel
-Loading=Indlæser...
-Headers=Headere
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Nulstil Header
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=Forespurgt URL og brugt HTTP-metode.
-net.header.Status=Status
-net.header.Status_Tooltip=Status af modtaget svar.
-net.header.Domain=Domæne
-net.header.Domain_Tooltip=Domæne for udført forespørgsel.
-net.header.Size=Størrelse
-net.header.Size_Tooltip=Størrelse på modtaget svar.
-net.header.Timeline=Tidslinje
-net.header.Timeline_Tooltip=Detaljeret timing-info for forespørgselssvar rundsendingstid.
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=XHR Breakpoints
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Break ved XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=vis kilde
-net.headers.pretty_print=pænt format
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Media
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Post
-Put=Put
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Response
-URLParameters=Parameter
-Cache=Cache
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Sort by key
-jsonviewer.do_not_sort=Do not sort
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Request-headere
-ResponseHeaders=Response-headere
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
-LimitPrefs=Indstillinger
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=For at ændre grænsen, ret: %S
-Refresh=Opdater
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Åbn i nyt faneblad
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Åbn Svar i nyt faneblad
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Profil
-ProfilerStarted=Profileren kører. Klik \'Profilér\' igen for at se rapporten.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
-NothingToProfile=Ingen aktivitet at profilere.
-PercentTooltip=Procent af tid brugt på denne funktion.
-CallsHeaderTooltip=Antal gange funktionen blev kaldt.
-OwnTimeHeaderTooltip=Tid brugt i denne funktion, ekskl. indlejrede kald.
-TimeHeaderTooltip=Tid brugt i denne funktion, inkl. indlejrede kald.
-AvgHeaderTooltip=Gennemsnitstid, inkl. funktionskald.
-MinHeaderTooltip=Minimumtid, inkl. funktionskald.
-MaxHeaderTooltip=Maksimumtid, inkl. funktionskald.
-ProfileButton.Enabled.Tooltip=Profilér JavaScript kørselstid.
-ProfileButton.Disabled.Tooltip=Profilér JavaScript kørselstid (Script-panelet skal være aktiveret).
-Function=Funktion
-Percent=Procent
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Kald
-OwnTime=Egentid
-Time=Tid
-Avg=Gns
-Min=Min
-Max=Maks
-File=Fil
-# Support for standard actions.
-Copy=Kopier
-Cut=Klip
-Remove=Fjern
-Delete=Delete
-Paste=Paste
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Kopier innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Kopier XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Kopier CSS-sti
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Kopier sti
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Kopier sti med parameter
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Kopier Request-headere
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Kopier Response-headere
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Kopier Response-indholdet
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Kopier fejlen
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Kopier funktionen
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Log kald til \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Log Events
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Aktiveret
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Firebug-konsollen understøtter ikke \'%S\'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Firebug kommandolinjen understøtter ikke \'%S\'
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Deaktiver Break ved alle fejl
-console.Break_On_All_Errors=Break ved alle fejl
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Break ved denne fejl
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript er deaktiveret i dine Firefox-indstillinger. Hvis du vil bruge konsolpanelet, aktiver da venligst denne indstilling under \'Funktioner\' -> \'Indstillinger...\' -> \'Indhold\' -> \'Aktiver JavaScript\'
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Response Body
-net.sizeinfo.Post_Body=Post Body
-net.sizeinfo.Total_Sent=Totalt sendt
-net.sizeinfo.Total_Received=Totalt modtaget
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Net-panel aktiveret. Forespørgsler mens net-panelet er inaktivt vises ikke.
-net.responseSizeLimitMessage=Firebug respons-størrelsesgrænse nået. Klik <a>her</a> for at åbne hele svaret i et nyt Firefox-faneblad.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Firebug forespørgsel-størrelse er nået af Firebug.
-net.Break_On_XHR=Break ved XHR
-net.label.Parameters=Parametre
-net.label.Parts=Dele
-net.label.Source=Kilde
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Deaktiver browser-cache
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Vis Paint-events
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Stop ved næste
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Vis HTTP-headere
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S request;%1$S requests
-FromCache=fra cache
-StopLoading=Stop indlæsning
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Meget stor datamængde)
-ShowComputedStyle=Vis Computed Style
-StyleGroup-text=Tekst
-StyleGroup-background=Baggrund
-StyleGroup-box=Box-model
-StyleGroup-layout=Layout
-StyleGroup-other=Andet
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Kopier farve
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Kopier billedplacering
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Åbn billed i nyt faneblad
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Udelad værktøjslinje-stak
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copy Rule Declaration
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Kopier Style-deklaration
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Error;%1$S Errors
-moduleManager.title=%S panel er deaktiveret
-moduleManager.desc3=Brug Firebug statuslinje-ikonets menu for at aktivere og deaktivere alle paneler. Brug panel-fanebladets lille menu for individuel panel-kontrol:
-moduleManager.Enable=Enable
-Suspend_Firebug=Suspendér Firebug
-Resume_Firebug=Genoptag Firebug
-Reset_Panels_To_Disabled=Nulstil paneler til Deaktiveret
-Open_Console=Åbn konsol
-Open_Console_Tooltip=Åbn Firebug Trace-konsol.
-Scope_Chain=Scope-kæde
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=Med
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Kald
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Vindue
-Logs=Logs
-Options=Indstillinger
-Copy_Stack=Kopiér stak
-Copy Exception=Kopiér undtagelse
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blocking
-requestinfo.Resolving=DNS Lookup
-requestinfo.Connecting=Forbinder
-requestinfo.Sending=Sending
-requestinfo.Waiting=Waiting
-requestinfo.Receiving=Receiving
-requestinfo.ContentLoad=\'DOMContentLoaded\' (event)
-requestinfo.WindowLoad=\'load\' (event)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Firebug Søg
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Næste
-search.tip.Next=Search for the next match
-search.Previous=Foregående
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Force Case Sensitive
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Multiple Files
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Brug regulære udtryk (RegEx)
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS Selector
-search.net.Headers=Headere
-search.net.Parameters=Parametre
-search.net.Response_Bodies=Svar-indhold
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persist
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Show all log entries
-firebug.console.Errors=Errors
-firebug.console.Filter_by_Errors=Filter by errors
-firebug.console.Warnings=Warnings
-firebug.console.Filter_by_Warnings=Filter by warnings
-firebug.console.Info=Info
-firebug.console.Filter_by_Info=Filter by info
-firebug.console.Debug_Info=Debug Info
-firebug.console.Filter_by_Debug_Info=Filter by debug info
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Åbn Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Hide Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Aktivér alle paneler
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Deaktivér alle paneler
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Tilret genveje
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Indstillinger
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Aktiver Accessibility Enhancements
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Nulstil alle Firebug-indstillinger
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug Online
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Show Error Count
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Tekststørrelse
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Forøg tekststørrelse
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Formindsk tekststørrelse
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Normal tekststørrelse
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Firebug hjemmeside...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Dokumentation...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Tastaturgenveje...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Diskussionsgruppe...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Problemliste...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Bidrag...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Om...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Søg
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Genindtast kommando
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Skift Inspektion
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Kvik-info-boks til/fra
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Skift Profilering
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Fokus kommandolinje
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Fokus Firebug Søg
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Fokus Watch-editor
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Fokus Lokation
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Næste objekt
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Foregående objekt
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Tilret Firebug-taster
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Åbn Firebug i nyt vindue
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Skift til venstre Firebug panel
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Skift til højre Firebug panel
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Åbn Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Foregående Firebug faneblad
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Ryd konsol
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Åbn Trace-konsol
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Gå tilbage
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Gå frem
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Increase Text Size
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Decrease Text Size
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normal Text Size
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Panelvælger
-customizeShortcuts=Firebug Genvejsbindinger
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=panelværktøjer
-a11y.labels.firebug_panels=Firebug-paneler
-a11y.labels.firebug_side_panels=Firebug sidepaneler
-a11y.labels.firebug_window=Firebug-vindue
-a11y.labels.firebug_status=Firebug-status
-a11y.labels.reset=nulstil
-a11y.labels.reset_shortcut=nulstil genvej %S
-aria.labels.inactive_panel=inaktivt panel
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=log rækker
-a11y.labels.call_stack=kald stak
-a11y.labels.document_structure=document structure
-a11y.labels.title_panel=%S panel
-a11y.labels.title_side_panel=%S side panel
-a11y.labels.cached=cached
-aria.labels.stack_trace=stack trace
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=position
-a11y.layout.position_top=position top
-a11y.layout.position_right=position højre
-a11y.layout.position_bottom=position bund
-a11y.layout.position_left=position venstre
-a11y.layout.margin_top=margin top
-a11y.layout.margin_right=margin højre
-a11y.layout.margin_bottom=margin bund
-a11y.layout.margin_left=margin venstre
-a11y.layout.border_top=border top
-a11y.layout.border_right=border højre
-a11y.layout.border_bottom=border bund
-a11y.layout.border_left=border venstre
-a11y.layout.padding_top=padding top
-a11y.layout.padding_right=padding højre
-a11y.layout.padding_bottom=padding bund
-a11y.layout.padding_left=padding venstre
-a11y.layout.top=top
-a11y.layout.right=højre
-a11y.layout.bottom=bund
-a11y.layout.left=venstre
-a11y.layout.width=bredde
-a11y.layout.height=højde
-a11y.layout.size=størrelse
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=Tryk Enter efterfulgt af Tab for at redigere individuelle værdier
-a11y.labels.style_rules=style-regler
-aria.labels.inherited_style_rules=nedarvede style-regler
-a11y.labels.computed_styles=computed styles
-a11y.labels.dom_properties=DOM-egenskaber
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=inline editor
-a11y.labels.value_for_attribute_in_element=værdi for %S attribut i %S element
-a11y.labels.attribute_for_element=attribut for %S element
-a11y.labels.text_contents_for_element=tekstindhold for %S element
-a11y.labels.defined_in_file=defineret i %S
-a11y.labels.declarations_for_selector=style deklarationer for \"%S\" selector
-a11y.labels.property_for_selector=CSS-egenskab for selector: %S
-a11y.labels.value_property_in_selector=%S egenskabsværdi for selector %S
-a11y.labels.css_selector=CSS selector
-a11y.labels.source_code_for_file=kildekode for fil %S
-a11y.labels.press_enter_to_add_new_watch_expression=tryk enter for at tilføje et nyt watch-udtryk
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=overridden
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=har betinget break point
-a11y.updates.has_disabled_break_point=har deaktiveret break point
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script suspenderet på linje %S i %S, fil %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=match fundet for \"%S\" i %S log-rækker
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=match fundet for \"%S\" på linje %S i %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=match fundet for \"%S\" i %S element på sti %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=match fundet for \"%S\" i attribut %S=%S af %S element på sti %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=match fundet for \"%S\" i tekstindhold: %S af %S element på sti %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=match fundet for \"%S\" i selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=match fundet for \"%S\" i style deklaration %S i selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=match fundet for \"%S\" i DOM egenskab %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=match fundet for \"%S\" i %S, %S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=match fundet for \"%S\" i net summary row: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=no matches fundet for \"%S\"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Er du sikker på at du vil nulstille alle Firebug-indstillinger til standard-indstillinger?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=Konsol skal være aktiveret
-warning.Command_line_blocked?=Kommandolinje blokeret?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Genindlæs for at aktivere vindue-konsol
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=Ressourcen fra denne URL er ikke tekst
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Gå tilbage til dette panel
-firebug.history.Stay_on_this_panel=Bliv på dette panel
-firebug.history.Go_forward_to_this_panel=Gå fremad til dette panel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Gå tilbage
-firebug.history.Go_forward=Gå fremad
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Script Panel was inactive during page load
-script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript is not enabled
-script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Enable JavaScript and Refresh
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=All scripts were filtered
-script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=No Javascript on this page
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Debugger is already active
-script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
-script.button.Go_to_that_page=Go to that page
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Luk
-firebug.View=Vis
-firebug.Help=Hjælp
-firebug.Run=Evaluer
-firebug.Copy=Kopier
-firebug.History=History
-firebug.Run_the_entered_command=Run the entered command
-firebug.Clear_the_Command_Editor=Clear the Command Editor
-firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
-firebug.Insert_a_previously_entered_command=Insert a previously entered command
-firebug.AlwaysOpenInWindow=Åbn altid i nyt vindue
-firebug.OpenWith=Åbn med editor
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Domæner...
-firebug.Configure_Editors=Configure Editors
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Inspicér
-firebug.InspectElement=Inspicér element
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Break ved fejl
-firebug.InspectTooltip=Klik på et element på siden for at inspicere
-firebug.EditHTMLTooltip=Ret denne HTML
-firebug.Profile=Profilér
-firebug.Clear=Ryd
-firebug.ClearConsole=Ryd konsol
-firebug.ClearTooltip=Ryd konsollens indhold
-firebug.All=Alle
-firebug.Images=Billeder
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Configured Firebug Editors
-editors.Editor=Editor
-editors.Executable=Executable
-editors.Launch_Arguments=Launch Arguments
-editors.Add=Add
-editors.Remove=Remove
-editors.Change=Change
-editors.Move_Up=Move Up
-editors.Close=Close
-editors.Browse=Browse...
-changeEditor.Editor_Configuration=Editor Configuration
-changeEditor.Name=Navn:
-changeEditor.Executable=Program:
-changeEditor.CmdLine=Argumenter:
-changeEditor.Supplied_arguments=Arguments supplied by Firebug:
-changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
-changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
-changeEditor.Line_number=Line number (if available)
-changeEditor.Invalid_Application_Path=Invalid Application Path
-changeEditor.Application_does_not_exist=The specified application doesn't exist!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Ret
-firebug.css.sourceEdit=Source Edit
-firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
-firebug.css.liveEdit=Live Edit
-firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
-firebug.EditCSSTooltip=Ret dette stylesheet
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Show Break Notifications
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
-firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=There are no child objects
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=more
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Object Properties
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(no completions)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
-firebug.failedToPreviewImageURL=Failed to load the given URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Konsol
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Net
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Script
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Style
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Computed
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Layout
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Watch
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Breakpoints
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Stak
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Scopes
+firebug.DetachFirebug=Åbn Firebug i nyt vindue
+firebug.AttachFirebug=Påhæft Firebug i browser-vindue
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Deactivated
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=I Browser
+minimized=Minimeret
+enablement.for_all_pages=for alle sider
+enablement.on=Til
+enablement.off=Fra
+enablement.Panel_activation_status=Panel activation status:
+none=Lukket
+Firebug_-_inactive_for_current_website=Firebug - inactive for current website
+Activate_Firebug_for_the_current_website=Activate Firebug for the current website
+Minimized=Minimeret
+Minimize_Firebug=Minimér Firebug
+On_for_all_web_pages=Til for alle websider
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Ryd aktiveringsliste
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI Location
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Firebug indstillinger
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Vis alle paneler
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=Vis JavaScript-fejl
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Vis JavaScript-advarsler
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Vis CSS-fejl
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Vis stak-trace ved fejl
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Vis XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Vis Chrome-fejl
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Vis Chrome-beskeder
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Vis eksterne fejl
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Vis netværksfejl
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Strict-advarsler (forringer ydelsen)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Command History
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Show Completion List Popup
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Assertion mislykkedes
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (linje %S)
+LineAndCol=%S (line %S, col %S)
+InstanceLine=%S #%S (linje %S)
+StackItem=%S (%S linje %S)
+SystemItem=<System>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(intet navn)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Vis fuld tekst
+html.option.tip.Show_Full_Text=Don't crop element contents
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Vis White Space
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Vis kommentarer
+html.option.tip.Show_Comments=Show comment nodes
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Fremhæv ændringer
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Fold ændringer ud
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Rul ændringer ind i synsfelt
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Vis Kvik-info-boks
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Shade Box-model
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Rul ind i synsfelt
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Ny attribut...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Slet element
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Slet Node
+html.Delete_Node=Delete the node from the tree
+# Quick Info Box
+quickInfo=Kvik-info
+computedStyle=Computed Style
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Break ved mutation
+html.Disable_Break_On_Mutate=Deaktiver Break ved mutation
+html.label.Break_On_Text_Change=Break ved tekstændring
+html.label.HTML_Breakpoints=HTML Breakpoints
+html.label.Break_On_Attribute_Change=Break ved attribut-ændring
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Break ved Child tilføjelse eller fjernelse
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Break ved fjernelse af Element
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Expand/Contract All
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Break On Property Change
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Disable Break On Property Change
+dom.label.DOM_Breakpoints=DOM Breakpoints
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Ret attribut \"%S\"...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Slet attribut \"%S\"
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Nedarvet fra
+SothinkWarning=Sothink SWF Catcher-udvidelsen forhindrer Firebug i at fungere korrekt.<br><br>Læs venligst <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">dette emne på Firebugs FAQ</a> for hjælp (engelsk).
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
+EditStyle=Ret elementets style...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Ny regel...
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Ny Egenskab...
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=Ret \"%S\"...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=Deaktiver \"%S\"
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=Slet \"%S\"
+css.tip.Delete_Prop=Delete the property "%S"
+# Console context menu labels.
+BreakOnThisError=Stop ved denne fejl
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Stop ved alle fejl
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Følg Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Brug sidste kildelinje for eval() navne
+UseMD5ForEvalName=Brug MD5 som eval() navne
+# Breakpoints side panel
+Breakpoints=Breakpoints
+ErrorBreakpoints=Fejl-breakpoints
+LoggedFunctions=Loggede funktioner
+EnableAllBreakpoints=Aktiver alle breakpoints
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Deaktiver alle breakpoints
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Slet alle breakpoints
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Dette breakpoint stopper kun hvis dette udtryk er opfyldt:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Remove Breakpoint
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Disable Breakpoint
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Enable Breakpoint
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Fortsæt
+script.balloon.Disable=Deaktiver
+ScriptsFilterStatic=Vis statiske scripts
+ScriptsFilterEval=Vis statiske og eval Scripts
+ScriptsFilterEvent=Vis statiske og event Scripts
+ScriptsFilterAll=Vis statiske, eval og event Scripts
+ScriptsFilterStaticShort=statisk
+ScriptsFilterEvalShort=evals
+ScriptsFilterEventShort=events
+ScriptsFilterAllShort=alle
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Expand All
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Collapse All
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Vis brugerdefinerede egenskaber
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Vis brugerdefinerede funktioner
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Vis DOM-egenskaber
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Vis DOM-funktioner
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Vis DOM-konstanter
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=Der er ingen egenskaber at vise for dette objekt.
+NewWatch=Nyt watch-udtryk...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Tilføj Watch
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Kopiér kilde
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
+CopyValue=Kopier værdi
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Kopier navn
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Kopier sti
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Ny egenskab...
+EditProperty=Ret egenskab...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Ret variabel...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Ret Watch...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Slet egenskab
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Slet Watch
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Sæt breakpoint
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Ret breakpoint-betingelse...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=Der er ingen breakpoints på denne side.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Only Show Applied Styles
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Vis User Agent CSS
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Udvid Shorthand egenskaber
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Sort Alphabetically
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Show Mozilla Specific Styles
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Type any key to filter list
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=position
+LayoutAdjacent=tilstødende
+position=position
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Vis Rulers og Guides
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Net panel
+Loading=Indlæser...
+Headers=Headere
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Nulstil Header
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=Forespurgt URL og brugt HTTP-metode.
+net.header.Status=Status
+net.header.Status_Tooltip=Status af modtaget svar.
+net.header.Domain=Domæne
+net.header.Domain_Tooltip=Domæne for udført forespørgsel.
+net.header.Size=Størrelse
+net.header.Size_Tooltip=Størrelse på modtaget svar.
+net.header.Timeline=Tidslinje
+net.header.Timeline_Tooltip=Detaljeret timing-info for forespørgselssvar rundsendingstid.
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=XHR Breakpoints
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Break ved XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=vis kilde
+net.headers.pretty_print=pænt format
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Media
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Post
+Put=Put
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Response
+URLParameters=Parameter
+Cache=Cache
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Sort by key
+jsonviewer.do_not_sort=Do not sort
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Request-headere
+ResponseHeaders=Response-headere
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
+LimitPrefs=Indstillinger
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=For at ændre grænsen, ret: %S
+Refresh=Opdater
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Åbn i nyt faneblad
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Åbn Svar i nyt faneblad
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Profil
+ProfilerStarted=Profileren kører. Klik \'Profilér\' igen for at se rapporten.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
+NothingToProfile=Ingen aktivitet at profilere.
+PercentTooltip=Procent af tid brugt på denne funktion.
+CallsHeaderTooltip=Antal gange funktionen blev kaldt.
+OwnTimeHeaderTooltip=Tid brugt i denne funktion, ekskl. indlejrede kald.
+TimeHeaderTooltip=Tid brugt i denne funktion, inkl. indlejrede kald.
+AvgHeaderTooltip=Gennemsnitstid, inkl. funktionskald.
+MinHeaderTooltip=Minimumtid, inkl. funktionskald.
+MaxHeaderTooltip=Maksimumtid, inkl. funktionskald.
+ProfileButton.Enabled.Tooltip=Profilér JavaScript kørselstid.
+ProfileButton.Disabled.Tooltip=Profilér JavaScript kørselstid (Script-panelet skal være aktiveret).
+Function=Funktion
+Percent=Procent
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Kald
+OwnTime=Egentid
+Time=Tid
+Avg=Gns
+Min=Min
+Max=Maks
+File=Fil
+# Support for standard actions.
+Copy=Kopier
+Cut=Klip
+Remove=Fjern
+Delete=Delete
+Paste=Paste
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Kopier innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Kopier XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Kopier CSS-sti
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Kopier sti
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Kopier sti med parameter
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Kopier Request-headere
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Kopier Response-headere
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Kopier Response-indholdet
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Kopier fejlen
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Kopier funktionen
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Log kald til \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Log Events
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Aktiveret
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Firebug-konsollen understøtter ikke \'%S\'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Firebug kommandolinjen understøtter ikke \'%S\'
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Deaktiver Break ved alle fejl
+console.Break_On_All_Errors=Break ved alle fejl
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Break ved denne fejl
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript er deaktiveret i dine Firefox-indstillinger. Hvis du vil bruge konsolpanelet, aktiver da venligst denne indstilling under \'Funktioner\' -> \'Indstillinger...\' -> \'Indhold\' -> \'Aktiver JavaScript\'
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Response Body
+net.sizeinfo.Post_Body=Post Body
+net.sizeinfo.Total_Sent=Totalt sendt
+net.sizeinfo.Total_Received=Totalt modtaget
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Net-panel aktiveret. Forespørgsler mens net-panelet er inaktivt vises ikke.
+net.responseSizeLimitMessage=Firebug respons-størrelsesgrænse nået. Klik <a>her</a> for at åbne hele svaret i et nyt Firefox-faneblad.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Firebug forespørgsel-størrelse er nået af Firebug.
+net.Break_On_XHR=Break ved XHR
+net.label.Parameters=Parametre
+net.label.Parts=Dele
+net.label.Source=Kilde
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Deaktiver browser-cache
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Vis Paint-events
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Stop ved næste
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Vis HTTP-headere
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S request;%1$S requests
+FromCache=fra cache
+StopLoading=Stop indlæsning
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Meget stor datamængde)
+ShowComputedStyle=Vis Computed Style
+StyleGroup-text=Tekst
+StyleGroup-background=Baggrund
+StyleGroup-box=Box-model
+StyleGroup-layout=Layout
+StyleGroup-other=Andet
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Kopier farve
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Kopier billedplacering
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Åbn billed i nyt faneblad
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Udelad værktøjslinje-stak
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copy Rule Declaration
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Kopier Style-deklaration
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Error;%1$S Errors
+moduleManager.title=%S panel er deaktiveret
+moduleManager.desc3=Brug Firebug statuslinje-ikonets menu for at aktivere og deaktivere alle paneler. Brug panel-fanebladets lille menu for individuel panel-kontrol:
+moduleManager.Enable=Enable
+Suspend_Firebug=Suspendér Firebug
+Resume_Firebug=Genoptag Firebug
+Reset_Panels_To_Disabled=Nulstil paneler til Deaktiveret
+Open_Console=Åbn konsol
+Open_Console_Tooltip=Åbn Firebug Trace-konsol.
+Scope_Chain=Scope-kæde
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=Med
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Kald
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Vindue
+Logs=Logs
+Options=Indstillinger
+Copy_Stack=Kopiér stak
+Copy Exception=Kopiér undtagelse
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blocking
+requestinfo.Resolving=DNS Lookup
+requestinfo.Connecting=Forbinder
+requestinfo.Sending=Sending
+requestinfo.Waiting=Waiting
+requestinfo.Receiving=Receiving
+requestinfo.ContentLoad=\'DOMContentLoaded\' (event)
+requestinfo.WindowLoad=\'load\' (event)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Firebug Søg
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Næste
+search.tip.Next=Search for the next match
+search.Previous=Foregående
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Force Case Sensitive
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Multiple Files
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Brug regulære udtryk (RegEx)
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS Selector
+search.net.Headers=Headere
+search.net.Parameters=Parametre
+search.net.Response_Bodies=Svar-indhold
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persist
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Show all log entries
+firebug.console.Errors=Errors
+firebug.console.Filter_by_Errors=Filter by errors
+firebug.console.Warnings=Warnings
+firebug.console.Filter_by_Warnings=Filter by warnings
+firebug.console.Info=Info
+firebug.console.Filter_by_Info=Filter by info
+firebug.console.Debug_Info=Debug Info
+firebug.console.Filter_by_Debug_Info=Filter by debug info
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Åbn Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Hide Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Aktivér alle paneler
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Deaktivér alle paneler
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Tilret genveje
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Indstillinger
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Aktiver Accessibility Enhancements
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Nulstil alle Firebug-indstillinger
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug Online
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Show Error Count
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Tekststørrelse
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Forøg tekststørrelse
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Formindsk tekststørrelse
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Normal tekststørrelse
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Firebug hjemmeside...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Dokumentation...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Tastaturgenveje...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Diskussionsgruppe...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Problemliste...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Bidrag...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Om...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Søg
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Genindtast kommando
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Skift Inspektion
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Kvik-info-boks til/fra
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Skift Profilering
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Fokus kommandolinje
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Fokus Firebug Søg
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Fokus Watch-editor
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Fokus Lokation
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Næste objekt
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Foregående objekt
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Tilret Firebug-taster
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Åbn Firebug i nyt vindue
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Skift til venstre Firebug panel
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Skift til højre Firebug panel
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Åbn Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Foregående Firebug faneblad
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Ryd konsol
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Åbn Trace-konsol
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Gå tilbage
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Gå frem
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Increase Text Size
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Decrease Text Size
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normal Text Size
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Panelvælger
+customizeShortcuts=Firebug Genvejsbindinger
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=panelværktøjer
+a11y.labels.firebug_panels=Firebug-paneler
+a11y.labels.firebug_side_panels=Firebug sidepaneler
+a11y.labels.firebug_window=Firebug-vindue
+a11y.labels.firebug_status=Firebug-status
+a11y.labels.reset=nulstil
+a11y.labels.reset_shortcut=nulstil genvej %S
+aria.labels.inactive_panel=inaktivt panel
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=log rækker
+a11y.labels.call_stack=kald stak
+a11y.labels.document_structure=document structure
+a11y.labels.title_panel=%S panel
+a11y.labels.title_side_panel=%S side panel
+a11y.labels.cached=cached
+aria.labels.stack_trace=stack trace
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=position
+a11y.layout.position_top=position top
+a11y.layout.position_right=position højre
+a11y.layout.position_bottom=position bund
+a11y.layout.position_left=position venstre
+a11y.layout.margin_top=margin top
+a11y.layout.margin_right=margin højre
+a11y.layout.margin_bottom=margin bund
+a11y.layout.margin_left=margin venstre
+a11y.layout.border_top=border top
+a11y.layout.border_right=border højre
+a11y.layout.border_bottom=border bund
+a11y.layout.border_left=border venstre
+a11y.layout.padding_top=padding top
+a11y.layout.padding_right=padding højre
+a11y.layout.padding_bottom=padding bund
+a11y.layout.padding_left=padding venstre
+a11y.layout.top=top
+a11y.layout.right=højre
+a11y.layout.bottom=bund
+a11y.layout.left=venstre
+a11y.layout.width=bredde
+a11y.layout.height=højde
+a11y.layout.size=størrelse
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=Tryk Enter efterfulgt af Tab for at redigere individuelle værdier
+a11y.labels.style_rules=style-regler
+aria.labels.inherited_style_rules=nedarvede style-regler
+a11y.labels.computed_styles=computed styles
+a11y.labels.dom_properties=DOM-egenskaber
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=inline editor
+a11y.labels.value_for_attribute_in_element=værdi for %S attribut i %S element
+a11y.labels.attribute_for_element=attribut for %S element
+a11y.labels.text_contents_for_element=tekstindhold for %S element
+a11y.labels.defined_in_file=defineret i %S
+a11y.labels.declarations_for_selector=style deklarationer for \"%S\" selector
+a11y.labels.property_for_selector=CSS-egenskab for selector: %S
+a11y.labels.value_property_in_selector=%S egenskabsværdi for selector %S
+a11y.labels.css_selector=CSS selector
+a11y.labels.source_code_for_file=kildekode for fil %S
+a11y.labels.press_enter_to_add_new_watch_expression=tryk enter for at tilføje et nyt watch-udtryk
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=overridden
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=har betinget break point
+a11y.updates.has_disabled_break_point=har deaktiveret break point
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script suspenderet på linje %S i %S, fil %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=match fundet for \"%S\" i %S log-rækker
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=match fundet for \"%S\" på linje %S i %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=match fundet for \"%S\" i %S element på sti %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=match fundet for \"%S\" i attribut %S=%S af %S element på sti %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=match fundet for \"%S\" i tekstindhold: %S af %S element på sti %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=match fundet for \"%S\" i selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=match fundet for \"%S\" i style deklaration %S i selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=match fundet for \"%S\" i DOM egenskab %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=match fundet for \"%S\" i %S, %S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=match fundet for \"%S\" i net summary row: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=no matches fundet for \"%S\"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Er du sikker på at du vil nulstille alle Firebug-indstillinger til standard-indstillinger?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=Konsol skal være aktiveret
+warning.Command_line_blocked?=Kommandolinje blokeret?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Genindlæs for at aktivere vindue-konsol
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=Ressourcen fra denne URL er ikke tekst
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Gå tilbage til dette panel
+firebug.history.Stay_on_this_panel=Bliv på dette panel
+firebug.history.Go_forward_to_this_panel=Gå fremad til dette panel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Gå tilbage
+firebug.history.Go_forward=Gå fremad
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Script Panel was inactive during page load
+script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript is not enabled
+script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Enable JavaScript and Refresh
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=All scripts were filtered
+script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=No Javascript on this page
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Debugger is already active
+script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
+script.button.Go_to_that_page=Go to that page
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Luk
+firebug.View=Vis
+firebug.Help=Hjælp
+firebug.Run=Evaluer
+firebug.Copy=Kopier
+firebug.History=History
+firebug.Run_the_entered_command=Run the entered command
+firebug.Clear_the_Command_Editor=Clear the Command Editor
+firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
+firebug.Insert_a_previously_entered_command=Insert a previously entered command
+firebug.AlwaysOpenInWindow=Åbn altid i nyt vindue
+firebug.OpenWith=Åbn med editor
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Domæner...
+firebug.Configure_Editors=Configure Editors
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Inspicér
+firebug.InspectElement=Inspicér element
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Break ved fejl
+firebug.InspectTooltip=Klik på et element på siden for at inspicere
+firebug.EditHTMLTooltip=Ret denne HTML
+firebug.Profile=Profilér
+firebug.Clear=Ryd
+firebug.ClearConsole=Ryd konsol
+firebug.ClearTooltip=Ryd konsollens indhold
+firebug.All=Alle
+firebug.Images=Billeder
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Configured Firebug Editors
+editors.Editor=Editor
+editors.Executable=Executable
+editors.Launch_Arguments=Launch Arguments
+editors.Add=Add
+editors.Remove=Remove
+editors.Change=Change
+editors.Move_Up=Move Up
+editors.Close=Close
+editors.Browse=Browse...
+changeEditor.Editor_Configuration=Editor Configuration
+changeEditor.Name=Navn:
+changeEditor.Executable=Program:
+changeEditor.CmdLine=Argumenter:
+changeEditor.Supplied_arguments=Arguments supplied by Firebug:
+changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
+changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
+changeEditor.Line_number=Line number (if available)
+changeEditor.Invalid_Application_Path=Invalid Application Path
+changeEditor.Application_does_not_exist=The specified application doesn't exist!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Ret
+firebug.css.sourceEdit=Source Edit
+firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
+firebug.css.liveEdit=Live Edit
+firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
+firebug.EditCSSTooltip=Ret dette stylesheet
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Show Break Notifications
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
+firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=There are no child objects
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=more
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Object Properties
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(no completions)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
+firebug.failedToPreviewImageURL=Failed to load the given URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/de/cookies.properties b/locale/de/cookies.properties
index d708306..5a8d9fd 100644
--- a/locale/de/cookies.properties
+++ b/locale/de/cookies.properties
@@ -1,276 +1,276 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Erlaubt es, Cookies zu untersuchen und zu manipulieren
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Sitzung
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Cookies grundsätzlich akzeptieren
-cookies.tip.AllowGlobally=Standardmäßig alle Cookies akzeptieren / verweigern
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Cookie Ereignisse anzeigen
-cookies.tip.showCookieEvents=Cookie Ereignisse (hinzugefügt, geändert, gelöscht) in der Konsole protokollieren
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Abgewiesene Cookies sofort löschen.
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Ausschneiden
-cookies.Copy=Kopieren
-cookies.CopyAll=Alle kopieren
-cookies.Paste=Einfügen
-cookies.Delete=Löschen
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Wert löschen
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Bearbeiten
-cookies.Accept=Akzeptieren
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Header zurücksetzen
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=Hier können Sie bestimmen, welche Websites immer oder niemals Cookies setzen dürfen. nGeben Sie die exakte Adresse der Website ein, die Sie bearbeiten wollen, und klicken Sie dann auf Blockieren,
-cookies.ExceptionsTitle=Ausnahmen - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support for Cookie Monitoring
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=Disable Cookies panel for %S
-cookies.Permissions=Enable or Disable Cookies panel
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=Systemseiten
-cookies.LocalFiles=Lokale Dateien
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Cookies aus der Liste entfernen?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Sollen alle Sitzungscookies der Liste entfernt werden?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Sollen alle Cookies von %S gelöscht werden?
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Entfernen des Cookies bestätigen
-cookies.tip.Confirm_cookie_removal=Falls aktiviert, wird ein Bestätigungsdialog angezeigt bevor alle Cookies in der Liste gelöscht werden
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Alle Cookies aus Liste entfernen.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Sitzungscookies entfernen
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Alle Sessioncookies aus der Liste entfernen.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Neues Cookie für %S erstellen
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Wert
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Cookie Berechtigungen für %S verwalten
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=Alle Cookies wurden entfernt.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=Alle Sessioncookies wurden entfernt.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Abgewiesene Cookies:
-cookies.console.nocookiesreceived=Keine Cookies empfangen
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=Gelöscht
-cookies.console.added=Hinzugefügt
-cookies.console.changed=Geändert
-cookies.console.cleared=geleert
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domain
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Geschützt
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Akzeptiert
-cookies.status.downgraded=Reduziert
-cookies.status.flagged=Markiert
-cookies.status.rejected=Abgewiesen
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Wert
-cookies.info.rawdatatab.Raw_Data=Rohdaten
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Standard (Sitzungs-Cookies akzeptieren)
-cookies.default.thirdPartySession=Standard (Sitzungs-Cookies akzeptieren)
-cookies.default.thirdParty=Standard (Cookies akzeptieren)
-cookies.default.allow=Standard (Cookies akzeptieren)
-cookies.default.deny=Standard (Keine Cookies erlauben)
-cookies.default.warn=Standard (Vor dem Akzeptieren eines Cookies warnen)
-cookies.default.limitThirdParty=Standard(Cookies von dritten zurückweisen)
-cookies.host.session=Akzeptiere Sitzungs-Cookies von %S
-cookies.host.accept=Akzeptiere Cookies von %S
-cookies.host.reject=Cookies von %S zurückweisen
-cookies.host.limitThirdParty=Cookies von dritten für %S zurückweisen
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie name is not valid.
-cookies.edit.invalidhost=Cookie host is not valid.
-cookies.edit.invalidpath=Cookie path is not valid.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly,
-# cookies.header.maxAge):
-# Column labels used in the cookie header.
-cookies.header.name=Name
-cookies.header.value=Wert
-cookies.header.rawValue=Originalwert
-cookies.header.domain=Domain
-cookies.header.size=Größe
-cookies.header.rawSize= Originalgröße
-cookies.header.path=Pfad
-cookies.header.expires=Verfallsdatum
-cookies.header.security=Sicherheit
-cookies.header.httponly=HttpOnly
-cookies.header.maxAge=Maximales Alter
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip, cookies.header.maxAge.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Name
-cookies.header.value.tooltip=Wert
-cookies.header.rawValue.tooltip=Originalwert, der im Cookie gespeichert wurde
-cookies.header.domain.tooltip=Domain
-cookies.header.rawSize.tooltip=Originalgröße des gespeicherten Cookies
-cookies.header.size.tooltip=Größe
-cookies.header.path.tooltip=Pfad
-cookies.header.expires.tooltip=Verfallsdatum
-cookies.header.security.tooltip=Sicherheit
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-cookies.header.maxAge.tooltip=Maximale Zeit in der das Cookie gespeichert wird
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies,
-# cookies.netinfo.deleted.tooltip):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Empfangene Cookies
-cookies.netinfo.Sent_Cookies=Gesendete Cookies
-cookies.netinfo.deleted.tooltip=Verfall des Cookies beantragen
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Pfadfilter
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Alle Cookies exportieren
-cookies.export.Export_All_Cookies_Tooltip=Alle Browsercookies nach cookies.txt exportieren
-cookies.export.Export_For_Site=Cookies für die Website exportieren ...
-cookies.export.Export_For_Site_Tooltip=Cookies für %S nach cookies.txt exportieren.
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=Es gibt keine aktive Seite.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Bei Cookie Änderung anhalten
-cookies.Disable_Break_On_Cookie=Bei Cookie Änderung anhalten deaktivieren
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Haltepunkte
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=An '%S' Cookie anhalten
-cookies.menu.tooltip.Break_On_Cookie=Bei '%S' anhalten, falls entfernt oder geändert.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Haltepunktbedingung bearbeiten
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Evaluierung der Haltepunktbedingung fehlgeschlagen
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Für diese Website entfernen
-cookies.Create=Cookie erstellen
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Tools
-cookies.ToolsTooltip=Tools
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Alle Cookies anzeigen...
-cookies.ViewAllTooltip=Cookie-Manager öffnen
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Website-Berechtigungen...
-cookies.ViewExceptionsTooltip=Liste aller berechtigten und blockierten Websites anzeigen
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filter
-cookies.FilterTooltip=Einstellungen als Filter übernehmen.
-cookies.filter.byPath=Cookies nach Pfad filtern
-cookies.filter.byPathTooltip=Nur Cookies anzeigen, die mit dem aktuellen Pfad übereinstimmen.
-cookies.filter.showRejectedCookies=Blockierte Cookies anzeigen
-cookies.filter.showRejectedCookiesTooltip=Auch blockierte Cookies werden in der Liste angezeigt.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Cookie bearbeiten
-cookies.edit.name.label=Name:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Pfad:
-cookies.edit.expire.label=Verfallsdatum:
-cookies.edit.value.label=Wert:
-cookies.edit.secure.label=Cookie schützen
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Sitzung
-cookies.edit.urlEncode.label=Wert URL-kodieren
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Nach Cookies Filtern
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Alle Cookies entfernen
-cookie.sizeinfo.Size=Größe
-cookie.sizeinfo.Raw_Size=Originalgröße
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Erlaubt es, Cookies zu untersuchen und zu manipulieren
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Sitzung
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Cookies grundsätzlich akzeptieren
+cookies.tip.AllowGlobally=Standardmäßig alle Cookies akzeptieren / verweigern
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Cookie Ereignisse anzeigen
+cookies.tip.showCookieEvents=Cookie Ereignisse (hinzugefügt, geändert, gelöscht) in der Konsole protokollieren
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Abgewiesene Cookies sofort löschen.
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Ausschneiden
+cookies.Copy=Kopieren
+cookies.CopyAll=Alle kopieren
+cookies.Paste=Einfügen
+cookies.Delete=Löschen
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Wert löschen
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Bearbeiten
+cookies.Accept=Akzeptieren
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Header zurücksetzen
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=Hier können Sie bestimmen, welche Websites immer oder niemals Cookies setzen dürfen. nGeben Sie die exakte Adresse der Website ein, die Sie bearbeiten wollen, und klicken Sie dann auf Blockieren,
+cookies.ExceptionsTitle=Ausnahmen - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support for Cookie Monitoring
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=Disable Cookies panel for %S
+cookies.Permissions=Enable or Disable Cookies panel
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=Systemseiten
+cookies.LocalFiles=Lokale Dateien
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Cookies aus der Liste entfernen?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Sollen alle Sitzungscookies der Liste entfernt werden?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Sollen alle Cookies von %S gelöscht werden?
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Entfernen des Cookies bestätigen
+cookies.tip.Confirm_cookie_removal=Falls aktiviert, wird ein Bestätigungsdialog angezeigt bevor alle Cookies in der Liste gelöscht werden
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Alle Cookies aus Liste entfernen.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Sitzungscookies entfernen
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Alle Sessioncookies aus der Liste entfernen.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Neues Cookie für %S erstellen
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Wert
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Cookie Berechtigungen für %S verwalten
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=Alle Cookies wurden entfernt.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=Alle Sessioncookies wurden entfernt.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Abgewiesene Cookies:
+cookies.console.nocookiesreceived=Keine Cookies empfangen
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=Gelöscht
+cookies.console.added=Hinzugefügt
+cookies.console.changed=Geändert
+cookies.console.cleared=geleert
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domain
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Geschützt
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Akzeptiert
+cookies.status.downgraded=Reduziert
+cookies.status.flagged=Markiert
+cookies.status.rejected=Abgewiesen
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Wert
+cookies.info.rawdatatab.Raw_Data=Rohdaten
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Standard (Sitzungs-Cookies akzeptieren)
+cookies.default.thirdPartySession=Standard (Sitzungs-Cookies akzeptieren)
+cookies.default.thirdParty=Standard (Cookies akzeptieren)
+cookies.default.allow=Standard (Cookies akzeptieren)
+cookies.default.deny=Standard (Keine Cookies erlauben)
+cookies.default.warn=Standard (Vor dem Akzeptieren eines Cookies warnen)
+cookies.default.limitThirdParty=Standard(Cookies von dritten zurückweisen)
+cookies.host.session=Akzeptiere Sitzungs-Cookies von %S
+cookies.host.accept=Akzeptiere Cookies von %S
+cookies.host.reject=Cookies von %S zurückweisen
+cookies.host.limitThirdParty=Cookies von dritten für %S zurückweisen
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie name is not valid.
+cookies.edit.invalidhost=Cookie host is not valid.
+cookies.edit.invalidpath=Cookie path is not valid.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly,
+# cookies.header.maxAge):
+# Column labels used in the cookie header.
+cookies.header.name=Name
+cookies.header.value=Wert
+cookies.header.rawValue=Originalwert
+cookies.header.domain=Domain
+cookies.header.size=Größe
+cookies.header.rawSize= Originalgröße
+cookies.header.path=Pfad
+cookies.header.expires=Verfallsdatum
+cookies.header.security=Sicherheit
+cookies.header.httponly=HttpOnly
+cookies.header.maxAge=Maximales Alter
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip, cookies.header.maxAge.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Name
+cookies.header.value.tooltip=Wert
+cookies.header.rawValue.tooltip=Originalwert, der im Cookie gespeichert wurde
+cookies.header.domain.tooltip=Domain
+cookies.header.rawSize.tooltip=Originalgröße des gespeicherten Cookies
+cookies.header.size.tooltip=Größe
+cookies.header.path.tooltip=Pfad
+cookies.header.expires.tooltip=Verfallsdatum
+cookies.header.security.tooltip=Sicherheit
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+cookies.header.maxAge.tooltip=Maximale Zeit in der das Cookie gespeichert wird
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies,
+# cookies.netinfo.deleted.tooltip):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Empfangene Cookies
+cookies.netinfo.Sent_Cookies=Gesendete Cookies
+cookies.netinfo.deleted.tooltip=Verfall des Cookies beantragen
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Pfadfilter
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Alle Cookies exportieren
+cookies.export.Export_All_Cookies_Tooltip=Alle Browsercookies nach cookies.txt exportieren
+cookies.export.Export_For_Site=Cookies für die Website exportieren ...
+cookies.export.Export_For_Site_Tooltip=Cookies für %S nach cookies.txt exportieren.
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=Es gibt keine aktive Seite.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Bei Cookie Änderung anhalten
+cookies.Disable_Break_On_Cookie=Bei Cookie Änderung anhalten deaktivieren
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Haltepunkte
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=An '%S' Cookie anhalten
+cookies.menu.tooltip.Break_On_Cookie=Bei '%S' anhalten, falls entfernt oder geändert.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Haltepunktbedingung bearbeiten
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Evaluierung der Haltepunktbedingung fehlgeschlagen
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Für diese Website entfernen
+cookies.Create=Cookie erstellen
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Tools
+cookies.ToolsTooltip=Tools
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Alle Cookies anzeigen...
+cookies.ViewAllTooltip=Cookie-Manager öffnen
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Website-Berechtigungen...
+cookies.ViewExceptionsTooltip=Liste aller berechtigten und blockierten Websites anzeigen
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filter
+cookies.FilterTooltip=Einstellungen als Filter übernehmen.
+cookies.filter.byPath=Cookies nach Pfad filtern
+cookies.filter.byPathTooltip=Nur Cookies anzeigen, die mit dem aktuellen Pfad übereinstimmen.
+cookies.filter.showRejectedCookies=Blockierte Cookies anzeigen
+cookies.filter.showRejectedCookiesTooltip=Auch blockierte Cookies werden in der Liste angezeigt.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Cookie bearbeiten
+cookies.edit.name.label=Name:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Pfad:
+cookies.edit.expire.label=Verfallsdatum:
+cookies.edit.value.label=Wert:
+cookies.edit.secure.label=Cookie schützen
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Sitzung
+cookies.edit.urlEncode.label=Wert URL-kodieren
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Nach Cookies Filtern
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Alle Cookies entfernen
+cookie.sizeinfo.Size=Größe
+cookie.sizeinfo.Raw_Size=Originalgröße
diff --git a/locale/de/firebug-amo.properties b/locale/de/firebug-amo.properties
index 2c8decf..61c3ced 100644
--- a/locale/de/firebug-amo.properties
+++ b/locale/de/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug integriert sich in Firefox, um Ihnen eine ganze Reihe nützlicher Entwicklungswerkzeugen während des Surfens an die Hand zu geben. Sie können CSS, HTML und JavaScript live in jeder Webseite bearbeiten, debuggen und überwachen...\\\n\\\nFirebug 1.6 benötigt Firefox 3.6 oder höher.
-firebug.amo.description=Firebug integriert sich in Firefox, um Ihnen eine ganze Reihe nützlicher Entwicklungswerkzeugen während des Surfens an die Hand zu geben. Sie können CSS, HTML und JavaScript live in jeder Webseite bearbeiten, debuggen und überwachen.\\\n\\\nBesuchen Sie die Firebug-Website, um die Dokumentation, Bildschirmfotos und Diskussionsforen einzusehen: http://getfirebug.com (Englisch)
-firebug.amo.developer.comments=Falls Sie irgendwelche Probleme haben, lesen Sie bitte die Firebug-FAQ.\\\n\\\nhttp://getfirebug.com/faq.html (Englisch)
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug integriert sich in Firefox, um Ihnen eine ganze Reihe nützlicher Entwicklungswerkzeugen während des Surfens an die Hand zu geben. Sie können CSS, HTML und JavaScript live in jeder Webseite bearbeiten, debuggen und überwachen...\\\n\\\nFirebug 1.6 benötigt Firefox 3.6 oder höher.
+firebug.amo.description=Firebug integriert sich in Firefox, um Ihnen eine ganze Reihe nützlicher Entwicklungswerkzeugen während des Surfens an die Hand zu geben. Sie können CSS, HTML und JavaScript live in jeder Webseite bearbeiten, debuggen und überwachen.\\\n\\\nBesuchen Sie die Firebug-Website, um die Dokumentation, Bildschirmfotos und Diskussionsforen einzusehen: http://getfirebug.com (Englisch)
+firebug.amo.developer.comments=Falls Sie irgendwelche Probleme haben, lesen Sie bitte die Firebug-FAQ.\\\n\\\nhttp://getfirebug.com/faq.html (Englisch)
diff --git a/locale/de/firebug-tracing.properties b/locale/de/firebug-tracing.properties
index 24c972a..5e582ac 100644
--- a/locale/de/firebug-tracing.properties
+++ b/locale/de/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Firebug-Ablaufverfolgung öffnen
-Always_Open_Firebug_Tracing=Firebug-Ablaufverfolgung immer öffnen
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Ablaufverfolgung
-tracing.Show_Scope_Variables=Scope-Variablen anzeigen
-tracing.Show_Time=Zeit anzeigen
-tracing.tab.Stack=Stack
-tracing.tab.Exception=Ausnahme
-tracing.tab.Properties=Eigenschaften
-tracing.tab.Scope=Scope
-tracing.tab.Response=Antwort
-tracing.tab.Source=Quelltext
-tracing.tab.Interfaces=Schnittstellen
-tracing.tab.Object=Objekt
-tracing.tab.Event=Ereignis
-tracing.cmd.Clear=Leeren
-tracing.cmd.tip.Clear=Alle Nachrichten entfernen
-tracing.cmd.Find=Finden
-tracing.cmd.tip.Find=Text finden
-tracing.cmd.Bookmark=Lesezeichen
-tracing.cmd.tip.Bookmark=Lesezeichen hinzufügen
-tracing.cmd.Restart=Firefox neustarten
-tracing.cmd.tip.Restart=Firefox neustarten
-tracing.cmd.Exit=Firefox beenden
-tracing.cmd.tip.Exit=Firefox beenden
-tracing.cmd.Save=In Datei speichern
-tracing.cmd.tip.Save=Protokolle in eine Datei speichern
-tracing.cmd.Load=Aus Datei laden
-tracing.cmd.tip.Load=Protokoll aus Datei laden
-tracing.cmd.Expand_All=Alle ausklappen
-tracing.cmd.Collapse_All=Alle einklappen
-tracing.cmd.Tools=Extras
-tracing.cmd.tip.Tools=Extras
-tracing.cmd.Clear_Browser_Cache=Browser-Cache löschen
-tracing.cmd.tip.Clear_Browser_Cache=Browser-Cache löschen
-tracing.cmd.Force_Garbage_Collector=Garbage-Collector erzwingen
-tracing.cmd.tip.Force_Garbage_Collector=Garbage-Collector erzwingen
-tracing.cmd.Open_Profile_Directory=Profilordner öffnen
-tracing.cmd.tip.Open_Profile_Directory=Profilordner öffnen
-tracing.option.A11Y_Description=Barrierefreiheit
-tracing.option.ACTIVATION_Description=Firebug Aktivierung
-tracing.option.ACTIVITYOBSERVER_Description=Firebug Aktivitätsüberwachung
-tracing.option.ANNOTATIONS_Description=Firebug Websitevermerk
-tracing.option.BP_Description=Breakpoints
-tracing.option.CACHE_Description=Quellcode Cache
-tracing.option.COMMANDLINE_Description=Kommandozeile & Kommandozeilen Popup
-tracing.option.COMPILATION_UNITS_Description=Skript Kompilierungseinheiten
-tracing.option.CONSOLE_Description=Konsolenpanel
-tracing.option.CSS_Description=CSS Interpretation
-tracing.option.DISPATCH_Description=Ereignisversand
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate Erstellung
-tracing.option.EDITOR_Description=Inline Editor & Autovervollständigung
-tracing.option.ERRORLOG_Description=Fehlerprotokoll von JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Interne Firebug Fehler
-tracing.option.EVAL_Description=Scriptausführung
-tracing.option.FBS_BP_Description=Firebug-Service Breakpoints
-tracing.option.FBS_CREATION_Description=Firebug-Service Skripterstellung
-tracing.option.FBS_ERRORS_Description=Firebug-Service Fehler
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug-Service Suchdebugger
-tracing.option.FBS_FUNCTION_Description=Firebug-Service Funktion
-tracing.option.FBS_JSDCONTEXT_Description=Firebug-Service JavaScript Debugger Kontext
-tracing.option.FBS_SRCUNITS_Description=Firebug-Service Quellcodeeinheiten
-tracing.option.FBS_STEP_Description=Firebug-Service JavaScript Debugger Stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug-Service überwachte Dateien
-tracing.option.FUNCTION_NAMES_Description=JavaScript Funktionsnamen
-tracing.option.HISTORY_Description=Firebug Navigationsverlauf
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP Anfrageüberwachung
-tracing.option.INFOTIP_Description=Infotipp
-tracing.option.INITIALIZE_Description=Firebug Initialisierung
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON Betrachter
-tracing.option.LINETABLE_Description=Skriptzeilen Tabelle
-tracing.option.LOCALE_Description=Lokalisierung
-tracing.option.LOCATIONS_Description=Quelltext Stellen
-tracing.option.NET_Description=Netzwerk Panel
-tracing.option.NET_EVENTS_Description=Netzwerk Ereignisse
-tracing.option.OPTIONS_Description=Firebug Einstellungen
-tracing.option.PANELS_Description=Panels
-tracing.option.SHORTCUTS_Description=Tastaturkürzel
-tracing.option.SOURCEFILES_Description=JavaScript Quelltextdateien
-tracing.option.SPY_Description=XMLHttpRequests Überwachung
-tracing.option.STACK_Description=JavaScript Call Stack
-tracing.option.STORAGE_Description=Einstellungsspeicher
-tracing.option.SVGVIEWER_Description=SVG Betrachter
-tracing.option.FONTS_Description=Schriftinformationen und Schriftanzeige
-tracing.option.TOOLTIP_Description=Start Button Kurzinfo
-tracing.option.TOPLEVEL_Description=Höchste Ebene in JavaScript
-tracing.option.UI_LOOP_Description=JavaScript Debugging Benutzerschnittstelle
-tracing.option.WINDOWS_Description=Firebug Fenster- & Tabüberwachung
-tracing.option.XMLVIEWER_Description=XML Betrachter
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Firebug-Ablaufverfolgung öffnen
+Always_Open_Firebug_Tracing=Firebug-Ablaufverfolgung immer öffnen
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Ablaufverfolgung
+tracing.Show_Scope_Variables=Scope-Variablen anzeigen
+tracing.Show_Time=Zeit anzeigen
+tracing.tab.Stack=Stack
+tracing.tab.Exception=Ausnahme
+tracing.tab.Properties=Eigenschaften
+tracing.tab.Scope=Scope
+tracing.tab.Response=Antwort
+tracing.tab.Source=Quelltext
+tracing.tab.Interfaces=Schnittstellen
+tracing.tab.Object=Objekt
+tracing.tab.Event=Ereignis
+tracing.cmd.Clear=Leeren
+tracing.cmd.tip.Clear=Alle Nachrichten entfernen
+tracing.cmd.Find=Finden
+tracing.cmd.tip.Find=Text finden
+tracing.cmd.Bookmark=Lesezeichen
+tracing.cmd.tip.Bookmark=Lesezeichen hinzufügen
+tracing.cmd.Restart=Firefox neustarten
+tracing.cmd.tip.Restart=Firefox neustarten
+tracing.cmd.Exit=Firefox beenden
+tracing.cmd.tip.Exit=Firefox beenden
+tracing.cmd.Save=In Datei speichern
+tracing.cmd.tip.Save=Protokolle in eine Datei speichern
+tracing.cmd.Load=Aus Datei laden
+tracing.cmd.tip.Load=Protokoll aus Datei laden
+tracing.cmd.Expand_All=Alle ausklappen
+tracing.cmd.Collapse_All=Alle einklappen
+tracing.cmd.Tools=Extras
+tracing.cmd.tip.Tools=Extras
+tracing.cmd.Clear_Browser_Cache=Browser-Cache löschen
+tracing.cmd.tip.Clear_Browser_Cache=Browser-Cache löschen
+tracing.cmd.Force_Garbage_Collector=Garbage-Collector erzwingen
+tracing.cmd.tip.Force_Garbage_Collector=Garbage-Collector erzwingen
+tracing.cmd.Open_Profile_Directory=Profilordner öffnen
+tracing.cmd.tip.Open_Profile_Directory=Profilordner öffnen
+tracing.option.A11Y_Description=Barrierefreiheit
+tracing.option.ACTIVATION_Description=Firebug Aktivierung
+tracing.option.ACTIVITYOBSERVER_Description=Firebug Aktivitätsüberwachung
+tracing.option.ANNOTATIONS_Description=Firebug Websitevermerk
+tracing.option.BP_Description=Breakpoints
+tracing.option.CACHE_Description=Quellcode Cache
+tracing.option.COMMANDLINE_Description=Kommandozeile & Kommandozeilen Popup
+tracing.option.COMPILATION_UNITS_Description=Skript Kompilierungseinheiten
+tracing.option.CONSOLE_Description=Konsolenpanel
+tracing.option.CSS_Description=CSS Interpretation
+tracing.option.DISPATCH_Description=Ereignisversand
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate Erstellung
+tracing.option.EDITOR_Description=Inline Editor & Autovervollständigung
+tracing.option.ERRORLOG_Description=Fehlerprotokoll von JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Interne Firebug Fehler
+tracing.option.EVAL_Description=Scriptausführung
+tracing.option.FBS_BP_Description=Firebug-Service Breakpoints
+tracing.option.FBS_CREATION_Description=Firebug-Service Skripterstellung
+tracing.option.FBS_ERRORS_Description=Firebug-Service Fehler
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug-Service Suchdebugger
+tracing.option.FBS_FUNCTION_Description=Firebug-Service Funktion
+tracing.option.FBS_JSDCONTEXT_Description=Firebug-Service JavaScript Debugger Kontext
+tracing.option.FBS_SRCUNITS_Description=Firebug-Service Quellcodeeinheiten
+tracing.option.FBS_STEP_Description=Firebug-Service JavaScript Debugger Stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug-Service überwachte Dateien
+tracing.option.FUNCTION_NAMES_Description=JavaScript Funktionsnamen
+tracing.option.HISTORY_Description=Firebug Navigationsverlauf
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP Anfrageüberwachung
+tracing.option.INFOTIP_Description=Infotipp
+tracing.option.INITIALIZE_Description=Firebug Initialisierung
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON Betrachter
+tracing.option.LINETABLE_Description=Skriptzeilen Tabelle
+tracing.option.LOCALE_Description=Lokalisierung
+tracing.option.LOCATIONS_Description=Quelltext Stellen
+tracing.option.NET_Description=Netzwerk Panel
+tracing.option.NET_EVENTS_Description=Netzwerk Ereignisse
+tracing.option.OPTIONS_Description=Firebug Einstellungen
+tracing.option.PANELS_Description=Panels
+tracing.option.SHORTCUTS_Description=Tastaturkürzel
+tracing.option.SOURCEFILES_Description=JavaScript Quelltextdateien
+tracing.option.SPY_Description=XMLHttpRequests Überwachung
+tracing.option.STACK_Description=JavaScript Call Stack
+tracing.option.STORAGE_Description=Einstellungsspeicher
+tracing.option.SVGVIEWER_Description=SVG Betrachter
+tracing.option.FONTS_Description=Schriftinformationen und Schriftanzeige
+tracing.option.TOOLTIP_Description=Start Button Kurzinfo
+tracing.option.TOPLEVEL_Description=Höchste Ebene in JavaScript
+tracing.option.UI_LOOP_Description=JavaScript Debugging Benutzerschnittstelle
+tracing.option.WINDOWS_Description=Firebug Fenster- & Tabüberwachung
+tracing.option.XMLVIEWER_Description=XML Betrachter
diff --git a/locale/de/firebug.properties b/locale/de/firebug.properties
index 894bde6..0af3cee 100644
--- a/locale/de/firebug.properties
+++ b/locale/de/firebug.properties
@@ -1,1702 +1,1702 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Konsole
-panel.tip.console=Erlaubt es, Konsolennachrichten anzuzeigen und JavaScript Befehle auszuführen
-Panel-net=Netzwerk
-panel.tip.net=Erlaubt es, den Netzwerkverkehr zu analysieren
-Panel-html=HTML
-panel.tip.html=Erlaubt es, DOM-Knoten zu überprüfen und zu manipulieren
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Erlaubt es, CSS Stylesheets zu überprüfen und zu manipulieren
-Panel-script=Skript
-panel.tip.script=Erlaubt es, JavaScript zu debuggen
-Panel-dom=DOM
-panel.tip.dom=Erlaubt es, DOM Eigenschaften zu untersuchen und zu verändern
-Panel-css=Styles
-panel.tip.css=Erlaubt es, die CSS Regeln des ausgewählten DOM-Knotens zu untersuchen und zu verändern
-Panel-computed=Berechnet
-panel.tip.computed=Erlaubt es, die berechneten CSS Werte des ausgewählten DOM-Knotens zu untersuchen
-Panel-layout=Layout
-panel.tip.layout=Erlaubt es, die Layoutdaten des ausgewählten DOM-Knotens zu untersuchen und zu verändern
-Panel-domSide=DOM
-panel.tip.domSide=Erlaubt es, die DOM Eigenschaften des ausgewählten DOM-Knotens zu untersuchen und zu verändern
-Panel-watches=Überwachen
-panel.tip.watches=Erlaubt es, die JavaScript Variablen des aktuellen Stack-Frames zu untersuchen und Überwachungsausdrücke hinzuzufügen
-Panel-breakpoints=Haltepunkte
-panel.tip.breakpoints=Erlaubt es, gesetzte Haltepunkte zu verändern
-Panel-callstack=Stack
-panel.tip.callstack=Erlaubt es, den aktuellen JavaScript Aufrufstack zu untersuchen
-Panel-scopes=Scopes
-firebug.DetachFirebug=Firebug in einem neuen Fenster öffnen
-firebug.AttachFirebug=Firebug an Browser-Fenster anheften
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Firebug insgesamt;%1$S Firebugs insgesamt
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Deaktiviert
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=Im Browser
-minimized=Minimiert
-enablement.for_all_pages=für alle Seiten
-enablement.on=An
-enablement.off=Aus
-enablement.Panel_activation_status=Panel Aktivierungsstatus:
-none=Geschlossen
-Firebug_-_inactive_for_current_website=Firebug - inaktiv für die aktuelle Webseite
-Activate_Firebug_for_the_current_website=Firebug für die aktuelle Webseite aktivieren
-Minimized=Minimiert
-Minimize_Firebug=Firebug minimieren
-On_for_all_web_pages=Für alle Webseiten eingeschaltet
-firebug.menu.tip.On_for_all_Web_Sites=Firebug standardmäßig für alle Webseiten aktivieren
-firebug.menu.Clear_Activation_List=Aktivitätsliste leeren
-firebug.menu.tip.Clear_Activation_List=Liste der Webseiten leeren, für die Firebug aktiviert ist
-firebug.menu.Detached=Abgedockt
-firebug.menu.tip.Detached=Firebug in einem separaten Fenster anzeigen
-firebug.menu.Top=Oben
-firebug.menu.tip.Top=Firebug an der oberen Seite des Browserfensters anordnen
-firebug.menu.Bottom=Unten
-firebug.menu.tip.Bottom=Firebug an der unteren Seite des Browserfensters anordnen
-firebug.menu.Left=Links
-firebug.menu.tip.Left=Firebug an der linken Seite des Browserfensters anordnen
-firebug.menu.Right=Rechts
-firebug.menu.tip.Right=Firebug an der rechten Seite des Browserfensters anordnen
-firebug.uiLocation=Position der Firebug Benutzeroberfläche
-firebug.menu.tip.UI_Location=Firebug Benutzeroberfläche positionieren
-# LOCALIZATION NOTE (annotations.confirm.clear):
-# Used in a confirmation dialog when all Firebug annotations are going to be deleted
-annotations.confirm.clear=Möchten Sie wirklich alle Anmerkungen für jegliche Internetseite löschen?
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Firebug-Optionen
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Alle Module anzeigen
-console.option.Show_Command_Line=Kommandozeile anzeigen
-console.option.tip.Show_Command_Line=Kommandozeile fokussieren / Kommandozeilenpopup anzeigen
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=JavaScript-Fehler anzeigen
-console.option.tip.Show_JavaScript_Errors=JavaScript Fehlermeldungen in der Konsole protokollieren
-ShowJavaScriptWarnings=JavaScript-Warnungen anzeigen
-console.option.tip.Show_JavaScript_Warnings=JavaScript Warnmeldungen in der Konsole protokollieren
-ShowCSSErrors=CSS-Fehler anzeigen
-console.option.tip.Show_CSS_Errors=JavaScript Fehlermeldungen in der Konsole protokollieren
-ShowXMLHTMLErrors=XML/HTML Fehler anzeigen
-console.option.tip.Show_XML_HTML_Errors=XML/HTML Fehlermeldungen in der Konsole protokollieren
-ShowStackTrace=Stack-Ablaufverfolgung mit Fehlern anzeigen
-console.option.tip.Show_Stack_Trace=Stacktrace Informationen für Fehlermeldungen anzeigen
-ShowXMLHttpRequests=XMLHttpRequests anzeigen
-console.option.tip.Show_XMLHttpRequests=XMLHttpRequests in der Konsole protokollieren
-ShowChromeErrors=Chrome-Fehler anzeigen
-console.option.tip.Show_System_Errors=Programm- und Add-on-interne Fehlermeldungen in der Konsole protokollieren
-ShowChromeMessages=Chrome-Nachrichten anzeigen
-console.option.tip.Show_System_Messages=Programm- und Add-on-interne Meldungen in der Konsole protokollieren
-ShowNetworkErrors=Netzwerkfehler anzeigen
-console.option.tip.Show_Network_Errors=Netzwerkfehlermeldungen in der Konsole protokollieren
-JavascriptOptionsStrict=Strikte Warnungen (Leistungseinbuße)
-console.option.tip.Show_Strict_Warnings=Auch strikte Warnungen in der Konsole protokollieren
-Command_History=Befehlschronik
-console.option.Show_Command_Editor=Befehlseditor anzeigen
-console.option.tip.Show_Command_Editor=Zum Befehlseditor umschalten
-commandLineShowCompleterPopup=Vervollständigungs-Pop-up anzeigen
-console.option.tip.Show_Completion_List_Popup=Das Popup zur Befehlsvervollständigung anzeigen
-Assertion=Assertion fehlgeschlagen
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (Zeile %S)
-LineAndCol=%S (Zeile %S, Spalte %S)
-InstanceLine=%S #%S (Zeile %S)
-StackItem=%S (%S Zeile %S)
-SystemItem=<System>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=In %S Panel untersuchen
-panel.tip.Inspect_In_Panel=Zum %S Panel wechseln, um das Objekt dort zu untersuchen
-NoName=(kein Name)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Ganzen Text anzeigen
-html.option.tip.Show_Full_Text=Elementinhalte nicht abschneiden
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Leerzeichen anzeigen
-html.option.tip.Show_Whitespace=Leerzeichen innerhalb von Knoten anzeigen
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Kommentare anzeigen
-html.option.tip.Show_Comments=Kommentarknoten anzeigen
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Entitäten als Symbole anzeigen
-html.option.tip.Show_Entities_As_Symbols=Zeigt alle XML Entitäten in ihrer symbolischen Darstellung
-html.option.Show_Entities_As_Names=Entitäten als Namen anzeigen
-html.option.tip.Show_Entities_As_Names=Zeigt alle XML Entitäten als Namen
-html.option.Show_Entities_As_Unicode=Entitäten als Unicode anzeigen
-html.option.tip.Show_Entities_As_Unicode=Zeigt alle XML Entitäten in ihrer Unicode Darstellung
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Änderungen hervorheben
-html.option.tip.Highlight_Mutations=Änderungen innerhalb Knoten hervorheben
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Änderungen aufklappen
-html.option.tip.Expand_Mutations=Baumansicht erweitern, um geänderte Knoten anzuzeigen
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Änderungen im Sichtbereich anzeigen
-html.option.tip.Scroll_To_Mutations=Baumansicht scrollen, um geänderte Knoten anzuzeigen
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Schnellinfo Box anzeigen
-inspect.option.tip.Show_Quick_Info_Box=Informationen über das aktuell untersuchte Element in einer die Webseite überlagernden Infobox anzeigen
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Box-Modell schattieren
-inspect.option.tip.Shade_Box_Model=Verschiedene Teile des Box-Models schattieren
-ScrollIntoView=Zum Sichtbereich scrollen
-html.tip.Scroll_Into_View=Seite scrollen, um das Element sichtbar zu machen
-NewAttribute=Neues Attribut...
-html.tip.New_Attribute=Ein neues Attribut zu diesem Element hinzufügen
-html.Edit_Node=%S bearbeiten…
-html.Node=Knoten
-html.tip.Edit_Node=Den %S Knoten im Volltext Editor bearbeiten
-DeleteElement=Element löschen
-html.Delete_Element=Element aus der Baumstruktur löschen
-DeleteNode=Knoten löschen
-html.Delete_Node=Knoten aus der Baumstruktur löschen
-# Quick Info Box
-quickInfo=Schnellinfo
-computedStyle=Berechneter Style
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Bei Modifizierung anhalten
-html.Disable_Break_On_Mutate=\\"Bei Modifizierung anhalten\\" deaktivieren
-html.label.Break_On_Text_Change=Bei Textänderung anhalten
-html.label.HTML_Breakpoints=HTML-Haltepunkte
-html.label.Break_On_Attribute_Change=Bei Attributänderung anhalten
-html.tip.Break_On_Attribute_Change=JavaScript Ausführung anhalten, wenn ein Attribut dieses Elements geändert wird
-html.label.Break_On_Child_Addition_or_Removal=Beim Hinzufügen/Löschen eines Kindknotens anhalten
-html.tip.Break_On_Child_Addition_or_Removal=JavaScript Ausführung anhalten, wenn ein Kindknoten zu diesem Element hinzugefügt oder von diesem gelöscht wird
-html.label.Break_On_Element_Removal=Beim Löschen eines Elements anhalten
-html.tip.Break_On_Element_Removal=JavaScript Ausführung anhalten, wenn das Element gelöscht wird
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Alle auf-/zuklappen
-html.tip.Expand/Contract_All=Alle Kindknoten rekursiv auf-/zuklappen
-# LOCALIZATION NOTE (dom.scopeName): Used within the DOM panel to name the fake property that
-# contains the innermost closure scope of a function.
-dom.scopeName=(geschlossen)
-# LOCALIZATION NOTE (dom.scopeParentName): Used within the DOM panel to name the fake property
-# that contains the parent of a closure scope.
-dom.scopeParentName=(übergeordneter Anwendungsbereich)
-# LOCALIZATION NOTE (dom.tip.scopeName): Used within the DOM panel as a tooltip when hovering
-# "(closure)".
-dom.tip.scopeName=verwenden Sie <func>.%closureVariable um in der Kommandozeile drauf zuzugreifen.
-# LOCALIZATION NOTE (dom.tip.scopeMemberName): Used within the DOM panel as a tooltip when
-# hovering a variable in a closure.
-# %S: the variable name - starts with "%"
-dom.tip.scopeMemberName=verwenden Sie <func>.%S um in der Kommandozeile drauf zuzugreifen.
-# LOCALIZATION NOTE (firebug.reps.declarativeScope, firebug.reps.objectScope, firebug.reps.withScope):
-# Labels shown to describe different types of closure scopes.
-firebug.reps.declarativeScope=[deklarativer Anwendungsbereich]
-firebug.reps.objectScope=[Objekt Anwendungsbereich]
-firebug.reps.withScope=[with Anwendungsbereich]
-# LOCALIZATION NOTE (firebug.reps.optimizedAway): Label shown to denote a closure variable that has
-# been optimized away.
-firebug.reps.optimizedAway=(wegoptimiert)
-# LOCALIZATION NOTE (firebug.reps.element.attribute_value, firebug.reps.element.property_value):
-# Used in the Console panel for elements. If an input element has two different values, one set
-# as "value" attribute and one set as 'value' property, these labels are used to distinguish it.
-firebug.reps.element.attribute_value=Attribut Wert
-firebug.reps.element.property_value=Eigenschafts Wert
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Bei Eigenschaftsänderung anhalten
-dom.tip.Break_On_Property_Change=JavaScript Ausführung anhalten, wenn diese Eigenschaft geändert wird
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Bei Eigenschaftsänderung anhalten deaktivieren
-dom.label.DOM_Breakpoints=DOM-Haltepunkte
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Attribut \\"%S\\" bearbeiten...
-html.tip.Edit_Attribute=Den Wert des Attributs "%S" dieses Elements bearbeiten
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Attribut \\"%S\\" löschen
-html.tip.Delete_Attribute=Das Attribut "%S" dieses Elements löschen
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Geerbt von
-SothinkWarning=Die \\"Sothink SWF Catcher\\"-Erweiterung hindert Firebug an der ordnungsgemäßen Ausführung.<br/><br/>Bitte lesen Sie <a href=\\"http://www.getfirebug.com/faq.html#Sothink\\" target=\\"_new\\">diesen Artikel in der Firebug-FAQ (Englisch)</a> für weitere Hilfe.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=Zwölf Boxkämpfer jagen Viktor quer über den großen Sylter Deich. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=Es wurden keine Style-Regeln definiert. Sie können <a>eine Regel erstellen</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=Dieses Element hat keine Style-Regeln. Sie können <a>eine Regel für es erstellen</a>.
-EditStyle=Element-Style bearbeiten...
-style.tip.Edit_Style=Den Inline-Style dieses Elements bearbeiten
-AddRule=Regel hinzufügen…
-css.tip.AddRule=Eine allgemeine Regel zu diesem Element hinzufügen
-NewRule=Neue Regel...
-css.tip.New_Rule=Eine neue Regel hinzufügen
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule="%S" löschen
-css.tip.Delete_Rule=Die Regel "%S" und alle ihre Eigenschaften löschen
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Media Query bearbeiten
-css.menu.tip.Edit_Media_Query=Die Media Query dieser Regel bearbeiten
-NewProp=Neue Eigenschaft...
-css.tip.New_Prop=Eine neue Eigenschaft zu der aktuellen Regel hinzufügen
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=\\"%S\\" bearbeiten...
-css.tip.Edit_Prop=Den Wert der Eigenschaft "%S" bearbeiten
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=\\"%S\\" deaktivieren
-css.tip.Disable_Prop=Die Eigenschaft "%S" deaktivieren
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=\\"%S\\" löschen
-css.tip.Delete_Prop=Die Eigenschaft "%S" löschen
-# Console context menu labels.
-BreakOnThisError=Bei diesem Fehler anhalten
-console.menu.tip.Break_On_This_Error=JavaScript Ausführung anhalten, wenn dieser Fehler auftritt
-BreakOnAllErrors=Bei allen Fehlern anhalten
-console.menu.tip.Break_On_All_Errors=JavaScript Ausführung anhalten, wenn ein Fehler auftritt
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Throw/Catch verfolgen
-script.option.tip.Track_Throw_Catch=Ausnahmen verfolgen, auch wenn diese durch try/catch-Blöcke abgefangen werden
-UseLastLineForEvalName=Letzte Quelltextzeile für eval()-Namen verwenden
-UseMD5ForEvalName=MD5 für eval()-Namen verwenden
-# Breakpoints side panel
-Breakpoints=Haltepunkte
-ErrorBreakpoints=Fehler-Haltepunkte
-LoggedFunctions=Protokollierte Funktionen
-EnableAllBreakpoints=Alle Haltepunkte aktivieren
-breakpoints.option.tip.Enable_All_Breakpoints=Alle aufgelisteten Haltepunkte aktivieren
-DisableAllBreakpoints=Alle Haltepunkte deaktivieren
-breakpoints.option.tip.Disable_All_Breakpoints=Alle aufgelisteten Haltepunkte deaktivieren
-ClearAllBreakpoints=Alle Haltepunkte entfernen
-breakpoints.option.tip.Clear_All_Breakpoints=Alle aufgelisteten Haltepunkte löschen
-ConditionInput=Dieser Haltepunkt stoppt nur, wenn dieser Ausdruck wahr ist:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Haltepunkt entfernen
-breakpoints.tip.Remove_Breakpoint=Den Haltepunkt löschen
-breakpoints.Disable_Breakpoint=Haltepunkt deaktivieren
-breakpoints.tip.Disable_Breakpoint=Den Haltepunkt deaktivieren
-breakpoints.Enable_Breakpoint=Haltepunkt aktivieren
-breakpoints.tip.Enable_Breakpoint=Den Haltepunkt aktivieren
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Fortsetzen
-script.balloon.Disable=Deaktivieren
-ScriptsFilterStatic=Statische Skripte anzeigen
-ScriptsFilterEval=Statische und eval()-Skripte anzeigen
-ScriptsFilterEvent=Statische und Ereignis-Skripte anzeigen
-ScriptsFilterAll=Statische, eval()- und Ereignis-Skripte anzeigen
-ScriptsFilterStaticShort=statisch
-ScriptsFilterEvalShort=eval()
-ScriptsFilterEventShort=Ereignisse
-ScriptsFilterAllShort=alle
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Alle erweitern
-callstack.tip.Expand_All=Alle Stack-Frame Funktionen aufklappen
-callstack.Collapse_All=Alle zusammenklappen
-callstack.tip.Collapse_All=Alle Stack-Frame Funktionen zuklappen
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack-Frames werden nur angezeigt, wenn die Skriptausführung angehalten wurde.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Benutzerdefinierte Eigenschaften anzeigen
-dom.option.tip.Show_User_Props=Benutzerdefinierte Objekteigenschaften anzeigen
-ShowUserFuncs=Benutzerdefinierte Funktionen anzeigen
-dom.option.tip.Show_User_Funcs=Benutzerdefinierte Objektmethoden anzeigen
-ShowDOMProps=DOM-Eigenschaften anzeigen
-dom.option.tip.Show_DOM_Props=Im DOM definierte Eigenschaften anzeigen
-ShowDOMFuncs=DOM-Funktionen anzeigen
-dom.option.tip.Show_DOM_Funcs=Im DOM definierte Funktionen anzeigen
-ShowDOMConstants=DOM-Konstanten anzeigen
-dom.option.tip.Show_DOM_Constants=Im DOM definierte Konstanten anzeigen
-ShowClosures=Zeige Anwendungsbereich
-dom.option.tip.Show_Closures=Zeigt mit verschiedenen Funktionen verbundene Closures an (aktiviert den Debugger)
-ShowInlineEventHandlers=Inline Ereignisbehandler anzeigen
-ShowInlineEventHandlersTooltip=Verfügbare Inline Ereignisbehandler anzeigen, die nicht mit einer Funktion verknüpft sind
-ShowOwnProperties=Nur eigene Eigenschaften anzeigen
-ShowOwnPropertiesTooltip=Prototyp-Kette nicht anzeigen
-ShowEnumerableProperties=Nur abzählbare Eigenschaften anzeigen
-ShowEnumerablePropertiesTooltip=Nicht-abzählbare Eigenschaften ausblenden
-NoMembersWarning=Für dieses Objekt können keine Eigenschaften angezeigt werden.
-NewWatch=Neuer Überwachungsausdruck...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Überwachung hinzufügen
-watch.tip.Add_Watch=Die Auswahl/das Objekt zum Überwachen Seitenpanel zur Überwachung hinzufügen
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Quelltext kopieren
-script.tip.Copy_Source_Code=Den ausgewählten Quelltext in die Zwischenablage kopieren
-Use_hash_plus_number_to_go_to_line=#<Nummer> eintippen, um zu einer Zeile zu springen
-CopyValue=Wert kopieren
-dom.tip.Copy_Value=Den Wert der Eigenschaft in die Zwischenablage kopieren
-Copy_Name=Name kopieren
-dom.tip.Copy_Name=Den Namen der Eigenschaft in die Zwischenablage kopieren
-Copy_Path=Pfad kopieren
-dom.tip.Copy_Path=Den Eigenschaftspath in die Zwischenablage kopieren
-NewProperty=Neue Eigenschaft...
-EditProperty=Eigenschaft bearbeiten...
-dom.tip.Edit_Property=Den Wert der Eigenschaft bearbeiten
-EditVariable=Variable bearbeiten...
-stack.tip.Edit_Variable=Den Wert der Variable bearbeiten
-EditWatch=Überwachung bearbeiten...
-watch.tip.Edit_Watch=Den Wert des Überwachungsausdrucks bearbeiten
-DeleteProperty=Eigenschaft löschen
-dom.tip.Delete_Property=Die Eigenschaft löschen
-DeleteWatch=Überwachung löschen
-DeleteAllWatches=Alle Überwachungen löschen
-watch.tip.Delete_Watch=Den Überwachungsausdruck löschen
-watch.tip.Delete_All_Watches=Alle Überwachungsausdrücke löschen
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Haltepunkt setzen
-script.tip.Set_Breakpoint=Haltepunkt an dieser Zeile setzen/löschen
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Haltepunktbedingung bearbeiten...
-breakpoints.tip.Edit_Breakpoint_Condition=Die Bedingung bearbeiten, unter der dieser Haltepunkt die JavaScript-Ausführung stoppt
-NoBreakpointsWarning=In dieser Seite wurden keine Haltepunkte gesetzt.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Nur angewendete Styles anzeigen
-style.option.tip.Only_Show_Applied_Styles=Nur Styles anzeigen, die diesem Element zugewiesen wurden
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=User-Agent-CSS anzeigen
-style.option.tip.Show_User_Agent_CSS=Auch das vom Browser definierte CSS anzeigen
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Farben als Hex
-computed.option.tip.Colors_As_Hex=Farben im Hexadezimalformat anzeigen
-computed.option.label.Colors_As_RGB=Farben als RGB
-computed.option.tip.Colors_As_RGB=Farben im RGB-Format anzeigen
-computed.option.label.Colors_As_HSL=Farben als HSL
-computed.option.tip.Colors_As_HSL=Farben im HSL-Format anzeigen
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=active Pseudo-Klassen Styles anzeigen
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=hover Pseudo-Klassen Styles anzeigen
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=focus Pseudo-Klassen Styles anzeigen
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Deklaration untersuchen
-css.tip.Inspect_Declaration= Die Deklaration dieser Schriftart untersuchen
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Zusammenfassende Eigenschaften erweitern
-css.option.tip.Expand_Shorthand_Properties=CSS Kurzschreibweisen erweitern zu all ihren Eigenschaften
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Alphabethisch sortieren
-computed.option.tip.Sort_Alphabetically=Die Styles nach deren Name sortieren/in Kategorien einteilen
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Mozilla-spezifische Styles anzeigen
-computed.option.tip.Show_Mozilla_Specific_Styles=Auch Styles mit -moz Präfix anzeigen
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=Dieses Element hat keine benutzerdefinierten Style-Regeln.
-script.Type_any_key_to_filter_list=Etwas eingeben, um die Liste zu filtern
-# LOCALIZATION NOTE (location.inline):
-# Label used within the Location Menu for inline styles or scripts
-location.inline=Inline
-# LOCALIZATION NOTE (location.no_domain):
-# Label used within the Location Menu for the group of scripts,
-# which don't have a domain specified like e.g. eval()'ed scripts
-location.no_domain=keine Domain
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=Position
-LayoutAdjacent=adjacent
-position=position
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Lineale und Hilfslinien anzeigen
-layout.option.tip.Show_Rulers=Lineale und Hilfslinien auf der Seite anzeigen, wenn mit der Maus über Teile der Layout-Box gefahren wird
-# Net panel
-Loading=Lädt...
-Headers=Header
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Anfrageliste leeren
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Header zurücksetzen
-net.header.tip.Reset_Header=Spaltenkopfanzeige zurücksetzen
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=Angefragter URL und benutzte HTTP-Methode
-net.header.Status=Status
-net.header.Status_Tooltip=Status der empfangenen Antwort
-net.header.Domain=Domain
-net.header.Domain_Tooltip=Domain der ausgeführten Anfrage
-net.header.Size=Größe
-net.header.Size_Tooltip=Größe der empfangenen Antwort
-net.header.Timeline=Zeitlinie
-net.header.Timeline_Tooltip=Detaillierte zeitliche Informationen über die Anfrage- und Antwortdauer.
-net.header.Local_IP=Lokale IP
-net.header.Local_IP_Tooltip=Lokale IP-Adresse und Portnummer, an welche die Anfrage gebunden ist
-net.header.Remote_IP=Remote-IP
-net.header.Remote_IP_Tooltip=Remote-IP-Adresse und Port, an welche die Anfrage gebunden ist
-net.header.Protocol=Protokoll
-net.header.Protocol_Tooltip=Das URL-Protokoll, das benutzt wurde, um die Ressource im Web anzusprechen
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=XHR-Haltepunkte
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Bei XHR anhalten
-net.tip.Break_On_XHR=JavaScript-Ausführung anhalten, wenn ein XMLHttpRequest gemacht wird
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=Quelltext anzeigen
-net.headers.pretty_print=Formatiert anzeigen
-# LOCALIZATION NOTE (net.filter.label.All, net.filter.tooltip.All, net.filter.label.HTML,
-# net.filter.tooltip.HTML, net.filter.label.CSS, net.filter.tooltip.CSS, net.filter.label.JS,
-# net.filter.tooltip.JS, net.filter.label.XHR, net.filter.tooltip.XHR, net.filter.label.Images,
-# net.filter.tooltip.Images, net.filter.label.Plugins, net.filter.tooltip.Plugins,
-# net.filter.label.Media, net.filter.tooltip.Media):
-# Labels and tooltips for Net panel filter (used on the Net panel toolbar)
-net.filter.label.All=Alles
-net.filter.tooltip.All=Zeige alle MIME Typen
-net.filter.label.HTML=HTML
-net.filter.tooltip.HTML=Zeige nur Markup Dateien
-net.filter.label.CSS=CSS
-net.filter.tooltip.CSS=Zeige nur CSS Dateien
-net.filter.label.JS=JavaScript
-net.filter.tooltip.JS=zeige nur JavaScript Dateien
-net.filter.label.XHR=XHR
-net.filter.tooltip.XHR=Zeige nur XMLHttpRequests
-net.filter.label.Images=Bilder
-net.filter.tooltip.Images=Zeige nur Bilder
-net.filter.label.Plugins=Plug-ins
-net.filter.tooltip.Plugins=Zeige nur Flash und Silverlight Dateien.
-net.filter.label.Media=Medien
-net.filter.tooltip.Media=Zeige nur Audio und Video Dateien
-net.filter.label.Fonts=Schriften
-net.filter.tooltip.Fonts=Zeige nur Schriften
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Post
-Put=Put
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Antwort
-URLParameters=Parameter
-Cache=Cache
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Allgemeine Informationen
-fontviewer.Meta_Data=Meta-Daten
-fontviewer.view_source=Quelltext anzeigen
-fontviewer.Preview=Vorschau
-fontviewer.view_characters=Zeichen anzeigen
-fontviewer.pretty_print=formattiert anzeigen
-fontviewer.view_sample=Beispiel anzeigen
-fontviewer.uniqueid=Eindeutige ID
-fontviewer.vendor=Anbieter
-fontviewer.license=Lizenz
-fontviewer.description=Beschreibung
-fontviewer.copyright=Copyright
-fontviewer.credits=Beitragende
-fontviewer.trademark=Handelsmarke
-fontviewer.licensee=Lizenznehmer
-fontviewer.extension=Erweiterung
-fontviewer.pangram=Zwölf Boxkämpfer jagen Viktor quer über den großen Sylter Deich
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Nach Schlüssel sortieren
-jsonviewer.do_not_sort=Nicht sortieren
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=\\\"%S\\\" als JSON kopieren
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Anfrage-Header
-ResponseHeaders=Antwort-Header
-CachedResponseHeaders=Antwort-Header aus dem Cache
-PostRequestHeaders=Anfrageheader des Uploadstreams
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=Die Anfrage wurde direkt über den Cache abgewickelt, daher gibt es keine Antwort vom Server. Siehe unten für die zwischengespeicherte Antwort.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebugs Protokolllimit wurde erreicht. %1$S Eintrag wird nicht angezeigt.;Firebugs Protokolllimit wurde erreicht. %1$S Einträge werden nicht angezeigt.
-LimitPrefs=Voreinstellungen
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Um das Limit zu ändern, bearbeiten Sie: %S
-Refresh=Aktualisieren
-panel.tip.Refresh=Panelanzeige aktualisieren
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=In einem neuen Tab öffnen
-firebug.tip.Open_In_Tab=Den URL in einem neuen Browsertab öffnen
-Open_Response_In_New_Tab=Antwort in einem neuen Tab öffnen
-net.tip.Open_Response_In_New_Tab=Die Antwort in einem neuen Browsertab öffnen
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Zeitmessung
-ProfilerStarted=Die Zeitmessung läuft. Klicken Sie erneut auf \\"Zeitmessung\\" um den Report zu sehen.
-ProfilerRequiresTheScriptPanel=Das Skript Panel muss aktiviert sein, damit das Profiling funktioniert.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$ms, %2$S Aufruf);(%1$Sms, %2$S Aufrufe)
-NothingToProfile=Keine Aktivität, die gemessen werden könnte
-PercentTooltip=Prozentualer Zeitverbrauch der Funktion
-CallsHeaderTooltip=Anzahl der Funktionsaufrufe
-OwnTimeHeaderTooltip=Zeitverbrauch der Funktion, geschachtelte Aufrufe ausgenommen
-TimeHeaderTooltip=Zeitverbrauch der Funktion einschließlich geschachtelter Aufrufe
-AvgHeaderTooltip=Durchschnittliche Zeit einschließlich Funktionsaufrufen
-MinHeaderTooltip=Geringste Zeit eingeschließlich Funktionsaufrufen
-MaxHeaderTooltip=Meiste Zeit einschließlich Funktionsaufrufen
-ProfileButton.Tooltip=JavaScript Ausführungszeit analysieren
-Function=Funktion
-Percent=Prozent
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Aufrufe
-OwnTime=Eigene Zeit
-Time=Zeit
-Avg=Durchschn.
-Min=Min.
-Max=Max.
-File=Datei
-# Support for standard actions.
-Copy=Kopieren
-Cut=Ausschneiden
-Remove=Entfernen
-Delete=Löschen
-Paste=Einfügen
-SelectAll=Alles markieren
-html.Copy_Node=%S kopieren
-html.tip.Copy_Node=Den %S Knoten und alle seine Inhalte in die Zwischenablage kopieren
-CopyInnerHTML=innerHTML kopieren
-html.tip.Copy_innerHTML=Die Inhalte des Elements in die Zwischenablage kopieren
-CopyXPath=XPath kopieren
-html.tip.Copy_XPath=Den XPath des Elements in die Zwischenablage kopieren
-Copy_CSS_Path=CSS-Pfad kopieren
-html.tip.Copy_CSS_Path=Den CSS-Pfad des Elements in die Zwischenablage kopieren
-# LOCALIZATION NOTE (html.menu.Paste, html.tip.Paste): Context menu item (with subitems).
-# Used in the HTML Panel to paste HTML/SVG/XML/XUL/MathML contents
-# %S = the type of the content to paste (HTML, SVG, XML, XUL or MathML)
-html.menu.Paste=%S Einfügen
-html.tip.Paste=Als %S Inhalt einfügen
-# LOCALIZATION NODE (html.menu.Paste_*, html.tip.Paste_*): Context menu items.
-# These items are paste options, and appears as subitems of html.menu.Paste in the context menu.
-html.menu.Paste_Replace_Content=Inhalt ersetzten
-html.tip.Paste_Replace_Content=Inhalt dieses Knotens ersetzten
-html.menu.Paste_Replace_Node=Knoten ersetzten
-html.tip.Paste_Replace_Node=Ersetzte das HTML dieses Knotens
-html.menu.Paste_AsFirstChild=Als erstes Kind
-html.tip.Paste_AsFirstChild=Als erstes Kind dieses Knoten einfügen
-html.menu.Paste_AsLastChild=Als letztes Kind
-html.tip.Paste_AsLastChild=Als letztes Kind dieses Knotens einfügen
-html.menu.Paste_Before=bevor
-html.tip.Paste_Before=Vor diesem Knoten einfügen
-html.menu.Paste_After=Nach
-html.tip.Paste_After=Nach diesem Knoten einfügen
-# LOCALIZATION NOTE (html.menu.Reload_Frame, html.menu.tip.Reload_Frame):
-# Context menu item of HTML frames
-html.menu.Reload_Frame=Frame neu laden
-html.menu.tip.Reload_Frame=Inhalt des Frames neu laden
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Adresse kopieren
-clipboard.tip.Copy_Location=Den URL der Objektquelle in die Zwischenablage kopieren
-CopyURLParameters=URL-Parameter kopieren
-net.tip.Copy_URL_Parameters=URL-Parameter in die Zwischenablage kopieren
-CopyPOSTParameters=POST-Parameter kopieren
-net.tip.Copy_POST_Parameters=POST-Parameter in die Zwischenablage kopieren
-CopyLocationParameters=Adresse mit Parametern kopieren
-net.tip.Copy_Location_Parameters=Den URL inkl. Parametern in die Zwischenablage kopieren
-CopyRequestHeaders=Anfrage-Header kopieren
-net.tip.Copy_Request_Headers=Anfrageheader in die Zwischenablage kopieren
-CopyResponseHeaders=Antwort-Header kopieren
-net.tip.Copy_Response_Headers=Antwortheader in die Zwischenablage kopieren
-CopyResponse=Antwort-Body kopieren
-net.tip.Copy_Response=Antwortinhalt in die Zwischenablage kopieren
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Fehler kopieren
-console.menu.tip.Copy_Error=Die Fehlerinformationen in die Zwischenablage kopieren
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Funktion kopieren
-dom.tip.Copy_Source=Den Funktionsquelltext in die Zwischenablage kopieren
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Aufrufe in \\"%S\\" protokollieren
-dom.tip.Log_Calls_To_Function=Aufrufe der Funktion "%" im Konsole Panel mitprotokollieren
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Ereignisse protokollieren
-html.tip.Show_Events_In_Console=Ereignisinformationen in der Konsole protokollieren
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Aktiviert
-panel.tip.Enabled=Die Panelaktivierung ein-/ausschalten
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Kommandozeilenpopup anzeigen
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Die Firebug-Konsole unterstützt \\'%S\\' nicht.
-# LOCALIZATION NOTE (commandline.errorSourceHeader): Message displayed in the header of the
-# source code where an exception has occured.
-commandline.errorSourceHeader=IN DER FIREBUG KOMMANDOZEILE AUSGEFÜHRTER AUSDRUCK:
-# LOCALIZATION NOTE (commandline.MethodDisabled): Message displayed in the Console panel,
-# if a disabled method is entered via the Command Line.
-commandline.MethodDisabled=Diese Kommandozeilenmethode ist temporär deaktiviert.
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Die Firebug-Kommandozeile unterstützt \\'%S\\' nicht.
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Aktuelles Fenster:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=\\"Bei allen Fehlern anhalten\\" deaktivieren
-console.Break_On_All_Errors=Bei allen Fehlern anhalten
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Bei diesem Fehler anhalten
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Pfeiltasten, Tab oder Enter benutzen
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript ist in Ihren Firefox-Einstellungen deaktiviert. Falls Sie das Konsolenmodul benutzen möchten, aktivieren Sie JavaScript unter: \\"Extras\\" -> \\"Einstellungen...\\" -> \\"Inhalt\\" -> \\"JavaScript aktivieren\\".
-# LOCALIZATION NOTE (console.tip.ScriptPanelMustBeEnabledForTraces): Message shown inside the Console
-# panel instead of a stack trace when it is missing because the script panel is disabled. The text
-# enclosed in <a></a> is a link which enables the Script panel.
-console.ScriptPanelMustBeEnabledForTraces=Das Skript Panel muss aktiviert sein, um Stack-Traces zu bekommen. <a>Skript Panel aktivieren.</a>
-# LOCALIZATION NOTE (tooltip.multipleFiltersHint):
-# Hint used for Console and Net panel filter button tooltips describing the shortcut for selecting
-# multiple filters
-tooltip.multipleFiltersHint=Strg+Klicken benutzen, um mehrere Filter auszuwählen
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=Es gibt zu viele Elemente in diesem Array, um sie auf der Seite zu hervorzuheben (aktuelles Limit ist %S).\\\\nBitte die Einstellung \\'extensions.firebug.multiHighlightLimit\\' beachten.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Die Firebug Kommandozeile ist für XML-Seiten deaktiviert. Sie können <a>zum HTML Panel wechseln</a>, um sie zu aktivieren.
-# LOCALIZATION NOTE (commandline.Use_in_Command_Line): Right-click option for copying a JS value into the variable
-# $p and opening the Command Line.
-commandline.Use_in_Command_Line=In Kommandozeile benutzen
-commandline.tip.Use_in_Command_Line=Fokussiert die Kommandozeile und macht diesen Wert als "$p" verfügbar
-# LOCALIZATION NOTE (commandline.include.includeSuccess): For the include() function. This message is displayed
-# in the Console panel when a remote script evaluation succeeded
-# %S = the filename
-commandline.include.includeSuccess=%S erfolgreich eingebunden
-# LOCALIZATION NOTE (commandline.include.aliasNotFound): For the include() function. This message is displayed
-# in the Console panel when a requested alias is not found
-# %S = the alias name
-commandline.include.aliasNotFound=Alias "%S" wurde nicht gefunden.
-# LOCALIZATION NOTE (commandline.include.loadFail): For the include() function. This message is displayed
-# in the Console panel when the remote script download failed
-# %S = the filename
-commandline.include.loadFail=Das folgende Skript konnte nicht geladen werden: %S
-# LOCALIZATION NOTE (commandline.include.invalidRequestProtocol): For the include() function. This message is displayed
-# in the Console panel when the user tries to download a script with another scheme than HTTP(S)
-# %S = the filename
-commandline.include.invalidRequestProtocol=Nur die Protokolle HTTP/HTTPS werden unterstützt.
-# LOCALIZATION NOTE (commandline.include.invalidSyntax): For the include() function. This message is displayed
-# in the Console panel when the user tries to execute a non-Javascript file
-# or when the script contains syntax errors
-commandline.include.invalidSyntax=Das Einbinden ist wegen Syntaxfehlern fehlgeschlagen. Enthält die Datei wirklich JavaScript?
-# LOCALIZATION NOTE (commandline.include.aliasCreated): For the include() function. This message is displayed
-# in the Console panel when a new alias is created successfully
-# %S = the alias name
-commandline.include.aliasCreated=Alias "%S" wurde erstellt.
-# LOCALIZATION NOTE (commandline.include.aliasRemoved): For the include() function. This message is displayed
-# in the Console panel when a new alias is removed successfully
-# %S = the alias name
-commandline.include.aliasRemoved=Alias "%S" wurde entfernt.
-# LOCALIZATION NOTE (commandline.include.invalidAliasName): For the include() function. This message is displayed
-# in the Console panel if an invalid alias name (which contains "/" or ".") is provided.
-# %S = the invalid alias name
-commandline.include.invalidAliasName=Aliasnamen dürfen keine "." oder "/" enthalten; ungültiger Aliasname: "%S"
-# LOCALIZATION NOTE (commandline.include.tooLongAliasName): For the include() function. This message is displayed
-# in the Console panel if the provided alias name is too long (i.e. more than 30 characters)
-# %S = the invalid alias name
-commandline.include.tooLongAliasName=Aliasnamen dürfen nicht mehr als 30 Zeichen enthalten; ungültiger Aliasname: "%S"
-# LOCALIZATION NOTE (commandline.include.wrongAliasArgument): For the include() function. This message is displayed
-# in the Console panel if the type of the alias name is invalid (a string is expected)
-commandline.include.invalidAliasArgumentType=Ungültiger zweiter Parameter; Aliasname erwartet
-# LOCALIZATION NOTE (commandline.include.wrongUrlArgument): For the include() function. This message is displayed
-# in the Console panel if the type of the url arguement is invalid (a string or null are expected)
-commandline.include.invalidUrlArgumentType=Ungültiger URL-Parameter
-# LOCALIZATION NOTE (commandline.include.confirmDelete): For the include() function. This message is displayed
-# in a confirmation dialog when the user wants to delete an alias
-# %S = the name of the alias to delete
-commandline.include.confirmDelete=Soll der Alias "%S" wirklich entfernt werden?
-# LOCALIZATION NOTE (commandline.include.noDefinedAlias): For the include() function. This message is displayed
-# when the user wants to display the aliases table but there no alias is defined.
-commandline.include.noDefinedAlias=(bisher wurde kein Alias definiert)
-commandline.tip.Delete_Alias=Alias entfernen
-commandline.tip.Edit_Alias_Name=Lässt den Namen des Alias bearbeiten
-commandline.tip.Edit_Alias_URL=Lässt den URL des Alias bearbeiten
-commandline.tip.Open_In_Scratchpad=Den Inhalt des Skripts in der JavaScript-Umgebung öffnen
-commandline.tip.Include_Script=Skript herunterladen und ausführen
-commandline.label.DeleteAlias=Alias entfernen
-commandline.label.EditAliasName=Aliasname bearbeiten
-commandline.label.EditAliasURL=Alias-URL bearbeiten
-commandline.label.OpenInScratchpad=In JavaScript-Umgebung öffnen
-commandline.label.IncludeScript="%S" einbinden
-# LOCALIZATION NOTE (Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting things.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-#
-# NOTE to translators: this message was originally taken from cookies.msg.Do_not_show_this_message_again
-Do_not_show_this_message_again=Diese Nachricht nicht wieder anzeigen
-# LOCALIZATION NOTE (scratchpad.loading, scratchpad.failLoading)
-# Used when Firebug downloads a remote script and wants to display it in Scratchpad
-# The messages appears as Javascript Comments in Scratchpad
-scratchpad.loading=Wird geladen, bitte warten...
-scratchpad.failLoading=Fehler beim Laden des Skripts.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Antwort-Body
-net.sizeinfo.Post_Body=Post-Body
-net.sizeinfo.Total_Sent=Insgesamt versendet
-net.sizeinfo.Total_Received=Insgesamt erhalten
-net.sizeinfo.Including_HTTP_Headers=Einschließlich HTTP-Header
-net.ActivationMessage=Das Netzwerkmodul ist aktiviert. Solange das Netzwerkmodul inaktiv ist, werden keine Anfragen angezeigt.
-net.responseSizeLimitMessage=Das Antwortlimit von Firebug wurde erreicht. Sie können sich die gesamte Antwort <a>in einem neuen Firefox-Tab anzeigen</a> lassen.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Das Größenlimit der Post-Antwort wurde erreicht und diese von Firebug entfernt.
-net.Break_On_XHR=Bei XHR anhalten
-net.label.Parameters=Parameter
-net.label.Parts=Teile
-net.label.Source=Quelle
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Erneut senden
-net.tip.Resend=Anfrage erneut senden
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Browser-Cache deaktivieren
-net.option.tip.Disable_Browser_Cache=Den HTTP-Cache des Browsers deaktivieren
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Paint-Ereignisse anzeigen
-net.option.tip.Show_Paint_Events=MozAfterPaint Ereignisse als grüne Linien innerhalb der Zeitlinie darstellen
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=BFCache Antworten anzeigen
-net.option.tip.Show_BFCache_Responses=Antworten vom Back-Forward Cache ebenfalls anzeigen
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Beim Nächsten anhalten
-script.Disable_Break_On_Next=Beim nächsten anhalten deaktivieren
-ShowHttpHeaders=HTTP-Header anzeigen
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S Anfrage;%1$S Anfragen
-# LOCALIZATION NOTE (net.summary.from_cache):
-# Label used in the Net panel's request summary. Displays the summarized response size coming from cache for all HTTP requests.
-net.summary.from_cache=%S aus dem Cache
-# LOCALIZATION NOTE (net.summary.tip.request_count, net.summary.tip.total_size,
-# net.summary.tip.total_cached_size, net.summary.tip.total_request_time):
-# Labels used for the tooltips in the Net panel's request summary
-net.summary.tip.request_count=Anzahl der Anfragen
-net.summary.tip.total_size=Gesamtgröße aller Anfragen
-net.summary.tip.total_cached_size=Gesamtgröße gecachter Anfragen
-net.summary.tip.total_request_time=Benötigte Gesamtzeit, um alle Anfragen zu laden und Zeitpunkt, als das "onload" Ereignis aufgetreten ist
-StopLoading=Laden stoppen
-net.tip.Stop_Loading=Laden der Anfrage abbrechen
-LargeData=(sehr große Datenmenge)
-ShowComputedStyle=Berechneten Style anzeigen
-StyleGroup-text=Text
-StyleGroup-background=Hintergrund
-StyleGroup-box=Box-Modell
-StyleGroup-layout=Layout
-StyleGroup-other=Anderes
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Farbe kopieren
-css.tip.Copy_Color=Farbe in die Zwischenablage kopieren
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Grafikadresse kopieren
-css.tip.Copy_Image_Location=Den URL des Bildes in die Zwischenablage kopieren
-OpenImageInNewTab=Grafik in einem neuen Tab öffnen
-css.tip.Open_Image_In_New_Tab=Das Bild in einem neuen Browsertab öffnen
-# LOCALIZATION NOTE (OmitObjectPathStack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Werkzeugleisten-Stack auslassen
-callstack.option.tip.Omit_Object_Path_Stack=Den Objektpfad-Stack nicht anzeigen
-Load_Original_Source=Originalquelltext laden
-css.tip.Load_Original_Source=Änderungen verwerfen und das Original-CSS laden
-# LOCALIZATION NOTE (callstack.option.Show_Arguments, callstack.option.tip.Show_Arguments):
-# Stack side panel option (located in tab's option menu). If set to true,
-# function arguments are displayed
-callstack.option.Show_Arguments=Parameter anzeigen
-callstack.option.tip.Show_Arguments=Zeigt zu den Funktionsnamen auch deren Parameter an
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Regeldeklaration kopieren
-css.tip.Copy_Rule_Declaration=Die Regel inklusive aller Eigenschaften in die Zwischenablage kopieren
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Style-Deklaration kopieren
-css.tip.Copy_Style_Declaration=Die Eigenschaften der Regel in die Zwischenablage kopieren
-# LOCALIZATION NOTE (css.label.Copy_Property_Declaration, css.tip.Copy_Property_Declaration,
-# css.label.Copy_Property_Name, css.tip.Copy_Property_Name, css.label.Copy_Property_Value,
-# css.tip.Copy_Property_Value):
-# Menu item labels and tooltips used in CSS panel/Style side panel context menu.
-# Allow copying the current CSS property's declaration/name/value to the clipboard.
-css.label.Copy_Property_Declaration=Deklaration der Eigenschaft kopieren
-css.tip.Copy_Property_Declaration=Kopiert die Deklaration der Eigenschaft in die Zwischenablage
-css.label.Copy_Property_Name=Name der Eigenschaft kopieren
-css.tip.Copy_Property_Name=Kopiert den Namen der Eigenschaft in die Zwischenablage
-css.label.Copy_Property_Value=Wert der Eigenschaft kopieren
-css.tip.Copy_Property_Value=Kopiert den Wert der Eigenschaft in die Zwischenablage
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Fehler
-moduleManager.title=%S Panel ist deaktiviert
-moduleManager.desc3=Benutzen Sie das Menü des Firebug-Statusleistensymbols um alle Module zu aktivieren/deaktivieren. Benutzen Sie das kleine Menü der Modul-Tabs für modulspezifische Einstellungen.
-moduleManager.Enable=Aktivieren
-Suspend_Firebug=Firebug unterbrechen
-Resume_Firebug=Firebug fortsetzen
-Reset_Panels_To_Disabled=Module auf \\"Deaktiviert\\" zurücksetzen
-Open_Console=Konsole öffnen
-Open_Console_Tooltip=Firebug-Ablaufverfolgungskonsole öffnen
-Scope_Chain=Ablauf im Scope
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=Mit
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Aufruf
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Fenster
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blockieren
-requestinfo.Resolving=DNS-Lookup
-requestinfo.Connecting=Verbinden
-requestinfo.Sending=Senden
-requestinfo.Waiting=Warten
-requestinfo.Receiving=Empfangen
-requestinfo.ContentLoad=\\"DOMContentLoaded\\" (Ereignis)
-requestinfo.WindowLoad=\\"load\\" (Ereignis)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Anfrage Startzeit seit Beginn
-requestinfo.phases.label=Anfragephasen Startzeit und vergangene Zeit relativ zum Start der Anfrage:
-requestinfo.timings.label=Ereignis Timing relativ zum Start der Anfrage:
-search.Firebug_Search=Firebug-Suche
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Nächstes
-search.tip.Next=Nach dem nächsten Auftreten des Ausdrucks suchen
-search.Previous=Vorheriges
-search.tip.Previous=Nach dem vorherigen Auftreten des Ausdrucks suchen
-search.Case_Sensitive=Groß-/Kleinschreibung erzwingen
-search.tip.Case_Sensitive=Groß-/Kleinschreibung während der Suche beachten
-search.Case_Insensitive=Groß- und Kleinschreibung
-search.tip.Case_Insensitive=Groß-/Kleinschreibung während der Suche ignorieren
-search.Multiple_Files=Mehrere Dateien
-search.tip.Multiple_Files=Innerhalb aller Dateien suchen, die mit diesem Panel zusammenhängen
-search.Use_Regular_Expression=Regulären Ausdruck benutzen
-search.tip.Use_Regular_Expression=Den eingegebenen Ausdruck für die Suche als regulären Ausdruck interpretieren
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS-Selektor
-search.net.Headers=Header
-search.net.Parameters=Parameter
-search.net.Response_Bodies=Antwort-Bodies
-search.net.tip.Response_Bodies=Auch in Antwortinhalten suchen
-firebug.console.Persist=Dauerhaft
-firebug.console.Do_Not_Clear_On_Reload2=Panel nach dem Neuladen der Seite nicht leeren
-firebug.console.Show_All_Log_Entries=Alle Protokolleinträge anzeigen
-firebug.console.Errors=Fehler
-firebug.console.Filter_by_Errors=Nach Fehlern filtern
-firebug.console.Warnings=Warnungen
-firebug.console.Filter_by_Warnings=Nach Warnungen filtern
-firebug.console.Info=Info
-firebug.console.Filter_by_Info=Nach Informationen filtern
-firebug.console.Debug_Info=Debug-Info
-firebug.console.Filter_by_Debug_Info=Nach Debuginformationen filtern
-firebug.Deactivate_Firebug=Firebug deaktivieren
-firebug.tip.Deactivate_Firebug=Firebug für die aktuelle Webseite deaktivieren
-# LOCALIZATION NOTE (firebug.tip.Toggle_Side_Panels): A tooltip used for side panels visibility
-# toggle button. The button is available on the right side of panel's toolbar (only for panels
-# that have a side panel).
-firebug.tip.Toggle_Side_Panels=Anzeige der Side Panels an-/ausschalten
-firebug.ShowFirebug=Firebug öffnen
-firebug.menu.tip.Open_Firebug=Firebug Benutzeroberfläche anzeigen
-firebug.HideFirebug=Firebug verstecken
-firebug.menu.tip.Minimize_Firebug=Firebug minimieren, aber aktiviert lassen
-firebug.FocusFirebug=Firebug Fenster fokussieren
-firebug.menu.tip.Focus_Firebug=Abgedocktes Firebug Fenster fokussieren
-firebug.menu.Enable_All_Panels=Alle Module aktivieren
-firebug.menu.tip.Enable_All_Panels=Alle aktivierbaren Panels aktivieren
-firebug.menu.Disable_All_Panels=Alle Module deaktivieren
-firebug.menu.tip.Disable_All_Panels=Alle aktivierbaren Panels deaktivieren
-firebug.menu.Customize_shortcuts=Tastaturkürzel anpassen
-firebug.menu.tip.Customize_Shortcuts=Firebugs interne Tastenkürzel ändern
-firebug.Options=Einstellungen
-firebug.menu.tip.Options=Globale Firebug Einstellungen
-firebug.menu.Enable_Accessibility_Enhancements=Zugänglichkeitsverbesserungen aktivieren
-firebug.menu.tip.Enable_Accessibility_Enhancements=Erweiterte Kontrolle via Tastatur und andere Zugänglichkeitsverbesserungen aktivieren
-firebug.menu.Activate_Same_Origin_URLs2=Für Same-Origin-URLs aktivieren
-firebug.menu.tip.Activate_Same_Origin_URLs=Firebug für URLs aktivieren, auf die die Same-Origin-Policy zutrifft
-firebug.menu.Reset_All_Firebug_Options=Alle Firebug-Einstellungen zurücksetzen
-firebug.menu.tip.Reset_All_Firebug_Options=Alle Firebug Einstellungen auf ihre Standardwerte zurücksetzen
-firebug.menu.Firebug_Online=Firebug-Online
-firebug.menu.tip.Firebug_Online=Webseiten über Firebug
-firebug.menu.Extensions=Firebug Erweiterungen
-firebug.menu.tip.Extensions=Firebug Erweiterungen herunterladen und installieren
-firebug.menu.Vertical_Panels=Vertikale Panels
-firebug.menu.tip.Vertical_Panels=Zwischen horizontaler und vertikaler Anordnung der Firebug Haupt- und Seitenpanel umschalten
-firebug.menu.Show_Info_Tips=Infotips anzeigen
-firebug.menu.tip.Show_Info_Tips=Popups mit Informationen über das Element anzeigen, über dem die Maus steht
-firebug.Show_Error_Count=Fehleranzahl anzeigen
-firebug.menu.tip.Show_Error_Count=Die Anzahl der in die Konsole protokollierten Fehler anzeigen
-firebug.TextSize=Schriftgröße
-firebug.menu.tip.Text_Size=Textgröße ändern, die in Firebug benutzt wird
-firebug.IncreaseTextSize=Schrift vergrößern
-firebug.menu.tip.Increase_Text_Size=Textgröße erhöhen, die in Firebug benutzt wird
-firebug.DecreaseTextSize=Schrift verkleinern
-firebug.menu.tip.Decrease_Text_Size=Textgröße verringern, die in Firebug benutzt wird
-firebug.NormalTextSize=Normale Schriftgröße
-firebug.menu.tip.Normal_Text_Size=Textgröße, die in Firebug benutzt wird, auf den Standard zurücksetzen
-firebug.Website=Firebug-Website…
-firebug.menu.tip.Website=Offizielle Firebug Webseite öffnen
-firebug.help=Hilfe...
-firebug.menu.tip.help=Die Seite mit Links zu Firebug beschreibenden Seiten öffnen
-firebug.Documentation=Dokumentation…
-firebug.menu.tip.Documentation=Die Dokumentation zu Firebug öffnen
-firebug.KeyShortcuts=Tastaturkürzel…
-firebug.menu.tip.Key_Shortcuts=Die Liste der in Firebug verfügbaren Maus- und Tastaturkürzeln öffnen
-firebug.Forums=Diskussionsgruppen…
-firebug.menu.tip.Forums=Die Diskussionsgruppenseite öffnen
-firebug.Issues=Bekannte Probleme…
-firebug.menu.tip.Issues=Die Issue-Tracker-Seite öffnen
-firebug.Donate=Firebug unterstützen…
-firebug.menu.tip.Donate=Die Mitwirkungsseite öffnen
-firebug.About=Über…
-firebug.menu.tip.About=Informationen über Firebug
-ProfileJavaScript=JavaScript Zeitmessung
-firebug.menu.tip.Profile_JavaScript=JavaScript-Ausführungszeit messen
-firebug.Search=Suche
-firebug.menu.tip.Search=Den Fokus in das Suchfeld setzen
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Befehl erneut ausführen
-firebug.shortcut.tip.reenterCommand=Den letzten Befehl erneut in die Kommandozeile schreiben
-firebug.shortcut.toggleInspecting.label=Untersuchung an/aus
-firebug.shortcut.tip.toggleInspecting=Den Inspector aktivieren/deaktivieren
-firebug.shortcut.toggleQuickInfoBox.label=Schnellinfo Box an/aus
-firebug.shortcut.tip.toggleQuickInfoBox=Die Box mit Informationen über das aktuell untersuchte Element aktivieren/deaktivieren
-firebug.shortcut.toggleProfiling.label=Zeitmessung an/aus
-firebug.shortcut.tip.toggleProfiling=Den JavaScript Profiler aktivieren/deaktivieren
-firebug.shortcut.focusCommandLine.label=Kommandozeile fokussieren
-firebug.shortcut.tip.focusCommandLine=Firebug öffnen und den Fokus auf die Kommandozeile setzen / Kommandozeilenpopup öffnen/schließen
-firebug.shortcut.focusFirebugSearch.label=Firebug-Suche fokussieren
-firebug.shortcut.tip.focusFirebugSearch=Den Fokus in das Suchfeld setzen
-firebug.shortcut.focusWatchEditor.label=Überwachungseditor fokussieren
-firebug.shortcut.tip.focusWatchEditor=Zum Skript Panel wechseln und den Fokus in das Feld zur Eingabe eines neuen Überwachungsausdrucks setzen
-firebug.shortcut.focusLocation.label=Standort fokussieren
-firebug.shortcut.tip.focusLocation=Das Quellmenu öffnen
-firebug.shortcut.nextObject.label=Nächstes Objekt
-firebug.shortcut.tip.nextObject=Das nächste Objekt im Elementpfad eines Panels auswählen
-firebug.shortcut.previousObject.label=Voriges Objekt
-firebug.shortcut.tip.previousObject=Das vorherige Objekt im Elementpfad eines Panels auswählen
-firebug.shortcut.customizeFBKeys.label=Firebug-Tasten anpassen
-firebug.shortcut.tip.customizeFBKeys=Den Firebug Tastaturkürzeldialog öffnen
-firebug.shortcut.detachFirebug.label=Firebug in einem neuen Fenster öffnen
-firebug.shortcut.tip.detachFirebug=Firebug in ein eigenes Fenster abdocken
-firebug.shortcut.leftFirebugTab.label=Zum linken Firebug Panel wechseln
-firebug.shortcut.tip.leftFirebugTab=Zum linken Firebug Panel wechseln
-firebug.shortcut.rightFirebugTab.label=Zum rechten Firebug Panel wechseln
-firebug.shortcut.tip.rightFirebugTab=Zum rechten Firebug Panel wechseln
-firebug.shortcut.toggleFirebug.label=Firebug öffnen
-firebug.shortcut.tip.toggleFirebug=Firebug Benutzeroberfläche öffnen/minimieren
-firebug.shortcut.closeFirebug.label=Firebug deaktivieren
-firebug.shortcut.tip.closeFirebug=Firebug für die aktuelle Webseite deaktivieren
-firebug.shortcut.previousFirebugTab.label=Vorheriges Firebug Panel
-firebug.shortcut.tip.previousFirebugTab=Zum vorher ausgewählten Firebug Panel wechseln
-firebug.shortcut.clearConsole.label=Konsole leeren
-firebug.shortcut.tip.clearConsole=Alle Protokolleinträge aus der Konsole löschen
-firebug.shortcut.openTraceConsole.label=Ablaufverfolgungskonsole öffnen
-firebug.shortcut.tip.openTraceConsole=Die FBTrace Konsole öffnen
-firebug.shortcut.navBack.label=Zurück
-firebug.shortcut.tip.navBack=Zum vorherigen Panel oder Quelllisteneintrag des Navigationsverlaufs wechseln
-firebug.shortcut.navForward.label=Vorwärts
-firebug.shortcut.tip.navForward=Zum nächsten Panel oder Quelllisteneintrag des Navigationsverlaufs wechseln
-firebug.shortcut.increaseTextSize.label=Textgröße erhöhen
-firebug.shortcut.tip.increaseTextSize=Die in Firebug verwendeten Textgrößen erhöhen
-firebug.shortcut.decreaseTextSize.label=Textgröße verringern
-firebug.shortcut.tip.decreaseTextSize=Die in Firebug verwendeten Textgrößen verringern
-firebug.shortcut.normalTextSize.label=Normale Textgröße
-firebug.shortcut.tip.normalTextSize=Die in Firebug verwendeten Textgrößen auf den Standard zurücksetzen
-firebug.shortcut.help.label=Hilfe öffnen
-firebug.shortcut.tip.help=Die Seite mit häufig gestellten Fragen öffnen
-firebug.shortcut.toggleBreakOn.label=Anhalten bei ... an-/ausschalten
-firebug.shortcut.tip.toggleBreakOn=Anhalten der Skriptausführung bei speziellen Events innerhalb des Panels aktivieren/deaktivieren
-firebug.panel_selector=Modulauswahl
-customizeShortcuts=Firebug-Tastaturkürzelbelegungen
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=Panel Werkzeuge
-a11y.labels.firebug_panels=Firebug Panels
-a11y.labels.firebug_side_panels=Firebug Unterpanels
-a11y.labels.firebug_window=Firebug Fenster
-a11y.labels.firebug_status=Firebug Status
-a11y.labels.reset=zurücksetzen
-a11y.labels.reset_shortcut=Tastaturkürzel %S zurücksetzen
-aria.labels.inactive_panel=Inaktives Panel
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=Zeilen protokollieren
-a11y.labels.call_stack=Stack aufrufen
-a11y.labels.document_structure=Dokumentstruktur
-a11y.labels.title_panel= %S Panel
-a11y.labels.title_side_panel= %S Unterpanel
-a11y.labels.cached=zwischengespeichert
-aria.labels.stack_trace=Stack Ablaufverfolgung
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=position
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=margin top
-a11y.layout.margin_right=margin right
-a11y.layout.margin_bottom=margin bottom
-a11y.layout.margin_left=margin left
-a11y.layout.border_top=border top
-a11y.layout.border_right=border right
-a11y.layout.border_bottom=border bottom
-a11y.layout.border_left=border left
-a11y.layout.padding_top=paddding top
-a11y.layout.padding_right=padding right
-a11y.layout.padding_bottom=padding bottom
-a11y.layout.padding_left=padding left
-a11y.layout.top=top
-a11y.layout.right=right
-a11y.layout.bottom=bottom
-a11y.layout.left=left
-a11y.layout.width=width
-a11y.layout.height=height
-a11y.layout.size=size
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=Drücken Sie die Eingabetaste gefolgt von der Tabulatortaste, um individuelle Werte zu bearbeiten.
-a11y.labels.style_rules=Style-Regeln
-aria.labels.inherited_style_rules=Geerbte Style-Regeln
-a11y.labels.computed_styles=Berechnete Styles
-a11y.labels.dom_properties=DOM Eigenschaften
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=Inline Editor
-a11y.labels.value_for_attribute_in_element=Wert für %S Attribut in %S Element
-a11y.labels.attribute_for_element=Attribut für %S Element
-a11y.labels.text_contents_for_element=Textinhalte für %S Element
-a11y.labels.defined_in_file=definiert in %S
-a11y.labels.declarations_for_selector=Style-Defintionen für \\"%S\\" Selektor
-a11y.labels.property_for_selector=CSS Eigenschaften für Selektor: %S
-a11y.labels.value_property_in_selector=%S Eigenschaftswert für Selektor %S
-a11y.labels.css_selector=CSS-Selektor
-a11y.labels.source_code_for_file=Quelltext für Datei %S
-a11y.labels.press_enter_to_add_new_watch_expression=Drücken Sie die Eingabetaste, um einen neuen Überwachungsausdruck hinzuzufügen
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=überschrieben
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=hat einen bedingten Haltepunkt
-a11y.updates.has_disabled_break_point=hat einen deaktivierten Haltepunkt
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Skript unterbrochen in Zeile %S in %S, Datei %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=Treffer gefunden für \\"%S\\" in %S Protokollzeilen
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=Treffer gefunden für \\"%S\\" in Zeile %S in %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=Treffer gefunden für \\"%S\\" in %S Element in Pfad %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=Treffer gefunden für \\"%S\\" in Attribut %S=%S von %S Element in Pfad %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=Treffer gefunden für \\"%S\\" im Textinhalt: %S von %S Element in Pfad %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=Treffer gefunden für \\"%S\\" in Selektor %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=Treffer gefunden für \\"%S\\" in Style-Definition %S in Selektor %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=Treffer gefunden für \\"%S\\" in DOM-Eigenschaft %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=Treffer gefunden für \\"%S\\" in %S, %S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=Treffer gefunden für \\"%S\\" in Netzwerk-Zusammenfassung, Zeile: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=Keine Treffer gefunden für \\"%S\\"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Sind Sie sicher, dass Sie alle Firebug-Einstellungen auf die Standardwerte zurücksetzen wollen?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Ihre existierenden CSS Änderungen werden verworfen.\\\\nSind Sie sicher, dass Sie den Quelltext bearbeiten wollen?
-# Console messages
-warning.Console_must_be_enabled=Konsole muss aktiviert sein
-warning.Command_line_blocked?=Kommandozeile blockiert?
-warning.dollar_change=Die Kommandozeilenfunktion $() hat ihre Funktionsweise von $=getElementById(ID) zu $=querySelector(Selektor) geändert. Sie sollten stattdessen $("#%S") verwenden.
-message.Reload_to_activate_window_console=Neu laden, um die Fensterkonsole zu aktivieren
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Seite neu laden, um den Quelltext zu holen für
-message.The_resource_from_this_URL_is_not_text=Die Quelle von diesem URL ist kein Text:
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Zu diesem Panel zurückspringen
-firebug.history.Stay_on_this_panel=Bei diesem Panel bleiben
-firebug.history.Go_forward_to_this_panel=Zu diesem Panel springen
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Zurück
-firebug.history.Go_forward=Vorwärts
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Skript Panel war inaktiv während des Ladens der Seite
-script.suggestion.inactive_during_page_load2=<a>Neuladen</a>, um alle Quellen anzuzeigen
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript ist nicht aktiviert
-script.suggestion.javascript_not_enabled=Siehe Firefox > Extras > Einstellungen... > Inhalt > JavaScript aktivieren
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=JavaScript aktivieren und neuladen
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Alle Skripts wurden gefiltert
-script.suggestion.all_scripts_filtered=Siehe die Einstellung für den Skriptfilter in der Symbolleiste oder die Option \\"Chrome Quellen anzeigen\\"
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=Debugging funktioniert bei Systemressourcen nicht
-script.suggestion.no_system_source_debugging=Firebug kann momentan nicht dazu benutzt werden, Systemressourcen zu debuggen. Siehe <a>Issue 5110</a> für den Grund.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=Kein JavaScript auf dieser Seite
-script.suggestion.no_javascript2=Falls <script> Tags ein "type"-Attribut besitzen, sollte es "text/javascript" oder "application/javascript" entsprechen. Zudem müssen Skripts geparst werden können (syntaktisch korrekt sein).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Der Debugger ist bereits aktiv
-script.suggestion.debugger_active=Der Debugger hat im Moment an einem Haltepunkt auf einer anderen Seite gestoppt.
-script.button.Go_to_that_page=Zu dieser Seite gehen
-script.warning.debugger_not_activated=Debugger ist nicht aktiviert
-script.suggestion.debugger_not_activated=Debugger ist nicht aktiviert
-# LOCALIZATION NOTE (script.Script_panel_must_be_enabled): Adds a parenthetical note to a tooltip
-# about the Script panel having to be enabled.
-# %S = original message
-# example: "Profile JavaScript execution time (Script panel must be enabled)"
-script.Script_panel_must_be_enabled=%S (Skript Panel muss aktiviert sein)
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Schließen
-firebug.View=Ansicht
-firebug.Help=Hilfe
-firebug.Run=Ausführen
-firebug.Copy=Kopieren
-firebug.History=Chronik
-firebug.Run_the_entered_command=Den eingegebenen Befehl ausführen
-firebug.Clear_the_Command_Editor=Befehlseditor leeren
-firebug.Copy_the_script_as_a_bookmarklet=Skript als Bookmarklet kopieren
-firebug.Insert_a_previously_entered_command=Einen zuvor eingegebenen Befehl einfügen
-firebug.AlwaysOpenInWindow=Immer in einem neuen Fenster öffnen
-firebug.OpenWith=Mit einem Editor öffnen
-firebug.menu.tip.Open_With=Den Inhalt in einem externen Editor öffnen
-firebug.Permissions=Seiten...
-firebug.Configure_Editors=Editoren konfigurieren
-script.tip.Script_Type=Nach Skripttyp filtern
-script.tip.Script_Filter_Static=Nur Skripts anzeigen, die zusammen mit der Seite geladen wurden
-script.tip.Script_Filter_Evals=Skripts, die zusammen mit der Seite geladen wurden, und Skripts die via eval() erzeugt wurden anzeigen
-script.tip.Script_Filter_Events=Skripts, die zusammen mit der Seite geladen wurden, Skripts die via eval() erzeugt wurden und Event Listener anzeigen
-script.tip.Script_Filter_All=Alle Arten von Skripts anzeigen
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Erneut ausführen
-script.tip.Rerun=Den aktuellen Funktionsaufruf-Stack erneut ausführen
-script.Continue=Fortsetzen
-script.tip.Continue=Ausführung bis zum nächsten Haltepunkt oder bis zum Skriptende fortsetzen
-script.Step_Over=Überspringen
-script.tip.Step_Over=Den nächsten Befehl ausführen
-script.Step_Into=Hineinspringen
-script.tip.Step_Into=Den nächsten Befehl ausführen und in Funktionen hineinspringen
-script.Step_Out=Herausspringen
-script.tip.Step_Out=Den Rest der Funktion ausführen und zum Aufrufer zurückspringen
-firebug.RunUntil=Bis zu dieser Zeile ausführen
-script.tip.Run_Until=Ausführung bis zur angegebenen Zeile fortsetzen
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Untersuchen
-firebug.InspectElement=Element untersuchen
-firebug.InspectElementWithFirebug=Element mit Firebug untersuchen
-firebug.BreakOnErrors=Bei Fehlern anhalten
-firebug.InspectTooltip=Klicken Sie auf ein Element der Seite, um es zu untersuchen
-firebug.EditHTMLTooltip=Dieses HTML bearbeiten
-firebug.Profile=Zeitmessung
-firebug.Clear=Leeren
-firebug.ClearConsole=Konsole leeren
-firebug.ClearTooltip=Leert die Konsole
-# editors.dtd
-editors.Configured_Firebug_Editors=Konfigurierte Firebug-Editoren
-editors.Editor=Editor
-editors.Executable=Anwendung
-editors.Launch_Arguments=Aufrufparameter
-editors.Add=Hinzufügen
-editors.Remove=Entfernen
-editors.Change=Ändern
-editors.Move_Up=Nach oben
-editors.Close=Schließen
-editors.Browse=Durchsuchen…
-changeEditor.Editor_Configuration=Editor-Konfiguration
-changeEditor.Name=Name:
-changeEditor.Executable=Anwendungsdatei:
-changeEditor.CmdLine=Parameter:
-changeEditor.Supplied_arguments=Von Firebug vorgegebene Parameter:
-changeEditor.URL_of_file=<label class=\\'text-link\\'>%url</label> URL der Datei (falls %url nicht angegeben wurde, wird standardmäßig %file hinzufügt)
-changeEditor.Path_to_local_file=<label class=\\'text-link\\'>%file</label> Pfad zur lokalen Datei (oder zur temporären Kopie)
-changeEditor.Line_number=<label class=\\'text-link\\'>%line</label> Zeilennummer (falls verfügbar)
-changeEditor.Invalid_Application_Path=Ungültiger Anwendungspfad
-changeEditor.Application_does_not_exist=Die angegebene Anwendung existiert nicht!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Bearbeiten
-firebug.css.sourceEdit=Quelltext bearbeiten
-firebug.css.sourceEdit.tooltip=Textbox zum Bearbeiten des vom Browser geladenen Stylesheetquelltexts
-firebug.css.liveEdit=Live bearbeiten
-firebug.css.liveEdit.tooltip=Textbox zum Bearbeiten des vom Browser extrahierten CSS
-firebug.EditCSSTooltip=Dieses Stylesheet bearbeiten
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Seiten werden im Privaten Modus nicht gespeichert
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Haltepunktnachrichten anzeigen
-firebug.breakpoint.tip.Show_Break_Notifications=Eine Benachrichtigung anzeigen, wenn das "Anhalten bei ..." Feature oder das debugger; Schlüsselwort die Skriptausführung angehalten haben
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=Stopp-Nachrichten können im <a>Panel Tab-Menü</a> (de-)aktiviert werden.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Der \\"Deaktivieren\\"-Button überschreibt \\"debugger\\" mit einem deaktiviertem Breakpoint.
-firebug.bon.tooltip.disableDebuggerKeyword2=Erstellt einen deaktivierten Breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(das Skript Panel muss aktiviert sein, um dieses Feature zu benutzen)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=Es gibt keine Kindobjekte
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=mehr
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Zyklische Referenz entdeckt
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S Element im Speicher;%1$S Elemente in Storage
-# LOCALIZATION NOTE (firebug.reps.historyEntries): Semicolon list of plural forms.
-# Displayed when evaluating "history" - informs the user about the number of entries in history.
-# %1 = Number of history entries
-firebug.reps.historyEntries=%1$S Verlaufseintrag;%1$S Verlaufseinträge
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Objekteigenschaften
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(Keine Vervollständigungen)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=Das URL-Objekt hat wahrscheinlich die Ausführung der revokeObjectURL Methode verweigert.
-firebug.failedToPreviewImageURL=Die angegebene URL konnte nicht geladen werden.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Speicher Profiler gestartet
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Während dem Profiling hinzugefügte Objekte
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Speicher Profiler Ergebnisse
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Gesamte Sitzung
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(keine Ausgabe)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(Leerstring)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Das Firecookie Add-on wurde erkannt. Dieses Add-on wurde in Firebug 1.10 standardmäßig integriert. Um Konflikte zuvermeiden, muss Firecookie deinstalliert werden.\n\nUm die Deinstallation des Add-ons abzuschließen, muss der Browser neugestartet werden.
-cookies.legacy.uninstall=Deinstallieren
-cookies.legacy.uninstall_and_restart=Deinstallieren und neustarten
-# LOCALIZATION NOTE (console.cmd.help_title, console.cmd.help_title_desc):
-console.cmd.help_title=Kommandozeilen API
-console.cmd.help_title_desc=F1 drücken, um die Firebug Onlinehilfe zu öffnen
-# LOCALIZATION NOTE (console.cmd.tip_title, console.cmd.tip_title_desc):
-console.cmd.tip_title=Kommandozeilentipps
-console.cmd.tip_title_desc=Tipps & Tricks zur Kommandozeile
-# LOCALIZATION NOTE (console.cmd.tip.javascript, console.cmd.tip.closures):
-# Description for Command Line tips that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.tip.javascript=Jeder gültige JavaScript Ausdruck kann in der Kommandozeile ausgeführt werden. Beispiel:
-console.cmd.tip.closures=Um Variablen in Closures anzusprechen, kann die ".%"-Syntax verwendet werden (sehe <a>mehr</a>). Beispiel:
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Gibt ein einzelnes Element mit der angegebenen ID zurück.
-console.cmd.help.$$=Gibt ein Array von Element zurück, die dem angegebenen CSS-Selektor entsprechen.
-console.cmd.help.$x=Gibt ein Array von Element zurück, die dem angegebenen XPath Ausdruck entsprechen.
-console.cmd.help.dir=Gibt eine interaktive Liste aller Eigenschaften eines Objekts aus. Diese sieht identisch zu der Ansicht im DOM Panel aus.
-console.cmd.help.dirxml=Gibt den XML Quelltextbaum eines HTML oder XML Elements aus. Dieser sieht identisch zu der Ansicht im HTML panel aus. Jeder Knoten kann angeklickt werden, um ihn im HTML Panel zu untersuchen.
-console.cmd.help.cd=Standardmäßig sind Kommandozeilenausdrücke relativ zum obersten 'window' der Seite. cd() erlaubt es, stattdessen das 'window' eines Frames innerhalb der Seite zu benutzen.
-console.cmd.help.clear=Leert die Konsole.
-console.cmd.help.copy=Kopiert den angegebenen Parameter in die Zwischenablage. Dies kann ein Rückgabewert einer Funktion oder ein Objekt sein.
-console.cmd.help.inspect=Untersucht ein Objekt im passendsten Panel oder dem Panel, das durch das optionale zweite Argument identifiziert wird. Die verfügbaren Panelnamen sind "html", "stylesheet", "script" und "dom".
-console.cmd.help.keys=Gibt ein Array zurück, das die Namen aller Eigenschaften eines Objekts beinhaltet.
-console.cmd.help.values=Gibt ein Array zurück, das die Werte aller Eigenschaften eines Objekts beinhaltet.
-console.cmd.help.debug=Fügt einen Haltepunkt an der ersten Zeile einer Funktion ein.
-console.cmd.help.undebug=Entfernt den Haltepunkt an der ersten Zeile einer Funktion.
-console.cmd.help.monitor=Schaltet die Protokollierung aller Aufrufe einer Funktion ein.
-console.cmd.help.unmonitor=Schaltet die Protokollierung aller Aufrufe einer Funktion aus.
-console.cmd.help.monitorEvents=Schaltet die Protokollierung aller Ereignisse ein, die an dieses Objekt gesendet werden. Das optionale zweite Argument definiert spezifische Ereignisse oder Ereignistypen. Die verfügbaren Ereignistypen sind "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul" und "clipboard".
-console.cmd.help.unmonitorEvents=Schaltet die Protokollierung aller Ereignisse aus, die an ein Objekt gesendet werden. Das optionale zweite Argument definiert spezifische Ereignisse oder Ereignistypen.
-console.cmd.help.profile=Schaltet den JavaScript Profiler ein. Das optionale zweite Argument gibt den Text an, der als Überschrift des Profilerberichts angezeigt wird.
-console.cmd.help.profileEnd=Schaltet den JavaScript Profiler aus und gibt den Bericht aus.
-console.cmd.help.table=Erlaubt es, gegebene Daten in tabellarischer Form zu protokollieren. Der Methode kann ein erforderliches Argument übergeben werden, der die tabellarischen Daten (Array von Arrays oder Liste von Objekten) darstellt. Das optionale zweite Argument kann dazu verwendet werden, die Spalten und/oder Eigenschaften anzugeben, die ausgegeben werden sollen.
-console.cmd.help.$0=Repräsentiert das zuletzt untersuchte Element.
-console.cmd.help.$1=Repräsentiert das vorletzte untersuchte Element.
-console.cmd.help.$2=Repräsentiert das drittletzte Element, das über den Inspektor ausgewählt wurde.
-console.cmd.help.$3=Repräsentiert das viertletzte Element, das über den Inspektor ausgewählt wurde.
-console.cmd.help.$4=Repräsentiert das fünftletzte Element, das über den Inspektor ausgewählt wurde.
-console.cmd.help.$n=Gibt eines der letzten 5 untersuchten Elemente zurück.
-console.cmd.help.$_=Repräsentiert das Ergebnis des zuletzt in der Kommandozeile ausgeführten Ausdrucks.
-console.cmd.help.help=Zeigt eine Hilfe für alle verfügbaren Befehle an.
-console.cmd.help.include=Bindet ein externes Skript ein.
-console.cmd.help.$p=Nachdem aus dem Kontextmenü eines Objekts/Werts die Option "In Kommandozeile benutzen" ausgewählt wurde, wird diese Kommandozeilenvariable auf diesen Wert gesetzt.
-console.cmd.help.getEventListeners=Gibt ein Objekt mit allen Ereignisbehandlungsroutinen zurück, die direkt mit einem Element (oder anderem Ereignisziel) registriert wurden
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Für dieses Befehl ist keine Hilfeseite verfügbar.
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Dokumentphasen Start- und vergangene Zeit relativ zum Startzeitpunkt des Dokumentladevorgangs:
-perftiming.events.label=Ereignistiming relativ zum Dokument Ladezeitpunkt:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Geschwindigkeitstiming
-perftiming.details_title_desc=Detailliertes Timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Zeitpunkt, an dem die Serververbindung beendet wurde.
-perftiming.connectStart=Zeitpunkt vor dem Aufbau der Serververbindung
-perftiming.domComplete=Zeitpunkt bevor das Dokument vollständig verfügbar war
-perftiming.domContentLoadedEventEnd=Zeitpunkt nachdem das DOMContentLoaded Ereignis ausgelöst wurde
-perftiming.domContentLoadedEventStart=Zeitpunkt bevor das DOMContentLoaded Ereignis ausgelöst wurde
-perftiming.domInteractive=Zeitpunkt bevor die Dokumentverfügbarkeit auf "interactive" gesetzt wurde
-perftiming.domLoading=Zeitpunkt bevor die Dokumentverfügbarkeit auf "loading" gesetzt wurde
-perftiming.domainLookupEnd=Zeitpunkt nach dem Domainname Lookup
-perftiming.domainLookupStart=Zeitpunkt vor dem Domainname Lookup
-perftiming.fetchStart=Zeitpunkt, an dem die Abholung der Ressource gestartet wurde
-perftiming.loadEventEnd=Zeitpunkt nachdem das load Ereignis beendet wurde
-perftiming.loadEventStart=Zeitpunkt bevor das load Ereignis ausgelöst wurde
-perftiming.navigationStart=Zeitpunkt nachdem begonnen wurde, das vorherige Dokument zu verlassen
-perftiming.redirectCount=Anzahl der Weiterleitungen seit der letzten Nicht-Weiterleitung
-perftiming.redirectEnd=Zeitpunkt nachdem die letzte Weiterleitungsantwort beendet wurde
-perftiming.redirectStart=Zeitpunkt der Abholung, die eine Weiterleitung ausgelöst hat
-perftiming.requestStart=Zeitpunkt vor der Serveranfrage
-perftiming.responseEnd=Zeitpunkt nach dem Ende einer Antwort oder Verbindung
-perftiming.responseStart=Zeitpunkt vor dem Start der Antwort
-perftiming.unloadEventEnd=Zeitpunkt nachdem das vorherige Dokument verlassen wurde
-perftiming.unloadEventStart=Zeitpunkt bevor das unload Ereignis ausgelöst wurde
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Konsole
+panel.tip.console=Erlaubt es, Konsolennachrichten anzuzeigen und JavaScript Befehle auszuführen
+Panel-net=Netzwerk
+panel.tip.net=Erlaubt es, den Netzwerkverkehr zu analysieren
+Panel-html=HTML
+panel.tip.html=Erlaubt es, DOM-Knoten zu überprüfen und zu manipulieren
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Erlaubt es, CSS Stylesheets zu überprüfen und zu manipulieren
+Panel-script=Skript
+panel.tip.script=Erlaubt es, JavaScript zu debuggen
+Panel-dom=DOM
+panel.tip.dom=Erlaubt es, DOM Eigenschaften zu untersuchen und zu verändern
+Panel-css=Styles
+panel.tip.css=Erlaubt es, die CSS Regeln des ausgewählten DOM-Knotens zu untersuchen und zu verändern
+Panel-computed=Berechnet
+panel.tip.computed=Erlaubt es, die berechneten CSS Werte des ausgewählten DOM-Knotens zu untersuchen
+Panel-layout=Layout
+panel.tip.layout=Erlaubt es, die Layoutdaten des ausgewählten DOM-Knotens zu untersuchen und zu verändern
+Panel-domSide=DOM
+panel.tip.domSide=Erlaubt es, die DOM Eigenschaften des ausgewählten DOM-Knotens zu untersuchen und zu verändern
+Panel-watches=Überwachen
+panel.tip.watches=Erlaubt es, die JavaScript Variablen des aktuellen Stack-Frames zu untersuchen und Überwachungsausdrücke hinzuzufügen
+Panel-breakpoints=Haltepunkte
+panel.tip.breakpoints=Erlaubt es, gesetzte Haltepunkte zu verändern
+Panel-callstack=Stack
+panel.tip.callstack=Erlaubt es, den aktuellen JavaScript Aufrufstack zu untersuchen
+Panel-scopes=Scopes
+firebug.DetachFirebug=Firebug in einem neuen Fenster öffnen
+firebug.AttachFirebug=Firebug an Browser-Fenster anheften
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Firebug insgesamt;%1$S Firebugs insgesamt
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Deaktiviert
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=Im Browser
+minimized=Minimiert
+enablement.for_all_pages=für alle Seiten
+enablement.on=An
+enablement.off=Aus
+enablement.Panel_activation_status=Panel Aktivierungsstatus:
+none=Geschlossen
+Firebug_-_inactive_for_current_website=Firebug - inaktiv für die aktuelle Webseite
+Activate_Firebug_for_the_current_website=Firebug für die aktuelle Webseite aktivieren
+Minimized=Minimiert
+Minimize_Firebug=Firebug minimieren
+On_for_all_web_pages=Für alle Webseiten eingeschaltet
+firebug.menu.tip.On_for_all_Web_Sites=Firebug standardmäßig für alle Webseiten aktivieren
+firebug.menu.Clear_Activation_List=Aktivitätsliste leeren
+firebug.menu.tip.Clear_Activation_List=Liste der Webseiten leeren, für die Firebug aktiviert ist
+firebug.menu.Detached=Abgedockt
+firebug.menu.tip.Detached=Firebug in einem separaten Fenster anzeigen
+firebug.menu.Top=Oben
+firebug.menu.tip.Top=Firebug an der oberen Seite des Browserfensters anordnen
+firebug.menu.Bottom=Unten
+firebug.menu.tip.Bottom=Firebug an der unteren Seite des Browserfensters anordnen
+firebug.menu.Left=Links
+firebug.menu.tip.Left=Firebug an der linken Seite des Browserfensters anordnen
+firebug.menu.Right=Rechts
+firebug.menu.tip.Right=Firebug an der rechten Seite des Browserfensters anordnen
+firebug.uiLocation=Position der Firebug Benutzeroberfläche
+firebug.menu.tip.UI_Location=Firebug Benutzeroberfläche positionieren
+# LOCALIZATION NOTE (annotations.confirm.clear):
+# Used in a confirmation dialog when all Firebug annotations are going to be deleted
+annotations.confirm.clear=Möchten Sie wirklich alle Anmerkungen für jegliche Internetseite löschen?
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Firebug-Optionen
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Alle Module anzeigen
+console.option.Show_Command_Line=Kommandozeile anzeigen
+console.option.tip.Show_Command_Line=Kommandozeile fokussieren / Kommandozeilenpopup anzeigen
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=JavaScript-Fehler anzeigen
+console.option.tip.Show_JavaScript_Errors=JavaScript Fehlermeldungen in der Konsole protokollieren
+ShowJavaScriptWarnings=JavaScript-Warnungen anzeigen
+console.option.tip.Show_JavaScript_Warnings=JavaScript Warnmeldungen in der Konsole protokollieren
+ShowCSSErrors=CSS-Fehler anzeigen
+console.option.tip.Show_CSS_Errors=JavaScript Fehlermeldungen in der Konsole protokollieren
+ShowXMLHTMLErrors=XML/HTML Fehler anzeigen
+console.option.tip.Show_XML_HTML_Errors=XML/HTML Fehlermeldungen in der Konsole protokollieren
+ShowStackTrace=Stack-Ablaufverfolgung mit Fehlern anzeigen
+console.option.tip.Show_Stack_Trace=Stacktrace Informationen für Fehlermeldungen anzeigen
+ShowXMLHttpRequests=XMLHttpRequests anzeigen
+console.option.tip.Show_XMLHttpRequests=XMLHttpRequests in der Konsole protokollieren
+ShowChromeErrors=Chrome-Fehler anzeigen
+console.option.tip.Show_System_Errors=Programm- und Add-on-interne Fehlermeldungen in der Konsole protokollieren
+ShowChromeMessages=Chrome-Nachrichten anzeigen
+console.option.tip.Show_System_Messages=Programm- und Add-on-interne Meldungen in der Konsole protokollieren
+ShowNetworkErrors=Netzwerkfehler anzeigen
+console.option.tip.Show_Network_Errors=Netzwerkfehlermeldungen in der Konsole protokollieren
+JavascriptOptionsStrict=Strikte Warnungen (Leistungseinbuße)
+console.option.tip.Show_Strict_Warnings=Auch strikte Warnungen in der Konsole protokollieren
+Command_History=Befehlschronik
+console.option.Show_Command_Editor=Befehlseditor anzeigen
+console.option.tip.Show_Command_Editor=Zum Befehlseditor umschalten
+commandLineShowCompleterPopup=Vervollständigungs-Pop-up anzeigen
+console.option.tip.Show_Completion_List_Popup=Das Popup zur Befehlsvervollständigung anzeigen
+Assertion=Assertion fehlgeschlagen
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (Zeile %S)
+LineAndCol=%S (Zeile %S, Spalte %S)
+InstanceLine=%S #%S (Zeile %S)
+StackItem=%S (%S Zeile %S)
+SystemItem=<System>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=In %S Panel untersuchen
+panel.tip.Inspect_In_Panel=Zum %S Panel wechseln, um das Objekt dort zu untersuchen
+NoName=(kein Name)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Ganzen Text anzeigen
+html.option.tip.Show_Full_Text=Elementinhalte nicht abschneiden
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Leerzeichen anzeigen
+html.option.tip.Show_Whitespace=Leerzeichen innerhalb von Knoten anzeigen
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Kommentare anzeigen
+html.option.tip.Show_Comments=Kommentarknoten anzeigen
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Entitäten als Symbole anzeigen
+html.option.tip.Show_Entities_As_Symbols=Zeigt alle XML Entitäten in ihrer symbolischen Darstellung
+html.option.Show_Entities_As_Names=Entitäten als Namen anzeigen
+html.option.tip.Show_Entities_As_Names=Zeigt alle XML Entitäten als Namen
+html.option.Show_Entities_As_Unicode=Entitäten als Unicode anzeigen
+html.option.tip.Show_Entities_As_Unicode=Zeigt alle XML Entitäten in ihrer Unicode Darstellung
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Änderungen hervorheben
+html.option.tip.Highlight_Mutations=Änderungen innerhalb Knoten hervorheben
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Änderungen aufklappen
+html.option.tip.Expand_Mutations=Baumansicht erweitern, um geänderte Knoten anzuzeigen
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Änderungen im Sichtbereich anzeigen
+html.option.tip.Scroll_To_Mutations=Baumansicht scrollen, um geänderte Knoten anzuzeigen
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Schnellinfo Box anzeigen
+inspect.option.tip.Show_Quick_Info_Box=Informationen über das aktuell untersuchte Element in einer die Webseite überlagernden Infobox anzeigen
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Box-Modell schattieren
+inspect.option.tip.Shade_Box_Model=Verschiedene Teile des Box-Models schattieren
+ScrollIntoView=Zum Sichtbereich scrollen
+html.tip.Scroll_Into_View=Seite scrollen, um das Element sichtbar zu machen
+NewAttribute=Neues Attribut...
+html.tip.New_Attribute=Ein neues Attribut zu diesem Element hinzufügen
+html.Edit_Node=%S bearbeiten…
+html.Node=Knoten
+html.tip.Edit_Node=Den %S Knoten im Volltext Editor bearbeiten
+DeleteElement=Element löschen
+html.Delete_Element=Element aus der Baumstruktur löschen
+DeleteNode=Knoten löschen
+html.Delete_Node=Knoten aus der Baumstruktur löschen
+# Quick Info Box
+quickInfo=Schnellinfo
+computedStyle=Berechneter Style
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Bei Modifizierung anhalten
+html.Disable_Break_On_Mutate=\\"Bei Modifizierung anhalten\\" deaktivieren
+html.label.Break_On_Text_Change=Bei Textänderung anhalten
+html.label.HTML_Breakpoints=HTML-Haltepunkte
+html.label.Break_On_Attribute_Change=Bei Attributänderung anhalten
+html.tip.Break_On_Attribute_Change=JavaScript Ausführung anhalten, wenn ein Attribut dieses Elements geändert wird
+html.label.Break_On_Child_Addition_or_Removal=Beim Hinzufügen/Löschen eines Kindknotens anhalten
+html.tip.Break_On_Child_Addition_or_Removal=JavaScript Ausführung anhalten, wenn ein Kindknoten zu diesem Element hinzugefügt oder von diesem gelöscht wird
+html.label.Break_On_Element_Removal=Beim Löschen eines Elements anhalten
+html.tip.Break_On_Element_Removal=JavaScript Ausführung anhalten, wenn das Element gelöscht wird
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Alle auf-/zuklappen
+html.tip.Expand/Contract_All=Alle Kindknoten rekursiv auf-/zuklappen
+# LOCALIZATION NOTE (dom.scopeName): Used within the DOM panel to name the fake property that
+# contains the innermost closure scope of a function.
+dom.scopeName=(geschlossen)
+# LOCALIZATION NOTE (dom.scopeParentName): Used within the DOM panel to name the fake property
+# that contains the parent of a closure scope.
+dom.scopeParentName=(übergeordneter Anwendungsbereich)
+# LOCALIZATION NOTE (dom.tip.scopeName): Used within the DOM panel as a tooltip when hovering
+# "(closure)".
+dom.tip.scopeName=verwenden Sie <func>.%closureVariable um in der Kommandozeile drauf zuzugreifen.
+# LOCALIZATION NOTE (dom.tip.scopeMemberName): Used within the DOM panel as a tooltip when
+# hovering a variable in a closure.
+# %S: the variable name - starts with "%"
+dom.tip.scopeMemberName=verwenden Sie <func>.%S um in der Kommandozeile drauf zuzugreifen.
+# LOCALIZATION NOTE (firebug.reps.declarativeScope, firebug.reps.objectScope, firebug.reps.withScope):
+# Labels shown to describe different types of closure scopes.
+firebug.reps.declarativeScope=[deklarativer Anwendungsbereich]
+firebug.reps.objectScope=[Objekt Anwendungsbereich]
+firebug.reps.withScope=[with Anwendungsbereich]
+# LOCALIZATION NOTE (firebug.reps.optimizedAway): Label shown to denote a closure variable that has
+# been optimized away.
+firebug.reps.optimizedAway=(wegoptimiert)
+# LOCALIZATION NOTE (firebug.reps.element.attribute_value, firebug.reps.element.property_value):
+# Used in the Console panel for elements. If an input element has two different values, one set
+# as "value" attribute and one set as 'value' property, these labels are used to distinguish it.
+firebug.reps.element.attribute_value=Attribut Wert
+firebug.reps.element.property_value=Eigenschafts Wert
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Bei Eigenschaftsänderung anhalten
+dom.tip.Break_On_Property_Change=JavaScript Ausführung anhalten, wenn diese Eigenschaft geändert wird
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Bei Eigenschaftsänderung anhalten deaktivieren
+dom.label.DOM_Breakpoints=DOM-Haltepunkte
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Attribut \\"%S\\" bearbeiten...
+html.tip.Edit_Attribute=Den Wert des Attributs "%S" dieses Elements bearbeiten
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Attribut \\"%S\\" löschen
+html.tip.Delete_Attribute=Das Attribut "%S" dieses Elements löschen
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Geerbt von
+SothinkWarning=Die \\"Sothink SWF Catcher\\"-Erweiterung hindert Firebug an der ordnungsgemäßen Ausführung.<br/><br/>Bitte lesen Sie <a href=\\"http://www.getfirebug.com/faq.html#Sothink\\" target=\\"_new\\">diesen Artikel in der Firebug-FAQ (Englisch)</a> für weitere Hilfe.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=Zwölf Boxkämpfer jagen Viktor quer über den großen Sylter Deich. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=Es wurden keine Style-Regeln definiert. Sie können <a>eine Regel erstellen</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=Dieses Element hat keine Style-Regeln. Sie können <a>eine Regel für es erstellen</a>.
+EditStyle=Element-Style bearbeiten...
+style.tip.Edit_Style=Den Inline-Style dieses Elements bearbeiten
+AddRule=Regel hinzufügen…
+css.tip.AddRule=Eine allgemeine Regel zu diesem Element hinzufügen
+NewRule=Neue Regel...
+css.tip.New_Rule=Eine neue Regel hinzufügen
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule="%S" löschen
+css.tip.Delete_Rule=Die Regel "%S" und alle ihre Eigenschaften löschen
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Media Query bearbeiten
+css.menu.tip.Edit_Media_Query=Die Media Query dieser Regel bearbeiten
+NewProp=Neue Eigenschaft...
+css.tip.New_Prop=Eine neue Eigenschaft zu der aktuellen Regel hinzufügen
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=\\"%S\\" bearbeiten...
+css.tip.Edit_Prop=Den Wert der Eigenschaft "%S" bearbeiten
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=\\"%S\\" deaktivieren
+css.tip.Disable_Prop=Die Eigenschaft "%S" deaktivieren
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=\\"%S\\" löschen
+css.tip.Delete_Prop=Die Eigenschaft "%S" löschen
+# Console context menu labels.
+BreakOnThisError=Bei diesem Fehler anhalten
+console.menu.tip.Break_On_This_Error=JavaScript Ausführung anhalten, wenn dieser Fehler auftritt
+BreakOnAllErrors=Bei allen Fehlern anhalten
+console.menu.tip.Break_On_All_Errors=JavaScript Ausführung anhalten, wenn ein Fehler auftritt
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Throw/Catch verfolgen
+script.option.tip.Track_Throw_Catch=Ausnahmen verfolgen, auch wenn diese durch try/catch-Blöcke abgefangen werden
+UseLastLineForEvalName=Letzte Quelltextzeile für eval()-Namen verwenden
+UseMD5ForEvalName=MD5 für eval()-Namen verwenden
+# Breakpoints side panel
+Breakpoints=Haltepunkte
+ErrorBreakpoints=Fehler-Haltepunkte
+LoggedFunctions=Protokollierte Funktionen
+EnableAllBreakpoints=Alle Haltepunkte aktivieren
+breakpoints.option.tip.Enable_All_Breakpoints=Alle aufgelisteten Haltepunkte aktivieren
+DisableAllBreakpoints=Alle Haltepunkte deaktivieren
+breakpoints.option.tip.Disable_All_Breakpoints=Alle aufgelisteten Haltepunkte deaktivieren
+ClearAllBreakpoints=Alle Haltepunkte entfernen
+breakpoints.option.tip.Clear_All_Breakpoints=Alle aufgelisteten Haltepunkte löschen
+ConditionInput=Dieser Haltepunkt stoppt nur, wenn dieser Ausdruck wahr ist:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Haltepunkt entfernen
+breakpoints.tip.Remove_Breakpoint=Den Haltepunkt löschen
+breakpoints.Disable_Breakpoint=Haltepunkt deaktivieren
+breakpoints.tip.Disable_Breakpoint=Den Haltepunkt deaktivieren
+breakpoints.Enable_Breakpoint=Haltepunkt aktivieren
+breakpoints.tip.Enable_Breakpoint=Den Haltepunkt aktivieren
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Fortsetzen
+script.balloon.Disable=Deaktivieren
+ScriptsFilterStatic=Statische Skripte anzeigen
+ScriptsFilterEval=Statische und eval()-Skripte anzeigen
+ScriptsFilterEvent=Statische und Ereignis-Skripte anzeigen
+ScriptsFilterAll=Statische, eval()- und Ereignis-Skripte anzeigen
+ScriptsFilterStaticShort=statisch
+ScriptsFilterEvalShort=eval()
+ScriptsFilterEventShort=Ereignisse
+ScriptsFilterAllShort=alle
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Alle erweitern
+callstack.tip.Expand_All=Alle Stack-Frame Funktionen aufklappen
+callstack.Collapse_All=Alle zusammenklappen
+callstack.tip.Collapse_All=Alle Stack-Frame Funktionen zuklappen
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack-Frames werden nur angezeigt, wenn die Skriptausführung angehalten wurde.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Benutzerdefinierte Eigenschaften anzeigen
+dom.option.tip.Show_User_Props=Benutzerdefinierte Objekteigenschaften anzeigen
+ShowUserFuncs=Benutzerdefinierte Funktionen anzeigen
+dom.option.tip.Show_User_Funcs=Benutzerdefinierte Objektmethoden anzeigen
+ShowDOMProps=DOM-Eigenschaften anzeigen
+dom.option.tip.Show_DOM_Props=Im DOM definierte Eigenschaften anzeigen
+ShowDOMFuncs=DOM-Funktionen anzeigen
+dom.option.tip.Show_DOM_Funcs=Im DOM definierte Funktionen anzeigen
+ShowDOMConstants=DOM-Konstanten anzeigen
+dom.option.tip.Show_DOM_Constants=Im DOM definierte Konstanten anzeigen
+ShowClosures=Zeige Anwendungsbereich
+dom.option.tip.Show_Closures=Zeigt mit verschiedenen Funktionen verbundene Closures an (aktiviert den Debugger)
+ShowInlineEventHandlers=Inline Ereignisbehandler anzeigen
+ShowInlineEventHandlersTooltip=Verfügbare Inline Ereignisbehandler anzeigen, die nicht mit einer Funktion verknüpft sind
+ShowOwnProperties=Nur eigene Eigenschaften anzeigen
+ShowOwnPropertiesTooltip=Prototyp-Kette nicht anzeigen
+ShowEnumerableProperties=Nur abzählbare Eigenschaften anzeigen
+ShowEnumerablePropertiesTooltip=Nicht-abzählbare Eigenschaften ausblenden
+NoMembersWarning=Für dieses Objekt können keine Eigenschaften angezeigt werden.
+NewWatch=Neuer Überwachungsausdruck...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Überwachung hinzufügen
+watch.tip.Add_Watch=Die Auswahl/das Objekt zum Überwachen Seitenpanel zur Überwachung hinzufügen
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Quelltext kopieren
+script.tip.Copy_Source_Code=Den ausgewählten Quelltext in die Zwischenablage kopieren
+Use_hash_plus_number_to_go_to_line=#<Nummer> eintippen, um zu einer Zeile zu springen
+CopyValue=Wert kopieren
+dom.tip.Copy_Value=Den Wert der Eigenschaft in die Zwischenablage kopieren
+Copy_Name=Name kopieren
+dom.tip.Copy_Name=Den Namen der Eigenschaft in die Zwischenablage kopieren
+Copy_Path=Pfad kopieren
+dom.tip.Copy_Path=Den Eigenschaftspath in die Zwischenablage kopieren
+NewProperty=Neue Eigenschaft...
+EditProperty=Eigenschaft bearbeiten...
+dom.tip.Edit_Property=Den Wert der Eigenschaft bearbeiten
+EditVariable=Variable bearbeiten...
+stack.tip.Edit_Variable=Den Wert der Variable bearbeiten
+EditWatch=Überwachung bearbeiten...
+watch.tip.Edit_Watch=Den Wert des Überwachungsausdrucks bearbeiten
+DeleteProperty=Eigenschaft löschen
+dom.tip.Delete_Property=Die Eigenschaft löschen
+DeleteWatch=Überwachung löschen
+DeleteAllWatches=Alle Überwachungen löschen
+watch.tip.Delete_Watch=Den Überwachungsausdruck löschen
+watch.tip.Delete_All_Watches=Alle Überwachungsausdrücke löschen
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Haltepunkt setzen
+script.tip.Set_Breakpoint=Haltepunkt an dieser Zeile setzen/löschen
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Haltepunktbedingung bearbeiten...
+breakpoints.tip.Edit_Breakpoint_Condition=Die Bedingung bearbeiten, unter der dieser Haltepunkt die JavaScript-Ausführung stoppt
+NoBreakpointsWarning=In dieser Seite wurden keine Haltepunkte gesetzt.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Nur angewendete Styles anzeigen
+style.option.tip.Only_Show_Applied_Styles=Nur Styles anzeigen, die diesem Element zugewiesen wurden
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=User-Agent-CSS anzeigen
+style.option.tip.Show_User_Agent_CSS=Auch das vom Browser definierte CSS anzeigen
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Farben als Hex
+computed.option.tip.Colors_As_Hex=Farben im Hexadezimalformat anzeigen
+computed.option.label.Colors_As_RGB=Farben als RGB
+computed.option.tip.Colors_As_RGB=Farben im RGB-Format anzeigen
+computed.option.label.Colors_As_HSL=Farben als HSL
+computed.option.tip.Colors_As_HSL=Farben im HSL-Format anzeigen
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=active Pseudo-Klassen Styles anzeigen
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=hover Pseudo-Klassen Styles anzeigen
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=focus Pseudo-Klassen Styles anzeigen
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Deklaration untersuchen
+css.tip.Inspect_Declaration= Die Deklaration dieser Schriftart untersuchen
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Zusammenfassende Eigenschaften erweitern
+css.option.tip.Expand_Shorthand_Properties=CSS Kurzschreibweisen erweitern zu all ihren Eigenschaften
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Alphabethisch sortieren
+computed.option.tip.Sort_Alphabetically=Die Styles nach deren Name sortieren/in Kategorien einteilen
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Mozilla-spezifische Styles anzeigen
+computed.option.tip.Show_Mozilla_Specific_Styles=Auch Styles mit -moz Präfix anzeigen
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=Dieses Element hat keine benutzerdefinierten Style-Regeln.
+script.Type_any_key_to_filter_list=Etwas eingeben, um die Liste zu filtern
+# LOCALIZATION NOTE (location.inline):
+# Label used within the Location Menu for inline styles or scripts
+location.inline=Inline
+# LOCALIZATION NOTE (location.no_domain):
+# Label used within the Location Menu for the group of scripts,
+# which don't have a domain specified like e.g. eval()'ed scripts
+location.no_domain=keine Domain
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=Position
+LayoutAdjacent=adjacent
+position=position
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Lineale und Hilfslinien anzeigen
+layout.option.tip.Show_Rulers=Lineale und Hilfslinien auf der Seite anzeigen, wenn mit der Maus über Teile der Layout-Box gefahren wird
+# Net panel
+Loading=Lädt...
+Headers=Header
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Anfrageliste leeren
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Header zurücksetzen
+net.header.tip.Reset_Header=Spaltenkopfanzeige zurücksetzen
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=Angefragter URL und benutzte HTTP-Methode
+net.header.Status=Status
+net.header.Status_Tooltip=Status der empfangenen Antwort
+net.header.Domain=Domain
+net.header.Domain_Tooltip=Domain der ausgeführten Anfrage
+net.header.Size=Größe
+net.header.Size_Tooltip=Größe der empfangenen Antwort
+net.header.Timeline=Zeitlinie
+net.header.Timeline_Tooltip=Detaillierte zeitliche Informationen über die Anfrage- und Antwortdauer.
+net.header.Local_IP=Lokale IP
+net.header.Local_IP_Tooltip=Lokale IP-Adresse und Portnummer, an welche die Anfrage gebunden ist
+net.header.Remote_IP=Remote-IP
+net.header.Remote_IP_Tooltip=Remote-IP-Adresse und Port, an welche die Anfrage gebunden ist
+net.header.Protocol=Protokoll
+net.header.Protocol_Tooltip=Das URL-Protokoll, das benutzt wurde, um die Ressource im Web anzusprechen
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=XHR-Haltepunkte
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Bei XHR anhalten
+net.tip.Break_On_XHR=JavaScript-Ausführung anhalten, wenn ein XMLHttpRequest gemacht wird
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=Quelltext anzeigen
+net.headers.pretty_print=Formatiert anzeigen
+# LOCALIZATION NOTE (net.filter.label.All, net.filter.tooltip.All, net.filter.label.HTML,
+# net.filter.tooltip.HTML, net.filter.label.CSS, net.filter.tooltip.CSS, net.filter.label.JS,
+# net.filter.tooltip.JS, net.filter.label.XHR, net.filter.tooltip.XHR, net.filter.label.Images,
+# net.filter.tooltip.Images, net.filter.label.Plugins, net.filter.tooltip.Plugins,
+# net.filter.label.Media, net.filter.tooltip.Media):
+# Labels and tooltips for Net panel filter (used on the Net panel toolbar)
+net.filter.label.All=Alles
+net.filter.tooltip.All=Zeige alle MIME Typen
+net.filter.label.HTML=HTML
+net.filter.tooltip.HTML=Zeige nur Markup Dateien
+net.filter.label.CSS=CSS
+net.filter.tooltip.CSS=Zeige nur CSS Dateien
+net.filter.label.JS=JavaScript
+net.filter.tooltip.JS=zeige nur JavaScript Dateien
+net.filter.label.XHR=XHR
+net.filter.tooltip.XHR=Zeige nur XMLHttpRequests
+net.filter.label.Images=Bilder
+net.filter.tooltip.Images=Zeige nur Bilder
+net.filter.label.Plugins=Plug-ins
+net.filter.tooltip.Plugins=Zeige nur Flash und Silverlight Dateien.
+net.filter.label.Media=Medien
+net.filter.tooltip.Media=Zeige nur Audio und Video Dateien
+net.filter.label.Fonts=Schriften
+net.filter.tooltip.Fonts=Zeige nur Schriften
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Post
+Put=Put
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Antwort
+URLParameters=Parameter
+Cache=Cache
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Allgemeine Informationen
+fontviewer.Meta_Data=Meta-Daten
+fontviewer.view_source=Quelltext anzeigen
+fontviewer.Preview=Vorschau
+fontviewer.view_characters=Zeichen anzeigen
+fontviewer.pretty_print=formattiert anzeigen
+fontviewer.view_sample=Beispiel anzeigen
+fontviewer.uniqueid=Eindeutige ID
+fontviewer.vendor=Anbieter
+fontviewer.license=Lizenz
+fontviewer.description=Beschreibung
+fontviewer.copyright=Copyright
+fontviewer.credits=Beitragende
+fontviewer.trademark=Handelsmarke
+fontviewer.licensee=Lizenznehmer
+fontviewer.extension=Erweiterung
+fontviewer.pangram=Zwölf Boxkämpfer jagen Viktor quer über den großen Sylter Deich
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Nach Schlüssel sortieren
+jsonviewer.do_not_sort=Nicht sortieren
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=\\\"%S\\\" als JSON kopieren
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Anfrage-Header
+ResponseHeaders=Antwort-Header
+CachedResponseHeaders=Antwort-Header aus dem Cache
+PostRequestHeaders=Anfrageheader des Uploadstreams
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=Die Anfrage wurde direkt über den Cache abgewickelt, daher gibt es keine Antwort vom Server. Siehe unten für die zwischengespeicherte Antwort.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebugs Protokolllimit wurde erreicht. %1$S Eintrag wird nicht angezeigt.;Firebugs Protokolllimit wurde erreicht. %1$S Einträge werden nicht angezeigt.
+LimitPrefs=Voreinstellungen
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Um das Limit zu ändern, bearbeiten Sie: %S
+Refresh=Aktualisieren
+panel.tip.Refresh=Panelanzeige aktualisieren
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=In einem neuen Tab öffnen
+firebug.tip.Open_In_Tab=Den URL in einem neuen Browsertab öffnen
+Open_Response_In_New_Tab=Antwort in einem neuen Tab öffnen
+net.tip.Open_Response_In_New_Tab=Die Antwort in einem neuen Browsertab öffnen
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Zeitmessung
+ProfilerStarted=Die Zeitmessung läuft. Klicken Sie erneut auf \\"Zeitmessung\\" um den Report zu sehen.
+ProfilerRequiresTheScriptPanel=Das Skript Panel muss aktiviert sein, damit das Profiling funktioniert.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$ms, %2$S Aufruf);(%1$Sms, %2$S Aufrufe)
+NothingToProfile=Keine Aktivität, die gemessen werden könnte
+PercentTooltip=Prozentualer Zeitverbrauch der Funktion
+CallsHeaderTooltip=Anzahl der Funktionsaufrufe
+OwnTimeHeaderTooltip=Zeitverbrauch der Funktion, geschachtelte Aufrufe ausgenommen
+TimeHeaderTooltip=Zeitverbrauch der Funktion einschließlich geschachtelter Aufrufe
+AvgHeaderTooltip=Durchschnittliche Zeit einschließlich Funktionsaufrufen
+MinHeaderTooltip=Geringste Zeit eingeschließlich Funktionsaufrufen
+MaxHeaderTooltip=Meiste Zeit einschließlich Funktionsaufrufen
+ProfileButton.Tooltip=JavaScript Ausführungszeit analysieren
+Function=Funktion
+Percent=Prozent
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Aufrufe
+OwnTime=Eigene Zeit
+Time=Zeit
+Avg=Durchschn.
+Min=Min.
+Max=Max.
+File=Datei
+# Support for standard actions.
+Copy=Kopieren
+Cut=Ausschneiden
+Remove=Entfernen
+Delete=Löschen
+Paste=Einfügen
+SelectAll=Alles markieren
+html.Copy_Node=%S kopieren
+html.tip.Copy_Node=Den %S Knoten und alle seine Inhalte in die Zwischenablage kopieren
+CopyInnerHTML=innerHTML kopieren
+html.tip.Copy_innerHTML=Die Inhalte des Elements in die Zwischenablage kopieren
+CopyXPath=XPath kopieren
+html.tip.Copy_XPath=Den XPath des Elements in die Zwischenablage kopieren
+Copy_CSS_Path=CSS-Pfad kopieren
+html.tip.Copy_CSS_Path=Den CSS-Pfad des Elements in die Zwischenablage kopieren
+# LOCALIZATION NOTE (html.menu.Paste, html.tip.Paste): Context menu item (with subitems).
+# Used in the HTML Panel to paste HTML/SVG/XML/XUL/MathML contents
+# %S = the type of the content to paste (HTML, SVG, XML, XUL or MathML)
+html.menu.Paste=%S Einfügen
+html.tip.Paste=Als %S Inhalt einfügen
+# LOCALIZATION NODE (html.menu.Paste_*, html.tip.Paste_*): Context menu items.
+# These items are paste options, and appears as subitems of html.menu.Paste in the context menu.
+html.menu.Paste_Replace_Content=Inhalt ersetzten
+html.tip.Paste_Replace_Content=Inhalt dieses Knotens ersetzten
+html.menu.Paste_Replace_Node=Knoten ersetzten
+html.tip.Paste_Replace_Node=Ersetzte das HTML dieses Knotens
+html.menu.Paste_AsFirstChild=Als erstes Kind
+html.tip.Paste_AsFirstChild=Als erstes Kind dieses Knoten einfügen
+html.menu.Paste_AsLastChild=Als letztes Kind
+html.tip.Paste_AsLastChild=Als letztes Kind dieses Knotens einfügen
+html.menu.Paste_Before=bevor
+html.tip.Paste_Before=Vor diesem Knoten einfügen
+html.menu.Paste_After=Nach
+html.tip.Paste_After=Nach diesem Knoten einfügen
+# LOCALIZATION NOTE (html.menu.Reload_Frame, html.menu.tip.Reload_Frame):
+# Context menu item of HTML frames
+html.menu.Reload_Frame=Frame neu laden
+html.menu.tip.Reload_Frame=Inhalt des Frames neu laden
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Adresse kopieren
+clipboard.tip.Copy_Location=Den URL der Objektquelle in die Zwischenablage kopieren
+CopyURLParameters=URL-Parameter kopieren
+net.tip.Copy_URL_Parameters=URL-Parameter in die Zwischenablage kopieren
+CopyPOSTParameters=POST-Parameter kopieren
+net.tip.Copy_POST_Parameters=POST-Parameter in die Zwischenablage kopieren
+CopyLocationParameters=Adresse mit Parametern kopieren
+net.tip.Copy_Location_Parameters=Den URL inkl. Parametern in die Zwischenablage kopieren
+CopyRequestHeaders=Anfrage-Header kopieren
+net.tip.Copy_Request_Headers=Anfrageheader in die Zwischenablage kopieren
+CopyResponseHeaders=Antwort-Header kopieren
+net.tip.Copy_Response_Headers=Antwortheader in die Zwischenablage kopieren
+CopyResponse=Antwort-Body kopieren
+net.tip.Copy_Response=Antwortinhalt in die Zwischenablage kopieren
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Fehler kopieren
+console.menu.tip.Copy_Error=Die Fehlerinformationen in die Zwischenablage kopieren
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Funktion kopieren
+dom.tip.Copy_Source=Den Funktionsquelltext in die Zwischenablage kopieren
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Aufrufe in \\"%S\\" protokollieren
+dom.tip.Log_Calls_To_Function=Aufrufe der Funktion "%" im Konsole Panel mitprotokollieren
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Ereignisse protokollieren
+html.tip.Show_Events_In_Console=Ereignisinformationen in der Konsole protokollieren
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Aktiviert
+panel.tip.Enabled=Die Panelaktivierung ein-/ausschalten
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Kommandozeilenpopup anzeigen
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Die Firebug-Konsole unterstützt \\'%S\\' nicht.
+# LOCALIZATION NOTE (commandline.errorSourceHeader): Message displayed in the header of the
+# source code where an exception has occured.
+commandline.errorSourceHeader=IN DER FIREBUG KOMMANDOZEILE AUSGEFÜHRTER AUSDRUCK:
+# LOCALIZATION NOTE (commandline.MethodDisabled): Message displayed in the Console panel,
+# if a disabled method is entered via the Command Line.
+commandline.MethodDisabled=Diese Kommandozeilenmethode ist temporär deaktiviert.
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Die Firebug-Kommandozeile unterstützt \\'%S\\' nicht.
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Aktuelles Fenster:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=\\"Bei allen Fehlern anhalten\\" deaktivieren
+console.Break_On_All_Errors=Bei allen Fehlern anhalten
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Bei diesem Fehler anhalten
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Pfeiltasten, Tab oder Enter benutzen
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript ist in Ihren Firefox-Einstellungen deaktiviert. Falls Sie das Konsolenmodul benutzen möchten, aktivieren Sie JavaScript unter: \\"Extras\\" -> \\"Einstellungen...\\" -> \\"Inhalt\\" -> \\"JavaScript aktivieren\\".
+# LOCALIZATION NOTE (console.tip.ScriptPanelMustBeEnabledForTraces): Message shown inside the Console
+# panel instead of a stack trace when it is missing because the script panel is disabled. The text
+# enclosed in <a></a> is a link which enables the Script panel.
+console.ScriptPanelMustBeEnabledForTraces=Das Skript Panel muss aktiviert sein, um Stack-Traces zu bekommen. <a>Skript Panel aktivieren.</a>
+# LOCALIZATION NOTE (tooltip.multipleFiltersHint):
+# Hint used for Console and Net panel filter button tooltips describing the shortcut for selecting
+# multiple filters
+tooltip.multipleFiltersHint=Strg+Klicken benutzen, um mehrere Filter auszuwählen
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=Es gibt zu viele Elemente in diesem Array, um sie auf der Seite zu hervorzuheben (aktuelles Limit ist %S).\\\\nBitte die Einstellung \\'extensions.firebug.multiHighlightLimit\\' beachten.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Die Firebug Kommandozeile ist für XML-Seiten deaktiviert. Sie können <a>zum HTML Panel wechseln</a>, um sie zu aktivieren.
+# LOCALIZATION NOTE (commandline.Use_in_Command_Line): Right-click option for copying a JS value into the variable
+# $p and opening the Command Line.
+commandline.Use_in_Command_Line=In Kommandozeile benutzen
+commandline.tip.Use_in_Command_Line=Fokussiert die Kommandozeile und macht diesen Wert als "$p" verfügbar
+# LOCALIZATION NOTE (commandline.include.includeSuccess): For the include() function. This message is displayed
+# in the Console panel when a remote script evaluation succeeded
+# %S = the filename
+commandline.include.includeSuccess=%S erfolgreich eingebunden
+# LOCALIZATION NOTE (commandline.include.aliasNotFound): For the include() function. This message is displayed
+# in the Console panel when a requested alias is not found
+# %S = the alias name
+commandline.include.aliasNotFound=Alias "%S" wurde nicht gefunden.
+# LOCALIZATION NOTE (commandline.include.loadFail): For the include() function. This message is displayed
+# in the Console panel when the remote script download failed
+# %S = the filename
+commandline.include.loadFail=Das folgende Skript konnte nicht geladen werden: %S
+# LOCALIZATION NOTE (commandline.include.invalidRequestProtocol): For the include() function. This message is displayed
+# in the Console panel when the user tries to download a script with another scheme than HTTP(S)
+# %S = the filename
+commandline.include.invalidRequestProtocol=Nur die Protokolle HTTP/HTTPS werden unterstützt.
+# LOCALIZATION NOTE (commandline.include.invalidSyntax): For the include() function. This message is displayed
+# in the Console panel when the user tries to execute a non-Javascript file
+# or when the script contains syntax errors
+commandline.include.invalidSyntax=Das Einbinden ist wegen Syntaxfehlern fehlgeschlagen. Enthält die Datei wirklich JavaScript?
+# LOCALIZATION NOTE (commandline.include.aliasCreated): For the include() function. This message is displayed
+# in the Console panel when a new alias is created successfully
+# %S = the alias name
+commandline.include.aliasCreated=Alias "%S" wurde erstellt.
+# LOCALIZATION NOTE (commandline.include.aliasRemoved): For the include() function. This message is displayed
+# in the Console panel when a new alias is removed successfully
+# %S = the alias name
+commandline.include.aliasRemoved=Alias "%S" wurde entfernt.
+# LOCALIZATION NOTE (commandline.include.invalidAliasName): For the include() function. This message is displayed
+# in the Console panel if an invalid alias name (which contains "/" or ".") is provided.
+# %S = the invalid alias name
+commandline.include.invalidAliasName=Aliasnamen dürfen keine "." oder "/" enthalten; ungültiger Aliasname: "%S"
+# LOCALIZATION NOTE (commandline.include.tooLongAliasName): For the include() function. This message is displayed
+# in the Console panel if the provided alias name is too long (i.e. more than 30 characters)
+# %S = the invalid alias name
+commandline.include.tooLongAliasName=Aliasnamen dürfen nicht mehr als 30 Zeichen enthalten; ungültiger Aliasname: "%S"
+# LOCALIZATION NOTE (commandline.include.wrongAliasArgument): For the include() function. This message is displayed
+# in the Console panel if the type of the alias name is invalid (a string is expected)
+commandline.include.invalidAliasArgumentType=Ungültiger zweiter Parameter; Aliasname erwartet
+# LOCALIZATION NOTE (commandline.include.wrongUrlArgument): For the include() function. This message is displayed
+# in the Console panel if the type of the url arguement is invalid (a string or null are expected)
+commandline.include.invalidUrlArgumentType=Ungültiger URL-Parameter
+# LOCALIZATION NOTE (commandline.include.confirmDelete): For the include() function. This message is displayed
+# in a confirmation dialog when the user wants to delete an alias
+# %S = the name of the alias to delete
+commandline.include.confirmDelete=Soll der Alias "%S" wirklich entfernt werden?
+# LOCALIZATION NOTE (commandline.include.noDefinedAlias): For the include() function. This message is displayed
+# when the user wants to display the aliases table but there no alias is defined.
+commandline.include.noDefinedAlias=(bisher wurde kein Alias definiert)
+commandline.tip.Delete_Alias=Alias entfernen
+commandline.tip.Edit_Alias_Name=Lässt den Namen des Alias bearbeiten
+commandline.tip.Edit_Alias_URL=Lässt den URL des Alias bearbeiten
+commandline.tip.Open_In_Scratchpad=Den Inhalt des Skripts in der JavaScript-Umgebung öffnen
+commandline.tip.Include_Script=Skript herunterladen und ausführen
+commandline.label.DeleteAlias=Alias entfernen
+commandline.label.EditAliasName=Aliasname bearbeiten
+commandline.label.EditAliasURL=Alias-URL bearbeiten
+commandline.label.OpenInScratchpad=In JavaScript-Umgebung öffnen
+commandline.label.IncludeScript="%S" einbinden
+# LOCALIZATION NOTE (Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting things.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+#
+# NOTE to translators: this message was originally taken from cookies.msg.Do_not_show_this_message_again
+Do_not_show_this_message_again=Diese Nachricht nicht wieder anzeigen
+# LOCALIZATION NOTE (scratchpad.loading, scratchpad.failLoading)
+# Used when Firebug downloads a remote script and wants to display it in Scratchpad
+# The messages appears as Javascript Comments in Scratchpad
+scratchpad.loading=Wird geladen, bitte warten...
+scratchpad.failLoading=Fehler beim Laden des Skripts.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Antwort-Body
+net.sizeinfo.Post_Body=Post-Body
+net.sizeinfo.Total_Sent=Insgesamt versendet
+net.sizeinfo.Total_Received=Insgesamt erhalten
+net.sizeinfo.Including_HTTP_Headers=Einschließlich HTTP-Header
+net.ActivationMessage=Das Netzwerkmodul ist aktiviert. Solange das Netzwerkmodul inaktiv ist, werden keine Anfragen angezeigt.
+net.responseSizeLimitMessage=Das Antwortlimit von Firebug wurde erreicht. Sie können sich die gesamte Antwort <a>in einem neuen Firefox-Tab anzeigen</a> lassen.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Das Größenlimit der Post-Antwort wurde erreicht und diese von Firebug entfernt.
+net.Break_On_XHR=Bei XHR anhalten
+net.label.Parameters=Parameter
+net.label.Parts=Teile
+net.label.Source=Quelle
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Erneut senden
+net.tip.Resend=Anfrage erneut senden
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Browser-Cache deaktivieren
+net.option.tip.Disable_Browser_Cache=Den HTTP-Cache des Browsers deaktivieren
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Paint-Ereignisse anzeigen
+net.option.tip.Show_Paint_Events=MozAfterPaint Ereignisse als grüne Linien innerhalb der Zeitlinie darstellen
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=BFCache Antworten anzeigen
+net.option.tip.Show_BFCache_Responses=Antworten vom Back-Forward Cache ebenfalls anzeigen
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Beim Nächsten anhalten
+script.Disable_Break_On_Next=Beim nächsten anhalten deaktivieren
+ShowHttpHeaders=HTTP-Header anzeigen
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S Anfrage;%1$S Anfragen
+# LOCALIZATION NOTE (net.summary.from_cache):
+# Label used in the Net panel's request summary. Displays the summarized response size coming from cache for all HTTP requests.
+net.summary.from_cache=%S aus dem Cache
+# LOCALIZATION NOTE (net.summary.tip.request_count, net.summary.tip.total_size,
+# net.summary.tip.total_cached_size, net.summary.tip.total_request_time):
+# Labels used for the tooltips in the Net panel's request summary
+net.summary.tip.request_count=Anzahl der Anfragen
+net.summary.tip.total_size=Gesamtgröße aller Anfragen
+net.summary.tip.total_cached_size=Gesamtgröße gecachter Anfragen
+net.summary.tip.total_request_time=Benötigte Gesamtzeit, um alle Anfragen zu laden und Zeitpunkt, als das "onload" Ereignis aufgetreten ist
+StopLoading=Laden stoppen
+net.tip.Stop_Loading=Laden der Anfrage abbrechen
+LargeData=(sehr große Datenmenge)
+ShowComputedStyle=Berechneten Style anzeigen
+StyleGroup-text=Text
+StyleGroup-background=Hintergrund
+StyleGroup-box=Box-Modell
+StyleGroup-layout=Layout
+StyleGroup-other=Anderes
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Farbe kopieren
+css.tip.Copy_Color=Farbe in die Zwischenablage kopieren
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Grafikadresse kopieren
+css.tip.Copy_Image_Location=Den URL des Bildes in die Zwischenablage kopieren
+OpenImageInNewTab=Grafik in einem neuen Tab öffnen
+css.tip.Open_Image_In_New_Tab=Das Bild in einem neuen Browsertab öffnen
+# LOCALIZATION NOTE (OmitObjectPathStack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Werkzeugleisten-Stack auslassen
+callstack.option.tip.Omit_Object_Path_Stack=Den Objektpfad-Stack nicht anzeigen
+Load_Original_Source=Originalquelltext laden
+css.tip.Load_Original_Source=Änderungen verwerfen und das Original-CSS laden
+# LOCALIZATION NOTE (callstack.option.Show_Arguments, callstack.option.tip.Show_Arguments):
+# Stack side panel option (located in tab's option menu). If set to true,
+# function arguments are displayed
+callstack.option.Show_Arguments=Parameter anzeigen
+callstack.option.tip.Show_Arguments=Zeigt zu den Funktionsnamen auch deren Parameter an
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Regeldeklaration kopieren
+css.tip.Copy_Rule_Declaration=Die Regel inklusive aller Eigenschaften in die Zwischenablage kopieren
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Style-Deklaration kopieren
+css.tip.Copy_Style_Declaration=Die Eigenschaften der Regel in die Zwischenablage kopieren
+# LOCALIZATION NOTE (css.label.Copy_Property_Declaration, css.tip.Copy_Property_Declaration,
+# css.label.Copy_Property_Name, css.tip.Copy_Property_Name, css.label.Copy_Property_Value,
+# css.tip.Copy_Property_Value):
+# Menu item labels and tooltips used in CSS panel/Style side panel context menu.
+# Allow copying the current CSS property's declaration/name/value to the clipboard.
+css.label.Copy_Property_Declaration=Deklaration der Eigenschaft kopieren
+css.tip.Copy_Property_Declaration=Kopiert die Deklaration der Eigenschaft in die Zwischenablage
+css.label.Copy_Property_Name=Name der Eigenschaft kopieren
+css.tip.Copy_Property_Name=Kopiert den Namen der Eigenschaft in die Zwischenablage
+css.label.Copy_Property_Value=Wert der Eigenschaft kopieren
+css.tip.Copy_Property_Value=Kopiert den Wert der Eigenschaft in die Zwischenablage
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Fehler
+moduleManager.title=%S Panel ist deaktiviert
+moduleManager.desc3=Benutzen Sie das Menü des Firebug-Statusleistensymbols um alle Module zu aktivieren/deaktivieren. Benutzen Sie das kleine Menü der Modul-Tabs für modulspezifische Einstellungen.
+moduleManager.Enable=Aktivieren
+Suspend_Firebug=Firebug unterbrechen
+Resume_Firebug=Firebug fortsetzen
+Reset_Panels_To_Disabled=Module auf \\"Deaktiviert\\" zurücksetzen
+Open_Console=Konsole öffnen
+Open_Console_Tooltip=Firebug-Ablaufverfolgungskonsole öffnen
+Scope_Chain=Ablauf im Scope
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=Mit
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Aufruf
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Fenster
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blockieren
+requestinfo.Resolving=DNS-Lookup
+requestinfo.Connecting=Verbinden
+requestinfo.Sending=Senden
+requestinfo.Waiting=Warten
+requestinfo.Receiving=Empfangen
+requestinfo.ContentLoad=\\"DOMContentLoaded\\" (Ereignis)
+requestinfo.WindowLoad=\\"load\\" (Ereignis)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Anfrage Startzeit seit Beginn
+requestinfo.phases.label=Anfragephasen Startzeit und vergangene Zeit relativ zum Start der Anfrage:
+requestinfo.timings.label=Ereignis Timing relativ zum Start der Anfrage:
+search.Firebug_Search=Firebug-Suche
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Nächstes
+search.tip.Next=Nach dem nächsten Auftreten des Ausdrucks suchen
+search.Previous=Vorheriges
+search.tip.Previous=Nach dem vorherigen Auftreten des Ausdrucks suchen
+search.Case_Sensitive=Groß-/Kleinschreibung erzwingen
+search.tip.Case_Sensitive=Groß-/Kleinschreibung während der Suche beachten
+search.Case_Insensitive=Groß- und Kleinschreibung
+search.tip.Case_Insensitive=Groß-/Kleinschreibung während der Suche ignorieren
+search.Multiple_Files=Mehrere Dateien
+search.tip.Multiple_Files=Innerhalb aller Dateien suchen, die mit diesem Panel zusammenhängen
+search.Use_Regular_Expression=Regulären Ausdruck benutzen
+search.tip.Use_Regular_Expression=Den eingegebenen Ausdruck für die Suche als regulären Ausdruck interpretieren
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS-Selektor
+search.net.Headers=Header
+search.net.Parameters=Parameter
+search.net.Response_Bodies=Antwort-Bodies
+search.net.tip.Response_Bodies=Auch in Antwortinhalten suchen
+firebug.console.Persist=Dauerhaft
+firebug.console.Do_Not_Clear_On_Reload2=Panel nach dem Neuladen der Seite nicht leeren
+firebug.console.Show_All_Log_Entries=Alle Protokolleinträge anzeigen
+firebug.console.Errors=Fehler
+firebug.console.Filter_by_Errors=Nach Fehlern filtern
+firebug.console.Warnings=Warnungen
+firebug.console.Filter_by_Warnings=Nach Warnungen filtern
+firebug.console.Info=Info
+firebug.console.Filter_by_Info=Nach Informationen filtern
+firebug.console.Debug_Info=Debug-Info
+firebug.console.Filter_by_Debug_Info=Nach Debuginformationen filtern
+firebug.Deactivate_Firebug=Firebug deaktivieren
+firebug.tip.Deactivate_Firebug=Firebug für die aktuelle Webseite deaktivieren
+# LOCALIZATION NOTE (firebug.tip.Toggle_Side_Panels): A tooltip used for side panels visibility
+# toggle button. The button is available on the right side of panel's toolbar (only for panels
+# that have a side panel).
+firebug.tip.Toggle_Side_Panels=Anzeige der Side Panels an-/ausschalten
+firebug.ShowFirebug=Firebug öffnen
+firebug.menu.tip.Open_Firebug=Firebug Benutzeroberfläche anzeigen
+firebug.HideFirebug=Firebug verstecken
+firebug.menu.tip.Minimize_Firebug=Firebug minimieren, aber aktiviert lassen
+firebug.FocusFirebug=Firebug Fenster fokussieren
+firebug.menu.tip.Focus_Firebug=Abgedocktes Firebug Fenster fokussieren
+firebug.menu.Enable_All_Panels=Alle Module aktivieren
+firebug.menu.tip.Enable_All_Panels=Alle aktivierbaren Panels aktivieren
+firebug.menu.Disable_All_Panels=Alle Module deaktivieren
+firebug.menu.tip.Disable_All_Panels=Alle aktivierbaren Panels deaktivieren
+firebug.menu.Customize_shortcuts=Tastaturkürzel anpassen
+firebug.menu.tip.Customize_Shortcuts=Firebugs interne Tastenkürzel ändern
+firebug.Options=Einstellungen
+firebug.menu.tip.Options=Globale Firebug Einstellungen
+firebug.menu.Enable_Accessibility_Enhancements=Zugänglichkeitsverbesserungen aktivieren
+firebug.menu.tip.Enable_Accessibility_Enhancements=Erweiterte Kontrolle via Tastatur und andere Zugänglichkeitsverbesserungen aktivieren
+firebug.menu.Activate_Same_Origin_URLs2=Für Same-Origin-URLs aktivieren
+firebug.menu.tip.Activate_Same_Origin_URLs=Firebug für URLs aktivieren, auf die die Same-Origin-Policy zutrifft
+firebug.menu.Reset_All_Firebug_Options=Alle Firebug-Einstellungen zurücksetzen
+firebug.menu.tip.Reset_All_Firebug_Options=Alle Firebug Einstellungen auf ihre Standardwerte zurücksetzen
+firebug.menu.Firebug_Online=Firebug-Online
+firebug.menu.tip.Firebug_Online=Webseiten über Firebug
+firebug.menu.Extensions=Firebug Erweiterungen
+firebug.menu.tip.Extensions=Firebug Erweiterungen herunterladen und installieren
+firebug.menu.Vertical_Panels=Vertikale Panels
+firebug.menu.tip.Vertical_Panels=Zwischen horizontaler und vertikaler Anordnung der Firebug Haupt- und Seitenpanel umschalten
+firebug.menu.Show_Info_Tips=Infotips anzeigen
+firebug.menu.tip.Show_Info_Tips=Popups mit Informationen über das Element anzeigen, über dem die Maus steht
+firebug.Show_Error_Count=Fehleranzahl anzeigen
+firebug.menu.tip.Show_Error_Count=Die Anzahl der in die Konsole protokollierten Fehler anzeigen
+firebug.TextSize=Schriftgröße
+firebug.menu.tip.Text_Size=Textgröße ändern, die in Firebug benutzt wird
+firebug.IncreaseTextSize=Schrift vergrößern
+firebug.menu.tip.Increase_Text_Size=Textgröße erhöhen, die in Firebug benutzt wird
+firebug.DecreaseTextSize=Schrift verkleinern
+firebug.menu.tip.Decrease_Text_Size=Textgröße verringern, die in Firebug benutzt wird
+firebug.NormalTextSize=Normale Schriftgröße
+firebug.menu.tip.Normal_Text_Size=Textgröße, die in Firebug benutzt wird, auf den Standard zurücksetzen
+firebug.Website=Firebug-Website…
+firebug.menu.tip.Website=Offizielle Firebug Webseite öffnen
+firebug.help=Hilfe...
+firebug.menu.tip.help=Die Seite mit Links zu Firebug beschreibenden Seiten öffnen
+firebug.Documentation=Dokumentation…
+firebug.menu.tip.Documentation=Die Dokumentation zu Firebug öffnen
+firebug.KeyShortcuts=Tastaturkürzel…
+firebug.menu.tip.Key_Shortcuts=Die Liste der in Firebug verfügbaren Maus- und Tastaturkürzeln öffnen
+firebug.Forums=Diskussionsgruppen…
+firebug.menu.tip.Forums=Die Diskussionsgruppenseite öffnen
+firebug.Issues=Bekannte Probleme…
+firebug.menu.tip.Issues=Die Issue-Tracker-Seite öffnen
+firebug.Donate=Firebug unterstützen…
+firebug.menu.tip.Donate=Die Mitwirkungsseite öffnen
+firebug.About=Über…
+firebug.menu.tip.About=Informationen über Firebug
+ProfileJavaScript=JavaScript Zeitmessung
+firebug.menu.tip.Profile_JavaScript=JavaScript-Ausführungszeit messen
+firebug.Search=Suche
+firebug.menu.tip.Search=Den Fokus in das Suchfeld setzen
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Befehl erneut ausführen
+firebug.shortcut.tip.reenterCommand=Den letzten Befehl erneut in die Kommandozeile schreiben
+firebug.shortcut.toggleInspecting.label=Untersuchung an/aus
+firebug.shortcut.tip.toggleInspecting=Den Inspector aktivieren/deaktivieren
+firebug.shortcut.toggleQuickInfoBox.label=Schnellinfo Box an/aus
+firebug.shortcut.tip.toggleQuickInfoBox=Die Box mit Informationen über das aktuell untersuchte Element aktivieren/deaktivieren
+firebug.shortcut.toggleProfiling.label=Zeitmessung an/aus
+firebug.shortcut.tip.toggleProfiling=Den JavaScript Profiler aktivieren/deaktivieren
+firebug.shortcut.focusCommandLine.label=Kommandozeile fokussieren
+firebug.shortcut.tip.focusCommandLine=Firebug öffnen und den Fokus auf die Kommandozeile setzen / Kommandozeilenpopup öffnen/schließen
+firebug.shortcut.focusFirebugSearch.label=Firebug-Suche fokussieren
+firebug.shortcut.tip.focusFirebugSearch=Den Fokus in das Suchfeld setzen
+firebug.shortcut.focusWatchEditor.label=Überwachungseditor fokussieren
+firebug.shortcut.tip.focusWatchEditor=Zum Skript Panel wechseln und den Fokus in das Feld zur Eingabe eines neuen Überwachungsausdrucks setzen
+firebug.shortcut.focusLocation.label=Standort fokussieren
+firebug.shortcut.tip.focusLocation=Das Quellmenu öffnen
+firebug.shortcut.nextObject.label=Nächstes Objekt
+firebug.shortcut.tip.nextObject=Das nächste Objekt im Elementpfad eines Panels auswählen
+firebug.shortcut.previousObject.label=Voriges Objekt
+firebug.shortcut.tip.previousObject=Das vorherige Objekt im Elementpfad eines Panels auswählen
+firebug.shortcut.customizeFBKeys.label=Firebug-Tasten anpassen
+firebug.shortcut.tip.customizeFBKeys=Den Firebug Tastaturkürzeldialog öffnen
+firebug.shortcut.detachFirebug.label=Firebug in einem neuen Fenster öffnen
+firebug.shortcut.tip.detachFirebug=Firebug in ein eigenes Fenster abdocken
+firebug.shortcut.leftFirebugTab.label=Zum linken Firebug Panel wechseln
+firebug.shortcut.tip.leftFirebugTab=Zum linken Firebug Panel wechseln
+firebug.shortcut.rightFirebugTab.label=Zum rechten Firebug Panel wechseln
+firebug.shortcut.tip.rightFirebugTab=Zum rechten Firebug Panel wechseln
+firebug.shortcut.toggleFirebug.label=Firebug öffnen
+firebug.shortcut.tip.toggleFirebug=Firebug Benutzeroberfläche öffnen/minimieren
+firebug.shortcut.closeFirebug.label=Firebug deaktivieren
+firebug.shortcut.tip.closeFirebug=Firebug für die aktuelle Webseite deaktivieren
+firebug.shortcut.previousFirebugTab.label=Vorheriges Firebug Panel
+firebug.shortcut.tip.previousFirebugTab=Zum vorher ausgewählten Firebug Panel wechseln
+firebug.shortcut.clearConsole.label=Konsole leeren
+firebug.shortcut.tip.clearConsole=Alle Protokolleinträge aus der Konsole löschen
+firebug.shortcut.openTraceConsole.label=Ablaufverfolgungskonsole öffnen
+firebug.shortcut.tip.openTraceConsole=Die FBTrace Konsole öffnen
+firebug.shortcut.navBack.label=Zurück
+firebug.shortcut.tip.navBack=Zum vorherigen Panel oder Quelllisteneintrag des Navigationsverlaufs wechseln
+firebug.shortcut.navForward.label=Vorwärts
+firebug.shortcut.tip.navForward=Zum nächsten Panel oder Quelllisteneintrag des Navigationsverlaufs wechseln
+firebug.shortcut.increaseTextSize.label=Textgröße erhöhen
+firebug.shortcut.tip.increaseTextSize=Die in Firebug verwendeten Textgrößen erhöhen
+firebug.shortcut.decreaseTextSize.label=Textgröße verringern
+firebug.shortcut.tip.decreaseTextSize=Die in Firebug verwendeten Textgrößen verringern
+firebug.shortcut.normalTextSize.label=Normale Textgröße
+firebug.shortcut.tip.normalTextSize=Die in Firebug verwendeten Textgrößen auf den Standard zurücksetzen
+firebug.shortcut.help.label=Hilfe öffnen
+firebug.shortcut.tip.help=Die Seite mit häufig gestellten Fragen öffnen
+firebug.shortcut.toggleBreakOn.label=Anhalten bei ... an-/ausschalten
+firebug.shortcut.tip.toggleBreakOn=Anhalten der Skriptausführung bei speziellen Events innerhalb des Panels aktivieren/deaktivieren
+firebug.panel_selector=Modulauswahl
+customizeShortcuts=Firebug-Tastaturkürzelbelegungen
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=Panel Werkzeuge
+a11y.labels.firebug_panels=Firebug Panels
+a11y.labels.firebug_side_panels=Firebug Unterpanels
+a11y.labels.firebug_window=Firebug Fenster
+a11y.labels.firebug_status=Firebug Status
+a11y.labels.reset=zurücksetzen
+a11y.labels.reset_shortcut=Tastaturkürzel %S zurücksetzen
+aria.labels.inactive_panel=Inaktives Panel
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=Zeilen protokollieren
+a11y.labels.call_stack=Stack aufrufen
+a11y.labels.document_structure=Dokumentstruktur
+a11y.labels.title_panel= %S Panel
+a11y.labels.title_side_panel= %S Unterpanel
+a11y.labels.cached=zwischengespeichert
+aria.labels.stack_trace=Stack Ablaufverfolgung
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=position
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=margin top
+a11y.layout.margin_right=margin right
+a11y.layout.margin_bottom=margin bottom
+a11y.layout.margin_left=margin left
+a11y.layout.border_top=border top
+a11y.layout.border_right=border right
+a11y.layout.border_bottom=border bottom
+a11y.layout.border_left=border left
+a11y.layout.padding_top=paddding top
+a11y.layout.padding_right=padding right
+a11y.layout.padding_bottom=padding bottom
+a11y.layout.padding_left=padding left
+a11y.layout.top=top
+a11y.layout.right=right
+a11y.layout.bottom=bottom
+a11y.layout.left=left
+a11y.layout.width=width
+a11y.layout.height=height
+a11y.layout.size=size
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=Drücken Sie die Eingabetaste gefolgt von der Tabulatortaste, um individuelle Werte zu bearbeiten.
+a11y.labels.style_rules=Style-Regeln
+aria.labels.inherited_style_rules=Geerbte Style-Regeln
+a11y.labels.computed_styles=Berechnete Styles
+a11y.labels.dom_properties=DOM Eigenschaften
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=Inline Editor
+a11y.labels.value_for_attribute_in_element=Wert für %S Attribut in %S Element
+a11y.labels.attribute_for_element=Attribut für %S Element
+a11y.labels.text_contents_for_element=Textinhalte für %S Element
+a11y.labels.defined_in_file=definiert in %S
+a11y.labels.declarations_for_selector=Style-Defintionen für \\"%S\\" Selektor
+a11y.labels.property_for_selector=CSS Eigenschaften für Selektor: %S
+a11y.labels.value_property_in_selector=%S Eigenschaftswert für Selektor %S
+a11y.labels.css_selector=CSS-Selektor
+a11y.labels.source_code_for_file=Quelltext für Datei %S
+a11y.labels.press_enter_to_add_new_watch_expression=Drücken Sie die Eingabetaste, um einen neuen Überwachungsausdruck hinzuzufügen
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=überschrieben
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=hat einen bedingten Haltepunkt
+a11y.updates.has_disabled_break_point=hat einen deaktivierten Haltepunkt
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Skript unterbrochen in Zeile %S in %S, Datei %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=Treffer gefunden für \\"%S\\" in %S Protokollzeilen
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=Treffer gefunden für \\"%S\\" in Zeile %S in %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=Treffer gefunden für \\"%S\\" in %S Element in Pfad %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=Treffer gefunden für \\"%S\\" in Attribut %S=%S von %S Element in Pfad %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=Treffer gefunden für \\"%S\\" im Textinhalt: %S von %S Element in Pfad %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=Treffer gefunden für \\"%S\\" in Selektor %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=Treffer gefunden für \\"%S\\" in Style-Definition %S in Selektor %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=Treffer gefunden für \\"%S\\" in DOM-Eigenschaft %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=Treffer gefunden für \\"%S\\" in %S, %S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=Treffer gefunden für \\"%S\\" in Netzwerk-Zusammenfassung, Zeile: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=Keine Treffer gefunden für \\"%S\\"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Sind Sie sicher, dass Sie alle Firebug-Einstellungen auf die Standardwerte zurücksetzen wollen?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Ihre existierenden CSS Änderungen werden verworfen.\\\\nSind Sie sicher, dass Sie den Quelltext bearbeiten wollen?
+# Console messages
+warning.Console_must_be_enabled=Konsole muss aktiviert sein
+warning.Command_line_blocked?=Kommandozeile blockiert?
+warning.dollar_change=Die Kommandozeilenfunktion $() hat ihre Funktionsweise von $=getElementById(ID) zu $=querySelector(Selektor) geändert. Sie sollten stattdessen $("#%S") verwenden.
+message.Reload_to_activate_window_console=Neu laden, um die Fensterkonsole zu aktivieren
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Seite neu laden, um den Quelltext zu holen für
+message.The_resource_from_this_URL_is_not_text=Die Quelle von diesem URL ist kein Text:
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Zu diesem Panel zurückspringen
+firebug.history.Stay_on_this_panel=Bei diesem Panel bleiben
+firebug.history.Go_forward_to_this_panel=Zu diesem Panel springen
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Zurück
+firebug.history.Go_forward=Vorwärts
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Skript Panel war inaktiv während des Ladens der Seite
+script.suggestion.inactive_during_page_load2=<a>Neuladen</a>, um alle Quellen anzuzeigen
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript ist nicht aktiviert
+script.suggestion.javascript_not_enabled=Siehe Firefox > Extras > Einstellungen... > Inhalt > JavaScript aktivieren
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=JavaScript aktivieren und neuladen
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Alle Skripts wurden gefiltert
+script.suggestion.all_scripts_filtered=Siehe die Einstellung für den Skriptfilter in der Symbolleiste oder die Option \\"Chrome Quellen anzeigen\\"
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=Debugging funktioniert bei Systemressourcen nicht
+script.suggestion.no_system_source_debugging=Firebug kann momentan nicht dazu benutzt werden, Systemressourcen zu debuggen. Siehe <a>Issue 5110</a> für den Grund.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=Kein JavaScript auf dieser Seite
+script.suggestion.no_javascript2=Falls <script> Tags ein "type"-Attribut besitzen, sollte es "text/javascript" oder "application/javascript" entsprechen. Zudem müssen Skripts geparst werden können (syntaktisch korrekt sein).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Der Debugger ist bereits aktiv
+script.suggestion.debugger_active=Der Debugger hat im Moment an einem Haltepunkt auf einer anderen Seite gestoppt.
+script.button.Go_to_that_page=Zu dieser Seite gehen
+script.warning.debugger_not_activated=Debugger ist nicht aktiviert
+script.suggestion.debugger_not_activated=Debugger ist nicht aktiviert
+# LOCALIZATION NOTE (script.Script_panel_must_be_enabled): Adds a parenthetical note to a tooltip
+# about the Script panel having to be enabled.
+# %S = original message
+# example: "Profile JavaScript execution time (Script panel must be enabled)"
+script.Script_panel_must_be_enabled=%S (Skript Panel muss aktiviert sein)
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Schließen
+firebug.View=Ansicht
+firebug.Help=Hilfe
+firebug.Run=Ausführen
+firebug.Copy=Kopieren
+firebug.History=Chronik
+firebug.Run_the_entered_command=Den eingegebenen Befehl ausführen
+firebug.Clear_the_Command_Editor=Befehlseditor leeren
+firebug.Copy_the_script_as_a_bookmarklet=Skript als Bookmarklet kopieren
+firebug.Insert_a_previously_entered_command=Einen zuvor eingegebenen Befehl einfügen
+firebug.AlwaysOpenInWindow=Immer in einem neuen Fenster öffnen
+firebug.OpenWith=Mit einem Editor öffnen
+firebug.menu.tip.Open_With=Den Inhalt in einem externen Editor öffnen
+firebug.Permissions=Seiten...
+firebug.Configure_Editors=Editoren konfigurieren
+script.tip.Script_Type=Nach Skripttyp filtern
+script.tip.Script_Filter_Static=Nur Skripts anzeigen, die zusammen mit der Seite geladen wurden
+script.tip.Script_Filter_Evals=Skripts, die zusammen mit der Seite geladen wurden, und Skripts die via eval() erzeugt wurden anzeigen
+script.tip.Script_Filter_Events=Skripts, die zusammen mit der Seite geladen wurden, Skripts die via eval() erzeugt wurden und Event Listener anzeigen
+script.tip.Script_Filter_All=Alle Arten von Skripts anzeigen
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Erneut ausführen
+script.tip.Rerun=Den aktuellen Funktionsaufruf-Stack erneut ausführen
+script.Continue=Fortsetzen
+script.tip.Continue=Ausführung bis zum nächsten Haltepunkt oder bis zum Skriptende fortsetzen
+script.Step_Over=Überspringen
+script.tip.Step_Over=Den nächsten Befehl ausführen
+script.Step_Into=Hineinspringen
+script.tip.Step_Into=Den nächsten Befehl ausführen und in Funktionen hineinspringen
+script.Step_Out=Herausspringen
+script.tip.Step_Out=Den Rest der Funktion ausführen und zum Aufrufer zurückspringen
+firebug.RunUntil=Bis zu dieser Zeile ausführen
+script.tip.Run_Until=Ausführung bis zur angegebenen Zeile fortsetzen
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Untersuchen
+firebug.InspectElement=Element untersuchen
+firebug.InspectElementWithFirebug=Element mit Firebug untersuchen
+firebug.BreakOnErrors=Bei Fehlern anhalten
+firebug.InspectTooltip=Klicken Sie auf ein Element der Seite, um es zu untersuchen
+firebug.EditHTMLTooltip=Dieses HTML bearbeiten
+firebug.Profile=Zeitmessung
+firebug.Clear=Leeren
+firebug.ClearConsole=Konsole leeren
+firebug.ClearTooltip=Leert die Konsole
+# editors.dtd
+editors.Configured_Firebug_Editors=Konfigurierte Firebug-Editoren
+editors.Editor=Editor
+editors.Executable=Anwendung
+editors.Launch_Arguments=Aufrufparameter
+editors.Add=Hinzufügen
+editors.Remove=Entfernen
+editors.Change=Ändern
+editors.Move_Up=Nach oben
+editors.Close=Schließen
+editors.Browse=Durchsuchen…
+changeEditor.Editor_Configuration=Editor-Konfiguration
+changeEditor.Name=Name:
+changeEditor.Executable=Anwendungsdatei:
+changeEditor.CmdLine=Parameter:
+changeEditor.Supplied_arguments=Von Firebug vorgegebene Parameter:
+changeEditor.URL_of_file=<label class=\\'text-link\\'>%url</label> URL der Datei (falls %url nicht angegeben wurde, wird standardmäßig %file hinzufügt)
+changeEditor.Path_to_local_file=<label class=\\'text-link\\'>%file</label> Pfad zur lokalen Datei (oder zur temporären Kopie)
+changeEditor.Line_number=<label class=\\'text-link\\'>%line</label> Zeilennummer (falls verfügbar)
+changeEditor.Invalid_Application_Path=Ungültiger Anwendungspfad
+changeEditor.Application_does_not_exist=Die angegebene Anwendung existiert nicht!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Bearbeiten
+firebug.css.sourceEdit=Quelltext bearbeiten
+firebug.css.sourceEdit.tooltip=Textbox zum Bearbeiten des vom Browser geladenen Stylesheetquelltexts
+firebug.css.liveEdit=Live bearbeiten
+firebug.css.liveEdit.tooltip=Textbox zum Bearbeiten des vom Browser extrahierten CSS
+firebug.EditCSSTooltip=Dieses Stylesheet bearbeiten
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Seiten werden im Privaten Modus nicht gespeichert
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Haltepunktnachrichten anzeigen
+firebug.breakpoint.tip.Show_Break_Notifications=Eine Benachrichtigung anzeigen, wenn das "Anhalten bei ..." Feature oder das debugger; Schlüsselwort die Skriptausführung angehalten haben
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=Stopp-Nachrichten können im <a>Panel Tab-Menü</a> (de-)aktiviert werden.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Der \\"Deaktivieren\\"-Button überschreibt \\"debugger\\" mit einem deaktiviertem Breakpoint.
+firebug.bon.tooltip.disableDebuggerKeyword2=Erstellt einen deaktivierten Breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(das Skript Panel muss aktiviert sein, um dieses Feature zu benutzen)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=Es gibt keine Kindobjekte
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=mehr
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Zyklische Referenz entdeckt
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S Element im Speicher;%1$S Elemente in Storage
+# LOCALIZATION NOTE (firebug.reps.historyEntries): Semicolon list of plural forms.
+# Displayed when evaluating "history" - informs the user about the number of entries in history.
+# %1 = Number of history entries
+firebug.reps.historyEntries=%1$S Verlaufseintrag;%1$S Verlaufseinträge
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Objekteigenschaften
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(Keine Vervollständigungen)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=Das URL-Objekt hat wahrscheinlich die Ausführung der revokeObjectURL Methode verweigert.
+firebug.failedToPreviewImageURL=Die angegebene URL konnte nicht geladen werden.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Speicher Profiler gestartet
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Während dem Profiling hinzugefügte Objekte
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Speicher Profiler Ergebnisse
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Gesamte Sitzung
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(keine Ausgabe)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(Leerstring)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Das Firecookie Add-on wurde erkannt. Dieses Add-on wurde in Firebug 1.10 standardmäßig integriert. Um Konflikte zuvermeiden, muss Firecookie deinstalliert werden.\n\nUm die Deinstallation des Add-ons abzuschließen, muss der Browser neugestartet werden.
+cookies.legacy.uninstall=Deinstallieren
+cookies.legacy.uninstall_and_restart=Deinstallieren und neustarten
+# LOCALIZATION NOTE (console.cmd.help_title, console.cmd.help_title_desc):
+console.cmd.help_title=Kommandozeilen API
+console.cmd.help_title_desc=F1 drücken, um die Firebug Onlinehilfe zu öffnen
+# LOCALIZATION NOTE (console.cmd.tip_title, console.cmd.tip_title_desc):
+console.cmd.tip_title=Kommandozeilentipps
+console.cmd.tip_title_desc=Tipps & Tricks zur Kommandozeile
+# LOCALIZATION NOTE (console.cmd.tip.javascript, console.cmd.tip.closures):
+# Description for Command Line tips that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.tip.javascript=Jeder gültige JavaScript Ausdruck kann in der Kommandozeile ausgeführt werden. Beispiel:
+console.cmd.tip.closures=Um Variablen in Closures anzusprechen, kann die ".%"-Syntax verwendet werden (sehe <a>mehr</a>). Beispiel:
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Gibt ein einzelnes Element mit der angegebenen ID zurück.
+console.cmd.help.$$=Gibt ein Array von Element zurück, die dem angegebenen CSS-Selektor entsprechen.
+console.cmd.help.$x=Gibt ein Array von Element zurück, die dem angegebenen XPath Ausdruck entsprechen.
+console.cmd.help.dir=Gibt eine interaktive Liste aller Eigenschaften eines Objekts aus. Diese sieht identisch zu der Ansicht im DOM Panel aus.
+console.cmd.help.dirxml=Gibt den XML Quelltextbaum eines HTML oder XML Elements aus. Dieser sieht identisch zu der Ansicht im HTML panel aus. Jeder Knoten kann angeklickt werden, um ihn im HTML Panel zu untersuchen.
+console.cmd.help.cd=Standardmäßig sind Kommandozeilenausdrücke relativ zum obersten 'window' der Seite. cd() erlaubt es, stattdessen das 'window' eines Frames innerhalb der Seite zu benutzen.
+console.cmd.help.clear=Leert die Konsole.
+console.cmd.help.copy=Kopiert den angegebenen Parameter in die Zwischenablage. Dies kann ein Rückgabewert einer Funktion oder ein Objekt sein.
+console.cmd.help.inspect=Untersucht ein Objekt im passendsten Panel oder dem Panel, das durch das optionale zweite Argument identifiziert wird. Die verfügbaren Panelnamen sind "html", "stylesheet", "script" und "dom".
+console.cmd.help.keys=Gibt ein Array zurück, das die Namen aller Eigenschaften eines Objekts beinhaltet.
+console.cmd.help.values=Gibt ein Array zurück, das die Werte aller Eigenschaften eines Objekts beinhaltet.
+console.cmd.help.debug=Fügt einen Haltepunkt an der ersten Zeile einer Funktion ein.
+console.cmd.help.undebug=Entfernt den Haltepunkt an der ersten Zeile einer Funktion.
+console.cmd.help.monitor=Schaltet die Protokollierung aller Aufrufe einer Funktion ein.
+console.cmd.help.unmonitor=Schaltet die Protokollierung aller Aufrufe einer Funktion aus.
+console.cmd.help.monitorEvents=Schaltet die Protokollierung aller Ereignisse ein, die an dieses Objekt gesendet werden. Das optionale zweite Argument definiert spezifische Ereignisse oder Ereignistypen. Die verfügbaren Ereignistypen sind "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul" und "clipboard".
+console.cmd.help.unmonitorEvents=Schaltet die Protokollierung aller Ereignisse aus, die an ein Objekt gesendet werden. Das optionale zweite Argument definiert spezifische Ereignisse oder Ereignistypen.
+console.cmd.help.profile=Schaltet den JavaScript Profiler ein. Das optionale zweite Argument gibt den Text an, der als Überschrift des Profilerberichts angezeigt wird.
+console.cmd.help.profileEnd=Schaltet den JavaScript Profiler aus und gibt den Bericht aus.
+console.cmd.help.table=Erlaubt es, gegebene Daten in tabellarischer Form zu protokollieren. Der Methode kann ein erforderliches Argument übergeben werden, der die tabellarischen Daten (Array von Arrays oder Liste von Objekten) darstellt. Das optionale zweite Argument kann dazu verwendet werden, die Spalten und/oder Eigenschaften anzugeben, die ausgegeben werden sollen.
+console.cmd.help.$0=Repräsentiert das zuletzt untersuchte Element.
+console.cmd.help.$1=Repräsentiert das vorletzte untersuchte Element.
+console.cmd.help.$2=Repräsentiert das drittletzte Element, das über den Inspektor ausgewählt wurde.
+console.cmd.help.$3=Repräsentiert das viertletzte Element, das über den Inspektor ausgewählt wurde.
+console.cmd.help.$4=Repräsentiert das fünftletzte Element, das über den Inspektor ausgewählt wurde.
+console.cmd.help.$n=Gibt eines der letzten 5 untersuchten Elemente zurück.
+console.cmd.help.$_=Repräsentiert das Ergebnis des zuletzt in der Kommandozeile ausgeführten Ausdrucks.
+console.cmd.help.help=Zeigt eine Hilfe für alle verfügbaren Befehle an.
+console.cmd.help.include=Bindet ein externes Skript ein.
+console.cmd.help.$p=Nachdem aus dem Kontextmenü eines Objekts/Werts die Option "In Kommandozeile benutzen" ausgewählt wurde, wird diese Kommandozeilenvariable auf diesen Wert gesetzt.
+console.cmd.help.getEventListeners=Gibt ein Objekt mit allen Ereignisbehandlungsroutinen zurück, die direkt mit einem Element (oder anderem Ereignisziel) registriert wurden
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Für dieses Befehl ist keine Hilfeseite verfügbar.
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Dokumentphasen Start- und vergangene Zeit relativ zum Startzeitpunkt des Dokumentladevorgangs:
+perftiming.events.label=Ereignistiming relativ zum Dokument Ladezeitpunkt:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Geschwindigkeitstiming
+perftiming.details_title_desc=Detailliertes Timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Zeitpunkt, an dem die Serververbindung beendet wurde.
+perftiming.connectStart=Zeitpunkt vor dem Aufbau der Serververbindung
+perftiming.domComplete=Zeitpunkt bevor das Dokument vollständig verfügbar war
+perftiming.domContentLoadedEventEnd=Zeitpunkt nachdem das DOMContentLoaded Ereignis ausgelöst wurde
+perftiming.domContentLoadedEventStart=Zeitpunkt bevor das DOMContentLoaded Ereignis ausgelöst wurde
+perftiming.domInteractive=Zeitpunkt bevor die Dokumentverfügbarkeit auf "interactive" gesetzt wurde
+perftiming.domLoading=Zeitpunkt bevor die Dokumentverfügbarkeit auf "loading" gesetzt wurde
+perftiming.domainLookupEnd=Zeitpunkt nach dem Domainname Lookup
+perftiming.domainLookupStart=Zeitpunkt vor dem Domainname Lookup
+perftiming.fetchStart=Zeitpunkt, an dem die Abholung der Ressource gestartet wurde
+perftiming.loadEventEnd=Zeitpunkt nachdem das load Ereignis beendet wurde
+perftiming.loadEventStart=Zeitpunkt bevor das load Ereignis ausgelöst wurde
+perftiming.navigationStart=Zeitpunkt nachdem begonnen wurde, das vorherige Dokument zu verlassen
+perftiming.redirectCount=Anzahl der Weiterleitungen seit der letzten Nicht-Weiterleitung
+perftiming.redirectEnd=Zeitpunkt nachdem die letzte Weiterleitungsantwort beendet wurde
+perftiming.redirectStart=Zeitpunkt der Abholung, die eine Weiterleitung ausgelöst hat
+perftiming.requestStart=Zeitpunkt vor der Serveranfrage
+perftiming.responseEnd=Zeitpunkt nach dem Ende einer Antwort oder Verbindung
+perftiming.responseStart=Zeitpunkt vor dem Start der Antwort
+perftiming.unloadEventEnd=Zeitpunkt nachdem das vorherige Dokument verlassen wurde
+perftiming.unloadEventStart=Zeitpunkt bevor das unload Ereignis ausgelöst wurde
diff --git a/locale/de/selectors.properties b/locale/de/selectors.properties
index d3feed1..71f5fa5 100644
--- a/locale/de/selectors.properties
+++ b/locale/de/selectors.properties
@@ -1,26 +1,26 @@
-# LOCALIZATION NOTE (Panel-selectors): Title for Selectors side panel displayed
-# in the CSS panel
-Panel-selectors=Selektoren
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selectors=Zeigt die zu einem CSS Selektor passenden Elemente an
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selectors side panel.
-css.selector.noSelection=Einen benutzerdefinierten Selektor eingegeben oder auf eine CSS Regel rechtsklicken und <b>Passende Elemente finden</b> auswählen.
-# LOCALIZATION NOTE (css.selector.noSelectionResults, css.selector.invalidSelector):
-# Info messages for selector trials in Selectors side panel
-css.selector.noSelectionResults=Keine passenden Elemente
-# LOCALIZATION NOTE (css.selector.readMore):
-# Helper text with a link to getfirebug.com/wiki for the Selectors panel.
-css.selector.readMore=Sie können <a>mehr darüber lesen</a>, wie dieses Panel verwendet wird.
-# LOCALIZATION NOTE (css.selector.invalidSelector):
-css.selector.invalidSelector=Ungültigen Selektor eingegeben
-# LOCALIZATION NOTE (css.selector.TryASelector):
-# Placeholder label for the Selectors side panel's input field for creating new selector trials
-css.selector.TryASelector=Selektor eingeben...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Passende Elemente finden
-aria.labels.Selectors=Selektoren Seitenpanel
-a11y.labels.press_enter_to_add_new_selector=Enter drücken, um einen neuen Selektor hinzuzufügen
+# LOCALIZATION NOTE (Panel-selectors): Title for Selectors side panel displayed
+# in the CSS panel
+Panel-selectors=Selektoren
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selectors=Zeigt die zu einem CSS Selektor passenden Elemente an
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selectors side panel.
+css.selector.noSelection=Einen benutzerdefinierten Selektor eingegeben oder auf eine CSS Regel rechtsklicken und <b>Passende Elemente finden</b> auswählen.
+# LOCALIZATION NOTE (css.selector.noSelectionResults, css.selector.invalidSelector):
+# Info messages for selector trials in Selectors side panel
+css.selector.noSelectionResults=Keine passenden Elemente
+# LOCALIZATION NOTE (css.selector.readMore):
+# Helper text with a link to getfirebug.com/wiki for the Selectors panel.
+css.selector.readMore=Sie können <a>mehr darüber lesen</a>, wie dieses Panel verwendet wird.
+# LOCALIZATION NOTE (css.selector.invalidSelector):
+css.selector.invalidSelector=Ungültigen Selektor eingegeben
+# LOCALIZATION NOTE (css.selector.TryASelector):
+# Placeholder label for the Selectors side panel's input field for creating new selector trials
+css.selector.TryASelector=Selektor eingeben...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Passende Elemente finden
+aria.labels.Selectors=Selektoren Seitenpanel
+a11y.labels.press_enter_to_add_new_selector=Enter drücken, um einen neuen Selektor hinzuzufügen
diff --git a/locale/el/cookies.properties b/locale/el/cookies.properties
index 1246bd4..886e487 100644
--- a/locale/el/cookies.properties
+++ b/locale/el/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Επιτρέπει την επιθεώρηση και τη διαχείριση των cookie
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Συνεδρίας
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Αποδοχή cookies από σελίδες
-cookies.tip.AllowGlobally=Επιτρέπει ή απαγορεύει την αποδοχή όλων των cookies σαν αρχική επιλογή
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Εμφάνιση συμβάντων cookie
-cookies.tip.showCookieEvents=Καταγραφή στην κονσόλα των συμβάντων (μεταβολές διαγραφές) cookie.
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Εκκαθάριση cookies μόλις απαγορευτούν
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Αποκοπή
-cookies.Copy=Αντιγραφή
-cookies.CopyAll=Αντιγραφή όλων
-cookies.Paste=Επικόλληση
-cookies.Delete=Διαγραφή
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Εκκαθάριση τιμής
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Επεξεργασία
-cookies.Accept=Αποδοχή
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Επαναφορά κεφαλίδας
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=Μπορείτε να ορίσετε σε ποιες ιστοσελίδες θα επιτρέπεται ή θα απαγορεύεται πάντα η χρήση cookies.\nΠληκτρολογήστε τη διεύθυνση της σελίδας και μετά κάντε κλικ στο «Να απαγορεύετε»,\n«Να επιτρέπεται για τη συνεδρία», ή «Να επιτρέπεται».
-cookies.ExceptionsTitle=Εξαιρέσεις - cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Υποστήριξη για παρακολούθηση cookies
-cookies.HostEnable=Ενεργοποίηση ταμπλό cookies για %S
-cookies.HostDisable=Απενεργοποίηση ταμπλό cookies για %S
-cookies.Permissions=Ενεργοποίηση ή απενεργοποίηση ταμπλό cookies
-cookies.PermissionsIntro=Επιλέξτε για ποιους ιστότοπους θα είναι ενεργοποιημένο ή όχι το ταμπλό cookies.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=Σελίδες συστήματος
-cookies.LocalFiles=Τοπικά αρχεία
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Θέλετε να διαγραφούν όλα τα cookies της λίστας;
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Θέλετε να διαγραφούν όλα τα cookies συνεδρίας της λίστας;
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Θέλετε να αφαιρεθούν όλα τα cookie του %S;
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Να μην εμφανιστεί ξανά το μήνυμα
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Επιβεβαίωση απομάκρυνσης cookies
-cookies.tip.Confirm_cookie_removal=Αν επιλεγεί, θα εμφανίζεται μήνυμα επιβεβαίωσης πριν τη διαγραφή όλων των cookies της λίστας.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Απομάκρυνση όλων των cookies της λίστας.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Απομάκρυνση cookies συνεδρίας
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Απομάκρυνση όλων των cookies συνεδρίας της λίστας.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Δημιουργία νέου cookie για %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Τιμή
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Διαχείριση δικαιωμάτων cookies για %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=Απομακρύνθηκαν όλα τα cookies.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=Απομακρύνθηκαν όλα τα cookies συνεδρίας.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies που απορρίφθηκαν:
-cookies.console.nocookiesreceived=Δεν λήφθηκαν cookies
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cοokies
-cookies.console.deleted=διαγράφηκαν
-cookies.console.added=προστέθηκαν
-cookies.console.changed=μεταβλήθηκαν
-cookies.console.cleared=εκκαθαρίστηκαν
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Τομέας
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Ασφαλές
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Έγινε αποδεκτό
-cookies.status.downgraded=Μεταβολή σε προηγούμενη κατάσταση
-cookies.status.flagged=Σημειώθηκε
-cookies.status.rejected=Απορρίφθηκε
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Τιμή
-cookies.info.rawdatatab.Raw_Data=Ακατέργαστα δεδομένα
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Αρχική επιλογή (Αποδοχή cookies συνεδρίας)
-cookies.default.thirdPartySession=Αρχική επιλογή (Αποδοχή cookies συνεδρίας)
-cookies.default.thirdParty=Αρχική επιλογή (Αποδοχή cookies)
-cookies.default.allow=Αρχική επιλογή (Αποδοχή cookies)
-cookies.default.deny=Αρχική επιλογή (Απόρριψη cookies)
-cookies.default.warn=Αρχική επιλογή (Προειδοποίηση πριν την αποδοχή cookies)
-cookies.host.session=Αποδοχή cookies συνεδρίας από %S
-cookies.host.accept=Αποδοχή cookies από %S
-cookies.host.reject=Απόρριψη cookies από %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Το όνομα του cookie δεν είναι έγκυρο.
-cookies.edit.invalidhost=Ο βασικός υπολογιστής προέλευσης cookie δεν είναι έγκυρος.
-cookies.edit.invalidpath=Η διαδρομή του cookie δεν είναι έγκυρη.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Όνομα
-cookies.header.value=Τιμή
-cookies.header.rawValue=Ακατέργαστη τιμή
-cookies.header.domain=Τομέας
-cookies.header.size=Μέγεθος
-cookies.header.path=Διαδρομή
-cookies.header.expires=Λήξη
-cookies.header.security=Ασφάλεια
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Όνομα του cookie
-cookies.header.value.tooltip=Αποθηκευμένη τιμή για το cookie
-cookies.header.rawValue.tooltip=Ακατέργαστη αποθηκευμένη τιμή για το cookie.
-cookies.header.domain.tooltip=Ο τομέας που αποθήκευσε το cookie
-cookies.header.size.tooltip=Το μέγεθος του αποθηκευμένου cookie
-cookies.header.path.tooltip=Ο φάκελος όπου δραστηριοποιείται το cookie
-cookies.header.expires.tooltip=Ημερομηνία λήξης του cookie
-cookies.header.security.tooltip=Δείχνει αν πρόκειται για ασφαλές cookie ή όχι
-cookies.header.httponly.tooltip=Δηλώνει αν το cookie είναι μόνο HTTP cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Ληφθέντα cookie
-cookies.netinfo.Sent_Cookies=Απεσταλμένα cookie
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Φίλτρο διαδρομής
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Εξαγωγή όλων των cookie
-cookies.export.Export_All_Cookies_Tooltip=Εξαγωγή όλων των cookie του περιηγητή στο αρχείο cookies.txt
-cookies.export.Export_For_Site=Εξαγωγή των cookie της ιστοσελίδας
-cookies.export.Export_For_Site_Tooltip=Εξαγωγή όλων των cookie της ιστοσελίδας %S στο αρχείο cookies.txt
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=Δεν υπάρχει ενεργή σελίδα.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Διακοπή σε μεταβολές cookie
-cookies.Disable_Break_On_Cookie=Απενεργοποίηση διακοπής σε μεταβολές cookie
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Σημεία διακοπής cookie
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Διακοπή σε cookie «%S»
-cookies.menu.tooltip.Break_On_Cookie=Διακοπή όταν το «%S» αφαιρεθεί ή μεταβληθεί.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Επεξεργασία όρων σημείου διακοπής
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Αποτυχίες εκτίμησης όρων σημείου διακοπής
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Αφαίρεση cookies
-cookies.Create=Δημιουργία cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Εργαλεία
-cookies.ToolsTooltip=Εργαλεία
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Εμφάνιση όλων των cookie
-cookies.ViewAllTooltip=Άνοιγμα του ενσωματωμένου διαχειριστή cookie
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Αδειοδοτήσεις ιστοσελίδων
-cookies.ViewExceptionsTooltip=Προβολή λίστας των ιστοσελίδων για τις οποίες επιτρέπεται ή απαγορεύεται η απόθεση cookie
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Φίλτρο
-cookies.FilterTooltip=Χρήση υπαρχόντων επιλογών για το φιλτράρισμα της λίστας cookie
-cookies.filter.byPath=Φιλτράρισμα των cookie κατά την τρέχουσα διαδρομή
-cookies.filter.byPathTooltip=Εμφάνιση μόνο των cookie που ταιριάζουν με την τρέχουσα διαδρομή
-cookies.filter.showRejectedCookies=Εμφάνιση cookie που δεν έγιναν αποδεκτά
-cookies.filter.showRejectedCookiesTooltip=Εμφάνιση ακόμα και των cookie που δεν έγιναν αποδεκτά στη λίστα
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Επεξεργασία cookie
-cookies.edit.name.label=Όνομα:
-cookies.edit.domain.label=Βασικός υπολογιστής:
-cookies.edit.path.label=Διαδρομή:
-cookies.edit.expire.label=Ημερομηνία λήξης:
-cookies.edit.value.label=Τιμή:
-cookies.edit.secure.label=Ασφαλές cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Συνεδρία
-cookies.edit.urlEncode.label=Τιμή κωδικοποίησης URL
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Φιλτράρισμα με βάση cookie
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Αφαίρεση όλων των cookie
-cookie.sizeinfo.Size=Μέγεθος
-cookie.sizeinfo.Raw_Size=Μέγεθος στο δίσκο
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Επιτρέπει την επιθεώρηση και τη διαχείριση των cookie
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Συνεδρίας
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Αποδοχή cookies από σελίδες
+cookies.tip.AllowGlobally=Επιτρέπει ή απαγορεύει την αποδοχή όλων των cookies σαν αρχική επιλογή
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Εμφάνιση συμβάντων cookie
+cookies.tip.showCookieEvents=Καταγραφή στην κονσόλα των συμβάντων (μεταβολές διαγραφές) cookie.
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Εκκαθάριση cookies μόλις απαγορευτούν
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Αποκοπή
+cookies.Copy=Αντιγραφή
+cookies.CopyAll=Αντιγραφή όλων
+cookies.Paste=Επικόλληση
+cookies.Delete=Διαγραφή
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Εκκαθάριση τιμής
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Επεξεργασία
+cookies.Accept=Αποδοχή
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Επαναφορά κεφαλίδας
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=Μπορείτε να ορίσετε σε ποιες ιστοσελίδες θα επιτρέπεται ή θα απαγορεύεται πάντα η χρήση cookies.\nΠληκτρολογήστε τη διεύθυνση της σελίδας και μετά κάντε κλικ στο «Να απαγορεύετε»,\n«Να επιτρέπεται για τη συνεδρία», ή «Να επιτρέπεται».
+cookies.ExceptionsTitle=Εξαιρέσεις - cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Υποστήριξη για παρακολούθηση cookies
+cookies.HostEnable=Ενεργοποίηση ταμπλό cookies για %S
+cookies.HostDisable=Απενεργοποίηση ταμπλό cookies για %S
+cookies.Permissions=Ενεργοποίηση ή απενεργοποίηση ταμπλό cookies
+cookies.PermissionsIntro=Επιλέξτε για ποιους ιστότοπους θα είναι ενεργοποιημένο ή όχι το ταμπλό cookies.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=Σελίδες συστήματος
+cookies.LocalFiles=Τοπικά αρχεία
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Θέλετε να διαγραφούν όλα τα cookies της λίστας;
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Θέλετε να διαγραφούν όλα τα cookies συνεδρίας της λίστας;
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Θέλετε να αφαιρεθούν όλα τα cookie του %S;
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Να μην εμφανιστεί ξανά το μήνυμα
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Επιβεβαίωση απομάκρυνσης cookies
+cookies.tip.Confirm_cookie_removal=Αν επιλεγεί, θα εμφανίζεται μήνυμα επιβεβαίωσης πριν τη διαγραφή όλων των cookies της λίστας.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Απομάκρυνση όλων των cookies της λίστας.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Απομάκρυνση cookies συνεδρίας
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Απομάκρυνση όλων των cookies συνεδρίας της λίστας.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Δημιουργία νέου cookie για %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Τιμή
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Διαχείριση δικαιωμάτων cookies για %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=Απομακρύνθηκαν όλα τα cookies.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=Απομακρύνθηκαν όλα τα cookies συνεδρίας.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies που απορρίφθηκαν:
+cookies.console.nocookiesreceived=Δεν λήφθηκαν cookies
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cοokies
+cookies.console.deleted=διαγράφηκαν
+cookies.console.added=προστέθηκαν
+cookies.console.changed=μεταβλήθηκαν
+cookies.console.cleared=εκκαθαρίστηκαν
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Τομέας
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Ασφαλές
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Έγινε αποδεκτό
+cookies.status.downgraded=Μεταβολή σε προηγούμενη κατάσταση
+cookies.status.flagged=Σημειώθηκε
+cookies.status.rejected=Απορρίφθηκε
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Τιμή
+cookies.info.rawdatatab.Raw_Data=Ακατέργαστα δεδομένα
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Αρχική επιλογή (Αποδοχή cookies συνεδρίας)
+cookies.default.thirdPartySession=Αρχική επιλογή (Αποδοχή cookies συνεδρίας)
+cookies.default.thirdParty=Αρχική επιλογή (Αποδοχή cookies)
+cookies.default.allow=Αρχική επιλογή (Αποδοχή cookies)
+cookies.default.deny=Αρχική επιλογή (Απόρριψη cookies)
+cookies.default.warn=Αρχική επιλογή (Προειδοποίηση πριν την αποδοχή cookies)
+cookies.host.session=Αποδοχή cookies συνεδρίας από %S
+cookies.host.accept=Αποδοχή cookies από %S
+cookies.host.reject=Απόρριψη cookies από %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Το όνομα του cookie δεν είναι έγκυρο.
+cookies.edit.invalidhost=Ο βασικός υπολογιστής προέλευσης cookie δεν είναι έγκυρος.
+cookies.edit.invalidpath=Η διαδρομή του cookie δεν είναι έγκυρη.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Όνομα
+cookies.header.value=Τιμή
+cookies.header.rawValue=Ακατέργαστη τιμή
+cookies.header.domain=Τομέας
+cookies.header.size=Μέγεθος
+cookies.header.path=Διαδρομή
+cookies.header.expires=Λήξη
+cookies.header.security=Ασφάλεια
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Όνομα του cookie
+cookies.header.value.tooltip=Αποθηκευμένη τιμή για το cookie
+cookies.header.rawValue.tooltip=Ακατέργαστη αποθηκευμένη τιμή για το cookie.
+cookies.header.domain.tooltip=Ο τομέας που αποθήκευσε το cookie
+cookies.header.size.tooltip=Το μέγεθος του αποθηκευμένου cookie
+cookies.header.path.tooltip=Ο φάκελος όπου δραστηριοποιείται το cookie
+cookies.header.expires.tooltip=Ημερομηνία λήξης του cookie
+cookies.header.security.tooltip=Δείχνει αν πρόκειται για ασφαλές cookie ή όχι
+cookies.header.httponly.tooltip=Δηλώνει αν το cookie είναι μόνο HTTP cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Ληφθέντα cookie
+cookies.netinfo.Sent_Cookies=Απεσταλμένα cookie
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Φίλτρο διαδρομής
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Εξαγωγή όλων των cookie
+cookies.export.Export_All_Cookies_Tooltip=Εξαγωγή όλων των cookie του περιηγητή στο αρχείο cookies.txt
+cookies.export.Export_For_Site=Εξαγωγή των cookie της ιστοσελίδας
+cookies.export.Export_For_Site_Tooltip=Εξαγωγή όλων των cookie της ιστοσελίδας %S στο αρχείο cookies.txt
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=Δεν υπάρχει ενεργή σελίδα.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Διακοπή σε μεταβολές cookie
+cookies.Disable_Break_On_Cookie=Απενεργοποίηση διακοπής σε μεταβολές cookie
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Σημεία διακοπής cookie
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Διακοπή σε cookie «%S»
+cookies.menu.tooltip.Break_On_Cookie=Διακοπή όταν το «%S» αφαιρεθεί ή μεταβληθεί.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Επεξεργασία όρων σημείου διακοπής
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Αποτυχίες εκτίμησης όρων σημείου διακοπής
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Αφαίρεση cookies
+cookies.Create=Δημιουργία cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Εργαλεία
+cookies.ToolsTooltip=Εργαλεία
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Εμφάνιση όλων των cookie
+cookies.ViewAllTooltip=Άνοιγμα του ενσωματωμένου διαχειριστή cookie
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Αδειοδοτήσεις ιστοσελίδων
+cookies.ViewExceptionsTooltip=Προβολή λίστας των ιστοσελίδων για τις οποίες επιτρέπεται ή απαγορεύεται η απόθεση cookie
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Φίλτρο
+cookies.FilterTooltip=Χρήση υπαρχόντων επιλογών για το φιλτράρισμα της λίστας cookie
+cookies.filter.byPath=Φιλτράρισμα των cookie κατά την τρέχουσα διαδρομή
+cookies.filter.byPathTooltip=Εμφάνιση μόνο των cookie που ταιριάζουν με την τρέχουσα διαδρομή
+cookies.filter.showRejectedCookies=Εμφάνιση cookie που δεν έγιναν αποδεκτά
+cookies.filter.showRejectedCookiesTooltip=Εμφάνιση ακόμα και των cookie που δεν έγιναν αποδεκτά στη λίστα
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Επεξεργασία cookie
+cookies.edit.name.label=Όνομα:
+cookies.edit.domain.label=Βασικός υπολογιστής:
+cookies.edit.path.label=Διαδρομή:
+cookies.edit.expire.label=Ημερομηνία λήξης:
+cookies.edit.value.label=Τιμή:
+cookies.edit.secure.label=Ασφαλές cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Συνεδρία
+cookies.edit.urlEncode.label=Τιμή κωδικοποίησης URL
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Φιλτράρισμα με βάση cookie
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Αφαίρεση όλων των cookie
+cookie.sizeinfo.Size=Μέγεθος
+cookie.sizeinfo.Raw_Size=Μέγεθος στο δίσκο
diff --git a/locale/el/firebug-amo.properties b/locale/el/firebug-amo.properties
index 1dcc555..778e80a 100644
--- a/locale/el/firebug-amo.properties
+++ b/locale/el/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):n\n
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843n\n
-# They are not direct part of Firebug extension and so, you can\'t see them in Firebug\'s UI.n\n
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)n\n
-firebug.amo.summary1.6=Το Firebug συνεργάζεται με τον Firefox για να προσφέρει μια πλούσια γκάμα εργαλείων προγραμματισμού. Μπορείτε να κάνετε επεξεργασία, αποσφαλμάτωση και να παρακολουθήσετε σε πραγματικό χρόνο την εκτέλεση CSS, HTML και JavaScript σε οποιαδήποτε σελίδα.
-firebug.amo.description=Το Firebug συνεργάζεται με τον Firefox για να σας προσφέρει μια πληθώρα εργαλείων ανάπτυξης κατά την περιήγηση σας. Μπορείτε να κάνετε επεξεργασία, αποσφαλμάτωση και παρακολούθηση για CSS, HTML, και JavaScript σε πραγματικό χρόνο σε οποιαδήποτε σελίδα...\\n\\nΕπισκεφθείτε τον ιστότοπο του Firebug για να δείτε την τεκμηρίωση, εικόνες προεπισκόπησης και το φόρουμ συζητήσεων: http://getfirebug.com.\\n\\nΤο Firebug 1.6 απαιτεί την έκδοση 3.6 του Firefox ή μεταγενέστερη.
-firebug.amo.developer.comments=Αν αντιμετωπίσετε οποιοδήποτε πρόβλημα, παρακαλούμε διαβάστε τις συχνές ερωτήσεις FireBug .\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):n\n
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843n\n
+# They are not direct part of Firebug extension and so, you can\'t see them in Firebug\'s UI.n\n
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)n\n
+firebug.amo.summary1.6=Το Firebug συνεργάζεται με τον Firefox για να προσφέρει μια πλούσια γκάμα εργαλείων προγραμματισμού. Μπορείτε να κάνετε επεξεργασία, αποσφαλμάτωση και να παρακολουθήσετε σε πραγματικό χρόνο την εκτέλεση CSS, HTML και JavaScript σε οποιαδήποτε σελίδα.
+firebug.amo.description=Το Firebug συνεργάζεται με τον Firefox για να σας προσφέρει μια πληθώρα εργαλείων ανάπτυξης κατά την περιήγηση σας. Μπορείτε να κάνετε επεξεργασία, αποσφαλμάτωση και παρακολούθηση για CSS, HTML, και JavaScript σε πραγματικό χρόνο σε οποιαδήποτε σελίδα...\\n\\nΕπισκεφθείτε τον ιστότοπο του Firebug για να δείτε την τεκμηρίωση, εικόνες προεπισκόπησης και το φόρουμ συζητήσεων: http://getfirebug.com.\\n\\nΤο Firebug 1.6 απαιτεί την έκδοση 3.6 του Firefox ή μεταγενέστερη.
+firebug.amo.developer.comments=Αν αντιμετωπίσετε οποιοδήποτε πρόβλημα, παρακαλούμε διαβάστε τις συχνές ερωτήσεις FireBug .\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/el/firebug-tracing.properties b/locale/el/firebug-tracing.properties
index d817b66..dc72524 100644
--- a/locale/el/firebug-tracing.properties
+++ b/locale/el/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):n\n
-# Firebug tracing console menu items (located in Firebug\'s menu).n\n
-Open_Firebug_Tracing=Άνοιγμα ανίχνευσης Firebug
-Always_Open_Firebug_Tracing=Πάντα άνοιγμα ανίχνευσης Firebug
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).n\n
-title.Tracing=Ανίχνευση
-tracing.Show_Scope_Variables=Εμφάνιση εμβέλειας μεταβλητών
-tracing.Show_Time=Εμφάνιση ώρας
-tracing.tab.Stack=Στοίβα
-tracing.tab.Exception=Εξαίρεση
-tracing.tab.Properties=Ιδιότητες
-tracing.tab.Scope=Εμβέλεια
-tracing.tab.Response=Απόκριση
-tracing.tab.Source=Πηγή
-tracing.tab.Interfaces=Διασυνδέσεις
-tracing.tab.Object=Αντικείμενο
-tracing.tab.Event=Συμβάν
-tracing.cmd.Clear=Εκκαθάριση
-tracing.cmd.tip.Clear=Αφαίρεση όλων των μηνυμάτων
-tracing.cmd.Find=Εύρεση
-tracing.cmd.tip.Find=Εύρεση επόμενου
-tracing.cmd.Bookmark=Σελιδοδείκτης
-tracing.cmd.tip.Bookmark=Προσθήκη σελιδοδείκτη
-tracing.cmd.Restart=Επανεκκίνηση του Firefox
-tracing.cmd.tip.Restart=Επανεκκίνηση του Firefox
-tracing.cmd.Exit=Έξοδος Firefox
-tracing.cmd.tip.Exit=Έξοδος Firefox
-tracing.cmd.Save=Αποθήκευση σε αρχείο
-tracing.cmd.tip.Save=Αποθήκευση καταγραφών σε αρχείο
-tracing.cmd.Load=Φόρτωση από αρχείο
-tracing.cmd.tip.Load=Φόρτωση αρχείων καταγραφής
-tracing.cmd.Expand_All=Ανάπτυξη όλων
-tracing.cmd.Collapse_All=Σύμπτυξη όλων
-tracing.cmd.Tools=Εργαλεία
-tracing.cmd.tip.Tools=Εργαλεία
-tracing.cmd.Clear_Browser_Cache=Εκκαθάριση λανθάνουσας περιηγητή
-tracing.cmd.tip.Clear_Browser_Cache=Εκκαθάριση λανθάνουσας περιηγητή
-tracing.cmd.Force_Garbage_Collector=Εξαναγκασμός εκτέλεσης Garbage Collector
-tracing.cmd.tip.Force_Garbage_Collector=Εξαναγκασμός εκτέλεσης Garbage Collector
-tracing.cmd.Open_Profile_Directory=Άνοιγμα καταλόγου προφίλ
-tracing.cmd.tip.Open_Profile_Directory=Άνοιγμα καταλόγου προφίλ
-tracing.option.A11Y_Description=Θέματα προσβασιμότητας
-tracing.option.ACTIVATION_Description=Ενεργοποίηση Firebug
-tracing.option.ACTIVITYOBSERVER_Description=Παρατηρητής δραστηριότητας Firebug
-tracing.option.ANNOTATIONS_Description=Επισημάνσεις ιστοσελίδων Firebug
-tracing.option.BP_Description=Σημεία διακοπής
-tracing.option.CACHE_Description=Πηγαίος κώδικας λανθάνουσας
-tracing.option.COMMANDLINE_Description=Γραμμή εντολών & αναδυόμενο γραμμής εντολών
-tracing.option.COMPILATION_UNITS_Description=Μονάδες compilation σεναρίων εντολών
-tracing.option.CONSOLE_Description=Ταμπλό κονσόλας
-tracing.option.CSS_Description=Ανάλυση CSS
-tracing.option.DISPATCH_Description=Αποστολή συμβάντος
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Δημιουργία Domplate
-tracing.option.EDITOR_Description=Ενσωματωμένος επεξεργαστής & Αυτόματη συμπλήρωση
-tracing.option.ERRORLOG_Description=Καταγραφή σφαλμάτων JS, CSS, XML κλπ.
-tracing.option.ERRORS_Description=Εσωτερικά σφάλματα του Firebug
-tracing.option.EVAL_Description=Αξιολόγηση σεναρίου εντολών
-tracing.option.FBS_BP_Description=Σημεία διακοπής υπηρεσιών Firebug
-tracing.option.FBS_CREATION_Description=Δημιουργία σεναρίου εντολών υπηρεσίων Firebug
-tracing.option.FBS_ERRORS_Description=Σφάλματα υπηρεσιών Firebug
-tracing.option.FBS_FINDDEBUGGER_Description=Αναζήτηση αποσφαλμάτωσης υπηρεσιών Firebug
-tracing.option.FBS_FUNCTION_Description=Συνάρτηση υπηρεσίας Firebug
-tracing.option.FBS_JSDCONTEXT_Description=Περιεχόμενο αποσφαλμάτωσης JavaScript υπηρεσίας Firebug
-tracing.option.FBS_SRCUNITS_Description=Μονάδες πηγαίου κώδικα υπηρεσιών Firebug
-tracing.option.FBS_STEP_Description=Βηματισμός αποσφαλμάτωσης JavaScript υπηρεσιών Firebug
-tracing.option.FBS_TRACKFILES_Description=Καταγραμμένα αρχεία υπηρεσιών Firebug
-tracing.option.FUNCTION_NAMES_Description=Ονόματα συναρτήσεων JavaScript
-tracing.option.HISTORY_Description=Ιστορικό περιήγησης Firebug
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=Παρατηρητής αιτημάτων HTTP
-tracing.option.INFOTIP_Description=Πληροφορίες
-tracing.option.INITIALIZE_Description=Αρχικοποίηση Firebug
-tracing.option.INSPECT_Description=Επιθεωρητής
-tracing.option.JSONVIEWER_Description=Προβολέας JSON
-tracing.option.LINETABLE_Description=Πίνακας γραμμών σεναρίου εντολών
-tracing.option.LOCALE_Description=Μετάφραση
-tracing.option.LOCATIONS_Description=Τοποθεσίες πηγαίου κώδικα
-tracing.option.NET_Description=Net
-tracing.option.NET_EVENTS_Description=Συμβάντα δικτύου
-tracing.option.OPTIONS_Description=Προτιμήσεις Firebug
-tracing.option.PANELS_Description=Ταμπλό
-tracing.option.SHORTCUTS_Description=Συντομεύσεις πληκτρολογίου
-tracing.option.SOURCEFILES_Description=Αρχεία πηγαίου κώδικα JavaScript
-tracing.option.SPY_Description=Παρατηρητής XMLHttpRequests
-tracing.option.STACK_Description=Στοίβα κλήσης JavaScript
-tracing.option.STORAGE_Description=Αποθήκευση ρυθμίσεων
-tracing.option.SVGVIEWER_Description=Προβολή SVG
-tracing.option.FONTS_Description=Πληροφορίες και προβολή γραμματοσειρών
-tracing.option.TOOLTIP_Description=Συμβουλή κουμπιού εκκίνησης
-tracing.option.TOPLEVEL_Description=JavaScript κορυφαίου επιπέδου
-tracing.option.UI_LOOP_Description=Διασύνδεση χρήστη της αποσφαλμάτωσης JavaScript
-tracing.option.WINDOWS_Description=Παράθυρα Firebug & παρακολούθηση καρτελών
-tracing.option.XMLVIEWER_Description=Προβολή XML
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):n\n
+# Firebug tracing console menu items (located in Firebug\'s menu).n\n
+Open_Firebug_Tracing=Άνοιγμα ανίχνευσης Firebug
+Always_Open_Firebug_Tracing=Πάντα άνοιγμα ανίχνευσης Firebug
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).n\n
+title.Tracing=Ανίχνευση
+tracing.Show_Scope_Variables=Εμφάνιση εμβέλειας μεταβλητών
+tracing.Show_Time=Εμφάνιση ώρας
+tracing.tab.Stack=Στοίβα
+tracing.tab.Exception=Εξαίρεση
+tracing.tab.Properties=Ιδιότητες
+tracing.tab.Scope=Εμβέλεια
+tracing.tab.Response=Απόκριση
+tracing.tab.Source=Πηγή
+tracing.tab.Interfaces=Διασυνδέσεις
+tracing.tab.Object=Αντικείμενο
+tracing.tab.Event=Συμβάν
+tracing.cmd.Clear=Εκκαθάριση
+tracing.cmd.tip.Clear=Αφαίρεση όλων των μηνυμάτων
+tracing.cmd.Find=Εύρεση
+tracing.cmd.tip.Find=Εύρεση επόμενου
+tracing.cmd.Bookmark=Σελιδοδείκτης
+tracing.cmd.tip.Bookmark=Προσθήκη σελιδοδείκτη
+tracing.cmd.Restart=Επανεκκίνηση του Firefox
+tracing.cmd.tip.Restart=Επανεκκίνηση του Firefox
+tracing.cmd.Exit=Έξοδος Firefox
+tracing.cmd.tip.Exit=Έξοδος Firefox
+tracing.cmd.Save=Αποθήκευση σε αρχείο
+tracing.cmd.tip.Save=Αποθήκευση καταγραφών σε αρχείο
+tracing.cmd.Load=Φόρτωση από αρχείο
+tracing.cmd.tip.Load=Φόρτωση αρχείων καταγραφής
+tracing.cmd.Expand_All=Ανάπτυξη όλων
+tracing.cmd.Collapse_All=Σύμπτυξη όλων
+tracing.cmd.Tools=Εργαλεία
+tracing.cmd.tip.Tools=Εργαλεία
+tracing.cmd.Clear_Browser_Cache=Εκκαθάριση λανθάνουσας περιηγητή
+tracing.cmd.tip.Clear_Browser_Cache=Εκκαθάριση λανθάνουσας περιηγητή
+tracing.cmd.Force_Garbage_Collector=Εξαναγκασμός εκτέλεσης Garbage Collector
+tracing.cmd.tip.Force_Garbage_Collector=Εξαναγκασμός εκτέλεσης Garbage Collector
+tracing.cmd.Open_Profile_Directory=Άνοιγμα καταλόγου προφίλ
+tracing.cmd.tip.Open_Profile_Directory=Άνοιγμα καταλόγου προφίλ
+tracing.option.A11Y_Description=Θέματα προσβασιμότητας
+tracing.option.ACTIVATION_Description=Ενεργοποίηση Firebug
+tracing.option.ACTIVITYOBSERVER_Description=Παρατηρητής δραστηριότητας Firebug
+tracing.option.ANNOTATIONS_Description=Επισημάνσεις ιστοσελίδων Firebug
+tracing.option.BP_Description=Σημεία διακοπής
+tracing.option.CACHE_Description=Πηγαίος κώδικας λανθάνουσας
+tracing.option.COMMANDLINE_Description=Γραμμή εντολών & αναδυόμενο γραμμής εντολών
+tracing.option.COMPILATION_UNITS_Description=Μονάδες compilation σεναρίων εντολών
+tracing.option.CONSOLE_Description=Ταμπλό κονσόλας
+tracing.option.CSS_Description=Ανάλυση CSS
+tracing.option.DISPATCH_Description=Αποστολή συμβάντος
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Δημιουργία Domplate
+tracing.option.EDITOR_Description=Ενσωματωμένος επεξεργαστής & Αυτόματη συμπλήρωση
+tracing.option.ERRORLOG_Description=Καταγραφή σφαλμάτων JS, CSS, XML κλπ.
+tracing.option.ERRORS_Description=Εσωτερικά σφάλματα του Firebug
+tracing.option.EVAL_Description=Αξιολόγηση σεναρίου εντολών
+tracing.option.FBS_BP_Description=Σημεία διακοπής υπηρεσιών Firebug
+tracing.option.FBS_CREATION_Description=Δημιουργία σεναρίου εντολών υπηρεσίων Firebug
+tracing.option.FBS_ERRORS_Description=Σφάλματα υπηρεσιών Firebug
+tracing.option.FBS_FINDDEBUGGER_Description=Αναζήτηση αποσφαλμάτωσης υπηρεσιών Firebug
+tracing.option.FBS_FUNCTION_Description=Συνάρτηση υπηρεσίας Firebug
+tracing.option.FBS_JSDCONTEXT_Description=Περιεχόμενο αποσφαλμάτωσης JavaScript υπηρεσίας Firebug
+tracing.option.FBS_SRCUNITS_Description=Μονάδες πηγαίου κώδικα υπηρεσιών Firebug
+tracing.option.FBS_STEP_Description=Βηματισμός αποσφαλμάτωσης JavaScript υπηρεσιών Firebug
+tracing.option.FBS_TRACKFILES_Description=Καταγραμμένα αρχεία υπηρεσιών Firebug
+tracing.option.FUNCTION_NAMES_Description=Ονόματα συναρτήσεων JavaScript
+tracing.option.HISTORY_Description=Ιστορικό περιήγησης Firebug
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=Παρατηρητής αιτημάτων HTTP
+tracing.option.INFOTIP_Description=Πληροφορίες
+tracing.option.INITIALIZE_Description=Αρχικοποίηση Firebug
+tracing.option.INSPECT_Description=Επιθεωρητής
+tracing.option.JSONVIEWER_Description=Προβολέας JSON
+tracing.option.LINETABLE_Description=Πίνακας γραμμών σεναρίου εντολών
+tracing.option.LOCALE_Description=Μετάφραση
+tracing.option.LOCATIONS_Description=Τοποθεσίες πηγαίου κώδικα
+tracing.option.NET_Description=Net
+tracing.option.NET_EVENTS_Description=Συμβάντα δικτύου
+tracing.option.OPTIONS_Description=Προτιμήσεις Firebug
+tracing.option.PANELS_Description=Ταμπλό
+tracing.option.SHORTCUTS_Description=Συντομεύσεις πληκτρολογίου
+tracing.option.SOURCEFILES_Description=Αρχεία πηγαίου κώδικα JavaScript
+tracing.option.SPY_Description=Παρατηρητής XMLHttpRequests
+tracing.option.STACK_Description=Στοίβα κλήσης JavaScript
+tracing.option.STORAGE_Description=Αποθήκευση ρυθμίσεων
+tracing.option.SVGVIEWER_Description=Προβολή SVG
+tracing.option.FONTS_Description=Πληροφορίες και προβολή γραμματοσειρών
+tracing.option.TOOLTIP_Description=Συμβουλή κουμπιού εκκίνησης
+tracing.option.TOPLEVEL_Description=JavaScript κορυφαίου επιπέδου
+tracing.option.UI_LOOP_Description=Διασύνδεση χρήστη της αποσφαλμάτωσης JavaScript
+tracing.option.WINDOWS_Description=Παράθυρα Firebug & παρακολούθηση καρτελών
+tracing.option.XMLVIEWER_Description=Προβολή XML
diff --git a/locale/el/firebug.properties b/locale/el/firebug.properties
index 6ff425b..6fda741 100644
--- a/locale/el/firebug.properties
+++ b/locale/el/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.n\n
-# %S Title of the associated web page.n\n
-# examples: Firebug - Googlen\n
-WindowTitle=%S - Firebug
-# Panel titlesn\n
-Panel-console=Κονσόλα
-panel.tip.console=Επιτρέπει την παρατήρηση μηνυμάτων της κονσόλας και την εκτέλεση εντολών Javascript.
-Panel-net=Δίκτυο
-panel.tip.net=Επιτρέπει την ανάλυση της κυκλοφορίας στο δίκτυο
-Panel-html=HTML
-panel.tip.html=Επιτρέπει την επιθεώρηση και την επεξεργασία κόμβων DOM.
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Επιτρέπει την επιθεώρηση και την επεξεργασία φύλλων στυλ.
-Panel-script=Σενάριο εντολών
-panel.tip.script=Επιτρέπει την αποσφαλμάτωση JavaScript.
-Panel-dom=DOM
-panel.tip.dom=Επιτρέπει την επιθεώρηση και την επεξεργασία των ιδιοτήτων του DOM.
-Panel-css=Στυλ
-panel.tip.css=Επιτρέπει την επιθεώρηση και την επεξεργασία των κανόνων CSS για τον επιλεγμένο κόμβο DOM.
-Panel-computed=Υπολογισμένο
-panel.tip.computed=Επιτρέπει την επιθεώρηση των υπολογισμένων τιμών CSS για τον επιλεγμένο κόμβο DOM
-Panel-layout=Διάταξη
-panel.tip.layout=Επιτρέπει την επιθεώρηση και την επεξεργασία των δεδομένων απεικόνισης του επιλεγμένου κόμβου DOM.
-Panel-domSide=DOM
-panel.tip.domSide=Επιτρέπει την επιθεώρηση και την επεξεργασία των ιδιοτήτων DOM του επιλεγμένου κόμβου DOM.
-Panel-watches=Παρακολούθηση
-panel.tip.watches=Επιτρέπει την επιθεώρηση μεταβλητών JavaScript που είναι παρούσες στο τρέχων τμήμα της στοίβας και τον ορισμό εκφράσεων παρακολούθησης
-Panel-breakpoints=Σημεία διακοπής
-panel.tip.breakpoints=Επιτρέπει την επεξεργασία των ορισμένων σημείων διακοπής
-Panel-callstack=Στοίβα
-panel.tip.callstack=Επιτρέπει την παρατήρηση της τρέχουσας στοίβας κλήσεων Javascript
-Panel-scopes=Εμβέλειες
-firebug.DetachFirebug=Άνοιγμα του Firebug σε νέο παράθυρο
-firebug.AttachFirebug=Προσκόλληση του Firebug στο παράθυρο του περιηγητή
-# LOCALIZATION NOTE (plural.Total_Firebugs): Semi-colon list of plural forms.n\n
-# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsn\n
-# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.n\n
-# Displays number of pages with Firebug activated.n\n
-pluralRule=1
-# %S number of Firebugs activatedn\n
-# example: 2 Total Firebugsn\n
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in \'list of all panels\'n\n
-# menu (available on Firebug\'s tab bar).n\n
-# Console panel options.n\n
-# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,n\n
-plural.Total_Firebugs2=%1$S συνολικό Firebug;%1$S συνολικά Firebugs
-# message, etc. within a source of a web page.n\n
-# #1 File name, #2 Line numbern\n
-# examples: somePage.htm (line 64)n\n
-startbutton.tip.deactivated=Απενεργοποιημένο
-# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.n\n
-# For example, right clicking on an element in the HTML panel offers an action to inspectn\n
-# clicked element in the DOM panel (tab).n\n
-# #1 Target panel titlen\n
-# examples: Inspect in DOM Tabn\n
-panel.status=%S: %S
-inBrowser=Στον περιηγητή
-minimized=Ελαχιστοποιημένο
-enablement.for_all_pages=για όλες τις σελίδες
-enablement.on=Ενεργοποιημένο
-enablement.off=Απενεργοποιημένο
-enablement.Panel_activation_status=Κατάσταση ενεργοποίησης ταμπλό:
-none=Κλειστό
-Firebug_-_inactive_for_current_website=Firebug - ανενεργό για την τρέχουσα σελίδα
-Activate_Firebug_for_the_current_website=Ενεργοποίηση του Firebug για την τρέχουσα σελίδα
-Minimized=Ελαχιστοποιημένο
-Minimize_Firebug=Ελαχιστοποίηση του Firebug
-On_for_all_web_pages=Ενεργοποίηση για όλες τις σελίδες
-firebug.menu.tip.On_for_all_Web_Sites=Ενεργοποίηση του Firebug σαν αρχική επιλογή για όλες τις ιστοσελίδες
-firebug.menu.Clear_Activation_List=Εκκαθάριση λίστας ενεργοποίησης
-firebug.menu.tip.Clear_Activation_List=Εκκαθάριση της λίστας ιστοσελίδων για τις οποίες είναι ενεργοποιημένο το Firebug
-firebug.menu.Detached=Αποσπασμένο
-firebug.menu.tip.Detached=Απόσπαση του Firebug σε δικό του παράθυρο
-firebug.menu.Top=Κορυφή
-firebug.menu.tip.Top=Στοίχιση του Firebug στην κορυφή του παραθύρου του useragent
-firebug.menu.Bottom=Βάση
-firebug.menu.tip.Bottom=Στοίχιση του Firebug στη βάση του παραθύρου του useragent
-firebug.menu.Left=Αριστερά
-firebug.menu.tip.Left=Στοίχιση του Firebug στα αριστερά του παραθύρου του useragent
-firebug.menu.Right=Δεξιά
-firebug.menu.tip.Right=Στοίχιση του Firebug στα δεξιά του παραθύρου του useragent
-firebug.uiLocation=Θέση UI Firebug
-firebug.menu.tip.UI_Location=Θέση της διασύνδεσης χρήστη του Firebug
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugn\n
-# do not translate.n\n
-firebug_options=Επιλογές Firebug
-# #1 jsdIScript.tagn\n
-# HTML panel context menu items.n\n
-firebug.Show_All_Panels=Εμφάνιση όλων των ταμπλό
-console.option.Show_Command_Line=Εμφάνιση γραμμής εντολών
-console.option.tip.Show_Command_Line=Εστίαση στη γραμμή εντολών / Εμφάνιση του αναδυόμενου γραμμής εντολών.
-# Quick Info Boxn\n
-ShowJavaScriptErrors=Εμφάνιση σφαλμάτων JavaScript
-console.option.tip.Show_JavaScript_Errors=Καταγραφή μηνυμάτων σφάλματος JavaScript στην κονσόλα.
-ShowJavaScriptWarnings=Εμφάνιση προειδοποιήσεων JavaScript
-console.option.tip.Show_JavaScript_Warnings=Καταγραφή μηνυμάτων ειδοποιήσεων JavaScript στην κονσόλα.
-ShowCSSErrors=Εμφάνιση σφαλμάτων CSS
-console.option.tip.Show_CSS_Errors=Καταγραφή μηνυμάτων σφάλματος CSS στην κονσόλα
-ShowXMLHTMLErrors=Προβολή σφαλμάτων XML/HTML
-console.option.tip.Show_XML_HTML_Errors=Καταγραφή σφαλμάτων XML και HTML στην κονσόλα.
-ShowStackTrace=Εμφάνιση ίχνους στοίβας με σφάλματα
-console.option.tip.Show_Stack_Trace=Εμφάνιση πληροφοριών ίχνους στοίβας για τα μηνύματα σφάλματος.
-ShowXMLHttpRequests=Εμφάνιση XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Καταγραφή XMLHttpRequests στην κονσόλα.
-ShowChromeErrors=Εμφάνιση σφαλμάτων Chrome
-console.option.tip.Show_System_Errors=Καταγραφή εσωτερικών μηνυμάτων σφάλματος του προγράμματος και προσθέτων στην κονσόλα.
-ShowChromeMessages=Εμφάνιση μηνυμάτων Chrome
-console.option.tip.Show_System_Messages=Καταγραφή εσωτερικών μηνυμάτων του προγράμματος και προσθέτων στην κονσόλα.
-ShowExternalErrors=Εμφάνιση εξωτερικών σφαλμάτων
-console.option.tip.Show_External_Errors=Καταγραφή μηνυμάτων σφάλματος από εξωτερικές πηγές στην κονσόλα.
-ShowNetworkErrors=Εμφάνιση σφαλμάτων δικτύου
-console.option.tip.Show_Network_Errors=Καταγραφή μηνυμάτων σφάλματος δικτύου στην κονσόλα.
-JavascriptOptionsStrict=Αυστηρές προειδοποιήσεις (ποινή επιδόσεων)
-console.option.tip.Show_Strict_Warnings=Καταγραφή και των αυστηρών προειδοποιήσεων στην κονσόλα
-Command_History=Ιστορικό εντολών
-console.option.Show_Command_Editor=Εμφάνιση επεξεργαστή εντολών
-console.option.tip.Show_Command_Editor=Εναλλαγή στον επεξεργαστή εντολών
-commandLineShowCompleterPopup=Εμφάνιση αναδυόμενου με τη λίστα ολοκλήρωσης
-console.option.tip.Show_Completion_List_Popup=Εμφάνιση του αναδυόμενου για αυτόματη συμπλήρωση εντολών
-Assertion=Αποτυχία δήλωσης
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumen\n
-# button that are used when the HTML panel is currently selected. The button allows stoppingn\n
-# JS execution when DOM of the current page is modified.n\n
-# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
-# editing an existing HTML element attribute.n\n
-Line=%S (γραμμή %S)
-LineAndCol=%S (γραμμή %S, στήλη %S)
-InstanceLine=%S #%S (γραμμή %S)
-StackItem=%S (%S γραμμή %S)
-SystemItem=<Σύστημα>
-# #1 Name of the clicked attribute.n\n
-# examples: Edit Attribute \"onclick\"...n\n
-# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
-# deleting an existing HTML element attribute.n\n
-# #1 Name of the clicked attribute.n\n
-panel.Inspect_In_Panel=Επιθεώρηση στο πάνελ %S
-panel.tip.Inspect_In_Panel=Εναλλαγή στο πάνελ %S για εξέταση του αντικειμένου εκεί
-NoName=(χωρίς όνομα)
-# examples: Delete Attribute \"onclick\"...n\n
-# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.n\n
-# that has been inherited. Used in the Style side panel (under HTML panel).n\n
-jsdIScript=jsdIScript %S
-# examples: Inherited from table.tabViewn\n
-# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.n\n
-# Allows to edit an existing CSS rule property.n\n
-ShowFullText=Εμφάνιση πλήρους κειμένου
-html.option.tip.Show_Full_Text=Να μην περικόπτονται τα περιεχόμενα στοιχείων
-# %S Name of the clicked propertyn\n
-# examples: Edit \"background-color\"...n\n
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.n\n
-ShowWhitespace=Εμφάνιση κενών διαστημάτων
-html.option.tip.Show_Whitespace=Εμφάνιση κενών διαστημάτων μέσα σε κόμβους
-# Allows to disable an existing CSS rule property.n\n
-# %S Name of the clicked propertyn\n
-ShowComments=Εμφάνιση σχολίων
-html.option.tip.Show_Comments=Εμφάνιση κόμβων σχολίων
-# examples: Disable \"background-color\"n\n
-# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.n\n
-# Allows to delete an existing CSS rule property.n\n
-html.option.Show_Entities_As_Symbols=Εμφάνιση οντοτήτων ως συμβόλων
-html.option.tip.Show_Entities_As_Symbols=Εμφάνιση όλων των οντοτήτων XML με τη συμβολική τους αναπαράσταση
-html.option.Show_Entities_As_Names=Εμφάνιση οντοτήτων ως ονομασίες
-html.option.tip.Show_Entities_As_Names=Εμφάνιση όλων των οντοτήτων XML με τα ονόματα τους
-html.option.Show_Entities_As_Unicode=Εμφάνιση οντοτήτων ως Unicode
-html.option.tip.Show_Entities_As_Unicode=Εμφάνιση όλων των οντοτήτων XML με τη Unicode αναπαράσταση τους
-# %S Name of the clicked propertyn\n
-# examples: Delete \"background-color\"n\n
-# Console context menu labels.n\n
-HighlightMutations=Επισήμανση αλλαγών
-html.option.tip.Highlight_Mutations=Επισήμανση αλλαγών μέσα σε κόμβους
-# LOCALIZATION NOTE do not translate, no longer used(?)n\n
-# Breakpoints side paneln\n
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttonsn\n
-ExpandMutations=Ανάπτυξη αλλαγών
-html.option.tip.Expand_Mutations=Επέκταση του δένδρου για να εμφανιστούν κόμβοι που άλλαξαν.
-# within balloon popup dialog. This dialog appears when debugger halts at a breakpoint or atn\n
-# a \'debugger\' keyword.n\n
-# Continue: allows to resume the debuggern\n
-ScrollToMutations=Κύλιση των αλλαγών στην προβολή
-html.option.tip.Scroll_To_Mutations=Κύλιση του δένδρου για να εμφανιστούν αλλαγμένοι κόμβοι.
-# Disable: allows to disable the current \'debugger;\' keyword used in the Javascript source.n\n
-# Script paneln\n
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):n\n
-ShowQuickInfoBox=Εμφάνιση πλαισίου γρήγορων πληροφοριών
-inspect.option.tip.Show_Quick_Info_Box=Εμφάνιση πληροφοριών για το τρέχων επιθεωρούμενο στοιχείο μέσα σε ταμπλό πάνω από τη σελίδα
-# Labels used to describe layout properties a the selected HTML element.n\n
-# Used in the Layout side panel under HMTL panel.n\n
-# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side paneln\n
-ShadeBoxModel=Σκίαση μοντέλου πλαισίων
-inspect.option.tip.Shade_Box_Model=Σκίαση των διαφορετικών τμημάτων του μοντέλου πλαισίων
-ScrollIntoView=Κύλιση στην προβολή
-html.tip.Scroll_Into_View=Κύλιση της σελίδας για να γίνει εμφανές το στοιχείο
-NewAttribute=Νέα ιδιότητα...
-html.tip.New_Attribute=Προσθήκη νέας ιδιότητας στο στοιχείο
-html.Edit_Node=Επεξεργασία του %S...
-html.Node=Κόμβος
-html.tip.Edit_Node=Επεξεργασία του %S με χρήση του πλήρους επεξεργαστή κειμένου
-DeleteElement=Διαγραφή στοιχείου
-html.Delete_Element=Διαγραφή του στοιχείου από το δένδρο
-DeleteNode=Διαγραφή κόμβου
-html.Delete_Node=Διαγραφή του κόμβου από το δένδρο
-# under HTML panel.n\n
-quickInfo=Γρήγορες πληροφορίες
-computedStyle=Υπολογισμένο στυλ
-# Net paneln\n
-# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)n\n
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,n\n
-html.Break_On_Mutate=Διακοπή σε μετάλλαξη
-html.Disable_Break_On_Mutate=Απενεργοποίηση διακοπής σε μετάλλαξη
-html.label.Break_On_Text_Change=Διακοπή σε αλλαγές κειμένου
-html.label.HTML_Breakpoints=Σημεία διακοπής HTML
-html.label.Break_On_Attribute_Change=Διακοπή σε αλλαγές ιδιότητας
-html.tip.Break_On_Attribute_Change=Διακοπή εκτέλεσης JavaScript όταν αλλάξει κάποια ιδιότητα του στοιχείου
-html.label.Break_On_Child_Addition_or_Removal=Διακοπή σε προσθήκη ή αφαίρεση θυγατρικού στοιχείου
-html.tip.Break_On_Child_Addition_or_Removal=Διακοπή εκτέλεσης JavaScript εάν προστεθεί ή αφαιρεθεί ένας θυγατρικός κόμβος στο στοιχείο.
-html.label.Break_On_Element_Removal=Διακοπή σε αφαίρεση στοιχείου
-html.tip.Break_On_Element_Removal=Διακοπή εκτέλεσης JavaScript εάν αφαιρεθεί το στοιχείο.
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,n\n
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):n\n
-# Labels and tooltips for a headers displayed on top of the Net panel.n\n
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.n\n
-html.label.Expand/Contract_All=Ανάπτυξη/σύμπτυξη όλων
-html.tip.Expand/Contract_All=Ανάπτυξη/σύμπτυξη όλων των θυγατρικών αναδρομικά.
-# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s contextn\n
-# menu for breaking on a XHR.n\n
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in then\n
-dom.label.breakOnPropertyChange=Διακοπή σε αλλαγή ιδιότητας
-dom.tip.Break_On_Property_Change=Διακοπή εκτέλεσης JavaScript εάν αλλάξει η προτίμηση.
-# Net panel\'s Headers tab (displayed if you expand a network request). The label is usedn\n
-# for a button that switches the view between \"show raw source code\" and \"pretty formated headern\n
-dom.disableBreakOnPropertyChange=Απενεργοποίηση διακοπής σε αλλαγή ιδιότητας
-dom.label.DOM_Breakpoints=Σημεία διακοπής DOM
-# values\".n\n
-# LOCALIZATION NOTE (net.filter.Media): Label for net panel filter (used on the Net panel toolbar)n\n
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutn\n
-# a network request (displayed when a net panel entry is expanded). The content ofn\n
-EditAttribute=Επεξεργασία ιδιότητας «%S»...
-html.tip.Edit_Attribute=Επεξεργασία της τιμής της ιδιότητας «%S» αυτού του στοιχείου.
-# this tab displays sent data (related to a HTTP send method).n\n
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):n\n
-# Label used in the Net panel for detailed info about a network request (displayedn\n
-# when a net panel entry is expanded)n\n
-DeleteAttribute=Διαγραφή ιδιότητας «%S»
-html.tip.Delete_Attribute=Διαγραφή της ιδιότητας «%S» αυτού του στοιχείου.
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net paneln\n
-# (expand an entry in the panel and select Headers tab).n\n
-# LOCALIZATION NOTE (plural.Limit_Exceeded): Semi-colon list of plural forms.n\n
-InheritedFrom=Κληρονομείται από
-SothinkWarning=Η επέκταση Sothink SWF Catcher δεν επιτρέπει τη σωστή λειτουργία του Firebug.<br><br>Παρακαλούμε δείτε <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">αυτό το τμήμα των συχνών ερωτήσεων του Firebug </a> (αγγλικά) για βοήθεια.
-# A message displayed in the Net panel when some entries must be removed since maximum numbern\n
-# of entries has been reached.n\n
-css.fontFamilyPreview=ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ. 0123456789
-# %S the number of entries removedn\n
-# example: Firebug\'s log limit has been reached. 150 entries not shown.n\n
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitn\n
-css.EmptyStyleSheet=Δεν υπάρχουν κανόνες. Μπορείτε να <a>δημιουργήσετε ένα κανόνα</a>.
-# has been reached. Informing the user what preferencee should be changed to modify the limit.n\n
-# %S Name of a preference.n\n
-# examples: In order to change the limit modify: firebug.extensions.console.logLimitn\n
-css.EmptyElementCSS=Αυτό το στοιχείο δεν έχει κανόνες στυλ. Μπορείτε να <a>δημιουργήσετε ένα κανόνα</a> γι\' αυτό.
-EditStyle=Επεξεργασία στυλ στοιχείου...
-style.tip.Edit_Style=Επεξεργασία του ενσωματωμένου στυλ του στοιχείου.
-AddRule=Προσθήκη κανόνα...
-css.tip.AddRule=Προσθήκη γενικού κανόνα για το στοιχείο
-NewRule=Νέος κανόνας...
-css.tip.New_Rule=Προσθήκη νέου κανόνα
-# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.n\n
-# (result of javascript profiler tool). Represents a verb.n\n
-# LOCALIZATION NOTE (plural.Profile_Time): Semi-colon list of plural forms.n\n
-# Used as a caption for reported profile info (result of javascript profiler tool).n\n
-css.Delete_Rule=Διαγραφή «%S»
-css.tip.Delete_Rule=Διαγραφή του κανόνα «%S» και όλων των ιδιοτήτων του.
-# #1 number of millisecondsn\n
-# #2 number of calls (plural)n\n
-# example: (#1ms, #2 calls)n\n
-css.menu.Edit_Media_Query=Επεξεργασία media query...
-css.menu.tip.Edit_Media_Query=Επεξεργασία του media query που έχει ανατεθεί στον κανόνα.
-NewProp=Νέα ιδιότητα...
-css.tip.New_Prop=Προσθήκη νέας ιδιότητας στον τρέχοντα κανόνα.
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headern\n
-# (name of a report column). In order to see this, select the Console panel start profilingn\n
-# by clicking the Profile button and stop it by clicking again. The report is logged into then\n
-# console panel. Make sure Script panel is enabled.n\n
-EditProp=Επεξεργασία «%S»...
-css.tip.Edit_Prop=Επεξεργασία της τιμής της ιδιότητας «%S».
-# Support for clipboard actions.n\n
-# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptn\n
-# panel when clicking a function object.n\n
-# %S Name of the functionn\n
-DisableProp=Απενεργοποίηση «%S»
-css.tip.Disable_Prop=Απενεργοποίηση της ιδιότητας «%S».
-# Log Calls to \"getData\"n\n
-# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): A tooltip used for a button on mainn\n
-# Firebug toolbar. This button allows to open the command line even within other panels.n\n
-# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console paneln\n
-DeleteProp=Διαγραφή «%S»
-css.tip.Delete_Prop=Διαγραφή της ιδιότητας «%S»
-# if specific method is not supported.n\n
-BreakOnThisError=Διακοπή σ\' αυτό το σφάλμα
-console.menu.tip.Break_On_This_Error=Διακοπή εκτέλεσης JavaScript μόλις συμβεί αυτό το σφάλμα.
-BreakOnAllErrors=Διακοπή σ\' όλα τα σφάλματα
-console.menu.tip.Break_On_All_Errors=Διακοπή εκτέλεσης JavaScript μόλις συμβεί κάποιο σφάλμα.
-# %S Name of a not supported method.n\n
-# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console paneln\n
-# when a not supported method is used on the command line.n\n
-TrackThrowCatch=Παρακολούθηση Throw/Catch
-script.option.tip.Track_Throw_Catch=Ανίχνευση εξαιρέσεων ακόμα κι όταν εντοπίζονται από μπλοκ ελέγχου/σύλληψης.
-UseLastLineForEvalName=Χρήση της τελευταίας γραμμής πηγαίου κώδικα για ονόματα της eval()
-UseMD5ForEvalName=Χρήση MD5 για ονόματα της eval()
-# %S Name of a not supported method.n\n
-Breakpoints=Σημεία διακοπής
-ErrorBreakpoints=Σφάλμα σημείων διακοπής
-LoggedFunctions=Καταγεγραμμένες συναρτήσεις
-EnableAllBreakpoints=Ενεργοποίηση όλων των σημείων διακοπής
-breakpoints.option.tip.Enable_All_Breakpoints=Ενεργοποίηση όλων των σημείων διακοπής που αναφέρονται.
-DisableAllBreakpoints=Απενεργοποίηση όλων των σημείων διακοπής
-breakpoints.option.tip.Disable_All_Breakpoints=Απενεργοποίηση όλων των σημείων διακοπής που αναφέρονται.
-ClearAllBreakpoints=Αφαίρεση όλων των σημείων διακοπής
-breakpoints.option.tip.Clear_All_Breakpoints=Αφαίρεση όλων των σημείων διακοπής που αναφέρονται.
-ConditionInput=Το σημείο διακοπής θα σταματήσει μόνο αν είναι αληθής η έκφραση:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):n\n
-# Tooltip for the \"Break on... \" button used when the Console panel is selected.n\n
-# Console strings used when JavaScript is not availablen\n
-breakpoints.Remove_Breakpoint=Αφαίρεση σημείου διακοπής
-breakpoints.tip.Remove_Breakpoint=Αφαίρεση του σημείου διακοπής.
-breakpoints.Disable_Breakpoint=Απενεργοποίηση σημείου διακοπής
-breakpoints.tip.Disable_Breakpoint=Απενεργοποίηση του σημείου διακοπής.
-breakpoints.Enable_Breakpoint=Ενεργοποίηση σημείου διακοπής
-breakpoints.tip.Enable_Breakpoint=Ενεργοποίηση του σημείου διακοπής.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,n\n
-# net.sizeinfo.Total_Received):n\n
-# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mousen\n
-# over a Size displayed within the Net panel. \'Total Sent\' and \'Total Received\' info includesn\n
-# even sent and received heades size.n\n
-script.balloon.Continue=Συνέχεια
-script.balloon.Disable=Απενεργοποίηση
-ScriptsFilterStatic=Εμφάνιση στατικών σεναρίων εντολών
-ScriptsFilterEval=Εμφάνιση στατικών και eval σεναρίων εντολών
-ScriptsFilterEvent=Εμφάνιση σεναρίων εντολών στατικών και συμβάντων
-ScriptsFilterAll=Εμφάνιση σεναρίων εντολών στατικών, συμβάντων και eval
-ScriptsFilterStaticShort=στατικό
-ScriptsFilterEvalShort=eval
-ScriptsFilterEventShort=συμβάντα
-ScriptsFilterAllShort=Όλα
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Netn\n
-# panel (inside the Post tab of an expanded request entry). The message informs the user thatn\n
-# posted data reached Firebug\'s size limit and only part of it is displayed in the UI.n\n
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):n\n
-callstack.Expand_All=Ανάπτυξη όλων
-callstack.tip.Expand_All=Ανάπτυξη όλων των συναρτήσεων επιπέδου στοίβας.
-callstack.Collapse_All=Σύμπτυξη όλων
-callstack.tip.Collapse_All=Σύμπτυξη όλων των συναρτήσεων επιπέδου στοίβας.
-# Labels for Net panel\'s options.n\n
-# LOCALIZATION NOTE (net.option.Show_BF_Cache_Responses, net.option.tip.Show_BF_Cache_Responses):n\n
-callstack.Execution_not_stopped=Τα επίπεδα της στοίβας εμφανίζονται μόνο όταν έχει διακοπεί η εκτέλεση του σεναρίου.
-# Net panels\'s option. If set to true, the net panel displays also response coming fromn\n
-# BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCachen\n
-# LOCALIZATION NOTE (plural.Request_Count): Semi-colon list of plural forms.n\n
-# A label used in the Net panel. Displays number of HTTP requests executed by the current page.n\n
-ShowUserProps=Εμφάνιση ιδιοτήτων ορισμένων από χρήστη
-dom.option.tip.Show_User_Props=Εμφάνιση ιδιοτήτων αντικειμένων ορισμένων από τον χρήστη.
-ShowUserFuncs=Εμφάνιση συναρτήσεων ορισμένων από χρηστή
-dom.option.tip.Show_User_Funcs=Εμφάνιση μεθόδων αντικειμένων ορισμένων από τον χρήστη.
-ShowDOMProps=Εμφάνιση ιδιοτήτων DOM
-dom.option.tip.Show_DOM_Props=Εμφάνιση ιδιοτήτων ορισμένων μέσα στο DOM.
-ShowDOMFuncs=Εμφάνιση συναρτήσεων DOM
-dom.option.tip.Show_DOM_Funcs=Εμφάνιση συναρτήσεων ορισμένων μέσα στο DOM.
-ShowDOMConstants=Εμφάνιση σταθερών DOM
-dom.option.tip.Show_DOM_Constants=Εμφάνιση σταθερών ορισμένων μέσα στο DOM.
-ShowInlineEventHandlers=Προβολή ενσωματωμένων διαχειριστών συμβάντων
-ShowInlineEventHandlersTooltip=Προβολή των διαθέσιμων ενσωματωμένων διαχειριστών συμβάντων που δεν έχουν σχέση με συναρτήσεις.
-ShowOwnProperties=Προβολή μόνο ιδίων ιδιοτήτων
-ShowOwnPropertiesTooltip=Απόκρυψη αλυσίδας πρωτότυπου
-ShowEnumerableProperties=Προβολή μόνο απαριθμημένων ιδιοτήτων
-ShowEnumerablePropertiesTooltip=Απόκρυψη μη απαριθμημένων ιδιοτήτων
-NoMembersWarning=Δεν υπάρχουν ιδιότητες προς εμφάνιση για το αντικείμενο.
-NewWatch=Νέα έκφραση παρακολούθησης...
-# %S number of requestsn\n
-# example: 21 requestsn\n
-AddWatch=Προσθήκη παρακολούθησης
-watch.tip.Add_Watch=Προσθήκη της επιλογής/του αντικειμένου στην πλευρική στήλη παρακολούθησης για παρατήρηση.
-# LOCALIZATION NOTE (plural.Error_Count): Semi-colon list of plural forms.n\n
-# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.n\n
-CopySourceCode=Αντιγραφή πηγαίου κώδικα
-script.tip.Copy_Source_Code=αντιγραφή του επιλεγμένου πηγαίου κώδικα στο πρόχειρο.
-Use_hash_plus_number_to_go_to_line=Χρησιμοποιήστε το #<αριθμός> για να μεταβείτε στην αντίστοιχη γραμμή
-CopyValue=Αντιγραφή τιμής
-dom.tip.Copy_Value=Αντιγραφή της τιμής της ιδιότητας στο πρόχειρο.
-Copy_Name=Αντιγραφή ονόματος
-dom.tip.Copy_Name=αντιγραφή του ονόματος της ιδιότητας στο πρόχειρο.
-Copy_Path=Αντιγραφή διαδρομής
-dom.tip.Copy_Path=Αντιγραφή της διαδρομής της ιδιότητας.
-NewProperty=Νέα ιδιότητα...
-EditProperty=Επεξεργασία ιδιότητας...
-dom.tip.Edit_Property=Επεξεργασία της τιμής της ιδιότητας.
-EditVariable=Επεξεργασία μεταβλητής...
-stack.tip.Edit_Variable=Επεξεργασία της τιμής της μεταβλητής.
-EditWatch=Επεξεργασία παρακολούθησης...
-watch.tip.Edit_Watch=Επεξεργασία της τιμής της έκφρασης παρακολούθησης.
-DeleteProperty=Διαγραφή ιδιότητας
-dom.tip.Delete_Property=Διαγραφή της ιδιότητας.
-DeleteWatch=Διαγραφή παρακολούθησης
-DeleteAllWatches=Διαγραφή όλων των παρακολουθήσεων
-watch.tip.Delete_Watch=Διαγραφή της έκφρασης παρακολούθησης.
-watch.tip.Delete_All_Watches=Διαγραφή όλων των εκφράσεων παρακολούθησης
-# %S number of errorsn\n
-# example: 111 Errorsn\n
-SetBreakpoint=Ορισμός σημείου διακοπής
-script.tip.Set_Breakpoint=Εναλλαγή της ρύθμισης για σημείο διακοπής στην τρέχουσα γραμμή.
-# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.n\n
-# With: the scope inside of the with(obj) {} statementn\n
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };n\n
-EditBreakpointCondition=Επεξεργασία συνθήκης σημείου διακοπής...
-breakpoints.tip.Edit_Breakpoint_Condition=Επεξεργασία της συνθήκης υπό την οποία αυτό το σημείο διακοπής σταματάει την εκτέλεση της JavaScript.
-NoBreakpointsWarning=Δεν έχουν οριστεί σημεία διακοπής στη σελίδα.
-# Window: the scope inside of a Javascript window object.n\n
-# Net panel timing info labelsn\n
-#A11y Chrome Labels (not visible, spoken by screen readers)n\n
-Only_Show_Applied_Styles=Εμφάνιση μόνο εφαρμοσμένων στυλ
-style.option.tip.Only_Show_Applied_Styles=Εμφάνιση μόνο του στυλ που εφαρμόζεται στο στοιχείο.
-#A11y panelNode labels (not visible, spoken by screen readers)n\n
-#A11y Domplate labels (not visible, spoken by screen readers)n\n
-# LOCALIZATION NOTEn\n
-Show_User_Agent_CSS=Εμφάνιση CSS User Agent
-style.option.tip.Show_User_Agent_CSS=Εμφάνιση και του CSS που ορίζεται από την εφαρμογή.
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# Describe contents of inline editor fieldsn\n
-# LOCALIZATION NOTE (a11y.labels.overridden):n\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# indicates style property is overridden by selector with higher specificityn\n
-computed.option.label.Colors_As_Hex=Εμφάνιση χρωμάτων ως δεκαεξαδικών.
-computed.option.tip.Colors_As_Hex=Εμφάνιση χρωμάτων σε δεκαεξαδική μορφή.
-computed.option.label.Colors_As_RGB=Εμφάνιση χρωμάτων ως RGB
-computed.option.tip.Colors_As_RGB=Εμφάνιση χρωμάτων σε μορφή RGB.
-computed.option.label.Colors_As_HSL=Εμφάνιση χρωμάτων ως HSL
-computed.option.tip.Colors_As_HSL=Εμφάνιση χρωμάτων σε μορφή HSL.
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):n\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# Existence and state of a breakpointn\n
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlyn\n
-style.option.label.active=:active
-style.option.tip.active=Εμφάνιση στυλ της ψευδο-κλάσης :active.
-# visible in the UI, intended for screen readers.n\n
-# #1 Line number, #2 Function name, #3 File namen\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-style.option.label.hover=:hover
-style.option.tip.hover=Εμφάνιση στυλ της ψευδο-κλάσης :hover.
-# Describes the match found when performing a console panel search n\n
-# #1 %S String key the use is looking for. #2 number of rows that contain the matched textn\n
-# examples: Match found for \"test\" in 17 log rowsn\n
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlyn\n
-style.option.label.focus=:focus
-style.option.tip.focus=Εμφάνιση στυλ της ψευδο-κλάσης :focus
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a script panel search n\n
-# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found inn\n
-css.label.Inspect_Declaration=Επιθεώρηση δηλώσεων
-css.tip.Inspect_Declaration=Επιθεώρηση της δήλωσης γραμματοσειράς.
-# examples: Match found for \"window.alert\" on line 322 in utilities.jsn\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in an element node) n\n
-Expand_Shorthand_Properties=Ανάπτυξη ιδιοτήτων Shorthand
-css.option.tip.Expand_Shorthand_Properties=Ανάπτυξη συντομευμένων ιδιοτήτων CSS στα πλήρη στοιχεία τους.
-# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementn\n
-# examples: Match found for \"obj\" in object element at /html/body/object[2]n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-Sort_alphabetically=Αλφαβητική ταξινόμηση
-computed.option.tip.Sort_Alphabetically=Ταξινόμηση στυλ ανά όνομα/ομαδοποίηση στυλ ανά κατηγορίες.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node) n\n
-# #1 Search string that was matched. #2 Attribute name #3 attribute value n\n
-# #4 the HTML element name containing. #5 XPATH string specifying the matched elementn\n
-Show_Mozilla_specific_styles=Εμφάνιση στυλ προσαρμοσμένων για Mozilla
-computed.option.tip.Show_Mozilla_Specific_Styles=Εμφάνιση και κανόνων στυλ με το πρόθεμα -moz
-# examples: Match found for \"abindex\" in tabindex=\"0\" in span element at /html/body/span[2]n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-computed.No_User-Defined_Styles=Αυτό το στοιχείο δεν έχει κανόνες στυλ ορισμένους από τον χρήστη.
-script.Type_any_key_to_filter_list=Πληκτρολογήστε οτιδήποτε για να φιλτράρετε τη λίστα
-# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) n\n
-# #1 Search string that was matched. #2 element\'s text content n\n
-# #3 the HTML element name containing. #4 XPATH string specifying the matched elementn\n
-LayoutPadding=γέμισμα
-LayoutBorder=περίγραμμα
-LayoutMargin=περιθώριο
-LayoutPosition=θέση
-LayoutAdjacent=συνεχόμενο
-position=θέση
-# examples: Match found for \"Firebug Rocks!\" in h2 element at /html/body/h2[2]n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a CSS panel search (if it is found in a selector) n\n
-ShowRulers=Εμφάνιση στοιχειοθετών και οδηγών
-layout.option.tip.Show_Rulers=Εμφάνιση χάρακα και οδηγών κατά το πέρασμα πάνω από τμήματα του πλαισίου διάταξης.
-# #1 Search string that was matched. #2 selector in which the match was found n\n
-Loading=Φόρτωση...
-Headers=Κεφαλίδες
-# examples: Match found for \"main\" in #mainContent h2 {n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlyn\n
-net.tip.Clear=Εκκαθάριση της λίστας αιτημάτων
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration) n\n
-net.header.Reset_Header=Επαναφορά κεφαλίδων
-net.header.tip.Reset_Header=Επαναφορά εμφάνισης κεφαλίδας
-# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to n\n
-# examples: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a DOM panel search n\n
-# #1 Search string that was matched. #2 DOM property in which the match was found n\n
-net.header.URL=URL
-net.header.URL_Tooltip=Αιτούμενο URL και μέθοδος HTTP που χρησιμοποιήθηκε.
-net.header.Status=Κατάσταση
-net.header.Status_Tooltip=Κατάσταση ληφθείσας απόκρισης.
-net.header.Domain=Τομέας
-net.header.Domain_Tooltip=Τομέας εκτελεσμένου αιτήματος.
-net.header.Size=Μέγεθος
-net.header.Size_Tooltip=Μέγεθος ληφθείσας απόκρισης.
-net.header.Timeline=Χρονοδιάγραμμα
-net.header.Timeline_Tooltip=Λεπτομερείς πληροφορίες χρόνου ολοκλήρωσης αιτήματος απόκρισης.
-net.header.Local_IP=Τοπική IP
-net.header.Local_IP_Tooltip=Τοπική διεύθυνση IP και αριθμός θύρας που απευθύνεται το αίτημα.
-net.header.Remote_IP=Απομακρυσμένη IP
-net.header.Remote_IP_Tooltip=Απομακρυσμένη διεύθυνση IP και αριθμός θύρας που απευθύνεται το αίτημα.
-net.header.Protocol=Πρωτόκολλο
-net.header.Protocol_Tooltip=Το πρωτόκολλο του URL για τον εντοπισμό του στοιχείου στον ιστό.
-# examples: Match found for \"time\" in _starttime : 1257324992232 (Number)n\n
-net.label.XHR_Breakpoints=Σημεία διακοπής XHR
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-net.label.Break_On_XHR=Διακοπή σε XHR
-net.tip.Break_On_XHR=Διακοπή εκτέλεσης JavaScript αμέσως μόλις παρουσιαστεί XMLHttpRequest.
-# Describes the match found when performing a Net panel search n\n
-# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
-# #3 Column in which the match was found #4. Column value n\n
-net.headers.view_source=εμφάνιση πηγής
-net.headers.pretty_print=pretty print
-# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 msn\n
-net.filter.Media=Πολυμέσα
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
-Post=Post
-Put=Put
-# #1 Search string that was matched. #2 Column value in which the match was found n\n
-# examples: Match found for \"05\" in net summary row: 4.05sn\n
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
-Response=Απόκριση
-URLParameters=Παράμετροι
-Cache=Λανθάνουσα
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Γενικές πληροφορίες
-fontviewer.Meta_Data=Δεδομένα Meta
-fontviewer.view_source=Εμφάνιση πηγής
-fontviewer.Preview=Προεπισκόπηση
-fontviewer.view_characters=Εμφάνιση χαρακτήρων
-fontviewer.pretty_print=Όμορφη εκτύπωση
-fontviewer.view_sample=Εμφάνιση δείγματος
-fontviewer.uniqueid=Μοναδικό ID
-fontviewer.vendor=Κατασκευαστής
-fontviewer.license=Άδεια
-fontviewer.description=Περιγραφή
-fontviewer.copyright=Πνευματικά δικαιώματα
-fontviewer.credits=Μνεία
-fontviewer.trademark=Σήμα κατατεθέν
-fontviewer.licensee=Αδειοδότης
-fontviewer.extension=Επέκταση
-fontviewer.pangram=αβγδεζηθικλμνξοπρστυφχψω
-# visible in the UI, intended for screen readers.n\n
-# Indicates that the searched string was not matched n\n
-jsonviewer.sort=Ταξινόμηση με βάση κλειδιά
-jsonviewer.do_not_sort=Χωρίς ταξινόμηση
-# %S Search string that was matched. n\n
-# examples: No matched found for \"wefkhwefkgwekhjgjh\"n\n
-# Console messages.n\n
-# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
-net.jsonviewer.Copy_JSON=Αντιγραφή του «%S» ως JSON
-# If Firebug is displayed in an external window (detached), but not active for then\n
-# currently selected Firefox tab, the following button label is used for ann\n
-RequestHeaders=Κεφαλίδες αιτήματος
-ResponseHeaders=Κεφαλίδες απόκρισης
-CachedResponseHeaders=Κεφαλίδες απόκρισης από τη λανθάνουσα
-PostRequestHeaders=Αίτηση κεφαλίδων από stream αποστολής
-# activation button.n\n
-# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
-# An error message displayed in the Script panel when a source can\'t be displayedn\n
-net.label.ResponseHeadersFromBFCache=Το αίτημα εξυπηρετήθηκε άμεσα από τη λανθάνουσα οπότε δεν έχουμε την απόκριση του διακομιστή. Δείτε παρακάτω για την απόκριση από τη λανθάνουσα.
-# for specific URL.n\n
-# examples: Failed to load source for: http://www.example.com/script.jsn\n
-# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,n\n
-# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.n\n
-plural.Limit_Exceeded2=Το όριο καταγραφής ιστορικού του Firebug έχει πληρωθεί. Δεν εμφανίζεται %1$S εγγραφή.;Το όριο καταγραφής ιστορικού του Firebug έχει πληρωθεί. Δεν εμφανίζονται %1$S εγγραφές.
-LimitPrefs=Προτιμήσεις
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):n\n
-# Tooltips for back/forward buttons on the Script panel toolbar.n\n
-#firebug.dtdn\n
-#editors.dtdn\n
-LimitPrefsTitle=Για να αλλάξετε το όριο, μετατρέψτε το: %S
-Refresh=Ανανέωση
-panel.tip.Refresh=Ανανέωση της εμφάνισης του πάνελ.
-# If Firebug is displayed in an external window (detached), but not active for then\n
-# currently selected Firefox tab, the following button label is used for ann\n
-OpenInTab=Άνοιγμα σε νέα καρτέλα
-firebug.tip.Open_In_Tab=Άνοιγμα του URL σε νέα καρτέλα του περιηγητή.
-Open_Response_In_New_Tab=Άνοιγμα απόκρισης σε νέα καρτέλα
-net.tip.Open_Response_In_New_Tab=Άνοιγμα της απόκρισης σε νέα καρτέλα του περιηγητή.
-# activation button.n\n
-# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
-Profile=Προφίλ
-ProfilerStarted=Ο διαχειριστής προφίλ εκτελείται. Κάντε ξανά κλικ στο «Προφίλ» για να δείτε την αναφορά του.
-# An error message displayed in the Script panel when a source can\'t be displayedn\n
-# for specific URL.n\n
-# examples: Failed to load source for: http://www.example.com/script.jsn\n
-# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,n\n
-plural.Profile_Time2=(%1$Sms, %2$S κλήση);(%1$Sms, %2$S κλήση)
-NothingToProfile=Δεν υπάρχουν δραστηριότητες για δημιουργία προφίλ.
-PercentTooltip=Ποσοστό χρόνου που δαπανήθηκε για τη συνάρτηση.
-CallsHeaderTooltip=Αριθμός κλήσεων της συνάρτησης.
-OwnTimeHeaderTooltip=Χρόνος που δαπανήθηκε για τη συνάρτηση, εκτός από ενσωματωμένες κλήσεις
-TimeHeaderTooltip=Χρόνος που δαπανήθηκε για τη συνάρτηση, συμπεριλαμβανομένων ενσωματωμένων κλήσεων
-AvgHeaderTooltip=Μέσος χρόνος, συμπεριλαμβανομένων κλήσεων συναρτήσεως
-MinHeaderTooltip=Ελάχιστος χρόνος, συμπεριλαμβανομένων κλήσεων συναρτήσεως
-MaxHeaderTooltip=Μέγιστος χρόνος, συμπεριλαμβανομένων κλήσεων συναρτήσεως
-ProfileButton.Enabled.Tooltip=Δημιουργία προφίλ χρόνου εκτέλεσης JavaScript
-ProfileButton.Disabled.Tooltip=Δημιουργία προφίλ χρόνου εκτέλεσης JavaScript (το ταμπλό σεναρίων εντολών πρέπει να είναι ενεργοποιημένο).
-Function=Συνάρτηση
-Percent=Ποσοστό
-# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.n\n
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):n\n
-# Tooltips for back/forward buttons on the Script panel toolbar.n\n
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):n\n
-Calls=Κλήσεις
-OwnTime=Ίδια ώρα
-Time=Χρόνος
-Avg=Μέσος
-Min=Ελ.
-Max=Μεγ.
-File=Αρχείο
-# This message is displayed within the Script panel if debugger is inactive during page load.n\n
-Copy=Αντιγραφή
-Cut=Αποκοπή
-Remove=Αφαίρεση
-Delete=Διαγραφή
-Paste=Επικόλληση
-SelectAll=Επιλογή όλων
-html.Copy_Node=Αντιγραφή του %S
-html.tip.Copy_Node=Αντιγραφή του κόμβου %S και όλων των περιεχομένων του στο πρόχειρο.
-CopyInnerHTML=Αντιγραφή innerHTML
-html.tip.Copy_innerHTML=Αντιγραφή των περιεχομένων του στοιχείου στο πρόχειρο.
-CopyXPath=Αντιγραφή XPath
-html.tip.Copy_XPath=Αντιγραφή του XPath του στοιχείου στο πρόχειρο.
-Copy_CSS_Path=Αντιγραφή διαδρομής CSS
-html.tip.Copy_CSS_Path=Αντιγραφή της διαδρομής CSS του στοιχείου στο πρόχειρο.
-# The suggestion message represents an advice how to solve the problem.n\n
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):n\n
-CopyLocation=Αντιγραφή τοποθεσίας
-clipboard.tip.Copy_Location=Αντιγραφή του URL της θέσης του αντικειμένου στο πρόχειρο.
-CopyURLParameters=Αντιγραφή παραμέτρων URL
-net.tip.Copy_URL_Parameters=Αντιγραφή παραμέτρων URL στο πρόχειρο.
-CopyPOSTParameters=Αντιγραφή παραμέτρων POST
-net.tip.Copy_POST_Parameters=Αντιγραφή παραμέτρων POST στο πρόχειρο
-CopyLocationParameters=Αντιγραφή τοποθεσίας με παραμέτρους
-net.tip.Copy_Location_Parameters=Αντιγραφή του URL και των παραμέτρων στο πρόχειρο.
-CopyRequestHeaders=Αντιγραφή κεφαλίδων αιτημάτων
-net.tip.Copy_Request_Headers=Αντιγραφή των κεφαλίδων αιτημάτων στο πρόχειρο.
-CopyResponseHeaders=Αντιγραφή κεφαλίδων απόκρισης
-net.tip.Copy_Response_Headers=Αντιγραφή των κεφαλίδων αποκρίσεων στο πρόχειρο.
-CopyResponse=Αντιγραφή σώματος απόκρισης
-net.tip.Copy_Response=Αντιγραφή του σώματος απόκρισης στο πρόχειρο.
-# This message is displayed within the Script panel if javascript is not enabled.n\n
-# The suggestion message represents an advice how to solve the problem.n\n
-CopyError=Αντιγραφή σφάλματος
-console.menu.tip.Copy_Error=Αντιγραφή των πληροφοριών σφάλματος στο πρόχειρο.
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed onn\n
-# the Script panel if Javascript is disabled. This button allows to enable it.n\n
-CopySource=Αντιγραφή συνάρτησης
-dom.tip.Copy_Source=Αντιγραφή του πηγαίου κώδικα της συνάρτησης στο πρόχειρο.
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):n\n
-# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
-# The suggestion message represents an advice how to solve the problem.n\n
-# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):n\n
-# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
-ShowCallsInConsole=Καταγραφή κλήσεων στο «%S»
-dom.tip.Log_Calls_To_Function=Καταγραφή των κλήσεων της συνάρτησης «%S» μέσα στο πάνελ κονσόλας.
-# The suggestion message represents an advice how to solve the problem.n\n
-#firebug.dtdn\n
-#editors.dtdn\n
-ShowEventsInConsole=Καταγραφή συμβάντων
-html.tip.Show_Events_In_Console=Καταγραφή πληροφοριών συμβάντος στην κονσόλα.
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Ενεργοποιημένο
-panel.tip.Enabled=Εναλλαγή ενεργοποίησης πάνελ
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Εμφάνιση αναδυόμενου γραμμής εντολών.
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Η κονσόλα του Firebug δεν υποστηρίζει «%S»
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Η γραμμή εντολών του Firebug δεν υποστηρίζει «%S»
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Τρέχον παράθυρο
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Απενεργοποίηση διακοπής σε όλα τα σφάλματα
-console.Break_On_All_Errors=Διακοπή σε όλα τα σφάλματα
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Διακοπή σ\' αυτό το σφάλμα
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Χρησιμοποιήστε τα πλήκτρα με βέλη, το tab ή το enter.
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=Η JavaScript είναι απενεργοποιημένη από τις επιλογές του Firefox. Αν θέλετε να χρησιμοποιήσετε την κονσόλα, θα πρέπει να ενεργοποιήσετε την επιλογή: «Εργαλεία» -> «Επιλογές» -> «Περιεχόμενο» -> «Ενεργοποίηση JavaScript»
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=Ο πίνακας περιέχει παρά πολλά στοιχεία για να επισημανθούν στη σελίδα (το τρέχον όριο είναι %S).\\\\nΔείτε την επιλογή \\\'extensions.firebug.multiHighlightLimit\\\'.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Η γραμμή εντολών του Firebug είναι απενεργοποιημένη για σελίδες XML. Μπορείτε να <a>γυρίσετε σε HTML</a> για να ενεργοποιηθεί.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Κυρίως σώμα απόκρισης
-net.sizeinfo.Post_Body=Σώμα Post
-net.sizeinfo.Total_Sent=Σύνολο αποσταλθέντων
-net.sizeinfo.Total_Received=Σύνολο ληφθέντων
-net.sizeinfo.Including_HTTP_Headers=Συμπεριλαμβανομένων των κεφαλίδων HTTP
-net.ActivationMessage=Ενεργοποιήθηκε το ταμπλό δικτύου. Δεν θα εμφανιστούν τυχόν αιτήματα δικτύου που παρουσιάστηκαν όσο ήταν απενεργοποιημένο.
-net.responseSizeLimitMessage=Πληρώθηκε το όριο αποκρίσεων του Firebug. Κάντε κλικ <a>εδώ</a> για να ανοίξετε ολόκληρη την απόκριση σε νέα καρτέλα του Firefox.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Πληρώθηκε το όριο σώματος post. Αφαιρέθηκε από το Firebug.
-net.Break_On_XHR=Διακοπή σε XHR
-net.label.Parameters=Παράμετροι
-net.label.Parts=Τμήματα
-net.label.Source=Πηγή
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Επανάληψη αποστολής
-net.tip.Resend=Επανάληψη αποστολής του αιτήματος
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Απενεργοποίηση λανθάνουσας περιηγητή
-net.option.tip.Disable_Browser_Cache=Απενεργοποίηση της λανθάνουσας HTTP του περιηγητή.
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Προβολή συμβάντων Paint
-net.option.tip.Show_Paint_Events=Εμφάνιση συμβάντων MozAfterPaint ως πράσινων γραμμών μέσα στο χρονοδιάγραμμα.
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Προβολή αποκρίσεων BFCache
-net.option.tip.Show_BFCache_Responses=Θα προβάλλονται επίσης και αποκρίσεις λανθάνουσας από τα κουμπιά μετάβασης μπρος-πίσω.
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Διακοπή σε επόμενο
-script.Disable_Break_On_Next=Διακοπή σε Επόμενο
-ShowHttpHeaders=Εμφάνιση κεφαλίδων HTTP
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S αίτημα;%1$S αιτήματα
-FromCache=από τη λανθάνουσα
-StopLoading=Διακοπή φόρτωσης
-net.tip.Stop_Loading=Διακοπή φόρτωσης του αιτήματος.
-LargeData=(Πάρα πολλά δεδομένα)
-ShowComputedStyle=Εμφάνιση υπολογισμένου στυλ
-StyleGroup-text=Κείμενο
-StyleGroup-background=Παρασκήνιο
-StyleGroup-box=Μοντέλο πλαισίων
-StyleGroup-layout=Εμφάνιση
-StyleGroup-other=Άλλα
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Αντιγραφή χρώματος
-css.tip.Copy_Color=Αντιγραφή του χρώματος στο πρόχειρο.
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Αντιγραφή τοποθεσίας εικόνας
-css.tip.Copy_Image_Location=Αντιγραφή του URL της εικόνας στο πρόχειρο
-OpenImageInNewTab=Άνοιγμα εικόνας σε νέα καρτέλα
-css.tip.Open_Image_In_New_Tab=Άνοιγμα της εικόνας σε νέα καρτέλα του περιηγητή.
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Παράλειψη στοίβας εργαλειοθήκης
-callstack.option.tip.Omit_Object_Path_Stack=Να μην εμφανίζεται η στοίβα διαδρομής του αντικειμένου
-Load_Original_Source=Φόρτωση_αρχικού_πηγαίου_κώδικα
-css.tip.Load_Original_Source=Απόρριψη αλλαγών και φόρτωση του αρχικού CSS.
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Αντιγραφή δήλωσης κανόνα
-css.tip.Copy_Rule_Declaration=Αντιγραφή του κανόνα και όλων των ιδιοτήτων του στο πρόχειρο
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Αντιγραφή δήλωσης στυλ
-css.tip.Copy_Style_Declaration=Αντιγραφή των ιδιοτήτων του κανόνα στο πρόχειρο
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S σφάλμα;%1$S σφάλματα
-moduleManager.title=Έχει απενεργοποιηθεί το πλαίσιο %S
-moduleManager.desc3=Χρησιμοποιήστε το εικονίδιο του Firebug στη γραμμή κατάστασης για να ενεργοποιήσετε ή όχι όλα τα ταμπλό. Χρησιμοποιήστε το μικρό μενού της καρτέλας του πλαισίου για τον έλεγχο του κάθε ταμπλό.
-moduleManager.Enable=Ενεργοποίηση
-Suspend_Firebug=Αναστολή Firebug
-Resume_Firebug=Συνέχιση Firebug
-Reset_Panels_To_Disabled=Επαναφορά ταμπλό σε απενεργοποίηση
-Open_Console=Άνοιγμα κονσόλας
-Open_Console_Tooltip=Άνοιγμα κονσόλας ανίχνευσης για το Firebug
-Scope_Chain=Αλυσίδα εμβέλειας
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=Με
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Κλήση
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Παράθυρο
-Logs=Καταγραφές
-Options=Επιλογές
-Copy_Stack=Αντιγραφή στοίβας
-Copy Exception=Αντιγραφή εξαίρεσης
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Μπλοκάρισμα
-requestinfo.Resolving=Αναζήτηση DNS
-requestinfo.Connecting=συνδέεται
-requestinfo.Sending=αποστέλλεται
-requestinfo.Waiting=Αναμονή
-requestinfo.Receiving=Λαμβάνει
-requestinfo.ContentLoad=\'DOMContentLoaded\' (συμβάν)
-requestinfo.WindowLoad=\'load\' (συμβάν)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Χρόνος εκκίνησης αιτήματος από την αρχή
-requestinfo.phases.label=Έναρξη φάσεων και χρόνος ολοκλήρωσης αιτήματος σε σχέση με την εκκίνηση του αιτήματος:
-requestinfo.timings.label=Χρονομέτρηση συμβάντος σε σχέση με την εκκίνηση του αιτήματος:
-search.Firebug_Search=Εύρεση Firebug
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Επόμενο
-search.tip.Next=Αναζήτηση για το επόμενο ταίριασμα.
-search.Previous=Προηγούμενο
-search.tip.Previous=Αναζήτηση για το προηγούμενο ταίριασμα.
-search.Case_Sensitive=αναγκαστικό ταίριασμα χαρακτήρων
-search.tip.Case_Sensitive=Διάκριση πεζών/κεφαλαίων κατά την αναζήτηση.
-search.Case_Insensitive=Χωρίς ταίριασμα πεζών-κεφαλαίων
-search.tip.Case_Insensitive=Αγνόησή πεζών/ κεφαλαίων κατά την αναζήτηση.
-search.Multiple_Files=Πολλαπλά αρχεία
-search.tip.Multiple_Files=Αναζήτηση μέσα σε όλα τα αρχεία που έχουν σχέση με το πάνελ.
-search.Use_Regular_Expression=Χρήση κανονικής έκφρασης
-search.tip.Use_Regular_Expression=Αντιμετώπιση του εισηγμένου αλφαριθμητικού ως κανονικής έκφρασης κατά την αναζήτηση.
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=Επιλογέας CSS
-search.net.Headers=Κεφαλίδες
-search.net.Parameters=Παράμετροι
-search.net.Response_Bodies=Σώματα απόκρισης
-search.net.tip.Response_Bodies=Αναζήτηση και στα σώματα περιεχομένου αποκρίσεων.
-firebug.console.Persist=Εξακολούθηση
-firebug.console.Do_Not_Clear_On_Reload2=Να μην εκκαθαριστεί το πάνελ κατά την ανανέωση της σελίδας
-firebug.console.Show_All_Log_Entries=Εμφάνιση όλων των εγγραφών της καταγραφής
-firebug.console.Errors=Σφάλματα
-firebug.console.Filter_by_Errors=Φιλτράρισμα με βάση τα σφάλματα
-firebug.console.Warnings=Ειδοποιήσεις
-firebug.console.Filter_by_Warnings=Φιλτράρισμα με βάση τις ειδοποιήσεις
-firebug.console.Info=Πληροφορίες
-firebug.console.Filter_by_Info=Φιλτράρισμα με βάση τις πληροφορίες
-firebug.console.Debug_Info=Πληροφορίες αποσφαλμάτωσης
-firebug.console.Filter_by_Debug_Info=Φιλτράρισμα με βάση τις πληροφορίες αποσφαλμάτωσης
-firebug.Deactivate_Firebug=Απενεργοποίηση του Firebug
-firebug.tip.Deactivate_Firebug=Απενεργοποίηση του Firebug για την τρέχουσα σελίδα.
-firebug.ShowFirebug=Άνοιγμα του Firebug
-firebug.menu.tip.Open_Firebug=Εμφάνιση του UI του Firebug
-firebug.HideFirebug=Απόκρυψη Firebug
-firebug.menu.tip.Minimize_Firebug=Ελαχιστοποίηση του Firebug, διατηρώντας το ενεργό.
-firebug.FocusFirebug=Εστίαση στο παράθυρο του Firebug
-firebug.menu.tip.Focus_Firebug=Εστίαση στο αποσπασμένο παράθυρο του Firebug.
-firebug.menu.Enable_All_Panels=Ενεργοποίηση όλων των ταμπλό
-firebug.menu.tip.Enable_All_Panels=Ενεργοποίηση όλων των πάνελ που είναι δυνατό να ενεργοποιηθούν.
-firebug.menu.Disable_All_Panels=Απενεργοποίηση όλων των ταμπλό
-firebug.menu.tip.Disable_All_Panels=Απενεργοποίηση όλων των πάνελ που είναι δυνατόν.
-firebug.menu.Customize_shortcuts=Προσαρμογή συντομεύσεων
-firebug.menu.tip.Customize_Shortcuts=Προσαρμογή των συνδυασμών πλήκτρων που χρησιμοποιεί το Firebug.
-firebug.Options=Επιλογές
-firebug.menu.tip.Options=Γενικές προτιμήσεις του Firebug
-firebug.menu.Enable_Accessibility_Enhancements=Ενεργοποίηση βελτιώσεων προσβασιμότητας
-firebug.menu.tip.Enable_Accessibility_Enhancements=Ενεργοποίηση πλήρους ελέγχου μέσω του πληκτρολογίου και άλλων δυνατοτήτων προσβασιμότητας.
-firebug.menu.Activate_Same_Origin_URLs2=Ενεργοποίηση για URL ίδιας προέλευσης.
-firebug.menu.tip.Activate_Same_Origin_URLs=Ενεργοποίηση του Firebug για URL που ταιριάζουν με την πολιτική ίδιας προέλευσης.
-firebug.menu.Reset_All_Firebug_Options=Επαναφορά όλων των επιλογών του Firebug
-firebug.menu.tip.Reset_All_Firebug_Options=Επαναφορά όλων των προτιμήσεων του Firebug στις αρχικές τους τιμές.
-firebug.menu.Firebug_Online=Το Firebug στο διαδίκτυο
-firebug.menu.tip.Firebug_Online=Ιστοσελίδες σχετικές με το Firebug
-firebug.menu.Extensions=Επεκτάσεις του Firebug...
-firebug.menu.tip.Extensions=Κάντε λήψη και εγκατάσταση επεκτάσεων για το Firebug.
-firebug.menu.Vertical_Panels=Κάθετα πάνελ
-firebug.menu.tip.Vertical_Panels=Εναλλαγή της διάταξης του κύριου και των πλευρικών πάνελ του Firebug.
-firebug.menu.Show_Info_Tips=Εμφάνιση συμβουλών εργαλείων και πληροφοριών
-firebug.menu.tip.Show_Info_Tips=Εμφάνιση αναδυόμενων με πληροφορίες για τα αντικείμενα που περνάτε από πάνω με το ποντικι.
-firebug.Show_Error_Count=Προβολή μετρητή σφαλμάτων
-firebug.menu.tip.Show_Error_Count=Εμφάνιση του αριθμού σφαλμάτων που έχουν καταγραφεί στην κονσόλα.
-firebug.TextSize=Μέγεθος κειμένου
-firebug.menu.tip.Text_Size=Αλλαγή του μεγέθους γραμματοσειράς του Firebug.
-firebug.IncreaseTextSize=Αύξηση μεγέθους κειμένου
-firebug.menu.tip.Increase_Text_Size=Αύξηση του μεγέθους γραμματοσειράς του Firebug
-firebug.DecreaseTextSize=Μείωση μεγέθους κειμένου
-firebug.menu.tip.Decrease_Text_Size=Μείωση του μεγέθους γραμματοσειράς του Firebug
-firebug.NormalTextSize=Κανονικό μέγεθος κειμένου
-firebug.menu.tip.Normal_Text_Size=Επαναφορά του μεγέθους της γραμματοσειράς του Firebug στην αρχική τιμή.
-firebug.Website=Ιστοσελίδα του Firebug...
-firebug.menu.tip.Website=Άνοιγμα της επίσημης ιστοσελίδας του Firebug.
-firebug.help=Βοήθεια...
-firebug.menu.tip.help=Άνοιγμα της σελίδας με τους δεσμούς για τις σελίδες οδηγιών του Firebug
-firebug.Documentation=Τεκμηρίωση...
-firebug.menu.tip.Documentation=Άνοιγμα της τεκμηρίωσης για το Firebug
-firebug.KeyShortcuts=Συντομεύσεις πληκτρολογίου...
-firebug.menu.tip.Key_Shortcuts=Άνοιγμα της λίστας με τις συντομεύσεις για το πληκτρολόγιο και το ποντίκι που υπάρχουν στο Firebug.
-firebug.Forums=Ομάδα συζητήσεων...
-firebug.menu.tip.Forums=Άνοιγμα της σελίδας με την ομάδα συζήτησης.
-firebug.Issues=Ανιχνευτής προβλημάτων...
-firebug.menu.tip.Issues=Άνοιγμα της σελίδας με την παρακολούθηση προβλημάτων.
-firebug.Donate=Συνεισφορά...
-firebug.menu.tip.Donate=Άνοιγμα της σελίδας για δωρεές.
-firebug.About=Περί...
-firebug.menu.tip.About=Πληροφορίες για το Firebug
-ProfileJavaScript=Προφίλ Javascript
-firebug.menu.tip.Profile_JavaScript=Δημιουργία προφίλ εκτέλεσης JavaScript.
-firebug.Search=Αναζήτηση
-firebug.menu.tip.Search=Εστίαση στο πεδίο αναζήτησης
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Επανάληψη εισαγωγής εντολής
-firebug.shortcut.tip.reenterCommand=Εισαγωγή ξανά της πιο πρόσφατης εντολής στη γραμμή εντολών
-firebug.shortcut.toggleInspecting.label=Εναλλαγή επιθεώρησης
-firebug.shortcut.tip.toggleInspecting=Ενεργοποίηση/απενεργοποίηση του επιθεωρητή.
-firebug.shortcut.toggleQuickInfoBox.label=Εναλλαγή πλαισίου γρήγορων πληροφοριών
-firebug.shortcut.tip.toggleQuickInfoBox=Ενεργοποίηση/απενεργοποίηση εμφάνισης πάνελ πληροφοριών για το τρέχων στοιχείο που επιθεωρείται.
-firebug.shortcut.toggleProfiling.label=Εναλλαγή δημιουργίας προφίλ
-firebug.shortcut.tip.toggleProfiling=Ενεργοποίηση/απενεργοποίηση του προφίλ JavaScript.
-firebug.shortcut.focusCommandLine.label=Εστίαση στη γραμμή εντολών
-firebug.shortcut.tip.focusCommandLine=Άνοιγμα του firebug και εστίαση στη γραμμή εντολών/εναλλαγή του αναδυόμενου γραμμής εντολών.
-firebug.shortcut.focusFirebugSearch.label=Εστίαση στην εύρεση του Firebug
-firebug.shortcut.tip.focusFirebugSearch=Εστίαση στο πεδίο αναζήτησης.
-firebug.shortcut.focusWatchEditor.label=Εστίαση στον επεξεργαστή ελέγχου
-firebug.shortcut.tip.focusWatchEditor=Εναλλαγή στο πάνελ σεναρίων εντολών και εστίαση στο πεδίο εισαγωγής νέας έκφρασης παρακολούθησης.
-firebug.shortcut.focusLocation.label=Εστίαση στην τοποθεσία
-firebug.shortcut.tip.focusLocation=Άνοιγμα του μενού τοποθεσιών
-firebug.shortcut.nextObject.label=Επόμενο αντικείμενο
-firebug.shortcut.tip.nextObject=Επιλογή του επόμενου αντικειμένου της διαδρομής του στοιχείου ενός πάνελ.
-firebug.shortcut.previousObject.label=Προηγούμενο αντικείμενο
-firebug.shortcut.tip.previousObject=Επιλογή του προηγούμενου αντικειμένου της διαδρομής του στοιχείου ενός πάνελ.
-firebug.shortcut.customizeFBKeys.label=Προσαρμογή πλήκτρων του Firebug
-firebug.shortcut.tip.customizeFBKeys=Άνοιγμα του διαλόγου συνδυασμών πλήκτρων του Firebug.
-firebug.shortcut.detachFirebug.label=Άνοιγμα του Firebug σε νέο παράθυρο
-firebug.shortcut.tip.detachFirebug=Απόσπαση του Firebug σε δικό του παράθυρο.
-firebug.shortcut.leftFirebugTab.label=Αλλαγή στο αριστερό πλαίσιο του Firebug
-firebug.shortcut.tip.leftFirebugTab=Εναλλαγή στο πάνελ του Firebug προς τα αριστερά.
-firebug.shortcut.rightFirebugTab.label=Αλλαγή στο δεξί πλαίσιο του Firebug
-firebug.shortcut.tip.rightFirebugTab=Εναλλαγή στο πάνελ του Firebug προς τα δεξιά.
-firebug.shortcut.toggleFirebug.label=Άνοιγμα Firebug
-firebug.shortcut.tip.toggleFirebug=Άνοιγμα/ελαχιστοποίηση του UI του Firebug.
-firebug.shortcut.closeFirebug.label=Απενεργοποίηση του Firebug.
-firebug.shortcut.tip.closeFirebug=Απενεργοποίηση του firebug για την τρέχουσα σελίδα.
-firebug.shortcut.previousFirebugTab.label=Προηγούμενη καρτέλα Firebug
-firebug.shortcut.tip.previousFirebugTab=Εναλλαγή στο προηγούμενο επιλεγμένο πάνελ του Firebug.
-firebug.shortcut.clearConsole.label=Εκκαθάριση κονσόλας
-firebug.shortcut.tip.clearConsole=Αφαίρεση κάθε καταγραφής από την κονσόλα.
-firebug.shortcut.openTraceConsole.label=Άνοιγμα κονσόλας ανίχνευσης
-firebug.shortcut.tip.openTraceConsole=Άνοιγμα της κονσόλας FBTrace.
-firebug.shortcut.navBack.label=Μετάβαση πίσω
-firebug.shortcut.tip.navBack=Εναλλαγή στο προηγούμενο πάνελ ή στοιχείο της λίστας διευθύνσεων από το ιστορικό περιήγησης.
-firebug.shortcut.navForward.label=Μετάβαση μπροστά
-firebug.shortcut.tip.navForward=Εναλλαγή στο επόμενο πάνελ ή στοιχείο της λίστας διευθύνσεων από το ιστορικό περιήγησης.
-firebug.shortcut.increaseTextSize.label=Αύξηση μεγέθους κειμένου
-firebug.shortcut.tip.increaseTextSize=Αύξηση του μεγέθους της γραμματοσειράς που χρησιμοποιεί το Firebug
-firebug.shortcut.decreaseTextSize.label=Μείωση μεγέθους κειμένου
-firebug.shortcut.tip.decreaseTextSize=Μείωση του μεγέθους της γραμματοσειράς που χρησιμοποιεί το Firebug.
-firebug.shortcut.normalTextSize.label=Κανονικό μέγεθος κειμένου
-firebug.shortcut.tip.normalTextSize=Επαναφορά των διαστάσεων της γραμματοσειράς που χρησιμοποιεί το Firebug στην αρχική τιμή τους.
-firebug.shortcut.help.label=Άνοιγμα της βοήθειας.
-firebug.shortcut.tip.help=Άνοιγμα της σελίδας με τις απαντήσεις στις πιο συχνές ερωτήσεις.
-firebug.shortcut.toggleBreakOn.label=Εναλλαγή σημείου διακοπής ...
-firebug.shortcut.tip.toggleBreakOn=Ενεργοποίηση/απενεργοποίηση της διακοπής εκτέλεσης σεναρίων εντολών σε συγκεκριμένα συμβάντα ενός πάνελ.
-firebug.panel_selector=Επιλογέας ταμπλό
-customizeShortcuts=Συνδυασμοί συντομεύσεων Firebug
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=εργαλεία πλαισίων
-a11y.labels.firebug_panels=Πλαίσια Firebug
-a11y.labels.firebug_side_panels=Πλευρικά πλαίσια Firebug
-a11y.labels.firebug_window=Παράθυρο Firebug
-a11y.labels.firebug_status=Κατάσταση Firebug
-a11y.labels.reset=επαναφορά
-a11y.labels.reset_shortcut=επαναφορά συντόμευσης %S
-aria.labels.inactive_panel=ανενεργό πλαίσιο
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=γραμμές καταγραφής
-a11y.labels.call_stack=κλήση στοίβας
-a11y.labels.document_structure=δομή εγγράφου
-a11y.labels.title_panel=%S ταμπλό
-a11y.labels.title_side_panel=%S πλευρικά ταμπλό
-a11y.labels.cached=στη λανθάνουσα
-aria.labels.stack_trace=ίχνος στοίβας
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=γέμισμα
-a11y.layout.border=περίγραμμα
-a11y.layout.margin=περιθώριο
-a11y.layout.position=θέση
-a11y.layout.position_top=τοποθέτηση στην κορυφή
-a11y.layout.position_right=τοποθέτηση δεξιά
-a11y.layout.position_bottom=τοποθέτηση κάτω
-a11y.layout.position_left=τοποθέτηση αριστερά
-a11y.layout.margin_top=γέμισμα κορυφής
-a11y.layout.margin_right=γέμισμα δεξιά
-a11y.layout.margin_bottom=γέμισμα βάσης
-a11y.layout.margin_left=γέμισμα αριστερά
-a11y.layout.border_top=περίγραμμα κορυφής
-a11y.layout.border_right=περίγραμμα δεξιά
-a11y.layout.border_bottom=περίγραμμα βάσης
-a11y.layout.border_left=περίγραμμα αριστερά
-a11y.layout.padding_top=γέμισμα κορυφής
-a11y.layout.padding_right=γέμισμα δεξιά
-a11y.layout.padding_bottom=γέμισμα βάσης
-a11y.layout.padding_left=γέμισμα αριστερά
-a11y.layout.top=πάνω
-a11y.layout.right=δεξιά
-a11y.layout.bottom=κάτω
-a11y.layout.left=αριστερά
-a11y.layout.width=πλάτος
-a11y.layout.height=ύψος
-a11y.layout.size=μέγεθος
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=Διαστάσεις πλαισίου
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=πατήστε enter και μετά tab για αν επεξεργαστείτε τις τιμές ξεχωριστά
-a11y.labels.style_rules=κανόνες στυλ
-aria.labels.inherited_style_rules=κληρονομημένοι κανόνες στυλ
-a11y.labels.computed_styles=υπολογισμένα στυλ
-a11y.labels.dom_properties=ιδιότητες DOM
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=ενσωματωμένος επεξεργαστής
-a11y.labels.value_for_attribute_in_element=τιμή για την ιδιότητα %S του στοιχείου %S
-a11y.labels.attribute_for_element=ιδιότητα για το στοιχείο %S
-a11y.labels.text_contents_for_element=περιεχόμενο κειμένου για το στοιχείο %S
-a11y.labels.defined_in_file=ορισμένο στο %S
-a11y.labels.declarations_for_selector=Ορισμοί στυλ για τον επιλογέα «%S»
-a11y.labels.property_for_selector=ιδιότητα CSS για τον επιλογέα: %S
-a11y.labels.value_property_in_selector=%S τιμή ιδιότητας για τον επιλογέα %S
-a11y.labels.css_selector=Επιλογέας CSS
-a11y.labels.source_code_for_file=πηγαίος κώδικας αρχείου %S
-a11y.labels.press_enter_to_add_new_watch_expression=πατήστε το enter για να προσθέσετε νέα έκφραση παρακολούθησης
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=παρακάμφθηκε
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=έχει σημείο διακοπής υπό συνθήκες
-a11y.updates.has_disabled_break_point=έχει απενεργοποιημένο σημείο διακοπής
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Αναστολή σεναρίου στη γραμμή %S σε %S, αρχείο %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=βρέθηκε αναφορά του «%S» σε %S γραμμές καταγραφής
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=βρέθηκε αναφορά του «%S» στη γραμμή %S του %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=βρέθηκε αναφορά του «%S» στο %S στοιχείο της διαδρομής %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=βρέθηκε αναφορά του «%S» στην ιδιότητα %S=%S του %S στοιχείου στη διαδρομή %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=βρέθηκε αναφορά του «%S» στο περιεχόμενο κειμένου: %S του %S στοιχείου στη διαδρομή %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=βρέθηκε αναφορά του «%S» στον επιλογέα %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=βρέθηκε αναφορά του «%S» στη δήλωση στυλ %S στον επιλογέα %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=βρέθηκε αναφορά του «%S» στην ιδιότητα DOM %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=βρέθηκε αναφορά του «%S» σε %S, %S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=βρέθηκε αναφορά του «%S» στη γραμμή περίληψης net: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=δεν ταιριάζει τίποτα με «%S»
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Θέλετε σίγουρα να επαναφέρετε όλες τις ρυθμίσεις του Firebug στις αρχικές τιμές;
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Οι τρέχουσες αλλαγές στο CSS θα εξαφανιστούν.\\\\nΘέλετε σίγουρα να επεξεργαστείτε τον πηγαίο κώδικα;
-# Console messages
-warning.Console_must_be_enabled=Θα πρέπει να είναι ενεργοποιημένη η κονσόλα
-warning.Command_line_blocked?=Έχει μπλοκαριστεί η γραμμή εντολών;
-warning.dollar_change=Η συνάρτηση της γραμμής εντολών της κονσόλας $() έχει αλλάξει από $=getElementById(id) σε $=querySelector(επιλογέας). Μπορείτε να δοκιμάσετε $("#%S") αντί γι' αυτή.
-message.Reload_to_activate_window_console=Ανανέωση για ενεργοποίηση κονσόλας παραθύρου
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Ανανεώστε τη σελίδα για να δείτε τον πηγαίο κώδικα
-message.The_resource_from_this_URL_is_not_text=Ο πόρος της πηγής δεν είναι κείμενο
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Μετάβαση πίσω στο ταμπλό
-firebug.history.Stay_on_this_panel=Παραμονή σ\' αυτό το ταμπλό
-firebug.history.Go_forward_to_this_panel=Μετάβαση μπροστά στο ταμπλό
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Μετάβαση πίσω
-firebug.history.Go_forward=Μετάβαση μπροστά
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Το ταμπλό σεναρίων εντολών δεν ήταν ενεργό κατά τη φόρτωση της σελίδας
-script.suggestion.inactive_during_page_load2=Κάντε <a>ανανέωση</a> για να δείτε όλες τις πηγές
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Δεν είναι ενεργοποιημένη η Javascript
-script.suggestion.javascript_not_enabled=Δείτε την επιλογή «Ενεργοποίηση Javascript» στην καρτέλα «Περιεχόμενο» των ρυθμίσεων του Firefox
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Ενεργοποίηση Javascript και ανανέωση
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Φιλτραρίστηκαν όλα τα σενάρια εντολών
-script.suggestion.all_scripts_filtered=Δείτε τη ρύθμιση για το φιλτράρισμα σεναρίων εντολών στην εργαλειοθήκη ή την επιλογή «Εμφάνιση πηγών chrome»
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=Δεν μπορεί να γίνει αποσφαλμάτωση σε πόρους του συστήματος.
-script.suggestion.no_system_source_debugging=Το Firebug δεν μπορεί προς το παρόν να χρησιμοποιηθεί για αποσφαλμάτωση πόρων συστήματος. Δείτε το<a>issue 5110</a> για την αιτιολογία.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=Δεν περιέχεται Javascript στη σελίδα
-script.suggestion.no_javascript2=Αν μια ετικέτα <script> έχει ιδιότητα «type», αυτή θα πρέπει να είναι «text/javascript» ή «application/javascript». Επίσης, τα σενάρια εντολών θα πρέπει να είναι σε θέση να αναλυθούν από τον parser (να είναι δηλαδή συντακτικά σωστά).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Η αποσφαλμάτωση είναι ήδη ενεργή
-script.suggestion.debugger_active=Η αποσφαλμάτωση έχει σταματήσει προς το παρόν σε σημείο ελέγχου άλλης σελίδας.
-script.button.Go_to_that_page=Μετάβαση στη σελίδα
-script.warning.debugger_not_activated=Δεν έχει ενεργοποιηθεί αποσφαλμάτωση
-script.suggestion.debugger_not_activated=Δεν έχει ενεργοποιηθεί αποσφαλμάτωση
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Κλείσιμο
-firebug.View=Προβολή
-firebug.Help=Βοήθεια
-firebug.Run=Έναρξη
-firebug.Copy=Αντιγραφή
-firebug.History=Ιστορικό
-firebug.Run_the_entered_command=Εκτέλεση της εισηγμένης εντολής
-firebug.Clear_the_Command_Editor=Εκκαθάριση του επεξεργαστή εντολών
-firebug.Copy_the_script_as_a_bookmarklet=Αντιγραφή του σεναρίου εντολών ως bookmarklet
-firebug.Insert_a_previously_entered_command=Εισαγωγή εντολής που έχει εκτελεστεί στο παρελθόν
-firebug.AlwaysOpenInWindow=Άνοιγμα πάντα σε νέο παράθυρο
-firebug.OpenWith=Άνοιγμα με επεξεργαστή
-firebug.menu.tip.Open_With=Άνοιγμα περιεχομένου με εξωτερικό επεξεργαστή
-firebug.Permissions=Ιστότοποι...
-firebug.Configure_Editors=Ρύθμιση επεξεργαστών
-script.tip.Script_Type=Φίλτρο για τύπο σεναρίου εντολών
-script.tip.Script_Filter_Static=Εμφάνιση μόνο σεναρίων εντολών που φορτώνονται μαζί με τη σελίδα.
-script.tip.Script_Filter_Evals=Εμφάνιση σεναρίων εντολών που φορτώνονται μαζί με τη σελίδα και όσων δημιουργούνται μέσω της eval()
-script.tip.Script_Filter_Events=Εμφάνιση σεναρίων εντολών που φορτώνονται μαζί με τη σελίδα, όσων δημιουργούνται μέσω της eval() και διαχειριστές συμβάντων.
-script.tip.Script_Filter_All=Εμφάνιση όλων των ειδών των σεναρίων εντολών
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Επανεκτέλεση
-script.tip.Rerun=Επανεκτέλεση της στοίβας κλήσεων της τρέχουσας συνάρτησης
-script.Continue=Συνέχεια
-script.tip.Continue=Συνέχιση εκτέλεσης JavaScript.
-script.Step_Over=Μεταπήδηση πάνω
-script.tip.Step_Over=Εκτέλεση της επόμενης εντολής
-script.Step_Into=Μεταπήδηση εντός
-script.tip.Step_Into=Εκτέλεση της επόμενης εντολής και μεταπήδηση σε συνάρτηση.
-script.Step_Out=Μεταπήδηση εκτός
-script.tip.Step_Out=Εκτέλεση του υπόλοιπου σώματος της συνάρτησης και επιστροφή στην καλούσα διεργασία.
-firebug.RunUntil=Εκτέλεση ως αυτή τη γραμμή
-script.tip.Run_Until=Εκτέλεση Javascript έως την ορισμένη γραμμή.
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Επιτήρηση
-firebug.InspectElement=Επιτήρηση αντικειμένου
-firebug.InspectElementWithFirebug=Επιθεώρηση στοιχείου με το Firebug
-firebug.BreakOnErrors=Διακοπή σε λάθη
-firebug.InspectTooltip=Πατήστε σε ένα αντικείμενο για να το επιτηρήσετε
-firebug.EditHTMLTooltip=Επεξεργασία αυτού του HTML
-firebug.Profile=Προφίλ
-firebug.Clear=Εκκαθάριση
-firebug.ClearConsole=Εκκαθάριση κονσόλας
-firebug.ClearTooltip=Εκκαθάριση της κονσόλας
-firebug.All=Όλα
-firebug.Images=Εικόνες
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Ρυθμισμένοι επεξεργαστές Firebug
-editors.Editor=Επεξεργαστής
-editors.Executable=Εκτελέσιμο
-editors.Launch_Arguments=Ορίσματα εκτέλεσης
-editors.Add=Προσθήκη
-editors.Remove=Αφαίρεση
-editors.Change=Αλλαγή
-editors.Move_Up=Μετακίνηση πάνω
-editors.Close=Κλείσιμο
-editors.Browse=Εντοπισμός...
-changeEditor.Editor_Configuration=Ρύθμιση επεξεργαστή
-changeEditor.Name=Όνομα:
-changeEditor.Executable=Εκτελέσιμο:
-changeEditor.CmdLine=Ορίσματα:
-changeEditor.Supplied_arguments=Ορίσματα που περάστηκαν από το Firebug:
-changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> URL του αρχείου (αν το %url δεν υπάρχει, το αρχείο %file θα προστεθεί σαν προεπιλογή)
-changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> Διαδρομή του τοπικού αρχείου (ή του προσωρινού αντίγραφου)
-changeEditor.Line_number=<label class=\'text-link\'>%line</label> Αριθμός γραμμής (αν είναι διαθέσιμος)
-changeEditor.Invalid_Application_Path=Μη έγκυρη διαδρομή εφαρμογής
-changeEditor.Application_does_not_exist=Δεν υπάρχει η ορισμένη εφαρμογή
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Επεξεργασία
-firebug.css.sourceEdit=Επεξεργασία πηγαίου κώδικα
-firebug.css.sourceEdit.tooltip=Επεξεργασία του πηγαίου κώδικα φύλλου στυλ, όπως φορτώθηκε στον περιηγητή, από την περιοχή κειμένου
-firebug.css.liveEdit=Απευθείας επεξεργασία
-firebug.css.liveEdit.tooltip=Επεξεργασία του CSS, όπως εμφανίστηκε στον περιηγητή, από την περιοχή κειμένου
-firebug.EditCSSTooltip=Επεξεργασία αυτού του αρχείου μορφοποίησης
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Δεν απομνημονεύονται ιστότοποι κατά την ιδιωτική περιήγηση
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Εμφάνιση ειδοποιήσεων διακοπής
-firebug.breakpoint.tip.Show_Break_Notifications=Προβολή διαλόγου ειδοποίησης όταν διακοπεί η εκτέλεση JavaScript από από τον debugger ή από «Διακοπή για...».
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=Μπορείτε να ενεργοποιήσετε/απενεργοποιήσετε τις ειδοποιήσεις διακοπής από το <a>μενού καρτελών του ταμπλό</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Κάνοντας κλικ στο κουμπί «Απενεργοποίηση», παρακάμπτεται η «αποσφαλμάτωση» με ένα απενεργοποιημένο σημείο διακοπής.
-firebug.bon.tooltip.disableDebuggerKeyword2=Δημιουργεί ένα απενεργοποιημένο σημείο διακοπής
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(Θα πρέπει να είναι ενεργοποιημένο το ταμπλό σεναρίων εντολών γι\' αυτή την επιλογή)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=Δεν υπάρχουν θυγατρικά αντικείμενα
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=περισσότερα
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Διαπιστώθηκε ατέρμονη αναφορά
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S αποθηκευμένο αντικείμενο;%1$S αποθηκευμένα αντικείμενα
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Ιδιότητες αντικειμένου
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(Χωρίς ολοκληρώσεις)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=Το αντικείμενο URL κατά πάσα πιθανότητα αποσύρθηκε μέσω της μεθόδου revokeObjectURL.
-firebug.failedToPreviewImageURL=Αποτυχία φόρτωσης δεδομένου URL.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Ξεκίνησε η σκιαγράφηση μνήμης
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Προστέθηκαν αντικείμενα κατά τη σκιαγράφηση
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Αποτελέσματα σκιαγράφησης προφίλ μνήμης
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Ολόκληρη συνεδρία
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(χωρίς δεδομένα για παρουσίαση)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(κενό αλφαριθμητικό)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Διαγνώστηκε εγκατάσταση του πρόσθετου Firecookie. Αυτό το πρόσθετο έχει ενσωματωθεί στο Firebug 1.10 και τις μεταγενέστερες εκδόσεις. Για να αποφύγετε τη σύγκρουση θα πρέπει να απεγκαταστήσετε το Firecookie. \n\nΓια την ολοκλήρωση της απεγκατάστασης, απαιτείται επανεκκίνηση.
-cookies.legacy.uninstall=Απεγκατάσταση
-cookies.legacy.uninstall_and_restart=Απεγκατάσταση και επανεκκίνηση
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=API γραμμής εντολών
-console.cmd.help_title_desc=Πατήστε το F1 για να ανοίξετε τις δικτυακές σελίδες βοήθειας του Firebug.
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Επιστρέφει ένα μοναδικό στοιχείο με το δεδομένο αναγνωριστικό (id).
-console.cmd.help.$$=Επιστρέφει ένα πίνακα στοιχείων που ταιριάζουν με τον δεδομένο επιλογέα CSS.
-console.cmd.help.$x=Επιστρέφει ένα πίνακα στοιχείων που ταιριάζουν με τη δεδομένη έκφραση XPath.
-console.cmd.help.dir=Τυπώνει μια διαδραστική λίστα όλων των ιδιοτήτων του αντικειμένου. Η εμφάνιση του είναι η ίδια με την εμφάνιση μέσα στο ταμπλό DOM.
-console.cmd.help.dirxml=Τυπώνει το πηγαίο δέντρο XML ενός στοιχείου HTML ή XML. Η εμφάνιση του είναι ίδια με την εμφάνιση μέσα στο ταμπλό HTML. Μπορείτε να κάνετε κλικ σε οποιοδήποτε κόμβο για να τον επιθεωρήσετε μέσα στο ταμπλό HTML.
-console.cmd.help.cd=Σαν αρχική επιλογή, οι εκφράσεις γραμμής εντολών σχετίζονται με το κορυφαίο παράθυρο στη στοίβα της σελίδας. Η cd() σας επιτρέπει να χρησιμοποιήσετε εναλλακτικά το παράθυρο ενός πλαισίου της σελίδας.
-console.cmd.help.clear=Εκκαθάριση της κονσόλας.
-console.cmd.help.copy=Αντιγράφει τη δεδομένη παράμετρο στο πρόχειρο. Αυτή μπορεί να είναι μια επιστρεφόμενη τιμή συνάρτησης ή αντικειμένου.
-console.cmd.help.inspect=Επιθεωρεί ένα αντικείμενο στο καταλληλότερο ταμπλό, ή στο ταμπλό που ορίζει το δεύτερο, προαιρετικό, όρισμα. Τα επιτρεπόμενα ονόματα ταμπλό για το όρισμα αυτό είναι «html», «stylesheet», «script» και «dom».
-console.cmd.help.keys=Επιστρέφει ένα πίνακα που περιέχει τα ονόματα όλων των ιδιοτήτων του αντικειμένου.
-console.cmd.help.values=Επιστρέφει ένα πίνακα που περιέχει τις τιμές όλων των ιδιοτήτων ενός αντικειμένου.
-console.cmd.help.debug=Προσθέτει ένα σημείο διακοπής στην πρώτη γραμμή μιας συνάρτησης.
-console.cmd.help.undebug=Αφαιρεί το σημείο διακοπής από την πρώτη γραμμή μιας συνάρτησης.
-console.cmd.help.monitor=Ενεργοποιεί την καταγραφή για όλες τις κλήσεις μια συνάρτησης.
-console.cmd.help.unmonitor=Απενεργοποιεί την καταγραφή για όλες τις κλήσεις μιας συνάρτησης.
-console.cmd.help.monitorEvents=Ενεργοποιεί την καταγραφή όλων των συμβάντων που σχετίζονται με ένα αντικείμενο. Το προαιρετικό δεύτερο όρισμα μπορεί να καθορίσει ποια συγκεκριμένα συμβάντα ή τύποι συμβάντων θα καταγραφούν. Οι επιτρεπόμενοι τύποι συμβάντων είναι «composition», «contextmenu», «drag», «focus», «form», «key», «load», «mouse», «mutation», «paint», «scroll», «text», «ui., «xul» και «clipboard».
-console.cmd.help.unmonitorEvents=Απενεργοποιεί την καταγραφή για όλα τα συμβάντα που σχετίζονται με ένα αντικείμενο. Το προαιρετικό δεύτερο όρισμα μπορεί αν καθορίσει συγκεκριμένα συμβάντα ή τύπους συμβάντων για τα οποία θα απενεργοποιηθεί η καταγραφή.
-console.cmd.help.profile=Ενεργοποιεί τη λειτουργία προφίλ JavaScript. Το προαιρετικό δεύτερο όρισμα είναι το κείμενο που θα τυπωθεί στην κεφαλίδα της αναφοράς.
-console.cmd.help.profileEnd=Σταματάει τη λειτουργία προφίλ JavaScript και τυπώνει την αναφορά της.
-console.cmd.help.table=Επιτρέπει την καταγραφή των παρεχόμενων δεδομένων σε μορφή στηλών. Η μέθοδος αυτή δέχεται ένα απαιτούμενο όρισμα που αντιπροσωπεύει δεδομένα στυλ πίνακα (πίνακας με πίνακες ή λίστα αντικειμένων). Το προαιρετικό δεύτερο όρισμα μπορεί να χρησιμοποιηθεί για να καθοριστούν στήλες και/ή ιδιότητες που θα καταγραφούν.
-console.cmd.help.$0=Αντιπροσωπεύει το πιο πρόσφατο στοιχείο που έχει επιλεγεί για επιθεώρηση.
-console.cmd.help.$1=Αντιπροσωπεύει το δεύτερο πιο πρόσφατο στοιχείο που έχει επιλεγεί για επιθεώρηση.
-console.cmd.help.$n=Επιστρέφει ένα από τα 5 τελευταία στοιχεία που έχουν επιλεγεί για επιθεώρηση. Αυτή η μέθοδος δέχεται μια απαιτούμενη παράμετρο, η οποία είναι η θέση του στοιχείου στη λίστα (αρχική θέση θεωρείται η 0)
-console.cmd.help.help=Εμφανίζει βοήθεια για όλες τις διαθέσιμες εντολές
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Δεν υπάρχει διαθέσιμη σελίδα βοήθειας γι' αυτή την εντολή.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Πληκτρολογήστε προσαρμοσμένο επιλογέα ή κάντε δεξί κλικ και επιλέξτε <b>Λήψη στοιχείων που ταιριάζουν</b>.
-css.selector.noSelectionResults=Δεν υπάρχουν στοιχεία που να ταιριάζουν
-css.selector.selectorError=Απέτυχε η επιλογή:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Στοιχεία
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Εμφανίζει στοιχεία που ταιριάζουν με ένα επιλογέα CSS
-css.selector.TryASelector=Δοκιμή επιλογέα...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Ανάκτηση στοιχείων που ταιριάζουν
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Αποτυχία εκτέλεσης του καθορισμένου αλφαριθμητικού επιλογέα
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Χρόνος εκκίνησης φάσεων του εγγράφου και χρόνος που πέρασε, σε σχέση με το χρόνο φόρτωσης:
-perftiming.events.label=Χρονομέτρηση συμβάντων σε σχέση με τη φόρτωση εγγράφου:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Χρονομέτρηση επιδόσεων
-perftiming.details_title_desc=Αναλυτική χρονομέτρηση
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Χρόνος ολοκλήρωσης σύνδεσης με διακομιστή.
-perftiming.connectStart=Χρόνος πριν ξεκινήσει η σύνδεση με το διακομιστή.
-perftiming.domComplete=Χρόνος πριν την ολοκλήρωση διαθεσιμότητας εγγράφου.
-perftiming.domContentLoadedEventEnd=Χρόνος μετά την ολοκλήρωση του συμβάντος DOMContentLoaded.
-perftiming.domContentLoadedEventStart=Χρόνος πριν την εκκίνηση του συμβάντος DOMContentLoaded.
-perftiming.domInteractive=Χρόνος πριν η διαθεσιμότητα οριστεί ως διαδραστική.
-perftiming.domLoading=Χρόνος πριν η διαθεσιμότητα οριστεί ως «φορτώνεται».
-perftiming.domainLookupEnd=Χρόνος μετά την αναζήτηση ονόματος τομέα.
-perftiming.domainLookupStart=Χρόνος πριν την αναζήτηση ονόματος τομέα.
-perftiming.fetchStart=Χρόνος κατά την εκκίνηση λήψης του πόρου.
-perftiming.loadEventEnd=Χρόνος ολοκληρωμένου συμβάντος φόρτωσης.
-perftiming.loadEventStart=Χρόνος πριν την εκκίνηση του συμβάντος φόρτωσης.
-perftiming.navigationStart=Χρόνος μετά την εκκίνηση αποφόρτωσης του προηγούμενου εγγράφου.
-perftiming.redirectCount=Αριθμός ανακατευθύνσεων μετά την τελευταία απευθείας φόρτωση.
-perftiming.redirectEnd=Χρόνος μετά την ολοκλήρωση απόκρισης της τελευταίας ανακατεύθυνσης.
-perftiming.redirectStart=Χρόνος φόρτωσης που ξεκίνησε ανακατεύθυνση.
-perftiming.requestStart=Χρόνος πριν από αίτημα προς διακομιστή.
-perftiming.responseEnd=Χρόνος μετά την ολοκλήρωση απόκρισης ή σύνδεσης.
-perftiming.responseStart=Χρόνος πριν από την έναρξη απόκρισης.
-perftiming.unloadEventEnd=Χρόνος μετά την αποφόρτωση του προηγούμενου εγγράφου.
-perftiming.unloadEventStart=Χρόνος πριν το συμβάν αποφόρτωσης εκκινηθεί.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.n\n
+# %S Title of the associated web page.n\n
+# examples: Firebug - Googlen\n
+WindowTitle=%S - Firebug
+# Panel titlesn\n
+Panel-console=Κονσόλα
+panel.tip.console=Επιτρέπει την παρατήρηση μηνυμάτων της κονσόλας και την εκτέλεση εντολών Javascript.
+Panel-net=Δίκτυο
+panel.tip.net=Επιτρέπει την ανάλυση της κυκλοφορίας στο δίκτυο
+Panel-html=HTML
+panel.tip.html=Επιτρέπει την επιθεώρηση και την επεξεργασία κόμβων DOM.
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Επιτρέπει την επιθεώρηση και την επεξεργασία φύλλων στυλ.
+Panel-script=Σενάριο εντολών
+panel.tip.script=Επιτρέπει την αποσφαλμάτωση JavaScript.
+Panel-dom=DOM
+panel.tip.dom=Επιτρέπει την επιθεώρηση και την επεξεργασία των ιδιοτήτων του DOM.
+Panel-css=Στυλ
+panel.tip.css=Επιτρέπει την επιθεώρηση και την επεξεργασία των κανόνων CSS για τον επιλεγμένο κόμβο DOM.
+Panel-computed=Υπολογισμένο
+panel.tip.computed=Επιτρέπει την επιθεώρηση των υπολογισμένων τιμών CSS για τον επιλεγμένο κόμβο DOM
+Panel-layout=Διάταξη
+panel.tip.layout=Επιτρέπει την επιθεώρηση και την επεξεργασία των δεδομένων απεικόνισης του επιλεγμένου κόμβου DOM.
+Panel-domSide=DOM
+panel.tip.domSide=Επιτρέπει την επιθεώρηση και την επεξεργασία των ιδιοτήτων DOM του επιλεγμένου κόμβου DOM.
+Panel-watches=Παρακολούθηση
+panel.tip.watches=Επιτρέπει την επιθεώρηση μεταβλητών JavaScript που είναι παρούσες στο τρέχων τμήμα της στοίβας και τον ορισμό εκφράσεων παρακολούθησης
+Panel-breakpoints=Σημεία διακοπής
+panel.tip.breakpoints=Επιτρέπει την επεξεργασία των ορισμένων σημείων διακοπής
+Panel-callstack=Στοίβα
+panel.tip.callstack=Επιτρέπει την παρατήρηση της τρέχουσας στοίβας κλήσεων Javascript
+Panel-scopes=Εμβέλειες
+firebug.DetachFirebug=Άνοιγμα του Firebug σε νέο παράθυρο
+firebug.AttachFirebug=Προσκόλληση του Firebug στο παράθυρο του περιηγητή
+# LOCALIZATION NOTE (plural.Total_Firebugs): Semi-colon list of plural forms.n\n
+# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsn\n
+# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.n\n
+# Displays number of pages with Firebug activated.n\n
+pluralRule=1
+# %S number of Firebugs activatedn\n
+# example: 2 Total Firebugsn\n
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in \'list of all panels\'n\n
+# menu (available on Firebug\'s tab bar).n\n
+# Console panel options.n\n
+# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,n\n
+plural.Total_Firebugs2=%1$S συνολικό Firebug;%1$S συνολικά Firebugs
+# message, etc. within a source of a web page.n\n
+# #1 File name, #2 Line numbern\n
+# examples: somePage.htm (line 64)n\n
+startbutton.tip.deactivated=Απενεργοποιημένο
+# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.n\n
+# For example, right clicking on an element in the HTML panel offers an action to inspectn\n
+# clicked element in the DOM panel (tab).n\n
+# #1 Target panel titlen\n
+# examples: Inspect in DOM Tabn\n
+panel.status=%S: %S
+inBrowser=Στον περιηγητή
+minimized=Ελαχιστοποιημένο
+enablement.for_all_pages=για όλες τις σελίδες
+enablement.on=Ενεργοποιημένο
+enablement.off=Απενεργοποιημένο
+enablement.Panel_activation_status=Κατάσταση ενεργοποίησης ταμπλό:
+none=Κλειστό
+Firebug_-_inactive_for_current_website=Firebug - ανενεργό για την τρέχουσα σελίδα
+Activate_Firebug_for_the_current_website=Ενεργοποίηση του Firebug για την τρέχουσα σελίδα
+Minimized=Ελαχιστοποιημένο
+Minimize_Firebug=Ελαχιστοποίηση του Firebug
+On_for_all_web_pages=Ενεργοποίηση για όλες τις σελίδες
+firebug.menu.tip.On_for_all_Web_Sites=Ενεργοποίηση του Firebug σαν αρχική επιλογή για όλες τις ιστοσελίδες
+firebug.menu.Clear_Activation_List=Εκκαθάριση λίστας ενεργοποίησης
+firebug.menu.tip.Clear_Activation_List=Εκκαθάριση της λίστας ιστοσελίδων για τις οποίες είναι ενεργοποιημένο το Firebug
+firebug.menu.Detached=Αποσπασμένο
+firebug.menu.tip.Detached=Απόσπαση του Firebug σε δικό του παράθυρο
+firebug.menu.Top=Κορυφή
+firebug.menu.tip.Top=Στοίχιση του Firebug στην κορυφή του παραθύρου του useragent
+firebug.menu.Bottom=Βάση
+firebug.menu.tip.Bottom=Στοίχιση του Firebug στη βάση του παραθύρου του useragent
+firebug.menu.Left=Αριστερά
+firebug.menu.tip.Left=Στοίχιση του Firebug στα αριστερά του παραθύρου του useragent
+firebug.menu.Right=Δεξιά
+firebug.menu.tip.Right=Στοίχιση του Firebug στα δεξιά του παραθύρου του useragent
+firebug.uiLocation=Θέση UI Firebug
+firebug.menu.tip.UI_Location=Θέση της διασύνδεσης χρήστη του Firebug
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugn\n
+# do not translate.n\n
+firebug_options=Επιλογές Firebug
+# #1 jsdIScript.tagn\n
+# HTML panel context menu items.n\n
+firebug.Show_All_Panels=Εμφάνιση όλων των ταμπλό
+console.option.Show_Command_Line=Εμφάνιση γραμμής εντολών
+console.option.tip.Show_Command_Line=Εστίαση στη γραμμή εντολών / Εμφάνιση του αναδυόμενου γραμμής εντολών.
+# Quick Info Boxn\n
+ShowJavaScriptErrors=Εμφάνιση σφαλμάτων JavaScript
+console.option.tip.Show_JavaScript_Errors=Καταγραφή μηνυμάτων σφάλματος JavaScript στην κονσόλα.
+ShowJavaScriptWarnings=Εμφάνιση προειδοποιήσεων JavaScript
+console.option.tip.Show_JavaScript_Warnings=Καταγραφή μηνυμάτων ειδοποιήσεων JavaScript στην κονσόλα.
+ShowCSSErrors=Εμφάνιση σφαλμάτων CSS
+console.option.tip.Show_CSS_Errors=Καταγραφή μηνυμάτων σφάλματος CSS στην κονσόλα
+ShowXMLHTMLErrors=Προβολή σφαλμάτων XML/HTML
+console.option.tip.Show_XML_HTML_Errors=Καταγραφή σφαλμάτων XML και HTML στην κονσόλα.
+ShowStackTrace=Εμφάνιση ίχνους στοίβας με σφάλματα
+console.option.tip.Show_Stack_Trace=Εμφάνιση πληροφοριών ίχνους στοίβας για τα μηνύματα σφάλματος.
+ShowXMLHttpRequests=Εμφάνιση XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Καταγραφή XMLHttpRequests στην κονσόλα.
+ShowChromeErrors=Εμφάνιση σφαλμάτων Chrome
+console.option.tip.Show_System_Errors=Καταγραφή εσωτερικών μηνυμάτων σφάλματος του προγράμματος και προσθέτων στην κονσόλα.
+ShowChromeMessages=Εμφάνιση μηνυμάτων Chrome
+console.option.tip.Show_System_Messages=Καταγραφή εσωτερικών μηνυμάτων του προγράμματος και προσθέτων στην κονσόλα.
+ShowExternalErrors=Εμφάνιση εξωτερικών σφαλμάτων
+console.option.tip.Show_External_Errors=Καταγραφή μηνυμάτων σφάλματος από εξωτερικές πηγές στην κονσόλα.
+ShowNetworkErrors=Εμφάνιση σφαλμάτων δικτύου
+console.option.tip.Show_Network_Errors=Καταγραφή μηνυμάτων σφάλματος δικτύου στην κονσόλα.
+JavascriptOptionsStrict=Αυστηρές προειδοποιήσεις (ποινή επιδόσεων)
+console.option.tip.Show_Strict_Warnings=Καταγραφή και των αυστηρών προειδοποιήσεων στην κονσόλα
+Command_History=Ιστορικό εντολών
+console.option.Show_Command_Editor=Εμφάνιση επεξεργαστή εντολών
+console.option.tip.Show_Command_Editor=Εναλλαγή στον επεξεργαστή εντολών
+commandLineShowCompleterPopup=Εμφάνιση αναδυόμενου με τη λίστα ολοκλήρωσης
+console.option.tip.Show_Completion_List_Popup=Εμφάνιση του αναδυόμενου για αυτόματη συμπλήρωση εντολών
+Assertion=Αποτυχία δήλωσης
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumen\n
+# button that are used when the HTML panel is currently selected. The button allows stoppingn\n
+# JS execution when DOM of the current page is modified.n\n
+# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
+# editing an existing HTML element attribute.n\n
+Line=%S (γραμμή %S)
+LineAndCol=%S (γραμμή %S, στήλη %S)
+InstanceLine=%S #%S (γραμμή %S)
+StackItem=%S (%S γραμμή %S)
+SystemItem=<Σύστημα>
+# #1 Name of the clicked attribute.n\n
+# examples: Edit Attribute \"onclick\"...n\n
+# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
+# deleting an existing HTML element attribute.n\n
+# #1 Name of the clicked attribute.n\n
+panel.Inspect_In_Panel=Επιθεώρηση στο πάνελ %S
+panel.tip.Inspect_In_Panel=Εναλλαγή στο πάνελ %S για εξέταση του αντικειμένου εκεί
+NoName=(χωρίς όνομα)
+# examples: Delete Attribute \"onclick\"...n\n
+# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.n\n
+# that has been inherited. Used in the Style side panel (under HTML panel).n\n
+jsdIScript=jsdIScript %S
+# examples: Inherited from table.tabViewn\n
+# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.n\n
+# Allows to edit an existing CSS rule property.n\n
+ShowFullText=Εμφάνιση πλήρους κειμένου
+html.option.tip.Show_Full_Text=Να μην περικόπτονται τα περιεχόμενα στοιχείων
+# %S Name of the clicked propertyn\n
+# examples: Edit \"background-color\"...n\n
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.n\n
+ShowWhitespace=Εμφάνιση κενών διαστημάτων
+html.option.tip.Show_Whitespace=Εμφάνιση κενών διαστημάτων μέσα σε κόμβους
+# Allows to disable an existing CSS rule property.n\n
+# %S Name of the clicked propertyn\n
+ShowComments=Εμφάνιση σχολίων
+html.option.tip.Show_Comments=Εμφάνιση κόμβων σχολίων
+# examples: Disable \"background-color\"n\n
+# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.n\n
+# Allows to delete an existing CSS rule property.n\n
+html.option.Show_Entities_As_Symbols=Εμφάνιση οντοτήτων ως συμβόλων
+html.option.tip.Show_Entities_As_Symbols=Εμφάνιση όλων των οντοτήτων XML με τη συμβολική τους αναπαράσταση
+html.option.Show_Entities_As_Names=Εμφάνιση οντοτήτων ως ονομασίες
+html.option.tip.Show_Entities_As_Names=Εμφάνιση όλων των οντοτήτων XML με τα ονόματα τους
+html.option.Show_Entities_As_Unicode=Εμφάνιση οντοτήτων ως Unicode
+html.option.tip.Show_Entities_As_Unicode=Εμφάνιση όλων των οντοτήτων XML με τη Unicode αναπαράσταση τους
+# %S Name of the clicked propertyn\n
+# examples: Delete \"background-color\"n\n
+# Console context menu labels.n\n
+HighlightMutations=Επισήμανση αλλαγών
+html.option.tip.Highlight_Mutations=Επισήμανση αλλαγών μέσα σε κόμβους
+# LOCALIZATION NOTE do not translate, no longer used(?)n\n
+# Breakpoints side paneln\n
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttonsn\n
+ExpandMutations=Ανάπτυξη αλλαγών
+html.option.tip.Expand_Mutations=Επέκταση του δένδρου για να εμφανιστούν κόμβοι που άλλαξαν.
+# within balloon popup dialog. This dialog appears when debugger halts at a breakpoint or atn\n
+# a \'debugger\' keyword.n\n
+# Continue: allows to resume the debuggern\n
+ScrollToMutations=Κύλιση των αλλαγών στην προβολή
+html.option.tip.Scroll_To_Mutations=Κύλιση του δένδρου για να εμφανιστούν αλλαγμένοι κόμβοι.
+# Disable: allows to disable the current \'debugger;\' keyword used in the Javascript source.n\n
+# Script paneln\n
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):n\n
+ShowQuickInfoBox=Εμφάνιση πλαισίου γρήγορων πληροφοριών
+inspect.option.tip.Show_Quick_Info_Box=Εμφάνιση πληροφοριών για το τρέχων επιθεωρούμενο στοιχείο μέσα σε ταμπλό πάνω από τη σελίδα
+# Labels used to describe layout properties a the selected HTML element.n\n
+# Used in the Layout side panel under HMTL panel.n\n
+# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side paneln\n
+ShadeBoxModel=Σκίαση μοντέλου πλαισίων
+inspect.option.tip.Shade_Box_Model=Σκίαση των διαφορετικών τμημάτων του μοντέλου πλαισίων
+ScrollIntoView=Κύλιση στην προβολή
+html.tip.Scroll_Into_View=Κύλιση της σελίδας για να γίνει εμφανές το στοιχείο
+NewAttribute=Νέα ιδιότητα...
+html.tip.New_Attribute=Προσθήκη νέας ιδιότητας στο στοιχείο
+html.Edit_Node=Επεξεργασία του %S...
+html.Node=Κόμβος
+html.tip.Edit_Node=Επεξεργασία του %S με χρήση του πλήρους επεξεργαστή κειμένου
+DeleteElement=Διαγραφή στοιχείου
+html.Delete_Element=Διαγραφή του στοιχείου από το δένδρο
+DeleteNode=Διαγραφή κόμβου
+html.Delete_Node=Διαγραφή του κόμβου από το δένδρο
+# under HTML panel.n\n
+quickInfo=Γρήγορες πληροφορίες
+computedStyle=Υπολογισμένο στυλ
+# Net paneln\n
+# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)n\n
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,n\n
+html.Break_On_Mutate=Διακοπή σε μετάλλαξη
+html.Disable_Break_On_Mutate=Απενεργοποίηση διακοπής σε μετάλλαξη
+html.label.Break_On_Text_Change=Διακοπή σε αλλαγές κειμένου
+html.label.HTML_Breakpoints=Σημεία διακοπής HTML
+html.label.Break_On_Attribute_Change=Διακοπή σε αλλαγές ιδιότητας
+html.tip.Break_On_Attribute_Change=Διακοπή εκτέλεσης JavaScript όταν αλλάξει κάποια ιδιότητα του στοιχείου
+html.label.Break_On_Child_Addition_or_Removal=Διακοπή σε προσθήκη ή αφαίρεση θυγατρικού στοιχείου
+html.tip.Break_On_Child_Addition_or_Removal=Διακοπή εκτέλεσης JavaScript εάν προστεθεί ή αφαιρεθεί ένας θυγατρικός κόμβος στο στοιχείο.
+html.label.Break_On_Element_Removal=Διακοπή σε αφαίρεση στοιχείου
+html.tip.Break_On_Element_Removal=Διακοπή εκτέλεσης JavaScript εάν αφαιρεθεί το στοιχείο.
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,n\n
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):n\n
+# Labels and tooltips for a headers displayed on top of the Net panel.n\n
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.n\n
+html.label.Expand/Contract_All=Ανάπτυξη/σύμπτυξη όλων
+html.tip.Expand/Contract_All=Ανάπτυξη/σύμπτυξη όλων των θυγατρικών αναδρομικά.
+# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s contextn\n
+# menu for breaking on a XHR.n\n
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in then\n
+dom.label.breakOnPropertyChange=Διακοπή σε αλλαγή ιδιότητας
+dom.tip.Break_On_Property_Change=Διακοπή εκτέλεσης JavaScript εάν αλλάξει η προτίμηση.
+# Net panel\'s Headers tab (displayed if you expand a network request). The label is usedn\n
+# for a button that switches the view between \"show raw source code\" and \"pretty formated headern\n
+dom.disableBreakOnPropertyChange=Απενεργοποίηση διακοπής σε αλλαγή ιδιότητας
+dom.label.DOM_Breakpoints=Σημεία διακοπής DOM
+# values\".n\n
+# LOCALIZATION NOTE (net.filter.Media): Label for net panel filter (used on the Net panel toolbar)n\n
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutn\n
+# a network request (displayed when a net panel entry is expanded). The content ofn\n
+EditAttribute=Επεξεργασία ιδιότητας «%S»...
+html.tip.Edit_Attribute=Επεξεργασία της τιμής της ιδιότητας «%S» αυτού του στοιχείου.
+# this tab displays sent data (related to a HTTP send method).n\n
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):n\n
+# Label used in the Net panel for detailed info about a network request (displayedn\n
+# when a net panel entry is expanded)n\n
+DeleteAttribute=Διαγραφή ιδιότητας «%S»
+html.tip.Delete_Attribute=Διαγραφή της ιδιότητας «%S» αυτού του στοιχείου.
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net paneln\n
+# (expand an entry in the panel and select Headers tab).n\n
+# LOCALIZATION NOTE (plural.Limit_Exceeded): Semi-colon list of plural forms.n\n
+InheritedFrom=Κληρονομείται από
+SothinkWarning=Η επέκταση Sothink SWF Catcher δεν επιτρέπει τη σωστή λειτουργία του Firebug.<br><br>Παρακαλούμε δείτε <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">αυτό το τμήμα των συχνών ερωτήσεων του Firebug </a> (αγγλικά) για βοήθεια.
+# A message displayed in the Net panel when some entries must be removed since maximum numbern\n
+# of entries has been reached.n\n
+css.fontFamilyPreview=ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ. 0123456789
+# %S the number of entries removedn\n
+# example: Firebug\'s log limit has been reached. 150 entries not shown.n\n
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitn\n
+css.EmptyStyleSheet=Δεν υπάρχουν κανόνες. Μπορείτε να <a>δημιουργήσετε ένα κανόνα</a>.
+# has been reached. Informing the user what preferencee should be changed to modify the limit.n\n
+# %S Name of a preference.n\n
+# examples: In order to change the limit modify: firebug.extensions.console.logLimitn\n
+css.EmptyElementCSS=Αυτό το στοιχείο δεν έχει κανόνες στυλ. Μπορείτε να <a>δημιουργήσετε ένα κανόνα</a> γι\' αυτό.
+EditStyle=Επεξεργασία στυλ στοιχείου...
+style.tip.Edit_Style=Επεξεργασία του ενσωματωμένου στυλ του στοιχείου.
+AddRule=Προσθήκη κανόνα...
+css.tip.AddRule=Προσθήκη γενικού κανόνα για το στοιχείο
+NewRule=Νέος κανόνας...
+css.tip.New_Rule=Προσθήκη νέου κανόνα
+# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.n\n
+# (result of javascript profiler tool). Represents a verb.n\n
+# LOCALIZATION NOTE (plural.Profile_Time): Semi-colon list of plural forms.n\n
+# Used as a caption for reported profile info (result of javascript profiler tool).n\n
+css.Delete_Rule=Διαγραφή «%S»
+css.tip.Delete_Rule=Διαγραφή του κανόνα «%S» και όλων των ιδιοτήτων του.
+# #1 number of millisecondsn\n
+# #2 number of calls (plural)n\n
+# example: (#1ms, #2 calls)n\n
+css.menu.Edit_Media_Query=Επεξεργασία media query...
+css.menu.tip.Edit_Media_Query=Επεξεργασία του media query που έχει ανατεθεί στον κανόνα.
+NewProp=Νέα ιδιότητα...
+css.tip.New_Prop=Προσθήκη νέας ιδιότητας στον τρέχοντα κανόνα.
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headern\n
+# (name of a report column). In order to see this, select the Console panel start profilingn\n
+# by clicking the Profile button and stop it by clicking again. The report is logged into then\n
+# console panel. Make sure Script panel is enabled.n\n
+EditProp=Επεξεργασία «%S»...
+css.tip.Edit_Prop=Επεξεργασία της τιμής της ιδιότητας «%S».
+# Support for clipboard actions.n\n
+# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptn\n
+# panel when clicking a function object.n\n
+# %S Name of the functionn\n
+DisableProp=Απενεργοποίηση «%S»
+css.tip.Disable_Prop=Απενεργοποίηση της ιδιότητας «%S».
+# Log Calls to \"getData\"n\n
+# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): A tooltip used for a button on mainn\n
+# Firebug toolbar. This button allows to open the command line even within other panels.n\n
+# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console paneln\n
+DeleteProp=Διαγραφή «%S»
+css.tip.Delete_Prop=Διαγραφή της ιδιότητας «%S»
+# if specific method is not supported.n\n
+BreakOnThisError=Διακοπή σ\' αυτό το σφάλμα
+console.menu.tip.Break_On_This_Error=Διακοπή εκτέλεσης JavaScript μόλις συμβεί αυτό το σφάλμα.
+BreakOnAllErrors=Διακοπή σ\' όλα τα σφάλματα
+console.menu.tip.Break_On_All_Errors=Διακοπή εκτέλεσης JavaScript μόλις συμβεί κάποιο σφάλμα.
+# %S Name of a not supported method.n\n
+# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console paneln\n
+# when a not supported method is used on the command line.n\n
+TrackThrowCatch=Παρακολούθηση Throw/Catch
+script.option.tip.Track_Throw_Catch=Ανίχνευση εξαιρέσεων ακόμα κι όταν εντοπίζονται από μπλοκ ελέγχου/σύλληψης.
+UseLastLineForEvalName=Χρήση της τελευταίας γραμμής πηγαίου κώδικα για ονόματα της eval()
+UseMD5ForEvalName=Χρήση MD5 για ονόματα της eval()
+# %S Name of a not supported method.n\n
+Breakpoints=Σημεία διακοπής
+ErrorBreakpoints=Σφάλμα σημείων διακοπής
+LoggedFunctions=Καταγεγραμμένες συναρτήσεις
+EnableAllBreakpoints=Ενεργοποίηση όλων των σημείων διακοπής
+breakpoints.option.tip.Enable_All_Breakpoints=Ενεργοποίηση όλων των σημείων διακοπής που αναφέρονται.
+DisableAllBreakpoints=Απενεργοποίηση όλων των σημείων διακοπής
+breakpoints.option.tip.Disable_All_Breakpoints=Απενεργοποίηση όλων των σημείων διακοπής που αναφέρονται.
+ClearAllBreakpoints=Αφαίρεση όλων των σημείων διακοπής
+breakpoints.option.tip.Clear_All_Breakpoints=Αφαίρεση όλων των σημείων διακοπής που αναφέρονται.
+ConditionInput=Το σημείο διακοπής θα σταματήσει μόνο αν είναι αληθής η έκφραση:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):n\n
+# Tooltip for the \"Break on... \" button used when the Console panel is selected.n\n
+# Console strings used when JavaScript is not availablen\n
+breakpoints.Remove_Breakpoint=Αφαίρεση σημείου διακοπής
+breakpoints.tip.Remove_Breakpoint=Αφαίρεση του σημείου διακοπής.
+breakpoints.Disable_Breakpoint=Απενεργοποίηση σημείου διακοπής
+breakpoints.tip.Disable_Breakpoint=Απενεργοποίηση του σημείου διακοπής.
+breakpoints.Enable_Breakpoint=Ενεργοποίηση σημείου διακοπής
+breakpoints.tip.Enable_Breakpoint=Ενεργοποίηση του σημείου διακοπής.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,n\n
+# net.sizeinfo.Total_Received):n\n
+# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mousen\n
+# over a Size displayed within the Net panel. \'Total Sent\' and \'Total Received\' info includesn\n
+# even sent and received heades size.n\n
+script.balloon.Continue=Συνέχεια
+script.balloon.Disable=Απενεργοποίηση
+ScriptsFilterStatic=Εμφάνιση στατικών σεναρίων εντολών
+ScriptsFilterEval=Εμφάνιση στατικών και eval σεναρίων εντολών
+ScriptsFilterEvent=Εμφάνιση σεναρίων εντολών στατικών και συμβάντων
+ScriptsFilterAll=Εμφάνιση σεναρίων εντολών στατικών, συμβάντων και eval
+ScriptsFilterStaticShort=στατικό
+ScriptsFilterEvalShort=eval
+ScriptsFilterEventShort=συμβάντα
+ScriptsFilterAllShort=Όλα
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Netn\n
+# panel (inside the Post tab of an expanded request entry). The message informs the user thatn\n
+# posted data reached Firebug\'s size limit and only part of it is displayed in the UI.n\n
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):n\n
+callstack.Expand_All=Ανάπτυξη όλων
+callstack.tip.Expand_All=Ανάπτυξη όλων των συναρτήσεων επιπέδου στοίβας.
+callstack.Collapse_All=Σύμπτυξη όλων
+callstack.tip.Collapse_All=Σύμπτυξη όλων των συναρτήσεων επιπέδου στοίβας.
+# Labels for Net panel\'s options.n\n
+# LOCALIZATION NOTE (net.option.Show_BF_Cache_Responses, net.option.tip.Show_BF_Cache_Responses):n\n
+callstack.Execution_not_stopped=Τα επίπεδα της στοίβας εμφανίζονται μόνο όταν έχει διακοπεί η εκτέλεση του σεναρίου.
+# Net panels\'s option. If set to true, the net panel displays also response coming fromn\n
+# BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCachen\n
+# LOCALIZATION NOTE (plural.Request_Count): Semi-colon list of plural forms.n\n
+# A label used in the Net panel. Displays number of HTTP requests executed by the current page.n\n
+ShowUserProps=Εμφάνιση ιδιοτήτων ορισμένων από χρήστη
+dom.option.tip.Show_User_Props=Εμφάνιση ιδιοτήτων αντικειμένων ορισμένων από τον χρήστη.
+ShowUserFuncs=Εμφάνιση συναρτήσεων ορισμένων από χρηστή
+dom.option.tip.Show_User_Funcs=Εμφάνιση μεθόδων αντικειμένων ορισμένων από τον χρήστη.
+ShowDOMProps=Εμφάνιση ιδιοτήτων DOM
+dom.option.tip.Show_DOM_Props=Εμφάνιση ιδιοτήτων ορισμένων μέσα στο DOM.
+ShowDOMFuncs=Εμφάνιση συναρτήσεων DOM
+dom.option.tip.Show_DOM_Funcs=Εμφάνιση συναρτήσεων ορισμένων μέσα στο DOM.
+ShowDOMConstants=Εμφάνιση σταθερών DOM
+dom.option.tip.Show_DOM_Constants=Εμφάνιση σταθερών ορισμένων μέσα στο DOM.
+ShowInlineEventHandlers=Προβολή ενσωματωμένων διαχειριστών συμβάντων
+ShowInlineEventHandlersTooltip=Προβολή των διαθέσιμων ενσωματωμένων διαχειριστών συμβάντων που δεν έχουν σχέση με συναρτήσεις.
+ShowOwnProperties=Προβολή μόνο ιδίων ιδιοτήτων
+ShowOwnPropertiesTooltip=Απόκρυψη αλυσίδας πρωτότυπου
+ShowEnumerableProperties=Προβολή μόνο απαριθμημένων ιδιοτήτων
+ShowEnumerablePropertiesTooltip=Απόκρυψη μη απαριθμημένων ιδιοτήτων
+NoMembersWarning=Δεν υπάρχουν ιδιότητες προς εμφάνιση για το αντικείμενο.
+NewWatch=Νέα έκφραση παρακολούθησης...
+# %S number of requestsn\n
+# example: 21 requestsn\n
+AddWatch=Προσθήκη παρακολούθησης
+watch.tip.Add_Watch=Προσθήκη της επιλογής/του αντικειμένου στην πλευρική στήλη παρακολούθησης για παρατήρηση.
+# LOCALIZATION NOTE (plural.Error_Count): Semi-colon list of plural forms.n\n
+# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.n\n
+CopySourceCode=Αντιγραφή πηγαίου κώδικα
+script.tip.Copy_Source_Code=αντιγραφή του επιλεγμένου πηγαίου κώδικα στο πρόχειρο.
+Use_hash_plus_number_to_go_to_line=Χρησιμοποιήστε το #<αριθμός> για να μεταβείτε στην αντίστοιχη γραμμή
+CopyValue=Αντιγραφή τιμής
+dom.tip.Copy_Value=Αντιγραφή της τιμής της ιδιότητας στο πρόχειρο.
+Copy_Name=Αντιγραφή ονόματος
+dom.tip.Copy_Name=αντιγραφή του ονόματος της ιδιότητας στο πρόχειρο.
+Copy_Path=Αντιγραφή διαδρομής
+dom.tip.Copy_Path=Αντιγραφή της διαδρομής της ιδιότητας.
+NewProperty=Νέα ιδιότητα...
+EditProperty=Επεξεργασία ιδιότητας...
+dom.tip.Edit_Property=Επεξεργασία της τιμής της ιδιότητας.
+EditVariable=Επεξεργασία μεταβλητής...
+stack.tip.Edit_Variable=Επεξεργασία της τιμής της μεταβλητής.
+EditWatch=Επεξεργασία παρακολούθησης...
+watch.tip.Edit_Watch=Επεξεργασία της τιμής της έκφρασης παρακολούθησης.
+DeleteProperty=Διαγραφή ιδιότητας
+dom.tip.Delete_Property=Διαγραφή της ιδιότητας.
+DeleteWatch=Διαγραφή παρακολούθησης
+DeleteAllWatches=Διαγραφή όλων των παρακολουθήσεων
+watch.tip.Delete_Watch=Διαγραφή της έκφρασης παρακολούθησης.
+watch.tip.Delete_All_Watches=Διαγραφή όλων των εκφράσεων παρακολούθησης
+# %S number of errorsn\n
+# example: 111 Errorsn\n
+SetBreakpoint=Ορισμός σημείου διακοπής
+script.tip.Set_Breakpoint=Εναλλαγή της ρύθμισης για σημείο διακοπής στην τρέχουσα γραμμή.
+# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.n\n
+# With: the scope inside of the with(obj) {} statementn\n
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };n\n
+EditBreakpointCondition=Επεξεργασία συνθήκης σημείου διακοπής...
+breakpoints.tip.Edit_Breakpoint_Condition=Επεξεργασία της συνθήκης υπό την οποία αυτό το σημείο διακοπής σταματάει την εκτέλεση της JavaScript.
+NoBreakpointsWarning=Δεν έχουν οριστεί σημεία διακοπής στη σελίδα.
+# Window: the scope inside of a Javascript window object.n\n
+# Net panel timing info labelsn\n
+#A11y Chrome Labels (not visible, spoken by screen readers)n\n
+Only_Show_Applied_Styles=Εμφάνιση μόνο εφαρμοσμένων στυλ
+style.option.tip.Only_Show_Applied_Styles=Εμφάνιση μόνο του στυλ που εφαρμόζεται στο στοιχείο.
+#A11y panelNode labels (not visible, spoken by screen readers)n\n
+#A11y Domplate labels (not visible, spoken by screen readers)n\n
+# LOCALIZATION NOTEn\n
+Show_User_Agent_CSS=Εμφάνιση CSS User Agent
+style.option.tip.Show_User_Agent_CSS=Εμφάνιση και του CSS που ορίζεται από την εφαρμογή.
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# Describe contents of inline editor fieldsn\n
+# LOCALIZATION NOTE (a11y.labels.overridden):n\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# indicates style property is overridden by selector with higher specificityn\n
+computed.option.label.Colors_As_Hex=Εμφάνιση χρωμάτων ως δεκαεξαδικών.
+computed.option.tip.Colors_As_Hex=Εμφάνιση χρωμάτων σε δεκαεξαδική μορφή.
+computed.option.label.Colors_As_RGB=Εμφάνιση χρωμάτων ως RGB
+computed.option.tip.Colors_As_RGB=Εμφάνιση χρωμάτων σε μορφή RGB.
+computed.option.label.Colors_As_HSL=Εμφάνιση χρωμάτων ως HSL
+computed.option.tip.Colors_As_HSL=Εμφάνιση χρωμάτων σε μορφή HSL.
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):n\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# Existence and state of a breakpointn\n
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlyn\n
+style.option.label.active=:active
+style.option.tip.active=Εμφάνιση στυλ της ψευδο-κλάσης :active.
+# visible in the UI, intended for screen readers.n\n
+# #1 Line number, #2 Function name, #3 File namen\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+style.option.label.hover=:hover
+style.option.tip.hover=Εμφάνιση στυλ της ψευδο-κλάσης :hover.
+# Describes the match found when performing a console panel search n\n
+# #1 %S String key the use is looking for. #2 number of rows that contain the matched textn\n
+# examples: Match found for \"test\" in 17 log rowsn\n
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlyn\n
+style.option.label.focus=:focus
+style.option.tip.focus=Εμφάνιση στυλ της ψευδο-κλάσης :focus
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a script panel search n\n
+# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found inn\n
+css.label.Inspect_Declaration=Επιθεώρηση δηλώσεων
+css.tip.Inspect_Declaration=Επιθεώρηση της δήλωσης γραμματοσειράς.
+# examples: Match found for \"window.alert\" on line 322 in utilities.jsn\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in an element node) n\n
+Expand_Shorthand_Properties=Ανάπτυξη ιδιοτήτων Shorthand
+css.option.tip.Expand_Shorthand_Properties=Ανάπτυξη συντομευμένων ιδιοτήτων CSS στα πλήρη στοιχεία τους.
+# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementn\n
+# examples: Match found for \"obj\" in object element at /html/body/object[2]n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+Sort_alphabetically=Αλφαβητική ταξινόμηση
+computed.option.tip.Sort_Alphabetically=Ταξινόμηση στυλ ανά όνομα/ομαδοποίηση στυλ ανά κατηγορίες.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node) n\n
+# #1 Search string that was matched. #2 Attribute name #3 attribute value n\n
+# #4 the HTML element name containing. #5 XPATH string specifying the matched elementn\n
+Show_Mozilla_specific_styles=Εμφάνιση στυλ προσαρμοσμένων για Mozilla
+computed.option.tip.Show_Mozilla_Specific_Styles=Εμφάνιση και κανόνων στυλ με το πρόθεμα -moz
+# examples: Match found for \"abindex\" in tabindex=\"0\" in span element at /html/body/span[2]n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+computed.No_User-Defined_Styles=Αυτό το στοιχείο δεν έχει κανόνες στυλ ορισμένους από τον χρήστη.
+script.Type_any_key_to_filter_list=Πληκτρολογήστε οτιδήποτε για να φιλτράρετε τη λίστα
+# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) n\n
+# #1 Search string that was matched. #2 element\'s text content n\n
+# #3 the HTML element name containing. #4 XPATH string specifying the matched elementn\n
+LayoutPadding=γέμισμα
+LayoutBorder=περίγραμμα
+LayoutMargin=περιθώριο
+LayoutPosition=θέση
+LayoutAdjacent=συνεχόμενο
+position=θέση
+# examples: Match found for \"Firebug Rocks!\" in h2 element at /html/body/h2[2]n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a CSS panel search (if it is found in a selector) n\n
+ShowRulers=Εμφάνιση στοιχειοθετών και οδηγών
+layout.option.tip.Show_Rulers=Εμφάνιση χάρακα και οδηγών κατά το πέρασμα πάνω από τμήματα του πλαισίου διάταξης.
+# #1 Search string that was matched. #2 selector in which the match was found n\n
+Loading=Φόρτωση...
+Headers=Κεφαλίδες
+# examples: Match found for \"main\" in #mainContent h2 {n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlyn\n
+net.tip.Clear=Εκκαθάριση της λίστας αιτημάτων
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration) n\n
+net.header.Reset_Header=Επαναφορά κεφαλίδων
+net.header.tip.Reset_Header=Επαναφορά εμφάνισης κεφαλίδας
+# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to n\n
+# examples: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a DOM panel search n\n
+# #1 Search string that was matched. #2 DOM property in which the match was found n\n
+net.header.URL=URL
+net.header.URL_Tooltip=Αιτούμενο URL και μέθοδος HTTP που χρησιμοποιήθηκε.
+net.header.Status=Κατάσταση
+net.header.Status_Tooltip=Κατάσταση ληφθείσας απόκρισης.
+net.header.Domain=Τομέας
+net.header.Domain_Tooltip=Τομέας εκτελεσμένου αιτήματος.
+net.header.Size=Μέγεθος
+net.header.Size_Tooltip=Μέγεθος ληφθείσας απόκρισης.
+net.header.Timeline=Χρονοδιάγραμμα
+net.header.Timeline_Tooltip=Λεπτομερείς πληροφορίες χρόνου ολοκλήρωσης αιτήματος απόκρισης.
+net.header.Local_IP=Τοπική IP
+net.header.Local_IP_Tooltip=Τοπική διεύθυνση IP και αριθμός θύρας που απευθύνεται το αίτημα.
+net.header.Remote_IP=Απομακρυσμένη IP
+net.header.Remote_IP_Tooltip=Απομακρυσμένη διεύθυνση IP και αριθμός θύρας που απευθύνεται το αίτημα.
+net.header.Protocol=Πρωτόκολλο
+net.header.Protocol_Tooltip=Το πρωτόκολλο του URL για τον εντοπισμό του στοιχείου στον ιστό.
+# examples: Match found for \"time\" in _starttime : 1257324992232 (Number)n\n
+net.label.XHR_Breakpoints=Σημεία διακοπής XHR
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+net.label.Break_On_XHR=Διακοπή σε XHR
+net.tip.Break_On_XHR=Διακοπή εκτέλεσης JavaScript αμέσως μόλις παρουσιαστεί XMLHttpRequest.
+# Describes the match found when performing a Net panel search n\n
+# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
+# #3 Column in which the match was found #4. Column value n\n
+net.headers.view_source=εμφάνιση πηγής
+net.headers.pretty_print=pretty print
+# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 msn\n
+net.filter.Media=Πολυμέσα
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
+Post=Post
+Put=Put
+# #1 Search string that was matched. #2 Column value in which the match was found n\n
+# examples: Match found for \"05\" in net summary row: 4.05sn\n
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
+Response=Απόκριση
+URLParameters=Παράμετροι
+Cache=Λανθάνουσα
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Γενικές πληροφορίες
+fontviewer.Meta_Data=Δεδομένα Meta
+fontviewer.view_source=Εμφάνιση πηγής
+fontviewer.Preview=Προεπισκόπηση
+fontviewer.view_characters=Εμφάνιση χαρακτήρων
+fontviewer.pretty_print=Όμορφη εκτύπωση
+fontviewer.view_sample=Εμφάνιση δείγματος
+fontviewer.uniqueid=Μοναδικό ID
+fontviewer.vendor=Κατασκευαστής
+fontviewer.license=Άδεια
+fontviewer.description=Περιγραφή
+fontviewer.copyright=Πνευματικά δικαιώματα
+fontviewer.credits=Μνεία
+fontviewer.trademark=Σήμα κατατεθέν
+fontviewer.licensee=Αδειοδότης
+fontviewer.extension=Επέκταση
+fontviewer.pangram=αβγδεζηθικλμνξοπρστυφχψω
+# visible in the UI, intended for screen readers.n\n
+# Indicates that the searched string was not matched n\n
+jsonviewer.sort=Ταξινόμηση με βάση κλειδιά
+jsonviewer.do_not_sort=Χωρίς ταξινόμηση
+# %S Search string that was matched. n\n
+# examples: No matched found for \"wefkhwefkgwekhjgjh\"n\n
+# Console messages.n\n
+# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
+net.jsonviewer.Copy_JSON=Αντιγραφή του «%S» ως JSON
+# If Firebug is displayed in an external window (detached), but not active for then\n
+# currently selected Firefox tab, the following button label is used for ann\n
+RequestHeaders=Κεφαλίδες αιτήματος
+ResponseHeaders=Κεφαλίδες απόκρισης
+CachedResponseHeaders=Κεφαλίδες απόκρισης από τη λανθάνουσα
+PostRequestHeaders=Αίτηση κεφαλίδων από stream αποστολής
+# activation button.n\n
+# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
+# An error message displayed in the Script panel when a source can\'t be displayedn\n
+net.label.ResponseHeadersFromBFCache=Το αίτημα εξυπηρετήθηκε άμεσα από τη λανθάνουσα οπότε δεν έχουμε την απόκριση του διακομιστή. Δείτε παρακάτω για την απόκριση από τη λανθάνουσα.
+# for specific URL.n\n
+# examples: Failed to load source for: http://www.example.com/script.jsn\n
+# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,n\n
+# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.n\n
+plural.Limit_Exceeded2=Το όριο καταγραφής ιστορικού του Firebug έχει πληρωθεί. Δεν εμφανίζεται %1$S εγγραφή.;Το όριο καταγραφής ιστορικού του Firebug έχει πληρωθεί. Δεν εμφανίζονται %1$S εγγραφές.
+LimitPrefs=Προτιμήσεις
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):n\n
+# Tooltips for back/forward buttons on the Script panel toolbar.n\n
+#firebug.dtdn\n
+#editors.dtdn\n
+LimitPrefsTitle=Για να αλλάξετε το όριο, μετατρέψτε το: %S
+Refresh=Ανανέωση
+panel.tip.Refresh=Ανανέωση της εμφάνισης του πάνελ.
+# If Firebug is displayed in an external window (detached), but not active for then\n
+# currently selected Firefox tab, the following button label is used for ann\n
+OpenInTab=Άνοιγμα σε νέα καρτέλα
+firebug.tip.Open_In_Tab=Άνοιγμα του URL σε νέα καρτέλα του περιηγητή.
+Open_Response_In_New_Tab=Άνοιγμα απόκρισης σε νέα καρτέλα
+net.tip.Open_Response_In_New_Tab=Άνοιγμα της απόκρισης σε νέα καρτέλα του περιηγητή.
+# activation button.n\n
+# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
+Profile=Προφίλ
+ProfilerStarted=Ο διαχειριστής προφίλ εκτελείται. Κάντε ξανά κλικ στο «Προφίλ» για να δείτε την αναφορά του.
+# An error message displayed in the Script panel when a source can\'t be displayedn\n
+# for specific URL.n\n
+# examples: Failed to load source for: http://www.example.com/script.jsn\n
+# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,n\n
+plural.Profile_Time2=(%1$Sms, %2$S κλήση);(%1$Sms, %2$S κλήση)
+NothingToProfile=Δεν υπάρχουν δραστηριότητες για δημιουργία προφίλ.
+PercentTooltip=Ποσοστό χρόνου που δαπανήθηκε για τη συνάρτηση.
+CallsHeaderTooltip=Αριθμός κλήσεων της συνάρτησης.
+OwnTimeHeaderTooltip=Χρόνος που δαπανήθηκε για τη συνάρτηση, εκτός από ενσωματωμένες κλήσεις
+TimeHeaderTooltip=Χρόνος που δαπανήθηκε για τη συνάρτηση, συμπεριλαμβανομένων ενσωματωμένων κλήσεων
+AvgHeaderTooltip=Μέσος χρόνος, συμπεριλαμβανομένων κλήσεων συναρτήσεως
+MinHeaderTooltip=Ελάχιστος χρόνος, συμπεριλαμβανομένων κλήσεων συναρτήσεως
+MaxHeaderTooltip=Μέγιστος χρόνος, συμπεριλαμβανομένων κλήσεων συναρτήσεως
+ProfileButton.Enabled.Tooltip=Δημιουργία προφίλ χρόνου εκτέλεσης JavaScript
+ProfileButton.Disabled.Tooltip=Δημιουργία προφίλ χρόνου εκτέλεσης JavaScript (το ταμπλό σεναρίων εντολών πρέπει να είναι ενεργοποιημένο).
+Function=Συνάρτηση
+Percent=Ποσοστό
+# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.n\n
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):n\n
+# Tooltips for back/forward buttons on the Script panel toolbar.n\n
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):n\n
+Calls=Κλήσεις
+OwnTime=Ίδια ώρα
+Time=Χρόνος
+Avg=Μέσος
+Min=Ελ.
+Max=Μεγ.
+File=Αρχείο
+# This message is displayed within the Script panel if debugger is inactive during page load.n\n
+Copy=Αντιγραφή
+Cut=Αποκοπή
+Remove=Αφαίρεση
+Delete=Διαγραφή
+Paste=Επικόλληση
+SelectAll=Επιλογή όλων
+html.Copy_Node=Αντιγραφή του %S
+html.tip.Copy_Node=Αντιγραφή του κόμβου %S και όλων των περιεχομένων του στο πρόχειρο.
+CopyInnerHTML=Αντιγραφή innerHTML
+html.tip.Copy_innerHTML=Αντιγραφή των περιεχομένων του στοιχείου στο πρόχειρο.
+CopyXPath=Αντιγραφή XPath
+html.tip.Copy_XPath=Αντιγραφή του XPath του στοιχείου στο πρόχειρο.
+Copy_CSS_Path=Αντιγραφή διαδρομής CSS
+html.tip.Copy_CSS_Path=Αντιγραφή της διαδρομής CSS του στοιχείου στο πρόχειρο.
+# The suggestion message represents an advice how to solve the problem.n\n
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):n\n
+CopyLocation=Αντιγραφή τοποθεσίας
+clipboard.tip.Copy_Location=Αντιγραφή του URL της θέσης του αντικειμένου στο πρόχειρο.
+CopyURLParameters=Αντιγραφή παραμέτρων URL
+net.tip.Copy_URL_Parameters=Αντιγραφή παραμέτρων URL στο πρόχειρο.
+CopyPOSTParameters=Αντιγραφή παραμέτρων POST
+net.tip.Copy_POST_Parameters=Αντιγραφή παραμέτρων POST στο πρόχειρο
+CopyLocationParameters=Αντιγραφή τοποθεσίας με παραμέτρους
+net.tip.Copy_Location_Parameters=Αντιγραφή του URL και των παραμέτρων στο πρόχειρο.
+CopyRequestHeaders=Αντιγραφή κεφαλίδων αιτημάτων
+net.tip.Copy_Request_Headers=Αντιγραφή των κεφαλίδων αιτημάτων στο πρόχειρο.
+CopyResponseHeaders=Αντιγραφή κεφαλίδων απόκρισης
+net.tip.Copy_Response_Headers=Αντιγραφή των κεφαλίδων αποκρίσεων στο πρόχειρο.
+CopyResponse=Αντιγραφή σώματος απόκρισης
+net.tip.Copy_Response=Αντιγραφή του σώματος απόκρισης στο πρόχειρο.
+# This message is displayed within the Script panel if javascript is not enabled.n\n
+# The suggestion message represents an advice how to solve the problem.n\n
+CopyError=Αντιγραφή σφάλματος
+console.menu.tip.Copy_Error=Αντιγραφή των πληροφοριών σφάλματος στο πρόχειρο.
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed onn\n
+# the Script panel if Javascript is disabled. This button allows to enable it.n\n
+CopySource=Αντιγραφή συνάρτησης
+dom.tip.Copy_Source=Αντιγραφή του πηγαίου κώδικα της συνάρτησης στο πρόχειρο.
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):n\n
+# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
+# The suggestion message represents an advice how to solve the problem.n\n
+# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):n\n
+# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
+ShowCallsInConsole=Καταγραφή κλήσεων στο «%S»
+dom.tip.Log_Calls_To_Function=Καταγραφή των κλήσεων της συνάρτησης «%S» μέσα στο πάνελ κονσόλας.
+# The suggestion message represents an advice how to solve the problem.n\n
+#firebug.dtdn\n
+#editors.dtdn\n
+ShowEventsInConsole=Καταγραφή συμβάντων
+html.tip.Show_Events_In_Console=Καταγραφή πληροφοριών συμβάντος στην κονσόλα.
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Ενεργοποιημένο
+panel.tip.Enabled=Εναλλαγή ενεργοποίησης πάνελ
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Εμφάνιση αναδυόμενου γραμμής εντολών.
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Η κονσόλα του Firebug δεν υποστηρίζει «%S»
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Η γραμμή εντολών του Firebug δεν υποστηρίζει «%S»
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Τρέχον παράθυρο
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Απενεργοποίηση διακοπής σε όλα τα σφάλματα
+console.Break_On_All_Errors=Διακοπή σε όλα τα σφάλματα
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Διακοπή σ\' αυτό το σφάλμα
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Χρησιμοποιήστε τα πλήκτρα με βέλη, το tab ή το enter.
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=Η JavaScript είναι απενεργοποιημένη από τις επιλογές του Firefox. Αν θέλετε να χρησιμοποιήσετε την κονσόλα, θα πρέπει να ενεργοποιήσετε την επιλογή: «Εργαλεία» -> «Επιλογές» -> «Περιεχόμενο» -> «Ενεργοποίηση JavaScript»
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=Ο πίνακας περιέχει παρά πολλά στοιχεία για να επισημανθούν στη σελίδα (το τρέχον όριο είναι %S).\\\\nΔείτε την επιλογή \\\'extensions.firebug.multiHighlightLimit\\\'.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Η γραμμή εντολών του Firebug είναι απενεργοποιημένη για σελίδες XML. Μπορείτε να <a>γυρίσετε σε HTML</a> για να ενεργοποιηθεί.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Κυρίως σώμα απόκρισης
+net.sizeinfo.Post_Body=Σώμα Post
+net.sizeinfo.Total_Sent=Σύνολο αποσταλθέντων
+net.sizeinfo.Total_Received=Σύνολο ληφθέντων
+net.sizeinfo.Including_HTTP_Headers=Συμπεριλαμβανομένων των κεφαλίδων HTTP
+net.ActivationMessage=Ενεργοποιήθηκε το ταμπλό δικτύου. Δεν θα εμφανιστούν τυχόν αιτήματα δικτύου που παρουσιάστηκαν όσο ήταν απενεργοποιημένο.
+net.responseSizeLimitMessage=Πληρώθηκε το όριο αποκρίσεων του Firebug. Κάντε κλικ <a>εδώ</a> για να ανοίξετε ολόκληρη την απόκριση σε νέα καρτέλα του Firefox.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Πληρώθηκε το όριο σώματος post. Αφαιρέθηκε από το Firebug.
+net.Break_On_XHR=Διακοπή σε XHR
+net.label.Parameters=Παράμετροι
+net.label.Parts=Τμήματα
+net.label.Source=Πηγή
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Επανάληψη αποστολής
+net.tip.Resend=Επανάληψη αποστολής του αιτήματος
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Απενεργοποίηση λανθάνουσας περιηγητή
+net.option.tip.Disable_Browser_Cache=Απενεργοποίηση της λανθάνουσας HTTP του περιηγητή.
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Προβολή συμβάντων Paint
+net.option.tip.Show_Paint_Events=Εμφάνιση συμβάντων MozAfterPaint ως πράσινων γραμμών μέσα στο χρονοδιάγραμμα.
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Προβολή αποκρίσεων BFCache
+net.option.tip.Show_BFCache_Responses=Θα προβάλλονται επίσης και αποκρίσεις λανθάνουσας από τα κουμπιά μετάβασης μπρος-πίσω.
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Διακοπή σε επόμενο
+script.Disable_Break_On_Next=Διακοπή σε Επόμενο
+ShowHttpHeaders=Εμφάνιση κεφαλίδων HTTP
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S αίτημα;%1$S αιτήματα
+FromCache=από τη λανθάνουσα
+StopLoading=Διακοπή φόρτωσης
+net.tip.Stop_Loading=Διακοπή φόρτωσης του αιτήματος.
+LargeData=(Πάρα πολλά δεδομένα)
+ShowComputedStyle=Εμφάνιση υπολογισμένου στυλ
+StyleGroup-text=Κείμενο
+StyleGroup-background=Παρασκήνιο
+StyleGroup-box=Μοντέλο πλαισίων
+StyleGroup-layout=Εμφάνιση
+StyleGroup-other=Άλλα
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Αντιγραφή χρώματος
+css.tip.Copy_Color=Αντιγραφή του χρώματος στο πρόχειρο.
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Αντιγραφή τοποθεσίας εικόνας
+css.tip.Copy_Image_Location=Αντιγραφή του URL της εικόνας στο πρόχειρο
+OpenImageInNewTab=Άνοιγμα εικόνας σε νέα καρτέλα
+css.tip.Open_Image_In_New_Tab=Άνοιγμα της εικόνας σε νέα καρτέλα του περιηγητή.
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Παράλειψη στοίβας εργαλειοθήκης
+callstack.option.tip.Omit_Object_Path_Stack=Να μην εμφανίζεται η στοίβα διαδρομής του αντικειμένου
+Load_Original_Source=Φόρτωση_αρχικού_πηγαίου_κώδικα
+css.tip.Load_Original_Source=Απόρριψη αλλαγών και φόρτωση του αρχικού CSS.
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Αντιγραφή δήλωσης κανόνα
+css.tip.Copy_Rule_Declaration=Αντιγραφή του κανόνα και όλων των ιδιοτήτων του στο πρόχειρο
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Αντιγραφή δήλωσης στυλ
+css.tip.Copy_Style_Declaration=Αντιγραφή των ιδιοτήτων του κανόνα στο πρόχειρο
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S σφάλμα;%1$S σφάλματα
+moduleManager.title=Έχει απενεργοποιηθεί το πλαίσιο %S
+moduleManager.desc3=Χρησιμοποιήστε το εικονίδιο του Firebug στη γραμμή κατάστασης για να ενεργοποιήσετε ή όχι όλα τα ταμπλό. Χρησιμοποιήστε το μικρό μενού της καρτέλας του πλαισίου για τον έλεγχο του κάθε ταμπλό.
+moduleManager.Enable=Ενεργοποίηση
+Suspend_Firebug=Αναστολή Firebug
+Resume_Firebug=Συνέχιση Firebug
+Reset_Panels_To_Disabled=Επαναφορά ταμπλό σε απενεργοποίηση
+Open_Console=Άνοιγμα κονσόλας
+Open_Console_Tooltip=Άνοιγμα κονσόλας ανίχνευσης για το Firebug
+Scope_Chain=Αλυσίδα εμβέλειας
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=Με
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Κλήση
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Παράθυρο
+Logs=Καταγραφές
+Options=Επιλογές
+Copy_Stack=Αντιγραφή στοίβας
+Copy Exception=Αντιγραφή εξαίρεσης
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Μπλοκάρισμα
+requestinfo.Resolving=Αναζήτηση DNS
+requestinfo.Connecting=συνδέεται
+requestinfo.Sending=αποστέλλεται
+requestinfo.Waiting=Αναμονή
+requestinfo.Receiving=Λαμβάνει
+requestinfo.ContentLoad=\'DOMContentLoaded\' (συμβάν)
+requestinfo.WindowLoad=\'load\' (συμβάν)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Χρόνος εκκίνησης αιτήματος από την αρχή
+requestinfo.phases.label=Έναρξη φάσεων και χρόνος ολοκλήρωσης αιτήματος σε σχέση με την εκκίνηση του αιτήματος:
+requestinfo.timings.label=Χρονομέτρηση συμβάντος σε σχέση με την εκκίνηση του αιτήματος:
+search.Firebug_Search=Εύρεση Firebug
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Επόμενο
+search.tip.Next=Αναζήτηση για το επόμενο ταίριασμα.
+search.Previous=Προηγούμενο
+search.tip.Previous=Αναζήτηση για το προηγούμενο ταίριασμα.
+search.Case_Sensitive=αναγκαστικό ταίριασμα χαρακτήρων
+search.tip.Case_Sensitive=Διάκριση πεζών/κεφαλαίων κατά την αναζήτηση.
+search.Case_Insensitive=Χωρίς ταίριασμα πεζών-κεφαλαίων
+search.tip.Case_Insensitive=Αγνόησή πεζών/ κεφαλαίων κατά την αναζήτηση.
+search.Multiple_Files=Πολλαπλά αρχεία
+search.tip.Multiple_Files=Αναζήτηση μέσα σε όλα τα αρχεία που έχουν σχέση με το πάνελ.
+search.Use_Regular_Expression=Χρήση κανονικής έκφρασης
+search.tip.Use_Regular_Expression=Αντιμετώπιση του εισηγμένου αλφαριθμητικού ως κανονικής έκφρασης κατά την αναζήτηση.
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=Επιλογέας CSS
+search.net.Headers=Κεφαλίδες
+search.net.Parameters=Παράμετροι
+search.net.Response_Bodies=Σώματα απόκρισης
+search.net.tip.Response_Bodies=Αναζήτηση και στα σώματα περιεχομένου αποκρίσεων.
+firebug.console.Persist=Εξακολούθηση
+firebug.console.Do_Not_Clear_On_Reload2=Να μην εκκαθαριστεί το πάνελ κατά την ανανέωση της σελίδας
+firebug.console.Show_All_Log_Entries=Εμφάνιση όλων των εγγραφών της καταγραφής
+firebug.console.Errors=Σφάλματα
+firebug.console.Filter_by_Errors=Φιλτράρισμα με βάση τα σφάλματα
+firebug.console.Warnings=Ειδοποιήσεις
+firebug.console.Filter_by_Warnings=Φιλτράρισμα με βάση τις ειδοποιήσεις
+firebug.console.Info=Πληροφορίες
+firebug.console.Filter_by_Info=Φιλτράρισμα με βάση τις πληροφορίες
+firebug.console.Debug_Info=Πληροφορίες αποσφαλμάτωσης
+firebug.console.Filter_by_Debug_Info=Φιλτράρισμα με βάση τις πληροφορίες αποσφαλμάτωσης
+firebug.Deactivate_Firebug=Απενεργοποίηση του Firebug
+firebug.tip.Deactivate_Firebug=Απενεργοποίηση του Firebug για την τρέχουσα σελίδα.
+firebug.ShowFirebug=Άνοιγμα του Firebug
+firebug.menu.tip.Open_Firebug=Εμφάνιση του UI του Firebug
+firebug.HideFirebug=Απόκρυψη Firebug
+firebug.menu.tip.Minimize_Firebug=Ελαχιστοποίηση του Firebug, διατηρώντας το ενεργό.
+firebug.FocusFirebug=Εστίαση στο παράθυρο του Firebug
+firebug.menu.tip.Focus_Firebug=Εστίαση στο αποσπασμένο παράθυρο του Firebug.
+firebug.menu.Enable_All_Panels=Ενεργοποίηση όλων των ταμπλό
+firebug.menu.tip.Enable_All_Panels=Ενεργοποίηση όλων των πάνελ που είναι δυνατό να ενεργοποιηθούν.
+firebug.menu.Disable_All_Panels=Απενεργοποίηση όλων των ταμπλό
+firebug.menu.tip.Disable_All_Panels=Απενεργοποίηση όλων των πάνελ που είναι δυνατόν.
+firebug.menu.Customize_shortcuts=Προσαρμογή συντομεύσεων
+firebug.menu.tip.Customize_Shortcuts=Προσαρμογή των συνδυασμών πλήκτρων που χρησιμοποιεί το Firebug.
+firebug.Options=Επιλογές
+firebug.menu.tip.Options=Γενικές προτιμήσεις του Firebug
+firebug.menu.Enable_Accessibility_Enhancements=Ενεργοποίηση βελτιώσεων προσβασιμότητας
+firebug.menu.tip.Enable_Accessibility_Enhancements=Ενεργοποίηση πλήρους ελέγχου μέσω του πληκτρολογίου και άλλων δυνατοτήτων προσβασιμότητας.
+firebug.menu.Activate_Same_Origin_URLs2=Ενεργοποίηση για URL ίδιας προέλευσης.
+firebug.menu.tip.Activate_Same_Origin_URLs=Ενεργοποίηση του Firebug για URL που ταιριάζουν με την πολιτική ίδιας προέλευσης.
+firebug.menu.Reset_All_Firebug_Options=Επαναφορά όλων των επιλογών του Firebug
+firebug.menu.tip.Reset_All_Firebug_Options=Επαναφορά όλων των προτιμήσεων του Firebug στις αρχικές τους τιμές.
+firebug.menu.Firebug_Online=Το Firebug στο διαδίκτυο
+firebug.menu.tip.Firebug_Online=Ιστοσελίδες σχετικές με το Firebug
+firebug.menu.Extensions=Επεκτάσεις του Firebug...
+firebug.menu.tip.Extensions=Κάντε λήψη και εγκατάσταση επεκτάσεων για το Firebug.
+firebug.menu.Vertical_Panels=Κάθετα πάνελ
+firebug.menu.tip.Vertical_Panels=Εναλλαγή της διάταξης του κύριου και των πλευρικών πάνελ του Firebug.
+firebug.menu.Show_Info_Tips=Εμφάνιση συμβουλών εργαλείων και πληροφοριών
+firebug.menu.tip.Show_Info_Tips=Εμφάνιση αναδυόμενων με πληροφορίες για τα αντικείμενα που περνάτε από πάνω με το ποντικι.
+firebug.Show_Error_Count=Προβολή μετρητή σφαλμάτων
+firebug.menu.tip.Show_Error_Count=Εμφάνιση του αριθμού σφαλμάτων που έχουν καταγραφεί στην κονσόλα.
+firebug.TextSize=Μέγεθος κειμένου
+firebug.menu.tip.Text_Size=Αλλαγή του μεγέθους γραμματοσειράς του Firebug.
+firebug.IncreaseTextSize=Αύξηση μεγέθους κειμένου
+firebug.menu.tip.Increase_Text_Size=Αύξηση του μεγέθους γραμματοσειράς του Firebug
+firebug.DecreaseTextSize=Μείωση μεγέθους κειμένου
+firebug.menu.tip.Decrease_Text_Size=Μείωση του μεγέθους γραμματοσειράς του Firebug
+firebug.NormalTextSize=Κανονικό μέγεθος κειμένου
+firebug.menu.tip.Normal_Text_Size=Επαναφορά του μεγέθους της γραμματοσειράς του Firebug στην αρχική τιμή.
+firebug.Website=Ιστοσελίδα του Firebug...
+firebug.menu.tip.Website=Άνοιγμα της επίσημης ιστοσελίδας του Firebug.
+firebug.help=Βοήθεια...
+firebug.menu.tip.help=Άνοιγμα της σελίδας με τους δεσμούς για τις σελίδες οδηγιών του Firebug
+firebug.Documentation=Τεκμηρίωση...
+firebug.menu.tip.Documentation=Άνοιγμα της τεκμηρίωσης για το Firebug
+firebug.KeyShortcuts=Συντομεύσεις πληκτρολογίου...
+firebug.menu.tip.Key_Shortcuts=Άνοιγμα της λίστας με τις συντομεύσεις για το πληκτρολόγιο και το ποντίκι που υπάρχουν στο Firebug.
+firebug.Forums=Ομάδα συζητήσεων...
+firebug.menu.tip.Forums=Άνοιγμα της σελίδας με την ομάδα συζήτησης.
+firebug.Issues=Ανιχνευτής προβλημάτων...
+firebug.menu.tip.Issues=Άνοιγμα της σελίδας με την παρακολούθηση προβλημάτων.
+firebug.Donate=Συνεισφορά...
+firebug.menu.tip.Donate=Άνοιγμα της σελίδας για δωρεές.
+firebug.About=Περί...
+firebug.menu.tip.About=Πληροφορίες για το Firebug
+ProfileJavaScript=Προφίλ Javascript
+firebug.menu.tip.Profile_JavaScript=Δημιουργία προφίλ εκτέλεσης JavaScript.
+firebug.Search=Αναζήτηση
+firebug.menu.tip.Search=Εστίαση στο πεδίο αναζήτησης
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Επανάληψη εισαγωγής εντολής
+firebug.shortcut.tip.reenterCommand=Εισαγωγή ξανά της πιο πρόσφατης εντολής στη γραμμή εντολών
+firebug.shortcut.toggleInspecting.label=Εναλλαγή επιθεώρησης
+firebug.shortcut.tip.toggleInspecting=Ενεργοποίηση/απενεργοποίηση του επιθεωρητή.
+firebug.shortcut.toggleQuickInfoBox.label=Εναλλαγή πλαισίου γρήγορων πληροφοριών
+firebug.shortcut.tip.toggleQuickInfoBox=Ενεργοποίηση/απενεργοποίηση εμφάνισης πάνελ πληροφοριών για το τρέχων στοιχείο που επιθεωρείται.
+firebug.shortcut.toggleProfiling.label=Εναλλαγή δημιουργίας προφίλ
+firebug.shortcut.tip.toggleProfiling=Ενεργοποίηση/απενεργοποίηση του προφίλ JavaScript.
+firebug.shortcut.focusCommandLine.label=Εστίαση στη γραμμή εντολών
+firebug.shortcut.tip.focusCommandLine=Άνοιγμα του firebug και εστίαση στη γραμμή εντολών/εναλλαγή του αναδυόμενου γραμμής εντολών.
+firebug.shortcut.focusFirebugSearch.label=Εστίαση στην εύρεση του Firebug
+firebug.shortcut.tip.focusFirebugSearch=Εστίαση στο πεδίο αναζήτησης.
+firebug.shortcut.focusWatchEditor.label=Εστίαση στον επεξεργαστή ελέγχου
+firebug.shortcut.tip.focusWatchEditor=Εναλλαγή στο πάνελ σεναρίων εντολών και εστίαση στο πεδίο εισαγωγής νέας έκφρασης παρακολούθησης.
+firebug.shortcut.focusLocation.label=Εστίαση στην τοποθεσία
+firebug.shortcut.tip.focusLocation=Άνοιγμα του μενού τοποθεσιών
+firebug.shortcut.nextObject.label=Επόμενο αντικείμενο
+firebug.shortcut.tip.nextObject=Επιλογή του επόμενου αντικειμένου της διαδρομής του στοιχείου ενός πάνελ.
+firebug.shortcut.previousObject.label=Προηγούμενο αντικείμενο
+firebug.shortcut.tip.previousObject=Επιλογή του προηγούμενου αντικειμένου της διαδρομής του στοιχείου ενός πάνελ.
+firebug.shortcut.customizeFBKeys.label=Προσαρμογή πλήκτρων του Firebug
+firebug.shortcut.tip.customizeFBKeys=Άνοιγμα του διαλόγου συνδυασμών πλήκτρων του Firebug.
+firebug.shortcut.detachFirebug.label=Άνοιγμα του Firebug σε νέο παράθυρο
+firebug.shortcut.tip.detachFirebug=Απόσπαση του Firebug σε δικό του παράθυρο.
+firebug.shortcut.leftFirebugTab.label=Αλλαγή στο αριστερό πλαίσιο του Firebug
+firebug.shortcut.tip.leftFirebugTab=Εναλλαγή στο πάνελ του Firebug προς τα αριστερά.
+firebug.shortcut.rightFirebugTab.label=Αλλαγή στο δεξί πλαίσιο του Firebug
+firebug.shortcut.tip.rightFirebugTab=Εναλλαγή στο πάνελ του Firebug προς τα δεξιά.
+firebug.shortcut.toggleFirebug.label=Άνοιγμα Firebug
+firebug.shortcut.tip.toggleFirebug=Άνοιγμα/ελαχιστοποίηση του UI του Firebug.
+firebug.shortcut.closeFirebug.label=Απενεργοποίηση του Firebug.
+firebug.shortcut.tip.closeFirebug=Απενεργοποίηση του firebug για την τρέχουσα σελίδα.
+firebug.shortcut.previousFirebugTab.label=Προηγούμενη καρτέλα Firebug
+firebug.shortcut.tip.previousFirebugTab=Εναλλαγή στο προηγούμενο επιλεγμένο πάνελ του Firebug.
+firebug.shortcut.clearConsole.label=Εκκαθάριση κονσόλας
+firebug.shortcut.tip.clearConsole=Αφαίρεση κάθε καταγραφής από την κονσόλα.
+firebug.shortcut.openTraceConsole.label=Άνοιγμα κονσόλας ανίχνευσης
+firebug.shortcut.tip.openTraceConsole=Άνοιγμα της κονσόλας FBTrace.
+firebug.shortcut.navBack.label=Μετάβαση πίσω
+firebug.shortcut.tip.navBack=Εναλλαγή στο προηγούμενο πάνελ ή στοιχείο της λίστας διευθύνσεων από το ιστορικό περιήγησης.
+firebug.shortcut.navForward.label=Μετάβαση μπροστά
+firebug.shortcut.tip.navForward=Εναλλαγή στο επόμενο πάνελ ή στοιχείο της λίστας διευθύνσεων από το ιστορικό περιήγησης.
+firebug.shortcut.increaseTextSize.label=Αύξηση μεγέθους κειμένου
+firebug.shortcut.tip.increaseTextSize=Αύξηση του μεγέθους της γραμματοσειράς που χρησιμοποιεί το Firebug
+firebug.shortcut.decreaseTextSize.label=Μείωση μεγέθους κειμένου
+firebug.shortcut.tip.decreaseTextSize=Μείωση του μεγέθους της γραμματοσειράς που χρησιμοποιεί το Firebug.
+firebug.shortcut.normalTextSize.label=Κανονικό μέγεθος κειμένου
+firebug.shortcut.tip.normalTextSize=Επαναφορά των διαστάσεων της γραμματοσειράς που χρησιμοποιεί το Firebug στην αρχική τιμή τους.
+firebug.shortcut.help.label=Άνοιγμα της βοήθειας.
+firebug.shortcut.tip.help=Άνοιγμα της σελίδας με τις απαντήσεις στις πιο συχνές ερωτήσεις.
+firebug.shortcut.toggleBreakOn.label=Εναλλαγή σημείου διακοπής ...
+firebug.shortcut.tip.toggleBreakOn=Ενεργοποίηση/απενεργοποίηση της διακοπής εκτέλεσης σεναρίων εντολών σε συγκεκριμένα συμβάντα ενός πάνελ.
+firebug.panel_selector=Επιλογέας ταμπλό
+customizeShortcuts=Συνδυασμοί συντομεύσεων Firebug
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=εργαλεία πλαισίων
+a11y.labels.firebug_panels=Πλαίσια Firebug
+a11y.labels.firebug_side_panels=Πλευρικά πλαίσια Firebug
+a11y.labels.firebug_window=Παράθυρο Firebug
+a11y.labels.firebug_status=Κατάσταση Firebug
+a11y.labels.reset=επαναφορά
+a11y.labels.reset_shortcut=επαναφορά συντόμευσης %S
+aria.labels.inactive_panel=ανενεργό πλαίσιο
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=γραμμές καταγραφής
+a11y.labels.call_stack=κλήση στοίβας
+a11y.labels.document_structure=δομή εγγράφου
+a11y.labels.title_panel=%S ταμπλό
+a11y.labels.title_side_panel=%S πλευρικά ταμπλό
+a11y.labels.cached=στη λανθάνουσα
+aria.labels.stack_trace=ίχνος στοίβας
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=γέμισμα
+a11y.layout.border=περίγραμμα
+a11y.layout.margin=περιθώριο
+a11y.layout.position=θέση
+a11y.layout.position_top=τοποθέτηση στην κορυφή
+a11y.layout.position_right=τοποθέτηση δεξιά
+a11y.layout.position_bottom=τοποθέτηση κάτω
+a11y.layout.position_left=τοποθέτηση αριστερά
+a11y.layout.margin_top=γέμισμα κορυφής
+a11y.layout.margin_right=γέμισμα δεξιά
+a11y.layout.margin_bottom=γέμισμα βάσης
+a11y.layout.margin_left=γέμισμα αριστερά
+a11y.layout.border_top=περίγραμμα κορυφής
+a11y.layout.border_right=περίγραμμα δεξιά
+a11y.layout.border_bottom=περίγραμμα βάσης
+a11y.layout.border_left=περίγραμμα αριστερά
+a11y.layout.padding_top=γέμισμα κορυφής
+a11y.layout.padding_right=γέμισμα δεξιά
+a11y.layout.padding_bottom=γέμισμα βάσης
+a11y.layout.padding_left=γέμισμα αριστερά
+a11y.layout.top=πάνω
+a11y.layout.right=δεξιά
+a11y.layout.bottom=κάτω
+a11y.layout.left=αριστερά
+a11y.layout.width=πλάτος
+a11y.layout.height=ύψος
+a11y.layout.size=μέγεθος
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=Διαστάσεις πλαισίου
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=πατήστε enter και μετά tab για αν επεξεργαστείτε τις τιμές ξεχωριστά
+a11y.labels.style_rules=κανόνες στυλ
+aria.labels.inherited_style_rules=κληρονομημένοι κανόνες στυλ
+a11y.labels.computed_styles=υπολογισμένα στυλ
+a11y.labels.dom_properties=ιδιότητες DOM
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=ενσωματωμένος επεξεργαστής
+a11y.labels.value_for_attribute_in_element=τιμή για την ιδιότητα %S του στοιχείου %S
+a11y.labels.attribute_for_element=ιδιότητα για το στοιχείο %S
+a11y.labels.text_contents_for_element=περιεχόμενο κειμένου για το στοιχείο %S
+a11y.labels.defined_in_file=ορισμένο στο %S
+a11y.labels.declarations_for_selector=Ορισμοί στυλ για τον επιλογέα «%S»
+a11y.labels.property_for_selector=ιδιότητα CSS για τον επιλογέα: %S
+a11y.labels.value_property_in_selector=%S τιμή ιδιότητας για τον επιλογέα %S
+a11y.labels.css_selector=Επιλογέας CSS
+a11y.labels.source_code_for_file=πηγαίος κώδικας αρχείου %S
+a11y.labels.press_enter_to_add_new_watch_expression=πατήστε το enter για να προσθέσετε νέα έκφραση παρακολούθησης
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=παρακάμφθηκε
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=έχει σημείο διακοπής υπό συνθήκες
+a11y.updates.has_disabled_break_point=έχει απενεργοποιημένο σημείο διακοπής
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Αναστολή σεναρίου στη γραμμή %S σε %S, αρχείο %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=βρέθηκε αναφορά του «%S» σε %S γραμμές καταγραφής
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=βρέθηκε αναφορά του «%S» στη γραμμή %S του %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=βρέθηκε αναφορά του «%S» στο %S στοιχείο της διαδρομής %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=βρέθηκε αναφορά του «%S» στην ιδιότητα %S=%S του %S στοιχείου στη διαδρομή %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=βρέθηκε αναφορά του «%S» στο περιεχόμενο κειμένου: %S του %S στοιχείου στη διαδρομή %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=βρέθηκε αναφορά του «%S» στον επιλογέα %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=βρέθηκε αναφορά του «%S» στη δήλωση στυλ %S στον επιλογέα %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=βρέθηκε αναφορά του «%S» στην ιδιότητα DOM %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=βρέθηκε αναφορά του «%S» σε %S, %S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=βρέθηκε αναφορά του «%S» στη γραμμή περίληψης net: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=δεν ταιριάζει τίποτα με «%S»
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Θέλετε σίγουρα να επαναφέρετε όλες τις ρυθμίσεις του Firebug στις αρχικές τιμές;
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Οι τρέχουσες αλλαγές στο CSS θα εξαφανιστούν.\\\\nΘέλετε σίγουρα να επεξεργαστείτε τον πηγαίο κώδικα;
+# Console messages
+warning.Console_must_be_enabled=Θα πρέπει να είναι ενεργοποιημένη η κονσόλα
+warning.Command_line_blocked?=Έχει μπλοκαριστεί η γραμμή εντολών;
+warning.dollar_change=Η συνάρτηση της γραμμής εντολών της κονσόλας $() έχει αλλάξει από $=getElementById(id) σε $=querySelector(επιλογέας). Μπορείτε να δοκιμάσετε $("#%S") αντί γι' αυτή.
+message.Reload_to_activate_window_console=Ανανέωση για ενεργοποίηση κονσόλας παραθύρου
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Ανανεώστε τη σελίδα για να δείτε τον πηγαίο κώδικα
+message.The_resource_from_this_URL_is_not_text=Ο πόρος της πηγής δεν είναι κείμενο
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Μετάβαση πίσω στο ταμπλό
+firebug.history.Stay_on_this_panel=Παραμονή σ\' αυτό το ταμπλό
+firebug.history.Go_forward_to_this_panel=Μετάβαση μπροστά στο ταμπλό
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Μετάβαση πίσω
+firebug.history.Go_forward=Μετάβαση μπροστά
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Το ταμπλό σεναρίων εντολών δεν ήταν ενεργό κατά τη φόρτωση της σελίδας
+script.suggestion.inactive_during_page_load2=Κάντε <a>ανανέωση</a> για να δείτε όλες τις πηγές
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Δεν είναι ενεργοποιημένη η Javascript
+script.suggestion.javascript_not_enabled=Δείτε την επιλογή «Ενεργοποίηση Javascript» στην καρτέλα «Περιεχόμενο» των ρυθμίσεων του Firefox
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Ενεργοποίηση Javascript και ανανέωση
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Φιλτραρίστηκαν όλα τα σενάρια εντολών
+script.suggestion.all_scripts_filtered=Δείτε τη ρύθμιση για το φιλτράρισμα σεναρίων εντολών στην εργαλειοθήκη ή την επιλογή «Εμφάνιση πηγών chrome»
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=Δεν μπορεί να γίνει αποσφαλμάτωση σε πόρους του συστήματος.
+script.suggestion.no_system_source_debugging=Το Firebug δεν μπορεί προς το παρόν να χρησιμοποιηθεί για αποσφαλμάτωση πόρων συστήματος. Δείτε το<a>issue 5110</a> για την αιτιολογία.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=Δεν περιέχεται Javascript στη σελίδα
+script.suggestion.no_javascript2=Αν μια ετικέτα <script> έχει ιδιότητα «type», αυτή θα πρέπει να είναι «text/javascript» ή «application/javascript». Επίσης, τα σενάρια εντολών θα πρέπει να είναι σε θέση να αναλυθούν από τον parser (να είναι δηλαδή συντακτικά σωστά).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Η αποσφαλμάτωση είναι ήδη ενεργή
+script.suggestion.debugger_active=Η αποσφαλμάτωση έχει σταματήσει προς το παρόν σε σημείο ελέγχου άλλης σελίδας.
+script.button.Go_to_that_page=Μετάβαση στη σελίδα
+script.warning.debugger_not_activated=Δεν έχει ενεργοποιηθεί αποσφαλμάτωση
+script.suggestion.debugger_not_activated=Δεν έχει ενεργοποιηθεί αποσφαλμάτωση
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Κλείσιμο
+firebug.View=Προβολή
+firebug.Help=Βοήθεια
+firebug.Run=Έναρξη
+firebug.Copy=Αντιγραφή
+firebug.History=Ιστορικό
+firebug.Run_the_entered_command=Εκτέλεση της εισηγμένης εντολής
+firebug.Clear_the_Command_Editor=Εκκαθάριση του επεξεργαστή εντολών
+firebug.Copy_the_script_as_a_bookmarklet=Αντιγραφή του σεναρίου εντολών ως bookmarklet
+firebug.Insert_a_previously_entered_command=Εισαγωγή εντολής που έχει εκτελεστεί στο παρελθόν
+firebug.AlwaysOpenInWindow=Άνοιγμα πάντα σε νέο παράθυρο
+firebug.OpenWith=Άνοιγμα με επεξεργαστή
+firebug.menu.tip.Open_With=Άνοιγμα περιεχομένου με εξωτερικό επεξεργαστή
+firebug.Permissions=Ιστότοποι...
+firebug.Configure_Editors=Ρύθμιση επεξεργαστών
+script.tip.Script_Type=Φίλτρο για τύπο σεναρίου εντολών
+script.tip.Script_Filter_Static=Εμφάνιση μόνο σεναρίων εντολών που φορτώνονται μαζί με τη σελίδα.
+script.tip.Script_Filter_Evals=Εμφάνιση σεναρίων εντολών που φορτώνονται μαζί με τη σελίδα και όσων δημιουργούνται μέσω της eval()
+script.tip.Script_Filter_Events=Εμφάνιση σεναρίων εντολών που φορτώνονται μαζί με τη σελίδα, όσων δημιουργούνται μέσω της eval() και διαχειριστές συμβάντων.
+script.tip.Script_Filter_All=Εμφάνιση όλων των ειδών των σεναρίων εντολών
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Επανεκτέλεση
+script.tip.Rerun=Επανεκτέλεση της στοίβας κλήσεων της τρέχουσας συνάρτησης
+script.Continue=Συνέχεια
+script.tip.Continue=Συνέχιση εκτέλεσης JavaScript.
+script.Step_Over=Μεταπήδηση πάνω
+script.tip.Step_Over=Εκτέλεση της επόμενης εντολής
+script.Step_Into=Μεταπήδηση εντός
+script.tip.Step_Into=Εκτέλεση της επόμενης εντολής και μεταπήδηση σε συνάρτηση.
+script.Step_Out=Μεταπήδηση εκτός
+script.tip.Step_Out=Εκτέλεση του υπόλοιπου σώματος της συνάρτησης και επιστροφή στην καλούσα διεργασία.
+firebug.RunUntil=Εκτέλεση ως αυτή τη γραμμή
+script.tip.Run_Until=Εκτέλεση Javascript έως την ορισμένη γραμμή.
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Επιτήρηση
+firebug.InspectElement=Επιτήρηση αντικειμένου
+firebug.InspectElementWithFirebug=Επιθεώρηση στοιχείου με το Firebug
+firebug.BreakOnErrors=Διακοπή σε λάθη
+firebug.InspectTooltip=Πατήστε σε ένα αντικείμενο για να το επιτηρήσετε
+firebug.EditHTMLTooltip=Επεξεργασία αυτού του HTML
+firebug.Profile=Προφίλ
+firebug.Clear=Εκκαθάριση
+firebug.ClearConsole=Εκκαθάριση κονσόλας
+firebug.ClearTooltip=Εκκαθάριση της κονσόλας
+firebug.All=Όλα
+firebug.Images=Εικόνες
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Ρυθμισμένοι επεξεργαστές Firebug
+editors.Editor=Επεξεργαστής
+editors.Executable=Εκτελέσιμο
+editors.Launch_Arguments=Ορίσματα εκτέλεσης
+editors.Add=Προσθήκη
+editors.Remove=Αφαίρεση
+editors.Change=Αλλαγή
+editors.Move_Up=Μετακίνηση πάνω
+editors.Close=Κλείσιμο
+editors.Browse=Εντοπισμός...
+changeEditor.Editor_Configuration=Ρύθμιση επεξεργαστή
+changeEditor.Name=Όνομα:
+changeEditor.Executable=Εκτελέσιμο:
+changeEditor.CmdLine=Ορίσματα:
+changeEditor.Supplied_arguments=Ορίσματα που περάστηκαν από το Firebug:
+changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> URL του αρχείου (αν το %url δεν υπάρχει, το αρχείο %file θα προστεθεί σαν προεπιλογή)
+changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> Διαδρομή του τοπικού αρχείου (ή του προσωρινού αντίγραφου)
+changeEditor.Line_number=<label class=\'text-link\'>%line</label> Αριθμός γραμμής (αν είναι διαθέσιμος)
+changeEditor.Invalid_Application_Path=Μη έγκυρη διαδρομή εφαρμογής
+changeEditor.Application_does_not_exist=Δεν υπάρχει η ορισμένη εφαρμογή
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Επεξεργασία
+firebug.css.sourceEdit=Επεξεργασία πηγαίου κώδικα
+firebug.css.sourceEdit.tooltip=Επεξεργασία του πηγαίου κώδικα φύλλου στυλ, όπως φορτώθηκε στον περιηγητή, από την περιοχή κειμένου
+firebug.css.liveEdit=Απευθείας επεξεργασία
+firebug.css.liveEdit.tooltip=Επεξεργασία του CSS, όπως εμφανίστηκε στον περιηγητή, από την περιοχή κειμένου
+firebug.EditCSSTooltip=Επεξεργασία αυτού του αρχείου μορφοποίησης
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Δεν απομνημονεύονται ιστότοποι κατά την ιδιωτική περιήγηση
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Εμφάνιση ειδοποιήσεων διακοπής
+firebug.breakpoint.tip.Show_Break_Notifications=Προβολή διαλόγου ειδοποίησης όταν διακοπεί η εκτέλεση JavaScript από από τον debugger ή από «Διακοπή για...».
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=Μπορείτε να ενεργοποιήσετε/απενεργοποιήσετε τις ειδοποιήσεις διακοπής από το <a>μενού καρτελών του ταμπλό</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Κάνοντας κλικ στο κουμπί «Απενεργοποίηση», παρακάμπτεται η «αποσφαλμάτωση» με ένα απενεργοποιημένο σημείο διακοπής.
+firebug.bon.tooltip.disableDebuggerKeyword2=Δημιουργεί ένα απενεργοποιημένο σημείο διακοπής
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(Θα πρέπει να είναι ενεργοποιημένο το ταμπλό σεναρίων εντολών γι\' αυτή την επιλογή)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=Δεν υπάρχουν θυγατρικά αντικείμενα
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=περισσότερα
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Διαπιστώθηκε ατέρμονη αναφορά
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S αποθηκευμένο αντικείμενο;%1$S αποθηκευμένα αντικείμενα
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Ιδιότητες αντικειμένου
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(Χωρίς ολοκληρώσεις)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=Το αντικείμενο URL κατά πάσα πιθανότητα αποσύρθηκε μέσω της μεθόδου revokeObjectURL.
+firebug.failedToPreviewImageURL=Αποτυχία φόρτωσης δεδομένου URL.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Ξεκίνησε η σκιαγράφηση μνήμης
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Προστέθηκαν αντικείμενα κατά τη σκιαγράφηση
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Αποτελέσματα σκιαγράφησης προφίλ μνήμης
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Ολόκληρη συνεδρία
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(χωρίς δεδομένα για παρουσίαση)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(κενό αλφαριθμητικό)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Διαγνώστηκε εγκατάσταση του πρόσθετου Firecookie. Αυτό το πρόσθετο έχει ενσωματωθεί στο Firebug 1.10 και τις μεταγενέστερες εκδόσεις. Για να αποφύγετε τη σύγκρουση θα πρέπει να απεγκαταστήσετε το Firecookie. \n\nΓια την ολοκλήρωση της απεγκατάστασης, απαιτείται επανεκκίνηση.
+cookies.legacy.uninstall=Απεγκατάσταση
+cookies.legacy.uninstall_and_restart=Απεγκατάσταση και επανεκκίνηση
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=API γραμμής εντολών
+console.cmd.help_title_desc=Πατήστε το F1 για να ανοίξετε τις δικτυακές σελίδες βοήθειας του Firebug.
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Επιστρέφει ένα μοναδικό στοιχείο με το δεδομένο αναγνωριστικό (id).
+console.cmd.help.$$=Επιστρέφει ένα πίνακα στοιχείων που ταιριάζουν με τον δεδομένο επιλογέα CSS.
+console.cmd.help.$x=Επιστρέφει ένα πίνακα στοιχείων που ταιριάζουν με τη δεδομένη έκφραση XPath.
+console.cmd.help.dir=Τυπώνει μια διαδραστική λίστα όλων των ιδιοτήτων του αντικειμένου. Η εμφάνιση του είναι η ίδια με την εμφάνιση μέσα στο ταμπλό DOM.
+console.cmd.help.dirxml=Τυπώνει το πηγαίο δέντρο XML ενός στοιχείου HTML ή XML. Η εμφάνιση του είναι ίδια με την εμφάνιση μέσα στο ταμπλό HTML. Μπορείτε να κάνετε κλικ σε οποιοδήποτε κόμβο για να τον επιθεωρήσετε μέσα στο ταμπλό HTML.
+console.cmd.help.cd=Σαν αρχική επιλογή, οι εκφράσεις γραμμής εντολών σχετίζονται με το κορυφαίο παράθυρο στη στοίβα της σελίδας. Η cd() σας επιτρέπει να χρησιμοποιήσετε εναλλακτικά το παράθυρο ενός πλαισίου της σελίδας.
+console.cmd.help.clear=Εκκαθάριση της κονσόλας.
+console.cmd.help.copy=Αντιγράφει τη δεδομένη παράμετρο στο πρόχειρο. Αυτή μπορεί να είναι μια επιστρεφόμενη τιμή συνάρτησης ή αντικειμένου.
+console.cmd.help.inspect=Επιθεωρεί ένα αντικείμενο στο καταλληλότερο ταμπλό, ή στο ταμπλό που ορίζει το δεύτερο, προαιρετικό, όρισμα. Τα επιτρεπόμενα ονόματα ταμπλό για το όρισμα αυτό είναι «html», «stylesheet», «script» και «dom».
+console.cmd.help.keys=Επιστρέφει ένα πίνακα που περιέχει τα ονόματα όλων των ιδιοτήτων του αντικειμένου.
+console.cmd.help.values=Επιστρέφει ένα πίνακα που περιέχει τις τιμές όλων των ιδιοτήτων ενός αντικειμένου.
+console.cmd.help.debug=Προσθέτει ένα σημείο διακοπής στην πρώτη γραμμή μιας συνάρτησης.
+console.cmd.help.undebug=Αφαιρεί το σημείο διακοπής από την πρώτη γραμμή μιας συνάρτησης.
+console.cmd.help.monitor=Ενεργοποιεί την καταγραφή για όλες τις κλήσεις μια συνάρτησης.
+console.cmd.help.unmonitor=Απενεργοποιεί την καταγραφή για όλες τις κλήσεις μιας συνάρτησης.
+console.cmd.help.monitorEvents=Ενεργοποιεί την καταγραφή όλων των συμβάντων που σχετίζονται με ένα αντικείμενο. Το προαιρετικό δεύτερο όρισμα μπορεί να καθορίσει ποια συγκεκριμένα συμβάντα ή τύποι συμβάντων θα καταγραφούν. Οι επιτρεπόμενοι τύποι συμβάντων είναι «composition», «contextmenu», «drag», «focus», «form», «key», «load», «mouse», «mutation», «paint», «scroll», «text», «ui., «xul» και «clipboard».
+console.cmd.help.unmonitorEvents=Απενεργοποιεί την καταγραφή για όλα τα συμβάντα που σχετίζονται με ένα αντικείμενο. Το προαιρετικό δεύτερο όρισμα μπορεί αν καθορίσει συγκεκριμένα συμβάντα ή τύπους συμβάντων για τα οποία θα απενεργοποιηθεί η καταγραφή.
+console.cmd.help.profile=Ενεργοποιεί τη λειτουργία προφίλ JavaScript. Το προαιρετικό δεύτερο όρισμα είναι το κείμενο που θα τυπωθεί στην κεφαλίδα της αναφοράς.
+console.cmd.help.profileEnd=Σταματάει τη λειτουργία προφίλ JavaScript και τυπώνει την αναφορά της.
+console.cmd.help.table=Επιτρέπει την καταγραφή των παρεχόμενων δεδομένων σε μορφή στηλών. Η μέθοδος αυτή δέχεται ένα απαιτούμενο όρισμα που αντιπροσωπεύει δεδομένα στυλ πίνακα (πίνακας με πίνακες ή λίστα αντικειμένων). Το προαιρετικό δεύτερο όρισμα μπορεί να χρησιμοποιηθεί για να καθοριστούν στήλες και/ή ιδιότητες που θα καταγραφούν.
+console.cmd.help.$0=Αντιπροσωπεύει το πιο πρόσφατο στοιχείο που έχει επιλεγεί για επιθεώρηση.
+console.cmd.help.$1=Αντιπροσωπεύει το δεύτερο πιο πρόσφατο στοιχείο που έχει επιλεγεί για επιθεώρηση.
+console.cmd.help.$n=Επιστρέφει ένα από τα 5 τελευταία στοιχεία που έχουν επιλεγεί για επιθεώρηση. Αυτή η μέθοδος δέχεται μια απαιτούμενη παράμετρο, η οποία είναι η θέση του στοιχείου στη λίστα (αρχική θέση θεωρείται η 0)
+console.cmd.help.help=Εμφανίζει βοήθεια για όλες τις διαθέσιμες εντολές
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Δεν υπάρχει διαθέσιμη σελίδα βοήθειας γι' αυτή την εντολή.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Πληκτρολογήστε προσαρμοσμένο επιλογέα ή κάντε δεξί κλικ και επιλέξτε <b>Λήψη στοιχείων που ταιριάζουν</b>.
+css.selector.noSelectionResults=Δεν υπάρχουν στοιχεία που να ταιριάζουν
+css.selector.selectorError=Απέτυχε η επιλογή:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Στοιχεία
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Εμφανίζει στοιχεία που ταιριάζουν με ένα επιλογέα CSS
+css.selector.TryASelector=Δοκιμή επιλογέα...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Ανάκτηση στοιχείων που ταιριάζουν
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Αποτυχία εκτέλεσης του καθορισμένου αλφαριθμητικού επιλογέα
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Χρόνος εκκίνησης φάσεων του εγγράφου και χρόνος που πέρασε, σε σχέση με το χρόνο φόρτωσης:
+perftiming.events.label=Χρονομέτρηση συμβάντων σε σχέση με τη φόρτωση εγγράφου:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Χρονομέτρηση επιδόσεων
+perftiming.details_title_desc=Αναλυτική χρονομέτρηση
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Χρόνος ολοκλήρωσης σύνδεσης με διακομιστή.
+perftiming.connectStart=Χρόνος πριν ξεκινήσει η σύνδεση με το διακομιστή.
+perftiming.domComplete=Χρόνος πριν την ολοκλήρωση διαθεσιμότητας εγγράφου.
+perftiming.domContentLoadedEventEnd=Χρόνος μετά την ολοκλήρωση του συμβάντος DOMContentLoaded.
+perftiming.domContentLoadedEventStart=Χρόνος πριν την εκκίνηση του συμβάντος DOMContentLoaded.
+perftiming.domInteractive=Χρόνος πριν η διαθεσιμότητα οριστεί ως διαδραστική.
+perftiming.domLoading=Χρόνος πριν η διαθεσιμότητα οριστεί ως «φορτώνεται».
+perftiming.domainLookupEnd=Χρόνος μετά την αναζήτηση ονόματος τομέα.
+perftiming.domainLookupStart=Χρόνος πριν την αναζήτηση ονόματος τομέα.
+perftiming.fetchStart=Χρόνος κατά την εκκίνηση λήψης του πόρου.
+perftiming.loadEventEnd=Χρόνος ολοκληρωμένου συμβάντος φόρτωσης.
+perftiming.loadEventStart=Χρόνος πριν την εκκίνηση του συμβάντος φόρτωσης.
+perftiming.navigationStart=Χρόνος μετά την εκκίνηση αποφόρτωσης του προηγούμενου εγγράφου.
+perftiming.redirectCount=Αριθμός ανακατευθύνσεων μετά την τελευταία απευθείας φόρτωση.
+perftiming.redirectEnd=Χρόνος μετά την ολοκλήρωση απόκρισης της τελευταίας ανακατεύθυνσης.
+perftiming.redirectStart=Χρόνος φόρτωσης που ξεκίνησε ανακατεύθυνση.
+perftiming.requestStart=Χρόνος πριν από αίτημα προς διακομιστή.
+perftiming.responseEnd=Χρόνος μετά την ολοκλήρωση απόκρισης ή σύνδεσης.
+perftiming.responseStart=Χρόνος πριν από την έναρξη απόκρισης.
+perftiming.unloadEventEnd=Χρόνος μετά την αποφόρτωση του προηγούμενου εγγράφου.
+perftiming.unloadEventStart=Χρόνος πριν το συμβάν αποφόρτωσης εκκινηθεί.
diff --git a/locale/en-US/cookies.properties b/locale/en-US/cookies.properties
index d8cce96..2987121 100644
--- a/locale/en-US/cookies.properties
+++ b/locale/en-US/cookies.properties
@@ -1,277 +1,277 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Session
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Accept Cookies From Sites
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Clear cookies when denying
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cut
-cookies.Copy=Copy
-cookies.CopyAll=Copy All
-cookies.Paste=Paste
-cookies.Delete=Delete
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Edit
-cookies.Accept=Accept
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reset Header
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
-cookies.ExceptionsTitle=Exceptions - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support for Cookie Monitoring
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=Disable Cookies panel for %S
-cookies.Permissions=Enable or Disable Cookies panel
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=System Pages
-cookies.LocalFiles=Local Files
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Do you want to remove all cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remove all cookies in the list.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Create a new cookie for %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Value
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Manage cookie permissions for %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=All cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejected:
-cookies.console.nocookiesreceived=No cookies received
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=deleted
-cookies.console.added=added
-cookies.console.changed=changed
-cookies.console.cleared=cleared
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domain
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Secure
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Value
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Default (Accept session cookies)
-cookies.default.thirdPartySession=Default (Accept session cookies)
-cookies.default.thirdParty=Default (Accept cookies)
-cookies.default.allow=Default (Accept cookies)
-cookies.default.deny=Default (Deny cookies)
-cookies.default.warn=Default (Warn before accepting cookie)
-cookies.default.limitThirdParty=Default (Limit third party cookies)
-cookies.host.session=Accept session cookies from %S
-cookies.host.accept=Accept cookies from %S
-cookies.host.reject=Deny cookies from %S
-cookies.host.limitThirdParty=Limit third party cookies for %S
-
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie name is not valid.
-cookies.edit.invalidhost=Cookie host is not valid.
-cookies.edit.invalidpath=Cookie path is not valid.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly,
-# cookies.header.maxAge):
-# Column labels used in the cookie header.
-cookies.header.name=Name
-cookies.header.value=Value
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domain
-cookies.header.size=Size
-cookies.header.rawSize = Raw Size
-cookies.header.path=Path
-cookies.header.expires=Expires
-cookies.header.security=Security
-cookies.header.httponly=HttpOnly
-cookies.header.maxAge=Max. Age
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip, cookies.header.maxAge.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Name of the cookie
-cookies.header.value.tooltip=Value stored for the cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domain that has stored the cookie
-cookies.header.rawSize.tooltip=Raw size of the stored cookie
-cookies.header.size.tooltip=Size of the stored cookie
-cookies.header.path.tooltip=Directory where the cookie is active
-cookies.header.expires.tooltip=Expiration date for the cookie
-cookies.header.security.tooltip=Shows whether it is a secure cookie or not
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-cookies.header.maxAge.tooltip=Maximum time to store the cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies,
-# cookies.netinfo.deleted.tooltip):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Received Cookies
-cookies.netinfo.Sent_Cookies=Sent Cookies
-cookies.netinfo.deleted.tooltip=Request expired the cookie
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Path Filter
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Export All Cookies
-cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
-cookies.export.Export_For_Site=Export Cookies For This Site
-cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Remove Cookies
-cookies.Create=Create Cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Tools
-cookies.ToolsTooltip=Tools
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Show All Cookies
-cookies.ViewAllTooltip=Open the built-in Cookie Manager
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Web Sites Permissions
-cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filter
-cookies.FilterTooltip=Use given options to filter the cookie list.
-cookies.filter.byPath=Filter Cookies By Current Path
-cookies.filter.byPathTooltip=Show only cookies that match the current path.
-cookies.filter.showRejectedCookies=Show Rejected Cookies
-cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Edit Cookie
-cookies.edit.name.label=Name:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Path:
-cookies.edit.expire.label=Expires:
-cookies.edit.value.label=Value:
-cookies.edit.secure.label=Secure Cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Session
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Accept Cookies From Sites
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Clear cookies when denying
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cut
+cookies.Copy=Copy
+cookies.CopyAll=Copy All
+cookies.Paste=Paste
+cookies.Delete=Delete
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Edit
+cookies.Accept=Accept
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reset Header
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
+cookies.ExceptionsTitle=Exceptions - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support for Cookie Monitoring
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=Disable Cookies panel for %S
+cookies.Permissions=Enable or Disable Cookies panel
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=System Pages
+cookies.LocalFiles=Local Files
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Do you want to remove all cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remove all cookies in the list.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Create a new cookie for %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Value
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Manage cookie permissions for %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=All cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejected:
+cookies.console.nocookiesreceived=No cookies received
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=deleted
+cookies.console.added=added
+cookies.console.changed=changed
+cookies.console.cleared=cleared
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domain
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Secure
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Value
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Default (Accept session cookies)
+cookies.default.thirdPartySession=Default (Accept session cookies)
+cookies.default.thirdParty=Default (Accept cookies)
+cookies.default.allow=Default (Accept cookies)
+cookies.default.deny=Default (Deny cookies)
+cookies.default.warn=Default (Warn before accepting cookie)
+cookies.default.limitThirdParty=Default (Limit third party cookies)
+cookies.host.session=Accept session cookies from %S
+cookies.host.accept=Accept cookies from %S
+cookies.host.reject=Deny cookies from %S
+cookies.host.limitThirdParty=Limit third party cookies for %S
+
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie name is not valid.
+cookies.edit.invalidhost=Cookie host is not valid.
+cookies.edit.invalidpath=Cookie path is not valid.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly,
+# cookies.header.maxAge):
+# Column labels used in the cookie header.
+cookies.header.name=Name
+cookies.header.value=Value
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domain
+cookies.header.size=Size
+cookies.header.rawSize = Raw Size
+cookies.header.path=Path
+cookies.header.expires=Expires
+cookies.header.security=Security
+cookies.header.httponly=HttpOnly
+cookies.header.maxAge=Max. Age
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip, cookies.header.maxAge.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Name of the cookie
+cookies.header.value.tooltip=Value stored for the cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domain that has stored the cookie
+cookies.header.rawSize.tooltip=Raw size of the stored cookie
+cookies.header.size.tooltip=Size of the stored cookie
+cookies.header.path.tooltip=Directory where the cookie is active
+cookies.header.expires.tooltip=Expiration date for the cookie
+cookies.header.security.tooltip=Shows whether it is a secure cookie or not
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+cookies.header.maxAge.tooltip=Maximum time to store the cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies,
+# cookies.netinfo.deleted.tooltip):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Received Cookies
+cookies.netinfo.Sent_Cookies=Sent Cookies
+cookies.netinfo.deleted.tooltip=Request expired the cookie
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Path Filter
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Export All Cookies
+cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
+cookies.export.Export_For_Site=Export Cookies For This Site
+cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Remove Cookies
+cookies.Create=Create Cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Tools
+cookies.ToolsTooltip=Tools
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Show All Cookies
+cookies.ViewAllTooltip=Open the built-in Cookie Manager
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Web Sites Permissions
+cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filter
+cookies.FilterTooltip=Use given options to filter the cookie list.
+cookies.filter.byPath=Filter Cookies By Current Path
+cookies.filter.byPathTooltip=Show only cookies that match the current path.
+cookies.filter.showRejectedCookies=Show Rejected Cookies
+cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Edit Cookie
+cookies.edit.name.label=Name:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Path:
+cookies.edit.expire.label=Expires:
+cookies.edit.value.label=Value:
+cookies.edit.secure.label=Secure Cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/en-US/firebug-amo.properties b/locale/en-US/firebug-amo.properties
index 269024c..8e325c2 100644
--- a/locale/en-US/firebug-amo.properties
+++ b/locale/en-US/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
-firebug.amo.description=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.\n\nVisit the Firebug website for documentation, screen shots, and discussion forums: http://getfirebug.com
-firebug.amo.developer.comments=If you have any problems, please read the FireBug FAQ.\n\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
+firebug.amo.description=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.\n\nVisit the Firebug website for documentation, screen shots, and discussion forums: http://getfirebug.com
+firebug.amo.developer.comments=If you have any problems, please read the FireBug FAQ.\n\nhttp://getfirebug.com/faq.html
diff --git a/locale/en-US/firebug-tracing.properties b/locale/en-US/firebug-tracing.properties
index 3d7b5a7..a1c777a 100644
--- a/locale/en-US/firebug-tracing.properties
+++ b/locale/en-US/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Open Firebug Tracing
-Always_Open_Firebug_Tracing=Always Open Firebug Tracing
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Tracing
-tracing.Show_Scope_Variables=Show Scope Variables
-tracing.Show_Time=Show Time
-tracing.tab.Stack=Stack
-tracing.tab.Exception=Exception
-tracing.tab.Properties=Properties
-tracing.tab.Scope=Scope
-tracing.tab.Response=Response
-tracing.tab.Source=Source
-tracing.tab.Interfaces=Interfaces
-tracing.tab.Object=Object
-tracing.tab.Event=Event
-tracing.cmd.Clear=Clear
-tracing.cmd.tip.Clear=Remove All Messages
-tracing.cmd.Find=Find
-tracing.cmd.tip.Find=Find Text
-tracing.cmd.Bookmark=Bookmark
-tracing.cmd.tip.Bookmark=Insert Bookmark
-tracing.cmd.Restart=Restart Firefox
-tracing.cmd.tip.Restart=Restart Firefox
-tracing.cmd.Exit=Exit Firefox
-tracing.cmd.tip.Exit=Exit Firefox
-tracing.cmd.Save=Save to File
-tracing.cmd.tip.Save=Save logs into a file
-tracing.cmd.Load=Load from File
-tracing.cmd.tip.Load=Load logs from a file
-tracing.cmd.Expand_All=Expand All
-tracing.cmd.Collapse_All=Collapse All
-tracing.cmd.Tools=Tools
-tracing.cmd.tip.Tools=Tools
-tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.Open_Profile_Directory=Open Profile Directory
-tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
-tracing.option.A11Y_Description=Accessibility issues
-tracing.option.ACTIVATION_Description=Firebug activation
-tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
-tracing.option.ANNOTATIONS_Description=Firebug website annotation
-tracing.option.BP_Description=Breakpoints
-tracing.option.CACHE_Description=Source cache
-tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
-tracing.option.COMPILATION_UNITS_Description=Script compilation units
-tracing.option.CONSOLE_Description=Console Panel
-tracing.option.CSS_Description=CSS parsing
-tracing.option.DISPATCH_Description=Event dispatching
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate creation
-tracing.option.EDITOR_Description=Inline Editor & Autocompleter
-tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Internal Firebug errors
-tracing.option.EVAL_Description=Script evaluation
-tracing.option.FBS_BP_Description=Firebug service breakpoints
-tracing.option.FBS_CREATION_Description=Firebug service script creation
-tracing.option.FBS_ERRORS_Description=Firebug service errors
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
-tracing.option.FBS_FUNCTION_Description=Firebug service function
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
-tracing.option.FBS_SRCUNITS_Description=Firebug service source units
-tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
-tracing.option.FUNCTION_NAMES_Description=JavaScript function names
-tracing.option.HISTORY_Description=Firebug Navigation History
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP request observer
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug initialization
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON viewer
-tracing.option.LINETABLE_Description=Script line table
-tracing.option.LOCALE_Description=Localization
-tracing.option.LOCATIONS_Description=Source locations
-tracing.option.NET_Description=Net Panel
-tracing.option.NET_EVENTS_Description=Network events
-tracing.option.OPTIONS_Description=Firebug preferences
-tracing.option.PANELS_Description=Panels
-tracing.option.SHORTCUTS_Description=Keyboard shortcuts
-tracing.option.SOURCEFILES_Description=JavaScript source files
-tracing.option.SPY_Description=XMLHttpRequests observer
-tracing.option.STACK_Description=JavaScript call stack
-tracing.option.STORAGE_Description=Settings storage
-tracing.option.SVGVIEWER_Description=SVG viewer
-tracing.option.FONTS_Description=Fonts information and font viewer
-tracing.option.TOOLTIP_Description=Start Button tooltip
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging user interface
-tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
-tracing.option.XMLVIEWER_Description=XML viewer
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Open Firebug Tracing
+Always_Open_Firebug_Tracing=Always Open Firebug Tracing
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Tracing
+tracing.Show_Scope_Variables=Show Scope Variables
+tracing.Show_Time=Show Time
+tracing.tab.Stack=Stack
+tracing.tab.Exception=Exception
+tracing.tab.Properties=Properties
+tracing.tab.Scope=Scope
+tracing.tab.Response=Response
+tracing.tab.Source=Source
+tracing.tab.Interfaces=Interfaces
+tracing.tab.Object=Object
+tracing.tab.Event=Event
+tracing.cmd.Clear=Clear
+tracing.cmd.tip.Clear=Remove All Messages
+tracing.cmd.Find=Find
+tracing.cmd.tip.Find=Find Text
+tracing.cmd.Bookmark=Bookmark
+tracing.cmd.tip.Bookmark=Insert Bookmark
+tracing.cmd.Restart=Restart Firefox
+tracing.cmd.tip.Restart=Restart Firefox
+tracing.cmd.Exit=Exit Firefox
+tracing.cmd.tip.Exit=Exit Firefox
+tracing.cmd.Save=Save to File
+tracing.cmd.tip.Save=Save logs into a file
+tracing.cmd.Load=Load from File
+tracing.cmd.tip.Load=Load logs from a file
+tracing.cmd.Expand_All=Expand All
+tracing.cmd.Collapse_All=Collapse All
+tracing.cmd.Tools=Tools
+tracing.cmd.tip.Tools=Tools
+tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.Open_Profile_Directory=Open Profile Directory
+tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
+tracing.option.A11Y_Description=Accessibility issues
+tracing.option.ACTIVATION_Description=Firebug activation
+tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
+tracing.option.ANNOTATIONS_Description=Firebug website annotation
+tracing.option.BP_Description=Breakpoints
+tracing.option.CACHE_Description=Source cache
+tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
+tracing.option.COMPILATION_UNITS_Description=Script compilation units
+tracing.option.CONSOLE_Description=Console Panel
+tracing.option.CSS_Description=CSS parsing
+tracing.option.DISPATCH_Description=Event dispatching
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate creation
+tracing.option.EDITOR_Description=Inline Editor & Autocompleter
+tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Internal Firebug errors
+tracing.option.EVAL_Description=Script evaluation
+tracing.option.FBS_BP_Description=Firebug service breakpoints
+tracing.option.FBS_CREATION_Description=Firebug service script creation
+tracing.option.FBS_ERRORS_Description=Firebug service errors
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
+tracing.option.FBS_FUNCTION_Description=Firebug service function
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
+tracing.option.FBS_SRCUNITS_Description=Firebug service source units
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
+tracing.option.FUNCTION_NAMES_Description=JavaScript function names
+tracing.option.HISTORY_Description=Firebug Navigation History
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request observer
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug initialization
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON viewer
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Localization
+tracing.option.LOCATIONS_Description=Source locations
+tracing.option.NET_Description=Net Panel
+tracing.option.NET_EVENTS_Description=Network events
+tracing.option.OPTIONS_Description=Firebug preferences
+tracing.option.PANELS_Description=Panels
+tracing.option.SHORTCUTS_Description=Keyboard shortcuts
+tracing.option.SOURCEFILES_Description=JavaScript source files
+tracing.option.SPY_Description=XMLHttpRequests observer
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Settings storage
+tracing.option.SVGVIEWER_Description=SVG viewer
+tracing.option.FONTS_Description=Fonts information and font viewer
+tracing.option.TOOLTIP_Description=Start Button tooltip
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging user interface
+tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
+tracing.option.XMLVIEWER_Description=XML viewer
diff --git a/locale/en-US/firebug.properties b/locale/en-US/firebug.properties
index 8cb20b7..caf5cb2 100644
--- a/locale/en-US/firebug.properties
+++ b/locale/en-US/firebug.properties
@@ -1,1755 +1,1755 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Console
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Net
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Script
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Style
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Computed
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Layout
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Watch
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Breakpoints
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Stack
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Scopes
-firebug.DetachFirebug=Open Firebug in New Window
-firebug.AttachFirebug=Attach Firebug to Browser Window
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Deactivated
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=In Browser
-minimized=Minimized
-enablement.for_all_pages=for all pages
-enablement.on=On
-enablement.off=Off
-enablement.Panel_activation_status=Panel activation status:
-none=Closed
-Firebug_-_inactive_for_current_website=Firebug - inactive for current website
-Activate_Firebug_for_the_current_website=Activate Firebug for the current website
-Minimized=Minimized
-Minimize_Firebug=Minimize Firebug
-On_for_all_web_pages=On for All Web Pages
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Clear Activation List
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI Location
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-
-# LOCALIZATION NOTE (annotations.confirm.clear):
-# Used in a confirmation dialog when all Firebug annotations are going to be deleted
-annotations.confirm.clear=Do you want to clear the list of Firebug annotations for all websites?
-
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Firebug Options
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Show All Panels
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=Show JavaScript Errors
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Show JavaScript Warnings
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Show CSS Errors
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Show Stack Trace With Errors
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Show XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Show Chrome Errors
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Show Chrome Messages
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowNetworkErrors=Show Network Errors
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Strict Warnings (performance penalty)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Command History
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Show Completion List Popup
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Assertion Failure
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (line %S)
-LineAndCol=%S (line %S, col %S)
-InstanceLine=%S #%S (line %S)
-StackItem=%S (%S line %S)
-SystemItem=<System>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(no name)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Show Full Text
-html.option.tip.Show_Full_Text=Don't crop element contents
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Show Whitespace
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Show Comments
-html.option.tip.Show_Comments=Show comment nodes
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Highlight Changes
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Expand Changes
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Scroll Changes Into View
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Show Quick Info Box
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Shade Box Model
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Scroll Into View
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=New Attribute...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Delete Element
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Delete Node
-html.Delete_Node=Delete the node from the tree
-# Quick Info Box
-quickInfo=Quick Info
-computedStyle=Computed Style
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Break On Mutate
-html.Disable_Break_On_Mutate=Disable Break On Mutate
-html.label.Break_On_Text_Change=Break On Text Change
-html.label.HTML_Breakpoints=HTML Breakpoints
-html.label.Break_On_Attribute_Change=Break On Attribute Change
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Break On Child Addition or Removal
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Break On Element Removal
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Expand/Contract All
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# LOCALIZATION NOTE (dom.scopeName): Used within the DOM panel to name the fake property that
-# contains the innermost closure scope of a function.
-dom.scopeName=(closure)
-# LOCALIZATION NOTE (dom.scopeParentName): Used within the DOM panel to name the fake property
-# that contains the parent of a closure scope.
-dom.scopeParentName=(parent scope)
-# LOCALIZATION NOTE (dom.tip.scopeName): Used within the DOM panel as a tooltip when hovering
-# "(closure)".
-dom.tip.scopeName=Use <func>.%closureVariable to access in the Command Line
-# LOCALIZATION NOTE (dom.tip.scopeMemberName): Used within the DOM panel as a tooltip when
-# hovering a variable in a closure.
-# %S: the variable name - starts with "%"
-dom.tip.scopeMemberName=Use <func>.%S to access in the Command Line
-# LOCALIZATION NOTE (firebug.reps.declarativeScope, firebug.reps.objectScope, firebug.reps.withScope):
-# Labels shown to describe different types of closure scopes.
-firebug.reps.declarativeScope=[declarative scope]
-firebug.reps.objectScope=[object scope]
-firebug.reps.withScope=[with scope]
-# LOCALIZATION NOTE (firebug.reps.optimizedAway): Label shown to denote a closure variable that has
-# been optimized away.
-firebug.reps.optimizedAway=(optimized away)
-# LOCALIZATION NOTE (firebug.reps.element.attribute_value, firebug.reps.element.property_value):
-# Used in the Console panel for elements. If an input element has two different values, one set
-# as "value" attribute and one set as 'value' property, these labels are used to distinguish it.
-firebug.reps.element.attribute_value=attribute value
-firebug.reps.element.property_value=property value
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Break On Property Change
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Disable Break On Property Change
-dom.label.DOM_Breakpoints=DOM Breakpoints
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Edit Attribute "%S"...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Delete Attribute "%S"
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Inherited from
-SothinkWarning=The Sothink SWF Catcher extension is preventing Firebug from working properly.<br/><br/>Please read <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">this item on the Firebug FAQ</a> for help.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
-EditStyle=Edit Element Style...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=New Rule...
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=New Property...
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=Edit "%S"...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=Disable "%S"
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=Delete "%S"
-css.tip.Delete_Prop=Delete the property "%S"
-# Console context menu labels.
-BreakOnThisError=Break on This Error
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Break on All Errors
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Track Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Use Last Source Line for eval() names
-UseMD5ForEvalName=Use MD5 for eval() names
-# Breakpoints side panel
-Breakpoints=Breakpoints
-ErrorBreakpoints=Error Breakpoints
-LoggedFunctions=Logged Functions
-EnableAllBreakpoints=Enable All Breakpoints
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Disable All Breakpoints
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Remove All Breakpoints
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=This breakpoint will stop only if this expression is true:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Remove Breakpoint
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Disable Breakpoint
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Enable Breakpoint
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Continue
-script.balloon.Disable=Disable
-ScriptsFilterStatic=Show static Scripts
-ScriptsFilterEval=Show static and eval Scripts
-ScriptsFilterEvent=Show static and event Scripts
-ScriptsFilterAll=Show static, eval and event Scripts
-ScriptsFilterStaticShort=static
-ScriptsFilterEvalShort=evals
-ScriptsFilterEventShort=events
-ScriptsFilterAllShort=all
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Expand All
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Collapse All
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Show User-defined Properties
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Show User-defined Functions
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Show DOM Properties
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Show DOM Functions
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Show DOM Constants
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowClosures=Show Closures
-dom.option.tip.Show_Closures=Show the closures associated with various functions (activates the debugger)
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers that are not associated with functions
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=There are no properties to show for this object.
-NewWatch=New watch expression...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Add Watch
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Copy Source
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
-CopyValue=Copy Value
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Copy Name
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Copy Path
-dom.tip.Copy_Path=Copy the property path
-NewProperty=New Property...
-EditProperty=Edit Property...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Edit Variable...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Edit Watch...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Delete Property
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Delete Watch
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Set Breakpoint
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Edit Breakpoint Condition...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=There are no breakpoints set in this page.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Only Show Applied Styles
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Show User Agent CSS
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Expand Shorthand Properties
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Sort Alphabetically
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Show Mozilla Specific Styles
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Type any key to filter list
-# LOCALIZATION NOTE (location.inline):
-# Label used within the Location Menu for inline styles or scripts
-location.inline=Inline
-# LOCALIZATION NOTE (location.no_domain):
-# Label used within the Location Menu for the group of scripts,
-# which don't have a domain specified like e.g. eval()'ed scripts
-location.no_domain=No Domain
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=position
-LayoutAdjacent=adjacent
-position=position
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Show Rulers and Guides
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Net panel
-Loading=Loading...
-Headers=Headers
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Reset Header
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=Requested URL and used HTTP method
-net.header.Status=Status
-net.header.Status_Tooltip=Status of the received response
-net.header.Domain=Domain
-net.header.Domain_Tooltip=Domain of the executed request
-net.header.Size=Size
-net.header.Size_Tooltip=Size of the received response (compressed size in case of compressed responses)
-net.header.Timeline=Timeline
-net.header.Timeline_Tooltip=Detailed timing info about request response round trip
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=XHR Breakpoints
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Break On XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=view source
-net.headers.pretty_print=pretty print
-
-# LOCALIZATION NOTE (net.filter.label.All, net.filter.tooltip.All, net.filter.label.HTML,
-# net.filter.tooltip.HTML, net.filter.label.CSS, net.filter.tooltip.CSS, net.filter.label.JS,
-# net.filter.tooltip.JS, net.filter.label.XHR, net.filter.tooltip.XHR, net.filter.label.Images,
-# net.filter.tooltip.Images, net.filter.label.Plugins, net.filter.tooltip.Plugins,
-# net.filter.label.Media, net.filter.tooltip.Media):
-# Labels and tooltips for Net panel filter (used on the Net panel toolbar)
-net.filter.label.All=All
-net.filter.tooltip.All=Show all MIME types
-net.filter.label.HTML=HTML
-net.filter.tooltip.HTML=Show only markup files
-net.filter.label.CSS=CSS
-net.filter.tooltip.CSS=Show only CSS files
-net.filter.label.JS=JavaScript
-net.filter.tooltip.JS=Show only JavaScript files
-net.filter.label.XHR=XHR
-net.filter.tooltip.XHR=Show only XMLHttpRequests
-net.filter.label.Images=Images
-net.filter.tooltip.Images=Show only images
-net.filter.label.Plugins=Plugins
-net.filter.tooltip.Plugins=Show only Flash and Silverlight files
-net.filter.label.Media=Media
-net.filter.tooltip.Media=Show only audios and videos
-net.filter.label.Fonts=Fonts
-net.filter.tooltip.Fonts=Show only fonts
-
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Post
-Put=Put
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Response
-URLParameters=Params
-Cache=Cache
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Sort by key
-jsonviewer.do_not_sort=Do not sort
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Request Headers
-ResponseHeaders=Response Headers
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
-LimitPrefs=Preferences
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=In order to change the limit modify '%S'
-Refresh=Refresh
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Open in New Tab
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Open Response in New Tab
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Profile
-ProfilerStarted=The profiler is running. Click 'Profile' again to see its report.
-ProfilerRequiresTheScriptPanel=The Script panel must be enabled for profiling to work.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
-NothingToProfile=No activity to profile
-PercentTooltip=Percentage of time spent on this function
-CallsHeaderTooltip=Number of times function was called
-OwnTimeHeaderTooltip=Time spent in function excluding nested calls
-TimeHeaderTooltip=Time spent in function including nested calls
-AvgHeaderTooltip=Average time including function calls
-MinHeaderTooltip=Minimum time including function calls
-MaxHeaderTooltip=Maximum time including function calls
-ProfileButton.Tooltip=Profile JavaScript execution time
-Function=Function
-Percent=Percent
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Calls
-OwnTime=Own Time
-Time=Time
-Avg=Avg
-Min=Min
-Max=Max
-File=File
-# Support for standard actions.
-Copy=Copy
-Cut=Cut
-Remove=Remove
-Delete=Delete
-Paste=Paste
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Copy innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Copy XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Copy CSS Path
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (html.menu.Paste, html.tip.Paste): Context menu item (with subitems).
-# Used in the HTML Panel to paste HTML/SVG/XML/XUL/MathML contents
-# %S = the type of the content to paste (HTML, SVG, XML, XUL or MathML)
-html.menu.Paste=Paste %S
-html.tip.Paste=Paste as %S Content
-# LOCALIZATION NODE (html.menu.Paste_*, html.tip.Paste_*): Context menu items.
-# These items are paste options, and appears as subitems of html.menu.Paste in the context menu.
-html.menu.Paste_Replace_Content=Replace Content
-html.tip.Paste_Replace_Content=Replace the content of the node
-html.menu.Paste_Replace_Node=Replace Node
-html.tip.Paste_Replace_Node=Replace the HTML of the node
-html.menu.Paste_AsFirstChild=As First Child
-html.tip.Paste_AsFirstChild=Paste as the first child of the node
-html.menu.Paste_AsLastChild=As Last Child
-html.tip.Paste_AsLastChild=Paste as the last child of the node
-html.menu.Paste_Before=Before
-html.tip.Paste_Before=Paste before the node
-html.menu.Paste_After=After
-html.tip.Paste_After=Paste after the node
-
-# LOCALIZATION NOTE (html.menu.Reload_Frame, html.menu.tip.Reload_Frame):
-# Context menu item of HTML frames
-html.menu.Reload_Frame=Reload Frame
-html.menu.tip.Reload_Frame=Reload the contents of the frame
-
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Copy Location
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Copy Location with Parameters
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Copy Request Headers
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Copy Response Headers
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyAsCurl=Copy as cURL
-net.tip.Copy_as_cURL=Copy the request as a cURL command string to the clipboard
-CopyResponse=Copy Response Body
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Copy Error
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Copy Function
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Log Calls to "%S"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Log Events
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Enabled
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Firebug console does not support '%S'
-
-# LOCALIZATION NOTE (commandline.errorSourceHeader): Message displayed in the header of the
-# source code where an exception has occured.
-commandline.errorSourceHeader=EXPRESSION EVALUATED USING THE FIREBUG COMMAND LINE:
-
-# LOCALIZATION NOTE (commandline.MethodDisabled): Message displayed in the Console panel,
-# if a disabled method is entered via the Command Line.
-commandline.MethodDisabled=This command line method is temporarily disabled.
-
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Firebug Command Line does not support '%S'.
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Disable Break On All Errors
-console.Break_On_All_Errors=Break On All Errors
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Break On This Error
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript is disabled in your Firefox preferences. If you want to use the Console panel, then please enable this option via Tools > Options > Content > Enable JavaScript
-
-# LOCALIZATION NOTE (console.ScriptPanelMustBeEnabledForTraces): Message shown inside the Console
-# panel instead of a stack trace when it is missing because the script panel is disabled. The text
-# enclosed in <a></a> is a link which enables the Script panel.
-console.ScriptPanelMustBeEnabledForTraces=The Script panel must be enabled to get stack traces. <a>Enable Script panel.</a>
-
-# LOCALIZATION NOTE (console.DebuggerWasDisabledForError2): Message shown inside the Console
-# panel instead of a stack trace when the script panel was disabled when the error was thrown,
-# but is now enabled. The text enclosed in <a></a> is a link which reloads the page.
-console.DebuggerWasDisabledForError=There is no stack trace since the error was logged before the Script panel was enabled. You could <a>reload the page</a>.
-
-# LOCALIZATION NOTE (tooltip.multipleFiltersHint):
-# Hint used for Console and Net panel filter button tooltips describing the shortcut for selecting
-# multiple filters
-tooltip.multipleFiltersHint=Use Ctrl+Click to select multiple filters
-
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
-
-# LOCALIZATION NOTE (commandline.Use_in_Command_Line): Right-click option for copying a JS value into the variable
-# $p and opening the Command Line.
-commandline.Use_in_Command_Line=Use in Command Line
-commandline.tip.Use_in_Command_Line=Focus the Command Line, and make this value available as "$p"
-
-# LOCALIZATION NOTE (commandline.include.includeSuccess): For the include() function. This message is displayed
-# in the Console panel when a remote script evaluation succeeded
-# %S = the filename
-commandline.include.includeSuccess=%S properly included.
-
-# LOCALIZATION NOTE (commandline.include.aliasNotFound): For the include() function. This message is displayed
-# in the Console panel when a requested alias is not found
-# %S = the alias name
-commandline.include.aliasNotFound=Alias "%S" not found.
-
-# LOCALIZATION NOTE (commandline.include.loadFail): For the include() function. This message is displayed
-# in the Console panel when the remote script download failed
-# %S = the filename
-commandline.include.loadFail=The following script could not be loaded: %S
-
-# LOCALIZATION NOTE (commandline.include.invalidRequestProtocol): For the include() function. This message is displayed
-# in the Console panel when the user tries to download a script with another scheme than HTTP(S)
-# %S = the filename
-commandline.include.invalidRequestProtocol=Only HTTP/HTTPS protocols are supported.
-
-# LOCALIZATION NOTE (commandline.include.invalidSyntax): For the include() function. This message is displayed
-# in the Console panel when the user tries to execute a non-Javascript file
-# or when the script contains syntax errors
-commandline.include.invalidSyntax=The inclusion failed due to syntax errors. Does the file really contain JavaScript?
-
-# LOCALIZATION NOTE (commandline.include.aliasCreated): For the include() function. This message is displayed
-# in the Console panel when a new alias is created successfully
-# %S = the alias name
-commandline.include.aliasCreated=Alias "%S" created.
-
-# LOCALIZATION NOTE (commandline.include.aliasRemoved): For the include() function. This message is displayed
-# in the Console panel when a new alias is removed successfully
-# %S = the alias name
-commandline.include.aliasRemoved=Alias "%S" removed.
-
-# LOCALIZATION NOTE (commandline.include.invalidAliasName): For the include() function. This message is displayed
-# in the Console panel if an invalid alias name (which contains "/" or ".") is provided.
-# %S = the invalid alias name
-commandline.include.invalidAliasName=Alias names must not contain any "." or "/"; invalid alias name: "%S".
-
-# LOCALIZATION NOTE (commandline.include.tooLongAliasName): For the include() function. This message is displayed
-# in the Console panel if the provided alias name is too long (i.e. more than 30 characters)
-# %S = the invalid alias name
-commandline.include.tooLongAliasName=Alias names must not contain more than 30 characters; invalid alias name: "%S".
-
-# LOCALIZATION NOTE (commandline.include.wrongAliasArgument): For the include() function. This message is displayed
-# in the Console panel if the type of the alias name is invalid (a string is expected)
-commandline.include.invalidAliasArgumentType=Invalid second argument; expected alias name.
-
-# LOCALIZATION NOTE (commandline.include.wrongUrlArgument): For the include() function. This message is displayed
-# in the Console panel if the type of the url arguement is invalid (a string or null are expected)
-commandline.include.invalidUrlArgumentType=Invalid url argument.
-
-# LOCALIZATION NOTE (commandline.include.confirmDelete): For the include() function. This message is displayed
-# in a confirmation dialog when the user wants to delete an alias
-# %S = the name of the alias to delete
-commandline.include.confirmDelete=Do you really want to delete this alias : "%S" ?
-
-# LOCALIZATION NOTE (commandline.include.noDefinedAlias): For the include() function. This message is displayed
-# when the user wants to display the aliases table but there no alias is defined.
-commandline.include.noDefinedAlias=(no alias has been defined yet)
-
-commandline.tip.Delete_Alias=Delete the alias
-commandline.tip.Edit_Alias_Name=Edit the name of the alias
-commandline.tip.Edit_Alias_URL=Edit the URL of the alias
-commandline.tip.Open_In_Scratchpad=Open the content of the script in Scratchpad
-commandline.tip.Include_Script=Download and execute the script
-
-commandline.label.DeleteAlias=Delete Alias
-commandline.label.EditAliasName=Edit Alias Name
-commandline.label.EditAliasURL=Edit Alias URL
-commandline.label.OpenInScratchpad=Open in Scratchpad
-commandline.label.IncludeScript=Include "%S"
-
-
-# LOCALIZATION NOTE (Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting things.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-#
-# NOTE to translators: this message was originally taken from cookies.msg.Do_not_show_this_message_again
-Do_not_show_this_message_again=Do not show this message again
-
-# LOCALIZATION NOTE (scratchpad.loading, scratchpad.failLoading)
-# Used when Firebug downloads a remote script and wants to display it in Scratchpad
-# The messages appears as Javascript Comments in Scratchpad
-scratchpad.loading=Loading, please wait...
-scratchpad.failLoading=Error while loading the script.
-
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Response Body
-net.sizeinfo.Post_Body=Post Body
-net.sizeinfo.Total_Sent=Total Sent
-net.sizeinfo.Total_Received=Total Received
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Net panel activated. Any requests while the net panel is inactive are not shown.
-net.responseSizeLimitMessage=Firebug response size limit has been reached. Click <a>here</a> to open the entire response in a new Firefox tab.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Firebug request size limit has been reached by Firebug.
-net.Break_On_XHR=Break On XHR
-net.label.Parameters=Parameters
-net.label.Parts=Parts
-net.label.Source=Source
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Disable Browser Cache
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Show Paint Events
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Break On Next
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Show HTTP Headers
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S request;%1$S requests
-
-# LOCALIZATION NOTE (net.summary.from_cache):
-# Label used in the Net panel's request summary. Displays the summarized response size coming from cache for all HTTP requests.
-net.summary.from_cache=%S from cache
-
-# LOCALIZATION NOTE (net.summary.tip.request_count, net.summary.tip.total_size,
-# net.summary.tip.total_cached_size, net.summary.tip.total_request_time):
-# Labels used for the tooltips in the Net panel's request summary
-net.summary.tip.request_count=Number of requests
-net.summary.tip.total_size=Total size of all requests
-net.summary.tip.total_cached_size=Total cached size of all requests
-net.summary.tip.total_request_time=Total time needed to load all requests and time when the 'onload' event occurred
-
-StopLoading=Stop Loading
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Very Large Data)
-ShowComputedStyle=Show Computed Style
-StyleGroup-text=Text
-StyleGroup-background=Background
-StyleGroup-box=Box Model
-StyleGroup-layout=Layout
-StyleGroup-other=Other
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Copy Color
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Copy Image Location
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Open Image in New Tab
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (OmitObjectPathStack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Omit Toolbar Stack
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (callstack.option.Show_Arguments, callstack.option.tip.Show_Arguments):
-# Stack side panel option (located in tab's option menu). If set to true,
-# function arguments are displayed
-callstack.option.Show_Arguments=Show Arguments
-callstack.option.tip.Show_Arguments=Display also function arguments
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copy Rule Declaration
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Copy Style Declaration
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (css.label.Copy_Property_Declaration, css.tip.Copy_Property_Declaration,
-# css.label.Copy_Property_Name, css.tip.Copy_Property_Name, css.label.Copy_Property_Value,
-# css.tip.Copy_Property_Value):
-# Menu item labels and tooltips used in CSS panel/Style side panel context menu.
-# Allow copying the current CSS property's declaration/name/value to the clipboard.
-css.label.Copy_Property_Declaration=Copy Property Declaration
-css.tip.Copy_Property_Declaration=Copy the property's declaration to the clipboard
-css.label.Copy_Property_Name=Copy Property Name
-css.tip.Copy_Property_Name=Copy the property's name to the clipboard
-css.label.Copy_Property_Value=Copy Property Value
-css.tip.Copy_Property_Value=Copy the property's value to the clipboard
-
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Error;%1$S Errors
-moduleManager.title=%S Panel is disabled
-moduleManager.desc3=Use Firebug's toolbar button to enable/disable all panels at once. Use each panel's tab menu for individual control.
-moduleManager.Enable=Enable
-Suspend_Firebug=Suspend Firebug
-Resume_Firebug=Resume Firebug
-Reset_Panels_To_Disabled=Reset Panels To Disabled
-Open_Console=Open Console
-Open_Console_Tooltip=Open Trace Console for Firebug.
-Scope_Chain=Scope Chain
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=With
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Call
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Window
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blocking
-requestinfo.Resolving=DNS Lookup
-requestinfo.Connecting=Connecting
-requestinfo.Sending=Sending
-requestinfo.Waiting=Waiting
-requestinfo.Receiving=Receiving
-requestinfo.ContentLoad='DOMContentLoaded' (event)
-requestinfo.WindowLoad='load' (event)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Firebug Search
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Next
-search.tip.Next=Search for the next match
-search.Previous=Previous
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Case Sensitive
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Multiple Files
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Use Regular Expression
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS Selector
-search.net.Headers=Headers
-search.net.Parameters=Parameters
-search.net.Response_Bodies=Response Bodies
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persist
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.All=All
-firebug.console.Show_All_Log_Entries=Show all log entries
-firebug.console.Errors=Errors
-firebug.console.Filter_by_Errors=Filter by errors
-firebug.console.Warnings=Warnings
-firebug.console.Filter_by_Warnings=Filter by warnings
-firebug.console.Info=Info
-firebug.console.Filter_by_Info=Filter by info
-firebug.console.Debug_Info=Debug Info
-firebug.console.Filter_by_Debug_Info=Filter by debug info
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-
-# LOCALIZATION NOTE (firebug.tip.Toggle_Side_Panels): A tooltip used for side panels visibility
-# toggle button. The button is available on the right side of panel's toolbar (only for panels
-# that have a side panel).
-firebug.tip.Toggle_Side_Panels=Toggle visibility of side panels
-
-firebug.ShowFirebug=Open Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Hide Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Enable All Panels
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Disable All Panels
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Customize Shortcuts
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Options
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Enable Accessibility Enhancements
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Reset All Firebug Options
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug Online
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Show Error Count
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Text Size
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Increase Text Size
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Decrease Text Size
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Normal Text Size
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Firebug Website...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Documentation...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Keyboard Shortcuts...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Discussion Group...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Issue Tracker...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Contribute...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=About...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Search
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Re-enter Command
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Toggle Inspecting
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Toggle Quick Info Box
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Toggle Profiling
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Focus Command Line
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Focus Firebug Search
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Focus Watch Editor
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Focus Location
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Next Object
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Previous Object
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Customize Firebug Keys
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Open Firebug in New Window
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Switch to left Firebug panel
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Switch to right Firebug panel
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Open Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Previous Firebug panel
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Clear Console
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Open Trace Console
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Go Back
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Go Forward
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Increase Text Size
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Decrease Text Size
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normal Text Size
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Panel Selector
-customizeShortcuts=Firebug Shortcut Bindings
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=panel tools
-a11y.labels.firebug_panels=Firebug panels
-a11y.labels.firebug_side_panels=Firebug side panels
-a11y.labels.firebug_window=Firebug window
-a11y.labels.firebug_status=Firebug status
-a11y.labels.reset=reset
-a11y.labels.reset_shortcut=reset %S shortcut
-aria.labels.inactive_panel=inactive panel
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=log rows
-a11y.labels.call_stack=call stack
-a11y.labels.document_structure=document structure
-a11y.labels.title_panel= %S panel
-a11y.labels.title_side_panel= %S side panel
-a11y.labels.cached=cached
-aria.labels.stack_trace=stack trace
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=position
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=margin top
-a11y.layout.margin_right=margin right
-a11y.layout.margin_bottom=margin bottom
-a11y.layout.margin_left=margin left
-a11y.layout.border_top=border top
-a11y.layout.border_right=border right
-a11y.layout.border_bottom=border bottom
-a11y.layout.border_left=border left
-a11y.layout.padding_top=padding top
-a11y.layout.padding_right=padding right
-a11y.layout.padding_bottom=padding bottom
-a11y.layout.padding_left=padding left
-a11y.layout.top=top
-a11y.layout.right=right
-a11y.layout.bottom=bottom
-a11y.layout.left=left
-a11y.layout.width=width
-a11y.layout.height=height
-a11y.layout.size=size
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=Press Enter followed by Tab to edit individual values
-a11y.labels.style_rules=style rules
-aria.labels.inherited_style_rules=inherited style rules
-a11y.labels.computed_styles=computed styles
-a11y.labels.dom_properties=DOM properties
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=inline editor
-a11y.labels.value_for_attribute_in_element=value for %S attribute in %S element
-a11y.labels.attribute_for_element=attribute for %S element
-a11y.labels.text_contents_for_element=text contents for %S element
-a11y.labels.defined_in_file=defined in %S
-a11y.labels.declarations_for_selector=style declarations for "%S" selector
-a11y.labels.property_for_selector=CSS property for selector: %S
-a11y.labels.value_property_in_selector=%S property value for selector %S
-a11y.labels.css_selector=CSS selector
-a11y.labels.source_code_for_file=source code for file %S
-a11y.labels.press_enter_to_add_new_watch_expression=press enter to add a new watch expression
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=overridden
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=has conditional break point
-a11y.updates.has_disabled_break_point=has disabled break point
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script suspended on line %S in %S, file %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=Match found for "%S" in %S log rows
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=Match found for "%S" on line %S in %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=Match found for "%S" in %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=Match found for "%S" in attribute %S=%S of %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=Match found for "%S" in text content: %S of %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=Match found for "%S" in selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=Match found for "%S" in style declaration %S in selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=Match found for "%S" in DOM property %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=Match found for "%S" in %S, %S: %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=Match found for "%S" in net summary row: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=no matches found for "%S"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Are you sure to reset all Firebug options to the default state?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=Console must be enabled
-warning.Command_line_blocked?=Command line blocked?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Reload to activate window console
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=The resource from this URL is not text
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Go back to this panel
-firebug.history.Stay_on_this_panel=Stay on this panel
-firebug.history.Go_forward_to_this_panel=Go forward to this panel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Go back
-firebug.history.Go_forward=Go forward
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Script Panel was inactive during page load
-script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript is not enabled
-script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Enable JavaScript and Refresh
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=All scripts were filtered
-script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=No Javascript on this page
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Debugger is already active
-script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
-script.button.Go_to_that_page=Go to that page
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# LOCALIZATION NOTE (script.Script_panel_must_be_enabled): Adds a parenthetical note to a tooltip
-# about the Script panel having to be enabled.
-# %S = original message
-# example: "Profile JavaScript execution time (Script panel must be enabled)"
-script.Script_panel_must_be_enabled=%S (Script panel must be enabled)
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Close
-firebug.View=View
-firebug.Help=Help
-firebug.Run=Run
-firebug.Copy=Copy
-firebug.History=History
-firebug.Run_the_entered_command=Run the entered command
-firebug.Clear_the_Command_Editor=Clear the Command Editor
-firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
-firebug.Insert_a_previously_entered_command=Insert a previously entered command
-firebug.AlwaysOpenInWindow=Always Open in New Window
-firebug.OpenWith=Open With Editor
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Sites...
-firebug.Configure_Editors=Configure Editors
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Inspect
-firebug.InspectElement=Inspect Element
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Break on Errors
-firebug.InspectTooltip=Click an element in the page to inspect
-firebug.EditHTMLTooltip=Edit this HTML
-firebug.Profile=Profile
-firebug.Clear=Clear
-firebug.ClearConsole=Clear Console
-firebug.ClearTooltip=Clear the console
-
-# editors.dtd
-editors.Configured_Firebug_Editors=Configured Firebug Editors
-editors.Editor=Editor
-editors.Executable=Executable
-editors.Launch_Arguments=Launch Arguments
-editors.Add=Add
-editors.Remove=Remove
-editors.Change=Change
-editors.Move_Up=Move Up
-editors.Close=Close
-editors.Browse=Browse...
-changeEditor.Editor_Configuration=Editor Configuration
-changeEditor.Name=Name:
-changeEditor.Executable=Executable:
-changeEditor.CmdLine=Arguments:
-changeEditor.Supplied_arguments=Arguments supplied by Firebug:
-changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
-changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
-changeEditor.Line_number=Line number (if available)
-changeEditor.Invalid_Application_Path=Invalid Application Path
-changeEditor.Application_does_not_exist=The specified application doesn't exist!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Edit
-firebug.css.sourceEdit=Source Edit
-firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
-firebug.css.liveEdit=Live Edit
-firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
-firebug.EditCSSTooltip=Edit this stylesheet
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Show Break Notifications
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
-firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=There are no child objects
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=more
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
-# LOCALIZATION NOTE (firebug.reps.historyEntries): Semicolon list of plural forms.
-# Displayed when evaluating "history" - informs the user about the number of entries in history.
-# %1 = Number of history entries
-firebug.reps.historyEntries=%1$S history entry;%1$S history entries
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Object Properties
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(no completions)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
-firebug.failedToPreviewImageURL=Failed to load the given URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-
-# LOCALIZATION NOTE (console.cmd.help_title, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-
-# LOCALIZATION NOTE (console.cmd.tip_title, console.cmd.tip_title_desc):
-console.cmd.tip_title=Command Line Tips
-console.cmd.tip_title_desc=Learn Command Line Tips & Tricks
-
-# LOCALIZATION NOTE (console.cmd.tip.javascript, console.cmd.tip.closures):
-# Description for Command Line tips that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.tip.javascript=Any valid JavaScript expression can be executed on the Command Line. Example:
-console.cmd.tip.closures=In order to access variables in closures use '.%' syntax (see <a>more</a>). Example:
-
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$2=Represents the third last element selected via the Inspector.
-console.cmd.help.$3=Represents the fourth last element selected via the Inspector.
-console.cmd.help.$4=Represents the fifth last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.$_=Represents the result of the last evaluated expression in the Command Line.
-console.cmd.help.help=Displays help for all available commands.
-console.cmd.help.include=Includes a remote script.
-console.cmd.help.$p=After right-clicking a JavaScript object/value, and clicking "Use in Command Line", this command line variable is set to that value.
-console.cmd.help.getEventListeners=Returns an object with all event listeners registered directly on an element (or other event target).
-
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Console
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Net
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Script
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Style
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Computed
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Layout
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Watch
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Breakpoints
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Stack
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Scopes
+firebug.DetachFirebug=Open Firebug in New Window
+firebug.AttachFirebug=Attach Firebug to Browser Window
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Deactivated
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=In Browser
+minimized=Minimized
+enablement.for_all_pages=for all pages
+enablement.on=On
+enablement.off=Off
+enablement.Panel_activation_status=Panel activation status:
+none=Closed
+Firebug_-_inactive_for_current_website=Firebug - inactive for current website
+Activate_Firebug_for_the_current_website=Activate Firebug for the current website
+Minimized=Minimized
+Minimize_Firebug=Minimize Firebug
+On_for_all_web_pages=On for All Web Pages
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Clear Activation List
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI Location
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+
+# LOCALIZATION NOTE (annotations.confirm.clear):
+# Used in a confirmation dialog when all Firebug annotations are going to be deleted
+annotations.confirm.clear=Do you want to clear the list of Firebug annotations for all websites?
+
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Firebug Options
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Show All Panels
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=Show JavaScript Errors
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Show JavaScript Warnings
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Show CSS Errors
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Show Stack Trace With Errors
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Show XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Show Chrome Errors
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Show Chrome Messages
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowNetworkErrors=Show Network Errors
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Strict Warnings (performance penalty)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Command History
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Show Completion List Popup
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Assertion Failure
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (line %S)
+LineAndCol=%S (line %S, col %S)
+InstanceLine=%S #%S (line %S)
+StackItem=%S (%S line %S)
+SystemItem=<System>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(no name)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Show Full Text
+html.option.tip.Show_Full_Text=Don't crop element contents
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Show Whitespace
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Show Comments
+html.option.tip.Show_Comments=Show comment nodes
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Highlight Changes
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Expand Changes
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Scroll Changes Into View
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Show Quick Info Box
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Shade Box Model
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Scroll Into View
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=New Attribute...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Delete Element
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Delete Node
+html.Delete_Node=Delete the node from the tree
+# Quick Info Box
+quickInfo=Quick Info
+computedStyle=Computed Style
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Break On Mutate
+html.Disable_Break_On_Mutate=Disable Break On Mutate
+html.label.Break_On_Text_Change=Break On Text Change
+html.label.HTML_Breakpoints=HTML Breakpoints
+html.label.Break_On_Attribute_Change=Break On Attribute Change
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Break On Child Addition or Removal
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Break On Element Removal
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Expand/Contract All
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# LOCALIZATION NOTE (dom.scopeName): Used within the DOM panel to name the fake property that
+# contains the innermost closure scope of a function.
+dom.scopeName=(closure)
+# LOCALIZATION NOTE (dom.scopeParentName): Used within the DOM panel to name the fake property
+# that contains the parent of a closure scope.
+dom.scopeParentName=(parent scope)
+# LOCALIZATION NOTE (dom.tip.scopeName): Used within the DOM panel as a tooltip when hovering
+# "(closure)".
+dom.tip.scopeName=Use <func>.%closureVariable to access in the Command Line
+# LOCALIZATION NOTE (dom.tip.scopeMemberName): Used within the DOM panel as a tooltip when
+# hovering a variable in a closure.
+# %S: the variable name - starts with "%"
+dom.tip.scopeMemberName=Use <func>.%S to access in the Command Line
+# LOCALIZATION NOTE (firebug.reps.declarativeScope, firebug.reps.objectScope, firebug.reps.withScope):
+# Labels shown to describe different types of closure scopes.
+firebug.reps.declarativeScope=[declarative scope]
+firebug.reps.objectScope=[object scope]
+firebug.reps.withScope=[with scope]
+# LOCALIZATION NOTE (firebug.reps.optimizedAway): Label shown to denote a closure variable that has
+# been optimized away.
+firebug.reps.optimizedAway=(optimized away)
+# LOCALIZATION NOTE (firebug.reps.element.attribute_value, firebug.reps.element.property_value):
+# Used in the Console panel for elements. If an input element has two different values, one set
+# as "value" attribute and one set as 'value' property, these labels are used to distinguish it.
+firebug.reps.element.attribute_value=attribute value
+firebug.reps.element.property_value=property value
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Break On Property Change
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Disable Break On Property Change
+dom.label.DOM_Breakpoints=DOM Breakpoints
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Edit Attribute "%S"...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Delete Attribute "%S"
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Inherited from
+SothinkWarning=The Sothink SWF Catcher extension is preventing Firebug from working properly.<br/><br/>Please read <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">this item on the Firebug FAQ</a> for help.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
+EditStyle=Edit Element Style...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=New Rule...
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=New Property...
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=Edit "%S"...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=Disable "%S"
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=Delete "%S"
+css.tip.Delete_Prop=Delete the property "%S"
+# Console context menu labels.
+BreakOnThisError=Break on This Error
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Break on All Errors
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Track Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Use Last Source Line for eval() names
+UseMD5ForEvalName=Use MD5 for eval() names
+# Breakpoints side panel
+Breakpoints=Breakpoints
+ErrorBreakpoints=Error Breakpoints
+LoggedFunctions=Logged Functions
+EnableAllBreakpoints=Enable All Breakpoints
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Disable All Breakpoints
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Remove All Breakpoints
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=This breakpoint will stop only if this expression is true:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Remove Breakpoint
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Disable Breakpoint
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Enable Breakpoint
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Continue
+script.balloon.Disable=Disable
+ScriptsFilterStatic=Show static Scripts
+ScriptsFilterEval=Show static and eval Scripts
+ScriptsFilterEvent=Show static and event Scripts
+ScriptsFilterAll=Show static, eval and event Scripts
+ScriptsFilterStaticShort=static
+ScriptsFilterEvalShort=evals
+ScriptsFilterEventShort=events
+ScriptsFilterAllShort=all
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Expand All
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Collapse All
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Show User-defined Properties
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Show User-defined Functions
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Show DOM Properties
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Show DOM Functions
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Show DOM Constants
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowClosures=Show Closures
+dom.option.tip.Show_Closures=Show the closures associated with various functions (activates the debugger)
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers that are not associated with functions
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=There are no properties to show for this object.
+NewWatch=New watch expression...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Add Watch
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Copy Source
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
+CopyValue=Copy Value
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Copy Name
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Copy Path
+dom.tip.Copy_Path=Copy the property path
+NewProperty=New Property...
+EditProperty=Edit Property...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Edit Variable...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Edit Watch...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Delete Property
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Delete Watch
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Set Breakpoint
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Edit Breakpoint Condition...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=There are no breakpoints set in this page.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Only Show Applied Styles
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Show User Agent CSS
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Expand Shorthand Properties
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Sort Alphabetically
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Show Mozilla Specific Styles
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Type any key to filter list
+# LOCALIZATION NOTE (location.inline):
+# Label used within the Location Menu for inline styles or scripts
+location.inline=Inline
+# LOCALIZATION NOTE (location.no_domain):
+# Label used within the Location Menu for the group of scripts,
+# which don't have a domain specified like e.g. eval()'ed scripts
+location.no_domain=No Domain
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=position
+LayoutAdjacent=adjacent
+position=position
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Show Rulers and Guides
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Net panel
+Loading=Loading...
+Headers=Headers
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Reset Header
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=Requested URL and used HTTP method
+net.header.Status=Status
+net.header.Status_Tooltip=Status of the received response
+net.header.Domain=Domain
+net.header.Domain_Tooltip=Domain of the executed request
+net.header.Size=Size
+net.header.Size_Tooltip=Size of the received response (compressed size in case of compressed responses)
+net.header.Timeline=Timeline
+net.header.Timeline_Tooltip=Detailed timing info about request response round trip
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=XHR Breakpoints
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Break On XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=view source
+net.headers.pretty_print=pretty print
+
+# LOCALIZATION NOTE (net.filter.label.All, net.filter.tooltip.All, net.filter.label.HTML,
+# net.filter.tooltip.HTML, net.filter.label.CSS, net.filter.tooltip.CSS, net.filter.label.JS,
+# net.filter.tooltip.JS, net.filter.label.XHR, net.filter.tooltip.XHR, net.filter.label.Images,
+# net.filter.tooltip.Images, net.filter.label.Plugins, net.filter.tooltip.Plugins,
+# net.filter.label.Media, net.filter.tooltip.Media):
+# Labels and tooltips for Net panel filter (used on the Net panel toolbar)
+net.filter.label.All=All
+net.filter.tooltip.All=Show all MIME types
+net.filter.label.HTML=HTML
+net.filter.tooltip.HTML=Show only markup files
+net.filter.label.CSS=CSS
+net.filter.tooltip.CSS=Show only CSS files
+net.filter.label.JS=JavaScript
+net.filter.tooltip.JS=Show only JavaScript files
+net.filter.label.XHR=XHR
+net.filter.tooltip.XHR=Show only XMLHttpRequests
+net.filter.label.Images=Images
+net.filter.tooltip.Images=Show only images
+net.filter.label.Plugins=Plugins
+net.filter.tooltip.Plugins=Show only Flash and Silverlight files
+net.filter.label.Media=Media
+net.filter.tooltip.Media=Show only audios and videos
+net.filter.label.Fonts=Fonts
+net.filter.tooltip.Fonts=Show only fonts
+
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Post
+Put=Put
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Response
+URLParameters=Params
+Cache=Cache
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Sort by key
+jsonviewer.do_not_sort=Do not sort
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Request Headers
+ResponseHeaders=Response Headers
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
+LimitPrefs=Preferences
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=In order to change the limit modify '%S'
+Refresh=Refresh
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Open in New Tab
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Open Response in New Tab
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Profile
+ProfilerStarted=The profiler is running. Click 'Profile' again to see its report.
+ProfilerRequiresTheScriptPanel=The Script panel must be enabled for profiling to work.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
+NothingToProfile=No activity to profile
+PercentTooltip=Percentage of time spent on this function
+CallsHeaderTooltip=Number of times function was called
+OwnTimeHeaderTooltip=Time spent in function excluding nested calls
+TimeHeaderTooltip=Time spent in function including nested calls
+AvgHeaderTooltip=Average time including function calls
+MinHeaderTooltip=Minimum time including function calls
+MaxHeaderTooltip=Maximum time including function calls
+ProfileButton.Tooltip=Profile JavaScript execution time
+Function=Function
+Percent=Percent
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Calls
+OwnTime=Own Time
+Time=Time
+Avg=Avg
+Min=Min
+Max=Max
+File=File
+# Support for standard actions.
+Copy=Copy
+Cut=Cut
+Remove=Remove
+Delete=Delete
+Paste=Paste
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Copy innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Copy XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Copy CSS Path
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (html.menu.Paste, html.tip.Paste): Context menu item (with subitems).
+# Used in the HTML Panel to paste HTML/SVG/XML/XUL/MathML contents
+# %S = the type of the content to paste (HTML, SVG, XML, XUL or MathML)
+html.menu.Paste=Paste %S
+html.tip.Paste=Paste as %S Content
+# LOCALIZATION NODE (html.menu.Paste_*, html.tip.Paste_*): Context menu items.
+# These items are paste options, and appears as subitems of html.menu.Paste in the context menu.
+html.menu.Paste_Replace_Content=Replace Content
+html.tip.Paste_Replace_Content=Replace the content of the node
+html.menu.Paste_Replace_Node=Replace Node
+html.tip.Paste_Replace_Node=Replace the HTML of the node
+html.menu.Paste_AsFirstChild=As First Child
+html.tip.Paste_AsFirstChild=Paste as the first child of the node
+html.menu.Paste_AsLastChild=As Last Child
+html.tip.Paste_AsLastChild=Paste as the last child of the node
+html.menu.Paste_Before=Before
+html.tip.Paste_Before=Paste before the node
+html.menu.Paste_After=After
+html.tip.Paste_After=Paste after the node
+
+# LOCALIZATION NOTE (html.menu.Reload_Frame, html.menu.tip.Reload_Frame):
+# Context menu item of HTML frames
+html.menu.Reload_Frame=Reload Frame
+html.menu.tip.Reload_Frame=Reload the contents of the frame
+
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Copy Location
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Copy Location with Parameters
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Copy Request Headers
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Copy Response Headers
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyAsCurl=Copy as cURL
+net.tip.Copy_as_cURL=Copy the request as a cURL command string to the clipboard
+CopyResponse=Copy Response Body
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Copy Error
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Copy Function
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Log Calls to "%S"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Log Events
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Enabled
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Firebug console does not support '%S'
+
+# LOCALIZATION NOTE (commandline.errorSourceHeader): Message displayed in the header of the
+# source code where an exception has occured.
+commandline.errorSourceHeader=EXPRESSION EVALUATED USING THE FIREBUG COMMAND LINE:
+
+# LOCALIZATION NOTE (commandline.MethodDisabled): Message displayed in the Console panel,
+# if a disabled method is entered via the Command Line.
+commandline.MethodDisabled=This command line method is temporarily disabled.
+
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Firebug Command Line does not support '%S'.
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Disable Break On All Errors
+console.Break_On_All_Errors=Break On All Errors
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Break On This Error
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript is disabled in your Firefox preferences. If you want to use the Console panel, then please enable this option via Tools > Options > Content > Enable JavaScript
+
+# LOCALIZATION NOTE (console.ScriptPanelMustBeEnabledForTraces): Message shown inside the Console
+# panel instead of a stack trace when it is missing because the script panel is disabled. The text
+# enclosed in <a></a> is a link which enables the Script panel.
+console.ScriptPanelMustBeEnabledForTraces=The Script panel must be enabled to get stack traces. <a>Enable Script panel.</a>
+
+# LOCALIZATION NOTE (console.DebuggerWasDisabledForError2): Message shown inside the Console
+# panel instead of a stack trace when the script panel was disabled when the error was thrown,
+# but is now enabled. The text enclosed in <a></a> is a link which reloads the page.
+console.DebuggerWasDisabledForError=There is no stack trace since the error was logged before the Script panel was enabled. You could <a>reload the page</a>.
+
+# LOCALIZATION NOTE (tooltip.multipleFiltersHint):
+# Hint used for Console and Net panel filter button tooltips describing the shortcut for selecting
+# multiple filters
+tooltip.multipleFiltersHint=Use Ctrl+Click to select multiple filters
+
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
+
+# LOCALIZATION NOTE (commandline.Use_in_Command_Line): Right-click option for copying a JS value into the variable
+# $p and opening the Command Line.
+commandline.Use_in_Command_Line=Use in Command Line
+commandline.tip.Use_in_Command_Line=Focus the Command Line, and make this value available as "$p"
+
+# LOCALIZATION NOTE (commandline.include.includeSuccess): For the include() function. This message is displayed
+# in the Console panel when a remote script evaluation succeeded
+# %S = the filename
+commandline.include.includeSuccess=%S properly included.
+
+# LOCALIZATION NOTE (commandline.include.aliasNotFound): For the include() function. This message is displayed
+# in the Console panel when a requested alias is not found
+# %S = the alias name
+commandline.include.aliasNotFound=Alias "%S" not found.
+
+# LOCALIZATION NOTE (commandline.include.loadFail): For the include() function. This message is displayed
+# in the Console panel when the remote script download failed
+# %S = the filename
+commandline.include.loadFail=The following script could not be loaded: %S
+
+# LOCALIZATION NOTE (commandline.include.invalidRequestProtocol): For the include() function. This message is displayed
+# in the Console panel when the user tries to download a script with another scheme than HTTP(S)
+# %S = the filename
+commandline.include.invalidRequestProtocol=Only HTTP/HTTPS protocols are supported.
+
+# LOCALIZATION NOTE (commandline.include.invalidSyntax): For the include() function. This message is displayed
+# in the Console panel when the user tries to execute a non-Javascript file
+# or when the script contains syntax errors
+commandline.include.invalidSyntax=The inclusion failed due to syntax errors. Does the file really contain JavaScript?
+
+# LOCALIZATION NOTE (commandline.include.aliasCreated): For the include() function. This message is displayed
+# in the Console panel when a new alias is created successfully
+# %S = the alias name
+commandline.include.aliasCreated=Alias "%S" created.
+
+# LOCALIZATION NOTE (commandline.include.aliasRemoved): For the include() function. This message is displayed
+# in the Console panel when a new alias is removed successfully
+# %S = the alias name
+commandline.include.aliasRemoved=Alias "%S" removed.
+
+# LOCALIZATION NOTE (commandline.include.invalidAliasName): For the include() function. This message is displayed
+# in the Console panel if an invalid alias name (which contains "/" or ".") is provided.
+# %S = the invalid alias name
+commandline.include.invalidAliasName=Alias names must not contain any "." or "/"; invalid alias name: "%S".
+
+# LOCALIZATION NOTE (commandline.include.tooLongAliasName): For the include() function. This message is displayed
+# in the Console panel if the provided alias name is too long (i.e. more than 30 characters)
+# %S = the invalid alias name
+commandline.include.tooLongAliasName=Alias names must not contain more than 30 characters; invalid alias name: "%S".
+
+# LOCALIZATION NOTE (commandline.include.wrongAliasArgument): For the include() function. This message is displayed
+# in the Console panel if the type of the alias name is invalid (a string is expected)
+commandline.include.invalidAliasArgumentType=Invalid second argument; expected alias name.
+
+# LOCALIZATION NOTE (commandline.include.wrongUrlArgument): For the include() function. This message is displayed
+# in the Console panel if the type of the url arguement is invalid (a string or null are expected)
+commandline.include.invalidUrlArgumentType=Invalid url argument.
+
+# LOCALIZATION NOTE (commandline.include.confirmDelete): For the include() function. This message is displayed
+# in a confirmation dialog when the user wants to delete an alias
+# %S = the name of the alias to delete
+commandline.include.confirmDelete=Do you really want to delete this alias : "%S" ?
+
+# LOCALIZATION NOTE (commandline.include.noDefinedAlias): For the include() function. This message is displayed
+# when the user wants to display the aliases table but there no alias is defined.
+commandline.include.noDefinedAlias=(no alias has been defined yet)
+
+commandline.tip.Delete_Alias=Delete the alias
+commandline.tip.Edit_Alias_Name=Edit the name of the alias
+commandline.tip.Edit_Alias_URL=Edit the URL of the alias
+commandline.tip.Open_In_Scratchpad=Open the content of the script in Scratchpad
+commandline.tip.Include_Script=Download and execute the script
+
+commandline.label.DeleteAlias=Delete Alias
+commandline.label.EditAliasName=Edit Alias Name
+commandline.label.EditAliasURL=Edit Alias URL
+commandline.label.OpenInScratchpad=Open in Scratchpad
+commandline.label.IncludeScript=Include "%S"
+
+
+# LOCALIZATION NOTE (Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting things.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+#
+# NOTE to translators: this message was originally taken from cookies.msg.Do_not_show_this_message_again
+Do_not_show_this_message_again=Do not show this message again
+
+# LOCALIZATION NOTE (scratchpad.loading, scratchpad.failLoading)
+# Used when Firebug downloads a remote script and wants to display it in Scratchpad
+# The messages appears as Javascript Comments in Scratchpad
+scratchpad.loading=Loading, please wait...
+scratchpad.failLoading=Error while loading the script.
+
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Response Body
+net.sizeinfo.Post_Body=Post Body
+net.sizeinfo.Total_Sent=Total Sent
+net.sizeinfo.Total_Received=Total Received
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Net panel activated. Any requests while the net panel is inactive are not shown.
+net.responseSizeLimitMessage=Firebug response size limit has been reached. Click <a>here</a> to open the entire response in a new Firefox tab.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Firebug request size limit has been reached by Firebug.
+net.Break_On_XHR=Break On XHR
+net.label.Parameters=Parameters
+net.label.Parts=Parts
+net.label.Source=Source
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Disable Browser Cache
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Show Paint Events
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Break On Next
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Show HTTP Headers
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S request;%1$S requests
+
+# LOCALIZATION NOTE (net.summary.from_cache):
+# Label used in the Net panel's request summary. Displays the summarized response size coming from cache for all HTTP requests.
+net.summary.from_cache=%S from cache
+
+# LOCALIZATION NOTE (net.summary.tip.request_count, net.summary.tip.total_size,
+# net.summary.tip.total_cached_size, net.summary.tip.total_request_time):
+# Labels used for the tooltips in the Net panel's request summary
+net.summary.tip.request_count=Number of requests
+net.summary.tip.total_size=Total size of all requests
+net.summary.tip.total_cached_size=Total cached size of all requests
+net.summary.tip.total_request_time=Total time needed to load all requests and time when the 'onload' event occurred
+
+StopLoading=Stop Loading
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Very Large Data)
+ShowComputedStyle=Show Computed Style
+StyleGroup-text=Text
+StyleGroup-background=Background
+StyleGroup-box=Box Model
+StyleGroup-layout=Layout
+StyleGroup-other=Other
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Copy Color
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Copy Image Location
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Open Image in New Tab
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (OmitObjectPathStack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Omit Toolbar Stack
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (callstack.option.Show_Arguments, callstack.option.tip.Show_Arguments):
+# Stack side panel option (located in tab's option menu). If set to true,
+# function arguments are displayed
+callstack.option.Show_Arguments=Show Arguments
+callstack.option.tip.Show_Arguments=Display also function arguments
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copy Rule Declaration
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Copy Style Declaration
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (css.label.Copy_Property_Declaration, css.tip.Copy_Property_Declaration,
+# css.label.Copy_Property_Name, css.tip.Copy_Property_Name, css.label.Copy_Property_Value,
+# css.tip.Copy_Property_Value):
+# Menu item labels and tooltips used in CSS panel/Style side panel context menu.
+# Allow copying the current CSS property's declaration/name/value to the clipboard.
+css.label.Copy_Property_Declaration=Copy Property Declaration
+css.tip.Copy_Property_Declaration=Copy the property's declaration to the clipboard
+css.label.Copy_Property_Name=Copy Property Name
+css.tip.Copy_Property_Name=Copy the property's name to the clipboard
+css.label.Copy_Property_Value=Copy Property Value
+css.tip.Copy_Property_Value=Copy the property's value to the clipboard
+
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Error;%1$S Errors
+moduleManager.title=%S Panel is disabled
+moduleManager.desc3=Use Firebug's toolbar button to enable/disable all panels at once. Use each panel's tab menu for individual control.
+moduleManager.Enable=Enable
+Suspend_Firebug=Suspend Firebug
+Resume_Firebug=Resume Firebug
+Reset_Panels_To_Disabled=Reset Panels To Disabled
+Open_Console=Open Console
+Open_Console_Tooltip=Open Trace Console for Firebug.
+Scope_Chain=Scope Chain
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=With
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Call
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Window
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blocking
+requestinfo.Resolving=DNS Lookup
+requestinfo.Connecting=Connecting
+requestinfo.Sending=Sending
+requestinfo.Waiting=Waiting
+requestinfo.Receiving=Receiving
+requestinfo.ContentLoad='DOMContentLoaded' (event)
+requestinfo.WindowLoad='load' (event)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Firebug Search
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Next
+search.tip.Next=Search for the next match
+search.Previous=Previous
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Case Sensitive
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Multiple Files
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Use Regular Expression
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS Selector
+search.net.Headers=Headers
+search.net.Parameters=Parameters
+search.net.Response_Bodies=Response Bodies
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persist
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.All=All
+firebug.console.Show_All_Log_Entries=Show all log entries
+firebug.console.Errors=Errors
+firebug.console.Filter_by_Errors=Filter by errors
+firebug.console.Warnings=Warnings
+firebug.console.Filter_by_Warnings=Filter by warnings
+firebug.console.Info=Info
+firebug.console.Filter_by_Info=Filter by info
+firebug.console.Debug_Info=Debug Info
+firebug.console.Filter_by_Debug_Info=Filter by debug info
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+
+# LOCALIZATION NOTE (firebug.tip.Toggle_Side_Panels): A tooltip used for side panels visibility
+# toggle button. The button is available on the right side of panel's toolbar (only for panels
+# that have a side panel).
+firebug.tip.Toggle_Side_Panels=Toggle visibility of side panels
+
+firebug.ShowFirebug=Open Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Hide Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Enable All Panels
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Disable All Panels
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Customize Shortcuts
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Options
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Enable Accessibility Enhancements
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Reset All Firebug Options
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug Online
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Show Error Count
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Text Size
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Increase Text Size
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Decrease Text Size
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Normal Text Size
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Firebug Website...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Documentation...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Keyboard Shortcuts...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Discussion Group...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Issue Tracker...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Contribute...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=About...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Search
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Re-enter Command
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Toggle Inspecting
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Toggle Quick Info Box
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Toggle Profiling
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Focus Command Line
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Focus Firebug Search
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Focus Watch Editor
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Focus Location
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Next Object
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Previous Object
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Customize Firebug Keys
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Open Firebug in New Window
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Switch to left Firebug panel
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Switch to right Firebug panel
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Open Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Previous Firebug panel
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Clear Console
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Open Trace Console
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Go Back
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Go Forward
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Increase Text Size
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Decrease Text Size
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normal Text Size
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Panel Selector
+customizeShortcuts=Firebug Shortcut Bindings
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=panel tools
+a11y.labels.firebug_panels=Firebug panels
+a11y.labels.firebug_side_panels=Firebug side panels
+a11y.labels.firebug_window=Firebug window
+a11y.labels.firebug_status=Firebug status
+a11y.labels.reset=reset
+a11y.labels.reset_shortcut=reset %S shortcut
+aria.labels.inactive_panel=inactive panel
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=log rows
+a11y.labels.call_stack=call stack
+a11y.labels.document_structure=document structure
+a11y.labels.title_panel= %S panel
+a11y.labels.title_side_panel= %S side panel
+a11y.labels.cached=cached
+aria.labels.stack_trace=stack trace
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=position
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=margin top
+a11y.layout.margin_right=margin right
+a11y.layout.margin_bottom=margin bottom
+a11y.layout.margin_left=margin left
+a11y.layout.border_top=border top
+a11y.layout.border_right=border right
+a11y.layout.border_bottom=border bottom
+a11y.layout.border_left=border left
+a11y.layout.padding_top=padding top
+a11y.layout.padding_right=padding right
+a11y.layout.padding_bottom=padding bottom
+a11y.layout.padding_left=padding left
+a11y.layout.top=top
+a11y.layout.right=right
+a11y.layout.bottom=bottom
+a11y.layout.left=left
+a11y.layout.width=width
+a11y.layout.height=height
+a11y.layout.size=size
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=Press Enter followed by Tab to edit individual values
+a11y.labels.style_rules=style rules
+aria.labels.inherited_style_rules=inherited style rules
+a11y.labels.computed_styles=computed styles
+a11y.labels.dom_properties=DOM properties
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=inline editor
+a11y.labels.value_for_attribute_in_element=value for %S attribute in %S element
+a11y.labels.attribute_for_element=attribute for %S element
+a11y.labels.text_contents_for_element=text contents for %S element
+a11y.labels.defined_in_file=defined in %S
+a11y.labels.declarations_for_selector=style declarations for "%S" selector
+a11y.labels.property_for_selector=CSS property for selector: %S
+a11y.labels.value_property_in_selector=%S property value for selector %S
+a11y.labels.css_selector=CSS selector
+a11y.labels.source_code_for_file=source code for file %S
+a11y.labels.press_enter_to_add_new_watch_expression=press enter to add a new watch expression
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=overridden
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=has conditional break point
+a11y.updates.has_disabled_break_point=has disabled break point
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script suspended on line %S in %S, file %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=Match found for "%S" in %S log rows
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=Match found for "%S" on line %S in %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=Match found for "%S" in %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=Match found for "%S" in attribute %S=%S of %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=Match found for "%S" in text content: %S of %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=Match found for "%S" in selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=Match found for "%S" in style declaration %S in selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=Match found for "%S" in DOM property %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=Match found for "%S" in %S, %S: %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=Match found for "%S" in net summary row: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=no matches found for "%S"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Are you sure to reset all Firebug options to the default state?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=Console must be enabled
+warning.Command_line_blocked?=Command line blocked?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Reload to activate window console
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=The resource from this URL is not text
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Go back to this panel
+firebug.history.Stay_on_this_panel=Stay on this panel
+firebug.history.Go_forward_to_this_panel=Go forward to this panel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Go back
+firebug.history.Go_forward=Go forward
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Script Panel was inactive during page load
+script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript is not enabled
+script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Enable JavaScript and Refresh
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=All scripts were filtered
+script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=No Javascript on this page
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Debugger is already active
+script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
+script.button.Go_to_that_page=Go to that page
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# LOCALIZATION NOTE (script.Script_panel_must_be_enabled): Adds a parenthetical note to a tooltip
+# about the Script panel having to be enabled.
+# %S = original message
+# example: "Profile JavaScript execution time (Script panel must be enabled)"
+script.Script_panel_must_be_enabled=%S (Script panel must be enabled)
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Close
+firebug.View=View
+firebug.Help=Help
+firebug.Run=Run
+firebug.Copy=Copy
+firebug.History=History
+firebug.Run_the_entered_command=Run the entered command
+firebug.Clear_the_Command_Editor=Clear the Command Editor
+firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
+firebug.Insert_a_previously_entered_command=Insert a previously entered command
+firebug.AlwaysOpenInWindow=Always Open in New Window
+firebug.OpenWith=Open With Editor
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Sites...
+firebug.Configure_Editors=Configure Editors
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Inspect
+firebug.InspectElement=Inspect Element
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Break on Errors
+firebug.InspectTooltip=Click an element in the page to inspect
+firebug.EditHTMLTooltip=Edit this HTML
+firebug.Profile=Profile
+firebug.Clear=Clear
+firebug.ClearConsole=Clear Console
+firebug.ClearTooltip=Clear the console
+
+# editors.dtd
+editors.Configured_Firebug_Editors=Configured Firebug Editors
+editors.Editor=Editor
+editors.Executable=Executable
+editors.Launch_Arguments=Launch Arguments
+editors.Add=Add
+editors.Remove=Remove
+editors.Change=Change
+editors.Move_Up=Move Up
+editors.Close=Close
+editors.Browse=Browse...
+changeEditor.Editor_Configuration=Editor Configuration
+changeEditor.Name=Name:
+changeEditor.Executable=Executable:
+changeEditor.CmdLine=Arguments:
+changeEditor.Supplied_arguments=Arguments supplied by Firebug:
+changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
+changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
+changeEditor.Line_number=Line number (if available)
+changeEditor.Invalid_Application_Path=Invalid Application Path
+changeEditor.Application_does_not_exist=The specified application doesn't exist!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Edit
+firebug.css.sourceEdit=Source Edit
+firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
+firebug.css.liveEdit=Live Edit
+firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
+firebug.EditCSSTooltip=Edit this stylesheet
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Show Break Notifications
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
+firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=There are no child objects
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=more
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
+# LOCALIZATION NOTE (firebug.reps.historyEntries): Semicolon list of plural forms.
+# Displayed when evaluating "history" - informs the user about the number of entries in history.
+# %1 = Number of history entries
+firebug.reps.historyEntries=%1$S history entry;%1$S history entries
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Object Properties
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(no completions)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
+firebug.failedToPreviewImageURL=Failed to load the given URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+
+# LOCALIZATION NOTE (console.cmd.help_title, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+
+# LOCALIZATION NOTE (console.cmd.tip_title, console.cmd.tip_title_desc):
+console.cmd.tip_title=Command Line Tips
+console.cmd.tip_title_desc=Learn Command Line Tips & Tricks
+
+# LOCALIZATION NOTE (console.cmd.tip.javascript, console.cmd.tip.closures):
+# Description for Command Line tips that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.tip.javascript=Any valid JavaScript expression can be executed on the Command Line. Example:
+console.cmd.tip.closures=In order to access variables in closures use '.%' syntax (see <a>more</a>). Example:
+
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$2=Represents the third last element selected via the Inspector.
+console.cmd.help.$3=Represents the fourth last element selected via the Inspector.
+console.cmd.help.$4=Represents the fifth last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.$_=Represents the result of the last evaluated expression in the Command Line.
+console.cmd.help.help=Displays help for all available commands.
+console.cmd.help.include=Includes a remote script.
+console.cmd.help.$p=After right-clicking a JavaScript object/value, and clicking "Use in Command Line", this command line variable is set to that value.
+console.cmd.help.getEventListeners=Returns an object with all event listeners registered directly on an element (or other event target).
+
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/en-US/selectors.properties b/locale/en-US/selectors.properties
index 088021a..b53d272 100644
--- a/locale/en-US/selectors.properties
+++ b/locale/en-US/selectors.properties
@@ -1,26 +1,26 @@
-# LOCALIZATION NOTE (Panel-selectors): Title for Selectors side panel displayed
-# in the CSS panel
-Panel-selectors=Selectors
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selectors=Displays elements matching a CSS selector
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selectors side panel.
-css.selector.noSelection=Type a custom selector or right click a CSS rule and pick <b>Get Matching Elements</b>.
-# LOCALIZATION NOTE (css.selector.noSelectionResults, css.selector.invalidSelector):
-# Info messages for selector trials in Selectors side panel
-css.selector.noSelectionResults=No matching elements
-# LOCALIZATION NOTE (css.selector.readMore):
-# Helper text with a link to getfirebug.com/wiki for the Selectors panel.
-css.selector.readMore=You can <a>read more</a> about how to use this panel.
-# LOCALIZATION NOTE (css.selector.invalidSelector):
-css.selector.invalidSelector=Invalid selector entered
-# LOCALIZATION NOTE (css.selector.TryASelector):
-# Placeholder label for the Selectors side panel's input field for creating new selector trials
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-aria.labels.Selectors=Selectors side panel
+# LOCALIZATION NOTE (Panel-selectors): Title for Selectors side panel displayed
+# in the CSS panel
+Panel-selectors=Selectors
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selectors=Displays elements matching a CSS selector
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selectors side panel.
+css.selector.noSelection=Type a custom selector or right click a CSS rule and pick <b>Get Matching Elements</b>.
+# LOCALIZATION NOTE (css.selector.noSelectionResults, css.selector.invalidSelector):
+# Info messages for selector trials in Selectors side panel
+css.selector.noSelectionResults=No matching elements
+# LOCALIZATION NOTE (css.selector.readMore):
+# Helper text with a link to getfirebug.com/wiki for the Selectors panel.
+css.selector.readMore=You can <a>read more</a> about how to use this panel.
+# LOCALIZATION NOTE (css.selector.invalidSelector):
+css.selector.invalidSelector=Invalid selector entered
+# LOCALIZATION NOTE (css.selector.TryASelector):
+# Placeholder label for the Selectors side panel's input field for creating new selector trials
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+aria.labels.Selectors=Selectors side panel
a11y.labels.press_enter_to_add_new_selector=Press Enter to add a new selector
\ No newline at end of file
diff --git a/locale/es-AR/cookies.properties b/locale/es-AR/cookies.properties
index 1928508..1f4a2ff 100644
--- a/locale/es-AR/cookies.properties
+++ b/locale/es-AR/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (extensions.firecookie at janodvarko.cz.description):
-cookies.Panel=Cookies
-panel.tip.cookies=Permitir inspeccionar y manipular cookies
-# Description of this extension.
-cookies.Session=Sesión
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.AllowGlobally=Aceptar cookies de los sitios
-cookies.tip.AllowGlobally=Aceptar por defecto todas las cookies o bloquear todas las cookies por defecto
-# LOCALIZATION NOTE (cookies.AllowGlobally): Label used for cookies permission.
-# LOCALIZATION NOTE (cookies.LogEvents): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, various cookies events are
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# displayed in Firebug's Console panel.
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-cookies.clearWhenDeny=Limpiar cookies cuando se deneguen
-# xxxHonza: currently not displayed in the UI
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-cookies.Cut=Cortar
-cookies.Copy=Copiar
-cookies.CopyAll=Copiar Todo
-cookies.Paste=Pegar
-cookies.Delete=Eliminar
-# (right click on a cookie in the Cookies panel).
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-cookies.Clear_Value=Limpiar valor
-# Clears cookie value, but not removes the cookie itself.
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-cookies.Edit=Editar
-cookies.Accept=Aceptar
-# a dialog for editing clicked cookie.
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-cookies.header.Reset_Header=Renicializar Header
-# (visibility and size of all columns)
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-cookies.Intro=Puedes especificar a qué sitios web se les otorgará permiso para usar cookies.\nEscribe la dirección exacta del sitio que quieras administrar y luego haz click en Bloquear,\nPermitir para Sesión, o Permitir.
-cookies.ExceptionsTitle=Excepciones - Cookies
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-cookies.modulemanager.description=Soportar Monitoreo de Cookie
-cookies.HostEnable=Habilitar panel de Cookies para %S
-cookies.HostDisable=Deshabilitar panel de Cookies para %S
-cookies.Permissions=Habilitar o Deshabilitar panel de Cookies
-cookies.PermissionsIntro=Elige los sitios web donde el panel de Cookies estará habilitado o deshabilitado.
-# examples: Enable Cookies panel for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-cookies.SystemPages=Páginas de Sistema
-cookies.LocalFiles=Archivos Locales
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when cookies
-cookies.confirm.removeall=¿Quieres eliminar todas las cookies de esta lista?
-# are going to be deleted deleted (or permission is set do deny and cookies should be deleted).
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-cookies.confirm.removeallsession=¿Remover todas las cookies de sesión en la lista?
-# all session cookies are going to be deleted
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-cookies.msg.Do_not_show_this_message_again=No mostrar este mensaje otra vez
-# that says whether a confirmation dialog is displayed when removing cookies.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.Confirm_cookie_removal=Confirmar remoción de cookie
-cookies.tip.Confirm_cookie_removal=Si se activa, aparece un mensaje de confirmación antes de borrar todas las cookies de la lista.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-cookies.removeall.tooltip=Eliminar todas las cookies de esta lista.
-# Cookies->Remove Session Cookies menu
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remover cookies de sesión
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-cookies.removeallsession.tooltip=Remover todas las cookies de sesión en la lista.
-# examples: Create new cookie for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.tooltip=Crear una nueva cookie para %S
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-cookies.createcookie.defaultvalue=Valor
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-cookies.perm.manage.tooltip=Administrar permisos de cookie para %S
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-cookies.console.cookiescleared=Todas las cookies han sido eliminadas.
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-cookies.console.sessioncookiescleared=Todas las cookies de sesión han sido removidas.
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-cookies.console.cookiesrejected=Cookies rechazadas:
-cookies.console.nocookiesreceived=No se recibieron cookies
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-cookies.console.cookie=Cookie
-cookies.console.deleted=Eliminada
-cookies.console.added=Agregada
-cookies.console.changed=Modificada
-cookies.console.cleared=Limpiada
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-cookies.domain.label=Dominio
-# Displayed in the Cookies panel for secure cookies.
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-cookies.secure.label=Segura
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-cookies.status.accepted=Aceptada
-cookies.status.downgraded=Degradada
-cookies.status.flagged=Marcada
-cookies.status.rejected=Rechazada
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-cookies.info.valuetab.label=Valor
-cookies.info.rawdatatab.Raw_Data=Datos sin procesar
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-cookies.default.session=Predeterminado (Aceptar Cookies de Sesión)
-cookies.default.thirdPartySession=Predeterminado (Aceptar Cookies de Sesión)
-cookies.default.thirdParty=Predeterminado (Aceptar Cookies)
-cookies.default.allow=Predeterminado (Aceptar Cookies)
-cookies.default.deny=Predeterminado (Rechazar Cookies)
-cookies.default.warn=Predeterminado (Preguntar antes de aceptar Cookies)
-cookies.host.session=Aceptar Cookies de Sesión de %S
-cookies.host.accept=Aceptar Cookies de %S
-cookies.host.reject=Rechazar Cookies de %S
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.domain,
-cookies.edit.invalidname=El nombre de la Cookie no es válido.
-cookies.edit.invalidhost=El host de la Cookie no es válido.
-cookies.edit.invalidpath=El path de la Cookie no es válido.
-# cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-cookies.header.name=Nombre
-cookies.header.value=Valor
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Dominio
-cookies.header.size=Tamaño
-cookies.header.path=Ruta
-cookies.header.expires=Expira
-cookies.header.security=Seguridad
-cookies.header.httponly=HttpOnly
-# cookies.header.domain.tooltip, cookies.header.size.tooltip, cookies.header.path.tooltip,
-# cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.status.tooltip, cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-cookies.header.name.tooltip=Nombre de la cookie
-cookies.header.value.tooltip=Valor guardado para la cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Dominio que ha guardado la cookie
-cookies.header.size.tooltip=Tamaño de la cookie guardada
-cookies.header.path.tooltip=Directorio en el cual la cookie está activa
-cookies.header.expires.tooltip=Fecha de expiración de la cookie
-cookies.header.security.tooltip=Muestra si es una cookie segura o no
-cookies.header.httponly.tooltip=Muestra si la cookie es una cookie HTTP only
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-cookies.netinfo.Received_Cookies=Cookies Recibidas
-cookies.netinfo.Sent_Cookies=Cookies Enviadas
-# xxxHonza: Not implemented yet.
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.Path_Filter=Filtro de Ruta
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-cookies.menu.Cookies=Cookies
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-cookies.export.Export_All_Cookies=Exportar todas las Cookies...
-cookies.export.Export_All_Cookies_Tooltip=Exportar todas las cookies del navegador en el archivo cookies.txt
-cookies.export.Export_For_Site=Exportar Cookies para este sitio...
-cookies.export.Export_For_Site_Tooltip=Exportar las cookies de %S en el archivo cookies.txt
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-cookies.message.There_is_no_active_page=No hay ninguna página activa.
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-cookies.Break_On_Cookie=Interrumpir al cambiar cookie
-cookies.Disable_Break_On_Cookie=Deshabilitar interrupción al cambiar cookie
-# displayed in Breakpoints panel (in the Script panel)
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-cookies.Cookie_Breakpoints=Puntos de interrupción de cookie
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-cookies.menu.Break_On_Cookie=Interrumpir en la cookie '%S'
-cookies.menu.tooltip.Break_On_Cookie=Interrumpir en '%S' cuando se remueve o cambia.
-# used when user right clicks on a cookie with existing breakpoint.
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-cookies.menu.Edit_Breakpoint_Condition=Editar condición de interrupción
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-# DTD strings converted (main Firecokie UI, see fireCookie.xul)
-cookies.Breakpoint_condition_evaluation_fails=Fallas al evaluar la condición de interrupción
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-cookies.RemoveAll=Eliminar Cookies
-cookies.Create=Crear Cookie
-# menu on Cookies toolbar.
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-cookies.Tools=Herramientas
-cookies.ToolsTooltip=Herramientas
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-cookies.ViewAll=Mostrar todas las Cookies...
-cookies.ViewAllTooltip=Abrir Administrador de Cookies
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-# LOCALIZATION NOTE (cookies.Help, cookies.HelpTooltip, cookies.About,
-cookies.ViewExceptions=Permisos de Sitios Web...
-cookies.ViewExceptionsTooltip=Ver la lista de sitios permitidos o bloqueados
-# cookies.AboutTooltip) Labels and tooltips for additional menu items in Tools menu.
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-cookies.Filter=Filtro
-cookies.FilterTooltip=Usa estas opciones para filtrar la lista de cookies
-cookies.filter.byPath=Filtrar Cookies por ruta actual
-cookies.filter.byPathTooltip=Mostrar sólo las cookies que coincidan con la ruta actual.
-cookies.filter.showRejectedCookies=Mostrar Cookies rechazadas
-cookies.filter.showRejectedCookiesTooltip=Mostrar también las cookies rechazadas en la lista.
-# presented on the Cookie toolbar.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-cookies.edit.title=Editar Cookie
-cookies.edit.name.label=Nombre:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Ruta:
-cookies.edit.expire.label=Expira:
-cookies.edit.value.label=Valor:
-cookies.edit.secure.label=Cookie Segura
-cookies.edit.httponly.label=Sólo HTTP
-cookies.edit.session.label=Sesión
-cookies.edit.urlEncode.label=URL encode value
-# cookies.edit.session.label): Edit Cookie dialog UI
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filtrar por cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Borrar todas las cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (extensions.firecookie at janodvarko.cz.description):
+cookies.Panel=Cookies
+panel.tip.cookies=Permitir inspeccionar y manipular cookies
+# Description of this extension.
+cookies.Session=Sesión
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.AllowGlobally=Aceptar cookies de los sitios
+cookies.tip.AllowGlobally=Aceptar por defecto todas las cookies o bloquear todas las cookies por defecto
+# LOCALIZATION NOTE (cookies.AllowGlobally): Label used for cookies permission.
+# LOCALIZATION NOTE (cookies.LogEvents): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, various cookies events are
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# displayed in Firebug's Console panel.
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+cookies.clearWhenDeny=Limpiar cookies cuando se deneguen
+# xxxHonza: currently not displayed in the UI
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+cookies.Cut=Cortar
+cookies.Copy=Copiar
+cookies.CopyAll=Copiar Todo
+cookies.Paste=Pegar
+cookies.Delete=Eliminar
+# (right click on a cookie in the Cookies panel).
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+cookies.Clear_Value=Limpiar valor
+# Clears cookie value, but not removes the cookie itself.
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+cookies.Edit=Editar
+cookies.Accept=Aceptar
+# a dialog for editing clicked cookie.
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+cookies.header.Reset_Header=Renicializar Header
+# (visibility and size of all columns)
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+cookies.Intro=Puedes especificar a qué sitios web se les otorgará permiso para usar cookies.\nEscribe la dirección exacta del sitio que quieras administrar y luego haz click en Bloquear,\nPermitir para Sesión, o Permitir.
+cookies.ExceptionsTitle=Excepciones - Cookies
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+cookies.modulemanager.description=Soportar Monitoreo de Cookie
+cookies.HostEnable=Habilitar panel de Cookies para %S
+cookies.HostDisable=Deshabilitar panel de Cookies para %S
+cookies.Permissions=Habilitar o Deshabilitar panel de Cookies
+cookies.PermissionsIntro=Elige los sitios web donde el panel de Cookies estará habilitado o deshabilitado.
+# examples: Enable Cookies panel for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+cookies.SystemPages=Páginas de Sistema
+cookies.LocalFiles=Archivos Locales
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when cookies
+cookies.confirm.removeall=¿Quieres eliminar todas las cookies de esta lista?
+# are going to be deleted deleted (or permission is set do deny and cookies should be deleted).
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+cookies.confirm.removeallsession=¿Remover todas las cookies de sesión en la lista?
+# all session cookies are going to be deleted
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+cookies.msg.Do_not_show_this_message_again=No mostrar este mensaje otra vez
+# that says whether a confirmation dialog is displayed when removing cookies.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.Confirm_cookie_removal=Confirmar remoción de cookie
+cookies.tip.Confirm_cookie_removal=Si se activa, aparece un mensaje de confirmación antes de borrar todas las cookies de la lista.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+cookies.removeall.tooltip=Eliminar todas las cookies de esta lista.
+# Cookies->Remove Session Cookies menu
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remover cookies de sesión
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+cookies.removeallsession.tooltip=Remover todas las cookies de sesión en la lista.
+# examples: Create new cookie for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.tooltip=Crear una nueva cookie para %S
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+cookies.createcookie.defaultvalue=Valor
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+cookies.perm.manage.tooltip=Administrar permisos de cookie para %S
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+cookies.console.cookiescleared=Todas las cookies han sido eliminadas.
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+cookies.console.sessioncookiescleared=Todas las cookies de sesión han sido removidas.
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+cookies.console.cookiesrejected=Cookies rechazadas:
+cookies.console.nocookiesreceived=No se recibieron cookies
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+cookies.console.cookie=Cookie
+cookies.console.deleted=Eliminada
+cookies.console.added=Agregada
+cookies.console.changed=Modificada
+cookies.console.cleared=Limpiada
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+cookies.domain.label=Dominio
+# Displayed in the Cookies panel for secure cookies.
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+cookies.secure.label=Segura
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+cookies.status.accepted=Aceptada
+cookies.status.downgraded=Degradada
+cookies.status.flagged=Marcada
+cookies.status.rejected=Rechazada
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+cookies.info.valuetab.label=Valor
+cookies.info.rawdatatab.Raw_Data=Datos sin procesar
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+cookies.default.session=Predeterminado (Aceptar Cookies de Sesión)
+cookies.default.thirdPartySession=Predeterminado (Aceptar Cookies de Sesión)
+cookies.default.thirdParty=Predeterminado (Aceptar Cookies)
+cookies.default.allow=Predeterminado (Aceptar Cookies)
+cookies.default.deny=Predeterminado (Rechazar Cookies)
+cookies.default.warn=Predeterminado (Preguntar antes de aceptar Cookies)
+cookies.host.session=Aceptar Cookies de Sesión de %S
+cookies.host.accept=Aceptar Cookies de %S
+cookies.host.reject=Rechazar Cookies de %S
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.domain,
+cookies.edit.invalidname=El nombre de la Cookie no es válido.
+cookies.edit.invalidhost=El host de la Cookie no es válido.
+cookies.edit.invalidpath=El path de la Cookie no es válido.
+# cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+cookies.header.name=Nombre
+cookies.header.value=Valor
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Dominio
+cookies.header.size=Tamaño
+cookies.header.path=Ruta
+cookies.header.expires=Expira
+cookies.header.security=Seguridad
+cookies.header.httponly=HttpOnly
+# cookies.header.domain.tooltip, cookies.header.size.tooltip, cookies.header.path.tooltip,
+# cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.status.tooltip, cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+cookies.header.name.tooltip=Nombre de la cookie
+cookies.header.value.tooltip=Valor guardado para la cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Dominio que ha guardado la cookie
+cookies.header.size.tooltip=Tamaño de la cookie guardada
+cookies.header.path.tooltip=Directorio en el cual la cookie está activa
+cookies.header.expires.tooltip=Fecha de expiración de la cookie
+cookies.header.security.tooltip=Muestra si es una cookie segura o no
+cookies.header.httponly.tooltip=Muestra si la cookie es una cookie HTTP only
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+cookies.netinfo.Received_Cookies=Cookies Recibidas
+cookies.netinfo.Sent_Cookies=Cookies Enviadas
+# xxxHonza: Not implemented yet.
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.Path_Filter=Filtro de Ruta
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+cookies.menu.Cookies=Cookies
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+cookies.export.Export_All_Cookies=Exportar todas las Cookies...
+cookies.export.Export_All_Cookies_Tooltip=Exportar todas las cookies del navegador en el archivo cookies.txt
+cookies.export.Export_For_Site=Exportar Cookies para este sitio...
+cookies.export.Export_For_Site_Tooltip=Exportar las cookies de %S en el archivo cookies.txt
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+cookies.message.There_is_no_active_page=No hay ninguna página activa.
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+cookies.Break_On_Cookie=Interrumpir al cambiar cookie
+cookies.Disable_Break_On_Cookie=Deshabilitar interrupción al cambiar cookie
+# displayed in Breakpoints panel (in the Script panel)
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+cookies.Cookie_Breakpoints=Puntos de interrupción de cookie
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+cookies.menu.Break_On_Cookie=Interrumpir en la cookie '%S'
+cookies.menu.tooltip.Break_On_Cookie=Interrumpir en '%S' cuando se remueve o cambia.
+# used when user right clicks on a cookie with existing breakpoint.
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+cookies.menu.Edit_Breakpoint_Condition=Editar condición de interrupción
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+# DTD strings converted (main Firecokie UI, see fireCookie.xul)
+cookies.Breakpoint_condition_evaluation_fails=Fallas al evaluar la condición de interrupción
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+cookies.RemoveAll=Eliminar Cookies
+cookies.Create=Crear Cookie
+# menu on Cookies toolbar.
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+cookies.Tools=Herramientas
+cookies.ToolsTooltip=Herramientas
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+cookies.ViewAll=Mostrar todas las Cookies...
+cookies.ViewAllTooltip=Abrir Administrador de Cookies
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+# LOCALIZATION NOTE (cookies.Help, cookies.HelpTooltip, cookies.About,
+cookies.ViewExceptions=Permisos de Sitios Web...
+cookies.ViewExceptionsTooltip=Ver la lista de sitios permitidos o bloqueados
+# cookies.AboutTooltip) Labels and tooltips for additional menu items in Tools menu.
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+cookies.Filter=Filtro
+cookies.FilterTooltip=Usa estas opciones para filtrar la lista de cookies
+cookies.filter.byPath=Filtrar Cookies por ruta actual
+cookies.filter.byPathTooltip=Mostrar sólo las cookies que coincidan con la ruta actual.
+cookies.filter.showRejectedCookies=Mostrar Cookies rechazadas
+cookies.filter.showRejectedCookiesTooltip=Mostrar también las cookies rechazadas en la lista.
+# presented on the Cookie toolbar.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+cookies.edit.title=Editar Cookie
+cookies.edit.name.label=Nombre:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Ruta:
+cookies.edit.expire.label=Expira:
+cookies.edit.value.label=Valor:
+cookies.edit.secure.label=Cookie Segura
+cookies.edit.httponly.label=Sólo HTTP
+cookies.edit.session.label=Sesión
+cookies.edit.urlEncode.label=URL encode value
+# cookies.edit.session.label): Edit Cookie dialog UI
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filtrar por cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Borrar todas las cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/es-AR/firebug-amo.properties b/locale/es-AR/firebug-amo.properties
index bfbe3d2..26b673c 100644
--- a/locale/es-AR/firebug-amo.properties
+++ b/locale/es-AR/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug se integra con Firefox para poner valiosas herramientas de desarrollo en la punta de sus dedos, mientras navega. Puede editar, depurar y monitorear CSS, HTML y JavaScript en vivo en cualquier página web...\\n\\nFirebug 1.6 requiere Firefox 3.6 o mejor.
-firebug.amo.description=Firebug se integra con Firefox para poner valiosas herramientas de desarrollo en la punta de sus dedos, mientras navega. Puede editar, depurar y monitorear en vivo CSS, HTML y JavaScript, en cualquier página web.\\n\\nVisite el sitio de Firebug para ver la documentación, capturas de pantalla y los foros de discusión: http://getfirebug.com
-firebug.amo.developer.comments=Si se encuentra con algún problema, lea las Preguntas Frecuentes de FireBug.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug se integra con Firefox para poner valiosas herramientas de desarrollo en la punta de sus dedos, mientras navega. Puede editar, depurar y monitorear CSS, HTML y JavaScript en vivo en cualquier página web...\\n\\nFirebug 1.6 requiere Firefox 3.6 o mejor.
+firebug.amo.description=Firebug se integra con Firefox para poner valiosas herramientas de desarrollo en la punta de sus dedos, mientras navega. Puede editar, depurar y monitorear en vivo CSS, HTML y JavaScript, en cualquier página web.\\n\\nVisite el sitio de Firebug para ver la documentación, capturas de pantalla y los foros de discusión: http://getfirebug.com
+firebug.amo.developer.comments=Si se encuentra con algún problema, lea las Preguntas Frecuentes de FireBug.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/es-AR/firebug-tracing.properties b/locale/es-AR/firebug-tracing.properties
index fef6201..265f9cb 100644
--- a/locale/es-AR/firebug-tracing.properties
+++ b/locale/es-AR/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Abrir rastreo de Firebug
-Always_Open_Firebug_Tracing=Siempre abrir el rastreo de Firebug
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Rastreo
-tracing.Show_Scope_Variables=Mostrar variables del scope
-tracing.Show_Time=Mostrar tiempo
-tracing.tab.Stack=Pila
-tracing.tab.Exception=Excepción
-tracing.tab.Properties=Propiedades
-tracing.tab.Scope=Scope
-tracing.tab.Response=Respuesta
-tracing.tab.Source=Código fuente
-tracing.tab.Interfaces=Interfaces
-tracing.tab.Object=Objeto
-tracing.tab.Event=Evento
-tracing.cmd.Clear=Limpiar
-tracing.cmd.tip.Clear=Remover todos los mensajes
-tracing.cmd.Find=Buscar
-tracing.cmd.tip.Find=Buscar texto
-tracing.cmd.Bookmark=Marcador
-tracing.cmd.tip.Bookmark=Insertar marcador
-tracing.cmd.Restart=Reiniciar Firefox
-tracing.cmd.tip.Restart=Reiniciar Firefox
-tracing.cmd.Exit=Cerrar Firefox
-tracing.cmd.tip.Exit=Cerrar Firefox
-tracing.cmd.Save=Guardar en un archivo
-tracing.cmd.tip.Save=Guardar logs en un archivo
-tracing.cmd.Load=Cargar desde Archivo
-tracing.cmd.tip.Load=Cargar logs desde un archivo
-tracing.cmd.Expand_All=Expandir todo
-tracing.cmd.Collapse_All=Colapsar todo
-tracing.cmd.Tools=Herramientas
-tracing.cmd.tip.Tools=Herramientas
-tracing.cmd.Clear_Browser_Cache=Limpiar caché del navegador
-tracing.cmd.tip.Clear_Browser_Cache=Limpiar la caché del navegador
-tracing.cmd.Force_Garbage_Collector=Forzar recolección de basura
-tracing.cmd.tip.Force_Garbage_Collector=Forzar recolección de basura
-tracing.cmd.Open_Profile_Directory=Abrir directorio de perfilado
-tracing.cmd.tip.Open_Profile_Directory=Abrir directorio de perfilado
-tracing.option.A11Y_Description=Problemas de accesibilidad
-tracing.option.ACTIVATION_Description=Activación de Firebug
-tracing.option.ACTIVITYOBSERVER_Description=Observador de actividad de Firebug
-tracing.option.ANNOTATIONS_Description=Notas del sitio web de Firebug
-tracing.option.BP_Description=Puntos de interrupción
-tracing.option.CACHE_Description=Caché de origen
-tracing.option.COMMANDLINE_Description=Línea de comandos y ventana emergente de la línea de comandos
-tracing.option.COMPILATION_UNITS_Description=Unidades de compilación del script
-tracing.option.CONSOLE_Description=Panel de la Consola
-tracing.option.CSS_Description=Parseo de CSS
-tracing.option.DISPATCH_Description=Despacho de eventos
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Creación de domplate
-tracing.option.EDITOR_Description=Editor y autocompletador en línea
-tracing.option.ERRORLOG_Description=Registro de errores de JS, CSS, XML, etc.
-tracing.option.ERRORS_Description=Errores internos de Firebug
-tracing.option.EVAL_Description=Evaluación del script
-tracing.option.FBS_BP_Description=Puntos de interrupción de servicios de Firebug
-tracing.option.FBS_CREATION_Description=Creación de script de servicios de Firebug
-tracing.option.FBS_ERRORS_Description=Error de servicios de Firebug
-tracing.option.FBS_FINDDEBUGGER_Description=Depurador de búsqueda de servicios de Firebug
-tracing.option.FBS_FUNCTION_Description=Función de servicios de Firebug
-tracing.option.FBS_JSDCONTEXT_Description=Contexto del depurador JavaScript de servicios de Firebug
-tracing.option.FBS_SRCUNITS_Description=Unidades de fuente de servicios de Firebug
-tracing.option.FBS_STEP_Description=Escalón del depurador JavaScript de servicios de Firebug
-tracing.option.FBS_TRACKFILES_Description=Archivos rastreados de servicios de Firebug
-tracing.option.FUNCTION_NAMES_Description=Nombres de funciones JavaScript
-tracing.option.HISTORY_Description=Historial de navegación de Firebug
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=Observador de peticiones HTTP
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Inicialización de Firebug
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=Visor JSON
-tracing.option.LINETABLE_Description=Tabla de líneas del Script
-tracing.option.LOCALE_Description=Localización
-tracing.option.LOCATIONS_Description=Ubicaciones de los fuentes
-tracing.option.NET_Description=Panel de red
-tracing.option.NET_EVENTS_Description=Eventos de red
-tracing.option.OPTIONS_Description=Preferencias de Firebug
-tracing.option.PANELS_Description=Paneles
-tracing.option.SHORTCUTS_Description=Atajos del teclado
-tracing.option.SOURCEFILES_Description=Archivos de código fuente JavaScript
-tracing.option.SPY_Description=Observador de XMLHttpRequests
-tracing.option.STACK_Description=Pila de llamadas de JavaScript
-tracing.option.STORAGE_Description=Almacenamiento de opciones
-tracing.option.SVGVIEWER_Description=Visor SVG
-tracing.option.FONTS_Description=Información de fuentes y visor de fuentes
-tracing.option.TOOLTIP_Description=Tooltip del botón de inicio
-tracing.option.TOPLEVEL_Description=JavaScript de alto nivel
-tracing.option.UI_LOOP_Description=Interfaz de usuario de depuración de JavaScript
-tracing.option.WINDOWS_Description=Ventanas de Firebug y observador de pestañas
-tracing.option.XMLVIEWER_Description=Visor XML
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Abrir rastreo de Firebug
+Always_Open_Firebug_Tracing=Siempre abrir el rastreo de Firebug
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Rastreo
+tracing.Show_Scope_Variables=Mostrar variables del scope
+tracing.Show_Time=Mostrar tiempo
+tracing.tab.Stack=Pila
+tracing.tab.Exception=Excepción
+tracing.tab.Properties=Propiedades
+tracing.tab.Scope=Scope
+tracing.tab.Response=Respuesta
+tracing.tab.Source=Código fuente
+tracing.tab.Interfaces=Interfaces
+tracing.tab.Object=Objeto
+tracing.tab.Event=Evento
+tracing.cmd.Clear=Limpiar
+tracing.cmd.tip.Clear=Remover todos los mensajes
+tracing.cmd.Find=Buscar
+tracing.cmd.tip.Find=Buscar texto
+tracing.cmd.Bookmark=Marcador
+tracing.cmd.tip.Bookmark=Insertar marcador
+tracing.cmd.Restart=Reiniciar Firefox
+tracing.cmd.tip.Restart=Reiniciar Firefox
+tracing.cmd.Exit=Cerrar Firefox
+tracing.cmd.tip.Exit=Cerrar Firefox
+tracing.cmd.Save=Guardar en un archivo
+tracing.cmd.tip.Save=Guardar logs en un archivo
+tracing.cmd.Load=Cargar desde Archivo
+tracing.cmd.tip.Load=Cargar logs desde un archivo
+tracing.cmd.Expand_All=Expandir todo
+tracing.cmd.Collapse_All=Colapsar todo
+tracing.cmd.Tools=Herramientas
+tracing.cmd.tip.Tools=Herramientas
+tracing.cmd.Clear_Browser_Cache=Limpiar caché del navegador
+tracing.cmd.tip.Clear_Browser_Cache=Limpiar la caché del navegador
+tracing.cmd.Force_Garbage_Collector=Forzar recolección de basura
+tracing.cmd.tip.Force_Garbage_Collector=Forzar recolección de basura
+tracing.cmd.Open_Profile_Directory=Abrir directorio de perfilado
+tracing.cmd.tip.Open_Profile_Directory=Abrir directorio de perfilado
+tracing.option.A11Y_Description=Problemas de accesibilidad
+tracing.option.ACTIVATION_Description=Activación de Firebug
+tracing.option.ACTIVITYOBSERVER_Description=Observador de actividad de Firebug
+tracing.option.ANNOTATIONS_Description=Notas del sitio web de Firebug
+tracing.option.BP_Description=Puntos de interrupción
+tracing.option.CACHE_Description=Caché de origen
+tracing.option.COMMANDLINE_Description=Línea de comandos y ventana emergente de la línea de comandos
+tracing.option.COMPILATION_UNITS_Description=Unidades de compilación del script
+tracing.option.CONSOLE_Description=Panel de la Consola
+tracing.option.CSS_Description=Parseo de CSS
+tracing.option.DISPATCH_Description=Despacho de eventos
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Creación de domplate
+tracing.option.EDITOR_Description=Editor y autocompletador en línea
+tracing.option.ERRORLOG_Description=Registro de errores de JS, CSS, XML, etc.
+tracing.option.ERRORS_Description=Errores internos de Firebug
+tracing.option.EVAL_Description=Evaluación del script
+tracing.option.FBS_BP_Description=Puntos de interrupción de servicios de Firebug
+tracing.option.FBS_CREATION_Description=Creación de script de servicios de Firebug
+tracing.option.FBS_ERRORS_Description=Error de servicios de Firebug
+tracing.option.FBS_FINDDEBUGGER_Description=Depurador de búsqueda de servicios de Firebug
+tracing.option.FBS_FUNCTION_Description=Función de servicios de Firebug
+tracing.option.FBS_JSDCONTEXT_Description=Contexto del depurador JavaScript de servicios de Firebug
+tracing.option.FBS_SRCUNITS_Description=Unidades de fuente de servicios de Firebug
+tracing.option.FBS_STEP_Description=Escalón del depurador JavaScript de servicios de Firebug
+tracing.option.FBS_TRACKFILES_Description=Archivos rastreados de servicios de Firebug
+tracing.option.FUNCTION_NAMES_Description=Nombres de funciones JavaScript
+tracing.option.HISTORY_Description=Historial de navegación de Firebug
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=Observador de peticiones HTTP
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Inicialización de Firebug
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=Visor JSON
+tracing.option.LINETABLE_Description=Tabla de líneas del Script
+tracing.option.LOCALE_Description=Localización
+tracing.option.LOCATIONS_Description=Ubicaciones de los fuentes
+tracing.option.NET_Description=Panel de red
+tracing.option.NET_EVENTS_Description=Eventos de red
+tracing.option.OPTIONS_Description=Preferencias de Firebug
+tracing.option.PANELS_Description=Paneles
+tracing.option.SHORTCUTS_Description=Atajos del teclado
+tracing.option.SOURCEFILES_Description=Archivos de código fuente JavaScript
+tracing.option.SPY_Description=Observador de XMLHttpRequests
+tracing.option.STACK_Description=Pila de llamadas de JavaScript
+tracing.option.STORAGE_Description=Almacenamiento de opciones
+tracing.option.SVGVIEWER_Description=Visor SVG
+tracing.option.FONTS_Description=Información de fuentes y visor de fuentes
+tracing.option.TOOLTIP_Description=Tooltip del botón de inicio
+tracing.option.TOPLEVEL_Description=JavaScript de alto nivel
+tracing.option.UI_LOOP_Description=Interfaz de usuario de depuración de JavaScript
+tracing.option.WINDOWS_Description=Ventanas de Firebug y observador de pestañas
+tracing.option.XMLVIEWER_Description=Visor XML
diff --git a/locale/es-AR/firebug.properties b/locale/es-AR/firebug.properties
index 55dba91..23df923 100644
--- a/locale/es-AR/firebug.properties
+++ b/locale/es-AR/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Consola
-panel.tip.console=Permite ver los mensajes de la consola y ejecutar comandos JavaScript
-Panel-net=Red
-panel.tip.net=Permite analizar el tráfico de la red
-Panel-html=HTML
-panel.tip.html=Permite inspeccionar y manipular los nodos DOM
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Permite inspeccionar y manipular las hojas de estilo CSS
-Panel-script=Script
-panel.tip.script=Permite depurar JavaScript
-Panel-dom=DOM
-panel.tip.dom=Permite inspeccionar y manipular las propiedades DOM
-Panel-css=Estilo
-panel.tip.css=Permite inspeccionar y manipular las reglas CSS del nodo DOM seleccionado
-Panel-computed=Interpretado
-panel.tip.computed=Permite inspeccionar los valores CSS interpretados del nodo DOM seleccionado
-Panel-layout=Maquetación
-panel.tip.layout=Permite inspeccionar y manipular la información de disposición del nodo DOM seleccionado
-Panel-domSide=DOM
-panel.tip.domSide=Permite inspeccionar y manipular las propiedades DOM del nodo DOM seleccionado
-Panel-watches=Observar
-panel.tip.watches=Permite inspeccionar las variables JavaScript disponibles en el marco de la pila actual y definir expresiones de seguimiento
-Panel-breakpoints=Puntos de interrupción
-panel.tip.breakpoints=Permite manipular los puntos de interrupción configurados
-Panel-callstack=Pila
-panel.tip.callstack=Permite ver la pila de llamadas actual de JavaScript
-Panel-scopes=Scopes
-firebug.DetachFirebug=Abrir Firebug en una ventana nueva
-firebug.AttachFirebug=Adjuntar Firebug a una ventana del navegador
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Firebug en total;%1$S Firebugs en total
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Deactivated
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=En el navegador
-minimized=Minimizado
-enablement.for_all_pages=para todas las páginas
-enablement.on=Activado
-enablement.off=Desactivado
-enablement.Panel_activation_status=Panel activation status:
-none=Cerrado
-Firebug_-_inactive_for_current_website=Firebug - desactivado para el sitio actual
-Activate_Firebug_for_the_current_website=Activar Firebug para el sitio actual
-Minimized=Minimizado
-Minimize_Firebug=Minimizar Firebug
-On_for_all_web_pages=Activar para todas las páginas web
-firebug.menu.tip.On_for_all_Web_Sites=Activar Firebug en forma predeterminada para todos los sitios web
-firebug.menu.Clear_Activation_List=Limpiar lista de activación
-firebug.menu.tip.Clear_Activation_List=Limpiar la lista de sitios web para los cuales Firebug está activado
-firebug.menu.Detached=Desanclado
-firebug.menu.tip.Detached=Poner a Firebug en una ventana independiente
-firebug.menu.Top=Arriba
-firebug.menu.tip.Top=Ubicar a Firebug en la parte superior de la ventana del navegador
-firebug.menu.Bottom=Abajo
-firebug.menu.tip.Bottom=Ubicar a Firebug en la parte inferior de la ventana del navegador
-firebug.menu.Left=Izquierda
-firebug.menu.tip.Left=Ubicar a Firebug en la parte izquierda de la ventana del navegador
-firebug.menu.Right=Derecha
-firebug.menu.tip.Right=Ubicar a Firebug en la parte derecha de la ventana del navegador
-firebug.uiLocation=Ubicación de la UI de Firebug
-firebug.menu.tip.UI_Location=Posición de la interfaz de usuario de Firebug
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Opciones de Firebug
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Mostar todos los paneles
-console.option.Show_Command_Line=Mostrar línea de comandos
-console.option.tip.Show_Command_Line=Enfocar la línea de comandos / Mostrar el popup de la línea de comandos
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=Mostrar errores de JavaScript
-console.option.tip.Show_JavaScript_Errors=Mostrar mensajes de error JavaScript en la consola
-ShowJavaScriptWarnings=Mostrar advertencias de JavaScript
-console.option.tip.Show_JavaScript_Warnings=Mostrar mensajes de advertencia de JavaScript en la consola
-ShowCSSErrors=Mostrar errores de CSS
-console.option.tip.Show_CSS_Errors=Mostrar mensajes de error CSS en la consola
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Mostrar rastro de pila con errores
-console.option.tip.Show_Stack_Trace=Mostrar información de seguimiento de pila en los mensajes de error
-ShowXMLHttpRequests=Mostrar XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Mostrar XMLHttpRequests en la consola
-ShowChromeErrors=Mostrar errores del chrome
-console.option.tip.Show_System_Errors=Mostrar mensajes de error internos del programa y sus add-ons en la consola
-ShowChromeMessages=Mostrar mensajes del chrome
-console.option.tip.Show_System_Messages=Mostrar mensajes internos del programa y sus add-ons en la consola
-ShowExternalErrors=Mostrar errores externos
-console.option.tip.Show_External_Errors=Mostrar mensajes de error de fuentes externas en la consola
-ShowNetworkErrors=Mostrar errores de red
-console.option.tip.Show_Network_Errors=Mostrar mensajes de error de red en la consola
-JavascriptOptionsStrict=Advertencias estrictas (penalización de rendimiento)
-console.option.tip.Show_Strict_Warnings=Mostrar también las advertencias estrictas en la consola
-Command_History=Historial de comandos
-console.option.Show_Command_Editor=Mostrar el editor de comandos
-console.option.tip.Show_Command_Editor=Pasar al editor de comandos
-commandLineShowCompleterPopup=Mostrar pop-up con la lista de autocompletado
-console.option.tip.Show_Completion_List_Popup=Mostrar el popup para el completado automático de comandos
-Assertion=Falla de aserción
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (línea %S)
-LineAndCol=%S (línea %S, col %S)
-InstanceLine=%S #%S (línea %S)
-StackItem=%S (%S línea %S)
-SystemItem=<Sistema>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspeccionar en el panel %S
-panel.tip.Inspect_In_Panel=Pasar al panel %S para examinar el objetos allí
-NoName=(sin nombre)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Mostrar texto completo
-html.option.tip.Show_Full_Text=No recortar el contenido del elemento
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Mostrar espacios en blanco
-html.option.tip.Show_Whitespace=Mostrar el espacio en blanco dentro de los nodos
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Mostrar comentarios
-html.option.tip.Show_Comments=Mostrar nodos de comentarios
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Mostrar entidades como símbolos
-html.option.tip.Show_Entities_As_Symbols=Mostrar todas las entidades XML usando su representación simbólica
-html.option.Show_Entities_As_Names=Mostrar entidades como nombres
-html.option.tip.Show_Entities_As_Names=Mostrar todas las entidades XML usando sus nombres
-html.option.Show_Entities_As_Unicode=Mostrar entidades como unicode
-html.option.tip.Show_Entities_As_Unicode=Mostrar todas las entidades XML en su representación unicode
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Resaltar cambios
-html.option.tip.Highlight_Mutations=Destacar cambios dentro de los nodos
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Expandir cambios
-html.option.tip.Expand_Mutations=Expandir la vista de árbol para mostrar los nodos que cambiaron
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Desplazar la vista hasta los cambios
-html.option.tip.Scroll_To_Mutations=Desplazar la vista de árbol para mostrar los nodos cambiados
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Mostrar caja de información rápida
-inspect.option.tip.Show_Quick_Info_Box=Mostrar información acerca del elemento actualmente inspeccionado dentro de un panel impreso sobre la página
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Sombrear el modelo de cajas
-inspect.option.tip.Shade_Box_Model=Sombrear las diferentes partes del modelo de caja
-ScrollIntoView=Desplazar la vista
-html.tip.Scroll_Into_View=Desplazar la página para hacer visible el elemento
-NewAttribute=Nuevo atributo...
-html.tip.New_Attribute=Agregar un nuevo atributo a este elemento
-html.Edit_Node=Editar %S...
-html.Node=Nodo
-html.tip.Edit_Node=Editar el %S usando el editor de texto completo
-DeleteElement=Borrar elemento
-html.Delete_Element=Eliminar el elemento del árbol
-DeleteNode=Borrar nodo
-html.Delete_Node=Eliminar el nodo del árbol
-# Quick Info Box
-quickInfo=Información rápida
-computedStyle=Estilo interpretado
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Interrumpir al mutar
-html.Disable_Break_On_Mutate=Deshabilitar interrupción al mutar
-html.label.Break_On_Text_Change=Interrumpir al cambiar el texto
-html.label.HTML_Breakpoints=Puntos de interrupción de HTML
-html.label.Break_On_Attribute_Change=Interrumpir al cambiar el atributo
-html.tip.Break_On_Attribute_Change=Interrumpir la ejecución de JavaScript cuando cambie un atributo de este elemento
-html.label.Break_On_Child_Addition_or_Removal=Interrumpir al agregar o quitar hijo
-html.tip.Break_On_Child_Addition_or_Removal=Interrumpir la ejecución de JavaScript cuando se agregue o elimine un nodo hijo de este elemento
-html.label.Break_On_Element_Removal=Interrumpir al quitar elemento
-html.tip.Break_On_Element_Removal=Interrumpir la ejecución de JavaScript cuando se elimine este elemento
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Expandir/Minimizar todo
-html.tip.Expand/Contract_All=Expandir/colapsar todos los hijos recursivamente
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Interrumpir al detectar cambios en la propiedad
-dom.tip.Break_On_Property_Change=Interrumpir la ejecución de JavaScript cuando cambie esta propiedad
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Deshabilitar interrupción al detectar cambios en la propiedad
-dom.label.DOM_Breakpoints=Puntos de interrupción del DOM
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Editar atributo \"%S\"...
-html.tip.Edit_Attribute=Editar el valor del atributo "%S" de este elemento
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Borrar atributo \"%S\"
-html.tip.Delete_Attribute=Eliminar el atributo "%S" de este elemento
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Heredado de
-SothinkWarning=La extensión Sothink SWF Catcher está impidiendo que Firebug funcione correctamente.<br><br>Por favor lea <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">esta entrada en las FAQ de Firebug</a> para obtener ayuda.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=El veloz murciélago hindú comía feliz cardillo y kiwi. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=No hay ninguna regla. Puede <a>crear una</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=Este elemento no tiene reglas de estilo. Puede <a>crear una</a>.
-EditStyle=Editar estilo del elemento...
-style.tip.Edit_Style=Editar el estilo en línea de este elemento
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Nueva regla...
-css.tip.New_Rule=Agregar una regla
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Borrar "%S"
-css.tip.Delete_Rule=Borrar la regla "%S" y todas sus propieades
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Editar consulta de medios...
-css.menu.tip.Edit_Media_Query=Editar la consulta de medios asignada a esta regla
-NewProp=Nueva propiedad...
-css.tip.New_Prop=Agregar una propiedad a la regla actual
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=Editar \"%S\"...
-css.tip.Edit_Prop=Editar el valor de la propiedad "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=Deshabilitar \"%S\"
-css.tip.Disable_Prop=Desactivar la propiedad "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=Borrar \"%S\"
-css.tip.Delete_Prop=Eliminar la propiedad "%S"
-# Console context menu labels.
-BreakOnThisError=Interrumpir en este error
-console.menu.tip.Break_On_This_Error=Interrumpir la ejecución de JavaScript en cuanto ocurra este error
-BreakOnAllErrors=Interrumpir en todos los errores
-console.menu.tip.Break_On_All_Errors=Interrumpir la ejecución de JavaScript en cuanto ocurra un error
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Rastrear Throw/Catch
-script.option.tip.Track_Throw_Catch=Rastrear excepciones incluso cuando son capturadas por bloques try/catch
-UseLastLineForEvalName=Usar la última línea del código para los nombres de los eval()
-UseMD5ForEvalName=Usar MD5 para los nombres de los eval()
-# Breakpoints side panel
-Breakpoints=Puntos de interrupción
-ErrorBreakpoints=Puntos de interrupción por errores
-LoggedFunctions=Funciones registradas
-EnableAllBreakpoints=Habilitar todos los puntos de interrupción
-breakpoints.option.tip.Enable_All_Breakpoints=Activar todos los puntos de interrupción de la lista
-DisableAllBreakpoints=Deshabilitar todos los puntos de interrupción
-breakpoints.option.tip.Disable_All_Breakpoints=Desactivar todos los puntos de interrupción de la lista
-ClearAllBreakpoints=Borrar todos los puntos de interrupción
-breakpoints.option.tip.Clear_All_Breakpoints=Eliminar todos los puntos de interrupción de la lista
-ConditionInput=Este punto de interrupción sólo detendrá la ejecución si esta expresión es verdadera:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Borrar punto de interrupción
-breakpoints.tip.Remove_Breakpoint=Eliminar el punto de interrupción
-breakpoints.Disable_Breakpoint=Deshabilitar punto de interrupción
-breakpoints.tip.Disable_Breakpoint=Desactivar el punto de interrupción
-breakpoints.Enable_Breakpoint=Habilitar punto de interrupción
-breakpoints.tip.Enable_Breakpoint=Activar el punto de interrupción
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Continuar
-script.balloon.Disable=Deshabilitar
-ScriptsFilterStatic=Mostrar scripts estáticos
-ScriptsFilterEval=Mostrar scripts estáticos y evaluados
-ScriptsFilterEvent=Mostrar scripts estáticos y de eventos
-ScriptsFilterAll=Mostrar scripts estáticos, evaluados y de eventos
-ScriptsFilterStaticShort=Estáticos
-ScriptsFilterEvalShort=Evaluadoss
-ScriptsFilterEventShort=Eventos
-ScriptsFilterAllShort=Todos
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Expandir todo
-callstack.tip.Expand_All=Expandir todas las funciones del marco de pila
-callstack.Collapse_All=Colapsar todo
-callstack.tip.Collapse_All=Colapsar todas las funciones del marco de pila
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Los marcos de pila sólo se muestran cuando la ejecución está interrumpida.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Mostrar propiedades definidas por el usuario
-dom.option.tip.Show_User_Props=Mostrar propiedades del objeto definidas por el usuario
-ShowUserFuncs=Mostrar funciones definidas por el usuario
-dom.option.tip.Show_User_Funcs=Mostrar métodos del objeto definidos por el usuario
-ShowDOMProps=Mostrar propiedades del DOM
-dom.option.tip.Show_DOM_Props=Mostrar propiedades especificadas dentro del DOM
-ShowDOMFuncs=Mostrar funciones del DOM
-dom.option.tip.Show_DOM_Funcs=Mostrar funciones especificadas dentro del DOM
-ShowDOMConstants=Mostrar constantes del DOM
-dom.option.tip.Show_DOM_Constants=Mostrar constantes especificadas dentro del DOM
-ShowInlineEventHandlers=Mostrar los Inline Event Handlers
-ShowInlineEventHandlersTooltip=Mostrar los inline event handlers que no estén associados a una función.
-ShowOwnProperties=Mostrar solamente las propiedades del objeto
-ShowOwnPropertiesTooltip=No mostrar la cadena de prototipos
-ShowEnumerableProperties=Mostrar solamente las propiedades enumerables
-ShowEnumerablePropertiesTooltip=No mostrar propiedades no enumerables
-NoMembersWarning=No hay propiedades para mostrar de este objeto.
-NewWatch=Nueva expresión de seguimiento...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Agregar seguimiento
-watch.tip.Add_Watch=Agregar la selección/objeto al panel lateral de seguimiento
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Copiar código fuente
-script.tip.Copy_Source_Code=Copiar el código fuente seleccionado al portapapeles
-Use_hash_plus_number_to_go_to_line=Usar #<número> para ir a la línea
-CopyValue=Copiar valor
-dom.tip.Copy_Value=Copiar el valor de la propiedad al portapapeles
-Copy_Name=Copiar nombre
-dom.tip.Copy_Name=Copiar el nombre de la propiedad al portapapeles
-Copy_Path=Copiar ruta
-dom.tip.Copy_Path=Copiar la ruta de la propiedad
-NewProperty=Nueva propiedad...
-EditProperty=Editar propiedad...
-dom.tip.Edit_Property=Editar el valor de la propiedad
-EditVariable=Editar variable...
-stack.tip.Edit_Variable=Editar el valor de la variable
-EditWatch=Editar seguimiento...
-watch.tip.Edit_Watch=Editar el valor de la expresión de seguimiento
-DeleteProperty=Borrar propiedad
-dom.tip.Delete_Property=Eliminar la propiedad
-DeleteWatch=Borrar seguimiento
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Eliminar la expresión de seguimiento
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Establecer punto de interrupción
-script.tip.Set_Breakpoint=Activa/desactiva la configuración de un punto de interrupción en la línea actual
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Editar condición de punto de interrupción...
-breakpoints.tip.Edit_Breakpoint_Condition=Edita la condición bajo la cual este punto de interrupción detiene la ejecución de JavaScript
-NoBreakpointsWarning=No hay puntos de interrupción en esta página.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Mostrar solamente estilos aplicados
-style.option.tip.Only_Show_Applied_Styles=Mostrar los estilos aplicados a este elemento
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Mostrar CSS del User Agent
-style.option.tip.Show_User_Agent_CSS=Mostrar también el CSS definido por el navegador
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colores en hexadecimal
-computed.option.tip.Colors_As_Hex=Mostrar los colores en formato hexadecimal
-computed.option.label.Colors_As_RGB=Colores en RGB
-computed.option.tip.Colors_As_RGB=Mostrar los colores en formato RGB
-computed.option.label.Colors_As_HSL=Colores en HSL
-computed.option.tip.Colors_As_HSL=Mostrar los colores en formato HSL
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Mostrar estilos de la pseudoclase :active
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Mostrar estilos de la pseudoclase :hover
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Mostrar estilos de la pseudoclase :focus
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspeccionar declaración
-css.tip.Inspect_Declaration=Inspeccionar la declaración de esta fuente
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Expandir Propiedades Abreviadas
-css.option.tip.Expand_Shorthand_Properties=Expandir declaraciones abreviadas de CSS en sus componentes
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Ordenar alfabéticamente
-computed.option.tip.Sort_Alphabetically=Ordenar los estilos por nombre/agrupar los estilos en categorías
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Mostrar estilos específicos de Mozilla
-computed.option.tip.Show_Mozilla_Specific_Styles=Mostrar también los estilos con el prefijo -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=Este elemento no tiene reglas de estilo definidas por el usuario.
-script.Type_any_key_to_filter_list=Pulse cualquier tecla para filtrar la lista
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=rellenado
-LayoutBorder=borde
-LayoutMargin=margen
-LayoutPosition=posición
-LayoutAdjacent=adyacente
-position=posición
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Mostrar reglas y guías
-layout.option.tip.Show_Rulers=Mostrar reglas y guías en la página al desplazar el cursor sobre partes de la caja
-# Net panel
-Loading=Cargando...
-Headers=Encabezados
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Limpiar la lista de peticiones
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Reiniciar encabezado
-net.header.tip.Reset_Header=Reinicializar la visualización de cabeceras
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=URL pedida y método HTTP utilizado.
-net.header.Status=Estado
-net.header.Status_Tooltip=Estado de la respuesta recibida.
-net.header.Domain=Dominio
-net.header.Domain_Tooltip=Dominio de la petición ejecutada.
-net.header.Size=Tamaño
-net.header.Size_Tooltip=Tamaño de la respuesta recibida.
-net.header.Timeline=Línea de tiempo
-net.header.Timeline_Tooltip=Información detallada acerca del tiempo de viaje de la respuesta a la petición.
-net.header.Local_IP=IP local
-net.header.Local_IP_Tooltip=Dirección IP y número de puerto locales a los cuales está asociada la petición.
-net.header.Remote_IP=IP remota
-net.header.Remote_IP_Tooltip=Dirección IP y número de puerto remotos a los cuales está asociada la petición.
-net.header.Protocol=Protocolo
-net.header.Protocol_Tooltip=El protocolo de la URL utilizada para ubicar el elemento en la web.
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=Puntos de interrupción XHR
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Interrumpir en XHR
-net.tip.Break_On_XHR=Interrumpir la ejecución de JavaScript en cuanto se produzca un XMLHttpRequest
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=ver código fuente
-net.headers.pretty_print=impresión linda
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Medios
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Post
-Put=Put
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Respuesta
-URLParameters=Parámetros
-Cache=Caché
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Información general
-fontviewer.Meta_Data=Metadatos
-fontviewer.view_source=ver código fuente
-fontviewer.Preview=Vista previa
-fontviewer.view_characters=ver caracteres
-fontviewer.pretty_print=impresión linda
-fontviewer.view_sample=ver muestra
-fontviewer.uniqueid=ID única
-fontviewer.vendor=Proveedor
-fontviewer.license=Licencia
-fontviewer.description=Descripción
-fontviewer.copyright=Copyright
-fontviewer.credits=Créditos
-fontviewer.trademark=Marca registrada
-fontviewer.licensee=Licenciado a
-fontviewer.extension=Extensión
-fontviewer.pangram=El veloz murciélago hindú comía feliz cardillo y kiwi.
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Ordenar por clave
-jsonviewer.do_not_sort=No ordenar
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copiar \\\"%S\\\" como JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Encabezados de la petición
-ResponseHeaders=Encabezados de la respuesta
-CachedResponseHeaders=Encabezados de la respuesta desde la caché
-PostRequestHeaders=Pedir cabeceras del upload stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Se alcanzó el límite del registro de Firebug. %1$S entrada oculta.;Se alcanzó el límite del registro de Firebug. %1$S entradas ocultas.
-LimitPrefs=Preferencias
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Para poder cambiar el límite debe modificar: %S
-Refresh=Refrescar
-panel.tip.Refresh=Refrescar el panel
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Abrir en pestaña nueva
-firebug.tip.Open_In_Tab=Abrir la URL en una nueva pestaña del navegador
-Open_Response_In_New_Tab=Abrir respuesta en una pestaña nueva
-net.tip.Open_Response_In_New_Tab=Abrir la respuesta en una nueva pestaña del navegador
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Perfilar
-ProfilerStarted=El perfilador está ejecutándose. Haga click en \'Perfilar\' otra vez para ver el reporte.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S llamada);(%1$Sms, %2$S llamadas)
-NothingToProfile=Ninguna actividad para perfilar.
-PercentTooltip=Porcentaje de tiempo utilizado en esta función.
-CallsHeaderTooltip=Número de veces que la función fue invocada.
-OwnTimeHeaderTooltip=Tiempo utilizado en la función, excluyendo llamadas anidadas.
-TimeHeaderTooltip=Tiempo utilizado en la función, incluyendo llamadas anidadas.
-AvgHeaderTooltip=Tiempo promedio, incluyendo llamadas a funciones.
-MinHeaderTooltip=Tiempo mínimo, incluyendo llamadas a funciones.
-MaxHeaderTooltip=Tiempo máximo, incluyendo llamadas a funciones.
-ProfileButton.Enabled.Tooltip=Perfilar tiempo de ejecución de JavaScript.
-ProfileButton.Disabled.Tooltip=Perfilar tiempo de ejecución de JavaScript (Debe habilitar el panel de Script).
-Function=Función
-Percent=Porcentaje
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Llamadas
-OwnTime=Tiempo propio
-Time=Tiempo
-Avg=Prom
-Min=Mín
-Max=Máx
-File=Archivo
-# Support for standard actions.
-Copy=Copiar
-Cut=Cortar
-Remove=Borrar
-Delete=Eliminar
-Paste=Pegar
-SelectAll=Seleccionar todo
-html.Copy_Node=Copiar %S
-html.tip.Copy_Node=Copiar el nodo de %S y todo su contenido al portapapeles
-CopyInnerHTML=Copiar innerHTML
-html.tip.Copy_innerHTML=Copiar el contenido del elemento al portapapeles
-CopyXPath=Copiar XPath
-html.tip.Copy_XPath=Copiar el XPath del elemento al portapapeles
-Copy_CSS_Path=Copiar Path CSS
-html.tip.Copy_CSS_Path=Copiar la ruta CSS del elemento al portapapeles
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Copiar ubicación
-clipboard.tip.Copy_Location=Copiar la URL del objeto al portapapeles
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Copiar ubicación con parámetros
-net.tip.Copy_Location_Parameters=Copiar la URL incluyendo los parámetros al portapapeles
-CopyRequestHeaders=Copiar encabezados de la petición
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Copiar encabezados de la respuesta
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Copiar cuerpo de la respuesta
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Copiar error
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Copiar función
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Registrar llamadas a \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Eventos registrados
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Habilitado
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=La consola de Firebug no soporta \'%S\'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=La línea de comandos de Firebug no soporta \'%S\'
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Deshabilitar interrupción en todos los errores
-console.Break_On_All_Errors=Interrumpir en todos los errores
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Interrumpir en este error
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript se encuentra deshabilitado en las preferencias del Firefox. Si desea utilizar la ventana de la consola, habilite esta opción en \'Herramientas\' -> \'Opciones\' -> \'Contenido\' -> \'Habilitar JavaScript\'
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=Hay demasiados elementos en el array como para mostrarlos en la página (el límite actual es %S).\\\\nVea la opción \\\'extensions.firebug.multiHighlightLimit\\\'.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=La línea de comandos de Firebug no está habilitada para páginas XML. Puede <a>cambiar a HTML</a> para habilitarla.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Cuerpo de la respuesta
-net.sizeinfo.Post_Body=Cuerpo del Post
-net.sizeinfo.Total_Sent=Total enviado
-net.sizeinfo.Total_Received=Total recibido
-net.sizeinfo.Including_HTTP_Headers=Incluir encabezados HTTP
-net.ActivationMessage=Panel de Red activado. Todos los pedidos que se realicen mientras el panel de red esté inactivo no se muestran.
-net.responseSizeLimitMessage=Se ha alcanzado el tamaño máximo de respuesta de Firebug. Haga click <a>aquí</a> para abrir la respuesta completa en una nueva pestaña de Firefox.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Se ha alcanzado el límite del cuerpo del Post.
-net.Break_On_XHR=Interrumpir en XHR
-net.label.Parameters=Parámetros
-net.label.Parts=Partes
-net.label.Source=Código fuente
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Reenviar
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Deshabilitar la caché del navegador
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Mostrar eventos de redibujado
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Mostrar respuestas de la BFCache
-net.option.tip.Show_BFCache_Responses=Se mostrarán también las respuestas de la caché back-forward
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Interrummpir en el siguiente
-script.Disable_Break_On_Next=Deshabilitar interrumpir en el siguiente
-ShowHttpHeaders=Mostrar encabezados HTTP
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S petición;%1$S peticiones
-FromCache=desde la caché
-StopLoading=Interrumpir la carga
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Datos muy grandes)
-ShowComputedStyle=Mostrar estilo interpretado
-StyleGroup-text=Texto
-StyleGroup-background=Fondo
-StyleGroup-box=Modelo de caja
-StyleGroup-layout=Maquetación
-StyleGroup-other=Otro
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Copiar color
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Copiar ubicación de la imagen
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Abrir imagen en una pestaña nueva
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Omitir pila de la barra de herramientas
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Cargar código fuente original
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copiar declaración de regla
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Copiar la declaración de estilo
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Error;%1$S Errores
-moduleManager.title=El panel %S está deshabilitado
-moduleManager.desc3=Use el menú del ícono de Firebug en la barra de estado para habilitar y deshabilitar todos los paneles. Use el menú de la pestaña del panel para controles individuales:
-moduleManager.Enable=Activar
-Suspend_Firebug=Suspender Firebug
-Resume_Firebug=Continuar Firebug
-Reset_Panels_To_Disabled=Reinicializar paneles a deshabilitado
-Open_Console=Abrir la consola
-Open_Console_Tooltip=Abrir la consola de rastreo para Firebug.
-Scope_Chain=Cadena de scope
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=With
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Llamada
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Ventana
-Logs=Registros
-Options=Opciones
-Copy_Stack=Copiar pila
-Copy Exception=Copiar excepción
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Bloqueando
-requestinfo.Resolving=Búsqueda DNS
-requestinfo.Connecting=Conectando
-requestinfo.Sending=Enviando
-requestinfo.Waiting=Esperando
-requestinfo.Receiving=Recibiendo
-requestinfo.ContentLoad=\'DOMContentLoaded\' (evento)
-requestinfo.WindowLoad=\'load\' (evento)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Tiempo de inicio de la petición desde el principio
-requestinfo.phases.label=Comienzo de las fases de la petición y tiempo transcurrido con respecto al inicio de la petición:
-requestinfo.timings.label=Tiempos de los eventos con respecto al inicio de la petición:
-search.Firebug_Search=Búsqueda de Firebug
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Siguiente
-search.tip.Next=Search for the next match
-search.Previous=Anterior
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Forzar distinguir mayúsculas y minúsculas
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=No distinguir entre mayúsculas y minúsculas
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Múltiples archivos
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Usar Expresión Regular
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=Selector CSS
-search.net.Headers=Encabezados
-search.net.Parameters=Parámetros
-search.net.Response_Bodies=Cuerpo de las respuestas
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persistir
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Mostrar todas las entradas del log
-firebug.console.Errors=Errores
-firebug.console.Filter_by_Errors=Filtrar por errores
-firebug.console.Warnings=Advertencias
-firebug.console.Filter_by_Warnings=Filtrar por advertencias
-firebug.console.Info=Información
-firebug.console.Filter_by_Info=Filtrar por información
-firebug.console.Debug_Info=Información de depuración
-firebug.console.Filter_by_Debug_Info=Filtrar por información de depuración
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Abrir Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Ocultar Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Habilitar todos los paneles
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Deshabilitar todos los paneles
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Personalizar atajos
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Opciones
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Habilitar mejoras de accesibilidad
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Reinicializar todas las opciones de Firebug
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug Online
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Mostrar número de errores
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Tamaño del texto
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Aumentar tamaño del texto
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Reducir tamaño del texto
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Tamaño de texto normal
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Sitio web de Firebug...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Documentación...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Atajos del teclado...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Grupo de discusión...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Reportar bugs...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Colaborar...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Acerca de...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Buscar
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Reescribir comando
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Activar/desactivar inspección
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Habilitar/deshabilitar caja de información rápida
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Activar/desactivar perfilado
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Enfocar la línea de comandos
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Enfocar la búsqueda de Firebug
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Enfocar el editor de seguimiento
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Enfocar ubicación
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Siguiente objeto
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Objeto anterior
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Personalizar teclas de Firebug
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Abrir Firebug en una ventana nueva
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Pasar al panel izquierdo de Firebug
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Pasar al panel derecho de Firebug
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Abrir Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Pestaña de Firebug anterior
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Limpiar consola
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Abrir consola de rastreo
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Regresar
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Avanzar
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Aumentar tamaño del texto
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Reducir tamaño del texto
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Tamaño de texto normal
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Seleccionador de Panel
-customizeShortcuts=Atajos de Firebug
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=herramientas del panel
-a11y.labels.firebug_panels=Paneles de Firebug
-a11y.labels.firebug_side_panels=Paneles laterales de Firebug
-a11y.labels.firebug_window=ventana de firebug
-a11y.labels.firebug_status=estado de firebug
-a11y.labels.reset=reinicializar
-a11y.labels.reset_shortcut=reinicializar atajo de %S
-aria.labels.inactive_panel=panel inactivo
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=líneas del registro
-a11y.labels.call_stack=pila de llamadas
-a11y.labels.document_structure=estructura del documento
-a11y.labels.title_panel=panel de %S
-a11y.labels.title_side_panel=panel lateral de %S
-a11y.labels.cached=cacheado
-aria.labels.stack_trace=rastreo de pila
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=rellenado
-a11y.layout.border=borde
-a11y.layout.margin=margen
-a11y.layout.position=posición
-a11y.layout.position_top=posición arriba
-a11y.layout.position_right=posición derecha
-a11y.layout.position_bottom=posición abajo
-a11y.layout.position_left=posición izquierda
-a11y.layout.margin_top=margen superior
-a11y.layout.margin_right=margen derecho
-a11y.layout.margin_bottom=margen inferior
-a11y.layout.margin_left=margen izquierdo
-a11y.layout.border_top=borde superior
-a11y.layout.border_right=borde derecho
-a11y.layout.border_bottom=borde inferior
-a11y.layout.border_left=borde izquierdo
-a11y.layout.padding_top=rellenado superior
-a11y.layout.padding_right=rellenado derecho
-a11y.layout.padding_bottom=rellenado inferior
-a11y.layout.padding_left=rellenado izquierdo
-a11y.layout.top=superiro
-a11y.layout.right=derecho
-a11y.layout.bottom=inferior
-a11y.layout.left=izquierdo
-a11y.layout.width=ancho
-a11y.layout.height=alto
-a11y.layout.size=tamaño
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=coordenadas de rectángulo de cliente
-a11y.descriptions.press_enter_to_edit_values=Presione enter seguido de tabulación para editar valores individuales
-a11y.labels.style_rules=reglas de estilo
-aria.labels.inherited_style_rules=reglas de estilo heredadas
-a11y.labels.computed_styles=estilos interpretados
-a11y.labels.dom_properties=propiedades DOM
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=editor en línea
-a11y.labels.value_for_attribute_in_element=valor del atributo %S en el elemento %S
-a11y.labels.attribute_for_element=atributo del elemento %S
-a11y.labels.text_contents_for_element=contenido del texto para el elemento %s
-a11y.labels.defined_in_file=definido en %S
-a11y.labels.declarations_for_selector=declaraciones de estilo para el selector \"%S\"
-a11y.labels.property_for_selector=propiedad CSS para el selector: %S
-a11y.labels.value_property_in_selector=valor de la propiedad %S en el selector %S
-a11y.labels.css_selector=selector CSS
-a11y.labels.source_code_for_file=código fuente para el archivo %S
-a11y.labels.press_enter_to_add_new_watch_expression=presione enter para agregar una nueva expresión de seguimiento
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=anulado
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=tiene un punto de interrupción condicional
-a11y.updates.has_disabled_break_point=tiene un punto de interrupción deshabilitado
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script suspendido en la línea %S, en %S, archivo %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=se encontraron coincidencias de %S en %S líneas del registro
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=se encontraron coincidencias de %S en %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=se encontraron coincidencias de %S en el elemento %S en %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=se encontraron coincidencias para %S en el atributo %S=%S en el elemento %S en %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=se encontraron coincidencias para %S en el contenido del texto: %S del elemento %S en %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=se encontraron coincidencias para %S en el selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=se encontraron coincidencias para \"%S\" en la declaración de estilo %S en el selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=se encontraron coincidencias para %S en la propiedad DOM %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=se encontraron coincidencias para \"%S\" en %S, %S: %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=se encontraron coincidencias para %S en la fila de resumen de red: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=no se encontraron coincidencias para \"%S\"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=¿Está seguro de que desea reinicializar todas las opciones de Firebug a su estado predeterminado?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Sus modificaciones del CSS actuales se descartarán.\\\\n¿Está seguro que quiere editar el código fuente?
-# Console messages
-warning.Console_must_be_enabled=La consola debe estar habilitada
-warning.Command_line_blocked?=¿Está bloqueada la línea de comandos?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Recargue la página para activar la consola de la ventana
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Recargue la página para obtener el código fuente de
-message.The_resource_from_this_URL_is_not_text=El recurso de esta URL no es texto
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Volver a este panel
-firebug.history.Stay_on_this_panel=Mantenerse en este panel
-firebug.history.Go_forward_to_this_panel=Avanzar a este panel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Volver
-firebug.history.Go_forward=Avanzar
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=El panel Script estaba inactivo durante la carga de la página
-script.suggestion.inactive_during_page_load2=<a>Recargue la página</a> para ver todos los códigos fuentes
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=JavaScript no está habilitado
-script.suggestion.javascript_not_enabled=Vea Firefox > Herramientas > Opciones > Contenido > Habilitar JavaScript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Habilitar JavaScript y refrescar
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Se filtraron todos los scripts
-script.suggestion.all_scripts_filtered=Vea la configuración Filtro de scripts en la barra de herramientas o la opción \"Ver fuentes del chrome\"
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=No hay ningún JavaScript en esta página
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=El depurador ya está activo
-script.suggestion.debugger_active=El depurador está actualmente detenido en un punto de interrupción en otra página.
-script.button.Go_to_that_page=Ir a esa página
-script.warning.debugger_not_activated=El depurador no está activo
-script.suggestion.debugger_not_activated=El depurador no está activado
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Cerrar
-firebug.View=Ver
-firebug.Help=Ayuda
-firebug.Run=Ejecutar
-firebug.Copy=Copiar
-firebug.History=Historial
-firebug.Run_the_entered_command=Ejecutar el comando ingresado
-firebug.Clear_the_Command_Editor=Limpiar el editor de comandos
-firebug.Copy_the_script_as_a_bookmarklet=Copiar el script como bookmarklet
-firebug.Insert_a_previously_entered_command=Insertar un comando ingresado anteriormente
-firebug.AlwaysOpenInWindow=Abrir siempre en una ventana nueva
-firebug.OpenWith=Abrir con el editor
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Sitios...
-firebug.Configure_Editors=Configurar editores
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Ejecutar hasta esta línea
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Inspeccionar
-firebug.InspectElement=Inspeccionar elemento
-firebug.InspectElementWithFirebug=Inspeccionar elemento con FireBug
-firebug.BreakOnErrors=Interrumpir en errores
-firebug.InspectTooltip=Haga click sobre un elemento de la página para inspeccionarlo
-firebug.EditHTMLTooltip=Editar este HTML
-firebug.Profile=Perfilar
-firebug.Clear=Limpiar
-firebug.ClearConsole=Limpiar consola
-firebug.ClearTooltip=Limpiar la consola
-firebug.All=Todo
-firebug.Images=Imágenes
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Editores de Firebug configurados
-editors.Editor=Editor
-editors.Executable=Ejecutable
-editors.Launch_Arguments=Parámetros de inicio
-editors.Add=Agregar
-editors.Remove=Quitar
-editors.Change=Modificar
-editors.Move_Up=Mover arriba
-editors.Close=Cerrar
-editors.Browse=Examinar…
-changeEditor.Editor_Configuration=Configuración del editor
-changeEditor.Name=Nombre:
-changeEditor.Executable=Ejecutable:
-changeEditor.CmdLine=Parámetros:
-changeEditor.Supplied_arguments=Parámetros proporcionados por Firebug:
-changeEditor.URL_of_file=URL del archivo (si %url no se encuentra, se agregará %file de forma predeterminada)
-changeEditor.Path_to_local_file=Ruta del archivo local (o de la copia temporaria)
-changeEditor.Line_number=Número de línea (si se encuentra disponible)
-changeEditor.Invalid_Application_Path=Ruta de la aplicación no válida
-changeEditor.Application_does_not_exist=¡La aplicación especificada no existe!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Editar
-firebug.css.sourceEdit=Editar código fuente
-firebug.css.sourceEdit.tooltip=Editar el código de la hoja de estilos tal como la cargó el navegador
-firebug.css.liveEdit=Edición en vivo
-firebug.css.liveEdit.tooltip=Editar el CSS extraído del navegador
-firebug.EditCSSTooltip=Editar esta hoja de estilos
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Los sitios no son recordados en el modo Navegación Privada
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Mostrar notificaciones de interrupción
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=Puede deshabilitar/habilitar las notificaciones de interrupción en el <a>menú de la pestaña del panel</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Al hacer click en el botón \'Deshabilitar\', se ignora el \'depurador\' con un punto de interrupción deshabilitado.
-firebug.bon.tooltip.disableDebuggerKeyword2=Crea un punto de interrupción deshabilitado
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(el panel Script debe habilitarse para poder utilizar esta función)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=No hay objetos hijos
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=más
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S ítem en Almacenamiento;%1$S ítems en Almacenamiento
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Propiedades del objeto
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(no hay sugerencias)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=El objeto URL ha sido probablemente revocado utilizando el método revokeObjectURL.
-firebug.failedToPreviewImageURL=No se pudo cargar la URL.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Perfilador de memoria iniciado
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objetos agregados mientras se perfilaba
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Resultados del perfilador de memoria
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Toda la sesión
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Consola
+panel.tip.console=Permite ver los mensajes de la consola y ejecutar comandos JavaScript
+Panel-net=Red
+panel.tip.net=Permite analizar el tráfico de la red
+Panel-html=HTML
+panel.tip.html=Permite inspeccionar y manipular los nodos DOM
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Permite inspeccionar y manipular las hojas de estilo CSS
+Panel-script=Script
+panel.tip.script=Permite depurar JavaScript
+Panel-dom=DOM
+panel.tip.dom=Permite inspeccionar y manipular las propiedades DOM
+Panel-css=Estilo
+panel.tip.css=Permite inspeccionar y manipular las reglas CSS del nodo DOM seleccionado
+Panel-computed=Interpretado
+panel.tip.computed=Permite inspeccionar los valores CSS interpretados del nodo DOM seleccionado
+Panel-layout=Maquetación
+panel.tip.layout=Permite inspeccionar y manipular la información de disposición del nodo DOM seleccionado
+Panel-domSide=DOM
+panel.tip.domSide=Permite inspeccionar y manipular las propiedades DOM del nodo DOM seleccionado
+Panel-watches=Observar
+panel.tip.watches=Permite inspeccionar las variables JavaScript disponibles en el marco de la pila actual y definir expresiones de seguimiento
+Panel-breakpoints=Puntos de interrupción
+panel.tip.breakpoints=Permite manipular los puntos de interrupción configurados
+Panel-callstack=Pila
+panel.tip.callstack=Permite ver la pila de llamadas actual de JavaScript
+Panel-scopes=Scopes
+firebug.DetachFirebug=Abrir Firebug en una ventana nueva
+firebug.AttachFirebug=Adjuntar Firebug a una ventana del navegador
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Firebug en total;%1$S Firebugs en total
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Deactivated
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=En el navegador
+minimized=Minimizado
+enablement.for_all_pages=para todas las páginas
+enablement.on=Activado
+enablement.off=Desactivado
+enablement.Panel_activation_status=Panel activation status:
+none=Cerrado
+Firebug_-_inactive_for_current_website=Firebug - desactivado para el sitio actual
+Activate_Firebug_for_the_current_website=Activar Firebug para el sitio actual
+Minimized=Minimizado
+Minimize_Firebug=Minimizar Firebug
+On_for_all_web_pages=Activar para todas las páginas web
+firebug.menu.tip.On_for_all_Web_Sites=Activar Firebug en forma predeterminada para todos los sitios web
+firebug.menu.Clear_Activation_List=Limpiar lista de activación
+firebug.menu.tip.Clear_Activation_List=Limpiar la lista de sitios web para los cuales Firebug está activado
+firebug.menu.Detached=Desanclado
+firebug.menu.tip.Detached=Poner a Firebug en una ventana independiente
+firebug.menu.Top=Arriba
+firebug.menu.tip.Top=Ubicar a Firebug en la parte superior de la ventana del navegador
+firebug.menu.Bottom=Abajo
+firebug.menu.tip.Bottom=Ubicar a Firebug en la parte inferior de la ventana del navegador
+firebug.menu.Left=Izquierda
+firebug.menu.tip.Left=Ubicar a Firebug en la parte izquierda de la ventana del navegador
+firebug.menu.Right=Derecha
+firebug.menu.tip.Right=Ubicar a Firebug en la parte derecha de la ventana del navegador
+firebug.uiLocation=Ubicación de la UI de Firebug
+firebug.menu.tip.UI_Location=Posición de la interfaz de usuario de Firebug
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Opciones de Firebug
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Mostar todos los paneles
+console.option.Show_Command_Line=Mostrar línea de comandos
+console.option.tip.Show_Command_Line=Enfocar la línea de comandos / Mostrar el popup de la línea de comandos
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=Mostrar errores de JavaScript
+console.option.tip.Show_JavaScript_Errors=Mostrar mensajes de error JavaScript en la consola
+ShowJavaScriptWarnings=Mostrar advertencias de JavaScript
+console.option.tip.Show_JavaScript_Warnings=Mostrar mensajes de advertencia de JavaScript en la consola
+ShowCSSErrors=Mostrar errores de CSS
+console.option.tip.Show_CSS_Errors=Mostrar mensajes de error CSS en la consola
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Mostrar rastro de pila con errores
+console.option.tip.Show_Stack_Trace=Mostrar información de seguimiento de pila en los mensajes de error
+ShowXMLHttpRequests=Mostrar XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Mostrar XMLHttpRequests en la consola
+ShowChromeErrors=Mostrar errores del chrome
+console.option.tip.Show_System_Errors=Mostrar mensajes de error internos del programa y sus add-ons en la consola
+ShowChromeMessages=Mostrar mensajes del chrome
+console.option.tip.Show_System_Messages=Mostrar mensajes internos del programa y sus add-ons en la consola
+ShowExternalErrors=Mostrar errores externos
+console.option.tip.Show_External_Errors=Mostrar mensajes de error de fuentes externas en la consola
+ShowNetworkErrors=Mostrar errores de red
+console.option.tip.Show_Network_Errors=Mostrar mensajes de error de red en la consola
+JavascriptOptionsStrict=Advertencias estrictas (penalización de rendimiento)
+console.option.tip.Show_Strict_Warnings=Mostrar también las advertencias estrictas en la consola
+Command_History=Historial de comandos
+console.option.Show_Command_Editor=Mostrar el editor de comandos
+console.option.tip.Show_Command_Editor=Pasar al editor de comandos
+commandLineShowCompleterPopup=Mostrar pop-up con la lista de autocompletado
+console.option.tip.Show_Completion_List_Popup=Mostrar el popup para el completado automático de comandos
+Assertion=Falla de aserción
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (línea %S)
+LineAndCol=%S (línea %S, col %S)
+InstanceLine=%S #%S (línea %S)
+StackItem=%S (%S línea %S)
+SystemItem=<Sistema>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspeccionar en el panel %S
+panel.tip.Inspect_In_Panel=Pasar al panel %S para examinar el objetos allí
+NoName=(sin nombre)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Mostrar texto completo
+html.option.tip.Show_Full_Text=No recortar el contenido del elemento
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Mostrar espacios en blanco
+html.option.tip.Show_Whitespace=Mostrar el espacio en blanco dentro de los nodos
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Mostrar comentarios
+html.option.tip.Show_Comments=Mostrar nodos de comentarios
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Mostrar entidades como símbolos
+html.option.tip.Show_Entities_As_Symbols=Mostrar todas las entidades XML usando su representación simbólica
+html.option.Show_Entities_As_Names=Mostrar entidades como nombres
+html.option.tip.Show_Entities_As_Names=Mostrar todas las entidades XML usando sus nombres
+html.option.Show_Entities_As_Unicode=Mostrar entidades como unicode
+html.option.tip.Show_Entities_As_Unicode=Mostrar todas las entidades XML en su representación unicode
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Resaltar cambios
+html.option.tip.Highlight_Mutations=Destacar cambios dentro de los nodos
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Expandir cambios
+html.option.tip.Expand_Mutations=Expandir la vista de árbol para mostrar los nodos que cambiaron
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Desplazar la vista hasta los cambios
+html.option.tip.Scroll_To_Mutations=Desplazar la vista de árbol para mostrar los nodos cambiados
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Mostrar caja de información rápida
+inspect.option.tip.Show_Quick_Info_Box=Mostrar información acerca del elemento actualmente inspeccionado dentro de un panel impreso sobre la página
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Sombrear el modelo de cajas
+inspect.option.tip.Shade_Box_Model=Sombrear las diferentes partes del modelo de caja
+ScrollIntoView=Desplazar la vista
+html.tip.Scroll_Into_View=Desplazar la página para hacer visible el elemento
+NewAttribute=Nuevo atributo...
+html.tip.New_Attribute=Agregar un nuevo atributo a este elemento
+html.Edit_Node=Editar %S...
+html.Node=Nodo
+html.tip.Edit_Node=Editar el %S usando el editor de texto completo
+DeleteElement=Borrar elemento
+html.Delete_Element=Eliminar el elemento del árbol
+DeleteNode=Borrar nodo
+html.Delete_Node=Eliminar el nodo del árbol
+# Quick Info Box
+quickInfo=Información rápida
+computedStyle=Estilo interpretado
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Interrumpir al mutar
+html.Disable_Break_On_Mutate=Deshabilitar interrupción al mutar
+html.label.Break_On_Text_Change=Interrumpir al cambiar el texto
+html.label.HTML_Breakpoints=Puntos de interrupción de HTML
+html.label.Break_On_Attribute_Change=Interrumpir al cambiar el atributo
+html.tip.Break_On_Attribute_Change=Interrumpir la ejecución de JavaScript cuando cambie un atributo de este elemento
+html.label.Break_On_Child_Addition_or_Removal=Interrumpir al agregar o quitar hijo
+html.tip.Break_On_Child_Addition_or_Removal=Interrumpir la ejecución de JavaScript cuando se agregue o elimine un nodo hijo de este elemento
+html.label.Break_On_Element_Removal=Interrumpir al quitar elemento
+html.tip.Break_On_Element_Removal=Interrumpir la ejecución de JavaScript cuando se elimine este elemento
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Expandir/Minimizar todo
+html.tip.Expand/Contract_All=Expandir/colapsar todos los hijos recursivamente
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Interrumpir al detectar cambios en la propiedad
+dom.tip.Break_On_Property_Change=Interrumpir la ejecución de JavaScript cuando cambie esta propiedad
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Deshabilitar interrupción al detectar cambios en la propiedad
+dom.label.DOM_Breakpoints=Puntos de interrupción del DOM
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Editar atributo \"%S\"...
+html.tip.Edit_Attribute=Editar el valor del atributo "%S" de este elemento
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Borrar atributo \"%S\"
+html.tip.Delete_Attribute=Eliminar el atributo "%S" de este elemento
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Heredado de
+SothinkWarning=La extensión Sothink SWF Catcher está impidiendo que Firebug funcione correctamente.<br><br>Por favor lea <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">esta entrada en las FAQ de Firebug</a> para obtener ayuda.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=El veloz murciélago hindú comía feliz cardillo y kiwi. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=No hay ninguna regla. Puede <a>crear una</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=Este elemento no tiene reglas de estilo. Puede <a>crear una</a>.
+EditStyle=Editar estilo del elemento...
+style.tip.Edit_Style=Editar el estilo en línea de este elemento
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Nueva regla...
+css.tip.New_Rule=Agregar una regla
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Borrar "%S"
+css.tip.Delete_Rule=Borrar la regla "%S" y todas sus propieades
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Editar consulta de medios...
+css.menu.tip.Edit_Media_Query=Editar la consulta de medios asignada a esta regla
+NewProp=Nueva propiedad...
+css.tip.New_Prop=Agregar una propiedad a la regla actual
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=Editar \"%S\"...
+css.tip.Edit_Prop=Editar el valor de la propiedad "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=Deshabilitar \"%S\"
+css.tip.Disable_Prop=Desactivar la propiedad "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=Borrar \"%S\"
+css.tip.Delete_Prop=Eliminar la propiedad "%S"
+# Console context menu labels.
+BreakOnThisError=Interrumpir en este error
+console.menu.tip.Break_On_This_Error=Interrumpir la ejecución de JavaScript en cuanto ocurra este error
+BreakOnAllErrors=Interrumpir en todos los errores
+console.menu.tip.Break_On_All_Errors=Interrumpir la ejecución de JavaScript en cuanto ocurra un error
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Rastrear Throw/Catch
+script.option.tip.Track_Throw_Catch=Rastrear excepciones incluso cuando son capturadas por bloques try/catch
+UseLastLineForEvalName=Usar la última línea del código para los nombres de los eval()
+UseMD5ForEvalName=Usar MD5 para los nombres de los eval()
+# Breakpoints side panel
+Breakpoints=Puntos de interrupción
+ErrorBreakpoints=Puntos de interrupción por errores
+LoggedFunctions=Funciones registradas
+EnableAllBreakpoints=Habilitar todos los puntos de interrupción
+breakpoints.option.tip.Enable_All_Breakpoints=Activar todos los puntos de interrupción de la lista
+DisableAllBreakpoints=Deshabilitar todos los puntos de interrupción
+breakpoints.option.tip.Disable_All_Breakpoints=Desactivar todos los puntos de interrupción de la lista
+ClearAllBreakpoints=Borrar todos los puntos de interrupción
+breakpoints.option.tip.Clear_All_Breakpoints=Eliminar todos los puntos de interrupción de la lista
+ConditionInput=Este punto de interrupción sólo detendrá la ejecución si esta expresión es verdadera:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Borrar punto de interrupción
+breakpoints.tip.Remove_Breakpoint=Eliminar el punto de interrupción
+breakpoints.Disable_Breakpoint=Deshabilitar punto de interrupción
+breakpoints.tip.Disable_Breakpoint=Desactivar el punto de interrupción
+breakpoints.Enable_Breakpoint=Habilitar punto de interrupción
+breakpoints.tip.Enable_Breakpoint=Activar el punto de interrupción
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Continuar
+script.balloon.Disable=Deshabilitar
+ScriptsFilterStatic=Mostrar scripts estáticos
+ScriptsFilterEval=Mostrar scripts estáticos y evaluados
+ScriptsFilterEvent=Mostrar scripts estáticos y de eventos
+ScriptsFilterAll=Mostrar scripts estáticos, evaluados y de eventos
+ScriptsFilterStaticShort=Estáticos
+ScriptsFilterEvalShort=Evaluadoss
+ScriptsFilterEventShort=Eventos
+ScriptsFilterAllShort=Todos
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Expandir todo
+callstack.tip.Expand_All=Expandir todas las funciones del marco de pila
+callstack.Collapse_All=Colapsar todo
+callstack.tip.Collapse_All=Colapsar todas las funciones del marco de pila
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Los marcos de pila sólo se muestran cuando la ejecución está interrumpida.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Mostrar propiedades definidas por el usuario
+dom.option.tip.Show_User_Props=Mostrar propiedades del objeto definidas por el usuario
+ShowUserFuncs=Mostrar funciones definidas por el usuario
+dom.option.tip.Show_User_Funcs=Mostrar métodos del objeto definidos por el usuario
+ShowDOMProps=Mostrar propiedades del DOM
+dom.option.tip.Show_DOM_Props=Mostrar propiedades especificadas dentro del DOM
+ShowDOMFuncs=Mostrar funciones del DOM
+dom.option.tip.Show_DOM_Funcs=Mostrar funciones especificadas dentro del DOM
+ShowDOMConstants=Mostrar constantes del DOM
+dom.option.tip.Show_DOM_Constants=Mostrar constantes especificadas dentro del DOM
+ShowInlineEventHandlers=Mostrar los Inline Event Handlers
+ShowInlineEventHandlersTooltip=Mostrar los inline event handlers que no estén associados a una función.
+ShowOwnProperties=Mostrar solamente las propiedades del objeto
+ShowOwnPropertiesTooltip=No mostrar la cadena de prototipos
+ShowEnumerableProperties=Mostrar solamente las propiedades enumerables
+ShowEnumerablePropertiesTooltip=No mostrar propiedades no enumerables
+NoMembersWarning=No hay propiedades para mostrar de este objeto.
+NewWatch=Nueva expresión de seguimiento...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Agregar seguimiento
+watch.tip.Add_Watch=Agregar la selección/objeto al panel lateral de seguimiento
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Copiar código fuente
+script.tip.Copy_Source_Code=Copiar el código fuente seleccionado al portapapeles
+Use_hash_plus_number_to_go_to_line=Usar #<número> para ir a la línea
+CopyValue=Copiar valor
+dom.tip.Copy_Value=Copiar el valor de la propiedad al portapapeles
+Copy_Name=Copiar nombre
+dom.tip.Copy_Name=Copiar el nombre de la propiedad al portapapeles
+Copy_Path=Copiar ruta
+dom.tip.Copy_Path=Copiar la ruta de la propiedad
+NewProperty=Nueva propiedad...
+EditProperty=Editar propiedad...
+dom.tip.Edit_Property=Editar el valor de la propiedad
+EditVariable=Editar variable...
+stack.tip.Edit_Variable=Editar el valor de la variable
+EditWatch=Editar seguimiento...
+watch.tip.Edit_Watch=Editar el valor de la expresión de seguimiento
+DeleteProperty=Borrar propiedad
+dom.tip.Delete_Property=Eliminar la propiedad
+DeleteWatch=Borrar seguimiento
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Eliminar la expresión de seguimiento
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Establecer punto de interrupción
+script.tip.Set_Breakpoint=Activa/desactiva la configuración de un punto de interrupción en la línea actual
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Editar condición de punto de interrupción...
+breakpoints.tip.Edit_Breakpoint_Condition=Edita la condición bajo la cual este punto de interrupción detiene la ejecución de JavaScript
+NoBreakpointsWarning=No hay puntos de interrupción en esta página.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Mostrar solamente estilos aplicados
+style.option.tip.Only_Show_Applied_Styles=Mostrar los estilos aplicados a este elemento
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Mostrar CSS del User Agent
+style.option.tip.Show_User_Agent_CSS=Mostrar también el CSS definido por el navegador
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colores en hexadecimal
+computed.option.tip.Colors_As_Hex=Mostrar los colores en formato hexadecimal
+computed.option.label.Colors_As_RGB=Colores en RGB
+computed.option.tip.Colors_As_RGB=Mostrar los colores en formato RGB
+computed.option.label.Colors_As_HSL=Colores en HSL
+computed.option.tip.Colors_As_HSL=Mostrar los colores en formato HSL
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Mostrar estilos de la pseudoclase :active
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Mostrar estilos de la pseudoclase :hover
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Mostrar estilos de la pseudoclase :focus
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspeccionar declaración
+css.tip.Inspect_Declaration=Inspeccionar la declaración de esta fuente
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Expandir Propiedades Abreviadas
+css.option.tip.Expand_Shorthand_Properties=Expandir declaraciones abreviadas de CSS en sus componentes
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Ordenar alfabéticamente
+computed.option.tip.Sort_Alphabetically=Ordenar los estilos por nombre/agrupar los estilos en categorías
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Mostrar estilos específicos de Mozilla
+computed.option.tip.Show_Mozilla_Specific_Styles=Mostrar también los estilos con el prefijo -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=Este elemento no tiene reglas de estilo definidas por el usuario.
+script.Type_any_key_to_filter_list=Pulse cualquier tecla para filtrar la lista
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=rellenado
+LayoutBorder=borde
+LayoutMargin=margen
+LayoutPosition=posición
+LayoutAdjacent=adyacente
+position=posición
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Mostrar reglas y guías
+layout.option.tip.Show_Rulers=Mostrar reglas y guías en la página al desplazar el cursor sobre partes de la caja
+# Net panel
+Loading=Cargando...
+Headers=Encabezados
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Limpiar la lista de peticiones
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Reiniciar encabezado
+net.header.tip.Reset_Header=Reinicializar la visualización de cabeceras
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=URL pedida y método HTTP utilizado.
+net.header.Status=Estado
+net.header.Status_Tooltip=Estado de la respuesta recibida.
+net.header.Domain=Dominio
+net.header.Domain_Tooltip=Dominio de la petición ejecutada.
+net.header.Size=Tamaño
+net.header.Size_Tooltip=Tamaño de la respuesta recibida.
+net.header.Timeline=Línea de tiempo
+net.header.Timeline_Tooltip=Información detallada acerca del tiempo de viaje de la respuesta a la petición.
+net.header.Local_IP=IP local
+net.header.Local_IP_Tooltip=Dirección IP y número de puerto locales a los cuales está asociada la petición.
+net.header.Remote_IP=IP remota
+net.header.Remote_IP_Tooltip=Dirección IP y número de puerto remotos a los cuales está asociada la petición.
+net.header.Protocol=Protocolo
+net.header.Protocol_Tooltip=El protocolo de la URL utilizada para ubicar el elemento en la web.
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=Puntos de interrupción XHR
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Interrumpir en XHR
+net.tip.Break_On_XHR=Interrumpir la ejecución de JavaScript en cuanto se produzca un XMLHttpRequest
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=ver código fuente
+net.headers.pretty_print=impresión linda
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Medios
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Post
+Put=Put
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Respuesta
+URLParameters=Parámetros
+Cache=Caché
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Información general
+fontviewer.Meta_Data=Metadatos
+fontviewer.view_source=ver código fuente
+fontviewer.Preview=Vista previa
+fontviewer.view_characters=ver caracteres
+fontviewer.pretty_print=impresión linda
+fontviewer.view_sample=ver muestra
+fontviewer.uniqueid=ID única
+fontviewer.vendor=Proveedor
+fontviewer.license=Licencia
+fontviewer.description=Descripción
+fontviewer.copyright=Copyright
+fontviewer.credits=Créditos
+fontviewer.trademark=Marca registrada
+fontviewer.licensee=Licenciado a
+fontviewer.extension=Extensión
+fontviewer.pangram=El veloz murciélago hindú comía feliz cardillo y kiwi.
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Ordenar por clave
+jsonviewer.do_not_sort=No ordenar
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copiar \\\"%S\\\" como JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Encabezados de la petición
+ResponseHeaders=Encabezados de la respuesta
+CachedResponseHeaders=Encabezados de la respuesta desde la caché
+PostRequestHeaders=Pedir cabeceras del upload stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Se alcanzó el límite del registro de Firebug. %1$S entrada oculta.;Se alcanzó el límite del registro de Firebug. %1$S entradas ocultas.
+LimitPrefs=Preferencias
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Para poder cambiar el límite debe modificar: %S
+Refresh=Refrescar
+panel.tip.Refresh=Refrescar el panel
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Abrir en pestaña nueva
+firebug.tip.Open_In_Tab=Abrir la URL en una nueva pestaña del navegador
+Open_Response_In_New_Tab=Abrir respuesta en una pestaña nueva
+net.tip.Open_Response_In_New_Tab=Abrir la respuesta en una nueva pestaña del navegador
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Perfilar
+ProfilerStarted=El perfilador está ejecutándose. Haga click en \'Perfilar\' otra vez para ver el reporte.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S llamada);(%1$Sms, %2$S llamadas)
+NothingToProfile=Ninguna actividad para perfilar.
+PercentTooltip=Porcentaje de tiempo utilizado en esta función.
+CallsHeaderTooltip=Número de veces que la función fue invocada.
+OwnTimeHeaderTooltip=Tiempo utilizado en la función, excluyendo llamadas anidadas.
+TimeHeaderTooltip=Tiempo utilizado en la función, incluyendo llamadas anidadas.
+AvgHeaderTooltip=Tiempo promedio, incluyendo llamadas a funciones.
+MinHeaderTooltip=Tiempo mínimo, incluyendo llamadas a funciones.
+MaxHeaderTooltip=Tiempo máximo, incluyendo llamadas a funciones.
+ProfileButton.Enabled.Tooltip=Perfilar tiempo de ejecución de JavaScript.
+ProfileButton.Disabled.Tooltip=Perfilar tiempo de ejecución de JavaScript (Debe habilitar el panel de Script).
+Function=Función
+Percent=Porcentaje
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Llamadas
+OwnTime=Tiempo propio
+Time=Tiempo
+Avg=Prom
+Min=Mín
+Max=Máx
+File=Archivo
+# Support for standard actions.
+Copy=Copiar
+Cut=Cortar
+Remove=Borrar
+Delete=Eliminar
+Paste=Pegar
+SelectAll=Seleccionar todo
+html.Copy_Node=Copiar %S
+html.tip.Copy_Node=Copiar el nodo de %S y todo su contenido al portapapeles
+CopyInnerHTML=Copiar innerHTML
+html.tip.Copy_innerHTML=Copiar el contenido del elemento al portapapeles
+CopyXPath=Copiar XPath
+html.tip.Copy_XPath=Copiar el XPath del elemento al portapapeles
+Copy_CSS_Path=Copiar Path CSS
+html.tip.Copy_CSS_Path=Copiar la ruta CSS del elemento al portapapeles
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Copiar ubicación
+clipboard.tip.Copy_Location=Copiar la URL del objeto al portapapeles
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Copiar ubicación con parámetros
+net.tip.Copy_Location_Parameters=Copiar la URL incluyendo los parámetros al portapapeles
+CopyRequestHeaders=Copiar encabezados de la petición
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Copiar encabezados de la respuesta
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Copiar cuerpo de la respuesta
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Copiar error
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Copiar función
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Registrar llamadas a \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Eventos registrados
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Habilitado
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=La consola de Firebug no soporta \'%S\'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=La línea de comandos de Firebug no soporta \'%S\'
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Deshabilitar interrupción en todos los errores
+console.Break_On_All_Errors=Interrumpir en todos los errores
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Interrumpir en este error
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript se encuentra deshabilitado en las preferencias del Firefox. Si desea utilizar la ventana de la consola, habilite esta opción en \'Herramientas\' -> \'Opciones\' -> \'Contenido\' -> \'Habilitar JavaScript\'
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=Hay demasiados elementos en el array como para mostrarlos en la página (el límite actual es %S).\\\\nVea la opción \\\'extensions.firebug.multiHighlightLimit\\\'.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=La línea de comandos de Firebug no está habilitada para páginas XML. Puede <a>cambiar a HTML</a> para habilitarla.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Cuerpo de la respuesta
+net.sizeinfo.Post_Body=Cuerpo del Post
+net.sizeinfo.Total_Sent=Total enviado
+net.sizeinfo.Total_Received=Total recibido
+net.sizeinfo.Including_HTTP_Headers=Incluir encabezados HTTP
+net.ActivationMessage=Panel de Red activado. Todos los pedidos que se realicen mientras el panel de red esté inactivo no se muestran.
+net.responseSizeLimitMessage=Se ha alcanzado el tamaño máximo de respuesta de Firebug. Haga click <a>aquí</a> para abrir la respuesta completa en una nueva pestaña de Firefox.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Se ha alcanzado el límite del cuerpo del Post.
+net.Break_On_XHR=Interrumpir en XHR
+net.label.Parameters=Parámetros
+net.label.Parts=Partes
+net.label.Source=Código fuente
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Reenviar
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Deshabilitar la caché del navegador
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Mostrar eventos de redibujado
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Mostrar respuestas de la BFCache
+net.option.tip.Show_BFCache_Responses=Se mostrarán también las respuestas de la caché back-forward
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Interrummpir en el siguiente
+script.Disable_Break_On_Next=Deshabilitar interrumpir en el siguiente
+ShowHttpHeaders=Mostrar encabezados HTTP
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S petición;%1$S peticiones
+FromCache=desde la caché
+StopLoading=Interrumpir la carga
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Datos muy grandes)
+ShowComputedStyle=Mostrar estilo interpretado
+StyleGroup-text=Texto
+StyleGroup-background=Fondo
+StyleGroup-box=Modelo de caja
+StyleGroup-layout=Maquetación
+StyleGroup-other=Otro
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Copiar color
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Copiar ubicación de la imagen
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Abrir imagen en una pestaña nueva
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Omitir pila de la barra de herramientas
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Cargar código fuente original
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copiar declaración de regla
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Copiar la declaración de estilo
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Error;%1$S Errores
+moduleManager.title=El panel %S está deshabilitado
+moduleManager.desc3=Use el menú del ícono de Firebug en la barra de estado para habilitar y deshabilitar todos los paneles. Use el menú de la pestaña del panel para controles individuales:
+moduleManager.Enable=Activar
+Suspend_Firebug=Suspender Firebug
+Resume_Firebug=Continuar Firebug
+Reset_Panels_To_Disabled=Reinicializar paneles a deshabilitado
+Open_Console=Abrir la consola
+Open_Console_Tooltip=Abrir la consola de rastreo para Firebug.
+Scope_Chain=Cadena de scope
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=With
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Llamada
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Ventana
+Logs=Registros
+Options=Opciones
+Copy_Stack=Copiar pila
+Copy Exception=Copiar excepción
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Bloqueando
+requestinfo.Resolving=Búsqueda DNS
+requestinfo.Connecting=Conectando
+requestinfo.Sending=Enviando
+requestinfo.Waiting=Esperando
+requestinfo.Receiving=Recibiendo
+requestinfo.ContentLoad=\'DOMContentLoaded\' (evento)
+requestinfo.WindowLoad=\'load\' (evento)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Tiempo de inicio de la petición desde el principio
+requestinfo.phases.label=Comienzo de las fases de la petición y tiempo transcurrido con respecto al inicio de la petición:
+requestinfo.timings.label=Tiempos de los eventos con respecto al inicio de la petición:
+search.Firebug_Search=Búsqueda de Firebug
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Siguiente
+search.tip.Next=Search for the next match
+search.Previous=Anterior
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Forzar distinguir mayúsculas y minúsculas
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=No distinguir entre mayúsculas y minúsculas
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Múltiples archivos
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Usar Expresión Regular
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=Selector CSS
+search.net.Headers=Encabezados
+search.net.Parameters=Parámetros
+search.net.Response_Bodies=Cuerpo de las respuestas
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persistir
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Mostrar todas las entradas del log
+firebug.console.Errors=Errores
+firebug.console.Filter_by_Errors=Filtrar por errores
+firebug.console.Warnings=Advertencias
+firebug.console.Filter_by_Warnings=Filtrar por advertencias
+firebug.console.Info=Información
+firebug.console.Filter_by_Info=Filtrar por información
+firebug.console.Debug_Info=Información de depuración
+firebug.console.Filter_by_Debug_Info=Filtrar por información de depuración
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Abrir Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Ocultar Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Habilitar todos los paneles
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Deshabilitar todos los paneles
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Personalizar atajos
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Opciones
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Habilitar mejoras de accesibilidad
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Reinicializar todas las opciones de Firebug
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug Online
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Mostrar número de errores
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Tamaño del texto
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Aumentar tamaño del texto
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Reducir tamaño del texto
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Tamaño de texto normal
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Sitio web de Firebug...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Documentación...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Atajos del teclado...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Grupo de discusión...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Reportar bugs...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Colaborar...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Acerca de...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Buscar
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Reescribir comando
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Activar/desactivar inspección
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Habilitar/deshabilitar caja de información rápida
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Activar/desactivar perfilado
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Enfocar la línea de comandos
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Enfocar la búsqueda de Firebug
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Enfocar el editor de seguimiento
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Enfocar ubicación
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Siguiente objeto
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Objeto anterior
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Personalizar teclas de Firebug
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Abrir Firebug en una ventana nueva
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Pasar al panel izquierdo de Firebug
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Pasar al panel derecho de Firebug
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Abrir Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Pestaña de Firebug anterior
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Limpiar consola
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Abrir consola de rastreo
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Regresar
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Avanzar
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Aumentar tamaño del texto
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Reducir tamaño del texto
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Tamaño de texto normal
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Seleccionador de Panel
+customizeShortcuts=Atajos de Firebug
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=herramientas del panel
+a11y.labels.firebug_panels=Paneles de Firebug
+a11y.labels.firebug_side_panels=Paneles laterales de Firebug
+a11y.labels.firebug_window=ventana de firebug
+a11y.labels.firebug_status=estado de firebug
+a11y.labels.reset=reinicializar
+a11y.labels.reset_shortcut=reinicializar atajo de %S
+aria.labels.inactive_panel=panel inactivo
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=líneas del registro
+a11y.labels.call_stack=pila de llamadas
+a11y.labels.document_structure=estructura del documento
+a11y.labels.title_panel=panel de %S
+a11y.labels.title_side_panel=panel lateral de %S
+a11y.labels.cached=cacheado
+aria.labels.stack_trace=rastreo de pila
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=rellenado
+a11y.layout.border=borde
+a11y.layout.margin=margen
+a11y.layout.position=posición
+a11y.layout.position_top=posición arriba
+a11y.layout.position_right=posición derecha
+a11y.layout.position_bottom=posición abajo
+a11y.layout.position_left=posición izquierda
+a11y.layout.margin_top=margen superior
+a11y.layout.margin_right=margen derecho
+a11y.layout.margin_bottom=margen inferior
+a11y.layout.margin_left=margen izquierdo
+a11y.layout.border_top=borde superior
+a11y.layout.border_right=borde derecho
+a11y.layout.border_bottom=borde inferior
+a11y.layout.border_left=borde izquierdo
+a11y.layout.padding_top=rellenado superior
+a11y.layout.padding_right=rellenado derecho
+a11y.layout.padding_bottom=rellenado inferior
+a11y.layout.padding_left=rellenado izquierdo
+a11y.layout.top=superiro
+a11y.layout.right=derecho
+a11y.layout.bottom=inferior
+a11y.layout.left=izquierdo
+a11y.layout.width=ancho
+a11y.layout.height=alto
+a11y.layout.size=tamaño
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=coordenadas de rectángulo de cliente
+a11y.descriptions.press_enter_to_edit_values=Presione enter seguido de tabulación para editar valores individuales
+a11y.labels.style_rules=reglas de estilo
+aria.labels.inherited_style_rules=reglas de estilo heredadas
+a11y.labels.computed_styles=estilos interpretados
+a11y.labels.dom_properties=propiedades DOM
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=editor en línea
+a11y.labels.value_for_attribute_in_element=valor del atributo %S en el elemento %S
+a11y.labels.attribute_for_element=atributo del elemento %S
+a11y.labels.text_contents_for_element=contenido del texto para el elemento %s
+a11y.labels.defined_in_file=definido en %S
+a11y.labels.declarations_for_selector=declaraciones de estilo para el selector \"%S\"
+a11y.labels.property_for_selector=propiedad CSS para el selector: %S
+a11y.labels.value_property_in_selector=valor de la propiedad %S en el selector %S
+a11y.labels.css_selector=selector CSS
+a11y.labels.source_code_for_file=código fuente para el archivo %S
+a11y.labels.press_enter_to_add_new_watch_expression=presione enter para agregar una nueva expresión de seguimiento
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=anulado
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=tiene un punto de interrupción condicional
+a11y.updates.has_disabled_break_point=tiene un punto de interrupción deshabilitado
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script suspendido en la línea %S, en %S, archivo %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=se encontraron coincidencias de %S en %S líneas del registro
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=se encontraron coincidencias de %S en %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=se encontraron coincidencias de %S en el elemento %S en %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=se encontraron coincidencias para %S en el atributo %S=%S en el elemento %S en %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=se encontraron coincidencias para %S en el contenido del texto: %S del elemento %S en %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=se encontraron coincidencias para %S en el selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=se encontraron coincidencias para \"%S\" en la declaración de estilo %S en el selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=se encontraron coincidencias para %S en la propiedad DOM %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=se encontraron coincidencias para \"%S\" en %S, %S: %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=se encontraron coincidencias para %S en la fila de resumen de red: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=no se encontraron coincidencias para \"%S\"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=¿Está seguro de que desea reinicializar todas las opciones de Firebug a su estado predeterminado?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Sus modificaciones del CSS actuales se descartarán.\\\\n¿Está seguro que quiere editar el código fuente?
+# Console messages
+warning.Console_must_be_enabled=La consola debe estar habilitada
+warning.Command_line_blocked?=¿Está bloqueada la línea de comandos?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Recargue la página para activar la consola de la ventana
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Recargue la página para obtener el código fuente de
+message.The_resource_from_this_URL_is_not_text=El recurso de esta URL no es texto
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Volver a este panel
+firebug.history.Stay_on_this_panel=Mantenerse en este panel
+firebug.history.Go_forward_to_this_panel=Avanzar a este panel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Volver
+firebug.history.Go_forward=Avanzar
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=El panel Script estaba inactivo durante la carga de la página
+script.suggestion.inactive_during_page_load2=<a>Recargue la página</a> para ver todos los códigos fuentes
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=JavaScript no está habilitado
+script.suggestion.javascript_not_enabled=Vea Firefox > Herramientas > Opciones > Contenido > Habilitar JavaScript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Habilitar JavaScript y refrescar
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Se filtraron todos los scripts
+script.suggestion.all_scripts_filtered=Vea la configuración Filtro de scripts en la barra de herramientas o la opción \"Ver fuentes del chrome\"
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=No hay ningún JavaScript en esta página
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=El depurador ya está activo
+script.suggestion.debugger_active=El depurador está actualmente detenido en un punto de interrupción en otra página.
+script.button.Go_to_that_page=Ir a esa página
+script.warning.debugger_not_activated=El depurador no está activo
+script.suggestion.debugger_not_activated=El depurador no está activado
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Cerrar
+firebug.View=Ver
+firebug.Help=Ayuda
+firebug.Run=Ejecutar
+firebug.Copy=Copiar
+firebug.History=Historial
+firebug.Run_the_entered_command=Ejecutar el comando ingresado
+firebug.Clear_the_Command_Editor=Limpiar el editor de comandos
+firebug.Copy_the_script_as_a_bookmarklet=Copiar el script como bookmarklet
+firebug.Insert_a_previously_entered_command=Insertar un comando ingresado anteriormente
+firebug.AlwaysOpenInWindow=Abrir siempre en una ventana nueva
+firebug.OpenWith=Abrir con el editor
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Sitios...
+firebug.Configure_Editors=Configurar editores
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Ejecutar hasta esta línea
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Inspeccionar
+firebug.InspectElement=Inspeccionar elemento
+firebug.InspectElementWithFirebug=Inspeccionar elemento con FireBug
+firebug.BreakOnErrors=Interrumpir en errores
+firebug.InspectTooltip=Haga click sobre un elemento de la página para inspeccionarlo
+firebug.EditHTMLTooltip=Editar este HTML
+firebug.Profile=Perfilar
+firebug.Clear=Limpiar
+firebug.ClearConsole=Limpiar consola
+firebug.ClearTooltip=Limpiar la consola
+firebug.All=Todo
+firebug.Images=Imágenes
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Editores de Firebug configurados
+editors.Editor=Editor
+editors.Executable=Ejecutable
+editors.Launch_Arguments=Parámetros de inicio
+editors.Add=Agregar
+editors.Remove=Quitar
+editors.Change=Modificar
+editors.Move_Up=Mover arriba
+editors.Close=Cerrar
+editors.Browse=Examinar…
+changeEditor.Editor_Configuration=Configuración del editor
+changeEditor.Name=Nombre:
+changeEditor.Executable=Ejecutable:
+changeEditor.CmdLine=Parámetros:
+changeEditor.Supplied_arguments=Parámetros proporcionados por Firebug:
+changeEditor.URL_of_file=URL del archivo (si %url no se encuentra, se agregará %file de forma predeterminada)
+changeEditor.Path_to_local_file=Ruta del archivo local (o de la copia temporaria)
+changeEditor.Line_number=Número de línea (si se encuentra disponible)
+changeEditor.Invalid_Application_Path=Ruta de la aplicación no válida
+changeEditor.Application_does_not_exist=¡La aplicación especificada no existe!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Editar
+firebug.css.sourceEdit=Editar código fuente
+firebug.css.sourceEdit.tooltip=Editar el código de la hoja de estilos tal como la cargó el navegador
+firebug.css.liveEdit=Edición en vivo
+firebug.css.liveEdit.tooltip=Editar el CSS extraído del navegador
+firebug.EditCSSTooltip=Editar esta hoja de estilos
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Los sitios no son recordados en el modo Navegación Privada
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Mostrar notificaciones de interrupción
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=Puede deshabilitar/habilitar las notificaciones de interrupción en el <a>menú de la pestaña del panel</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Al hacer click en el botón \'Deshabilitar\', se ignora el \'depurador\' con un punto de interrupción deshabilitado.
+firebug.bon.tooltip.disableDebuggerKeyword2=Crea un punto de interrupción deshabilitado
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(el panel Script debe habilitarse para poder utilizar esta función)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=No hay objetos hijos
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=más
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S ítem en Almacenamiento;%1$S ítems en Almacenamiento
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Propiedades del objeto
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(no hay sugerencias)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=El objeto URL ha sido probablemente revocado utilizando el método revokeObjectURL.
+firebug.failedToPreviewImageURL=No se pudo cargar la URL.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Perfilador de memoria iniciado
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objetos agregados mientras se perfilaba
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Resultados del perfilador de memoria
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Toda la sesión
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/es-ES/cookies.properties b/locale/es-ES/cookies.properties
index 6aed53e..41b5d3b 100644
--- a/locale/es-ES/cookies.properties
+++ b/locale/es-ES/cookies.properties
@@ -1,138 +1,138 @@
-cookies.Panel=Cookies
-panel.tip.cookies=Permite inspeccionar y manipular las cookies
-cookies.Session=Sesión
-cookies.AllowGlobally=Aceptar cookies de sitios web
-cookies.tip.AllowGlobally=Aceptar / bloquear todas las cookies por defecto.
-cookies.showCookieEvents=Mostrar eventos de cookies
-cookies.tip.showCookieEvents=Almacena eventos de cookies (cambios, borrados) en la consola
-cookies.clearWhenDeny=Limpiar las cookies al rechazar
-cookies.Cut=Cortar
-cookies.Copy=Copiar
-cookies.CopyAll=Copiar todo
-cookies.Paste=Pegar
-cookies.Delete=Eliminar
-cookies.Clear_Value=Eliminar valores
-cookies.Edit=Editar
-cookies.Accept=Aceptar
-cookies.header.Reset_Header=Restablecer encabezado
-cookies.Intro=Puede especificar qué sitios web pueden utilizar cookies siempre y cuáles nunca.\nEscriba la dirección exacta del sitio que quiera gestionar y pulse en Bloquear,\nPermitir durante la sesión, o Permitir.
-cookies.ExceptionsTitle=Excepciones - Cookies
-cookies.modulemanager.description=Ayuda para la Monitorización de cookies
-cookies.HostEnable=Activar panel de Cookies para %S
-cookies.HostDisable=Desactivar panel de Cookies para %S
-cookies.Permissions=Activar / Desactivar el panel de Cookies
-cookies.PermissionsIntro=Elegir en qué sitios web el panel de Cookies estará activado o desactivado.
-cookies.SystemPages=Páginas de sistema
-cookies.LocalFiles=Archivos Locales
-cookies.confirm.removeall=¿Quiere eliminar todas las cookies de la lista?
-cookies.confirm.removeallsession=¿Desea eliminar todas las cookies de sesión de la lista?
-cookies.confirm.Remove_All_From_Host=Desea eliminar todas las cookies de %S?
-cookies.Confirm_cookie_removal=Confirmar eliminación de cookies
-cookies.tip.Confirm_cookie_removal=Si se selecciona se mostrará un diálogo de confirmación antes de borrar todas las cookies de la lista.
-cookies.removeall.tooltip=Eliminar todas las cookies de la lista.
-cookies.Remove_Session_Cookies=Eliminar cookies de sesión
-cookies.removeallsession.tooltip=Eliminar todas las cookies de la sesión de la lista
-cookies.createcookie.tooltip=Crear nueva cookie para %S
-cookies.createcookie.defaultvalue=Valor
-cookies.perm.manage.tooltip=Gestionar permisos de cookies para %S
-cookies.console.cookiescleared=Todas las cookies han sido eliminadas.
-cookies.console.sessioncookiescleared=Se han eliminado todas las cookies de la sesión.
-cookies.console.cookiesrejected=Cookies rechazadas:
-cookies.console.nocookiesreceived=No se han recibido cookies
-cookies.console.cookie=Cookie
-cookies.console.deleted=borrada
-cookies.console.added=añadida
-cookies.console.changed=cambiada
-cookies.console.cleared=limpiada
-cookies.domain.label=Dominio
-cookies.secure.label=Segura
-cookies.status.accepted=Aceptada
-cookies.status.downgraded=Revertida
-cookies.status.flagged=Marcada
-cookies.status.rejected=Rechazada
-cookies.info.valuetab.label=Valor
-cookies.info.rawdatatab.Raw_Data=Datos sin tratar
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-cookies.default.session=Por defecto (Aceptar cookies de sesión)
-cookies.default.thirdPartySession=Por defecto (Aceptar cookies de sesión)
-cookies.default.thirdParty=Por defecto (Aceptar cookies)
-cookies.default.allow=Por defecto (Aceptar cookies)
-cookies.default.deny=Por defecto (Rechazar cookies)
-cookies.default.warn=Por defecto (Avisar antes de aceptar una cookie)
-cookies.default.limitThirdParty=Por defecto (Limitar cookies de terceros)
-cookies.host.session=Aceptar cookies de sesión de %S
-cookies.host.accept=Aceptar cookies de %S
-cookies.host.reject=Rechazar cookies de %S
-cookies.host.limitThirdParty=Limitar cookies de terceros de %S
-cookies.edit.invalidname=Nombre de la cookie no válido.
-cookies.edit.invalidhost=Servidor de la cookie no válido.
-cookies.edit.invalidpath=Ruta de la cookie no válida.
-cookies.header.name=Nombre
-cookies.header.value=Valor
-cookies.header.rawValue=Valor sin tratar
-cookies.header.domain=Dominio
-cookies.header.size=Tamaño
-cookies.header.rawSize=Tamaño
-cookies.header.path=Ruta
-cookies.header.expires=Expira
-cookies.header.security=Seguridad
-cookies.header.httponly=HttpOnly
-cookies.header.maxAge=Máx. Tiempo
-cookies.header.name.tooltip=Nombre de la cookie
-cookies.header.value.tooltip=Valor guardado de la cookie
-cookies.header.rawValue.tooltip=Valor sin tratar almacenado en la cookie
-cookies.header.domain.tooltip=Dominio que ha almacenado la cookie
-cookies.header.rawSize.tooltip=Tamaño bruto de la cookie almacenada
-cookies.header.size.tooltip=Tamaño de la cookie almacenada
-cookies.header.path.tooltip=Ruta de la carpeta donde está activa la cookie
-cookies.header.expires.tooltip=Fecha de expiración de la cookie
-cookies.header.security.tooltip=Muestra si es una cookie segura o no
-cookies.header.httponly.tooltip=Muestra si la cookie es sólo HTTP
-cookies.header.maxAge.tooltip=Tiempo máximo para almacenar la cookie
-cookies.netinfo.Received_Cookies=Cookies recibidas
-cookies.netinfo.Sent_Cookies=Cookies enviadas
-cookies.netinfo.deleted.tooltip=La petición hizo expirar la cookie
-cookies.Path_Filter=Filtro por ruta
-cookies.menu.Cookies=Cookies
-cookies.export.Export_All_Cookies=Exportar todas las cookies
-cookies.export.Export_All_Cookies_Tooltip=Exportar todas las cookies del navegador al archivo cookies.txt
-cookies.export.Export_For_Site=Exportar cookies para este sitio
-cookies.export.Export_For_Site_Tooltip=Exportar cookies de %S al archivo cookies.txt
-cookies.message.There_is_no_active_page=No hay página activa.
-cookies.Break_On_Cookie=Parar cuando cambie una cookie
-cookies.Disable_Break_On_Cookie=Desactivar parar cuando cambie una cookie
-cookies.Cookie_Breakpoints=Paradas de cookies
-cookies.menu.Break_On_Cookie=Parar con la cookie '%S'
-cookies.menu.tooltip.Break_On_Cookie=Parar cuando se borre o cambie '%S'
-cookies.menu.Edit_Breakpoint_Condition=Editar condiciones de parada
-cookies.Breakpoint_condition_evaluation_fails=La evaluación de la condición de parada ha fallado
-cookies.RemoveAll=Eliminar cookies
-cookies.Create=Crear cookie
-cookies.Tools=Herramientas
-cookies.ToolsTooltip=Herramientas
-cookies.ViewAll=Mostrar todas las cookies
-cookies.ViewAllTooltip=Abrir Administrador de cookies
-cookies.ViewExceptions=Permisos para sitios web
-cookies.ViewExceptionsTooltip=Ver la lista de los sitios web permitidos o prohibidos
-cookies.Filter=Filtro
-cookies.FilterTooltip=Use estas opciones para filtrar la lista de cookies
-cookies.filter.byPath=Filtrar cookies por ruta actual
-cookies.filter.byPathTooltip=Mostrar sólo las cookies que coincidan con la ruta actual
-cookies.filter.showRejectedCookies=Mostrar cookies rechazadas
-cookies.filter.showRejectedCookiesTooltip=Mostrar en la lista también las cookies rechazadas
-cookies.edit.title=Editar cookie
-cookies.edit.name.label=Nombre:
-cookies.edit.domain.label=Servidor:
-cookies.edit.path.label=Ruta:
-cookies.edit.expire.label=Expira:
-cookies.edit.value.label=Valor:
-cookies.edit.secure.label=Cookie segura
-cookies.edit.httponly.label=Sólo HTTP
-cookies.edit.session.label=Sesión
-cookies.edit.urlEncode.label=Valor codificación URL
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filtrar por cookies
-firebug.shortcut.removeAllCookies.label=Eliminar todas las cookies
-cookie.sizeinfo.Size=Tamaño
-cookie.sizeinfo.Raw_Size=Tamaño bruto
+cookies.Panel=Cookies
+panel.tip.cookies=Permite inspeccionar y manipular las cookies
+cookies.Session=Sesión
+cookies.AllowGlobally=Aceptar cookies de sitios web
+cookies.tip.AllowGlobally=Aceptar / bloquear todas las cookies por defecto.
+cookies.showCookieEvents=Mostrar eventos de cookies
+cookies.tip.showCookieEvents=Almacena eventos de cookies (cambios, borrados) en la consola
+cookies.clearWhenDeny=Limpiar las cookies al rechazar
+cookies.Cut=Cortar
+cookies.Copy=Copiar
+cookies.CopyAll=Copiar todo
+cookies.Paste=Pegar
+cookies.Delete=Eliminar
+cookies.Clear_Value=Eliminar valores
+cookies.Edit=Editar
+cookies.Accept=Aceptar
+cookies.header.Reset_Header=Restablecer encabezado
+cookies.Intro=Puede especificar qué sitios web pueden utilizar cookies siempre y cuáles nunca.\nEscriba la dirección exacta del sitio que quiera gestionar y pulse en Bloquear,\nPermitir durante la sesión, o Permitir.
+cookies.ExceptionsTitle=Excepciones - Cookies
+cookies.modulemanager.description=Ayuda para la Monitorización de cookies
+cookies.HostEnable=Activar panel de Cookies para %S
+cookies.HostDisable=Desactivar panel de Cookies para %S
+cookies.Permissions=Activar / Desactivar el panel de Cookies
+cookies.PermissionsIntro=Elegir en qué sitios web el panel de Cookies estará activado o desactivado.
+cookies.SystemPages=Páginas de sistema
+cookies.LocalFiles=Archivos Locales
+cookies.confirm.removeall=¿Quiere eliminar todas las cookies de la lista?
+cookies.confirm.removeallsession=¿Desea eliminar todas las cookies de sesión de la lista?
+cookies.confirm.Remove_All_From_Host=Desea eliminar todas las cookies de %S?
+cookies.Confirm_cookie_removal=Confirmar eliminación de cookies
+cookies.tip.Confirm_cookie_removal=Si se selecciona se mostrará un diálogo de confirmación antes de borrar todas las cookies de la lista.
+cookies.removeall.tooltip=Eliminar todas las cookies de la lista.
+cookies.Remove_Session_Cookies=Eliminar cookies de sesión
+cookies.removeallsession.tooltip=Eliminar todas las cookies de la sesión de la lista
+cookies.createcookie.tooltip=Crear nueva cookie para %S
+cookies.createcookie.defaultvalue=Valor
+cookies.perm.manage.tooltip=Gestionar permisos de cookies para %S
+cookies.console.cookiescleared=Todas las cookies han sido eliminadas.
+cookies.console.sessioncookiescleared=Se han eliminado todas las cookies de la sesión.
+cookies.console.cookiesrejected=Cookies rechazadas:
+cookies.console.nocookiesreceived=No se han recibido cookies
+cookies.console.cookie=Cookie
+cookies.console.deleted=borrada
+cookies.console.added=añadida
+cookies.console.changed=cambiada
+cookies.console.cleared=limpiada
+cookies.domain.label=Dominio
+cookies.secure.label=Segura
+cookies.status.accepted=Aceptada
+cookies.status.downgraded=Revertida
+cookies.status.flagged=Marcada
+cookies.status.rejected=Rechazada
+cookies.info.valuetab.label=Valor
+cookies.info.rawdatatab.Raw_Data=Datos sin tratar
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+cookies.default.session=Por defecto (Aceptar cookies de sesión)
+cookies.default.thirdPartySession=Por defecto (Aceptar cookies de sesión)
+cookies.default.thirdParty=Por defecto (Aceptar cookies)
+cookies.default.allow=Por defecto (Aceptar cookies)
+cookies.default.deny=Por defecto (Rechazar cookies)
+cookies.default.warn=Por defecto (Avisar antes de aceptar una cookie)
+cookies.default.limitThirdParty=Por defecto (Limitar cookies de terceros)
+cookies.host.session=Aceptar cookies de sesión de %S
+cookies.host.accept=Aceptar cookies de %S
+cookies.host.reject=Rechazar cookies de %S
+cookies.host.limitThirdParty=Limitar cookies de terceros de %S
+cookies.edit.invalidname=Nombre de la cookie no válido.
+cookies.edit.invalidhost=Servidor de la cookie no válido.
+cookies.edit.invalidpath=Ruta de la cookie no válida.
+cookies.header.name=Nombre
+cookies.header.value=Valor
+cookies.header.rawValue=Valor sin tratar
+cookies.header.domain=Dominio
+cookies.header.size=Tamaño
+cookies.header.rawSize=Tamaño
+cookies.header.path=Ruta
+cookies.header.expires=Expira
+cookies.header.security=Seguridad
+cookies.header.httponly=HttpOnly
+cookies.header.maxAge=Máx. Tiempo
+cookies.header.name.tooltip=Nombre de la cookie
+cookies.header.value.tooltip=Valor guardado de la cookie
+cookies.header.rawValue.tooltip=Valor sin tratar almacenado en la cookie
+cookies.header.domain.tooltip=Dominio que ha almacenado la cookie
+cookies.header.rawSize.tooltip=Tamaño bruto de la cookie almacenada
+cookies.header.size.tooltip=Tamaño de la cookie almacenada
+cookies.header.path.tooltip=Ruta de la carpeta donde está activa la cookie
+cookies.header.expires.tooltip=Fecha de expiración de la cookie
+cookies.header.security.tooltip=Muestra si es una cookie segura o no
+cookies.header.httponly.tooltip=Muestra si la cookie es sólo HTTP
+cookies.header.maxAge.tooltip=Tiempo máximo para almacenar la cookie
+cookies.netinfo.Received_Cookies=Cookies recibidas
+cookies.netinfo.Sent_Cookies=Cookies enviadas
+cookies.netinfo.deleted.tooltip=La petición hizo expirar la cookie
+cookies.Path_Filter=Filtro por ruta
+cookies.menu.Cookies=Cookies
+cookies.export.Export_All_Cookies=Exportar todas las cookies
+cookies.export.Export_All_Cookies_Tooltip=Exportar todas las cookies del navegador al archivo cookies.txt
+cookies.export.Export_For_Site=Exportar cookies para este sitio
+cookies.export.Export_For_Site_Tooltip=Exportar cookies de %S al archivo cookies.txt
+cookies.message.There_is_no_active_page=No hay página activa.
+cookies.Break_On_Cookie=Parar cuando cambie una cookie
+cookies.Disable_Break_On_Cookie=Desactivar parar cuando cambie una cookie
+cookies.Cookie_Breakpoints=Paradas de cookies
+cookies.menu.Break_On_Cookie=Parar con la cookie '%S'
+cookies.menu.tooltip.Break_On_Cookie=Parar cuando se borre o cambie '%S'
+cookies.menu.Edit_Breakpoint_Condition=Editar condiciones de parada
+cookies.Breakpoint_condition_evaluation_fails=La evaluación de la condición de parada ha fallado
+cookies.RemoveAll=Eliminar cookies
+cookies.Create=Crear cookie
+cookies.Tools=Herramientas
+cookies.ToolsTooltip=Herramientas
+cookies.ViewAll=Mostrar todas las cookies
+cookies.ViewAllTooltip=Abrir Administrador de cookies
+cookies.ViewExceptions=Permisos para sitios web
+cookies.ViewExceptionsTooltip=Ver la lista de los sitios web permitidos o prohibidos
+cookies.Filter=Filtro
+cookies.FilterTooltip=Use estas opciones para filtrar la lista de cookies
+cookies.filter.byPath=Filtrar cookies por ruta actual
+cookies.filter.byPathTooltip=Mostrar sólo las cookies que coincidan con la ruta actual
+cookies.filter.showRejectedCookies=Mostrar cookies rechazadas
+cookies.filter.showRejectedCookiesTooltip=Mostrar en la lista también las cookies rechazadas
+cookies.edit.title=Editar cookie
+cookies.edit.name.label=Nombre:
+cookies.edit.domain.label=Servidor:
+cookies.edit.path.label=Ruta:
+cookies.edit.expire.label=Expira:
+cookies.edit.value.label=Valor:
+cookies.edit.secure.label=Cookie segura
+cookies.edit.httponly.label=Sólo HTTP
+cookies.edit.session.label=Sesión
+cookies.edit.urlEncode.label=Valor codificación URL
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filtrar por cookies
+firebug.shortcut.removeAllCookies.label=Eliminar todas las cookies
+cookie.sizeinfo.Size=Tamaño
+cookie.sizeinfo.Raw_Size=Tamaño bruto
diff --git a/locale/es-ES/firebug-amo.properties b/locale/es-ES/firebug-amo.properties
index cd60b73..5002ffe 100644
--- a/locale/es-ES/firebug-amo.properties
+++ b/locale/es-ES/firebug-amo.properties
@@ -1,3 +1,3 @@
-firebug.amo.summary1.6=Firebug se integra con Firefox para proporcionarle abundantes herramientas de desarrollo mientras navega. Puede editar, depurar y observar CSS, HTML y JavaScript en vivo en cualquier página web...\n\nFirebug 1.6 requiere Firefox 3.6 o superior.
-firebug.amo.description=Firebug se integra con Firefox para proporcionarle abundantes herramientas de desarrollo mientras navega. Puede editar, depurar y observar CSS, HTML y JavaScript en vivo en cualquier página web...\n\nVisite el sitio web de Firebug para encontrar información, capturas de pantalla y foros de discusión: http://getfirebug.com
-firebug.amo.developer.comments=Si tiene algún problema, lea las preguntas frecuentes (FAQ) de FireBug.\n\nhttp://getfirebug.com/faq.html
+firebug.amo.summary1.6=Firebug se integra con Firefox para proporcionarle abundantes herramientas de desarrollo mientras navega. Puede editar, depurar y observar CSS, HTML y JavaScript en vivo en cualquier página web...\n\nFirebug 1.6 requiere Firefox 3.6 o superior.
+firebug.amo.description=Firebug se integra con Firefox para proporcionarle abundantes herramientas de desarrollo mientras navega. Puede editar, depurar y observar CSS, HTML y JavaScript en vivo en cualquier página web...\n\nVisite el sitio web de Firebug para encontrar información, capturas de pantalla y foros de discusión: http://getfirebug.com
+firebug.amo.developer.comments=Si tiene algún problema, lea las preguntas frecuentes (FAQ) de FireBug.\n\nhttp://getfirebug.com/faq.html
diff --git a/locale/es-ES/firebug-tracing.properties b/locale/es-ES/firebug-tracing.properties
index 8be411f..75b7243 100644
--- a/locale/es-ES/firebug-tracing.properties
+++ b/locale/es-ES/firebug-tracing.properties
@@ -1,91 +1,91 @@
-Open_Firebug_Tracing=Abrir seguimiento de Firebug
-Always_Open_Firebug_Tracing=Abrir siempre seguimiento de Firebug
-title.Tracing=Seguimiento
-tracing.Show_Scope_Variables=Mostrar variables del ámbito
-tracing.Show_Time=Mostrar hora
-tracing.tab.Stack=Pila
-tracing.tab.Exception=Excepción
-tracing.tab.Properties=Propiedades
-tracing.tab.Scope=Ámbito
-tracing.tab.Response=Respuesta
-tracing.tab.Source=Fuente
-tracing.tab.Interfaces=Interfaces
-tracing.tab.Object=Objeto
-tracing.tab.Event=Evento
-tracing.cmd.Clear=Limpiar
-tracing.cmd.tip.Clear=Eliminar todos los mensajes
-tracing.cmd.Find=Buscar
-tracing.cmd.tip.Find=Buscar texto
-tracing.cmd.Bookmark=Marcador
-tracing.cmd.tip.Bookmark=Insertar marcador
-tracing.cmd.Restart=Reiniciar Firefox
-tracing.cmd.tip.Restart=Reiniciar Firefox
-tracing.cmd.Exit=Salir de Firefox
-tracing.cmd.tip.Exit=Salir de Firefox
-tracing.cmd.Save=Guardar en archivo
-tracing.cmd.tip.Save=Guardar registros en un archivo
-tracing.cmd.Load=Cargar desde archivo
-tracing.cmd.tip.Load=Cargar registros desde archivo
-tracing.cmd.Expand_All=Expandir todo
-tracing.cmd.Collapse_All=Contraer todo
-tracing.cmd.Tools=Herramientas
-tracing.cmd.tip.Tools=Herramientas
-tracing.cmd.Clear_Browser_Cache=Limpiar caché del navegador
-tracing.cmd.tip.Clear_Browser_Cache=Limpiar caché del navegador
-tracing.cmd.Force_Garbage_Collector=Forzar recolector de basura
-tracing.cmd.tip.Force_Garbage_Collector=Forzar el recolector de basura
-tracing.cmd.Open_Profile_Directory=Abrir directorio de análisis
-tracing.cmd.tip.Open_Profile_Directory=Abrir directorio de análisis
-tracing.option.A11Y_Description=Problemas de accesibilidad
-tracing.option.ACTIVATION_Description=Activación de Firebug
-tracing.option.ACTIVITYOBSERVER_Description=Observador de actividad de Firebug
-tracing.option.ANNOTATIONS_Description=Anotación de sitio web de Firebug
-tracing.option.BP_Description=Paradas
-tracing.option.CACHE_Description=Caché de fuente
-tracing.option.COMMANDLINE_Description=Línea de comandos y Línea de comandos emergente
-tracing.option.COMPILATION_UNITS_Description=Unidades de compilación de script
-tracing.option.CONSOLE_Description=Panel de consola
-tracing.option.CSS_Description=Procesador CSS
-tracing.option.DISPATCH_Description=Despachador de eventos
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Creación de domplate
-tracing.option.EDITOR_Description=Editor en linea & Autocompletador
-tracing.option.ERRORLOG_Description=Registro de errores JS, CSS, XML, etc.
-tracing.option.ERRORS_Description=Errores internos de Firebug
-tracing.option.EVAL_Description=Evaluación de script
-tracing.option.FBS_BP_Description=Paradas de servicios de Firebug
-tracing.option.FBS_CREATION_Description=Servicio de creación de scripts de Firebug
-tracing.option.FBS_ERRORS_Description=Errores de servicio de Firebug
-tracing.option.FBS_FINDDEBUGGER_Description=Servicio de Firebug de búsqueda de depurador
-tracing.option.FBS_FUNCTION_Description=Función de servicio de Firebug
-tracing.option.FBS_JSDCONTEXT_Description=Servicio de Firebug de contexto de depurador JavaScript
-tracing.option.FBS_SRCUNITS_Description=Servicio de Firebug de unidades fuente
-tracing.option.FBS_STEP_Description=Servicio de Firebug de pasos de depurador JavaScript
-tracing.option.FBS_TRACKFILES_Description=Servicio de Firebug de archivos monitorizados
-tracing.option.FUNCTION_NAMES_Description=Nombres de función JavaScript
-tracing.option.HISTORY_Description=Historial de navegación de Firebug
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=Observador de solicitud HTTP
-tracing.option.INFOTIP_Description=Consejo
-tracing.option.INITIALIZE_Description=Inicialización de Firebug
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=Visor JSON
-tracing.option.LINETABLE_Description=Script de línea de tabla
-tracing.option.LOCALE_Description=Localización
-tracing.option.LOCATIONS_Description=Ubicaciones de fuente
-tracing.option.NET_Description=Panel de red
-tracing.option.NET_EVENTS_Description=Eventos de red
-tracing.option.OPTIONS_Description=Preferencias de Firebug
-tracing.option.PANELS_Description=Paneles
-tracing.option.SHORTCUTS_Description=Atajos de teclado
-tracing.option.SOURCEFILES_Description=Archivos fuente de JavaScript
-tracing.option.SPY_Description=Observador de XMLHttpRequests
-tracing.option.STACK_Description=Pila de llamadas JavaScript
-tracing.option.STORAGE_Description=Preferencias de almacenamiento
-tracing.option.SVGVIEWER_Description=Visor SVG
-tracing.option.FONTS_Description=Información y visor de fuentes
-tracing.option.TOOLTIP_Description=Consejo de botón inicio
-tracing.option.TOPLEVEL_Description=JavaScript de nivel alto
-tracing.option.UI_LOOP_Description=Interfaz de usuario de depuración JavaScript
-tracing.option.WINDOWS_Description=Ventanas de Firebug y Monitorizado de pestaña
-tracing.option.XMLVIEWER_Description=Visor XML
+Open_Firebug_Tracing=Abrir seguimiento de Firebug
+Always_Open_Firebug_Tracing=Abrir siempre seguimiento de Firebug
+title.Tracing=Seguimiento
+tracing.Show_Scope_Variables=Mostrar variables del ámbito
+tracing.Show_Time=Mostrar hora
+tracing.tab.Stack=Pila
+tracing.tab.Exception=Excepción
+tracing.tab.Properties=Propiedades
+tracing.tab.Scope=Ámbito
+tracing.tab.Response=Respuesta
+tracing.tab.Source=Fuente
+tracing.tab.Interfaces=Interfaces
+tracing.tab.Object=Objeto
+tracing.tab.Event=Evento
+tracing.cmd.Clear=Limpiar
+tracing.cmd.tip.Clear=Eliminar todos los mensajes
+tracing.cmd.Find=Buscar
+tracing.cmd.tip.Find=Buscar texto
+tracing.cmd.Bookmark=Marcador
+tracing.cmd.tip.Bookmark=Insertar marcador
+tracing.cmd.Restart=Reiniciar Firefox
+tracing.cmd.tip.Restart=Reiniciar Firefox
+tracing.cmd.Exit=Salir de Firefox
+tracing.cmd.tip.Exit=Salir de Firefox
+tracing.cmd.Save=Guardar en archivo
+tracing.cmd.tip.Save=Guardar registros en un archivo
+tracing.cmd.Load=Cargar desde archivo
+tracing.cmd.tip.Load=Cargar registros desde archivo
+tracing.cmd.Expand_All=Expandir todo
+tracing.cmd.Collapse_All=Contraer todo
+tracing.cmd.Tools=Herramientas
+tracing.cmd.tip.Tools=Herramientas
+tracing.cmd.Clear_Browser_Cache=Limpiar caché del navegador
+tracing.cmd.tip.Clear_Browser_Cache=Limpiar caché del navegador
+tracing.cmd.Force_Garbage_Collector=Forzar recolector de basura
+tracing.cmd.tip.Force_Garbage_Collector=Forzar el recolector de basura
+tracing.cmd.Open_Profile_Directory=Abrir directorio de análisis
+tracing.cmd.tip.Open_Profile_Directory=Abrir directorio de análisis
+tracing.option.A11Y_Description=Problemas de accesibilidad
+tracing.option.ACTIVATION_Description=Activación de Firebug
+tracing.option.ACTIVITYOBSERVER_Description=Observador de actividad de Firebug
+tracing.option.ANNOTATIONS_Description=Anotación de sitio web de Firebug
+tracing.option.BP_Description=Paradas
+tracing.option.CACHE_Description=Caché de fuente
+tracing.option.COMMANDLINE_Description=Línea de comandos y Línea de comandos emergente
+tracing.option.COMPILATION_UNITS_Description=Unidades de compilación de script
+tracing.option.CONSOLE_Description=Panel de consola
+tracing.option.CSS_Description=Procesador CSS
+tracing.option.DISPATCH_Description=Despachador de eventos
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Creación de domplate
+tracing.option.EDITOR_Description=Editor en linea & Autocompletador
+tracing.option.ERRORLOG_Description=Registro de errores JS, CSS, XML, etc.
+tracing.option.ERRORS_Description=Errores internos de Firebug
+tracing.option.EVAL_Description=Evaluación de script
+tracing.option.FBS_BP_Description=Paradas de servicios de Firebug
+tracing.option.FBS_CREATION_Description=Servicio de creación de scripts de Firebug
+tracing.option.FBS_ERRORS_Description=Errores de servicio de Firebug
+tracing.option.FBS_FINDDEBUGGER_Description=Servicio de Firebug de búsqueda de depurador
+tracing.option.FBS_FUNCTION_Description=Función de servicio de Firebug
+tracing.option.FBS_JSDCONTEXT_Description=Servicio de Firebug de contexto de depurador JavaScript
+tracing.option.FBS_SRCUNITS_Description=Servicio de Firebug de unidades fuente
+tracing.option.FBS_STEP_Description=Servicio de Firebug de pasos de depurador JavaScript
+tracing.option.FBS_TRACKFILES_Description=Servicio de Firebug de archivos monitorizados
+tracing.option.FUNCTION_NAMES_Description=Nombres de función JavaScript
+tracing.option.HISTORY_Description=Historial de navegación de Firebug
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=Observador de solicitud HTTP
+tracing.option.INFOTIP_Description=Consejo
+tracing.option.INITIALIZE_Description=Inicialización de Firebug
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=Visor JSON
+tracing.option.LINETABLE_Description=Script de línea de tabla
+tracing.option.LOCALE_Description=Localización
+tracing.option.LOCATIONS_Description=Ubicaciones de fuente
+tracing.option.NET_Description=Panel de red
+tracing.option.NET_EVENTS_Description=Eventos de red
+tracing.option.OPTIONS_Description=Preferencias de Firebug
+tracing.option.PANELS_Description=Paneles
+tracing.option.SHORTCUTS_Description=Atajos de teclado
+tracing.option.SOURCEFILES_Description=Archivos fuente de JavaScript
+tracing.option.SPY_Description=Observador de XMLHttpRequests
+tracing.option.STACK_Description=Pila de llamadas JavaScript
+tracing.option.STORAGE_Description=Preferencias de almacenamiento
+tracing.option.SVGVIEWER_Description=Visor SVG
+tracing.option.FONTS_Description=Información y visor de fuentes
+tracing.option.TOOLTIP_Description=Consejo de botón inicio
+tracing.option.TOPLEVEL_Description=JavaScript de nivel alto
+tracing.option.UI_LOOP_Description=Interfaz de usuario de depuración JavaScript
+tracing.option.WINDOWS_Description=Ventanas de Firebug y Monitorizado de pestaña
+tracing.option.XMLVIEWER_Description=Visor XML
diff --git a/locale/es-ES/firebug.properties b/locale/es-ES/firebug.properties
index 91dbb03..5a0c55c 100644
--- a/locale/es-ES/firebug.properties
+++ b/locale/es-ES/firebug.properties
@@ -1,1013 +1,1013 @@
-Firebug=Firebug
-WindowTitle=Firebug - %S
-Panel-console=Consola
-panel.tip.console=Permite ver los mensajes de la consola y ejecutar comandos de JavaScript
-Panel-net=Red
-panel.tip.net=Permite analizar el tráfico de la red
-Panel-html=HTML
-panel.tip.html=Permite inspeccionar y manipular los nodos del DOM
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Permite inspeccionar y manipular las hojas de estilo CSS
-Panel-script=Script
-panel.tip.script=Permite depurar el JavaScript
-Panel-dom=DOM
-panel.tip.dom=Permite inspeccionar y manipular las propiedades del DOM
-Panel-css=Estilo
-panel.tip.css=Permite inspeccionar y manipular las reglas CSS del nodo seleccionado del DOM
-Panel-computed=Calculado
-panel.tip.computed=Permite inspeccionar los valores CSS calculados del nodo seleccionado del DOM
-Panel-layout=Plantilla
-panel.tip.layout=Permite inspeccionar y manipular los datos de diseño del nodo seleccionado del DOM
-Panel-domSide=DOM
-panel.tip.domSide=Permite inspeccionar y manipular las propiedades DOM del nodo seleccionado del DOM
-Panel-watches=Observar
-panel.tip.watches=Permite inspeccionar las variables JavaScript disponibles en el stack frame y definir las expresiones monitorizadas
-Panel-breakpoints=Paradas
-panel.tip.breakpoints=Permite manipular las paradas establecidas
-Panel-callstack=Pila
-panel.tip.callstack=Permite observar la pila actual de llamadas de JavaScript
-Panel-scopes=Ámbitos
-firebug.DetachFirebug=Abrir Firebug en una ventana nueva
-firebug.AttachFirebug=Fijar Firebug en la ventana del navegador
-pluralRule=1
-plural.Total_Firebugs2=%1$S Firebug total;%1$S Firebugs totales
-startbutton.tip.deactivated=Desactivado
-panel.status=%S: %S
-inBrowser=En navegador
-minimized=Minimizado
-enablement.for_all_pages=para todas las páginas
-enablement.on=Activado
-enablement.off=Desactivado
-enablement.Panel_activation_status=Activación de panel:
-none=Cerrado
-Firebug_-_inactive_for_current_website=Firebug - inactivo para el sitio actual
-Activate_Firebug_for_the_current_website=Activar Firebug para el sitio actual
-Minimized=Minimizado
-Minimize_Firebug=Minimizar Firebug
-On_for_all_web_pages=Activar para todas las páginas web
-firebug.menu.tip.On_for_all_Web_Sites=Activa Firebug por defecto en todas las páginas web
-firebug.menu.Clear_Activation_List=Vaciar lista de activación
-firebug.menu.tip.Clear_Activation_List=Vacía la lista de páginas web en las que Firebug estará activado
-firebug.menu.Detached=Separada
-firebug.menu.tip.Detached=Crea una ventana separada para Firebug
-firebug.menu.Top=Arriba
-firebug.menu.tip.Top=Alinea Firebug con la parte superior de la ventana
-firebug.menu.Bottom=Fondo
-firebug.menu.tip.Bottom=Alinea Firebug con el fondo de la ventana
-firebug.menu.Left=Izquierda
-firebug.menu.tip.Left=Alinea Firebug a la izquierda de la ventana
-firebug.menu.Right=Derecha
-firebug.menu.tip.Right=Alinea Firebug a la derecha de la ventana
-firebug.uiLocation=Posición de la IU de Firebug
-firebug.menu.tip.UI_Location=Posición de la interfaz de usuario de Firebug
-annotations.confirm.clear=¿Quiere borrar la lista de anotaciones de Firebug para todas las páginas web?
-firebug_options=Opciones de Firebug
-firebug.Show_All_Panels=Mostrar todos los paneles
-console.option.Show_Command_Line=Mostrar línea de comandos
-console.option.tip.Show_Command_Line=Enfoca la línea de comandos / Muestra la ventana emergente de la línea de comandos
-ShowJavaScriptErrors=Mostrar errores JavaScript
-console.option.tip.Show_JavaScript_Errors=Almacenar los mensajes de error de JavaScript en la consola
-ShowJavaScriptWarnings=Mostrar alertas JavaScript
-console.option.tip.Show_JavaScript_Warnings=Almacenar los mensajes de aviso de JavaScript en la consola
-ShowCSSErrors=Mostrar errores CSS
-console.option.tip.Show_CSS_Errors=Almacenar los mensajes de error de CSS en la consola
-ShowXMLHTMLErrors=Mostrar errores XML/HTML
-console.option.tip.Show_XML_HTML_Errors=Mostrar los mensajes de error XML y HTML en la consola
-ShowStackTrace=Mostrar trazas de ejecución con errores
-console.option.tip.Show_Stack_Trace=Mostrar información de trazas de ejecución para los mensajes de error
-ShowXMLHttpRequests=Mostrar XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Mostrar las XMLHttpRequests en la consola
-ShowChromeErrors=Mostrar errores de Chrome
-console.option.tip.Show_System_Errors=Mostrar mensajes de error internos del programa y la extensión en la consola
-ShowChromeMessages=Mostrar mensajes de Chrome
-console.option.tip.Show_System_Messages=Mostrar mensajes internos del programa y la extensión en la consola
-ShowNetworkErrors=Mostrar errores de red
-console.option.tip.Show_Network_Errors=Mostrar mensajes de error de red en al consola
-JavascriptOptionsStrict=Advertencias estrictas (penalización de rendimiento)
-console.option.tip.Show_Strict_Warnings=Mostrar también advertencias estrictas en la consola
-Command_History=Historial de comandos
-console.option.Show_Command_Editor=Mostrar editor de comandos
-console.option.tip.Show_Command_Editor=Cambiar a editor de comandos
-commandLineShowCompleterPopup=Mostrar ventana emergente de lista de autocompletado
-console.option.tip.Show_Completion_List_Popup=Mostrar la ventana emergente para autocompletado de comandos
-Assertion=Error de afirmación
-Line=%S (línea %S)
-LineAndCol=%S (línea %S, col %S)
-InstanceLine=%S #%S (línea %S)
-StackItem=%S (%S línea %S)
-SystemItem=<Sistema>
-panel.Inspect_In_Panel=Inspeccionar en panel %S
-panel.tip.Inspect_In_Panel=Cambiar al panel %S para analizar allí el objeto
-NoName=(sin nombre)
-jsdIScript=jsdIScript %S
-ShowFullText=Mostrar texto completo
-html.option.tip.Show_Full_Text=No recortar contenidos de los elementos
-ShowWhitespace=Mostrar espacios en blanco
-html.option.tip.Show_Whitespace=Mostrar espacios en blanco dentro de nodos
-ShowComments=Mostrar comentarios
-html.option.tip.Show_Comments=Mostrar comentarios de nodos
-html.option.Show_Entities_As_Symbols=Mostrar entidades como símbolos
-html.option.tip.Show_Entities_As_Symbols=Mostrar todas las entidades XML mediante su representación simbólica
-html.option.Show_Entities_As_Names=Mostrar entidades como nombres
-html.option.tip.Show_Entities_As_Names=Mostrar todas las entidades XMl mediante sus nombres
-html.option.Show_Entities_As_Unicode=Mostrar entidades como Unicode
-html.option.tip.Show_Entities_As_Unicode=Mostrar todas las entidades XML mediante su representación Unicode
-HighlightMutations=Resaltar cambios
-html.option.tip.Highlight_Mutations=Resaltar los cambios dentro de los nodos
-ExpandMutations=Expandir cambios
-html.option.tip.Expand_Mutations=Expandir la vista de árbol para mostrar los nodos con cambios
-ScrollToMutations=Desplazar la vista hasta los cambios
-html.option.tip.Scroll_To_Mutations=Desplazarse por la vista de árbol hasta que queden a la vista los nodos con cambios
-ShowQuickInfoBox=Mostrar caja de información rápida
-inspect.option.tip.Show_Quick_Info_Box=Mostrar información sobre el elemento actualmente inspeccionado dentro de un panel superpuesto sobre la página
-ShadeBoxModel=Modelo de caja sombreado
-inspect.option.tip.Shade_Box_Model=Sombrea las diferentes partes del modelo de caja
-ScrollIntoView=Desplazar hacia la vista
-html.tip.Scroll_Into_View=Se desplaza por la página hasta que el elemento quede visible
-NewAttribute=Atributo nuevo…
-html.tip.New_Attribute=Añadir nuevo atributo a este elemento
-html.Edit_Node=Editar %S…
-html.Node=Nodo
-html.tip.Edit_Node=Editar el %S mediante el editor de texto completo
-DeleteElement=Eliminar elemento
-html.Delete_Element=Eliminar del árbol el elemento
-DeleteNode=Eliminar nodo
-html.Delete_Node=Eliminar del árbol el nodo
-quickInfo=Información rápida
-computedStyle=Estilo calculado
-html.Break_On_Mutate=Parar si hay cambios en DOM
-html.Disable_Break_On_Mutate=Desactivar paradas si hay cambios en DOM
-html.label.Break_On_Text_Change=Parar si cambia el texto
-html.label.HTML_Breakpoints=Paradas en el HTML
-html.label.Break_On_Attribute_Change=Parar si cambian los atributos
-html.tip.Break_On_Attribute_Change=Parar la ejecución de JavaScript cuando cambie un atributo de este elemento
-html.label.Break_On_Child_Addition_or_Removal=Parar si se agregan o eliminan hijos
-html.tip.Break_On_Child_Addition_or_Removal=Parar la ejecución de JavaScript cuando se agregue o elimine un nodo hijo de este elemento
-html.label.Break_On_Element_Removal=Parar si se elimina el elemento
-html.tip.Break_On_Element_Removal=Parar la ejecución de JavaScript cuando se elimine el elemento
-html.label.Expand/Contract_All=Expandir/contraer todo
-html.tip.Expand/Contract_All=Expandir/contraer recursivamente todos los descendientes
-dom.scopeName=(closure)
-dom.scopeParentName=(padre del ámbito)
-dom.tip.scopeName=Use <func>.%closureVariable para acceder en la Línea de comandos
-dom.tip.scopeMemberName=Use <func>.%S para acceder en la Línea de comandos
-firebug.reps.declarativeScope=[ámbito de declaración]
-firebug.reps.objectScope=[ámbito del objeto]
-firebug.reps.withScope=[con ámbito]
-firebug.reps.optimizedAway=(optimizada)
-firebug.reps.element.attribute_value=valor del atributo
-firebug.reps.element.property_value=valor de la propiedad
-dom.label.breakOnPropertyChange=Parar si cambian las propiedades
-dom.tip.Break_On_Property_Change=Parar la ejecución de JavaScript cuando cambie esta propiedad
-dom.disableBreakOnPropertyChange=Desactivar parar si cambia la propiedad
-dom.label.DOM_Breakpoints=Paradas en el DOM
-EditAttribute=Editar atributo "%S"…
-html.tip.Edit_Attribute=Editar el valor del atributo "%S" de este elemento
-DeleteAttribute=Eliminar atributo "%S"
-html.tip.Delete_Attribute=Eliminar el atributo "%S" de este elemento
-InheritedFrom=Heredado de
-SothinkWarning=La extensión Sothink SWF Catcher impide que Firebug funcione correctamente.<br/><br/>Por favor, lea <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">este artículo del FAQ de Firebug</a> para obtener ayuda.
-css.fontFamilyPreview=Aquel biógrafo se zampó un extraño sándwich de vodka y ajo. 0123456789
-css.EmptyStyleSheet=No hay reglas. Puede <a>crear una regla</a>.
-css.EmptyElementCSS=Este elemento no tiene reglas de estilo. Puede <a>crear una regla</a> para él.
-EditStyle=Editar estilo del elemento…
-style.tip.Edit_Style=Editar los estilos internos del elemento
-AddRule=Añadir regla…
-css.tip.AddRule=Añadir una regla genérica para este elemento
-NewRule=Nueva regla…
-css.tip.New_Rule=Añadir una nueva regla
-css.Delete_Rule=Eliminar "%S"
-css.tip.Delete_Rule=Eliminar la regla "%S" y todas sus propiedades
-css.menu.Edit_Media_Query=Editar Media Query…
-css.menu.tip.Edit_Media_Query=Editar el media query asignado a esta regla
-NewProp=Nueva propiedad…
-css.tip.New_Prop=Añadir una nueva propiedad a la regla actual
-EditProp=Editar "%S"…
-css.tip.Edit_Prop=Editar el valor de la propiedad "%S"
-DisableProp=Desactivar "%S"
-css.tip.Disable_Prop=Desactivar la propiedad "%S"
-DeleteProp=Eliminar "%S"
-css.tip.Delete_Prop=Eliminar la propiedad "%S"
-BreakOnThisError=Parar en este error
-console.menu.tip.Break_On_This_Error=Detener la ejecución de JavaScript en cuanto se produzca este error
-BreakOnAllErrors=Parar en todos los errores
-console.menu.tip.Break_On_All_Errors=Detener la ejecución de JavaScript en cuanto se produzca un error
-TrackThrowCatch=Rastrear throw/catch
-script.option.tip.Track_Throw_Catch=Rastrear excepciones incluso cuando sean capturadas por bloques try/catch
-UseLastLineForEvalName=Usar la última línea de código fuente para eval()nombres
-UseMD5ForEvalName=Usar MD5 para eval() nombres
-Breakpoints=Paradas
-ErrorBreakpoints=Paradas por error
-LoggedFunctions=Funciones registradas
-EnableAllBreakpoints=Activar todas las paradas
-breakpoints.option.tip.Enable_All_Breakpoints=Activar todas las paradas de la lista
-DisableAllBreakpoints=Desactivar todas las paradas
-breakpoints.option.tip.Disable_All_Breakpoints=Desactivar todas las paradas de la lista
-ClearAllBreakpoints=Eliminar todas las paradas
-breakpoints.option.tip.Clear_All_Breakpoints=Eliminar todas las paradas de la lista
-ConditionInput=Esta parada hará detenerse sólo si es verdadera la expresión:
-breakpoints.Remove_Breakpoint=Eliminar parada
-breakpoints.tip.Remove_Breakpoint=Eliminar esta parada
-breakpoints.Disable_Breakpoint=Desactivar parada
-breakpoints.tip.Disable_Breakpoint=Desactivar esta parada
-breakpoints.Enable_Breakpoint=Activar parada
-breakpoints.tip.Enable_Breakpoint=Activar esta parada
-script.balloon.Continue=Continuar
-script.balloon.Disable=Desactivar
-ScriptsFilterStatic=Mostrar scripts estáticos
-ScriptsFilterEval=Mostrar scripts estáticos y eval
-ScriptsFilterEvent=Mostrar scripts estáticos y de eventos
-ScriptsFilterAll=Mostrar scripts estáticos, eval y de eventos
-ScriptsFilterStaticShort=estático
-ScriptsFilterEvalShort=evals
-ScriptsFilterEventShort=eventos
-ScriptsFilterAllShort=todos
-callstack.Expand_All=Expandir todos
-callstack.tip.Expand_All=Expandir todas las funciones de marcos de pila
-callstack.Collapse_All=Contraer todos
-callstack.tip.Collapse_All=Contraer todas las funciones de marcos de pila
-callstack.Execution_not_stopped=Se muestran los marcos de pila cuando se detiene la ejecución del script.
-ShowUserProps=Mostrar propiedades de usuario
-dom.option.tip.Show_User_Props=Mostrar propiedades de objeto definidas por el usuario
-ShowUserFuncs=Mostrar funciones definidas por el usuario
-dom.option.tip.Show_User_Funcs=Mostrar métodos de objetos del usuario
-ShowDOMProps=Mostrar propiedades DOM
-dom.option.tip.Show_DOM_Props=Mostrar propiedades especificadas dentro del DOM
-ShowDOMFuncs=Mostrar funciones DOM
-dom.option.tip.Show_DOM_Funcs=Mostrar funciones especificadas dentro del DOM
-ShowDOMConstants=Mostrar constantes DOM
-dom.option.tip.Show_DOM_Constants=Mostrar constantes especificadas dentro del DOM
-ShowClosures=Mostrar closures
-dom.option.tip.Show_Closures=Muestra las closures asociadas a varias funciones (activa el depurador)
-ShowInlineEventHandlers=Mostrar los gestores de eventos en línea
-ShowInlineEventHandlersTooltip=Mostrar los gestores de eventos en línea disponibles que no estén asociados a una función
-ShowOwnProperties=Mostrar sólo propiedades propias
-ShowOwnPropertiesTooltip=No mostrar cadena de prototipo
-ShowEnumerableProperties=Sólo mostrar propiedades enumerables
-ShowEnumerablePropertiesTooltip=No mostrar propiedades no enumerables
-NoMembersWarning=No hay propiedades que mostrar de este objeto
-NewWatch=Nueva expresión de seguimiento…
-AddWatch=Agregar seguimiento
-watch.tip.Add_Watch=Añadir la selección/objeto al panel lateral de seguimiento para monitorizarlo
-CopySourceCode=Copiar fuente
-script.tip.Copy_Source_Code=Copiar el código fuente seleccionado al portapapeles
-Use_hash_plus_number_to_go_to_line=Use #<numero> para ir a la línea
-CopyValue=Copiar valor
-dom.tip.Copy_Value=Copiar el valor de la propiedad al portapapeles
-Copy_Name=Copiar nombre
-dom.tip.Copy_Name=Copiar el nombre de la propiedad al portapapeles
-Copy_Path=Copiar ruta
-dom.tip.Copy_Path=Copiar la ruta de la propiedad
-NewProperty=Nueva propiedad…
-EditProperty=Editar propiedad…
-dom.tip.Edit_Property=Editar el valor de la propiedad
-EditVariable=Editar variable…
-stack.tip.Edit_Variable=Editar el valor de la variable
-EditWatch=Editar seguimiento…
-watch.tip.Edit_Watch=Editar el valor de la expresión de seguimiento
-DeleteProperty=Eliminar propiedad
-dom.tip.Delete_Property=Eliminar esta propiedad
-DeleteWatch=Eliminar seguimiento
-DeleteAllWatches=Eliminar todos los seguimientos
-watch.tip.Delete_Watch=Eliminar esta expresión de seguimiento
-watch.tip.Delete_All_Watches=Eliminar todas las expresiones de inspección
-SetBreakpoint=Crear parada
-script.tip.Set_Breakpoint=Activa/Desactiva la creación de una parada en la línea actual
-EditBreakpointCondition=Editar condición de parada…
-breakpoints.tip.Edit_Breakpoint_Condition=Editar la condición que provoca que esta parada detenga la ejecución de JavaScript
-NoBreakpointsWarning=No hay paradas en esta página.
-Only_Show_Applied_Styles=Mostrar solo los estilos aplicados
-style.option.tip.Only_Show_Applied_Styles=Sólo se muestran los estilos aplicados al elemento
-Show_User_Agent_CSS=Mostrar CSS del agente de usuario
-style.option.tip.Show_User_Agent_CSS=También se muestra el CSS definido por el agente de usuario
-computed.option.label.Colors_As_Hex=Colore en Hex
-computed.option.tip.Colors_As_Hex=Mostrar los colores en formato hexadecimal
-computed.option.label.Colors_As_RGB=Colores en RGB
-computed.option.tip.Colors_As_RGB=Mostrar los colores en formato RGB
-computed.option.label.Colors_As_HSL=Colores en HSL
-computed.option.tip.Colors_As_HSL=Mostrar los colores en formato HSL
-style.option.label.active=:active
-style.option.tip.active=Mostrar estilos con la seudoclase :active
-style.option.label.hover=:hover
-style.option.tip.hover=Mostrar estilos con la seudoclase :hover
-style.option.label.focus=:focus
-style.option.tip.focus=Mostrar estilos con la seudoclase :focus
-css.label.Inspect_Declaration=Inspeccionar declaración
-css.tip.Inspect_Declaration=Inspeccionar la declaración de esta fuente
-Expand_Shorthand_Properties=Expandir propiedades abreviadas
-css.option.tip.Expand_Shorthand_Properties=Expandir propiedades CSS abreviadas a sus componentes básicos
-Sort_alphabetically=Ordenar alfabéticamente
-computed.option.tip.Sort_Alphabetically=Ordenar los estilos por su nombre / agrupar estilos por categorías
-Show_Mozilla_specific_styles=Mostrar estilos específicos de Mozilla
-computed.option.tip.Show_Mozilla_Specific_Styles=Mostrar también estilos con el prefijo -moz
-computed.No_User-Defined_Styles=Este elemento no tiene reglas de estilo de usuario
-script.Type_any_key_to_filter_list=Pulse cualquier tecla para filtrar la lista
-location.inline=Inline
-location.no_domain=Sin dominio
-LayoutPadding=relleno
-LayoutBorder=borde
-LayoutMargin=margen
-LayoutPosition=posición
-LayoutAdjacent=adyacente
-position=posición
-ShowRulers=Mostrar reglas y guías
-layout.option.tip.Show_Rulers=Mostrar reglas y guías de la página cuando el ratón se sitúa sobre partes de la caja de layout
-Loading=Cargando…
-Headers=Encabezados
-net.tip.Clear=Borrar la lista de solicitudes
-net.header.Reset_Header=Restaurar encabezado
-net.header.tip.Reset_Header=Restaurar el encabezado mostrado
-net.header.URL=URL
-net.header.URL_Tooltip=URL solicitada y método HTTP usado.
-net.header.Status=Estado
-net.header.Status_Tooltip=Estado de la respuesta recibida.
-net.header.Domain=Dominio
-net.header.Domain_Tooltip=Dominio de la solicitud ejecutada
-net.header.Size=Tamaño
-net.header.Size_Tooltip=Tamaño de la respuesta recibida (comprimido si es una respuesta comprimida)
-net.header.Timeline=Línea de tiempo
-net.header.Timeline_Tooltip=Información detallada acerca de los tiempos de petición y respuesta.
-net.header.Local_IP=IP Local
-net.header.Local_IP_Tooltip=Dirección IP local y número de puerto al que la solicitud está vinculada.
-net.header.Remote_IP=IP Remota
-net.header.Remote_IP_Tooltip=Dirección IP remota y número de puerto al que la solicitud está vinculada.
-net.header.Protocol=Protocolo
-net.header.Protocol_Tooltip=El protocolo de URL usado para ubicar el recurso en la web.
-net.label.XHR_Breakpoints=Paradas XHR
-net.label.Break_On_XHR=Parar en XHR
-net.tip.Break_On_XHR=Detener la ejecución de JavaScript en cuando haya una XMLHttpRequest
-net.headers.view_source=ver fuente
-net.headers.pretty_print=vista formateada
-net.filter.label.All=Todos
-net.filter.tooltip.All=Mostrar todos los tipos MIME
-net.filter.label.HTML=HMTL
-net.filter.tooltip.HTML=Mostrar sólo archivos HTML
-net.filter.label.CSS=CSS
-net.filter.tooltip.CSS=Mostrar sólo archivos CSS
-net.filter.label.JS=JavaScript
-net.filter.tooltip.JS=Mostrar sólo archivos JavaScript
-net.filter.label.XHR=XHR
-net.filter.tooltip.XHR=Mostrar sólo XMLHttpRequests
-net.filter.label.Images=Imágenes
-net.filter.tooltip.Images=Mostrar sólo imágenes
-net.filter.label.Plugins=Plugins
-net.filter.tooltip.Plugins=Mostrar sólo archivos Flash y Silverlight
-net.filter.label.Media=Multimedia
-net.filter.tooltip.Media=Mostrar sólo audio y vídeo
-net.filter.label.Fonts=Fuentes
-net.filter.tooltip.Fonts=Mostrar sólo fuentes
-Post=Post
-Put=Put
-Response=Respuesta
-URLParameters=Parámetros
-Cache=Caché
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Información general
-fontviewer.Meta_Data=Metadatos
-fontviewer.view_source=ver fuente
-fontviewer.Preview=Vista previa
-fontviewer.view_characters=ver caracteres
-fontviewer.pretty_print=vista formateada
-fontviewer.view_sample=ver muestra
-fontviewer.uniqueid=ID único
-fontviewer.vendor=Vendedor
-fontviewer.license=Licencia
-fontviewer.description=Descripción
-fontviewer.copyright=Copyright
-fontviewer.credits=Créditos
-fontviewer.trademark=Marca comercial
-fontviewer.licensee=Titular de la licencia
-fontviewer.extension=Extensión
-fontviewer.pangram=Aquel biógrafo se zampó un extraño sándwich de vodka y ajo.
-jsonviewer.sort=Ordenar alfabéticamente
-jsonviewer.do_not_sort=No ordenar
-net.jsonviewer.Copy_JSON=Copiar "%S" como JSON
-RequestHeaders=Encabezados de solicitud
-ResponseHeaders=Encabezados de respuesta
-CachedResponseHeaders=Encabezados de respuesta de la caché
-PostRequestHeaders=Encabezados de respuesta de datos enviados
-net.label.ResponseHeadersFromBFCache=La solicitud se resolvió directamente desde la caché, así que no tenemos respuesta del servidor. Vea a continuación la respuesta de caché.
-plural.Limit_Exceeded2=Se alcanzó el límite del registro de Firebug. %1$S entrada no mostrada.; Se alcanzó el límite del registro de Firebug. %1$S entradas no mostradas.
-LimitPrefs=Preferencias
-LimitPrefsTitle=Para cambiar el límite, modifique: "%S"
-Refresh=Refrescar
-panel.tip.Refresh=Refrescar la ventana del panel
-OpenInTab=Abrir en nueva pestaña
-firebug.tip.Open_In_Tab=Abrir la URL en una nueva pestaña del navegador
-Open_Response_In_New_Tab=Abrir respuesta en una pestaña nueva
-net.tip.Open_Response_In_New_Tab=Abrir la respuesta en una nueva pestaña del navegador
-Profile=Analizar
-ProfilerStarted=El analizador está corriendo. Vuelva a hacer clic en "Analizar" para ver el informe.
-ProfilerRequiresTheScriptPanel=El panel de Script debe estar activado para análisis para que funcione.
-plural.Profile_Time2=(%1$Sms, %2$S llamada);(%1$Sms, %2$S llamadas)
-NothingToProfile=Ninguna actividad para analizar
-PercentTooltip=Porcentaje de tiempo dedicado a esta función
-CallsHeaderTooltip=Número de veces que la función fue llamada
-OwnTimeHeaderTooltip=Tiempo dedicado a la función, excluyendo llamadas anidadas
-TimeHeaderTooltip=Tiempo dedicado a la función, incluyendo llamadas anidadas
-AvgHeaderTooltip=Tiempo medio, incluyendo llamadas a funciones.
-MinHeaderTooltip=Tiempo mínimo, incluyendo llamadas a funciones
-MaxHeaderTooltip=Tiempo máximo, incluyendo llamadas a funciones
-ProfileButton.Tooltip=Analizar el tiempo de ejecución JavaScript
-Function=Función
-Percent=Porcentaje
-Calls=Llamadas
-OwnTime=Propio tiempo
-Time=Tiempo
-Avg=Promedio
-Min=Mínimo
-Max=Máximo
-File=Archivo
-Copy=Copiar
-Cut=Cortar
-Remove=Eliminar
-Delete=Borrar
-Paste=Pegar
-SelectAll=Seleccionar todo
-html.Copy_Node=Copiar %S
-html.tip.Copy_Node=Copiar el nodo %S y todo su contenido al portapapeles
-CopyInnerHTML=Copiar innerHTML
-html.tip.Copy_innerHTML=Copiar los contenidos del elemento al portapapeles
-CopyXPath=Copiar XPath
-html.tip.Copy_XPath=Copiar el XPath del elemento al portapapeles
-Copy_CSS_Path=Copiar ruta CSS
-html.tip.Copy_CSS_Path=Copiar la ruta CSS del elemento al portapapeles
-html.menu.Paste=Pegar %S
-html.tip.Paste=Pegar como contenido %S
-html.menu.Paste_Replace_Content=Reemplazar contenido
-html.tip.Paste_Replace_Content=Reemplazar el contenido del nodo
-html.menu.Paste_Replace_Node=Reemplazar el nodo
-html.tip.Paste_Replace_Node=Reemplazar el HTML del nodo
-html.menu.Paste_AsFirstChild=Como primer hijo
-html.tip.Paste_AsFirstChild=Pegar como el primer hijo del nodo
-html.menu.Paste_AsLastChild=Como último hijo
-html.tip.Paste_AsLastChild=Pegar como el último hijo del nodo
-html.menu.Paste_Before=Antes
-html.tip.Paste_Before=Pegar antes del nodo
-html.menu.Paste_After=Después
-html.tip.Paste_After=Pegar después del nodo
-html.menu.Reload_Frame=Recargar frame
-html.menu.tip.Reload_Frame=Recargas los contenidos del frame
-CopyLocation=Copiar ubicación
-clipboard.tip.Copy_Location=Copiar la URL de la ubicación del objeto al portapapeles
-CopyURLParameters=Copiar parámetros de URL
-net.tip.Copy_URL_Parameters=Copiar los parámetros del URL al portapapeles
-CopyPOSTParameters=Copiar parámetros POST
-net.tip.Copy_POST_Parameters=Copiar los parámetros POST al portapapeles
-CopyLocationParameters=Copiar ubicación con parámetros
-net.tip.Copy_Location_Parameters=Copiar la URL con parámetros al portapapeles
-CopyRequestHeaders=Copiar encabezados de solicitud
-net.tip.Copy_Request_Headers=Copiar los encabezados de solicitud al portapapeles
-CopyResponseHeaders=Copiar encabezados de respuesta
-net.tip.Copy_Response_Headers=Copiar los encabezados de respuesta al portapapeles
-CopyResponse=Copiar el cuerpo de la respuesta
-net.tip.Copy_Response=Copiar el cuerpo de la respuesta al portapapeles
-CopyError=Copiar error
-console.menu.tip.Copy_Error=Copiar la información del error al portapapeles
-CopySource=Copiar función
-dom.tip.Copy_Source=Copiar el código fuente de la función al portapapeles
-ShowCallsInConsole=Registrar llamadas a "%S"
-dom.tip.Log_Calls_To_Function=Mostrar en el panel de la consola las llamadas a la función "%S"
-ShowEventsInConsole=Registrar eventos
-html.tip.Show_Events_In_Console=Mostrar información de eventos en la consola
-panel.Enabled=Activado
-panel.tip.Enabled=Conmutar la activación del panel
-panel.tooltip.Show_Command_Line_Popup=Mostrar ventana de línea de comandos
-console.MethodNotSupported=La consola de Firebug no soporta "%S"
-commandline.errorSourceHeader=EXPRESIÓN EVALUADA CON LA LÍNEA DE COMANDOS DE FIREBUG:
-commandline.MethodDisabled=Este método de Línea de comandos está temporalmente desactivado.
-commandline.MethodNotSupported=La línea de comandos de Firebug no soporta "%S"
-commandline.CurrentWindow=Ventana actual:
-console.Disable_Break_On_All_Errors=Desactivar parar en todos los errores
-console.Break_On_All_Errors=Parar en todos los errores
-console.Break_On_This_Error=Parar en este error
-console.Use_Arrow_keys,_Tab_or_Enter=Use teclas de flecha, Tab o Intro
-console.JSDisabledInFirefoxPrefs=JavaScript está desactivado en sus preferencias de Firefox. Si desea usar el panel de la consola, active está opción en "Herramientas -> Opciones -> Contenido -> Activar JavaScript"
-console.ScriptPanelMustBeEnabledForTraces=El panel de Script debe estar activado para obtener trazas de ejecución. <a>Activar el panel de Script.</a>
-tooltip.multipleFiltersHint=Use Ctrl+Clic para seleccionar varios filtros
-console.multiHighlightLimitExceeded=Hay demasiados elementos en el array para resaltarlos en la página (el límite actual es %S).\nConsulte la preferencia "extensions.firebug.multiHighlightLimit"
-commandline.disabledForXMLDocs=La línea de comandos de Firebug está desactivada para las páginas XML. Puede <a>cambiar a HTML</a> para activarla.
-commandline.Use_in_Command_Line=Usar en línea de comandos
-commandline.tip.Use_in_Command_Line=Enfoca la Línea de comandos, y hace que este valor este disponible como "$p"
-commandline.include.includeSuccess=%S incluido correctamente.
-commandline.include.aliasNotFound=No se encontró el alias "%S".
-commandline.include.loadFail=No se pudo cargar el siguiente script: %S
-commandline.include.invalidRequestProtocol=Sólo están soportados protocolos HTTP/HTTPS.
-commandline.include.invalidSyntax=Falló la inclusión debido a errores de sintaxis. ¿Seguro que el archivo contiene JavaScript?
-commandline.include.aliasCreated=Se creó el alias "%S".
-commandline.include.aliasRemoved=Se eliminó el alias "%S".
-commandline.include.invalidAliasName=Los alias no pueden contener ningún "." o "/"; alias inválido: "%S".
-commandline.include.tooLongAliasName=Los nombres de alias no pueden tener más de 30 caracteres; nombre de alias no válido: "%S".
-commandline.include.invalidAliasArgumentType=Segundo argumento no válido; se esperaba un nombre de alias.
-commandline.include.invalidUrlArgumentType=Argumento de URL no válido.
-commandline.include.confirmDelete=¿Está seguro de querer eliminar este alias:"%S"?
-commandline.include.noDefinedAlias=(aún no se ha definido ningún alias)
-commandline.tip.Delete_Alias=Eliminar el alias
-commandline.tip.Edit_Alias_Name=Editar el nombre del alias
-commandline.tip.Edit_Alias_URL=Editar la URL del alias
-commandline.tip.Open_In_Scratchpad=Abrir el contenido del script en Scratchpad
-commandline.tip.Include_Script=Descargar y ejecutar el script
-commandline.label.DeleteAlias=Eliminar alias
-commandline.label.EditAliasName=Editar nombre del alias
-commandline.label.EditAliasURL=Editar URL del alias
-commandline.label.OpenInScratchpad=Abrir en scratchpad
-commandline.label.IncludeScript=Incluir "%S"
-Do_not_show_this_message_again=No volver a mostrar este mensaje
-scratchpad.loading=Cargando, por favor espere…
-scratchpad.failLoading=Error al cargar el script.
-net.sizeinfo.Response_Body=Cuerpo de la respuesta
-net.sizeinfo.Post_Body=Cuerpo de la solicitud
-net.sizeinfo.Total_Sent=Total enviado
-net.sizeinfo.Total_Received=Total recibido
-net.sizeinfo.Including_HTTP_Headers=Incluyendo encabezados HTTP
-net.ActivationMessage=Panel de red activado. No se mostrarán solicitudes recibidas mientras el panel esté desactivado.
-net.responseSizeLimitMessage=Se ha alcanzado el límite del tamaño de respuesta de Firebug. Haga clic <a>aquí</a> para ver toda la respuesta en una pestaña nueva de Firefox.
-net.postDataSizeLimitMessage=Los datos de la solicitud superan el tamaño límite de Firebug.
-net.Break_On_XHR=Parar en XHR
-net.label.Parameters=Parámetros
-net.label.Parts=Partes
-net.label.Source=Fuente
-net.label.Resend=Reenviar
-net.tip.Resend=Enviar de nuevo la solicitud
-net.option.Disable_Browser_Cache=Desactivar caché del navegador
-net.option.tip.Disable_Browser_Cache=Desactivar la caché HTTP del navegador
-net.option.Show_Paint_Events=Mostrar eventos de dibujo
-net.option.tip.Show_Paint_Events=Mostrar los eventos de MozAfterPaint como líneas verdes dentro de la línea temporal
-net.option.Show_BFCache_Responses=Mostrar respuestas de caché BF
-net.option.tip.Show_BFCache_Responses=También se mostrarán respuestas de la caché Back-Forward
-script.Break_On_Next=Parar en siguiente
-script.Disable_Break_On_Next=Desactivar parar en el próximo
-ShowHttpHeaders=Mostrar encabezados HTTP
-plural.Request_Count2=%1$S petición;%1$S peticiones
-net.summary.from_cache=%S de caché.
-net.summary.tip.request_count=Número de solicitudes
-net.summary.tip.total_size=Tamaño total de todas las solicitudes
-net.summary.tip.total_cached_size=Tamaño total cacheado de todas las solicitudes
-net.summary.tip.total_request_time=Tiempo total necesario para cargar todas las solicitudes y el momento en el que se produjo el evento "onload".
-StopLoading=Detener la carga
-net.tip.Stop_Loading=Detener la carga de la solicitud
-LargeData=(Datos muy grandes)
-ShowComputedStyle=Mostrar estilo calculado
-StyleGroup-text=Texto
-StyleGroup-background=Fondo
-StyleGroup-box=Modelo de caja
-StyleGroup-layout=Plantilla
-StyleGroup-other=Otro
-Dimensions=%S x %S
-CopyColor=Copiar color
-css.tip.Copy_Color=Copiar el color al portapapeles
-CopyImageLocation=Copiar ubicación de la imagen
-css.tip.Copy_Image_Location=Copiar la URL de la imagen al portapapeles
-OpenImageInNewTab=Abrir imagen en nueva pestaña
-css.tip.Open_Image_In_New_Tab=Abrir la imagen en nueva pestaña del navegador
-OmitObjectPathStack=Omitir pila de la barra de tareas
-callstack.option.tip.Omit_Object_Path_Stack=No se muestra la pila de la ruta del objeto
-Load_Original_Source=Cargar fuente original
-css.tip.Load_Original_Source=Descartar los cambios y cargar el CSS original
-callstack.option.Show_Arguments=Mostrar argumentos
-callstack.option.tip.Show_Arguments=Mostrar también argumentos de función
-Copy_Rule_Declaration=Copiar declaración de regla
-css.tip.Copy_Rule_Declaration=Copiar la regla con todas sus propiedades al portapapeles
-Copy_Style_Declaration=Copiar declaración de estilo
-css.tip.Copy_Style_Declaration=Copiar las propiedades de la regla al portapapeles
-css.label.Copy_Property_Declaration=Copiar Declaración de la Propiedad
-css.tip.Copy_Property_Declaration=Copiar la declaración de la propiedad al portapapeles
-css.label.Copy_Property_Name=Copiar Nombre de la Propiedad
-css.tip.Copy_Property_Name=Copiar el nombre de la propiedad al portapapeles
-css.label.Copy_Property_Value=Copiar Valor de la Propiedad
-css.tip.Copy_Property_Value=Copiar el valor de la propiedad al portapapeles
-plural.Error_Count2=%1$S error;%1$S errores
-moduleManager.title=El panel %S está desactivado
-moduleManager.desc3=Use el menú del icono de la barra de estado de Firebug para activar/desactivar todos los paneles a la vez. Use la pestaña de cada panel para controlar dicho panel.
-moduleManager.Enable=Activar
-Suspend_Firebug=Suspender Firebug
-Resume_Firebug=Reanudar Firebug
-Reset_Panels_To_Disabled=Restablecer paneles a desactivados
-Open_Console=Abrir consola
-Open_Console_Tooltip=Abrir consola de seguimiento para Firebug.
-Scope_Chain=Cadena de scope
-With_Scope=With
-Call_Scope=Call
-Window_Scope=Window
-requestinfo.Blocking=Bloqueado
-requestinfo.Resolving=Consulta DNS
-requestinfo.Connecting=Conectando
-requestinfo.Sending=Enviando
-requestinfo.Waiting=En espera
-requestinfo.Receiving=Recibiendo
-requestinfo.ContentLoad="DOMContentLoaded"(evento)
-requestinfo.WindowLoad="load" (evento)
-requestinfo.started.label=Solicitar tiempo de inicio desde el principio
-requestinfo.phases.label=Solicitar inicio de fases y tiempo transcurrido desde la solicitud de inicio:
-requestinfo.timings.label=Temporalización desde la petición de inicio:
-search.Firebug_Search=Búsqueda Firebug
-search.Next=Siguiente
-search.tip.Next=Buscar la siguiente coincidencia
-search.Previous=Anterior
-search.tip.Previous=Buscar la anterior coincidencia
-search.Case_Sensitive=Forzar sensibilidad a mayúsculas
-search.tip.Case_Sensitive=Tener en cuenta MAY/min al buscar
-search.Case_Insensitive=No distinguir MAY/min
-search.tip.Case_Insensitive=Ignorar MAY/min al buscar
-search.Multiple_Files=Múltiples archivos
-search.tip.Multiple_Files=Buscar en todos los archivos relacionados con este panel
-search.Use_Regular_Expression=Usar Expresión Regular
-search.tip.Use_Regular_Expression=Interpretar la cadena introducida como expresión regular al buscar
-search.html.CSS_Selector=Selector CSS
-search.net.Headers=Encabezados
-search.net.Parameters=Parámetros
-search.net.Response_Bodies=Cuerpos de respuesta
-search.net.tip.Response_Bodies=Buscar también en los cuerpos de respuesta
-firebug.console.Persist=Mantener
-firebug.console.Do_Not_Clear_On_Reload2=No borrar el panel al recargar la página
-firebug.console.Show_All_Log_Entries=Mostrar todas las entradas del registro
-firebug.console.Errors=Errores
-firebug.console.Filter_by_Errors=Filtrar por errores
-firebug.console.Warnings=Advertencias
-firebug.console.Filter_by_Warnings=Filtrar por advertencias
-firebug.console.Info=Información
-firebug.console.Filter_by_Info=Filtrar por información
-firebug.console.Debug_Info=Información de depuración
-firebug.console.Filter_by_Debug_Info=Filtrar por información de depuración
-firebug.Deactivate_Firebug=Desactivar Firebug
-firebug.tip.Deactivate_Firebug=Desactivar Firebug en la página actual
-firebug.tip.Toggle_Side_Panels=Alternar visibilidad de los paneles laterales
-firebug.ShowFirebug=Abrir Firebug
-firebug.menu.tip.Open_Firebug=Mostrar la IU de Firebug
-firebug.HideFirebug=Ocultar Firebug
-firebug.menu.tip.Minimize_Firebug=Minimizar Firebug, pero mantenerlo activo
-firebug.FocusFirebug=Enfocarla ventana de Firebug
-firebug.menu.tip.Focus_Firebug=Enfocar la ventana flotante de Firefox
-firebug.menu.Enable_All_Panels=Activar todos los paneles
-firebug.menu.tip.Enable_All_Panels=Activar todos los paneles activables
-firebug.menu.Disable_All_Panels=Desactivar todos los paneles
-firebug.menu.tip.Disable_All_Panels=Desactivar todos los paneles activables
-firebug.menu.Customize_shortcuts=Personalizar atajos
-firebug.menu.tip.Customize_Shortcuts=Personalizar los atajos internos de teclado de Firebug
-firebug.Options=Opciones
-firebug.menu.tip.Options=Preferencias globales de Firebug
-firebug.menu.Enable_Accessibility_Enhancements=Activar mejoras de accesibilidad
-firebug.menu.tip.Enable_Accessibility_Enhancements=Activar control pleno a través del teclado y otras mejoras de accesibilidad
-firebug.menu.Activate_Same_Origin_URLs2=Activar para URL del mismo origen
-firebug.menu.tip.Activate_Same_Origin_URLs=Activar Firebug para URL con la misma política de origen
-firebug.menu.Reset_All_Firebug_Options=Restablecer todas las opciones de Firebug
-firebug.menu.tip.Reset_All_Firebug_Options=Restablecer todas las preferencias de Firefox a sus valores predeterminados
-firebug.menu.Firebug_Online=Firebug en línea
-firebug.menu.tip.Firebug_Online=Sitios web relativos a Firebug
-firebug.menu.Extensions=Extensiones de Firebug…
-firebug.menu.tip.Extensions=Descargar e instalar extensiones de Firebug
-firebug.menu.Vertical_Panels=Paneles verticales
-firebug.menu.tip.Vertical_Panels=Conmutar la disposición de los paneles principales y laterales de Firebug
-firebug.menu.Show_Info_Tips=Mostrar consejos
-firebug.menu.tip.Show_Info_Tips=Muestra ventanas emergentes con información del elemento sobre el que está situado el ratón
-firebug.Show_Error_Count=Mostrar número de errores
-firebug.menu.tip.Show_Error_Count=Mostrar el número de errores almacenados en la consola
-firebug.TextSize=Tamaño de texto
-firebug.menu.tip.Text_Size=Cambiar el tamaño del texto de Firebug
-firebug.IncreaseTextSize=Aumentar tamaño de texto
-firebug.menu.tip.Increase_Text_Size=Aumentar el tamaño del texto de Firebug
-firebug.DecreaseTextSize=Reducir tamaño del texto
-firebug.menu.tip.Decrease_Text_Size=Reducir el tamaño del texto de Firebug
-firebug.NormalTextSize=Tamaño de texto normal
-firebug.menu.tip.Normal_Text_Size=Restaurar el tamaño de texto predeterminado de Firebug
-firebug.Website=Página web de Firebug…
-firebug.menu.tip.Website=Abrir la página web oficial de Firebug
-firebug.help=Ayuda…
-firebug.menu.tip.help=Abrir la página con vínculos a explicaciones sobre Firebug
-firebug.Documentation=Documentación…
-firebug.menu.tip.Documentation=Abrir la documentación de Firebug
-firebug.KeyShortcuts=Atajos de teclado…
-firebug.menu.tip.Key_Shortcuts=Abrir la lista de atajos de ratón y teclado disponible en Firebug
-firebug.Forums=Grupo de debate…
-firebug.menu.tip.Forums=Abrir la página del grupo de debate
-firebug.Issues=Seguimiento de problemas…
-firebug.menu.tip.Issues=Abrir la página de seguimiento de problemas
-firebug.Donate=Contribuir…
-firebug.menu.tip.Donate=Abrir la página de contribuciones
-firebug.About=Acerca de…
-firebug.menu.tip.About=Información sobre Firebug
-ProfileJavaScript=Analizar JavaScript
-firebug.menu.tip.Profile_JavaScript=Analizar JavaScript en tiempo de ejecución
-firebug.Search=Buscar
-firebug.menu.tip.Search=Enfocar el campo de búsquedas
-firebug.shortcut.reenterCommand.label=Reintroducir comando
-firebug.shortcut.tip.reenterCommand=Reintroducir el último comando en la línea de comandos
-firebug.shortcut.toggleInspecting.label=Conmutar inspección
-firebug.shortcut.tip.toggleInspecting=Activar/Desactivar el inspector
-firebug.shortcut.toggleQuickInfoBox.label=Conmutar caja de información rápida
-firebug.shortcut.tip.toggleQuickInfoBox=Activar/Desactivar la presencia de un panel con información sobre el elemento bajo inspección
-firebug.shortcut.toggleProfiling.label=Conmutar análisis
-firebug.shortcut.tip.toggleProfiling=Activar/Desactivar el analizador de JavaScript
-firebug.shortcut.focusCommandLine.label=Enfocar línea de comandos
-firebug.shortcut.tip.focusCommandLine=Abrir Firebug y enfocar la línea de comandos / conmutar la ventana emergente de línea de comandos
-firebug.shortcut.focusFirebugSearch.label=Enfocar búsqueda en Firebug
-firebug.shortcut.tip.focusFirebugSearch=Enfocar el campo de búsquedas
-firebug.shortcut.focusWatchEditor.label=Enfocar editor de seguimiento
-firebug.shortcut.tip.focusWatchEditor=Cambiar al panel de Script y enfocar el campo para introducir una nueva expresión de seguimiento
-firebug.shortcut.focusLocation.label=Enfocar ubicación
-firebug.shortcut.tip.focusLocation=Abrir el menú de ubicación
-firebug.shortcut.nextObject.label=Siguiente objeto
-firebug.shortcut.tip.nextObject=Seleccionar el siguiente objeto en la ruta de elemento de un panel
-firebug.shortcut.previousObject.label=Objeto anterior
-firebug.shortcut.tip.previousObject=Seleccionar el objeto anterior en la ruta de elemento de un panel
-firebug.shortcut.customizeFBKeys.label=Personalizar teclas de Firebug
-firebug.shortcut.tip.customizeFBKeys=Abrir la ventana de atajos de teclado de Firebug
-firebug.shortcut.detachFirebug.label=Abrir Firebug en una ventana nueva
-firebug.shortcut.tip.detachFirebug=Separar Firebug en su propia ventana
-firebug.shortcut.leftFirebugTab.label=Cambiar panel de Firebug a la izquierda
-firebug.shortcut.tip.leftFirebugTab=Cambiar el panel de Firebug a la izquierda
-firebug.shortcut.rightFirebugTab.label=Cambiar panel de Firebug a la derecha
-firebug.shortcut.tip.rightFirebugTab=Cambiar el panel de Firebug a la derecha
-firebug.shortcut.toggleFirebug.label=Abrir Firebug
-firebug.shortcut.tip.toggleFirebug=Abrir/Minimizar la IU de Firebug
-firebug.shortcut.closeFirebug.label=Desactivar Firebug
-firebug.shortcut.tip.closeFirebug=Desactivar Firebug en la página actual
-firebug.shortcut.previousFirebugTab.label=Panel anterior de Firebug
-firebug.shortcut.tip.previousFirebugTab=Cambiar al panel de Firebug seleccionado anteriormente
-firebug.shortcut.clearConsole.label=Limpiar consola
-firebug.shortcut.tip.clearConsole=Eliminar todos los registros de la consola
-firebug.shortcut.openTraceConsole.label=Abrir consola de seguimiento
-firebug.shortcut.tip.openTraceConsole=Abrir la consola de seguimiento de Firebug
-firebug.shortcut.navBack.label=Volver
-firebug.shortcut.tip.navBack=Cambiar al panel o elemento de la lista de ubicaciones del historial de navegación anteriores
-firebug.shortcut.navForward.label=Avanzar
-firebug.shortcut.tip.navForward=Cambiar al panel o elemento de la lista de ubicaciones del historial de navegación siguientes
-firebug.shortcut.increaseTextSize.label=Aumentar tamaño del texto
-firebug.shortcut.tip.increaseTextSize=Aumenta el tamaño del texto de Firebug
-firebug.shortcut.decreaseTextSize.label=Reducir tamaño del texto
-firebug.shortcut.tip.decreaseTextSize=Reduce el tamaño del texto de Firebug
-firebug.shortcut.normalTextSize.label=Tamaño de texto normal
-firebug.shortcut.tip.normalTextSize=Restaura el tamaño de texto predeterminado de Firebug
-firebug.shortcut.help.label=Abrir ayuda
-firebug.shortcut.tip.help=Abre la página en la que se contestan las preguntas más frecuentes
-firebug.shortcut.toggleBreakOn.label=Conmutar activación de parada
-firebug.shortcut.tip.toggleBreakOn=Activa/Desactiva la detención de la ejecución del script ante eventos específicos ocurridos en un panel
-firebug.panel_selector=Selector de panel
-customizeShortcuts=Atajos de teclado de Firebug
-a11y.labels.panel_tools=panel de herramientas
-a11y.labels.firebug_panels=Paneles de Firebug
-a11y.labels.firebug_side_panels=Paneles laterales de Firebug
-a11y.labels.firebug_window=Ventana de Firebug
-a11y.labels.firebug_status=Estado de Firebug
-a11y.labels.reset=restablecer
-a11y.labels.reset_shortcut=restablecer atajo de teclado %S
-aria.labels.inactive_panel=panel inactivo
-a11y.labels.log_rows=filas de registros
-a11y.labels.call_stack=pila de llamadas
-a11y.labels.document_structure=estructura del documento
-a11y.labels.title_panel=panel %S
-a11y.labels.title_side_panel=panel lateral %S
-a11y.labels.cached=en caché
-aria.labels.stack_trace=seguimiento de pila
-a11y.layout.padding=relleno
-a11y.layout.border=borde
-a11y.layout.margin=margen
-a11y.layout.position=posición
-a11y.layout.position_top=posición superior
-a11y.layout.position_right=posición derecha
-a11y.layout.position_bottom=posición inferior
-a11y.layout.position_left=posición izquierda
-a11y.layout.margin_top=margen superior
-a11y.layout.margin_right=margen derecho
-a11y.layout.margin_bottom=margen inferior
-a11y.layout.margin_left=margen izquierdo
-a11y.layout.border_top=borde superior
-a11y.layout.border_right=borde derecho
-a11y.layout.border_bottom=borde inferior
-a11y.layout.border_left=borde izquierdo
-a11y.layout.padding_top=borde superior
-a11y.layout.padding_right=borde derecho
-a11y.layout.padding_bottom=borde inferior
-a11y.layout.padding_left=borde izquierdo
-a11y.layout.top=superior
-a11y.layout.right=derecho
-a11y.layout.bottom=inferior
-a11y.layout.left=izquierdo
-a11y.layout.width=ancho
-a11y.layout.height=alto
-a11y.layout.size=tamaño
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=tamaño de caja
-a11y.layout.clientBoundingRect=rectángulo delimitador
-a11y.descriptions.press_enter_to_edit_values=Pulse Intro seguido de Tab para editar valores individuales
-a11y.labels.style_rules=reglas de estilo
-aria.labels.inherited_style_rules=reglas de estilo heredadas
-a11y.labels.computed_styles=estilos calculados
-a11y.labels.dom_properties=Propiedades del DOM
-a11y.labels.inline_editor=editor en línea
-a11y.labels.value_for_attribute_in_element=valor para el atributo %S en el elemento %S
-a11y.labels.attribute_for_element=atributo para el elemento %S
-a11y.labels.text_contents_for_element=contenidos de texto para el elemento %S
-a11y.labels.defined_in_file=definido en %S
-a11y.labels.declarations_for_selector=declaraciones de estilo para el selector "%S"
-a11y.labels.property_for_selector=propiedad CSS para el selector: %S
-a11y.labels.value_property_in_selector=valor de la propiedad %S para el selector %S
-a11y.labels.css_selector=Selector CSS
-a11y.labels.source_code_for_file=código fuente para el archivo %S
-a11y.labels.press_enter_to_add_new_watch_expression=pulse intro para añadir una nueva expresión de seguimiento
-a11y.labels.overridden=sobrescrito
-a11y.updates.has_conditional_break_point=tiene una parada condicional
-a11y.updates.has_disabled_break_point=ha desactivado la parada
-a11y.updates.script_suspended_on_line_in_file=Script suspendido en línea %S de %S, archivo %S
-a11y.updates.match_found_in_logrows=Coincidencia encontrada para "%S" en %S filas de registro
-a11y.updates.match_found_for_on_line=Coincidencia encontrada para "%S" en línea %S de %S
-a11y.updates.match_found_in_element=Coincidencia encontrada para "%S" en elemento %S en la ruta %S
-a11y.updates.match_found_in_attribute=Coincidencia encontrada para "%S" en atributo %S=%S del elemento %S en la ruta %S
-a11y.updates.match_found_in_text_content=Coincidencia encontrada para "%S" en contenido de texto: %S del elemento %S en la ruta %S
-a11y.updates.match_found_in_selector=Coincidencia encontrada para "%S" en selector %S
-a11y.updates.match_found_in_style_declaration=Coincidencia encontrada para "%S" en la declaración del estilo %S en el selector %S
-a11y.updates.match_found_in_dom_property=Coincidencia encontrada para "%S" en propiedad DOM %S
-a11y.updates.match_found_in_net_row=Coincidencia encontrada para "%S" en %S, %S : %S;
-a11y.updates.match_found_in_net_summary_row=Coincidencia encontrada para "%S" en fila de resumen de red: %S
-a11y.updates.no_matches_found=no se encontraron coincidencias para "%S"
-confirmation.Reset_All_Firebug_Options=¿Está seguro de de que desea restaurar todas las opciones de Firebug a su valor predeterminado?
-confirmation.Edit_CSS_Source=Sus modificaciones al CSS serán eliminadas.\n¿Está seguro de querer editar la fuente?
-warning.Console_must_be_enabled=La consola debe estar activada
-warning.Command_line_blocked?=¿Línea de comando bloqueada?
-warning.dollar_change=El comando de consola $() ha cambiado su significado de $=getElementById(id) a $=querySelector(selector). En su lugar intente $("#%S").
-message.Reload_to_activate_window_console=Recarga para activar la ventana de la consola
-message.sourceNotAvailableFor=Actualizar la página para obtener la fuente de
-message.The_resource_from_this_URL_is_not_text=La fuente de esta URL no es texto
-firebug.history.Go_back_to_this_panel=Volver a este panel
-firebug.history.Stay_on_this_panel=Permanecer en este panel
-firebug.history.Go_forward_to_this_panel=Avanzar a este panel
-firebug.history.Go_back=Volver
-firebug.history.Go_forward=Avanzar
-script.warning.inactive_during_page_load=El panel de Script estaba inactivo durante la carga de la página
-script.suggestion.inactive_during_page_load2=<a>Recargar</a> para ver todas las fuentes
-script.warning.javascript_not_enabled=Javascript no está activado
-script.suggestion.javascript_not_enabled=Mire Firefox > Herramientas > Opciones > Contenido > Habilitar Javascript
-script.button.enable_javascript=Active JavaScript y recargue
-script.warning.all_scripts_filtered=Todos los scripts fueron filtrados
-script.suggestion.all_scripts_filtered=Ver la preferencia del filtro de script en la barra de herramientas
-script.warning.no_system_source_debugging=No se pueden depurar las fuentes del sistema
-script.suggestion.no_system_source_debugging=Por el momento no se puede usar Firebug para depurar fuentes del sistema. Consulte <a>issue 5110</a> para saber por qué.
-script.warning.no_javascript=No hay Javascript en esta página
-script.suggestion.no_javascript2=Si las etiquetas <script> tienen un atributo "type", éste debe ser "text/javascript" o "application/javascript". Además, los script deben ser analizables (sintácticamente correctos).
-script.warning.debugger_active=El depurador ya está activo
-script.suggestion.debugger_active=El depurador está detenido en una parada en otra página.
-script.button.Go_to_that_page=Ir a esa página
-script.warning.debugger_not_activated=Depurador desactivado
-script.suggestion.debugger_not_activated=Depurador desactivado
-script.Script_panel_must_be_enabled=%S (debe estar activado el panel de Script)
-firebug.Firebug=Firebug
-firebug.Close=Cerrar
-firebug.View=Ver
-firebug.Help=Ayuda
-firebug.Run=Ejecutar
-firebug.Copy=Copiar
-firebug.History=Historial
-firebug.Run_the_entered_command=Ejecutar el comando introducido
-firebug.Clear_the_Command_Editor=Limpiar el editor de comandos
-firebug.Copy_the_script_as_a_bookmarklet=Copiar el script como un bookmarklet
-firebug.Insert_a_previously_entered_command=Insertar un comando introducido previamente
-firebug.AlwaysOpenInWindow=Abrir siempre en una ventana nueva
-firebug.OpenWith=Abrir con un editor
-firebug.menu.tip.Open_With=Abrir el contenido en un editor externo
-firebug.Permissions=Sitios…
-firebug.Configure_Editors=Configurar editores
-script.tip.Script_Type=Filtrar por tipo de script
-script.tip.Script_Filter_Static=Mostrar sólo scripts cargados con la página
-script.tip.Script_Filter_Evals=Mostrar scripts cargados junto con la página y scripts creados por eval()
-script.tip.Script_Filter_Events=Mostrar scripts cargados junto con la página, scripts creados por eval() y eventos listeners
-script.tip.Script_Filter_All=Mostrar todo tipo de scripts
-firebug.labelWithShortcut=%S (%S)
-script.Rerun=Reejecutar
-script.tip.Rerun=Volver a la actual función de pila de llamadas
-script.Continue=Continuar
-script.tip.Continue=Continuar la ejecución de JavaScript
-script.Step_Over=Saltar
-script.tip.Step_Over=Ejecutar el siguiente comando
-script.Step_Into=Entrar
-script.tip.Step_Into=Ejecutar el siguiente comando y saltar a funciones
-script.Step_Out=Salir
-script.tip.Step_Out=Ejecutar el resto de la función y volver a su llamador
-firebug.RunUntil=Ejecutar hasta esta línea
-script.tip.Run_Until=Ejecutar el JavaScript hasta la línea especificada
-firebug.Inspect=Inspeccionar
-firebug.InspectElement=Inspeccionar elemento
-firebug.InspectElementWithFirebug=Inspeccionar elemento con Firebug
-firebug.BreakOnErrors=Parar en errores
-firebug.InspectTooltip=Haga clic en un elemento de la página para inspeccionarlo
-firebug.EditHTMLTooltip=Editar este HTML
-firebug.Profile=Analizar
-firebug.Clear=Limpiar
-firebug.ClearConsole=Limpiar consola
-firebug.ClearTooltip=Limpiar la consola
-editors.Configured_Firebug_Editors=Editores de Firebug configurados
-editors.Editor=Editor
-editors.Executable=Ejecutable
-editors.Launch_Arguments=Argumentos de ejecución
-editors.Add=Añadir
-editors.Remove=Eliminar
-editors.Change=Cambiar
-editors.Move_Up=Subir
-editors.Close=Cerrar
-editors.Browse=Examinar…
-changeEditor.Editor_Configuration=Configuración del editor
-changeEditor.Name=Nombre:
-changeEditor.Executable=Ejecutable:
-changeEditor.CmdLine=Argumentos:
-changeEditor.Supplied_arguments=Argumentos aportados por Firebug:
-changeEditor.URL_of_file=URL del archivo (si %url no está presente, se añadirá %file por defecto)
-changeEditor.Path_to_local_file=Ruta al archivo local (o a la copia temporal)
-changeEditor.Line_number=Número de línea (si está disponible)
-changeEditor.Invalid_Application_Path=Ruta de aplicación inválida
-changeEditor.Application_does_not_exist=¡La aplicación especificada no existe!
-firebug.Edit=Editar
-firebug.css.sourceEdit=Editar código fuente
-firebug.css.sourceEdit.tooltip=Editar código fuente de la hoja de estilo cargada por el navegador
-firebug.css.liveEdit=Editar en vivo
-firebug.css.liveEdit.tooltip=Editar CSS extraído del navegador
-firebug.EditCSSTooltip=Editar esta hoja de estilo
-firebug.activation.privateBrowsingMode=Los sitios no se guardan en Modo de navegación privada
-firebug.breakpoint.showBreakNotifications=Mostrar notificaciones de parada
-firebug.breakpoint.tip.Show_Break_Notifications=Mostrar una notificación cuando una función de 'Parar en' o el depurador; palabra clave detenga la ejecución de JavaScript
-firebug.breakpoint.doNotShowBreakNotification2=Puede desactivar/activar las notificaciones de parada en <a>en el menú del panel</a>.
-firebug.bon.cause.disableDebuggerKeyword2=Pulsando el botón "Desactivar" se sobrescribe el "Depurador" con una parada desactivada.
-firebug.bon.tooltip.disableDebuggerKeyword2=Crear una parada desactivada
-firebug.bon.scriptPanelNeeded=(el panel de scripts debe estar activado para usar esta función)
-firebug.dom.noChildren2=No hay objetos hijos
-firebug.reps.more=más
-firebug.reps.reference=Detectada referencia cíclica
-firebug.storage.totalItems=%1$S elemento en almacén;%1$S elementos en almacén
-firebug.reps.historyEntries=%1$S entrada de historial;%1$S entradas de historial
-firebug.reps.table.ObjectProperties=Propiedades del objeto
-firebug.completion.empty=(no hay sugerencias)
-firebug.failedToPreviewObjectURL=El objeto URL probablemente ha sido revocado usando el método revokeObjectURL.
-firebug.failedToPreviewImageURL=Fallo al cargar la URL proporcionada.
-firebug.Memory_Profiler_Started=Iniciado el analizador de memoria
-firebug.Objects_Added_While_Profiling=Objetos añadidos al analizar
-firebug.Memory_Profiler_Results=Resultados del analizador de memoria
-firebug.Entire_Session=Toda la sesión
-console.msg.nothing_to_output=(nada que mostrar)
-console.msg.an_empty_string=(cadena vacía)
-cookies.legacy.firecookie_detected=Se ha detectado la extensión Firecookie, que se ha integrado por defecto en Firefox 1.10. Para evitar conflictos debe desinstalar Firecookie. \n\nLuego debe reiniciar para completar la desinstalación de la extensión.
-cookies.legacy.uninstall=Desinstalar
-cookies.legacy.uninstall_and_restart=Desinstalar y reiniciar
-console.cmd.help_title=API de línea de comandos
-console.cmd.help_title_desc=Pulse F1 para abrir la ayuda en línea de Firebug
-console.cmd.tip_title=Consejos de Línea de comandos
-console.cmd.tip_title_desc=Aprender trucos y consejos de la Línea de comandos
-console.cmd.tip.javascript=Se puede ejecutar en la Línea de comandos cualquier expresión JavaScript. Por ejemplo:
-console.cmd.tip.closures=Para acceder a variables en closures use la sintaxis ".%" (ver más <a>aquí</a>). Por ejemplo:
-console.cmd.help.$=Devuelve un elemento con ese id.
-console.cmd.help.$$=Devuelve un array de elementos que coinciden con el selector CSS.
-console.cmd.help.$x=Devuelve un array de elementos que coinciden con la expresión XPath.
-console.cmd.help.dir=Imprime un listado interactivo de todas las propiedades del objeto, idéntico a la vista del panel DOM.
-console.cmd.help.dirxml=Imprime el árbol fuente XML de un elemento HTML o XML, de forma idéntica a la vista del panel HTML. Puede pulsar en cualquier nodo del panel HTML para inspeccionarlo.
-console.cmd.help.cd=Por defecto, las expresiones de línea de comandos son relativas a la ventana de máximo nivel de la página.
-console.cmd.help.clear=Limpia la consola.
-console.cmd.help.copy=Copia el parámetro al portapapeles. Puede ser el valor retornado por una función o un objeto.
-console.cmd.help.inspect=Inspecciona un objeto en el panel más adecuado, o el panel identificao por el segundo argumento opcional. Los paneles disponibles son: HTML, Hojas de estilo, Scripts y DOM.
-console.cmd.help.keys=Devuelve una array con los nombres de todas las propiedades del objeto.
-console.cmd.help.values=Devuelve una array con lo valores de todas las propiedades del objeto.
-console.cmd.help.debug=Añade una parada a la pimera línea de una función.
-console.cmd.help.undebug=Elimina la parada de la primra línea de una función.
-console.cmd.help.monitor=Activa almacenaje en registro de todas las llamadas a una función.
-console.cmd.help.unmonitor=Desactiva almacenaje en registro de todas las llamadas a una función.
-console.cmd.help.monitorEvents=Activa el almacenaje en el registro de todos los eventos enviados a un objeto. El segundo argumento (opcional) puede definir eventos específicos e incluso tipos de registro. Los tipos de evento disponibles son: composition, contextmenu, drag, focus, form, key, load, mouse, mutation, paint, scroll, text, ui, xul y clipboard.
-console.cmd.help.unmonitorEvents=Desactiva el almacenaje en el registro de todos los eventos enviados a un objeto. El segundo argumento (opcional) puede definir eventos específicos o familias de eventos para los cuales se vuelva a activar.
-console.cmd.help.profile=Activa el analizador de JavaScript. El segundo argumento (opcional) contiene el texto a imprimir en la cabecera del informe.
-console.cmd.help.profileEnd=Desactiva el analizador JavaScript e imprime su informe.
-console.cmd.help.table=Permite almacenar en el registro los datos aportados en formato tabla. El método toma un parámetro obligatorio que representa datos en formato tabla (array de arrays o lista de objetos). El segundo parámetro (opcional) puede usarse para especificar columnas y/o propiedades a almacenar en el registro.
-console.cmd.help.$0=Representa el último elemento seleccionado mediante el Inspector.
-console.cmd.help.$1=Representa el penúltimo elemento seleccionado mediante el Inspector.
-console.cmd.help.$2=Representa el tercer último elemento seleccionado con el Inspector.
-console.cmd.help.$3=Representa el cuarto último elemento seleccionado con el Inspector.
-console.cmd.help.$4=Representa el quinto último elemento seleccionado con el Inspector.
-console.cmd.help.$n=Devuelve uno de los 5 últimos elementos seleccionados mediante el Inspector. Este método tiene como parámetro necesario el índice del elemento (comienza en 0).
-console.cmd.help.$_=Representa el resultado de la última expresión evaluada en la Línea de comandos.
-console.cmd.help.help=Muestra ayuda para todos los comandos disponibles.
-console.cmd.help.include=Incluye un script remoto.
-console.cmd.help.$p=Tras hacer clic derecho en un objeto/valor JavaScript y pulsar "Usar en Línea de comandos", esta variable de línea de comandos toma ese valor.
-console.cmd.help.getEventListeners=Devuelve un objeto con todos los eventos listener registrados directamente en un elemento (u otro evento objetivo).
-console.cmd.helpUrlNotAvailable=La página de ayuda para este comando no está disponible
-perftiming.bars.label=Documenta el inicio de fases y el tiempo transcurrido desde la carga del documento:
-perftiming.events.label=Temporización de eventos desde la carga del documento:
-perftiming.details_title=Temporización de ejecución
-perftiming.details_title_desc=Temporización detallada
-perftiming.connectEnd=Tiempo al terminar la conexión con el servidor.
-perftiming.connectStart=Tiempo antes de comenzar la conexión con el servidor.
-perftiming.domComplete=Tiempo antes de que el documento esté disponible.
-perftiming.domContentLoadedEventEnd=Tiempo después de terminar el evento DOMContentLoaded.
-perftiming.domContentLoadedEventStart=Tiempo antes de que comience DOMContentLoaded.
-perftiming.domInteractive=Tiempo antes de que se establezca la disponibilidad como interactiva.
-perftiming.domLoading=Tiempo antes de que se establezca la disponibilidad como carga.
-perftiming.domainLookupEnd=Tiempo después de la búsqueda de nombres de dominio.
-perftiming.domainLookupStart=Tiempo antes de la búsqueda de nombres de dominio.
-perftiming.fetchStart=Tiempo en que se empieza a trasladar el recurso.
-perftiming.loadEventEnd=Momento en el que el evento load ha terminado.
-perftiming.loadEventStart=Tiempo antes de que el evento load comience.
-perftiming.navigationStart=Tiempo después de que el anterior documento empiece a descargarse
-perftiming.redirectCount=Número de redirecciones desde la última no-redirección.
-perftiming.redirectEnd=Tiempo después de que la última respuesta redirigida termine.
-perftiming.redirectStart=Tiempo de búsqueda para iniciar una redirección.
-perftiming.requestStart=Tiempo antes de una petición al servidor.
-perftiming.responseEnd=Tiempo después de finalizar una respuesta o conexión.
-perftiming.responseStart=Tiempo antes del inicio de una respuesta.
-perftiming.unloadEventEnd=Tiempo después de que el documento anterior se descargue.
-perftiming.unloadEventStart=Tiempo antes de lanzar el evento unload.
+Firebug=Firebug
+WindowTitle=Firebug - %S
+Panel-console=Consola
+panel.tip.console=Permite ver los mensajes de la consola y ejecutar comandos de JavaScript
+Panel-net=Red
+panel.tip.net=Permite analizar el tráfico de la red
+Panel-html=HTML
+panel.tip.html=Permite inspeccionar y manipular los nodos del DOM
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Permite inspeccionar y manipular las hojas de estilo CSS
+Panel-script=Script
+panel.tip.script=Permite depurar el JavaScript
+Panel-dom=DOM
+panel.tip.dom=Permite inspeccionar y manipular las propiedades del DOM
+Panel-css=Estilo
+panel.tip.css=Permite inspeccionar y manipular las reglas CSS del nodo seleccionado del DOM
+Panel-computed=Calculado
+panel.tip.computed=Permite inspeccionar los valores CSS calculados del nodo seleccionado del DOM
+Panel-layout=Plantilla
+panel.tip.layout=Permite inspeccionar y manipular los datos de diseño del nodo seleccionado del DOM
+Panel-domSide=DOM
+panel.tip.domSide=Permite inspeccionar y manipular las propiedades DOM del nodo seleccionado del DOM
+Panel-watches=Observar
+panel.tip.watches=Permite inspeccionar las variables JavaScript disponibles en el stack frame y definir las expresiones monitorizadas
+Panel-breakpoints=Paradas
+panel.tip.breakpoints=Permite manipular las paradas establecidas
+Panel-callstack=Pila
+panel.tip.callstack=Permite observar la pila actual de llamadas de JavaScript
+Panel-scopes=Ámbitos
+firebug.DetachFirebug=Abrir Firebug en una ventana nueva
+firebug.AttachFirebug=Fijar Firebug en la ventana del navegador
+pluralRule=1
+plural.Total_Firebugs2=%1$S Firebug total;%1$S Firebugs totales
+startbutton.tip.deactivated=Desactivado
+panel.status=%S: %S
+inBrowser=En navegador
+minimized=Minimizado
+enablement.for_all_pages=para todas las páginas
+enablement.on=Activado
+enablement.off=Desactivado
+enablement.Panel_activation_status=Activación de panel:
+none=Cerrado
+Firebug_-_inactive_for_current_website=Firebug - inactivo para el sitio actual
+Activate_Firebug_for_the_current_website=Activar Firebug para el sitio actual
+Minimized=Minimizado
+Minimize_Firebug=Minimizar Firebug
+On_for_all_web_pages=Activar para todas las páginas web
+firebug.menu.tip.On_for_all_Web_Sites=Activa Firebug por defecto en todas las páginas web
+firebug.menu.Clear_Activation_List=Vaciar lista de activación
+firebug.menu.tip.Clear_Activation_List=Vacía la lista de páginas web en las que Firebug estará activado
+firebug.menu.Detached=Separada
+firebug.menu.tip.Detached=Crea una ventana separada para Firebug
+firebug.menu.Top=Arriba
+firebug.menu.tip.Top=Alinea Firebug con la parte superior de la ventana
+firebug.menu.Bottom=Fondo
+firebug.menu.tip.Bottom=Alinea Firebug con el fondo de la ventana
+firebug.menu.Left=Izquierda
+firebug.menu.tip.Left=Alinea Firebug a la izquierda de la ventana
+firebug.menu.Right=Derecha
+firebug.menu.tip.Right=Alinea Firebug a la derecha de la ventana
+firebug.uiLocation=Posición de la IU de Firebug
+firebug.menu.tip.UI_Location=Posición de la interfaz de usuario de Firebug
+annotations.confirm.clear=¿Quiere borrar la lista de anotaciones de Firebug para todas las páginas web?
+firebug_options=Opciones de Firebug
+firebug.Show_All_Panels=Mostrar todos los paneles
+console.option.Show_Command_Line=Mostrar línea de comandos
+console.option.tip.Show_Command_Line=Enfoca la línea de comandos / Muestra la ventana emergente de la línea de comandos
+ShowJavaScriptErrors=Mostrar errores JavaScript
+console.option.tip.Show_JavaScript_Errors=Almacenar los mensajes de error de JavaScript en la consola
+ShowJavaScriptWarnings=Mostrar alertas JavaScript
+console.option.tip.Show_JavaScript_Warnings=Almacenar los mensajes de aviso de JavaScript en la consola
+ShowCSSErrors=Mostrar errores CSS
+console.option.tip.Show_CSS_Errors=Almacenar los mensajes de error de CSS en la consola
+ShowXMLHTMLErrors=Mostrar errores XML/HTML
+console.option.tip.Show_XML_HTML_Errors=Mostrar los mensajes de error XML y HTML en la consola
+ShowStackTrace=Mostrar trazas de ejecución con errores
+console.option.tip.Show_Stack_Trace=Mostrar información de trazas de ejecución para los mensajes de error
+ShowXMLHttpRequests=Mostrar XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Mostrar las XMLHttpRequests en la consola
+ShowChromeErrors=Mostrar errores de Chrome
+console.option.tip.Show_System_Errors=Mostrar mensajes de error internos del programa y la extensión en la consola
+ShowChromeMessages=Mostrar mensajes de Chrome
+console.option.tip.Show_System_Messages=Mostrar mensajes internos del programa y la extensión en la consola
+ShowNetworkErrors=Mostrar errores de red
+console.option.tip.Show_Network_Errors=Mostrar mensajes de error de red en al consola
+JavascriptOptionsStrict=Advertencias estrictas (penalización de rendimiento)
+console.option.tip.Show_Strict_Warnings=Mostrar también advertencias estrictas en la consola
+Command_History=Historial de comandos
+console.option.Show_Command_Editor=Mostrar editor de comandos
+console.option.tip.Show_Command_Editor=Cambiar a editor de comandos
+commandLineShowCompleterPopup=Mostrar ventana emergente de lista de autocompletado
+console.option.tip.Show_Completion_List_Popup=Mostrar la ventana emergente para autocompletado de comandos
+Assertion=Error de afirmación
+Line=%S (línea %S)
+LineAndCol=%S (línea %S, col %S)
+InstanceLine=%S #%S (línea %S)
+StackItem=%S (%S línea %S)
+SystemItem=<Sistema>
+panel.Inspect_In_Panel=Inspeccionar en panel %S
+panel.tip.Inspect_In_Panel=Cambiar al panel %S para analizar allí el objeto
+NoName=(sin nombre)
+jsdIScript=jsdIScript %S
+ShowFullText=Mostrar texto completo
+html.option.tip.Show_Full_Text=No recortar contenidos de los elementos
+ShowWhitespace=Mostrar espacios en blanco
+html.option.tip.Show_Whitespace=Mostrar espacios en blanco dentro de nodos
+ShowComments=Mostrar comentarios
+html.option.tip.Show_Comments=Mostrar comentarios de nodos
+html.option.Show_Entities_As_Symbols=Mostrar entidades como símbolos
+html.option.tip.Show_Entities_As_Symbols=Mostrar todas las entidades XML mediante su representación simbólica
+html.option.Show_Entities_As_Names=Mostrar entidades como nombres
+html.option.tip.Show_Entities_As_Names=Mostrar todas las entidades XMl mediante sus nombres
+html.option.Show_Entities_As_Unicode=Mostrar entidades como Unicode
+html.option.tip.Show_Entities_As_Unicode=Mostrar todas las entidades XML mediante su representación Unicode
+HighlightMutations=Resaltar cambios
+html.option.tip.Highlight_Mutations=Resaltar los cambios dentro de los nodos
+ExpandMutations=Expandir cambios
+html.option.tip.Expand_Mutations=Expandir la vista de árbol para mostrar los nodos con cambios
+ScrollToMutations=Desplazar la vista hasta los cambios
+html.option.tip.Scroll_To_Mutations=Desplazarse por la vista de árbol hasta que queden a la vista los nodos con cambios
+ShowQuickInfoBox=Mostrar caja de información rápida
+inspect.option.tip.Show_Quick_Info_Box=Mostrar información sobre el elemento actualmente inspeccionado dentro de un panel superpuesto sobre la página
+ShadeBoxModel=Modelo de caja sombreado
+inspect.option.tip.Shade_Box_Model=Sombrea las diferentes partes del modelo de caja
+ScrollIntoView=Desplazar hacia la vista
+html.tip.Scroll_Into_View=Se desplaza por la página hasta que el elemento quede visible
+NewAttribute=Atributo nuevo…
+html.tip.New_Attribute=Añadir nuevo atributo a este elemento
+html.Edit_Node=Editar %S…
+html.Node=Nodo
+html.tip.Edit_Node=Editar el %S mediante el editor de texto completo
+DeleteElement=Eliminar elemento
+html.Delete_Element=Eliminar del árbol el elemento
+DeleteNode=Eliminar nodo
+html.Delete_Node=Eliminar del árbol el nodo
+quickInfo=Información rápida
+computedStyle=Estilo calculado
+html.Break_On_Mutate=Parar si hay cambios en DOM
+html.Disable_Break_On_Mutate=Desactivar paradas si hay cambios en DOM
+html.label.Break_On_Text_Change=Parar si cambia el texto
+html.label.HTML_Breakpoints=Paradas en el HTML
+html.label.Break_On_Attribute_Change=Parar si cambian los atributos
+html.tip.Break_On_Attribute_Change=Parar la ejecución de JavaScript cuando cambie un atributo de este elemento
+html.label.Break_On_Child_Addition_or_Removal=Parar si se agregan o eliminan hijos
+html.tip.Break_On_Child_Addition_or_Removal=Parar la ejecución de JavaScript cuando se agregue o elimine un nodo hijo de este elemento
+html.label.Break_On_Element_Removal=Parar si se elimina el elemento
+html.tip.Break_On_Element_Removal=Parar la ejecución de JavaScript cuando se elimine el elemento
+html.label.Expand/Contract_All=Expandir/contraer todo
+html.tip.Expand/Contract_All=Expandir/contraer recursivamente todos los descendientes
+dom.scopeName=(closure)
+dom.scopeParentName=(padre del ámbito)
+dom.tip.scopeName=Use <func>.%closureVariable para acceder en la Línea de comandos
+dom.tip.scopeMemberName=Use <func>.%S para acceder en la Línea de comandos
+firebug.reps.declarativeScope=[ámbito de declaración]
+firebug.reps.objectScope=[ámbito del objeto]
+firebug.reps.withScope=[con ámbito]
+firebug.reps.optimizedAway=(optimizada)
+firebug.reps.element.attribute_value=valor del atributo
+firebug.reps.element.property_value=valor de la propiedad
+dom.label.breakOnPropertyChange=Parar si cambian las propiedades
+dom.tip.Break_On_Property_Change=Parar la ejecución de JavaScript cuando cambie esta propiedad
+dom.disableBreakOnPropertyChange=Desactivar parar si cambia la propiedad
+dom.label.DOM_Breakpoints=Paradas en el DOM
+EditAttribute=Editar atributo "%S"…
+html.tip.Edit_Attribute=Editar el valor del atributo "%S" de este elemento
+DeleteAttribute=Eliminar atributo "%S"
+html.tip.Delete_Attribute=Eliminar el atributo "%S" de este elemento
+InheritedFrom=Heredado de
+SothinkWarning=La extensión Sothink SWF Catcher impide que Firebug funcione correctamente.<br/><br/>Por favor, lea <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">este artículo del FAQ de Firebug</a> para obtener ayuda.
+css.fontFamilyPreview=Aquel biógrafo se zampó un extraño sándwich de vodka y ajo. 0123456789
+css.EmptyStyleSheet=No hay reglas. Puede <a>crear una regla</a>.
+css.EmptyElementCSS=Este elemento no tiene reglas de estilo. Puede <a>crear una regla</a> para él.
+EditStyle=Editar estilo del elemento…
+style.tip.Edit_Style=Editar los estilos internos del elemento
+AddRule=Añadir regla…
+css.tip.AddRule=Añadir una regla genérica para este elemento
+NewRule=Nueva regla…
+css.tip.New_Rule=Añadir una nueva regla
+css.Delete_Rule=Eliminar "%S"
+css.tip.Delete_Rule=Eliminar la regla "%S" y todas sus propiedades
+css.menu.Edit_Media_Query=Editar Media Query…
+css.menu.tip.Edit_Media_Query=Editar el media query asignado a esta regla
+NewProp=Nueva propiedad…
+css.tip.New_Prop=Añadir una nueva propiedad a la regla actual
+EditProp=Editar "%S"…
+css.tip.Edit_Prop=Editar el valor de la propiedad "%S"
+DisableProp=Desactivar "%S"
+css.tip.Disable_Prop=Desactivar la propiedad "%S"
+DeleteProp=Eliminar "%S"
+css.tip.Delete_Prop=Eliminar la propiedad "%S"
+BreakOnThisError=Parar en este error
+console.menu.tip.Break_On_This_Error=Detener la ejecución de JavaScript en cuanto se produzca este error
+BreakOnAllErrors=Parar en todos los errores
+console.menu.tip.Break_On_All_Errors=Detener la ejecución de JavaScript en cuanto se produzca un error
+TrackThrowCatch=Rastrear throw/catch
+script.option.tip.Track_Throw_Catch=Rastrear excepciones incluso cuando sean capturadas por bloques try/catch
+UseLastLineForEvalName=Usar la última línea de código fuente para eval()nombres
+UseMD5ForEvalName=Usar MD5 para eval() nombres
+Breakpoints=Paradas
+ErrorBreakpoints=Paradas por error
+LoggedFunctions=Funciones registradas
+EnableAllBreakpoints=Activar todas las paradas
+breakpoints.option.tip.Enable_All_Breakpoints=Activar todas las paradas de la lista
+DisableAllBreakpoints=Desactivar todas las paradas
+breakpoints.option.tip.Disable_All_Breakpoints=Desactivar todas las paradas de la lista
+ClearAllBreakpoints=Eliminar todas las paradas
+breakpoints.option.tip.Clear_All_Breakpoints=Eliminar todas las paradas de la lista
+ConditionInput=Esta parada hará detenerse sólo si es verdadera la expresión:
+breakpoints.Remove_Breakpoint=Eliminar parada
+breakpoints.tip.Remove_Breakpoint=Eliminar esta parada
+breakpoints.Disable_Breakpoint=Desactivar parada
+breakpoints.tip.Disable_Breakpoint=Desactivar esta parada
+breakpoints.Enable_Breakpoint=Activar parada
+breakpoints.tip.Enable_Breakpoint=Activar esta parada
+script.balloon.Continue=Continuar
+script.balloon.Disable=Desactivar
+ScriptsFilterStatic=Mostrar scripts estáticos
+ScriptsFilterEval=Mostrar scripts estáticos y eval
+ScriptsFilterEvent=Mostrar scripts estáticos y de eventos
+ScriptsFilterAll=Mostrar scripts estáticos, eval y de eventos
+ScriptsFilterStaticShort=estático
+ScriptsFilterEvalShort=evals
+ScriptsFilterEventShort=eventos
+ScriptsFilterAllShort=todos
+callstack.Expand_All=Expandir todos
+callstack.tip.Expand_All=Expandir todas las funciones de marcos de pila
+callstack.Collapse_All=Contraer todos
+callstack.tip.Collapse_All=Contraer todas las funciones de marcos de pila
+callstack.Execution_not_stopped=Se muestran los marcos de pila cuando se detiene la ejecución del script.
+ShowUserProps=Mostrar propiedades de usuario
+dom.option.tip.Show_User_Props=Mostrar propiedades de objeto definidas por el usuario
+ShowUserFuncs=Mostrar funciones definidas por el usuario
+dom.option.tip.Show_User_Funcs=Mostrar métodos de objetos del usuario
+ShowDOMProps=Mostrar propiedades DOM
+dom.option.tip.Show_DOM_Props=Mostrar propiedades especificadas dentro del DOM
+ShowDOMFuncs=Mostrar funciones DOM
+dom.option.tip.Show_DOM_Funcs=Mostrar funciones especificadas dentro del DOM
+ShowDOMConstants=Mostrar constantes DOM
+dom.option.tip.Show_DOM_Constants=Mostrar constantes especificadas dentro del DOM
+ShowClosures=Mostrar closures
+dom.option.tip.Show_Closures=Muestra las closures asociadas a varias funciones (activa el depurador)
+ShowInlineEventHandlers=Mostrar los gestores de eventos en línea
+ShowInlineEventHandlersTooltip=Mostrar los gestores de eventos en línea disponibles que no estén asociados a una función
+ShowOwnProperties=Mostrar sólo propiedades propias
+ShowOwnPropertiesTooltip=No mostrar cadena de prototipo
+ShowEnumerableProperties=Sólo mostrar propiedades enumerables
+ShowEnumerablePropertiesTooltip=No mostrar propiedades no enumerables
+NoMembersWarning=No hay propiedades que mostrar de este objeto
+NewWatch=Nueva expresión de seguimiento…
+AddWatch=Agregar seguimiento
+watch.tip.Add_Watch=Añadir la selección/objeto al panel lateral de seguimiento para monitorizarlo
+CopySourceCode=Copiar fuente
+script.tip.Copy_Source_Code=Copiar el código fuente seleccionado al portapapeles
+Use_hash_plus_number_to_go_to_line=Use #<numero> para ir a la línea
+CopyValue=Copiar valor
+dom.tip.Copy_Value=Copiar el valor de la propiedad al portapapeles
+Copy_Name=Copiar nombre
+dom.tip.Copy_Name=Copiar el nombre de la propiedad al portapapeles
+Copy_Path=Copiar ruta
+dom.tip.Copy_Path=Copiar la ruta de la propiedad
+NewProperty=Nueva propiedad…
+EditProperty=Editar propiedad…
+dom.tip.Edit_Property=Editar el valor de la propiedad
+EditVariable=Editar variable…
+stack.tip.Edit_Variable=Editar el valor de la variable
+EditWatch=Editar seguimiento…
+watch.tip.Edit_Watch=Editar el valor de la expresión de seguimiento
+DeleteProperty=Eliminar propiedad
+dom.tip.Delete_Property=Eliminar esta propiedad
+DeleteWatch=Eliminar seguimiento
+DeleteAllWatches=Eliminar todos los seguimientos
+watch.tip.Delete_Watch=Eliminar esta expresión de seguimiento
+watch.tip.Delete_All_Watches=Eliminar todas las expresiones de inspección
+SetBreakpoint=Crear parada
+script.tip.Set_Breakpoint=Activa/Desactiva la creación de una parada en la línea actual
+EditBreakpointCondition=Editar condición de parada…
+breakpoints.tip.Edit_Breakpoint_Condition=Editar la condición que provoca que esta parada detenga la ejecución de JavaScript
+NoBreakpointsWarning=No hay paradas en esta página.
+Only_Show_Applied_Styles=Mostrar solo los estilos aplicados
+style.option.tip.Only_Show_Applied_Styles=Sólo se muestran los estilos aplicados al elemento
+Show_User_Agent_CSS=Mostrar CSS del agente de usuario
+style.option.tip.Show_User_Agent_CSS=También se muestra el CSS definido por el agente de usuario
+computed.option.label.Colors_As_Hex=Colore en Hex
+computed.option.tip.Colors_As_Hex=Mostrar los colores en formato hexadecimal
+computed.option.label.Colors_As_RGB=Colores en RGB
+computed.option.tip.Colors_As_RGB=Mostrar los colores en formato RGB
+computed.option.label.Colors_As_HSL=Colores en HSL
+computed.option.tip.Colors_As_HSL=Mostrar los colores en formato HSL
+style.option.label.active=:active
+style.option.tip.active=Mostrar estilos con la seudoclase :active
+style.option.label.hover=:hover
+style.option.tip.hover=Mostrar estilos con la seudoclase :hover
+style.option.label.focus=:focus
+style.option.tip.focus=Mostrar estilos con la seudoclase :focus
+css.label.Inspect_Declaration=Inspeccionar declaración
+css.tip.Inspect_Declaration=Inspeccionar la declaración de esta fuente
+Expand_Shorthand_Properties=Expandir propiedades abreviadas
+css.option.tip.Expand_Shorthand_Properties=Expandir propiedades CSS abreviadas a sus componentes básicos
+Sort_alphabetically=Ordenar alfabéticamente
+computed.option.tip.Sort_Alphabetically=Ordenar los estilos por su nombre / agrupar estilos por categorías
+Show_Mozilla_specific_styles=Mostrar estilos específicos de Mozilla
+computed.option.tip.Show_Mozilla_Specific_Styles=Mostrar también estilos con el prefijo -moz
+computed.No_User-Defined_Styles=Este elemento no tiene reglas de estilo de usuario
+script.Type_any_key_to_filter_list=Pulse cualquier tecla para filtrar la lista
+location.inline=Inline
+location.no_domain=Sin dominio
+LayoutPadding=relleno
+LayoutBorder=borde
+LayoutMargin=margen
+LayoutPosition=posición
+LayoutAdjacent=adyacente
+position=posición
+ShowRulers=Mostrar reglas y guías
+layout.option.tip.Show_Rulers=Mostrar reglas y guías de la página cuando el ratón se sitúa sobre partes de la caja de layout
+Loading=Cargando…
+Headers=Encabezados
+net.tip.Clear=Borrar la lista de solicitudes
+net.header.Reset_Header=Restaurar encabezado
+net.header.tip.Reset_Header=Restaurar el encabezado mostrado
+net.header.URL=URL
+net.header.URL_Tooltip=URL solicitada y método HTTP usado.
+net.header.Status=Estado
+net.header.Status_Tooltip=Estado de la respuesta recibida.
+net.header.Domain=Dominio
+net.header.Domain_Tooltip=Dominio de la solicitud ejecutada
+net.header.Size=Tamaño
+net.header.Size_Tooltip=Tamaño de la respuesta recibida (comprimido si es una respuesta comprimida)
+net.header.Timeline=Línea de tiempo
+net.header.Timeline_Tooltip=Información detallada acerca de los tiempos de petición y respuesta.
+net.header.Local_IP=IP Local
+net.header.Local_IP_Tooltip=Dirección IP local y número de puerto al que la solicitud está vinculada.
+net.header.Remote_IP=IP Remota
+net.header.Remote_IP_Tooltip=Dirección IP remota y número de puerto al que la solicitud está vinculada.
+net.header.Protocol=Protocolo
+net.header.Protocol_Tooltip=El protocolo de URL usado para ubicar el recurso en la web.
+net.label.XHR_Breakpoints=Paradas XHR
+net.label.Break_On_XHR=Parar en XHR
+net.tip.Break_On_XHR=Detener la ejecución de JavaScript en cuando haya una XMLHttpRequest
+net.headers.view_source=ver fuente
+net.headers.pretty_print=vista formateada
+net.filter.label.All=Todos
+net.filter.tooltip.All=Mostrar todos los tipos MIME
+net.filter.label.HTML=HMTL
+net.filter.tooltip.HTML=Mostrar sólo archivos HTML
+net.filter.label.CSS=CSS
+net.filter.tooltip.CSS=Mostrar sólo archivos CSS
+net.filter.label.JS=JavaScript
+net.filter.tooltip.JS=Mostrar sólo archivos JavaScript
+net.filter.label.XHR=XHR
+net.filter.tooltip.XHR=Mostrar sólo XMLHttpRequests
+net.filter.label.Images=Imágenes
+net.filter.tooltip.Images=Mostrar sólo imágenes
+net.filter.label.Plugins=Plugins
+net.filter.tooltip.Plugins=Mostrar sólo archivos Flash y Silverlight
+net.filter.label.Media=Multimedia
+net.filter.tooltip.Media=Mostrar sólo audio y vídeo
+net.filter.label.Fonts=Fuentes
+net.filter.tooltip.Fonts=Mostrar sólo fuentes
+Post=Post
+Put=Put
+Response=Respuesta
+URLParameters=Parámetros
+Cache=Caché
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Información general
+fontviewer.Meta_Data=Metadatos
+fontviewer.view_source=ver fuente
+fontviewer.Preview=Vista previa
+fontviewer.view_characters=ver caracteres
+fontviewer.pretty_print=vista formateada
+fontviewer.view_sample=ver muestra
+fontviewer.uniqueid=ID único
+fontviewer.vendor=Vendedor
+fontviewer.license=Licencia
+fontviewer.description=Descripción
+fontviewer.copyright=Copyright
+fontviewer.credits=Créditos
+fontviewer.trademark=Marca comercial
+fontviewer.licensee=Titular de la licencia
+fontviewer.extension=Extensión
+fontviewer.pangram=Aquel biógrafo se zampó un extraño sándwich de vodka y ajo.
+jsonviewer.sort=Ordenar alfabéticamente
+jsonviewer.do_not_sort=No ordenar
+net.jsonviewer.Copy_JSON=Copiar "%S" como JSON
+RequestHeaders=Encabezados de solicitud
+ResponseHeaders=Encabezados de respuesta
+CachedResponseHeaders=Encabezados de respuesta de la caché
+PostRequestHeaders=Encabezados de respuesta de datos enviados
+net.label.ResponseHeadersFromBFCache=La solicitud se resolvió directamente desde la caché, así que no tenemos respuesta del servidor. Vea a continuación la respuesta de caché.
+plural.Limit_Exceeded2=Se alcanzó el límite del registro de Firebug. %1$S entrada no mostrada.; Se alcanzó el límite del registro de Firebug. %1$S entradas no mostradas.
+LimitPrefs=Preferencias
+LimitPrefsTitle=Para cambiar el límite, modifique: "%S"
+Refresh=Refrescar
+panel.tip.Refresh=Refrescar la ventana del panel
+OpenInTab=Abrir en nueva pestaña
+firebug.tip.Open_In_Tab=Abrir la URL en una nueva pestaña del navegador
+Open_Response_In_New_Tab=Abrir respuesta en una pestaña nueva
+net.tip.Open_Response_In_New_Tab=Abrir la respuesta en una nueva pestaña del navegador
+Profile=Analizar
+ProfilerStarted=El analizador está corriendo. Vuelva a hacer clic en "Analizar" para ver el informe.
+ProfilerRequiresTheScriptPanel=El panel de Script debe estar activado para análisis para que funcione.
+plural.Profile_Time2=(%1$Sms, %2$S llamada);(%1$Sms, %2$S llamadas)
+NothingToProfile=Ninguna actividad para analizar
+PercentTooltip=Porcentaje de tiempo dedicado a esta función
+CallsHeaderTooltip=Número de veces que la función fue llamada
+OwnTimeHeaderTooltip=Tiempo dedicado a la función, excluyendo llamadas anidadas
+TimeHeaderTooltip=Tiempo dedicado a la función, incluyendo llamadas anidadas
+AvgHeaderTooltip=Tiempo medio, incluyendo llamadas a funciones.
+MinHeaderTooltip=Tiempo mínimo, incluyendo llamadas a funciones
+MaxHeaderTooltip=Tiempo máximo, incluyendo llamadas a funciones
+ProfileButton.Tooltip=Analizar el tiempo de ejecución JavaScript
+Function=Función
+Percent=Porcentaje
+Calls=Llamadas
+OwnTime=Propio tiempo
+Time=Tiempo
+Avg=Promedio
+Min=Mínimo
+Max=Máximo
+File=Archivo
+Copy=Copiar
+Cut=Cortar
+Remove=Eliminar
+Delete=Borrar
+Paste=Pegar
+SelectAll=Seleccionar todo
+html.Copy_Node=Copiar %S
+html.tip.Copy_Node=Copiar el nodo %S y todo su contenido al portapapeles
+CopyInnerHTML=Copiar innerHTML
+html.tip.Copy_innerHTML=Copiar los contenidos del elemento al portapapeles
+CopyXPath=Copiar XPath
+html.tip.Copy_XPath=Copiar el XPath del elemento al portapapeles
+Copy_CSS_Path=Copiar ruta CSS
+html.tip.Copy_CSS_Path=Copiar la ruta CSS del elemento al portapapeles
+html.menu.Paste=Pegar %S
+html.tip.Paste=Pegar como contenido %S
+html.menu.Paste_Replace_Content=Reemplazar contenido
+html.tip.Paste_Replace_Content=Reemplazar el contenido del nodo
+html.menu.Paste_Replace_Node=Reemplazar el nodo
+html.tip.Paste_Replace_Node=Reemplazar el HTML del nodo
+html.menu.Paste_AsFirstChild=Como primer hijo
+html.tip.Paste_AsFirstChild=Pegar como el primer hijo del nodo
+html.menu.Paste_AsLastChild=Como último hijo
+html.tip.Paste_AsLastChild=Pegar como el último hijo del nodo
+html.menu.Paste_Before=Antes
+html.tip.Paste_Before=Pegar antes del nodo
+html.menu.Paste_After=Después
+html.tip.Paste_After=Pegar después del nodo
+html.menu.Reload_Frame=Recargar frame
+html.menu.tip.Reload_Frame=Recargas los contenidos del frame
+CopyLocation=Copiar ubicación
+clipboard.tip.Copy_Location=Copiar la URL de la ubicación del objeto al portapapeles
+CopyURLParameters=Copiar parámetros de URL
+net.tip.Copy_URL_Parameters=Copiar los parámetros del URL al portapapeles
+CopyPOSTParameters=Copiar parámetros POST
+net.tip.Copy_POST_Parameters=Copiar los parámetros POST al portapapeles
+CopyLocationParameters=Copiar ubicación con parámetros
+net.tip.Copy_Location_Parameters=Copiar la URL con parámetros al portapapeles
+CopyRequestHeaders=Copiar encabezados de solicitud
+net.tip.Copy_Request_Headers=Copiar los encabezados de solicitud al portapapeles
+CopyResponseHeaders=Copiar encabezados de respuesta
+net.tip.Copy_Response_Headers=Copiar los encabezados de respuesta al portapapeles
+CopyResponse=Copiar el cuerpo de la respuesta
+net.tip.Copy_Response=Copiar el cuerpo de la respuesta al portapapeles
+CopyError=Copiar error
+console.menu.tip.Copy_Error=Copiar la información del error al portapapeles
+CopySource=Copiar función
+dom.tip.Copy_Source=Copiar el código fuente de la función al portapapeles
+ShowCallsInConsole=Registrar llamadas a "%S"
+dom.tip.Log_Calls_To_Function=Mostrar en el panel de la consola las llamadas a la función "%S"
+ShowEventsInConsole=Registrar eventos
+html.tip.Show_Events_In_Console=Mostrar información de eventos en la consola
+panel.Enabled=Activado
+panel.tip.Enabled=Conmutar la activación del panel
+panel.tooltip.Show_Command_Line_Popup=Mostrar ventana de línea de comandos
+console.MethodNotSupported=La consola de Firebug no soporta "%S"
+commandline.errorSourceHeader=EXPRESIÓN EVALUADA CON LA LÍNEA DE COMANDOS DE FIREBUG:
+commandline.MethodDisabled=Este método de Línea de comandos está temporalmente desactivado.
+commandline.MethodNotSupported=La línea de comandos de Firebug no soporta "%S"
+commandline.CurrentWindow=Ventana actual:
+console.Disable_Break_On_All_Errors=Desactivar parar en todos los errores
+console.Break_On_All_Errors=Parar en todos los errores
+console.Break_On_This_Error=Parar en este error
+console.Use_Arrow_keys,_Tab_or_Enter=Use teclas de flecha, Tab o Intro
+console.JSDisabledInFirefoxPrefs=JavaScript está desactivado en sus preferencias de Firefox. Si desea usar el panel de la consola, active está opción en "Herramientas -> Opciones -> Contenido -> Activar JavaScript"
+console.ScriptPanelMustBeEnabledForTraces=El panel de Script debe estar activado para obtener trazas de ejecución. <a>Activar el panel de Script.</a>
+tooltip.multipleFiltersHint=Use Ctrl+Clic para seleccionar varios filtros
+console.multiHighlightLimitExceeded=Hay demasiados elementos en el array para resaltarlos en la página (el límite actual es %S).\nConsulte la preferencia "extensions.firebug.multiHighlightLimit"
+commandline.disabledForXMLDocs=La línea de comandos de Firebug está desactivada para las páginas XML. Puede <a>cambiar a HTML</a> para activarla.
+commandline.Use_in_Command_Line=Usar en línea de comandos
+commandline.tip.Use_in_Command_Line=Enfoca la Línea de comandos, y hace que este valor este disponible como "$p"
+commandline.include.includeSuccess=%S incluido correctamente.
+commandline.include.aliasNotFound=No se encontró el alias "%S".
+commandline.include.loadFail=No se pudo cargar el siguiente script: %S
+commandline.include.invalidRequestProtocol=Sólo están soportados protocolos HTTP/HTTPS.
+commandline.include.invalidSyntax=Falló la inclusión debido a errores de sintaxis. ¿Seguro que el archivo contiene JavaScript?
+commandline.include.aliasCreated=Se creó el alias "%S".
+commandline.include.aliasRemoved=Se eliminó el alias "%S".
+commandline.include.invalidAliasName=Los alias no pueden contener ningún "." o "/"; alias inválido: "%S".
+commandline.include.tooLongAliasName=Los nombres de alias no pueden tener más de 30 caracteres; nombre de alias no válido: "%S".
+commandline.include.invalidAliasArgumentType=Segundo argumento no válido; se esperaba un nombre de alias.
+commandline.include.invalidUrlArgumentType=Argumento de URL no válido.
+commandline.include.confirmDelete=¿Está seguro de querer eliminar este alias:"%S"?
+commandline.include.noDefinedAlias=(aún no se ha definido ningún alias)
+commandline.tip.Delete_Alias=Eliminar el alias
+commandline.tip.Edit_Alias_Name=Editar el nombre del alias
+commandline.tip.Edit_Alias_URL=Editar la URL del alias
+commandline.tip.Open_In_Scratchpad=Abrir el contenido del script en Scratchpad
+commandline.tip.Include_Script=Descargar y ejecutar el script
+commandline.label.DeleteAlias=Eliminar alias
+commandline.label.EditAliasName=Editar nombre del alias
+commandline.label.EditAliasURL=Editar URL del alias
+commandline.label.OpenInScratchpad=Abrir en scratchpad
+commandline.label.IncludeScript=Incluir "%S"
+Do_not_show_this_message_again=No volver a mostrar este mensaje
+scratchpad.loading=Cargando, por favor espere…
+scratchpad.failLoading=Error al cargar el script.
+net.sizeinfo.Response_Body=Cuerpo de la respuesta
+net.sizeinfo.Post_Body=Cuerpo de la solicitud
+net.sizeinfo.Total_Sent=Total enviado
+net.sizeinfo.Total_Received=Total recibido
+net.sizeinfo.Including_HTTP_Headers=Incluyendo encabezados HTTP
+net.ActivationMessage=Panel de red activado. No se mostrarán solicitudes recibidas mientras el panel esté desactivado.
+net.responseSizeLimitMessage=Se ha alcanzado el límite del tamaño de respuesta de Firebug. Haga clic <a>aquí</a> para ver toda la respuesta en una pestaña nueva de Firefox.
+net.postDataSizeLimitMessage=Los datos de la solicitud superan el tamaño límite de Firebug.
+net.Break_On_XHR=Parar en XHR
+net.label.Parameters=Parámetros
+net.label.Parts=Partes
+net.label.Source=Fuente
+net.label.Resend=Reenviar
+net.tip.Resend=Enviar de nuevo la solicitud
+net.option.Disable_Browser_Cache=Desactivar caché del navegador
+net.option.tip.Disable_Browser_Cache=Desactivar la caché HTTP del navegador
+net.option.Show_Paint_Events=Mostrar eventos de dibujo
+net.option.tip.Show_Paint_Events=Mostrar los eventos de MozAfterPaint como líneas verdes dentro de la línea temporal
+net.option.Show_BFCache_Responses=Mostrar respuestas de caché BF
+net.option.tip.Show_BFCache_Responses=También se mostrarán respuestas de la caché Back-Forward
+script.Break_On_Next=Parar en siguiente
+script.Disable_Break_On_Next=Desactivar parar en el próximo
+ShowHttpHeaders=Mostrar encabezados HTTP
+plural.Request_Count2=%1$S petición;%1$S peticiones
+net.summary.from_cache=%S de caché.
+net.summary.tip.request_count=Número de solicitudes
+net.summary.tip.total_size=Tamaño total de todas las solicitudes
+net.summary.tip.total_cached_size=Tamaño total cacheado de todas las solicitudes
+net.summary.tip.total_request_time=Tiempo total necesario para cargar todas las solicitudes y el momento en el que se produjo el evento "onload".
+StopLoading=Detener la carga
+net.tip.Stop_Loading=Detener la carga de la solicitud
+LargeData=(Datos muy grandes)
+ShowComputedStyle=Mostrar estilo calculado
+StyleGroup-text=Texto
+StyleGroup-background=Fondo
+StyleGroup-box=Modelo de caja
+StyleGroup-layout=Plantilla
+StyleGroup-other=Otro
+Dimensions=%S x %S
+CopyColor=Copiar color
+css.tip.Copy_Color=Copiar el color al portapapeles
+CopyImageLocation=Copiar ubicación de la imagen
+css.tip.Copy_Image_Location=Copiar la URL de la imagen al portapapeles
+OpenImageInNewTab=Abrir imagen en nueva pestaña
+css.tip.Open_Image_In_New_Tab=Abrir la imagen en nueva pestaña del navegador
+OmitObjectPathStack=Omitir pila de la barra de tareas
+callstack.option.tip.Omit_Object_Path_Stack=No se muestra la pila de la ruta del objeto
+Load_Original_Source=Cargar fuente original
+css.tip.Load_Original_Source=Descartar los cambios y cargar el CSS original
+callstack.option.Show_Arguments=Mostrar argumentos
+callstack.option.tip.Show_Arguments=Mostrar también argumentos de función
+Copy_Rule_Declaration=Copiar declaración de regla
+css.tip.Copy_Rule_Declaration=Copiar la regla con todas sus propiedades al portapapeles
+Copy_Style_Declaration=Copiar declaración de estilo
+css.tip.Copy_Style_Declaration=Copiar las propiedades de la regla al portapapeles
+css.label.Copy_Property_Declaration=Copiar Declaración de la Propiedad
+css.tip.Copy_Property_Declaration=Copiar la declaración de la propiedad al portapapeles
+css.label.Copy_Property_Name=Copiar Nombre de la Propiedad
+css.tip.Copy_Property_Name=Copiar el nombre de la propiedad al portapapeles
+css.label.Copy_Property_Value=Copiar Valor de la Propiedad
+css.tip.Copy_Property_Value=Copiar el valor de la propiedad al portapapeles
+plural.Error_Count2=%1$S error;%1$S errores
+moduleManager.title=El panel %S está desactivado
+moduleManager.desc3=Use el menú del icono de la barra de estado de Firebug para activar/desactivar todos los paneles a la vez. Use la pestaña de cada panel para controlar dicho panel.
+moduleManager.Enable=Activar
+Suspend_Firebug=Suspender Firebug
+Resume_Firebug=Reanudar Firebug
+Reset_Panels_To_Disabled=Restablecer paneles a desactivados
+Open_Console=Abrir consola
+Open_Console_Tooltip=Abrir consola de seguimiento para Firebug.
+Scope_Chain=Cadena de scope
+With_Scope=With
+Call_Scope=Call
+Window_Scope=Window
+requestinfo.Blocking=Bloqueado
+requestinfo.Resolving=Consulta DNS
+requestinfo.Connecting=Conectando
+requestinfo.Sending=Enviando
+requestinfo.Waiting=En espera
+requestinfo.Receiving=Recibiendo
+requestinfo.ContentLoad="DOMContentLoaded"(evento)
+requestinfo.WindowLoad="load" (evento)
+requestinfo.started.label=Solicitar tiempo de inicio desde el principio
+requestinfo.phases.label=Solicitar inicio de fases y tiempo transcurrido desde la solicitud de inicio:
+requestinfo.timings.label=Temporalización desde la petición de inicio:
+search.Firebug_Search=Búsqueda Firebug
+search.Next=Siguiente
+search.tip.Next=Buscar la siguiente coincidencia
+search.Previous=Anterior
+search.tip.Previous=Buscar la anterior coincidencia
+search.Case_Sensitive=Forzar sensibilidad a mayúsculas
+search.tip.Case_Sensitive=Tener en cuenta MAY/min al buscar
+search.Case_Insensitive=No distinguir MAY/min
+search.tip.Case_Insensitive=Ignorar MAY/min al buscar
+search.Multiple_Files=Múltiples archivos
+search.tip.Multiple_Files=Buscar en todos los archivos relacionados con este panel
+search.Use_Regular_Expression=Usar Expresión Regular
+search.tip.Use_Regular_Expression=Interpretar la cadena introducida como expresión regular al buscar
+search.html.CSS_Selector=Selector CSS
+search.net.Headers=Encabezados
+search.net.Parameters=Parámetros
+search.net.Response_Bodies=Cuerpos de respuesta
+search.net.tip.Response_Bodies=Buscar también en los cuerpos de respuesta
+firebug.console.Persist=Mantener
+firebug.console.Do_Not_Clear_On_Reload2=No borrar el panel al recargar la página
+firebug.console.Show_All_Log_Entries=Mostrar todas las entradas del registro
+firebug.console.Errors=Errores
+firebug.console.Filter_by_Errors=Filtrar por errores
+firebug.console.Warnings=Advertencias
+firebug.console.Filter_by_Warnings=Filtrar por advertencias
+firebug.console.Info=Información
+firebug.console.Filter_by_Info=Filtrar por información
+firebug.console.Debug_Info=Información de depuración
+firebug.console.Filter_by_Debug_Info=Filtrar por información de depuración
+firebug.Deactivate_Firebug=Desactivar Firebug
+firebug.tip.Deactivate_Firebug=Desactivar Firebug en la página actual
+firebug.tip.Toggle_Side_Panels=Alternar visibilidad de los paneles laterales
+firebug.ShowFirebug=Abrir Firebug
+firebug.menu.tip.Open_Firebug=Mostrar la IU de Firebug
+firebug.HideFirebug=Ocultar Firebug
+firebug.menu.tip.Minimize_Firebug=Minimizar Firebug, pero mantenerlo activo
+firebug.FocusFirebug=Enfocarla ventana de Firebug
+firebug.menu.tip.Focus_Firebug=Enfocar la ventana flotante de Firefox
+firebug.menu.Enable_All_Panels=Activar todos los paneles
+firebug.menu.tip.Enable_All_Panels=Activar todos los paneles activables
+firebug.menu.Disable_All_Panels=Desactivar todos los paneles
+firebug.menu.tip.Disable_All_Panels=Desactivar todos los paneles activables
+firebug.menu.Customize_shortcuts=Personalizar atajos
+firebug.menu.tip.Customize_Shortcuts=Personalizar los atajos internos de teclado de Firebug
+firebug.Options=Opciones
+firebug.menu.tip.Options=Preferencias globales de Firebug
+firebug.menu.Enable_Accessibility_Enhancements=Activar mejoras de accesibilidad
+firebug.menu.tip.Enable_Accessibility_Enhancements=Activar control pleno a través del teclado y otras mejoras de accesibilidad
+firebug.menu.Activate_Same_Origin_URLs2=Activar para URL del mismo origen
+firebug.menu.tip.Activate_Same_Origin_URLs=Activar Firebug para URL con la misma política de origen
+firebug.menu.Reset_All_Firebug_Options=Restablecer todas las opciones de Firebug
+firebug.menu.tip.Reset_All_Firebug_Options=Restablecer todas las preferencias de Firefox a sus valores predeterminados
+firebug.menu.Firebug_Online=Firebug en línea
+firebug.menu.tip.Firebug_Online=Sitios web relativos a Firebug
+firebug.menu.Extensions=Extensiones de Firebug…
+firebug.menu.tip.Extensions=Descargar e instalar extensiones de Firebug
+firebug.menu.Vertical_Panels=Paneles verticales
+firebug.menu.tip.Vertical_Panels=Conmutar la disposición de los paneles principales y laterales de Firebug
+firebug.menu.Show_Info_Tips=Mostrar consejos
+firebug.menu.tip.Show_Info_Tips=Muestra ventanas emergentes con información del elemento sobre el que está situado el ratón
+firebug.Show_Error_Count=Mostrar número de errores
+firebug.menu.tip.Show_Error_Count=Mostrar el número de errores almacenados en la consola
+firebug.TextSize=Tamaño de texto
+firebug.menu.tip.Text_Size=Cambiar el tamaño del texto de Firebug
+firebug.IncreaseTextSize=Aumentar tamaño de texto
+firebug.menu.tip.Increase_Text_Size=Aumentar el tamaño del texto de Firebug
+firebug.DecreaseTextSize=Reducir tamaño del texto
+firebug.menu.tip.Decrease_Text_Size=Reducir el tamaño del texto de Firebug
+firebug.NormalTextSize=Tamaño de texto normal
+firebug.menu.tip.Normal_Text_Size=Restaurar el tamaño de texto predeterminado de Firebug
+firebug.Website=Página web de Firebug…
+firebug.menu.tip.Website=Abrir la página web oficial de Firebug
+firebug.help=Ayuda…
+firebug.menu.tip.help=Abrir la página con vínculos a explicaciones sobre Firebug
+firebug.Documentation=Documentación…
+firebug.menu.tip.Documentation=Abrir la documentación de Firebug
+firebug.KeyShortcuts=Atajos de teclado…
+firebug.menu.tip.Key_Shortcuts=Abrir la lista de atajos de ratón y teclado disponible en Firebug
+firebug.Forums=Grupo de debate…
+firebug.menu.tip.Forums=Abrir la página del grupo de debate
+firebug.Issues=Seguimiento de problemas…
+firebug.menu.tip.Issues=Abrir la página de seguimiento de problemas
+firebug.Donate=Contribuir…
+firebug.menu.tip.Donate=Abrir la página de contribuciones
+firebug.About=Acerca de…
+firebug.menu.tip.About=Información sobre Firebug
+ProfileJavaScript=Analizar JavaScript
+firebug.menu.tip.Profile_JavaScript=Analizar JavaScript en tiempo de ejecución
+firebug.Search=Buscar
+firebug.menu.tip.Search=Enfocar el campo de búsquedas
+firebug.shortcut.reenterCommand.label=Reintroducir comando
+firebug.shortcut.tip.reenterCommand=Reintroducir el último comando en la línea de comandos
+firebug.shortcut.toggleInspecting.label=Conmutar inspección
+firebug.shortcut.tip.toggleInspecting=Activar/Desactivar el inspector
+firebug.shortcut.toggleQuickInfoBox.label=Conmutar caja de información rápida
+firebug.shortcut.tip.toggleQuickInfoBox=Activar/Desactivar la presencia de un panel con información sobre el elemento bajo inspección
+firebug.shortcut.toggleProfiling.label=Conmutar análisis
+firebug.shortcut.tip.toggleProfiling=Activar/Desactivar el analizador de JavaScript
+firebug.shortcut.focusCommandLine.label=Enfocar línea de comandos
+firebug.shortcut.tip.focusCommandLine=Abrir Firebug y enfocar la línea de comandos / conmutar la ventana emergente de línea de comandos
+firebug.shortcut.focusFirebugSearch.label=Enfocar búsqueda en Firebug
+firebug.shortcut.tip.focusFirebugSearch=Enfocar el campo de búsquedas
+firebug.shortcut.focusWatchEditor.label=Enfocar editor de seguimiento
+firebug.shortcut.tip.focusWatchEditor=Cambiar al panel de Script y enfocar el campo para introducir una nueva expresión de seguimiento
+firebug.shortcut.focusLocation.label=Enfocar ubicación
+firebug.shortcut.tip.focusLocation=Abrir el menú de ubicación
+firebug.shortcut.nextObject.label=Siguiente objeto
+firebug.shortcut.tip.nextObject=Seleccionar el siguiente objeto en la ruta de elemento de un panel
+firebug.shortcut.previousObject.label=Objeto anterior
+firebug.shortcut.tip.previousObject=Seleccionar el objeto anterior en la ruta de elemento de un panel
+firebug.shortcut.customizeFBKeys.label=Personalizar teclas de Firebug
+firebug.shortcut.tip.customizeFBKeys=Abrir la ventana de atajos de teclado de Firebug
+firebug.shortcut.detachFirebug.label=Abrir Firebug en una ventana nueva
+firebug.shortcut.tip.detachFirebug=Separar Firebug en su propia ventana
+firebug.shortcut.leftFirebugTab.label=Cambiar panel de Firebug a la izquierda
+firebug.shortcut.tip.leftFirebugTab=Cambiar el panel de Firebug a la izquierda
+firebug.shortcut.rightFirebugTab.label=Cambiar panel de Firebug a la derecha
+firebug.shortcut.tip.rightFirebugTab=Cambiar el panel de Firebug a la derecha
+firebug.shortcut.toggleFirebug.label=Abrir Firebug
+firebug.shortcut.tip.toggleFirebug=Abrir/Minimizar la IU de Firebug
+firebug.shortcut.closeFirebug.label=Desactivar Firebug
+firebug.shortcut.tip.closeFirebug=Desactivar Firebug en la página actual
+firebug.shortcut.previousFirebugTab.label=Panel anterior de Firebug
+firebug.shortcut.tip.previousFirebugTab=Cambiar al panel de Firebug seleccionado anteriormente
+firebug.shortcut.clearConsole.label=Limpiar consola
+firebug.shortcut.tip.clearConsole=Eliminar todos los registros de la consola
+firebug.shortcut.openTraceConsole.label=Abrir consola de seguimiento
+firebug.shortcut.tip.openTraceConsole=Abrir la consola de seguimiento de Firebug
+firebug.shortcut.navBack.label=Volver
+firebug.shortcut.tip.navBack=Cambiar al panel o elemento de la lista de ubicaciones del historial de navegación anteriores
+firebug.shortcut.navForward.label=Avanzar
+firebug.shortcut.tip.navForward=Cambiar al panel o elemento de la lista de ubicaciones del historial de navegación siguientes
+firebug.shortcut.increaseTextSize.label=Aumentar tamaño del texto
+firebug.shortcut.tip.increaseTextSize=Aumenta el tamaño del texto de Firebug
+firebug.shortcut.decreaseTextSize.label=Reducir tamaño del texto
+firebug.shortcut.tip.decreaseTextSize=Reduce el tamaño del texto de Firebug
+firebug.shortcut.normalTextSize.label=Tamaño de texto normal
+firebug.shortcut.tip.normalTextSize=Restaura el tamaño de texto predeterminado de Firebug
+firebug.shortcut.help.label=Abrir ayuda
+firebug.shortcut.tip.help=Abre la página en la que se contestan las preguntas más frecuentes
+firebug.shortcut.toggleBreakOn.label=Conmutar activación de parada
+firebug.shortcut.tip.toggleBreakOn=Activa/Desactiva la detención de la ejecución del script ante eventos específicos ocurridos en un panel
+firebug.panel_selector=Selector de panel
+customizeShortcuts=Atajos de teclado de Firebug
+a11y.labels.panel_tools=panel de herramientas
+a11y.labels.firebug_panels=Paneles de Firebug
+a11y.labels.firebug_side_panels=Paneles laterales de Firebug
+a11y.labels.firebug_window=Ventana de Firebug
+a11y.labels.firebug_status=Estado de Firebug
+a11y.labels.reset=restablecer
+a11y.labels.reset_shortcut=restablecer atajo de teclado %S
+aria.labels.inactive_panel=panel inactivo
+a11y.labels.log_rows=filas de registros
+a11y.labels.call_stack=pila de llamadas
+a11y.labels.document_structure=estructura del documento
+a11y.labels.title_panel=panel %S
+a11y.labels.title_side_panel=panel lateral %S
+a11y.labels.cached=en caché
+aria.labels.stack_trace=seguimiento de pila
+a11y.layout.padding=relleno
+a11y.layout.border=borde
+a11y.layout.margin=margen
+a11y.layout.position=posición
+a11y.layout.position_top=posición superior
+a11y.layout.position_right=posición derecha
+a11y.layout.position_bottom=posición inferior
+a11y.layout.position_left=posición izquierda
+a11y.layout.margin_top=margen superior
+a11y.layout.margin_right=margen derecho
+a11y.layout.margin_bottom=margen inferior
+a11y.layout.margin_left=margen izquierdo
+a11y.layout.border_top=borde superior
+a11y.layout.border_right=borde derecho
+a11y.layout.border_bottom=borde inferior
+a11y.layout.border_left=borde izquierdo
+a11y.layout.padding_top=borde superior
+a11y.layout.padding_right=borde derecho
+a11y.layout.padding_bottom=borde inferior
+a11y.layout.padding_left=borde izquierdo
+a11y.layout.top=superior
+a11y.layout.right=derecho
+a11y.layout.bottom=inferior
+a11y.layout.left=izquierdo
+a11y.layout.width=ancho
+a11y.layout.height=alto
+a11y.layout.size=tamaño
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=tamaño de caja
+a11y.layout.clientBoundingRect=rectángulo delimitador
+a11y.descriptions.press_enter_to_edit_values=Pulse Intro seguido de Tab para editar valores individuales
+a11y.labels.style_rules=reglas de estilo
+aria.labels.inherited_style_rules=reglas de estilo heredadas
+a11y.labels.computed_styles=estilos calculados
+a11y.labels.dom_properties=Propiedades del DOM
+a11y.labels.inline_editor=editor en línea
+a11y.labels.value_for_attribute_in_element=valor para el atributo %S en el elemento %S
+a11y.labels.attribute_for_element=atributo para el elemento %S
+a11y.labels.text_contents_for_element=contenidos de texto para el elemento %S
+a11y.labels.defined_in_file=definido en %S
+a11y.labels.declarations_for_selector=declaraciones de estilo para el selector "%S"
+a11y.labels.property_for_selector=propiedad CSS para el selector: %S
+a11y.labels.value_property_in_selector=valor de la propiedad %S para el selector %S
+a11y.labels.css_selector=Selector CSS
+a11y.labels.source_code_for_file=código fuente para el archivo %S
+a11y.labels.press_enter_to_add_new_watch_expression=pulse intro para añadir una nueva expresión de seguimiento
+a11y.labels.overridden=sobrescrito
+a11y.updates.has_conditional_break_point=tiene una parada condicional
+a11y.updates.has_disabled_break_point=ha desactivado la parada
+a11y.updates.script_suspended_on_line_in_file=Script suspendido en línea %S de %S, archivo %S
+a11y.updates.match_found_in_logrows=Coincidencia encontrada para "%S" en %S filas de registro
+a11y.updates.match_found_for_on_line=Coincidencia encontrada para "%S" en línea %S de %S
+a11y.updates.match_found_in_element=Coincidencia encontrada para "%S" en elemento %S en la ruta %S
+a11y.updates.match_found_in_attribute=Coincidencia encontrada para "%S" en atributo %S=%S del elemento %S en la ruta %S
+a11y.updates.match_found_in_text_content=Coincidencia encontrada para "%S" en contenido de texto: %S del elemento %S en la ruta %S
+a11y.updates.match_found_in_selector=Coincidencia encontrada para "%S" en selector %S
+a11y.updates.match_found_in_style_declaration=Coincidencia encontrada para "%S" en la declaración del estilo %S en el selector %S
+a11y.updates.match_found_in_dom_property=Coincidencia encontrada para "%S" en propiedad DOM %S
+a11y.updates.match_found_in_net_row=Coincidencia encontrada para "%S" en %S, %S : %S;
+a11y.updates.match_found_in_net_summary_row=Coincidencia encontrada para "%S" en fila de resumen de red: %S
+a11y.updates.no_matches_found=no se encontraron coincidencias para "%S"
+confirmation.Reset_All_Firebug_Options=¿Está seguro de de que desea restaurar todas las opciones de Firebug a su valor predeterminado?
+confirmation.Edit_CSS_Source=Sus modificaciones al CSS serán eliminadas.\n¿Está seguro de querer editar la fuente?
+warning.Console_must_be_enabled=La consola debe estar activada
+warning.Command_line_blocked?=¿Línea de comando bloqueada?
+warning.dollar_change=El comando de consola $() ha cambiado su significado de $=getElementById(id) a $=querySelector(selector). En su lugar intente $("#%S").
+message.Reload_to_activate_window_console=Recarga para activar la ventana de la consola
+message.sourceNotAvailableFor=Actualizar la página para obtener la fuente de
+message.The_resource_from_this_URL_is_not_text=La fuente de esta URL no es texto
+firebug.history.Go_back_to_this_panel=Volver a este panel
+firebug.history.Stay_on_this_panel=Permanecer en este panel
+firebug.history.Go_forward_to_this_panel=Avanzar a este panel
+firebug.history.Go_back=Volver
+firebug.history.Go_forward=Avanzar
+script.warning.inactive_during_page_load=El panel de Script estaba inactivo durante la carga de la página
+script.suggestion.inactive_during_page_load2=<a>Recargar</a> para ver todas las fuentes
+script.warning.javascript_not_enabled=Javascript no está activado
+script.suggestion.javascript_not_enabled=Mire Firefox > Herramientas > Opciones > Contenido > Habilitar Javascript
+script.button.enable_javascript=Active JavaScript y recargue
+script.warning.all_scripts_filtered=Todos los scripts fueron filtrados
+script.suggestion.all_scripts_filtered=Ver la preferencia del filtro de script en la barra de herramientas
+script.warning.no_system_source_debugging=No se pueden depurar las fuentes del sistema
+script.suggestion.no_system_source_debugging=Por el momento no se puede usar Firebug para depurar fuentes del sistema. Consulte <a>issue 5110</a> para saber por qué.
+script.warning.no_javascript=No hay Javascript en esta página
+script.suggestion.no_javascript2=Si las etiquetas <script> tienen un atributo "type", éste debe ser "text/javascript" o "application/javascript". Además, los script deben ser analizables (sintácticamente correctos).
+script.warning.debugger_active=El depurador ya está activo
+script.suggestion.debugger_active=El depurador está detenido en una parada en otra página.
+script.button.Go_to_that_page=Ir a esa página
+script.warning.debugger_not_activated=Depurador desactivado
+script.suggestion.debugger_not_activated=Depurador desactivado
+script.Script_panel_must_be_enabled=%S (debe estar activado el panel de Script)
+firebug.Firebug=Firebug
+firebug.Close=Cerrar
+firebug.View=Ver
+firebug.Help=Ayuda
+firebug.Run=Ejecutar
+firebug.Copy=Copiar
+firebug.History=Historial
+firebug.Run_the_entered_command=Ejecutar el comando introducido
+firebug.Clear_the_Command_Editor=Limpiar el editor de comandos
+firebug.Copy_the_script_as_a_bookmarklet=Copiar el script como un bookmarklet
+firebug.Insert_a_previously_entered_command=Insertar un comando introducido previamente
+firebug.AlwaysOpenInWindow=Abrir siempre en una ventana nueva
+firebug.OpenWith=Abrir con un editor
+firebug.menu.tip.Open_With=Abrir el contenido en un editor externo
+firebug.Permissions=Sitios…
+firebug.Configure_Editors=Configurar editores
+script.tip.Script_Type=Filtrar por tipo de script
+script.tip.Script_Filter_Static=Mostrar sólo scripts cargados con la página
+script.tip.Script_Filter_Evals=Mostrar scripts cargados junto con la página y scripts creados por eval()
+script.tip.Script_Filter_Events=Mostrar scripts cargados junto con la página, scripts creados por eval() y eventos listeners
+script.tip.Script_Filter_All=Mostrar todo tipo de scripts
+firebug.labelWithShortcut=%S (%S)
+script.Rerun=Reejecutar
+script.tip.Rerun=Volver a la actual función de pila de llamadas
+script.Continue=Continuar
+script.tip.Continue=Continuar la ejecución de JavaScript
+script.Step_Over=Saltar
+script.tip.Step_Over=Ejecutar el siguiente comando
+script.Step_Into=Entrar
+script.tip.Step_Into=Ejecutar el siguiente comando y saltar a funciones
+script.Step_Out=Salir
+script.tip.Step_Out=Ejecutar el resto de la función y volver a su llamador
+firebug.RunUntil=Ejecutar hasta esta línea
+script.tip.Run_Until=Ejecutar el JavaScript hasta la línea especificada
+firebug.Inspect=Inspeccionar
+firebug.InspectElement=Inspeccionar elemento
+firebug.InspectElementWithFirebug=Inspeccionar elemento con Firebug
+firebug.BreakOnErrors=Parar en errores
+firebug.InspectTooltip=Haga clic en un elemento de la página para inspeccionarlo
+firebug.EditHTMLTooltip=Editar este HTML
+firebug.Profile=Analizar
+firebug.Clear=Limpiar
+firebug.ClearConsole=Limpiar consola
+firebug.ClearTooltip=Limpiar la consola
+editors.Configured_Firebug_Editors=Editores de Firebug configurados
+editors.Editor=Editor
+editors.Executable=Ejecutable
+editors.Launch_Arguments=Argumentos de ejecución
+editors.Add=Añadir
+editors.Remove=Eliminar
+editors.Change=Cambiar
+editors.Move_Up=Subir
+editors.Close=Cerrar
+editors.Browse=Examinar…
+changeEditor.Editor_Configuration=Configuración del editor
+changeEditor.Name=Nombre:
+changeEditor.Executable=Ejecutable:
+changeEditor.CmdLine=Argumentos:
+changeEditor.Supplied_arguments=Argumentos aportados por Firebug:
+changeEditor.URL_of_file=URL del archivo (si %url no está presente, se añadirá %file por defecto)
+changeEditor.Path_to_local_file=Ruta al archivo local (o a la copia temporal)
+changeEditor.Line_number=Número de línea (si está disponible)
+changeEditor.Invalid_Application_Path=Ruta de aplicación inválida
+changeEditor.Application_does_not_exist=¡La aplicación especificada no existe!
+firebug.Edit=Editar
+firebug.css.sourceEdit=Editar código fuente
+firebug.css.sourceEdit.tooltip=Editar código fuente de la hoja de estilo cargada por el navegador
+firebug.css.liveEdit=Editar en vivo
+firebug.css.liveEdit.tooltip=Editar CSS extraído del navegador
+firebug.EditCSSTooltip=Editar esta hoja de estilo
+firebug.activation.privateBrowsingMode=Los sitios no se guardan en Modo de navegación privada
+firebug.breakpoint.showBreakNotifications=Mostrar notificaciones de parada
+firebug.breakpoint.tip.Show_Break_Notifications=Mostrar una notificación cuando una función de 'Parar en' o el depurador; palabra clave detenga la ejecución de JavaScript
+firebug.breakpoint.doNotShowBreakNotification2=Puede desactivar/activar las notificaciones de parada en <a>en el menú del panel</a>.
+firebug.bon.cause.disableDebuggerKeyword2=Pulsando el botón "Desactivar" se sobrescribe el "Depurador" con una parada desactivada.
+firebug.bon.tooltip.disableDebuggerKeyword2=Crear una parada desactivada
+firebug.bon.scriptPanelNeeded=(el panel de scripts debe estar activado para usar esta función)
+firebug.dom.noChildren2=No hay objetos hijos
+firebug.reps.more=más
+firebug.reps.reference=Detectada referencia cíclica
+firebug.storage.totalItems=%1$S elemento en almacén;%1$S elementos en almacén
+firebug.reps.historyEntries=%1$S entrada de historial;%1$S entradas de historial
+firebug.reps.table.ObjectProperties=Propiedades del objeto
+firebug.completion.empty=(no hay sugerencias)
+firebug.failedToPreviewObjectURL=El objeto URL probablemente ha sido revocado usando el método revokeObjectURL.
+firebug.failedToPreviewImageURL=Fallo al cargar la URL proporcionada.
+firebug.Memory_Profiler_Started=Iniciado el analizador de memoria
+firebug.Objects_Added_While_Profiling=Objetos añadidos al analizar
+firebug.Memory_Profiler_Results=Resultados del analizador de memoria
+firebug.Entire_Session=Toda la sesión
+console.msg.nothing_to_output=(nada que mostrar)
+console.msg.an_empty_string=(cadena vacía)
+cookies.legacy.firecookie_detected=Se ha detectado la extensión Firecookie, que se ha integrado por defecto en Firefox 1.10. Para evitar conflictos debe desinstalar Firecookie. \n\nLuego debe reiniciar para completar la desinstalación de la extensión.
+cookies.legacy.uninstall=Desinstalar
+cookies.legacy.uninstall_and_restart=Desinstalar y reiniciar
+console.cmd.help_title=API de línea de comandos
+console.cmd.help_title_desc=Pulse F1 para abrir la ayuda en línea de Firebug
+console.cmd.tip_title=Consejos de Línea de comandos
+console.cmd.tip_title_desc=Aprender trucos y consejos de la Línea de comandos
+console.cmd.tip.javascript=Se puede ejecutar en la Línea de comandos cualquier expresión JavaScript. Por ejemplo:
+console.cmd.tip.closures=Para acceder a variables en closures use la sintaxis ".%" (ver más <a>aquí</a>). Por ejemplo:
+console.cmd.help.$=Devuelve un elemento con ese id.
+console.cmd.help.$$=Devuelve un array de elementos que coinciden con el selector CSS.
+console.cmd.help.$x=Devuelve un array de elementos que coinciden con la expresión XPath.
+console.cmd.help.dir=Imprime un listado interactivo de todas las propiedades del objeto, idéntico a la vista del panel DOM.
+console.cmd.help.dirxml=Imprime el árbol fuente XML de un elemento HTML o XML, de forma idéntica a la vista del panel HTML. Puede pulsar en cualquier nodo del panel HTML para inspeccionarlo.
+console.cmd.help.cd=Por defecto, las expresiones de línea de comandos son relativas a la ventana de máximo nivel de la página.
+console.cmd.help.clear=Limpia la consola.
+console.cmd.help.copy=Copia el parámetro al portapapeles. Puede ser el valor retornado por una función o un objeto.
+console.cmd.help.inspect=Inspecciona un objeto en el panel más adecuado, o el panel identificao por el segundo argumento opcional. Los paneles disponibles son: HTML, Hojas de estilo, Scripts y DOM.
+console.cmd.help.keys=Devuelve una array con los nombres de todas las propiedades del objeto.
+console.cmd.help.values=Devuelve una array con lo valores de todas las propiedades del objeto.
+console.cmd.help.debug=Añade una parada a la pimera línea de una función.
+console.cmd.help.undebug=Elimina la parada de la primra línea de una función.
+console.cmd.help.monitor=Activa almacenaje en registro de todas las llamadas a una función.
+console.cmd.help.unmonitor=Desactiva almacenaje en registro de todas las llamadas a una función.
+console.cmd.help.monitorEvents=Activa el almacenaje en el registro de todos los eventos enviados a un objeto. El segundo argumento (opcional) puede definir eventos específicos e incluso tipos de registro. Los tipos de evento disponibles son: composition, contextmenu, drag, focus, form, key, load, mouse, mutation, paint, scroll, text, ui, xul y clipboard.
+console.cmd.help.unmonitorEvents=Desactiva el almacenaje en el registro de todos los eventos enviados a un objeto. El segundo argumento (opcional) puede definir eventos específicos o familias de eventos para los cuales se vuelva a activar.
+console.cmd.help.profile=Activa el analizador de JavaScript. El segundo argumento (opcional) contiene el texto a imprimir en la cabecera del informe.
+console.cmd.help.profileEnd=Desactiva el analizador JavaScript e imprime su informe.
+console.cmd.help.table=Permite almacenar en el registro los datos aportados en formato tabla. El método toma un parámetro obligatorio que representa datos en formato tabla (array de arrays o lista de objetos). El segundo parámetro (opcional) puede usarse para especificar columnas y/o propiedades a almacenar en el registro.
+console.cmd.help.$0=Representa el último elemento seleccionado mediante el Inspector.
+console.cmd.help.$1=Representa el penúltimo elemento seleccionado mediante el Inspector.
+console.cmd.help.$2=Representa el tercer último elemento seleccionado con el Inspector.
+console.cmd.help.$3=Representa el cuarto último elemento seleccionado con el Inspector.
+console.cmd.help.$4=Representa el quinto último elemento seleccionado con el Inspector.
+console.cmd.help.$n=Devuelve uno de los 5 últimos elementos seleccionados mediante el Inspector. Este método tiene como parámetro necesario el índice del elemento (comienza en 0).
+console.cmd.help.$_=Representa el resultado de la última expresión evaluada en la Línea de comandos.
+console.cmd.help.help=Muestra ayuda para todos los comandos disponibles.
+console.cmd.help.include=Incluye un script remoto.
+console.cmd.help.$p=Tras hacer clic derecho en un objeto/valor JavaScript y pulsar "Usar en Línea de comandos", esta variable de línea de comandos toma ese valor.
+console.cmd.help.getEventListeners=Devuelve un objeto con todos los eventos listener registrados directamente en un elemento (u otro evento objetivo).
+console.cmd.helpUrlNotAvailable=La página de ayuda para este comando no está disponible
+perftiming.bars.label=Documenta el inicio de fases y el tiempo transcurrido desde la carga del documento:
+perftiming.events.label=Temporización de eventos desde la carga del documento:
+perftiming.details_title=Temporización de ejecución
+perftiming.details_title_desc=Temporización detallada
+perftiming.connectEnd=Tiempo al terminar la conexión con el servidor.
+perftiming.connectStart=Tiempo antes de comenzar la conexión con el servidor.
+perftiming.domComplete=Tiempo antes de que el documento esté disponible.
+perftiming.domContentLoadedEventEnd=Tiempo después de terminar el evento DOMContentLoaded.
+perftiming.domContentLoadedEventStart=Tiempo antes de que comience DOMContentLoaded.
+perftiming.domInteractive=Tiempo antes de que se establezca la disponibilidad como interactiva.
+perftiming.domLoading=Tiempo antes de que se establezca la disponibilidad como carga.
+perftiming.domainLookupEnd=Tiempo después de la búsqueda de nombres de dominio.
+perftiming.domainLookupStart=Tiempo antes de la búsqueda de nombres de dominio.
+perftiming.fetchStart=Tiempo en que se empieza a trasladar el recurso.
+perftiming.loadEventEnd=Momento en el que el evento load ha terminado.
+perftiming.loadEventStart=Tiempo antes de que el evento load comience.
+perftiming.navigationStart=Tiempo después de que el anterior documento empiece a descargarse
+perftiming.redirectCount=Número de redirecciones desde la última no-redirección.
+perftiming.redirectEnd=Tiempo después de que la última respuesta redirigida termine.
+perftiming.redirectStart=Tiempo de búsqueda para iniciar una redirección.
+perftiming.requestStart=Tiempo antes de una petición al servidor.
+perftiming.responseEnd=Tiempo después de finalizar una respuesta o conexión.
+perftiming.responseStart=Tiempo antes del inicio de una respuesta.
+perftiming.unloadEventEnd=Tiempo después de que el documento anterior se descargue.
+perftiming.unloadEventStart=Tiempo antes de lanzar el evento unload.
diff --git a/locale/es-ES/selectors.properties b/locale/es-ES/selectors.properties
index 25cdc2e..41e98ac 100644
--- a/locale/es-ES/selectors.properties
+++ b/locale/es-ES/selectors.properties
@@ -1,10 +1,10 @@
-Panel-selectors=Selectores
-panel.tip.selectors=Muestra los elementos que coinciden con un selector CSS
-css.selector.noSelection=Escriba un selector personalizado o haga clic derecho en una regla CSS y seleccione <b>Obtener elementos coincidentes</b>.
-css.selector.noSelectionResults=No hay elementos coincidentes
-css.selector.readMore=Puede <a>obtener más información</a> sobre como usar este panel.
-css.selector.invalidSelector=El selector introducido no es válido
-css.selector.TryASelector=Probar un selector…
-css.selector.cmd.getMatchingElements=Obtener elementos coincidentes
-aria.labels.Selectors=Panel lateral de selectores
-a11y.labels.press_enter_to_add_new_selector=Pulse Intro para añadir un selector
+Panel-selectors=Selectores
+panel.tip.selectors=Muestra los elementos que coinciden con un selector CSS
+css.selector.noSelection=Escriba un selector personalizado o haga clic derecho en una regla CSS y seleccione <b>Obtener elementos coincidentes</b>.
+css.selector.noSelectionResults=No hay elementos coincidentes
+css.selector.readMore=Puede <a>obtener más información</a> sobre como usar este panel.
+css.selector.invalidSelector=El selector introducido no es válido
+css.selector.TryASelector=Probar un selector…
+css.selector.cmd.getMatchingElements=Obtener elementos coincidentes
+aria.labels.Selectors=Panel lateral de selectores
+a11y.labels.press_enter_to_add_new_selector=Pulse Intro para añadir un selector
diff --git a/locale/es/cookies.properties b/locale/es/cookies.properties
index d0a2999..82f0dd9 100644
--- a/locale/es/cookies.properties
+++ b/locale/es/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Permite inspeccionar y manipular las cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Sesión
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Aceptar cookies de sitios web
-cookies.tip.AllowGlobally=Aceptar por defecto todas las cookies o bloquearlas todas por defecto
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Mostrar eventos de cookies
-cookies.tip.showCookieEvents=Mostrar eventos de cookies (cambios, borrados) en el log de la consola
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Borrar cookies al rechazarlas
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cortar
-cookies.Copy=Copiar
-cookies.CopyAll=Copiar todas
-cookies.Paste=Pegar
-cookies.Delete=Borrar
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Borrar valor
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Editar
-cookies.Accept=Aceptar
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Restablecer cabecera
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=Puede especificar qué sitios web pueden usar siempre cookies y cuáles nunca.\nEscriba la dirección exacta del sitio que quiere gestionar y luego haga clic en Bloquear, Permitir para Sesión o Permitir.
-cookies.ExceptionsTitle=Excepciones - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Soporte para Monitorización de Cookies
-cookies.HostEnable=Activar panel de Cookies para %S
-cookies.HostDisable=Desactivar panel de Cookies para %S
-cookies.Permissions=Activar o Desactivar panel de Cookies
-cookies.PermissionsIntro=Elija para qué sitios web estará habilitado o deshabilitado el panel de Cookies.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=Páginas de Sistema
-cookies.LocalFiles=Archivos locales
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=¿Desea eliminar todas las cookies de la lista?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=¿Desea eliminar todas las cookies de sesión de la lista?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=No mostrar este mensaje de nuevo
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirmar eliminación de cookies
-cookies.tip.Confirm_cookie_removal=Si se marca, aparecerá un mensaje de confirmación antes de borrar todas las cookies de la lista.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Eliminar todas las cookies de la lista.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Eliminar Cookies de Sesión
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Eliminar todas las cookies de sesión de la lista.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Crear una nueva cookie para %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Valor
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Gestionar los permisos de cookies para %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=Todas las cookies han sido borradas.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=Todas las cookies de sesión han sido borradas.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rechazadas:
-cookies.console.nocookiesreceived=No se recibieron cookies
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=eliminada
-cookies.console.added=añadida
-cookies.console.changed=cambiada
-cookies.console.cleared=borrada
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Dominio
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Secure
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Aceptada
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rechazada
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Valor
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Por defecto (Aceptar cookies de sesión)
-cookies.default.thirdPartySession=Por defecto (Aceptar cookies de sesión)
-cookies.default.thirdParty=Por defecto (Aceptar cookies)
-cookies.default.allow=Por defecto (Aceptar cookies)
-cookies.default.deny=Por defecto (Rechazar cookies)
-cookies.default.warn=Por defecto (Avisar antes de aceptar cookies)
-cookies.host.session=Aceptar cookies de sesión de %S
-cookies.host.accept=Aceptar cookies de %S
-cookies.host.reject=Rechazar cookies de %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=El nombre de la cookie no es válido.
-cookies.edit.invalidhost=El dominio de la cookie no es válido.
-cookies.edit.invalidpath=La ruta de la cookie no es válida.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Nombre
-cookies.header.value=Valor
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Dominio
-cookies.header.size=Tamaño
-cookies.header.path=Ruta
-cookies.header.expires=Expira
-cookies.header.security=Seguridad
-cookies.header.httponly=Sólo Http
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Nombre de la cookie
-cookies.header.value.tooltip=Valor guardado en la cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Dominio que ha guardado la cookie
-cookies.header.size.tooltip=Tamaño de la cookie
-cookies.header.path.tooltip=Directorio donde la cookie está activa
-cookies.header.expires.tooltip=Fecha de expiración de la cookie
-cookies.header.security.tooltip=Muestra si la cookie es segura o no
-cookies.header.httponly.tooltip=Muestra si la cookie es de sólo HTTP
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Cookies recibidas
-cookies.netinfo.Sent_Cookies=Cookies enviadas
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Filtro de ruta
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Exportar todas las cookies
-cookies.export.Export_All_Cookies_Tooltip=Exportar todas las cookies del navegador a fichero cookies.txt
-cookies.export.Export_For_Site=Exportar cookies de este sitio
-cookies.export.Export_For_Site_Tooltip=Exportar las cookies de %S a fichero cookies.txt
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=No hay página activa.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Eliminar cookies
-cookies.Create=Crear cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Herramientas
-cookies.ToolsTooltip=Herramientas
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Mostrar todas las cookies
-cookies.ViewAllTooltip=Abrir el Gestor integrado de cookies
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Permisos de sitios web
-cookies.ViewExceptionsTooltip=Ver lista de sitios web permitidos o prohibidos
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filtrar
-cookies.FilterTooltip=Usar las opciones dadas para filtrar la lista de cookies.
-cookies.filter.byPath=Filtrar cookies por ruta actual
-cookies.filter.byPathTooltip=Mostrar sólo las cookies que coincidan con la ruta actual.
-cookies.filter.showRejectedCookies=Mostrar cookies rechazadas
-cookies.filter.showRejectedCookiesTooltip=Visualizar en la lista incluso las cookies rechazadas.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Editar cookie
-cookies.edit.name.label=Nombre:
-cookies.edit.domain.label=Dominio:
-cookies.edit.path.label=Ruta:
-cookies.edit.expire.label=Expira:
-cookies.edit.value.label=Valor:
-cookies.edit.secure.label=Cookie segura
-cookies.edit.httponly.label=Sólo HTTP
-cookies.edit.session.label=Sesión
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filtrar por cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Eliminar todas las cookeis
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Permite inspeccionar y manipular las cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Sesión
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Aceptar cookies de sitios web
+cookies.tip.AllowGlobally=Aceptar por defecto todas las cookies o bloquearlas todas por defecto
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Mostrar eventos de cookies
+cookies.tip.showCookieEvents=Mostrar eventos de cookies (cambios, borrados) en el log de la consola
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Borrar cookies al rechazarlas
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cortar
+cookies.Copy=Copiar
+cookies.CopyAll=Copiar todas
+cookies.Paste=Pegar
+cookies.Delete=Borrar
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Borrar valor
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Editar
+cookies.Accept=Aceptar
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Restablecer cabecera
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=Puede especificar qué sitios web pueden usar siempre cookies y cuáles nunca.\nEscriba la dirección exacta del sitio que quiere gestionar y luego haga clic en Bloquear, Permitir para Sesión o Permitir.
+cookies.ExceptionsTitle=Excepciones - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Soporte para Monitorización de Cookies
+cookies.HostEnable=Activar panel de Cookies para %S
+cookies.HostDisable=Desactivar panel de Cookies para %S
+cookies.Permissions=Activar o Desactivar panel de Cookies
+cookies.PermissionsIntro=Elija para qué sitios web estará habilitado o deshabilitado el panel de Cookies.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=Páginas de Sistema
+cookies.LocalFiles=Archivos locales
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=¿Desea eliminar todas las cookies de la lista?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=¿Desea eliminar todas las cookies de sesión de la lista?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=No mostrar este mensaje de nuevo
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirmar eliminación de cookies
+cookies.tip.Confirm_cookie_removal=Si se marca, aparecerá un mensaje de confirmación antes de borrar todas las cookies de la lista.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Eliminar todas las cookies de la lista.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Eliminar Cookies de Sesión
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Eliminar todas las cookies de sesión de la lista.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Crear una nueva cookie para %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Valor
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Gestionar los permisos de cookies para %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=Todas las cookies han sido borradas.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=Todas las cookies de sesión han sido borradas.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rechazadas:
+cookies.console.nocookiesreceived=No se recibieron cookies
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=eliminada
+cookies.console.added=añadida
+cookies.console.changed=cambiada
+cookies.console.cleared=borrada
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Dominio
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Secure
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Aceptada
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rechazada
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Valor
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Por defecto (Aceptar cookies de sesión)
+cookies.default.thirdPartySession=Por defecto (Aceptar cookies de sesión)
+cookies.default.thirdParty=Por defecto (Aceptar cookies)
+cookies.default.allow=Por defecto (Aceptar cookies)
+cookies.default.deny=Por defecto (Rechazar cookies)
+cookies.default.warn=Por defecto (Avisar antes de aceptar cookies)
+cookies.host.session=Aceptar cookies de sesión de %S
+cookies.host.accept=Aceptar cookies de %S
+cookies.host.reject=Rechazar cookies de %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=El nombre de la cookie no es válido.
+cookies.edit.invalidhost=El dominio de la cookie no es válido.
+cookies.edit.invalidpath=La ruta de la cookie no es válida.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Nombre
+cookies.header.value=Valor
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Dominio
+cookies.header.size=Tamaño
+cookies.header.path=Ruta
+cookies.header.expires=Expira
+cookies.header.security=Seguridad
+cookies.header.httponly=Sólo Http
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Nombre de la cookie
+cookies.header.value.tooltip=Valor guardado en la cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Dominio que ha guardado la cookie
+cookies.header.size.tooltip=Tamaño de la cookie
+cookies.header.path.tooltip=Directorio donde la cookie está activa
+cookies.header.expires.tooltip=Fecha de expiración de la cookie
+cookies.header.security.tooltip=Muestra si la cookie es segura o no
+cookies.header.httponly.tooltip=Muestra si la cookie es de sólo HTTP
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Cookies recibidas
+cookies.netinfo.Sent_Cookies=Cookies enviadas
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Filtro de ruta
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Exportar todas las cookies
+cookies.export.Export_All_Cookies_Tooltip=Exportar todas las cookies del navegador a fichero cookies.txt
+cookies.export.Export_For_Site=Exportar cookies de este sitio
+cookies.export.Export_For_Site_Tooltip=Exportar las cookies de %S a fichero cookies.txt
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=No hay página activa.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Eliminar cookies
+cookies.Create=Crear cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Herramientas
+cookies.ToolsTooltip=Herramientas
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Mostrar todas las cookies
+cookies.ViewAllTooltip=Abrir el Gestor integrado de cookies
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Permisos de sitios web
+cookies.ViewExceptionsTooltip=Ver lista de sitios web permitidos o prohibidos
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filtrar
+cookies.FilterTooltip=Usar las opciones dadas para filtrar la lista de cookies.
+cookies.filter.byPath=Filtrar cookies por ruta actual
+cookies.filter.byPathTooltip=Mostrar sólo las cookies que coincidan con la ruta actual.
+cookies.filter.showRejectedCookies=Mostrar cookies rechazadas
+cookies.filter.showRejectedCookiesTooltip=Visualizar en la lista incluso las cookies rechazadas.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Editar cookie
+cookies.edit.name.label=Nombre:
+cookies.edit.domain.label=Dominio:
+cookies.edit.path.label=Ruta:
+cookies.edit.expire.label=Expira:
+cookies.edit.value.label=Valor:
+cookies.edit.secure.label=Cookie segura
+cookies.edit.httponly.label=Sólo HTTP
+cookies.edit.session.label=Sesión
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filtrar por cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Eliminar todas las cookeis
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/es/firebug-amo.properties b/locale/es/firebug-amo.properties
index 97a4d24..d311523 100644
--- a/locale/es/firebug-amo.properties
+++ b/locale/es/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug se integra con Firefox para poner a su disposición una gran cantidad de herramientas de desarrollo mientras navega. Puede editar, depurar y monitorizar CSS, HTML y JavaScript de forma interactiva en cualquier página web.\\n\\nFirebug 1.6 requiere Firefox 3.6 o superior.
-firebug.amo.description=Firebug se integra con Firefox para poner a su disposición una gran cantidad de herramientas de desarrollo mientras navega.\\n\\nVisite el sito web de Firebug para encontrar documentación, capturas de pantalla y foros de discusión: http://getfirebug.com
-firebug.amo.developer.comments=Si tiene cualquier problema, por favor lea la sección de preguntas frecuentes de FireBug.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug se integra con Firefox para poner a su disposición una gran cantidad de herramientas de desarrollo mientras navega. Puede editar, depurar y monitorizar CSS, HTML y JavaScript de forma interactiva en cualquier página web.\\n\\nFirebug 1.6 requiere Firefox 3.6 o superior.
+firebug.amo.description=Firebug se integra con Firefox para poner a su disposición una gran cantidad de herramientas de desarrollo mientras navega.\\n\\nVisite el sito web de Firebug para encontrar documentación, capturas de pantalla y foros de discusión: http://getfirebug.com
+firebug.amo.developer.comments=Si tiene cualquier problema, por favor lea la sección de preguntas frecuentes de FireBug.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/es/firebug-tracing.properties b/locale/es/firebug-tracing.properties
index 72aec66..c72c1bd 100644
--- a/locale/es/firebug-tracing.properties
+++ b/locale/es/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Abrir seguimiento de Firebug
-Always_Open_Firebug_Tracing=Abrir siempre seguimiento de Firebug
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Seguimiento
-tracing.Show_Scope_Variables=Mostrar variables del ámbito
-tracing.Show_Time=Mostrar hora
-tracing.tab.Stack=Pila
-tracing.tab.Exception=Excepción
-tracing.tab.Properties=Propiedades
-tracing.tab.Scope=Ámbito
-tracing.tab.Response=Respuesta
-tracing.tab.Source=Fuente
-tracing.tab.Interfaces=Interfaces
-tracing.tab.Object=Objeto
-tracing.tab.Event=Evento
-tracing.cmd.Clear=Limpiar
-tracing.cmd.tip.Clear=Eliminar todos los mensajes
-tracing.cmd.Find=Buscar
-tracing.cmd.tip.Find=Buscar texto
-tracing.cmd.Bookmark=Marcador
-tracing.cmd.tip.Bookmark=Insertar marcador
-tracing.cmd.Restart=Reiniciar Firefox
-tracing.cmd.tip.Restart=Reiniciar Firefox
-tracing.cmd.Exit=Salir de Firefox
-tracing.cmd.tip.Exit=Salir de Firefox
-tracing.cmd.Save=Guardar en archivo
-tracing.cmd.tip.Save=Guardar logs en un archivo
-tracing.cmd.Load=Abrir desde archivo
-tracing.cmd.tip.Load=Abrir logs desde archivo
-tracing.cmd.Expand_All=Expandir todo
-tracing.cmd.Collapse_All=Contraer todo
-tracing.cmd.Tools=Herramientas
-tracing.cmd.tip.Tools=Herramientas
-tracing.cmd.Clear_Browser_Cache=Limpiar caché del navegador
-tracing.cmd.tip.Clear_Browser_Cache=Limpiar caché del navegador
-tracing.cmd.Force_Garbage_Collector=Forzar recolector de basura
-tracing.cmd.tip.Force_Garbage_Collector=Forzar recolector de basura
-tracing.cmd.Open_Profile_Directory=Abrir directorio de perfil
-tracing.cmd.tip.Open_Profile_Directory=Abrir directorio de perfil
-tracing.option.A11Y_Description=Problemas de accesibilidad
-tracing.option.ACTIVATION_Description=Activación de Firebug
-tracing.option.ACTIVITYOBSERVER_Description=Observador de accesibilidad de Firebug
-tracing.option.ANNOTATIONS_Description=Anotación de sitio web de Firebug
-tracing.option.BP_Description=Puntos de ruptura
-tracing.option.CACHE_Description=Cache fuente
-tracing.option.COMMANDLINE_Description=Linea de comandos y linea de comandos emergente
-tracing.option.COMPILATION_UNITS_Description=Unidades de compilación de script
-tracing.option.CONSOLE_Description=Panel de consola
-tracing.option.CSS_Description=Procesado CSS
-tracing.option.DISPATCH_Description=Enviado de eventos
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Creación domplate
-tracing.option.EDITOR_Description=Editor en línea y autocompletador
-tracing.option.ERRORLOG_Description=Trazad de error de JS, CSS, XML, etc.
-tracing.option.ERRORS_Description=Errores internos de Firebug
-tracing.option.EVAL_Description=Evaluación de script
-tracing.option.FBS_BP_Description=Servicio de Firebug de puntos de ruptura
-tracing.option.FBS_CREATION_Description=Servicio de Firebug de creación de script
-tracing.option.FBS_ERRORS_Description=Servicio de Firebug de errores
-tracing.option.FBS_FINDDEBUGGER_Description=Servicio de Firebug de búsqueda de depurador
-tracing.option.FBS_FUNCTION_Description=Servicio de Firebug de función
-tracing.option.FBS_JSDCONTEXT_Description=Servicio de Firebug de depurador de contexto JavaScript
-tracing.option.FBS_SRCUNITS_Description=Servicio de Firebug de unidades fuente
-tracing.option.FBS_STEP_Description=Servicio de Firebug de depurador de paso JavaScript
-tracing.option.FBS_TRACKFILES_Description=Servicio de Firebug de archivos monitorizados
-tracing.option.FUNCTION_NAMES_Description=Nombres de función de JavaScript
-tracing.option.HISTORY_Description=Historial de navegación de firebug
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=Observador de petición de HTTP
-tracing.option.INFOTIP_Description=Información
-tracing.option.INITIALIZE_Description=Inicialización de Firebug
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=Visor JSON
-tracing.option.LINETABLE_Description=Tabla de script
-tracing.option.LOCALE_Description=Localización
-tracing.option.LOCATIONS_Description=Localizaciones fuente
-tracing.option.NET_Description=Panel de red
-tracing.option.NET_EVENTS_Description=Eventos de red
-tracing.option.OPTIONS_Description=Preferencias de Firebug
-tracing.option.PANELS_Description=Paneles
-tracing.option.SHORTCUTS_Description=Accesos rápidos de teclado
-tracing.option.SOURCEFILES_Description=Archivos fuente JavaScript
-tracing.option.SPY_Description=Observador XMLHttpRequest
-tracing.option.STACK_Description=Pila de llamadas JavaScript
-tracing.option.STORAGE_Description=Preferencias de almacenamiento
-tracing.option.SVGVIEWER_Description=Visor SVG
-tracing.option.FONTS_Description=Información y visor de fuente
-tracing.option.TOOLTIP_Description=Información botón inicio
-tracing.option.TOPLEVEL_Description=JavaScript nivel alto
-tracing.option.UI_LOOP_Description=Interfaz de usuario de depuración de JavaScript
-tracing.option.WINDOWS_Description=Ventanas de Firebug y tabulador de observador
-tracing.option.XMLVIEWER_Description=Visor XML
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Abrir seguimiento de Firebug
+Always_Open_Firebug_Tracing=Abrir siempre seguimiento de Firebug
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Seguimiento
+tracing.Show_Scope_Variables=Mostrar variables del ámbito
+tracing.Show_Time=Mostrar hora
+tracing.tab.Stack=Pila
+tracing.tab.Exception=Excepción
+tracing.tab.Properties=Propiedades
+tracing.tab.Scope=Ámbito
+tracing.tab.Response=Respuesta
+tracing.tab.Source=Fuente
+tracing.tab.Interfaces=Interfaces
+tracing.tab.Object=Objeto
+tracing.tab.Event=Evento
+tracing.cmd.Clear=Limpiar
+tracing.cmd.tip.Clear=Eliminar todos los mensajes
+tracing.cmd.Find=Buscar
+tracing.cmd.tip.Find=Buscar texto
+tracing.cmd.Bookmark=Marcador
+tracing.cmd.tip.Bookmark=Insertar marcador
+tracing.cmd.Restart=Reiniciar Firefox
+tracing.cmd.tip.Restart=Reiniciar Firefox
+tracing.cmd.Exit=Salir de Firefox
+tracing.cmd.tip.Exit=Salir de Firefox
+tracing.cmd.Save=Guardar en archivo
+tracing.cmd.tip.Save=Guardar logs en un archivo
+tracing.cmd.Load=Abrir desde archivo
+tracing.cmd.tip.Load=Abrir logs desde archivo
+tracing.cmd.Expand_All=Expandir todo
+tracing.cmd.Collapse_All=Contraer todo
+tracing.cmd.Tools=Herramientas
+tracing.cmd.tip.Tools=Herramientas
+tracing.cmd.Clear_Browser_Cache=Limpiar caché del navegador
+tracing.cmd.tip.Clear_Browser_Cache=Limpiar caché del navegador
+tracing.cmd.Force_Garbage_Collector=Forzar recolector de basura
+tracing.cmd.tip.Force_Garbage_Collector=Forzar recolector de basura
+tracing.cmd.Open_Profile_Directory=Abrir directorio de perfil
+tracing.cmd.tip.Open_Profile_Directory=Abrir directorio de perfil
+tracing.option.A11Y_Description=Problemas de accesibilidad
+tracing.option.ACTIVATION_Description=Activación de Firebug
+tracing.option.ACTIVITYOBSERVER_Description=Observador de accesibilidad de Firebug
+tracing.option.ANNOTATIONS_Description=Anotación de sitio web de Firebug
+tracing.option.BP_Description=Puntos de ruptura
+tracing.option.CACHE_Description=Cache fuente
+tracing.option.COMMANDLINE_Description=Linea de comandos y linea de comandos emergente
+tracing.option.COMPILATION_UNITS_Description=Unidades de compilación de script
+tracing.option.CONSOLE_Description=Panel de consola
+tracing.option.CSS_Description=Procesado CSS
+tracing.option.DISPATCH_Description=Enviado de eventos
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Creación domplate
+tracing.option.EDITOR_Description=Editor en línea y autocompletador
+tracing.option.ERRORLOG_Description=Trazad de error de JS, CSS, XML, etc.
+tracing.option.ERRORS_Description=Errores internos de Firebug
+tracing.option.EVAL_Description=Evaluación de script
+tracing.option.FBS_BP_Description=Servicio de Firebug de puntos de ruptura
+tracing.option.FBS_CREATION_Description=Servicio de Firebug de creación de script
+tracing.option.FBS_ERRORS_Description=Servicio de Firebug de errores
+tracing.option.FBS_FINDDEBUGGER_Description=Servicio de Firebug de búsqueda de depurador
+tracing.option.FBS_FUNCTION_Description=Servicio de Firebug de función
+tracing.option.FBS_JSDCONTEXT_Description=Servicio de Firebug de depurador de contexto JavaScript
+tracing.option.FBS_SRCUNITS_Description=Servicio de Firebug de unidades fuente
+tracing.option.FBS_STEP_Description=Servicio de Firebug de depurador de paso JavaScript
+tracing.option.FBS_TRACKFILES_Description=Servicio de Firebug de archivos monitorizados
+tracing.option.FUNCTION_NAMES_Description=Nombres de función de JavaScript
+tracing.option.HISTORY_Description=Historial de navegación de firebug
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=Observador de petición de HTTP
+tracing.option.INFOTIP_Description=Información
+tracing.option.INITIALIZE_Description=Inicialización de Firebug
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=Visor JSON
+tracing.option.LINETABLE_Description=Tabla de script
+tracing.option.LOCALE_Description=Localización
+tracing.option.LOCATIONS_Description=Localizaciones fuente
+tracing.option.NET_Description=Panel de red
+tracing.option.NET_EVENTS_Description=Eventos de red
+tracing.option.OPTIONS_Description=Preferencias de Firebug
+tracing.option.PANELS_Description=Paneles
+tracing.option.SHORTCUTS_Description=Accesos rápidos de teclado
+tracing.option.SOURCEFILES_Description=Archivos fuente JavaScript
+tracing.option.SPY_Description=Observador XMLHttpRequest
+tracing.option.STACK_Description=Pila de llamadas JavaScript
+tracing.option.STORAGE_Description=Preferencias de almacenamiento
+tracing.option.SVGVIEWER_Description=Visor SVG
+tracing.option.FONTS_Description=Información y visor de fuente
+tracing.option.TOOLTIP_Description=Información botón inicio
+tracing.option.TOPLEVEL_Description=JavaScript nivel alto
+tracing.option.UI_LOOP_Description=Interfaz de usuario de depuración de JavaScript
+tracing.option.WINDOWS_Description=Ventanas de Firebug y tabulador de observador
+tracing.option.XMLVIEWER_Description=Visor XML
diff --git a/locale/es/firebug.properties b/locale/es/firebug.properties
index 9fb3218..6660110 100644
--- a/locale/es/firebug.properties
+++ b/locale/es/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Consola
-panel.tip.console=Permite observar mensajes de consola y ejecutar comandos de JavaScript
-Panel-net=Red
-panel.tip.net=Permite analizar el tráfico de red
-Panel-html=HTML
-panel.tip.html=Permite inspeccionar y manipular los nodos del DOM
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Permite inspeccionar y manipular las hojas de estilo CSS
-Panel-script=Script
-panel.tip.script=Permite depurar JavaScript
-Panel-dom=DOM
-panel.tip.dom=Permite inspeccionar y manipular las propiedades del DOM
-Panel-css=Estilo
-panel.tip.css=Permite inspeccionar y manipular las reglas CSS del nodo DOM seleccionado
-Panel-computed=Interpretado
-panel.tip.computed=Permite inspeccionar los valores de CSS computados del nodo DOM seleccionado
-Panel-layout=Maquetación
-panel.tip.layout=Permite inspeccionar y manipular los datos de distribución del nodo DOM seleccionado
-Panel-domSide=DOM
-panel.tip.domSide=Permite inspeccionar y manipular las propiedades DOM del nodo DOM seleccionado
-Panel-watches=Seguimiento
-panel.tip.watches=Permite inspeccionar las variables de JavaScript disponibles en el marco de pila actual y definir expresiones a vigilar
-Panel-breakpoints=Puntos de ruptura
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Pila
-panel.tip.callstack=Permite observar la pila de llamadas de JavaScript actual
-Panel-scopes=Ámbitos
-firebug.DetachFirebug=Abrir Firebug en una ventana nueva
-firebug.AttachFirebug=Acoplar Firebug al navegador
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Firebug total;%1$S Firebugs totales
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Desactivado
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=En el navegador
-minimized=Minimizado
-enablement.for_all_pages=para todos los sitios
-enablement.on=Activado
-enablement.off=Desactivado
-enablement.Panel_activation_status=Estado de activación del panel:
-none=Cerrado
-Firebug_-_inactive_for_current_website=Firebug - inactivo para el sitio actual
-Activate_Firebug_for_the_current_website=Activar Firebug para el sitio actual
-Minimized=Minimizado
-Minimize_Firebug=Minimizar Firebug
-On_for_all_web_pages=Activar para todos los sitios
-firebug.menu.tip.On_for_all_Web_Sites=Activar Firebug por defecto en todas las webs
-firebug.menu.Clear_Activation_List=Limpiar lista de activación
-firebug.menu.tip.Clear_Activation_List=Vaciar la lista de sitios para los que Firebug está activado
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Localización de UI de Firebug
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Opciones de Firebug
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Mostrar todos los paneles
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=Mostrar errores de JavaScript
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Mostrar advertencias de JavaScript
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Mostrar errores de CSS
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Mostrar traza para los errores
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Mostrar XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Mostrar errores de chrome
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Mostrar mensajes de chrome
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Mostrar errores externos
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Mostrar errores de red
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Advertencias estrictas (penalización de rendimiento)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Historial de comandos
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Mostrar ventana emergente de lista de completado
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Fallo de comprobación
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (línea %S)
-LineAndCol=%S (línea %S, columna %S)
-InstanceLine=%S #%S (línea %S)
-StackItem=%S (%S línea %S)
-SystemItem=<Sistema>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspeccionar en el Panel: %S
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(sin nombre)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Mostrar texto completo
-html.option.tip.Show_Full_Text=No cortar el contenido del elemento
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Mostrar espacios en blanco
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Mostrar comentarios
-html.option.tip.Show_Comments=Show comment nodes
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Resaltar cambios
-html.option.tip.Highlight_Mutations=Resaltar cambios dentro de nodos
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Expandir cambios
-html.option.tip.Expand_Mutations=Expandir la vista del árbol para mostrar los nodos cambiados
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Desplazar cambios hacia la vista
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Mostrar caja de información rápida
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Modelo de caja sombreado
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Desplazar hacia la vista
-html.tip.Scroll_Into_View=Desplazar la página para hacer visible el elemento
-NewAttribute=Atributo nuevo...
-html.tip.New_Attribute=Añadir un nuevo atributo a este elemento
-html.Edit_Node=Editar %S...
-html.Node=Nodo
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Eliminar elemento
-html.Delete_Element=Borrar el elemento del árbol
-DeleteNode=Eliminar nodo
-html.Delete_Node=Borrar el nodo del árbol
-# Quick Info Box
-quickInfo=Información rápida
-computedStyle=Estilo interpretado
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Detener si hay cambios en el HTML
-html.Disable_Break_On_Mutate=Deshabilitar detener si hay cambios en el HTML
-html.label.Break_On_Text_Change=Detener si hay cambios en el texto
-html.label.HTML_Breakpoints=Puntos de ruptura en el HTML
-html.label.Break_On_Attribute_Change=Detener si hay cambios en los atributos
-html.tip.Break_On_Attribute_Change=Para la ejecución de JavaScript cuando un atributo de este elemento cambie
-html.label.Break_On_Child_Addition_or_Removal=Detener si se agregan o eliminan subnodos
-html.tip.Break_On_Child_Addition_or_Removal=Parar la ejecución de JavaScript cuando se añada o elimine un nodo hijo de este elemento
-html.label.Break_On_Element_Removal=Detener si se elimina el elemento
-html.tip.Break_On_Element_Removal=Parar la ejecución de JavaScript cuando se elimine este elemento
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Expandir/Contraer todo
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Ruptura al cambiar la propiedad
-dom.tip.Break_On_Property_Change=Parar la ejecución de JavaScript cuando esta propiedad cambie
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Deshabilitar ruptura al cambiar la propiedad
-dom.label.DOM_Breakpoints=Puntos de ruptura en el DOM
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Editar atributo «%S»...
-html.tip.Edit_Attribute=Editar el valor del atributo "%S" de este elemento
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Eliminar atributo «%S»
-html.tip.Delete_Attribute=Borrar el atributo "%S" de este elemento
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Heredado desde
-SothinkWarning=La extensión Sothink SWF Catcher está impidiendo que Firebug funcione correctamente.<br><br>Por favor lea <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">esta entrada en la sección de preguntas frecuentes de Firebug</a> para más información.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=El rápido zorro marrón salta sobre el perro perezoso. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=No hay reglas. Puede <a>crear una regla</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=Este elemento no tiene reglas de estilo. Puede <a>crear una regla</a> para él.
-EditStyle=Editar estilo del elemento...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Nueva regla...
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Nueva propiedad...
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=Editar «%S»...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=Deshabilitar «%S»
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=Eliminar «%S»
-css.tip.Delete_Prop=Delete the property "%S"
-# Console context menu labels.
-BreakOnThisError=Detenerse en este error
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Detenerse en todos los errores
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Rastrear throw/catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Usar la última línea para los nombres de eval()
-UseMD5ForEvalName=Usar MD5 para los nombres de eval()
-# Breakpoints side panel
-Breakpoints=Puntos de ruptura
-ErrorBreakpoints=Puntos de ruptura de error
-LoggedFunctions=Funciones registradas
-EnableAllBreakpoints=Habilitar todos los puntos de ruptura
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Deshabilitar todos los puntos de ruptura
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Eliminar todos los puntos de ruptura
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Este punto de ruptura parará solo si esta expresión es verdadera:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Eliminar ruptura
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Deshabilitar ruptura
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Habilitar ruptura
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Continuar
-script.balloon.Disable=Deshabilitar
-ScriptsFilterStatic=Mostrar scripts estáticos
-ScriptsFilterEval=Mostrar scripts estáticos y eval
-ScriptsFilterEvent=Mostrar scripts estáticos y de eventos
-ScriptsFilterAll=Mostrar scripts estáticos, eval y de eventos
-ScriptsFilterStaticShort=static
-ScriptsFilterEvalShort=evals
-ScriptsFilterEventShort=events
-ScriptsFilterAllShort=todos
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Expandir todo
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Contraer todo
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Mostrar propiedades definidas por el usuario
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Mostrar funciones definidas por el usuario
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Mostrar propiedades del DOM
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Mostrar funciones del DOM
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Mostrar constantes del DOM
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Mostrar manejadores de evento en línea
-ShowInlineEventHandlersTooltip=Mostrar manejadores de evento en línea disponibles que no están asociados con una función.
-ShowOwnProperties=Mostrar solo propiedades propias
-ShowOwnPropertiesTooltip=No mostrar cadena de propiedades
-ShowEnumerableProperties=Mostrar solo propiedades enumerables
-ShowEnumerablePropertiesTooltip=No mostrar propiedades no enumerables
-NoMembersWarning=No hay propiedades a mostrar para este objeto.
-NewWatch=Nueva expresión de seguimiento...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Agregar seguimiento
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Copiar fuente
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<número> para ir a una línea
-CopyValue=Copiar valor
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Copiar nombre
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Copiar ruta
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Propiedad nueva...
-EditProperty=Editar propiedad...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Editar variable...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Editar seguimiento...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Eliminar propiedad
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Eliminar seguimiento
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Poner punto de ruptura
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Editar condición del punto de ruptura...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=No hay puntos de ruptura en esta página.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Mostrar sólo estilos aplicados
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Mostrar CSS del agente de usuario
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Expandir propiedades abreviadas
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Orden alfabético
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Mostrar estilos específicos de Mozilla
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Pulse cualquier tecla para filtrar la lista
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=relleno
-LayoutBorder=borde
-LayoutMargin=margen
-LayoutPosition=posición
-LayoutAdjacent=adyacente
-position=posición
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Mostrar reglas y guías
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Net panel
-Loading=Cargando...
-Headers=Encabezados
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Restablecer encabezado
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=URL solicitada y método HTTP usado.
-net.header.Status=Estado
-net.header.Status_Tooltip=Estado de la respuesta recibida.
-net.header.Domain=Dominio
-net.header.Domain_Tooltip=Dominio de la petición ejecutada.
-net.header.Size=Tamaño
-net.header.Size_Tooltip=Tamaño de la respuesta recibida.
-net.header.Timeline=Línea de tiempo
-net.header.Timeline_Tooltip=Información detallada acerca de los tiempos de petición y respuesta.
-net.header.Local_IP=IP local
-net.header.Local_IP_Tooltip=Dirección IP local y número de puerto al que la petición está asociada.
-net.header.Remote_IP=IP remota
-net.header.Remote_IP_Tooltip=Dirección IP remota y número de puerto al que la petición está asociada.
-net.header.Protocol=Protocolo
-net.header.Protocol_Tooltip=El protocolo de la URL usado para localizar el recurso en la Web.
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=Puntos de ruputra XHR
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Detener en XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=Ver código fuente
-net.headers.pretty_print=Vista con formato
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Multimedia
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Envío
-Put=Establecer
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Respuesta
-URLParameters=Parámetros
-Cache=Caché
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Información general
-fontviewer.Meta_Data=Meta datos
-fontviewer.view_source=ver fuente
-fontviewer.Preview=Previsualizar
-fontviewer.view_characters=ver caracteres
-fontviewer.pretty_print=impresión bonita
-fontviewer.view_sample=ver ejemplo
-fontviewer.uniqueid=ID único
-fontviewer.vendor=Fabricante
-fontviewer.license=Licencia
-fontviewer.description=Descripción
-fontviewer.copyright=Copyright
-fontviewer.credits=Créditos
-fontviewer.trademark=Marca registrada
-fontviewer.licensee=Licencia
-fontviewer.extension=Extensión
-fontviewer.pangram=El rápido zorro marrón salta sobre el perro perezoso
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Ordenar por clave
-jsonviewer.do_not_sort=No ordenar
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copiar \\\"%S\\\" como JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Encabezados de la petición
-ResponseHeaders=Encabezados de la respuesta
-CachedResponseHeaders=Cabeceras de respuesta desde caché
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=El límite del log de Firebug ha sido alcanzado. %1$S entrada no mostrada.; El límite del log de Firebug ha sido alcanzado. %1$S entradas no mostradas.
-LimitPrefs=Preferencias
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Para cambiar el límite, modifique: %S
-Refresh=Refrescar
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Abrir en pestaña nueva
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Abrir respuesta en pestaña nueva
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Perfilar
-ProfilerStarted=El perfilador está corriendo. Haga clic en «Perfilar» nuevamente para ver el informe.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S llamada);(%1$Sms, %2$S llamadas)
-NothingToProfile=Ninguna actividad para perfilar.
-PercentTooltip=Porcentaje de tiempo utilizado en esta función.
-CallsHeaderTooltip=Número de veces que la función fue llamada.
-OwnTimeHeaderTooltip=Tiempo empleado en la función, excluyendo llamadas anidadas.
-TimeHeaderTooltip=Tiempo empleado en la función, incluyendo llamadas anidadas.
-AvgHeaderTooltip=Tiempo promedio, incluyendo llamadas a funciones.
-MinHeaderTooltip=Tiempo mínimo, incluyendo llamadas a funciones.
-MaxHeaderTooltip=Tiempo máximo, incluyendo llamadas a funciones.
-ProfileButton.Enabled.Tooltip=Perfilar el tiempo de ejecución de JavaScript.
-ProfileButton.Disabled.Tooltip=Perfilar el tiempo de ejecución de JavaScript (El panel Script debe estar habilitado).
-Function=Función
-Percent=Porcentaje
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Llamadas
-OwnTime=Tiempo propio
-Time=Tiempo
-Avg=Promedio
-Min=Mínimo
-Max=Máximo
-File=Archivo
-# Support for standard actions.
-Copy=Copiar
-Cut=Cortar
-Remove=Eliminar
-Delete=Delete
-Paste=Pegar
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Copiar innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Copiar XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Copiar ruta CSS
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Copiar dirección
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Copiar dirección con parámetros
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Copiar encabezados de la petición
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Copiar encabezados de la respuesta
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Copiar el cuerpo de la respuesta
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Copiar el error
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Copiar la función
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Registrar llamadas a «%S»
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Registrar eventos
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Habilitado
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=La consola de Firebug no soporta «%S»
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=La línea de comandos de Firebug no soporta «%S»
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Deshabilitar detención en todos los errores
-console.Break_On_All_Errors=Detener en todos los errores
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Detener en este error
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript está desactivado en sus preferencias de Firefox. Si desea usar la ventana de la consola, por favor active está opción en «Herramientas -> Opciones -> Contenido -> Activar JavaScript»
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=Hay demasiados elementos en el array para resaltarlos en la página (el límite actual es %S).\\\\nVéa la preferencia «extensions.firebug.multiHighlightLimit».
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=La linea de comandos de Firebug está desactivada para las páginas XML. Puede <a>cambiar a HTML</a> para activarla.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Cuerpo de la respuesta
-net.sizeinfo.Post_Body=Cuerpo de la petición
-net.sizeinfo.Total_Sent=Total enviados
-net.sizeinfo.Total_Received=Total recibidos
-net.sizeinfo.Including_HTTP_Headers=Incluyendo cabeceras HTTP
-net.ActivationMessage=Panel de red activado. Cualquier petición mientras el panel estaba desactivado no se muestra.
-net.responseSizeLimitMessage=Se ha alcanzado el límite del tamaño de respuesta de Firebug. Haga clic <a>aquí</a> para abrir la respuesta completa en una nueva pestaña de Firefox.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Los datos de la petición superan el tamaño límite de Firebug.
-net.Break_On_XHR=Detener en XHR
-net.label.Parameters=Parámetros
-net.label.Parts=Partes
-net.label.Source=Fuente
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Reenviar
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Desactivar caché del navegador
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Mostrar eventos de redibujado
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Mostrar respuestas BFCache
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Detener en siguiente
-script.Disable_Break_On_Next=Deshabilitar siguiente ruptura
-ShowHttpHeaders=Mostrar encabezados HTTP
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S petición;%1$S peticiones
-FromCache=desde la caché
-StopLoading=Detener la carga
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Datos muy grandes)
-ShowComputedStyle=Mostrar estilo interpretado
-StyleGroup-text=Texto
-StyleGroup-background=Fondo
-StyleGroup-box=Modelo de caja
-StyleGroup-layout=Diseño
-StyleGroup-other=Otro
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Copiar color
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Copiar dirección de la imagen
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Abrir imagen en pestaña nueva
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Omitir pila de la barra de herramientas
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Cargar fuente original
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copiar declaración de la regla
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Copiar estilo
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S error;%1$S errores
-moduleManager.title=El panel %S está desactivado
-moduleManager.desc3=Use el menú del icono de la barra de estado de Firebug para activar y desactivar todos los paneles a la vez. Use cada pestaña del panel para controlar un panel individual.
-moduleManager.Enable=Habilitar
-Suspend_Firebug=Suspender Firebug
-Resume_Firebug=Reanudar Firebug
-Reset_Panels_To_Disabled=Restablecer paneles como desactivados
-Open_Console=Abrir consola
-Open_Console_Tooltip=Abrir consola de seguimiento para Firebug.
-Scope_Chain=Ámbito
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=With
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Llamada
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Ventana
-Logs=Logs
-Options=Opciones
-Copy_Stack=Copiar pila
-Copy Exception=Copiar excepción
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Bloqueado
-requestinfo.Resolving=Consultando DNS
-requestinfo.Connecting=Conectando
-requestinfo.Sending=Enviando
-requestinfo.Waiting=Esperando
-requestinfo.Receiving=Recibiendo
-requestinfo.ContentLoad=«DOMContentLoaded» (evento)
-requestinfo.WindowLoad=«load» (evento)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Búsqueda de Firebug
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Siguiente
-search.tip.Next=Search for the next match
-search.Previous=Anterior
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Forzar sensibilidad a mayúsculas
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Insensible a capitalización
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Múltiples archivos
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Utilizar expresión regular
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=Selector CSS
-search.net.Headers=Cabeceras
-search.net.Parameters=Parámetros
-search.net.Response_Bodies=Cuerpo de las respuestas
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persistir
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Mostrar todas las entradas de depuración
-firebug.console.Errors=Errores
-firebug.console.Filter_by_Errors=Filtrar por errores
-firebug.console.Warnings=Avisos
-firebug.console.Filter_by_Warnings=Filtrar por avisos
-firebug.console.Info=Información
-firebug.console.Filter_by_Info=Filtrar por información
-firebug.console.Debug_Info=Información de depuración
-firebug.console.Filter_by_Debug_Info=Filtrar por información de depuración
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Abrir Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Ocultar Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Activar todos los paneles
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Desactivar todos los paneles
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Personalizar atajos
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Opciones
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Habilitar mejoras de accesibilidad
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Restablecer todas las opciones de Firebug
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug en la red
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Mostar el número de errores
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Tamaño del texto
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Aumentar tamaño del texto
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Reducir tamaño del texto
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Tamaño del texto normal
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Sitio web de Firebug...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Documentación...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Atajos de teclado...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Grupo de discusión...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Seguimiento de incidencias...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Donar...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Acerca de...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Buscar
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Reintroducir comando
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Alternar inspección
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Alternar caja de información rápida
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Alternar perfilado
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Enfocar línea de comando
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Enfocar búsqueda de Firebug
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Enfocar editor de observación
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Enfocar localización
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Siguiente objeto
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Anterior objeto
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Personalizar teclas de Firebug
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Abrir Firebug en una ventana nueva
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Cambiar el panel de Firebug a la izquierda
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Cambiar el panel de Firebug a la derecha
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Abrir Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Anterior pestaña de Firebug
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Limpiar consola
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Abrir consola de seguimiento
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Ir atrás
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Ir adelante
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Aumentar tamaño del texto
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Reducir tamaño del texto
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Tamaño de texto normal
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Selector de panel
-customizeShortcuts=Asignaciones de atajos de Firebug
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=panel de herramientas
-a11y.labels.firebug_panels=Paneles de Firebug
-a11y.labels.firebug_side_panels=Paneles laterales de Firebug
-a11y.labels.firebug_window=Ventana de firebug
-a11y.labels.firebug_status=Estado de firebug
-a11y.labels.reset=restablecer
-a11y.labels.reset_shortcut=restablecer atajo %S
-aria.labels.inactive_panel=panel inactivo
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=filas de log
-a11y.labels.call_stack=pila de llamadas
-a11y.labels.document_structure=estructura ded documento
-a11y.labels.title_panel=panel %S
-a11y.labels.title_side_panel=panel lateral %S
-a11y.labels.cached=cacheado
-aria.labels.stack_trace=seguimiento de pila
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=relleno
-a11y.layout.border=borde
-a11y.layout.margin=margen
-a11y.layout.position=posición
-a11y.layout.position_top=posición arriba
-a11y.layout.position_right=posición derecha
-a11y.layout.position_bottom=posición abajo
-a11y.layout.position_left=posición izquierda
-a11y.layout.margin_top=margen superior
-a11y.layout.margin_right=margen derecho
-a11y.layout.margin_bottom=margen inferior
-a11y.layout.margin_left=margen izquierdo
-a11y.layout.border_top=borde superior
-a11y.layout.border_right=borde derecho
-a11y.layout.border_bottom=borde inferior
-a11y.layout.border_left=borde izquierdo
-a11y.layout.padding_top=relleno superior
-a11y.layout.padding_right=relleno derecho
-a11y.layout.padding_bottom=relleno inferior
-a11y.layout.padding_left=relleno izquierdo
-a11y.layout.top=superior
-a11y.layout.right=derecho
-a11y.layout.bottom=inferior
-a11y.layout.left=izquierdo
-a11y.layout.width=ancho
-a11y.layout.height=alto
-a11y.layout.size=tamaño
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=rectángulo delimitador
-a11y.descriptions.press_enter_to_edit_values=pulse retorno seguido del tabulador para editar valores individuales
-a11y.labels.style_rules=reglas de estilo
-aria.labels.inherited_style_rules=reglas de estilo heredadas
-a11y.labels.computed_styles=estilos interpretados
-a11y.labels.dom_properties=propiedades DOM
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=editor en línea
-a11y.labels.value_for_attribute_in_element=valor para atributo %S en elemento %S
-a11y.labels.attribute_for_element=atributo para elemento %S
-a11y.labels.text_contents_for_element=contenidos de texto para elemento %S
-a11y.labels.defined_in_file=definido en %S
-a11y.labels.declarations_for_selector=declaraciones de estilo para selector «%S»
-a11y.labels.property_for_selector=prpiedad CSS para selector: %S
-a11y.labels.value_property_in_selector=valor de propiedad %S en selector %S
-a11y.labels.css_selector=selector CSS
-a11y.labels.source_code_for_file=código fuente para archivo %S
-a11y.labels.press_enter_to_add_new_watch_expression=pulse retorno para añadir una nueva expresión de seguimiento
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=sobreescrito
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=tiene un punto de ruptura condicional
-a11y.updates.has_disabled_break_point=ha desactivado el punto de ruptura
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script suspendido en línea %S en %S, archivo %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=coincidencia encontrada para %S en %S filas de log
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=coincidencia encontrada para %S en línea %S en %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=coincidencia encontrada para %S en elemento %S en la ruta %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=coincidencia encontrada para %S en atributo %S=%S de elemento %S en la ruta %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=coincidencia encontrada para %S en contenido de texto: %S del elemento %S en la ruta %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=coincidencia encontrada para %S en selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=coincidencia encontrada para «%S» en la declaración del estilo %S en el selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=coincidencia encontrada para %S en propiedad DOM %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=coincidencia encontrada para «%S» en %S, %S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=coincidencia encontrada para %S en fila de resumen de red: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=no se encontraron coincidencias para «%S»
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=¿Está seguro de que desea restablecer todas las opciones de Firebug a su valor predeterminado?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Sus modificaciones CSS serán descartadas.\\\\n¿Está seguro que quiere editar la fuente?
-# Console messages
-warning.Console_must_be_enabled=La consola debe estar habilitada
-warning.Command_line_blocked?=¿Línea de comando bloqueada?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Recarga para activar la ventana de la consola
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reargar la página para obtener la fuente
-message.The_resource_from_this_URL_is_not_text=El recurso de esta URL no es texto
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Volver a este panel
-firebug.history.Stay_on_this_panel=Permanecer en este panel
-firebug.history.Go_forward_to_this_panel=Avanzar a este panel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Ir a la página anterior
-firebug.history.Go_forward=Ir a la página siguiente
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=El panel script estaba inactivo durante la carga de la página
-script.suggestion.inactive_during_page_load2=<a>Actualizar</a> para ver todas las fuentes
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript no está activo
-script.suggestion.javascript_not_enabled=Mire Firefox > Herramientas > Opciones > Contenido > Activar JavaScript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Active JavaScript y recargue
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Todos los scripts fueron filtrados
-script.suggestion.all_scripts_filtered=Mire la preferencia del filtro de script en la barra de herramientas o «Mostrar opción fuentes chrome»
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=No hay Javascript en esta página
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=El depurador ya está activo
-script.suggestion.debugger_active=El depurador está parado en un punto de ruptura en otra página.
-script.button.Go_to_that_page=Ir a esa página
-script.warning.debugger_not_activated=Depurador no activado
-script.suggestion.debugger_not_activated=Depurador no activado
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Cerrar
-firebug.View=Ver
-firebug.Help=Ayuda
-firebug.Run=Ejecutar
-firebug.Copy=Copiar
-firebug.History=Historial
-firebug.Run_the_entered_command=Ejecutar el comando introducido
-firebug.Clear_the_Command_Editor=Limpiar el editor de comandos
-firebug.Copy_the_script_as_a_bookmarklet=Copiar el script como un bookmarklet
-firebug.Insert_a_previously_entered_command=Insertar el comando introducido previamente
-firebug.AlwaysOpenInWindow=Abrir siempre en ventana nueva
-firebug.OpenWith=Abrir con un editor
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Sitios...
-firebug.Configure_Editors=Configurar editores
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Ejecutar hasta esta línea
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Inspeccionar
-firebug.InspectElement=Inspeccionar elemento
-firebug.InspectElementWithFirebug=Inspeccionar elemento con Firebug
-firebug.BreakOnErrors=Deternerse en errores
-firebug.InspectTooltip=Haga clic en un elemento en la página para inspeccionar
-firebug.EditHTMLTooltip=Editar este HTML
-firebug.Profile=Perfilar
-firebug.Clear=Limpiar
-firebug.ClearConsole=Limpiar consola
-firebug.ClearTooltip=Limpiar la consola
-firebug.All=Todo
-firebug.Images=Imágenes
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Editores de Firebug configurados
-editors.Editor=Editor
-editors.Executable=Ejecutable
-editors.Launch_Arguments=Argumentos de ejecución
-editors.Add=Añadir
-editors.Remove=Eliminar
-editors.Change=Cambiar
-editors.Move_Up=Mover arriba
-editors.Close=Cerrar
-editors.Browse=Navegar...
-changeEditor.Editor_Configuration=Configuración del editor
-changeEditor.Name=Nombre:
-changeEditor.Executable=Ejecutable:
-changeEditor.CmdLine=Parámetros:
-changeEditor.Supplied_arguments=Argumentos proporcionados por Firebug:
-changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> URL del archivo (si %url no está presente, %file será añadido por defecto)
-changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> ruta al archivo local (o a la copia temporal)
-changeEditor.Line_number=<label class=\'text-link\'>%line</label> número de linea (si disponible)
-changeEditor.Invalid_Application_Path=Ruta de aplicación inválida
-changeEditor.Application_does_not_exist=¡La aplicación especificada no exite!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Editar
-firebug.css.sourceEdit=Modificar código fuente
-firebug.css.sourceEdit.tooltip=Código fuente de la hoja de estilos tal y como lo ha recibido el navegador
-firebug.css.liveEdit=Modificar en tiempo real
-firebug.css.liveEdit.tooltip=Caja de texto con el código CSS interpretado por el navegador
-firebug.EditCSSTooltip=Editar esta hoja de estilos
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Los sitios no son guardados en modo de navegación privada
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Mostrar notificaciones de ruptura
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=Puede habilitar/deshabilitar la notificación de puntos de ruptura en el <a>menú de la pestaña</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Haciendo click en el botón «Deshabilitar» sobrescribe el «depurador» con un punto de ruptura.
-firebug.bon.tooltip.disableDebuggerKeyword2=Crea un punto de ruptura deshabilitado
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(el panel de Script tiene que estar habilitado para usar esta característica)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=No hay objetos hijos
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=más
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S elemento en almacén;%1$S elementos en almacén
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Propiedades del objeto
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(no hay sugerencias)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=El objeto URL ha sido revocado usando el método revokeObjectURL.
-firebug.failedToPreviewImageURL=Fallo al cargar la URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Perfilador de memoria iniciado
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objetos añadidos mientras se perfilaba
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Resultados del perfilador de memoria
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Sesión entera
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(una cadena vacía)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Se ha detectado el complemento Firecookie. Este complemento ha sido integrado en Firebug 1.10 por defecto. Para evitar conflictos, necesita desinstalar Firecookie. \n\nDebe reiniciar para finalizar la desinstalación del complemento.
-cookies.legacy.uninstall=Desinstalar
-cookies.legacy.uninstall_and_restart=Desinstalar y reiniciar
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=API de línea de comandos
-console.cmd.help_title_desc=Presione F1 para abrir la ayuda online de Firebug
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Consola
+panel.tip.console=Permite observar mensajes de consola y ejecutar comandos de JavaScript
+Panel-net=Red
+panel.tip.net=Permite analizar el tráfico de red
+Panel-html=HTML
+panel.tip.html=Permite inspeccionar y manipular los nodos del DOM
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Permite inspeccionar y manipular las hojas de estilo CSS
+Panel-script=Script
+panel.tip.script=Permite depurar JavaScript
+Panel-dom=DOM
+panel.tip.dom=Permite inspeccionar y manipular las propiedades del DOM
+Panel-css=Estilo
+panel.tip.css=Permite inspeccionar y manipular las reglas CSS del nodo DOM seleccionado
+Panel-computed=Interpretado
+panel.tip.computed=Permite inspeccionar los valores de CSS computados del nodo DOM seleccionado
+Panel-layout=Maquetación
+panel.tip.layout=Permite inspeccionar y manipular los datos de distribución del nodo DOM seleccionado
+Panel-domSide=DOM
+panel.tip.domSide=Permite inspeccionar y manipular las propiedades DOM del nodo DOM seleccionado
+Panel-watches=Seguimiento
+panel.tip.watches=Permite inspeccionar las variables de JavaScript disponibles en el marco de pila actual y definir expresiones a vigilar
+Panel-breakpoints=Puntos de ruptura
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Pila
+panel.tip.callstack=Permite observar la pila de llamadas de JavaScript actual
+Panel-scopes=Ámbitos
+firebug.DetachFirebug=Abrir Firebug en una ventana nueva
+firebug.AttachFirebug=Acoplar Firebug al navegador
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Firebug total;%1$S Firebugs totales
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Desactivado
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=En el navegador
+minimized=Minimizado
+enablement.for_all_pages=para todos los sitios
+enablement.on=Activado
+enablement.off=Desactivado
+enablement.Panel_activation_status=Estado de activación del panel:
+none=Cerrado
+Firebug_-_inactive_for_current_website=Firebug - inactivo para el sitio actual
+Activate_Firebug_for_the_current_website=Activar Firebug para el sitio actual
+Minimized=Minimizado
+Minimize_Firebug=Minimizar Firebug
+On_for_all_web_pages=Activar para todos los sitios
+firebug.menu.tip.On_for_all_Web_Sites=Activar Firebug por defecto en todas las webs
+firebug.menu.Clear_Activation_List=Limpiar lista de activación
+firebug.menu.tip.Clear_Activation_List=Vaciar la lista de sitios para los que Firebug está activado
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Localización de UI de Firebug
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Opciones de Firebug
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Mostrar todos los paneles
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=Mostrar errores de JavaScript
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Mostrar advertencias de JavaScript
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Mostrar errores de CSS
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Mostrar traza para los errores
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Mostrar XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Mostrar errores de chrome
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Mostrar mensajes de chrome
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Mostrar errores externos
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Mostrar errores de red
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Advertencias estrictas (penalización de rendimiento)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Historial de comandos
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Mostrar ventana emergente de lista de completado
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Fallo de comprobación
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (línea %S)
+LineAndCol=%S (línea %S, columna %S)
+InstanceLine=%S #%S (línea %S)
+StackItem=%S (%S línea %S)
+SystemItem=<Sistema>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspeccionar en el Panel: %S
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(sin nombre)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Mostrar texto completo
+html.option.tip.Show_Full_Text=No cortar el contenido del elemento
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Mostrar espacios en blanco
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Mostrar comentarios
+html.option.tip.Show_Comments=Show comment nodes
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Resaltar cambios
+html.option.tip.Highlight_Mutations=Resaltar cambios dentro de nodos
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Expandir cambios
+html.option.tip.Expand_Mutations=Expandir la vista del árbol para mostrar los nodos cambiados
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Desplazar cambios hacia la vista
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Mostrar caja de información rápida
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Modelo de caja sombreado
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Desplazar hacia la vista
+html.tip.Scroll_Into_View=Desplazar la página para hacer visible el elemento
+NewAttribute=Atributo nuevo...
+html.tip.New_Attribute=Añadir un nuevo atributo a este elemento
+html.Edit_Node=Editar %S...
+html.Node=Nodo
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Eliminar elemento
+html.Delete_Element=Borrar el elemento del árbol
+DeleteNode=Eliminar nodo
+html.Delete_Node=Borrar el nodo del árbol
+# Quick Info Box
+quickInfo=Información rápida
+computedStyle=Estilo interpretado
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Detener si hay cambios en el HTML
+html.Disable_Break_On_Mutate=Deshabilitar detener si hay cambios en el HTML
+html.label.Break_On_Text_Change=Detener si hay cambios en el texto
+html.label.HTML_Breakpoints=Puntos de ruptura en el HTML
+html.label.Break_On_Attribute_Change=Detener si hay cambios en los atributos
+html.tip.Break_On_Attribute_Change=Para la ejecución de JavaScript cuando un atributo de este elemento cambie
+html.label.Break_On_Child_Addition_or_Removal=Detener si se agregan o eliminan subnodos
+html.tip.Break_On_Child_Addition_or_Removal=Parar la ejecución de JavaScript cuando se añada o elimine un nodo hijo de este elemento
+html.label.Break_On_Element_Removal=Detener si se elimina el elemento
+html.tip.Break_On_Element_Removal=Parar la ejecución de JavaScript cuando se elimine este elemento
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Expandir/Contraer todo
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Ruptura al cambiar la propiedad
+dom.tip.Break_On_Property_Change=Parar la ejecución de JavaScript cuando esta propiedad cambie
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Deshabilitar ruptura al cambiar la propiedad
+dom.label.DOM_Breakpoints=Puntos de ruptura en el DOM
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Editar atributo «%S»...
+html.tip.Edit_Attribute=Editar el valor del atributo "%S" de este elemento
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Eliminar atributo «%S»
+html.tip.Delete_Attribute=Borrar el atributo "%S" de este elemento
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Heredado desde
+SothinkWarning=La extensión Sothink SWF Catcher está impidiendo que Firebug funcione correctamente.<br><br>Por favor lea <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">esta entrada en la sección de preguntas frecuentes de Firebug</a> para más información.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=El rápido zorro marrón salta sobre el perro perezoso. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=No hay reglas. Puede <a>crear una regla</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=Este elemento no tiene reglas de estilo. Puede <a>crear una regla</a> para él.
+EditStyle=Editar estilo del elemento...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Nueva regla...
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Nueva propiedad...
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=Editar «%S»...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=Deshabilitar «%S»
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=Eliminar «%S»
+css.tip.Delete_Prop=Delete the property "%S"
+# Console context menu labels.
+BreakOnThisError=Detenerse en este error
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Detenerse en todos los errores
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Rastrear throw/catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Usar la última línea para los nombres de eval()
+UseMD5ForEvalName=Usar MD5 para los nombres de eval()
+# Breakpoints side panel
+Breakpoints=Puntos de ruptura
+ErrorBreakpoints=Puntos de ruptura de error
+LoggedFunctions=Funciones registradas
+EnableAllBreakpoints=Habilitar todos los puntos de ruptura
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Deshabilitar todos los puntos de ruptura
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Eliminar todos los puntos de ruptura
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Este punto de ruptura parará solo si esta expresión es verdadera:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Eliminar ruptura
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Deshabilitar ruptura
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Habilitar ruptura
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Continuar
+script.balloon.Disable=Deshabilitar
+ScriptsFilterStatic=Mostrar scripts estáticos
+ScriptsFilterEval=Mostrar scripts estáticos y eval
+ScriptsFilterEvent=Mostrar scripts estáticos y de eventos
+ScriptsFilterAll=Mostrar scripts estáticos, eval y de eventos
+ScriptsFilterStaticShort=static
+ScriptsFilterEvalShort=evals
+ScriptsFilterEventShort=events
+ScriptsFilterAllShort=todos
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Expandir todo
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Contraer todo
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Mostrar propiedades definidas por el usuario
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Mostrar funciones definidas por el usuario
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Mostrar propiedades del DOM
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Mostrar funciones del DOM
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Mostrar constantes del DOM
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Mostrar manejadores de evento en línea
+ShowInlineEventHandlersTooltip=Mostrar manejadores de evento en línea disponibles que no están asociados con una función.
+ShowOwnProperties=Mostrar solo propiedades propias
+ShowOwnPropertiesTooltip=No mostrar cadena de propiedades
+ShowEnumerableProperties=Mostrar solo propiedades enumerables
+ShowEnumerablePropertiesTooltip=No mostrar propiedades no enumerables
+NoMembersWarning=No hay propiedades a mostrar para este objeto.
+NewWatch=Nueva expresión de seguimiento...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Agregar seguimiento
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Copiar fuente
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<número> para ir a una línea
+CopyValue=Copiar valor
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Copiar nombre
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Copiar ruta
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Propiedad nueva...
+EditProperty=Editar propiedad...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Editar variable...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Editar seguimiento...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Eliminar propiedad
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Eliminar seguimiento
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Poner punto de ruptura
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Editar condición del punto de ruptura...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=No hay puntos de ruptura en esta página.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Mostrar sólo estilos aplicados
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Mostrar CSS del agente de usuario
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Expandir propiedades abreviadas
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Orden alfabético
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Mostrar estilos específicos de Mozilla
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Pulse cualquier tecla para filtrar la lista
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=relleno
+LayoutBorder=borde
+LayoutMargin=margen
+LayoutPosition=posición
+LayoutAdjacent=adyacente
+position=posición
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Mostrar reglas y guías
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Net panel
+Loading=Cargando...
+Headers=Encabezados
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Restablecer encabezado
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=URL solicitada y método HTTP usado.
+net.header.Status=Estado
+net.header.Status_Tooltip=Estado de la respuesta recibida.
+net.header.Domain=Dominio
+net.header.Domain_Tooltip=Dominio de la petición ejecutada.
+net.header.Size=Tamaño
+net.header.Size_Tooltip=Tamaño de la respuesta recibida.
+net.header.Timeline=Línea de tiempo
+net.header.Timeline_Tooltip=Información detallada acerca de los tiempos de petición y respuesta.
+net.header.Local_IP=IP local
+net.header.Local_IP_Tooltip=Dirección IP local y número de puerto al que la petición está asociada.
+net.header.Remote_IP=IP remota
+net.header.Remote_IP_Tooltip=Dirección IP remota y número de puerto al que la petición está asociada.
+net.header.Protocol=Protocolo
+net.header.Protocol_Tooltip=El protocolo de la URL usado para localizar el recurso en la Web.
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=Puntos de ruputra XHR
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Detener en XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=Ver código fuente
+net.headers.pretty_print=Vista con formato
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Multimedia
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Envío
+Put=Establecer
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Respuesta
+URLParameters=Parámetros
+Cache=Caché
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Información general
+fontviewer.Meta_Data=Meta datos
+fontviewer.view_source=ver fuente
+fontviewer.Preview=Previsualizar
+fontviewer.view_characters=ver caracteres
+fontviewer.pretty_print=impresión bonita
+fontviewer.view_sample=ver ejemplo
+fontviewer.uniqueid=ID único
+fontviewer.vendor=Fabricante
+fontviewer.license=Licencia
+fontviewer.description=Descripción
+fontviewer.copyright=Copyright
+fontviewer.credits=Créditos
+fontviewer.trademark=Marca registrada
+fontviewer.licensee=Licencia
+fontviewer.extension=Extensión
+fontviewer.pangram=El rápido zorro marrón salta sobre el perro perezoso
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Ordenar por clave
+jsonviewer.do_not_sort=No ordenar
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copiar \\\"%S\\\" como JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Encabezados de la petición
+ResponseHeaders=Encabezados de la respuesta
+CachedResponseHeaders=Cabeceras de respuesta desde caché
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=El límite del log de Firebug ha sido alcanzado. %1$S entrada no mostrada.; El límite del log de Firebug ha sido alcanzado. %1$S entradas no mostradas.
+LimitPrefs=Preferencias
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Para cambiar el límite, modifique: %S
+Refresh=Refrescar
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Abrir en pestaña nueva
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Abrir respuesta en pestaña nueva
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Perfilar
+ProfilerStarted=El perfilador está corriendo. Haga clic en «Perfilar» nuevamente para ver el informe.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S llamada);(%1$Sms, %2$S llamadas)
+NothingToProfile=Ninguna actividad para perfilar.
+PercentTooltip=Porcentaje de tiempo utilizado en esta función.
+CallsHeaderTooltip=Número de veces que la función fue llamada.
+OwnTimeHeaderTooltip=Tiempo empleado en la función, excluyendo llamadas anidadas.
+TimeHeaderTooltip=Tiempo empleado en la función, incluyendo llamadas anidadas.
+AvgHeaderTooltip=Tiempo promedio, incluyendo llamadas a funciones.
+MinHeaderTooltip=Tiempo mínimo, incluyendo llamadas a funciones.
+MaxHeaderTooltip=Tiempo máximo, incluyendo llamadas a funciones.
+ProfileButton.Enabled.Tooltip=Perfilar el tiempo de ejecución de JavaScript.
+ProfileButton.Disabled.Tooltip=Perfilar el tiempo de ejecución de JavaScript (El panel Script debe estar habilitado).
+Function=Función
+Percent=Porcentaje
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Llamadas
+OwnTime=Tiempo propio
+Time=Tiempo
+Avg=Promedio
+Min=Mínimo
+Max=Máximo
+File=Archivo
+# Support for standard actions.
+Copy=Copiar
+Cut=Cortar
+Remove=Eliminar
+Delete=Delete
+Paste=Pegar
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Copiar innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Copiar XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Copiar ruta CSS
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Copiar dirección
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Copiar dirección con parámetros
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Copiar encabezados de la petición
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Copiar encabezados de la respuesta
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Copiar el cuerpo de la respuesta
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Copiar el error
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Copiar la función
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Registrar llamadas a «%S»
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Registrar eventos
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Habilitado
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=La consola de Firebug no soporta «%S»
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=La línea de comandos de Firebug no soporta «%S»
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Deshabilitar detención en todos los errores
+console.Break_On_All_Errors=Detener en todos los errores
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Detener en este error
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript está desactivado en sus preferencias de Firefox. Si desea usar la ventana de la consola, por favor active está opción en «Herramientas -> Opciones -> Contenido -> Activar JavaScript»
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=Hay demasiados elementos en el array para resaltarlos en la página (el límite actual es %S).\\\\nVéa la preferencia «extensions.firebug.multiHighlightLimit».
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=La linea de comandos de Firebug está desactivada para las páginas XML. Puede <a>cambiar a HTML</a> para activarla.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Cuerpo de la respuesta
+net.sizeinfo.Post_Body=Cuerpo de la petición
+net.sizeinfo.Total_Sent=Total enviados
+net.sizeinfo.Total_Received=Total recibidos
+net.sizeinfo.Including_HTTP_Headers=Incluyendo cabeceras HTTP
+net.ActivationMessage=Panel de red activado. Cualquier petición mientras el panel estaba desactivado no se muestra.
+net.responseSizeLimitMessage=Se ha alcanzado el límite del tamaño de respuesta de Firebug. Haga clic <a>aquí</a> para abrir la respuesta completa en una nueva pestaña de Firefox.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Los datos de la petición superan el tamaño límite de Firebug.
+net.Break_On_XHR=Detener en XHR
+net.label.Parameters=Parámetros
+net.label.Parts=Partes
+net.label.Source=Fuente
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Reenviar
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Desactivar caché del navegador
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Mostrar eventos de redibujado
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Mostrar respuestas BFCache
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Detener en siguiente
+script.Disable_Break_On_Next=Deshabilitar siguiente ruptura
+ShowHttpHeaders=Mostrar encabezados HTTP
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S petición;%1$S peticiones
+FromCache=desde la caché
+StopLoading=Detener la carga
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Datos muy grandes)
+ShowComputedStyle=Mostrar estilo interpretado
+StyleGroup-text=Texto
+StyleGroup-background=Fondo
+StyleGroup-box=Modelo de caja
+StyleGroup-layout=Diseño
+StyleGroup-other=Otro
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Copiar color
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Copiar dirección de la imagen
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Abrir imagen en pestaña nueva
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Omitir pila de la barra de herramientas
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Cargar fuente original
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copiar declaración de la regla
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Copiar estilo
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S error;%1$S errores
+moduleManager.title=El panel %S está desactivado
+moduleManager.desc3=Use el menú del icono de la barra de estado de Firebug para activar y desactivar todos los paneles a la vez. Use cada pestaña del panel para controlar un panel individual.
+moduleManager.Enable=Habilitar
+Suspend_Firebug=Suspender Firebug
+Resume_Firebug=Reanudar Firebug
+Reset_Panels_To_Disabled=Restablecer paneles como desactivados
+Open_Console=Abrir consola
+Open_Console_Tooltip=Abrir consola de seguimiento para Firebug.
+Scope_Chain=Ámbito
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=With
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Llamada
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Ventana
+Logs=Logs
+Options=Opciones
+Copy_Stack=Copiar pila
+Copy Exception=Copiar excepción
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Bloqueado
+requestinfo.Resolving=Consultando DNS
+requestinfo.Connecting=Conectando
+requestinfo.Sending=Enviando
+requestinfo.Waiting=Esperando
+requestinfo.Receiving=Recibiendo
+requestinfo.ContentLoad=«DOMContentLoaded» (evento)
+requestinfo.WindowLoad=«load» (evento)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Búsqueda de Firebug
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Siguiente
+search.tip.Next=Search for the next match
+search.Previous=Anterior
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Forzar sensibilidad a mayúsculas
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Insensible a capitalización
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Múltiples archivos
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Utilizar expresión regular
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=Selector CSS
+search.net.Headers=Cabeceras
+search.net.Parameters=Parámetros
+search.net.Response_Bodies=Cuerpo de las respuestas
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persistir
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Mostrar todas las entradas de depuración
+firebug.console.Errors=Errores
+firebug.console.Filter_by_Errors=Filtrar por errores
+firebug.console.Warnings=Avisos
+firebug.console.Filter_by_Warnings=Filtrar por avisos
+firebug.console.Info=Información
+firebug.console.Filter_by_Info=Filtrar por información
+firebug.console.Debug_Info=Información de depuración
+firebug.console.Filter_by_Debug_Info=Filtrar por información de depuración
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Abrir Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Ocultar Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Activar todos los paneles
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Desactivar todos los paneles
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Personalizar atajos
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Opciones
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Habilitar mejoras de accesibilidad
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Restablecer todas las opciones de Firebug
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug en la red
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Mostar el número de errores
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Tamaño del texto
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Aumentar tamaño del texto
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Reducir tamaño del texto
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Tamaño del texto normal
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Sitio web de Firebug...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Documentación...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Atajos de teclado...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Grupo de discusión...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Seguimiento de incidencias...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Donar...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Acerca de...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Buscar
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Reintroducir comando
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Alternar inspección
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Alternar caja de información rápida
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Alternar perfilado
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Enfocar línea de comando
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Enfocar búsqueda de Firebug
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Enfocar editor de observación
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Enfocar localización
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Siguiente objeto
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Anterior objeto
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Personalizar teclas de Firebug
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Abrir Firebug en una ventana nueva
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Cambiar el panel de Firebug a la izquierda
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Cambiar el panel de Firebug a la derecha
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Abrir Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Anterior pestaña de Firebug
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Limpiar consola
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Abrir consola de seguimiento
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Ir atrás
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Ir adelante
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Aumentar tamaño del texto
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Reducir tamaño del texto
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Tamaño de texto normal
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Selector de panel
+customizeShortcuts=Asignaciones de atajos de Firebug
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=panel de herramientas
+a11y.labels.firebug_panels=Paneles de Firebug
+a11y.labels.firebug_side_panels=Paneles laterales de Firebug
+a11y.labels.firebug_window=Ventana de firebug
+a11y.labels.firebug_status=Estado de firebug
+a11y.labels.reset=restablecer
+a11y.labels.reset_shortcut=restablecer atajo %S
+aria.labels.inactive_panel=panel inactivo
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=filas de log
+a11y.labels.call_stack=pila de llamadas
+a11y.labels.document_structure=estructura ded documento
+a11y.labels.title_panel=panel %S
+a11y.labels.title_side_panel=panel lateral %S
+a11y.labels.cached=cacheado
+aria.labels.stack_trace=seguimiento de pila
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=relleno
+a11y.layout.border=borde
+a11y.layout.margin=margen
+a11y.layout.position=posición
+a11y.layout.position_top=posición arriba
+a11y.layout.position_right=posición derecha
+a11y.layout.position_bottom=posición abajo
+a11y.layout.position_left=posición izquierda
+a11y.layout.margin_top=margen superior
+a11y.layout.margin_right=margen derecho
+a11y.layout.margin_bottom=margen inferior
+a11y.layout.margin_left=margen izquierdo
+a11y.layout.border_top=borde superior
+a11y.layout.border_right=borde derecho
+a11y.layout.border_bottom=borde inferior
+a11y.layout.border_left=borde izquierdo
+a11y.layout.padding_top=relleno superior
+a11y.layout.padding_right=relleno derecho
+a11y.layout.padding_bottom=relleno inferior
+a11y.layout.padding_left=relleno izquierdo
+a11y.layout.top=superior
+a11y.layout.right=derecho
+a11y.layout.bottom=inferior
+a11y.layout.left=izquierdo
+a11y.layout.width=ancho
+a11y.layout.height=alto
+a11y.layout.size=tamaño
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=rectángulo delimitador
+a11y.descriptions.press_enter_to_edit_values=pulse retorno seguido del tabulador para editar valores individuales
+a11y.labels.style_rules=reglas de estilo
+aria.labels.inherited_style_rules=reglas de estilo heredadas
+a11y.labels.computed_styles=estilos interpretados
+a11y.labels.dom_properties=propiedades DOM
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=editor en línea
+a11y.labels.value_for_attribute_in_element=valor para atributo %S en elemento %S
+a11y.labels.attribute_for_element=atributo para elemento %S
+a11y.labels.text_contents_for_element=contenidos de texto para elemento %S
+a11y.labels.defined_in_file=definido en %S
+a11y.labels.declarations_for_selector=declaraciones de estilo para selector «%S»
+a11y.labels.property_for_selector=prpiedad CSS para selector: %S
+a11y.labels.value_property_in_selector=valor de propiedad %S en selector %S
+a11y.labels.css_selector=selector CSS
+a11y.labels.source_code_for_file=código fuente para archivo %S
+a11y.labels.press_enter_to_add_new_watch_expression=pulse retorno para añadir una nueva expresión de seguimiento
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=sobreescrito
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=tiene un punto de ruptura condicional
+a11y.updates.has_disabled_break_point=ha desactivado el punto de ruptura
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script suspendido en línea %S en %S, archivo %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=coincidencia encontrada para %S en %S filas de log
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=coincidencia encontrada para %S en línea %S en %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=coincidencia encontrada para %S en elemento %S en la ruta %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=coincidencia encontrada para %S en atributo %S=%S de elemento %S en la ruta %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=coincidencia encontrada para %S en contenido de texto: %S del elemento %S en la ruta %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=coincidencia encontrada para %S en selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=coincidencia encontrada para «%S» en la declaración del estilo %S en el selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=coincidencia encontrada para %S en propiedad DOM %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=coincidencia encontrada para «%S» en %S, %S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=coincidencia encontrada para %S en fila de resumen de red: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=no se encontraron coincidencias para «%S»
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=¿Está seguro de que desea restablecer todas las opciones de Firebug a su valor predeterminado?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Sus modificaciones CSS serán descartadas.\\\\n¿Está seguro que quiere editar la fuente?
+# Console messages
+warning.Console_must_be_enabled=La consola debe estar habilitada
+warning.Command_line_blocked?=¿Línea de comando bloqueada?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Recarga para activar la ventana de la consola
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reargar la página para obtener la fuente
+message.The_resource_from_this_URL_is_not_text=El recurso de esta URL no es texto
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Volver a este panel
+firebug.history.Stay_on_this_panel=Permanecer en este panel
+firebug.history.Go_forward_to_this_panel=Avanzar a este panel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Ir a la página anterior
+firebug.history.Go_forward=Ir a la página siguiente
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=El panel script estaba inactivo durante la carga de la página
+script.suggestion.inactive_during_page_load2=<a>Actualizar</a> para ver todas las fuentes
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript no está activo
+script.suggestion.javascript_not_enabled=Mire Firefox > Herramientas > Opciones > Contenido > Activar JavaScript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Active JavaScript y recargue
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Todos los scripts fueron filtrados
+script.suggestion.all_scripts_filtered=Mire la preferencia del filtro de script en la barra de herramientas o «Mostrar opción fuentes chrome»
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=No hay Javascript en esta página
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=El depurador ya está activo
+script.suggestion.debugger_active=El depurador está parado en un punto de ruptura en otra página.
+script.button.Go_to_that_page=Ir a esa página
+script.warning.debugger_not_activated=Depurador no activado
+script.suggestion.debugger_not_activated=Depurador no activado
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Cerrar
+firebug.View=Ver
+firebug.Help=Ayuda
+firebug.Run=Ejecutar
+firebug.Copy=Copiar
+firebug.History=Historial
+firebug.Run_the_entered_command=Ejecutar el comando introducido
+firebug.Clear_the_Command_Editor=Limpiar el editor de comandos
+firebug.Copy_the_script_as_a_bookmarklet=Copiar el script como un bookmarklet
+firebug.Insert_a_previously_entered_command=Insertar el comando introducido previamente
+firebug.AlwaysOpenInWindow=Abrir siempre en ventana nueva
+firebug.OpenWith=Abrir con un editor
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Sitios...
+firebug.Configure_Editors=Configurar editores
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Ejecutar hasta esta línea
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Inspeccionar
+firebug.InspectElement=Inspeccionar elemento
+firebug.InspectElementWithFirebug=Inspeccionar elemento con Firebug
+firebug.BreakOnErrors=Deternerse en errores
+firebug.InspectTooltip=Haga clic en un elemento en la página para inspeccionar
+firebug.EditHTMLTooltip=Editar este HTML
+firebug.Profile=Perfilar
+firebug.Clear=Limpiar
+firebug.ClearConsole=Limpiar consola
+firebug.ClearTooltip=Limpiar la consola
+firebug.All=Todo
+firebug.Images=Imágenes
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Editores de Firebug configurados
+editors.Editor=Editor
+editors.Executable=Ejecutable
+editors.Launch_Arguments=Argumentos de ejecución
+editors.Add=Añadir
+editors.Remove=Eliminar
+editors.Change=Cambiar
+editors.Move_Up=Mover arriba
+editors.Close=Cerrar
+editors.Browse=Navegar...
+changeEditor.Editor_Configuration=Configuración del editor
+changeEditor.Name=Nombre:
+changeEditor.Executable=Ejecutable:
+changeEditor.CmdLine=Parámetros:
+changeEditor.Supplied_arguments=Argumentos proporcionados por Firebug:
+changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> URL del archivo (si %url no está presente, %file será añadido por defecto)
+changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> ruta al archivo local (o a la copia temporal)
+changeEditor.Line_number=<label class=\'text-link\'>%line</label> número de linea (si disponible)
+changeEditor.Invalid_Application_Path=Ruta de aplicación inválida
+changeEditor.Application_does_not_exist=¡La aplicación especificada no exite!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Editar
+firebug.css.sourceEdit=Modificar código fuente
+firebug.css.sourceEdit.tooltip=Código fuente de la hoja de estilos tal y como lo ha recibido el navegador
+firebug.css.liveEdit=Modificar en tiempo real
+firebug.css.liveEdit.tooltip=Caja de texto con el código CSS interpretado por el navegador
+firebug.EditCSSTooltip=Editar esta hoja de estilos
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Los sitios no son guardados en modo de navegación privada
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Mostrar notificaciones de ruptura
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=Puede habilitar/deshabilitar la notificación de puntos de ruptura en el <a>menú de la pestaña</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Haciendo click en el botón «Deshabilitar» sobrescribe el «depurador» con un punto de ruptura.
+firebug.bon.tooltip.disableDebuggerKeyword2=Crea un punto de ruptura deshabilitado
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(el panel de Script tiene que estar habilitado para usar esta característica)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=No hay objetos hijos
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=más
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S elemento en almacén;%1$S elementos en almacén
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Propiedades del objeto
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(no hay sugerencias)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=El objeto URL ha sido revocado usando el método revokeObjectURL.
+firebug.failedToPreviewImageURL=Fallo al cargar la URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Perfilador de memoria iniciado
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objetos añadidos mientras se perfilaba
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Resultados del perfilador de memoria
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Sesión entera
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(una cadena vacía)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Se ha detectado el complemento Firecookie. Este complemento ha sido integrado en Firebug 1.10 por defecto. Para evitar conflictos, necesita desinstalar Firecookie. \n\nDebe reiniciar para finalizar la desinstalación del complemento.
+cookies.legacy.uninstall=Desinstalar
+cookies.legacy.uninstall_and_restart=Desinstalar y reiniciar
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=API de línea de comandos
+console.cmd.help_title_desc=Presione F1 para abrir la ayuda online de Firebug
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/eu/cookies.properties b/locale/eu/cookies.properties
index 2c44ab9..960d3b0 100644
--- a/locale/eu/cookies.properties
+++ b/locale/eu/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookie-ak
-panel.tip.cookies=Baimendu cookie-ak ikuskatu eta manipulatzea
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Saioa
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Onartu guneetako cookie-ak
-cookies.tip.AllowGlobally=Onartu cookie guztiak modu lehenetsian edo blokeatu cookie guztiak modu lehenetsian
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Erakutsi cookie-en gertaerak
-cookies.tip.showCookieEvents=Erregistratu kontsolan cookie-en gertaerak (aldatu, ezabatu)
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Garbitu cookie-ak ukatzean
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Ebaki
-cookies.Copy=Kopiatu
-cookies.CopyAll=Kopiatu dena
-cookies.Paste=Itsatsi
-cookies.Delete=Ezabatu
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Garbitu balioa
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Editatu
-cookies.Accept=Onartu
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Berrezarri goiburua
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=Cookie-ak beti edo inoiz ez erabiltzeko baimena zein webgunek duten zehatz dezakezu.\nIdatzi kudeatu nahi duzun gunearen helbide zehatza eta klikatu Blokeatu,\nBaimendu saio honetarako edo Baimendu.
-cookies.ExceptionsTitle=Salbuespenak - Cookie-ak
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Laguntza cookie-en monitorizazioan
-cookies.HostEnable=Gaitu cookie-en panela %S(r)entzat
-cookies.HostDisable=Desgaitu cookie-en panela %S(r)entzat
-cookies.Permissions=Gaitu edo desgaitu cookie-en panela
-cookies.PermissionsIntro=Aukeratu zein webgunetan aktibatuko den cookie-en panela
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=Sistemako orrialdeak
-cookies.LocalFiles=Fitxategi lokalak
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Zerrendako cookie guztiak kendu nahi dituzu?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Zerrendako saio cookie-ak kendu nahi dituzu?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=%S(e)ko cookie guztiak kendu nahi dituzu?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Ez erakutsi mezu hau berriro
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Berretsi cookie-a kentzea
-cookies.tip.Confirm_cookie_removal=Hautatuz gero berresteko elkarrizketa-koadro bat bistaratuko da zerrendako cookie guztiak ezabatu aurretik.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Kendu zerrendako cookie guztiak.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Kendu saio cookie-ak
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Kendu zerrendako saio cookie guztiak.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Sortu %S(r)entzako cookie berri bat
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Balioa
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Kudeatu cookie-en baimenak %S(r)entzat
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=Cookie guztiak kendu dira.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=Saio cookie guztiak kendu dira.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Ukatutako cookie-ak:
-cookies.console.nocookiesreceived=Ez da cookie-rik jaso
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie-a
-cookies.console.deleted=ezabatuta
-cookies.console.added=gehituta
-cookies.console.changed=aldatuta
-cookies.console.cleared=garbituta
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domeinua
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Segurua
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Onartua
-cookies.status.downgraded=Degradatuta
-cookies.status.flagged=Markatuta
-cookies.status.rejected=Ukatua
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Balioa
-cookies.info.rawdatatab.Raw_Data=Datu gordinak
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Lehenetsia (Onartu saio cookie-ak)
-cookies.default.thirdPartySession=Lehenetsia (Onartu saio cookie-ak)
-cookies.default.thirdParty=Lehenetsia (Onartu cookie-ak)
-cookies.default.allow=Lehenetsia (Onartu cookie-ak)
-cookies.default.deny=Lehenetsia (Ukatu cookie-ak)
-cookies.default.warn=Lehenetsia (Abisatu cookie-a onartu baino lehen)
-cookies.host.session=Onartu %S-tik datozen saio cookie-ak
-cookies.host.accept=Onartu %S(t)ik datozen cookie-ak
-cookies.host.reject=Ukatu %S(t)ik datozen cookie-ak
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie-aren izena ez da baliozkoa.
-cookies.edit.invalidhost=Cookie-aren ostalaria ez da baliozkoa.
-cookies.edit.invalidpath=Cookie-aren bidea ez da baliozkoa.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Izena
-cookies.header.value=Balioa
-cookies.header.rawValue=Balio gordina
-cookies.header.domain=Domeinua
-cookies.header.size=Tamaina
-cookies.header.path=Bidea
-cookies.header.expires=Iraungitze data
-cookies.header.security=Segurtasuna
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Cookie-aren izena
-cookies.header.value.tooltip=Cookie-rako gordetako balioa
-cookies.header.rawValue.tooltip=Cookie-rako gordetako balio gordina
-cookies.header.domain.tooltip=Cookie-a gorde duen domeinua
-cookies.header.size.tooltip=Gordetako cookie-aren tamaina
-cookies.header.path.tooltip=Cookie-a aktibatzen den karpeta
-cookies.header.expires.tooltip=Cookie-aren iraungitze data
-cookies.header.security.tooltip=Cookie seguru bat den ala ez erakusten du
-cookies.header.httponly.tooltip=Cookie-a HTTP only den erakusten du
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Jasotako cookie-ak
-cookies.netinfo.Sent_Cookies=Bidalitako cookie-ak
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Bide iragazkia
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookie-ak
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Esportatu cookie guztiak
-cookies.export.Export_All_Cookies_Tooltip=Esportatu arakatzailearen cookie guztiak cookies.txt fitxategira
-cookies.export.Export_For_Site=Esportatu gune honen cookie-ak
-cookies.export.Export_For_Site_Tooltip=Esportatu %S(r)en cookie-ak cookies.txt fitxategira
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=Ez dago orri aktiborik.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Eten cookie-a aldatzen denean
-cookies.Disable_Break_On_Cookie=Desgaitu cookie-a aldatzen denean etetea
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie eten-puntuak
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Eten '%S' cookie-an
-cookies.menu.tooltip.Break_On_Cookie=Eten '%S'(e)n kendu edo aldatzen denean
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Editatu eten-puntuaren baldintza
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Eten-puntuaren baldintzaren ebaluzioak huts egiten du
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Kendu cookie-ak
-cookies.Create=Sortu cookie-a
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Tresnak
-cookies.ToolsTooltip=Tresnak
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Erakutsi cookie guztiak
-cookies.ViewAllTooltip=Ireki integratutako cookie kudeatzailea
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Webguneen baimenak
-cookies.ViewExceptionsTooltip=Ikusi baimendutako edo debekatutako webguneen zerrenda
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Iragazkia
-cookies.FilterTooltip=Erabili emandako aukerak cookie-en zerrenda iragazteko
-cookies.filter.byPath=Iragazi cookie-ak uneko bidearen arabera
-cookies.filter.byPathTooltip=Erakutsi uneko bidearekin bat datozen cookie-ak soilik
-cookies.filter.showRejectedCookies=Erakutsi ukatutako cookie-ak
-cookies.filter.showRejectedCookiesTooltip=Bistaratu zerrendan ukatutako cookie-ak ere.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Editatu cookie-a
-cookies.edit.name.label=Izena:
-cookies.edit.domain.label=Ostalaria:
-cookies.edit.path.label=Bidea:
-cookies.edit.expire.label=Iraungitze data:
-cookies.edit.value.label=Balioa:
-cookies.edit.secure.label=Cookie segurua
-cookies.edit.httponly.label=HTTP soilik
-cookies.edit.session.label=Saioa
-cookies.edit.urlEncode.label=URL kodeketa balioa
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookie-ak
-cookies.console.Filter_By_Cookies=Iragazi cookie-en arabera
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Kendu cookie guztiak
-cookie.sizeinfo.Size=Tamaina
-cookie.sizeinfo.Raw_Size=Tamaina gordina
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookie-ak
+panel.tip.cookies=Baimendu cookie-ak ikuskatu eta manipulatzea
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Saioa
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Onartu guneetako cookie-ak
+cookies.tip.AllowGlobally=Onartu cookie guztiak modu lehenetsian edo blokeatu cookie guztiak modu lehenetsian
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Erakutsi cookie-en gertaerak
+cookies.tip.showCookieEvents=Erregistratu kontsolan cookie-en gertaerak (aldatu, ezabatu)
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Garbitu cookie-ak ukatzean
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Ebaki
+cookies.Copy=Kopiatu
+cookies.CopyAll=Kopiatu dena
+cookies.Paste=Itsatsi
+cookies.Delete=Ezabatu
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Garbitu balioa
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Editatu
+cookies.Accept=Onartu
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Berrezarri goiburua
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=Cookie-ak beti edo inoiz ez erabiltzeko baimena zein webgunek duten zehatz dezakezu.\nIdatzi kudeatu nahi duzun gunearen helbide zehatza eta klikatu Blokeatu,\nBaimendu saio honetarako edo Baimendu.
+cookies.ExceptionsTitle=Salbuespenak - Cookie-ak
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Laguntza cookie-en monitorizazioan
+cookies.HostEnable=Gaitu cookie-en panela %S(r)entzat
+cookies.HostDisable=Desgaitu cookie-en panela %S(r)entzat
+cookies.Permissions=Gaitu edo desgaitu cookie-en panela
+cookies.PermissionsIntro=Aukeratu zein webgunetan aktibatuko den cookie-en panela
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=Sistemako orrialdeak
+cookies.LocalFiles=Fitxategi lokalak
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Zerrendako cookie guztiak kendu nahi dituzu?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Zerrendako saio cookie-ak kendu nahi dituzu?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=%S(e)ko cookie guztiak kendu nahi dituzu?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Ez erakutsi mezu hau berriro
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Berretsi cookie-a kentzea
+cookies.tip.Confirm_cookie_removal=Hautatuz gero berresteko elkarrizketa-koadro bat bistaratuko da zerrendako cookie guztiak ezabatu aurretik.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Kendu zerrendako cookie guztiak.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Kendu saio cookie-ak
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Kendu zerrendako saio cookie guztiak.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Sortu %S(r)entzako cookie berri bat
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Balioa
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Kudeatu cookie-en baimenak %S(r)entzat
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=Cookie guztiak kendu dira.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=Saio cookie guztiak kendu dira.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Ukatutako cookie-ak:
+cookies.console.nocookiesreceived=Ez da cookie-rik jaso
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie-a
+cookies.console.deleted=ezabatuta
+cookies.console.added=gehituta
+cookies.console.changed=aldatuta
+cookies.console.cleared=garbituta
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domeinua
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Segurua
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Onartua
+cookies.status.downgraded=Degradatuta
+cookies.status.flagged=Markatuta
+cookies.status.rejected=Ukatua
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Balioa
+cookies.info.rawdatatab.Raw_Data=Datu gordinak
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Lehenetsia (Onartu saio cookie-ak)
+cookies.default.thirdPartySession=Lehenetsia (Onartu saio cookie-ak)
+cookies.default.thirdParty=Lehenetsia (Onartu cookie-ak)
+cookies.default.allow=Lehenetsia (Onartu cookie-ak)
+cookies.default.deny=Lehenetsia (Ukatu cookie-ak)
+cookies.default.warn=Lehenetsia (Abisatu cookie-a onartu baino lehen)
+cookies.host.session=Onartu %S-tik datozen saio cookie-ak
+cookies.host.accept=Onartu %S(t)ik datozen cookie-ak
+cookies.host.reject=Ukatu %S(t)ik datozen cookie-ak
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie-aren izena ez da baliozkoa.
+cookies.edit.invalidhost=Cookie-aren ostalaria ez da baliozkoa.
+cookies.edit.invalidpath=Cookie-aren bidea ez da baliozkoa.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Izena
+cookies.header.value=Balioa
+cookies.header.rawValue=Balio gordina
+cookies.header.domain=Domeinua
+cookies.header.size=Tamaina
+cookies.header.path=Bidea
+cookies.header.expires=Iraungitze data
+cookies.header.security=Segurtasuna
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Cookie-aren izena
+cookies.header.value.tooltip=Cookie-rako gordetako balioa
+cookies.header.rawValue.tooltip=Cookie-rako gordetako balio gordina
+cookies.header.domain.tooltip=Cookie-a gorde duen domeinua
+cookies.header.size.tooltip=Gordetako cookie-aren tamaina
+cookies.header.path.tooltip=Cookie-a aktibatzen den karpeta
+cookies.header.expires.tooltip=Cookie-aren iraungitze data
+cookies.header.security.tooltip=Cookie seguru bat den ala ez erakusten du
+cookies.header.httponly.tooltip=Cookie-a HTTP only den erakusten du
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Jasotako cookie-ak
+cookies.netinfo.Sent_Cookies=Bidalitako cookie-ak
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Bide iragazkia
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookie-ak
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Esportatu cookie guztiak
+cookies.export.Export_All_Cookies_Tooltip=Esportatu arakatzailearen cookie guztiak cookies.txt fitxategira
+cookies.export.Export_For_Site=Esportatu gune honen cookie-ak
+cookies.export.Export_For_Site_Tooltip=Esportatu %S(r)en cookie-ak cookies.txt fitxategira
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=Ez dago orri aktiborik.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Eten cookie-a aldatzen denean
+cookies.Disable_Break_On_Cookie=Desgaitu cookie-a aldatzen denean etetea
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie eten-puntuak
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Eten '%S' cookie-an
+cookies.menu.tooltip.Break_On_Cookie=Eten '%S'(e)n kendu edo aldatzen denean
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Editatu eten-puntuaren baldintza
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Eten-puntuaren baldintzaren ebaluzioak huts egiten du
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Kendu cookie-ak
+cookies.Create=Sortu cookie-a
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Tresnak
+cookies.ToolsTooltip=Tresnak
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Erakutsi cookie guztiak
+cookies.ViewAllTooltip=Ireki integratutako cookie kudeatzailea
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Webguneen baimenak
+cookies.ViewExceptionsTooltip=Ikusi baimendutako edo debekatutako webguneen zerrenda
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Iragazkia
+cookies.FilterTooltip=Erabili emandako aukerak cookie-en zerrenda iragazteko
+cookies.filter.byPath=Iragazi cookie-ak uneko bidearen arabera
+cookies.filter.byPathTooltip=Erakutsi uneko bidearekin bat datozen cookie-ak soilik
+cookies.filter.showRejectedCookies=Erakutsi ukatutako cookie-ak
+cookies.filter.showRejectedCookiesTooltip=Bistaratu zerrendan ukatutako cookie-ak ere.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Editatu cookie-a
+cookies.edit.name.label=Izena:
+cookies.edit.domain.label=Ostalaria:
+cookies.edit.path.label=Bidea:
+cookies.edit.expire.label=Iraungitze data:
+cookies.edit.value.label=Balioa:
+cookies.edit.secure.label=Cookie segurua
+cookies.edit.httponly.label=HTTP soilik
+cookies.edit.session.label=Saioa
+cookies.edit.urlEncode.label=URL kodeketa balioa
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookie-ak
+cookies.console.Filter_By_Cookies=Iragazi cookie-en arabera
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Kendu cookie guztiak
+cookie.sizeinfo.Size=Tamaina
+cookie.sizeinfo.Raw_Size=Tamaina gordina
diff --git a/locale/eu/firebug-amo.properties b/locale/eu/firebug-amo.properties
index c7f4c0e..2eeb5c5 100644
--- a/locale/eu/firebug-amo.properties
+++ b/locale/eu/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug Firefox-ekin integratzen da garapen-tresnen indarra zure esku izan dezazun nabigatzen duzun bitartean. Edozein webguneren CSS, HTML eta JavaScript editatu, araztu eta monitorizatu dezakezu denbora errealean...\n\nFirebug 1.6k Firefox 3.6 edo berriagoa eskatzen du.
-firebug.amo.description=Firebug Firefox-ekin integratzen da garapen-tresnen indarra zure esku izan dezazun nabigatzen duzun bitartean. Edozein webguneren CSS, HTML eta JavaScript editatu, araztu eta monitorizatu dezakezu denbora errealean.\n\nBisitatu Firebug-en webgunea dokumentazioa eta pantaila-argazkiak ikusi eta eztabaidaguneetan parte hartzeko: http://getfirebug.com
-firebug.amo.developer.comments=Arazorik baduzu irakurri Firebug-en Maiz Egindako Galderak (MEG).\n\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug Firefox-ekin integratzen da garapen-tresnen indarra zure esku izan dezazun nabigatzen duzun bitartean. Edozein webguneren CSS, HTML eta JavaScript editatu, araztu eta monitorizatu dezakezu denbora errealean...\n\nFirebug 1.6k Firefox 3.6 edo berriagoa eskatzen du.
+firebug.amo.description=Firebug Firefox-ekin integratzen da garapen-tresnen indarra zure esku izan dezazun nabigatzen duzun bitartean. Edozein webguneren CSS, HTML eta JavaScript editatu, araztu eta monitorizatu dezakezu denbora errealean.\n\nBisitatu Firebug-en webgunea dokumentazioa eta pantaila-argazkiak ikusi eta eztabaidaguneetan parte hartzeko: http://getfirebug.com
+firebug.amo.developer.comments=Arazorik baduzu irakurri Firebug-en Maiz Egindako Galderak (MEG).\n\nhttp://getfirebug.com/faq.html
diff --git a/locale/eu/firebug-tracing.properties b/locale/eu/firebug-tracing.properties
index c73a553..b85169a 100644
--- a/locale/eu/firebug-tracing.properties
+++ b/locale/eu/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Ireki Firebug aztarnaria
-Always_Open_Firebug_Tracing=Ireki Firebug aztarnaria beti
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Aztarnaria
-tracing.Show_Scope_Variables=Erakutsi esparru-aldagaiak
-tracing.Show_Time=Erakutsi denbora
-tracing.tab.Stack=Pila
-tracing.tab.Exception=Salbuespena
-tracing.tab.Properties=Propietateak
-tracing.tab.Scope=Esparrua
-tracing.tab.Response=Erantzuna
-tracing.tab.Source=Iturburua
-tracing.tab.Interfaces=Interfazeak
-tracing.tab.Object=Objektua
-tracing.tab.Event=Gertaera
-tracing.cmd.Clear=Garbitu
-tracing.cmd.tip.Clear=Kendu mezu guztiak
-tracing.cmd.Find=Bilatu
-tracing.cmd.tip.Find=Bilatu testua
-tracing.cmd.Bookmark=Laster-marka
-tracing.cmd.tip.Bookmark=Txertatu laster-marka
-tracing.cmd.Restart=Berrabiarazi Firefox
-tracing.cmd.tip.Restart=Berrabiarazi Firefox
-tracing.cmd.Exit=Irten Firefox-etik
-tracing.cmd.tip.Exit=Irten Firefox-etik
-tracing.cmd.Save=Gorde fitxategian
-tracing.cmd.tip.Save=Gorde logak fitxategi batean
-tracing.cmd.Load=Kargatu fitxategitik
-tracing.cmd.tip.Load=Kargatu logak fitxategi batetik
-tracing.cmd.Expand_All=Zabaldu guztiak
-tracing.cmd.Collapse_All=Tolestu guztiak
-tracing.cmd.Tools=Tresnak
-tracing.cmd.tip.Tools=Tresnak
-tracing.cmd.Clear_Browser_Cache=Garbitu arakatzailearen cache-a
-tracing.cmd.tip.Clear_Browser_Cache=Garbitu arakatzailearen cache-a
-tracing.cmd.Force_Garbage_Collector=Behartu zabor-biltzailea
-tracing.cmd.tip.Force_Garbage_Collector=Behartu zabor-biltzailea
-tracing.cmd.Open_Profile_Directory=Ireki analisiaren direktorioa
-tracing.cmd.tip.Open_Profile_Directory=Ireki analisiaren direktorioa
-tracing.option.A11Y_Description=Erabilerraztasunaren arazoak
-tracing.option.ACTIVATION_Description=Firebug aktibazioa
-tracing.option.ACTIVITYOBSERVER_Description=Firebug aktibitate-behatzailea
-tracing.option.ANNOTATIONS_Description=Firebug webgunearen oharra
-tracing.option.BP_Description=Eten-puntuak
-tracing.option.CACHE_Description=Iturburuaren cache-a
-tracing.option.COMMANDLINE_Description=Komando-lerroa eta komando-lerro laster-leihoa
-tracing.option.COMPILATION_UNITS_Description=Script-en konpilazio unitateak
-tracing.option.CONSOLE_Description=Kontsola panela
-tracing.option.CSS_Description=CSS analisia
-tracing.option.DISPATCH_Description=Gertaera bidalketa
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate sorkuntza
-tracing.option.EDITOR_Description=Barne-editorea eta osatze automatikoa
-tracing.option.ERRORLOG_Description=JS, CSS, XML eta abarren errore-loga
-tracing.option.ERRORS_Description=Firebug-en barne-erroreak
-tracing.option.EVAL_Description=Script-ebaluazioa
-tracing.option.FBS_BP_Description=Firebug zerbitzuen eten-puntuak
-tracing.option.FBS_CREATION_Description=Script-ak sortzeko Firebug-en zerbitzua
-tracing.option.FBS_ERRORS_Description=Firebug-eko zerbitzuaren erroreak
-tracing.option.FBS_FINDDEBUGGER_Description=Araztailea bilatzeko Firebug zerbitzua
-tracing.option.FBS_FUNCTION_Description=Firebug zerbitzuaren funtzioa
-tracing.option.FBS_JSDCONTEXT_Description=Javascript araztailearen testuinguruaren Firebug zerbitzua
-tracing.option.FBS_SRCUNITS_Description=Iturburu-unitateentzako Firebug zerbitzua
-tracing.option.FBS_STEP_Description=Javascript pausokako araztailerako Firebug zerbitzua
-tracing.option.FBS_TRACKFILES_Description=Fitxategien jarraipenerako Firebug zerbitzua
-tracing.option.FUNCTION_NAMES_Description=JavaScript funtzioen izenak
-tracing.option.HISTORY_Description=Firebug nabigazio-historia
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP eskaeren behatzailea
-tracing.option.INFOTIP_Description=Aholkua
-tracing.option.INITIALIZE_Description=Firebug hasieratzea
-tracing.option.INSPECT_Description=Ikuskatzailea
-tracing.option.JSONVIEWER_Description=JSON ikustailea
-tracing.option.LINETABLE_Description=Script-lerro taula
-tracing.option.LOCALE_Description=Lokalizazioa
-tracing.option.LOCATIONS_Description=Iturburu-kokapenak
-tracing.option.NET_Description=Sarea panela
-tracing.option.NET_EVENTS_Description=Sareko gertaerak
-tracing.option.OPTIONS_Description=Firebug hobespenak
-tracing.option.PANELS_Description=Panelak
-tracing.option.SHORTCUTS_Description=Teklatuko lasterbideak
-tracing.option.SOURCEFILES_Description=Javascript iturburu-fitxategiak
-tracing.option.SPY_Description=XMLHttpRequests behatzailea
-tracing.option.STACK_Description=Javascript dei-pila
-tracing.option.STORAGE_Description=Ezarpenen biltegia
-tracing.option.SVGVIEWER_Description=SVG ikustailea
-tracing.option.FONTS_Description=Letra-tipoen informazioa eta letra-tipo ikustailea
-tracing.option.TOOLTIP_Description=Hasi botoiaren argibidea
-tracing.option.TOPLEVEL_Description=Goi mailako JavaScript
-tracing.option.UI_LOOP_Description=JavaScript araztailearen erabiltzaile-interfazea
-tracing.option.WINDOWS_Description=Firebug leiho eta fitxa behatzailea
-tracing.option.XMLVIEWER_Description=XML ikustailea
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Ireki Firebug aztarnaria
+Always_Open_Firebug_Tracing=Ireki Firebug aztarnaria beti
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Aztarnaria
+tracing.Show_Scope_Variables=Erakutsi esparru-aldagaiak
+tracing.Show_Time=Erakutsi denbora
+tracing.tab.Stack=Pila
+tracing.tab.Exception=Salbuespena
+tracing.tab.Properties=Propietateak
+tracing.tab.Scope=Esparrua
+tracing.tab.Response=Erantzuna
+tracing.tab.Source=Iturburua
+tracing.tab.Interfaces=Interfazeak
+tracing.tab.Object=Objektua
+tracing.tab.Event=Gertaera
+tracing.cmd.Clear=Garbitu
+tracing.cmd.tip.Clear=Kendu mezu guztiak
+tracing.cmd.Find=Bilatu
+tracing.cmd.tip.Find=Bilatu testua
+tracing.cmd.Bookmark=Laster-marka
+tracing.cmd.tip.Bookmark=Txertatu laster-marka
+tracing.cmd.Restart=Berrabiarazi Firefox
+tracing.cmd.tip.Restart=Berrabiarazi Firefox
+tracing.cmd.Exit=Irten Firefox-etik
+tracing.cmd.tip.Exit=Irten Firefox-etik
+tracing.cmd.Save=Gorde fitxategian
+tracing.cmd.tip.Save=Gorde logak fitxategi batean
+tracing.cmd.Load=Kargatu fitxategitik
+tracing.cmd.tip.Load=Kargatu logak fitxategi batetik
+tracing.cmd.Expand_All=Zabaldu guztiak
+tracing.cmd.Collapse_All=Tolestu guztiak
+tracing.cmd.Tools=Tresnak
+tracing.cmd.tip.Tools=Tresnak
+tracing.cmd.Clear_Browser_Cache=Garbitu arakatzailearen cache-a
+tracing.cmd.tip.Clear_Browser_Cache=Garbitu arakatzailearen cache-a
+tracing.cmd.Force_Garbage_Collector=Behartu zabor-biltzailea
+tracing.cmd.tip.Force_Garbage_Collector=Behartu zabor-biltzailea
+tracing.cmd.Open_Profile_Directory=Ireki analisiaren direktorioa
+tracing.cmd.tip.Open_Profile_Directory=Ireki analisiaren direktorioa
+tracing.option.A11Y_Description=Erabilerraztasunaren arazoak
+tracing.option.ACTIVATION_Description=Firebug aktibazioa
+tracing.option.ACTIVITYOBSERVER_Description=Firebug aktibitate-behatzailea
+tracing.option.ANNOTATIONS_Description=Firebug webgunearen oharra
+tracing.option.BP_Description=Eten-puntuak
+tracing.option.CACHE_Description=Iturburuaren cache-a
+tracing.option.COMMANDLINE_Description=Komando-lerroa eta komando-lerro laster-leihoa
+tracing.option.COMPILATION_UNITS_Description=Script-en konpilazio unitateak
+tracing.option.CONSOLE_Description=Kontsola panela
+tracing.option.CSS_Description=CSS analisia
+tracing.option.DISPATCH_Description=Gertaera bidalketa
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate sorkuntza
+tracing.option.EDITOR_Description=Barne-editorea eta osatze automatikoa
+tracing.option.ERRORLOG_Description=JS, CSS, XML eta abarren errore-loga
+tracing.option.ERRORS_Description=Firebug-en barne-erroreak
+tracing.option.EVAL_Description=Script-ebaluazioa
+tracing.option.FBS_BP_Description=Firebug zerbitzuen eten-puntuak
+tracing.option.FBS_CREATION_Description=Script-ak sortzeko Firebug-en zerbitzua
+tracing.option.FBS_ERRORS_Description=Firebug-eko zerbitzuaren erroreak
+tracing.option.FBS_FINDDEBUGGER_Description=Araztailea bilatzeko Firebug zerbitzua
+tracing.option.FBS_FUNCTION_Description=Firebug zerbitzuaren funtzioa
+tracing.option.FBS_JSDCONTEXT_Description=Javascript araztailearen testuinguruaren Firebug zerbitzua
+tracing.option.FBS_SRCUNITS_Description=Iturburu-unitateentzako Firebug zerbitzua
+tracing.option.FBS_STEP_Description=Javascript pausokako araztailerako Firebug zerbitzua
+tracing.option.FBS_TRACKFILES_Description=Fitxategien jarraipenerako Firebug zerbitzua
+tracing.option.FUNCTION_NAMES_Description=JavaScript funtzioen izenak
+tracing.option.HISTORY_Description=Firebug nabigazio-historia
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP eskaeren behatzailea
+tracing.option.INFOTIP_Description=Aholkua
+tracing.option.INITIALIZE_Description=Firebug hasieratzea
+tracing.option.INSPECT_Description=Ikuskatzailea
+tracing.option.JSONVIEWER_Description=JSON ikustailea
+tracing.option.LINETABLE_Description=Script-lerro taula
+tracing.option.LOCALE_Description=Lokalizazioa
+tracing.option.LOCATIONS_Description=Iturburu-kokapenak
+tracing.option.NET_Description=Sarea panela
+tracing.option.NET_EVENTS_Description=Sareko gertaerak
+tracing.option.OPTIONS_Description=Firebug hobespenak
+tracing.option.PANELS_Description=Panelak
+tracing.option.SHORTCUTS_Description=Teklatuko lasterbideak
+tracing.option.SOURCEFILES_Description=Javascript iturburu-fitxategiak
+tracing.option.SPY_Description=XMLHttpRequests behatzailea
+tracing.option.STACK_Description=Javascript dei-pila
+tracing.option.STORAGE_Description=Ezarpenen biltegia
+tracing.option.SVGVIEWER_Description=SVG ikustailea
+tracing.option.FONTS_Description=Letra-tipoen informazioa eta letra-tipo ikustailea
+tracing.option.TOOLTIP_Description=Hasi botoiaren argibidea
+tracing.option.TOPLEVEL_Description=Goi mailako JavaScript
+tracing.option.UI_LOOP_Description=JavaScript araztailearen erabiltzaile-interfazea
+tracing.option.WINDOWS_Description=Firebug leiho eta fitxa behatzailea
+tracing.option.XMLVIEWER_Description=XML ikustailea
diff --git a/locale/eu/firebug.properties b/locale/eu/firebug.properties
index 5aaeebc..2248d33 100644
--- a/locale/eu/firebug.properties
+++ b/locale/eu/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Kontsola
-panel.tip.console=Kontsolako mezuak behatu eta JavaScript komandoak exekutatzeko aukera ematen du
-Panel-net=Sarea
-panel.tip.net=Sareko trafikoa aztertzeko aukera ematen du
-Panel-html=HTML
-panel.tip.html=DOM nodoak ikuskatu eta manipulatzeko aukera ematen du
-Panel-stylesheet=CSS
-panel.tip.stylesheet=CSS estilo-orriak ikuskatu eta manipulatzeko aukera ematen du
-Panel-script=Script-ak
-panel.tip.script=JavaScript arazteko aukera ematen du
-Panel-dom=DOM
-panel.tip.dom=DOM propietateak ikuskatu eta manipulatzeko aukera ematen du
-Panel-css=Estiloa
-panel.tip.css=Hautatutako DOM nodoaren CSS arauak ikuskatu eta manipulatzeko aukera ematen du
-Panel-computed=Kalkulatuak
-panel.tip.computed=Hautatutako DOM nodoaren kalkulatutako CSS balioak ikuskatzeko aukera ematen du
-Panel-layout=Diseinua
-panel.tip.layout=Hautatutako DOM nodoaren diseinuaren datuak ikuskatu eta manipulatzeko aukera ematen du
-Panel-domSide=DOM
-panel.tip.domSide=Hautatutako DOM nodoaren DOM propietateak ikuskatu eta manipulatzeko aukera ematen du
-Panel-watches=Behatu
-panel.tip.watches=Uneko pilaren markoan eskuragarri dauden JavaScript aldagaiak ikuskatu eta behaketa-adierazpenak definitzeko aukera ematen du
-Panel-breakpoints=Eten-puntuak
-panel.tip.breakpoints=Ezarritako eten-puntuak manipulatzeko aukera ematen du
-Panel-callstack=Pila
-panel.tip.callstack=Ahalbidetu javascript deien pila ikustea
-Panel-scopes=Esparruak
-firebug.DetachFirebug=Ireki Firebug leiho berri batean
-firebug.AttachFirebug=Atxiki firebug interneteko nabigatzaileari
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=Firebug %1$S guztira;%1$S Firebug guztira
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Desaktibatuta
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=arakatzailean
-minimized=Minimizatuta
-enablement.for_all_pages=Orrialde guztietan
-enablement.on=Aktibatuta
-enablement.off=Desaktibatuta
-enablement.Panel_activation_status=Panelaren aktibazio-egoera:
-none=Itxita
-Firebug_-_inactive_for_current_website=Firebug - inaktibo uneko webgunearentzat
-Activate_Firebug_for_the_current_website=Aktibatu Firebug uneko webgunearentzat
-Minimized=Minimizatuta
-Minimize_Firebug=Minimizatu Firebug
-On_for_all_web_pages=Martxan web orrialde guztientzat
-firebug.menu.tip.On_for_all_Web_Sites=Lehenetsi Firebug webgune guztietan aktibatzea
-firebug.menu.Clear_Activation_List=Garbitu aktibazio-zerrenda
-firebug.menu.tip.Clear_Activation_List=Hustu Firebug aktibo egonen den web orrialdeen zerrenda
-firebug.menu.Detached=Banatuta
-firebug.menu.tip.Detached=Banatu Firebug leiho bereizi batera
-firebug.menu.Top=Goian
-firebug.menu.tip.Top=Lerrokatu Firebug erabiltzaile-agentearen leihoaren goian
-firebug.menu.Bottom=Behean
-firebug.menu.tip.Bottom=Lerrokatu Firebug erabiltzaile-agentearen leihoaren behean
-firebug.menu.Left=Ezkerrean
-firebug.menu.tip.Left=Lerrokatu Firebug erabiltzaile-agentearen leihoaren ezkerrean
-firebug.menu.Right=Eskuinean
-firebug.menu.tip.Right=Lerrokatu Firebug erabiltzaile-agentearen leihoaren eskuinean
-firebug.uiLocation=Firebug interfazearen kokapena
-firebug.menu.tip.UI_Location=Firebug erabiltzaile-interfazearen kokapena
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Firebug aukerak
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Erakutsi panel guztiak
-console.option.Show_Command_Line=Erakutsi komando-lerroa
-console.option.tip.Show_Command_Line=Fokuratu komando-lerroa / Erakutsi komando-lerroaren laster-leihoa
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=Erakutsi JavaScript erroreak
-console.option.tip.Show_JavaScript_Errors=Erregistratu JavaScript errore-mezuak kontsolan
-ShowJavaScriptWarnings=Erakutsi JavaScript abisuak
-console.option.tip.Show_JavaScript_Warnings=Erregistratu JavaScript abisu-mezuak kontsolan
-ShowCSSErrors=Erakutsi CSS erroreak
-console.option.tip.Show_CSS_Errors=Erregistratu CSS errore-mezuak kontsolan
-ShowXMLHTMLErrors=Erakutsi XML/HTML erroreak
-console.option.tip.Show_XML_HTML_Errors=Erregistratu XML eta HTML errore-mezuak kontsolan
-ShowStackTrace=Erakutsi aztarna-pila erroreekin
-console.option.tip.Show_Stack_Trace=Erakutsi errore-mezuen aztarna-pilaren informazioa
-ShowXMLHttpRequests=Erakutsi XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Erregistratu XMLHttpRequest-ak kontsolan
-ShowChromeErrors=Erakutsi Chrome erroreak
-console.option.tip.Show_System_Errors=Erregistratu programaren eta gehigarrien barneko errore-mezuak kontsolan
-ShowChromeMessages=Erakutsi Chrome mezuak
-console.option.tip.Show_System_Messages=Erregistratu programaren eta gehigarrien barne-mezuak kontsolan
-ShowExternalErrors=Erakutsi kanpoko erroreak
-console.option.tip.Show_External_Errors=Erregistratu kanpoko iturburuetatik datozen errore-mezuak kontsolan
-ShowNetworkErrors=Erakutsi sareko erroreak
-console.option.tip.Show_Network_Errors=Erregistratu sareko errore-mezuak kontsolan
-JavascriptOptionsStrict=Abisu zorrotzak (errendimendua jaisten da)
-console.option.tip.Show_Strict_Warnings=Erregistratu abisu zorrotzak ere kontsolan
-Command_History=Komandoen historia
-console.option.Show_Command_Editor=Erakutsi komando-editorea
-console.option.tip.Show_Command_Editor=Aldatu komando-editorera
-commandLineShowCompleterPopup=Azaleratu lehio berri batean osatze automatikoaren emaitza zerrenda
-console.option.tip.Show_Completion_List_Popup=Azaleratu lehio berri batean komandoentzako osatze automatikoaren zerrenda
-Assertion=Asertzio-hutsegitea
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (%S lerroa)
-LineAndCol=%S (%S lerroa, %S zutabea)
-InstanceLine=%S #%S (%S lerroa)
-StackItem=%S (%S lerroa %S)
-SystemItem=<Sistema>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Ikuskatu %S panelean
-panel.tip.Inspect_In_Panel=Aldatu %S panelera objektua behatzeko
-NoName=(izenik ez)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Erakutsi testu osoa
-html.option.tip.Show_Full_Text=Ez moztu elementuen edukiak
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Erakutsi zuriunea
-html.option.tip.Show_Whitespace=Erakutsi zuriunea nodoen barnean
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Erakutsi iruzkinak
-html.option.tip.Show_Comments=Erakutsi iruzkin-nodoak
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Erakutsi entitateak sinbolo bezala
-html.option.tip.Show_Entities_As_Symbols=Erakutsi XML entitate guztiak beren irudikapen sinbolikoan
-html.option.Show_Entities_As_Names=Erakutsi entitateak izen bezala
-html.option.tip.Show_Entities_As_Names=Erakutsi XML entitate guztiak beren izenak erabiliz
-html.option.Show_Entities_As_Unicode=Erakutsi entitateak Unicode bezala
-html.option.tip.Show_Entities_As_Unicode=Erakutsi XML entitate guztiak beren Unicode adierazpidean
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Nabarmendu aldaketak
-html.option.tip.Highlight_Mutations=Nabarmendu nodoen barneko aldaketak
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Zabaldu aldaketak
-html.option.tip.Expand_Mutations=Zabaldu zuhaitz-ikuspegia aldatutako nodoak bistaratzeko
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Korritu aldaketak ikusgai jartzeko
-html.option.tip.Scroll_To_Mutations=Korritu zuhaitz-ikuspegia aldatutako nodoak ikusgai jartzeko
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Erakutsi informazio-kaxa azkarra
-inspect.option.tip.Show_Quick_Info_Box=Erakutsi unean ikuskatutako elementuari buruzko informazioa laster-leiho batean
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Itzaldun kaxaren eredua
-inspect.option.tip.Shade_Box_Model=Eredu kaxaren atal ezberdinei itzala eman
-ScrollIntoView=Korritu ikusgai jartzeko
-html.tip.Scroll_Into_View=Korritu orrialdea elementua ikusgai jartzeko
-NewAttribute=Atributu berria...
-html.tip.New_Attribute=Gehitu atributu berri bat elementu honi
-html.Edit_Node=Editatu %S...
-html.Node=Nodoa
-html.tip.Edit_Node=Editatu %S testu-editore osoa erabiliz
-DeleteElement=Ezabatu elementua
-html.Delete_Element=Ezabatu elementua zuhaitzetik
-DeleteNode=Ezabatu nodoa
-html.Delete_Node=Ezabatu nodoa zuhaitzetik
-# Quick Info Box
-quickInfo=Informazio azkarra
-computedStyle=Kalkulatutako estiloa
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Eten aldatzean
-html.Disable_Break_On_Mutate=Desgaitu aldatzean etetea
-html.label.Break_On_Text_Change=Eten testua aldatzen denean
-html.label.HTML_Breakpoints=HTML eten-puntuak
-html.label.Break_On_Attribute_Change=Eten atributua aldatzen denean
-html.tip.Break_On_Attribute_Change=Gelditu Javascript exekuzioa elementu honen atributu bat aldatzen denean
-html.label.Break_On_Child_Addition_or_Removal=Eten ume bat gehitu edo kentzean
-html.tip.Break_On_Child_Addition_or_Removal=Gelditu Javascript exekuzioa elementu honi nodo ume bat gehitu edo kentzen zaionean
-html.label.Break_On_Element_Removal=Eten elementua kentzean
-html.tip.Break_On_Element_Removal=Gelditu Javascript exekuzioa elementua kentzen denean
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Zabaldu/Uzkurtu dena
-html.tip.Expand/Contract_All=Zabaldu/Uzkurtu ume guztiak errekurtsiboki
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Eten propietatea aldatzean
-dom.tip.Break_On_Property_Change=Gelditu Javascript exekuzioa propietate hau aldatzen denean
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Desgaitu 'Eten propietatea aldatzean'
-dom.label.DOM_Breakpoints=DOM eten-puntuak
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Editatu "%S" atributua...
-html.tip.Edit_Attribute=Editatu elementu honen "%S" atributuaren balioa
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Ezabatu "%S" atributua
-html.tip.Delete_Attribute=Ezabatu elementu honen "%S" atributua
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Hemendik heredatua:
-SothinkWarning=Sothink SWF Catcher gehigarriak Firebug-ek behar bezala lan egitea eragozten du.<br/><br/>Mesedez irakurri <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">Firebug-en MEG-eko orri hau</a> laguntza eskuratzeko.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=abcdefghijklmnñopqrstuvwxyz. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=Ez dago araurik. <a>Arau bat sor dezakezu</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=Elementu honek ez dauka estilo-araurik. <a>Arau bat sor dezakezu</a>.
-EditStyle=Editatu elementuaren estiloa...
-style.tip.Edit_Style=Editatu elemententuaren barne estiloak
-AddRule=Gehitu araua...
-css.tip.AddRule=Gehitu elementu honentzako arau orokor bat
-NewRule=Arau berria...
-css.tip.New_Rule=Gehitu arau berri bat
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Ezabatu "%S"
-css.tip.Delete_Rule=Ezabatu "%S" araua eta bere propietate guztiak
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Editatu Media Query-a...
-css.menu.tip.Edit_Media_Query=Editatu arau honi loturiko media query-a
-NewProp=Propietate berria...
-css.tip.New_Prop=Gehitu propietate berri bat uneko arauari
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=Editatu "%S"...
-css.tip.Edit_Prop=Editatu "%S" propietatearen balioa
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=Desgaitu "%S"
-css.tip.Disable_Prop=Desgaitu "%S" propietatea
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=Ezabatu "%S"
-css.tip.Delete_Prop=Ezabatu "%S" propietatea
-# Console context menu labels.
-BreakOnThisError=Eten errore honetan
-console.menu.tip.Break_On_This_Error=Gelditu Javascript exekuzioa errore hau gertatu orduko
-BreakOnAllErrors=Eten errore guztietan
-console.menu.tip.Break_On_All_Errors=Gelditu Javascript exekuzioa errore bat gertatu orduko
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Jarraitu Throw/Catch
-script.option.tip.Track_Throw_Catch=Jarraitu salbuespenak try/catch bloke batek harrapatzen baditu ere
-UseLastLineForEvalName=Erabili iturburuko azken lerroa eval() izenentzat
-UseMD5ForEvalName=Erabili MD5 eval() izenentzat
-# Breakpoints side panel
-Breakpoints=Eten-puntuak
-ErrorBreakpoints=Eten-puntu erroreak
-LoggedFunctions=Erregistratutako funtzioak
-EnableAllBreakpoints=Gaitu eten-puntu guztiak
-breakpoints.option.tip.Enable_All_Breakpoints=Gaitu zerrendatutako eten-puntu guztiak
-DisableAllBreakpoints=Desgaitu eten-puntu guztiak
-breakpoints.option.tip.Disable_All_Breakpoints=Desgaitu zerrendatutako eten-puntu guztiak
-ClearAllBreakpoints=Kendu eten-puntu guztiak
-breakpoints.option.tip.Clear_All_Breakpoints=Kendu zerrendatutako eten-puntu guztiak
-ConditionInput=Adierazpen hau egia denean soilik geldituko da exekuzioa eten-puntu honetan:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Kendu eten-puntua
-breakpoints.tip.Remove_Breakpoint=Kendu eten-puntua
-breakpoints.Disable_Breakpoint=Desgaitu eten-puntua
-breakpoints.tip.Disable_Breakpoint=Desgaitu eten-puntua
-breakpoints.Enable_Breakpoint=Gaitu eten-puntua
-breakpoints.tip.Enable_Breakpoint=Gaitu eten-puntua
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Jarraitu
-script.balloon.Disable=Desgaitu
-ScriptsFilterStatic=Erakutsi script estatikoak
-ScriptsFilterEval=Erakutsi script estatikoak eta eval bidezkoak
-ScriptsFilterEvent=Erakutsi script estatikoak eta gertaerenak
-ScriptsFilterAll=Erakutsi script estatikoak, gertaerenak eta eval bidezkoak
-ScriptsFilterStaticShort=estatikoak
-ScriptsFilterEvalShort=eval
-ScriptsFilterEventShort=gertaerak
-ScriptsFilterAllShort=guztiak
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Zabaldu dena
-callstack.tip.Expand_All=Zabaldu pila-markoko funtzio guztiak
-callstack.Collapse_All=Tolestu dena
-callstack.tip.Collapse_All=Tolestu pila-markoko funtzio guztiak
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Pila-markoak script exekuzioa gelditzean soilik erakusten dira.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Erakutsi erabiltzaileak definitutako propietateak
-dom.option.tip.Show_User_Props=Erakutsi erabiltzaileak definitutako objektu-propietateak
-ShowUserFuncs=Erakutsi erabiltzaileak definitutako funtzioak
-dom.option.tip.Show_User_Funcs=Erakutsi erabiltzaileak definitutako objektu-metodoak
-ShowDOMProps=Erakutsi DOM propietateak
-dom.option.tip.Show_DOM_Props=Erakutsi DOM barnean zehazturiko propietateak
-ShowDOMFuncs=Erakutsi DOM funtzioak
-dom.option.tip.Show_DOM_Funcs=Erakutsi DOM barnean zehazturiko funtzioak
-ShowDOMConstants=Erakutsi DOM konstanteak
-dom.option.tip.Show_DOM_Constants=Erakutsi DOM barnean zehazturiko konstanteak
-ShowInlineEventHandlers=Erakutsi barneko gertaera-maneiatzaileak
-ShowInlineEventHandlersTooltip=Erakutsi eskuragarri dauden barneko gertaera-maneiatzaileak, funtzio batekin loturarik ez dutenak
-ShowOwnProperties=Erakutsi propietate propioak soilik
-ShowOwnPropertiesTooltip=Ez erakutsi prototipo-katea
-ShowEnumerableProperties=Erakutsi propietate zenbakigarriak soilik
-ShowEnumerablePropertiesTooltip=Ez erakutsi propietate ez-zenbakigarriak
-NoMembersWarning=Ez dago erakusteko propietaterik objektu honentzat
-NewWatch=Behaketa-adierazpen berria...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Gehitu behaketa
-watch.tip.Add_Watch=Gehitu hautapena/objektua Behaketa albo-panelera behatzeko
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Kopiatu iturburu-kodea
-script.tip.Copy_Source_Code=Kopiatu hautatutako iturburu-kodea arbelean
-Use_hash_plus_number_to_go_to_line=Erabili #<zenbakia> lerro horretara joateko
-CopyValue=Kopiatu balioa
-dom.tip.Copy_Value=Kopiatu propietatearen balioa arbelean
-Copy_Name=Kopiatu izena
-dom.tip.Copy_Name=Kopiatu propietatearen izena arbelean
-Copy_Path=Kopiatu bidea
-dom.tip.Copy_Path=Kopiatu propietatearen bidea
-NewProperty=Propietate berria...
-EditProperty=Editatu propietatea...
-dom.tip.Edit_Property=Editatu propietatearen balioa...
-EditVariable=Editatu aldagaia...
-stack.tip.Edit_Variable=Editatu aldagaiaren balioa...
-EditWatch=Editatu behaketa...
-watch.tip.Edit_Watch=Editatu behaketa-adierazpenaren balioa
-DeleteProperty=Ezabatu propietatea
-dom.tip.Delete_Property=Ezabatu propietatea
-DeleteWatch=Ezabatu behaketa
-DeleteAllWatches=Ezabatu behaketa guztiak
-watch.tip.Delete_Watch=Ezabatu behaketa-adierazpena
-watch.tip.Delete_All_Watches=Ezabatu behaketa-adierazpen guztiak
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Ezarri eten-puntua
-script.tip.Set_Breakpoint=Uneko lerroan eten-puntu bat ezartzea txandakatzen du
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Editatu eten-puntuaren baldintza...
-breakpoints.tip.Edit_Breakpoint_Condition=Editatu eten-puntu honetan Javascript exekuzioa geldiarazten duen baldintza
-NoBreakpointsWarning=Ez dago eten-punturik ezarrita orri honetan
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Erakutsi aplikatutako estiloak soilik
-style.option.tip.Only_Show_Applied_Styles=Erakutsi elementuari aplikatutako estiloak soilik
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Erakutsi erabiltzaile-agentearen CSSa
-style.option.tip.Show_User_Agent_CSS=Erakutsi erabiltzaile-agenteak definituriko CSSa ere
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Koloreak Hex bezala
-computed.option.tip.Colors_As_Hex=Erakutsi koloreak formatu hexadezimalean
-computed.option.label.Colors_As_RGB=Koloreak RGB bezala
-computed.option.tip.Colors_As_RGB=Erakutsi koloreak RGB formatuan
-computed.option.label.Colors_As_HSL=Koloreak HSL bezala
-computed.option.tip.Colors_As_HSL=Erakutsi koloreak HSL formatuan
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Bistaratu :active pseudo-klase estiloak
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Bistaratu :hover pseudo-klase estiloak
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Bistaratu :focus pseudo-klase estiloak
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Ikuskatu deklarazioa
-css.tip.Inspect_Declaration=Ikuskatu letra-tipo honen deklarazioa
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Hedatu laburtutako propietateak
-css.option.tip.Expand_Shorthand_Properties=Hedatu laburtutako CSS propietateak bere osagaietan
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Ordenatu alfabetikoki
-computed.option.tip.Sort_Alphabetically=Antolatu estiloak izenaren arabera/taldekatu estiloak kategorietan
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Erakutsi Mozilla-ren estilo espezifikoak
-computed.option.tip.Show_Mozilla_Specific_Styles=Erakutsi -moz aurrizkia duten estiloak ere
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=Elementu honek ez dauka erabiltzaileak definituriko estilo-araurik.
-script.Type_any_key_to_filter_list=Idatzi edozein gako zerrenda iragazteko
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=betegarria
-LayoutBorder=ertza
-LayoutMargin=marjina
-LayoutPosition=kokapena
-LayoutAdjacent=albokoa
-position=kokapena
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Erakutsi erregelak eta gidak
-layout.option.tip.Show_Rulers=Erakutsi erregela eta gidak orrian diseinu-kaxaren zatiak nabarmentzean
-# Net panel
-Loading=Kargatzen...
-Headers=Goiburuak
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Garbitu eskaera-zerrenda
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Berrezarri goiburua
-net.header.tip.Reset_Header=Berrezarri goiburuen bistaratzea
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URLa
-net.header.URL_Tooltip=Eskatutako URLa eta erabilitako HTTP metodoa
-net.header.Status=Egoera
-net.header.Status_Tooltip=Jasotako erantzunaren egoera
-net.header.Domain=Domeinua
-net.header.Domain_Tooltip=Exekutatutako eskaeraren domeinua
-net.header.Size=Tamaina
-net.header.Size_Tooltip=Jasotako erantzunaren tamaina (tamaina konprimatua konprimatutako erantzunen kasuan)
-net.header.Timeline=Denbora-lerroa
-net.header.Timeline_Tooltip=Eskaera-erantzuna joan-etorriaren denboraren informazio zehatza
-net.header.Local_IP=IP lokala
-net.header.Local_IP_Tooltip=Eskaerarekin loturiko IP helbide lokala eta ataka-zenbakia
-net.header.Remote_IP=Urruneko IPa
-net.header.Remote_IP_Tooltip=Eskaerarekin loturiko urruneko IP helbidea eta ataka-zenbakia
-net.header.Protocol=Protokoloa
-net.header.Protocol_Tooltip=Baliabidea sarean kokatzeko erabilitako URL protokoloa
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=XHR eten-puntuak
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Eten XHR-n
-net.tip.Break_On_XHR=Gelditu JavaScript exekuzioa XMLHttpRequest bat egin orduko
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=ikusi iturburua
-net.headers.pretty_print=inprimaketa txukuna
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Multimedia
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Post
-Put=Put
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Erantzuna
-URLParameters=Parametroak
-Cache=Cache-a
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Informazio orokorra
-fontviewer.Meta_Data=Metadatuak
-fontviewer.view_source=ikusi iturburua
-fontviewer.Preview=Aurrebista
-fontviewer.view_characters=ikusi karaktereak
-fontviewer.pretty_print=inprimaketa txukuna
-fontviewer.view_sample=ikusi lagina
-fontviewer.uniqueid=ID bakarra
-fontviewer.vendor=Hornitzailea
-fontviewer.license=Lizentzia
-fontviewer.description=Deskribapena
-fontviewer.copyright=Copyright-a
-fontviewer.credits=Kredituak
-fontviewer.trademark=Marka
-fontviewer.licensee=Baimenduna
-fontviewer.extension=Gehigarria
-fontviewer.pangram=abcdefghijklmnñopqrstuvwxyz
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Ordenatu gakoaren arabera
-jsonviewer.do_not_sort=Ez ordenatu
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Kopiatu "%S" JSON bezala
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Eskaeraren goiburuak
-ResponseHeaders=Erantzunaren goiburuak
-CachedResponseHeaders=Cache-ko erantzun-goiburuak
-PostRequestHeaders=Kargako jarioko eskaeren goiburuak
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=Eskaera zuzenean ebatzi da cache-tik, ondorioz ez dago zerbitzariaren erantzunik. Ikus behean cache-ko erantzuna.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebug-en log-aren muga gainditu da. Sarrera %1$S ez da erakusten.;Firebug-en log-aren muga gainditu da. %1$S sarrera ez dira erakusten.
-LimitPrefs=Hobespenak
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Muga aldatzeko aldatu '%S'
-Refresh=Freskatu
-panel.tip.Refresh=Freskatu panelaren ikuspegia
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Ireki fitxa berrian
-firebug.tip.Open_In_Tab=Ireki URLa arakatzailearen fitxa berri batean
-Open_Response_In_New_Tab=Ireki erantzuna fitxa berrian
-net.tip.Open_Response_In_New_Tab=Ireki erantzuna arakatzailearen fitxa berri batean
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Analisia
-ProfilerStarted=Analizatzailea martxan dago. Klikatu berriz ere 'Analizatu' bere txostena ikusteko
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, dei %2$S);(%1$Sms, %2$S dei)
-NothingToProfile=Aktibitaterik ez analizatzeko
-PercentTooltip=Funtzio honetan igarotako denboraren ehunekoa
-CallsHeaderTooltip=Funtzioa zenbat aldiz deitu den
-OwnTimeHeaderTooltip=Funtzioan igarotako denbora funtzio habiaratuak kontutan izan gabe
-TimeHeaderTooltip=Funtzioan igarotako denbora funtzio habiaratuak kontutan izanik
-AvgHeaderTooltip=Batez besteko denbora funtzio-deiak barne
-MinHeaderTooltip=Gutxieneko denbora funtzio-deiak barne
-MaxHeaderTooltip=Gehienezko denbora funtzio-deiak barne
-ProfileButton.Enabled.Tooltip=Analizatu JavaScript-en exekuzio-denbora
-ProfileButton.Disabled.Tooltip=Analizatu JavaScript-en exekuzio-denbora (Script-ak panelak gaituta egon behar du)
-Function=Funtzioa
-Percent=Ehunekoa
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Deiak
-OwnTime=Denbora propioa
-Time=Denbora
-Avg=Batez bestekoa
-Min=Minimoa
-Max=Maximoa
-File=Fitxategia
-# Support for standard actions.
-Copy=Kopiatu
-Cut=Ebaki
-Remove=Kendu
-Delete=Ezabatu
-Paste=Itsatsi
-SelectAll=Hautatu dena
-html.Copy_Node=Kopiatu %S
-html.tip.Copy_Node=Kopiatu %S nodoa eta bere eduki guztiak arbelera
-CopyInnerHTML=Kopiatu innerHTML
-html.tip.Copy_innerHTML=Kopiatu elementuaren edukiak arbelean
-CopyXPath=Kopiatu XPath
-html.tip.Copy_XPath=Kopiatu elementuaren XPath arbelean
-Copy_CSS_Path=Kopiatu CSS bidea
-html.tip.Copy_CSS_Path=Kopiatu elementuaren CSS bidea arbelean
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Kopiatu kokapena
-clipboard.tip.Copy_Location=Kopiatu objektuaren kokapenaren URLa arbelera
-CopyURLParameters=Kopiatu URL parametroak
-net.tip.Copy_URL_Parameters=Kopiatu URL parametroak arbelera
-CopyPOSTParameters=Kopiatu POST parametroak
-net.tip.Copy_POST_Parameters=Kopiatu POST parametroak arbelean
-CopyLocationParameters=Kopiatu kokapena parametroekin
-net.tip.Copy_Location_Parameters=Kopiatu URLa parametro eta guzti arbelera
-CopyRequestHeaders=Kopiatu eskaeraren goiburuak
-net.tip.Copy_Request_Headers=Kopiatu eskaeraren goiburuak arbelera
-CopyResponseHeaders=Kopiatu erantzunaren goiburuak
-net.tip.Copy_Response_Headers=Kopiatu erantzunaren goiburuak arbelera
-CopyResponse=Kopiatu erantzunaren gorputza
-net.tip.Copy_Response=Kopiatu erantzunaren gorputza arbelera
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Kopiatu errorea
-console.menu.tip.Copy_Error=Kopiatu errorearen informazioa arbelean
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Kopiatu funtzioa
-dom.tip.Copy_Source=Kopiatu funtzioaren iturburu-kodea arbelean
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Erregistratu "%S"(r)en deiak
-dom.tip.Log_Calls_To_Function=Erregistratu "%S" funtzioaren deiak Kontsola panelaren barnean
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Erregistratu gertaerak
-html.tip.Show_Events_In_Console=Erregistratu gertaeren informazioa kontsolan
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Gaituta
-panel.tip.Enabled=Txandakatu panelaren aktibazioa
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Erakutsi komando-lerroaren laster-leihoa
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Firebug kontsolak ez du '%S' onartzen
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Firebug komando-lerroak ez du '%S' onartzen
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Uneko leihoa:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Desgaitu 'Eten errore guztietan'
-console.Break_On_All_Errors=Eten errore guztietan
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Eten errore honetan
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Erabili gezi-teklak, tabuladorea edo Sartu tekla
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=Javascript desgaituta daukazu Firefox-en hobespenetan. Kontsola panela erabili nahi baduzu, gaitu egin behar duzu Tresnak > Aukerak > Edukia > Gaitu Javascript erabiliz
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=Elementu gehiegi daude array-an orrian nabarmentzeko (uneko muga %S da).\nIkus 'extensions.firebug.multiHighlightLimit' hobespena.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug komando-lerroa desgaituta dago XML orrietan. Gaitzeko <a>aldatu HTMLra</a>.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Erantzunaren gorputza
-net.sizeinfo.Post_Body=Eskaeraren gorputza
-net.sizeinfo.Total_Sent=Bidalitakoa guztira
-net.sizeinfo.Total_Received=Jasotakoa guztira
-net.sizeinfo.Including_HTTP_Headers=HTTP goiburuak barne
-net.ActivationMessage=Sarea panela aktibatuta. Panela inaktibo dagoen bitartean egindako eskaerak ez dira erakusten.
-net.responseSizeLimitMessage=Firebug-en erantzunaren tamainaren muga gainditu da. Klikatu <a>hemen</a> erantzun osoa Firefox-en fitxa berri batean irekitzeko.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Firebug-en eskaeraren tamainaren muga gainditu da.
-net.Break_On_XHR=Eten XHR-n
-net.label.Parameters=Parametroak
-net.label.Parts=Zatiak
-net.label.Source=Iturburua
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Berbidali
-net.tip.Resend=Bidali eskaera berriro
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Desgaitu arakatzailearen cache-a
-net.option.tip.Disable_Browser_Cache=Desgaitu arakatzailearen HTTP cache-a
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Erakutsi Paint gertaerak
-net.option.tip.Show_Paint_Events=Erakutsi MozAfterPaint gertaerak marra berde bezala denbora-lerroan
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Erakutsi BFCache erantzunak
-net.option.tip.Show_BFCache_Responses=Erakutsi baita Back-Forward Cache-ko erantzunak
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Eten hurrengoan
-script.Disable_Break_On_Next=Desgaitu hurrengoan etetea
-ShowHttpHeaders=Erakutsi HTTP goiburuak
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=eskaera %1$S;%1$S eskaera
-FromCache=cache-tik
-StopLoading=Utzi kargatzeari
-net.tip.Stop_Loading=Utzi erantzuna kargatzeari
-LargeData=(Datu oso handiak)
-ShowComputedStyle=Erakutsi kalkulatutako estiloa
-StyleGroup-text=Testua
-StyleGroup-background=Atzeko planoa
-StyleGroup-box=Kaxa-eredua
-StyleGroup-layout=Diseinua
-StyleGroup-other=Bestelakoa
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Kopiatu kolorea
-css.tip.Copy_Color=Kopiatu kolorea arbelean
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Kopiatu irudiaren kokapena
-css.tip.Copy_Image_Location=Kopiatu irudiaren URLa arbelean
-OpenImageInNewTab=Ireki irudia fitxa berrian
-css.tip.Open_Image_In_New_Tab=Ireki irudia arakatzailearen fitxa berrian
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Baztertu tresna barrako pila
-callstack.option.tip.Omit_Object_Path_Stack=Ez erakutsi objektuaren bide-pila
-Load_Original_Source=Kargatu jatorrizko iturburua
-css.tip.Load_Original_Source=Baztertu aldaketak eta kargatu jatorrizko CSSa
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Kopiatu arau-deklarazioa
-css.tip.Copy_Rule_Declaration=Kopiatu araua bere propietate guztiekin arbelera
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Kopiatu estilo-deklarazioa
-css.tip.Copy_Style_Declaration=Kopiatu arauaren propietateak arbelera
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=errore %1$S;%1$S errore
-moduleManager.title=%S panela desgaituta dago
-moduleManager.desc3=Erabili Firebug-en tresna-barra botoia panel guztiak aldi berean gaitu/desgaitzeko. Erabili panel bakoitzaren fitxako menua panel hori kontrolatzeko.
-moduleManager.Enable=Gaitu
-Suspend_Firebug=Eseki Firebug
-Resume_Firebug=Berrekin Firebug
-Reset_Panels_To_Disabled=Berrezarri panelak desgaituta
-Open_Console=Ireki kontsola
-Open_Console_Tooltip=Ireki Firebug-en aztarnari-kontsola
-Scope_Chain=Esparru-katea
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=With
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Deia
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Leihoa
-Logs=Logak
-Options=Aukerak
-Copy_Stack=Kopiatu pila
-Copy Exception=Kopiatu salbuespena
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blokeatzen
-requestinfo.Resolving=DNS kontsulta
-requestinfo.Connecting=Konektatzen
-requestinfo.Sending=Bidaltzen
-requestinfo.Waiting=Zain
-requestinfo.Receiving=Jasotzen
-requestinfo.ContentLoad='DOMContentLoaded' (gertaera)
-requestinfo.WindowLoad='load' (gertaera)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Eskaeraren hasierako denbora hastapenetik
-requestinfo.phases.label=Eskaeraren faseen hasierako eta igarotako denbora erlatiboa eskaeraren hasierarekiko:
-requestinfo.timings.label=Gertaeren denbora erlatiboa eskaeraren hasierarekiko:
-search.Firebug_Search=Firebug bilaketa
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Hurrengoa
-search.tip.Next=Bilatu hurrengo bat etortzea
-search.Previous=Aurrekoa
-search.tip.Previous=Bilatu aurreko bat etortzea
-search.Case_Sensitive=Bereiztu MAIUS/minus
-search.tip.Case_Sensitive=Bereiztu letra larri eta xeheak
-search.Case_Insensitive=Ez bereiztu MAIUS/minus
-search.tip.Case_Insensitive=Ez bereiztu letra larri eta xeheak
-search.Multiple_Files=Fitxategi anitz
-search.tip.Multiple_Files=Bilatu panel honekin erlazionaturiko fitxategi guztien barruan
-search.Use_Regular_Expression=Erabili adierazpen erregularra
-search.tip.Use_Regular_Expression=Interpretatu sartutako katea adierazpen erregular bezala bilatzean
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS hautatzailea
-search.net.Headers=Goiburuak
-search.net.Parameters=Parametroak
-search.net.Response_Bodies=Erantzunen gorputzak
-search.net.tip.Response_Bodies=Bilatu erantzunen gorputzetan ere
-firebug.console.Persist=Jarraitu
-firebug.console.Do_Not_Clear_On_Reload2=Ez garbitu panela orria birkargatzean
-firebug.console.Show_All_Log_Entries=Erakutsi log sarrera guztiak
-firebug.console.Errors=Erroreak
-firebug.console.Filter_by_Errors=Iragazi erroreen arabera
-firebug.console.Warnings=Abisuak
-firebug.console.Filter_by_Warnings=Iragazi abisuen arabera
-firebug.console.Info=Informazioa
-firebug.console.Filter_by_Info=Iragazi informazioaren arabera
-firebug.console.Debug_Info=Arazketa-informazioa
-firebug.console.Filter_by_Debug_Info=Iragazi arazketa-informazioaren arabera
-firebug.Deactivate_Firebug=Desaktibatu Firebug
-firebug.tip.Deactivate_Firebug=Desaktibatu Firebug uneko webgunearentzat
-firebug.ShowFirebug=Ireki Firebug
-firebug.menu.tip.Open_Firebug=Erakutsi Firebug interfazea
-firebug.HideFirebug=Ezkutatu Firebug
-firebug.menu.tip.Minimize_Firebug=Minimizatu Firebug, baina mantendu aktibo
-firebug.FocusFirebug=Fokuratu Firebug leihoa
-firebug.menu.tip.Focus_Firebug=Fokuratu banatutako Firebug leihoa
-firebug.menu.Enable_All_Panels=Gaitu panel guztiak
-firebug.menu.tip.Enable_All_Panels=Gaitu panel aktibagarri guztiak
-firebug.menu.Disable_All_Panels=Desgaitu panel guztiak
-firebug.menu.tip.Disable_All_Panels=Desgaitu panel aktibagarri guztiak
-firebug.menu.Customize_shortcuts=Pertsonalizatu lasterbideak
-firebug.menu.tip.Customize_Shortcuts=Pertsonalizatu Firebug-en barneko laster-teklak
-firebug.Options=Aukerak
-firebug.menu.tip.Options=Firebug-en hobespen globalak
-firebug.menu.Enable_Accessibility_Enhancements=Gaitu erabilerraztasunerako hobekuntzak
-firebug.menu.tip.Enable_Accessibility_Enhancements=Gaitu teklatu bidezko erabateko kontrola eta erabilerraztasunerako beste hobekuntzak
-firebug.menu.Activate_Same_Origin_URLs2=Aktibatu jatorri bereko URLentzat
-firebug.menu.tip.Activate_Same_Origin_URLs=Aktibatu Firebug jatorri bereko politikarekin bat datozen URLentzat
-firebug.menu.Reset_All_Firebug_Options=Berrezarri Firebug-en aukera guztiak
-firebug.menu.tip.Reset_All_Firebug_Options=Berrezarri Firebug-en hobespen guztiak balio lehenetsietara
-firebug.menu.Firebug_Online=Firebug linean
-firebug.menu.tip.Firebug_Online=Firebug-ekin erlazionatutako webguneak
-firebug.menu.Extensions=Firebug gehigarriak...
-firebug.menu.tip.Extensions=Deskargatu eta instalatu Firebug gehigarriak
-firebug.menu.Vertical_Panels=Panel bertikalak
-firebug.menu.tip.Vertical_Panels=Txandakatu Firebug-en panel nagusi eta albo-panelen diseinua
-firebug.menu.Show_Info_Tips=Erakutsi aholkuak
-firebug.menu.tip.Show_Info_Tips=Erakutsi nabarmendutako elementuari buruzko informazioa duten laster-leihoak
-firebug.Show_Error_Count=Erakutsi errore kopurua
-firebug.menu.tip.Show_Error_Count=Erakutsi kontsolan erregistratutako erroreen kopurua
-firebug.TextSize=Testuaren tamaina
-firebug.menu.tip.Text_Size=Aldatu Firebug-en erabilitako testuaren tamaina
-firebug.IncreaseTextSize=Handitu testuaren tamaina
-firebug.menu.tip.Increase_Text_Size=Handitu Firebug-en erabilitako testuaren tamaina
-firebug.DecreaseTextSize=Txikiagotu testuaren tamaina
-firebug.menu.tip.Decrease_Text_Size=Txikiagotu Firebug-en erabilitako testuaren tamaina
-firebug.NormalTextSize=Testu-tamaina normala
-firebug.menu.tip.Normal_Text_Size=Berrezarri Firebug-en erabilitako testuaren tamaina lehenetsia
-firebug.Website=Firebug-en webgunea...
-firebug.menu.tip.Website=Ireki Firebug-en webgune ofiziala
-firebug.help=Laguntza...
-firebug.menu.tip.help=Ireki Firebug-i buruzko azalpenak dituzten orrietarako estekak dituen orria
-firebug.Documentation=Dokumentazioa...
-firebug.menu.tip.Documentation=Ireki Firebug-en dokumentazioa
-firebug.KeyShortcuts=Teklatuko lasterbideak...
-firebug.menu.tip.Key_Shortcuts=Ireki Firebug-en erabil daitezkeen sagu eta teklatuaren lasterbideen zerrenda
-firebug.Forums=Eztabaida-taldea...
-firebug.menu.tip.Forums=Ireki eztabaida-taldearen gunea
-firebug.Issues=Arazoen jarraipena...
-firebug.menu.tip.Issues=Ireki arazoen jarraipenerako gunea
-firebug.Donate=Parte hartu...
-firebug.menu.tip.Donate=Ireki Firebug-en nola parte hartu azaltzen duen gunea
-firebug.About=Honi buruz...
-firebug.menu.tip.About=Firebug-i buruzko informazioa
-ProfileJavaScript=Analizatu JavaScript
-firebug.menu.tip.Profile_JavaScript=Analizatu JavaScript-en exekuzio-denbora
-firebug.Search=Bilatu
-firebug.menu.tip.Search=Ezarri fokua bilaketa-eremuan
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Sartu berriro komandoa
-firebug.shortcut.tip.reenterCommand=Sartu berriro azken komandoa komando-lerroan
-firebug.shortcut.toggleInspecting.label=Txandakatu ikuskatzea
-firebug.shortcut.tip.toggleInspecting=Gaitu/Desgaitu ikuskatzailea
-firebug.shortcut.toggleQuickInfoBox.label=Txandakatu informazio-kaxa azkarra
-firebug.shortcut.tip.toggleQuickInfoBox=Gaitu/Desgaitu unean ikuskaturiko elementuaren informazioa duen panela bistaratzea
-firebug.shortcut.toggleProfiling.label=Txandakatu analizatzea
-firebug.shortcut.tip.toggleProfiling=Gaitu/desgaitu JavaScript analizatzailea
-firebug.shortcut.focusCommandLine.label=Fokuratu komando-lerroa
-firebug.shortcut.tip.focusCommandLine=Ireki Firebug eta ezarri fokoa komando-lerroan / txandakatu komando-lerroaren laster-leihoa
-firebug.shortcut.focusFirebugSearch.label=Fokuratu Firebug bilaketa
-firebug.shortcut.tip.focusFirebugSearch=Ezarri fokua bilaketa-eremuan
-firebug.shortcut.focusWatchEditor.label=Fokuratu behaketa-editorea
-firebug.shortcut.tip.focusWatchEditor=Aldatu Script-ak panelera eta ezarri fokoa eremuan behaketa-adierazpen berri bat sartzeko
-firebug.shortcut.focusLocation.label=Fokuratu kokapena
-firebug.shortcut.tip.focusLocation=Ireki Kokapena menua
-firebug.shortcut.nextObject.label=Hurrengo objektua
-firebug.shortcut.tip.nextObject=Hautatu panel baten elementuen bideko hurrengo objektua
-firebug.shortcut.previousObject.label=Aurreko objektua
-firebug.shortcut.tip.previousObject=Hautatu panel baten elementuen bideko aurreko objektua
-firebug.shortcut.customizeFBKeys.label=Pertsonalizatu Firebug teklak
-firebug.shortcut.tip.customizeFBKeys=Ireki Firebug-en laster-teklen elkarrizketa-koadroa
-firebug.shortcut.detachFirebug.label=Ireki Firebug leiho berri batean
-firebug.shortcut.tip.detachFirebug=Ireki Firebug beste leiho batean
-firebug.shortcut.leftFirebugTab.label=Aldatu ezkerreko Firebug panelera
-firebug.shortcut.tip.leftFirebugTab=Aldatu ezkerreko Firebug panelera
-firebug.shortcut.rightFirebugTab.label=Aldatu eskuineko Firebug panelera
-firebug.shortcut.tip.rightFirebugTab=Aldatu eskuineko Firebug panelera
-firebug.shortcut.toggleFirebug.label=Ireki Firebug
-firebug.shortcut.tip.toggleFirebug=Ireki/Minimizatu Firebug interfazea
-firebug.shortcut.closeFirebug.label=Desaktibatu Firebug
-firebug.shortcut.tip.closeFirebug=Desaktibatu Firebug unek webgunearentzat
-firebug.shortcut.previousFirebugTab.label=Aurreko Firebug panela
-firebug.shortcut.tip.previousFirebugTab=Aldatu aurrez hautatutako Firebug panelera
-firebug.shortcut.clearConsole.label=Garbitu kontsola
-firebug.shortcut.tip.clearConsole=Kendu log guztiak kontsolatik
-firebug.shortcut.openTraceConsole.label=Ireki aztarna-kontsola
-firebug.shortcut.tip.openTraceConsole=Ireki FBTrace kontsola
-firebug.shortcut.navBack.label=Joan atzera
-firebug.shortcut.tip.navBack=Aldatu aurreko panelera edo nabigazio-historiako kokapen-zerrendako aurreko elementura
-firebug.shortcut.navForward.label=Joan aurrera
-firebug.shortcut.tip.navForward=Aldatu hurrengo panelera edo nabigazio-historiako kokapen-zerrendako hurrengo elementura
-firebug.shortcut.increaseTextSize.label=Handitu testuaren tamaina
-firebug.shortcut.tip.increaseTextSize=Handitu Firebug-en erabilitako testuaren tamaina
-firebug.shortcut.decreaseTextSize.label=Txikiagotu testuaren tamaina
-firebug.shortcut.tip.decreaseTextSize=Txikiagotu Firebug-en erabilitako testuaren tamaina
-firebug.shortcut.normalTextSize.label=Testu-tamaina normala
-firebug.shortcut.tip.normalTextSize=Berrezarri Firebug-en erabilitako testuaren tamaina lehenetsia
-firebug.shortcut.help.label=Ireki laguntza
-firebug.shortcut.tip.help=Ireki maiz egindako galderen orria
-firebug.shortcut.toggleBreakOn.label=Txandakatu geldialdiak...
-firebug.shortcut.tip.toggleBreakOn=Gaitu/desgaitu script-aren exekuzioa gelditzea panel barruan gertaera zehatzak ematean
-firebug.panel_selector=Panel hautatzailea
-customizeShortcuts=Firebug laster-teklak
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=panel-tresnak
-a11y.labels.firebug_panels=Firebug panelak
-a11y.labels.firebug_side_panels=Firebug albo-panelak
-a11y.labels.firebug_window=Firebug leihoa
-a11y.labels.firebug_status=Firebug egoera
-a11y.labels.reset=berrezarri
-a11y.labels.reset_shortcut=berrezarri %S lasterbidea
-aria.labels.inactive_panel=panel inaktiboa
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=erregistratu errenkadak
-a11y.labels.call_stack=dei-pila
-a11y.labels.document_structure=dokumentuaren egitura
-a11y.labels.title_panel=%S panela
-a11y.labels.title_side_panel=%S albo-panela
-a11y.labels.cached=cache-an
-aria.labels.stack_trace=aztarna-pila
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=betegarria
-a11y.layout.border=ertza
-a11y.layout.margin=marjina
-a11y.layout.position=posizioa
-a11y.layout.position_top=goian
-a11y.layout.position_right=eskuinean
-a11y.layout.position_bottom=behean
-a11y.layout.position_left=ezkerrean
-a11y.layout.margin_top=goiko marjina
-a11y.layout.margin_right=eskuineko marjina
-a11y.layout.margin_bottom=beheko marjina
-a11y.layout.margin_left=ezkerreko marjina
-a11y.layout.border_top=goiko ertza
-a11y.layout.border_right=eskuineko ertza
-a11y.layout.border_bottom=beheko ertza
-a11y.layout.border_left=ezkerreko ertza
-a11y.layout.padding_top=goiko betegarria
-a11y.layout.padding_right=eskuineko betegarria
-a11y.layout.padding_bottom=beheko betegarria
-a11y.layout.padding_left=ezkerreko betegarria
-a11y.layout.top=goia
-a11y.layout.right=eskuina
-a11y.layout.bottom=behea
-a11y.layout.left=ezkerra
-a11y.layout.width=zabalera
-a11y.layout.height=altuera
-a11y.layout.size=tamaina
-a11y.layout.z-index=z-indizea
-a11y.layout.box-sizing=kaxaren tamaina
-a11y.layout.clientBoundingRect=laukizuzen mugatzailea
-a11y.descriptions.press_enter_to_edit_values=Sakatu Sartu eta ondoren Tabuladorea banako balioak editatzeko
-a11y.labels.style_rules=estilo-arauak
-aria.labels.inherited_style_rules=heredatutako estilo-arauak
-a11y.labels.computed_styles=kalkulatutako estiloak
-a11y.labels.dom_properties=DOM propietateak
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=barne-editorea
-a11y.labels.value_for_attribute_in_element=%S elementuaren %s atributuaren balioa
-a11y.labels.attribute_for_element=%S elementuarentzako atributua
-a11y.labels.text_contents_for_element=%S elementuarentzako testu-edukiak
-a11y.labels.defined_in_file=%S(e)n definitua
-a11y.labels.declarations_for_selector="%S" hautatzailearentzako estilo-deklarazioak
-a11y.labels.property_for_selector=Hautatzailearentzako CSS propietatea: %S
-a11y.labels.value_property_in_selector=%S propietatearen balioa %S hautatzailearentzat
-a11y.labels.css_selector=CSS hautatzailea
-a11y.labels.source_code_for_file=%S fitxategiaren iturburu-kodea
-a11y.labels.press_enter_to_add_new_watch_expression=sakatu Sartu behaketa-adierazpen berri bat sartzeko
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=gainidatzia
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=baldintzazko eten-puntuak ditu
-a11y.updates.has_disabled_break_point=desgaitutako eten-puntua dauka
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script-a eseki da %S lerroan %S funtzioan, %S fitxategia
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows="%S"(r)ekin bat etortzeak aurkitu dira log-eko %s lerrotan
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line="%1$S"(r)ekin bat etortzea aurkitu da %3$S(e)ko %2$S lerroan.
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element="%1$S"(r)ekin bat etortzea aurkitu da %3$S bideko %2$S elementuan
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute="%1$S"(r)ekin bat etortzea aurkitu da %5$S bideko %4$S elementuaren %2$S=%3$S atributuan
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content="%1$S"(r)ekin bat etortzea aurkitu da testu-edukian: %4$S bideko %3$S elementuaren %2$S(a)n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector="%S"(r)ekin bat etortzea aurkitu da %S hautatzailean
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration="%1$S"(r)ekin bat etortzea aurkitu da %2$S hautatzailearen %1$S estilo-deklarazioan
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property="%S"(r)ekin bat etortzea aurkitu da DOMeko %S propietatean
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row="%S"(r)ekin bat etortzea aurkitu da hemen: %S, %S: %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row="%S"(r)ekin bat etortzea aurkitu da sareko laburpenaren errenkadan: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=ez da "%S"(r)ekin bat datorren ezer aurkitu
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Ziur zaude Firebug-en aukera guztiak jatorrizko egoerara berrezarri nahi dituzula?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Egin dituzun CSS edizioak baztertuko dira.\nZiur zaude iturburua editatu nahi duzula?
-# Console messages
-warning.Console_must_be_enabled=Kontsolak gaituta egon behar du
-warning.Command_line_blocked?=Komando-lerroa blokeatuta?
-warning.dollar_change=Kontsolako komando-lerroko $() funtzioaren esanahia aldatu da, lehen $=getElementById(id) zen eta orain berriz $=querySelector(selector) da. $("#%S") erabil dezakezu bere ordez.
-message.Reload_to_activate_window_console=Birkargatu kontsola-leihoa aktibatzeko
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Birkargatu orria honen iturburua eskuratzeko:
-message.The_resource_from_this_URL_is_not_text=URL honetako baliabidea ez da testua
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Joan atzera panel honetara
-firebug.history.Stay_on_this_panel=Jarraitu panel honetan
-firebug.history.Go_forward_to_this_panel=Joan aurrera panel honetara
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Joan atzera
-firebug.history.Go_forward=Joan aurrera
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Script-ak panela inaktibo zegoen orria kargatzean
-script.suggestion.inactive_during_page_load2=<a>Birkargatu</a> iturburu guztiak ikusteko
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript desgaituta dago
-script.suggestion.javascript_not_enabled=Ikusi Firefox > Tresnak > Aukerak > Edukia > Gaitu Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Gaitu Javascript eta freskatu
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Script guztiak iragazi dira
-script.suggestion.all_scripts_filtered=Ikusi script-en iragazkiaren ezarpena tresna-barra panelean
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=Sistemaren iturburuak ezin dira araztu
-script.suggestion.no_system_source_debugging=Momentuz Firebug ezin da erabili erabiltzaile-agentearen barneko fitxategiak arazteko. Ikus <a>5110 arazoa</a> arrazoia ikusteko.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=Ez dago Javascript koderik orri honetan
-script.suggestion.no_javascript2=<script> etiketek "type" atributua badute, "text/javascript" edo "application/javascript" balioa izan behar dute. Gainera script-ek analizagarriak izan behar dute (sintaktikoki zuzenak).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Araztailea dagoeneko aktibo dago
-script.suggestion.debugger_active=Araztailea beste orri bateko eten-puntu batean geldituta dago une honetan.
-script.button.Go_to_that_page=Joan orri horretara
-script.warning.debugger_not_activated=Araztailea ez dago aktibatuta
-script.suggestion.debugger_not_activated=Araztailea ez dago aktibatuta
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Itxi
-firebug.View=Ikusi
-firebug.Help=Laguntza
-firebug.Run=Exekutatu
-firebug.Copy=Kopiatu
-firebug.History=Historia
-firebug.Run_the_entered_command=Exekutatu sartutako komandoa
-firebug.Clear_the_Command_Editor=Garbitu komando-editorea
-firebug.Copy_the_script_as_a_bookmarklet=Kopiatu script-a laster-markapplet bezala
-firebug.Insert_a_previously_entered_command=Txertatu aurrez sarturiko komando bat
-firebug.AlwaysOpenInWindow=Ireki beti leiho berrian
-firebug.OpenWith=Ireki editorean
-firebug.menu.tip.Open_With=Ireki edukia kanpoko editore batean
-firebug.Permissions=Guneak...
-firebug.Configure_Editors=Konfiguratu editoreak
-script.tip.Script_Type=Iragazi script motaren arabera
-script.tip.Script_Filter_Static=Orriarekin batera kargaturiko script-ak soilik erakutsi
-script.tip.Script_Filter_Evals=Bistaratu orriarekin batera kargaturiko script-ak eta eval() bidez sorturiko script-ak
-script.tip.Script_Filter_Events=Bistaratu orriarekin batera kargaturiko script-ak, eval() bidez sorturiko script-ak eta gertaera-entzuleak
-script.tip.Script_Filter_All=Bistaratu mota guztietako script-ak
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Exekutatu berriz
-script.tip.Rerun=Exekutatu berriz uneko pila-dei funtzioa
-script.Continue=Jarraitu
-script.tip.Continue=Jarraitu JavaScript exekuzioarekin
-script.Step_Over=Jauzi
-script.tip.Step_Over=Exekutatu hurrengo komandoa
-script.Step_Into=Sartu
-script.tip.Step_Into=Exekutatu hurrengo komandoa eta jauzi funtzioetara
-script.Step_Out=Irten
-script.tip.Step_Out=Exekutatu funtzioaren gorputzaren gainerako zatia eta itzuli bere deitzailera
-firebug.RunUntil=Exekutatu lerro honetaraino
-script.tip.Run_Until=Exekutatu JavaScript zehazturiko lerroraino
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Ikuskatu
-firebug.InspectElement=Ikuskatu elementua
-firebug.InspectElementWithFirebug=Ikuskatu elementua Firebug-ekin
-firebug.BreakOnErrors=Eten erroreetan
-firebug.InspectTooltip=Klikatu orriko elementu bat ikuskatzeko
-firebug.EditHTMLTooltip=Editatu HTML hau
-firebug.Profile=Analizatu
-firebug.Clear=Garbitu
-firebug.ClearConsole=Garbitu kontsola
-firebug.ClearTooltip=Garbitu kontsola
-firebug.All=Guztiak
-firebug.Images=Irudiak
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Konfiguratutako Firebug editoreak
-editors.Editor=Editorea
-editors.Executable=Exekutagarria
-editors.Launch_Arguments=Abioko argumentuak
-editors.Add=Gehitu
-editors.Remove=Kendu
-editors.Change=Aldatu
-editors.Move_Up=Mugitu gora
-editors.Close=Itxi
-editors.Browse=Arakatu...
-changeEditor.Editor_Configuration=Editorearen konfigurazioa
-changeEditor.Name=Izena:
-changeEditor.Executable=Exekutagarria:
-changeEditor.CmdLine=Argumentuak:
-changeEditor.Supplied_arguments=Firebug-ek hornitutako argumentuak
-changeEditor.URL_of_file=Fitxategiaren URLa (%url ez badago, %file erabiliko da modu lehenetsian)
-changeEditor.Path_to_local_file=Fitxategi lokalerako bidea (edo aldi baterako kopiarakoa)
-changeEditor.Line_number=Lerro zenbakia (erabilgarri badago)
-changeEditor.Invalid_Application_Path=Baliogabeko aplikazio-bidea
-changeEditor.Application_does_not_exist=Zehazturiko aplikazioa ez da existitzen!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Editatu
-firebug.css.sourceEdit=Editatu iturburua
-firebug.css.sourceEdit.tooltip=Editatu arakatzaileak kargaturiko estilo-orriaren iturburua
-firebug.css.liveEdit=Zuzeneko edizioa
-firebug.css.liveEdit.tooltip=Editatu arakatzailetik erauzitako CSSa
-firebug.EditCSSTooltip=Editatu estilo-orri hau
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Guneak ez dira gordetzen nabigazio pribatua moduan
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Erakutsi etenaldien jakinarazpenak
-firebug.breakpoint.tip.Show_Break_Notifications=Erakutsi jakinarazpen-kaxa bat gertaera batean eten ezaugarri batek edo araztaile; gako-hitzak JavaScript exekuzioa gelditzean
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=Etenaldien jakinarazpenak gaitu/desgaitu ditzakezu <a>paneleko menuan</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2='Desgaitu' botoia klikatzean 'araztailea' desgaitutako eten-puntu batekin gainidazten da.
-firebug.bon.tooltip.disableDebuggerKeyword2=Desgaitutako eten-puntu bat sortzen du
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(Script-ak panelak gaituta egon behar du ezaugarri hau erabiltzeko)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=Ez dago objektu umerik
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=gehiago
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Erreferentzia zirkularra
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=Elementu %1$S Biltegian;%1$S elementu Biltegian
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Objektuaren propietateak
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(iradokizunik ez)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=Segur aski URL objektua baliogabetua izan da revokeObjectURL metodoa erabiliz.
-firebug.failedToPreviewImageURL=Huts egin du emandako URLa kargatzean
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memoria-analizatzailea abiatuta
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Analizatzean gehituriko objektuak
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memoria-analizatzailearen emaitzak
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Saio osoa
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(irteerarik ez)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(kate huts bat)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie gehigarria detektatu da. Firebug 1.10etik aurrera integratuta dago modu lehenetsian. Gatazkak saihesteko Firecookie desinstalatu behar duzu.\n\nGehigarria desinstalatzen bukatzeko berrabiarazi egin behar duzu.
-cookies.legacy.uninstall=Desinstalatu
-cookies.legacy.uninstall_and_restart=Desinstalatu eta berrabiarazi
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Komando-lerroaren APIa
-console.cmd.help_title_desc=Sakatu F1 lineako Firebug-en laguntza irekitzeko
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Emandako id-a duen elementu bakarra itzultzen du.
-console.cmd.help.$$=Emandako CSS hautatzailearekin bat datozen elementuen array bat itzultzen du.
-console.cmd.help.$x=Emandako XPath adierazpenarekin bat datozen elementuen array bat itzultzen du.
-console.cmd.help.dir=Objektu baten propietate guztien zerrenda interaktibo bat inprimatzen du. DOM paneleko ikuspegiaren itxura bera du.
-console.cmd.help.dirxml=HTML edo XML elementu baten XML iturburu-zuhaitza inprimatzen du. DOM paneleko ikuspegiaren itxura bera du. Edozein nodotan klik egin dezakezu HTML panelean ikuskatzeko.
-console.cmd.help.cd=Komando-lerroko adierazpenak orriko goi-mailako leihoari dagozkio modu lehenetsian. cd() erabiliz marko baten leihoa erabil dezakezu horren ordez.
-console.cmd.help.clear=Kontsola garbitzen du.
-console.cmd.help.copy=Emandako parametroa arbelean kopiatzen du. Hau funtzio batek itzulitako balioa edo objektu bat izan daiteke.
-console.cmd.help.inspect=Objektu bat ikuskatzen du panel egokienean edo hautazko bigarren argumentuan zehazturiko panelean. Erabilgarri dauden panelen izenak "html", "stylesheet", "script" eta "dom" dira.
-console.cmd.help.keys=Objektuaren propietate guztien izenak dituen array bat itzultzen du.
-console.cmd.help.values=Objektuaren propietate guztien balioak dituen array bat itzultzen du.
-console.cmd.help.debug=Eten-puntu bat gehitzen du funtzio baten lehen lerroan.
-console.cmd.help.undebug=Funtzio baten lehen lerroko eten-puntua kentzen du.
-console.cmd.help.monitor=Funtzio bati egindako dei guztiak erregistratzea aktibatzen du.
-console.cmd.help.unmonitor=Funtzio bati egindako dei guztiak erregistratzea desaktibatzen du.
-console.cmd.help.monitorEvents=Objektu bati bidalitako gertaera guztiak erregistratzea aktibatzen du. Hautazko bigarren argumentuan erregistratu beharreko gertaera edo gertaera motak zehaztu daitezke. Erabil daitezkeen gertaera motak hauek dira: "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul" eta "clipboard".
-console.cmd.help.unmonitorEvents=Objektu bati bidalitako gertaera guztiak erregistratzea desaktibatzen du. Hautazko bigarren argumentuan erregistratzea zein gertaera edo gertaera motarentzat desaktibatu behar den zehaztu daiteke.
-console.cmd.help.profile=JavaScript-en analizatzailea aktibatzen du. Hautazko bigarren argumentua analizatzailearen txosteneko goiburuan inprimatuko den testua da.
-console.cmd.help.profileEnd=JavaScript-en analizatzailea desaktibatzen du eta bere txostena inprimatu.
-console.cmd.help.table=Emandako datuak taula moduan erregistratzeko aukera ematen du. Metodoak taula moduko datuak adierazten dituen (array-en array-a edo objektuen zerrenda) derrigorrezko parametro bat hartzen du. Hautazko bigarren parametroa erregistratu beharreko zutabeak eta/edo propietateak adierazteko erabil daiteke.
-console.cmd.help.$0=Ikuskatzailea erabiliz hautatutako azken elementua adierazten du.
-console.cmd.help.$1=Ikuskatzailea erabiliz hautatutako azken-aurreko elementua adierazten du.
-console.cmd.help.$n=Ikuskatzailea erabiliz hautatutako azken 5 elementuetako bat adierazten du. Metodo honek elementuaren indizea (0tik hasita) adierazten duen derrigorrezko parametro bat hartzen du.
-console.cmd.help.help=Komando erabilgarri guztien laguntza bistaratzen du.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Komando honen laguntza-orria ez dago eskuragarri.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Idatzi hautatzaile pertsonalizatu bat edo eskuin klik CSS araua eta hautatu <b>Eskuratu bat datozen elementuak</b>
-css.selector.noSelectionResults=Ez dago bat datorren elementurik
-css.selector.selectorError=Hautapenak huts egin du:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elementuak
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=CSS hautatzaile batekin bat datozen elementuak bistaratzen ditu
-css.selector.TryASelector=Probatu hautatzaile bat...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Eskuratu bat datozen elementuak
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Huts egin du zehazturiko hautzaile-katea exekutatzean
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Dokumentatu faseen hasierak eta dokumentuaren kargarekiko igarotako denbora erlatiboa:
-perftiming.events.label=Dokumentuaren kargarekiko gertaeren denbora erlatiboak
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Errendimendu-denborak
-perftiming.details_title_desc=Denbora zehatzak
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Zerbitzariaren konexioa bukatzen deneko denbora.
-perftiming.connectStart=Zerbitzariaren konexioa hasi aurreko denbora.
-perftiming.domComplete=Dokumentua prest egon aurreko denbora.
-perftiming.domContentLoadedEventEnd=DOMContentLoaded gertaera osatu ondorengo denbora.
-perftiming.domContentLoadedEventStart=DOMContentLoaded gertaera hasi aurreko denbora.
-perftiming.domInteractive=Elkarrekintzarako prest egon aurreko denbora.
-perftiming.domLoading=Kargatzeko prest egon aurreko denbora.
-perftiming.domainLookupEnd=Domeinu-izenaren kontsulta egin ondorengo denbora.
-perftiming.domainLookupStart=Domeinu-izenaren kontsulta egin aurreko denbora.
-perftiming.fetchStart=Baliabidea eskuratzen hasten deneko denbora
-perftiming.loadEventEnd=load gertaera osatzen deneko denbora.
-perftiming.loadEventStart=load gertaera abiatu aurreko denbora.
-perftiming.navigationStart=Aurreko dokumentua deskargatzen hasi ondorengo denbora.
-perftiming.redirectCount=Birbidalketa kopurua azken ez-birbidalketaren ondoren.
-perftiming.redirectEnd=Azken birbidalketaren erantzuna amaitu ondorengo denbora.
-perftiming.redirectStart=Birbidalketa bat hasi duen eskuratzearen denbora.
-perftiming.requestStart=Zerbitzariaren eskaera baten aurreko denbora.
-perftiming.responseEnd=Erantzun edo konexio bat amaitu ondorengo denbora.
-perftiming.responseStart=Erantzun baten hasieraren aurreko denbora
-perftiming.unloadEventEnd=Aurreko dokumentua deskargatu ondorengo denbora.
-perftiming.unloadEventStart=unload gertaera abiatu aurreko denbora.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Kontsola
+panel.tip.console=Kontsolako mezuak behatu eta JavaScript komandoak exekutatzeko aukera ematen du
+Panel-net=Sarea
+panel.tip.net=Sareko trafikoa aztertzeko aukera ematen du
+Panel-html=HTML
+panel.tip.html=DOM nodoak ikuskatu eta manipulatzeko aukera ematen du
+Panel-stylesheet=CSS
+panel.tip.stylesheet=CSS estilo-orriak ikuskatu eta manipulatzeko aukera ematen du
+Panel-script=Script-ak
+panel.tip.script=JavaScript arazteko aukera ematen du
+Panel-dom=DOM
+panel.tip.dom=DOM propietateak ikuskatu eta manipulatzeko aukera ematen du
+Panel-css=Estiloa
+panel.tip.css=Hautatutako DOM nodoaren CSS arauak ikuskatu eta manipulatzeko aukera ematen du
+Panel-computed=Kalkulatuak
+panel.tip.computed=Hautatutako DOM nodoaren kalkulatutako CSS balioak ikuskatzeko aukera ematen du
+Panel-layout=Diseinua
+panel.tip.layout=Hautatutako DOM nodoaren diseinuaren datuak ikuskatu eta manipulatzeko aukera ematen du
+Panel-domSide=DOM
+panel.tip.domSide=Hautatutako DOM nodoaren DOM propietateak ikuskatu eta manipulatzeko aukera ematen du
+Panel-watches=Behatu
+panel.tip.watches=Uneko pilaren markoan eskuragarri dauden JavaScript aldagaiak ikuskatu eta behaketa-adierazpenak definitzeko aukera ematen du
+Panel-breakpoints=Eten-puntuak
+panel.tip.breakpoints=Ezarritako eten-puntuak manipulatzeko aukera ematen du
+Panel-callstack=Pila
+panel.tip.callstack=Ahalbidetu javascript deien pila ikustea
+Panel-scopes=Esparruak
+firebug.DetachFirebug=Ireki Firebug leiho berri batean
+firebug.AttachFirebug=Atxiki firebug interneteko nabigatzaileari
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=Firebug %1$S guztira;%1$S Firebug guztira
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Desaktibatuta
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=arakatzailean
+minimized=Minimizatuta
+enablement.for_all_pages=Orrialde guztietan
+enablement.on=Aktibatuta
+enablement.off=Desaktibatuta
+enablement.Panel_activation_status=Panelaren aktibazio-egoera:
+none=Itxita
+Firebug_-_inactive_for_current_website=Firebug - inaktibo uneko webgunearentzat
+Activate_Firebug_for_the_current_website=Aktibatu Firebug uneko webgunearentzat
+Minimized=Minimizatuta
+Minimize_Firebug=Minimizatu Firebug
+On_for_all_web_pages=Martxan web orrialde guztientzat
+firebug.menu.tip.On_for_all_Web_Sites=Lehenetsi Firebug webgune guztietan aktibatzea
+firebug.menu.Clear_Activation_List=Garbitu aktibazio-zerrenda
+firebug.menu.tip.Clear_Activation_List=Hustu Firebug aktibo egonen den web orrialdeen zerrenda
+firebug.menu.Detached=Banatuta
+firebug.menu.tip.Detached=Banatu Firebug leiho bereizi batera
+firebug.menu.Top=Goian
+firebug.menu.tip.Top=Lerrokatu Firebug erabiltzaile-agentearen leihoaren goian
+firebug.menu.Bottom=Behean
+firebug.menu.tip.Bottom=Lerrokatu Firebug erabiltzaile-agentearen leihoaren behean
+firebug.menu.Left=Ezkerrean
+firebug.menu.tip.Left=Lerrokatu Firebug erabiltzaile-agentearen leihoaren ezkerrean
+firebug.menu.Right=Eskuinean
+firebug.menu.tip.Right=Lerrokatu Firebug erabiltzaile-agentearen leihoaren eskuinean
+firebug.uiLocation=Firebug interfazearen kokapena
+firebug.menu.tip.UI_Location=Firebug erabiltzaile-interfazearen kokapena
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Firebug aukerak
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Erakutsi panel guztiak
+console.option.Show_Command_Line=Erakutsi komando-lerroa
+console.option.tip.Show_Command_Line=Fokuratu komando-lerroa / Erakutsi komando-lerroaren laster-leihoa
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=Erakutsi JavaScript erroreak
+console.option.tip.Show_JavaScript_Errors=Erregistratu JavaScript errore-mezuak kontsolan
+ShowJavaScriptWarnings=Erakutsi JavaScript abisuak
+console.option.tip.Show_JavaScript_Warnings=Erregistratu JavaScript abisu-mezuak kontsolan
+ShowCSSErrors=Erakutsi CSS erroreak
+console.option.tip.Show_CSS_Errors=Erregistratu CSS errore-mezuak kontsolan
+ShowXMLHTMLErrors=Erakutsi XML/HTML erroreak
+console.option.tip.Show_XML_HTML_Errors=Erregistratu XML eta HTML errore-mezuak kontsolan
+ShowStackTrace=Erakutsi aztarna-pila erroreekin
+console.option.tip.Show_Stack_Trace=Erakutsi errore-mezuen aztarna-pilaren informazioa
+ShowXMLHttpRequests=Erakutsi XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Erregistratu XMLHttpRequest-ak kontsolan
+ShowChromeErrors=Erakutsi Chrome erroreak
+console.option.tip.Show_System_Errors=Erregistratu programaren eta gehigarrien barneko errore-mezuak kontsolan
+ShowChromeMessages=Erakutsi Chrome mezuak
+console.option.tip.Show_System_Messages=Erregistratu programaren eta gehigarrien barne-mezuak kontsolan
+ShowExternalErrors=Erakutsi kanpoko erroreak
+console.option.tip.Show_External_Errors=Erregistratu kanpoko iturburuetatik datozen errore-mezuak kontsolan
+ShowNetworkErrors=Erakutsi sareko erroreak
+console.option.tip.Show_Network_Errors=Erregistratu sareko errore-mezuak kontsolan
+JavascriptOptionsStrict=Abisu zorrotzak (errendimendua jaisten da)
+console.option.tip.Show_Strict_Warnings=Erregistratu abisu zorrotzak ere kontsolan
+Command_History=Komandoen historia
+console.option.Show_Command_Editor=Erakutsi komando-editorea
+console.option.tip.Show_Command_Editor=Aldatu komando-editorera
+commandLineShowCompleterPopup=Azaleratu lehio berri batean osatze automatikoaren emaitza zerrenda
+console.option.tip.Show_Completion_List_Popup=Azaleratu lehio berri batean komandoentzako osatze automatikoaren zerrenda
+Assertion=Asertzio-hutsegitea
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (%S lerroa)
+LineAndCol=%S (%S lerroa, %S zutabea)
+InstanceLine=%S #%S (%S lerroa)
+StackItem=%S (%S lerroa %S)
+SystemItem=<Sistema>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Ikuskatu %S panelean
+panel.tip.Inspect_In_Panel=Aldatu %S panelera objektua behatzeko
+NoName=(izenik ez)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Erakutsi testu osoa
+html.option.tip.Show_Full_Text=Ez moztu elementuen edukiak
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Erakutsi zuriunea
+html.option.tip.Show_Whitespace=Erakutsi zuriunea nodoen barnean
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Erakutsi iruzkinak
+html.option.tip.Show_Comments=Erakutsi iruzkin-nodoak
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Erakutsi entitateak sinbolo bezala
+html.option.tip.Show_Entities_As_Symbols=Erakutsi XML entitate guztiak beren irudikapen sinbolikoan
+html.option.Show_Entities_As_Names=Erakutsi entitateak izen bezala
+html.option.tip.Show_Entities_As_Names=Erakutsi XML entitate guztiak beren izenak erabiliz
+html.option.Show_Entities_As_Unicode=Erakutsi entitateak Unicode bezala
+html.option.tip.Show_Entities_As_Unicode=Erakutsi XML entitate guztiak beren Unicode adierazpidean
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Nabarmendu aldaketak
+html.option.tip.Highlight_Mutations=Nabarmendu nodoen barneko aldaketak
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Zabaldu aldaketak
+html.option.tip.Expand_Mutations=Zabaldu zuhaitz-ikuspegia aldatutako nodoak bistaratzeko
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Korritu aldaketak ikusgai jartzeko
+html.option.tip.Scroll_To_Mutations=Korritu zuhaitz-ikuspegia aldatutako nodoak ikusgai jartzeko
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Erakutsi informazio-kaxa azkarra
+inspect.option.tip.Show_Quick_Info_Box=Erakutsi unean ikuskatutako elementuari buruzko informazioa laster-leiho batean
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Itzaldun kaxaren eredua
+inspect.option.tip.Shade_Box_Model=Eredu kaxaren atal ezberdinei itzala eman
+ScrollIntoView=Korritu ikusgai jartzeko
+html.tip.Scroll_Into_View=Korritu orrialdea elementua ikusgai jartzeko
+NewAttribute=Atributu berria...
+html.tip.New_Attribute=Gehitu atributu berri bat elementu honi
+html.Edit_Node=Editatu %S...
+html.Node=Nodoa
+html.tip.Edit_Node=Editatu %S testu-editore osoa erabiliz
+DeleteElement=Ezabatu elementua
+html.Delete_Element=Ezabatu elementua zuhaitzetik
+DeleteNode=Ezabatu nodoa
+html.Delete_Node=Ezabatu nodoa zuhaitzetik
+# Quick Info Box
+quickInfo=Informazio azkarra
+computedStyle=Kalkulatutako estiloa
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Eten aldatzean
+html.Disable_Break_On_Mutate=Desgaitu aldatzean etetea
+html.label.Break_On_Text_Change=Eten testua aldatzen denean
+html.label.HTML_Breakpoints=HTML eten-puntuak
+html.label.Break_On_Attribute_Change=Eten atributua aldatzen denean
+html.tip.Break_On_Attribute_Change=Gelditu Javascript exekuzioa elementu honen atributu bat aldatzen denean
+html.label.Break_On_Child_Addition_or_Removal=Eten ume bat gehitu edo kentzean
+html.tip.Break_On_Child_Addition_or_Removal=Gelditu Javascript exekuzioa elementu honi nodo ume bat gehitu edo kentzen zaionean
+html.label.Break_On_Element_Removal=Eten elementua kentzean
+html.tip.Break_On_Element_Removal=Gelditu Javascript exekuzioa elementua kentzen denean
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Zabaldu/Uzkurtu dena
+html.tip.Expand/Contract_All=Zabaldu/Uzkurtu ume guztiak errekurtsiboki
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Eten propietatea aldatzean
+dom.tip.Break_On_Property_Change=Gelditu Javascript exekuzioa propietate hau aldatzen denean
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Desgaitu 'Eten propietatea aldatzean'
+dom.label.DOM_Breakpoints=DOM eten-puntuak
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Editatu "%S" atributua...
+html.tip.Edit_Attribute=Editatu elementu honen "%S" atributuaren balioa
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Ezabatu "%S" atributua
+html.tip.Delete_Attribute=Ezabatu elementu honen "%S" atributua
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Hemendik heredatua:
+SothinkWarning=Sothink SWF Catcher gehigarriak Firebug-ek behar bezala lan egitea eragozten du.<br/><br/>Mesedez irakurri <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">Firebug-en MEG-eko orri hau</a> laguntza eskuratzeko.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=abcdefghijklmnñopqrstuvwxyz. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=Ez dago araurik. <a>Arau bat sor dezakezu</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=Elementu honek ez dauka estilo-araurik. <a>Arau bat sor dezakezu</a>.
+EditStyle=Editatu elementuaren estiloa...
+style.tip.Edit_Style=Editatu elemententuaren barne estiloak
+AddRule=Gehitu araua...
+css.tip.AddRule=Gehitu elementu honentzako arau orokor bat
+NewRule=Arau berria...
+css.tip.New_Rule=Gehitu arau berri bat
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Ezabatu "%S"
+css.tip.Delete_Rule=Ezabatu "%S" araua eta bere propietate guztiak
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Editatu Media Query-a...
+css.menu.tip.Edit_Media_Query=Editatu arau honi loturiko media query-a
+NewProp=Propietate berria...
+css.tip.New_Prop=Gehitu propietate berri bat uneko arauari
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=Editatu "%S"...
+css.tip.Edit_Prop=Editatu "%S" propietatearen balioa
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=Desgaitu "%S"
+css.tip.Disable_Prop=Desgaitu "%S" propietatea
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=Ezabatu "%S"
+css.tip.Delete_Prop=Ezabatu "%S" propietatea
+# Console context menu labels.
+BreakOnThisError=Eten errore honetan
+console.menu.tip.Break_On_This_Error=Gelditu Javascript exekuzioa errore hau gertatu orduko
+BreakOnAllErrors=Eten errore guztietan
+console.menu.tip.Break_On_All_Errors=Gelditu Javascript exekuzioa errore bat gertatu orduko
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Jarraitu Throw/Catch
+script.option.tip.Track_Throw_Catch=Jarraitu salbuespenak try/catch bloke batek harrapatzen baditu ere
+UseLastLineForEvalName=Erabili iturburuko azken lerroa eval() izenentzat
+UseMD5ForEvalName=Erabili MD5 eval() izenentzat
+# Breakpoints side panel
+Breakpoints=Eten-puntuak
+ErrorBreakpoints=Eten-puntu erroreak
+LoggedFunctions=Erregistratutako funtzioak
+EnableAllBreakpoints=Gaitu eten-puntu guztiak
+breakpoints.option.tip.Enable_All_Breakpoints=Gaitu zerrendatutako eten-puntu guztiak
+DisableAllBreakpoints=Desgaitu eten-puntu guztiak
+breakpoints.option.tip.Disable_All_Breakpoints=Desgaitu zerrendatutako eten-puntu guztiak
+ClearAllBreakpoints=Kendu eten-puntu guztiak
+breakpoints.option.tip.Clear_All_Breakpoints=Kendu zerrendatutako eten-puntu guztiak
+ConditionInput=Adierazpen hau egia denean soilik geldituko da exekuzioa eten-puntu honetan:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Kendu eten-puntua
+breakpoints.tip.Remove_Breakpoint=Kendu eten-puntua
+breakpoints.Disable_Breakpoint=Desgaitu eten-puntua
+breakpoints.tip.Disable_Breakpoint=Desgaitu eten-puntua
+breakpoints.Enable_Breakpoint=Gaitu eten-puntua
+breakpoints.tip.Enable_Breakpoint=Gaitu eten-puntua
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Jarraitu
+script.balloon.Disable=Desgaitu
+ScriptsFilterStatic=Erakutsi script estatikoak
+ScriptsFilterEval=Erakutsi script estatikoak eta eval bidezkoak
+ScriptsFilterEvent=Erakutsi script estatikoak eta gertaerenak
+ScriptsFilterAll=Erakutsi script estatikoak, gertaerenak eta eval bidezkoak
+ScriptsFilterStaticShort=estatikoak
+ScriptsFilterEvalShort=eval
+ScriptsFilterEventShort=gertaerak
+ScriptsFilterAllShort=guztiak
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Zabaldu dena
+callstack.tip.Expand_All=Zabaldu pila-markoko funtzio guztiak
+callstack.Collapse_All=Tolestu dena
+callstack.tip.Collapse_All=Tolestu pila-markoko funtzio guztiak
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Pila-markoak script exekuzioa gelditzean soilik erakusten dira.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Erakutsi erabiltzaileak definitutako propietateak
+dom.option.tip.Show_User_Props=Erakutsi erabiltzaileak definitutako objektu-propietateak
+ShowUserFuncs=Erakutsi erabiltzaileak definitutako funtzioak
+dom.option.tip.Show_User_Funcs=Erakutsi erabiltzaileak definitutako objektu-metodoak
+ShowDOMProps=Erakutsi DOM propietateak
+dom.option.tip.Show_DOM_Props=Erakutsi DOM barnean zehazturiko propietateak
+ShowDOMFuncs=Erakutsi DOM funtzioak
+dom.option.tip.Show_DOM_Funcs=Erakutsi DOM barnean zehazturiko funtzioak
+ShowDOMConstants=Erakutsi DOM konstanteak
+dom.option.tip.Show_DOM_Constants=Erakutsi DOM barnean zehazturiko konstanteak
+ShowInlineEventHandlers=Erakutsi barneko gertaera-maneiatzaileak
+ShowInlineEventHandlersTooltip=Erakutsi eskuragarri dauden barneko gertaera-maneiatzaileak, funtzio batekin loturarik ez dutenak
+ShowOwnProperties=Erakutsi propietate propioak soilik
+ShowOwnPropertiesTooltip=Ez erakutsi prototipo-katea
+ShowEnumerableProperties=Erakutsi propietate zenbakigarriak soilik
+ShowEnumerablePropertiesTooltip=Ez erakutsi propietate ez-zenbakigarriak
+NoMembersWarning=Ez dago erakusteko propietaterik objektu honentzat
+NewWatch=Behaketa-adierazpen berria...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Gehitu behaketa
+watch.tip.Add_Watch=Gehitu hautapena/objektua Behaketa albo-panelera behatzeko
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Kopiatu iturburu-kodea
+script.tip.Copy_Source_Code=Kopiatu hautatutako iturburu-kodea arbelean
+Use_hash_plus_number_to_go_to_line=Erabili #<zenbakia> lerro horretara joateko
+CopyValue=Kopiatu balioa
+dom.tip.Copy_Value=Kopiatu propietatearen balioa arbelean
+Copy_Name=Kopiatu izena
+dom.tip.Copy_Name=Kopiatu propietatearen izena arbelean
+Copy_Path=Kopiatu bidea
+dom.tip.Copy_Path=Kopiatu propietatearen bidea
+NewProperty=Propietate berria...
+EditProperty=Editatu propietatea...
+dom.tip.Edit_Property=Editatu propietatearen balioa...
+EditVariable=Editatu aldagaia...
+stack.tip.Edit_Variable=Editatu aldagaiaren balioa...
+EditWatch=Editatu behaketa...
+watch.tip.Edit_Watch=Editatu behaketa-adierazpenaren balioa
+DeleteProperty=Ezabatu propietatea
+dom.tip.Delete_Property=Ezabatu propietatea
+DeleteWatch=Ezabatu behaketa
+DeleteAllWatches=Ezabatu behaketa guztiak
+watch.tip.Delete_Watch=Ezabatu behaketa-adierazpena
+watch.tip.Delete_All_Watches=Ezabatu behaketa-adierazpen guztiak
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Ezarri eten-puntua
+script.tip.Set_Breakpoint=Uneko lerroan eten-puntu bat ezartzea txandakatzen du
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Editatu eten-puntuaren baldintza...
+breakpoints.tip.Edit_Breakpoint_Condition=Editatu eten-puntu honetan Javascript exekuzioa geldiarazten duen baldintza
+NoBreakpointsWarning=Ez dago eten-punturik ezarrita orri honetan
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Erakutsi aplikatutako estiloak soilik
+style.option.tip.Only_Show_Applied_Styles=Erakutsi elementuari aplikatutako estiloak soilik
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Erakutsi erabiltzaile-agentearen CSSa
+style.option.tip.Show_User_Agent_CSS=Erakutsi erabiltzaile-agenteak definituriko CSSa ere
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Koloreak Hex bezala
+computed.option.tip.Colors_As_Hex=Erakutsi koloreak formatu hexadezimalean
+computed.option.label.Colors_As_RGB=Koloreak RGB bezala
+computed.option.tip.Colors_As_RGB=Erakutsi koloreak RGB formatuan
+computed.option.label.Colors_As_HSL=Koloreak HSL bezala
+computed.option.tip.Colors_As_HSL=Erakutsi koloreak HSL formatuan
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Bistaratu :active pseudo-klase estiloak
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Bistaratu :hover pseudo-klase estiloak
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Bistaratu :focus pseudo-klase estiloak
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Ikuskatu deklarazioa
+css.tip.Inspect_Declaration=Ikuskatu letra-tipo honen deklarazioa
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Hedatu laburtutako propietateak
+css.option.tip.Expand_Shorthand_Properties=Hedatu laburtutako CSS propietateak bere osagaietan
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Ordenatu alfabetikoki
+computed.option.tip.Sort_Alphabetically=Antolatu estiloak izenaren arabera/taldekatu estiloak kategorietan
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Erakutsi Mozilla-ren estilo espezifikoak
+computed.option.tip.Show_Mozilla_Specific_Styles=Erakutsi -moz aurrizkia duten estiloak ere
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=Elementu honek ez dauka erabiltzaileak definituriko estilo-araurik.
+script.Type_any_key_to_filter_list=Idatzi edozein gako zerrenda iragazteko
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=betegarria
+LayoutBorder=ertza
+LayoutMargin=marjina
+LayoutPosition=kokapena
+LayoutAdjacent=albokoa
+position=kokapena
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Erakutsi erregelak eta gidak
+layout.option.tip.Show_Rulers=Erakutsi erregela eta gidak orrian diseinu-kaxaren zatiak nabarmentzean
+# Net panel
+Loading=Kargatzen...
+Headers=Goiburuak
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Garbitu eskaera-zerrenda
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Berrezarri goiburua
+net.header.tip.Reset_Header=Berrezarri goiburuen bistaratzea
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URLa
+net.header.URL_Tooltip=Eskatutako URLa eta erabilitako HTTP metodoa
+net.header.Status=Egoera
+net.header.Status_Tooltip=Jasotako erantzunaren egoera
+net.header.Domain=Domeinua
+net.header.Domain_Tooltip=Exekutatutako eskaeraren domeinua
+net.header.Size=Tamaina
+net.header.Size_Tooltip=Jasotako erantzunaren tamaina (tamaina konprimatua konprimatutako erantzunen kasuan)
+net.header.Timeline=Denbora-lerroa
+net.header.Timeline_Tooltip=Eskaera-erantzuna joan-etorriaren denboraren informazio zehatza
+net.header.Local_IP=IP lokala
+net.header.Local_IP_Tooltip=Eskaerarekin loturiko IP helbide lokala eta ataka-zenbakia
+net.header.Remote_IP=Urruneko IPa
+net.header.Remote_IP_Tooltip=Eskaerarekin loturiko urruneko IP helbidea eta ataka-zenbakia
+net.header.Protocol=Protokoloa
+net.header.Protocol_Tooltip=Baliabidea sarean kokatzeko erabilitako URL protokoloa
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=XHR eten-puntuak
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Eten XHR-n
+net.tip.Break_On_XHR=Gelditu JavaScript exekuzioa XMLHttpRequest bat egin orduko
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=ikusi iturburua
+net.headers.pretty_print=inprimaketa txukuna
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Multimedia
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Post
+Put=Put
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Erantzuna
+URLParameters=Parametroak
+Cache=Cache-a
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Informazio orokorra
+fontviewer.Meta_Data=Metadatuak
+fontviewer.view_source=ikusi iturburua
+fontviewer.Preview=Aurrebista
+fontviewer.view_characters=ikusi karaktereak
+fontviewer.pretty_print=inprimaketa txukuna
+fontviewer.view_sample=ikusi lagina
+fontviewer.uniqueid=ID bakarra
+fontviewer.vendor=Hornitzailea
+fontviewer.license=Lizentzia
+fontviewer.description=Deskribapena
+fontviewer.copyright=Copyright-a
+fontviewer.credits=Kredituak
+fontviewer.trademark=Marka
+fontviewer.licensee=Baimenduna
+fontviewer.extension=Gehigarria
+fontviewer.pangram=abcdefghijklmnñopqrstuvwxyz
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Ordenatu gakoaren arabera
+jsonviewer.do_not_sort=Ez ordenatu
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Kopiatu "%S" JSON bezala
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Eskaeraren goiburuak
+ResponseHeaders=Erantzunaren goiburuak
+CachedResponseHeaders=Cache-ko erantzun-goiburuak
+PostRequestHeaders=Kargako jarioko eskaeren goiburuak
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=Eskaera zuzenean ebatzi da cache-tik, ondorioz ez dago zerbitzariaren erantzunik. Ikus behean cache-ko erantzuna.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebug-en log-aren muga gainditu da. Sarrera %1$S ez da erakusten.;Firebug-en log-aren muga gainditu da. %1$S sarrera ez dira erakusten.
+LimitPrefs=Hobespenak
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Muga aldatzeko aldatu '%S'
+Refresh=Freskatu
+panel.tip.Refresh=Freskatu panelaren ikuspegia
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Ireki fitxa berrian
+firebug.tip.Open_In_Tab=Ireki URLa arakatzailearen fitxa berri batean
+Open_Response_In_New_Tab=Ireki erantzuna fitxa berrian
+net.tip.Open_Response_In_New_Tab=Ireki erantzuna arakatzailearen fitxa berri batean
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Analisia
+ProfilerStarted=Analizatzailea martxan dago. Klikatu berriz ere 'Analizatu' bere txostena ikusteko
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, dei %2$S);(%1$Sms, %2$S dei)
+NothingToProfile=Aktibitaterik ez analizatzeko
+PercentTooltip=Funtzio honetan igarotako denboraren ehunekoa
+CallsHeaderTooltip=Funtzioa zenbat aldiz deitu den
+OwnTimeHeaderTooltip=Funtzioan igarotako denbora funtzio habiaratuak kontutan izan gabe
+TimeHeaderTooltip=Funtzioan igarotako denbora funtzio habiaratuak kontutan izanik
+AvgHeaderTooltip=Batez besteko denbora funtzio-deiak barne
+MinHeaderTooltip=Gutxieneko denbora funtzio-deiak barne
+MaxHeaderTooltip=Gehienezko denbora funtzio-deiak barne
+ProfileButton.Enabled.Tooltip=Analizatu JavaScript-en exekuzio-denbora
+ProfileButton.Disabled.Tooltip=Analizatu JavaScript-en exekuzio-denbora (Script-ak panelak gaituta egon behar du)
+Function=Funtzioa
+Percent=Ehunekoa
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Deiak
+OwnTime=Denbora propioa
+Time=Denbora
+Avg=Batez bestekoa
+Min=Minimoa
+Max=Maximoa
+File=Fitxategia
+# Support for standard actions.
+Copy=Kopiatu
+Cut=Ebaki
+Remove=Kendu
+Delete=Ezabatu
+Paste=Itsatsi
+SelectAll=Hautatu dena
+html.Copy_Node=Kopiatu %S
+html.tip.Copy_Node=Kopiatu %S nodoa eta bere eduki guztiak arbelera
+CopyInnerHTML=Kopiatu innerHTML
+html.tip.Copy_innerHTML=Kopiatu elementuaren edukiak arbelean
+CopyXPath=Kopiatu XPath
+html.tip.Copy_XPath=Kopiatu elementuaren XPath arbelean
+Copy_CSS_Path=Kopiatu CSS bidea
+html.tip.Copy_CSS_Path=Kopiatu elementuaren CSS bidea arbelean
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Kopiatu kokapena
+clipboard.tip.Copy_Location=Kopiatu objektuaren kokapenaren URLa arbelera
+CopyURLParameters=Kopiatu URL parametroak
+net.tip.Copy_URL_Parameters=Kopiatu URL parametroak arbelera
+CopyPOSTParameters=Kopiatu POST parametroak
+net.tip.Copy_POST_Parameters=Kopiatu POST parametroak arbelean
+CopyLocationParameters=Kopiatu kokapena parametroekin
+net.tip.Copy_Location_Parameters=Kopiatu URLa parametro eta guzti arbelera
+CopyRequestHeaders=Kopiatu eskaeraren goiburuak
+net.tip.Copy_Request_Headers=Kopiatu eskaeraren goiburuak arbelera
+CopyResponseHeaders=Kopiatu erantzunaren goiburuak
+net.tip.Copy_Response_Headers=Kopiatu erantzunaren goiburuak arbelera
+CopyResponse=Kopiatu erantzunaren gorputza
+net.tip.Copy_Response=Kopiatu erantzunaren gorputza arbelera
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Kopiatu errorea
+console.menu.tip.Copy_Error=Kopiatu errorearen informazioa arbelean
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Kopiatu funtzioa
+dom.tip.Copy_Source=Kopiatu funtzioaren iturburu-kodea arbelean
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Erregistratu "%S"(r)en deiak
+dom.tip.Log_Calls_To_Function=Erregistratu "%S" funtzioaren deiak Kontsola panelaren barnean
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Erregistratu gertaerak
+html.tip.Show_Events_In_Console=Erregistratu gertaeren informazioa kontsolan
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Gaituta
+panel.tip.Enabled=Txandakatu panelaren aktibazioa
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Erakutsi komando-lerroaren laster-leihoa
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Firebug kontsolak ez du '%S' onartzen
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Firebug komando-lerroak ez du '%S' onartzen
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Uneko leihoa:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Desgaitu 'Eten errore guztietan'
+console.Break_On_All_Errors=Eten errore guztietan
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Eten errore honetan
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Erabili gezi-teklak, tabuladorea edo Sartu tekla
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=Javascript desgaituta daukazu Firefox-en hobespenetan. Kontsola panela erabili nahi baduzu, gaitu egin behar duzu Tresnak > Aukerak > Edukia > Gaitu Javascript erabiliz
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=Elementu gehiegi daude array-an orrian nabarmentzeko (uneko muga %S da).\nIkus 'extensions.firebug.multiHighlightLimit' hobespena.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug komando-lerroa desgaituta dago XML orrietan. Gaitzeko <a>aldatu HTMLra</a>.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Erantzunaren gorputza
+net.sizeinfo.Post_Body=Eskaeraren gorputza
+net.sizeinfo.Total_Sent=Bidalitakoa guztira
+net.sizeinfo.Total_Received=Jasotakoa guztira
+net.sizeinfo.Including_HTTP_Headers=HTTP goiburuak barne
+net.ActivationMessage=Sarea panela aktibatuta. Panela inaktibo dagoen bitartean egindako eskaerak ez dira erakusten.
+net.responseSizeLimitMessage=Firebug-en erantzunaren tamainaren muga gainditu da. Klikatu <a>hemen</a> erantzun osoa Firefox-en fitxa berri batean irekitzeko.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Firebug-en eskaeraren tamainaren muga gainditu da.
+net.Break_On_XHR=Eten XHR-n
+net.label.Parameters=Parametroak
+net.label.Parts=Zatiak
+net.label.Source=Iturburua
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Berbidali
+net.tip.Resend=Bidali eskaera berriro
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Desgaitu arakatzailearen cache-a
+net.option.tip.Disable_Browser_Cache=Desgaitu arakatzailearen HTTP cache-a
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Erakutsi Paint gertaerak
+net.option.tip.Show_Paint_Events=Erakutsi MozAfterPaint gertaerak marra berde bezala denbora-lerroan
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Erakutsi BFCache erantzunak
+net.option.tip.Show_BFCache_Responses=Erakutsi baita Back-Forward Cache-ko erantzunak
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Eten hurrengoan
+script.Disable_Break_On_Next=Desgaitu hurrengoan etetea
+ShowHttpHeaders=Erakutsi HTTP goiburuak
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=eskaera %1$S;%1$S eskaera
+FromCache=cache-tik
+StopLoading=Utzi kargatzeari
+net.tip.Stop_Loading=Utzi erantzuna kargatzeari
+LargeData=(Datu oso handiak)
+ShowComputedStyle=Erakutsi kalkulatutako estiloa
+StyleGroup-text=Testua
+StyleGroup-background=Atzeko planoa
+StyleGroup-box=Kaxa-eredua
+StyleGroup-layout=Diseinua
+StyleGroup-other=Bestelakoa
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Kopiatu kolorea
+css.tip.Copy_Color=Kopiatu kolorea arbelean
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Kopiatu irudiaren kokapena
+css.tip.Copy_Image_Location=Kopiatu irudiaren URLa arbelean
+OpenImageInNewTab=Ireki irudia fitxa berrian
+css.tip.Open_Image_In_New_Tab=Ireki irudia arakatzailearen fitxa berrian
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Baztertu tresna barrako pila
+callstack.option.tip.Omit_Object_Path_Stack=Ez erakutsi objektuaren bide-pila
+Load_Original_Source=Kargatu jatorrizko iturburua
+css.tip.Load_Original_Source=Baztertu aldaketak eta kargatu jatorrizko CSSa
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Kopiatu arau-deklarazioa
+css.tip.Copy_Rule_Declaration=Kopiatu araua bere propietate guztiekin arbelera
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Kopiatu estilo-deklarazioa
+css.tip.Copy_Style_Declaration=Kopiatu arauaren propietateak arbelera
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=errore %1$S;%1$S errore
+moduleManager.title=%S panela desgaituta dago
+moduleManager.desc3=Erabili Firebug-en tresna-barra botoia panel guztiak aldi berean gaitu/desgaitzeko. Erabili panel bakoitzaren fitxako menua panel hori kontrolatzeko.
+moduleManager.Enable=Gaitu
+Suspend_Firebug=Eseki Firebug
+Resume_Firebug=Berrekin Firebug
+Reset_Panels_To_Disabled=Berrezarri panelak desgaituta
+Open_Console=Ireki kontsola
+Open_Console_Tooltip=Ireki Firebug-en aztarnari-kontsola
+Scope_Chain=Esparru-katea
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=With
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Deia
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Leihoa
+Logs=Logak
+Options=Aukerak
+Copy_Stack=Kopiatu pila
+Copy Exception=Kopiatu salbuespena
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blokeatzen
+requestinfo.Resolving=DNS kontsulta
+requestinfo.Connecting=Konektatzen
+requestinfo.Sending=Bidaltzen
+requestinfo.Waiting=Zain
+requestinfo.Receiving=Jasotzen
+requestinfo.ContentLoad='DOMContentLoaded' (gertaera)
+requestinfo.WindowLoad='load' (gertaera)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Eskaeraren hasierako denbora hastapenetik
+requestinfo.phases.label=Eskaeraren faseen hasierako eta igarotako denbora erlatiboa eskaeraren hasierarekiko:
+requestinfo.timings.label=Gertaeren denbora erlatiboa eskaeraren hasierarekiko:
+search.Firebug_Search=Firebug bilaketa
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Hurrengoa
+search.tip.Next=Bilatu hurrengo bat etortzea
+search.Previous=Aurrekoa
+search.tip.Previous=Bilatu aurreko bat etortzea
+search.Case_Sensitive=Bereiztu MAIUS/minus
+search.tip.Case_Sensitive=Bereiztu letra larri eta xeheak
+search.Case_Insensitive=Ez bereiztu MAIUS/minus
+search.tip.Case_Insensitive=Ez bereiztu letra larri eta xeheak
+search.Multiple_Files=Fitxategi anitz
+search.tip.Multiple_Files=Bilatu panel honekin erlazionaturiko fitxategi guztien barruan
+search.Use_Regular_Expression=Erabili adierazpen erregularra
+search.tip.Use_Regular_Expression=Interpretatu sartutako katea adierazpen erregular bezala bilatzean
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS hautatzailea
+search.net.Headers=Goiburuak
+search.net.Parameters=Parametroak
+search.net.Response_Bodies=Erantzunen gorputzak
+search.net.tip.Response_Bodies=Bilatu erantzunen gorputzetan ere
+firebug.console.Persist=Jarraitu
+firebug.console.Do_Not_Clear_On_Reload2=Ez garbitu panela orria birkargatzean
+firebug.console.Show_All_Log_Entries=Erakutsi log sarrera guztiak
+firebug.console.Errors=Erroreak
+firebug.console.Filter_by_Errors=Iragazi erroreen arabera
+firebug.console.Warnings=Abisuak
+firebug.console.Filter_by_Warnings=Iragazi abisuen arabera
+firebug.console.Info=Informazioa
+firebug.console.Filter_by_Info=Iragazi informazioaren arabera
+firebug.console.Debug_Info=Arazketa-informazioa
+firebug.console.Filter_by_Debug_Info=Iragazi arazketa-informazioaren arabera
+firebug.Deactivate_Firebug=Desaktibatu Firebug
+firebug.tip.Deactivate_Firebug=Desaktibatu Firebug uneko webgunearentzat
+firebug.ShowFirebug=Ireki Firebug
+firebug.menu.tip.Open_Firebug=Erakutsi Firebug interfazea
+firebug.HideFirebug=Ezkutatu Firebug
+firebug.menu.tip.Minimize_Firebug=Minimizatu Firebug, baina mantendu aktibo
+firebug.FocusFirebug=Fokuratu Firebug leihoa
+firebug.menu.tip.Focus_Firebug=Fokuratu banatutako Firebug leihoa
+firebug.menu.Enable_All_Panels=Gaitu panel guztiak
+firebug.menu.tip.Enable_All_Panels=Gaitu panel aktibagarri guztiak
+firebug.menu.Disable_All_Panels=Desgaitu panel guztiak
+firebug.menu.tip.Disable_All_Panels=Desgaitu panel aktibagarri guztiak
+firebug.menu.Customize_shortcuts=Pertsonalizatu lasterbideak
+firebug.menu.tip.Customize_Shortcuts=Pertsonalizatu Firebug-en barneko laster-teklak
+firebug.Options=Aukerak
+firebug.menu.tip.Options=Firebug-en hobespen globalak
+firebug.menu.Enable_Accessibility_Enhancements=Gaitu erabilerraztasunerako hobekuntzak
+firebug.menu.tip.Enable_Accessibility_Enhancements=Gaitu teklatu bidezko erabateko kontrola eta erabilerraztasunerako beste hobekuntzak
+firebug.menu.Activate_Same_Origin_URLs2=Aktibatu jatorri bereko URLentzat
+firebug.menu.tip.Activate_Same_Origin_URLs=Aktibatu Firebug jatorri bereko politikarekin bat datozen URLentzat
+firebug.menu.Reset_All_Firebug_Options=Berrezarri Firebug-en aukera guztiak
+firebug.menu.tip.Reset_All_Firebug_Options=Berrezarri Firebug-en hobespen guztiak balio lehenetsietara
+firebug.menu.Firebug_Online=Firebug linean
+firebug.menu.tip.Firebug_Online=Firebug-ekin erlazionatutako webguneak
+firebug.menu.Extensions=Firebug gehigarriak...
+firebug.menu.tip.Extensions=Deskargatu eta instalatu Firebug gehigarriak
+firebug.menu.Vertical_Panels=Panel bertikalak
+firebug.menu.tip.Vertical_Panels=Txandakatu Firebug-en panel nagusi eta albo-panelen diseinua
+firebug.menu.Show_Info_Tips=Erakutsi aholkuak
+firebug.menu.tip.Show_Info_Tips=Erakutsi nabarmendutako elementuari buruzko informazioa duten laster-leihoak
+firebug.Show_Error_Count=Erakutsi errore kopurua
+firebug.menu.tip.Show_Error_Count=Erakutsi kontsolan erregistratutako erroreen kopurua
+firebug.TextSize=Testuaren tamaina
+firebug.menu.tip.Text_Size=Aldatu Firebug-en erabilitako testuaren tamaina
+firebug.IncreaseTextSize=Handitu testuaren tamaina
+firebug.menu.tip.Increase_Text_Size=Handitu Firebug-en erabilitako testuaren tamaina
+firebug.DecreaseTextSize=Txikiagotu testuaren tamaina
+firebug.menu.tip.Decrease_Text_Size=Txikiagotu Firebug-en erabilitako testuaren tamaina
+firebug.NormalTextSize=Testu-tamaina normala
+firebug.menu.tip.Normal_Text_Size=Berrezarri Firebug-en erabilitako testuaren tamaina lehenetsia
+firebug.Website=Firebug-en webgunea...
+firebug.menu.tip.Website=Ireki Firebug-en webgune ofiziala
+firebug.help=Laguntza...
+firebug.menu.tip.help=Ireki Firebug-i buruzko azalpenak dituzten orrietarako estekak dituen orria
+firebug.Documentation=Dokumentazioa...
+firebug.menu.tip.Documentation=Ireki Firebug-en dokumentazioa
+firebug.KeyShortcuts=Teklatuko lasterbideak...
+firebug.menu.tip.Key_Shortcuts=Ireki Firebug-en erabil daitezkeen sagu eta teklatuaren lasterbideen zerrenda
+firebug.Forums=Eztabaida-taldea...
+firebug.menu.tip.Forums=Ireki eztabaida-taldearen gunea
+firebug.Issues=Arazoen jarraipena...
+firebug.menu.tip.Issues=Ireki arazoen jarraipenerako gunea
+firebug.Donate=Parte hartu...
+firebug.menu.tip.Donate=Ireki Firebug-en nola parte hartu azaltzen duen gunea
+firebug.About=Honi buruz...
+firebug.menu.tip.About=Firebug-i buruzko informazioa
+ProfileJavaScript=Analizatu JavaScript
+firebug.menu.tip.Profile_JavaScript=Analizatu JavaScript-en exekuzio-denbora
+firebug.Search=Bilatu
+firebug.menu.tip.Search=Ezarri fokua bilaketa-eremuan
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Sartu berriro komandoa
+firebug.shortcut.tip.reenterCommand=Sartu berriro azken komandoa komando-lerroan
+firebug.shortcut.toggleInspecting.label=Txandakatu ikuskatzea
+firebug.shortcut.tip.toggleInspecting=Gaitu/Desgaitu ikuskatzailea
+firebug.shortcut.toggleQuickInfoBox.label=Txandakatu informazio-kaxa azkarra
+firebug.shortcut.tip.toggleQuickInfoBox=Gaitu/Desgaitu unean ikuskaturiko elementuaren informazioa duen panela bistaratzea
+firebug.shortcut.toggleProfiling.label=Txandakatu analizatzea
+firebug.shortcut.tip.toggleProfiling=Gaitu/desgaitu JavaScript analizatzailea
+firebug.shortcut.focusCommandLine.label=Fokuratu komando-lerroa
+firebug.shortcut.tip.focusCommandLine=Ireki Firebug eta ezarri fokoa komando-lerroan / txandakatu komando-lerroaren laster-leihoa
+firebug.shortcut.focusFirebugSearch.label=Fokuratu Firebug bilaketa
+firebug.shortcut.tip.focusFirebugSearch=Ezarri fokua bilaketa-eremuan
+firebug.shortcut.focusWatchEditor.label=Fokuratu behaketa-editorea
+firebug.shortcut.tip.focusWatchEditor=Aldatu Script-ak panelera eta ezarri fokoa eremuan behaketa-adierazpen berri bat sartzeko
+firebug.shortcut.focusLocation.label=Fokuratu kokapena
+firebug.shortcut.tip.focusLocation=Ireki Kokapena menua
+firebug.shortcut.nextObject.label=Hurrengo objektua
+firebug.shortcut.tip.nextObject=Hautatu panel baten elementuen bideko hurrengo objektua
+firebug.shortcut.previousObject.label=Aurreko objektua
+firebug.shortcut.tip.previousObject=Hautatu panel baten elementuen bideko aurreko objektua
+firebug.shortcut.customizeFBKeys.label=Pertsonalizatu Firebug teklak
+firebug.shortcut.tip.customizeFBKeys=Ireki Firebug-en laster-teklen elkarrizketa-koadroa
+firebug.shortcut.detachFirebug.label=Ireki Firebug leiho berri batean
+firebug.shortcut.tip.detachFirebug=Ireki Firebug beste leiho batean
+firebug.shortcut.leftFirebugTab.label=Aldatu ezkerreko Firebug panelera
+firebug.shortcut.tip.leftFirebugTab=Aldatu ezkerreko Firebug panelera
+firebug.shortcut.rightFirebugTab.label=Aldatu eskuineko Firebug panelera
+firebug.shortcut.tip.rightFirebugTab=Aldatu eskuineko Firebug panelera
+firebug.shortcut.toggleFirebug.label=Ireki Firebug
+firebug.shortcut.tip.toggleFirebug=Ireki/Minimizatu Firebug interfazea
+firebug.shortcut.closeFirebug.label=Desaktibatu Firebug
+firebug.shortcut.tip.closeFirebug=Desaktibatu Firebug unek webgunearentzat
+firebug.shortcut.previousFirebugTab.label=Aurreko Firebug panela
+firebug.shortcut.tip.previousFirebugTab=Aldatu aurrez hautatutako Firebug panelera
+firebug.shortcut.clearConsole.label=Garbitu kontsola
+firebug.shortcut.tip.clearConsole=Kendu log guztiak kontsolatik
+firebug.shortcut.openTraceConsole.label=Ireki aztarna-kontsola
+firebug.shortcut.tip.openTraceConsole=Ireki FBTrace kontsola
+firebug.shortcut.navBack.label=Joan atzera
+firebug.shortcut.tip.navBack=Aldatu aurreko panelera edo nabigazio-historiako kokapen-zerrendako aurreko elementura
+firebug.shortcut.navForward.label=Joan aurrera
+firebug.shortcut.tip.navForward=Aldatu hurrengo panelera edo nabigazio-historiako kokapen-zerrendako hurrengo elementura
+firebug.shortcut.increaseTextSize.label=Handitu testuaren tamaina
+firebug.shortcut.tip.increaseTextSize=Handitu Firebug-en erabilitako testuaren tamaina
+firebug.shortcut.decreaseTextSize.label=Txikiagotu testuaren tamaina
+firebug.shortcut.tip.decreaseTextSize=Txikiagotu Firebug-en erabilitako testuaren tamaina
+firebug.shortcut.normalTextSize.label=Testu-tamaina normala
+firebug.shortcut.tip.normalTextSize=Berrezarri Firebug-en erabilitako testuaren tamaina lehenetsia
+firebug.shortcut.help.label=Ireki laguntza
+firebug.shortcut.tip.help=Ireki maiz egindako galderen orria
+firebug.shortcut.toggleBreakOn.label=Txandakatu geldialdiak...
+firebug.shortcut.tip.toggleBreakOn=Gaitu/desgaitu script-aren exekuzioa gelditzea panel barruan gertaera zehatzak ematean
+firebug.panel_selector=Panel hautatzailea
+customizeShortcuts=Firebug laster-teklak
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=panel-tresnak
+a11y.labels.firebug_panels=Firebug panelak
+a11y.labels.firebug_side_panels=Firebug albo-panelak
+a11y.labels.firebug_window=Firebug leihoa
+a11y.labels.firebug_status=Firebug egoera
+a11y.labels.reset=berrezarri
+a11y.labels.reset_shortcut=berrezarri %S lasterbidea
+aria.labels.inactive_panel=panel inaktiboa
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=erregistratu errenkadak
+a11y.labels.call_stack=dei-pila
+a11y.labels.document_structure=dokumentuaren egitura
+a11y.labels.title_panel=%S panela
+a11y.labels.title_side_panel=%S albo-panela
+a11y.labels.cached=cache-an
+aria.labels.stack_trace=aztarna-pila
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=betegarria
+a11y.layout.border=ertza
+a11y.layout.margin=marjina
+a11y.layout.position=posizioa
+a11y.layout.position_top=goian
+a11y.layout.position_right=eskuinean
+a11y.layout.position_bottom=behean
+a11y.layout.position_left=ezkerrean
+a11y.layout.margin_top=goiko marjina
+a11y.layout.margin_right=eskuineko marjina
+a11y.layout.margin_bottom=beheko marjina
+a11y.layout.margin_left=ezkerreko marjina
+a11y.layout.border_top=goiko ertza
+a11y.layout.border_right=eskuineko ertza
+a11y.layout.border_bottom=beheko ertza
+a11y.layout.border_left=ezkerreko ertza
+a11y.layout.padding_top=goiko betegarria
+a11y.layout.padding_right=eskuineko betegarria
+a11y.layout.padding_bottom=beheko betegarria
+a11y.layout.padding_left=ezkerreko betegarria
+a11y.layout.top=goia
+a11y.layout.right=eskuina
+a11y.layout.bottom=behea
+a11y.layout.left=ezkerra
+a11y.layout.width=zabalera
+a11y.layout.height=altuera
+a11y.layout.size=tamaina
+a11y.layout.z-index=z-indizea
+a11y.layout.box-sizing=kaxaren tamaina
+a11y.layout.clientBoundingRect=laukizuzen mugatzailea
+a11y.descriptions.press_enter_to_edit_values=Sakatu Sartu eta ondoren Tabuladorea banako balioak editatzeko
+a11y.labels.style_rules=estilo-arauak
+aria.labels.inherited_style_rules=heredatutako estilo-arauak
+a11y.labels.computed_styles=kalkulatutako estiloak
+a11y.labels.dom_properties=DOM propietateak
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=barne-editorea
+a11y.labels.value_for_attribute_in_element=%S elementuaren %s atributuaren balioa
+a11y.labels.attribute_for_element=%S elementuarentzako atributua
+a11y.labels.text_contents_for_element=%S elementuarentzako testu-edukiak
+a11y.labels.defined_in_file=%S(e)n definitua
+a11y.labels.declarations_for_selector="%S" hautatzailearentzako estilo-deklarazioak
+a11y.labels.property_for_selector=Hautatzailearentzako CSS propietatea: %S
+a11y.labels.value_property_in_selector=%S propietatearen balioa %S hautatzailearentzat
+a11y.labels.css_selector=CSS hautatzailea
+a11y.labels.source_code_for_file=%S fitxategiaren iturburu-kodea
+a11y.labels.press_enter_to_add_new_watch_expression=sakatu Sartu behaketa-adierazpen berri bat sartzeko
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=gainidatzia
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=baldintzazko eten-puntuak ditu
+a11y.updates.has_disabled_break_point=desgaitutako eten-puntua dauka
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script-a eseki da %S lerroan %S funtzioan, %S fitxategia
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows="%S"(r)ekin bat etortzeak aurkitu dira log-eko %s lerrotan
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line="%1$S"(r)ekin bat etortzea aurkitu da %3$S(e)ko %2$S lerroan.
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element="%1$S"(r)ekin bat etortzea aurkitu da %3$S bideko %2$S elementuan
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute="%1$S"(r)ekin bat etortzea aurkitu da %5$S bideko %4$S elementuaren %2$S=%3$S atributuan
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content="%1$S"(r)ekin bat etortzea aurkitu da testu-edukian: %4$S bideko %3$S elementuaren %2$S(a)n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector="%S"(r)ekin bat etortzea aurkitu da %S hautatzailean
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration="%1$S"(r)ekin bat etortzea aurkitu da %2$S hautatzailearen %1$S estilo-deklarazioan
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property="%S"(r)ekin bat etortzea aurkitu da DOMeko %S propietatean
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row="%S"(r)ekin bat etortzea aurkitu da hemen: %S, %S: %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row="%S"(r)ekin bat etortzea aurkitu da sareko laburpenaren errenkadan: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=ez da "%S"(r)ekin bat datorren ezer aurkitu
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Ziur zaude Firebug-en aukera guztiak jatorrizko egoerara berrezarri nahi dituzula?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Egin dituzun CSS edizioak baztertuko dira.\nZiur zaude iturburua editatu nahi duzula?
+# Console messages
+warning.Console_must_be_enabled=Kontsolak gaituta egon behar du
+warning.Command_line_blocked?=Komando-lerroa blokeatuta?
+warning.dollar_change=Kontsolako komando-lerroko $() funtzioaren esanahia aldatu da, lehen $=getElementById(id) zen eta orain berriz $=querySelector(selector) da. $("#%S") erabil dezakezu bere ordez.
+message.Reload_to_activate_window_console=Birkargatu kontsola-leihoa aktibatzeko
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Birkargatu orria honen iturburua eskuratzeko:
+message.The_resource_from_this_URL_is_not_text=URL honetako baliabidea ez da testua
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Joan atzera panel honetara
+firebug.history.Stay_on_this_panel=Jarraitu panel honetan
+firebug.history.Go_forward_to_this_panel=Joan aurrera panel honetara
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Joan atzera
+firebug.history.Go_forward=Joan aurrera
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Script-ak panela inaktibo zegoen orria kargatzean
+script.suggestion.inactive_during_page_load2=<a>Birkargatu</a> iturburu guztiak ikusteko
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript desgaituta dago
+script.suggestion.javascript_not_enabled=Ikusi Firefox > Tresnak > Aukerak > Edukia > Gaitu Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Gaitu Javascript eta freskatu
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Script guztiak iragazi dira
+script.suggestion.all_scripts_filtered=Ikusi script-en iragazkiaren ezarpena tresna-barra panelean
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=Sistemaren iturburuak ezin dira araztu
+script.suggestion.no_system_source_debugging=Momentuz Firebug ezin da erabili erabiltzaile-agentearen barneko fitxategiak arazteko. Ikus <a>5110 arazoa</a> arrazoia ikusteko.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=Ez dago Javascript koderik orri honetan
+script.suggestion.no_javascript2=<script> etiketek "type" atributua badute, "text/javascript" edo "application/javascript" balioa izan behar dute. Gainera script-ek analizagarriak izan behar dute (sintaktikoki zuzenak).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Araztailea dagoeneko aktibo dago
+script.suggestion.debugger_active=Araztailea beste orri bateko eten-puntu batean geldituta dago une honetan.
+script.button.Go_to_that_page=Joan orri horretara
+script.warning.debugger_not_activated=Araztailea ez dago aktibatuta
+script.suggestion.debugger_not_activated=Araztailea ez dago aktibatuta
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Itxi
+firebug.View=Ikusi
+firebug.Help=Laguntza
+firebug.Run=Exekutatu
+firebug.Copy=Kopiatu
+firebug.History=Historia
+firebug.Run_the_entered_command=Exekutatu sartutako komandoa
+firebug.Clear_the_Command_Editor=Garbitu komando-editorea
+firebug.Copy_the_script_as_a_bookmarklet=Kopiatu script-a laster-markapplet bezala
+firebug.Insert_a_previously_entered_command=Txertatu aurrez sarturiko komando bat
+firebug.AlwaysOpenInWindow=Ireki beti leiho berrian
+firebug.OpenWith=Ireki editorean
+firebug.menu.tip.Open_With=Ireki edukia kanpoko editore batean
+firebug.Permissions=Guneak...
+firebug.Configure_Editors=Konfiguratu editoreak
+script.tip.Script_Type=Iragazi script motaren arabera
+script.tip.Script_Filter_Static=Orriarekin batera kargaturiko script-ak soilik erakutsi
+script.tip.Script_Filter_Evals=Bistaratu orriarekin batera kargaturiko script-ak eta eval() bidez sorturiko script-ak
+script.tip.Script_Filter_Events=Bistaratu orriarekin batera kargaturiko script-ak, eval() bidez sorturiko script-ak eta gertaera-entzuleak
+script.tip.Script_Filter_All=Bistaratu mota guztietako script-ak
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Exekutatu berriz
+script.tip.Rerun=Exekutatu berriz uneko pila-dei funtzioa
+script.Continue=Jarraitu
+script.tip.Continue=Jarraitu JavaScript exekuzioarekin
+script.Step_Over=Jauzi
+script.tip.Step_Over=Exekutatu hurrengo komandoa
+script.Step_Into=Sartu
+script.tip.Step_Into=Exekutatu hurrengo komandoa eta jauzi funtzioetara
+script.Step_Out=Irten
+script.tip.Step_Out=Exekutatu funtzioaren gorputzaren gainerako zatia eta itzuli bere deitzailera
+firebug.RunUntil=Exekutatu lerro honetaraino
+script.tip.Run_Until=Exekutatu JavaScript zehazturiko lerroraino
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Ikuskatu
+firebug.InspectElement=Ikuskatu elementua
+firebug.InspectElementWithFirebug=Ikuskatu elementua Firebug-ekin
+firebug.BreakOnErrors=Eten erroreetan
+firebug.InspectTooltip=Klikatu orriko elementu bat ikuskatzeko
+firebug.EditHTMLTooltip=Editatu HTML hau
+firebug.Profile=Analizatu
+firebug.Clear=Garbitu
+firebug.ClearConsole=Garbitu kontsola
+firebug.ClearTooltip=Garbitu kontsola
+firebug.All=Guztiak
+firebug.Images=Irudiak
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Konfiguratutako Firebug editoreak
+editors.Editor=Editorea
+editors.Executable=Exekutagarria
+editors.Launch_Arguments=Abioko argumentuak
+editors.Add=Gehitu
+editors.Remove=Kendu
+editors.Change=Aldatu
+editors.Move_Up=Mugitu gora
+editors.Close=Itxi
+editors.Browse=Arakatu...
+changeEditor.Editor_Configuration=Editorearen konfigurazioa
+changeEditor.Name=Izena:
+changeEditor.Executable=Exekutagarria:
+changeEditor.CmdLine=Argumentuak:
+changeEditor.Supplied_arguments=Firebug-ek hornitutako argumentuak
+changeEditor.URL_of_file=Fitxategiaren URLa (%url ez badago, %file erabiliko da modu lehenetsian)
+changeEditor.Path_to_local_file=Fitxategi lokalerako bidea (edo aldi baterako kopiarakoa)
+changeEditor.Line_number=Lerro zenbakia (erabilgarri badago)
+changeEditor.Invalid_Application_Path=Baliogabeko aplikazio-bidea
+changeEditor.Application_does_not_exist=Zehazturiko aplikazioa ez da existitzen!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Editatu
+firebug.css.sourceEdit=Editatu iturburua
+firebug.css.sourceEdit.tooltip=Editatu arakatzaileak kargaturiko estilo-orriaren iturburua
+firebug.css.liveEdit=Zuzeneko edizioa
+firebug.css.liveEdit.tooltip=Editatu arakatzailetik erauzitako CSSa
+firebug.EditCSSTooltip=Editatu estilo-orri hau
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Guneak ez dira gordetzen nabigazio pribatua moduan
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Erakutsi etenaldien jakinarazpenak
+firebug.breakpoint.tip.Show_Break_Notifications=Erakutsi jakinarazpen-kaxa bat gertaera batean eten ezaugarri batek edo araztaile; gako-hitzak JavaScript exekuzioa gelditzean
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=Etenaldien jakinarazpenak gaitu/desgaitu ditzakezu <a>paneleko menuan</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2='Desgaitu' botoia klikatzean 'araztailea' desgaitutako eten-puntu batekin gainidazten da.
+firebug.bon.tooltip.disableDebuggerKeyword2=Desgaitutako eten-puntu bat sortzen du
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(Script-ak panelak gaituta egon behar du ezaugarri hau erabiltzeko)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=Ez dago objektu umerik
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=gehiago
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Erreferentzia zirkularra
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=Elementu %1$S Biltegian;%1$S elementu Biltegian
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Objektuaren propietateak
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(iradokizunik ez)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=Segur aski URL objektua baliogabetua izan da revokeObjectURL metodoa erabiliz.
+firebug.failedToPreviewImageURL=Huts egin du emandako URLa kargatzean
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memoria-analizatzailea abiatuta
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Analizatzean gehituriko objektuak
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memoria-analizatzailearen emaitzak
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Saio osoa
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(irteerarik ez)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(kate huts bat)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie gehigarria detektatu da. Firebug 1.10etik aurrera integratuta dago modu lehenetsian. Gatazkak saihesteko Firecookie desinstalatu behar duzu.\n\nGehigarria desinstalatzen bukatzeko berrabiarazi egin behar duzu.
+cookies.legacy.uninstall=Desinstalatu
+cookies.legacy.uninstall_and_restart=Desinstalatu eta berrabiarazi
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Komando-lerroaren APIa
+console.cmd.help_title_desc=Sakatu F1 lineako Firebug-en laguntza irekitzeko
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Emandako id-a duen elementu bakarra itzultzen du.
+console.cmd.help.$$=Emandako CSS hautatzailearekin bat datozen elementuen array bat itzultzen du.
+console.cmd.help.$x=Emandako XPath adierazpenarekin bat datozen elementuen array bat itzultzen du.
+console.cmd.help.dir=Objektu baten propietate guztien zerrenda interaktibo bat inprimatzen du. DOM paneleko ikuspegiaren itxura bera du.
+console.cmd.help.dirxml=HTML edo XML elementu baten XML iturburu-zuhaitza inprimatzen du. DOM paneleko ikuspegiaren itxura bera du. Edozein nodotan klik egin dezakezu HTML panelean ikuskatzeko.
+console.cmd.help.cd=Komando-lerroko adierazpenak orriko goi-mailako leihoari dagozkio modu lehenetsian. cd() erabiliz marko baten leihoa erabil dezakezu horren ordez.
+console.cmd.help.clear=Kontsola garbitzen du.
+console.cmd.help.copy=Emandako parametroa arbelean kopiatzen du. Hau funtzio batek itzulitako balioa edo objektu bat izan daiteke.
+console.cmd.help.inspect=Objektu bat ikuskatzen du panel egokienean edo hautazko bigarren argumentuan zehazturiko panelean. Erabilgarri dauden panelen izenak "html", "stylesheet", "script" eta "dom" dira.
+console.cmd.help.keys=Objektuaren propietate guztien izenak dituen array bat itzultzen du.
+console.cmd.help.values=Objektuaren propietate guztien balioak dituen array bat itzultzen du.
+console.cmd.help.debug=Eten-puntu bat gehitzen du funtzio baten lehen lerroan.
+console.cmd.help.undebug=Funtzio baten lehen lerroko eten-puntua kentzen du.
+console.cmd.help.monitor=Funtzio bati egindako dei guztiak erregistratzea aktibatzen du.
+console.cmd.help.unmonitor=Funtzio bati egindako dei guztiak erregistratzea desaktibatzen du.
+console.cmd.help.monitorEvents=Objektu bati bidalitako gertaera guztiak erregistratzea aktibatzen du. Hautazko bigarren argumentuan erregistratu beharreko gertaera edo gertaera motak zehaztu daitezke. Erabil daitezkeen gertaera motak hauek dira: "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul" eta "clipboard".
+console.cmd.help.unmonitorEvents=Objektu bati bidalitako gertaera guztiak erregistratzea desaktibatzen du. Hautazko bigarren argumentuan erregistratzea zein gertaera edo gertaera motarentzat desaktibatu behar den zehaztu daiteke.
+console.cmd.help.profile=JavaScript-en analizatzailea aktibatzen du. Hautazko bigarren argumentua analizatzailearen txosteneko goiburuan inprimatuko den testua da.
+console.cmd.help.profileEnd=JavaScript-en analizatzailea desaktibatzen du eta bere txostena inprimatu.
+console.cmd.help.table=Emandako datuak taula moduan erregistratzeko aukera ematen du. Metodoak taula moduko datuak adierazten dituen (array-en array-a edo objektuen zerrenda) derrigorrezko parametro bat hartzen du. Hautazko bigarren parametroa erregistratu beharreko zutabeak eta/edo propietateak adierazteko erabil daiteke.
+console.cmd.help.$0=Ikuskatzailea erabiliz hautatutako azken elementua adierazten du.
+console.cmd.help.$1=Ikuskatzailea erabiliz hautatutako azken-aurreko elementua adierazten du.
+console.cmd.help.$n=Ikuskatzailea erabiliz hautatutako azken 5 elementuetako bat adierazten du. Metodo honek elementuaren indizea (0tik hasita) adierazten duen derrigorrezko parametro bat hartzen du.
+console.cmd.help.help=Komando erabilgarri guztien laguntza bistaratzen du.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Komando honen laguntza-orria ez dago eskuragarri.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Idatzi hautatzaile pertsonalizatu bat edo eskuin klik CSS araua eta hautatu <b>Eskuratu bat datozen elementuak</b>
+css.selector.noSelectionResults=Ez dago bat datorren elementurik
+css.selector.selectorError=Hautapenak huts egin du:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elementuak
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=CSS hautatzaile batekin bat datozen elementuak bistaratzen ditu
+css.selector.TryASelector=Probatu hautatzaile bat...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Eskuratu bat datozen elementuak
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Huts egin du zehazturiko hautzaile-katea exekutatzean
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Dokumentatu faseen hasierak eta dokumentuaren kargarekiko igarotako denbora erlatiboa:
+perftiming.events.label=Dokumentuaren kargarekiko gertaeren denbora erlatiboak
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Errendimendu-denborak
+perftiming.details_title_desc=Denbora zehatzak
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Zerbitzariaren konexioa bukatzen deneko denbora.
+perftiming.connectStart=Zerbitzariaren konexioa hasi aurreko denbora.
+perftiming.domComplete=Dokumentua prest egon aurreko denbora.
+perftiming.domContentLoadedEventEnd=DOMContentLoaded gertaera osatu ondorengo denbora.
+perftiming.domContentLoadedEventStart=DOMContentLoaded gertaera hasi aurreko denbora.
+perftiming.domInteractive=Elkarrekintzarako prest egon aurreko denbora.
+perftiming.domLoading=Kargatzeko prest egon aurreko denbora.
+perftiming.domainLookupEnd=Domeinu-izenaren kontsulta egin ondorengo denbora.
+perftiming.domainLookupStart=Domeinu-izenaren kontsulta egin aurreko denbora.
+perftiming.fetchStart=Baliabidea eskuratzen hasten deneko denbora
+perftiming.loadEventEnd=load gertaera osatzen deneko denbora.
+perftiming.loadEventStart=load gertaera abiatu aurreko denbora.
+perftiming.navigationStart=Aurreko dokumentua deskargatzen hasi ondorengo denbora.
+perftiming.redirectCount=Birbidalketa kopurua azken ez-birbidalketaren ondoren.
+perftiming.redirectEnd=Azken birbidalketaren erantzuna amaitu ondorengo denbora.
+perftiming.redirectStart=Birbidalketa bat hasi duen eskuratzearen denbora.
+perftiming.requestStart=Zerbitzariaren eskaera baten aurreko denbora.
+perftiming.responseEnd=Erantzun edo konexio bat amaitu ondorengo denbora.
+perftiming.responseStart=Erantzun baten hasieraren aurreko denbora
+perftiming.unloadEventEnd=Aurreko dokumentua deskargatu ondorengo denbora.
+perftiming.unloadEventStart=unload gertaera abiatu aurreko denbora.
diff --git a/locale/fa/cookies.properties b/locale/fa/cookies.properties
index 66695d4..ec60718 100644
--- a/locale/fa/cookies.properties
+++ b/locale/fa/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Session
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Accept Cookies From Sites
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Clear cookies when denying
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cut
-cookies.Copy=Copy
-cookies.CopyAll=Copy All
-cookies.Paste=Paste
-cookies.Delete=Delete
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Edit
-cookies.Accept=Accept
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reset Header
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
-cookies.ExceptionsTitle=Exceptions - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support for Cookie Monitoring
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=Disable Cookies panel for %S
-cookies.Permissions=Enable or Disable Cookies panel
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=System Pages
-cookies.LocalFiles=Local Files
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Do you want to remove all cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remove all cookies in the list.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Create a new cookie for %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Value
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Manage cookie permissions for %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=All cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejected:
-cookies.console.nocookiesreceived=No cookies received
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=deleted
-cookies.console.added=added
-cookies.console.changed=changed
-cookies.console.cleared=cleared
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domain
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Secure
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Value
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Default (Accept session cookies)
-cookies.default.thirdPartySession=Default (Accept session cookies)
-cookies.default.thirdParty=Default (Accept cookies)
-cookies.default.allow=Default (Accept cookies)
-cookies.default.deny=Default (Deny cookies)
-cookies.default.warn=Default (Warn before accepting cookie)
-cookies.host.session=Accept session cookies from %S
-cookies.host.accept=Accept cookies from %S
-cookies.host.reject=Deny cookies from %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie name is not valid.
-cookies.edit.invalidhost=Cookie host is not valid.
-cookies.edit.invalidpath=Cookie path is not valid.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Name
-cookies.header.value=Value
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domain
-cookies.header.size=Size
-cookies.header.path=Path
-cookies.header.expires=Expires
-cookies.header.security=Security
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Name of the cookie
-cookies.header.value.tooltip=Value stored for the cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domain that has stored the cookie
-cookies.header.size.tooltip=Size of the stored cookie
-cookies.header.path.tooltip=Directory where the cookie is active
-cookies.header.expires.tooltip=Expiration date for the cookie
-cookies.header.security.tooltip=Shows whether it is a secure cookie or not
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Received Cookies
-cookies.netinfo.Sent_Cookies=Sent Cookies
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Path Filter
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Export All Cookies
-cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
-cookies.export.Export_For_Site=Export Cookies For This Site
-cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Remove Cookies
-cookies.Create=Create Cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Tools
-cookies.ToolsTooltip=Tools
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Show All Cookies
-cookies.ViewAllTooltip=Open the built-in Cookie Manager
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Web Sites Permissions
-cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filter
-cookies.FilterTooltip=Use given options to filter the cookie list.
-cookies.filter.byPath=Filter Cookies By Current Path
-cookies.filter.byPathTooltip=Show only cookies that match the current path.
-cookies.filter.showRejectedCookies=Show Rejected Cookies
-cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Edit Cookie
-cookies.edit.name.label=Name:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Path:
-cookies.edit.expire.label=Expires:
-cookies.edit.value.label=Value:
-cookies.edit.secure.label=Secure Cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Session
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Accept Cookies From Sites
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Clear cookies when denying
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cut
+cookies.Copy=Copy
+cookies.CopyAll=Copy All
+cookies.Paste=Paste
+cookies.Delete=Delete
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Edit
+cookies.Accept=Accept
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reset Header
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
+cookies.ExceptionsTitle=Exceptions - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support for Cookie Monitoring
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=Disable Cookies panel for %S
+cookies.Permissions=Enable or Disable Cookies panel
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=System Pages
+cookies.LocalFiles=Local Files
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Do you want to remove all cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remove all cookies in the list.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Create a new cookie for %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Value
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Manage cookie permissions for %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=All cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejected:
+cookies.console.nocookiesreceived=No cookies received
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=deleted
+cookies.console.added=added
+cookies.console.changed=changed
+cookies.console.cleared=cleared
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domain
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Secure
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Value
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Default (Accept session cookies)
+cookies.default.thirdPartySession=Default (Accept session cookies)
+cookies.default.thirdParty=Default (Accept cookies)
+cookies.default.allow=Default (Accept cookies)
+cookies.default.deny=Default (Deny cookies)
+cookies.default.warn=Default (Warn before accepting cookie)
+cookies.host.session=Accept session cookies from %S
+cookies.host.accept=Accept cookies from %S
+cookies.host.reject=Deny cookies from %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie name is not valid.
+cookies.edit.invalidhost=Cookie host is not valid.
+cookies.edit.invalidpath=Cookie path is not valid.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Name
+cookies.header.value=Value
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domain
+cookies.header.size=Size
+cookies.header.path=Path
+cookies.header.expires=Expires
+cookies.header.security=Security
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Name of the cookie
+cookies.header.value.tooltip=Value stored for the cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domain that has stored the cookie
+cookies.header.size.tooltip=Size of the stored cookie
+cookies.header.path.tooltip=Directory where the cookie is active
+cookies.header.expires.tooltip=Expiration date for the cookie
+cookies.header.security.tooltip=Shows whether it is a secure cookie or not
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Received Cookies
+cookies.netinfo.Sent_Cookies=Sent Cookies
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Path Filter
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Export All Cookies
+cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
+cookies.export.Export_For_Site=Export Cookies For This Site
+cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Remove Cookies
+cookies.Create=Create Cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Tools
+cookies.ToolsTooltip=Tools
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Show All Cookies
+cookies.ViewAllTooltip=Open the built-in Cookie Manager
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Web Sites Permissions
+cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filter
+cookies.FilterTooltip=Use given options to filter the cookie list.
+cookies.filter.byPath=Filter Cookies By Current Path
+cookies.filter.byPathTooltip=Show only cookies that match the current path.
+cookies.filter.showRejectedCookies=Show Rejected Cookies
+cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Edit Cookie
+cookies.edit.name.label=Name:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Path:
+cookies.edit.expire.label=Expires:
+cookies.edit.value.label=Value:
+cookies.edit.secure.label=Secure Cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/fa/firebug-amo.properties b/locale/fa/firebug-amo.properties
index 269024c..8e325c2 100644
--- a/locale/fa/firebug-amo.properties
+++ b/locale/fa/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
-firebug.amo.description=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.\n\nVisit the Firebug website for documentation, screen shots, and discussion forums: http://getfirebug.com
-firebug.amo.developer.comments=If you have any problems, please read the FireBug FAQ.\n\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
+firebug.amo.description=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.\n\nVisit the Firebug website for documentation, screen shots, and discussion forums: http://getfirebug.com
+firebug.amo.developer.comments=If you have any problems, please read the FireBug FAQ.\n\nhttp://getfirebug.com/faq.html
diff --git a/locale/fa/firebug-tracing.properties b/locale/fa/firebug-tracing.properties
index 3d7b5a7..a1c777a 100644
--- a/locale/fa/firebug-tracing.properties
+++ b/locale/fa/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Open Firebug Tracing
-Always_Open_Firebug_Tracing=Always Open Firebug Tracing
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Tracing
-tracing.Show_Scope_Variables=Show Scope Variables
-tracing.Show_Time=Show Time
-tracing.tab.Stack=Stack
-tracing.tab.Exception=Exception
-tracing.tab.Properties=Properties
-tracing.tab.Scope=Scope
-tracing.tab.Response=Response
-tracing.tab.Source=Source
-tracing.tab.Interfaces=Interfaces
-tracing.tab.Object=Object
-tracing.tab.Event=Event
-tracing.cmd.Clear=Clear
-tracing.cmd.tip.Clear=Remove All Messages
-tracing.cmd.Find=Find
-tracing.cmd.tip.Find=Find Text
-tracing.cmd.Bookmark=Bookmark
-tracing.cmd.tip.Bookmark=Insert Bookmark
-tracing.cmd.Restart=Restart Firefox
-tracing.cmd.tip.Restart=Restart Firefox
-tracing.cmd.Exit=Exit Firefox
-tracing.cmd.tip.Exit=Exit Firefox
-tracing.cmd.Save=Save to File
-tracing.cmd.tip.Save=Save logs into a file
-tracing.cmd.Load=Load from File
-tracing.cmd.tip.Load=Load logs from a file
-tracing.cmd.Expand_All=Expand All
-tracing.cmd.Collapse_All=Collapse All
-tracing.cmd.Tools=Tools
-tracing.cmd.tip.Tools=Tools
-tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.Open_Profile_Directory=Open Profile Directory
-tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
-tracing.option.A11Y_Description=Accessibility issues
-tracing.option.ACTIVATION_Description=Firebug activation
-tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
-tracing.option.ANNOTATIONS_Description=Firebug website annotation
-tracing.option.BP_Description=Breakpoints
-tracing.option.CACHE_Description=Source cache
-tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
-tracing.option.COMPILATION_UNITS_Description=Script compilation units
-tracing.option.CONSOLE_Description=Console Panel
-tracing.option.CSS_Description=CSS parsing
-tracing.option.DISPATCH_Description=Event dispatching
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate creation
-tracing.option.EDITOR_Description=Inline Editor & Autocompleter
-tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Internal Firebug errors
-tracing.option.EVAL_Description=Script evaluation
-tracing.option.FBS_BP_Description=Firebug service breakpoints
-tracing.option.FBS_CREATION_Description=Firebug service script creation
-tracing.option.FBS_ERRORS_Description=Firebug service errors
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
-tracing.option.FBS_FUNCTION_Description=Firebug service function
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
-tracing.option.FBS_SRCUNITS_Description=Firebug service source units
-tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
-tracing.option.FUNCTION_NAMES_Description=JavaScript function names
-tracing.option.HISTORY_Description=Firebug Navigation History
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP request observer
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug initialization
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON viewer
-tracing.option.LINETABLE_Description=Script line table
-tracing.option.LOCALE_Description=Localization
-tracing.option.LOCATIONS_Description=Source locations
-tracing.option.NET_Description=Net Panel
-tracing.option.NET_EVENTS_Description=Network events
-tracing.option.OPTIONS_Description=Firebug preferences
-tracing.option.PANELS_Description=Panels
-tracing.option.SHORTCUTS_Description=Keyboard shortcuts
-tracing.option.SOURCEFILES_Description=JavaScript source files
-tracing.option.SPY_Description=XMLHttpRequests observer
-tracing.option.STACK_Description=JavaScript call stack
-tracing.option.STORAGE_Description=Settings storage
-tracing.option.SVGVIEWER_Description=SVG viewer
-tracing.option.FONTS_Description=Fonts information and font viewer
-tracing.option.TOOLTIP_Description=Start Button tooltip
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging user interface
-tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
-tracing.option.XMLVIEWER_Description=XML viewer
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Open Firebug Tracing
+Always_Open_Firebug_Tracing=Always Open Firebug Tracing
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Tracing
+tracing.Show_Scope_Variables=Show Scope Variables
+tracing.Show_Time=Show Time
+tracing.tab.Stack=Stack
+tracing.tab.Exception=Exception
+tracing.tab.Properties=Properties
+tracing.tab.Scope=Scope
+tracing.tab.Response=Response
+tracing.tab.Source=Source
+tracing.tab.Interfaces=Interfaces
+tracing.tab.Object=Object
+tracing.tab.Event=Event
+tracing.cmd.Clear=Clear
+tracing.cmd.tip.Clear=Remove All Messages
+tracing.cmd.Find=Find
+tracing.cmd.tip.Find=Find Text
+tracing.cmd.Bookmark=Bookmark
+tracing.cmd.tip.Bookmark=Insert Bookmark
+tracing.cmd.Restart=Restart Firefox
+tracing.cmd.tip.Restart=Restart Firefox
+tracing.cmd.Exit=Exit Firefox
+tracing.cmd.tip.Exit=Exit Firefox
+tracing.cmd.Save=Save to File
+tracing.cmd.tip.Save=Save logs into a file
+tracing.cmd.Load=Load from File
+tracing.cmd.tip.Load=Load logs from a file
+tracing.cmd.Expand_All=Expand All
+tracing.cmd.Collapse_All=Collapse All
+tracing.cmd.Tools=Tools
+tracing.cmd.tip.Tools=Tools
+tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.Open_Profile_Directory=Open Profile Directory
+tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
+tracing.option.A11Y_Description=Accessibility issues
+tracing.option.ACTIVATION_Description=Firebug activation
+tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
+tracing.option.ANNOTATIONS_Description=Firebug website annotation
+tracing.option.BP_Description=Breakpoints
+tracing.option.CACHE_Description=Source cache
+tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
+tracing.option.COMPILATION_UNITS_Description=Script compilation units
+tracing.option.CONSOLE_Description=Console Panel
+tracing.option.CSS_Description=CSS parsing
+tracing.option.DISPATCH_Description=Event dispatching
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate creation
+tracing.option.EDITOR_Description=Inline Editor & Autocompleter
+tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Internal Firebug errors
+tracing.option.EVAL_Description=Script evaluation
+tracing.option.FBS_BP_Description=Firebug service breakpoints
+tracing.option.FBS_CREATION_Description=Firebug service script creation
+tracing.option.FBS_ERRORS_Description=Firebug service errors
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
+tracing.option.FBS_FUNCTION_Description=Firebug service function
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
+tracing.option.FBS_SRCUNITS_Description=Firebug service source units
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
+tracing.option.FUNCTION_NAMES_Description=JavaScript function names
+tracing.option.HISTORY_Description=Firebug Navigation History
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request observer
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug initialization
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON viewer
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Localization
+tracing.option.LOCATIONS_Description=Source locations
+tracing.option.NET_Description=Net Panel
+tracing.option.NET_EVENTS_Description=Network events
+tracing.option.OPTIONS_Description=Firebug preferences
+tracing.option.PANELS_Description=Panels
+tracing.option.SHORTCUTS_Description=Keyboard shortcuts
+tracing.option.SOURCEFILES_Description=JavaScript source files
+tracing.option.SPY_Description=XMLHttpRequests observer
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Settings storage
+tracing.option.SVGVIEWER_Description=SVG viewer
+tracing.option.FONTS_Description=Fonts information and font viewer
+tracing.option.TOOLTIP_Description=Start Button tooltip
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging user interface
+tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
+tracing.option.XMLVIEWER_Description=XML viewer
diff --git a/locale/fa/firebug.properties b/locale/fa/firebug.properties
index 915df42..867e5cc 100644
--- a/locale/fa/firebug.properties
+++ b/locale/fa/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle= آتش افروز - %S
-# Panel titles
-Panel-console=Console
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Net
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Script
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Style
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Computed
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Layout
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Watch
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Breakpoints
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Stack
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Scopes
-firebug.DetachFirebug=بازکردن آتش افروز در یک پنجره جدید
-firebug.AttachFirebug=Attach Firebug to Browser Window
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Deactivated
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=در داخل مرورگر
-minimized=کوچک شده
-enablement.for_all_pages=برای تمام صفحات
-enablement.on=روشن
-enablement.off=خاموش
-enablement.Panel_activation_status=Panel activation status:
-none=بسته شده
-Firebug_-_inactive_for_current_website=Firebug - inactive for current website
-Activate_Firebug_for_the_current_website=Activate Firebug for the current website
-Minimized=کوچک شده
-Minimize_Firebug=کوچک کردن آتش افروز
-On_for_all_web_pages=روشن برای تمام صفحات وب
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Clear Activation List
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI Location
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=گزینه های آتش افروز
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Show All Panels
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=نمایش خطا های جاوا اسکریپت
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=نمایش اخطارهای جاوا اسکریپت
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=نمایش خطاهای CSS
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=نمایش پشته ردیاب به همراه خطاها
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=نمایش XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=نمایش خطاهای Chrome
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=نمایش پیغام های Chrome
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=نمایش خطاهای خارجی
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Show Network Errors
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=اخطارهای صریح (خطا در عملکرد)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Command History
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Show Completion List Popup
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=ناتوانی در تایید
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (line %S)
-LineAndCol=%S (line %S, col %S)
-InstanceLine=%S #%S (line %S)
-StackItem=%S (%S line %S)
-SystemItem=<System>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(بدون نام)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=نمایش کامل متن
-html.option.tip.Show_Full_Text=Don't crop element contents
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=نمایش فضای سفید
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=نمایش توضیحات
-html.option.tip.Show_Comments=Show comment nodes
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=برجسته کردن تغییرات
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=توسعه دادن تغییرات
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=پرش به مکان تغییرات در پنجره نمایش
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Show Quick Info Box
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Shade Box Model
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=پرش به مکان عنصر در پنجره نمایش
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=صفت جدید...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=حذف عنصر
-html.Delete_Element=Delete the element from the tree
-DeleteNode=حذف گره
-html.Delete_Node=Delete the node from the tree
-# Quick Info Box
-quickInfo=Quick Info
-computedStyle=Computed Style
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Break On Mutate
-html.Disable_Break_On_Mutate=Disable Break On Mutate
-html.label.Break_On_Text_Change=Break On Text Change
-html.label.HTML_Breakpoints=HTML Breakpoints
-html.label.Break_On_Attribute_Change=Break On Attribute Change
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Break On Child Addition or Removal
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Break On Element Removal
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Expand/Contract All
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Break On Property Change
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Disable Break On Property Change
-dom.label.DOM_Breakpoints=DOM Breakpoints
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=ویرایش صفت \"%S\"...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=حذف صفت \"%S\"
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=ارث برده شده از
-SothinkWarning=مانع عملکرد صحیح آتش افروز می باشد Sothink SWF Catcher extension<br><br>لطفا <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">این موضوع را در بخش سوالات متداول آتش افروز</a> مطالعه کنید
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
-EditStyle=ویرایش استایل عنصر...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=دستور جدید...
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=خصیصه جدید...
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=ویرایش \"%S\"...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=غیرفعال کردن \"%S\"
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=حذف \"%S\"
-css.tip.Delete_Prop=Delete the property "%S"
-# Console context menu labels.
-BreakOnThisError=توقف به هنگام وقوع این خطا
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=توقف به هنگام وقوع خطا
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Track Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Use Last Source Line for eval() names
-UseMD5ForEvalName=Use MD5 for eval() names
-# Breakpoints side panel
-Breakpoints=نقاط توقف
-ErrorBreakpoints=خطای نقطات توقف
-LoggedFunctions=Logged Functions
-EnableAllBreakpoints=فعال کردن همه نقاط توقف
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=غیرفعال کردن همه نقاط توقف
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=حذف همه نقاط توقف
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=در این نقطه توقف زمانی متوقف خواهید شد که این عبارت درست باشد
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Remove Breakpoint
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Disable Breakpoint
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Enable Breakpoint
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Continue
-script.balloon.Disable=Disable
-ScriptsFilterStatic=نمایش اسکریپت های ایستا
-ScriptsFilterEval=Show Static and eval Scripts
-ScriptsFilterEvent=Show Static and event Scripts
-ScriptsFilterAll=Show Static, eval, and event Scripts
-ScriptsFilterStaticShort=ایستا
-ScriptsFilterEvalShort=evals
-ScriptsFilterEventShort=رویدادها
-ScriptsFilterAllShort=همه
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Expand All
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Collapse All
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=نمایش خصوصیات User-defined
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=نمایش تابع های User-defined
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=نمایش خصوصیات DOM
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=نمایش تابع های DOM
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=نمایش ثابت های DOM
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=برای این شئ خصوصیاتی موجود نیست تا نمایش داده شود
-NewWatch=New watch expression...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Add Watch
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=رونوشت از منبع
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
-CopyValue=رونوشت از مقدار
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Copy Name
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Copy Path
-dom.tip.Copy_Path=Copy the property path
-NewProperty=خصیصه جدید...
-EditProperty=ویرایش خصیصه...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=ویرایش متغییر...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Edit Watch...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=حذف خصیصه
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Delete Watch
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=تنظیم نقطه توقف
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=ویرایش شرایط نقطه توقف...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=نقطه توقف تنظیم شده ای در این صفحه وجود ندارد
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Only Show Applied Styles
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Show User Agent CSS
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Expand Shorthand Properties
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Sort Alphabetically
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Show Mozilla Specific Styles
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Type any key to filter list
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=position
-LayoutAdjacent=adjacent
-position=position
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=نمایش خط کشها و خطوط راهنما
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Net panel
-Loading=Loading...
-Headers=Headers
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Reset Header
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=Requested URL and used HTTP method
-net.header.Status=Status
-net.header.Status_Tooltip=Status of the received response
-net.header.Domain=Domain
-net.header.Domain_Tooltip=Domain of the executed request
-net.header.Size=Size
-net.header.Size_Tooltip=Size of the received response (compressed size in case of compressed responses)
-net.header.Timeline=Timeline
-net.header.Timeline_Tooltip=Detailed timing info about request response round trip
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=XHR Breakpoints
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Break On XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=view source
-net.headers.pretty_print=pretty print
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Media
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Post
-Put=Put
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Response
-URLParameters=Params
-Cache=Cache
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Sort by key
-jsonviewer.do_not_sort=Do not sort
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Request Headers
-ResponseHeaders=Response Headers
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
-LimitPrefs=Preferences
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=به منظور رفع این مشکل تغییر ایجاد کنید در: %S
-Refresh=بازسازی
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=بازکردن در زبانه جدید
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=بازکردن پاسخ در زبانه جدید
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Profile
-ProfilerStarted=پروفایل ساز در حال اجراست. برای دیدن گزارش آن روی \"پروفایل\" کلیک کنید
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
-NothingToProfile=در پروفایل فعالیتی وجود ندارد
-PercentTooltip=درصد زمانیکه صرف این تابع شده است
-CallsHeaderTooltip=تعداد دفعاتی که تابع فراخوانی شده است
-OwnTimeHeaderTooltip=زمانیکه صرف تابع شده است، بدون فراخوانی های داخلی
-TimeHeaderTooltip=زمانیکه صرف تابع شده است، به همراه فراخوانی های داخلی
-AvgHeaderTooltip=زمان میانگین، شامل فراخوانی های تابع
-MinHeaderTooltip=کمینه زمان، شامل فراخوانی های تابع
-MaxHeaderTooltip=بیشینه زمان، شامل فراخوانی های تابع
-ProfileButton.Enabled.Tooltip=زمان اجرای پروفایل JavaScript
-ProfileButton.Disabled.Tooltip=زمان اجرای پروفایل JavaScript (پنل اسکریپت باید فعال باشد)
-Function=تابع
-Percent=درصد
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=فراخوانی ها
-OwnTime=زمان تابع
-Time=زمان
-Avg=میانگین
-Min=کمینه
-Max=بیشینه
-File=فایل
-# Support for standard actions.
-Copy=رونوشت
-Cut=برش
-Remove=حذف
-Delete=Delete
-Paste=Paste
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=رونوشت از innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=رونوشت از XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Copy CSS Path
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=رونوشت از مکان
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=رونوشت از مکان به همراه پارامترها
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=رونوشت از Request Headers
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=رونوشت از Response Headers
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=رونوشت از Response Body
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=رونوشت از خطا
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=رونوشت از تابع
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Log Calls to \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=گزارش رویدادها
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=فعال کردن
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=کنسول آتش افروز پشتیبانی نمی کند از \'%S\'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=خط فرمان آتش افروز پشیبانی نمی کند از \'%S\'
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Disable Break On All Errors
-console.Break_On_All_Errors=Break On All Errors
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Break On This Error
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript is disabled in your Firefox preferences. If you want to use the Console panel, then please enable this option via Tools > Options > Content > Enable JavaScript
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Response Body
-net.sizeinfo.Post_Body=Post Body
-net.sizeinfo.Total_Sent=Total Sent
-net.sizeinfo.Total_Received=Total Received
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=نت پنل فعال شده است. درخواست های زمان غیرفعال بودن نت پنل نشان داده نشده اند
-net.responseSizeLimitMessage=فضای جوابگویی آتش افروز پر شده است. <a>اینجا</a> کلیک کنید تا تمام جواب در زبانه ای جدید در فایرفاکس باز شود
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Firebug request size limit has been reached by Firebug.
-net.Break_On_XHR=توقف روی XHR
-net.label.Parameters=Parameters
-net.label.Parts=Parts
-net.label.Source=Source
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Disable Browser Cache
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Show Paint Events
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=توقف روی بعدی
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=نمایش هدرهای HTTP
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S request;%1$S requests
-FromCache=از حافظه نهان
-StopLoading=متوقف کردن بازآوری
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(داده خیلی بزرگ)
-ShowComputedStyle=Show Computed Style
-StyleGroup-text=Text
-StyleGroup-background=Background
-StyleGroup-box=Box Model
-StyleGroup-layout=Layout
-StyleGroup-other=Other
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=رونوشت از رنگ
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=رونوشت از مکان تصویر
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=بازکردن تصویر در زبانه جدید
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Omit Toolbar Stack
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copy Rule Declaration
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Copy Style Declaration
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Error;%1$S Errors
-moduleManager.title= پنل غیرفعال است %S
-moduleManager.desc3=از نماد آتش افروز در نوار وضعیت برای فعال و غیر فعال کردن همه پنل ها استفاده کنید. از منوی زبانه ها برای کنترل آن پنل استفاده کنید
-moduleManager.Enable=Enable
-Suspend_Firebug=معلق کردن آتش افروز
-Resume_Firebug=بازگشت به آتش افروز
-Reset_Panels_To_Disabled=بازگرداندن پنل ها به وضعیت غیرفعال
-Open_Console=بازکردن کنسول
-Open_Console_Tooltip=بازکردن کنسول ردیابی برای آتش افروز
-Scope_Chain=Scope Chain
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=Whit
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Call
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Window
-Logs=گزارشات
-Options=گزینه ها
-Copy_Stack=رونوشت از پشته
-Copy Exception=رونوشت از استثنا
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blocking
-requestinfo.Resolving=DNS Lookup
-requestinfo.Connecting=در حال اتصال
-requestinfo.Sending=Sending
-requestinfo.Waiting=Waiting
-requestinfo.Receiving=Receiving
-requestinfo.ContentLoad='DOMContentLoaded' (event)
-requestinfo.WindowLoad='load' (event)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Firebug Search
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=بعدی
-search.tip.Next=Search for the next match
-search.Previous=Previous
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Case Sensitive
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Multiple Files
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Use Regular Expression
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS Selector
-search.net.Headers=Headers
-search.net.Parameters=پارامترها
-search.net.Response_Bodies=Response Bodies
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persist
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Show all log entries
-firebug.console.Errors=Errors
-firebug.console.Filter_by_Errors=Filter by errors
-firebug.console.Warnings=Warnings
-firebug.console.Filter_by_Warnings=Filter by warnings
-firebug.console.Info=Info
-firebug.console.Filter_by_Info=Filter by info
-firebug.console.Debug_Info=Debug Info
-firebug.console.Filter_by_Debug_Info=Filter by debug info
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=بازکردن آتش افروز
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Hide Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=فعال کردن تمام پنل ها
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=غیرفعال کردن تمام پنل ها
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=سفارشی کردن کلیدهای میانبر
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=گزینه ها
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=بهبود دهنده دسترسی را فعال کن
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=بازنشاندن تمام گزینه های آتش افروز
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug Online
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Show Error Count
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=سایز قلم
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=افزایش سایز قلم
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=کاهش سایز قلم
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=سایز قلم استاندارد
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=وب سایت آتش افروز...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=مستندات...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=کلیدهای میانبر...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=تالار گفتگو...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=دنبال کننده موضوع...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=همکاری کردن...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=درباره...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=جستجو
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=وارکردن مجدد فرمان
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=فعال کردن بررسی کننده
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Toggle Quick Info Box
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=مبدل پروفایل
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=تمرکز بر روی خط فرمان
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=تمرکز بر روی جستجوی آتش افروز
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=تمرکز بر روی ویرایشگر Watch
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=تمرکز بر روی موقعیت
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=شئ بعدی
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=شئ قبلی
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=سفارشی کردن کلیدهای آتش افروز
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=بازکردن آتش افروز در پنجره جدید
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=رفتن به پنل سمت چپی آتش افروز
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=رفتن به پنل سمت راستی آتش افروز
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=بازکردن آتش افروز
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=زبانه قبلی آتش افروز
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=پاک کردن کنسول
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=بازکردن کنسول ردیابی
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Go Back
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Go Forward
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Increase Text Size
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Decrease Text Size
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normal Text Size
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Panel Selector
-customizeShortcuts=Firebug Shortcut Bindings
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=panel tools
-a11y.labels.firebug_panels=Firebug panels
-a11y.labels.firebug_side_panels=Firebug side panels
-a11y.labels.firebug_window=Firebug window
-a11y.labels.firebug_status=Firebug status
-a11y.labels.reset=reset
-a11y.labels.reset_shortcut=reset %S shortcut
-aria.labels.inactive_panel=inactive panel
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=log rows
-a11y.labels.call_stack=call stack
-a11y.labels.document_structure=document structure
-a11y.labels.title_panel= %S panel
-a11y.labels.title_side_panel= %S side panel
-a11y.labels.cached=cached
-aria.labels.stack_trace=stack trace
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=position
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=margin top
-a11y.layout.margin_right=margin right
-a11y.layout.margin_bottom=margin bottom
-a11y.layout.margin_left=margin left
-a11y.layout.border_top=border top
-a11y.layout.border_right=border right
-a11y.layout.border_bottom=border bottom
-a11y.layout.border_left=border left
-a11y.layout.padding_top=padding top
-a11y.layout.padding_right=padding right
-a11y.layout.padding_bottom=padding bottom
-a11y.layout.padding_left=padding left
-a11y.layout.top=top
-a11y.layout.right=right
-a11y.layout.bottom=bottom
-a11y.layout.left=left
-a11y.layout.width=width
-a11y.layout.height=height
-a11y.layout.size=size
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=Press Enter followed by Tab to edit individual values
-a11y.labels.style_rules=style rules
-aria.labels.inherited_style_rules=inherited style rules
-a11y.labels.computed_styles=computed styles
-a11y.labels.dom_properties=DOM properties
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=inline editor
-a11y.labels.value_for_attribute_in_element=value for %S attribute in %S element
-a11y.labels.attribute_for_element=attribute for %S element
-a11y.labels.text_contents_for_element=text contents for %S element
-a11y.labels.defined_in_file=defined in %S
-a11y.labels.declarations_for_selector=style declarations for "%S" selector
-a11y.labels.property_for_selector=CSS property for selector: %S
-a11y.labels.value_property_in_selector=%S property value for selector %S
-a11y.labels.css_selector=CSS selector
-a11y.labels.source_code_for_file=source code for file %S
-a11y.labels.press_enter_to_add_new_watch_expression=press enter to add a new watch expression
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=overridden
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=has conditional break point
-a11y.updates.has_disabled_break_point=has disabled break point
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script suspended on line %S in %S, file %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=Match found for "%S" in %S log rows
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=Match found for "%S" on line %S in %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=Match found for "%S" in %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=Match found for "%S" in attribute %S=%S of %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=Match found for "%S" in text content: %S of %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=Match found for "%S" in selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=Match found for "%S" in style declaration %S in selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=Match found for "%S" in DOM property %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=Match found for "%S" in %S, %S: %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=Match found for "%S" in net summary row: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=no matches found for "%S"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=آیا خواهان بازگشت مجدد تمام گزینه های آتش افروز به حالت استاندارد هستید؟
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=کنسول باید فعال باشد
-warning.Command_line_blocked?=خط فرمان مسدود شده?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=برای فعال شدن پنجره کنسول صفحه را بازآوری کنید
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=The resource from this URL is not text
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Go back to this panel
-firebug.history.Stay_on_this_panel=Stay on this panel
-firebug.history.Go_forward_to_this_panel=Go forward to this panel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Go back
-firebug.history.Go_forward=Go forward
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Script Panel was inactive during page load
-script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript is not enabled
-script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Enable JavaScript and Refresh
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=All scripts were filtered
-script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=No Javascript on this page
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Debugger is already active
-script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
-script.button.Go_to_that_page=Go to that page
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=آتش افروز
-firebug.Close=بستن
-firebug.View=نما
-firebug.Help=راهنما
-firebug.Run=اجرا
-firebug.Copy=رونوشت
-firebug.History=History
-firebug.Run_the_entered_command=Run the entered command
-firebug.Clear_the_Command_Editor=Clear the Command Editor
-firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
-firebug.Insert_a_previously_entered_command=Insert a previously entered command
-firebug.AlwaysOpenInWindow=همیشه در یک پنجره جدید باز شو
-firebug.OpenWith=بازکردن با ویرایشگر
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=سایت ها...
-firebug.Configure_Editors=Configure Editors
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=بررسی کردن
-firebug.InspectElement=بررسی کردن عنصر
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=قطع کردن در هنگام خطا
-firebug.InspectTooltip=برای بررسی کردن یک عنصر بر روی آن در صفحه کلیک کنید
-firebug.EditHTMLTooltip=ویرایش این HTML
-firebug.Profile=پروفایل
-firebug.Clear=پاک کردن
-firebug.ClearConsole=پاک کردن کنسول
-firebug.ClearTooltip=پاک کردن کنسول
-firebug.All=All
-firebug.Images=Images
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Configured Firebug Editors
-editors.Editor=Editor
-editors.Executable=Executable
-editors.Launch_Arguments=Launch Arguments
-editors.Add=Add
-editors.Remove=Remove
-editors.Change=Change
-editors.Move_Up=Move Up
-editors.Close=Close
-editors.Browse=Browse...
-changeEditor.Editor_Configuration=Editor Configuration
-changeEditor.Name=نام:
-changeEditor.Executable=فایل اجرایی:
-changeEditor.CmdLine=آرگومانها:
-changeEditor.Supplied_arguments=Arguments supplied by Firebug:
-changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
-changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
-changeEditor.Line_number=Line number (if available)
-changeEditor.Invalid_Application_Path=Invalid Application Path
-changeEditor.Application_does_not_exist=The specified application doesn't exist!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=ویرایش
-firebug.css.sourceEdit=Source Edit
-firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
-firebug.css.liveEdit=Live Edit
-firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
-firebug.EditCSSTooltip=ویرایش این style sheet
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Show Break Notifications
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
-firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=There are no child objects
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=more
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Object Properties
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(no completions)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
-firebug.failedToPreviewImageURL=Failed to load the given URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle= آتش افروز - %S
+# Panel titles
+Panel-console=Console
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Net
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Script
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Style
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Computed
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Layout
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Watch
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Breakpoints
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Stack
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Scopes
+firebug.DetachFirebug=بازکردن آتش افروز در یک پنجره جدید
+firebug.AttachFirebug=Attach Firebug to Browser Window
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Deactivated
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=در داخل مرورگر
+minimized=کوچک شده
+enablement.for_all_pages=برای تمام صفحات
+enablement.on=روشن
+enablement.off=خاموش
+enablement.Panel_activation_status=Panel activation status:
+none=بسته شده
+Firebug_-_inactive_for_current_website=Firebug - inactive for current website
+Activate_Firebug_for_the_current_website=Activate Firebug for the current website
+Minimized=کوچک شده
+Minimize_Firebug=کوچک کردن آتش افروز
+On_for_all_web_pages=روشن برای تمام صفحات وب
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Clear Activation List
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI Location
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=گزینه های آتش افروز
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Show All Panels
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=نمایش خطا های جاوا اسکریپت
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=نمایش اخطارهای جاوا اسکریپت
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=نمایش خطاهای CSS
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=نمایش پشته ردیاب به همراه خطاها
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=نمایش XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=نمایش خطاهای Chrome
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=نمایش پیغام های Chrome
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=نمایش خطاهای خارجی
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Show Network Errors
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=اخطارهای صریح (خطا در عملکرد)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Command History
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Show Completion List Popup
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=ناتوانی در تایید
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (line %S)
+LineAndCol=%S (line %S, col %S)
+InstanceLine=%S #%S (line %S)
+StackItem=%S (%S line %S)
+SystemItem=<System>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(بدون نام)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=نمایش کامل متن
+html.option.tip.Show_Full_Text=Don't crop element contents
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=نمایش فضای سفید
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=نمایش توضیحات
+html.option.tip.Show_Comments=Show comment nodes
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=برجسته کردن تغییرات
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=توسعه دادن تغییرات
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=پرش به مکان تغییرات در پنجره نمایش
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Show Quick Info Box
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Shade Box Model
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=پرش به مکان عنصر در پنجره نمایش
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=صفت جدید...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=حذف عنصر
+html.Delete_Element=Delete the element from the tree
+DeleteNode=حذف گره
+html.Delete_Node=Delete the node from the tree
+# Quick Info Box
+quickInfo=Quick Info
+computedStyle=Computed Style
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Break On Mutate
+html.Disable_Break_On_Mutate=Disable Break On Mutate
+html.label.Break_On_Text_Change=Break On Text Change
+html.label.HTML_Breakpoints=HTML Breakpoints
+html.label.Break_On_Attribute_Change=Break On Attribute Change
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Break On Child Addition or Removal
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Break On Element Removal
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Expand/Contract All
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Break On Property Change
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Disable Break On Property Change
+dom.label.DOM_Breakpoints=DOM Breakpoints
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=ویرایش صفت \"%S\"...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=حذف صفت \"%S\"
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=ارث برده شده از
+SothinkWarning=مانع عملکرد صحیح آتش افروز می باشد Sothink SWF Catcher extension<br><br>لطفا <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">این موضوع را در بخش سوالات متداول آتش افروز</a> مطالعه کنید
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
+EditStyle=ویرایش استایل عنصر...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=دستور جدید...
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=خصیصه جدید...
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=ویرایش \"%S\"...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=غیرفعال کردن \"%S\"
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=حذف \"%S\"
+css.tip.Delete_Prop=Delete the property "%S"
+# Console context menu labels.
+BreakOnThisError=توقف به هنگام وقوع این خطا
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=توقف به هنگام وقوع خطا
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Track Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Use Last Source Line for eval() names
+UseMD5ForEvalName=Use MD5 for eval() names
+# Breakpoints side panel
+Breakpoints=نقاط توقف
+ErrorBreakpoints=خطای نقطات توقف
+LoggedFunctions=Logged Functions
+EnableAllBreakpoints=فعال کردن همه نقاط توقف
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=غیرفعال کردن همه نقاط توقف
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=حذف همه نقاط توقف
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=در این نقطه توقف زمانی متوقف خواهید شد که این عبارت درست باشد
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Remove Breakpoint
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Disable Breakpoint
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Enable Breakpoint
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Continue
+script.balloon.Disable=Disable
+ScriptsFilterStatic=نمایش اسکریپت های ایستا
+ScriptsFilterEval=Show Static and eval Scripts
+ScriptsFilterEvent=Show Static and event Scripts
+ScriptsFilterAll=Show Static, eval, and event Scripts
+ScriptsFilterStaticShort=ایستا
+ScriptsFilterEvalShort=evals
+ScriptsFilterEventShort=رویدادها
+ScriptsFilterAllShort=همه
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Expand All
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Collapse All
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=نمایش خصوصیات User-defined
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=نمایش تابع های User-defined
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=نمایش خصوصیات DOM
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=نمایش تابع های DOM
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=نمایش ثابت های DOM
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=برای این شئ خصوصیاتی موجود نیست تا نمایش داده شود
+NewWatch=New watch expression...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Add Watch
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=رونوشت از منبع
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
+CopyValue=رونوشت از مقدار
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Copy Name
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Copy Path
+dom.tip.Copy_Path=Copy the property path
+NewProperty=خصیصه جدید...
+EditProperty=ویرایش خصیصه...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=ویرایش متغییر...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Edit Watch...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=حذف خصیصه
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Delete Watch
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=تنظیم نقطه توقف
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=ویرایش شرایط نقطه توقف...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=نقطه توقف تنظیم شده ای در این صفحه وجود ندارد
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Only Show Applied Styles
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Show User Agent CSS
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Expand Shorthand Properties
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Sort Alphabetically
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Show Mozilla Specific Styles
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Type any key to filter list
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=position
+LayoutAdjacent=adjacent
+position=position
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=نمایش خط کشها و خطوط راهنما
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Net panel
+Loading=Loading...
+Headers=Headers
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Reset Header
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=Requested URL and used HTTP method
+net.header.Status=Status
+net.header.Status_Tooltip=Status of the received response
+net.header.Domain=Domain
+net.header.Domain_Tooltip=Domain of the executed request
+net.header.Size=Size
+net.header.Size_Tooltip=Size of the received response (compressed size in case of compressed responses)
+net.header.Timeline=Timeline
+net.header.Timeline_Tooltip=Detailed timing info about request response round trip
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=XHR Breakpoints
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Break On XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=view source
+net.headers.pretty_print=pretty print
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Media
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Post
+Put=Put
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Response
+URLParameters=Params
+Cache=Cache
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Sort by key
+jsonviewer.do_not_sort=Do not sort
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Request Headers
+ResponseHeaders=Response Headers
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
+LimitPrefs=Preferences
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=به منظور رفع این مشکل تغییر ایجاد کنید در: %S
+Refresh=بازسازی
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=بازکردن در زبانه جدید
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=بازکردن پاسخ در زبانه جدید
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Profile
+ProfilerStarted=پروفایل ساز در حال اجراست. برای دیدن گزارش آن روی \"پروفایل\" کلیک کنید
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
+NothingToProfile=در پروفایل فعالیتی وجود ندارد
+PercentTooltip=درصد زمانیکه صرف این تابع شده است
+CallsHeaderTooltip=تعداد دفعاتی که تابع فراخوانی شده است
+OwnTimeHeaderTooltip=زمانیکه صرف تابع شده است، بدون فراخوانی های داخلی
+TimeHeaderTooltip=زمانیکه صرف تابع شده است، به همراه فراخوانی های داخلی
+AvgHeaderTooltip=زمان میانگین، شامل فراخوانی های تابع
+MinHeaderTooltip=کمینه زمان، شامل فراخوانی های تابع
+MaxHeaderTooltip=بیشینه زمان، شامل فراخوانی های تابع
+ProfileButton.Enabled.Tooltip=زمان اجرای پروفایل JavaScript
+ProfileButton.Disabled.Tooltip=زمان اجرای پروفایل JavaScript (پنل اسکریپت باید فعال باشد)
+Function=تابع
+Percent=درصد
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=فراخوانی ها
+OwnTime=زمان تابع
+Time=زمان
+Avg=میانگین
+Min=کمینه
+Max=بیشینه
+File=فایل
+# Support for standard actions.
+Copy=رونوشت
+Cut=برش
+Remove=حذف
+Delete=Delete
+Paste=Paste
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=رونوشت از innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=رونوشت از XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Copy CSS Path
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=رونوشت از مکان
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=رونوشت از مکان به همراه پارامترها
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=رونوشت از Request Headers
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=رونوشت از Response Headers
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=رونوشت از Response Body
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=رونوشت از خطا
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=رونوشت از تابع
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Log Calls to \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=گزارش رویدادها
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=فعال کردن
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=کنسول آتش افروز پشتیبانی نمی کند از \'%S\'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=خط فرمان آتش افروز پشیبانی نمی کند از \'%S\'
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Disable Break On All Errors
+console.Break_On_All_Errors=Break On All Errors
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Break On This Error
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript is disabled in your Firefox preferences. If you want to use the Console panel, then please enable this option via Tools > Options > Content > Enable JavaScript
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Response Body
+net.sizeinfo.Post_Body=Post Body
+net.sizeinfo.Total_Sent=Total Sent
+net.sizeinfo.Total_Received=Total Received
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=نت پنل فعال شده است. درخواست های زمان غیرفعال بودن نت پنل نشان داده نشده اند
+net.responseSizeLimitMessage=فضای جوابگویی آتش افروز پر شده است. <a>اینجا</a> کلیک کنید تا تمام جواب در زبانه ای جدید در فایرفاکس باز شود
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Firebug request size limit has been reached by Firebug.
+net.Break_On_XHR=توقف روی XHR
+net.label.Parameters=Parameters
+net.label.Parts=Parts
+net.label.Source=Source
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Disable Browser Cache
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Show Paint Events
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=توقف روی بعدی
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=نمایش هدرهای HTTP
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S request;%1$S requests
+FromCache=از حافظه نهان
+StopLoading=متوقف کردن بازآوری
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(داده خیلی بزرگ)
+ShowComputedStyle=Show Computed Style
+StyleGroup-text=Text
+StyleGroup-background=Background
+StyleGroup-box=Box Model
+StyleGroup-layout=Layout
+StyleGroup-other=Other
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=رونوشت از رنگ
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=رونوشت از مکان تصویر
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=بازکردن تصویر در زبانه جدید
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Omit Toolbar Stack
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copy Rule Declaration
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Copy Style Declaration
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Error;%1$S Errors
+moduleManager.title= پنل غیرفعال است %S
+moduleManager.desc3=از نماد آتش افروز در نوار وضعیت برای فعال و غیر فعال کردن همه پنل ها استفاده کنید. از منوی زبانه ها برای کنترل آن پنل استفاده کنید
+moduleManager.Enable=Enable
+Suspend_Firebug=معلق کردن آتش افروز
+Resume_Firebug=بازگشت به آتش افروز
+Reset_Panels_To_Disabled=بازگرداندن پنل ها به وضعیت غیرفعال
+Open_Console=بازکردن کنسول
+Open_Console_Tooltip=بازکردن کنسول ردیابی برای آتش افروز
+Scope_Chain=Scope Chain
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=Whit
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Call
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Window
+Logs=گزارشات
+Options=گزینه ها
+Copy_Stack=رونوشت از پشته
+Copy Exception=رونوشت از استثنا
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blocking
+requestinfo.Resolving=DNS Lookup
+requestinfo.Connecting=در حال اتصال
+requestinfo.Sending=Sending
+requestinfo.Waiting=Waiting
+requestinfo.Receiving=Receiving
+requestinfo.ContentLoad='DOMContentLoaded' (event)
+requestinfo.WindowLoad='load' (event)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Firebug Search
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=بعدی
+search.tip.Next=Search for the next match
+search.Previous=Previous
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Case Sensitive
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Multiple Files
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Use Regular Expression
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS Selector
+search.net.Headers=Headers
+search.net.Parameters=پارامترها
+search.net.Response_Bodies=Response Bodies
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persist
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Show all log entries
+firebug.console.Errors=Errors
+firebug.console.Filter_by_Errors=Filter by errors
+firebug.console.Warnings=Warnings
+firebug.console.Filter_by_Warnings=Filter by warnings
+firebug.console.Info=Info
+firebug.console.Filter_by_Info=Filter by info
+firebug.console.Debug_Info=Debug Info
+firebug.console.Filter_by_Debug_Info=Filter by debug info
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=بازکردن آتش افروز
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Hide Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=فعال کردن تمام پنل ها
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=غیرفعال کردن تمام پنل ها
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=سفارشی کردن کلیدهای میانبر
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=گزینه ها
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=بهبود دهنده دسترسی را فعال کن
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=بازنشاندن تمام گزینه های آتش افروز
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug Online
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Show Error Count
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=سایز قلم
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=افزایش سایز قلم
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=کاهش سایز قلم
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=سایز قلم استاندارد
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=وب سایت آتش افروز...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=مستندات...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=کلیدهای میانبر...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=تالار گفتگو...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=دنبال کننده موضوع...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=همکاری کردن...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=درباره...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=جستجو
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=وارکردن مجدد فرمان
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=فعال کردن بررسی کننده
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Toggle Quick Info Box
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=مبدل پروفایل
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=تمرکز بر روی خط فرمان
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=تمرکز بر روی جستجوی آتش افروز
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=تمرکز بر روی ویرایشگر Watch
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=تمرکز بر روی موقعیت
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=شئ بعدی
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=شئ قبلی
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=سفارشی کردن کلیدهای آتش افروز
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=بازکردن آتش افروز در پنجره جدید
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=رفتن به پنل سمت چپی آتش افروز
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=رفتن به پنل سمت راستی آتش افروز
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=بازکردن آتش افروز
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=زبانه قبلی آتش افروز
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=پاک کردن کنسول
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=بازکردن کنسول ردیابی
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Go Back
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Go Forward
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Increase Text Size
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Decrease Text Size
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normal Text Size
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Panel Selector
+customizeShortcuts=Firebug Shortcut Bindings
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=panel tools
+a11y.labels.firebug_panels=Firebug panels
+a11y.labels.firebug_side_panels=Firebug side panels
+a11y.labels.firebug_window=Firebug window
+a11y.labels.firebug_status=Firebug status
+a11y.labels.reset=reset
+a11y.labels.reset_shortcut=reset %S shortcut
+aria.labels.inactive_panel=inactive panel
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=log rows
+a11y.labels.call_stack=call stack
+a11y.labels.document_structure=document structure
+a11y.labels.title_panel= %S panel
+a11y.labels.title_side_panel= %S side panel
+a11y.labels.cached=cached
+aria.labels.stack_trace=stack trace
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=position
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=margin top
+a11y.layout.margin_right=margin right
+a11y.layout.margin_bottom=margin bottom
+a11y.layout.margin_left=margin left
+a11y.layout.border_top=border top
+a11y.layout.border_right=border right
+a11y.layout.border_bottom=border bottom
+a11y.layout.border_left=border left
+a11y.layout.padding_top=padding top
+a11y.layout.padding_right=padding right
+a11y.layout.padding_bottom=padding bottom
+a11y.layout.padding_left=padding left
+a11y.layout.top=top
+a11y.layout.right=right
+a11y.layout.bottom=bottom
+a11y.layout.left=left
+a11y.layout.width=width
+a11y.layout.height=height
+a11y.layout.size=size
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=Press Enter followed by Tab to edit individual values
+a11y.labels.style_rules=style rules
+aria.labels.inherited_style_rules=inherited style rules
+a11y.labels.computed_styles=computed styles
+a11y.labels.dom_properties=DOM properties
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=inline editor
+a11y.labels.value_for_attribute_in_element=value for %S attribute in %S element
+a11y.labels.attribute_for_element=attribute for %S element
+a11y.labels.text_contents_for_element=text contents for %S element
+a11y.labels.defined_in_file=defined in %S
+a11y.labels.declarations_for_selector=style declarations for "%S" selector
+a11y.labels.property_for_selector=CSS property for selector: %S
+a11y.labels.value_property_in_selector=%S property value for selector %S
+a11y.labels.css_selector=CSS selector
+a11y.labels.source_code_for_file=source code for file %S
+a11y.labels.press_enter_to_add_new_watch_expression=press enter to add a new watch expression
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=overridden
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=has conditional break point
+a11y.updates.has_disabled_break_point=has disabled break point
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script suspended on line %S in %S, file %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=Match found for "%S" in %S log rows
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=Match found for "%S" on line %S in %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=Match found for "%S" in %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=Match found for "%S" in attribute %S=%S of %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=Match found for "%S" in text content: %S of %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=Match found for "%S" in selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=Match found for "%S" in style declaration %S in selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=Match found for "%S" in DOM property %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=Match found for "%S" in %S, %S: %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=Match found for "%S" in net summary row: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=no matches found for "%S"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=آیا خواهان بازگشت مجدد تمام گزینه های آتش افروز به حالت استاندارد هستید؟
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=کنسول باید فعال باشد
+warning.Command_line_blocked?=خط فرمان مسدود شده?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=برای فعال شدن پنجره کنسول صفحه را بازآوری کنید
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=The resource from this URL is not text
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Go back to this panel
+firebug.history.Stay_on_this_panel=Stay on this panel
+firebug.history.Go_forward_to_this_panel=Go forward to this panel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Go back
+firebug.history.Go_forward=Go forward
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Script Panel was inactive during page load
+script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript is not enabled
+script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Enable JavaScript and Refresh
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=All scripts were filtered
+script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=No Javascript on this page
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Debugger is already active
+script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
+script.button.Go_to_that_page=Go to that page
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=آتش افروز
+firebug.Close=بستن
+firebug.View=نما
+firebug.Help=راهنما
+firebug.Run=اجرا
+firebug.Copy=رونوشت
+firebug.History=History
+firebug.Run_the_entered_command=Run the entered command
+firebug.Clear_the_Command_Editor=Clear the Command Editor
+firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
+firebug.Insert_a_previously_entered_command=Insert a previously entered command
+firebug.AlwaysOpenInWindow=همیشه در یک پنجره جدید باز شو
+firebug.OpenWith=بازکردن با ویرایشگر
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=سایت ها...
+firebug.Configure_Editors=Configure Editors
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=بررسی کردن
+firebug.InspectElement=بررسی کردن عنصر
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=قطع کردن در هنگام خطا
+firebug.InspectTooltip=برای بررسی کردن یک عنصر بر روی آن در صفحه کلیک کنید
+firebug.EditHTMLTooltip=ویرایش این HTML
+firebug.Profile=پروفایل
+firebug.Clear=پاک کردن
+firebug.ClearConsole=پاک کردن کنسول
+firebug.ClearTooltip=پاک کردن کنسول
+firebug.All=All
+firebug.Images=Images
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Configured Firebug Editors
+editors.Editor=Editor
+editors.Executable=Executable
+editors.Launch_Arguments=Launch Arguments
+editors.Add=Add
+editors.Remove=Remove
+editors.Change=Change
+editors.Move_Up=Move Up
+editors.Close=Close
+editors.Browse=Browse...
+changeEditor.Editor_Configuration=Editor Configuration
+changeEditor.Name=نام:
+changeEditor.Executable=فایل اجرایی:
+changeEditor.CmdLine=آرگومانها:
+changeEditor.Supplied_arguments=Arguments supplied by Firebug:
+changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
+changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
+changeEditor.Line_number=Line number (if available)
+changeEditor.Invalid_Application_Path=Invalid Application Path
+changeEditor.Application_does_not_exist=The specified application doesn't exist!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=ویرایش
+firebug.css.sourceEdit=Source Edit
+firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
+firebug.css.liveEdit=Live Edit
+firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
+firebug.EditCSSTooltip=ویرایش این style sheet
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Show Break Notifications
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
+firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=There are no child objects
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=more
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Object Properties
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(no completions)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
+firebug.failedToPreviewImageURL=Failed to load the given URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/fr/cookies.properties b/locale/fr/cookies.properties
index 0b79bf4..50ea727 100644
--- a/locale/fr/cookies.properties
+++ b/locale/fr/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Inspecter et manipuler les cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Session
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Accepter les cookies des autres sites
-cookies.tip.AllowGlobally=Accepter tous les cookies par défaut ou bloquer tous les cookies par défaut
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Afficher les événements liés aux cookies
-cookies.tip.showCookieEvents=Journaliser les événements des cookies (modifié, supprimé) dans la console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Effacer les cookies lors d'un refus
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Couper
-cookies.Copy=Copier
-cookies.CopyAll=Tout copier
-cookies.Paste=Coller
-cookies.Delete=Supprimer
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Effacer la valeur
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Modifier
-cookies.Accept=Accepter
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Réinitialiser l'en-tête
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=Vous pouvez préciser quels sites Web sont toujours ou jamais autorisés à utiliser les cookies.\nTapez l'adresse exacte du site que vous souhaitez gérer, puis cliquez sur Bloquer,\nAutoriser la session, ou Autoriser.
-cookies.ExceptionsTitle=Exceptions - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support pour le contrôle des cookies
-cookies.HostEnable=Activer le panneau des cookies pour %S
-cookies.HostDisable=Désactiver le panneau des cookies pour %S
-cookies.Permissions=Activer ou désactiver le panneau des cookies
-cookies.PermissionsIntro=Choisir les sites Web dans lesquels le panneau des cookies sera activé ou désactivé.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=Pages système
-cookies.LocalFiles=Fichiers locaux
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Souhaitez-vous retirer tous les cookies de la liste ?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Voulez vous supprimer tous les cookies de session listés ?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Ne plus afficher ce message
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirmation de la suppression de cookie
-cookies.tip.Confirm_cookie_removal=Si coché, une confirmation est affichée avant la suppression de tous les cookie.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Retirer tous les cookies de la liste.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Suppression des cookies de session
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Supprimer tous les cookie de session listés
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Créer un nouveau cookie pour %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Value
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Gérer les permissions des cookies pour %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=Tous les cookies ont été retirés.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=Tous les cookies de sesion ont été supprimés.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejetés :
-cookies.console.nocookiesreceived=Aucun cookie reçu
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=supprimé
-cookies.console.added=ajouté
-cookies.console.changed=modifié
-cookies.console.cleared=effacé
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domaine
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Sécurisé
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Accepté
-cookies.status.downgraded=Remis à une version antérieure
-cookies.status.flagged=Marqué
-cookies.status.rejected=Rejeté
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Valeur
-cookies.info.rawdatatab.Raw_Data=Données brutes
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Par défaut (Accepter les cookies de session)
-cookies.default.thirdPartySession=Par défaut (Accepter les cookies de session)
-cookies.default.thirdParty=Par défaut (Accepter les cookies)
-cookies.default.allow=Par défaut (Accepter les cookies)
-cookies.default.deny=Par défaut (Refuser les cookies)
-cookies.default.warn=Par défaut (Avertir avant d'accepter les cookies)
-cookies.host.session=Accepter les cookies de session de %S
-cookies.host.accept=Accepter les cookies de %S
-cookies.host.reject=Refuser les cookies de %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Le nom du cookie n'est pas valide.
-cookies.edit.invalidhost=L'hôte du cookie n'est pas valide.
-cookies.edit.invalidpath=Le chemin du cookie n'est pas valide.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Nom
-cookies.header.value=Contenu
-cookies.header.rawValue=Valeur brute
-cookies.header.domain=Hôte
-cookies.header.size=Taille
-cookies.header.path=Chemin
-cookies.header.expires=Expire
-cookies.header.security=Sécurité
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Nom
-cookies.header.value.tooltip=Contenu
-cookies.header.rawValue.tooltip=Valeur brute stockée du cookie
-cookies.header.domain.tooltip=Hôte
-cookies.header.size.tooltip=Taille
-cookies.header.path.tooltip=Chemin
-cookies.header.expires.tooltip=Expire
-cookies.header.security.tooltip=Sécurité
-cookies.header.httponly.tooltip=Montre si le cookie est un cookie uniquement HTTP
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Cookies reçus
-cookies.netinfo.Sent_Cookies=Cookies envoyés
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Filtre du chemin
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Exporter tous les cookies ...
-cookies.export.Export_All_Cookies_Tooltip=Exporter tous les cookies du navigateur dans un fichier cookies.txt
-cookies.export.Export_For_Site=Exporter les cookies pour ce site ...
-cookies.export.Export_For_Site_Tooltip=Exporter les cookies pour %S dans un fichier cookies.txt
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=Il n'existe aucune page active
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Arrêter quand les cookies sont modifiés
-cookies.Disable_Break_On_Cookie=Désactiver l'arrêt quand les cookies sont modifiés
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Points d'arrêt de cookie
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Arrêter sur le cookie '%S'
-cookies.menu.tooltip.Break_On_Cookie=Arrêter sur '%S' quand il est supprimé ou modifié
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Modifier les conditions du point d'arrêt
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=L'évaluation de la condition du point d'arrêt a échoué
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Retirer du site
-cookies.Create=Créer le cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Outils
-cookies.ToolsTooltip=Outils
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Montrer tous les cookies...
-cookies.ViewAllTooltip=Ouvrir le gestionnaire de téléchargements des cookies
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Autorisation des sites Web
-cookies.ViewExceptionsTooltip=Voir la liste des sites Web autorisés ou interdits
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filtre
-cookies.FilterTooltip=Utiliser les options données pour filtrer la liste de cookies.
-cookies.filter.byPath=Filtrer les cookies par emplacement
-cookies.filter.byPathTooltip=N'afficher que les cookies qui correspondent à l'emplacement actuel.
-cookies.filter.showRejectedCookies=Afficher les cookies rejetés
-cookies.filter.showRejectedCookiesTooltip=Afficher aussi les cookies rejetés dans la liste.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Modifier le cookie
-cookies.edit.name.label=Nom :
-cookies.edit.domain.label=Hôte :
-cookies.edit.path.label=Chemin :
-cookies.edit.expire.label=Expire :
-cookies.edit.value.label=Contenu :
-cookies.edit.secure.label=Sécuriser le cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=Encodage URL de la valeur
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filtrer par cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Supprimer tous les cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Inspecter et manipuler les cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Session
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Accepter les cookies des autres sites
+cookies.tip.AllowGlobally=Accepter tous les cookies par défaut ou bloquer tous les cookies par défaut
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Afficher les événements liés aux cookies
+cookies.tip.showCookieEvents=Journaliser les événements des cookies (modifié, supprimé) dans la console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Effacer les cookies lors d'un refus
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Couper
+cookies.Copy=Copier
+cookies.CopyAll=Tout copier
+cookies.Paste=Coller
+cookies.Delete=Supprimer
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Effacer la valeur
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Modifier
+cookies.Accept=Accepter
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Réinitialiser l'en-tête
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=Vous pouvez préciser quels sites Web sont toujours ou jamais autorisés à utiliser les cookies.\nTapez l'adresse exacte du site que vous souhaitez gérer, puis cliquez sur Bloquer,\nAutoriser la session, ou Autoriser.
+cookies.ExceptionsTitle=Exceptions - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support pour le contrôle des cookies
+cookies.HostEnable=Activer le panneau des cookies pour %S
+cookies.HostDisable=Désactiver le panneau des cookies pour %S
+cookies.Permissions=Activer ou désactiver le panneau des cookies
+cookies.PermissionsIntro=Choisir les sites Web dans lesquels le panneau des cookies sera activé ou désactivé.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=Pages système
+cookies.LocalFiles=Fichiers locaux
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Souhaitez-vous retirer tous les cookies de la liste ?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Voulez vous supprimer tous les cookies de session listés ?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Ne plus afficher ce message
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirmation de la suppression de cookie
+cookies.tip.Confirm_cookie_removal=Si coché, une confirmation est affichée avant la suppression de tous les cookie.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Retirer tous les cookies de la liste.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Suppression des cookies de session
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Supprimer tous les cookie de session listés
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Créer un nouveau cookie pour %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Value
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Gérer les permissions des cookies pour %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=Tous les cookies ont été retirés.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=Tous les cookies de sesion ont été supprimés.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejetés :
+cookies.console.nocookiesreceived=Aucun cookie reçu
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=supprimé
+cookies.console.added=ajouté
+cookies.console.changed=modifié
+cookies.console.cleared=effacé
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domaine
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Sécurisé
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Accepté
+cookies.status.downgraded=Remis à une version antérieure
+cookies.status.flagged=Marqué
+cookies.status.rejected=Rejeté
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Valeur
+cookies.info.rawdatatab.Raw_Data=Données brutes
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Par défaut (Accepter les cookies de session)
+cookies.default.thirdPartySession=Par défaut (Accepter les cookies de session)
+cookies.default.thirdParty=Par défaut (Accepter les cookies)
+cookies.default.allow=Par défaut (Accepter les cookies)
+cookies.default.deny=Par défaut (Refuser les cookies)
+cookies.default.warn=Par défaut (Avertir avant d'accepter les cookies)
+cookies.host.session=Accepter les cookies de session de %S
+cookies.host.accept=Accepter les cookies de %S
+cookies.host.reject=Refuser les cookies de %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Le nom du cookie n'est pas valide.
+cookies.edit.invalidhost=L'hôte du cookie n'est pas valide.
+cookies.edit.invalidpath=Le chemin du cookie n'est pas valide.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Nom
+cookies.header.value=Contenu
+cookies.header.rawValue=Valeur brute
+cookies.header.domain=Hôte
+cookies.header.size=Taille
+cookies.header.path=Chemin
+cookies.header.expires=Expire
+cookies.header.security=Sécurité
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Nom
+cookies.header.value.tooltip=Contenu
+cookies.header.rawValue.tooltip=Valeur brute stockée du cookie
+cookies.header.domain.tooltip=Hôte
+cookies.header.size.tooltip=Taille
+cookies.header.path.tooltip=Chemin
+cookies.header.expires.tooltip=Expire
+cookies.header.security.tooltip=Sécurité
+cookies.header.httponly.tooltip=Montre si le cookie est un cookie uniquement HTTP
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Cookies reçus
+cookies.netinfo.Sent_Cookies=Cookies envoyés
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Filtre du chemin
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Exporter tous les cookies ...
+cookies.export.Export_All_Cookies_Tooltip=Exporter tous les cookies du navigateur dans un fichier cookies.txt
+cookies.export.Export_For_Site=Exporter les cookies pour ce site ...
+cookies.export.Export_For_Site_Tooltip=Exporter les cookies pour %S dans un fichier cookies.txt
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=Il n'existe aucune page active
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Arrêter quand les cookies sont modifiés
+cookies.Disable_Break_On_Cookie=Désactiver l'arrêt quand les cookies sont modifiés
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Points d'arrêt de cookie
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Arrêter sur le cookie '%S'
+cookies.menu.tooltip.Break_On_Cookie=Arrêter sur '%S' quand il est supprimé ou modifié
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Modifier les conditions du point d'arrêt
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=L'évaluation de la condition du point d'arrêt a échoué
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Retirer du site
+cookies.Create=Créer le cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Outils
+cookies.ToolsTooltip=Outils
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Montrer tous les cookies...
+cookies.ViewAllTooltip=Ouvrir le gestionnaire de téléchargements des cookies
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Autorisation des sites Web
+cookies.ViewExceptionsTooltip=Voir la liste des sites Web autorisés ou interdits
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filtre
+cookies.FilterTooltip=Utiliser les options données pour filtrer la liste de cookies.
+cookies.filter.byPath=Filtrer les cookies par emplacement
+cookies.filter.byPathTooltip=N'afficher que les cookies qui correspondent à l'emplacement actuel.
+cookies.filter.showRejectedCookies=Afficher les cookies rejetés
+cookies.filter.showRejectedCookiesTooltip=Afficher aussi les cookies rejetés dans la liste.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Modifier le cookie
+cookies.edit.name.label=Nom :
+cookies.edit.domain.label=Hôte :
+cookies.edit.path.label=Chemin :
+cookies.edit.expire.label=Expire :
+cookies.edit.value.label=Contenu :
+cookies.edit.secure.label=Sécuriser le cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=Encodage URL de la valeur
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filtrer par cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Supprimer tous les cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/fr/firebug-amo.properties b/locale/fr/firebug-amo.properties
index b26a027..34dacd8 100644
--- a/locale/fr/firebug-amo.properties
+++ b/locale/fr/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug intègre à Firefox des outils de développement disponibles pendant la navigation. Vous pouvez modifier, débugger ou surveiller CSS, HTML et Javascript sur n\'importe quelle page web...\\n\\nFirebug 1.6 requiert Firefox 3.6 a minima.
-firebug.amo.description=Firebug ajoute à Firefox une mine d\'outils de développement à portée de main durant votre navigation. Vous pouvez éditer, déboguer, et contrôler les CSS, HTML et JavaScript de n\'importe quelle page web en direct...\\n\\nSur le site de Firebug vous trouverez de la documentation, des captures d\'écran, et des forums de discussion: http://getfirebug.com
-firebug.amo.developer.comments=Si vous rencontrez des problèmes, veuillez lire la FAQ Firebug.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug intègre à Firefox des outils de développement disponibles pendant la navigation. Vous pouvez modifier, débugger ou surveiller CSS, HTML et Javascript sur n\'importe quelle page web...\\n\\nFirebug 1.6 requiert Firefox 3.6 a minima.
+firebug.amo.description=Firebug ajoute à Firefox une mine d\'outils de développement à portée de main durant votre navigation. Vous pouvez éditer, déboguer, et contrôler les CSS, HTML et JavaScript de n\'importe quelle page web en direct...\\n\\nSur le site de Firebug vous trouverez de la documentation, des captures d\'écran, et des forums de discussion: http://getfirebug.com
+firebug.amo.developer.comments=Si vous rencontrez des problèmes, veuillez lire la FAQ Firebug.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/fr/firebug-tracing.properties b/locale/fr/firebug-tracing.properties
index 7e1ca45..c7775dd 100644
--- a/locale/fr/firebug-tracing.properties
+++ b/locale/fr/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):n\n
-# Firebug tracing console menu items (located in Firebug\'s menu).n\n
-Open_Firebug_Tracing=Ouvrir Firebug Tracing
-Always_Open_Firebug_Tracing=Toujours ouvrir Firebug Tracing
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).n\n
-title.Tracing=Traçage
-tracing.Show_Scope_Variables=Afficher les variables scope
-tracing.Show_Time=Afficher le temps
-tracing.tab.Stack=Stack
-tracing.tab.Exception=Exception
-tracing.tab.Properties=Propriétés
-tracing.tab.Scope=Scope
-tracing.tab.Response=Retour
-tracing.tab.Source=Source
-tracing.tab.Interfaces=Interfaces
-tracing.tab.Object=Objet
-tracing.tab.Event=Event
-tracing.cmd.Clear=Effacer
-tracing.cmd.tip.Clear=Supprime tous les messages
-tracing.cmd.Find=Chercher
-tracing.cmd.tip.Find=Chercher du texte
-tracing.cmd.Bookmark=Marque-page
-tracing.cmd.tip.Bookmark=Insère un marque-page
-tracing.cmd.Restart=Redémarrer Firefox
-tracing.cmd.tip.Restart=Redémarre Firefox
-tracing.cmd.Exit=Quitter Firefox
-tracing.cmd.tip.Exit=Quitte Firefox
-tracing.cmd.Save=Enregistrer dans un fichier
-tracing.cmd.tip.Save=Enregistre les logs dans un fichier
-tracing.cmd.Load=Charger depuis un fichier
-tracing.cmd.tip.Load=Charger les logs depuis un fichier
-tracing.cmd.Expand_All=Tout développer
-tracing.cmd.Collapse_All=Tout replier
-tracing.cmd.Tools=Outils
-tracing.cmd.tip.Tools=Outils
-tracing.cmd.Clear_Browser_Cache=Effacer le cache du navigateur
-tracing.cmd.tip.Clear_Browser_Cache=Efface le cache du navigateur
-tracing.cmd.Force_Garbage_Collector=Forcer le Garbage Collector
-tracing.cmd.tip.Force_Garbage_Collector=Force le Garbage Collector (ramasse-miettes)
-tracing.cmd.Open_Profile_Directory=Ouvrir le répertoire du profil
-tracing.cmd.tip.Open_Profile_Directory=Ouvre le répertoire du profil
-tracing.option.A11Y_Description=Problèmes d'accessiblité
-tracing.option.ACTIVATION_Description=Activation de Firebug
-tracing.option.ACTIVITYOBSERVER_Description=Observateur de l'activité de Firebug
-tracing.option.ANNOTATIONS_Description=Annotation du site web de Firebug
-tracing.option.BP_Description=Points d'arrêts
-tracing.option.CACHE_Description=Cache du source
-tracing.option.COMMANDLINE_Description=Ligne de commande & popup de la ligne de commande
-tracing.option.COMPILATION_UNITS_Description=Unités de compilation de script
-tracing.option.CONSOLE_Description=Panneau de la console
-tracing.option.CSS_Description=Analyse CSS
-tracing.option.DISPATCH_Description=Envoi d'évènement
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Création de domplate
-tracing.option.EDITOR_Description=Éditeur en ligne et auto-complétion
-tracing.option.ERRORLOG_Description=Journaux d'erreur de JS, CSS, XML, etc.
-tracing.option.ERRORS_Description=Erreurs internes à Firebug
-tracing.option.EVAL_Description=Évaluation de script
-tracing.option.FBS_BP_Description=Points d'arrêt du service Firebug
-tracing.option.FBS_CREATION_Description=Script de création du service Firebug
-tracing.option.FBS_ERRORS_Description=Erreur du service Firebug
-tracing.option.FBS_FINDDEBUGGER_Description=Recherche de débogueur du service Firebug
-tracing.option.FBS_FUNCTION_Description=fonction du service Firebug
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
-tracing.option.FBS_SRCUNITS_Description=Firebug service source units
-tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
-tracing.option.FUNCTION_NAMES_Description=JavaScript function names
-tracing.option.HISTORY_Description=Firebug Navigation History
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP request observer
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug initialization
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON viewer
-tracing.option.LINETABLE_Description=Script line table
-tracing.option.LOCALE_Description=Localization
-tracing.option.LOCATIONS_Description=Source locations
-tracing.option.NET_Description=Net Panel
-tracing.option.NET_EVENTS_Description=Network events
-tracing.option.OPTIONS_Description=Firebug preferences
-tracing.option.PANELS_Description=Panels
-tracing.option.SHORTCUTS_Description=Keyboard shortcuts
-tracing.option.SOURCEFILES_Description=JavaScript source files
-tracing.option.SPY_Description=XMLHttpRequests observer
-tracing.option.STACK_Description=JavaScript call stack
-tracing.option.STORAGE_Description=Settings storage
-tracing.option.SVGVIEWER_Description=SVG viewer
-tracing.option.FONTS_Description=Fonts information and font viewer
-tracing.option.TOOLTIP_Description=Start Button tooltip
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging user interface
-tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
-tracing.option.XMLVIEWER_Description=XML viewer
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):n\n
+# Firebug tracing console menu items (located in Firebug\'s menu).n\n
+Open_Firebug_Tracing=Ouvrir Firebug Tracing
+Always_Open_Firebug_Tracing=Toujours ouvrir Firebug Tracing
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).n\n
+title.Tracing=Traçage
+tracing.Show_Scope_Variables=Afficher les variables scope
+tracing.Show_Time=Afficher le temps
+tracing.tab.Stack=Stack
+tracing.tab.Exception=Exception
+tracing.tab.Properties=Propriétés
+tracing.tab.Scope=Scope
+tracing.tab.Response=Retour
+tracing.tab.Source=Source
+tracing.tab.Interfaces=Interfaces
+tracing.tab.Object=Objet
+tracing.tab.Event=Event
+tracing.cmd.Clear=Effacer
+tracing.cmd.tip.Clear=Supprime tous les messages
+tracing.cmd.Find=Chercher
+tracing.cmd.tip.Find=Chercher du texte
+tracing.cmd.Bookmark=Marque-page
+tracing.cmd.tip.Bookmark=Insère un marque-page
+tracing.cmd.Restart=Redémarrer Firefox
+tracing.cmd.tip.Restart=Redémarre Firefox
+tracing.cmd.Exit=Quitter Firefox
+tracing.cmd.tip.Exit=Quitte Firefox
+tracing.cmd.Save=Enregistrer dans un fichier
+tracing.cmd.tip.Save=Enregistre les logs dans un fichier
+tracing.cmd.Load=Charger depuis un fichier
+tracing.cmd.tip.Load=Charger les logs depuis un fichier
+tracing.cmd.Expand_All=Tout développer
+tracing.cmd.Collapse_All=Tout replier
+tracing.cmd.Tools=Outils
+tracing.cmd.tip.Tools=Outils
+tracing.cmd.Clear_Browser_Cache=Effacer le cache du navigateur
+tracing.cmd.tip.Clear_Browser_Cache=Efface le cache du navigateur
+tracing.cmd.Force_Garbage_Collector=Forcer le Garbage Collector
+tracing.cmd.tip.Force_Garbage_Collector=Force le Garbage Collector (ramasse-miettes)
+tracing.cmd.Open_Profile_Directory=Ouvrir le répertoire du profil
+tracing.cmd.tip.Open_Profile_Directory=Ouvre le répertoire du profil
+tracing.option.A11Y_Description=Problèmes d'accessiblité
+tracing.option.ACTIVATION_Description=Activation de Firebug
+tracing.option.ACTIVITYOBSERVER_Description=Observateur de l'activité de Firebug
+tracing.option.ANNOTATIONS_Description=Annotation du site web de Firebug
+tracing.option.BP_Description=Points d'arrêts
+tracing.option.CACHE_Description=Cache du source
+tracing.option.COMMANDLINE_Description=Ligne de commande & popup de la ligne de commande
+tracing.option.COMPILATION_UNITS_Description=Unités de compilation de script
+tracing.option.CONSOLE_Description=Panneau de la console
+tracing.option.CSS_Description=Analyse CSS
+tracing.option.DISPATCH_Description=Envoi d'évènement
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Création de domplate
+tracing.option.EDITOR_Description=Éditeur en ligne et auto-complétion
+tracing.option.ERRORLOG_Description=Journaux d'erreur de JS, CSS, XML, etc.
+tracing.option.ERRORS_Description=Erreurs internes à Firebug
+tracing.option.EVAL_Description=Évaluation de script
+tracing.option.FBS_BP_Description=Points d'arrêt du service Firebug
+tracing.option.FBS_CREATION_Description=Script de création du service Firebug
+tracing.option.FBS_ERRORS_Description=Erreur du service Firebug
+tracing.option.FBS_FINDDEBUGGER_Description=Recherche de débogueur du service Firebug
+tracing.option.FBS_FUNCTION_Description=fonction du service Firebug
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
+tracing.option.FBS_SRCUNITS_Description=Firebug service source units
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
+tracing.option.FUNCTION_NAMES_Description=JavaScript function names
+tracing.option.HISTORY_Description=Firebug Navigation History
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request observer
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug initialization
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON viewer
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Localization
+tracing.option.LOCATIONS_Description=Source locations
+tracing.option.NET_Description=Net Panel
+tracing.option.NET_EVENTS_Description=Network events
+tracing.option.OPTIONS_Description=Firebug preferences
+tracing.option.PANELS_Description=Panels
+tracing.option.SHORTCUTS_Description=Keyboard shortcuts
+tracing.option.SOURCEFILES_Description=JavaScript source files
+tracing.option.SPY_Description=XMLHttpRequests observer
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Settings storage
+tracing.option.SVGVIEWER_Description=SVG viewer
+tracing.option.FONTS_Description=Fonts information and font viewer
+tracing.option.TOOLTIP_Description=Start Button tooltip
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging user interface
+tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
+tracing.option.XMLVIEWER_Description=XML viewer
diff --git a/locale/fr/firebug.properties b/locale/fr/firebug.properties
index 441894c..89f615c 100644
--- a/locale/fr/firebug.properties
+++ b/locale/fr/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.n\n
-# %S Title of the associated web page.n\n
-# examples: Firebug - Googlen\n
-WindowTitle=Firebug - %S
-# Panel titlesn\n
-Panel-console=Console
-panel.tip.console=Observer les messages de la console et exécuter des commandes JavaScript
-Panel-net=Réseau
-panel.tip.net=Analyser le trafic réseau
-Panel-html=HTML
-panel.tip.html=Inspecter et modifier les nœuds DOM
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Inspecter et modifier les feuilles de style CSS
-Panel-script=Script
-panel.tip.script=Déboguer du JavaScript
-Panel-dom=DOM
-panel.tip.dom=Inspecter et modifier des propriétés DOM
-Panel-css=Style
-panel.tip.css=Inspecter et modifier les règles CSS du nœud DOM sélectionné
-Panel-computed=Calculé
-panel.tip.computed=Inspecter les valeurs CSS calculées du nœud DOM sélectionné
-Panel-layout=Apparence
-panel.tip.layout=Inspecter et modifier les données d'apparence du nœud DOM sélectionné
-Panel-domSide=DOM
-panel.tip.domSide=Inspecter et modifier les propriétés DOM du nœud DOM sélectionné
-Panel-watches=Espions
-panel.tip.watches=Inspecter les variables JavaScript disponibles dans la pile actuelle et définir des expressions espion
-Panel-breakpoints=Points d\'arrêt
-panel.tip.breakpoints=Modifier les points d'arrêt
-Panel-callstack=Pile
-panel.tip.callstack=Observer la pile d'appel JavaScript actuelle
-Panel-scopes=Portées
-firebug.DetachFirebug=Ouvrir Firebug dans une nouvelle fenêtre
-firebug.AttachFirebug=Attacher Firebug à la fenêtre du navigateur
-# LOCALIZATION NOTE (plural.Total_Firebugs): Semi-colon list of plural forms.n\n
-# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsn\n
-# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.n\n
-# Displays number of pages with Firebug activated.n\n
-pluralRule=2
-# %S number of Firebugs activatedn\n
-# example: 2 Total Firebugsn\n
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in \'list of all panels\'n\n
-# menu (available on Firebug\'s tab bar).n\n
-# Console panel options.n\n
-# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,n\n
-plural.Total_Firebugs2=Total Firebug: %1$s
-# message, etc. within a source of a web page.n\n
-# #1 File name, #2 Line numbern\n
-# examples: somePage.htm (line 64)n\n
-startbutton.tip.deactivated=Désactivé
-# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.n\n
-# For example, right clicking on an element in the HTML panel offers an action to inspectn\n
-# clicked element in the DOM panel (tab).n\n
-# #1 Target panel titlen\n
-# examples: Inspect in DOM Tabn\n
-panel.status=%S: %S
-inBrowser=dans le navigateur
-minimized=Réduit
-enablement.for_all_pages=pour toutes les pages
-enablement.on=Marche
-enablement.off=Arrêt
-enablement.Panel_activation_status=Activité des panneaux :
-none=Fermé
-Firebug_-_inactive_for_current_website=Firebug - inactif pour le site web actuel
-Activate_Firebug_for_the_current_website=Activer Firebug pour le site web actuel
-Minimized=Réduit
-Minimize_Firebug=Réduire Firebug
-On_for_all_web_pages=Activé pour toutes les pages web
-firebug.menu.tip.On_for_all_Web_Sites=Activer Firebug par défaut pour tous les sites web
-firebug.menu.Clear_Activation_List=Désactiver les sites surveillés
-firebug.menu.tip.Clear_Activation_List=Désactiver les sites surveillés par Firebug
-firebug.menu.Detached=Détaché
-firebug.menu.tip.Detached=Détaché Firebug dans sa propre fenêtre
-firebug.menu.Top=Haut
-firebug.menu.tip.Top=Placer Firebug en haut de la fenêtre
-firebug.menu.Bottom=Bas
-firebug.menu.tip.Bottom=Placer Firebug en bas de la fenêtre
-firebug.menu.Left=Gauche
-firebug.menu.tip.Left=Placer Firebug à gauche de la fenêtre
-firebug.menu.Right=Droite
-firebug.menu.tip.Right=Placer Firebug à droite de la fenêtre
-firebug.uiLocation=Disposition de Firebug
-firebug.menu.tip.UI_Location=Position de l'interface de Firebug
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugn\n
-# do not translate.n\n
-firebug_options=Options de Firebug
-# #1 jsdIScript.tagn\n
-# HTML panel context menu items.n\n
-firebug.Show_All_Panels=Afficher tous les panneaux
-console.option.Show_Command_Line=Afficher l'invite de commande
-console.option.tip.Show_Command_Line=Activer / montrer l'invite de commande
-# Quick Info Boxn\n
-ShowJavaScriptErrors=Afficher les erreurs JavaScript
-console.option.tip.Show_JavaScript_Errors=Journaliser les erreurs JavaScript dans la console
-ShowJavaScriptWarnings=Afficher les avertissements JavaScript
-console.option.tip.Show_JavaScript_Warnings=Journaliser les avertissements JavaScript dans la console
-ShowCSSErrors=Afficher les erreurs CSS
-console.option.tip.Show_CSS_Errors=Journaliser les erreurs CSS dans la console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Afficher la pile d\'appel avec les erreurs
-console.option.tip.Show_Stack_Trace=Afficher les informations de la pile d'appel pour les messages d'erreur
-ShowXMLHttpRequests=Afficher les XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Journaliser les XMLHttpRequests dans la console
-ShowChromeErrors=Afficher les erreurs Chrome
-console.option.tip.Show_System_Errors=Journaliser les erreurs interne au programme et extensions dans la console
-ShowChromeMessages=Afficher les messages issus de Chrome
-console.option.tip.Show_System_Messages=Journaliser les messages interne au programme et extensions dans la console
-ShowExternalErrors=Afficher les erreurs externes
-console.option.tip.Show_External_Errors=Journaliser les erreurs provenant de sources externes dans la console
-ShowNetworkErrors=Afficher les erreurs de réseau
-console.option.tip.Show_Network_Errors=Journaliser les erreurs réseau dans la console
-JavascriptOptionsStrict=Avertissements stricts (performance moindre)
-console.option.tip.Show_Strict_Warnings=Journaliser également les avertissements stricts dans la console
-Command_History=Historique des commandes
-console.option.Show_Command_Editor=Afficher l'éditeur de commande
-console.option.tip.Show_Command_Editor=Basculer sur l'éditeur de commande
-commandLineShowCompleterPopup=Activer l'auto-complétion
-console.option.tip.Show_Completion_List_Popup=Afficher l'auto-complétion de commande
-Assertion=Échec de l\'assertion
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumen\n
-# button that are used when the HTML panel is currently selected. The button allows stoppingn\n
-# JS execution when DOM of the current page is modified.n\n
-# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
-# editing an existing HTML element attribute.n\n
-Line=%S (ligne %S)
-LineAndCol=%S (ligne %S, col. %S)
-InstanceLine=%S #%S (ligne %S)
-StackItem=%S (%S ligne %S)
-SystemItem=<système>
-# #1 Name of the clicked attribute.n\n
-# examples: Edit Attribute \"onclick\"...n\n
-# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
-# deleting an existing HTML element attribute.n\n
-# #1 Name of the clicked attribute.n\n
-panel.Inspect_In_Panel=Inspecter dans le panneau %S
-panel.tip.Inspect_In_Panel=Basculer sur le panneau %S pour y examiner l'objet
-NoName=(anonyme)
-# examples: Delete Attribute \"onclick\"...n\n
-# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.n\n
-# that has been inherited. Used in the Style side panel (under HTML panel).n\n
-jsdIScript=jsdIScript %S
-# examples: Inherited from table.tabViewn\n
-# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.n\n
-# Allows to edit an existing CSS rule property.n\n
-ShowFullText=Afficher tout le texte
-html.option.tip.Show_Full_Text=Ne pas tronquer le contenu des éléments
-# %S Name of the clicked propertyn\n
-# examples: Edit \"background-color\"...n\n
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.n\n
-ShowWhitespace=Afficher les caractères masqués
-html.option.tip.Show_Whitespace=Afficher les caractères masqués à l'intérieur des nœuds
-# Allows to disable an existing CSS rule property.n\n
-# %S Name of the clicked propertyn\n
-ShowComments=Afficher les commentaires
-html.option.tip.Show_Comments=Afficher les noeuds de commentaire
-# examples: Disable \"background-color\"n\n
-# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.n\n
-# Allows to delete an existing CSS rule property.n\n
-html.option.Show_Entities_As_Symbols=Afficher les entités en symbole
-html.option.tip.Show_Entities_As_Symbols=Afficher toutes les entités XML par leur représentation symbolique
-html.option.Show_Entities_As_Names=Afficher les entités en nom
-html.option.tip.Show_Entities_As_Names=Afficher toutes les entités XML en utilisant leur nom
-html.option.Show_Entities_As_Unicode=Afficher les entités en Unicode
-html.option.tip.Show_Entities_As_Unicode=Afficher toutes les entités XML par leur représentation Unicode
-# %S Name of the clicked propertyn\n
-# examples: Delete \"background-color\"n\n
-# Console context menu labels.n\n
-HighlightMutations=Surligner les modifications
-html.option.tip.Highlight_Mutations=Surligner les modifications à l'intérieur des nœuds
-# LOCALIZATION NOTE do not translate, no longer used(?)n\n
-# Breakpoints side paneln\n
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttonsn\n
-ExpandMutations=Développer les modifications
-html.option.tip.Expand_Mutations=Développer l'arbre pour afficher les nœuds modifiés
-# within balloon popup dialog. This dialog appears when debugger halts at a breakpoint or atn\n
-# a \'debugger\' keyword.n\n
-# Continue: allows to resume the debuggern\n
-ScrollToMutations=Défiler jusqu\'aux modifications
-html.option.tip.Scroll_To_Mutations=Faire défiler l'arbre jusqu'aux nœuds modifiés
-# Disable: allows to disable the current \'debugger;\' keyword used in the Javascript source.n\n
-# Script paneln\n
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):n\n
-ShowQuickInfoBox=Afficher la boîte d\'infos
-inspect.option.tip.Show_Quick_Info_Box=Afficher les informations de l'élément inspecté dans un panneau flottant sur la page
-# Labels used to describe layout properties a the selected HTML element.n\n
-# Used in the Layout side panel under HMTL panel.n\n
-# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side paneln\n
-ShadeBoxModel=Colorer l\'élément survolé
-inspect.option.tip.Shade_Box_Model=Colore les différentes parties du modèle de boite
-ScrollIntoView=Défiler pour afficher
-html.tip.Scroll_Into_View=Faire défiler la page jusqu'à l'élément
-NewAttribute=Nouvel attribut…
-html.tip.New_Attribute=Ajouter un nouvel attribut à cet élément
-html.Edit_Node=Éditer %S…
-html.Node=Nœud
-html.tip.Edit_Node=Éditer le %S en utilisant l'éditeur texte
-DeleteElement=Supprimer l\'élément
-html.Delete_Element=Supprimer l'élément de l'arbre
-DeleteNode=Supprimer le nœud
-html.Delete_Node=Supprimer le nœud de l'arbre
-# under HTML panel.n\n
-quickInfo=Infos
-computedStyle=Styles calculés
-# Net paneln\n
-# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)n\n
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,n\n
-html.Break_On_Mutate=Arrêter lors des mutations
-html.Disable_Break_On_Mutate=Ne plus arrêter lors des mutations
-html.label.Break_On_Text_Change=Arrêter aux changements de texte
-html.label.HTML_Breakpoints=Points d\'arrêt HTML
-html.label.Break_On_Attribute_Change=Arrêter aux changements d\'attributs
-html.tip.Break_On_Attribute_Change=Arrêter l'exécution JavaScript quand un attribut de cet élément est modifié
-html.label.Break_On_Child_Addition_or_Removal=Arrêter aux création et suppressions d\'enfants
-html.tip.Break_On_Child_Addition_or_Removal=Arrêter l'exécution JavaScript quand un nœud enfant est ajouté ou supprimé à cet élément
-html.label.Break_On_Element_Removal=Arrêter aux suppression d\'éléments
-html.tip.Break_On_Element_Removal=Arrêter l'exécution JavaScript quand un élément est supprimé
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,n\n
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):n\n
-# Labels and tooltips for a headers displayed on top of the Net panel.n\n
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.n\n
-html.label.Expand/Contract_All=Développer/replier tout
-html.tip.Expand/Contract_All=Développer/replier tous les enfants récursivement
-# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s contextn\n
-# menu for breaking on a XHR.n\n
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in then\n
-dom.label.breakOnPropertyChange=Arrêter aux modifications de propriété
-dom.tip.Break_On_Property_Change=Arrêter l'exécution JavaScript quand cette propriété est modifiée
-# Net panel\'s Headers tab (displayed if you expand a network request). The label is usedn\n
-# for a button that switches the view between \"show raw source code\" and \"pretty formated headern\n
-dom.disableBreakOnPropertyChange=Désactiver l'arrêt aux modifications de propriété
-dom.label.DOM_Breakpoints=Points d\'arrêt DOM
-# values\".n\n
-# LOCALIZATION NOTE (net.filter.Media): Label for net panel filter (used on the Net panel toolbar)n\n
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutn\n
-# a network request (displayed when a net panel entry is expanded). The content ofn\n
-EditAttribute=Modifier l\'attribut \"%S\"…
-html.tip.Edit_Attribute=Éditer la valeur de l'attribut "%S" de cet élément
-# this tab displays sent data (related to a HTTP send method).n\n
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):n\n
-# Label used in the Net panel for detailed info about a network request (displayedn\n
-# when a net panel entry is expanded)n\n
-DeleteAttribute=Supprimer l\'attribut \"%S\"
-html.tip.Delete_Attribute=Supprimer l'attribut "%S" de cet élément
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net paneln\n
-# (expand an entry in the panel and select Headers tab).n\n
-# LOCALIZATION NOTE (plural.Limit_Exceeded): Semi-colon list of plural forms.n\n
-InheritedFrom=Hérité de
-SothinkWarning=L\'extension Sothink SWF Catcher ne permet pas à Firebug de fonctionner correctement.<br><br>Merci de lire <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">cet article de la FAQ de Firebug</a> pour obtenir de l\'aide.
-# A message displayed in the Net panel when some entries must be removed since maximum numbern\n
-# of entries has been reached.n\n
-css.fontFamilyPreview=Portez ce vieux whisky au juge blond qui fume. 0123456789
-# %S the number of entries removedn\n
-# example: Firebug\'s log limit has been reached. 150 entries not shown.n\n
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitn\n
-css.EmptyStyleSheet=Il n'y a aucune règle. Vous pouvez <a>créer une règle</a>.
-# has been reached. Informing the user what preferencee should be changed to modify the limit.n\n
-# %S Name of a preference.n\n
-# examples: In order to change the limit modify: firebug.extensions.console.logLimitn\n
-css.EmptyElementCSS=Cet élément n'a aucune règle de style. Vous pouvez lui <a>créer une règle</a>.
-EditStyle=Éditer le style de l\'élément…
-style.tip.Edit_Style=Éditer les styles en-ligne de l'élément
-AddRule=Ajouter une règle…
-css.tip.AddRule=Ajouter une règle générale à cet élément
-NewRule=Nouvelle règle…
-css.tip.New_Rule=Ajouter une nouvelle règle
-# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.n\n
-# (result of javascript profiler tool). Represents a verb.n\n
-# LOCALIZATION NOTE (plural.Profile_Time): Semi-colon list of plural forms.n\n
-# Used as a caption for reported profile info (result of javascript profiler tool).n\n
-css.Delete_Rule=Supprimer "%S"
-css.tip.Delete_Rule=Supprimer la règle "%S" et toutes ces propriétés
-# #1 number of millisecondsn\n
-# #2 number of calls (plural)n\n
-# example: (#1ms, #2 calls)n\n
-css.menu.Edit_Media_Query=Éditer le Media Query
-css.menu.tip.Edit_Media_Query=Éditer le Media Query affecté à cette règle
-NewProp=Nouvelle propriété…
-css.tip.New_Prop=Ajouter une nouvelle propriété à la règle actuelle
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headern\n
-# (name of a report column). In order to see this, select the Console panel start profilingn\n
-# by clicking the Profile button and stop it by clicking again. The report is logged into then\n
-# console panel. Make sure Script panel is enabled.n\n
-EditProp=Éditer \"%S\"…
-css.tip.Edit_Prop=Éditer la valeur de la propriété "%S"
-# Support for clipboard actions.n\n
-# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptn\n
-# panel when clicking a function object.n\n
-# %S Name of the functionn\n
-DisableProp=Désactiver \"%S\"
-css.tip.Disable_Prop=Désactiver la propriété "%S"
-# Log Calls to \"getData\"n\n
-# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): A tooltip used for a button on mainn\n
-# Firebug toolbar. This button allows to open the command line even within other panels.n\n
-# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console paneln\n
-DeleteProp=Supprimer \"%S\"
-css.tip.Delete_Prop=Supprimer la propriété "%S"
-# if specific method is not supported.n\n
-BreakOnThisError=Arrêter sur cette erreur
-console.menu.tip.Break_On_This_Error=Arrêter l'exécution JavaScript dès que cette erreur se produit
-BreakOnAllErrors=Arrêter à chaque erreur
-console.menu.tip.Break_On_All_Errors=Arrêter l'exécution JavaScript dès qu'un erreur se produit
-# %S Name of a not supported method.n\n
-# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console paneln\n
-# when a not supported method is used on the command line.n\n
-TrackThrowCatch=Pister Throw/Catch
-script.option.tip.Track_Throw_Catch=Pister les exceptions même quand elles sont capturées par les blocs try/catch
-UseLastLineForEvalName=Utiliser la dernière ligne de la source comme nom pour les eval()
-UseMD5ForEvalName=Utiliser MD5 comme nom pour les eval()
-# %S Name of a not supported method.n\n
-Breakpoints=Points d\'arrêt
-ErrorBreakpoints=Points d\'arrêt sur erreur
-LoggedFunctions=Fonctions journalisées
-EnableAllBreakpoints=Activer tous les points d\'arrêt
-breakpoints.option.tip.Enable_All_Breakpoints=Activer tous les points d'arrêts listés
-DisableAllBreakpoints=Désactiver tous les points d\'arrêt
-breakpoints.option.tip.Disable_All_Breakpoints=Désactiver tous les points d'arrêt listés
-ClearAllBreakpoints=Supprimer tous les points d\'arrêt
-breakpoints.option.tip.Clear_All_Breakpoints=Supprimer tous les points d'arrêt listés
-ConditionInput=Ce point d\'arrêt ne sera actif que si cette expression est vraie :
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):n\n
-# Tooltip for the \"Break on... \" button used when the Console panel is selected.n\n
-# Console strings used when JavaScript is not availablen\n
-breakpoints.Remove_Breakpoint=Supprimer le point d'arrêt
-breakpoints.tip.Remove_Breakpoint=Supprimer le point d'arrêt
-breakpoints.Disable_Breakpoint=Désactiver le point d'arrêt
-breakpoints.tip.Disable_Breakpoint=Désactiver le point d'arrêt
-breakpoints.Enable_Breakpoint=Activer le point d'arrêt
-breakpoints.tip.Enable_Breakpoint=Activer le point d'arrêt
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,n\n
-# net.sizeinfo.Total_Received):n\n
-# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mousen\n
-# over a Size displayed within the Net panel. \'Total Sent\' and \'Total Received\' info includesn\n
-# even sent and received heades size.n\n
-script.balloon.Continue=Continuer
-script.balloon.Disable=Désactiver
-ScriptsFilterStatic=Afficher les scripts statiques
-ScriptsFilterEval=Afficher les scripts statiques et eval
-ScriptsFilterEvent=Afficher les scripts statiques et d\'événements
-ScriptsFilterAll=Afficher les scripts statiques et d\'événements et les eval()
-ScriptsFilterStaticShort=statique
-ScriptsFilterEvalShort=evals
-ScriptsFilterEventShort=événements
-ScriptsFilterAllShort=Tous
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Netn\n
-# panel (inside the Post tab of an expanded request entry). The message informs the user thatn\n
-# posted data reached Firebug\'s size limit and only part of it is displayed in the UI.n\n
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):n\n
-callstack.Expand_All=Développer tout
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Collapse All
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# Labels for Net panel\'s options.n\n
-# LOCALIZATION NOTE (net.option.Show_BF_Cache_Responses, net.option.tip.Show_BF_Cache_Responses):n\n
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# Net panels\'s option. If set to true, the net panel displays also response coming fromn\n
-# BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCachen\n
-# LOCALIZATION NOTE (plural.Request_Count): Semi-colon list of plural forms.n\n
-# A label used in the Net panel. Displays number of HTTP requests executed by the current page.n\n
-ShowUserProps=Afficher les propriétés utilisateur
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Afficher les fonctions utilisateur
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Afficher les propriétés DOM
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Afficher les fonctions DOM
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Afficher les constantes DOM
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=Aucune propriété n\'est définie pour cet objet.
-NewWatch=Nouvelle expression espion…
-# %S number of requestsn\n
-# example: 21 requestsn\n
-AddWatch=Ajouter un espion
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (plural.Error_Count): Semi-colon list of plural forms.n\n
-# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.n\n
-CopySourceCode=Copier le code source
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
-CopyValue=Copier la valeur
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Copier le nom
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Copier le chemin
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Nouvelle propriété…
-EditProperty=Éditer la propriété…
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Éditer la variable…
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Éditer l\'espion…
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Supprimer la propriété
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Supprimer l\'espion
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# %S number of errorsn\n
-# example: 111 Errorsn\n
-SetBreakpoint=Définir un point d\'arrêt
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.n\n
-# With: the scope inside of the with(obj) {} statementn\n
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };n\n
-EditBreakpointCondition=Modifier la condition d\'arrêt…
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=Il n\'y a aucun point d\'arrêt dans cette page.
-# Window: the scope inside of a Javascript window object.n\n
-# Net panel timing info labelsn\n
-#A11y Chrome Labels (not visible, spoken by screen readers)n\n
-Only_Show_Applied_Styles=Only Show Applied Styles
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-#A11y panelNode labels (not visible, spoken by screen readers)n\n
-#A11y Domplate labels (not visible, spoken by screen readers)n\n
-# LOCALIZATION NOTEn\n
-Show_User_Agent_CSS=Afficher les propriétés CSS par défaut
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# Describe contents of inline editor fieldsn\n
-# LOCALIZATION NOTE (a11y.labels.overridden):n\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# indicates style property is overridden by selector with higher specificityn\n
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):n\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# Existence and state of a breakpointn\n
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlyn\n
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# visible in the UI, intended for screen readers.n\n
-# #1 Line number, #2 Function name, #3 File namen\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# Describes the match found when performing a console panel search n\n
-# #1 %S String key the use is looking for. #2 number of rows that contain the matched textn\n
-# examples: Match found for \"test\" in 17 log rowsn\n
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlyn\n
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a script panel search n\n
-# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found inn\n
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# examples: Match found for \"window.alert\" on line 322 in utilities.jsn\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in an element node) n\n
-Expand_Shorthand_Properties=Expand Shorthand Properties
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementn\n
-# examples: Match found for \"obj\" in object element at /html/body/object[2]n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-Sort_alphabetically=Sort Alphabetically
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node) n\n
-# #1 Search string that was matched. #2 Attribute name #3 attribute value n\n
-# #4 the HTML element name containing. #5 XPATH string specifying the matched elementn\n
-Show_Mozilla_specific_styles=Show Mozilla Specific Styles
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# examples: Match found for \"abindex\" in tabindex=\"0\" in span element at /html/body/span[2]n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Appuyer sur une touche pour filtrer la liste
-# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) n\n
-# #1 Search string that was matched. #2 element\'s text content n\n
-# #3 the HTML element name containing. #4 XPATH string specifying the matched elementn\n
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=position
-LayoutAdjacent=adjacent
-position=position
-# examples: Match found for \"Firebug Rocks!\" in h2 element at /html/body/h2[2]n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a CSS panel search (if it is found in a selector) n\n
-ShowRulers=Afficher les règles et les guides
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# #1 Search string that was matched. #2 selector in which the match was found n\n
-Loading=Chargement…
-Headers=En-têtes
-# examples: Match found for \"main\" in #mainContent h2 {n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlyn\n
-net.tip.Clear=Clear the request list
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration) n\n
-net.header.Reset_Header=Réinitialiser les colonnes
-net.header.tip.Reset_Header=Reset the header display
-# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to n\n
-# examples: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a DOM panel search n\n
-# #1 Search string that was matched. #2 DOM property in which the match was found n\n
-net.header.URL=URL
-net.header.URL_Tooltip=URL demandées et méthodes HTTP utilisées
-net.header.Status=Statut
-net.header.Status_Tooltip=Statut des réponses reçues.
-net.header.Domain=Domaine
-net.header.Domain_Tooltip=Domaine des requêtes effectuées
-net.header.Size=Poids
-net.header.Size_Tooltip=Poids des réponses reçues.
-net.header.Timeline=Chronologie
-net.header.Timeline_Tooltip=Chronologie détaillée des requêtes/réponses
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# examples: Match found for \"time\" in _starttime : 1257324992232 (Number)n\n
-net.label.XHR_Breakpoints=Points d\'arrêts XHR
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-net.label.Break_On_XHR=Arrêter lors des XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# Describes the match found when performing a Net panel search n\n
-# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
-# #3 Column in which the match was found #4. Column value n\n
-net.headers.view_source=voir le code source
-net.headers.pretty_print=mise en page impression
-# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 msn\n
-net.filter.Media=Média
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
-Post=Post
-Put=Put
-# #1 Search string that was matched. #2 Column value in which the match was found n\n
-# examples: Match found for \"05\" in net summary row: 4.05sn\n
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
-Response=Réponse
-URLParameters=Paramètres
-Cache=Cache
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# visible in the UI, intended for screen readers.n\n
-# Indicates that the searched string was not matched n\n
-jsonviewer.sort=Trier par clé
-jsonviewer.do_not_sort=Ne pas trier
-# %S Search string that was matched. n\n
-# examples: No matched found for \"wefkhwefkgwekhjgjh\"n\n
-# Console messages.n\n
-# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# If Firebug is displayed in an external window (detached), but not active for then\n
-# currently selected Firefox tab, the following button label is used for ann\n
-RequestHeaders=Requête
-ResponseHeaders=Réponse
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# activation button.n\n
-# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
-# An error message displayed in the Script panel when a source can\'t be displayedn\n
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# for specific URL.n\n
-# examples: Failed to load source for: http://www.example.com/script.jsn\n
-# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,n\n
-# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.n\n
-plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
-LimitPrefs=Préférences
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):n\n
-# Tooltips for back/forward buttons on the Script panel toolbar.n\n
-#firebug.dtdn\n
-#editors.dtdn\n
-LimitPrefsTitle=Afin de changer cette limite, modifiez : %S
-Refresh=Actualiser
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Ouvrir dans un nouvel onglet
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Ouvrir la réponse dans un nouvel onglet
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Profilage
-ProfilerStarted=Le profileur est en cours d\'exécution. Cliquer sur \'Profiler\' à nouveau pour afficher les résultats.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
-NothingToProfile=Aucune activité à profiler.
-PercentTooltip=Temps d\'exécution de la fonction (en %)
-CallsHeaderTooltip=Nombre d\'appels à la fonction
-OwnTimeHeaderTooltip=Temps d\'exécution de la fonction, appels imbriqués exclus
-TimeHeaderTooltip=Temps d\'exécution de la fonction, appels imbriqués inclus
-AvgHeaderTooltip=Temps moyen, appels de fonction inclus
-MinHeaderTooltip=Temps minimum, appels de fonction inclus
-MaxHeaderTooltip=Temps maximum, appels de fonction inclus
-ProfileButton.Enabled.Tooltip=Profiler le temps d\'exécution du JavaScript.
-ProfileButton.Disabled.Tooltip=Profiler le temps d\'exécution du JavaScript (le panneau \"Script\" doit être activé).
-Function=Fonction
-Percent=Pourcentage
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Appels
-OwnTime=Temps net
-Time=Temps brut
-Avg=Moy.
-Min=Min.
-Max=Max.
-File=Fichier
-# Support for standard actions.
-Copy=Copier
-Cut=Couper
-Remove=Retirer
-Delete=Delete
-Paste=Paste
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Copier le innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Copier le chemin XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Copier le chemin du CSS
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Copier l\'adresse
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Copier l\'adresse avec les paramètres
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Copier l\'en-tête de la requête
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Copier l\'en-tête de la réponse
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Copier le corps de la réponse
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Copier l\'erreur
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Copier la fonction
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Journaliser les appels à \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Journaliser les événements
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Activé
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=La console de Firebug ne prend pas en charge \'%S\'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=La ligne de commande de Firebug ne prend pas en charge \'%S\'
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Désactiver \"Arrêter à chaque erreur\"
-console.Break_On_All_Errors=Arrêter à chaque erreur
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Stopper sur une erreur
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=Le JavaScript est désactivé dans vos préférences Firefox. Si vous désirez utiliser la console, vous devez activer cette option via \"Outils -> Options… -> Contenu -> Activer JavaScript\"
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Corps de la réponse
-net.sizeinfo.Post_Body=Corps du POST
-net.sizeinfo.Total_Sent=Total envoyé
-net.sizeinfo.Total_Received=Total reçu
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Panneau Réseau activé. Quand le panneau est désactivé, aucune requête n\'est affichée.
-net.responseSizeLimitMessage=La taille de la réponse Firebug est trop importante. Cliquez <a>ici</a> pour ouvrir la réponse complète dans un nouvel onglet Firefox.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=La taille maximale possible pour Firebug du contenu d\'un Post a été atteinte.
-net.Break_On_XHR=Arrêt sur XHR
-net.label.Parameters=Paramètres
-net.label.Parts=Parties
-net.label.Source=Source
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Désactiver la cache de Firefox
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Afficher les événements Paint
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Point d\'arrêt la prochaine fois
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Afficher les en-têtes HTTP
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S request;%1$S requests
-FromCache=à partir du cache
-StopLoading=Arrêter le chargement
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Données volumineuses)
-ShowComputedStyle=Afficher les styles calculés
-StyleGroup-text=Texte
-StyleGroup-background=Arrière-plan
-StyleGroup-box=Modèle des boîtes
-StyleGroup-layout=Apparence
-StyleGroup-other=Divers
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Copier la couleur
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Copier l\'adresse de l\'image
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Ouvrir l\'image dans un nouvel onglet
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Masquer la pile de la barre d\'outils
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copier la déclaration de règle
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Copier le style de la déclaration de règle
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Error;%1$S Errors
-moduleManager.title=Le panneau \"%S\" est désactivé
-moduleManager.desc3=Utilisez le menu contextuel de l\'icône de Firebug dans la barre d\'état pour activer ou désactiver tous les panneaux. Utilisez le menu de l\'onglet du panneau pour les contrôler individuellement.
-moduleManager.Enable=Activer
-Suspend_Firebug=Suspendre Firebug
-Resume_Firebug=Reprendre Firebug
-Reset_Panels_To_Disabled=Désactiver les panneaux
-Open_Console=Ouvrir la console
-Open_Console_Tooltip=Ouvrir la console.
-Scope_Chain=Série de portées
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=Avec
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Appel
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Fenêtre
-Logs=Journal
-Options=Options
-Copy_Stack=Copier la pile
-Copy Exception=Copier l\'exception
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blocage
-requestinfo.Resolving=Recherche DNS
-requestinfo.Connecting=Connexion
-requestinfo.Sending=Envoi
-requestinfo.Waiting=Attente
-requestinfo.Receiving=Réception
-requestinfo.ContentLoad=Événement \'DOMContentLoaded\'
-requestinfo.WindowLoad=Événement \'load\'
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Recherche Firebug
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Suivant
-search.tip.Next=Search for the next match
-search.Previous=Précédent
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Sensible à la casse
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Fichiers multiples
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Utiliser une expression régulière
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=Sélecteur CSS
-search.net.Headers=En-têtes
-search.net.Parameters=Paramètres
-search.net.Response_Bodies=Corps de la réponse
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persistant
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Afficher toutes les entrées de log
-firebug.console.Errors=Erreurs
-firebug.console.Filter_by_Errors=Filtrer par erreurs
-firebug.console.Warnings=Avertissements
-firebug.console.Filter_by_Warnings=Filtrer par avertissements
-firebug.console.Info=Informations
-firebug.console.Filter_by_Info=Filtrer par informations
-firebug.console.Debug_Info=Infos de débogage
-firebug.console.Filter_by_Debug_Info=Filtrer par infos de débogage
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Ouvrir Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Hide Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Activer tous les panneaux
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Désactiver tous les panneaux
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Personnaliser les raccourcis
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Options
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Activer les outils d\'accessibilité
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Réinitialiser toutes les options de Firebug
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug en ligne
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Show Error Count
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Taille du texte
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Plus grande
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Plus petite
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Normale
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Site Web de Firebug…
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Documentation…
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Raccourcis clavier…
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Groupe de discussion…
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Suivi de bogues…
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Faire un don…
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=À propos…
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Rechercher
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Entrer la commande à nouveau
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Inspecter
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Afficher/Masquer la boîte info
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Activer/désactiver le profilage
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Activer la ligne de commande
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Activer la recherche Firebug
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Activer l\'éditeur d\'espions
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Activer l\'adresse
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Objet suivant
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Objet précédent
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Personnaliser les raccourcis Firebug
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Ouvrir Firebug dans une nouvelle fenêtre
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Passer au panneau de gauche
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Passer au panneau de droite
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Ouvrir Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Onglet Firebug précédent
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Effacer la console
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Ouvrir la console de traces
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=En arrière
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=En avant
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Increase Text Size
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Decrease Text Size
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normal Text Size
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Choix du panneau
-customizeShortcuts=Raccourcis clavier Firebug
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=panneau outils
-a11y.labels.firebug_panels=panneaux Firebug
-a11y.labels.firebug_side_panels=panneaux latéraux Firebug
-a11y.labels.firebug_window=fenêtre Firebug
-a11y.labels.firebug_status=État Firebug
-a11y.labels.reset=réinitialiser
-a11y.labels.reset_shortcut=réinitialiser le raccourci %S
-aria.labels.inactive_panel=panneau inactif
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=lignes de journalisation
-a11y.labels.call_stack=Pile d\'appel
-a11y.labels.document_structure=structure du document
-a11y.labels.title_panel=panneau %S
-a11y.labels.title_side_panel=panneau latéral %S
-a11y.labels.cached=en cache
-aria.labels.stack_trace=pile d\'appel
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=position
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=margin top
-a11y.layout.margin_right=margin right
-a11y.layout.margin_bottom=margin bottom
-a11y.layout.margin_left=margin left
-a11y.layout.border_top=border top
-a11y.layout.border_right=border right
-a11y.layout.border_bottom=border bottom
-a11y.layout.border_left=border left
-a11y.layout.padding_top=padding top
-a11y.layout.padding_right=padding right
-a11y.layout.padding_bottom=padding bottom
-a11y.layout.padding_left=padding left
-a11y.layout.top=top
-a11y.layout.right=right
-a11y.layout.bottom=bottom
-a11y.layout.left=left
-a11y.layout.width=width
-a11y.layout.height=height
-a11y.layout.size=size
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=Appuyer sur Entrée puis la touche Tab pour éditer les valeurs
-a11y.labels.style_rules=règles de style
-aria.labels.inherited_style_rules=styles hérités
-a11y.labels.computed_styles=styles calculés
-a11y.labels.dom_properties=propriétés DOM
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=éditeur intégré
-a11y.labels.value_for_attribute_in_element=valeur de l\'attribut %S de l\'élément %S
-a11y.labels.attribute_for_element=attribut de l\'élément %S
-a11y.labels.text_contents_for_element=contenu texte de l\'élément %S
-a11y.labels.defined_in_file=défini dans %S
-a11y.labels.declarations_for_selector=déclarations de style du sélecteur \"%S\"
-a11y.labels.property_for_selector=propriété CCS du sélecteur: %S
-a11y.labels.value_property_in_selector=valeur de la propriété %S du sélecteur %S
-a11y.labels.css_selector=sélecteur CSS
-a11y.labels.source_code_for_file=code source du fichier %S
-a11y.labels.press_enter_to_add_new_watch_expression=entrée pour ajouter une nouvelle expression espion
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=substitué
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=contient un point d\'arrêt conditionnel
-a11y.updates.has_disabled_break_point=contient un point d\'arrêt désactivé
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=script suspendu à la ligne %S dans %S, fichier %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=correspondance trouvée pour %S dans %S lignes
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=correspondance trouvée pour %S dans la ligne %S de %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=correspondance trouvée pour %S dans l\'élément %S au chemin %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=correspondance trouvée pour %S dans l\'attribut %S=%S de l\'élément %S au chemin %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=correspondance trouvée pour %S dans le contenu texte: %S de l\'élément %S au chemin %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=correspondance trouvée pour %S dans le sélecteur %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=correspondance trouvée pour \"%S\" dans la déclaration de style %S du sélecteur %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=correspondance trouvée pour %S dans la propriété DOM %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=correspondance trouvée pour \"%S\" dans %S, %S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=correspondance trouvée pour %S dans la ligne du rapport du réseau: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=aucune correspondance trouvée pour \"%S\"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Voulez-vous vraiment réinitialiser toutes les options de Firebug ?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=La console doit être activée
-warning.Command_line_blocked?=Ligne de commande bloquée ?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Actualiser pour activer la console
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=La ressource associée à cette URL n\'est pas du texte
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Revenir à ce panneau
-firebug.history.Stay_on_this_panel=Rester sur ce panneau
-firebug.history.Go_forward_to_this_panel=Avancer vers ce panneau
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Reculer
-firebug.history.Go_forward=Avancer
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Le panneau de script était inactif pendant le chargement de la page
-script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=JavaScript n\'est pas activé
-script.suggestion.javascript_not_enabled=Voir Firefox > Outils > Options > Contenu > Activer Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Activer JavaScript et actualiser
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Tous les scripts ont été filtrés
-script.suggestion.all_scripts_filtered=Afficher les paramètres de filtrage de scripts dans la barre d\'outils ou « Afficher les options de sources du chrome »
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=Pas de JavaScript sur cette page
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Le débogueur est déjà activé
-script.suggestion.debugger_active=Le débogueur est en ce moment arrêté sur un point d\'arrêt d\'une autre page.
-script.button.Go_to_that_page=Aller à cette page
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Fermer
-firebug.View=Affichage
-firebug.Help=Aide
-firebug.Run=Exécuter
-firebug.Copy=Copier
-firebug.History=History
-firebug.Run_the_entered_command=Run the entered command
-firebug.Clear_the_Command_Editor=Clear the Command Editor
-firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
-firebug.Insert_a_previously_entered_command=Insert a previously entered command
-firebug.AlwaysOpenInWindow=Toujours ouvrir dans une nouvelle fenêtre
-firebug.OpenWith=Ouvrir avec l\\\'éditeur
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Sites…
-firebug.Configure_Editors=Configure Editors
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Inspecter
-firebug.InspectElement=Inspecter un élément
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Arrêter à chaque erreur
-firebug.InspectTooltip=Cliquer sur un élément à inspecter dans la page
-firebug.EditHTMLTooltip=Éditer le code HTML
-firebug.Profile=Profiler
-firebug.Clear=Effacer
-firebug.ClearConsole=Effacer le contenu de la console
-firebug.ClearTooltip=Effacer le contenu de la console
-firebug.All=Tous
-firebug.Images=Images
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Configured Firebug Editors
-editors.Editor=Editor
-editors.Executable=Executable
-editors.Launch_Arguments=Launch Arguments
-editors.Add=Add
-editors.Remove=Remove
-editors.Change=Change
-editors.Move_Up=Move Up
-editors.Close=Close
-editors.Browse=Browse...
-changeEditor.Editor_Configuration=Editor Configuration
-changeEditor.Name=Nom :
-changeEditor.Executable=Exécutable :
-changeEditor.CmdLine=Arguments :
-changeEditor.Supplied_arguments=Arguments supplied by Firebug:
-changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
-changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
-changeEditor.Line_number=Line number (if available)
-changeEditor.Invalid_Application_Path=Chemin de l\'application invalide
-changeEditor.Application_does_not_exist=L\'application spécifiée n\'existe pas !
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Éditer
-firebug.css.sourceEdit=Source Edit
-firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
-firebug.css.liveEdit=Live Edit
-firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
-firebug.EditCSSTooltip=Éditer la feuille de style
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Show Break Notifications
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
-firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=There are no child objects
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=more
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Object Properties
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(no completions)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
-firebug.failedToPreviewImageURL=Failed to load the given URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.n\n
+# %S Title of the associated web page.n\n
+# examples: Firebug - Googlen\n
+WindowTitle=Firebug - %S
+# Panel titlesn\n
+Panel-console=Console
+panel.tip.console=Observer les messages de la console et exécuter des commandes JavaScript
+Panel-net=Réseau
+panel.tip.net=Analyser le trafic réseau
+Panel-html=HTML
+panel.tip.html=Inspecter et modifier les nœuds DOM
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Inspecter et modifier les feuilles de style CSS
+Panel-script=Script
+panel.tip.script=Déboguer du JavaScript
+Panel-dom=DOM
+panel.tip.dom=Inspecter et modifier des propriétés DOM
+Panel-css=Style
+panel.tip.css=Inspecter et modifier les règles CSS du nœud DOM sélectionné
+Panel-computed=Calculé
+panel.tip.computed=Inspecter les valeurs CSS calculées du nœud DOM sélectionné
+Panel-layout=Apparence
+panel.tip.layout=Inspecter et modifier les données d'apparence du nœud DOM sélectionné
+Panel-domSide=DOM
+panel.tip.domSide=Inspecter et modifier les propriétés DOM du nœud DOM sélectionné
+Panel-watches=Espions
+panel.tip.watches=Inspecter les variables JavaScript disponibles dans la pile actuelle et définir des expressions espion
+Panel-breakpoints=Points d\'arrêt
+panel.tip.breakpoints=Modifier les points d'arrêt
+Panel-callstack=Pile
+panel.tip.callstack=Observer la pile d'appel JavaScript actuelle
+Panel-scopes=Portées
+firebug.DetachFirebug=Ouvrir Firebug dans une nouvelle fenêtre
+firebug.AttachFirebug=Attacher Firebug à la fenêtre du navigateur
+# LOCALIZATION NOTE (plural.Total_Firebugs): Semi-colon list of plural forms.n\n
+# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsn\n
+# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.n\n
+# Displays number of pages with Firebug activated.n\n
+pluralRule=2
+# %S number of Firebugs activatedn\n
+# example: 2 Total Firebugsn\n
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in \'list of all panels\'n\n
+# menu (available on Firebug\'s tab bar).n\n
+# Console panel options.n\n
+# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,n\n
+plural.Total_Firebugs2=Total Firebug: %1$s
+# message, etc. within a source of a web page.n\n
+# #1 File name, #2 Line numbern\n
+# examples: somePage.htm (line 64)n\n
+startbutton.tip.deactivated=Désactivé
+# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.n\n
+# For example, right clicking on an element in the HTML panel offers an action to inspectn\n
+# clicked element in the DOM panel (tab).n\n
+# #1 Target panel titlen\n
+# examples: Inspect in DOM Tabn\n
+panel.status=%S: %S
+inBrowser=dans le navigateur
+minimized=Réduit
+enablement.for_all_pages=pour toutes les pages
+enablement.on=Marche
+enablement.off=Arrêt
+enablement.Panel_activation_status=Activité des panneaux :
+none=Fermé
+Firebug_-_inactive_for_current_website=Firebug - inactif pour le site web actuel
+Activate_Firebug_for_the_current_website=Activer Firebug pour le site web actuel
+Minimized=Réduit
+Minimize_Firebug=Réduire Firebug
+On_for_all_web_pages=Activé pour toutes les pages web
+firebug.menu.tip.On_for_all_Web_Sites=Activer Firebug par défaut pour tous les sites web
+firebug.menu.Clear_Activation_List=Désactiver les sites surveillés
+firebug.menu.tip.Clear_Activation_List=Désactiver les sites surveillés par Firebug
+firebug.menu.Detached=Détaché
+firebug.menu.tip.Detached=Détaché Firebug dans sa propre fenêtre
+firebug.menu.Top=Haut
+firebug.menu.tip.Top=Placer Firebug en haut de la fenêtre
+firebug.menu.Bottom=Bas
+firebug.menu.tip.Bottom=Placer Firebug en bas de la fenêtre
+firebug.menu.Left=Gauche
+firebug.menu.tip.Left=Placer Firebug à gauche de la fenêtre
+firebug.menu.Right=Droite
+firebug.menu.tip.Right=Placer Firebug à droite de la fenêtre
+firebug.uiLocation=Disposition de Firebug
+firebug.menu.tip.UI_Location=Position de l'interface de Firebug
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugn\n
+# do not translate.n\n
+firebug_options=Options de Firebug
+# #1 jsdIScript.tagn\n
+# HTML panel context menu items.n\n
+firebug.Show_All_Panels=Afficher tous les panneaux
+console.option.Show_Command_Line=Afficher l'invite de commande
+console.option.tip.Show_Command_Line=Activer / montrer l'invite de commande
+# Quick Info Boxn\n
+ShowJavaScriptErrors=Afficher les erreurs JavaScript
+console.option.tip.Show_JavaScript_Errors=Journaliser les erreurs JavaScript dans la console
+ShowJavaScriptWarnings=Afficher les avertissements JavaScript
+console.option.tip.Show_JavaScript_Warnings=Journaliser les avertissements JavaScript dans la console
+ShowCSSErrors=Afficher les erreurs CSS
+console.option.tip.Show_CSS_Errors=Journaliser les erreurs CSS dans la console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Afficher la pile d\'appel avec les erreurs
+console.option.tip.Show_Stack_Trace=Afficher les informations de la pile d'appel pour les messages d'erreur
+ShowXMLHttpRequests=Afficher les XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Journaliser les XMLHttpRequests dans la console
+ShowChromeErrors=Afficher les erreurs Chrome
+console.option.tip.Show_System_Errors=Journaliser les erreurs interne au programme et extensions dans la console
+ShowChromeMessages=Afficher les messages issus de Chrome
+console.option.tip.Show_System_Messages=Journaliser les messages interne au programme et extensions dans la console
+ShowExternalErrors=Afficher les erreurs externes
+console.option.tip.Show_External_Errors=Journaliser les erreurs provenant de sources externes dans la console
+ShowNetworkErrors=Afficher les erreurs de réseau
+console.option.tip.Show_Network_Errors=Journaliser les erreurs réseau dans la console
+JavascriptOptionsStrict=Avertissements stricts (performance moindre)
+console.option.tip.Show_Strict_Warnings=Journaliser également les avertissements stricts dans la console
+Command_History=Historique des commandes
+console.option.Show_Command_Editor=Afficher l'éditeur de commande
+console.option.tip.Show_Command_Editor=Basculer sur l'éditeur de commande
+commandLineShowCompleterPopup=Activer l'auto-complétion
+console.option.tip.Show_Completion_List_Popup=Afficher l'auto-complétion de commande
+Assertion=Échec de l\'assertion
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumen\n
+# button that are used when the HTML panel is currently selected. The button allows stoppingn\n
+# JS execution when DOM of the current page is modified.n\n
+# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
+# editing an existing HTML element attribute.n\n
+Line=%S (ligne %S)
+LineAndCol=%S (ligne %S, col. %S)
+InstanceLine=%S #%S (ligne %S)
+StackItem=%S (%S ligne %S)
+SystemItem=<système>
+# #1 Name of the clicked attribute.n\n
+# examples: Edit Attribute \"onclick\"...n\n
+# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
+# deleting an existing HTML element attribute.n\n
+# #1 Name of the clicked attribute.n\n
+panel.Inspect_In_Panel=Inspecter dans le panneau %S
+panel.tip.Inspect_In_Panel=Basculer sur le panneau %S pour y examiner l'objet
+NoName=(anonyme)
+# examples: Delete Attribute \"onclick\"...n\n
+# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.n\n
+# that has been inherited. Used in the Style side panel (under HTML panel).n\n
+jsdIScript=jsdIScript %S
+# examples: Inherited from table.tabViewn\n
+# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.n\n
+# Allows to edit an existing CSS rule property.n\n
+ShowFullText=Afficher tout le texte
+html.option.tip.Show_Full_Text=Ne pas tronquer le contenu des éléments
+# %S Name of the clicked propertyn\n
+# examples: Edit \"background-color\"...n\n
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.n\n
+ShowWhitespace=Afficher les caractères masqués
+html.option.tip.Show_Whitespace=Afficher les caractères masqués à l'intérieur des nœuds
+# Allows to disable an existing CSS rule property.n\n
+# %S Name of the clicked propertyn\n
+ShowComments=Afficher les commentaires
+html.option.tip.Show_Comments=Afficher les noeuds de commentaire
+# examples: Disable \"background-color\"n\n
+# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.n\n
+# Allows to delete an existing CSS rule property.n\n
+html.option.Show_Entities_As_Symbols=Afficher les entités en symbole
+html.option.tip.Show_Entities_As_Symbols=Afficher toutes les entités XML par leur représentation symbolique
+html.option.Show_Entities_As_Names=Afficher les entités en nom
+html.option.tip.Show_Entities_As_Names=Afficher toutes les entités XML en utilisant leur nom
+html.option.Show_Entities_As_Unicode=Afficher les entités en Unicode
+html.option.tip.Show_Entities_As_Unicode=Afficher toutes les entités XML par leur représentation Unicode
+# %S Name of the clicked propertyn\n
+# examples: Delete \"background-color\"n\n
+# Console context menu labels.n\n
+HighlightMutations=Surligner les modifications
+html.option.tip.Highlight_Mutations=Surligner les modifications à l'intérieur des nœuds
+# LOCALIZATION NOTE do not translate, no longer used(?)n\n
+# Breakpoints side paneln\n
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttonsn\n
+ExpandMutations=Développer les modifications
+html.option.tip.Expand_Mutations=Développer l'arbre pour afficher les nœuds modifiés
+# within balloon popup dialog. This dialog appears when debugger halts at a breakpoint or atn\n
+# a \'debugger\' keyword.n\n
+# Continue: allows to resume the debuggern\n
+ScrollToMutations=Défiler jusqu\'aux modifications
+html.option.tip.Scroll_To_Mutations=Faire défiler l'arbre jusqu'aux nœuds modifiés
+# Disable: allows to disable the current \'debugger;\' keyword used in the Javascript source.n\n
+# Script paneln\n
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):n\n
+ShowQuickInfoBox=Afficher la boîte d\'infos
+inspect.option.tip.Show_Quick_Info_Box=Afficher les informations de l'élément inspecté dans un panneau flottant sur la page
+# Labels used to describe layout properties a the selected HTML element.n\n
+# Used in the Layout side panel under HMTL panel.n\n
+# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side paneln\n
+ShadeBoxModel=Colorer l\'élément survolé
+inspect.option.tip.Shade_Box_Model=Colore les différentes parties du modèle de boite
+ScrollIntoView=Défiler pour afficher
+html.tip.Scroll_Into_View=Faire défiler la page jusqu'à l'élément
+NewAttribute=Nouvel attribut…
+html.tip.New_Attribute=Ajouter un nouvel attribut à cet élément
+html.Edit_Node=Éditer %S…
+html.Node=Nœud
+html.tip.Edit_Node=Éditer le %S en utilisant l'éditeur texte
+DeleteElement=Supprimer l\'élément
+html.Delete_Element=Supprimer l'élément de l'arbre
+DeleteNode=Supprimer le nœud
+html.Delete_Node=Supprimer le nœud de l'arbre
+# under HTML panel.n\n
+quickInfo=Infos
+computedStyle=Styles calculés
+# Net paneln\n
+# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)n\n
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,n\n
+html.Break_On_Mutate=Arrêter lors des mutations
+html.Disable_Break_On_Mutate=Ne plus arrêter lors des mutations
+html.label.Break_On_Text_Change=Arrêter aux changements de texte
+html.label.HTML_Breakpoints=Points d\'arrêt HTML
+html.label.Break_On_Attribute_Change=Arrêter aux changements d\'attributs
+html.tip.Break_On_Attribute_Change=Arrêter l'exécution JavaScript quand un attribut de cet élément est modifié
+html.label.Break_On_Child_Addition_or_Removal=Arrêter aux création et suppressions d\'enfants
+html.tip.Break_On_Child_Addition_or_Removal=Arrêter l'exécution JavaScript quand un nœud enfant est ajouté ou supprimé à cet élément
+html.label.Break_On_Element_Removal=Arrêter aux suppression d\'éléments
+html.tip.Break_On_Element_Removal=Arrêter l'exécution JavaScript quand un élément est supprimé
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,n\n
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):n\n
+# Labels and tooltips for a headers displayed on top of the Net panel.n\n
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.n\n
+html.label.Expand/Contract_All=Développer/replier tout
+html.tip.Expand/Contract_All=Développer/replier tous les enfants récursivement
+# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s contextn\n
+# menu for breaking on a XHR.n\n
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in then\n
+dom.label.breakOnPropertyChange=Arrêter aux modifications de propriété
+dom.tip.Break_On_Property_Change=Arrêter l'exécution JavaScript quand cette propriété est modifiée
+# Net panel\'s Headers tab (displayed if you expand a network request). The label is usedn\n
+# for a button that switches the view between \"show raw source code\" and \"pretty formated headern\n
+dom.disableBreakOnPropertyChange=Désactiver l'arrêt aux modifications de propriété
+dom.label.DOM_Breakpoints=Points d\'arrêt DOM
+# values\".n\n
+# LOCALIZATION NOTE (net.filter.Media): Label for net panel filter (used on the Net panel toolbar)n\n
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutn\n
+# a network request (displayed when a net panel entry is expanded). The content ofn\n
+EditAttribute=Modifier l\'attribut \"%S\"…
+html.tip.Edit_Attribute=Éditer la valeur de l'attribut "%S" de cet élément
+# this tab displays sent data (related to a HTTP send method).n\n
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):n\n
+# Label used in the Net panel for detailed info about a network request (displayedn\n
+# when a net panel entry is expanded)n\n
+DeleteAttribute=Supprimer l\'attribut \"%S\"
+html.tip.Delete_Attribute=Supprimer l'attribut "%S" de cet élément
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net paneln\n
+# (expand an entry in the panel and select Headers tab).n\n
+# LOCALIZATION NOTE (plural.Limit_Exceeded): Semi-colon list of plural forms.n\n
+InheritedFrom=Hérité de
+SothinkWarning=L\'extension Sothink SWF Catcher ne permet pas à Firebug de fonctionner correctement.<br><br>Merci de lire <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">cet article de la FAQ de Firebug</a> pour obtenir de l\'aide.
+# A message displayed in the Net panel when some entries must be removed since maximum numbern\n
+# of entries has been reached.n\n
+css.fontFamilyPreview=Portez ce vieux whisky au juge blond qui fume. 0123456789
+# %S the number of entries removedn\n
+# example: Firebug\'s log limit has been reached. 150 entries not shown.n\n
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitn\n
+css.EmptyStyleSheet=Il n'y a aucune règle. Vous pouvez <a>créer une règle</a>.
+# has been reached. Informing the user what preferencee should be changed to modify the limit.n\n
+# %S Name of a preference.n\n
+# examples: In order to change the limit modify: firebug.extensions.console.logLimitn\n
+css.EmptyElementCSS=Cet élément n'a aucune règle de style. Vous pouvez lui <a>créer une règle</a>.
+EditStyle=Éditer le style de l\'élément…
+style.tip.Edit_Style=Éditer les styles en-ligne de l'élément
+AddRule=Ajouter une règle…
+css.tip.AddRule=Ajouter une règle générale à cet élément
+NewRule=Nouvelle règle…
+css.tip.New_Rule=Ajouter une nouvelle règle
+# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.n\n
+# (result of javascript profiler tool). Represents a verb.n\n
+# LOCALIZATION NOTE (plural.Profile_Time): Semi-colon list of plural forms.n\n
+# Used as a caption for reported profile info (result of javascript profiler tool).n\n
+css.Delete_Rule=Supprimer "%S"
+css.tip.Delete_Rule=Supprimer la règle "%S" et toutes ces propriétés
+# #1 number of millisecondsn\n
+# #2 number of calls (plural)n\n
+# example: (#1ms, #2 calls)n\n
+css.menu.Edit_Media_Query=Éditer le Media Query
+css.menu.tip.Edit_Media_Query=Éditer le Media Query affecté à cette règle
+NewProp=Nouvelle propriété…
+css.tip.New_Prop=Ajouter une nouvelle propriété à la règle actuelle
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headern\n
+# (name of a report column). In order to see this, select the Console panel start profilingn\n
+# by clicking the Profile button and stop it by clicking again. The report is logged into then\n
+# console panel. Make sure Script panel is enabled.n\n
+EditProp=Éditer \"%S\"…
+css.tip.Edit_Prop=Éditer la valeur de la propriété "%S"
+# Support for clipboard actions.n\n
+# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptn\n
+# panel when clicking a function object.n\n
+# %S Name of the functionn\n
+DisableProp=Désactiver \"%S\"
+css.tip.Disable_Prop=Désactiver la propriété "%S"
+# Log Calls to \"getData\"n\n
+# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): A tooltip used for a button on mainn\n
+# Firebug toolbar. This button allows to open the command line even within other panels.n\n
+# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console paneln\n
+DeleteProp=Supprimer \"%S\"
+css.tip.Delete_Prop=Supprimer la propriété "%S"
+# if specific method is not supported.n\n
+BreakOnThisError=Arrêter sur cette erreur
+console.menu.tip.Break_On_This_Error=Arrêter l'exécution JavaScript dès que cette erreur se produit
+BreakOnAllErrors=Arrêter à chaque erreur
+console.menu.tip.Break_On_All_Errors=Arrêter l'exécution JavaScript dès qu'un erreur se produit
+# %S Name of a not supported method.n\n
+# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console paneln\n
+# when a not supported method is used on the command line.n\n
+TrackThrowCatch=Pister Throw/Catch
+script.option.tip.Track_Throw_Catch=Pister les exceptions même quand elles sont capturées par les blocs try/catch
+UseLastLineForEvalName=Utiliser la dernière ligne de la source comme nom pour les eval()
+UseMD5ForEvalName=Utiliser MD5 comme nom pour les eval()
+# %S Name of a not supported method.n\n
+Breakpoints=Points d\'arrêt
+ErrorBreakpoints=Points d\'arrêt sur erreur
+LoggedFunctions=Fonctions journalisées
+EnableAllBreakpoints=Activer tous les points d\'arrêt
+breakpoints.option.tip.Enable_All_Breakpoints=Activer tous les points d'arrêts listés
+DisableAllBreakpoints=Désactiver tous les points d\'arrêt
+breakpoints.option.tip.Disable_All_Breakpoints=Désactiver tous les points d'arrêt listés
+ClearAllBreakpoints=Supprimer tous les points d\'arrêt
+breakpoints.option.tip.Clear_All_Breakpoints=Supprimer tous les points d'arrêt listés
+ConditionInput=Ce point d\'arrêt ne sera actif que si cette expression est vraie :
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):n\n
+# Tooltip for the \"Break on... \" button used when the Console panel is selected.n\n
+# Console strings used when JavaScript is not availablen\n
+breakpoints.Remove_Breakpoint=Supprimer le point d'arrêt
+breakpoints.tip.Remove_Breakpoint=Supprimer le point d'arrêt
+breakpoints.Disable_Breakpoint=Désactiver le point d'arrêt
+breakpoints.tip.Disable_Breakpoint=Désactiver le point d'arrêt
+breakpoints.Enable_Breakpoint=Activer le point d'arrêt
+breakpoints.tip.Enable_Breakpoint=Activer le point d'arrêt
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,n\n
+# net.sizeinfo.Total_Received):n\n
+# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mousen\n
+# over a Size displayed within the Net panel. \'Total Sent\' and \'Total Received\' info includesn\n
+# even sent and received heades size.n\n
+script.balloon.Continue=Continuer
+script.balloon.Disable=Désactiver
+ScriptsFilterStatic=Afficher les scripts statiques
+ScriptsFilterEval=Afficher les scripts statiques et eval
+ScriptsFilterEvent=Afficher les scripts statiques et d\'événements
+ScriptsFilterAll=Afficher les scripts statiques et d\'événements et les eval()
+ScriptsFilterStaticShort=statique
+ScriptsFilterEvalShort=evals
+ScriptsFilterEventShort=événements
+ScriptsFilterAllShort=Tous
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Netn\n
+# panel (inside the Post tab of an expanded request entry). The message informs the user thatn\n
+# posted data reached Firebug\'s size limit and only part of it is displayed in the UI.n\n
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):n\n
+callstack.Expand_All=Développer tout
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Collapse All
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# Labels for Net panel\'s options.n\n
+# LOCALIZATION NOTE (net.option.Show_BF_Cache_Responses, net.option.tip.Show_BF_Cache_Responses):n\n
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# Net panels\'s option. If set to true, the net panel displays also response coming fromn\n
+# BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCachen\n
+# LOCALIZATION NOTE (plural.Request_Count): Semi-colon list of plural forms.n\n
+# A label used in the Net panel. Displays number of HTTP requests executed by the current page.n\n
+ShowUserProps=Afficher les propriétés utilisateur
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Afficher les fonctions utilisateur
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Afficher les propriétés DOM
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Afficher les fonctions DOM
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Afficher les constantes DOM
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=Aucune propriété n\'est définie pour cet objet.
+NewWatch=Nouvelle expression espion…
+# %S number of requestsn\n
+# example: 21 requestsn\n
+AddWatch=Ajouter un espion
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (plural.Error_Count): Semi-colon list of plural forms.n\n
+# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.n\n
+CopySourceCode=Copier le code source
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
+CopyValue=Copier la valeur
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Copier le nom
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Copier le chemin
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Nouvelle propriété…
+EditProperty=Éditer la propriété…
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Éditer la variable…
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Éditer l\'espion…
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Supprimer la propriété
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Supprimer l\'espion
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# %S number of errorsn\n
+# example: 111 Errorsn\n
+SetBreakpoint=Définir un point d\'arrêt
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.n\n
+# With: the scope inside of the with(obj) {} statementn\n
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };n\n
+EditBreakpointCondition=Modifier la condition d\'arrêt…
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=Il n\'y a aucun point d\'arrêt dans cette page.
+# Window: the scope inside of a Javascript window object.n\n
+# Net panel timing info labelsn\n
+#A11y Chrome Labels (not visible, spoken by screen readers)n\n
+Only_Show_Applied_Styles=Only Show Applied Styles
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+#A11y panelNode labels (not visible, spoken by screen readers)n\n
+#A11y Domplate labels (not visible, spoken by screen readers)n\n
+# LOCALIZATION NOTEn\n
+Show_User_Agent_CSS=Afficher les propriétés CSS par défaut
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# Describe contents of inline editor fieldsn\n
+# LOCALIZATION NOTE (a11y.labels.overridden):n\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# indicates style property is overridden by selector with higher specificityn\n
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):n\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# Existence and state of a breakpointn\n
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlyn\n
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# visible in the UI, intended for screen readers.n\n
+# #1 Line number, #2 Function name, #3 File namen\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# Describes the match found when performing a console panel search n\n
+# #1 %S String key the use is looking for. #2 number of rows that contain the matched textn\n
+# examples: Match found for \"test\" in 17 log rowsn\n
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlyn\n
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a script panel search n\n
+# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found inn\n
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# examples: Match found for \"window.alert\" on line 322 in utilities.jsn\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in an element node) n\n
+Expand_Shorthand_Properties=Expand Shorthand Properties
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementn\n
+# examples: Match found for \"obj\" in object element at /html/body/object[2]n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+Sort_alphabetically=Sort Alphabetically
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node) n\n
+# #1 Search string that was matched. #2 Attribute name #3 attribute value n\n
+# #4 the HTML element name containing. #5 XPATH string specifying the matched elementn\n
+Show_Mozilla_specific_styles=Show Mozilla Specific Styles
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# examples: Match found for \"abindex\" in tabindex=\"0\" in span element at /html/body/span[2]n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Appuyer sur une touche pour filtrer la liste
+# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) n\n
+# #1 Search string that was matched. #2 element\'s text content n\n
+# #3 the HTML element name containing. #4 XPATH string specifying the matched elementn\n
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=position
+LayoutAdjacent=adjacent
+position=position
+# examples: Match found for \"Firebug Rocks!\" in h2 element at /html/body/h2[2]n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a CSS panel search (if it is found in a selector) n\n
+ShowRulers=Afficher les règles et les guides
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# #1 Search string that was matched. #2 selector in which the match was found n\n
+Loading=Chargement…
+Headers=En-têtes
+# examples: Match found for \"main\" in #mainContent h2 {n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlyn\n
+net.tip.Clear=Clear the request list
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration) n\n
+net.header.Reset_Header=Réinitialiser les colonnes
+net.header.tip.Reset_Header=Reset the header display
+# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to n\n
+# examples: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a DOM panel search n\n
+# #1 Search string that was matched. #2 DOM property in which the match was found n\n
+net.header.URL=URL
+net.header.URL_Tooltip=URL demandées et méthodes HTTP utilisées
+net.header.Status=Statut
+net.header.Status_Tooltip=Statut des réponses reçues.
+net.header.Domain=Domaine
+net.header.Domain_Tooltip=Domaine des requêtes effectuées
+net.header.Size=Poids
+net.header.Size_Tooltip=Poids des réponses reçues.
+net.header.Timeline=Chronologie
+net.header.Timeline_Tooltip=Chronologie détaillée des requêtes/réponses
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# examples: Match found for \"time\" in _starttime : 1257324992232 (Number)n\n
+net.label.XHR_Breakpoints=Points d\'arrêts XHR
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+net.label.Break_On_XHR=Arrêter lors des XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# Describes the match found when performing a Net panel search n\n
+# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
+# #3 Column in which the match was found #4. Column value n\n
+net.headers.view_source=voir le code source
+net.headers.pretty_print=mise en page impression
+# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 msn\n
+net.filter.Media=Média
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
+Post=Post
+Put=Put
+# #1 Search string that was matched. #2 Column value in which the match was found n\n
+# examples: Match found for \"05\" in net summary row: 4.05sn\n
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
+Response=Réponse
+URLParameters=Paramètres
+Cache=Cache
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# visible in the UI, intended for screen readers.n\n
+# Indicates that the searched string was not matched n\n
+jsonviewer.sort=Trier par clé
+jsonviewer.do_not_sort=Ne pas trier
+# %S Search string that was matched. n\n
+# examples: No matched found for \"wefkhwefkgwekhjgjh\"n\n
+# Console messages.n\n
+# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# If Firebug is displayed in an external window (detached), but not active for then\n
+# currently selected Firefox tab, the following button label is used for ann\n
+RequestHeaders=Requête
+ResponseHeaders=Réponse
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# activation button.n\n
+# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
+# An error message displayed in the Script panel when a source can\'t be displayedn\n
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# for specific URL.n\n
+# examples: Failed to load source for: http://www.example.com/script.jsn\n
+# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,n\n
+# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.n\n
+plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
+LimitPrefs=Préférences
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):n\n
+# Tooltips for back/forward buttons on the Script panel toolbar.n\n
+#firebug.dtdn\n
+#editors.dtdn\n
+LimitPrefsTitle=Afin de changer cette limite, modifiez : %S
+Refresh=Actualiser
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Ouvrir dans un nouvel onglet
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Ouvrir la réponse dans un nouvel onglet
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Profilage
+ProfilerStarted=Le profileur est en cours d\'exécution. Cliquer sur \'Profiler\' à nouveau pour afficher les résultats.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
+NothingToProfile=Aucune activité à profiler.
+PercentTooltip=Temps d\'exécution de la fonction (en %)
+CallsHeaderTooltip=Nombre d\'appels à la fonction
+OwnTimeHeaderTooltip=Temps d\'exécution de la fonction, appels imbriqués exclus
+TimeHeaderTooltip=Temps d\'exécution de la fonction, appels imbriqués inclus
+AvgHeaderTooltip=Temps moyen, appels de fonction inclus
+MinHeaderTooltip=Temps minimum, appels de fonction inclus
+MaxHeaderTooltip=Temps maximum, appels de fonction inclus
+ProfileButton.Enabled.Tooltip=Profiler le temps d\'exécution du JavaScript.
+ProfileButton.Disabled.Tooltip=Profiler le temps d\'exécution du JavaScript (le panneau \"Script\" doit être activé).
+Function=Fonction
+Percent=Pourcentage
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Appels
+OwnTime=Temps net
+Time=Temps brut
+Avg=Moy.
+Min=Min.
+Max=Max.
+File=Fichier
+# Support for standard actions.
+Copy=Copier
+Cut=Couper
+Remove=Retirer
+Delete=Delete
+Paste=Paste
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Copier le innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Copier le chemin XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Copier le chemin du CSS
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Copier l\'adresse
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Copier l\'adresse avec les paramètres
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Copier l\'en-tête de la requête
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Copier l\'en-tête de la réponse
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Copier le corps de la réponse
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Copier l\'erreur
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Copier la fonction
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Journaliser les appels à \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Journaliser les événements
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Activé
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=La console de Firebug ne prend pas en charge \'%S\'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=La ligne de commande de Firebug ne prend pas en charge \'%S\'
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Désactiver \"Arrêter à chaque erreur\"
+console.Break_On_All_Errors=Arrêter à chaque erreur
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Stopper sur une erreur
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=Le JavaScript est désactivé dans vos préférences Firefox. Si vous désirez utiliser la console, vous devez activer cette option via \"Outils -> Options… -> Contenu -> Activer JavaScript\"
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Corps de la réponse
+net.sizeinfo.Post_Body=Corps du POST
+net.sizeinfo.Total_Sent=Total envoyé
+net.sizeinfo.Total_Received=Total reçu
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Panneau Réseau activé. Quand le panneau est désactivé, aucune requête n\'est affichée.
+net.responseSizeLimitMessage=La taille de la réponse Firebug est trop importante. Cliquez <a>ici</a> pour ouvrir la réponse complète dans un nouvel onglet Firefox.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=La taille maximale possible pour Firebug du contenu d\'un Post a été atteinte.
+net.Break_On_XHR=Arrêt sur XHR
+net.label.Parameters=Paramètres
+net.label.Parts=Parties
+net.label.Source=Source
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Désactiver la cache de Firefox
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Afficher les événements Paint
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Point d\'arrêt la prochaine fois
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Afficher les en-têtes HTTP
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S request;%1$S requests
+FromCache=à partir du cache
+StopLoading=Arrêter le chargement
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Données volumineuses)
+ShowComputedStyle=Afficher les styles calculés
+StyleGroup-text=Texte
+StyleGroup-background=Arrière-plan
+StyleGroup-box=Modèle des boîtes
+StyleGroup-layout=Apparence
+StyleGroup-other=Divers
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Copier la couleur
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Copier l\'adresse de l\'image
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Ouvrir l\'image dans un nouvel onglet
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Masquer la pile de la barre d\'outils
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copier la déclaration de règle
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Copier le style de la déclaration de règle
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Error;%1$S Errors
+moduleManager.title=Le panneau \"%S\" est désactivé
+moduleManager.desc3=Utilisez le menu contextuel de l\'icône de Firebug dans la barre d\'état pour activer ou désactiver tous les panneaux. Utilisez le menu de l\'onglet du panneau pour les contrôler individuellement.
+moduleManager.Enable=Activer
+Suspend_Firebug=Suspendre Firebug
+Resume_Firebug=Reprendre Firebug
+Reset_Panels_To_Disabled=Désactiver les panneaux
+Open_Console=Ouvrir la console
+Open_Console_Tooltip=Ouvrir la console.
+Scope_Chain=Série de portées
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=Avec
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Appel
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Fenêtre
+Logs=Journal
+Options=Options
+Copy_Stack=Copier la pile
+Copy Exception=Copier l\'exception
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blocage
+requestinfo.Resolving=Recherche DNS
+requestinfo.Connecting=Connexion
+requestinfo.Sending=Envoi
+requestinfo.Waiting=Attente
+requestinfo.Receiving=Réception
+requestinfo.ContentLoad=Événement \'DOMContentLoaded\'
+requestinfo.WindowLoad=Événement \'load\'
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Recherche Firebug
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Suivant
+search.tip.Next=Search for the next match
+search.Previous=Précédent
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Sensible à la casse
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Fichiers multiples
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Utiliser une expression régulière
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=Sélecteur CSS
+search.net.Headers=En-têtes
+search.net.Parameters=Paramètres
+search.net.Response_Bodies=Corps de la réponse
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persistant
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Afficher toutes les entrées de log
+firebug.console.Errors=Erreurs
+firebug.console.Filter_by_Errors=Filtrer par erreurs
+firebug.console.Warnings=Avertissements
+firebug.console.Filter_by_Warnings=Filtrer par avertissements
+firebug.console.Info=Informations
+firebug.console.Filter_by_Info=Filtrer par informations
+firebug.console.Debug_Info=Infos de débogage
+firebug.console.Filter_by_Debug_Info=Filtrer par infos de débogage
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Ouvrir Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Hide Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Activer tous les panneaux
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Désactiver tous les panneaux
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Personnaliser les raccourcis
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Options
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Activer les outils d\'accessibilité
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Réinitialiser toutes les options de Firebug
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug en ligne
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Show Error Count
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Taille du texte
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Plus grande
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Plus petite
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Normale
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Site Web de Firebug…
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Documentation…
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Raccourcis clavier…
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Groupe de discussion…
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Suivi de bogues…
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Faire un don…
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=À propos…
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Rechercher
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Entrer la commande à nouveau
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Inspecter
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Afficher/Masquer la boîte info
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Activer/désactiver le profilage
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Activer la ligne de commande
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Activer la recherche Firebug
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Activer l\'éditeur d\'espions
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Activer l\'adresse
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Objet suivant
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Objet précédent
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Personnaliser les raccourcis Firebug
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Ouvrir Firebug dans une nouvelle fenêtre
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Passer au panneau de gauche
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Passer au panneau de droite
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Ouvrir Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Onglet Firebug précédent
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Effacer la console
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Ouvrir la console de traces
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=En arrière
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=En avant
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Increase Text Size
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Decrease Text Size
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normal Text Size
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Choix du panneau
+customizeShortcuts=Raccourcis clavier Firebug
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=panneau outils
+a11y.labels.firebug_panels=panneaux Firebug
+a11y.labels.firebug_side_panels=panneaux latéraux Firebug
+a11y.labels.firebug_window=fenêtre Firebug
+a11y.labels.firebug_status=État Firebug
+a11y.labels.reset=réinitialiser
+a11y.labels.reset_shortcut=réinitialiser le raccourci %S
+aria.labels.inactive_panel=panneau inactif
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=lignes de journalisation
+a11y.labels.call_stack=Pile d\'appel
+a11y.labels.document_structure=structure du document
+a11y.labels.title_panel=panneau %S
+a11y.labels.title_side_panel=panneau latéral %S
+a11y.labels.cached=en cache
+aria.labels.stack_trace=pile d\'appel
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=position
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=margin top
+a11y.layout.margin_right=margin right
+a11y.layout.margin_bottom=margin bottom
+a11y.layout.margin_left=margin left
+a11y.layout.border_top=border top
+a11y.layout.border_right=border right
+a11y.layout.border_bottom=border bottom
+a11y.layout.border_left=border left
+a11y.layout.padding_top=padding top
+a11y.layout.padding_right=padding right
+a11y.layout.padding_bottom=padding bottom
+a11y.layout.padding_left=padding left
+a11y.layout.top=top
+a11y.layout.right=right
+a11y.layout.bottom=bottom
+a11y.layout.left=left
+a11y.layout.width=width
+a11y.layout.height=height
+a11y.layout.size=size
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=Appuyer sur Entrée puis la touche Tab pour éditer les valeurs
+a11y.labels.style_rules=règles de style
+aria.labels.inherited_style_rules=styles hérités
+a11y.labels.computed_styles=styles calculés
+a11y.labels.dom_properties=propriétés DOM
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=éditeur intégré
+a11y.labels.value_for_attribute_in_element=valeur de l\'attribut %S de l\'élément %S
+a11y.labels.attribute_for_element=attribut de l\'élément %S
+a11y.labels.text_contents_for_element=contenu texte de l\'élément %S
+a11y.labels.defined_in_file=défini dans %S
+a11y.labels.declarations_for_selector=déclarations de style du sélecteur \"%S\"
+a11y.labels.property_for_selector=propriété CCS du sélecteur: %S
+a11y.labels.value_property_in_selector=valeur de la propriété %S du sélecteur %S
+a11y.labels.css_selector=sélecteur CSS
+a11y.labels.source_code_for_file=code source du fichier %S
+a11y.labels.press_enter_to_add_new_watch_expression=entrée pour ajouter une nouvelle expression espion
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=substitué
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=contient un point d\'arrêt conditionnel
+a11y.updates.has_disabled_break_point=contient un point d\'arrêt désactivé
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=script suspendu à la ligne %S dans %S, fichier %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=correspondance trouvée pour %S dans %S lignes
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=correspondance trouvée pour %S dans la ligne %S de %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=correspondance trouvée pour %S dans l\'élément %S au chemin %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=correspondance trouvée pour %S dans l\'attribut %S=%S de l\'élément %S au chemin %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=correspondance trouvée pour %S dans le contenu texte: %S de l\'élément %S au chemin %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=correspondance trouvée pour %S dans le sélecteur %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=correspondance trouvée pour \"%S\" dans la déclaration de style %S du sélecteur %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=correspondance trouvée pour %S dans la propriété DOM %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=correspondance trouvée pour \"%S\" dans %S, %S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=correspondance trouvée pour %S dans la ligne du rapport du réseau: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=aucune correspondance trouvée pour \"%S\"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Voulez-vous vraiment réinitialiser toutes les options de Firebug ?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=La console doit être activée
+warning.Command_line_blocked?=Ligne de commande bloquée ?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Actualiser pour activer la console
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=La ressource associée à cette URL n\'est pas du texte
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Revenir à ce panneau
+firebug.history.Stay_on_this_panel=Rester sur ce panneau
+firebug.history.Go_forward_to_this_panel=Avancer vers ce panneau
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Reculer
+firebug.history.Go_forward=Avancer
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Le panneau de script était inactif pendant le chargement de la page
+script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=JavaScript n\'est pas activé
+script.suggestion.javascript_not_enabled=Voir Firefox > Outils > Options > Contenu > Activer Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Activer JavaScript et actualiser
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Tous les scripts ont été filtrés
+script.suggestion.all_scripts_filtered=Afficher les paramètres de filtrage de scripts dans la barre d\'outils ou « Afficher les options de sources du chrome »
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=Pas de JavaScript sur cette page
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Le débogueur est déjà activé
+script.suggestion.debugger_active=Le débogueur est en ce moment arrêté sur un point d\'arrêt d\'une autre page.
+script.button.Go_to_that_page=Aller à cette page
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Fermer
+firebug.View=Affichage
+firebug.Help=Aide
+firebug.Run=Exécuter
+firebug.Copy=Copier
+firebug.History=History
+firebug.Run_the_entered_command=Run the entered command
+firebug.Clear_the_Command_Editor=Clear the Command Editor
+firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
+firebug.Insert_a_previously_entered_command=Insert a previously entered command
+firebug.AlwaysOpenInWindow=Toujours ouvrir dans une nouvelle fenêtre
+firebug.OpenWith=Ouvrir avec l\\\'éditeur
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Sites…
+firebug.Configure_Editors=Configure Editors
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Inspecter
+firebug.InspectElement=Inspecter un élément
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Arrêter à chaque erreur
+firebug.InspectTooltip=Cliquer sur un élément à inspecter dans la page
+firebug.EditHTMLTooltip=Éditer le code HTML
+firebug.Profile=Profiler
+firebug.Clear=Effacer
+firebug.ClearConsole=Effacer le contenu de la console
+firebug.ClearTooltip=Effacer le contenu de la console
+firebug.All=Tous
+firebug.Images=Images
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Configured Firebug Editors
+editors.Editor=Editor
+editors.Executable=Executable
+editors.Launch_Arguments=Launch Arguments
+editors.Add=Add
+editors.Remove=Remove
+editors.Change=Change
+editors.Move_Up=Move Up
+editors.Close=Close
+editors.Browse=Browse...
+changeEditor.Editor_Configuration=Editor Configuration
+changeEditor.Name=Nom :
+changeEditor.Executable=Exécutable :
+changeEditor.CmdLine=Arguments :
+changeEditor.Supplied_arguments=Arguments supplied by Firebug:
+changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
+changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
+changeEditor.Line_number=Line number (if available)
+changeEditor.Invalid_Application_Path=Chemin de l\'application invalide
+changeEditor.Application_does_not_exist=L\'application spécifiée n\'existe pas !
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Éditer
+firebug.css.sourceEdit=Source Edit
+firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
+firebug.css.liveEdit=Live Edit
+firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
+firebug.EditCSSTooltip=Éditer la feuille de style
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Show Break Notifications
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
+firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=There are no child objects
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=more
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Object Properties
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(no completions)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
+firebug.failedToPreviewImageURL=Failed to load the given URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/he/cookies.properties b/locale/he/cookies.properties
index 66695d4..ec60718 100644
--- a/locale/he/cookies.properties
+++ b/locale/he/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Session
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Accept Cookies From Sites
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Clear cookies when denying
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cut
-cookies.Copy=Copy
-cookies.CopyAll=Copy All
-cookies.Paste=Paste
-cookies.Delete=Delete
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Edit
-cookies.Accept=Accept
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reset Header
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
-cookies.ExceptionsTitle=Exceptions - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support for Cookie Monitoring
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=Disable Cookies panel for %S
-cookies.Permissions=Enable or Disable Cookies panel
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=System Pages
-cookies.LocalFiles=Local Files
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Do you want to remove all cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remove all cookies in the list.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Create a new cookie for %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Value
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Manage cookie permissions for %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=All cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejected:
-cookies.console.nocookiesreceived=No cookies received
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=deleted
-cookies.console.added=added
-cookies.console.changed=changed
-cookies.console.cleared=cleared
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domain
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Secure
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Value
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Default (Accept session cookies)
-cookies.default.thirdPartySession=Default (Accept session cookies)
-cookies.default.thirdParty=Default (Accept cookies)
-cookies.default.allow=Default (Accept cookies)
-cookies.default.deny=Default (Deny cookies)
-cookies.default.warn=Default (Warn before accepting cookie)
-cookies.host.session=Accept session cookies from %S
-cookies.host.accept=Accept cookies from %S
-cookies.host.reject=Deny cookies from %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie name is not valid.
-cookies.edit.invalidhost=Cookie host is not valid.
-cookies.edit.invalidpath=Cookie path is not valid.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Name
-cookies.header.value=Value
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domain
-cookies.header.size=Size
-cookies.header.path=Path
-cookies.header.expires=Expires
-cookies.header.security=Security
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Name of the cookie
-cookies.header.value.tooltip=Value stored for the cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domain that has stored the cookie
-cookies.header.size.tooltip=Size of the stored cookie
-cookies.header.path.tooltip=Directory where the cookie is active
-cookies.header.expires.tooltip=Expiration date for the cookie
-cookies.header.security.tooltip=Shows whether it is a secure cookie or not
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Received Cookies
-cookies.netinfo.Sent_Cookies=Sent Cookies
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Path Filter
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Export All Cookies
-cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
-cookies.export.Export_For_Site=Export Cookies For This Site
-cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Remove Cookies
-cookies.Create=Create Cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Tools
-cookies.ToolsTooltip=Tools
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Show All Cookies
-cookies.ViewAllTooltip=Open the built-in Cookie Manager
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Web Sites Permissions
-cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filter
-cookies.FilterTooltip=Use given options to filter the cookie list.
-cookies.filter.byPath=Filter Cookies By Current Path
-cookies.filter.byPathTooltip=Show only cookies that match the current path.
-cookies.filter.showRejectedCookies=Show Rejected Cookies
-cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Edit Cookie
-cookies.edit.name.label=Name:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Path:
-cookies.edit.expire.label=Expires:
-cookies.edit.value.label=Value:
-cookies.edit.secure.label=Secure Cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Session
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Accept Cookies From Sites
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Clear cookies when denying
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cut
+cookies.Copy=Copy
+cookies.CopyAll=Copy All
+cookies.Paste=Paste
+cookies.Delete=Delete
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Edit
+cookies.Accept=Accept
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reset Header
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
+cookies.ExceptionsTitle=Exceptions - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support for Cookie Monitoring
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=Disable Cookies panel for %S
+cookies.Permissions=Enable or Disable Cookies panel
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=System Pages
+cookies.LocalFiles=Local Files
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Do you want to remove all cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remove all cookies in the list.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Create a new cookie for %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Value
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Manage cookie permissions for %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=All cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejected:
+cookies.console.nocookiesreceived=No cookies received
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=deleted
+cookies.console.added=added
+cookies.console.changed=changed
+cookies.console.cleared=cleared
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domain
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Secure
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Value
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Default (Accept session cookies)
+cookies.default.thirdPartySession=Default (Accept session cookies)
+cookies.default.thirdParty=Default (Accept cookies)
+cookies.default.allow=Default (Accept cookies)
+cookies.default.deny=Default (Deny cookies)
+cookies.default.warn=Default (Warn before accepting cookie)
+cookies.host.session=Accept session cookies from %S
+cookies.host.accept=Accept cookies from %S
+cookies.host.reject=Deny cookies from %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie name is not valid.
+cookies.edit.invalidhost=Cookie host is not valid.
+cookies.edit.invalidpath=Cookie path is not valid.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Name
+cookies.header.value=Value
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domain
+cookies.header.size=Size
+cookies.header.path=Path
+cookies.header.expires=Expires
+cookies.header.security=Security
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Name of the cookie
+cookies.header.value.tooltip=Value stored for the cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domain that has stored the cookie
+cookies.header.size.tooltip=Size of the stored cookie
+cookies.header.path.tooltip=Directory where the cookie is active
+cookies.header.expires.tooltip=Expiration date for the cookie
+cookies.header.security.tooltip=Shows whether it is a secure cookie or not
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Received Cookies
+cookies.netinfo.Sent_Cookies=Sent Cookies
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Path Filter
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Export All Cookies
+cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
+cookies.export.Export_For_Site=Export Cookies For This Site
+cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Remove Cookies
+cookies.Create=Create Cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Tools
+cookies.ToolsTooltip=Tools
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Show All Cookies
+cookies.ViewAllTooltip=Open the built-in Cookie Manager
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Web Sites Permissions
+cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filter
+cookies.FilterTooltip=Use given options to filter the cookie list.
+cookies.filter.byPath=Filter Cookies By Current Path
+cookies.filter.byPathTooltip=Show only cookies that match the current path.
+cookies.filter.showRejectedCookies=Show Rejected Cookies
+cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Edit Cookie
+cookies.edit.name.label=Name:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Path:
+cookies.edit.expire.label=Expires:
+cookies.edit.value.label=Value:
+cookies.edit.secure.label=Secure Cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/he/firebug-amo.properties b/locale/he/firebug-amo.properties
index 4885608..a858050 100644
--- a/locale/he/firebug-amo.properties
+++ b/locale/he/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can\'t see them in Firebug\'s UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=פיירבאג עובד יחד עם פיירפוקס כדי לתת לך שפע של כלי פיתוח שאפשר להשתמש בהם תוך כדי גלישה. אפשר לערוך, לנפות שגיאות ולעקוב אחרי CSS, HTML ו־JavaScript בשידור חי בכל דף ברשת.\\\\n\\\\nפיירבאג 1.6 דורש פיירפוקס 3.6 או גרסה גבוהה יותר.
-firebug.amo.description=פיירבאג עובד יחד עם פיירפוקס כדי לתת לך שפע של כלי פיתוח שאפשר להשתמש בהם תוך כדי גלישה. אפשר לערוך, לדבג ולעקוב אחרי CSS, HTML ו־JavaScript בשידור חי בכל דף ברשת.\\\\n\\\\nבאתר של פיירבאג יש תיעוד, צילומי מסך ופורומים לדיונים: http://getfirebug.com
-firebug.amo.developer.comments=אם יש לך בעיות כלשהו, נא לקרוא תחילה את השו״ת של פיירבאג.\\\\n\\\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can\'t see them in Firebug\'s UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=פיירבאג עובד יחד עם פיירפוקס כדי לתת לך שפע של כלי פיתוח שאפשר להשתמש בהם תוך כדי גלישה. אפשר לערוך, לנפות שגיאות ולעקוב אחרי CSS, HTML ו־JavaScript בשידור חי בכל דף ברשת.\\\\n\\\\nפיירבאג 1.6 דורש פיירפוקס 3.6 או גרסה גבוהה יותר.
+firebug.amo.description=פיירבאג עובד יחד עם פיירפוקס כדי לתת לך שפע של כלי פיתוח שאפשר להשתמש בהם תוך כדי גלישה. אפשר לערוך, לדבג ולעקוב אחרי CSS, HTML ו־JavaScript בשידור חי בכל דף ברשת.\\\\n\\\\nבאתר של פיירבאג יש תיעוד, צילומי מסך ופורומים לדיונים: http://getfirebug.com
+firebug.amo.developer.comments=אם יש לך בעיות כלשהו, נא לקרוא תחילה את השו״ת של פיירבאג.\\\\n\\\\nhttp://getfirebug.com/faq.html
diff --git a/locale/he/firebug-tracing.properties b/locale/he/firebug-tracing.properties
index a793af7..60ede6f 100644
--- a/locale/he/firebug-tracing.properties
+++ b/locale/he/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug\'s menu).
-Open_Firebug_Tracing=פתיחת מעקב של פיירבאג
-Always_Open_Firebug_Tracing=תמיד לפתוח את המעקב של פיירבאג
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=מעקב
-tracing.Show_Scope_Variables=להציג משתנים בתחום הנוכחי
-tracing.Show_Time=להציג זמן
-tracing.tab.Stack=מחסנית
-tracing.tab.Exception=חריג
-tracing.tab.Properties=מאפיינים
-tracing.tab.Scope=תחום
-tracing.tab.Response=תשובה
-tracing.tab.Source=מקור
-tracing.tab.Interfaces=ממשקים
-tracing.tab.Object=עצם
-tracing.tab.Event=אירוע
-tracing.cmd.Clear=ניקוי
-tracing.cmd.tip.Clear=הסרת כל ההודעות
-tracing.cmd.Find=חיפוש
-tracing.cmd.tip.Find=חיפוש טקסט
-tracing.cmd.Bookmark=סימנייה
-tracing.cmd.tip.Bookmark=הוספת סימנייה
-tracing.cmd.Restart=אתחול פיירפוקס
-tracing.cmd.tip.Restart=אתחול פיירפוקס
-tracing.cmd.Exit=יציאה מפיירפוקס
-tracing.cmd.tip.Exit=יציאה מפיירפוקס
-tracing.cmd.Save=שמירה לקובץ
-tracing.cmd.tip.Save=שמירת יומנים לקובץ
-tracing.cmd.Load=טעינה מקובץ
-tracing.cmd.tip.Load=טעינת יומנים מקובץ
-tracing.cmd.Expand_All=להרחיב הכול
-tracing.cmd.Collapse_All=לצמצם הכול
-tracing.cmd.Tools=כלים
-tracing.cmd.tip.Tools=כלים
-tracing.cmd.Clear_Browser_Cache=ניקוי מטמון דפדפן
-tracing.cmd.tip.Clear_Browser_Cache=ניקוי מטמון דפדפן
-tracing.cmd.Force_Garbage_Collector=שימוש כפוי באיסוף זבל
-tracing.cmd.tip.Force_Garbage_Collector=הפעלה כפויה של איסוף זבל
-tracing.cmd.Open_Profile_Directory=פתיחת תיקיית פרופיל
-tracing.cmd.tip.Open_Profile_Directory=פתיחת תיקיית פרופיל
-tracing.option.A11Y_Description=נושאי נגישות
-tracing.option.ACTIVATION_Description=הפעלת פיירבאג
-tracing.option.ACTIVITYOBSERVER_Description=מנטר הפעילות של פיירבאג
-tracing.option.ANNOTATIONS_Description=הוספת הערות לאתר באמצעות פיירבאג
-tracing.option.BP_Description=נקודות בלימה
-tracing.option.CACHE_Description=מטמון מקור
-tracing.option.COMMANDLINE_Description=שורת פקודה וחלון קופץ של שורת פקודה
-tracing.option.COMPILATION_UNITS_Description=יחידות הידור תסריט
-tracing.option.CONSOLE_Description=לוח מסוף
-tracing.option.CSS_Description=פענוח CSS
-tracing.option.DISPATCH_Description=שיגור אירועים
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=יצירת domplate
-tracing.option.EDITOR_Description=עורך מובנה ומשלים אוטומטי
-tracing.option.ERRORLOG_Description=יומן שגיאות של JS, CSS, XML וכו׳
-tracing.option.ERRORS_Description=שגיאות פנימיות של פיירבאג
-tracing.option.EVAL_Description=ביצוע תסריט
-tracing.option.FBS_BP_Description=שירות פיירבאג: נקודות בלימה
-tracing.option.FBS_CREATION_Description=שירות פיירבאג: יצירת תסריט
-tracing.option.FBS_ERRORS_Description=שירות פיירבאג: שגיאות
-tracing.option.FBS_FINDDEBUGGER_Description=שירות פיירבאג: חיפוש דיבאגר
-tracing.option.FBS_FUNCTION_Description=שירות פיירבאג: פונקציה
-tracing.option.FBS_JSDCONTEXT_Description=שירות פיירבאג: הקשר ניפוי שגיאות של JavaScript
-tracing.option.FBS_SRCUNITS_Description=שירות פיירבאג: יחידות מקור
-tracing.option.FBS_STEP_Description=שירות פיירבאג: צעידה בתוך ניפוי שגיאות של JavaScript
-tracing.option.FBS_TRACKFILES_Description=שירות פיירבאג: מעקב קבצים
-tracing.option.FUNCTION_NAMES_Description=שמות פונקציות של JavaScript
-tracing.option.HISTORY_Description=היסטוריית ניווט בפיירבאג
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=מנטר תשובות HTTP
-tracing.option.INFOTIP_Description=רמז
-tracing.option.INITIALIZE_Description=אתחול פיירבאג
-tracing.option.INSPECT_Description=פקח
-tracing.option.JSONVIEWER_Description=מציג JSON
-tracing.option.LINETABLE_Description=טבלת שורת תסריט
-tracing.option.LOCALE_Description=לוקליזציה
-tracing.option.LOCATIONS_Description=מיקומי מקור
-tracing.option.NET_Description=לוח רשת
-tracing.option.NET_EVENTS_Description=אירועי רשת
-tracing.option.OPTIONS_Description=העדפות פיירבאג
-tracing.option.PANELS_Description=לוחות
-tracing.option.SHORTCUTS_Description=קיצורי מקשים
-tracing.option.SOURCEFILES_Description=קובצי מקור של JavaScript
-tracing.option.SPY_Description=מנטר XMLHttpRequest־ים
-tracing.option.STACK_Description=מחסנית קריאה של JavaScript
-tracing.option.STORAGE_Description=אחסון הגדרות
-tracing.option.SVGVIEWER_Description=מציג SVG
-tracing.option.FONTS_Description=מידע על גופנים ומציג גופנים
-tracing.option.TOOLTIP_Description=רמז צץ לכפתור התחלה
-tracing.option.TOPLEVEL_Description=JavaScript ברמה עליונה
-tracing.option.UI_LOOP_Description=ממשק משתמש לניפוי שגיאות JavaScript
-tracing.option.WINDOWS_Description=חלונות פיירבאג וצופה לשוניות
-tracing.option.XMLVIEWER_Description=מציג XML
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug\'s menu).
+Open_Firebug_Tracing=פתיחת מעקב של פיירבאג
+Always_Open_Firebug_Tracing=תמיד לפתוח את המעקב של פיירבאג
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=מעקב
+tracing.Show_Scope_Variables=להציג משתנים בתחום הנוכחי
+tracing.Show_Time=להציג זמן
+tracing.tab.Stack=מחסנית
+tracing.tab.Exception=חריג
+tracing.tab.Properties=מאפיינים
+tracing.tab.Scope=תחום
+tracing.tab.Response=תשובה
+tracing.tab.Source=מקור
+tracing.tab.Interfaces=ממשקים
+tracing.tab.Object=עצם
+tracing.tab.Event=אירוע
+tracing.cmd.Clear=ניקוי
+tracing.cmd.tip.Clear=הסרת כל ההודעות
+tracing.cmd.Find=חיפוש
+tracing.cmd.tip.Find=חיפוש טקסט
+tracing.cmd.Bookmark=סימנייה
+tracing.cmd.tip.Bookmark=הוספת סימנייה
+tracing.cmd.Restart=אתחול פיירפוקס
+tracing.cmd.tip.Restart=אתחול פיירפוקס
+tracing.cmd.Exit=יציאה מפיירפוקס
+tracing.cmd.tip.Exit=יציאה מפיירפוקס
+tracing.cmd.Save=שמירה לקובץ
+tracing.cmd.tip.Save=שמירת יומנים לקובץ
+tracing.cmd.Load=טעינה מקובץ
+tracing.cmd.tip.Load=טעינת יומנים מקובץ
+tracing.cmd.Expand_All=להרחיב הכול
+tracing.cmd.Collapse_All=לצמצם הכול
+tracing.cmd.Tools=כלים
+tracing.cmd.tip.Tools=כלים
+tracing.cmd.Clear_Browser_Cache=ניקוי מטמון דפדפן
+tracing.cmd.tip.Clear_Browser_Cache=ניקוי מטמון דפדפן
+tracing.cmd.Force_Garbage_Collector=שימוש כפוי באיסוף זבל
+tracing.cmd.tip.Force_Garbage_Collector=הפעלה כפויה של איסוף זבל
+tracing.cmd.Open_Profile_Directory=פתיחת תיקיית פרופיל
+tracing.cmd.tip.Open_Profile_Directory=פתיחת תיקיית פרופיל
+tracing.option.A11Y_Description=נושאי נגישות
+tracing.option.ACTIVATION_Description=הפעלת פיירבאג
+tracing.option.ACTIVITYOBSERVER_Description=מנטר הפעילות של פיירבאג
+tracing.option.ANNOTATIONS_Description=הוספת הערות לאתר באמצעות פיירבאג
+tracing.option.BP_Description=נקודות בלימה
+tracing.option.CACHE_Description=מטמון מקור
+tracing.option.COMMANDLINE_Description=שורת פקודה וחלון קופץ של שורת פקודה
+tracing.option.COMPILATION_UNITS_Description=יחידות הידור תסריט
+tracing.option.CONSOLE_Description=לוח מסוף
+tracing.option.CSS_Description=פענוח CSS
+tracing.option.DISPATCH_Description=שיגור אירועים
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=יצירת domplate
+tracing.option.EDITOR_Description=עורך מובנה ומשלים אוטומטי
+tracing.option.ERRORLOG_Description=יומן שגיאות של JS, CSS, XML וכו׳
+tracing.option.ERRORS_Description=שגיאות פנימיות של פיירבאג
+tracing.option.EVAL_Description=ביצוע תסריט
+tracing.option.FBS_BP_Description=שירות פיירבאג: נקודות בלימה
+tracing.option.FBS_CREATION_Description=שירות פיירבאג: יצירת תסריט
+tracing.option.FBS_ERRORS_Description=שירות פיירבאג: שגיאות
+tracing.option.FBS_FINDDEBUGGER_Description=שירות פיירבאג: חיפוש דיבאגר
+tracing.option.FBS_FUNCTION_Description=שירות פיירבאג: פונקציה
+tracing.option.FBS_JSDCONTEXT_Description=שירות פיירבאג: הקשר ניפוי שגיאות של JavaScript
+tracing.option.FBS_SRCUNITS_Description=שירות פיירבאג: יחידות מקור
+tracing.option.FBS_STEP_Description=שירות פיירבאג: צעידה בתוך ניפוי שגיאות של JavaScript
+tracing.option.FBS_TRACKFILES_Description=שירות פיירבאג: מעקב קבצים
+tracing.option.FUNCTION_NAMES_Description=שמות פונקציות של JavaScript
+tracing.option.HISTORY_Description=היסטוריית ניווט בפיירבאג
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=מנטר תשובות HTTP
+tracing.option.INFOTIP_Description=רמז
+tracing.option.INITIALIZE_Description=אתחול פיירבאג
+tracing.option.INSPECT_Description=פקח
+tracing.option.JSONVIEWER_Description=מציג JSON
+tracing.option.LINETABLE_Description=טבלת שורת תסריט
+tracing.option.LOCALE_Description=לוקליזציה
+tracing.option.LOCATIONS_Description=מיקומי מקור
+tracing.option.NET_Description=לוח רשת
+tracing.option.NET_EVENTS_Description=אירועי רשת
+tracing.option.OPTIONS_Description=העדפות פיירבאג
+tracing.option.PANELS_Description=לוחות
+tracing.option.SHORTCUTS_Description=קיצורי מקשים
+tracing.option.SOURCEFILES_Description=קובצי מקור של JavaScript
+tracing.option.SPY_Description=מנטר XMLHttpRequest־ים
+tracing.option.STACK_Description=מחסנית קריאה של JavaScript
+tracing.option.STORAGE_Description=אחסון הגדרות
+tracing.option.SVGVIEWER_Description=מציג SVG
+tracing.option.FONTS_Description=מידע על גופנים ומציג גופנים
+tracing.option.TOOLTIP_Description=רמז צץ לכפתור התחלה
+tracing.option.TOPLEVEL_Description=JavaScript ברמה עליונה
+tracing.option.UI_LOOP_Description=ממשק משתמש לניפוי שגיאות JavaScript
+tracing.option.WINDOWS_Description=חלונות פיירבאג וצופה לשוניות
+tracing.option.XMLVIEWER_Description=מציג XML
diff --git a/locale/he/firebug.properties b/locale/he/firebug.properties
index e4292db..6774b37 100644
--- a/locale/he/firebug.properties
+++ b/locale/he/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=פיירבאג
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=פיירבאג - %S
-# Panel titles
-Panel-console=מסוף
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=רשת
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=תסריט
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=סגנון
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=מחושב
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=עיצוב
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=מעקב
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=נקודות בלימה
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=מחסנית
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=תחום
-firebug.DetachFirebug=לפתוח את פיירבאג בחלון חדש
-firebug.AttachFirebug=להצמיד את פיירבאג לחלון דפדפן
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox status bar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=פיירבאג %1$S סך הכול;%1$S פיירבאגים סך הכול
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in \'list of all panels\'
-startbutton.tip.deactivated=Deactivated
-# menu (available on Firebug\'s tab bar).
-# Console panel options.
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-panel.status=%S: %S
-inBrowser=בדפדפן
-minimized=מוקטן
-enablement.for_all_pages=עבור כל הדפים
-enablement.on=מופעל
-enablement.off=כבוי
-enablement.Panel_activation_status=Panel activation status:
-none=סגור
-Firebug_-_inactive_for_current_website=פיירבאג - אינו פעיל עבור האתר הנוכחי
-Activate_Firebug_for_the_current_website=להפעיל את פיירבאג עבור האתר הנוכחי
-Minimized=מוקטן
-Minimize_Firebug=להקטין את פיירבאג
-On_for_all_web_pages=עבור כל דפי הווב
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=ניקוי רשימת ההפעלה
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=מיקום ממשק פיירבאג
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-firebug_options=העדפות פיירבאג
-# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-firebug.Show_All_Panels=הצגת כל החלוניות
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# clicked element in the DOM panel (tab).
-ShowJavaScriptErrors=הצגת שגיאות JavaScript
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=הצגת אזהרות JavaScript
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=הצגת שגיאות CSS
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=הצגת מעקב מחסנית עם שגיאות
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=הצגת XMLHttpRequest־ים
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=הצגת שגיאות מערכת ממשק
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=הצגת שגיאות מערכת ממשק
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=הצגת שגיאות חיצונית
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=הצגת שגיאות רשת
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=אזהרות אדוקות (הביצועים ייפגעו)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=היסטוריית פקודות
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=הצגת חלון קופץ עם רשימת השלמות
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=כשל וידוא
-# %S = Target panel title
-# examples: Inspect in DOM Tab
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-Line=%S (שורה %S)
-LineAndCol=%S (שורה %S, עמודה %S)
-InstanceLine=%S #%S (שורה %S)
-StackItem=%S (%S שורה %S)
-SystemItem=<מערכת>
-# HTML panel context menu items.
-# Quick Info Box
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(ללא שם)
-# LOCALIZATION NOTE (html.label.Expand/Contract_All): Used within the HTML for a context
-# menu item. The user can expand/contract the element together with all its children to
-# quickly see the entire hierarchical structure or collapse it.
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange): Used within the DOM panel to create
-# a \'property breakpoint\'. Right-click on an property of an object. The label is also
-# used for the \'break on next button\' (available on the toolbar).
-ShowFullText=הצגת טקסט מלא
-html.option.tip.Show_Full_Text=Don't crop element contents
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# \'break on next button\' in the case the option is activated
-# LOCALIZATION NOTE (EditAttribute): Menu item label used in HTML panel context menu. Allows
-ShowWhitespace=הצגת רווח לבן
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-ShowComments=הצגת הערות
-html.option.tip.Show_Comments=Show comment nodes
-# examples: Edit Attribute \"onclick\"...
-# LOCALIZATION NOTE (DeleteAttribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# %S = Name of the clicked attribute
-# examples: Delete Attribute \"onclick\"...
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-HighlightMutations=הדגשת שינויים
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-ExpandMutations=הרחבת שינויים
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-ScrollToMutations=גלילת השינויים לתצוגה
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# The text between <a> and </a> is displayed as a link.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-ShowQuickInfoBox=הצגת תיבת מידע מהיר
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# The text between <a> and </a> is displayed as a link.
-# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-ShadeBoxModel=הצללת דגם הקופסה
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=גלילה לתצוגה
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=מאפיין חדש
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=מחיקת מרכיב
-html.Delete_Element=Delete the element from the tree
-DeleteNode=מחיקת צומת
-html.Delete_Node=Delete the node from the tree
-# %S = Name of the clicked property
-quickInfo=מידע מהיר
-computedStyle=סגנון מחושב
-# examples: Edit \"background-color\"...
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-html.Break_On_Mutate=הפסקה בעת שינוי
-html.Disable_Break_On_Mutate=כיבוי הפסקה בעת שינוי
-html.label.Break_On_Text_Change=הפסקה בעת שינוי טקסט
-html.label.HTML_Breakpoints=נקודות בלימה ב־HTML
-html.label.Break_On_Attribute_Change=הפסקה בשינוי מאפיין
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=הפסקה בעת הוספה או הסרה של צאצא
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=הפסקה בעת הסרת מרכיב
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# %S = Name of the clicked property
-# examples: Disable \"background-color\"
-# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-html.label.Expand/Contract_All=הרחבה או צמצום של הכול
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# %S = Name of the clicked property
-# examples: Delete \"background-color\"
-# Console context menu labels.
-dom.label.breakOnPropertyChange=בלימה בעת שינוי תכונה
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# Breakpoints side panel
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-dom.disableBreakOnPropertyChange=כיבוי בלימה בעת שינוי תכונה
-dom.label.DOM_Breakpoints=נקודות בלימה של DOM
-# breakpoints.Enable_Breakpoint): Context menu item labels in the Breakpoints side panel.
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a \'debugger;\' keyword.
-EditAttribute=עריכת המאפיין \\\"%S\\\"...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current \'debugger;\' keyword used in the Javascript source
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.Collapse_All): Context menu item labels used in
-# Stack side panel (within Script panel)
-DeleteAttribute=מחיקת המאפיין \\\"%S\\\"...
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# Firebug needs to be halted at a breakpoint to see these items.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-InheritedFrom=מורש מ־
-SothinkWarning=הרחבת Sothink SWF Catcher מונעת מפיירבאג עבודה תקינה.<br><br>נא לקרוא את <a href=\\\"http://www.getfirebug.com/faq.html#Sothink\\\" target=\\\"_new\\\">הפריט הזה בשו\"ת של פיירבאג</a> לקבלת עזרה.
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab\'s option menu)
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789 שָׁפָן אָכַל קְצָת גֶּזֶר בְּטַעַם חַסָּה, וְדַי
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-css.EmptyStyleSheet=אין משפטים. אפשר <a>ליצור משפט</a>.
-# LOCALIZATION NOTE (ShowRulers): Label for context menu item.
-# Used in the Layout side panel (within HTML panel).
-# Net panel
-css.EmptyElementCSS=למרכיב הזה אין משפטי סגנון. אפשר ליצור <a>משפט סגנון</a> עבורו.
-EditStyle=עריכת סגנון מרכיב...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=משפט חדש...
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu within the Net panel
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=תכונה חדשה
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s context
-# menu for breaking on an XHR.
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-EditProp=עריכה \\\"%S\\\"...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# Net panel\'s Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-DisableProp=כיבוי \\\"%S\\\"
-css.tip.Disable_Prop=Disable the property "%S"
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-DeleteProp=מחיקת \\\"%S\\\"
-css.tip.Delete_Prop=Delete the property "%S"
-# when a Net panel entry is expanded)
-BreakOnThisError=בלימה בעת השגיאה הזאת
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=בלימה בעת כל שגיאה
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-TrackThrowCatch=מעקב Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=שימוש בשורת קוד מקור אחרונה עבור שמות eval()
-UseMD5ForEvalName=שימוש ב־MD5 עבור שמות eval()
-# in the Net & Console panel when copying JSON replies.
-Breakpoints=נקודות בלימה
-ErrorBreakpoints=נקודות בלימה עבור שגיאות
-LoggedFunctions=פונקציות שנרשמות ליומן
-EnableAllBreakpoints=הפעלת כל נקודות הבלימה
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=כיבוי כל נקודות הבלימה
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=הסרת כל נקודות הבלימה
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=הריצה תעצור בנקודת הבלימה הזאת רק אם ערך הביטוי הבא יהיה אמת:
-# %S = Part of the JSON, that was clicked
-# example: Copy \"person\" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders): Label (noun)
-breakpoints.Remove_Breakpoint=הסרת נקודת בלימה
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=כיבוי נקודת בלימה
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=הפעלת נקודת בלימה
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# used in the Net panel (displayed inside the Headers tab of a request).
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-script.balloon.Continue=להמשיך
-script.balloon.Disable=לכבות
-ScriptsFilterStatic=הצגת תסריטים סטטיים
-ScriptsFilterEval=הסגת תסריטים סטטיים ותסריטי eval
-ScriptsFilterEvent=הסגת תסריטים סטטיים ותסריטי אירוע
-ScriptsFilterAll=הסגת תסריטים סטטיים, תסריטי eval ותסריטי אירוע
-ScriptsFilterStaticShort=סטטיים
-ScriptsFilterEvalShort=eval
-ScriptsFilterEventShort=אירוע
-ScriptsFilterAllShort=הכול
-# example: Firebug\'s log limit has been reached. 150 entries not shown.
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-callstack.Expand_All=להרחיב הכול
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=לצמצם הכול
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# examples: In order to change the limit modify \'firebug.extensions.console.logLimit\'
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# (result of JavaScript profiler tool).
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-ShowUserProps=להציג תכונות מוגדרות על־ידי משתמש
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=להציג פונקציות מוגדרות על־ידי משתמש
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=להציג תכונות DOM
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=להציג פונקציות DOM
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=להציג קבועי DOM
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=להציג מטפלי אירועים מובנים
-ShowInlineEventHandlersTooltip=להציג מטפלי אירועים מובנים זמינים שאינם מזוהים עם פונקציה.
-ShowOwnProperties=להציג תכונות עצמיות בלבד
-ShowOwnPropertiesTooltip=לא להציג שרשרת אב־טיפוס
-ShowEnumerableProperties=להציג תכונות בנות־מנייה בלבד
-ShowEnumerablePropertiesTooltip=לא להציג תכונות שאינן בנות־מנייה
-NoMembersWarning=אין תכונות להצגה עבור העצם הזה.
-NewWatch=ביטוי צפייה חדש...
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-AddWatch=הוספת ביטוי צפייה
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-CopySourceCode=העתקת קוד מקור
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=הקלד #<מספר> למעבר אל שורה
-CopyValue=העתקת ערך
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=העתקת שם
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=העתקת נתיב
-dom.tip.Copy_Path=Copy the property path
-NewProperty=תכונה חדשה...
-EditProperty=עריכת תכונה...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=עריכת משתנה...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=עריכת ביטוי צפייה...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=מחיקת תכונה
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=מחיקת ביטוי צפייה
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-SetBreakpoint=הגדרת נקודת בלימה
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# Support for clipboard actions.
-# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Script
-# panel when clicking a function object.
-EditBreakpointCondition=עריכת תנאי נקודת בלימה...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=אין נקודות בלימה בדף הזה.
-# %S = Name of the function
-# example: Log Calls to \"getData\"
-# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): Tooltip used for a button on main
-Only_Show_Applied_Styles=להציג רק סגנונות מוּחלים
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-Show_User_Agent_CSS=להציג סגנונות של סוכן לקוח
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support \'bind\'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# %S = Name of the unsupported method
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the \"Break on... \" button used when the Console panel is selected.
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# in the Console panel
-# LOCALIZATION NOTE (console.Use_TAB_and_arrow_keys): Hint at the top of the Completion Popup
-# in the Command Line
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# JavaScript is not available
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# See \'extensions.firebug.multiHighlightLimit\' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-Expand_Shorthand_Properties=להרחיב תכונות מקוצרות
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. \'Total Sent\' and \'Total Received\' info includes
-Sort_alphabetically=מיון לפי אלף־בית
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# sent and received headers size.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-Show_Mozilla_specific_styles=הצגת סגנונות ייחודיים למוזילה
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# posted data reached Firebug\'s size limit and only part of it is displayed in the UI.
-# LOCALIZATION NOTE (net.xpy.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=לחץ על כל מקש למיון רשימה
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):
-# Labels for Net panel\'s options (located in tab\'s option menu)
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-LayoutPadding=דיפון (padding)
-LayoutBorder=גבול (border)
-LayoutMargin=שול (margin)
-LayoutPosition=מיקום (position)
-LayoutAdjacent=צמוד
-position=מיקום (position)
-# Net panel\'s option. If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-ShowRulers=הצגת סרגלים ומדריכים
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# (breaking on next executed JavaScript statement)
-Loading=טעינה...
-Headers=כותרות
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-net.tip.Clear=Clear the request list
-# %1 = Number of requests
-# example: 21 requests
-net.header.Reset_Header=אתחול כותרת
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-net.header.URL=URL
-net.header.URL_Tooltip=URL מבוקש ושיטת HTTP שנעשה בה שימוש.
-net.header.Status=מצב
-net.header.Status_Tooltip=מצב התשובה שהתקבלה.
-net.header.Domain=מתחם
-net.header.Domain_Tooltip=מתחם הבקשה שהתבצעה.
-net.header.Size=גודל
-net.header.Size_Tooltip=גודל התשובה שהתקבלה.
-net.header.Timeline=ציר זמן
-net.header.Timeline_Tooltip=מידע מפורט על מסלול הלוך וחזור של בקשה ותשובה.
-net.header.Local_IP=כתובת IP מקומית
-net.header.Local_IP_Tooltip=כתובת IP מקומית ומספר פתחה שהבקשה מיועדת אליה.
-net.header.Remote_IP=כתובת IP מרוחקת
-net.header.Remote_IP_Tooltip=כתובת IP מרוחקת ומספר פתחה שהבקשה מיועדת אליה.
-net.header.Protocol=פרוטוקול
-net.header.Protocol_Tooltip=פרוטוקול URL שישמש לאיתור משאב בווב.
-# With: the scope inside of the with(obj) {} statement
-net.label.XHR_Breakpoints=נקודות בלימה של XHR
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-# Window: the scope inside of a Javascript window object.
-net.label.Break_On_XHR=בלימה ב־XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-net.headers.view_source=הצגת קוד מקור
-net.headers.pretty_print=הדפסה יפה
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-net.filter.Media=מדיה
-# waterfall graph in the Net panel.
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-Post=Post
-Put=Put
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-Response=תשובה (Response)
-URLParameters=פרמפטרים (Params)
-Cache=מטמון (Cache)
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=מידע כללי
-fontviewer.Meta_Data=מטא־נתונים
-fontviewer.view_source=הצגת קוד מקור
-fontviewer.Preview=תצוגה מקדימה
-fontviewer.view_characters=הצגת תווים
-fontviewer.pretty_print=הדפסה יפה
-fontviewer.view_sample=הצגת דוגמה
-fontviewer.uniqueid=מזהה ייחודי
-fontviewer.vendor=ספק (Vendor)
-fontviewer.license=רישיון
-fontviewer.description=תיאור
-fontviewer.copyright=זכויות יוצרים
-fontviewer.credits=קרדיטים
-fontviewer.trademark=סימן מסחרי
-fontviewer.licensee=בעל הרישיון
-fontviewer.extension=הרחבה (Extension)
-fontviewer.pangram=The quick brown fox jumps over the lazy dog. שָׁפָן אָכַל קְצָת גֶּזֶר בְּטַעַם חַסָּה, וְדַי
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-jsonviewer.sort=מיון לפי מפתח
-jsonviewer.do_not_sort=לא למיין
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-# A11y Chrome Labels (not visible, spoken by screen readers)
-# A11y panelNode labels (not visible, spoken by screen readers)
-net.jsonviewer.Copy_JSON=להעתיק את „%S” בתור JSON
-# A11y Domplate labels (not visible, spoken by screen readers)
-# LOCALIZATION NOTE:
-RequestHeaders=כותרות בקשה
-ResponseHeaders=כותרות תשובה
-CachedResponseHeaders=כותרות תשובות ממטמון
-PostRequestHeaders=Request Headers From Upload Stream
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-# LOCALIZATION NOTE (a11y.labels.overridden):
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-plural.Limit_Exceeded2=פיירבאג הגיע למגבלה של יומנים. עיול אחד אינו מוצג.;פיירבאג הגיע למגבלה של יומנים. %1$S עיולים אינם מוצגים.
-LimitPrefs=העדפות
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-LimitPrefsTitle=כדי לשנות את המגבלה, יש לשנות את ‚%S’
-Refresh=רענון
-panel.tip.Refresh=Refresh the panel display
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-OpenInTab=פתיחה בלשונית חדשה
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=פתיחת תשובה בלשונית חדשה
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for \"test\" in 17 log rows
-Profile=פרופיל
-ProfilerStarted=הפרופיילר רץ. לחץ „פרופיל” להצגת הדו״ח שלו.
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for \"window.alert\" on line 322 in utilities.js
-plural.Profile_Time2=(%1$S מ״ש, קריאה אחת);(%1$S מ״ש, %2$S קריאות)
-NothingToProfile=אין פעילות שאפשר לעשות לה פרופיילינג.
-PercentTooltip=אחוז הזמן שהושקע בפונקציה הזאת.
-CallsHeaderTooltip=מספר הפעמים שהפונקציה נקראה.
-OwnTimeHeaderTooltip=הזמן שהועבר בפונקציה, ללא קריאות מקוננות.
-TimeHeaderTooltip=הזמן שהועבר בפונקציה, כולל קריאות מקוננות.
-AvgHeaderTooltip=זמן ממוצע, כולל קריאות לפונקציות.
-MinHeaderTooltip=זמן מזערי, כולל קריאות לפונקציות.
-MaxHeaderTooltip=זמן מרבי, כולל קריאות לפונקציות.
-ProfileButton.Enabled.Tooltip=פרופיילינג לזמן ביצוע של JavaScript.
-ProfileButton.Disabled.Tooltip=פרופיילינג לזמן ביצוע של JavaScript (חלונית תסריטים צריכה להיות מופעלת).
-Function=פונקציה
-Percent=אחוז
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-Calls=קריאות
-OwnTime=זמן עצמי
-Time=זמן
-Avg=ממוצע
-Min=מזערי
-Max=מרבי
-File=קובץ
-# example: Match found for \"obj\" in object element at /html/body/object[2]
-Copy=העתקה
-Cut=גזירה
-Remove=הסרה
-Delete=Delete
-Paste=הדבקה
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=העתקת innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=העתקתת XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=העתקת CSS Path
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-CopyLocation=העקת מיקום
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=העתקת מיקום עם פרמטרים
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=העתקת כותרות בקשה
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=העתקת כותרות תשובה
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=העתקת גוף תשובה
-net.tip.Copy_Response=Copy the response body to the clipboard
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-CopyError=העתקת שגיאה
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for \"abindex\" in tabindex=\"0\" in span element at /html/body/span[2]
-CopySource=העתקת פונקציה
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents)
-# first %S = Matched search string, second %S = Element\'s text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-ShowCallsInConsole=רישום ביומן של קריאות ל־„%S”
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# example: Match found for \"Firebug Rocks!\" in h2 element at /html/body/h2[2]
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-ShowEventsInConsole=רישום אירועים ביומן
-html.tip.Show_Events_In_Console=Log event information to the console
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-panel.Enabled=מופעל
-panel.tip.Enabled=Toggle the panel activation
-# example: Match found for \"main\" in #mainContent h2 {
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {
-console.MethodNotSupported=מסוף פיירבאג אינו תומך ב־‚%S’
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-commandline.MethodNotSupported=שורת פקודה של פיירבאג אינה תומכת ב־‚%S’
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for \"time\" in DOM property _starttime
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-commandline.CurrentWindow=Current window:
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-console.Disable_Break_On_All_Errors=כיבוי בלימה בעת כל שגיאה
-console.Break_On_All_Errors=בלימה בעת כל שגיאה
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-console.Break_On_This_Error=בלימה בשגיאה הזאת
-# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 ms
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-console.JSDisabledInFirefoxPrefs=JavaScript מכובה בהעדפות פיירפוקס שלך. אם ברצונך להשתמש במסוף, נא להדליק את האפשרות הזאת באפשרויות > תוכן > הפעלת JavaScript
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for \"05\" in net summary row: 4.05s
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for \"wefkhwefkgwekhjgjh\"
-console.multiHighlightLimitExceeded=יש יותר מדי איברים במערך שאפשר להבליט בדף (המגבלה הנוכחית היא %S).\\\\nר׳ את ההעדפה ‚extensions.firebug.multiHighlightLimit’.
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-commandline.disabledForXMLDocs=שורת הפקודה של פיירבאג כבויה עבור דפי XML. אפשר <a>לעבור ל־HTML</a> כדי להפעיל אותה.
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-# Console messages
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can\'t be displayed
-net.sizeinfo.Response_Body=גוף התשובה.
-net.sizeinfo.Post_Body=גוף ה־Post
-net.sizeinfo.Total_Sent=נשלח סך הכול
-net.sizeinfo.Total_Received=התקבל סך הכול
-net.sizeinfo.Including_HTTP_Headers=כולל כותרות HTTP
-net.ActivationMessage=הופעלה חלונית רשת. כל הבקשות מהזמן שהחלונית אינה פעילה אינן מוצגות.
-net.responseSizeLimitMessage=פיירבאג הגיע למגבלה של גודל התשובה. יש ללחוץ <a>כאן</a> כדי לפתוח את כל התשובה בלשונית חדשה של פיירפוקס.
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-net.postDataSizeLimitMessage=פיירבאג הגיע למגבלה בגודל הבקשה.
-net.Break_On_XHR=בלימה ב־XHR
-net.label.Parameters=פרמטרים
-net.label.Parts=חלקים
-net.label.Source=מקור
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-net.label.Resend=שליחה מחדש
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-net.option.Disable_Browser_Cache=כיבוי מטמון דפדפן
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-net.option.Show_Paint_Events=הצגת אירועי ציור
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-net.option.Show_BFCache_Responses=הצגת תשובות BFCache
-net.option.tip.Show_BFCache_Responses=גם תשובות מאת Back-Forward Cache תוצגנה
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-script.Break_On_Next=בלימה בפעולה הבאה
-script.Disable_Break_On_Next=כיבוי בלימה בפעולה הבאה
-ShowHttpHeaders=הצגת כותרות HTTP
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
-# Message displayed in the Script panel, if the page doesn\'t include any JavaScript.
-plural.Request_Count2=בקשה אחת;%1$S בקשות
-FromCache=ממטמון
-StopLoading=הפסקת הטעינה
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(נתונים גדולית מאוד)
-ShowComputedStyle=הצגת סגנון מחושב
-StyleGroup-text=טקסט
-StyleGroup-background=רקע
-StyleGroup-box=דגם קופסה
-StyleGroup-layout=עימוד
-StyleGroup-other=אחר
-Dimensions=%S × %S
-# The suggestion message represents an advice how to solve the problem.
-# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-CopyColor=העתקת צבע
-css.tip.Copy_Color=Copy the color to the clipboard
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-# firebug.dtd
-# LOCALIZATION NOTE (firebug.Rerun, firebug.Continue, firebug.StepOver, firebug.StepInto,
-CopyImageLocation=העתקת מיקום תמונה
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=פתיחת תמונה בלשונית חדשה
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# firebug.StepOut, firebug.RunUntil)
-# Labels used for debugger options available in the Script panel.
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-OmitObjectPathStack=השמטת מחסנית סרגל כלים
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=טעינת הקוד המקורי
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own \"Inspect Element\"
-# Firebug should start using \"Inspect Element with Firebug\" to distinguish itself.
-Copy_Rule_Declaration=העתקת הצהרת משפטים
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# editors.dtd
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-Copy_Style_Declaration=העתקת הצהרת סגנון
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# Used in the CSS panel for the Edit button.
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it\'s \'Start Private Browsing\')
-plural.Error_Count2=שגיאה אחת;%1$S שגיאות
-moduleManager.title=חלונית %S כבויה
-moduleManager.desc3=שימוש בסמל סרגל מצב של פיירבאג כדי להפעיל או לכבות את כל החלוניות בבת אחת. אפשר לשלוט פרטנית בכל חלונית באמצעות תפריט לשונית בכל חלונית.
-moduleManager.Enable=הפעלה
-Suspend_Firebug=השהיית פיירבאג
-Resume_Firebug=המשך עבודה עם פיירבאג
-Reset_Panels_To_Disabled=אתחול חלוניות למצב כבוי
-Open_Console=פתיחת מסוף
-Open_Console_Tooltip=פתיחת מסוף מעקב לפיירבאג.
-Scope_Chain=שרשרת תחום
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel\'s options menu. Represents an option, that can be used
-# to switch of the break notifications.
-With_Scope=עם
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-Call_Scope=קריאה
-# Message displayed in a break notification popup next to a checkbox.
-Window_Scope=חלון
-Logs=יומנים
-Options=אפשרויות
-Copy_Stack=העתקת מחסנית
-Copy Exception=העתקת חריג
-# Includes a link enclosed in <a> and </a> to open the panel\'s options menu.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-requestinfo.Blocking=חסימה
-requestinfo.Resolving=חיפוש ב־DNS
-requestinfo.Connecting=התחברות
-requestinfo.Sending=שליחה
-requestinfo.Waiting=המתנה
-requestinfo.Receiving=קבלה
-requestinfo.ContentLoad=‚DOMContentLoaded’ (אירוע)
-requestinfo.WindowLoad=‚load’ (אירוע)
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by \'Break On Next\' button
-# This feature needs the Script panel enabled in order to work.
-requestinfo.started.label=זמן תחילת בקשה מאז ההתחלה
-requestinfo.phases.label=זמנים של התחלה ומשך של שלבי הבקשה ביחס לתחילת הבקשה:
-requestinfo.timings.label=תזמון אירועים ביחס לתחילת הבקשה:
-search.Firebug_Search=חיפוש פיירבאג
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-search.Next=הבא
-search.tip.Next=Search for the next match
-search.Previous=הקודם
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=תלוי רישיות
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=לא תלוי רישיות
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=קבצים מרובים
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=להשתמש בביטוי רגולרי
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. \"...\" is automatically appended.
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-search.html.CSS_Selector=בורר CSS
-search.net.Headers=כותרות
-search.net.Parameters=פרמטרים
-search.net.Response_Bodies=גופי תשובה
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=השארה
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=להציג את כל עיולי היומן
-firebug.console.Errors=שגיאות
-firebug.console.Filter_by_Errors=סינון לפי שגיאות
-firebug.console.Warnings=אזהרות
-firebug.console.Filter_by_Warnings=סינון לפי אהזרות
-firebug.console.Info=מידע
-firebug.console.Filter_by_Info=סינון לפי מידע
-firebug.console.Debug_Info=מידע לניפוי שגיאות
-firebug.console.Filter_by_Debug_Info=סינון לפי מידע לניפוי שגיאות
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=פתיחת פיירבאג
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=הסתרת פיירבאג
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=הפעלת כל החלוניות
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=כיבוי כל החלוניות
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=התאמה אישית של קיצורי דרך
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=אפשרויות
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=הפעלת הרחבות נגישות
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=אתחול כל אפשרויות פיירבאג
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=פיירבאג ברשת
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=הצגת מספר השגיאות
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=גודל טקסט
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=הגדלת טקסט
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=הקטנת טקסט
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=גודל טקסט רגיל
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=אתר פיירבאג...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=תיעוד...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=קיצורי מקשים...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=קבוצת דיון...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=מערכת מעקב בעיות...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=לתרום...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=אודות...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=חיפוש
-firebug.menu.tip.Search=Set focus to the search field
-# It\'s informing the user about the number of items in the storage.
-firebug.shortcut.reenterCommand.label=הזנה מחדש של פקודה
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=הפעלת בחינה
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=הפעלת תיבת מידע מהיר
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=הפעלת פרופיילינג
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=התמקדות בשורת פקודה
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=התמקדות בחיפוש פיירבאג
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=התמקדות בעורך ערכי צפייה
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=התמקדות במיקום
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=העצם הבא
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=העצם הקודם
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=התאמה אישית של מקשי פיירבאג
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=פתיחת פיירבאג בחלון חדש
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=מעבר לחלונית פיירבאג הימנית
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=מעבר לחלונית פיירבאג השמאלית
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=פתיחת פיירבאג
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=לשונית פיירבאג קודמת
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=ניקוי מסוף
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=פתיחת מסוף מעקב
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=חזרה
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=קדימה
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=הגדלת טקסט
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=הקטנת טקסט
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=גודל טקסט רגיל
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=בחירת חלונית
-customizeShortcuts=שיוך קיצורי דרך של פיירבאג
-# %1 = Number of storage items
-a11y.labels.panel_tools=כלי חלונית
-a11y.labels.firebug_panels=חלוניות פיירבאג
-a11y.labels.firebug_side_panels=חלוניות צד של פיירבאג
-a11y.labels.firebug_window=חלון פיירבאג
-a11y.labels.firebug_status=מצב פיירבאג
-a11y.labels.reset=אתחול
-a11y.labels.reset_shortcut=אתחול קיצור הדרך %S
-aria.labels.inactive_panel=חלונית לא פעילה
-# example: 1 item in Storage
-a11y.labels.log_rows=שורות יומן
-a11y.labels.call_stack=מחסנית קריאה
-a11y.labels.document_structure=מבנה מסמך
-a11y.labels.title_panel=חלונית %S
-a11y.labels.title_side_panel=חלונית צד %S
-a11y.labels.cached=מוטמן
-aria.labels.stack_trace=מעקב מחסנית
-# example: 2 items in Storage
-a11y.layout.padding=דיפון (padding)
-a11y.layout.border=גבול (border)
-a11y.layout.margin=שול (margin)
-a11y.layout.position=מיקום (position)
-a11y.layout.position_top=מיקום עליון
-a11y.layout.position_right=מיקום ימני
-a11y.layout.position_bottom=מיקום תחתון
-a11y.layout.position_left=מיקום שמאלי
-a11y.layout.margin_top=שול עליון
-a11y.layout.margin_right=שול ימני
-a11y.layout.margin_bottom=שול תחתון
-a11y.layout.margin_left=שול שמאלי
-a11y.layout.border_top=גבול עליון
-a11y.layout.border_right=גבול ימני
-a11y.layout.border_bottom=גבול תחתון
-a11y.layout.border_left=גבול שמאלי
-a11y.layout.padding_top=דיפון עליון
-a11y.layout.padding_right=דיפון ימני
-a11y.layout.padding_bottom=דיפון תחתי
-a11y.layout.padding_left=דיפון שמאלי
-a11y.layout.top=למעלה
-a11y.layout.right=ימין
-a11y.layout.bottom=למטה
-a11y.layout.left=שמאל
-a11y.layout.width=רוחב
-a11y.layout.height=גובה
-a11y.layout.size=ודל
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=קביעת גודל קופסה
-a11y.layout.clientBoundingRect=ריבוע מגביל בלקוח
-a11y.descriptions.press_enter_to_edit_values=לחצו על אנטר ועל טאב לעריכת ערכים בודדים
-a11y.labels.style_rules=משפטי סגנון
-aria.labels.inherited_style_rules=משפטי סגנון מורָשים
-a11y.labels.computed_styles=סגנונות מחושבים
-a11y.labels.dom_properties=תכונות DOM
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-a11y.labels.inline_editor=עורך טקסט פנימי
-a11y.labels.value_for_attribute_in_element=ערך למאפיין %S במרכיב %S
-a11y.labels.attribute_for_element=מאפיין למרכיב %S
-a11y.labels.text_contents_for_element=תוכן טקסט של המרכיב %S
-a11y.labels.defined_in_file=מוגדר בקובץ %S
-a11y.labels.declarations_for_selector=הצהרות סגנון עבור הבורר „%S”
-a11y.labels.property_for_selector=תכונת CSS עבור הבורר: %S
-a11y.labels.value_property_in_selector=ערך תכונת %S עבור הבורר %S
-a11y.labels.css_selector=בורר CSS
-a11y.labels.source_code_for_file=קוד מקור עבור הקובץ %S
-a11y.labels.press_enter_to_add_new_watch_expression=נא ללחוץ אמטר כדי להוסיף ביטוי צפייה חדש
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-a11y.labels.overridden=דרוסה
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-a11y.updates.has_conditional_break_point=יש נקודת בלימה מותנית
-a11y.updates.has_disabled_break_point=יש נקודת בלימה כבויה
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-a11y.updates.script_suspended_on_line_in_file=תסריט מושהה בשורה %S בפונקציה %S בקובץ %S
-# Message logged into the Console panel when memory profiler session starts.
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-a11y.updates.match_found_in_logrows=נמצאה התאמה למחרוזת „%S” (מספר שורות: %S)
-# Message used within the Console panel when the memory profiler session is finished.
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=המצאה התאמה למחרוזת „%S” בשורה %S בקובץ %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=נמצאה התאמה למחרוזת „%S” במרכיב %S בנתיב %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=נמצאה התאמה למחרוזת „%S” במאפיין %S=%S במרכיב %S בנתיב %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=נמצאה התאמה למחרוזת „%S” בתוכן טקסט: %S של מרכיב %S בנתיב %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=נמצאה התאמה למחרוזת „%S” בבורר %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=נמצאה התאמה למחרוזת „%S” בהצהרת סגנון %S בבורר %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=נמצאה התאמה למחרוזת „%S” בתכונת ה־DOM %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=נמצאה התאמה למחרוזת „%S” בקובץ %S בעמודה %S: %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=נמצאה התאמה למחרוזת „%S” בשורת סיכום רשת: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=אין התאמה למחרוזת „%S”
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=האם באמת לשחזר את כל האפשרויות של פיירבאג למצב התחלתי?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=עריכות ה־CSS שלכם תיזרקנה.\\\\nהאם באמת לערוך את קוד המקור?
-# Console messages
-warning.Console_must_be_enabled=המסוף צריך להיות פעיל
-warning.Command_line_blocked?=האם שורת הפקודה חסומה?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=יש לרענן כדי להפעיל את מסוף החלון
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=יש לרענן את הדף כדי כדי לקבל את קוד המקור עבור
-message.The_resource_from_this_URL_is_not_text=המשאב בכתובת הזה אינו טקסט
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=חזרה לחלונית הזאת
-firebug.history.Stay_on_this_panel=להישאר בחלונית הזאת
-firebug.history.Go_forward_to_this_panel=להתקדם אל החלונית הזאת
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=ללכת חזרה
-firebug.history.Go_forward=ללכת קדימה
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=חלונית התסריטים לא הייתה פעילה בזמן הרענון
-script.suggestion.inactive_during_page_load2=יש <a>לרענן</a> כדי לראות את כל קוד המקור
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=JavaScript אינו פעיל
-script.suggestion.javascript_not_enabled=ר׳ אפשרויות > תוכן > הפעלת JavaScript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=יש להפעיל את JavaScript ולרענן
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=כל התסריטים סוננו
-script.suggestion.all_scripts_filtered=ר׳ את הגדרות מסנן תסריטים בסרגל החלונית או את האפשרות „הצגת קוד מקור של הממשק”
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=אין JavaScript בדף הזה
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=מנפה השגיאות כבר פעיל
-script.suggestion.debugger_active=מנפה השגיאות עצור בנקודת בלימה בדף אחר.
-script.button.Go_to_that_page=מעבר אל הדף
-script.warning.debugger_not_activated=מנפה השגיאות אינו פעיל
-script.suggestion.debugger_not_activated=מנפה השגיאות אינו מופעל
-# firebug.dtd
-firebug.Firebug=פיירבאג
-firebug.Close=סגירה
-firebug.View=תצוגה
-firebug.Help=עזרה
-firebug.Run=הרצה
-firebug.Copy=העתקה
-firebug.History=היסטוריה
-firebug.Run_the_entered_command=הרצת הפקודה שהוזנה
-firebug.Clear_the_Command_Editor=ניקוי עורך הפקודות
-firebug.Copy_the_script_as_a_bookmarklet=העתקת התסריט כסימנייה פעילה
-firebug.Insert_a_previously_entered_command=הכנסת פקודה שהוזנה קודם
-firebug.AlwaysOpenInWindow=תמיד לפתוח בחלון חדש
-firebug.OpenWith=פתיחה עם עורך
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=אתרים...
-firebug.Configure_Editors=הגדרת עורכים
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=ריצה לשורה הזאת
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=לחקור
-firebug.InspectElement=לחקור מרכיב
-firebug.InspectElementWithFirebug=לחקור מרכיב באמצעות פיירבאג
-firebug.BreakOnErrors=לבלום בשגיאות
-firebug.InspectTooltip=לחצו על מרכיב בדף כדי לחקור אותו
-firebug.EditHTMLTooltip=עריכת ה־HTML הזה
-firebug.Profile=פרופיל
-firebug.Clear=ניקוי
-firebug.ClearConsole=ניקוי מסוף
-firebug.ClearTooltip=ניקוי המסוף
-firebug.All=הכול
-firebug.Images=תמונות
-firebug.Flash=פלאש
-# editors.dtd
-editors.Configured_Firebug_Editors=עורכי פיירבאג מוגדרים
-editors.Editor=עורך
-editors.Executable=קובץ הרצה
-editors.Launch_Arguments=פרמטרים להרצה
-editors.Add=הוספה
-editors.Remove=הסרה
-editors.Change=שינוי
-editors.Move_Up=להזיז מעלה
-editors.Close=סגירה
-editors.Browse=עיון...
-changeEditor.Editor_Configuration=הגדרות עורך
-changeEditor.Name=שם:
-changeEditor.Executable=קובץ הרצה:
-changeEditor.CmdLine=פרמטרים:
-changeEditor.Supplied_arguments=פרמטרים שמספק פיירבאג:
-changeEditor.URL_of_file=URL של קובץ (אם %url אינו נמצא, יוסף %file לפי בררת המחדל)
-changeEditor.Path_to_local_file=נתיב לקובץ מקומי (או לעותק זמני)
-changeEditor.Line_number=מספר שורה (אם זמין)
-changeEditor.Invalid_Application_Path=נתיב יישום בלתי־תקין
-changeEditor.Application_does_not_exist=היישום שצוין אינו קיים!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=עריכה
-firebug.css.sourceEdit=עריכת קוד
-firebug.css.sourceEdit.tooltip=עריכת קוד מקור של גיליון סגנון כפי שנטען על־ידי הדפדפן
-firebug.css.liveEdit=עריכה חיה
-firebug.css.liveEdit.tooltip=עריכת CSS שחולץ מהדפדפן
-firebug.EditCSSTooltip=עריכת גיליון הסגנון הזה
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=אתרים אל נשמרים בזיכרון במצב גלישה פרטית
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=הצגת הודעות בלימה
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=אפשר לכבות ולהפעיל הודעות בלימה בתפריט הלשונית של החלונית
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=לחיצת הכפתור „כיבוי” עוקפת את ‚debugger’ עם נקודת בלימה כבויה.
-firebug.bon.tooltip.disableDebuggerKeyword2=יצירת נקודת בלימה כבויה
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(חלונית התסריט צריכה להיות מופעלת כדי להשתמש בתכונה הזאת)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=אין עצמי צאצא
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=עוד
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=פריט אחד באחסון;%1$S פריטים באחסון
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=תכונות עצם
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(אין השלמות)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=עצם ה־URL כנראה נשלל על־ידי השיטה revokeObjectURL.
-firebug.failedToPreviewImageURL=כשל בטעינת ה־URL שניתן.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=התחיל מודד הביצועים של הזיכרון.
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=עצמים שנוספו בזמן מדידת ביצועים
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=תוצאות של מדידת ביצועי זיכרון
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=כל המושב
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=פיירבאג
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=פיירבאג - %S
+# Panel titles
+Panel-console=מסוף
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=רשת
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=תסריט
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=סגנון
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=מחושב
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=עיצוב
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=מעקב
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=נקודות בלימה
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=מחסנית
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=תחום
+firebug.DetachFirebug=לפתוח את פיירבאג בחלון חדש
+firebug.AttachFirebug=להצמיד את פיירבאג לחלון דפדפן
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox status bar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=פיירבאג %1$S סך הכול;%1$S פיירבאגים סך הכול
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in \'list of all panels\'
+startbutton.tip.deactivated=Deactivated
+# menu (available on Firebug\'s tab bar).
+# Console panel options.
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+panel.status=%S: %S
+inBrowser=בדפדפן
+minimized=מוקטן
+enablement.for_all_pages=עבור כל הדפים
+enablement.on=מופעל
+enablement.off=כבוי
+enablement.Panel_activation_status=Panel activation status:
+none=סגור
+Firebug_-_inactive_for_current_website=פיירבאג - אינו פעיל עבור האתר הנוכחי
+Activate_Firebug_for_the_current_website=להפעיל את פיירבאג עבור האתר הנוכחי
+Minimized=מוקטן
+Minimize_Firebug=להקטין את פיירבאג
+On_for_all_web_pages=עבור כל דפי הווב
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=ניקוי רשימת ההפעלה
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=מיקום ממשק פיירבאג
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+firebug_options=העדפות פיירבאג
+# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+firebug.Show_All_Panels=הצגת כל החלוניות
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# clicked element in the DOM panel (tab).
+ShowJavaScriptErrors=הצגת שגיאות JavaScript
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=הצגת אזהרות JavaScript
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=הצגת שגיאות CSS
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=הצגת מעקב מחסנית עם שגיאות
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=הצגת XMLHttpRequest־ים
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=הצגת שגיאות מערכת ממשק
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=הצגת שגיאות מערכת ממשק
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=הצגת שגיאות חיצונית
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=הצגת שגיאות רשת
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=אזהרות אדוקות (הביצועים ייפגעו)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=היסטוריית פקודות
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=הצגת חלון קופץ עם רשימת השלמות
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=כשל וידוא
+# %S = Target panel title
+# examples: Inspect in DOM Tab
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+Line=%S (שורה %S)
+LineAndCol=%S (שורה %S, עמודה %S)
+InstanceLine=%S #%S (שורה %S)
+StackItem=%S (%S שורה %S)
+SystemItem=<מערכת>
+# HTML panel context menu items.
+# Quick Info Box
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(ללא שם)
+# LOCALIZATION NOTE (html.label.Expand/Contract_All): Used within the HTML for a context
+# menu item. The user can expand/contract the element together with all its children to
+# quickly see the entire hierarchical structure or collapse it.
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange): Used within the DOM panel to create
+# a \'property breakpoint\'. Right-click on an property of an object. The label is also
+# used for the \'break on next button\' (available on the toolbar).
+ShowFullText=הצגת טקסט מלא
+html.option.tip.Show_Full_Text=Don't crop element contents
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# \'break on next button\' in the case the option is activated
+# LOCALIZATION NOTE (EditAttribute): Menu item label used in HTML panel context menu. Allows
+ShowWhitespace=הצגת רווח לבן
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+ShowComments=הצגת הערות
+html.option.tip.Show_Comments=Show comment nodes
+# examples: Edit Attribute \"onclick\"...
+# LOCALIZATION NOTE (DeleteAttribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# %S = Name of the clicked attribute
+# examples: Delete Attribute \"onclick\"...
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+HighlightMutations=הדגשת שינויים
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+ExpandMutations=הרחבת שינויים
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+ScrollToMutations=גלילת השינויים לתצוגה
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# The text between <a> and </a> is displayed as a link.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+ShowQuickInfoBox=הצגת תיבת מידע מהיר
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# The text between <a> and </a> is displayed as a link.
+# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+ShadeBoxModel=הצללת דגם הקופסה
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=גלילה לתצוגה
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=מאפיין חדש
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=מחיקת מרכיב
+html.Delete_Element=Delete the element from the tree
+DeleteNode=מחיקת צומת
+html.Delete_Node=Delete the node from the tree
+# %S = Name of the clicked property
+quickInfo=מידע מהיר
+computedStyle=סגנון מחושב
+# examples: Edit \"background-color\"...
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+html.Break_On_Mutate=הפסקה בעת שינוי
+html.Disable_Break_On_Mutate=כיבוי הפסקה בעת שינוי
+html.label.Break_On_Text_Change=הפסקה בעת שינוי טקסט
+html.label.HTML_Breakpoints=נקודות בלימה ב־HTML
+html.label.Break_On_Attribute_Change=הפסקה בשינוי מאפיין
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=הפסקה בעת הוספה או הסרה של צאצא
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=הפסקה בעת הסרת מרכיב
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# %S = Name of the clicked property
+# examples: Disable \"background-color\"
+# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+html.label.Expand/Contract_All=הרחבה או צמצום של הכול
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# %S = Name of the clicked property
+# examples: Delete \"background-color\"
+# Console context menu labels.
+dom.label.breakOnPropertyChange=בלימה בעת שינוי תכונה
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# Breakpoints side panel
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+dom.disableBreakOnPropertyChange=כיבוי בלימה בעת שינוי תכונה
+dom.label.DOM_Breakpoints=נקודות בלימה של DOM
+# breakpoints.Enable_Breakpoint): Context menu item labels in the Breakpoints side panel.
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a \'debugger;\' keyword.
+EditAttribute=עריכת המאפיין \\\"%S\\\"...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current \'debugger;\' keyword used in the Javascript source
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.Collapse_All): Context menu item labels used in
+# Stack side panel (within Script panel)
+DeleteAttribute=מחיקת המאפיין \\\"%S\\\"...
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# Firebug needs to be halted at a breakpoint to see these items.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+InheritedFrom=מורש מ־
+SothinkWarning=הרחבת Sothink SWF Catcher מונעת מפיירבאג עבודה תקינה.<br><br>נא לקרוא את <a href=\\\"http://www.getfirebug.com/faq.html#Sothink\\\" target=\\\"_new\\\">הפריט הזה בשו\"ת של פיירבאג</a> לקבלת עזרה.
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab\'s option menu)
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789 שָׁפָן אָכַל קְצָת גֶּזֶר בְּטַעַם חַסָּה, וְדַי
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+css.EmptyStyleSheet=אין משפטים. אפשר <a>ליצור משפט</a>.
+# LOCALIZATION NOTE (ShowRulers): Label for context menu item.
+# Used in the Layout side panel (within HTML panel).
+# Net panel
+css.EmptyElementCSS=למרכיב הזה אין משפטי סגנון. אפשר ליצור <a>משפט סגנון</a> עבורו.
+EditStyle=עריכת סגנון מרכיב...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=משפט חדש...
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu within the Net panel
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=תכונה חדשה
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s context
+# menu for breaking on an XHR.
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+EditProp=עריכה \\\"%S\\\"...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# Net panel\'s Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+DisableProp=כיבוי \\\"%S\\\"
+css.tip.Disable_Prop=Disable the property "%S"
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+DeleteProp=מחיקת \\\"%S\\\"
+css.tip.Delete_Prop=Delete the property "%S"
+# when a Net panel entry is expanded)
+BreakOnThisError=בלימה בעת השגיאה הזאת
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=בלימה בעת כל שגיאה
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+TrackThrowCatch=מעקב Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=שימוש בשורת קוד מקור אחרונה עבור שמות eval()
+UseMD5ForEvalName=שימוש ב־MD5 עבור שמות eval()
+# in the Net & Console panel when copying JSON replies.
+Breakpoints=נקודות בלימה
+ErrorBreakpoints=נקודות בלימה עבור שגיאות
+LoggedFunctions=פונקציות שנרשמות ליומן
+EnableAllBreakpoints=הפעלת כל נקודות הבלימה
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=כיבוי כל נקודות הבלימה
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=הסרת כל נקודות הבלימה
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=הריצה תעצור בנקודת הבלימה הזאת רק אם ערך הביטוי הבא יהיה אמת:
+# %S = Part of the JSON, that was clicked
+# example: Copy \"person\" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders): Label (noun)
+breakpoints.Remove_Breakpoint=הסרת נקודת בלימה
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=כיבוי נקודת בלימה
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=הפעלת נקודת בלימה
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# used in the Net panel (displayed inside the Headers tab of a request).
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+script.balloon.Continue=להמשיך
+script.balloon.Disable=לכבות
+ScriptsFilterStatic=הצגת תסריטים סטטיים
+ScriptsFilterEval=הסגת תסריטים סטטיים ותסריטי eval
+ScriptsFilterEvent=הסגת תסריטים סטטיים ותסריטי אירוע
+ScriptsFilterAll=הסגת תסריטים סטטיים, תסריטי eval ותסריטי אירוע
+ScriptsFilterStaticShort=סטטיים
+ScriptsFilterEvalShort=eval
+ScriptsFilterEventShort=אירוע
+ScriptsFilterAllShort=הכול
+# example: Firebug\'s log limit has been reached. 150 entries not shown.
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+callstack.Expand_All=להרחיב הכול
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=לצמצם הכול
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# examples: In order to change the limit modify \'firebug.extensions.console.logLimit\'
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# (result of JavaScript profiler tool).
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+ShowUserProps=להציג תכונות מוגדרות על־ידי משתמש
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=להציג פונקציות מוגדרות על־ידי משתמש
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=להציג תכונות DOM
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=להציג פונקציות DOM
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=להציג קבועי DOM
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=להציג מטפלי אירועים מובנים
+ShowInlineEventHandlersTooltip=להציג מטפלי אירועים מובנים זמינים שאינם מזוהים עם פונקציה.
+ShowOwnProperties=להציג תכונות עצמיות בלבד
+ShowOwnPropertiesTooltip=לא להציג שרשרת אב־טיפוס
+ShowEnumerableProperties=להציג תכונות בנות־מנייה בלבד
+ShowEnumerablePropertiesTooltip=לא להציג תכונות שאינן בנות־מנייה
+NoMembersWarning=אין תכונות להצגה עבור העצם הזה.
+NewWatch=ביטוי צפייה חדש...
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+AddWatch=הוספת ביטוי צפייה
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+CopySourceCode=העתקת קוד מקור
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=הקלד #<מספר> למעבר אל שורה
+CopyValue=העתקת ערך
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=העתקת שם
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=העתקת נתיב
+dom.tip.Copy_Path=Copy the property path
+NewProperty=תכונה חדשה...
+EditProperty=עריכת תכונה...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=עריכת משתנה...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=עריכת ביטוי צפייה...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=מחיקת תכונה
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=מחיקת ביטוי צפייה
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+SetBreakpoint=הגדרת נקודת בלימה
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# Support for clipboard actions.
+# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Script
+# panel when clicking a function object.
+EditBreakpointCondition=עריכת תנאי נקודת בלימה...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=אין נקודות בלימה בדף הזה.
+# %S = Name of the function
+# example: Log Calls to \"getData\"
+# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): Tooltip used for a button on main
+Only_Show_Applied_Styles=להציג רק סגנונות מוּחלים
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+Show_User_Agent_CSS=להציג סגנונות של סוכן לקוח
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support \'bind\'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# %S = Name of the unsupported method
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the \"Break on... \" button used when the Console panel is selected.
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# in the Console panel
+# LOCALIZATION NOTE (console.Use_TAB_and_arrow_keys): Hint at the top of the Completion Popup
+# in the Command Line
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# JavaScript is not available
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# See \'extensions.firebug.multiHighlightLimit\' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+Expand_Shorthand_Properties=להרחיב תכונות מקוצרות
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. \'Total Sent\' and \'Total Received\' info includes
+Sort_alphabetically=מיון לפי אלף־בית
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# sent and received headers size.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+Show_Mozilla_specific_styles=הצגת סגנונות ייחודיים למוזילה
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# posted data reached Firebug\'s size limit and only part of it is displayed in the UI.
+# LOCALIZATION NOTE (net.xpy.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=לחץ על כל מקש למיון רשימה
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):
+# Labels for Net panel\'s options (located in tab\'s option menu)
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+LayoutPadding=דיפון (padding)
+LayoutBorder=גבול (border)
+LayoutMargin=שול (margin)
+LayoutPosition=מיקום (position)
+LayoutAdjacent=צמוד
+position=מיקום (position)
+# Net panel\'s option. If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+ShowRulers=הצגת סרגלים ומדריכים
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# (breaking on next executed JavaScript statement)
+Loading=טעינה...
+Headers=כותרות
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+net.tip.Clear=Clear the request list
+# %1 = Number of requests
+# example: 21 requests
+net.header.Reset_Header=אתחול כותרת
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+net.header.URL=URL
+net.header.URL_Tooltip=URL מבוקש ושיטת HTTP שנעשה בה שימוש.
+net.header.Status=מצב
+net.header.Status_Tooltip=מצב התשובה שהתקבלה.
+net.header.Domain=מתחם
+net.header.Domain_Tooltip=מתחם הבקשה שהתבצעה.
+net.header.Size=גודל
+net.header.Size_Tooltip=גודל התשובה שהתקבלה.
+net.header.Timeline=ציר זמן
+net.header.Timeline_Tooltip=מידע מפורט על מסלול הלוך וחזור של בקשה ותשובה.
+net.header.Local_IP=כתובת IP מקומית
+net.header.Local_IP_Tooltip=כתובת IP מקומית ומספר פתחה שהבקשה מיועדת אליה.
+net.header.Remote_IP=כתובת IP מרוחקת
+net.header.Remote_IP_Tooltip=כתובת IP מרוחקת ומספר פתחה שהבקשה מיועדת אליה.
+net.header.Protocol=פרוטוקול
+net.header.Protocol_Tooltip=פרוטוקול URL שישמש לאיתור משאב בווב.
+# With: the scope inside of the with(obj) {} statement
+net.label.XHR_Breakpoints=נקודות בלימה של XHR
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+# Window: the scope inside of a Javascript window object.
+net.label.Break_On_XHR=בלימה ב־XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+net.headers.view_source=הצגת קוד מקור
+net.headers.pretty_print=הדפסה יפה
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+net.filter.Media=מדיה
+# waterfall graph in the Net panel.
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+Post=Post
+Put=Put
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+Response=תשובה (Response)
+URLParameters=פרמפטרים (Params)
+Cache=מטמון (Cache)
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=מידע כללי
+fontviewer.Meta_Data=מטא־נתונים
+fontviewer.view_source=הצגת קוד מקור
+fontviewer.Preview=תצוגה מקדימה
+fontviewer.view_characters=הצגת תווים
+fontviewer.pretty_print=הדפסה יפה
+fontviewer.view_sample=הצגת דוגמה
+fontviewer.uniqueid=מזהה ייחודי
+fontviewer.vendor=ספק (Vendor)
+fontviewer.license=רישיון
+fontviewer.description=תיאור
+fontviewer.copyright=זכויות יוצרים
+fontviewer.credits=קרדיטים
+fontviewer.trademark=סימן מסחרי
+fontviewer.licensee=בעל הרישיון
+fontviewer.extension=הרחבה (Extension)
+fontviewer.pangram=The quick brown fox jumps over the lazy dog. שָׁפָן אָכַל קְצָת גֶּזֶר בְּטַעַם חַסָּה, וְדַי
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+jsonviewer.sort=מיון לפי מפתח
+jsonviewer.do_not_sort=לא למיין
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+# A11y Chrome Labels (not visible, spoken by screen readers)
+# A11y panelNode labels (not visible, spoken by screen readers)
+net.jsonviewer.Copy_JSON=להעתיק את „%S” בתור JSON
+# A11y Domplate labels (not visible, spoken by screen readers)
+# LOCALIZATION NOTE:
+RequestHeaders=כותרות בקשה
+ResponseHeaders=כותרות תשובה
+CachedResponseHeaders=כותרות תשובות ממטמון
+PostRequestHeaders=Request Headers From Upload Stream
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+# LOCALIZATION NOTE (a11y.labels.overridden):
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+plural.Limit_Exceeded2=פיירבאג הגיע למגבלה של יומנים. עיול אחד אינו מוצג.;פיירבאג הגיע למגבלה של יומנים. %1$S עיולים אינם מוצגים.
+LimitPrefs=העדפות
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+LimitPrefsTitle=כדי לשנות את המגבלה, יש לשנות את ‚%S’
+Refresh=רענון
+panel.tip.Refresh=Refresh the panel display
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+OpenInTab=פתיחה בלשונית חדשה
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=פתיחת תשובה בלשונית חדשה
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for \"test\" in 17 log rows
+Profile=פרופיל
+ProfilerStarted=הפרופיילר רץ. לחץ „פרופיל” להצגת הדו״ח שלו.
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for \"window.alert\" on line 322 in utilities.js
+plural.Profile_Time2=(%1$S מ״ש, קריאה אחת);(%1$S מ״ש, %2$S קריאות)
+NothingToProfile=אין פעילות שאפשר לעשות לה פרופיילינג.
+PercentTooltip=אחוז הזמן שהושקע בפונקציה הזאת.
+CallsHeaderTooltip=מספר הפעמים שהפונקציה נקראה.
+OwnTimeHeaderTooltip=הזמן שהועבר בפונקציה, ללא קריאות מקוננות.
+TimeHeaderTooltip=הזמן שהועבר בפונקציה, כולל קריאות מקוננות.
+AvgHeaderTooltip=זמן ממוצע, כולל קריאות לפונקציות.
+MinHeaderTooltip=זמן מזערי, כולל קריאות לפונקציות.
+MaxHeaderTooltip=זמן מרבי, כולל קריאות לפונקציות.
+ProfileButton.Enabled.Tooltip=פרופיילינג לזמן ביצוע של JavaScript.
+ProfileButton.Disabled.Tooltip=פרופיילינג לזמן ביצוע של JavaScript (חלונית תסריטים צריכה להיות מופעלת).
+Function=פונקציה
+Percent=אחוז
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+Calls=קריאות
+OwnTime=זמן עצמי
+Time=זמן
+Avg=ממוצע
+Min=מזערי
+Max=מרבי
+File=קובץ
+# example: Match found for \"obj\" in object element at /html/body/object[2]
+Copy=העתקה
+Cut=גזירה
+Remove=הסרה
+Delete=Delete
+Paste=הדבקה
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=העתקת innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=העתקתת XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=העתקת CSS Path
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+CopyLocation=העקת מיקום
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=העתקת מיקום עם פרמטרים
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=העתקת כותרות בקשה
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=העתקת כותרות תשובה
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=העתקת גוף תשובה
+net.tip.Copy_Response=Copy the response body to the clipboard
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+CopyError=העתקת שגיאה
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for \"abindex\" in tabindex=\"0\" in span element at /html/body/span[2]
+CopySource=העתקת פונקציה
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents)
+# first %S = Matched search string, second %S = Element\'s text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+ShowCallsInConsole=רישום ביומן של קריאות ל־„%S”
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# example: Match found for \"Firebug Rocks!\" in h2 element at /html/body/h2[2]
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+ShowEventsInConsole=רישום אירועים ביומן
+html.tip.Show_Events_In_Console=Log event information to the console
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+panel.Enabled=מופעל
+panel.tip.Enabled=Toggle the panel activation
+# example: Match found for \"main\" in #mainContent h2 {
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {
+console.MethodNotSupported=מסוף פיירבאג אינו תומך ב־‚%S’
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+commandline.MethodNotSupported=שורת פקודה של פיירבאג אינה תומכת ב־‚%S’
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for \"time\" in DOM property _starttime
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+commandline.CurrentWindow=Current window:
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+console.Disable_Break_On_All_Errors=כיבוי בלימה בעת כל שגיאה
+console.Break_On_All_Errors=בלימה בעת כל שגיאה
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+console.Break_On_This_Error=בלימה בשגיאה הזאת
+# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 ms
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+console.JSDisabledInFirefoxPrefs=JavaScript מכובה בהעדפות פיירפוקס שלך. אם ברצונך להשתמש במסוף, נא להדליק את האפשרות הזאת באפשרויות > תוכן > הפעלת JavaScript
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for \"05\" in net summary row: 4.05s
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for \"wefkhwefkgwekhjgjh\"
+console.multiHighlightLimitExceeded=יש יותר מדי איברים במערך שאפשר להבליט בדף (המגבלה הנוכחית היא %S).\\\\nר׳ את ההעדפה ‚extensions.firebug.multiHighlightLimit’.
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+commandline.disabledForXMLDocs=שורת הפקודה של פיירבאג כבויה עבור דפי XML. אפשר <a>לעבור ל־HTML</a> כדי להפעיל אותה.
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+# Console messages
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can\'t be displayed
+net.sizeinfo.Response_Body=גוף התשובה.
+net.sizeinfo.Post_Body=גוף ה־Post
+net.sizeinfo.Total_Sent=נשלח סך הכול
+net.sizeinfo.Total_Received=התקבל סך הכול
+net.sizeinfo.Including_HTTP_Headers=כולל כותרות HTTP
+net.ActivationMessage=הופעלה חלונית רשת. כל הבקשות מהזמן שהחלונית אינה פעילה אינן מוצגות.
+net.responseSizeLimitMessage=פיירבאג הגיע למגבלה של גודל התשובה. יש ללחוץ <a>כאן</a> כדי לפתוח את כל התשובה בלשונית חדשה של פיירפוקס.
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+net.postDataSizeLimitMessage=פיירבאג הגיע למגבלה בגודל הבקשה.
+net.Break_On_XHR=בלימה ב־XHR
+net.label.Parameters=פרמטרים
+net.label.Parts=חלקים
+net.label.Source=מקור
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+net.label.Resend=שליחה מחדש
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+net.option.Disable_Browser_Cache=כיבוי מטמון דפדפן
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+net.option.Show_Paint_Events=הצגת אירועי ציור
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+net.option.Show_BFCache_Responses=הצגת תשובות BFCache
+net.option.tip.Show_BFCache_Responses=גם תשובות מאת Back-Forward Cache תוצגנה
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+script.Break_On_Next=בלימה בפעולה הבאה
+script.Disable_Break_On_Next=כיבוי בלימה בפעולה הבאה
+ShowHttpHeaders=הצגת כותרות HTTP
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
+# Message displayed in the Script panel, if the page doesn\'t include any JavaScript.
+plural.Request_Count2=בקשה אחת;%1$S בקשות
+FromCache=ממטמון
+StopLoading=הפסקת הטעינה
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(נתונים גדולית מאוד)
+ShowComputedStyle=הצגת סגנון מחושב
+StyleGroup-text=טקסט
+StyleGroup-background=רקע
+StyleGroup-box=דגם קופסה
+StyleGroup-layout=עימוד
+StyleGroup-other=אחר
+Dimensions=%S × %S
+# The suggestion message represents an advice how to solve the problem.
+# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+CopyColor=העתקת צבע
+css.tip.Copy_Color=Copy the color to the clipboard
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+# firebug.dtd
+# LOCALIZATION NOTE (firebug.Rerun, firebug.Continue, firebug.StepOver, firebug.StepInto,
+CopyImageLocation=העתקת מיקום תמונה
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=פתיחת תמונה בלשונית חדשה
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# firebug.StepOut, firebug.RunUntil)
+# Labels used for debugger options available in the Script panel.
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+OmitObjectPathStack=השמטת מחסנית סרגל כלים
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=טעינת הקוד המקורי
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own \"Inspect Element\"
+# Firebug should start using \"Inspect Element with Firebug\" to distinguish itself.
+Copy_Rule_Declaration=העתקת הצהרת משפטים
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# editors.dtd
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+Copy_Style_Declaration=העתקת הצהרת סגנון
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# Used in the CSS panel for the Edit button.
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it\'s \'Start Private Browsing\')
+plural.Error_Count2=שגיאה אחת;%1$S שגיאות
+moduleManager.title=חלונית %S כבויה
+moduleManager.desc3=שימוש בסמל סרגל מצב של פיירבאג כדי להפעיל או לכבות את כל החלוניות בבת אחת. אפשר לשלוט פרטנית בכל חלונית באמצעות תפריט לשונית בכל חלונית.
+moduleManager.Enable=הפעלה
+Suspend_Firebug=השהיית פיירבאג
+Resume_Firebug=המשך עבודה עם פיירבאג
+Reset_Panels_To_Disabled=אתחול חלוניות למצב כבוי
+Open_Console=פתיחת מסוף
+Open_Console_Tooltip=פתיחת מסוף מעקב לפיירבאג.
+Scope_Chain=שרשרת תחום
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel\'s options menu. Represents an option, that can be used
+# to switch of the break notifications.
+With_Scope=עם
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+Call_Scope=קריאה
+# Message displayed in a break notification popup next to a checkbox.
+Window_Scope=חלון
+Logs=יומנים
+Options=אפשרויות
+Copy_Stack=העתקת מחסנית
+Copy Exception=העתקת חריג
+# Includes a link enclosed in <a> and </a> to open the panel\'s options menu.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+requestinfo.Blocking=חסימה
+requestinfo.Resolving=חיפוש ב־DNS
+requestinfo.Connecting=התחברות
+requestinfo.Sending=שליחה
+requestinfo.Waiting=המתנה
+requestinfo.Receiving=קבלה
+requestinfo.ContentLoad=‚DOMContentLoaded’ (אירוע)
+requestinfo.WindowLoad=‚load’ (אירוע)
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by \'Break On Next\' button
+# This feature needs the Script panel enabled in order to work.
+requestinfo.started.label=זמן תחילת בקשה מאז ההתחלה
+requestinfo.phases.label=זמנים של התחלה ומשך של שלבי הבקשה ביחס לתחילת הבקשה:
+requestinfo.timings.label=תזמון אירועים ביחס לתחילת הבקשה:
+search.Firebug_Search=חיפוש פיירבאג
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+search.Next=הבא
+search.tip.Next=Search for the next match
+search.Previous=הקודם
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=תלוי רישיות
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=לא תלוי רישיות
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=קבצים מרובים
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=להשתמש בביטוי רגולרי
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. \"...\" is automatically appended.
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+search.html.CSS_Selector=בורר CSS
+search.net.Headers=כותרות
+search.net.Parameters=פרמטרים
+search.net.Response_Bodies=גופי תשובה
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=השארה
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=להציג את כל עיולי היומן
+firebug.console.Errors=שגיאות
+firebug.console.Filter_by_Errors=סינון לפי שגיאות
+firebug.console.Warnings=אזהרות
+firebug.console.Filter_by_Warnings=סינון לפי אהזרות
+firebug.console.Info=מידע
+firebug.console.Filter_by_Info=סינון לפי מידע
+firebug.console.Debug_Info=מידע לניפוי שגיאות
+firebug.console.Filter_by_Debug_Info=סינון לפי מידע לניפוי שגיאות
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=פתיחת פיירבאג
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=הסתרת פיירבאג
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=הפעלת כל החלוניות
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=כיבוי כל החלוניות
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=התאמה אישית של קיצורי דרך
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=אפשרויות
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=הפעלת הרחבות נגישות
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=אתחול כל אפשרויות פיירבאג
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=פיירבאג ברשת
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=הצגת מספר השגיאות
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=גודל טקסט
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=הגדלת טקסט
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=הקטנת טקסט
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=גודל טקסט רגיל
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=אתר פיירבאג...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=תיעוד...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=קיצורי מקשים...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=קבוצת דיון...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=מערכת מעקב בעיות...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=לתרום...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=אודות...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=חיפוש
+firebug.menu.tip.Search=Set focus to the search field
+# It\'s informing the user about the number of items in the storage.
+firebug.shortcut.reenterCommand.label=הזנה מחדש של פקודה
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=הפעלת בחינה
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=הפעלת תיבת מידע מהיר
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=הפעלת פרופיילינג
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=התמקדות בשורת פקודה
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=התמקדות בחיפוש פיירבאג
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=התמקדות בעורך ערכי צפייה
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=התמקדות במיקום
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=העצם הבא
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=העצם הקודם
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=התאמה אישית של מקשי פיירבאג
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=פתיחת פיירבאג בחלון חדש
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=מעבר לחלונית פיירבאג הימנית
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=מעבר לחלונית פיירבאג השמאלית
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=פתיחת פיירבאג
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=לשונית פיירבאג קודמת
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=ניקוי מסוף
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=פתיחת מסוף מעקב
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=חזרה
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=קדימה
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=הגדלת טקסט
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=הקטנת טקסט
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=גודל טקסט רגיל
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=בחירת חלונית
+customizeShortcuts=שיוך קיצורי דרך של פיירבאג
+# %1 = Number of storage items
+a11y.labels.panel_tools=כלי חלונית
+a11y.labels.firebug_panels=חלוניות פיירבאג
+a11y.labels.firebug_side_panels=חלוניות צד של פיירבאג
+a11y.labels.firebug_window=חלון פיירבאג
+a11y.labels.firebug_status=מצב פיירבאג
+a11y.labels.reset=אתחול
+a11y.labels.reset_shortcut=אתחול קיצור הדרך %S
+aria.labels.inactive_panel=חלונית לא פעילה
+# example: 1 item in Storage
+a11y.labels.log_rows=שורות יומן
+a11y.labels.call_stack=מחסנית קריאה
+a11y.labels.document_structure=מבנה מסמך
+a11y.labels.title_panel=חלונית %S
+a11y.labels.title_side_panel=חלונית צד %S
+a11y.labels.cached=מוטמן
+aria.labels.stack_trace=מעקב מחסנית
+# example: 2 items in Storage
+a11y.layout.padding=דיפון (padding)
+a11y.layout.border=גבול (border)
+a11y.layout.margin=שול (margin)
+a11y.layout.position=מיקום (position)
+a11y.layout.position_top=מיקום עליון
+a11y.layout.position_right=מיקום ימני
+a11y.layout.position_bottom=מיקום תחתון
+a11y.layout.position_left=מיקום שמאלי
+a11y.layout.margin_top=שול עליון
+a11y.layout.margin_right=שול ימני
+a11y.layout.margin_bottom=שול תחתון
+a11y.layout.margin_left=שול שמאלי
+a11y.layout.border_top=גבול עליון
+a11y.layout.border_right=גבול ימני
+a11y.layout.border_bottom=גבול תחתון
+a11y.layout.border_left=גבול שמאלי
+a11y.layout.padding_top=דיפון עליון
+a11y.layout.padding_right=דיפון ימני
+a11y.layout.padding_bottom=דיפון תחתי
+a11y.layout.padding_left=דיפון שמאלי
+a11y.layout.top=למעלה
+a11y.layout.right=ימין
+a11y.layout.bottom=למטה
+a11y.layout.left=שמאל
+a11y.layout.width=רוחב
+a11y.layout.height=גובה
+a11y.layout.size=ודל
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=קביעת גודל קופסה
+a11y.layout.clientBoundingRect=ריבוע מגביל בלקוח
+a11y.descriptions.press_enter_to_edit_values=לחצו על אנטר ועל טאב לעריכת ערכים בודדים
+a11y.labels.style_rules=משפטי סגנון
+aria.labels.inherited_style_rules=משפטי סגנון מורָשים
+a11y.labels.computed_styles=סגנונות מחושבים
+a11y.labels.dom_properties=תכונות DOM
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+a11y.labels.inline_editor=עורך טקסט פנימי
+a11y.labels.value_for_attribute_in_element=ערך למאפיין %S במרכיב %S
+a11y.labels.attribute_for_element=מאפיין למרכיב %S
+a11y.labels.text_contents_for_element=תוכן טקסט של המרכיב %S
+a11y.labels.defined_in_file=מוגדר בקובץ %S
+a11y.labels.declarations_for_selector=הצהרות סגנון עבור הבורר „%S”
+a11y.labels.property_for_selector=תכונת CSS עבור הבורר: %S
+a11y.labels.value_property_in_selector=ערך תכונת %S עבור הבורר %S
+a11y.labels.css_selector=בורר CSS
+a11y.labels.source_code_for_file=קוד מקור עבור הקובץ %S
+a11y.labels.press_enter_to_add_new_watch_expression=נא ללחוץ אמטר כדי להוסיף ביטוי צפייה חדש
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+a11y.labels.overridden=דרוסה
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+a11y.updates.has_conditional_break_point=יש נקודת בלימה מותנית
+a11y.updates.has_disabled_break_point=יש נקודת בלימה כבויה
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+a11y.updates.script_suspended_on_line_in_file=תסריט מושהה בשורה %S בפונקציה %S בקובץ %S
+# Message logged into the Console panel when memory profiler session starts.
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+a11y.updates.match_found_in_logrows=נמצאה התאמה למחרוזת „%S” (מספר שורות: %S)
+# Message used within the Console panel when the memory profiler session is finished.
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=המצאה התאמה למחרוזת „%S” בשורה %S בקובץ %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=נמצאה התאמה למחרוזת „%S” במרכיב %S בנתיב %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=נמצאה התאמה למחרוזת „%S” במאפיין %S=%S במרכיב %S בנתיב %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=נמצאה התאמה למחרוזת „%S” בתוכן טקסט: %S של מרכיב %S בנתיב %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=נמצאה התאמה למחרוזת „%S” בבורר %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=נמצאה התאמה למחרוזת „%S” בהצהרת סגנון %S בבורר %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=נמצאה התאמה למחרוזת „%S” בתכונת ה־DOM %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=נמצאה התאמה למחרוזת „%S” בקובץ %S בעמודה %S: %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=נמצאה התאמה למחרוזת „%S” בשורת סיכום רשת: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=אין התאמה למחרוזת „%S”
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=האם באמת לשחזר את כל האפשרויות של פיירבאג למצב התחלתי?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=עריכות ה־CSS שלכם תיזרקנה.\\\\nהאם באמת לערוך את קוד המקור?
+# Console messages
+warning.Console_must_be_enabled=המסוף צריך להיות פעיל
+warning.Command_line_blocked?=האם שורת הפקודה חסומה?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=יש לרענן כדי להפעיל את מסוף החלון
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=יש לרענן את הדף כדי כדי לקבל את קוד המקור עבור
+message.The_resource_from_this_URL_is_not_text=המשאב בכתובת הזה אינו טקסט
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=חזרה לחלונית הזאת
+firebug.history.Stay_on_this_panel=להישאר בחלונית הזאת
+firebug.history.Go_forward_to_this_panel=להתקדם אל החלונית הזאת
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=ללכת חזרה
+firebug.history.Go_forward=ללכת קדימה
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=חלונית התסריטים לא הייתה פעילה בזמן הרענון
+script.suggestion.inactive_during_page_load2=יש <a>לרענן</a> כדי לראות את כל קוד המקור
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=JavaScript אינו פעיל
+script.suggestion.javascript_not_enabled=ר׳ אפשרויות > תוכן > הפעלת JavaScript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=יש להפעיל את JavaScript ולרענן
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=כל התסריטים סוננו
+script.suggestion.all_scripts_filtered=ר׳ את הגדרות מסנן תסריטים בסרגל החלונית או את האפשרות „הצגת קוד מקור של הממשק”
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=אין JavaScript בדף הזה
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=מנפה השגיאות כבר פעיל
+script.suggestion.debugger_active=מנפה השגיאות עצור בנקודת בלימה בדף אחר.
+script.button.Go_to_that_page=מעבר אל הדף
+script.warning.debugger_not_activated=מנפה השגיאות אינו פעיל
+script.suggestion.debugger_not_activated=מנפה השגיאות אינו מופעל
+# firebug.dtd
+firebug.Firebug=פיירבאג
+firebug.Close=סגירה
+firebug.View=תצוגה
+firebug.Help=עזרה
+firebug.Run=הרצה
+firebug.Copy=העתקה
+firebug.History=היסטוריה
+firebug.Run_the_entered_command=הרצת הפקודה שהוזנה
+firebug.Clear_the_Command_Editor=ניקוי עורך הפקודות
+firebug.Copy_the_script_as_a_bookmarklet=העתקת התסריט כסימנייה פעילה
+firebug.Insert_a_previously_entered_command=הכנסת פקודה שהוזנה קודם
+firebug.AlwaysOpenInWindow=תמיד לפתוח בחלון חדש
+firebug.OpenWith=פתיחה עם עורך
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=אתרים...
+firebug.Configure_Editors=הגדרת עורכים
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=ריצה לשורה הזאת
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=לחקור
+firebug.InspectElement=לחקור מרכיב
+firebug.InspectElementWithFirebug=לחקור מרכיב באמצעות פיירבאג
+firebug.BreakOnErrors=לבלום בשגיאות
+firebug.InspectTooltip=לחצו על מרכיב בדף כדי לחקור אותו
+firebug.EditHTMLTooltip=עריכת ה־HTML הזה
+firebug.Profile=פרופיל
+firebug.Clear=ניקוי
+firebug.ClearConsole=ניקוי מסוף
+firebug.ClearTooltip=ניקוי המסוף
+firebug.All=הכול
+firebug.Images=תמונות
+firebug.Flash=פלאש
+# editors.dtd
+editors.Configured_Firebug_Editors=עורכי פיירבאג מוגדרים
+editors.Editor=עורך
+editors.Executable=קובץ הרצה
+editors.Launch_Arguments=פרמטרים להרצה
+editors.Add=הוספה
+editors.Remove=הסרה
+editors.Change=שינוי
+editors.Move_Up=להזיז מעלה
+editors.Close=סגירה
+editors.Browse=עיון...
+changeEditor.Editor_Configuration=הגדרות עורך
+changeEditor.Name=שם:
+changeEditor.Executable=קובץ הרצה:
+changeEditor.CmdLine=פרמטרים:
+changeEditor.Supplied_arguments=פרמטרים שמספק פיירבאג:
+changeEditor.URL_of_file=URL של קובץ (אם %url אינו נמצא, יוסף %file לפי בררת המחדל)
+changeEditor.Path_to_local_file=נתיב לקובץ מקומי (או לעותק זמני)
+changeEditor.Line_number=מספר שורה (אם זמין)
+changeEditor.Invalid_Application_Path=נתיב יישום בלתי־תקין
+changeEditor.Application_does_not_exist=היישום שצוין אינו קיים!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=עריכה
+firebug.css.sourceEdit=עריכת קוד
+firebug.css.sourceEdit.tooltip=עריכת קוד מקור של גיליון סגנון כפי שנטען על־ידי הדפדפן
+firebug.css.liveEdit=עריכה חיה
+firebug.css.liveEdit.tooltip=עריכת CSS שחולץ מהדפדפן
+firebug.EditCSSTooltip=עריכת גיליון הסגנון הזה
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=אתרים אל נשמרים בזיכרון במצב גלישה פרטית
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=הצגת הודעות בלימה
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=אפשר לכבות ולהפעיל הודעות בלימה בתפריט הלשונית של החלונית
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=לחיצת הכפתור „כיבוי” עוקפת את ‚debugger’ עם נקודת בלימה כבויה.
+firebug.bon.tooltip.disableDebuggerKeyword2=יצירת נקודת בלימה כבויה
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(חלונית התסריט צריכה להיות מופעלת כדי להשתמש בתכונה הזאת)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=אין עצמי צאצא
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=עוד
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=פריט אחד באחסון;%1$S פריטים באחסון
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=תכונות עצם
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(אין השלמות)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=עצם ה־URL כנראה נשלל על־ידי השיטה revokeObjectURL.
+firebug.failedToPreviewImageURL=כשל בטעינת ה־URL שניתן.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=התחיל מודד הביצועים של הזיכרון.
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=עצמים שנוספו בזמן מדידת ביצועים
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=תוצאות של מדידת ביצועי זיכרון
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=כל המושב
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/hr-HR/cookies.properties b/locale/hr-HR/cookies.properties
index 66695d4..ec60718 100644
--- a/locale/hr-HR/cookies.properties
+++ b/locale/hr-HR/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Session
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Accept Cookies From Sites
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Clear cookies when denying
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cut
-cookies.Copy=Copy
-cookies.CopyAll=Copy All
-cookies.Paste=Paste
-cookies.Delete=Delete
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Edit
-cookies.Accept=Accept
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reset Header
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
-cookies.ExceptionsTitle=Exceptions - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support for Cookie Monitoring
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=Disable Cookies panel for %S
-cookies.Permissions=Enable or Disable Cookies panel
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=System Pages
-cookies.LocalFiles=Local Files
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Do you want to remove all cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remove all cookies in the list.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Create a new cookie for %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Value
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Manage cookie permissions for %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=All cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejected:
-cookies.console.nocookiesreceived=No cookies received
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=deleted
-cookies.console.added=added
-cookies.console.changed=changed
-cookies.console.cleared=cleared
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domain
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Secure
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Value
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Default (Accept session cookies)
-cookies.default.thirdPartySession=Default (Accept session cookies)
-cookies.default.thirdParty=Default (Accept cookies)
-cookies.default.allow=Default (Accept cookies)
-cookies.default.deny=Default (Deny cookies)
-cookies.default.warn=Default (Warn before accepting cookie)
-cookies.host.session=Accept session cookies from %S
-cookies.host.accept=Accept cookies from %S
-cookies.host.reject=Deny cookies from %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie name is not valid.
-cookies.edit.invalidhost=Cookie host is not valid.
-cookies.edit.invalidpath=Cookie path is not valid.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Name
-cookies.header.value=Value
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domain
-cookies.header.size=Size
-cookies.header.path=Path
-cookies.header.expires=Expires
-cookies.header.security=Security
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Name of the cookie
-cookies.header.value.tooltip=Value stored for the cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domain that has stored the cookie
-cookies.header.size.tooltip=Size of the stored cookie
-cookies.header.path.tooltip=Directory where the cookie is active
-cookies.header.expires.tooltip=Expiration date for the cookie
-cookies.header.security.tooltip=Shows whether it is a secure cookie or not
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Received Cookies
-cookies.netinfo.Sent_Cookies=Sent Cookies
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Path Filter
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Export All Cookies
-cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
-cookies.export.Export_For_Site=Export Cookies For This Site
-cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Remove Cookies
-cookies.Create=Create Cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Tools
-cookies.ToolsTooltip=Tools
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Show All Cookies
-cookies.ViewAllTooltip=Open the built-in Cookie Manager
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Web Sites Permissions
-cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filter
-cookies.FilterTooltip=Use given options to filter the cookie list.
-cookies.filter.byPath=Filter Cookies By Current Path
-cookies.filter.byPathTooltip=Show only cookies that match the current path.
-cookies.filter.showRejectedCookies=Show Rejected Cookies
-cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Edit Cookie
-cookies.edit.name.label=Name:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Path:
-cookies.edit.expire.label=Expires:
-cookies.edit.value.label=Value:
-cookies.edit.secure.label=Secure Cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Session
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Accept Cookies From Sites
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Clear cookies when denying
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cut
+cookies.Copy=Copy
+cookies.CopyAll=Copy All
+cookies.Paste=Paste
+cookies.Delete=Delete
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Edit
+cookies.Accept=Accept
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reset Header
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
+cookies.ExceptionsTitle=Exceptions - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support for Cookie Monitoring
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=Disable Cookies panel for %S
+cookies.Permissions=Enable or Disable Cookies panel
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=System Pages
+cookies.LocalFiles=Local Files
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Do you want to remove all cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remove all cookies in the list.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Create a new cookie for %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Value
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Manage cookie permissions for %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=All cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejected:
+cookies.console.nocookiesreceived=No cookies received
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=deleted
+cookies.console.added=added
+cookies.console.changed=changed
+cookies.console.cleared=cleared
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domain
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Secure
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Value
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Default (Accept session cookies)
+cookies.default.thirdPartySession=Default (Accept session cookies)
+cookies.default.thirdParty=Default (Accept cookies)
+cookies.default.allow=Default (Accept cookies)
+cookies.default.deny=Default (Deny cookies)
+cookies.default.warn=Default (Warn before accepting cookie)
+cookies.host.session=Accept session cookies from %S
+cookies.host.accept=Accept cookies from %S
+cookies.host.reject=Deny cookies from %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie name is not valid.
+cookies.edit.invalidhost=Cookie host is not valid.
+cookies.edit.invalidpath=Cookie path is not valid.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Name
+cookies.header.value=Value
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domain
+cookies.header.size=Size
+cookies.header.path=Path
+cookies.header.expires=Expires
+cookies.header.security=Security
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Name of the cookie
+cookies.header.value.tooltip=Value stored for the cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domain that has stored the cookie
+cookies.header.size.tooltip=Size of the stored cookie
+cookies.header.path.tooltip=Directory where the cookie is active
+cookies.header.expires.tooltip=Expiration date for the cookie
+cookies.header.security.tooltip=Shows whether it is a secure cookie or not
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Received Cookies
+cookies.netinfo.Sent_Cookies=Sent Cookies
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Path Filter
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Export All Cookies
+cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
+cookies.export.Export_For_Site=Export Cookies For This Site
+cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Remove Cookies
+cookies.Create=Create Cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Tools
+cookies.ToolsTooltip=Tools
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Show All Cookies
+cookies.ViewAllTooltip=Open the built-in Cookie Manager
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Web Sites Permissions
+cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filter
+cookies.FilterTooltip=Use given options to filter the cookie list.
+cookies.filter.byPath=Filter Cookies By Current Path
+cookies.filter.byPathTooltip=Show only cookies that match the current path.
+cookies.filter.showRejectedCookies=Show Rejected Cookies
+cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Edit Cookie
+cookies.edit.name.label=Name:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Path:
+cookies.edit.expire.label=Expires:
+cookies.edit.value.label=Value:
+cookies.edit.secure.label=Secure Cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/hr-HR/firebug-amo.properties b/locale/hr-HR/firebug-amo.properties
index f52bcb7..a53d61f 100644
--- a/locale/hr-HR/firebug-amo.properties
+++ b/locale/hr-HR/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):n\n
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843n\n
-# They are not direct part of Firebug extension and so, you can\'t see them in Firebug\'s UI.n\n
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
-firebug.amo.description=Firebug se integrira sa Firefoxom the dovodi alate za programiranje do vas. Mozez mijenjati CSS, HTML, and JavaScript uzivo na svakoj stranici.\\n\\nPosijetite Firbug stranicu za dokumentaciju i forume: http://getfirebug.com
-firebug.amo.developer.comments=Ako imate nekih problema procitajte FireBug CPP.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):n\n
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843n\n
+# They are not direct part of Firebug extension and so, you can\'t see them in Firebug\'s UI.n\n
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
+firebug.amo.description=Firebug se integrira sa Firefoxom the dovodi alate za programiranje do vas. Mozez mijenjati CSS, HTML, and JavaScript uzivo na svakoj stranici.\\n\\nPosijetite Firbug stranicu za dokumentaciju i forume: http://getfirebug.com
+firebug.amo.developer.comments=Ako imate nekih problema procitajte FireBug CPP.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/hr-HR/firebug-tracing.properties b/locale/hr-HR/firebug-tracing.properties
index 12a48db..ee7d604 100644
--- a/locale/hr-HR/firebug-tracing.properties
+++ b/locale/hr-HR/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):n\n
-# Firebug tracing console menu items (located in Firebug\'s menu).n\n
-Open_Firebug_Tracing=Otvori Firebug Pracenje
-Always_Open_Firebug_Tracing=Uvijek otvori Firebug Pracenje
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).n\n
-title.Tracing=Pracenje
-tracing.Show_Scope_Variables=Prikazi prostornu varijablu
-tracing.Show_Time=Prikazi vrijeme
-tracing.tab.Stack=Naslazi
-tracing.tab.Exception=Iznimka
-tracing.tab.Properties=Postavke
-tracing.tab.Scope=Prostor
-tracing.tab.Response=Reakcija
-tracing.tab.Source=Izvor
-tracing.tab.Interfaces=Sucelje
-tracing.tab.Object=Objekt
-tracing.tab.Event=Dogadaj
-tracing.cmd.Clear=Ocisti
-tracing.cmd.tip.Clear=Izbrisi sve poruke
-tracing.cmd.Find=Trazi
-tracing.cmd.tip.Find=Trazi tekst
-tracing.cmd.Bookmark=Marker
-tracing.cmd.tip.Bookmark=Umetni marker
-tracing.cmd.Restart=Resetiraj Firefox
-tracing.cmd.tip.Restart=Resetiraj Firefox
-tracing.cmd.Exit=Zatvori Firefox
-tracing.cmd.tip.Exit=ZatvoriFirefox
-tracing.cmd.Save=Spremi kao...
-tracing.cmd.tip.Save=Spremi dnevnik kao...
-tracing.cmd.Load=Load from File
-tracing.cmd.tip.Load=Load logs from a file
-tracing.cmd.Expand_All=Prosiri sve
-tracing.cmd.Collapse_All=Srusi sve
-tracing.cmd.Tools=Tools
-tracing.cmd.tip.Tools=Tools
-tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.Open_Profile_Directory=Open Profile Directory
-tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
-tracing.option.A11Y_Description=Accessibility issues
-tracing.option.ACTIVATION_Description=Firebug activation
-tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
-tracing.option.ANNOTATIONS_Description=Firebug website annotation
-tracing.option.BP_Description=Breakpoints
-tracing.option.CACHE_Description=Source cache
-tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
-tracing.option.COMPILATION_UNITS_Description=Script compilation units
-tracing.option.CONSOLE_Description=Console Panel
-tracing.option.CSS_Description=CSS parsing
-tracing.option.DISPATCH_Description=Event dispatching
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate creation
-tracing.option.EDITOR_Description=Inline Editor & Autocompleter
-tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Internal Firebug errors
-tracing.option.EVAL_Description=Script evaluation
-tracing.option.FBS_BP_Description=Firebug service breakpoints
-tracing.option.FBS_CREATION_Description=Firebug service script creation
-tracing.option.FBS_ERRORS_Description=Firebug service errors
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
-tracing.option.FBS_FUNCTION_Description=Firebug service function
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
-tracing.option.FBS_SRCUNITS_Description=Firebug service source units
-tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
-tracing.option.FUNCTION_NAMES_Description=JavaScript function names
-tracing.option.HISTORY_Description=Firebug Navigation History
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP request observer
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug initialization
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON viewer
-tracing.option.LINETABLE_Description=Script line table
-tracing.option.LOCALE_Description=Localization
-tracing.option.LOCATIONS_Description=Source locations
-tracing.option.NET_Description=Net Panel
-tracing.option.NET_EVENTS_Description=Network events
-tracing.option.OPTIONS_Description=Firebug preferences
-tracing.option.PANELS_Description=Panels
-tracing.option.SHORTCUTS_Description=Keyboard shortcuts
-tracing.option.SOURCEFILES_Description=JavaScript source files
-tracing.option.SPY_Description=XMLHttpRequests observer
-tracing.option.STACK_Description=JavaScript call stack
-tracing.option.STORAGE_Description=Settings storage
-tracing.option.SVGVIEWER_Description=SVG viewer
-tracing.option.FONTS_Description=Fonts information and font viewer
-tracing.option.TOOLTIP_Description=Start Button tooltip
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging user interface
-tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
-tracing.option.XMLVIEWER_Description=XML viewer
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):n\n
+# Firebug tracing console menu items (located in Firebug\'s menu).n\n
+Open_Firebug_Tracing=Otvori Firebug Pracenje
+Always_Open_Firebug_Tracing=Uvijek otvori Firebug Pracenje
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).n\n
+title.Tracing=Pracenje
+tracing.Show_Scope_Variables=Prikazi prostornu varijablu
+tracing.Show_Time=Prikazi vrijeme
+tracing.tab.Stack=Naslazi
+tracing.tab.Exception=Iznimka
+tracing.tab.Properties=Postavke
+tracing.tab.Scope=Prostor
+tracing.tab.Response=Reakcija
+tracing.tab.Source=Izvor
+tracing.tab.Interfaces=Sucelje
+tracing.tab.Object=Objekt
+tracing.tab.Event=Dogadaj
+tracing.cmd.Clear=Ocisti
+tracing.cmd.tip.Clear=Izbrisi sve poruke
+tracing.cmd.Find=Trazi
+tracing.cmd.tip.Find=Trazi tekst
+tracing.cmd.Bookmark=Marker
+tracing.cmd.tip.Bookmark=Umetni marker
+tracing.cmd.Restart=Resetiraj Firefox
+tracing.cmd.tip.Restart=Resetiraj Firefox
+tracing.cmd.Exit=Zatvori Firefox
+tracing.cmd.tip.Exit=ZatvoriFirefox
+tracing.cmd.Save=Spremi kao...
+tracing.cmd.tip.Save=Spremi dnevnik kao...
+tracing.cmd.Load=Load from File
+tracing.cmd.tip.Load=Load logs from a file
+tracing.cmd.Expand_All=Prosiri sve
+tracing.cmd.Collapse_All=Srusi sve
+tracing.cmd.Tools=Tools
+tracing.cmd.tip.Tools=Tools
+tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.Open_Profile_Directory=Open Profile Directory
+tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
+tracing.option.A11Y_Description=Accessibility issues
+tracing.option.ACTIVATION_Description=Firebug activation
+tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
+tracing.option.ANNOTATIONS_Description=Firebug website annotation
+tracing.option.BP_Description=Breakpoints
+tracing.option.CACHE_Description=Source cache
+tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
+tracing.option.COMPILATION_UNITS_Description=Script compilation units
+tracing.option.CONSOLE_Description=Console Panel
+tracing.option.CSS_Description=CSS parsing
+tracing.option.DISPATCH_Description=Event dispatching
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate creation
+tracing.option.EDITOR_Description=Inline Editor & Autocompleter
+tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Internal Firebug errors
+tracing.option.EVAL_Description=Script evaluation
+tracing.option.FBS_BP_Description=Firebug service breakpoints
+tracing.option.FBS_CREATION_Description=Firebug service script creation
+tracing.option.FBS_ERRORS_Description=Firebug service errors
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
+tracing.option.FBS_FUNCTION_Description=Firebug service function
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
+tracing.option.FBS_SRCUNITS_Description=Firebug service source units
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
+tracing.option.FUNCTION_NAMES_Description=JavaScript function names
+tracing.option.HISTORY_Description=Firebug Navigation History
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request observer
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug initialization
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON viewer
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Localization
+tracing.option.LOCATIONS_Description=Source locations
+tracing.option.NET_Description=Net Panel
+tracing.option.NET_EVENTS_Description=Network events
+tracing.option.OPTIONS_Description=Firebug preferences
+tracing.option.PANELS_Description=Panels
+tracing.option.SHORTCUTS_Description=Keyboard shortcuts
+tracing.option.SOURCEFILES_Description=JavaScript source files
+tracing.option.SPY_Description=XMLHttpRequests observer
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Settings storage
+tracing.option.SVGVIEWER_Description=SVG viewer
+tracing.option.FONTS_Description=Fonts information and font viewer
+tracing.option.TOOLTIP_Description=Start Button tooltip
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging user interface
+tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
+tracing.option.XMLVIEWER_Description=XML viewer
diff --git a/locale/hr-HR/firebug.properties b/locale/hr-HR/firebug.properties
index e8c45df..e14961c 100644
--- a/locale/hr-HR/firebug.properties
+++ b/locale/hr-HR/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.n\n
-# %S Title of the associated web page.n\n
-# examples: Firebug - Googlen\n
-WindowTitle=Firebug - %S
-# Panel titlesn\n
-Panel-console=Konzola
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Net
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Skripta
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Stil
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Izracunano
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Izgled
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Gledaj
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Breakpoints
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Stack
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Prostor
-firebug.DetachFirebug=Otvori Firebug u novom prozoru
-firebug.AttachFirebug=Attach Firebug to Browser Window
-# LOCALIZATION NOTE (Total_Firebugs): Used in a tooltip that is displayed for Firebugn\n
-# icon located within Firefox status bar. Displayes number of pages with activated Firebug.n\n
-# xxxHonza: this construct should be replaced by PluralFormn\n
-# See: https://developer.mozilla.org/en/Localization_and_Pluralsn\n
-pluralRule=1
-# Console panel options.n\n
-# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,n\n
-# message, etc. within a source of a web page.n\n
-# #1 File name, #2 Line numbern\n
-# examples: somePage.htm (line 64)n\n
-# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.n\n
-plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
-# For example, right clicking on an element in the HTML panel offers an action to inspectn\n
-# clicked element in the DOM panel (tab).n\n
-# #1 Target panel titlen\n
-startbutton.tip.deactivated=Deactivated
-# examples: Inspect in DOM Tabn\n
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugn\n
-# do not translate.n\n
-# #1 jsdIScript.tagn\n
-# HTML panel context menu items.n\n
-panel.status=%S: %S
-inBrowser=U pregledniku
-minimized=Smanjeno
-enablement.for_all_pages=za sve stranice
-enablement.on=Ukljuceno
-enablement.off=Iskljuceno
-enablement.Panel_activation_status=Panel activation status:
-none=Zatvoreno
-Firebug_-_inactive_for_current_website=Firebug - inactive for current website
-Activate_Firebug_for_the_current_website=Activate Firebug for the current website
-Minimized=Smanjeno
-Minimize_Firebug=Smanji Firebug
-On_for_all_web_pages=Na svim stranicama
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Obrisi aktivacijsku sliku
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI Location
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# Quick Info Boxn\n
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumen\n
-firebug_options=Firebug postavke
-# button that are used when the HTML panel is currently selected. The button allows stoppingn\n
-# JS execution when DOM of the current page is modified.n\n
-firebug.Show_All_Panels=Show All Panels
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
-ShowJavaScriptErrors=Prikazi JavaScript greske
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Prikazi JavaScript upozorenja
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Prikazi CSS greske
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Prikazi Stack Trace With Errors
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Prikazi XMLHttp zahtjeve
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Prikazi Chrome greske
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Prikazi Chrome Messages
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Prikazi vanjske greske
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Prikazi mrezne greske
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Striktna upozorenja
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Command History
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Show Completion List Popup
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Greska u navodu
-# editing an existing HTML element attribute.n\n
-# #1 Name of the clicked attribute.n\n
-# examples: Edit Attribute \"onclick\"...n\n
-# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
-# deleting an existing HTML element attribute.n\n
-Line=%S (line %S)
-LineAndCol=%S (line %S, col %S)
-InstanceLine=%S #%S (line %S)
-StackItem=%S (%S line %S)
-SystemItem=<Sistem>
-# #1 Name of the clicked attribute.n\n
-# examples: Delete Attribute \"onclick\"...n\n
-# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.n\n
-# that has been inherited. Used in the Style side panel (under HTML panel).n\n
-# examples: Inherited from table.tabViewn\n
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(no name)
-# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.n\n
-# Allows to edit an existing CSS rule property.n\n
-# %S Name of the clicked propertyn\n
-jsdIScript=jsdIScript %S
-# examples: Edit \"background-color\"...n\n
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.n\n
-# Allows to disable an existing CSS rule property.n\n
-ShowFullText=Prikazi puni tekst
-html.option.tip.Show_Full_Text=Don't crop element contents
-# %S Name of the clicked propertyn\n
-# examples: Disable \"background-color\"n\n
-# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.n\n
-ShowWhitespace=Prikazi prazan prostor
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# Allows to delete an existing CSS rule property.n\n
-# %S Name of the clicked propertyn\n
-ShowComments=Prikazi komentare
-html.option.tip.Show_Comments=Show comment nodes
-# examples: Delete \"background-color\"n\n
-# Console context menu labels.n\n
-# LOCALIZATION NOTE do not translate, no longer used(?)n\n
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# Breakpoints side paneln\n
-# Script paneln\n
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutOffset, LayoutAdjacent):n\n
-HighlightMutations=Osjencaj promjene
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# Labels used to describe layout properties a the selected HTML element.n\n
-# Used in the Layout side panel under HMTL panel.n\n
-# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side paneln\n
-ExpandMutations=Prosiri promjene
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# under HTML panel.n\n
-# LOCALIZATION NOTE http://www.w3.org/TR/cssom-view/#the-getclientrects-and-getboundingclientn\n
-# This is the default and may become the only choice.n\n
-ScrollToMutations=Priblizi promjene
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (ShowAdjacentLayout): this is disabled, no translationn\n
-# Net paneln\n
-# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)n\n
-ShowQuickInfoBox=Show Quick Info Box
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,n\n
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,n\n
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):n\n
-ShadeBoxModel=Shade Box Model
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Priblizi
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Novi atribut...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Obrisi element
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Izbrisi cvor
-html.Delete_Node=Delete the node from the tree
-# Labels and tooltips for a headers displayed on top of the Net panel.n\n
-quickInfo=Informacije
-computedStyle=Kompjutorski stil
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.n\n
-# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s contextn\n
-# menu for breaking on a XHR.n\n
-html.Break_On_Mutate=Break On Mutate
-html.Disable_Break_On_Mutate=Iskljuci Break On Mutate
-html.label.Break_On_Text_Change=Slomi na promijeni teksta
-html.label.HTML_Breakpoints=HTML Breakpoints
-html.label.Break_On_Attribute_Change=Break On Attribute Change
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Break On Child Addition or Removal
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Break On Element Removal
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutn\n
-# a network request (displayed when a net panel entry is expanded). The content ofn\n
-# this tab displays sent data (related to a HTTP send method).n\n
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):n\n
-html.label.Expand/Contract_All=Expand/Contract All
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# Label used in the Net panel for detailed info about a network request (displayedn\n
-# when a net panel entry is expanded)n\n
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net paneln\n
-dom.label.breakOnPropertyChange=Break On Property Change
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# (expand an entry in the panel and select Headers tab).n\n
-# LOCALIZATION NOTE (LimitExceeded): A message displayed in the Net panel when some entriesn\n
-dom.disableBreakOnPropertyChange=Disable Break On Property Change
-dom.label.DOM_Breakpoints=DOM Breakpoints
-# must be removed since maximum number of entries has been reached.n\n
-# %S Is the number of entries removed.n\n
-# examples: Firebug\'s log limit has been reached. 150 entries not shown.n\n
-# xxxHonza: this construct should be replaced by PluralFormn\n
-EditAttribute=Promijeni atribut \"%S\"...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# See: https://developer.mozilla.org/en/Localization_and_Pluralsn\n
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitn\n
-# has been reached. Informing the user what preferencee should be changed to modify the limit.n\n
-# %S Name of a preference.n\n
-DeleteAttribute=Izbrisi atribut \"%S\"
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# examples: In order to change the limit modify: firebug.extensions.console.logLimitn\n
-# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.n\n
-# (result of javascript profiler tool). Reprsents a verb.n\n
-InheritedFrom=Inherited from
-SothinkWarning=The Sothink SWF Catcher extension is preventing Firebug from working properly.<br><br>Please read <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">this item on the Firebug FAQ</a> for help.
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headern\n
-# (name of a report column). In order to see this, select the Console panel start profilingn\n
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# by clicking the Profile button and stop it by clicking again. The report is logged into then\n
-# console panel. Make sure Script panel is enabled.n\n
-# Support for clipboard actions.n\n
-css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
-# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptn\n
-# panel when clicking a function object.n\n
-# %S Name of the functionn\n
-css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
-EditStyle=Edit Element Style...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=New Rule...
-css.tip.New_Rule=Add a new rule
-# Log Calls to \"getData\"n\n
-# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console paneln\n
-# if specific method is not supported.n\n
-# %S Name of a not supported method.n\n
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console paneln\n
-# when a not supported method is used on the command line.n\n
-# %S Name of a not supported method.n\n
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=New Property...
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):n\n
-# Tooltip for the \"Break on... \" button used when the Console panel is selected.n\n
-# Console strings used when JavaScript is not availablen\n
-# LOCALIZATION NOTE (net.file.SizeInfotip): A tool-tip text used for precise size of a networkn\n
-EditProp=Edit \"%S\"...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# response in the Net panel.n\n
-# #1 is rounded size, #2 precise sizen\n
-# examples: Size: 2KB (2,362 bytes)n\n
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache): A label for Net panel\'s option.n\n
-DisableProp=Disable \"%S\"
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.n\n
-# With: the scope inside of the with(obj) {} statementn\n
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };n\n
-# Window: the scope inside of a Javascript window object.n\n
-DeleteProp=Delete \"%S\"
-css.tip.Delete_Prop=Delete the property "%S"
-# Net panel timing info labelsn\n
-BreakOnThisError=Break on This Error
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Break on All Errors
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-#A11y Chrome Labels (not visible, spoken by screen readers)n\n
-#A11y panelNode labels (not visible, spoken by screen readers)n\n
-#A11y Domplate labels (not visible, spoken by screen readers)n\n
-TrackThrowCatch=Track Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Use Last Source Line for eval() names
-UseMD5ForEvalName=Use MD5 for eval() names
-# LOCALIZATION NOTEn\n
-Breakpoints=Breakpoints
-ErrorBreakpoints=Error Breakpoints
-LoggedFunctions=Logged Functions
-EnableAllBreakpoints=Enable All Breakpoints
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Disable All Breakpoints
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Remove All Breakpoints
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=This breakpoint will stop only if this expression is true:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# Describe contents of inline editor fieldsn\n
-# LOCALIZATION NOTE (a11y.labels.overridden):n\n
-breakpoints.Remove_Breakpoint=Remove Breakpoint
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Disable Breakpoint
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Enable Breakpoint
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# indicates style property is overridden by selector with higher specificityn\n
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):n\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# Existence and state of a breakpointn\n
-script.balloon.Continue=Continue
-script.balloon.Disable=Disable
-ScriptsFilterStatic=Show Static Scripts
-ScriptsFilterEval=Show Static and eval Scripts
-ScriptsFilterEvent=Show Static and event Scripts
-ScriptsFilterAll=Show Static, eval, and event Scripts
-ScriptsFilterStaticShort=static
-ScriptsFilterEvalShort=evals
-ScriptsFilterEventShort=events
-ScriptsFilterAllShort=all
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# #1 Line number, #2 Function name, #3 File namen\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlyn\n
-callstack.Expand_All=Expand All
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Collapse All
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a console panel search n\n
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# #1 %S String key the use is looking for. #2 number of rows that contain the matched textn\n
-# examples: \"Match found for test in 17 log rows\"n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-ShowUserProps=Show User-defined Properties
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Show User-defined Functions
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Show DOM Properties
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Show DOM Functions
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Show DOM Constants
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=There are no properties to show for this object.
-NewWatch=New watch expression...
-# Describes the match found when performing a script panel search n\n
-# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found inn\n
-AddWatch=Add Watch
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# examples: \"Match found for window.alert on line 322 in utilities.js\"n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlyn\n
-CopySourceCode=Copy Source
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
-CopyValue=Copy Value
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Copy Name
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Copy Path
-dom.tip.Copy_Path=Copy the property path
-NewProperty=New Property...
-EditProperty=Edit Property...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Edit Variable...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Edit Watch...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Delete Property
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Delete Watch
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in an element node) n\n
-SetBreakpoint=Set Breakpoint
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementn\n
-# examples: \"Match found for obj in object element at /html/body/object[2]\"n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlyn\n
-EditBreakpointCondition=Edit Breakpoint Condition...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=There are no breakpoints set in this page.
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node) n\n
-# #1 Search string that was matched. #2 Attribute name #3 attribute value n\n
-Only_Show_Applied_Styles=Only Show Applied Styles
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# #4 the HTML element name containing. #5 XPATH string specifying the matched elementn\n
-# examples: \"Match found for abindex in tabindex=\"0\" in span element at /html/body/span[2]\"n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlyn\n
-Show_User_Agent_CSS=Show User Agent CSS
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) n\n
-# #1 Search string that was matched. #2 element\'s text content n\n
-# #3 the HTML element name containing. #4 XPATH string specifying the matched elementn\n
-# examples: \"Match found for Firebug Rocks! in h2 element at /html/body/h2[2]\"n\n
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a CSS panel search (if it is found in a selector) n\n
-# #1 Search string that was matched. #2 selector in which the match was found n\n
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# examples: \"Match found for main in #mainContent h2 {\"n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a CSS panel search (if it is found in a style property) n\n
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style property applies to n\n
-# examples: \"Match found for background in style property background-repeat: \"repeat-x\"; in selector #mainContent {\"n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# Describes the match found when performing a DOM panel search n\n
-# #1 Search string that was matched. #2 DOM property in which the match was found n\n
-# examples: \"Match found for time in _starttime : 1257324992232 (Number)\"n\n
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a Net panel search n\n
-# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
-Expand_Shorthand_Properties=Expand Shorthand Properties
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# #3 Column in which the match was found #4. Column value n\n
-# examples: \"Match found for 792 in GET loading_animation.gif, timeline: 792 ms\"n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-Sort_alphabetically=Sort Alphabetically
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
-# #1 Search string that was matched. #2 Column value in which the match was found n\n
-# examples: \"Match found for 05 in net summary row: 4.05sn\n
-Show_Mozilla_specific_styles=Show Mozilla Specific Styles
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Indicates that the searched string was not matched n\n
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Type any key to filter list
-# %S Search string that was matched. n\n
-# examples: \"No matched found for wefkhwefkgwekhjgjh\"n\n
-# Console messages.n\n
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=position
-LayoutAdjacent=adjacent
-position=position
-# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
-# If Firebug is displayed in an external window (detached), but not active for then\n
-# currently selected Firefox tab, the following button label is used for ann\n
-# activation button.n\n
-ShowRulers=Show Rulers and Guides
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
-Loading=Loading...
-Headers=Headers
-# An error message displayed in the Script panel when a source can\'t be displayedn\n
-# for specific URL.n\n
-net.tip.Clear=Clear the request list
-# examples: Failed to load source for: http://www.example.com/script.jsn\n
-# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
-net.header.Reset_Header=Reset Header
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=Requested URL and used HTTP method.
-net.header.Status=Status
-net.header.Status_Tooltip=Status of the received response.
-net.header.Domain=Domain
-net.header.Domain_Tooltip=Domain of the executed request.
-net.header.Size=Size
-net.header.Size_Tooltip=Size of the received response.
-net.header.Timeline=Timeline
-net.header.Timeline_Tooltip=Detailed timing info about request resonse round trip.
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=XHR Breakpoints
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Break On XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=pogledaj izvor
-net.headers.pretty_print=print
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Media
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Post
-Put=Put
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Response
-URLParameters=Params
-Cache=Cache
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Sort by key
-jsonviewer.do_not_sort=Do not sort
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Request Headers
-ResponseHeaders=Response Headers
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
-LimitPrefs=Preferences
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=In order to change the limit modify: %S
-Refresh=Refresh
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Open in New Tab
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Open Response in New Tab
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Profile
-ProfilerStarted=The profiler is running. Click \'Profile\' again to see its report.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
-NothingToProfile=No activity to profile.
-PercentTooltip=Percentage of time spent on this function.
-CallsHeaderTooltip=Number of times function was called.
-OwnTimeHeaderTooltip=Time spent in function, excluding nested calls.
-TimeHeaderTooltip=Time spent in function, including nested calls.
-AvgHeaderTooltip=Average time, including function calls.
-MinHeaderTooltip=Minimum time, including function calls.
-MaxHeaderTooltip=Maximum time, including function calls.
-ProfileButton.Enabled.Tooltip=Profile JavaScript execution time.
-ProfileButton.Disabled.Tooltip=Profile JavaScript execution time (Script panel must be enabled).
-Function=Function
-Percent=Percent
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Calls
-OwnTime=Own Time
-Time=Time
-Avg=Avg
-Min=Min
-Max=Max
-File=File
-# Support for standard actions.
-Copy=Copy
-Cut=Cut
-Remove=Remove
-Delete=Delete
-Paste=Paste
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Copy innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Copy XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Copy CSS Path
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Copy Location
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Copy Location with Parameters
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Copy Request Headers
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Copy Response Headers
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Copy Response Body
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Copy Error
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Copy Function
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Log Calls to \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Log Events
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Enabled
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Firebug console does not support \'%S\'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Firebug command line does not support \'%S\'
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Disable Break On All Errors
-console.Break_On_All_Errors=Break On All Errors
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Break On This Error
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript is disabled in your Firefox preferences. If you would like to use the console window then please enable this option under \'Tools\' -> \'Options\' -> \'Content\' -> \'Enable JavaScript\'
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Response Body
-net.sizeinfo.Post_Body=Post Body
-net.sizeinfo.Total_Sent=Total Sent
-net.sizeinfo.Total_Received=Total Received
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Net panel activated. Any requests while the net panel is inactive are not shown.
-net.responseSizeLimitMessage=Firebug response size limit has been reached. Click <a>here</a> to open the entire response in a new Firefox tab.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Post body size limit has been reached Removed by Firebug.
-net.Break_On_XHR=Break On XHR
-net.label.Parameters=Parameters
-net.label.Parts=Parts
-net.label.Source=Source
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Disable Browser Cache
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Show Paint Events
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Break On Next
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Show HTTP Headers
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S request;%1$S requests
-FromCache=from cache
-StopLoading=Stop Loading
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Very Large Data)
-ShowComputedStyle=Show Computed Style
-StyleGroup-text=Text
-StyleGroup-background=Background
-StyleGroup-box=Box Model
-StyleGroup-layout=Layout
-StyleGroup-other=Other
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Copy Color
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Copy Image Location
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Open Image in New Tab
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Omit Toolbar Stack
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copy Rule Declaration
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Copy Style Declaration
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Error;%1$S Errors
-moduleManager.title=%S panel is disabled
-moduleManager.desc3=Use the Firebug status bar icon menu to enable and disable all panels. Use the panel tab\'s small menu for individual panel control:
-moduleManager.Enable=Enable
-Suspend_Firebug=Suspend Firebug
-Resume_Firebug=Resume Firebug
-Reset_Panels_To_Disabled=Reset Panels To Disabled
-Open_Console=Open Console
-Open_Console_Tooltip=Open Trace Console for Firebug.
-Scope_Chain=Scope Chain
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=With
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Call
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Window
-Logs=Logs
-Options=Options
-Copy_Stack=Copy Stack
-Copy Exception=Copy Exception
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blocking
-requestinfo.Resolving=DNS Lookup
-requestinfo.Connecting=Connecting
-requestinfo.Sending=Sending
-requestinfo.Waiting=Waiting
-requestinfo.Receiving=Receiving
-requestinfo.ContentLoad=\'DOMContentLoaded\' (event)
-requestinfo.WindowLoad=\'load\' (event)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Firebug Search
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=SLijedece
-search.tip.Next=Search for the next match
-search.Previous=Prije
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Force Case Sensitive
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Multiple Files
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Use Regular Expression
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS Selector
-search.net.Headers=Zaglavlja
-search.net.Parameters=Parameteri
-search.net.Response_Bodies=Response Bodies
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persist
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Show all log entries
-firebug.console.Errors=Errors
-firebug.console.Filter_by_Errors=Filter by errors
-firebug.console.Warnings=Warnings
-firebug.console.Filter_by_Warnings=Filter by warnings
-firebug.console.Info=Info
-firebug.console.Filter_by_Info=Filter by info
-firebug.console.Debug_Info=Debug Info
-firebug.console.Filter_by_Debug_Info=Filter by debug info
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Otvori Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Hide Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Enable All Panels
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Disable All Panels
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Customize Shortcuts
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Postavke
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Enable Accessibility Enhancements
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Reset All Firebug Options
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug Online
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Show Error Count
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Velicina teksta
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Povecaj velicinu teksta
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Smanji velicinu teksta
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Normalna velicina teksta
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Firebug stranica...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Dokumentacija...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Skracenice...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Discussion Group...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Issue Tracker...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Pridonesi...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=O...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Trazi
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Reenter Command
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Toggle Inspecting
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Toggle Quick Info Box
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Toggle Profiling
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Focus Command Line
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Focus Firebug Search
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Focus Watch Editor
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Focus Location
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Next Object
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Previous Object
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Customize Firebug Keys
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Open Firebug in New Window
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Switch to left Firebug panel
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Switch to right Firebug panel
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Open Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Previous Firebug tab
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Clear Console
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Open Trace Console
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Go Back
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Go Forward
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Increase Text Size
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Decrease Text Size
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normal Text Size
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Panel Selector
-customizeShortcuts=Firebug Shortcut Bindings
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=panel alati
-a11y.labels.firebug_panels=Firebug paneli
-a11y.labels.firebug_side_panels=Firebug bocni paneli
-a11y.labels.firebug_window=firebug prozor
-a11y.labels.firebug_status=firebug status
-a11y.labels.reset=reset
-a11y.labels.reset_shortcut=reset %S shortcut
-aria.labels.inactive_panel=inactive panel
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=log rows
-a11y.labels.call_stack=call stack
-a11y.labels.document_structure=document structure
-a11y.labels.title_panel= %S panel
-a11y.labels.title_side_panel= %S side panel
-a11y.labels.cached=cached
-aria.labels.stack_trace=stack trace
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=position
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=margin top
-a11y.layout.margin_right=margin right
-a11y.layout.margin_bottom=margin bottom
-a11y.layout.margin_left=margin left
-a11y.layout.border_top=border top
-a11y.layout.border_right=border right
-a11y.layout.border_bottom=border bottom
-a11y.layout.border_left=border left
-a11y.layout.padding_top=padding top
-a11y.layout.padding_right=padding right
-a11y.layout.padding_bottom=padding bottom
-a11y.layout.padding_left=padding left
-a11y.layout.top=top
-a11y.layout.right=right
-a11y.layout.bottom=bottom
-a11y.layout.left=left
-a11y.layout.width=width
-a11y.layout.height=height
-a11y.layout.size=size
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=press enter followed by tab to edit individual values
-a11y.labels.style_rules=style rules
-aria.labels.inherited_style_rules=inherited style rules
-a11y.labels.computed_styles=computed styles
-a11y.labels.dom_properties=DOM properties
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=inline editor
-a11y.labels.value_for_attribute_in_element=value for %S attribute in %S element
-a11y.labels.attribute_for_element=attribute for %S element
-a11y.labels.text_contents_for_element=text contents for %S element
-a11y.labels.defined_in_file=odredeno u %S
-a11y.labels.declarations_for_selector=style declarations for \"%S\" selector
-a11y.labels.property_for_selector=CSS property for selector: %S
-a11y.labels.value_property_in_selector=%S property value for in selector %S
-a11y.labels.css_selector=CSS izbornik
-a11y.labels.source_code_for_file=source code for file %S
-a11y.labels.press_enter_to_add_new_watch_expression=press enter to add a new watch expression
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=overridden
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=has conditional break point
-a11y.updates.has_disabled_break_point=has disabled break point
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script suspended on line %S in %S, file %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=match found for %S in %S log rows
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=match found for %S on line %S in %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=match found for %S in %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=match found for %S in attribute %S=%S of %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=match found for %S in text content: %S of %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=match found for %S in selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=pronađen pogodak za \"%S\" u deklaraciji %S u sektoru %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=match found for %S in DOM property %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=match found for \"%S\" in %S, %S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=match found for %S in net summary row: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=nema rezultata za \"%S\"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Are you sure to reset all Firebug options to the default state?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=Konzola mora biti ukljucena
-warning.Command_line_blocked?=Command line blocked?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Reload to activate window console
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=Resurs ovog URL-a nije tekst
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Go back to this panel
-firebug.history.Stay_on_this_panel=Stay on this panel
-firebug.history.Go_forward_to_this_panel=Go forward to this panel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Go back
-firebug.history.Go_forward=Go forward
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Script Panel was inactive during page load
-script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript is not enabled
-script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Enable JavaScript and Refresh
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=All scripts were filtered
-script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=No Javascript on this page
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Debugger is already active
-script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
-script.button.Go_to_that_page=Go to that page
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Zatvori
-firebug.View=Vidi
-firebug.Help=Pomoc
-firebug.Run=Pokreni
-firebug.Copy=Kopiraj
-firebug.History=History
-firebug.Run_the_entered_command=Run the entered command
-firebug.Clear_the_Command_Editor=Clear the Command Editor
-firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
-firebug.Insert_a_previously_entered_command=Insert a previously entered command
-firebug.AlwaysOpenInWindow=Uvijek otvori u novom prozoru
-firebug.OpenWith=Otvori sa editorom
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Stranice
-firebug.Configure_Editors=Configure Editors
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Pregledaj
-firebug.InspectElement=Pregledaj element
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Break on Errors
-firebug.InspectTooltip=Click an element in the page to inspect
-firebug.EditHTMLTooltip=Izmijeni ovaj HTML
-firebug.Profile=Profil
-firebug.Clear=Ocisti
-firebug.ClearConsole=Ocisti konzolu
-firebug.ClearTooltip=Ocisti konzolu
-firebug.All=Sve
-firebug.Images=Slike
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Configured Firebug Editors
-editors.Editor=Editor
-editors.Executable=Executable
-editors.Launch_Arguments=Launch Arguments
-editors.Add=Add
-editors.Remove=Remove
-editors.Change=Change
-editors.Move_Up=Move Up
-editors.Close=Close
-editors.Browse=Browse...
-changeEditor.Editor_Configuration=Editor Configuration
-changeEditor.Name=Ime:
-changeEditor.Executable=Izvod:
-changeEditor.CmdLine=Argumenti:
-changeEditor.Supplied_arguments=Arguments supplied by Firebug:
-changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
-changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
-changeEditor.Line_number=Line number (if available)
-changeEditor.Invalid_Application_Path=Invalid Application Path
-changeEditor.Application_does_not_exist=The specified application doesn't exist!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Izmijeni
-firebug.css.sourceEdit=Source Edit
-firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
-firebug.css.liveEdit=Live Edit
-firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
-firebug.EditCSSTooltip=Edit this style sheet
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Show Break Notifications
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
-firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=There are no child objects
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=more
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Object Properties
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(no completions)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
-firebug.failedToPreviewImageURL=Failed to load the given URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.n\n
+# %S Title of the associated web page.n\n
+# examples: Firebug - Googlen\n
+WindowTitle=Firebug - %S
+# Panel titlesn\n
+Panel-console=Konzola
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Net
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Skripta
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Stil
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Izracunano
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Izgled
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Gledaj
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Breakpoints
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Stack
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Prostor
+firebug.DetachFirebug=Otvori Firebug u novom prozoru
+firebug.AttachFirebug=Attach Firebug to Browser Window
+# LOCALIZATION NOTE (Total_Firebugs): Used in a tooltip that is displayed for Firebugn\n
+# icon located within Firefox status bar. Displayes number of pages with activated Firebug.n\n
+# xxxHonza: this construct should be replaced by PluralFormn\n
+# See: https://developer.mozilla.org/en/Localization_and_Pluralsn\n
+pluralRule=1
+# Console panel options.n\n
+# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,n\n
+# message, etc. within a source of a web page.n\n
+# #1 File name, #2 Line numbern\n
+# examples: somePage.htm (line 64)n\n
+# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.n\n
+plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
+# For example, right clicking on an element in the HTML panel offers an action to inspectn\n
+# clicked element in the DOM panel (tab).n\n
+# #1 Target panel titlen\n
+startbutton.tip.deactivated=Deactivated
+# examples: Inspect in DOM Tabn\n
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugn\n
+# do not translate.n\n
+# #1 jsdIScript.tagn\n
+# HTML panel context menu items.n\n
+panel.status=%S: %S
+inBrowser=U pregledniku
+minimized=Smanjeno
+enablement.for_all_pages=za sve stranice
+enablement.on=Ukljuceno
+enablement.off=Iskljuceno
+enablement.Panel_activation_status=Panel activation status:
+none=Zatvoreno
+Firebug_-_inactive_for_current_website=Firebug - inactive for current website
+Activate_Firebug_for_the_current_website=Activate Firebug for the current website
+Minimized=Smanjeno
+Minimize_Firebug=Smanji Firebug
+On_for_all_web_pages=Na svim stranicama
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Obrisi aktivacijsku sliku
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI Location
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# Quick Info Boxn\n
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumen\n
+firebug_options=Firebug postavke
+# button that are used when the HTML panel is currently selected. The button allows stoppingn\n
+# JS execution when DOM of the current page is modified.n\n
+firebug.Show_All_Panels=Show All Panels
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
+ShowJavaScriptErrors=Prikazi JavaScript greske
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Prikazi JavaScript upozorenja
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Prikazi CSS greske
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Prikazi Stack Trace With Errors
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Prikazi XMLHttp zahtjeve
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Prikazi Chrome greske
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Prikazi Chrome Messages
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Prikazi vanjske greske
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Prikazi mrezne greske
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Striktna upozorenja
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Command History
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Show Completion List Popup
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Greska u navodu
+# editing an existing HTML element attribute.n\n
+# #1 Name of the clicked attribute.n\n
+# examples: Edit Attribute \"onclick\"...n\n
+# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
+# deleting an existing HTML element attribute.n\n
+Line=%S (line %S)
+LineAndCol=%S (line %S, col %S)
+InstanceLine=%S #%S (line %S)
+StackItem=%S (%S line %S)
+SystemItem=<Sistem>
+# #1 Name of the clicked attribute.n\n
+# examples: Delete Attribute \"onclick\"...n\n
+# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.n\n
+# that has been inherited. Used in the Style side panel (under HTML panel).n\n
+# examples: Inherited from table.tabViewn\n
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(no name)
+# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.n\n
+# Allows to edit an existing CSS rule property.n\n
+# %S Name of the clicked propertyn\n
+jsdIScript=jsdIScript %S
+# examples: Edit \"background-color\"...n\n
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.n\n
+# Allows to disable an existing CSS rule property.n\n
+ShowFullText=Prikazi puni tekst
+html.option.tip.Show_Full_Text=Don't crop element contents
+# %S Name of the clicked propertyn\n
+# examples: Disable \"background-color\"n\n
+# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.n\n
+ShowWhitespace=Prikazi prazan prostor
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# Allows to delete an existing CSS rule property.n\n
+# %S Name of the clicked propertyn\n
+ShowComments=Prikazi komentare
+html.option.tip.Show_Comments=Show comment nodes
+# examples: Delete \"background-color\"n\n
+# Console context menu labels.n\n
+# LOCALIZATION NOTE do not translate, no longer used(?)n\n
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# Breakpoints side paneln\n
+# Script paneln\n
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutOffset, LayoutAdjacent):n\n
+HighlightMutations=Osjencaj promjene
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# Labels used to describe layout properties a the selected HTML element.n\n
+# Used in the Layout side panel under HMTL panel.n\n
+# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side paneln\n
+ExpandMutations=Prosiri promjene
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# under HTML panel.n\n
+# LOCALIZATION NOTE http://www.w3.org/TR/cssom-view/#the-getclientrects-and-getboundingclientn\n
+# This is the default and may become the only choice.n\n
+ScrollToMutations=Priblizi promjene
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (ShowAdjacentLayout): this is disabled, no translationn\n
+# Net paneln\n
+# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)n\n
+ShowQuickInfoBox=Show Quick Info Box
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,n\n
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,n\n
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):n\n
+ShadeBoxModel=Shade Box Model
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Priblizi
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Novi atribut...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Obrisi element
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Izbrisi cvor
+html.Delete_Node=Delete the node from the tree
+# Labels and tooltips for a headers displayed on top of the Net panel.n\n
+quickInfo=Informacije
+computedStyle=Kompjutorski stil
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.n\n
+# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s contextn\n
+# menu for breaking on a XHR.n\n
+html.Break_On_Mutate=Break On Mutate
+html.Disable_Break_On_Mutate=Iskljuci Break On Mutate
+html.label.Break_On_Text_Change=Slomi na promijeni teksta
+html.label.HTML_Breakpoints=HTML Breakpoints
+html.label.Break_On_Attribute_Change=Break On Attribute Change
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Break On Child Addition or Removal
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Break On Element Removal
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutn\n
+# a network request (displayed when a net panel entry is expanded). The content ofn\n
+# this tab displays sent data (related to a HTTP send method).n\n
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):n\n
+html.label.Expand/Contract_All=Expand/Contract All
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# Label used in the Net panel for detailed info about a network request (displayedn\n
+# when a net panel entry is expanded)n\n
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net paneln\n
+dom.label.breakOnPropertyChange=Break On Property Change
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# (expand an entry in the panel and select Headers tab).n\n
+# LOCALIZATION NOTE (LimitExceeded): A message displayed in the Net panel when some entriesn\n
+dom.disableBreakOnPropertyChange=Disable Break On Property Change
+dom.label.DOM_Breakpoints=DOM Breakpoints
+# must be removed since maximum number of entries has been reached.n\n
+# %S Is the number of entries removed.n\n
+# examples: Firebug\'s log limit has been reached. 150 entries not shown.n\n
+# xxxHonza: this construct should be replaced by PluralFormn\n
+EditAttribute=Promijeni atribut \"%S\"...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# See: https://developer.mozilla.org/en/Localization_and_Pluralsn\n
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitn\n
+# has been reached. Informing the user what preferencee should be changed to modify the limit.n\n
+# %S Name of a preference.n\n
+DeleteAttribute=Izbrisi atribut \"%S\"
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# examples: In order to change the limit modify: firebug.extensions.console.logLimitn\n
+# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.n\n
+# (result of javascript profiler tool). Reprsents a verb.n\n
+InheritedFrom=Inherited from
+SothinkWarning=The Sothink SWF Catcher extension is preventing Firebug from working properly.<br><br>Please read <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">this item on the Firebug FAQ</a> for help.
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headern\n
+# (name of a report column). In order to see this, select the Console panel start profilingn\n
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# by clicking the Profile button and stop it by clicking again. The report is logged into then\n
+# console panel. Make sure Script panel is enabled.n\n
+# Support for clipboard actions.n\n
+css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
+# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptn\n
+# panel when clicking a function object.n\n
+# %S Name of the functionn\n
+css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
+EditStyle=Edit Element Style...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=New Rule...
+css.tip.New_Rule=Add a new rule
+# Log Calls to \"getData\"n\n
+# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console paneln\n
+# if specific method is not supported.n\n
+# %S Name of a not supported method.n\n
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console paneln\n
+# when a not supported method is used on the command line.n\n
+# %S Name of a not supported method.n\n
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=New Property...
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):n\n
+# Tooltip for the \"Break on... \" button used when the Console panel is selected.n\n
+# Console strings used when JavaScript is not availablen\n
+# LOCALIZATION NOTE (net.file.SizeInfotip): A tool-tip text used for precise size of a networkn\n
+EditProp=Edit \"%S\"...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# response in the Net panel.n\n
+# #1 is rounded size, #2 precise sizen\n
+# examples: Size: 2KB (2,362 bytes)n\n
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache): A label for Net panel\'s option.n\n
+DisableProp=Disable \"%S\"
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.n\n
+# With: the scope inside of the with(obj) {} statementn\n
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };n\n
+# Window: the scope inside of a Javascript window object.n\n
+DeleteProp=Delete \"%S\"
+css.tip.Delete_Prop=Delete the property "%S"
+# Net panel timing info labelsn\n
+BreakOnThisError=Break on This Error
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Break on All Errors
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+#A11y Chrome Labels (not visible, spoken by screen readers)n\n
+#A11y panelNode labels (not visible, spoken by screen readers)n\n
+#A11y Domplate labels (not visible, spoken by screen readers)n\n
+TrackThrowCatch=Track Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Use Last Source Line for eval() names
+UseMD5ForEvalName=Use MD5 for eval() names
+# LOCALIZATION NOTEn\n
+Breakpoints=Breakpoints
+ErrorBreakpoints=Error Breakpoints
+LoggedFunctions=Logged Functions
+EnableAllBreakpoints=Enable All Breakpoints
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Disable All Breakpoints
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Remove All Breakpoints
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=This breakpoint will stop only if this expression is true:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# Describe contents of inline editor fieldsn\n
+# LOCALIZATION NOTE (a11y.labels.overridden):n\n
+breakpoints.Remove_Breakpoint=Remove Breakpoint
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Disable Breakpoint
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Enable Breakpoint
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# indicates style property is overridden by selector with higher specificityn\n
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):n\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# Existence and state of a breakpointn\n
+script.balloon.Continue=Continue
+script.balloon.Disable=Disable
+ScriptsFilterStatic=Show Static Scripts
+ScriptsFilterEval=Show Static and eval Scripts
+ScriptsFilterEvent=Show Static and event Scripts
+ScriptsFilterAll=Show Static, eval, and event Scripts
+ScriptsFilterStaticShort=static
+ScriptsFilterEvalShort=evals
+ScriptsFilterEventShort=events
+ScriptsFilterAllShort=all
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# #1 Line number, #2 Function name, #3 File namen\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlyn\n
+callstack.Expand_All=Expand All
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Collapse All
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a console panel search n\n
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# #1 %S String key the use is looking for. #2 number of rows that contain the matched textn\n
+# examples: \"Match found for test in 17 log rows\"n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+ShowUserProps=Show User-defined Properties
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Show User-defined Functions
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Show DOM Properties
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Show DOM Functions
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Show DOM Constants
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=There are no properties to show for this object.
+NewWatch=New watch expression...
+# Describes the match found when performing a script panel search n\n
+# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found inn\n
+AddWatch=Add Watch
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# examples: \"Match found for window.alert on line 322 in utilities.js\"n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlyn\n
+CopySourceCode=Copy Source
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
+CopyValue=Copy Value
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Copy Name
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Copy Path
+dom.tip.Copy_Path=Copy the property path
+NewProperty=New Property...
+EditProperty=Edit Property...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Edit Variable...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Edit Watch...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Delete Property
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Delete Watch
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in an element node) n\n
+SetBreakpoint=Set Breakpoint
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementn\n
+# examples: \"Match found for obj in object element at /html/body/object[2]\"n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlyn\n
+EditBreakpointCondition=Edit Breakpoint Condition...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=There are no breakpoints set in this page.
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node) n\n
+# #1 Search string that was matched. #2 Attribute name #3 attribute value n\n
+Only_Show_Applied_Styles=Only Show Applied Styles
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# #4 the HTML element name containing. #5 XPATH string specifying the matched elementn\n
+# examples: \"Match found for abindex in tabindex=\"0\" in span element at /html/body/span[2]\"n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlyn\n
+Show_User_Agent_CSS=Show User Agent CSS
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) n\n
+# #1 Search string that was matched. #2 element\'s text content n\n
+# #3 the HTML element name containing. #4 XPATH string specifying the matched elementn\n
+# examples: \"Match found for Firebug Rocks! in h2 element at /html/body/h2[2]\"n\n
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a CSS panel search (if it is found in a selector) n\n
+# #1 Search string that was matched. #2 selector in which the match was found n\n
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# examples: \"Match found for main in #mainContent h2 {\"n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a CSS panel search (if it is found in a style property) n\n
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style property applies to n\n
+# examples: \"Match found for background in style property background-repeat: \"repeat-x\"; in selector #mainContent {\"n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# Describes the match found when performing a DOM panel search n\n
+# #1 Search string that was matched. #2 DOM property in which the match was found n\n
+# examples: \"Match found for time in _starttime : 1257324992232 (Number)\"n\n
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a Net panel search n\n
+# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
+Expand_Shorthand_Properties=Expand Shorthand Properties
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# #3 Column in which the match was found #4. Column value n\n
+# examples: \"Match found for 792 in GET loading_animation.gif, timeline: 792 ms\"n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+Sort_alphabetically=Sort Alphabetically
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
+# #1 Search string that was matched. #2 Column value in which the match was found n\n
+# examples: \"Match found for 05 in net summary row: 4.05sn\n
+Show_Mozilla_specific_styles=Show Mozilla Specific Styles
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Indicates that the searched string was not matched n\n
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Type any key to filter list
+# %S Search string that was matched. n\n
+# examples: \"No matched found for wefkhwefkgwekhjgjh\"n\n
+# Console messages.n\n
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=position
+LayoutAdjacent=adjacent
+position=position
+# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
+# If Firebug is displayed in an external window (detached), but not active for then\n
+# currently selected Firefox tab, the following button label is used for ann\n
+# activation button.n\n
+ShowRulers=Show Rulers and Guides
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
+Loading=Loading...
+Headers=Headers
+# An error message displayed in the Script panel when a source can\'t be displayedn\n
+# for specific URL.n\n
+net.tip.Clear=Clear the request list
+# examples: Failed to load source for: http://www.example.com/script.jsn\n
+# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
+net.header.Reset_Header=Reset Header
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=Requested URL and used HTTP method.
+net.header.Status=Status
+net.header.Status_Tooltip=Status of the received response.
+net.header.Domain=Domain
+net.header.Domain_Tooltip=Domain of the executed request.
+net.header.Size=Size
+net.header.Size_Tooltip=Size of the received response.
+net.header.Timeline=Timeline
+net.header.Timeline_Tooltip=Detailed timing info about request resonse round trip.
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=XHR Breakpoints
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Break On XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=pogledaj izvor
+net.headers.pretty_print=print
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Media
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Post
+Put=Put
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Response
+URLParameters=Params
+Cache=Cache
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Sort by key
+jsonviewer.do_not_sort=Do not sort
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Request Headers
+ResponseHeaders=Response Headers
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
+LimitPrefs=Preferences
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=In order to change the limit modify: %S
+Refresh=Refresh
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Open in New Tab
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Open Response in New Tab
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Profile
+ProfilerStarted=The profiler is running. Click \'Profile\' again to see its report.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
+NothingToProfile=No activity to profile.
+PercentTooltip=Percentage of time spent on this function.
+CallsHeaderTooltip=Number of times function was called.
+OwnTimeHeaderTooltip=Time spent in function, excluding nested calls.
+TimeHeaderTooltip=Time spent in function, including nested calls.
+AvgHeaderTooltip=Average time, including function calls.
+MinHeaderTooltip=Minimum time, including function calls.
+MaxHeaderTooltip=Maximum time, including function calls.
+ProfileButton.Enabled.Tooltip=Profile JavaScript execution time.
+ProfileButton.Disabled.Tooltip=Profile JavaScript execution time (Script panel must be enabled).
+Function=Function
+Percent=Percent
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Calls
+OwnTime=Own Time
+Time=Time
+Avg=Avg
+Min=Min
+Max=Max
+File=File
+# Support for standard actions.
+Copy=Copy
+Cut=Cut
+Remove=Remove
+Delete=Delete
+Paste=Paste
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Copy innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Copy XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Copy CSS Path
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Copy Location
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Copy Location with Parameters
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Copy Request Headers
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Copy Response Headers
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Copy Response Body
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Copy Error
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Copy Function
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Log Calls to \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Log Events
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Enabled
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Firebug console does not support \'%S\'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Firebug command line does not support \'%S\'
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Disable Break On All Errors
+console.Break_On_All_Errors=Break On All Errors
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Break On This Error
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript is disabled in your Firefox preferences. If you would like to use the console window then please enable this option under \'Tools\' -> \'Options\' -> \'Content\' -> \'Enable JavaScript\'
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Response Body
+net.sizeinfo.Post_Body=Post Body
+net.sizeinfo.Total_Sent=Total Sent
+net.sizeinfo.Total_Received=Total Received
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Net panel activated. Any requests while the net panel is inactive are not shown.
+net.responseSizeLimitMessage=Firebug response size limit has been reached. Click <a>here</a> to open the entire response in a new Firefox tab.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Post body size limit has been reached Removed by Firebug.
+net.Break_On_XHR=Break On XHR
+net.label.Parameters=Parameters
+net.label.Parts=Parts
+net.label.Source=Source
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Disable Browser Cache
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Show Paint Events
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Break On Next
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Show HTTP Headers
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S request;%1$S requests
+FromCache=from cache
+StopLoading=Stop Loading
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Very Large Data)
+ShowComputedStyle=Show Computed Style
+StyleGroup-text=Text
+StyleGroup-background=Background
+StyleGroup-box=Box Model
+StyleGroup-layout=Layout
+StyleGroup-other=Other
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Copy Color
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Copy Image Location
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Open Image in New Tab
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Omit Toolbar Stack
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copy Rule Declaration
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Copy Style Declaration
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Error;%1$S Errors
+moduleManager.title=%S panel is disabled
+moduleManager.desc3=Use the Firebug status bar icon menu to enable and disable all panels. Use the panel tab\'s small menu for individual panel control:
+moduleManager.Enable=Enable
+Suspend_Firebug=Suspend Firebug
+Resume_Firebug=Resume Firebug
+Reset_Panels_To_Disabled=Reset Panels To Disabled
+Open_Console=Open Console
+Open_Console_Tooltip=Open Trace Console for Firebug.
+Scope_Chain=Scope Chain
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=With
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Call
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Window
+Logs=Logs
+Options=Options
+Copy_Stack=Copy Stack
+Copy Exception=Copy Exception
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blocking
+requestinfo.Resolving=DNS Lookup
+requestinfo.Connecting=Connecting
+requestinfo.Sending=Sending
+requestinfo.Waiting=Waiting
+requestinfo.Receiving=Receiving
+requestinfo.ContentLoad=\'DOMContentLoaded\' (event)
+requestinfo.WindowLoad=\'load\' (event)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Firebug Search
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=SLijedece
+search.tip.Next=Search for the next match
+search.Previous=Prije
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Force Case Sensitive
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Multiple Files
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Use Regular Expression
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS Selector
+search.net.Headers=Zaglavlja
+search.net.Parameters=Parameteri
+search.net.Response_Bodies=Response Bodies
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persist
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Show all log entries
+firebug.console.Errors=Errors
+firebug.console.Filter_by_Errors=Filter by errors
+firebug.console.Warnings=Warnings
+firebug.console.Filter_by_Warnings=Filter by warnings
+firebug.console.Info=Info
+firebug.console.Filter_by_Info=Filter by info
+firebug.console.Debug_Info=Debug Info
+firebug.console.Filter_by_Debug_Info=Filter by debug info
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Otvori Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Hide Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Enable All Panels
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Disable All Panels
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Customize Shortcuts
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Postavke
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Enable Accessibility Enhancements
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Reset All Firebug Options
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug Online
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Show Error Count
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Velicina teksta
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Povecaj velicinu teksta
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Smanji velicinu teksta
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Normalna velicina teksta
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Firebug stranica...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Dokumentacija...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Skracenice...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Discussion Group...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Issue Tracker...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Pridonesi...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=O...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Trazi
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Reenter Command
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Toggle Inspecting
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Toggle Quick Info Box
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Toggle Profiling
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Focus Command Line
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Focus Firebug Search
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Focus Watch Editor
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Focus Location
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Next Object
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Previous Object
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Customize Firebug Keys
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Open Firebug in New Window
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Switch to left Firebug panel
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Switch to right Firebug panel
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Open Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Previous Firebug tab
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Clear Console
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Open Trace Console
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Go Back
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Go Forward
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Increase Text Size
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Decrease Text Size
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normal Text Size
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Panel Selector
+customizeShortcuts=Firebug Shortcut Bindings
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=panel alati
+a11y.labels.firebug_panels=Firebug paneli
+a11y.labels.firebug_side_panels=Firebug bocni paneli
+a11y.labels.firebug_window=firebug prozor
+a11y.labels.firebug_status=firebug status
+a11y.labels.reset=reset
+a11y.labels.reset_shortcut=reset %S shortcut
+aria.labels.inactive_panel=inactive panel
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=log rows
+a11y.labels.call_stack=call stack
+a11y.labels.document_structure=document structure
+a11y.labels.title_panel= %S panel
+a11y.labels.title_side_panel= %S side panel
+a11y.labels.cached=cached
+aria.labels.stack_trace=stack trace
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=position
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=margin top
+a11y.layout.margin_right=margin right
+a11y.layout.margin_bottom=margin bottom
+a11y.layout.margin_left=margin left
+a11y.layout.border_top=border top
+a11y.layout.border_right=border right
+a11y.layout.border_bottom=border bottom
+a11y.layout.border_left=border left
+a11y.layout.padding_top=padding top
+a11y.layout.padding_right=padding right
+a11y.layout.padding_bottom=padding bottom
+a11y.layout.padding_left=padding left
+a11y.layout.top=top
+a11y.layout.right=right
+a11y.layout.bottom=bottom
+a11y.layout.left=left
+a11y.layout.width=width
+a11y.layout.height=height
+a11y.layout.size=size
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=press enter followed by tab to edit individual values
+a11y.labels.style_rules=style rules
+aria.labels.inherited_style_rules=inherited style rules
+a11y.labels.computed_styles=computed styles
+a11y.labels.dom_properties=DOM properties
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=inline editor
+a11y.labels.value_for_attribute_in_element=value for %S attribute in %S element
+a11y.labels.attribute_for_element=attribute for %S element
+a11y.labels.text_contents_for_element=text contents for %S element
+a11y.labels.defined_in_file=odredeno u %S
+a11y.labels.declarations_for_selector=style declarations for \"%S\" selector
+a11y.labels.property_for_selector=CSS property for selector: %S
+a11y.labels.value_property_in_selector=%S property value for in selector %S
+a11y.labels.css_selector=CSS izbornik
+a11y.labels.source_code_for_file=source code for file %S
+a11y.labels.press_enter_to_add_new_watch_expression=press enter to add a new watch expression
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=overridden
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=has conditional break point
+a11y.updates.has_disabled_break_point=has disabled break point
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script suspended on line %S in %S, file %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=match found for %S in %S log rows
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=match found for %S on line %S in %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=match found for %S in %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=match found for %S in attribute %S=%S of %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=match found for %S in text content: %S of %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=match found for %S in selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=pronađen pogodak za \"%S\" u deklaraciji %S u sektoru %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=match found for %S in DOM property %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=match found for \"%S\" in %S, %S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=match found for %S in net summary row: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=nema rezultata za \"%S\"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Are you sure to reset all Firebug options to the default state?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=Konzola mora biti ukljucena
+warning.Command_line_blocked?=Command line blocked?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Reload to activate window console
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=Resurs ovog URL-a nije tekst
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Go back to this panel
+firebug.history.Stay_on_this_panel=Stay on this panel
+firebug.history.Go_forward_to_this_panel=Go forward to this panel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Go back
+firebug.history.Go_forward=Go forward
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Script Panel was inactive during page load
+script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript is not enabled
+script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Enable JavaScript and Refresh
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=All scripts were filtered
+script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=No Javascript on this page
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Debugger is already active
+script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
+script.button.Go_to_that_page=Go to that page
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Zatvori
+firebug.View=Vidi
+firebug.Help=Pomoc
+firebug.Run=Pokreni
+firebug.Copy=Kopiraj
+firebug.History=History
+firebug.Run_the_entered_command=Run the entered command
+firebug.Clear_the_Command_Editor=Clear the Command Editor
+firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
+firebug.Insert_a_previously_entered_command=Insert a previously entered command
+firebug.AlwaysOpenInWindow=Uvijek otvori u novom prozoru
+firebug.OpenWith=Otvori sa editorom
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Stranice
+firebug.Configure_Editors=Configure Editors
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Pregledaj
+firebug.InspectElement=Pregledaj element
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Break on Errors
+firebug.InspectTooltip=Click an element in the page to inspect
+firebug.EditHTMLTooltip=Izmijeni ovaj HTML
+firebug.Profile=Profil
+firebug.Clear=Ocisti
+firebug.ClearConsole=Ocisti konzolu
+firebug.ClearTooltip=Ocisti konzolu
+firebug.All=Sve
+firebug.Images=Slike
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Configured Firebug Editors
+editors.Editor=Editor
+editors.Executable=Executable
+editors.Launch_Arguments=Launch Arguments
+editors.Add=Add
+editors.Remove=Remove
+editors.Change=Change
+editors.Move_Up=Move Up
+editors.Close=Close
+editors.Browse=Browse...
+changeEditor.Editor_Configuration=Editor Configuration
+changeEditor.Name=Ime:
+changeEditor.Executable=Izvod:
+changeEditor.CmdLine=Argumenti:
+changeEditor.Supplied_arguments=Arguments supplied by Firebug:
+changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
+changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
+changeEditor.Line_number=Line number (if available)
+changeEditor.Invalid_Application_Path=Invalid Application Path
+changeEditor.Application_does_not_exist=The specified application doesn't exist!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Izmijeni
+firebug.css.sourceEdit=Source Edit
+firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
+firebug.css.liveEdit=Live Edit
+firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
+firebug.EditCSSTooltip=Edit this style sheet
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Show Break Notifications
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
+firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=There are no child objects
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=more
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Object Properties
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(no completions)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
+firebug.failedToPreviewImageURL=Failed to load the given URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/hu-HU/cookies.properties b/locale/hu-HU/cookies.properties
index c858e7e..c147169 100644
--- a/locale/hu-HU/cookies.properties
+++ b/locale/hu-HU/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Sütik
-panel.tip.cookies=Megvizsgálhatja és módosíthatja a sütiket
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=A munkamenet végén
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Sütik elfogadása minden webhelyről
-cookies.tip.AllowGlobally=Az összes süti elfogadása vagy blokkolása alapértelmezésként
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Süti események megjelenítése
-cookies.tip.showCookieEvents=Sütikkel kapcsolatos események (változás, törlées) megjelenítése a konzolon
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Sütik törlése visszautasításkor
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Kivágás
-cookies.Copy=Másolás
-cookies.CopyAll=Az összes másolása
-cookies.Paste=Beillesztés
-cookies.Delete=Eltávolítás
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Érték törlése
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Szerkesztés
-cookies.Accept=Elfogadás
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Fejléc visszaállítása
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=Itt megadhatja, hogy mely webhelyek használhatnak sütiket.\nÍrja be a pontos címét az webhelynek, aztán kattintson a Tiltás,\nEngedélyezés a munkamenetben, vagy Engedélyezés gombokra.
-cookies.ExceptionsTitle=Kivételek - Sütik
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Süti figyelés támogatása
-cookies.HostEnable=Sütik panel engedélyezése itt: %S
-cookies.HostDisable=Sütik panel engedélyezése itt: %S
-cookies.Permissions=Sütik panel engedélyezése vagy letiltása
-cookies.PermissionsIntro=Válassza ki azokat a webhelyeket, ahol a Sütik panel engedélyezve, illetve letiltva lesz.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=Rendszer oldalak
-cookies.LocalFiles=Helyi fájlok
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Biztosan eltávolítja a listán szereplő összes sütit?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Biztosan eltávolítja a listán szereplő összes munkamenet sütit?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Ne jelenjen meg többször ez az üzenet
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Süti eltávolítás megerősítése
-cookies.tip.Confirm_cookie_removal=Ha be van jelölve, akkor az összes süti törlése előtt egy megerősítő ablak jelenik meg.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=A listán szereplő összes süti eltávolítása.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Munkamenet sütik eltávolítása
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=A listán szereplő összes munkamenet süti eltávolítása.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Új süti létrehozása itt: %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Tartalom
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Süti jogosultságok beállítása: %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=Az összes süti eltávolítva.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=Az összes süti eltávolítva.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Visszautasított sütik:
-cookies.console.nocookiesreceived=Nem érkeztek be sütik.
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Süti
-cookies.console.deleted=eltávolítva
-cookies.console.added=hozzáadva
-cookies.console.changed=módosítva
-cookies.console.cleared=törölve
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Tartomány
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Biztonságos
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Elfogadva
-cookies.status.downgraded=Visszaállított
-cookies.status.flagged=Megjelölt
-cookies.status.rejected=Visszautasított
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Tartalom
-cookies.info.rawdatatab.Raw_Data=Nyers adat
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Alapértelmezett (munkamenet sütik elfogadása)
-cookies.default.thirdPartySession=Alapértelmezett (munkamenet sütik elfogadása)
-cookies.default.thirdParty=Alapértelmezett (sütik elfogadása)
-cookies.default.allow=Alapértelmezett (sütik elfogadása)
-cookies.default.deny=Alapértelmezett (sütik visszautasítása)
-cookies.default.warn=Alapértelmezett (figyelmeztetés süti elfogadása előtt)
-cookies.host.session=Munkamenet sütik elfogadása innen: %S
-cookies.host.accept=Sütik elfogadása innen: %S
-cookies.host.reject=Sütik visszautasítása innen: %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=A süti neve érvénytelen.
-cookies.edit.invalidhost=A süti kiszolgálója érvénytelen.
-cookies.edit.invalidpath=A süti útvonala érvénytelen.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Név
-cookies.header.value=Tartalom
-cookies.header.rawValue=Nyers érték
-cookies.header.domain=Tartomány
-cookies.header.size=Méret
-cookies.header.path=Útvonal
-cookies.header.expires=Lejárat
-cookies.header.security=Biztonság
-cookies.header.httponly=Csak HTTP
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=A süti neve
-cookies.header.value.tooltip=A sütiben tárolt tartalom
-cookies.header.rawValue.tooltip=A süti által tárolt nyers érték
-cookies.header.domain.tooltip=A tartomány, amely a sütit tárolta
-cookies.header.size.tooltip=A tárolt süti mérete
-cookies.header.path.tooltip=Az útvonal, ahol a süti elérhető
-cookies.header.expires.tooltip=A süti lejárati dátuma
-cookies.header.security.tooltip=Megjeleníti, hogy a süti biztonságos-e vagy sem.
-cookies.header.httponly.tooltip=Megjeleníti, hogy a süti csak HTTP-n át küldhető
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Fogadott sütik
-cookies.netinfo.Sent_Cookies=Küldött sütik
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Útvonal szűrő
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Sütik
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Az összes süti exportálása...
-cookies.export.Export_All_Cookies_Tooltip=A böngésző összes sütijének exportálása a cookies.txt fájlba
-cookies.export.Export_For_Site=A webhely sütijeinek exportálása...
-cookies.export.Export_For_Site_Tooltip=A(z) %S webhely sütijeinek exportálása a cookies.txt fájlba
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=Nincs aktív oldal.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Minden süti változásnál megáll
-cookies.Disable_Break_On_Cookie=Változás figyelés kikapcsolása
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Süti töréspontok
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Megáll minden '%S' sütinél
-cookies.menu.tooltip.Break_On_Cookie=Megáll a(z) '%S' süti módosításánál vagy törlésénél.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Töréspont feltétel szerkesztése
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=A töréspont feltétel nem teljesült
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Sütik eltávolítása
-cookies.Create=Süti létrehozása
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Eszközök
-cookies.ToolsTooltip=Eszközök
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Az összes süti megjelenítése...
-cookies.ViewAllTooltip=Süti-kezelő megjelenítése
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Webhelyek jogosultságai...
-cookies.ViewExceptionsTooltip=Engedélyezett vagy letiltott webhelyek listája
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Szűrő
-cookies.FilterTooltip=A süti lista szűrése a megadott feltételekkel.
-cookies.filter.byPath=Sütik szűrése útvonal alapján
-cookies.filter.byPathTooltip=Sütik szűrése az aktuális útvonalra.
-cookies.filter.showRejectedCookies=Elutasított sütik megjelenítése
-cookies.filter.showRejectedCookiesTooltip=Az elutasított sütik is jelenjenek meg a listán.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Süti szerkesztése
-cookies.edit.name.label=Név:
-cookies.edit.domain.label=Kiszolgáló:
-cookies.edit.path.label=Útvonal:
-cookies.edit.expire.label=Lejárat:
-cookies.edit.value.label=Tartalom:
-cookies.edit.secure.label=Biztonságos süti
-cookies.edit.httponly.label=Csak HTTP
-cookies.edit.session.label=A munkamenet végén lejár
-cookies.edit.urlEncode.label=URL kódolt érték
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Sütik
-cookies.console.Filter_By_Cookies=Szűrés sütik alapján
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Az összes süti eltávolítása
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Sütik
+panel.tip.cookies=Megvizsgálhatja és módosíthatja a sütiket
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=A munkamenet végén
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Sütik elfogadása minden webhelyről
+cookies.tip.AllowGlobally=Az összes süti elfogadása vagy blokkolása alapértelmezésként
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Süti események megjelenítése
+cookies.tip.showCookieEvents=Sütikkel kapcsolatos események (változás, törlées) megjelenítése a konzolon
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Sütik törlése visszautasításkor
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Kivágás
+cookies.Copy=Másolás
+cookies.CopyAll=Az összes másolása
+cookies.Paste=Beillesztés
+cookies.Delete=Eltávolítás
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Érték törlése
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Szerkesztés
+cookies.Accept=Elfogadás
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Fejléc visszaállítása
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=Itt megadhatja, hogy mely webhelyek használhatnak sütiket.\nÍrja be a pontos címét az webhelynek, aztán kattintson a Tiltás,\nEngedélyezés a munkamenetben, vagy Engedélyezés gombokra.
+cookies.ExceptionsTitle=Kivételek - Sütik
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Süti figyelés támogatása
+cookies.HostEnable=Sütik panel engedélyezése itt: %S
+cookies.HostDisable=Sütik panel engedélyezése itt: %S
+cookies.Permissions=Sütik panel engedélyezése vagy letiltása
+cookies.PermissionsIntro=Válassza ki azokat a webhelyeket, ahol a Sütik panel engedélyezve, illetve letiltva lesz.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=Rendszer oldalak
+cookies.LocalFiles=Helyi fájlok
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Biztosan eltávolítja a listán szereplő összes sütit?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Biztosan eltávolítja a listán szereplő összes munkamenet sütit?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Ne jelenjen meg többször ez az üzenet
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Süti eltávolítás megerősítése
+cookies.tip.Confirm_cookie_removal=Ha be van jelölve, akkor az összes süti törlése előtt egy megerősítő ablak jelenik meg.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=A listán szereplő összes süti eltávolítása.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Munkamenet sütik eltávolítása
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=A listán szereplő összes munkamenet süti eltávolítása.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Új süti létrehozása itt: %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Tartalom
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Süti jogosultságok beállítása: %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=Az összes süti eltávolítva.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=Az összes süti eltávolítva.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Visszautasított sütik:
+cookies.console.nocookiesreceived=Nem érkeztek be sütik.
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Süti
+cookies.console.deleted=eltávolítva
+cookies.console.added=hozzáadva
+cookies.console.changed=módosítva
+cookies.console.cleared=törölve
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Tartomány
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Biztonságos
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Elfogadva
+cookies.status.downgraded=Visszaállított
+cookies.status.flagged=Megjelölt
+cookies.status.rejected=Visszautasított
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Tartalom
+cookies.info.rawdatatab.Raw_Data=Nyers adat
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Alapértelmezett (munkamenet sütik elfogadása)
+cookies.default.thirdPartySession=Alapértelmezett (munkamenet sütik elfogadása)
+cookies.default.thirdParty=Alapértelmezett (sütik elfogadása)
+cookies.default.allow=Alapértelmezett (sütik elfogadása)
+cookies.default.deny=Alapértelmezett (sütik visszautasítása)
+cookies.default.warn=Alapértelmezett (figyelmeztetés süti elfogadása előtt)
+cookies.host.session=Munkamenet sütik elfogadása innen: %S
+cookies.host.accept=Sütik elfogadása innen: %S
+cookies.host.reject=Sütik visszautasítása innen: %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=A süti neve érvénytelen.
+cookies.edit.invalidhost=A süti kiszolgálója érvénytelen.
+cookies.edit.invalidpath=A süti útvonala érvénytelen.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Név
+cookies.header.value=Tartalom
+cookies.header.rawValue=Nyers érték
+cookies.header.domain=Tartomány
+cookies.header.size=Méret
+cookies.header.path=Útvonal
+cookies.header.expires=Lejárat
+cookies.header.security=Biztonság
+cookies.header.httponly=Csak HTTP
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=A süti neve
+cookies.header.value.tooltip=A sütiben tárolt tartalom
+cookies.header.rawValue.tooltip=A süti által tárolt nyers érték
+cookies.header.domain.tooltip=A tartomány, amely a sütit tárolta
+cookies.header.size.tooltip=A tárolt süti mérete
+cookies.header.path.tooltip=Az útvonal, ahol a süti elérhető
+cookies.header.expires.tooltip=A süti lejárati dátuma
+cookies.header.security.tooltip=Megjeleníti, hogy a süti biztonságos-e vagy sem.
+cookies.header.httponly.tooltip=Megjeleníti, hogy a süti csak HTTP-n át küldhető
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Fogadott sütik
+cookies.netinfo.Sent_Cookies=Küldött sütik
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Útvonal szűrő
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Sütik
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Az összes süti exportálása...
+cookies.export.Export_All_Cookies_Tooltip=A böngésző összes sütijének exportálása a cookies.txt fájlba
+cookies.export.Export_For_Site=A webhely sütijeinek exportálása...
+cookies.export.Export_For_Site_Tooltip=A(z) %S webhely sütijeinek exportálása a cookies.txt fájlba
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=Nincs aktív oldal.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Minden süti változásnál megáll
+cookies.Disable_Break_On_Cookie=Változás figyelés kikapcsolása
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Süti töréspontok
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Megáll minden '%S' sütinél
+cookies.menu.tooltip.Break_On_Cookie=Megáll a(z) '%S' süti módosításánál vagy törlésénél.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Töréspont feltétel szerkesztése
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=A töréspont feltétel nem teljesült
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Sütik eltávolítása
+cookies.Create=Süti létrehozása
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Eszközök
+cookies.ToolsTooltip=Eszközök
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Az összes süti megjelenítése...
+cookies.ViewAllTooltip=Süti-kezelő megjelenítése
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Webhelyek jogosultságai...
+cookies.ViewExceptionsTooltip=Engedélyezett vagy letiltott webhelyek listája
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Szűrő
+cookies.FilterTooltip=A süti lista szűrése a megadott feltételekkel.
+cookies.filter.byPath=Sütik szűrése útvonal alapján
+cookies.filter.byPathTooltip=Sütik szűrése az aktuális útvonalra.
+cookies.filter.showRejectedCookies=Elutasított sütik megjelenítése
+cookies.filter.showRejectedCookiesTooltip=Az elutasított sütik is jelenjenek meg a listán.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Süti szerkesztése
+cookies.edit.name.label=Név:
+cookies.edit.domain.label=Kiszolgáló:
+cookies.edit.path.label=Útvonal:
+cookies.edit.expire.label=Lejárat:
+cookies.edit.value.label=Tartalom:
+cookies.edit.secure.label=Biztonságos süti
+cookies.edit.httponly.label=Csak HTTP
+cookies.edit.session.label=A munkamenet végén lejár
+cookies.edit.urlEncode.label=URL kódolt érték
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Sütik
+cookies.console.Filter_By_Cookies=Szűrés sütik alapján
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Az összes süti eltávolítása
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/hu-HU/firebug-amo.properties b/locale/hu-HU/firebug-amo.properties
index df23d3d..a8f0d47 100644
--- a/locale/hu-HU/firebug-amo.properties
+++ b/locale/hu-HU/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=A Firebug beépül a Firefox-ba és fejlesztőeszközök tucatjait biztosítsa böngészés közben. Szerkesztheti, monitorozhatja, hibát kereshet élőben az oldalak CSS, HTML és JavaScript kódjában...\\n\\nA Firebug 1.6 futtatásához Firefox 3.6-os vagy újabb verzió szükséges.
-firebug.amo.description=A Firebug a Firefoxba beépülve számtalan fejlesztési segédeszközzel gazdagítja azt, mely böngészés közben bármikor elérhető. Megtekintheti és szerkesztheti bármely weboldal CSS, HTML, illetve JavaScript kódjait...\\n\\nLátogasson el a Firebug honlapjára, ahol részletes dokumentációt, képernyőképeket és felhasználói fórumot is talál: http://getfirebug.com
-firebug.amo.developer.comments=Ha bármi problémája van, kérem látogassa meg a Firebug FAQ-ot.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=A Firebug beépül a Firefox-ba és fejlesztőeszközök tucatjait biztosítsa böngészés közben. Szerkesztheti, monitorozhatja, hibát kereshet élőben az oldalak CSS, HTML és JavaScript kódjában...\\n\\nA Firebug 1.6 futtatásához Firefox 3.6-os vagy újabb verzió szükséges.
+firebug.amo.description=A Firebug a Firefoxba beépülve számtalan fejlesztési segédeszközzel gazdagítja azt, mely böngészés közben bármikor elérhető. Megtekintheti és szerkesztheti bármely weboldal CSS, HTML, illetve JavaScript kódjait...\\n\\nLátogasson el a Firebug honlapjára, ahol részletes dokumentációt, képernyőképeket és felhasználói fórumot is talál: http://getfirebug.com
+firebug.amo.developer.comments=Ha bármi problémája van, kérem látogassa meg a Firebug FAQ-ot.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/hu-HU/firebug-tracing.properties b/locale/hu-HU/firebug-tracing.properties
index 0c20fb4..83133cf 100644
--- a/locale/hu-HU/firebug-tracing.properties
+++ b/locale/hu-HU/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Firebug Nyomkövető megnyitása
-Always_Open_Firebug_Tracing=Mindig nyissa meg a Nyomkövetőt
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Nyomkövető
-tracing.Show_Scope_Variables=Hatókör változóinak megjelenítése
-tracing.Show_Time=Idő megjelenítése
-tracing.tab.Stack=Verem
-tracing.tab.Exception=Kivétel
-tracing.tab.Properties=Tulajdonságok
-tracing.tab.Scope=Hatókör
-tracing.tab.Response=Válasz
-tracing.tab.Source=Forrás
-tracing.tab.Interfaces=Interfészek
-tracing.tab.Object=Objektum
-tracing.tab.Event=Esemény
-tracing.cmd.Clear=Törlés
-tracing.cmd.tip.Clear=Az összes üzenet törlése
-tracing.cmd.Find=Keresés
-tracing.cmd.tip.Find=Szöveg keresése
-tracing.cmd.Bookmark=Könyvjelző
-tracing.cmd.tip.Bookmark=Könyjelző beszúrása
-tracing.cmd.Restart=Firefox újraindítása
-tracing.cmd.tip.Restart=Firefox újraindítása
-tracing.cmd.Exit=Kilépés a Firefoxból
-tracing.cmd.tip.Exit=Kilépés a Firefoxból
-tracing.cmd.Save=Mentés fájlba
-tracing.cmd.tip.Save=Naplók mentése fájlba
-tracing.cmd.Load=Betöltés fájlból
-tracing.cmd.tip.Load=Naplók betöltése fájlból
-tracing.cmd.Expand_All=Az összes kibontása
-tracing.cmd.Collapse_All=Az összes becsukása
-tracing.cmd.Tools=Eszközök
-tracing.cmd.tip.Tools=Eszközök
-tracing.cmd.Clear_Browser_Cache=Böngésző gyorsítótárának ürítése
-tracing.cmd.tip.Clear_Browser_Cache=Böngésző gyorsítótárának ürítése
-tracing.cmd.Force_Garbage_Collector=Szemétgyűjtés kényszerítése
-tracing.cmd.tip.Force_Garbage_Collector=Szemétgyűjtés kényszerítése
-tracing.cmd.Open_Profile_Directory=Profil könyvtár megnyitása
-tracing.cmd.tip.Open_Profile_Directory=Profil könyvtár megnyitása
-tracing.option.A11Y_Description=Problémák az akadálymentességgel
-tracing.option.ACTIVATION_Description=Firebug aktiválása
-tracing.option.ACTIVITYOBSERVER_Description=Firebug aktivitás figyelő
-tracing.option.ANNOTATIONS_Description=Firebug weboldal annotáció
-tracing.option.BP_Description=Töréspontok
-tracing.option.CACHE_Description=Forráskód gyorsítótár
-tracing.option.COMMANDLINE_Description=Parancssor és parancssor előugró ablak
-tracing.option.COMPILATION_UNITS_Description=Szkript fordítási egységek
-tracing.option.CONSOLE_Description=Konzol panel
-tracing.option.CSS_Description=CSS elemzés
-tracing.option.DISPATCH_Description=Esemény terjesztés
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate létrehozás
-tracing.option.EDITOR_Description=Inline szerkesztő és automatikus kiegészítés
-tracing.option.ERRORLOG_Description=JS, CSS, XML, stb. hibanaplózás
-tracing.option.ERRORS_Description=Belső Firebug hibák
-tracing.option.EVAL_Description=Szkript kiértékelés
-tracing.option.FBS_BP_Description=Firebug szolgáltatás töréspontok
-tracing.option.FBS_CREATION_Description=Firebug szolgáltatás szkript létrehozás
-tracing.option.FBS_ERRORS_Description=Firebug szolgáltatás hibák
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug szolgáltatás hibakereső
-tracing.option.FBS_FUNCTION_Description=Firebug szolgáltatás függvény
-tracing.option.FBS_JSDCONTEXT_Description=Firebug szolgáltatás JavaScript hibakereső környezet
-tracing.option.FBS_SRCUNITS_Description=Firebug szolgáltatás forrás egységek
-tracing.option.FBS_STEP_Description=Firebug szolgáltatás JavaScript hibakereső lépegetés
-tracing.option.FBS_TRACKFILES_Description=Firebug szolgáltatás követett fájlok
-tracing.option.FUNCTION_NAMES_Description=JavaScript függvény nevek
-tracing.option.HISTORY_Description=Firebug navigációs előzmények
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP kérés figyelő
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug inicializáció
-tracing.option.INSPECT_Description=Vizsgáló
-tracing.option.JSONVIEWER_Description=JSON megjelenítő
-tracing.option.LINETABLE_Description=Szkript sor táblázat
-tracing.option.LOCALE_Description=Lokalizáció
-tracing.option.LOCATIONS_Description=Forrás lokalizációk
-tracing.option.NET_Description=Net panel
-tracing.option.NET_EVENTS_Description=Hálózati események
-tracing.option.OPTIONS_Description=Firebug beállítások
-tracing.option.PANELS_Description=Panelek
-tracing.option.SHORTCUTS_Description=Billentyű parancsok
-tracing.option.SOURCEFILES_Description=JavaScript forrásfájlok
-tracing.option.SPY_Description=XMLHttpRequest figyelő
-tracing.option.STACK_Description=JavaScript hívási verem
-tracing.option.STORAGE_Description=Beállítások tárolója
-tracing.option.SVGVIEWER_Description=SVG megjelenítő
-tracing.option.FONTS_Description=Betűtípus információ és betűtípus nézegető
-tracing.option.TOOLTIP_Description=Start gomb gyorstipp
-tracing.option.TOPLEVEL_Description=Felsőszintű JavaScript
-tracing.option.UI_LOOP_Description=JavaScript hibakereső felhasználói felülete
-tracing.option.WINDOWS_Description=Firebug ablakok és fül figyelő
-tracing.option.XMLVIEWER_Description=XML megjelenítő
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Firebug Nyomkövető megnyitása
+Always_Open_Firebug_Tracing=Mindig nyissa meg a Nyomkövetőt
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Nyomkövető
+tracing.Show_Scope_Variables=Hatókör változóinak megjelenítése
+tracing.Show_Time=Idő megjelenítése
+tracing.tab.Stack=Verem
+tracing.tab.Exception=Kivétel
+tracing.tab.Properties=Tulajdonságok
+tracing.tab.Scope=Hatókör
+tracing.tab.Response=Válasz
+tracing.tab.Source=Forrás
+tracing.tab.Interfaces=Interfészek
+tracing.tab.Object=Objektum
+tracing.tab.Event=Esemény
+tracing.cmd.Clear=Törlés
+tracing.cmd.tip.Clear=Az összes üzenet törlése
+tracing.cmd.Find=Keresés
+tracing.cmd.tip.Find=Szöveg keresése
+tracing.cmd.Bookmark=Könyvjelző
+tracing.cmd.tip.Bookmark=Könyjelző beszúrása
+tracing.cmd.Restart=Firefox újraindítása
+tracing.cmd.tip.Restart=Firefox újraindítása
+tracing.cmd.Exit=Kilépés a Firefoxból
+tracing.cmd.tip.Exit=Kilépés a Firefoxból
+tracing.cmd.Save=Mentés fájlba
+tracing.cmd.tip.Save=Naplók mentése fájlba
+tracing.cmd.Load=Betöltés fájlból
+tracing.cmd.tip.Load=Naplók betöltése fájlból
+tracing.cmd.Expand_All=Az összes kibontása
+tracing.cmd.Collapse_All=Az összes becsukása
+tracing.cmd.Tools=Eszközök
+tracing.cmd.tip.Tools=Eszközök
+tracing.cmd.Clear_Browser_Cache=Böngésző gyorsítótárának ürítése
+tracing.cmd.tip.Clear_Browser_Cache=Böngésző gyorsítótárának ürítése
+tracing.cmd.Force_Garbage_Collector=Szemétgyűjtés kényszerítése
+tracing.cmd.tip.Force_Garbage_Collector=Szemétgyűjtés kényszerítése
+tracing.cmd.Open_Profile_Directory=Profil könyvtár megnyitása
+tracing.cmd.tip.Open_Profile_Directory=Profil könyvtár megnyitása
+tracing.option.A11Y_Description=Problémák az akadálymentességgel
+tracing.option.ACTIVATION_Description=Firebug aktiválása
+tracing.option.ACTIVITYOBSERVER_Description=Firebug aktivitás figyelő
+tracing.option.ANNOTATIONS_Description=Firebug weboldal annotáció
+tracing.option.BP_Description=Töréspontok
+tracing.option.CACHE_Description=Forráskód gyorsítótár
+tracing.option.COMMANDLINE_Description=Parancssor és parancssor előugró ablak
+tracing.option.COMPILATION_UNITS_Description=Szkript fordítási egységek
+tracing.option.CONSOLE_Description=Konzol panel
+tracing.option.CSS_Description=CSS elemzés
+tracing.option.DISPATCH_Description=Esemény terjesztés
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate létrehozás
+tracing.option.EDITOR_Description=Inline szerkesztő és automatikus kiegészítés
+tracing.option.ERRORLOG_Description=JS, CSS, XML, stb. hibanaplózás
+tracing.option.ERRORS_Description=Belső Firebug hibák
+tracing.option.EVAL_Description=Szkript kiértékelés
+tracing.option.FBS_BP_Description=Firebug szolgáltatás töréspontok
+tracing.option.FBS_CREATION_Description=Firebug szolgáltatás szkript létrehozás
+tracing.option.FBS_ERRORS_Description=Firebug szolgáltatás hibák
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug szolgáltatás hibakereső
+tracing.option.FBS_FUNCTION_Description=Firebug szolgáltatás függvény
+tracing.option.FBS_JSDCONTEXT_Description=Firebug szolgáltatás JavaScript hibakereső környezet
+tracing.option.FBS_SRCUNITS_Description=Firebug szolgáltatás forrás egységek
+tracing.option.FBS_STEP_Description=Firebug szolgáltatás JavaScript hibakereső lépegetés
+tracing.option.FBS_TRACKFILES_Description=Firebug szolgáltatás követett fájlok
+tracing.option.FUNCTION_NAMES_Description=JavaScript függvény nevek
+tracing.option.HISTORY_Description=Firebug navigációs előzmények
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP kérés figyelő
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug inicializáció
+tracing.option.INSPECT_Description=Vizsgáló
+tracing.option.JSONVIEWER_Description=JSON megjelenítő
+tracing.option.LINETABLE_Description=Szkript sor táblázat
+tracing.option.LOCALE_Description=Lokalizáció
+tracing.option.LOCATIONS_Description=Forrás lokalizációk
+tracing.option.NET_Description=Net panel
+tracing.option.NET_EVENTS_Description=Hálózati események
+tracing.option.OPTIONS_Description=Firebug beállítások
+tracing.option.PANELS_Description=Panelek
+tracing.option.SHORTCUTS_Description=Billentyű parancsok
+tracing.option.SOURCEFILES_Description=JavaScript forrásfájlok
+tracing.option.SPY_Description=XMLHttpRequest figyelő
+tracing.option.STACK_Description=JavaScript hívási verem
+tracing.option.STORAGE_Description=Beállítások tárolója
+tracing.option.SVGVIEWER_Description=SVG megjelenítő
+tracing.option.FONTS_Description=Betűtípus információ és betűtípus nézegető
+tracing.option.TOOLTIP_Description=Start gomb gyorstipp
+tracing.option.TOPLEVEL_Description=Felsőszintű JavaScript
+tracing.option.UI_LOOP_Description=JavaScript hibakereső felhasználói felülete
+tracing.option.WINDOWS_Description=Firebug ablakok és fül figyelő
+tracing.option.XMLVIEWER_Description=XML megjelenítő
diff --git a/locale/hu-HU/firebug.properties b/locale/hu-HU/firebug.properties
index 5c160e0..7c44aa4 100644
--- a/locale/hu-HU/firebug.properties
+++ b/locale/hu-HU/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Konzol
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Net
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Szkript
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Stílus
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Számított
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Elrendezés
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Figyelés
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Töréspontok
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Verem
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Hatókörök
-firebug.DetachFirebug=Firebug megnyitása új ablakban
-firebug.AttachFirebug=Firebug megnyitása oldalsávban
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Firebug összesen;%1$S Firebug összesen
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Deactivated
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=Böngészőben
-minimized=Kis méret
-enablement.for_all_pages=összes oldalon
-enablement.on=Be
-enablement.off=Ki
-enablement.Panel_activation_status=Panel activation status:
-none=Bezárva
-Firebug_-_inactive_for_current_website=Firebug - kikapcsolva az aktuális weboldalon
-Activate_Firebug_for_the_current_website=Firebug bekapcsolása az aktuális weboldalon
-Minimized=Kis méretű
-Minimize_Firebug=Kis méret
-On_for_all_web_pages=Bekapcsolás az összes oldalon
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Aktivációs lista törlése
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI elhelyezkedése
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Firebug beállítások
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Az összes panel megjelenítése
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=JavaScript hibák megjelenítése
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=JavaScript figyelmeztetések megjelenítése
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=CSS hibák megjelenítése
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Veremmel kiíratása a hibák mellett
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=XMLHttpRequest események megjelenítése
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Chrome hibák megjelenítése
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Chrome üzenetek megjelenítése
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Külső hibák megjelenítése
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Hálózati hibák megjelenítése
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Szigorú figyelmeztetések (csökkenti a teljesítményt)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Parancselőzmények
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Kiegészítő felugró lista megjelenítése
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Assertion meghiúsulás
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (%S. sor)
-LineAndCol=%S (%S. sor, %S. oszlop)
-InstanceLine=%S #%S (%S. sor)
-StackItem=%S (%S, %S. sor)
-SystemItem=<Rendszer>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(névtelen)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Teljes szöveg megjelenítése
-html.option.tip.Show_Full_Text=Don't crop element contents
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Szóközök megjelenítése
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Megjegyzések megjelenítése
-html.option.tip.Show_Comments=Show comment nodes
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Változások kiemelése
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Változások kibontása
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Görgess a változásokhoz
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Gyors infó doboz megjelenítése
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Shade Box Model
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Görgess oda
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Új tulajdonság...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Elem törlés
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Csomópont törlés
-html.Delete_Node=Delete the node from the tree
-# Quick Info Box
-quickInfo=Gyors infó
-computedStyle=Számított stílus
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Minden mutációnál megáll
-html.Disable_Break_On_Mutate=Ne álljon meg mutációnál
-html.label.Break_On_Text_Change=Szöveg változásakor megáll
-html.label.HTML_Breakpoints=HTML töréspontok
-html.label.Break_On_Attribute_Change=Attribútum változásakor megáll
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Gyermekelem felvételkor vagy eltávolításkor megáll
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Elem eltávolításakor megáll
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Az összes kibontása/összecsukása
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Megszakítás tulajdonság megváltozásakor
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Tulajdonság változáskövetés kikapcsolása
-dom.label.DOM_Breakpoints=DOM töréspontok
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=\"%S\" tulajdonság szerkesztése...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=\"%S\" tulajdonság törlése
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Örökölt:
-SothinkWarning=A Sothink SWF Catcher bővítmény akadályozza a Firebug korrekt működését.<br><br>További segítségért kérlek olvasd el <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">ezt az oldalt a Firebug FAQ-ban</a>.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=Árvíztűrő tükörfúrógép. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=Nincsenek szabályok. <a>Szabály létrehozása</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=Ehhez az elemhez nem tartoznak stílusszabályok. <a>Szabály létrehozása</a>.
-EditStyle=Elem stílusának szerkesztése...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Új szabály...
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Új tulajdonság...
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=\"%S\" szerkesztése...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=\"%S\" letiltása
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=\"%S\" törlése
-css.tip.Delete_Prop=Delete the property "%S"
-# Console context menu labels.
-BreakOnThisError=Ennél a hibánál megáll
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Minden hibánál megáll
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Throw/Catch nyomkövetése
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Utolsó forráskód sor használata eval() neveknél
-UseMD5ForEvalName=MD5 név használata eval() neveknél
-# Breakpoints side panel
-Breakpoints=Töréspontok
-ErrorBreakpoints=Hiba töréspontok
-LoggedFunctions=Naplózott függvények
-EnableAllBreakpoints=Összes töréspont engedélyezése
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Összes töréspont letiltása
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Összes töréspont eltávolítása
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Ezen a törésponton akkor áll meg, ha a következő kifejezés igaz:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Töréspontok eltávolítása
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Töréspont kikapcsolása
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Töréspont bekapcsolása
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Folytatás
-script.balloon.Disable=Letiltás
-ScriptsFilterStatic=Statikus szkriptek megjelenítése
-ScriptsFilterEval=Statikus és eval szkriptek megjelenítése
-ScriptsFilterEvent=Statikus és esemény szkriptek megjelenítése
-ScriptsFilterAll=Statikus, eval és esemény szkriptek megjelenítése
-ScriptsFilterStaticShort=statikus
-ScriptsFilterEvalShort=eval
-ScriptsFilterEventShort=események
-ScriptsFilterAllShort=mind
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Az összes kibontása
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Az összes becsukása
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Felhasználói tulajdonságok megjelenítése
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Felhasználói függvények megjelenítése
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=DOM tulajdonságok megjelenítése
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=DOM függvények megjelenítése
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=DOM konstansok megjelenítése
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Inline eseménykezelők megjelenítése
-ShowInlineEventHandlersTooltip=Elérhető inline eseménykezelők megjelenítése, amelyek nincsenek függvényhez rendelve.
-ShowOwnProperties=Csak saját tulajdonságok megjelenítése
-ShowOwnPropertiesTooltip=Ne jelenjen meg a prototípus lánc
-ShowEnumerableProperties=Csak felsorolható tulajdonságok megjelenítése
-ShowEnumerablePropertiesTooltip=Ne jelenjenek meg a nem felsorolható tulajdonságok
-NoMembersWarning=Ennek az objektumnak nincsenek megjeleníthető tulajdonságai.
-NewWatch=Új megfigyelő kifejezés...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=megfigyelés hozzáadás
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Forrás másolása
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Írja be, hogy #<szám>, az adott sorra való ugráshoz
-CopyValue=Érték másolása
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Név másolása
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Útvonal másolása
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Új tulajdonság...
-EditProperty=Tulajdonság szerkesztés...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Változó szerkesztés...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Megfigyelő szerkesztés...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Tulajdonság törlése
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Megfigyelő törlése
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Töréspont beállítása
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Töréspont feltétel szerkesztés...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=Ezen az oldalon nincs beállítva töréspont.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Csak alkalmazott stílusok megjelenítése
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Beépített CSS megjelenítése
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Rövidített tulajdonságok kibővítése
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Rendezés ábécérendben
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Mozilla specifikus stílusok megjelenítése
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Gépeljen be egy karaktert a lista szűréséhez
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=position
-LayoutAdjacent=szomszédos
-position=position
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Vonalzók és segédvonalak megjelenítése
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Net panel
-Loading=Betöltés...
-Headers=Fejlécek
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Fejlécek visszaállítása
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=Lekérdezett URL és használt HTTP metódus.
-net.header.Status=Állapot
-net.header.Status_Tooltip=A fogadott válasz állapota.
-net.header.Domain=Tartomány
-net.header.Domain_Tooltip=A futtatott kérés tartománya.
-net.header.Size=Méret
-net.header.Size_Tooltip=A válasz mérete.
-net.header.Timeline=Idővonal
-net.header.Timeline_Tooltip=Részletes időzítési adatok a kérés oda-vissza útjáról.
-net.header.Local_IP=Helyi IP
-net.header.Local_IP_Tooltip=Helyi IP cím és port szám, amiről a kérés kiment.
-net.header.Remote_IP=Távoli IP
-net.header.Remote_IP_Tooltip=Távoli IP cím és port szám, amire a kérés kiment.
-net.header.Protocol=Protokoll
-net.header.Protocol_Tooltip=Az URL protokoll, amelyen keresztül az erőforrás hozzáférhető a weben.
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=XHR töréspontok
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Megáll XHR esetén
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=forrás megtekintése
-net.headers.pretty_print=pretty print
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Média
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=POST
-Put=PUT
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Válasz
-URLParameters=Paraméterek
-Cache=Gyorsítótár
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Általános információ
-fontviewer.Meta_Data=Metaadatok
-fontviewer.view_source=forrás megtekintése
-fontviewer.Preview=Előnézet
-fontviewer.view_characters=karakterek megtekintése
-fontviewer.pretty_print=végső külalak
-fontviewer.view_sample=minta megtekintése
-fontviewer.uniqueid=Egyedi azonosító
-fontviewer.vendor=Gyártó
-fontviewer.license=Licenc
-fontviewer.description=Leírás
-fontviewer.copyright=Szerzői jogok
-fontviewer.credits=Készítette
-fontviewer.trademark=Védjegy
-fontviewer.licensee=Licenc-tulajdonos
-fontviewer.extension=Kiterjesztés
-fontviewer.pangram=Árvíztűrő tükör fúrógép
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Rendezés kulcs szerint
-jsonviewer.do_not_sort=Rendezetlen
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=\"%S\" másolása JSON-ként
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Kérés fejlécek
-ResponseHeaders=Válasz fejlécek
-CachedResponseHeaders=Válasz fejlécek a gyorsítótárból
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=A Firebug naplója elérte a méretkorlátot. %1$S bejegyzés nem került megjelenítésre.;A Firebug naplója elérte a méretkorlátot. %1$S bejegyzés nem került megjelenítésre.
-LimitPrefs=Beállítások
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Hogy változtass a korláton, módosítsd a következőt: %S
-Refresh=Frissítés
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Megnyitás új lapon
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Válasz megnyitása új fülön
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Futásidő elemzés
-ProfilerStarted=Az elemző már fut. Az eredmény megjelenítéséhez kattints újból a \'Futásidő elemzésre\'.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S hívás);(%1$Sms, %2$S hívás)
-NothingToProfile=Nem volt mérhető tevékenység.
-PercentTooltip=A függvényben eltöltött idő százalékban.
-CallsHeaderTooltip=Függvényhívások száma.
-OwnTimeHeaderTooltip=A függvényben töltött idő, a belső hívásokat leszámítva.
-TimeHeaderTooltip=A függvényben töltött idő, a belső hívásokkal együtt.
-AvgHeaderTooltip=Átlag idő, beleértve a függvényhívásokat.
-MinHeaderTooltip=Minimum idő, beleértve a függvényhívásokat.
-MaxHeaderTooltip=Maximum idő, beleértve a függvényhívásokat.
-ProfileButton.Enabled.Tooltip=JavaScript futásidő elemzés.
-ProfileButton.Disabled.Tooltip=JavaScript futásidő elemzés (Szkript panel engedélyezése szükséges).
-Function=Függvény
-Percent=Százalék
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Hívások
-OwnTime=Saját idő
-Time=Idő
-Avg=Átlag
-Min=Min
-Max=Max
-File=Fájl
-# Support for standard actions.
-Copy=Másolás
-Cut=Kivágás
-Remove=Eltávolítás
-Delete=Delete
-Paste=Beilleszt
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=innerHTML másolása
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=XPath másolása
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=CSS útvonal másolása
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Cím másolása
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Cím másolása paraméterekkel együtt
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Kérés fejlécek másolása
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Válasz fejlécek másolása
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Válasz törzs másolása
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Hiba másolása
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Függvény másolása
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Hívások naplózása ide: \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Események naplózása
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Engedélyezés
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=A Firebug konzol nem támogatja a(z) \'%S\' metódust
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=A Firebug parancssor nem támogatja a(z) \'%S\' metódust.
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Ne álljon meg minden hibánál
-console.Break_On_All_Errors=Minden hibánál megáll
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Megszakítás ennél a hibánál
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=A JavaScript jelenleg le van tiltva a Firefox beállításaiban. Ha szeretné használni a Konzol panelt, kérem engedélyezze az \'Eszközök\' -> \'Beállítások\' -> \'Tartalom\' -> \'JavaScript engedélyezése\' opciót.
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=Túl sok elem van a tömbben az összes kiemeléséhez az oldalon (az aktuális korlát %S).
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=A Firebug parancssora ki van kapcsolva XML oldalakon. <a>Váltson át HTML-re</a> a bekapcsolásához.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Válasz tartalom
-net.sizeinfo.Post_Body=POST tartalom
-net.sizeinfo.Total_Sent=Küldött méret
-net.sizeinfo.Total_Received=Fogadott méret
-net.sizeinfo.Including_HTTP_Headers=HTTP fejlécek beszámítása
-net.ActivationMessage=Net panel bekapcsolva. Ha a Net panel ki van kapcsolva, akkor a kérések nem jelennek meg.
-net.responseSizeLimitMessage=Elérte a Firebug a válasz méretkorlátját. Kattints <a>ide</a>, hogy az egész választ megnyisd egy új fülön.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=A POST adat mérete elérte a korlátot, ezért a Firebug eltávolította.
-net.Break_On_XHR=Megállítás XHR esetén
-net.label.Parameters=Paraméterek
-net.label.Parts=Parts???
-net.label.Source=Forrás
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Újraküldés
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Böngésző gyorsítótár letiltása
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Rajzolási események megjelenítése
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=BFCache válaszok megjelenítése
-net.option.tip.Show_BFCache_Responses=A BFCache-ből (Vissza-Előre gyorsítótárból) érkező válaszok megjelenítése
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Break On Next
-script.Disable_Break_On_Next=Töréspont kikapcsolása legközelebb
-ShowHttpHeaders=HTTP fejlécek megjelenítése
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S kérés;%1$S kérés
-FromCache=gyorsítótárból
-StopLoading=Betöltés leállítása
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Nagyon nagy adat)
-ShowComputedStyle=Számított stíluslapok megjelenítése
-StyleGroup-text=Szöveg
-StyleGroup-background=Háttér
-StyleGroup-box=Doboz modell
-StyleGroup-layout=Elrendezés
-StyleGroup-other=Egyéb
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Szín másolása
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Kép címének másolása
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Kép megnyitása új fülön
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Eszköztár verem kihagyása
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Eredeti forrás betöltése
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Szabály deklarációjának másolása
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Stílus deklaráció másolása
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S hiba;%1$S hiba
-moduleManager.title=%S panel letiltva
-moduleManager.desc3=A Firebug állapotsor ikonjának környezeti menüjével be- és kikapcsolhatja az összes panelt. A panel fülek kis menüjével a panel paramétereit állíthatja be:
-moduleManager.Enable=Engedélyezés
-Suspend_Firebug=Firebug felfüggesztése
-Resume_Firebug=Firebug futtatása
-Reset_Panels_To_Disabled=Panelek visszaállítása kikapcsoltra
-Open_Console=Konzol megnyitása
-Open_Console_Tooltip=A Firebug nyomkövető konzoljának megnyitása.
-Scope_Chain=Hatókör lánc
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=Ezzel
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Hívás
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Ablak
-Logs=Napló
-Options=Opciók
-Copy_Stack=Verem másolása
-Copy Exception=Kivétel másolása
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blokkolás
-requestinfo.Resolving=DNS lekérdezés
-requestinfo.Connecting=csatlakozás
-requestinfo.Sending=Küldés
-requestinfo.Waiting=Várakozás
-requestinfo.Receiving=Fogadás
-requestinfo.ContentLoad=\'DOMContentLoaded\' (esemény)
-requestinfo.WindowLoad=\'load\' (esemény)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Kérés kezdési ideje a legelsőtől
-requestinfo.phases.label=A kérési fázisok kezdési és eltelt ideje a kérés elejétől fogva:
-requestinfo.timings.label=Esemény időzítések a kérés elejétől fogva:
-search.Firebug_Search=Firebug keresés
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Következő
-search.tip.Next=Search for the next match
-search.Previous=Előző
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Kis- és nagybetűk erőltetett megkülönböztetése
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Kis- és nagybetűk figyelmen kívül hagyása
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Több fájl
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Reguláris kifejezés használata
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS szelektor
-search.net.Headers=Fejlécek
-search.net.Parameters=Paraméterek
-search.net.Response_Bodies=Válasz törzsek
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Rögzít
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Összes naplóbejegyzés megjelenítése
-firebug.console.Errors=Hibák
-firebug.console.Filter_by_Errors=Szűrés hibák alapján
-firebug.console.Warnings=Figyelmeztetések
-firebug.console.Filter_by_Warnings=Szűrés figyelmeztetések alapján
-firebug.console.Info=Infók
-firebug.console.Filter_by_Info=Szűrés infók alapján
-firebug.console.Debug_Info=Hibakeresési infók
-firebug.console.Filter_by_Debug_Info=Szűrés hibakeresési infók alapján
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Firebug megnyitása
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Firebug elrejtése
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Az összes panel engedélyezése
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Az összes panel letiltása
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Billentyűparancsok testreszabása
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Beállítások
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Kisegítő lehetőségek bekapcsolása
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Az összes beállítás visszaállítása
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug Online
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Hibaszámláló megjelenítése
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Szöveg nagyítása
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Nagyítás
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Kicsinyítés
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Visszaállítás
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Firebug honlap...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Dokumentáció...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Gyorsbillentyűk...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Vita fórum...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Hibabejelentő...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Támogatás...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Névjegy...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Keresés
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Parancs megismétlése
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Vizsgálat ki/bekapcsolása
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Gyors infó doboz ki/bekapcsolása
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Mérés ki/bekapcsolása
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Fókuszálás a parancssorra
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Fókuszálás a Firebug keresőre
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Fókuszálás a Figyelő szerkesztőre
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Fókuszálás a címsorra
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Következő objektum
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Előző objektum
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Firebug billentyűparancsok testreszabása
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Firebug megnyitása új ablakban
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Váltás a baloldali Firebug panelra
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Váltás a jobboldali Firebug panelra
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Firebug megnyitása
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Előző Firebug fül
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Konzol ürítése
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Figyelő konzol megnyitása
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Vissza
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Előre
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Szövegméret növelése
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Szövegméret csökkentése
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normál szövegméret
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Panel kiválasztó
-customizeShortcuts=Firebug billentyűparancsok beállítása
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=panel eszközök
-a11y.labels.firebug_panels=Firebug panelek
-a11y.labels.firebug_side_panels=Firebug oldalsáv
-a11y.labels.firebug_window=Firebug ablak
-a11y.labels.firebug_status=Firebug állapotsor
-a11y.labels.reset=visszaállít
-a11y.labels.reset_shortcut=%S billentyűparancs visszaállítása
-aria.labels.inactive_panel=inaktív panel
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=napló sorok
-a11y.labels.call_stack=hívási verem
-a11y.labels.document_structure=dokumentum struktúra
-a11y.labels.title_panel=%S panel
-a11y.labels.title_side_panel=%S oldalsáv
-a11y.labels.cached=gyorsítótárazva
-aria.labels.stack_trace=verem követés
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=position
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=margin top
-a11y.layout.margin_right=margin right
-a11y.layout.margin_bottom=margin bottom
-a11y.layout.margin_left=margin left
-a11y.layout.border_top=border top
-a11y.layout.border_right=border right
-a11y.layout.border_bottom=border bottom
-a11y.layout.border_left=border left
-a11y.layout.padding_top=padding top
-a11y.layout.padding_right=padding right
-a11y.layout.padding_bottom=padding bottom
-a11y.layout.padding_left=padding left
-a11y.layout.top=top
-a11y.layout.right=right
-a11y.layout.bottom=bottom
-a11y.layout.left=left
-a11y.layout.width=width
-a11y.layout.height=height
-a11y.layout.size=size
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=Nyomjon Entert, majd Tabot az egyes elemek szerkesztéséhez
-a11y.labels.style_rules=stílus szabályok
-aria.labels.inherited_style_rules=örökölt stílus szabályok
-a11y.labels.computed_styles=számított stílus szabályok
-a11y.labels.dom_properties=DOM tulajdonságok
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=beágyazott szerkesztő
-a11y.labels.value_for_attribute_in_element=%S elem %S attribútumának értéke
-a11y.labels.attribute_for_element=%S elem attribútuma
-a11y.labels.text_contents_for_element=%S elem szöveges tartalma
-a11y.labels.defined_in_file=a(z) %S fájlban definiálva
-a11y.labels.declarations_for_selector=\"%S\" szelektor stílusdeklarációi
-a11y.labels.property_for_selector=CSS tulajdonság a következő szelektorhoz: %S
-a11y.labels.value_property_in_selector=%S tulajdonságának értéke a(z) %S szelektorban
-a11y.labels.css_selector=CSS szelektor
-a11y.labels.source_code_for_file=%S fájl forráskódja
-a11y.labels.press_enter_to_add_new_watch_expression=nyomjon entert új figyelő kifejezés hozzáadásához
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=felülírva
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=van feltételes töréspont
-a11y.updates.has_disabled_break_point=van letiltott töréspont
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Szkript felfüggesztve a(z) %S. sorban, a(z) %S függvényben, a(z) %S fájlban
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=találat a(z) \"%S\" szövegre a napló %S sorában
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=találat a(z) \"%S\" szövegre a(z) %S. sorban a(z) %S fájlban
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=találat a(z) \"%S\" szövegre a(z) %S elemben a(z) %S útvonalon
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=találat a(z) \"%S\" szövegre a(z) %S=%S attribútumban, a(z) %S elemben a(z) %S útvonalon
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=találat a(z) \"%S\" szövegre a szöveges tartalomban: %S a %S elemben a(z) %S útvonalon
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=találat a(z) \"%S\" szövegre a(z) %S szelektorban
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=találat a(z) \"%S\" szövegre a(z) %S stílusdeklarációban, a(z) %S szelektorban
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=találat a(z) \"%S\" szövegre a(z) %S DOM tulajdonságban
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=találat a(z) \"%S\" szövegre: %S, %S: %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=talált a(z) \"%S\" szövegre a hálózati-összefoglaló sorban: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=nincs találat a következőre: \"%S\"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Biztosan visszaállítasz minden Firebug beállítást az alapértelmezett értékére?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=A már meglévő CSS módosításai el fognak veszni.
-# Console messages
-warning.Console_must_be_enabled=Engedélyezni kell a konzolt.
-warning.Command_line_blocked?=A parancssor blokkolva?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Frissítsen, hogy aktiválódjon a konzol.
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Oldal újratöltése a következő forrásának betöltéséhez:
-message.The_resource_from_this_URL_is_not_text=Az erőforrás, ami az URL-hez tartozik nem szöveges
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Vissza ehhez a panelhez
-firebug.history.Stay_on_this_panel=Maradjon ezen a panelen
-firebug.history.Go_forward_to_this_panel=Előre ehhez a panelhez
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Vissza
-firebug.history.Go_forward=Előre
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=A Szkript panel ki volt kapcsolva az oldal betöltésekor
-script.suggestion.inactive_during_page_load2=Az összes forrás megtekintéséhez <a>töltse újra</a> az oldalt.
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=A JavaScript le van tiltva
-script.suggestion.javascript_not_enabled=JavaScript engedélyezése: Firefox > Eszközök > Beállítások > Tartalom > JavaScript engedélyezése
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=JavaScript engedélyezése és frissítés
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Az összes szkript szűrve
-script.suggestion.all_scripts_filtered=Ellenőrizze a szkript szűrés beállításokat az eszköztáron vagy a \"Chrome források megjelenítése\" beállítást
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=Nincs JavaScript az oldalon
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=A hibakereső már aktív
-script.suggestion.debugger_active=A hibakereső jelenleg leállt egy töréspontnál egy másik oldalon.
-script.button.Go_to_that_page=Ugrás az oldalra
-script.warning.debugger_not_activated=A hibakereső nincs aktiválva
-script.suggestion.debugger_not_activated=A hibakereső nincs aktiválva
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Bezárás
-firebug.View=Nézet
-firebug.Help=Súgó
-firebug.Run=Futtatás
-firebug.Copy=Másolás
-firebug.History=Előzmények
-firebug.Run_the_entered_command=Beírt parancs futtatása
-firebug.Clear_the_Command_Editor=Parancsszerkesztő ürítése
-firebug.Copy_the_script_as_a_bookmarklet=Szkript másolása könyvvjelzőbe
-firebug.Insert_a_previously_entered_command=Előzőleg beírt parancs beszúrása
-firebug.AlwaysOpenInWindow=Mindig új ablakban nyíljon meg
-firebug.OpenWith=Megnyitás szerkesztővel
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Oldalak...
-firebug.Configure_Editors=Szerkesztők beállítása
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Futtatás eddig a sorig
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Vizsgálat
-firebug.InspectElement=Elem vizsgálata
-firebug.InspectElementWithFirebug=Elem vizsgálata Firebuggal
-firebug.BreakOnErrors=Leállítás hiba esetén
-firebug.InspectTooltip=Egy elem vizsgálatához kattintson rá az oldalon
-firebug.EditHTMLTooltip=HTML szerkesztése
-firebug.Profile=Futásidő elemzés
-firebug.Clear=Ürítés
-firebug.ClearConsole=Konzol ürítése
-firebug.ClearTooltip=Konzol ürítése
-firebug.All=Mind
-firebug.Images=Képek
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Beállított Firebug szerkesztők
-editors.Editor=Szerkesztők
-editors.Executable=Program
-editors.Launch_Arguments=Indítási paraméterek
-editors.Add=Hozzáadás
-editors.Remove=Eltávolítás
-editors.Change=Módosítás
-editors.Move_Up=Mozgatás fel
-editors.Close=Bezárás
-editors.Browse=Tallózás…
-changeEditor.Editor_Configuration=Szerkesztő beállítása
-changeEditor.Name=Név:
-changeEditor.Executable=Elérési út:
-changeEditor.CmdLine=Paraméterek:
-changeEditor.Supplied_arguments=Átadott paraméterek:
-changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> Fájl URL-je (ha az %url nincs megadva, akkor a %file lesz behelyettesítve)
-changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> Helyi (vagy ideiglenes fájl) fájl útvonala
-changeEditor.Line_number=<label class=\'text-link\'>%line</label> Sor száma (ha elérhető)
-changeEditor.Invalid_Application_Path=Érvénytelen alkalmazás útvonal
-changeEditor.Application_does_not_exist=A megadott alkalmazás nem létezik!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Szerkesztés
-firebug.css.sourceEdit=Forrás szerkesztése
-firebug.css.sourceEdit.tooltip=Böngésző által betöltött stíluslap szerkesztése szöveges mezőben
-firebug.css.liveEdit=Aktív CSS szerkesztése
-firebug.css.liveEdit.tooltip=Böngésző által alkalmazott stíluslap szerkesztése szöveges mezőben.
-firebug.EditCSSTooltip=Stíluslap szerkesztése
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Privát böngészés alatt a Firebug nem menti az oldalak állapotát
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Töréspont értesítések megjelenítése
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=Be vagy kikapcsolhatja a töréspont értesítéseket a <a>panelfül menüjében</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=A \'Letiltás\' gomb felülírja a \'hibakeresőt\' egy letiltott törésponttal.
-firebug.bon.tooltip.disableDebuggerKeyword2=Létrehoz egy letiltott töréspontot
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(a Szkript panelnek engedélyezve kell lennie ennek a funkciónak a használatához)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=Nincsenek gyermekobjektumok
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=több
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S elem a tárolóban;%1$S elem a tárolóban
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Objektum tulajdonságai
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(nincs kiegészítés)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=Az URL objektumot valószínűleg visszavonták a revokeObjectURL metódussal.
-firebug.failedToPreviewImageURL=Nem sikerült betölteni a megadott URL-t.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memória elemzés elindítva
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Elemzés során felvett objektumok
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memória elemzés eredmények
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Teljes munkamenet
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Konzol
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Net
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Szkript
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Stílus
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Számított
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Elrendezés
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Figyelés
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Töréspontok
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Verem
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Hatókörök
+firebug.DetachFirebug=Firebug megnyitása új ablakban
+firebug.AttachFirebug=Firebug megnyitása oldalsávban
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Firebug összesen;%1$S Firebug összesen
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Deactivated
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=Böngészőben
+minimized=Kis méret
+enablement.for_all_pages=összes oldalon
+enablement.on=Be
+enablement.off=Ki
+enablement.Panel_activation_status=Panel activation status:
+none=Bezárva
+Firebug_-_inactive_for_current_website=Firebug - kikapcsolva az aktuális weboldalon
+Activate_Firebug_for_the_current_website=Firebug bekapcsolása az aktuális weboldalon
+Minimized=Kis méretű
+Minimize_Firebug=Kis méret
+On_for_all_web_pages=Bekapcsolás az összes oldalon
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Aktivációs lista törlése
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI elhelyezkedése
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Firebug beállítások
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Az összes panel megjelenítése
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=JavaScript hibák megjelenítése
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=JavaScript figyelmeztetések megjelenítése
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=CSS hibák megjelenítése
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Veremmel kiíratása a hibák mellett
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=XMLHttpRequest események megjelenítése
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Chrome hibák megjelenítése
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Chrome üzenetek megjelenítése
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Külső hibák megjelenítése
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Hálózati hibák megjelenítése
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Szigorú figyelmeztetések (csökkenti a teljesítményt)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Parancselőzmények
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Kiegészítő felugró lista megjelenítése
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Assertion meghiúsulás
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (%S. sor)
+LineAndCol=%S (%S. sor, %S. oszlop)
+InstanceLine=%S #%S (%S. sor)
+StackItem=%S (%S, %S. sor)
+SystemItem=<Rendszer>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(névtelen)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Teljes szöveg megjelenítése
+html.option.tip.Show_Full_Text=Don't crop element contents
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Szóközök megjelenítése
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Megjegyzések megjelenítése
+html.option.tip.Show_Comments=Show comment nodes
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Változások kiemelése
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Változások kibontása
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Görgess a változásokhoz
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Gyors infó doboz megjelenítése
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Shade Box Model
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Görgess oda
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Új tulajdonság...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Elem törlés
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Csomópont törlés
+html.Delete_Node=Delete the node from the tree
+# Quick Info Box
+quickInfo=Gyors infó
+computedStyle=Számított stílus
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Minden mutációnál megáll
+html.Disable_Break_On_Mutate=Ne álljon meg mutációnál
+html.label.Break_On_Text_Change=Szöveg változásakor megáll
+html.label.HTML_Breakpoints=HTML töréspontok
+html.label.Break_On_Attribute_Change=Attribútum változásakor megáll
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Gyermekelem felvételkor vagy eltávolításkor megáll
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Elem eltávolításakor megáll
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Az összes kibontása/összecsukása
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Megszakítás tulajdonság megváltozásakor
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Tulajdonság változáskövetés kikapcsolása
+dom.label.DOM_Breakpoints=DOM töréspontok
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=\"%S\" tulajdonság szerkesztése...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=\"%S\" tulajdonság törlése
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Örökölt:
+SothinkWarning=A Sothink SWF Catcher bővítmény akadályozza a Firebug korrekt működését.<br><br>További segítségért kérlek olvasd el <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">ezt az oldalt a Firebug FAQ-ban</a>.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=Árvíztűrő tükörfúrógép. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=Nincsenek szabályok. <a>Szabály létrehozása</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=Ehhez az elemhez nem tartoznak stílusszabályok. <a>Szabály létrehozása</a>.
+EditStyle=Elem stílusának szerkesztése...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Új szabály...
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Új tulajdonság...
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=\"%S\" szerkesztése...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=\"%S\" letiltása
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=\"%S\" törlése
+css.tip.Delete_Prop=Delete the property "%S"
+# Console context menu labels.
+BreakOnThisError=Ennél a hibánál megáll
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Minden hibánál megáll
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Throw/Catch nyomkövetése
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Utolsó forráskód sor használata eval() neveknél
+UseMD5ForEvalName=MD5 név használata eval() neveknél
+# Breakpoints side panel
+Breakpoints=Töréspontok
+ErrorBreakpoints=Hiba töréspontok
+LoggedFunctions=Naplózott függvények
+EnableAllBreakpoints=Összes töréspont engedélyezése
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Összes töréspont letiltása
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Összes töréspont eltávolítása
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Ezen a törésponton akkor áll meg, ha a következő kifejezés igaz:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Töréspontok eltávolítása
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Töréspont kikapcsolása
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Töréspont bekapcsolása
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Folytatás
+script.balloon.Disable=Letiltás
+ScriptsFilterStatic=Statikus szkriptek megjelenítése
+ScriptsFilterEval=Statikus és eval szkriptek megjelenítése
+ScriptsFilterEvent=Statikus és esemény szkriptek megjelenítése
+ScriptsFilterAll=Statikus, eval és esemény szkriptek megjelenítése
+ScriptsFilterStaticShort=statikus
+ScriptsFilterEvalShort=eval
+ScriptsFilterEventShort=események
+ScriptsFilterAllShort=mind
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Az összes kibontása
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Az összes becsukása
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Felhasználói tulajdonságok megjelenítése
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Felhasználói függvények megjelenítése
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=DOM tulajdonságok megjelenítése
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=DOM függvények megjelenítése
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=DOM konstansok megjelenítése
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Inline eseménykezelők megjelenítése
+ShowInlineEventHandlersTooltip=Elérhető inline eseménykezelők megjelenítése, amelyek nincsenek függvényhez rendelve.
+ShowOwnProperties=Csak saját tulajdonságok megjelenítése
+ShowOwnPropertiesTooltip=Ne jelenjen meg a prototípus lánc
+ShowEnumerableProperties=Csak felsorolható tulajdonságok megjelenítése
+ShowEnumerablePropertiesTooltip=Ne jelenjenek meg a nem felsorolható tulajdonságok
+NoMembersWarning=Ennek az objektumnak nincsenek megjeleníthető tulajdonságai.
+NewWatch=Új megfigyelő kifejezés...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=megfigyelés hozzáadás
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Forrás másolása
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Írja be, hogy #<szám>, az adott sorra való ugráshoz
+CopyValue=Érték másolása
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Név másolása
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Útvonal másolása
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Új tulajdonság...
+EditProperty=Tulajdonság szerkesztés...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Változó szerkesztés...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Megfigyelő szerkesztés...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Tulajdonság törlése
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Megfigyelő törlése
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Töréspont beállítása
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Töréspont feltétel szerkesztés...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=Ezen az oldalon nincs beállítva töréspont.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Csak alkalmazott stílusok megjelenítése
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Beépített CSS megjelenítése
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Rövidített tulajdonságok kibővítése
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Rendezés ábécérendben
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Mozilla specifikus stílusok megjelenítése
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Gépeljen be egy karaktert a lista szűréséhez
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=position
+LayoutAdjacent=szomszédos
+position=position
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Vonalzók és segédvonalak megjelenítése
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Net panel
+Loading=Betöltés...
+Headers=Fejlécek
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Fejlécek visszaállítása
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=Lekérdezett URL és használt HTTP metódus.
+net.header.Status=Állapot
+net.header.Status_Tooltip=A fogadott válasz állapota.
+net.header.Domain=Tartomány
+net.header.Domain_Tooltip=A futtatott kérés tartománya.
+net.header.Size=Méret
+net.header.Size_Tooltip=A válasz mérete.
+net.header.Timeline=Idővonal
+net.header.Timeline_Tooltip=Részletes időzítési adatok a kérés oda-vissza útjáról.
+net.header.Local_IP=Helyi IP
+net.header.Local_IP_Tooltip=Helyi IP cím és port szám, amiről a kérés kiment.
+net.header.Remote_IP=Távoli IP
+net.header.Remote_IP_Tooltip=Távoli IP cím és port szám, amire a kérés kiment.
+net.header.Protocol=Protokoll
+net.header.Protocol_Tooltip=Az URL protokoll, amelyen keresztül az erőforrás hozzáférhető a weben.
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=XHR töréspontok
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Megáll XHR esetén
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=forrás megtekintése
+net.headers.pretty_print=pretty print
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Média
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=POST
+Put=PUT
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Válasz
+URLParameters=Paraméterek
+Cache=Gyorsítótár
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Általános információ
+fontviewer.Meta_Data=Metaadatok
+fontviewer.view_source=forrás megtekintése
+fontviewer.Preview=Előnézet
+fontviewer.view_characters=karakterek megtekintése
+fontviewer.pretty_print=végső külalak
+fontviewer.view_sample=minta megtekintése
+fontviewer.uniqueid=Egyedi azonosító
+fontviewer.vendor=Gyártó
+fontviewer.license=Licenc
+fontviewer.description=Leírás
+fontviewer.copyright=Szerzői jogok
+fontviewer.credits=Készítette
+fontviewer.trademark=Védjegy
+fontviewer.licensee=Licenc-tulajdonos
+fontviewer.extension=Kiterjesztés
+fontviewer.pangram=Árvíztűrő tükör fúrógép
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Rendezés kulcs szerint
+jsonviewer.do_not_sort=Rendezetlen
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=\"%S\" másolása JSON-ként
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Kérés fejlécek
+ResponseHeaders=Válasz fejlécek
+CachedResponseHeaders=Válasz fejlécek a gyorsítótárból
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=A Firebug naplója elérte a méretkorlátot. %1$S bejegyzés nem került megjelenítésre.;A Firebug naplója elérte a méretkorlátot. %1$S bejegyzés nem került megjelenítésre.
+LimitPrefs=Beállítások
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Hogy változtass a korláton, módosítsd a következőt: %S
+Refresh=Frissítés
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Megnyitás új lapon
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Válasz megnyitása új fülön
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Futásidő elemzés
+ProfilerStarted=Az elemző már fut. Az eredmény megjelenítéséhez kattints újból a \'Futásidő elemzésre\'.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S hívás);(%1$Sms, %2$S hívás)
+NothingToProfile=Nem volt mérhető tevékenység.
+PercentTooltip=A függvényben eltöltött idő százalékban.
+CallsHeaderTooltip=Függvényhívások száma.
+OwnTimeHeaderTooltip=A függvényben töltött idő, a belső hívásokat leszámítva.
+TimeHeaderTooltip=A függvényben töltött idő, a belső hívásokkal együtt.
+AvgHeaderTooltip=Átlag idő, beleértve a függvényhívásokat.
+MinHeaderTooltip=Minimum idő, beleértve a függvényhívásokat.
+MaxHeaderTooltip=Maximum idő, beleértve a függvényhívásokat.
+ProfileButton.Enabled.Tooltip=JavaScript futásidő elemzés.
+ProfileButton.Disabled.Tooltip=JavaScript futásidő elemzés (Szkript panel engedélyezése szükséges).
+Function=Függvény
+Percent=Százalék
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Hívások
+OwnTime=Saját idő
+Time=Idő
+Avg=Átlag
+Min=Min
+Max=Max
+File=Fájl
+# Support for standard actions.
+Copy=Másolás
+Cut=Kivágás
+Remove=Eltávolítás
+Delete=Delete
+Paste=Beilleszt
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=innerHTML másolása
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=XPath másolása
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=CSS útvonal másolása
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Cím másolása
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Cím másolása paraméterekkel együtt
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Kérés fejlécek másolása
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Válasz fejlécek másolása
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Válasz törzs másolása
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Hiba másolása
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Függvény másolása
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Hívások naplózása ide: \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Események naplózása
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Engedélyezés
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=A Firebug konzol nem támogatja a(z) \'%S\' metódust
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=A Firebug parancssor nem támogatja a(z) \'%S\' metódust.
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Ne álljon meg minden hibánál
+console.Break_On_All_Errors=Minden hibánál megáll
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Megszakítás ennél a hibánál
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=A JavaScript jelenleg le van tiltva a Firefox beállításaiban. Ha szeretné használni a Konzol panelt, kérem engedélyezze az \'Eszközök\' -> \'Beállítások\' -> \'Tartalom\' -> \'JavaScript engedélyezése\' opciót.
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=Túl sok elem van a tömbben az összes kiemeléséhez az oldalon (az aktuális korlát %S).
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=A Firebug parancssora ki van kapcsolva XML oldalakon. <a>Váltson át HTML-re</a> a bekapcsolásához.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Válasz tartalom
+net.sizeinfo.Post_Body=POST tartalom
+net.sizeinfo.Total_Sent=Küldött méret
+net.sizeinfo.Total_Received=Fogadott méret
+net.sizeinfo.Including_HTTP_Headers=HTTP fejlécek beszámítása
+net.ActivationMessage=Net panel bekapcsolva. Ha a Net panel ki van kapcsolva, akkor a kérések nem jelennek meg.
+net.responseSizeLimitMessage=Elérte a Firebug a válasz méretkorlátját. Kattints <a>ide</a>, hogy az egész választ megnyisd egy új fülön.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=A POST adat mérete elérte a korlátot, ezért a Firebug eltávolította.
+net.Break_On_XHR=Megállítás XHR esetén
+net.label.Parameters=Paraméterek
+net.label.Parts=Parts???
+net.label.Source=Forrás
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Újraküldés
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Böngésző gyorsítótár letiltása
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Rajzolási események megjelenítése
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=BFCache válaszok megjelenítése
+net.option.tip.Show_BFCache_Responses=A BFCache-ből (Vissza-Előre gyorsítótárból) érkező válaszok megjelenítése
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Break On Next
+script.Disable_Break_On_Next=Töréspont kikapcsolása legközelebb
+ShowHttpHeaders=HTTP fejlécek megjelenítése
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S kérés;%1$S kérés
+FromCache=gyorsítótárból
+StopLoading=Betöltés leállítása
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Nagyon nagy adat)
+ShowComputedStyle=Számított stíluslapok megjelenítése
+StyleGroup-text=Szöveg
+StyleGroup-background=Háttér
+StyleGroup-box=Doboz modell
+StyleGroup-layout=Elrendezés
+StyleGroup-other=Egyéb
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Szín másolása
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Kép címének másolása
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Kép megnyitása új fülön
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Eszköztár verem kihagyása
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Eredeti forrás betöltése
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Szabály deklarációjának másolása
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Stílus deklaráció másolása
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S hiba;%1$S hiba
+moduleManager.title=%S panel letiltva
+moduleManager.desc3=A Firebug állapotsor ikonjának környezeti menüjével be- és kikapcsolhatja az összes panelt. A panel fülek kis menüjével a panel paramétereit állíthatja be:
+moduleManager.Enable=Engedélyezés
+Suspend_Firebug=Firebug felfüggesztése
+Resume_Firebug=Firebug futtatása
+Reset_Panels_To_Disabled=Panelek visszaállítása kikapcsoltra
+Open_Console=Konzol megnyitása
+Open_Console_Tooltip=A Firebug nyomkövető konzoljának megnyitása.
+Scope_Chain=Hatókör lánc
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=Ezzel
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Hívás
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Ablak
+Logs=Napló
+Options=Opciók
+Copy_Stack=Verem másolása
+Copy Exception=Kivétel másolása
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blokkolás
+requestinfo.Resolving=DNS lekérdezés
+requestinfo.Connecting=csatlakozás
+requestinfo.Sending=Küldés
+requestinfo.Waiting=Várakozás
+requestinfo.Receiving=Fogadás
+requestinfo.ContentLoad=\'DOMContentLoaded\' (esemény)
+requestinfo.WindowLoad=\'load\' (esemény)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Kérés kezdési ideje a legelsőtől
+requestinfo.phases.label=A kérési fázisok kezdési és eltelt ideje a kérés elejétől fogva:
+requestinfo.timings.label=Esemény időzítések a kérés elejétől fogva:
+search.Firebug_Search=Firebug keresés
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Következő
+search.tip.Next=Search for the next match
+search.Previous=Előző
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Kis- és nagybetűk erőltetett megkülönböztetése
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Kis- és nagybetűk figyelmen kívül hagyása
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Több fájl
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Reguláris kifejezés használata
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS szelektor
+search.net.Headers=Fejlécek
+search.net.Parameters=Paraméterek
+search.net.Response_Bodies=Válasz törzsek
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Rögzít
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Összes naplóbejegyzés megjelenítése
+firebug.console.Errors=Hibák
+firebug.console.Filter_by_Errors=Szűrés hibák alapján
+firebug.console.Warnings=Figyelmeztetések
+firebug.console.Filter_by_Warnings=Szűrés figyelmeztetések alapján
+firebug.console.Info=Infók
+firebug.console.Filter_by_Info=Szűrés infók alapján
+firebug.console.Debug_Info=Hibakeresési infók
+firebug.console.Filter_by_Debug_Info=Szűrés hibakeresési infók alapján
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Firebug megnyitása
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Firebug elrejtése
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Az összes panel engedélyezése
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Az összes panel letiltása
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Billentyűparancsok testreszabása
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Beállítások
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Kisegítő lehetőségek bekapcsolása
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Az összes beállítás visszaállítása
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug Online
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Hibaszámláló megjelenítése
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Szöveg nagyítása
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Nagyítás
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Kicsinyítés
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Visszaállítás
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Firebug honlap...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Dokumentáció...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Gyorsbillentyűk...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Vita fórum...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Hibabejelentő...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Támogatás...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Névjegy...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Keresés
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Parancs megismétlése
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Vizsgálat ki/bekapcsolása
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Gyors infó doboz ki/bekapcsolása
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Mérés ki/bekapcsolása
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Fókuszálás a parancssorra
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Fókuszálás a Firebug keresőre
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Fókuszálás a Figyelő szerkesztőre
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Fókuszálás a címsorra
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Következő objektum
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Előző objektum
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Firebug billentyűparancsok testreszabása
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Firebug megnyitása új ablakban
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Váltás a baloldali Firebug panelra
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Váltás a jobboldali Firebug panelra
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Firebug megnyitása
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Előző Firebug fül
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Konzol ürítése
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Figyelő konzol megnyitása
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Vissza
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Előre
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Szövegméret növelése
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Szövegméret csökkentése
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normál szövegméret
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Panel kiválasztó
+customizeShortcuts=Firebug billentyűparancsok beállítása
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=panel eszközök
+a11y.labels.firebug_panels=Firebug panelek
+a11y.labels.firebug_side_panels=Firebug oldalsáv
+a11y.labels.firebug_window=Firebug ablak
+a11y.labels.firebug_status=Firebug állapotsor
+a11y.labels.reset=visszaállít
+a11y.labels.reset_shortcut=%S billentyűparancs visszaállítása
+aria.labels.inactive_panel=inaktív panel
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=napló sorok
+a11y.labels.call_stack=hívási verem
+a11y.labels.document_structure=dokumentum struktúra
+a11y.labels.title_panel=%S panel
+a11y.labels.title_side_panel=%S oldalsáv
+a11y.labels.cached=gyorsítótárazva
+aria.labels.stack_trace=verem követés
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=position
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=margin top
+a11y.layout.margin_right=margin right
+a11y.layout.margin_bottom=margin bottom
+a11y.layout.margin_left=margin left
+a11y.layout.border_top=border top
+a11y.layout.border_right=border right
+a11y.layout.border_bottom=border bottom
+a11y.layout.border_left=border left
+a11y.layout.padding_top=padding top
+a11y.layout.padding_right=padding right
+a11y.layout.padding_bottom=padding bottom
+a11y.layout.padding_left=padding left
+a11y.layout.top=top
+a11y.layout.right=right
+a11y.layout.bottom=bottom
+a11y.layout.left=left
+a11y.layout.width=width
+a11y.layout.height=height
+a11y.layout.size=size
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=Nyomjon Entert, majd Tabot az egyes elemek szerkesztéséhez
+a11y.labels.style_rules=stílus szabályok
+aria.labels.inherited_style_rules=örökölt stílus szabályok
+a11y.labels.computed_styles=számított stílus szabályok
+a11y.labels.dom_properties=DOM tulajdonságok
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=beágyazott szerkesztő
+a11y.labels.value_for_attribute_in_element=%S elem %S attribútumának értéke
+a11y.labels.attribute_for_element=%S elem attribútuma
+a11y.labels.text_contents_for_element=%S elem szöveges tartalma
+a11y.labels.defined_in_file=a(z) %S fájlban definiálva
+a11y.labels.declarations_for_selector=\"%S\" szelektor stílusdeklarációi
+a11y.labels.property_for_selector=CSS tulajdonság a következő szelektorhoz: %S
+a11y.labels.value_property_in_selector=%S tulajdonságának értéke a(z) %S szelektorban
+a11y.labels.css_selector=CSS szelektor
+a11y.labels.source_code_for_file=%S fájl forráskódja
+a11y.labels.press_enter_to_add_new_watch_expression=nyomjon entert új figyelő kifejezés hozzáadásához
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=felülírva
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=van feltételes töréspont
+a11y.updates.has_disabled_break_point=van letiltott töréspont
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Szkript felfüggesztve a(z) %S. sorban, a(z) %S függvényben, a(z) %S fájlban
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=találat a(z) \"%S\" szövegre a napló %S sorában
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=találat a(z) \"%S\" szövegre a(z) %S. sorban a(z) %S fájlban
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=találat a(z) \"%S\" szövegre a(z) %S elemben a(z) %S útvonalon
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=találat a(z) \"%S\" szövegre a(z) %S=%S attribútumban, a(z) %S elemben a(z) %S útvonalon
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=találat a(z) \"%S\" szövegre a szöveges tartalomban: %S a %S elemben a(z) %S útvonalon
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=találat a(z) \"%S\" szövegre a(z) %S szelektorban
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=találat a(z) \"%S\" szövegre a(z) %S stílusdeklarációban, a(z) %S szelektorban
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=találat a(z) \"%S\" szövegre a(z) %S DOM tulajdonságban
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=találat a(z) \"%S\" szövegre: %S, %S: %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=talált a(z) \"%S\" szövegre a hálózati-összefoglaló sorban: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=nincs találat a következőre: \"%S\"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Biztosan visszaállítasz minden Firebug beállítást az alapértelmezett értékére?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=A már meglévő CSS módosításai el fognak veszni.
+# Console messages
+warning.Console_must_be_enabled=Engedélyezni kell a konzolt.
+warning.Command_line_blocked?=A parancssor blokkolva?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Frissítsen, hogy aktiválódjon a konzol.
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Oldal újratöltése a következő forrásának betöltéséhez:
+message.The_resource_from_this_URL_is_not_text=Az erőforrás, ami az URL-hez tartozik nem szöveges
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Vissza ehhez a panelhez
+firebug.history.Stay_on_this_panel=Maradjon ezen a panelen
+firebug.history.Go_forward_to_this_panel=Előre ehhez a panelhez
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Vissza
+firebug.history.Go_forward=Előre
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=A Szkript panel ki volt kapcsolva az oldal betöltésekor
+script.suggestion.inactive_during_page_load2=Az összes forrás megtekintéséhez <a>töltse újra</a> az oldalt.
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=A JavaScript le van tiltva
+script.suggestion.javascript_not_enabled=JavaScript engedélyezése: Firefox > Eszközök > Beállítások > Tartalom > JavaScript engedélyezése
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=JavaScript engedélyezése és frissítés
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Az összes szkript szűrve
+script.suggestion.all_scripts_filtered=Ellenőrizze a szkript szűrés beállításokat az eszköztáron vagy a \"Chrome források megjelenítése\" beállítást
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=Nincs JavaScript az oldalon
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=A hibakereső már aktív
+script.suggestion.debugger_active=A hibakereső jelenleg leállt egy töréspontnál egy másik oldalon.
+script.button.Go_to_that_page=Ugrás az oldalra
+script.warning.debugger_not_activated=A hibakereső nincs aktiválva
+script.suggestion.debugger_not_activated=A hibakereső nincs aktiválva
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Bezárás
+firebug.View=Nézet
+firebug.Help=Súgó
+firebug.Run=Futtatás
+firebug.Copy=Másolás
+firebug.History=Előzmények
+firebug.Run_the_entered_command=Beírt parancs futtatása
+firebug.Clear_the_Command_Editor=Parancsszerkesztő ürítése
+firebug.Copy_the_script_as_a_bookmarklet=Szkript másolása könyvvjelzőbe
+firebug.Insert_a_previously_entered_command=Előzőleg beírt parancs beszúrása
+firebug.AlwaysOpenInWindow=Mindig új ablakban nyíljon meg
+firebug.OpenWith=Megnyitás szerkesztővel
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Oldalak...
+firebug.Configure_Editors=Szerkesztők beállítása
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Futtatás eddig a sorig
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Vizsgálat
+firebug.InspectElement=Elem vizsgálata
+firebug.InspectElementWithFirebug=Elem vizsgálata Firebuggal
+firebug.BreakOnErrors=Leállítás hiba esetén
+firebug.InspectTooltip=Egy elem vizsgálatához kattintson rá az oldalon
+firebug.EditHTMLTooltip=HTML szerkesztése
+firebug.Profile=Futásidő elemzés
+firebug.Clear=Ürítés
+firebug.ClearConsole=Konzol ürítése
+firebug.ClearTooltip=Konzol ürítése
+firebug.All=Mind
+firebug.Images=Képek
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Beállított Firebug szerkesztők
+editors.Editor=Szerkesztők
+editors.Executable=Program
+editors.Launch_Arguments=Indítási paraméterek
+editors.Add=Hozzáadás
+editors.Remove=Eltávolítás
+editors.Change=Módosítás
+editors.Move_Up=Mozgatás fel
+editors.Close=Bezárás
+editors.Browse=Tallózás…
+changeEditor.Editor_Configuration=Szerkesztő beállítása
+changeEditor.Name=Név:
+changeEditor.Executable=Elérési út:
+changeEditor.CmdLine=Paraméterek:
+changeEditor.Supplied_arguments=Átadott paraméterek:
+changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> Fájl URL-je (ha az %url nincs megadva, akkor a %file lesz behelyettesítve)
+changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> Helyi (vagy ideiglenes fájl) fájl útvonala
+changeEditor.Line_number=<label class=\'text-link\'>%line</label> Sor száma (ha elérhető)
+changeEditor.Invalid_Application_Path=Érvénytelen alkalmazás útvonal
+changeEditor.Application_does_not_exist=A megadott alkalmazás nem létezik!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Szerkesztés
+firebug.css.sourceEdit=Forrás szerkesztése
+firebug.css.sourceEdit.tooltip=Böngésző által betöltött stíluslap szerkesztése szöveges mezőben
+firebug.css.liveEdit=Aktív CSS szerkesztése
+firebug.css.liveEdit.tooltip=Böngésző által alkalmazott stíluslap szerkesztése szöveges mezőben.
+firebug.EditCSSTooltip=Stíluslap szerkesztése
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Privát böngészés alatt a Firebug nem menti az oldalak állapotát
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Töréspont értesítések megjelenítése
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=Be vagy kikapcsolhatja a töréspont értesítéseket a <a>panelfül menüjében</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=A \'Letiltás\' gomb felülírja a \'hibakeresőt\' egy letiltott törésponttal.
+firebug.bon.tooltip.disableDebuggerKeyword2=Létrehoz egy letiltott töréspontot
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(a Szkript panelnek engedélyezve kell lennie ennek a funkciónak a használatához)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=Nincsenek gyermekobjektumok
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=több
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S elem a tárolóban;%1$S elem a tárolóban
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Objektum tulajdonságai
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(nincs kiegészítés)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=Az URL objektumot valószínűleg visszavonták a revokeObjectURL metódussal.
+firebug.failedToPreviewImageURL=Nem sikerült betölteni a megadott URL-t.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memória elemzés elindítva
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Elemzés során felvett objektumok
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memória elemzés eredmények
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Teljes munkamenet
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/hy-AM/cookies.properties b/locale/hy-AM/cookies.properties
index 66695d4..ec60718 100644
--- a/locale/hy-AM/cookies.properties
+++ b/locale/hy-AM/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Session
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Accept Cookies From Sites
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Clear cookies when denying
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cut
-cookies.Copy=Copy
-cookies.CopyAll=Copy All
-cookies.Paste=Paste
-cookies.Delete=Delete
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Edit
-cookies.Accept=Accept
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reset Header
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
-cookies.ExceptionsTitle=Exceptions - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support for Cookie Monitoring
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=Disable Cookies panel for %S
-cookies.Permissions=Enable or Disable Cookies panel
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=System Pages
-cookies.LocalFiles=Local Files
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Do you want to remove all cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remove all cookies in the list.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Create a new cookie for %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Value
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Manage cookie permissions for %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=All cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejected:
-cookies.console.nocookiesreceived=No cookies received
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=deleted
-cookies.console.added=added
-cookies.console.changed=changed
-cookies.console.cleared=cleared
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domain
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Secure
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Value
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Default (Accept session cookies)
-cookies.default.thirdPartySession=Default (Accept session cookies)
-cookies.default.thirdParty=Default (Accept cookies)
-cookies.default.allow=Default (Accept cookies)
-cookies.default.deny=Default (Deny cookies)
-cookies.default.warn=Default (Warn before accepting cookie)
-cookies.host.session=Accept session cookies from %S
-cookies.host.accept=Accept cookies from %S
-cookies.host.reject=Deny cookies from %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie name is not valid.
-cookies.edit.invalidhost=Cookie host is not valid.
-cookies.edit.invalidpath=Cookie path is not valid.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Name
-cookies.header.value=Value
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domain
-cookies.header.size=Size
-cookies.header.path=Path
-cookies.header.expires=Expires
-cookies.header.security=Security
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Name of the cookie
-cookies.header.value.tooltip=Value stored for the cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domain that has stored the cookie
-cookies.header.size.tooltip=Size of the stored cookie
-cookies.header.path.tooltip=Directory where the cookie is active
-cookies.header.expires.tooltip=Expiration date for the cookie
-cookies.header.security.tooltip=Shows whether it is a secure cookie or not
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Received Cookies
-cookies.netinfo.Sent_Cookies=Sent Cookies
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Path Filter
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Export All Cookies
-cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
-cookies.export.Export_For_Site=Export Cookies For This Site
-cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Remove Cookies
-cookies.Create=Create Cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Tools
-cookies.ToolsTooltip=Tools
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Show All Cookies
-cookies.ViewAllTooltip=Open the built-in Cookie Manager
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Web Sites Permissions
-cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filter
-cookies.FilterTooltip=Use given options to filter the cookie list.
-cookies.filter.byPath=Filter Cookies By Current Path
-cookies.filter.byPathTooltip=Show only cookies that match the current path.
-cookies.filter.showRejectedCookies=Show Rejected Cookies
-cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Edit Cookie
-cookies.edit.name.label=Name:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Path:
-cookies.edit.expire.label=Expires:
-cookies.edit.value.label=Value:
-cookies.edit.secure.label=Secure Cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Session
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Accept Cookies From Sites
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Clear cookies when denying
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cut
+cookies.Copy=Copy
+cookies.CopyAll=Copy All
+cookies.Paste=Paste
+cookies.Delete=Delete
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Edit
+cookies.Accept=Accept
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reset Header
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
+cookies.ExceptionsTitle=Exceptions - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support for Cookie Monitoring
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=Disable Cookies panel for %S
+cookies.Permissions=Enable or Disable Cookies panel
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=System Pages
+cookies.LocalFiles=Local Files
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Do you want to remove all cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remove all cookies in the list.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Create a new cookie for %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Value
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Manage cookie permissions for %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=All cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejected:
+cookies.console.nocookiesreceived=No cookies received
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=deleted
+cookies.console.added=added
+cookies.console.changed=changed
+cookies.console.cleared=cleared
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domain
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Secure
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Value
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Default (Accept session cookies)
+cookies.default.thirdPartySession=Default (Accept session cookies)
+cookies.default.thirdParty=Default (Accept cookies)
+cookies.default.allow=Default (Accept cookies)
+cookies.default.deny=Default (Deny cookies)
+cookies.default.warn=Default (Warn before accepting cookie)
+cookies.host.session=Accept session cookies from %S
+cookies.host.accept=Accept cookies from %S
+cookies.host.reject=Deny cookies from %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie name is not valid.
+cookies.edit.invalidhost=Cookie host is not valid.
+cookies.edit.invalidpath=Cookie path is not valid.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Name
+cookies.header.value=Value
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domain
+cookies.header.size=Size
+cookies.header.path=Path
+cookies.header.expires=Expires
+cookies.header.security=Security
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Name of the cookie
+cookies.header.value.tooltip=Value stored for the cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domain that has stored the cookie
+cookies.header.size.tooltip=Size of the stored cookie
+cookies.header.path.tooltip=Directory where the cookie is active
+cookies.header.expires.tooltip=Expiration date for the cookie
+cookies.header.security.tooltip=Shows whether it is a secure cookie or not
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Received Cookies
+cookies.netinfo.Sent_Cookies=Sent Cookies
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Path Filter
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Export All Cookies
+cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
+cookies.export.Export_For_Site=Export Cookies For This Site
+cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Remove Cookies
+cookies.Create=Create Cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Tools
+cookies.ToolsTooltip=Tools
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Show All Cookies
+cookies.ViewAllTooltip=Open the built-in Cookie Manager
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Web Sites Permissions
+cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filter
+cookies.FilterTooltip=Use given options to filter the cookie list.
+cookies.filter.byPath=Filter Cookies By Current Path
+cookies.filter.byPathTooltip=Show only cookies that match the current path.
+cookies.filter.showRejectedCookies=Show Rejected Cookies
+cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Edit Cookie
+cookies.edit.name.label=Name:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Path:
+cookies.edit.expire.label=Expires:
+cookies.edit.value.label=Value:
+cookies.edit.secure.label=Secure Cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/hy-AM/firebug-amo.properties b/locale/hy-AM/firebug-amo.properties
index be5faf8..dc442e4 100644
--- a/locale/hy-AM/firebug-amo.properties
+++ b/locale/hy-AM/firebug-amo.properties
@@ -1,7 +1,7 @@
-#n\n
-#n\n
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug-ը ինտեգրվում է Firefox, նախագծողի ձեռքի տակ ավելացնելով գործիքների լայն հավաքածու: Դուք կարող եք ղեկավարել եւ խմբագրել CSS, HTML եւ JavaScript հենց տեղում, ցանկացած կայքում... \\n \\nFirebug 1.6-ը պահանջում է Firefox 3.6 կամ ավելի թարմ:
-firebug.amo.description=Firebug-ը ինտեգրվում է Firefox որպեսզի Ձեր ձերշռքի տակ ունենաք նախագծման միջոցներ, ցանցով ճանապարհորդելիս. Դուք կարող եք խմբագրել, աշխատացնել, դիտել CSS, HTML և JavaScript իրական ժամանակի ռեժիմում ցանկացած կայքում...\\n\\nԱյցելեք Firebug -ի կայքը` որտեղ կգտնեք գրականություն, օրինակներ և քննարկումներ` http://getfirebug.com
-firebug.amo.developer.comments=Հարցերի համար օգտագործեք Firebug-ի ՀՏՀն.\\n\\nhttp://getfirebug.com/faq.html
+#n\n
+#n\n
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug-ը ինտեգրվում է Firefox, նախագծողի ձեռքի տակ ավելացնելով գործիքների լայն հավաքածու: Դուք կարող եք ղեկավարել եւ խմբագրել CSS, HTML եւ JavaScript հենց տեղում, ցանկացած կայքում... \\n \\nFirebug 1.6-ը պահանջում է Firefox 3.6 կամ ավելի թարմ:
+firebug.amo.description=Firebug-ը ինտեգրվում է Firefox որպեսզի Ձեր ձերշռքի տակ ունենաք նախագծման միջոցներ, ցանցով ճանապարհորդելիս. Դուք կարող եք խմբագրել, աշխատացնել, դիտել CSS, HTML և JavaScript իրական ժամանակի ռեժիմում ցանկացած կայքում...\\n\\nԱյցելեք Firebug -ի կայքը` որտեղ կգտնեք գրականություն, օրինակներ և քննարկումներ` http://getfirebug.com
+firebug.amo.developer.comments=Հարցերի համար օգտագործեք Firebug-ի ՀՏՀն.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/hy-AM/firebug-tracing.properties b/locale/hy-AM/firebug-tracing.properties
index e134313..79c69b5 100644
--- a/locale/hy-AM/firebug-tracing.properties
+++ b/locale/hy-AM/firebug-tracing.properties
@@ -1,94 +1,94 @@
-#n\n
-#n\n
-Open_Firebug_Tracing=Բացել հետևումը Firebug-ով
-Always_Open_Firebug_Tracing=Միշտ բացել հետևումը
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Հետևում
-tracing.Show_Scope_Variables=Ցույց տալ տեսանելի փոփոխականները
-tracing.Show_Time=Ցույց տալ ժամանակը
-tracing.tab.Stack=Ստեկ
-tracing.tab.Exception=Բացառություն
-tracing.tab.Properties=Հատկություններ
-tracing.tab.Scope=Տեսանելիություն
-tracing.tab.Response=Պատասխան
-tracing.tab.Source=Աղբյուր
-tracing.tab.Interfaces=Ինտերֆեյսեր
-tracing.tab.Object=Ոբյեկտ
-tracing.tab.Event=Իրադարձություն
-tracing.cmd.Clear=Մաքրել
-tracing.cmd.tip.Clear=Մաքրել բոլոր հաղորդագրությունները
-tracing.cmd.Find=Որոնել
-tracing.cmd.tip.Find=Որոնել տեքստ
-tracing.cmd.Bookmark=Էջանիշ
-tracing.cmd.tip.Bookmark=Ավելացնել Էջանիշ
-tracing.cmd.Restart=Վերբեռնել
-tracing.cmd.tip.Restart=Վերբեռնել Firefox-ը
-tracing.cmd.Exit=Ելք
-tracing.cmd.tip.Exit=Ելք Firefox-ից
-tracing.cmd.Save=Պահպանել
-tracing.cmd.tip.Save=Պահպանել լոգերը ֆայլում
-tracing.cmd.Load=Բեռնել ֆայլից
-tracing.cmd.tip.Load=Բեռնել լոգերը ֆայլից
-tracing.cmd.Expand_All=Ընդլայնել բոլորը
-tracing.cmd.Collapse_All=Սեղմել բոլորը
-tracing.cmd.Tools=Գործիքներ
-tracing.cmd.tip.Tools=Գործիքներ
-tracing.cmd.Clear_Browser_Cache=Մաքրել Քեշը
-tracing.cmd.tip.Clear_Browser_Cache=Մաքրել Քեշը
-tracing.cmd.Force_Garbage_Collector=Չոգտագործվող հիշողության մաքրում
-tracing.cmd.tip.Force_Garbage_Collector=Չոգտագործվող հիշողության մաքրում
-tracing.cmd.Open_Profile_Directory=Բացել պրոֆիլի պանակը
-tracing.cmd.tip.Open_Profile_Directory=Բացել պրոֆիլի պանակը
-tracing.option.A11Y_Description=Accessibility issues
-tracing.option.ACTIVATION_Description=Firebug activation
-tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
-tracing.option.ANNOTATIONS_Description=Firebug website annotation
-tracing.option.BP_Description=Breakpoints
-tracing.option.CACHE_Description=Source cache
-tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
-tracing.option.COMPILATION_UNITS_Description=Script compilation units
-tracing.option.CONSOLE_Description=Console Panel
-tracing.option.CSS_Description=CSS parsing
-tracing.option.DISPATCH_Description=Event dispatching
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate creation
-tracing.option.EDITOR_Description=Inline Editor & Autocompleter
-tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Internal Firebug errors
-tracing.option.EVAL_Description=Script evaluation
-tracing.option.FBS_BP_Description=Firebug service breakpoints
-tracing.option.FBS_CREATION_Description=Firebug service script creation
-tracing.option.FBS_ERRORS_Description=Firebug service errors
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
-tracing.option.FBS_FUNCTION_Description=Firebug service function
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
-tracing.option.FBS_SRCUNITS_Description=Firebug service source units
-tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
-tracing.option.FUNCTION_NAMES_Description=JavaScript function names
-tracing.option.HISTORY_Description=Firebug Navigation History
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP request observer
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug initialization
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON viewer
-tracing.option.LINETABLE_Description=Script line table
-tracing.option.LOCALE_Description=Localization
-tracing.option.LOCATIONS_Description=Source locations
-tracing.option.NET_Description=Net Panel
-tracing.option.NET_EVENTS_Description=Network events
-tracing.option.OPTIONS_Description=Firebug preferences
-tracing.option.PANELS_Description=Panels
-tracing.option.SHORTCUTS_Description=Keyboard shortcuts
-tracing.option.SOURCEFILES_Description=JavaScript source files
-tracing.option.SPY_Description=XMLHttpRequests observer
-tracing.option.STACK_Description=JavaScript call stack
-tracing.option.STORAGE_Description=Settings storage
-tracing.option.SVGVIEWER_Description=SVG viewer
-tracing.option.FONTS_Description=Fonts information and font viewer
-tracing.option.TOOLTIP_Description=Start Button tooltip
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging user interface
-tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
-tracing.option.XMLVIEWER_Description=XML viewer
+#n\n
+#n\n
+Open_Firebug_Tracing=Բացել հետևումը Firebug-ով
+Always_Open_Firebug_Tracing=Միշտ բացել հետևումը
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Հետևում
+tracing.Show_Scope_Variables=Ցույց տալ տեսանելի փոփոխականները
+tracing.Show_Time=Ցույց տալ ժամանակը
+tracing.tab.Stack=Ստեկ
+tracing.tab.Exception=Բացառություն
+tracing.tab.Properties=Հատկություններ
+tracing.tab.Scope=Տեսանելիություն
+tracing.tab.Response=Պատասխան
+tracing.tab.Source=Աղբյուր
+tracing.tab.Interfaces=Ինտերֆեյսեր
+tracing.tab.Object=Ոբյեկտ
+tracing.tab.Event=Իրադարձություն
+tracing.cmd.Clear=Մաքրել
+tracing.cmd.tip.Clear=Մաքրել բոլոր հաղորդագրությունները
+tracing.cmd.Find=Որոնել
+tracing.cmd.tip.Find=Որոնել տեքստ
+tracing.cmd.Bookmark=Էջանիշ
+tracing.cmd.tip.Bookmark=Ավելացնել Էջանիշ
+tracing.cmd.Restart=Վերբեռնել
+tracing.cmd.tip.Restart=Վերբեռնել Firefox-ը
+tracing.cmd.Exit=Ելք
+tracing.cmd.tip.Exit=Ելք Firefox-ից
+tracing.cmd.Save=Պահպանել
+tracing.cmd.tip.Save=Պահպանել լոգերը ֆայլում
+tracing.cmd.Load=Բեռնել ֆայլից
+tracing.cmd.tip.Load=Բեռնել լոգերը ֆայլից
+tracing.cmd.Expand_All=Ընդլայնել բոլորը
+tracing.cmd.Collapse_All=Սեղմել բոլորը
+tracing.cmd.Tools=Գործիքներ
+tracing.cmd.tip.Tools=Գործիքներ
+tracing.cmd.Clear_Browser_Cache=Մաքրել Քեշը
+tracing.cmd.tip.Clear_Browser_Cache=Մաքրել Քեշը
+tracing.cmd.Force_Garbage_Collector=Չոգտագործվող հիշողության մաքրում
+tracing.cmd.tip.Force_Garbage_Collector=Չոգտագործվող հիշողության մաքրում
+tracing.cmd.Open_Profile_Directory=Բացել պրոֆիլի պանակը
+tracing.cmd.tip.Open_Profile_Directory=Բացել պրոֆիլի պանակը
+tracing.option.A11Y_Description=Accessibility issues
+tracing.option.ACTIVATION_Description=Firebug activation
+tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
+tracing.option.ANNOTATIONS_Description=Firebug website annotation
+tracing.option.BP_Description=Breakpoints
+tracing.option.CACHE_Description=Source cache
+tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
+tracing.option.COMPILATION_UNITS_Description=Script compilation units
+tracing.option.CONSOLE_Description=Console Panel
+tracing.option.CSS_Description=CSS parsing
+tracing.option.DISPATCH_Description=Event dispatching
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate creation
+tracing.option.EDITOR_Description=Inline Editor & Autocompleter
+tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Internal Firebug errors
+tracing.option.EVAL_Description=Script evaluation
+tracing.option.FBS_BP_Description=Firebug service breakpoints
+tracing.option.FBS_CREATION_Description=Firebug service script creation
+tracing.option.FBS_ERRORS_Description=Firebug service errors
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
+tracing.option.FBS_FUNCTION_Description=Firebug service function
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
+tracing.option.FBS_SRCUNITS_Description=Firebug service source units
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
+tracing.option.FUNCTION_NAMES_Description=JavaScript function names
+tracing.option.HISTORY_Description=Firebug Navigation History
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request observer
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug initialization
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON viewer
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Localization
+tracing.option.LOCATIONS_Description=Source locations
+tracing.option.NET_Description=Net Panel
+tracing.option.NET_EVENTS_Description=Network events
+tracing.option.OPTIONS_Description=Firebug preferences
+tracing.option.PANELS_Description=Panels
+tracing.option.SHORTCUTS_Description=Keyboard shortcuts
+tracing.option.SOURCEFILES_Description=JavaScript source files
+tracing.option.SPY_Description=XMLHttpRequests observer
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Settings storage
+tracing.option.SVGVIEWER_Description=SVG viewer
+tracing.option.FONTS_Description=Fonts information and font viewer
+tracing.option.TOOLTIP_Description=Start Button tooltip
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging user interface
+tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
+tracing.option.XMLVIEWER_Description=XML viewer
diff --git a/locale/hy-AM/firebug.properties b/locale/hy-AM/firebug.properties
index 36fd8c2..abc59e2 100644
--- a/locale/hy-AM/firebug.properties
+++ b/locale/hy-AM/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-#n\n
-#n\n
-#n\n
-WindowTitle=Firebug - %S
-#n\n
-Panel-console=Կոնսոլ
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Ցանց
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Սկրիպտ
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Ոճ
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Հաշվարկված
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Տեսք
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Հետևել
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Կանգառներ
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Ստեկ
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Տեսանելիություն
-firebug.DetachFirebug=Բացել Firebug-ը Նոր Պատուհանում
-firebug.AttachFirebug=Կցել Firebugի պատուհանը հիմնականին
-#n\n
-#n\n
-#n\n
-#n\n
-pluralRule=1
-#n\n
-#n\n
-#n\n
-#n\n
-#n\n
-#n\n
-plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
-#n\n
-#n\n
-#n\n
-startbutton.tip.deactivated=Deactivated
-#n\n
-#n\n
-#n\n
-#n\n
-#n\n
-panel.status=%S: %S
-inBrowser=Բրաուզերի մեջ
-minimized=սեղմված
-enablement.for_all_pages=բոլոր էջերում
-enablement.on=Միացված է
-enablement.off=Անջատված է
-enablement.Panel_activation_status=Panel activation status:
-none=Փակ
-Firebug_-_inactive_for_current_website=Firebug - inactive for current website
-Activate_Firebug_for_the_current_website=Activate Firebug for the current website
-Minimized=Սեղմված
-Minimize_Firebug=Սեղմել Firebug-ը
-On_for_all_web_pages=Միացնել բոլոր կայքերում
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Մաքրել ակտիվացման ցուցակը
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI Location
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-#n\n
-#n\n
-firebug_options=Firebug` Նախընտրանքներ
-#n\n
-#n\n
-firebug.Show_All_Panels=Ցույց տալ բոլոր վահանակները
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-#n\n
-ShowJavaScriptErrors=Ցույց տալ JavaScript-ի սխալները
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Ցույց տալ JavaScript-ի զգուշացումները
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Ցույց տալ CSS սխալները
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Ցույց տալ ստեկով անցման սխալները
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Ցույց տալ XMLHttpRequests-ները
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Ցույց տալ Chrome-ի Սխալները
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Ցույց տալ Chrome-ի Հաղորդագրությունները
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Ցույց տալ Արտաքին Սխալները
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Ցույց տալ ցանցիի Սխալները
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Մանրամասն Հաղորդագրությունները (արագագործության անկում)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Command History
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Show Completion List Popup
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Assertion Failure
-#n\n
-#n\n
-#n\n
-#n\n
-#n\n
-Line=%S (տող %S)
-LineAndCol=%S (line %S, col %S)
-InstanceLine=%S #%S (տող %S)
-StackItem=%S (%S տող %S)
-SystemItem=<System>
-#n\n
-#n\n
-#n\n
-#n\n
-#n\n
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(անուն չկա)
-#n\n
-#n\n
-#n\n
-jsdIScript=jsdIScript %S
-#n\n
-#n\n
-#n\n
-ShowFullText=Ցույց տալ Տեքստերը ամբողջությամբ
-html.option.tip.Show_Full_Text=Don't crop element contents
-#n\n
-#n\n
-#n\n
-ShowWhitespace=Ցույց տալ Բացատները
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-#n\n
-#n\n
-ShowComments=Ցույց տալ Comments
-html.option.tip.Show_Comments=Show comment nodes
-#n\n
-#n\n
-#n\n
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-#n\n
-#n\n
-#n\n
-HighlightMutations=Ընդգծել փոփոխությունները
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-#n\n
-#n\n
-#n\n
-ExpandMutations=Բացել փոփոխությունները
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-#n\n
-#n\n
-#n\n
-ScrollToMutations=Անցնել փոփոխություններով
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-#n\n
-#n\n
-#n\n
-ShowQuickInfoBox=Ցույց տալ տեղեկությունների պատուհանիկը
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-#n\n
-#n\n
-#n\n
-ShadeBoxModel=Ցույց տալ ուղանկյունային մոդելը
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Ցույց տալ այս մասը
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Նոր Ատրիբուտ...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Ջնջել Տարրը
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Ջնջել
-html.Delete_Node=Delete the node from the tree
-#n\n
-quickInfo=Արագ տեղեկություն
-computedStyle=Հաշվարկված Ոճ
-#n\n
-#n\n
-#n\n
-html.Break_On_Mutate=Կանգնել փոփոխությունից
-html.Disable_Break_On_Mutate=Չկանգնել փոփոխությունից
-html.label.Break_On_Text_Change=Կանգնել տեքստի փոփոխությունից
-html.label.HTML_Breakpoints=Կանգառի կետեր HTML-ում
-html.label.Break_On_Attribute_Change=Կանգնել ատրիբուտի փոփոխությունից
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Կանգնել զավակի ավելացումից/հեռացումից
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Կանգնել տարրի հեռացումից
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-#n\n
-#n\n
-#n\n
-#n\n
-html.label.Expand/Contract_All=Expand/Contract All
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-#n\n
-#n\n
-#n\n
-dom.label.breakOnPropertyChange=Break On Property Change
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-#n\n
-#n\n
-dom.disableBreakOnPropertyChange=Disable Break On Property Change
-dom.label.DOM_Breakpoints=Կանգառի կետեր DOM-ում
-#n\n
-#n\n
-#n\n
-#n\n
-EditAttribute=Խմբագրել \"%S\" Ատրիբուտը...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-#n\n
-#n\n
-#n\n
-#n\n
-DeleteAttribute=Ջնջել \"%S\" Ատրիբուտը
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-#n\n
-#n\n
-#n\n
-InheritedFrom=Ժառանգված սրանից`
-SothinkWarning=The Sothink SWF Catcher ընդլայնումը թույլ չի տալիս Firebug-ին նորմալ աշխատել<br><br>Կարդացեք <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">այս կետը Firebug-ի ՀՏՀում</a> օգնության համար.
-#n\n
-#n\n
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-#n\n
-#n\n
-#n\n
-css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
-#n\n
-#n\n
-#n\n
-css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
-EditStyle=Խմբարգել Տարրի Ոճը...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Նոր Կանոն...
-css.tip.New_Rule=Add a new rule
-#n\n
-#n\n
-#n\n
-#n\n
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-#n\n
-#n\n
-#n\n
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Նոր Հատկություն...
-css.tip.New_Prop=Add a new property to the current rule
-#n\n
-#n\n
-#n\n
-#n\n
-EditProp=Խմբարգել \"%S\"...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-#n\n
-#n\n
-#n\n
-#n\n
-DisableProp=Անջատել \"%S\"
-css.tip.Disable_Prop=Disable the property "%S"
-#n\n
-#n\n
-#n\n
-#n\n
-DeleteProp=Ջնջել \"%S\"
-css.tip.Delete_Prop=Delete the property "%S"
-#n\n
-BreakOnThisError=Կանգնել այս սխալից
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Կանգնել բոլոր սխալից
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-#n\n
-#n\n
-#n\n
-TrackThrowCatch=Հետևել Throw/Catch-երին
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Ոգտագործել վերջին տողը eval() անունների համար
-UseMD5ForEvalName=Ոգտագործել MD5 eval() անունների համար
-#n\n
-Breakpoints=Կանգառներ
-ErrorBreakpoints=Սխալների Կանգառներ
-LoggedFunctions=Logged Functions
-EnableAllBreakpoints=Միացնել Բոլոր Կանգառները
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Անջատել Բոլոր Կանգառները
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Ջնջել Բոլոր Կանգառները
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Այս կանգառը կաշխատի միայն եթե այս արտահայտությունը ճիշտ է`
-#n\n
-#n\n
-#n\n
-breakpoints.Remove_Breakpoint=Remove Breakpoint
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Disable Breakpoint
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Enable Breakpoint
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-#n\n
-#n\n
-#n\n
-#n\n
-#n\n
-script.balloon.Continue=Շարունակել
-script.balloon.Disable=Անջատել
-ScriptsFilterStatic=Ցույց տալ Ստատիկ սկրիպտերը
-ScriptsFilterEval=Ցույց տալ Ստատիկ և eval սկրիպտերը
-ScriptsFilterEvent=Ցույց տալ Ստատիկ և իրադարձային սկրիպտերը
-ScriptsFilterAll=Ցույց տալ Ստատիկ, eval, և իրադարձային սկրիպտերը
-ScriptsFilterStaticShort=ստատիկ
-ScriptsFilterEvalShort=eval-եր
-ScriptsFilterEventShort=իրադարձ.
-ScriptsFilterAllShort=բոլորը
-#n\n
-#n\n
-#n\n
-#n\n
-callstack.Expand_All=Expand All
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Collapse All
-callstack.tip.Collapse_All=Collapse all stack frame functions
-#n\n
-#n\n
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-#n\n
-#n\n
-#n\n
-#n\n
-ShowUserProps=Ցույց տալ User-defined Հատկությունները
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Ցույց տալ User-defined Ֆունկցիաները
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Ցույց տալ DOM Հատկությունները
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Ցույց տալ DOM Ֆունկցիաները
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Ցույց տալ DOM Հաստատունները
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=Այս օբյեկտի համար ցույց տրվելու հատկություններ չկան
-NewWatch=Նոր հետևում...
-#n\n
-#n\n
-AddWatch=Ավելացնել Փոփոխական
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-#n\n
-#n\n
-CopySourceCode=Կրկնակել
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
-CopyValue=Կրկնակել արժեքը
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Copy Name
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Copy Path
-dom.tip.Copy_Path=Copy the property path
-NewProperty=New Հատկություն...
-EditProperty=Խմբագրել Հատկությունը...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Խմբագրել Փոփոխականը...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Խմբագրել Հետևումը...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Ջնջել Հատկությունը
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Ջնջել Հետևումը
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-#n\n
-#n\n
-SetBreakpoint=Դնել Կանգառ
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-#n\n
-#n\n
-#n\n
-EditBreakpointCondition=Խմբագրել Կանգառի պայմանը...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=Այս էջում չկան դրված Կանգառներ
-#n\n
-#n\n
-#n\n
-Only_Show_Applied_Styles=Only Show Applied Styles
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-#n\n
-#n\n
-#n\n
-Show_User_Agent_CSS=Ցույց տալ ագենտի CSS-ը
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-#n\n
-#n\n
-#n\n
-#n\n
-#n\n
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-#n\n
-#n\n
-#n\n
-#n\n
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-#n\n
-#n\n
-#n\n
-#n\n
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-#n\n
-#n\n
-#n\n
-#n\n
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-#n\n
-#n\n
-#n\n
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-#n\n
-#n\n
-#n\n
-#n\n
-Expand_Shorthand_Properties=Ընդլայնել սեղմ հատկությունները
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-#n\n
-#n\n
-#n\n
-#n\n
-Sort_alphabetically=Sort Alphabetically
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-#n\n
-#n\n
-#n\n
-Show_Mozilla_specific_styles=Show Mozilla Specific Styles
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-#n\n
-#n\n
-#n\n
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Type any key to filter list
-#n\n
-#n\n
-#n\n
-LayoutPadding=լուսանցք
-LayoutBorder=շրջանակ
-LayoutMargin=պահուստ
-LayoutPosition=դիրք
-LayoutAdjacent=կից
-position=դիրք
-#n\n
-#n\n
-#n\n
-#n\n
-ShowRulers=Ցույց տալ Կանոնները և Guideրը
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-#n\n
-Loading=Բեռնվում է...
-Headers=Header-ներ
-#n\n
-#n\n
-net.tip.Clear=Clear the request list
-#n\n
-#n\n
-net.header.Reset_Header=Զրոյացնել header-ը
-net.header.tip.Reset_Header=Reset the header display
-#n\n
-#n\n
-#n\n
-#n\n
-#n\n
-#n\n
-net.header.URL=Հասցե
-net.header.URL_Tooltip=Կանչված հասցեն և HTTP մեթոդը
-net.header.Status=Վիճակ
-net.header.Status_Tooltip=Պատասխանի վիճակ
-net.header.Domain=Դոմեյն
-net.header.Domain_Tooltip=Կատարված կանչի դոմեյն
-net.header.Size=Ծավալ
-net.header.Size_Tooltip=Պատասխանի ծավալ
-net.header.Timeline=Ժամանակային առանցք
-net.header.Timeline_Tooltip=Մանրամասն տեղեկություն ըստ ժամանակի
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-#n\n
-net.label.XHR_Breakpoints=Կանգառներ XHR-ում
-#n\n
-#n\n
-net.label.Break_On_XHR=Կանգնել XHR-ի վրա
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-#n\n
-#n\n
-#n\n
-net.headers.view_source=Նայել կոդը
-net.headers.pretty_print=Գեղեցիկ տպել
-#n\n
-net.filter.Media=Մեդիա
-#n\n
-#n\n
-#n\n
-Post=Ուղարկում
-Put=Տեղադրում
-#n\n
-#n\n
-#n\n
-Response=Պատասխան
-URLParameters=Պարամետրեր
-Cache=Քեշ
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Sort by key
-jsonviewer.do_not_sort=Do not sort
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Կանչի Header-ներ
-ResponseHeaders=Պատասխանի Header-ներ
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
-LimitPrefs=Նախընտրանքներ
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Սահմանը փոփոխելու համար խմբագրել` %S
-Refresh=Թարմացնել
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Բացել Նոր Թաբում
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Բացել Պատասխանը Նոր Թաբում
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Գնահատում
-ProfilerStarted=Գնահատումը աշխատում է: Վերջում սեղմեք \'Գնահատում\' կոճակը արդյունքների համար
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
-NothingToProfile=Գնահատելի ակտիվություն չկա:
-PercentTooltip=ժամանակի տոկոսը ծախսված այս ֆունկցիայում
-CallsHeaderTooltip=Ֆունկցիայի կանչման քանակը
-OwnTimeHeaderTooltip=ժամանակ ծախսված ֆունկցիայում, առանց ներքին կանչերի
-TimeHeaderTooltip=ժամանակ ծախսված ֆունկցիայում, նեռարած ներքին կանչերը
-AvgHeaderTooltip=Average ժամանակ, նեռարած ֆունկցիաների կանչերը
-MinHeaderTooltip=Նվազաագույն ժամանակ, նեռարած ֆունկցիաների կանչերը
-MaxHeaderTooltip=Առավելագույն ժամանակ, նեռարած ֆունկցիաների կանչերը
-ProfileButton.Enabled.Tooltip=Գնահատել JavaScript ածխատանքի ժամանակը
-ProfileButton.Disabled.Tooltip=Գնահատել JavaScript ածխատանքի ժամանակը (Սկրիպտ պատուհանը պետք է միացված լինի):
-Function=Ֆունկցիա
-Percent=Տոկոս
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Կանչեր
-OwnTime=Սեփական Ժամանակ
-Time=Ժամանակ
-Avg=Միջ.
-Min=Նվազ.
-Max=Առավ.
-File=Ֆայլ
-# Support for standard actions.
-Copy=Կրկնակել
-Cut=Կտրել
-Remove=Հեռացնել
-Delete=Delete
-Paste=Paste
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Կրկնակել innerHTML-ն
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Կրկնակել XPath-ը
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Կրկնակել CCSի հասցեն
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Կրկնակել Հասցեն
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Կրկնակել Հասցեն պարամետրերով
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Կրկնակել Կանչի header-ը
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Կրկնակել Պատասխանի header-ը
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Կրկնակել Պատասխանը
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Կրկնակել Սխալը
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Կրկնակել Ֆունկցիան
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Լոգել Կանչերը դեպի \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Լոգել Իրադարձությունները
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Միացված
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Firebug կոնսոլը չի աշխատում \'%S\' -ի համար
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Firebug հրամանային տողը չի աշխատում \'%S\' -ի համար
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Անջատել կանգնելն սխալներից
-console.Break_On_All_Errors=Կանգնել սխալներից
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Կանգնել այս սխալի դեպքում
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript-ը անջատված է Firefox-ի ընտրանքներից. Միացենելու համար օգտագործեք Գործիքներ>Ընտրանքներ>Պարունակություն>Միացնել JavaScript
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Պատասխանի պարունակություն
-net.sizeinfo.Post_Body=Կանչի պարունակություն
-net.sizeinfo.Total_Sent=Ուղարկված
-net.sizeinfo.Total_Received=Ստացված
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Ցանց պատուհանը ակտիվացված է: Պատուհանի ոչ ակտիվ ժամանակ ցակացած կանչեր ցույց չեն տրվում:
-net.responseSizeLimitMessage=Firebug-ի պատասխանի չափի սահմանը անցել է: Ցանկության դեպքում հնարավոր է <a>ողջ պատասխանը նոր թաբում բացել</a>:
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Post կանչի չափի սահմանափակւմն անցած է: Հեռացված է Firebug-ի կողմից:
-net.Break_On_XHR=Կանգ առնել XHR-ի վրա
-net.label.Parameters=Պարամետրեր
-net.label.Parts=Մասեր
-net.label.Source=Աղբյուր
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Անջատել բրաուզերի քեշը
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Ցույց տալ Նկարման(paint) իրադարձությունները
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Կանգառնել Հաջորդի վրա
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Ցույց տալ HTTP Header-ները
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S request;%1$S requests
-FromCache=քեշից
-StopLoading=Դադարեցնել Բեռնումը
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Շատ մեծ տվյալ)
-ShowComputedStyle=Ցույց տալ Հաշվարկված ոճը
-StyleGroup-text=Տեքստ
-StyleGroup-background=Ֆոն
-StyleGroup-box=Ողանկյան մոդել
-StyleGroup-layout=Տեսք
-StyleGroup-other=Այլ
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Կրկնակել Գույնը
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Կրկնակել Նկարի հասցեն
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Բացել Նկարը Նոր Թաբում
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Բաց թողնել գործիքաշարի Ստեկը
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copy Rule Declaration
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Կրկնակել ոճի սահմանումը
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Error;%1$S Errors
-moduleManager.title=%S պատուհանը անջատված է
-moduleManager.desc3=Օգտագործել վիճակի տողի Firebug-ի կոճակի մենյուն միացնել/անջատել-ու համար բոլոր պատուհանները: Օգտագործել ամեն պատուհանի թաբի մենյուն ղեկավարման համար`
-moduleManager.Enable=Enable
-Suspend_Firebug=Ընդմիջել Firebug-ը
-Resume_Firebug=Շարունակել Firebug-ը
-Reset_Panels_To_Disabled=Զրոյացնել պատուհանները անջատված ռեժիմի
-Open_Console=Բացել Կոնսոլը
-Open_Console_Tooltip=Բացել Firebug-ին հետևման կոնսոլը
-Scope_Chain=ՏԵսանելիության ուղի
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=With
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Կանչ
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Պատուհան
-Logs=Լոգեր
-Options=Ընտրանքներ
-Copy_Stack=Կրկնակել Ստեկը
-Copy Exception=Կրկնակել Բացառությունները
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Արգելում
-requestinfo.Resolving=DNS-կանչ
-requestinfo.Connecting=Միացում
-requestinfo.Sending=Ուղարկում
-requestinfo.Waiting=Սպասում
-requestinfo.Receiving=Բեռնում
-requestinfo.ContentLoad=Պարունակության բեռնում
-requestinfo.WindowLoad=\'Պատուհանը բեռնված է\' (իրադարձ.)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Որոնում
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Հաջորդ
-search.tip.Next=Search for the next match
-search.Previous=Նախորդ
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Զգայուն տառաչափին
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Մի քանի ֆայլ
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Օգտագործել Ռեգուլար արտահայտություններ (Regexp)
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS Ընտրիչ
-search.net.Headers=Header-ներ
-search.net.Parameters=Պարամետրեր
-search.net.Response_Bodies=Պատասխաններ
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Պահպանել
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Show all log entries
-firebug.console.Errors=Errors
-firebug.console.Filter_by_Errors=Filter by errors
-firebug.console.Warnings=Warnings
-firebug.console.Filter_by_Warnings=Filter by warnings
-firebug.console.Info=Info
-firebug.console.Filter_by_Info=Filter by info
-firebug.console.Debug_Info=Debug Info
-firebug.console.Filter_by_Debug_Info=Filter by debug info
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Բացել Firebug-ը
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Hide Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Միացնել Բոլոր Պատուհանները
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Անջատել Բոլոր Պատուհանները
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Խմբագրել ստեղները
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Նախընտրանքներ
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Միացնել Հասանելիության ընդլայնումները
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Զրոյացնել Firebug-ի բոլոր Ընտրանքները
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug-ը Ցանցում է
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Show Error Count
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Տեքստի չափը
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Խոշորացնել տեքստը
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Մանրացնել տեքստը
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Նորմալ չափ
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Firebug- ՎեբԿայք...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Գրականություն...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Ստեղնաշարի հրամաններ...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Քննարկում...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Խնդրների վերլուծում...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Մասնակցել...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Մասին...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Որոնել
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Նորից ներմուծել հրամանը
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Հետազոտուման ռեժիմ
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Արագ ինֆորմացիայի պատուհան
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Գնահատման ռեժիմ
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Հրամանային տողը` ֆոկուսի
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Firebug-ի Որոնումը` ֆոկուսի
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Focus Watch Editor
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Հասցեն` ֆոկուսի
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Հաջորդ Օբյեկտը
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Նախորդ Օբյեկտը
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Խմբագրել Firebug-ի ստեղները
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Բացել Firebug-ը Նոր Պատուհանում
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Անցնել Firebug-ի ձախ պատուհանին
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Անցնել Firebug-ի աջ պատուհանին
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Բացել Firebug-ը
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Նախորդ Firebug-ի պատուհանը
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Մաքրել Կոնսոլը
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Բացել Հետևման Կոնսոլը
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Ետ գնալ
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Առաջ գնալ
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Increase Text Size
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Decrease Text Size
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normal Text Size
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Ընտչրել Վահանակը
-customizeShortcuts=Firebug-ի ստեղնային հրամանները
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=Վահանակի գործիքներ
-a11y.labels.firebug_panels=Վահանակներ (Firebug)
-a11y.labels.firebug_side_panels=Կողավահանակներ (Firebug)
-a11y.labels.firebug_window=Firebug պատուհան
-a11y.labels.firebug_status=Firebug Վիճակ
-a11y.labels.reset=Զրույացում
-a11y.labels.reset_shortcut=Զրույացնել %S կոճակը
-aria.labels.inactive_panel=Ոչ ակտիվ վահանակ
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=Լոգի տողեր
-a11y.labels.call_stack=Կանչի ստեկ
-a11y.labels.document_structure=document structure
-a11y.labels.title_panel=%S Վահանակ
-a11y.labels.title_side_panel=%S Կողավահանակ
-a11y.labels.cached=Քեշ
-aria.labels.stack_trace=Սխալներ ստեկում
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=դիրք
-a11y.layout.position_top=վերևի դիրք
-a11y.layout.position_right=աջ դիրք
-a11y.layout.position_bottom=ներքևի դիրք
-a11y.layout.position_left=ձախ դիրք
-a11y.layout.margin_top=margin վերևից
-a11y.layout.margin_right=margin աջից
-a11y.layout.margin_bottom=margin ներքևից
-a11y.layout.margin_left=margin ձախից
-a11y.layout.border_top=border վերևից
-a11y.layout.border_right=border աջից
-a11y.layout.border_bottom=border ներքևից
-a11y.layout.border_left=border ձախից
-a11y.layout.padding_top=padding վերևից
-a11y.layout.padding_right=padding աջից
-a11y.layout.padding_bottom=padding ներքևից
-a11y.layout.padding_left=padding ձախից
-a11y.layout.top=վերևից
-a11y.layout.right=աջից
-a11y.layout.bottom=ներքևից
-a11y.layout.left=ձախից
-a11y.layout.width=լայնություն
-a11y.layout.height=բարձրություն
-a11y.layout.size=չափ
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=սահմանափակող ուղղանկյուն
-a11y.descriptions.press_enter_to_edit_values=սեղմել Enter խմբագրելու համար
-a11y.labels.style_rules=ոճի կանոններ
-aria.labels.inherited_style_rules=ժառանգված ոճեր
-a11y.labels.computed_styles=հաշվարկված ոճեր
-a11y.labels.dom_properties=dom հատկություններ
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=ներդրված խմբագիր
-a11y.labels.value_for_attribute_in_element=%S ատրիբուտի արժեքը %S տարրում
-a11y.labels.attribute_for_element=%S տարրի ատրիբուտ
-a11y.labels.text_contents_for_element=%S տարրի ատրիբուտ տեքստային պարունակ.
-a11y.labels.defined_in_file=հայտարարված է %S-ում
-a11y.labels.declarations_for_selector=\"%S\" ընտրիչի ոճի հայտարարություն
-a11y.labels.property_for_selector=CSS հատկություններ` %S ընտրիչի
-a11y.labels.value_property_in_selector=%S հատկության արժեքը %S ընտրիչում
-a11y.labels.css_selector=CSS ընտրիչ
-a11y.labels.source_code_for_file=%S# ֆայլի աղբյուրը
-a11y.labels.press_enter_to_add_new_watch_expression=սեղմել Enter նոր դիտման համար
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=վերահայտարարված
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=ունի պայմանական կանգառ
-a11y.updates.has_disabled_break_point=ունի անջատված կանգառ
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=սկրիպտը կանգնել է %S-ի վրա %S-ում, %S ֆայլում
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=գտնված է %S-ին համապատասխանություն լոգի %S տողերում
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=գտնված է %S-ին համապատասխանություն %S տողում %S-ում
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=գտնված է %S-ին համապատասխանություն %S տարրում %S-հասցեում
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=գտնված է %S-ին համապատասխանություն %S=%S ատրիբուտում ում %S-հասցեում
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=գտնված է %S-ին համապատասխանություն %S տարրի տեքստում` %S, %S-հասցեում
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=գտնված է %S-ին համապատասխանություն %S ընտրիչում
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=գտնված է \"%S\"-ին համապատասխանություն %S ոճի` %S ընտրիչում
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=գտնված է %S-ին համապատասխանություն %S DOM հատկության մեջ
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=գտնված է \"%S\"-ին համապատասխանություն հետևյալում` %S, %S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=%S-ին համապատասխանություն ցանից գումարային տողում` %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=գտնված չէ համապատասխանություն \"%S\"-ին
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Զրույացնե՞լ բոլոր ընտրանքները լռելիությամբ վիճակի:
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=Կոնսոլը պետք միացված լինի
-warning.Command_line_blocked?=Հրամանայի տողը արգելվա՞ծ է
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Վերբեռնել ակտիվացնելու համար պատուհանի կոնսոլը
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=Այս հասցեի սվյալը տեքստ չէ
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Ետ գնալ դեպի այս վահանակը
-firebug.history.Stay_on_this_panel=Մնալ այս վահանակում
-firebug.history.Go_forward_to_this_panel=Առաջ գնալ դեպի այս վահանակը
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Ետ գնալ
-firebug.history.Go_forward=Առաջ գնալ
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Script Panel was inactive during page load
-script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript is not enabled
-script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Enable JavaScript and Refresh
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=All scripts were filtered
-script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=No Javascript on this page
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Debugger is already active
-script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
-script.button.Go_to_that_page=Go to that page
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Փակել
-firebug.View=Տեսք
-firebug.Help=Օգնություն
-firebug.Run=Քշել
-firebug.Copy=Կրկնակել
-firebug.History=History
-firebug.Run_the_entered_command=Run the entered command
-firebug.Clear_the_Command_Editor=Clear the Command Editor
-firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
-firebug.Insert_a_previously_entered_command=Insert a previously entered command
-firebug.AlwaysOpenInWindow=Միշտ բացելՆոր Պատուհանում
-firebug.OpenWith=Բացել Խմբագրով
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Կայքեր...
-firebug.Configure_Editors=Configure Editors
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Հետազոտել
-firebug.InspectElement=Հետազոտել տարրը
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Սխալներից Կանգնել
-firebug.InspectTooltip=Կլիկով ընտրել հետազոտվող տարրը
-firebug.EditHTMLTooltip=Խմբագրել HTML-ն
-firebug.Profile=Գնահատում
-firebug.Clear=Մաքրել
-firebug.ClearConsole=Մաքրել կոնսոլը
-firebug.ClearTooltip=Մաքրել լրիվ կոնսոլը
-firebug.All=Ամեն ինչ
-firebug.Images=Նկարներ
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Configured Firebug Editors
-editors.Editor=Editor
-editors.Executable=Executable
-editors.Launch_Arguments=Launch Arguments
-editors.Add=Add
-editors.Remove=Remove
-editors.Change=Change
-editors.Move_Up=Move Up
-editors.Close=Close
-editors.Browse=Browse...
-changeEditor.Editor_Configuration=Editor Configuration
-changeEditor.Name=Անուն`
-changeEditor.Executable=Ծրագիր`
-changeEditor.CmdLine=Արգումենտներ`
-changeEditor.Supplied_arguments=Arguments supplied by Firebug:
-changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
-changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
-changeEditor.Line_number=Line number (if available)
-changeEditor.Invalid_Application_Path=Invalid Application Path
-changeEditor.Application_does_not_exist=The specified application doesn't exist!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Խմբագրել
-firebug.css.sourceEdit=Source Edit
-firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
-firebug.css.liveEdit=Live Edit
-firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
-firebug.EditCSSTooltip=Խմբագրել այս ոճը
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Show Break Notifications
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
-firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=There are no child objects
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=more
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Object Properties
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(no completions)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
-firebug.failedToPreviewImageURL=Failed to load the given URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+#n\n
+#n\n
+#n\n
+WindowTitle=Firebug - %S
+#n\n
+Panel-console=Կոնսոլ
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Ցանց
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Սկրիպտ
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Ոճ
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Հաշվարկված
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Տեսք
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Հետևել
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Կանգառներ
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Ստեկ
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Տեսանելիություն
+firebug.DetachFirebug=Բացել Firebug-ը Նոր Պատուհանում
+firebug.AttachFirebug=Կցել Firebugի պատուհանը հիմնականին
+#n\n
+#n\n
+#n\n
+#n\n
+pluralRule=1
+#n\n
+#n\n
+#n\n
+#n\n
+#n\n
+#n\n
+plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
+#n\n
+#n\n
+#n\n
+startbutton.tip.deactivated=Deactivated
+#n\n
+#n\n
+#n\n
+#n\n
+#n\n
+panel.status=%S: %S
+inBrowser=Բրաուզերի մեջ
+minimized=սեղմված
+enablement.for_all_pages=բոլոր էջերում
+enablement.on=Միացված է
+enablement.off=Անջատված է
+enablement.Panel_activation_status=Panel activation status:
+none=Փակ
+Firebug_-_inactive_for_current_website=Firebug - inactive for current website
+Activate_Firebug_for_the_current_website=Activate Firebug for the current website
+Minimized=Սեղմված
+Minimize_Firebug=Սեղմել Firebug-ը
+On_for_all_web_pages=Միացնել բոլոր կայքերում
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Մաքրել ակտիվացման ցուցակը
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI Location
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+#n\n
+#n\n
+firebug_options=Firebug` Նախընտրանքներ
+#n\n
+#n\n
+firebug.Show_All_Panels=Ցույց տալ բոլոր վահանակները
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+#n\n
+ShowJavaScriptErrors=Ցույց տալ JavaScript-ի սխալները
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Ցույց տալ JavaScript-ի զգուշացումները
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Ցույց տալ CSS սխալները
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Ցույց տալ ստեկով անցման սխալները
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Ցույց տալ XMLHttpRequests-ները
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Ցույց տալ Chrome-ի Սխալները
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Ցույց տալ Chrome-ի Հաղորդագրությունները
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Ցույց տալ Արտաքին Սխալները
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Ցույց տալ ցանցիի Սխալները
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Մանրամասն Հաղորդագրությունները (արագագործության անկում)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Command History
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Show Completion List Popup
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Assertion Failure
+#n\n
+#n\n
+#n\n
+#n\n
+#n\n
+Line=%S (տող %S)
+LineAndCol=%S (line %S, col %S)
+InstanceLine=%S #%S (տող %S)
+StackItem=%S (%S տող %S)
+SystemItem=<System>
+#n\n
+#n\n
+#n\n
+#n\n
+#n\n
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(անուն չկա)
+#n\n
+#n\n
+#n\n
+jsdIScript=jsdIScript %S
+#n\n
+#n\n
+#n\n
+ShowFullText=Ցույց տալ Տեքստերը ամբողջությամբ
+html.option.tip.Show_Full_Text=Don't crop element contents
+#n\n
+#n\n
+#n\n
+ShowWhitespace=Ցույց տալ Բացատները
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+#n\n
+#n\n
+ShowComments=Ցույց տալ Comments
+html.option.tip.Show_Comments=Show comment nodes
+#n\n
+#n\n
+#n\n
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+#n\n
+#n\n
+#n\n
+HighlightMutations=Ընդգծել փոփոխությունները
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+#n\n
+#n\n
+#n\n
+ExpandMutations=Բացել փոփոխությունները
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+#n\n
+#n\n
+#n\n
+ScrollToMutations=Անցնել փոփոխություններով
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+#n\n
+#n\n
+#n\n
+ShowQuickInfoBox=Ցույց տալ տեղեկությունների պատուհանիկը
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+#n\n
+#n\n
+#n\n
+ShadeBoxModel=Ցույց տալ ուղանկյունային մոդելը
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Ցույց տալ այս մասը
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Նոր Ատրիբուտ...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Ջնջել Տարրը
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Ջնջել
+html.Delete_Node=Delete the node from the tree
+#n\n
+quickInfo=Արագ տեղեկություն
+computedStyle=Հաշվարկված Ոճ
+#n\n
+#n\n
+#n\n
+html.Break_On_Mutate=Կանգնել փոփոխությունից
+html.Disable_Break_On_Mutate=Չկանգնել փոփոխությունից
+html.label.Break_On_Text_Change=Կանգնել տեքստի փոփոխությունից
+html.label.HTML_Breakpoints=Կանգառի կետեր HTML-ում
+html.label.Break_On_Attribute_Change=Կանգնել ատրիբուտի փոփոխությունից
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Կանգնել զավակի ավելացումից/հեռացումից
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Կանգնել տարրի հեռացումից
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+#n\n
+#n\n
+#n\n
+#n\n
+html.label.Expand/Contract_All=Expand/Contract All
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+#n\n
+#n\n
+#n\n
+dom.label.breakOnPropertyChange=Break On Property Change
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+#n\n
+#n\n
+dom.disableBreakOnPropertyChange=Disable Break On Property Change
+dom.label.DOM_Breakpoints=Կանգառի կետեր DOM-ում
+#n\n
+#n\n
+#n\n
+#n\n
+EditAttribute=Խմբագրել \"%S\" Ատրիբուտը...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+#n\n
+#n\n
+#n\n
+#n\n
+DeleteAttribute=Ջնջել \"%S\" Ատրիբուտը
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+#n\n
+#n\n
+#n\n
+InheritedFrom=Ժառանգված սրանից`
+SothinkWarning=The Sothink SWF Catcher ընդլայնումը թույլ չի տալիս Firebug-ին նորմալ աշխատել<br><br>Կարդացեք <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">այս կետը Firebug-ի ՀՏՀում</a> օգնության համար.
+#n\n
+#n\n
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+#n\n
+#n\n
+#n\n
+css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
+#n\n
+#n\n
+#n\n
+css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
+EditStyle=Խմբարգել Տարրի Ոճը...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Նոր Կանոն...
+css.tip.New_Rule=Add a new rule
+#n\n
+#n\n
+#n\n
+#n\n
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+#n\n
+#n\n
+#n\n
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Նոր Հատկություն...
+css.tip.New_Prop=Add a new property to the current rule
+#n\n
+#n\n
+#n\n
+#n\n
+EditProp=Խմբարգել \"%S\"...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+#n\n
+#n\n
+#n\n
+#n\n
+DisableProp=Անջատել \"%S\"
+css.tip.Disable_Prop=Disable the property "%S"
+#n\n
+#n\n
+#n\n
+#n\n
+DeleteProp=Ջնջել \"%S\"
+css.tip.Delete_Prop=Delete the property "%S"
+#n\n
+BreakOnThisError=Կանգնել այս սխալից
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Կանգնել բոլոր սխալից
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+#n\n
+#n\n
+#n\n
+TrackThrowCatch=Հետևել Throw/Catch-երին
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Ոգտագործել վերջին տողը eval() անունների համար
+UseMD5ForEvalName=Ոգտագործել MD5 eval() անունների համար
+#n\n
+Breakpoints=Կանգառներ
+ErrorBreakpoints=Սխալների Կանգառներ
+LoggedFunctions=Logged Functions
+EnableAllBreakpoints=Միացնել Բոլոր Կանգառները
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Անջատել Բոլոր Կանգառները
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Ջնջել Բոլոր Կանգառները
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Այս կանգառը կաշխատի միայն եթե այս արտահայտությունը ճիշտ է`
+#n\n
+#n\n
+#n\n
+breakpoints.Remove_Breakpoint=Remove Breakpoint
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Disable Breakpoint
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Enable Breakpoint
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+#n\n
+#n\n
+#n\n
+#n\n
+#n\n
+script.balloon.Continue=Շարունակել
+script.balloon.Disable=Անջատել
+ScriptsFilterStatic=Ցույց տալ Ստատիկ սկրիպտերը
+ScriptsFilterEval=Ցույց տալ Ստատիկ և eval սկրիպտերը
+ScriptsFilterEvent=Ցույց տալ Ստատիկ և իրադարձային սկրիպտերը
+ScriptsFilterAll=Ցույց տալ Ստատիկ, eval, և իրադարձային սկրիպտերը
+ScriptsFilterStaticShort=ստատիկ
+ScriptsFilterEvalShort=eval-եր
+ScriptsFilterEventShort=իրադարձ.
+ScriptsFilterAllShort=բոլորը
+#n\n
+#n\n
+#n\n
+#n\n
+callstack.Expand_All=Expand All
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Collapse All
+callstack.tip.Collapse_All=Collapse all stack frame functions
+#n\n
+#n\n
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+#n\n
+#n\n
+#n\n
+#n\n
+ShowUserProps=Ցույց տալ User-defined Հատկությունները
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Ցույց տալ User-defined Ֆունկցիաները
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Ցույց տալ DOM Հատկությունները
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Ցույց տալ DOM Ֆունկցիաները
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Ցույց տալ DOM Հաստատունները
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=Այս օբյեկտի համար ցույց տրվելու հատկություններ չկան
+NewWatch=Նոր հետևում...
+#n\n
+#n\n
+AddWatch=Ավելացնել Փոփոխական
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+#n\n
+#n\n
+CopySourceCode=Կրկնակել
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
+CopyValue=Կրկնակել արժեքը
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Copy Name
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Copy Path
+dom.tip.Copy_Path=Copy the property path
+NewProperty=New Հատկություն...
+EditProperty=Խմբագրել Հատկությունը...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Խմբագրել Փոփոխականը...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Խմբագրել Հետևումը...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Ջնջել Հատկությունը
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Ջնջել Հետևումը
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+#n\n
+#n\n
+SetBreakpoint=Դնել Կանգառ
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+#n\n
+#n\n
+#n\n
+EditBreakpointCondition=Խմբագրել Կանգառի պայմանը...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=Այս էջում չկան դրված Կանգառներ
+#n\n
+#n\n
+#n\n
+Only_Show_Applied_Styles=Only Show Applied Styles
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+#n\n
+#n\n
+#n\n
+Show_User_Agent_CSS=Ցույց տալ ագենտի CSS-ը
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+#n\n
+#n\n
+#n\n
+#n\n
+#n\n
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+#n\n
+#n\n
+#n\n
+#n\n
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+#n\n
+#n\n
+#n\n
+#n\n
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+#n\n
+#n\n
+#n\n
+#n\n
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+#n\n
+#n\n
+#n\n
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+#n\n
+#n\n
+#n\n
+#n\n
+Expand_Shorthand_Properties=Ընդլայնել սեղմ հատկությունները
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+#n\n
+#n\n
+#n\n
+#n\n
+Sort_alphabetically=Sort Alphabetically
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+#n\n
+#n\n
+#n\n
+Show_Mozilla_specific_styles=Show Mozilla Specific Styles
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+#n\n
+#n\n
+#n\n
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Type any key to filter list
+#n\n
+#n\n
+#n\n
+LayoutPadding=լուսանցք
+LayoutBorder=շրջանակ
+LayoutMargin=պահուստ
+LayoutPosition=դիրք
+LayoutAdjacent=կից
+position=դիրք
+#n\n
+#n\n
+#n\n
+#n\n
+ShowRulers=Ցույց տալ Կանոնները և Guideրը
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+#n\n
+Loading=Բեռնվում է...
+Headers=Header-ներ
+#n\n
+#n\n
+net.tip.Clear=Clear the request list
+#n\n
+#n\n
+net.header.Reset_Header=Զրոյացնել header-ը
+net.header.tip.Reset_Header=Reset the header display
+#n\n
+#n\n
+#n\n
+#n\n
+#n\n
+#n\n
+net.header.URL=Հասցե
+net.header.URL_Tooltip=Կանչված հասցեն և HTTP մեթոդը
+net.header.Status=Վիճակ
+net.header.Status_Tooltip=Պատասխանի վիճակ
+net.header.Domain=Դոմեյն
+net.header.Domain_Tooltip=Կատարված կանչի դոմեյն
+net.header.Size=Ծավալ
+net.header.Size_Tooltip=Պատասխանի ծավալ
+net.header.Timeline=Ժամանակային առանցք
+net.header.Timeline_Tooltip=Մանրամասն տեղեկություն ըստ ժամանակի
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+#n\n
+net.label.XHR_Breakpoints=Կանգառներ XHR-ում
+#n\n
+#n\n
+net.label.Break_On_XHR=Կանգնել XHR-ի վրա
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+#n\n
+#n\n
+#n\n
+net.headers.view_source=Նայել կոդը
+net.headers.pretty_print=Գեղեցիկ տպել
+#n\n
+net.filter.Media=Մեդիա
+#n\n
+#n\n
+#n\n
+Post=Ուղարկում
+Put=Տեղադրում
+#n\n
+#n\n
+#n\n
+Response=Պատասխան
+URLParameters=Պարամետրեր
+Cache=Քեշ
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Sort by key
+jsonviewer.do_not_sort=Do not sort
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Կանչի Header-ներ
+ResponseHeaders=Պատասխանի Header-ներ
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
+LimitPrefs=Նախընտրանքներ
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Սահմանը փոփոխելու համար խմբագրել` %S
+Refresh=Թարմացնել
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Բացել Նոր Թաբում
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Բացել Պատասխանը Նոր Թաբում
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Գնահատում
+ProfilerStarted=Գնահատումը աշխատում է: Վերջում սեղմեք \'Գնահատում\' կոճակը արդյունքների համար
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
+NothingToProfile=Գնահատելի ակտիվություն չկա:
+PercentTooltip=ժամանակի տոկոսը ծախսված այս ֆունկցիայում
+CallsHeaderTooltip=Ֆունկցիայի կանչման քանակը
+OwnTimeHeaderTooltip=ժամանակ ծախսված ֆունկցիայում, առանց ներքին կանչերի
+TimeHeaderTooltip=ժամանակ ծախսված ֆունկցիայում, նեռարած ներքին կանչերը
+AvgHeaderTooltip=Average ժամանակ, նեռարած ֆունկցիաների կանչերը
+MinHeaderTooltip=Նվազաագույն ժամանակ, նեռարած ֆունկցիաների կանչերը
+MaxHeaderTooltip=Առավելագույն ժամանակ, նեռարած ֆունկցիաների կանչերը
+ProfileButton.Enabled.Tooltip=Գնահատել JavaScript ածխատանքի ժամանակը
+ProfileButton.Disabled.Tooltip=Գնահատել JavaScript ածխատանքի ժամանակը (Սկրիպտ պատուհանը պետք է միացված լինի):
+Function=Ֆունկցիա
+Percent=Տոկոս
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Կանչեր
+OwnTime=Սեփական Ժամանակ
+Time=Ժամանակ
+Avg=Միջ.
+Min=Նվազ.
+Max=Առավ.
+File=Ֆայլ
+# Support for standard actions.
+Copy=Կրկնակել
+Cut=Կտրել
+Remove=Հեռացնել
+Delete=Delete
+Paste=Paste
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Կրկնակել innerHTML-ն
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Կրկնակել XPath-ը
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Կրկնակել CCSի հասցեն
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Կրկնակել Հասցեն
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Կրկնակել Հասցեն պարամետրերով
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Կրկնակել Կանչի header-ը
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Կրկնակել Պատասխանի header-ը
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Կրկնակել Պատասխանը
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Կրկնակել Սխալը
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Կրկնակել Ֆունկցիան
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Լոգել Կանչերը դեպի \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Լոգել Իրադարձությունները
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Միացված
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Firebug կոնսոլը չի աշխատում \'%S\' -ի համար
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Firebug հրամանային տողը չի աշխատում \'%S\' -ի համար
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Անջատել կանգնելն սխալներից
+console.Break_On_All_Errors=Կանգնել սխալներից
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Կանգնել այս սխալի դեպքում
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript-ը անջատված է Firefox-ի ընտրանքներից. Միացենելու համար օգտագործեք Գործիքներ>Ընտրանքներ>Պարունակություն>Միացնել JavaScript
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Պատասխանի պարունակություն
+net.sizeinfo.Post_Body=Կանչի պարունակություն
+net.sizeinfo.Total_Sent=Ուղարկված
+net.sizeinfo.Total_Received=Ստացված
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Ցանց պատուհանը ակտիվացված է: Պատուհանի ոչ ակտիվ ժամանակ ցակացած կանչեր ցույց չեն տրվում:
+net.responseSizeLimitMessage=Firebug-ի պատասխանի չափի սահմանը անցել է: Ցանկության դեպքում հնարավոր է <a>ողջ պատասխանը նոր թաբում բացել</a>:
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Post կանչի չափի սահմանափակւմն անցած է: Հեռացված է Firebug-ի կողմից:
+net.Break_On_XHR=Կանգ առնել XHR-ի վրա
+net.label.Parameters=Պարամետրեր
+net.label.Parts=Մասեր
+net.label.Source=Աղբյուր
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Անջատել բրաուզերի քեշը
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Ցույց տալ Նկարման(paint) իրադարձությունները
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Կանգառնել Հաջորդի վրա
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Ցույց տալ HTTP Header-ները
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S request;%1$S requests
+FromCache=քեշից
+StopLoading=Դադարեցնել Բեռնումը
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Շատ մեծ տվյալ)
+ShowComputedStyle=Ցույց տալ Հաշվարկված ոճը
+StyleGroup-text=Տեքստ
+StyleGroup-background=Ֆոն
+StyleGroup-box=Ողանկյան մոդել
+StyleGroup-layout=Տեսք
+StyleGroup-other=Այլ
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Կրկնակել Գույնը
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Կրկնակել Նկարի հասցեն
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Բացել Նկարը Նոր Թաբում
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Բաց թողնել գործիքաշարի Ստեկը
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copy Rule Declaration
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Կրկնակել ոճի սահմանումը
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Error;%1$S Errors
+moduleManager.title=%S պատուհանը անջատված է
+moduleManager.desc3=Օգտագործել վիճակի տողի Firebug-ի կոճակի մենյուն միացնել/անջատել-ու համար բոլոր պատուհանները: Օգտագործել ամեն պատուհանի թաբի մենյուն ղեկավարման համար`
+moduleManager.Enable=Enable
+Suspend_Firebug=Ընդմիջել Firebug-ը
+Resume_Firebug=Շարունակել Firebug-ը
+Reset_Panels_To_Disabled=Զրոյացնել պատուհանները անջատված ռեժիմի
+Open_Console=Բացել Կոնսոլը
+Open_Console_Tooltip=Բացել Firebug-ին հետևման կոնսոլը
+Scope_Chain=ՏԵսանելիության ուղի
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=With
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Կանչ
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Պատուհան
+Logs=Լոգեր
+Options=Ընտրանքներ
+Copy_Stack=Կրկնակել Ստեկը
+Copy Exception=Կրկնակել Բացառությունները
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Արգելում
+requestinfo.Resolving=DNS-կանչ
+requestinfo.Connecting=Միացում
+requestinfo.Sending=Ուղարկում
+requestinfo.Waiting=Սպասում
+requestinfo.Receiving=Բեռնում
+requestinfo.ContentLoad=Պարունակության բեռնում
+requestinfo.WindowLoad=\'Պատուհանը բեռնված է\' (իրադարձ.)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Որոնում
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Հաջորդ
+search.tip.Next=Search for the next match
+search.Previous=Նախորդ
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Զգայուն տառաչափին
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Մի քանի ֆայլ
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Օգտագործել Ռեգուլար արտահայտություններ (Regexp)
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS Ընտրիչ
+search.net.Headers=Header-ներ
+search.net.Parameters=Պարամետրեր
+search.net.Response_Bodies=Պատասխաններ
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Պահպանել
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Show all log entries
+firebug.console.Errors=Errors
+firebug.console.Filter_by_Errors=Filter by errors
+firebug.console.Warnings=Warnings
+firebug.console.Filter_by_Warnings=Filter by warnings
+firebug.console.Info=Info
+firebug.console.Filter_by_Info=Filter by info
+firebug.console.Debug_Info=Debug Info
+firebug.console.Filter_by_Debug_Info=Filter by debug info
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Բացել Firebug-ը
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Hide Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Միացնել Բոլոր Պատուհանները
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Անջատել Բոլոր Պատուհանները
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Խմբագրել ստեղները
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Նախընտրանքներ
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Միացնել Հասանելիության ընդլայնումները
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Զրոյացնել Firebug-ի բոլոր Ընտրանքները
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug-ը Ցանցում է
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Show Error Count
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Տեքստի չափը
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Խոշորացնել տեքստը
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Մանրացնել տեքստը
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Նորմալ չափ
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Firebug- ՎեբԿայք...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Գրականություն...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Ստեղնաշարի հրամաններ...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Քննարկում...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Խնդրների վերլուծում...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Մասնակցել...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Մասին...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Որոնել
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Նորից ներմուծել հրամանը
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Հետազոտուման ռեժիմ
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Արագ ինֆորմացիայի պատուհան
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Գնահատման ռեժիմ
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Հրամանային տողը` ֆոկուսի
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Firebug-ի Որոնումը` ֆոկուսի
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Focus Watch Editor
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Հասցեն` ֆոկուսի
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Հաջորդ Օբյեկտը
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Նախորդ Օբյեկտը
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Խմբագրել Firebug-ի ստեղները
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Բացել Firebug-ը Նոր Պատուհանում
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Անցնել Firebug-ի ձախ պատուհանին
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Անցնել Firebug-ի աջ պատուհանին
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Բացել Firebug-ը
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Նախորդ Firebug-ի պատուհանը
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Մաքրել Կոնսոլը
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Բացել Հետևման Կոնսոլը
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Ետ գնալ
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Առաջ գնալ
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Increase Text Size
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Decrease Text Size
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normal Text Size
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Ընտչրել Վահանակը
+customizeShortcuts=Firebug-ի ստեղնային հրամանները
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=Վահանակի գործիքներ
+a11y.labels.firebug_panels=Վահանակներ (Firebug)
+a11y.labels.firebug_side_panels=Կողավահանակներ (Firebug)
+a11y.labels.firebug_window=Firebug պատուհան
+a11y.labels.firebug_status=Firebug Վիճակ
+a11y.labels.reset=Զրույացում
+a11y.labels.reset_shortcut=Զրույացնել %S կոճակը
+aria.labels.inactive_panel=Ոչ ակտիվ վահանակ
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=Լոգի տողեր
+a11y.labels.call_stack=Կանչի ստեկ
+a11y.labels.document_structure=document structure
+a11y.labels.title_panel=%S Վահանակ
+a11y.labels.title_side_panel=%S Կողավահանակ
+a11y.labels.cached=Քեշ
+aria.labels.stack_trace=Սխալներ ստեկում
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=դիրք
+a11y.layout.position_top=վերևի դիրք
+a11y.layout.position_right=աջ դիրք
+a11y.layout.position_bottom=ներքևի դիրք
+a11y.layout.position_left=ձախ դիրք
+a11y.layout.margin_top=margin վերևից
+a11y.layout.margin_right=margin աջից
+a11y.layout.margin_bottom=margin ներքևից
+a11y.layout.margin_left=margin ձախից
+a11y.layout.border_top=border վերևից
+a11y.layout.border_right=border աջից
+a11y.layout.border_bottom=border ներքևից
+a11y.layout.border_left=border ձախից
+a11y.layout.padding_top=padding վերևից
+a11y.layout.padding_right=padding աջից
+a11y.layout.padding_bottom=padding ներքևից
+a11y.layout.padding_left=padding ձախից
+a11y.layout.top=վերևից
+a11y.layout.right=աջից
+a11y.layout.bottom=ներքևից
+a11y.layout.left=ձախից
+a11y.layout.width=լայնություն
+a11y.layout.height=բարձրություն
+a11y.layout.size=չափ
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=սահմանափակող ուղղանկյուն
+a11y.descriptions.press_enter_to_edit_values=սեղմել Enter խմբագրելու համար
+a11y.labels.style_rules=ոճի կանոններ
+aria.labels.inherited_style_rules=ժառանգված ոճեր
+a11y.labels.computed_styles=հաշվարկված ոճեր
+a11y.labels.dom_properties=dom հատկություններ
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=ներդրված խմբագիր
+a11y.labels.value_for_attribute_in_element=%S ատրիբուտի արժեքը %S տարրում
+a11y.labels.attribute_for_element=%S տարրի ատրիբուտ
+a11y.labels.text_contents_for_element=%S տարրի ատրիբուտ տեքստային պարունակ.
+a11y.labels.defined_in_file=հայտարարված է %S-ում
+a11y.labels.declarations_for_selector=\"%S\" ընտրիչի ոճի հայտարարություն
+a11y.labels.property_for_selector=CSS հատկություններ` %S ընտրիչի
+a11y.labels.value_property_in_selector=%S հատկության արժեքը %S ընտրիչում
+a11y.labels.css_selector=CSS ընտրիչ
+a11y.labels.source_code_for_file=%S# ֆայլի աղբյուրը
+a11y.labels.press_enter_to_add_new_watch_expression=սեղմել Enter նոր դիտման համար
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=վերահայտարարված
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=ունի պայմանական կանգառ
+a11y.updates.has_disabled_break_point=ունի անջատված կանգառ
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=սկրիպտը կանգնել է %S-ի վրա %S-ում, %S ֆայլում
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=գտնված է %S-ին համապատասխանություն լոգի %S տողերում
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=գտնված է %S-ին համապատասխանություն %S տողում %S-ում
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=գտնված է %S-ին համապատասխանություն %S տարրում %S-հասցեում
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=գտնված է %S-ին համապատասխանություն %S=%S ատրիբուտում ում %S-հասցեում
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=գտնված է %S-ին համապատասխանություն %S տարրի տեքստում` %S, %S-հասցեում
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=գտնված է %S-ին համապատասխանություն %S ընտրիչում
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=գտնված է \"%S\"-ին համապատասխանություն %S ոճի` %S ընտրիչում
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=գտնված է %S-ին համապատասխանություն %S DOM հատկության մեջ
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=գտնված է \"%S\"-ին համապատասխանություն հետևյալում` %S, %S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=%S-ին համապատասխանություն ցանից գումարային տողում` %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=գտնված չէ համապատասխանություն \"%S\"-ին
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Զրույացնե՞լ բոլոր ընտրանքները լռելիությամբ վիճակի:
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=Կոնսոլը պետք միացված լինի
+warning.Command_line_blocked?=Հրամանայի տողը արգելվա՞ծ է
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Վերբեռնել ակտիվացնելու համար պատուհանի կոնսոլը
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=Այս հասցեի սվյալը տեքստ չէ
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Ետ գնալ դեպի այս վահանակը
+firebug.history.Stay_on_this_panel=Մնալ այս վահանակում
+firebug.history.Go_forward_to_this_panel=Առաջ գնալ դեպի այս վահանակը
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Ետ գնալ
+firebug.history.Go_forward=Առաջ գնալ
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Script Panel was inactive during page load
+script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript is not enabled
+script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Enable JavaScript and Refresh
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=All scripts were filtered
+script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=No Javascript on this page
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Debugger is already active
+script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
+script.button.Go_to_that_page=Go to that page
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Փակել
+firebug.View=Տեսք
+firebug.Help=Օգնություն
+firebug.Run=Քշել
+firebug.Copy=Կրկնակել
+firebug.History=History
+firebug.Run_the_entered_command=Run the entered command
+firebug.Clear_the_Command_Editor=Clear the Command Editor
+firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
+firebug.Insert_a_previously_entered_command=Insert a previously entered command
+firebug.AlwaysOpenInWindow=Միշտ բացելՆոր Պատուհանում
+firebug.OpenWith=Բացել Խմբագրով
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Կայքեր...
+firebug.Configure_Editors=Configure Editors
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Հետազոտել
+firebug.InspectElement=Հետազոտել տարրը
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Սխալներից Կանգնել
+firebug.InspectTooltip=Կլիկով ընտրել հետազոտվող տարրը
+firebug.EditHTMLTooltip=Խմբագրել HTML-ն
+firebug.Profile=Գնահատում
+firebug.Clear=Մաքրել
+firebug.ClearConsole=Մաքրել կոնսոլը
+firebug.ClearTooltip=Մաքրել լրիվ կոնսոլը
+firebug.All=Ամեն ինչ
+firebug.Images=Նկարներ
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Configured Firebug Editors
+editors.Editor=Editor
+editors.Executable=Executable
+editors.Launch_Arguments=Launch Arguments
+editors.Add=Add
+editors.Remove=Remove
+editors.Change=Change
+editors.Move_Up=Move Up
+editors.Close=Close
+editors.Browse=Browse...
+changeEditor.Editor_Configuration=Editor Configuration
+changeEditor.Name=Անուն`
+changeEditor.Executable=Ծրագիր`
+changeEditor.CmdLine=Արգումենտներ`
+changeEditor.Supplied_arguments=Arguments supplied by Firebug:
+changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
+changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
+changeEditor.Line_number=Line number (if available)
+changeEditor.Invalid_Application_Path=Invalid Application Path
+changeEditor.Application_does_not_exist=The specified application doesn't exist!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Խմբագրել
+firebug.css.sourceEdit=Source Edit
+firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
+firebug.css.liveEdit=Live Edit
+firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
+firebug.EditCSSTooltip=Խմբագրել այս ոճը
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Show Break Notifications
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
+firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=There are no child objects
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=more
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Object Properties
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(no completions)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
+firebug.failedToPreviewImageURL=Failed to load the given URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/is-IS/cookies.properties b/locale/is-IS/cookies.properties
index 66695d4..ec60718 100644
--- a/locale/is-IS/cookies.properties
+++ b/locale/is-IS/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Session
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Accept Cookies From Sites
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Clear cookies when denying
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cut
-cookies.Copy=Copy
-cookies.CopyAll=Copy All
-cookies.Paste=Paste
-cookies.Delete=Delete
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Edit
-cookies.Accept=Accept
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reset Header
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
-cookies.ExceptionsTitle=Exceptions - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support for Cookie Monitoring
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=Disable Cookies panel for %S
-cookies.Permissions=Enable or Disable Cookies panel
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=System Pages
-cookies.LocalFiles=Local Files
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Do you want to remove all cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remove all cookies in the list.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Create a new cookie for %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Value
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Manage cookie permissions for %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=All cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejected:
-cookies.console.nocookiesreceived=No cookies received
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=deleted
-cookies.console.added=added
-cookies.console.changed=changed
-cookies.console.cleared=cleared
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domain
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Secure
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Value
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Default (Accept session cookies)
-cookies.default.thirdPartySession=Default (Accept session cookies)
-cookies.default.thirdParty=Default (Accept cookies)
-cookies.default.allow=Default (Accept cookies)
-cookies.default.deny=Default (Deny cookies)
-cookies.default.warn=Default (Warn before accepting cookie)
-cookies.host.session=Accept session cookies from %S
-cookies.host.accept=Accept cookies from %S
-cookies.host.reject=Deny cookies from %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie name is not valid.
-cookies.edit.invalidhost=Cookie host is not valid.
-cookies.edit.invalidpath=Cookie path is not valid.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Name
-cookies.header.value=Value
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domain
-cookies.header.size=Size
-cookies.header.path=Path
-cookies.header.expires=Expires
-cookies.header.security=Security
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Name of the cookie
-cookies.header.value.tooltip=Value stored for the cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domain that has stored the cookie
-cookies.header.size.tooltip=Size of the stored cookie
-cookies.header.path.tooltip=Directory where the cookie is active
-cookies.header.expires.tooltip=Expiration date for the cookie
-cookies.header.security.tooltip=Shows whether it is a secure cookie or not
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Received Cookies
-cookies.netinfo.Sent_Cookies=Sent Cookies
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Path Filter
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Export All Cookies
-cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
-cookies.export.Export_For_Site=Export Cookies For This Site
-cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Remove Cookies
-cookies.Create=Create Cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Tools
-cookies.ToolsTooltip=Tools
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Show All Cookies
-cookies.ViewAllTooltip=Open the built-in Cookie Manager
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Web Sites Permissions
-cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filter
-cookies.FilterTooltip=Use given options to filter the cookie list.
-cookies.filter.byPath=Filter Cookies By Current Path
-cookies.filter.byPathTooltip=Show only cookies that match the current path.
-cookies.filter.showRejectedCookies=Show Rejected Cookies
-cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Edit Cookie
-cookies.edit.name.label=Name:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Path:
-cookies.edit.expire.label=Expires:
-cookies.edit.value.label=Value:
-cookies.edit.secure.label=Secure Cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Session
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Accept Cookies From Sites
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Clear cookies when denying
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cut
+cookies.Copy=Copy
+cookies.CopyAll=Copy All
+cookies.Paste=Paste
+cookies.Delete=Delete
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Edit
+cookies.Accept=Accept
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reset Header
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
+cookies.ExceptionsTitle=Exceptions - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support for Cookie Monitoring
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=Disable Cookies panel for %S
+cookies.Permissions=Enable or Disable Cookies panel
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=System Pages
+cookies.LocalFiles=Local Files
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Do you want to remove all cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remove all cookies in the list.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Create a new cookie for %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Value
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Manage cookie permissions for %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=All cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejected:
+cookies.console.nocookiesreceived=No cookies received
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=deleted
+cookies.console.added=added
+cookies.console.changed=changed
+cookies.console.cleared=cleared
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domain
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Secure
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Value
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Default (Accept session cookies)
+cookies.default.thirdPartySession=Default (Accept session cookies)
+cookies.default.thirdParty=Default (Accept cookies)
+cookies.default.allow=Default (Accept cookies)
+cookies.default.deny=Default (Deny cookies)
+cookies.default.warn=Default (Warn before accepting cookie)
+cookies.host.session=Accept session cookies from %S
+cookies.host.accept=Accept cookies from %S
+cookies.host.reject=Deny cookies from %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie name is not valid.
+cookies.edit.invalidhost=Cookie host is not valid.
+cookies.edit.invalidpath=Cookie path is not valid.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Name
+cookies.header.value=Value
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domain
+cookies.header.size=Size
+cookies.header.path=Path
+cookies.header.expires=Expires
+cookies.header.security=Security
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Name of the cookie
+cookies.header.value.tooltip=Value stored for the cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domain that has stored the cookie
+cookies.header.size.tooltip=Size of the stored cookie
+cookies.header.path.tooltip=Directory where the cookie is active
+cookies.header.expires.tooltip=Expiration date for the cookie
+cookies.header.security.tooltip=Shows whether it is a secure cookie or not
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Received Cookies
+cookies.netinfo.Sent_Cookies=Sent Cookies
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Path Filter
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Export All Cookies
+cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
+cookies.export.Export_For_Site=Export Cookies For This Site
+cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Remove Cookies
+cookies.Create=Create Cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Tools
+cookies.ToolsTooltip=Tools
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Show All Cookies
+cookies.ViewAllTooltip=Open the built-in Cookie Manager
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Web Sites Permissions
+cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filter
+cookies.FilterTooltip=Use given options to filter the cookie list.
+cookies.filter.byPath=Filter Cookies By Current Path
+cookies.filter.byPathTooltip=Show only cookies that match the current path.
+cookies.filter.showRejectedCookies=Show Rejected Cookies
+cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Edit Cookie
+cookies.edit.name.label=Name:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Path:
+cookies.edit.expire.label=Expires:
+cookies.edit.value.label=Value:
+cookies.edit.secure.label=Secure Cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/is-IS/firebug-amo.properties b/locale/is-IS/firebug-amo.properties
index 95a0952..eaa6b18 100644
--- a/locale/is-IS/firebug-amo.properties
+++ b/locale/is-IS/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):n\n
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843n\n
-# They are not direct part of Firebug extension and so, you can\'t see them in Firebug\'s UI.n\n
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)n\n
-firebug.amo.summary1.6=Firebug er samþættað við Firefox og með því hefur þú aðgang að fjölda þróunartóla á meðan þú vafrar. Þú getur breytt, kembað, og fylgst með CSS, HTML, og JavaScript í rauntíma á hvaða vefsíðu sem er...\\n\\nFirebug 1.6 þarfnast Firefox 3.6 eða betri.
-firebug.amo.description=Firebug er samþættað við Firefox og með því hefur þú aðgang að fjölda þróunartóla á meðan þú vafrar. Þú getur breytt, kembað, og fylgst með CSS, HTML, og JavaScript í rauntíma á hvaða vefsíðu sem er.\\n\\nKíktu á heimasíðu Firebug til að finna skjölun, skjámyndir, og umræðusvæði: http://getfirebug.com
-firebug.amo.developer.comments=Ef þú lendir í vandræðum, lestu þá FireBug FAQ.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):n\n
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843n\n
+# They are not direct part of Firebug extension and so, you can\'t see them in Firebug\'s UI.n\n
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)n\n
+firebug.amo.summary1.6=Firebug er samþættað við Firefox og með því hefur þú aðgang að fjölda þróunartóla á meðan þú vafrar. Þú getur breytt, kembað, og fylgst með CSS, HTML, og JavaScript í rauntíma á hvaða vefsíðu sem er...\\n\\nFirebug 1.6 þarfnast Firefox 3.6 eða betri.
+firebug.amo.description=Firebug er samþættað við Firefox og með því hefur þú aðgang að fjölda þróunartóla á meðan þú vafrar. Þú getur breytt, kembað, og fylgst með CSS, HTML, og JavaScript í rauntíma á hvaða vefsíðu sem er.\\n\\nKíktu á heimasíðu Firebug til að finna skjölun, skjámyndir, og umræðusvæði: http://getfirebug.com
+firebug.amo.developer.comments=Ef þú lendir í vandræðum, lestu þá FireBug FAQ.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/is-IS/firebug-tracing.properties b/locale/is-IS/firebug-tracing.properties
index 3d86d95..8e9a6d9 100644
--- a/locale/is-IS/firebug-tracing.properties
+++ b/locale/is-IS/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):n\n
-# Firebug tracing console menu items (located in Firebug\'s menu).n\n
-Open_Firebug_Tracing=Opna Firebug rekjun
-Always_Open_Firebug_Tracing=Alltaf opna Firebug rekjun
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).n\n
-title.Tracing=Rekja
-tracing.Show_Scope_Variables=Sýna umfangsbreytur
-tracing.Show_Time=Sýna tíma
-tracing.tab.Stack=Stafla
-tracing.tab.Exception=Frávik
-tracing.tab.Properties=Eiginleikar
-tracing.tab.Scope=Umfang
-tracing.tab.Response=Svar
-tracing.tab.Source=Uppruni
-tracing.tab.Interfaces=Viðmót
-tracing.tab.Object=Hlutur
-tracing.tab.Event=Atburður
-tracing.cmd.Clear=Hreinsa
-tracing.cmd.tip.Clear=Fjarlægja öll skilaboð
-tracing.cmd.Find=Leita
-tracing.cmd.tip.Find=Leita að texta
-tracing.cmd.Bookmark=Bókamerki
-tracing.cmd.tip.Bookmark=Setja inn bókamerki
-tracing.cmd.Restart=Endurræsa Firefox
-tracing.cmd.tip.Restart=Endurræsa Firefox
-tracing.cmd.Exit=Hætta í Firefox
-tracing.cmd.tip.Exit=Hætta í Firefox
-tracing.cmd.Save=Vista í skrá
-tracing.cmd.tip.Save=Vista atburðaskrá í skrá
-tracing.cmd.Load=Hlaða inn frá skrá
-tracing.cmd.tip.Load=Hlaða inn atburðaskrá frá skrá
-tracing.cmd.Expand_All=Þenja út allt
-tracing.cmd.Collapse_All=Fella saman allt
-tracing.cmd.Tools=Verkfæri
-tracing.cmd.tip.Tools=Verkfæri
-tracing.cmd.Clear_Browser_Cache=Hreinsa skyndiminni vafra
-tracing.cmd.tip.Clear_Browser_Cache=Hreinsa skyndiminni vafra
-tracing.cmd.Force_Garbage_Collector=Þvinga ruslasöfnun
-tracing.cmd.tip.Force_Garbage_Collector=Þvinga ruslasöfnun
-tracing.cmd.Open_Profile_Directory=Opna forstillingarmöppu
-tracing.cmd.tip.Open_Profile_Directory=Opna forstillingarmöppu
-tracing.option.A11Y_Description=Accessibility issues
-tracing.option.ACTIVATION_Description=Firebug activation
-tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
-tracing.option.ANNOTATIONS_Description=Firebug website annotation
-tracing.option.BP_Description=Breakpoints
-tracing.option.CACHE_Description=Source cache
-tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
-tracing.option.COMPILATION_UNITS_Description=Script compilation units
-tracing.option.CONSOLE_Description=Console Panel
-tracing.option.CSS_Description=CSS parsing
-tracing.option.DISPATCH_Description=Event dispatching
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate creation
-tracing.option.EDITOR_Description=Inline Editor & Autocompleter
-tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Internal Firebug errors
-tracing.option.EVAL_Description=Script evaluation
-tracing.option.FBS_BP_Description=Firebug service breakpoints
-tracing.option.FBS_CREATION_Description=Firebug service script creation
-tracing.option.FBS_ERRORS_Description=Firebug service errors
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
-tracing.option.FBS_FUNCTION_Description=Firebug service function
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
-tracing.option.FBS_SRCUNITS_Description=Firebug service source units
-tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
-tracing.option.FUNCTION_NAMES_Description=JavaScript function names
-tracing.option.HISTORY_Description=Firebug Navigation History
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP request observer
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug initialization
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON viewer
-tracing.option.LINETABLE_Description=Script line table
-tracing.option.LOCALE_Description=Localization
-tracing.option.LOCATIONS_Description=Source locations
-tracing.option.NET_Description=Net Panel
-tracing.option.NET_EVENTS_Description=Network events
-tracing.option.OPTIONS_Description=Firebug preferences
-tracing.option.PANELS_Description=Panels
-tracing.option.SHORTCUTS_Description=Keyboard shortcuts
-tracing.option.SOURCEFILES_Description=JavaScript source files
-tracing.option.SPY_Description=XMLHttpRequests observer
-tracing.option.STACK_Description=JavaScript call stack
-tracing.option.STORAGE_Description=Settings storage
-tracing.option.SVGVIEWER_Description=SVG viewer
-tracing.option.FONTS_Description=Fonts information and font viewer
-tracing.option.TOOLTIP_Description=Start Button tooltip
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging user interface
-tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
-tracing.option.XMLVIEWER_Description=XML viewer
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):n\n
+# Firebug tracing console menu items (located in Firebug\'s menu).n\n
+Open_Firebug_Tracing=Opna Firebug rekjun
+Always_Open_Firebug_Tracing=Alltaf opna Firebug rekjun
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).n\n
+title.Tracing=Rekja
+tracing.Show_Scope_Variables=Sýna umfangsbreytur
+tracing.Show_Time=Sýna tíma
+tracing.tab.Stack=Stafla
+tracing.tab.Exception=Frávik
+tracing.tab.Properties=Eiginleikar
+tracing.tab.Scope=Umfang
+tracing.tab.Response=Svar
+tracing.tab.Source=Uppruni
+tracing.tab.Interfaces=Viðmót
+tracing.tab.Object=Hlutur
+tracing.tab.Event=Atburður
+tracing.cmd.Clear=Hreinsa
+tracing.cmd.tip.Clear=Fjarlægja öll skilaboð
+tracing.cmd.Find=Leita
+tracing.cmd.tip.Find=Leita að texta
+tracing.cmd.Bookmark=Bókamerki
+tracing.cmd.tip.Bookmark=Setja inn bókamerki
+tracing.cmd.Restart=Endurræsa Firefox
+tracing.cmd.tip.Restart=Endurræsa Firefox
+tracing.cmd.Exit=Hætta í Firefox
+tracing.cmd.tip.Exit=Hætta í Firefox
+tracing.cmd.Save=Vista í skrá
+tracing.cmd.tip.Save=Vista atburðaskrá í skrá
+tracing.cmd.Load=Hlaða inn frá skrá
+tracing.cmd.tip.Load=Hlaða inn atburðaskrá frá skrá
+tracing.cmd.Expand_All=Þenja út allt
+tracing.cmd.Collapse_All=Fella saman allt
+tracing.cmd.Tools=Verkfæri
+tracing.cmd.tip.Tools=Verkfæri
+tracing.cmd.Clear_Browser_Cache=Hreinsa skyndiminni vafra
+tracing.cmd.tip.Clear_Browser_Cache=Hreinsa skyndiminni vafra
+tracing.cmd.Force_Garbage_Collector=Þvinga ruslasöfnun
+tracing.cmd.tip.Force_Garbage_Collector=Þvinga ruslasöfnun
+tracing.cmd.Open_Profile_Directory=Opna forstillingarmöppu
+tracing.cmd.tip.Open_Profile_Directory=Opna forstillingarmöppu
+tracing.option.A11Y_Description=Accessibility issues
+tracing.option.ACTIVATION_Description=Firebug activation
+tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
+tracing.option.ANNOTATIONS_Description=Firebug website annotation
+tracing.option.BP_Description=Breakpoints
+tracing.option.CACHE_Description=Source cache
+tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
+tracing.option.COMPILATION_UNITS_Description=Script compilation units
+tracing.option.CONSOLE_Description=Console Panel
+tracing.option.CSS_Description=CSS parsing
+tracing.option.DISPATCH_Description=Event dispatching
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate creation
+tracing.option.EDITOR_Description=Inline Editor & Autocompleter
+tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Internal Firebug errors
+tracing.option.EVAL_Description=Script evaluation
+tracing.option.FBS_BP_Description=Firebug service breakpoints
+tracing.option.FBS_CREATION_Description=Firebug service script creation
+tracing.option.FBS_ERRORS_Description=Firebug service errors
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
+tracing.option.FBS_FUNCTION_Description=Firebug service function
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
+tracing.option.FBS_SRCUNITS_Description=Firebug service source units
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
+tracing.option.FUNCTION_NAMES_Description=JavaScript function names
+tracing.option.HISTORY_Description=Firebug Navigation History
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request observer
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug initialization
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON viewer
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Localization
+tracing.option.LOCATIONS_Description=Source locations
+tracing.option.NET_Description=Net Panel
+tracing.option.NET_EVENTS_Description=Network events
+tracing.option.OPTIONS_Description=Firebug preferences
+tracing.option.PANELS_Description=Panels
+tracing.option.SHORTCUTS_Description=Keyboard shortcuts
+tracing.option.SOURCEFILES_Description=JavaScript source files
+tracing.option.SPY_Description=XMLHttpRequests observer
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Settings storage
+tracing.option.SVGVIEWER_Description=SVG viewer
+tracing.option.FONTS_Description=Fonts information and font viewer
+tracing.option.TOOLTIP_Description=Start Button tooltip
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging user interface
+tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
+tracing.option.XMLVIEWER_Description=XML viewer
diff --git a/locale/is-IS/firebug.properties b/locale/is-IS/firebug.properties
index 0bc2006..2e1b25a 100644
--- a/locale/is-IS/firebug.properties
+++ b/locale/is-IS/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.n\n
-# %S Title of the associated web page.n\n
-# examples: Firebug - Googlen\n
-WindowTitle=Firebug - %S
-# Panel titlesn\n
-Panel-console=Gluggi
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Net
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Skrifta
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Stíll
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Útreiknað
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Útlit
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Fylgjast með
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Rofstaðir
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Stafli
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Umfang
-firebug.DetachFirebug=Opna Firebug í nýjum glugga
-firebug.AttachFirebug=Festa Firebug við vafraglugga
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.n\n
-# If there is no Firebug translation for the current browser locale, this valuen\n
-# will be used instead of the one in chrome://global/locale/intl.propertiesn\n
-# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsn\n
-pluralRule=15
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semi-colon list of plural forms.n\n
-# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsn\n
-# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.n\n
-# Displays number of pages with Firebug activated.n\n
-# #1 number of Firebug instances activatedn\n
-# example: 2 Total Firebugsn\n
-plural.Total_Firebugs2=%1$S Firebug;%1$S Firebug
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in \'list of all panels\'n\n
-# menu (available on Firebug\'s tab bar).n\n
-# Console panel options.n\n
-startbutton.tip.deactivated=Deactivated
-# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,n\n
-# message, etc. within a source of a web page.n\n
-# #1 File name, #2 Line numbern\n
-# examples: somePage.htm (line 64)n\n
-# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.n\n
-panel.status=%S: %S
-inBrowser=Í vafra
-minimized=Smækkað
-enablement.for_all_pages=fyrir allar síður
-enablement.on=Virkt
-enablement.off=Óvirkt
-enablement.Panel_activation_status=Panel activation status:
-none=Lokað
-Firebug_-_inactive_for_current_website=Firebug - óvirkt fyrir núverandi vefsvæði
-Activate_Firebug_for_the_current_website=Virkja Firebug fyrir núverandi vefsvæði
-Minimized=Smækkað
-Minimize_Firebug=Minnka Firebug
-On_for_all_web_pages=Gera virkt fyrir allar vefsíður
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Hreinsa virkjunarlista
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI Location
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# For example, right clicking on an element in the HTML panel offers an action to inspectn\n
-# clicked element in the DOM panel (tab).n\n
-firebug_options=Firebug stillingar
-# #1 Target panel titlen\n
-# examples: Inspect in DOM Tabn\n
-firebug.Show_All_Panels=Sýna alla glugga
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugn\n
-ShowJavaScriptErrors=Sýna JavaScript villur
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Sýna JavaScript aðvaranir
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Sýna CSS villur
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Sýna staflarakningu með villum
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Sýna XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Sýna Chrome villur
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Sýna Chrome skilaboð
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Sýna utanaðkomandi villur
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Sýna netkerfisvillur
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Strangar aðvaranir (áhrif á afköst)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Skipanaferill
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Sýna flýtiinnsláttarglugga
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Fastyrðingarvilla
-# do not translate.n\n
-# #1 jsdIScript.tagn\n
-# HTML panel context menu items.n\n
-# Quick Info Boxn\n
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumen\n
-Line=%S (lína %S)
-LineAndCol=%S (line %S, col %S)
-InstanceLine=%S #%S (lína %S)
-StackItem=%S (%S lína %S)
-SystemItem=<Kerfi>
-# button that are used when the HTML panel is currently selected. The button allows stoppingn\n
-# JS execution when DOM of the current page is modified.n\n
-# LOCALIZATION NOTE (html.label.Expand/Contract_All): Used within the HTML for a context n\n
-# menu item. The user can expand/contract the element together with all its children to n\n
-# quickly see the entire hierarchical structure or collapse it.n\n
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(ekkert heiti)
-# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
-# editing an existing HTML element attribute.n\n
-# #1 Name of the clicked attribute.n\n
-jsdIScript=jsdIScript %S
-# examples: Edit Attribute \"onclick\"...n\n
-# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
-# deleting an existing HTML element attribute.n\n
-ShowFullText=Sýna heildartexta
-html.option.tip.Show_Full_Text=Don't crop element contents
-# #1 Name of the clicked attribute.n\n
-# examples: Delete Attribute \"onclick\"...n\n
-# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.n\n
-ShowWhitespace=Sýna bil
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# that has been inherited. Used in the Style side panel (under HTML panel).n\n
-# examples: Inherited from table.tabViewn\n
-ShowComments=Birta athugasemdir
-html.option.tip.Show_Comments=Show comment nodes
-# LOCALIZATION NOTE (css.EmptyStyleSheet): This description is displayed in the CSS paneln\n
-# in case there are no stylesheets attached to the current page.n\n
-# The text between <a> and </a> is displayed as a link.n\n
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# LOCALIZATION NOTE (css.EmptyElementCSS2): This description is displayed in the Style side paneln\n
-# (available within the HTML panel) in case there are no CSS rules for the selected element.n\n
-# The text between <a> and </a> is displayed as a link.n\n
-HighlightMutations=Lita breytingar
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.n\n
-# Allows to edit an existing CSS rule property.n\n
-# %S Name of the clicked propertyn\n
-ExpandMutations=Þenja út breytingar
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# examples: Edit \"background-color\"...n\n
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.n\n
-# Allows to disable an existing CSS rule property.n\n
-ScrollToMutations=Skruna breytingar í sýn
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# %S Name of the clicked propertyn\n
-# examples: Disable \"background-color\"n\n
-# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.n\n
-ShowQuickInfoBox=Sýna flýtiupplýsingakassa
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# Allows to delete an existing CSS rule property.n\n
-# %S Name of the clicked propertyn\n
-# examples: Delete \"background-color\"n\n
-ShadeBoxModel=Skyggt box módel
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Skruna í sýn
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Nýr eiginleiki...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Eyða einindi
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Eyða hnút
-html.Delete_Node=Delete the node from the tree
-# Console context menu labels.n\n
-quickInfo=Flýtiupplýsingar
-computedStyle=Útreiknaður stíll
-# LOCALIZATION NOTE do not translate, no longer used(?)n\n
-# Breakpoints side paneln\n
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttonsn\n
-html.Break_On_Mutate=Stöðva við breytingu
-html.Disable_Break_On_Mutate=Slökkva á stöðvun við breytingu
-html.label.Break_On_Text_Change=Stöðva við textabreytingu
-html.label.HTML_Breakpoints=HTML rofstaðir
-html.label.Break_On_Attribute_Change=Stöðva við eiginleikabreytingu
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Stöðva þegar barni er bætt við eða fjarlægt
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Stöðva ef einindi er fjarlægt
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# within balloon popup dialog. This dialog appears when debugger halts at a breakpoint or atn\n
-# a \'debugger\' keyword.n\n
-# Continue: allows to resume the debuggern\n
-# Disable: allows to disable the current \'debugger;\' keyword used in the Javascript source.n\n
-html.label.Expand/Contract_All=Stækka/Minnka allt
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# Script paneln\n
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):n\n
-# Labels used to describe layout properties a the selected HTML element.n\n
-dom.label.breakOnPropertyChange=Break On Property Change
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# Used in the Layout side panel under HMTL panel.n\n
-# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side paneln\n
-dom.disableBreakOnPropertyChange=Disable Break On Property Change
-dom.label.DOM_Breakpoints=DOM rofstaðir
-# under HTML panel.n\n
-# Net paneln\n
-# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)n\n
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,n\n
-EditAttribute=Breyta eiginleika \"%S\"...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,n\n
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):n\n
-# Labels and tooltips for a headers displayed on top of the Net panel.n\n
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.n\n
-DeleteAttribute=Eyða eiginleika \"%S\"
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s contextn\n
-# menu for breaking on a XHR.n\n
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in then\n
-InheritedFrom=Erfist frá
-SothinkWarning=Sothink SWF Catcher viðbót er að koma í veg fyrir að Firebug virki rétt.<br><br>Lestu um <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">þetta atriði í Firebug FAQ</a> til að fá hjálp.
-# Net panel\'s Headers tab (displayed if you expand a network request). The label is usedn\n
-# for a button that switches the view between \"show raw source code\" and \"pretty formated headern\n
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# values\".n\n
-# LOCALIZATION NOTE (net.filter.Media): Label for net panel filter (used on the Net panel toolbar)n\n
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutn\n
-css.EmptyStyleSheet=Engar reglur eru til. Þú getur <a>búið til reglu</a>.
-# a network request (displayed when a net panel entry is expanded). The content ofn\n
-# this tab displays sent data (related to a HTTP send method).n\n
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):n\n
-css.EmptyElementCSS=Þetta einindi inniheldur engar stílreglur. Þú getur <a>búið til reglu</a> fyrir það.
-EditStyle=Breyta stíl einindis...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Ný regla...
-css.tip.New_Rule=Add a new rule
-# Label used in the Net panel for detailed info about a network request (displayedn\n
-# when a net panel entry is expanded)n\n
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in then\n
-# Net panel for JSON responses Allows to sort alphabetically.n\n
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net paneln\n
-# (expand an entry in the panel and select Headers tab).n\n
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semi-colon list of plural forms.n\n
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Nýr eiginleiki...
-css.tip.New_Prop=Add a new property to the current rule
-# A message displayed in the Net panel when some entries must be removed since maximum numbern\n
-# of entries has been reached.n\n
-# #1 the number of entries removedn\n
-# example: Firebug\'s log limit has been reached. 150 entries not shown.n\n
-EditProp=Breyta \"%S\"...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitn\n
-# has been reached. Informing the user what preferencee should be changed to modify the limit.n\n
-# %S Name of a preference.n\n
-# examples: In order to change the limit modify: firebug.extensions.console.logLimitn\n
-DisableProp=Gera \"%S\" óvirkt
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.n\n
-# (result of javascript profiler tool). Represents a verb.n\n
-# LOCALIZATION NOTE (plural.Profile_Time2): Semi-colon list of plural forms.n\n
-# Used as a caption for reported profile info (result of javascript profiler tool).n\n
-DeleteProp=Eyða \"%S\"
-css.tip.Delete_Prop=Delete the property "%S"
-# #1 number of millisecondsn\n
-BreakOnThisError=Stöðva á þessari villu
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Stöðva á öllum villum
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# #2 number of calls (plural)n\n
-# example: (#1ms, #2 calls)n\n
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headern\n
-TrackThrowCatch=Fylgjast með Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Nota seinustu frumkóða línu fyrir eval() nöfn
-UseMD5ForEvalName=Nota MD5 fyrir eval() nöfn
-# (name of a report column). In order to see this, select the Console panel start profilingn\n
-Breakpoints=Rofstaðir
-ErrorBreakpoints=Villu rofstaðir
-LoggedFunctions=Skráð föll
-EnableAllBreakpoints=Virkja alla rofstaði
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Gera alla rofstaði óvirka
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Fjarlægja alla rofstaði
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Þessi rofstaður mun stoppa ef þessi yrðing er sönn:
-# by clicking the Profile button and stop it by clicking again. The report is logged into then\n
-# console panel. Make sure Script panel is enabled.n\n
-# Support for clipboard actions.n\n
-breakpoints.Remove_Breakpoint=Remove Breakpoint
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Disable Breakpoint
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Enable Breakpoint
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptn\n
-# panel when clicking a function object.n\n
-# %S Name of the functionn\n
-# Log Calls to \"getData\"n\n
-# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): A tooltip used for a button on mainn\n
-script.balloon.Continue=Halda áfram
-script.balloon.Disable=Gera óvirkt
-ScriptsFilterStatic=Sýna fastar skriftur
-ScriptsFilterEval=Sýna fastar og eval skriftur
-ScriptsFilterEvent=Sýna fastar og atburðaskriftur
-ScriptsFilterAll=Sýna fastar, eval og atburðaskriftur
-ScriptsFilterStaticShort=föst
-ScriptsFilterEvalShort=reikna
-ScriptsFilterEventShort=atburðir
-ScriptsFilterAllShort=allt
-# Firebug toolbar. This button allows to open the command line even within other panels.n\n
-# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console paneln\n
-# if specific method is not supported.n\n
-# %S Name of a not supported method.n\n
-callstack.Expand_All=Expand All
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Collapse All
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console paneln\n
-# when a not supported method is used on the command line.n\n
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# %S Name of a not supported method.n\n
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):n\n
-# Tooltip for the \"Break on... \" button used when the Console panel is selected.n\n
-# LOCALIZATION NOTE (console.Use_TAB_and_arrow_keys) n\n
-ShowUserProps=Sýna eiginleika sem eru skilgreindar af notanda
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Sýna föll skilgreind af notanda
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Sýna DOM eiginleika
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Sýna DOM föll
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Sýna DOM fasta
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=Engir eiginleikar eru til að sýna fyrir þennan hlut.
-NewWatch=Sýna vaktasegð...
-# Top of the completion popup in the command linen\n
-# Console strings used when JavaScript is not availablen\n
-AddWatch=Bæta við vakt
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the consolen\n
-# in cases when the current page is an XML document. The text between <a> and </a> is a link.n\n
-CopySourceCode=Afrita frumkóða
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
-CopyValue=Afrita gildi
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Afrita nafn
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Afrita slóð
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Nýr eiginleiki...
-EditProperty=Breyta eiginleika...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Breyta breytu...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Breyta vakt...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Eyða eiginleika
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Eyða vakt
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# that cause to switch into HTML rendering of the document.n\n
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,n\n
-SetBreakpoint=Setja rofstað
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):n\n
-# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mousen\n
-# over a Size displayed within the Net panel. \'Total Sent\' and \'Total Received\' info includesn\n
-EditBreakpointCondition=Breyta skilyrði rofstaðs...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=Engir rofstaðir eru settir á þessari síðu.
-# even sent and received heades size.n\n
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Netn\n
-# panel (inside the Post tab of an expanded request entry). The message informs the user thatn\n
-Only_Show_Applied_Styles=Only Show Applied Styles
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# posted data reached Firebug\'s size limit and only part of it is displayed in the UI.n\n
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):n\n
-# Labels for Net panel\'s options.n\n
-Show_User_Agent_CSS=Sýna CSS vafra
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (net.option.Show_BF_Cache_Responses, net.option.tip.Show_BF_Cache_Responses):n\n
-# Net panels\'s option. If set to true, the net panel displays also response coming fromn\n
-# BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCachen\n
-# LOCALIZATION NOTE (plural.Request_Count2): Semi-colon list of plural forms.n\n
-# A label used in the Net panel. Displays number of HTTP requests executed by the current page.n\n
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# #1 number of requestsn\n
-# example: 21 requestsn\n
-# LOCALIZATION NOTE (plural.Error_Count2): Semi-colon list of plural forms.n\n
-# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.n\n
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# #1 number of errorsn\n
-# example: 111 Errorsn\n
-# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.n\n
-# With: the scope inside of the with(obj) {} statementn\n
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };n\n
-# Window: the scope inside of a Javascript window object.n\n
-# Net panel timing info labelsn\n
-#A11y Chrome Labels (not visible, spoken by screen readers)n\n
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-#A11y panelNode labels (not visible, spoken by screen readers)n\n
-#A11y Domplate labels (not visible, spoken by screen readers)n\n
-# LOCALIZATION NOTEn\n
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# Describe contents of inline editor fieldsn\n
-# LOCALIZATION NOTE (a11y.labels.overridden):n\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-Expand_Shorthand_Properties=Þenja út stytta eiginleika
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# indicates style property is overridden by selector with higher specificityn\n
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):n\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# Existence and state of a breakpointn\n
-Sort_alphabetically=Sort Alphabetically
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# #1 Line number, #2 Function name, #3 File namen\n
-Show_Mozilla_specific_styles=Show Mozilla Specific Styles
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a console panel search n\n
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Sláðu inn lykil til að sía lista
-# #1 %S String key the use is looking for. #2 number of rows that contain the matched textn\n
-# examples: Match found for \"test\" in 17 log rowsn\n
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlyn\n
-LayoutPadding=fylling
-LayoutBorder=rammi
-LayoutMargin=spássía
-LayoutPosition=staðsetning
-LayoutAdjacent=samliggjandi
-position=staðsetning
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a script panel search n\n
-# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found inn\n
-# examples: Match found for \"window.alert\" on line 322 in utilities.jsn\n
-ShowRulers=Sýna reglustikur og leiðsagnarsíður
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlyn\n
-Loading=Hleður...
-Headers=Hausar
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in an element node) n\n
-net.tip.Clear=Clear the request list
-# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementn\n
-# examples: Match found for \"obj\" in object element at /html/body/object[2]n\n
-net.header.Reset_Header=Frumstilla haus
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node) n\n
-# #1 Search string that was matched. #2 Attribute name #3 attribute value n\n
-# #4 the HTML element name containing. #5 XPATH string specifying the matched elementn\n
-# examples: Match found for \"abindex\" in tabindex=\"0\" in span element at /html/body/span[2]n\n
-net.header.URL=Slóð
-net.header.URL_Tooltip=Umbeðinn tengill og HTTP aðferð.
-net.header.Status=Staða
-net.header.Status_Tooltip=Staða á mótteknu svari.
-net.header.Domain=Lén
-net.header.Domain_Tooltip=Lén á keyrslubeiðni.
-net.header.Size=Stærð
-net.header.Size_Tooltip=Stærð móttekins svars.
-net.header.Timeline=Tímalína
-net.header.Timeline_Tooltip=Ítarlegar tímaupplýsingar um hringferð beiðna og svara.
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlyn\n
-net.label.XHR_Breakpoints=XHR rofstaðir
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) n\n
-net.label.Break_On_XHR=Stöðva á XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# #1 Search string that was matched. #2 element\'s text content n\n
-# #3 the HTML element name containing. #4 XPATH string specifying the matched elementn\n
-# examples: Match found for \"Firebug Rocks!\" in h2 element at /html/body/h2[2]n\n
-net.headers.view_source=skoða frumkóða
-net.headers.pretty_print=smekkleg prentun
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlyn\n
-net.filter.Media=Netgögn
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a CSS panel search (if it is found in a selector) n\n
-# #1 Search string that was matched. #2 selector in which the match was found n\n
-Post=Senda
-Put=Setja
-# examples: Match found for \"main\" in #mainContent h2 {n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-Response=Svar
-URLParameters=Breytur
-Cache=Biðminni
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration) n\n
-# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to n\n
-jsonviewer.sort=Raða eftir lykli
-jsonviewer.do_not_sort=Ekki raða
-# examples: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a DOM panel search n\n
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# #1 Search string that was matched. #2 DOM property in which the match was found n\n
-# examples: Match found for \"time\" in _starttime : 1257324992232 (Number)n\n
-RequestHeaders=Beiðnahausar
-ResponseHeaders=Svarhausar
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a Net panel search n\n
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
-# #3 Column in which the match was found #4. Column value n\n
-# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 msn\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-plural.Limit_Exceeded2=Búið er að ná hámarksvillufjölda í Firebug náð. %1$S færsla sjást ekki.;Búið er að ná hámarksvillufjölda í Firebug náð. %1$S færslur sjást ekki.
-LimitPrefs=Valkostir
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
-# #1 Search string that was matched. #2 Column value in which the match was found n\n
-# examples: Match found for \"05\" in net summary row: 4.05sn\n
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
-LimitPrefsTitle=Til að breyta þessari takmörkun breyttu: %S
-Refresh=Uppfæra
-panel.tip.Refresh=Refresh the panel display
-# visible in the UI, intended for screen readers.n\n
-# Indicates that the searched string was not matched n\n
-OpenInTab=Opna í nýjum flipa
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Opna svar í nýjum flipa
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# %S Search string that was matched. n\n
-# examples: No matched found for \"wefkhwefkgwekhjgjh\"n\n
-Profile=Tímamæla
-ProfilerStarted=Tímamælir er í gangi. Smelltu á \'Tímamæla\' aftur til að sjá skýrslu.
-# Console messages.n\n
-# LOCALIZATION NOTE (message.knownIssues40): A message displayed for Firefox 40 users showingn\n
-# a link to known issues (with Firefox 4.0) page.n\n
-# examples: See Firefox 4.0 known issues page: http://getfirebug.com/knownissuesn\n
-# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
-plural.Profile_Time2=(%1$Sms, %2$S kall);(%1$Sms, %2$S köll)
-NothingToProfile=Engin virkni í tímamælingu.
-PercentTooltip=Prósenta af tíma fyrir þetta fall.
-CallsHeaderTooltip=Fjöldi skipta sem kallað var á þetta fall.
-OwnTimeHeaderTooltip=Tími notaður í köll, fyrir utan undirföll.
-TimeHeaderTooltip=Tími notaður í köll, með undirföllum.
-AvgHeaderTooltip=Meðaltími, með föllum.
-MinHeaderTooltip=Lágmarkstími, með föllum.
-MaxHeaderTooltip=Hámarkstími, með föllum.
-ProfileButton.Enabled.Tooltip=Tímamæla keyrslutíma JavaScript.
-ProfileButton.Disabled.Tooltip=Tímamæla keyrslutíma JavaScript (Skriftuflipi verður að vera virkur).
-Function=Fall
-Percent=Prósenta
-# If Firebug is displayed in an external window (detached), but not active for then\n
-# currently selected Firefox tab, the following button label is used for ann\n
-# activation button.n\n
-# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
-Calls=Köll
-OwnTime=Eigin tími
-Time=Tími
-Avg=Meðal
-Min=Lágmark
-Max=Hámark
-File=Skrá
-# An error message displayed in the Script panel when a source can\'t be displayedn\n
-Copy=Afrita
-Cut=Klippa
-Remove=Fjarlægja
-Delete=Delete
-Paste=Paste
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Afrita innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Afrita XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Afrita CSS slóð
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# for specific URL.n\n
-# examples: Failed to load source for: http://www.example.com/script.jsn\n
-CopyLocation=Afrita staðsetningu
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Afrita staðssetningu með breytum
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Afrita beiðnahausa
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Afrita svarhausa
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Afrita meginmál svars
-net.tip.Copy_Response=Copy the response body to the clipboard
-# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,n\n
-CopyError=Afritunarvilla
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.n\n
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):n\n
-CopySource=Afritunarfall
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# Tooltips for back/forward buttons on the Script panel toolbar.n\n
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):n\n
-# This message is displayed within the Script panel if debugger is inactive during page load.n\n
-# The suggestion message represents an advice how to solve the problem.n\n
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):n\n
-ShowCallsInConsole=Skrá köll í \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# This message is displayed within the Script panel if javascript is not enabled.n\n
-# The suggestion message represents an advice how to solve the problem.n\n
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed onn\n
-ShowEventsInConsole=Skrá atburði
-html.tip.Show_Events_In_Console=Log event information to the console
-# the Script panel if Javascript is disabled. This button allows to enable it.n\n
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):n\n
-panel.Enabled=Virkt
-panel.tip.Enabled=Toggle the panel activation
-# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
-# The suggestion message represents an advice how to solve the problem.n\n
-# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):n\n
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
-# The suggestion message represents an advice how to solve the problem.n\n
-#firebug.dtdn\n
-#editors.dtdn\n
-console.MethodNotSupported=Firebug stjórnborð styður ekki \'%S\'
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
-# in the Console panel when the private browsing mode is on (in Firefox 4 it\'s Startn\n
-# Private Browsing mode)n\n
-commandline.MethodNotSupported=Skipanalína Firebug styður ekki \'%S\'
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
-# in a break notification balloon popup next to a checkbox.n\n
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
-commandline.CurrentWindow=Current window:
-# in a break notification balloon popup when break on debugger; keyword happens.n\n
-# The keyword can be disabled by creating a disabled breakpoint on the same line. n\n
-console.Disable_Break_On_All_Errors=Slökkva á rofstað við allar villur
-console.Break_On_All_Errors=Stöðva á öllum villum
-# LOCALIZATION NOTE (firebug.dom.noChildren): This message is displayed in the DOM paneln\n
-# in cases where there are no children objects and so nothing to display.n\n
-console.Break_On_This_Error=Stöðva á þessari villu
-# LOCALIZATION NOTE (firebug.reps.more): This label is when displayed array/list hasn\n
-# more elements then it\'s displayed on the screen. \"...\" is automatically appended.n\n
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# example: more...n\n
-# LOCALIZATION NOTE (firebug.storage.totalItems): This label is used in the DOM paneln\n
-console.JSDisabledInFirefoxPrefs=JavaScript er ekki virkt í Firefox stillingum. Ef þú vilt geta notað stjórnborðsgluggann þá verðurðu að virkja JavaScript með \'Verkfæri\' -> \'Valkostir\' -> \'Innihald\' -> \'Virkja JavaScript\'
-# for local/session/global storage. It\'s informing the user about number of items in the storage.n\n
-# #1 number of storage itemsn\n
-# example: 1 item in Storagen\n
-# example: 2 items in Storagen\n
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties): This label is used by console.tablen\n
-# method if an object is passed into it. Used in table header.n\n
-# LOCALIZATION NOTE (firebug.completion.empty): This label is used in the command linen\n
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# by auto-complete function. Displayed if there are no possible completions.n\n
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug skipanalína er óvirk fyrir XML síður. Þú getur <a>skipt yfir í HTML</a> til að virkja hana.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Svar gögn
-net.sizeinfo.Post_Body=Send gögn
-net.sizeinfo.Total_Sent=Alls sent
-net.sizeinfo.Total_Received=Alls móttekið
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Netflipi virkur. Allar fyrirspurnir á meðan netflipi er óvirkur verða ekki sýndar.
-net.responseSizeLimitMessage=Stærð svars er komið yfir hámarksstærð í Firebug. Smelltu <a>hér</a> til að opna allt svarið í nýjum Firefox flipa.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Stærðartakmörkun var náð fjarlægt af Firebug.
-net.Break_On_XHR=Stöðva á XHR
-net.label.Parameters=Færibreytur
-net.label.Parts=Hlutar
-net.label.Source=Uppruni
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Slökkva á skyndiminni vafra
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Sýna teikniatburði
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Stöðva á næsta
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Sýna HTTP hausa
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S beiðni;%1$S beiðnir
-FromCache=frá skyndiminni
-StopLoading=Stöðva að hlaða
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Mjög stór gögn)
-ShowComputedStyle=Sýna útreiknaðan stíl
-StyleGroup-text=Texti
-StyleGroup-background=Bakgrunnur
-StyleGroup-box=Box módel
-StyleGroup-layout=Útlit
-StyleGroup-other=Annað
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Afrita lit
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Afrita staðsetningu myndar
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Opna mynd í nýjum flipa
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Sleppa verkfæraslá stafla
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Afrita regluskilgreiningu
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Afrita stílskilgreiningu
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S villa;%1$S villur
-moduleManager.title=%S flipi er óvirkur
-moduleManager.desc3=Notaðu Firebug táknvalmyndina til að virkja eða gera óvirka alla flipa. Notaðu litlu valmyndina í flipanum fyrir einstakar stýringar.
-moduleManager.Enable=Virkja
-Suspend_Firebug=Svæfa Firebug
-Resume_Firebug=Halda áfram með Firebug
-Reset_Panels_To_Disabled=Endursetja alla flipa sem óvirka
-Open_Console=Opna stjórnborð
-Open_Console_Tooltip=Opna rekjuglugga fyrir Firebug.
-Scope_Chain=Gildissviðsröð
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=With
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Fall
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Gluggi
-Logs=Atburðaskrár
-Options=Valkostir
-Copy_Stack=Afrita stafla
-Copy Exception=Afrita frávik
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blokkun
-requestinfo.Resolving=DNS uppfletting
-requestinfo.Connecting=Tengist
-requestinfo.Sending=Sendir
-requestinfo.Waiting=Bið
-requestinfo.Receiving=Móttekur
-requestinfo.ContentLoad=\'DOMContentLoaded\' (atburður)
-requestinfo.WindowLoad=\'load\' (atburður)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Firebug leit
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Áfram
-search.tip.Next=Search for the next match
-search.Previous=Fyrri
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Þvinga stafstöðurétt
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Margar skrár
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Nota reglulegar segðir
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS veljari
-search.net.Headers=Hausar
-search.net.Parameters=Færibreytur
-search.net.Response_Bodies=Svarmeginmál
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Stöðugur
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Sýna allar færslur í atburðaskrá
-firebug.console.Errors=Villur
-firebug.console.Filter_by_Errors=Sía eftir villum
-firebug.console.Warnings=Aðvaranir
-firebug.console.Filter_by_Warnings=Sía eftir aðvörunum
-firebug.console.Info=Upplýsingar
-firebug.console.Filter_by_Info=Sía eftir upplýsingum
-firebug.console.Debug_Info=Sýna kembiupplýsingar
-firebug.console.Filter_by_Debug_Info=Sía eftir kembiupplýsingum
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Opna Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Fela Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Virkja alla flipa
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Gera alla flipa óvirka
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Sérsníða flýtilykla
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Valkostir
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Virkja auðveldað aðgengi
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Endursetja alla Firebug valkosti
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug á Netinu
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Sýna villufjölda
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Stærð texta
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Stækka stærð texta
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Minnka stærð texta
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Venjuleg textastærð
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Vefsvæði Firebug...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Skjölun...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Flýtihnappar...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Umræðuhópur...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Vandamál...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Gefa...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Um...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Leita
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Slá aftur inn skipun
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Víxla skoðun
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Víxla flýtiupplýsingaboxi
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Víxla tímamælingu
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Fara í skipanalínu
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Fara í Firebug leit
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Fara í vaktritil
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Fara í staðsetningu
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Næsti hlutur
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Fyrri hlutur
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Sérsníða Firebug lykla
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Opna Firebug í nýjum glugga
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Skipta yfir á vinstri Firebug flipa
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Skipta yfir á hægri Firebug flipa
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Opna Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Fyrri Firebug flipi
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Hreinsa glugga
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Opna rakningaglugga
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Til baka
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Áfram
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Stækka stærð texta
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Minnka stærð texta
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Venjuleg texta stærð
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Gluggaval
-customizeShortcuts=Stillingar Firebug flýtilykla
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=flipaverkfæri
-a11y.labels.firebug_panels=Firebug flipar
-a11y.labels.firebug_side_panels=Firebug hliðarflipar
-a11y.labels.firebug_window=Firebug gluggi
-a11y.labels.firebug_status=Firebug staða
-a11y.labels.reset=endursetja
-a11y.labels.reset_shortcut=endursetja %S flýtilykil
-aria.labels.inactive_panel=óvirkur flipi
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=skrá raðir
-a11y.labels.call_stack=rakningarstafli
-a11y.labels.document_structure=uppbygging skjals
-a11y.labels.title_panel=%S flipi
-a11y.labels.title_side_panel=%S hliðarflipi
-a11y.labels.cached=flýtiminni
-aria.labels.stack_trace=staflarakning
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=fylling
-a11y.layout.border=rammi
-a11y.layout.margin=spássía
-a11y.layout.position=staðsetning
-a11y.layout.position_top=staðsetning efst
-a11y.layout.position_right=staðsetning hægri
-a11y.layout.position_bottom=staðsetning neðst
-a11y.layout.position_left=staðsetning vinstri
-a11y.layout.margin_top=spássíur ofan
-a11y.layout.margin_right=spássíur hægri
-a11y.layout.margin_bottom=spássíur neðan
-a11y.layout.margin_left=spássíur vinstri
-a11y.layout.border_top=rammi efst
-a11y.layout.border_right=rammi hægri
-a11y.layout.border_bottom=rammi neðst
-a11y.layout.border_left=rammi vinstri
-a11y.layout.padding_top=fylling efst
-a11y.layout.padding_right=fylling hægri
-a11y.layout.padding_bottom=fylling neðst
-a11y.layout.padding_left=fylling vinstri
-a11y.layout.top=efst
-a11y.layout.right=hægri
-a11y.layout.bottom=neðst
-a11y.layout.left=vinstri
-a11y.layout.width=breidd
-a11y.layout.height=hæð
-a11y.layout.size=stærð
-a11y.layout.z-index=z-vísir
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=ferningsmörk biðlara
-a11y.descriptions.press_enter_to_edit_values=Ýttu á enter og svo tab til að breyta einstökum gildum
-a11y.labels.style_rules=stílreglur
-aria.labels.inherited_style_rules=erfa stílreglur
-a11y.labels.computed_styles=útreiknaðir stílar
-a11y.labels.dom_properties=DOM eiginleikar
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=innri ritill
-a11y.labels.value_for_attribute_in_element=gildi fyrir %S eiginleika í einindi %S
-a11y.labels.attribute_for_element=eiginleiki fyrir %S einindi
-a11y.labels.text_contents_for_element=textainnihald fyrir %S einindi
-a11y.labels.defined_in_file=skilgreindur í %S
-a11y.labels.declarations_for_selector=stíll skilgreiningar fyrir \"%S\" veljara
-a11y.labels.property_for_selector=CSS eiginleikii fyrir veljara: %S
-a11y.labels.value_property_in_selector=%S gildi eiginleika fyrir veljara %S
-a11y.labels.css_selector=CSS veljari
-a11y.labels.source_code_for_file=frumkóði fyrir skrá %S
-a11y.labels.press_enter_to_add_new_watch_expression=ýttu á enter til að bæta við nýrri vaktsegð
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=hunsaðir
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=er með skilyrtan rofstað
-a11y.updates.has_disabled_break_point=er með óvirkan skilyrtan rofstað
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Skrifta stopp á línu %S í %S, skrá %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=passar við \"%S\" í %S röðum í atburðaskrá
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=passar við \"%S\" í línu %S í %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=passar við \"%S\" í %S einindi í slóð %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=passar við \"%S\" í eiginleika %S=%S fyrir %S einindi í slóð %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=passar við \"%S\" í textainnihaldi: %S fyrir %S einindi í slóð %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=passar við \"%S\" í veljara %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=passaði við \"%S\" í stíl skilgreiningu %S í veljara %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=passar við \"%S\" í DOM eiginleika %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=passar við \"%S\" í %S, %S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=passar við \"%S\" í netlýsingarröð: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=ekkert fannst sem passar við \"%S\"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Ertu viss um að þú viljir endursetja alla Firebug valkosti í sjálfgefna stöðu?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=Stjórnborð verður að vera virkt
-warning.Command_line_blocked?=Lokað á skipanalínu?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Endurnýjaðu til að virkja stjórnborðsglugga
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=Gögnin frá þessum tengli er ekki texti
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Til baka á þennan glugga
-firebug.history.Stay_on_this_panel=Vera í þessum glugga
-firebug.history.Go_forward_to_this_panel=Áfram í þennan glugga
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Til baka
-firebug.history.Go_forward=Áfram
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Skriftuflipi var óvirkur þegar síðan var hlaðin inn
-script.suggestion.inactive_during_page_load2=<a>Endurnýja</a> til að sjá allar uppsprettur
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript er ekki virkt
-script.suggestion.javascript_not_enabled=Kíktu á Firefox > Verkfæri > Valkostir > Innihald > Virkja Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Virkja Javascript og endurnýja
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Allar skriftur voru síaðar
-script.suggestion.all_scripts_filtered=Kíktu á skriftusíu stillingar í verkfæraslánni eða \"Sýna chrome uppsprettu\" stillinguna
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=Ekkert Javascript er á þessari síðu
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Kembiforrit er þegar virkt
-script.suggestion.debugger_active=Kembiforritið er núna stopp á rofstað á annari síðu.
-script.button.Go_to_that_page=Fara á þessa síðu
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Loka
-firebug.View=Skoða
-firebug.Help=Hjálp
-firebug.Run=Keyra
-firebug.Copy=Afrita
-firebug.History=Ferill
-firebug.Run_the_entered_command=Keyra innslegna skipun
-firebug.Clear_the_Command_Editor=Hreinsa skipanaritill
-firebug.Copy_the_script_as_a_bookmarklet=Afrita skriftuna sem bókamerki
-firebug.Insert_a_previously_entered_command=Setur inn áður innslegna skipun
-firebug.AlwaysOpenInWindow=Alltaf opna í nýjum glugga
-firebug.OpenWith=Opna með ritli
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Vefsvæði...
-firebug.Configure_Editors=Stilla ritla
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Skoða
-firebug.InspectElement=Skoða einindi
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Stöðva á villum
-firebug.InspectTooltip=Smelltu á einindi á síðunni til að skoða
-firebug.EditHTMLTooltip=Breyta þessu HTML
-firebug.Profile=Tímamæla
-firebug.Clear=Hreinsa
-firebug.ClearConsole=Hreinsa glugga
-firebug.ClearTooltip=Hreinsa gluggann
-firebug.All=Allt
-firebug.Images=Myndir
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Stilltir Firebug ritlar
-editors.Editor=Ritill
-editors.Executable=Keyrsluskrá
-editors.Launch_Arguments=Keyrslu viðföng
-editors.Add=Bæta við
-editors.Remove=Fjarlægja
-editors.Change=Breyta
-editors.Move_Up=Færa upp
-editors.Close=Loka
-editors.Browse=Velja...
-changeEditor.Editor_Configuration=Breyta ritilstillingum
-changeEditor.Name=Nafn:
-changeEditor.Executable=Keyrsluskrá:
-changeEditor.CmdLine=Viðföng:
-changeEditor.Supplied_arguments=Viðföng frá Firebug:
-changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> vefslóð skráarinnar (ef %url er ekki tiltækt, þá verður %file bætt við sjálfkrafa)
-changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> slóð á skránna (eða á tímabundið afrit)
-changeEditor.Line_number=<label class=\'text-link\'>%line</label> línunúmer (ef tiltækt)
-changeEditor.Invalid_Application_Path=Ógild slóð
-changeEditor.Application_does_not_exist=Skilgreint forrit er ekki til!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Breyta
-firebug.css.sourceEdit=Source Edit
-firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
-firebug.css.liveEdit=Live Edit
-firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
-firebug.EditCSSTooltip=Breyta þessu stílblaði
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Vefsvæði verða ekki geymd í einkavöfrunarham
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Show Break Notifications
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
-firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=There are no child objects
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=meira
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S hlutur í geymslu;%1$S hlutir í geymslu
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Eiginleikar hlutar
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(engin orðaklárun)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
-firebug.failedToPreviewImageURL=Failed to load the given URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.n\n
+# %S Title of the associated web page.n\n
+# examples: Firebug - Googlen\n
+WindowTitle=Firebug - %S
+# Panel titlesn\n
+Panel-console=Gluggi
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Net
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Skrifta
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Stíll
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Útreiknað
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Útlit
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Fylgjast með
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Rofstaðir
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Stafli
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Umfang
+firebug.DetachFirebug=Opna Firebug í nýjum glugga
+firebug.AttachFirebug=Festa Firebug við vafraglugga
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.n\n
+# If there is no Firebug translation for the current browser locale, this valuen\n
+# will be used instead of the one in chrome://global/locale/intl.propertiesn\n
+# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsn\n
+pluralRule=15
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semi-colon list of plural forms.n\n
+# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsn\n
+# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.n\n
+# Displays number of pages with Firebug activated.n\n
+# #1 number of Firebug instances activatedn\n
+# example: 2 Total Firebugsn\n
+plural.Total_Firebugs2=%1$S Firebug;%1$S Firebug
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in \'list of all panels\'n\n
+# menu (available on Firebug\'s tab bar).n\n
+# Console panel options.n\n
+startbutton.tip.deactivated=Deactivated
+# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,n\n
+# message, etc. within a source of a web page.n\n
+# #1 File name, #2 Line numbern\n
+# examples: somePage.htm (line 64)n\n
+# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.n\n
+panel.status=%S: %S
+inBrowser=Í vafra
+minimized=Smækkað
+enablement.for_all_pages=fyrir allar síður
+enablement.on=Virkt
+enablement.off=Óvirkt
+enablement.Panel_activation_status=Panel activation status:
+none=Lokað
+Firebug_-_inactive_for_current_website=Firebug - óvirkt fyrir núverandi vefsvæði
+Activate_Firebug_for_the_current_website=Virkja Firebug fyrir núverandi vefsvæði
+Minimized=Smækkað
+Minimize_Firebug=Minnka Firebug
+On_for_all_web_pages=Gera virkt fyrir allar vefsíður
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Hreinsa virkjunarlista
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI Location
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# For example, right clicking on an element in the HTML panel offers an action to inspectn\n
+# clicked element in the DOM panel (tab).n\n
+firebug_options=Firebug stillingar
+# #1 Target panel titlen\n
+# examples: Inspect in DOM Tabn\n
+firebug.Show_All_Panels=Sýna alla glugga
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugn\n
+ShowJavaScriptErrors=Sýna JavaScript villur
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Sýna JavaScript aðvaranir
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Sýna CSS villur
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Sýna staflarakningu með villum
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Sýna XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Sýna Chrome villur
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Sýna Chrome skilaboð
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Sýna utanaðkomandi villur
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Sýna netkerfisvillur
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Strangar aðvaranir (áhrif á afköst)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Skipanaferill
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Sýna flýtiinnsláttarglugga
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Fastyrðingarvilla
+# do not translate.n\n
+# #1 jsdIScript.tagn\n
+# HTML panel context menu items.n\n
+# Quick Info Boxn\n
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumen\n
+Line=%S (lína %S)
+LineAndCol=%S (line %S, col %S)
+InstanceLine=%S #%S (lína %S)
+StackItem=%S (%S lína %S)
+SystemItem=<Kerfi>
+# button that are used when the HTML panel is currently selected. The button allows stoppingn\n
+# JS execution when DOM of the current page is modified.n\n
+# LOCALIZATION NOTE (html.label.Expand/Contract_All): Used within the HTML for a context n\n
+# menu item. The user can expand/contract the element together with all its children to n\n
+# quickly see the entire hierarchical structure or collapse it.n\n
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(ekkert heiti)
+# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
+# editing an existing HTML element attribute.n\n
+# #1 Name of the clicked attribute.n\n
+jsdIScript=jsdIScript %S
+# examples: Edit Attribute \"onclick\"...n\n
+# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
+# deleting an existing HTML element attribute.n\n
+ShowFullText=Sýna heildartexta
+html.option.tip.Show_Full_Text=Don't crop element contents
+# #1 Name of the clicked attribute.n\n
+# examples: Delete Attribute \"onclick\"...n\n
+# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.n\n
+ShowWhitespace=Sýna bil
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# that has been inherited. Used in the Style side panel (under HTML panel).n\n
+# examples: Inherited from table.tabViewn\n
+ShowComments=Birta athugasemdir
+html.option.tip.Show_Comments=Show comment nodes
+# LOCALIZATION NOTE (css.EmptyStyleSheet): This description is displayed in the CSS paneln\n
+# in case there are no stylesheets attached to the current page.n\n
+# The text between <a> and </a> is displayed as a link.n\n
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# LOCALIZATION NOTE (css.EmptyElementCSS2): This description is displayed in the Style side paneln\n
+# (available within the HTML panel) in case there are no CSS rules for the selected element.n\n
+# The text between <a> and </a> is displayed as a link.n\n
+HighlightMutations=Lita breytingar
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.n\n
+# Allows to edit an existing CSS rule property.n\n
+# %S Name of the clicked propertyn\n
+ExpandMutations=Þenja út breytingar
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# examples: Edit \"background-color\"...n\n
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.n\n
+# Allows to disable an existing CSS rule property.n\n
+ScrollToMutations=Skruna breytingar í sýn
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# %S Name of the clicked propertyn\n
+# examples: Disable \"background-color\"n\n
+# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.n\n
+ShowQuickInfoBox=Sýna flýtiupplýsingakassa
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# Allows to delete an existing CSS rule property.n\n
+# %S Name of the clicked propertyn\n
+# examples: Delete \"background-color\"n\n
+ShadeBoxModel=Skyggt box módel
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Skruna í sýn
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Nýr eiginleiki...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Eyða einindi
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Eyða hnút
+html.Delete_Node=Delete the node from the tree
+# Console context menu labels.n\n
+quickInfo=Flýtiupplýsingar
+computedStyle=Útreiknaður stíll
+# LOCALIZATION NOTE do not translate, no longer used(?)n\n
+# Breakpoints side paneln\n
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttonsn\n
+html.Break_On_Mutate=Stöðva við breytingu
+html.Disable_Break_On_Mutate=Slökkva á stöðvun við breytingu
+html.label.Break_On_Text_Change=Stöðva við textabreytingu
+html.label.HTML_Breakpoints=HTML rofstaðir
+html.label.Break_On_Attribute_Change=Stöðva við eiginleikabreytingu
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Stöðva þegar barni er bætt við eða fjarlægt
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Stöðva ef einindi er fjarlægt
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# within balloon popup dialog. This dialog appears when debugger halts at a breakpoint or atn\n
+# a \'debugger\' keyword.n\n
+# Continue: allows to resume the debuggern\n
+# Disable: allows to disable the current \'debugger;\' keyword used in the Javascript source.n\n
+html.label.Expand/Contract_All=Stækka/Minnka allt
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# Script paneln\n
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):n\n
+# Labels used to describe layout properties a the selected HTML element.n\n
+dom.label.breakOnPropertyChange=Break On Property Change
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# Used in the Layout side panel under HMTL panel.n\n
+# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side paneln\n
+dom.disableBreakOnPropertyChange=Disable Break On Property Change
+dom.label.DOM_Breakpoints=DOM rofstaðir
+# under HTML panel.n\n
+# Net paneln\n
+# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)n\n
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,n\n
+EditAttribute=Breyta eiginleika \"%S\"...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,n\n
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):n\n
+# Labels and tooltips for a headers displayed on top of the Net panel.n\n
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.n\n
+DeleteAttribute=Eyða eiginleika \"%S\"
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s contextn\n
+# menu for breaking on a XHR.n\n
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in then\n
+InheritedFrom=Erfist frá
+SothinkWarning=Sothink SWF Catcher viðbót er að koma í veg fyrir að Firebug virki rétt.<br><br>Lestu um <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">þetta atriði í Firebug FAQ</a> til að fá hjálp.
+# Net panel\'s Headers tab (displayed if you expand a network request). The label is usedn\n
+# for a button that switches the view between \"show raw source code\" and \"pretty formated headern\n
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# values\".n\n
+# LOCALIZATION NOTE (net.filter.Media): Label for net panel filter (used on the Net panel toolbar)n\n
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutn\n
+css.EmptyStyleSheet=Engar reglur eru til. Þú getur <a>búið til reglu</a>.
+# a network request (displayed when a net panel entry is expanded). The content ofn\n
+# this tab displays sent data (related to a HTTP send method).n\n
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):n\n
+css.EmptyElementCSS=Þetta einindi inniheldur engar stílreglur. Þú getur <a>búið til reglu</a> fyrir það.
+EditStyle=Breyta stíl einindis...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Ný regla...
+css.tip.New_Rule=Add a new rule
+# Label used in the Net panel for detailed info about a network request (displayedn\n
+# when a net panel entry is expanded)n\n
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in then\n
+# Net panel for JSON responses Allows to sort alphabetically.n\n
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net paneln\n
+# (expand an entry in the panel and select Headers tab).n\n
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semi-colon list of plural forms.n\n
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Nýr eiginleiki...
+css.tip.New_Prop=Add a new property to the current rule
+# A message displayed in the Net panel when some entries must be removed since maximum numbern\n
+# of entries has been reached.n\n
+# #1 the number of entries removedn\n
+# example: Firebug\'s log limit has been reached. 150 entries not shown.n\n
+EditProp=Breyta \"%S\"...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitn\n
+# has been reached. Informing the user what preferencee should be changed to modify the limit.n\n
+# %S Name of a preference.n\n
+# examples: In order to change the limit modify: firebug.extensions.console.logLimitn\n
+DisableProp=Gera \"%S\" óvirkt
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.n\n
+# (result of javascript profiler tool). Represents a verb.n\n
+# LOCALIZATION NOTE (plural.Profile_Time2): Semi-colon list of plural forms.n\n
+# Used as a caption for reported profile info (result of javascript profiler tool).n\n
+DeleteProp=Eyða \"%S\"
+css.tip.Delete_Prop=Delete the property "%S"
+# #1 number of millisecondsn\n
+BreakOnThisError=Stöðva á þessari villu
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Stöðva á öllum villum
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# #2 number of calls (plural)n\n
+# example: (#1ms, #2 calls)n\n
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headern\n
+TrackThrowCatch=Fylgjast með Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Nota seinustu frumkóða línu fyrir eval() nöfn
+UseMD5ForEvalName=Nota MD5 fyrir eval() nöfn
+# (name of a report column). In order to see this, select the Console panel start profilingn\n
+Breakpoints=Rofstaðir
+ErrorBreakpoints=Villu rofstaðir
+LoggedFunctions=Skráð föll
+EnableAllBreakpoints=Virkja alla rofstaði
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Gera alla rofstaði óvirka
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Fjarlægja alla rofstaði
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Þessi rofstaður mun stoppa ef þessi yrðing er sönn:
+# by clicking the Profile button and stop it by clicking again. The report is logged into then\n
+# console panel. Make sure Script panel is enabled.n\n
+# Support for clipboard actions.n\n
+breakpoints.Remove_Breakpoint=Remove Breakpoint
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Disable Breakpoint
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Enable Breakpoint
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptn\n
+# panel when clicking a function object.n\n
+# %S Name of the functionn\n
+# Log Calls to \"getData\"n\n
+# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): A tooltip used for a button on mainn\n
+script.balloon.Continue=Halda áfram
+script.balloon.Disable=Gera óvirkt
+ScriptsFilterStatic=Sýna fastar skriftur
+ScriptsFilterEval=Sýna fastar og eval skriftur
+ScriptsFilterEvent=Sýna fastar og atburðaskriftur
+ScriptsFilterAll=Sýna fastar, eval og atburðaskriftur
+ScriptsFilterStaticShort=föst
+ScriptsFilterEvalShort=reikna
+ScriptsFilterEventShort=atburðir
+ScriptsFilterAllShort=allt
+# Firebug toolbar. This button allows to open the command line even within other panels.n\n
+# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console paneln\n
+# if specific method is not supported.n\n
+# %S Name of a not supported method.n\n
+callstack.Expand_All=Expand All
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Collapse All
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console paneln\n
+# when a not supported method is used on the command line.n\n
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# %S Name of a not supported method.n\n
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):n\n
+# Tooltip for the \"Break on... \" button used when the Console panel is selected.n\n
+# LOCALIZATION NOTE (console.Use_TAB_and_arrow_keys) n\n
+ShowUserProps=Sýna eiginleika sem eru skilgreindar af notanda
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Sýna föll skilgreind af notanda
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Sýna DOM eiginleika
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Sýna DOM föll
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Sýna DOM fasta
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=Engir eiginleikar eru til að sýna fyrir þennan hlut.
+NewWatch=Sýna vaktasegð...
+# Top of the completion popup in the command linen\n
+# Console strings used when JavaScript is not availablen\n
+AddWatch=Bæta við vakt
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the consolen\n
+# in cases when the current page is an XML document. The text between <a> and </a> is a link.n\n
+CopySourceCode=Afrita frumkóða
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
+CopyValue=Afrita gildi
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Afrita nafn
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Afrita slóð
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Nýr eiginleiki...
+EditProperty=Breyta eiginleika...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Breyta breytu...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Breyta vakt...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Eyða eiginleika
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Eyða vakt
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# that cause to switch into HTML rendering of the document.n\n
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,n\n
+SetBreakpoint=Setja rofstað
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):n\n
+# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mousen\n
+# over a Size displayed within the Net panel. \'Total Sent\' and \'Total Received\' info includesn\n
+EditBreakpointCondition=Breyta skilyrði rofstaðs...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=Engir rofstaðir eru settir á þessari síðu.
+# even sent and received heades size.n\n
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Netn\n
+# panel (inside the Post tab of an expanded request entry). The message informs the user thatn\n
+Only_Show_Applied_Styles=Only Show Applied Styles
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# posted data reached Firebug\'s size limit and only part of it is displayed in the UI.n\n
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):n\n
+# Labels for Net panel\'s options.n\n
+Show_User_Agent_CSS=Sýna CSS vafra
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (net.option.Show_BF_Cache_Responses, net.option.tip.Show_BF_Cache_Responses):n\n
+# Net panels\'s option. If set to true, the net panel displays also response coming fromn\n
+# BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCachen\n
+# LOCALIZATION NOTE (plural.Request_Count2): Semi-colon list of plural forms.n\n
+# A label used in the Net panel. Displays number of HTTP requests executed by the current page.n\n
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# #1 number of requestsn\n
+# example: 21 requestsn\n
+# LOCALIZATION NOTE (plural.Error_Count2): Semi-colon list of plural forms.n\n
+# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.n\n
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# #1 number of errorsn\n
+# example: 111 Errorsn\n
+# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.n\n
+# With: the scope inside of the with(obj) {} statementn\n
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };n\n
+# Window: the scope inside of a Javascript window object.n\n
+# Net panel timing info labelsn\n
+#A11y Chrome Labels (not visible, spoken by screen readers)n\n
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+#A11y panelNode labels (not visible, spoken by screen readers)n\n
+#A11y Domplate labels (not visible, spoken by screen readers)n\n
+# LOCALIZATION NOTEn\n
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# Describe contents of inline editor fieldsn\n
+# LOCALIZATION NOTE (a11y.labels.overridden):n\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+Expand_Shorthand_Properties=Þenja út stytta eiginleika
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# indicates style property is overridden by selector with higher specificityn\n
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):n\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# Existence and state of a breakpointn\n
+Sort_alphabetically=Sort Alphabetically
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# #1 Line number, #2 Function name, #3 File namen\n
+Show_Mozilla_specific_styles=Show Mozilla Specific Styles
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a console panel search n\n
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Sláðu inn lykil til að sía lista
+# #1 %S String key the use is looking for. #2 number of rows that contain the matched textn\n
+# examples: Match found for \"test\" in 17 log rowsn\n
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlyn\n
+LayoutPadding=fylling
+LayoutBorder=rammi
+LayoutMargin=spássía
+LayoutPosition=staðsetning
+LayoutAdjacent=samliggjandi
+position=staðsetning
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a script panel search n\n
+# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found inn\n
+# examples: Match found for \"window.alert\" on line 322 in utilities.jsn\n
+ShowRulers=Sýna reglustikur og leiðsagnarsíður
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlyn\n
+Loading=Hleður...
+Headers=Hausar
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in an element node) n\n
+net.tip.Clear=Clear the request list
+# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementn\n
+# examples: Match found for \"obj\" in object element at /html/body/object[2]n\n
+net.header.Reset_Header=Frumstilla haus
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node) n\n
+# #1 Search string that was matched. #2 Attribute name #3 attribute value n\n
+# #4 the HTML element name containing. #5 XPATH string specifying the matched elementn\n
+# examples: Match found for \"abindex\" in tabindex=\"0\" in span element at /html/body/span[2]n\n
+net.header.URL=Slóð
+net.header.URL_Tooltip=Umbeðinn tengill og HTTP aðferð.
+net.header.Status=Staða
+net.header.Status_Tooltip=Staða á mótteknu svari.
+net.header.Domain=Lén
+net.header.Domain_Tooltip=Lén á keyrslubeiðni.
+net.header.Size=Stærð
+net.header.Size_Tooltip=Stærð móttekins svars.
+net.header.Timeline=Tímalína
+net.header.Timeline_Tooltip=Ítarlegar tímaupplýsingar um hringferð beiðna og svara.
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlyn\n
+net.label.XHR_Breakpoints=XHR rofstaðir
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) n\n
+net.label.Break_On_XHR=Stöðva á XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# #1 Search string that was matched. #2 element\'s text content n\n
+# #3 the HTML element name containing. #4 XPATH string specifying the matched elementn\n
+# examples: Match found for \"Firebug Rocks!\" in h2 element at /html/body/h2[2]n\n
+net.headers.view_source=skoða frumkóða
+net.headers.pretty_print=smekkleg prentun
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlyn\n
+net.filter.Media=Netgögn
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a CSS panel search (if it is found in a selector) n\n
+# #1 Search string that was matched. #2 selector in which the match was found n\n
+Post=Senda
+Put=Setja
+# examples: Match found for \"main\" in #mainContent h2 {n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+Response=Svar
+URLParameters=Breytur
+Cache=Biðminni
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration) n\n
+# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to n\n
+jsonviewer.sort=Raða eftir lykli
+jsonviewer.do_not_sort=Ekki raða
+# examples: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a DOM panel search n\n
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# #1 Search string that was matched. #2 DOM property in which the match was found n\n
+# examples: Match found for \"time\" in _starttime : 1257324992232 (Number)n\n
+RequestHeaders=Beiðnahausar
+ResponseHeaders=Svarhausar
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a Net panel search n\n
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
+# #3 Column in which the match was found #4. Column value n\n
+# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 msn\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+plural.Limit_Exceeded2=Búið er að ná hámarksvillufjölda í Firebug náð. %1$S færsla sjást ekki.;Búið er að ná hámarksvillufjölda í Firebug náð. %1$S færslur sjást ekki.
+LimitPrefs=Valkostir
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
+# #1 Search string that was matched. #2 Column value in which the match was found n\n
+# examples: Match found for \"05\" in net summary row: 4.05sn\n
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
+LimitPrefsTitle=Til að breyta þessari takmörkun breyttu: %S
+Refresh=Uppfæra
+panel.tip.Refresh=Refresh the panel display
+# visible in the UI, intended for screen readers.n\n
+# Indicates that the searched string was not matched n\n
+OpenInTab=Opna í nýjum flipa
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Opna svar í nýjum flipa
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# %S Search string that was matched. n\n
+# examples: No matched found for \"wefkhwefkgwekhjgjh\"n\n
+Profile=Tímamæla
+ProfilerStarted=Tímamælir er í gangi. Smelltu á \'Tímamæla\' aftur til að sjá skýrslu.
+# Console messages.n\n
+# LOCALIZATION NOTE (message.knownIssues40): A message displayed for Firefox 40 users showingn\n
+# a link to known issues (with Firefox 4.0) page.n\n
+# examples: See Firefox 4.0 known issues page: http://getfirebug.com/knownissuesn\n
+# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
+plural.Profile_Time2=(%1$Sms, %2$S kall);(%1$Sms, %2$S köll)
+NothingToProfile=Engin virkni í tímamælingu.
+PercentTooltip=Prósenta af tíma fyrir þetta fall.
+CallsHeaderTooltip=Fjöldi skipta sem kallað var á þetta fall.
+OwnTimeHeaderTooltip=Tími notaður í köll, fyrir utan undirföll.
+TimeHeaderTooltip=Tími notaður í köll, með undirföllum.
+AvgHeaderTooltip=Meðaltími, með föllum.
+MinHeaderTooltip=Lágmarkstími, með föllum.
+MaxHeaderTooltip=Hámarkstími, með föllum.
+ProfileButton.Enabled.Tooltip=Tímamæla keyrslutíma JavaScript.
+ProfileButton.Disabled.Tooltip=Tímamæla keyrslutíma JavaScript (Skriftuflipi verður að vera virkur).
+Function=Fall
+Percent=Prósenta
+# If Firebug is displayed in an external window (detached), but not active for then\n
+# currently selected Firefox tab, the following button label is used for ann\n
+# activation button.n\n
+# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
+Calls=Köll
+OwnTime=Eigin tími
+Time=Tími
+Avg=Meðal
+Min=Lágmark
+Max=Hámark
+File=Skrá
+# An error message displayed in the Script panel when a source can\'t be displayedn\n
+Copy=Afrita
+Cut=Klippa
+Remove=Fjarlægja
+Delete=Delete
+Paste=Paste
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Afrita innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Afrita XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Afrita CSS slóð
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# for specific URL.n\n
+# examples: Failed to load source for: http://www.example.com/script.jsn\n
+CopyLocation=Afrita staðsetningu
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Afrita staðssetningu með breytum
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Afrita beiðnahausa
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Afrita svarhausa
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Afrita meginmál svars
+net.tip.Copy_Response=Copy the response body to the clipboard
+# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,n\n
+CopyError=Afritunarvilla
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.n\n
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):n\n
+CopySource=Afritunarfall
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# Tooltips for back/forward buttons on the Script panel toolbar.n\n
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):n\n
+# This message is displayed within the Script panel if debugger is inactive during page load.n\n
+# The suggestion message represents an advice how to solve the problem.n\n
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):n\n
+ShowCallsInConsole=Skrá köll í \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# This message is displayed within the Script panel if javascript is not enabled.n\n
+# The suggestion message represents an advice how to solve the problem.n\n
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed onn\n
+ShowEventsInConsole=Skrá atburði
+html.tip.Show_Events_In_Console=Log event information to the console
+# the Script panel if Javascript is disabled. This button allows to enable it.n\n
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):n\n
+panel.Enabled=Virkt
+panel.tip.Enabled=Toggle the panel activation
+# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
+# The suggestion message represents an advice how to solve the problem.n\n
+# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):n\n
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
+# The suggestion message represents an advice how to solve the problem.n\n
+#firebug.dtdn\n
+#editors.dtdn\n
+console.MethodNotSupported=Firebug stjórnborð styður ekki \'%S\'
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
+# in the Console panel when the private browsing mode is on (in Firefox 4 it\'s Startn\n
+# Private Browsing mode)n\n
+commandline.MethodNotSupported=Skipanalína Firebug styður ekki \'%S\'
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
+# in a break notification balloon popup next to a checkbox.n\n
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
+commandline.CurrentWindow=Current window:
+# in a break notification balloon popup when break on debugger; keyword happens.n\n
+# The keyword can be disabled by creating a disabled breakpoint on the same line. n\n
+console.Disable_Break_On_All_Errors=Slökkva á rofstað við allar villur
+console.Break_On_All_Errors=Stöðva á öllum villum
+# LOCALIZATION NOTE (firebug.dom.noChildren): This message is displayed in the DOM paneln\n
+# in cases where there are no children objects and so nothing to display.n\n
+console.Break_On_This_Error=Stöðva á þessari villu
+# LOCALIZATION NOTE (firebug.reps.more): This label is when displayed array/list hasn\n
+# more elements then it\'s displayed on the screen. \"...\" is automatically appended.n\n
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# example: more...n\n
+# LOCALIZATION NOTE (firebug.storage.totalItems): This label is used in the DOM paneln\n
+console.JSDisabledInFirefoxPrefs=JavaScript er ekki virkt í Firefox stillingum. Ef þú vilt geta notað stjórnborðsgluggann þá verðurðu að virkja JavaScript með \'Verkfæri\' -> \'Valkostir\' -> \'Innihald\' -> \'Virkja JavaScript\'
+# for local/session/global storage. It\'s informing the user about number of items in the storage.n\n
+# #1 number of storage itemsn\n
+# example: 1 item in Storagen\n
+# example: 2 items in Storagen\n
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties): This label is used by console.tablen\n
+# method if an object is passed into it. Used in table header.n\n
+# LOCALIZATION NOTE (firebug.completion.empty): This label is used in the command linen\n
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# by auto-complete function. Displayed if there are no possible completions.n\n
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug skipanalína er óvirk fyrir XML síður. Þú getur <a>skipt yfir í HTML</a> til að virkja hana.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Svar gögn
+net.sizeinfo.Post_Body=Send gögn
+net.sizeinfo.Total_Sent=Alls sent
+net.sizeinfo.Total_Received=Alls móttekið
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Netflipi virkur. Allar fyrirspurnir á meðan netflipi er óvirkur verða ekki sýndar.
+net.responseSizeLimitMessage=Stærð svars er komið yfir hámarksstærð í Firebug. Smelltu <a>hér</a> til að opna allt svarið í nýjum Firefox flipa.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Stærðartakmörkun var náð fjarlægt af Firebug.
+net.Break_On_XHR=Stöðva á XHR
+net.label.Parameters=Færibreytur
+net.label.Parts=Hlutar
+net.label.Source=Uppruni
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Slökkva á skyndiminni vafra
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Sýna teikniatburði
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Stöðva á næsta
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Sýna HTTP hausa
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S beiðni;%1$S beiðnir
+FromCache=frá skyndiminni
+StopLoading=Stöðva að hlaða
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Mjög stór gögn)
+ShowComputedStyle=Sýna útreiknaðan stíl
+StyleGroup-text=Texti
+StyleGroup-background=Bakgrunnur
+StyleGroup-box=Box módel
+StyleGroup-layout=Útlit
+StyleGroup-other=Annað
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Afrita lit
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Afrita staðsetningu myndar
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Opna mynd í nýjum flipa
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Sleppa verkfæraslá stafla
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Afrita regluskilgreiningu
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Afrita stílskilgreiningu
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S villa;%1$S villur
+moduleManager.title=%S flipi er óvirkur
+moduleManager.desc3=Notaðu Firebug táknvalmyndina til að virkja eða gera óvirka alla flipa. Notaðu litlu valmyndina í flipanum fyrir einstakar stýringar.
+moduleManager.Enable=Virkja
+Suspend_Firebug=Svæfa Firebug
+Resume_Firebug=Halda áfram með Firebug
+Reset_Panels_To_Disabled=Endursetja alla flipa sem óvirka
+Open_Console=Opna stjórnborð
+Open_Console_Tooltip=Opna rekjuglugga fyrir Firebug.
+Scope_Chain=Gildissviðsröð
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=With
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Fall
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Gluggi
+Logs=Atburðaskrár
+Options=Valkostir
+Copy_Stack=Afrita stafla
+Copy Exception=Afrita frávik
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blokkun
+requestinfo.Resolving=DNS uppfletting
+requestinfo.Connecting=Tengist
+requestinfo.Sending=Sendir
+requestinfo.Waiting=Bið
+requestinfo.Receiving=Móttekur
+requestinfo.ContentLoad=\'DOMContentLoaded\' (atburður)
+requestinfo.WindowLoad=\'load\' (atburður)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Firebug leit
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Áfram
+search.tip.Next=Search for the next match
+search.Previous=Fyrri
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Þvinga stafstöðurétt
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Margar skrár
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Nota reglulegar segðir
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS veljari
+search.net.Headers=Hausar
+search.net.Parameters=Færibreytur
+search.net.Response_Bodies=Svarmeginmál
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Stöðugur
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Sýna allar færslur í atburðaskrá
+firebug.console.Errors=Villur
+firebug.console.Filter_by_Errors=Sía eftir villum
+firebug.console.Warnings=Aðvaranir
+firebug.console.Filter_by_Warnings=Sía eftir aðvörunum
+firebug.console.Info=Upplýsingar
+firebug.console.Filter_by_Info=Sía eftir upplýsingum
+firebug.console.Debug_Info=Sýna kembiupplýsingar
+firebug.console.Filter_by_Debug_Info=Sía eftir kembiupplýsingum
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Opna Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Fela Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Virkja alla flipa
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Gera alla flipa óvirka
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Sérsníða flýtilykla
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Valkostir
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Virkja auðveldað aðgengi
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Endursetja alla Firebug valkosti
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug á Netinu
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Sýna villufjölda
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Stærð texta
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Stækka stærð texta
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Minnka stærð texta
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Venjuleg textastærð
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Vefsvæði Firebug...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Skjölun...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Flýtihnappar...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Umræðuhópur...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Vandamál...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Gefa...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Um...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Leita
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Slá aftur inn skipun
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Víxla skoðun
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Víxla flýtiupplýsingaboxi
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Víxla tímamælingu
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Fara í skipanalínu
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Fara í Firebug leit
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Fara í vaktritil
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Fara í staðsetningu
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Næsti hlutur
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Fyrri hlutur
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Sérsníða Firebug lykla
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Opna Firebug í nýjum glugga
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Skipta yfir á vinstri Firebug flipa
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Skipta yfir á hægri Firebug flipa
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Opna Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Fyrri Firebug flipi
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Hreinsa glugga
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Opna rakningaglugga
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Til baka
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Áfram
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Stækka stærð texta
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Minnka stærð texta
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Venjuleg texta stærð
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Gluggaval
+customizeShortcuts=Stillingar Firebug flýtilykla
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=flipaverkfæri
+a11y.labels.firebug_panels=Firebug flipar
+a11y.labels.firebug_side_panels=Firebug hliðarflipar
+a11y.labels.firebug_window=Firebug gluggi
+a11y.labels.firebug_status=Firebug staða
+a11y.labels.reset=endursetja
+a11y.labels.reset_shortcut=endursetja %S flýtilykil
+aria.labels.inactive_panel=óvirkur flipi
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=skrá raðir
+a11y.labels.call_stack=rakningarstafli
+a11y.labels.document_structure=uppbygging skjals
+a11y.labels.title_panel=%S flipi
+a11y.labels.title_side_panel=%S hliðarflipi
+a11y.labels.cached=flýtiminni
+aria.labels.stack_trace=staflarakning
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=fylling
+a11y.layout.border=rammi
+a11y.layout.margin=spássía
+a11y.layout.position=staðsetning
+a11y.layout.position_top=staðsetning efst
+a11y.layout.position_right=staðsetning hægri
+a11y.layout.position_bottom=staðsetning neðst
+a11y.layout.position_left=staðsetning vinstri
+a11y.layout.margin_top=spássíur ofan
+a11y.layout.margin_right=spássíur hægri
+a11y.layout.margin_bottom=spássíur neðan
+a11y.layout.margin_left=spássíur vinstri
+a11y.layout.border_top=rammi efst
+a11y.layout.border_right=rammi hægri
+a11y.layout.border_bottom=rammi neðst
+a11y.layout.border_left=rammi vinstri
+a11y.layout.padding_top=fylling efst
+a11y.layout.padding_right=fylling hægri
+a11y.layout.padding_bottom=fylling neðst
+a11y.layout.padding_left=fylling vinstri
+a11y.layout.top=efst
+a11y.layout.right=hægri
+a11y.layout.bottom=neðst
+a11y.layout.left=vinstri
+a11y.layout.width=breidd
+a11y.layout.height=hæð
+a11y.layout.size=stærð
+a11y.layout.z-index=z-vísir
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=ferningsmörk biðlara
+a11y.descriptions.press_enter_to_edit_values=Ýttu á enter og svo tab til að breyta einstökum gildum
+a11y.labels.style_rules=stílreglur
+aria.labels.inherited_style_rules=erfa stílreglur
+a11y.labels.computed_styles=útreiknaðir stílar
+a11y.labels.dom_properties=DOM eiginleikar
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=innri ritill
+a11y.labels.value_for_attribute_in_element=gildi fyrir %S eiginleika í einindi %S
+a11y.labels.attribute_for_element=eiginleiki fyrir %S einindi
+a11y.labels.text_contents_for_element=textainnihald fyrir %S einindi
+a11y.labels.defined_in_file=skilgreindur í %S
+a11y.labels.declarations_for_selector=stíll skilgreiningar fyrir \"%S\" veljara
+a11y.labels.property_for_selector=CSS eiginleikii fyrir veljara: %S
+a11y.labels.value_property_in_selector=%S gildi eiginleika fyrir veljara %S
+a11y.labels.css_selector=CSS veljari
+a11y.labels.source_code_for_file=frumkóði fyrir skrá %S
+a11y.labels.press_enter_to_add_new_watch_expression=ýttu á enter til að bæta við nýrri vaktsegð
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=hunsaðir
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=er með skilyrtan rofstað
+a11y.updates.has_disabled_break_point=er með óvirkan skilyrtan rofstað
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Skrifta stopp á línu %S í %S, skrá %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=passar við \"%S\" í %S röðum í atburðaskrá
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=passar við \"%S\" í línu %S í %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=passar við \"%S\" í %S einindi í slóð %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=passar við \"%S\" í eiginleika %S=%S fyrir %S einindi í slóð %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=passar við \"%S\" í textainnihaldi: %S fyrir %S einindi í slóð %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=passar við \"%S\" í veljara %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=passaði við \"%S\" í stíl skilgreiningu %S í veljara %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=passar við \"%S\" í DOM eiginleika %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=passar við \"%S\" í %S, %S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=passar við \"%S\" í netlýsingarröð: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=ekkert fannst sem passar við \"%S\"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Ertu viss um að þú viljir endursetja alla Firebug valkosti í sjálfgefna stöðu?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=Stjórnborð verður að vera virkt
+warning.Command_line_blocked?=Lokað á skipanalínu?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Endurnýjaðu til að virkja stjórnborðsglugga
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=Gögnin frá þessum tengli er ekki texti
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Til baka á þennan glugga
+firebug.history.Stay_on_this_panel=Vera í þessum glugga
+firebug.history.Go_forward_to_this_panel=Áfram í þennan glugga
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Til baka
+firebug.history.Go_forward=Áfram
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Skriftuflipi var óvirkur þegar síðan var hlaðin inn
+script.suggestion.inactive_during_page_load2=<a>Endurnýja</a> til að sjá allar uppsprettur
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript er ekki virkt
+script.suggestion.javascript_not_enabled=Kíktu á Firefox > Verkfæri > Valkostir > Innihald > Virkja Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Virkja Javascript og endurnýja
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Allar skriftur voru síaðar
+script.suggestion.all_scripts_filtered=Kíktu á skriftusíu stillingar í verkfæraslánni eða \"Sýna chrome uppsprettu\" stillinguna
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=Ekkert Javascript er á þessari síðu
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Kembiforrit er þegar virkt
+script.suggestion.debugger_active=Kembiforritið er núna stopp á rofstað á annari síðu.
+script.button.Go_to_that_page=Fara á þessa síðu
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Loka
+firebug.View=Skoða
+firebug.Help=Hjálp
+firebug.Run=Keyra
+firebug.Copy=Afrita
+firebug.History=Ferill
+firebug.Run_the_entered_command=Keyra innslegna skipun
+firebug.Clear_the_Command_Editor=Hreinsa skipanaritill
+firebug.Copy_the_script_as_a_bookmarklet=Afrita skriftuna sem bókamerki
+firebug.Insert_a_previously_entered_command=Setur inn áður innslegna skipun
+firebug.AlwaysOpenInWindow=Alltaf opna í nýjum glugga
+firebug.OpenWith=Opna með ritli
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Vefsvæði...
+firebug.Configure_Editors=Stilla ritla
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Skoða
+firebug.InspectElement=Skoða einindi
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Stöðva á villum
+firebug.InspectTooltip=Smelltu á einindi á síðunni til að skoða
+firebug.EditHTMLTooltip=Breyta þessu HTML
+firebug.Profile=Tímamæla
+firebug.Clear=Hreinsa
+firebug.ClearConsole=Hreinsa glugga
+firebug.ClearTooltip=Hreinsa gluggann
+firebug.All=Allt
+firebug.Images=Myndir
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Stilltir Firebug ritlar
+editors.Editor=Ritill
+editors.Executable=Keyrsluskrá
+editors.Launch_Arguments=Keyrslu viðföng
+editors.Add=Bæta við
+editors.Remove=Fjarlægja
+editors.Change=Breyta
+editors.Move_Up=Færa upp
+editors.Close=Loka
+editors.Browse=Velja...
+changeEditor.Editor_Configuration=Breyta ritilstillingum
+changeEditor.Name=Nafn:
+changeEditor.Executable=Keyrsluskrá:
+changeEditor.CmdLine=Viðföng:
+changeEditor.Supplied_arguments=Viðföng frá Firebug:
+changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> vefslóð skráarinnar (ef %url er ekki tiltækt, þá verður %file bætt við sjálfkrafa)
+changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> slóð á skránna (eða á tímabundið afrit)
+changeEditor.Line_number=<label class=\'text-link\'>%line</label> línunúmer (ef tiltækt)
+changeEditor.Invalid_Application_Path=Ógild slóð
+changeEditor.Application_does_not_exist=Skilgreint forrit er ekki til!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Breyta
+firebug.css.sourceEdit=Source Edit
+firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
+firebug.css.liveEdit=Live Edit
+firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
+firebug.EditCSSTooltip=Breyta þessu stílblaði
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Vefsvæði verða ekki geymd í einkavöfrunarham
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Show Break Notifications
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
+firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=There are no child objects
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=meira
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S hlutur í geymslu;%1$S hlutir í geymslu
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Eiginleikar hlutar
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(engin orðaklárun)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
+firebug.failedToPreviewImageURL=Failed to load the given URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/it/cookies.properties b/locale/it/cookies.properties
index 1879ee2..085f81a 100644
--- a/locale/it/cookies.properties
+++ b/locale/it/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (extensions.firecookie at janodvarko.cz.description):
-cookies.Panel=Cookie
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# Description of this extension.
-cookies.Session=Al termine della sessione
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.AllowGlobally=Accetta i cookie dai siti
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.AllowGlobally): Label used for cookies permission.
-# LOCALIZATION NOTE (cookies.LogEvents): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, various cookies events are
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# displayed in Firebug's Console panel.
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-cookies.clearWhenDeny=Elimina i cookie bloccati
-# xxxHonza: currently not displayed in the UI
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-cookies.Cut=Taglia
-cookies.Copy=Copia
-cookies.CopyAll=Copia tutto
-cookies.Paste=Incolla
-cookies.Delete=Elimina
-# (right click on a cookie in the Cookies panel).
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-cookies.Clear_Value=Azzera il valore
-# Clears cookie value, but not removes the cookie itself.
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-cookies.Edit=Modifica…
-cookies.Accept=Permetti
-# a dialog for editing clicked cookie.
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-cookies.header.Reset_Header=Resetta l'intestazione
-# (visibility and size of all columns)
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-cookies.Intro=È possibile specificare quali siti potranno o meno utilizzare i cookie. Inserire l'indirizzo esatto del sito da gestire e fare clic su Blocca, Permetti per la sessione o Permetti
-cookies.ExceptionsTitle=Eccezioni dei cookie
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-cookies.modulemanager.description=Supporto per il monitoraggio dei cookie
-cookies.HostEnable=Attiva il pannello Cookie per %S
-cookies.HostDisable=Disattiva il pannello Cookie per %S
-cookies.Permissions=Attiva/disattiva il pannello Cookie
-cookies.PermissionsIntro=Selezionare i siti web per cui attivare/disattivare il pannello Cookie
-# examples: Enable Cookies panel for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-cookies.SystemPages=Pagine di sistema
-cookies.LocalFiles=File locali
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when cookies
-cookies.confirm.removeall=Eliminare tutti i cookie nella lista?
-# are going to be deleted deleted (or permission is set do deny and cookies should be deleted).
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-cookies.confirm.removeallsession=Eliminare tutti i cookie permessi per la sessione nella lista?
-# all session cookies are going to be deleted
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-cookies.msg.Do_not_show_this_message_again=Non mostrare questo messaggio ancora
-# that says whether a confirmation dialog is displayed when removing cookies.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.Confirm_cookie_removal=Conferma l'eliminazione dei cookie
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-cookies.removeall.tooltip=Elimina tutti i cookie nella lista
-# Cookies->Remove Session Cookies menu
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Elimina i cookie permessi per la sessione
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-cookies.removeallsession.tooltip=Elimina tutti i cookie permessi per la sessione nella lista
-# examples: Create new cookie for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.tooltip=Crea un nuovo cookie per %S
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-cookies.createcookie.defaultvalue=Valore
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-cookies.perm.manage.tooltip=Gestisce i permessi dei cookie per %S
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-cookies.console.cookiescleared=Tutti i cookie sono stati eliminati
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-cookies.console.sessioncookiescleared=Tutti i cookie permessi per la sessione sono stati eliminati
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-cookies.console.cookiesrejected=Cookie bloccati:
-cookies.console.nocookiesreceived=Nessun cookie ricevuto
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-cookies.console.cookie=Cookie
-cookies.console.deleted=eliminato
-cookies.console.added=aggiunto
-cookies.console.changed=modificato
-cookies.console.cleared=azzerato
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-cookies.domain.label=Dominio
-# Displayed in the Cookies panel for secure cookies.
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-cookies.secure.label=Sicuro
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-cookies.status.accepted=Permesso
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Segnato
-cookies.status.rejected=Bloccato
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-cookies.info.valuetab.label=Valore
-cookies.info.rawdatatab.Raw_Data=Dati grezzi
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-cookies.default.session=Azione predefinita (permetti i cookie per la sessione)
-cookies.default.thirdPartySession=Azione predefinita (permetti i cookie per la sessione)
-cookies.default.thirdParty=Azione predefinita (permetti i cookie)
-cookies.default.allow=Azione predefinita (permetti i cookie)
-cookies.default.deny=Azione predefinita (blocca i cookie)
-cookies.default.warn=Azione predefinita (chiedi prima di permettere i cookie)
-cookies.host.session=Permetti i cookie per la sessione da %S
-cookies.host.accept=Permetti i cookie da %S
-cookies.host.reject=Blocca i cookie da %S
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.domain,
-cookies.edit.invalidname=Il nome del cookie non è valido
-cookies.edit.invalidhost=Il server del cookie non è valido
-cookies.edit.invalidpath=Il percorso del cookie non è valido
-# cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-cookies.header.name=Nome
-cookies.header.value=Valore
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Dominio
-cookies.header.size=Dimensione
-cookies.header.path=Percorso
-cookies.header.expires=Scadenza
-cookies.header.security=Sicurezza
-cookies.header.httponly=HttpOnly
-# cookies.header.domain.tooltip, cookies.header.size.tooltip, cookies.header.path.tooltip,
-# cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.status.tooltip, cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-cookies.header.name.tooltip=Nome del cookie
-cookies.header.value.tooltip=Valore memorizzato nel cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Dominio del cookie
-cookies.header.size.tooltip=Dimensione del cookie memorizzato
-cookies.header.path.tooltip=Percorso nel quale il cookie è attivo
-cookies.header.expires.tooltip=Data di scadenza del cookie
-cookies.header.security.tooltip=Indica se il cookie è sicuro
-cookies.header.httponly.tooltip=Indica se il cookie è HttpOnly
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-cookies.netinfo.Received_Cookies=Cookie ricevuti
-cookies.netinfo.Sent_Cookies=Cookie inviati
-# xxxHonza: Not implemented yet.
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.Path_Filter=Filtra il percorso
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-cookies.menu.Cookies=Cookie
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-cookies.export.Export_All_Cookies=Esporta tutti i cookie…
-cookies.export.Export_All_Cookies_Tooltip=Esporta tutti i cookie memorizzati nel browser in un file di testo
-cookies.export.Export_For_Site=Esporta tutti i cookie del sito attuale…
-cookies.export.Export_For_Site_Tooltip=Esporta i cookie del sito %S in un file di testo
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-cookies.message.There_is_no_active_page=Non vi sono pagine attive
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-cookies.Break_On_Cookie=Interrompi alla modifica dei cookie
-cookies.Disable_Break_On_Cookie=Non interrompere alla modifica dei cookie
-# displayed in Breakpoints panel (in the Script panel)
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-cookies.Cookie_Breakpoints=Punti di arresto dei cookie
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-cookies.menu.Break_On_Cookie=Interrompi al cookie '%S'
-cookies.menu.tooltip.Break_On_Cookie=Interrompe al cookie '%S' se eliminato o modificato
-# used when user right clicks on a cookie with existing breakpoint.
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-cookies.menu.Edit_Breakpoint_Condition=Modifica la condizione per il punto di arresto
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-# DTD strings converted (main Firecokie UI, see fireCookie.xul)
-cookies.Breakpoint_condition_evaluation_fails=Valutazione della condizione del punto d'arresto non riuscita
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-cookies.RemoveAll=Elimina i cookie
-cookies.Create=Crea cookie…
-# menu on Cookies toolbar.
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-cookies.Tools=Strumenti
-cookies.ToolsTooltip=Strumenti
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-cookies.ViewAll=Mostra i cookie…
-cookies.ViewAllTooltip=Apre la finestra di gestione dei cookie
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-# LOCALIZATION NOTE (cookies.Help, cookies.HelpTooltip, cookies.About,
-cookies.ViewExceptions=Mostra le eccezioni dei cookie…
-cookies.ViewExceptionsTooltip=Apre la finestra di gestione delle eccezioni dei cookie
-# cookies.AboutTooltip) Labels and tooltips for additional menu items in Tools menu.
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-cookies.Filter=Filtri
-cookies.FilterTooltip=Filtra la lista dei cookie in base alle opzioni selezionate
-cookies.filter.byPath=Mostra i cookie del percorso attuale
-cookies.filter.byPathTooltip=Mostra solo i cookie corrispondenti al percorso attuale
-cookies.filter.showRejectedCookies=Mostra i cookie bloccati
-cookies.filter.showRejectedCookiesTooltip=Mostra anche i cookie bloccati
-# presented on the Cookie toolbar.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-cookies.edit.title=Creazione/modifica del cookie
-cookies.edit.name.label=Nome:
-cookies.edit.domain.label=Server:
-cookies.edit.path.label=Percorso:
-cookies.edit.expire.label=Scadenza:
-cookies.edit.value.label=Valore:
-cookies.edit.secure.label=Cookie sicuro
-cookies.edit.httponly.label=Cookie HttpOnly
-cookies.edit.session.label=Permetti per la sessione
-cookies.edit.urlEncode.label=URL encode value
-# cookies.edit.session.label): Edit Cookie dialog UI
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (extensions.firecookie at janodvarko.cz.description):
+cookies.Panel=Cookie
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# Description of this extension.
+cookies.Session=Al termine della sessione
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.AllowGlobally=Accetta i cookie dai siti
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.AllowGlobally): Label used for cookies permission.
+# LOCALIZATION NOTE (cookies.LogEvents): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, various cookies events are
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# displayed in Firebug's Console panel.
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+cookies.clearWhenDeny=Elimina i cookie bloccati
+# xxxHonza: currently not displayed in the UI
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+cookies.Cut=Taglia
+cookies.Copy=Copia
+cookies.CopyAll=Copia tutto
+cookies.Paste=Incolla
+cookies.Delete=Elimina
+# (right click on a cookie in the Cookies panel).
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+cookies.Clear_Value=Azzera il valore
+# Clears cookie value, but not removes the cookie itself.
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+cookies.Edit=Modifica…
+cookies.Accept=Permetti
+# a dialog for editing clicked cookie.
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+cookies.header.Reset_Header=Resetta l'intestazione
+# (visibility and size of all columns)
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+cookies.Intro=È possibile specificare quali siti potranno o meno utilizzare i cookie. Inserire l'indirizzo esatto del sito da gestire e fare clic su Blocca, Permetti per la sessione o Permetti
+cookies.ExceptionsTitle=Eccezioni dei cookie
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+cookies.modulemanager.description=Supporto per il monitoraggio dei cookie
+cookies.HostEnable=Attiva il pannello Cookie per %S
+cookies.HostDisable=Disattiva il pannello Cookie per %S
+cookies.Permissions=Attiva/disattiva il pannello Cookie
+cookies.PermissionsIntro=Selezionare i siti web per cui attivare/disattivare il pannello Cookie
+# examples: Enable Cookies panel for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+cookies.SystemPages=Pagine di sistema
+cookies.LocalFiles=File locali
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when cookies
+cookies.confirm.removeall=Eliminare tutti i cookie nella lista?
+# are going to be deleted deleted (or permission is set do deny and cookies should be deleted).
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+cookies.confirm.removeallsession=Eliminare tutti i cookie permessi per la sessione nella lista?
+# all session cookies are going to be deleted
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+cookies.msg.Do_not_show_this_message_again=Non mostrare questo messaggio ancora
+# that says whether a confirmation dialog is displayed when removing cookies.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.Confirm_cookie_removal=Conferma l'eliminazione dei cookie
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+cookies.removeall.tooltip=Elimina tutti i cookie nella lista
+# Cookies->Remove Session Cookies menu
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Elimina i cookie permessi per la sessione
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+cookies.removeallsession.tooltip=Elimina tutti i cookie permessi per la sessione nella lista
+# examples: Create new cookie for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.tooltip=Crea un nuovo cookie per %S
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+cookies.createcookie.defaultvalue=Valore
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+cookies.perm.manage.tooltip=Gestisce i permessi dei cookie per %S
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+cookies.console.cookiescleared=Tutti i cookie sono stati eliminati
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+cookies.console.sessioncookiescleared=Tutti i cookie permessi per la sessione sono stati eliminati
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+cookies.console.cookiesrejected=Cookie bloccati:
+cookies.console.nocookiesreceived=Nessun cookie ricevuto
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+cookies.console.cookie=Cookie
+cookies.console.deleted=eliminato
+cookies.console.added=aggiunto
+cookies.console.changed=modificato
+cookies.console.cleared=azzerato
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+cookies.domain.label=Dominio
+# Displayed in the Cookies panel for secure cookies.
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+cookies.secure.label=Sicuro
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+cookies.status.accepted=Permesso
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Segnato
+cookies.status.rejected=Bloccato
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+cookies.info.valuetab.label=Valore
+cookies.info.rawdatatab.Raw_Data=Dati grezzi
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+cookies.default.session=Azione predefinita (permetti i cookie per la sessione)
+cookies.default.thirdPartySession=Azione predefinita (permetti i cookie per la sessione)
+cookies.default.thirdParty=Azione predefinita (permetti i cookie)
+cookies.default.allow=Azione predefinita (permetti i cookie)
+cookies.default.deny=Azione predefinita (blocca i cookie)
+cookies.default.warn=Azione predefinita (chiedi prima di permettere i cookie)
+cookies.host.session=Permetti i cookie per la sessione da %S
+cookies.host.accept=Permetti i cookie da %S
+cookies.host.reject=Blocca i cookie da %S
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.domain,
+cookies.edit.invalidname=Il nome del cookie non è valido
+cookies.edit.invalidhost=Il server del cookie non è valido
+cookies.edit.invalidpath=Il percorso del cookie non è valido
+# cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+cookies.header.name=Nome
+cookies.header.value=Valore
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Dominio
+cookies.header.size=Dimensione
+cookies.header.path=Percorso
+cookies.header.expires=Scadenza
+cookies.header.security=Sicurezza
+cookies.header.httponly=HttpOnly
+# cookies.header.domain.tooltip, cookies.header.size.tooltip, cookies.header.path.tooltip,
+# cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.status.tooltip, cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+cookies.header.name.tooltip=Nome del cookie
+cookies.header.value.tooltip=Valore memorizzato nel cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Dominio del cookie
+cookies.header.size.tooltip=Dimensione del cookie memorizzato
+cookies.header.path.tooltip=Percorso nel quale il cookie è attivo
+cookies.header.expires.tooltip=Data di scadenza del cookie
+cookies.header.security.tooltip=Indica se il cookie è sicuro
+cookies.header.httponly.tooltip=Indica se il cookie è HttpOnly
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+cookies.netinfo.Received_Cookies=Cookie ricevuti
+cookies.netinfo.Sent_Cookies=Cookie inviati
+# xxxHonza: Not implemented yet.
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.Path_Filter=Filtra il percorso
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+cookies.menu.Cookies=Cookie
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+cookies.export.Export_All_Cookies=Esporta tutti i cookie…
+cookies.export.Export_All_Cookies_Tooltip=Esporta tutti i cookie memorizzati nel browser in un file di testo
+cookies.export.Export_For_Site=Esporta tutti i cookie del sito attuale…
+cookies.export.Export_For_Site_Tooltip=Esporta i cookie del sito %S in un file di testo
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+cookies.message.There_is_no_active_page=Non vi sono pagine attive
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+cookies.Break_On_Cookie=Interrompi alla modifica dei cookie
+cookies.Disable_Break_On_Cookie=Non interrompere alla modifica dei cookie
+# displayed in Breakpoints panel (in the Script panel)
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+cookies.Cookie_Breakpoints=Punti di arresto dei cookie
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+cookies.menu.Break_On_Cookie=Interrompi al cookie '%S'
+cookies.menu.tooltip.Break_On_Cookie=Interrompe al cookie '%S' se eliminato o modificato
+# used when user right clicks on a cookie with existing breakpoint.
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+cookies.menu.Edit_Breakpoint_Condition=Modifica la condizione per il punto di arresto
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+# DTD strings converted (main Firecokie UI, see fireCookie.xul)
+cookies.Breakpoint_condition_evaluation_fails=Valutazione della condizione del punto d'arresto non riuscita
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+cookies.RemoveAll=Elimina i cookie
+cookies.Create=Crea cookie…
+# menu on Cookies toolbar.
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+cookies.Tools=Strumenti
+cookies.ToolsTooltip=Strumenti
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+cookies.ViewAll=Mostra i cookie…
+cookies.ViewAllTooltip=Apre la finestra di gestione dei cookie
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+# LOCALIZATION NOTE (cookies.Help, cookies.HelpTooltip, cookies.About,
+cookies.ViewExceptions=Mostra le eccezioni dei cookie…
+cookies.ViewExceptionsTooltip=Apre la finestra di gestione delle eccezioni dei cookie
+# cookies.AboutTooltip) Labels and tooltips for additional menu items in Tools menu.
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+cookies.Filter=Filtri
+cookies.FilterTooltip=Filtra la lista dei cookie in base alle opzioni selezionate
+cookies.filter.byPath=Mostra i cookie del percorso attuale
+cookies.filter.byPathTooltip=Mostra solo i cookie corrispondenti al percorso attuale
+cookies.filter.showRejectedCookies=Mostra i cookie bloccati
+cookies.filter.showRejectedCookiesTooltip=Mostra anche i cookie bloccati
+# presented on the Cookie toolbar.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+cookies.edit.title=Creazione/modifica del cookie
+cookies.edit.name.label=Nome:
+cookies.edit.domain.label=Server:
+cookies.edit.path.label=Percorso:
+cookies.edit.expire.label=Scadenza:
+cookies.edit.value.label=Valore:
+cookies.edit.secure.label=Cookie sicuro
+cookies.edit.httponly.label=Cookie HttpOnly
+cookies.edit.session.label=Permetti per la sessione
+cookies.edit.urlEncode.label=URL encode value
+# cookies.edit.session.label): Edit Cookie dialog UI
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/it/firebug-amo.properties b/locale/it/firebug-amo.properties
index 8c1be85..3ce6d06 100644
--- a/locale/it/firebug-amo.properties
+++ b/locale/it/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):\n
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843\n
-# They are not direct part of Firebug extension and so, you can\'t see them in Firebug\'s UI.\n
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)\n
-firebug.amo.summary1.6=Firebug si integra in Firefox aggiungendo diversi strumenti per la modifica, il debug e la verifica istantanea del codice CSS, HTML e JavaScript delle pagine webnnLa versione 1.6 di Firebug è disponibile per la versione 3.6 di Firefox o superiore
-firebug.amo.description=Firebug si integra in Firefox mettendo a disposizione dell\'utente diversi strumenti di sviluppo utilizzabili durante la navigazione. È possibile modificare, effettuare il debug e monitorare istantaneamente il codice CSS, HTML e JavaScript presente nelle pagine webnnVisitare il sito web di Firebug per accedere a documentazione, schermate e forum di discussione: http://getfirebug.com
-firebug.amo.developer.comments=In caso di problemi consultare le FAQ di Firebugnnhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):\n
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843\n
+# They are not direct part of Firebug extension and so, you can\'t see them in Firebug\'s UI.\n
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)\n
+firebug.amo.summary1.6=Firebug si integra in Firefox aggiungendo diversi strumenti per la modifica, il debug e la verifica istantanea del codice CSS, HTML e JavaScript delle pagine webnnLa versione 1.6 di Firebug è disponibile per la versione 3.6 di Firefox o superiore
+firebug.amo.description=Firebug si integra in Firefox mettendo a disposizione dell\'utente diversi strumenti di sviluppo utilizzabili durante la navigazione. È possibile modificare, effettuare il debug e monitorare istantaneamente il codice CSS, HTML e JavaScript presente nelle pagine webnnVisitare il sito web di Firebug per accedere a documentazione, schermate e forum di discussione: http://getfirebug.com
+firebug.amo.developer.comments=In caso di problemi consultare le FAQ di Firebugnnhttp://getfirebug.com/faq.html
diff --git a/locale/it/firebug-tracing.properties b/locale/it/firebug-tracing.properties
index 60f62c9..ee40682 100644
--- a/locale/it/firebug-tracing.properties
+++ b/locale/it/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):\n
-# Firebug tracing console menu items (located in Firebug\'s menu).\n
-Open_Firebug_Tracing=Apri la console di Firebug
-Always_Open_Firebug_Tracing=Apri sempre la console di Firebug
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).\n
-title.Tracing=Analisi di
-tracing.Show_Scope_Variables=Mostra variabili scope
-tracing.Show_Time=Mostra tempo
-tracing.tab.Stack=Stack
-tracing.tab.Exception=Eccezione
-tracing.tab.Properties=Proprietà
-tracing.tab.Scope=Scope
-tracing.tab.Response=Risposta
-tracing.tab.Source=Sorgente
-tracing.tab.Interfaces=Interfacce
-tracing.tab.Object=Oggetto
-tracing.tab.Event=Evento
-tracing.cmd.Clear=Svuota
-tracing.cmd.tip.Clear=Elimina tutti i messaggi
-tracing.cmd.Find=Trova
-tracing.cmd.tip.Find=Trova il testo nella console
-tracing.cmd.Bookmark=Segnalibri
-tracing.cmd.tip.Bookmark=Inserisci un segnalibro
-tracing.cmd.Restart=Riavvia Firefox
-tracing.cmd.tip.Restart=Riavvia Firefox
-tracing.cmd.Exit=Chiudi Firefox
-tracing.cmd.tip.Exit=Chiudi Firefox
-tracing.cmd.Save=Esporta…
-tracing.cmd.tip.Save=Esporta le registrazioni in un file di testo
-tracing.cmd.Load=Importa…
-tracing.cmd.tip.Load=Importa le registrazioni da un file di testo
-tracing.cmd.Expand_All=Espandi tutto
-tracing.cmd.Collapse_All=Contrai tutto
-tracing.cmd.Tools=Strumenti
-tracing.cmd.tip.Tools=Strumenti
-tracing.cmd.Clear_Browser_Cache=Svuota la cache
-tracing.cmd.tip.Clear_Browser_Cache=Elimina il contenuto della cache del browser
-tracing.cmd.Force_Garbage_Collector=Forza Garbage collector
-tracing.cmd.tip.Force_Garbage_Collector=Forza Garbage collector
-tracing.cmd.Open_Profile_Directory=Apri la cartella del profilo
-tracing.cmd.tip.Open_Profile_Directory=Apre la cartella del profilo
-tracing.option.A11Y_Description=Problemi di accessibilità
-tracing.option.ACTIVATION_Description=Attivazione di Firebug
-tracing.option.ACTIVITYOBSERVER_Description=Controllo attività di Firebug
-tracing.option.ANNOTATIONS_Description=Annotazioni sito web di Firebug
-tracing.option.BP_Description=Punti di arresto
-tracing.option.CACHE_Description=Sorgente cache
-tracing.option.COMMANDLINE_Description=Riga di comando e pop-up
-tracing.option.COMPILATION_UNITS_Description=Unità compilazione script
-tracing.option.CONSOLE_Description=Pannello Console
-tracing.option.CSS_Description=Analisi CSS
-tracing.option.DISPATCH_Description=Invio evento
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Eventi creazione UI di Firebug
-tracing.option.EDITOR_Description=Editor in linea e completamento automatico
-tracing.option.ERRORLOG_Description=Registro degli errori JS, CSS, XML, etc
-tracing.option.ERRORS_Description=Errori interni di Firebug
-tracing.option.EVAL_Description=Valutazione script
-tracing.option.FBS_BP_Description=Servizio punti di arresto di Firebug
-tracing.option.FBS_CREATION_Description=Servizio creazione script di Firebug
-tracing.option.FBS_ERRORS_Description=Servizio errori di Firebug
-tracing.option.FBS_FINDDEBUGGER_Description=Servizio debugger ricerca di Firebug
-tracing.option.FBS_FUNCTION_Description=Servizio funzione di Firebug
-tracing.option.FBS_JSDCONTEXT_Description=Servizio contesto debugger JavaScript di Firebug
-tracing.option.FBS_SRCUNITS_Description=Servizio unità sorgente di Firebug
-tracing.option.FBS_STEP_Description=Servizio debugger JavaScript incrementale di Firebug
-tracing.option.FBS_TRACKFILES_Description=Servizio file tracciati di Firebug
-tracing.option.FUNCTION_NAMES_Description=Nomi funzione JavaScript
-tracing.option.HISTORY_Description=Cronologia navigazione di Firebug
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=Controllo richieste HTTP
-tracing.option.INFOTIP_Description=Tooltip
-tracing.option.INITIALIZE_Description=Inizializzazione di Firebug
-tracing.option.INSPECT_Description=Analisi
-tracing.option.JSONVIEWER_Description=Visualizzatore JSON
-tracing.option.LINETABLE_Description=Linea tabella dello script
-tracing.option.LOCALE_Description=Localizzazione
-tracing.option.LOCATIONS_Description=Percorso sorgente
-tracing.option.NET_Description=Pannello Net
-tracing.option.NET_EVENTS_Description=Eventi rete
-tracing.option.OPTIONS_Description=Opzioni di Firebug
-tracing.option.PANELS_Description=Pannelli
-tracing.option.SHORTCUTS_Description=Scorciatoie da tastiera
-tracing.option.SOURCEFILES_Description=File sorgente JavaScript
-tracing.option.SPY_Description=Controllo richieste XMLHttp
-tracing.option.STACK_Description=Stack chiamata JavaScript
-tracing.option.STORAGE_Description=Impostazioni memorizzazione
-tracing.option.SVGVIEWER_Description=Visualizzatore SVG
-tracing.option.FONTS_Description=Informazioni sui font e visualizzatore font
-tracing.option.TOOLTIP_Description=Tooltip pulsante avvio
-tracing.option.TOPLEVEL_Description=JavaScript di primo livello
-tracing.option.UI_LOOP_Description=Interfaccia utente debug JavaScript
-tracing.option.WINDOWS_Description=Controllo finestre/schede di Firebug
-tracing.option.XMLVIEWER_Description=Visualizzatore XML
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):\n
+# Firebug tracing console menu items (located in Firebug\'s menu).\n
+Open_Firebug_Tracing=Apri la console di Firebug
+Always_Open_Firebug_Tracing=Apri sempre la console di Firebug
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).\n
+title.Tracing=Analisi di
+tracing.Show_Scope_Variables=Mostra variabili scope
+tracing.Show_Time=Mostra tempo
+tracing.tab.Stack=Stack
+tracing.tab.Exception=Eccezione
+tracing.tab.Properties=Proprietà
+tracing.tab.Scope=Scope
+tracing.tab.Response=Risposta
+tracing.tab.Source=Sorgente
+tracing.tab.Interfaces=Interfacce
+tracing.tab.Object=Oggetto
+tracing.tab.Event=Evento
+tracing.cmd.Clear=Svuota
+tracing.cmd.tip.Clear=Elimina tutti i messaggi
+tracing.cmd.Find=Trova
+tracing.cmd.tip.Find=Trova il testo nella console
+tracing.cmd.Bookmark=Segnalibri
+tracing.cmd.tip.Bookmark=Inserisci un segnalibro
+tracing.cmd.Restart=Riavvia Firefox
+tracing.cmd.tip.Restart=Riavvia Firefox
+tracing.cmd.Exit=Chiudi Firefox
+tracing.cmd.tip.Exit=Chiudi Firefox
+tracing.cmd.Save=Esporta…
+tracing.cmd.tip.Save=Esporta le registrazioni in un file di testo
+tracing.cmd.Load=Importa…
+tracing.cmd.tip.Load=Importa le registrazioni da un file di testo
+tracing.cmd.Expand_All=Espandi tutto
+tracing.cmd.Collapse_All=Contrai tutto
+tracing.cmd.Tools=Strumenti
+tracing.cmd.tip.Tools=Strumenti
+tracing.cmd.Clear_Browser_Cache=Svuota la cache
+tracing.cmd.tip.Clear_Browser_Cache=Elimina il contenuto della cache del browser
+tracing.cmd.Force_Garbage_Collector=Forza Garbage collector
+tracing.cmd.tip.Force_Garbage_Collector=Forza Garbage collector
+tracing.cmd.Open_Profile_Directory=Apri la cartella del profilo
+tracing.cmd.tip.Open_Profile_Directory=Apre la cartella del profilo
+tracing.option.A11Y_Description=Problemi di accessibilità
+tracing.option.ACTIVATION_Description=Attivazione di Firebug
+tracing.option.ACTIVITYOBSERVER_Description=Controllo attività di Firebug
+tracing.option.ANNOTATIONS_Description=Annotazioni sito web di Firebug
+tracing.option.BP_Description=Punti di arresto
+tracing.option.CACHE_Description=Sorgente cache
+tracing.option.COMMANDLINE_Description=Riga di comando e pop-up
+tracing.option.COMPILATION_UNITS_Description=Unità compilazione script
+tracing.option.CONSOLE_Description=Pannello Console
+tracing.option.CSS_Description=Analisi CSS
+tracing.option.DISPATCH_Description=Invio evento
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Eventi creazione UI di Firebug
+tracing.option.EDITOR_Description=Editor in linea e completamento automatico
+tracing.option.ERRORLOG_Description=Registro degli errori JS, CSS, XML, etc
+tracing.option.ERRORS_Description=Errori interni di Firebug
+tracing.option.EVAL_Description=Valutazione script
+tracing.option.FBS_BP_Description=Servizio punti di arresto di Firebug
+tracing.option.FBS_CREATION_Description=Servizio creazione script di Firebug
+tracing.option.FBS_ERRORS_Description=Servizio errori di Firebug
+tracing.option.FBS_FINDDEBUGGER_Description=Servizio debugger ricerca di Firebug
+tracing.option.FBS_FUNCTION_Description=Servizio funzione di Firebug
+tracing.option.FBS_JSDCONTEXT_Description=Servizio contesto debugger JavaScript di Firebug
+tracing.option.FBS_SRCUNITS_Description=Servizio unità sorgente di Firebug
+tracing.option.FBS_STEP_Description=Servizio debugger JavaScript incrementale di Firebug
+tracing.option.FBS_TRACKFILES_Description=Servizio file tracciati di Firebug
+tracing.option.FUNCTION_NAMES_Description=Nomi funzione JavaScript
+tracing.option.HISTORY_Description=Cronologia navigazione di Firebug
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=Controllo richieste HTTP
+tracing.option.INFOTIP_Description=Tooltip
+tracing.option.INITIALIZE_Description=Inizializzazione di Firebug
+tracing.option.INSPECT_Description=Analisi
+tracing.option.JSONVIEWER_Description=Visualizzatore JSON
+tracing.option.LINETABLE_Description=Linea tabella dello script
+tracing.option.LOCALE_Description=Localizzazione
+tracing.option.LOCATIONS_Description=Percorso sorgente
+tracing.option.NET_Description=Pannello Net
+tracing.option.NET_EVENTS_Description=Eventi rete
+tracing.option.OPTIONS_Description=Opzioni di Firebug
+tracing.option.PANELS_Description=Pannelli
+tracing.option.SHORTCUTS_Description=Scorciatoie da tastiera
+tracing.option.SOURCEFILES_Description=File sorgente JavaScript
+tracing.option.SPY_Description=Controllo richieste XMLHttp
+tracing.option.STACK_Description=Stack chiamata JavaScript
+tracing.option.STORAGE_Description=Impostazioni memorizzazione
+tracing.option.SVGVIEWER_Description=Visualizzatore SVG
+tracing.option.FONTS_Description=Informazioni sui font e visualizzatore font
+tracing.option.TOOLTIP_Description=Tooltip pulsante avvio
+tracing.option.TOPLEVEL_Description=JavaScript di primo livello
+tracing.option.UI_LOOP_Description=Interfaccia utente debug JavaScript
+tracing.option.WINDOWS_Description=Controllo finestre/schede di Firebug
+tracing.option.XMLVIEWER_Description=Visualizzatore XML
diff --git a/locale/it/firebug.properties b/locale/it/firebug.properties
index 9bb9d63..e49069f 100644
--- a/locale/it/firebug.properties
+++ b/locale/it/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.\n
-# %S Title of the associated web page.\n
-# examples: Firebug - Google\n
-WindowTitle=Firebug - %S
-# Panel titles\n
-Panel-console=Console
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Net
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Script
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Stile
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Elaborato
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Layout
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Analizza
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Punti di arresto
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Stack
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Scope
-firebug.DetachFirebug=Apri Firebug in finestra separata
-firebug.AttachFirebug=Unisci Firebug alla finestra del browser
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.\n
-# If there is no Firebug translation for the current browser locale, this value\n
-# will be used instead of the one in chrome://global/locale/intl.properties\n
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals\n
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semi-colon list of plural forms.\n
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals\n
-# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.\n
-# Displays number of pages with Firebug activated.\n
-# #1 number of Firebug instances activated\n
-# example: 2 Total Firebugs\n
-plural.Total_Firebugs2=%1$S istanza di Firebug attiva;%1$S istanze di Firebug attive
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in \'list of all panels\'\n
-# menu (available on Firebug\'s tab bar).\n
-# Console panel options.\n
-startbutton.tip.deactivated=Deactivated
-# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,\n
-# message, etc. within a source of a web page.\n
-# #1 File name, #2 Line number\n
-# examples: somePage.htm (line 64)\n
-# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.\n
-panel.status=%S: %S
-inBrowser=Firebug è aperta nel browser
-minimized=Firebug è ridotta ad icona
-enablement.for_all_pages=per tutte le pagine web
-enablement.on=In funzione
-enablement.off=Non in funzione
-enablement.Panel_activation_status=Panel activation status:
-none=Chiusa
-Firebug_-_inactive_for_current_website=Firebug è disattivata per il sito web attuale
-Activate_Firebug_for_the_current_website=Attiva Firebug per il sito web attuale
-Minimized=Ridotta ad icona
-Minimize_Firebug=Riduci ad icona
-On_for_all_web_pages=Attiva per tutte le pagine web
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Svuota lista di attivazione
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Posizione UI di Firebug
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# For example, right clicking on an element in the HTML panel offers an action to inspect\n
-# clicked element in the DOM panel (tab).\n
-firebug_options=Opzioni di Firebug
-# #1 Target panel title\n
-# examples: Inspect in DOM Tab\n
-firebug.Show_All_Panels=Mostra tutti i pannelli
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug\n
-ShowJavaScriptErrors=Mostra errori JavaScript
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Mostra avvisi JavaScript
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Mostra errori CSS
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Mostra analisi dello stack con errori
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Mostra richieste XMLHttp
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Mostra errori chrome
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Mostra messaggi chrome
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Mostra errori esterni
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Mostra errori di rete
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Mostra avvisi accurati (penalizza le prestazioni)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Cronologia della riga di comando
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Mostra suggerimenti per il completamento
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Asserzione errata
-# do not translate.\n
-# #1 jsdIScript.tag\n
-# HTML panel context menu items.\n
-# Quick Info Box\n
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume\n
-Line=%S (riga %S)
-LineAndCol=%S (linea %S, col %S)
-InstanceLine=%S #%S (riga %S)
-StackItem=%S (%S riga %S)
-SystemItem=<Sistema>
-# button that are used when the HTML panel is currently selected. The button allows stopping\n
-# JS execution when DOM of the current page is modified.\n
-# LOCALIZATION NOTE (html.label.Expand/Contract_All): Used within the HTML for a context\n
-# menu item. The user can expand/contract the element together with all its children to\n
-# quickly see the entire hierarchical structure or collapse it.\n
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(nessun nome)
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange): Used within the DOM panel to create\n
-# a \'property breakpoint\'. Right click on an property of an object. The label is also\n
-# used for the \'break on next button\' (available on the toolbar).\n
-jsdIScript=%S jsdIScript
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the\n
-# \'break on next button\'\n
-# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allows\n
-ShowFullText=Mostra tutto il testo
-html.option.tip.Show_Full_Text=Don't crop element contents
-# editing an existing HTML element attribute.\n
-# #1 Name of the clicked attribute.\n
-# examples: Edit Attribute \"onclick\"...\n
-ShowWhitespace=Mostra whiteSpace
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allows\n
-# deleting an existing HTML element attribute.\n
-ShowComments=Mostra commenti
-html.option.tip.Show_Comments=Show comment nodes
-# #1 Name of the clicked attribute.\n
-# examples: Delete Attribute \"onclick\"...\n
-# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.\n
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# that has been inherited. Used in the Style side panel (under HTML panel).\n
-# examples: Inherited from table.tabView\n
-# LOCALIZATION NOTE (css.fontFamilyPreview): This description is displayed in the CSS panel\n
-HighlightMutations=Evidenzia modifiche
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# when the mouse is over a font name,in a font-family property\n
-# LOCALIZATION NOTE (css.EmptyStyleSheet): This description is displayed in the CSS panel\n
-# in case there are no stylesheets attached to the current page.\n
-ExpandMutations=Espandi modifiche
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# The text between <a> and </a> is displayed as a link.\n
-# LOCALIZATION NOTE (css.EmptyElementCSS2): This description is displayed in the Style side panel\n
-# (available within the HTML panel) in case there are no CSS rules for the selected element.\n
-ScrollToMutations=Visualizza modifiche
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# The text between <a> and </a> is displayed as a link.\n
-# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.\n
-# Allows to edit an existing CSS rule property.\n
-ShowQuickInfoBox=Attiva pop-up informazioni principali
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# %S Name of the clicked property\n
-# examples: Edit \"background-color\"...\n
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.\n
-ShadeBoxModel=Sfuma Box model
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Visualizza
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Nuovo attributo
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Elimina elemento
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Elimina nodo
-html.Delete_Node=Delete the node from the tree
-# Allows to disable an existing CSS rule property.\n
-quickInfo=Informazioni principali
-computedStyle=Stile elaborato
-# %S Name of the clicked property\n
-# examples: Disable \"background-color\"\n
-# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.\n
-html.Break_On_Mutate=Interrompi alla modifica
-html.Disable_Break_On_Mutate=Non interrompere alla modifica
-html.label.Break_On_Text_Change=Interrompi alla modifica del testo
-html.label.HTML_Breakpoints=Punti di arresto HTML
-html.label.Break_On_Attribute_Change=Interrompi al cambio di attributo
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Interrompi all\'aggiunta/eliminazione di un elemento figlio
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Interrompi all\'eliminazione di un elemento
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# Allows to delete an existing CSS rule property.\n
-# %S Name of the clicked property\n
-# examples: Delete \"background-color\"\n
-# Console context menu labels.\n
-html.label.Expand/Contract_All=Espandi/contrai tutto
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-#xxxHonza: remove as soon as backporting into 1.7 finishes\n
-#see script.Disable_Break_On_Next\n
-# LOCALIZATION NOTE do not translate, no longer used(?)\n
-dom.label.breakOnPropertyChange=Interrompi alla modifica della proprietà
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# Breakpoints side panel\n
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons\n
-dom.disableBreakOnPropertyChange=Non interrompere alla modifica della proprietà
-dom.label.DOM_Breakpoints=Punti di arresto DOM
-# within balloon popup dialog. This dialog appears when debugger halts at a breakpoint or at\n
-# a \'debugger\' keyword.\n
-# Continue: allows to resume the debugger\n
-# Disable: allows to disable the current \'debugger;\' keyword used in the Javascript source.\n
-EditAttribute=Modifica attributo \"%S\"
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# Script panel, xxxHonza: should be removed as soon as backporting into 1.7 is finished.\n
-# See firebug.StepOver, etc.\n
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,\n
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,\n
-DeleteAttribute=Elimina attributo \"%S\"
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# ShowInlineEventHandlers):\n
-# Labels for DOM panel options (located in tab\'s min menu)\n
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):\n
-InheritedFrom=Ereditato da
-SothinkWarning=L\'estensione Sothink SWF Catcher impedisce il corretto funzionamento di Firebug
-# Labels used to describe layout properties a the selected HTML element.\n
-# Used in the Layout side panel under HMTL panel.\n
-css.fontFamilyPreview=Cantami o Diva del pelide Achille l\'ira funesta. 1234567890
-# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side panel\n
-# under HTML panel.\n
-# Net panel\n
-css.EmptyStyleSheet=Non sono presenti regole di stile. È possibile <a>crearne una</a>
-# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)\n
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,\n
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,\n
-css.EmptyElementCSS=Questo elemento non contiene regole di stile. È possibile <a>crearne una</a>
-EditStyle=Modifica stile dell\'elemento
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Nuova regola…
-css.tip.New_Rule=Add a new rule
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,\n
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,\n
-# net.header.Remote_IP_Tooltip):\n
-# Labels and tooltips for a headers displayed on top of the Net panel.\n
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.\n
-# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s context\n
-# menu for breaking on a XHR.\n
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Nuova proprietà
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the\n
-# Net panel\'s Headers tab (displayed if you expand a network request). The label is used\n
-# for a button that switches the view between \"show raw source code\" and \"pretty formated header\n
-# values\".\n
-EditProp=Modifica \"%S\"
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (net.filter.Media): Label for net panel filter (used on the Net panel toolbar)\n
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about\n
-# a network request (displayed when a net panel entry is expanded). The content of\n
-# this tab displays sent data (related to a HTTP send method).\n
-DisableProp=Disattiva \"%S\"
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):\n
-# Label used in the Net panel for detailed info about a network request (displayed\n
-# when a net panel entry is expanded)\n
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the\n
-DeleteProp=Elimina \"%S\"
-css.tip.Delete_Prop=Delete the property "%S"
-# Net panel for JSON responses Allows to sort alphabetically.\n
-BreakOnThisError=Interrompi per questo errore
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Interrompi per tutti gli errori
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) used in the net & console panel when copying JSON replies\n
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net panel\n
-# (expand an entry in the panel and select Headers tab).\n
-TrackThrowCatch=Rileva Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Usa l\'ultima riga del sorgente per i nomi eval()
-UseMD5ForEvalName=Usa MD5 per i nomi eval()
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semi-colon list of plural forms.\n
-Breakpoints=Punto di arresto
-ErrorBreakpoints=Errore dei punti di arresto
-LoggedFunctions=Funzioni registrate
-EnableAllBreakpoints=Attiva tutti i punti di arresto
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Disattiva tutti i punti di arresto
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Elimina tutti i punti di arresto
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Ci si fermerà a questo punto di arresto solo se la seguente espressione è vera:
-# A message displayed in the Net panel when some entries must be removed since maximum number\n
-# of entries has been reached.\n
-# #1 the number of entries removed\n
-breakpoints.Remove_Breakpoint=Rimuovi Breakpoint
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Disabilita Breakpoint
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Abilita Breakpoint
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# example: Firebug\'s log limit has been reached. 150 entries not shown.\n
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit\n
-# has been reached. Informing the user what preference should be changed to modify the limit.\n
-# %S Name of a preference.\n
-# examples: In order to change the limit modify: firebug.extensions.console.logLimit\n
-script.balloon.Continue=Continua
-script.balloon.Disable=Disattiva
-ScriptsFilterStatic=Mostra script static
-ScriptsFilterEval=Mostra script static ed eval
-ScriptsFilterEvent=Mostra script static ed event
-ScriptsFilterAll=Mostra script static, eval ed event
-ScriptsFilterStaticShort=static
-ScriptsFilterEvalShort=eval
-ScriptsFilterEventShort=event
-ScriptsFilterAllShort=tutti
-# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.\n
-# (result of javascript profiler tool). Represents a verb.\n
-# LOCALIZATION NOTE (plural.Profile_Time2): Semi-colon list of plural forms.\n
-# Used as a caption for reported profile info (result of javascript profiler tool).\n
-callstack.Expand_All=Espandi tutto
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Comprimi tutto
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# #1 number of milliseconds\n
-# #2 number of calls (plural)\n
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# example: (#1ms, #2 calls)\n
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header\n
-# (name of a report column). In order to see this, select the Console panel start profiling\n
-# by clicking the Profile button and stop it by clicking again. The report is logged into the\n
-ShowUserProps=Mostra proprietà definite dall\'utente
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Mostra funzioni definite dall\'utente
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Mostra proprietà DOM
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Mostra funzioni DOM
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Mostra costanti DOM
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Mostra gestori evento in linea
-ShowInlineEventHandlersTooltip=Mostra i gestori dell\'evento in linea disponibili non associati ad una funzione
-ShowOwnProperties=Non mostrare Prototype chain
-ShowOwnPropertiesTooltip=Non mostrare Prototype chain
-ShowEnumerableProperties=Mostra solo proprietà enumerabili
-ShowEnumerablePropertiesTooltip=Mostra solo le proprietà enumerabili
-NoMembersWarning=Non ci sono proprietà per questo oggetto
-NewWatch=Nuova espressione di controllo
-# console panel. Make sure Script panel is enabled.\n
-# Support for clipboard actions.\n
-AddWatch=Aggiungi espressione
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Script\n
-# panel when clicking a function object.\n
-CopySourceCode=Copia sorgente
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Inserire #<numero> per passare alla riga relativa
-CopyValue=Copia valore
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Copia nome
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Copia percorso
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Nuova proprietà
-EditProperty=Modifica proprietà
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Modifica variabile
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Modifica espressione
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Elimina proprietà
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Elimina espressione
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# %S Name of the function\n
-# Log Calls to \"getData\"\n
-SetBreakpoint=Imposta punto di arresto
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): A tooltip used for a button on main\n
-# Firebug toolbar. This button allows to open the command line even within other panels.\n
-# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console panel\n
-EditBreakpointCondition=Modifica la condizione per il punto di arresto
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=Non ci sono punti di arresto in questa pagina
-# if specific method is not supported.\n
-# %S Name of a not supported method.\n
-# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console panel\n
-Only_Show_Applied_Styles=Mostra solo stili applicati
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# when a not supported method is used on the command line.\n
-# %S Name of a not supported method.\n
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):\n
-Show_User_Agent_CSS=Mostra user agent CSS
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# Tooltip for the \"Break on... \" button used when the Console panel is selected.\n
-# LOCALIZATION NOTE (console.Use_TAB_and_arrow_keys) \n
-# Top of the completion popup in the command line\n
-# Console strings used when JavaScript is not available\n
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded)\n
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# Used by the console panel for arrays. If the user moves the mouse over an array bracket,\n
-# all elements in the array are highlighted on the page. If there are too many elements\n
-# in the array, this tooltip is displayed instead.\n
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the console\n
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# in cases when the current page is an XML document. The text between <a> and </a> is a link.\n
-# that cause to switch into HTML rendering of the document.\n
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,\n
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):\n
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mouse\n
-# over a Size displayed within the Net panel. \'Total Sent\' and \'Total Received\' info includes\n
-# even sent and received heades size.\n
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net\n
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# panel (inside the Post tab of an expanded request entry). The message informs the user that\n
-# posted data reached Firebug\'s size limit and only part of it is displayed in the UI.\n
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):\n
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# Labels for Net panel\'s options.\n
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):\n
-# Net panels\'s option. If set to true, the net panel displays also response coming from\n
-# BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCache\n
-Expand_Shorthand_Properties=Espandi proprietà abbreviate
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):\n
-# Tooltip used for a \"break-on\" button on Firebug\'s toolbar. Used in context of Script panel\n
-# (breakin on next executed Javascript statemen)\n
-# LOCALIZATION NOTE (plural.Request_Count2): Semi-colon list of plural forms.\n
-Sort_alphabetically=Ordina alfabeticamente
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# A label used in the Net panel. Displays number of HTTP requests executed by the current page.\n
-# #1 number of requests\n
-# example: 21 requests\n
-Show_Mozilla_specific_styles=Mostra stili specifici Mozilla
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (plural.Error_Count2): Semi-colon list of plural forms.\n
-# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.\n
-# #1 number of errors\n
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Premere uno o più tasti per filtrare la lista
-# example: 111 Errors\n
-# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.\n
-# With: the scope inside of the with(obj) {} statement\n
-LayoutPadding=padding
-LayoutBorder=bordo
-LayoutMargin=margine
-LayoutPosition=posizione
-LayoutAdjacent=adiacente
-position=posizione
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };\n
-# Window: the scope inside of a Javascript window object.\n
-# Net panel timing info labels\n
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):\n
-ShowRulers=Mostra righelli e guide
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.\n
-Loading=Caricamento in corso…
-Headers=Intestazioni
-# LOCALIZATION NOTE (search.Case_Sensitive, search.Case_Insensitive): Label used within\n
-# an options menu for the search box. This menu is displayed if the search box is focused.\n
-net.tip.Clear=Clear the request list
-#A11y Chrome Labels (not visible, spoken by screen readers)\n
-#A11y panelNode labels (not visible, spoken by screen readers)\n
-net.header.Reset_Header=Resetta intestazione
-net.header.tip.Reset_Header=Reset the header display
-#A11y Domplate labels (not visible, spoken by screen readers)\n
-# LOCALIZATION NOTE\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.\n
-# Describe contents of inline editor fields\n
-# LOCALIZATION NOTE (a11y.labels.overridden):\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.\n
-net.header.URL=URL
-net.header.URL_Tooltip=URL richiesto e metodo HTTP utilizzato
-net.header.Status=Stato
-net.header.Status_Tooltip=Stato della risposta ricevuta
-net.header.Domain=Dominio
-net.header.Domain_Tooltip=Dominio della richiesta effettuata
-net.header.Size=Dimensione
-net.header.Size_Tooltip=Dimensione della risposta ricevuta
-net.header.Timeline=Sequenza temporale
-net.header.Timeline_Tooltip=Sequenza temporale dettagliata inerente alla risposta
-net.header.Local_IP=IP locale
-net.header.Local_IP_Tooltip=Indirizzo IP locale e porta relativi alla richiesta
-net.header.Remote_IP=IP remoto
-net.header.Remote_IP_Tooltip=Indirizzo IP remoto e porta relativi alla richiesta
-net.header.Protocol=Protocollo
-net.header.Protocol_Tooltip=Il protocollo dell\'URL utilizzato per individuare la risorsa nel Web.
-# indicates style property is overridden by selector with higher specificity\n
-net.label.XHR_Breakpoints=Punti di arresto XHR
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.\n
-net.label.Break_On_XHR=Interrompi per le richieste XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# Existence and state of a breakpoint\n
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly\n
-# visible in the UI, intended for screen readers.\n
-net.headers.view_source=Visualizza come testo semplice
-net.headers.pretty_print=Visualizza come testo formattato
-# #1 Line number, #2 Function name, #3 File name\n
-net.filter.Media=File multimediali
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly\n
-# visible in the UI, intended for screen readers.\n
-# Describes the match found when performing a console panel search \n
-Post=Post
-Put=Put
-# #1 %S String key the use is looking for. #2 number of rows that contain the matched text\n
-# examples: Match found for \"test\" in 17 log rows\n
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly\n
-Response=Risposta
-URLParameters=Parametri
-Cache=Cache
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Informazioni generali
-fontviewer.Meta_Data=Meta dati
-fontviewer.view_source=visualizza sorgente
-fontviewer.Preview=Anteprima
-fontviewer.view_characters=visualizza caratteri
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=visualizza esempio
-fontviewer.uniqueid=ID Univoco
-fontviewer.vendor=Società
-fontviewer.license=Licenza
-fontviewer.description=Descrizione
-fontviewer.copyright=Copyright
-fontviewer.credits=Crediti
-fontviewer.trademark=Marchi depositati
-fontviewer.licensee=Licenziatario
-fontviewer.extension=Estensione
-fontviewer.pangram=Cantami o Diva del pelide Achille l\'ira funesta
-# visible in the UI, intended for screen readers.\n
-# Describes the match found when performing a script panel search \n
-jsonviewer.sort=Ordina alfabeticamente
-jsonviewer.do_not_sort=Non ordinare
-# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found in\n
-# examples: Match found for \"window.alert\" on line 322 in utilities.js\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly\n
-# visible in the UI, intended for screen readers.\n
-net.jsonviewer.Copy_JSON=Copia \"%S\" come JSON
-# Describes the match found when performing an HTML panel search (if it is found in an element node) \n
-# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched element\n
-RequestHeaders=Intestazioni di richiesta
-ResponseHeaders=Intestazioni di risposta
-CachedResponseHeaders=Intestazioni di Risposta Dalla Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# examples: Match found for \"obj\" in object element at /html/body/object[2]\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly\n
-# visible in the UI, intended for screen readers.\n
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node) \n
-# #1 Search string that was matched. #2 Attribute name #3 attribute value \n
-# #4 the HTML element name containing. #5 XPATH string specifying the matched element\n
-# examples: Match found for \"abindex\" in tabindex=\"0\" in span element at /html/body/span[2]\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly\n
-plural.Limit_Exceeded2=È stato raggiunto il limite di elementi registrabili. %1$S elemento non verrà visualizzato;È stato raggiunto il limite di elementi registrabili. %1$S elementi non verranno visualizzati
-LimitPrefs=Impostazioni
-# visible in the UI, intended for screen readers.\n
-# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) \n
-# #1 Search string that was matched. #2 element\'s text content \n
-# #3 the HTML element name containing. #4 XPATH string specifying the matched element\n
-LimitPrefsTitle=Per aumentare il limite modificare %S
-Refresh=Ricarica
-panel.tip.Refresh=Refresh the panel display
-# examples: Match found for \"Firebug Rocks!\" in h2 element at /html/body/h2[2]\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly\n
-OpenInTab=Apri in nuova scheda
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Apri risposta in nuova scheda
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# visible in the UI, intended for screen readers.\n
-# Describes the match found when performing a CSS panel search (if it is found in a selector) \n
-Profile=Profilazione
-ProfilerStarted=La profilazione è in corso. Fare di nuovo clic su \'Profila\' per visualizzare il resoconto
-# #1 Search string that was matched. #2 selector in which the match was found \n
-# examples: Match found for \"main\" in #mainContent h2 {\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly\n
-# visible in the UI, intended for screen readers.\n
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration) \n
-plural.Profile_Time2=(%1$Sms, %2$S chiamata);(%1$Sms, %2$S chiamate)
-NothingToProfile=Nessuna attività da profilare
-PercentTooltip=Percentuale di tempo impiegato per l\'esecuzione della funzione
-CallsHeaderTooltip=Numero di volte in cui la funzione è stata chiamata
-OwnTimeHeaderTooltip=Tempo di esecuzione della funzione, escluse le chiamate nidificate
-TimeHeaderTooltip=Tempo di esecuzione della funzione, incluse le chiamate nidificate
-AvgHeaderTooltip=Tempo medio, incluse le chiamate di funzione
-MinHeaderTooltip=Tempo minimo, incluse le chiamate di funzione
-MaxHeaderTooltip=Tempo massimo, incluse le chiamate di funzione
-ProfileButton.Enabled.Tooltip=Tempo di esecuzione della profilazione JavaScript
-ProfileButton.Disabled.Tooltip=Tempo di esecuzione della profilazione JavaScript (attivare il pannello Script)
-Function=Funzione
-Percent=Percentuale
-# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to \n
-# examples: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly\n
-# visible in the UI, intended for screen readers.\n
-Calls=Chiamate
-OwnTime=Tempo proprio
-Time=Tempo
-Avg=Medio
-Min=Min
-Max=Max
-File=File
-# Describes the match found when performing a DOM panel search \n
-Copy=Copia
-Cut=Taglia
-Remove=Elimina
-Delete=Delete
-Paste=Incolla
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Copia innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Copia XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Copia percorso CSS
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# #1 Search string that was matched. #2 DOM property in which the match was found \n
-# examples: Match found for \"time\" in _starttime : 1257324992232 (Number)\n
-CopyLocation=Copia indirizzo
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Copia indirizzo con parametri
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Copia intestazioni di richiesta
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Copia intestazioni di risposta
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Copia elemento body di risposta
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly\n
-# visible in the UI, intended for screen readers.\n
-CopyError=Copia errore
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# Describes the match found when performing a Net panel search \n
-# #1 Search string that was matched. #2 File name associated to the row in which the match was found. \n
-CopySource=Copia funzione
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# #3 Column in which the match was found #4. Column value \n
-# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 ms\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly\n
-# visible in the UI, intended for screen readers.\n
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)\n
-ShowCallsInConsole=Registra chiamate in \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# #1 Search string that was matched. #2 Column value in which the match was found \n
-# examples: Match found for \"05\" in net summary row: 4.05s\n
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly\n
-ShowEventsInConsole=Registra eventi
-html.tip.Show_Events_In_Console=Log event information to the console
-# visible in the UI, intended for screen readers.\n
-# Indicates that the searched string was not matched \n
-panel.Enabled=Attiva
-panel.tip.Enabled=Toggle the panel activation
-# %S Search string that was matched. \n
-# examples: No matched found for \"wefkhwefkgwekhjgjh\"\n
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):\n
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is\n
-# displayed containing the following message\n
-# Console messages.\n
-# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):\n
-console.MethodNotSupported=La console di Firebug non supporta \'%S\'
-# If Firebug is displayed in an external window (detached), but not active for the\n
-# currently selected Firefox tab, the following button label is used for an\n
-# activation button.\n
-commandline.MethodNotSupported=La riga di comando di Firebug non supporta \'%S\'
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):\n
-# An error message displayed in the Script panel when a source can\'t be displayed\n
-# for specific URL.\n
-commandline.CurrentWindow=Current window:
-# examples: Reload the page to get source for: http://www.example.com/script.js\n
-# examples: The resource from this URL is not text: http://www.example.com/script.js\n
-console.Disable_Break_On_All_Errors=Non interrompere per tutti gli errori
-console.Break_On_All_Errors=Interrompi per tutti gli errori
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,\n
-# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.\n
-console.Break_On_This_Error=Interrompi per questo errore
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):\n
-# Tooltips for back/forward buttons on the Script panel toolbar.\n
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):\n
-# This message is displayed within the Script panel if debugger is inactive during page load.\n
-console.JSDisabledInFirefoxPrefs=Gli JavaScript sono disattivati nelle opzioni di Firefox. Per utilizzare la finestra della console è necessario riattivarli (Strumenti -> Opzioni… -> Contenuti -> Attiva JavaScript)
-# The suggestion message represents an advice how to solve the problem.\n
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):\n
-# This message is displayed within the Script panel if javascript is not enabled.\n
-# The suggestion message represents an advice how to solve the problem.\n
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed on\n
-# the Script panel if Javascript is disabled. This button allows to enable it.\n
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):\n
-console.multiHighlightLimitExceeded=È stato superato il limite di elementi della lista evidenziabili nella paginanimpostato a %S nel parametro \'extensions.firebug.multiHighlightLimit\'
-# This message is displayed within the Script panel if javascript is not enabled for the current page.\n
-# The suggestion message represents an advice how to solve the problem.\n
-# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):\n
-commandline.disabledForXMLDocs=La riga di comando di Firebug è disattivata per le pagine XML. È possibile attivarla passando alla <a>visualizzazione come HTML</a>
-# This message is displayed within the Script panel if javascript is not enabled for the current page.\n
-# The suggestion message represents an advice how to solve the problem.\n
-#firebug.dtd\n
-# LOCALIZATION NOTE (firebug.Rerun, firebug.Continue, firebug.StepOver, firebug.StepInto,\n
-# firebug.StepOut, firebug.RunUntil)\n
-net.sizeinfo.Response_Body=Corpo della risposta
-net.sizeinfo.Post_Body=Corpo della richiesta Post
-net.sizeinfo.Total_Sent=Dati totali inviati
-net.sizeinfo.Total_Received=Dati totali ricevuti
-net.sizeinfo.Including_HTTP_Headers=Intestazioni HTTP incluse
-net.ActivationMessage=Il pannello Net è attivato. Le richieste precedenti all\'attivazione non verranno mostrate
-net.responseSizeLimitMessage=È stato raggiunto il limite di dimensione per le risposte. Fare clic <a>qui</a> per visualizzare l\'intera risposta in una nuova scheda
-# Labels used for debugger \'stepping\' buttons that are available in the Script panel.\n
-#editors.dtd\n
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,\n
-net.postDataSizeLimitMessage=È stato raggiunto il limite di dimensione della richiesta
-net.Break_On_XHR=Interrompi per le richieste XHR
-net.label.Parameters=Parametri
-net.label.Parts=Parti
-net.label.Source=Sorgente
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)\n
-# Used in the CSS panel for the Edit button.\n
-net.label.Resend=Re-invia
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayed\n
-# in the Console panel when the private browsing mode is on (in Firefox 4 it\'s Start\n
-net.option.Disable_Browser_Cache=Disattiva la cache del browser
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# Private Browsing mode)\n
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications): This label is used within\n
-# Script panel\'s tab menu. Represents an option that can be used to switch of these\n
-# notifications.\n
-net.option.Show_Paint_Events=Mostra Paint event
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayed\n
-# in a break notification balloon popup next to a checkbox.\n
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):\n
-net.option.Show_BFCache_Responses=Mostra le risposte di BFCache
-net.option.tip.Show_BFCache_Responses=Visualizza le risposte provenienti dalla cache \'back/forward\' di Firefox nel pannello Net
-# This message is displayed in a break notification popup when break on debugger; keyword happens.\n
-# The keyword can be disabled by creating a disabled breakpoint on the same line.\n
-# The other label is used for a tooltip on the action button. \n
-script.Break_On_Next=Interrompi al prossimo errore
-script.Disable_Break_On_Next=Interrompi al prossimo errore
-ShowHttpHeaders=Mostra intestazioni HTTP
-# LOCALIZATION NOTE (firebug.dom.noChildren): This message is displayed in the DOM panel\n
-# in cases where there are no children objects and so nothing to display.\n
-# LOCALIZATION NOTE (firebug.reps.more): This label is when displayed array/list has\n
-# more elements then it\'s displayed on the screen. \"...\" is automatically appended.\n
-plural.Request_Count2=%1$S richiesta;%1$S richieste
-FromCache=dalla cache
-StopLoading=Interrompi caricamento
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(dati molto grandi)
-ShowComputedStyle=Mostra stile elaborato
-StyleGroup-text=Testo
-StyleGroup-background=Sfondo
-StyleGroup-box=Box model
-StyleGroup-layout=Layout
-StyleGroup-other=Altro
-Dimensions=%S x %S
-# example: more...\n
-# LOCALIZATION NOTE (firebug.storage.totalItems): This label is used in the DOM panel\n
-# for local/session/global storage. It\'s informing the user about number of items in the storage.\n
-CopyColor=Copia colore
-css.tip.Copy_Color=Copy the color to the clipboard
-# #1 number of storage items\n
-# example: 1 item in Storage\n
-# example: 2 items in Storage\n
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties): This label is used by console.table\n
-CopyImageLocation=Copia indirizzo immagine
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Apri immagine in nuova scheda
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# method if an object is passed into it. Used in table header.\n
-# LOCALIZATION NOTE (firebug.completion.empty): This label is used in the command line\n
-# by auto-complete function. Displayed if there are no possible completions.\n
-OmitObjectPathStack=Ometti stack nella barra degli strumenti
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Carica sorgente originale
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):\n
-# This label is used in an image preview infotip within the HTML panel (hover over an IMG element)\n
-# when loading of given URL fails. The firebug.failedToPreviewObjectURL is specifically used\n
-Copy_Rule_Declaration=Copia dichiarazione della regola
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# for moz-filedata (HTML5),\n
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images\n
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):\n
-Copy_Style_Declaration=Copia dichiarazione di stile
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# Message logged into the Console panel when memory profiler session starts.\n
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):\n
-# Title for a group (logged into the Console panel) taht contains list of new objects\n
-# allocated within memory profiler session.\n
-plural.Error_Count2=%1$S errore;%1$S errori
-moduleManager.title=Il pannello %S è disattivato
-moduleManager.desc3=Per attivare/disattivare tutti i pannelli utilizzare il menu dell\'icona di Firebug nella barra di stato. Per attivare/disattivare un singolo pannello utilizzare il menu della scheda relativa facendo clic nel punto evidenziato in figura:
-moduleManager.Enable=Attiva il pannello
-Suspend_Firebug=Ferma Firebug
-Resume_Firebug=Avvia Firebug
-Reset_Panels_To_Disabled=Disattiva i pannelli
-Open_Console=Apri console
-Open_Console_Tooltip=Apri la console di Firebug
-Scope_Chain=Scope chain
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):\n
-# Message used within the console panel when memory profiler sessions is finished.\n
-# LOCALIZATION NOTE (firebug.Entire_Session): Label used within memory prfiler results\n
-With_Scope=With
-# to mark summary information for entire session.\n
-Call_Scope=Call
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Window
-Logs=Messaggi
-Options=Opzioni
-Copy_Stack=Copia stack
-Copy Exception=Copia eccezione
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Interruzione
-requestinfo.Resolving=Ricerca DNS
-requestinfo.Connecting=Connessione
-requestinfo.Sending=Invio dati
-requestinfo.Waiting=Attesa
-requestinfo.Receiving=Ricezione dati
-requestinfo.ContentLoad=Evento \'DOMContentLoaded\'
-requestinfo.WindowLoad=Evento \'load\'
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Tempo d\'avvio dall\'inizio della richiesta
-requestinfo.phases.label=Fasi d\'avvio della richiesta e tempo trascorso dall\'inizio della richiesta:
-requestinfo.timings.label=Intervallo di tempo tra gli eventi dall\'inizio della richiesta:
-search.Firebug_Search=Ricerca di Firebug
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Successivo
-search.tip.Next=Search for the next match
-search.Previous=Precedente
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Maiuscole/minuscole
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Indifferente se maiuscole/minuscole
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Tutti i file
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Usa espressioni regolari
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=Selettori CSS
-search.net.Headers=Intestazioni
-search.net.Parameters=Parametri
-search.net.Response_Bodies=Corpi delle risposte
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Mantieni
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Mostra tutti gli elementi registrati
-firebug.console.Errors=Errori
-firebug.console.Filter_by_Errors=Filtra per errori
-firebug.console.Warnings=Avvisi
-firebug.console.Filter_by_Warnings=Filtra per avvisi
-firebug.console.Info=Informazioni
-firebug.console.Filter_by_Info=Filtra per informazioni
-firebug.console.Debug_Info=Informazioni di debug
-firebug.console.Filter_by_Debug_Info=Filtra per informazioni di debug
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Apri Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Nascondi Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Attiva tutti i pannelli
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Disattiva tutti i pannelli
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Personalizza scorciatoie da tastiera…
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Opzioni
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Migliora visualizzazione degli elementi
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Ripristina le opzioni di Firebug
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Pagine web di Firebug
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Mostra conteggio errori
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Dimensione testo
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Aumenta
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Diminuisci
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Normale
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Sito web...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Documentazione...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Scorciatoie da tastiera...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Gruppo di discussione...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Segnalazione problemi...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Donazioni...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Informazioni su...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Cerca
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Reinserisci il comando
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Attiva/disattiva ispezione
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Attiva/disattiva pop-up informazioni principali
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Attiva/disattiva profilazione
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Porta in primo piano la riga di comando
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Porta in primo piano la barra di ricerca di Firebug
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Porta in primo piano la modifica delle espressioni
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Porta in primo piano l\'indirizzo
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Passa all\'oggetto successivo
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Passa all\'oggetto precedente
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Personalizza le scorciatoie da tastiera di Firebug
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Apri Firebug in finestra separata
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Passa al pannello di Firebug a sinistra
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Passa al pannello di Firebug a destra
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Apri Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Passa al pannello di Firebug precedente
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Svuota la console
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Apri la console di Firebug
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Indietro
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Avanti
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Aumenta la dimensione del testo
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Diminuisci la dimensione del testo
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Ripristina la dimensione del testo
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Selettore del pannello
-customizeShortcuts=Scorciatoie da tastiera di Firebug
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=Pannelli
-a11y.labels.firebug_panels=Pannelli di Firebug
-a11y.labels.firebug_side_panels=Pannelli laterali di Firebug
-a11y.labels.firebug_window=finestra di Firebug
-a11y.labels.firebug_status=stato di Firebug
-a11y.labels.reset=Ripristina
-a11y.labels.reset_shortcut=Ripristina la scorciatoia da tastiera %S
-aria.labels.inactive_panel=pannello non attivo
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=registra righe
-a11y.labels.call_stack=chiama stack
-a11y.labels.document_structure=struttura del documento
-a11y.labels.title_panel= pannello %S
-a11y.labels.title_side_panel= pannello laterale %S
-a11y.labels.cached=nella cache
-aria.labels.stack_trace=analisi stack
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=bordo
-a11y.layout.margin=margine
-a11y.layout.position=posizione
-a11y.layout.position_top=posizione in alto
-a11y.layout.position_right=posizione a destra
-a11y.layout.position_bottom=posizione in basso
-a11y.layout.position_left=posizione a sinistra
-a11y.layout.margin_top=margine in alto
-a11y.layout.margin_right=margine a destra
-a11y.layout.margin_bottom=margine in basso
-a11y.layout.margin_left=margine a sinistra
-a11y.layout.border_top=bordo in alto
-a11y.layout.border_right=bordo a destra
-a11y.layout.border_bottom=bordo in basso
-a11y.layout.border_left=bordo a sinistra
-a11y.layout.padding_top=padding in alto
-a11y.layout.padding_right=padding a destra
-a11y.layout.padding_bottom=padding in basso
-a11y.layout.padding_left=padding a sinistra
-a11y.layout.top=in alto
-a11y.layout.right=a destra
-a11y.layout.bottom=in basso
-a11y.layout.left=a sinistra
-a11y.layout.width=larghezza
-a11y.layout.height=altezza
-a11y.layout.size=dimensione
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=Premere Invio+Tab per modificare singoli valori
-a11y.labels.style_rules=regole dello stile
-aria.labels.inherited_style_rules=regole dello stile ereditate
-a11y.labels.computed_styles=stili elaborati
-a11y.labels.dom_properties=Proprietà DOM
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=editor in linea
-a11y.labels.value_for_attribute_in_element=valore per l\'attributo %S nell\'elemento %S
-a11y.labels.attribute_for_element=attributo per l\'elemento %S
-a11y.labels.text_contents_for_element=contenuti di testo per l\'elemento %S
-a11y.labels.defined_in_file=definito in %S
-a11y.labels.declarations_for_selector=dichiarazione di stile per il selettore \"%S\"
-a11y.labels.property_for_selector=Proprietà CSS per il selettore %S
-a11y.labels.value_property_in_selector=valore per la proprietà CSS %S nel selettore %S
-a11y.labels.css_selector=Selettore CSS
-a11y.labels.source_code_for_file=codice sorgente per il file %S
-a11y.labels.press_enter_to_add_new_watch_expression=Premere Invio per aggiungere una nuova espressione
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=overridden
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=contiene punti di arresto condizionati
-a11y.updates.has_disabled_break_point=contiene punti di arresto disattivati
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Esecuzione dello script sospesa alla riga %S per la funzione %S nel file %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=Corrispondenza trovata per \"%S\" in %S righe registrate
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=Corrispondenza trovata per \"%S\" alla riga %S del file %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=Corrispondenza trovata per \"%S\" nell\'elemento %S al percorso %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=Corrispondenza trovata per \"%S\" nell\'attributo %S=%S dell\'elemento %S al percorso %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=Corrispondenza trovata per \"%S\" nel contenuto testuale %S dell\'elemento %S al percorso %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=Corrispondenza trovata per \"%S\" nel selettore %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=Corrispondenza trovata per \"%S\" nella dichiarazione di stile %S nel selettore %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=Corrispondenza trovata per \"%S\" nella proprietà DOM %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=Corrispondenza trovata per \"%S\" in %S, %S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=Corrispondenza trovata per \"%S\": %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=Nessuna corrispondenza trovata per \"%S\"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Ripristinare tutte le opzioni di Firebug ai valori predefiniti?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Le modifiche al foglio di stile non verranno salvatenProcedere comunque?
-# Console messages
-warning.Console_must_be_enabled=È necessario attivare la console
-warning.Command_line_blocked?=Bloccare la riga di comando?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Ricaricare per attivare la finestra della console
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Ricaricare la pagina per visualizzare il sorgente del seguente URL:
-message.The_resource_from_this_URL_is_not_text=La risorsa disponibile al seguente URL non è testuale:
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Torna a questo pannello
-firebug.history.Stay_on_this_panel=Resta su questo pannello
-firebug.history.Go_forward_to_this_panel=Vai a questo pannello
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Indietro
-firebug.history.Go_forward=Avanti
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Il pannello Script non era attivato durante il caricamento della pagina
-script.suggestion.inactive_during_page_load2=<a>Ricaricare la pagina</a> per visualizzare il sorgente
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Gli JavaScript non sono attivati
-script.suggestion.javascript_not_enabled=Verificare nella scheda \'Contenuti\' delle opzioni di Firefox che la casella \'Attiva JavaScript\' sia selezionata
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Attiva gli JavaScript e ricarica la pagina
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Tutti gli script sono stati filtrati
-script.suggestion.all_scripts_filtered=Verificare le impostazioni degli script nella barra degli strumenti oppure l\'opzione \"Mostra sorgenti chrome\"
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=Non sono stati rilevati JavaScript in questa pagina
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Il debugger è già attivo
-script.suggestion.debugger_active=Il debugger è stato fermato ad un punto di arresto in un\'altra pagina
-script.button.Go_to_that_page=Vai alla pagina
-script.warning.debugger_not_activated=Il debugger non è attivo
-script.suggestion.debugger_not_activated=Il debugger non è attivo
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Chiudi
-firebug.View=Visualizza
-firebug.Help=?
-firebug.Run=Esegui
-firebug.Copy=Copia
-firebug.History=Cronologia
-firebug.Run_the_entered_command=Esegue il comando inserito
-firebug.Clear_the_Command_Editor=Svuota l\'editor della riga di comando
-firebug.Copy_the_script_as_a_bookmarklet=Copia lo script come bookmarklet
-firebug.Insert_a_previously_entered_command=Visualizza l\'elenco dei comandi precedenti
-firebug.AlwaysOpenInWindow=Apri sempre su una nuova finestra
-firebug.OpenWith=Apri con
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Siti con permesso...
-firebug.Configure_Editors=Configura editor
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Esegui fino a questa riga
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Analizza con Firebug
-firebug.InspectElement=Analizza elemento
-firebug.InspectElementWithFirebug=Controlla Elemento con Firebug
-firebug.BreakOnErrors=Interrompi in caso di errori
-firebug.InspectTooltip=Seleziona un elemento nella pagina da analizzare
-firebug.EditHTMLTooltip=Modifica HTML
-firebug.Profile=Profila
-firebug.Clear=Svuota
-firebug.ClearConsole=Svuota console
-firebug.ClearTooltip=Svuota la console
-firebug.All=Tutto
-firebug.Images=Immagini
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Editor esterni disponibili
-editors.Editor=Nome editor
-editors.Executable=Percorso
-editors.Launch_Arguments=Argomenti
-editors.Add=Aggiungi…
-editors.Remove=Elimina
-editors.Change=Modifica…
-editors.Move_Up=Sposta su
-editors.Close=Chiudi
-editors.Browse=Sfoglia…
-changeEditor.Editor_Configuration=Configurazione dell\'editor
-changeEditor.Name=Nome editor:
-changeEditor.Executable=Apri con
-changeEditor.CmdLine=Argomenti:
-changeEditor.Supplied_arguments=Argomenti suggeriti
-changeEditor.URL_of_file=: URL del file (se %url è mancante verrà aggiunto %file come argomento predefinito)
-changeEditor.Path_to_local_file=: percorso del file locale (o della copia temporanea)
-changeEditor.Line_number=: numero della riga (se disponibile)
-changeEditor.Invalid_Application_Path=Percorso dell\'applicazione non valido
-changeEditor.Application_does_not_exist=L\'applicazione specificata non esiste
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Modifica
-firebug.css.sourceEdit=Modifica sorgente caricato
-firebug.css.sourceEdit.tooltip=Fare clic per modificare il sorgente del foglio di stile come caricato dal browser
-firebug.css.liveEdit=Modifica sorgente estratto
-firebug.css.liveEdit.tooltip=Fare clic per modificare il foglio di stile estratto dal browser
-firebug.EditCSSTooltip=Modifica foglio di stile
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Utilizzando la modalità di navigazione anonima non verrà conservato alcun sito
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Avvisa al verificarsi di punti di arresto
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=Per attivare/disattivare questo avviso utilizzare la relativa opzione nel <a>menu della scheda del pannello</a>
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=È possibile disattivare il debugger per questo elemento con un punto di arresto disattivato
-firebug.bon.tooltip.disableDebuggerKeyword2=Disattiva il debugger creando un punto di arresto disattivato
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(Il pannello Script deve essere abilitato per utilizzare questa funzione)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=Nessun oggetto figlio
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=altri elementi
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S elemento memorizzato;%1$S elementi memorizzati
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Proprietà oggetto
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(nessun elemento)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=L\'oggetto dell\'URL è stato revocato molto probabilmente usando il metodo revokeObjectURL
-firebug.failedToPreviewImageURL=Impossibile caricare l\'URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=La profilazione della memoria è stata avviata
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Oggetti aggiunti durante la profilazione
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Risultati della profilazione della memoria
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Sessione completa
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.\n
+# %S Title of the associated web page.\n
+# examples: Firebug - Google\n
+WindowTitle=Firebug - %S
+# Panel titles\n
+Panel-console=Console
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Net
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Script
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Stile
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Elaborato
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Layout
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Analizza
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Punti di arresto
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Stack
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Scope
+firebug.DetachFirebug=Apri Firebug in finestra separata
+firebug.AttachFirebug=Unisci Firebug alla finestra del browser
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.\n
+# If there is no Firebug translation for the current browser locale, this value\n
+# will be used instead of the one in chrome://global/locale/intl.properties\n
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals\n
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semi-colon list of plural forms.\n
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals\n
+# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.\n
+# Displays number of pages with Firebug activated.\n
+# #1 number of Firebug instances activated\n
+# example: 2 Total Firebugs\n
+plural.Total_Firebugs2=%1$S istanza di Firebug attiva;%1$S istanze di Firebug attive
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in \'list of all panels\'\n
+# menu (available on Firebug\'s tab bar).\n
+# Console panel options.\n
+startbutton.tip.deactivated=Deactivated
+# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,\n
+# message, etc. within a source of a web page.\n
+# #1 File name, #2 Line number\n
+# examples: somePage.htm (line 64)\n
+# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.\n
+panel.status=%S: %S
+inBrowser=Firebug è aperta nel browser
+minimized=Firebug è ridotta ad icona
+enablement.for_all_pages=per tutte le pagine web
+enablement.on=In funzione
+enablement.off=Non in funzione
+enablement.Panel_activation_status=Panel activation status:
+none=Chiusa
+Firebug_-_inactive_for_current_website=Firebug è disattivata per il sito web attuale
+Activate_Firebug_for_the_current_website=Attiva Firebug per il sito web attuale
+Minimized=Ridotta ad icona
+Minimize_Firebug=Riduci ad icona
+On_for_all_web_pages=Attiva per tutte le pagine web
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Svuota lista di attivazione
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Posizione UI di Firebug
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# For example, right clicking on an element in the HTML panel offers an action to inspect\n
+# clicked element in the DOM panel (tab).\n
+firebug_options=Opzioni di Firebug
+# #1 Target panel title\n
+# examples: Inspect in DOM Tab\n
+firebug.Show_All_Panels=Mostra tutti i pannelli
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug\n
+ShowJavaScriptErrors=Mostra errori JavaScript
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Mostra avvisi JavaScript
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Mostra errori CSS
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Mostra analisi dello stack con errori
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Mostra richieste XMLHttp
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Mostra errori chrome
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Mostra messaggi chrome
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Mostra errori esterni
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Mostra errori di rete
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Mostra avvisi accurati (penalizza le prestazioni)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Cronologia della riga di comando
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Mostra suggerimenti per il completamento
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Asserzione errata
+# do not translate.\n
+# #1 jsdIScript.tag\n
+# HTML panel context menu items.\n
+# Quick Info Box\n
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume\n
+Line=%S (riga %S)
+LineAndCol=%S (linea %S, col %S)
+InstanceLine=%S #%S (riga %S)
+StackItem=%S (%S riga %S)
+SystemItem=<Sistema>
+# button that are used when the HTML panel is currently selected. The button allows stopping\n
+# JS execution when DOM of the current page is modified.\n
+# LOCALIZATION NOTE (html.label.Expand/Contract_All): Used within the HTML for a context\n
+# menu item. The user can expand/contract the element together with all its children to\n
+# quickly see the entire hierarchical structure or collapse it.\n
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(nessun nome)
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange): Used within the DOM panel to create\n
+# a \'property breakpoint\'. Right click on an property of an object. The label is also\n
+# used for the \'break on next button\' (available on the toolbar).\n
+jsdIScript=%S jsdIScript
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the\n
+# \'break on next button\'\n
+# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allows\n
+ShowFullText=Mostra tutto il testo
+html.option.tip.Show_Full_Text=Don't crop element contents
+# editing an existing HTML element attribute.\n
+# #1 Name of the clicked attribute.\n
+# examples: Edit Attribute \"onclick\"...\n
+ShowWhitespace=Mostra whiteSpace
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allows\n
+# deleting an existing HTML element attribute.\n
+ShowComments=Mostra commenti
+html.option.tip.Show_Comments=Show comment nodes
+# #1 Name of the clicked attribute.\n
+# examples: Delete Attribute \"onclick\"...\n
+# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.\n
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# that has been inherited. Used in the Style side panel (under HTML panel).\n
+# examples: Inherited from table.tabView\n
+# LOCALIZATION NOTE (css.fontFamilyPreview): This description is displayed in the CSS panel\n
+HighlightMutations=Evidenzia modifiche
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# when the mouse is over a font name,in a font-family property\n
+# LOCALIZATION NOTE (css.EmptyStyleSheet): This description is displayed in the CSS panel\n
+# in case there are no stylesheets attached to the current page.\n
+ExpandMutations=Espandi modifiche
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# The text between <a> and </a> is displayed as a link.\n
+# LOCALIZATION NOTE (css.EmptyElementCSS2): This description is displayed in the Style side panel\n
+# (available within the HTML panel) in case there are no CSS rules for the selected element.\n
+ScrollToMutations=Visualizza modifiche
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# The text between <a> and </a> is displayed as a link.\n
+# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.\n
+# Allows to edit an existing CSS rule property.\n
+ShowQuickInfoBox=Attiva pop-up informazioni principali
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# %S Name of the clicked property\n
+# examples: Edit \"background-color\"...\n
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.\n
+ShadeBoxModel=Sfuma Box model
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Visualizza
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Nuovo attributo
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Elimina elemento
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Elimina nodo
+html.Delete_Node=Delete the node from the tree
+# Allows to disable an existing CSS rule property.\n
+quickInfo=Informazioni principali
+computedStyle=Stile elaborato
+# %S Name of the clicked property\n
+# examples: Disable \"background-color\"\n
+# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.\n
+html.Break_On_Mutate=Interrompi alla modifica
+html.Disable_Break_On_Mutate=Non interrompere alla modifica
+html.label.Break_On_Text_Change=Interrompi alla modifica del testo
+html.label.HTML_Breakpoints=Punti di arresto HTML
+html.label.Break_On_Attribute_Change=Interrompi al cambio di attributo
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Interrompi all\'aggiunta/eliminazione di un elemento figlio
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Interrompi all\'eliminazione di un elemento
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# Allows to delete an existing CSS rule property.\n
+# %S Name of the clicked property\n
+# examples: Delete \"background-color\"\n
+# Console context menu labels.\n
+html.label.Expand/Contract_All=Espandi/contrai tutto
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+#xxxHonza: remove as soon as backporting into 1.7 finishes\n
+#see script.Disable_Break_On_Next\n
+# LOCALIZATION NOTE do not translate, no longer used(?)\n
+dom.label.breakOnPropertyChange=Interrompi alla modifica della proprietà
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# Breakpoints side panel\n
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons\n
+dom.disableBreakOnPropertyChange=Non interrompere alla modifica della proprietà
+dom.label.DOM_Breakpoints=Punti di arresto DOM
+# within balloon popup dialog. This dialog appears when debugger halts at a breakpoint or at\n
+# a \'debugger\' keyword.\n
+# Continue: allows to resume the debugger\n
+# Disable: allows to disable the current \'debugger;\' keyword used in the Javascript source.\n
+EditAttribute=Modifica attributo \"%S\"
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# Script panel, xxxHonza: should be removed as soon as backporting into 1.7 is finished.\n
+# See firebug.StepOver, etc.\n
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,\n
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,\n
+DeleteAttribute=Elimina attributo \"%S\"
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# ShowInlineEventHandlers):\n
+# Labels for DOM panel options (located in tab\'s min menu)\n
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):\n
+InheritedFrom=Ereditato da
+SothinkWarning=L\'estensione Sothink SWF Catcher impedisce il corretto funzionamento di Firebug
+# Labels used to describe layout properties a the selected HTML element.\n
+# Used in the Layout side panel under HMTL panel.\n
+css.fontFamilyPreview=Cantami o Diva del pelide Achille l\'ira funesta. 1234567890
+# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side panel\n
+# under HTML panel.\n
+# Net panel\n
+css.EmptyStyleSheet=Non sono presenti regole di stile. È possibile <a>crearne una</a>
+# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)\n
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,\n
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,\n
+css.EmptyElementCSS=Questo elemento non contiene regole di stile. È possibile <a>crearne una</a>
+EditStyle=Modifica stile dell\'elemento
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Nuova regola…
+css.tip.New_Rule=Add a new rule
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,\n
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,\n
+# net.header.Remote_IP_Tooltip):\n
+# Labels and tooltips for a headers displayed on top of the Net panel.\n
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.\n
+# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s context\n
+# menu for breaking on a XHR.\n
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Nuova proprietà
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the\n
+# Net panel\'s Headers tab (displayed if you expand a network request). The label is used\n
+# for a button that switches the view between \"show raw source code\" and \"pretty formated header\n
+# values\".\n
+EditProp=Modifica \"%S\"
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (net.filter.Media): Label for net panel filter (used on the Net panel toolbar)\n
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about\n
+# a network request (displayed when a net panel entry is expanded). The content of\n
+# this tab displays sent data (related to a HTTP send method).\n
+DisableProp=Disattiva \"%S\"
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):\n
+# Label used in the Net panel for detailed info about a network request (displayed\n
+# when a net panel entry is expanded)\n
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the\n
+DeleteProp=Elimina \"%S\"
+css.tip.Delete_Prop=Delete the property "%S"
+# Net panel for JSON responses Allows to sort alphabetically.\n
+BreakOnThisError=Interrompi per questo errore
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Interrompi per tutti gli errori
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) used in the net & console panel when copying JSON replies\n
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net panel\n
+# (expand an entry in the panel and select Headers tab).\n
+TrackThrowCatch=Rileva Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Usa l\'ultima riga del sorgente per i nomi eval()
+UseMD5ForEvalName=Usa MD5 per i nomi eval()
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semi-colon list of plural forms.\n
+Breakpoints=Punto di arresto
+ErrorBreakpoints=Errore dei punti di arresto
+LoggedFunctions=Funzioni registrate
+EnableAllBreakpoints=Attiva tutti i punti di arresto
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Disattiva tutti i punti di arresto
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Elimina tutti i punti di arresto
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Ci si fermerà a questo punto di arresto solo se la seguente espressione è vera:
+# A message displayed in the Net panel when some entries must be removed since maximum number\n
+# of entries has been reached.\n
+# #1 the number of entries removed\n
+breakpoints.Remove_Breakpoint=Rimuovi Breakpoint
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Disabilita Breakpoint
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Abilita Breakpoint
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# example: Firebug\'s log limit has been reached. 150 entries not shown.\n
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit\n
+# has been reached. Informing the user what preference should be changed to modify the limit.\n
+# %S Name of a preference.\n
+# examples: In order to change the limit modify: firebug.extensions.console.logLimit\n
+script.balloon.Continue=Continua
+script.balloon.Disable=Disattiva
+ScriptsFilterStatic=Mostra script static
+ScriptsFilterEval=Mostra script static ed eval
+ScriptsFilterEvent=Mostra script static ed event
+ScriptsFilterAll=Mostra script static, eval ed event
+ScriptsFilterStaticShort=static
+ScriptsFilterEvalShort=eval
+ScriptsFilterEventShort=event
+ScriptsFilterAllShort=tutti
+# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.\n
+# (result of javascript profiler tool). Represents a verb.\n
+# LOCALIZATION NOTE (plural.Profile_Time2): Semi-colon list of plural forms.\n
+# Used as a caption for reported profile info (result of javascript profiler tool).\n
+callstack.Expand_All=Espandi tutto
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Comprimi tutto
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# #1 number of milliseconds\n
+# #2 number of calls (plural)\n
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# example: (#1ms, #2 calls)\n
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header\n
+# (name of a report column). In order to see this, select the Console panel start profiling\n
+# by clicking the Profile button and stop it by clicking again. The report is logged into the\n
+ShowUserProps=Mostra proprietà definite dall\'utente
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Mostra funzioni definite dall\'utente
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Mostra proprietà DOM
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Mostra funzioni DOM
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Mostra costanti DOM
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Mostra gestori evento in linea
+ShowInlineEventHandlersTooltip=Mostra i gestori dell\'evento in linea disponibili non associati ad una funzione
+ShowOwnProperties=Non mostrare Prototype chain
+ShowOwnPropertiesTooltip=Non mostrare Prototype chain
+ShowEnumerableProperties=Mostra solo proprietà enumerabili
+ShowEnumerablePropertiesTooltip=Mostra solo le proprietà enumerabili
+NoMembersWarning=Non ci sono proprietà per questo oggetto
+NewWatch=Nuova espressione di controllo
+# console panel. Make sure Script panel is enabled.\n
+# Support for clipboard actions.\n
+AddWatch=Aggiungi espressione
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Script\n
+# panel when clicking a function object.\n
+CopySourceCode=Copia sorgente
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Inserire #<numero> per passare alla riga relativa
+CopyValue=Copia valore
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Copia nome
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Copia percorso
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Nuova proprietà
+EditProperty=Modifica proprietà
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Modifica variabile
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Modifica espressione
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Elimina proprietà
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Elimina espressione
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# %S Name of the function\n
+# Log Calls to \"getData\"\n
+SetBreakpoint=Imposta punto di arresto
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): A tooltip used for a button on main\n
+# Firebug toolbar. This button allows to open the command line even within other panels.\n
+# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console panel\n
+EditBreakpointCondition=Modifica la condizione per il punto di arresto
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=Non ci sono punti di arresto in questa pagina
+# if specific method is not supported.\n
+# %S Name of a not supported method.\n
+# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console panel\n
+Only_Show_Applied_Styles=Mostra solo stili applicati
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# when a not supported method is used on the command line.\n
+# %S Name of a not supported method.\n
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):\n
+Show_User_Agent_CSS=Mostra user agent CSS
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# Tooltip for the \"Break on... \" button used when the Console panel is selected.\n
+# LOCALIZATION NOTE (console.Use_TAB_and_arrow_keys) \n
+# Top of the completion popup in the command line\n
+# Console strings used when JavaScript is not available\n
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded)\n
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# Used by the console panel for arrays. If the user moves the mouse over an array bracket,\n
+# all elements in the array are highlighted on the page. If there are too many elements\n
+# in the array, this tooltip is displayed instead.\n
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the console\n
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# in cases when the current page is an XML document. The text between <a> and </a> is a link.\n
+# that cause to switch into HTML rendering of the document.\n
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,\n
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):\n
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mouse\n
+# over a Size displayed within the Net panel. \'Total Sent\' and \'Total Received\' info includes\n
+# even sent and received heades size.\n
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net\n
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# panel (inside the Post tab of an expanded request entry). The message informs the user that\n
+# posted data reached Firebug\'s size limit and only part of it is displayed in the UI.\n
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):\n
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# Labels for Net panel\'s options.\n
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):\n
+# Net panels\'s option. If set to true, the net panel displays also response coming from\n
+# BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCache\n
+Expand_Shorthand_Properties=Espandi proprietà abbreviate
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):\n
+# Tooltip used for a \"break-on\" button on Firebug\'s toolbar. Used in context of Script panel\n
+# (breakin on next executed Javascript statemen)\n
+# LOCALIZATION NOTE (plural.Request_Count2): Semi-colon list of plural forms.\n
+Sort_alphabetically=Ordina alfabeticamente
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# A label used in the Net panel. Displays number of HTTP requests executed by the current page.\n
+# #1 number of requests\n
+# example: 21 requests\n
+Show_Mozilla_specific_styles=Mostra stili specifici Mozilla
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (plural.Error_Count2): Semi-colon list of plural forms.\n
+# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.\n
+# #1 number of errors\n
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Premere uno o più tasti per filtrare la lista
+# example: 111 Errors\n
+# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.\n
+# With: the scope inside of the with(obj) {} statement\n
+LayoutPadding=padding
+LayoutBorder=bordo
+LayoutMargin=margine
+LayoutPosition=posizione
+LayoutAdjacent=adiacente
+position=posizione
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };\n
+# Window: the scope inside of a Javascript window object.\n
+# Net panel timing info labels\n
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):\n
+ShowRulers=Mostra righelli e guide
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.\n
+Loading=Caricamento in corso…
+Headers=Intestazioni
+# LOCALIZATION NOTE (search.Case_Sensitive, search.Case_Insensitive): Label used within\n
+# an options menu for the search box. This menu is displayed if the search box is focused.\n
+net.tip.Clear=Clear the request list
+#A11y Chrome Labels (not visible, spoken by screen readers)\n
+#A11y panelNode labels (not visible, spoken by screen readers)\n
+net.header.Reset_Header=Resetta intestazione
+net.header.tip.Reset_Header=Reset the header display
+#A11y Domplate labels (not visible, spoken by screen readers)\n
+# LOCALIZATION NOTE\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.\n
+# Describe contents of inline editor fields\n
+# LOCALIZATION NOTE (a11y.labels.overridden):\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.\n
+net.header.URL=URL
+net.header.URL_Tooltip=URL richiesto e metodo HTTP utilizzato
+net.header.Status=Stato
+net.header.Status_Tooltip=Stato della risposta ricevuta
+net.header.Domain=Dominio
+net.header.Domain_Tooltip=Dominio della richiesta effettuata
+net.header.Size=Dimensione
+net.header.Size_Tooltip=Dimensione della risposta ricevuta
+net.header.Timeline=Sequenza temporale
+net.header.Timeline_Tooltip=Sequenza temporale dettagliata inerente alla risposta
+net.header.Local_IP=IP locale
+net.header.Local_IP_Tooltip=Indirizzo IP locale e porta relativi alla richiesta
+net.header.Remote_IP=IP remoto
+net.header.Remote_IP_Tooltip=Indirizzo IP remoto e porta relativi alla richiesta
+net.header.Protocol=Protocollo
+net.header.Protocol_Tooltip=Il protocollo dell\'URL utilizzato per individuare la risorsa nel Web.
+# indicates style property is overridden by selector with higher specificity\n
+net.label.XHR_Breakpoints=Punti di arresto XHR
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.\n
+net.label.Break_On_XHR=Interrompi per le richieste XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# Existence and state of a breakpoint\n
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly\n
+# visible in the UI, intended for screen readers.\n
+net.headers.view_source=Visualizza come testo semplice
+net.headers.pretty_print=Visualizza come testo formattato
+# #1 Line number, #2 Function name, #3 File name\n
+net.filter.Media=File multimediali
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly\n
+# visible in the UI, intended for screen readers.\n
+# Describes the match found when performing a console panel search \n
+Post=Post
+Put=Put
+# #1 %S String key the use is looking for. #2 number of rows that contain the matched text\n
+# examples: Match found for \"test\" in 17 log rows\n
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly\n
+Response=Risposta
+URLParameters=Parametri
+Cache=Cache
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Informazioni generali
+fontviewer.Meta_Data=Meta dati
+fontviewer.view_source=visualizza sorgente
+fontviewer.Preview=Anteprima
+fontviewer.view_characters=visualizza caratteri
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=visualizza esempio
+fontviewer.uniqueid=ID Univoco
+fontviewer.vendor=Società
+fontviewer.license=Licenza
+fontviewer.description=Descrizione
+fontviewer.copyright=Copyright
+fontviewer.credits=Crediti
+fontviewer.trademark=Marchi depositati
+fontviewer.licensee=Licenziatario
+fontviewer.extension=Estensione
+fontviewer.pangram=Cantami o Diva del pelide Achille l\'ira funesta
+# visible in the UI, intended for screen readers.\n
+# Describes the match found when performing a script panel search \n
+jsonviewer.sort=Ordina alfabeticamente
+jsonviewer.do_not_sort=Non ordinare
+# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found in\n
+# examples: Match found for \"window.alert\" on line 322 in utilities.js\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly\n
+# visible in the UI, intended for screen readers.\n
+net.jsonviewer.Copy_JSON=Copia \"%S\" come JSON
+# Describes the match found when performing an HTML panel search (if it is found in an element node) \n
+# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched element\n
+RequestHeaders=Intestazioni di richiesta
+ResponseHeaders=Intestazioni di risposta
+CachedResponseHeaders=Intestazioni di Risposta Dalla Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# examples: Match found for \"obj\" in object element at /html/body/object[2]\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly\n
+# visible in the UI, intended for screen readers.\n
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node) \n
+# #1 Search string that was matched. #2 Attribute name #3 attribute value \n
+# #4 the HTML element name containing. #5 XPATH string specifying the matched element\n
+# examples: Match found for \"abindex\" in tabindex=\"0\" in span element at /html/body/span[2]\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly\n
+plural.Limit_Exceeded2=È stato raggiunto il limite di elementi registrabili. %1$S elemento non verrà visualizzato;È stato raggiunto il limite di elementi registrabili. %1$S elementi non verranno visualizzati
+LimitPrefs=Impostazioni
+# visible in the UI, intended for screen readers.\n
+# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) \n
+# #1 Search string that was matched. #2 element\'s text content \n
+# #3 the HTML element name containing. #4 XPATH string specifying the matched element\n
+LimitPrefsTitle=Per aumentare il limite modificare %S
+Refresh=Ricarica
+panel.tip.Refresh=Refresh the panel display
+# examples: Match found for \"Firebug Rocks!\" in h2 element at /html/body/h2[2]\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly\n
+OpenInTab=Apri in nuova scheda
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Apri risposta in nuova scheda
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# visible in the UI, intended for screen readers.\n
+# Describes the match found when performing a CSS panel search (if it is found in a selector) \n
+Profile=Profilazione
+ProfilerStarted=La profilazione è in corso. Fare di nuovo clic su \'Profila\' per visualizzare il resoconto
+# #1 Search string that was matched. #2 selector in which the match was found \n
+# examples: Match found for \"main\" in #mainContent h2 {\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly\n
+# visible in the UI, intended for screen readers.\n
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration) \n
+plural.Profile_Time2=(%1$Sms, %2$S chiamata);(%1$Sms, %2$S chiamate)
+NothingToProfile=Nessuna attività da profilare
+PercentTooltip=Percentuale di tempo impiegato per l\'esecuzione della funzione
+CallsHeaderTooltip=Numero di volte in cui la funzione è stata chiamata
+OwnTimeHeaderTooltip=Tempo di esecuzione della funzione, escluse le chiamate nidificate
+TimeHeaderTooltip=Tempo di esecuzione della funzione, incluse le chiamate nidificate
+AvgHeaderTooltip=Tempo medio, incluse le chiamate di funzione
+MinHeaderTooltip=Tempo minimo, incluse le chiamate di funzione
+MaxHeaderTooltip=Tempo massimo, incluse le chiamate di funzione
+ProfileButton.Enabled.Tooltip=Tempo di esecuzione della profilazione JavaScript
+ProfileButton.Disabled.Tooltip=Tempo di esecuzione della profilazione JavaScript (attivare il pannello Script)
+Function=Funzione
+Percent=Percentuale
+# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to \n
+# examples: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly\n
+# visible in the UI, intended for screen readers.\n
+Calls=Chiamate
+OwnTime=Tempo proprio
+Time=Tempo
+Avg=Medio
+Min=Min
+Max=Max
+File=File
+# Describes the match found when performing a DOM panel search \n
+Copy=Copia
+Cut=Taglia
+Remove=Elimina
+Delete=Delete
+Paste=Incolla
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Copia innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Copia XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Copia percorso CSS
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# #1 Search string that was matched. #2 DOM property in which the match was found \n
+# examples: Match found for \"time\" in _starttime : 1257324992232 (Number)\n
+CopyLocation=Copia indirizzo
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Copia indirizzo con parametri
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Copia intestazioni di richiesta
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Copia intestazioni di risposta
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Copia elemento body di risposta
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly\n
+# visible in the UI, intended for screen readers.\n
+CopyError=Copia errore
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# Describes the match found when performing a Net panel search \n
+# #1 Search string that was matched. #2 File name associated to the row in which the match was found. \n
+CopySource=Copia funzione
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# #3 Column in which the match was found #4. Column value \n
+# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 ms\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly\n
+# visible in the UI, intended for screen readers.\n
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)\n
+ShowCallsInConsole=Registra chiamate in \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# #1 Search string that was matched. #2 Column value in which the match was found \n
+# examples: Match found for \"05\" in net summary row: 4.05s\n
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly\n
+ShowEventsInConsole=Registra eventi
+html.tip.Show_Events_In_Console=Log event information to the console
+# visible in the UI, intended for screen readers.\n
+# Indicates that the searched string was not matched \n
+panel.Enabled=Attiva
+panel.tip.Enabled=Toggle the panel activation
+# %S Search string that was matched. \n
+# examples: No matched found for \"wefkhwefkgwekhjgjh\"\n
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):\n
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is\n
+# displayed containing the following message\n
+# Console messages.\n
+# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):\n
+console.MethodNotSupported=La console di Firebug non supporta \'%S\'
+# If Firebug is displayed in an external window (detached), but not active for the\n
+# currently selected Firefox tab, the following button label is used for an\n
+# activation button.\n
+commandline.MethodNotSupported=La riga di comando di Firebug non supporta \'%S\'
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):\n
+# An error message displayed in the Script panel when a source can\'t be displayed\n
+# for specific URL.\n
+commandline.CurrentWindow=Current window:
+# examples: Reload the page to get source for: http://www.example.com/script.js\n
+# examples: The resource from this URL is not text: http://www.example.com/script.js\n
+console.Disable_Break_On_All_Errors=Non interrompere per tutti gli errori
+console.Break_On_All_Errors=Interrompi per tutti gli errori
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,\n
+# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.\n
+console.Break_On_This_Error=Interrompi per questo errore
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):\n
+# Tooltips for back/forward buttons on the Script panel toolbar.\n
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):\n
+# This message is displayed within the Script panel if debugger is inactive during page load.\n
+console.JSDisabledInFirefoxPrefs=Gli JavaScript sono disattivati nelle opzioni di Firefox. Per utilizzare la finestra della console è necessario riattivarli (Strumenti -> Opzioni… -> Contenuti -> Attiva JavaScript)
+# The suggestion message represents an advice how to solve the problem.\n
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):\n
+# This message is displayed within the Script panel if javascript is not enabled.\n
+# The suggestion message represents an advice how to solve the problem.\n
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed on\n
+# the Script panel if Javascript is disabled. This button allows to enable it.\n
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):\n
+console.multiHighlightLimitExceeded=È stato superato il limite di elementi della lista evidenziabili nella paginanimpostato a %S nel parametro \'extensions.firebug.multiHighlightLimit\'
+# This message is displayed within the Script panel if javascript is not enabled for the current page.\n
+# The suggestion message represents an advice how to solve the problem.\n
+# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):\n
+commandline.disabledForXMLDocs=La riga di comando di Firebug è disattivata per le pagine XML. È possibile attivarla passando alla <a>visualizzazione come HTML</a>
+# This message is displayed within the Script panel if javascript is not enabled for the current page.\n
+# The suggestion message represents an advice how to solve the problem.\n
+#firebug.dtd\n
+# LOCALIZATION NOTE (firebug.Rerun, firebug.Continue, firebug.StepOver, firebug.StepInto,\n
+# firebug.StepOut, firebug.RunUntil)\n
+net.sizeinfo.Response_Body=Corpo della risposta
+net.sizeinfo.Post_Body=Corpo della richiesta Post
+net.sizeinfo.Total_Sent=Dati totali inviati
+net.sizeinfo.Total_Received=Dati totali ricevuti
+net.sizeinfo.Including_HTTP_Headers=Intestazioni HTTP incluse
+net.ActivationMessage=Il pannello Net è attivato. Le richieste precedenti all\'attivazione non verranno mostrate
+net.responseSizeLimitMessage=È stato raggiunto il limite di dimensione per le risposte. Fare clic <a>qui</a> per visualizzare l\'intera risposta in una nuova scheda
+# Labels used for debugger \'stepping\' buttons that are available in the Script panel.\n
+#editors.dtd\n
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,\n
+net.postDataSizeLimitMessage=È stato raggiunto il limite di dimensione della richiesta
+net.Break_On_XHR=Interrompi per le richieste XHR
+net.label.Parameters=Parametri
+net.label.Parts=Parti
+net.label.Source=Sorgente
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)\n
+# Used in the CSS panel for the Edit button.\n
+net.label.Resend=Re-invia
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayed\n
+# in the Console panel when the private browsing mode is on (in Firefox 4 it\'s Start\n
+net.option.Disable_Browser_Cache=Disattiva la cache del browser
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# Private Browsing mode)\n
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications): This label is used within\n
+# Script panel\'s tab menu. Represents an option that can be used to switch of these\n
+# notifications.\n
+net.option.Show_Paint_Events=Mostra Paint event
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayed\n
+# in a break notification balloon popup next to a checkbox.\n
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):\n
+net.option.Show_BFCache_Responses=Mostra le risposte di BFCache
+net.option.tip.Show_BFCache_Responses=Visualizza le risposte provenienti dalla cache \'back/forward\' di Firefox nel pannello Net
+# This message is displayed in a break notification popup when break on debugger; keyword happens.\n
+# The keyword can be disabled by creating a disabled breakpoint on the same line.\n
+# The other label is used for a tooltip on the action button. \n
+script.Break_On_Next=Interrompi al prossimo errore
+script.Disable_Break_On_Next=Interrompi al prossimo errore
+ShowHttpHeaders=Mostra intestazioni HTTP
+# LOCALIZATION NOTE (firebug.dom.noChildren): This message is displayed in the DOM panel\n
+# in cases where there are no children objects and so nothing to display.\n
+# LOCALIZATION NOTE (firebug.reps.more): This label is when displayed array/list has\n
+# more elements then it\'s displayed on the screen. \"...\" is automatically appended.\n
+plural.Request_Count2=%1$S richiesta;%1$S richieste
+FromCache=dalla cache
+StopLoading=Interrompi caricamento
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(dati molto grandi)
+ShowComputedStyle=Mostra stile elaborato
+StyleGroup-text=Testo
+StyleGroup-background=Sfondo
+StyleGroup-box=Box model
+StyleGroup-layout=Layout
+StyleGroup-other=Altro
+Dimensions=%S x %S
+# example: more...\n
+# LOCALIZATION NOTE (firebug.storage.totalItems): This label is used in the DOM panel\n
+# for local/session/global storage. It\'s informing the user about number of items in the storage.\n
+CopyColor=Copia colore
+css.tip.Copy_Color=Copy the color to the clipboard
+# #1 number of storage items\n
+# example: 1 item in Storage\n
+# example: 2 items in Storage\n
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties): This label is used by console.table\n
+CopyImageLocation=Copia indirizzo immagine
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Apri immagine in nuova scheda
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# method if an object is passed into it. Used in table header.\n
+# LOCALIZATION NOTE (firebug.completion.empty): This label is used in the command line\n
+# by auto-complete function. Displayed if there are no possible completions.\n
+OmitObjectPathStack=Ometti stack nella barra degli strumenti
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Carica sorgente originale
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):\n
+# This label is used in an image preview infotip within the HTML panel (hover over an IMG element)\n
+# when loading of given URL fails. The firebug.failedToPreviewObjectURL is specifically used\n
+Copy_Rule_Declaration=Copia dichiarazione della regola
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# for moz-filedata (HTML5),\n
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images\n
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):\n
+Copy_Style_Declaration=Copia dichiarazione di stile
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# Message logged into the Console panel when memory profiler session starts.\n
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):\n
+# Title for a group (logged into the Console panel) taht contains list of new objects\n
+# allocated within memory profiler session.\n
+plural.Error_Count2=%1$S errore;%1$S errori
+moduleManager.title=Il pannello %S è disattivato
+moduleManager.desc3=Per attivare/disattivare tutti i pannelli utilizzare il menu dell\'icona di Firebug nella barra di stato. Per attivare/disattivare un singolo pannello utilizzare il menu della scheda relativa facendo clic nel punto evidenziato in figura:
+moduleManager.Enable=Attiva il pannello
+Suspend_Firebug=Ferma Firebug
+Resume_Firebug=Avvia Firebug
+Reset_Panels_To_Disabled=Disattiva i pannelli
+Open_Console=Apri console
+Open_Console_Tooltip=Apri la console di Firebug
+Scope_Chain=Scope chain
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):\n
+# Message used within the console panel when memory profiler sessions is finished.\n
+# LOCALIZATION NOTE (firebug.Entire_Session): Label used within memory prfiler results\n
+With_Scope=With
+# to mark summary information for entire session.\n
+Call_Scope=Call
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Window
+Logs=Messaggi
+Options=Opzioni
+Copy_Stack=Copia stack
+Copy Exception=Copia eccezione
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Interruzione
+requestinfo.Resolving=Ricerca DNS
+requestinfo.Connecting=Connessione
+requestinfo.Sending=Invio dati
+requestinfo.Waiting=Attesa
+requestinfo.Receiving=Ricezione dati
+requestinfo.ContentLoad=Evento \'DOMContentLoaded\'
+requestinfo.WindowLoad=Evento \'load\'
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Tempo d\'avvio dall\'inizio della richiesta
+requestinfo.phases.label=Fasi d\'avvio della richiesta e tempo trascorso dall\'inizio della richiesta:
+requestinfo.timings.label=Intervallo di tempo tra gli eventi dall\'inizio della richiesta:
+search.Firebug_Search=Ricerca di Firebug
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Successivo
+search.tip.Next=Search for the next match
+search.Previous=Precedente
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Maiuscole/minuscole
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Indifferente se maiuscole/minuscole
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Tutti i file
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Usa espressioni regolari
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=Selettori CSS
+search.net.Headers=Intestazioni
+search.net.Parameters=Parametri
+search.net.Response_Bodies=Corpi delle risposte
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Mantieni
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Mostra tutti gli elementi registrati
+firebug.console.Errors=Errori
+firebug.console.Filter_by_Errors=Filtra per errori
+firebug.console.Warnings=Avvisi
+firebug.console.Filter_by_Warnings=Filtra per avvisi
+firebug.console.Info=Informazioni
+firebug.console.Filter_by_Info=Filtra per informazioni
+firebug.console.Debug_Info=Informazioni di debug
+firebug.console.Filter_by_Debug_Info=Filtra per informazioni di debug
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Apri Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Nascondi Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Attiva tutti i pannelli
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Disattiva tutti i pannelli
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Personalizza scorciatoie da tastiera…
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Opzioni
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Migliora visualizzazione degli elementi
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Ripristina le opzioni di Firebug
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Pagine web di Firebug
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Mostra conteggio errori
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Dimensione testo
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Aumenta
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Diminuisci
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Normale
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Sito web...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Documentazione...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Scorciatoie da tastiera...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Gruppo di discussione...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Segnalazione problemi...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Donazioni...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Informazioni su...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Cerca
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Reinserisci il comando
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Attiva/disattiva ispezione
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Attiva/disattiva pop-up informazioni principali
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Attiva/disattiva profilazione
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Porta in primo piano la riga di comando
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Porta in primo piano la barra di ricerca di Firebug
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Porta in primo piano la modifica delle espressioni
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Porta in primo piano l\'indirizzo
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Passa all\'oggetto successivo
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Passa all\'oggetto precedente
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Personalizza le scorciatoie da tastiera di Firebug
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Apri Firebug in finestra separata
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Passa al pannello di Firebug a sinistra
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Passa al pannello di Firebug a destra
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Apri Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Passa al pannello di Firebug precedente
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Svuota la console
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Apri la console di Firebug
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Indietro
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Avanti
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Aumenta la dimensione del testo
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Diminuisci la dimensione del testo
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Ripristina la dimensione del testo
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Selettore del pannello
+customizeShortcuts=Scorciatoie da tastiera di Firebug
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=Pannelli
+a11y.labels.firebug_panels=Pannelli di Firebug
+a11y.labels.firebug_side_panels=Pannelli laterali di Firebug
+a11y.labels.firebug_window=finestra di Firebug
+a11y.labels.firebug_status=stato di Firebug
+a11y.labels.reset=Ripristina
+a11y.labels.reset_shortcut=Ripristina la scorciatoia da tastiera %S
+aria.labels.inactive_panel=pannello non attivo
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=registra righe
+a11y.labels.call_stack=chiama stack
+a11y.labels.document_structure=struttura del documento
+a11y.labels.title_panel= pannello %S
+a11y.labels.title_side_panel= pannello laterale %S
+a11y.labels.cached=nella cache
+aria.labels.stack_trace=analisi stack
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=bordo
+a11y.layout.margin=margine
+a11y.layout.position=posizione
+a11y.layout.position_top=posizione in alto
+a11y.layout.position_right=posizione a destra
+a11y.layout.position_bottom=posizione in basso
+a11y.layout.position_left=posizione a sinistra
+a11y.layout.margin_top=margine in alto
+a11y.layout.margin_right=margine a destra
+a11y.layout.margin_bottom=margine in basso
+a11y.layout.margin_left=margine a sinistra
+a11y.layout.border_top=bordo in alto
+a11y.layout.border_right=bordo a destra
+a11y.layout.border_bottom=bordo in basso
+a11y.layout.border_left=bordo a sinistra
+a11y.layout.padding_top=padding in alto
+a11y.layout.padding_right=padding a destra
+a11y.layout.padding_bottom=padding in basso
+a11y.layout.padding_left=padding a sinistra
+a11y.layout.top=in alto
+a11y.layout.right=a destra
+a11y.layout.bottom=in basso
+a11y.layout.left=a sinistra
+a11y.layout.width=larghezza
+a11y.layout.height=altezza
+a11y.layout.size=dimensione
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=Premere Invio+Tab per modificare singoli valori
+a11y.labels.style_rules=regole dello stile
+aria.labels.inherited_style_rules=regole dello stile ereditate
+a11y.labels.computed_styles=stili elaborati
+a11y.labels.dom_properties=Proprietà DOM
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=editor in linea
+a11y.labels.value_for_attribute_in_element=valore per l\'attributo %S nell\'elemento %S
+a11y.labels.attribute_for_element=attributo per l\'elemento %S
+a11y.labels.text_contents_for_element=contenuti di testo per l\'elemento %S
+a11y.labels.defined_in_file=definito in %S
+a11y.labels.declarations_for_selector=dichiarazione di stile per il selettore \"%S\"
+a11y.labels.property_for_selector=Proprietà CSS per il selettore %S
+a11y.labels.value_property_in_selector=valore per la proprietà CSS %S nel selettore %S
+a11y.labels.css_selector=Selettore CSS
+a11y.labels.source_code_for_file=codice sorgente per il file %S
+a11y.labels.press_enter_to_add_new_watch_expression=Premere Invio per aggiungere una nuova espressione
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=overridden
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=contiene punti di arresto condizionati
+a11y.updates.has_disabled_break_point=contiene punti di arresto disattivati
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Esecuzione dello script sospesa alla riga %S per la funzione %S nel file %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=Corrispondenza trovata per \"%S\" in %S righe registrate
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=Corrispondenza trovata per \"%S\" alla riga %S del file %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=Corrispondenza trovata per \"%S\" nell\'elemento %S al percorso %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=Corrispondenza trovata per \"%S\" nell\'attributo %S=%S dell\'elemento %S al percorso %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=Corrispondenza trovata per \"%S\" nel contenuto testuale %S dell\'elemento %S al percorso %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=Corrispondenza trovata per \"%S\" nel selettore %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=Corrispondenza trovata per \"%S\" nella dichiarazione di stile %S nel selettore %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=Corrispondenza trovata per \"%S\" nella proprietà DOM %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=Corrispondenza trovata per \"%S\" in %S, %S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=Corrispondenza trovata per \"%S\": %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=Nessuna corrispondenza trovata per \"%S\"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Ripristinare tutte le opzioni di Firebug ai valori predefiniti?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Le modifiche al foglio di stile non verranno salvatenProcedere comunque?
+# Console messages
+warning.Console_must_be_enabled=È necessario attivare la console
+warning.Command_line_blocked?=Bloccare la riga di comando?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Ricaricare per attivare la finestra della console
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Ricaricare la pagina per visualizzare il sorgente del seguente URL:
+message.The_resource_from_this_URL_is_not_text=La risorsa disponibile al seguente URL non è testuale:
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Torna a questo pannello
+firebug.history.Stay_on_this_panel=Resta su questo pannello
+firebug.history.Go_forward_to_this_panel=Vai a questo pannello
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Indietro
+firebug.history.Go_forward=Avanti
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Il pannello Script non era attivato durante il caricamento della pagina
+script.suggestion.inactive_during_page_load2=<a>Ricaricare la pagina</a> per visualizzare il sorgente
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Gli JavaScript non sono attivati
+script.suggestion.javascript_not_enabled=Verificare nella scheda \'Contenuti\' delle opzioni di Firefox che la casella \'Attiva JavaScript\' sia selezionata
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Attiva gli JavaScript e ricarica la pagina
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Tutti gli script sono stati filtrati
+script.suggestion.all_scripts_filtered=Verificare le impostazioni degli script nella barra degli strumenti oppure l\'opzione \"Mostra sorgenti chrome\"
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=Non sono stati rilevati JavaScript in questa pagina
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Il debugger è già attivo
+script.suggestion.debugger_active=Il debugger è stato fermato ad un punto di arresto in un\'altra pagina
+script.button.Go_to_that_page=Vai alla pagina
+script.warning.debugger_not_activated=Il debugger non è attivo
+script.suggestion.debugger_not_activated=Il debugger non è attivo
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Chiudi
+firebug.View=Visualizza
+firebug.Help=?
+firebug.Run=Esegui
+firebug.Copy=Copia
+firebug.History=Cronologia
+firebug.Run_the_entered_command=Esegue il comando inserito
+firebug.Clear_the_Command_Editor=Svuota l\'editor della riga di comando
+firebug.Copy_the_script_as_a_bookmarklet=Copia lo script come bookmarklet
+firebug.Insert_a_previously_entered_command=Visualizza l\'elenco dei comandi precedenti
+firebug.AlwaysOpenInWindow=Apri sempre su una nuova finestra
+firebug.OpenWith=Apri con
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Siti con permesso...
+firebug.Configure_Editors=Configura editor
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Esegui fino a questa riga
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Analizza con Firebug
+firebug.InspectElement=Analizza elemento
+firebug.InspectElementWithFirebug=Controlla Elemento con Firebug
+firebug.BreakOnErrors=Interrompi in caso di errori
+firebug.InspectTooltip=Seleziona un elemento nella pagina da analizzare
+firebug.EditHTMLTooltip=Modifica HTML
+firebug.Profile=Profila
+firebug.Clear=Svuota
+firebug.ClearConsole=Svuota console
+firebug.ClearTooltip=Svuota la console
+firebug.All=Tutto
+firebug.Images=Immagini
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Editor esterni disponibili
+editors.Editor=Nome editor
+editors.Executable=Percorso
+editors.Launch_Arguments=Argomenti
+editors.Add=Aggiungi…
+editors.Remove=Elimina
+editors.Change=Modifica…
+editors.Move_Up=Sposta su
+editors.Close=Chiudi
+editors.Browse=Sfoglia…
+changeEditor.Editor_Configuration=Configurazione dell\'editor
+changeEditor.Name=Nome editor:
+changeEditor.Executable=Apri con
+changeEditor.CmdLine=Argomenti:
+changeEditor.Supplied_arguments=Argomenti suggeriti
+changeEditor.URL_of_file=: URL del file (se %url è mancante verrà aggiunto %file come argomento predefinito)
+changeEditor.Path_to_local_file=: percorso del file locale (o della copia temporanea)
+changeEditor.Line_number=: numero della riga (se disponibile)
+changeEditor.Invalid_Application_Path=Percorso dell\'applicazione non valido
+changeEditor.Application_does_not_exist=L\'applicazione specificata non esiste
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Modifica
+firebug.css.sourceEdit=Modifica sorgente caricato
+firebug.css.sourceEdit.tooltip=Fare clic per modificare il sorgente del foglio di stile come caricato dal browser
+firebug.css.liveEdit=Modifica sorgente estratto
+firebug.css.liveEdit.tooltip=Fare clic per modificare il foglio di stile estratto dal browser
+firebug.EditCSSTooltip=Modifica foglio di stile
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Utilizzando la modalità di navigazione anonima non verrà conservato alcun sito
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Avvisa al verificarsi di punti di arresto
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=Per attivare/disattivare questo avviso utilizzare la relativa opzione nel <a>menu della scheda del pannello</a>
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=È possibile disattivare il debugger per questo elemento con un punto di arresto disattivato
+firebug.bon.tooltip.disableDebuggerKeyword2=Disattiva il debugger creando un punto di arresto disattivato
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(Il pannello Script deve essere abilitato per utilizzare questa funzione)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=Nessun oggetto figlio
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=altri elementi
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S elemento memorizzato;%1$S elementi memorizzati
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Proprietà oggetto
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(nessun elemento)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=L\'oggetto dell\'URL è stato revocato molto probabilmente usando il metodo revokeObjectURL
+firebug.failedToPreviewImageURL=Impossibile caricare l\'URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=La profilazione della memoria è stata avviata
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Oggetti aggiunti durante la profilazione
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Risultati della profilazione della memoria
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Sessione completa
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/ja-JP/cookies.properties b/locale/ja-JP/cookies.properties
index 9a39774..c4a618a 100644
--- a/locale/ja-JP/cookies.properties
+++ b/locale/ja-JP/cookies.properties
@@ -1,276 +1,276 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookie
-panel.tip.cookies=Cookie の調査と操作ができます
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=セッション
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=サイトから Cookie を受け入れ
-cookies.tip.AllowGlobally=デフォルトで Cookie をすべて受け入れるか、デフォルトで Cookie をすべてブロックするか
-# LOCALIZATION NOTE (cookies.LogEvents, cookies.tip.LogEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Cookie イベントを表示
-cookies.tip.showCookieEvents=Cookie イベント (変更と削除) をコンソールに記録します
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=拒否した Cookie をクリア
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=切り取り
-cookies.Copy=コピー
-cookies.CopyAll=すべてコピー
-cookies.Paste=貼り付け
-cookies.Delete=削除
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=値をクリア
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=編集
-cookies.Accept=受け入れ
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=ヘッダをリセット
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=Cookie 使用の常時許可と常時禁止を、Web サイトごとに指定できます。\n制御したいサイトの厳密なアドレスを入力し、不許可、現在のセッションのみ、\n許可のいずれかをクリックしてください。
-cookies.ExceptionsTitle=例外 - Cookie
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Cookie モニタリングのサポート
-cookies.HostEnable=%S で Cookie パネル有効化
-cookies.HostDisable=%S で Cookie パネル無効化
-cookies.Permissions=Cookie パネル有効化/無効化
-cookies.PermissionsIntro=Cookie パネルが有効化されたり無効化されたりするサイトを選んでください。
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=システムページ
-cookies.LocalFiles=ローカルファイル
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when cookies
-# are going to be deleted deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=一覧にある Cookie をすべて削除しますか?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=一覧にあるセッション Cookie をすべて削除しますか?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-cookies.confirm.Remove_All_From_Host=%S からの Cookie をすべて削除しますか?
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.Confirm_cookie_removal=Cookie 削除を確認
-cookies.tip.Confirm_cookie_removal=チェックすると、一覧にある Cookie をすべて削除する前に確認ダイアログが表示されます。
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-cookies.removeall.tooltip=一覧にある Cookie をすべて削除します。
-# that says whether a confirmation dialog is displayed when removing cookies.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.Remove_Session_Cookies=セッション Cookie を削除
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-cookies.removeallsession.tooltip=一覧にあるセッション Cookie をすべて削除します。
-# Cookies->Remove Session Cookies menu
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.createcookie.tooltip=%S に新規 Cookie を作成
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-cookies.createcookie.defaultvalue=内容
-# examples: Create new cookie for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-cookies.perm.manage.tooltip=%S の Cookie 可否設定を管理
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-cookies.console.cookiescleared=Cookie はすべて削除されました。
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-cookies.console.sessioncookiescleared=セッション Cookie はすべて削除されました。
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-cookies.console.cookiesrejected=拒否された Cookie:
-cookies.console.nocookiesreceived=Cookie の受信なし
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-cookies.console.cookie=Cookie
-cookies.console.deleted=削除
-cookies.console.added=追加
-cookies.console.changed=変更
-cookies.console.cleared=クリア
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-cookies.domain.label=ドメイン
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.secure.label=セキュア
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-cookies.info.valuetab.label=内容
-cookies.info.rawdatatab.Raw_Data=生データ
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-cookies.default.session=デフォルト (セッション Cookie を受け入れ)
-cookies.default.thirdPartySession=デフォルト (セッション Cookie を受け入れ)
-cookies.default.thirdParty=デフォルト (Cookie を受け入れ)
-cookies.default.allow=デフォルト (Cookie を受け入れ)
-cookies.default.deny=デフォルト (Cookie を拒否)
-cookies.default.warn=デフォルト (Cookie を受け入れる前に警告)
-cookies.default.limitThirdParty=デフォルト (サードパーティー Cookie を制限)
-cookies.host.session=%S からのセッション Cookie を受け入れ
-cookies.host.accept=%S からの Cookie を受け入れ
-cookies.host.reject=%S からの Cookie を拒否
-cookies.host.limitThirdParty=%S へのサードパーティー Cookie を制限
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-cookies.edit.invalidname=Cookie の名前が不正です。
-cookies.edit.invalidhost=Cookie のホストが不正です。
-cookies.edit.invalidpath=Cookie のパスが不正です。
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.domain,
-# cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-cookies.header.name=名前
-cookies.header.value=内容
-cookies.header.rawValue=生の値
-cookies.header.domain=ドメイン
-cookies.header.size=サイズ
-cookies.header.rawSize=生のサイズ
-cookies.header.path=パス
-cookies.header.expires=有効期限
-cookies.header.security=セキュリティ
-cookies.header.httponly=HTTP限定
-cookies.header.maxAge=生存期間
-# Column labels used in the cookie header.
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.domain.tooltip, cookies.header.size.tooltip, cookies.header.path.tooltip,
-# cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.status.tooltip, cookies.header.httponly.tooltip):
-cookies.header.name.tooltip=Cookie の名前
-cookies.header.value.tooltip=Cookie に格納された値
-cookies.header.rawValue.tooltip=Cookie に格納された生の値
-cookies.header.domain.tooltip=Cookie の格納を行ったドメイン
-cookies.header.rawSize.tooltip=格納された Cookie の生のサイズ
-cookies.header.size.tooltip=格納された Cookie のサイズ
-cookies.header.path.tooltip=Cookie が有効になるディレクトリ
-cookies.header.expires.tooltip=Cookie が失効する日付
-cookies.header.security.tooltip=セキュア Cookie か否かを示します
-cookies.header.httponly.tooltip=Cookie が HTTP 限定 Cookie かどうかを示します
-cookies.header.maxAge.tooltip=Cookieを保存する最大時間
-# Column tooltips used in the cookie header.
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Cookie 受信
-cookies.netinfo.Sent_Cookies=Cookie 送信
-cookies.netinfo.deleted.tooltip=リクエストで Cookie が有効期限切れになりました
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=パスフィルタ
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookie
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Cookie をすべてエクスポート
-cookies.export.Export_All_Cookies_Tooltip=cookies.txt ファイルにブラウザ Cookie をすべてエクスポートします
-cookies.export.Export_For_Site=このサイトの Cookie をエクスポート
-cookies.export.Export_For_Site_Tooltip=cookies.txt ファイルに %S の Cookie をエクスポートします
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=アクティブページがありません。
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Cookie 変更でブレーク
-cookies.Disable_Break_On_Cookie=Cookie 変更でブレークを無効化
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie ブレークポイント
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie='%S' cookie でブレーク
-cookies.menu.tooltip.Break_On_Cookie=削除または変更時に'%S'でブレークします。
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=ブレークポイント条件を編集
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=ブレークポイント条件の評価に失敗
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Cookie を削除
-cookies.Create=Cookie を作成
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=ツール
-cookies.ToolsTooltip=ツール
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=すべての Cookie を表示
-cookies.ViewAllTooltip=組み込みの Cookie マネージャを開きます
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Web サイト許可
-cookies.ViewExceptionsTooltip=許可または拒否された Web サイトの一覧を表示
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=フィルタ
-cookies.FilterTooltip=Cookie リストをフィルタするとき指定されたオプションを使用します。
-cookies.filter.byPath=現在のパスで Cookie をフィルタ
-cookies.filter.byPathTooltip=現在のパスに合致する Cookie だけを表示します。
-cookies.filter.showRejectedCookies=拒否された Cookie を表示
-cookies.filter.showRejectedCookiesTooltip=拒否された Cookie もリストに表示します。
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label): Edit Cookie dialog UI
-cookies.edit.title=Cookie を編集
-cookies.edit.name.label=名前:
-cookies.edit.domain.label=ホスト:
-cookies.edit.path.label=パス:
-cookies.edit.expire.label=有効期限:
-cookies.edit.value.label=値:
-cookies.edit.secure.label=セキュア Cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=セッション
-cookies.edit.urlEncode.label=値を URL エンコード
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookie
-cookies.console.Filter_By_Cookies=Cookie でフィルタ
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Cookie をすべて削除
-cookie.sizeinfo.Size=サイズ
-cookie.sizeinfo.Raw_Size=生のサイズ
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookie
+panel.tip.cookies=Cookie の調査と操作ができます
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=セッション
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=サイトから Cookie を受け入れ
+cookies.tip.AllowGlobally=デフォルトで Cookie をすべて受け入れるか、デフォルトで Cookie をすべてブロックするか
+# LOCALIZATION NOTE (cookies.LogEvents, cookies.tip.LogEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Cookie イベントを表示
+cookies.tip.showCookieEvents=Cookie イベント (変更と削除) をコンソールに記録します
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=拒否した Cookie をクリア
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=切り取り
+cookies.Copy=コピー
+cookies.CopyAll=すべてコピー
+cookies.Paste=貼り付け
+cookies.Delete=削除
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=値をクリア
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=編集
+cookies.Accept=受け入れ
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=ヘッダをリセット
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=Cookie 使用の常時許可と常時禁止を、Web サイトごとに指定できます。\n制御したいサイトの厳密なアドレスを入力し、不許可、現在のセッションのみ、\n許可のいずれかをクリックしてください。
+cookies.ExceptionsTitle=例外 - Cookie
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Cookie モニタリングのサポート
+cookies.HostEnable=%S で Cookie パネル有効化
+cookies.HostDisable=%S で Cookie パネル無効化
+cookies.Permissions=Cookie パネル有効化/無効化
+cookies.PermissionsIntro=Cookie パネルが有効化されたり無効化されたりするサイトを選んでください。
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=システムページ
+cookies.LocalFiles=ローカルファイル
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when cookies
+# are going to be deleted deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=一覧にある Cookie をすべて削除しますか?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=一覧にあるセッション Cookie をすべて削除しますか?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+cookies.confirm.Remove_All_From_Host=%S からの Cookie をすべて削除しますか?
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.Confirm_cookie_removal=Cookie 削除を確認
+cookies.tip.Confirm_cookie_removal=チェックすると、一覧にある Cookie をすべて削除する前に確認ダイアログが表示されます。
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+cookies.removeall.tooltip=一覧にある Cookie をすべて削除します。
+# that says whether a confirmation dialog is displayed when removing cookies.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.Remove_Session_Cookies=セッション Cookie を削除
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+cookies.removeallsession.tooltip=一覧にあるセッション Cookie をすべて削除します。
+# Cookies->Remove Session Cookies menu
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.createcookie.tooltip=%S に新規 Cookie を作成
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+cookies.createcookie.defaultvalue=内容
+# examples: Create new cookie for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+cookies.perm.manage.tooltip=%S の Cookie 可否設定を管理
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+cookies.console.cookiescleared=Cookie はすべて削除されました。
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+cookies.console.sessioncookiescleared=セッション Cookie はすべて削除されました。
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+cookies.console.cookiesrejected=拒否された Cookie:
+cookies.console.nocookiesreceived=Cookie の受信なし
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+cookies.console.cookie=Cookie
+cookies.console.deleted=削除
+cookies.console.added=追加
+cookies.console.changed=変更
+cookies.console.cleared=クリア
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+cookies.domain.label=ドメイン
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.secure.label=セキュア
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+cookies.info.valuetab.label=内容
+cookies.info.rawdatatab.Raw_Data=生データ
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+cookies.default.session=デフォルト (セッション Cookie を受け入れ)
+cookies.default.thirdPartySession=デフォルト (セッション Cookie を受け入れ)
+cookies.default.thirdParty=デフォルト (Cookie を受け入れ)
+cookies.default.allow=デフォルト (Cookie を受け入れ)
+cookies.default.deny=デフォルト (Cookie を拒否)
+cookies.default.warn=デフォルト (Cookie を受け入れる前に警告)
+cookies.default.limitThirdParty=デフォルト (サードパーティー Cookie を制限)
+cookies.host.session=%S からのセッション Cookie を受け入れ
+cookies.host.accept=%S からの Cookie を受け入れ
+cookies.host.reject=%S からの Cookie を拒否
+cookies.host.limitThirdParty=%S へのサードパーティー Cookie を制限
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+cookies.edit.invalidname=Cookie の名前が不正です。
+cookies.edit.invalidhost=Cookie のホストが不正です。
+cookies.edit.invalidpath=Cookie のパスが不正です。
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.domain,
+# cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+cookies.header.name=名前
+cookies.header.value=内容
+cookies.header.rawValue=生の値
+cookies.header.domain=ドメイン
+cookies.header.size=サイズ
+cookies.header.rawSize=生のサイズ
+cookies.header.path=パス
+cookies.header.expires=有効期限
+cookies.header.security=セキュリティ
+cookies.header.httponly=HTTP限定
+cookies.header.maxAge=生存期間
+# Column labels used in the cookie header.
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.domain.tooltip, cookies.header.size.tooltip, cookies.header.path.tooltip,
+# cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.status.tooltip, cookies.header.httponly.tooltip):
+cookies.header.name.tooltip=Cookie の名前
+cookies.header.value.tooltip=Cookie に格納された値
+cookies.header.rawValue.tooltip=Cookie に格納された生の値
+cookies.header.domain.tooltip=Cookie の格納を行ったドメイン
+cookies.header.rawSize.tooltip=格納された Cookie の生のサイズ
+cookies.header.size.tooltip=格納された Cookie のサイズ
+cookies.header.path.tooltip=Cookie が有効になるディレクトリ
+cookies.header.expires.tooltip=Cookie が失効する日付
+cookies.header.security.tooltip=セキュア Cookie か否かを示します
+cookies.header.httponly.tooltip=Cookie が HTTP 限定 Cookie かどうかを示します
+cookies.header.maxAge.tooltip=Cookieを保存する最大時間
+# Column tooltips used in the cookie header.
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Cookie 受信
+cookies.netinfo.Sent_Cookies=Cookie 送信
+cookies.netinfo.deleted.tooltip=リクエストで Cookie が有効期限切れになりました
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=パスフィルタ
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookie
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Cookie をすべてエクスポート
+cookies.export.Export_All_Cookies_Tooltip=cookies.txt ファイルにブラウザ Cookie をすべてエクスポートします
+cookies.export.Export_For_Site=このサイトの Cookie をエクスポート
+cookies.export.Export_For_Site_Tooltip=cookies.txt ファイルに %S の Cookie をエクスポートします
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=アクティブページがありません。
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Cookie 変更でブレーク
+cookies.Disable_Break_On_Cookie=Cookie 変更でブレークを無効化
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie ブレークポイント
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie='%S' cookie でブレーク
+cookies.menu.tooltip.Break_On_Cookie=削除または変更時に'%S'でブレークします。
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=ブレークポイント条件を編集
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=ブレークポイント条件の評価に失敗
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Cookie を削除
+cookies.Create=Cookie を作成
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=ツール
+cookies.ToolsTooltip=ツール
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=すべての Cookie を表示
+cookies.ViewAllTooltip=組み込みの Cookie マネージャを開きます
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Web サイト許可
+cookies.ViewExceptionsTooltip=許可または拒否された Web サイトの一覧を表示
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=フィルタ
+cookies.FilterTooltip=Cookie リストをフィルタするとき指定されたオプションを使用します。
+cookies.filter.byPath=現在のパスで Cookie をフィルタ
+cookies.filter.byPathTooltip=現在のパスに合致する Cookie だけを表示します。
+cookies.filter.showRejectedCookies=拒否された Cookie を表示
+cookies.filter.showRejectedCookiesTooltip=拒否された Cookie もリストに表示します。
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label): Edit Cookie dialog UI
+cookies.edit.title=Cookie を編集
+cookies.edit.name.label=名前:
+cookies.edit.domain.label=ホスト:
+cookies.edit.path.label=パス:
+cookies.edit.expire.label=有効期限:
+cookies.edit.value.label=値:
+cookies.edit.secure.label=セキュア Cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=セッション
+cookies.edit.urlEncode.label=値を URL エンコード
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookie
+cookies.console.Filter_By_Cookies=Cookie でフィルタ
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Cookie をすべて削除
+cookie.sizeinfo.Size=サイズ
+cookie.sizeinfo.Raw_Size=生のサイズ
diff --git a/locale/ja-JP/firebug-amo.properties b/locale/ja-JP/firebug-amo.properties
index fe784ab..8387505 100644
--- a/locale/ja-JP/firebug-amo.properties
+++ b/locale/ja-JP/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug は Firefox と融合し、ブラウジング中に、あなたの指先に豊かな開発ツールを提供します。どんなウェブページででも、あなたは、CSS と HTML と Javascript を編集し、デバッグし、モニタすることができます。\n\nFirebug 1.6 には Firefox 3.6 またはそれ以上が必要です。
-firebug.amo.description=Firebug は Firefox と融合し、ブラウジング中に、あなたの指先に豊かな開発ツールを提供します。どんなウェブページででも、あなたは、CSS と HTML と Javascript を編集し、デバッグし、モニタすることができます。\n\nドキュメント、スクリーンショット、ディスカッションフォーラムは、Firebug のウェブサイトで: http://getfirebug.com
-firebug.amo.developer.comments=何か問題があるときは、FireBug FAQ をご覧ください。\n\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug は Firefox と融合し、ブラウジング中に、あなたの指先に豊かな開発ツールを提供します。どんなウェブページででも、あなたは、CSS と HTML と Javascript を編集し、デバッグし、モニタすることができます。\n\nFirebug 1.6 には Firefox 3.6 またはそれ以上が必要です。
+firebug.amo.description=Firebug は Firefox と融合し、ブラウジング中に、あなたの指先に豊かな開発ツールを提供します。どんなウェブページででも、あなたは、CSS と HTML と Javascript を編集し、デバッグし、モニタすることができます。\n\nドキュメント、スクリーンショット、ディスカッションフォーラムは、Firebug のウェブサイトで: http://getfirebug.com
+firebug.amo.developer.comments=何か問題があるときは、FireBug FAQ をご覧ください。\n\nhttp://getfirebug.com/faq.html
diff --git a/locale/ja-JP/firebug-tracing.properties b/locale/ja-JP/firebug-tracing.properties
index c6ac2f7..739cd28 100644
--- a/locale/ja-JP/firebug-tracing.properties
+++ b/locale/ja-JP/firebug-tracing.properties
@@ -1,94 +1,94 @@
-#n\n
-#n\n
-Open_Firebug_Tracing=Firebug トレースを開く
-Always_Open_Firebug_Tracing=常に Firebug トレースを開く
-#n\n
-title.Tracing=トレース
-tracing.Show_Scope_Variables=スコープ変数を表示
-tracing.Show_Time=時間を表示
-tracing.tab.Stack=スタック
-tracing.tab.Exception=例外
-tracing.tab.Properties=プロパティ
-tracing.tab.Scope=スコープ
-tracing.tab.Response=レスポンス
-tracing.tab.Source=ソース
-tracing.tab.Interfaces=インターフェース
-tracing.tab.Object=オブジェクト
-tracing.tab.Event=イベント
-tracing.cmd.Clear=クリア
-tracing.cmd.tip.Clear=すべてのメッセージを消去
-tracing.cmd.Find=検索
-tracing.cmd.tip.Find=テキストを検索
-tracing.cmd.Bookmark=ブックマーク
-tracing.cmd.tip.Bookmark=ブックマークを挿入
-tracing.cmd.Restart=Firefox を再起動
-tracing.cmd.tip.Restart=Firefox を再起動
-tracing.cmd.Exit=Firefoxを終了
-tracing.cmd.tip.Exit=Firefox を終了
-tracing.cmd.Save=ファイルに保存
-tracing.cmd.tip.Save=ログをファイルに保存
-tracing.cmd.Load=ファイルから読み込み
-tracing.cmd.tip.Load=ログをファイルから読み込み
-tracing.cmd.Expand_All=すべて展開
-tracing.cmd.Collapse_All=すべて折り畳む
-tracing.cmd.Tools=ツール
-tracing.cmd.tip.Tools=ツール
-tracing.cmd.Clear_Browser_Cache=ブラウザキャッシュをクリア
-tracing.cmd.tip.Clear_Browser_Cache=ブラウザキャッシュをクリア
-tracing.cmd.Force_Garbage_Collector=ガベージコレクタを強制実行
-tracing.cmd.tip.Force_Garbage_Collector=ガベージコレクタを強制実行
-tracing.cmd.Open_Profile_Directory=プロファイルディレクトリを開く
-tracing.cmd.tip.Open_Profile_Directory=プロファイルディレクトリを開く
-tracing.option.A11Y_Description=アクセシビリティ問題
-tracing.option.ACTIVATION_Description=Firebug アクティベーション
-tracing.option.ACTIVITYOBSERVER_Description=Firebug アクティビティオブザーバ
-tracing.option.ANNOTATIONS_Description=Firebug Webサイト注釈
-tracing.option.BP_Description=ブレークポイント
-tracing.option.CACHE_Description=ソースキャッシュ
-tracing.option.COMMANDLINE_Description=コマンドラインとコマンドラインポップアップ
-tracing.option.COMPILATION_UNITS_Description=スクリプトコンパイルユニット
-tracing.option.CONSOLE_Description=コンソールパネル
-tracing.option.CSS_Description=CSS パース
-tracing.option.DISPATCH_Description=イベントディスパッチ
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate 作成
-tracing.option.EDITOR_Description=インラインエディタとオートコンプリート
-tracing.option.ERRORLOG_Description=JS,CSS,XML 等のエラーログ
-tracing.option.ERRORS_Description=Firebug 内部エラー
-tracing.option.EVAL_Description=スクリプト評価
-tracing.option.FBS_BP_Description=Firebug サービス ブレークポイント
-tracing.option.FBS_CREATION_Description=Firebug サービス スクリプト作成
-tracing.option.FBS_ERRORS_Description=Firebug サービス エラー
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug サービス 検索デバッガ
-tracing.option.FBS_FUNCTION_Description=Firebug サービス 関数
-tracing.option.FBS_JSDCONTEXT_Description=Firebug サービス JavaScript デバッガコンテキスト
-tracing.option.FBS_SRCUNITS_Description=Firebug サービス ソースユニット
-tracing.option.FBS_STEP_Description=Firebug サービス JavaScript デバッガステップ
-tracing.option.FBS_TRACKFILES_Description=Firebug サービス ファイル追跡
-tracing.option.FUNCTION_NAMES_Description=JavaScript 関数名
-tracing.option.HISTORY_Description=Firebug ナビゲーション履歴
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP リクエストオブザーバ
-tracing.option.INFOTIP_Description=インフォチップ
-tracing.option.INITIALIZE_Description=Firebug 初期化
-tracing.option.INSPECT_Description=インスペクタ
-tracing.option.JSONVIEWER_Description=JSON ビューア
-tracing.option.LINETABLE_Description=スクリプト行テーブル
-tracing.option.LOCALE_Description=ローカライズ
-tracing.option.LOCATIONS_Description=ソースロケーション
-tracing.option.NET_Description=接続パネル
-tracing.option.NET_EVENTS_Description=ネットワークイベント
-tracing.option.OPTIONS_Description=Firebug 設定
-tracing.option.PANELS_Description=パネル
-tracing.option.SHORTCUTS_Description=キーボードショートカット
-tracing.option.SOURCEFILES_Description=JavaScript ソースファイル
-tracing.option.SPY_Description=XMLHttpRequests オブザーバ
-tracing.option.STACK_Description=JavaScript コールスタック
-tracing.option.STORAGE_Description=設定ストレージ
-tracing.option.SVGVIEWER_Description=SVG ビューア
-tracing.option.FONTS_Description=フォント情報とフォントビュアー
-tracing.option.TOOLTIP_Description=スタートボタン ツールチップ
-tracing.option.TOPLEVEL_Description=トップレベル JavaScript
-tracing.option.UI_LOOP_Description=JavaScript デバッグユーザインターフェース
-tracing.option.WINDOWS_Description=Firebug ウインドウとタブウォッチャ
-tracing.option.XMLVIEWER_Description=XML ビューア
+#n\n
+#n\n
+Open_Firebug_Tracing=Firebug トレースを開く
+Always_Open_Firebug_Tracing=常に Firebug トレースを開く
+#n\n
+title.Tracing=トレース
+tracing.Show_Scope_Variables=スコープ変数を表示
+tracing.Show_Time=時間を表示
+tracing.tab.Stack=スタック
+tracing.tab.Exception=例外
+tracing.tab.Properties=プロパティ
+tracing.tab.Scope=スコープ
+tracing.tab.Response=レスポンス
+tracing.tab.Source=ソース
+tracing.tab.Interfaces=インターフェース
+tracing.tab.Object=オブジェクト
+tracing.tab.Event=イベント
+tracing.cmd.Clear=クリア
+tracing.cmd.tip.Clear=すべてのメッセージを消去
+tracing.cmd.Find=検索
+tracing.cmd.tip.Find=テキストを検索
+tracing.cmd.Bookmark=ブックマーク
+tracing.cmd.tip.Bookmark=ブックマークを挿入
+tracing.cmd.Restart=Firefox を再起動
+tracing.cmd.tip.Restart=Firefox を再起動
+tracing.cmd.Exit=Firefoxを終了
+tracing.cmd.tip.Exit=Firefox を終了
+tracing.cmd.Save=ファイルに保存
+tracing.cmd.tip.Save=ログをファイルに保存
+tracing.cmd.Load=ファイルから読み込み
+tracing.cmd.tip.Load=ログをファイルから読み込み
+tracing.cmd.Expand_All=すべて展開
+tracing.cmd.Collapse_All=すべて折り畳む
+tracing.cmd.Tools=ツール
+tracing.cmd.tip.Tools=ツール
+tracing.cmd.Clear_Browser_Cache=ブラウザキャッシュをクリア
+tracing.cmd.tip.Clear_Browser_Cache=ブラウザキャッシュをクリア
+tracing.cmd.Force_Garbage_Collector=ガベージコレクタを強制実行
+tracing.cmd.tip.Force_Garbage_Collector=ガベージコレクタを強制実行
+tracing.cmd.Open_Profile_Directory=プロファイルディレクトリを開く
+tracing.cmd.tip.Open_Profile_Directory=プロファイルディレクトリを開く
+tracing.option.A11Y_Description=アクセシビリティ問題
+tracing.option.ACTIVATION_Description=Firebug アクティベーション
+tracing.option.ACTIVITYOBSERVER_Description=Firebug アクティビティオブザーバ
+tracing.option.ANNOTATIONS_Description=Firebug Webサイト注釈
+tracing.option.BP_Description=ブレークポイント
+tracing.option.CACHE_Description=ソースキャッシュ
+tracing.option.COMMANDLINE_Description=コマンドラインとコマンドラインポップアップ
+tracing.option.COMPILATION_UNITS_Description=スクリプトコンパイルユニット
+tracing.option.CONSOLE_Description=コンソールパネル
+tracing.option.CSS_Description=CSS パース
+tracing.option.DISPATCH_Description=イベントディスパッチ
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate 作成
+tracing.option.EDITOR_Description=インラインエディタとオートコンプリート
+tracing.option.ERRORLOG_Description=JS,CSS,XML 等のエラーログ
+tracing.option.ERRORS_Description=Firebug 内部エラー
+tracing.option.EVAL_Description=スクリプト評価
+tracing.option.FBS_BP_Description=Firebug サービス ブレークポイント
+tracing.option.FBS_CREATION_Description=Firebug サービス スクリプト作成
+tracing.option.FBS_ERRORS_Description=Firebug サービス エラー
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug サービス 検索デバッガ
+tracing.option.FBS_FUNCTION_Description=Firebug サービス 関数
+tracing.option.FBS_JSDCONTEXT_Description=Firebug サービス JavaScript デバッガコンテキスト
+tracing.option.FBS_SRCUNITS_Description=Firebug サービス ソースユニット
+tracing.option.FBS_STEP_Description=Firebug サービス JavaScript デバッガステップ
+tracing.option.FBS_TRACKFILES_Description=Firebug サービス ファイル追跡
+tracing.option.FUNCTION_NAMES_Description=JavaScript 関数名
+tracing.option.HISTORY_Description=Firebug ナビゲーション履歴
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP リクエストオブザーバ
+tracing.option.INFOTIP_Description=インフォチップ
+tracing.option.INITIALIZE_Description=Firebug 初期化
+tracing.option.INSPECT_Description=インスペクタ
+tracing.option.JSONVIEWER_Description=JSON ビューア
+tracing.option.LINETABLE_Description=スクリプト行テーブル
+tracing.option.LOCALE_Description=ローカライズ
+tracing.option.LOCATIONS_Description=ソースロケーション
+tracing.option.NET_Description=接続パネル
+tracing.option.NET_EVENTS_Description=ネットワークイベント
+tracing.option.OPTIONS_Description=Firebug 設定
+tracing.option.PANELS_Description=パネル
+tracing.option.SHORTCUTS_Description=キーボードショートカット
+tracing.option.SOURCEFILES_Description=JavaScript ソースファイル
+tracing.option.SPY_Description=XMLHttpRequests オブザーバ
+tracing.option.STACK_Description=JavaScript コールスタック
+tracing.option.STORAGE_Description=設定ストレージ
+tracing.option.SVGVIEWER_Description=SVG ビューア
+tracing.option.FONTS_Description=フォント情報とフォントビュアー
+tracing.option.TOOLTIP_Description=スタートボタン ツールチップ
+tracing.option.TOPLEVEL_Description=トップレベル JavaScript
+tracing.option.UI_LOOP_Description=JavaScript デバッグユーザインターフェース
+tracing.option.WINDOWS_Description=Firebug ウインドウとタブウォッチャ
+tracing.option.XMLVIEWER_Description=XML ビューア
diff --git a/locale/ja-JP/firebug.properties b/locale/ja-JP/firebug.properties
index 19c4baa..3ead456 100644
--- a/locale/ja-JP/firebug.properties
+++ b/locale/ja-JP/firebug.properties
@@ -1,1702 +1,1702 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=コンソール
-panel.tip.console=コンソールメッセージの観察と JavsScript コマンドの実行ができます
-Panel-net=ネット
-panel.tip.net=ネットワークトラフィックの分析ができます
-Panel-html=HTML
-panel.tip.html=DOM ノードの調査と操作ができます
-Panel-stylesheet=CSS
-panel.tip.stylesheet=CSS スタイルシートの調査と操作ができます
-Panel-script=スクリプト
-panel.tip.script=JavaScript のデバッグができます
-Panel-dom=DOM
-panel.tip.dom=DOM のプロパティの調査と操作ができます
-Panel-css=スタイル
-panel.tip.css=選択中の DOM ノードについて CSS ルールの調査と操作ができます
-Panel-computed=累積
-panel.tip.computed=選択中の DOM ノードについて累積された CSS 値の調査と操作ができます
-Panel-layout=レイアウト
-panel.tip.layout=選択中の DOM ノードについてレイアウト情報の調査と操作ができます
-Panel-domSide=DOM
-panel.tip.domSide=選択中の DOM ノードについて DOM プロパティの調査と操作ができます
-Panel-watches=ウォッチ
-panel.tip.watches=現在のスタックフレームに登場する JavaScript 変数の調査とウォッチ式の定義ができます
-Panel-breakpoints=ブレークポイント
-panel.tip.breakpoints=ブレークポイントのセットを操作できます
-Panel-callstack=スタック
-panel.tip.callstack=現在の JavaScript コールスタックを観察できます
-Panel-scopes=スコープ
-firebug.DetachFirebug=Firebug を新規ウィンドウで開く
-firebug.AttachFirebug=Firebug をブラウザウインドウに結合
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=0
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=計 %1$S 個の Firebug;計 %1$S 個の Firebug
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=非アクティブ
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=ブラウザ内
-minimized=最小化
-enablement.for_all_pages=すべてのページで
-enablement.on=有効
-enablement.off=無効
-enablement.Panel_activation_status=パネル有効化状態:
-none=クローズ
-Firebug_-_inactive_for_current_website=Firebug - 現在の Web サイトでは非アクティブ
-Activate_Firebug_for_the_current_website=現在の Web サイトでアクティブ化
-Minimized=最小化
-Minimize_Firebug=Firebug を最小化
-On_for_all_web_pages=すべての Web ページでオン
-firebug.menu.tip.On_for_all_Web_Sites=すべての Web サイトで Firebug をデフォルトでアクティブ化します
-firebug.menu.Clear_Activation_List=アクティブ化リストをクリア
-firebug.menu.tip.Clear_Activation_List=Firebug を有効にする Web サイトのリストをクリアします
-firebug.menu.Detached=切り離し
-firebug.menu.tip.Detached=Firebug を独立したウィンドウに切り離し
-firebug.menu.Top=上
-firebug.menu.tip.Top=ユーザエージェントウィンドウの上部に Firebug を配置します
-firebug.menu.Bottom=下
-firebug.menu.tip.Bottom=ユーザエージェントウィンドウの下部に Firebug を配置します
-firebug.menu.Left=左
-firebug.menu.tip.Left=ユーザエージェントウィンドウの左側に Firebug を配置します
-firebug.menu.Right=右
-firebug.menu.tip.Right=ユーザエージェントウィンドウの右側に Firebug を配置します
-firebug.uiLocation=Firebug UI の位置
-firebug.menu.tip.UI_Location=Firebug ユーザインターフェースの位置
-# LOCALIZATION NOTE (annotations.confirm.clear):
-# Used in a confirmation dialog when all Firebug annotations are going to be deleted
-annotations.confirm.clear=本当にすべてのサイトの Firebug 注釈をクリアしますか?
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Firebug オプション
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=すべてのパネルを表示
-console.option.Show_Command_Line=コマンドラインを表示
-console.option.tip.Show_Command_Line=コマンドラインにフォーカス / コマンドラインポップアップを表示します
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=JavaScript のエラーを表示
-console.option.tip.Show_JavaScript_Errors=JavaScript エラーメッセージをコンソールに記録します
-ShowJavaScriptWarnings=JavaScript の警告を表示
-console.option.tip.Show_JavaScript_Warnings=JavaScript 警告メッセージをコンソールに記録します
-ShowCSSErrors=CSS のエラーを表示
-console.option.tip.Show_CSS_Errors=CSS エラーメッセージをコンソールに記録します
-ShowXMLHTMLErrors=XML/HTML のエラーを表示
-console.option.tip.Show_XML_HTML_Errors=Log XML と HTML のエラーメッセージをコンソールに記録します
-ShowStackTrace=エラー時にスタックトレースを表示
-console.option.tip.Show_Stack_Trace=エラーメッセージのスタックトレース情報を表示します
-ShowXMLHttpRequests=XMLHttpRequests を表示
-console.option.tip.Show_XMLHttpRequests=XMLHttpRequests をコンソールに記録します
-ShowChromeErrors=クロームのエラーを表示
-console.option.tip.Show_System_Errors=プログラム及びアドオンの内部エラーメッセージをコンソールに記録します
-ShowChromeMessages=クロームのメッセージを表示
-console.option.tip.Show_System_Messages=プログラム及びアドオンの内部メッセージをコンソールに記録します
-ShowNetworkErrors=ネットワークエラーを表示
-console.option.tip.Show_Network_Errors=ネットワークエラーメッセージをコンソールに記録します
-JavascriptOptionsStrict=厳密な警告 (性能を犠牲に)
-console.option.tip.Show_Strict_Warnings=厳密な警告もコンソールに記録します
-Command_History=コマンド履歴
-console.option.Show_Command_Editor=コマンドエディタを表示
-console.option.tip.Show_Command_Editor=コマンドエディタに切り替えます
-commandLineShowCompleterPopup=補完リストをポップアップ表示
-console.option.tip.Show_Completion_List_Popup=コマンド補完候補のポップアップを表示します
-Assertion=アサート失敗
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (%S 行目)
-LineAndCol=%S (%S 行目, %S 列目)
-InstanceLine=%S #%S (%S 行目)
-StackItem=%S (%S %S 行目)
-SystemItem=<System>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=%S パネルで調査
-panel.tip.Inspect_In_Panel=%S パネルに切り替えてオブジェクトを調査します
-NoName=(無題)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=全テキストを表示
-html.option.tip.Show_Full_Text=要素内容を省略表示しません
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=空白を表示
-html.option.tip.Show_Whitespace=ノード内の空白を表示します
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=コメントを表示
-html.option.tip.Show_Comments=コメントノードを表示します
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=実体をシンボル表示
-html.option.tip.Show_Entities_As_Symbols=すべての XML 実体をシンボルで表示します
-html.option.Show_Entities_As_Names=実体を名前表示
-html.option.tip.Show_Entities_As_Names=すべての XML 実体をその名称で表示します
-html.option.Show_Entities_As_Unicode=実体をユニコード表示
-html.option.tip.Show_Entities_As_Unicode=すべての XML 実体をユニコードで表示します
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=変更を強調表示
-html.option.tip.Highlight_Mutations=ノード内の変更を強調表示します
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=変更を展開
-html.option.tip.Expand_Mutations=変更されたノードを表示するためツリーを展開します
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=変更をスクロールして表示
-html.option.tip.Scroll_To_Mutations=変更されたノードを表示するためスクロールします
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=クイック情報ボックスを表示
-inspect.option.tip.Show_Quick_Info_Box=現在パネル内で調査している要素に関する情報をオーバーレイ表示します
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=ボックスモデルに色づけ
-inspect.option.tip.Shade_Box_Model=ボックスモデルの各部分に色を塗ります
-ScrollIntoView=スクロールして表示
-html.tip.Scroll_Into_View=要素が見えるようページをスクロールします
-NewAttribute=新規属性...
-html.tip.New_Attribute=この要素に新規属性を追加します
-html.Edit_Node=%S を編集...
-html.Node=ノード
-html.tip.Edit_Node=テキストエディタで %S を編集します
-DeleteElement=要素を削除
-html.Delete_Element=要素をツリーから削除します
-DeleteNode=ノードを削除
-html.Delete_Node=ノードをツリーから削除します
-# Quick Info Box
-quickInfo=クイック情報
-computedStyle=累積スタイル
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=変化したらブレーク
-html.Disable_Break_On_Mutate=変化したらブレークを無効化
-html.label.Break_On_Text_Change=テキスト変化でブレーク
-html.label.HTML_Breakpoints=HTMLブレークポイント
-html.label.Break_On_Attribute_Change=属性変化でブレーク
-html.tip.Break_On_Attribute_Change=この要素の属性が変化したとき、実行中の JavaScript を停止します
-html.label.Break_On_Child_Addition_or_Removal=子の追加/削除時にブレーク
-html.tip.Break_On_Child_Addition_or_Removal=この要素に子要素が追加/削除されたとき、実行中の JavaScript を停止します
-html.label.Break_On_Element_Removal=要素削除時にブレーク
-html.tip.Break_On_Element_Removal=この要素が削除されたとき、実行中の JavaScript を停止します
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=すべて展開/閉じる
-html.tip.Expand/Contract_All=すべての子を再帰的に展開/折り畳みします
-# LOCALIZATION NOTE (dom.scopeName): Used within the DOM panel to name the fake property that
-# contains the innermost closure scope of a function.
-dom.scopeName=(クロージャ)
-# LOCALIZATION NOTE (dom.scopeParentName): Used within the DOM panel to name the fake property
-# that contains the parent of a closure scope.
-dom.scopeParentName=(親スコープ)
-# LOCALIZATION NOTE (dom.tip.scopeName): Used within the DOM panel as a tooltip when hovering
-# "(closure)".
-dom.tip.scopeName=コマンドライン内からアクセスするには <func>.%closureVariable を使います
-# LOCALIZATION NOTE (dom.tip.scopeMemberName): Used within the DOM panel as a tooltip when
-# hovering a variable in a closure.
-# %S: the variable name - starts with "%"
-dom.tip.scopeMemberName=コマンドライン内からアクセスするには <func>.%S を使います
-# LOCALIZATION NOTE (firebug.reps.declarativeScope, firebug.reps.objectScope, firebug.reps.withScope):
-# Labels shown to describe different types of closure scopes.
-firebug.reps.declarativeScope=[宣言位置によるスコープ]
-firebug.reps.objectScope=[オブジェクトスコープ]
-firebug.reps.withScope=[with スコープ]
-# LOCALIZATION NOTE (firebug.reps.optimizedAway): Label shown to denote a closure variable that has
-# been optimized away.
-firebug.reps.optimizedAway=(最適化済み)
-# LOCALIZATION NOTE (firebug.reps.element.attribute_value, firebug.reps.element.property_value):
-# Used in the Console panel for elements. If an input element has two different values, one set
-# as "value" attribute and one set as 'value' property, these labels are used to distinguish it.
-firebug.reps.element.attribute_value=属性値
-firebug.reps.element.property_value=プロパティ値
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=プロパティ変化でブレーク
-dom.tip.Break_On_Property_Change=このプロパティが変化したとき、実行中の JavaScript を停止します
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=プロパティ変化でのブレークを無効化
-dom.label.DOM_Breakpoints=DOM ブレークポイント
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute="%S" 属性を編集...
-html.tip.Edit_Attribute=この要素の属性 "%S" の値を編集します
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute="%S" 属性を削除
-html.tip.Delete_Attribute=この要素の属性 "%S" を削除します
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=継承元:
-SothinkWarning=Sothink SWF Catcher アドオンが Firebug の動作に支障を与えています。<br><br>詳しい情報は <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">Firebug の FAQ</a> をご覧下さい。
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=ルールがありません。<a>ルールを作成</a>できます。
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=この要素にはスタイルルールがありません。これに<a>ルールを作成</a>できます。
-EditStyle=要素のスタイルを編集...
-style.tip.Edit_Style=要素にインライン記述されたスタイルを編集します
-AddRule=ルールを追加...
-css.tip.AddRule=この要素に一般的なルールを追加します
-NewRule=新規ルール...
-css.tip.New_Rule=新規ルールを追加します
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule="%S" を削除
-css.tip.Delete_Rule=ルール "%S" とその全プロパティを削除します
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=メディアクエリを編集...
-css.menu.tip.Edit_Media_Query=このルールに紐付いたメディアクエリを編集します
-NewProp=新規プロパティ...
-css.tip.New_Prop=現在のルールに新規プロパティを追加します
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp="%S" を編集...
-css.tip.Edit_Prop=プロパティ "%S" の値を編集します
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp="%S" を無効化
-css.tip.Disable_Prop=プロパティ "%S" を無効化します
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp="%S" を削除
-css.tip.Delete_Prop=プロパティ "%S" を削除します
-# Console context menu labels.
-BreakOnThisError=このエラーで停止
-console.menu.tip.Break_On_This_Error=このエラーが発生したらすぐに実行中の JavaScript を停止します
-BreakOnAllErrors=すべてのエラーで停止
-console.menu.tip.Break_On_All_Errors=エラーが発生したらすぐに実行中の JavaScript を停止します
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=スロー/キャッチを追跡
-script.option.tip.Track_Throw_Catch=try/catch ブロックで捕捉されている場合でも例外を追跡します
-UseLastLineForEvalName=eval() の名前にソースでの最終行を使う
-UseMD5ForEvalName=eval() の名前に MD5 を使う
-# Breakpoints side panel
-Breakpoints=ブレークポイント
-ErrorBreakpoints=エラー ブレークポイント
-LoggedFunctions=記録された関数
-EnableAllBreakpoints=すべてのブレークポイントを有効化
-breakpoints.option.tip.Enable_All_Breakpoints=一覧にあるブレークポイントをすべて有効化します
-DisableAllBreakpoints=すべてのブレークポイントを無効化
-breakpoints.option.tip.Disable_All_Breakpoints=一覧にあるブレークポイントをすべて無効化します
-ClearAllBreakpoints=すべてのブレークポイントを削除
-breakpoints.option.tip.Clear_All_Breakpoints=一覧にあるブレークポイントをすべて削除します
-ConditionInput=このブレークポイントは、次の式が真の場合のみ停止します:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=ブレークポイントを削除
-breakpoints.tip.Remove_Breakpoint=このブレークポイントを削除します
-breakpoints.Disable_Breakpoint=ブレークポイントを無効化
-breakpoints.tip.Disable_Breakpoint=このブレークポイントを無効化します
-breakpoints.Enable_Breakpoint=ブレークポイントを有効化
-breakpoints.tip.Enable_Breakpoint=このブレークポイントを有効化します
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=コンティニュー
-script.balloon.Disable=無効
-ScriptsFilterStatic=静的 スクリプトを表示
-ScriptsFilterEval=静的/評価 スクリプトを表示
-ScriptsFilterEvent=静的/イベント スクリプトを表示
-ScriptsFilterAll=静的/評価/イベント スクリプトを表示
-ScriptsFilterStaticShort=静的
-ScriptsFilterEvalShort=評価
-ScriptsFilterEventShort=イベント
-ScriptsFilterAllShort=すべて
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=すべて展開
-callstack.tip.Expand_All=スタックフレームの関数をすべて展開します
-callstack.Collapse_All=すべて折り畳む
-callstack.tip.Collapse_All=スタックフレームの関数をすべて折り畳みます
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=スタックフレームはスクリプトの実行が停止しているときだけ表示されます。
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=ユーザ定義プロパティを表示
-dom.option.tip.Show_User_Props=ユーザー定義のオブジェクトプロパティを表示します
-ShowUserFuncs=ユーザ定義関数を表示
-dom.option.tip.Show_User_Funcs=ユーザー定義のオブジェクトメソッドを表示します
-ShowDOMProps=DOM プロパティを表示
-dom.option.tip.Show_DOM_Props=DOM 内で指定されたプロパティを表示します
-ShowDOMFuncs=DOM 関数を表示
-dom.option.tip.Show_DOM_Funcs=DOM 内で指定された関数を表示します
-ShowDOMConstants=DOM 定数を表示
-dom.option.tip.Show_DOM_Constants=DOM 内で指定された定数を表示します
-ShowClosures=クロージャを表示
-dom.option.tip.Show_Closures=さまざまな関数に関係するクロージャを表示 (デバッガが有効化されます)
-ShowInlineEventHandlers=インライン イベントハンドラを表示
-ShowInlineEventHandlersTooltip=存在するインライン イベントハンドラ、つまりいずれの関数にも紐付いていないものを表示します
-ShowOwnProperties=自身のプロパティのみ表示
-ShowOwnPropertiesTooltip=プロトタイプチェーンを表示しません
-ShowEnumerableProperties=列挙可能プロパティのみ表示
-ShowEnumerablePropertiesTooltip=列挙不能プロパティは表示しません
-NoMembersWarning=このオブジェクトには表示可能なプロパティがありません。
-NewWatch=新規ウォッチ式...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=ウォッチを追加
-watch.tip.Add_Watch=ウォッチサイドパネルに観察する選択/オブジェクトを追加します
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=ソースをコピー
-script.tip.Copy_Source_Code=選択したソースコードをクリップボードにコピーします
-Use_hash_plus_number_to_go_to_line=#<行番号>で行移動
-CopyValue=値をコピー
-dom.tip.Copy_Value=プロパティの値をクリップボードにコピーします
-Copy_Name=名前をコピー
-dom.tip.Copy_Name=プロパティ名をクリップボードにコピーします
-Copy_Path=パスをコピー
-dom.tip.Copy_Path=プロパティのパスをコピーします
-NewProperty=新規プロパティ...
-EditProperty=プロパティを編集...
-dom.tip.Edit_Property=プロパティの値を編集します
-EditVariable=変数を編集...
-stack.tip.Edit_Variable=変数の値を編集します
-EditWatch=ウォッチを編集...
-watch.tip.Edit_Watch=ウォッチ式の値を編集します
-DeleteProperty=プロパティを削除
-dom.tip.Delete_Property=プロパティを削除します
-DeleteWatch=ウォッチを削除
-DeleteAllWatches=ウォッチをすべて削除
-watch.tip.Delete_Watch=ウォッチ式を削除します
-watch.tip.Delete_All_Watches=ウォッチ式をすべて削除
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=ブレークポイントを設定
-script.tip.Set_Breakpoint=現在の行にブレークポイントを設定します
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=ブレークポイントの条件を編集...
-breakpoints.tip.Edit_Breakpoint_Condition=実行中の JavaScript を停止するブレークポイント条件を編集します
-NoBreakpointsWarning=このページにはブレークポイントが設定されていません。
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=適用されたスタイルのみ表示
-style.option.tip.Only_Show_Applied_Styles=要素に適用されたスタイルのみ表示します
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=ユーザエージェント CSS を表示
-style.option.tip.Show_User_Agent_CSS=ユーザエージェント により定義された CSS も表示します
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=色を 16 進表記
-computed.option.tip.Colors_As_Hex=色を 16 進数で表示します
-computed.option.label.Colors_As_RGB=色を RGB 表記
-computed.option.tip.Colors_As_RGB=色を RGB で表示します
-computed.option.label.Colors_As_HSL=色を HSL 表記
-computed.option.tip.Colors_As_HSL=色を HSL で表示します
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=擬似クラス :active のスタイルを表示します
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=擬似クラス :hover のスタイルを表示します
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=擬似クラス :focus のスタイルを表示します
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=宣言を調査
-css.tip.Inspect_Declaration=このフォントの宣言を調査します
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=簡略プロパティを展開
-css.option.tip.Expand_Shorthand_Properties=まとめて表示している CSS プロパティをその構成要素に分解します
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=アルファベット順にソート
-computed.option.tip.Sort_Alphabetically=スタイルを名称順にソートします/スタイルをカテゴリー別にグループ分けします
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Mozilla 特有のスタイルを表示
-computed.option.tip.Show_Mozilla_Specific_Styles=-moz で始まるスタイルも表示します
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=この要素にユーザー定義のスタイルルールはありません
-script.Type_any_key_to_filter_list=リストをフィルタするにはいずれかのキーを押してください
-# LOCALIZATION NOTE (location.inline):
-# Label used within the Location Menu for inline styles or scripts
-location.inline=インライン
-# LOCALIZATION NOTE (location.no_domain):
-# Label used within the Location Menu for the group of scripts,
-# which don't have a domain specified like e.g. eval()'ed scripts
-location.no_domain=ドメインなし
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=position
-LayoutAdjacent=adjacent
-position=position
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=定規とガイドを表示
-layout.option.tip.Show_Rulers=レイアウトボックスのパーツ上でホバーさせたとき、ページ上に定規とガイドを表示します
-# Net panel
-Loading=読み込み中...
-Headers=ヘッダ
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=リクエスト一覧を消去します
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=ヘッダをリセット
-net.header.tip.Reset_Header=ヘッダー表示をリセットします
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=リクエストされた URL と使用された HTTP メソッド
-net.header.Status=ステータス
-net.header.Status_Tooltip=受信レスポンスの状態
-net.header.Domain=ドメイン
-net.header.Domain_Tooltip=実行されたリクエストのドメイン
-net.header.Size=サイズ
-net.header.Size_Tooltip=受信したレスポンスのサイズ (圧縮レスポンスの場合は圧縮されたサイズ)
-net.header.Timeline=タイムライン
-net.header.Timeline_Tooltip=リクエスト/レスポンスのラウンドトリップに関する詳細なタイミング情報
-net.header.Local_IP=ローカル IP
-net.header.Local_IP_Tooltip=リクエストにバインドされているローカル IP アドレスとポート番号
-net.header.Remote_IP=リモート IP
-net.header.Remote_IP_Tooltip=リクエストにバインドされているリモート IP アドレスとポート番号
-net.header.Protocol=プロトコル
-net.header.Protocol_Tooltip=Web 上でリソースを特定するのに使われた URL プロトコル
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=XHR ブレークポイント
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=XHRでブレーク
-net.tip.Break_On_XHR=XMLHttpRequest が作成されたら実行中の JavaScript を停止します
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=ソースを表示
-net.headers.pretty_print=整形して表示
-# LOCALIZATION NOTE (net.filter.label.All, net.filter.tooltip.All, net.filter.label.HTML,
-# net.filter.tooltip.HTML, net.filter.label.CSS, net.filter.tooltip.CSS, net.filter.label.JS,
-# net.filter.tooltip.JS, net.filter.label.XHR, net.filter.tooltip.XHR, net.filter.label.Images,
-# net.filter.tooltip.Images, net.filter.label.Plugins, net.filter.tooltip.Plugins,
-# net.filter.label.Media, net.filter.tooltip.Media):
-# Labels and tooltips for Net panel filter (used on the Net panel toolbar)
-net.filter.label.All=すべて
-net.filter.tooltip.All=すべての MIME タイプを表示
-net.filter.label.HTML=HTML
-net.filter.tooltip.HTML=マークアップファイルのみ表示
-net.filter.label.CSS=CSS
-net.filter.tooltip.CSS=CSS ファイルのみ表示
-net.filter.label.JS=JavaScript
-net.filter.tooltip.JS=JavaScript ファイルのみ表示
-net.filter.label.XHR=XHR
-net.filter.tooltip.XHR=XMLHttpRequests のみ表示
-net.filter.label.Images=画像
-net.filter.tooltip.Images=画像のみ表示
-net.filter.label.Plugins=プラグイン
-net.filter.tooltip.Plugins=Flash と Silverlight ファイルのみ表示
-net.filter.label.Media=メディア
-net.filter.tooltip.Media=オーディオとビデオのみ表示
-net.filter.label.Fonts=フォント
-net.filter.tooltip.Fonts=フォントのみ表示
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=POST
-Put=PUT
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=レスポンス
-URLParameters=パラメータ
-Cache=キャッシュ
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=一般情報
-fontviewer.Meta_Data=メタデータ
-fontviewer.view_source=ソースを表示
-fontviewer.Preview=プレビュー
-fontviewer.view_characters=文字を表示
-fontviewer.pretty_print=整形して表示
-fontviewer.view_sample=サンプルを表示
-fontviewer.uniqueid=ユニーク ID
-fontviewer.vendor=ベンダー
-fontviewer.license=ライセンス
-fontviewer.description=説明
-fontviewer.copyright=著作権
-fontviewer.credits=クレジット
-fontviewer.trademark=商標
-fontviewer.licensee=ライセンシー
-fontviewer.extension=拡張
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=キーでソート
-jsonviewer.do_not_sort=ソートしない
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON="%S" を JSON としてコピー
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=リクエストヘッダ
-ResponseHeaders=レスポンスヘッダ
-CachedResponseHeaders=キャッシュのレスポンスヘッダ
-PostRequestHeaders=アップロードストリームのリクエストヘッダ
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=キャッシュから直接リクエストが解決されたため、サーバからのレスポンスはありません。キャッシュされているレスポンスについては下を参照してください。
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebug のログ上限に達しました。%1$S 件表示されませんでした。;Firebug のログ上限に達しました。%1$S 件表示されませんでした。
-LimitPrefs=プレファレンス
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=上限を変更するには、次を修正してください: %S
-Refresh=リフレッシュ
-panel.tip.Refresh=パネル表示をリフレッシュします
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=新規タブで開く
-firebug.tip.Open_In_Tab=この URL を新規タブで開きます
-Open_Response_In_New_Tab=レスポンスを新規タブで開く
-net.tip.Open_Response_In_New_Tab=このレスポンスを新規タブで開きます
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=プロファイル
-ProfilerStarted=プロファイラは実行中です。レポートを見るには、再度 [プロファイル] をクリックしてください。
-ProfilerRequiresTheScriptPanel=プロファイリングを機能させるには、スクリプトパネルが有効化されていなければなりません。
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S 回の呼び出し);(%1$Sms, %2$S 回の呼び出し)
-NothingToProfile=プロファイルするアクティビティは何もありません
-PercentTooltip=この関数で消費された時間の割合
-CallsHeaderTooltip=関数の呼び出し回数
-OwnTimeHeaderTooltip=ネスト呼び出しを除く、関数で消費される時間
-TimeHeaderTooltip=ネスト呼び出しを含む、関数で消費される時間
-AvgHeaderTooltip=関数呼び出しを含む、平均時間
-MinHeaderTooltip=関数呼び出しを含む、最小時間
-MaxHeaderTooltip=関数呼び出しを含む、最大時間
-ProfileButton.Tooltip=JavaScript 実行時間をプロファイル
-Function=関数
-Percent=パーセント
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=呼び出し
-OwnTime=自己時間
-Time=時間
-Avg=平均
-Min=最小
-Max=最大
-File=ファイル
-# Support for standard actions.
-Copy=コピー
-Cut=切り取り
-Remove=除去
-Delete=削除
-Paste=貼り付け
-SelectAll=すべて選択
-html.Copy_Node=%S をコピー
-html.tip.Copy_Node=%S ノードとそのすべてのコンテンツをクリップボードにコピーします
-CopyInnerHTML=innerHTML をコピー
-html.tip.Copy_innerHTML=要素のコンテンツをクリップボードにコピーします
-CopyXPath=XPath をコピー
-html.tip.Copy_XPath=要素の XPath をクリップボードにコピーします
-Copy_CSS_Path=CSS パスをコピー
-html.tip.Copy_CSS_Path=要素の CSS パスをクリップボードにコピーします
-# LOCALIZATION NOTE (html.menu.Paste, html.tip.Paste): Context menu item (with subitems).
-# Used in the HTML Panel to paste HTML/SVG/XML/XUL/MathML contents
-# %S = the type of the content to paste (HTML, SVG, XML, XUL or MathML)
-html.menu.Paste=%S 貼り付け
-html.tip.Paste=%S のコンテンツとして貼り付け
-# LOCALIZATION NODE (html.menu.Paste_*, html.tip.Paste_*): Context menu items.
-# These items are paste options, and appears as subitems of html.menu.Paste in the context menu.
-html.menu.Paste_Replace_Content=コンテンツを置換
-html.tip.Paste_Replace_Content=ノードのコンテンツを置換
-html.menu.Paste_Replace_Node=ノードを置換
-html.tip.Paste_Replace_Node=ノードの HTML を置換
-html.menu.Paste_AsFirstChild=最初の子要素として
-html.tip.Paste_AsFirstChild=ノードの最初の子要素として貼り付け
-html.menu.Paste_AsLastChild=最後の子要素として
-html.tip.Paste_AsLastChild=ノードの最後の子要素として貼り付け
-html.menu.Paste_Before=前に
-html.tip.Paste_Before=ノードの前に貼り付け
-html.menu.Paste_After=後に
-html.tip.Paste_After=ノードの後に貼り付け
-# LOCALIZATION NOTE (html.menu.Reload_Frame, html.menu.tip.Reload_Frame):
-# Context menu item of HTML frames
-html.menu.Reload_Frame=フレームを再読み込み
-html.menu.tip.Reload_Frame=このフレームのコンテンツを再読み込み
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=URL をコピー
-clipboard.tip.Copy_Location=オブジェクトの URL をクリップボードにコピーします
-CopyURLParameters=URL パラメータをコピー
-net.tip.Copy_URL_Parameters=クリップボードに URL パラメータをコピーします
-CopyPOSTParameters=POST パラメータをコピー
-net.tip.Copy_POST_Parameters=クリップボードに POST パラメータをコピーします
-CopyLocationParameters=パラメータ付きで URL をコピー
-net.tip.Copy_Location_Parameters=パラメータを含む URL をクリップボードにコピーします
-CopyRequestHeaders=リクエストヘッダをコピー
-net.tip.Copy_Request_Headers=リクエストヘッダをクリップボードにコピーします
-CopyResponseHeaders=レスポンスヘッダをコピー
-net.tip.Copy_Response_Headers=レスポンスヘッダをクリップボードにコピーします
-CopyResponse=レスポンスボディをコピー
-net.tip.Copy_Response=レスポンスボディをクリップボードにコピーします
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=エラーをコピー
-console.menu.tip.Copy_Error=エラー情報をクリップボードにコピーします
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=関数をコピー
-dom.tip.Copy_Source=関数のソースコードをクリップボードにコピーします
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole="%S" の呼び出しを記録
-dom.tip.Log_Calls_To_Function=関数 "%S" の呼び出しをコンソールに記録します
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=イベントを記録
-html.tip.Show_Events_In_Console=イベント情報をコンソールに記録します
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=有効
-panel.tip.Enabled=パネルの有効/無効を切り替えます
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=コマンドラインをポップアップ表示します
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Firebug のコンソールは '%S' をサポートしません
-# LOCALIZATION NOTE (commandline.errorSourceHeader): Message displayed in the header of the
-# source code where an exception has occured.
-commandline.errorSourceHeader=Firebug コマンドラインを使って評価された式:
-# LOCALIZATION NOTE (commandline.MethodDisabled): Message displayed in the Console panel,
-# if a disabled method is entered via the Command Line.
-commandline.MethodDisabled=このコマンドラインメソッドは一時的に使用できなくなっています。
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Firebug コマンドラインは '%S' をサポートしません
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=現在のウィンドウ:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=すべてのエラーでブレークを無効化
-console.Break_On_All_Errors=すべてのエラーでブレーク
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=このエラーでブレーク
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=矢印キー、タブキー、エンターキーを使用
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=Firefox の設定で JavaScript が無効になっています。コンソールを使用したい場合は、ツール > オプション > コンテンツ > JavaScript を有効にする で、このオプションを有効にしてください
-# LOCALIZATION NOTE (console.tip.ScriptPanelMustBeEnabledForTraces): Message shown inside the Console
-# panel instead of a stack trace when it is missing because the script panel is disabled. The text
-# enclosed in <a></a> is a link which enables the Script panel.
-console.ScriptPanelMustBeEnabledForTraces=スタックトレースを得るにはスクリプトパネルが有効化されていなければなりません。<a>スクリプトパネルを有効化。</a>
-# LOCALIZATION NOTE (tooltip.multipleFiltersHint):
-# Hint used for Console and Net panel filter button tooltips describing the shortcut for selecting
-# multiple filters
-tooltip.multipleFiltersHint=Ctrl + クリックで複数のフィルタを選択できます
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=配列の要素が多すぎるため(現在の上限は%S)、このページでは強調表示できません。\n"extensions.firebug.multiHighlightLimit" の設定値を確認してください。
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=XML ページのため Firebug のコマンドラインが無効化されています。<a>HTML に変更</a>して有効化できます。
-# LOCALIZATION NOTE (commandline.Use_in_Command_Line): Right-click option for copying a JS value into the variable
-# $p and opening the Command Line.
-commandline.Use_in_Command_Line=コマンドラインで使用
-commandline.tip.Use_in_Command_Line=コマンドラインにフォーカスを移し、この値を "$p" として使用可能にします
-# LOCALIZATION NOTE (commandline.include.includeSuccess): For the include() function. This message is displayed
-# in the Console panel when a remote script evaluation succeeded
-# %S = the filename
-commandline.include.includeSuccess=%S のプロパティがインクルードされました。
-# LOCALIZATION NOTE (commandline.include.aliasNotFound): For the include() function. This message is displayed
-# in the Console panel when a requested alias is not found
-# %S = the alias name
-commandline.include.aliasNotFound=エイリアス "%S" がありません。
-# LOCALIZATION NOTE (commandline.include.loadFail): For the include() function. This message is displayed
-# in the Console panel when the remote script download failed
-# %S = the filename
-commandline.include.loadFail=このスクリプトが読み込めませんでした: %S
-# LOCALIZATION NOTE (commandline.include.invalidRequestProtocol): For the include() function. This message is displayed
-# in the Console panel when the user tries to download a script with another scheme than HTTP(S)
-# %S = the filename
-commandline.include.invalidRequestProtocol=HTTP/HTTPS プロトコル以外はサポートされません。
-# LOCALIZATION NOTE (commandline.include.invalidSyntax): For the include() function. This message is displayed
-# in the Console panel when the user tries to execute a non-Javascript file
-# or when the script contains syntax errors
-commandline.include.invalidSyntax=文法エラーのためインクルードが失敗しました。ファイルには本当に JavaScript が含まれていますか?
-# LOCALIZATION NOTE (commandline.include.aliasCreated): For the include() function. This message is displayed
-# in the Console panel when a new alias is created successfully
-# %S = the alias name
-commandline.include.aliasCreated=エイリアス "%S" が作成されました。
-# LOCALIZATION NOTE (commandline.include.aliasRemoved): For the include() function. This message is displayed
-# in the Console panel when a new alias is removed successfully
-# %S = the alias name
-commandline.include.aliasRemoved=エイリアス "%S" が削除されました。
-# LOCALIZATION NOTE (commandline.include.invalidAliasName): For the include() function. This message is displayed
-# in the Console panel if an invalid alias name (which contains "/" or ".") is provided.
-# %S = the invalid alias name
-commandline.include.invalidAliasName=エイリアス名は "." や "/" を含んではいけません。不正なエイリアス名: "%S"
-# LOCALIZATION NOTE (commandline.include.tooLongAliasName): For the include() function. This message is displayed
-# in the Console panel if the provided alias name is too long (i.e. more than 30 characters)
-# %S = the invalid alias name
-commandline.include.tooLongAliasName=エイリアス名は 30 文字を超えてはいけません。不正なエイリアス名: "%S"
-# LOCALIZATION NOTE (commandline.include.wrongAliasArgument): For the include() function. This message is displayed
-# in the Console panel if the type of the alias name is invalid (a string is expected)
-commandline.include.invalidAliasArgumentType=不正な第二引数です。エイリアス名を指定してください。
-# LOCALIZATION NOTE (commandline.include.wrongUrlArgument): For the include() function. This message is displayed
-# in the Console panel if the type of the url arguement is invalid (a string or null are expected)
-commandline.include.invalidUrlArgumentType=不正な URL 引数です。
-# LOCALIZATION NOTE (commandline.include.confirmDelete): For the include() function. This message is displayed
-# in a confirmation dialog when the user wants to delete an alias
-# %S = the name of the alias to delete
-commandline.include.confirmDelete=本当にこのエイリアスを削除しますか? : "%S"
-# LOCALIZATION NOTE (commandline.include.noDefinedAlias): For the include() function. This message is displayed
-# when the user wants to display the aliases table but there no alias is defined.
-commandline.include.noDefinedAlias=(エイリアスはまだ定義されていません)
-commandline.tip.Delete_Alias=エイリアスを削除します
-commandline.tip.Edit_Alias_Name=エイリアス名を編集します
-commandline.tip.Edit_Alias_URL=エイリアス URL を編集します
-commandline.tip.Open_In_Scratchpad=スクリプトの内容をスクラッチパッドで開きます
-commandline.tip.Include_Script=スクリプトをダウンロードして実行
-commandline.label.DeleteAlias=エイリアスを削除
-commandline.label.EditAliasName=エイリアス名を編集
-commandline.label.EditAliasURL=エイリアス URL を編集
-commandline.label.OpenInScratchpad=スクラッチパッドで開く
-commandline.label.IncludeScript="%S" をインクルード
-# LOCALIZATION NOTE (Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting things.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-#
-# NOTE to translators: this message was originally taken from cookies.msg.Do_not_show_this_message_again
-Do_not_show_this_message_again=このメッセージを再び表示しない
-# LOCALIZATION NOTE (scratchpad.loading, scratchpad.failLoading)
-# Used when Firebug downloads a remote script and wants to display it in Scratchpad
-# The messages appears as Javascript Comments in Scratchpad
-scratchpad.loading=読み込み中 しばらくお待ちください...
-scratchpad.failLoading=スクリプトの読み込み中にエラーが発生しました。
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=レスポンス ボディ
-net.sizeinfo.Post_Body=ポスト ボディ
-net.sizeinfo.Total_Sent=送信合計
-net.sizeinfo.Total_Received=受信合計
-net.sizeinfo.Including_HTTP_Headers=HTTP ヘッダを含む
-net.ActivationMessage=ネットパネルが起動しました。ネットパネルが停止していた間に起こったリクエストは、表示されていません。
-net.responseSizeLimitMessage=Firebug のレスポンスサイズ上限に達しました。すべてのレスポンスを新規 Firefox タブで開くには、<a>ここ</a>をクリックしてください。
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Firebug でのリクエストサイズ上限に達しました。
-net.Break_On_XHR=XHR でブレーク
-net.label.Parameters=パラメータ
-net.label.Parts=パート
-net.label.Source=ソース
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=再送信する
-net.tip.Resend=リクエストを再度送信します
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=ブラウザキャッシュを無効化
-net.option.tip.Disable_Browser_Cache=ブラウザの HTTP キャッシュを無効化します
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=描画イベントを表示
-net.option.tip.Show_Paint_Events=タイムライン内に MozAfterPaint イベントを緑色の線で表示します
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=BFCache のレスポンスを表示
-net.option.tip.Show_BFCache_Responses=「戻る/進む」用キャッシュからのレスポンスも表示します
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=次でブレーク
-script.Disable_Break_On_Next=次でブレーク
-ShowHttpHeaders=HTTP ヘッダを表示
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S 件のリクエスト;%1$S 件のリクエスト
-# LOCALIZATION NOTE (net.summary.from_cache):
-# Label used in the Net panel's request summary. Displays the summarized response size coming from cache for all HTTP requests.
-net.summary.from_cache=%S (キャッシュ)
-# LOCALIZATION NOTE (net.summary.tip.request_count, net.summary.tip.total_size,
-# net.summary.tip.total_cached_size, net.summary.tip.total_request_time):
-# Labels used for the tooltips in the Net panel's request summary
-net.summary.tip.request_count=リクエスト数
-net.summary.tip.total_size=全リクエストの合計サイズ
-net.summary.tip.total_cached_size=全リクエストのキャッシュの合計サイズ
-net.summary.tip.total_request_time=全リクエストの合計読み込み時間と 'onload' イベントが発生した時間
-StopLoading=読み込みを中止
-net.tip.Stop_Loading=リクエストの読込を中止します
-LargeData=(データが大きすぎます)
-ShowComputedStyle=スタイルを累積して表示
-StyleGroup-text=テキスト
-StyleGroup-background=背景
-StyleGroup-box=ボックスモデル
-StyleGroup-layout=レイアウト
-StyleGroup-other=その他
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=色をコピー
-css.tip.Copy_Color=色をクリップボードにコピーします
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=画像のアドレスをコピー
-css.tip.Copy_Image_Location=画像の URL をクリップボードにコピーします
-OpenImageInNewTab=新規タブで画像を開く
-css.tip.Open_Image_In_New_Tab=新規ブラウザタブで画像を開きます
-# LOCALIZATION NOTE (OmitObjectPathStack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=ツールバースタックを非表示
-callstack.option.tip.Omit_Object_Path_Stack=オブジェクトパスのスタックを表示しません
-Load_Original_Source=オリジナルのソースを読み込む
-css.tip.Load_Original_Source=変更を破棄して元の CSS を読み込みます
-# LOCALIZATION NOTE (callstack.option.Show_Arguments, callstack.option.tip.Show_Arguments):
-# Stack side panel option (located in tab's option menu). If set to true,
-# function arguments are displayed
-callstack.option.Show_Arguments=引数を表示
-callstack.option.tip.Show_Arguments=関数の引数も表示します
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=ルール宣言をコピー
-css.tip.Copy_Rule_Declaration=すべてのプロパティを含んで、ルールをクリップボードにコピーします
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=スタイル宣言をコピー
-css.tip.Copy_Style_Declaration=ルールのプロパティをクリップボードにコピーします
-# LOCALIZATION NOTE (css.label.Copy_Property_Declaration, css.tip.Copy_Property_Declaration,
-# css.label.Copy_Property_Name, css.tip.Copy_Property_Name, css.label.Copy_Property_Value,
-# css.tip.Copy_Property_Value):
-# Menu item labels and tooltips used in CSS panel/Style side panel context menu.
-# Allow copying the current CSS property's declaration/name/value to the clipboard.
-css.label.Copy_Property_Declaration=プロパティ宣言をコピー
-css.tip.Copy_Property_Declaration=クリップボードにプロパティの宣言をコピーします
-css.label.Copy_Property_Name=プロパティ名をコピー
-css.tip.Copy_Property_Name=クリップボードにプロパティ名をコピーします
-css.label.Copy_Property_Value=プロパティの値をコピー
-css.tip.Copy_Property_Value=クリップボードにプロパティの値をコピーします
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S 件のエラー;%1$S 件のエラー
-moduleManager.title=%S パネルは無効化されています
-moduleManager.desc3=すべてのパネルをいちどに有効化/無効化するには、Firebug ツールバーボタンを使用してください。個別に操作するには、各パネルのタブメニューを使用してください。
-moduleManager.Enable=有効化
-Suspend_Firebug=Firebug を休止
-Resume_Firebug=Firebug を再開
-Reset_Panels_To_Disabled=パネルを無効にリセット
-Open_Console=コンソールを開く
-Open_Console_Tooltip=Firebug にトレースコンソールを開きます。
-Scope_Chain=スコープチェイン
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=With
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Call
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Window
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=ブロッキング
-requestinfo.Resolving=DNS ルックアップ
-requestinfo.Connecting=接続
-requestinfo.Sending=送信
-requestinfo.Waiting=待機
-requestinfo.Receiving=受信
-requestinfo.ContentLoad='DOMContentLoaded' (イベント)
-requestinfo.WindowLoad='load' (イベント)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=はじまりからリクエスト開始までの時間
-requestinfo.phases.label=リクエスト開始を基準とした、各リクエストフェーズの開始および経過時間:
-requestinfo.timings.label=リクエスト開始を基準としたイベントのタイミング:
-search.Firebug_Search=Firebug 検索
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=次へ
-search.tip.Next=次の一致を検索します
-search.Previous=前へ
-search.tip.Previous=前の一致を検索します
-search.Case_Sensitive=大文字小文字を区別
-search.tip.Case_Sensitive=検索時に大文字小文字を区別します
-search.Case_Insensitive=大文字小文字を区別しない
-search.tip.Case_Insensitive=検索時に大文字小文字を区別しません
-search.Multiple_Files=複数ファイル
-search.tip.Multiple_Files=このパネルに関連するすべてのファイルの中を検索します
-search.Use_Regular_Expression=正規表現を使用
-search.tip.Use_Regular_Expression=検索時に入力された文字列を正規表現として解釈します
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS セレクタ
-search.net.Headers=ヘッダ
-search.net.Parameters=パラメータ
-search.net.Response_Bodies=レスポンス本文
-search.net.tip.Response_Bodies=レスポンス本文も検索します
-firebug.console.Persist=持続
-firebug.console.Do_Not_Clear_On_Reload2=ページの再読み込み時にパネルをクリアしません
-firebug.console.Show_All_Log_Entries=すべてのログエントリを表示
-firebug.console.Errors=エラー
-firebug.console.Filter_by_Errors=エラーでフィルタ
-firebug.console.Warnings=警告
-firebug.console.Filter_by_Warnings=警告でフィルタ
-firebug.console.Info=情報
-firebug.console.Filter_by_Info=情報でフィルタ
-firebug.console.Debug_Info=デバッグ情報
-firebug.console.Filter_by_Debug_Info=デバッグ情報でフィルタ
-firebug.Deactivate_Firebug=Firebug を非アクティブ化
-firebug.tip.Deactivate_Firebug=現在の Web サイトで Firebug を非アクティブ化します
-# LOCALIZATION NOTE (firebug.tip.Toggle_Side_Panels): A tooltip used for side panels visibility
-# toggle button. The button is available on the right side of panel's toolbar (only for panels
-# that have a side panel).
-firebug.tip.Toggle_Side_Panels=サイドパネルの表示を切り替えます
-firebug.ShowFirebug=Firebug を開く
-firebug.menu.tip.Open_Firebug=Firebug の UI を表示します
-firebug.HideFirebug=Firebug を隠す
-firebug.menu.tip.Minimize_Firebug=Firebug を最小化しますが、動作中のままになります
-firebug.FocusFirebug=Firebug ウィンドウにフォーカス
-firebug.menu.tip.Focus_Firebug=取り外された Firebug ウィンドウにフォーカスします
-firebug.menu.Enable_All_Panels=すべてのパネルを有効化
-firebug.menu.tip.Enable_All_Panels=有効化可能なすべてのパネルを有効にします
-firebug.menu.Disable_All_Panels=すべてのパネルを無効化
-firebug.menu.tip.Disable_All_Panels=有効化可能なすべてのパネルを無効にします
-firebug.menu.Customize_shortcuts=ショートカットのカスタマイズ
-firebug.menu.tip.Customize_Shortcuts=Firebug の内部キー設定をカスタマイズします
-firebug.Options=オプション
-firebug.menu.tip.Options=Firebug のグローバル設定
-firebug.menu.Enable_Accessibility_Enhancements=アクセシビリティ拡張を有効化
-firebug.menu.tip.Enable_Accessibility_Enhancements=キーボードとその他のアクセシビリティ拡張を使ったフルコントロールを有効にします
-firebug.menu.Activate_Same_Origin_URLs2=同一生成元 URL でアクティブ化
-firebug.menu.tip.Activate_Same_Origin_URLs=同一生成元ポリシーに適合する URL で Firebug をアクティブにします
-firebug.menu.Reset_All_Firebug_Options=すべての Firebug オプションをリセット
-firebug.menu.tip.Reset_All_Firebug_Options=すべての Firebug の設定をそのデフォルト値にリセットします
-firebug.menu.Firebug_Online=Firebug オンライン
-firebug.menu.tip.Firebug_Online=Firebug の関連 Web サイト
-firebug.menu.Extensions=Firebug 拡張...
-firebug.menu.tip.Extensions=Firebug 拡張のダウンロードとインストール
-firebug.menu.Vertical_Panels=垂直パネル
-firebug.menu.tip.Vertical_Panels=Firebug のメインとサイドパネルの配置を切り替えます
-firebug.menu.Show_Info_Tips=情報チップを表示
-firebug.menu.tip.Show_Info_Tips=ホバーされた要素に関する情報ポップアップを表示します
-firebug.Show_Error_Count=エラー数を表示
-firebug.menu.tip.Show_Error_Count=コンソール内に記録されたエラーの数を表示します
-firebug.TextSize=文字サイズ
-firebug.menu.tip.Text_Size=Firebug で使われる文字の大きさを変更します
-firebug.IncreaseTextSize=文字サイズを大きく
-firebug.menu.tip.Increase_Text_Size=Firebug で使われる文字の大きさを大きくします
-firebug.DecreaseTextSize=文字サイズを小さく
-firebug.menu.tip.Decrease_Text_Size=Firebug で使われる文字の大きさを小さくします
-firebug.NormalTextSize=標準の文字サイズ
-firebug.menu.tip.Normal_Text_Size=Firebug で使われる文字の大きさをデフォルトにリセットします
-firebug.Website=Firebug の Web サイト...
-firebug.menu.tip.Website=Firebug の公式 Web サイトを開きます
-firebug.help=ヘルプ...
-firebug.menu.tip.help=Firebug を説明しているページへのリンクを掲載したページを開きます
-firebug.Documentation=ドキュメント...
-firebug.menu.tip.Documentation=Firebug に関するドキュメントを開きます
-firebug.KeyShortcuts=キーボードショートカット...
-firebug.menu.tip.Key_Shortcuts=Firebug で使えるマウスとキーボードショートカット一覧を開きます
-firebug.Forums=ディスカッショングループ...
-firebug.menu.tip.Forums=ディスカッショングループサイトを開きます
-firebug.Issues=課題トラッカー...
-firebug.menu.tip.Issues=課題トラッカーサイトを開きます
-firebug.Donate=貢献...
-firebug.menu.tip.Donate=貢献サイトを開きます
-firebug.About=Firebug について...
-firebug.menu.tip.About=Firebug に関する情報
-ProfileJavaScript=JavaScript をプロファイル
-firebug.menu.tip.Profile_JavaScript=JavaScript 実行時間をプロファイル
-firebug.Search=検索
-firebug.menu.tip.Search=検索フィールドにフォーカスをセットします
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=コマンドを繰り返し
-firebug.shortcut.tip.reenterCommand=コマンドラインに入力された最後のコマンドを繰り返します
-firebug.shortcut.toggleInspecting.label=調査を切り替え
-firebug.shortcut.tip.toggleInspecting=調査を有効/無効にします
-firebug.shortcut.toggleQuickInfoBox.label=クイック情報ボックスを切り替え
-firebug.shortcut.tip.toggleQuickInfoBox=現在調査中の要素に関する情報パネルの表示を有効/無効にします
-firebug.shortcut.toggleProfiling.label=プロファイル中を切り替え
-firebug.shortcut.tip.toggleProfiling=JavaScript プロファイラを有効/無効にします
-firebug.shortcut.focusCommandLine.label=コマンドラインにフォーカス
-firebug.shortcut.tip.focusCommandLine=Firebug を開いてコマンドラインにフォーカスをセット、もしくはコマンドラインポップアップを切り替えます
-firebug.shortcut.focusFirebugSearch.label=Firebug 検索にフォーカス
-firebug.shortcut.tip.focusFirebugSearch=検索フィールドにフォーカスをセットします
-firebug.shortcut.focusWatchEditor.label=ウォッチエディタにフォーカス
-firebug.shortcut.tip.focusWatchEditor=スクリプトパネルに切り替え、新規ウォッチ式を入力するフィールドにフォーカスをセットします
-firebug.shortcut.focusLocation.label=ロケーションにフォーカス
-firebug.shortcut.tip.focusLocation=ロケーションメニューを開きます
-firebug.shortcut.nextObject.label=次のオブジェクトへ
-firebug.shortcut.tip.nextObject=パネルの要素パスで次のオブジェクトを選択します
-firebug.shortcut.previousObject.label=前のオブジェクトへ
-firebug.shortcut.tip.previousObject=パネルの要素パスで前のオブジェクトを選択します
-firebug.shortcut.customizeFBKeys.label=Firebug キーをカスタマイズ
-firebug.shortcut.tip.customizeFBKeys=Firebug ショートカット設定ダイアログを開きます
-firebug.shortcut.detachFirebug.label=新規ウィンドウで Firebug を開く
-firebug.shortcut.tip.detachFirebug=自ウィンドウ内にある Firebug を取り外します
-firebug.shortcut.leftFirebugTab.label=左の Firebug パネルに切り替え
-firebug.shortcut.tip.leftFirebugTab=ひとつ左へ Firebug パネルを切り替えます
-firebug.shortcut.rightFirebugTab.label=右の Firebug パネルに切り替え
-firebug.shortcut.tip.rightFirebugTab=ひとつ右へ Firebug パネルを切り替えます
-firebug.shortcut.toggleFirebug.label=Firebug を開く
-firebug.shortcut.tip.toggleFirebug=Firebug の UI を開く/最小化します
-firebug.shortcut.closeFirebug.label=Firebug を無効化
-firebug.shortcut.tip.closeFirebug=現在の Web サイトで Firebug を無効化します
-firebug.shortcut.previousFirebugTab.label=前の Firebug タブ
-firebug.shortcut.tip.previousFirebugTab=以前に選択された Firebug タブに切り替えます
-firebug.shortcut.clearConsole.label=コンソールをクリア
-firebug.shortcut.tip.clearConsole=すべてのログをコンソールから削除します
-firebug.shortcut.openTraceConsole.label=トレースコンソールを開く
-firebug.shortcut.tip.openTraceConsole=FBTrace コンソールを開く
-firebug.shortcut.navBack.label=戻る
-firebug.shortcut.tip.navBack=前のパネルもしくは前のナビゲーション履歴のロケーションリスト項目に切り替えます
-firebug.shortcut.navForward.label=進む
-firebug.shortcut.tip.navForward=次のパネルもしくは次のナビゲーション履歴のロケーションリスト項目に切り替えます
-firebug.shortcut.increaseTextSize.label=文字サイズを大きく
-firebug.shortcut.tip.increaseTextSize=Firebug で使われる文字の大きさを大きくします
-firebug.shortcut.decreaseTextSize.label=文字サイズを小さく
-firebug.shortcut.tip.decreaseTextSize=Firebug で使われる文字の大きさを小さくします
-firebug.shortcut.normalTextSize.label=標準の文字サイズ
-firebug.shortcut.tip.normalTextSize=Firebug で使われる文字の大きさをデフォルトにリセットします
-firebug.shortcut.help.label=ヘルプを開く
-firebug.shortcut.tip.help=よくある質問に回答しているページを開きます
-firebug.shortcut.toggleBreakOn.label=...でブレークを切り替え
-firebug.shortcut.tip.toggleBreakOn=パネル内で指定のイベントが発生したときスクリプトの実行を停止させる機能を有効/無効にします
-firebug.panel_selector=パネルセレクタ
-customizeShortcuts=Firebug ショートカットバインディング
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=パネルツール
-a11y.labels.firebug_panels=Firebug パネル
-a11y.labels.firebug_side_panels=Firebug サイドパネル
-a11y.labels.firebug_window=Firebug ウィンドウ
-a11y.labels.firebug_status=Fireubg ステータス
-a11y.labels.reset=リセット
-a11y.labels.reset_shortcut=%S のショートカットをリセット
-aria.labels.inactive_panel=パネル停止
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=ログ行
-a11y.labels.call_stack=コールスタック
-a11y.labels.document_structure=ドキュメント構造
-a11y.labels.title_panel=%S パネル
-a11y.labels.title_side_panel=%S サイドパネル
-a11y.labels.cached=キャッシュ
-aria.labels.stack_trace=スタックトレース
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=position
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=margin top
-a11y.layout.margin_right=margin right
-a11y.layout.margin_bottom=margin bottom
-a11y.layout.margin_left=margin left
-a11y.layout.border_top=border top
-a11y.layout.border_right=border right
-a11y.layout.border_bottom=border bottom
-a11y.layout.border_left=border left
-a11y.layout.padding_top=padding top
-a11y.layout.padding_right=padding right
-a11y.layout.padding_bottom=padding bottom
-a11y.layout.padding_left=padding left
-a11y.layout.top=top
-a11y.layout.right=right
-a11y.layout.bottom=bottom
-a11y.layout.left=left
-a11y.layout.width=width
-a11y.layout.height=height
-a11y.layout.size=size
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=タブに続けて ENTER を押すと個々の要素を編集できます
-a11y.labels.style_rules=スタイルルール
-aria.labels.inherited_style_rules=継承スタイルルール
-a11y.labels.computed_styles=累積されたスタイル
-a11y.labels.dom_properties=DOM プロパティ
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=インラインエディタ
-a11y.labels.value_for_attribute_in_element=%S 属性の値 要素 %S
-a11y.labels.attribute_for_element=要素 %S の属性
-a11y.labels.text_contents_for_element=要素 %S のテキスト内容
-a11y.labels.defined_in_file=%S で定義
-a11y.labels.declarations_for_selector="%S" セレクタのスタイル定義
-a11y.labels.property_for_selector=CSS プロパティ セレクタ:%S
-a11y.labels.value_property_in_selector=%S プロパティの値 セレクタ:%S
-a11y.labels.css_selector=CSS セレクタ
-a11y.labels.source_code_for_file=ファイル %S のソースコード
-a11y.labels.press_enter_to_add_new_watch_expression=新たなウォッチ式を追加するにはENTERを押してください
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=オーバーライド
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=条件付きブレークポイントあり
-a11y.updates.has_disabled_break_point=無効化されたブレークポイントあり
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=スクリプト停止 %S 行目 %S ファイル %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=%S との一致が見つかりました %S ログ行
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=%S との一致が見つかりました %S 行目 %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=%S との一致が見つかりました %S 要素 パス %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=%S との一致が見つかりました 属性%S=%S %S 要素 パス %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=%S との一致が見つかりました テキスト内容:%S %S 要素 パス %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=%S との一致が見つかりました セレクタ %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration="%S" との一致が見つかりました スタイル定義 %S セレクタ %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property="%S" との一致が見つかりました DOM プロパティ %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row="%S" との一致が見つかりました %S,%S:%S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=%S との一致が見つかりました ネットの要約行:%S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=%S との一致が見つかりませんでした
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=本当にすべての Firebug オプションをデフォルト状態にリセットしますか?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=これまでの CSS 編集結果は失われます。\n本当にソースを編集しますか?
-# Console messages
-warning.Console_must_be_enabled=コンソールが有効でなければなりません
-warning.Command_line_blocked?=コマンドラインがブロックされていませんか?
-warning.dollar_change=コンソールコマンドライン関数 $() は $=getElementById(id) から $=querySelector(selector) に意味が変わりました。代わりに $("#%S") としてみてください。
-message.Reload_to_activate_window_console=ウィンドウのコンソールをアクティブ化させるには再読み込みしてください
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=ソースを得るにはページを再読み込みしてください
-message.The_resource_from_this_URL_is_not_text=この URL のリソースはテキストではありません
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=このパネルに戻る
-firebug.history.Stay_on_this_panel=このパネルにとどまる
-firebug.history.Go_forward_to_this_panel=このパネルに進む
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=戻る
-firebug.history.Go_forward=進む
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=ページのロード中、スクリプトパネルが機能していませんでした
-script.suggestion.inactive_during_page_load2=すべてのソースを見るには<a>再読み込み</a>してください
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=JavaScript が有効ではありません
-script.suggestion.javascript_not_enabled=Firefox > ツール > オプション > コンテンツ > JavaScript を有効にする を参照してください
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=JavaScript を有効にして更新
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=スクリプトはすべてフィルタされました
-script.suggestion.all_scripts_filtered=パネルツールバーのスクリプトフィルタ設定を確認してください
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=システムのソースはデバッグできません
-script.suggestion.no_system_source_debugging=Firebug は現在システムのソースをデバッグする目的では使えません。詳しくは <a>課題 5110</a> をご覧ください。
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=このページには Javascript がありません
-script.suggestion.no_javascript2=もし <script> タグに "type" 属性がある場合、それは "text/javascript" または "application/javascript" と一致しているべきです。また、スクリプトはパース可能(文法的に適正)でなければなりません。
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=デバッガはすでにアクティブです
-script.suggestion.debugger_active=現在デバッガは他のページのブレークポイントで一時停止しています。
-script.button.Go_to_that_page=そのページへ移動
-script.warning.debugger_not_activated=デバッガがアクティブになっていません
-script.suggestion.debugger_not_activated=デバッガがアクティブになっていません
-# LOCALIZATION NOTE (script.Script_panel_must_be_enabled): Adds a parenthetical note to a tooltip
-# about the Script panel having to be enabled.
-# %S = original message
-# example: "Profile JavaScript execution time (Script panel must be enabled)"
-script.Script_panel_must_be_enabled=%S (スクリプトパネルが有効化されていなければなりません)
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=閉じる
-firebug.View=表示
-firebug.Help=ヘルプ
-firebug.Run=実行
-firebug.Copy=コピー
-firebug.History=履歴
-firebug.Run_the_entered_command=入力されたコマンドを実行
-firebug.Clear_the_Command_Editor=コマンドエディタをクリア
-firebug.Copy_the_script_as_a_bookmarklet=スクリプトをブックマークレットとしてコピー
-firebug.Insert_a_previously_entered_command=過去に入力されたコマンドを挿入
-firebug.AlwaysOpenInWindow=常に新規ウィンドウで開く
-firebug.OpenWith=エディタで開く
-firebug.menu.tip.Open_With=内容を外部エディタで開きます
-firebug.Permissions=サイト...
-firebug.Configure_Editors=エディタの設定
-script.tip.Script_Type=スクリプトの種類によってフィルタします
-script.tip.Script_Filter_Static=ページとともに読み込まれたスクリプトを表示します
-script.tip.Script_Filter_Evals==ページとともに読み込まれたスクリプトと eval() で作られたスクリプトを表示します
-script.tip.Script_Filter_Events=ページとともに読み込まれたスクリプトと eval() で作られたスクリプトおよびイベントリスナーを表示します
-script.tip.Script_Filter_All=あらゆる種類のスクリプトを表示します
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=リターン
-script.tip.Rerun=現在の関数コールスタックから抜けます
-script.Continue=コンティニュー
-script.tip.Continue=JavaScript の実行を継続します
-script.Step_Over=ステップオーバー
-script.tip.Step_Over=次のコマンドを実行します
-script.Step_Into=ステップイン
-script.tip.Step_Into=次のコマンドを実行するか関数に入ります
-script.Step_Out=ステップアウト
-script.tip.Step_Out=関数内の残りを実行して呼び出し元に戻ります
-firebug.RunUntil=この行まで実行
-script.tip.Run_Until=指定された行まで JavaScript を実行します
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=調査
-firebug.InspectElement=要素を調査
-firebug.InspectElementWithFirebug=Firebug で要素を調査
-firebug.BreakOnErrors=エラー発生時に停止
-firebug.InspectTooltip=ページ内の調べたい要素をクリックしてください
-firebug.EditHTMLTooltip=この HTML を編集します
-firebug.Profile=プロファイル
-firebug.Clear=クリア
-firebug.ClearConsole=コンソールをクリア
-firebug.ClearTooltip=コンソールをクリア
-# editors.dtd
-editors.Configured_Firebug_Editors=Firebug に設定されたエディタ
-editors.Editor=エディタ
-editors.Executable=実行可能ファイル
-editors.Launch_Arguments=起動時の引数
-editors.Add=追加
-editors.Remove=削除
-editors.Change=変更
-editors.Move_Up=上へ
-editors.Close=閉じる
-editors.Browse=参照...
-changeEditor.Editor_Configuration=エディタ設定
-changeEditor.Name=名前:
-changeEditor.Executable=実行可能ファイル:
-changeEditor.CmdLine=引数:
-changeEditor.Supplied_arguments=Firebug が提供する引数:
-changeEditor.URL_of_file=ファイルの URL (%url がない場合、代わりに %file が追加されます)
-changeEditor.Path_to_local_file=ローカルファイル (または一時コピー) のパス
-changeEditor.Line_number=行番号 (存在すれば)
-changeEditor.Invalid_Application_Path=無効なアプリケーションパス
-changeEditor.Application_does_not_exist=指定されたアプリケーションは存在しません!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=編集
-firebug.css.sourceEdit=ソース編集
-firebug.css.sourceEdit.tooltip=テキストエリアでは、ブラウザで読み込まれたままのスタイルシートのソースを編集します
-firebug.css.liveEdit=ライブ編集
-firebug.css.liveEdit.tooltip=テキストエリアでは、ブラウザで展開されたCSSを編集します
-firebug.EditCSSTooltip=このスタイルシートを編集します
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=プライベートブラウジングモード中はサイトが記憶されません
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=ブレーク通知を表示
-firebug.breakpoint.tip.Show_Break_Notifications=...でブレーク系の機能、もしくは debuger; キーワードが JavaScript の実行を停止させたとき、通知ボックスを表示します
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=ブレーク通知を<a>パネルのタブメニュー</a>で有効化/無効化できます。
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2='無効化'をクリックすると'デバッガ'を無効化されたブレークポイントでオーバーライドします。
-firebug.bon.tooltip.disableDebuggerKeyword2=無効化されたブレークポイントを作成
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(この機能を使用するためにはスクリプトパネルを有効化する必要があります)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=子オブジェクトがありません
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=もっと見る
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=循環参照を検出
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=ストレージに %1$S 項目;ストレージに %1$S 項目
-# LOCALIZATION NOTE (firebug.reps.historyEntries): Semicolon list of plural forms.
-# Displayed when evaluating "history" - informs the user about the number of entries in history.
-# %1 = Number of history entries
-firebug.reps.historyEntries=%1$S 件の履歴項目;%1$S 件の履歴項目
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=オブジェクトプロパティ
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(補完候補なし)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=URL オブジェクトはおそらく revokeObjectURL メソッドを使って破棄されています。
-firebug.failedToPreviewImageURL=URL の読み込みに失敗しました
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=メモリプロファイラを開始しました
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=プロファイル中にオブジェクトが追加されました
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=メモリプロファイラの結果
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=セッション全体
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(出力なし)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(空文字列)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie アドオンが検出されました。このアドオンはデフォルトで Firebug 1.10 に統合されています。衝突を避けるために Firecookie をアンインストールする必要があります。\n\nアドオンのアンインストールを完了するには再起動しなければなりません。
-cookies.legacy.uninstall=アンインストール
-cookies.legacy.uninstall_and_restart=アンインストール && 再起動
-# LOCALIZATION NOTE (console.cmd.help_title, console.cmd.help_title_desc):
-console.cmd.help_title=コマンドライン API
-console.cmd.help_title_desc=F1 キーを押すとオンラインの Firebug ヘルプを開きます
-# LOCALIZATION NOTE (console.cmd.tip_title, console.cmd.tip_title_desc):
-console.cmd.tip_title=コマンドライン Tips
-console.cmd.tip_title_desc=コマンドラインの Tips & Tricks について
-# LOCALIZATION NOTE (console.cmd.tip.javascript, console.cmd.tip.closures):
-# Description for Command Line tips that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.tip.javascript=コマンドラインでは任意の JavaScript 式を実行できます。 例:
-console.cmd.tip.closures=クロージャの中の変数にアクセスするには、'.%' シンタックス(詳しくは<a>こちら</a>)を使います。 例:
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=指定した ID を持つ要素をひとつ返します。
-console.cmd.help.$$=指定した CSS セレクタに一致する要素の配列を返します。
-console.cmd.help.$x=指定した XPath 式に一致する要素の配列を返します。
-console.cmd.help.dir=オブジェクトのすべてのプロパティを一覧出力します。これは DOM パネルでの表示と同様です。
-console.cmd.help.dirxml=HTMLまたはXML要素のXMLソースツリーを出力します。これは HTML パネルでの表示と同様です。任意のノードをクリックして HTML パネルでそれを調査することができます。
-console.cmd.help.cd=デフォルトでは、コマンドラインの式はページ最上位ウィンドウからの相対指定です。 cd() で代わりにページ内のフレームウィンドウを指定することができます。
-console.cmd.help.clear=コンソールをクリアします。
-console.cmd.help.copy=指定したパラメータをクリップボードにコピーします。関数の戻り値やオブジェクトでもかまいません。
-console.cmd.help.inspect=オブジェクトを最適なパネル、またはオプションの第二引数で指定したパネルで調査します。指定可能なパネル名は、"html", "stylesheet", "script", "dom" です。
-console.cmd.help.keys=オブジェクトの全プロパティの名前を格納した配列を返します。
-console.cmd.help.values=オブジェクトの全プロパティの値を格納した配列を返します。
-console.cmd.help.debug=関数の最初の行にブレークポイントを追加します。
-console.cmd.help.undebug=関数の最初の行のブレークポイントを削除します。
-console.cmd.help.monitor=関数の全呼び出しを記録します。
-console.cmd.help.unmonitor=関数の全呼び出しの記録を解除します。
-console.cmd.help.monitorEvents=指定したオブジェクトに対する全イベントを記録します。オプションの第二引数で記録する個別イベントまたはイベントグループを指定できます。指定可能なイベントグループは、"composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", "clipboard" です。
-console.cmd.help.unmonitorEvents=指定したオブジェクトに対する全イベントの記録を解除します。オプションの第二引数で記録を解除する個別イベントまたはイベントグループを指定できます。
-console.cmd.help.profile=JavaScript プロファイラを開始します。オプションの第二引数でプロファイルレポートのヘッダに出力されるテキストを指定することができます。
-console.cmd.help.profileEnd=JavaScript プロファイラを終了し、そのレポートを出力します。
-console.cmd.help.table=指定データを表のようにレイアウトして記録することができます。第一引数は必須で、表に適したデータ (配列の配列もしくはオブジェクトのリスト) を指定します。オプションの第二引数で、記録される列またはプロパティを指定できます。
-console.cmd.help.$0=調査で最後に選択した要素を指しています。
-console.cmd.help.$1=調査で最後から2番目に選択した要素を指しています。
-console.cmd.help.$2=調査で最後から3番目に選択した要素を指しています。
-console.cmd.help.$3=調査で最後から4番目に選択した要素を指しています。
-console.cmd.help.$4=調査で最後から5番目に選択した要素を指しています。
-console.cmd.help.$n=調査で最後に選択した 5 つの要素のうちのひとつを返します。そのどれを返すかを要素のインデックス番号で必ず指定 (0 が先頭) します。
-console.cmd.help.$_=コマンドラインで最後に評価した式の結果を指しています。
-console.cmd.help.help=利用可能なすべてのコマンドのヘルプを表示します。
-console.cmd.help.include=リモートスクリプトをインクルードします。
-console.cmd.help.$p=JavaScript のオブジェクトまたは値を右クリックした後、"コマンドラインで使用" をクリックすると、このコマンドライン変数がその値にセットされます。
-console.cmd.help.getEventListeners=要素 (あるいは他のイベントターゲット) に直接登録されたイベントリスナーをすべて備えたオブジェクトを返します。
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=このコマンドのヘルプページはありません。
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=ドキュメント読み込みを基準とした、各ドキュメントフェーズの開始および経過時間:
-perftiming.events.label=ドキュメント読み込みを基準としたイベントのタイミング:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=パフォーマンスタイミング
-perftiming.details_title_desc=詳細なタイミング
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=サーバとの接続が完了した時間。
-perftiming.connectStart=サーバとの接続が開始するまでの時間。
-perftiming.domComplete=ドキュメントの準備が完了するまでの時間。
-perftiming.domContentLoadedEventEnd=DOMContentLoaded イベントが完了した時間。
-perftiming.domContentLoadedEventStart=DOMContentLoaded 開始までの時間。
-perftiming.domInteractive=準備完了からインタラクティブになるまでの時間。
-perftiming.domLoading=準備完了から読み込みまでの時間。
-perftiming.domainLookupEnd=ドメイン名ルックアップが終了した時間。
-perftiming.domainLookupStart=ドメイン名ルックアップまでの時間。
-perftiming.fetchStart=リソースのフェッチを開始した時間。
-perftiming.loadEventEnd=読み込みイベントが完了した時間。
-perftiming.loadEventStart=読み込みイベントが発生するまでの時間。
-perftiming.navigationStart=前のドキュメントがアンロードを開始した時間。
-perftiming.redirectCount=最後の非リダイレクト以降のリダイレクト数。
-perftiming.redirectEnd=最後のリダイレクトレスポンスが終了した時間。
-perftiming.redirectStart=リダイレクトを開始したフェッチの時間。
-perftiming.requestStart=サーバへのリクエストまでの時間。
-perftiming.responseEnd=レスポンスまたは接続が終了した時間。
-perftiming.responseStart=レスポンスの開始までの時間。
-perftiming.unloadEventEnd=前のドキュメントのアンロードが終了した時間。
-perftiming.unloadEventStart=アンロードイベントが発生するまでの時間。
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=コンソール
+panel.tip.console=コンソールメッセージの観察と JavsScript コマンドの実行ができます
+Panel-net=ネット
+panel.tip.net=ネットワークトラフィックの分析ができます
+Panel-html=HTML
+panel.tip.html=DOM ノードの調査と操作ができます
+Panel-stylesheet=CSS
+panel.tip.stylesheet=CSS スタイルシートの調査と操作ができます
+Panel-script=スクリプト
+panel.tip.script=JavaScript のデバッグができます
+Panel-dom=DOM
+panel.tip.dom=DOM のプロパティの調査と操作ができます
+Panel-css=スタイル
+panel.tip.css=選択中の DOM ノードについて CSS ルールの調査と操作ができます
+Panel-computed=累積
+panel.tip.computed=選択中の DOM ノードについて累積された CSS 値の調査と操作ができます
+Panel-layout=レイアウト
+panel.tip.layout=選択中の DOM ノードについてレイアウト情報の調査と操作ができます
+Panel-domSide=DOM
+panel.tip.domSide=選択中の DOM ノードについて DOM プロパティの調査と操作ができます
+Panel-watches=ウォッチ
+panel.tip.watches=現在のスタックフレームに登場する JavaScript 変数の調査とウォッチ式の定義ができます
+Panel-breakpoints=ブレークポイント
+panel.tip.breakpoints=ブレークポイントのセットを操作できます
+Panel-callstack=スタック
+panel.tip.callstack=現在の JavaScript コールスタックを観察できます
+Panel-scopes=スコープ
+firebug.DetachFirebug=Firebug を新規ウィンドウで開く
+firebug.AttachFirebug=Firebug をブラウザウインドウに結合
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=0
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=計 %1$S 個の Firebug;計 %1$S 個の Firebug
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=非アクティブ
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=ブラウザ内
+minimized=最小化
+enablement.for_all_pages=すべてのページで
+enablement.on=有効
+enablement.off=無効
+enablement.Panel_activation_status=パネル有効化状態:
+none=クローズ
+Firebug_-_inactive_for_current_website=Firebug - 現在の Web サイトでは非アクティブ
+Activate_Firebug_for_the_current_website=現在の Web サイトでアクティブ化
+Minimized=最小化
+Minimize_Firebug=Firebug を最小化
+On_for_all_web_pages=すべての Web ページでオン
+firebug.menu.tip.On_for_all_Web_Sites=すべての Web サイトで Firebug をデフォルトでアクティブ化します
+firebug.menu.Clear_Activation_List=アクティブ化リストをクリア
+firebug.menu.tip.Clear_Activation_List=Firebug を有効にする Web サイトのリストをクリアします
+firebug.menu.Detached=切り離し
+firebug.menu.tip.Detached=Firebug を独立したウィンドウに切り離し
+firebug.menu.Top=上
+firebug.menu.tip.Top=ユーザエージェントウィンドウの上部に Firebug を配置します
+firebug.menu.Bottom=下
+firebug.menu.tip.Bottom=ユーザエージェントウィンドウの下部に Firebug を配置します
+firebug.menu.Left=左
+firebug.menu.tip.Left=ユーザエージェントウィンドウの左側に Firebug を配置します
+firebug.menu.Right=右
+firebug.menu.tip.Right=ユーザエージェントウィンドウの右側に Firebug を配置します
+firebug.uiLocation=Firebug UI の位置
+firebug.menu.tip.UI_Location=Firebug ユーザインターフェースの位置
+# LOCALIZATION NOTE (annotations.confirm.clear):
+# Used in a confirmation dialog when all Firebug annotations are going to be deleted
+annotations.confirm.clear=本当にすべてのサイトの Firebug 注釈をクリアしますか?
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Firebug オプション
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=すべてのパネルを表示
+console.option.Show_Command_Line=コマンドラインを表示
+console.option.tip.Show_Command_Line=コマンドラインにフォーカス / コマンドラインポップアップを表示します
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=JavaScript のエラーを表示
+console.option.tip.Show_JavaScript_Errors=JavaScript エラーメッセージをコンソールに記録します
+ShowJavaScriptWarnings=JavaScript の警告を表示
+console.option.tip.Show_JavaScript_Warnings=JavaScript 警告メッセージをコンソールに記録します
+ShowCSSErrors=CSS のエラーを表示
+console.option.tip.Show_CSS_Errors=CSS エラーメッセージをコンソールに記録します
+ShowXMLHTMLErrors=XML/HTML のエラーを表示
+console.option.tip.Show_XML_HTML_Errors=Log XML と HTML のエラーメッセージをコンソールに記録します
+ShowStackTrace=エラー時にスタックトレースを表示
+console.option.tip.Show_Stack_Trace=エラーメッセージのスタックトレース情報を表示します
+ShowXMLHttpRequests=XMLHttpRequests を表示
+console.option.tip.Show_XMLHttpRequests=XMLHttpRequests をコンソールに記録します
+ShowChromeErrors=クロームのエラーを表示
+console.option.tip.Show_System_Errors=プログラム及びアドオンの内部エラーメッセージをコンソールに記録します
+ShowChromeMessages=クロームのメッセージを表示
+console.option.tip.Show_System_Messages=プログラム及びアドオンの内部メッセージをコンソールに記録します
+ShowNetworkErrors=ネットワークエラーを表示
+console.option.tip.Show_Network_Errors=ネットワークエラーメッセージをコンソールに記録します
+JavascriptOptionsStrict=厳密な警告 (性能を犠牲に)
+console.option.tip.Show_Strict_Warnings=厳密な警告もコンソールに記録します
+Command_History=コマンド履歴
+console.option.Show_Command_Editor=コマンドエディタを表示
+console.option.tip.Show_Command_Editor=コマンドエディタに切り替えます
+commandLineShowCompleterPopup=補完リストをポップアップ表示
+console.option.tip.Show_Completion_List_Popup=コマンド補完候補のポップアップを表示します
+Assertion=アサート失敗
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (%S 行目)
+LineAndCol=%S (%S 行目, %S 列目)
+InstanceLine=%S #%S (%S 行目)
+StackItem=%S (%S %S 行目)
+SystemItem=<System>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=%S パネルで調査
+panel.tip.Inspect_In_Panel=%S パネルに切り替えてオブジェクトを調査します
+NoName=(無題)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=全テキストを表示
+html.option.tip.Show_Full_Text=要素内容を省略表示しません
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=空白を表示
+html.option.tip.Show_Whitespace=ノード内の空白を表示します
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=コメントを表示
+html.option.tip.Show_Comments=コメントノードを表示します
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=実体をシンボル表示
+html.option.tip.Show_Entities_As_Symbols=すべての XML 実体をシンボルで表示します
+html.option.Show_Entities_As_Names=実体を名前表示
+html.option.tip.Show_Entities_As_Names=すべての XML 実体をその名称で表示します
+html.option.Show_Entities_As_Unicode=実体をユニコード表示
+html.option.tip.Show_Entities_As_Unicode=すべての XML 実体をユニコードで表示します
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=変更を強調表示
+html.option.tip.Highlight_Mutations=ノード内の変更を強調表示します
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=変更を展開
+html.option.tip.Expand_Mutations=変更されたノードを表示するためツリーを展開します
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=変更をスクロールして表示
+html.option.tip.Scroll_To_Mutations=変更されたノードを表示するためスクロールします
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=クイック情報ボックスを表示
+inspect.option.tip.Show_Quick_Info_Box=現在パネル内で調査している要素に関する情報をオーバーレイ表示します
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=ボックスモデルに色づけ
+inspect.option.tip.Shade_Box_Model=ボックスモデルの各部分に色を塗ります
+ScrollIntoView=スクロールして表示
+html.tip.Scroll_Into_View=要素が見えるようページをスクロールします
+NewAttribute=新規属性...
+html.tip.New_Attribute=この要素に新規属性を追加します
+html.Edit_Node=%S を編集...
+html.Node=ノード
+html.tip.Edit_Node=テキストエディタで %S を編集します
+DeleteElement=要素を削除
+html.Delete_Element=要素をツリーから削除します
+DeleteNode=ノードを削除
+html.Delete_Node=ノードをツリーから削除します
+# Quick Info Box
+quickInfo=クイック情報
+computedStyle=累積スタイル
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=変化したらブレーク
+html.Disable_Break_On_Mutate=変化したらブレークを無効化
+html.label.Break_On_Text_Change=テキスト変化でブレーク
+html.label.HTML_Breakpoints=HTMLブレークポイント
+html.label.Break_On_Attribute_Change=属性変化でブレーク
+html.tip.Break_On_Attribute_Change=この要素の属性が変化したとき、実行中の JavaScript を停止します
+html.label.Break_On_Child_Addition_or_Removal=子の追加/削除時にブレーク
+html.tip.Break_On_Child_Addition_or_Removal=この要素に子要素が追加/削除されたとき、実行中の JavaScript を停止します
+html.label.Break_On_Element_Removal=要素削除時にブレーク
+html.tip.Break_On_Element_Removal=この要素が削除されたとき、実行中の JavaScript を停止します
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=すべて展開/閉じる
+html.tip.Expand/Contract_All=すべての子を再帰的に展開/折り畳みします
+# LOCALIZATION NOTE (dom.scopeName): Used within the DOM panel to name the fake property that
+# contains the innermost closure scope of a function.
+dom.scopeName=(クロージャ)
+# LOCALIZATION NOTE (dom.scopeParentName): Used within the DOM panel to name the fake property
+# that contains the parent of a closure scope.
+dom.scopeParentName=(親スコープ)
+# LOCALIZATION NOTE (dom.tip.scopeName): Used within the DOM panel as a tooltip when hovering
+# "(closure)".
+dom.tip.scopeName=コマンドライン内からアクセスするには <func>.%closureVariable を使います
+# LOCALIZATION NOTE (dom.tip.scopeMemberName): Used within the DOM panel as a tooltip when
+# hovering a variable in a closure.
+# %S: the variable name - starts with "%"
+dom.tip.scopeMemberName=コマンドライン内からアクセスするには <func>.%S を使います
+# LOCALIZATION NOTE (firebug.reps.declarativeScope, firebug.reps.objectScope, firebug.reps.withScope):
+# Labels shown to describe different types of closure scopes.
+firebug.reps.declarativeScope=[宣言位置によるスコープ]
+firebug.reps.objectScope=[オブジェクトスコープ]
+firebug.reps.withScope=[with スコープ]
+# LOCALIZATION NOTE (firebug.reps.optimizedAway): Label shown to denote a closure variable that has
+# been optimized away.
+firebug.reps.optimizedAway=(最適化済み)
+# LOCALIZATION NOTE (firebug.reps.element.attribute_value, firebug.reps.element.property_value):
+# Used in the Console panel for elements. If an input element has two different values, one set
+# as "value" attribute and one set as 'value' property, these labels are used to distinguish it.
+firebug.reps.element.attribute_value=属性値
+firebug.reps.element.property_value=プロパティ値
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=プロパティ変化でブレーク
+dom.tip.Break_On_Property_Change=このプロパティが変化したとき、実行中の JavaScript を停止します
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=プロパティ変化でのブレークを無効化
+dom.label.DOM_Breakpoints=DOM ブレークポイント
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute="%S" 属性を編集...
+html.tip.Edit_Attribute=この要素の属性 "%S" の値を編集します
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute="%S" 属性を削除
+html.tip.Delete_Attribute=この要素の属性 "%S" を削除します
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=継承元:
+SothinkWarning=Sothink SWF Catcher アドオンが Firebug の動作に支障を与えています。<br><br>詳しい情報は <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">Firebug の FAQ</a> をご覧下さい。
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=ルールがありません。<a>ルールを作成</a>できます。
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=この要素にはスタイルルールがありません。これに<a>ルールを作成</a>できます。
+EditStyle=要素のスタイルを編集...
+style.tip.Edit_Style=要素にインライン記述されたスタイルを編集します
+AddRule=ルールを追加...
+css.tip.AddRule=この要素に一般的なルールを追加します
+NewRule=新規ルール...
+css.tip.New_Rule=新規ルールを追加します
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule="%S" を削除
+css.tip.Delete_Rule=ルール "%S" とその全プロパティを削除します
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=メディアクエリを編集...
+css.menu.tip.Edit_Media_Query=このルールに紐付いたメディアクエリを編集します
+NewProp=新規プロパティ...
+css.tip.New_Prop=現在のルールに新規プロパティを追加します
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp="%S" を編集...
+css.tip.Edit_Prop=プロパティ "%S" の値を編集します
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp="%S" を無効化
+css.tip.Disable_Prop=プロパティ "%S" を無効化します
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp="%S" を削除
+css.tip.Delete_Prop=プロパティ "%S" を削除します
+# Console context menu labels.
+BreakOnThisError=このエラーで停止
+console.menu.tip.Break_On_This_Error=このエラーが発生したらすぐに実行中の JavaScript を停止します
+BreakOnAllErrors=すべてのエラーで停止
+console.menu.tip.Break_On_All_Errors=エラーが発生したらすぐに実行中の JavaScript を停止します
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=スロー/キャッチを追跡
+script.option.tip.Track_Throw_Catch=try/catch ブロックで捕捉されている場合でも例外を追跡します
+UseLastLineForEvalName=eval() の名前にソースでの最終行を使う
+UseMD5ForEvalName=eval() の名前に MD5 を使う
+# Breakpoints side panel
+Breakpoints=ブレークポイント
+ErrorBreakpoints=エラー ブレークポイント
+LoggedFunctions=記録された関数
+EnableAllBreakpoints=すべてのブレークポイントを有効化
+breakpoints.option.tip.Enable_All_Breakpoints=一覧にあるブレークポイントをすべて有効化します
+DisableAllBreakpoints=すべてのブレークポイントを無効化
+breakpoints.option.tip.Disable_All_Breakpoints=一覧にあるブレークポイントをすべて無効化します
+ClearAllBreakpoints=すべてのブレークポイントを削除
+breakpoints.option.tip.Clear_All_Breakpoints=一覧にあるブレークポイントをすべて削除します
+ConditionInput=このブレークポイントは、次の式が真の場合のみ停止します:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=ブレークポイントを削除
+breakpoints.tip.Remove_Breakpoint=このブレークポイントを削除します
+breakpoints.Disable_Breakpoint=ブレークポイントを無効化
+breakpoints.tip.Disable_Breakpoint=このブレークポイントを無効化します
+breakpoints.Enable_Breakpoint=ブレークポイントを有効化
+breakpoints.tip.Enable_Breakpoint=このブレークポイントを有効化します
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=コンティニュー
+script.balloon.Disable=無効
+ScriptsFilterStatic=静的 スクリプトを表示
+ScriptsFilterEval=静的/評価 スクリプトを表示
+ScriptsFilterEvent=静的/イベント スクリプトを表示
+ScriptsFilterAll=静的/評価/イベント スクリプトを表示
+ScriptsFilterStaticShort=静的
+ScriptsFilterEvalShort=評価
+ScriptsFilterEventShort=イベント
+ScriptsFilterAllShort=すべて
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=すべて展開
+callstack.tip.Expand_All=スタックフレームの関数をすべて展開します
+callstack.Collapse_All=すべて折り畳む
+callstack.tip.Collapse_All=スタックフレームの関数をすべて折り畳みます
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=スタックフレームはスクリプトの実行が停止しているときだけ表示されます。
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=ユーザ定義プロパティを表示
+dom.option.tip.Show_User_Props=ユーザー定義のオブジェクトプロパティを表示します
+ShowUserFuncs=ユーザ定義関数を表示
+dom.option.tip.Show_User_Funcs=ユーザー定義のオブジェクトメソッドを表示します
+ShowDOMProps=DOM プロパティを表示
+dom.option.tip.Show_DOM_Props=DOM 内で指定されたプロパティを表示します
+ShowDOMFuncs=DOM 関数を表示
+dom.option.tip.Show_DOM_Funcs=DOM 内で指定された関数を表示します
+ShowDOMConstants=DOM 定数を表示
+dom.option.tip.Show_DOM_Constants=DOM 内で指定された定数を表示します
+ShowClosures=クロージャを表示
+dom.option.tip.Show_Closures=さまざまな関数に関係するクロージャを表示 (デバッガが有効化されます)
+ShowInlineEventHandlers=インライン イベントハンドラを表示
+ShowInlineEventHandlersTooltip=存在するインライン イベントハンドラ、つまりいずれの関数にも紐付いていないものを表示します
+ShowOwnProperties=自身のプロパティのみ表示
+ShowOwnPropertiesTooltip=プロトタイプチェーンを表示しません
+ShowEnumerableProperties=列挙可能プロパティのみ表示
+ShowEnumerablePropertiesTooltip=列挙不能プロパティは表示しません
+NoMembersWarning=このオブジェクトには表示可能なプロパティがありません。
+NewWatch=新規ウォッチ式...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=ウォッチを追加
+watch.tip.Add_Watch=ウォッチサイドパネルに観察する選択/オブジェクトを追加します
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=ソースをコピー
+script.tip.Copy_Source_Code=選択したソースコードをクリップボードにコピーします
+Use_hash_plus_number_to_go_to_line=#<行番号>で行移動
+CopyValue=値をコピー
+dom.tip.Copy_Value=プロパティの値をクリップボードにコピーします
+Copy_Name=名前をコピー
+dom.tip.Copy_Name=プロパティ名をクリップボードにコピーします
+Copy_Path=パスをコピー
+dom.tip.Copy_Path=プロパティのパスをコピーします
+NewProperty=新規プロパティ...
+EditProperty=プロパティを編集...
+dom.tip.Edit_Property=プロパティの値を編集します
+EditVariable=変数を編集...
+stack.tip.Edit_Variable=変数の値を編集します
+EditWatch=ウォッチを編集...
+watch.tip.Edit_Watch=ウォッチ式の値を編集します
+DeleteProperty=プロパティを削除
+dom.tip.Delete_Property=プロパティを削除します
+DeleteWatch=ウォッチを削除
+DeleteAllWatches=ウォッチをすべて削除
+watch.tip.Delete_Watch=ウォッチ式を削除します
+watch.tip.Delete_All_Watches=ウォッチ式をすべて削除
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=ブレークポイントを設定
+script.tip.Set_Breakpoint=現在の行にブレークポイントを設定します
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=ブレークポイントの条件を編集...
+breakpoints.tip.Edit_Breakpoint_Condition=実行中の JavaScript を停止するブレークポイント条件を編集します
+NoBreakpointsWarning=このページにはブレークポイントが設定されていません。
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=適用されたスタイルのみ表示
+style.option.tip.Only_Show_Applied_Styles=要素に適用されたスタイルのみ表示します
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=ユーザエージェント CSS を表示
+style.option.tip.Show_User_Agent_CSS=ユーザエージェント により定義された CSS も表示します
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=色を 16 進表記
+computed.option.tip.Colors_As_Hex=色を 16 進数で表示します
+computed.option.label.Colors_As_RGB=色を RGB 表記
+computed.option.tip.Colors_As_RGB=色を RGB で表示します
+computed.option.label.Colors_As_HSL=色を HSL 表記
+computed.option.tip.Colors_As_HSL=色を HSL で表示します
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=擬似クラス :active のスタイルを表示します
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=擬似クラス :hover のスタイルを表示します
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=擬似クラス :focus のスタイルを表示します
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=宣言を調査
+css.tip.Inspect_Declaration=このフォントの宣言を調査します
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=簡略プロパティを展開
+css.option.tip.Expand_Shorthand_Properties=まとめて表示している CSS プロパティをその構成要素に分解します
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=アルファベット順にソート
+computed.option.tip.Sort_Alphabetically=スタイルを名称順にソートします/スタイルをカテゴリー別にグループ分けします
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Mozilla 特有のスタイルを表示
+computed.option.tip.Show_Mozilla_Specific_Styles=-moz で始まるスタイルも表示します
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=この要素にユーザー定義のスタイルルールはありません
+script.Type_any_key_to_filter_list=リストをフィルタするにはいずれかのキーを押してください
+# LOCALIZATION NOTE (location.inline):
+# Label used within the Location Menu for inline styles or scripts
+location.inline=インライン
+# LOCALIZATION NOTE (location.no_domain):
+# Label used within the Location Menu for the group of scripts,
+# which don't have a domain specified like e.g. eval()'ed scripts
+location.no_domain=ドメインなし
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=position
+LayoutAdjacent=adjacent
+position=position
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=定規とガイドを表示
+layout.option.tip.Show_Rulers=レイアウトボックスのパーツ上でホバーさせたとき、ページ上に定規とガイドを表示します
+# Net panel
+Loading=読み込み中...
+Headers=ヘッダ
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=リクエスト一覧を消去します
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=ヘッダをリセット
+net.header.tip.Reset_Header=ヘッダー表示をリセットします
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=リクエストされた URL と使用された HTTP メソッド
+net.header.Status=ステータス
+net.header.Status_Tooltip=受信レスポンスの状態
+net.header.Domain=ドメイン
+net.header.Domain_Tooltip=実行されたリクエストのドメイン
+net.header.Size=サイズ
+net.header.Size_Tooltip=受信したレスポンスのサイズ (圧縮レスポンスの場合は圧縮されたサイズ)
+net.header.Timeline=タイムライン
+net.header.Timeline_Tooltip=リクエスト/レスポンスのラウンドトリップに関する詳細なタイミング情報
+net.header.Local_IP=ローカル IP
+net.header.Local_IP_Tooltip=リクエストにバインドされているローカル IP アドレスとポート番号
+net.header.Remote_IP=リモート IP
+net.header.Remote_IP_Tooltip=リクエストにバインドされているリモート IP アドレスとポート番号
+net.header.Protocol=プロトコル
+net.header.Protocol_Tooltip=Web 上でリソースを特定するのに使われた URL プロトコル
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=XHR ブレークポイント
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=XHRでブレーク
+net.tip.Break_On_XHR=XMLHttpRequest が作成されたら実行中の JavaScript を停止します
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=ソースを表示
+net.headers.pretty_print=整形して表示
+# LOCALIZATION NOTE (net.filter.label.All, net.filter.tooltip.All, net.filter.label.HTML,
+# net.filter.tooltip.HTML, net.filter.label.CSS, net.filter.tooltip.CSS, net.filter.label.JS,
+# net.filter.tooltip.JS, net.filter.label.XHR, net.filter.tooltip.XHR, net.filter.label.Images,
+# net.filter.tooltip.Images, net.filter.label.Plugins, net.filter.tooltip.Plugins,
+# net.filter.label.Media, net.filter.tooltip.Media):
+# Labels and tooltips for Net panel filter (used on the Net panel toolbar)
+net.filter.label.All=すべて
+net.filter.tooltip.All=すべての MIME タイプを表示
+net.filter.label.HTML=HTML
+net.filter.tooltip.HTML=マークアップファイルのみ表示
+net.filter.label.CSS=CSS
+net.filter.tooltip.CSS=CSS ファイルのみ表示
+net.filter.label.JS=JavaScript
+net.filter.tooltip.JS=JavaScript ファイルのみ表示
+net.filter.label.XHR=XHR
+net.filter.tooltip.XHR=XMLHttpRequests のみ表示
+net.filter.label.Images=画像
+net.filter.tooltip.Images=画像のみ表示
+net.filter.label.Plugins=プラグイン
+net.filter.tooltip.Plugins=Flash と Silverlight ファイルのみ表示
+net.filter.label.Media=メディア
+net.filter.tooltip.Media=オーディオとビデオのみ表示
+net.filter.label.Fonts=フォント
+net.filter.tooltip.Fonts=フォントのみ表示
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=POST
+Put=PUT
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=レスポンス
+URLParameters=パラメータ
+Cache=キャッシュ
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=一般情報
+fontviewer.Meta_Data=メタデータ
+fontviewer.view_source=ソースを表示
+fontviewer.Preview=プレビュー
+fontviewer.view_characters=文字を表示
+fontviewer.pretty_print=整形して表示
+fontviewer.view_sample=サンプルを表示
+fontviewer.uniqueid=ユニーク ID
+fontviewer.vendor=ベンダー
+fontviewer.license=ライセンス
+fontviewer.description=説明
+fontviewer.copyright=著作権
+fontviewer.credits=クレジット
+fontviewer.trademark=商標
+fontviewer.licensee=ライセンシー
+fontviewer.extension=拡張
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=キーでソート
+jsonviewer.do_not_sort=ソートしない
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON="%S" を JSON としてコピー
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=リクエストヘッダ
+ResponseHeaders=レスポンスヘッダ
+CachedResponseHeaders=キャッシュのレスポンスヘッダ
+PostRequestHeaders=アップロードストリームのリクエストヘッダ
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=キャッシュから直接リクエストが解決されたため、サーバからのレスポンスはありません。キャッシュされているレスポンスについては下を参照してください。
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebug のログ上限に達しました。%1$S 件表示されませんでした。;Firebug のログ上限に達しました。%1$S 件表示されませんでした。
+LimitPrefs=プレファレンス
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=上限を変更するには、次を修正してください: %S
+Refresh=リフレッシュ
+panel.tip.Refresh=パネル表示をリフレッシュします
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=新規タブで開く
+firebug.tip.Open_In_Tab=この URL を新規タブで開きます
+Open_Response_In_New_Tab=レスポンスを新規タブで開く
+net.tip.Open_Response_In_New_Tab=このレスポンスを新規タブで開きます
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=プロファイル
+ProfilerStarted=プロファイラは実行中です。レポートを見るには、再度 [プロファイル] をクリックしてください。
+ProfilerRequiresTheScriptPanel=プロファイリングを機能させるには、スクリプトパネルが有効化されていなければなりません。
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S 回の呼び出し);(%1$Sms, %2$S 回の呼び出し)
+NothingToProfile=プロファイルするアクティビティは何もありません
+PercentTooltip=この関数で消費された時間の割合
+CallsHeaderTooltip=関数の呼び出し回数
+OwnTimeHeaderTooltip=ネスト呼び出しを除く、関数で消費される時間
+TimeHeaderTooltip=ネスト呼び出しを含む、関数で消費される時間
+AvgHeaderTooltip=関数呼び出しを含む、平均時間
+MinHeaderTooltip=関数呼び出しを含む、最小時間
+MaxHeaderTooltip=関数呼び出しを含む、最大時間
+ProfileButton.Tooltip=JavaScript 実行時間をプロファイル
+Function=関数
+Percent=パーセント
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=呼び出し
+OwnTime=自己時間
+Time=時間
+Avg=平均
+Min=最小
+Max=最大
+File=ファイル
+# Support for standard actions.
+Copy=コピー
+Cut=切り取り
+Remove=除去
+Delete=削除
+Paste=貼り付け
+SelectAll=すべて選択
+html.Copy_Node=%S をコピー
+html.tip.Copy_Node=%S ノードとそのすべてのコンテンツをクリップボードにコピーします
+CopyInnerHTML=innerHTML をコピー
+html.tip.Copy_innerHTML=要素のコンテンツをクリップボードにコピーします
+CopyXPath=XPath をコピー
+html.tip.Copy_XPath=要素の XPath をクリップボードにコピーします
+Copy_CSS_Path=CSS パスをコピー
+html.tip.Copy_CSS_Path=要素の CSS パスをクリップボードにコピーします
+# LOCALIZATION NOTE (html.menu.Paste, html.tip.Paste): Context menu item (with subitems).
+# Used in the HTML Panel to paste HTML/SVG/XML/XUL/MathML contents
+# %S = the type of the content to paste (HTML, SVG, XML, XUL or MathML)
+html.menu.Paste=%S 貼り付け
+html.tip.Paste=%S のコンテンツとして貼り付け
+# LOCALIZATION NODE (html.menu.Paste_*, html.tip.Paste_*): Context menu items.
+# These items are paste options, and appears as subitems of html.menu.Paste in the context menu.
+html.menu.Paste_Replace_Content=コンテンツを置換
+html.tip.Paste_Replace_Content=ノードのコンテンツを置換
+html.menu.Paste_Replace_Node=ノードを置換
+html.tip.Paste_Replace_Node=ノードの HTML を置換
+html.menu.Paste_AsFirstChild=最初の子要素として
+html.tip.Paste_AsFirstChild=ノードの最初の子要素として貼り付け
+html.menu.Paste_AsLastChild=最後の子要素として
+html.tip.Paste_AsLastChild=ノードの最後の子要素として貼り付け
+html.menu.Paste_Before=前に
+html.tip.Paste_Before=ノードの前に貼り付け
+html.menu.Paste_After=後に
+html.tip.Paste_After=ノードの後に貼り付け
+# LOCALIZATION NOTE (html.menu.Reload_Frame, html.menu.tip.Reload_Frame):
+# Context menu item of HTML frames
+html.menu.Reload_Frame=フレームを再読み込み
+html.menu.tip.Reload_Frame=このフレームのコンテンツを再読み込み
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=URL をコピー
+clipboard.tip.Copy_Location=オブジェクトの URL をクリップボードにコピーします
+CopyURLParameters=URL パラメータをコピー
+net.tip.Copy_URL_Parameters=クリップボードに URL パラメータをコピーします
+CopyPOSTParameters=POST パラメータをコピー
+net.tip.Copy_POST_Parameters=クリップボードに POST パラメータをコピーします
+CopyLocationParameters=パラメータ付きで URL をコピー
+net.tip.Copy_Location_Parameters=パラメータを含む URL をクリップボードにコピーします
+CopyRequestHeaders=リクエストヘッダをコピー
+net.tip.Copy_Request_Headers=リクエストヘッダをクリップボードにコピーします
+CopyResponseHeaders=レスポンスヘッダをコピー
+net.tip.Copy_Response_Headers=レスポンスヘッダをクリップボードにコピーします
+CopyResponse=レスポンスボディをコピー
+net.tip.Copy_Response=レスポンスボディをクリップボードにコピーします
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=エラーをコピー
+console.menu.tip.Copy_Error=エラー情報をクリップボードにコピーします
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=関数をコピー
+dom.tip.Copy_Source=関数のソースコードをクリップボードにコピーします
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole="%S" の呼び出しを記録
+dom.tip.Log_Calls_To_Function=関数 "%S" の呼び出しをコンソールに記録します
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=イベントを記録
+html.tip.Show_Events_In_Console=イベント情報をコンソールに記録します
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=有効
+panel.tip.Enabled=パネルの有効/無効を切り替えます
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=コマンドラインをポップアップ表示します
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Firebug のコンソールは '%S' をサポートしません
+# LOCALIZATION NOTE (commandline.errorSourceHeader): Message displayed in the header of the
+# source code where an exception has occured.
+commandline.errorSourceHeader=Firebug コマンドラインを使って評価された式:
+# LOCALIZATION NOTE (commandline.MethodDisabled): Message displayed in the Console panel,
+# if a disabled method is entered via the Command Line.
+commandline.MethodDisabled=このコマンドラインメソッドは一時的に使用できなくなっています。
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Firebug コマンドラインは '%S' をサポートしません
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=現在のウィンドウ:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=すべてのエラーでブレークを無効化
+console.Break_On_All_Errors=すべてのエラーでブレーク
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=このエラーでブレーク
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=矢印キー、タブキー、エンターキーを使用
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=Firefox の設定で JavaScript が無効になっています。コンソールを使用したい場合は、ツール > オプション > コンテンツ > JavaScript を有効にする で、このオプションを有効にしてください
+# LOCALIZATION NOTE (console.tip.ScriptPanelMustBeEnabledForTraces): Message shown inside the Console
+# panel instead of a stack trace when it is missing because the script panel is disabled. The text
+# enclosed in <a></a> is a link which enables the Script panel.
+console.ScriptPanelMustBeEnabledForTraces=スタックトレースを得るにはスクリプトパネルが有効化されていなければなりません。<a>スクリプトパネルを有効化。</a>
+# LOCALIZATION NOTE (tooltip.multipleFiltersHint):
+# Hint used for Console and Net panel filter button tooltips describing the shortcut for selecting
+# multiple filters
+tooltip.multipleFiltersHint=Ctrl + クリックで複数のフィルタを選択できます
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=配列の要素が多すぎるため(現在の上限は%S)、このページでは強調表示できません。\n"extensions.firebug.multiHighlightLimit" の設定値を確認してください。
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=XML ページのため Firebug のコマンドラインが無効化されています。<a>HTML に変更</a>して有効化できます。
+# LOCALIZATION NOTE (commandline.Use_in_Command_Line): Right-click option for copying a JS value into the variable
+# $p and opening the Command Line.
+commandline.Use_in_Command_Line=コマンドラインで使用
+commandline.tip.Use_in_Command_Line=コマンドラインにフォーカスを移し、この値を "$p" として使用可能にします
+# LOCALIZATION NOTE (commandline.include.includeSuccess): For the include() function. This message is displayed
+# in the Console panel when a remote script evaluation succeeded
+# %S = the filename
+commandline.include.includeSuccess=%S のプロパティがインクルードされました。
+# LOCALIZATION NOTE (commandline.include.aliasNotFound): For the include() function. This message is displayed
+# in the Console panel when a requested alias is not found
+# %S = the alias name
+commandline.include.aliasNotFound=エイリアス "%S" がありません。
+# LOCALIZATION NOTE (commandline.include.loadFail): For the include() function. This message is displayed
+# in the Console panel when the remote script download failed
+# %S = the filename
+commandline.include.loadFail=このスクリプトが読み込めませんでした: %S
+# LOCALIZATION NOTE (commandline.include.invalidRequestProtocol): For the include() function. This message is displayed
+# in the Console panel when the user tries to download a script with another scheme than HTTP(S)
+# %S = the filename
+commandline.include.invalidRequestProtocol=HTTP/HTTPS プロトコル以外はサポートされません。
+# LOCALIZATION NOTE (commandline.include.invalidSyntax): For the include() function. This message is displayed
+# in the Console panel when the user tries to execute a non-Javascript file
+# or when the script contains syntax errors
+commandline.include.invalidSyntax=文法エラーのためインクルードが失敗しました。ファイルには本当に JavaScript が含まれていますか?
+# LOCALIZATION NOTE (commandline.include.aliasCreated): For the include() function. This message is displayed
+# in the Console panel when a new alias is created successfully
+# %S = the alias name
+commandline.include.aliasCreated=エイリアス "%S" が作成されました。
+# LOCALIZATION NOTE (commandline.include.aliasRemoved): For the include() function. This message is displayed
+# in the Console panel when a new alias is removed successfully
+# %S = the alias name
+commandline.include.aliasRemoved=エイリアス "%S" が削除されました。
+# LOCALIZATION NOTE (commandline.include.invalidAliasName): For the include() function. This message is displayed
+# in the Console panel if an invalid alias name (which contains "/" or ".") is provided.
+# %S = the invalid alias name
+commandline.include.invalidAliasName=エイリアス名は "." や "/" を含んではいけません。不正なエイリアス名: "%S"
+# LOCALIZATION NOTE (commandline.include.tooLongAliasName): For the include() function. This message is displayed
+# in the Console panel if the provided alias name is too long (i.e. more than 30 characters)
+# %S = the invalid alias name
+commandline.include.tooLongAliasName=エイリアス名は 30 文字を超えてはいけません。不正なエイリアス名: "%S"
+# LOCALIZATION NOTE (commandline.include.wrongAliasArgument): For the include() function. This message is displayed
+# in the Console panel if the type of the alias name is invalid (a string is expected)
+commandline.include.invalidAliasArgumentType=不正な第二引数です。エイリアス名を指定してください。
+# LOCALIZATION NOTE (commandline.include.wrongUrlArgument): For the include() function. This message is displayed
+# in the Console panel if the type of the url arguement is invalid (a string or null are expected)
+commandline.include.invalidUrlArgumentType=不正な URL 引数です。
+# LOCALIZATION NOTE (commandline.include.confirmDelete): For the include() function. This message is displayed
+# in a confirmation dialog when the user wants to delete an alias
+# %S = the name of the alias to delete
+commandline.include.confirmDelete=本当にこのエイリアスを削除しますか? : "%S"
+# LOCALIZATION NOTE (commandline.include.noDefinedAlias): For the include() function. This message is displayed
+# when the user wants to display the aliases table but there no alias is defined.
+commandline.include.noDefinedAlias=(エイリアスはまだ定義されていません)
+commandline.tip.Delete_Alias=エイリアスを削除します
+commandline.tip.Edit_Alias_Name=エイリアス名を編集します
+commandline.tip.Edit_Alias_URL=エイリアス URL を編集します
+commandline.tip.Open_In_Scratchpad=スクリプトの内容をスクラッチパッドで開きます
+commandline.tip.Include_Script=スクリプトをダウンロードして実行
+commandline.label.DeleteAlias=エイリアスを削除
+commandline.label.EditAliasName=エイリアス名を編集
+commandline.label.EditAliasURL=エイリアス URL を編集
+commandline.label.OpenInScratchpad=スクラッチパッドで開く
+commandline.label.IncludeScript="%S" をインクルード
+# LOCALIZATION NOTE (Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting things.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+#
+# NOTE to translators: this message was originally taken from cookies.msg.Do_not_show_this_message_again
+Do_not_show_this_message_again=このメッセージを再び表示しない
+# LOCALIZATION NOTE (scratchpad.loading, scratchpad.failLoading)
+# Used when Firebug downloads a remote script and wants to display it in Scratchpad
+# The messages appears as Javascript Comments in Scratchpad
+scratchpad.loading=読み込み中 しばらくお待ちください...
+scratchpad.failLoading=スクリプトの読み込み中にエラーが発生しました。
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=レスポンス ボディ
+net.sizeinfo.Post_Body=ポスト ボディ
+net.sizeinfo.Total_Sent=送信合計
+net.sizeinfo.Total_Received=受信合計
+net.sizeinfo.Including_HTTP_Headers=HTTP ヘッダを含む
+net.ActivationMessage=ネットパネルが起動しました。ネットパネルが停止していた間に起こったリクエストは、表示されていません。
+net.responseSizeLimitMessage=Firebug のレスポンスサイズ上限に達しました。すべてのレスポンスを新規 Firefox タブで開くには、<a>ここ</a>をクリックしてください。
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Firebug でのリクエストサイズ上限に達しました。
+net.Break_On_XHR=XHR でブレーク
+net.label.Parameters=パラメータ
+net.label.Parts=パート
+net.label.Source=ソース
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=再送信する
+net.tip.Resend=リクエストを再度送信します
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=ブラウザキャッシュを無効化
+net.option.tip.Disable_Browser_Cache=ブラウザの HTTP キャッシュを無効化します
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=描画イベントを表示
+net.option.tip.Show_Paint_Events=タイムライン内に MozAfterPaint イベントを緑色の線で表示します
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=BFCache のレスポンスを表示
+net.option.tip.Show_BFCache_Responses=「戻る/進む」用キャッシュからのレスポンスも表示します
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=次でブレーク
+script.Disable_Break_On_Next=次でブレーク
+ShowHttpHeaders=HTTP ヘッダを表示
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S 件のリクエスト;%1$S 件のリクエスト
+# LOCALIZATION NOTE (net.summary.from_cache):
+# Label used in the Net panel's request summary. Displays the summarized response size coming from cache for all HTTP requests.
+net.summary.from_cache=%S (キャッシュ)
+# LOCALIZATION NOTE (net.summary.tip.request_count, net.summary.tip.total_size,
+# net.summary.tip.total_cached_size, net.summary.tip.total_request_time):
+# Labels used for the tooltips in the Net panel's request summary
+net.summary.tip.request_count=リクエスト数
+net.summary.tip.total_size=全リクエストの合計サイズ
+net.summary.tip.total_cached_size=全リクエストのキャッシュの合計サイズ
+net.summary.tip.total_request_time=全リクエストの合計読み込み時間と 'onload' イベントが発生した時間
+StopLoading=読み込みを中止
+net.tip.Stop_Loading=リクエストの読込を中止します
+LargeData=(データが大きすぎます)
+ShowComputedStyle=スタイルを累積して表示
+StyleGroup-text=テキスト
+StyleGroup-background=背景
+StyleGroup-box=ボックスモデル
+StyleGroup-layout=レイアウト
+StyleGroup-other=その他
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=色をコピー
+css.tip.Copy_Color=色をクリップボードにコピーします
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=画像のアドレスをコピー
+css.tip.Copy_Image_Location=画像の URL をクリップボードにコピーします
+OpenImageInNewTab=新規タブで画像を開く
+css.tip.Open_Image_In_New_Tab=新規ブラウザタブで画像を開きます
+# LOCALIZATION NOTE (OmitObjectPathStack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=ツールバースタックを非表示
+callstack.option.tip.Omit_Object_Path_Stack=オブジェクトパスのスタックを表示しません
+Load_Original_Source=オリジナルのソースを読み込む
+css.tip.Load_Original_Source=変更を破棄して元の CSS を読み込みます
+# LOCALIZATION NOTE (callstack.option.Show_Arguments, callstack.option.tip.Show_Arguments):
+# Stack side panel option (located in tab's option menu). If set to true,
+# function arguments are displayed
+callstack.option.Show_Arguments=引数を表示
+callstack.option.tip.Show_Arguments=関数の引数も表示します
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=ルール宣言をコピー
+css.tip.Copy_Rule_Declaration=すべてのプロパティを含んで、ルールをクリップボードにコピーします
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=スタイル宣言をコピー
+css.tip.Copy_Style_Declaration=ルールのプロパティをクリップボードにコピーします
+# LOCALIZATION NOTE (css.label.Copy_Property_Declaration, css.tip.Copy_Property_Declaration,
+# css.label.Copy_Property_Name, css.tip.Copy_Property_Name, css.label.Copy_Property_Value,
+# css.tip.Copy_Property_Value):
+# Menu item labels and tooltips used in CSS panel/Style side panel context menu.
+# Allow copying the current CSS property's declaration/name/value to the clipboard.
+css.label.Copy_Property_Declaration=プロパティ宣言をコピー
+css.tip.Copy_Property_Declaration=クリップボードにプロパティの宣言をコピーします
+css.label.Copy_Property_Name=プロパティ名をコピー
+css.tip.Copy_Property_Name=クリップボードにプロパティ名をコピーします
+css.label.Copy_Property_Value=プロパティの値をコピー
+css.tip.Copy_Property_Value=クリップボードにプロパティの値をコピーします
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S 件のエラー;%1$S 件のエラー
+moduleManager.title=%S パネルは無効化されています
+moduleManager.desc3=すべてのパネルをいちどに有効化/無効化するには、Firebug ツールバーボタンを使用してください。個別に操作するには、各パネルのタブメニューを使用してください。
+moduleManager.Enable=有効化
+Suspend_Firebug=Firebug を休止
+Resume_Firebug=Firebug を再開
+Reset_Panels_To_Disabled=パネルを無効にリセット
+Open_Console=コンソールを開く
+Open_Console_Tooltip=Firebug にトレースコンソールを開きます。
+Scope_Chain=スコープチェイン
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=With
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Call
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Window
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=ブロッキング
+requestinfo.Resolving=DNS ルックアップ
+requestinfo.Connecting=接続
+requestinfo.Sending=送信
+requestinfo.Waiting=待機
+requestinfo.Receiving=受信
+requestinfo.ContentLoad='DOMContentLoaded' (イベント)
+requestinfo.WindowLoad='load' (イベント)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=はじまりからリクエスト開始までの時間
+requestinfo.phases.label=リクエスト開始を基準とした、各リクエストフェーズの開始および経過時間:
+requestinfo.timings.label=リクエスト開始を基準としたイベントのタイミング:
+search.Firebug_Search=Firebug 検索
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=次へ
+search.tip.Next=次の一致を検索します
+search.Previous=前へ
+search.tip.Previous=前の一致を検索します
+search.Case_Sensitive=大文字小文字を区別
+search.tip.Case_Sensitive=検索時に大文字小文字を区別します
+search.Case_Insensitive=大文字小文字を区別しない
+search.tip.Case_Insensitive=検索時に大文字小文字を区別しません
+search.Multiple_Files=複数ファイル
+search.tip.Multiple_Files=このパネルに関連するすべてのファイルの中を検索します
+search.Use_Regular_Expression=正規表現を使用
+search.tip.Use_Regular_Expression=検索時に入力された文字列を正規表現として解釈します
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS セレクタ
+search.net.Headers=ヘッダ
+search.net.Parameters=パラメータ
+search.net.Response_Bodies=レスポンス本文
+search.net.tip.Response_Bodies=レスポンス本文も検索します
+firebug.console.Persist=持続
+firebug.console.Do_Not_Clear_On_Reload2=ページの再読み込み時にパネルをクリアしません
+firebug.console.Show_All_Log_Entries=すべてのログエントリを表示
+firebug.console.Errors=エラー
+firebug.console.Filter_by_Errors=エラーでフィルタ
+firebug.console.Warnings=警告
+firebug.console.Filter_by_Warnings=警告でフィルタ
+firebug.console.Info=情報
+firebug.console.Filter_by_Info=情報でフィルタ
+firebug.console.Debug_Info=デバッグ情報
+firebug.console.Filter_by_Debug_Info=デバッグ情報でフィルタ
+firebug.Deactivate_Firebug=Firebug を非アクティブ化
+firebug.tip.Deactivate_Firebug=現在の Web サイトで Firebug を非アクティブ化します
+# LOCALIZATION NOTE (firebug.tip.Toggle_Side_Panels): A tooltip used for side panels visibility
+# toggle button. The button is available on the right side of panel's toolbar (only for panels
+# that have a side panel).
+firebug.tip.Toggle_Side_Panels=サイドパネルの表示を切り替えます
+firebug.ShowFirebug=Firebug を開く
+firebug.menu.tip.Open_Firebug=Firebug の UI を表示します
+firebug.HideFirebug=Firebug を隠す
+firebug.menu.tip.Minimize_Firebug=Firebug を最小化しますが、動作中のままになります
+firebug.FocusFirebug=Firebug ウィンドウにフォーカス
+firebug.menu.tip.Focus_Firebug=取り外された Firebug ウィンドウにフォーカスします
+firebug.menu.Enable_All_Panels=すべてのパネルを有効化
+firebug.menu.tip.Enable_All_Panels=有効化可能なすべてのパネルを有効にします
+firebug.menu.Disable_All_Panels=すべてのパネルを無効化
+firebug.menu.tip.Disable_All_Panels=有効化可能なすべてのパネルを無効にします
+firebug.menu.Customize_shortcuts=ショートカットのカスタマイズ
+firebug.menu.tip.Customize_Shortcuts=Firebug の内部キー設定をカスタマイズします
+firebug.Options=オプション
+firebug.menu.tip.Options=Firebug のグローバル設定
+firebug.menu.Enable_Accessibility_Enhancements=アクセシビリティ拡張を有効化
+firebug.menu.tip.Enable_Accessibility_Enhancements=キーボードとその他のアクセシビリティ拡張を使ったフルコントロールを有効にします
+firebug.menu.Activate_Same_Origin_URLs2=同一生成元 URL でアクティブ化
+firebug.menu.tip.Activate_Same_Origin_URLs=同一生成元ポリシーに適合する URL で Firebug をアクティブにします
+firebug.menu.Reset_All_Firebug_Options=すべての Firebug オプションをリセット
+firebug.menu.tip.Reset_All_Firebug_Options=すべての Firebug の設定をそのデフォルト値にリセットします
+firebug.menu.Firebug_Online=Firebug オンライン
+firebug.menu.tip.Firebug_Online=Firebug の関連 Web サイト
+firebug.menu.Extensions=Firebug 拡張...
+firebug.menu.tip.Extensions=Firebug 拡張のダウンロードとインストール
+firebug.menu.Vertical_Panels=垂直パネル
+firebug.menu.tip.Vertical_Panels=Firebug のメインとサイドパネルの配置を切り替えます
+firebug.menu.Show_Info_Tips=情報チップを表示
+firebug.menu.tip.Show_Info_Tips=ホバーされた要素に関する情報ポップアップを表示します
+firebug.Show_Error_Count=エラー数を表示
+firebug.menu.tip.Show_Error_Count=コンソール内に記録されたエラーの数を表示します
+firebug.TextSize=文字サイズ
+firebug.menu.tip.Text_Size=Firebug で使われる文字の大きさを変更します
+firebug.IncreaseTextSize=文字サイズを大きく
+firebug.menu.tip.Increase_Text_Size=Firebug で使われる文字の大きさを大きくします
+firebug.DecreaseTextSize=文字サイズを小さく
+firebug.menu.tip.Decrease_Text_Size=Firebug で使われる文字の大きさを小さくします
+firebug.NormalTextSize=標準の文字サイズ
+firebug.menu.tip.Normal_Text_Size=Firebug で使われる文字の大きさをデフォルトにリセットします
+firebug.Website=Firebug の Web サイト...
+firebug.menu.tip.Website=Firebug の公式 Web サイトを開きます
+firebug.help=ヘルプ...
+firebug.menu.tip.help=Firebug を説明しているページへのリンクを掲載したページを開きます
+firebug.Documentation=ドキュメント...
+firebug.menu.tip.Documentation=Firebug に関するドキュメントを開きます
+firebug.KeyShortcuts=キーボードショートカット...
+firebug.menu.tip.Key_Shortcuts=Firebug で使えるマウスとキーボードショートカット一覧を開きます
+firebug.Forums=ディスカッショングループ...
+firebug.menu.tip.Forums=ディスカッショングループサイトを開きます
+firebug.Issues=課題トラッカー...
+firebug.menu.tip.Issues=課題トラッカーサイトを開きます
+firebug.Donate=貢献...
+firebug.menu.tip.Donate=貢献サイトを開きます
+firebug.About=Firebug について...
+firebug.menu.tip.About=Firebug に関する情報
+ProfileJavaScript=JavaScript をプロファイル
+firebug.menu.tip.Profile_JavaScript=JavaScript 実行時間をプロファイル
+firebug.Search=検索
+firebug.menu.tip.Search=検索フィールドにフォーカスをセットします
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=コマンドを繰り返し
+firebug.shortcut.tip.reenterCommand=コマンドラインに入力された最後のコマンドを繰り返します
+firebug.shortcut.toggleInspecting.label=調査を切り替え
+firebug.shortcut.tip.toggleInspecting=調査を有効/無効にします
+firebug.shortcut.toggleQuickInfoBox.label=クイック情報ボックスを切り替え
+firebug.shortcut.tip.toggleQuickInfoBox=現在調査中の要素に関する情報パネルの表示を有効/無効にします
+firebug.shortcut.toggleProfiling.label=プロファイル中を切り替え
+firebug.shortcut.tip.toggleProfiling=JavaScript プロファイラを有効/無効にします
+firebug.shortcut.focusCommandLine.label=コマンドラインにフォーカス
+firebug.shortcut.tip.focusCommandLine=Firebug を開いてコマンドラインにフォーカスをセット、もしくはコマンドラインポップアップを切り替えます
+firebug.shortcut.focusFirebugSearch.label=Firebug 検索にフォーカス
+firebug.shortcut.tip.focusFirebugSearch=検索フィールドにフォーカスをセットします
+firebug.shortcut.focusWatchEditor.label=ウォッチエディタにフォーカス
+firebug.shortcut.tip.focusWatchEditor=スクリプトパネルに切り替え、新規ウォッチ式を入力するフィールドにフォーカスをセットします
+firebug.shortcut.focusLocation.label=ロケーションにフォーカス
+firebug.shortcut.tip.focusLocation=ロケーションメニューを開きます
+firebug.shortcut.nextObject.label=次のオブジェクトへ
+firebug.shortcut.tip.nextObject=パネルの要素パスで次のオブジェクトを選択します
+firebug.shortcut.previousObject.label=前のオブジェクトへ
+firebug.shortcut.tip.previousObject=パネルの要素パスで前のオブジェクトを選択します
+firebug.shortcut.customizeFBKeys.label=Firebug キーをカスタマイズ
+firebug.shortcut.tip.customizeFBKeys=Firebug ショートカット設定ダイアログを開きます
+firebug.shortcut.detachFirebug.label=新規ウィンドウで Firebug を開く
+firebug.shortcut.tip.detachFirebug=自ウィンドウ内にある Firebug を取り外します
+firebug.shortcut.leftFirebugTab.label=左の Firebug パネルに切り替え
+firebug.shortcut.tip.leftFirebugTab=ひとつ左へ Firebug パネルを切り替えます
+firebug.shortcut.rightFirebugTab.label=右の Firebug パネルに切り替え
+firebug.shortcut.tip.rightFirebugTab=ひとつ右へ Firebug パネルを切り替えます
+firebug.shortcut.toggleFirebug.label=Firebug を開く
+firebug.shortcut.tip.toggleFirebug=Firebug の UI を開く/最小化します
+firebug.shortcut.closeFirebug.label=Firebug を無効化
+firebug.shortcut.tip.closeFirebug=現在の Web サイトで Firebug を無効化します
+firebug.shortcut.previousFirebugTab.label=前の Firebug タブ
+firebug.shortcut.tip.previousFirebugTab=以前に選択された Firebug タブに切り替えます
+firebug.shortcut.clearConsole.label=コンソールをクリア
+firebug.shortcut.tip.clearConsole=すべてのログをコンソールから削除します
+firebug.shortcut.openTraceConsole.label=トレースコンソールを開く
+firebug.shortcut.tip.openTraceConsole=FBTrace コンソールを開く
+firebug.shortcut.navBack.label=戻る
+firebug.shortcut.tip.navBack=前のパネルもしくは前のナビゲーション履歴のロケーションリスト項目に切り替えます
+firebug.shortcut.navForward.label=進む
+firebug.shortcut.tip.navForward=次のパネルもしくは次のナビゲーション履歴のロケーションリスト項目に切り替えます
+firebug.shortcut.increaseTextSize.label=文字サイズを大きく
+firebug.shortcut.tip.increaseTextSize=Firebug で使われる文字の大きさを大きくします
+firebug.shortcut.decreaseTextSize.label=文字サイズを小さく
+firebug.shortcut.tip.decreaseTextSize=Firebug で使われる文字の大きさを小さくします
+firebug.shortcut.normalTextSize.label=標準の文字サイズ
+firebug.shortcut.tip.normalTextSize=Firebug で使われる文字の大きさをデフォルトにリセットします
+firebug.shortcut.help.label=ヘルプを開く
+firebug.shortcut.tip.help=よくある質問に回答しているページを開きます
+firebug.shortcut.toggleBreakOn.label=...でブレークを切り替え
+firebug.shortcut.tip.toggleBreakOn=パネル内で指定のイベントが発生したときスクリプトの実行を停止させる機能を有効/無効にします
+firebug.panel_selector=パネルセレクタ
+customizeShortcuts=Firebug ショートカットバインディング
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=パネルツール
+a11y.labels.firebug_panels=Firebug パネル
+a11y.labels.firebug_side_panels=Firebug サイドパネル
+a11y.labels.firebug_window=Firebug ウィンドウ
+a11y.labels.firebug_status=Fireubg ステータス
+a11y.labels.reset=リセット
+a11y.labels.reset_shortcut=%S のショートカットをリセット
+aria.labels.inactive_panel=パネル停止
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=ログ行
+a11y.labels.call_stack=コールスタック
+a11y.labels.document_structure=ドキュメント構造
+a11y.labels.title_panel=%S パネル
+a11y.labels.title_side_panel=%S サイドパネル
+a11y.labels.cached=キャッシュ
+aria.labels.stack_trace=スタックトレース
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=position
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=margin top
+a11y.layout.margin_right=margin right
+a11y.layout.margin_bottom=margin bottom
+a11y.layout.margin_left=margin left
+a11y.layout.border_top=border top
+a11y.layout.border_right=border right
+a11y.layout.border_bottom=border bottom
+a11y.layout.border_left=border left
+a11y.layout.padding_top=padding top
+a11y.layout.padding_right=padding right
+a11y.layout.padding_bottom=padding bottom
+a11y.layout.padding_left=padding left
+a11y.layout.top=top
+a11y.layout.right=right
+a11y.layout.bottom=bottom
+a11y.layout.left=left
+a11y.layout.width=width
+a11y.layout.height=height
+a11y.layout.size=size
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=タブに続けて ENTER を押すと個々の要素を編集できます
+a11y.labels.style_rules=スタイルルール
+aria.labels.inherited_style_rules=継承スタイルルール
+a11y.labels.computed_styles=累積されたスタイル
+a11y.labels.dom_properties=DOM プロパティ
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=インラインエディタ
+a11y.labels.value_for_attribute_in_element=%S 属性の値 要素 %S
+a11y.labels.attribute_for_element=要素 %S の属性
+a11y.labels.text_contents_for_element=要素 %S のテキスト内容
+a11y.labels.defined_in_file=%S で定義
+a11y.labels.declarations_for_selector="%S" セレクタのスタイル定義
+a11y.labels.property_for_selector=CSS プロパティ セレクタ:%S
+a11y.labels.value_property_in_selector=%S プロパティの値 セレクタ:%S
+a11y.labels.css_selector=CSS セレクタ
+a11y.labels.source_code_for_file=ファイル %S のソースコード
+a11y.labels.press_enter_to_add_new_watch_expression=新たなウォッチ式を追加するにはENTERを押してください
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=オーバーライド
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=条件付きブレークポイントあり
+a11y.updates.has_disabled_break_point=無効化されたブレークポイントあり
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=スクリプト停止 %S 行目 %S ファイル %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=%S との一致が見つかりました %S ログ行
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=%S との一致が見つかりました %S 行目 %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=%S との一致が見つかりました %S 要素 パス %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=%S との一致が見つかりました 属性%S=%S %S 要素 パス %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=%S との一致が見つかりました テキスト内容:%S %S 要素 パス %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=%S との一致が見つかりました セレクタ %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration="%S" との一致が見つかりました スタイル定義 %S セレクタ %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property="%S" との一致が見つかりました DOM プロパティ %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row="%S" との一致が見つかりました %S,%S:%S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=%S との一致が見つかりました ネットの要約行:%S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=%S との一致が見つかりませんでした
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=本当にすべての Firebug オプションをデフォルト状態にリセットしますか?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=これまでの CSS 編集結果は失われます。\n本当にソースを編集しますか?
+# Console messages
+warning.Console_must_be_enabled=コンソールが有効でなければなりません
+warning.Command_line_blocked?=コマンドラインがブロックされていませんか?
+warning.dollar_change=コンソールコマンドライン関数 $() は $=getElementById(id) から $=querySelector(selector) に意味が変わりました。代わりに $("#%S") としてみてください。
+message.Reload_to_activate_window_console=ウィンドウのコンソールをアクティブ化させるには再読み込みしてください
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=ソースを得るにはページを再読み込みしてください
+message.The_resource_from_this_URL_is_not_text=この URL のリソースはテキストではありません
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=このパネルに戻る
+firebug.history.Stay_on_this_panel=このパネルにとどまる
+firebug.history.Go_forward_to_this_panel=このパネルに進む
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=戻る
+firebug.history.Go_forward=進む
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=ページのロード中、スクリプトパネルが機能していませんでした
+script.suggestion.inactive_during_page_load2=すべてのソースを見るには<a>再読み込み</a>してください
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=JavaScript が有効ではありません
+script.suggestion.javascript_not_enabled=Firefox > ツール > オプション > コンテンツ > JavaScript を有効にする を参照してください
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=JavaScript を有効にして更新
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=スクリプトはすべてフィルタされました
+script.suggestion.all_scripts_filtered=パネルツールバーのスクリプトフィルタ設定を確認してください
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=システムのソースはデバッグできません
+script.suggestion.no_system_source_debugging=Firebug は現在システムのソースをデバッグする目的では使えません。詳しくは <a>課題 5110</a> をご覧ください。
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=このページには Javascript がありません
+script.suggestion.no_javascript2=もし <script> タグに "type" 属性がある場合、それは "text/javascript" または "application/javascript" と一致しているべきです。また、スクリプトはパース可能(文法的に適正)でなければなりません。
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=デバッガはすでにアクティブです
+script.suggestion.debugger_active=現在デバッガは他のページのブレークポイントで一時停止しています。
+script.button.Go_to_that_page=そのページへ移動
+script.warning.debugger_not_activated=デバッガがアクティブになっていません
+script.suggestion.debugger_not_activated=デバッガがアクティブになっていません
+# LOCALIZATION NOTE (script.Script_panel_must_be_enabled): Adds a parenthetical note to a tooltip
+# about the Script panel having to be enabled.
+# %S = original message
+# example: "Profile JavaScript execution time (Script panel must be enabled)"
+script.Script_panel_must_be_enabled=%S (スクリプトパネルが有効化されていなければなりません)
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=閉じる
+firebug.View=表示
+firebug.Help=ヘルプ
+firebug.Run=実行
+firebug.Copy=コピー
+firebug.History=履歴
+firebug.Run_the_entered_command=入力されたコマンドを実行
+firebug.Clear_the_Command_Editor=コマンドエディタをクリア
+firebug.Copy_the_script_as_a_bookmarklet=スクリプトをブックマークレットとしてコピー
+firebug.Insert_a_previously_entered_command=過去に入力されたコマンドを挿入
+firebug.AlwaysOpenInWindow=常に新規ウィンドウで開く
+firebug.OpenWith=エディタで開く
+firebug.menu.tip.Open_With=内容を外部エディタで開きます
+firebug.Permissions=サイト...
+firebug.Configure_Editors=エディタの設定
+script.tip.Script_Type=スクリプトの種類によってフィルタします
+script.tip.Script_Filter_Static=ページとともに読み込まれたスクリプトを表示します
+script.tip.Script_Filter_Evals==ページとともに読み込まれたスクリプトと eval() で作られたスクリプトを表示します
+script.tip.Script_Filter_Events=ページとともに読み込まれたスクリプトと eval() で作られたスクリプトおよびイベントリスナーを表示します
+script.tip.Script_Filter_All=あらゆる種類のスクリプトを表示します
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=リターン
+script.tip.Rerun=現在の関数コールスタックから抜けます
+script.Continue=コンティニュー
+script.tip.Continue=JavaScript の実行を継続します
+script.Step_Over=ステップオーバー
+script.tip.Step_Over=次のコマンドを実行します
+script.Step_Into=ステップイン
+script.tip.Step_Into=次のコマンドを実行するか関数に入ります
+script.Step_Out=ステップアウト
+script.tip.Step_Out=関数内の残りを実行して呼び出し元に戻ります
+firebug.RunUntil=この行まで実行
+script.tip.Run_Until=指定された行まで JavaScript を実行します
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=調査
+firebug.InspectElement=要素を調査
+firebug.InspectElementWithFirebug=Firebug で要素を調査
+firebug.BreakOnErrors=エラー発生時に停止
+firebug.InspectTooltip=ページ内の調べたい要素をクリックしてください
+firebug.EditHTMLTooltip=この HTML を編集します
+firebug.Profile=プロファイル
+firebug.Clear=クリア
+firebug.ClearConsole=コンソールをクリア
+firebug.ClearTooltip=コンソールをクリア
+# editors.dtd
+editors.Configured_Firebug_Editors=Firebug に設定されたエディタ
+editors.Editor=エディタ
+editors.Executable=実行可能ファイル
+editors.Launch_Arguments=起動時の引数
+editors.Add=追加
+editors.Remove=削除
+editors.Change=変更
+editors.Move_Up=上へ
+editors.Close=閉じる
+editors.Browse=参照...
+changeEditor.Editor_Configuration=エディタ設定
+changeEditor.Name=名前:
+changeEditor.Executable=実行可能ファイル:
+changeEditor.CmdLine=引数:
+changeEditor.Supplied_arguments=Firebug が提供する引数:
+changeEditor.URL_of_file=ファイルの URL (%url がない場合、代わりに %file が追加されます)
+changeEditor.Path_to_local_file=ローカルファイル (または一時コピー) のパス
+changeEditor.Line_number=行番号 (存在すれば)
+changeEditor.Invalid_Application_Path=無効なアプリケーションパス
+changeEditor.Application_does_not_exist=指定されたアプリケーションは存在しません!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=編集
+firebug.css.sourceEdit=ソース編集
+firebug.css.sourceEdit.tooltip=テキストエリアでは、ブラウザで読み込まれたままのスタイルシートのソースを編集します
+firebug.css.liveEdit=ライブ編集
+firebug.css.liveEdit.tooltip=テキストエリアでは、ブラウザで展開されたCSSを編集します
+firebug.EditCSSTooltip=このスタイルシートを編集します
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=プライベートブラウジングモード中はサイトが記憶されません
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=ブレーク通知を表示
+firebug.breakpoint.tip.Show_Break_Notifications=...でブレーク系の機能、もしくは debuger; キーワードが JavaScript の実行を停止させたとき、通知ボックスを表示します
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=ブレーク通知を<a>パネルのタブメニュー</a>で有効化/無効化できます。
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2='無効化'をクリックすると'デバッガ'を無効化されたブレークポイントでオーバーライドします。
+firebug.bon.tooltip.disableDebuggerKeyword2=無効化されたブレークポイントを作成
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(この機能を使用するためにはスクリプトパネルを有効化する必要があります)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=子オブジェクトがありません
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=もっと見る
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=循環参照を検出
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=ストレージに %1$S 項目;ストレージに %1$S 項目
+# LOCALIZATION NOTE (firebug.reps.historyEntries): Semicolon list of plural forms.
+# Displayed when evaluating "history" - informs the user about the number of entries in history.
+# %1 = Number of history entries
+firebug.reps.historyEntries=%1$S 件の履歴項目;%1$S 件の履歴項目
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=オブジェクトプロパティ
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(補完候補なし)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=URL オブジェクトはおそらく revokeObjectURL メソッドを使って破棄されています。
+firebug.failedToPreviewImageURL=URL の読み込みに失敗しました
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=メモリプロファイラを開始しました
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=プロファイル中にオブジェクトが追加されました
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=メモリプロファイラの結果
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=セッション全体
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(出力なし)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(空文字列)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie アドオンが検出されました。このアドオンはデフォルトで Firebug 1.10 に統合されています。衝突を避けるために Firecookie をアンインストールする必要があります。\n\nアドオンのアンインストールを完了するには再起動しなければなりません。
+cookies.legacy.uninstall=アンインストール
+cookies.legacy.uninstall_and_restart=アンインストール && 再起動
+# LOCALIZATION NOTE (console.cmd.help_title, console.cmd.help_title_desc):
+console.cmd.help_title=コマンドライン API
+console.cmd.help_title_desc=F1 キーを押すとオンラインの Firebug ヘルプを開きます
+# LOCALIZATION NOTE (console.cmd.tip_title, console.cmd.tip_title_desc):
+console.cmd.tip_title=コマンドライン Tips
+console.cmd.tip_title_desc=コマンドラインの Tips & Tricks について
+# LOCALIZATION NOTE (console.cmd.tip.javascript, console.cmd.tip.closures):
+# Description for Command Line tips that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.tip.javascript=コマンドラインでは任意の JavaScript 式を実行できます。 例:
+console.cmd.tip.closures=クロージャの中の変数にアクセスするには、'.%' シンタックス(詳しくは<a>こちら</a>)を使います。 例:
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=指定した ID を持つ要素をひとつ返します。
+console.cmd.help.$$=指定した CSS セレクタに一致する要素の配列を返します。
+console.cmd.help.$x=指定した XPath 式に一致する要素の配列を返します。
+console.cmd.help.dir=オブジェクトのすべてのプロパティを一覧出力します。これは DOM パネルでの表示と同様です。
+console.cmd.help.dirxml=HTMLまたはXML要素のXMLソースツリーを出力します。これは HTML パネルでの表示と同様です。任意のノードをクリックして HTML パネルでそれを調査することができます。
+console.cmd.help.cd=デフォルトでは、コマンドラインの式はページ最上位ウィンドウからの相対指定です。 cd() で代わりにページ内のフレームウィンドウを指定することができます。
+console.cmd.help.clear=コンソールをクリアします。
+console.cmd.help.copy=指定したパラメータをクリップボードにコピーします。関数の戻り値やオブジェクトでもかまいません。
+console.cmd.help.inspect=オブジェクトを最適なパネル、またはオプションの第二引数で指定したパネルで調査します。指定可能なパネル名は、"html", "stylesheet", "script", "dom" です。
+console.cmd.help.keys=オブジェクトの全プロパティの名前を格納した配列を返します。
+console.cmd.help.values=オブジェクトの全プロパティの値を格納した配列を返します。
+console.cmd.help.debug=関数の最初の行にブレークポイントを追加します。
+console.cmd.help.undebug=関数の最初の行のブレークポイントを削除します。
+console.cmd.help.monitor=関数の全呼び出しを記録します。
+console.cmd.help.unmonitor=関数の全呼び出しの記録を解除します。
+console.cmd.help.monitorEvents=指定したオブジェクトに対する全イベントを記録します。オプションの第二引数で記録する個別イベントまたはイベントグループを指定できます。指定可能なイベントグループは、"composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", "clipboard" です。
+console.cmd.help.unmonitorEvents=指定したオブジェクトに対する全イベントの記録を解除します。オプションの第二引数で記録を解除する個別イベントまたはイベントグループを指定できます。
+console.cmd.help.profile=JavaScript プロファイラを開始します。オプションの第二引数でプロファイルレポートのヘッダに出力されるテキストを指定することができます。
+console.cmd.help.profileEnd=JavaScript プロファイラを終了し、そのレポートを出力します。
+console.cmd.help.table=指定データを表のようにレイアウトして記録することができます。第一引数は必須で、表に適したデータ (配列の配列もしくはオブジェクトのリスト) を指定します。オプションの第二引数で、記録される列またはプロパティを指定できます。
+console.cmd.help.$0=調査で最後に選択した要素を指しています。
+console.cmd.help.$1=調査で最後から2番目に選択した要素を指しています。
+console.cmd.help.$2=調査で最後から3番目に選択した要素を指しています。
+console.cmd.help.$3=調査で最後から4番目に選択した要素を指しています。
+console.cmd.help.$4=調査で最後から5番目に選択した要素を指しています。
+console.cmd.help.$n=調査で最後に選択した 5 つの要素のうちのひとつを返します。そのどれを返すかを要素のインデックス番号で必ず指定 (0 が先頭) します。
+console.cmd.help.$_=コマンドラインで最後に評価した式の結果を指しています。
+console.cmd.help.help=利用可能なすべてのコマンドのヘルプを表示します。
+console.cmd.help.include=リモートスクリプトをインクルードします。
+console.cmd.help.$p=JavaScript のオブジェクトまたは値を右クリックした後、"コマンドラインで使用" をクリックすると、このコマンドライン変数がその値にセットされます。
+console.cmd.help.getEventListeners=要素 (あるいは他のイベントターゲット) に直接登録されたイベントリスナーをすべて備えたオブジェクトを返します。
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=このコマンドのヘルプページはありません。
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=ドキュメント読み込みを基準とした、各ドキュメントフェーズの開始および経過時間:
+perftiming.events.label=ドキュメント読み込みを基準としたイベントのタイミング:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=パフォーマンスタイミング
+perftiming.details_title_desc=詳細なタイミング
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=サーバとの接続が完了した時間。
+perftiming.connectStart=サーバとの接続が開始するまでの時間。
+perftiming.domComplete=ドキュメントの準備が完了するまでの時間。
+perftiming.domContentLoadedEventEnd=DOMContentLoaded イベントが完了した時間。
+perftiming.domContentLoadedEventStart=DOMContentLoaded 開始までの時間。
+perftiming.domInteractive=準備完了からインタラクティブになるまでの時間。
+perftiming.domLoading=準備完了から読み込みまでの時間。
+perftiming.domainLookupEnd=ドメイン名ルックアップが終了した時間。
+perftiming.domainLookupStart=ドメイン名ルックアップまでの時間。
+perftiming.fetchStart=リソースのフェッチを開始した時間。
+perftiming.loadEventEnd=読み込みイベントが完了した時間。
+perftiming.loadEventStart=読み込みイベントが発生するまでの時間。
+perftiming.navigationStart=前のドキュメントがアンロードを開始した時間。
+perftiming.redirectCount=最後の非リダイレクト以降のリダイレクト数。
+perftiming.redirectEnd=最後のリダイレクトレスポンスが終了した時間。
+perftiming.redirectStart=リダイレクトを開始したフェッチの時間。
+perftiming.requestStart=サーバへのリクエストまでの時間。
+perftiming.responseEnd=レスポンスまたは接続が終了した時間。
+perftiming.responseStart=レスポンスの開始までの時間。
+perftiming.unloadEventEnd=前のドキュメントのアンロードが終了した時間。
+perftiming.unloadEventStart=アンロードイベントが発生するまでの時間。
diff --git a/locale/ja-JP/selectors.properties b/locale/ja-JP/selectors.properties
index b31aecd..f3aab7f 100644
--- a/locale/ja-JP/selectors.properties
+++ b/locale/ja-JP/selectors.properties
@@ -1,26 +1,26 @@
-# LOCALIZATION NOTE (Panel-selectors): Title for Selectors side panel displayed
-# in the CSS panel
-Panel-selectors=セレクタ
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selectors=CSS セレクタにマッチする要素を表示
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selectors side panel.
-css.selector.noSelection=カスタムセレクタを入力するか、CSSルールを右クリックして<b>マッチする要素を取得</b>を選択してください。
-# LOCALIZATION NOTE (css.selector.noSelectionResults, css.selector.invalidSelector):
-# Info messages for selector trials in Selectors side panel
-css.selector.noSelectionResults=マッチする要素はありません
-# LOCALIZATION NOTE (css.selector.readMore):
-# Helper text with a link to getfirebug.com/wiki for the Selectors panel.
-css.selector.readMore=このパネルの詳しい使い方については、<a>こちら</a>をご覧ください。
-# LOCALIZATION NOTE (css.selector.invalidSelector):
-css.selector.invalidSelector=不正なセレクタが入力されました
-# LOCALIZATION NOTE (css.selector.TryASelector):
-# Placeholder label for the Selectors side panel's input field for creating new selector trials
-css.selector.TryASelector=セレクタを入力...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=マッチする要素を取得
-aria.labels.Selectors=セレクタ サイドパネル
-a11y.labels.press_enter_to_add_new_selector=新しいセレクタを追加するには ENTER を押してください
+# LOCALIZATION NOTE (Panel-selectors): Title for Selectors side panel displayed
+# in the CSS panel
+Panel-selectors=セレクタ
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selectors=CSS セレクタにマッチする要素を表示
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selectors side panel.
+css.selector.noSelection=カスタムセレクタを入力するか、CSSルールを右クリックして<b>マッチする要素を取得</b>を選択してください。
+# LOCALIZATION NOTE (css.selector.noSelectionResults, css.selector.invalidSelector):
+# Info messages for selector trials in Selectors side panel
+css.selector.noSelectionResults=マッチする要素はありません
+# LOCALIZATION NOTE (css.selector.readMore):
+# Helper text with a link to getfirebug.com/wiki for the Selectors panel.
+css.selector.readMore=このパネルの詳しい使い方については、<a>こちら</a>をご覧ください。
+# LOCALIZATION NOTE (css.selector.invalidSelector):
+css.selector.invalidSelector=不正なセレクタが入力されました
+# LOCALIZATION NOTE (css.selector.TryASelector):
+# Placeholder label for the Selectors side panel's input field for creating new selector trials
+css.selector.TryASelector=セレクタを入力...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=マッチする要素を取得
+aria.labels.Selectors=セレクタ サイドパネル
+a11y.labels.press_enter_to_add_new_selector=新しいセレクタを追加するには ENTER を押してください
diff --git a/locale/ko-KR/cookies.properties b/locale/ko-KR/cookies.properties
index da9e5a7..86e8b50 100644
--- a/locale/ko-KR/cookies.properties
+++ b/locale/ko-KR/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=쿠키
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=세션
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=사이트에서 쿠키를 수락
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=쿠키거부시 삭제
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=자르기
-cookies.Copy=복사
-cookies.CopyAll=모두 복사
-cookies.Paste=붙여넣기
-cookies.Delete=삭제
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=편집
-cookies.Accept=수락
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=헤더 리셋
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=웹 사이트를 쿠키를 항상사용 또는 사용하지않도록 지정할 수있습니다 \n 관리를 누른 다음 차단하려는 사이트의 정확한 주소를 입력한뒤 \n차단클릭또는 세션허용또는 허가
-cookies.ExceptionsTitle=예외사항-쿠키
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=쿠키 모니터링에 대한 지원
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=%S의 쿠키 판넬해제
-cookies.Permissions=쿠키를 설정하거나 해제하는 패널
-cookies.PermissionsIntro=쿠키는 웹 사이트 패널을 활성화되거나 비활성화를 선택합니다.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=시스템 페이지
-cookies.LocalFiles=로컬 파일
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=목록에있는 모든 쿠키를 삭제하시겠습니까?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=목록에있는 모든 쿠키를 제거합니다.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=새쿠키%S 생성
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=값
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=%S쿠키의 관리권한
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=모든 쿠키가 삭제되었습니다.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=거부된 쿠키:
-cookies.console.nocookiesreceived=아무쿠키도 받지못했습니다
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=쿠키
-cookies.console.deleted=삭제됨
-cookies.console.added=추가됨
-cookies.console.changed=변경됨
-cookies.console.cleared=삭제됨
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=도메인
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=보안
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=허용됨
-cookies.status.downgraded=다운그래이드됨
-cookies.status.flagged=Flagged
-cookies.status.rejected=거부됨
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=값
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=기본 (동의 세션 쿠키)
-cookies.default.thirdPartySession=기본 (동의 세션 쿠키)
-cookies.default.thirdParty=기본 (동의 쿠키)
-cookies.default.allow=기본 (동의 쿠키)
-cookies.default.deny=기본 (거부 쿠키)
-cookies.default.warn=기본 (쿠키를 수락하기 전에 경고)
-cookies.host.session=%S 에서 세션 쿠키를 수락
-cookies.host.accept=%S쿠키의 허용
-cookies.host.reject=%S쿠키의 거부
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=쿠키 이름이 유효하지 않습니다.
-cookies.edit.invalidhost=쿠키 호스트가 유효하지 않습니다.
-cookies.edit.invalidpath=쿠키 경로가 유효하지 않습니다.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=이름
-cookies.header.value=값
-cookies.header.rawValue=Raw Value
-cookies.header.domain=도메인
-cookies.header.size=사이즈
-cookies.header.path=경로
-cookies.header.expires=만료
-cookies.header.security=보안
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=쿠키 이름
-cookies.header.value.tooltip=쿠키 값에 저장
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=도메인은 쿠키에 저장되어있다
-cookies.header.size.tooltip=저장되어있는 쿠키의 크기
-cookies.header.path.tooltip=Directory where the cookie is active
-cookies.header.expires.tooltip=쿠키 유효 기간
-cookies.header.security.tooltip=보안쿠키인지 아닌지 보여줍니다
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=받은 쿠키
-cookies.netinfo.Sent_Cookies=보낸 쿠키
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=경로 필터
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=쿠키
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=모든 쿠키 내보내기 ...
-cookies.export.Export_All_Cookies_Tooltip=모든 브라우저에서 Cookies.txt 파일에 쿠키 내보내기
-cookies.export.Export_For_Site=이사이트의 쿠키 내보내기
-cookies.export.Export_For_Site_Tooltip=%S의 내보낸쿠키를 cookies.txt파일로
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=활동중이지 않은 페이지입니다
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=쿠키삭제
-cookies.Create=쿠키생성
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=도구
-cookies.ToolsTooltip=도구
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=모든 쿠키보기
-cookies.ViewAllTooltip=쿠키매니저 열기
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=웹사이트 권한
-cookies.ViewExceptionsTooltip=허가또는 금지웹사이트 목록보기
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=필터
-cookies.FilterTooltip=쿠키리스트에 필터를 적용합니다
-cookies.filter.byPath=현재경로쿠키 필터
-cookies.filter.byPathTooltip=현재경로와 일치하는 쿠키만 봅니다
-cookies.filter.showRejectedCookies=거부된 쿠키보기
-cookies.filter.showRejectedCookiesTooltip=거부된쿠키목록
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=쿠키편집
-cookies.edit.name.label=이름:
-cookies.edit.domain.label=호스트:
-cookies.edit.path.label=경로:
-cookies.edit.expire.label=만료 :
-cookies.edit.value.label=값(Value):
-cookies.edit.secure.label=보안 쿠키
-cookies.edit.httponly.label=HTTP 전용
-cookies.edit.session.label=세션
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=쿠키
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=세션
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=사이트에서 쿠키를 수락
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=쿠키거부시 삭제
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=자르기
+cookies.Copy=복사
+cookies.CopyAll=모두 복사
+cookies.Paste=붙여넣기
+cookies.Delete=삭제
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=편집
+cookies.Accept=수락
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=헤더 리셋
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=웹 사이트를 쿠키를 항상사용 또는 사용하지않도록 지정할 수있습니다 \n 관리를 누른 다음 차단하려는 사이트의 정확한 주소를 입력한뒤 \n차단클릭또는 세션허용또는 허가
+cookies.ExceptionsTitle=예외사항-쿠키
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=쿠키 모니터링에 대한 지원
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=%S의 쿠키 판넬해제
+cookies.Permissions=쿠키를 설정하거나 해제하는 패널
+cookies.PermissionsIntro=쿠키는 웹 사이트 패널을 활성화되거나 비활성화를 선택합니다.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=시스템 페이지
+cookies.LocalFiles=로컬 파일
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=목록에있는 모든 쿠키를 삭제하시겠습니까?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=목록에있는 모든 쿠키를 제거합니다.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=새쿠키%S 생성
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=값
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=%S쿠키의 관리권한
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=모든 쿠키가 삭제되었습니다.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=거부된 쿠키:
+cookies.console.nocookiesreceived=아무쿠키도 받지못했습니다
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=쿠키
+cookies.console.deleted=삭제됨
+cookies.console.added=추가됨
+cookies.console.changed=변경됨
+cookies.console.cleared=삭제됨
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=도메인
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=보안
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=허용됨
+cookies.status.downgraded=다운그래이드됨
+cookies.status.flagged=Flagged
+cookies.status.rejected=거부됨
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=값
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=기본 (동의 세션 쿠키)
+cookies.default.thirdPartySession=기본 (동의 세션 쿠키)
+cookies.default.thirdParty=기본 (동의 쿠키)
+cookies.default.allow=기본 (동의 쿠키)
+cookies.default.deny=기본 (거부 쿠키)
+cookies.default.warn=기본 (쿠키를 수락하기 전에 경고)
+cookies.host.session=%S 에서 세션 쿠키를 수락
+cookies.host.accept=%S쿠키의 허용
+cookies.host.reject=%S쿠키의 거부
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=쿠키 이름이 유효하지 않습니다.
+cookies.edit.invalidhost=쿠키 호스트가 유효하지 않습니다.
+cookies.edit.invalidpath=쿠키 경로가 유효하지 않습니다.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=이름
+cookies.header.value=값
+cookies.header.rawValue=Raw Value
+cookies.header.domain=도메인
+cookies.header.size=사이즈
+cookies.header.path=경로
+cookies.header.expires=만료
+cookies.header.security=보안
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=쿠키 이름
+cookies.header.value.tooltip=쿠키 값에 저장
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=도메인은 쿠키에 저장되어있다
+cookies.header.size.tooltip=저장되어있는 쿠키의 크기
+cookies.header.path.tooltip=Directory where the cookie is active
+cookies.header.expires.tooltip=쿠키 유효 기간
+cookies.header.security.tooltip=보안쿠키인지 아닌지 보여줍니다
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=받은 쿠키
+cookies.netinfo.Sent_Cookies=보낸 쿠키
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=경로 필터
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=쿠키
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=모든 쿠키 내보내기 ...
+cookies.export.Export_All_Cookies_Tooltip=모든 브라우저에서 Cookies.txt 파일에 쿠키 내보내기
+cookies.export.Export_For_Site=이사이트의 쿠키 내보내기
+cookies.export.Export_For_Site_Tooltip=%S의 내보낸쿠키를 cookies.txt파일로
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=활동중이지 않은 페이지입니다
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=쿠키삭제
+cookies.Create=쿠키생성
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=도구
+cookies.ToolsTooltip=도구
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=모든 쿠키보기
+cookies.ViewAllTooltip=쿠키매니저 열기
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=웹사이트 권한
+cookies.ViewExceptionsTooltip=허가또는 금지웹사이트 목록보기
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=필터
+cookies.FilterTooltip=쿠키리스트에 필터를 적용합니다
+cookies.filter.byPath=현재경로쿠키 필터
+cookies.filter.byPathTooltip=현재경로와 일치하는 쿠키만 봅니다
+cookies.filter.showRejectedCookies=거부된 쿠키보기
+cookies.filter.showRejectedCookiesTooltip=거부된쿠키목록
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=쿠키편집
+cookies.edit.name.label=이름:
+cookies.edit.domain.label=호스트:
+cookies.edit.path.label=경로:
+cookies.edit.expire.label=만료 :
+cookies.edit.value.label=값(Value):
+cookies.edit.secure.label=보안 쿠키
+cookies.edit.httponly.label=HTTP 전용
+cookies.edit.session.label=세션
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/ko-KR/firebug-amo.properties b/locale/ko-KR/firebug-amo.properties
index f6ad061..1490f89 100644
--- a/locale/ko-KR/firebug-amo.properties
+++ b/locale/ko-KR/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
-firebug.amo.description=Firebug는 Firefox와 함께 당신이 브라우징할 때에, 풍부한 개발 도구를 제공하도록 통합되어 있습니다. 어떠한 페이지든지 CSS, HTML과 Javascript를 실시간으로 편집, 디버깅, 모니터링을 할 수 있습니다.\\n\\n문서, 화면갈무리, 토론 웹사이트: http://getfirebug.com
-firebug.amo.developer.comments=문의사항이 있으시면, FireBug FAQ를 방문해주세요.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
+firebug.amo.description=Firebug는 Firefox와 함께 당신이 브라우징할 때에, 풍부한 개발 도구를 제공하도록 통합되어 있습니다. 어떠한 페이지든지 CSS, HTML과 Javascript를 실시간으로 편집, 디버깅, 모니터링을 할 수 있습니다.\\n\\n문서, 화면갈무리, 토론 웹사이트: http://getfirebug.com
+firebug.amo.developer.comments=문의사항이 있으시면, FireBug FAQ를 방문해주세요.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/ko-KR/firebug-tracing.properties b/locale/ko-KR/firebug-tracing.properties
index 3d7b5a7..a1c777a 100644
--- a/locale/ko-KR/firebug-tracing.properties
+++ b/locale/ko-KR/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Open Firebug Tracing
-Always_Open_Firebug_Tracing=Always Open Firebug Tracing
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Tracing
-tracing.Show_Scope_Variables=Show Scope Variables
-tracing.Show_Time=Show Time
-tracing.tab.Stack=Stack
-tracing.tab.Exception=Exception
-tracing.tab.Properties=Properties
-tracing.tab.Scope=Scope
-tracing.tab.Response=Response
-tracing.tab.Source=Source
-tracing.tab.Interfaces=Interfaces
-tracing.tab.Object=Object
-tracing.tab.Event=Event
-tracing.cmd.Clear=Clear
-tracing.cmd.tip.Clear=Remove All Messages
-tracing.cmd.Find=Find
-tracing.cmd.tip.Find=Find Text
-tracing.cmd.Bookmark=Bookmark
-tracing.cmd.tip.Bookmark=Insert Bookmark
-tracing.cmd.Restart=Restart Firefox
-tracing.cmd.tip.Restart=Restart Firefox
-tracing.cmd.Exit=Exit Firefox
-tracing.cmd.tip.Exit=Exit Firefox
-tracing.cmd.Save=Save to File
-tracing.cmd.tip.Save=Save logs into a file
-tracing.cmd.Load=Load from File
-tracing.cmd.tip.Load=Load logs from a file
-tracing.cmd.Expand_All=Expand All
-tracing.cmd.Collapse_All=Collapse All
-tracing.cmd.Tools=Tools
-tracing.cmd.tip.Tools=Tools
-tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.Open_Profile_Directory=Open Profile Directory
-tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
-tracing.option.A11Y_Description=Accessibility issues
-tracing.option.ACTIVATION_Description=Firebug activation
-tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
-tracing.option.ANNOTATIONS_Description=Firebug website annotation
-tracing.option.BP_Description=Breakpoints
-tracing.option.CACHE_Description=Source cache
-tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
-tracing.option.COMPILATION_UNITS_Description=Script compilation units
-tracing.option.CONSOLE_Description=Console Panel
-tracing.option.CSS_Description=CSS parsing
-tracing.option.DISPATCH_Description=Event dispatching
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate creation
-tracing.option.EDITOR_Description=Inline Editor & Autocompleter
-tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Internal Firebug errors
-tracing.option.EVAL_Description=Script evaluation
-tracing.option.FBS_BP_Description=Firebug service breakpoints
-tracing.option.FBS_CREATION_Description=Firebug service script creation
-tracing.option.FBS_ERRORS_Description=Firebug service errors
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
-tracing.option.FBS_FUNCTION_Description=Firebug service function
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
-tracing.option.FBS_SRCUNITS_Description=Firebug service source units
-tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
-tracing.option.FUNCTION_NAMES_Description=JavaScript function names
-tracing.option.HISTORY_Description=Firebug Navigation History
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP request observer
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug initialization
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON viewer
-tracing.option.LINETABLE_Description=Script line table
-tracing.option.LOCALE_Description=Localization
-tracing.option.LOCATIONS_Description=Source locations
-tracing.option.NET_Description=Net Panel
-tracing.option.NET_EVENTS_Description=Network events
-tracing.option.OPTIONS_Description=Firebug preferences
-tracing.option.PANELS_Description=Panels
-tracing.option.SHORTCUTS_Description=Keyboard shortcuts
-tracing.option.SOURCEFILES_Description=JavaScript source files
-tracing.option.SPY_Description=XMLHttpRequests observer
-tracing.option.STACK_Description=JavaScript call stack
-tracing.option.STORAGE_Description=Settings storage
-tracing.option.SVGVIEWER_Description=SVG viewer
-tracing.option.FONTS_Description=Fonts information and font viewer
-tracing.option.TOOLTIP_Description=Start Button tooltip
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging user interface
-tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
-tracing.option.XMLVIEWER_Description=XML viewer
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Open Firebug Tracing
+Always_Open_Firebug_Tracing=Always Open Firebug Tracing
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Tracing
+tracing.Show_Scope_Variables=Show Scope Variables
+tracing.Show_Time=Show Time
+tracing.tab.Stack=Stack
+tracing.tab.Exception=Exception
+tracing.tab.Properties=Properties
+tracing.tab.Scope=Scope
+tracing.tab.Response=Response
+tracing.tab.Source=Source
+tracing.tab.Interfaces=Interfaces
+tracing.tab.Object=Object
+tracing.tab.Event=Event
+tracing.cmd.Clear=Clear
+tracing.cmd.tip.Clear=Remove All Messages
+tracing.cmd.Find=Find
+tracing.cmd.tip.Find=Find Text
+tracing.cmd.Bookmark=Bookmark
+tracing.cmd.tip.Bookmark=Insert Bookmark
+tracing.cmd.Restart=Restart Firefox
+tracing.cmd.tip.Restart=Restart Firefox
+tracing.cmd.Exit=Exit Firefox
+tracing.cmd.tip.Exit=Exit Firefox
+tracing.cmd.Save=Save to File
+tracing.cmd.tip.Save=Save logs into a file
+tracing.cmd.Load=Load from File
+tracing.cmd.tip.Load=Load logs from a file
+tracing.cmd.Expand_All=Expand All
+tracing.cmd.Collapse_All=Collapse All
+tracing.cmd.Tools=Tools
+tracing.cmd.tip.Tools=Tools
+tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.Open_Profile_Directory=Open Profile Directory
+tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
+tracing.option.A11Y_Description=Accessibility issues
+tracing.option.ACTIVATION_Description=Firebug activation
+tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
+tracing.option.ANNOTATIONS_Description=Firebug website annotation
+tracing.option.BP_Description=Breakpoints
+tracing.option.CACHE_Description=Source cache
+tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
+tracing.option.COMPILATION_UNITS_Description=Script compilation units
+tracing.option.CONSOLE_Description=Console Panel
+tracing.option.CSS_Description=CSS parsing
+tracing.option.DISPATCH_Description=Event dispatching
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate creation
+tracing.option.EDITOR_Description=Inline Editor & Autocompleter
+tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Internal Firebug errors
+tracing.option.EVAL_Description=Script evaluation
+tracing.option.FBS_BP_Description=Firebug service breakpoints
+tracing.option.FBS_CREATION_Description=Firebug service script creation
+tracing.option.FBS_ERRORS_Description=Firebug service errors
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
+tracing.option.FBS_FUNCTION_Description=Firebug service function
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
+tracing.option.FBS_SRCUNITS_Description=Firebug service source units
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
+tracing.option.FUNCTION_NAMES_Description=JavaScript function names
+tracing.option.HISTORY_Description=Firebug Navigation History
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request observer
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug initialization
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON viewer
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Localization
+tracing.option.LOCATIONS_Description=Source locations
+tracing.option.NET_Description=Net Panel
+tracing.option.NET_EVENTS_Description=Network events
+tracing.option.OPTIONS_Description=Firebug preferences
+tracing.option.PANELS_Description=Panels
+tracing.option.SHORTCUTS_Description=Keyboard shortcuts
+tracing.option.SOURCEFILES_Description=JavaScript source files
+tracing.option.SPY_Description=XMLHttpRequests observer
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Settings storage
+tracing.option.SVGVIEWER_Description=SVG viewer
+tracing.option.FONTS_Description=Fonts information and font viewer
+tracing.option.TOOLTIP_Description=Start Button tooltip
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging user interface
+tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
+tracing.option.XMLVIEWER_Description=XML viewer
diff --git a/locale/ko-KR/firebug.properties b/locale/ko-KR/firebug.properties
index 8c4acea..bc1cc95 100644
--- a/locale/ko-KR/firebug.properties
+++ b/locale/ko-KR/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=콘솔
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Net
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=스크립트
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=스타일
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Computed
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=레이아웃
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=감시
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=중단점
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Stack
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Scopes
-firebug.DetachFirebug=Firebug 새 창에서 열기
-firebug.AttachFirebug=Attach Firebug to Browser Window
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Deactivated
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=In Browser
-minimized=Minimized
-enablement.for_all_pages=for all pages
-enablement.on=On
-enablement.off=Off
-enablement.Panel_activation_status=Panel activation status:
-none=Closed
-Firebug_-_inactive_for_current_website=Firebug - inactive for current website
-Activate_Firebug_for_the_current_website=Activate Firebug for the current website
-Minimized=최소화
-Minimize_Firebug=Firebug 최소화
-On_for_all_web_pages=On for All Web Pages
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Clear Activation List
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI Location
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Firebug Options
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Show All Panels
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=JavaScript 오류 보임
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=JavaScript 경고 보임
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=CSS 오류 보임
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=오류용 스택 Trace 보임
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=XMLHttpRequest 보임
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Show Chrome Errors
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Show Chrome Messages
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Show External Errors
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Show Network Errors
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Strict Warnings (performance penalty)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Command History
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Show Completion List Popup
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Assertion 실패
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (%S째 줄)
-LineAndCol=%S (line %S, col %S)
-InstanceLine=%S #%S (%S째 줄)
-StackItem=%S (%S %S째 줄)
-SystemItem=<System>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(이름 없음)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=전체 텍스트 보임
-html.option.tip.Show_Full_Text=Don't crop element contents
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=공백 보임
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=주석 보임
-html.option.tip.Show_Comments=Show comment nodes
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=바뀐 부분 강조
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=바뀐 부분 확장
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=바뀐 부분으로 스크롤
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Show Quick Info Box
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Shade Box Model
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=뷰에서 스크롤
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=새 속성...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=요소 지움
-html.Delete_Element=Delete the element from the tree
-DeleteNode=노드 지움
-html.Delete_Node=Delete the node from the tree
-# Quick Info Box
-quickInfo=Quick Info
-computedStyle=Computed Style
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Break On Mutate
-html.Disable_Break_On_Mutate=Disable Break On Mutate
-html.label.Break_On_Text_Change=Break On Text Change
-html.label.HTML_Breakpoints=HTML Breakpoints
-html.label.Break_On_Attribute_Change=Break On Attribute Change
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Break On Child Addition or Removal
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Break On Element Removal
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Expand/Contract All
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Break On Property Change
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Disable Break On Property Change
-dom.label.DOM_Breakpoints=DOM Breakpoints
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=\"%S\" 속성 편집...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=\"%S\" 속성 지움
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=상속된 곳:
-SothinkWarning=Sothink SWF Catcher 확장 기능 때문에 Firebug가 올바르게 작동하지 않습니다.<br><br>도움말은 <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">Firebug FAQ의 이 항목</a>을 읽어 보세요.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
-EditStyle=요소 스타일 편집...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=새 규칙...
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=새 프로퍼티...
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=\"%S\" 편집...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=\"%S\" 사용 안 함
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=\"%S\" 지움
-css.tip.Delete_Prop=Delete the property "%S"
-# Console context menu labels.
-BreakOnThisError=이 오류에 중단
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=모든 오류에 중단
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Track Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Use Last Source Line for eval() names
-UseMD5ForEvalName=Use MD5 for eval() names
-# Breakpoints side panel
-Breakpoints=중단점
-ErrorBreakpoints=오류 중단점
-LoggedFunctions=기록된 함수
-EnableAllBreakpoints=모든 중단점 사용함
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=모든 중단점 사용 안 함
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=모든 중단점 없앰
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=이 중단점은 이 표현식이 참인 경우에만 중단합니다:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Remove Breakpoint
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Disable Breakpoint
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Enable Breakpoint
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Continue
-script.balloon.Disable=Disable
-ScriptsFilterStatic=Show Static Scripts
-ScriptsFilterEval=Show Static and eval Scripts
-ScriptsFilterEvent=Show Static and event Scripts
-ScriptsFilterAll=Show Static, eval, and event Scripts
-ScriptsFilterStaticShort=static
-ScriptsFilterEvalShort=evals
-ScriptsFilterEventShort=events
-ScriptsFilterAllShort=all
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Expand All
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Collapse All
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=사용자 정의 프로퍼티 보임
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=사용자 정의 함수 보임
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=DOM 프로퍼티 보임
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=DOM 함수 보임
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=DOM 상수 보임
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=이 object를 위해 보일 프로퍼티가 없습니다.
-NewWatch=새 감시 표현식...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=감시 추가
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=소스 복사
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
-CopyValue=값 복사
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=이름 복사
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=경로 복사
-dom.tip.Copy_Path=Copy the property path
-NewProperty=새 프로퍼티...
-EditProperty=프로퍼티 편집...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=변수 편집...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=감시 편집...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=프로퍼티 지움
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=감시 지움
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=중단점 설정
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=중단점 조건 편집...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=이 페이지에는 중단점 설정이 없습니다.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Only Show Applied Styles
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=User Agent CSS 보기
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Expand Shorthand Properties
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Sort Alphabetically
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Show Mozilla Specific Styles
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Type any key to filter list
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=position
-LayoutAdjacent=adjacent
-position=position
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=눈금자와 안내선 보임
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Net panel
-Loading=로딩...
-Headers=헤더
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=헤러 리셋
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=요청 URL과 사용된 HTTP method
-net.header.Status=상태
-net.header.Status_Tooltip=Status of the received response
-net.header.Domain=도메인
-net.header.Domain_Tooltip=Domain of the executed request
-net.header.Size=사이즈
-net.header.Size_Tooltip=Size of the received response (compressed size in case of compressed responses)
-net.header.Timeline=타임라인
-net.header.Timeline_Tooltip=Detailed timing info about request response round trip
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=XHR Breakpoints
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Break On XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=소스 보기
-net.headers.pretty_print=pretty print
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Media
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Post
-Put=Put
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=응답
-URLParameters=매개변수
-Cache=캐시
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Sort by key
-jsonviewer.do_not_sort=Do not sort
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=요청 헤더
-ResponseHeaders=응답 헤더
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
-LimitPrefs=Preferences
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=In order to change the limit modify: %S
-Refresh=새로 고침
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=새 탭에서 열기
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=새탭에서 응답 열기
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=프로파일
-ProfilerStarted=프로파일러가 실행 중입니다. 보고서를 보려면 다시 \'프로파일\'을 누르세요.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
-NothingToProfile=프로파일 한 활동 없음.
-PercentTooltip=이 함수에 소비된 시간 비율.
-CallsHeaderTooltip=함수가 호출된 횟수.
-OwnTimeHeaderTooltip=함수에 소비된 시간으로 중첩 호출은 뺍니다.
-TimeHeaderTooltip=함수에 소비된 시간으로 중첩 호출 포함합니다.
-AvgHeaderTooltip=평균 시간으로 함수 호출을 포함합니다.
-MinHeaderTooltip=최소 시간으로 함수 호출을 포함합니다.
-MaxHeaderTooltip=최대 시간으로 함수 호출을 포함합니다.
-ProfileButton.Enabled.Tooltip=Profile JavaScript execution time.
-ProfileButton.Disabled.Tooltip=Profile JavaScript execution time (Script panel must be enabled).
-Function=함수
-Percent=퍼센트
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=호출 횟수
-OwnTime=고유 시간
-Time=시간
-Avg=평균
-Min=최소
-Max=최대
-File=파일
-# Support for standard actions.
-Copy=복사
-Cut=자르기
-Remove=제거
-Delete=Delete
-Paste=Paste
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=innerHTML 복사
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=XPath 복사
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Copy CSS Path
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=주소 복사
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=주소(매개변수와 함께) 복사
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=요청 헤더 복사
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=응답 헤더 복사
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=요청 Body 복사
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=오류 복사
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=함수 복사
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=\"%S\" 함수 호출 기록
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=이벤트 기록
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Enabled
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Firebug console does not support \'%S\'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Firebug command line does not support \'%S\'
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Disable Break On All Errors
-console.Break_On_All_Errors=Break On All Errors
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Break On This Error
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=Firefox 설정에 의해 자바스크립트가 동작되지 않습니다. 콘솔패널을 사용하고 싶으시면 \'도구\'->\'설정\'->\'내용\'->\'자바스크립트사용\'을 체크해 주세요.
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Response Body
-net.sizeinfo.Post_Body=Post Body
-net.sizeinfo.Total_Sent=Total Sent
-net.sizeinfo.Total_Received=Total Received
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Net panel activated. Any requests while the net panel is inactive are not shown.
-net.responseSizeLimitMessage=Firebug response size limit has been reached. Click <a>here</a> to open the entire response in a new Firefox tab.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Firebug request size limit has been reached by Firebug.
-net.Break_On_XHR=Break On XHR
-net.label.Parameters=Parameters
-net.label.Parts=Parts
-net.label.Source=Source
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Disable Browser Cache
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Show Paint Events
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Break On Next
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=HTTP 헤더 보임
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S request;%1$S requests
-FromCache=캐시에서
-StopLoading=로딩 멈춤
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(매우 큰 데이터)
-ShowComputedStyle=계산된 스타일 보임
-StyleGroup-text=Text
-StyleGroup-background=Background
-StyleGroup-box=Box Model
-StyleGroup-layout=Layout
-StyleGroup-other=Other
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=색 복사
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=이미지 주소 복사
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=새 탭에서 이미지 열기
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Omit Toolbar Stack
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copy Rule Declaration
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Copy Style Declaration
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Error;%1$S Errors
-moduleManager.title=%S panel is disabled
-moduleManager.desc3=Use Firebug's toolbar button to enable/disable all panels at once. Use each panel's tab menu for individual control.
-moduleManager.Enable=Enable
-Suspend_Firebug=Suspend Firebug
-Resume_Firebug=Resume Firebug
-Reset_Panels_To_Disabled=Reset Panels To Disabled
-Open_Console=콘솔 열기
-Open_Console_Tooltip=Open Trace Console for Firebug.
-Scope_Chain=Scope Chain
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=With
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=호출
-# Window: the scope inside of a Javascript window object.
-Window_Scope=윈도우
-Logs=로그
-Options=옵션
-Copy_Stack=스택 복사
-Copy Exception=예외 복사
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=차단
-requestinfo.Resolving=DNS Lookup
-requestinfo.Connecting=Connecting
-requestinfo.Sending=Sending
-requestinfo.Waiting=Waiting
-requestinfo.Receiving=Receiving
-requestinfo.ContentLoad='DOMContentLoaded' (event)
-requestinfo.WindowLoad='load' (event)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Firebug Search
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=다음
-search.tip.Next=Search for the next match
-search.Previous=이전
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Case Sensitive
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Multiple Files
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Use Regular Expression
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS Selector
-search.net.Headers=헤더
-search.net.Parameters=파라메터
-search.net.Response_Bodies=Response Bodies
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persist
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Show all log entries
-firebug.console.Errors=Errors
-firebug.console.Filter_by_Errors=Filter by errors
-firebug.console.Warnings=Warnings
-firebug.console.Filter_by_Warnings=Filter by warnings
-firebug.console.Info=Info
-firebug.console.Filter_by_Info=Filter by info
-firebug.console.Debug_Info=Debug Info
-firebug.console.Filter_by_Debug_Info=Filter by debug info
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Firebug 열기
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Hide Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=모든 패널 활성화
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=모든 패널 비활성호
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=단축키 편집
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=설정
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Enable Accessibility Enhancements
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=모든 Firebug의 옵션을 초기화
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug Online
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Show Error Count
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=글자 크기
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=글자 크기 늘림
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=글자 크기 줄임
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=보통 글자 크기
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Firebug 웹사이트...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=문서...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=자판 단축글쇠...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=토론 그룹...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Issue Tracker...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=기부...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=About...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=검색
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Re-enter Command
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Toggle Inspecting
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Toggle Quick Info Box
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Toggle Profiling
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Focus Command Line
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Focus Firebug Search
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Focus Watch Editor
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Focus Location
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Next Object
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Previous Object
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Customize Firebug Keys
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Open Firebug in New Window
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Switch to left Firebug panel
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Switch to right Firebug panel
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Open Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Previous Firebug panel
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=콘솔 지움
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Open Trace Console
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Go Back
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Go Forward
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Increase Text Size
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Decrease Text Size
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normal Text Size
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Panel Selector
-customizeShortcuts=Firebug Shortcut Bindings
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=panel tools
-a11y.labels.firebug_panels=Firebug panels
-a11y.labels.firebug_side_panels=Firebug side panels
-a11y.labels.firebug_window=Firebug window
-a11y.labels.firebug_status=Firebug status
-a11y.labels.reset=reset
-a11y.labels.reset_shortcut=reset %S shortcut
-aria.labels.inactive_panel=inactive panel
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=log rows
-a11y.labels.call_stack=call stack
-a11y.labels.document_structure=document structure
-a11y.labels.title_panel= %S panel
-a11y.labels.title_side_panel= %S side panel
-a11y.labels.cached=cached
-aria.labels.stack_trace=stack trace
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=position
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=margin top
-a11y.layout.margin_right=margin right
-a11y.layout.margin_bottom=margin bottom
-a11y.layout.margin_left=margin left
-a11y.layout.border_top=border top
-a11y.layout.border_right=border right
-a11y.layout.border_bottom=border bottom
-a11y.layout.border_left=border left
-a11y.layout.padding_top=padding top
-a11y.layout.padding_right=padding right
-a11y.layout.padding_bottom=padding bottom
-a11y.layout.padding_left=padding left
-a11y.layout.top=top
-a11y.layout.right=right
-a11y.layout.bottom=bottom
-a11y.layout.left=left
-a11y.layout.width=width
-a11y.layout.height=height
-a11y.layout.size=size
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=Press Enter followed by Tab to edit individual values
-a11y.labels.style_rules=style rules
-aria.labels.inherited_style_rules=inherited style rules
-a11y.labels.computed_styles=computed styles
-a11y.labels.dom_properties=DOM properties
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=inline editor
-a11y.labels.value_for_attribute_in_element=value for %S attribute in %S element
-a11y.labels.attribute_for_element=attribute for %S element
-a11y.labels.text_contents_for_element=text contents for %S element
-a11y.labels.defined_in_file=defined in %S
-a11y.labels.declarations_for_selector=style declarations for "%S" selector
-a11y.labels.property_for_selector=CSS property for selector: %S
-a11y.labels.value_property_in_selector=%S property value for selector %S
-a11y.labels.css_selector=CSS selector
-a11y.labels.source_code_for_file=source code for file %S
-a11y.labels.press_enter_to_add_new_watch_expression=press enter to add a new watch expression
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=overridden
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=has conditional break point
-a11y.updates.has_disabled_break_point=has disabled break point
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script suspended on line %S in %S, file %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=Match found for "%S" in %S log rows
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=Match found for "%S" on line %S in %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=Match found for "%S" in %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=Match found for "%S" in attribute %S=%S of %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=Match found for "%S" in text content: %S of %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=Match found for "%S" in selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=Match found for "%S" in style declaration %S in selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=Match found for "%S" in DOM property %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=Match found for "%S" in %S, %S: %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=Match found for "%S" in net summary row: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=no matches found for "%S"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Firebug의 모든 설정을 기본값으로 변경하시겠습니까?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=콘솔이 활성화 되어 있어야 합니다.
-warning.Command_line_blocked?=Command line blocked?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Reload to activate window console
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=The resource from this URL is not text
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Go back to this panel
-firebug.history.Stay_on_this_panel=Stay on this panel
-firebug.history.Go_forward_to_this_panel=Go forward to this panel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Go back
-firebug.history.Go_forward=Go forward
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Script Panel was inactive during page load
-script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript is not enabled
-script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Enable JavaScript and Refresh
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=All scripts were filtered
-script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=No Javascript on this page
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Debugger is already active
-script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
-script.button.Go_to_that_page=Go to that page
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=닫기
-firebug.View=보기
-firebug.Help=도움말
-firebug.Run=실행
-firebug.Copy=복사
-firebug.History=History
-firebug.Run_the_entered_command=Run the entered command
-firebug.Clear_the_Command_Editor=Clear the Command Editor
-firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
-firebug.Insert_a_previously_entered_command=Insert a previously entered command
-firebug.AlwaysOpenInWindow=항상 새 창에서 열기
-firebug.OpenWith=편집기 열기
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Sites...
-firebug.Configure_Editors=Configure Editors
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=검사
-firebug.InspectElement=요소 검사
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=오류에 중단
-firebug.InspectTooltip=검사할 페이지 요소를 클릭하세요
-firebug.EditHTMLTooltip=이 HTML 편집
-firebug.Profile=프로파일
-firebug.Clear=지움
-firebug.ClearConsole=콘솔 지움
-firebug.ClearTooltip=콘솔을 지웁니다
-firebug.All=모두
-firebug.Images=이미지
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Configured Firebug Editors
-editors.Editor=Editor
-editors.Executable=Executable
-editors.Launch_Arguments=Launch Arguments
-editors.Add=Add
-editors.Remove=Remove
-editors.Change=Change
-editors.Move_Up=Move Up
-editors.Close=Close
-editors.Browse=Browse...
-changeEditor.Editor_Configuration=Editor Configuration
-changeEditor.Name=이름:
-changeEditor.Executable=실행파일:
-changeEditor.CmdLine=인수:
-changeEditor.Supplied_arguments=Arguments supplied by Firebug:
-changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
-changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
-changeEditor.Line_number=Line number (if available)
-changeEditor.Invalid_Application_Path=Invalid Application Path
-changeEditor.Application_does_not_exist=The specified application doesn't exist!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=편집
-firebug.css.sourceEdit=Source Edit
-firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
-firebug.css.liveEdit=Live Edit
-firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
-firebug.EditCSSTooltip=이 스타일 시트를 편집합니다
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Show Break Notifications
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
-firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=There are no child objects
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=more
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Object Properties
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(no completions)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
-firebug.failedToPreviewImageURL=Failed to load the given URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=콘솔
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Net
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=스크립트
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=스타일
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Computed
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=레이아웃
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=감시
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=중단점
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Stack
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Scopes
+firebug.DetachFirebug=Firebug 새 창에서 열기
+firebug.AttachFirebug=Attach Firebug to Browser Window
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Deactivated
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=In Browser
+minimized=Minimized
+enablement.for_all_pages=for all pages
+enablement.on=On
+enablement.off=Off
+enablement.Panel_activation_status=Panel activation status:
+none=Closed
+Firebug_-_inactive_for_current_website=Firebug - inactive for current website
+Activate_Firebug_for_the_current_website=Activate Firebug for the current website
+Minimized=최소화
+Minimize_Firebug=Firebug 최소화
+On_for_all_web_pages=On for All Web Pages
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Clear Activation List
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI Location
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Firebug Options
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Show All Panels
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=JavaScript 오류 보임
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=JavaScript 경고 보임
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=CSS 오류 보임
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=오류용 스택 Trace 보임
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=XMLHttpRequest 보임
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Show Chrome Errors
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Show Chrome Messages
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Show External Errors
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Show Network Errors
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Strict Warnings (performance penalty)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Command History
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Show Completion List Popup
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Assertion 실패
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (%S째 줄)
+LineAndCol=%S (line %S, col %S)
+InstanceLine=%S #%S (%S째 줄)
+StackItem=%S (%S %S째 줄)
+SystemItem=<System>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(이름 없음)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=전체 텍스트 보임
+html.option.tip.Show_Full_Text=Don't crop element contents
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=공백 보임
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=주석 보임
+html.option.tip.Show_Comments=Show comment nodes
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=바뀐 부분 강조
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=바뀐 부분 확장
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=바뀐 부분으로 스크롤
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Show Quick Info Box
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Shade Box Model
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=뷰에서 스크롤
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=새 속성...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=요소 지움
+html.Delete_Element=Delete the element from the tree
+DeleteNode=노드 지움
+html.Delete_Node=Delete the node from the tree
+# Quick Info Box
+quickInfo=Quick Info
+computedStyle=Computed Style
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Break On Mutate
+html.Disable_Break_On_Mutate=Disable Break On Mutate
+html.label.Break_On_Text_Change=Break On Text Change
+html.label.HTML_Breakpoints=HTML Breakpoints
+html.label.Break_On_Attribute_Change=Break On Attribute Change
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Break On Child Addition or Removal
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Break On Element Removal
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Expand/Contract All
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Break On Property Change
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Disable Break On Property Change
+dom.label.DOM_Breakpoints=DOM Breakpoints
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=\"%S\" 속성 편집...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=\"%S\" 속성 지움
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=상속된 곳:
+SothinkWarning=Sothink SWF Catcher 확장 기능 때문에 Firebug가 올바르게 작동하지 않습니다.<br><br>도움말은 <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">Firebug FAQ의 이 항목</a>을 읽어 보세요.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
+EditStyle=요소 스타일 편집...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=새 규칙...
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=새 프로퍼티...
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=\"%S\" 편집...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=\"%S\" 사용 안 함
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=\"%S\" 지움
+css.tip.Delete_Prop=Delete the property "%S"
+# Console context menu labels.
+BreakOnThisError=이 오류에 중단
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=모든 오류에 중단
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Track Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Use Last Source Line for eval() names
+UseMD5ForEvalName=Use MD5 for eval() names
+# Breakpoints side panel
+Breakpoints=중단점
+ErrorBreakpoints=오류 중단점
+LoggedFunctions=기록된 함수
+EnableAllBreakpoints=모든 중단점 사용함
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=모든 중단점 사용 안 함
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=모든 중단점 없앰
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=이 중단점은 이 표현식이 참인 경우에만 중단합니다:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Remove Breakpoint
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Disable Breakpoint
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Enable Breakpoint
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Continue
+script.balloon.Disable=Disable
+ScriptsFilterStatic=Show Static Scripts
+ScriptsFilterEval=Show Static and eval Scripts
+ScriptsFilterEvent=Show Static and event Scripts
+ScriptsFilterAll=Show Static, eval, and event Scripts
+ScriptsFilterStaticShort=static
+ScriptsFilterEvalShort=evals
+ScriptsFilterEventShort=events
+ScriptsFilterAllShort=all
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Expand All
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Collapse All
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=사용자 정의 프로퍼티 보임
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=사용자 정의 함수 보임
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=DOM 프로퍼티 보임
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=DOM 함수 보임
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=DOM 상수 보임
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=이 object를 위해 보일 프로퍼티가 없습니다.
+NewWatch=새 감시 표현식...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=감시 추가
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=소스 복사
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
+CopyValue=값 복사
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=이름 복사
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=경로 복사
+dom.tip.Copy_Path=Copy the property path
+NewProperty=새 프로퍼티...
+EditProperty=프로퍼티 편집...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=변수 편집...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=감시 편집...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=프로퍼티 지움
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=감시 지움
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=중단점 설정
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=중단점 조건 편집...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=이 페이지에는 중단점 설정이 없습니다.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Only Show Applied Styles
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=User Agent CSS 보기
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Expand Shorthand Properties
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Sort Alphabetically
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Show Mozilla Specific Styles
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Type any key to filter list
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=position
+LayoutAdjacent=adjacent
+position=position
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=눈금자와 안내선 보임
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Net panel
+Loading=로딩...
+Headers=헤더
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=헤러 리셋
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=요청 URL과 사용된 HTTP method
+net.header.Status=상태
+net.header.Status_Tooltip=Status of the received response
+net.header.Domain=도메인
+net.header.Domain_Tooltip=Domain of the executed request
+net.header.Size=사이즈
+net.header.Size_Tooltip=Size of the received response (compressed size in case of compressed responses)
+net.header.Timeline=타임라인
+net.header.Timeline_Tooltip=Detailed timing info about request response round trip
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=XHR Breakpoints
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Break On XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=소스 보기
+net.headers.pretty_print=pretty print
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Media
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Post
+Put=Put
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=응답
+URLParameters=매개변수
+Cache=캐시
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Sort by key
+jsonviewer.do_not_sort=Do not sort
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=요청 헤더
+ResponseHeaders=응답 헤더
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
+LimitPrefs=Preferences
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=In order to change the limit modify: %S
+Refresh=새로 고침
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=새 탭에서 열기
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=새탭에서 응답 열기
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=프로파일
+ProfilerStarted=프로파일러가 실행 중입니다. 보고서를 보려면 다시 \'프로파일\'을 누르세요.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
+NothingToProfile=프로파일 한 활동 없음.
+PercentTooltip=이 함수에 소비된 시간 비율.
+CallsHeaderTooltip=함수가 호출된 횟수.
+OwnTimeHeaderTooltip=함수에 소비된 시간으로 중첩 호출은 뺍니다.
+TimeHeaderTooltip=함수에 소비된 시간으로 중첩 호출 포함합니다.
+AvgHeaderTooltip=평균 시간으로 함수 호출을 포함합니다.
+MinHeaderTooltip=최소 시간으로 함수 호출을 포함합니다.
+MaxHeaderTooltip=최대 시간으로 함수 호출을 포함합니다.
+ProfileButton.Enabled.Tooltip=Profile JavaScript execution time.
+ProfileButton.Disabled.Tooltip=Profile JavaScript execution time (Script panel must be enabled).
+Function=함수
+Percent=퍼센트
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=호출 횟수
+OwnTime=고유 시간
+Time=시간
+Avg=평균
+Min=최소
+Max=최대
+File=파일
+# Support for standard actions.
+Copy=복사
+Cut=자르기
+Remove=제거
+Delete=Delete
+Paste=Paste
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=innerHTML 복사
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=XPath 복사
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Copy CSS Path
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=주소 복사
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=주소(매개변수와 함께) 복사
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=요청 헤더 복사
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=응답 헤더 복사
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=요청 Body 복사
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=오류 복사
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=함수 복사
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=\"%S\" 함수 호출 기록
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=이벤트 기록
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Enabled
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Firebug console does not support \'%S\'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Firebug command line does not support \'%S\'
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Disable Break On All Errors
+console.Break_On_All_Errors=Break On All Errors
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Break On This Error
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=Firefox 설정에 의해 자바스크립트가 동작되지 않습니다. 콘솔패널을 사용하고 싶으시면 \'도구\'->\'설정\'->\'내용\'->\'자바스크립트사용\'을 체크해 주세요.
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Response Body
+net.sizeinfo.Post_Body=Post Body
+net.sizeinfo.Total_Sent=Total Sent
+net.sizeinfo.Total_Received=Total Received
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Net panel activated. Any requests while the net panel is inactive are not shown.
+net.responseSizeLimitMessage=Firebug response size limit has been reached. Click <a>here</a> to open the entire response in a new Firefox tab.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Firebug request size limit has been reached by Firebug.
+net.Break_On_XHR=Break On XHR
+net.label.Parameters=Parameters
+net.label.Parts=Parts
+net.label.Source=Source
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Disable Browser Cache
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Show Paint Events
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Break On Next
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=HTTP 헤더 보임
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S request;%1$S requests
+FromCache=캐시에서
+StopLoading=로딩 멈춤
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(매우 큰 데이터)
+ShowComputedStyle=계산된 스타일 보임
+StyleGroup-text=Text
+StyleGroup-background=Background
+StyleGroup-box=Box Model
+StyleGroup-layout=Layout
+StyleGroup-other=Other
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=색 복사
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=이미지 주소 복사
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=새 탭에서 이미지 열기
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Omit Toolbar Stack
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copy Rule Declaration
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Copy Style Declaration
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Error;%1$S Errors
+moduleManager.title=%S panel is disabled
+moduleManager.desc3=Use Firebug's toolbar button to enable/disable all panels at once. Use each panel's tab menu for individual control.
+moduleManager.Enable=Enable
+Suspend_Firebug=Suspend Firebug
+Resume_Firebug=Resume Firebug
+Reset_Panels_To_Disabled=Reset Panels To Disabled
+Open_Console=콘솔 열기
+Open_Console_Tooltip=Open Trace Console for Firebug.
+Scope_Chain=Scope Chain
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=With
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=호출
+# Window: the scope inside of a Javascript window object.
+Window_Scope=윈도우
+Logs=로그
+Options=옵션
+Copy_Stack=스택 복사
+Copy Exception=예외 복사
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=차단
+requestinfo.Resolving=DNS Lookup
+requestinfo.Connecting=Connecting
+requestinfo.Sending=Sending
+requestinfo.Waiting=Waiting
+requestinfo.Receiving=Receiving
+requestinfo.ContentLoad='DOMContentLoaded' (event)
+requestinfo.WindowLoad='load' (event)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Firebug Search
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=다음
+search.tip.Next=Search for the next match
+search.Previous=이전
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Case Sensitive
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Multiple Files
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Use Regular Expression
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS Selector
+search.net.Headers=헤더
+search.net.Parameters=파라메터
+search.net.Response_Bodies=Response Bodies
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persist
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Show all log entries
+firebug.console.Errors=Errors
+firebug.console.Filter_by_Errors=Filter by errors
+firebug.console.Warnings=Warnings
+firebug.console.Filter_by_Warnings=Filter by warnings
+firebug.console.Info=Info
+firebug.console.Filter_by_Info=Filter by info
+firebug.console.Debug_Info=Debug Info
+firebug.console.Filter_by_Debug_Info=Filter by debug info
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Firebug 열기
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Hide Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=모든 패널 활성화
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=모든 패널 비활성호
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=단축키 편집
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=설정
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Enable Accessibility Enhancements
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=모든 Firebug의 옵션을 초기화
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug Online
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Show Error Count
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=글자 크기
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=글자 크기 늘림
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=글자 크기 줄임
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=보통 글자 크기
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Firebug 웹사이트...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=문서...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=자판 단축글쇠...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=토론 그룹...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Issue Tracker...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=기부...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=About...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=검색
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Re-enter Command
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Toggle Inspecting
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Toggle Quick Info Box
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Toggle Profiling
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Focus Command Line
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Focus Firebug Search
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Focus Watch Editor
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Focus Location
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Next Object
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Previous Object
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Customize Firebug Keys
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Open Firebug in New Window
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Switch to left Firebug panel
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Switch to right Firebug panel
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Open Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Previous Firebug panel
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=콘솔 지움
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Open Trace Console
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Go Back
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Go Forward
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Increase Text Size
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Decrease Text Size
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normal Text Size
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Panel Selector
+customizeShortcuts=Firebug Shortcut Bindings
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=panel tools
+a11y.labels.firebug_panels=Firebug panels
+a11y.labels.firebug_side_panels=Firebug side panels
+a11y.labels.firebug_window=Firebug window
+a11y.labels.firebug_status=Firebug status
+a11y.labels.reset=reset
+a11y.labels.reset_shortcut=reset %S shortcut
+aria.labels.inactive_panel=inactive panel
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=log rows
+a11y.labels.call_stack=call stack
+a11y.labels.document_structure=document structure
+a11y.labels.title_panel= %S panel
+a11y.labels.title_side_panel= %S side panel
+a11y.labels.cached=cached
+aria.labels.stack_trace=stack trace
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=position
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=margin top
+a11y.layout.margin_right=margin right
+a11y.layout.margin_bottom=margin bottom
+a11y.layout.margin_left=margin left
+a11y.layout.border_top=border top
+a11y.layout.border_right=border right
+a11y.layout.border_bottom=border bottom
+a11y.layout.border_left=border left
+a11y.layout.padding_top=padding top
+a11y.layout.padding_right=padding right
+a11y.layout.padding_bottom=padding bottom
+a11y.layout.padding_left=padding left
+a11y.layout.top=top
+a11y.layout.right=right
+a11y.layout.bottom=bottom
+a11y.layout.left=left
+a11y.layout.width=width
+a11y.layout.height=height
+a11y.layout.size=size
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=Press Enter followed by Tab to edit individual values
+a11y.labels.style_rules=style rules
+aria.labels.inherited_style_rules=inherited style rules
+a11y.labels.computed_styles=computed styles
+a11y.labels.dom_properties=DOM properties
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=inline editor
+a11y.labels.value_for_attribute_in_element=value for %S attribute in %S element
+a11y.labels.attribute_for_element=attribute for %S element
+a11y.labels.text_contents_for_element=text contents for %S element
+a11y.labels.defined_in_file=defined in %S
+a11y.labels.declarations_for_selector=style declarations for "%S" selector
+a11y.labels.property_for_selector=CSS property for selector: %S
+a11y.labels.value_property_in_selector=%S property value for selector %S
+a11y.labels.css_selector=CSS selector
+a11y.labels.source_code_for_file=source code for file %S
+a11y.labels.press_enter_to_add_new_watch_expression=press enter to add a new watch expression
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=overridden
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=has conditional break point
+a11y.updates.has_disabled_break_point=has disabled break point
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script suspended on line %S in %S, file %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=Match found for "%S" in %S log rows
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=Match found for "%S" on line %S in %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=Match found for "%S" in %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=Match found for "%S" in attribute %S=%S of %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=Match found for "%S" in text content: %S of %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=Match found for "%S" in selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=Match found for "%S" in style declaration %S in selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=Match found for "%S" in DOM property %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=Match found for "%S" in %S, %S: %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=Match found for "%S" in net summary row: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=no matches found for "%S"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Firebug의 모든 설정을 기본값으로 변경하시겠습니까?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=콘솔이 활성화 되어 있어야 합니다.
+warning.Command_line_blocked?=Command line blocked?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Reload to activate window console
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=The resource from this URL is not text
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Go back to this panel
+firebug.history.Stay_on_this_panel=Stay on this panel
+firebug.history.Go_forward_to_this_panel=Go forward to this panel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Go back
+firebug.history.Go_forward=Go forward
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Script Panel was inactive during page load
+script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript is not enabled
+script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Enable JavaScript and Refresh
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=All scripts were filtered
+script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=No Javascript on this page
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Debugger is already active
+script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
+script.button.Go_to_that_page=Go to that page
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=닫기
+firebug.View=보기
+firebug.Help=도움말
+firebug.Run=실행
+firebug.Copy=복사
+firebug.History=History
+firebug.Run_the_entered_command=Run the entered command
+firebug.Clear_the_Command_Editor=Clear the Command Editor
+firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
+firebug.Insert_a_previously_entered_command=Insert a previously entered command
+firebug.AlwaysOpenInWindow=항상 새 창에서 열기
+firebug.OpenWith=편집기 열기
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Sites...
+firebug.Configure_Editors=Configure Editors
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=검사
+firebug.InspectElement=요소 검사
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=오류에 중단
+firebug.InspectTooltip=검사할 페이지 요소를 클릭하세요
+firebug.EditHTMLTooltip=이 HTML 편집
+firebug.Profile=프로파일
+firebug.Clear=지움
+firebug.ClearConsole=콘솔 지움
+firebug.ClearTooltip=콘솔을 지웁니다
+firebug.All=모두
+firebug.Images=이미지
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Configured Firebug Editors
+editors.Editor=Editor
+editors.Executable=Executable
+editors.Launch_Arguments=Launch Arguments
+editors.Add=Add
+editors.Remove=Remove
+editors.Change=Change
+editors.Move_Up=Move Up
+editors.Close=Close
+editors.Browse=Browse...
+changeEditor.Editor_Configuration=Editor Configuration
+changeEditor.Name=이름:
+changeEditor.Executable=실행파일:
+changeEditor.CmdLine=인수:
+changeEditor.Supplied_arguments=Arguments supplied by Firebug:
+changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
+changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
+changeEditor.Line_number=Line number (if available)
+changeEditor.Invalid_Application_Path=Invalid Application Path
+changeEditor.Application_does_not_exist=The specified application doesn't exist!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=편집
+firebug.css.sourceEdit=Source Edit
+firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
+firebug.css.liveEdit=Live Edit
+firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
+firebug.EditCSSTooltip=이 스타일 시트를 편집합니다
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Show Break Notifications
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
+firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=There are no child objects
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=more
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Object Properties
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(no completions)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
+firebug.failedToPreviewImageURL=Failed to load the given URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/nl/cookies.properties b/locale/nl/cookies.properties
index afc620a..f240fea 100644
--- a/locale/nl/cookies.properties
+++ b/locale/nl/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (extensions.firecookie at janodvarko.cz.description):
-cookies.Panel=Cookies
-panel.tip.cookies=Maakt inspectie en manipulatie van cookies mogelijk
-# Description of this extension.
-cookies.Session=Sessie
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.AllowGlobally=Cookies van websites accepteren
-cookies.tip.AllowGlobally=Standaard alle cookies accepteren of blokkeren
-# LOCALIZATION NOTE (cookies.AllowGlobally): Label used for cookies permission.
-# LOCALIZATION NOTE (cookies.LogEvents): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, various cookies events are
-cookies.showCookieEvents=Cookiegebeurtenissen weergeven
-cookies.tip.showCookieEvents=Cookiegebeurtenissen (gewijzigd, verwijderd) loggen naar console
-# displayed in Firebug's Console panel.
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-cookies.clearWhenDeny=Cookies wissen bij afwijzen
-# xxxHonza: currently not displayed in the UI
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-cookies.Cut=Knippen
-cookies.Copy=Kopiëren
-cookies.CopyAll=Alles kopiëren
-cookies.Paste=Plakken
-cookies.Delete=Verwijderen
-# (right click on a cookie in the Cookies panel).
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-cookies.Clear_Value=Waarde wissen
-# Clears cookie value, but not removes the cookie itself.
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-cookies.Edit=Bewerken
-cookies.Accept=Accepteren
-# a dialog for editing clicked cookie.
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-cookies.header.Reset_Header=Header resetten
-# (visibility and size of all columns)
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-cookies.Intro=U kunt opgeven welke websites altijd of nooit cookies mogen gebruiken.\nType het exacte adres van de site die u wilt beheren in en klik daarna op Blokkeren,\nToestaan tijdens sessie of Toestaan
-cookies.ExceptionsTitle=Uitzonderingen - Cookies
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-cookies.modulemanager.description=Ondersteuning voor cookie volgen
-cookies.HostEnable=Cookiesvenster inschakelen voor %S
-cookies.HostDisable=Cookiesvenster uitschakelen voor %S
-cookies.Permissions=Cookiesvenster in- of uitschakelen
-cookies.PermissionsIntro=Kies websites waarvoor het Cookiesvenster wordt in- of uitgeschakeld.
-# examples: Enable Cookies panel for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-cookies.SystemPages=Systeempagina’s
-cookies.LocalFiles=Lokale bestanden
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when cookies
-cookies.confirm.removeall=Wilt u alle cookies in de lijst verwijderen?
-# are going to be deleted deleted (or permission is set do deny and cookies should be deleted).
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-cookies.confirm.removeallsession=Wilt u alle sessiecookies in de lijst opslaan?
-# all session cookies are going to be deleted
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-cookies.confirm.Remove_All_From_Host=Wilt u alle cookies van %S verwijderen?
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-cookies.msg.Do_not_show_this_message_again=Dit bericht niet meer weergeven
-# that says whether a confirmation dialog is displayed when removing cookies.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.Confirm_cookie_removal=Cookie verwijderen bevestigen
-cookies.tip.Confirm_cookie_removal=Indien aangevinkt wordt een bevestigingsvenster weergegeven voordat alle cookies in de lijst worden verwijderd.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-cookies.removeall.tooltip=Alle cookies in lijst verwijderen.
-# Cookies->Remove Session Cookies menu
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Sessiecookies verwijderen
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-cookies.removeallsession.tooltip=Alle sessiecookies in de lijst verwijderen
-# examples: Create new cookie for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.tooltip=Nieuwe cookie voor %S maken
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-cookies.createcookie.defaultvalue=Waarde
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-cookies.perm.manage.tooltip=Cookiepermissies voor %S beheren
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-cookies.console.cookiescleared=Alle cookies zijn verwijderd.
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-cookies.console.sessioncookiescleared=Alle sessiecookies zijn verwijderd.
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-cookies.console.cookiesrejected=Geweigerde cookies:
-cookies.console.nocookiesreceived=Geen cookies ontvangen
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-cookies.console.cookie=Cookie
-cookies.console.deleted=verwijderd
-cookies.console.added=toegevoegd
-cookies.console.changed=gewijzigd
-cookies.console.cleared=gewist
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-cookies.domain.label=Domein
-# Displayed in the Cookies panel for secure cookies.
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-cookies.secure.label=Veilig
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-cookies.status.accepted=Geaccepteerd
-cookies.status.downgraded=Gedevalueerd
-cookies.status.flagged=Gelabeld
-cookies.status.rejected=Geweigerd
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-cookies.info.valuetab.label=Waarde
-cookies.info.rawdatatab.Raw_Data=Ruwe gegevens
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-cookies.default.session=Standaard (cookies tijdens sessie accepteren)
-cookies.default.thirdPartySession=Standaard (cookies tijdens sessie accepteren)
-cookies.default.thirdParty=Standaard (cookies accepteren)
-cookies.default.allow=Standaard (cookies accepteren)
-cookies.default.deny=Standaard (cookies weigeren)
-cookies.default.warn=Standaard (waarschuwen voor accepteren cookie)
-cookies.host.session=Cookies van %S tijdens sessie accepteren
-cookies.host.accept=Cookies van %S accepteren
-cookies.host.reject=Cookies van %S weigeren
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.domain,
-cookies.edit.invalidname=Cookienaam is niet geldig.
-cookies.edit.invalidhost=Cookiehost is niet geldig.
-cookies.edit.invalidpath=Cookiepad is niet geldig.
-# cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-cookies.header.name=Naam
-cookies.header.value=Waarde
-cookies.header.rawValue=Ruwe waarde
-cookies.header.domain=Domein
-cookies.header.size=Grootte
-cookies.header.path=Pad
-cookies.header.expires=Vervalt
-cookies.header.security=Beveiliging
-cookies.header.httponly=Alleen HTTP
-# cookies.header.domain.tooltip, cookies.header.size.tooltip, cookies.header.path.tooltip,
-# cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.status.tooltip, cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-cookies.header.name.tooltip=Cookienaam
-cookies.header.value.tooltip=Opgeslagen cookiewaarde
-cookies.header.rawValue.tooltip=Ruwe waarde opgeslagen voor de cookie
-cookies.header.domain.tooltip=Domein dat de cookie heeft opgeslagen
-cookies.header.size.tooltip=Grootte van opgeslagen cookie
-cookies.header.path.tooltip=Map waar cookie actief is
-cookies.header.expires.tooltip=Vervaldatum van cookie
-cookies.header.security.tooltip=Geeft aan of cookie veilig is of niet
-cookies.header.httponly.tooltip=Geeft aan of cookie alleen voor HTTP is
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-cookies.netinfo.Received_Cookies=Ontvangen cookies
-cookies.netinfo.Sent_Cookies=Verzonden cookies
-# xxxHonza: Not implemented yet.
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.Path_Filter=Padfilter
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-cookies.menu.Cookies=Cookies
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-cookies.export.Export_All_Cookies=Alle cookies exporteren…
-cookies.export.Export_All_Cookies_Tooltip=Alle browsercookies naar bestand cookies.txt exporteren
-cookies.export.Export_For_Site=Cookies voor deze site exporteren…
-cookies.export.Export_For_Site_Tooltip=Cookies voor %S naar bestand cookies.txt exporteren
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-cookies.message.There_is_no_active_page=Er is geen actieve pagina.
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-cookies.Break_On_Cookie=Afbreken bij cookiewijziging
-cookies.Disable_Break_On_Cookie=Afbreken bij cookiewijziging uitschakelen
-# displayed in Breakpoints panel (in the Script panel)
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-cookies.Cookie_Breakpoints=Cookie-afbreekpunten
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-cookies.menu.Break_On_Cookie=Afbreken bij cookie ‘%S’
-cookies.menu.tooltip.Break_On_Cookie=Afbreken op ‘%S’ bij verwijderen of wijzigen.
-# used when user right clicks on a cookie with existing breakpoint.
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-cookies.menu.Edit_Breakpoint_Condition=Afbreekpuntvoorwaarde bewerken
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-# DTD strings converted (main Firecokie UI, see fireCookie.xul)
-cookies.Breakpoint_condition_evaluation_fails=Evaluatie afbreekpuntvoorwaarde negatief
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-cookies.RemoveAll=Cookies verwijderen
-cookies.Create=Cookie aanmaken
-# menu on Cookies toolbar.
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-cookies.Tools=Hulpmiddelen
-cookies.ToolsTooltip=Hulpmiddelen
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-cookies.ViewAll=Alle cookies weergeven…
-cookies.ViewAllTooltip=Cookiebeheerder openen
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-# LOCALIZATION NOTE (cookies.Help, cookies.HelpTooltip, cookies.About,
-cookies.ViewExceptions=Websitepermissies…
-cookies.ViewExceptionsTooltip=Lijst met toegestane of verboden websites bekijken
-# cookies.AboutTooltip) Labels and tooltips for additional menu items in Tools menu.
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-cookies.Filter=Filteren
-cookies.FilterTooltip=Aangegeven opties gebruiken om de cookielijst te filteren.
-cookies.filter.byPath=Cookies filteren op huidig pad
-cookies.filter.byPathTooltip=Alleen ookies weergeven die overeenkomen met het huidige pad
-cookies.filter.showRejectedCookies=Afgewezen cookies weergeven
-cookies.filter.showRejectedCookiesTooltip=Ook afgewezen cookies weergeven in de lijst.
-# presented on the Cookie toolbar.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-cookies.edit.title=Cookie bewerken
-cookies.edit.name.label=Naam:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Pad:
-cookies.edit.expire.label=Vervalt:
-cookies.edit.value.label=Waarde:
-cookies.edit.secure.label=Beveiligde cookie
-cookies.edit.httponly.label=Alleen HTTP
-cookies.edit.session.label=Sessie
-cookies.edit.urlEncode.label=URL-gecodeerde waarde
-# cookies.edit.session.label): Edit Cookie dialog UI
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filteren op cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Alle cookies verwijderen
-cookie.sizeinfo.Size=Grootte
-cookie.sizeinfo.Raw_Size=Ruwe grootte
+# LOCALIZATION NOTE (extensions.firecookie at janodvarko.cz.description):
+cookies.Panel=Cookies
+panel.tip.cookies=Maakt inspectie en manipulatie van cookies mogelijk
+# Description of this extension.
+cookies.Session=Sessie
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.AllowGlobally=Cookies van websites accepteren
+cookies.tip.AllowGlobally=Standaard alle cookies accepteren of blokkeren
+# LOCALIZATION NOTE (cookies.AllowGlobally): Label used for cookies permission.
+# LOCALIZATION NOTE (cookies.LogEvents): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, various cookies events are
+cookies.showCookieEvents=Cookiegebeurtenissen weergeven
+cookies.tip.showCookieEvents=Cookiegebeurtenissen (gewijzigd, verwijderd) loggen naar console
+# displayed in Firebug's Console panel.
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+cookies.clearWhenDeny=Cookies wissen bij afwijzen
+# xxxHonza: currently not displayed in the UI
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+cookies.Cut=Knippen
+cookies.Copy=Kopiëren
+cookies.CopyAll=Alles kopiëren
+cookies.Paste=Plakken
+cookies.Delete=Verwijderen
+# (right click on a cookie in the Cookies panel).
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+cookies.Clear_Value=Waarde wissen
+# Clears cookie value, but not removes the cookie itself.
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+cookies.Edit=Bewerken
+cookies.Accept=Accepteren
+# a dialog for editing clicked cookie.
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+cookies.header.Reset_Header=Header resetten
+# (visibility and size of all columns)
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+cookies.Intro=U kunt opgeven welke websites altijd of nooit cookies mogen gebruiken.\nType het exacte adres van de site die u wilt beheren in en klik daarna op Blokkeren,\nToestaan tijdens sessie of Toestaan
+cookies.ExceptionsTitle=Uitzonderingen - Cookies
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+cookies.modulemanager.description=Ondersteuning voor cookie volgen
+cookies.HostEnable=Cookiesvenster inschakelen voor %S
+cookies.HostDisable=Cookiesvenster uitschakelen voor %S
+cookies.Permissions=Cookiesvenster in- of uitschakelen
+cookies.PermissionsIntro=Kies websites waarvoor het Cookiesvenster wordt in- of uitgeschakeld.
+# examples: Enable Cookies panel for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+cookies.SystemPages=Systeempagina’s
+cookies.LocalFiles=Lokale bestanden
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when cookies
+cookies.confirm.removeall=Wilt u alle cookies in de lijst verwijderen?
+# are going to be deleted deleted (or permission is set do deny and cookies should be deleted).
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+cookies.confirm.removeallsession=Wilt u alle sessiecookies in de lijst opslaan?
+# all session cookies are going to be deleted
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+cookies.confirm.Remove_All_From_Host=Wilt u alle cookies van %S verwijderen?
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+cookies.msg.Do_not_show_this_message_again=Dit bericht niet meer weergeven
+# that says whether a confirmation dialog is displayed when removing cookies.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.Confirm_cookie_removal=Cookie verwijderen bevestigen
+cookies.tip.Confirm_cookie_removal=Indien aangevinkt wordt een bevestigingsvenster weergegeven voordat alle cookies in de lijst worden verwijderd.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+cookies.removeall.tooltip=Alle cookies in lijst verwijderen.
+# Cookies->Remove Session Cookies menu
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Sessiecookies verwijderen
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+cookies.removeallsession.tooltip=Alle sessiecookies in de lijst verwijderen
+# examples: Create new cookie for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.tooltip=Nieuwe cookie voor %S maken
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+cookies.createcookie.defaultvalue=Waarde
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+cookies.perm.manage.tooltip=Cookiepermissies voor %S beheren
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+cookies.console.cookiescleared=Alle cookies zijn verwijderd.
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+cookies.console.sessioncookiescleared=Alle sessiecookies zijn verwijderd.
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+cookies.console.cookiesrejected=Geweigerde cookies:
+cookies.console.nocookiesreceived=Geen cookies ontvangen
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+cookies.console.cookie=Cookie
+cookies.console.deleted=verwijderd
+cookies.console.added=toegevoegd
+cookies.console.changed=gewijzigd
+cookies.console.cleared=gewist
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+cookies.domain.label=Domein
+# Displayed in the Cookies panel for secure cookies.
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+cookies.secure.label=Veilig
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+cookies.status.accepted=Geaccepteerd
+cookies.status.downgraded=Gedevalueerd
+cookies.status.flagged=Gelabeld
+cookies.status.rejected=Geweigerd
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+cookies.info.valuetab.label=Waarde
+cookies.info.rawdatatab.Raw_Data=Ruwe gegevens
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+cookies.default.session=Standaard (cookies tijdens sessie accepteren)
+cookies.default.thirdPartySession=Standaard (cookies tijdens sessie accepteren)
+cookies.default.thirdParty=Standaard (cookies accepteren)
+cookies.default.allow=Standaard (cookies accepteren)
+cookies.default.deny=Standaard (cookies weigeren)
+cookies.default.warn=Standaard (waarschuwen voor accepteren cookie)
+cookies.host.session=Cookies van %S tijdens sessie accepteren
+cookies.host.accept=Cookies van %S accepteren
+cookies.host.reject=Cookies van %S weigeren
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.domain,
+cookies.edit.invalidname=Cookienaam is niet geldig.
+cookies.edit.invalidhost=Cookiehost is niet geldig.
+cookies.edit.invalidpath=Cookiepad is niet geldig.
+# cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+cookies.header.name=Naam
+cookies.header.value=Waarde
+cookies.header.rawValue=Ruwe waarde
+cookies.header.domain=Domein
+cookies.header.size=Grootte
+cookies.header.path=Pad
+cookies.header.expires=Vervalt
+cookies.header.security=Beveiliging
+cookies.header.httponly=Alleen HTTP
+# cookies.header.domain.tooltip, cookies.header.size.tooltip, cookies.header.path.tooltip,
+# cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.status.tooltip, cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+cookies.header.name.tooltip=Cookienaam
+cookies.header.value.tooltip=Opgeslagen cookiewaarde
+cookies.header.rawValue.tooltip=Ruwe waarde opgeslagen voor de cookie
+cookies.header.domain.tooltip=Domein dat de cookie heeft opgeslagen
+cookies.header.size.tooltip=Grootte van opgeslagen cookie
+cookies.header.path.tooltip=Map waar cookie actief is
+cookies.header.expires.tooltip=Vervaldatum van cookie
+cookies.header.security.tooltip=Geeft aan of cookie veilig is of niet
+cookies.header.httponly.tooltip=Geeft aan of cookie alleen voor HTTP is
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+cookies.netinfo.Received_Cookies=Ontvangen cookies
+cookies.netinfo.Sent_Cookies=Verzonden cookies
+# xxxHonza: Not implemented yet.
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.Path_Filter=Padfilter
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+cookies.menu.Cookies=Cookies
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+cookies.export.Export_All_Cookies=Alle cookies exporteren…
+cookies.export.Export_All_Cookies_Tooltip=Alle browsercookies naar bestand cookies.txt exporteren
+cookies.export.Export_For_Site=Cookies voor deze site exporteren…
+cookies.export.Export_For_Site_Tooltip=Cookies voor %S naar bestand cookies.txt exporteren
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+cookies.message.There_is_no_active_page=Er is geen actieve pagina.
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+cookies.Break_On_Cookie=Afbreken bij cookiewijziging
+cookies.Disable_Break_On_Cookie=Afbreken bij cookiewijziging uitschakelen
+# displayed in Breakpoints panel (in the Script panel)
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+cookies.Cookie_Breakpoints=Cookie-afbreekpunten
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+cookies.menu.Break_On_Cookie=Afbreken bij cookie ‘%S’
+cookies.menu.tooltip.Break_On_Cookie=Afbreken op ‘%S’ bij verwijderen of wijzigen.
+# used when user right clicks on a cookie with existing breakpoint.
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+cookies.menu.Edit_Breakpoint_Condition=Afbreekpuntvoorwaarde bewerken
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+# DTD strings converted (main Firecokie UI, see fireCookie.xul)
+cookies.Breakpoint_condition_evaluation_fails=Evaluatie afbreekpuntvoorwaarde negatief
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+cookies.RemoveAll=Cookies verwijderen
+cookies.Create=Cookie aanmaken
+# menu on Cookies toolbar.
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+cookies.Tools=Hulpmiddelen
+cookies.ToolsTooltip=Hulpmiddelen
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+cookies.ViewAll=Alle cookies weergeven…
+cookies.ViewAllTooltip=Cookiebeheerder openen
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+# LOCALIZATION NOTE (cookies.Help, cookies.HelpTooltip, cookies.About,
+cookies.ViewExceptions=Websitepermissies…
+cookies.ViewExceptionsTooltip=Lijst met toegestane of verboden websites bekijken
+# cookies.AboutTooltip) Labels and tooltips for additional menu items in Tools menu.
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+cookies.Filter=Filteren
+cookies.FilterTooltip=Aangegeven opties gebruiken om de cookielijst te filteren.
+cookies.filter.byPath=Cookies filteren op huidig pad
+cookies.filter.byPathTooltip=Alleen ookies weergeven die overeenkomen met het huidige pad
+cookies.filter.showRejectedCookies=Afgewezen cookies weergeven
+cookies.filter.showRejectedCookiesTooltip=Ook afgewezen cookies weergeven in de lijst.
+# presented on the Cookie toolbar.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+cookies.edit.title=Cookie bewerken
+cookies.edit.name.label=Naam:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Pad:
+cookies.edit.expire.label=Vervalt:
+cookies.edit.value.label=Waarde:
+cookies.edit.secure.label=Beveiligde cookie
+cookies.edit.httponly.label=Alleen HTTP
+cookies.edit.session.label=Sessie
+cookies.edit.urlEncode.label=URL-gecodeerde waarde
+# cookies.edit.session.label): Edit Cookie dialog UI
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filteren op cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Alle cookies verwijderen
+cookie.sizeinfo.Size=Grootte
+cookie.sizeinfo.Raw_Size=Ruwe grootte
diff --git a/locale/nl/firebug-amo.properties b/locale/nl/firebug-amo.properties
index 31f4a3e..80dc357 100644
--- a/locale/nl/firebug-amo.properties
+++ b/locale/nl/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug integreert in Firefox en biedt zo een overvloed aan ontwikkelingshulpmiddelen tijdens het surfen. U kunt CSS, HTML en JavaScript live bewerken, debuggen en volgen op elke webpagina…\n\nFirebug 1.6 vereist Firefox 3.6 of hoger.
-firebug.amo.description=Firebug integreert in Firefox en biedt zo een overvloed aan ontwikkelingshulpmiddelen die u kunt gebruiken terwijl u surft. U kunt CSS, HTML en JavaScript live bewerken, debuggen en volgen op elke webpagina…\n\nBezoek de Firebug-website voor documentatie, schermafbeeldingen en discussiefora: http://getfirebug.com
-firebug.amo.developer.comments=Lees bij problemen de veelgestelde vragen over Firebug.\n\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug integreert in Firefox en biedt zo een overvloed aan ontwikkelingshulpmiddelen tijdens het surfen. U kunt CSS, HTML en JavaScript live bewerken, debuggen en volgen op elke webpagina…\n\nFirebug 1.6 vereist Firefox 3.6 of hoger.
+firebug.amo.description=Firebug integreert in Firefox en biedt zo een overvloed aan ontwikkelingshulpmiddelen die u kunt gebruiken terwijl u surft. U kunt CSS, HTML en JavaScript live bewerken, debuggen en volgen op elke webpagina…\n\nBezoek de Firebug-website voor documentatie, schermafbeeldingen en discussiefora: http://getfirebug.com
+firebug.amo.developer.comments=Lees bij problemen de veelgestelde vragen over Firebug.\n\nhttp://getfirebug.com/faq.html
diff --git a/locale/nl/firebug-tracing.properties b/locale/nl/firebug-tracing.properties
index 83ba32c..00dca49 100644
--- a/locale/nl/firebug-tracing.properties
+++ b/locale/nl/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Firebug Volgen openen
-Always_Open_Firebug_Tracing=Firebug Volgen altijd openen
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Volgen
-tracing.Show_Scope_Variables=Scopevariabelen weergeven
-tracing.Show_Time=Tijd weergeven
-tracing.tab.Stack=Stapel
-tracing.tab.Exception=Uitzondering
-tracing.tab.Properties=Eigenschappen
-tracing.tab.Scope=Scope
-tracing.tab.Response=Antwoord
-tracing.tab.Source=Bron
-tracing.tab.Interfaces=Interfaces
-tracing.tab.Object=Object
-tracing.tab.Event=Gebeurtenis
-tracing.cmd.Clear=Wissen
-tracing.cmd.tip.Clear=Alle berichten verwijderen
-tracing.cmd.Find=Zoeken
-tracing.cmd.tip.Find=Tekst zoeken
-tracing.cmd.Bookmark=Bladwijzer
-tracing.cmd.tip.Bookmark=Bladwijzer invoegen
-tracing.cmd.Restart=Firefox herstarten
-tracing.cmd.tip.Restart=Firefox herstarten
-tracing.cmd.Exit=Firefox afsluiten
-tracing.cmd.tip.Exit=Firefox afsluiten
-tracing.cmd.Save=Opslaan als bestand
-tracing.cmd.tip.Save=Slaat loggings op als bestand
-tracing.cmd.Load=Van bestand laden
-tracing.cmd.tip.Load=Logbestanden laden
-tracing.cmd.Expand_All=Alles uitklappen
-tracing.cmd.Collapse_All=Alles inklappen
-tracing.cmd.Tools=Hulpmiddelen
-tracing.cmd.tip.Tools=Hulpmiddelen
-tracing.cmd.Clear_Browser_Cache=Browsercache opschonen
-tracing.cmd.tip.Clear_Browser_Cache=Browsercache opschonen
-tracing.cmd.Force_Garbage_Collector=Garbage Collector afdwingen
-tracing.cmd.tip.Force_Garbage_Collector=Garbage Collector afdwingen
-tracing.cmd.Open_Profile_Directory=Profielmap openen
-tracing.cmd.tip.Open_Profile_Directory=Profielmap openen
-tracing.option.A11Y_Description=Toegankelijkheidsproblemen
-tracing.option.ACTIVATION_Description=Firebug-activering
-tracing.option.ACTIVITYOBSERVER_Description=Firebug-activiteitsobservatie
-tracing.option.ANNOTATIONS_Description=Firebug-website-annotatie
-tracing.option.BP_Description=Afbreekpunten
-tracing.option.CACHE_Description=Broncache
-tracing.option.COMMANDLINE_Description=Opdrachtregel & opdrachtregelpop-up
-tracing.option.COMPILATION_UNITS_Description=Scriptcompilatie-eenheden
-tracing.option.CONSOLE_Description=Consolevenster
-tracing.option.CSS_Description=CSS ontleden
-tracing.option.DISPATCH_Description=Gebeurtenis verzenden
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate-creatie
-tracing.option.EDITOR_Description=Inline bewerken & auto-aanvullen
-tracing.option.ERRORLOG_Description=Foutenlogboek van JS, CSS, XML, enz.
-tracing.option.ERRORS_Description=Interne Firebug-fouten
-tracing.option.EVAL_Description=Scriptevaluatie
-tracing.option.FBS_BP_Description=Firebug-dienst afbreekpunten
-tracing.option.FBS_CREATION_Description=Firebug-dienst scriptcreatie
-tracing.option.FBS_ERRORS_Description=Firebug-dienst fouten
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug-dienst zoekfoutopsporing
-tracing.option.FBS_FUNCTION_Description=Firebug-dienst functie
-tracing.option.FBS_JSDCONTEXT_Description=Firebug-dienst JavaScript-foutopsporingscontext
-tracing.option.FBS_SRCUNITS_Description=Firebug-dienst broneenheden
-tracing.option.FBS_STEP_Description=Firebug-dienst JavaScript-foutopsporingsstappen
-tracing.option.FBS_TRACKFILES_Description=Firebug-dienst gevolgde bestanden
-tracing.option.FUNCTION_NAMES_Description=JavaScript-functienamen
-tracing.option.HISTORY_Description=Firebug-navigatiegeschiedenis
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP-verzoekobeservatie
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug-initialisatie
-tracing.option.INSPECT_Description=Inspecteur
-tracing.option.JSONVIEWER_Description=JSON-weergave
-tracing.option.LINETABLE_Description=Scriptregeltabel
-tracing.option.LOCALE_Description=Localisatie
-tracing.option.LOCATIONS_Description=Bronlocaties
-tracing.option.NET_Description=Netpaneel
-tracing.option.NET_EVENTS_Description=Netwerkgebeurtenissen
-tracing.option.OPTIONS_Description=Firebug-voorkeuren
-tracing.option.PANELS_Description=Panelen
-tracing.option.SHORTCUTS_Description=Sneltoetsen
-tracing.option.SOURCEFILES_Description=JavaScript-bronbestanden
-tracing.option.SPY_Description=XMLHttpRequests-observatie
-tracing.option.STACK_Description=JavaScript-aanroepstapel
-tracing.option.STORAGE_Description=Instellingen opslag
-tracing.option.SVGVIEWER_Description=SVG-weergave
-tracing.option.FONTS_Description=Lettertype-informatie en lettertypebeeld
-tracing.option.TOOLTIP_Description=Startknop-tooltip
-tracing.option.TOPLEVEL_Description=Topniveau-JavaScript
-tracing.option.UI_LOOP_Description=JavaScript-foutopsporingsgebruikersinterface
-tracing.option.WINDOWS_Description=Firebug-vensters & tabbladvolger
-tracing.option.XMLVIEWER_Description=XML-weergave
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Firebug Volgen openen
+Always_Open_Firebug_Tracing=Firebug Volgen altijd openen
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Volgen
+tracing.Show_Scope_Variables=Scopevariabelen weergeven
+tracing.Show_Time=Tijd weergeven
+tracing.tab.Stack=Stapel
+tracing.tab.Exception=Uitzondering
+tracing.tab.Properties=Eigenschappen
+tracing.tab.Scope=Scope
+tracing.tab.Response=Antwoord
+tracing.tab.Source=Bron
+tracing.tab.Interfaces=Interfaces
+tracing.tab.Object=Object
+tracing.tab.Event=Gebeurtenis
+tracing.cmd.Clear=Wissen
+tracing.cmd.tip.Clear=Alle berichten verwijderen
+tracing.cmd.Find=Zoeken
+tracing.cmd.tip.Find=Tekst zoeken
+tracing.cmd.Bookmark=Bladwijzer
+tracing.cmd.tip.Bookmark=Bladwijzer invoegen
+tracing.cmd.Restart=Firefox herstarten
+tracing.cmd.tip.Restart=Firefox herstarten
+tracing.cmd.Exit=Firefox afsluiten
+tracing.cmd.tip.Exit=Firefox afsluiten
+tracing.cmd.Save=Opslaan als bestand
+tracing.cmd.tip.Save=Slaat loggings op als bestand
+tracing.cmd.Load=Van bestand laden
+tracing.cmd.tip.Load=Logbestanden laden
+tracing.cmd.Expand_All=Alles uitklappen
+tracing.cmd.Collapse_All=Alles inklappen
+tracing.cmd.Tools=Hulpmiddelen
+tracing.cmd.tip.Tools=Hulpmiddelen
+tracing.cmd.Clear_Browser_Cache=Browsercache opschonen
+tracing.cmd.tip.Clear_Browser_Cache=Browsercache opschonen
+tracing.cmd.Force_Garbage_Collector=Garbage Collector afdwingen
+tracing.cmd.tip.Force_Garbage_Collector=Garbage Collector afdwingen
+tracing.cmd.Open_Profile_Directory=Profielmap openen
+tracing.cmd.tip.Open_Profile_Directory=Profielmap openen
+tracing.option.A11Y_Description=Toegankelijkheidsproblemen
+tracing.option.ACTIVATION_Description=Firebug-activering
+tracing.option.ACTIVITYOBSERVER_Description=Firebug-activiteitsobservatie
+tracing.option.ANNOTATIONS_Description=Firebug-website-annotatie
+tracing.option.BP_Description=Afbreekpunten
+tracing.option.CACHE_Description=Broncache
+tracing.option.COMMANDLINE_Description=Opdrachtregel & opdrachtregelpop-up
+tracing.option.COMPILATION_UNITS_Description=Scriptcompilatie-eenheden
+tracing.option.CONSOLE_Description=Consolevenster
+tracing.option.CSS_Description=CSS ontleden
+tracing.option.DISPATCH_Description=Gebeurtenis verzenden
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate-creatie
+tracing.option.EDITOR_Description=Inline bewerken & auto-aanvullen
+tracing.option.ERRORLOG_Description=Foutenlogboek van JS, CSS, XML, enz.
+tracing.option.ERRORS_Description=Interne Firebug-fouten
+tracing.option.EVAL_Description=Scriptevaluatie
+tracing.option.FBS_BP_Description=Firebug-dienst afbreekpunten
+tracing.option.FBS_CREATION_Description=Firebug-dienst scriptcreatie
+tracing.option.FBS_ERRORS_Description=Firebug-dienst fouten
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug-dienst zoekfoutopsporing
+tracing.option.FBS_FUNCTION_Description=Firebug-dienst functie
+tracing.option.FBS_JSDCONTEXT_Description=Firebug-dienst JavaScript-foutopsporingscontext
+tracing.option.FBS_SRCUNITS_Description=Firebug-dienst broneenheden
+tracing.option.FBS_STEP_Description=Firebug-dienst JavaScript-foutopsporingsstappen
+tracing.option.FBS_TRACKFILES_Description=Firebug-dienst gevolgde bestanden
+tracing.option.FUNCTION_NAMES_Description=JavaScript-functienamen
+tracing.option.HISTORY_Description=Firebug-navigatiegeschiedenis
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP-verzoekobeservatie
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug-initialisatie
+tracing.option.INSPECT_Description=Inspecteur
+tracing.option.JSONVIEWER_Description=JSON-weergave
+tracing.option.LINETABLE_Description=Scriptregeltabel
+tracing.option.LOCALE_Description=Localisatie
+tracing.option.LOCATIONS_Description=Bronlocaties
+tracing.option.NET_Description=Netpaneel
+tracing.option.NET_EVENTS_Description=Netwerkgebeurtenissen
+tracing.option.OPTIONS_Description=Firebug-voorkeuren
+tracing.option.PANELS_Description=Panelen
+tracing.option.SHORTCUTS_Description=Sneltoetsen
+tracing.option.SOURCEFILES_Description=JavaScript-bronbestanden
+tracing.option.SPY_Description=XMLHttpRequests-observatie
+tracing.option.STACK_Description=JavaScript-aanroepstapel
+tracing.option.STORAGE_Description=Instellingen opslag
+tracing.option.SVGVIEWER_Description=SVG-weergave
+tracing.option.FONTS_Description=Lettertype-informatie en lettertypebeeld
+tracing.option.TOOLTIP_Description=Startknop-tooltip
+tracing.option.TOPLEVEL_Description=Topniveau-JavaScript
+tracing.option.UI_LOOP_Description=JavaScript-foutopsporingsgebruikersinterface
+tracing.option.WINDOWS_Description=Firebug-vensters & tabbladvolger
+tracing.option.XMLVIEWER_Description=XML-weergave
diff --git a/locale/nl/firebug.properties b/locale/nl/firebug.properties
index e9ec67d..4cb4ab5 100644
--- a/locale/nl/firebug.properties
+++ b/locale/nl/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Console
-panel.tip.console=Maakt observatie van consoleberichten en uitvoeren van JavaScript-opdrachten mogelijk
-Panel-net=Net
-panel.tip.net=Maakt analyse van netwerkverkeer mogelijk
-Panel-html=HTML
-panel.tip.html=Maakt inspectie en manipulatie van DOM-nodes mogelijk
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Maakt inspectie en manipulatie van CSS-stylesheets mogelijk
-Panel-script=Script
-panel.tip.script=Maakt foutopsporing in JavaScript mogelijk
-Panel-dom=DOM
-panel.tip.dom=Maakt inspectie en manipulatie van DOM-eigenschappen mogelijk
-Panel-css=Stijl
-panel.tip.css=Makt inspectie en manipulatie van de CSS-regels van de geselecteerde DOM-node mogelijk
-Panel-computed=Berekend
-panel.tip.computed=Maakt inspectie van de berekende CSS-waarden van de geselecteerde DOM-node mogelijk
-Panel-layout=Opmaak
-panel.tip.layout=Maakt inspectie en manipulatie van de opmaakgegevens van de geselecteerde DOM-node mogelijk
-Panel-domSide=DOM
-panel.tip.domSide=Maakt inspectie en manipulatie van de DOM-eigenschappen van de geselecteerde DOM-node mogelijk
-Panel-watches=Bekijken
-panel.tip.watches=Maakt inspectie van de in het huidige stackframe beschikbare JavaScript-variabelen en definitie van volgexpressies mogelijk
-Panel-breakpoints=Afbreekpunten
-panel.tip.breakpoints=Maakt manipulatie van de set afbreekpunten mogelijk
-Panel-callstack=Stapel
-panel.tip.callstack=Maakt observatie van de huidige JavaScript-callstack mogelijk
-Panel-scopes=Blikveld
-firebug.DetachFirebug=Firebug in nieuw venster openen
-firebug.AttachFirebug=Firebug vastmaken aan browservenster
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=Totaal %1$S Firebug;Totaal %1$S Firebugs
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Gedeactiveerd
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=In browser
-minimized=Geminimaliseerd
-enablement.for_all_pages=voor alle pagina’s
-enablement.on=Aan
-enablement.off=Uit
-enablement.Panel_activation_status=Paneelactiveringsstatus:
-none=Gesloten
-Firebug_-_inactive_for_current_website=Firebug - inactief voor huidige website
-Activate_Firebug_for_the_current_website=Firebug voor huidige website activeren
-Minimized=Geminimaliseerd
-Minimize_Firebug=Firebug minimaliseren
-On_for_all_web_pages=Aan voor alle webpagina’s
-firebug.menu.tip.On_for_all_Web_Sites=Firebug standaard activeren voor alle websites
-firebug.menu.Clear_Activation_List=Activatielijst wissen
-firebug.menu.tip.Clear_Activation_List=Lijst met websites waarvoor Firebug is geactiveerd wissen
-firebug.menu.Detached=Ontkoppeld
-firebug.menu.tip.Detached=Firebug ontkoppelen naar een eigen venster
-firebug.menu.Top=Bovenzijde
-firebug.menu.tip.Top=Firebug uitlijnen naar de bovenzijde van het gebruikersvenster
-firebug.menu.Bottom=Onderzijde
-firebug.menu.tip.Bottom=Firebug uitlijnen naar de onderzijde van het gebruikersvenster
-firebug.menu.Left=Links
-firebug.menu.tip.Left=Firebug uitlijnen naar de linkerzijde van het gebruikersvenster
-firebug.menu.Right=Rechts
-firebug.menu.tip.Right=Firebug uitlijnen naar de rechterzijde van het gebruikersvenster
-firebug.uiLocation=Firebug-UI-locatie
-firebug.menu.tip.UI_Location=Positie van de Firebug-gebruikersinterface
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Firebug-opties
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Alle panelen weergeven
-console.option.Show_Command_Line=Opdrachtregel weergeven
-console.option.tip.Show_Command_Line=Focussen op opdrachtregel / Opdrachtregel-pop-up weergeven
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=JavaScriptfouten weergeven
-console.option.tip.Show_JavaScript_Errors=JavaScriptfouten naar console loggen
-ShowJavaScriptWarnings=JavaScriptwaarschuwingen weergeven
-console.option.tip.Show_JavaScript_Warnings=JavaScriptwaarschuwingen naar console loggen
-ShowCSSErrors=CSS-fouten weergeven
-console.option.tip.Show_CSS_Errors=CSS-fouten naar console loggen
-ShowXMLHTMLErrors=XML-/HTML-fouten weergeven
-console.option.tip.Show_XML_HTML_Errors=XML- en HTML-fouten naar de console loggen
-ShowStackTrace=Stack trace voor fouten weergeven
-console.option.tip.Show_Stack_Trace=Stack trace-informatie voor foutberichten weergeven
-ShowXMLHttpRequests=XMLHTTP-aanvragen weergeven
-console.option.tip.Show_XMLHttpRequests=XMLHTTP-aanvragen naar de console loggen
-ShowChromeErrors=Chromefouten weergeven
-console.option.tip.Show_System_Errors=Interne programma- en add-onfouten naar de console loggen
-ShowChromeMessages=Chromeberichten weergeven
-console.option.tip.Show_System_Messages=Interne programma- en add-onberichten naar de console loggen
-ShowExternalErrors=Externe fouten weergeven
-console.option.tip.Show_External_Errors=Foutberichten van externe bronnen naar de console loggen
-ShowNetworkErrors=Netwerkfouten weergeven
-console.option.tip.Show_Network_Errors=Netwerkfouten naar de console loggen
-JavascriptOptionsStrict=Strikte waarschuwingen (prestatiestraf)
-console.option.tip.Show_Strict_Warnings=Ook strikte waarschuwingen naar de console loggen
-Command_History=Opdrachtgeschiedenis
-console.option.Show_Command_Editor=Opdrachtbewerking weergeven
-console.option.tip.Show_Command_Editor=Naar opdrachtbewerking wisselen
-commandLineShowCompleterPopup=Afrondingslijst in pop-up weergeven
-console.option.tip.Show_Completion_List_Popup=Pop-up voor automatisch aanvullen opdracht wergeven
-Assertion=Assertiefout
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (regel %S)
-LineAndCol=%S (regel %S, kol %S)
-InstanceLine=%S #%S (regel %S)
-StackItem=%S (%S regel %S)
-SystemItem=<Systeem>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspecteren in paneel %S
-panel.tip.Inspect_In_Panel=Naar paneel %S wisselen om het object daar te onderzoeken
-NoName=(geen naam)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Volledige tekst weergeven
-html.option.tip.Show_Full_Text=Elementinhoud niet croppen
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Blanco ruimte weergeven
-html.option.tip.Show_Whitespace=Blanco ruimte in nodes weergeven
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Commentaar weergeven
-html.option.tip.Show_Comments=Commentaarnodes weergeven
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Entities als symbolen weergeven
-html.option.tip.Show_Entities_As_Symbols=Alle XML-entities als symbolen weergeven
-html.option.Show_Entities_As_Names=Entities als namen weergeven
-html.option.tip.Show_Entities_As_Names=Alle XML-entities als namen weergeven
-html.option.Show_Entities_As_Unicode=Entities als unicode weergeven
-html.option.tip.Show_Entities_As_Unicode=Alle XML-entities als unicode weergeven
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Wijzigingen accentueren
-html.option.tip.Highlight_Mutations=Wijzigingen in nodes accentueren
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Wijzigingen uitbreiden
-html.option.tip.Expand_Mutations=Boomnetwerk uitbreiden om gewijzigde nodes weer te geven
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Wijzigingen in zichtbaar deel rollen
-html.option.tip.Scroll_To_Mutations=Boomnetwerk rollen om gewijzigde nodes in beeld te brengen
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Snelle Infobox weergeven
-inspect.option.tip.Show_Quick_Info_Box=Informatie over de momenteel geïnspecteerde elementen weergeven in een paneel over de pagina
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Schaduwveldmodel
-inspect.option.tip.Shade_Box_Model=Schaduw aanbrengen in de verschillende delen van het veldmodel
-ScrollIntoView=In zichtbaar deel rollen
-html.tip.Scroll_Into_View=Pagina schuiven om het element zichtbaar te maken
-NewAttribute=Nieuw attribuut…
-html.tip.New_Attribute=Nieuw attribuut aan dit element toevoegen
-html.Edit_Node=%S bewerken…
-html.Node=Node
-html.tip.Edit_Node=De %S bewerken met de volledige tekstverwerker
-DeleteElement=Element verwijderen
-html.Delete_Element=Element uit het boomnetwerk verwijderen
-DeleteNode=Node verwijderen
-html.Delete_Node=Node uit het boomnetwerk verwijderen
-# Quick Info Box
-quickInfo=Snelle Info
-computedStyle=Berekende stijl
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Afbreken bij mutatie
-html.Disable_Break_On_Mutate=Afbreken bij mutatie uitschakelen
-html.label.Break_On_Text_Change=Afbreken bij tekstwijziging
-html.label.HTML_Breakpoints=HTML-afbreekpunten
-html.label.Break_On_Attribute_Change=Afbreken bij attribuutwijziging
-html.tip.Break_On_Attribute_Change=Uitvoeren JavaScript stoppen wanneer een attribuut van dit element wijzigt
-html.label.Break_On_Child_Addition_or_Removal=Afbreken bij toevoegen of verwijderen onderliggende pagina
-html.tip.Break_On_Child_Addition_or_Removal=Uitvoeren JavaScript stoppen wanneer een onderliggende node aan dit element wordt toegevoegd of ervan wordt verwijderd
-html.label.Break_On_Element_Removal=Afbreken bij verwijdering element
-html.tip.Break_On_Element_Removal=Uitvoeren JavaScript stoppen wanneer het element wordt verwijderd
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Alles uitklappen/inklapppen
-html.tip.Expand/Contract_All=Alle onderliggende niveau’s recursief uit-/inklappen
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Afbreken bij eigenschapwijziging
-dom.tip.Break_On_Property_Change=Uitvoering JavaScript stoppen wanneer deze eigenschap wijzigt
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Afbreken bij eigenschapwijziging uitschakelen
-dom.label.DOM_Breakpoints=DOM-afbreekpunten
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Attribuut “%S” bewerken…
-html.tip.Edit_Attribute=Waarde van attribuut “%S” van dit element bewerken
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Attribuut “%S” verwijderen
-html.tip.Delete_Attribute=Attribuut “%S” van dit element verwijderen
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Geërfd van
-SothinkWarning=De Sothink SWF Catcher extensie verhindert een goede werking van Firebug.<br><br>Lees a.u.b. <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">dit onderwerp in de Firebug FAQ</a> voor hulp.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=Pa’s wijze lynx bezag vroom het fikse aquaduct. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=Er zijn geen regels. U kunt <a>een regel aanmaken</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=Dit element heeft geen stijlregels. U kunt er <a>een regel voor aanmaken</a>.
-EditStyle=Elementstijl bewerken…
-style.tip.Edit_Style=Inlinestijl van dit element bewerken
-AddRule=Regel toevoegen…
-css.tip.AddRule=Een algemene regel voor dit element toevoegen
-NewRule=Nieuwe regel…
-css.tip.New_Rule=Nieuwe regel toevoegen
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=“%S” verwijderen
-css.tip.Delete_Rule=De regel “%S” en alle eigenschappen verwijderen
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Mediazoekopdracht bewerken…
-css.menu.tip.Edit_Media_Query=De mediazoekopdracht behorend bij deze regel bewerken
-NewProp=Nieuwe eigenschap…
-css.tip.New_Prop=Nieuwe eigenschap aan de huidige regel toevoegen
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=“%S” bewerken…
-css.tip.Edit_Prop=Waarde van eigenschap “%S” bewerken
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=“%S” uitschakelen
-css.tip.Disable_Prop=Eigenschap “%S” uitschakelen
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=“%S” verwijderen
-css.tip.Delete_Prop=Eigenschap “%S” verwijderen
-# Console context menu labels.
-BreakOnThisError=Afbreken bij deze fout
-console.menu.tip.Break_On_This_Error=Uitvoeren JavaScript stoppen zodra deze fout optreedt
-BreakOnAllErrors=Afbreken bij alle fouten
-console.menu.tip.Break_On_All_Errors=Uitvoeren JavaScript stoppen zodra een fout optreedt
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Throw/Catch volgen
-script.option.tip.Track_Throw_Catch=Uitzonderingen volgen zelfs als ze worden gevangen door try/catch-blokken
-UseLastLineForEvalName=Laatste bronregel voor eval() namen gebruiken
-UseMD5ForEvalName=MD5 voor eval() namen gebruiken
-# Breakpoints side panel
-Breakpoints=Afbreekpunten
-ErrorBreakpoints=Foutafbreekpunten
-LoggedFunctions=Gelogde functies
-EnableAllBreakpoints=Alle afbreekpunten inschakelen
-breakpoints.option.tip.Enable_All_Breakpoints=Alle afbreekpunten in lijst inschakelen
-DisableAllBreakpoints=Alle afbreekpunten uitschakelen
-breakpoints.option.tip.Disable_All_Breakpoints=Alle afbreekpunten in lijst uitschakelen
-ClearAllBreakpoints=Alle afbreekpunten verwijderen
-breakpoints.option.tip.Clear_All_Breakpoints=Alle afbreekpunten in lijst verwijderen
-ConditionInput=Dit afbreekpunt zal alleen stoppen als deze expressie waar is:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Afbreekpunt verwijderen
-breakpoints.tip.Remove_Breakpoint=Afbreekpunt verwijderen
-breakpoints.Disable_Breakpoint=Afbreekpunt uitschakelen
-breakpoints.tip.Disable_Breakpoint=Afbreekpunt uitschakelen
-breakpoints.Enable_Breakpoint=Afbreekpunt inschakelen
-breakpoints.tip.Enable_Breakpoint=Afbreekpunt inschakelen
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Doorgaan
-script.balloon.Disable=Uitschakelen
-ScriptsFilterStatic=Statische scripts weergeven
-ScriptsFilterEval=Statische en evaluatiescripts weergeven
-ScriptsFilterEvent=Statische en gebeurtenisscripts weergeven
-ScriptsFilterAll=Statische, evaluatie- en gebeurtenisscripts weergeven
-ScriptsFilterStaticShort=statisch
-ScriptsFilterEvalShort=evaluaties
-ScriptsFilterEventShort=gebeurtenissen
-ScriptsFilterAllShort=alles
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Alles uitklappen
-callstack.tip.Expand_All=Alle stack frame-functies uitbreiden
-callstack.Collapse_All=Alles inklappen
-callstack.tip.Collapse_All=Alle stack frame-functies inklappen
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames worden alleen weergegeven wanneer de scriptuitvoer is gestopt.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Door gebruiker gedefinieerde eigenschappen weergeven
-dom.option.tip.Show_User_Props=Door gebruiker gedefinieerde objecteigenschappen weergeven
-ShowUserFuncs=Door gebruiker gedefinieerde functies weergeven
-dom.option.tip.Show_User_Funcs=Door gebruiker gedefinieerde objectmethodes weergeven
-ShowDOMProps=DOM-eigenschappen weergeven
-dom.option.tip.Show_DOM_Props=In de DOM gespecificeerde eigenschappen weergeven
-ShowDOMFuncs=DOM-functies weergeven
-dom.option.tip.Show_DOM_Funcs=In de DOM gespecificeerde functies weergeven
-ShowDOMConstants=DOM-constanten weergeven
-dom.option.tip.Show_DOM_Constants=In de DOM gespecificeerde contanten weergeven
-ShowInlineEventHandlers=Inline-eventhandlers weergeven
-ShowInlineEventHandlersTooltip=Beschikbare inline-eventhandlers die geen associatie met een functie hebben weergeven.
-ShowOwnProperties=Alleen eigen eigenschappen weergeven
-ShowOwnPropertiesTooltip=Prototypeketen niet weergeven
-ShowEnumerableProperties=Alleen opsombare eigenschappen weergeven
-ShowEnumerablePropertiesTooltip=Niet-opsombare eigenschappen niet weergeven
-NoMembersWarning=Er zijn voor dit object geen eigenschappen weer te geven
-NewWatch=Nieuwe watchexpressie…
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Watch toevoegen
-watch.tip.Add_Watch=De selectie/het object aan het zijpaneel Volgen toevoegen voor observatie
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Bron kopiëren
-script.tip.Copy_Source_Code=De geselecteerde broncode naar het klembord kopiëren
-Use_hash_plus_number_to_go_to_line=Gebruik #<getal> om naar de regel te gaan
-CopyValue=Waarde kopiëren
-dom.tip.Copy_Value=De eigenschapswaarde naar het klembord kopiëren
-Copy_Name=Naam kopiëren
-dom.tip.Copy_Name=De eigenschapsnaam naar het klembord kopiëren
-Copy_Path=Pad kopiëren
-dom.tip.Copy_Path=Het eigenschapspad kopiëren
-NewProperty=Nieuwe eigenschap…
-EditProperty=Eigenschap bewerken…
-dom.tip.Edit_Property=De eigenschapswaarde bewerken
-EditVariable=Variabele bewerken…
-stack.tip.Edit_Variable=De variabele-waarde bewerken
-EditWatch=Watch bewerken…
-watch.tip.Edit_Watch=De volgexpressie-waarde bewerken
-DeleteProperty=Eigenschap verwijderen
-dom.tip.Delete_Property=De eigenschap verwijderen
-DeleteWatch=Watch verwijderen
-DeleteAllWatches=Alle volgopdrachten wissen
-watch.tip.Delete_Watch=De volgexpressie verwijderen
-watch.tip.Delete_All_Watches=Alle volguitdrukkingen wissen
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Afbreekpunt instellen
-script.tip.Set_Breakpoint=Wisselt de instelling van een afbreekpunt op de huidige regel
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Afbreekpuntvoorwaarde bewerken…
-breakpoints.tip.Edit_Breakpoint_Condition=Voorwaarde waaronder dit afbreekpunt de JavaScript-uitvoering stopt bewerken
-NoBreakpointsWarning=Er zijn in deze pagina geen afbreekpunten ingesteld.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Alleen toegepaste stijlen weergeven
-style.option.tip.Only_Show_Applied_Styles=Alleen stijlen die worden toegepast op het element weergeven
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=User Agent CSS weergeven
-style.option.tip.Show_User_Agent_CSS=Ook de door de user agent gedefinieerde CSS weergeven
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Kleuren als Hex
-computed.option.tip.Colors_As_Hex=Kleuren in hexadecimale opmaak weergeven
-computed.option.label.Colors_As_RGB=Kleuren als RGB
-computed.option.tip.Colors_As_RGB=Kleuren in RGB-opmaak weergeven
-computed.option.label.Colors_As_HSL=Kleuren als HSL
-computed.option.tip.Colors_As_HSL=Kleuren in HSL-opmaak weergeven
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=:active pseudo-class-stijlen weergeven
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=:hover pseudo-class-stijlen weergeven
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=:focus pseudo-class-stijlen weergeven
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Declaratie inspecteren
-css.tip.Inspect_Declaration=De declaratie van dit lettertype inspecteren
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Beknopte eigenschappen uitbreiden
-css.option.tip.Expand_Shorthand_Properties=CSS-snelschrifteigenschappen naar hun componenten uitbreiden
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Alfabetisch schikken
-computed.option.tip.Sort_Alphabetically=De stijlen op hun naam sorteren/de stijlen in categorieën groeperen
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Mozilla-specifieke stijlen weergeven
-computed.option.tip.Show_Mozilla_Specific_Styles=Ook stijlen voorafgegaan door -moz weergeven
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=Dit element heeft door de gebruiker gedefinieerde regels.
-script.Type_any_key_to_filter_list=Druk op een toets om de lijst te filteren
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=opvulling
-LayoutBorder=rand
-LayoutMargin=marge
-LayoutPosition=positie
-LayoutAdjacent=aanliggend
-position=positie
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Linialen en richters tonen
-layout.option.tip.Show_Rulers=Liniaal en geleiders op de pagina weergeven bij aanwijzen van delen van het opmaakveld
-# Net panel
-Loading=Laden…
-Headers=Headers
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Verzoeklijst leegmaken
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Header resetten
-net.header.tip.Reset_Header=Headerweergave resetten
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=Aangevraagde URL en gebruikte HTTP-methode.
-net.header.Status=Status
-net.header.Status_Tooltip=Status van het ontvangen antwoord.
-net.header.Domain=Domein
-net.header.Domain_Tooltip=Domein van de uitgevoerde aanvraag.
-net.header.Size=Omvang
-net.header.Size_Tooltip=Omvang van het ontvangen antwoord.
-net.header.Timeline=Tijdslijn
-net.header.Timeline_Tooltip=Gedetailleerde tijdsinformatie over de lijn aanvraag-antwoord.
-net.header.Local_IP=Lokaal IP-adres
-net.header.Local_IP_Tooltip=Lokaal IP-adres en poortnummer waaraan het verzoek is verbonden.
-net.header.Remote_IP=IP-adres op afstand
-net.header.Remote_IP_Tooltip=IP-adres op afstand en poortnummer waaraan het verzoek is verbonden.
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=Het URL-protocol dat wordt gebruikt om de hulpbron op het web te vinden.
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=XHR-afbreekpunten
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Afbreken op XHR
-net.tip.Break_On_XHR=JavaScript-uitvoering stoppen zodra een XMLHttpRequest wordt gedaan
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=bron bekijken
-net.headers.pretty_print=mooie afdruk
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Media
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Post
-Put=Put
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Antwoord
-URLParameters=Parameters
-Cache=Cache
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Algemene info
-fontviewer.Meta_Data=Metagegevens
-fontviewer.view_source=bron bekijken
-fontviewer.Preview=Voorbeeld
-fontviewer.view_characters=tekens bekijken
-fontviewer.pretty_print=mooie afdruk
-fontviewer.view_sample=voorbeeld bekijken
-fontviewer.uniqueid=Unieke ID
-fontviewer.vendor=Leverancier
-fontviewer.license=Licentie
-fontviewer.description=Beschrijving
-fontviewer.copyright=Auteursrecht
-fontviewer.credits=Credits
-fontviewer.trademark=Handelsmerk
-fontviewer.licensee=Licentiehouder
-fontviewer.extension=Extensie
-fontviewer.pangram=Pa’s wijze lynx bezag vroom het fikse aquaduct
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Op sleutel sorteren
-jsonviewer.do_not_sort=Niet sorteren
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=“%S” als JSON kopiëren
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Verzoekheaders
-ResponseHeaders=Antwoordheaders
-CachedResponseHeaders=Antwoordheaders uit cache
-PostRequestHeaders=Headers uit uploadstream opvragen
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=Het verzoek is rechtstreeks vanuit de cache beantwoord, dus we hebben geen antwoord van de server. Zie hieronder het gechachete antwoord.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=De grens van het logboek van Firebug is bereikt. %1$S gebeurtenis niet weergegeven.;De grens van het logboek van Firebug is bereikt. %1$S gebeurtenissen niet weergegeven.
-LimitPrefs=Voorkeuren
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Pas %S aan om de limiet te wijzigen
-Refresh=Vernieuwen
-panel.tip.Refresh=Paneelweergave verversen
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=In nieuw tabblad openen
-firebug.tip.Open_In_Tab=URL in een nieuw browsertabblad openen
-Open_Response_In_New_Tab=Antwoord in nieuw tabblad openen
-net.tip.Open_Response_In_New_Tab=Antwoord in een nieuw browsertabblad openen
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Profileren
-ProfilerStarted=Het profileerhulpmiddel draait momenteel. Klik opnieuw op ‘Profileren’ om de rapportage te zien.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S aanroep);(%1$Sms, %2$S aanroepen)
-NothingToProfile=Geen activiteit om te profileren.
-PercentTooltip=Percentage tijd gespendeerd aan deze functie.
-CallsHeaderTooltip=Aantal keer dat deze functie is aangeroepen.
-OwnTimeHeaderTooltip=Tijd van activiteit van functie, exclusief geneste aanroepen.
-TimeHeaderTooltip=Tijd van activiteit van functie, inclusief geneste aanroepen.
-AvgHeaderTooltip=Gemiddelde tijd, inclusief functieaanroepen.
-MinHeaderTooltip=Minimale tijd, inclusief functieaanroepen.
-MaxHeaderTooltip=Maximale tijd, inclusief functieaanroepen.
-ProfileButton.Enabled.Tooltip=JavaScript-uitvoertijd voor profileren.
-ProfileButton.Disabled.Tooltip=JavaScript-uitvoertijd voor profileren (scriptvenster dient te zijn ingeschakeld).
-Function=Functie
-Percent=Procent
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Aanroepen
-OwnTime=Eigen tijd
-Time=Tijd
-Avg=Gem.
-Min=Min.
-Max=Max.
-File=Bestand
-# Support for standard actions.
-Copy=Kopiëren
-Cut=Knippen
-Remove=Verwijderen
-Delete=Verwijderen
-Paste=Plakken
-SelectAll=Alles selecteren
-html.Copy_Node=%S kopiëren
-html.tip.Copy_Node=De %S-node en alle inhoud naar het klembord kopiëren
-CopyInnerHTML=innerHTML kopiëren
-html.tip.Copy_innerHTML=Inhoud van het element naar het klembord kopiëren
-CopyXPath=XPath kopiëren
-html.tip.Copy_XPath=XPath van het element naar het klembord kopiëren
-Copy_CSS_Path=CSS-pad kopiëren
-html.tip.Copy_CSS_Path=Het CSS-pad van het element naar het klembord kopiëren
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Locatie kopiëren
-clipboard.tip.Copy_Location=De URL van de objectlocatie naar het klembord kopiëren
-CopyURLParameters=URL-parameters kopiëren
-net.tip.Copy_URL_Parameters=URL-parameters naar klembord kopiëren
-CopyPOSTParameters=POST-parameters kopiëren
-net.tip.Copy_POST_Parameters=POST-parameters naar klembord kopiëren
-CopyLocationParameters=Locatie met parameters kopiëren
-net.tip.Copy_Location_Parameters=URL inclusief parameters naar het klembord kopiëren
-CopyRequestHeaders=Verzoekheaders kopiëren
-net.tip.Copy_Request_Headers=Verzoekheaders naar het klembord kopiëren
-CopyResponseHeaders=Antwoordheaders kopiëren
-net.tip.Copy_Response_Headers=Antwoordheaders naar het klembord kopiëren
-CopyResponse=Antwoordbody kopiëren
-net.tip.Copy_Response=Antwoordtekst naar het klembord kopiëren
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Foutmelding kopiëren
-console.menu.tip.Copy_Error=Foutinformatie naar het klembord kopiëren
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Functie kopiëren
-dom.tip.Copy_Source=Broncode van de functie naar het klembord kopiëren
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Aanroepen loggen in “%S”
-dom.tip.Log_Calls_To_Function=Aanroepen naar de functie “%S” in het consolepaneel loggen
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Gebeurtenissen loggen
-html.tip.Show_Events_In_Console=Gebeurtenisinformatie naar de console loggen
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Ingeschakeld
-panel.tip.Enabled=Paneelactivatie wisselen
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Opdrachtregelpop-up weergeven
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=De Firebugconsole ondersteunt ‘%S’ niet
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=De Firebug-opdrachtregel ondersteunt ‘%S’ niet
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Huidig venster:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Afbreken op alle fouten uitschakelen
-console.Break_On_All_Errors=Afbreken op alle fouten
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Afbreken op deze fout
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Pijltoetsen, Tab of Enter gebruiken
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript is uitgeschakeld in het voorkeursvenster van firefox. Indien u het consolevenster wilt gebruiken dient u deze optie in te schakelen via ‘Extra’ -> ‘Opties’ -> ‘Inhoud’ -> ‘JavaScript inschakelen’
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=Er staan te veel elementen in de reeks om op de pagina te accentueren (de huidige grens is %S).\\nZie de voorkeursinstelling ‘extensions.firebug.multiHighlightLimit’.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=De Firebug-opdrachtregel is uitgeschakeld voor XML-pagina’s. U kunt <a>omschakelen naar HTML</a> om deze in te schakelen.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Antwoordbody
-net.sizeinfo.Post_Body=Postbody
-net.sizeinfo.Total_Sent=Totaal verzonden
-net.sizeinfo.Total_Received=Totaal ontvangen
-net.sizeinfo.Including_HTTP_Headers=Inclusief HTTP-headers
-net.ActivationMessage=Netpaneel ingeschakeld. Verzoeken tijdens inactiviteit van het netpaneel worden niet weergegeven.
-net.responseSizeLimitMessage=De limiet van de antwoordomvang van Firebug is bereikt. Klik <a>hier</a> om het gehele antwoord in een nieuwe Firefoxtabblad te openen.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=De omvangslimiet van Firebugverzoeken is bereikt door Firebug.
-net.Break_On_XHR=Afbreken op XHR
-net.label.Parameters=Parameters
-net.label.Parts=Delen
-net.label.Source=Bron
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Opnieuw verzenden
-net.tip.Resend=Verzoek opnieuw verzenden
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Browsercache uitschakelen
-net.option.tip.Disable_Browser_Cache=HTTP-cache van de browser uitschakelen
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Paint-gebeurtenissen weergeven
-net.option.tip.Show_Paint_Events=MozAfterPaint-gebeurtenissen weergeven als groene lijnen op de tijdlijn
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=BFCache-antwoorden weergeven
-net.option.tip.Show_BFCache_Responses=Antwoorden van de Back-Forward Cache worden ook weergegeven.
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Afbreken op volgende
-script.Disable_Break_On_Next=Afbreken op volgende uitschakelen
-ShowHttpHeaders=HTTP-headers weergeven
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S verzoek;%1$S verzoeken
-FromCache=uit cache
-StopLoading=Laden stoppen
-net.tip.Stop_Loading=Laden verzoek stoppen
-LargeData=(zeer veel data)
-ShowComputedStyle=Berekende stijl weergeven
-StyleGroup-text=Tekst
-StyleGroup-background=Achtergrond
-StyleGroup-box=Boxmodel
-StyleGroup-layout=Opmaak
-StyleGroup-other=Overig
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Kleur kopiëren
-css.tip.Copy_Color=Kleur naar het klembord kopiëren
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Afbeeldingslocatie kopiëren
-css.tip.Copy_Image_Location=Afbeeldings-URL naar het klembord kopiëren
-OpenImageInNewTab=Afbeelding in nieuw tabblad openen
-css.tip.Open_Image_In_New_Tab=Afbeelding in een nieuw browsertabblad openen
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Werkbalkstack weglaten
-callstack.option.tip.Omit_Object_Path_Stack=Objectpadstack niet weergeven
-Load_Original_Source=Oorspronkelijke bron laden
-css.tip.Load_Original_Source=Wijzigingen negeren en oorspronkelijke CSS laden
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Regeldeclaratie kopiëren
-css.tip.Copy_Rule_Declaration=Regel inclusief alle eigenschappen naar het klembord kopiëren
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Stijldeclaratie kopiëren
-css.tip.Copy_Style_Declaration=Regeleigenschappen naar het klembord kopiëren
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S fout;%1$S fouten
-moduleManager.title=%S venster is uitgeschakeld
-moduleManager.desc3=Gebruik het contextmenu van het statusbalkpictogram van Firebug om alle vensters in- en uit te schakelen. Gebruik het kleine menu op het venstertabblad voor individueel vensterbeheer:
-moduleManager.Enable=Inschakelen
-Suspend_Firebug=Firebug onderbreken
-Resume_Firebug=Verdergaan met Firebug
-Reset_Panels_To_Disabled=Vensters terugzetten op uitgeschakeld
-Open_Console=Console openen
-Open_Console_Tooltip=De Firebug volgconsole openen.
-Scope_Chain=Zoekbereik
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=Met
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Aanroepen
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Venster
-Logs=Logbestanden
-Options=Opties
-Copy_Stack=Stapel kopiëren
-Copy Exception=Uitzondering kopiëren
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blokkering
-requestinfo.Resolving=DNS opzoeken
-requestinfo.Connecting=Verbinding leggen
-requestinfo.Sending=Verzenden
-requestinfo.Waiting=Wachten
-requestinfo.Receiving=Ontvangen
-requestinfo.ContentLoad=‘DOMContentLoaded’ (gebeurtenis)
-requestinfo.WindowLoad=‘load’ (gebeurtenis)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Verzoekstarttijd sinds aanvang
-requestinfo.phases.label=Verzoekfasen start en verstreken tijd gerelateerd aan de verzoekstart:
-requestinfo.timings.label=Gebeurtenistijd gerelateerd aan verzoekstart:
-search.Firebug_Search=Firebug zoeken
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Volgende
-search.tip.Next=Naar de volgende overeenkomst zoeken
-search.Previous=Vorige
-search.tip.Previous=Naar de vorige overeenkomst zoeken
-search.Case_Sensitive=Hoodlettergevoeligheid afdwingen
-search.tip.Case_Sensitive=Hoofdlettergevoelig zoeken
-search.Case_Insensitive=Niet hoofdlettergevoelig
-search.tip.Case_Insensitive=Niet hoofdlettergevoelig zoeken
-search.Multiple_Files=Meerdere bestanden
-search.tip.Multiple_Files=In alle bestanden gerelateerd aan dit paneel zoeken
-search.Use_Regular_Expression=Reguliere expressie gebruiken
-search.tip.Use_Regular_Expression=De ingevoerde tekst als reguliere expressie interpreteren bij zoeken
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS-selectie
-search.net.Headers=Headers
-search.net.Parameters=Parameters
-search.net.Response_Bodies=Antwoordgedeelten
-search.net.tip.Response_Bodies=Ook in antwoordtekst zoeken
-firebug.console.Persist=Vasthouden
-firebug.console.Do_Not_Clear_On_Reload2=Paneel niet wissen bij herladen
-firebug.console.Show_All_Log_Entries=Alle gelogde gebeurtenissen weergeven
-firebug.console.Errors=Fouten
-firebug.console.Filter_by_Errors=Filteren op fouten
-firebug.console.Warnings=Waarschuwingen
-firebug.console.Filter_by_Warnings=Filteren op waarschuwingen
-firebug.console.Info=Info
-firebug.console.Filter_by_Info=Filteren op info
-firebug.console.Debug_Info=Foutopsporingsinfo
-firebug.console.Filter_by_Debug_Info=Filteren op foutopsporingsinfo
-firebug.Deactivate_Firebug=Firebug deactiveren
-firebug.tip.Deactivate_Firebug=Firebug deactiveren op de huidige website
-firebug.ShowFirebug=Firebug openen
-firebug.menu.tip.Open_Firebug=Firebug-gebruikersinterface weergeven
-firebug.HideFirebug=Firebug verbergen
-firebug.menu.tip.Minimize_Firebug=Firebug minimaliseren, maar actief houden
-firebug.FocusFirebug=Focussen op Firebug-venster
-firebug.menu.tip.Focus_Firebug=Focussen op ontkoppeld Firebug-venster
-firebug.menu.Enable_All_Panels=Alle vensters inschakelen
-firebug.menu.tip.Enable_All_Panels=Alle activeerbare panelen inschakelen
-firebug.menu.Disable_All_Panels=Alle vensters uitschakelen
-firebug.menu.tip.Disable_All_Panels=Alle activeerbare panelen uitschakelen
-firebug.menu.Customize_shortcuts=Sneltoetsen aanpassen
-firebug.menu.tip.Customize_Shortcuts=Interne toetsverbinding van Firebug aanpassen
-firebug.Options=Opties
-firebug.menu.tip.Options=Algemene Firebug-voorkeuren
-firebug.menu.Enable_Accessibility_Enhancements=Toegankelijkheidsverbeteringen inschakelen
-firebug.menu.tip.Enable_Accessibility_Enhancements=Volledige controle via toetsenbord en overige toegankelijkheidsverbeteringen inschakelen
-firebug.menu.Activate_Same_Origin_URLs2=Activeren voor URL’s van identieke oorsprong
-firebug.menu.tip.Activate_Same_Origin_URLs=Firebug activeren voor URL’s waarvoor het identieke oorsprongsbeleid van toepassing is
-firebug.menu.Reset_All_Firebug_Options=Alle Firebugopties resetten
-firebug.menu.tip.Reset_All_Firebug_Options=Alle Firebug-voorkeuren terugzetten naar hun standaardwaarden
-firebug.menu.Firebug_Online=Firebug Online
-firebug.menu.tip.Firebug_Online=Aan Firebug gerelateerde websites
-firebug.menu.Extensions=Firebug-extensies…
-firebug.menu.tip.Extensions=Firebug-extensies downloaden en installeren
-firebug.menu.Vertical_Panels=Verticale panelen
-firebug.menu.tip.Vertical_Panels=De opmaak van de hoofd- en zijpanelen van Firebug wisselen
-firebug.menu.Show_Info_Tips=Infotips weergeven
-firebug.menu.tip.Show_Info_Tips=Pop-ups met informatie over het aangewezen element weergeven
-firebug.Show_Error_Count=Aantal fouten weergeven
-firebug.menu.tip.Show_Error_Count=Aantal in de console gelogde fouten weergeven
-firebug.TextSize=Tekstgrootte
-firebug.menu.tip.Text_Size=In Firebug gebruikte tekstgrootte wijzigen
-firebug.IncreaseTextSize=Tekst vergroten
-firebug.menu.tip.Increase_Text_Size=In Firebug gebruikte tekstafmeting vergroten
-firebug.DecreaseTextSize=Tekst verkleinen
-firebug.menu.tip.Decrease_Text_Size=In Firebug gebruikte tekstafmeting verkleinen
-firebug.NormalTextSize=Normale tekstgrootte
-firebug.menu.tip.Normal_Text_Size=In Firebug gebruikte tekstgrootte op standaardwaarde terugzetten
-firebug.Website=Firebug-website…
-firebug.menu.tip.Website=De officiële Firebug-website openen
-firebug.help=Help…
-firebug.menu.tip.help=De pagina met koppelingen naar pagina’s met uitleg over Firebug openen
-firebug.Documentation=Documentatie…
-firebug.menu.tip.Documentation=De documentatie over Firebug openen
-firebug.KeyShortcuts=Sneltoetsen…
-firebug.menu.tip.Key_Shortcuts=De lijst met in Firebug beschikbare muis- en sneltoetsen openen
-firebug.Forums=Discussiegroep…
-firebug.menu.tip.Forums=Discussiewebsite openen
-firebug.Issues=Probleem volgen…
-firebug.menu.tip.Issues=Website voor gerapporteerde problemen openen
-firebug.Donate=Doneren…
-firebug.menu.tip.Donate=Website voor bijdragen openen
-firebug.About=Over…
-firebug.menu.tip.About=Informatie over Firebug
-ProfileJavaScript=Profiel-JavaScript
-firebug.menu.tip.Profile_JavaScript=Uitvoeringstijd profiel-JavaScript
-firebug.Search=Zoeken
-firebug.menu.tip.Search=Focussen op zoekveld
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Opdracht opnieuw ingeven
-firebug.shortcut.tip.reenterCommand=Laatste opdracht opnieuw in opdrachtregel invoeren
-firebug.shortcut.toggleInspecting.label=Inspectie wisselen
-firebug.shortcut.tip.toggleInspecting=Inspecteur in-/uitschakelen
-firebug.shortcut.toggleQuickInfoBox.label=Snelle Infobox wisselen
-firebug.shortcut.tip.toggleQuickInfoBox=Weergave van een paneel met informatie over het momenteel geïnspecteerde element in-/uitschakelen
-firebug.shortcut.toggleProfiling.label=Profileren wisselen
-firebug.shortcut.tip.toggleProfiling=JavaScript Profiler in-/uitschakelen
-firebug.shortcut.focusCommandLine.label=Op opdrachtregel focussen
-firebug.shortcut.tip.focusCommandLine=Firebug openen en focussen op de opdrachtregel / de opdrachtregelpop-up wisselen
-firebug.shortcut.focusFirebugSearch.label=Op Firebug zoeken focussen
-firebug.shortcut.tip.focusFirebugSearch=Focussen op het zoekveld
-firebug.shortcut.focusWatchEditor.label=Op Volgbewerker focussen
-firebug.shortcut.tip.focusWatchEditor=Wisselen naar het scriptpaneel en focussen op het invoerveld voor een nieuwe volgexpressie
-firebug.shortcut.focusLocation.label=Op locatie focussen
-firebug.shortcut.tip.focusLocation=Locatiemenu openen
-firebug.shortcut.nextObject.label=Volgende object
-firebug.shortcut.tip.nextObject=Volgend object in het elementpad van een paneel selecteren
-firebug.shortcut.previousObject.label=Vorige object
-firebug.shortcut.tip.previousObject=Vorig object in het elementpad van een paneel selecteren
-firebug.shortcut.customizeFBKeys.label=Firebug-toetsen aanpassen
-firebug.shortcut.tip.customizeFBKeys=Dialoogvenster voor Firebug-sneltoetsverbindingen openen
-firebug.shortcut.detachFirebug.label=Firebug in nieuw venster openen
-firebug.shortcut.tip.detachFirebug=Firebug ontkoppelen naar een eigen venster
-firebug.shortcut.leftFirebugTab.label=Naar linker Firebug-venster wisselen
-firebug.shortcut.tip.leftFirebugTab=Naar Firebug-paneel links wisselen
-firebug.shortcut.rightFirebugTab.label=Naar rechter Firebug-venster wisselen
-firebug.shortcut.tip.rightFirebugTab=Naar Firebug-paneel rechts wisselen
-firebug.shortcut.toggleFirebug.label=Firebug openen
-firebug.shortcut.tip.toggleFirebug=Firebug-gebruikersinterface openen/minimaliseren
-firebug.shortcut.closeFirebug.label=Firebug deactiveren
-firebug.shortcut.tip.closeFirebug=Firebug voor de huidige website deactiveren
-firebug.shortcut.previousFirebugTab.label=Vorige Firebug-tabblad openen
-firebug.shortcut.tip.previousFirebugTab=Naar het hiervoor geselecteerde Firebug-paneel wisselen
-firebug.shortcut.clearConsole.label=Console opschonen
-firebug.shortcut.tip.clearConsole=Alle logverslagen uit de consoel verwijderen
-firebug.shortcut.openTraceConsole.label=Volgconsole openen
-firebug.shortcut.tip.openTraceConsole=FBTrace-console openen
-firebug.shortcut.navBack.label=Terug
-firebug.shortcut.tip.navBack=Naar het voorgaande paneel of locatielijstonderdeel in de navigatiegeschiedenis wisselen
-firebug.shortcut.navForward.label=Vooruit
-firebug.shortcut.tip.navForward=Naar het volgende paneel of locatielijstonderdeel in de navigatiegeschiedenis wisselen
-firebug.shortcut.increaseTextSize.label=Tekst vergroten
-firebug.shortcut.tip.increaseTextSize=Tekstafmeting in Firebug vergroten
-firebug.shortcut.decreaseTextSize.label=Tekst verkleinen
-firebug.shortcut.tip.decreaseTextSize=Tekstafmeting in Firebug verkleinen
-firebug.shortcut.normalTextSize.label=Normale tekstgrootte
-firebug.shortcut.tip.normalTextSize=Tekstgrootte in Firebug terugzetten naar standaardwaarde
-firebug.shortcut.help.label=Hulp openen
-firebug.shortcut.tip.help=Pagina met veelgestelde vragen openen
-firebug.shortcut.toggleBreakOn.label=Afbreken op… wisselen
-firebug.shortcut.tip.toggleBreakOn=Scriptuitvoer bij specifieke gebeurtenissen in een paneel stoppen in-/uitschakelen
-firebug.panel_selector=Paneelselectie
-customizeShortcuts=Firebug-sneltoetsen
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=paneelhulpmiddelen
-a11y.labels.firebug_panels=Firebug-panelen
-a11y.labels.firebug_side_panels=Firebug-zijpanelen
-a11y.labels.firebug_window=Firebug-venster
-a11y.labels.firebug_status=Firebug-status
-a11y.labels.reset=resetten
-a11y.labels.reset_shortcut=%S snelkoppeling resetten
-aria.labels.inactive_panel=inactief paneel
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=logrijen
-a11y.labels.call_stack=stapel aanroepen
-a11y.labels.document_structure=documentstructuur
-a11y.labels.title_panel=%S paneel
-a11y.labels.title_side_panel=%S zijpaneel
-a11y.labels.cached=in cache
-aria.labels.stack_trace=stapel volgen
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=verdikking
-a11y.layout.border=rand
-a11y.layout.margin=marge
-a11y.layout.position=positie
-a11y.layout.position_top=bovenaan plaatsen
-a11y.layout.position_right=rechts plaatsen
-a11y.layout.position_bottom=onderaan plaatsen
-a11y.layout.position_left=links plaatsen
-a11y.layout.margin_top=marge bovenzijde
-a11y.layout.margin_right=marge rechts
-a11y.layout.margin_bottom=marge onderzijde
-a11y.layout.margin_left=marge links
-a11y.layout.border_top=rand bovenzijde
-a11y.layout.border_right=rand rechts
-a11y.layout.border_bottom=rand onderzijde
-a11y.layout.border_left=rand links
-a11y.layout.padding_top=verdikking bovenzijde
-a11y.layout.padding_right=verdikking rechts
-a11y.layout.padding_bottom=verdikking onderzijde
-a11y.layout.padding_left=verdikking links
-a11y.layout.top=boven
-a11y.layout.right=rechts
-a11y.layout.bottom=onder
-a11y.layout.left=links
-a11y.layout.width=breedte
-a11y.layout.height=hoogte
-a11y.layout.size=omvang
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=veldomvang
-a11y.layout.clientBoundingRect=begrenzende clientrechthoek
-a11y.descriptions.press_enter_to_edit_values=druk op enter gevolgd door tab om individuele waarden te bewerken
-a11y.labels.style_rules=stijlregels
-aria.labels.inherited_style_rules=geërfde stijlregels
-a11y.labels.computed_styles=berekende stijlen
-a11y.labels.dom_properties=DOM-eigenschappen
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=inline bewerken
-a11y.labels.value_for_attribute_in_element=waarde voor %S attribuut in %S element
-a11y.labels.attribute_for_element=attribuut voor %S element
-a11y.labels.text_contents_for_element=tekstinhoud voor %S element
-a11y.labels.defined_in_file=gedefinieerd in %S
-a11y.labels.declarations_for_selector=stijlverklaringen voor selectie “%S”
-a11y.labels.property_for_selector=CSS-eigenschap voor selectie: %S
-a11y.labels.value_property_in_selector=%S eigenschapwaarde voor selectie %S
-a11y.labels.css_selector=CSS-selectie
-a11y.labels.source_code_for_file=broncode voor bestand %S
-a11y.labels.press_enter_to_add_new_watch_expression=druk op enter om een nieuwe volguitdrukking toe te voegen
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=genegeerd
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=heeft een voorwaardelijk afbreekpunt
-a11y.updates.has_disabled_break_point=heeft een uitgeschakeld afbreekpunt
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script gepauzeerd op regel %S in %S, bestand %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=overeenkomst gevonden voor %S in %S logrijen
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=overeenkomst gevonden voor %S op regel %S in %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=overeenkomst gevonden voor %S in %S element op pad %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=overeenkomst gevonden voor %S in attribuut %S=%S van %S element op pad %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=overeenkomst gevonden voor %S in tekstinhoud: %S van %S element op pad %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=overeenkomst gevonden voor %S in selectie %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=overeenkomst gevonden voor “%S” in stijldeclaratie %S in selectie %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=overeenkomst gevonden voor %S in DOM-eigenschap %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=overeenkomst gevonden voor “%S” in %S, %S: %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=overeenkomst gevonden voor %S in netsamenvattingsrij: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=geen overeenkomsten gevonden voor “%S”
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Weet u zeker dat u alle Firebug-opties naar de standaardwaarden wilt terugzetten?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Uw bestaande CSS-bewerkingen worden geannuleerd.\\nWeet u zeker dat u het brondocument wilt bewerken?
-# Console messages
-warning.Console_must_be_enabled=Console dient te zijn ingeschakeld
-warning.Command_line_blocked?=Opdrachtregel geblokkeerd?
-warning.dollar_change=De betekenis van de console-opdrachtregelfunctie $() is gewijzigd van $=getElementById(id) in $=querySelector(selecteur). U kunt wellicht $(“#%S”) proberen.
-message.Reload_to_activate_window_console=Herladen om de vensterconsole te activeren
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Pagina herladen om broncode op te halen voor
-message.The_resource_from_this_URL_is_not_text=De bron van deze URL is geen tekst
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Terug naar dit paneel
-firebug.history.Stay_on_this_panel=Op dit paneel blijven
-firebug.history.Go_forward_to_this_panel=Vooruit naar dit paneel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Terug
-firebug.history.Go_forward=Vooruit
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Het scriptvenster was inactief tijdens het laden van de pagina
-script.suggestion.inactive_during_page_load2=<herlaad</a> om alle bronnen te zien
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=JavaScript is niet ingeschakeld
-script.suggestion.javascript_not_enabled=Zie Firefox > Extra > Opties > Inhoud > JavaScript inschakelen
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=JavaScript inschakelen en verversen
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Alle scripts zijn gefilterd
-script.suggestion.all_scripts_filtered=Zie de Scriptfilter-instelling op de werkbalk of “Chrome-bronnenoptie weergeven”
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=Systeembronnen kunnen niet worden gedebugd
-script.suggestion.no_system_source_debugging=Firebug kan momenteel niet worden gebruikt om fouten in systeembronnen op te sporen. Lees <a>issue 5110</a> voor de reden.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=Geen JavaScript op deze pagina
-script.suggestion.no_javascript2=Als <script>-labels een attribuut “type hebben”, dient dit gelijk te zijn aan “text/javascript” of “application/javascript”. Scripts dienen ook ontleedbaar (syntactisch correct) te zijn.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Foutopsporing is al aktief
-script.suggestion.debugger_active=De foutopsporing is momenteel gestopt op een afbreekpunt op een andere pagina.
-script.button.Go_to_that_page=Naar die pagina
-script.warning.debugger_not_activated=Foutopsporing niet actief
-script.suggestion.debugger_not_activated=Foutopsporing niet actief
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Sluiten
-firebug.View=Beeld
-firebug.Help=Help
-firebug.Run=Draaien
-firebug.Copy=Kopiëren
-firebug.History=Geschiedenis
-firebug.Run_the_entered_command=De ingevoerde opdracht uitvoeren
-firebug.Clear_the_Command_Editor=Opdrachtbewerker leegmaken
-firebug.Copy_the_script_as_a_bookmarklet=Script als bookmarklet kopiëren
-firebug.Insert_a_previously_entered_command=Eerder ingevoerde opdracht invoegen
-firebug.AlwaysOpenInWindow=Altijd in nieuw venster openen
-firebug.OpenWith=Met tekstbewerker openen
-firebug.menu.tip.Open_With=Inhoud in een extern bewerkingsprogramma openen
-firebug.Permissions=Websites…
-firebug.Configure_Editors=Bewerkingsprogramma’s instellen
-script.tip.Script_Type=Filteren op scripttype
-script.tip.Script_Filter_Static=Alleen met de pagina geladen scripts weergeven
-script.tip.Script_Filter_Evals=Met de pagina geladen scripts en via eval() gemaakte scripts laden
-script.tip.Script_Filter_Events=Met de pagina geladen scripts, via eval() gemaakte scripts en event listeners laden
-script.tip.Script_Filter_All=Alle soorten scripts laden
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Opnieuw uitvoeren
-script.tip.Rerun=Huidige functieaanroep-stack opnieuw uitvoeren
-script.Continue=Doorgaan
-script.tip.Continue=JavaScript-uitvoering voortzetten
-script.Step_Over=Overslaan
-script.tip.Step_Over=De volgende opdracht uitvoeren
-script.Step_Into=Springen naar
-script.tip.Step_Into=Volgende opdracht uitvoeren en naar functies springen
-script.Step_Out=Afronden
-script.tip.Step_Out=Rest van de functie uitvoeren en terugkeren naar aanroep
-firebug.RunUntil=Tot deze regel uitvoeren
-script.tip.Run_Until=JavaScript uitvoeren tot opgegeven regel
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Inspecteren
-firebug.InspectElement=Element inspecteren
-firebug.InspectElementWithFirebug=Element inspecteren met Firebug
-firebug.BreakOnErrors=Afbreken bij fouten
-firebug.InspectTooltip=Klik op een element in de pagina om dit te inspecteren
-firebug.EditHTMLTooltip=Deze HTML-code bewerken
-firebug.Profile=Profileren
-firebug.Clear=Wissen
-firebug.ClearConsole=Console wissen
-firebug.ClearTooltip=De console wissen
-firebug.All=Alles
-firebug.Images=Afbeeldingen
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Ingestelde Firebug-bewerkingen
-editors.Editor=Bewerkingsprogramma
-editors.Executable=Uitvoerbaar bestand
-editors.Launch_Arguments=Opstartargumenten
-editors.Add=Toevoegen
-editors.Remove=Verwijderen
-editors.Change=Wijzigen
-editors.Move_Up=Omhoog
-editors.Close=Sluiten
-editors.Browse=Bladeren…
-changeEditor.Editor_Configuration=Bewerkingsinstelling
-changeEditor.Name=Naam:
-changeEditor.Executable=Uitvoerbaar bestand:
-changeEditor.CmdLine=Argumenten:
-changeEditor.Supplied_arguments=Door Firebug geleverde argumenten:
-changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> Bestands-URL (als %url niet beschikbaar is wordt %file standaard toegevoegd)
-changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> Pad naar lokaal bestand (of naar de tijdelijke kopie)
-changeEditor.Line_number=<label class=\'text-link\'>%line</label> Regelnummer (indien beschikbaar)
-changeEditor.Invalid_Application_Path=Ongeldig toepassingspad
-changeEditor.Application_does_not_exist=De opgegeven toepassing bestaat niet!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Bewerken
-firebug.css.sourceEdit=Bron bewerken
-firebug.css.sourceEdit.tooltip=De stylesheetbron zoals geladen door de browser bewerken in een tekstveld
-firebug.css.liveEdit=Live bewerken
-firebug.css.liveEdit.tooltip=De stylesheetbron uit de browser bewerken in een tekstveld
-firebug.EditCSSTooltip=Deze stylesheet bewerken
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Websites worden niet onthouden in privénavigatie-modus
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Afbreeknotificaties weergeven
-firebug.breakpoint.tip.Show_Break_Notifications=Notificatie weergeven wanneer de functie Afbreken op… of het trefwoord debugger; de JavaScript-uitvoering heeft gestopt
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=U kunt afbreeknotificaties in- en uitschakelen in het <a>tabbladmenu van het paneel</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Klikken op de knop ‘Uitschakelen’ gaat boven de ‘foutopsporing’ met een uitgeschakeld afbreekpunt.
-firebug.bon.tooltip.disableDebuggerKeyword2=Maakt een uitgeschakeld afbreekpunt
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(het scriptpaneel dient te zijn ingeschakeld voor deze functie)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=Er zijn geen onderliggende objecten
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=meer
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Cirkelreferentie gedetecteerd
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item in opslag;%1$S items in opslag
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Objecteigenschappen
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(geen afrondingen)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=Het URL-object is waarschijnlijk teruggetrokken met de revokeObjectURL-methode.
-firebug.failedToPreviewImageURL=Laden ingegeven URL mislukt.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Geheugenprofileerder gestart
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Tijdens profileren toegevoegde objecten
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Resultaten geheugenprofileerder
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Gehele sessie
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(geen uitvoer)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(lege tekst)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Add-on Firecookie gedetecteerd. Deze add-on is standaard geïntegreerd in Firebug 1.10. Om problemen te voorkomen dient u Firecookie te deïnstalleren.\n\nU dient te herstarten om de deïnstallatie af te ronden.
-cookies.legacy.uninstall=Deïnstalleren
-cookies.legacy.uninstall_and_restart=Deïnstalleren en herstarten
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Opdrachtregel-API
-console.cmd.help_title_desc=Druk F1 om de onlinehulp van Firebug te openen
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Geeft een enkel element met het opgegeven ID.
-console.cmd.help.$$=Geeft een reeks elementen die overeenkomen met de opgegeven CSS-selectie.
-console.cmd.help.$x=Geeft een reeks elementen die overeenkomen met de opgegeven XPath-expressie.
-console.cmd.help.dir=Drukt een interactieve lijst met alle eigenschappen van het object af. Dit oogt identiek aan de weergave in het DOM-paneel.
-console.cmd.help.dirxml=Drukt de XML-bronnenboom van een HTML- of XML-element af. Dit oogt identiek aan de weergave in het HTML-paneel. U kunt op een node klikken om deze te inspecteren in het HTML-paneel.
-console.cmd.help.cd=Standaard zijn opdrachtregelexpressies relatief aan het bovenste niveauvenster van de pagina. Met cd() kunt u in plaats hiervan het venster van een frame in de pagina gebruiken.
-console.cmd.help.clear=Wist de console.
-console.cmd.help.copy=Kopieert de opgegeven parameter naar het klembord. Dit kan een teruggestuurde waarde van een functie of een object zijn.
-console.cmd.help.inspect=Inspecteert een object in het meest geschikte paneel, of in het paneel dat wordt opgegeven in het optionele tweede argument. De beschikbare paneelnamen zijn “html”, “stylesheet”, “script” en “dom”.
-console.cmd.help.keys=Geeft een reeks met de namen van alle eigenschappen van het object.
-console.cmd.help.values=Geeft een reeks met de waarden van alle eigenschappen van het object.
-console.cmd.help.debug=Voegt een afbreekpunt toe aan de eerste regel van een functie.
-console.cmd.help.undebug=Verwijdert het breekpunt uit de eerste regel van een functie.
-console.cmd.help.monitor=Schakelt loggen voor alle aanroepen van een functie in.
-console.cmd.help.unmonitor=Schakelt loggen voor alle aanroepen van een functie uit.
-console.cmd.help.monitorEvents=Schakelt loggen voor alle naar een object verzonden gebeurtenissen in. Het optionele tweede argument kan specifieke te loggen gebeurtenissen of gebeurtenistypen definiëren. De beschikbare gebeurtenistypen zijn “composition”, “contextmenu”, “drag”, “focus”, “form”, “key”, “load”, “mouse”, “mutation”, “paint”, “scroll”, “text”, “ui”, “xul” en “clipboard”.
-console.cmd.help.unmonitorEvents=Schakelt loggen voor alle naar een object verzonden gebeurtenissen uit. Het optionele tweede argument kan specifieke gebeurtenissen of gebeurtenisfamilies definiëren, waarvoor loggen moet worden uitgeschakeld.
-console.cmd.help.profile=Schakelt de JavaScript-profiler in. Het optionele tweede argument bevat de in de header van het profielrapport af te drukken tekst.
-console.cmd.help.profileEnd=Schakelt de JavaScript-profiler uit en drukt het rapport af.
-console.cmd.help.table=Maakt loggen van verstrekte gegevens in een tabelopmaak mogelijk. De methode neemt één vereiste parameter die tabelachtige gegevens voorstelt (reeks of reeksen of lijst met objecten). De optionele tweede parameterkan worden gebruikt om te loggen kolommen en/of eigenschappen op te geven.
-console.cmd.help.$0=Vertegenwoordigt het laatste via de Inspector geselecteerde element.
-console.cmd.help.$1=Vertegenwoordigt het voorlaatste via de Inspector geselecteerde element.
-console.cmd.help.$n=Geeft één van de vijf laatste via de Inspector geselecteerde elementen. Deze methode neemt een vereiste parameter, die de index van het element vertegenwoordigt (beginnend bij 0).
-console.cmd.help.help=Geeft hulptekst weer voor alle beschikbare opdrachten.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Voor deze opdracht is geen hulppagina beschikbaar.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type een aangepaste selecteur of rechtsklik op de CSS-regel en kies <b>Overeenkomstige elementen ophalen</b>.
-css.selector.noSelectionResults=Geen overeenkomstige elementen
-css.selector.selectorError=Selectie mislukt:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elementen
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Geeft elementen weer die met een CSS-selecteur overeenkomen
-css.selector.TryASelector=Een selecteur proberen…
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Overeenkomstige elementen ophalen
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Uitvoeren opgegeven selecteurstring mislukt
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Documentfasen-start en verstreken tijd relatief aan het laden van het document:
-perftiming.events.label=Gebeurtenistiming relatief aan laden document:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Prestatietiming
-perftiming.details_title_desc=Gedetailleerde timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Tijdstip bij afsluiten serververbinding.
-perftiming.connectStart=Tijdstip voor aanvang serververbinding.
-perftiming.domComplete=Tijdstip vlak voor gereedmelding document.
-perftiming.domContentLoadedEventEnd=Tijdstip na afronding DOMContentLoaded-gebeurtenis.
-perftiming.domContentLoadedEventStart=Tijdstip vlak voor starten DOMContentLoaded.
-perftiming.domInteractive=Tijdstip vlak voor instellen gereedheid op interactief.
-perftiming.domLoading=Tijdstip vlak voor instellen gereedheid op laden.
-perftiming.domainLookupEnd=Tijdstip na opzoeken domeinnaam.
-perftiming.domainLookupStart=Tijdstip vlak voor opzoeken domeinnaam.
-perftiming.fetchStart=Tijdstip dat ophalen hulpbron start.
-perftiming.loadEventEnd=Tijdstip van afronden laden.
-perftiming.loadEventStart=Tijdstip vlak voor laden start.
-perftiming.navigationStart=Tijdstip nadat vorige document wordt ontladen.
-perftiming.redirectCount=Aantal doorgeleidingen sinds laatste niet-doorgeleiding.
-perftiming.redirectEnd=Tijdstip nadat laatste doorleidantwoord eindigt.
-perftiming.redirectStart=Tijdstip van ophalen van een doorleiding.
-perftiming.requestStart=Tijdstip vlak voor een serveraanvraag.
-perftiming.responseEnd=Tijdstip na einde van een antwoord of verbinding.
-perftiming.responseStart=Tijdstip vlak voor begin van een antwoord.
-perftiming.unloadEventEnd=Tijdstip na ontladen van vorig document.
-perftiming.unloadEventStart=Tijdstip vlak voordat een ontladingsgebeurtenis is gestart.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Console
+panel.tip.console=Maakt observatie van consoleberichten en uitvoeren van JavaScript-opdrachten mogelijk
+Panel-net=Net
+panel.tip.net=Maakt analyse van netwerkverkeer mogelijk
+Panel-html=HTML
+panel.tip.html=Maakt inspectie en manipulatie van DOM-nodes mogelijk
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Maakt inspectie en manipulatie van CSS-stylesheets mogelijk
+Panel-script=Script
+panel.tip.script=Maakt foutopsporing in JavaScript mogelijk
+Panel-dom=DOM
+panel.tip.dom=Maakt inspectie en manipulatie van DOM-eigenschappen mogelijk
+Panel-css=Stijl
+panel.tip.css=Makt inspectie en manipulatie van de CSS-regels van de geselecteerde DOM-node mogelijk
+Panel-computed=Berekend
+panel.tip.computed=Maakt inspectie van de berekende CSS-waarden van de geselecteerde DOM-node mogelijk
+Panel-layout=Opmaak
+panel.tip.layout=Maakt inspectie en manipulatie van de opmaakgegevens van de geselecteerde DOM-node mogelijk
+Panel-domSide=DOM
+panel.tip.domSide=Maakt inspectie en manipulatie van de DOM-eigenschappen van de geselecteerde DOM-node mogelijk
+Panel-watches=Bekijken
+panel.tip.watches=Maakt inspectie van de in het huidige stackframe beschikbare JavaScript-variabelen en definitie van volgexpressies mogelijk
+Panel-breakpoints=Afbreekpunten
+panel.tip.breakpoints=Maakt manipulatie van de set afbreekpunten mogelijk
+Panel-callstack=Stapel
+panel.tip.callstack=Maakt observatie van de huidige JavaScript-callstack mogelijk
+Panel-scopes=Blikveld
+firebug.DetachFirebug=Firebug in nieuw venster openen
+firebug.AttachFirebug=Firebug vastmaken aan browservenster
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=Totaal %1$S Firebug;Totaal %1$S Firebugs
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Gedeactiveerd
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=In browser
+minimized=Geminimaliseerd
+enablement.for_all_pages=voor alle pagina’s
+enablement.on=Aan
+enablement.off=Uit
+enablement.Panel_activation_status=Paneelactiveringsstatus:
+none=Gesloten
+Firebug_-_inactive_for_current_website=Firebug - inactief voor huidige website
+Activate_Firebug_for_the_current_website=Firebug voor huidige website activeren
+Minimized=Geminimaliseerd
+Minimize_Firebug=Firebug minimaliseren
+On_for_all_web_pages=Aan voor alle webpagina’s
+firebug.menu.tip.On_for_all_Web_Sites=Firebug standaard activeren voor alle websites
+firebug.menu.Clear_Activation_List=Activatielijst wissen
+firebug.menu.tip.Clear_Activation_List=Lijst met websites waarvoor Firebug is geactiveerd wissen
+firebug.menu.Detached=Ontkoppeld
+firebug.menu.tip.Detached=Firebug ontkoppelen naar een eigen venster
+firebug.menu.Top=Bovenzijde
+firebug.menu.tip.Top=Firebug uitlijnen naar de bovenzijde van het gebruikersvenster
+firebug.menu.Bottom=Onderzijde
+firebug.menu.tip.Bottom=Firebug uitlijnen naar de onderzijde van het gebruikersvenster
+firebug.menu.Left=Links
+firebug.menu.tip.Left=Firebug uitlijnen naar de linkerzijde van het gebruikersvenster
+firebug.menu.Right=Rechts
+firebug.menu.tip.Right=Firebug uitlijnen naar de rechterzijde van het gebruikersvenster
+firebug.uiLocation=Firebug-UI-locatie
+firebug.menu.tip.UI_Location=Positie van de Firebug-gebruikersinterface
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Firebug-opties
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Alle panelen weergeven
+console.option.Show_Command_Line=Opdrachtregel weergeven
+console.option.tip.Show_Command_Line=Focussen op opdrachtregel / Opdrachtregel-pop-up weergeven
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=JavaScriptfouten weergeven
+console.option.tip.Show_JavaScript_Errors=JavaScriptfouten naar console loggen
+ShowJavaScriptWarnings=JavaScriptwaarschuwingen weergeven
+console.option.tip.Show_JavaScript_Warnings=JavaScriptwaarschuwingen naar console loggen
+ShowCSSErrors=CSS-fouten weergeven
+console.option.tip.Show_CSS_Errors=CSS-fouten naar console loggen
+ShowXMLHTMLErrors=XML-/HTML-fouten weergeven
+console.option.tip.Show_XML_HTML_Errors=XML- en HTML-fouten naar de console loggen
+ShowStackTrace=Stack trace voor fouten weergeven
+console.option.tip.Show_Stack_Trace=Stack trace-informatie voor foutberichten weergeven
+ShowXMLHttpRequests=XMLHTTP-aanvragen weergeven
+console.option.tip.Show_XMLHttpRequests=XMLHTTP-aanvragen naar de console loggen
+ShowChromeErrors=Chromefouten weergeven
+console.option.tip.Show_System_Errors=Interne programma- en add-onfouten naar de console loggen
+ShowChromeMessages=Chromeberichten weergeven
+console.option.tip.Show_System_Messages=Interne programma- en add-onberichten naar de console loggen
+ShowExternalErrors=Externe fouten weergeven
+console.option.tip.Show_External_Errors=Foutberichten van externe bronnen naar de console loggen
+ShowNetworkErrors=Netwerkfouten weergeven
+console.option.tip.Show_Network_Errors=Netwerkfouten naar de console loggen
+JavascriptOptionsStrict=Strikte waarschuwingen (prestatiestraf)
+console.option.tip.Show_Strict_Warnings=Ook strikte waarschuwingen naar de console loggen
+Command_History=Opdrachtgeschiedenis
+console.option.Show_Command_Editor=Opdrachtbewerking weergeven
+console.option.tip.Show_Command_Editor=Naar opdrachtbewerking wisselen
+commandLineShowCompleterPopup=Afrondingslijst in pop-up weergeven
+console.option.tip.Show_Completion_List_Popup=Pop-up voor automatisch aanvullen opdracht wergeven
+Assertion=Assertiefout
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (regel %S)
+LineAndCol=%S (regel %S, kol %S)
+InstanceLine=%S #%S (regel %S)
+StackItem=%S (%S regel %S)
+SystemItem=<Systeem>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspecteren in paneel %S
+panel.tip.Inspect_In_Panel=Naar paneel %S wisselen om het object daar te onderzoeken
+NoName=(geen naam)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Volledige tekst weergeven
+html.option.tip.Show_Full_Text=Elementinhoud niet croppen
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Blanco ruimte weergeven
+html.option.tip.Show_Whitespace=Blanco ruimte in nodes weergeven
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Commentaar weergeven
+html.option.tip.Show_Comments=Commentaarnodes weergeven
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Entities als symbolen weergeven
+html.option.tip.Show_Entities_As_Symbols=Alle XML-entities als symbolen weergeven
+html.option.Show_Entities_As_Names=Entities als namen weergeven
+html.option.tip.Show_Entities_As_Names=Alle XML-entities als namen weergeven
+html.option.Show_Entities_As_Unicode=Entities als unicode weergeven
+html.option.tip.Show_Entities_As_Unicode=Alle XML-entities als unicode weergeven
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Wijzigingen accentueren
+html.option.tip.Highlight_Mutations=Wijzigingen in nodes accentueren
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Wijzigingen uitbreiden
+html.option.tip.Expand_Mutations=Boomnetwerk uitbreiden om gewijzigde nodes weer te geven
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Wijzigingen in zichtbaar deel rollen
+html.option.tip.Scroll_To_Mutations=Boomnetwerk rollen om gewijzigde nodes in beeld te brengen
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Snelle Infobox weergeven
+inspect.option.tip.Show_Quick_Info_Box=Informatie over de momenteel geïnspecteerde elementen weergeven in een paneel over de pagina
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Schaduwveldmodel
+inspect.option.tip.Shade_Box_Model=Schaduw aanbrengen in de verschillende delen van het veldmodel
+ScrollIntoView=In zichtbaar deel rollen
+html.tip.Scroll_Into_View=Pagina schuiven om het element zichtbaar te maken
+NewAttribute=Nieuw attribuut…
+html.tip.New_Attribute=Nieuw attribuut aan dit element toevoegen
+html.Edit_Node=%S bewerken…
+html.Node=Node
+html.tip.Edit_Node=De %S bewerken met de volledige tekstverwerker
+DeleteElement=Element verwijderen
+html.Delete_Element=Element uit het boomnetwerk verwijderen
+DeleteNode=Node verwijderen
+html.Delete_Node=Node uit het boomnetwerk verwijderen
+# Quick Info Box
+quickInfo=Snelle Info
+computedStyle=Berekende stijl
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Afbreken bij mutatie
+html.Disable_Break_On_Mutate=Afbreken bij mutatie uitschakelen
+html.label.Break_On_Text_Change=Afbreken bij tekstwijziging
+html.label.HTML_Breakpoints=HTML-afbreekpunten
+html.label.Break_On_Attribute_Change=Afbreken bij attribuutwijziging
+html.tip.Break_On_Attribute_Change=Uitvoeren JavaScript stoppen wanneer een attribuut van dit element wijzigt
+html.label.Break_On_Child_Addition_or_Removal=Afbreken bij toevoegen of verwijderen onderliggende pagina
+html.tip.Break_On_Child_Addition_or_Removal=Uitvoeren JavaScript stoppen wanneer een onderliggende node aan dit element wordt toegevoegd of ervan wordt verwijderd
+html.label.Break_On_Element_Removal=Afbreken bij verwijdering element
+html.tip.Break_On_Element_Removal=Uitvoeren JavaScript stoppen wanneer het element wordt verwijderd
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Alles uitklappen/inklapppen
+html.tip.Expand/Contract_All=Alle onderliggende niveau’s recursief uit-/inklappen
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Afbreken bij eigenschapwijziging
+dom.tip.Break_On_Property_Change=Uitvoering JavaScript stoppen wanneer deze eigenschap wijzigt
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Afbreken bij eigenschapwijziging uitschakelen
+dom.label.DOM_Breakpoints=DOM-afbreekpunten
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Attribuut “%S” bewerken…
+html.tip.Edit_Attribute=Waarde van attribuut “%S” van dit element bewerken
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Attribuut “%S” verwijderen
+html.tip.Delete_Attribute=Attribuut “%S” van dit element verwijderen
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Geërfd van
+SothinkWarning=De Sothink SWF Catcher extensie verhindert een goede werking van Firebug.<br><br>Lees a.u.b. <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">dit onderwerp in de Firebug FAQ</a> voor hulp.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=Pa’s wijze lynx bezag vroom het fikse aquaduct. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=Er zijn geen regels. U kunt <a>een regel aanmaken</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=Dit element heeft geen stijlregels. U kunt er <a>een regel voor aanmaken</a>.
+EditStyle=Elementstijl bewerken…
+style.tip.Edit_Style=Inlinestijl van dit element bewerken
+AddRule=Regel toevoegen…
+css.tip.AddRule=Een algemene regel voor dit element toevoegen
+NewRule=Nieuwe regel…
+css.tip.New_Rule=Nieuwe regel toevoegen
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=“%S” verwijderen
+css.tip.Delete_Rule=De regel “%S” en alle eigenschappen verwijderen
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Mediazoekopdracht bewerken…
+css.menu.tip.Edit_Media_Query=De mediazoekopdracht behorend bij deze regel bewerken
+NewProp=Nieuwe eigenschap…
+css.tip.New_Prop=Nieuwe eigenschap aan de huidige regel toevoegen
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=“%S” bewerken…
+css.tip.Edit_Prop=Waarde van eigenschap “%S” bewerken
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=“%S” uitschakelen
+css.tip.Disable_Prop=Eigenschap “%S” uitschakelen
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=“%S” verwijderen
+css.tip.Delete_Prop=Eigenschap “%S” verwijderen
+# Console context menu labels.
+BreakOnThisError=Afbreken bij deze fout
+console.menu.tip.Break_On_This_Error=Uitvoeren JavaScript stoppen zodra deze fout optreedt
+BreakOnAllErrors=Afbreken bij alle fouten
+console.menu.tip.Break_On_All_Errors=Uitvoeren JavaScript stoppen zodra een fout optreedt
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Throw/Catch volgen
+script.option.tip.Track_Throw_Catch=Uitzonderingen volgen zelfs als ze worden gevangen door try/catch-blokken
+UseLastLineForEvalName=Laatste bronregel voor eval() namen gebruiken
+UseMD5ForEvalName=MD5 voor eval() namen gebruiken
+# Breakpoints side panel
+Breakpoints=Afbreekpunten
+ErrorBreakpoints=Foutafbreekpunten
+LoggedFunctions=Gelogde functies
+EnableAllBreakpoints=Alle afbreekpunten inschakelen
+breakpoints.option.tip.Enable_All_Breakpoints=Alle afbreekpunten in lijst inschakelen
+DisableAllBreakpoints=Alle afbreekpunten uitschakelen
+breakpoints.option.tip.Disable_All_Breakpoints=Alle afbreekpunten in lijst uitschakelen
+ClearAllBreakpoints=Alle afbreekpunten verwijderen
+breakpoints.option.tip.Clear_All_Breakpoints=Alle afbreekpunten in lijst verwijderen
+ConditionInput=Dit afbreekpunt zal alleen stoppen als deze expressie waar is:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Afbreekpunt verwijderen
+breakpoints.tip.Remove_Breakpoint=Afbreekpunt verwijderen
+breakpoints.Disable_Breakpoint=Afbreekpunt uitschakelen
+breakpoints.tip.Disable_Breakpoint=Afbreekpunt uitschakelen
+breakpoints.Enable_Breakpoint=Afbreekpunt inschakelen
+breakpoints.tip.Enable_Breakpoint=Afbreekpunt inschakelen
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Doorgaan
+script.balloon.Disable=Uitschakelen
+ScriptsFilterStatic=Statische scripts weergeven
+ScriptsFilterEval=Statische en evaluatiescripts weergeven
+ScriptsFilterEvent=Statische en gebeurtenisscripts weergeven
+ScriptsFilterAll=Statische, evaluatie- en gebeurtenisscripts weergeven
+ScriptsFilterStaticShort=statisch
+ScriptsFilterEvalShort=evaluaties
+ScriptsFilterEventShort=gebeurtenissen
+ScriptsFilterAllShort=alles
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Alles uitklappen
+callstack.tip.Expand_All=Alle stack frame-functies uitbreiden
+callstack.Collapse_All=Alles inklappen
+callstack.tip.Collapse_All=Alle stack frame-functies inklappen
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames worden alleen weergegeven wanneer de scriptuitvoer is gestopt.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Door gebruiker gedefinieerde eigenschappen weergeven
+dom.option.tip.Show_User_Props=Door gebruiker gedefinieerde objecteigenschappen weergeven
+ShowUserFuncs=Door gebruiker gedefinieerde functies weergeven
+dom.option.tip.Show_User_Funcs=Door gebruiker gedefinieerde objectmethodes weergeven
+ShowDOMProps=DOM-eigenschappen weergeven
+dom.option.tip.Show_DOM_Props=In de DOM gespecificeerde eigenschappen weergeven
+ShowDOMFuncs=DOM-functies weergeven
+dom.option.tip.Show_DOM_Funcs=In de DOM gespecificeerde functies weergeven
+ShowDOMConstants=DOM-constanten weergeven
+dom.option.tip.Show_DOM_Constants=In de DOM gespecificeerde contanten weergeven
+ShowInlineEventHandlers=Inline-eventhandlers weergeven
+ShowInlineEventHandlersTooltip=Beschikbare inline-eventhandlers die geen associatie met een functie hebben weergeven.
+ShowOwnProperties=Alleen eigen eigenschappen weergeven
+ShowOwnPropertiesTooltip=Prototypeketen niet weergeven
+ShowEnumerableProperties=Alleen opsombare eigenschappen weergeven
+ShowEnumerablePropertiesTooltip=Niet-opsombare eigenschappen niet weergeven
+NoMembersWarning=Er zijn voor dit object geen eigenschappen weer te geven
+NewWatch=Nieuwe watchexpressie…
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Watch toevoegen
+watch.tip.Add_Watch=De selectie/het object aan het zijpaneel Volgen toevoegen voor observatie
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Bron kopiëren
+script.tip.Copy_Source_Code=De geselecteerde broncode naar het klembord kopiëren
+Use_hash_plus_number_to_go_to_line=Gebruik #<getal> om naar de regel te gaan
+CopyValue=Waarde kopiëren
+dom.tip.Copy_Value=De eigenschapswaarde naar het klembord kopiëren
+Copy_Name=Naam kopiëren
+dom.tip.Copy_Name=De eigenschapsnaam naar het klembord kopiëren
+Copy_Path=Pad kopiëren
+dom.tip.Copy_Path=Het eigenschapspad kopiëren
+NewProperty=Nieuwe eigenschap…
+EditProperty=Eigenschap bewerken…
+dom.tip.Edit_Property=De eigenschapswaarde bewerken
+EditVariable=Variabele bewerken…
+stack.tip.Edit_Variable=De variabele-waarde bewerken
+EditWatch=Watch bewerken…
+watch.tip.Edit_Watch=De volgexpressie-waarde bewerken
+DeleteProperty=Eigenschap verwijderen
+dom.tip.Delete_Property=De eigenschap verwijderen
+DeleteWatch=Watch verwijderen
+DeleteAllWatches=Alle volgopdrachten wissen
+watch.tip.Delete_Watch=De volgexpressie verwijderen
+watch.tip.Delete_All_Watches=Alle volguitdrukkingen wissen
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Afbreekpunt instellen
+script.tip.Set_Breakpoint=Wisselt de instelling van een afbreekpunt op de huidige regel
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Afbreekpuntvoorwaarde bewerken…
+breakpoints.tip.Edit_Breakpoint_Condition=Voorwaarde waaronder dit afbreekpunt de JavaScript-uitvoering stopt bewerken
+NoBreakpointsWarning=Er zijn in deze pagina geen afbreekpunten ingesteld.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Alleen toegepaste stijlen weergeven
+style.option.tip.Only_Show_Applied_Styles=Alleen stijlen die worden toegepast op het element weergeven
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=User Agent CSS weergeven
+style.option.tip.Show_User_Agent_CSS=Ook de door de user agent gedefinieerde CSS weergeven
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Kleuren als Hex
+computed.option.tip.Colors_As_Hex=Kleuren in hexadecimale opmaak weergeven
+computed.option.label.Colors_As_RGB=Kleuren als RGB
+computed.option.tip.Colors_As_RGB=Kleuren in RGB-opmaak weergeven
+computed.option.label.Colors_As_HSL=Kleuren als HSL
+computed.option.tip.Colors_As_HSL=Kleuren in HSL-opmaak weergeven
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=:active pseudo-class-stijlen weergeven
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=:hover pseudo-class-stijlen weergeven
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=:focus pseudo-class-stijlen weergeven
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Declaratie inspecteren
+css.tip.Inspect_Declaration=De declaratie van dit lettertype inspecteren
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Beknopte eigenschappen uitbreiden
+css.option.tip.Expand_Shorthand_Properties=CSS-snelschrifteigenschappen naar hun componenten uitbreiden
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Alfabetisch schikken
+computed.option.tip.Sort_Alphabetically=De stijlen op hun naam sorteren/de stijlen in categorieën groeperen
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Mozilla-specifieke stijlen weergeven
+computed.option.tip.Show_Mozilla_Specific_Styles=Ook stijlen voorafgegaan door -moz weergeven
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=Dit element heeft door de gebruiker gedefinieerde regels.
+script.Type_any_key_to_filter_list=Druk op een toets om de lijst te filteren
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=opvulling
+LayoutBorder=rand
+LayoutMargin=marge
+LayoutPosition=positie
+LayoutAdjacent=aanliggend
+position=positie
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Linialen en richters tonen
+layout.option.tip.Show_Rulers=Liniaal en geleiders op de pagina weergeven bij aanwijzen van delen van het opmaakveld
+# Net panel
+Loading=Laden…
+Headers=Headers
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Verzoeklijst leegmaken
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Header resetten
+net.header.tip.Reset_Header=Headerweergave resetten
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=Aangevraagde URL en gebruikte HTTP-methode.
+net.header.Status=Status
+net.header.Status_Tooltip=Status van het ontvangen antwoord.
+net.header.Domain=Domein
+net.header.Domain_Tooltip=Domein van de uitgevoerde aanvraag.
+net.header.Size=Omvang
+net.header.Size_Tooltip=Omvang van het ontvangen antwoord.
+net.header.Timeline=Tijdslijn
+net.header.Timeline_Tooltip=Gedetailleerde tijdsinformatie over de lijn aanvraag-antwoord.
+net.header.Local_IP=Lokaal IP-adres
+net.header.Local_IP_Tooltip=Lokaal IP-adres en poortnummer waaraan het verzoek is verbonden.
+net.header.Remote_IP=IP-adres op afstand
+net.header.Remote_IP_Tooltip=IP-adres op afstand en poortnummer waaraan het verzoek is verbonden.
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=Het URL-protocol dat wordt gebruikt om de hulpbron op het web te vinden.
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=XHR-afbreekpunten
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Afbreken op XHR
+net.tip.Break_On_XHR=JavaScript-uitvoering stoppen zodra een XMLHttpRequest wordt gedaan
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=bron bekijken
+net.headers.pretty_print=mooie afdruk
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Media
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Post
+Put=Put
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Antwoord
+URLParameters=Parameters
+Cache=Cache
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Algemene info
+fontviewer.Meta_Data=Metagegevens
+fontviewer.view_source=bron bekijken
+fontviewer.Preview=Voorbeeld
+fontviewer.view_characters=tekens bekijken
+fontviewer.pretty_print=mooie afdruk
+fontviewer.view_sample=voorbeeld bekijken
+fontviewer.uniqueid=Unieke ID
+fontviewer.vendor=Leverancier
+fontviewer.license=Licentie
+fontviewer.description=Beschrijving
+fontviewer.copyright=Auteursrecht
+fontviewer.credits=Credits
+fontviewer.trademark=Handelsmerk
+fontviewer.licensee=Licentiehouder
+fontviewer.extension=Extensie
+fontviewer.pangram=Pa’s wijze lynx bezag vroom het fikse aquaduct
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Op sleutel sorteren
+jsonviewer.do_not_sort=Niet sorteren
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=“%S” als JSON kopiëren
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Verzoekheaders
+ResponseHeaders=Antwoordheaders
+CachedResponseHeaders=Antwoordheaders uit cache
+PostRequestHeaders=Headers uit uploadstream opvragen
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=Het verzoek is rechtstreeks vanuit de cache beantwoord, dus we hebben geen antwoord van de server. Zie hieronder het gechachete antwoord.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=De grens van het logboek van Firebug is bereikt. %1$S gebeurtenis niet weergegeven.;De grens van het logboek van Firebug is bereikt. %1$S gebeurtenissen niet weergegeven.
+LimitPrefs=Voorkeuren
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Pas %S aan om de limiet te wijzigen
+Refresh=Vernieuwen
+panel.tip.Refresh=Paneelweergave verversen
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=In nieuw tabblad openen
+firebug.tip.Open_In_Tab=URL in een nieuw browsertabblad openen
+Open_Response_In_New_Tab=Antwoord in nieuw tabblad openen
+net.tip.Open_Response_In_New_Tab=Antwoord in een nieuw browsertabblad openen
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Profileren
+ProfilerStarted=Het profileerhulpmiddel draait momenteel. Klik opnieuw op ‘Profileren’ om de rapportage te zien.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S aanroep);(%1$Sms, %2$S aanroepen)
+NothingToProfile=Geen activiteit om te profileren.
+PercentTooltip=Percentage tijd gespendeerd aan deze functie.
+CallsHeaderTooltip=Aantal keer dat deze functie is aangeroepen.
+OwnTimeHeaderTooltip=Tijd van activiteit van functie, exclusief geneste aanroepen.
+TimeHeaderTooltip=Tijd van activiteit van functie, inclusief geneste aanroepen.
+AvgHeaderTooltip=Gemiddelde tijd, inclusief functieaanroepen.
+MinHeaderTooltip=Minimale tijd, inclusief functieaanroepen.
+MaxHeaderTooltip=Maximale tijd, inclusief functieaanroepen.
+ProfileButton.Enabled.Tooltip=JavaScript-uitvoertijd voor profileren.
+ProfileButton.Disabled.Tooltip=JavaScript-uitvoertijd voor profileren (scriptvenster dient te zijn ingeschakeld).
+Function=Functie
+Percent=Procent
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Aanroepen
+OwnTime=Eigen tijd
+Time=Tijd
+Avg=Gem.
+Min=Min.
+Max=Max.
+File=Bestand
+# Support for standard actions.
+Copy=Kopiëren
+Cut=Knippen
+Remove=Verwijderen
+Delete=Verwijderen
+Paste=Plakken
+SelectAll=Alles selecteren
+html.Copy_Node=%S kopiëren
+html.tip.Copy_Node=De %S-node en alle inhoud naar het klembord kopiëren
+CopyInnerHTML=innerHTML kopiëren
+html.tip.Copy_innerHTML=Inhoud van het element naar het klembord kopiëren
+CopyXPath=XPath kopiëren
+html.tip.Copy_XPath=XPath van het element naar het klembord kopiëren
+Copy_CSS_Path=CSS-pad kopiëren
+html.tip.Copy_CSS_Path=Het CSS-pad van het element naar het klembord kopiëren
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Locatie kopiëren
+clipboard.tip.Copy_Location=De URL van de objectlocatie naar het klembord kopiëren
+CopyURLParameters=URL-parameters kopiëren
+net.tip.Copy_URL_Parameters=URL-parameters naar klembord kopiëren
+CopyPOSTParameters=POST-parameters kopiëren
+net.tip.Copy_POST_Parameters=POST-parameters naar klembord kopiëren
+CopyLocationParameters=Locatie met parameters kopiëren
+net.tip.Copy_Location_Parameters=URL inclusief parameters naar het klembord kopiëren
+CopyRequestHeaders=Verzoekheaders kopiëren
+net.tip.Copy_Request_Headers=Verzoekheaders naar het klembord kopiëren
+CopyResponseHeaders=Antwoordheaders kopiëren
+net.tip.Copy_Response_Headers=Antwoordheaders naar het klembord kopiëren
+CopyResponse=Antwoordbody kopiëren
+net.tip.Copy_Response=Antwoordtekst naar het klembord kopiëren
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Foutmelding kopiëren
+console.menu.tip.Copy_Error=Foutinformatie naar het klembord kopiëren
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Functie kopiëren
+dom.tip.Copy_Source=Broncode van de functie naar het klembord kopiëren
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Aanroepen loggen in “%S”
+dom.tip.Log_Calls_To_Function=Aanroepen naar de functie “%S” in het consolepaneel loggen
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Gebeurtenissen loggen
+html.tip.Show_Events_In_Console=Gebeurtenisinformatie naar de console loggen
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Ingeschakeld
+panel.tip.Enabled=Paneelactivatie wisselen
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Opdrachtregelpop-up weergeven
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=De Firebugconsole ondersteunt ‘%S’ niet
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=De Firebug-opdrachtregel ondersteunt ‘%S’ niet
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Huidig venster:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Afbreken op alle fouten uitschakelen
+console.Break_On_All_Errors=Afbreken op alle fouten
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Afbreken op deze fout
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Pijltoetsen, Tab of Enter gebruiken
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript is uitgeschakeld in het voorkeursvenster van firefox. Indien u het consolevenster wilt gebruiken dient u deze optie in te schakelen via ‘Extra’ -> ‘Opties’ -> ‘Inhoud’ -> ‘JavaScript inschakelen’
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=Er staan te veel elementen in de reeks om op de pagina te accentueren (de huidige grens is %S).\\nZie de voorkeursinstelling ‘extensions.firebug.multiHighlightLimit’.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=De Firebug-opdrachtregel is uitgeschakeld voor XML-pagina’s. U kunt <a>omschakelen naar HTML</a> om deze in te schakelen.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Antwoordbody
+net.sizeinfo.Post_Body=Postbody
+net.sizeinfo.Total_Sent=Totaal verzonden
+net.sizeinfo.Total_Received=Totaal ontvangen
+net.sizeinfo.Including_HTTP_Headers=Inclusief HTTP-headers
+net.ActivationMessage=Netpaneel ingeschakeld. Verzoeken tijdens inactiviteit van het netpaneel worden niet weergegeven.
+net.responseSizeLimitMessage=De limiet van de antwoordomvang van Firebug is bereikt. Klik <a>hier</a> om het gehele antwoord in een nieuwe Firefoxtabblad te openen.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=De omvangslimiet van Firebugverzoeken is bereikt door Firebug.
+net.Break_On_XHR=Afbreken op XHR
+net.label.Parameters=Parameters
+net.label.Parts=Delen
+net.label.Source=Bron
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Opnieuw verzenden
+net.tip.Resend=Verzoek opnieuw verzenden
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Browsercache uitschakelen
+net.option.tip.Disable_Browser_Cache=HTTP-cache van de browser uitschakelen
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Paint-gebeurtenissen weergeven
+net.option.tip.Show_Paint_Events=MozAfterPaint-gebeurtenissen weergeven als groene lijnen op de tijdlijn
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=BFCache-antwoorden weergeven
+net.option.tip.Show_BFCache_Responses=Antwoorden van de Back-Forward Cache worden ook weergegeven.
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Afbreken op volgende
+script.Disable_Break_On_Next=Afbreken op volgende uitschakelen
+ShowHttpHeaders=HTTP-headers weergeven
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S verzoek;%1$S verzoeken
+FromCache=uit cache
+StopLoading=Laden stoppen
+net.tip.Stop_Loading=Laden verzoek stoppen
+LargeData=(zeer veel data)
+ShowComputedStyle=Berekende stijl weergeven
+StyleGroup-text=Tekst
+StyleGroup-background=Achtergrond
+StyleGroup-box=Boxmodel
+StyleGroup-layout=Opmaak
+StyleGroup-other=Overig
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Kleur kopiëren
+css.tip.Copy_Color=Kleur naar het klembord kopiëren
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Afbeeldingslocatie kopiëren
+css.tip.Copy_Image_Location=Afbeeldings-URL naar het klembord kopiëren
+OpenImageInNewTab=Afbeelding in nieuw tabblad openen
+css.tip.Open_Image_In_New_Tab=Afbeelding in een nieuw browsertabblad openen
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Werkbalkstack weglaten
+callstack.option.tip.Omit_Object_Path_Stack=Objectpadstack niet weergeven
+Load_Original_Source=Oorspronkelijke bron laden
+css.tip.Load_Original_Source=Wijzigingen negeren en oorspronkelijke CSS laden
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Regeldeclaratie kopiëren
+css.tip.Copy_Rule_Declaration=Regel inclusief alle eigenschappen naar het klembord kopiëren
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Stijldeclaratie kopiëren
+css.tip.Copy_Style_Declaration=Regeleigenschappen naar het klembord kopiëren
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S fout;%1$S fouten
+moduleManager.title=%S venster is uitgeschakeld
+moduleManager.desc3=Gebruik het contextmenu van het statusbalkpictogram van Firebug om alle vensters in- en uit te schakelen. Gebruik het kleine menu op het venstertabblad voor individueel vensterbeheer:
+moduleManager.Enable=Inschakelen
+Suspend_Firebug=Firebug onderbreken
+Resume_Firebug=Verdergaan met Firebug
+Reset_Panels_To_Disabled=Vensters terugzetten op uitgeschakeld
+Open_Console=Console openen
+Open_Console_Tooltip=De Firebug volgconsole openen.
+Scope_Chain=Zoekbereik
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=Met
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Aanroepen
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Venster
+Logs=Logbestanden
+Options=Opties
+Copy_Stack=Stapel kopiëren
+Copy Exception=Uitzondering kopiëren
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blokkering
+requestinfo.Resolving=DNS opzoeken
+requestinfo.Connecting=Verbinding leggen
+requestinfo.Sending=Verzenden
+requestinfo.Waiting=Wachten
+requestinfo.Receiving=Ontvangen
+requestinfo.ContentLoad=‘DOMContentLoaded’ (gebeurtenis)
+requestinfo.WindowLoad=‘load’ (gebeurtenis)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Verzoekstarttijd sinds aanvang
+requestinfo.phases.label=Verzoekfasen start en verstreken tijd gerelateerd aan de verzoekstart:
+requestinfo.timings.label=Gebeurtenistijd gerelateerd aan verzoekstart:
+search.Firebug_Search=Firebug zoeken
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Volgende
+search.tip.Next=Naar de volgende overeenkomst zoeken
+search.Previous=Vorige
+search.tip.Previous=Naar de vorige overeenkomst zoeken
+search.Case_Sensitive=Hoodlettergevoeligheid afdwingen
+search.tip.Case_Sensitive=Hoofdlettergevoelig zoeken
+search.Case_Insensitive=Niet hoofdlettergevoelig
+search.tip.Case_Insensitive=Niet hoofdlettergevoelig zoeken
+search.Multiple_Files=Meerdere bestanden
+search.tip.Multiple_Files=In alle bestanden gerelateerd aan dit paneel zoeken
+search.Use_Regular_Expression=Reguliere expressie gebruiken
+search.tip.Use_Regular_Expression=De ingevoerde tekst als reguliere expressie interpreteren bij zoeken
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS-selectie
+search.net.Headers=Headers
+search.net.Parameters=Parameters
+search.net.Response_Bodies=Antwoordgedeelten
+search.net.tip.Response_Bodies=Ook in antwoordtekst zoeken
+firebug.console.Persist=Vasthouden
+firebug.console.Do_Not_Clear_On_Reload2=Paneel niet wissen bij herladen
+firebug.console.Show_All_Log_Entries=Alle gelogde gebeurtenissen weergeven
+firebug.console.Errors=Fouten
+firebug.console.Filter_by_Errors=Filteren op fouten
+firebug.console.Warnings=Waarschuwingen
+firebug.console.Filter_by_Warnings=Filteren op waarschuwingen
+firebug.console.Info=Info
+firebug.console.Filter_by_Info=Filteren op info
+firebug.console.Debug_Info=Foutopsporingsinfo
+firebug.console.Filter_by_Debug_Info=Filteren op foutopsporingsinfo
+firebug.Deactivate_Firebug=Firebug deactiveren
+firebug.tip.Deactivate_Firebug=Firebug deactiveren op de huidige website
+firebug.ShowFirebug=Firebug openen
+firebug.menu.tip.Open_Firebug=Firebug-gebruikersinterface weergeven
+firebug.HideFirebug=Firebug verbergen
+firebug.menu.tip.Minimize_Firebug=Firebug minimaliseren, maar actief houden
+firebug.FocusFirebug=Focussen op Firebug-venster
+firebug.menu.tip.Focus_Firebug=Focussen op ontkoppeld Firebug-venster
+firebug.menu.Enable_All_Panels=Alle vensters inschakelen
+firebug.menu.tip.Enable_All_Panels=Alle activeerbare panelen inschakelen
+firebug.menu.Disable_All_Panels=Alle vensters uitschakelen
+firebug.menu.tip.Disable_All_Panels=Alle activeerbare panelen uitschakelen
+firebug.menu.Customize_shortcuts=Sneltoetsen aanpassen
+firebug.menu.tip.Customize_Shortcuts=Interne toetsverbinding van Firebug aanpassen
+firebug.Options=Opties
+firebug.menu.tip.Options=Algemene Firebug-voorkeuren
+firebug.menu.Enable_Accessibility_Enhancements=Toegankelijkheidsverbeteringen inschakelen
+firebug.menu.tip.Enable_Accessibility_Enhancements=Volledige controle via toetsenbord en overige toegankelijkheidsverbeteringen inschakelen
+firebug.menu.Activate_Same_Origin_URLs2=Activeren voor URL’s van identieke oorsprong
+firebug.menu.tip.Activate_Same_Origin_URLs=Firebug activeren voor URL’s waarvoor het identieke oorsprongsbeleid van toepassing is
+firebug.menu.Reset_All_Firebug_Options=Alle Firebugopties resetten
+firebug.menu.tip.Reset_All_Firebug_Options=Alle Firebug-voorkeuren terugzetten naar hun standaardwaarden
+firebug.menu.Firebug_Online=Firebug Online
+firebug.menu.tip.Firebug_Online=Aan Firebug gerelateerde websites
+firebug.menu.Extensions=Firebug-extensies…
+firebug.menu.tip.Extensions=Firebug-extensies downloaden en installeren
+firebug.menu.Vertical_Panels=Verticale panelen
+firebug.menu.tip.Vertical_Panels=De opmaak van de hoofd- en zijpanelen van Firebug wisselen
+firebug.menu.Show_Info_Tips=Infotips weergeven
+firebug.menu.tip.Show_Info_Tips=Pop-ups met informatie over het aangewezen element weergeven
+firebug.Show_Error_Count=Aantal fouten weergeven
+firebug.menu.tip.Show_Error_Count=Aantal in de console gelogde fouten weergeven
+firebug.TextSize=Tekstgrootte
+firebug.menu.tip.Text_Size=In Firebug gebruikte tekstgrootte wijzigen
+firebug.IncreaseTextSize=Tekst vergroten
+firebug.menu.tip.Increase_Text_Size=In Firebug gebruikte tekstafmeting vergroten
+firebug.DecreaseTextSize=Tekst verkleinen
+firebug.menu.tip.Decrease_Text_Size=In Firebug gebruikte tekstafmeting verkleinen
+firebug.NormalTextSize=Normale tekstgrootte
+firebug.menu.tip.Normal_Text_Size=In Firebug gebruikte tekstgrootte op standaardwaarde terugzetten
+firebug.Website=Firebug-website…
+firebug.menu.tip.Website=De officiële Firebug-website openen
+firebug.help=Help…
+firebug.menu.tip.help=De pagina met koppelingen naar pagina’s met uitleg over Firebug openen
+firebug.Documentation=Documentatie…
+firebug.menu.tip.Documentation=De documentatie over Firebug openen
+firebug.KeyShortcuts=Sneltoetsen…
+firebug.menu.tip.Key_Shortcuts=De lijst met in Firebug beschikbare muis- en sneltoetsen openen
+firebug.Forums=Discussiegroep…
+firebug.menu.tip.Forums=Discussiewebsite openen
+firebug.Issues=Probleem volgen…
+firebug.menu.tip.Issues=Website voor gerapporteerde problemen openen
+firebug.Donate=Doneren…
+firebug.menu.tip.Donate=Website voor bijdragen openen
+firebug.About=Over…
+firebug.menu.tip.About=Informatie over Firebug
+ProfileJavaScript=Profiel-JavaScript
+firebug.menu.tip.Profile_JavaScript=Uitvoeringstijd profiel-JavaScript
+firebug.Search=Zoeken
+firebug.menu.tip.Search=Focussen op zoekveld
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Opdracht opnieuw ingeven
+firebug.shortcut.tip.reenterCommand=Laatste opdracht opnieuw in opdrachtregel invoeren
+firebug.shortcut.toggleInspecting.label=Inspectie wisselen
+firebug.shortcut.tip.toggleInspecting=Inspecteur in-/uitschakelen
+firebug.shortcut.toggleQuickInfoBox.label=Snelle Infobox wisselen
+firebug.shortcut.tip.toggleQuickInfoBox=Weergave van een paneel met informatie over het momenteel geïnspecteerde element in-/uitschakelen
+firebug.shortcut.toggleProfiling.label=Profileren wisselen
+firebug.shortcut.tip.toggleProfiling=JavaScript Profiler in-/uitschakelen
+firebug.shortcut.focusCommandLine.label=Op opdrachtregel focussen
+firebug.shortcut.tip.focusCommandLine=Firebug openen en focussen op de opdrachtregel / de opdrachtregelpop-up wisselen
+firebug.shortcut.focusFirebugSearch.label=Op Firebug zoeken focussen
+firebug.shortcut.tip.focusFirebugSearch=Focussen op het zoekveld
+firebug.shortcut.focusWatchEditor.label=Op Volgbewerker focussen
+firebug.shortcut.tip.focusWatchEditor=Wisselen naar het scriptpaneel en focussen op het invoerveld voor een nieuwe volgexpressie
+firebug.shortcut.focusLocation.label=Op locatie focussen
+firebug.shortcut.tip.focusLocation=Locatiemenu openen
+firebug.shortcut.nextObject.label=Volgende object
+firebug.shortcut.tip.nextObject=Volgend object in het elementpad van een paneel selecteren
+firebug.shortcut.previousObject.label=Vorige object
+firebug.shortcut.tip.previousObject=Vorig object in het elementpad van een paneel selecteren
+firebug.shortcut.customizeFBKeys.label=Firebug-toetsen aanpassen
+firebug.shortcut.tip.customizeFBKeys=Dialoogvenster voor Firebug-sneltoetsverbindingen openen
+firebug.shortcut.detachFirebug.label=Firebug in nieuw venster openen
+firebug.shortcut.tip.detachFirebug=Firebug ontkoppelen naar een eigen venster
+firebug.shortcut.leftFirebugTab.label=Naar linker Firebug-venster wisselen
+firebug.shortcut.tip.leftFirebugTab=Naar Firebug-paneel links wisselen
+firebug.shortcut.rightFirebugTab.label=Naar rechter Firebug-venster wisselen
+firebug.shortcut.tip.rightFirebugTab=Naar Firebug-paneel rechts wisselen
+firebug.shortcut.toggleFirebug.label=Firebug openen
+firebug.shortcut.tip.toggleFirebug=Firebug-gebruikersinterface openen/minimaliseren
+firebug.shortcut.closeFirebug.label=Firebug deactiveren
+firebug.shortcut.tip.closeFirebug=Firebug voor de huidige website deactiveren
+firebug.shortcut.previousFirebugTab.label=Vorige Firebug-tabblad openen
+firebug.shortcut.tip.previousFirebugTab=Naar het hiervoor geselecteerde Firebug-paneel wisselen
+firebug.shortcut.clearConsole.label=Console opschonen
+firebug.shortcut.tip.clearConsole=Alle logverslagen uit de consoel verwijderen
+firebug.shortcut.openTraceConsole.label=Volgconsole openen
+firebug.shortcut.tip.openTraceConsole=FBTrace-console openen
+firebug.shortcut.navBack.label=Terug
+firebug.shortcut.tip.navBack=Naar het voorgaande paneel of locatielijstonderdeel in de navigatiegeschiedenis wisselen
+firebug.shortcut.navForward.label=Vooruit
+firebug.shortcut.tip.navForward=Naar het volgende paneel of locatielijstonderdeel in de navigatiegeschiedenis wisselen
+firebug.shortcut.increaseTextSize.label=Tekst vergroten
+firebug.shortcut.tip.increaseTextSize=Tekstafmeting in Firebug vergroten
+firebug.shortcut.decreaseTextSize.label=Tekst verkleinen
+firebug.shortcut.tip.decreaseTextSize=Tekstafmeting in Firebug verkleinen
+firebug.shortcut.normalTextSize.label=Normale tekstgrootte
+firebug.shortcut.tip.normalTextSize=Tekstgrootte in Firebug terugzetten naar standaardwaarde
+firebug.shortcut.help.label=Hulp openen
+firebug.shortcut.tip.help=Pagina met veelgestelde vragen openen
+firebug.shortcut.toggleBreakOn.label=Afbreken op… wisselen
+firebug.shortcut.tip.toggleBreakOn=Scriptuitvoer bij specifieke gebeurtenissen in een paneel stoppen in-/uitschakelen
+firebug.panel_selector=Paneelselectie
+customizeShortcuts=Firebug-sneltoetsen
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=paneelhulpmiddelen
+a11y.labels.firebug_panels=Firebug-panelen
+a11y.labels.firebug_side_panels=Firebug-zijpanelen
+a11y.labels.firebug_window=Firebug-venster
+a11y.labels.firebug_status=Firebug-status
+a11y.labels.reset=resetten
+a11y.labels.reset_shortcut=%S snelkoppeling resetten
+aria.labels.inactive_panel=inactief paneel
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=logrijen
+a11y.labels.call_stack=stapel aanroepen
+a11y.labels.document_structure=documentstructuur
+a11y.labels.title_panel=%S paneel
+a11y.labels.title_side_panel=%S zijpaneel
+a11y.labels.cached=in cache
+aria.labels.stack_trace=stapel volgen
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=verdikking
+a11y.layout.border=rand
+a11y.layout.margin=marge
+a11y.layout.position=positie
+a11y.layout.position_top=bovenaan plaatsen
+a11y.layout.position_right=rechts plaatsen
+a11y.layout.position_bottom=onderaan plaatsen
+a11y.layout.position_left=links plaatsen
+a11y.layout.margin_top=marge bovenzijde
+a11y.layout.margin_right=marge rechts
+a11y.layout.margin_bottom=marge onderzijde
+a11y.layout.margin_left=marge links
+a11y.layout.border_top=rand bovenzijde
+a11y.layout.border_right=rand rechts
+a11y.layout.border_bottom=rand onderzijde
+a11y.layout.border_left=rand links
+a11y.layout.padding_top=verdikking bovenzijde
+a11y.layout.padding_right=verdikking rechts
+a11y.layout.padding_bottom=verdikking onderzijde
+a11y.layout.padding_left=verdikking links
+a11y.layout.top=boven
+a11y.layout.right=rechts
+a11y.layout.bottom=onder
+a11y.layout.left=links
+a11y.layout.width=breedte
+a11y.layout.height=hoogte
+a11y.layout.size=omvang
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=veldomvang
+a11y.layout.clientBoundingRect=begrenzende clientrechthoek
+a11y.descriptions.press_enter_to_edit_values=druk op enter gevolgd door tab om individuele waarden te bewerken
+a11y.labels.style_rules=stijlregels
+aria.labels.inherited_style_rules=geërfde stijlregels
+a11y.labels.computed_styles=berekende stijlen
+a11y.labels.dom_properties=DOM-eigenschappen
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=inline bewerken
+a11y.labels.value_for_attribute_in_element=waarde voor %S attribuut in %S element
+a11y.labels.attribute_for_element=attribuut voor %S element
+a11y.labels.text_contents_for_element=tekstinhoud voor %S element
+a11y.labels.defined_in_file=gedefinieerd in %S
+a11y.labels.declarations_for_selector=stijlverklaringen voor selectie “%S”
+a11y.labels.property_for_selector=CSS-eigenschap voor selectie: %S
+a11y.labels.value_property_in_selector=%S eigenschapwaarde voor selectie %S
+a11y.labels.css_selector=CSS-selectie
+a11y.labels.source_code_for_file=broncode voor bestand %S
+a11y.labels.press_enter_to_add_new_watch_expression=druk op enter om een nieuwe volguitdrukking toe te voegen
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=genegeerd
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=heeft een voorwaardelijk afbreekpunt
+a11y.updates.has_disabled_break_point=heeft een uitgeschakeld afbreekpunt
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script gepauzeerd op regel %S in %S, bestand %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=overeenkomst gevonden voor %S in %S logrijen
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=overeenkomst gevonden voor %S op regel %S in %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=overeenkomst gevonden voor %S in %S element op pad %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=overeenkomst gevonden voor %S in attribuut %S=%S van %S element op pad %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=overeenkomst gevonden voor %S in tekstinhoud: %S van %S element op pad %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=overeenkomst gevonden voor %S in selectie %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=overeenkomst gevonden voor “%S” in stijldeclaratie %S in selectie %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=overeenkomst gevonden voor %S in DOM-eigenschap %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=overeenkomst gevonden voor “%S” in %S, %S: %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=overeenkomst gevonden voor %S in netsamenvattingsrij: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=geen overeenkomsten gevonden voor “%S”
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Weet u zeker dat u alle Firebug-opties naar de standaardwaarden wilt terugzetten?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Uw bestaande CSS-bewerkingen worden geannuleerd.\\nWeet u zeker dat u het brondocument wilt bewerken?
+# Console messages
+warning.Console_must_be_enabled=Console dient te zijn ingeschakeld
+warning.Command_line_blocked?=Opdrachtregel geblokkeerd?
+warning.dollar_change=De betekenis van de console-opdrachtregelfunctie $() is gewijzigd van $=getElementById(id) in $=querySelector(selecteur). U kunt wellicht $(“#%S”) proberen.
+message.Reload_to_activate_window_console=Herladen om de vensterconsole te activeren
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Pagina herladen om broncode op te halen voor
+message.The_resource_from_this_URL_is_not_text=De bron van deze URL is geen tekst
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Terug naar dit paneel
+firebug.history.Stay_on_this_panel=Op dit paneel blijven
+firebug.history.Go_forward_to_this_panel=Vooruit naar dit paneel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Terug
+firebug.history.Go_forward=Vooruit
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Het scriptvenster was inactief tijdens het laden van de pagina
+script.suggestion.inactive_during_page_load2=<herlaad</a> om alle bronnen te zien
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=JavaScript is niet ingeschakeld
+script.suggestion.javascript_not_enabled=Zie Firefox > Extra > Opties > Inhoud > JavaScript inschakelen
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=JavaScript inschakelen en verversen
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Alle scripts zijn gefilterd
+script.suggestion.all_scripts_filtered=Zie de Scriptfilter-instelling op de werkbalk of “Chrome-bronnenoptie weergeven”
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=Systeembronnen kunnen niet worden gedebugd
+script.suggestion.no_system_source_debugging=Firebug kan momenteel niet worden gebruikt om fouten in systeembronnen op te sporen. Lees <a>issue 5110</a> voor de reden.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=Geen JavaScript op deze pagina
+script.suggestion.no_javascript2=Als <script>-labels een attribuut “type hebben”, dient dit gelijk te zijn aan “text/javascript” of “application/javascript”. Scripts dienen ook ontleedbaar (syntactisch correct) te zijn.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Foutopsporing is al aktief
+script.suggestion.debugger_active=De foutopsporing is momenteel gestopt op een afbreekpunt op een andere pagina.
+script.button.Go_to_that_page=Naar die pagina
+script.warning.debugger_not_activated=Foutopsporing niet actief
+script.suggestion.debugger_not_activated=Foutopsporing niet actief
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Sluiten
+firebug.View=Beeld
+firebug.Help=Help
+firebug.Run=Draaien
+firebug.Copy=Kopiëren
+firebug.History=Geschiedenis
+firebug.Run_the_entered_command=De ingevoerde opdracht uitvoeren
+firebug.Clear_the_Command_Editor=Opdrachtbewerker leegmaken
+firebug.Copy_the_script_as_a_bookmarklet=Script als bookmarklet kopiëren
+firebug.Insert_a_previously_entered_command=Eerder ingevoerde opdracht invoegen
+firebug.AlwaysOpenInWindow=Altijd in nieuw venster openen
+firebug.OpenWith=Met tekstbewerker openen
+firebug.menu.tip.Open_With=Inhoud in een extern bewerkingsprogramma openen
+firebug.Permissions=Websites…
+firebug.Configure_Editors=Bewerkingsprogramma’s instellen
+script.tip.Script_Type=Filteren op scripttype
+script.tip.Script_Filter_Static=Alleen met de pagina geladen scripts weergeven
+script.tip.Script_Filter_Evals=Met de pagina geladen scripts en via eval() gemaakte scripts laden
+script.tip.Script_Filter_Events=Met de pagina geladen scripts, via eval() gemaakte scripts en event listeners laden
+script.tip.Script_Filter_All=Alle soorten scripts laden
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Opnieuw uitvoeren
+script.tip.Rerun=Huidige functieaanroep-stack opnieuw uitvoeren
+script.Continue=Doorgaan
+script.tip.Continue=JavaScript-uitvoering voortzetten
+script.Step_Over=Overslaan
+script.tip.Step_Over=De volgende opdracht uitvoeren
+script.Step_Into=Springen naar
+script.tip.Step_Into=Volgende opdracht uitvoeren en naar functies springen
+script.Step_Out=Afronden
+script.tip.Step_Out=Rest van de functie uitvoeren en terugkeren naar aanroep
+firebug.RunUntil=Tot deze regel uitvoeren
+script.tip.Run_Until=JavaScript uitvoeren tot opgegeven regel
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Inspecteren
+firebug.InspectElement=Element inspecteren
+firebug.InspectElementWithFirebug=Element inspecteren met Firebug
+firebug.BreakOnErrors=Afbreken bij fouten
+firebug.InspectTooltip=Klik op een element in de pagina om dit te inspecteren
+firebug.EditHTMLTooltip=Deze HTML-code bewerken
+firebug.Profile=Profileren
+firebug.Clear=Wissen
+firebug.ClearConsole=Console wissen
+firebug.ClearTooltip=De console wissen
+firebug.All=Alles
+firebug.Images=Afbeeldingen
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Ingestelde Firebug-bewerkingen
+editors.Editor=Bewerkingsprogramma
+editors.Executable=Uitvoerbaar bestand
+editors.Launch_Arguments=Opstartargumenten
+editors.Add=Toevoegen
+editors.Remove=Verwijderen
+editors.Change=Wijzigen
+editors.Move_Up=Omhoog
+editors.Close=Sluiten
+editors.Browse=Bladeren…
+changeEditor.Editor_Configuration=Bewerkingsinstelling
+changeEditor.Name=Naam:
+changeEditor.Executable=Uitvoerbaar bestand:
+changeEditor.CmdLine=Argumenten:
+changeEditor.Supplied_arguments=Door Firebug geleverde argumenten:
+changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> Bestands-URL (als %url niet beschikbaar is wordt %file standaard toegevoegd)
+changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> Pad naar lokaal bestand (of naar de tijdelijke kopie)
+changeEditor.Line_number=<label class=\'text-link\'>%line</label> Regelnummer (indien beschikbaar)
+changeEditor.Invalid_Application_Path=Ongeldig toepassingspad
+changeEditor.Application_does_not_exist=De opgegeven toepassing bestaat niet!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Bewerken
+firebug.css.sourceEdit=Bron bewerken
+firebug.css.sourceEdit.tooltip=De stylesheetbron zoals geladen door de browser bewerken in een tekstveld
+firebug.css.liveEdit=Live bewerken
+firebug.css.liveEdit.tooltip=De stylesheetbron uit de browser bewerken in een tekstveld
+firebug.EditCSSTooltip=Deze stylesheet bewerken
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Websites worden niet onthouden in privénavigatie-modus
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Afbreeknotificaties weergeven
+firebug.breakpoint.tip.Show_Break_Notifications=Notificatie weergeven wanneer de functie Afbreken op… of het trefwoord debugger; de JavaScript-uitvoering heeft gestopt
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=U kunt afbreeknotificaties in- en uitschakelen in het <a>tabbladmenu van het paneel</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Klikken op de knop ‘Uitschakelen’ gaat boven de ‘foutopsporing’ met een uitgeschakeld afbreekpunt.
+firebug.bon.tooltip.disableDebuggerKeyword2=Maakt een uitgeschakeld afbreekpunt
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(het scriptpaneel dient te zijn ingeschakeld voor deze functie)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=Er zijn geen onderliggende objecten
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=meer
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Cirkelreferentie gedetecteerd
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item in opslag;%1$S items in opslag
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Objecteigenschappen
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(geen afrondingen)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=Het URL-object is waarschijnlijk teruggetrokken met de revokeObjectURL-methode.
+firebug.failedToPreviewImageURL=Laden ingegeven URL mislukt.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Geheugenprofileerder gestart
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Tijdens profileren toegevoegde objecten
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Resultaten geheugenprofileerder
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Gehele sessie
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(geen uitvoer)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(lege tekst)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Add-on Firecookie gedetecteerd. Deze add-on is standaard geïntegreerd in Firebug 1.10. Om problemen te voorkomen dient u Firecookie te deïnstalleren.\n\nU dient te herstarten om de deïnstallatie af te ronden.
+cookies.legacy.uninstall=Deïnstalleren
+cookies.legacy.uninstall_and_restart=Deïnstalleren en herstarten
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Opdrachtregel-API
+console.cmd.help_title_desc=Druk F1 om de onlinehulp van Firebug te openen
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Geeft een enkel element met het opgegeven ID.
+console.cmd.help.$$=Geeft een reeks elementen die overeenkomen met de opgegeven CSS-selectie.
+console.cmd.help.$x=Geeft een reeks elementen die overeenkomen met de opgegeven XPath-expressie.
+console.cmd.help.dir=Drukt een interactieve lijst met alle eigenschappen van het object af. Dit oogt identiek aan de weergave in het DOM-paneel.
+console.cmd.help.dirxml=Drukt de XML-bronnenboom van een HTML- of XML-element af. Dit oogt identiek aan de weergave in het HTML-paneel. U kunt op een node klikken om deze te inspecteren in het HTML-paneel.
+console.cmd.help.cd=Standaard zijn opdrachtregelexpressies relatief aan het bovenste niveauvenster van de pagina. Met cd() kunt u in plaats hiervan het venster van een frame in de pagina gebruiken.
+console.cmd.help.clear=Wist de console.
+console.cmd.help.copy=Kopieert de opgegeven parameter naar het klembord. Dit kan een teruggestuurde waarde van een functie of een object zijn.
+console.cmd.help.inspect=Inspecteert een object in het meest geschikte paneel, of in het paneel dat wordt opgegeven in het optionele tweede argument. De beschikbare paneelnamen zijn “html”, “stylesheet”, “script” en “dom”.
+console.cmd.help.keys=Geeft een reeks met de namen van alle eigenschappen van het object.
+console.cmd.help.values=Geeft een reeks met de waarden van alle eigenschappen van het object.
+console.cmd.help.debug=Voegt een afbreekpunt toe aan de eerste regel van een functie.
+console.cmd.help.undebug=Verwijdert het breekpunt uit de eerste regel van een functie.
+console.cmd.help.monitor=Schakelt loggen voor alle aanroepen van een functie in.
+console.cmd.help.unmonitor=Schakelt loggen voor alle aanroepen van een functie uit.
+console.cmd.help.monitorEvents=Schakelt loggen voor alle naar een object verzonden gebeurtenissen in. Het optionele tweede argument kan specifieke te loggen gebeurtenissen of gebeurtenistypen definiëren. De beschikbare gebeurtenistypen zijn “composition”, “contextmenu”, “drag”, “focus”, “form”, “key”, “load”, “mouse”, “mutation”, “paint”, “scroll”, “text”, “ui”, “xul” en “clipboard”.
+console.cmd.help.unmonitorEvents=Schakelt loggen voor alle naar een object verzonden gebeurtenissen uit. Het optionele tweede argument kan specifieke gebeurtenissen of gebeurtenisfamilies definiëren, waarvoor loggen moet worden uitgeschakeld.
+console.cmd.help.profile=Schakelt de JavaScript-profiler in. Het optionele tweede argument bevat de in de header van het profielrapport af te drukken tekst.
+console.cmd.help.profileEnd=Schakelt de JavaScript-profiler uit en drukt het rapport af.
+console.cmd.help.table=Maakt loggen van verstrekte gegevens in een tabelopmaak mogelijk. De methode neemt één vereiste parameter die tabelachtige gegevens voorstelt (reeks of reeksen of lijst met objecten). De optionele tweede parameterkan worden gebruikt om te loggen kolommen en/of eigenschappen op te geven.
+console.cmd.help.$0=Vertegenwoordigt het laatste via de Inspector geselecteerde element.
+console.cmd.help.$1=Vertegenwoordigt het voorlaatste via de Inspector geselecteerde element.
+console.cmd.help.$n=Geeft één van de vijf laatste via de Inspector geselecteerde elementen. Deze methode neemt een vereiste parameter, die de index van het element vertegenwoordigt (beginnend bij 0).
+console.cmd.help.help=Geeft hulptekst weer voor alle beschikbare opdrachten.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Voor deze opdracht is geen hulppagina beschikbaar.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type een aangepaste selecteur of rechtsklik op de CSS-regel en kies <b>Overeenkomstige elementen ophalen</b>.
+css.selector.noSelectionResults=Geen overeenkomstige elementen
+css.selector.selectorError=Selectie mislukt:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elementen
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Geeft elementen weer die met een CSS-selecteur overeenkomen
+css.selector.TryASelector=Een selecteur proberen…
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Overeenkomstige elementen ophalen
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Uitvoeren opgegeven selecteurstring mislukt
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Documentfasen-start en verstreken tijd relatief aan het laden van het document:
+perftiming.events.label=Gebeurtenistiming relatief aan laden document:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Prestatietiming
+perftiming.details_title_desc=Gedetailleerde timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Tijdstip bij afsluiten serververbinding.
+perftiming.connectStart=Tijdstip voor aanvang serververbinding.
+perftiming.domComplete=Tijdstip vlak voor gereedmelding document.
+perftiming.domContentLoadedEventEnd=Tijdstip na afronding DOMContentLoaded-gebeurtenis.
+perftiming.domContentLoadedEventStart=Tijdstip vlak voor starten DOMContentLoaded.
+perftiming.domInteractive=Tijdstip vlak voor instellen gereedheid op interactief.
+perftiming.domLoading=Tijdstip vlak voor instellen gereedheid op laden.
+perftiming.domainLookupEnd=Tijdstip na opzoeken domeinnaam.
+perftiming.domainLookupStart=Tijdstip vlak voor opzoeken domeinnaam.
+perftiming.fetchStart=Tijdstip dat ophalen hulpbron start.
+perftiming.loadEventEnd=Tijdstip van afronden laden.
+perftiming.loadEventStart=Tijdstip vlak voor laden start.
+perftiming.navigationStart=Tijdstip nadat vorige document wordt ontladen.
+perftiming.redirectCount=Aantal doorgeleidingen sinds laatste niet-doorgeleiding.
+perftiming.redirectEnd=Tijdstip nadat laatste doorleidantwoord eindigt.
+perftiming.redirectStart=Tijdstip van ophalen van een doorleiding.
+perftiming.requestStart=Tijdstip vlak voor een serveraanvraag.
+perftiming.responseEnd=Tijdstip na einde van een antwoord of verbinding.
+perftiming.responseStart=Tijdstip vlak voor begin van een antwoord.
+perftiming.unloadEventEnd=Tijdstip na ontladen van vorig document.
+perftiming.unloadEventStart=Tijdstip vlak voordat een ontladingsgebeurtenis is gestart.
diff --git a/locale/pl/cookies.properties b/locale/pl/cookies.properties
index beabe9e..c84e4a5 100644
--- a/locale/pl/cookies.properties
+++ b/locale/pl/cookies.properties
@@ -1,276 +1,276 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Ciasteczka
-panel.tip.cookies=Umożliwia kontrolę i sterowanie ciasteczkami
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Sesja
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Akceptuj ciasteczka pochodzące z witryn
-cookies.tip.AllowGlobally=Wszystkie ciasteczka będą domyślnie akceptuowane lub blokowane
-# LOCALIZATION NOTE (cookies.LogEvents, cookies.tip.LogEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Wyświetlaj zdarzenia dotyczące ciasteczek
-cookies.tip.showCookieEvents=Zdarzenia dotyczące ciasteczek (zmiana, usunięcie) będą rejestrowane w konsoli
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Czyść ciasteczka, gdy nie są zaakceptowane
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Wytnij
-cookies.Copy=Kopiuj
-cookies.CopyAll=Kopiuj wszystko
-cookies.Paste=Wklej
-cookies.Delete=Usuń
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Wyczyść zawartość
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Edytuj
-cookies.Accept=Akceptuj
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Resetuj nagłówek
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=Możesz określać zasady akceptacji ciasteczek. Podaj dokładny adres\nwitryny, której uprawnieniami chcesz zarządzać i następnie naciśnij\nprzycisk Zezwól, Zablokuj lub Zezwól na czas sesji.
-cookies.ExceptionsTitle=Wyjątki - Ciasteczka
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Obsługuje monitorowanie ciasteczek
-cookies.HostEnable=Włącz panel ciasteczek dla %S
-cookies.HostDisable=Wyłącz panel ciasteczek dla %S
-cookies.Permissions=Włączanie/wyłączanie panelu ciasteczek
-cookies.PermissionsIntro=Wybierz witryny, gdzie panel ciasteczek będzie włączony/wyłączony.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=Strony systemowe
-cookies.LocalFiles=Pliki lokalne
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when cookies
-# are going to be deleted deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Czy chcesz usunąć wszystkie ciasteczka z listy?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Czy chcesz usunąć wszystkie ciasteczka sesji z listy?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-cookies.confirm.Remove_All_From_Host=Czy chcesz usunąć wszystkie ciasteczka z %S?
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.Confirm_cookie_removal=Potwierdzaj usuwanie ciasteczek
-cookies.tip.Confirm_cookie_removal=Jeśli funkcja ta zostanie uaktywniona, przed usunięciem wszystkich ciasteczek z listy będzie wyświetlane okno dialogowe z prośbą o potwierdzenie wykonania operacji.
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-cookies.removeall.tooltip=Usuwa wszystkie ciasteczka z listy
-# that says whether a confirmation dialog is displayed when removing cookies.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.Remove_Session_Cookies=Usuń ciasteczka sesji
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-cookies.removeallsession.tooltip=Usuwa wszystkie ciasteczka sesji z listy
-# Cookies->Remove Session Cookies menu
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.createcookie.tooltip=Tworzy nowe ciasteczko dla %S
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-cookies.createcookie.defaultvalue=Zawartość
-# examples: Create new cookie for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-cookies.perm.manage.tooltip=Zarządzanie zezwoleniami ciasteczek dla %S
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-cookies.console.cookiescleared=Wszystkie ciasteczka zostały usunięte.
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-cookies.console.sessioncookiescleared=Wszystkie ciasteczka sesji zostały usunięte.
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-cookies.console.cookiesrejected=Ciasteczka odrzucone:
-cookies.console.nocookiesreceived=Nie otrzymano ciasteczek
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-cookies.console.cookie=Ciasteczko
-cookies.console.deleted=usunięto
-cookies.console.added=dodano
-cookies.console.changed=zmieniono
-cookies.console.cleared=wyczyszczono
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-cookies.domain.label=Domena
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.secure.label=Bezpieczne
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-cookies.status.accepted=Zaakceptowane
-cookies.status.downgraded=Zdegradowane
-cookies.status.flagged=Oznaczone
-cookies.status.rejected=Odrzucone
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-cookies.info.valuetab.label=Zawartość
-cookies.info.rawdatatab.Raw_Data=Dane RAW
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-cookies.default.session=Akceptuj ciasteczka sesji (domyślne)
-cookies.default.thirdPartySession=Akceptuj ciasteczka sesji (domyślne)
-cookies.default.thirdParty=Akceptuj ciasteczka (domyślne)
-cookies.default.allow=Akceptuj ciasteczka (domyślne)
-cookies.default.deny=Nie akceptuj ciasteczek (domyślne)
-cookies.default.warn=Pytaj przed zaakceptowaniem (domyślne)
-cookies.default.limitThirdParty=Akceptuj ciasteczka z innych witryn (domyślne)
-cookies.host.session=Akceptuj ciasteczka sesji z %S
-cookies.host.accept=Akceptuj ciasteczka z %S
-cookies.host.reject=Nie akceptuj ciasteczek z %S
-cookies.host.limitThirdParty=Ogranicz ciasteczka z innych witryn do %S
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-cookies.edit.invalidname=Nazwa ciasteczka jest nieprawidłowa.
-cookies.edit.invalidhost=Serwer ciasteczka jest nieprawidłowy.
-cookies.edit.invalidpath=Ścieżka ciasteczka jest nieprawidłowa.
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.domain,
-# cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-cookies.header.name=Nazwa
-cookies.header.value=Zawartość
-cookies.header.rawValue=Zawartość RAW
-cookies.header.domain=Domena
-cookies.header.size=Wielkość
-cookies.header.rawSize=Wielkość RAW
-cookies.header.path=Ścieżka
-cookies.header.expires=Wygasa
-cookies.header.security=Bezpieczeństwo
-cookies.header.httponly=Tylko HTTP
-cookies.header.maxAge=Maks. wiek
-# Column labels used in the cookie header.
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.domain.tooltip, cookies.header.size.tooltip, cookies.header.path.tooltip,
-# cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.status.tooltip, cookies.header.httponly.tooltip):
-cookies.header.name.tooltip=Nazwa ciasteczka
-cookies.header.value.tooltip=Zawartość ciasteczka
-cookies.header.rawValue.tooltip=Zawartość ciasteczka
-cookies.header.domain.tooltip=Domena przechowująca ciasteczko
-cookies.header.rawSize.tooltip=Wielkość RAW przechowywanych ciasteczek
-cookies.header.size.tooltip=Wielkość ciasteczka
-cookies.header.path.tooltip=Ścieżka do ciasteczka
-cookies.header.expires.tooltip=Data wygaśnięcia ciasteczka
-cookies.header.security.tooltip=Wskazuje czy ciasteczko jest bezpieczne, czy nie
-cookies.header.httponly.tooltip=Wyświetla tylko jeśli ciasteczko jest ciasteczkiem HTTP
-cookies.header.maxAge.tooltip=Maksymalny czas przechowywania ciasteczka
-# Column tooltips used in the cookie header.
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Odebrane ciasteczka
-cookies.netinfo.Sent_Cookies=Wysłane ciasteczka
-cookies.netinfo.deleted.tooltip=Żądany czas wygaśnięcia ciasteczka
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Filtr ścieżki
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Ciasteczka
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Eksportuj wszystkie ciasteczka…
-cookies.export.Export_All_Cookies_Tooltip=Eksportuje wszystkie ciasteczka przeglądarki do pliku cookies.txt
-cookies.export.Export_For_Site=Eksportuj ciasteczka dla tej witryny…
-cookies.export.Export_For_Site_Tooltip=Eksportuje ciasteczka dla witryny %S do pliku cookies.txt
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=Nie ma aktywnej strony.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Wstrzymaj na zmianie ciasteczka
-cookies.Disable_Break_On_Cookie=Wyłącz wstrzymanie na zmianie ciasteczka
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Punkty wstrzymania ciasteczek
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Wstrzymaj na ciasteczku „%S”
-cookies.menu.tooltip.Break_On_Cookie=Wstrzymuje na ciasteczku „%S”, gdy zostało usunięte lub zmienione.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Modyfikuj warunki punktów wstrzymania
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Nie udało się ocenić warunków punktu wstrzymania
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Usuń ciasteczka
-cookies.Create=Utwórz ciasteczko
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Narzędzia
-cookies.ToolsTooltip=Narzędzia
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Wyświetl wszystkie ciasteczka…
-cookies.ViewAllTooltip=Otwiera menedżera ciasteczek
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Uprawnienia witryn…
-cookies.ViewExceptionsTooltip=Wyświetla listę dozwolonych lub zabronionych witryn
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filtr
-cookies.FilterTooltip=Używaj dostarczonych funkcji do filtrowania listy ciasteczek
-cookies.filter.byPath=Filtruj ciasteczka wg aktualnej ścieżki
-cookies.filter.byPathTooltip=Wyświetla tylko ciasteczka pasujące do aktualnej ścieżki.
-cookies.filter.showRejectedCookies=Wyświetl odrzucone ciasteczka
-cookies.filter.showRejectedCookiesTooltip=Wyświetla na liście nawet odrzucone ciasteczka.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label): Edit Cookie dialog UI
-cookies.edit.title=Edytuj ciasteczko
-cookies.edit.name.label=Nazwa:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Ścieżka:
-cookies.edit.expire.label=Wygasa:
-cookies.edit.value.label=Zawartość:
-cookies.edit.secure.label=Bezpieczne ciasteczko
-cookies.edit.httponly.label=Tylko HTTP
-cookies.edit.session.label=Sesja
-cookies.edit.urlEncode.label=Zawartość URL kodowania
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Ciasteczka
-cookies.console.Filter_By_Cookies=Filtruj wg ciasteczek
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Usuń wszystkie ciasteczka
-cookie.sizeinfo.Size=Wielkość
-cookie.sizeinfo.Raw_Size=Wielkość RAW
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Ciasteczka
+panel.tip.cookies=Umożliwia kontrolę i sterowanie ciasteczkami
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Sesja
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Akceptuj ciasteczka pochodzące z witryn
+cookies.tip.AllowGlobally=Wszystkie ciasteczka będą domyślnie akceptuowane lub blokowane
+# LOCALIZATION NOTE (cookies.LogEvents, cookies.tip.LogEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Wyświetlaj zdarzenia dotyczące ciasteczek
+cookies.tip.showCookieEvents=Zdarzenia dotyczące ciasteczek (zmiana, usunięcie) będą rejestrowane w konsoli
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Czyść ciasteczka, gdy nie są zaakceptowane
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Wytnij
+cookies.Copy=Kopiuj
+cookies.CopyAll=Kopiuj wszystko
+cookies.Paste=Wklej
+cookies.Delete=Usuń
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Wyczyść zawartość
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Edytuj
+cookies.Accept=Akceptuj
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Resetuj nagłówek
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=Możesz określać zasady akceptacji ciasteczek. Podaj dokładny adres\nwitryny, której uprawnieniami chcesz zarządzać i następnie naciśnij\nprzycisk Zezwól, Zablokuj lub Zezwól na czas sesji.
+cookies.ExceptionsTitle=Wyjątki - Ciasteczka
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Obsługuje monitorowanie ciasteczek
+cookies.HostEnable=Włącz panel ciasteczek dla %S
+cookies.HostDisable=Wyłącz panel ciasteczek dla %S
+cookies.Permissions=Włączanie/wyłączanie panelu ciasteczek
+cookies.PermissionsIntro=Wybierz witryny, gdzie panel ciasteczek będzie włączony/wyłączony.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=Strony systemowe
+cookies.LocalFiles=Pliki lokalne
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when cookies
+# are going to be deleted deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Czy chcesz usunąć wszystkie ciasteczka z listy?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Czy chcesz usunąć wszystkie ciasteczka sesji z listy?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+cookies.confirm.Remove_All_From_Host=Czy chcesz usunąć wszystkie ciasteczka z %S?
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.Confirm_cookie_removal=Potwierdzaj usuwanie ciasteczek
+cookies.tip.Confirm_cookie_removal=Jeśli funkcja ta zostanie uaktywniona, przed usunięciem wszystkich ciasteczek z listy będzie wyświetlane okno dialogowe z prośbą o potwierdzenie wykonania operacji.
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+cookies.removeall.tooltip=Usuwa wszystkie ciasteczka z listy
+# that says whether a confirmation dialog is displayed when removing cookies.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.Remove_Session_Cookies=Usuń ciasteczka sesji
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+cookies.removeallsession.tooltip=Usuwa wszystkie ciasteczka sesji z listy
+# Cookies->Remove Session Cookies menu
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.createcookie.tooltip=Tworzy nowe ciasteczko dla %S
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+cookies.createcookie.defaultvalue=Zawartość
+# examples: Create new cookie for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+cookies.perm.manage.tooltip=Zarządzanie zezwoleniami ciasteczek dla %S
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+cookies.console.cookiescleared=Wszystkie ciasteczka zostały usunięte.
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+cookies.console.sessioncookiescleared=Wszystkie ciasteczka sesji zostały usunięte.
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+cookies.console.cookiesrejected=Ciasteczka odrzucone:
+cookies.console.nocookiesreceived=Nie otrzymano ciasteczek
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+cookies.console.cookie=Ciasteczko
+cookies.console.deleted=usunięto
+cookies.console.added=dodano
+cookies.console.changed=zmieniono
+cookies.console.cleared=wyczyszczono
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+cookies.domain.label=Domena
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.secure.label=Bezpieczne
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+cookies.status.accepted=Zaakceptowane
+cookies.status.downgraded=Zdegradowane
+cookies.status.flagged=Oznaczone
+cookies.status.rejected=Odrzucone
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+cookies.info.valuetab.label=Zawartość
+cookies.info.rawdatatab.Raw_Data=Dane RAW
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+cookies.default.session=Akceptuj ciasteczka sesji (domyślne)
+cookies.default.thirdPartySession=Akceptuj ciasteczka sesji (domyślne)
+cookies.default.thirdParty=Akceptuj ciasteczka (domyślne)
+cookies.default.allow=Akceptuj ciasteczka (domyślne)
+cookies.default.deny=Nie akceptuj ciasteczek (domyślne)
+cookies.default.warn=Pytaj przed zaakceptowaniem (domyślne)
+cookies.default.limitThirdParty=Akceptuj ciasteczka z innych witryn (domyślne)
+cookies.host.session=Akceptuj ciasteczka sesji z %S
+cookies.host.accept=Akceptuj ciasteczka z %S
+cookies.host.reject=Nie akceptuj ciasteczek z %S
+cookies.host.limitThirdParty=Ogranicz ciasteczka z innych witryn do %S
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+cookies.edit.invalidname=Nazwa ciasteczka jest nieprawidłowa.
+cookies.edit.invalidhost=Serwer ciasteczka jest nieprawidłowy.
+cookies.edit.invalidpath=Ścieżka ciasteczka jest nieprawidłowa.
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.domain,
+# cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+cookies.header.name=Nazwa
+cookies.header.value=Zawartość
+cookies.header.rawValue=Zawartość RAW
+cookies.header.domain=Domena
+cookies.header.size=Wielkość
+cookies.header.rawSize=Wielkość RAW
+cookies.header.path=Ścieżka
+cookies.header.expires=Wygasa
+cookies.header.security=Bezpieczeństwo
+cookies.header.httponly=Tylko HTTP
+cookies.header.maxAge=Maks. wiek
+# Column labels used in the cookie header.
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.domain.tooltip, cookies.header.size.tooltip, cookies.header.path.tooltip,
+# cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.status.tooltip, cookies.header.httponly.tooltip):
+cookies.header.name.tooltip=Nazwa ciasteczka
+cookies.header.value.tooltip=Zawartość ciasteczka
+cookies.header.rawValue.tooltip=Zawartość ciasteczka
+cookies.header.domain.tooltip=Domena przechowująca ciasteczko
+cookies.header.rawSize.tooltip=Wielkość RAW przechowywanych ciasteczek
+cookies.header.size.tooltip=Wielkość ciasteczka
+cookies.header.path.tooltip=Ścieżka do ciasteczka
+cookies.header.expires.tooltip=Data wygaśnięcia ciasteczka
+cookies.header.security.tooltip=Wskazuje czy ciasteczko jest bezpieczne, czy nie
+cookies.header.httponly.tooltip=Wyświetla tylko jeśli ciasteczko jest ciasteczkiem HTTP
+cookies.header.maxAge.tooltip=Maksymalny czas przechowywania ciasteczka
+# Column tooltips used in the cookie header.
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Odebrane ciasteczka
+cookies.netinfo.Sent_Cookies=Wysłane ciasteczka
+cookies.netinfo.deleted.tooltip=Żądany czas wygaśnięcia ciasteczka
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Filtr ścieżki
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Ciasteczka
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Eksportuj wszystkie ciasteczka…
+cookies.export.Export_All_Cookies_Tooltip=Eksportuje wszystkie ciasteczka przeglądarki do pliku cookies.txt
+cookies.export.Export_For_Site=Eksportuj ciasteczka dla tej witryny…
+cookies.export.Export_For_Site_Tooltip=Eksportuje ciasteczka dla witryny %S do pliku cookies.txt
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=Nie ma aktywnej strony.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Wstrzymaj na zmianie ciasteczka
+cookies.Disable_Break_On_Cookie=Wyłącz wstrzymanie na zmianie ciasteczka
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Punkty wstrzymania ciasteczek
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Wstrzymaj na ciasteczku „%S”
+cookies.menu.tooltip.Break_On_Cookie=Wstrzymuje na ciasteczku „%S”, gdy zostało usunięte lub zmienione.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Modyfikuj warunki punktów wstrzymania
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Nie udało się ocenić warunków punktu wstrzymania
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Usuń ciasteczka
+cookies.Create=Utwórz ciasteczko
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Narzędzia
+cookies.ToolsTooltip=Narzędzia
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Wyświetl wszystkie ciasteczka…
+cookies.ViewAllTooltip=Otwiera menedżera ciasteczek
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Uprawnienia witryn…
+cookies.ViewExceptionsTooltip=Wyświetla listę dozwolonych lub zabronionych witryn
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filtr
+cookies.FilterTooltip=Używaj dostarczonych funkcji do filtrowania listy ciasteczek
+cookies.filter.byPath=Filtruj ciasteczka wg aktualnej ścieżki
+cookies.filter.byPathTooltip=Wyświetla tylko ciasteczka pasujące do aktualnej ścieżki.
+cookies.filter.showRejectedCookies=Wyświetl odrzucone ciasteczka
+cookies.filter.showRejectedCookiesTooltip=Wyświetla na liście nawet odrzucone ciasteczka.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label): Edit Cookie dialog UI
+cookies.edit.title=Edytuj ciasteczko
+cookies.edit.name.label=Nazwa:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Ścieżka:
+cookies.edit.expire.label=Wygasa:
+cookies.edit.value.label=Zawartość:
+cookies.edit.secure.label=Bezpieczne ciasteczko
+cookies.edit.httponly.label=Tylko HTTP
+cookies.edit.session.label=Sesja
+cookies.edit.urlEncode.label=Zawartość URL kodowania
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Ciasteczka
+cookies.console.Filter_By_Cookies=Filtruj wg ciasteczek
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Usuń wszystkie ciasteczka
+cookie.sizeinfo.Size=Wielkość
+cookie.sizeinfo.Raw_Size=Wielkość RAW
diff --git a/locale/pl/firebug-amo.properties b/locale/pl/firebug-amo.properties
index 34e4407..346264d 100644
--- a/locale/pl/firebug-amo.properties
+++ b/locale/pl/firebug-amo.properties
@@ -1,6 +1,6 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):n\n
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843n\n
-# They are not direct part of Firebug extension and so, you can\'t see them in Firebug\'s UI.n\n
-firebug.amo.summary1.6=Firebug integruje się z Firefoksem, by dodać bogactwo narzędzi programistycznych dostępnych błyskawicznie podczas używania przeglądarki. Można edytować, analizować kod oraz monitorować CSS, HTML i JavaScript bezpośrednio na dowolnej stronie internetowej…\\n\\nFirebug 1.6 działa z Firefoksem 3.6 i nowszymi wersjami.
-firebug.amo.description=Firebug integruje się z Firefoksem, by dodać bogactwo narzędzi programistycznych dostępnych błyskawicznie podczas używania przeglądarki. Można edytować, analizować kod oraz monitorować CSS, HTML i JavaScript bezpośrednio na dowolnej stronie internetowej…\\n\\nAby zapoznać się z dokumentacją, zrzutami ekranu lub skorzystać z forum dyskusyjnego, przejdź na stronę: http://getfirebug.com
-firebug.amo.developer.comments=Jeśli masz jakieś problemy, zapoznaj się z często zadawanymi pytaniami (FAQ) na stronie\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):n\n
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843n\n
+# They are not direct part of Firebug extension and so, you can\'t see them in Firebug\'s UI.n\n
+firebug.amo.summary1.6=Firebug integruje się z Firefoksem, by dodać bogactwo narzędzi programistycznych dostępnych błyskawicznie podczas używania przeglądarki. Można edytować, analizować kod oraz monitorować CSS, HTML i JavaScript bezpośrednio na dowolnej stronie internetowej…\\n\\nFirebug 1.6 działa z Firefoksem 3.6 i nowszymi wersjami.
+firebug.amo.description=Firebug integruje się z Firefoksem, by dodać bogactwo narzędzi programistycznych dostępnych błyskawicznie podczas używania przeglądarki. Można edytować, analizować kod oraz monitorować CSS, HTML i JavaScript bezpośrednio na dowolnej stronie internetowej…\\n\\nAby zapoznać się z dokumentacją, zrzutami ekranu lub skorzystać z forum dyskusyjnego, przejdź na stronę: http://getfirebug.com
+firebug.amo.developer.comments=Jeśli masz jakieś problemy, zapoznaj się z często zadawanymi pytaniami (FAQ) na stronie\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/pl/firebug-tracing.properties b/locale/pl/firebug-tracing.properties
index 7293aa5..4bfd3cd 100644
--- a/locale/pl/firebug-tracing.properties
+++ b/locale/pl/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):n\n
-# Firebug tracing console menu items (located in Firebug\'s menu).n\n
-Open_Firebug_Tracing=Otwórz śledzenie
-Always_Open_Firebug_Tracing=Zawsze otwieraj śledzenie
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).n\n
-title.Tracing=Śledzenie
-tracing.Show_Scope_Variables=Pokaż zmienne w zasięgu
-tracing.Show_Time=Pokaż czas
-tracing.tab.Stack=Stos
-tracing.tab.Exception=Wyjątek
-tracing.tab.Properties=Właściwości
-tracing.tab.Scope=Zasięg
-tracing.tab.Response=Odpowiedź
-tracing.tab.Source=Źródło
-tracing.tab.Interfaces=Interfejsy
-tracing.tab.Object=Obiekt
-tracing.tab.Event=Zdarzenie
-tracing.cmd.Clear=Wyczyść
-tracing.cmd.tip.Clear=Usuń wszystkie wiadomości
-tracing.cmd.Find=Znajdź
-tracing.cmd.tip.Find=Znajdź tekst
-tracing.cmd.Bookmark=Zakładka
-tracing.cmd.tip.Bookmark=Dodaj zakładkę
-tracing.cmd.Restart=Uruchom ponownie Firefoksa
-tracing.cmd.tip.Restart=Uruchom ponownie Firefoksa
-tracing.cmd.Exit=Zamknij Firefoksa
-tracing.cmd.tip.Exit=Zamknij Firefoksa
-tracing.cmd.Save=Zapisz w pliku
-tracing.cmd.tip.Save=Zapisz zdarzenia w pliku
-tracing.cmd.Load=Wczytaj z pliku
-tracing.cmd.tip.Load=Wczytaj zapisy dziennika z pliku
-tracing.cmd.Expand_All=Rozwiń wszystko
-tracing.cmd.Collapse_All=Zwiń wszystko
-tracing.cmd.Tools=Narzędzia
-tracing.cmd.tip.Tools=Narzędzia
-tracing.cmd.Clear_Browser_Cache=Wyczyść bufor przeglądarki
-tracing.cmd.tip.Clear_Browser_Cache=Wyczyść bufor przeglądarki
-tracing.cmd.Force_Garbage_Collector=Uruchom zbieracza śmieci
-tracing.cmd.tip.Force_Garbage_Collector=Uruchom zbieracza śmieci
-tracing.cmd.Open_Profile_Directory=Otwórz katalog profilu
-tracing.cmd.tip.Open_Profile_Directory=Otwórz katalog profilu
-tracing.option.A11Y_Description=Zagadnienia związane z dostępnością
-tracing.option.ACTIVATION_Description=Aktywacja Firebuga
-tracing.option.ACTIVITYOBSERVER_Description=Obserwator aktywności Firebuga
-tracing.option.ANNOTATIONS_Description=Adnotacja o witrynie Firebuga
-tracing.option.BP_Description=Punkty wstrzymania
-tracing.option.CACHE_Description=Bufor źródła
-tracing.option.COMMANDLINE_Description=Wiersz poleceń i jego podpowiedzi
-tracing.option.COMPILATION_UNITS_Description=Jednostki kompilacji skryptu
-tracing.option.CONSOLE_Description=Panel konsoli
-tracing.option.CSS_Description=Analizowanie CSS
-tracing.option.DISPATCH_Description=Zdarzenie wysyłania
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Tworzenie Domplate
-tracing.option.EDITOR_Description=Edytor inline i autozakańczacz
-tracing.option.ERRORLOG_Description=Dziennik zdarzeń błędów JS, CSS, XML itp.
-tracing.option.ERRORS_Description=Błędy wewnętrzne Firebuga
-tracing.option.EVAL_Description=Ocena skryptu
-tracing.option.FBS_BP_Description=Obsługa punktów wstrzymania
-tracing.option.FBS_CREATION_Description=Obsługa tworzenia skryptu
-tracing.option.FBS_ERRORS_Description=Obsługa błędów
-tracing.option.FBS_FINDDEBUGGER_Description=Obsługa szukania debugera
-tracing.option.FBS_FUNCTION_Description=Funkcja obsługi
-tracing.option.FBS_JSDCONTEXT_Description=Obsługa debugera
-tracing.option.FBS_SRCUNITS_Description=Obsługa jednostek źródła
-tracing.option.FBS_STEP_Description=Obsługa intensyfikacji debugera JavaScriptu
-tracing.option.FBS_TRACKFILES_Description=Obsługa śledzonych plików
-tracing.option.FUNCTION_NAMES_Description=Nazwy funkcji JavaScriptu
-tracing.option.HISTORY_Description=Historia nawigacji
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=Obserwator żądań HTTP
-tracing.option.INFOTIP_Description=Podpowiedzi
-tracing.option.INITIALIZE_Description=Inicjacja Firebuga
-tracing.option.INSPECT_Description=Inspektor
-tracing.option.JSONVIEWER_Description=Przeglądarka JSON
-tracing.option.LINETABLE_Description=Tabela wiersza skryptu
-tracing.option.LOCALE_Description=Lokalizacja
-tracing.option.LOCATIONS_Description=Lokalizacje źródła
-tracing.option.NET_Description=Panel Śieć
-tracing.option.NET_EVENTS_Description=Zdarzenia sieciowe
-tracing.option.OPTIONS_Description=Ustawienia Firebuga
-tracing.option.PANELS_Description=Panele
-tracing.option.SHORTCUTS_Description=Skróty klawiszowe
-tracing.option.SOURCEFILES_Description=Pliki źródłowe JavaScript
-tracing.option.SPY_Description=Obserwator XMLHttpRequests
-tracing.option.STACK_Description=Stos wywołań JavaScript
-tracing.option.STORAGE_Description=Zapisywanie ustawień
-tracing.option.SVGVIEWER_Description=Przeglądarka SVG
-tracing.option.FONTS_Description=Przeglądarka i informacje o czcionkach
-tracing.option.TOOLTIP_Description=Podpowiedź przycisku uruchomieniowego
-tracing.option.TOPLEVEL_Description=Najwyższy poziom JavaScriptu
-tracing.option.UI_LOOP_Description=Interfejs użytkownika debugowania JavaScriptu
-tracing.option.WINDOWS_Description=Okna i karty czujki
-tracing.option.XMLVIEWER_Description=Przeglądarka XML
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):n\n
+# Firebug tracing console menu items (located in Firebug\'s menu).n\n
+Open_Firebug_Tracing=Otwórz śledzenie
+Always_Open_Firebug_Tracing=Zawsze otwieraj śledzenie
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).n\n
+title.Tracing=Śledzenie
+tracing.Show_Scope_Variables=Pokaż zmienne w zasięgu
+tracing.Show_Time=Pokaż czas
+tracing.tab.Stack=Stos
+tracing.tab.Exception=Wyjątek
+tracing.tab.Properties=Właściwości
+tracing.tab.Scope=Zasięg
+tracing.tab.Response=Odpowiedź
+tracing.tab.Source=Źródło
+tracing.tab.Interfaces=Interfejsy
+tracing.tab.Object=Obiekt
+tracing.tab.Event=Zdarzenie
+tracing.cmd.Clear=Wyczyść
+tracing.cmd.tip.Clear=Usuń wszystkie wiadomości
+tracing.cmd.Find=Znajdź
+tracing.cmd.tip.Find=Znajdź tekst
+tracing.cmd.Bookmark=Zakładka
+tracing.cmd.tip.Bookmark=Dodaj zakładkę
+tracing.cmd.Restart=Uruchom ponownie Firefoksa
+tracing.cmd.tip.Restart=Uruchom ponownie Firefoksa
+tracing.cmd.Exit=Zamknij Firefoksa
+tracing.cmd.tip.Exit=Zamknij Firefoksa
+tracing.cmd.Save=Zapisz w pliku
+tracing.cmd.tip.Save=Zapisz zdarzenia w pliku
+tracing.cmd.Load=Wczytaj z pliku
+tracing.cmd.tip.Load=Wczytaj zapisy dziennika z pliku
+tracing.cmd.Expand_All=Rozwiń wszystko
+tracing.cmd.Collapse_All=Zwiń wszystko
+tracing.cmd.Tools=Narzędzia
+tracing.cmd.tip.Tools=Narzędzia
+tracing.cmd.Clear_Browser_Cache=Wyczyść bufor przeglądarki
+tracing.cmd.tip.Clear_Browser_Cache=Wyczyść bufor przeglądarki
+tracing.cmd.Force_Garbage_Collector=Uruchom zbieracza śmieci
+tracing.cmd.tip.Force_Garbage_Collector=Uruchom zbieracza śmieci
+tracing.cmd.Open_Profile_Directory=Otwórz katalog profilu
+tracing.cmd.tip.Open_Profile_Directory=Otwórz katalog profilu
+tracing.option.A11Y_Description=Zagadnienia związane z dostępnością
+tracing.option.ACTIVATION_Description=Aktywacja Firebuga
+tracing.option.ACTIVITYOBSERVER_Description=Obserwator aktywności Firebuga
+tracing.option.ANNOTATIONS_Description=Adnotacja o witrynie Firebuga
+tracing.option.BP_Description=Punkty wstrzymania
+tracing.option.CACHE_Description=Bufor źródła
+tracing.option.COMMANDLINE_Description=Wiersz poleceń i jego podpowiedzi
+tracing.option.COMPILATION_UNITS_Description=Jednostki kompilacji skryptu
+tracing.option.CONSOLE_Description=Panel konsoli
+tracing.option.CSS_Description=Analizowanie CSS
+tracing.option.DISPATCH_Description=Zdarzenie wysyłania
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Tworzenie Domplate
+tracing.option.EDITOR_Description=Edytor inline i autozakańczacz
+tracing.option.ERRORLOG_Description=Dziennik zdarzeń błędów JS, CSS, XML itp.
+tracing.option.ERRORS_Description=Błędy wewnętrzne Firebuga
+tracing.option.EVAL_Description=Ocena skryptu
+tracing.option.FBS_BP_Description=Obsługa punktów wstrzymania
+tracing.option.FBS_CREATION_Description=Obsługa tworzenia skryptu
+tracing.option.FBS_ERRORS_Description=Obsługa błędów
+tracing.option.FBS_FINDDEBUGGER_Description=Obsługa szukania debugera
+tracing.option.FBS_FUNCTION_Description=Funkcja obsługi
+tracing.option.FBS_JSDCONTEXT_Description=Obsługa debugera
+tracing.option.FBS_SRCUNITS_Description=Obsługa jednostek źródła
+tracing.option.FBS_STEP_Description=Obsługa intensyfikacji debugera JavaScriptu
+tracing.option.FBS_TRACKFILES_Description=Obsługa śledzonych plików
+tracing.option.FUNCTION_NAMES_Description=Nazwy funkcji JavaScriptu
+tracing.option.HISTORY_Description=Historia nawigacji
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=Obserwator żądań HTTP
+tracing.option.INFOTIP_Description=Podpowiedzi
+tracing.option.INITIALIZE_Description=Inicjacja Firebuga
+tracing.option.INSPECT_Description=Inspektor
+tracing.option.JSONVIEWER_Description=Przeglądarka JSON
+tracing.option.LINETABLE_Description=Tabela wiersza skryptu
+tracing.option.LOCALE_Description=Lokalizacja
+tracing.option.LOCATIONS_Description=Lokalizacje źródła
+tracing.option.NET_Description=Panel Śieć
+tracing.option.NET_EVENTS_Description=Zdarzenia sieciowe
+tracing.option.OPTIONS_Description=Ustawienia Firebuga
+tracing.option.PANELS_Description=Panele
+tracing.option.SHORTCUTS_Description=Skróty klawiszowe
+tracing.option.SOURCEFILES_Description=Pliki źródłowe JavaScript
+tracing.option.SPY_Description=Obserwator XMLHttpRequests
+tracing.option.STACK_Description=Stos wywołań JavaScript
+tracing.option.STORAGE_Description=Zapisywanie ustawień
+tracing.option.SVGVIEWER_Description=Przeglądarka SVG
+tracing.option.FONTS_Description=Przeglądarka i informacje o czcionkach
+tracing.option.TOOLTIP_Description=Podpowiedź przycisku uruchomieniowego
+tracing.option.TOPLEVEL_Description=Najwyższy poziom JavaScriptu
+tracing.option.UI_LOOP_Description=Interfejs użytkownika debugowania JavaScriptu
+tracing.option.WINDOWS_Description=Okna i karty czujki
+tracing.option.XMLVIEWER_Description=Przeglądarka XML
diff --git a/locale/pl/firebug.properties b/locale/pl/firebug.properties
index e88bb62..add0b09 100644
--- a/locale/pl/firebug.properties
+++ b/locale/pl/firebug.properties
@@ -1,1553 +1,1553 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Konsola
-panel.tip.console=Obserwacja wiadomości konsoli i wykonywania poleceń JavaScriptu
-Panel-net=Sieć
-panel.tip.net=Analizowanie ruchu w sieci
-Panel-html=HTML
-panel.tip.html=Badanie i manipulowanie węzłami DOM
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Badanie i manipulowanie arkuszami stylów CSS
-Panel-script=Skrypt
-panel.tip.script=Debugowanie kodu JavaScript
-Panel-dom=DOM
-panel.tip.dom=Badanie i manipulowanie właściwościami DOM
-Panel-css=Styl
-panel.tip.css=Badanie i manipulowanie regułami CSS wybranego węzła DOM
-Panel-computed=Wyliczone
-panel.tip.computed=Badanie wyliczonych wartości CSS wybranego węzła DOM
-Panel-layout=Układ
-panel.tip.layout=Badanie i manipulowanie danymi układu wybranego węzła DOM
-Panel-domSide=DOM
-panel.tip.domSide=Badanie i manipulowanie właściwościami DOM wybranego węzła DOM
-Panel-watches=Czujka
-panel.tip.watches=Badanie zmiennych JavaScriptu dostępnych w bieżącej ramce stosu i definiowanie wyrażeń czujki
-Panel-breakpoints=Punkty wstrzymania
-panel.tip.breakpoints=Manipulowanie ustawieniami punktów wstrzymania
-Panel-callstack=Stos
-panel.tip.callstack=Obserwacja bieżącego stosu wywołań JavaScriptu
-Panel-scopes=Zasięgi
-firebug.DetachFirebug=Otwórz w nowym oknie
-firebug.AttachFirebug=Zadokuj Firebuga w oknie przeglądarki
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox status bar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=Liczba stron z aktywnymi Firebugami: %1$S;Liczba stron z aktywnymi Firebugami: %1$S;Liczba stron z aktywnymi Firebugami: %1$S
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Dezaktywowany
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=Zadokowany
-minimized=Zminimalizowany
-enablement.for_all_pages=na wszystkich stronach
-enablement.on=Włączony
-enablement.off=Wyłączony
-enablement.Panel_activation_status=Status aktywacji panelu:
-none=Zamknięte
-Firebug_-_inactive_for_current_website=Firebug – nieaktywny dla aktualnej witryny
-Activate_Firebug_for_the_current_website=Uaktywnij Firebuga dla aktualnej witryny
-Minimized=Zminimalizowane
-Minimize_Firebug=Minimalizuj Firebuga
-On_for_all_web_pages=Uaktywnij na wszystkich stronach
-firebug.menu.tip.On_for_all_Web_Sites=Domyślnie aktywuj Firebuga dla wszystkich witryn
-firebug.menu.Clear_Activation_List=Wyczyść listę aktywacji
-firebug.menu.tip.Clear_Activation_List=Wyczyść listę witryn, dla których Firebug jest aktywny
-firebug.menu.Detached=Odłączony
-firebug.menu.tip.Detached=Interfejs Firebuga będzie wyświetlany w osobnym oknie
-firebug.menu.Top=Na górze
-firebug.menu.tip.Top=Interfejs Firebuga będzie wyświetlany jako panel na górze zawartości okna
-firebug.menu.Bottom=Na dole
-firebug.menu.tip.Bottom=Interfejs Firebuga będzie wyświetlany jako panel na dole zawartości okna
-firebug.menu.Left=Po lewej
-firebug.menu.tip.Left=Interfejs Firebuga będzie wyświetlany jako panel po lewej stronie zawartości okna
-firebug.menu.Right=Po prawej
-firebug.menu.tip.Right=Firebug będzie wyświetlany jako panel po prawej stronie zawartości okna
-firebug.uiLocation=Położenie interfejsu Firebuga
-firebug.menu.tip.UI_Location=Miejsce wyświetlania interfejsu Firebuga
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-annotations.confirm.clear=Czy chcesz wyczyścić adnotacje dla wszystkich witryn?
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug_options=Firebug - menu
-# Console panel options (located in tab's option menu)
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-firebug.Show_All_Panels=Wyświetlaj wszystkie panele
-console.option.Show_Command_Line=Wyświetlaj wiersz poleceń
-console.option.tip.Show_Command_Line=Uaktywnia/wyświetla wiersz poleceń
-# of an error, message, etc. within a source of a web page.
-ShowJavaScriptErrors=Wyświetlaj błędy JavaScriptu
-console.option.tip.Show_JavaScript_Errors=W konsoli będą wyświetlane błędy JavaScriptu
-ShowJavaScriptWarnings=Wyświetlaj ostrzeżenia JavaScriptu
-console.option.tip.Show_JavaScript_Warnings=W konsoli będą wyświetlane ostrzeżenia JavaScriptu
-ShowCSSErrors=Wyświetlaj błędy CSS
-console.option.tip.Show_CSS_Errors=W konsoli będą wyświetlane błędy CSS
-ShowXMLHTMLErrors=Wyświetlaj błędy XML/HTML
-console.option.tip.Show_XML_HTML_Errors=Rejestruje informacje o błędach w konsoli błędów
-ShowStackTrace=Wyświetlaj informacje śledzenia z błędami
-console.option.tip.Show_Stack_Trace=Wyświetla informacje śledzenia stosu dla błędów
-ShowXMLHttpRequests=Wyświetlaj obiekty XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=W konsoli będą wyświetlane obiekty XMLHttpRequests
-ShowChromeErrors=Wyświetlaj błędy Chrome
-console.option.tip.Show_System_Errors=W konsoli będą wyświetlane błędy programu i wewnętrzne błędy dodatków
-ShowChromeMessages=Wyświetlaj wiadomości Chrome
-console.option.tip.Show_System_Messages=W konsoli będą wyświetlane wiadomości programu i wewnętrzne wiadomości dodatków
-ShowNetworkErrors=Wyświetlaj błędy sieci
-console.option.tip.Show_Network_Errors=W konsoli będą wyświetlane błędy sieci
-JavascriptOptionsStrict=Wyświetlaj wszystkie ostrzeżenia
-console.option.tip.Show_Strict_Warnings=W konsoli będą wyświetlane także wszystkie ostrzeżenia
-Command_History=Historia poleceń
-console.option.Show_Command_Editor=Edytor poleceń
-console.option.tip.Show_Command_Editor=Przełącz do edytora poleceń
-commandLineShowCompleterPopup=Wyświetlaj listę automatycznych uzupełnień
-console.option.tip.Show_Completion_List_Popup=Będzie wyświetlana lista automatycznie uzupełnianych poleceń
-Assertion=Błędy asercji
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-Line=%S (wiersz %S)
-LineAndCol=%S (wiersz %S, kolumna %S)
-InstanceLine=%S #%S (wiersz %S)
-StackItem=%S (%S wiersz %S)
-SystemItem=<System>
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-panel.Inspect_In_Panel=Zbadaj w panelu %S
-panel.tip.Inspect_In_Panel=Przełącza do panelu %S, by zbadać obiekt
-NoName=(bez nazwy)
-# %S = jsdIScript.tag
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-jsdIScript=jsdIScript %S
-# of an element will not be cropped
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-ShowFullText=Wyświetlaj cały tekst
-html.option.tip.Show_Full_Text=Zawartość elementu nie będzie obcinana
-# nodes will be shown
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowWhitespace=Wyświetlaj znaki specjalne
-html.option.tip.Show_Whitespace=Wewnątrz węzłów będą wyświetlane znaki specjalne
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-ShowComments=Wyświetlaj komentarze
-html.option.tip.Show_Comments=Będą wyświetlane komentarze węzłów
-# shown in their entity representation, e.g. " => ", & => &
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-html.option.Show_Entities_As_Symbols=Wyświetlaj encje jako symbole
-html.option.tip.Show_Entities_As_Symbols=Wyświetla wszystkie encje XML , używając ich graficznych symboli
-html.option.Show_Entities_As_Names=Wyświetlaj encje jako nazwy
-html.option.tip.Show_Entities_As_Names=Wyświetla wszystkie encje XML , używając ich nazw
-html.option.Show_Entities_As_Unicode=Wyświetlaj encje jako Unicode
-html.option.tip.Show_Entities_As_Unicode=SWyświetla wszystkie encje XML , używając Unicode
-# will be highlighted
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-HighlightMutations=Wyróżniaj zmiany
-html.option.tip.Highlight_Mutations=Zmiany wewnątrz węzłów będą wyróżniane
-# will be expanded to display changed nodes
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-ExpandMutations=Rozwijaj zmiany
-html.option.tip.Expand_Mutations=Drzewo będzie rozwijane, by wyświetlić zmienione węzły
-# will be scrolled to display changed nodes
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-ScrollToMutations=Przewijaj widok do zmiany
-html.option.tip.Scroll_To_Mutations=Widok drzewa będzie przewijany do zmienionych węzłów
-# a panel will be shown including information about the currently inspected element
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-ShowQuickInfoBox=Wyświetlaj okienko informacji
-inspect.option.tip.Show_Quick_Info_Box=W panelu będzie wyświetlane okienko zawierające informacje o aktualnie badanym elemencie
-# will be scrolled to display changed nodes
-# Quick Info Box
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-ShadeBoxModel=Przyciemnij okienko informacji
-inspect.option.tip.Shade_Box_Model=Różne części okienka będą przyciemniane
-ScrollIntoView=Przewijaj widok
-html.tip.Scroll_Into_View=Strona będzie mogła być przewijana, by zobaczyć wszystkie elementy
-NewAttribute=Nowy atrybut…
-html.tip.New_Attribute=Dodaje nowy atrybut do tego elementu
-html.Edit_Node=Edytuj %S…
-html.Node=Węzeł
-html.tip.Edit_Node=Edytuj %S za pomocą pełnotekstowego edytora
-DeleteElement=Usuń element
-html.Delete_Element=Usuwa element z drzewa
-DeleteNode=Usuń węzeł
-html.Delete_Node=Usuwa węzeł z drzewa
-# button that are used when the HTML panel is currently selected. The button allows stopping
-quickInfo=Szybka informacja
-computedStyle=Styl wyliczony
-# JS execution when DOM of the current page is modified.
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-html.Break_On_Mutate=Wstrzymuj na zmianach
-html.Disable_Break_On_Mutate=Wyłącz wstrzymywanie na zmianach
-html.label.Break_On_Text_Change=Wstrzymuj na zmianach tekstu
-html.label.HTML_Breakpoints=Punkty wstrzymywania HTML
-html.label.Break_On_Attribute_Change=Wstrzymuj na zmianach atrybutu
-html.tip.Break_On_Attribute_Change=Wstrzymuje wykonanie kodu JavaScript, gdy atrybut tego elementu został zmieniony
-html.label.Break_On_Child_Addition_or_Removal=Wstrzymuj na usunięciu lub dodaniu potomnego węzła
-html.tip.Break_On_Child_Addition_or_Removal=Wstrzymuje wykonanie kodu JavaScript, gdy do tego elementu został dodany lub usunięty węzeł
-html.label.Break_On_Element_Removal=Wstrzymuj na usuniętych elementach
-html.tip.Break_On_Element_Removal=Wstrzymuje wykonanie kodu JavaScript, gdy element został usunięty
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-html.label.Expand/Contract_All=Rozwiń/Zwiń wszystko
-html.tip.Expand/Contract_All=Rozwija/zwija wszystkie elementy potomne rekurencyjnie
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-dom.scopeName=(zamknięcie)
-# 'break on next button' in the case the option is activated
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-dom.scopeParentName=(zakres rodzica)
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-dom.tip.scopeName=Użyj <func>.%closureVariable, aby uzyskać dostęp do wiersza poleceń
-# examples: Edit Attribute "onclick"...
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-dom.tip.scopeMemberName=Użyj <func>.%S, aby uzyskać dostęp do wiersza poleceń
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-firebug.reps.declarativeScope=[zakres deklaratywny]
-firebug.reps.objectScope=[zakres obiektu]
-firebug.reps.withScope=[z zakresem]
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-firebug.reps.optimizedAway=(zoptymalizowany)
-# examples: Inherited from table.tabView
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-firebug.reps.element.attribute_value=wartość atrybutu
-firebug.reps.element.property_value=wartość własności
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-dom.label.breakOnPropertyChange=Zatrzymaj na zmianie właściwości
-dom.tip.Break_On_Property_Change=Wstrzymuje wykonanie kodu JavaScript, gdy właściwość została zmieniona
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-dom.disableBreakOnPropertyChange=Zwolnij zatrzymanie na zmianie właściwości
-dom.label.DOM_Breakpoints=Punkty wstrzymywania DOM
-# The text between <a> and </a> is displayed as a link.
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-EditAttribute=Edytuj atrybut „%S”…
-html.tip.Edit_Attribute=Edytuj wartość atrybutu „%S” tego elementu
-# examples: Delete "div > p"
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-DeleteAttribute=Usuń atrybut „%S”
-html.tip.Delete_Attribute=Usuwa z elementu atrybut „%S”
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-InheritedFrom=Dziedziczony z
-SothinkWarning=Rozszerzenie Sothink SWF Catcher zakłóca działanie Firebuga.<br><br>Zapoznaj się z tematem znajdującym się w <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">FAQ Firebuga</a>.
-# examples: Edit "background-color"...
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-css.fontFamilyPreview=Filmuj rzeź żądań, pość, gnęb chłystków!. 0123456789
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-css.EmptyStyleSheet=Nie ma reguł. Możesz <a>utworzyć regułę</a>.
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-css.EmptyElementCSS=Ten element nie ma reguł stylu. Możesz dla niego <a>utworzyć regułę</a>.
-EditStyle=Edytuj styl elementu…
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Dodaj regułę…
-css.tip.AddRule=Dodaj ogólną regułę dla tego elementu
-NewRule=Nowa reguła…
-css.tip.New_Rule=Dodaj nową regułę
-# examples: Delete "background-color"
-# Console context menu labels.
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-css.Delete_Rule=Usuń „%S”
-css.tip.Delete_Rule=Usuwa regułę „%S” i wszystkie jej właściwości
-# throw/catch blocks is enabled.
-# Breakpoints side panel
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-css.menu.Edit_Media_Query=Edytuj zapytania mediów…
-css.menu.tip.Edit_Media_Query=Edytuj zapytania mediów (media queries) przypisane do tej reguły
-NewProp=Nowa właściwość…
-css.tip.New_Prop=Dodaje nową właściwość do aktualnej reguły
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-EditProp=Edytuj „%S”…
-css.tip.Edit_Prop=Edytuj wartość właściwości „%S”
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-DisableProp=Wyłącz „%S”
-css.tip.Disable_Prop=Wyłącza właściwość „%S”
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-DeleteProp=Usuń „%S”
-css.tip.Delete_Prop=Usuwa właściwość „%S”
-# Message displayed in the Stack side panel if the script execution is not stopped.
-BreakOnThisError=Wstrzymaj na tym błędzie
-console.menu.tip.Break_On_This_Error=Wstrzymuje wykonanie kodu JavaScript, gdy ten błąd wystąpi
-BreakOnAllErrors=Wstrzymuj na każdym błędzie
-console.menu.tip.Break_On_All_Errors=Wstrzymuje wykonanie kodu JavaScript, gdy wystąpi błąd
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-TrackThrowCatch=Śledź throw/catch
-script.option.tip.Track_Throw_Catch=Śledź wyjątki, nawet jeśli zostały przechwycone przez bloki try/catch
-UseLastLineForEvalName=Użyj ostatniego wiersza źródła dla nazw eval()
-UseMD5ForEvalName=Użyj MD5 dla nazw eval()
-# Labels for DOM panel options (located in tab's option menu)
-Breakpoints=Punkty wstrzymania
-ErrorBreakpoints=Błędy punktów wstrzymania
-LoggedFunctions=Zarejestrowane funkcje
-EnableAllBreakpoints=Włącz wszystkie punkty wstrzymania
-breakpoints.option.tip.Enable_All_Breakpoints=Włącz wszystkie wymienione punkty wstrzymania
-DisableAllBreakpoints=Wyłącza wszystkie punkty wstrzymania
-breakpoints.option.tip.Disable_All_Breakpoints=Wyłącza wszystkie wymienione punkty wstrzymania
-ClearAllBreakpoints=Usuń wszystkie punkty wstrzymania
-breakpoints.option.tip.Clear_All_Breakpoints=Usuń wszystkie wymienione punkty wstrzymania
-ConditionInput=Skrypt zostanie wstrzymany w tym punkcie, tylko jeśli poniższe wyrażenie jest poprawne:
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-breakpoints.Remove_Breakpoint=Usuń punkt wstrzymania
-breakpoints.tip.Remove_Breakpoint=Usuń punkt wstrzymania
-breakpoints.Disable_Breakpoint=Wyłącz punkt wstrzymania
-breakpoints.tip.Disable_Breakpoint=Wyłącz punkt wstrzymania
-breakpoints.Enable_Breakpoint=Włącz punkt wstrzymania
-breakpoints.tip.Enable_Breakpoint=Włącz punkt wstrzymania
-# Copies the selected source code to the clipboard.
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-script.balloon.Continue=Kontynuuj
-script.balloon.Disable=Wyłącz
-ScriptsFilterStatic=Wyświetlaj skrypty statyczne
-ScriptsFilterEval=Wyświetlaj skrypty eval i statyczne
-ScriptsFilterEvent=Wyświetlaj skrypty event i statyczne
-ScriptsFilterAll=Wyświetlaj skrypty statyczne, eval i event
-ScriptsFilterStaticShort=statyczne
-ScriptsFilterEvalShort=eval
-ScriptsFilterEventShort=event
-ScriptsFilterAllShort=wszystkie
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-callstack.Expand_All=Rozwiń wszystko
-callstack.tip.Expand_All=Rozwiń wszystkie funkcje ramki stosu
-callstack.Collapse_All=Zwiń wszystko
-callstack.tip.Collapse_All=Zwiń wszystkie funkcje ramki stosu
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-callstack.Execution_not_stopped=Ramki stosu są wyświetlane, gdy wykonanie skryptu zostanie zatrzymane.
-# also display styles defined by the user agent.
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-ShowUserProps=Wyświetlaj właściwości zdefiniowane przez użytkownika
-dom.option.tip.Show_User_Props=Wyświetla właściwości obiektu zdefiniowane przez użytkownika
-ShowUserFuncs=Wyświetlaj funkcje zdefiniowane przez użytkownika
-dom.option.tip.Show_User_Funcs=Wyświetla metody obiektu zdefiniowane przez użytkownika
-ShowDOMProps=Wyświetlaj właściwości DOM
-dom.option.tip.Show_DOM_Props=Wyświetla właściwości określone wewnątrz DOM
-ShowDOMFuncs=Wyświetlaj funkcje DOM
-dom.option.tip.Show_DOM_Funcs=Wyświetla funkcje określone wewnątrz DOM
-ShowDOMConstants=Wyświetlaj stałe DOM
-dom.option.tip.Show_DOM_Constants=Wyświetla stałe określone wewnątrz DOM
-ShowClosures=Wyświetl zamknięcia
-dom.option.tip.Show_Closures=Wyświetla zamknięcia skojarzone z różnymi funkcjami (uruchamia debugera)
-ShowInlineEventHandlers=Wyświetlaj znajdujące się w wierszu uchwyty zdarzenia
-ShowInlineEventHandlersTooltip=Wyświetla znajdujące się w wierszu uchwyty zdarzenia nie skojarzone z funkcją.
-ShowOwnProperties=Wyświetlaj tylko własne właściwości
-ShowOwnPropertiesTooltip=Nie wyświetlaj łańcucha prototype
-ShowEnumerableProperties=Wyświetlaj tylko numerowane właściwości
-ShowEnumerablePropertiesTooltip=Nie wyświetlaj nienumerowanych właściwości
-NoMembersWarning=Ten obiekt nie ma właściwości
-NewWatch=Nowe wyrażenie czujki…
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-AddWatch=Dodaj wyrażenie czujki
-watch.tip.Add_Watch=Dodaje do panelu czujki zaznaczenie/obiekt w celu obserwacji
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-CopySourceCode=Kopiuj źródło
-script.tip.Copy_Source_Code=Kopiuje do schowka zaznaczony kod źródłowy
-Use_hash_plus_number_to_go_to_line=Użyj #<number>, by przejść do wiersza
-CopyValue=Kopiuj wartość
-dom.tip.Copy_Value=Kopiuje do schowka wartość właściwości
-Copy_Name=Kopiuj nazwę
-dom.tip.Copy_Name=Kopiuje do schowka nazwę właściwości
-Copy_Path=Kopiuj ścieżkę
-dom.tip.Copy_Path=Kopiuje ścieżkę właściwości
-NewProperty=Nowa właściwość…
-EditProperty=Edytuj właściwość…
-dom.tip.Edit_Property=Edytuj wartość właściwości
-EditVariable=Edytuj zmienną…
-stack.tip.Edit_Variable=Edytuj wartość zmiennej
-EditWatch=Edytuj wyrażenie czujki…
-watch.tip.Edit_Watch=Edytuj wartość wyrażenia czujki
-DeleteProperty=Usuń właściwość
-dom.tip.Delete_Property=Usuwa właściwość
-DeleteWatch=Usuń wyrażenie czujki
-DeleteAllWatches=Usuń wszystkie czujki
-watch.tip.Delete_Watch=Usuwa wyrażenie czujki
-watch.tip.Delete_All_Watches=Usuwa wszystkie wyrażenia czujki
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-SetBreakpoint=Ustaw punkt wstrzymania
-script.tip.Set_Breakpoint=Zmiana ustawień punktu wstrzymania w bieżącym wierszu
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-EditBreakpointCondition=Edytuj warunek punktu wstrzymania…
-breakpoints.tip.Edit_Breakpoint_Condition=Edytuj warunek na podstawie, którego punkt wstrzymania zatrzyma wykonanie kodu JavaScript
-NoBreakpointsWarning=Na tej stronie nie ma punktów wstrzymania
-# :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-Only_Show_Applied_Styles=Wyświetl tylko zastosowane style
-style.option.tip.Only_Show_Applied_Styles=Zostaną wyświetlone tylko style mające zastosowanie do tego elementu
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-Show_User_Agent_CSS=Wyświetlaj CSS przeglądarki
-style.option.tip.Show_User_Agent_CSS=Będzie także wyświetlany CSS zawarty w kodzie przeglądarki
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-computed.option.label.Colors_As_Hex=Kolory w Hex
-computed.option.tip.Colors_As_Hex=Wyświetla kod kolorów w formacie heksaadecymalnym
-computed.option.label.Colors_As_RGB=Kolory w RGB
-computed.option.tip.Colors_As_RGB=Wyświetla kod kolorów w formacie RGB
-computed.option.label.Colors_As_HSL=Kolory w HSL
-computed.option.tip.Colors_As_HSL=Wyświetla kod kolorów w formacie HSL
-# 'margin-left', 'margin-bottom', 'margin-right'
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-style.option.label.active=:active
-style.option.tip.active=Wyświetla pseudo-klasy stylów dla :active
-# into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-style.option.label.hover=:hover
-style.option.tip.hover=Wyświetla pseudo-klasy stylów dla :hover
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-style.option.label.focus=:focus
-style.option.tip.focus=Wyświetla pseudo-klasy stylów dla :focus
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-css.label.Inspect_Declaration=Zbadaj deklarację
-css.tip.Inspect_Declaration= Bada deklarację tej czcionki
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-# Net panel
-Expand_Shorthand_Properties=Rozwiń właściwości skrótu
-css.option.tip.Expand_Shorthand_Properties=Rozwija właściwości skrótów CSS do ich komponentów
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-Sort_alphabetically=Porządkuj alfabetycznie
-computed.option.tip.Sort_Alphabetically=Porządkuj style alfabetycznie wg ich nazwy/grupy stylów w kategoriach
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-Show_Mozilla_specific_styles=Wyświetl style Mozilli
-computed.option.tip.Show_Mozilla_Specific_Styles=Będą wyświetlane również style z prefiksem -moz
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-computed.No_User-Defined_Styles=Ten element nie ma reguł stylu zdefiniowanych przez użytkownika.
-script.Type_any_key_to_filter_list=Aby filtrować listę wpisz dowolny znak
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-location.inline=W tekście
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-location.no_domain=Brak domeny
-# for a link, that switches the view between raw source code and formated header values.
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-LayoutPadding=dopełnienie
-LayoutBorder=obramowanie
-LayoutMargin=margines
-LayoutPosition=położenie
-LayoutAdjacent=przyległe
-position=położenie
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-ShowRulers=Wyświetlaj linijki i prowadnice
-layout.option.tip.Show_Rulers=Na stronie, po wskazaniu elementu układu, będą wyświetlane linijki i prowadnice
-# when a Net panel entry is expanded)
-Loading=Wczytywanie…
-Headers=Nagłówki
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-net.tip.Clear=Wyczyść listę zapytań
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-net.header.Reset_Header=Resetuj nagłówek
-net.header.tip.Reset_Header=Resetuj wyświetlanie nagłówka
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-net.header.URL=URL
-net.header.URL_Tooltip=Żądany URL i użyta metoda HTTP
-net.header.Status=Status
-net.header.Status_Tooltip=Status odebranej odpowiedzi
-net.header.Domain=Domena
-net.header.Domain_Tooltip=Domena wykonanego żądania
-net.header.Size=Rozmiar
-net.header.Size_Tooltip=Rozmiar odebranej odpowiedzi
-net.header.Timeline=Oś czasu
-net.header.Timeline_Tooltip=Szczegółowy chronometraż odpowiedzi na żądanie
-net.header.Local_IP=Lokalny IP
-net.header.Local_IP_Tooltip=Lokalny adres IP i numer portu, z którym żądanie jest powiązane.
-net.header.Remote_IP=Zdalny IP
-net.header.Remote_IP_Tooltip=Zdalny adres IP i numer portu, z którym żądanie jest powiązane.
-net.header.Protocol=Protokół
-net.header.Protocol_Tooltip=Adres URL protokołu używanego do umiejscowienia źródła w Internecie.
-# of entries has been reached.
-net.label.XHR_Breakpoints=Punkty wstrzymywania XHR
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-net.label.Break_On_XHR=Wstrzymuj na XHR
-net.tip.Break_On_XHR=Wstrzymuj wykonanie kodu JavaScript na XMLHttpRequest
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-net.headers.view_source=pokaż źródło
-net.headers.pretty_print=ładny wydruk
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-net.filter.label.All=Wszystkie
-net.filter.tooltip.All=Wyświetla wszystkie typy MIME
-net.filter.label.HTML=HTML
-net.filter.tooltip.HTML=Wyświetla tylko pliki HTML
-net.filter.label.CSS=CSS
-net.filter.tooltip.CSS=Wyświetla tylko pliki CSS
-net.filter.label.JS=JavaScript
-net.filter.tooltip.JS=Wyświetla tylko pliki JavaScript
-net.filter.label.XHR=XHR
-net.filter.tooltip.XHR=Wyświetla tylko XMLHttpRequests
-net.filter.label.Images=Obrazki
-net.filter.tooltip.Images=Wyświetla tylko obrazki
-net.filter.label.Plugins=Wtyczki
-net.filter.tooltip.Plugins=Wyświetla tylko pliki Flash i Silverlight
-net.filter.label.Media=Media
-net.filter.tooltip.Media=Wyświetla tylko pliki audio i wideo
-net.filter.label.Fonts=Czcionki
-net.filter.tooltip.Fonts=Wyświetla tylko czcionki
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-Post=Post
-Put=Put
-# example: (56ms, 15 calls)
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-Response=Odpowiedź
-URLParameters=Parametry
-Cache=Bufor pamięci
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Informacje ogólne
-fontviewer.Meta_Data=Dane „meta”
-fontviewer.view_source=podgląd źródła
-fontviewer.Preview=Podgląd
-fontviewer.view_characters=podgląd znaków
-fontviewer.pretty_print=ładne drukowanie
-fontviewer.view_sample=podgląd przykładu
-fontviewer.uniqueid=Unikalny ID
-fontviewer.vendor=Dostawca
-fontviewer.license=Licencja
-fontviewer.description=Opis
-fontviewer.copyright=Prawa autorskie
-fontviewer.credits=Podziękowania
-fontviewer.trademark=Znak towarowy
-fontviewer.licensee=Licencje
-fontviewer.extension=Rozszerzenie
-fontviewer.pangram=Filmuj rzeź żądań, pość, gnęb chłystków!
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-jsonviewer.sort=Sortuj wg klucza
-jsonviewer.do_not_sort=Nie sortuj
-# Support for standard actions.
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-net.jsonviewer.Copy_JSON=Kopiuj „%S” jako JSON
-# panel when clicking an error object.
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-RequestHeaders=Nagłówki żądania
-ResponseHeaders=Nagłówki odpowiedzi
-CachedResponseHeaders=Nagłówki odpowiedzi z bufora
-PostRequestHeaders=Nagłówki żądania z wysłanych elementów
-# panel when clicking an error object.
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-net.label.ResponseHeadersFromBFCache=Żądanie zostało przekazane bezpośrednio z bufora, więc nie ma odpowiedzi z serwera. Zobacz poniżej odpowiedź z bufora.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-plural.Limit_Exceeded2=Osiągnięto limit zapisów dziennika. Nie wyświetlone wpisy: %1$S.;Osiągnięto limit zapisów dziennika. Nie wyświetlone wpisy: %1$S.
-LimitPrefs=Preferences
-# to the console.
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-LimitPrefsTitle=Aby zmienić limit, zmień: „%S”
-Refresh=Odśwież
-panel.tip.Refresh=Odświeża wyświetlany panel
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-OpenInTab=Otwórz w nowej karcie
-firebug.tip.Open_In_Tab=Otwiera URL w nowej karcie przeglądarki
-Open_Response_In_New_Tab=Otwórz odpowiedź w nowej karcie
-net.tip.Open_Response_In_New_Tab=Otwiera odpowiedź w nowej karcie przeglądarki
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-Profile=Czas wykonania
-ProfilerStarted=Trwa sprawdzanie… Aby zobaczyć raport, naciśnij przycisk „Czas wykonania”.
-ProfilerRequiresTheScriptPanel=Aby wykonać profilowanie musi być włączony panel Skrypt.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-plural.Profile_Time2=(%1$Sms, %2$S wywołanie);(%1$Sms, %2$S wywołania);(%1$Sms, %2$S wywołań)
-NothingToProfile=Brak działania do sprawdzenia
-PercentTooltip=Procent czasu poświęconego wykonaniu tej funkcji
-CallsHeaderTooltip=Liczba wywołań tej funkcji
-OwnTimeHeaderTooltip=Czas wykonywania funkcji bez zagnieżdżonych wywołań
-TimeHeaderTooltip=Czas wykonywania funkcji łącznie z zagnieżdżonymi wywołaniami
-AvgHeaderTooltip=Średni czas łącznie z wywołaniami funkcji
-MinHeaderTooltip=Minimalny czas łącznie z wywołaniami funkcji
-MaxHeaderTooltip=Maksymalny czas łącznie z wywołaniami funkcji
-ProfileButton.Tooltip=Czas wykonania profilowania JavaScriptu
-Function=Funkcja
-Percent=Procent
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-Calls=Wywołania
-OwnTime=Własny czas
-Time=Czas
-Avg=Średni
-Min=Min.
-Max=Maks.
-File=Plik
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-Copy=Kopiuj
-Cut=Wytnij
-Remove=Usuń
-Delete=Usuń
-Paste=Wklej
-SelectAll=Zaznacz wszystko
-html.Copy_Node=Kopiuj %S
-html.tip.Copy_Node=Kopiuje do schowka węzeł %S i całą jego zawartość
-CopyInnerHTML=Kopiuj innerHTML
-html.tip.Copy_innerHTML=Kopiuje do schowka zawartość elementu
-CopyXPath=Kopiuj wyrażenie XPath
-html.tip.Copy_XPath=Kopiuje do schowka XPath elementu
-Copy_CSS_Path=Kopiuj ścieżkę CSS
-html.tip.Copy_CSS_Path=Kopiuje do schowka ścieżkę CSS elementu
-# in the Command Line
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-html.menu.Paste=Wklej %S
-html.tip.Paste=Wkleja %S jako treść
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-html.menu.Paste_Replace_Content=Zastąp zawartość
-html.tip.Paste_Replace_Content=Zastępuje zawartość węzła
-html.menu.Paste_Replace_Node=Zastąp węzeł
-html.tip.Paste_Replace_Node=Zastępuje kod HTML węzła
-html.menu.Paste_AsFirstChild=Jako pierwszy potomek
-html.tip.Paste_AsFirstChild=Zastępuje pierwszy potomek węzła
-html.menu.Paste_AsLastChild=Jako ostatni potomek
-html.tip.Paste_AsLastChild=Zastępuje ostatni potomek węzła
-html.menu.Paste_Before=Przed
-html.tip.Paste_Before=Wkleja przed węzłem
-html.menu.Paste_After=Po
-html.tip.Paste_After=Wkleja po węźle
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-html.menu.Reload_Frame=Odśwież ramkę
-html.menu.tip.Reload_Frame=Odśwież zawartość ramki
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-CopyLocation=Kopiuj adres
-clipboard.tip.Copy_Location=Kopiuje do schowka URL położenia obiektu
-CopyURLParameters=Kopiuj parametry URL
-net.tip.Copy_URL_Parameters=Kopiuje parametry URL do schowka
-CopyPOSTParameters=Kopiuj parametry POST
-net.tip.Copy_POST_Parameters=Kopiuje parametry POST do schowka
-CopyLocationParameters=Kopiuj adres z parametrami
-net.tip.Copy_Location_Parameters=Kopiuje do schowka URL włącznie z parametrami
-CopyRequestHeaders=Kopiuj nagłówki żądania
-net.tip.Copy_Request_Headers=Kopiuje do schowka nagłówki żądania
-CopyResponseHeaders=Kopiuj nagłówki odpowiedzi
-net.tip.Copy_Response_Headers=Kopiuje do schowka nagłówki odpowiedzi
-CopyResponse=Kopiuj zawartość odpowiedzi
-net.tip.Copy_Response=Kopiuje do schowka treść odpowiedzi
-# See 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-CopyError=Kopiuj błąd
-console.menu.tip.Copy_Error=Kopiuje do schowka informacje o błędzie
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-CopySource=Kopiuj funkcję
-dom.tip.Copy_Source=Kopiuje do schowka kod źródłowy funkcji
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-ShowCallsInConsole=Rejestruj wywołania dla „%S”
-dom.tip.Log_Calls_To_Function=Rejestruje w konsoli wywołania funkcji „%S”
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-ShowEventsInConsole=Rejestruj zdarzenia
-html.tip.Show_Events_In_Console=Rejestruje w konsoli informacje o zdarzeniach
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-panel.Enabled=Włączony
-panel.tip.Enabled=Wyświetla/ukrywa panel
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-panel.tooltip.Show_Command_Line_Popup=Wyświetl wiersz poleceń
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-console.MethodNotSupported=Konsola Firebuga nie obsługuje „%S”
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-commandline.errorSourceHeader=WYRAŻENIE SPRAWDZONE ZA POMOCĄ WIERSZA POLECEŃ FIREBUGA:
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-commandline.MethodDisabled=Ta metoda wiersza poleceń jest chwilowo wyłączona.
-# (breaking on next executed JavaScript statement)
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-commandline.MethodNotSupported=Wiersz poleceń Firebuga nie obsługuje „%S”
-# %1 = Number of requests
-# example: 21 requests
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-commandline.CurrentWindow=Aktywne okno:
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-console.Disable_Break_On_All_Errors=Wyłącz wstrzymywanie na wszystkich błędach
-console.Break_On_All_Errors=Wstrzymuj na wszystkich błędach
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-console.Break_On_This_Error=Wstrzymuj na tym błędzie
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-console.Use_Arrow_keys,_Tab_or_Enter=Użyj klawisza [Tab], klawiszy strzałek lub [Enter]
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-console.JSDisabledInFirefoxPrefs=Obsługa języka JavaScript jest wyłączona w ustawieniach Firefoksa. Jeśli chcesz używać konsoli, włącz tę opcję z poziomu Narzędzia » Opcje » Treść » Włącz obsługę języka JavaScript
-# the object path stack won't be displayed.
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-console.ScriptPanelMustBeEnabledForTraces=Aby śledzić stos, musi być włączony panel Skrypt. <a>Włącz panel Skrypt</a>
-# Allows copying the current CSS rule including all its properties to the clipboard.
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-tooltip.multipleFiltersHint=Aby wybrać kilka filtrów, użyj skrótu Ctrl+kliknięcie
-# Allows copying the current CSS rule's properties to the clipboard.
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-# LOCALIZATION NOTE (moduleManager.scriptPanelNotAvailable): A description used in the Script panel
-# this is for a bug that appeared in Firefox 9. Related to bug712289
-console.multiHighlightLimitExceeded=W tablicy znajduje się za dużo elementów do wyróżnienia (aktualny limit: %S).\\nSprawdź ustawienie „extensions.firebug.multiHighlightLimit”.
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-commandline.disabledForXMLDocs=Wiersz poleceń jest wyłączony dla stron w formacie XML. Możesz <a>przełączyć na HTML</a>, by go włączyć.
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-# Window: the scope inside of a Javascript window object.
-commandline.Use_in_Command_Line=Użyj w wierszu poleceń
-commandline.tip.Use_in_Command_Line=Uaktywnij wiersz poleceń i udostępnij tę wartość jako „$p”
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-commandline.include.includeSuccess=Własność %S została dołączona.
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-commandline.include.aliasNotFound=Nie znaleziono aliasu „%S”.
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-commandline.include.loadFail=Nie można wczytać skryptu %S
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-commandline.include.invalidRequestProtocol=Obsługiwane są tylko protokoły HTTP/HTTPS.
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-# Firebug shortcuts
-commandline.include.invalidSyntax=Inkluzja nie powiodła się z powodu błędów składni. Czy plik rzeczywiście zawiera kod JavaScript?
-# A11y Chrome Labels (not visible, spoken by screen readers)
-# A11y panelNode labels (not visible, spoken by screen readers)
-# A11y Domplate labels (not visible, spoken by screen readers)
-commandline.include.aliasCreated=Utworzono alias „%S”.
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-commandline.include.aliasRemoved=Alias „%S” został usunięty.
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-commandline.include.invalidAliasName=Nieprawidłowa nazwa aliasu: „%SW”. Nazwa aliasu nie może zawierać „.”lub „/”.
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-commandline.include.tooLongAliasName=Nieprawidłowa nazwa aliasu: „%SW”. Nazwa aliasu nie może zawierać więcej niż 30 znaków.
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-commandline.include.invalidAliasArgumentType=Nieprawidłowy drugi argument. Wymagana nazwa aliasu.
-# first %S = Line number, second %S = Function name, third %S = File name
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-commandline.include.invalidUrlArgumentType=Nieprawidłowy argument URL.
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-commandline.include.confirmDelete=Czy na pewno chcesz usunąć argument: „%S”?
-# examples: Match found for "test" in 17 log rows
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-commandline.include.noDefinedAlias=(jeszcze nie zdefiniowano aliasu)
-commandline.tip.Delete_Alias=Usuń ten alias
-commandline.tip.Edit_Alias_Name=Edytuj nazwę aliasu
-commandline.tip.Edit_Alias_URL=Edytuj URL aliasu
-commandline.tip.Open_In_Scratchpad=Otwiera zawartość skryptu w brudnopisie
-commandline.tip.Include_Script=Pobierz i wykonaj skrypt
-commandline.label.DeleteAlias=Usuń alias
-commandline.label.EditAliasName=Edytuj nazwę aliasu
-commandline.label.EditAliasURL=Edytuj URL aliasu
-commandline.label.OpenInScratchpad=Otwórz w Brudnopisie
-commandline.label.IncludeScript=zawiera „%S”
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-Do_not_show_this_message_again=Nie wyświetlaj tej informacji ponownie
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-scratchpad.loading=Wczytywanie, proszę czekać…
-scratchpad.failLoading=Wystąpił błąd w czasie wczytywania skryptu.
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-net.sizeinfo.Response_Body=Zawartość odpowiedzi
-net.sizeinfo.Post_Body=Przesłana zawartość
-net.sizeinfo.Total_Sent=Razem przesłano
-net.sizeinfo.Total_Received=Razem odebrano
-net.sizeinfo.Including_HTTP_Headers=Zawarte nagłówki HTTP
-net.ActivationMessage=Panel sieci został uaktywniony. Gdy panel jest nieaktywny, żadne żądania nie są wyświetlane.
-net.responseSizeLimitMessage=Wyczerpano limit rozmiaru odpowiedzi określony przez Firebuga. Kliknij <a>tutaj</a>, aby otworzyć całą odpowiedź w nowej karcie Firefoksa.
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-net.postDataSizeLimitMessage=Wyczerpano limit rozmiaru określony przez Firebuga.
-net.Break_On_XHR=Wstrzymuj na XHR
-net.label.Parameters=Parametry
-net.label.Parts=Części
-net.label.Source=Źródło
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-net.label.Resend=Wyślij ponownie
-net.tip.Resend=Wysyła zapytanie ponownie
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-net.option.Disable_Browser_Cache=Wyłącz bufor przeglądarki
-net.option.tip.Disable_Browser_Cache=Wyłącza bufor HTTP przeglądarki
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-net.option.Show_Paint_Events=Wyświetlaj zdarzenia kreślenia
-net.option.tip.Show_Paint_Events=Wyświetla zdarzenia MozAfterPaint w osi czasu zielonym kolorem
-# example: Match found for "main" in #mainContent h2 {
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-net.option.Show_BFCache_Responses=Wyświetlaj odpowiedzi BFCache
-net.option.tip.Show_BFCache_Responses=Będą wyświetlane również odpowiedzi z bufora Wstecz-Do przodu
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-script.Break_On_Next=Wstrzymaj na następnym
-script.Disable_Break_On_Next=Wyłącz wstrzymanie na następnym
-ShowHttpHeaders=Wyświetlaj nagłówki HTTP
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-plural.Request_Count2=%1$S żądanie;%1$S żądania;%a$S żądań
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-net.summary.from_cache=%S z bufora
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-net.summary.tip.request_count=Liczba żądań
-net.summary.tip.total_size=Liczna wszystkich żądań
-net.summary.tip.total_cached_size=Liczba wszystkich żądań z bufora
-net.summary.tip.total_request_time=Całkowity czas potrzebny do wczytania wszystkich żądań i czas występowania zdarzenia „onload”
-StopLoading=Zatrzymaj wczytywanie
-net.tip.Stop_Loading=Zatrzymuje wczytywanie żądania
-LargeData=(Bardzo dużo danych)
-ShowComputedStyle=Wyświetlaj styl wyliczony
-StyleGroup-text=Tekst
-StyleGroup-background=Tło
-StyleGroup-box=Model pudełkowy
-StyleGroup-layout=Układ
-StyleGroup-other=Inne
-Dimensions=%S x %S
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-CopyColor=Kopiuj kolor
-css.tip.Copy_Color=Kopiuje kolor do schowka
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-CopyImageLocation=Kopiuj adres obrazka
-css.tip.Copy_Image_Location=Kopiuje do schowka URL obrazka
-OpenImageInNewTab=Otwórz obrazek w nowej karcie
-css.tip.Open_Image_In_New_Tab=Otwiera obrazek w nowej karcie przeglądarki
-# examples: Match found for "05" in net summary row: 4.05s
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-OmitObjectPathStack=Pomijaj stos paska narzędzi
-callstack.option.tip.Omit_Object_Path_Stack=Nie będzie wyświetlana ścieżka stosu obiektu
-Load_Original_Source=Wczytaj oryginał źródła
-css.tip.Load_Original_Source=Odrzuca zmiany i wczytuje oryginalny CSS
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-callstack.option.Show_Arguments=Wyświetl argumenty
-callstack.option.tip.Show_Arguments=Wyświetla także argumenty funkcji
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-Copy_Rule_Declaration=Kopiuj zawartość reguły
-css.tip.Copy_Rule_Declaration=Kopiuje do schowka regułę razem ze wszystkimi jej właściwościami
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-# Console messages
-Copy_Style_Declaration=Kopiuj deklaracje stylu
-css.tip.Copy_Style_Declaration=Kopiuje do schowka właściwości reguły
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-css.label.Copy_Property_Declaration=Kopiuj deklarację własności
-css.tip.Copy_Property_Declaration=Kopiuje deklarację własności do schowka
-css.label.Copy_Property_Name=Kopiuj nazwę własności
-css.tip.Copy_Property_Name=Kopiuje nazwę własności do schowka
-css.label.Copy_Property_Value=Kopiuj wartość własności
-css.tip.Copy_Property_Value=Kopiuje wartość własności do schowka
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-plural.Error_Count2=%1$S błąd;%1$S błędy;%1$S błędów
-moduleManager.title=Panel %S jest wyłączony
-moduleManager.desc3=Aby włączyć/wyłączyć wszystkie panele jednocześnie użyj ikony Firebuga znajdującej się na pasku stanu. Do kontroli poszczególnych paneli użyj rozwijanego menu znajdującego się na etykiecie panelu:
-moduleManager.Enable=Włącz
-Suspend_Firebug=Zawieś działanie Firebuga
-Resume_Firebug=Wznów działanie Firebuga
-Reset_Panels_To_Disabled=Wyłącz panele
-Open_Console=Otwórz konsolę
-Open_Console_Tooltip=Otwiera konsolę śledzenia Firebuga.
-Scope_Chain=Łańcuch zasięgów
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-With_Scope=Z
-# to reload the sources
-Call_Scope=Wywołanie
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-Window_Scope=Okno
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-requestinfo.Blocking=Blokowanie
-requestinfo.Resolving=Odpytywanie DNS
-requestinfo.Connecting=Łączenie
-requestinfo.Sending=Wysyłanie
-requestinfo.Waiting=Oczekiwanie
-requestinfo.Receiving=Odbieranie
-requestinfo.ContentLoad=„DOMContentLoaded” (zdarzenie)
-requestinfo.WindowLoad=„load” (zdarzenie)
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-requestinfo.started.label=Czas rozpoczęcia żądania od początku
-requestinfo.phases.label=Fazy żądań rozpoczęcia i przebiegu w czasie relatywnie do rozpoczęcia żądania:
-requestinfo.timings.label=Przebieg zdarzenia w czasie relatywnie do rozpoczęcia żądania:
-search.Firebug_Search=Wyszukiwanie
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-search.Next=Następny
-search.tip.Next=Wyszukuje następny pasujący element
-search.Previous=Poprzedni
-search.tip.Previous=Wyszukuje poprzedni pasujący element
-search.Case_Sensitive=Rozróżniaj wielkość znaków
-search.tip.Case_Sensitive=W trakcie wyszukiwania będzie rozróżniana wielkość znaków
-search.Case_Insensitive=Nie rozróżniaj wielkości znaków
-search.tip.Case_Insensitive=W trakcie wyszukiwania nie będzie rozróżniana wielkość znaków
-search.Multiple_Files=Szukaj we wszystkich plikach
-search.tip.Multiple_Files=Wyszukiwanie będzie realizowane wewnątrz wszystkich plików powiązanych z tym panelem
-search.Use_Regular_Expression=Używaj wyrażeń regularnych
-search.tip.Use_Regular_Expression=W trakcie wyszukiwania podany ciąg znaków będzie interpretowany jako wyrażenie regularne
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-# LOCALIZATION NOTE (script.warning.no_chrome_debugging, script.suggestion.no_chrome_debugging):
-search.html.CSS_Selector=Selektor CSS
-search.net.Headers=Nagłówki
-search.net.Parameters=Parametry
-search.net.Response_Bodies=Treści odpowiedzi
-search.net.tip.Response_Bodies=Wyszukuje także w treści odpowiedzi
-firebug.console.Persist=Zachowuj zmiany
-firebug.console.Do_Not_Clear_On_Reload2=Podczas odświeżania strony panel nie będzie czyszczony
-firebug.console.Show_All_Log_Entries=Będą wyświetlane wszystkie wpisy dziennika
-firebug.console.Errors=Błędy
-firebug.console.Filter_by_Errors=Będą wyświetlane tylko błędy
-firebug.console.Warnings=Ostrzeżenia
-firebug.console.Filter_by_Warnings=Będą wyświetlane tylko ostrzeżenia
-firebug.console.Info=Informacje
-firebug.console.Filter_by_Info=Będą wyświetlane tylko informacje
-firebug.console.Debug_Info=Informacje debugowania
-firebug.console.Filter_by_Debug_Info=Będą wyświetlane tylko informacje debugowania
-firebug.Deactivate_Firebug=Dezaktywuj Firebuga
-firebug.tip.Deactivate_Firebug=Dezaktywuj Firebuga dla aktywnej witryny
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-firebug.tip.Toggle_Side_Panels=Zmień wyświetlanie paneli
-firebug.ShowFirebug=Otwórz Firebuga
-firebug.menu.tip.Open_Firebug=Wyświetla Firebuga
-firebug.HideFirebug=Ukryj Firebuga
-firebug.menu.tip.Minimize_Firebug=Minimalizuje Firebuga, ale pozostawia go aktywnym
-firebug.FocusFirebug=Przejdź do okna Firebuga
-firebug.menu.tip.Focus_Firebug=Przechodzi do odłączonego okna Firebuga
-firebug.menu.Enable_All_Panels=Włącz wszystkie panele
-firebug.menu.tip.Enable_All_Panels=Włącza wszystkie panele dające się uaktywnić
-firebug.menu.Disable_All_Panels=Wyłącz wszystkie panele
-firebug.menu.tip.Disable_All_Panels=Wyłącza wszystkie panele dające się uaktywnić
-firebug.menu.Customize_shortcuts=Dostosuj skróty klawiszowe
-firebug.menu.tip.Customize_Shortcuts=Dostosuj wewnętrzne skróty klawiszowe Firebuga
-firebug.Options=Ustawienia
-firebug.menu.tip.Options=Globalne ustawienia Firebuga
-firebug.menu.Enable_Accessibility_Enhancements=Włącz ułatwienia dostępu
-firebug.menu.tip.Enable_Accessibility_Enhancements=Włącza pełną kontrolę za pomocą klawiatury i innych rozszerzeń ułatwiających dostępność
-firebug.menu.Activate_Same_Origin_URLs2=Uaktywniaj dla adresów URL z tego samego źródła
-firebug.menu.tip.Activate_Same_Origin_URLs=Uaktywnia Firebuga dla adresów URL pochodzących z tego samego źródła
-firebug.menu.Reset_All_Firebug_Options=Resetuj wszystkie ustawienia Firebuga
-firebug.menu.tip.Reset_All_Firebug_Options=Przywraca wszystkie wartości domyślne ustawień Firebuga
-firebug.menu.Firebug_Online=Firebug online
-firebug.menu.tip.Firebug_Online=Witryny powiązane z Firebugiem
-firebug.menu.Extensions=Rozszerzenia Firebuga…
-firebug.menu.tip.Extensions=Pobierz i zainstaluj rozszerzenia Firebuga
-firebug.menu.Vertical_Panels=Pionowy układ paneli
-firebug.menu.tip.Vertical_Panels=Zmiana układu paneli Firebuga
-firebug.menu.Show_Info_Tips=Wyświetlaj podpowiedzi
-firebug.menu.tip.Show_Info_Tips=Będą wyświetlane podpowiedzi zawierające informacje o wskazanym elemencie
-firebug.Show_Error_Count=Wyświetlaj liczbę błędów
-firebug.menu.tip.Show_Error_Count=Będzie wyświetlana liczba błędów zapisanych w konsoli
-firebug.TextSize=Rozmiar tekstu
-firebug.menu.tip.Text_Size=Zmiana rozmiaru czcionki używanej w interfejsie Firebuga
-firebug.IncreaseTextSize=Zwiększ rozmiar tekstu
-firebug.menu.tip.Increase_Text_Size=Zwiększa rozmiar czcionki używanej w interfejsie Firebuga
-firebug.DecreaseTextSize=Zmniejsz rozmiar tekstu
-firebug.menu.tip.Decrease_Text_Size=Zmniejsza rozmiar czcionki używanej w interfejsie Firebuga
-firebug.NormalTextSize=Normalny rozmiar
-firebug.menu.tip.Normal_Text_Size=Przywraca domyślny rozmiar czcionki używanej w interfejsie Firebuga
-firebug.Website=Witryna Firebuga…
-firebug.menu.tip.Website=Otwiera oficjalną stronę internetową Firebuga
-firebug.help=Pomoc…
-firebug.menu.tip.help=Otwiera stronę z odnośnikami do stron opisujących działanie Firebuga
-firebug.Documentation=Dokumentacja…
-firebug.menu.tip.Documentation=Otwiera dokumentację Firebuga
-firebug.KeyShortcuts=Skróty klawiszowe…
-firebug.menu.tip.Key_Shortcuts=Otwiera wykaz używanych w Firebugu skrótów
-firebug.Forums=Grupa dyskusyjna…
-firebug.menu.tip.Forums=Otwiera stronę grupy dyskusyjnej
-firebug.Issues=Zgłaszanie błędów…
-firebug.menu.tip.Issues=Otwiera stronę zgłaszania błędów
-firebug.Donate=Dotacje…
-firebug.menu.tip.Donate=Otwiera stronę dotacji
-firebug.About=Firebug - informacje…
-firebug.menu.tip.About=Informacje o Firebugu
-ProfileJavaScript=Czas wykonania JavaScriptu
-firebug.menu.tip.Profile_JavaScript=Czas wykonania kodu JavaScript
-firebug.Search=Szukaj
-firebug.menu.tip.Search=Uaktywnia pole wyszukiwania
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-firebug.shortcut.reenterCommand.label=Wprowadź ponownie polecenie
-firebug.shortcut.tip.reenterCommand=Wprowadza ponownie do wiersza poleceń ostatnio użyte polecenie
-firebug.shortcut.toggleInspecting.label=Włącz/wyłącz badanie
-firebug.shortcut.tip.toggleInspecting=Włącza/wyłącza inspektora
-firebug.shortcut.toggleQuickInfoBox.label=Włącz/wyłącz okno informacji
-firebug.shortcut.tip.toggleQuickInfoBox=Włącza/wyłącza wyświetlanie panelu z informacjami o aktualnie badanym elemencie
-firebug.shortcut.toggleProfiling.label=Włącz/wyłącz czas wykonania
-firebug.shortcut.tip.toggleProfiling=Włącza/wyłącza sprawdzanie czasu wykonania JavaScriptu
-firebug.shortcut.focusCommandLine.label=Przejdź do wiersza poleceń
-firebug.shortcut.tip.focusCommandLine=Otwiera Firebuga i uaktywnia wiersz poleceń/przełącza wyświetlanie wiersza poleceń
-firebug.shortcut.focusFirebugSearch.label=Przejdź do szukania Firebuga
-firebug.shortcut.tip.focusFirebugSearch=Uaktywnia pole wyszukiwania
-firebug.shortcut.focusWatchEditor.label=Przejdź do edytora czujki
-firebug.shortcut.tip.focusWatchEditor=Przechodzi do panelu Skrypt i uaktywnia pole wprowadzania nowego wyrażenia czujki
-firebug.shortcut.focusLocation.label=Przejdź do położenia
-firebug.shortcut.tip.focusLocation=Otwiera menu położenia
-firebug.shortcut.nextObject.label=Następny obiekt
-firebug.shortcut.tip.nextObject=Wybiera następny obiekt w ścieżce elementu panelu
-firebug.shortcut.previousObject.label=Poprzedni obiekt
-firebug.shortcut.tip.previousObject=Wybiera poprzedni obiekt w ścieżce elementu panelu
-firebug.shortcut.customizeFBKeys.label=Dostosuj skróty Firebuga
-firebug.shortcut.tip.customizeFBKeys=Otwiera okno dostosowywania skrótów Firebuga
-firebug.shortcut.detachFirebug.label=Otwórz w nowym oknie
-firebug.shortcut.tip.detachFirebug=Wyświetla Firebuga w nowym osobnym oknie
-firebug.shortcut.leftFirebugTab.label=Wyświetl w lewym panelu
-firebug.shortcut.tip.leftFirebugTab=Wyświetla Firebuga w lewym panelu
-firebug.shortcut.rightFirebugTab.label=Wyświetl w prawym panelu
-firebug.shortcut.tip.rightFirebugTab=Wyświetla Firebuga w prawym panelu
-firebug.shortcut.toggleFirebug.label=Otwórz Firebuga
-firebug.shortcut.tip.toggleFirebug=Otwiera/minimalizuje interfejs Firebuga
-firebug.shortcut.closeFirebug.label=Dezaktywuj Firebuga
-firebug.shortcut.tip.closeFirebug=Dezaktywuje Firebuga dla aktywnej witryny
-firebug.shortcut.previousFirebugTab.label=Poprzedni panel
-firebug.shortcut.tip.previousFirebugTab=Wyświetla poprzednio wyświetlany panel Firebuga
-firebug.shortcut.clearConsole.label=Wyczyść konsolę
-firebug.shortcut.tip.clearConsole=Usuwa z konsoli wszystkie wpisy
-firebug.shortcut.openTraceConsole.label=Otwórz konsolę śledzenia
-firebug.shortcut.tip.openTraceConsole=Otwiera konsolę FBTrace
-firebug.shortcut.navBack.label=Wstecz
-firebug.shortcut.tip.navBack=Przełącza do poprzedniego panelu lub elementu z listy historii nawigacji
-firebug.shortcut.navForward.label=Do przodu
-firebug.shortcut.tip.navForward=Przełącza do następnego panelu lub elementu z listy historii nawigacji
-firebug.shortcut.increaseTextSize.label=Zwiększ rozmiar tekstu
-firebug.shortcut.tip.increaseTextSize=Zwiększa rozmiar czcionki używanej w interfejsie Firebuga
-firebug.shortcut.decreaseTextSize.label=Zmniejsz rozmiar tekstu
-firebug.shortcut.tip.decreaseTextSize=Zmniejsza rozmiar czcionki używanej w interfejsie Firebuga
-firebug.shortcut.normalTextSize.label=Normalny rozmiar tekstu
-firebug.shortcut.tip.normalTextSize=Przywraca domyślny rozmiar czcionki używanej w interfejsie Firebuga
-firebug.shortcut.help.label=Otwórz pomoc
-firebug.shortcut.tip.help=Otwiera stronę z odpowiedziami na często zadawane pytania
-firebug.shortcut.toggleBreakOn.label=Włącz/wyłącz wstrzymywanie na…
-firebug.shortcut.tip.toggleBreakOn=Włącza/wyłącza wstrzymywanie wykonania skryptu na konkretnych wydarzeniach występujących wewnątrz panelu
-firebug.panel_selector=Wybierz wyświetlane panele
-customizeShortcuts=Skróty klawiszowe Firebuga
-# the debugger is already halted at a breakpoint inside another tab/window.
-a11y.labels.panel_tools=Narzędzia paneli
-a11y.labels.firebug_panels=Panele
-a11y.labels.firebug_side_panels=Panele boczne
-a11y.labels.firebug_window=Okno
-a11y.labels.firebug_status=Status
-a11y.labels.reset=Resetuj
-a11y.labels.reset_shortcut=Resetuj skrót %S
-aria.labels.inactive_panel=Nieaktywny panel
-# The suggestion message represents an advice how to solve the problem.
-a11y.labels.log_rows=Wiersze loga
-a11y.labels.call_stack=Wywołania stosu
-a11y.labels.document_structure=Struktura dokumentu
-a11y.labels.title_panel=%S panel
-a11y.labels.title_side_panel=%S panel boczny
-a11y.labels.cached=Zbuforowane
-aria.labels.stack_trace=Śledzenie stosu
-# firebug.dtd
-a11y.layout.padding=dopełnienie
-a11y.layout.border=obramowanie
-a11y.layout.margin=margines
-a11y.layout.position=położenie
-a11y.layout.position_top=górne położenie
-a11y.layout.position_right=prawe położenie
-a11y.layout.position_bottom=dolne położenie
-a11y.layout.position_left=lewe położenie
-a11y.layout.margin_top=górny margines
-a11y.layout.margin_right=prawy margines
-a11y.layout.margin_bottom=dolny margines
-a11y.layout.margin_left=lewy margines
-a11y.layout.border_top=górne obramowanie
-a11y.layout.border_right=prawe obramowanie
-a11y.layout.border_bottom=dolne obramowanie
-a11y.layout.border_left=lewe obramowanie
-a11y.layout.padding_top=górne dopełnienie
-a11y.layout.padding_right=prawe dopełnienie
-a11y.layout.padding_bottom=dolne dopełnienie
-a11y.layout.padding_left=lewe dopełnienie
-a11y.layout.top=góra
-a11y.layout.right=prawa strona
-a11y.layout.bottom=dół
-a11y.layout.left=lewa strona
-a11y.layout.width=szerokość
-a11y.layout.height=wysokość
-a11y.layout.size=wielkość
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=obwiednia elementów
-a11y.descriptions.press_enter_to_edit_values=Aby edytować indywidualne wartości, naciśnij klawisz [Enter]
-a11y.labels.style_rules=reguły stylu
-aria.labels.inherited_style_rules=dziedziczone reguły stylu
-a11y.labels.computed_styles=style wyliczone
-a11y.labels.dom_properties=Właściwości DOM
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-a11y.labels.inline_editor=edytor inline
-a11y.labels.value_for_attribute_in_element=wartość atrybutu %S w elemencie %S
-a11y.labels.attribute_for_element=atrybut elementu %S
-a11y.labels.text_contents_for_element=tekst elementu %S
-a11y.labels.defined_in_file=zdefiniowano w %S
-a11y.labels.declarations_for_selector=deklaracja stylu selektora „%S”
-a11y.labels.property_for_selector=właściwość selektora: %S
-a11y.labels.value_property_in_selector=wartość właściwości %S selektora %S
-a11y.labels.css_selector=selektor CSS
-a11y.labels.source_code_for_file=kod źródłowy pliku %S
-a11y.labels.press_enter_to_add_new_watch_expression=Naciśnij klawisz [Enter], aby dodać nowe wyrażenie czujki
-# example: Step Out (Shift+F11)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-a11y.labels.overridden=uchylony
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-a11y.updates.has_conditional_break_point=miał warunkowy punkt wstrzymania
-a11y.updates.has_disabled_break_point=miał wyłączony punkt wstrzymania
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-a11y.updates.script_suspended_on_line_in_file=Skrypt wstrzymany na wierszu %S w %S, plik %S
-# editors.dtd
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-a11y.updates.match_found_in_logrows=Elementy pasujące do %S znaleziono w %S wierszach loga
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-a11y.updates.match_found_for_on_line=Elementy pasujące do „%S” znaleziono w wierszu %S w %S
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-a11y.updates.match_found_in_element=Elementy pasujące do „%S” znaleziono w %S elemencie ścieżki %S
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-a11y.updates.match_found_in_attribute=Znaleziono element pasujący do „%S” w atrybucie %S=%S z %S elementu ścieżki %S
-# and so nothing to display.
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-a11y.updates.match_found_in_text_content=Elementy pasujące do „%S” znaleziono w tekście: %S elementu %S ścieżki %S
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-a11y.updates.match_found_in_selector=Elementy pasujące do „%S” znaleziono w selektorze %S
-# if an object is passed into it.
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-a11y.updates.match_found_in_style_declaration=Elementy pasujące do „%S” znaleziono w deklaracji stylu %S w selektorze %S
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-a11y.updates.match_found_in_dom_property=Elementy pasujące do „%S” znaleziono we właściwościach DOM %S
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-# LOCALIZATION NOTE (firebug.Entire_Session):
-a11y.updates.match_found_in_net_row=Elementy pasujące do „%S” znaleziono w %S, %S : %S;
-# Label used within memory profiler results to mark summary information for entire session.
-a11y.updates.match_found_in_net_summary_row=elementy pasujące do „%S” znaleziono we wierszu podsumowującym sieć: %S
-a11y.updates.no_matches_found=Nie znaleziono elementów pasujących do „%S”
-confirmation.Reset_All_Firebug_Options=Czy na pewno chcesz przywrócić wszystkie domyślne ustawienia Firebuga?
-confirmation.Edit_CSS_Source=Istniejące zmiany CSS zostaną usunięte.\\nCzy na pewno chcesz edytować kod źródłowy?
-warning.Console_must_be_enabled=Konsola musi być włączona
-warning.Command_line_blocked?=Wiersz poleceń jest zablokowany?
-warning.dollar_change=Funkcja wiersza poleceń $() została zmieniona z $=getElementById(id) na $=querySelector(selector). Możesz zamiast tego spróbować $(„#%S”)
-message.Reload_to_activate_window_console=Wczytaj ponownie, aby uaktywnić okno konsoli
-message.sourceNotAvailableFor=Odśwież stronę, by pobrać kod źródłowy dla
-message.The_resource_from_this_URL_is_not_text=Zasoby z tego adresu URL nie są tekstem
-firebug.history.Go_back_to_this_panel=Wróć do tego panelu
-firebug.history.Stay_on_this_panel=Zostań w tym panelu
-firebug.history.Go_forward_to_this_panel=Przejdź do tego panelu
-firebug.history.Go_back=Wstecz
-firebug.history.Go_forward=Do przodu
-script.warning.inactive_during_page_load=Panel Skrypt był nieaktywny podczas wczytywania strony
-script.suggestion.inactive_during_page_load2=<a>Odśwież</a>, by zobaczyć wszystkie źródła
-script.warning.javascript_not_enabled=Javascript jest wyłączony
-script.suggestion.javascript_not_enabled=Zobacz Firefox » Narzędzia » Opcje… » Treść » Włącz obsługę języka Javascript
-script.button.enable_javascript=Włącz Javascript i odśwież
-script.warning.all_scripts_filtered=Wszystkie skrypty zostały przefiltrowane
-script.suggestion.all_scripts_filtered=Zobacz ustawienia filtra skryptów na pasku narzędzi panelu
-script.warning.no_system_source_debugging=Źródła systemu nie mogą być debugowane
-script.suggestion.no_system_source_debugging=Firebug obecnie nie może być używany do debugowania źródeł systemowych. Zobacz <a>zgłoszenie 5110</a>.
-script.warning.no_javascript=Nie ma kodu Javascript na tej stronie
-script.suggestion.no_javascript2=Jeśli znacznik <script> ma atrybut „type” powinno to równać się „text/javascript” lub „application/javascript. Wszystkie skrypty muszą dać się przetwarzać (mieć poprawną składnię).
-script.warning.debugger_active=Debugger jest aktywny
-script.suggestion.debugger_active=Debugger jest obecne zatrzymany w punkcie wstrzymania na innej stronie.
-script.button.Go_to_that_page=Przejdź do tej strony
-script.warning.debugger_not_activated=Debugger nie został uaktywniony
-script.suggestion.debugger_not_activated=Debugger nie został uaktywniony
-script.Script_panel_must_be_enabled=%S (musi być włączony panel Skrypt)
-firebug.Firebug=Firebug
-firebug.Close=Zamknij
-firebug.View=Widok
-firebug.Help=Pomoc
-firebug.Run=Uruchom
-firebug.Copy=Kopiuj
-firebug.History=Historia
-firebug.Run_the_entered_command=Uruchom wprowadzone polecenie
-firebug.Clear_the_Command_Editor=Wyczyść edytor poleceń
-firebug.Copy_the_script_as_a_bookmarklet=Skopiuj skrypt jako skryptozakładkę
-firebug.Insert_a_previously_entered_command=Wstaw poprzednio wprowadzone polecenie
-firebug.AlwaysOpenInWindow=Zawsze otwieraj w nowym oknie
-firebug.OpenWith=Otwórz za pomocą edytora
-firebug.menu.tip.Open_With=Otwiera treść w zewnętrznym edytorze
-firebug.Permissions=Witryny…
-firebug.Configure_Editors=Konfiguruj edytory
-script.tip.Script_Type=Wyświetlaj wg typu skryptu
-script.tip.Script_Filter_Static=Wyświetlaj tylko skrypty wczytywane razem ze stroną
-script.tip.Script_Filter_Evals=Wyświetlaj skrypty wczytywane razem ze stroną i skrypty utworzone za pomocą eval()
-script.tip.Script_Filter_Events=Wyświetlaj skrypty wczytywane razem ze stroną, skrypty utworzone za pomocą elementów nasłuchujących eval() i event
-script.tip.Script_Filter_All=Wyświetlaj wszystkie rodzaje skryptów
-firebug.labelWithShortcut=%S (%S)
-script.Rerun=Uruchom ponownie
-script.tip.Rerun=Uruchamia ponownie bieżący stos wywołań funkcji
-script.Continue=Kontynuuj
-script.tip.Continue=Kontynuuj wykonanie kodu JavaScript
-script.Step_Over=Następne polecenie
-script.tip.Step_Over=Wykonuje następne polecenie
-script.Step_Into=Przejdź do funkcji
-script.tip.Step_Into=Wykonuje następne polecenie i przechodzi do funkcji
-script.Step_Out=Wykonaj aż do powrotu
-script.tip.Step_Out=Wykonuje resztę funkcji i powraca do miejsca wywołania
-firebug.RunUntil=Wykonaj do tego wiersza
-script.tip.Run_Until=Wykonuje kod JavaScript do określonego wiersza
-firebug.Inspect=Zbadaj
-firebug.InspectElement=Zbadaj element
-firebug.InspectElementWithFirebug=Zbadaj element za pomocą Firebuga
-firebug.BreakOnErrors=Wstrzymuj na błędach
-firebug.InspectTooltip=Wskaż i kliknij element strony, by go zbadać
-firebug.EditHTMLTooltip=Edytuj ten kod HTML
-firebug.Profile=Czas wykonania
-firebug.Clear=Clear
-firebug.ClearConsole=Wyczyść konsolę
-firebug.ClearTooltip=Wyczyść konsolę
-editors.Configured_Firebug_Editors=Edytory Firebuga
-editors.Editor=Edytor
-editors.Executable=Wykonywalne
-editors.Launch_Arguments=Uruchom argumenty
-editors.Add=Dodaj
-editors.Remove=Usuń
-editors.Change=Zmień
-editors.Move_Up=Przenieś w górę
-editors.Close=Zamknij
-editors.Browse=Przeglądaj…
-changeEditor.Editor_Configuration=Konfiguracja edytora
-changeEditor.Name=Nazwa:
-changeEditor.Executable=Plik wykonywalny:
-changeEditor.CmdLine=Argumenty:
-changeEditor.Supplied_arguments=Argumenty dostarczone przez Firebuga:
-changeEditor.URL_of_file=Adres URL pliku (jeśli nie ma %url, domyślnie zostanie dodane %file)
-changeEditor.Path_to_local_file=Ścieżka do pliku lokalnego lub do kopii tymczasowej
-changeEditor.Line_number=Numer wiersza (jeśli jest dostępny)
-changeEditor.Invalid_Application_Path=Nieprawidłowa ścieżka aplikacji
-changeEditor.Application_does_not_exist=Podana ścieżka aplikacji nie istnieje!
-firebug.Edit=Edytuj
-firebug.css.sourceEdit=Edytuj źródło
-firebug.css.sourceEdit.tooltip=Edycja źródła stylów po wczytaniu przez przeglądarkę
-firebug.css.liveEdit=Edytuj na bieżąco
-firebug.css.liveEdit.tooltip=Edycja stylów wyodrębnionych z przeglądarki
-firebug.EditCSSTooltip=Edytuj ten arkusz stylów
-firebug.activation.privateBrowsingMode=W trybie prywatnym witryny nie są zapamiętywane
-firebug.breakpoint.showBreakNotifications=Wyświetlaj powiadomienia o wstrzymaniu
-firebug.breakpoint.tip.Show_Break_Notifications=Wyświetlaj powiadomienia, gdy funkcja Wstrzymaj na… lub słowo kluczowe debugger; zatrzymało wykonanie kodu JavaScript
-firebug.breakpoint.doNotShowBreakNotification2=Można włączyć/wyłączyć powiadomienia zatrzymań, wyświetlając <a>menu etykiety panelu</a>.
-firebug.bon.cause.disableDebuggerKeyword2=Naciśnięcie przycisku „Wyłącz” powoduje zastąpienie „debuger” przez wyłączony punkt zatrzymania.
-firebug.bon.tooltip.disableDebuggerKeyword2=Tworzy wyłączone punkty wstrzymania
-firebug.bon.scriptPanelNeeded=(musi być włączony panel Skrypt)
-firebug.dom.noChildren2=Nie ma obiektów potomnych
-firebug.reps.more=więcej
-firebug.reps.reference=Odwołanie cykliczne
-firebug.storage.totalItems=Przechowywane elementy: %1$S;Przechowywane elementy: %1$S
-firebug.reps.historyEntries=%1$S wpis historii,%1$S wpisy historii,%1$S wpisów historii
-firebug.reps.table.ObjectProperties=Właściwości obiektu
-firebug.completion.empty=(brak zakończeń)
-firebug.failedToPreviewObjectURL=Obiekt URL został najprawdopodobniej odwołany przy użyciu metody revokeObjectURL.
-firebug.failedToPreviewImageURL=Nie udało się wczytać podanego adresu URL.
-firebug.Memory_Profiler_Started=Uruchomiono analizator pamięci
-firebug.Objects_Added_While_Profiling=Obiekty dodane w trakcie analizy
-firebug.Memory_Profiler_Results=Wyniki analizy pamięci
-firebug.Entire_Session=Cała sesja
-console.msg.nothing_to_output=(nie ma nic do wysłania)
-console.msg.an_empty_string=(pusty ciąg znaków)
-cookies.legacy.firecookie_detected=Wykryto dodatek Firecookie. Ten dodatek został zintegrowany z Firebugiem 1.10. Aby zapobiec ewentualnym konfliktom, należy wykonać dezinstalację Firecookie.\n\nFirecookie zostanie całkowicie odinstalowany po ponownym uruchomieniu aplikacji.
-cookies.legacy.uninstall=Odinstaluj
-cookies.legacy.uninstall_and_restart=Odinstaluj i uruchom ponownie
-console.cmd.help_title=API wiersza poleceń
-console.cmd.help_title_desc=Naciśnij klawisz F1, by otworzyć pomoc Firebuga online
-console.cmd.tip_title=Porady dla wiersza poleceń
-console.cmd.tip_title_desc=Poznaj sztuczki i kruczki dla wiersza poleceń
-console.cmd.tip.javascript=Każde poprawne wyrażenie JavaScriptu może być wykonywane w wierszu poleceń. Przykład:
-console.cmd.tip.closures=Aby uzyskać dostęp do zmiennych w zamknięciach użyj składni „.%” – (zobacz <a>więcej</a>). Przykład:
-console.cmd.help.$=Zwraca pojedynczy element o podanym ID.
-console.cmd.help.$$=Zwraca tablicę elementów pasujących do podanego selektora CSS.
-console.cmd.help.$x=Zwraca tablicę elementów pasujących do podanego wyrażenia XPath.
-console.cmd.help.dir=Wyświetla interaktywny wykaz wszystkich własności obiektu. Wygląda identycznie, jak widok wewnątrz panelu DOM.
-console.cmd.help.dirxml=Wyświetla drzewo źródła XML elementu HTML lub XML. Wygląda identycznie, jak widok wewnątrz panelu HTML. Możesz kliknąć dowolny węzeł, by zbadać go w panelu HTML.
-console.cmd.help.cd=Domyślnie wiersz poleceń wyrażeń jest relatywny do okna najwyższego poziomu strony. cd() umożliwia użycie zamiast okna ramki w stronie.
-console.cmd.help.clear=Czyści konsolę.
-console.cmd.help.copy=Kopiuje dany parametr do schowka. Może być zwrotną wartością funkcji lub obiektu.
-console.cmd.help.inspect=Baba obiekt w najbardziej odpowiednim panelu lub w panelu zidentyfikowanym przez opcjonalny drugi argument. Dostępne panele to: HTML, CSS, Skrypt i DOM.
-console.cmd.help.keys=Zwraca tablicę zawierającą nazwy wszystkich własności obiektu.
-console.cmd.help.values=Zwraca tablicę zawierającą wszystkie własności obiektu.
-console.cmd.help.debug=Dodaje punkt wstrzymania na pierwszym wierszu funkcji.
-console.cmd.help.undebug=Usuwa punkt wstrzymania na pierwszym wierszu funkcji.
-console.cmd.help.monitor=Włącza rejestrację wszystkich wywołań funkcji.
-console.cmd.help.unmonitor=Wyłącza rejestrację wszystkich wywołań funkcji.
-console.cmd.help.monitorEvents=Włącza rejestrację wszystkich zdarzeń wysyłanych do obiektu. Opcjonalny drugi argument może definiować specyficzne zdarzenia lub typy zdarzeń. Możliwe typy zdarzeń to: „composition”, „contextmenu”, „drag”, „focus”, „form”, „key”, „load”, „mouse”, „mutation”, „paint”, „scroll”, „text”, „ui”, „xul” i „clipboard”.
-console.cmd.help.unmonitorEvents=Wyłącza rejestrację wszystkich zdarzeń wysyłanych do obiektu. Opcjonalny drugi argument może definiować specyficzne zdarzenia lub rodziny zdarzeń, których rejestracja zostanie wyłączona.
-console.cmd.help.profile=Włącza profiler JavaScriptu. Opcjonalny drugi argument może zawierać tekst wyświetlany w nagłówku raportu profilera.
-console.cmd.help.profileEnd=Wyłącza profiler JavaScriptu i wyświetla jego raport.
-console.cmd.help.table=Umożliwia rejestrację danych w postaci tabularycznej. Metoda ta wymaga parametru przedstawiającego dane w postaci tabeli – tablicę tablic lub listę obiektów. Opcjonalny drugi parametr może być użyty do określenia kolumn i/lub rejestrowanych własności.
-console.cmd.help.$0=Przedstawia ostatni element wybrany za pośrednictwem Inspektora.
-console.cmd.help.$1=Przedstawia przedostatni element wybrany przez Inspektora.
-console.cmd.help.$2=Wyraża trzeci od końca element wybrany przez Inspektora.
-console.cmd.help.$3=Wyraża czwarty od końca element wybrany przez Inspektora.
-console.cmd.help.$4=Wyraża piąty od końca element wybrany przez Inspektora.
-console.cmd.help.$n=Zwraca jeden z pięciu ostatnio wybranych elementów przez Inspektora. Metoda ta przyjmuje jeden wymagany parametr, który reprezentuje indeks elementu (począwszy od 0).
-console.cmd.help.$_=Wyraża wynik ostatnio ocenianego wyrażenia w wierszu poleceń.
-console.cmd.help.help=Wyświetla pomoc dla wszystkich dostępnych poleceń.
-console.cmd.help.include=Zawiera zdalny skrypt.
-console.cmd.help.$p=Po kliknięciu obiektu/wartości JavaScriptu i kliknięciu „Użyj w wierszu poleceń”, ta zmienna wiersza poleceń jest ustawiana jako wartość.
-console.cmd.help.getEventListeners=Zwraca obiekt ze wszystkimi zdarzeniami nasłuchu zarejestrowanymi bezpośrednio na elemencie lub innym zdarzeniu.
-console.cmd.helpUrlNotAvailable=Pomoc dla tego polecenia jest niedostępna.
-perftiming.bars.label=Fazy startu i upływu czasu dokumentu relatywnie do do czasu wczytywania:
-perftiming.events.label=Przebieg wydarzenia relatywnie do do czasu wczytywania:
-perftiming.details_title=Przebiegi wydajności
-perftiming.details_title_desc=Szczegółowe przebiegi
-perftiming.connectEnd=Czas zakończenia połączenia z serwerem.
-perftiming.connectStart=Czas przed rozpoczęciem połączenia z serwerem.
-perftiming.domComplete=Czas przed zakończeniem wczytywania dokumentu.
-perftiming.domContentLoadedEventEnd=Czas po zakończeniu wydarzenia DOMContentLoaded.
-perftiming.domContentLoadedEventStart=Czas tuż przed rozpoczęciem wydarzenia DOMContentLoaded.
-perftiming.domInteractive=Czas tuż przed ustawieniem gotowości na interaktywną.
-perftiming.domLoading=Czas tuż przed ustawieniem gotowości na wczytywanie.
-perftiming.domainLookupEnd=Czas po wyszukiwaniu nazwy domeny.
-perftiming.domainLookupStart=Czas tuż przed wyszukiwaniem nazwy domeny.
-perftiming.fetchStart=Czas rozpoczęcia pobierania zasobu.
-perftiming.loadEventEnd=Czas zakończenia zdarzenia wczytywania.
-perftiming.loadEventStart=Czas tuż przed wywołaniem zdarzenia wczytywania.
-perftiming.navigationStart=Czas po rozpoczęciu zamknięcia poprzedniego dokumentu.
-perftiming.redirectCount=Liczba przekierowań od czasu ostatniego nie-przekierowania.
-perftiming.redirectEnd=Czas po zakończeniu ostatniej odpowiedzi przekierowania.
-perftiming.redirectStart=Czas pobierania, który zainicjował przekierowanie.
-perftiming.requestStart=Czas tuż przed żądaniem serwera.
-perftiming.responseEnd=Czas po zakończeniu reakcji lub połączenia.
-perftiming.responseStart=Czas tuż przed rozpoczęciem reakcji.
-perftiming.unloadEventEnd=Czas po zamknięciu poprzedniego dokumentu.
-perftiming.unloadEventStart=Czas tuż przed wywołaniem zdarzenia zamknięcia.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Konsola
+panel.tip.console=Obserwacja wiadomości konsoli i wykonywania poleceń JavaScriptu
+Panel-net=Sieć
+panel.tip.net=Analizowanie ruchu w sieci
+Panel-html=HTML
+panel.tip.html=Badanie i manipulowanie węzłami DOM
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Badanie i manipulowanie arkuszami stylów CSS
+Panel-script=Skrypt
+panel.tip.script=Debugowanie kodu JavaScript
+Panel-dom=DOM
+panel.tip.dom=Badanie i manipulowanie właściwościami DOM
+Panel-css=Styl
+panel.tip.css=Badanie i manipulowanie regułami CSS wybranego węzła DOM
+Panel-computed=Wyliczone
+panel.tip.computed=Badanie wyliczonych wartości CSS wybranego węzła DOM
+Panel-layout=Układ
+panel.tip.layout=Badanie i manipulowanie danymi układu wybranego węzła DOM
+Panel-domSide=DOM
+panel.tip.domSide=Badanie i manipulowanie właściwościami DOM wybranego węzła DOM
+Panel-watches=Czujka
+panel.tip.watches=Badanie zmiennych JavaScriptu dostępnych w bieżącej ramce stosu i definiowanie wyrażeń czujki
+Panel-breakpoints=Punkty wstrzymania
+panel.tip.breakpoints=Manipulowanie ustawieniami punktów wstrzymania
+Panel-callstack=Stos
+panel.tip.callstack=Obserwacja bieżącego stosu wywołań JavaScriptu
+Panel-scopes=Zasięgi
+firebug.DetachFirebug=Otwórz w nowym oknie
+firebug.AttachFirebug=Zadokuj Firebuga w oknie przeglądarki
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox status bar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=Liczba stron z aktywnymi Firebugami: %1$S;Liczba stron z aktywnymi Firebugami: %1$S;Liczba stron z aktywnymi Firebugami: %1$S
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Dezaktywowany
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=Zadokowany
+minimized=Zminimalizowany
+enablement.for_all_pages=na wszystkich stronach
+enablement.on=Włączony
+enablement.off=Wyłączony
+enablement.Panel_activation_status=Status aktywacji panelu:
+none=Zamknięte
+Firebug_-_inactive_for_current_website=Firebug – nieaktywny dla aktualnej witryny
+Activate_Firebug_for_the_current_website=Uaktywnij Firebuga dla aktualnej witryny
+Minimized=Zminimalizowane
+Minimize_Firebug=Minimalizuj Firebuga
+On_for_all_web_pages=Uaktywnij na wszystkich stronach
+firebug.menu.tip.On_for_all_Web_Sites=Domyślnie aktywuj Firebuga dla wszystkich witryn
+firebug.menu.Clear_Activation_List=Wyczyść listę aktywacji
+firebug.menu.tip.Clear_Activation_List=Wyczyść listę witryn, dla których Firebug jest aktywny
+firebug.menu.Detached=Odłączony
+firebug.menu.tip.Detached=Interfejs Firebuga będzie wyświetlany w osobnym oknie
+firebug.menu.Top=Na górze
+firebug.menu.tip.Top=Interfejs Firebuga będzie wyświetlany jako panel na górze zawartości okna
+firebug.menu.Bottom=Na dole
+firebug.menu.tip.Bottom=Interfejs Firebuga będzie wyświetlany jako panel na dole zawartości okna
+firebug.menu.Left=Po lewej
+firebug.menu.tip.Left=Interfejs Firebuga będzie wyświetlany jako panel po lewej stronie zawartości okna
+firebug.menu.Right=Po prawej
+firebug.menu.tip.Right=Firebug będzie wyświetlany jako panel po prawej stronie zawartości okna
+firebug.uiLocation=Położenie interfejsu Firebuga
+firebug.menu.tip.UI_Location=Miejsce wyświetlania interfejsu Firebuga
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+annotations.confirm.clear=Czy chcesz wyczyścić adnotacje dla wszystkich witryn?
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug_options=Firebug - menu
+# Console panel options (located in tab's option menu)
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+firebug.Show_All_Panels=Wyświetlaj wszystkie panele
+console.option.Show_Command_Line=Wyświetlaj wiersz poleceń
+console.option.tip.Show_Command_Line=Uaktywnia/wyświetla wiersz poleceń
+# of an error, message, etc. within a source of a web page.
+ShowJavaScriptErrors=Wyświetlaj błędy JavaScriptu
+console.option.tip.Show_JavaScript_Errors=W konsoli będą wyświetlane błędy JavaScriptu
+ShowJavaScriptWarnings=Wyświetlaj ostrzeżenia JavaScriptu
+console.option.tip.Show_JavaScript_Warnings=W konsoli będą wyświetlane ostrzeżenia JavaScriptu
+ShowCSSErrors=Wyświetlaj błędy CSS
+console.option.tip.Show_CSS_Errors=W konsoli będą wyświetlane błędy CSS
+ShowXMLHTMLErrors=Wyświetlaj błędy XML/HTML
+console.option.tip.Show_XML_HTML_Errors=Rejestruje informacje o błędach w konsoli błędów
+ShowStackTrace=Wyświetlaj informacje śledzenia z błędami
+console.option.tip.Show_Stack_Trace=Wyświetla informacje śledzenia stosu dla błędów
+ShowXMLHttpRequests=Wyświetlaj obiekty XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=W konsoli będą wyświetlane obiekty XMLHttpRequests
+ShowChromeErrors=Wyświetlaj błędy Chrome
+console.option.tip.Show_System_Errors=W konsoli będą wyświetlane błędy programu i wewnętrzne błędy dodatków
+ShowChromeMessages=Wyświetlaj wiadomości Chrome
+console.option.tip.Show_System_Messages=W konsoli będą wyświetlane wiadomości programu i wewnętrzne wiadomości dodatków
+ShowNetworkErrors=Wyświetlaj błędy sieci
+console.option.tip.Show_Network_Errors=W konsoli będą wyświetlane błędy sieci
+JavascriptOptionsStrict=Wyświetlaj wszystkie ostrzeżenia
+console.option.tip.Show_Strict_Warnings=W konsoli będą wyświetlane także wszystkie ostrzeżenia
+Command_History=Historia poleceń
+console.option.Show_Command_Editor=Edytor poleceń
+console.option.tip.Show_Command_Editor=Przełącz do edytora poleceń
+commandLineShowCompleterPopup=Wyświetlaj listę automatycznych uzupełnień
+console.option.tip.Show_Completion_List_Popup=Będzie wyświetlana lista automatycznie uzupełnianych poleceń
+Assertion=Błędy asercji
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+Line=%S (wiersz %S)
+LineAndCol=%S (wiersz %S, kolumna %S)
+InstanceLine=%S #%S (wiersz %S)
+StackItem=%S (%S wiersz %S)
+SystemItem=<System>
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+panel.Inspect_In_Panel=Zbadaj w panelu %S
+panel.tip.Inspect_In_Panel=Przełącza do panelu %S, by zbadać obiekt
+NoName=(bez nazwy)
+# %S = jsdIScript.tag
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+jsdIScript=jsdIScript %S
+# of an element will not be cropped
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+ShowFullText=Wyświetlaj cały tekst
+html.option.tip.Show_Full_Text=Zawartość elementu nie będzie obcinana
+# nodes will be shown
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowWhitespace=Wyświetlaj znaki specjalne
+html.option.tip.Show_Whitespace=Wewnątrz węzłów będą wyświetlane znaki specjalne
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+ShowComments=Wyświetlaj komentarze
+html.option.tip.Show_Comments=Będą wyświetlane komentarze węzłów
+# shown in their entity representation, e.g. " => ", & => &
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+html.option.Show_Entities_As_Symbols=Wyświetlaj encje jako symbole
+html.option.tip.Show_Entities_As_Symbols=Wyświetla wszystkie encje XML , używając ich graficznych symboli
+html.option.Show_Entities_As_Names=Wyświetlaj encje jako nazwy
+html.option.tip.Show_Entities_As_Names=Wyświetla wszystkie encje XML , używając ich nazw
+html.option.Show_Entities_As_Unicode=Wyświetlaj encje jako Unicode
+html.option.tip.Show_Entities_As_Unicode=SWyświetla wszystkie encje XML , używając Unicode
+# will be highlighted
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+HighlightMutations=Wyróżniaj zmiany
+html.option.tip.Highlight_Mutations=Zmiany wewnątrz węzłów będą wyróżniane
+# will be expanded to display changed nodes
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+ExpandMutations=Rozwijaj zmiany
+html.option.tip.Expand_Mutations=Drzewo będzie rozwijane, by wyświetlić zmienione węzły
+# will be scrolled to display changed nodes
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+ScrollToMutations=Przewijaj widok do zmiany
+html.option.tip.Scroll_To_Mutations=Widok drzewa będzie przewijany do zmienionych węzłów
+# a panel will be shown including information about the currently inspected element
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+ShowQuickInfoBox=Wyświetlaj okienko informacji
+inspect.option.tip.Show_Quick_Info_Box=W panelu będzie wyświetlane okienko zawierające informacje o aktualnie badanym elemencie
+# will be scrolled to display changed nodes
+# Quick Info Box
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+ShadeBoxModel=Przyciemnij okienko informacji
+inspect.option.tip.Shade_Box_Model=Różne części okienka będą przyciemniane
+ScrollIntoView=Przewijaj widok
+html.tip.Scroll_Into_View=Strona będzie mogła być przewijana, by zobaczyć wszystkie elementy
+NewAttribute=Nowy atrybut…
+html.tip.New_Attribute=Dodaje nowy atrybut do tego elementu
+html.Edit_Node=Edytuj %S…
+html.Node=Węzeł
+html.tip.Edit_Node=Edytuj %S za pomocą pełnotekstowego edytora
+DeleteElement=Usuń element
+html.Delete_Element=Usuwa element z drzewa
+DeleteNode=Usuń węzeł
+html.Delete_Node=Usuwa węzeł z drzewa
+# button that are used when the HTML panel is currently selected. The button allows stopping
+quickInfo=Szybka informacja
+computedStyle=Styl wyliczony
+# JS execution when DOM of the current page is modified.
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+html.Break_On_Mutate=Wstrzymuj na zmianach
+html.Disable_Break_On_Mutate=Wyłącz wstrzymywanie na zmianach
+html.label.Break_On_Text_Change=Wstrzymuj na zmianach tekstu
+html.label.HTML_Breakpoints=Punkty wstrzymywania HTML
+html.label.Break_On_Attribute_Change=Wstrzymuj na zmianach atrybutu
+html.tip.Break_On_Attribute_Change=Wstrzymuje wykonanie kodu JavaScript, gdy atrybut tego elementu został zmieniony
+html.label.Break_On_Child_Addition_or_Removal=Wstrzymuj na usunięciu lub dodaniu potomnego węzła
+html.tip.Break_On_Child_Addition_or_Removal=Wstrzymuje wykonanie kodu JavaScript, gdy do tego elementu został dodany lub usunięty węzeł
+html.label.Break_On_Element_Removal=Wstrzymuj na usuniętych elementach
+html.tip.Break_On_Element_Removal=Wstrzymuje wykonanie kodu JavaScript, gdy element został usunięty
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+html.label.Expand/Contract_All=Rozwiń/Zwiń wszystko
+html.tip.Expand/Contract_All=Rozwija/zwija wszystkie elementy potomne rekurencyjnie
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+dom.scopeName=(zamknięcie)
+# 'break on next button' in the case the option is activated
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+dom.scopeParentName=(zakres rodzica)
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+dom.tip.scopeName=Użyj <func>.%closureVariable, aby uzyskać dostęp do wiersza poleceń
+# examples: Edit Attribute "onclick"...
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+dom.tip.scopeMemberName=Użyj <func>.%S, aby uzyskać dostęp do wiersza poleceń
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+firebug.reps.declarativeScope=[zakres deklaratywny]
+firebug.reps.objectScope=[zakres obiektu]
+firebug.reps.withScope=[z zakresem]
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+firebug.reps.optimizedAway=(zoptymalizowany)
+# examples: Inherited from table.tabView
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+firebug.reps.element.attribute_value=wartość atrybutu
+firebug.reps.element.property_value=wartość własności
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+dom.label.breakOnPropertyChange=Zatrzymaj na zmianie właściwości
+dom.tip.Break_On_Property_Change=Wstrzymuje wykonanie kodu JavaScript, gdy właściwość została zmieniona
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+dom.disableBreakOnPropertyChange=Zwolnij zatrzymanie na zmianie właściwości
+dom.label.DOM_Breakpoints=Punkty wstrzymywania DOM
+# The text between <a> and </a> is displayed as a link.
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+EditAttribute=Edytuj atrybut „%S”…
+html.tip.Edit_Attribute=Edytuj wartość atrybutu „%S” tego elementu
+# examples: Delete "div > p"
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+DeleteAttribute=Usuń atrybut „%S”
+html.tip.Delete_Attribute=Usuwa z elementu atrybut „%S”
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+InheritedFrom=Dziedziczony z
+SothinkWarning=Rozszerzenie Sothink SWF Catcher zakłóca działanie Firebuga.<br><br>Zapoznaj się z tematem znajdującym się w <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">FAQ Firebuga</a>.
+# examples: Edit "background-color"...
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+css.fontFamilyPreview=Filmuj rzeź żądań, pość, gnęb chłystków!. 0123456789
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+css.EmptyStyleSheet=Nie ma reguł. Możesz <a>utworzyć regułę</a>.
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+css.EmptyElementCSS=Ten element nie ma reguł stylu. Możesz dla niego <a>utworzyć regułę</a>.
+EditStyle=Edytuj styl elementu…
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Dodaj regułę…
+css.tip.AddRule=Dodaj ogólną regułę dla tego elementu
+NewRule=Nowa reguła…
+css.tip.New_Rule=Dodaj nową regułę
+# examples: Delete "background-color"
+# Console context menu labels.
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+css.Delete_Rule=Usuń „%S”
+css.tip.Delete_Rule=Usuwa regułę „%S” i wszystkie jej właściwości
+# throw/catch blocks is enabled.
+# Breakpoints side panel
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+css.menu.Edit_Media_Query=Edytuj zapytania mediów…
+css.menu.tip.Edit_Media_Query=Edytuj zapytania mediów (media queries) przypisane do tej reguły
+NewProp=Nowa właściwość…
+css.tip.New_Prop=Dodaje nową właściwość do aktualnej reguły
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+EditProp=Edytuj „%S”…
+css.tip.Edit_Prop=Edytuj wartość właściwości „%S”
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+DisableProp=Wyłącz „%S”
+css.tip.Disable_Prop=Wyłącza właściwość „%S”
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+DeleteProp=Usuń „%S”
+css.tip.Delete_Prop=Usuwa właściwość „%S”
+# Message displayed in the Stack side panel if the script execution is not stopped.
+BreakOnThisError=Wstrzymaj na tym błędzie
+console.menu.tip.Break_On_This_Error=Wstrzymuje wykonanie kodu JavaScript, gdy ten błąd wystąpi
+BreakOnAllErrors=Wstrzymuj na każdym błędzie
+console.menu.tip.Break_On_All_Errors=Wstrzymuje wykonanie kodu JavaScript, gdy wystąpi błąd
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+TrackThrowCatch=Śledź throw/catch
+script.option.tip.Track_Throw_Catch=Śledź wyjątki, nawet jeśli zostały przechwycone przez bloki try/catch
+UseLastLineForEvalName=Użyj ostatniego wiersza źródła dla nazw eval()
+UseMD5ForEvalName=Użyj MD5 dla nazw eval()
+# Labels for DOM panel options (located in tab's option menu)
+Breakpoints=Punkty wstrzymania
+ErrorBreakpoints=Błędy punktów wstrzymania
+LoggedFunctions=Zarejestrowane funkcje
+EnableAllBreakpoints=Włącz wszystkie punkty wstrzymania
+breakpoints.option.tip.Enable_All_Breakpoints=Włącz wszystkie wymienione punkty wstrzymania
+DisableAllBreakpoints=Wyłącza wszystkie punkty wstrzymania
+breakpoints.option.tip.Disable_All_Breakpoints=Wyłącza wszystkie wymienione punkty wstrzymania
+ClearAllBreakpoints=Usuń wszystkie punkty wstrzymania
+breakpoints.option.tip.Clear_All_Breakpoints=Usuń wszystkie wymienione punkty wstrzymania
+ConditionInput=Skrypt zostanie wstrzymany w tym punkcie, tylko jeśli poniższe wyrażenie jest poprawne:
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+breakpoints.Remove_Breakpoint=Usuń punkt wstrzymania
+breakpoints.tip.Remove_Breakpoint=Usuń punkt wstrzymania
+breakpoints.Disable_Breakpoint=Wyłącz punkt wstrzymania
+breakpoints.tip.Disable_Breakpoint=Wyłącz punkt wstrzymania
+breakpoints.Enable_Breakpoint=Włącz punkt wstrzymania
+breakpoints.tip.Enable_Breakpoint=Włącz punkt wstrzymania
+# Copies the selected source code to the clipboard.
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+script.balloon.Continue=Kontynuuj
+script.balloon.Disable=Wyłącz
+ScriptsFilterStatic=Wyświetlaj skrypty statyczne
+ScriptsFilterEval=Wyświetlaj skrypty eval i statyczne
+ScriptsFilterEvent=Wyświetlaj skrypty event i statyczne
+ScriptsFilterAll=Wyświetlaj skrypty statyczne, eval i event
+ScriptsFilterStaticShort=statyczne
+ScriptsFilterEvalShort=eval
+ScriptsFilterEventShort=event
+ScriptsFilterAllShort=wszystkie
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+callstack.Expand_All=Rozwiń wszystko
+callstack.tip.Expand_All=Rozwiń wszystkie funkcje ramki stosu
+callstack.Collapse_All=Zwiń wszystko
+callstack.tip.Collapse_All=Zwiń wszystkie funkcje ramki stosu
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+callstack.Execution_not_stopped=Ramki stosu są wyświetlane, gdy wykonanie skryptu zostanie zatrzymane.
+# also display styles defined by the user agent.
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+ShowUserProps=Wyświetlaj właściwości zdefiniowane przez użytkownika
+dom.option.tip.Show_User_Props=Wyświetla właściwości obiektu zdefiniowane przez użytkownika
+ShowUserFuncs=Wyświetlaj funkcje zdefiniowane przez użytkownika
+dom.option.tip.Show_User_Funcs=Wyświetla metody obiektu zdefiniowane przez użytkownika
+ShowDOMProps=Wyświetlaj właściwości DOM
+dom.option.tip.Show_DOM_Props=Wyświetla właściwości określone wewnątrz DOM
+ShowDOMFuncs=Wyświetlaj funkcje DOM
+dom.option.tip.Show_DOM_Funcs=Wyświetla funkcje określone wewnątrz DOM
+ShowDOMConstants=Wyświetlaj stałe DOM
+dom.option.tip.Show_DOM_Constants=Wyświetla stałe określone wewnątrz DOM
+ShowClosures=Wyświetl zamknięcia
+dom.option.tip.Show_Closures=Wyświetla zamknięcia skojarzone z różnymi funkcjami (uruchamia debugera)
+ShowInlineEventHandlers=Wyświetlaj znajdujące się w wierszu uchwyty zdarzenia
+ShowInlineEventHandlersTooltip=Wyświetla znajdujące się w wierszu uchwyty zdarzenia nie skojarzone z funkcją.
+ShowOwnProperties=Wyświetlaj tylko własne właściwości
+ShowOwnPropertiesTooltip=Nie wyświetlaj łańcucha prototype
+ShowEnumerableProperties=Wyświetlaj tylko numerowane właściwości
+ShowEnumerablePropertiesTooltip=Nie wyświetlaj nienumerowanych właściwości
+NoMembersWarning=Ten obiekt nie ma właściwości
+NewWatch=Nowe wyrażenie czujki…
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+AddWatch=Dodaj wyrażenie czujki
+watch.tip.Add_Watch=Dodaje do panelu czujki zaznaczenie/obiekt w celu obserwacji
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+CopySourceCode=Kopiuj źródło
+script.tip.Copy_Source_Code=Kopiuje do schowka zaznaczony kod źródłowy
+Use_hash_plus_number_to_go_to_line=Użyj #<number>, by przejść do wiersza
+CopyValue=Kopiuj wartość
+dom.tip.Copy_Value=Kopiuje do schowka wartość właściwości
+Copy_Name=Kopiuj nazwę
+dom.tip.Copy_Name=Kopiuje do schowka nazwę właściwości
+Copy_Path=Kopiuj ścieżkę
+dom.tip.Copy_Path=Kopiuje ścieżkę właściwości
+NewProperty=Nowa właściwość…
+EditProperty=Edytuj właściwość…
+dom.tip.Edit_Property=Edytuj wartość właściwości
+EditVariable=Edytuj zmienną…
+stack.tip.Edit_Variable=Edytuj wartość zmiennej
+EditWatch=Edytuj wyrażenie czujki…
+watch.tip.Edit_Watch=Edytuj wartość wyrażenia czujki
+DeleteProperty=Usuń właściwość
+dom.tip.Delete_Property=Usuwa właściwość
+DeleteWatch=Usuń wyrażenie czujki
+DeleteAllWatches=Usuń wszystkie czujki
+watch.tip.Delete_Watch=Usuwa wyrażenie czujki
+watch.tip.Delete_All_Watches=Usuwa wszystkie wyrażenia czujki
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+SetBreakpoint=Ustaw punkt wstrzymania
+script.tip.Set_Breakpoint=Zmiana ustawień punktu wstrzymania w bieżącym wierszu
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+EditBreakpointCondition=Edytuj warunek punktu wstrzymania…
+breakpoints.tip.Edit_Breakpoint_Condition=Edytuj warunek na podstawie, którego punkt wstrzymania zatrzyma wykonanie kodu JavaScript
+NoBreakpointsWarning=Na tej stronie nie ma punktów wstrzymania
+# :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+Only_Show_Applied_Styles=Wyświetl tylko zastosowane style
+style.option.tip.Only_Show_Applied_Styles=Zostaną wyświetlone tylko style mające zastosowanie do tego elementu
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+Show_User_Agent_CSS=Wyświetlaj CSS przeglądarki
+style.option.tip.Show_User_Agent_CSS=Będzie także wyświetlany CSS zawarty w kodzie przeglądarki
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+computed.option.label.Colors_As_Hex=Kolory w Hex
+computed.option.tip.Colors_As_Hex=Wyświetla kod kolorów w formacie heksaadecymalnym
+computed.option.label.Colors_As_RGB=Kolory w RGB
+computed.option.tip.Colors_As_RGB=Wyświetla kod kolorów w formacie RGB
+computed.option.label.Colors_As_HSL=Kolory w HSL
+computed.option.tip.Colors_As_HSL=Wyświetla kod kolorów w formacie HSL
+# 'margin-left', 'margin-bottom', 'margin-right'
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+style.option.label.active=:active
+style.option.tip.active=Wyświetla pseudo-klasy stylów dla :active
+# into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+style.option.label.hover=:hover
+style.option.tip.hover=Wyświetla pseudo-klasy stylów dla :hover
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+style.option.label.focus=:focus
+style.option.tip.focus=Wyświetla pseudo-klasy stylów dla :focus
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+css.label.Inspect_Declaration=Zbadaj deklarację
+css.tip.Inspect_Declaration= Bada deklarację tej czcionki
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+# Net panel
+Expand_Shorthand_Properties=Rozwiń właściwości skrótu
+css.option.tip.Expand_Shorthand_Properties=Rozwija właściwości skrótów CSS do ich komponentów
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+Sort_alphabetically=Porządkuj alfabetycznie
+computed.option.tip.Sort_Alphabetically=Porządkuj style alfabetycznie wg ich nazwy/grupy stylów w kategoriach
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+Show_Mozilla_specific_styles=Wyświetl style Mozilli
+computed.option.tip.Show_Mozilla_Specific_Styles=Będą wyświetlane również style z prefiksem -moz
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+computed.No_User-Defined_Styles=Ten element nie ma reguł stylu zdefiniowanych przez użytkownika.
+script.Type_any_key_to_filter_list=Aby filtrować listę wpisz dowolny znak
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+location.inline=W tekście
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+location.no_domain=Brak domeny
+# for a link, that switches the view between raw source code and formated header values.
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+LayoutPadding=dopełnienie
+LayoutBorder=obramowanie
+LayoutMargin=margines
+LayoutPosition=położenie
+LayoutAdjacent=przyległe
+position=położenie
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+ShowRulers=Wyświetlaj linijki i prowadnice
+layout.option.tip.Show_Rulers=Na stronie, po wskazaniu elementu układu, będą wyświetlane linijki i prowadnice
+# when a Net panel entry is expanded)
+Loading=Wczytywanie…
+Headers=Nagłówki
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+net.tip.Clear=Wyczyść listę zapytań
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+net.header.Reset_Header=Resetuj nagłówek
+net.header.tip.Reset_Header=Resetuj wyświetlanie nagłówka
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+net.header.URL=URL
+net.header.URL_Tooltip=Żądany URL i użyta metoda HTTP
+net.header.Status=Status
+net.header.Status_Tooltip=Status odebranej odpowiedzi
+net.header.Domain=Domena
+net.header.Domain_Tooltip=Domena wykonanego żądania
+net.header.Size=Rozmiar
+net.header.Size_Tooltip=Rozmiar odebranej odpowiedzi
+net.header.Timeline=Oś czasu
+net.header.Timeline_Tooltip=Szczegółowy chronometraż odpowiedzi na żądanie
+net.header.Local_IP=Lokalny IP
+net.header.Local_IP_Tooltip=Lokalny adres IP i numer portu, z którym żądanie jest powiązane.
+net.header.Remote_IP=Zdalny IP
+net.header.Remote_IP_Tooltip=Zdalny adres IP i numer portu, z którym żądanie jest powiązane.
+net.header.Protocol=Protokół
+net.header.Protocol_Tooltip=Adres URL protokołu używanego do umiejscowienia źródła w Internecie.
+# of entries has been reached.
+net.label.XHR_Breakpoints=Punkty wstrzymywania XHR
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+net.label.Break_On_XHR=Wstrzymuj na XHR
+net.tip.Break_On_XHR=Wstrzymuj wykonanie kodu JavaScript na XMLHttpRequest
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+net.headers.view_source=pokaż źródło
+net.headers.pretty_print=ładny wydruk
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+net.filter.label.All=Wszystkie
+net.filter.tooltip.All=Wyświetla wszystkie typy MIME
+net.filter.label.HTML=HTML
+net.filter.tooltip.HTML=Wyświetla tylko pliki HTML
+net.filter.label.CSS=CSS
+net.filter.tooltip.CSS=Wyświetla tylko pliki CSS
+net.filter.label.JS=JavaScript
+net.filter.tooltip.JS=Wyświetla tylko pliki JavaScript
+net.filter.label.XHR=XHR
+net.filter.tooltip.XHR=Wyświetla tylko XMLHttpRequests
+net.filter.label.Images=Obrazki
+net.filter.tooltip.Images=Wyświetla tylko obrazki
+net.filter.label.Plugins=Wtyczki
+net.filter.tooltip.Plugins=Wyświetla tylko pliki Flash i Silverlight
+net.filter.label.Media=Media
+net.filter.tooltip.Media=Wyświetla tylko pliki audio i wideo
+net.filter.label.Fonts=Czcionki
+net.filter.tooltip.Fonts=Wyświetla tylko czcionki
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+Post=Post
+Put=Put
+# example: (56ms, 15 calls)
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+Response=Odpowiedź
+URLParameters=Parametry
+Cache=Bufor pamięci
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Informacje ogólne
+fontviewer.Meta_Data=Dane „meta”
+fontviewer.view_source=podgląd źródła
+fontviewer.Preview=Podgląd
+fontviewer.view_characters=podgląd znaków
+fontviewer.pretty_print=ładne drukowanie
+fontviewer.view_sample=podgląd przykładu
+fontviewer.uniqueid=Unikalny ID
+fontviewer.vendor=Dostawca
+fontviewer.license=Licencja
+fontviewer.description=Opis
+fontviewer.copyright=Prawa autorskie
+fontviewer.credits=Podziękowania
+fontviewer.trademark=Znak towarowy
+fontviewer.licensee=Licencje
+fontviewer.extension=Rozszerzenie
+fontviewer.pangram=Filmuj rzeź żądań, pość, gnęb chłystków!
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+jsonviewer.sort=Sortuj wg klucza
+jsonviewer.do_not_sort=Nie sortuj
+# Support for standard actions.
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+net.jsonviewer.Copy_JSON=Kopiuj „%S” jako JSON
+# panel when clicking an error object.
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+RequestHeaders=Nagłówki żądania
+ResponseHeaders=Nagłówki odpowiedzi
+CachedResponseHeaders=Nagłówki odpowiedzi z bufora
+PostRequestHeaders=Nagłówki żądania z wysłanych elementów
+# panel when clicking an error object.
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+net.label.ResponseHeadersFromBFCache=Żądanie zostało przekazane bezpośrednio z bufora, więc nie ma odpowiedzi z serwera. Zobacz poniżej odpowiedź z bufora.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+plural.Limit_Exceeded2=Osiągnięto limit zapisów dziennika. Nie wyświetlone wpisy: %1$S.;Osiągnięto limit zapisów dziennika. Nie wyświetlone wpisy: %1$S.
+LimitPrefs=Preferences
+# to the console.
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+LimitPrefsTitle=Aby zmienić limit, zmień: „%S”
+Refresh=Odśwież
+panel.tip.Refresh=Odświeża wyświetlany panel
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+OpenInTab=Otwórz w nowej karcie
+firebug.tip.Open_In_Tab=Otwiera URL w nowej karcie przeglądarki
+Open_Response_In_New_Tab=Otwórz odpowiedź w nowej karcie
+net.tip.Open_Response_In_New_Tab=Otwiera odpowiedź w nowej karcie przeglądarki
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+Profile=Czas wykonania
+ProfilerStarted=Trwa sprawdzanie… Aby zobaczyć raport, naciśnij przycisk „Czas wykonania”.
+ProfilerRequiresTheScriptPanel=Aby wykonać profilowanie musi być włączony panel Skrypt.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+plural.Profile_Time2=(%1$Sms, %2$S wywołanie);(%1$Sms, %2$S wywołania);(%1$Sms, %2$S wywołań)
+NothingToProfile=Brak działania do sprawdzenia
+PercentTooltip=Procent czasu poświęconego wykonaniu tej funkcji
+CallsHeaderTooltip=Liczba wywołań tej funkcji
+OwnTimeHeaderTooltip=Czas wykonywania funkcji bez zagnieżdżonych wywołań
+TimeHeaderTooltip=Czas wykonywania funkcji łącznie z zagnieżdżonymi wywołaniami
+AvgHeaderTooltip=Średni czas łącznie z wywołaniami funkcji
+MinHeaderTooltip=Minimalny czas łącznie z wywołaniami funkcji
+MaxHeaderTooltip=Maksymalny czas łącznie z wywołaniami funkcji
+ProfileButton.Tooltip=Czas wykonania profilowania JavaScriptu
+Function=Funkcja
+Percent=Procent
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+Calls=Wywołania
+OwnTime=Własny czas
+Time=Czas
+Avg=Średni
+Min=Min.
+Max=Maks.
+File=Plik
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+Copy=Kopiuj
+Cut=Wytnij
+Remove=Usuń
+Delete=Usuń
+Paste=Wklej
+SelectAll=Zaznacz wszystko
+html.Copy_Node=Kopiuj %S
+html.tip.Copy_Node=Kopiuje do schowka węzeł %S i całą jego zawartość
+CopyInnerHTML=Kopiuj innerHTML
+html.tip.Copy_innerHTML=Kopiuje do schowka zawartość elementu
+CopyXPath=Kopiuj wyrażenie XPath
+html.tip.Copy_XPath=Kopiuje do schowka XPath elementu
+Copy_CSS_Path=Kopiuj ścieżkę CSS
+html.tip.Copy_CSS_Path=Kopiuje do schowka ścieżkę CSS elementu
+# in the Command Line
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+html.menu.Paste=Wklej %S
+html.tip.Paste=Wkleja %S jako treść
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+html.menu.Paste_Replace_Content=Zastąp zawartość
+html.tip.Paste_Replace_Content=Zastępuje zawartość węzła
+html.menu.Paste_Replace_Node=Zastąp węzeł
+html.tip.Paste_Replace_Node=Zastępuje kod HTML węzła
+html.menu.Paste_AsFirstChild=Jako pierwszy potomek
+html.tip.Paste_AsFirstChild=Zastępuje pierwszy potomek węzła
+html.menu.Paste_AsLastChild=Jako ostatni potomek
+html.tip.Paste_AsLastChild=Zastępuje ostatni potomek węzła
+html.menu.Paste_Before=Przed
+html.tip.Paste_Before=Wkleja przed węzłem
+html.menu.Paste_After=Po
+html.tip.Paste_After=Wkleja po węźle
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+html.menu.Reload_Frame=Odśwież ramkę
+html.menu.tip.Reload_Frame=Odśwież zawartość ramki
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+CopyLocation=Kopiuj adres
+clipboard.tip.Copy_Location=Kopiuje do schowka URL położenia obiektu
+CopyURLParameters=Kopiuj parametry URL
+net.tip.Copy_URL_Parameters=Kopiuje parametry URL do schowka
+CopyPOSTParameters=Kopiuj parametry POST
+net.tip.Copy_POST_Parameters=Kopiuje parametry POST do schowka
+CopyLocationParameters=Kopiuj adres z parametrami
+net.tip.Copy_Location_Parameters=Kopiuje do schowka URL włącznie z parametrami
+CopyRequestHeaders=Kopiuj nagłówki żądania
+net.tip.Copy_Request_Headers=Kopiuje do schowka nagłówki żądania
+CopyResponseHeaders=Kopiuj nagłówki odpowiedzi
+net.tip.Copy_Response_Headers=Kopiuje do schowka nagłówki odpowiedzi
+CopyResponse=Kopiuj zawartość odpowiedzi
+net.tip.Copy_Response=Kopiuje do schowka treść odpowiedzi
+# See 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+CopyError=Kopiuj błąd
+console.menu.tip.Copy_Error=Kopiuje do schowka informacje o błędzie
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+CopySource=Kopiuj funkcję
+dom.tip.Copy_Source=Kopiuje do schowka kod źródłowy funkcji
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+ShowCallsInConsole=Rejestruj wywołania dla „%S”
+dom.tip.Log_Calls_To_Function=Rejestruje w konsoli wywołania funkcji „%S”
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+ShowEventsInConsole=Rejestruj zdarzenia
+html.tip.Show_Events_In_Console=Rejestruje w konsoli informacje o zdarzeniach
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+panel.Enabled=Włączony
+panel.tip.Enabled=Wyświetla/ukrywa panel
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+panel.tooltip.Show_Command_Line_Popup=Wyświetl wiersz poleceń
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+console.MethodNotSupported=Konsola Firebuga nie obsługuje „%S”
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+commandline.errorSourceHeader=WYRAŻENIE SPRAWDZONE ZA POMOCĄ WIERSZA POLECEŃ FIREBUGA:
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+commandline.MethodDisabled=Ta metoda wiersza poleceń jest chwilowo wyłączona.
+# (breaking on next executed JavaScript statement)
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+commandline.MethodNotSupported=Wiersz poleceń Firebuga nie obsługuje „%S”
+# %1 = Number of requests
+# example: 21 requests
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+commandline.CurrentWindow=Aktywne okno:
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+console.Disable_Break_On_All_Errors=Wyłącz wstrzymywanie na wszystkich błędach
+console.Break_On_All_Errors=Wstrzymuj na wszystkich błędach
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+console.Break_On_This_Error=Wstrzymuj na tym błędzie
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+console.Use_Arrow_keys,_Tab_or_Enter=Użyj klawisza [Tab], klawiszy strzałek lub [Enter]
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+console.JSDisabledInFirefoxPrefs=Obsługa języka JavaScript jest wyłączona w ustawieniach Firefoksa. Jeśli chcesz używać konsoli, włącz tę opcję z poziomu Narzędzia » Opcje » Treść » Włącz obsługę języka JavaScript
+# the object path stack won't be displayed.
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+console.ScriptPanelMustBeEnabledForTraces=Aby śledzić stos, musi być włączony panel Skrypt. <a>Włącz panel Skrypt</a>
+# Allows copying the current CSS rule including all its properties to the clipboard.
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+tooltip.multipleFiltersHint=Aby wybrać kilka filtrów, użyj skrótu Ctrl+kliknięcie
+# Allows copying the current CSS rule's properties to the clipboard.
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+# LOCALIZATION NOTE (moduleManager.scriptPanelNotAvailable): A description used in the Script panel
+# this is for a bug that appeared in Firefox 9. Related to bug712289
+console.multiHighlightLimitExceeded=W tablicy znajduje się za dużo elementów do wyróżnienia (aktualny limit: %S).\\nSprawdź ustawienie „extensions.firebug.multiHighlightLimit”.
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+commandline.disabledForXMLDocs=Wiersz poleceń jest wyłączony dla stron w formacie XML. Możesz <a>przełączyć na HTML</a>, by go włączyć.
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+# Window: the scope inside of a Javascript window object.
+commandline.Use_in_Command_Line=Użyj w wierszu poleceń
+commandline.tip.Use_in_Command_Line=Uaktywnij wiersz poleceń i udostępnij tę wartość jako „$p”
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+commandline.include.includeSuccess=Własność %S została dołączona.
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+commandline.include.aliasNotFound=Nie znaleziono aliasu „%S”.
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+commandline.include.loadFail=Nie można wczytać skryptu %S
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+commandline.include.invalidRequestProtocol=Obsługiwane są tylko protokoły HTTP/HTTPS.
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+# Firebug shortcuts
+commandline.include.invalidSyntax=Inkluzja nie powiodła się z powodu błędów składni. Czy plik rzeczywiście zawiera kod JavaScript?
+# A11y Chrome Labels (not visible, spoken by screen readers)
+# A11y panelNode labels (not visible, spoken by screen readers)
+# A11y Domplate labels (not visible, spoken by screen readers)
+commandline.include.aliasCreated=Utworzono alias „%S”.
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+commandline.include.aliasRemoved=Alias „%S” został usunięty.
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+commandline.include.invalidAliasName=Nieprawidłowa nazwa aliasu: „%SW”. Nazwa aliasu nie może zawierać „.”lub „/”.
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+commandline.include.tooLongAliasName=Nieprawidłowa nazwa aliasu: „%SW”. Nazwa aliasu nie może zawierać więcej niż 30 znaków.
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+commandline.include.invalidAliasArgumentType=Nieprawidłowy drugi argument. Wymagana nazwa aliasu.
+# first %S = Line number, second %S = Function name, third %S = File name
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+commandline.include.invalidUrlArgumentType=Nieprawidłowy argument URL.
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+commandline.include.confirmDelete=Czy na pewno chcesz usunąć argument: „%S”?
+# examples: Match found for "test" in 17 log rows
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+commandline.include.noDefinedAlias=(jeszcze nie zdefiniowano aliasu)
+commandline.tip.Delete_Alias=Usuń ten alias
+commandline.tip.Edit_Alias_Name=Edytuj nazwę aliasu
+commandline.tip.Edit_Alias_URL=Edytuj URL aliasu
+commandline.tip.Open_In_Scratchpad=Otwiera zawartość skryptu w brudnopisie
+commandline.tip.Include_Script=Pobierz i wykonaj skrypt
+commandline.label.DeleteAlias=Usuń alias
+commandline.label.EditAliasName=Edytuj nazwę aliasu
+commandline.label.EditAliasURL=Edytuj URL aliasu
+commandline.label.OpenInScratchpad=Otwórz w Brudnopisie
+commandline.label.IncludeScript=zawiera „%S”
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+Do_not_show_this_message_again=Nie wyświetlaj tej informacji ponownie
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+scratchpad.loading=Wczytywanie, proszę czekać…
+scratchpad.failLoading=Wystąpił błąd w czasie wczytywania skryptu.
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+net.sizeinfo.Response_Body=Zawartość odpowiedzi
+net.sizeinfo.Post_Body=Przesłana zawartość
+net.sizeinfo.Total_Sent=Razem przesłano
+net.sizeinfo.Total_Received=Razem odebrano
+net.sizeinfo.Including_HTTP_Headers=Zawarte nagłówki HTTP
+net.ActivationMessage=Panel sieci został uaktywniony. Gdy panel jest nieaktywny, żadne żądania nie są wyświetlane.
+net.responseSizeLimitMessage=Wyczerpano limit rozmiaru odpowiedzi określony przez Firebuga. Kliknij <a>tutaj</a>, aby otworzyć całą odpowiedź w nowej karcie Firefoksa.
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+net.postDataSizeLimitMessage=Wyczerpano limit rozmiaru określony przez Firebuga.
+net.Break_On_XHR=Wstrzymuj na XHR
+net.label.Parameters=Parametry
+net.label.Parts=Części
+net.label.Source=Źródło
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+net.label.Resend=Wyślij ponownie
+net.tip.Resend=Wysyła zapytanie ponownie
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+net.option.Disable_Browser_Cache=Wyłącz bufor przeglądarki
+net.option.tip.Disable_Browser_Cache=Wyłącza bufor HTTP przeglądarki
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+net.option.Show_Paint_Events=Wyświetlaj zdarzenia kreślenia
+net.option.tip.Show_Paint_Events=Wyświetla zdarzenia MozAfterPaint w osi czasu zielonym kolorem
+# example: Match found for "main" in #mainContent h2 {
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+net.option.Show_BFCache_Responses=Wyświetlaj odpowiedzi BFCache
+net.option.tip.Show_BFCache_Responses=Będą wyświetlane również odpowiedzi z bufora Wstecz-Do przodu
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+script.Break_On_Next=Wstrzymaj na następnym
+script.Disable_Break_On_Next=Wyłącz wstrzymanie na następnym
+ShowHttpHeaders=Wyświetlaj nagłówki HTTP
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+plural.Request_Count2=%1$S żądanie;%1$S żądania;%a$S żądań
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+net.summary.from_cache=%S z bufora
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+net.summary.tip.request_count=Liczba żądań
+net.summary.tip.total_size=Liczna wszystkich żądań
+net.summary.tip.total_cached_size=Liczba wszystkich żądań z bufora
+net.summary.tip.total_request_time=Całkowity czas potrzebny do wczytania wszystkich żądań i czas występowania zdarzenia „onload”
+StopLoading=Zatrzymaj wczytywanie
+net.tip.Stop_Loading=Zatrzymuje wczytywanie żądania
+LargeData=(Bardzo dużo danych)
+ShowComputedStyle=Wyświetlaj styl wyliczony
+StyleGroup-text=Tekst
+StyleGroup-background=Tło
+StyleGroup-box=Model pudełkowy
+StyleGroup-layout=Układ
+StyleGroup-other=Inne
+Dimensions=%S x %S
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+CopyColor=Kopiuj kolor
+css.tip.Copy_Color=Kopiuje kolor do schowka
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+CopyImageLocation=Kopiuj adres obrazka
+css.tip.Copy_Image_Location=Kopiuje do schowka URL obrazka
+OpenImageInNewTab=Otwórz obrazek w nowej karcie
+css.tip.Open_Image_In_New_Tab=Otwiera obrazek w nowej karcie przeglądarki
+# examples: Match found for "05" in net summary row: 4.05s
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+OmitObjectPathStack=Pomijaj stos paska narzędzi
+callstack.option.tip.Omit_Object_Path_Stack=Nie będzie wyświetlana ścieżka stosu obiektu
+Load_Original_Source=Wczytaj oryginał źródła
+css.tip.Load_Original_Source=Odrzuca zmiany i wczytuje oryginalny CSS
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+callstack.option.Show_Arguments=Wyświetl argumenty
+callstack.option.tip.Show_Arguments=Wyświetla także argumenty funkcji
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+Copy_Rule_Declaration=Kopiuj zawartość reguły
+css.tip.Copy_Rule_Declaration=Kopiuje do schowka regułę razem ze wszystkimi jej właściwościami
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+# Console messages
+Copy_Style_Declaration=Kopiuj deklaracje stylu
+css.tip.Copy_Style_Declaration=Kopiuje do schowka właściwości reguły
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+css.label.Copy_Property_Declaration=Kopiuj deklarację własności
+css.tip.Copy_Property_Declaration=Kopiuje deklarację własności do schowka
+css.label.Copy_Property_Name=Kopiuj nazwę własności
+css.tip.Copy_Property_Name=Kopiuje nazwę własności do schowka
+css.label.Copy_Property_Value=Kopiuj wartość własności
+css.tip.Copy_Property_Value=Kopiuje wartość własności do schowka
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+plural.Error_Count2=%1$S błąd;%1$S błędy;%1$S błędów
+moduleManager.title=Panel %S jest wyłączony
+moduleManager.desc3=Aby włączyć/wyłączyć wszystkie panele jednocześnie użyj ikony Firebuga znajdującej się na pasku stanu. Do kontroli poszczególnych paneli użyj rozwijanego menu znajdującego się na etykiecie panelu:
+moduleManager.Enable=Włącz
+Suspend_Firebug=Zawieś działanie Firebuga
+Resume_Firebug=Wznów działanie Firebuga
+Reset_Panels_To_Disabled=Wyłącz panele
+Open_Console=Otwórz konsolę
+Open_Console_Tooltip=Otwiera konsolę śledzenia Firebuga.
+Scope_Chain=Łańcuch zasięgów
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+With_Scope=Z
+# to reload the sources
+Call_Scope=Wywołanie
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+Window_Scope=Okno
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+requestinfo.Blocking=Blokowanie
+requestinfo.Resolving=Odpytywanie DNS
+requestinfo.Connecting=Łączenie
+requestinfo.Sending=Wysyłanie
+requestinfo.Waiting=Oczekiwanie
+requestinfo.Receiving=Odbieranie
+requestinfo.ContentLoad=„DOMContentLoaded” (zdarzenie)
+requestinfo.WindowLoad=„load” (zdarzenie)
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+requestinfo.started.label=Czas rozpoczęcia żądania od początku
+requestinfo.phases.label=Fazy żądań rozpoczęcia i przebiegu w czasie relatywnie do rozpoczęcia żądania:
+requestinfo.timings.label=Przebieg zdarzenia w czasie relatywnie do rozpoczęcia żądania:
+search.Firebug_Search=Wyszukiwanie
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+search.Next=Następny
+search.tip.Next=Wyszukuje następny pasujący element
+search.Previous=Poprzedni
+search.tip.Previous=Wyszukuje poprzedni pasujący element
+search.Case_Sensitive=Rozróżniaj wielkość znaków
+search.tip.Case_Sensitive=W trakcie wyszukiwania będzie rozróżniana wielkość znaków
+search.Case_Insensitive=Nie rozróżniaj wielkości znaków
+search.tip.Case_Insensitive=W trakcie wyszukiwania nie będzie rozróżniana wielkość znaków
+search.Multiple_Files=Szukaj we wszystkich plikach
+search.tip.Multiple_Files=Wyszukiwanie będzie realizowane wewnątrz wszystkich plików powiązanych z tym panelem
+search.Use_Regular_Expression=Używaj wyrażeń regularnych
+search.tip.Use_Regular_Expression=W trakcie wyszukiwania podany ciąg znaków będzie interpretowany jako wyrażenie regularne
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+# LOCALIZATION NOTE (script.warning.no_chrome_debugging, script.suggestion.no_chrome_debugging):
+search.html.CSS_Selector=Selektor CSS
+search.net.Headers=Nagłówki
+search.net.Parameters=Parametry
+search.net.Response_Bodies=Treści odpowiedzi
+search.net.tip.Response_Bodies=Wyszukuje także w treści odpowiedzi
+firebug.console.Persist=Zachowuj zmiany
+firebug.console.Do_Not_Clear_On_Reload2=Podczas odświeżania strony panel nie będzie czyszczony
+firebug.console.Show_All_Log_Entries=Będą wyświetlane wszystkie wpisy dziennika
+firebug.console.Errors=Błędy
+firebug.console.Filter_by_Errors=Będą wyświetlane tylko błędy
+firebug.console.Warnings=Ostrzeżenia
+firebug.console.Filter_by_Warnings=Będą wyświetlane tylko ostrzeżenia
+firebug.console.Info=Informacje
+firebug.console.Filter_by_Info=Będą wyświetlane tylko informacje
+firebug.console.Debug_Info=Informacje debugowania
+firebug.console.Filter_by_Debug_Info=Będą wyświetlane tylko informacje debugowania
+firebug.Deactivate_Firebug=Dezaktywuj Firebuga
+firebug.tip.Deactivate_Firebug=Dezaktywuj Firebuga dla aktywnej witryny
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+firebug.tip.Toggle_Side_Panels=Zmień wyświetlanie paneli
+firebug.ShowFirebug=Otwórz Firebuga
+firebug.menu.tip.Open_Firebug=Wyświetla Firebuga
+firebug.HideFirebug=Ukryj Firebuga
+firebug.menu.tip.Minimize_Firebug=Minimalizuje Firebuga, ale pozostawia go aktywnym
+firebug.FocusFirebug=Przejdź do okna Firebuga
+firebug.menu.tip.Focus_Firebug=Przechodzi do odłączonego okna Firebuga
+firebug.menu.Enable_All_Panels=Włącz wszystkie panele
+firebug.menu.tip.Enable_All_Panels=Włącza wszystkie panele dające się uaktywnić
+firebug.menu.Disable_All_Panels=Wyłącz wszystkie panele
+firebug.menu.tip.Disable_All_Panels=Wyłącza wszystkie panele dające się uaktywnić
+firebug.menu.Customize_shortcuts=Dostosuj skróty klawiszowe
+firebug.menu.tip.Customize_Shortcuts=Dostosuj wewnętrzne skróty klawiszowe Firebuga
+firebug.Options=Ustawienia
+firebug.menu.tip.Options=Globalne ustawienia Firebuga
+firebug.menu.Enable_Accessibility_Enhancements=Włącz ułatwienia dostępu
+firebug.menu.tip.Enable_Accessibility_Enhancements=Włącza pełną kontrolę za pomocą klawiatury i innych rozszerzeń ułatwiających dostępność
+firebug.menu.Activate_Same_Origin_URLs2=Uaktywniaj dla adresów URL z tego samego źródła
+firebug.menu.tip.Activate_Same_Origin_URLs=Uaktywnia Firebuga dla adresów URL pochodzących z tego samego źródła
+firebug.menu.Reset_All_Firebug_Options=Resetuj wszystkie ustawienia Firebuga
+firebug.menu.tip.Reset_All_Firebug_Options=Przywraca wszystkie wartości domyślne ustawień Firebuga
+firebug.menu.Firebug_Online=Firebug online
+firebug.menu.tip.Firebug_Online=Witryny powiązane z Firebugiem
+firebug.menu.Extensions=Rozszerzenia Firebuga…
+firebug.menu.tip.Extensions=Pobierz i zainstaluj rozszerzenia Firebuga
+firebug.menu.Vertical_Panels=Pionowy układ paneli
+firebug.menu.tip.Vertical_Panels=Zmiana układu paneli Firebuga
+firebug.menu.Show_Info_Tips=Wyświetlaj podpowiedzi
+firebug.menu.tip.Show_Info_Tips=Będą wyświetlane podpowiedzi zawierające informacje o wskazanym elemencie
+firebug.Show_Error_Count=Wyświetlaj liczbę błędów
+firebug.menu.tip.Show_Error_Count=Będzie wyświetlana liczba błędów zapisanych w konsoli
+firebug.TextSize=Rozmiar tekstu
+firebug.menu.tip.Text_Size=Zmiana rozmiaru czcionki używanej w interfejsie Firebuga
+firebug.IncreaseTextSize=Zwiększ rozmiar tekstu
+firebug.menu.tip.Increase_Text_Size=Zwiększa rozmiar czcionki używanej w interfejsie Firebuga
+firebug.DecreaseTextSize=Zmniejsz rozmiar tekstu
+firebug.menu.tip.Decrease_Text_Size=Zmniejsza rozmiar czcionki używanej w interfejsie Firebuga
+firebug.NormalTextSize=Normalny rozmiar
+firebug.menu.tip.Normal_Text_Size=Przywraca domyślny rozmiar czcionki używanej w interfejsie Firebuga
+firebug.Website=Witryna Firebuga…
+firebug.menu.tip.Website=Otwiera oficjalną stronę internetową Firebuga
+firebug.help=Pomoc…
+firebug.menu.tip.help=Otwiera stronę z odnośnikami do stron opisujących działanie Firebuga
+firebug.Documentation=Dokumentacja…
+firebug.menu.tip.Documentation=Otwiera dokumentację Firebuga
+firebug.KeyShortcuts=Skróty klawiszowe…
+firebug.menu.tip.Key_Shortcuts=Otwiera wykaz używanych w Firebugu skrótów
+firebug.Forums=Grupa dyskusyjna…
+firebug.menu.tip.Forums=Otwiera stronę grupy dyskusyjnej
+firebug.Issues=Zgłaszanie błędów…
+firebug.menu.tip.Issues=Otwiera stronę zgłaszania błędów
+firebug.Donate=Dotacje…
+firebug.menu.tip.Donate=Otwiera stronę dotacji
+firebug.About=Firebug - informacje…
+firebug.menu.tip.About=Informacje o Firebugu
+ProfileJavaScript=Czas wykonania JavaScriptu
+firebug.menu.tip.Profile_JavaScript=Czas wykonania kodu JavaScript
+firebug.Search=Szukaj
+firebug.menu.tip.Search=Uaktywnia pole wyszukiwania
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+firebug.shortcut.reenterCommand.label=Wprowadź ponownie polecenie
+firebug.shortcut.tip.reenterCommand=Wprowadza ponownie do wiersza poleceń ostatnio użyte polecenie
+firebug.shortcut.toggleInspecting.label=Włącz/wyłącz badanie
+firebug.shortcut.tip.toggleInspecting=Włącza/wyłącza inspektora
+firebug.shortcut.toggleQuickInfoBox.label=Włącz/wyłącz okno informacji
+firebug.shortcut.tip.toggleQuickInfoBox=Włącza/wyłącza wyświetlanie panelu z informacjami o aktualnie badanym elemencie
+firebug.shortcut.toggleProfiling.label=Włącz/wyłącz czas wykonania
+firebug.shortcut.tip.toggleProfiling=Włącza/wyłącza sprawdzanie czasu wykonania JavaScriptu
+firebug.shortcut.focusCommandLine.label=Przejdź do wiersza poleceń
+firebug.shortcut.tip.focusCommandLine=Otwiera Firebuga i uaktywnia wiersz poleceń/przełącza wyświetlanie wiersza poleceń
+firebug.shortcut.focusFirebugSearch.label=Przejdź do szukania Firebuga
+firebug.shortcut.tip.focusFirebugSearch=Uaktywnia pole wyszukiwania
+firebug.shortcut.focusWatchEditor.label=Przejdź do edytora czujki
+firebug.shortcut.tip.focusWatchEditor=Przechodzi do panelu Skrypt i uaktywnia pole wprowadzania nowego wyrażenia czujki
+firebug.shortcut.focusLocation.label=Przejdź do położenia
+firebug.shortcut.tip.focusLocation=Otwiera menu położenia
+firebug.shortcut.nextObject.label=Następny obiekt
+firebug.shortcut.tip.nextObject=Wybiera następny obiekt w ścieżce elementu panelu
+firebug.shortcut.previousObject.label=Poprzedni obiekt
+firebug.shortcut.tip.previousObject=Wybiera poprzedni obiekt w ścieżce elementu panelu
+firebug.shortcut.customizeFBKeys.label=Dostosuj skróty Firebuga
+firebug.shortcut.tip.customizeFBKeys=Otwiera okno dostosowywania skrótów Firebuga
+firebug.shortcut.detachFirebug.label=Otwórz w nowym oknie
+firebug.shortcut.tip.detachFirebug=Wyświetla Firebuga w nowym osobnym oknie
+firebug.shortcut.leftFirebugTab.label=Wyświetl w lewym panelu
+firebug.shortcut.tip.leftFirebugTab=Wyświetla Firebuga w lewym panelu
+firebug.shortcut.rightFirebugTab.label=Wyświetl w prawym panelu
+firebug.shortcut.tip.rightFirebugTab=Wyświetla Firebuga w prawym panelu
+firebug.shortcut.toggleFirebug.label=Otwórz Firebuga
+firebug.shortcut.tip.toggleFirebug=Otwiera/minimalizuje interfejs Firebuga
+firebug.shortcut.closeFirebug.label=Dezaktywuj Firebuga
+firebug.shortcut.tip.closeFirebug=Dezaktywuje Firebuga dla aktywnej witryny
+firebug.shortcut.previousFirebugTab.label=Poprzedni panel
+firebug.shortcut.tip.previousFirebugTab=Wyświetla poprzednio wyświetlany panel Firebuga
+firebug.shortcut.clearConsole.label=Wyczyść konsolę
+firebug.shortcut.tip.clearConsole=Usuwa z konsoli wszystkie wpisy
+firebug.shortcut.openTraceConsole.label=Otwórz konsolę śledzenia
+firebug.shortcut.tip.openTraceConsole=Otwiera konsolę FBTrace
+firebug.shortcut.navBack.label=Wstecz
+firebug.shortcut.tip.navBack=Przełącza do poprzedniego panelu lub elementu z listy historii nawigacji
+firebug.shortcut.navForward.label=Do przodu
+firebug.shortcut.tip.navForward=Przełącza do następnego panelu lub elementu z listy historii nawigacji
+firebug.shortcut.increaseTextSize.label=Zwiększ rozmiar tekstu
+firebug.shortcut.tip.increaseTextSize=Zwiększa rozmiar czcionki używanej w interfejsie Firebuga
+firebug.shortcut.decreaseTextSize.label=Zmniejsz rozmiar tekstu
+firebug.shortcut.tip.decreaseTextSize=Zmniejsza rozmiar czcionki używanej w interfejsie Firebuga
+firebug.shortcut.normalTextSize.label=Normalny rozmiar tekstu
+firebug.shortcut.tip.normalTextSize=Przywraca domyślny rozmiar czcionki używanej w interfejsie Firebuga
+firebug.shortcut.help.label=Otwórz pomoc
+firebug.shortcut.tip.help=Otwiera stronę z odpowiedziami na często zadawane pytania
+firebug.shortcut.toggleBreakOn.label=Włącz/wyłącz wstrzymywanie na…
+firebug.shortcut.tip.toggleBreakOn=Włącza/wyłącza wstrzymywanie wykonania skryptu na konkretnych wydarzeniach występujących wewnątrz panelu
+firebug.panel_selector=Wybierz wyświetlane panele
+customizeShortcuts=Skróty klawiszowe Firebuga
+# the debugger is already halted at a breakpoint inside another tab/window.
+a11y.labels.panel_tools=Narzędzia paneli
+a11y.labels.firebug_panels=Panele
+a11y.labels.firebug_side_panels=Panele boczne
+a11y.labels.firebug_window=Okno
+a11y.labels.firebug_status=Status
+a11y.labels.reset=Resetuj
+a11y.labels.reset_shortcut=Resetuj skrót %S
+aria.labels.inactive_panel=Nieaktywny panel
+# The suggestion message represents an advice how to solve the problem.
+a11y.labels.log_rows=Wiersze loga
+a11y.labels.call_stack=Wywołania stosu
+a11y.labels.document_structure=Struktura dokumentu
+a11y.labels.title_panel=%S panel
+a11y.labels.title_side_panel=%S panel boczny
+a11y.labels.cached=Zbuforowane
+aria.labels.stack_trace=Śledzenie stosu
+# firebug.dtd
+a11y.layout.padding=dopełnienie
+a11y.layout.border=obramowanie
+a11y.layout.margin=margines
+a11y.layout.position=położenie
+a11y.layout.position_top=górne położenie
+a11y.layout.position_right=prawe położenie
+a11y.layout.position_bottom=dolne położenie
+a11y.layout.position_left=lewe położenie
+a11y.layout.margin_top=górny margines
+a11y.layout.margin_right=prawy margines
+a11y.layout.margin_bottom=dolny margines
+a11y.layout.margin_left=lewy margines
+a11y.layout.border_top=górne obramowanie
+a11y.layout.border_right=prawe obramowanie
+a11y.layout.border_bottom=dolne obramowanie
+a11y.layout.border_left=lewe obramowanie
+a11y.layout.padding_top=górne dopełnienie
+a11y.layout.padding_right=prawe dopełnienie
+a11y.layout.padding_bottom=dolne dopełnienie
+a11y.layout.padding_left=lewe dopełnienie
+a11y.layout.top=góra
+a11y.layout.right=prawa strona
+a11y.layout.bottom=dół
+a11y.layout.left=lewa strona
+a11y.layout.width=szerokość
+a11y.layout.height=wysokość
+a11y.layout.size=wielkość
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=obwiednia elementów
+a11y.descriptions.press_enter_to_edit_values=Aby edytować indywidualne wartości, naciśnij klawisz [Enter]
+a11y.labels.style_rules=reguły stylu
+aria.labels.inherited_style_rules=dziedziczone reguły stylu
+a11y.labels.computed_styles=style wyliczone
+a11y.labels.dom_properties=Właściwości DOM
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+a11y.labels.inline_editor=edytor inline
+a11y.labels.value_for_attribute_in_element=wartość atrybutu %S w elemencie %S
+a11y.labels.attribute_for_element=atrybut elementu %S
+a11y.labels.text_contents_for_element=tekst elementu %S
+a11y.labels.defined_in_file=zdefiniowano w %S
+a11y.labels.declarations_for_selector=deklaracja stylu selektora „%S”
+a11y.labels.property_for_selector=właściwość selektora: %S
+a11y.labels.value_property_in_selector=wartość właściwości %S selektora %S
+a11y.labels.css_selector=selektor CSS
+a11y.labels.source_code_for_file=kod źródłowy pliku %S
+a11y.labels.press_enter_to_add_new_watch_expression=Naciśnij klawisz [Enter], aby dodać nowe wyrażenie czujki
+# example: Step Out (Shift+F11)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+a11y.labels.overridden=uchylony
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+a11y.updates.has_conditional_break_point=miał warunkowy punkt wstrzymania
+a11y.updates.has_disabled_break_point=miał wyłączony punkt wstrzymania
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+a11y.updates.script_suspended_on_line_in_file=Skrypt wstrzymany na wierszu %S w %S, plik %S
+# editors.dtd
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+a11y.updates.match_found_in_logrows=Elementy pasujące do %S znaleziono w %S wierszach loga
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+a11y.updates.match_found_for_on_line=Elementy pasujące do „%S” znaleziono w wierszu %S w %S
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+a11y.updates.match_found_in_element=Elementy pasujące do „%S” znaleziono w %S elemencie ścieżki %S
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+a11y.updates.match_found_in_attribute=Znaleziono element pasujący do „%S” w atrybucie %S=%S z %S elementu ścieżki %S
+# and so nothing to display.
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+a11y.updates.match_found_in_text_content=Elementy pasujące do „%S” znaleziono w tekście: %S elementu %S ścieżki %S
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+a11y.updates.match_found_in_selector=Elementy pasujące do „%S” znaleziono w selektorze %S
+# if an object is passed into it.
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+a11y.updates.match_found_in_style_declaration=Elementy pasujące do „%S” znaleziono w deklaracji stylu %S w selektorze %S
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+a11y.updates.match_found_in_dom_property=Elementy pasujące do „%S” znaleziono we właściwościach DOM %S
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+# LOCALIZATION NOTE (firebug.Entire_Session):
+a11y.updates.match_found_in_net_row=Elementy pasujące do „%S” znaleziono w %S, %S : %S;
+# Label used within memory profiler results to mark summary information for entire session.
+a11y.updates.match_found_in_net_summary_row=elementy pasujące do „%S” znaleziono we wierszu podsumowującym sieć: %S
+a11y.updates.no_matches_found=Nie znaleziono elementów pasujących do „%S”
+confirmation.Reset_All_Firebug_Options=Czy na pewno chcesz przywrócić wszystkie domyślne ustawienia Firebuga?
+confirmation.Edit_CSS_Source=Istniejące zmiany CSS zostaną usunięte.\\nCzy na pewno chcesz edytować kod źródłowy?
+warning.Console_must_be_enabled=Konsola musi być włączona
+warning.Command_line_blocked?=Wiersz poleceń jest zablokowany?
+warning.dollar_change=Funkcja wiersza poleceń $() została zmieniona z $=getElementById(id) na $=querySelector(selector). Możesz zamiast tego spróbować $(„#%S”)
+message.Reload_to_activate_window_console=Wczytaj ponownie, aby uaktywnić okno konsoli
+message.sourceNotAvailableFor=Odśwież stronę, by pobrać kod źródłowy dla
+message.The_resource_from_this_URL_is_not_text=Zasoby z tego adresu URL nie są tekstem
+firebug.history.Go_back_to_this_panel=Wróć do tego panelu
+firebug.history.Stay_on_this_panel=Zostań w tym panelu
+firebug.history.Go_forward_to_this_panel=Przejdź do tego panelu
+firebug.history.Go_back=Wstecz
+firebug.history.Go_forward=Do przodu
+script.warning.inactive_during_page_load=Panel Skrypt był nieaktywny podczas wczytywania strony
+script.suggestion.inactive_during_page_load2=<a>Odśwież</a>, by zobaczyć wszystkie źródła
+script.warning.javascript_not_enabled=Javascript jest wyłączony
+script.suggestion.javascript_not_enabled=Zobacz Firefox » Narzędzia » Opcje… » Treść » Włącz obsługę języka Javascript
+script.button.enable_javascript=Włącz Javascript i odśwież
+script.warning.all_scripts_filtered=Wszystkie skrypty zostały przefiltrowane
+script.suggestion.all_scripts_filtered=Zobacz ustawienia filtra skryptów na pasku narzędzi panelu
+script.warning.no_system_source_debugging=Źródła systemu nie mogą być debugowane
+script.suggestion.no_system_source_debugging=Firebug obecnie nie może być używany do debugowania źródeł systemowych. Zobacz <a>zgłoszenie 5110</a>.
+script.warning.no_javascript=Nie ma kodu Javascript na tej stronie
+script.suggestion.no_javascript2=Jeśli znacznik <script> ma atrybut „type” powinno to równać się „text/javascript” lub „application/javascript. Wszystkie skrypty muszą dać się przetwarzać (mieć poprawną składnię).
+script.warning.debugger_active=Debugger jest aktywny
+script.suggestion.debugger_active=Debugger jest obecne zatrzymany w punkcie wstrzymania na innej stronie.
+script.button.Go_to_that_page=Przejdź do tej strony
+script.warning.debugger_not_activated=Debugger nie został uaktywniony
+script.suggestion.debugger_not_activated=Debugger nie został uaktywniony
+script.Script_panel_must_be_enabled=%S (musi być włączony panel Skrypt)
+firebug.Firebug=Firebug
+firebug.Close=Zamknij
+firebug.View=Widok
+firebug.Help=Pomoc
+firebug.Run=Uruchom
+firebug.Copy=Kopiuj
+firebug.History=Historia
+firebug.Run_the_entered_command=Uruchom wprowadzone polecenie
+firebug.Clear_the_Command_Editor=Wyczyść edytor poleceń
+firebug.Copy_the_script_as_a_bookmarklet=Skopiuj skrypt jako skryptozakładkę
+firebug.Insert_a_previously_entered_command=Wstaw poprzednio wprowadzone polecenie
+firebug.AlwaysOpenInWindow=Zawsze otwieraj w nowym oknie
+firebug.OpenWith=Otwórz za pomocą edytora
+firebug.menu.tip.Open_With=Otwiera treść w zewnętrznym edytorze
+firebug.Permissions=Witryny…
+firebug.Configure_Editors=Konfiguruj edytory
+script.tip.Script_Type=Wyświetlaj wg typu skryptu
+script.tip.Script_Filter_Static=Wyświetlaj tylko skrypty wczytywane razem ze stroną
+script.tip.Script_Filter_Evals=Wyświetlaj skrypty wczytywane razem ze stroną i skrypty utworzone za pomocą eval()
+script.tip.Script_Filter_Events=Wyświetlaj skrypty wczytywane razem ze stroną, skrypty utworzone za pomocą elementów nasłuchujących eval() i event
+script.tip.Script_Filter_All=Wyświetlaj wszystkie rodzaje skryptów
+firebug.labelWithShortcut=%S (%S)
+script.Rerun=Uruchom ponownie
+script.tip.Rerun=Uruchamia ponownie bieżący stos wywołań funkcji
+script.Continue=Kontynuuj
+script.tip.Continue=Kontynuuj wykonanie kodu JavaScript
+script.Step_Over=Następne polecenie
+script.tip.Step_Over=Wykonuje następne polecenie
+script.Step_Into=Przejdź do funkcji
+script.tip.Step_Into=Wykonuje następne polecenie i przechodzi do funkcji
+script.Step_Out=Wykonaj aż do powrotu
+script.tip.Step_Out=Wykonuje resztę funkcji i powraca do miejsca wywołania
+firebug.RunUntil=Wykonaj do tego wiersza
+script.tip.Run_Until=Wykonuje kod JavaScript do określonego wiersza
+firebug.Inspect=Zbadaj
+firebug.InspectElement=Zbadaj element
+firebug.InspectElementWithFirebug=Zbadaj element za pomocą Firebuga
+firebug.BreakOnErrors=Wstrzymuj na błędach
+firebug.InspectTooltip=Wskaż i kliknij element strony, by go zbadać
+firebug.EditHTMLTooltip=Edytuj ten kod HTML
+firebug.Profile=Czas wykonania
+firebug.Clear=Clear
+firebug.ClearConsole=Wyczyść konsolę
+firebug.ClearTooltip=Wyczyść konsolę
+editors.Configured_Firebug_Editors=Edytory Firebuga
+editors.Editor=Edytor
+editors.Executable=Wykonywalne
+editors.Launch_Arguments=Uruchom argumenty
+editors.Add=Dodaj
+editors.Remove=Usuń
+editors.Change=Zmień
+editors.Move_Up=Przenieś w górę
+editors.Close=Zamknij
+editors.Browse=Przeglądaj…
+changeEditor.Editor_Configuration=Konfiguracja edytora
+changeEditor.Name=Nazwa:
+changeEditor.Executable=Plik wykonywalny:
+changeEditor.CmdLine=Argumenty:
+changeEditor.Supplied_arguments=Argumenty dostarczone przez Firebuga:
+changeEditor.URL_of_file=Adres URL pliku (jeśli nie ma %url, domyślnie zostanie dodane %file)
+changeEditor.Path_to_local_file=Ścieżka do pliku lokalnego lub do kopii tymczasowej
+changeEditor.Line_number=Numer wiersza (jeśli jest dostępny)
+changeEditor.Invalid_Application_Path=Nieprawidłowa ścieżka aplikacji
+changeEditor.Application_does_not_exist=Podana ścieżka aplikacji nie istnieje!
+firebug.Edit=Edytuj
+firebug.css.sourceEdit=Edytuj źródło
+firebug.css.sourceEdit.tooltip=Edycja źródła stylów po wczytaniu przez przeglądarkę
+firebug.css.liveEdit=Edytuj na bieżąco
+firebug.css.liveEdit.tooltip=Edycja stylów wyodrębnionych z przeglądarki
+firebug.EditCSSTooltip=Edytuj ten arkusz stylów
+firebug.activation.privateBrowsingMode=W trybie prywatnym witryny nie są zapamiętywane
+firebug.breakpoint.showBreakNotifications=Wyświetlaj powiadomienia o wstrzymaniu
+firebug.breakpoint.tip.Show_Break_Notifications=Wyświetlaj powiadomienia, gdy funkcja Wstrzymaj na… lub słowo kluczowe debugger; zatrzymało wykonanie kodu JavaScript
+firebug.breakpoint.doNotShowBreakNotification2=Można włączyć/wyłączyć powiadomienia zatrzymań, wyświetlając <a>menu etykiety panelu</a>.
+firebug.bon.cause.disableDebuggerKeyword2=Naciśnięcie przycisku „Wyłącz” powoduje zastąpienie „debuger” przez wyłączony punkt zatrzymania.
+firebug.bon.tooltip.disableDebuggerKeyword2=Tworzy wyłączone punkty wstrzymania
+firebug.bon.scriptPanelNeeded=(musi być włączony panel Skrypt)
+firebug.dom.noChildren2=Nie ma obiektów potomnych
+firebug.reps.more=więcej
+firebug.reps.reference=Odwołanie cykliczne
+firebug.storage.totalItems=Przechowywane elementy: %1$S;Przechowywane elementy: %1$S
+firebug.reps.historyEntries=%1$S wpis historii,%1$S wpisy historii,%1$S wpisów historii
+firebug.reps.table.ObjectProperties=Właściwości obiektu
+firebug.completion.empty=(brak zakończeń)
+firebug.failedToPreviewObjectURL=Obiekt URL został najprawdopodobniej odwołany przy użyciu metody revokeObjectURL.
+firebug.failedToPreviewImageURL=Nie udało się wczytać podanego adresu URL.
+firebug.Memory_Profiler_Started=Uruchomiono analizator pamięci
+firebug.Objects_Added_While_Profiling=Obiekty dodane w trakcie analizy
+firebug.Memory_Profiler_Results=Wyniki analizy pamięci
+firebug.Entire_Session=Cała sesja
+console.msg.nothing_to_output=(nie ma nic do wysłania)
+console.msg.an_empty_string=(pusty ciąg znaków)
+cookies.legacy.firecookie_detected=Wykryto dodatek Firecookie. Ten dodatek został zintegrowany z Firebugiem 1.10. Aby zapobiec ewentualnym konfliktom, należy wykonać dezinstalację Firecookie.\n\nFirecookie zostanie całkowicie odinstalowany po ponownym uruchomieniu aplikacji.
+cookies.legacy.uninstall=Odinstaluj
+cookies.legacy.uninstall_and_restart=Odinstaluj i uruchom ponownie
+console.cmd.help_title=API wiersza poleceń
+console.cmd.help_title_desc=Naciśnij klawisz F1, by otworzyć pomoc Firebuga online
+console.cmd.tip_title=Porady dla wiersza poleceń
+console.cmd.tip_title_desc=Poznaj sztuczki i kruczki dla wiersza poleceń
+console.cmd.tip.javascript=Każde poprawne wyrażenie JavaScriptu może być wykonywane w wierszu poleceń. Przykład:
+console.cmd.tip.closures=Aby uzyskać dostęp do zmiennych w zamknięciach użyj składni „.%” – (zobacz <a>więcej</a>). Przykład:
+console.cmd.help.$=Zwraca pojedynczy element o podanym ID.
+console.cmd.help.$$=Zwraca tablicę elementów pasujących do podanego selektora CSS.
+console.cmd.help.$x=Zwraca tablicę elementów pasujących do podanego wyrażenia XPath.
+console.cmd.help.dir=Wyświetla interaktywny wykaz wszystkich własności obiektu. Wygląda identycznie, jak widok wewnątrz panelu DOM.
+console.cmd.help.dirxml=Wyświetla drzewo źródła XML elementu HTML lub XML. Wygląda identycznie, jak widok wewnątrz panelu HTML. Możesz kliknąć dowolny węzeł, by zbadać go w panelu HTML.
+console.cmd.help.cd=Domyślnie wiersz poleceń wyrażeń jest relatywny do okna najwyższego poziomu strony. cd() umożliwia użycie zamiast okna ramki w stronie.
+console.cmd.help.clear=Czyści konsolę.
+console.cmd.help.copy=Kopiuje dany parametr do schowka. Może być zwrotną wartością funkcji lub obiektu.
+console.cmd.help.inspect=Baba obiekt w najbardziej odpowiednim panelu lub w panelu zidentyfikowanym przez opcjonalny drugi argument. Dostępne panele to: HTML, CSS, Skrypt i DOM.
+console.cmd.help.keys=Zwraca tablicę zawierającą nazwy wszystkich własności obiektu.
+console.cmd.help.values=Zwraca tablicę zawierającą wszystkie własności obiektu.
+console.cmd.help.debug=Dodaje punkt wstrzymania na pierwszym wierszu funkcji.
+console.cmd.help.undebug=Usuwa punkt wstrzymania na pierwszym wierszu funkcji.
+console.cmd.help.monitor=Włącza rejestrację wszystkich wywołań funkcji.
+console.cmd.help.unmonitor=Wyłącza rejestrację wszystkich wywołań funkcji.
+console.cmd.help.monitorEvents=Włącza rejestrację wszystkich zdarzeń wysyłanych do obiektu. Opcjonalny drugi argument może definiować specyficzne zdarzenia lub typy zdarzeń. Możliwe typy zdarzeń to: „composition”, „contextmenu”, „drag”, „focus”, „form”, „key”, „load”, „mouse”, „mutation”, „paint”, „scroll”, „text”, „ui”, „xul” i „clipboard”.
+console.cmd.help.unmonitorEvents=Wyłącza rejestrację wszystkich zdarzeń wysyłanych do obiektu. Opcjonalny drugi argument może definiować specyficzne zdarzenia lub rodziny zdarzeń, których rejestracja zostanie wyłączona.
+console.cmd.help.profile=Włącza profiler JavaScriptu. Opcjonalny drugi argument może zawierać tekst wyświetlany w nagłówku raportu profilera.
+console.cmd.help.profileEnd=Wyłącza profiler JavaScriptu i wyświetla jego raport.
+console.cmd.help.table=Umożliwia rejestrację danych w postaci tabularycznej. Metoda ta wymaga parametru przedstawiającego dane w postaci tabeli – tablicę tablic lub listę obiektów. Opcjonalny drugi parametr może być użyty do określenia kolumn i/lub rejestrowanych własności.
+console.cmd.help.$0=Przedstawia ostatni element wybrany za pośrednictwem Inspektora.
+console.cmd.help.$1=Przedstawia przedostatni element wybrany przez Inspektora.
+console.cmd.help.$2=Wyraża trzeci od końca element wybrany przez Inspektora.
+console.cmd.help.$3=Wyraża czwarty od końca element wybrany przez Inspektora.
+console.cmd.help.$4=Wyraża piąty od końca element wybrany przez Inspektora.
+console.cmd.help.$n=Zwraca jeden z pięciu ostatnio wybranych elementów przez Inspektora. Metoda ta przyjmuje jeden wymagany parametr, który reprezentuje indeks elementu (począwszy od 0).
+console.cmd.help.$_=Wyraża wynik ostatnio ocenianego wyrażenia w wierszu poleceń.
+console.cmd.help.help=Wyświetla pomoc dla wszystkich dostępnych poleceń.
+console.cmd.help.include=Zawiera zdalny skrypt.
+console.cmd.help.$p=Po kliknięciu obiektu/wartości JavaScriptu i kliknięciu „Użyj w wierszu poleceń”, ta zmienna wiersza poleceń jest ustawiana jako wartość.
+console.cmd.help.getEventListeners=Zwraca obiekt ze wszystkimi zdarzeniami nasłuchu zarejestrowanymi bezpośrednio na elemencie lub innym zdarzeniu.
+console.cmd.helpUrlNotAvailable=Pomoc dla tego polecenia jest niedostępna.
+perftiming.bars.label=Fazy startu i upływu czasu dokumentu relatywnie do do czasu wczytywania:
+perftiming.events.label=Przebieg wydarzenia relatywnie do do czasu wczytywania:
+perftiming.details_title=Przebiegi wydajności
+perftiming.details_title_desc=Szczegółowe przebiegi
+perftiming.connectEnd=Czas zakończenia połączenia z serwerem.
+perftiming.connectStart=Czas przed rozpoczęciem połączenia z serwerem.
+perftiming.domComplete=Czas przed zakończeniem wczytywania dokumentu.
+perftiming.domContentLoadedEventEnd=Czas po zakończeniu wydarzenia DOMContentLoaded.
+perftiming.domContentLoadedEventStart=Czas tuż przed rozpoczęciem wydarzenia DOMContentLoaded.
+perftiming.domInteractive=Czas tuż przed ustawieniem gotowości na interaktywną.
+perftiming.domLoading=Czas tuż przed ustawieniem gotowości na wczytywanie.
+perftiming.domainLookupEnd=Czas po wyszukiwaniu nazwy domeny.
+perftiming.domainLookupStart=Czas tuż przed wyszukiwaniem nazwy domeny.
+perftiming.fetchStart=Czas rozpoczęcia pobierania zasobu.
+perftiming.loadEventEnd=Czas zakończenia zdarzenia wczytywania.
+perftiming.loadEventStart=Czas tuż przed wywołaniem zdarzenia wczytywania.
+perftiming.navigationStart=Czas po rozpoczęciu zamknięcia poprzedniego dokumentu.
+perftiming.redirectCount=Liczba przekierowań od czasu ostatniego nie-przekierowania.
+perftiming.redirectEnd=Czas po zakończeniu ostatniej odpowiedzi przekierowania.
+perftiming.redirectStart=Czas pobierania, który zainicjował przekierowanie.
+perftiming.requestStart=Czas tuż przed żądaniem serwera.
+perftiming.responseEnd=Czas po zakończeniu reakcji lub połączenia.
+perftiming.responseStart=Czas tuż przed rozpoczęciem reakcji.
+perftiming.unloadEventEnd=Czas po zamknięciu poprzedniego dokumentu.
+perftiming.unloadEventStart=Czas tuż przed wywołaniem zdarzenia zamknięcia.
diff --git a/locale/pl/selectors.properties b/locale/pl/selectors.properties
index 9a3c96f..b363f5b 100644
--- a/locale/pl/selectors.properties
+++ b/locale/pl/selectors.properties
@@ -1,10 +1,10 @@
-Panel-selectors=Selektory
-panel.tip.selectors=Wyświetla elementy pasujące do selektora CSS
-css.selector.noSelection=Podaj własny selektor lub kliknij prawym przyciskiem myszy regułę CSS i wybierz <b>Wyświetl pasujące elementy</b>.
-css.selector.noSelectionResults=Nie ma pasujących elementów
-css.selector.readMore=Możesz <a>dowiedzieć się więcej</a>, jak korzystać z tego panelu.
-css.selector.invalidSelector=Podano nieprawidłowy selektor
-css.selector.TryASelector=Wypróbuj selektor…
-css.selector.cmd.getMatchingElements=Wyświetl pasujące elementy
-aria.labels.Selectors=Panel selektorów
-a11y.labels.press_enter_to_add_new_selector=Naciśnij Enter, aby dodać nowy selektor
+Panel-selectors=Selektory
+panel.tip.selectors=Wyświetla elementy pasujące do selektora CSS
+css.selector.noSelection=Podaj własny selektor lub kliknij prawym przyciskiem myszy regułę CSS i wybierz <b>Wyświetl pasujące elementy</b>.
+css.selector.noSelectionResults=Nie ma pasujących elementów
+css.selector.readMore=Możesz <a>dowiedzieć się więcej</a>, jak korzystać z tego panelu.
+css.selector.invalidSelector=Podano nieprawidłowy selektor
+css.selector.TryASelector=Wypróbuj selektor…
+css.selector.cmd.getMatchingElements=Wyświetl pasujące elementy
+aria.labels.Selectors=Panel selektorów
+a11y.labels.press_enter_to_add_new_selector=Naciśnij Enter, aby dodać nowy selektor
diff --git a/locale/pt-BR/cookies.properties b/locale/pt-BR/cookies.properties
index fc51820..2378629 100644
--- a/locale/pt-BR/cookies.properties
+++ b/locale/pt-BR/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Permite inspeção e manipulação de cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Sessão
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Aceitar cookies dos sites
-cookies.tip.AllowGlobally=Aceita todos os cookies por padrão ou bloqueia todos os cookies por padrão
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Mostrar eventos de Cookie
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Limpar cookies quando negar
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cortar
-cookies.Copy=Copiar
-cookies.CopyAll=Copiar tudo
-cookies.Paste=Colar
-cookies.Delete=Excluir
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Limpa valor
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Editar
-cookies.Accept=Aceitar
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Redefini Cabeçalho
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=Você pode especificar quais páginas são sempre ou nunca permitidos para usar cookies.\nDigite o endereço exato do site que você quer gerenciar e então clique em Bloquar,\nPermitir para sessão, ou Permitir.
-cookies.ExceptionsTitle=Exceções - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Suporte para Cookie Monitoring
-cookies.HostEnable=Ativar painel de Cookies para %S
-cookies.HostDisable=Desativar painel de Cookies para %S
-cookies.Permissions=Ativa ou desativa painel de Cookies
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=Páginas do sistema
-cookies.LocalFiles=Arquivos locais
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Deseja remover todos os cookies na lista?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remover todos os cookies na lista.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove todos os cookies de sessão na lista.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Criar novo cookie para %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Valor
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Gerenciar permissões do cookie para %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=Todos os cookies foram removidos.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=Foram removidos todos os cookies de sessão.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejeitados:
-cookies.console.nocookiesreceived=Nenhum cookie recebido
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=apagado
-cookies.console.added=adicionado
-cookies.console.changed=alterado
-cookies.console.cleared=limpo
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domínio
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Seguro
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Aceitado
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejeitado
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Valor
-cookies.info.rawdatatab.Raw_Data=Dados Raw
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Padrão (Aceitar cookies da sessão)
-cookies.default.thirdPartySession=Padrão (Aceitar cookies da sessão)
-cookies.default.thirdParty=Padrão (Aceitar cookies)
-cookies.default.allow=Padrão (Aceitar cookies)
-cookies.default.deny=Padrão (Negar cookies)
-cookies.default.warn=Padrão (Alertar antes de aceitar o cookie)
-cookies.host.session=Aceitar cookies da sessão de %S
-cookies.host.accept=Aceitar cookies da %S
-cookies.host.reject=Negar cookies de %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Nome do Cookie não é válido.
-cookies.edit.invalidhost=Host do Cookie não é válido.
-cookies.edit.invalidpath=Caminho do Cookie não é válido.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Nome
-cookies.header.value=Valor
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domínio
-cookies.header.size=Tamanho
-cookies.header.path=Caminho
-cookies.header.expires=Expira
-cookies.header.security=Segurança
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Nome
-cookies.header.value.tooltip=Valor
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domínio
-cookies.header.size.tooltip=Tamanho
-cookies.header.path.tooltip=Caminho
-cookies.header.expires.tooltip=Expira
-cookies.header.security.tooltip=Segurança
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Cookies recebidos
-cookies.netinfo.Sent_Cookies=Cookies enviados
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Filtro do caminho
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Exportar todos os Cookies...
-cookies.export.Export_All_Cookies_Tooltip=Exportar todos os cookies do navegador num arquivo cookies.txt
-cookies.export.Export_For_Site=Exportar Cookies para este site...
-cookies.export.Export_For_Site_Tooltip=Exportar cookies para %S num arquivo cookies.txt
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=Não há nenhuma página ativa
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Remover para site
-cookies.Create=Criar cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Ferramentas
-cookies.ToolsTooltip=Ferramentas
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Exibir todos os cookies…
-cookies.ViewAllTooltip=Abrir gerenciador de cookie
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Permissões para páginas da web…
-cookies.ViewExceptionsTooltip=Exibir lista de páginas permitidas ou proibidas
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filtro
-cookies.FilterTooltip=Usar opções passadas para filtrar a lista de cookie
-cookies.filter.byPath=Filtrar cookies por caminho
-cookies.filter.byPathTooltip=Exibir somente cookies que corresponde ao caminho atual
-cookies.filter.showRejectedCookies=Exibir cookies rejeitados
-cookies.filter.showRejectedCookiesTooltip=Mostrar também cookies rejeitados na lista.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Editar Cookie
-cookies.edit.name.label=Nome:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Caminho:
-cookies.edit.expire.label=Expira:
-cookies.edit.value.label=Valor:
-cookies.edit.secure.label=Cookie seguro
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Sessão
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filtrar por Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove Todos os Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Permite inspeção e manipulação de cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Sessão
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Aceitar cookies dos sites
+cookies.tip.AllowGlobally=Aceita todos os cookies por padrão ou bloqueia todos os cookies por padrão
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Mostrar eventos de Cookie
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Limpar cookies quando negar
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cortar
+cookies.Copy=Copiar
+cookies.CopyAll=Copiar tudo
+cookies.Paste=Colar
+cookies.Delete=Excluir
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Limpa valor
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Editar
+cookies.Accept=Aceitar
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Redefini Cabeçalho
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=Você pode especificar quais páginas são sempre ou nunca permitidos para usar cookies.\nDigite o endereço exato do site que você quer gerenciar e então clique em Bloquar,\nPermitir para sessão, ou Permitir.
+cookies.ExceptionsTitle=Exceções - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Suporte para Cookie Monitoring
+cookies.HostEnable=Ativar painel de Cookies para %S
+cookies.HostDisable=Desativar painel de Cookies para %S
+cookies.Permissions=Ativa ou desativa painel de Cookies
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=Páginas do sistema
+cookies.LocalFiles=Arquivos locais
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Deseja remover todos os cookies na lista?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remover todos os cookies na lista.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove todos os cookies de sessão na lista.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Criar novo cookie para %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Valor
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Gerenciar permissões do cookie para %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=Todos os cookies foram removidos.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=Foram removidos todos os cookies de sessão.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejeitados:
+cookies.console.nocookiesreceived=Nenhum cookie recebido
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=apagado
+cookies.console.added=adicionado
+cookies.console.changed=alterado
+cookies.console.cleared=limpo
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domínio
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Seguro
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Aceitado
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejeitado
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Valor
+cookies.info.rawdatatab.Raw_Data=Dados Raw
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Padrão (Aceitar cookies da sessão)
+cookies.default.thirdPartySession=Padrão (Aceitar cookies da sessão)
+cookies.default.thirdParty=Padrão (Aceitar cookies)
+cookies.default.allow=Padrão (Aceitar cookies)
+cookies.default.deny=Padrão (Negar cookies)
+cookies.default.warn=Padrão (Alertar antes de aceitar o cookie)
+cookies.host.session=Aceitar cookies da sessão de %S
+cookies.host.accept=Aceitar cookies da %S
+cookies.host.reject=Negar cookies de %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Nome do Cookie não é válido.
+cookies.edit.invalidhost=Host do Cookie não é válido.
+cookies.edit.invalidpath=Caminho do Cookie não é válido.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Nome
+cookies.header.value=Valor
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domínio
+cookies.header.size=Tamanho
+cookies.header.path=Caminho
+cookies.header.expires=Expira
+cookies.header.security=Segurança
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Nome
+cookies.header.value.tooltip=Valor
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domínio
+cookies.header.size.tooltip=Tamanho
+cookies.header.path.tooltip=Caminho
+cookies.header.expires.tooltip=Expira
+cookies.header.security.tooltip=Segurança
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Cookies recebidos
+cookies.netinfo.Sent_Cookies=Cookies enviados
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Filtro do caminho
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Exportar todos os Cookies...
+cookies.export.Export_All_Cookies_Tooltip=Exportar todos os cookies do navegador num arquivo cookies.txt
+cookies.export.Export_For_Site=Exportar Cookies para este site...
+cookies.export.Export_For_Site_Tooltip=Exportar cookies para %S num arquivo cookies.txt
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=Não há nenhuma página ativa
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Remover para site
+cookies.Create=Criar cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Ferramentas
+cookies.ToolsTooltip=Ferramentas
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Exibir todos os cookies…
+cookies.ViewAllTooltip=Abrir gerenciador de cookie
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Permissões para páginas da web…
+cookies.ViewExceptionsTooltip=Exibir lista de páginas permitidas ou proibidas
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filtro
+cookies.FilterTooltip=Usar opções passadas para filtrar a lista de cookie
+cookies.filter.byPath=Filtrar cookies por caminho
+cookies.filter.byPathTooltip=Exibir somente cookies que corresponde ao caminho atual
+cookies.filter.showRejectedCookies=Exibir cookies rejeitados
+cookies.filter.showRejectedCookiesTooltip=Mostrar também cookies rejeitados na lista.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Editar Cookie
+cookies.edit.name.label=Nome:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Caminho:
+cookies.edit.expire.label=Expira:
+cookies.edit.value.label=Valor:
+cookies.edit.secure.label=Cookie seguro
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Sessão
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filtrar por Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove Todos os Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/pt-BR/firebug-amo.properties b/locale/pt-BR/firebug-amo.properties
index 279da00..fd3c47a 100644
--- a/locale/pt-BR/firebug-amo.properties
+++ b/locale/pt-BR/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=O Firebug integra ao Firefox uma riqueza de ferramentas de desenvolvimento na ponta de seus dedos enquanto você navega. Você pode editar, depurar e monitorar CSS, HTML e Javascript em qualquer página...\\n\\nFirebug 1.6 necessita de Firefox 3.6 ou mais atual.
-firebug.amo.description=Firebug se integra com o Firefox para adicionar uma grande variedade de ferramentas na ponta dos seus dedos enquanto você navega. Você pode editar, debugar e monitorar CSS, HTML e JavaScript instantaneamente em qualquer página web.\\n\\nVisite o website para documentação, screenshots e foruns de discussão: http://getfirebug.com
-firebug.amo.developer.comments=Se você tiver qualquer problema, por favor leia o FAQ do FireBug.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=O Firebug integra ao Firefox uma riqueza de ferramentas de desenvolvimento na ponta de seus dedos enquanto você navega. Você pode editar, depurar e monitorar CSS, HTML e Javascript em qualquer página...\\n\\nFirebug 1.6 necessita de Firefox 3.6 ou mais atual.
+firebug.amo.description=Firebug se integra com o Firefox para adicionar uma grande variedade de ferramentas na ponta dos seus dedos enquanto você navega. Você pode editar, debugar e monitorar CSS, HTML e JavaScript instantaneamente em qualquer página web.\\n\\nVisite o website para documentação, screenshots e foruns de discussão: http://getfirebug.com
+firebug.amo.developer.comments=Se você tiver qualquer problema, por favor leia o FAQ do FireBug.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/pt-BR/firebug-tracing.properties b/locale/pt-BR/firebug-tracing.properties
index d373286..8d3780c 100644
--- a/locale/pt-BR/firebug-tracing.properties
+++ b/locale/pt-BR/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Abrir Rastreamento do Firebug
-Always_Open_Firebug_Tracing=Sempre abrir o rastreamento do Firebug
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Rastrear
-tracing.Show_Scope_Variables=Mostrar Variáveis de Escopo
-tracing.Show_Time=Mostrar tempo
-tracing.tab.Stack=Pilha
-tracing.tab.Exception=Excessão
-tracing.tab.Properties=Propriedades
-tracing.tab.Scope=Escopo
-tracing.tab.Response=Resposta
-tracing.tab.Source=Fonte
-tracing.tab.Interfaces=Interfaces
-tracing.tab.Object=Objetos
-tracing.tab.Event=Evento
-tracing.cmd.Clear=Limpar
-tracing.cmd.tip.Clear=Remover todas as mensagens
-tracing.cmd.Find=Localizar
-tracing.cmd.tip.Find=Localizar texto
-tracing.cmd.Bookmark=Favoritos
-tracing.cmd.tip.Bookmark=Inserir em Favoritos
-tracing.cmd.Restart=Reiniciar o Firefox
-tracing.cmd.tip.Restart=Reiniciar o Firefox
-tracing.cmd.Exit=Sair do Firefox
-tracing.cmd.tip.Exit=Sair do Firefox
-tracing.cmd.Save=Salvar para Arquivo
-tracing.cmd.tip.Save=Salvar logs para um arquivo
-tracing.cmd.Load=Carregar do Arquivo
-tracing.cmd.tip.Load=Carregar logs de um arquivo
-tracing.cmd.Expand_All=Maximizar todos
-tracing.cmd.Collapse_All=Esconder Todos
-tracing.cmd.Tools=Ferramentas
-tracing.cmd.tip.Tools=Ferramentas
-tracing.cmd.Clear_Browser_Cache=Limpar o Cache do Browser
-tracing.cmd.tip.Clear_Browser_Cache=Limpar o Cache do Browser
-tracing.cmd.Force_Garbage_Collector=Forçar a coleta de lixo
-tracing.cmd.tip.Force_Garbage_Collector=Forçar a coleta de lixo
-tracing.cmd.Open_Profile_Directory=Abrir diretório de Perfil
-tracing.cmd.tip.Open_Profile_Directory=Abrir diretório de Perfil
-tracing.option.A11Y_Description=Questões de Acessibilidade
-tracing.option.ACTIVATION_Description=Ativação do Firebug
-tracing.option.ACTIVITYOBSERVER_Description=Observador de atividade do Firebug
-tracing.option.ANNOTATIONS_Description=Anotação de Website do Firebug
-tracing.option.BP_Description=Ponto de Parada
-tracing.option.CACHE_Description=Fonte de armazenamento temporário
-tracing.option.COMMANDLINE_Description=Linha de Comando & Nova janela de linha de comando
-tracing.option.COMPILATION_UNITS_Description=Unidades de compilação de Scripts
-tracing.option.CONSOLE_Description=Painel de Console
-tracing.option.CSS_Description=Análise de CSS
-tracing.option.DISPATCH_Description=Enviando evento
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Criação de template DOM
-tracing.option.EDITOR_Description=Editor Inline & Auto Completar
-tracing.option.ERRORLOG_Description=Log erro de JS, CSS, XML, etc.
-tracing.option.ERRORS_Description=Erros internos do Firebug
-tracing.option.EVAL_Description=Avaliação de Script
-tracing.option.FBS_BP_Description=Serviço de Pontos de parada do Firebug
-tracing.option.FBS_CREATION_Description=Serviço de criação de script do Firebug
-tracing.option.FBS_ERRORS_Description=Serviço de erros do Firebug
-tracing.option.FBS_FINDDEBUGGER_Description=Serviço de busca no depurador do Firebug
-tracing.option.FBS_FUNCTION_Description=Serviço de função do Firebug
-tracing.option.FBS_JSDCONTEXT_Description=Serviço de depuração no contexto de JavaScript do Firebug
-tracing.option.FBS_SRCUNITS_Description=Serviço de unidades de origem do Firebug
-tracing.option.FBS_STEP_Description=Serviço de etapa de depurador de JavaScript
-tracing.option.FBS_TRACKFILES_Description=Serviço de controle de arquivos do Firebug
-tracing.option.FUNCTION_NAMES_Description=Nomes das funções de JavaScript
-tracing.option.HISTORY_Description=Histórico de Navegação do Firebug
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=Observador de requisição HTTP
-tracing.option.INFOTIP_Description=Dica de ponta
-tracing.option.INITIALIZE_Description=Inicialização do Firebug
-tracing.option.INSPECT_Description=Inspetor
-tracing.option.JSONVIEWER_Description=Visualizador de JSON
-tracing.option.LINETABLE_Description=Tabela de Script inline
-tracing.option.LOCALE_Description=Localização
-tracing.option.LOCATIONS_Description=Locais de origem
-tracing.option.NET_Description=Painel de rede
-tracing.option.NET_EVENTS_Description=Eventos de rede
-tracing.option.OPTIONS_Description=Preferências do Firebug
-tracing.option.PANELS_Description=Painéis
-tracing.option.SHORTCUTS_Description=Teclas de Atalho
-tracing.option.SOURCEFILES_Description=Arquivos de origem do JavaScript
-tracing.option.SPY_Description=Observador XMLHttpRequests
-tracing.option.STACK_Description=Pilha de chamadas do Javascript
-tracing.option.STORAGE_Description=Configurações de armazenamento
-tracing.option.SVGVIEWER_Description=Visualizador de SVG
-tracing.option.FONTS_Description=Informações de fonte e Visualização de fontes
-tracing.option.TOOLTIP_Description=Botão de inicialização de dicas
-tracing.option.TOPLEVEL_Description=JavaScript de nível superior
-tracing.option.UI_LOOP_Description=Interface de usuário de depuração de JavaScript
-tracing.option.WINDOWS_Description=Janelas do Firebug & Aba de Observação
-tracing.option.XMLVIEWER_Description=Visualizador de XML
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Abrir Rastreamento do Firebug
+Always_Open_Firebug_Tracing=Sempre abrir o rastreamento do Firebug
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Rastrear
+tracing.Show_Scope_Variables=Mostrar Variáveis de Escopo
+tracing.Show_Time=Mostrar tempo
+tracing.tab.Stack=Pilha
+tracing.tab.Exception=Excessão
+tracing.tab.Properties=Propriedades
+tracing.tab.Scope=Escopo
+tracing.tab.Response=Resposta
+tracing.tab.Source=Fonte
+tracing.tab.Interfaces=Interfaces
+tracing.tab.Object=Objetos
+tracing.tab.Event=Evento
+tracing.cmd.Clear=Limpar
+tracing.cmd.tip.Clear=Remover todas as mensagens
+tracing.cmd.Find=Localizar
+tracing.cmd.tip.Find=Localizar texto
+tracing.cmd.Bookmark=Favoritos
+tracing.cmd.tip.Bookmark=Inserir em Favoritos
+tracing.cmd.Restart=Reiniciar o Firefox
+tracing.cmd.tip.Restart=Reiniciar o Firefox
+tracing.cmd.Exit=Sair do Firefox
+tracing.cmd.tip.Exit=Sair do Firefox
+tracing.cmd.Save=Salvar para Arquivo
+tracing.cmd.tip.Save=Salvar logs para um arquivo
+tracing.cmd.Load=Carregar do Arquivo
+tracing.cmd.tip.Load=Carregar logs de um arquivo
+tracing.cmd.Expand_All=Maximizar todos
+tracing.cmd.Collapse_All=Esconder Todos
+tracing.cmd.Tools=Ferramentas
+tracing.cmd.tip.Tools=Ferramentas
+tracing.cmd.Clear_Browser_Cache=Limpar o Cache do Browser
+tracing.cmd.tip.Clear_Browser_Cache=Limpar o Cache do Browser
+tracing.cmd.Force_Garbage_Collector=Forçar a coleta de lixo
+tracing.cmd.tip.Force_Garbage_Collector=Forçar a coleta de lixo
+tracing.cmd.Open_Profile_Directory=Abrir diretório de Perfil
+tracing.cmd.tip.Open_Profile_Directory=Abrir diretório de Perfil
+tracing.option.A11Y_Description=Questões de Acessibilidade
+tracing.option.ACTIVATION_Description=Ativação do Firebug
+tracing.option.ACTIVITYOBSERVER_Description=Observador de atividade do Firebug
+tracing.option.ANNOTATIONS_Description=Anotação de Website do Firebug
+tracing.option.BP_Description=Ponto de Parada
+tracing.option.CACHE_Description=Fonte de armazenamento temporário
+tracing.option.COMMANDLINE_Description=Linha de Comando & Nova janela de linha de comando
+tracing.option.COMPILATION_UNITS_Description=Unidades de compilação de Scripts
+tracing.option.CONSOLE_Description=Painel de Console
+tracing.option.CSS_Description=Análise de CSS
+tracing.option.DISPATCH_Description=Enviando evento
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Criação de template DOM
+tracing.option.EDITOR_Description=Editor Inline & Auto Completar
+tracing.option.ERRORLOG_Description=Log erro de JS, CSS, XML, etc.
+tracing.option.ERRORS_Description=Erros internos do Firebug
+tracing.option.EVAL_Description=Avaliação de Script
+tracing.option.FBS_BP_Description=Serviço de Pontos de parada do Firebug
+tracing.option.FBS_CREATION_Description=Serviço de criação de script do Firebug
+tracing.option.FBS_ERRORS_Description=Serviço de erros do Firebug
+tracing.option.FBS_FINDDEBUGGER_Description=Serviço de busca no depurador do Firebug
+tracing.option.FBS_FUNCTION_Description=Serviço de função do Firebug
+tracing.option.FBS_JSDCONTEXT_Description=Serviço de depuração no contexto de JavaScript do Firebug
+tracing.option.FBS_SRCUNITS_Description=Serviço de unidades de origem do Firebug
+tracing.option.FBS_STEP_Description=Serviço de etapa de depurador de JavaScript
+tracing.option.FBS_TRACKFILES_Description=Serviço de controle de arquivos do Firebug
+tracing.option.FUNCTION_NAMES_Description=Nomes das funções de JavaScript
+tracing.option.HISTORY_Description=Histórico de Navegação do Firebug
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=Observador de requisição HTTP
+tracing.option.INFOTIP_Description=Dica de ponta
+tracing.option.INITIALIZE_Description=Inicialização do Firebug
+tracing.option.INSPECT_Description=Inspetor
+tracing.option.JSONVIEWER_Description=Visualizador de JSON
+tracing.option.LINETABLE_Description=Tabela de Script inline
+tracing.option.LOCALE_Description=Localização
+tracing.option.LOCATIONS_Description=Locais de origem
+tracing.option.NET_Description=Painel de rede
+tracing.option.NET_EVENTS_Description=Eventos de rede
+tracing.option.OPTIONS_Description=Preferências do Firebug
+tracing.option.PANELS_Description=Painéis
+tracing.option.SHORTCUTS_Description=Teclas de Atalho
+tracing.option.SOURCEFILES_Description=Arquivos de origem do JavaScript
+tracing.option.SPY_Description=Observador XMLHttpRequests
+tracing.option.STACK_Description=Pilha de chamadas do Javascript
+tracing.option.STORAGE_Description=Configurações de armazenamento
+tracing.option.SVGVIEWER_Description=Visualizador de SVG
+tracing.option.FONTS_Description=Informações de fonte e Visualização de fontes
+tracing.option.TOOLTIP_Description=Botão de inicialização de dicas
+tracing.option.TOPLEVEL_Description=JavaScript de nível superior
+tracing.option.UI_LOOP_Description=Interface de usuário de depuração de JavaScript
+tracing.option.WINDOWS_Description=Janelas do Firebug & Aba de Observação
+tracing.option.XMLVIEWER_Description=Visualizador de XML
diff --git a/locale/pt-BR/firebug.properties b/locale/pt-BR/firebug.properties
index 3bbb491..6b6c1ab 100644
--- a/locale/pt-BR/firebug.properties
+++ b/locale/pt-BR/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Console
-panel.tip.console=Permite observar as mensagens do console e executar comandos JavaScript
-Panel-net=Rede
-panel.tip.net=Permite analizar o tráfego de rede.
-Panel-html=HTML
-panel.tip.html=Permite inspeção e manipulação de nós DOM
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Permite a inspeção e manipulação de propriedades CSS
-Panel-script=Script
-panel.tip.script=Permite o debug de JavaScript
-Panel-dom=DOM
-panel.tip.dom=Permite a inspeção e manipulação de propriedades DOM
-Panel-css=Estilo
-panel.tip.css=Permite inspecionar e manipular as regras de CSS para o módulo DOM selecionado
-Panel-computed=Executado
-panel.tip.computed=Permite inspecionar os valores renderizados de CSS do módulo DOM selecionado
-Panel-layout=Exibição
-panel.tip.layout=Permite inspecionar e manipular os dados de layout do módulo DOM selecionado
-Panel-domSide=DOM
-panel.tip.domSide=Permite inspecionar e manipular as propriedades DOM do módulo DOM selecionado
-Panel-watches=Observar
-panel.tip.watches=Permite inspecionar as variáveis de JavaScript disponíveis na pilha atual e definindo expressões de observações
-Panel-breakpoints=Pontos de Interrupção
-panel.tip.breakpoints=Permite manipular os breakpoints
-Panel-callstack=Pilha
-panel.tip.callstack=Permite observer a chamada de pilha do JavaScript atual
-Panel-scopes=Escopos
-firebug.DetachFirebug=Abrir Firebug em Nova Janela
-firebug.AttachFirebug=Adicionar o Firebug em uma janela do Browser
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Firebug Total;%1$S Firebug Totais
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Desabilitado
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S:%S
-inBrowser=No Navegador
-minimized=Minimizado
-enablement.for_all_pages=para todas as páginas
-enablement.on=Ativo
-enablement.off=Inativo
-enablement.Panel_activation_status=Status de ativação do painel
-none=Fechado
-Firebug_-_inactive_for_current_website=Firebug - inativo para o website atual
-Activate_Firebug_for_the_current_website=Ativar Firebug para o website atual
-Minimized=Minimizado
-Minimize_Firebug=Minimize Firebug
-On_for_all_web_pages=Desativado para todas as páginas da Web
-firebug.menu.tip.On_for_all_Web_Sites=Ativa o Firebug como padrão para todos os websites
-firebug.menu.Clear_Activation_List=Limpar lista de ativação
-firebug.menu.tip.Clear_Activation_List=Limpar a liste de websites que o Firebug é ativado
-firebug.menu.Detached=Desconectado
-firebug.menu.tip.Detached=Desconectar o Firebug para sua própria janela
-firebug.menu.Top=Cima
-firebug.menu.tip.Top=Alinhar o Firebug para a parte de cima de uma janela de agentes
-firebug.menu.Bottom=Baixo
-firebug.menu.tip.Bottom=Alinhar o Firebug para a parte de baixo de uma janela de agentes
-firebug.menu.Left=Esquerda
-firebug.menu.tip.Left=Alinhar o Firebug para a parte esquerda de uma janela de agentes
-firebug.menu.Right=Direita
-firebug.menu.tip.Right=Alinhar o Firebug para a parte direita de uma janela de agentes
-firebug.uiLocation=Localização de IU do Firebug
-firebug.menu.tip.UI_Location=Posição da interface de usuário do Firebug
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Opções do Firebug
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Mostrar todos os painéis
-console.option.Show_Command_Line=Mostrar Linha de Comando
-console.option.tip.Show_Command_Line=Manter foco na Linha de Comando / Mostrar Popup da Linha de Comando
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=Exibir Erros do JavaScript
-console.option.tip.Show_JavaScript_Errors=Gravar log de erros do JavaScript no Console
-ShowJavaScriptWarnings=Exibir Avisos do JavaScript
-console.option.tip.Show_JavaScript_Warnings=Gravar warnings de JavaScript no console
-ShowCSSErrors=Exibir Erros das CSS
-console.option.tip.Show_CSS_Errors=Gravar mensagens de erros CSS no console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Exibir Pilha Traçada Com Erros
-console.option.tip.Show_Stack_Trace=Mostrar informações da Pilha para mensagens de erro
-ShowXMLHttpRequests=Exibir XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Gravar XMLHttpRequests no console
-ShowChromeErrors=Exibir Erros do Chrome
-console.option.tip.Show_System_Errors=Gravar mensagens de erro do programa e add-ons no console
-ShowChromeMessages=Exibir Mensagens do Chrome
-console.option.tip.Show_System_Messages=Gravar mensagens internas do programa e add-ons no console
-ShowExternalErrors=Exibir Erros Externos
-console.option.tip.Show_External_Errors=Gravar mensagens de erro vindo de fontes externas para o console
-ShowNetworkErrors=Mostrar erros de Rede
-console.option.tip.Show_Network_Errors=Gravar mensagens de erro de rede no console
-JavascriptOptionsStrict=Avisos Severos (desvantagem no desempenho)
-console.option.tip.Show_Strict_Warnings=Gravar também warnings estritos no console
-Command_History=Histórico de Comandos
-console.option.Show_Command_Editor=Mastrar Editor de Comandos
-console.option.tip.Show_Command_Editor=Trocar para o Editor de Comando
-commandLineShowCompleterPopup=Mostrar Popup de lista de complementos
-console.option.tip.Show_Completion_List_Popup=Mostrar o popup de auto-completar para comandos
-Assertion=Falha na Confirmação
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (linha %S)
-LineAndCol=%S (linha %S, col %S)
-InstanceLine=%S #%S (linha %S)
-StackItem=%S (%S linha %S)
-SystemItem=<Sistema>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspecionar no Painel %S
-panel.tip.Inspect_In_Panel=Troque para o painel %S para examinar o objeto lá
-NoName=(sem nome)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Exibir Texto Completo
-html.option.tip.Show_Full_Text=Não cortar conteúdo dos elementos
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Exibir Espaço em Branco
-html.option.tip.Show_Whitespace=Mostar espaços em branco dentro dos nós
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Exibir Comentários
-html.option.tip.Show_Comments=Mostrar nós comentados
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Mostar Entidades como Símbolos
-html.option.tip.Show_Entities_As_Symbols=Mostrar todas as entidades XML usando sua representação simbólica
-html.option.Show_Entities_As_Names=Mostar Entidades como Nomes
-html.option.tip.Show_Entities_As_Names=Mostrar todas as entidades XML usando seus nomes
-html.option.Show_Entities_As_Unicode=Mostrar Entidades como Unicode
-html.option.tip.Show_Entities_As_Unicode=Mostrar todas as entidades XML em sua representação Unicode
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Destacar Mudanças
-html.option.tip.Highlight_Mutations=Destacar trocas dentro dos nós
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Expandir Mudanças
-html.option.tip.Expand_Mutations=Expandir a visao de árvore para mostrar os nós alterados
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Rolar Mudanças na Visualização
-html.option.tip.Scroll_To_Mutations=Navegue pela visão de árvore para trazer os nós alterados para a view
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Mostrar caixa rápida de informações
-inspect.option.tip.Show_Quick_Info_Box=Mostrar informação sobre o objeto inspecionado no momento dentro de um painel sobreposto na página
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Sombrear modelo de Caixa
-inspect.option.tip.Shade_Box_Model=Sombrear as partes diferentes no modelo de caixas
-ScrollIntoView=Rolar na Visualização
-html.tip.Scroll_Into_View=Role a pagina para tornar o elemento visível
-NewAttribute=Novo Atributo...
-html.tip.New_Attribute=Adicione um novo atributo para este elemento
-html.Edit_Node=Editar %S...
-html.Node=Nó
-html.tip.Edit_Node=Editar %S usando o editor de texto completo
-DeleteElement=Excluir Elemento
-html.Delete_Element=Deletar o elemento da árvore
-DeleteNode=Excluir Nó
-html.Delete_Node=Deletar o nó da árvore
-# Quick Info Box
-quickInfo=Informação Rápida
-computedStyle=Style executado
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Parar em uma alteração
-html.Disable_Break_On_Mutate=Desabilitar parada em uma alteração
-html.label.Break_On_Text_Change=Parar na troca de texto
-html.label.HTML_Breakpoints=Pontos de parada no HTML
-html.label.Break_On_Attribute_Change=Parar na troca de Atributos
-html.tip.Break_On_Attribute_Change=Para a execução do JavaScript quando um atributo desse elemento alterar
-html.label.Break_On_Child_Addition_or_Removal=Parar na inserção ou remoção de Filho
-html.tip.Break_On_Child_Addition_or_Removal=Para a execução do JavaScript quanto um nó filho for adicionado ou removido deste elemento
-html.label.Break_On_Element_Removal=Parar na remoção de elemento
-html.tip.Break_On_Element_Removal=Parar a execução do JavaScript quando o elemento for removido
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Expandir/Contrair Todos
-html.tip.Expand/Contract_All=Expandir/Esconder todos os filhos recursivamente
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Quebra na Altereção de Propriedade
-dom.tip.Break_On_Property_Change=Parar a execução do JavaScript quando esta propriedade alterar
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Desabilitar Quebra na Alteração de Propriedade
-dom.label.DOM_Breakpoints=Pontos de Parada DOM
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Editar Attributo \"%S\"...
-html.tip.Edit_Attribute=Editar o valor do atributo "%S" desse elemento
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Excluir Atributo \"%S\"
-html.tip.Delete_Attribute=Deletar o atributo "%S" desse elemento
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Herdado de
-SothinkWarning=A extensão Sothink SWF Catcher está impedindo o Firebug de funcionar adequadamente.<br><br>Por favor, leia <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">este item na FAQ do Firebug</a> para ajuda.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=Juiz faz com que whisky de malte baixe logo preço de venda. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=Não há regras. Você pode <a>criar uma regra</a>
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=Este elemento não tem regras de estilo. Você pode <a>criar uma regra</a> para isso.
-EditStyle=Editar Estilo do Elemento...
-style.tip.Edit_Style=Editar estilo \"inline\" do elemento
-AddRule=Adicionar Regra
-css.tip.AddRule=Adicionar uma regra geral para este elemento
-NewRule=Nova Regra...
-css.tip.New_Rule=Adicionar uma nova regra
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Deletar "%S"
-css.tip.Delete_Rule=Deletar a regra "%S" e todas as suas propriedades
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Nova Propriedade...
-css.tip.New_Prop=Adicionar uma nova propriedade à regra atual
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=Editar \"%S\"...
-css.tip.Edit_Prop=Editar o valor da propriedade "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=Desabilitar \"%S\"
-css.tip.Disable_Prop=Desabilitar a propriedade "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=Excluir \"%S\"
-css.tip.Delete_Prop=Deletar a propriedade "%S"
-# Console context menu labels.
-BreakOnThisError=Interromper Neste Erro
-console.menu.tip.Break_On_This_Error=Para a execução do JavaScript assim que este erro ocorrer
-BreakOnAllErrors=Interromper em Todos os Erros
-console.menu.tip.Break_On_All_Errors=Para a execução do JavaScript assim que um erro ocorrer
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Acompanhar Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Usar Última Linha do Fonte para nomes de eval()
-UseMD5ForEvalName=Usar MD5 para nomes de eval()
-# Breakpoints side panel
-Breakpoints=Pontos de Interrupção
-ErrorBreakpoints=Pontos de Interrupção de Erro
-LoggedFunctions=Funções Registradas
-EnableAllBreakpoints=Habilitar Todos os Pontos de Interrupção
-breakpoints.option.tip.Enable_All_Breakpoints=Habilitar todos os pontos de interrupção listados
-DisableAllBreakpoints=Desabilitar Todos os Pontos de Interrupção
-breakpoints.option.tip.Disable_All_Breakpoints=Desabilitar todos os pontos de interrupção listados
-ClearAllBreakpoints=Remover Todos os Pontos de Interrupção
-breakpoints.option.tip.Clear_All_Breakpoints=Remover todos os pontos de interrupção listados
-ConditionInput=Este ponto de interrupção vai parar apenas se esta expressão for verdadeira:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Remover Ponto de Interrupção
-breakpoints.tip.Remove_Breakpoint=Remover o ponto de interrupção
-breakpoints.Disable_Breakpoint=Desabilitar Ponto de Interrupção
-breakpoints.tip.Disable_Breakpoint=Desabilitar o ponto de interrupção
-breakpoints.Enable_Breakpoint=Habilitar Ponto de Interrupção
-breakpoints.tip.Enable_Breakpoint=Habilitar o ponto de interrupção
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Continuar
-script.balloon.Disable=Desabilitar
-ScriptsFilterStatic=Exibir Scripts Estáticos
-ScriptsFilterEval=Exibir Scripts Estáticos e de eval
-ScriptsFilterEvent=Exibir Scripts Estáticos e de eventos
-ScriptsFilterAll=Exibir Scripts Estáticos, de eval e eventos
-ScriptsFilterStaticShort=estático
-ScriptsFilterEvalShort=evals
-ScriptsFilterEventShort=eventos
-ScriptsFilterAllShort=tudo
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Expandir Todos
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Fechar Todos
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Exibir Propriedades Definidas pelo Usuário
-dom.option.tip.Show_User_Props=Exibir propriedades de objetos definidas pelo usuário
-ShowUserFuncs=Exibir Funções Definidas pelo Usuário
-dom.option.tip.Show_User_Funcs=Exibir métodos de objetos definidas pelo usuário
-ShowDOMProps=Exibir Propriedades do DOM
-dom.option.tip.Show_DOM_Props=Exibir propriedades especificadas dentro do DOM
-ShowDOMFuncs=Exibir Funções do DOM
-dom.option.tip.Show_DOM_Funcs=Exibir funções especificadas dentro do DOM
-ShowDOMConstants=Exibir Constantes do DOM
-dom.option.tip.Show_DOM_Constants=Exibir constantes especificadas dentro do DOM
-ShowInlineEventHandlers=Exibir Manipuladores de Eventos \"Inline\"
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=Não há propriedades a exibir para este objeto.
-NewWatch=Nova expressão observadora...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Adicionar Observador
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Copiar Código Fonte
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<numero> para ir para a linha
-CopyValue=Copiar Valor
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Copiar nome
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Copiar caminho
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Nova Propriedade...
-EditProperty=Editar Propriedade...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Editar Variável...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Editar Observador...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Excluir Propriedade
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Excluir Observador
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Definir Ponto de Interrupção
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Editar Condição do Ponto de Interrupção
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=Não há pontos de interrupção definidos nesta página.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Mostrar apenas estilos aplicados
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Mostrar User Agent CSS
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Mostrar estilos para a pseudoclasse :focus
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspecionar Declaração
-css.tip.Inspect_Declaration=Inspecionar a declaração desta fonte
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Mostar as Propriedades \"Shorthand\"
-css.option.tip.Expand_Shorthand_Properties=Expandir propriedades \"shorthand\" dentro de seus componentes
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Em ordem alfabética
-computed.option.tip.Sort_Alphabetically=Ordenar os estilos por nome/agrupar os estilos em categorias
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Mostrar os estilos específicos da Mozilla
-computed.option.tip.Show_Mozilla_Specific_Styles=Mostrar também estilos com prefixo -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=Este elemento não possui regras de estilo definidas pelo usuário
-script.Type_any_key_to_filter_list=Digitar qualquer tecla para filtrar na lista
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=enchimento
-LayoutBorder=borda
-LayoutMargin=margem
-LayoutPosition=posição
-LayoutAdjacent=adjacente
-position=posição
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Exibir Réguas e Linhas guia
-layout.option.tip.Show_Rulers=Exibir réguas e linhas guia ao passar o mouse sobre partes do layout
-# Net panel
-Loading=Carregando...
-Headers=Cabeçalhos
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Reiniciar cabeçalho
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=URL requisitada e usando método HTTP.
-net.header.Status=Status
-net.header.Status_Tooltip=Status do resultado recebido.
-net.header.Domain=Domínio
-net.header.Domain_Tooltip=Domínio da solicitação executada.
-net.header.Size=Tamanho
-net.header.Size_Tooltip=Tamanho da resposta recebida.
-net.header.Timeline=Linha de tempo
-net.header.Timeline_Tooltip=Informação detalhada de tempo sobre a resposta solicitada.
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=Pontos de parada de XHR
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Parar no XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=ver fonte
-net.headers.pretty_print=boa impressão
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Media
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Postar
-Put=Colocar
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Resposta
-URLParameters=Parâmetros
-Cache=Cache
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Ordenar por chave
-jsonviewer.do_not_sort=Não ordenar
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Cabeçalhos de Solicitação
-ResponseHeaders=Cabeçalhos de Resposta
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=O limite de registros do Firebug foi atingido. %1$S entrada não é mostrada.;O limite de registros do Firebug foi atingido. %1$S entradas não são mostradas.
-LimitPrefs=Preferências
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=A fim de alterar o limite modifique: %S
-Refresh=Atualizar
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Abrir em Nova Aba
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Abrir Resultado em uma Nova Aba
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Perfil
-ProfilerStarted=O perfilador está em execução. Clique em \'Perfil\' novamente para ver seu relatório.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S chamada);(%1$Sms, %2$S chamadas)
-NothingToProfile=Sem atividade ao perfil.
-PercentTooltip=Percentual de tempo gasto nesta função.
-CallsHeaderTooltip=Número de vezes em que a função foi chamada.
-OwnTimeHeaderTooltip=Tempo gasto na função, excluindo chamadas aninhadas.
-TimeHeaderTooltip=Tempo gasto na função, incluindo chamadas aninhadas.
-AvgHeaderTooltip=Média de tempo, incluindo chamadas a funções.
-MinHeaderTooltip=Tempo mínimo, incluindo chamadas a funções.
-MaxHeaderTooltip=Tempo máximo, incluindo chamadas a funções.
-ProfileButton.Enabled.Tooltip=Perfil do tempo de execução do JavaScript.
-ProfileButton.Disabled.Tooltip=Perfil do tempo de execução do JavaScript (O painel Script precisa estar habilitado).
-Function=Função
-Percent=Por cento
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Chamadas
-OwnTime=Tempo Próprio
-Time=Tempo
-Avg=Méd
-Min=Min
-Max=Máx
-File=Arquivo
-# Support for standard actions.
-Copy=Copiar
-Cut=Recortar
-Remove=Remover
-Delete=Delete
-Paste=Colar
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Copiar innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Copiar XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Copiar o caminho do CSS
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Copiar Localização
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Copiar Localização com Parâmetros
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Copiar Cabeçalhos de Solicitação
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Copiar Cabeçalhos de Resposta
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Copiar Corpo de Resposta
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Copiar Erro
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Copiar Função
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Registrar Chamadas a \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Registrar Eventos
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Habilitado
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=O console do Firebug não suporta \'%S\'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=A linha de comando do Firefox não suporta \'%S\'
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Desabilitar paradas em todos os erros
-console.Break_On_All_Errors=Parar em todos os erros
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Parar neste erro
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=Javascript está desabilitado nas suas preferências do Firefox. Se você deseja utilizar essa janela de console, então por favor habilite essa opção através de \'Ferramentas\'->\'Opções\'->\'Conteúdo\'->\'Habilitar Javascript\'
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=A linha de comandos para páginas XML do Firebug esta desabilitada. Você pode <a>mudar para HTML</a> e habilitar-lo.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Corpo de resposta
-net.sizeinfo.Post_Body=Corpo de envio
-net.sizeinfo.Total_Sent=Total Enviado
-net.sizeinfo.Total_Received=Total Recebido
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Painel de Rede ativado. Qualquer requisição efetuada enquanto o Painel de Rede estiver ativo não será mostrada.
-net.responseSizeLimitMessage=O limite de tamanho de resposta do Firebug foi atingido. Clique <a>aqui</a> para abrir o resultado em uma nova aba do Firefox.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=limite de tamanho máximo do Firebug foi atingido pelo Firebug.
-net.Break_On_XHR=Parar no XHR
-net.label.Parameters=Parâmetros
-net.label.Parts=Partes
-net.label.Source=Fonte
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Desabilitar Cache do Browser
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Mostrar eventos de pintura
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Parar na Próxima
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Exibir Cabeçalhos HTTP
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S requisição;%1$S requisições
-FromCache=do cache
-StopLoading=Parar Carregamento
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Dado Muito Grande)
-ShowComputedStyle=Exibir Estilo Computado
-StyleGroup-text=Texto
-StyleGroup-background=Fundo
-StyleGroup-box=Modelo de Caixa
-StyleGroup-layout=Exibição
-StyleGroup-other=Outro
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Copiar Cor
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Copiar Localização da Imagem
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Abrir Imagem em Nova Aba
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Omitir Barra de Ferramentas Pilha
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copiar declaração de regra
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Copiar declaração de estilo
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Erro;%1$S Erros
-moduleManager.title=O painel %S está desabilitado
-moduleManager.desc3=Use o menu do ícone do Firebug na Barra de Status para habilitar ou desabilitar todos os painéis. Use as abas do menu menor para controle individual do painel.
-moduleManager.Enable=Ativar
-Suspend_Firebug=Suspender o Firebug
-Resume_Firebug=Resultado do Firebug.
-Reset_Panels_To_Disabled=Reinicie os painéis para desabilitar.
-Open_Console=Abrir Console
-Open_Console_Tooltip=Abrir terminal de rastreio para Firebug.
-Scope_Chain=Sequencia de Escopo
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=Com
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Chamada
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Janela
-Logs=Logs
-Options=Opções
-Copy_Stack=Copiar Pilha
-Copy Exception=Copiar Exceção
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Bloquear
-requestinfo.Resolving=Procura do DNS
-requestinfo.Connecting=Conectando
-requestinfo.Sending=Enviando
-requestinfo.Waiting=Aguardando
-requestinfo.Receiving=Recebendo
-requestinfo.ContentLoad=\'Conteúdo DOM Carregado\' (evento)
-requestinfo.WindowLoad=\'carregar\' (evento)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Pesquisa do Firebug
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Próximo
-search.tip.Next=Search for the next match
-search.Previous=Anterior
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Forçar diferencial entre Maiúsculas e Minúsculas
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Multiplos Arquivos
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Usar Expressões Regulares
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=Seletor CSS
-search.net.Headers=Cabeçalhos
-search.net.Parameters=Parâmetros
-search.net.Response_Bodies=Corpo de Respostas
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persistente
-firebug.console.Do_Not_Clear_On_Reload2=Não limpar o painel no recarregamento da página
-firebug.console.Show_All_Log_Entries=Mostrar todas as entradas do Log
-firebug.console.Errors=Erros
-firebug.console.Filter_by_Errors=Filtrar por Erros
-firebug.console.Warnings=Avisos
-firebug.console.Filter_by_Warnings=Filtrar por Avisos
-firebug.console.Info=Informações
-firebug.console.Filter_by_Info=Filtrar por Informações
-firebug.console.Debug_Info=Informação de Depuração
-firebug.console.Filter_by_Debug_Info=Filtrar por Informações de Depuração
-firebug.Deactivate_Firebug=Desativar o Firebug
-firebug.tip.Deactivate_Firebug=Desativar o Firebug para o site atual
-firebug.ShowFirebug=Abrir Firebug
-firebug.menu.tip.Open_Firebug=Mostrar a Interface de Usuário do Firebug
-firebug.HideFirebug=Ocultar Firebug
-firebug.menu.tip.Minimize_Firebug=Minimizar o Firebug, mas mantê-lo ativo
-firebug.FocusFirebug=Focus na Janela do Firebug
-firebug.menu.tip.Focus_Firebug=Focus na Janela do Firebug
-firebug.menu.Enable_All_Panels=Ativar todos painéis
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Desativar todos painéis
-firebug.menu.tip.Disable_All_Panels=Desativar todos os painéis ativáveis
-firebug.menu.Customize_shortcuts=Customizar Atalhos
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Opções
-firebug.menu.tip.Options=Preferências Globais do Firebug
-firebug.menu.Enable_Accessibility_Enhancements=Habilitar Acessórios de Acessibilidade
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Reiniciar todas as opções do Firebug
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug Online
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Mostrar contador de erros
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Tamanho do Texto
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Aumentar o Tamanho do Texto
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Diminuir o Tamanho do Texto
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Tamanho do Texto Normal
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Website do Firebug...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Documentação...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Atalhos de Teclado...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Grupo de Discussão...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Acompanhador de Questões...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Contribuir...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Sobre...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Busca
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Repetir Comando
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Alternar para Inspeção
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Alternar para Caixa de Informação Rápida
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Alternar para Desempenho
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Selecionar Linha de Comando
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Selecionar Busca do Firebug
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Selecionar Editor de Vista
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Selecionar Localização
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Próximo Objeto
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Objeto Anterior
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Customizar Teclas do Firebug
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Abrir Firebug em uma Nova Janela
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Trocar para painel do firebug à esquerda
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Alterar para Painel do Firebug à Direita
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Abrir Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Aba anterior do Firebug
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Limpar Console
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Abrir terminal de rastreamento
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Voltar
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Avançar
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Aumentar tamanho do texto
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Diminuir o tamanho do texto
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Tamanho de Texto Normal
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Seletor de painéis
-customizeShortcuts=Atribuição de teclas de atalho para o Firebug
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=painel de ferramentas
-a11y.labels.firebug_panels=painéis do Firebug
-a11y.labels.firebug_side_panels=painéis laterais do Firebug
-a11y.labels.firebug_window=janela do Firebug
-a11y.labels.firebug_status=status do Firebug
-a11y.labels.reset=reiniciar
-a11y.labels.reset_shortcut=reiniciar o atalho %S
-aria.labels.inactive_panel=painel inativo
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=monitorar linhas
-a11y.labels.call_stack=chamar pilha
-a11y.labels.document_structure=Estrutura do documento
-a11y.labels.title_panel=painel %S
-a11y.labels.title_side_panel=painel lateral %S
-a11y.labels.cached=cacheado
-aria.labels.stack_trace=percurso da pilha
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=borda
-a11y.layout.margin=margem
-a11y.layout.position=posição
-a11y.layout.position_top=posicionamento acima
-a11y.layout.position_right=posicionamento a direita
-a11y.layout.position_bottom=posicionamento a baixo
-a11y.layout.position_left=posicionamento a esquerda
-a11y.layout.margin_top=topo da margem
-a11y.layout.margin_right=margem direita
-a11y.layout.margin_bottom=margem da base
-a11y.layout.margin_left=margem esquerda
-a11y.layout.border_top=topo da borda
-a11y.layout.border_right=borda direita
-a11y.layout.border_bottom=borda de base
-a11y.layout.border_left=borda esquerda
-a11y.layout.padding_top=espaçamento superior
-a11y.layout.padding_right=espaçamento direito
-a11y.layout.padding_bottom=espaçamento base
-a11y.layout.padding_left=espaçamento esquerdo
-a11y.layout.top=topo
-a11y.layout.right=direita
-a11y.layout.bottom=base
-a11y.layout.left=esquerda
-a11y.layout.width=largura
-a11y.layout.height=altura
-a11y.layout.size=tamanho
-a11y.layout.z-index=index-z
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=extensão do quadrado cliente
-a11y.descriptions.press_enter_to_edit_values=pressione Enter seguifo de TAB para editar valores individuais
-a11y.labels.style_rules=regras de estilo
-aria.labels.inherited_style_rules=regras de estilo herdadas
-a11y.labels.computed_styles=estilos processados
-a11y.labels.dom_properties=propriedades DOM
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=editor inine
-a11y.labels.value_for_attribute_in_element=valor para o atributo %S no elemento %S
-a11y.labels.attribute_for_element=atributo para elemento %S
-a11y.labels.text_contents_for_element=conteudo de texto para o elemento %S
-a11y.labels.defined_in_file=definido em %S
-a11y.labels.declarations_for_selector=declarações de estilo para o seletor \"%S\"
-a11y.labels.property_for_selector=propriedade CSS para o seletor: %S
-a11y.labels.value_property_in_selector=valor da propriendade %S para o seletor %S
-a11y.labels.css_selector=seletor CSS
-a11y.labels.source_code_for_file=código fonte para o arquivo %S
-a11y.labels.press_enter_to_add_new_watch_expression=pressione enter para adicionar uma nova expressão de vistoria
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=sobrescrito
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=tem ponto de parada condicional
-a11y.updates.has_disabled_break_point=tem ponto de parada desabilitado
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script suspendido na linha %S em %S, arquivo %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=resultado encontrado para \"%S\" na linha %S de log
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=resultado encontrado para \"%S\" na linha %S em %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=resultado encontrado para \"%S\" no elemento %S no caminho %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=resultado encontrado para \"%S\" no atributo %S=%S para o elemento %S no caminho %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=resultado encontrado para \"%S\" no texto contendo: %S no elemento %S no caminho %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=encontrada busca por \"%S\" no seletor %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=encontrada busca por \"%S\" na declaração de estilo %S no seletor %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=encontrada busca por \"%S\" na propriedade DOM %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=encontrada busca por \"%S\" em %S, %s:%S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=encontrada busca por \"%S\" no sumario de rede na linha: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=sem busca por \"%S\" no seletor %S
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Você tem certeza que deseja voltar todas as opções do Firebug para o estado inicial?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=O Terminal deve estar habilitado
-warning.Command_line_blocked?=Linha de comando bloqueada?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Reinicie para ativar a janela do terminal
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=A base para essa URL não está no texto
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=voltar para este painel
-firebug.history.Stay_on_this_panel=Ficar neste painel
-firebug.history.Go_forward_to_this_panel=Voltar para este painel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Voltar
-firebug.history.Go_forward=Avançar
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Painel de Script ficou inativo durante o carregamento da página
-script.suggestion.inactive_during_page_load2=<a>Recarregue</a> para ver todas as fontes
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=O Javascript está desabilitado
-script.suggestion.javascript_not_enabled=Veja Firefox > Ferramentas > Opções > Conteúdo > Habilitar Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Habilite o Javascript e recarregue
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Todos os scripts foram filtrados
-script.suggestion.all_scripts_filtered=Veja a filtragem de Script na barra de tarefas \"Mostrar Opções de Código Chrome\"
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=Sem Javascript nesta página
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=O depurador já está ativo
-script.suggestion.debugger_active=O depurador está parado em um ponto de parada em outra página
-script.button.Go_to_that_page=Ir para a página
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Fechar
-firebug.View=Visualizar
-firebug.Help=Ajuda
-firebug.Run=Executar
-firebug.Copy=Copiar
-firebug.History=Histórico
-firebug.Run_the_entered_command=Execute o comando digitado
-firebug.Clear_the_Command_Editor=Limpar Editor do Comando
-firebug.Copy_the_script_as_a_bookmarklet=Copia o Script como um marcador
-firebug.Insert_a_previously_entered_command=Insere um comando previamente inscrito
-firebug.AlwaysOpenInWindow=Sempre Abrir em Nova Janela
-firebug.OpenWith=Abrir Com Editor
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Sites...
-firebug.Configure_Editors=Configurar Editores
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Inspecionar
-firebug.InspectElement=Inspecionar Elemento
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Interromper em Erros
-firebug.InspectTooltip=Clique em um elemento na página para inspecionar
-firebug.EditHTMLTooltip=Editar este HTML
-firebug.Profile=Perfil
-firebug.Clear=Limpar
-firebug.ClearConsole=Limpar Console
-firebug.ClearTooltip=Limpar o Console
-firebug.All=Tudo
-firebug.Images=Imagens
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Editores do Firebug Configurados
-editors.Editor=Editor
-editors.Executable=Executável
-editors.Launch_Arguments=Argumentos de Lançamento
-editors.Add=Adicionar
-editors.Remove=Remover
-editors.Change=Alterar
-editors.Move_Up=Mover para cima
-editors.Close=Fechar
-editors.Browse=Navegar ...
-changeEditor.Editor_Configuration=Editor de Configuração
-changeEditor.Name=Nome:
-changeEditor.Executable=Executável:
-changeEditor.CmdLine=Argumentos:
-changeEditor.Supplied_arguments=Argumentos fornecidos pelo Firebug:
-changeEditor.URL_of_file=URL do arquivo (se %url não esta presente, %file será adicionado como padrão)
-changeEditor.Path_to_local_file=Caminho para o local do arquivo (ou para a copia temporária)
-changeEditor.Line_number=Número da linha (se disponível)
-changeEditor.Invalid_Application_Path=Caminho inválido de aplicação
-changeEditor.Application_does_not_exist=A aplicação especificada não existe!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Editar
-firebug.css.sourceEdit=Editar código fonte
-firebug.css.sourceEdit.tooltip=Área de edição de texto como fonte de estilo carregado pelo navegador
-firebug.css.liveEdit=Edição em Movimento
-firebug.css.liveEdit.tooltip=Área de edição de texto CSS extraído a partir do browser
-firebug.EditCSSTooltip=Editar esta folha de estilo
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Os sites não são lembrados no modo de navegação privativa
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Mostrar notificações de parada
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=Você pode desabilitar/habilitar notificações de parada no <a>menu de aba do painel</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicar no botão \'Desabilitar\' substitui \'depurador\' com um ponto de interrupção desabilitado.
-firebug.bon.tooltip.disableDebuggerKeyword2=Cria um ponto de interrupção desabilitado
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=Não há objetos filhos
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=mais
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item Armazenado;%1$S itens Armazenados
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Propriedades do Objeto
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(Sem acabamentos)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=O objeto URL foi provavelmente revogada pelo método revokeObjectURL.
-firebug.failedToPreviewImageURL=Falha ao carregar a URL dada.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Console
+panel.tip.console=Permite observar as mensagens do console e executar comandos JavaScript
+Panel-net=Rede
+panel.tip.net=Permite analizar o tráfego de rede.
+Panel-html=HTML
+panel.tip.html=Permite inspeção e manipulação de nós DOM
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Permite a inspeção e manipulação de propriedades CSS
+Panel-script=Script
+panel.tip.script=Permite o debug de JavaScript
+Panel-dom=DOM
+panel.tip.dom=Permite a inspeção e manipulação de propriedades DOM
+Panel-css=Estilo
+panel.tip.css=Permite inspecionar e manipular as regras de CSS para o módulo DOM selecionado
+Panel-computed=Executado
+panel.tip.computed=Permite inspecionar os valores renderizados de CSS do módulo DOM selecionado
+Panel-layout=Exibição
+panel.tip.layout=Permite inspecionar e manipular os dados de layout do módulo DOM selecionado
+Panel-domSide=DOM
+panel.tip.domSide=Permite inspecionar e manipular as propriedades DOM do módulo DOM selecionado
+Panel-watches=Observar
+panel.tip.watches=Permite inspecionar as variáveis de JavaScript disponíveis na pilha atual e definindo expressões de observações
+Panel-breakpoints=Pontos de Interrupção
+panel.tip.breakpoints=Permite manipular os breakpoints
+Panel-callstack=Pilha
+panel.tip.callstack=Permite observer a chamada de pilha do JavaScript atual
+Panel-scopes=Escopos
+firebug.DetachFirebug=Abrir Firebug em Nova Janela
+firebug.AttachFirebug=Adicionar o Firebug em uma janela do Browser
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Firebug Total;%1$S Firebug Totais
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Desabilitado
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S:%S
+inBrowser=No Navegador
+minimized=Minimizado
+enablement.for_all_pages=para todas as páginas
+enablement.on=Ativo
+enablement.off=Inativo
+enablement.Panel_activation_status=Status de ativação do painel
+none=Fechado
+Firebug_-_inactive_for_current_website=Firebug - inativo para o website atual
+Activate_Firebug_for_the_current_website=Ativar Firebug para o website atual
+Minimized=Minimizado
+Minimize_Firebug=Minimize Firebug
+On_for_all_web_pages=Desativado para todas as páginas da Web
+firebug.menu.tip.On_for_all_Web_Sites=Ativa o Firebug como padrão para todos os websites
+firebug.menu.Clear_Activation_List=Limpar lista de ativação
+firebug.menu.tip.Clear_Activation_List=Limpar a liste de websites que o Firebug é ativado
+firebug.menu.Detached=Desconectado
+firebug.menu.tip.Detached=Desconectar o Firebug para sua própria janela
+firebug.menu.Top=Cima
+firebug.menu.tip.Top=Alinhar o Firebug para a parte de cima de uma janela de agentes
+firebug.menu.Bottom=Baixo
+firebug.menu.tip.Bottom=Alinhar o Firebug para a parte de baixo de uma janela de agentes
+firebug.menu.Left=Esquerda
+firebug.menu.tip.Left=Alinhar o Firebug para a parte esquerda de uma janela de agentes
+firebug.menu.Right=Direita
+firebug.menu.tip.Right=Alinhar o Firebug para a parte direita de uma janela de agentes
+firebug.uiLocation=Localização de IU do Firebug
+firebug.menu.tip.UI_Location=Posição da interface de usuário do Firebug
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Opções do Firebug
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Mostrar todos os painéis
+console.option.Show_Command_Line=Mostrar Linha de Comando
+console.option.tip.Show_Command_Line=Manter foco na Linha de Comando / Mostrar Popup da Linha de Comando
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=Exibir Erros do JavaScript
+console.option.tip.Show_JavaScript_Errors=Gravar log de erros do JavaScript no Console
+ShowJavaScriptWarnings=Exibir Avisos do JavaScript
+console.option.tip.Show_JavaScript_Warnings=Gravar warnings de JavaScript no console
+ShowCSSErrors=Exibir Erros das CSS
+console.option.tip.Show_CSS_Errors=Gravar mensagens de erros CSS no console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Exibir Pilha Traçada Com Erros
+console.option.tip.Show_Stack_Trace=Mostrar informações da Pilha para mensagens de erro
+ShowXMLHttpRequests=Exibir XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Gravar XMLHttpRequests no console
+ShowChromeErrors=Exibir Erros do Chrome
+console.option.tip.Show_System_Errors=Gravar mensagens de erro do programa e add-ons no console
+ShowChromeMessages=Exibir Mensagens do Chrome
+console.option.tip.Show_System_Messages=Gravar mensagens internas do programa e add-ons no console
+ShowExternalErrors=Exibir Erros Externos
+console.option.tip.Show_External_Errors=Gravar mensagens de erro vindo de fontes externas para o console
+ShowNetworkErrors=Mostrar erros de Rede
+console.option.tip.Show_Network_Errors=Gravar mensagens de erro de rede no console
+JavascriptOptionsStrict=Avisos Severos (desvantagem no desempenho)
+console.option.tip.Show_Strict_Warnings=Gravar também warnings estritos no console
+Command_History=Histórico de Comandos
+console.option.Show_Command_Editor=Mastrar Editor de Comandos
+console.option.tip.Show_Command_Editor=Trocar para o Editor de Comando
+commandLineShowCompleterPopup=Mostrar Popup de lista de complementos
+console.option.tip.Show_Completion_List_Popup=Mostrar o popup de auto-completar para comandos
+Assertion=Falha na Confirmação
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (linha %S)
+LineAndCol=%S (linha %S, col %S)
+InstanceLine=%S #%S (linha %S)
+StackItem=%S (%S linha %S)
+SystemItem=<Sistema>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspecionar no Painel %S
+panel.tip.Inspect_In_Panel=Troque para o painel %S para examinar o objeto lá
+NoName=(sem nome)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Exibir Texto Completo
+html.option.tip.Show_Full_Text=Não cortar conteúdo dos elementos
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Exibir Espaço em Branco
+html.option.tip.Show_Whitespace=Mostar espaços em branco dentro dos nós
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Exibir Comentários
+html.option.tip.Show_Comments=Mostrar nós comentados
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Mostar Entidades como Símbolos
+html.option.tip.Show_Entities_As_Symbols=Mostrar todas as entidades XML usando sua representação simbólica
+html.option.Show_Entities_As_Names=Mostar Entidades como Nomes
+html.option.tip.Show_Entities_As_Names=Mostrar todas as entidades XML usando seus nomes
+html.option.Show_Entities_As_Unicode=Mostrar Entidades como Unicode
+html.option.tip.Show_Entities_As_Unicode=Mostrar todas as entidades XML em sua representação Unicode
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Destacar Mudanças
+html.option.tip.Highlight_Mutations=Destacar trocas dentro dos nós
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Expandir Mudanças
+html.option.tip.Expand_Mutations=Expandir a visao de árvore para mostrar os nós alterados
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Rolar Mudanças na Visualização
+html.option.tip.Scroll_To_Mutations=Navegue pela visão de árvore para trazer os nós alterados para a view
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Mostrar caixa rápida de informações
+inspect.option.tip.Show_Quick_Info_Box=Mostrar informação sobre o objeto inspecionado no momento dentro de um painel sobreposto na página
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Sombrear modelo de Caixa
+inspect.option.tip.Shade_Box_Model=Sombrear as partes diferentes no modelo de caixas
+ScrollIntoView=Rolar na Visualização
+html.tip.Scroll_Into_View=Role a pagina para tornar o elemento visível
+NewAttribute=Novo Atributo...
+html.tip.New_Attribute=Adicione um novo atributo para este elemento
+html.Edit_Node=Editar %S...
+html.Node=Nó
+html.tip.Edit_Node=Editar %S usando o editor de texto completo
+DeleteElement=Excluir Elemento
+html.Delete_Element=Deletar o elemento da árvore
+DeleteNode=Excluir Nó
+html.Delete_Node=Deletar o nó da árvore
+# Quick Info Box
+quickInfo=Informação Rápida
+computedStyle=Style executado
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Parar em uma alteração
+html.Disable_Break_On_Mutate=Desabilitar parada em uma alteração
+html.label.Break_On_Text_Change=Parar na troca de texto
+html.label.HTML_Breakpoints=Pontos de parada no HTML
+html.label.Break_On_Attribute_Change=Parar na troca de Atributos
+html.tip.Break_On_Attribute_Change=Para a execução do JavaScript quando um atributo desse elemento alterar
+html.label.Break_On_Child_Addition_or_Removal=Parar na inserção ou remoção de Filho
+html.tip.Break_On_Child_Addition_or_Removal=Para a execução do JavaScript quanto um nó filho for adicionado ou removido deste elemento
+html.label.Break_On_Element_Removal=Parar na remoção de elemento
+html.tip.Break_On_Element_Removal=Parar a execução do JavaScript quando o elemento for removido
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Expandir/Contrair Todos
+html.tip.Expand/Contract_All=Expandir/Esconder todos os filhos recursivamente
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Quebra na Altereção de Propriedade
+dom.tip.Break_On_Property_Change=Parar a execução do JavaScript quando esta propriedade alterar
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Desabilitar Quebra na Alteração de Propriedade
+dom.label.DOM_Breakpoints=Pontos de Parada DOM
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Editar Attributo \"%S\"...
+html.tip.Edit_Attribute=Editar o valor do atributo "%S" desse elemento
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Excluir Atributo \"%S\"
+html.tip.Delete_Attribute=Deletar o atributo "%S" desse elemento
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Herdado de
+SothinkWarning=A extensão Sothink SWF Catcher está impedindo o Firebug de funcionar adequadamente.<br><br>Por favor, leia <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">este item na FAQ do Firebug</a> para ajuda.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=Juiz faz com que whisky de malte baixe logo preço de venda. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=Não há regras. Você pode <a>criar uma regra</a>
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=Este elemento não tem regras de estilo. Você pode <a>criar uma regra</a> para isso.
+EditStyle=Editar Estilo do Elemento...
+style.tip.Edit_Style=Editar estilo \"inline\" do elemento
+AddRule=Adicionar Regra
+css.tip.AddRule=Adicionar uma regra geral para este elemento
+NewRule=Nova Regra...
+css.tip.New_Rule=Adicionar uma nova regra
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Deletar "%S"
+css.tip.Delete_Rule=Deletar a regra "%S" e todas as suas propriedades
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Nova Propriedade...
+css.tip.New_Prop=Adicionar uma nova propriedade à regra atual
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=Editar \"%S\"...
+css.tip.Edit_Prop=Editar o valor da propriedade "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=Desabilitar \"%S\"
+css.tip.Disable_Prop=Desabilitar a propriedade "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=Excluir \"%S\"
+css.tip.Delete_Prop=Deletar a propriedade "%S"
+# Console context menu labels.
+BreakOnThisError=Interromper Neste Erro
+console.menu.tip.Break_On_This_Error=Para a execução do JavaScript assim que este erro ocorrer
+BreakOnAllErrors=Interromper em Todos os Erros
+console.menu.tip.Break_On_All_Errors=Para a execução do JavaScript assim que um erro ocorrer
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Acompanhar Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Usar Última Linha do Fonte para nomes de eval()
+UseMD5ForEvalName=Usar MD5 para nomes de eval()
+# Breakpoints side panel
+Breakpoints=Pontos de Interrupção
+ErrorBreakpoints=Pontos de Interrupção de Erro
+LoggedFunctions=Funções Registradas
+EnableAllBreakpoints=Habilitar Todos os Pontos de Interrupção
+breakpoints.option.tip.Enable_All_Breakpoints=Habilitar todos os pontos de interrupção listados
+DisableAllBreakpoints=Desabilitar Todos os Pontos de Interrupção
+breakpoints.option.tip.Disable_All_Breakpoints=Desabilitar todos os pontos de interrupção listados
+ClearAllBreakpoints=Remover Todos os Pontos de Interrupção
+breakpoints.option.tip.Clear_All_Breakpoints=Remover todos os pontos de interrupção listados
+ConditionInput=Este ponto de interrupção vai parar apenas se esta expressão for verdadeira:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Remover Ponto de Interrupção
+breakpoints.tip.Remove_Breakpoint=Remover o ponto de interrupção
+breakpoints.Disable_Breakpoint=Desabilitar Ponto de Interrupção
+breakpoints.tip.Disable_Breakpoint=Desabilitar o ponto de interrupção
+breakpoints.Enable_Breakpoint=Habilitar Ponto de Interrupção
+breakpoints.tip.Enable_Breakpoint=Habilitar o ponto de interrupção
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Continuar
+script.balloon.Disable=Desabilitar
+ScriptsFilterStatic=Exibir Scripts Estáticos
+ScriptsFilterEval=Exibir Scripts Estáticos e de eval
+ScriptsFilterEvent=Exibir Scripts Estáticos e de eventos
+ScriptsFilterAll=Exibir Scripts Estáticos, de eval e eventos
+ScriptsFilterStaticShort=estático
+ScriptsFilterEvalShort=evals
+ScriptsFilterEventShort=eventos
+ScriptsFilterAllShort=tudo
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Expandir Todos
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Fechar Todos
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Exibir Propriedades Definidas pelo Usuário
+dom.option.tip.Show_User_Props=Exibir propriedades de objetos definidas pelo usuário
+ShowUserFuncs=Exibir Funções Definidas pelo Usuário
+dom.option.tip.Show_User_Funcs=Exibir métodos de objetos definidas pelo usuário
+ShowDOMProps=Exibir Propriedades do DOM
+dom.option.tip.Show_DOM_Props=Exibir propriedades especificadas dentro do DOM
+ShowDOMFuncs=Exibir Funções do DOM
+dom.option.tip.Show_DOM_Funcs=Exibir funções especificadas dentro do DOM
+ShowDOMConstants=Exibir Constantes do DOM
+dom.option.tip.Show_DOM_Constants=Exibir constantes especificadas dentro do DOM
+ShowInlineEventHandlers=Exibir Manipuladores de Eventos \"Inline\"
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=Não há propriedades a exibir para este objeto.
+NewWatch=Nova expressão observadora...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Adicionar Observador
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Copiar Código Fonte
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<numero> para ir para a linha
+CopyValue=Copiar Valor
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Copiar nome
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Copiar caminho
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Nova Propriedade...
+EditProperty=Editar Propriedade...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Editar Variável...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Editar Observador...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Excluir Propriedade
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Excluir Observador
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Definir Ponto de Interrupção
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Editar Condição do Ponto de Interrupção
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=Não há pontos de interrupção definidos nesta página.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Mostrar apenas estilos aplicados
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Mostrar User Agent CSS
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Mostrar estilos para a pseudoclasse :focus
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspecionar Declaração
+css.tip.Inspect_Declaration=Inspecionar a declaração desta fonte
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Mostar as Propriedades \"Shorthand\"
+css.option.tip.Expand_Shorthand_Properties=Expandir propriedades \"shorthand\" dentro de seus componentes
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Em ordem alfabética
+computed.option.tip.Sort_Alphabetically=Ordenar os estilos por nome/agrupar os estilos em categorias
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Mostrar os estilos específicos da Mozilla
+computed.option.tip.Show_Mozilla_Specific_Styles=Mostrar também estilos com prefixo -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=Este elemento não possui regras de estilo definidas pelo usuário
+script.Type_any_key_to_filter_list=Digitar qualquer tecla para filtrar na lista
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=enchimento
+LayoutBorder=borda
+LayoutMargin=margem
+LayoutPosition=posição
+LayoutAdjacent=adjacente
+position=posição
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Exibir Réguas e Linhas guia
+layout.option.tip.Show_Rulers=Exibir réguas e linhas guia ao passar o mouse sobre partes do layout
+# Net panel
+Loading=Carregando...
+Headers=Cabeçalhos
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Reiniciar cabeçalho
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=URL requisitada e usando método HTTP.
+net.header.Status=Status
+net.header.Status_Tooltip=Status do resultado recebido.
+net.header.Domain=Domínio
+net.header.Domain_Tooltip=Domínio da solicitação executada.
+net.header.Size=Tamanho
+net.header.Size_Tooltip=Tamanho da resposta recebida.
+net.header.Timeline=Linha de tempo
+net.header.Timeline_Tooltip=Informação detalhada de tempo sobre a resposta solicitada.
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=Pontos de parada de XHR
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Parar no XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=ver fonte
+net.headers.pretty_print=boa impressão
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Media
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Postar
+Put=Colocar
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Resposta
+URLParameters=Parâmetros
+Cache=Cache
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Ordenar por chave
+jsonviewer.do_not_sort=Não ordenar
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Cabeçalhos de Solicitação
+ResponseHeaders=Cabeçalhos de Resposta
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=O limite de registros do Firebug foi atingido. %1$S entrada não é mostrada.;O limite de registros do Firebug foi atingido. %1$S entradas não são mostradas.
+LimitPrefs=Preferências
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=A fim de alterar o limite modifique: %S
+Refresh=Atualizar
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Abrir em Nova Aba
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Abrir Resultado em uma Nova Aba
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Perfil
+ProfilerStarted=O perfilador está em execução. Clique em \'Perfil\' novamente para ver seu relatório.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S chamada);(%1$Sms, %2$S chamadas)
+NothingToProfile=Sem atividade ao perfil.
+PercentTooltip=Percentual de tempo gasto nesta função.
+CallsHeaderTooltip=Número de vezes em que a função foi chamada.
+OwnTimeHeaderTooltip=Tempo gasto na função, excluindo chamadas aninhadas.
+TimeHeaderTooltip=Tempo gasto na função, incluindo chamadas aninhadas.
+AvgHeaderTooltip=Média de tempo, incluindo chamadas a funções.
+MinHeaderTooltip=Tempo mínimo, incluindo chamadas a funções.
+MaxHeaderTooltip=Tempo máximo, incluindo chamadas a funções.
+ProfileButton.Enabled.Tooltip=Perfil do tempo de execução do JavaScript.
+ProfileButton.Disabled.Tooltip=Perfil do tempo de execução do JavaScript (O painel Script precisa estar habilitado).
+Function=Função
+Percent=Por cento
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Chamadas
+OwnTime=Tempo Próprio
+Time=Tempo
+Avg=Méd
+Min=Min
+Max=Máx
+File=Arquivo
+# Support for standard actions.
+Copy=Copiar
+Cut=Recortar
+Remove=Remover
+Delete=Delete
+Paste=Colar
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Copiar innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Copiar XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Copiar o caminho do CSS
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Copiar Localização
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Copiar Localização com Parâmetros
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Copiar Cabeçalhos de Solicitação
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Copiar Cabeçalhos de Resposta
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Copiar Corpo de Resposta
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Copiar Erro
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Copiar Função
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Registrar Chamadas a \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Registrar Eventos
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Habilitado
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=O console do Firebug não suporta \'%S\'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=A linha de comando do Firefox não suporta \'%S\'
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Desabilitar paradas em todos os erros
+console.Break_On_All_Errors=Parar em todos os erros
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Parar neste erro
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=Javascript está desabilitado nas suas preferências do Firefox. Se você deseja utilizar essa janela de console, então por favor habilite essa opção através de \'Ferramentas\'->\'Opções\'->\'Conteúdo\'->\'Habilitar Javascript\'
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=A linha de comandos para páginas XML do Firebug esta desabilitada. Você pode <a>mudar para HTML</a> e habilitar-lo.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Corpo de resposta
+net.sizeinfo.Post_Body=Corpo de envio
+net.sizeinfo.Total_Sent=Total Enviado
+net.sizeinfo.Total_Received=Total Recebido
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Painel de Rede ativado. Qualquer requisição efetuada enquanto o Painel de Rede estiver ativo não será mostrada.
+net.responseSizeLimitMessage=O limite de tamanho de resposta do Firebug foi atingido. Clique <a>aqui</a> para abrir o resultado em uma nova aba do Firefox.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=limite de tamanho máximo do Firebug foi atingido pelo Firebug.
+net.Break_On_XHR=Parar no XHR
+net.label.Parameters=Parâmetros
+net.label.Parts=Partes
+net.label.Source=Fonte
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Desabilitar Cache do Browser
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Mostrar eventos de pintura
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Parar na Próxima
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Exibir Cabeçalhos HTTP
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S requisição;%1$S requisições
+FromCache=do cache
+StopLoading=Parar Carregamento
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Dado Muito Grande)
+ShowComputedStyle=Exibir Estilo Computado
+StyleGroup-text=Texto
+StyleGroup-background=Fundo
+StyleGroup-box=Modelo de Caixa
+StyleGroup-layout=Exibição
+StyleGroup-other=Outro
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Copiar Cor
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Copiar Localização da Imagem
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Abrir Imagem em Nova Aba
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Omitir Barra de Ferramentas Pilha
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copiar declaração de regra
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Copiar declaração de estilo
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Erro;%1$S Erros
+moduleManager.title=O painel %S está desabilitado
+moduleManager.desc3=Use o menu do ícone do Firebug na Barra de Status para habilitar ou desabilitar todos os painéis. Use as abas do menu menor para controle individual do painel.
+moduleManager.Enable=Ativar
+Suspend_Firebug=Suspender o Firebug
+Resume_Firebug=Resultado do Firebug.
+Reset_Panels_To_Disabled=Reinicie os painéis para desabilitar.
+Open_Console=Abrir Console
+Open_Console_Tooltip=Abrir terminal de rastreio para Firebug.
+Scope_Chain=Sequencia de Escopo
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=Com
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Chamada
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Janela
+Logs=Logs
+Options=Opções
+Copy_Stack=Copiar Pilha
+Copy Exception=Copiar Exceção
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Bloquear
+requestinfo.Resolving=Procura do DNS
+requestinfo.Connecting=Conectando
+requestinfo.Sending=Enviando
+requestinfo.Waiting=Aguardando
+requestinfo.Receiving=Recebendo
+requestinfo.ContentLoad=\'Conteúdo DOM Carregado\' (evento)
+requestinfo.WindowLoad=\'carregar\' (evento)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Pesquisa do Firebug
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Próximo
+search.tip.Next=Search for the next match
+search.Previous=Anterior
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Forçar diferencial entre Maiúsculas e Minúsculas
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Multiplos Arquivos
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Usar Expressões Regulares
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=Seletor CSS
+search.net.Headers=Cabeçalhos
+search.net.Parameters=Parâmetros
+search.net.Response_Bodies=Corpo de Respostas
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persistente
+firebug.console.Do_Not_Clear_On_Reload2=Não limpar o painel no recarregamento da página
+firebug.console.Show_All_Log_Entries=Mostrar todas as entradas do Log
+firebug.console.Errors=Erros
+firebug.console.Filter_by_Errors=Filtrar por Erros
+firebug.console.Warnings=Avisos
+firebug.console.Filter_by_Warnings=Filtrar por Avisos
+firebug.console.Info=Informações
+firebug.console.Filter_by_Info=Filtrar por Informações
+firebug.console.Debug_Info=Informação de Depuração
+firebug.console.Filter_by_Debug_Info=Filtrar por Informações de Depuração
+firebug.Deactivate_Firebug=Desativar o Firebug
+firebug.tip.Deactivate_Firebug=Desativar o Firebug para o site atual
+firebug.ShowFirebug=Abrir Firebug
+firebug.menu.tip.Open_Firebug=Mostrar a Interface de Usuário do Firebug
+firebug.HideFirebug=Ocultar Firebug
+firebug.menu.tip.Minimize_Firebug=Minimizar o Firebug, mas mantê-lo ativo
+firebug.FocusFirebug=Focus na Janela do Firebug
+firebug.menu.tip.Focus_Firebug=Focus na Janela do Firebug
+firebug.menu.Enable_All_Panels=Ativar todos painéis
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Desativar todos painéis
+firebug.menu.tip.Disable_All_Panels=Desativar todos os painéis ativáveis
+firebug.menu.Customize_shortcuts=Customizar Atalhos
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Opções
+firebug.menu.tip.Options=Preferências Globais do Firebug
+firebug.menu.Enable_Accessibility_Enhancements=Habilitar Acessórios de Acessibilidade
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Reiniciar todas as opções do Firebug
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug Online
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Mostrar contador de erros
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Tamanho do Texto
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Aumentar o Tamanho do Texto
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Diminuir o Tamanho do Texto
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Tamanho do Texto Normal
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Website do Firebug...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Documentação...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Atalhos de Teclado...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Grupo de Discussão...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Acompanhador de Questões...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Contribuir...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Sobre...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Busca
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Repetir Comando
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Alternar para Inspeção
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Alternar para Caixa de Informação Rápida
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Alternar para Desempenho
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Selecionar Linha de Comando
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Selecionar Busca do Firebug
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Selecionar Editor de Vista
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Selecionar Localização
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Próximo Objeto
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Objeto Anterior
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Customizar Teclas do Firebug
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Abrir Firebug em uma Nova Janela
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Trocar para painel do firebug à esquerda
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Alterar para Painel do Firebug à Direita
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Abrir Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Aba anterior do Firebug
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Limpar Console
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Abrir terminal de rastreamento
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Voltar
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Avançar
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Aumentar tamanho do texto
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Diminuir o tamanho do texto
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Tamanho de Texto Normal
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Seletor de painéis
+customizeShortcuts=Atribuição de teclas de atalho para o Firebug
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=painel de ferramentas
+a11y.labels.firebug_panels=painéis do Firebug
+a11y.labels.firebug_side_panels=painéis laterais do Firebug
+a11y.labels.firebug_window=janela do Firebug
+a11y.labels.firebug_status=status do Firebug
+a11y.labels.reset=reiniciar
+a11y.labels.reset_shortcut=reiniciar o atalho %S
+aria.labels.inactive_panel=painel inativo
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=monitorar linhas
+a11y.labels.call_stack=chamar pilha
+a11y.labels.document_structure=Estrutura do documento
+a11y.labels.title_panel=painel %S
+a11y.labels.title_side_panel=painel lateral %S
+a11y.labels.cached=cacheado
+aria.labels.stack_trace=percurso da pilha
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=borda
+a11y.layout.margin=margem
+a11y.layout.position=posição
+a11y.layout.position_top=posicionamento acima
+a11y.layout.position_right=posicionamento a direita
+a11y.layout.position_bottom=posicionamento a baixo
+a11y.layout.position_left=posicionamento a esquerda
+a11y.layout.margin_top=topo da margem
+a11y.layout.margin_right=margem direita
+a11y.layout.margin_bottom=margem da base
+a11y.layout.margin_left=margem esquerda
+a11y.layout.border_top=topo da borda
+a11y.layout.border_right=borda direita
+a11y.layout.border_bottom=borda de base
+a11y.layout.border_left=borda esquerda
+a11y.layout.padding_top=espaçamento superior
+a11y.layout.padding_right=espaçamento direito
+a11y.layout.padding_bottom=espaçamento base
+a11y.layout.padding_left=espaçamento esquerdo
+a11y.layout.top=topo
+a11y.layout.right=direita
+a11y.layout.bottom=base
+a11y.layout.left=esquerda
+a11y.layout.width=largura
+a11y.layout.height=altura
+a11y.layout.size=tamanho
+a11y.layout.z-index=index-z
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=extensão do quadrado cliente
+a11y.descriptions.press_enter_to_edit_values=pressione Enter seguifo de TAB para editar valores individuais
+a11y.labels.style_rules=regras de estilo
+aria.labels.inherited_style_rules=regras de estilo herdadas
+a11y.labels.computed_styles=estilos processados
+a11y.labels.dom_properties=propriedades DOM
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=editor inine
+a11y.labels.value_for_attribute_in_element=valor para o atributo %S no elemento %S
+a11y.labels.attribute_for_element=atributo para elemento %S
+a11y.labels.text_contents_for_element=conteudo de texto para o elemento %S
+a11y.labels.defined_in_file=definido em %S
+a11y.labels.declarations_for_selector=declarações de estilo para o seletor \"%S\"
+a11y.labels.property_for_selector=propriedade CSS para o seletor: %S
+a11y.labels.value_property_in_selector=valor da propriendade %S para o seletor %S
+a11y.labels.css_selector=seletor CSS
+a11y.labels.source_code_for_file=código fonte para o arquivo %S
+a11y.labels.press_enter_to_add_new_watch_expression=pressione enter para adicionar uma nova expressão de vistoria
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=sobrescrito
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=tem ponto de parada condicional
+a11y.updates.has_disabled_break_point=tem ponto de parada desabilitado
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script suspendido na linha %S em %S, arquivo %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=resultado encontrado para \"%S\" na linha %S de log
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=resultado encontrado para \"%S\" na linha %S em %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=resultado encontrado para \"%S\" no elemento %S no caminho %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=resultado encontrado para \"%S\" no atributo %S=%S para o elemento %S no caminho %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=resultado encontrado para \"%S\" no texto contendo: %S no elemento %S no caminho %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=encontrada busca por \"%S\" no seletor %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=encontrada busca por \"%S\" na declaração de estilo %S no seletor %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=encontrada busca por \"%S\" na propriedade DOM %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=encontrada busca por \"%S\" em %S, %s:%S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=encontrada busca por \"%S\" no sumario de rede na linha: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=sem busca por \"%S\" no seletor %S
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Você tem certeza que deseja voltar todas as opções do Firebug para o estado inicial?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=O Terminal deve estar habilitado
+warning.Command_line_blocked?=Linha de comando bloqueada?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Reinicie para ativar a janela do terminal
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=A base para essa URL não está no texto
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=voltar para este painel
+firebug.history.Stay_on_this_panel=Ficar neste painel
+firebug.history.Go_forward_to_this_panel=Voltar para este painel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Voltar
+firebug.history.Go_forward=Avançar
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Painel de Script ficou inativo durante o carregamento da página
+script.suggestion.inactive_during_page_load2=<a>Recarregue</a> para ver todas as fontes
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=O Javascript está desabilitado
+script.suggestion.javascript_not_enabled=Veja Firefox > Ferramentas > Opções > Conteúdo > Habilitar Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Habilite o Javascript e recarregue
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Todos os scripts foram filtrados
+script.suggestion.all_scripts_filtered=Veja a filtragem de Script na barra de tarefas \"Mostrar Opções de Código Chrome\"
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=Sem Javascript nesta página
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=O depurador já está ativo
+script.suggestion.debugger_active=O depurador está parado em um ponto de parada em outra página
+script.button.Go_to_that_page=Ir para a página
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Fechar
+firebug.View=Visualizar
+firebug.Help=Ajuda
+firebug.Run=Executar
+firebug.Copy=Copiar
+firebug.History=Histórico
+firebug.Run_the_entered_command=Execute o comando digitado
+firebug.Clear_the_Command_Editor=Limpar Editor do Comando
+firebug.Copy_the_script_as_a_bookmarklet=Copia o Script como um marcador
+firebug.Insert_a_previously_entered_command=Insere um comando previamente inscrito
+firebug.AlwaysOpenInWindow=Sempre Abrir em Nova Janela
+firebug.OpenWith=Abrir Com Editor
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Sites...
+firebug.Configure_Editors=Configurar Editores
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Inspecionar
+firebug.InspectElement=Inspecionar Elemento
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Interromper em Erros
+firebug.InspectTooltip=Clique em um elemento na página para inspecionar
+firebug.EditHTMLTooltip=Editar este HTML
+firebug.Profile=Perfil
+firebug.Clear=Limpar
+firebug.ClearConsole=Limpar Console
+firebug.ClearTooltip=Limpar o Console
+firebug.All=Tudo
+firebug.Images=Imagens
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Editores do Firebug Configurados
+editors.Editor=Editor
+editors.Executable=Executável
+editors.Launch_Arguments=Argumentos de Lançamento
+editors.Add=Adicionar
+editors.Remove=Remover
+editors.Change=Alterar
+editors.Move_Up=Mover para cima
+editors.Close=Fechar
+editors.Browse=Navegar ...
+changeEditor.Editor_Configuration=Editor de Configuração
+changeEditor.Name=Nome:
+changeEditor.Executable=Executável:
+changeEditor.CmdLine=Argumentos:
+changeEditor.Supplied_arguments=Argumentos fornecidos pelo Firebug:
+changeEditor.URL_of_file=URL do arquivo (se %url não esta presente, %file será adicionado como padrão)
+changeEditor.Path_to_local_file=Caminho para o local do arquivo (ou para a copia temporária)
+changeEditor.Line_number=Número da linha (se disponível)
+changeEditor.Invalid_Application_Path=Caminho inválido de aplicação
+changeEditor.Application_does_not_exist=A aplicação especificada não existe!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Editar
+firebug.css.sourceEdit=Editar código fonte
+firebug.css.sourceEdit.tooltip=Área de edição de texto como fonte de estilo carregado pelo navegador
+firebug.css.liveEdit=Edição em Movimento
+firebug.css.liveEdit.tooltip=Área de edição de texto CSS extraído a partir do browser
+firebug.EditCSSTooltip=Editar esta folha de estilo
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Os sites não são lembrados no modo de navegação privativa
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Mostrar notificações de parada
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=Você pode desabilitar/habilitar notificações de parada no <a>menu de aba do painel</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicar no botão \'Desabilitar\' substitui \'depurador\' com um ponto de interrupção desabilitado.
+firebug.bon.tooltip.disableDebuggerKeyword2=Cria um ponto de interrupção desabilitado
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=Não há objetos filhos
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=mais
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item Armazenado;%1$S itens Armazenados
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Propriedades do Objeto
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(Sem acabamentos)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=O objeto URL foi provavelmente revogada pelo método revokeObjectURL.
+firebug.failedToPreviewImageURL=Falha ao carregar a URL dada.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/pt-PT/cookies.properties b/locale/pt-PT/cookies.properties
index a77f6a9..8758902 100644
--- a/locale/pt-PT/cookies.properties
+++ b/locale/pt-PT/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Permite inspecionar e manipular as cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Sessão
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Aceitar cookies dos sítios Web
-cookies.tip.AllowGlobally=Aceitar ou bloquear todas as cookies por omissão
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Mostrar Eventos de Cookie
-cookies.tip.showCookieEvents=Registar eventos de cookie (alteração, eliminação) na consola
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Limpar cookies quando negadas
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cortar
-cookies.Copy=Copiar
-cookies.CopyAll=Copiar Todas
-cookies.Paste=Colar
-cookies.Delete=Eliminar
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Limpar Valor
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Editar
-cookies.Accept=Aceitar
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reiniciar Cabeçalho
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=É possível especificar que sítios Web permitem sempre ou nunca usar cookies.\nInsira o endereço exacto do sítio Web que pretende gerir e depois clique em\nBloquear, Permitir para a Sessão ou Permitir.
-cookies.ExceptionsTitle=Excepções - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Suporte para Monitorização de Cookies
-cookies.HostEnable=Activar o Painel de cookies para %S
-cookies.HostDisable=Desactivar Painel de Cookies para %S
-cookies.Permissions=Activar ou Desactivar Painel de cookies
-cookies.PermissionsIntro=Seleccionar sítios Web onde o painel de cookies estará activo ou inactivo.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=Páginas de Sistema
-cookies.LocalFiles=Ficheiros Locais
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Pretende remover todas as cookies na lista?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Pretende remover todas as cookies de sessão na lista?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Não voltar a mostrar esta mensagem novamente
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirmar Remoção de Cookie
-cookies.tip.Confirm_cookie_removal=Se marcado, é exibido um diálogo de confirmação antes de serem removidas todas as cookies na lista.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remover todas as cookies na lista.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remover Cookies de Sessão
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remover todas as cookies na lista.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Criar uma nova cookie para %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Valor
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Gerir permissões da cookie para %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=Todas as cookies foram removidas.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=Todas as cookies de sessão foram removidas.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejeitadas:
-cookies.console.nocookiesreceived=Nenhuma cookie recebida
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=eliminada
-cookies.console.added=adicionada
-cookies.console.changed=alterada
-cookies.console.cleared=limpa
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domínio
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Segura
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Aceite
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Marcada
-cookies.status.rejected=Rejeitada
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Valor
-cookies.info.rawdatatab.Raw_Data=Dados Raw
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Por defeito (Aceitar cookies de sessão)
-cookies.default.thirdPartySession=Por defeito (Aceitar cookies de sessão)
-cookies.default.thirdParty=Por defeito (Aceitar cookies)
-cookies.default.allow=Por defeito (Aceitar cookies)
-cookies.default.deny=Por defeito (Negar cookies)
-cookies.default.warn=Por defeito (Avisar antes de aceitar uma cookie)
-cookies.host.session=Aceitar cookies de sessão de %S
-cookies.host.accept=Aceitar cookies de %S
-cookies.host.reject=Negar cookies de %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=O nome da cookie não é válido.
-cookies.edit.invalidhost=O servidor da cookie não é válido.
-cookies.edit.invalidpath=O caminho da cookie não é válido.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Nome
-cookies.header.value=Valor
-cookies.header.rawValue=Valor Raw
-cookies.header.domain=Domínio
-cookies.header.size=Tamanho
-cookies.header.path=Caminho
-cookies.header.expires=Expira
-cookies.header.security=Segurança
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Nome da cookie
-cookies.header.value.tooltip=Valor armazenado para a cookie
-cookies.header.rawValue.tooltip=Valor Raw armazenado para o cookie
-cookies.header.domain.tooltip=Domínio que armazenou a cookie
-cookies.header.size.tooltip=Tamanho da cookie armazenada
-cookies.header.path.tooltip=Directório onde a cookie está activa
-cookies.header.expires.tooltip=Data de expiração da cookie
-cookies.header.security.tooltip=Mostra se a cookie é segura ou não
-cookies.header.httponly.tooltip=Mostra se a cookie é apenas HTTP
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Cookies Recebidas
-cookies.netinfo.Sent_Cookies=Cookies Enviadas
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Filtro de Caminhos
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Exportar Todas as Cookies...
-cookies.export.Export_All_Cookies_Tooltip=Exportar todas as cookies do navegador para um ficheiro cookies.txt
-cookies.export.Export_For_Site=Exportar Cookies deste Sítio Web...
-cookies.export.Export_For_Site_Tooltip=Exportar cookies de %S para um ficheiro cookies.txt
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=Não existe qualquer página activa.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Parar na Alteração de Cookies
-cookies.Disable_Break_On_Cookie=Desativar Parar na Alteração de Cookies
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Pontos de Paragem de Cookies
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Parar na cookie '%S'
-cookies.menu.tooltip.Break_On_Cookie=Parar na '%S' quando removida ou alterada.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Editar Condições de Ponto de Paragem
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Avaliação da condição do ponto de paragem falhou
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Remover Cookies
-cookies.Create=Criar Cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Ferramentas
-cookies.ToolsTooltip=Ferramentas
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Exibir Todas as Cookies...
-cookies.ViewAllTooltip=Abrir o Gestor de Cookies
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Permissões dos Sítios Web...
-cookies.ViewExceptionsTooltip=Ver lista de sítios Web permitidos ou proibidos
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filtro
-cookies.FilterTooltip=Usar opções fornecidas para filtrar a lista de cookies.
-cookies.filter.byPath=Filtrar Cookies Pelo Caminho Corrente
-cookies.filter.byPathTooltip=Exibir apenas cookies que correspondam ao caminho corrente.
-cookies.filter.showRejectedCookies=Exibir Cookies Rejeitadas
-cookies.filter.showRejectedCookiesTooltip=Exibir na lista até as cookies rejeitadas
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Editar Cookie
-cookies.edit.name.label=Nome:
-cookies.edit.domain.label=Servidor:
-cookies.edit.path.label=Caminho:
-cookies.edit.expire.label=Expira:
-cookies.edit.value.label=Valor:
-cookies.edit.secure.label=Cookie Segura
-cookies.edit.httponly.label=Apenas HTTP
-cookies.edit.session.label=Sessão
-cookies.edit.urlEncode.label=Valor codificado em URL
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookie
-cookies.console.Filter_By_Cookies=Filtrar por Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remover Todas as Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Permite inspecionar e manipular as cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Sessão
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Aceitar cookies dos sítios Web
+cookies.tip.AllowGlobally=Aceitar ou bloquear todas as cookies por omissão
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Mostrar Eventos de Cookie
+cookies.tip.showCookieEvents=Registar eventos de cookie (alteração, eliminação) na consola
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Limpar cookies quando negadas
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cortar
+cookies.Copy=Copiar
+cookies.CopyAll=Copiar Todas
+cookies.Paste=Colar
+cookies.Delete=Eliminar
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Limpar Valor
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Editar
+cookies.Accept=Aceitar
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reiniciar Cabeçalho
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=É possível especificar que sítios Web permitem sempre ou nunca usar cookies.\nInsira o endereço exacto do sítio Web que pretende gerir e depois clique em\nBloquear, Permitir para a Sessão ou Permitir.
+cookies.ExceptionsTitle=Excepções - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Suporte para Monitorização de Cookies
+cookies.HostEnable=Activar o Painel de cookies para %S
+cookies.HostDisable=Desactivar Painel de Cookies para %S
+cookies.Permissions=Activar ou Desactivar Painel de cookies
+cookies.PermissionsIntro=Seleccionar sítios Web onde o painel de cookies estará activo ou inactivo.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=Páginas de Sistema
+cookies.LocalFiles=Ficheiros Locais
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Pretende remover todas as cookies na lista?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Pretende remover todas as cookies de sessão na lista?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Não voltar a mostrar esta mensagem novamente
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirmar Remoção de Cookie
+cookies.tip.Confirm_cookie_removal=Se marcado, é exibido um diálogo de confirmação antes de serem removidas todas as cookies na lista.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remover todas as cookies na lista.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remover Cookies de Sessão
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remover todas as cookies na lista.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Criar uma nova cookie para %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Valor
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Gerir permissões da cookie para %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=Todas as cookies foram removidas.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=Todas as cookies de sessão foram removidas.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejeitadas:
+cookies.console.nocookiesreceived=Nenhuma cookie recebida
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=eliminada
+cookies.console.added=adicionada
+cookies.console.changed=alterada
+cookies.console.cleared=limpa
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domínio
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Segura
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Aceite
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Marcada
+cookies.status.rejected=Rejeitada
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Valor
+cookies.info.rawdatatab.Raw_Data=Dados Raw
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Por defeito (Aceitar cookies de sessão)
+cookies.default.thirdPartySession=Por defeito (Aceitar cookies de sessão)
+cookies.default.thirdParty=Por defeito (Aceitar cookies)
+cookies.default.allow=Por defeito (Aceitar cookies)
+cookies.default.deny=Por defeito (Negar cookies)
+cookies.default.warn=Por defeito (Avisar antes de aceitar uma cookie)
+cookies.host.session=Aceitar cookies de sessão de %S
+cookies.host.accept=Aceitar cookies de %S
+cookies.host.reject=Negar cookies de %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=O nome da cookie não é válido.
+cookies.edit.invalidhost=O servidor da cookie não é válido.
+cookies.edit.invalidpath=O caminho da cookie não é válido.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Nome
+cookies.header.value=Valor
+cookies.header.rawValue=Valor Raw
+cookies.header.domain=Domínio
+cookies.header.size=Tamanho
+cookies.header.path=Caminho
+cookies.header.expires=Expira
+cookies.header.security=Segurança
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Nome da cookie
+cookies.header.value.tooltip=Valor armazenado para a cookie
+cookies.header.rawValue.tooltip=Valor Raw armazenado para o cookie
+cookies.header.domain.tooltip=Domínio que armazenou a cookie
+cookies.header.size.tooltip=Tamanho da cookie armazenada
+cookies.header.path.tooltip=Directório onde a cookie está activa
+cookies.header.expires.tooltip=Data de expiração da cookie
+cookies.header.security.tooltip=Mostra se a cookie é segura ou não
+cookies.header.httponly.tooltip=Mostra se a cookie é apenas HTTP
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Cookies Recebidas
+cookies.netinfo.Sent_Cookies=Cookies Enviadas
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Filtro de Caminhos
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Exportar Todas as Cookies...
+cookies.export.Export_All_Cookies_Tooltip=Exportar todas as cookies do navegador para um ficheiro cookies.txt
+cookies.export.Export_For_Site=Exportar Cookies deste Sítio Web...
+cookies.export.Export_For_Site_Tooltip=Exportar cookies de %S para um ficheiro cookies.txt
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=Não existe qualquer página activa.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Parar na Alteração de Cookies
+cookies.Disable_Break_On_Cookie=Desativar Parar na Alteração de Cookies
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Pontos de Paragem de Cookies
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Parar na cookie '%S'
+cookies.menu.tooltip.Break_On_Cookie=Parar na '%S' quando removida ou alterada.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Editar Condições de Ponto de Paragem
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Avaliação da condição do ponto de paragem falhou
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Remover Cookies
+cookies.Create=Criar Cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Ferramentas
+cookies.ToolsTooltip=Ferramentas
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Exibir Todas as Cookies...
+cookies.ViewAllTooltip=Abrir o Gestor de Cookies
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Permissões dos Sítios Web...
+cookies.ViewExceptionsTooltip=Ver lista de sítios Web permitidos ou proibidos
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filtro
+cookies.FilterTooltip=Usar opções fornecidas para filtrar a lista de cookies.
+cookies.filter.byPath=Filtrar Cookies Pelo Caminho Corrente
+cookies.filter.byPathTooltip=Exibir apenas cookies que correspondam ao caminho corrente.
+cookies.filter.showRejectedCookies=Exibir Cookies Rejeitadas
+cookies.filter.showRejectedCookiesTooltip=Exibir na lista até as cookies rejeitadas
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Editar Cookie
+cookies.edit.name.label=Nome:
+cookies.edit.domain.label=Servidor:
+cookies.edit.path.label=Caminho:
+cookies.edit.expire.label=Expira:
+cookies.edit.value.label=Valor:
+cookies.edit.secure.label=Cookie Segura
+cookies.edit.httponly.label=Apenas HTTP
+cookies.edit.session.label=Sessão
+cookies.edit.urlEncode.label=Valor codificado em URL
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookie
+cookies.console.Filter_By_Cookies=Filtrar por Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remover Todas as Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/pt-PT/firebug-amo.properties b/locale/pt-PT/firebug-amo.properties
index 61eb043..3ef68d9 100644
--- a/locale/pt-PT/firebug-amo.properties
+++ b/locale/pt-PT/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=O Firebug integra-se com o Firefox para colocar um conjunto de ferramentas nas suas mãos enquanto navega. Pode editar, depurar e monitorizar CSS, HTML e JavaScript ao vivo em qualquer página Web...\\n\\nO Firebug 1.6 requer a versão 3.6 ou superior do Firefox.
-firebug.amo.description=O Firebug integra-se com o Firefox para colocar um conjunto de ferramentas nas suas mãos enquanto navega. Pode editar, depurar e monitorizar CSS, HTML e JavaScript ao vivo em qualquer página Web...\\n\\nVisite o sítio do Firebug para obter documentação, screen shots, e fóruns de discussão: http://getfirebug.com
-firebug.amo.developer.comments=Se encontrar quaisquer problemas, por favor leia as perguntas frequentes (FAQ) do Firebug.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=O Firebug integra-se com o Firefox para colocar um conjunto de ferramentas nas suas mãos enquanto navega. Pode editar, depurar e monitorizar CSS, HTML e JavaScript ao vivo em qualquer página Web...\\n\\nO Firebug 1.6 requer a versão 3.6 ou superior do Firefox.
+firebug.amo.description=O Firebug integra-se com o Firefox para colocar um conjunto de ferramentas nas suas mãos enquanto navega. Pode editar, depurar e monitorizar CSS, HTML e JavaScript ao vivo em qualquer página Web...\\n\\nVisite o sítio do Firebug para obter documentação, screen shots, e fóruns de discussão: http://getfirebug.com
+firebug.amo.developer.comments=Se encontrar quaisquer problemas, por favor leia as perguntas frequentes (FAQ) do Firebug.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/pt-PT/firebug-tracing.properties b/locale/pt-PT/firebug-tracing.properties
index adb4310..3874aaf 100644
--- a/locale/pt-PT/firebug-tracing.properties
+++ b/locale/pt-PT/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=DOM
-Always_Open_Firebug_Tracing=Criação da Domplate
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Tracing
-tracing.Show_Scope_Variables=Mostrar Variáveis de Âmbito
-tracing.Show_Time=Mostrar Tempo
-tracing.tab.Stack=Pilha
-tracing.tab.Exception=Exceção
-tracing.tab.Properties=Propriedades
-tracing.tab.Scope=Âmbito
-tracing.tab.Response=Resposta
-tracing.tab.Source=Fonte
-tracing.tab.Interfaces=Interfaces
-tracing.tab.Object=Objeto
-tracing.tab.Event=Evento
-tracing.cmd.Clear=Limpar
-tracing.cmd.tip.Clear=Remover Todas as Mensagens
-tracing.cmd.Find=Procurar
-tracing.cmd.tip.Find=Procurar Texto
-tracing.cmd.Bookmark=Marcador
-tracing.cmd.tip.Bookmark=Inserir Marcador
-tracing.cmd.Restart=Reiniciar o Firefox
-tracing.cmd.tip.Restart=Reiniciar o Firefox
-tracing.cmd.Exit=Sair do Firefox
-tracing.cmd.tip.Exit=Sair do Firefox
-tracing.cmd.Save=Guardar em Ficheiro
-tracing.cmd.tip.Save=Guardar registos num ficheiro
-tracing.cmd.Load=Carregar do Ficheiro
-tracing.cmd.tip.Load=Carregar registos dum ficheiro
-tracing.cmd.Expand_All=Expandir Todos
-tracing.cmd.Collapse_All=Colapsar Todos
-tracing.cmd.Tools=Ferramentas
-tracing.cmd.tip.Tools=Ferramentas
-tracing.cmd.Clear_Browser_Cache=Limpar a Cache do Navegador
-tracing.cmd.tip.Clear_Browser_Cache=Limpar a Cache do Navegador
-tracing.cmd.Force_Garbage_Collector=Forçar Coleção de \"Lixo\"
-tracing.cmd.tip.Force_Garbage_Collector=Forçar Coleção de \"Lixo\"
-tracing.cmd.Open_Profile_Directory=Abrir Diretório do Perfil
-tracing.cmd.tip.Open_Profile_Directory=Abrir Diretório do Perfil
-tracing.option.A11Y_Description=Questões de acessibilidade
-tracing.option.ACTIVATION_Description=Ativação do Firebug
-tracing.option.ACTIVITYOBSERVER_Description=Observador de atividade do Firebug
-tracing.option.ANNOTATIONS_Description=Anotação de sítio do Firebug
-tracing.option.BP_Description=Pontos de paragem
-tracing.option.CACHE_Description=Cache do código-fonte
-tracing.option.COMMANDLINE_Description=Linha de comandos e Popup da Linha de Comandos
-tracing.option.COMPILATION_UNITS_Description=Unidades de compilação de script
-tracing.option.CONSOLE_Description=Painel Consola
-tracing.option.CSS_Description=Interpretação do CSS
-tracing.option.DISPATCH_Description=Despacho de Eventos
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Criação Domplate
-tracing.option.EDITOR_Description=Editor em Linha & Preenchimento Automático
-tracing.option.ERRORLOG_Description=Registo de erros de JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Erros internos do Firebug
-tracing.option.EVAL_Description=Avaliação de script
-tracing.option.FBS_BP_Description=Pontos de paragem do serviço do Firebug
-tracing.option.FBS_CREATION_Description=Criação do script do serviço do Firebug
-tracing.option.FBS_ERRORS_Description=Erros do serviço do Firebug
-tracing.option.FBS_FINDDEBUGGER_Description=Procurar depurador do serviço do Firebug
-tracing.option.FBS_FUNCTION_Description=Função serviço do Firebug
-tracing.option.FBS_JSDCONTEXT_Description=Contexto do Depurador JavaScript do serviço do Firebug
-tracing.option.FBS_SRCUNITS_Description=Unidades-fonte do serviço do Firebug
-tracing.option.FBS_STEP_Description=Passo do Depurador JavaScript do serviço do Firebug
-tracing.option.FBS_TRACKFILES_Description=Ficheiros monitorizados pelo serviço do Firebug
-tracing.option.FUNCTION_NAMES_Description=Nomes de funções JavaScript
-tracing.option.HISTORY_Description=Histórico de Navegação do Firebug
-tracing.option.HTML_Description=HMTL
-tracing.option.HTTPOBSERVER_Description=Observador de pedidos HTTP
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Inicialização do Firebug
-tracing.option.INSPECT_Description=Inspetor
-tracing.option.JSONVIEWER_Description=Visualizador JSON
-tracing.option.LINETABLE_Description=Tabela de linhas de script
-tracing.option.LOCALE_Description=Localização
-tracing.option.LOCATIONS_Description=Localizações de código-fonte
-tracing.option.NET_Description=Painel Net
-tracing.option.NET_EVENTS_Description=Eventos de rede
-tracing.option.OPTIONS_Description=Preferências do Firebug
-tracing.option.PANELS_Description=Painéis
-tracing.option.SHORTCUTS_Description=Atalhos de teclado
-tracing.option.SOURCEFILES_Description=Ficheiros-fonte de JavaScript
-tracing.option.SPY_Description=Observador de pedidos XMLHttpRequest
-tracing.option.STACK_Description=Pilha de chamadas JavaScript
-tracing.option.STORAGE_Description=Definições de armazenamento
-tracing.option.SVGVIEWER_Description=Visualizador SVG
-tracing.option.FONTS_Description=Informação e visualizador de fontes
-tracing.option.TOOLTIP_Description=Descrição da tooltip do Botão Iniciar
-tracing.option.TOPLEVEL_Description=JavaScript de nível de topo
-tracing.option.UI_LOOP_Description=Interface ao utilizador para depuração de JavaScript
-tracing.option.WINDOWS_Description=Janela do Firebug & Observador de Separador
-tracing.option.XMLVIEWER_Description=Visualizador XML
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=DOM
+Always_Open_Firebug_Tracing=Criação da Domplate
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Tracing
+tracing.Show_Scope_Variables=Mostrar Variáveis de Âmbito
+tracing.Show_Time=Mostrar Tempo
+tracing.tab.Stack=Pilha
+tracing.tab.Exception=Exceção
+tracing.tab.Properties=Propriedades
+tracing.tab.Scope=Âmbito
+tracing.tab.Response=Resposta
+tracing.tab.Source=Fonte
+tracing.tab.Interfaces=Interfaces
+tracing.tab.Object=Objeto
+tracing.tab.Event=Evento
+tracing.cmd.Clear=Limpar
+tracing.cmd.tip.Clear=Remover Todas as Mensagens
+tracing.cmd.Find=Procurar
+tracing.cmd.tip.Find=Procurar Texto
+tracing.cmd.Bookmark=Marcador
+tracing.cmd.tip.Bookmark=Inserir Marcador
+tracing.cmd.Restart=Reiniciar o Firefox
+tracing.cmd.tip.Restart=Reiniciar o Firefox
+tracing.cmd.Exit=Sair do Firefox
+tracing.cmd.tip.Exit=Sair do Firefox
+tracing.cmd.Save=Guardar em Ficheiro
+tracing.cmd.tip.Save=Guardar registos num ficheiro
+tracing.cmd.Load=Carregar do Ficheiro
+tracing.cmd.tip.Load=Carregar registos dum ficheiro
+tracing.cmd.Expand_All=Expandir Todos
+tracing.cmd.Collapse_All=Colapsar Todos
+tracing.cmd.Tools=Ferramentas
+tracing.cmd.tip.Tools=Ferramentas
+tracing.cmd.Clear_Browser_Cache=Limpar a Cache do Navegador
+tracing.cmd.tip.Clear_Browser_Cache=Limpar a Cache do Navegador
+tracing.cmd.Force_Garbage_Collector=Forçar Coleção de \"Lixo\"
+tracing.cmd.tip.Force_Garbage_Collector=Forçar Coleção de \"Lixo\"
+tracing.cmd.Open_Profile_Directory=Abrir Diretório do Perfil
+tracing.cmd.tip.Open_Profile_Directory=Abrir Diretório do Perfil
+tracing.option.A11Y_Description=Questões de acessibilidade
+tracing.option.ACTIVATION_Description=Ativação do Firebug
+tracing.option.ACTIVITYOBSERVER_Description=Observador de atividade do Firebug
+tracing.option.ANNOTATIONS_Description=Anotação de sítio do Firebug
+tracing.option.BP_Description=Pontos de paragem
+tracing.option.CACHE_Description=Cache do código-fonte
+tracing.option.COMMANDLINE_Description=Linha de comandos e Popup da Linha de Comandos
+tracing.option.COMPILATION_UNITS_Description=Unidades de compilação de script
+tracing.option.CONSOLE_Description=Painel Consola
+tracing.option.CSS_Description=Interpretação do CSS
+tracing.option.DISPATCH_Description=Despacho de Eventos
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Criação Domplate
+tracing.option.EDITOR_Description=Editor em Linha & Preenchimento Automático
+tracing.option.ERRORLOG_Description=Registo de erros de JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Erros internos do Firebug
+tracing.option.EVAL_Description=Avaliação de script
+tracing.option.FBS_BP_Description=Pontos de paragem do serviço do Firebug
+tracing.option.FBS_CREATION_Description=Criação do script do serviço do Firebug
+tracing.option.FBS_ERRORS_Description=Erros do serviço do Firebug
+tracing.option.FBS_FINDDEBUGGER_Description=Procurar depurador do serviço do Firebug
+tracing.option.FBS_FUNCTION_Description=Função serviço do Firebug
+tracing.option.FBS_JSDCONTEXT_Description=Contexto do Depurador JavaScript do serviço do Firebug
+tracing.option.FBS_SRCUNITS_Description=Unidades-fonte do serviço do Firebug
+tracing.option.FBS_STEP_Description=Passo do Depurador JavaScript do serviço do Firebug
+tracing.option.FBS_TRACKFILES_Description=Ficheiros monitorizados pelo serviço do Firebug
+tracing.option.FUNCTION_NAMES_Description=Nomes de funções JavaScript
+tracing.option.HISTORY_Description=Histórico de Navegação do Firebug
+tracing.option.HTML_Description=HMTL
+tracing.option.HTTPOBSERVER_Description=Observador de pedidos HTTP
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Inicialização do Firebug
+tracing.option.INSPECT_Description=Inspetor
+tracing.option.JSONVIEWER_Description=Visualizador JSON
+tracing.option.LINETABLE_Description=Tabela de linhas de script
+tracing.option.LOCALE_Description=Localização
+tracing.option.LOCATIONS_Description=Localizações de código-fonte
+tracing.option.NET_Description=Painel Net
+tracing.option.NET_EVENTS_Description=Eventos de rede
+tracing.option.OPTIONS_Description=Preferências do Firebug
+tracing.option.PANELS_Description=Painéis
+tracing.option.SHORTCUTS_Description=Atalhos de teclado
+tracing.option.SOURCEFILES_Description=Ficheiros-fonte de JavaScript
+tracing.option.SPY_Description=Observador de pedidos XMLHttpRequest
+tracing.option.STACK_Description=Pilha de chamadas JavaScript
+tracing.option.STORAGE_Description=Definições de armazenamento
+tracing.option.SVGVIEWER_Description=Visualizador SVG
+tracing.option.FONTS_Description=Informação e visualizador de fontes
+tracing.option.TOOLTIP_Description=Descrição da tooltip do Botão Iniciar
+tracing.option.TOPLEVEL_Description=JavaScript de nível de topo
+tracing.option.UI_LOOP_Description=Interface ao utilizador para depuração de JavaScript
+tracing.option.WINDOWS_Description=Janela do Firebug & Observador de Separador
+tracing.option.XMLVIEWER_Description=Visualizador XML
diff --git a/locale/pt-PT/firebug.properties b/locale/pt-PT/firebug.properties
index 706db7a..5bff95a 100644
--- a/locale/pt-PT/firebug.properties
+++ b/locale/pt-PT/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Consola do Terminal
-panel.tip.console=Permite observar mensagens de consola e executar comandos JavaScript
-Panel-net=Rede
-panel.tip.net=Permite analisar o tráfego da rede
-Panel-html=HTML
-panel.tip.html=Permite inspecionar e manipular os nós da DOM
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Permite inspecionar e manipular as folhas de estilo CSS
-Panel-script=Script
-panel.tip.script=Permite depurar JavaScript
-Panel-dom=DOM
-panel.tip.dom=Permite inspecionar e manipular as propriedades DOM
-Panel-css=Estilo
-panel.tip.css=Permite inspecionar e manipular as regras CSS do nó DOM selecionado
-Panel-computed=Calculado
-panel.tip.computed=Permite inspecionar os valores CSS calculados do nó DOM selecionado
-Panel-layout=Layout
-panel.tip.layout=Permite inspecionar e manipular os dados de colocação do nós DOM selecionado
-Panel-domSide=DOM
-panel.tip.domSide=Permite inspecionar e manipular as propriedades DOM do nó DOM selecionado
-Panel-watches=Vigia
-panel.tip.watches=Permite inspecionar as variáveis JavaScript disponíveis no frame corrente da pilha e definir expressões de observação
-Panel-breakpoints=Pontos de Paragem
-panel.tip.breakpoints=Permite manipular o conjunto de pontos de paragem
-Panel-callstack=Pilha
-panel.tip.callstack=Permite observar a pilha corrente de chamadas JavaScript
-Panel-scopes=Âmbitos
-firebug.DetachFirebug=Abrir o Firebug numa Nova Janela
-firebug.AttachFirebug=Anexar o Firebug à Janela do Navegador
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Total de Firebug;%1$S Total de Firebugs
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Desativado
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=No Navegador
-minimized=Minimizado
-enablement.for_all_pages=para todas as páginas
-enablement.on=Ligado
-enablement.off=Desligado
-enablement.Panel_activation_status=Estado de ativação do painel:
-none=Fechado
-Firebug_-_inactive_for_current_website=Firebug - inativo na página corrente
-Activate_Firebug_for_the_current_website=Ativar Firebug na página corrente
-Minimized=Minimizado
-Minimize_Firebug=Minimizar o Firebug
-On_for_all_web_pages=Ligado para Todas as Páginas Web
-firebug.menu.tip.On_for_all_Web_Sites=Ativar o Firebug por omissão para todos os sítios web
-firebug.menu.Clear_Activation_List=Limpar Lista de Ativação
-firebug.menu.tip.Clear_Activation_List=Limpar a lista de sítios web para os quais o Firebug está ativado
-firebug.menu.Detached=Desanexar
-firebug.menu.tip.Detached=Desanexar o Firebug para a sua própria janela
-firebug.menu.Top=Topo
-firebug.menu.tip.Top=Alinhar o Firebug no topo da janela do agente de utilizador
-firebug.menu.Bottom=Fundo
-firebug.menu.tip.Bottom=Alinhar o Firebug no fundo da janela do agente de utilizador
-firebug.menu.Left=Esquerda
-firebug.menu.tip.Left=Alinhar o Firebug à esquerda da janela do agente de utilizador
-firebug.menu.Right=Direita
-firebug.menu.tip.Right=Alinhar o Firebug à direita da janela do agente de utilizador
-firebug.uiLocation=Posição do UI do Firebug
-firebug.menu.tip.UI_Location=Posição do interface ao utilizador do Firebug
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Opções do Firebug
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Mostrar Todos os Painéis
-console.option.Show_Command_Line=Mostrar Linha de Comandos
-console.option.tip.Show_Command_Line=Focar na Linha de Comandos / Mostrar o Popup da Linha de Comandos
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=Mostrar Erros de JavaScript
-console.option.tip.Show_JavaScript_Errors=Registar mensagens de erro JavaScript na consola
-ShowJavaScriptWarnings=Mostrar Alertas de JavaScript
-console.option.tip.Show_JavaScript_Warnings=Registar mensagens de aviso JavaScript na consola
-ShowCSSErrors=Mostrar Erros de CSS
-console.option.tip.Show_CSS_Errors=Registar mensagens de erro CSS na consola
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Exibir Relatório da Pilha (Stack Trace) na Ocorrência de Erros
-console.option.tip.Show_Stack_Trace=Mostrar informação de trace da pilha para mensagens de erro
-ShowXMLHttpRequests=Mostrar Pedidos XMLHttpRequest
-console.option.tip.Show_XMLHttpRequests=Registar pedidos XMLHttpRequest na consola
-ShowChromeErrors=Mostrar Erros no Chrome
-console.option.tip.Show_System_Errors=Registar erros internos de programa e add-on na consola
-ShowChromeMessages=Mostrar Mensagens do Chrome
-console.option.tip.Show_System_Messages=Registar mensagens internas de programa e add-on na consola
-ShowExternalErrors=Mostrar Erros Externos
-console.option.tip.Show_External_Errors=Registar mensagens de erro vindas de fontes externas na consola
-ShowNetworkErrors=Mostrar Erros de Rede
-console.option.tip.Show_Network_Errors=Registar mensagens de erro de rede na consola
-JavascriptOptionsStrict=Avisos Estritos (diminui o desempenho)
-console.option.tip.Show_Strict_Warnings=Registar também aviso estritos na consola
-Command_History=Histórico de Comandos
-console.option.Show_Command_Editor=Mostrar o Editor de Comandos
-console.option.tip.Show_Command_Editor=Trocar para o Editor de Comandos
-commandLineShowCompleterPopup=Mostrar Popup com Lista de Completar
-console.option.tip.Show_Completion_List_Popup=Mostrar o popup para completar automaticamente comandos
-Assertion=Falha na Asserção
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (linha %S)
-LineAndCol=%S (linha %S, col %S)
-InstanceLine=%S #%S (linha %S)
-StackItem=%S (%S linha %S)
-SystemItem=<Sistema>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspecionar no Painel %S
-panel.tip.Inspect_In_Panel=Trocar para o painel %S para examinar lá o objeto
-NoName=(sem nome)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Mostrar Texto Completo
-html.option.tip.Show_Full_Text=Não truncar o conteúdo dos elementos
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Mostrar Caracteres de Espaçamento
-html.option.tip.Show_Whitespace=Mostrar espaço-branco no interior dos nós
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Mostrar Comentários
-html.option.tip.Show_Comments=Mostrar nós de comentários
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Mostrar Entidades como Símbolos
-html.option.tip.Show_Entities_As_Symbols=Mostrar todas as entidades XML usando a sua representação simbólica
-html.option.Show_Entities_As_Names=Mostrar Entidades como Nomes
-html.option.tip.Show_Entities_As_Names=Mostrar todas as entidades XML usando os seus nomes
-html.option.Show_Entities_As_Unicode=Mostrar entidades como Unicode
-html.option.tip.Show_Entities_As_Unicode=Mostrar todas as entidades XML na sua representação Unicode
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Realçar Alterações
-html.option.tip.Highlight_Mutations=Realçar alterações no interior dos nós
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Expandir Alterações
-html.option.tip.Expand_Mutations=Expandir a vista em árvore para mostrar nós alterados
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Deslocar Alterações para a Vista
-html.option.tip.Scroll_To_Mutations=Deslocar a vista em árvore para trazer os nós alterados para a vista
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Mostrar Caixa de Informação Rápida
-inspect.option.tip.Show_Quick_Info_Box=Mostrar informação acerca do nó correntemente em inspeção dentro de um painel sobre a página
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Sombrear o Modelo de Caixa
-inspect.option.tip.Shade_Box_Model=Sombrear as diferentes partes do modelo em caixa
-ScrollIntoView=Deslocar para a Vista
-html.tip.Scroll_Into_View=Deslocar a página para tornar o elemento visível
-NewAttribute=Novo Atributo
-html.tip.New_Attribute=Adicionar um novo atributo a este elemento
-html.Edit_Node=Editar %S…
-html.Node=Nó
-html.tip.Edit_Node=Editar o %S utilizando o editor de texto completo
-DeleteElement=Apagar Elemento
-html.Delete_Element=Apagar o elemento da árvore
-DeleteNode=Apagar Nó
-html.Delete_Node=Apagar o nó da árvore
-# Quick Info Box
-quickInfo=Informação Rápida
-computedStyle=Estilo Calculado
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Parar na Mutação
-html.Disable_Break_On_Mutate=Desativar Parar na Mutação
-html.label.Break_On_Text_Change=Parar na Alteração de Texto
-html.label.HTML_Breakpoints=Pontos de Paragem HTML
-html.label.Break_On_Attribute_Change=Parar na Alteração de Atributos
-html.tip.Break_On_Attribute_Change=Parar a execução de JavaScript quando um atributo deste elemento é alterado
-html.label.Break_On_Child_Addition_or_Removal=Parar na Adição ou Remoção de Filhos
-html.tip.Break_On_Child_Addition_or_Removal=Parar a execução de JavaScript quando um nó-filho é adicionado ou removido deste elemento
-html.label.Break_On_Element_Removal=Parar na Remoção de Elementos
-html.tip.Break_On_Element_Removal=Parar a execução de JavaScript quando o elemento é removido
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Expandir/Contrair Todos
-html.tip.Expand/Contract_All=Expandir/colapsar todos os filhos recursivamente
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Parar em Alteração de Propriedade
-dom.tip.Break_On_Property_Change=Parar a execução de JavaScript quando esta propriedade é alterada
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Desativar Parar em Alteração de Propriedade
-dom.label.DOM_Breakpoints=Pontos de Paragem DOM
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Editar Atributo \"%S\"…
-html.tip.Edit_Attribute=Editar o valor do atributo "%S" deste elemento
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Apagar Atributo \"%S\"
-html.tip.Delete_Attribute=Apagar o atributo "%S" deste elemento
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Herdado de
-SothinkWarning=A extensão Sothink SWF Catcher está a impedir o funcionamento normal do Firebug.<br><br>Por favor leia <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">este item da FAQ do Firebug</a> para ajuda.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=Não existem regras. Pode <a>criar uma regra</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=Este elemento não tem regras de estilo. Pode <a>criar uma regra</a> para ele.
-EditStyle=Editar Estilo do Elemento…
-style.tip.Edit_Style=Editar o estilo em linha do elemento
-AddRule=Adicionar Regra…
-css.tip.AddRule=Adicionar uma regra geral para este elemento
-NewRule=Nova Regra…
-css.tip.New_Rule=Adicionar uma nova regra
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Apagar "%S"
-css.tip.Delete_Rule=Apagar a regra "%S" e todas as suas propriedades
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Editar Media Query…
-css.menu.tip.Edit_Media_Query=Editar a media query atribuída a esta regra
-NewProp=Nova Propriedade…
-css.tip.New_Prop=Adicionar uma nova propriedade à corrente regra
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=Editar \"%S\"…
-css.tip.Edit_Prop=Editar o valor da propriedade "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=Desativar \"%S\"
-css.tip.Disable_Prop=Desativar a propriedade "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=Apagar \"%S\"
-css.tip.Delete_Prop=Eliminar a propriedade "%S"
-# Console context menu labels.
-BreakOnThisError=Parar neste Erro
-console.menu.tip.Break_On_This_Error=Parar a execução JavaScript logo que ocorra este erro
-BreakOnAllErrors=Parar em Todos os Erros
-console.menu.tip.Break_On_All_Errors=Parar a execução de JavaScript logo que ocorra um erro
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Registar Throw/Catch
-script.option.tip.Track_Throw_Catch=Seguir exceções mesmo quando são apanhadas por blocos try/catch
-UseLastLineForEvalName=Usar a Última Linha de Código para Nomes eval()
-UseMD5ForEvalName=Usar MD5 para nomes eval()
-# Breakpoints side panel
-Breakpoints=Pontos de Paragem
-ErrorBreakpoints=Pontos de Paragem de Erro
-LoggedFunctions=Funções Registadas
-EnableAllBreakpoints=Ativar Todos os Pontos de Paragem
-breakpoints.option.tip.Enable_All_Breakpoints=Ativar todos os pontos de paragem listados
-DisableAllBreakpoints=Desativar Todos os Pontos de Paragem
-breakpoints.option.tip.Disable_All_Breakpoints=Desativar todos os pontos de paragem listados
-ClearAllBreakpoints=Remover Todos os Pontos de Paragem
-breakpoints.option.tip.Clear_All_Breakpoints=Remover todos os pontos de paragem listados
-ConditionInput=Este ponto de paragem irá parar apenas se esta expressão for verdadeira:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Remover Ponto de Paragem
-breakpoints.tip.Remove_Breakpoint=Remove o ponto de paragem
-breakpoints.Disable_Breakpoint=Desativar Ponto de Paragem
-breakpoints.tip.Disable_Breakpoint=Desativa o ponto de paragem
-breakpoints.Enable_Breakpoint=Ativar Ponto de Paragem
-breakpoints.tip.Enable_Breakpoint=Ativa o ponto de paragem
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Continuar
-script.balloon.Disable=Desativar
-ScriptsFilterStatic=Mostrar Scripts Estáticos
-ScriptsFilterEval=Mostrar Scripts Estáticos e de eval
-ScriptsFilterEvent=Mostrar Scripts Estáticos e de Eventos
-ScriptsFilterAll=Mostrar Scripts Estáticos, de eval e de Eventos
-ScriptsFilterStaticShort=estático
-ScriptsFilterEvalShort=evals
-ScriptsFilterEventShort=eventos
-ScriptsFilterAllShort=todos
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Expandir Tudo
-callstack.tip.Expand_All=Expande todas as funções na estrutura da pilha
-callstack.Collapse_All=Colapsar Tudo
-callstack.tip.Collapse_All=Colapsa todas as funções na estrutura da pilha
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Estruturas da pilha são apenas mostradas quando a execução de script é parada.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Mostrar Propriedades Definidas pelo Utilizador
-dom.option.tip.Show_User_Props=Mostrar propriedades definidas pelo utilizador
-ShowUserFuncs=Mostrar Funções Definidas pelo Utilizador
-dom.option.tip.Show_User_Funcs=Mostrar métodos de objeto definidos pelo utilizador
-ShowDOMProps=Mostrar Propriedades do DOM
-dom.option.tip.Show_DOM_Props=Mostrar propriedades especificadas dentro da DOM
-ShowDOMFuncs=Mostrar Funções do DOM
-dom.option.tip.Show_DOM_Funcs=Mostrar funções especificadas dentro da DOM
-ShowDOMConstants=Mostrar Constantes do DOM
-dom.option.tip.Show_DOM_Constants=Mostrar constantes especificadas dentro da DOM
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Mostrar Apenas Propriedades Próprias
-ShowOwnPropertiesTooltip=Não mostrar a cadeia de protótipos
-ShowEnumerableProperties=Mostrar Apenas Propriedades Enumeráveis
-ShowEnumerablePropertiesTooltip=Não mostrar propriedades não-enumeráveis
-NoMembersWarning=Não existem propriedades para exibição no objeto.
-NewWatch=Nova expressão de vigia…
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Adicionar Vigia
-watch.tip.Add_Watch=Adicionar a seleção/objeto ao painel lateral Observação para análise
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Copiar Código-fonte
-script.tip.Copy_Source_Code=Copiar o código-fonte selecionado para a Área de Transferência
-Use_hash_plus_number_to_go_to_line=Usar #<número> para ir para a linha
-CopyValue=Copiar Valor
-dom.tip.Copy_Value=Copiar o valor da propriedade para a Área de Transferência
-Copy_Name=Copiar Nome
-dom.tip.Copy_Name=Copiar o nome da propriedade para a Área de Transferência
-Copy_Path=Copiar Caminho
-dom.tip.Copy_Path=Copiar o caminho da propriedade
-NewProperty=Nova Propriedade…
-EditProperty=Editar Propriedade…
-dom.tip.Edit_Property=Editar o valor da propriedade
-EditVariable=Editar Variável…
-stack.tip.Edit_Variable=Editar o valor da variável
-EditWatch=Editar Vigia…
-watch.tip.Edit_Watch=Editar o valor da expressão de observação
-DeleteProperty=Apagar Propriedade
-dom.tip.Delete_Property=Apagar a propriedade
-DeleteWatch=Apagar Vigia
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Eliminar a expressão de observação
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Colocar Ponto de Paragem
-script.tip.Set_Breakpoint=Comuta a colocação de um ponto de paragem na linha corrente
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Editar Condição do Ponto de Paragem…
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=Não existem pontos de paragem configurados nesta página.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Mostrar Apenas Estilos Aplicados
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Mostrar CSS do User Agent (Navegador)
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Expandir Propriedades Curtas
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Ordenar alfabeticamente
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Mostrar estilos específicos da Mozilla
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Prima qualquer tecla para filtrar a lista
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=espaçamento
-LayoutBorder=borda
-LayoutMargin=margem
-LayoutPosition=posição
-LayoutAdjacent=adjacente
-position=posição
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Mostrar Regras e Guias
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Net panel
-Loading=A Carregar…
-Headers=Cabeçalhos
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Reiniciar Cabeçalho
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=URL do pedido e método HTTP usado.
-net.header.Status=Estado
-net.header.Status_Tooltip=Estado da resposta recebida.
-net.header.Domain=Domínio
-net.header.Domain_Tooltip=Domínio do pedido executado.
-net.header.Size=Tamanho
-net.header.Size_Tooltip=Tamanho da resposta recebida.
-net.header.Timeline=Eixo temporal
-net.header.Timeline_Tooltip=Informação detalhada de temporização sobre a viagem pedido-resposta.
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=Pontos de Paragem XHR
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Parar em XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=ver código-fonte
-net.headers.pretty_print=impressão bonita
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Média
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Envio (Post)
-Put=Envio (Put)
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Resposta
-URLParameters=Parâmetros
-Cache=Cache
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Ordenar por chave
-jsonviewer.do_not_sort=Não ordenar
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Cabeçalhos do Pedido
-ResponseHeaders=Cabeçalhos da Resposta
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=O limite de registo do Firebug foi atingido. %1$S entrada não exibida.;O limite de registo do Firebug foi atingido. %1$S entradas não exibidas.
-LimitPrefs=Preferências
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Para modificar o registo altere: %S
-Refresh=Refrescar
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Abrir num novo separador
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Abrir Resposta num Novo Separador
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Perfil
-ProfilerStarted=O criador de perfil está em execução. Clique em \'Perfil\' de novo para ver o relatório.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S chamada);(%1$Sms, %2$S chamadas)
-NothingToProfile=Nenhuma atividade para criar perfil.
-PercentTooltip=Percentagem de tempo despendido nesta função.
-CallsHeaderTooltip=Número de vezes que a função foi invocada.
-OwnTimeHeaderTooltip=Tempo despendido na função, excluindo chamadas internas.
-TimeHeaderTooltip=Tempo despendido na função, incluindo chamadas internas.
-AvgHeaderTooltip=Tempo médio, incluindo chamadas a funções.
-MinHeaderTooltip=Tempo mínimo, incluindo chamadas a funções.
-MaxHeaderTooltip=Tempo máximo, incluindo chamadas a funções.
-ProfileButton.Enabled.Tooltip=Criar perfil do tempo de execução do JavaScript.
-ProfileButton.Disabled.Tooltip=Criar perfil do tempo de execução do JavaScript (painel Script tem de estar ativo).
-Function=Função
-Percent=Percentagem
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Chamadas
-OwnTime=Tempo Próprio
-Time=Tempo
-Avg=Média
-Min=Mín.
-Max=Máx.
-File=Ficheiro
-# Support for standard actions.
-Copy=Copiar
-Cut=Cortar
-Remove=Remover
-Delete=Delete
-Paste=Colar
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Copiar innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Copiar XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Copiar Caminho do CSS
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Copiar Localização
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Copiar Localização com Parâmetros
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Copiar Cabeçalhos do Pedido
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Copiar Cabeçalhos da Resposta
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Copiar Corpo da Resposta
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Erro na Cópia
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Copiar Função
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Registar Chamadas para \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Registar Eventos
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Ativo
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=A consola do Firebug não suporta \'%S\'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=A linha de comandos do Firebug não suporta \'%S\'
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Desativar Parar em Todos os Erros
-console.Break_On_All_Errors=Parar em Todos os Erros
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Parar Neste Erro
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=O JavaScript está desativado nas preferências do Firefox. Se pretende usar o painel Consola, então por favor ative esta opção em \'Ferramentas\' -> \'Opções\' -> \'Conteúdo\' -> \'Ativar JavaScript\'
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=A linha de comandos do Firebug está desativada para páginas XML. Pode <a>alterar para HTML</a> para a ativar.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Corpo da Resposta
-net.sizeinfo.Post_Body=Corpo do Envio (Post)
-net.sizeinfo.Total_Sent=Total Enviado
-net.sizeinfo.Total_Received=Total Recebido
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Painel de rede ativado. Quaisquer pedidos enquanto o painel estiver inactivo não serão exibidos.
-net.responseSizeLimitMessage=Foi atingido o limite de tamanho de resposta do Firebug. Clique <a>aqui</a> para abrir a resposta completa num novo separador do Firebug.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=O limite de tamanho de pedido foi atingido pelo Firebug.
-net.Break_On_XHR=Parar em XHR
-net.label.Parameters=Parâmetros
-net.label.Parts=Partes
-net.label.Source=Fonte
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Desativar a Cache do Navegador
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Mostrar Eventos de Desenho
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Parar no Próximo
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Mostrar Cabeçalhos HTTP
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S pedido;%1$S pedidos
-FromCache=da cache
-StopLoading=Parar Carregamento
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Enorme Quantidade de Dados)
-ShowComputedStyle=Mostrar Estilo Computado
-StyleGroup-text=Texto
-StyleGroup-background=Fundo
-StyleGroup-box=Modelo de Caixa
-StyleGroup-layout=Exibição
-StyleGroup-other=Outro
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Copiar Côr
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Copiar Localização da Imagem
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Abrir Imagem num Novo Separador
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Omitir Barra de Ferramentas da Pilha
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copiar Declaração da Regra
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Copiar Declaração de Estilo
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Erro;%1$S Erros
-moduleManager.title=o painel %S está desativado
-moduleManager.desc3=Utilize o ícone do Firebug na barra de estado para ativar e desativar todos os painéis em simultâneo. Utilize o menu de cada separador para controlo individual.
-moduleManager.Enable=Ativar
-Suspend_Firebug=Suspender Firebug
-Resume_Firebug=Resumir Firebug
-Reset_Panels_To_Disabled=Reiniciar Painéis para Desativado
-Open_Console=Abrir Consola
-Open_Console_Tooltip=Abrir Consola de Trace para o Firebug
-Scope_Chain=Cadeia de Contexto
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=With
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Chamada
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Janela
-Logs=Registos
-Options=Opções
-Copy_Stack=Copiar Pilha
-Copy Exception=Copiar Exceção
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=A bloquear
-requestinfo.Resolving=A efetuar procura DNS
-requestinfo.Connecting=A Ligar
-requestinfo.Sending=A enviar
-requestinfo.Waiting=A esperar
-requestinfo.Receiving=A receber
-requestinfo.ContentLoad=\'DOMContentLoaded\' (evento)
-requestinfo.WindowLoad=\'load\' (evento)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Pesquisa do Firebug
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Próximo
-search.tip.Next=Search for the next match
-search.Previous=Anterior
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Forçar Sensível à Capitalização
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Múltiplos Ficheiros
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Usar Expressão Regular
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=Seletor CSS
-search.net.Headers=Cabeçalhos
-search.net.Parameters=Parâmetros
-search.net.Response_Bodies=Corpos da Resposta
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persistir
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Mostrar Todas as Entradas do Registo
-firebug.console.Errors=Erros
-firebug.console.Filter_by_Errors=Filtrar por Erros
-firebug.console.Warnings=Avisos
-firebug.console.Filter_by_Warnings=Filtrar por Aviso
-firebug.console.Info=Informação
-firebug.console.Filter_by_Info=Filtrar por Informação
-firebug.console.Debug_Info=Informação de Depuração
-firebug.console.Filter_by_Debug_Info=Filtrar por Informação de Depuração
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Abrir o Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Esconder Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Ativar Todos os Painéis
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Desativar Todos os Painéis
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Personalizar Atalhos
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Opções
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Ativar Melhorias de Acessibilidade
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Reiniciar Todas as Opções do Firebug
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug Online
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Mostrar Contagem de Erros
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Tamanho do Texto
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Aumentar Tamanho do Texto
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Diminuir Tamanho do Texto
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Tamanho do Texto Normal
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Sítio do Firebug…
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Documentação…
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Atalhos de Teclado…
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Grupo de Discussão…
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Reportar Erros…
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Contribuir…
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Sobre…
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Procurar
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Voltar a Inserir Comando
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Alternar Inspeção
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Ativar/desativar Caixa de Informação Rápida
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Alternar Criação de Perfil
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Enfoque na Linha de Comandos
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Enfoque na Pesquisa do Firebug
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Enfoque no Editor de Vigias
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Enfoque na Localização
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Próximo Objeto
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Objeto Anterior
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Personalizar Teclas do Firebug
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Abrir o Firebug numa Nova Janela
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Comutar para o painel à esquerda do Firebug
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Comutar para o painel à direita do Firebug
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Abrir Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Separador do Firebug anterior
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Limpar Consola
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Abrir Consola de Trace
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Regressar
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Avançar
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Aumentar Tamanho do Texto
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Diminuir Tamanho do Texto
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Tamanho do Texto Normal
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Seletor de Painéis
-customizeShortcuts=Combinações de Teclas do Firebug
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=ferramentas do painel
-a11y.labels.firebug_panels=Painéis do Firebug
-a11y.labels.firebug_side_panels=painéis laterais do Firebug
-a11y.labels.firebug_window=janela do Firebug
-a11y.labels.firebug_status=estado do Firebug
-a11y.labels.reset=reiniciar
-a11y.labels.reset_shortcut=reiniciar atalho %S
-aria.labels.inactive_panel=painel inativo
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=registar linhas
-a11y.labels.call_stack=pilha de chamadas
-a11y.labels.document_structure=estrutura do documento
-a11y.labels.title_panel=painel %S
-a11y.labels.title_side_panel=painel lateral %S
-a11y.labels.cached=cached
-aria.labels.stack_trace=trace da pilha
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=espaçamento
-a11y.layout.border=borda
-a11y.layout.margin=margem
-a11y.layout.position=posição
-a11y.layout.position_top=posição topo
-a11y.layout.position_right=posição direita
-a11y.layout.position_bottom=posição fundo
-a11y.layout.position_left=posição esquerda
-a11y.layout.margin_top=margem superior
-a11y.layout.margin_right=margem direita
-a11y.layout.margin_bottom=margem inferior
-a11y.layout.margin_left=margem esquerda
-a11y.layout.border_top=borda superior
-a11y.layout.border_right=borda direita
-a11y.layout.border_bottom=borda inferior
-a11y.layout.border_left=borda esquerda
-a11y.layout.padding_top=espaçamento superior
-a11y.layout.padding_right=espaçamento direito
-a11y.layout.padding_bottom=espaçamento inferior
-a11y.layout.padding_left=espaçamento esquerdo
-a11y.layout.top=superior
-a11y.layout.right=direita
-a11y.layout.bottom=inferior
-a11y.layout.left=esquerda
-a11y.layout.width=largura
-a11y.layout.height=altura
-a11y.layout.size=tamanho
-a11y.layout.z-index=índice-z (profundidade)
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=retângulo envolvente no cliente
-a11y.descriptions.press_enter_to_edit_values=Pressione Enter seguido de Tab para editar valores individuais
-a11y.labels.style_rules=regras de estilo
-aria.labels.inherited_style_rules=regras de estilo herdadas
-a11y.labels.computed_styles=estilos calculados
-a11y.labels.dom_properties=propriedades DOM
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=editor em linha
-a11y.labels.value_for_attribute_in_element=valor para o atributo %S no elemento %S
-a11y.labels.attribute_for_element=atributo para o elemento %S
-a11y.labels.text_contents_for_element=conteúdo de texto para o elemento %S
-a11y.labels.defined_in_file=definido em %S
-a11y.labels.declarations_for_selector=declarações de estilo para o seletor \"%S\"
-a11y.labels.property_for_selector=propriedade CSS para o seletor: %S
-a11y.labels.value_property_in_selector=%S valor de propriedade para o seletor %S
-a11y.labels.css_selector=seletor CSS
-a11y.labels.source_code_for_file=código-fonte para o ficheiro %S
-a11y.labels.press_enter_to_add_new_watch_expression=pressione Enter para adicionar uma nova expressão de vigia
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=sobrescrito
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=tem ponto de paragem condicional
-a11y.updates.has_disabled_break_point=tem ponto de paragem desativado
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script suspenso na linha %S de %S, ficheiro %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=correspondência encontrada para %S em %S linhas do registo
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=correspondência encontrada para %S na linha %S de %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=correspondência encontrada para %S no elemento %S no caminho %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=correspondência encontrada para %S no atributo %S=%S do elemento %S no caminho %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=correspondência encontrada para %S no conteúdo de texto: %S do elemento %S no caminho %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=correspondência encontrada para %S no seletor %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=correspondência encontrada para \"%S\" na declaração de estilo %S no seletor %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=correspondência encontrada para %S na propriedade DOM %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=correspondência encontrada para \"%S\" em %S, %S: %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=correspondência encontrada para %S no sumário de rede, linha: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=sem correspondências encontradas para \"%S\"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Tem a certeza que pretende reiniciar todas as opções do Firebug para o estado por omissão?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=A consola tem de estar ativa
-warning.Command_line_blocked?=Linha de comandos bloqueada?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Recarregar para ativar a consola de janela
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=O recurso deste URL não é texto
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Regressar para este painel
-firebug.history.Stay_on_this_panel=Manter neste painel
-firebug.history.Go_forward_to_this_panel=Avançar para este painel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Regressar
-firebug.history.Go_forward=Avançar
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=O painel Script estava inativo durante o carregamento da página
-script.suggestion.inactive_during_page_load2=<a>Recarregue</a> para ver todas as fontes
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=O JavaScript não está ativo
-script.suggestion.javascript_not_enabled=Veja Firefox > Ferramentas > Opções > Conteúdo > Ativar Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Ativar JavaScript
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Todos os scripts foram filtrados
-script.suggestion.all_scripts_filtered=Veja a definição Filtro de Scripts na barra de ferramentas ou a opção \"Mostrar Fontes do Chrome\"
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=Não existe JavaScript nesta página
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=O depurador já está ativo
-script.suggestion.debugger_active=O depurador está parado num ponto de paragem doutra página.
-script.button.Go_to_that_page=Ir para essa página
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Fechar
-firebug.View=Ver
-firebug.Help=Ajuda
-firebug.Run=Executar
-firebug.Copy=Copiar
-firebug.History=Histórico
-firebug.Run_the_entered_command=Executar o comando inserido
-firebug.Clear_the_Command_Editor=Limpar o Editor de Comandos
-firebug.Copy_the_script_as_a_bookmarklet=Copiar o script como um bookmarklet
-firebug.Insert_a_previously_entered_command=Inserir um comando inserido anteriormente
-firebug.AlwaysOpenInWindow=Abrir Sempre numa Nova Janela
-firebug.OpenWith=Abrir no Editor
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Sítios…
-firebug.Configure_Editors=Configurar Editores
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Inspecionar
-firebug.InspectElement=Inspecionar Elemento
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Parar em Erros
-firebug.InspectTooltip=Clique num elemento da página para inspecionar
-firebug.EditHTMLTooltip=Editar este HTML
-firebug.Profile=Perfil
-firebug.Clear=Limpar
-firebug.ClearConsole=Limpar Consola
-firebug.ClearTooltip=Limpar a consola
-firebug.All=Tudo
-firebug.Images=Imagens
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Editores Configurados no Firebug
-editors.Editor=Editor
-editors.Executable=Executável
-editors.Launch_Arguments=Parâmetros de Lançamento
-editors.Add=Adicionar
-editors.Remove=Remover
-editors.Change=Alterar
-editors.Move_Up=Mover para Cima
-editors.Close=Fechar
-editors.Browse=Navegar…
-changeEditor.Editor_Configuration=Configuração do Editor
-changeEditor.Name=Nome:
-changeEditor.Executable=Executável:
-changeEditor.CmdLine=Parâmetros:
-changeEditor.Supplied_arguments=Parâmetros providenciados pelo Firebug:
-changeEditor.URL_of_file=URL do ficheiro (se %url não estiver presente, %file será adicionado por omissão)
-changeEditor.Path_to_local_file=Caminho para o ficheiro local (ou para a cópia temporária)
-changeEditor.Line_number=Número da linha (se disponível)
-changeEditor.Invalid_Application_Path=Caminho da Aplicação Inválido
-changeEditor.Application_does_not_exist=A aplicação especificada não existe!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Editar
-firebug.css.sourceEdit=Editar Código-fonte
-firebug.css.sourceEdit.tooltip=Código-fonte da folha de estilos na área de texto de edição com tal como carregado pelo navegador
-firebug.css.liveEdit=Edição ao Vivo
-firebug.css.liveEdit.tooltip=CSS na Área de texto de edição extraído do navegador
-firebug.EditCSSTooltip=Editar esta folha de estilos
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=As páginas não são memorizadas no Modo de Navegação Privada
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Mostrar Notificações de Paragem
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=Pode desativar/ativar notificações de paragem no <a>menu do separador do painel</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicando no botão \'Desativar\' tem precedência sobre \'debugger\' com um ponto de paragem desativado.
-firebug.bon.tooltip.disableDebuggerKeyword2=Cria um ponto de paragem desativado
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=Não existem objetos-filho
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=mais
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item no Armazenamento;%1$S itens no Armazenamento
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Propriedades do Objeto
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(não existe forma de completar)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=O objeto URL foi provavelmente revogado usando o método \'revokeObjectURL\'.
-firebug.failedToPreviewImageURL=Falha ao carregar o URL desejado.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Consola do Terminal
+panel.tip.console=Permite observar mensagens de consola e executar comandos JavaScript
+Panel-net=Rede
+panel.tip.net=Permite analisar o tráfego da rede
+Panel-html=HTML
+panel.tip.html=Permite inspecionar e manipular os nós da DOM
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Permite inspecionar e manipular as folhas de estilo CSS
+Panel-script=Script
+panel.tip.script=Permite depurar JavaScript
+Panel-dom=DOM
+panel.tip.dom=Permite inspecionar e manipular as propriedades DOM
+Panel-css=Estilo
+panel.tip.css=Permite inspecionar e manipular as regras CSS do nó DOM selecionado
+Panel-computed=Calculado
+panel.tip.computed=Permite inspecionar os valores CSS calculados do nó DOM selecionado
+Panel-layout=Layout
+panel.tip.layout=Permite inspecionar e manipular os dados de colocação do nós DOM selecionado
+Panel-domSide=DOM
+panel.tip.domSide=Permite inspecionar e manipular as propriedades DOM do nó DOM selecionado
+Panel-watches=Vigia
+panel.tip.watches=Permite inspecionar as variáveis JavaScript disponíveis no frame corrente da pilha e definir expressões de observação
+Panel-breakpoints=Pontos de Paragem
+panel.tip.breakpoints=Permite manipular o conjunto de pontos de paragem
+Panel-callstack=Pilha
+panel.tip.callstack=Permite observar a pilha corrente de chamadas JavaScript
+Panel-scopes=Âmbitos
+firebug.DetachFirebug=Abrir o Firebug numa Nova Janela
+firebug.AttachFirebug=Anexar o Firebug à Janela do Navegador
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Total de Firebug;%1$S Total de Firebugs
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Desativado
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=No Navegador
+minimized=Minimizado
+enablement.for_all_pages=para todas as páginas
+enablement.on=Ligado
+enablement.off=Desligado
+enablement.Panel_activation_status=Estado de ativação do painel:
+none=Fechado
+Firebug_-_inactive_for_current_website=Firebug - inativo na página corrente
+Activate_Firebug_for_the_current_website=Ativar Firebug na página corrente
+Minimized=Minimizado
+Minimize_Firebug=Minimizar o Firebug
+On_for_all_web_pages=Ligado para Todas as Páginas Web
+firebug.menu.tip.On_for_all_Web_Sites=Ativar o Firebug por omissão para todos os sítios web
+firebug.menu.Clear_Activation_List=Limpar Lista de Ativação
+firebug.menu.tip.Clear_Activation_List=Limpar a lista de sítios web para os quais o Firebug está ativado
+firebug.menu.Detached=Desanexar
+firebug.menu.tip.Detached=Desanexar o Firebug para a sua própria janela
+firebug.menu.Top=Topo
+firebug.menu.tip.Top=Alinhar o Firebug no topo da janela do agente de utilizador
+firebug.menu.Bottom=Fundo
+firebug.menu.tip.Bottom=Alinhar o Firebug no fundo da janela do agente de utilizador
+firebug.menu.Left=Esquerda
+firebug.menu.tip.Left=Alinhar o Firebug à esquerda da janela do agente de utilizador
+firebug.menu.Right=Direita
+firebug.menu.tip.Right=Alinhar o Firebug à direita da janela do agente de utilizador
+firebug.uiLocation=Posição do UI do Firebug
+firebug.menu.tip.UI_Location=Posição do interface ao utilizador do Firebug
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Opções do Firebug
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Mostrar Todos os Painéis
+console.option.Show_Command_Line=Mostrar Linha de Comandos
+console.option.tip.Show_Command_Line=Focar na Linha de Comandos / Mostrar o Popup da Linha de Comandos
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=Mostrar Erros de JavaScript
+console.option.tip.Show_JavaScript_Errors=Registar mensagens de erro JavaScript na consola
+ShowJavaScriptWarnings=Mostrar Alertas de JavaScript
+console.option.tip.Show_JavaScript_Warnings=Registar mensagens de aviso JavaScript na consola
+ShowCSSErrors=Mostrar Erros de CSS
+console.option.tip.Show_CSS_Errors=Registar mensagens de erro CSS na consola
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Exibir Relatório da Pilha (Stack Trace) na Ocorrência de Erros
+console.option.tip.Show_Stack_Trace=Mostrar informação de trace da pilha para mensagens de erro
+ShowXMLHttpRequests=Mostrar Pedidos XMLHttpRequest
+console.option.tip.Show_XMLHttpRequests=Registar pedidos XMLHttpRequest na consola
+ShowChromeErrors=Mostrar Erros no Chrome
+console.option.tip.Show_System_Errors=Registar erros internos de programa e add-on na consola
+ShowChromeMessages=Mostrar Mensagens do Chrome
+console.option.tip.Show_System_Messages=Registar mensagens internas de programa e add-on na consola
+ShowExternalErrors=Mostrar Erros Externos
+console.option.tip.Show_External_Errors=Registar mensagens de erro vindas de fontes externas na consola
+ShowNetworkErrors=Mostrar Erros de Rede
+console.option.tip.Show_Network_Errors=Registar mensagens de erro de rede na consola
+JavascriptOptionsStrict=Avisos Estritos (diminui o desempenho)
+console.option.tip.Show_Strict_Warnings=Registar também aviso estritos na consola
+Command_History=Histórico de Comandos
+console.option.Show_Command_Editor=Mostrar o Editor de Comandos
+console.option.tip.Show_Command_Editor=Trocar para o Editor de Comandos
+commandLineShowCompleterPopup=Mostrar Popup com Lista de Completar
+console.option.tip.Show_Completion_List_Popup=Mostrar o popup para completar automaticamente comandos
+Assertion=Falha na Asserção
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (linha %S)
+LineAndCol=%S (linha %S, col %S)
+InstanceLine=%S #%S (linha %S)
+StackItem=%S (%S linha %S)
+SystemItem=<Sistema>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspecionar no Painel %S
+panel.tip.Inspect_In_Panel=Trocar para o painel %S para examinar lá o objeto
+NoName=(sem nome)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Mostrar Texto Completo
+html.option.tip.Show_Full_Text=Não truncar o conteúdo dos elementos
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Mostrar Caracteres de Espaçamento
+html.option.tip.Show_Whitespace=Mostrar espaço-branco no interior dos nós
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Mostrar Comentários
+html.option.tip.Show_Comments=Mostrar nós de comentários
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Mostrar Entidades como Símbolos
+html.option.tip.Show_Entities_As_Symbols=Mostrar todas as entidades XML usando a sua representação simbólica
+html.option.Show_Entities_As_Names=Mostrar Entidades como Nomes
+html.option.tip.Show_Entities_As_Names=Mostrar todas as entidades XML usando os seus nomes
+html.option.Show_Entities_As_Unicode=Mostrar entidades como Unicode
+html.option.tip.Show_Entities_As_Unicode=Mostrar todas as entidades XML na sua representação Unicode
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Realçar Alterações
+html.option.tip.Highlight_Mutations=Realçar alterações no interior dos nós
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Expandir Alterações
+html.option.tip.Expand_Mutations=Expandir a vista em árvore para mostrar nós alterados
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Deslocar Alterações para a Vista
+html.option.tip.Scroll_To_Mutations=Deslocar a vista em árvore para trazer os nós alterados para a vista
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Mostrar Caixa de Informação Rápida
+inspect.option.tip.Show_Quick_Info_Box=Mostrar informação acerca do nó correntemente em inspeção dentro de um painel sobre a página
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Sombrear o Modelo de Caixa
+inspect.option.tip.Shade_Box_Model=Sombrear as diferentes partes do modelo em caixa
+ScrollIntoView=Deslocar para a Vista
+html.tip.Scroll_Into_View=Deslocar a página para tornar o elemento visível
+NewAttribute=Novo Atributo
+html.tip.New_Attribute=Adicionar um novo atributo a este elemento
+html.Edit_Node=Editar %S…
+html.Node=Nó
+html.tip.Edit_Node=Editar o %S utilizando o editor de texto completo
+DeleteElement=Apagar Elemento
+html.Delete_Element=Apagar o elemento da árvore
+DeleteNode=Apagar Nó
+html.Delete_Node=Apagar o nó da árvore
+# Quick Info Box
+quickInfo=Informação Rápida
+computedStyle=Estilo Calculado
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Parar na Mutação
+html.Disable_Break_On_Mutate=Desativar Parar na Mutação
+html.label.Break_On_Text_Change=Parar na Alteração de Texto
+html.label.HTML_Breakpoints=Pontos de Paragem HTML
+html.label.Break_On_Attribute_Change=Parar na Alteração de Atributos
+html.tip.Break_On_Attribute_Change=Parar a execução de JavaScript quando um atributo deste elemento é alterado
+html.label.Break_On_Child_Addition_or_Removal=Parar na Adição ou Remoção de Filhos
+html.tip.Break_On_Child_Addition_or_Removal=Parar a execução de JavaScript quando um nó-filho é adicionado ou removido deste elemento
+html.label.Break_On_Element_Removal=Parar na Remoção de Elementos
+html.tip.Break_On_Element_Removal=Parar a execução de JavaScript quando o elemento é removido
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Expandir/Contrair Todos
+html.tip.Expand/Contract_All=Expandir/colapsar todos os filhos recursivamente
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Parar em Alteração de Propriedade
+dom.tip.Break_On_Property_Change=Parar a execução de JavaScript quando esta propriedade é alterada
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Desativar Parar em Alteração de Propriedade
+dom.label.DOM_Breakpoints=Pontos de Paragem DOM
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Editar Atributo \"%S\"…
+html.tip.Edit_Attribute=Editar o valor do atributo "%S" deste elemento
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Apagar Atributo \"%S\"
+html.tip.Delete_Attribute=Apagar o atributo "%S" deste elemento
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Herdado de
+SothinkWarning=A extensão Sothink SWF Catcher está a impedir o funcionamento normal do Firebug.<br><br>Por favor leia <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">este item da FAQ do Firebug</a> para ajuda.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=Não existem regras. Pode <a>criar uma regra</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=Este elemento não tem regras de estilo. Pode <a>criar uma regra</a> para ele.
+EditStyle=Editar Estilo do Elemento…
+style.tip.Edit_Style=Editar o estilo em linha do elemento
+AddRule=Adicionar Regra…
+css.tip.AddRule=Adicionar uma regra geral para este elemento
+NewRule=Nova Regra…
+css.tip.New_Rule=Adicionar uma nova regra
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Apagar "%S"
+css.tip.Delete_Rule=Apagar a regra "%S" e todas as suas propriedades
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Editar Media Query…
+css.menu.tip.Edit_Media_Query=Editar a media query atribuída a esta regra
+NewProp=Nova Propriedade…
+css.tip.New_Prop=Adicionar uma nova propriedade à corrente regra
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=Editar \"%S\"…
+css.tip.Edit_Prop=Editar o valor da propriedade "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=Desativar \"%S\"
+css.tip.Disable_Prop=Desativar a propriedade "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=Apagar \"%S\"
+css.tip.Delete_Prop=Eliminar a propriedade "%S"
+# Console context menu labels.
+BreakOnThisError=Parar neste Erro
+console.menu.tip.Break_On_This_Error=Parar a execução JavaScript logo que ocorra este erro
+BreakOnAllErrors=Parar em Todos os Erros
+console.menu.tip.Break_On_All_Errors=Parar a execução de JavaScript logo que ocorra um erro
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Registar Throw/Catch
+script.option.tip.Track_Throw_Catch=Seguir exceções mesmo quando são apanhadas por blocos try/catch
+UseLastLineForEvalName=Usar a Última Linha de Código para Nomes eval()
+UseMD5ForEvalName=Usar MD5 para nomes eval()
+# Breakpoints side panel
+Breakpoints=Pontos de Paragem
+ErrorBreakpoints=Pontos de Paragem de Erro
+LoggedFunctions=Funções Registadas
+EnableAllBreakpoints=Ativar Todos os Pontos de Paragem
+breakpoints.option.tip.Enable_All_Breakpoints=Ativar todos os pontos de paragem listados
+DisableAllBreakpoints=Desativar Todos os Pontos de Paragem
+breakpoints.option.tip.Disable_All_Breakpoints=Desativar todos os pontos de paragem listados
+ClearAllBreakpoints=Remover Todos os Pontos de Paragem
+breakpoints.option.tip.Clear_All_Breakpoints=Remover todos os pontos de paragem listados
+ConditionInput=Este ponto de paragem irá parar apenas se esta expressão for verdadeira:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Remover Ponto de Paragem
+breakpoints.tip.Remove_Breakpoint=Remove o ponto de paragem
+breakpoints.Disable_Breakpoint=Desativar Ponto de Paragem
+breakpoints.tip.Disable_Breakpoint=Desativa o ponto de paragem
+breakpoints.Enable_Breakpoint=Ativar Ponto de Paragem
+breakpoints.tip.Enable_Breakpoint=Ativa o ponto de paragem
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Continuar
+script.balloon.Disable=Desativar
+ScriptsFilterStatic=Mostrar Scripts Estáticos
+ScriptsFilterEval=Mostrar Scripts Estáticos e de eval
+ScriptsFilterEvent=Mostrar Scripts Estáticos e de Eventos
+ScriptsFilterAll=Mostrar Scripts Estáticos, de eval e de Eventos
+ScriptsFilterStaticShort=estático
+ScriptsFilterEvalShort=evals
+ScriptsFilterEventShort=eventos
+ScriptsFilterAllShort=todos
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Expandir Tudo
+callstack.tip.Expand_All=Expande todas as funções na estrutura da pilha
+callstack.Collapse_All=Colapsar Tudo
+callstack.tip.Collapse_All=Colapsa todas as funções na estrutura da pilha
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Estruturas da pilha são apenas mostradas quando a execução de script é parada.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Mostrar Propriedades Definidas pelo Utilizador
+dom.option.tip.Show_User_Props=Mostrar propriedades definidas pelo utilizador
+ShowUserFuncs=Mostrar Funções Definidas pelo Utilizador
+dom.option.tip.Show_User_Funcs=Mostrar métodos de objeto definidos pelo utilizador
+ShowDOMProps=Mostrar Propriedades do DOM
+dom.option.tip.Show_DOM_Props=Mostrar propriedades especificadas dentro da DOM
+ShowDOMFuncs=Mostrar Funções do DOM
+dom.option.tip.Show_DOM_Funcs=Mostrar funções especificadas dentro da DOM
+ShowDOMConstants=Mostrar Constantes do DOM
+dom.option.tip.Show_DOM_Constants=Mostrar constantes especificadas dentro da DOM
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Mostrar Apenas Propriedades Próprias
+ShowOwnPropertiesTooltip=Não mostrar a cadeia de protótipos
+ShowEnumerableProperties=Mostrar Apenas Propriedades Enumeráveis
+ShowEnumerablePropertiesTooltip=Não mostrar propriedades não-enumeráveis
+NoMembersWarning=Não existem propriedades para exibição no objeto.
+NewWatch=Nova expressão de vigia…
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Adicionar Vigia
+watch.tip.Add_Watch=Adicionar a seleção/objeto ao painel lateral Observação para análise
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Copiar Código-fonte
+script.tip.Copy_Source_Code=Copiar o código-fonte selecionado para a Área de Transferência
+Use_hash_plus_number_to_go_to_line=Usar #<número> para ir para a linha
+CopyValue=Copiar Valor
+dom.tip.Copy_Value=Copiar o valor da propriedade para a Área de Transferência
+Copy_Name=Copiar Nome
+dom.tip.Copy_Name=Copiar o nome da propriedade para a Área de Transferência
+Copy_Path=Copiar Caminho
+dom.tip.Copy_Path=Copiar o caminho da propriedade
+NewProperty=Nova Propriedade…
+EditProperty=Editar Propriedade…
+dom.tip.Edit_Property=Editar o valor da propriedade
+EditVariable=Editar Variável…
+stack.tip.Edit_Variable=Editar o valor da variável
+EditWatch=Editar Vigia…
+watch.tip.Edit_Watch=Editar o valor da expressão de observação
+DeleteProperty=Apagar Propriedade
+dom.tip.Delete_Property=Apagar a propriedade
+DeleteWatch=Apagar Vigia
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Eliminar a expressão de observação
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Colocar Ponto de Paragem
+script.tip.Set_Breakpoint=Comuta a colocação de um ponto de paragem na linha corrente
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Editar Condição do Ponto de Paragem…
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=Não existem pontos de paragem configurados nesta página.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Mostrar Apenas Estilos Aplicados
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Mostrar CSS do User Agent (Navegador)
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Expandir Propriedades Curtas
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Ordenar alfabeticamente
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Mostrar estilos específicos da Mozilla
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Prima qualquer tecla para filtrar a lista
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=espaçamento
+LayoutBorder=borda
+LayoutMargin=margem
+LayoutPosition=posição
+LayoutAdjacent=adjacente
+position=posição
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Mostrar Regras e Guias
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Net panel
+Loading=A Carregar…
+Headers=Cabeçalhos
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Reiniciar Cabeçalho
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=URL do pedido e método HTTP usado.
+net.header.Status=Estado
+net.header.Status_Tooltip=Estado da resposta recebida.
+net.header.Domain=Domínio
+net.header.Domain_Tooltip=Domínio do pedido executado.
+net.header.Size=Tamanho
+net.header.Size_Tooltip=Tamanho da resposta recebida.
+net.header.Timeline=Eixo temporal
+net.header.Timeline_Tooltip=Informação detalhada de temporização sobre a viagem pedido-resposta.
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=Pontos de Paragem XHR
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Parar em XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=ver código-fonte
+net.headers.pretty_print=impressão bonita
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Média
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Envio (Post)
+Put=Envio (Put)
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Resposta
+URLParameters=Parâmetros
+Cache=Cache
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Ordenar por chave
+jsonviewer.do_not_sort=Não ordenar
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Cabeçalhos do Pedido
+ResponseHeaders=Cabeçalhos da Resposta
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=O limite de registo do Firebug foi atingido. %1$S entrada não exibida.;O limite de registo do Firebug foi atingido. %1$S entradas não exibidas.
+LimitPrefs=Preferências
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Para modificar o registo altere: %S
+Refresh=Refrescar
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Abrir num novo separador
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Abrir Resposta num Novo Separador
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Perfil
+ProfilerStarted=O criador de perfil está em execução. Clique em \'Perfil\' de novo para ver o relatório.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S chamada);(%1$Sms, %2$S chamadas)
+NothingToProfile=Nenhuma atividade para criar perfil.
+PercentTooltip=Percentagem de tempo despendido nesta função.
+CallsHeaderTooltip=Número de vezes que a função foi invocada.
+OwnTimeHeaderTooltip=Tempo despendido na função, excluindo chamadas internas.
+TimeHeaderTooltip=Tempo despendido na função, incluindo chamadas internas.
+AvgHeaderTooltip=Tempo médio, incluindo chamadas a funções.
+MinHeaderTooltip=Tempo mínimo, incluindo chamadas a funções.
+MaxHeaderTooltip=Tempo máximo, incluindo chamadas a funções.
+ProfileButton.Enabled.Tooltip=Criar perfil do tempo de execução do JavaScript.
+ProfileButton.Disabled.Tooltip=Criar perfil do tempo de execução do JavaScript (painel Script tem de estar ativo).
+Function=Função
+Percent=Percentagem
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Chamadas
+OwnTime=Tempo Próprio
+Time=Tempo
+Avg=Média
+Min=Mín.
+Max=Máx.
+File=Ficheiro
+# Support for standard actions.
+Copy=Copiar
+Cut=Cortar
+Remove=Remover
+Delete=Delete
+Paste=Colar
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Copiar innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Copiar XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Copiar Caminho do CSS
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Copiar Localização
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Copiar Localização com Parâmetros
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Copiar Cabeçalhos do Pedido
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Copiar Cabeçalhos da Resposta
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Copiar Corpo da Resposta
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Erro na Cópia
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Copiar Função
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Registar Chamadas para \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Registar Eventos
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Ativo
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=A consola do Firebug não suporta \'%S\'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=A linha de comandos do Firebug não suporta \'%S\'
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Desativar Parar em Todos os Erros
+console.Break_On_All_Errors=Parar em Todos os Erros
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Parar Neste Erro
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=O JavaScript está desativado nas preferências do Firefox. Se pretende usar o painel Consola, então por favor ative esta opção em \'Ferramentas\' -> \'Opções\' -> \'Conteúdo\' -> \'Ativar JavaScript\'
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=A linha de comandos do Firebug está desativada para páginas XML. Pode <a>alterar para HTML</a> para a ativar.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Corpo da Resposta
+net.sizeinfo.Post_Body=Corpo do Envio (Post)
+net.sizeinfo.Total_Sent=Total Enviado
+net.sizeinfo.Total_Received=Total Recebido
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Painel de rede ativado. Quaisquer pedidos enquanto o painel estiver inactivo não serão exibidos.
+net.responseSizeLimitMessage=Foi atingido o limite de tamanho de resposta do Firebug. Clique <a>aqui</a> para abrir a resposta completa num novo separador do Firebug.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=O limite de tamanho de pedido foi atingido pelo Firebug.
+net.Break_On_XHR=Parar em XHR
+net.label.Parameters=Parâmetros
+net.label.Parts=Partes
+net.label.Source=Fonte
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Desativar a Cache do Navegador
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Mostrar Eventos de Desenho
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Parar no Próximo
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Mostrar Cabeçalhos HTTP
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S pedido;%1$S pedidos
+FromCache=da cache
+StopLoading=Parar Carregamento
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Enorme Quantidade de Dados)
+ShowComputedStyle=Mostrar Estilo Computado
+StyleGroup-text=Texto
+StyleGroup-background=Fundo
+StyleGroup-box=Modelo de Caixa
+StyleGroup-layout=Exibição
+StyleGroup-other=Outro
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Copiar Côr
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Copiar Localização da Imagem
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Abrir Imagem num Novo Separador
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Omitir Barra de Ferramentas da Pilha
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copiar Declaração da Regra
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Copiar Declaração de Estilo
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Erro;%1$S Erros
+moduleManager.title=o painel %S está desativado
+moduleManager.desc3=Utilize o ícone do Firebug na barra de estado para ativar e desativar todos os painéis em simultâneo. Utilize o menu de cada separador para controlo individual.
+moduleManager.Enable=Ativar
+Suspend_Firebug=Suspender Firebug
+Resume_Firebug=Resumir Firebug
+Reset_Panels_To_Disabled=Reiniciar Painéis para Desativado
+Open_Console=Abrir Consola
+Open_Console_Tooltip=Abrir Consola de Trace para o Firebug
+Scope_Chain=Cadeia de Contexto
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=With
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Chamada
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Janela
+Logs=Registos
+Options=Opções
+Copy_Stack=Copiar Pilha
+Copy Exception=Copiar Exceção
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=A bloquear
+requestinfo.Resolving=A efetuar procura DNS
+requestinfo.Connecting=A Ligar
+requestinfo.Sending=A enviar
+requestinfo.Waiting=A esperar
+requestinfo.Receiving=A receber
+requestinfo.ContentLoad=\'DOMContentLoaded\' (evento)
+requestinfo.WindowLoad=\'load\' (evento)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Pesquisa do Firebug
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Próximo
+search.tip.Next=Search for the next match
+search.Previous=Anterior
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Forçar Sensível à Capitalização
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Múltiplos Ficheiros
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Usar Expressão Regular
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=Seletor CSS
+search.net.Headers=Cabeçalhos
+search.net.Parameters=Parâmetros
+search.net.Response_Bodies=Corpos da Resposta
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persistir
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Mostrar Todas as Entradas do Registo
+firebug.console.Errors=Erros
+firebug.console.Filter_by_Errors=Filtrar por Erros
+firebug.console.Warnings=Avisos
+firebug.console.Filter_by_Warnings=Filtrar por Aviso
+firebug.console.Info=Informação
+firebug.console.Filter_by_Info=Filtrar por Informação
+firebug.console.Debug_Info=Informação de Depuração
+firebug.console.Filter_by_Debug_Info=Filtrar por Informação de Depuração
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Abrir o Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Esconder Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Ativar Todos os Painéis
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Desativar Todos os Painéis
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Personalizar Atalhos
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Opções
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Ativar Melhorias de Acessibilidade
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Reiniciar Todas as Opções do Firebug
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug Online
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Mostrar Contagem de Erros
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Tamanho do Texto
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Aumentar Tamanho do Texto
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Diminuir Tamanho do Texto
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Tamanho do Texto Normal
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Sítio do Firebug…
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Documentação…
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Atalhos de Teclado…
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Grupo de Discussão…
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Reportar Erros…
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Contribuir…
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Sobre…
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Procurar
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Voltar a Inserir Comando
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Alternar Inspeção
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Ativar/desativar Caixa de Informação Rápida
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Alternar Criação de Perfil
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Enfoque na Linha de Comandos
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Enfoque na Pesquisa do Firebug
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Enfoque no Editor de Vigias
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Enfoque na Localização
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Próximo Objeto
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Objeto Anterior
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Personalizar Teclas do Firebug
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Abrir o Firebug numa Nova Janela
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Comutar para o painel à esquerda do Firebug
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Comutar para o painel à direita do Firebug
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Abrir Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Separador do Firebug anterior
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Limpar Consola
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Abrir Consola de Trace
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Regressar
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Avançar
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Aumentar Tamanho do Texto
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Diminuir Tamanho do Texto
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Tamanho do Texto Normal
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Seletor de Painéis
+customizeShortcuts=Combinações de Teclas do Firebug
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=ferramentas do painel
+a11y.labels.firebug_panels=Painéis do Firebug
+a11y.labels.firebug_side_panels=painéis laterais do Firebug
+a11y.labels.firebug_window=janela do Firebug
+a11y.labels.firebug_status=estado do Firebug
+a11y.labels.reset=reiniciar
+a11y.labels.reset_shortcut=reiniciar atalho %S
+aria.labels.inactive_panel=painel inativo
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=registar linhas
+a11y.labels.call_stack=pilha de chamadas
+a11y.labels.document_structure=estrutura do documento
+a11y.labels.title_panel=painel %S
+a11y.labels.title_side_panel=painel lateral %S
+a11y.labels.cached=cached
+aria.labels.stack_trace=trace da pilha
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=espaçamento
+a11y.layout.border=borda
+a11y.layout.margin=margem
+a11y.layout.position=posição
+a11y.layout.position_top=posição topo
+a11y.layout.position_right=posição direita
+a11y.layout.position_bottom=posição fundo
+a11y.layout.position_left=posição esquerda
+a11y.layout.margin_top=margem superior
+a11y.layout.margin_right=margem direita
+a11y.layout.margin_bottom=margem inferior
+a11y.layout.margin_left=margem esquerda
+a11y.layout.border_top=borda superior
+a11y.layout.border_right=borda direita
+a11y.layout.border_bottom=borda inferior
+a11y.layout.border_left=borda esquerda
+a11y.layout.padding_top=espaçamento superior
+a11y.layout.padding_right=espaçamento direito
+a11y.layout.padding_bottom=espaçamento inferior
+a11y.layout.padding_left=espaçamento esquerdo
+a11y.layout.top=superior
+a11y.layout.right=direita
+a11y.layout.bottom=inferior
+a11y.layout.left=esquerda
+a11y.layout.width=largura
+a11y.layout.height=altura
+a11y.layout.size=tamanho
+a11y.layout.z-index=índice-z (profundidade)
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=retângulo envolvente no cliente
+a11y.descriptions.press_enter_to_edit_values=Pressione Enter seguido de Tab para editar valores individuais
+a11y.labels.style_rules=regras de estilo
+aria.labels.inherited_style_rules=regras de estilo herdadas
+a11y.labels.computed_styles=estilos calculados
+a11y.labels.dom_properties=propriedades DOM
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=editor em linha
+a11y.labels.value_for_attribute_in_element=valor para o atributo %S no elemento %S
+a11y.labels.attribute_for_element=atributo para o elemento %S
+a11y.labels.text_contents_for_element=conteúdo de texto para o elemento %S
+a11y.labels.defined_in_file=definido em %S
+a11y.labels.declarations_for_selector=declarações de estilo para o seletor \"%S\"
+a11y.labels.property_for_selector=propriedade CSS para o seletor: %S
+a11y.labels.value_property_in_selector=%S valor de propriedade para o seletor %S
+a11y.labels.css_selector=seletor CSS
+a11y.labels.source_code_for_file=código-fonte para o ficheiro %S
+a11y.labels.press_enter_to_add_new_watch_expression=pressione Enter para adicionar uma nova expressão de vigia
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=sobrescrito
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=tem ponto de paragem condicional
+a11y.updates.has_disabled_break_point=tem ponto de paragem desativado
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script suspenso na linha %S de %S, ficheiro %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=correspondência encontrada para %S em %S linhas do registo
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=correspondência encontrada para %S na linha %S de %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=correspondência encontrada para %S no elemento %S no caminho %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=correspondência encontrada para %S no atributo %S=%S do elemento %S no caminho %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=correspondência encontrada para %S no conteúdo de texto: %S do elemento %S no caminho %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=correspondência encontrada para %S no seletor %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=correspondência encontrada para \"%S\" na declaração de estilo %S no seletor %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=correspondência encontrada para %S na propriedade DOM %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=correspondência encontrada para \"%S\" em %S, %S: %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=correspondência encontrada para %S no sumário de rede, linha: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=sem correspondências encontradas para \"%S\"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Tem a certeza que pretende reiniciar todas as opções do Firebug para o estado por omissão?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=A consola tem de estar ativa
+warning.Command_line_blocked?=Linha de comandos bloqueada?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Recarregar para ativar a consola de janela
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=O recurso deste URL não é texto
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Regressar para este painel
+firebug.history.Stay_on_this_panel=Manter neste painel
+firebug.history.Go_forward_to_this_panel=Avançar para este painel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Regressar
+firebug.history.Go_forward=Avançar
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=O painel Script estava inativo durante o carregamento da página
+script.suggestion.inactive_during_page_load2=<a>Recarregue</a> para ver todas as fontes
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=O JavaScript não está ativo
+script.suggestion.javascript_not_enabled=Veja Firefox > Ferramentas > Opções > Conteúdo > Ativar Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Ativar JavaScript
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Todos os scripts foram filtrados
+script.suggestion.all_scripts_filtered=Veja a definição Filtro de Scripts na barra de ferramentas ou a opção \"Mostrar Fontes do Chrome\"
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=Não existe JavaScript nesta página
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=O depurador já está ativo
+script.suggestion.debugger_active=O depurador está parado num ponto de paragem doutra página.
+script.button.Go_to_that_page=Ir para essa página
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Fechar
+firebug.View=Ver
+firebug.Help=Ajuda
+firebug.Run=Executar
+firebug.Copy=Copiar
+firebug.History=Histórico
+firebug.Run_the_entered_command=Executar o comando inserido
+firebug.Clear_the_Command_Editor=Limpar o Editor de Comandos
+firebug.Copy_the_script_as_a_bookmarklet=Copiar o script como um bookmarklet
+firebug.Insert_a_previously_entered_command=Inserir um comando inserido anteriormente
+firebug.AlwaysOpenInWindow=Abrir Sempre numa Nova Janela
+firebug.OpenWith=Abrir no Editor
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Sítios…
+firebug.Configure_Editors=Configurar Editores
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Inspecionar
+firebug.InspectElement=Inspecionar Elemento
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Parar em Erros
+firebug.InspectTooltip=Clique num elemento da página para inspecionar
+firebug.EditHTMLTooltip=Editar este HTML
+firebug.Profile=Perfil
+firebug.Clear=Limpar
+firebug.ClearConsole=Limpar Consola
+firebug.ClearTooltip=Limpar a consola
+firebug.All=Tudo
+firebug.Images=Imagens
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Editores Configurados no Firebug
+editors.Editor=Editor
+editors.Executable=Executável
+editors.Launch_Arguments=Parâmetros de Lançamento
+editors.Add=Adicionar
+editors.Remove=Remover
+editors.Change=Alterar
+editors.Move_Up=Mover para Cima
+editors.Close=Fechar
+editors.Browse=Navegar…
+changeEditor.Editor_Configuration=Configuração do Editor
+changeEditor.Name=Nome:
+changeEditor.Executable=Executável:
+changeEditor.CmdLine=Parâmetros:
+changeEditor.Supplied_arguments=Parâmetros providenciados pelo Firebug:
+changeEditor.URL_of_file=URL do ficheiro (se %url não estiver presente, %file será adicionado por omissão)
+changeEditor.Path_to_local_file=Caminho para o ficheiro local (ou para a cópia temporária)
+changeEditor.Line_number=Número da linha (se disponível)
+changeEditor.Invalid_Application_Path=Caminho da Aplicação Inválido
+changeEditor.Application_does_not_exist=A aplicação especificada não existe!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Editar
+firebug.css.sourceEdit=Editar Código-fonte
+firebug.css.sourceEdit.tooltip=Código-fonte da folha de estilos na área de texto de edição com tal como carregado pelo navegador
+firebug.css.liveEdit=Edição ao Vivo
+firebug.css.liveEdit.tooltip=CSS na Área de texto de edição extraído do navegador
+firebug.EditCSSTooltip=Editar esta folha de estilos
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=As páginas não são memorizadas no Modo de Navegação Privada
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Mostrar Notificações de Paragem
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=Pode desativar/ativar notificações de paragem no <a>menu do separador do painel</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicando no botão \'Desativar\' tem precedência sobre \'debugger\' com um ponto de paragem desativado.
+firebug.bon.tooltip.disableDebuggerKeyword2=Cria um ponto de paragem desativado
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=Não existem objetos-filho
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=mais
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item no Armazenamento;%1$S itens no Armazenamento
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Propriedades do Objeto
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(não existe forma de completar)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=O objeto URL foi provavelmente revogado usando o método \'revokeObjectURL\'.
+firebug.failedToPreviewImageURL=Falha ao carregar o URL desejado.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/ro-RO/cookies.properties b/locale/ro-RO/cookies.properties
index 8c9c48a..1014c5b 100644
--- a/locale/ro-RO/cookies.properties
+++ b/locale/ro-RO/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookie-uri
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Sesiune
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Acceptă cookie-uri de la saituri
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Curăță cookie-urile când se respinge accesul
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Taie
-cookies.Copy=Copiază
-cookies.CopyAll=Copiază tot
-cookies.Paste=Lipește
-cookies.Delete=Șterge
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Editează
-cookies.Accept=Acceptă
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reset Header
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=Puteți specifica ce saituri web au sau nu au întotdeauna permisiunea de a seta cookie-uri.\nTastați exact adresa saitului pe care doriți să-l gestionați și apoi apăsați Blochează,\nPermite pentru sesiune sau Permite.
-cookies.ExceptionsTitle=Excepții - Cookie-uri
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Suport pentru monitorizarea de cookie-uri
-cookies.HostEnable=Activează panoul Cookie-uri pentru %S
-cookies.HostDisable=Dezactivează panoul Cookie-uri pentru %S
-cookies.Permissions=Activează sau dezactivează panoul Cookie-uri
-cookies.PermissionsIntro=Alegeți saiturile web pe care panoul Cookie-uri va fi activat sau dezactivat.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=Pagini de sistem
-cookies.LocalFiles=Fișiere locale
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Doriți să eliminați toate cookie-urile din listă?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Elimină toate cookie-urile din listă.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Creează un cookie nou pentru %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Valoare
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Gestionează permisiunile pentru cookie-uri pentru %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=Toate cookie-urile au fost eliminate.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookie-uri respinse:
-cookies.console.nocookiesreceived=Niciun cookie primit
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=șters
-cookies.console.added=adăugat
-cookies.console.changed=schimbat
-cookies.console.cleared=curățat
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domeniu
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Securizat
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Acceptat
-cookies.status.downgraded=Retrogradat
-cookies.status.flagged=Marcat
-cookies.status.rejected=Respins
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Valoare
-cookies.info.rawdatatab.Raw_Data=Date brute
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Implicit (Acceptă cookie-urile pentru sesiune)
-cookies.default.thirdPartySession=Implicit (Acceptă cookie-urile pentru sesiune)
-cookies.default.thirdParty=Implicit (Acceptă cookie-urile)
-cookies.default.allow=Implicit (Acceptă cookie-urile)
-cookies.default.deny=Implicit (Respinge cookie-urile)
-cookies.default.warn=Implicit (Avertizare înainte de a accepta un cookie)
-cookies.host.session=Acceptă cookie-uri în această sesiune de la %S
-cookies.host.accept=Acceptă cookie-uri de la %S
-cookies.host.reject=Respinge cookie-uri de la %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Numele de cookie nu este valid.
-cookies.edit.invalidhost=Gazda cookie-ului nu este validă.
-cookies.edit.invalidpath=Calea cookie-ului nu este validă.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Nume
-cookies.header.value=Valoare
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domeniu
-cookies.header.size=Mărime
-cookies.header.path=Cale
-cookies.header.expires=Expiră la
-cookies.header.security=Securitate
-cookies.header.httponly=DoarHTTP
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Numele cookie-ului
-cookies.header.value.tooltip=Valoarea stocată în cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domeniul stocat în cookie
-cookies.header.size.tooltip=Mărimea cookie-ului stocat
-cookies.header.path.tooltip=Directorul unde cookie-ul este activ
-cookies.header.expires.tooltip=Data expirării cookie-ului
-cookies.header.security.tooltip=Arată dacă un cookie este securizat sau nu
-cookies.header.httponly.tooltip=Arată dacă un cookie e doar pentru HTTP
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Cookie-uri primite
-cookies.netinfo.Sent_Cookies=Cookie-uri trimise
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Filtru pe cale
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookie-uri
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Exportă toate cookie-urile...
-cookies.export.Export_All_Cookies_Tooltip=Exportă toate cookie-urile navigatorului într-un fișier cookies.txt
-cookies.export.Export_For_Site=Exportă cookie-urile pentru acest sait...
-cookies.export.Export_For_Site_Tooltip=Exportă cookie-urile pentru %S în fișierul cookies.txt
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Elimină cookie-urile
-cookies.Create=Creează un cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Unelte
-cookies.ToolsTooltip=Unelte
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Arată toate cookie-urile...
-cookies.ViewAllTooltip=Deschide gestionarul de cookie-uri
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Permisiuni pentru saituri web...
-cookies.ViewExceptionsTooltip=Vedeți lista de saituri web permise sau nepermise
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filtrare
-cookies.FilterTooltip=Folosește opțiunile date pentru a filtra lista de cookie-uri.
-cookies.filter.byPath=Filtrează cookie-urile după calea curentă
-cookies.filter.byPathTooltip=Arată doar cookie-uri care se potrivesc cu calea curentă.
-cookies.filter.showRejectedCookies=Arată cookie-urile respinse
-cookies.filter.showRejectedCookiesTooltip=Afișează în listă și cookie-urile respinse.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Editare cookie
-cookies.edit.name.label=Nume:
-cookies.edit.domain.label=Gazdă:
-cookies.edit.path.label=Cale:
-cookies.edit.expire.label=Expiră la:
-cookies.edit.value.label=Valoare:
-cookies.edit.secure.label=Cookie securizat
-cookies.edit.httponly.label=Doar HTTP
-cookies.edit.session.label=Sesiune
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookie-uri
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Sesiune
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Acceptă cookie-uri de la saituri
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Curăță cookie-urile când se respinge accesul
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Taie
+cookies.Copy=Copiază
+cookies.CopyAll=Copiază tot
+cookies.Paste=Lipește
+cookies.Delete=Șterge
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Editează
+cookies.Accept=Acceptă
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reset Header
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=Puteți specifica ce saituri web au sau nu au întotdeauna permisiunea de a seta cookie-uri.\nTastați exact adresa saitului pe care doriți să-l gestionați și apoi apăsați Blochează,\nPermite pentru sesiune sau Permite.
+cookies.ExceptionsTitle=Excepții - Cookie-uri
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Suport pentru monitorizarea de cookie-uri
+cookies.HostEnable=Activează panoul Cookie-uri pentru %S
+cookies.HostDisable=Dezactivează panoul Cookie-uri pentru %S
+cookies.Permissions=Activează sau dezactivează panoul Cookie-uri
+cookies.PermissionsIntro=Alegeți saiturile web pe care panoul Cookie-uri va fi activat sau dezactivat.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=Pagini de sistem
+cookies.LocalFiles=Fișiere locale
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Doriți să eliminați toate cookie-urile din listă?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Elimină toate cookie-urile din listă.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Creează un cookie nou pentru %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Valoare
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Gestionează permisiunile pentru cookie-uri pentru %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=Toate cookie-urile au fost eliminate.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookie-uri respinse:
+cookies.console.nocookiesreceived=Niciun cookie primit
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=șters
+cookies.console.added=adăugat
+cookies.console.changed=schimbat
+cookies.console.cleared=curățat
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domeniu
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Securizat
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Acceptat
+cookies.status.downgraded=Retrogradat
+cookies.status.flagged=Marcat
+cookies.status.rejected=Respins
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Valoare
+cookies.info.rawdatatab.Raw_Data=Date brute
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Implicit (Acceptă cookie-urile pentru sesiune)
+cookies.default.thirdPartySession=Implicit (Acceptă cookie-urile pentru sesiune)
+cookies.default.thirdParty=Implicit (Acceptă cookie-urile)
+cookies.default.allow=Implicit (Acceptă cookie-urile)
+cookies.default.deny=Implicit (Respinge cookie-urile)
+cookies.default.warn=Implicit (Avertizare înainte de a accepta un cookie)
+cookies.host.session=Acceptă cookie-uri în această sesiune de la %S
+cookies.host.accept=Acceptă cookie-uri de la %S
+cookies.host.reject=Respinge cookie-uri de la %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Numele de cookie nu este valid.
+cookies.edit.invalidhost=Gazda cookie-ului nu este validă.
+cookies.edit.invalidpath=Calea cookie-ului nu este validă.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Nume
+cookies.header.value=Valoare
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domeniu
+cookies.header.size=Mărime
+cookies.header.path=Cale
+cookies.header.expires=Expiră la
+cookies.header.security=Securitate
+cookies.header.httponly=DoarHTTP
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Numele cookie-ului
+cookies.header.value.tooltip=Valoarea stocată în cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domeniul stocat în cookie
+cookies.header.size.tooltip=Mărimea cookie-ului stocat
+cookies.header.path.tooltip=Directorul unde cookie-ul este activ
+cookies.header.expires.tooltip=Data expirării cookie-ului
+cookies.header.security.tooltip=Arată dacă un cookie este securizat sau nu
+cookies.header.httponly.tooltip=Arată dacă un cookie e doar pentru HTTP
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Cookie-uri primite
+cookies.netinfo.Sent_Cookies=Cookie-uri trimise
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Filtru pe cale
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookie-uri
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Exportă toate cookie-urile...
+cookies.export.Export_All_Cookies_Tooltip=Exportă toate cookie-urile navigatorului într-un fișier cookies.txt
+cookies.export.Export_For_Site=Exportă cookie-urile pentru acest sait...
+cookies.export.Export_For_Site_Tooltip=Exportă cookie-urile pentru %S în fișierul cookies.txt
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Elimină cookie-urile
+cookies.Create=Creează un cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Unelte
+cookies.ToolsTooltip=Unelte
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Arată toate cookie-urile...
+cookies.ViewAllTooltip=Deschide gestionarul de cookie-uri
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Permisiuni pentru saituri web...
+cookies.ViewExceptionsTooltip=Vedeți lista de saituri web permise sau nepermise
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filtrare
+cookies.FilterTooltip=Folosește opțiunile date pentru a filtra lista de cookie-uri.
+cookies.filter.byPath=Filtrează cookie-urile după calea curentă
+cookies.filter.byPathTooltip=Arată doar cookie-uri care se potrivesc cu calea curentă.
+cookies.filter.showRejectedCookies=Arată cookie-urile respinse
+cookies.filter.showRejectedCookiesTooltip=Afișează în listă și cookie-urile respinse.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Editare cookie
+cookies.edit.name.label=Nume:
+cookies.edit.domain.label=Gazdă:
+cookies.edit.path.label=Cale:
+cookies.edit.expire.label=Expiră la:
+cookies.edit.value.label=Valoare:
+cookies.edit.secure.label=Cookie securizat
+cookies.edit.httponly.label=Doar HTTP
+cookies.edit.session.label=Sesiune
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/ro-RO/firebug-amo.properties b/locale/ro-RO/firebug-amo.properties
index 8041cca..bdee35b 100644
--- a/locale/ro-RO/firebug-amo.properties
+++ b/locale/ro-RO/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
-firebug.amo.description=Firebug îți oferă în Firefox o grămadă de unelte de dezvoltare în timp ce navighezi. Poți edita, depana, monitoriza CSS-ul, HTML și codul JavaScript în timp real în orice pagină.\\n\\nVizitează saitul Firebug pentru documentație, capturi de ecran și forumuri de discuții: http://getfirebug.com
-firebug.amo.developer.comments=Dacă aveți probleme, vă rugăm să citiți întrebările frecvente despre FireBug.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
+firebug.amo.description=Firebug îți oferă în Firefox o grămadă de unelte de dezvoltare în timp ce navighezi. Poți edita, depana, monitoriza CSS-ul, HTML și codul JavaScript în timp real în orice pagină.\\n\\nVizitează saitul Firebug pentru documentație, capturi de ecran și forumuri de discuții: http://getfirebug.com
+firebug.amo.developer.comments=Dacă aveți probleme, vă rugăm să citiți întrebările frecvente despre FireBug.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/ro-RO/firebug-tracing.properties b/locale/ro-RO/firebug-tracing.properties
index 1e4275a..ad34199 100644
--- a/locale/ro-RO/firebug-tracing.properties
+++ b/locale/ro-RO/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Deschide urmărirea din Firebug
-Always_Open_Firebug_Tracing=Deschide întotdeauna urmărirea în Firebug
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Urmărire
-tracing.Show_Scope_Variables=Arată variabilele din context
-tracing.Show_Time=Arată timpul
-tracing.tab.Stack=Stivă
-tracing.tab.Exception=Excepție
-tracing.tab.Properties=Proprietăți
-tracing.tab.Scope=Context
-tracing.tab.Response=Răspuns
-tracing.tab.Source=Sursă
-tracing.tab.Interfaces=Interfețe
-tracing.tab.Object=Obiect
-tracing.tab.Event=Eveniment
-tracing.cmd.Clear=Curăță
-tracing.cmd.tip.Clear=Elimină toate mesajele
-tracing.cmd.Find=Găsește
-tracing.cmd.tip.Find=Găsește text
-tracing.cmd.Bookmark=Semn de carte
-tracing.cmd.tip.Bookmark=Inserează un semn de carte
-tracing.cmd.Restart=Repornește Firefox
-tracing.cmd.tip.Restart=Repornește Firefox
-tracing.cmd.Exit=Ieși din Firefox
-tracing.cmd.tip.Exit=Ieși din Firefox
-tracing.cmd.Save=Salvează în fișier
-tracing.cmd.tip.Save=Salvează jurnalele într-un fișier
-tracing.cmd.Load=Încarcă din fișier
-tracing.cmd.tip.Load=Încarcă jurnalele dintr-un fișier
-tracing.cmd.Expand_All=Expandează tot
-tracing.cmd.Collapse_All=Pliază tot
-tracing.cmd.Tools=Tools
-tracing.cmd.tip.Tools=Tools
-tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.Open_Profile_Directory=Open Profile Directory
-tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
-tracing.option.A11Y_Description=Accessibility issues
-tracing.option.ACTIVATION_Description=Firebug activation
-tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
-tracing.option.ANNOTATIONS_Description=Firebug website annotation
-tracing.option.BP_Description=Breakpoints
-tracing.option.CACHE_Description=Source cache
-tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
-tracing.option.COMPILATION_UNITS_Description=Script compilation units
-tracing.option.CONSOLE_Description=Console Panel
-tracing.option.CSS_Description=CSS parsing
-tracing.option.DISPATCH_Description=Event dispatching
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate creation
-tracing.option.EDITOR_Description=Inline Editor & Autocompleter
-tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Internal Firebug errors
-tracing.option.EVAL_Description=Script evaluation
-tracing.option.FBS_BP_Description=Firebug service breakpoints
-tracing.option.FBS_CREATION_Description=Firebug service script creation
-tracing.option.FBS_ERRORS_Description=Firebug service errors
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
-tracing.option.FBS_FUNCTION_Description=Firebug service function
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
-tracing.option.FBS_SRCUNITS_Description=Firebug service source units
-tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
-tracing.option.FUNCTION_NAMES_Description=JavaScript function names
-tracing.option.HISTORY_Description=Firebug Navigation History
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP request observer
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug initialization
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON viewer
-tracing.option.LINETABLE_Description=Script line table
-tracing.option.LOCALE_Description=Localization
-tracing.option.LOCATIONS_Description=Source locations
-tracing.option.NET_Description=Net Panel
-tracing.option.NET_EVENTS_Description=Network events
-tracing.option.OPTIONS_Description=Firebug preferences
-tracing.option.PANELS_Description=Panels
-tracing.option.SHORTCUTS_Description=Keyboard shortcuts
-tracing.option.SOURCEFILES_Description=JavaScript source files
-tracing.option.SPY_Description=XMLHttpRequests observer
-tracing.option.STACK_Description=JavaScript call stack
-tracing.option.STORAGE_Description=Settings storage
-tracing.option.SVGVIEWER_Description=SVG viewer
-tracing.option.FONTS_Description=Fonts information and font viewer
-tracing.option.TOOLTIP_Description=Start Button tooltip
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging user interface
-tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
-tracing.option.XMLVIEWER_Description=XML viewer
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Deschide urmărirea din Firebug
+Always_Open_Firebug_Tracing=Deschide întotdeauna urmărirea în Firebug
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Urmărire
+tracing.Show_Scope_Variables=Arată variabilele din context
+tracing.Show_Time=Arată timpul
+tracing.tab.Stack=Stivă
+tracing.tab.Exception=Excepție
+tracing.tab.Properties=Proprietăți
+tracing.tab.Scope=Context
+tracing.tab.Response=Răspuns
+tracing.tab.Source=Sursă
+tracing.tab.Interfaces=Interfețe
+tracing.tab.Object=Obiect
+tracing.tab.Event=Eveniment
+tracing.cmd.Clear=Curăță
+tracing.cmd.tip.Clear=Elimină toate mesajele
+tracing.cmd.Find=Găsește
+tracing.cmd.tip.Find=Găsește text
+tracing.cmd.Bookmark=Semn de carte
+tracing.cmd.tip.Bookmark=Inserează un semn de carte
+tracing.cmd.Restart=Repornește Firefox
+tracing.cmd.tip.Restart=Repornește Firefox
+tracing.cmd.Exit=Ieși din Firefox
+tracing.cmd.tip.Exit=Ieși din Firefox
+tracing.cmd.Save=Salvează în fișier
+tracing.cmd.tip.Save=Salvează jurnalele într-un fișier
+tracing.cmd.Load=Încarcă din fișier
+tracing.cmd.tip.Load=Încarcă jurnalele dintr-un fișier
+tracing.cmd.Expand_All=Expandează tot
+tracing.cmd.Collapse_All=Pliază tot
+tracing.cmd.Tools=Tools
+tracing.cmd.tip.Tools=Tools
+tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.Open_Profile_Directory=Open Profile Directory
+tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
+tracing.option.A11Y_Description=Accessibility issues
+tracing.option.ACTIVATION_Description=Firebug activation
+tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
+tracing.option.ANNOTATIONS_Description=Firebug website annotation
+tracing.option.BP_Description=Breakpoints
+tracing.option.CACHE_Description=Source cache
+tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
+tracing.option.COMPILATION_UNITS_Description=Script compilation units
+tracing.option.CONSOLE_Description=Console Panel
+tracing.option.CSS_Description=CSS parsing
+tracing.option.DISPATCH_Description=Event dispatching
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate creation
+tracing.option.EDITOR_Description=Inline Editor & Autocompleter
+tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Internal Firebug errors
+tracing.option.EVAL_Description=Script evaluation
+tracing.option.FBS_BP_Description=Firebug service breakpoints
+tracing.option.FBS_CREATION_Description=Firebug service script creation
+tracing.option.FBS_ERRORS_Description=Firebug service errors
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
+tracing.option.FBS_FUNCTION_Description=Firebug service function
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
+tracing.option.FBS_SRCUNITS_Description=Firebug service source units
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
+tracing.option.FUNCTION_NAMES_Description=JavaScript function names
+tracing.option.HISTORY_Description=Firebug Navigation History
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request observer
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug initialization
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON viewer
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Localization
+tracing.option.LOCATIONS_Description=Source locations
+tracing.option.NET_Description=Net Panel
+tracing.option.NET_EVENTS_Description=Network events
+tracing.option.OPTIONS_Description=Firebug preferences
+tracing.option.PANELS_Description=Panels
+tracing.option.SHORTCUTS_Description=Keyboard shortcuts
+tracing.option.SOURCEFILES_Description=JavaScript source files
+tracing.option.SPY_Description=XMLHttpRequests observer
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Settings storage
+tracing.option.SVGVIEWER_Description=SVG viewer
+tracing.option.FONTS_Description=Fonts information and font viewer
+tracing.option.TOOLTIP_Description=Start Button tooltip
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging user interface
+tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
+tracing.option.XMLVIEWER_Description=XML viewer
diff --git a/locale/ro-RO/firebug.properties b/locale/ro-RO/firebug.properties
index e830452..d9b2946 100644
--- a/locale/ro-RO/firebug.properties
+++ b/locale/ro-RO/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Consolă
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Net
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Script
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Stil
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Calculat
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Aspect
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Supraveghere
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Puncte de oprire
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Stivă
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Contexte
-firebug.DetachFirebug=Deschide Firebug într-o fereastră nouă
-firebug.AttachFirebug=Anexează Firebug la fereastra navigatorului
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Deactivated
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=În navigator
-minimized=Minimizat
-enablement.for_all_pages=pentru toate paginile
-enablement.on=Activat
-enablement.off=Dezactivat
-enablement.Panel_activation_status=Panel activation status:
-none=Închis
-Firebug_-_inactive_for_current_website=Firebug - inactive for current website
-Activate_Firebug_for_the_current_website=Activate Firebug for the current website
-Minimized=Minimizat
-Minimize_Firebug=Minimizează Firebug
-On_for_all_web_pages=Pornit pentru toate paginile web
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Curăță lista de activare
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI Location
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Opțiuni Firebug
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Arată toate panourile
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=Arată erorile JavaScript
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Arată avertismentele JavaScript
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Arată erorile CSS
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Arată stiva de urme ale erorilor
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Arată XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Arată erorile Chrome
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Arată mesajele Chrome
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Arată erorile externe
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Arată erorile de rețea
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Avertismente stricte (performanță scăzută)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Command History
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Show Completion List Popup
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Impunere eșuată
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (linia %S)
-LineAndCol=%S (line %S, col %S)
-InstanceLine=%S #%S (linia %S)
-StackItem=%S (%S linia %S)
-SystemItem=<Sistem>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(fără nume)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Arată tot textul
-html.option.tip.Show_Full_Text=Don't crop element contents
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Arată spațiile goale
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Arată comentariile
-html.option.tip.Show_Comments=Show comment nodes
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Evidențiază schimbările
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Extinde schimbările
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Derulează schimbările în vizualizare
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Arată caseta cu informații rapide
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Shade Box Model
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Derulează în vizualizare
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Atribut nou...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Șterge elementul
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Șterge nodul
-html.Delete_Node=Delete the node from the tree
-# Quick Info Box
-quickInfo=Informații rapide
-computedStyle=Stil calculat
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Break On Mutate
-html.Disable_Break_On_Mutate=Disable Break On Mutate
-html.label.Break_On_Text_Change=Întrerupere la schimbarea textului
-html.label.HTML_Breakpoints=Puncte de oprire pentru HTML
-html.label.Break_On_Attribute_Change=Întrerupere la schimbarea atributului
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Întrerupere la adăugarea sau eliminarea de noduri copii
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Întrerupere la eliminarea elementului
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Expand/Contract All
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Break On Property Change
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Disable Break On Property Change
-dom.label.DOM_Breakpoints=Puncte de oprire pentru DOM
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Editează atributul „%S”...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Șterge atributul „%S”
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Moștenit din
-SothinkWarning=Extensia Sothink SWF Catcher împiedică Firebug să funcționeze corect.<br><br>Vă rugăm citiți <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">acest articol din întrebările frecvente despre Firebug</a> pentru ajutor.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
-EditStyle=Editează stilul elementului...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Regulă nouă...
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Proprietate nouă...
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=Editează „%S”...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=Dezactivează „%S”
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=Șterge „%S”
-css.tip.Delete_Prop=Delete the property "%S"
-# Console context menu labels.
-BreakOnThisError=Oprește-te la această eroare
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Oprește-te la orice eroare
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Urmărește throw/catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Folosește ultima linie a sursei pentru numele eval()
-UseMD5ForEvalName=Folosește md5 pentru numele eval()
-# Breakpoints side panel
-Breakpoints=Puncte de oprire
-ErrorBreakpoints=Puncte de oprire la eroare
-LoggedFunctions=Funcții logate
-EnableAllBreakpoints=Activează toate punctele de oprire
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Dezactivează toate punctele de oprire
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Șterge toate punctele de oprire
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Acest punct de oprire va opri doar dacă expresia aceasta e adevărată:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Remove Breakpoint
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Disable Breakpoint
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Enable Breakpoint
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Continuă
-script.balloon.Disable=Dezactivează
-ScriptsFilterStatic=Arată scripturile statice
-ScriptsFilterEval=Arată scripturile statice și eval
-ScriptsFilterEvent=Arată scripturile și evenimentele statice
-ScriptsFilterAll=Arată scripturile statice, eval și evenimentele
-ScriptsFilterStaticShort=static
-ScriptsFilterEvalShort=eval-uri
-ScriptsFilterEventShort=evenimente
-ScriptsFilterAllShort=toate
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Expand All
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Collapse All
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Arată proprietățile definite de utilizator
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Arată funcțiile definite de utilizator
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Arată proprietățile DOM
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Arată funcțiile DOM
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Arată constantele DOM
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=Nu sunt proprietăți de arătat pentru acest obiect.
-NewWatch=Expresie nouă de urmărit...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Adaugă o urmărire
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Copiază sursa
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
-CopyValue=Copiază valoarea
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Copiază numele
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Copiază calea
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Proprietate nouă...
-EditProperty=Editează proprietatea...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Editează variabila...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Editează urmărirea...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Șterge proprietatea
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Șterge urmărirea
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Setează punct de oprire
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Editează condiția punctului de oprire...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=Nu sunt punct de oprire setate în pagină.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Only Show Applied Styles
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Arată User Agent CSS
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Expandează proprietățile prescurtate
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Sort Alphabetically
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Show Mozilla Specific Styles
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Type any key to filter list
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=spațiere
-LayoutBorder=bordură
-LayoutMargin=margine
-LayoutPosition=poziție
-LayoutAdjacent=adiacent
-position=poziție
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Arată riglele și ghizii
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Net panel
-Loading=Încărcare...
-Headers=Antete
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Resetează antetul
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=Adresa cerută și metoda HTTP utilizată.
-net.header.Status=Stare
-net.header.Status_Tooltip=Starea răspunsului primit.
-net.header.Domain=Domeniu
-net.header.Domain_Tooltip=Domeniul cererii executate.
-net.header.Size=Mărime
-net.header.Size_Tooltip=Mărimea răspunsului primit.
-net.header.Timeline=Grafic în timp
-net.header.Timeline_Tooltip=Detailed timing info about request resonse round trip.
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=Puncte de oprire pentru XHR
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Întrerupere la XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=vezi sursa
-net.headers.pretty_print=tipărire elegantă
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Media
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Postare
-Put=Punere
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Răspuns
-URLParameters=Parametri
-Cache=Cache
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Sort by key
-jsonviewer.do_not_sort=Do not sort
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Antete cerere
-ResponseHeaders=Antete răspuns
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
-LimitPrefs=Preferințe
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Pentru a schimba limita, modificați: %S
-Refresh=Reîmprospătare
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Deschide în filă nouă
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Deschide răspunsul într-o filă nouă
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Profilare
-ProfilerStarted=Profilator
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
-NothingToProfile=Nicio activitate de profilat.
-PercentTooltip=Procentajul timpului scurs în această funcție.
-CallsHeaderTooltip=Numărul de apeluri ale funcției.
-OwnTimeHeaderTooltip=Timpul scurs în funcție, fără apelurile înseriate.
-TimeHeaderTooltip=Timpul scurs în funcție, inclusiv apelurile înseriate.
-AvgHeaderTooltip=Timpul mediu, inclusiv apelurile funcțiilor.
-MinHeaderTooltip=Timpul minim, inclusiv apelurile funcțiilor.
-MaxHeaderTooltip=Timpul maxim, inclusiv apelurile funcțiilor.
-ProfileButton.Enabled.Tooltip=Profilează timpul de execuție JavaScript
-ProfileButton.Disabled.Tooltip=Profilează timpul de execuție Javascript (Panoul Script trebuie să fie activ).
-Function=Funcție
-Percent=Procent
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Apeluri
-OwnTime=Timpul propriu
-Time=Timp
-Avg=Mediu
-Min=Min
-Max=Max
-File=Fișier
-# Support for standard actions.
-Copy=Copiază
-Cut=Taie
-Remove=Elimină
-Delete=Delete
-Paste=Paste
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Copiază innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Copiază XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Copiază calea CSS
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Copiază adresa
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Copiază adresa cu parametri
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Copiază antetele cererii
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Copiază antetele răspunsului
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Copiază conținutul răspunsului
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Copiază eroarea
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Copiază funcția
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Loghează apelurile în „%S”
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Loghează evenimentele
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Activat
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Consola Firebug nu suportă „%S”
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Linia de comandă Firebug nu suportă „%S”
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Dezactivează întreruperea la toate erorile
-console.Break_On_All_Errors=Întrerupe la toate erorile
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Întrerupe la această eroare
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript e dezactivat în preferințele Firefox. Dacă doriți să folosiți consola, vă rugăm să activați această opțiune din Unelte -> Opțiuni -> Conținut -> Activează JavaScript
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Corpul răspunsului
-net.sizeinfo.Post_Body=Corpul postării
-net.sizeinfo.Total_Sent=Total trimis
-net.sizeinfo.Total_Received=Total primit
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=S-a activat panoul Net. Cererile făcute în timp ce panoul este inactiv nu sunt afișate.
-net.responseSizeLimitMessage=Limita din Firebug pentru mărimea răspunsului a fost depășită. Apăsați <a>aici</a> pentru a deschide răspunsul întreg într-o filă Firefox.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Post body size limit has been reached Removed by Firebug.
-net.Break_On_XHR=Întrerupere la XHR
-net.label.Parameters=Parametri
-net.label.Parts=Părți
-net.label.Source=Sursă
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Dezactivează cache-ul programului
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Arată evenimentele de desenare
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Oprește la următoarea
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Arată antetele HTTP
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S request;%1$S requests
-FromCache=din cache
-StopLoading=Oprește încărcarea
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Date foarte mari)
-ShowComputedStyle=Arată stilul evaluat
-StyleGroup-text=Text
-StyleGroup-background=Fundal
-StyleGroup-box=Model căsuță
-StyleGroup-layout=Aspect
-StyleGroup-other=Altul
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Copiază culoarea
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Copiază adresa imaginii
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Deschide imaginea în filă nouă
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Omite stiva barei de unelte
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copy Rule Declaration
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Copiază declarația de stil
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Error;%1$S Errors
-moduleManager.title=Panoul %S este dezactivat
-moduleManager.desc3=Folosiți meniul iconiței Firebug din bara de stare pentru a activa și dezactiva panourile. Folosiți meniul mic al panoului pentru controlul individual al panoului:
-moduleManager.Enable=Enable
-Suspend_Firebug=Suspendă Firebug
-Resume_Firebug=Continuă Firebug
-Reset_Panels_To_Disabled=Resetează panourile ca dezactivate
-Open_Console=Deschide consola
-Open_Console_Tooltip=Deschide consola de urmărire pentru Firebug.
-Scope_Chain=Scope Chain
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=Cu
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Apel
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Fereastră
-Logs=Jurnale
-Options=Opțiuni
-Copy_Stack=Copiază stiva
-Copy Exception=Copiază excepția
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blocare
-requestinfo.Resolving=Căutare DNS
-requestinfo.Connecting=Conectare
-requestinfo.Sending=Trimitere
-requestinfo.Waiting=Așteptare
-requestinfo.Receiving=Primire
-requestinfo.ContentLoad=„DOMContentLoaded” (eveniment)
-requestinfo.WindowLoad=„load” (eveniment)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Căutare Firebug
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Înainte
-search.tip.Next=Search for the next match
-search.Previous=Înapoi
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Majusculele contează neapărat
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Fișiere multiple
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Folosește expresii regulate
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=Selector CSS
-search.net.Headers=Antete
-search.net.Parameters=Parametri
-search.net.Response_Bodies=Corpuri de răspuns
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persistă
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Show all log entries
-firebug.console.Errors=Errors
-firebug.console.Filter_by_Errors=Filter by errors
-firebug.console.Warnings=Warnings
-firebug.console.Filter_by_Warnings=Filter by warnings
-firebug.console.Info=Info
-firebug.console.Filter_by_Info=Filter by info
-firebug.console.Debug_Info=Debug Info
-firebug.console.Filter_by_Debug_Info=Filter by debug info
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Deschide Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Hide Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Activează toate panourile
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Dezactivează toate panourile
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Particularizează scurtăturile
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Opțiuni
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Activează îmbunătățirile pentru accesibilitate
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Resetează toate opțiunile Firebug
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug pe net
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Show Error Count
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Mărime text
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Mărește textul
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Micșorează textul
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Text de mărime normală
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Sait Firebug...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Documentație...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Scurtături de tastatură...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Grup de discuții...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Raportare defecte...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Contribuții...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Despre...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Caută
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Reintrodu comanda
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Alternează inspectarea
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Alternează caseta cu informații rapide
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Alternează profilarea
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Focalizează pe linia de comandă
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Focalizează pe căutarea Firebug
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Focalizează pe editorul de monitorizare
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Locul focalizării
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Obiectul următor
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Obiectul precedent
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Personalizează tastele Firebug
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Deschide Firebug într-o fereastră nouă
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Comută la panoul Firebug din stânga
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Comută la panoul Firebug din dreapta
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Deschide Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Fila Firebug precendentă
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Curăță consola
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Deschide consola de urmărire
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Mergi înapoi
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Mergi înainte
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Increase Text Size
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Decrease Text Size
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normal Text Size
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Selector de panou
-customizeShortcuts=Scurtături asociate cu Firebug
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=unelte de panou
-a11y.labels.firebug_panels=Panouri Firebug
-a11y.labels.firebug_side_panels=Panouri laterale Firebug
-a11y.labels.firebug_window=fereastra firebug
-a11y.labels.firebug_status=starea firebug
-a11y.labels.reset=resetează
-a11y.labels.reset_shortcut=resetează scurtătura %S
-aria.labels.inactive_panel=panou inactiv
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=rânduri de jurnal
-a11y.labels.call_stack=stiva de apeluri
-a11y.labels.document_structure=document structure
-a11y.labels.title_panel=panoul %S
-a11y.labels.title_side_panel=panoul lateral %S
-a11y.labels.cached=pus în cache
-aria.labels.stack_trace=stiva de urmărire
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=spațiere
-a11y.layout.border=bordură
-a11y.layout.margin=margine
-a11y.layout.position=poziție
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=marginea de sus
-a11y.layout.margin_right=marginea din dreapta
-a11y.layout.margin_bottom=marginea de jos
-a11y.layout.margin_left=marginea din stânga
-a11y.layout.border_top=bordura de sus
-a11y.layout.border_right=bordura din dreapta
-a11y.layout.border_bottom=bordura de jos
-a11y.layout.border_left=bordura din stânga
-a11y.layout.padding_top=spațierea de sus
-a11y.layout.padding_right=spațierea din dreapta
-a11y.layout.padding_bottom=spațierea de jos
-a11y.layout.padding_left=spațierea din stânga
-a11y.layout.top=sus
-a11y.layout.right=dreapta
-a11y.layout.bottom=jos
-a11y.layout.left=stânga
-a11y.layout.width=lățime
-a11y.layout.height=înălțime
-a11y.layout.size=mărime
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=apăsați enter urmat de tab pentru a edita valori individuale
-a11y.labels.style_rules=reguli de stil
-aria.labels.inherited_style_rules=reguli de stil moștenite
-a11y.labels.computed_styles=stiluri calculate
-a11y.labels.dom_properties=Proprietăți DOM
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=editor de linie
-a11y.labels.value_for_attribute_in_element=valoare pentru atributul %S în elementul %S
-a11y.labels.attribute_for_element=atribut pentru elementul %S
-a11y.labels.text_contents_for_element=textul conținut de elementul %S
-a11y.labels.defined_in_file=definit în %S
-a11y.labels.declarations_for_selector=declarații de stil pentru selectorul „%S”
-a11y.labels.property_for_selector=Proprietate CSS pentru selectorul: %S
-a11y.labels.value_property_in_selector=%S property value for in selector %S
-a11y.labels.css_selector=Selector CSS
-a11y.labels.source_code_for_file=codul sursă pentru fișierul %S
-a11y.labels.press_enter_to_add_new_watch_expression=enter pentru a adăuga o nouă expresie de urmărit
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=suprascris
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=are punct de întrerupere condițională
-a11y.updates.has_disabled_break_point=a dezactivat punctul de întrerupere
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script suspendat la linia %S în %S, fișierul %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=ceva găsit pentru %S în %S rânduri de jurnal
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=ceva găsit pentru %S la linia %S în %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=ceva găsit pentru %S în elementul %S la calea %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=ceva găsit pentru %S în atributul %S=%S al elementului %S de la calea %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=ceva găsit pentru %S în textul conținut: %S din elementul %S de la calea %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=ceva găsit pentru %S în selectorul %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=potrivire găsită pentru „%s” în declarația de stil %S din selectorul %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=ceva găsit pentru %S în proprietatea DOM %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=ceva găsit pentru „%S” în %S, %S: %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=ceva găsit pentru %S într-un rând din sumarul rețelei: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=nimic găsit pentru „%S”
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Sigur doriți să resetați toate opțiunile Firebug la starea lor implicită?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=Consola trebuie activată
-warning.Command_line_blocked?=Linie de comandă blocată?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Reîncarcă pentru a activa fereastra consolă
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=Resursa de la acest URL nu este text
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Mergi înapoi la acest panou
-firebug.history.Stay_on_this_panel=Rămâi în acest panou
-firebug.history.Go_forward_to_this_panel=Mergi înainte la acest panou
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Mergi înapoi
-firebug.history.Go_forward=Mergi înainte
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Script Panel was inactive during page load
-script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript is not enabled
-script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Enable JavaScript and Refresh
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=All scripts were filtered
-script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=No Javascript on this page
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Debugger is already active
-script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
-script.button.Go_to_that_page=Go to that page
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Închide
-firebug.View=Vizualizare
-firebug.Help=Ajutor
-firebug.Run=Rulează
-firebug.Copy=Copiază
-firebug.History=History
-firebug.Run_the_entered_command=Run the entered command
-firebug.Clear_the_Command_Editor=Clear the Command Editor
-firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
-firebug.Insert_a_previously_entered_command=Insert a previously entered command
-firebug.AlwaysOpenInWindow=Deschide întotdeauna într-o fereastră nouă
-firebug.OpenWith=Deschide cu editorul
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Saituri...
-firebug.Configure_Editors=Configure Editors
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Inspectează
-firebug.InspectElement=Inspectează element
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Pauză la erori
-firebug.InspectTooltip=Clic pe un element din pagină pentru a-l inspecta
-firebug.EditHTMLTooltip=Editează acest HTML
-firebug.Profile=Profilare
-firebug.Clear=Curăță
-firebug.ClearConsole=Curăță consola
-firebug.ClearTooltip=Curăță consola
-firebug.All=Tot
-firebug.Images=Imagini
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Configured Firebug Editors
-editors.Editor=Editor
-editors.Executable=Executable
-editors.Launch_Arguments=Launch Arguments
-editors.Add=Add
-editors.Remove=Remove
-editors.Change=Change
-editors.Move_Up=Move Up
-editors.Close=Close
-editors.Browse=Browse...
-changeEditor.Editor_Configuration=Editor Configuration
-changeEditor.Name=Nume:
-changeEditor.Executable=Executabil:
-changeEditor.CmdLine=Argumente:
-changeEditor.Supplied_arguments=Arguments supplied by Firebug:
-changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
-changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
-changeEditor.Line_number=Line number (if available)
-changeEditor.Invalid_Application_Path=Invalid Application Path
-changeEditor.Application_does_not_exist=The specified application doesn't exist!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Editează
-firebug.css.sourceEdit=Source Edit
-firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
-firebug.css.liveEdit=Live Edit
-firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
-firebug.EditCSSTooltip=Editează această foaie de stil
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Show Break Notifications
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
-firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=There are no child objects
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=more
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Object Properties
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(no completions)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
-firebug.failedToPreviewImageURL=Failed to load the given URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Consolă
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Net
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Script
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Stil
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Calculat
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Aspect
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Supraveghere
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Puncte de oprire
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Stivă
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Contexte
+firebug.DetachFirebug=Deschide Firebug într-o fereastră nouă
+firebug.AttachFirebug=Anexează Firebug la fereastra navigatorului
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Deactivated
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=În navigator
+minimized=Minimizat
+enablement.for_all_pages=pentru toate paginile
+enablement.on=Activat
+enablement.off=Dezactivat
+enablement.Panel_activation_status=Panel activation status:
+none=Închis
+Firebug_-_inactive_for_current_website=Firebug - inactive for current website
+Activate_Firebug_for_the_current_website=Activate Firebug for the current website
+Minimized=Minimizat
+Minimize_Firebug=Minimizează Firebug
+On_for_all_web_pages=Pornit pentru toate paginile web
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Curăță lista de activare
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI Location
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Opțiuni Firebug
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Arată toate panourile
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=Arată erorile JavaScript
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Arată avertismentele JavaScript
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Arată erorile CSS
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Arată stiva de urme ale erorilor
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Arată XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Arată erorile Chrome
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Arată mesajele Chrome
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Arată erorile externe
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Arată erorile de rețea
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Avertismente stricte (performanță scăzută)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Command History
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Show Completion List Popup
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Impunere eșuată
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (linia %S)
+LineAndCol=%S (line %S, col %S)
+InstanceLine=%S #%S (linia %S)
+StackItem=%S (%S linia %S)
+SystemItem=<Sistem>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(fără nume)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Arată tot textul
+html.option.tip.Show_Full_Text=Don't crop element contents
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Arată spațiile goale
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Arată comentariile
+html.option.tip.Show_Comments=Show comment nodes
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Evidențiază schimbările
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Extinde schimbările
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Derulează schimbările în vizualizare
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Arată caseta cu informații rapide
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Shade Box Model
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Derulează în vizualizare
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Atribut nou...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Șterge elementul
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Șterge nodul
+html.Delete_Node=Delete the node from the tree
+# Quick Info Box
+quickInfo=Informații rapide
+computedStyle=Stil calculat
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Break On Mutate
+html.Disable_Break_On_Mutate=Disable Break On Mutate
+html.label.Break_On_Text_Change=Întrerupere la schimbarea textului
+html.label.HTML_Breakpoints=Puncte de oprire pentru HTML
+html.label.Break_On_Attribute_Change=Întrerupere la schimbarea atributului
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Întrerupere la adăugarea sau eliminarea de noduri copii
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Întrerupere la eliminarea elementului
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Expand/Contract All
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Break On Property Change
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Disable Break On Property Change
+dom.label.DOM_Breakpoints=Puncte de oprire pentru DOM
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Editează atributul „%S”...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Șterge atributul „%S”
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Moștenit din
+SothinkWarning=Extensia Sothink SWF Catcher împiedică Firebug să funcționeze corect.<br><br>Vă rugăm citiți <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">acest articol din întrebările frecvente despre Firebug</a> pentru ajutor.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
+EditStyle=Editează stilul elementului...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Regulă nouă...
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Proprietate nouă...
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=Editează „%S”...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=Dezactivează „%S”
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=Șterge „%S”
+css.tip.Delete_Prop=Delete the property "%S"
+# Console context menu labels.
+BreakOnThisError=Oprește-te la această eroare
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Oprește-te la orice eroare
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Urmărește throw/catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Folosește ultima linie a sursei pentru numele eval()
+UseMD5ForEvalName=Folosește md5 pentru numele eval()
+# Breakpoints side panel
+Breakpoints=Puncte de oprire
+ErrorBreakpoints=Puncte de oprire la eroare
+LoggedFunctions=Funcții logate
+EnableAllBreakpoints=Activează toate punctele de oprire
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Dezactivează toate punctele de oprire
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Șterge toate punctele de oprire
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Acest punct de oprire va opri doar dacă expresia aceasta e adevărată:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Remove Breakpoint
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Disable Breakpoint
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Enable Breakpoint
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Continuă
+script.balloon.Disable=Dezactivează
+ScriptsFilterStatic=Arată scripturile statice
+ScriptsFilterEval=Arată scripturile statice și eval
+ScriptsFilterEvent=Arată scripturile și evenimentele statice
+ScriptsFilterAll=Arată scripturile statice, eval și evenimentele
+ScriptsFilterStaticShort=static
+ScriptsFilterEvalShort=eval-uri
+ScriptsFilterEventShort=evenimente
+ScriptsFilterAllShort=toate
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Expand All
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Collapse All
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Arată proprietățile definite de utilizator
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Arată funcțiile definite de utilizator
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Arată proprietățile DOM
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Arată funcțiile DOM
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Arată constantele DOM
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=Nu sunt proprietăți de arătat pentru acest obiect.
+NewWatch=Expresie nouă de urmărit...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Adaugă o urmărire
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Copiază sursa
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
+CopyValue=Copiază valoarea
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Copiază numele
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Copiază calea
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Proprietate nouă...
+EditProperty=Editează proprietatea...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Editează variabila...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Editează urmărirea...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Șterge proprietatea
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Șterge urmărirea
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Setează punct de oprire
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Editează condiția punctului de oprire...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=Nu sunt punct de oprire setate în pagină.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Only Show Applied Styles
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Arată User Agent CSS
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Expandează proprietățile prescurtate
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Sort Alphabetically
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Show Mozilla Specific Styles
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Type any key to filter list
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=spațiere
+LayoutBorder=bordură
+LayoutMargin=margine
+LayoutPosition=poziție
+LayoutAdjacent=adiacent
+position=poziție
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Arată riglele și ghizii
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Net panel
+Loading=Încărcare...
+Headers=Antete
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Resetează antetul
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=Adresa cerută și metoda HTTP utilizată.
+net.header.Status=Stare
+net.header.Status_Tooltip=Starea răspunsului primit.
+net.header.Domain=Domeniu
+net.header.Domain_Tooltip=Domeniul cererii executate.
+net.header.Size=Mărime
+net.header.Size_Tooltip=Mărimea răspunsului primit.
+net.header.Timeline=Grafic în timp
+net.header.Timeline_Tooltip=Detailed timing info about request resonse round trip.
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=Puncte de oprire pentru XHR
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Întrerupere la XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=vezi sursa
+net.headers.pretty_print=tipărire elegantă
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Media
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Postare
+Put=Punere
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Răspuns
+URLParameters=Parametri
+Cache=Cache
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Sort by key
+jsonviewer.do_not_sort=Do not sort
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Antete cerere
+ResponseHeaders=Antete răspuns
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
+LimitPrefs=Preferințe
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Pentru a schimba limita, modificați: %S
+Refresh=Reîmprospătare
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Deschide în filă nouă
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Deschide răspunsul într-o filă nouă
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Profilare
+ProfilerStarted=Profilator
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
+NothingToProfile=Nicio activitate de profilat.
+PercentTooltip=Procentajul timpului scurs în această funcție.
+CallsHeaderTooltip=Numărul de apeluri ale funcției.
+OwnTimeHeaderTooltip=Timpul scurs în funcție, fără apelurile înseriate.
+TimeHeaderTooltip=Timpul scurs în funcție, inclusiv apelurile înseriate.
+AvgHeaderTooltip=Timpul mediu, inclusiv apelurile funcțiilor.
+MinHeaderTooltip=Timpul minim, inclusiv apelurile funcțiilor.
+MaxHeaderTooltip=Timpul maxim, inclusiv apelurile funcțiilor.
+ProfileButton.Enabled.Tooltip=Profilează timpul de execuție JavaScript
+ProfileButton.Disabled.Tooltip=Profilează timpul de execuție Javascript (Panoul Script trebuie să fie activ).
+Function=Funcție
+Percent=Procent
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Apeluri
+OwnTime=Timpul propriu
+Time=Timp
+Avg=Mediu
+Min=Min
+Max=Max
+File=Fișier
+# Support for standard actions.
+Copy=Copiază
+Cut=Taie
+Remove=Elimină
+Delete=Delete
+Paste=Paste
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Copiază innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Copiază XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Copiază calea CSS
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Copiază adresa
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Copiază adresa cu parametri
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Copiază antetele cererii
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Copiază antetele răspunsului
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Copiază conținutul răspunsului
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Copiază eroarea
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Copiază funcția
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Loghează apelurile în „%S”
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Loghează evenimentele
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Activat
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Consola Firebug nu suportă „%S”
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Linia de comandă Firebug nu suportă „%S”
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Dezactivează întreruperea la toate erorile
+console.Break_On_All_Errors=Întrerupe la toate erorile
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Întrerupe la această eroare
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript e dezactivat în preferințele Firefox. Dacă doriți să folosiți consola, vă rugăm să activați această opțiune din Unelte -> Opțiuni -> Conținut -> Activează JavaScript
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Corpul răspunsului
+net.sizeinfo.Post_Body=Corpul postării
+net.sizeinfo.Total_Sent=Total trimis
+net.sizeinfo.Total_Received=Total primit
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=S-a activat panoul Net. Cererile făcute în timp ce panoul este inactiv nu sunt afișate.
+net.responseSizeLimitMessage=Limita din Firebug pentru mărimea răspunsului a fost depășită. Apăsați <a>aici</a> pentru a deschide răspunsul întreg într-o filă Firefox.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Post body size limit has been reached Removed by Firebug.
+net.Break_On_XHR=Întrerupere la XHR
+net.label.Parameters=Parametri
+net.label.Parts=Părți
+net.label.Source=Sursă
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Dezactivează cache-ul programului
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Arată evenimentele de desenare
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Oprește la următoarea
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Arată antetele HTTP
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S request;%1$S requests
+FromCache=din cache
+StopLoading=Oprește încărcarea
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Date foarte mari)
+ShowComputedStyle=Arată stilul evaluat
+StyleGroup-text=Text
+StyleGroup-background=Fundal
+StyleGroup-box=Model căsuță
+StyleGroup-layout=Aspect
+StyleGroup-other=Altul
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Copiază culoarea
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Copiază adresa imaginii
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Deschide imaginea în filă nouă
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Omite stiva barei de unelte
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copy Rule Declaration
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Copiază declarația de stil
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Error;%1$S Errors
+moduleManager.title=Panoul %S este dezactivat
+moduleManager.desc3=Folosiți meniul iconiței Firebug din bara de stare pentru a activa și dezactiva panourile. Folosiți meniul mic al panoului pentru controlul individual al panoului:
+moduleManager.Enable=Enable
+Suspend_Firebug=Suspendă Firebug
+Resume_Firebug=Continuă Firebug
+Reset_Panels_To_Disabled=Resetează panourile ca dezactivate
+Open_Console=Deschide consola
+Open_Console_Tooltip=Deschide consola de urmărire pentru Firebug.
+Scope_Chain=Scope Chain
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=Cu
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Apel
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Fereastră
+Logs=Jurnale
+Options=Opțiuni
+Copy_Stack=Copiază stiva
+Copy Exception=Copiază excepția
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blocare
+requestinfo.Resolving=Căutare DNS
+requestinfo.Connecting=Conectare
+requestinfo.Sending=Trimitere
+requestinfo.Waiting=Așteptare
+requestinfo.Receiving=Primire
+requestinfo.ContentLoad=„DOMContentLoaded” (eveniment)
+requestinfo.WindowLoad=„load” (eveniment)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Căutare Firebug
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Înainte
+search.tip.Next=Search for the next match
+search.Previous=Înapoi
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Majusculele contează neapărat
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Fișiere multiple
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Folosește expresii regulate
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=Selector CSS
+search.net.Headers=Antete
+search.net.Parameters=Parametri
+search.net.Response_Bodies=Corpuri de răspuns
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persistă
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Show all log entries
+firebug.console.Errors=Errors
+firebug.console.Filter_by_Errors=Filter by errors
+firebug.console.Warnings=Warnings
+firebug.console.Filter_by_Warnings=Filter by warnings
+firebug.console.Info=Info
+firebug.console.Filter_by_Info=Filter by info
+firebug.console.Debug_Info=Debug Info
+firebug.console.Filter_by_Debug_Info=Filter by debug info
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Deschide Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Hide Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Activează toate panourile
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Dezactivează toate panourile
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Particularizează scurtăturile
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Opțiuni
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Activează îmbunătățirile pentru accesibilitate
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Resetează toate opțiunile Firebug
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug pe net
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Show Error Count
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Mărime text
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Mărește textul
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Micșorează textul
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Text de mărime normală
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Sait Firebug...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Documentație...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Scurtături de tastatură...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Grup de discuții...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Raportare defecte...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Contribuții...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Despre...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Caută
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Reintrodu comanda
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Alternează inspectarea
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Alternează caseta cu informații rapide
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Alternează profilarea
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Focalizează pe linia de comandă
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Focalizează pe căutarea Firebug
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Focalizează pe editorul de monitorizare
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Locul focalizării
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Obiectul următor
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Obiectul precedent
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Personalizează tastele Firebug
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Deschide Firebug într-o fereastră nouă
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Comută la panoul Firebug din stânga
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Comută la panoul Firebug din dreapta
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Deschide Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Fila Firebug precendentă
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Curăță consola
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Deschide consola de urmărire
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Mergi înapoi
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Mergi înainte
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Increase Text Size
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Decrease Text Size
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normal Text Size
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Selector de panou
+customizeShortcuts=Scurtături asociate cu Firebug
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=unelte de panou
+a11y.labels.firebug_panels=Panouri Firebug
+a11y.labels.firebug_side_panels=Panouri laterale Firebug
+a11y.labels.firebug_window=fereastra firebug
+a11y.labels.firebug_status=starea firebug
+a11y.labels.reset=resetează
+a11y.labels.reset_shortcut=resetează scurtătura %S
+aria.labels.inactive_panel=panou inactiv
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=rânduri de jurnal
+a11y.labels.call_stack=stiva de apeluri
+a11y.labels.document_structure=document structure
+a11y.labels.title_panel=panoul %S
+a11y.labels.title_side_panel=panoul lateral %S
+a11y.labels.cached=pus în cache
+aria.labels.stack_trace=stiva de urmărire
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=spațiere
+a11y.layout.border=bordură
+a11y.layout.margin=margine
+a11y.layout.position=poziție
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=marginea de sus
+a11y.layout.margin_right=marginea din dreapta
+a11y.layout.margin_bottom=marginea de jos
+a11y.layout.margin_left=marginea din stânga
+a11y.layout.border_top=bordura de sus
+a11y.layout.border_right=bordura din dreapta
+a11y.layout.border_bottom=bordura de jos
+a11y.layout.border_left=bordura din stânga
+a11y.layout.padding_top=spațierea de sus
+a11y.layout.padding_right=spațierea din dreapta
+a11y.layout.padding_bottom=spațierea de jos
+a11y.layout.padding_left=spațierea din stânga
+a11y.layout.top=sus
+a11y.layout.right=dreapta
+a11y.layout.bottom=jos
+a11y.layout.left=stânga
+a11y.layout.width=lățime
+a11y.layout.height=înălțime
+a11y.layout.size=mărime
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=apăsați enter urmat de tab pentru a edita valori individuale
+a11y.labels.style_rules=reguli de stil
+aria.labels.inherited_style_rules=reguli de stil moștenite
+a11y.labels.computed_styles=stiluri calculate
+a11y.labels.dom_properties=Proprietăți DOM
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=editor de linie
+a11y.labels.value_for_attribute_in_element=valoare pentru atributul %S în elementul %S
+a11y.labels.attribute_for_element=atribut pentru elementul %S
+a11y.labels.text_contents_for_element=textul conținut de elementul %S
+a11y.labels.defined_in_file=definit în %S
+a11y.labels.declarations_for_selector=declarații de stil pentru selectorul „%S”
+a11y.labels.property_for_selector=Proprietate CSS pentru selectorul: %S
+a11y.labels.value_property_in_selector=%S property value for in selector %S
+a11y.labels.css_selector=Selector CSS
+a11y.labels.source_code_for_file=codul sursă pentru fișierul %S
+a11y.labels.press_enter_to_add_new_watch_expression=enter pentru a adăuga o nouă expresie de urmărit
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=suprascris
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=are punct de întrerupere condițională
+a11y.updates.has_disabled_break_point=a dezactivat punctul de întrerupere
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script suspendat la linia %S în %S, fișierul %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=ceva găsit pentru %S în %S rânduri de jurnal
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=ceva găsit pentru %S la linia %S în %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=ceva găsit pentru %S în elementul %S la calea %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=ceva găsit pentru %S în atributul %S=%S al elementului %S de la calea %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=ceva găsit pentru %S în textul conținut: %S din elementul %S de la calea %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=ceva găsit pentru %S în selectorul %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=potrivire găsită pentru „%s” în declarația de stil %S din selectorul %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=ceva găsit pentru %S în proprietatea DOM %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=ceva găsit pentru „%S” în %S, %S: %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=ceva găsit pentru %S într-un rând din sumarul rețelei: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=nimic găsit pentru „%S”
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Sigur doriți să resetați toate opțiunile Firebug la starea lor implicită?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=Consola trebuie activată
+warning.Command_line_blocked?=Linie de comandă blocată?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Reîncarcă pentru a activa fereastra consolă
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=Resursa de la acest URL nu este text
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Mergi înapoi la acest panou
+firebug.history.Stay_on_this_panel=Rămâi în acest panou
+firebug.history.Go_forward_to_this_panel=Mergi înainte la acest panou
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Mergi înapoi
+firebug.history.Go_forward=Mergi înainte
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Script Panel was inactive during page load
+script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript is not enabled
+script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Enable JavaScript and Refresh
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=All scripts were filtered
+script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=No Javascript on this page
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Debugger is already active
+script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
+script.button.Go_to_that_page=Go to that page
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Închide
+firebug.View=Vizualizare
+firebug.Help=Ajutor
+firebug.Run=Rulează
+firebug.Copy=Copiază
+firebug.History=History
+firebug.Run_the_entered_command=Run the entered command
+firebug.Clear_the_Command_Editor=Clear the Command Editor
+firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
+firebug.Insert_a_previously_entered_command=Insert a previously entered command
+firebug.AlwaysOpenInWindow=Deschide întotdeauna într-o fereastră nouă
+firebug.OpenWith=Deschide cu editorul
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Saituri...
+firebug.Configure_Editors=Configure Editors
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Inspectează
+firebug.InspectElement=Inspectează element
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Pauză la erori
+firebug.InspectTooltip=Clic pe un element din pagină pentru a-l inspecta
+firebug.EditHTMLTooltip=Editează acest HTML
+firebug.Profile=Profilare
+firebug.Clear=Curăță
+firebug.ClearConsole=Curăță consola
+firebug.ClearTooltip=Curăță consola
+firebug.All=Tot
+firebug.Images=Imagini
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Configured Firebug Editors
+editors.Editor=Editor
+editors.Executable=Executable
+editors.Launch_Arguments=Launch Arguments
+editors.Add=Add
+editors.Remove=Remove
+editors.Change=Change
+editors.Move_Up=Move Up
+editors.Close=Close
+editors.Browse=Browse...
+changeEditor.Editor_Configuration=Editor Configuration
+changeEditor.Name=Nume:
+changeEditor.Executable=Executabil:
+changeEditor.CmdLine=Argumente:
+changeEditor.Supplied_arguments=Arguments supplied by Firebug:
+changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
+changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
+changeEditor.Line_number=Line number (if available)
+changeEditor.Invalid_Application_Path=Invalid Application Path
+changeEditor.Application_does_not_exist=The specified application doesn't exist!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Editează
+firebug.css.sourceEdit=Source Edit
+firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
+firebug.css.liveEdit=Live Edit
+firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
+firebug.EditCSSTooltip=Editează această foaie de stil
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Show Break Notifications
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
+firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=There are no child objects
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=more
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Object Properties
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(no completions)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
+firebug.failedToPreviewImageURL=Failed to load the given URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/ru/cookies.properties b/locale/ru/cookies.properties
index 3619001..36ae3f3 100644
--- a/locale/ru/cookies.properties
+++ b/locale/ru/cookies.properties
@@ -1,138 +1,138 @@
-cookies.Panel=Cookies
-panel.tip.cookies=Даёт возможность просматривать и изменять cookie
-cookies.Session=Сессия
-cookies.AllowGlobally=Принимать Cookie от сайтов
-cookies.tip.AllowGlobally=Принимать все cookie по-умолчанию или отвергать все cookie
-cookies.showCookieEvents=Показывать события Cookie
-cookies.tip.showCookieEvents=Записывать в консоль события cookie (изменения, удаления)
-cookies.clearWhenDeny=Очищать Cookie при запрете
-cookies.Cut=Вырезать
-cookies.Copy=Копировать
-cookies.CopyAll=Скопировать все
-cookies.Paste=Вставить
-cookies.Delete=Удалить
-cookies.Clear_Value=Очистить значение
-cookies.Edit=Редактировать
-cookies.Accept=Принять
-cookies.header.Reset_Header=Сбросить заголовок
-cookies.Intro=Вы можете указать каким сайтам разрешено или запрещено использовать Cookie.\nНапишите точный адрес сайта и нажмите Блокировать,\nРазрешить на сессию или Разрешить.
-cookies.ExceptionsTitle=Исключения - Cookie
-cookies.modulemanager.description=Поддержка мониторинга Cookie
-cookies.HostEnable=Включить панель Cookie для %S
-cookies.HostDisable=Отключить панель Cookie для %S
-cookies.Permissions=Включить или отключить панель Cookie
-cookies.PermissionsIntro=Выберите сайты, на которых панель Cookie будет включена или отключена
-cookies.SystemPages=Системные страницы
-cookies.LocalFiles=Локальные файлы
-cookies.confirm.removeall=Вы желаете удалить все Cookie в списке?
-cookies.confirm.removeallsession=Вы желаете удалить все Cookie сессии в списке?
-cookies.confirm.Remove_All_From_Host=Вы уверены, что хотите удалить все Cookie для %S?
-cookies.Confirm_cookie_removal=Подтверждать удаление Cookie
-cookies.tip.Confirm_cookie_removal=Если установлено - при попытке удалить cookie будет выводится диалог с подтверждением.
-cookies.removeall.tooltip=Удалить все Cookie в списке.
-cookies.Remove_Session_Cookies=Удалить Cookie сессии
-cookies.removeallsession.tooltip=Удалить все Cookie сессии в списке
-cookies.createcookie.tooltip=Создать Cookie для %S
-cookies.createcookie.defaultvalue=Значение
-cookies.perm.manage.tooltip=Управление разрешениями Cookie для %S
-cookies.console.cookiescleared=Все Cookie были удалены
-cookies.console.sessioncookiescleared=Все Cookie сессии были удалены
-cookies.console.cookiesrejected=Отвергнутые Cookie:
-cookies.console.nocookiesreceived=Нет полученных Cookie
-cookies.console.cookie=Cookie
-cookies.console.deleted=удалена
-cookies.console.added=добавлена
-cookies.console.changed=изменена
-cookies.console.cleared=очищена
-cookies.domain.label=Домен
-cookies.secure.label=Безопасная
-cookies.status.accepted=Принята
-cookies.status.downgraded=Понижена
-cookies.status.flagged=Помечена
-cookies.status.rejected=Отвергнута
-cookies.info.valuetab.label=Значение
-cookies.info.rawdatatab.Raw_Data=Сырые данные
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-cookies.default.session=По умолчанию (Принимать Cookie сессии)
-cookies.default.thirdPartySession=По умолчанию (Принимать Cookie сессии)
-cookies.default.thirdParty=По умолчанию (Принимать Cookie)
-cookies.default.allow=По умолчанию (Принимать Cookie)
-cookies.default.deny=По умолчанию (Отвергать Cookie)
-cookies.default.warn=По умолчанию (Предупреждать перед приёмом Cookie)
-cookies.default.limitThirdParty=По умолчанию (Ограничивать приём Cookie сторонних сайтов)
-cookies.host.session=Принимать Cookie сессии от %S
-cookies.host.accept=Принимать Cookie от %S
-cookies.host.reject=Отвергать Cookie от %S
-cookies.host.limitThirdParty=Ограничивать приём сторонних Cookie от %S
-cookies.edit.invalidname=Ошибочное имя Cookie.
-cookies.edit.invalidhost=Ошибочный хост Cookie.
-cookies.edit.invalidpath=Ошибочный путь Cookie.
-cookies.header.name=Имя
-cookies.header.value=Значение
-cookies.header.rawValue=Исходное значение
-cookies.header.domain=Домен
-cookies.header.size=Размер
-cookies.header.rawSize=Исходный размер
-cookies.header.path=Путь
-cookies.header.expires=Истекает
-cookies.header.security=Безопасность
-cookies.header.httponly=Только HTTP
-cookies.header.maxAge=Макс. возраст
-cookies.header.name.tooltip=Имя Cookie
-cookies.header.value.tooltip=Сохранённое значение Cookie
-cookies.header.rawValue.tooltip=Исходное значение сохраненное в cookie
-cookies.header.domain.tooltip=Домен на котором хранится Cookie
-cookies.header.rawSize.tooltip=Исходный размер сохранённой Cookie
-cookies.header.size.tooltip=Размер сохранённой Cookie
-cookies.header.path.tooltip=Директория в которой Cookie активна
-cookies.header.expires.tooltip=Дата истечения Cookie
-cookies.header.security.tooltip=Показывает безопасна Cookie или нет
-cookies.header.httponly.tooltip=Показывает если это только HTTP Cookie
-cookies.header.maxAge.tooltip=Максимальное время хранения Cookie
-cookies.netinfo.Received_Cookies=Принятые Cookie
-cookies.netinfo.Sent_Cookies=Отправленные Cookie
-cookies.netinfo.deleted.tooltip=Запрос удалил Cookie
-cookies.Path_Filter=Фильтр пути
-cookies.menu.Cookies=Cookies
-cookies.export.Export_All_Cookies=Экспортировать все Cookie...
-cookies.export.Export_All_Cookies_Tooltip=Экспортировать все Cookie браузера в файл cookies.txt
-cookies.export.Export_For_Site=Экспортировать Cookie этого сайта...
-cookies.export.Export_For_Site_Tooltip=Экспортировать Cookie для %S в файл cookies.txt
-cookies.message.There_is_no_active_page=Активная страница отсутствует.
-cookies.Break_On_Cookie=Останавливать при изменении Cookie
-cookies.Disable_Break_On_Cookie=Отключить остановку при изменении Cookie
-cookies.Cookie_Breakpoints=Точки останова Cookie
-cookies.menu.Break_On_Cookie=Останавливать на Cookie '%S'
-cookies.menu.tooltip.Break_On_Cookie=Останавливать на Cookie '%S' при удалении или изменении
-cookies.menu.Edit_Breakpoint_Condition=Править условие точки останова
-cookies.Breakpoint_condition_evaluation_fails=Ошибка валидации условия точки останова
-cookies.RemoveAll=Удалить все Cookie
-cookies.Create=Создать Cookie
-cookies.Tools=Инструменты
-cookies.ToolsTooltip=Инструменты
-cookies.ViewAll=Показать все Cookie...
-cookies.ViewAllTooltip=Открыть встроенный менеджер Cookie
-cookies.ViewExceptions=Разрешения веб-сайтов
-cookies.ViewExceptionsTooltip=Показать список разрешённых или запрещённых веб-сайтов
-cookies.Filter=Фильтр
-cookies.FilterTooltip=Использовать данные опции для фильтрации списка Cookie
-cookies.filter.byPath=Фильтровать Cookie по текущему пути
-cookies.filter.byPathTooltip=Показывать только те Cookie, которые совпадают с текущим путём
-cookies.filter.showRejectedCookies=Показывать отвергнутые Cookie
-cookies.filter.showRejectedCookiesTooltip=Показывать даже отвергнутые Cookie в списке
-cookies.edit.title=Редактировать Cookie
-cookies.edit.name.label=Имя:
-cookies.edit.domain.label=Хост:
-cookies.edit.path.label=Путь:
-cookies.edit.expire.label=Истекает:
-cookies.edit.value.label=Значение:
-cookies.edit.secure.label=Безопасная Cookie
-cookies.edit.httponly.label=Только HTTP
-cookies.edit.session.label=Сессия
-cookies.edit.urlEncode.label=URL encode значение
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Фильтровать по Cookie
-firebug.shortcut.removeAllCookies.label=Удалить все Cookies
-cookie.sizeinfo.Size=Размер
-cookie.sizeinfo.Raw_Size=Исходный размер
+cookies.Panel=Cookies
+panel.tip.cookies=Даёт возможность просматривать и изменять cookie
+cookies.Session=Сессия
+cookies.AllowGlobally=Принимать Cookie от сайтов
+cookies.tip.AllowGlobally=Принимать все cookie по-умолчанию или отвергать все cookie
+cookies.showCookieEvents=Показывать события Cookie
+cookies.tip.showCookieEvents=Записывать в консоль события cookie (изменения, удаления)
+cookies.clearWhenDeny=Очищать Cookie при запрете
+cookies.Cut=Вырезать
+cookies.Copy=Копировать
+cookies.CopyAll=Скопировать все
+cookies.Paste=Вставить
+cookies.Delete=Удалить
+cookies.Clear_Value=Очистить значение
+cookies.Edit=Редактировать
+cookies.Accept=Принять
+cookies.header.Reset_Header=Сбросить заголовок
+cookies.Intro=Вы можете указать каким сайтам разрешено или запрещено использовать Cookie.\nНапишите точный адрес сайта и нажмите Блокировать,\nРазрешить на сессию или Разрешить.
+cookies.ExceptionsTitle=Исключения - Cookie
+cookies.modulemanager.description=Поддержка мониторинга Cookie
+cookies.HostEnable=Включить панель Cookie для %S
+cookies.HostDisable=Отключить панель Cookie для %S
+cookies.Permissions=Включить или отключить панель Cookie
+cookies.PermissionsIntro=Выберите сайты, на которых панель Cookie будет включена или отключена
+cookies.SystemPages=Системные страницы
+cookies.LocalFiles=Локальные файлы
+cookies.confirm.removeall=Вы желаете удалить все Cookie в списке?
+cookies.confirm.removeallsession=Вы желаете удалить все Cookie сессии в списке?
+cookies.confirm.Remove_All_From_Host=Вы уверены, что хотите удалить все Cookie для %S?
+cookies.Confirm_cookie_removal=Подтверждать удаление Cookie
+cookies.tip.Confirm_cookie_removal=Если установлено - при попытке удалить cookie будет выводится диалог с подтверждением.
+cookies.removeall.tooltip=Удалить все Cookie в списке.
+cookies.Remove_Session_Cookies=Удалить Cookie сессии
+cookies.removeallsession.tooltip=Удалить все Cookie сессии в списке
+cookies.createcookie.tooltip=Создать Cookie для %S
+cookies.createcookie.defaultvalue=Значение
+cookies.perm.manage.tooltip=Управление разрешениями Cookie для %S
+cookies.console.cookiescleared=Все Cookie были удалены
+cookies.console.sessioncookiescleared=Все Cookie сессии были удалены
+cookies.console.cookiesrejected=Отвергнутые Cookie:
+cookies.console.nocookiesreceived=Нет полученных Cookie
+cookies.console.cookie=Cookie
+cookies.console.deleted=удалена
+cookies.console.added=добавлена
+cookies.console.changed=изменена
+cookies.console.cleared=очищена
+cookies.domain.label=Домен
+cookies.secure.label=Безопасная
+cookies.status.accepted=Принята
+cookies.status.downgraded=Понижена
+cookies.status.flagged=Помечена
+cookies.status.rejected=Отвергнута
+cookies.info.valuetab.label=Значение
+cookies.info.rawdatatab.Raw_Data=Сырые данные
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+cookies.default.session=По умолчанию (Принимать Cookie сессии)
+cookies.default.thirdPartySession=По умолчанию (Принимать Cookie сессии)
+cookies.default.thirdParty=По умолчанию (Принимать Cookie)
+cookies.default.allow=По умолчанию (Принимать Cookie)
+cookies.default.deny=По умолчанию (Отвергать Cookie)
+cookies.default.warn=По умолчанию (Предупреждать перед приёмом Cookie)
+cookies.default.limitThirdParty=По умолчанию (Ограничивать приём Cookie сторонних сайтов)
+cookies.host.session=Принимать Cookie сессии от %S
+cookies.host.accept=Принимать Cookie от %S
+cookies.host.reject=Отвергать Cookie от %S
+cookies.host.limitThirdParty=Ограничивать приём сторонних Cookie от %S
+cookies.edit.invalidname=Ошибочное имя Cookie.
+cookies.edit.invalidhost=Ошибочный хост Cookie.
+cookies.edit.invalidpath=Ошибочный путь Cookie.
+cookies.header.name=Имя
+cookies.header.value=Значение
+cookies.header.rawValue=Исходное значение
+cookies.header.domain=Домен
+cookies.header.size=Размер
+cookies.header.rawSize=Исходный размер
+cookies.header.path=Путь
+cookies.header.expires=Истекает
+cookies.header.security=Безопасность
+cookies.header.httponly=Только HTTP
+cookies.header.maxAge=Макс. возраст
+cookies.header.name.tooltip=Имя Cookie
+cookies.header.value.tooltip=Сохранённое значение Cookie
+cookies.header.rawValue.tooltip=Исходное значение сохраненное в cookie
+cookies.header.domain.tooltip=Домен на котором хранится Cookie
+cookies.header.rawSize.tooltip=Исходный размер сохранённой Cookie
+cookies.header.size.tooltip=Размер сохранённой Cookie
+cookies.header.path.tooltip=Директория в которой Cookie активна
+cookies.header.expires.tooltip=Дата истечения Cookie
+cookies.header.security.tooltip=Показывает безопасна Cookie или нет
+cookies.header.httponly.tooltip=Показывает если это только HTTP Cookie
+cookies.header.maxAge.tooltip=Максимальное время хранения Cookie
+cookies.netinfo.Received_Cookies=Принятые Cookie
+cookies.netinfo.Sent_Cookies=Отправленные Cookie
+cookies.netinfo.deleted.tooltip=Запрос удалил Cookie
+cookies.Path_Filter=Фильтр пути
+cookies.menu.Cookies=Cookies
+cookies.export.Export_All_Cookies=Экспортировать все Cookie...
+cookies.export.Export_All_Cookies_Tooltip=Экспортировать все Cookie браузера в файл cookies.txt
+cookies.export.Export_For_Site=Экспортировать Cookie этого сайта...
+cookies.export.Export_For_Site_Tooltip=Экспортировать Cookie для %S в файл cookies.txt
+cookies.message.There_is_no_active_page=Активная страница отсутствует.
+cookies.Break_On_Cookie=Останавливать при изменении Cookie
+cookies.Disable_Break_On_Cookie=Отключить остановку при изменении Cookie
+cookies.Cookie_Breakpoints=Точки останова Cookie
+cookies.menu.Break_On_Cookie=Останавливать на Cookie '%S'
+cookies.menu.tooltip.Break_On_Cookie=Останавливать на Cookie '%S' при удалении или изменении
+cookies.menu.Edit_Breakpoint_Condition=Править условие точки останова
+cookies.Breakpoint_condition_evaluation_fails=Ошибка валидации условия точки останова
+cookies.RemoveAll=Удалить все Cookie
+cookies.Create=Создать Cookie
+cookies.Tools=Инструменты
+cookies.ToolsTooltip=Инструменты
+cookies.ViewAll=Показать все Cookie...
+cookies.ViewAllTooltip=Открыть встроенный менеджер Cookie
+cookies.ViewExceptions=Разрешения веб-сайтов
+cookies.ViewExceptionsTooltip=Показать список разрешённых или запрещённых веб-сайтов
+cookies.Filter=Фильтр
+cookies.FilterTooltip=Использовать данные опции для фильтрации списка Cookie
+cookies.filter.byPath=Фильтровать Cookie по текущему пути
+cookies.filter.byPathTooltip=Показывать только те Cookie, которые совпадают с текущим путём
+cookies.filter.showRejectedCookies=Показывать отвергнутые Cookie
+cookies.filter.showRejectedCookiesTooltip=Показывать даже отвергнутые Cookie в списке
+cookies.edit.title=Редактировать Cookie
+cookies.edit.name.label=Имя:
+cookies.edit.domain.label=Хост:
+cookies.edit.path.label=Путь:
+cookies.edit.expire.label=Истекает:
+cookies.edit.value.label=Значение:
+cookies.edit.secure.label=Безопасная Cookie
+cookies.edit.httponly.label=Только HTTP
+cookies.edit.session.label=Сессия
+cookies.edit.urlEncode.label=URL encode значение
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Фильтровать по Cookie
+firebug.shortcut.removeAllCookies.label=Удалить все Cookies
+cookie.sizeinfo.Size=Размер
+cookie.sizeinfo.Raw_Size=Исходный размер
diff --git a/locale/ru/firebug-amo.properties b/locale/ru/firebug-amo.properties
index 20f9825..c04e00f 100644
--- a/locale/ru/firebug-amo.properties
+++ b/locale/ru/firebug-amo.properties
@@ -1,3 +1,3 @@
-firebug.amo.summary1.6=Firebug интегрируется в Firefox для того, чтобы принести изобилие средств разработки на кончики Ваших пальцев. Вы можете редактировать и просматривать CSS, HTML и JavaScript в реальном времени...\\n\\nДля работы Firebug 1.6 нужен Firefox 3.6 или выше.
-firebug.amo.description=Firebug интегрируется в Firefox для того, чтобы принести изобилие средств разработки на кончики Ваших пальцев, в то время как Вы путешествуете по сети. Вы можете редактировать, выполнять отладку и просматривать CSS, HTML и JavaScript в режиме реального времени на любой странице в сети...\\n\\nПосетите сайт Firebug - там Вы найдёте документацию, снимки экрана и форумы для обсуждения: http://getfirebug.com
-firebug.amo.developer.comments=Если у Вас возникли вопросы, пожалуйста прочитайте FAQ Firebug.\\n\\nhttp://getfirebug.com/faq.html
+firebug.amo.summary1.6=Firebug интегрируется в Firefox для того, чтобы принести изобилие средств разработки на кончики Ваших пальцев. Вы можете редактировать и просматривать CSS, HTML и JavaScript в реальном времени...\\n\\nДля работы Firebug 1.6 нужен Firefox 3.6 или выше.
+firebug.amo.description=Firebug интегрируется в Firefox для того, чтобы принести изобилие средств разработки на кончики Ваших пальцев, в то время как Вы путешествуете по сети. Вы можете редактировать, выполнять отладку и просматривать CSS, HTML и JavaScript в режиме реального времени на любой странице в сети...\\n\\nПосетите сайт Firebug - там Вы найдёте документацию, снимки экрана и форумы для обсуждения: http://getfirebug.com
+firebug.amo.developer.comments=Если у Вас возникли вопросы, пожалуйста прочитайте FAQ Firebug.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/ru/firebug-tracing.properties b/locale/ru/firebug-tracing.properties
index e852099..15e9656 100644
--- a/locale/ru/firebug-tracing.properties
+++ b/locale/ru/firebug-tracing.properties
@@ -1,91 +1,91 @@
-Open_Firebug_Tracing=Открыть слежение Firebug
-Always_Open_Firebug_Tracing=Всегда открывать слежение Firebug
-title.Tracing=Слежение
-tracing.Show_Scope_Variables=Показывать переменные охвата
-tracing.Show_Time=Показать время
-tracing.tab.Stack=Стэк
-tracing.tab.Exception=Исключение
-tracing.tab.Properties=Свойства
-tracing.tab.Scope=Охват
-tracing.tab.Response=Ответ
-tracing.tab.Source=Исходный код
-tracing.tab.Interfaces=Интерфейсы
-tracing.tab.Object=Объект
-tracing.tab.Event=Событие
-tracing.cmd.Clear=Очистить
-tracing.cmd.tip.Clear=Удалить все сообщения
-tracing.cmd.Find=Найти
-tracing.cmd.tip.Find=Найти текст
-tracing.cmd.Bookmark=Закладка
-tracing.cmd.tip.Bookmark=Добавить закладку
-tracing.cmd.Restart=Перезапустить Firefox
-tracing.cmd.tip.Restart=Перезапустить Firefox
-tracing.cmd.Exit=Выйти из Firefox
-tracing.cmd.tip.Exit=Выйти из Firefox
-tracing.cmd.Save=Сохранить в файл
-tracing.cmd.tip.Save=Сохранить логи в файл
-tracing.cmd.Load=Загрузить из файла
-tracing.cmd.tip.Load=Загрузить логи из файла
-tracing.cmd.Expand_All=Развернуть всё
-tracing.cmd.Collapse_All=Свернуть всё
-tracing.cmd.Tools=Инструменты
-tracing.cmd.tip.Tools=Инструменты
-tracing.cmd.Clear_Browser_Cache=Очистить кэш браузера
-tracing.cmd.tip.Clear_Browser_Cache=Очистить кэш браузера
-tracing.cmd.Force_Garbage_Collector=Принудительный сборщик мусора
-tracing.cmd.tip.Force_Garbage_Collector=Принудительный сборщик мусора
-tracing.cmd.Open_Profile_Directory=Открыть папку профиля
-tracing.cmd.tip.Open_Profile_Directory=Открыть папку профиля
-tracing.option.A11Y_Description=Проблемы доступности
-tracing.option.ACTIVATION_Description=Активация Firebug
-tracing.option.ACTIVITYOBSERVER_Description=Обозреватель активности Firebug
-tracing.option.ANNOTATIONS_Description=Аннотация сайта Firebug
-tracing.option.BP_Description=Точки останова
-tracing.option.CACHE_Description=Исходный код кэша
-tracing.option.COMMANDLINE_Description=Командная строка & Всплывающая командная строка
-tracing.option.COMPILATION_UNITS_Description=Единицы компиляции скрипта
-tracing.option.CONSOLE_Description=Панель консоли
-tracing.option.CSS_Description=Разбор CSS
-tracing.option.DISPATCH_Description=Диспетчер событий
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Создание Domplate
-tracing.option.EDITOR_Description=Быстрое редактирование & Автозавершение
-tracing.option.ERRORLOG_Description=Лог ошибок JS, CSS, XML и т.д.
-tracing.option.ERRORS_Description=Внутренние ошибки Firebug
-tracing.option.EVAL_Description=Оценка скрипта
-tracing.option.FBS_BP_Description=Сервис Firebug: Точки останова
-tracing.option.FBS_CREATION_Description=Сервис Firebug: Создание скрипта
-tracing.option.FBS_ERRORS_Description=Сервис Firebug: Ошибки
-tracing.option.FBS_FINDDEBUGGER_Description=Сервис Firebug: Поиск отладчика
-tracing.option.FBS_FUNCTION_Description=Сервис Firebug: Функция
-tracing.option.FBS_JSDCONTEXT_Description=Сервис Firebug: Контекст отладчика JavaScript
-tracing.option.FBS_SRCUNITS_Description=Сервис Firebug: Единицы исходного кода
-tracing.option.FBS_STEP_Description=Сервис Firebug: Шаги отладчика JavaScript
-tracing.option.FBS_TRACKFILES_Description=Сервис Firebug: Отслеживаемые файлы
-tracing.option.FUNCTION_NAMES_Description=Названия функций JavaScript
-tracing.option.HISTORY_Description=История навигации Firebug
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=Обозреватель HTTP-запросов
-tracing.option.INFOTIP_Description=Подсказка
-tracing.option.INITIALIZE_Description=Инициализация Firebug
-tracing.option.INSPECT_Description=Анализатор
-tracing.option.JSONVIEWER_Description=Просмотр JSON
-tracing.option.LINETABLE_Description=Линия таблицы скрипта
-tracing.option.LOCALE_Description=Локализация
-tracing.option.LOCATIONS_Description=Местонахождение исходного кода
-tracing.option.NET_Description=Панель Сети
-tracing.option.NET_EVENTS_Description=Сетевые события
-tracing.option.OPTIONS_Description=Настройки Firebug
-tracing.option.PANELS_Description=Панели
-tracing.option.SHORTCUTS_Description=Горячие клавиши
-tracing.option.SOURCEFILES_Description=Исходный код файлов JavaScript
-tracing.option.SPY_Description=Обозреватель XMLHttpRequests
-tracing.option.STACK_Description=Стэк вызовов JavaScript
-tracing.option.STORAGE_Description=Хранилище настроек
-tracing.option.SVGVIEWER_Description=Просмотр SVG
-tracing.option.FONTS_Description=Информация о шрифтах и просмотрщик шрифта
-tracing.option.TOOLTIP_Description=Подсказка кнопки запуска
-tracing.option.TOPLEVEL_Description=JavaScript высшего уровня
-tracing.option.UI_LOOP_Description=Интерфейс пользовательского отладчика JavaScript
-tracing.option.WINDOWS_Description=Окна Firebug & Обозреватель вкладок
-tracing.option.XMLVIEWER_Description=Просмотр XML
+Open_Firebug_Tracing=Открыть слежение Firebug
+Always_Open_Firebug_Tracing=Всегда открывать слежение Firebug
+title.Tracing=Слежение
+tracing.Show_Scope_Variables=Показывать переменные охвата
+tracing.Show_Time=Показать время
+tracing.tab.Stack=Стэк
+tracing.tab.Exception=Исключение
+tracing.tab.Properties=Свойства
+tracing.tab.Scope=Охват
+tracing.tab.Response=Ответ
+tracing.tab.Source=Исходный код
+tracing.tab.Interfaces=Интерфейсы
+tracing.tab.Object=Объект
+tracing.tab.Event=Событие
+tracing.cmd.Clear=Очистить
+tracing.cmd.tip.Clear=Удалить все сообщения
+tracing.cmd.Find=Найти
+tracing.cmd.tip.Find=Найти текст
+tracing.cmd.Bookmark=Закладка
+tracing.cmd.tip.Bookmark=Добавить закладку
+tracing.cmd.Restart=Перезапустить Firefox
+tracing.cmd.tip.Restart=Перезапустить Firefox
+tracing.cmd.Exit=Выйти из Firefox
+tracing.cmd.tip.Exit=Выйти из Firefox
+tracing.cmd.Save=Сохранить в файл
+tracing.cmd.tip.Save=Сохранить логи в файл
+tracing.cmd.Load=Загрузить из файла
+tracing.cmd.tip.Load=Загрузить логи из файла
+tracing.cmd.Expand_All=Развернуть всё
+tracing.cmd.Collapse_All=Свернуть всё
+tracing.cmd.Tools=Инструменты
+tracing.cmd.tip.Tools=Инструменты
+tracing.cmd.Clear_Browser_Cache=Очистить кэш браузера
+tracing.cmd.tip.Clear_Browser_Cache=Очистить кэш браузера
+tracing.cmd.Force_Garbage_Collector=Принудительный сборщик мусора
+tracing.cmd.tip.Force_Garbage_Collector=Принудительный сборщик мусора
+tracing.cmd.Open_Profile_Directory=Открыть папку профиля
+tracing.cmd.tip.Open_Profile_Directory=Открыть папку профиля
+tracing.option.A11Y_Description=Проблемы доступности
+tracing.option.ACTIVATION_Description=Активация Firebug
+tracing.option.ACTIVITYOBSERVER_Description=Обозреватель активности Firebug
+tracing.option.ANNOTATIONS_Description=Аннотация сайта Firebug
+tracing.option.BP_Description=Точки останова
+tracing.option.CACHE_Description=Исходный код кэша
+tracing.option.COMMANDLINE_Description=Командная строка & Всплывающая командная строка
+tracing.option.COMPILATION_UNITS_Description=Единицы компиляции скрипта
+tracing.option.CONSOLE_Description=Панель консоли
+tracing.option.CSS_Description=Разбор CSS
+tracing.option.DISPATCH_Description=Диспетчер событий
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Создание Domplate
+tracing.option.EDITOR_Description=Быстрое редактирование & Автозавершение
+tracing.option.ERRORLOG_Description=Лог ошибок JS, CSS, XML и т.д.
+tracing.option.ERRORS_Description=Внутренние ошибки Firebug
+tracing.option.EVAL_Description=Оценка скрипта
+tracing.option.FBS_BP_Description=Сервис Firebug: Точки останова
+tracing.option.FBS_CREATION_Description=Сервис Firebug: Создание скрипта
+tracing.option.FBS_ERRORS_Description=Сервис Firebug: Ошибки
+tracing.option.FBS_FINDDEBUGGER_Description=Сервис Firebug: Поиск отладчика
+tracing.option.FBS_FUNCTION_Description=Сервис Firebug: Функция
+tracing.option.FBS_JSDCONTEXT_Description=Сервис Firebug: Контекст отладчика JavaScript
+tracing.option.FBS_SRCUNITS_Description=Сервис Firebug: Единицы исходного кода
+tracing.option.FBS_STEP_Description=Сервис Firebug: Шаги отладчика JavaScript
+tracing.option.FBS_TRACKFILES_Description=Сервис Firebug: Отслеживаемые файлы
+tracing.option.FUNCTION_NAMES_Description=Названия функций JavaScript
+tracing.option.HISTORY_Description=История навигации Firebug
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=Обозреватель HTTP-запросов
+tracing.option.INFOTIP_Description=Подсказка
+tracing.option.INITIALIZE_Description=Инициализация Firebug
+tracing.option.INSPECT_Description=Анализатор
+tracing.option.JSONVIEWER_Description=Просмотр JSON
+tracing.option.LINETABLE_Description=Линия таблицы скрипта
+tracing.option.LOCALE_Description=Локализация
+tracing.option.LOCATIONS_Description=Местонахождение исходного кода
+tracing.option.NET_Description=Панель Сети
+tracing.option.NET_EVENTS_Description=Сетевые события
+tracing.option.OPTIONS_Description=Настройки Firebug
+tracing.option.PANELS_Description=Панели
+tracing.option.SHORTCUTS_Description=Горячие клавиши
+tracing.option.SOURCEFILES_Description=Исходный код файлов JavaScript
+tracing.option.SPY_Description=Обозреватель XMLHttpRequests
+tracing.option.STACK_Description=Стэк вызовов JavaScript
+tracing.option.STORAGE_Description=Хранилище настроек
+tracing.option.SVGVIEWER_Description=Просмотр SVG
+tracing.option.FONTS_Description=Информация о шрифтах и просмотрщик шрифта
+tracing.option.TOOLTIP_Description=Подсказка кнопки запуска
+tracing.option.TOPLEVEL_Description=JavaScript высшего уровня
+tracing.option.UI_LOOP_Description=Интерфейс пользовательского отладчика JavaScript
+tracing.option.WINDOWS_Description=Окна Firebug & Обозреватель вкладок
+tracing.option.XMLVIEWER_Description=Просмотр XML
diff --git a/locale/ru/firebug.properties b/locale/ru/firebug.properties
index b7d094c..bbb2828 100644
--- a/locale/ru/firebug.properties
+++ b/locale/ru/firebug.properties
@@ -1,1013 +1,1013 @@
-Firebug=Firebug
-WindowTitle=Firebug - %S
-Panel-console=Консоль
-panel.tip.console=Даёт возможность просматривать сообщения консоли и выполнять команды JavaScript
-Panel-net=Сеть
-panel.tip.net=Даёт возможность анализировать сетевой траффик
-Panel-html=HTML
-panel.tip.html=Даёт возможность просматривать и изменять ноды DOM
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Даёт возможность просматривать и изменять CSS-файлы
-Panel-script=Сценарий
-panel.tip.script=Даёт возможность производить отладку JavaScript
-Panel-dom=DOM
-panel.tip.dom=Даёт возможность просматривать и изменять свойства DOM
-Panel-css=Стиль
-panel.tip.css=Даёт возможность просматривать и изменять CSS-правила выбранной ноды DOM
-Panel-computed=Скомпилированный стиль
-panel.tip.computed=Даёт возможность просматривать скомпилированные CSS-правила выбранной ноды DOM
-Panel-layout=Макет
-panel.tip.layout=Даёт возможность просматривать и изменять параметры макета выбранной ноды DOM
-Panel-domSide=DOM
-panel.tip.domSide=Даёт возможность просматривать и изменять свойства DOM выбранной ноды DOM
-Panel-watches=Наблюдение
-panel.tip.watches=Даёт возможность просматривать переменные JavaScript, доступные в текущем стеке и определять наблюдения
-Panel-breakpoints=Точки останова
-panel.tip.breakpoints=Даёт возможность изменять точки останова
-Panel-callstack=Стек вызовов
-panel.tip.callstack=Даёт возможность просматривать текущий стек вызовов JavaScript
-Panel-scopes=Охваты
-firebug.DetachFirebug=Открыть в отдельном окне
-firebug.AttachFirebug=Прикрепить Firebug к окну браузера
-pluralRule=1
-plural.Total_Firebugs2=%1$S Firebug;Всего %1$S Firebug\'ов
-startbutton.tip.deactivated=Отключен
-panel.status=%S: %S
-inBrowser=В браузере
-minimized=Свёрнуто
-enablement.for_all_pages=для всех страниц
-enablement.on=Включено
-enablement.off=Выключено
-enablement.Panel_activation_status=Статус активации панели:
-none=Закрыт
-Firebug_-_inactive_for_current_website=Firebug отключен для текущего сайта
-Activate_Firebug_for_the_current_website=Активировать Firebug для текущего сайта
-Minimized=Свёрнут
-Minimize_Firebug=Свернуть Firebug
-On_for_all_web_pages=Включить на всех страницах
-firebug.menu.tip.On_for_all_Web_Sites=Актимировать Firebug по-умолчанию для всех сайтов
-firebug.menu.Clear_Activation_List=Очистить список активаций
-firebug.menu.tip.Clear_Activation_List=Очистить список сайтов, на которых активирован Firebug
-firebug.menu.Detached=В отдельном окне
-firebug.menu.tip.Detached=Открыть Firebug в отдельном окне
-firebug.menu.Top=Вверху
-firebug.menu.tip.Top=Расположить Firebug вверху родительского окна
-firebug.menu.Bottom=Внизу
-firebug.menu.tip.Bottom=Расположить Firebug внизу родительского окна
-firebug.menu.Left=Слева
-firebug.menu.tip.Left=Расположить Firebug в левой части родительского окна
-firebug.menu.Right=Справа
-firebug.menu.tip.Right=Расположить Firebug в правой части родительского окна
-firebug.uiLocation=Положение окна Firebug
-firebug.menu.tip.UI_Location=Расположение пользовательского интерфейса Firebug
-annotations.confirm.clear=Вы желаете очистить список аннотаций Firebug для всех сайтов?
-firebug_options=Опции Firebug
-firebug.Show_All_Panels=Показать все панели
-console.option.Show_Command_Line=Показать командную строку
-console.option.tip.Show_Command_Line=Перевести фокус на командную строку / Показать всплывающую командную строку
-ShowJavaScriptErrors=Показывать ошибки JavaScript
-console.option.tip.Show_JavaScript_Errors=Записывать ошибки JavaScript в консоль
-ShowJavaScriptWarnings=Показывать предупреждения JavaScript
-console.option.tip.Show_JavaScript_Warnings=Записывать предупреждения JavaScript в консоль
-ShowCSSErrors=Показывать ошибки CSS
-console.option.tip.Show_CSS_Errors=Записывать ошибки CSS в консоль
-ShowXMLHTMLErrors=Показывать ошибки XML/HTML
-console.option.tip.Show_XML_HTML_Errors=Записывать в консоль сообщения об ошибках XML и HTML
-ShowStackTrace=Показывать ошибки в стеке
-console.option.tip.Show_Stack_Trace=Показывать информацию трассировки стека для сообщений об ошибках
-ShowXMLHttpRequests=Показывать AJAX запросы
-console.option.tip.Show_XMLHttpRequests=Записывать информацию XMLHttpRequests в консоль
-ShowChromeErrors=Показывать ошибки Chrome
-console.option.tip.Show_System_Errors=Записывать сообщения о внутренних ошибках программы и аддонов в консоль
-ShowChromeMessages=Показывать сообщения Chrome
-console.option.tip.Show_System_Messages=Записывать сообщения о внутренних сообщениях программы и аддонов в консоль
-ShowNetworkErrors=Показывать ошибки сети
-console.option.tip.Show_Network_Errors=Записывать ошибки сети в консоль
-JavascriptOptionsStrict=Строгие предупреждения (потери производительности)
-console.option.tip.Show_Strict_Warnings=Записывать строгие предупреждения в консоль
-Command_History=История команд
-console.option.Show_Command_Editor=Показать редактор команд
-console.option.tip.Show_Command_Editor=Переключится на редактор команд
-commandLineShowCompleterPopup=Показывать автодополнение
-console.option.tip.Show_Completion_List_Popup=Показывать автодополнения для команд
-Assertion=Ошибка в утверждении
-Line=%S (строка %S)
-LineAndCol=%S (строка %S, столбец %S)
-InstanceLine=%S #%S (строка %S)
-StackItem=%S (%S в строке %S)
-SystemItem=<Система>
-panel.Inspect_In_Panel=Инспектировать в панели %S
-panel.tip.Inspect_In_Panel=Переключиться на панель %S, для изучения объекта там
-NoName=(без имени)
-jsdIScript=jsdIScript %S
-ShowFullText=Показывать полный текст
-html.option.tip.Show_Full_Text=Не обрезать содержимое элемента
-ShowWhitespace=Показывать пустые пробелы
-html.option.tip.Show_Whitespace=Показывать непечатаемые символы в нодах
-ShowComments=Показывать комментарии
-html.option.tip.Show_Comments=Показывать ноды-комментарии
-html.option.Show_Entities_As_Symbols=Показывать сущности в виде символов
-html.option.tip.Show_Entities_As_Symbols=Показывать все XML-сущности в виде символического представления
-html.option.Show_Entities_As_Names=Показывать сущности в виде имён
-html.option.tip.Show_Entities_As_Names=Показывать все XML-сущности в виде имён
-html.option.Show_Entities_As_Unicode=Показывать сущности в виде Юникода
-html.option.tip.Show_Entities_As_Unicode=Показывать все XML-сущности в виде Юникода
-HighlightMutations=Подсвечивать изменения
-html.option.tip.Highlight_Mutations=Подсвечивать изменения внутри нод
-ExpandMutations=Разворачивать изменения
-html.option.tip.Expand_Mutations=Разворачивать дерево для отображения изменённых нод
-ScrollToMutations=Прокручивать к изменениям
-html.option.tip.Scroll_To_Mutations=Прокручивать дерево для указания на изменённые ноды
-ShowQuickInfoBox=Показывать окно быстрой информации
-inspect.option.tip.Show_Quick_Info_Box=Показывать информацию об инспектируемом элементе внутри окна быстрой информации
-ShadeBoxModel=Модель Shade Box
-inspect.option.tip.Shade_Box_Model=Затенять разные части блочной модели
-ScrollIntoView=Прокрутить к элементу
-html.tip.Scroll_Into_View=Прокручивать страницу для отображения элемента
-NewAttribute=Новый атрибут...
-html.tip.New_Attribute=Добавить новый атрибут к этому элементу
-html.Edit_Node=Редактировать %S…
-html.Node=Нода
-html.tip.Edit_Node=Редактировать %S используя полный текстовый редактор
-DeleteElement=Удалить элемент
-html.Delete_Element=Удалить элемент из дерева
-DeleteNode=Удалить узел
-html.Delete_Node=Удалить ноду из дерева
-quickInfo=Быстрая информация
-computedStyle=Скомпилированный стиль
-html.Break_On_Mutate=Останавливаться при изменении
-html.Disable_Break_On_Mutate=Отключить остановку при изменении
-html.label.Break_On_Text_Change=Останавливать при изменении текста
-html.label.HTML_Breakpoints=Точки останова HTML
-html.label.Break_On_Attribute_Change=Останавливаться при изменении атрибута
-html.tip.Break_On_Attribute_Change=Остановить исполнение JavaScript когда атрибут элемента изменится
-html.label.Break_On_Child_Addition_or_Removal=Останавливаться при добавлении/удалении потомка
-html.tip.Break_On_Child_Addition_or_Removal=Остановить исполнение JavaScript когда дочерняя нода добавлена или удалена из элемента
-html.label.Break_On_Element_Removal=Останавливать при удалении элемента
-html.tip.Break_On_Element_Removal=Остановить исполнение JavaScript когда элемент удалён
-html.label.Expand/Contract_All=Развернуть/Свернуть всё
-html.tip.Expand/Contract_All=Развернуть/свернуть всех потомков рекурсивно
-dom.scopeName=(замыкание)
-dom.scopeParentName=(охват родителя)
-dom.tip.scopeName=Используйте <func>.%closureVariable для доступа в командной строке
-dom.tip.scopeMemberName=Используйте <func>.%S для доступа в командной строке
-firebug.reps.declarativeScope=[декларативный охват]
-firebug.reps.objectScope=[объектный охват]
-firebug.reps.withScope=[с охватом]
-firebug.reps.optimizedAway=(оптимизированы)
-firebug.reps.element.attribute_value=значение атрибута
-firebug.reps.element.property_value=значение свойства
-dom.label.breakOnPropertyChange=Останавливаться при изменении свойства
-dom.tip.Break_On_Property_Change=Остановить исполнение JavaScript когда это свойство изменится
-dom.disableBreakOnPropertyChange=Отключить остановку при изменении свойста
-dom.label.DOM_Breakpoints=Точки останова DOM
-EditAttribute=Редактировать атрибут \"%S\"...
-html.tip.Edit_Attribute=Редактировать значение атрибута "%S" данного элемента
-DeleteAttribute=Удалить атрибут \"%S\"
-html.tip.Delete_Attribute=Удалить атрибут "%S" данного элемента
-InheritedFrom=Унаследовано от
-SothinkWarning=Расширение Sothink SWF Catcher мешает корректно работать Firebug.<br><br>Пожалуйста прочтите <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">этот пункт из FAQ Firebug</a> для получения дополнительной информации.
-css.fontFamilyPreview=Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства. 0123456789
-css.EmptyStyleSheet=Правила отсутствуют. Вы можете <a>создать правило</a>.
-css.EmptyElementCSS=Для данного элемента правила отсутствуют. Вы можете <a>создать правило</a> для него.
-EditStyle=Редактировать стиль элемента...
-style.tip.Edit_Style=Редактировать inline-стиль элемента
-AddRule=Добавить правило…
-css.tip.AddRule=Добавить правило к данному элементу
-NewRule=Новое правило...
-css.tip.New_Rule=Добавить новое правило
-css.Delete_Rule=Удалить "%S"
-css.tip.Delete_Rule=Удалить правило "%S" и все его свойства
-css.menu.Edit_Media_Query=Редактировать Media Query…
-css.menu.tip.Edit_Media_Query=Редактировать media query назначенную этому правилу
-NewProp=Новое свойство...
-css.tip.New_Prop=Добавить новое свойство текущему правилу
-EditProp=Редактировать \"%S\"...
-css.tip.Edit_Prop=Редактировать значение свойства "%S"
-DisableProp=Выключить \"%S\"
-css.tip.Disable_Prop=Отключить свойство "%S"
-DeleteProp=Удалить \"%S\"
-css.tip.Delete_Prop=Удалить свойство "%S"
-BreakOnThisError=Остановиться на текущей ошибке
-console.menu.tip.Break_On_This_Error=Остановить исполнение JavaScript как только возникнет эта ошибка
-BreakOnAllErrors=Останавливаться на всех ошибках
-console.menu.tip.Break_On_All_Errors=Остановить исполнение JavaScript как только возникнет ошибка
-TrackThrowCatch=Отслеживать стек вызовов
-script.option.tip.Track_Throw_Catch=Отслеживать исключения, даже когда они пойманы блоками try/catch
-UseLastLineForEvalName=Использовать последнюю линию исходного кода в качестве имени eval
-UseMD5ForEvalName=Использовать MD5 в качестве имени eval
-Breakpoints=Точки останова
-ErrorBreakpoints=Ошибочные точки останова
-LoggedFunctions=Функции в журнале
-EnableAllBreakpoints=Включить все точки останова
-breakpoints.option.tip.Enable_All_Breakpoints=Включить все перечисленные точки останова
-DisableAllBreakpoints=Выключить все точки останова
-breakpoints.option.tip.Disable_All_Breakpoints=Отключить все перечисленные точки останова
-ClearAllBreakpoints=Удалить все точки останова
-breakpoints.option.tip.Clear_All_Breakpoints=Удалить все перечисленные точки останова
-ConditionInput=Остановится только в случае если выражение истинно:
-breakpoints.Remove_Breakpoint=Удалить точку останова
-breakpoints.tip.Remove_Breakpoint=Удалить точку останова
-breakpoints.Disable_Breakpoint=Отключить точку останова
-breakpoints.tip.Disable_Breakpoint=Отключить точку останова
-breakpoints.Enable_Breakpoint=Включить точку останова
-breakpoints.tip.Enable_Breakpoint=Включить точку останова
-script.balloon.Continue=Продолжить
-script.balloon.Disable=Отключить
-ScriptsFilterStatic=Показывать статичные скрипты
-ScriptsFilterEval=Показывать статичные и eval-скрипты
-ScriptsFilterEvent=Показывать статичные и event-скрипты
-ScriptsFilterAll=Показывать статичные, eval и event-скрипты
-ScriptsFilterStaticShort=статичные
-ScriptsFilterEvalShort=eval\'ы
-ScriptsFilterEventShort=event\'ы
-ScriptsFilterAllShort=все
-callstack.Expand_All=Развернуть все
-callstack.tip.Expand_All=Развернуть все функции фрейма стека
-callstack.Collapse_All=Свернуть все
-callstack.tip.Collapse_All=Свернуть все функции фрейма стека
-callstack.Execution_not_stopped=Фреймы стека отображаются когда исполнение скрипта остановлено.
-ShowUserProps=Показывать пользовательские свойства
-dom.option.tip.Show_User_Props=Показать свойства объекта, установленные пользователем
-ShowUserFuncs=Показывать пользовательские функции
-dom.option.tip.Show_User_Funcs=Показать методы объекта, установленные пользователем
-ShowDOMProps=Показывать свойства DOM
-dom.option.tip.Show_DOM_Props=Показать свойства, определённые внутри DOM
-ShowDOMFuncs=Показывать функции DOM
-dom.option.tip.Show_DOM_Funcs=Показать функции, определённые внутри DOM
-ShowDOMConstants=Показывать константы DOM
-dom.option.tip.Show_DOM_Constants=Показать константы, определённые внутри DOM
-ShowClosures=Показать замыкания
-dom.option.tip.Show_Closures=Показывает замыкания, связанные с различными функциями (активирует дебаггер)
-ShowInlineEventHandlers=Показывать встроенные обработчики событий
-ShowInlineEventHandlersTooltip=Показывать встроенные обработчики событий, которые не ассоциированны с функцией.
-ShowOwnProperties=Показывать только собственные свойства
-ShowOwnPropertiesTooltip=Не показывать цепочку прототипирования
-ShowEnumerableProperties=Показывать только перечислимые свойства
-ShowEnumerablePropertiesTooltip=Не показывать не перечислимые свойства
-NoMembersWarning=У этого объекта нет свойств.
-NewWatch=Новое наблюдение...
-AddWatch=Добавить наблюдение
-watch.tip.Add_Watch=Добавить выделение/объект в панель Слежения для просмотра
-CopySourceCode=Копировать исходный код
-script.tip.Copy_Source_Code=Скопировать выделенный исходный код в буфер обмена
-Use_hash_plus_number_to_go_to_line=Используйте #<номер> для перехода к нужной строке
-CopyValue=Копировать значение
-dom.tip.Copy_Value=Скопировать значение свойства в буфер обмена
-Copy_Name=Скопировать имя
-dom.tip.Copy_Name=Скопировать наименование свойства в буфер обмена
-Copy_Path=Скопировать путь
-dom.tip.Copy_Path=Скопировать путь свойства
-NewProperty=Новое свойство...
-EditProperty=Редактировать свойство...
-dom.tip.Edit_Property=Редактировать значение свойства
-EditVariable=Редактировать переменную...
-stack.tip.Edit_Variable=Редактировать значение переменной
-EditWatch=Редактировать наблюдение...
-watch.tip.Edit_Watch=Редактировать значение выражения слежения
-DeleteProperty=Удалить свойство
-dom.tip.Delete_Property=Удалить свойство
-DeleteWatch=Удалить наблюдение
-DeleteAllWatches=Удалить все наблюдения
-watch.tip.Delete_Watch=Удалить выражение слежения
-watch.tip.Delete_All_Watches=Удалить все выражения наблюдения
-SetBreakpoint=Установить точку останова
-script.tip.Set_Breakpoint=Переключает точку останова на текущей строке
-EditBreakpointCondition=Редактировать условие точки останова...
-breakpoints.tip.Edit_Breakpoint_Condition=Редактировать условие, при котором данная точка останова прекращает выполнение JavaScript
-NoBreakpointsWarning=На этой странице нет точек останова.
-Only_Show_Applied_Styles=Показывать только применённые стили
-style.option.tip.Only_Show_Applied_Styles=Показывать только те стили, которые применены к элементу
-Show_User_Agent_CSS=Показывать CSS браузера
-style.option.tip.Show_User_Agent_CSS=Так же показывать CSS определённый браузером
-computed.option.label.Colors_As_Hex=Цвета в виде HEX
-computed.option.tip.Colors_As_Hex=Показывать цвета в виде шестнадцатеричных кодов
-computed.option.label.Colors_As_RGB=Цвета в виде RGB
-computed.option.tip.Colors_As_RGB=Показывать цвета в виде RGB формата
-computed.option.label.Colors_As_HSL=Цвета в виде HSL
-computed.option.tip.Colors_As_HSL=Показывать цвета в виде HSL формата
-style.option.label.active=:active
-style.option.tip.active=Показывать стили псевдо-класса :active
-style.option.label.hover=:hover
-style.option.tip.hover=Показывать стили псевдо-класса :hover
-style.option.label.focus=:focus
-style.option.tip.focus=Показывать стили псевдо-класса :focus
-css.label.Inspect_Declaration=Инспектировать объявление
-css.tip.Inspect_Declaration=Инспектировать объявление данного шрифта
-Expand_Shorthand_Properties=Развернуть краткие свойства
-css.option.tip.Expand_Shorthand_Properties=Развернуть сокращённые свойства CSS в составляющие компоненты
-Sort_alphabetically=Сортировать по алфавиту
-computed.option.tip.Sort_Alphabetically=Сортировать стили по имени/группе в категории
-Show_Mozilla_specific_styles=Показывать стили, специфические для Mozilla
-computed.option.tip.Show_Mozilla_Specific_Styles=Всегда показывать стили с префиксом -moz
-computed.No_User-Defined_Styles=У данного элемента отсутствуют правила, определённые пользователем.
-script.Type_any_key_to_filter_list=Нажмителю любую клавишу для фильтрации
-location.inline=Внутренние
-location.no_domain=Без домена
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=позиция
-LayoutAdjacent=смежный
-position=позиция
-ShowRulers=Показывать линейки и направляющие
-layout.option.tip.Show_Rulers=Показывать линейки и направляющие на странице, при наведении на элементы блока макета
-Loading=Загружается...
-Headers=Заголовки
-net.tip.Clear=Очистить список запросов
-net.header.Reset_Header=Сбросить заголовок
-net.header.tip.Reset_Header=Сбросить экран заголовков
-net.header.URL=URL
-net.header.URL_Tooltip=Запрошенный URL и использованный метод HTTP.
-net.header.Status=Статус
-net.header.Status_Tooltip=Статус полученного ответа.
-net.header.Domain=Домен
-net.header.Domain_Tooltip=Домен исполненного запроса.
-net.header.Size=Размер
-net.header.Size_Tooltip=Размер полученного ответа.
-net.header.Timeline=Временная линия
-net.header.Timeline_Tooltip=Детальная информация о времени ответа на запрос.
-net.header.Local_IP=Локальный IP
-net.header.Local_IP_Tooltip=Локальный IP адрес и порт, к которому привязывается запрос.
-net.header.Remote_IP=Удалённый IP
-net.header.Remote_IP_Tooltip=Удалённый IP адрес и порт, к которому привязывается запрос.
-net.header.Protocol=Протокол
-net.header.Protocol_Tooltip=Протокол, используемый для поиска ресурса в сети.
-net.label.XHR_Breakpoints=Точки останова XHR
-net.label.Break_On_XHR=Останавливать при XHR
-net.tip.Break_On_XHR=Остановить исполнение JavaScript как только сделан XMLHttpRequest
-net.headers.view_source=показать исходный код
-net.headers.pretty_print=симпатичный print
-net.filter.label.All=Все
-net.filter.tooltip.All=Показывать все MIME-типы
-net.filter.label.HTML=HTML
-net.filter.tooltip.HTML=Показывать только файлы разметки
-net.filter.label.CSS=CSS
-net.filter.tooltip.CSS=Показывать только файлы CSS
-net.filter.label.JS=JavaScript
-net.filter.tooltip.JS=Показывать только файлы JavaScript
-net.filter.label.XHR=XHR
-net.filter.tooltip.XHR=Показывать только XMLHttpRequests
-net.filter.label.Images=Изображения
-net.filter.tooltip.Images=Показывать только изображения
-net.filter.label.Plugins=Плагины
-net.filter.tooltip.Plugins=Показывать только файлы Flash и Silverlight
-net.filter.label.Media=Медиа
-net.filter.tooltip.Media=Показывать только аудио и видео
-net.filter.label.Fonts=Шрифты
-net.filter.tooltip.Fonts=Показывать только шрифты
-Post=Post
-Put=Put
-Response=Ответ
-URLParameters=Параметры
-Cache=Кэш
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Общая информация
-fontviewer.Meta_Data=Мета-данные
-fontviewer.view_source=показать источник
-fontviewer.Preview=Предпросмотр
-fontviewer.view_characters=показать символы
-fontviewer.pretty_print=симпатичная печать
-fontviewer.view_sample=показать образец
-fontviewer.uniqueid=Уникальный ID
-fontviewer.vendor=Разработчик
-fontviewer.license=Лицензия
-fontviewer.description=Описание
-fontviewer.copyright=Авторские права
-fontviewer.credits=Авторы
-fontviewer.trademark=Торговая марка
-fontviewer.licensee=Лицензия
-fontviewer.extension=Расширение
-fontviewer.pangram=Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.
-jsonviewer.sort=Сортировать по ключу
-jsonviewer.do_not_sort=Не сортировать
-net.jsonviewer.Copy_JSON=Копировать \\\"%S\\\" как JSON
-RequestHeaders=Заголовки запроса
-ResponseHeaders=Заголовки ответа
-CachedResponseHeaders=Заголовки ответа из кэша
-PostRequestHeaders=Запрос заголовков из потока загрузки
-net.label.ResponseHeadersFromBFCache=Данные запроса были получены из кэша, мы не получили ответа от сервера. Ниже отображён кэшированный ответ.
-plural.Limit_Exceeded2=Был достигнут лимит журнала сообщений Firebug. %1$S вхождение не отображается.;Был достигнут лимит журнала сообщений Firebug. Не отображается %1$S вхождений.
-LimitPrefs=Настройки лимита
-LimitPrefsTitle=Для изменения лимита отредактируйте: %S
-Refresh=Обновить
-panel.tip.Refresh=Обновить экран панели
-OpenInTab=Открыть в новой вкладке
-firebug.tip.Open_In_Tab=Открыть URL в новой вкладке
-Open_Response_In_New_Tab=Открыть ответ в новой вкладке
-net.tip.Open_Response_In_New_Tab=Открыть ответ в новой вкладке
-Profile=Профилирование
-ProfilerStarted=Профайлер запущен. Нажмите \'Профилирование\' ешё раз для просмотра отчета.
-ProfilerRequiresTheScriptPanel=Панель Сценарий должна быть включена, чтобы заработал профайлер.
-plural.Profile_Time2=(%1$Sms, %2$S вызов);(%1$Sms, %2$S вызовов)
-NothingToProfile=Нечего профилировать.
-PercentTooltip=Процентное соотношение времени проведенного в этой функции.
-CallsHeaderTooltip=Кол-во вызовов функции.
-OwnTimeHeaderTooltip=Время проведенное в функции, исключая вложенные вызовы.
-TimeHeaderTooltip=Время проведенное в функции, включая вложенные вызовы.
-AvgHeaderTooltip=Среднее время, включая вызовы функций.
-MinHeaderTooltip=Минимальное время, включая вызовы функций.
-MaxHeaderTooltip=Максимальное время, включая вызовы функций.
-ProfileButton.Tooltip=Профилировать время исполнения JavaScript
-Function=Функция
-Percent=Процент
-Calls=Вызовы
-OwnTime=Собственное время
-Time=Время
-Avg=Средн.
-Min=Мин.
-Max=Макс.
-File=Файл
-Copy=Копировать
-Cut=Вырезать
-Remove=Удалить
-Delete=Удалить
-Paste=Вставить
-SelectAll=Выбрать всё
-html.Copy_Node=Копировать %S
-html.tip.Copy_Node=Копировать ноду %S и всё содержимое в буфер обмена
-CopyInnerHTML=Копировать innerHTML
-html.tip.Copy_innerHTML=Копировать содержимое элемента в буфер обмена
-CopyXPath=Копировать XPath
-html.tip.Copy_XPath=Копировать XPath элемента в буфер обмена
-Copy_CSS_Path=Скопировать CSS-путь
-html.tip.Copy_CSS_Path=Копировать CSS путь элемента в буфер обмена
-html.menu.Paste=Вставить %S
-html.tip.Paste=Вставить %S как содержимое
-html.menu.Paste_Replace_Content=Заменить содержимое
-html.tip.Paste_Replace_Content=Заменить содержимое ноды
-html.menu.Paste_Replace_Node=Заменить ноду
-html.tip.Paste_Replace_Node=Заменить HTML ноды
-html.menu.Paste_AsFirstChild=Как первый потомок
-html.tip.Paste_AsFirstChild=Вставить как первый потомок ноды
-html.menu.Paste_AsLastChild=Как последний потомок
-html.tip.Paste_AsLastChild=Вставить как последний потомок ноды
-html.menu.Paste_Before=Перед
-html.tip.Paste_Before=Вставить перед нодой
-html.menu.Paste_After=После
-html.tip.Paste_After=Вставить после ноды
-html.menu.Reload_Frame=Перезагрузить фрейм
-html.menu.tip.Reload_Frame=Перезагрузить содержимое фрейма
-CopyLocation=Копировать адрес
-clipboard.tip.Copy_Location=Копировать URL расположения объекта в буфер обмена
-CopyURLParameters=Скопировать параметры URL
-net.tip.Copy_URL_Parameters=Скопировать параметры URL в буфер обмена
-CopyPOSTParameters=Скопировать параметры POST
-net.tip.Copy_POST_Parameters=Скопировать параметры POST в буфер обмена
-CopyLocationParameters=Копировать адрес с параметрами
-net.tip.Copy_Location_Parameters=Копировать URL включая параметры в буфер обмена
-CopyRequestHeaders=Копировать заголовки запроса
-net.tip.Copy_Request_Headers=Копировать заголовки запроса в буфер обмена
-CopyResponseHeaders=Копировать заголовки ответа
-net.tip.Copy_Response_Headers=Копировать заголовки ответа в буфер обмена
-CopyResponse=Копировать тело ответа
-net.tip.Copy_Response=Копировать тело ответа в буфер обмена
-CopyError=Копировать ошибку
-console.menu.tip.Copy_Error=Копировать информацию об ошибке в буфер обмена
-CopySource=Копировать функцию
-dom.tip.Copy_Source=Копировать исходный код функции в буфер обмена
-ShowCallsInConsole=Записывать вызовы к \"%S\"
-dom.tip.Log_Calls_To_Function=Записывать в консоль вызовы функции "%S"
-ShowEventsInConsole=Записывать события
-html.tip.Show_Events_In_Console=Записывать в консоль информацию о событии
-panel.Enabled=Панель включена
-panel.tip.Enabled=Переключить активацию панели
-panel.tooltip.Show_Command_Line_Popup=Показать всплывающую командную строку
-console.MethodNotSupported=Консоль Firebug не поддерживает \'%S\'
-commandline.errorSourceHeader=ВЫРАЖЕНИЕ ВЫПОЛНЕНО С ИСПОЛЬЗОВАНИЕМ КОМАНДНОЙ СТРОКИ FIREBUG:
-commandline.MethodDisabled=Этот метод командной строки временно отключен.
-commandline.MethodNotSupported=Командная строка Firebug не поддерживает \'%S\'
-commandline.CurrentWindow=Текущее окно:
-console.Disable_Break_On_All_Errors=Отключить остановку при ошибках
-console.Break_On_All_Errors=Останавливать на всех ошибках
-console.Break_On_This_Error=Прерывать на этой ошибке
-console.Use_Arrow_keys,_Tab_or_Enter=Используйте клавиши со стрелками, Tab или Enter
-console.JSDisabledInFirefoxPrefs=JavaScript отключен в настройках Firefox. Если Вы желаете использовать консоль, пожалуйста подключите Javascript - \'Инструменты\' -> \'Настройки\' -> \'Содержимое\' -> \'Использовать JavaScript\'
-console.ScriptPanelMustBeEnabledForTraces=Панель Сценарий должна быть включена, чтобы получить ошибки в стэке. <a>Включить панель Сценарий.</a>
-tooltip.multipleFiltersHint=Используйте Ctrl+мышь для выбора нескольких фильтров
-console.multiHighlightLimitExceeded=В массиве слишком много элементов для подсвечивания на странице (текущий лимит - %S).\\\\nСмотрите настройку \\\'extensions.firebug.multiHighlightLimit\\\'.
-commandline.disabledForXMLDocs=Командная строка Firebug отключена для XML-страниц. Вы можете <a>переключиться на HTML</a> для работы с ней.
-commandline.Use_in_Command_Line=Использовать в командной строке
-commandline.tip.Use_in_Command_Line=Перевести фокус на командную строку и сделать это значение доступным как "$p"
-commandline.include.includeSuccess=%S успешно подключен.
-commandline.include.aliasNotFound=Псевдоним "%S" не найден.
-commandline.include.loadFail=Скрипт не может быть загружен: %S
-commandline.include.invalidRequestProtocol=Поддерживаются только HTTP/HTTPS протоколы.
-commandline.include.invalidSyntax=Не удалось подключить по причине ошибок синтаксиса. Файл на самом деле содержит JavaScript?
-commandline.include.aliasCreated=Псевдоним "%S" создан.
-commandline.include.aliasRemoved=Псевдоним "%S" удалён.
-commandline.include.invalidAliasName=Имена псевдонимов не должны содержать "." или "/"; неправильное имя псевдонима: "%S".
-commandline.include.tooLongAliasName=Имена псевдонимов должны содержать не более 30 символов; неправильное имя псевдонима: "%S".
-commandline.include.invalidAliasArgumentType=Неправильный второй аргумент; ожидалось имя псевдонима.
-commandline.include.invalidUrlArgumentType=Неправильный аргумент адреса url.
-commandline.include.confirmDelete=Вы правда хотите удалить псевдоним: "%S"?
-commandline.include.noDefinedAlias=(псевдонимы пока не заданы)
-commandline.tip.Delete_Alias=Удалить псевдоним
-commandline.tip.Edit_Alias_Name=Редактировать имя псевдонима
-commandline.tip.Edit_Alias_URL=Редактировать URL псевдонима
-commandline.tip.Open_In_Scratchpad=Открыть содержимое скрипта в блокноте (Scratchpad)
-commandline.tip.Include_Script=Скачать и выполнить скрипт
-commandline.label.DeleteAlias=Удалить псевдоним
-commandline.label.EditAliasName=Редактировать имя псевдонима
-commandline.label.EditAliasURL=Редактировать URL псевдонима
-commandline.label.OpenInScratchpad=Открыть в блокноте
-commandline.label.IncludeScript=Подключить "%S"
-Do_not_show_this_message_again=Не показывать это сообщение
-scratchpad.loading=Загрузка, пожалуйста подождите…
-scratchpad.failLoading=Во время загрузки скрипта произошла ошибка.
-net.sizeinfo.Response_Body=Тело ответа
-net.sizeinfo.Post_Body=Тело запроса
-net.sizeinfo.Total_Sent=Всего отправлено
-net.sizeinfo.Total_Received=Всего получено
-net.sizeinfo.Including_HTTP_Headers=Включая заголовки HTTP
-net.ActivationMessage=Сетевая панель активирована. Любые запросы, пока сетевая панель неактивна, не будут показаны.
-net.responseSizeLimitMessage=Достигнут лимит ответа Firebug. Нажмите <a>здесь</a>, чтобы открыть полный ответ в новой вкладке Firefox.
-net.postDataSizeLimitMessage=Лимит на размер Post был достигнут. Удалено Firebug\'ом.
-net.Break_On_XHR=Останавливать на XHR
-net.label.Parameters=Параметры
-net.label.Parts=Части
-net.label.Source=Исходный код
-net.label.Resend=Отослать ещё раз
-net.tip.Resend=Отправить запрос ещё раз
-net.option.Disable_Browser_Cache=Отключить кэш браузера
-net.option.tip.Disable_Browser_Cache=Отключить HTTP кэш браузера
-net.option.Show_Paint_Events=Показывать события отрисовки
-net.option.tip.Show_Paint_Events=Показывать события MozAfterPaint в виде зелёных линий внутри линии времени
-net.option.Show_BFCache_Responses=Показывать ответы BFCache
-net.option.tip.Show_BFCache_Responses=Также будут показаны ответы Back-Forward Cache
-script.Break_On_Next=Останавливать на следующей ошибке
-script.Disable_Break_On_Next=Отключить остановку на следующем
-ShowHttpHeaders=Показать HTTP заголовки
-plural.Request_Count2=%1$S запрос;%1$S запросов
-net.summary.from_cache=%S из кэша
-net.summary.tip.request_count=Количество запросов
-net.summary.tip.total_size=Размер всех запросов
-net.summary.tip.total_cached_size=Размер всех кэшированных запросов
-net.summary.tip.total_request_time=Полное время, требуемое для загрузки всех запросов и время появления события 'onload'
-StopLoading=Прервать загрузку
-net.tip.Stop_Loading=Остановить после запроса
-LargeData=(Очень много данных)
-ShowComputedStyle=Показать вычисленный стиль
-StyleGroup-text=Текст
-StyleGroup-background=Фон
-StyleGroup-box=Блочная модель
-StyleGroup-layout=Макет
-StyleGroup-other=Другая
-Dimensions=%S х %S
-CopyColor=Копировать цвет
-css.tip.Copy_Color=Копировать цвет в буфер обмена
-CopyImageLocation=Копировать адрес картинки
-css.tip.Copy_Image_Location=Копировать URL изображения в буфер обмена
-OpenImageInNewTab=Открыть изображение в новой вкладке
-css.tip.Open_Image_In_New_Tab=Открывает изображение в новой вкладке
-OmitObjectPathStack=Пропускать стек панели инструментов
-callstack.option.tip.Omit_Object_Path_Stack=Не отображать стек пути объекта
-Load_Original_Source=Загрузить оригинальный источник
-css.tip.Load_Original_Source=Отбросить изменения и загрузить оригинальный CSS
-callstack.option.Show_Arguments=Показать аргументы
-callstack.option.tip.Show_Arguments=Так же показывать аргументы функций
-Copy_Rule_Declaration=Скопировать объявление правила
-css.tip.Copy_Rule_Declaration=Копировать правило, включая все свойства в буфер обмена
-Copy_Style_Declaration=Копировать определение стиля
-css.tip.Copy_Style_Declaration=Копировать свойства правила в буфер обмена
-css.label.Copy_Property_Declaration=Скопировать объявление свойства
-css.tip.Copy_Property_Declaration=Скопировать объявление свойства в буфер обмена
-css.label.Copy_Property_Name=Скопировать имя свойства
-css.tip.Copy_Property_Name=Скопировать имя свойства в буфер обмена
-css.label.Copy_Property_Value=Скопировать значение свойства
-css.tip.Copy_Property_Value=Скопировать значение свойства в буфер обмена
-plural.Error_Count2=%1$S ошибка;%1$S ошибок
-moduleManager.title=%S панель отключена
-moduleManager.desc3=Используйте иконку статусной строки для включения или отключения панелей. Используйте меню панели для точного управления:
-moduleManager.Enable=Включить
-Suspend_Firebug=Заморозить Firebug
-Resume_Firebug=Возобновить Firebug
-Reset_Panels_To_Disabled=Сбросить панели и отключить
-Open_Console=Открыть консоль
-Open_Console_Tooltip=Открыть панель слежения для Firebug.
-Scope_Chain=Цепь охвата
-With_Scope=С
-Call_Scope=Вызов
-Window_Scope=Окно
-requestinfo.Blocking=Блокирование
-requestinfo.Resolving=DNS-запрос
-requestinfo.Connecting=Подключение
-requestinfo.Sending=Отправка
-requestinfo.Waiting=Ожидание
-requestinfo.Receiving=Получение
-requestinfo.ContentLoad=\'Содержимое DOM загружено\' (событие)
-requestinfo.WindowLoad=\'загрузка\' (событие)
-requestinfo.started.label=Запросить время начала с запуска
-requestinfo.phases.label=Запросить фазы начала и затраченного времени относительно времени запуска:
-requestinfo.timings.label=Время события относительно к началу запроса:
-search.Firebug_Search=Поиск Firebug
-search.Next=След.
-search.tip.Next=Искать следующее совпадение
-search.Previous=Предыдущее
-search.tip.Previous=Искать предыдующее совпадение
-search.Case_Sensitive=Учитывать регистр
-search.tip.Case_Sensitive=Учитывать регистр при поиске
-search.Case_Insensitive=Не учитывать регистр
-search.tip.Case_Insensitive=Игнорировать регистр при поиске
-search.Multiple_Files=Множественные файлы
-search.tip.Multiple_Files=Искать во всех файлах, которые относятся к данной панели
-search.Use_Regular_Expression=Использовать регулярное выражение
-search.tip.Use_Regular_Expression=Интерпретировать поисковой запрос как регулярное выражение при поиске
-search.html.CSS_Selector=Селектор CSS
-search.net.Headers=Заголовки
-search.net.Parameters=Параметры
-search.net.Response_Bodies=Содержимое ответов
-search.net.tip.Response_Bodies=Искать так же в телах ответов
-firebug.console.Persist=Не очищать
-firebug.console.Do_Not_Clear_On_Reload2=Не очищать панель при перезагрузке страницы
-firebug.console.Show_All_Log_Entries=Показывать все записи лога
-firebug.console.Errors=Ошибки
-firebug.console.Filter_by_Errors=Фильтровать по ошибкам
-firebug.console.Warnings=Предупреждения
-firebug.console.Filter_by_Warnings=Фильтровать по предупреждениям
-firebug.console.Info=Информация
-firebug.console.Filter_by_Info=Фильтровать по информации
-firebug.console.Debug_Info=Отладочная информация
-firebug.console.Filter_by_Debug_Info=Фильтровать по отладочной информации
-firebug.Deactivate_Firebug=Отключить Firebug
-firebug.tip.Deactivate_Firebug=Отключить Firebug для данного сайта
-firebug.tip.Toggle_Side_Panels=Переключить отображение боковых панелей
-firebug.ShowFirebug=Открыть Firebug
-firebug.menu.tip.Open_Firebug=Показать Firebug UI
-firebug.HideFirebug=Скрыть Firebug
-firebug.menu.tip.Minimize_Firebug=Свернуть Firebug, но оставить включённым
-firebug.FocusFirebug=Перевести фокус на окно Firebug
-firebug.menu.tip.Focus_Firebug=Перевести фокус на отдельное окно Firebug
-firebug.menu.Enable_All_Panels=Включить все панели
-firebug.menu.tip.Enable_All_Panels=Включить все доступные панели
-firebug.menu.Disable_All_Panels=Отключить все панели
-firebug.menu.tip.Disable_All_Panels=Отключить все доступные панели
-firebug.menu.Customize_shortcuts=Настроить горячие клавиши
-firebug.menu.tip.Customize_Shortcuts=Настроить внутренние сочетания клавиш Firebug
-firebug.Options=Опции
-firebug.menu.tip.Options=Глобальные настройки Firebug
-firebug.menu.Enable_Accessibility_Enhancements=Включить улучшения для ограниченных возможностей
-firebug.menu.tip.Enable_Accessibility_Enhancements=Включить полное управление с клавиатуры и другие специальные возможности
-firebug.menu.Activate_Same_Origin_URLs2=Активировать для всех подобных URL'ов
-firebug.menu.tip.Activate_Same_Origin_URLs=Активировать Firebug для всех URL'ов, совпадающих с политикой происхождения
-firebug.menu.Reset_All_Firebug_Options=Сбросить все настройки Firebug\'а
-firebug.menu.tip.Reset_All_Firebug_Options=Сбросить все настройки Firebug в значения по-умолчанию
-firebug.menu.Firebug_Online=Firebug Online
-firebug.menu.tip.Firebug_Online=Сайты, относящиеся к Firebug
-firebug.menu.Extensions=Расширения Firebug…
-firebug.menu.tip.Extensions=Скачать и установить расширения Firebug
-firebug.menu.Vertical_Panels=Вертикальные панели
-firebug.menu.tip.Vertical_Panels=Переключить макет главной и боковых панелей Firebug
-firebug.menu.Show_Info_Tips=Показывать подсказки
-firebug.menu.tip.Show_Info_Tips=Показывать всплывающие подсказки с информацией об элементе под курсором
-firebug.Show_Error_Count=Показать количество ошибок
-firebug.menu.tip.Show_Error_Count=Показывать количество ошибок, записанных в консоли
-firebug.TextSize=Размер текста
-firebug.menu.tip.Text_Size=Изменить размер текста в Firebug
-firebug.IncreaseTextSize=Увеличить размер текста
-firebug.menu.tip.Increase_Text_Size=Увеличить размер текста в Firebug
-firebug.DecreaseTextSize=Уменьшить размер текста
-firebug.menu.tip.Decrease_Text_Size=Уменьшить размер текста в Firebug
-firebug.NormalTextSize=Сбросить размер текста
-firebug.menu.tip.Normal_Text_Size=Сбросить размер текста в Firebug на значение по-умолчанию
-firebug.Website=Сайт Firebug...
-firebug.menu.tip.Website=Открыть официальный сайт Firebug
-firebug.help=Помощь…
-firebug.menu.tip.help=Открыть страницу со ссылками на страницы, помогающие с Firebug
-firebug.Documentation=Документация...
-firebug.menu.tip.Documentation=Открыть документацию Firebug
-firebug.KeyShortcuts=Горячие клавиши...
-firebug.menu.tip.Key_Shortcuts=Открыть список клавиатурных сокращений Firebug
-firebug.Forums=Обсудить на форуме...
-firebug.menu.tip.Forums=Открыть сайт группы обсуждения
-firebug.Issues=Трэкер задач/ошибок...
-firebug.menu.tip.Issues=Открыть трекер ошибок
-firebug.Donate=Спонсировать...
-firebug.menu.tip.Donate=Открыть сайт помощи проекту
-firebug.About=О расширении...
-firebug.menu.tip.About=Информация о Firebug
-ProfileJavaScript=Профилировать JavaScript
-firebug.menu.tip.Profile_JavaScript=Профилировать время исполнения JavaScript
-firebug.Search=Искать
-firebug.menu.tip.Search=Установить фокус на поле поиска
-firebug.shortcut.reenterCommand.label=Ввести команду
-firebug.shortcut.tip.reenterCommand=Ввести ещё раз последнюю команду в командную строку
-firebug.shortcut.toggleInspecting.label=Переключить анализ
-firebug.shortcut.tip.toggleInspecting=Включить/отключить инспектор
-firebug.shortcut.toggleQuickInfoBox.label=Переключить окно быстрой информации
-firebug.shortcut.tip.toggleQuickInfoBox=Включить/отключить отображение панели с информацией об инспектируемом элементе
-firebug.shortcut.toggleProfiling.label=Переключить профилирование
-firebug.shortcut.tip.toggleProfiling=Включить/отключить профайлер JavaScript
-firebug.shortcut.focusCommandLine.label=Переключиться на командную строку
-firebug.shortcut.tip.focusCommandLine=Открыть Firebug и установить фокус на командную строку / переключить всплывающую командную строку
-firebug.shortcut.focusFirebugSearch.label=Переключиться на поиск Firebug
-firebug.shortcut.tip.focusFirebugSearch=Установить фокус на поле поиска
-firebug.shortcut.focusWatchEditor.label=Переключиться на редактор слежения
-firebug.shortcut.tip.focusWatchEditor=Переключить на панель сценария и установить фокус на поле для ввода нового выражения слежения
-firebug.shortcut.focusLocation.label=Переключиться на адрес
-firebug.shortcut.tip.focusLocation=Открыть меню местоположения
-firebug.shortcut.nextObject.label=Следующий объект
-firebug.shortcut.tip.nextObject=Выбрать следующий объект в пути элемента панели
-firebug.shortcut.previousObject.label=Предыдущий объект
-firebug.shortcut.tip.previousObject=Выбрать предыдущий объект в пути элемента панели
-firebug.shortcut.customizeFBKeys.label=Редактировать горячие клавиши Firebug
-firebug.shortcut.tip.customizeFBKeys=Открыть диалог настроек клавиатурных сокращений Firebug
-firebug.shortcut.detachFirebug.label=Открыть в отдельном окне
-firebug.shortcut.tip.detachFirebug=Вывести Firebug в отдельное окно
-firebug.shortcut.leftFirebugTab.label=Переключиться на левую панель Firebug
-firebug.shortcut.tip.leftFirebugTab=Переключиться на панель Firebug слева
-firebug.shortcut.rightFirebugTab.label=Переключиться на правую панель Firebug
-firebug.shortcut.tip.rightFirebugTab=Переключиться на панель Firebug справа
-firebug.shortcut.toggleFirebug.label=Открыть Firebug
-firebug.shortcut.tip.toggleFirebug=Открыть/свернуть Firebug UI
-firebug.shortcut.closeFirebug.label=Отключить Firebug
-firebug.shortcut.tip.closeFirebug=Отключить Firebug для данного сайта
-firebug.shortcut.previousFirebugTab.label=Предыдущая вкладка Firebug
-firebug.shortcut.tip.previousFirebugTab=Переключиться на предыдущую панель Firebug
-firebug.shortcut.clearConsole.label=Очистить консоль
-firebug.shortcut.tip.clearConsole=Удалить все логи из консоли
-firebug.shortcut.openTraceConsole.label=Открыть консоль слежения
-firebug.shortcut.tip.openTraceConsole=Открыть консоль FBTrace
-firebug.shortcut.navBack.label=Назад
-firebug.shortcut.tip.navBack=Переключиться на предыдущую панель или элемент списка положения истории навигации
-firebug.shortcut.navForward.label=Вперёд
-firebug.shortcut.tip.navForward=Переключиться на следующую панель или элемент списка положения истории навигации
-firebug.shortcut.increaseTextSize.label=Увеличить размер текста
-firebug.shortcut.tip.increaseTextSize=Увеличить размер текста в Firebug
-firebug.shortcut.decreaseTextSize.label=Уменьшить размер текста
-firebug.shortcut.tip.decreaseTextSize=Уменьшить размер текста в Firebug
-firebug.shortcut.normalTextSize.label=Обычный размер текста
-firebug.shortcut.tip.normalTextSize=Сбросить размер текста в Firebug на значение по-умолчанию
-firebug.shortcut.help.label=Открыть справку
-firebug.shortcut.tip.help=Открыть страницу с часто задаваемыми вопросами
-firebug.shortcut.toggleBreakOn.label=Переключить остановку на…
-firebug.shortcut.tip.toggleBreakOn=Включить/отключить остановку выполнения скрипта при возникновении специфичных событий внутри панели
-firebug.panel_selector=Выбор панели
-customizeShortcuts=Назначение горячих клавиш Firebug
-a11y.labels.panel_tools=инструменты панели
-a11y.labels.firebug_panels=Панели Firebug
-a11y.labels.firebug_side_panels=Боковые панели Firebug
-a11y.labels.firebug_window=окно firebug
-a11y.labels.firebug_status=статус firebug
-a11y.labels.reset=сбросить
-a11y.labels.reset_shortcut=сбросить %S ярлык
-aria.labels.inactive_panel=неактивная панель
-a11y.labels.log_rows=строки лога
-a11y.labels.call_stack=стэк вызовов
-a11y.labels.document_structure=структура документа
-a11y.labels.title_panel=%S панель
-a11y.labels.title_side_panel=%S боковая панель
-a11y.labels.cached=кэш
-aria.labels.stack_trace=ошибки в стэке
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=позиция
-a11y.layout.position_top=позиция сверху
-a11y.layout.position_right=позиция справа
-a11y.layout.position_bottom=позиция снизу
-a11y.layout.position_left=позиция слева
-a11y.layout.margin_top=выступ сверху
-a11y.layout.margin_right=выступ справа
-a11y.layout.margin_bottom=выступ снизу
-a11y.layout.margin_left=выступ слева
-a11y.layout.border_top=граница сверху
-a11y.layout.border_right=граница справа
-a11y.layout.border_bottom=граница снизу
-a11y.layout.border_left=граница слева
-a11y.layout.padding_top=отступ сверху
-a11y.layout.padding_right=отступ справа
-a11y.layout.padding_bottom=отступ снизу
-a11y.layout.padding_left=отступ слева
-a11y.layout.top=сверху
-a11y.layout.right=справа
-a11y.layout.bottom=снизу
-a11y.layout.left=слева
-a11y.layout.width=ширина
-a11y.layout.height=высота
-a11y.layout.size=размер
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=габариты клиентского квадрата
-a11y.descriptions.press_enter_to_edit_values=нажмите Enter следом за Tab для редактирования индивидуальных значений
-a11y.labels.style_rules=правила стиля
-aria.labels.inherited_style_rules=унаследованные правила стиля
-a11y.labels.computed_styles=скомпилированные стили
-a11y.labels.dom_properties=свойства DOM
-a11y.labels.inline_editor=встроенный редактор
-a11y.labels.value_for_attribute_in_element=значение атрибута %S элемента %S
-a11y.labels.attribute_for_element=атрибут для элемента %S
-a11y.labels.text_contents_for_element=текстовое содержимое элемента %S
-a11y.labels.defined_in_file=определёно в %S
-a11y.labels.declarations_for_selector=определения стиля для селектора \"%S\"
-a11y.labels.property_for_selector=свойства CSS для селектора: %S
-a11y.labels.value_property_in_selector=%S значение свойства в селекторе %S
-a11y.labels.css_selector=селектор CSS
-a11y.labels.source_code_for_file=исходный код файла %S
-a11y.labels.press_enter_to_add_new_watch_expression=нажмите Enter для добавления нового слежения
-a11y.labels.overridden=переопределённый
-a11y.updates.has_conditional_break_point=имеет условную точку останова
-a11y.updates.has_disabled_break_point=отменил точку останова
-a11y.updates.script_suspended_on_line_in_file=Сценарий остановлен на линии %S в %S, файл %S
-a11y.updates.match_found_in_logrows=соответствие для %S найдено в строках лога %S
-a11y.updates.match_found_for_on_line=соответствие для %S найдено на линии %S в %S
-a11y.updates.match_found_in_element=соответствие для %S найдено в элементе %S по пути %S
-a11y.updates.match_found_in_attribute=соответствие для %S найдено в атрибуте %S=%S элемента %S по пути %S
-a11y.updates.match_found_in_text_content=соответствие для %S найдено в текстовом содержимом: %S элемента %S по пути %S
-a11y.updates.match_found_in_selector=соответствие для %S найдено в селекторе %S
-a11y.updates.match_found_in_style_declaration=соответствие для \"%S\" найдено в определении стиля %S селектора %S
-a11y.updates.match_found_in_dom_property=соответствие для %S найдено в свойстве DOM %S
-a11y.updates.match_found_in_net_row=соответствие для \"%S\" найдено в %S, %S : %S;
-a11y.updates.match_found_in_net_summary_row=соответствие для %S найдено в суммарной строке сети: %S
-a11y.updates.no_matches_found=не найдено соответствий для \"%S\"
-confirmation.Reset_All_Firebug_Options=Вы уверены, что хотите сбросить все настройки Firebug?
-confirmation.Edit_CSS_Source=Ваши текущие правки CSS будут утеряны.\\\\nВы уверены, что желаете отредактировать источник?
-warning.Console_must_be_enabled=Консоль должна быть активирована
-warning.Command_line_blocked?=Командная строка заблокирована?
-warning.dollar_change=Функция $() командной строки консоли изменилась с $=getElementById(id) на $=querySelector(selector). Вы можете попробовать писать так $("#%S")
-message.Reload_to_activate_window_console=Перезагрузите страницу для активации консоли
-message.sourceNotAvailableFor=Перезагрузите страницу, чтобы получить источник для
-message.The_resource_from_this_URL_is_not_text=Содержимое, находящееся по указанному URL не является текстом
-firebug.history.Go_back_to_this_panel=Обратно на эту панель
-firebug.history.Stay_on_this_panel=Остаться на этой панели
-firebug.history.Go_forward_to_this_panel=Вперёд на эту панель
-firebug.history.Go_back=Назад
-firebug.history.Go_forward=Вперёд
-script.warning.inactive_during_page_load=Панель Сценарий была выключена во время загрузки страницы
-script.suggestion.inactive_during_page_load2=<a>Перезагрузите</a>, чтобы увидеть весь исходный код
-script.warning.javascript_not_enabled=JavaScript отключен
-script.suggestion.javascript_not_enabled=Перейдите Firefox > Инструменты > Настройки > Содержимое > Использовать JavaScript
-script.button.enable_javascript=Включите JavaScript и обновите страницу
-script.warning.all_scripts_filtered=Все скрипты были отфильтрованы
-script.suggestion.all_scripts_filtered=Обратитесь к настройкам фильтрации скриптов на панели инструментов или к опции \"Показывать исходные коды Chrome\"
-script.warning.no_system_source_debugging=Невозможно отладить системные ресурсы
-script.suggestion.no_system_source_debugging=На данный момент невозможно использовать Firebug для отладки системных ресурсов. Обратитесь к <a>проблеме 5110</a> для объяснений.
-script.warning.no_javascript=На этой странице JavaScript отсутствует
-script.suggestion.no_javascript2=Если тэги <script> имеют аттрибут "type", он должен быть "text/javascript" или "application/javascript". Так же скрипты должны быть читаемы (с корректным синтаксисом).
-script.warning.debugger_active=Дебаггер уже активен
-script.suggestion.debugger_active=На данный момент дебаггер остановлен на точке останова на другой странице.
-script.button.Go_to_that_page=Перейти на страницу
-script.warning.debugger_not_activated=Дебаггер отключен
-script.suggestion.debugger_not_activated=Дебаггер отключен
-script.Script_panel_must_be_enabled=%S (панель Сценарий должна быть включена)
-firebug.Firebug=Firebug
-firebug.Close=Закрыть
-firebug.View=Просмотреть
-firebug.Help=Помощь
-firebug.Run=Выполнить
-firebug.Copy=Скопировать
-firebug.History=История
-firebug.Run_the_entered_command=Выполнить введённую команду
-firebug.Clear_the_Command_Editor=Очистить редактор команд
-firebug.Copy_the_script_as_a_bookmarklet=Скопировать скрипт как bookmarklet
-firebug.Insert_a_previously_entered_command=Вставить предыдущую команду
-firebug.AlwaysOpenInWindow=Всегда открывать в новом окне
-firebug.OpenWith=Открыть в редакторе
-firebug.menu.tip.Open_With=Открыть содержимое во внешнем редакторе
-firebug.Permissions=Сайты...
-firebug.Configure_Editors=Конфигурация редакторов
-script.tip.Script_Type=Фильтровать по типу скрипта
-script.tip.Script_Filter_Static=Показывать только те скрипты, которые загрузились со страницей
-script.tip.Script_Filter_Evals=Показывать скрипты, которые загрузились со страницей и скрипты созданные через eval()
-script.tip.Script_Filter_Events=Показывать скрипты, которые загрузились со страницей, скрипты созданные через eval() и обработчики событий
-script.tip.Script_Filter_All=Показывать все скрипты
-firebug.labelWithShortcut=%S (%S)
-script.Rerun=Перезапустить
-script.tip.Rerun=Перезапустить стек вызовов текущей функции
-script.Continue=Продолжить
-script.tip.Continue=Продолжить исполнение JavaScript
-script.Step_Over=Шаг с обходом
-script.tip.Step_Over=Выполнить следующую команду
-script.Step_Into=Шаг с заходом
-script.tip.Step_Into=Выполнить следующую команду и перейти к функциям
-script.Step_Out=Шаг с выходом
-script.tip.Step_Out=Выполнить оставшуюся часть функции и вернуться к её вызову
-firebug.RunUntil=Выполнить до этой строки
-script.tip.Run_Until=Выполнять JavaScript до указанного времени
-firebug.Inspect=Анализировать
-firebug.InspectElement=Анализировать элемент
-firebug.InspectElementWithFirebug=Инспектировать элемент с помощью Firebug
-firebug.BreakOnErrors=Прерывать на ошибках
-firebug.InspectTooltip=Щелкните на элементе страницы для анализа
-firebug.EditHTMLTooltip=Редактировать HTML-код элемента
-firebug.Profile=Профилировать
-firebug.Clear=Очистить
-firebug.ClearConsole=Очистить консоль
-firebug.ClearTooltip=Очистить консоль
-editors.Configured_Firebug_Editors=Сконфигурированные редакторы Firebug
-editors.Editor=Редактор
-editors.Executable=Исполнимый файл
-editors.Launch_Arguments=Параметры запуска
-editors.Add=Добавить
-editors.Remove=Удалить
-editors.Change=Изменить
-editors.Move_Up=Вверх
-editors.Close=Закрыть
-editors.Browse=Обзор…
-changeEditor.Editor_Configuration=Конфигурация редактора
-changeEditor.Name=Имя
-changeEditor.Executable=Файл
-changeEditor.CmdLine=Аргументы
-changeEditor.Supplied_arguments=Аргументы предоставленные Firebug:
-changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> URL файла (если %url отсутствует, %file будет добавлен по-умолчанию)
-changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> Путь к локальному файлу (или временной копии)
-changeEditor.Line_number=<label class=\'text-link\'>%line</label> Номер строки (если доступно)
-changeEditor.Invalid_Application_Path=Неправильный путь к приложению
-changeEditor.Application_does_not_exist=Указанное приложение не существует
-firebug.Edit=Редактировать
-firebug.css.sourceEdit=Правка кода
-firebug.css.sourceEdit.tooltip=Правка исходного кода CSS в том виде, в котором он загружен браузером
-firebug.css.liveEdit=Живая правка
-firebug.css.liveEdit.tooltip=Правка исходного кода CSS в том виде, в котором он извлечён из браузера
-firebug.EditCSSTooltip=Редактировать таблицу стилей
-firebug.activation.privateBrowsingMode=Сайты не запоминаются в режиме Приватного просмотра
-firebug.breakpoint.showBreakNotifications=Показывать уведомления об остановках
-firebug.breakpoint.tip.Show_Break_Notifications=Показать окно уведомления, когда Прерывать на ... или дебагер; ключевое слово, остановившее выполнение JavaScript
-firebug.breakpoint.doNotShowBreakNotification2=Вы можете включить/отключить уведомления об остановах в <a>меню панели вкладки</a>.
-firebug.bon.cause.disableDebuggerKeyword2=Нажатие на кнопку \'Отключить\' переопределяет дебаггер с неактивной точкой останова.
-firebug.bon.tooltip.disableDebuggerKeyword2=Создаёт неактивную точку останова
-firebug.bon.scriptPanelNeeded=(панель Сценарий должна быть активирована для использования данной возможности)
-firebug.dom.noChildren2=Дочерние объекты отсутствуют
-firebug.reps.more=ещё
-firebug.reps.reference=Обнаружено цикличное указание
-firebug.storage.totalItems=%1$S элемент в Хранилище;%1$S элементов в Хранилище
-firebug.reps.historyEntries=%1$S запись в истории;%1$S записей в истории
-firebug.reps.table.ObjectProperties=Свойста объекта
-firebug.completion.empty=(завершения отсутствуют)
-firebug.failedToPreviewObjectURL=Вероятно объект URL был отменён используя метод revokeObjectURL.
-firebug.failedToPreviewImageURL=Невозможно загрузить указанный URL.
-firebug.Memory_Profiler_Started=Профайлер памяти запущен
-firebug.Objects_Added_While_Profiling=Во время профилирования были добавлены объекты
-firebug.Memory_Profiler_Results=Результаты работы профайлера памяти
-firebug.Entire_Session=Вся сессия
-console.msg.nothing_to_output=(выводить нечего)
-console.msg.an_empty_string=(пустая строка)
-cookies.legacy.firecookie_detected=Обнаружен аддон Firecookie. Данный аддон был интегрирован в Firebug 1.10 по-умолчанию. Для того, чтобы избежать возможных осложнений - вам надо удалить Firecookie. \n\nДля завершения удаления - необходимо перезапустить браузер.
-cookies.legacy.uninstall=Удалить
-cookies.legacy.uninstall_and_restart=Удалить и перезапустить
-console.cmd.help_title=API коммандной строки
-console.cmd.help_title_desc=Нажмите F!, чтобы открыть онлайн справку Firebug
-console.cmd.tip_title=Подсказки командной строки
-console.cmd.tip_title_desc=Изучить подсказки командной строки
-console.cmd.tip.javascript=Любое допустимое выражение JavaScript может быть выполнено в командной строке. Пример:
-console.cmd.tip.closures=Для доступа к переменным в замыканиях используйте синтакс '.%' (<a>подробнее</a>). Пример:
-console.cmd.help.$=Возвращает одиночный элемент с указанным id.
-console.cmd.help.$$=Возвращает массив элементов, которые совпадают с указанным селектором CSS.
-console.cmd.help.$x=Возвращает массив элементов, которые совпадают с указанным выражением XPath.
-console.cmd.help.dir=Выводит интерактивный список всех свойств объекта. Выглядит идентично виду внутри DOM панели.
-console.cmd.help.dirxml=Выводит исходное дерево XML элемента HTML или XML. Выглядит идентично виду внутри HTML панели. Вы можете выбрать любую ноду и изучить ещё в HTML панели.
-console.cmd.help.cd=По-умолчанию, выражения командной строки относительны верхнему уровню окна страницы. cd() позволяет вам использовать окно фрейма в странице взамен.
-console.cmd.help.clear=Очищает консоль.
-console.cmd.help.copy=Копирует указанный параметр в буфер обмена. Это может быть значение, возвращённое функцией или объект.
-console.cmd.help.inspect=Инспектирует объект в наиболее подходящей панели, или в панели, указанной во втором, опциональном аргументе. Доступные имена панелей: "html", "stylesheet", "script" и "dom".
-console.cmd.help.keys=Возвращает массив, содержащий имена всех свойств объекта.
-console.cmd.help.values=Возвращает массив, содержащий значения всех свойств объекта.
-console.cmd.help.debug=Добавляет точку останова на первой строке функции.
-console.cmd.help.undebug=Удаляет точку останова на первой строке функции.
-console.cmd.help.monitor=Включает запись в консоль всех обращений к функции.
-console.cmd.help.unmonitor=Отключает запись в консоль всех обращений к функции.
-console.cmd.help.monitorEvents=Включает запись всех событий в лог, происходящих с объектом. Опциональный второй аргумент может указывать на особые события или типы событий для записи. Доступные типы событий: "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul" и "clipboard".
-console.cmd.help.unmonitorEvents=Выключает запись в лог всех событий, происходящих с объектом. Опциональный второй аргумент может указывать на особые события или типы событий для отключения записи.
-console.cmd.help.profile=Включает профайлер JavaScript. Опциональный второй аргумент может содержать текст для вывода в заголовке отчёта профайлера.
-console.cmd.help.profileEnd=Выключает профайлер JavaScript и выводит отчёт.
-console.cmd.help.table=Позволяет записывать в лог данные, используя табуляцию. Метод принимает один обязательный параметр, который представляет данные табличного вида (массив массивов или список объектов). Опциональный второй параметр может быть использован для указания колонок и/или свойств для записи в лог.
-console.cmd.help.$0=Представляет последний элемент выбранный с помощью Инспектора.
-console.cmd.help.$1=Представляет второй последний элемент выбранный с помощью Инспектора.
-console.cmd.help.$2=Представляет третий последний элемент выбранный с помощью Инспектора.
-console.cmd.help.$3=Представляет четвёртый последний элемент выбранный с помощью Инспектора.
-console.cmd.help.$4=Представляет пятый последний элемент выбранный с помощью Инспектора.
-console.cmd.help.$n=Возвращает один из пяти последних элементов выбранных с помощью Инспектора. Этот метод принимает один обязательный параметр, который представляет индекс элемента (начинается с 0).
-console.cmd.help.$_=Представляет результат последнего исполненного выражения в командной строке.
-console.cmd.help.help=Выводит справку для всех доступных команд.
-console.cmd.help.include=Включает удалённый скрипт.
-console.cmd.help.$p=После ПКМ на объекте/значении JavaScript, и нажатии "Использовать в командной строке", переменная в командной строке будет установлена в это значение.
-console.cmd.help.getEventListeners=Возвращает объект со всеми наблюдателями события, зарегистрированными на элементе (или иной цели события).
-console.cmd.helpUrlNotAvailable=Страница справки для этой команды недоступна.
-perftiming.bars.label=Фазы документа - начало и затраченное время, по отношению к загрузке документа:
-perftiming.events.label=Тайминг событий по отношению к загрузке документа:
-perftiming.details_title=Тайминг производительности
-perftiming.details_title_desc=Детализированный тайминг
-perftiming.connectEnd=Момент окончания соединения с сервером.
-perftiming.connectStart=Момент перед началом соединения с сервером.
-perftiming.domComplete=Момент перед окончанием чтения документа.
-perftiming.domContentLoadedEventEnd=Момент после окончания события DOMContentLoaded.
-perftiming.domContentLoadedEventStart=Момент перед запуском события DOMContentLoaded.
-perftiming.domInteractive=Момент перед готовностью, установленной в интерактив.
-perftiming.domLoading=Момент перед готовностью, установленной в загрузку.
-perftiming.domainLookupEnd=Момент после поиска имени домена.
-perftiming.domainLookupStart=Момент перед поиском имени домена.
-perftiming.fetchStart=Момент, когда начинается получение ресурсов.
-perftiming.loadEventEnd=Момент, когда событие загрузки завершилось.
-perftiming.loadEventStart=Момент перед выполнением события загрузки.
-perftiming.navigationStart=Момент после начала выгрузки предыдущего документа.
-perftiming.redirectCount=Количество редиректов с последнего не редиректа.
-perftiming.redirectEnd=Момент после окончания последнего редиректа.
-perftiming.redirectStart=Момент получения того, что инициировало редирект.
-perftiming.requestStart=Момент перед запросом сервера.
-perftiming.responseEnd=Момент после окончания ответа или соединения.
-perftiming.responseStart=Момент перед началом ответа.
-perftiming.unloadEventEnd=Момент после выгрузки предыдущего документа.
-perftiming.unloadEventStart=Момент перед запуском события выгрузки.
+Firebug=Firebug
+WindowTitle=Firebug - %S
+Panel-console=Консоль
+panel.tip.console=Даёт возможность просматривать сообщения консоли и выполнять команды JavaScript
+Panel-net=Сеть
+panel.tip.net=Даёт возможность анализировать сетевой траффик
+Panel-html=HTML
+panel.tip.html=Даёт возможность просматривать и изменять ноды DOM
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Даёт возможность просматривать и изменять CSS-файлы
+Panel-script=Сценарий
+panel.tip.script=Даёт возможность производить отладку JavaScript
+Panel-dom=DOM
+panel.tip.dom=Даёт возможность просматривать и изменять свойства DOM
+Panel-css=Стиль
+panel.tip.css=Даёт возможность просматривать и изменять CSS-правила выбранной ноды DOM
+Panel-computed=Скомпилированный стиль
+panel.tip.computed=Даёт возможность просматривать скомпилированные CSS-правила выбранной ноды DOM
+Panel-layout=Макет
+panel.tip.layout=Даёт возможность просматривать и изменять параметры макета выбранной ноды DOM
+Panel-domSide=DOM
+panel.tip.domSide=Даёт возможность просматривать и изменять свойства DOM выбранной ноды DOM
+Panel-watches=Наблюдение
+panel.tip.watches=Даёт возможность просматривать переменные JavaScript, доступные в текущем стеке и определять наблюдения
+Panel-breakpoints=Точки останова
+panel.tip.breakpoints=Даёт возможность изменять точки останова
+Panel-callstack=Стек вызовов
+panel.tip.callstack=Даёт возможность просматривать текущий стек вызовов JavaScript
+Panel-scopes=Охваты
+firebug.DetachFirebug=Открыть в отдельном окне
+firebug.AttachFirebug=Прикрепить Firebug к окну браузера
+pluralRule=1
+plural.Total_Firebugs2=%1$S Firebug;Всего %1$S Firebug\'ов
+startbutton.tip.deactivated=Отключен
+panel.status=%S: %S
+inBrowser=В браузере
+minimized=Свёрнуто
+enablement.for_all_pages=для всех страниц
+enablement.on=Включено
+enablement.off=Выключено
+enablement.Panel_activation_status=Статус активации панели:
+none=Закрыт
+Firebug_-_inactive_for_current_website=Firebug отключен для текущего сайта
+Activate_Firebug_for_the_current_website=Активировать Firebug для текущего сайта
+Minimized=Свёрнут
+Minimize_Firebug=Свернуть Firebug
+On_for_all_web_pages=Включить на всех страницах
+firebug.menu.tip.On_for_all_Web_Sites=Актимировать Firebug по-умолчанию для всех сайтов
+firebug.menu.Clear_Activation_List=Очистить список активаций
+firebug.menu.tip.Clear_Activation_List=Очистить список сайтов, на которых активирован Firebug
+firebug.menu.Detached=В отдельном окне
+firebug.menu.tip.Detached=Открыть Firebug в отдельном окне
+firebug.menu.Top=Вверху
+firebug.menu.tip.Top=Расположить Firebug вверху родительского окна
+firebug.menu.Bottom=Внизу
+firebug.menu.tip.Bottom=Расположить Firebug внизу родительского окна
+firebug.menu.Left=Слева
+firebug.menu.tip.Left=Расположить Firebug в левой части родительского окна
+firebug.menu.Right=Справа
+firebug.menu.tip.Right=Расположить Firebug в правой части родительского окна
+firebug.uiLocation=Положение окна Firebug
+firebug.menu.tip.UI_Location=Расположение пользовательского интерфейса Firebug
+annotations.confirm.clear=Вы желаете очистить список аннотаций Firebug для всех сайтов?
+firebug_options=Опции Firebug
+firebug.Show_All_Panels=Показать все панели
+console.option.Show_Command_Line=Показать командную строку
+console.option.tip.Show_Command_Line=Перевести фокус на командную строку / Показать всплывающую командную строку
+ShowJavaScriptErrors=Показывать ошибки JavaScript
+console.option.tip.Show_JavaScript_Errors=Записывать ошибки JavaScript в консоль
+ShowJavaScriptWarnings=Показывать предупреждения JavaScript
+console.option.tip.Show_JavaScript_Warnings=Записывать предупреждения JavaScript в консоль
+ShowCSSErrors=Показывать ошибки CSS
+console.option.tip.Show_CSS_Errors=Записывать ошибки CSS в консоль
+ShowXMLHTMLErrors=Показывать ошибки XML/HTML
+console.option.tip.Show_XML_HTML_Errors=Записывать в консоль сообщения об ошибках XML и HTML
+ShowStackTrace=Показывать ошибки в стеке
+console.option.tip.Show_Stack_Trace=Показывать информацию трассировки стека для сообщений об ошибках
+ShowXMLHttpRequests=Показывать AJAX запросы
+console.option.tip.Show_XMLHttpRequests=Записывать информацию XMLHttpRequests в консоль
+ShowChromeErrors=Показывать ошибки Chrome
+console.option.tip.Show_System_Errors=Записывать сообщения о внутренних ошибках программы и аддонов в консоль
+ShowChromeMessages=Показывать сообщения Chrome
+console.option.tip.Show_System_Messages=Записывать сообщения о внутренних сообщениях программы и аддонов в консоль
+ShowNetworkErrors=Показывать ошибки сети
+console.option.tip.Show_Network_Errors=Записывать ошибки сети в консоль
+JavascriptOptionsStrict=Строгие предупреждения (потери производительности)
+console.option.tip.Show_Strict_Warnings=Записывать строгие предупреждения в консоль
+Command_History=История команд
+console.option.Show_Command_Editor=Показать редактор команд
+console.option.tip.Show_Command_Editor=Переключится на редактор команд
+commandLineShowCompleterPopup=Показывать автодополнение
+console.option.tip.Show_Completion_List_Popup=Показывать автодополнения для команд
+Assertion=Ошибка в утверждении
+Line=%S (строка %S)
+LineAndCol=%S (строка %S, столбец %S)
+InstanceLine=%S #%S (строка %S)
+StackItem=%S (%S в строке %S)
+SystemItem=<Система>
+panel.Inspect_In_Panel=Инспектировать в панели %S
+panel.tip.Inspect_In_Panel=Переключиться на панель %S, для изучения объекта там
+NoName=(без имени)
+jsdIScript=jsdIScript %S
+ShowFullText=Показывать полный текст
+html.option.tip.Show_Full_Text=Не обрезать содержимое элемента
+ShowWhitespace=Показывать пустые пробелы
+html.option.tip.Show_Whitespace=Показывать непечатаемые символы в нодах
+ShowComments=Показывать комментарии
+html.option.tip.Show_Comments=Показывать ноды-комментарии
+html.option.Show_Entities_As_Symbols=Показывать сущности в виде символов
+html.option.tip.Show_Entities_As_Symbols=Показывать все XML-сущности в виде символического представления
+html.option.Show_Entities_As_Names=Показывать сущности в виде имён
+html.option.tip.Show_Entities_As_Names=Показывать все XML-сущности в виде имён
+html.option.Show_Entities_As_Unicode=Показывать сущности в виде Юникода
+html.option.tip.Show_Entities_As_Unicode=Показывать все XML-сущности в виде Юникода
+HighlightMutations=Подсвечивать изменения
+html.option.tip.Highlight_Mutations=Подсвечивать изменения внутри нод
+ExpandMutations=Разворачивать изменения
+html.option.tip.Expand_Mutations=Разворачивать дерево для отображения изменённых нод
+ScrollToMutations=Прокручивать к изменениям
+html.option.tip.Scroll_To_Mutations=Прокручивать дерево для указания на изменённые ноды
+ShowQuickInfoBox=Показывать окно быстрой информации
+inspect.option.tip.Show_Quick_Info_Box=Показывать информацию об инспектируемом элементе внутри окна быстрой информации
+ShadeBoxModel=Модель Shade Box
+inspect.option.tip.Shade_Box_Model=Затенять разные части блочной модели
+ScrollIntoView=Прокрутить к элементу
+html.tip.Scroll_Into_View=Прокручивать страницу для отображения элемента
+NewAttribute=Новый атрибут...
+html.tip.New_Attribute=Добавить новый атрибут к этому элементу
+html.Edit_Node=Редактировать %S…
+html.Node=Нода
+html.tip.Edit_Node=Редактировать %S используя полный текстовый редактор
+DeleteElement=Удалить элемент
+html.Delete_Element=Удалить элемент из дерева
+DeleteNode=Удалить узел
+html.Delete_Node=Удалить ноду из дерева
+quickInfo=Быстрая информация
+computedStyle=Скомпилированный стиль
+html.Break_On_Mutate=Останавливаться при изменении
+html.Disable_Break_On_Mutate=Отключить остановку при изменении
+html.label.Break_On_Text_Change=Останавливать при изменении текста
+html.label.HTML_Breakpoints=Точки останова HTML
+html.label.Break_On_Attribute_Change=Останавливаться при изменении атрибута
+html.tip.Break_On_Attribute_Change=Остановить исполнение JavaScript когда атрибут элемента изменится
+html.label.Break_On_Child_Addition_or_Removal=Останавливаться при добавлении/удалении потомка
+html.tip.Break_On_Child_Addition_or_Removal=Остановить исполнение JavaScript когда дочерняя нода добавлена или удалена из элемента
+html.label.Break_On_Element_Removal=Останавливать при удалении элемента
+html.tip.Break_On_Element_Removal=Остановить исполнение JavaScript когда элемент удалён
+html.label.Expand/Contract_All=Развернуть/Свернуть всё
+html.tip.Expand/Contract_All=Развернуть/свернуть всех потомков рекурсивно
+dom.scopeName=(замыкание)
+dom.scopeParentName=(охват родителя)
+dom.tip.scopeName=Используйте <func>.%closureVariable для доступа в командной строке
+dom.tip.scopeMemberName=Используйте <func>.%S для доступа в командной строке
+firebug.reps.declarativeScope=[декларативный охват]
+firebug.reps.objectScope=[объектный охват]
+firebug.reps.withScope=[с охватом]
+firebug.reps.optimizedAway=(оптимизированы)
+firebug.reps.element.attribute_value=значение атрибута
+firebug.reps.element.property_value=значение свойства
+dom.label.breakOnPropertyChange=Останавливаться при изменении свойства
+dom.tip.Break_On_Property_Change=Остановить исполнение JavaScript когда это свойство изменится
+dom.disableBreakOnPropertyChange=Отключить остановку при изменении свойста
+dom.label.DOM_Breakpoints=Точки останова DOM
+EditAttribute=Редактировать атрибут \"%S\"...
+html.tip.Edit_Attribute=Редактировать значение атрибута "%S" данного элемента
+DeleteAttribute=Удалить атрибут \"%S\"
+html.tip.Delete_Attribute=Удалить атрибут "%S" данного элемента
+InheritedFrom=Унаследовано от
+SothinkWarning=Расширение Sothink SWF Catcher мешает корректно работать Firebug.<br><br>Пожалуйста прочтите <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">этот пункт из FAQ Firebug</a> для получения дополнительной информации.
+css.fontFamilyPreview=Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства. 0123456789
+css.EmptyStyleSheet=Правила отсутствуют. Вы можете <a>создать правило</a>.
+css.EmptyElementCSS=Для данного элемента правила отсутствуют. Вы можете <a>создать правило</a> для него.
+EditStyle=Редактировать стиль элемента...
+style.tip.Edit_Style=Редактировать inline-стиль элемента
+AddRule=Добавить правило…
+css.tip.AddRule=Добавить правило к данному элементу
+NewRule=Новое правило...
+css.tip.New_Rule=Добавить новое правило
+css.Delete_Rule=Удалить "%S"
+css.tip.Delete_Rule=Удалить правило "%S" и все его свойства
+css.menu.Edit_Media_Query=Редактировать Media Query…
+css.menu.tip.Edit_Media_Query=Редактировать media query назначенную этому правилу
+NewProp=Новое свойство...
+css.tip.New_Prop=Добавить новое свойство текущему правилу
+EditProp=Редактировать \"%S\"...
+css.tip.Edit_Prop=Редактировать значение свойства "%S"
+DisableProp=Выключить \"%S\"
+css.tip.Disable_Prop=Отключить свойство "%S"
+DeleteProp=Удалить \"%S\"
+css.tip.Delete_Prop=Удалить свойство "%S"
+BreakOnThisError=Остановиться на текущей ошибке
+console.menu.tip.Break_On_This_Error=Остановить исполнение JavaScript как только возникнет эта ошибка
+BreakOnAllErrors=Останавливаться на всех ошибках
+console.menu.tip.Break_On_All_Errors=Остановить исполнение JavaScript как только возникнет ошибка
+TrackThrowCatch=Отслеживать стек вызовов
+script.option.tip.Track_Throw_Catch=Отслеживать исключения, даже когда они пойманы блоками try/catch
+UseLastLineForEvalName=Использовать последнюю линию исходного кода в качестве имени eval
+UseMD5ForEvalName=Использовать MD5 в качестве имени eval
+Breakpoints=Точки останова
+ErrorBreakpoints=Ошибочные точки останова
+LoggedFunctions=Функции в журнале
+EnableAllBreakpoints=Включить все точки останова
+breakpoints.option.tip.Enable_All_Breakpoints=Включить все перечисленные точки останова
+DisableAllBreakpoints=Выключить все точки останова
+breakpoints.option.tip.Disable_All_Breakpoints=Отключить все перечисленные точки останова
+ClearAllBreakpoints=Удалить все точки останова
+breakpoints.option.tip.Clear_All_Breakpoints=Удалить все перечисленные точки останова
+ConditionInput=Остановится только в случае если выражение истинно:
+breakpoints.Remove_Breakpoint=Удалить точку останова
+breakpoints.tip.Remove_Breakpoint=Удалить точку останова
+breakpoints.Disable_Breakpoint=Отключить точку останова
+breakpoints.tip.Disable_Breakpoint=Отключить точку останова
+breakpoints.Enable_Breakpoint=Включить точку останова
+breakpoints.tip.Enable_Breakpoint=Включить точку останова
+script.balloon.Continue=Продолжить
+script.balloon.Disable=Отключить
+ScriptsFilterStatic=Показывать статичные скрипты
+ScriptsFilterEval=Показывать статичные и eval-скрипты
+ScriptsFilterEvent=Показывать статичные и event-скрипты
+ScriptsFilterAll=Показывать статичные, eval и event-скрипты
+ScriptsFilterStaticShort=статичные
+ScriptsFilterEvalShort=eval\'ы
+ScriptsFilterEventShort=event\'ы
+ScriptsFilterAllShort=все
+callstack.Expand_All=Развернуть все
+callstack.tip.Expand_All=Развернуть все функции фрейма стека
+callstack.Collapse_All=Свернуть все
+callstack.tip.Collapse_All=Свернуть все функции фрейма стека
+callstack.Execution_not_stopped=Фреймы стека отображаются когда исполнение скрипта остановлено.
+ShowUserProps=Показывать пользовательские свойства
+dom.option.tip.Show_User_Props=Показать свойства объекта, установленные пользователем
+ShowUserFuncs=Показывать пользовательские функции
+dom.option.tip.Show_User_Funcs=Показать методы объекта, установленные пользователем
+ShowDOMProps=Показывать свойства DOM
+dom.option.tip.Show_DOM_Props=Показать свойства, определённые внутри DOM
+ShowDOMFuncs=Показывать функции DOM
+dom.option.tip.Show_DOM_Funcs=Показать функции, определённые внутри DOM
+ShowDOMConstants=Показывать константы DOM
+dom.option.tip.Show_DOM_Constants=Показать константы, определённые внутри DOM
+ShowClosures=Показать замыкания
+dom.option.tip.Show_Closures=Показывает замыкания, связанные с различными функциями (активирует дебаггер)
+ShowInlineEventHandlers=Показывать встроенные обработчики событий
+ShowInlineEventHandlersTooltip=Показывать встроенные обработчики событий, которые не ассоциированны с функцией.
+ShowOwnProperties=Показывать только собственные свойства
+ShowOwnPropertiesTooltip=Не показывать цепочку прототипирования
+ShowEnumerableProperties=Показывать только перечислимые свойства
+ShowEnumerablePropertiesTooltip=Не показывать не перечислимые свойства
+NoMembersWarning=У этого объекта нет свойств.
+NewWatch=Новое наблюдение...
+AddWatch=Добавить наблюдение
+watch.tip.Add_Watch=Добавить выделение/объект в панель Слежения для просмотра
+CopySourceCode=Копировать исходный код
+script.tip.Copy_Source_Code=Скопировать выделенный исходный код в буфер обмена
+Use_hash_plus_number_to_go_to_line=Используйте #<номер> для перехода к нужной строке
+CopyValue=Копировать значение
+dom.tip.Copy_Value=Скопировать значение свойства в буфер обмена
+Copy_Name=Скопировать имя
+dom.tip.Copy_Name=Скопировать наименование свойства в буфер обмена
+Copy_Path=Скопировать путь
+dom.tip.Copy_Path=Скопировать путь свойства
+NewProperty=Новое свойство...
+EditProperty=Редактировать свойство...
+dom.tip.Edit_Property=Редактировать значение свойства
+EditVariable=Редактировать переменную...
+stack.tip.Edit_Variable=Редактировать значение переменной
+EditWatch=Редактировать наблюдение...
+watch.tip.Edit_Watch=Редактировать значение выражения слежения
+DeleteProperty=Удалить свойство
+dom.tip.Delete_Property=Удалить свойство
+DeleteWatch=Удалить наблюдение
+DeleteAllWatches=Удалить все наблюдения
+watch.tip.Delete_Watch=Удалить выражение слежения
+watch.tip.Delete_All_Watches=Удалить все выражения наблюдения
+SetBreakpoint=Установить точку останова
+script.tip.Set_Breakpoint=Переключает точку останова на текущей строке
+EditBreakpointCondition=Редактировать условие точки останова...
+breakpoints.tip.Edit_Breakpoint_Condition=Редактировать условие, при котором данная точка останова прекращает выполнение JavaScript
+NoBreakpointsWarning=На этой странице нет точек останова.
+Only_Show_Applied_Styles=Показывать только применённые стили
+style.option.tip.Only_Show_Applied_Styles=Показывать только те стили, которые применены к элементу
+Show_User_Agent_CSS=Показывать CSS браузера
+style.option.tip.Show_User_Agent_CSS=Так же показывать CSS определённый браузером
+computed.option.label.Colors_As_Hex=Цвета в виде HEX
+computed.option.tip.Colors_As_Hex=Показывать цвета в виде шестнадцатеричных кодов
+computed.option.label.Colors_As_RGB=Цвета в виде RGB
+computed.option.tip.Colors_As_RGB=Показывать цвета в виде RGB формата
+computed.option.label.Colors_As_HSL=Цвета в виде HSL
+computed.option.tip.Colors_As_HSL=Показывать цвета в виде HSL формата
+style.option.label.active=:active
+style.option.tip.active=Показывать стили псевдо-класса :active
+style.option.label.hover=:hover
+style.option.tip.hover=Показывать стили псевдо-класса :hover
+style.option.label.focus=:focus
+style.option.tip.focus=Показывать стили псевдо-класса :focus
+css.label.Inspect_Declaration=Инспектировать объявление
+css.tip.Inspect_Declaration=Инспектировать объявление данного шрифта
+Expand_Shorthand_Properties=Развернуть краткие свойства
+css.option.tip.Expand_Shorthand_Properties=Развернуть сокращённые свойства CSS в составляющие компоненты
+Sort_alphabetically=Сортировать по алфавиту
+computed.option.tip.Sort_Alphabetically=Сортировать стили по имени/группе в категории
+Show_Mozilla_specific_styles=Показывать стили, специфические для Mozilla
+computed.option.tip.Show_Mozilla_Specific_Styles=Всегда показывать стили с префиксом -moz
+computed.No_User-Defined_Styles=У данного элемента отсутствуют правила, определённые пользователем.
+script.Type_any_key_to_filter_list=Нажмителю любую клавишу для фильтрации
+location.inline=Внутренние
+location.no_domain=Без домена
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=позиция
+LayoutAdjacent=смежный
+position=позиция
+ShowRulers=Показывать линейки и направляющие
+layout.option.tip.Show_Rulers=Показывать линейки и направляющие на странице, при наведении на элементы блока макета
+Loading=Загружается...
+Headers=Заголовки
+net.tip.Clear=Очистить список запросов
+net.header.Reset_Header=Сбросить заголовок
+net.header.tip.Reset_Header=Сбросить экран заголовков
+net.header.URL=URL
+net.header.URL_Tooltip=Запрошенный URL и использованный метод HTTP.
+net.header.Status=Статус
+net.header.Status_Tooltip=Статус полученного ответа.
+net.header.Domain=Домен
+net.header.Domain_Tooltip=Домен исполненного запроса.
+net.header.Size=Размер
+net.header.Size_Tooltip=Размер полученного ответа.
+net.header.Timeline=Временная линия
+net.header.Timeline_Tooltip=Детальная информация о времени ответа на запрос.
+net.header.Local_IP=Локальный IP
+net.header.Local_IP_Tooltip=Локальный IP адрес и порт, к которому привязывается запрос.
+net.header.Remote_IP=Удалённый IP
+net.header.Remote_IP_Tooltip=Удалённый IP адрес и порт, к которому привязывается запрос.
+net.header.Protocol=Протокол
+net.header.Protocol_Tooltip=Протокол, используемый для поиска ресурса в сети.
+net.label.XHR_Breakpoints=Точки останова XHR
+net.label.Break_On_XHR=Останавливать при XHR
+net.tip.Break_On_XHR=Остановить исполнение JavaScript как только сделан XMLHttpRequest
+net.headers.view_source=показать исходный код
+net.headers.pretty_print=симпатичный print
+net.filter.label.All=Все
+net.filter.tooltip.All=Показывать все MIME-типы
+net.filter.label.HTML=HTML
+net.filter.tooltip.HTML=Показывать только файлы разметки
+net.filter.label.CSS=CSS
+net.filter.tooltip.CSS=Показывать только файлы CSS
+net.filter.label.JS=JavaScript
+net.filter.tooltip.JS=Показывать только файлы JavaScript
+net.filter.label.XHR=XHR
+net.filter.tooltip.XHR=Показывать только XMLHttpRequests
+net.filter.label.Images=Изображения
+net.filter.tooltip.Images=Показывать только изображения
+net.filter.label.Plugins=Плагины
+net.filter.tooltip.Plugins=Показывать только файлы Flash и Silverlight
+net.filter.label.Media=Медиа
+net.filter.tooltip.Media=Показывать только аудио и видео
+net.filter.label.Fonts=Шрифты
+net.filter.tooltip.Fonts=Показывать только шрифты
+Post=Post
+Put=Put
+Response=Ответ
+URLParameters=Параметры
+Cache=Кэш
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Общая информация
+fontviewer.Meta_Data=Мета-данные
+fontviewer.view_source=показать источник
+fontviewer.Preview=Предпросмотр
+fontviewer.view_characters=показать символы
+fontviewer.pretty_print=симпатичная печать
+fontviewer.view_sample=показать образец
+fontviewer.uniqueid=Уникальный ID
+fontviewer.vendor=Разработчик
+fontviewer.license=Лицензия
+fontviewer.description=Описание
+fontviewer.copyright=Авторские права
+fontviewer.credits=Авторы
+fontviewer.trademark=Торговая марка
+fontviewer.licensee=Лицензия
+fontviewer.extension=Расширение
+fontviewer.pangram=Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.
+jsonviewer.sort=Сортировать по ключу
+jsonviewer.do_not_sort=Не сортировать
+net.jsonviewer.Copy_JSON=Копировать \\\"%S\\\" как JSON
+RequestHeaders=Заголовки запроса
+ResponseHeaders=Заголовки ответа
+CachedResponseHeaders=Заголовки ответа из кэша
+PostRequestHeaders=Запрос заголовков из потока загрузки
+net.label.ResponseHeadersFromBFCache=Данные запроса были получены из кэша, мы не получили ответа от сервера. Ниже отображён кэшированный ответ.
+plural.Limit_Exceeded2=Был достигнут лимит журнала сообщений Firebug. %1$S вхождение не отображается.;Был достигнут лимит журнала сообщений Firebug. Не отображается %1$S вхождений.
+LimitPrefs=Настройки лимита
+LimitPrefsTitle=Для изменения лимита отредактируйте: %S
+Refresh=Обновить
+panel.tip.Refresh=Обновить экран панели
+OpenInTab=Открыть в новой вкладке
+firebug.tip.Open_In_Tab=Открыть URL в новой вкладке
+Open_Response_In_New_Tab=Открыть ответ в новой вкладке
+net.tip.Open_Response_In_New_Tab=Открыть ответ в новой вкладке
+Profile=Профилирование
+ProfilerStarted=Профайлер запущен. Нажмите \'Профилирование\' ешё раз для просмотра отчета.
+ProfilerRequiresTheScriptPanel=Панель Сценарий должна быть включена, чтобы заработал профайлер.
+plural.Profile_Time2=(%1$Sms, %2$S вызов);(%1$Sms, %2$S вызовов)
+NothingToProfile=Нечего профилировать.
+PercentTooltip=Процентное соотношение времени проведенного в этой функции.
+CallsHeaderTooltip=Кол-во вызовов функции.
+OwnTimeHeaderTooltip=Время проведенное в функции, исключая вложенные вызовы.
+TimeHeaderTooltip=Время проведенное в функции, включая вложенные вызовы.
+AvgHeaderTooltip=Среднее время, включая вызовы функций.
+MinHeaderTooltip=Минимальное время, включая вызовы функций.
+MaxHeaderTooltip=Максимальное время, включая вызовы функций.
+ProfileButton.Tooltip=Профилировать время исполнения JavaScript
+Function=Функция
+Percent=Процент
+Calls=Вызовы
+OwnTime=Собственное время
+Time=Время
+Avg=Средн.
+Min=Мин.
+Max=Макс.
+File=Файл
+Copy=Копировать
+Cut=Вырезать
+Remove=Удалить
+Delete=Удалить
+Paste=Вставить
+SelectAll=Выбрать всё
+html.Copy_Node=Копировать %S
+html.tip.Copy_Node=Копировать ноду %S и всё содержимое в буфер обмена
+CopyInnerHTML=Копировать innerHTML
+html.tip.Copy_innerHTML=Копировать содержимое элемента в буфер обмена
+CopyXPath=Копировать XPath
+html.tip.Copy_XPath=Копировать XPath элемента в буфер обмена
+Copy_CSS_Path=Скопировать CSS-путь
+html.tip.Copy_CSS_Path=Копировать CSS путь элемента в буфер обмена
+html.menu.Paste=Вставить %S
+html.tip.Paste=Вставить %S как содержимое
+html.menu.Paste_Replace_Content=Заменить содержимое
+html.tip.Paste_Replace_Content=Заменить содержимое ноды
+html.menu.Paste_Replace_Node=Заменить ноду
+html.tip.Paste_Replace_Node=Заменить HTML ноды
+html.menu.Paste_AsFirstChild=Как первый потомок
+html.tip.Paste_AsFirstChild=Вставить как первый потомок ноды
+html.menu.Paste_AsLastChild=Как последний потомок
+html.tip.Paste_AsLastChild=Вставить как последний потомок ноды
+html.menu.Paste_Before=Перед
+html.tip.Paste_Before=Вставить перед нодой
+html.menu.Paste_After=После
+html.tip.Paste_After=Вставить после ноды
+html.menu.Reload_Frame=Перезагрузить фрейм
+html.menu.tip.Reload_Frame=Перезагрузить содержимое фрейма
+CopyLocation=Копировать адрес
+clipboard.tip.Copy_Location=Копировать URL расположения объекта в буфер обмена
+CopyURLParameters=Скопировать параметры URL
+net.tip.Copy_URL_Parameters=Скопировать параметры URL в буфер обмена
+CopyPOSTParameters=Скопировать параметры POST
+net.tip.Copy_POST_Parameters=Скопировать параметры POST в буфер обмена
+CopyLocationParameters=Копировать адрес с параметрами
+net.tip.Copy_Location_Parameters=Копировать URL включая параметры в буфер обмена
+CopyRequestHeaders=Копировать заголовки запроса
+net.tip.Copy_Request_Headers=Копировать заголовки запроса в буфер обмена
+CopyResponseHeaders=Копировать заголовки ответа
+net.tip.Copy_Response_Headers=Копировать заголовки ответа в буфер обмена
+CopyResponse=Копировать тело ответа
+net.tip.Copy_Response=Копировать тело ответа в буфер обмена
+CopyError=Копировать ошибку
+console.menu.tip.Copy_Error=Копировать информацию об ошибке в буфер обмена
+CopySource=Копировать функцию
+dom.tip.Copy_Source=Копировать исходный код функции в буфер обмена
+ShowCallsInConsole=Записывать вызовы к \"%S\"
+dom.tip.Log_Calls_To_Function=Записывать в консоль вызовы функции "%S"
+ShowEventsInConsole=Записывать события
+html.tip.Show_Events_In_Console=Записывать в консоль информацию о событии
+panel.Enabled=Панель включена
+panel.tip.Enabled=Переключить активацию панели
+panel.tooltip.Show_Command_Line_Popup=Показать всплывающую командную строку
+console.MethodNotSupported=Консоль Firebug не поддерживает \'%S\'
+commandline.errorSourceHeader=ВЫРАЖЕНИЕ ВЫПОЛНЕНО С ИСПОЛЬЗОВАНИЕМ КОМАНДНОЙ СТРОКИ FIREBUG:
+commandline.MethodDisabled=Этот метод командной строки временно отключен.
+commandline.MethodNotSupported=Командная строка Firebug не поддерживает \'%S\'
+commandline.CurrentWindow=Текущее окно:
+console.Disable_Break_On_All_Errors=Отключить остановку при ошибках
+console.Break_On_All_Errors=Останавливать на всех ошибках
+console.Break_On_This_Error=Прерывать на этой ошибке
+console.Use_Arrow_keys,_Tab_or_Enter=Используйте клавиши со стрелками, Tab или Enter
+console.JSDisabledInFirefoxPrefs=JavaScript отключен в настройках Firefox. Если Вы желаете использовать консоль, пожалуйста подключите Javascript - \'Инструменты\' -> \'Настройки\' -> \'Содержимое\' -> \'Использовать JavaScript\'
+console.ScriptPanelMustBeEnabledForTraces=Панель Сценарий должна быть включена, чтобы получить ошибки в стэке. <a>Включить панель Сценарий.</a>
+tooltip.multipleFiltersHint=Используйте Ctrl+мышь для выбора нескольких фильтров
+console.multiHighlightLimitExceeded=В массиве слишком много элементов для подсвечивания на странице (текущий лимит - %S).\\\\nСмотрите настройку \\\'extensions.firebug.multiHighlightLimit\\\'.
+commandline.disabledForXMLDocs=Командная строка Firebug отключена для XML-страниц. Вы можете <a>переключиться на HTML</a> для работы с ней.
+commandline.Use_in_Command_Line=Использовать в командной строке
+commandline.tip.Use_in_Command_Line=Перевести фокус на командную строку и сделать это значение доступным как "$p"
+commandline.include.includeSuccess=%S успешно подключен.
+commandline.include.aliasNotFound=Псевдоним "%S" не найден.
+commandline.include.loadFail=Скрипт не может быть загружен: %S
+commandline.include.invalidRequestProtocol=Поддерживаются только HTTP/HTTPS протоколы.
+commandline.include.invalidSyntax=Не удалось подключить по причине ошибок синтаксиса. Файл на самом деле содержит JavaScript?
+commandline.include.aliasCreated=Псевдоним "%S" создан.
+commandline.include.aliasRemoved=Псевдоним "%S" удалён.
+commandline.include.invalidAliasName=Имена псевдонимов не должны содержать "." или "/"; неправильное имя псевдонима: "%S".
+commandline.include.tooLongAliasName=Имена псевдонимов должны содержать не более 30 символов; неправильное имя псевдонима: "%S".
+commandline.include.invalidAliasArgumentType=Неправильный второй аргумент; ожидалось имя псевдонима.
+commandline.include.invalidUrlArgumentType=Неправильный аргумент адреса url.
+commandline.include.confirmDelete=Вы правда хотите удалить псевдоним: "%S"?
+commandline.include.noDefinedAlias=(псевдонимы пока не заданы)
+commandline.tip.Delete_Alias=Удалить псевдоним
+commandline.tip.Edit_Alias_Name=Редактировать имя псевдонима
+commandline.tip.Edit_Alias_URL=Редактировать URL псевдонима
+commandline.tip.Open_In_Scratchpad=Открыть содержимое скрипта в блокноте (Scratchpad)
+commandline.tip.Include_Script=Скачать и выполнить скрипт
+commandline.label.DeleteAlias=Удалить псевдоним
+commandline.label.EditAliasName=Редактировать имя псевдонима
+commandline.label.EditAliasURL=Редактировать URL псевдонима
+commandline.label.OpenInScratchpad=Открыть в блокноте
+commandline.label.IncludeScript=Подключить "%S"
+Do_not_show_this_message_again=Не показывать это сообщение
+scratchpad.loading=Загрузка, пожалуйста подождите…
+scratchpad.failLoading=Во время загрузки скрипта произошла ошибка.
+net.sizeinfo.Response_Body=Тело ответа
+net.sizeinfo.Post_Body=Тело запроса
+net.sizeinfo.Total_Sent=Всего отправлено
+net.sizeinfo.Total_Received=Всего получено
+net.sizeinfo.Including_HTTP_Headers=Включая заголовки HTTP
+net.ActivationMessage=Сетевая панель активирована. Любые запросы, пока сетевая панель неактивна, не будут показаны.
+net.responseSizeLimitMessage=Достигнут лимит ответа Firebug. Нажмите <a>здесь</a>, чтобы открыть полный ответ в новой вкладке Firefox.
+net.postDataSizeLimitMessage=Лимит на размер Post был достигнут. Удалено Firebug\'ом.
+net.Break_On_XHR=Останавливать на XHR
+net.label.Parameters=Параметры
+net.label.Parts=Части
+net.label.Source=Исходный код
+net.label.Resend=Отослать ещё раз
+net.tip.Resend=Отправить запрос ещё раз
+net.option.Disable_Browser_Cache=Отключить кэш браузера
+net.option.tip.Disable_Browser_Cache=Отключить HTTP кэш браузера
+net.option.Show_Paint_Events=Показывать события отрисовки
+net.option.tip.Show_Paint_Events=Показывать события MozAfterPaint в виде зелёных линий внутри линии времени
+net.option.Show_BFCache_Responses=Показывать ответы BFCache
+net.option.tip.Show_BFCache_Responses=Также будут показаны ответы Back-Forward Cache
+script.Break_On_Next=Останавливать на следующей ошибке
+script.Disable_Break_On_Next=Отключить остановку на следующем
+ShowHttpHeaders=Показать HTTP заголовки
+plural.Request_Count2=%1$S запрос;%1$S запросов
+net.summary.from_cache=%S из кэша
+net.summary.tip.request_count=Количество запросов
+net.summary.tip.total_size=Размер всех запросов
+net.summary.tip.total_cached_size=Размер всех кэшированных запросов
+net.summary.tip.total_request_time=Полное время, требуемое для загрузки всех запросов и время появления события 'onload'
+StopLoading=Прервать загрузку
+net.tip.Stop_Loading=Остановить после запроса
+LargeData=(Очень много данных)
+ShowComputedStyle=Показать вычисленный стиль
+StyleGroup-text=Текст
+StyleGroup-background=Фон
+StyleGroup-box=Блочная модель
+StyleGroup-layout=Макет
+StyleGroup-other=Другая
+Dimensions=%S х %S
+CopyColor=Копировать цвет
+css.tip.Copy_Color=Копировать цвет в буфер обмена
+CopyImageLocation=Копировать адрес картинки
+css.tip.Copy_Image_Location=Копировать URL изображения в буфер обмена
+OpenImageInNewTab=Открыть изображение в новой вкладке
+css.tip.Open_Image_In_New_Tab=Открывает изображение в новой вкладке
+OmitObjectPathStack=Пропускать стек панели инструментов
+callstack.option.tip.Omit_Object_Path_Stack=Не отображать стек пути объекта
+Load_Original_Source=Загрузить оригинальный источник
+css.tip.Load_Original_Source=Отбросить изменения и загрузить оригинальный CSS
+callstack.option.Show_Arguments=Показать аргументы
+callstack.option.tip.Show_Arguments=Так же показывать аргументы функций
+Copy_Rule_Declaration=Скопировать объявление правила
+css.tip.Copy_Rule_Declaration=Копировать правило, включая все свойства в буфер обмена
+Copy_Style_Declaration=Копировать определение стиля
+css.tip.Copy_Style_Declaration=Копировать свойства правила в буфер обмена
+css.label.Copy_Property_Declaration=Скопировать объявление свойства
+css.tip.Copy_Property_Declaration=Скопировать объявление свойства в буфер обмена
+css.label.Copy_Property_Name=Скопировать имя свойства
+css.tip.Copy_Property_Name=Скопировать имя свойства в буфер обмена
+css.label.Copy_Property_Value=Скопировать значение свойства
+css.tip.Copy_Property_Value=Скопировать значение свойства в буфер обмена
+plural.Error_Count2=%1$S ошибка;%1$S ошибок
+moduleManager.title=%S панель отключена
+moduleManager.desc3=Используйте иконку статусной строки для включения или отключения панелей. Используйте меню панели для точного управления:
+moduleManager.Enable=Включить
+Suspend_Firebug=Заморозить Firebug
+Resume_Firebug=Возобновить Firebug
+Reset_Panels_To_Disabled=Сбросить панели и отключить
+Open_Console=Открыть консоль
+Open_Console_Tooltip=Открыть панель слежения для Firebug.
+Scope_Chain=Цепь охвата
+With_Scope=С
+Call_Scope=Вызов
+Window_Scope=Окно
+requestinfo.Blocking=Блокирование
+requestinfo.Resolving=DNS-запрос
+requestinfo.Connecting=Подключение
+requestinfo.Sending=Отправка
+requestinfo.Waiting=Ожидание
+requestinfo.Receiving=Получение
+requestinfo.ContentLoad=\'Содержимое DOM загружено\' (событие)
+requestinfo.WindowLoad=\'загрузка\' (событие)
+requestinfo.started.label=Запросить время начала с запуска
+requestinfo.phases.label=Запросить фазы начала и затраченного времени относительно времени запуска:
+requestinfo.timings.label=Время события относительно к началу запроса:
+search.Firebug_Search=Поиск Firebug
+search.Next=След.
+search.tip.Next=Искать следующее совпадение
+search.Previous=Предыдущее
+search.tip.Previous=Искать предыдующее совпадение
+search.Case_Sensitive=Учитывать регистр
+search.tip.Case_Sensitive=Учитывать регистр при поиске
+search.Case_Insensitive=Не учитывать регистр
+search.tip.Case_Insensitive=Игнорировать регистр при поиске
+search.Multiple_Files=Множественные файлы
+search.tip.Multiple_Files=Искать во всех файлах, которые относятся к данной панели
+search.Use_Regular_Expression=Использовать регулярное выражение
+search.tip.Use_Regular_Expression=Интерпретировать поисковой запрос как регулярное выражение при поиске
+search.html.CSS_Selector=Селектор CSS
+search.net.Headers=Заголовки
+search.net.Parameters=Параметры
+search.net.Response_Bodies=Содержимое ответов
+search.net.tip.Response_Bodies=Искать так же в телах ответов
+firebug.console.Persist=Не очищать
+firebug.console.Do_Not_Clear_On_Reload2=Не очищать панель при перезагрузке страницы
+firebug.console.Show_All_Log_Entries=Показывать все записи лога
+firebug.console.Errors=Ошибки
+firebug.console.Filter_by_Errors=Фильтровать по ошибкам
+firebug.console.Warnings=Предупреждения
+firebug.console.Filter_by_Warnings=Фильтровать по предупреждениям
+firebug.console.Info=Информация
+firebug.console.Filter_by_Info=Фильтровать по информации
+firebug.console.Debug_Info=Отладочная информация
+firebug.console.Filter_by_Debug_Info=Фильтровать по отладочной информации
+firebug.Deactivate_Firebug=Отключить Firebug
+firebug.tip.Deactivate_Firebug=Отключить Firebug для данного сайта
+firebug.tip.Toggle_Side_Panels=Переключить отображение боковых панелей
+firebug.ShowFirebug=Открыть Firebug
+firebug.menu.tip.Open_Firebug=Показать Firebug UI
+firebug.HideFirebug=Скрыть Firebug
+firebug.menu.tip.Minimize_Firebug=Свернуть Firebug, но оставить включённым
+firebug.FocusFirebug=Перевести фокус на окно Firebug
+firebug.menu.tip.Focus_Firebug=Перевести фокус на отдельное окно Firebug
+firebug.menu.Enable_All_Panels=Включить все панели
+firebug.menu.tip.Enable_All_Panels=Включить все доступные панели
+firebug.menu.Disable_All_Panels=Отключить все панели
+firebug.menu.tip.Disable_All_Panels=Отключить все доступные панели
+firebug.menu.Customize_shortcuts=Настроить горячие клавиши
+firebug.menu.tip.Customize_Shortcuts=Настроить внутренние сочетания клавиш Firebug
+firebug.Options=Опции
+firebug.menu.tip.Options=Глобальные настройки Firebug
+firebug.menu.Enable_Accessibility_Enhancements=Включить улучшения для ограниченных возможностей
+firebug.menu.tip.Enable_Accessibility_Enhancements=Включить полное управление с клавиатуры и другие специальные возможности
+firebug.menu.Activate_Same_Origin_URLs2=Активировать для всех подобных URL'ов
+firebug.menu.tip.Activate_Same_Origin_URLs=Активировать Firebug для всех URL'ов, совпадающих с политикой происхождения
+firebug.menu.Reset_All_Firebug_Options=Сбросить все настройки Firebug\'а
+firebug.menu.tip.Reset_All_Firebug_Options=Сбросить все настройки Firebug в значения по-умолчанию
+firebug.menu.Firebug_Online=Firebug Online
+firebug.menu.tip.Firebug_Online=Сайты, относящиеся к Firebug
+firebug.menu.Extensions=Расширения Firebug…
+firebug.menu.tip.Extensions=Скачать и установить расширения Firebug
+firebug.menu.Vertical_Panels=Вертикальные панели
+firebug.menu.tip.Vertical_Panels=Переключить макет главной и боковых панелей Firebug
+firebug.menu.Show_Info_Tips=Показывать подсказки
+firebug.menu.tip.Show_Info_Tips=Показывать всплывающие подсказки с информацией об элементе под курсором
+firebug.Show_Error_Count=Показать количество ошибок
+firebug.menu.tip.Show_Error_Count=Показывать количество ошибок, записанных в консоли
+firebug.TextSize=Размер текста
+firebug.menu.tip.Text_Size=Изменить размер текста в Firebug
+firebug.IncreaseTextSize=Увеличить размер текста
+firebug.menu.tip.Increase_Text_Size=Увеличить размер текста в Firebug
+firebug.DecreaseTextSize=Уменьшить размер текста
+firebug.menu.tip.Decrease_Text_Size=Уменьшить размер текста в Firebug
+firebug.NormalTextSize=Сбросить размер текста
+firebug.menu.tip.Normal_Text_Size=Сбросить размер текста в Firebug на значение по-умолчанию
+firebug.Website=Сайт Firebug...
+firebug.menu.tip.Website=Открыть официальный сайт Firebug
+firebug.help=Помощь…
+firebug.menu.tip.help=Открыть страницу со ссылками на страницы, помогающие с Firebug
+firebug.Documentation=Документация...
+firebug.menu.tip.Documentation=Открыть документацию Firebug
+firebug.KeyShortcuts=Горячие клавиши...
+firebug.menu.tip.Key_Shortcuts=Открыть список клавиатурных сокращений Firebug
+firebug.Forums=Обсудить на форуме...
+firebug.menu.tip.Forums=Открыть сайт группы обсуждения
+firebug.Issues=Трэкер задач/ошибок...
+firebug.menu.tip.Issues=Открыть трекер ошибок
+firebug.Donate=Спонсировать...
+firebug.menu.tip.Donate=Открыть сайт помощи проекту
+firebug.About=О расширении...
+firebug.menu.tip.About=Информация о Firebug
+ProfileJavaScript=Профилировать JavaScript
+firebug.menu.tip.Profile_JavaScript=Профилировать время исполнения JavaScript
+firebug.Search=Искать
+firebug.menu.tip.Search=Установить фокус на поле поиска
+firebug.shortcut.reenterCommand.label=Ввести команду
+firebug.shortcut.tip.reenterCommand=Ввести ещё раз последнюю команду в командную строку
+firebug.shortcut.toggleInspecting.label=Переключить анализ
+firebug.shortcut.tip.toggleInspecting=Включить/отключить инспектор
+firebug.shortcut.toggleQuickInfoBox.label=Переключить окно быстрой информации
+firebug.shortcut.tip.toggleQuickInfoBox=Включить/отключить отображение панели с информацией об инспектируемом элементе
+firebug.shortcut.toggleProfiling.label=Переключить профилирование
+firebug.shortcut.tip.toggleProfiling=Включить/отключить профайлер JavaScript
+firebug.shortcut.focusCommandLine.label=Переключиться на командную строку
+firebug.shortcut.tip.focusCommandLine=Открыть Firebug и установить фокус на командную строку / переключить всплывающую командную строку
+firebug.shortcut.focusFirebugSearch.label=Переключиться на поиск Firebug
+firebug.shortcut.tip.focusFirebugSearch=Установить фокус на поле поиска
+firebug.shortcut.focusWatchEditor.label=Переключиться на редактор слежения
+firebug.shortcut.tip.focusWatchEditor=Переключить на панель сценария и установить фокус на поле для ввода нового выражения слежения
+firebug.shortcut.focusLocation.label=Переключиться на адрес
+firebug.shortcut.tip.focusLocation=Открыть меню местоположения
+firebug.shortcut.nextObject.label=Следующий объект
+firebug.shortcut.tip.nextObject=Выбрать следующий объект в пути элемента панели
+firebug.shortcut.previousObject.label=Предыдущий объект
+firebug.shortcut.tip.previousObject=Выбрать предыдущий объект в пути элемента панели
+firebug.shortcut.customizeFBKeys.label=Редактировать горячие клавиши Firebug
+firebug.shortcut.tip.customizeFBKeys=Открыть диалог настроек клавиатурных сокращений Firebug
+firebug.shortcut.detachFirebug.label=Открыть в отдельном окне
+firebug.shortcut.tip.detachFirebug=Вывести Firebug в отдельное окно
+firebug.shortcut.leftFirebugTab.label=Переключиться на левую панель Firebug
+firebug.shortcut.tip.leftFirebugTab=Переключиться на панель Firebug слева
+firebug.shortcut.rightFirebugTab.label=Переключиться на правую панель Firebug
+firebug.shortcut.tip.rightFirebugTab=Переключиться на панель Firebug справа
+firebug.shortcut.toggleFirebug.label=Открыть Firebug
+firebug.shortcut.tip.toggleFirebug=Открыть/свернуть Firebug UI
+firebug.shortcut.closeFirebug.label=Отключить Firebug
+firebug.shortcut.tip.closeFirebug=Отключить Firebug для данного сайта
+firebug.shortcut.previousFirebugTab.label=Предыдущая вкладка Firebug
+firebug.shortcut.tip.previousFirebugTab=Переключиться на предыдущую панель Firebug
+firebug.shortcut.clearConsole.label=Очистить консоль
+firebug.shortcut.tip.clearConsole=Удалить все логи из консоли
+firebug.shortcut.openTraceConsole.label=Открыть консоль слежения
+firebug.shortcut.tip.openTraceConsole=Открыть консоль FBTrace
+firebug.shortcut.navBack.label=Назад
+firebug.shortcut.tip.navBack=Переключиться на предыдущую панель или элемент списка положения истории навигации
+firebug.shortcut.navForward.label=Вперёд
+firebug.shortcut.tip.navForward=Переключиться на следующую панель или элемент списка положения истории навигации
+firebug.shortcut.increaseTextSize.label=Увеличить размер текста
+firebug.shortcut.tip.increaseTextSize=Увеличить размер текста в Firebug
+firebug.shortcut.decreaseTextSize.label=Уменьшить размер текста
+firebug.shortcut.tip.decreaseTextSize=Уменьшить размер текста в Firebug
+firebug.shortcut.normalTextSize.label=Обычный размер текста
+firebug.shortcut.tip.normalTextSize=Сбросить размер текста в Firebug на значение по-умолчанию
+firebug.shortcut.help.label=Открыть справку
+firebug.shortcut.tip.help=Открыть страницу с часто задаваемыми вопросами
+firebug.shortcut.toggleBreakOn.label=Переключить остановку на…
+firebug.shortcut.tip.toggleBreakOn=Включить/отключить остановку выполнения скрипта при возникновении специфичных событий внутри панели
+firebug.panel_selector=Выбор панели
+customizeShortcuts=Назначение горячих клавиш Firebug
+a11y.labels.panel_tools=инструменты панели
+a11y.labels.firebug_panels=Панели Firebug
+a11y.labels.firebug_side_panels=Боковые панели Firebug
+a11y.labels.firebug_window=окно firebug
+a11y.labels.firebug_status=статус firebug
+a11y.labels.reset=сбросить
+a11y.labels.reset_shortcut=сбросить %S ярлык
+aria.labels.inactive_panel=неактивная панель
+a11y.labels.log_rows=строки лога
+a11y.labels.call_stack=стэк вызовов
+a11y.labels.document_structure=структура документа
+a11y.labels.title_panel=%S панель
+a11y.labels.title_side_panel=%S боковая панель
+a11y.labels.cached=кэш
+aria.labels.stack_trace=ошибки в стэке
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=позиция
+a11y.layout.position_top=позиция сверху
+a11y.layout.position_right=позиция справа
+a11y.layout.position_bottom=позиция снизу
+a11y.layout.position_left=позиция слева
+a11y.layout.margin_top=выступ сверху
+a11y.layout.margin_right=выступ справа
+a11y.layout.margin_bottom=выступ снизу
+a11y.layout.margin_left=выступ слева
+a11y.layout.border_top=граница сверху
+a11y.layout.border_right=граница справа
+a11y.layout.border_bottom=граница снизу
+a11y.layout.border_left=граница слева
+a11y.layout.padding_top=отступ сверху
+a11y.layout.padding_right=отступ справа
+a11y.layout.padding_bottom=отступ снизу
+a11y.layout.padding_left=отступ слева
+a11y.layout.top=сверху
+a11y.layout.right=справа
+a11y.layout.bottom=снизу
+a11y.layout.left=слева
+a11y.layout.width=ширина
+a11y.layout.height=высота
+a11y.layout.size=размер
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=габариты клиентского квадрата
+a11y.descriptions.press_enter_to_edit_values=нажмите Enter следом за Tab для редактирования индивидуальных значений
+a11y.labels.style_rules=правила стиля
+aria.labels.inherited_style_rules=унаследованные правила стиля
+a11y.labels.computed_styles=скомпилированные стили
+a11y.labels.dom_properties=свойства DOM
+a11y.labels.inline_editor=встроенный редактор
+a11y.labels.value_for_attribute_in_element=значение атрибута %S элемента %S
+a11y.labels.attribute_for_element=атрибут для элемента %S
+a11y.labels.text_contents_for_element=текстовое содержимое элемента %S
+a11y.labels.defined_in_file=определёно в %S
+a11y.labels.declarations_for_selector=определения стиля для селектора \"%S\"
+a11y.labels.property_for_selector=свойства CSS для селектора: %S
+a11y.labels.value_property_in_selector=%S значение свойства в селекторе %S
+a11y.labels.css_selector=селектор CSS
+a11y.labels.source_code_for_file=исходный код файла %S
+a11y.labels.press_enter_to_add_new_watch_expression=нажмите Enter для добавления нового слежения
+a11y.labels.overridden=переопределённый
+a11y.updates.has_conditional_break_point=имеет условную точку останова
+a11y.updates.has_disabled_break_point=отменил точку останова
+a11y.updates.script_suspended_on_line_in_file=Сценарий остановлен на линии %S в %S, файл %S
+a11y.updates.match_found_in_logrows=соответствие для %S найдено в строках лога %S
+a11y.updates.match_found_for_on_line=соответствие для %S найдено на линии %S в %S
+a11y.updates.match_found_in_element=соответствие для %S найдено в элементе %S по пути %S
+a11y.updates.match_found_in_attribute=соответствие для %S найдено в атрибуте %S=%S элемента %S по пути %S
+a11y.updates.match_found_in_text_content=соответствие для %S найдено в текстовом содержимом: %S элемента %S по пути %S
+a11y.updates.match_found_in_selector=соответствие для %S найдено в селекторе %S
+a11y.updates.match_found_in_style_declaration=соответствие для \"%S\" найдено в определении стиля %S селектора %S
+a11y.updates.match_found_in_dom_property=соответствие для %S найдено в свойстве DOM %S
+a11y.updates.match_found_in_net_row=соответствие для \"%S\" найдено в %S, %S : %S;
+a11y.updates.match_found_in_net_summary_row=соответствие для %S найдено в суммарной строке сети: %S
+a11y.updates.no_matches_found=не найдено соответствий для \"%S\"
+confirmation.Reset_All_Firebug_Options=Вы уверены, что хотите сбросить все настройки Firebug?
+confirmation.Edit_CSS_Source=Ваши текущие правки CSS будут утеряны.\\\\nВы уверены, что желаете отредактировать источник?
+warning.Console_must_be_enabled=Консоль должна быть активирована
+warning.Command_line_blocked?=Командная строка заблокирована?
+warning.dollar_change=Функция $() командной строки консоли изменилась с $=getElementById(id) на $=querySelector(selector). Вы можете попробовать писать так $("#%S")
+message.Reload_to_activate_window_console=Перезагрузите страницу для активации консоли
+message.sourceNotAvailableFor=Перезагрузите страницу, чтобы получить источник для
+message.The_resource_from_this_URL_is_not_text=Содержимое, находящееся по указанному URL не является текстом
+firebug.history.Go_back_to_this_panel=Обратно на эту панель
+firebug.history.Stay_on_this_panel=Остаться на этой панели
+firebug.history.Go_forward_to_this_panel=Вперёд на эту панель
+firebug.history.Go_back=Назад
+firebug.history.Go_forward=Вперёд
+script.warning.inactive_during_page_load=Панель Сценарий была выключена во время загрузки страницы
+script.suggestion.inactive_during_page_load2=<a>Перезагрузите</a>, чтобы увидеть весь исходный код
+script.warning.javascript_not_enabled=JavaScript отключен
+script.suggestion.javascript_not_enabled=Перейдите Firefox > Инструменты > Настройки > Содержимое > Использовать JavaScript
+script.button.enable_javascript=Включите JavaScript и обновите страницу
+script.warning.all_scripts_filtered=Все скрипты были отфильтрованы
+script.suggestion.all_scripts_filtered=Обратитесь к настройкам фильтрации скриптов на панели инструментов или к опции \"Показывать исходные коды Chrome\"
+script.warning.no_system_source_debugging=Невозможно отладить системные ресурсы
+script.suggestion.no_system_source_debugging=На данный момент невозможно использовать Firebug для отладки системных ресурсов. Обратитесь к <a>проблеме 5110</a> для объяснений.
+script.warning.no_javascript=На этой странице JavaScript отсутствует
+script.suggestion.no_javascript2=Если тэги <script> имеют аттрибут "type", он должен быть "text/javascript" или "application/javascript". Так же скрипты должны быть читаемы (с корректным синтаксисом).
+script.warning.debugger_active=Дебаггер уже активен
+script.suggestion.debugger_active=На данный момент дебаггер остановлен на точке останова на другой странице.
+script.button.Go_to_that_page=Перейти на страницу
+script.warning.debugger_not_activated=Дебаггер отключен
+script.suggestion.debugger_not_activated=Дебаггер отключен
+script.Script_panel_must_be_enabled=%S (панель Сценарий должна быть включена)
+firebug.Firebug=Firebug
+firebug.Close=Закрыть
+firebug.View=Просмотреть
+firebug.Help=Помощь
+firebug.Run=Выполнить
+firebug.Copy=Скопировать
+firebug.History=История
+firebug.Run_the_entered_command=Выполнить введённую команду
+firebug.Clear_the_Command_Editor=Очистить редактор команд
+firebug.Copy_the_script_as_a_bookmarklet=Скопировать скрипт как bookmarklet
+firebug.Insert_a_previously_entered_command=Вставить предыдущую команду
+firebug.AlwaysOpenInWindow=Всегда открывать в новом окне
+firebug.OpenWith=Открыть в редакторе
+firebug.menu.tip.Open_With=Открыть содержимое во внешнем редакторе
+firebug.Permissions=Сайты...
+firebug.Configure_Editors=Конфигурация редакторов
+script.tip.Script_Type=Фильтровать по типу скрипта
+script.tip.Script_Filter_Static=Показывать только те скрипты, которые загрузились со страницей
+script.tip.Script_Filter_Evals=Показывать скрипты, которые загрузились со страницей и скрипты созданные через eval()
+script.tip.Script_Filter_Events=Показывать скрипты, которые загрузились со страницей, скрипты созданные через eval() и обработчики событий
+script.tip.Script_Filter_All=Показывать все скрипты
+firebug.labelWithShortcut=%S (%S)
+script.Rerun=Перезапустить
+script.tip.Rerun=Перезапустить стек вызовов текущей функции
+script.Continue=Продолжить
+script.tip.Continue=Продолжить исполнение JavaScript
+script.Step_Over=Шаг с обходом
+script.tip.Step_Over=Выполнить следующую команду
+script.Step_Into=Шаг с заходом
+script.tip.Step_Into=Выполнить следующую команду и перейти к функциям
+script.Step_Out=Шаг с выходом
+script.tip.Step_Out=Выполнить оставшуюся часть функции и вернуться к её вызову
+firebug.RunUntil=Выполнить до этой строки
+script.tip.Run_Until=Выполнять JavaScript до указанного времени
+firebug.Inspect=Анализировать
+firebug.InspectElement=Анализировать элемент
+firebug.InspectElementWithFirebug=Инспектировать элемент с помощью Firebug
+firebug.BreakOnErrors=Прерывать на ошибках
+firebug.InspectTooltip=Щелкните на элементе страницы для анализа
+firebug.EditHTMLTooltip=Редактировать HTML-код элемента
+firebug.Profile=Профилировать
+firebug.Clear=Очистить
+firebug.ClearConsole=Очистить консоль
+firebug.ClearTooltip=Очистить консоль
+editors.Configured_Firebug_Editors=Сконфигурированные редакторы Firebug
+editors.Editor=Редактор
+editors.Executable=Исполнимый файл
+editors.Launch_Arguments=Параметры запуска
+editors.Add=Добавить
+editors.Remove=Удалить
+editors.Change=Изменить
+editors.Move_Up=Вверх
+editors.Close=Закрыть
+editors.Browse=Обзор…
+changeEditor.Editor_Configuration=Конфигурация редактора
+changeEditor.Name=Имя
+changeEditor.Executable=Файл
+changeEditor.CmdLine=Аргументы
+changeEditor.Supplied_arguments=Аргументы предоставленные Firebug:
+changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> URL файла (если %url отсутствует, %file будет добавлен по-умолчанию)
+changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> Путь к локальному файлу (или временной копии)
+changeEditor.Line_number=<label class=\'text-link\'>%line</label> Номер строки (если доступно)
+changeEditor.Invalid_Application_Path=Неправильный путь к приложению
+changeEditor.Application_does_not_exist=Указанное приложение не существует
+firebug.Edit=Редактировать
+firebug.css.sourceEdit=Правка кода
+firebug.css.sourceEdit.tooltip=Правка исходного кода CSS в том виде, в котором он загружен браузером
+firebug.css.liveEdit=Живая правка
+firebug.css.liveEdit.tooltip=Правка исходного кода CSS в том виде, в котором он извлечён из браузера
+firebug.EditCSSTooltip=Редактировать таблицу стилей
+firebug.activation.privateBrowsingMode=Сайты не запоминаются в режиме Приватного просмотра
+firebug.breakpoint.showBreakNotifications=Показывать уведомления об остановках
+firebug.breakpoint.tip.Show_Break_Notifications=Показать окно уведомления, когда Прерывать на ... или дебагер; ключевое слово, остановившее выполнение JavaScript
+firebug.breakpoint.doNotShowBreakNotification2=Вы можете включить/отключить уведомления об остановах в <a>меню панели вкладки</a>.
+firebug.bon.cause.disableDebuggerKeyword2=Нажатие на кнопку \'Отключить\' переопределяет дебаггер с неактивной точкой останова.
+firebug.bon.tooltip.disableDebuggerKeyword2=Создаёт неактивную точку останова
+firebug.bon.scriptPanelNeeded=(панель Сценарий должна быть активирована для использования данной возможности)
+firebug.dom.noChildren2=Дочерние объекты отсутствуют
+firebug.reps.more=ещё
+firebug.reps.reference=Обнаружено цикличное указание
+firebug.storage.totalItems=%1$S элемент в Хранилище;%1$S элементов в Хранилище
+firebug.reps.historyEntries=%1$S запись в истории;%1$S записей в истории
+firebug.reps.table.ObjectProperties=Свойста объекта
+firebug.completion.empty=(завершения отсутствуют)
+firebug.failedToPreviewObjectURL=Вероятно объект URL был отменён используя метод revokeObjectURL.
+firebug.failedToPreviewImageURL=Невозможно загрузить указанный URL.
+firebug.Memory_Profiler_Started=Профайлер памяти запущен
+firebug.Objects_Added_While_Profiling=Во время профилирования были добавлены объекты
+firebug.Memory_Profiler_Results=Результаты работы профайлера памяти
+firebug.Entire_Session=Вся сессия
+console.msg.nothing_to_output=(выводить нечего)
+console.msg.an_empty_string=(пустая строка)
+cookies.legacy.firecookie_detected=Обнаружен аддон Firecookie. Данный аддон был интегрирован в Firebug 1.10 по-умолчанию. Для того, чтобы избежать возможных осложнений - вам надо удалить Firecookie. \n\nДля завершения удаления - необходимо перезапустить браузер.
+cookies.legacy.uninstall=Удалить
+cookies.legacy.uninstall_and_restart=Удалить и перезапустить
+console.cmd.help_title=API коммандной строки
+console.cmd.help_title_desc=Нажмите F!, чтобы открыть онлайн справку Firebug
+console.cmd.tip_title=Подсказки командной строки
+console.cmd.tip_title_desc=Изучить подсказки командной строки
+console.cmd.tip.javascript=Любое допустимое выражение JavaScript может быть выполнено в командной строке. Пример:
+console.cmd.tip.closures=Для доступа к переменным в замыканиях используйте синтакс '.%' (<a>подробнее</a>). Пример:
+console.cmd.help.$=Возвращает одиночный элемент с указанным id.
+console.cmd.help.$$=Возвращает массив элементов, которые совпадают с указанным селектором CSS.
+console.cmd.help.$x=Возвращает массив элементов, которые совпадают с указанным выражением XPath.
+console.cmd.help.dir=Выводит интерактивный список всех свойств объекта. Выглядит идентично виду внутри DOM панели.
+console.cmd.help.dirxml=Выводит исходное дерево XML элемента HTML или XML. Выглядит идентично виду внутри HTML панели. Вы можете выбрать любую ноду и изучить ещё в HTML панели.
+console.cmd.help.cd=По-умолчанию, выражения командной строки относительны верхнему уровню окна страницы. cd() позволяет вам использовать окно фрейма в странице взамен.
+console.cmd.help.clear=Очищает консоль.
+console.cmd.help.copy=Копирует указанный параметр в буфер обмена. Это может быть значение, возвращённое функцией или объект.
+console.cmd.help.inspect=Инспектирует объект в наиболее подходящей панели, или в панели, указанной во втором, опциональном аргументе. Доступные имена панелей: "html", "stylesheet", "script" и "dom".
+console.cmd.help.keys=Возвращает массив, содержащий имена всех свойств объекта.
+console.cmd.help.values=Возвращает массив, содержащий значения всех свойств объекта.
+console.cmd.help.debug=Добавляет точку останова на первой строке функции.
+console.cmd.help.undebug=Удаляет точку останова на первой строке функции.
+console.cmd.help.monitor=Включает запись в консоль всех обращений к функции.
+console.cmd.help.unmonitor=Отключает запись в консоль всех обращений к функции.
+console.cmd.help.monitorEvents=Включает запись всех событий в лог, происходящих с объектом. Опциональный второй аргумент может указывать на особые события или типы событий для записи. Доступные типы событий: "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul" и "clipboard".
+console.cmd.help.unmonitorEvents=Выключает запись в лог всех событий, происходящих с объектом. Опциональный второй аргумент может указывать на особые события или типы событий для отключения записи.
+console.cmd.help.profile=Включает профайлер JavaScript. Опциональный второй аргумент может содержать текст для вывода в заголовке отчёта профайлера.
+console.cmd.help.profileEnd=Выключает профайлер JavaScript и выводит отчёт.
+console.cmd.help.table=Позволяет записывать в лог данные, используя табуляцию. Метод принимает один обязательный параметр, который представляет данные табличного вида (массив массивов или список объектов). Опциональный второй параметр может быть использован для указания колонок и/или свойств для записи в лог.
+console.cmd.help.$0=Представляет последний элемент выбранный с помощью Инспектора.
+console.cmd.help.$1=Представляет второй последний элемент выбранный с помощью Инспектора.
+console.cmd.help.$2=Представляет третий последний элемент выбранный с помощью Инспектора.
+console.cmd.help.$3=Представляет четвёртый последний элемент выбранный с помощью Инспектора.
+console.cmd.help.$4=Представляет пятый последний элемент выбранный с помощью Инспектора.
+console.cmd.help.$n=Возвращает один из пяти последних элементов выбранных с помощью Инспектора. Этот метод принимает один обязательный параметр, который представляет индекс элемента (начинается с 0).
+console.cmd.help.$_=Представляет результат последнего исполненного выражения в командной строке.
+console.cmd.help.help=Выводит справку для всех доступных команд.
+console.cmd.help.include=Включает удалённый скрипт.
+console.cmd.help.$p=После ПКМ на объекте/значении JavaScript, и нажатии "Использовать в командной строке", переменная в командной строке будет установлена в это значение.
+console.cmd.help.getEventListeners=Возвращает объект со всеми наблюдателями события, зарегистрированными на элементе (или иной цели события).
+console.cmd.helpUrlNotAvailable=Страница справки для этой команды недоступна.
+perftiming.bars.label=Фазы документа - начало и затраченное время, по отношению к загрузке документа:
+perftiming.events.label=Тайминг событий по отношению к загрузке документа:
+perftiming.details_title=Тайминг производительности
+perftiming.details_title_desc=Детализированный тайминг
+perftiming.connectEnd=Момент окончания соединения с сервером.
+perftiming.connectStart=Момент перед началом соединения с сервером.
+perftiming.domComplete=Момент перед окончанием чтения документа.
+perftiming.domContentLoadedEventEnd=Момент после окончания события DOMContentLoaded.
+perftiming.domContentLoadedEventStart=Момент перед запуском события DOMContentLoaded.
+perftiming.domInteractive=Момент перед готовностью, установленной в интерактив.
+perftiming.domLoading=Момент перед готовностью, установленной в загрузку.
+perftiming.domainLookupEnd=Момент после поиска имени домена.
+perftiming.domainLookupStart=Момент перед поиском имени домена.
+perftiming.fetchStart=Момент, когда начинается получение ресурсов.
+perftiming.loadEventEnd=Момент, когда событие загрузки завершилось.
+perftiming.loadEventStart=Момент перед выполнением события загрузки.
+perftiming.navigationStart=Момент после начала выгрузки предыдущего документа.
+perftiming.redirectCount=Количество редиректов с последнего не редиректа.
+perftiming.redirectEnd=Момент после окончания последнего редиректа.
+perftiming.redirectStart=Момент получения того, что инициировало редирект.
+perftiming.requestStart=Момент перед запросом сервера.
+perftiming.responseEnd=Момент после окончания ответа или соединения.
+perftiming.responseStart=Момент перед началом ответа.
+perftiming.unloadEventEnd=Момент после выгрузки предыдущего документа.
+perftiming.unloadEventStart=Момент перед запуском события выгрузки.
diff --git a/locale/ru/selectors.properties b/locale/ru/selectors.properties
index 96b06a0..8f2da7e 100644
--- a/locale/ru/selectors.properties
+++ b/locale/ru/selectors.properties
@@ -1,26 +1,26 @@
-# LOCALIZATION NOTE (Panel-selectors): Title for Selectors side panel displayed
-# in the CSS panel
-Panel-selectors=Селекторы
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selectors=Отображение элементов, совпадающих с CSS-селектором
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selectors side panel.
-css.selector.noSelection=Укажите свой селектор, или нажмите ПКМ на правиле CSS и выберите <b>Выбрать совпадающие элементы</b>.
-# LOCALIZATION NOTE (css.selector.noSelectionResults, css.selector.invalidSelector):
-# Info messages for selector trials in Selectors side panel
-css.selector.noSelectionResults=Нет совпадающих элементов
-# LOCALIZATION NOTE (css.selector.readMore):
-# Helper text with a link to getfirebug.com/wiki for the Selectors panel.
-css.selector.readMore=Вы можете <a>прочитать</a> о возможностях этой панели.
-# LOCALIZATION NOTE (css.selector.invalidSelector):
-css.selector.invalidSelector=Указан ошибочный селектор
-# LOCALIZATION NOTE (css.selector.TryASelector):
-# Placeholder label for the Selectors side panel's input field for creating new selector trials
-css.selector.TryASelector=Проверить селектор...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Выбрать совпадающие элементы
-aria.labels.Selectors=Боковая панель селекторов
-a11y.labels.press_enter_to_add_new_selector=Нажмите Enter для добавления нового селектора
+# LOCALIZATION NOTE (Panel-selectors): Title for Selectors side panel displayed
+# in the CSS panel
+Panel-selectors=Селекторы
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selectors=Отображение элементов, совпадающих с CSS-селектором
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selectors side panel.
+css.selector.noSelection=Укажите свой селектор, или нажмите ПКМ на правиле CSS и выберите <b>Выбрать совпадающие элементы</b>.
+# LOCALIZATION NOTE (css.selector.noSelectionResults, css.selector.invalidSelector):
+# Info messages for selector trials in Selectors side panel
+css.selector.noSelectionResults=Нет совпадающих элементов
+# LOCALIZATION NOTE (css.selector.readMore):
+# Helper text with a link to getfirebug.com/wiki for the Selectors panel.
+css.selector.readMore=Вы можете <a>прочитать</a> о возможностях этой панели.
+# LOCALIZATION NOTE (css.selector.invalidSelector):
+css.selector.invalidSelector=Указан ошибочный селектор
+# LOCALIZATION NOTE (css.selector.TryASelector):
+# Placeholder label for the Selectors side panel's input field for creating new selector trials
+css.selector.TryASelector=Проверить селектор...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Выбрать совпадающие элементы
+aria.labels.Selectors=Боковая панель селекторов
+a11y.labels.press_enter_to_add_new_selector=Нажмите Enter для добавления нового селектора
diff --git a/locale/sk-SK/cookies.properties b/locale/sk-SK/cookies.properties
index 998f1f9..607fe44 100644
--- a/locale/sk-SK/cookies.properties
+++ b/locale/sk-SK/cookies.properties
@@ -1,277 +1,277 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Session
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Accept Cookies From Sites
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Clear cookies when denying
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cut
-cookies.Copy=Copy
-cookies.CopyAll=Copy All
-cookies.Paste=Paste
-cookies.Delete=Delete
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Edit
-cookies.Accept=Accept
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reset Header
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
-cookies.ExceptionsTitle=Exceptions - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support for Cookie Monitoring
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=Disable Cookies panel for %S
-cookies.Permissions=Enable or Disable Cookies panel
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=System Pages
-cookies.LocalFiles=Local Files
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Do you want to remove all cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remove all cookies in the list.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Create a new cookie for %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Value
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Manage cookie permissions for %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=All cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejected:
-cookies.console.nocookiesreceived=No cookies received
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=deleted
-cookies.console.added=added
-cookies.console.changed=changed
-cookies.console.cleared=cleared
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domain
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Secure
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Value
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Default (Accept session cookies)
-cookies.default.thirdPartySession=Default (Accept session cookies)
-cookies.default.thirdParty=Default (Accept cookies)
-cookies.default.allow=Default (Accept cookies)
-cookies.default.deny=Default (Deny cookies)
-cookies.default.warn=Default (Warn before accepting cookie)
-cookies.default.limitThirdParty=Predvolené (obmedziť cookie tretích strán)
-cookies.host.session=Accept session cookies from %S
-cookies.host.accept=Accept cookies from %S
-cookies.host.reject=Deny cookies from %S
-cookies.host.limitThirdParty=Obmedziť cookie tretích strán pre %S
-
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie name is not valid.
-cookies.edit.invalidhost=Cookie host is not valid.
-cookies.edit.invalidpath=Cookie path is not valid.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly,
-# cookies.header.maxAge):
-# Column labels used in the cookie header.
-cookies.header.name=Name
-cookies.header.value=Value
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domain
-cookies.header.size=Size
-cookies.header.rawSize = Dátová veľkosť
-cookies.header.path=Path
-cookies.header.expires=Expires
-cookies.header.security=Security
-cookies.header.httponly=HttpOnly
-cookies.header.maxAge=Max. vek
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip, cookies.header.maxAge.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Name of the cookie
-cookies.header.value.tooltip=Value stored for the cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domain that has stored the cookie
-cookies.header.rawSize.tooltip=Raw size of the stored cookie
-cookies.header.size.tooltip=Size of the stored cookie
-cookies.header.path.tooltip=Directory where the cookie is active
-cookies.header.expires.tooltip=Expiration date for the cookie
-cookies.header.security.tooltip=Shows whether it is a secure cookie or not
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-cookies.header.maxAge.tooltip=Maximálny čas, počas ktorého sa cookie uloží
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies,
-# cookies.netinfo.deleted.tooltip):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Received Cookies
-cookies.netinfo.Sent_Cookies=Sent Cookies
-cookies.netinfo.deleted.tooltip=Požiadavka vyexpirovala cookie
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Path Filter
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Export All Cookies
-cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
-cookies.export.Export_For_Site=Export Cookies For This Site
-cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Remove Cookies
-cookies.Create=Create Cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Tools
-cookies.ToolsTooltip=Tools
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Show All Cookies
-cookies.ViewAllTooltip=Open the built-in Cookie Manager
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Web Sites Permissions
-cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filter
-cookies.FilterTooltip=Use given options to filter the cookie list.
-cookies.filter.byPath=Filter Cookies By Current Path
-cookies.filter.byPathTooltip=Show only cookies that match the current path.
-cookies.filter.showRejectedCookies=Show Rejected Cookies
-cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Edit Cookie
-cookies.edit.name.label=Name:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Path:
-cookies.edit.expire.label=Expires:
-cookies.edit.value.label=Value:
-cookies.edit.secure.label=Secure Cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Session
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Accept Cookies From Sites
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Clear cookies when denying
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cut
+cookies.Copy=Copy
+cookies.CopyAll=Copy All
+cookies.Paste=Paste
+cookies.Delete=Delete
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Edit
+cookies.Accept=Accept
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reset Header
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
+cookies.ExceptionsTitle=Exceptions - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support for Cookie Monitoring
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=Disable Cookies panel for %S
+cookies.Permissions=Enable or Disable Cookies panel
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=System Pages
+cookies.LocalFiles=Local Files
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Do you want to remove all cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remove all cookies in the list.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Create a new cookie for %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Value
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Manage cookie permissions for %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=All cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejected:
+cookies.console.nocookiesreceived=No cookies received
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=deleted
+cookies.console.added=added
+cookies.console.changed=changed
+cookies.console.cleared=cleared
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domain
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Secure
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Value
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Default (Accept session cookies)
+cookies.default.thirdPartySession=Default (Accept session cookies)
+cookies.default.thirdParty=Default (Accept cookies)
+cookies.default.allow=Default (Accept cookies)
+cookies.default.deny=Default (Deny cookies)
+cookies.default.warn=Default (Warn before accepting cookie)
+cookies.default.limitThirdParty=Predvolené (obmedziť cookie tretích strán)
+cookies.host.session=Accept session cookies from %S
+cookies.host.accept=Accept cookies from %S
+cookies.host.reject=Deny cookies from %S
+cookies.host.limitThirdParty=Obmedziť cookie tretích strán pre %S
+
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie name is not valid.
+cookies.edit.invalidhost=Cookie host is not valid.
+cookies.edit.invalidpath=Cookie path is not valid.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly,
+# cookies.header.maxAge):
+# Column labels used in the cookie header.
+cookies.header.name=Name
+cookies.header.value=Value
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domain
+cookies.header.size=Size
+cookies.header.rawSize = Dátová veľkosť
+cookies.header.path=Path
+cookies.header.expires=Expires
+cookies.header.security=Security
+cookies.header.httponly=HttpOnly
+cookies.header.maxAge=Max. vek
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip, cookies.header.maxAge.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Name of the cookie
+cookies.header.value.tooltip=Value stored for the cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domain that has stored the cookie
+cookies.header.rawSize.tooltip=Raw size of the stored cookie
+cookies.header.size.tooltip=Size of the stored cookie
+cookies.header.path.tooltip=Directory where the cookie is active
+cookies.header.expires.tooltip=Expiration date for the cookie
+cookies.header.security.tooltip=Shows whether it is a secure cookie or not
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+cookies.header.maxAge.tooltip=Maximálny čas, počas ktorého sa cookie uloží
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies,
+# cookies.netinfo.deleted.tooltip):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Received Cookies
+cookies.netinfo.Sent_Cookies=Sent Cookies
+cookies.netinfo.deleted.tooltip=Požiadavka vyexpirovala cookie
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Path Filter
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Export All Cookies
+cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
+cookies.export.Export_For_Site=Export Cookies For This Site
+cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Remove Cookies
+cookies.Create=Create Cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Tools
+cookies.ToolsTooltip=Tools
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Show All Cookies
+cookies.ViewAllTooltip=Open the built-in Cookie Manager
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Web Sites Permissions
+cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filter
+cookies.FilterTooltip=Use given options to filter the cookie list.
+cookies.filter.byPath=Filter Cookies By Current Path
+cookies.filter.byPathTooltip=Show only cookies that match the current path.
+cookies.filter.showRejectedCookies=Show Rejected Cookies
+cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Edit Cookie
+cookies.edit.name.label=Name:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Path:
+cookies.edit.expire.label=Expires:
+cookies.edit.value.label=Value:
+cookies.edit.secure.label=Secure Cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/sk-SK/firebug-amo.properties b/locale/sk-SK/firebug-amo.properties
index 12863b5..dbea2c7 100644
--- a/locale/sk-SK/firebug-amo.properties
+++ b/locale/sk-SK/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
-firebug.amo.description=Firebug sa integruje do Firefoxu a počas prehliadania webu prináša množstvo vývojárskych nástrojov priamo pod vaše prsty. Pomocou neho môžete upravovať, ladiť a monitorovať CSS, HTML a JavaScript na akejkoľvek stránke.\\\n\\\nDokumentáciu, ukážky a diskusné fórum nájdete na domovskej stránke Firebugu: http://getfirebug.com
-firebug.amo.developer.comments=Ak máte akékoľvek problémy, prečítajte si FireBug FAQ.\\\n\\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
+firebug.amo.description=Firebug sa integruje do Firefoxu a počas prehliadania webu prináša množstvo vývojárskych nástrojov priamo pod vaše prsty. Pomocou neho môžete upravovať, ladiť a monitorovať CSS, HTML a JavaScript na akejkoľvek stránke.\\\n\\\nDokumentáciu, ukážky a diskusné fórum nájdete na domovskej stránke Firebugu: http://getfirebug.com
+firebug.amo.developer.comments=Ak máte akékoľvek problémy, prečítajte si FireBug FAQ.\\\n\\\nhttp://getfirebug.com/faq.html
diff --git a/locale/sk-SK/firebug-tracing.properties b/locale/sk-SK/firebug-tracing.properties
index 1d635f2..0cc1b59 100644
--- a/locale/sk-SK/firebug-tracing.properties
+++ b/locale/sk-SK/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Otvoriť tracing Firebugu
-Always_Open_Firebug_Tracing=Vždy otvoriť tracing Firebugu
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Tracing
-tracing.Show_Scope_Variables=Zobrazovať premenné pohľadu
-tracing.Show_Time=Zobrazovať čas
-tracing.tab.Stack=Zásobník
-tracing.tab.Exception=Výnimka
-tracing.tab.Properties=Vlastnosti
-tracing.tab.Scope=Pohľad
-tracing.tab.Response=Odozva
-tracing.tab.Source=Zdroj
-tracing.tab.Interfaces=Rozhrania
-tracing.tab.Object=Objekt
-tracing.tab.Event=Udalosť
-tracing.cmd.Clear=Vymazať
-tracing.cmd.tip.Clear=Odstrániť všetky správy
-tracing.cmd.Find=Hľadať
-tracing.cmd.tip.Find=Hľadať ďalej
-tracing.cmd.Bookmark=Záložka
-tracing.cmd.tip.Bookmark=Vložiť záložku
-tracing.cmd.Restart=Reštartovať Firefox
-tracing.cmd.tip.Restart=Reštartovať Firefox
-tracing.cmd.Exit=Ukončiť Firefox
-tracing.cmd.tip.Exit=Ukončiť Firefox
-tracing.cmd.Save=Uložiť do súboru
-tracing.cmd.tip.Save=Uložiť záznamy do súboru
-tracing.cmd.Load=Load from File
-tracing.cmd.tip.Load=Load logs from a file
-tracing.cmd.Expand_All=Rozbaliť všetko
-tracing.cmd.Collapse_All=Zbaliť všetko
-tracing.cmd.Tools=Tools
-tracing.cmd.tip.Tools=Tools
-tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.Open_Profile_Directory=Open Profile Directory
-tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
-tracing.option.A11Y_Description=Accessibility issues
-tracing.option.ACTIVATION_Description=Firebug activation
-tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
-tracing.option.ANNOTATIONS_Description=Firebug website annotation
-tracing.option.BP_Description=Breakpoints
-tracing.option.CACHE_Description=Source cache
-tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
-tracing.option.COMPILATION_UNITS_Description=Script compilation units
-tracing.option.CONSOLE_Description=Console Panel
-tracing.option.CSS_Description=CSS parsing
-tracing.option.DISPATCH_Description=Event dispatching
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate creation
-tracing.option.EDITOR_Description=Inline Editor & Autocompleter
-tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Internal Firebug errors
-tracing.option.EVAL_Description=Script evaluation
-tracing.option.FBS_BP_Description=Firebug service breakpoints
-tracing.option.FBS_CREATION_Description=Firebug service script creation
-tracing.option.FBS_ERRORS_Description=Firebug service errors
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
-tracing.option.FBS_FUNCTION_Description=Firebug service function
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
-tracing.option.FBS_SRCUNITS_Description=Firebug service source units
-tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
-tracing.option.FUNCTION_NAMES_Description=JavaScript function names
-tracing.option.HISTORY_Description=Firebug Navigation History
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP request observer
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug initialization
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON viewer
-tracing.option.LINETABLE_Description=Script line table
-tracing.option.LOCALE_Description=Localization
-tracing.option.LOCATIONS_Description=Source locations
-tracing.option.NET_Description=Net Panel
-tracing.option.NET_EVENTS_Description=Network events
-tracing.option.OPTIONS_Description=Firebug preferences
-tracing.option.PANELS_Description=Panels
-tracing.option.SHORTCUTS_Description=Keyboard shortcuts
-tracing.option.SOURCEFILES_Description=JavaScript source files
-tracing.option.SPY_Description=XMLHttpRequests observer
-tracing.option.STACK_Description=JavaScript call stack
-tracing.option.STORAGE_Description=Settings storage
-tracing.option.SVGVIEWER_Description=SVG viewer
-tracing.option.FONTS_Description=Fonts information and font viewer
-tracing.option.TOOLTIP_Description=Start Button tooltip
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging user interface
-tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
-tracing.option.XMLVIEWER_Description=XML viewer
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Otvoriť tracing Firebugu
+Always_Open_Firebug_Tracing=Vždy otvoriť tracing Firebugu
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Tracing
+tracing.Show_Scope_Variables=Zobrazovať premenné pohľadu
+tracing.Show_Time=Zobrazovať čas
+tracing.tab.Stack=Zásobník
+tracing.tab.Exception=Výnimka
+tracing.tab.Properties=Vlastnosti
+tracing.tab.Scope=Pohľad
+tracing.tab.Response=Odozva
+tracing.tab.Source=Zdroj
+tracing.tab.Interfaces=Rozhrania
+tracing.tab.Object=Objekt
+tracing.tab.Event=Udalosť
+tracing.cmd.Clear=Vymazať
+tracing.cmd.tip.Clear=Odstrániť všetky správy
+tracing.cmd.Find=Hľadať
+tracing.cmd.tip.Find=Hľadať ďalej
+tracing.cmd.Bookmark=Záložka
+tracing.cmd.tip.Bookmark=Vložiť záložku
+tracing.cmd.Restart=Reštartovať Firefox
+tracing.cmd.tip.Restart=Reštartovať Firefox
+tracing.cmd.Exit=Ukončiť Firefox
+tracing.cmd.tip.Exit=Ukončiť Firefox
+tracing.cmd.Save=Uložiť do súboru
+tracing.cmd.tip.Save=Uložiť záznamy do súboru
+tracing.cmd.Load=Load from File
+tracing.cmd.tip.Load=Load logs from a file
+tracing.cmd.Expand_All=Rozbaliť všetko
+tracing.cmd.Collapse_All=Zbaliť všetko
+tracing.cmd.Tools=Tools
+tracing.cmd.tip.Tools=Tools
+tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.Open_Profile_Directory=Open Profile Directory
+tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
+tracing.option.A11Y_Description=Accessibility issues
+tracing.option.ACTIVATION_Description=Firebug activation
+tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
+tracing.option.ANNOTATIONS_Description=Firebug website annotation
+tracing.option.BP_Description=Breakpoints
+tracing.option.CACHE_Description=Source cache
+tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
+tracing.option.COMPILATION_UNITS_Description=Script compilation units
+tracing.option.CONSOLE_Description=Console Panel
+tracing.option.CSS_Description=CSS parsing
+tracing.option.DISPATCH_Description=Event dispatching
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate creation
+tracing.option.EDITOR_Description=Inline Editor & Autocompleter
+tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Internal Firebug errors
+tracing.option.EVAL_Description=Script evaluation
+tracing.option.FBS_BP_Description=Firebug service breakpoints
+tracing.option.FBS_CREATION_Description=Firebug service script creation
+tracing.option.FBS_ERRORS_Description=Firebug service errors
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
+tracing.option.FBS_FUNCTION_Description=Firebug service function
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
+tracing.option.FBS_SRCUNITS_Description=Firebug service source units
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
+tracing.option.FUNCTION_NAMES_Description=JavaScript function names
+tracing.option.HISTORY_Description=Firebug Navigation History
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request observer
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug initialization
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON viewer
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Localization
+tracing.option.LOCATIONS_Description=Source locations
+tracing.option.NET_Description=Net Panel
+tracing.option.NET_EVENTS_Description=Network events
+tracing.option.OPTIONS_Description=Firebug preferences
+tracing.option.PANELS_Description=Panels
+tracing.option.SHORTCUTS_Description=Keyboard shortcuts
+tracing.option.SOURCEFILES_Description=JavaScript source files
+tracing.option.SPY_Description=XMLHttpRequests observer
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Settings storage
+tracing.option.SVGVIEWER_Description=SVG viewer
+tracing.option.FONTS_Description=Fonts information and font viewer
+tracing.option.TOOLTIP_Description=Start Button tooltip
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging user interface
+tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
+tracing.option.XMLVIEWER_Description=XML viewer
diff --git a/locale/sk-SK/firebug.properties b/locale/sk-SK/firebug.properties
index e5388a7..22f12ab 100644
--- a/locale/sk-SK/firebug.properties
+++ b/locale/sk-SK/firebug.properties
@@ -1,1746 +1,1746 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Konzola
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Sieť
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Skript
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Štýl
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Vypočítané
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Rozloženie
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Sledovanie
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Prerušenia
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Zásobník
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Pohľad
-firebug.DetachFirebug=Otvoriť Firebug v novom okne
-firebug.AttachFirebug=Attach Firebug to Browser Window
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Deactivated
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=V prehliadači
-minimized=Minimized
-enablement.for_all_pages=pre všetky stránky
-enablement.on=On
-enablement.off=Off
-enablement.Panel_activation_status=Panel activation status:
-none=Closed
-Firebug_-_inactive_for_current_website=Firebug - inactive for current website
-Activate_Firebug_for_the_current_website=Activate Firebug for the current website
-Minimized=Minimized
-Minimize_Firebug=Minimalizovať Firebug
-On_for_all_web_pages=On for All Web Pages
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Clear Activation List
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI Location
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-
-# LOCALIZATION NOTE (annotations.confirm.clear):
-# Used in a confirmation dialog when all Firebug annotations are going to be deleted
-annotations.confirm.clear=Chcete vyčistiť zoznam všetkých Firebug anotácií pre všetky lokality?
-
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Možnosti rozšírenia Firebug
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Show All Panels
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=Zobraziť chyby JavaScriptu
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Zobraziť varovania JavaScriptu
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Zobraziť chyby CSS
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Zobraziť stack trace s chybami
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Zobraziť požiadavky XMLHttpRequest
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Show Chrome Errors
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Show Chrome Messages
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowNetworkErrors=Show Network Errors
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Strict Warnings (performance penalty)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Command History
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Show Completion List Popup
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Zlyhanie príkazu
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (riadok %S)
-LineAndCol=%S (line %S, col %S)
-InstanceLine=%S #%S (riadok %S)
-StackItem=%S (%S riadok %S)
-SystemItem=<System>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(bez názvu)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Zobraziť celý text
-html.option.tip.Show_Full_Text=Don't crop element contents
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Zobraziť prázdne miesta
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Zobraziť komentáre
-html.option.tip.Show_Comments=Show comment nodes
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Zvýrazniť zmeny
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Rozbaliť zmeny
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Narolovať zmeny dovnútra pohľadu
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Show Quick Info Box
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Shade Box Model
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Narolovať dovnútra pohľadu
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Nová vlastnosť…
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Odstrániť prvok
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Odstrániť uzol
-html.Delete_Node=Delete the node from the tree
-# Quick Info Box
-quickInfo=Quick Info
-computedStyle=Computed Style
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Break On Mutate
-html.Disable_Break_On_Mutate=Disable Break On Mutate
-html.label.Break_On_Text_Change=Break On Text Change
-html.label.HTML_Breakpoints=HTML Breakpoints
-html.label.Break_On_Attribute_Change=Break On Attribute Change
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Break On Child Addition or Removal
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Break On Element Removal
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Expand/Contract All
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# LOCALIZATION NOTE (dom.scopeName): Used within the DOM panel to name the fake property that
-# contains the innermost closure scope of a function.
-dom.scopeName=(closure)
-# LOCALIZATION NOTE (dom.scopeParentName): Used within the DOM panel to name the fake property
-# that contains the parent of a closure scope.
-dom.scopeParentName=(parent scope)
-# LOCALIZATION NOTE (dom.tip.scopeName): Used within the DOM panel as a tooltip when hovering
-# "(closure)".
-dom.tip.scopeName=Na prístup v príkazovom riadku použite <func>.%closureVariable.
-# LOCALIZATION NOTE (dom.tip.scopeMemberName): Used within the DOM panel as a tooltip when
-# hovering a variable in a closure.
-# %S: the variable name - starts with "%"
-dom.tip.scopeMemberName=Na prístup v príkazovom riadku použite <func>.%S
-# LOCALIZATION NOTE (firebug.reps.declarativeScope, firebug.reps.objectScope, firebug.reps.withScope):
-# Labels shown to describe different types of closure scopes.
-firebug.reps.declarativeScope=[declarative scope]
-firebug.reps.objectScope=[object scope]
-firebug.reps.withScope=[with scope]
-# LOCALIZATION NOTE (firebug.reps.optimizedAway): Label shown to denote a closure variable that has
-# been optimized away.
-firebug.reps.optimizedAway=(vyoptimalizované)
-# LOCALIZATION NOTE (firebug.reps.element.attribute_value, firebug.reps.element.property_value):
-# Used in the Console panel for elements. If an input element has two different values, one set
-# as "value" attribute and one set as 'value' property, these labels are used to distinguish it.
-firebug.reps.element.attribute_value=hodnota atribútu
-firebug.reps.element.property_value=hodnota vlastnosti
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Break On Property Change
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Disable Break On Property Change
-dom.label.DOM_Breakpoints=Prerušenia DOM
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Upraviť atribút \\"%S\\"…
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Odstrániť atribút \\"%S\\"
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Zdedené z
-SothinkWarning=The Sothink SWF Catcher extension is preventing Firebug from working properly.<br/><br/>Please read <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">this item on the Firebug FAQ</a> for help.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
-EditStyle=Upraviť štýl prvku…
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Nové pravidlo…
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Nová vlastnosť…
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=Upraviť \\"%S\\"…
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=Vypnúť \\"%S\\"
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=Odstrániť \\"%S\\"
-css.tip.Delete_Prop=Delete the property "%S"
-# Console context menu labels.
-BreakOnThisError=Zastaviť na tejto chybe
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Zastaviť pri každej chybe
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Track Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Use Last Source Line for eval() names
-UseMD5ForEvalName=Použiť MD5 pre názvy eval()
-# Breakpoints side panel
-Breakpoints=Body zastavenia
-ErrorBreakpoints=Body zastavenia pri chybe
-LoggedFunctions=Zaznamenané funkcie
-EnableAllBreakpoints=Zapnúť všetky body zastavenia
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Vypnúť všetky body zastavenia
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Vymazať všetky body zastavenia
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Tento bod zastavenia zastaví len v prípade, že je splnená podmienka:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Remove Breakpoint
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Disable Breakpoint
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Enable Breakpoint
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Continue
-script.balloon.Disable=Disable
-ScriptsFilterStatic=Zobraziť statické skripty
-ScriptsFilterEval=Show static and eval Scripts
-ScriptsFilterEvent=Show static and event Scripts
-ScriptsFilterAll=Show static, eval and event Scripts
-ScriptsFilterStaticShort=static
-ScriptsFilterEvalShort=evals
-ScriptsFilterEventShort=udalosti
-ScriptsFilterAllShort=všetko
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Expand All
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Collapse All
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Zobraziť používateľské vlastnosti
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Zobraziť používateľské funkcie
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Zobraziť vlastnosti DOM
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Zobraziť funkcie DOM
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Zobraziť konštanty DOM
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowClosures=Zobraziť Closures
-dom.option.tip.Show_Closures=Zobraziť closure asociované s rôznymi funkciami (aktivuje debugger)
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=Tento objekt nemá žiadne vlastnosti.
-NewWatch=Nové pravidlo sledovania…
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Pridať sledovanie
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Kopírovať zdroj
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
-CopyValue=Kopírovať hodnotu
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Kopírovať názov
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Kopírovať cestu
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Nová vlastnosť…
-EditProperty=Upraviť vlastnosť…
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Upraviť premennú…
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Upraviť sledovanie…
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Odstrániť vlastnosť
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Odstrániť sledovanie
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Nastaviť bod zastavenia
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Upraviť podmienku bodu zastavenia
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=V tejto stránke nie sú body zastavenia
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Only Show Applied Styles
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Zobraziť User Agent CSS
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Expand Shorthand Properties
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Sort Alphabetically
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Show Mozilla Specific Styles
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Type any key to filter list
-# LOCALIZATION NOTE (location.inline):
-# Label used within the Location Menu for inline styles or scripts
-location.inline=Inline
-# LOCALIZATION NOTE (location.no_domain):
-# Label used within the Location Menu for the group of scripts,
-# which don't have a domain specified like e.g. eval()'ed scripts
-location.no_domain=Mimo domény
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=position
-LayoutAdjacent=susediaci
-position=pozícia
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Zobraziť pravítka a vodiace čiary
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Net panel
-Loading=Načíta sa…
-Headers=Hlavičky
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Vynulovať hlavičku
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=Požadovaná adresa URL a použitá metóda HTTP.
-net.header.Status=Stav
-net.header.Status_Tooltip=Stav prijatej odpovede.
-net.header.Domain=Doména
-net.header.Domain_Tooltip=Doména vykonanej žiadosti.
-net.header.Size=Veľkosť
-net.header.Size_Tooltip=Veľkosť prijatej odpovede.
-net.header.Timeline=Časová os
-net.header.Timeline_Tooltip=Detailed timing info about request response round trip
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=Prerušenia XHR
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Break On XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=zobraziť zdroj
-net.headers.pretty_print=pekný výpis
-
-# LOCALIZATION NOTE (net.filter.label.All, net.filter.tooltip.All, net.filter.label.HTML,
-# net.filter.tooltip.HTML, net.filter.label.CSS, net.filter.tooltip.CSS, net.filter.label.JS,
-# net.filter.tooltip.JS, net.filter.label.XHR, net.filter.tooltip.XHR, net.filter.label.Images,
-# net.filter.tooltip.Images, net.filter.label.Plugins, net.filter.tooltip.Plugins,
-# net.filter.label.Media, net.filter.tooltip.Media):
-# Labels and tooltips for Net panel filter (used on the Net panel toolbar)
-net.filter.label.All=Všetko
-net.filter.tooltip.All=Zobraziť všetky MIME typy
-net.filter.label.HTML=HTML
-net.filter.tooltip.HTML=Zobraz iba HTML súbory
-net.filter.label.CSS=CSS
-net.filter.tooltip.CSS=Zobraz iba CSS súbory
-net.filter.label.JS=JavaScript
-net.filter.tooltip.JS=Zobraziť iba JavaScript súbory
-net.filter.label.XHR=XHR
-net.filter.tooltip.XHR=Zobraziť iba XMLHttpRequest-y
-net.filter.label.Images=Obrázky
-net.filter.tooltip.Images=Zobraziť iba obrázky
-net.filter.label.Plugins=Pluginy
-net.filter.tooltip.Plugins=Zobraziť iba súbory Flash a Silverlight
-net.filter.label.Media=Médiá
-net.filter.tooltip.Media=Zobraziť iba zvuky a videá
-net.filter.label.Fonts=Fonty
-net.filter.tooltip.Fonts=Zobraziť iba fonty
-
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Poslať
-Put=Put
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Odpoveď
-URLParameters=Param.
-Cache=Vyrovnávacia pamäť
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Sort by key
-jsonviewer.do_not_sort=Do not sort
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Vyžiadať hlavičky
-ResponseHeaders=Vrátené hlavičky
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
-LimitPrefs=Nastavenia
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=In order to change the limit modify '%S'
-Refresh=Obnoviť
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Otvoriť na novú kartu
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Otvoriť odpoveď na novej karte
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Profil
-ProfilerStarted=Profiler beží. Správa sa zobrazí po kliknutí na \\'Profil\\'.
-ProfilerRequiresTheScriptPanel=Na funkčnosť profilovania musí byť zapnutý panel Skript.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
-NothingToProfile=V profile nie je aktivita.
-PercentTooltip=Percento času stráveného na tejto funkcii.
-CallsHeaderTooltip=Čas volania funkcií.
-OwnTimeHeaderTooltip=Čas strávený vo funkcii, mimo vnorených volaní
-TimeHeaderTooltip=Čas strávený vo funkcii, vrátane vnorených volaní
-AvgHeaderTooltip=Priemerný čas, vrátane volaní funkcií
-MinHeaderTooltip=Minimálny čas, vrátane volaní funkcií
-MaxHeaderTooltip=Maximálny čas, vrátane volaní funkcií
-ProfileButton.Tooltip=Profilovať čas vykonávania JavaScript-u
-Function=Funkcia
-Percent=Percent
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Volania
-OwnTime=Vlastný čas
-Time=Čas
-Avg=Prm.
-Min=Min.
-Max=Max.
-File=Súbor
-# Support for standard actions.
-Copy=Kopírovať
-Cut=Vystrihnúť
-Remove=Odstrániť
-Delete=Delete
-Paste=Paste
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Kopírovať innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Kopírovať XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Copy CSS Path
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (html.menu.Paste, html.tip.Paste): Context menu item (with subitems).
-# Used in the HTML Panel to paste HTML/SVG/XML/XUL/MathML contents
-# %S = the type of the content to paste (HTML, SVG, XML, XUL or MathML)
-html.menu.Paste=Vložiť %S
-html.tip.Paste=Vložiť ako %S obsah
-# LOCALIZATION NODE (html.menu.Paste_*, html.tip.Paste_*): Context menu items.
-# These items are paste options, and appears as subitems of html.menu.Paste in the context menu.
-html.menu.Paste_Replace_Content=Nahradiť obsah
-html.tip.Paste_Replace_Content=Nahradiť obsah uzla
-html.menu.Paste_Replace_Node=Nahradiť uzol
-html.tip.Paste_Replace_Node=Nahradiť HTML uzla
-html.menu.Paste_AsFirstChild=Ako prvé dieťa
-html.tip.Paste_AsFirstChild=Vložiť ako prvé dieťa uzla
-html.menu.Paste_AsLastChild=Ako posledné dieťa
-html.tip.Paste_AsLastChild=Vložiť ako posledné dieťa uzla
-html.menu.Paste_Before=Pred
-html.tip.Paste_Before=Vložiť pred uzol
-html.menu.Paste_After=Za
-html.tip.Paste_After=Vložiť za uzol
-
-# LOCALIZATION NOTE (html.menu.Reload_Frame, html.menu.tip.Reload_Frame):
-# Context menu item of HTML frames
-html.menu.Reload_Frame=Obnoviť rámec
-html.menu.tip.Reload_Frame=Znovunačítať obsah rámca
-
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Kopírovať umiestnenie
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Kopírovať umiestnenie s parametrami
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Kopírovať vyžiadané hlavičky
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Kopírovať vrátené hlavičky
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Kopírovať telo odpovede
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Kopírovať chybu
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Kopírovať funkciu
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Zapisovať volania do \\"%S\\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Zapisovať udalosti
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Povolený
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Konzola Firebugu nepodporuje \\'%S\\'
-
-# LOCALIZATION NOTE (commandline.errorSourceHeader): Message displayed in the header of the
-# source code where an exception has occured.
-commandline.errorSourceHeader=VÝRAZ VYHODNOTENÝ V PRÍKAZOVOM RIADKU FIREBUGU:
-
-# LOCALIZATION NOTE (commandline.MethodDisabled): Message displayed in the Console panel,
-# if a disabled method is entered via the Command Line.
-commandline.MethodDisabled=Táto metóda príkazového riadku je dočasne vypnutá.
-
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Príkazový riadok Firebugu nepodporuje %S
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Disable Break On All Errors
-console.Break_On_All_Errors=Break On All Errors
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Break On This Error
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript is disabled in your Firefox preferences. If you want to use the Console panel, then please enable this option via Tools > Options > Content > Enable JavaScript
-# LOCALIZATION NOTE (console.tip.ScriptPanelMustBeEnabledForTraces): Message shown inside the Console
-# panel instead of a stack trace when it is missing because the script panel is disabled. The text
-# enclosed in <a></a> is a link which enables the Script panel.
-console.ScriptPanelMustBeEnabledForTraces=Na zobrazenie Stack trace je potrebné mať zapnutý panel Skript. <a>Zapnúť panel Skript.</a>
-
-# LOCALIZATION NOTE (tooltip.multipleFiltersHint):
-# Hint used for Console and Net panel filter button tooltips describing the shortcut for selecting
-# multiple filters
-tooltip.multipleFiltersHint=Viac filtrov vyberte cez Ctrl+Click
-
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
-
-# LOCALIZATION NOTE (commandline.Use_in_Command_Line): Right-click option for copying a JS value into the variable
-# $p and opening the Command Line.
-commandline.Use_in_Command_Line=Použiť v príkazovom riadku
-commandline.tip.Use_in_Command_Line=Otvoriť príkazový riadok a sprístupniť hodnotu ako premennú "$p"
-
-# LOCALIZATION NOTE (commandline.include.includeSuccess): For the include() function. This message is displayed
-# in the Console panel when a remote script evaluation succeeded
-# %S = the filename
-commandline.include.includeSuccess=%S úspešne vložený.
-
-# LOCALIZATION NOTE (commandline.include.aliasNotFound): For the include() function. This message is displayed
-# in the Console panel when a requested alias is not found
-# %S = the alias name
-commandline.include.aliasNotFound=Alias "%S" nenájdený.
-
-# LOCALIZATION NOTE (commandline.include.loadFail): For the include() function. This message is displayed
-# in the Console panel when the remote script download failed
-# %S = the filename
-commandline.include.loadFail=Nasledujúci skript sa nepodarilo načítať: %S
-
-# LOCALIZATION NOTE (commandline.include.invalidRequestProtocol): For the include() function. This message is displayed
-# in the Console panel when the user tries to download a script with another scheme than HTTP(S)
-# %S = the filename
-commandline.include.invalidRequestProtocol=Podporované sú iba protokoly HTTP/HTTPS.
-
-# LOCALIZATION NOTE (commandline.include.invalidSyntax): For the include() function. This message is displayed
-# in the Console panel when the user tries to execute a non-Javascript file
-# or when the script contains syntax errors
-commandline.include.invalidSyntax=Vloženie zlyholo kvôli syntaktickým chybám. Ide skutočne o JavaScript súbor?
-
-# LOCALIZATION NOTE (commandline.include.aliasCreated): For the include() function. This message is displayed
-# in the Console panel when a new alias is created successfully
-# %S = the alias name
-commandline.include.aliasCreated=Alias "%S" vytvorený.
-
-# LOCALIZATION NOTE (commandline.include.aliasRemoved): For the include() function. This message is displayed
-# in the Console panel when a new alias is removed successfully
-# %S = the alias name
-commandline.include.aliasRemoved=Alias "%S" odstránený.
-
-# LOCALIZATION NOTE (commandline.include.invalidAliasName): For the include() function. This message is displayed
-# in the Console panel if an invalid alias name (which contains "/" or ".") is provided.
-# %S = the invalid alias name
-commandline.include.invalidAliasName=Názov aliasu nesmie obsahovať "." alebo "/"; nesprávny názov aliasu: "%S".
-
-# LOCALIZATION NOTE (commandline.include.tooLongAliasName): For the include() function. This message is displayed
-# in the Console panel if the provided alias name is too long (i.e. more than 30 characters)
-# %S = the invalid alias name
-commandline.include.tooLongAliasName=Názvy aliasov nesmú obsahovať viac ako 30 znakov; nesprávny názov aliasu: "%S".
-
-# LOCALIZATION NOTE (commandline.include.wrongAliasArgument): For the include() function. This message is displayed
-# in the Console panel if the type of the alias name is invalid (a string is expected)
-commandline.include.invalidAliasArgumentType=Neplatný druhý argument; očakával sa názov aliasu.
-
-# LOCALIZATION NOTE (commandline.include.wrongUrlArgument): For the include() function. This message is displayed
-# in the Console panel if the type of the url arguement is invalid (a string or null are expected)
-commandline.include.invalidUrlArgumentType=Neplatný URL argument.
-
-# LOCALIZATION NOTE (commandline.include.confirmDelete): For the include() function. This message is displayed
-# in a confirmation dialog when the user wants to delete an alias
-# %S = the name of the alias to delete
-commandline.include.confirmDelete=Skutočne chcete vymazať alias: "%S"?
-
-# LOCALIZATION NOTE (commandline.include.noDefinedAlias): For the include() function. This message is displayed
-# when the user wants to display the aliases table but there no alias is defined.
-commandline.include.noDefinedAlias=(zatiaľ žiadne aliasy)
-
-commandline.tip.Delete_Alias=Vymazať alias
-commandline.tip.Edit_Alias_Name=Upraviť názov aliasu
-commandline.tip.Edit_Alias_URL=Upraviť URL aliasu
-commandline.tip.Open_In_Scratchpad=Otvoriť obsah skriptu v Scratchpad-e
-commandline.tip.Include_Script=Stiahnuť a vykonať skript
-
-commandline.label.DeleteAlias=Vymazať alias
-commandline.label.EditAliasName=Upraviť názov aliasu
-commandline.label.EditAliasURL=Upraviť URL aliasu
-commandline.label.OpenInScratchpad=Otvoriť v Scratchpad-e
-commandline.label.IncludeScript=Vložiť "%S"
-
-
-# LOCALIZATION NOTE (Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting things.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-#
-# NOTE to translators: this message was originally taken from cookies.msg.Do_not_show_this_message_again
-Do_not_show_this_message_again=Túto správu už nezobrazovať
-
-# LOCALIZATION NOTE (scratchpad.loading, scratchpad.failLoading)
-# Used when Firebug downloads a remote script and wants to display it in Scratchpad
-# The messages appears as Javascript Comments in Scratchpad
-scratchpad.loading=Načítavam, čakajte...
-scratchpad.failLoading=Chyba pri načítavaní skriptu.
-
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Response Body
-net.sizeinfo.Post_Body=Post Body
-net.sizeinfo.Total_Sent=Celkom odoslané
-net.sizeinfo.Total_Received=Celkom prijaté
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Panel Sieť je aktivovaný. Všetky žiadosti z doby inaktivity panela sa nezobrazujú.
-net.responseSizeLimitMessage=Firebug response size limit has been reached. Click <a>here</a> to open the entire response in a new Firefox tab.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Firebug request size limit has been reached by Firebug.
-net.Break_On_XHR=Prerušiť pri XHR
-net.label.Parameters=Parametre
-net.label.Parts=Časti
-net.label.Source=Zdroj
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Disable Browser Cache
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Show Paint Events
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Break On Next
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Zobraziť hlavičky HTTP
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S request;%1$S requests
-
-# LOCALIZATION NOTE (net.summary.from_cache):
-# Label used in the Net panel's request summary. Displays the summarized response size coming from cache for all HTTP requests.
-net.summary.from_cache=%S z cache
-
-# LOCALIZATION NOTE (net.summary.tip.request_count, net.summary.tip.total_size,
-# net.summary.tip.total_cached_size, net.summary.tip.total_request_time):
-# Labels used for the tooltips in the Net panel's request summary
-net.summary.tip.request_count=Počet požiadaviek
-net.summary.tip.total_size=Celková veľkosť všetkých požiadaviek
-net.summary.tip.total_cached_size=Celková veľkosť všetkých požiadaviek v cache
-net.summary.tip.total_request_time=Celkový čas potrebný na načítanie všetkých požiadaviek a čas, kedy nastala udalosť "onload"
-
-StopLoading=Zastaviť načítavanie
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(veľmi veľké dáta)
-ShowComputedStyle=Show Computed Style
-StyleGroup-text=Text
-StyleGroup-background=Pozadie
-StyleGroup-box=Box Model
-StyleGroup-layout=Rozloženie
-StyleGroup-other=Iné
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Kopírovať farbu
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Kopírovať polohu obrázku
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Otvoriť obrázok na novej karte
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (OmitObjectPathStack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Omit Toolbar Stack
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (callstack.option.Show_Arguments, callstack.option.tip.Show_Arguments):
-# Stack side panel option (located in tab's option menu). If set to true,
-# function arguments are displayed
-callstack.option.Show_Arguments=Zobraz argumenty
-callstack.option.tip.Show_Arguments=Zobrazí tiež argumenty funkcií
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copy Rule Declaration
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Copy Style Declaration
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (css.label.Copy_Property_Declaration, css.tip.Copy_Property_Declaration,
-# css.label.Copy_Property_Name, css.tip.Copy_Property_Name, css.label.Copy_Property_Value,
-# css.tip.Copy_Property_Value):
-# Menu item labels and tooltips used in CSS panel/Style side panel context menu.
-# Allow copying the current CSS property's declaration/name/value to the clipboard.
-css.label.Copy_Property_Declaration=Kopírovať deklaráciu vlastnosti
-css.tip.Copy_Property_Declaration=Copy the property's declaration to the clipboard
-css.label.Copy_Property_Name=Kopírovať názov vlastnosti
-css.tip.Copy_Property_Name=Copy the property's name to the clipboard
-css.label.Copy_Property_Value=Kopírovať hodnotu vlastnosti
-css.tip.Copy_Property_Value=Copy the property's value to the clipboard
-
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Error;%1$S Errors
-moduleManager.title=Panel %S je vypnutý
-moduleManager.desc3=Ak chcete zapnúť alebo vypnúť jednotlivé panely, použite ponuku, ktorá sa zobrazí po kliknutí na ikonu v stavovom riadku Firebugu.
-moduleManager.Enable=Enable
-Suspend_Firebug=Pozastaviť Firebug
-Resume_Firebug=Obnoviť Firebug
-Reset_Panels_To_Disabled=Reset Panels To Disabled
-Open_Console=Otvoriť konzolu
-Open_Console_Tooltip=Otvoriť tracingovú konzolu pre Firebug
-Scope_Chain=Reťazec pohľadov
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=S
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Volanie
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Okno
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blocking
-requestinfo.Resolving=DNS Lookup
-requestinfo.Connecting=Pripája sa
-requestinfo.Sending=Odosiela sa
-requestinfo.Waiting=Čaká sa
-requestinfo.Receiving=Prijíma sa
-requestinfo.ContentLoad='DOMContentLoaded' (event)
-requestinfo.WindowLoad='load' (event)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Firebug Search
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Ďalšie
-search.tip.Next=Search for the next match
-search.Previous=Previous
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Case Sensitive
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Viac súborov
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Use Regular Expression
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=Selektor CSS
-search.net.Headers=Hlavičky
-search.net.Parameters=Parametre
-search.net.Response_Bodies=Telá odpovedí
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persist
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Show all log entries
-firebug.console.Errors=Errors
-firebug.console.Filter_by_Errors=Filter by errors
-firebug.console.Warnings=Warnings
-firebug.console.Filter_by_Warnings=Filter by warnings
-firebug.console.Info=Info
-firebug.console.Filter_by_Info=Filter by info
-firebug.console.Debug_Info=Debug Info
-firebug.console.Filter_by_Debug_Info=Filter by debug info
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-
-# LOCALIZATION NOTE (firebug.tip.Toggle_Side_Panels): A tooltip used for side panels visibility
-# toggle button. The button is available on the right side of panel's toolbar (only for panels
-# that have a side panel).
-firebug.tip.Toggle_Side_Panels=Prepnúť viditeľnosť bočných panelov
-
-firebug.ShowFirebug=Otvoriť Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Hide Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Povoliť všetky panely
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Zakázať všetky panely
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Prispôsobiť klávesové skratky
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Možnosti
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Enable Accessibility Enhancements
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Reset All Firebug Options
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug Online
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Show Error Count
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Veľkosť písma
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Zväčšiť písmo
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Zmenšiť písmo
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Normálna veľkosť
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Stránka Firebugu…
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Dokumentácia…
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Klávesové skratky…
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Diskusná skupina…
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Systém na hlásenie chýb…
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Prispieť…
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Čo je…
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Hľadať
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Opäť zadať príkaz
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Prepnúť inspector
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Toggle Quick Info Box
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Prepnúť profiler
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Focus Command Line
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Focus Firebug Search
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Prepnúť na editor sledovaní
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Prepnúť na adresu
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Nasledujúci objekt
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Predchádzajúci objekt
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Prispôsobiť skratky Firebugu
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Otvoriť Firebug v novom okne
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Prepnúť na ľavý panel Firebugu
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Prepnúť na pravý panel Firebugu
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Otvoriť Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Predchádzajúca karta Firebugu
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Vymazať konzolu
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Otvoriť konzolu trasovania
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Go Back
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Go Forward
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Increase Text Size
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Decrease Text Size
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normal Text Size
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Panel Selector
-customizeShortcuts=Klávesové skratky Firebugu
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=panel tools
-a11y.labels.firebug_panels=Panely Firebugu
-a11y.labels.firebug_side_panels=Firebug side panels
-a11y.labels.firebug_window=Okno Firebugu
-a11y.labels.firebug_status=Firebug status
-a11y.labels.reset=reset
-a11y.labels.reset_shortcut=reset %S shortcut
-aria.labels.inactive_panel=inactive panel
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=log rows
-a11y.labels.call_stack=call stack
-a11y.labels.document_structure=document structure
-a11y.labels.title_panel= %S panel
-a11y.labels.title_side_panel= %S side panel
-a11y.labels.cached=cached
-aria.labels.stack_trace=stack trace
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=odsadenie
-a11y.layout.border=orámovanie
-a11y.layout.margin=okraj
-a11y.layout.position=pozícia
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=okraj hore
-a11y.layout.margin_right=okraj vpravo
-a11y.layout.margin_bottom=okraj dole
-a11y.layout.margin_left=okraj vľavo
-a11y.layout.border_top=orámovanie hore
-a11y.layout.border_right=orámovanie vpravo
-a11y.layout.border_bottom=orámovanie dole
-a11y.layout.border_left=orámovanie vľavo
-a11y.layout.padding_top=odsadenie hore
-a11y.layout.padding_right=odsadenie vpravo
-a11y.layout.padding_bottom=odsadenie dole
-a11y.layout.padding_left=odsadenie vľavo
-a11y.layout.top=hore
-a11y.layout.right=pravo
-a11y.layout.bottom=dole
-a11y.layout.left=vľavo
-a11y.layout.width=šírka
-a11y.layout.height=výška
-a11y.layout.size=veľkosť
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=Press Enter followed by Tab to edit individual values
-a11y.labels.style_rules=style rules
-aria.labels.inherited_style_rules=inherited style rules
-a11y.labels.computed_styles=computed styles
-a11y.labels.dom_properties=DOM properties
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=inline editor
-a11y.labels.value_for_attribute_in_element=hodnota pre atribút %S v prvku %S
-a11y.labels.attribute_for_element=atribút pre prvok %S
-a11y.labels.text_contents_for_element=textový obsah pre prvok %S
-a11y.labels.defined_in_file=definované v %S
-a11y.labels.declarations_for_selector=deklarácie štýlov pre selektor \\"%S\\"
-a11y.labels.property_for_selector=vlastnosť CSS pre selektor %S
-a11y.labels.value_property_in_selector=hodnota vlastnosti %S pre selektor %S
-a11y.labels.css_selector=selektor CSS
-a11y.labels.source_code_for_file=zdrojový kód pre súbor %S
-a11y.labels.press_enter_to_add_new_watch_expression=press enter to add a new watch expression
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=overridden
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=has conditional break point
-a11y.updates.has_disabled_break_point=has disabled break point
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Skript pozastavený na riadku %S v %S, súbor %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=nájdená zhoda pre \\"%S\\" v riadkoch záznamu %S
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=nájdená zhoda pre \\"%S\\" na riadku %S v %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=nájdená zhoda pre \\"%S\\" v prvku %S v ceste %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=nájdená zhoda pre \\"%S\\" v atribúte %S=%S prvku %S v ceste %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=nájdená zhoda pre \\"%S\\" v textovom obsahu: %S prvku %S v ceste %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=nájdená zhoda pre \\"%S\\" v selektore %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=nájdená zhoda pre \\"%S\\" v deklarácii štýlu %S v selektore %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=nájdená zhoda pre \\"%S\\" vo vlastnosti DOM %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=nájdená zhoda pre \\"%S\\" v %S, %S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=nájdená zhoda pre \\"%S\\" v riadku súhrnu siete: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=nenájdené žiadne zhody pre \\"%S\\"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Naozaj chcete obnoviť všetky nastavenia Firebugu na predvolené hodnoty?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=Konzola musí byť povolená
-warning.Command_line_blocked?=Blokovaný príkazový riadok?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Reload to activate window console
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=The resource from this URL is not text
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Go back to this panel
-firebug.history.Stay_on_this_panel=Stay on this panel
-firebug.history.Go_forward_to_this_panel=Go forward to this panel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Go back
-firebug.history.Go_forward=Go forward
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Script Panel was inactive during page load
-script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript is not enabled
-script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Enable JavaScript and Refresh
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=All scripts were filtered
-script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=No Javascript on this page
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Debugger is already active
-script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
-script.button.Go_to_that_page=Go to that page
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# LOCALIZATION NOTE (script.Script_panel_must_be_enabled): Adds a parenthetical note to a tooltip
-# about the Script panel having to be enabled.
-# %S = original message
-# example: "Profile JavaScript execution time (Script panel must be enabled)"
-script.Script_panel_must_be_enabled=%S (panel Skript musí byť zapnutý)
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Zavrieť
-firebug.View=Zobraziť
-firebug.Help=Pomocník
-firebug.Run=Spustiť
-firebug.Copy=Kópia
-firebug.History=History
-firebug.Run_the_entered_command=Run the entered command
-firebug.Clear_the_Command_Editor=Clear the Command Editor
-firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
-firebug.Insert_a_previously_entered_command=Insert a previously entered command
-firebug.AlwaysOpenInWindow=Vždy otvoriť v novom okne
-firebug.OpenWith=Otvoriť pomocou editora
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Stránky…
-firebug.Configure_Editors=Configure Editors
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Skontrolovať
-firebug.InspectElement=Skontrolovať prvok
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Zastaviť pri chybe
-firebug.InspectTooltip=Skontrolovať prvok kliknutím naň v stránke
-firebug.EditHTMLTooltip=Upraviť toto HTML
-firebug.Profile=Profil
-firebug.Clear=Vymazať
-firebug.ClearConsole=Vymazať konzolu
-firebug.ClearTooltip=Vymazať konzolu
-
-# editors.dtd
-editors.Configured_Firebug_Editors=Configured Firebug Editors
-editors.Editor=Editor
-editors.Executable=Executable
-editors.Launch_Arguments=Launch Arguments
-editors.Add=Add
-editors.Remove=Remove
-editors.Change=Change
-editors.Move_Up=Move Up
-editors.Close=Close
-editors.Browse=Browse...
-changeEditor.Editor_Configuration=Editor Configuration
-changeEditor.Name=Názov:
-changeEditor.Executable=Spustiteľný súbor:
-changeEditor.CmdLine=Parametre:
-changeEditor.Supplied_arguments=Arguments supplied by Firebug:
-changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
-changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
-changeEditor.Line_number=Line number (if available)
-changeEditor.Invalid_Application_Path=Invalid Application Path
-changeEditor.Application_does_not_exist=The specified application doesn't exist!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Upraviť
-firebug.css.sourceEdit=Source Edit
-firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
-firebug.css.liveEdit=Live Edit
-firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
-firebug.EditCSSTooltip=Upraviť tento popis štýlov
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Show Break Notifications
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
-firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=There are no child objects
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=more
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
-# LOCALIZATION NOTE (firebug.reps.historyEntries): Semicolon list of plural forms.
-# Displayed when evaluating "history" - informs the user about the number of entries in history.
-# %1 = Number of history entries
-firebug.reps.historyEntries=%1$S záznam histórie;%1$S záznamy histórie;%1$S záznamov histórie
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Object Properties
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(no completions)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
-firebug.failedToPreviewImageURL=Failed to load the given URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-
-# LOCALIZATION NOTE (console.cmd.help_title, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-
-# LOCALIZATION NOTE (console.cmd.tip_title, console.cmd.tip_title_desc):
-console.cmd.tip_title=Tipy k príkazovému riadku
-console.cmd.tip_title_desc=Tipy a triky k príkazovému riadku
-
-# LOCALIZATION NOTE (console.cmd.tip.javascript, console.cmd.tip.closures):
-# Description for Command Line tips that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.tip.javascript=V príkazovom riadku môžete vykonať akýkoľvek platný JavaScript-ový výraz. Napr.:
-console.cmd.tip.closures=Na sprístupnenie premenných v closure použite syntax ".%" (<a>pozri viac</a>). Napr.:
-
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$2=Reprezentuje tretí posledný element vybratý v Inspectore
-console.cmd.help.$3=Reprezentuje štvrtý posledný element vybratý v Inspectore
-console.cmd.help.$4=Reprezentuje piaty posledný element vybratý v Inspectore
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.$_=Reprezentuje výsledok posledného vyhodnoteného výrazu v príkazovom riadku
-console.cmd.help.help=Displays help for all available commands.
-console.cmd.help.include=Vloží vzdialený skript.
-console.cmd.help.$p=Po kliknutí pravým tlačidlom na JavaScript objekte/hodnote a kliknutí "Použiť v príkazovom riadku" táto premenná príkazového riadku nastaví na tú hodnotu.
-console.cmd.help.getEventListeners=Returns an object with all event listeners registered directly on an element (or other event target).
-
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Konzola
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Sieť
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Skript
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Štýl
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Vypočítané
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Rozloženie
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Sledovanie
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Prerušenia
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Zásobník
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Pohľad
+firebug.DetachFirebug=Otvoriť Firebug v novom okne
+firebug.AttachFirebug=Attach Firebug to Browser Window
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Deactivated
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=V prehliadači
+minimized=Minimized
+enablement.for_all_pages=pre všetky stránky
+enablement.on=On
+enablement.off=Off
+enablement.Panel_activation_status=Panel activation status:
+none=Closed
+Firebug_-_inactive_for_current_website=Firebug - inactive for current website
+Activate_Firebug_for_the_current_website=Activate Firebug for the current website
+Minimized=Minimized
+Minimize_Firebug=Minimalizovať Firebug
+On_for_all_web_pages=On for All Web Pages
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Clear Activation List
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI Location
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+
+# LOCALIZATION NOTE (annotations.confirm.clear):
+# Used in a confirmation dialog when all Firebug annotations are going to be deleted
+annotations.confirm.clear=Chcete vyčistiť zoznam všetkých Firebug anotácií pre všetky lokality?
+
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Možnosti rozšírenia Firebug
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Show All Panels
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=Zobraziť chyby JavaScriptu
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Zobraziť varovania JavaScriptu
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Zobraziť chyby CSS
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Zobraziť stack trace s chybami
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Zobraziť požiadavky XMLHttpRequest
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Show Chrome Errors
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Show Chrome Messages
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowNetworkErrors=Show Network Errors
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Strict Warnings (performance penalty)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Command History
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Show Completion List Popup
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Zlyhanie príkazu
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (riadok %S)
+LineAndCol=%S (line %S, col %S)
+InstanceLine=%S #%S (riadok %S)
+StackItem=%S (%S riadok %S)
+SystemItem=<System>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(bez názvu)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Zobraziť celý text
+html.option.tip.Show_Full_Text=Don't crop element contents
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Zobraziť prázdne miesta
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Zobraziť komentáre
+html.option.tip.Show_Comments=Show comment nodes
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Zvýrazniť zmeny
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Rozbaliť zmeny
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Narolovať zmeny dovnútra pohľadu
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Show Quick Info Box
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Shade Box Model
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Narolovať dovnútra pohľadu
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Nová vlastnosť…
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Odstrániť prvok
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Odstrániť uzol
+html.Delete_Node=Delete the node from the tree
+# Quick Info Box
+quickInfo=Quick Info
+computedStyle=Computed Style
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Break On Mutate
+html.Disable_Break_On_Mutate=Disable Break On Mutate
+html.label.Break_On_Text_Change=Break On Text Change
+html.label.HTML_Breakpoints=HTML Breakpoints
+html.label.Break_On_Attribute_Change=Break On Attribute Change
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Break On Child Addition or Removal
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Break On Element Removal
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Expand/Contract All
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# LOCALIZATION NOTE (dom.scopeName): Used within the DOM panel to name the fake property that
+# contains the innermost closure scope of a function.
+dom.scopeName=(closure)
+# LOCALIZATION NOTE (dom.scopeParentName): Used within the DOM panel to name the fake property
+# that contains the parent of a closure scope.
+dom.scopeParentName=(parent scope)
+# LOCALIZATION NOTE (dom.tip.scopeName): Used within the DOM panel as a tooltip when hovering
+# "(closure)".
+dom.tip.scopeName=Na prístup v príkazovom riadku použite <func>.%closureVariable.
+# LOCALIZATION NOTE (dom.tip.scopeMemberName): Used within the DOM panel as a tooltip when
+# hovering a variable in a closure.
+# %S: the variable name - starts with "%"
+dom.tip.scopeMemberName=Na prístup v príkazovom riadku použite <func>.%S
+# LOCALIZATION NOTE (firebug.reps.declarativeScope, firebug.reps.objectScope, firebug.reps.withScope):
+# Labels shown to describe different types of closure scopes.
+firebug.reps.declarativeScope=[declarative scope]
+firebug.reps.objectScope=[object scope]
+firebug.reps.withScope=[with scope]
+# LOCALIZATION NOTE (firebug.reps.optimizedAway): Label shown to denote a closure variable that has
+# been optimized away.
+firebug.reps.optimizedAway=(vyoptimalizované)
+# LOCALIZATION NOTE (firebug.reps.element.attribute_value, firebug.reps.element.property_value):
+# Used in the Console panel for elements. If an input element has two different values, one set
+# as "value" attribute and one set as 'value' property, these labels are used to distinguish it.
+firebug.reps.element.attribute_value=hodnota atribútu
+firebug.reps.element.property_value=hodnota vlastnosti
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Break On Property Change
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Disable Break On Property Change
+dom.label.DOM_Breakpoints=Prerušenia DOM
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Upraviť atribút \\"%S\\"…
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Odstrániť atribút \\"%S\\"
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Zdedené z
+SothinkWarning=The Sothink SWF Catcher extension is preventing Firebug from working properly.<br/><br/>Please read <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">this item on the Firebug FAQ</a> for help.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
+EditStyle=Upraviť štýl prvku…
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Nové pravidlo…
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Nová vlastnosť…
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=Upraviť \\"%S\\"…
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=Vypnúť \\"%S\\"
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=Odstrániť \\"%S\\"
+css.tip.Delete_Prop=Delete the property "%S"
+# Console context menu labels.
+BreakOnThisError=Zastaviť na tejto chybe
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Zastaviť pri každej chybe
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Track Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Use Last Source Line for eval() names
+UseMD5ForEvalName=Použiť MD5 pre názvy eval()
+# Breakpoints side panel
+Breakpoints=Body zastavenia
+ErrorBreakpoints=Body zastavenia pri chybe
+LoggedFunctions=Zaznamenané funkcie
+EnableAllBreakpoints=Zapnúť všetky body zastavenia
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Vypnúť všetky body zastavenia
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Vymazať všetky body zastavenia
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Tento bod zastavenia zastaví len v prípade, že je splnená podmienka:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Remove Breakpoint
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Disable Breakpoint
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Enable Breakpoint
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Continue
+script.balloon.Disable=Disable
+ScriptsFilterStatic=Zobraziť statické skripty
+ScriptsFilterEval=Show static and eval Scripts
+ScriptsFilterEvent=Show static and event Scripts
+ScriptsFilterAll=Show static, eval and event Scripts
+ScriptsFilterStaticShort=static
+ScriptsFilterEvalShort=evals
+ScriptsFilterEventShort=udalosti
+ScriptsFilterAllShort=všetko
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Expand All
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Collapse All
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Zobraziť používateľské vlastnosti
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Zobraziť používateľské funkcie
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Zobraziť vlastnosti DOM
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Zobraziť funkcie DOM
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Zobraziť konštanty DOM
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowClosures=Zobraziť Closures
+dom.option.tip.Show_Closures=Zobraziť closure asociované s rôznymi funkciami (aktivuje debugger)
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=Tento objekt nemá žiadne vlastnosti.
+NewWatch=Nové pravidlo sledovania…
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Pridať sledovanie
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Kopírovať zdroj
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
+CopyValue=Kopírovať hodnotu
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Kopírovať názov
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Kopírovať cestu
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Nová vlastnosť…
+EditProperty=Upraviť vlastnosť…
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Upraviť premennú…
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Upraviť sledovanie…
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Odstrániť vlastnosť
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Odstrániť sledovanie
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Nastaviť bod zastavenia
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Upraviť podmienku bodu zastavenia
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=V tejto stránke nie sú body zastavenia
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Only Show Applied Styles
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Zobraziť User Agent CSS
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Expand Shorthand Properties
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Sort Alphabetically
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Show Mozilla Specific Styles
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Type any key to filter list
+# LOCALIZATION NOTE (location.inline):
+# Label used within the Location Menu for inline styles or scripts
+location.inline=Inline
+# LOCALIZATION NOTE (location.no_domain):
+# Label used within the Location Menu for the group of scripts,
+# which don't have a domain specified like e.g. eval()'ed scripts
+location.no_domain=Mimo domény
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=position
+LayoutAdjacent=susediaci
+position=pozícia
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Zobraziť pravítka a vodiace čiary
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Net panel
+Loading=Načíta sa…
+Headers=Hlavičky
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Vynulovať hlavičku
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=Požadovaná adresa URL a použitá metóda HTTP.
+net.header.Status=Stav
+net.header.Status_Tooltip=Stav prijatej odpovede.
+net.header.Domain=Doména
+net.header.Domain_Tooltip=Doména vykonanej žiadosti.
+net.header.Size=Veľkosť
+net.header.Size_Tooltip=Veľkosť prijatej odpovede.
+net.header.Timeline=Časová os
+net.header.Timeline_Tooltip=Detailed timing info about request response round trip
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=Prerušenia XHR
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Break On XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=zobraziť zdroj
+net.headers.pretty_print=pekný výpis
+
+# LOCALIZATION NOTE (net.filter.label.All, net.filter.tooltip.All, net.filter.label.HTML,
+# net.filter.tooltip.HTML, net.filter.label.CSS, net.filter.tooltip.CSS, net.filter.label.JS,
+# net.filter.tooltip.JS, net.filter.label.XHR, net.filter.tooltip.XHR, net.filter.label.Images,
+# net.filter.tooltip.Images, net.filter.label.Plugins, net.filter.tooltip.Plugins,
+# net.filter.label.Media, net.filter.tooltip.Media):
+# Labels and tooltips for Net panel filter (used on the Net panel toolbar)
+net.filter.label.All=Všetko
+net.filter.tooltip.All=Zobraziť všetky MIME typy
+net.filter.label.HTML=HTML
+net.filter.tooltip.HTML=Zobraz iba HTML súbory
+net.filter.label.CSS=CSS
+net.filter.tooltip.CSS=Zobraz iba CSS súbory
+net.filter.label.JS=JavaScript
+net.filter.tooltip.JS=Zobraziť iba JavaScript súbory
+net.filter.label.XHR=XHR
+net.filter.tooltip.XHR=Zobraziť iba XMLHttpRequest-y
+net.filter.label.Images=Obrázky
+net.filter.tooltip.Images=Zobraziť iba obrázky
+net.filter.label.Plugins=Pluginy
+net.filter.tooltip.Plugins=Zobraziť iba súbory Flash a Silverlight
+net.filter.label.Media=Médiá
+net.filter.tooltip.Media=Zobraziť iba zvuky a videá
+net.filter.label.Fonts=Fonty
+net.filter.tooltip.Fonts=Zobraziť iba fonty
+
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Poslať
+Put=Put
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Odpoveď
+URLParameters=Param.
+Cache=Vyrovnávacia pamäť
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Sort by key
+jsonviewer.do_not_sort=Do not sort
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Vyžiadať hlavičky
+ResponseHeaders=Vrátené hlavičky
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
+LimitPrefs=Nastavenia
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=In order to change the limit modify '%S'
+Refresh=Obnoviť
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Otvoriť na novú kartu
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Otvoriť odpoveď na novej karte
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Profil
+ProfilerStarted=Profiler beží. Správa sa zobrazí po kliknutí na \\'Profil\\'.
+ProfilerRequiresTheScriptPanel=Na funkčnosť profilovania musí byť zapnutý panel Skript.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
+NothingToProfile=V profile nie je aktivita.
+PercentTooltip=Percento času stráveného na tejto funkcii.
+CallsHeaderTooltip=Čas volania funkcií.
+OwnTimeHeaderTooltip=Čas strávený vo funkcii, mimo vnorených volaní
+TimeHeaderTooltip=Čas strávený vo funkcii, vrátane vnorených volaní
+AvgHeaderTooltip=Priemerný čas, vrátane volaní funkcií
+MinHeaderTooltip=Minimálny čas, vrátane volaní funkcií
+MaxHeaderTooltip=Maximálny čas, vrátane volaní funkcií
+ProfileButton.Tooltip=Profilovať čas vykonávania JavaScript-u
+Function=Funkcia
+Percent=Percent
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Volania
+OwnTime=Vlastný čas
+Time=Čas
+Avg=Prm.
+Min=Min.
+Max=Max.
+File=Súbor
+# Support for standard actions.
+Copy=Kopírovať
+Cut=Vystrihnúť
+Remove=Odstrániť
+Delete=Delete
+Paste=Paste
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Kopírovať innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Kopírovať XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Copy CSS Path
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (html.menu.Paste, html.tip.Paste): Context menu item (with subitems).
+# Used in the HTML Panel to paste HTML/SVG/XML/XUL/MathML contents
+# %S = the type of the content to paste (HTML, SVG, XML, XUL or MathML)
+html.menu.Paste=Vložiť %S
+html.tip.Paste=Vložiť ako %S obsah
+# LOCALIZATION NODE (html.menu.Paste_*, html.tip.Paste_*): Context menu items.
+# These items are paste options, and appears as subitems of html.menu.Paste in the context menu.
+html.menu.Paste_Replace_Content=Nahradiť obsah
+html.tip.Paste_Replace_Content=Nahradiť obsah uzla
+html.menu.Paste_Replace_Node=Nahradiť uzol
+html.tip.Paste_Replace_Node=Nahradiť HTML uzla
+html.menu.Paste_AsFirstChild=Ako prvé dieťa
+html.tip.Paste_AsFirstChild=Vložiť ako prvé dieťa uzla
+html.menu.Paste_AsLastChild=Ako posledné dieťa
+html.tip.Paste_AsLastChild=Vložiť ako posledné dieťa uzla
+html.menu.Paste_Before=Pred
+html.tip.Paste_Before=Vložiť pred uzol
+html.menu.Paste_After=Za
+html.tip.Paste_After=Vložiť za uzol
+
+# LOCALIZATION NOTE (html.menu.Reload_Frame, html.menu.tip.Reload_Frame):
+# Context menu item of HTML frames
+html.menu.Reload_Frame=Obnoviť rámec
+html.menu.tip.Reload_Frame=Znovunačítať obsah rámca
+
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Kopírovať umiestnenie
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Kopírovať umiestnenie s parametrami
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Kopírovať vyžiadané hlavičky
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Kopírovať vrátené hlavičky
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Kopírovať telo odpovede
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Kopírovať chybu
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Kopírovať funkciu
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Zapisovať volania do \\"%S\\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Zapisovať udalosti
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Povolený
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Konzola Firebugu nepodporuje \\'%S\\'
+
+# LOCALIZATION NOTE (commandline.errorSourceHeader): Message displayed in the header of the
+# source code where an exception has occured.
+commandline.errorSourceHeader=VÝRAZ VYHODNOTENÝ V PRÍKAZOVOM RIADKU FIREBUGU:
+
+# LOCALIZATION NOTE (commandline.MethodDisabled): Message displayed in the Console panel,
+# if a disabled method is entered via the Command Line.
+commandline.MethodDisabled=Táto metóda príkazového riadku je dočasne vypnutá.
+
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Príkazový riadok Firebugu nepodporuje %S
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Disable Break On All Errors
+console.Break_On_All_Errors=Break On All Errors
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Break On This Error
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript is disabled in your Firefox preferences. If you want to use the Console panel, then please enable this option via Tools > Options > Content > Enable JavaScript
+# LOCALIZATION NOTE (console.tip.ScriptPanelMustBeEnabledForTraces): Message shown inside the Console
+# panel instead of a stack trace when it is missing because the script panel is disabled. The text
+# enclosed in <a></a> is a link which enables the Script panel.
+console.ScriptPanelMustBeEnabledForTraces=Na zobrazenie Stack trace je potrebné mať zapnutý panel Skript. <a>Zapnúť panel Skript.</a>
+
+# LOCALIZATION NOTE (tooltip.multipleFiltersHint):
+# Hint used for Console and Net panel filter button tooltips describing the shortcut for selecting
+# multiple filters
+tooltip.multipleFiltersHint=Viac filtrov vyberte cez Ctrl+Click
+
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
+
+# LOCALIZATION NOTE (commandline.Use_in_Command_Line): Right-click option for copying a JS value into the variable
+# $p and opening the Command Line.
+commandline.Use_in_Command_Line=Použiť v príkazovom riadku
+commandline.tip.Use_in_Command_Line=Otvoriť príkazový riadok a sprístupniť hodnotu ako premennú "$p"
+
+# LOCALIZATION NOTE (commandline.include.includeSuccess): For the include() function. This message is displayed
+# in the Console panel when a remote script evaluation succeeded
+# %S = the filename
+commandline.include.includeSuccess=%S úspešne vložený.
+
+# LOCALIZATION NOTE (commandline.include.aliasNotFound): For the include() function. This message is displayed
+# in the Console panel when a requested alias is not found
+# %S = the alias name
+commandline.include.aliasNotFound=Alias "%S" nenájdený.
+
+# LOCALIZATION NOTE (commandline.include.loadFail): For the include() function. This message is displayed
+# in the Console panel when the remote script download failed
+# %S = the filename
+commandline.include.loadFail=Nasledujúci skript sa nepodarilo načítať: %S
+
+# LOCALIZATION NOTE (commandline.include.invalidRequestProtocol): For the include() function. This message is displayed
+# in the Console panel when the user tries to download a script with another scheme than HTTP(S)
+# %S = the filename
+commandline.include.invalidRequestProtocol=Podporované sú iba protokoly HTTP/HTTPS.
+
+# LOCALIZATION NOTE (commandline.include.invalidSyntax): For the include() function. This message is displayed
+# in the Console panel when the user tries to execute a non-Javascript file
+# or when the script contains syntax errors
+commandline.include.invalidSyntax=Vloženie zlyholo kvôli syntaktickým chybám. Ide skutočne o JavaScript súbor?
+
+# LOCALIZATION NOTE (commandline.include.aliasCreated): For the include() function. This message is displayed
+# in the Console panel when a new alias is created successfully
+# %S = the alias name
+commandline.include.aliasCreated=Alias "%S" vytvorený.
+
+# LOCALIZATION NOTE (commandline.include.aliasRemoved): For the include() function. This message is displayed
+# in the Console panel when a new alias is removed successfully
+# %S = the alias name
+commandline.include.aliasRemoved=Alias "%S" odstránený.
+
+# LOCALIZATION NOTE (commandline.include.invalidAliasName): For the include() function. This message is displayed
+# in the Console panel if an invalid alias name (which contains "/" or ".") is provided.
+# %S = the invalid alias name
+commandline.include.invalidAliasName=Názov aliasu nesmie obsahovať "." alebo "/"; nesprávny názov aliasu: "%S".
+
+# LOCALIZATION NOTE (commandline.include.tooLongAliasName): For the include() function. This message is displayed
+# in the Console panel if the provided alias name is too long (i.e. more than 30 characters)
+# %S = the invalid alias name
+commandline.include.tooLongAliasName=Názvy aliasov nesmú obsahovať viac ako 30 znakov; nesprávny názov aliasu: "%S".
+
+# LOCALIZATION NOTE (commandline.include.wrongAliasArgument): For the include() function. This message is displayed
+# in the Console panel if the type of the alias name is invalid (a string is expected)
+commandline.include.invalidAliasArgumentType=Neplatný druhý argument; očakával sa názov aliasu.
+
+# LOCALIZATION NOTE (commandline.include.wrongUrlArgument): For the include() function. This message is displayed
+# in the Console panel if the type of the url arguement is invalid (a string or null are expected)
+commandline.include.invalidUrlArgumentType=Neplatný URL argument.
+
+# LOCALIZATION NOTE (commandline.include.confirmDelete): For the include() function. This message is displayed
+# in a confirmation dialog when the user wants to delete an alias
+# %S = the name of the alias to delete
+commandline.include.confirmDelete=Skutočne chcete vymazať alias: "%S"?
+
+# LOCALIZATION NOTE (commandline.include.noDefinedAlias): For the include() function. This message is displayed
+# when the user wants to display the aliases table but there no alias is defined.
+commandline.include.noDefinedAlias=(zatiaľ žiadne aliasy)
+
+commandline.tip.Delete_Alias=Vymazať alias
+commandline.tip.Edit_Alias_Name=Upraviť názov aliasu
+commandline.tip.Edit_Alias_URL=Upraviť URL aliasu
+commandline.tip.Open_In_Scratchpad=Otvoriť obsah skriptu v Scratchpad-e
+commandline.tip.Include_Script=Stiahnuť a vykonať skript
+
+commandline.label.DeleteAlias=Vymazať alias
+commandline.label.EditAliasName=Upraviť názov aliasu
+commandline.label.EditAliasURL=Upraviť URL aliasu
+commandline.label.OpenInScratchpad=Otvoriť v Scratchpad-e
+commandline.label.IncludeScript=Vložiť "%S"
+
+
+# LOCALIZATION NOTE (Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting things.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+#
+# NOTE to translators: this message was originally taken from cookies.msg.Do_not_show_this_message_again
+Do_not_show_this_message_again=Túto správu už nezobrazovať
+
+# LOCALIZATION NOTE (scratchpad.loading, scratchpad.failLoading)
+# Used when Firebug downloads a remote script and wants to display it in Scratchpad
+# The messages appears as Javascript Comments in Scratchpad
+scratchpad.loading=Načítavam, čakajte...
+scratchpad.failLoading=Chyba pri načítavaní skriptu.
+
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Response Body
+net.sizeinfo.Post_Body=Post Body
+net.sizeinfo.Total_Sent=Celkom odoslané
+net.sizeinfo.Total_Received=Celkom prijaté
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Panel Sieť je aktivovaný. Všetky žiadosti z doby inaktivity panela sa nezobrazujú.
+net.responseSizeLimitMessage=Firebug response size limit has been reached. Click <a>here</a> to open the entire response in a new Firefox tab.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Firebug request size limit has been reached by Firebug.
+net.Break_On_XHR=Prerušiť pri XHR
+net.label.Parameters=Parametre
+net.label.Parts=Časti
+net.label.Source=Zdroj
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Disable Browser Cache
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Show Paint Events
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Break On Next
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Zobraziť hlavičky HTTP
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S request;%1$S requests
+
+# LOCALIZATION NOTE (net.summary.from_cache):
+# Label used in the Net panel's request summary. Displays the summarized response size coming from cache for all HTTP requests.
+net.summary.from_cache=%S z cache
+
+# LOCALIZATION NOTE (net.summary.tip.request_count, net.summary.tip.total_size,
+# net.summary.tip.total_cached_size, net.summary.tip.total_request_time):
+# Labels used for the tooltips in the Net panel's request summary
+net.summary.tip.request_count=Počet požiadaviek
+net.summary.tip.total_size=Celková veľkosť všetkých požiadaviek
+net.summary.tip.total_cached_size=Celková veľkosť všetkých požiadaviek v cache
+net.summary.tip.total_request_time=Celkový čas potrebný na načítanie všetkých požiadaviek a čas, kedy nastala udalosť "onload"
+
+StopLoading=Zastaviť načítavanie
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(veľmi veľké dáta)
+ShowComputedStyle=Show Computed Style
+StyleGroup-text=Text
+StyleGroup-background=Pozadie
+StyleGroup-box=Box Model
+StyleGroup-layout=Rozloženie
+StyleGroup-other=Iné
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Kopírovať farbu
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Kopírovať polohu obrázku
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Otvoriť obrázok na novej karte
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (OmitObjectPathStack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Omit Toolbar Stack
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (callstack.option.Show_Arguments, callstack.option.tip.Show_Arguments):
+# Stack side panel option (located in tab's option menu). If set to true,
+# function arguments are displayed
+callstack.option.Show_Arguments=Zobraz argumenty
+callstack.option.tip.Show_Arguments=Zobrazí tiež argumenty funkcií
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copy Rule Declaration
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Copy Style Declaration
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (css.label.Copy_Property_Declaration, css.tip.Copy_Property_Declaration,
+# css.label.Copy_Property_Name, css.tip.Copy_Property_Name, css.label.Copy_Property_Value,
+# css.tip.Copy_Property_Value):
+# Menu item labels and tooltips used in CSS panel/Style side panel context menu.
+# Allow copying the current CSS property's declaration/name/value to the clipboard.
+css.label.Copy_Property_Declaration=Kopírovať deklaráciu vlastnosti
+css.tip.Copy_Property_Declaration=Copy the property's declaration to the clipboard
+css.label.Copy_Property_Name=Kopírovať názov vlastnosti
+css.tip.Copy_Property_Name=Copy the property's name to the clipboard
+css.label.Copy_Property_Value=Kopírovať hodnotu vlastnosti
+css.tip.Copy_Property_Value=Copy the property's value to the clipboard
+
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Error;%1$S Errors
+moduleManager.title=Panel %S je vypnutý
+moduleManager.desc3=Ak chcete zapnúť alebo vypnúť jednotlivé panely, použite ponuku, ktorá sa zobrazí po kliknutí na ikonu v stavovom riadku Firebugu.
+moduleManager.Enable=Enable
+Suspend_Firebug=Pozastaviť Firebug
+Resume_Firebug=Obnoviť Firebug
+Reset_Panels_To_Disabled=Reset Panels To Disabled
+Open_Console=Otvoriť konzolu
+Open_Console_Tooltip=Otvoriť tracingovú konzolu pre Firebug
+Scope_Chain=Reťazec pohľadov
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=S
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Volanie
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Okno
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blocking
+requestinfo.Resolving=DNS Lookup
+requestinfo.Connecting=Pripája sa
+requestinfo.Sending=Odosiela sa
+requestinfo.Waiting=Čaká sa
+requestinfo.Receiving=Prijíma sa
+requestinfo.ContentLoad='DOMContentLoaded' (event)
+requestinfo.WindowLoad='load' (event)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Firebug Search
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Ďalšie
+search.tip.Next=Search for the next match
+search.Previous=Previous
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Case Sensitive
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Viac súborov
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Use Regular Expression
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=Selektor CSS
+search.net.Headers=Hlavičky
+search.net.Parameters=Parametre
+search.net.Response_Bodies=Telá odpovedí
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persist
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Show all log entries
+firebug.console.Errors=Errors
+firebug.console.Filter_by_Errors=Filter by errors
+firebug.console.Warnings=Warnings
+firebug.console.Filter_by_Warnings=Filter by warnings
+firebug.console.Info=Info
+firebug.console.Filter_by_Info=Filter by info
+firebug.console.Debug_Info=Debug Info
+firebug.console.Filter_by_Debug_Info=Filter by debug info
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+
+# LOCALIZATION NOTE (firebug.tip.Toggle_Side_Panels): A tooltip used for side panels visibility
+# toggle button. The button is available on the right side of panel's toolbar (only for panels
+# that have a side panel).
+firebug.tip.Toggle_Side_Panels=Prepnúť viditeľnosť bočných panelov
+
+firebug.ShowFirebug=Otvoriť Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Hide Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Povoliť všetky panely
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Zakázať všetky panely
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Prispôsobiť klávesové skratky
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Možnosti
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Enable Accessibility Enhancements
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Reset All Firebug Options
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug Online
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Show Error Count
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Veľkosť písma
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Zväčšiť písmo
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Zmenšiť písmo
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Normálna veľkosť
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Stránka Firebugu…
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Dokumentácia…
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Klávesové skratky…
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Diskusná skupina…
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Systém na hlásenie chýb…
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Prispieť…
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Čo je…
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Hľadať
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Opäť zadať príkaz
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Prepnúť inspector
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Toggle Quick Info Box
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Prepnúť profiler
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Focus Command Line
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Focus Firebug Search
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Prepnúť na editor sledovaní
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Prepnúť na adresu
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Nasledujúci objekt
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Predchádzajúci objekt
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Prispôsobiť skratky Firebugu
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Otvoriť Firebug v novom okne
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Prepnúť na ľavý panel Firebugu
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Prepnúť na pravý panel Firebugu
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Otvoriť Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Predchádzajúca karta Firebugu
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Vymazať konzolu
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Otvoriť konzolu trasovania
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Go Back
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Go Forward
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Increase Text Size
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Decrease Text Size
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normal Text Size
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Panel Selector
+customizeShortcuts=Klávesové skratky Firebugu
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=panel tools
+a11y.labels.firebug_panels=Panely Firebugu
+a11y.labels.firebug_side_panels=Firebug side panels
+a11y.labels.firebug_window=Okno Firebugu
+a11y.labels.firebug_status=Firebug status
+a11y.labels.reset=reset
+a11y.labels.reset_shortcut=reset %S shortcut
+aria.labels.inactive_panel=inactive panel
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=log rows
+a11y.labels.call_stack=call stack
+a11y.labels.document_structure=document structure
+a11y.labels.title_panel= %S panel
+a11y.labels.title_side_panel= %S side panel
+a11y.labels.cached=cached
+aria.labels.stack_trace=stack trace
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=odsadenie
+a11y.layout.border=orámovanie
+a11y.layout.margin=okraj
+a11y.layout.position=pozícia
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=okraj hore
+a11y.layout.margin_right=okraj vpravo
+a11y.layout.margin_bottom=okraj dole
+a11y.layout.margin_left=okraj vľavo
+a11y.layout.border_top=orámovanie hore
+a11y.layout.border_right=orámovanie vpravo
+a11y.layout.border_bottom=orámovanie dole
+a11y.layout.border_left=orámovanie vľavo
+a11y.layout.padding_top=odsadenie hore
+a11y.layout.padding_right=odsadenie vpravo
+a11y.layout.padding_bottom=odsadenie dole
+a11y.layout.padding_left=odsadenie vľavo
+a11y.layout.top=hore
+a11y.layout.right=pravo
+a11y.layout.bottom=dole
+a11y.layout.left=vľavo
+a11y.layout.width=šírka
+a11y.layout.height=výška
+a11y.layout.size=veľkosť
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=Press Enter followed by Tab to edit individual values
+a11y.labels.style_rules=style rules
+aria.labels.inherited_style_rules=inherited style rules
+a11y.labels.computed_styles=computed styles
+a11y.labels.dom_properties=DOM properties
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=inline editor
+a11y.labels.value_for_attribute_in_element=hodnota pre atribút %S v prvku %S
+a11y.labels.attribute_for_element=atribút pre prvok %S
+a11y.labels.text_contents_for_element=textový obsah pre prvok %S
+a11y.labels.defined_in_file=definované v %S
+a11y.labels.declarations_for_selector=deklarácie štýlov pre selektor \\"%S\\"
+a11y.labels.property_for_selector=vlastnosť CSS pre selektor %S
+a11y.labels.value_property_in_selector=hodnota vlastnosti %S pre selektor %S
+a11y.labels.css_selector=selektor CSS
+a11y.labels.source_code_for_file=zdrojový kód pre súbor %S
+a11y.labels.press_enter_to_add_new_watch_expression=press enter to add a new watch expression
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=overridden
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=has conditional break point
+a11y.updates.has_disabled_break_point=has disabled break point
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Skript pozastavený na riadku %S v %S, súbor %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=nájdená zhoda pre \\"%S\\" v riadkoch záznamu %S
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=nájdená zhoda pre \\"%S\\" na riadku %S v %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=nájdená zhoda pre \\"%S\\" v prvku %S v ceste %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=nájdená zhoda pre \\"%S\\" v atribúte %S=%S prvku %S v ceste %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=nájdená zhoda pre \\"%S\\" v textovom obsahu: %S prvku %S v ceste %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=nájdená zhoda pre \\"%S\\" v selektore %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=nájdená zhoda pre \\"%S\\" v deklarácii štýlu %S v selektore %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=nájdená zhoda pre \\"%S\\" vo vlastnosti DOM %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=nájdená zhoda pre \\"%S\\" v %S, %S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=nájdená zhoda pre \\"%S\\" v riadku súhrnu siete: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=nenájdené žiadne zhody pre \\"%S\\"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Naozaj chcete obnoviť všetky nastavenia Firebugu na predvolené hodnoty?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=Konzola musí byť povolená
+warning.Command_line_blocked?=Blokovaný príkazový riadok?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Reload to activate window console
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=The resource from this URL is not text
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Go back to this panel
+firebug.history.Stay_on_this_panel=Stay on this panel
+firebug.history.Go_forward_to_this_panel=Go forward to this panel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Go back
+firebug.history.Go_forward=Go forward
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Script Panel was inactive during page load
+script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript is not enabled
+script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Enable JavaScript and Refresh
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=All scripts were filtered
+script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=No Javascript on this page
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Debugger is already active
+script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
+script.button.Go_to_that_page=Go to that page
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# LOCALIZATION NOTE (script.Script_panel_must_be_enabled): Adds a parenthetical note to a tooltip
+# about the Script panel having to be enabled.
+# %S = original message
+# example: "Profile JavaScript execution time (Script panel must be enabled)"
+script.Script_panel_must_be_enabled=%S (panel Skript musí byť zapnutý)
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Zavrieť
+firebug.View=Zobraziť
+firebug.Help=Pomocník
+firebug.Run=Spustiť
+firebug.Copy=Kópia
+firebug.History=History
+firebug.Run_the_entered_command=Run the entered command
+firebug.Clear_the_Command_Editor=Clear the Command Editor
+firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
+firebug.Insert_a_previously_entered_command=Insert a previously entered command
+firebug.AlwaysOpenInWindow=Vždy otvoriť v novom okne
+firebug.OpenWith=Otvoriť pomocou editora
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Stránky…
+firebug.Configure_Editors=Configure Editors
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Skontrolovať
+firebug.InspectElement=Skontrolovať prvok
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Zastaviť pri chybe
+firebug.InspectTooltip=Skontrolovať prvok kliknutím naň v stránke
+firebug.EditHTMLTooltip=Upraviť toto HTML
+firebug.Profile=Profil
+firebug.Clear=Vymazať
+firebug.ClearConsole=Vymazať konzolu
+firebug.ClearTooltip=Vymazať konzolu
+
+# editors.dtd
+editors.Configured_Firebug_Editors=Configured Firebug Editors
+editors.Editor=Editor
+editors.Executable=Executable
+editors.Launch_Arguments=Launch Arguments
+editors.Add=Add
+editors.Remove=Remove
+editors.Change=Change
+editors.Move_Up=Move Up
+editors.Close=Close
+editors.Browse=Browse...
+changeEditor.Editor_Configuration=Editor Configuration
+changeEditor.Name=Názov:
+changeEditor.Executable=Spustiteľný súbor:
+changeEditor.CmdLine=Parametre:
+changeEditor.Supplied_arguments=Arguments supplied by Firebug:
+changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
+changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
+changeEditor.Line_number=Line number (if available)
+changeEditor.Invalid_Application_Path=Invalid Application Path
+changeEditor.Application_does_not_exist=The specified application doesn't exist!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Upraviť
+firebug.css.sourceEdit=Source Edit
+firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
+firebug.css.liveEdit=Live Edit
+firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
+firebug.EditCSSTooltip=Upraviť tento popis štýlov
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Show Break Notifications
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
+firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=There are no child objects
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=more
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
+# LOCALIZATION NOTE (firebug.reps.historyEntries): Semicolon list of plural forms.
+# Displayed when evaluating "history" - informs the user about the number of entries in history.
+# %1 = Number of history entries
+firebug.reps.historyEntries=%1$S záznam histórie;%1$S záznamy histórie;%1$S záznamov histórie
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Object Properties
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(no completions)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
+firebug.failedToPreviewImageURL=Failed to load the given URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+
+# LOCALIZATION NOTE (console.cmd.help_title, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+
+# LOCALIZATION NOTE (console.cmd.tip_title, console.cmd.tip_title_desc):
+console.cmd.tip_title=Tipy k príkazovému riadku
+console.cmd.tip_title_desc=Tipy a triky k príkazovému riadku
+
+# LOCALIZATION NOTE (console.cmd.tip.javascript, console.cmd.tip.closures):
+# Description for Command Line tips that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.tip.javascript=V príkazovom riadku môžete vykonať akýkoľvek platný JavaScript-ový výraz. Napr.:
+console.cmd.tip.closures=Na sprístupnenie premenných v closure použite syntax ".%" (<a>pozri viac</a>). Napr.:
+
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$2=Reprezentuje tretí posledný element vybratý v Inspectore
+console.cmd.help.$3=Reprezentuje štvrtý posledný element vybratý v Inspectore
+console.cmd.help.$4=Reprezentuje piaty posledný element vybratý v Inspectore
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.$_=Reprezentuje výsledok posledného vyhodnoteného výrazu v príkazovom riadku
+console.cmd.help.help=Displays help for all available commands.
+console.cmd.help.include=Vloží vzdialený skript.
+console.cmd.help.$p=Po kliknutí pravým tlačidlom na JavaScript objekte/hodnote a kliknutí "Použiť v príkazovom riadku" táto premenná príkazového riadku nastaví na tú hodnotu.
+console.cmd.help.getEventListeners=Returns an object with all event listeners registered directly on an element (or other event target).
+
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/sk-SK/selectors.properties b/locale/sk-SK/selectors.properties
index a0a0bfa..c81bc7c 100644
--- a/locale/sk-SK/selectors.properties
+++ b/locale/sk-SK/selectors.properties
@@ -1,26 +1,26 @@
-# LOCALIZATION NOTE (Panel-selectors): Title for Selectors side panel displayed
-# in the CSS panel
-Panel-selectors=Selektory
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selectors=Zobraz elementy vyhovujúce CSS selektoru
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selectors side panel.
-css.selector.noSelection=Zadajte vlastný selektor alebo kliknite CSS pravidlo pravým tlačidlom a vyberte <b>Nájdi vyhovujúce elementy</b>.
-# LOCALIZATION NOTE (css.selector.noSelectionResults, css.selector.invalidSelector):
-# Info messages for selector trials in Selectors side panel
-css.selector.noSelectionResults=Žiadne vyhovujúce elementy
-# LOCALIZATION NOTE (css.selector.readMore):
-# Helper text with a link to getfirebug.com/wiki for the Selectors panel.
-css.selector.readMore=<a>Prečítajte si viac</a> o používaní tohto panelu.
-# LOCALIZATION NOTE (css.selector.invalidSelector):
-css.selector.invalidSelector=Zadaný neplatný selektor
-# LOCALIZATION NOTE (css.selector.TryASelector):
-# Placeholder label for the Selectors side panel's input field for creating new selector trials
-css.selector.TryASelector=Vyskúšajte selektor...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Nájdi vyhovujúce elementy
-aria.labels.Selectors=Bočný panel "Selektory"
+# LOCALIZATION NOTE (Panel-selectors): Title for Selectors side panel displayed
+# in the CSS panel
+Panel-selectors=Selektory
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selectors=Zobraz elementy vyhovujúce CSS selektoru
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selectors side panel.
+css.selector.noSelection=Zadajte vlastný selektor alebo kliknite CSS pravidlo pravým tlačidlom a vyberte <b>Nájdi vyhovujúce elementy</b>.
+# LOCALIZATION NOTE (css.selector.noSelectionResults, css.selector.invalidSelector):
+# Info messages for selector trials in Selectors side panel
+css.selector.noSelectionResults=Žiadne vyhovujúce elementy
+# LOCALIZATION NOTE (css.selector.readMore):
+# Helper text with a link to getfirebug.com/wiki for the Selectors panel.
+css.selector.readMore=<a>Prečítajte si viac</a> o používaní tohto panelu.
+# LOCALIZATION NOTE (css.selector.invalidSelector):
+css.selector.invalidSelector=Zadaný neplatný selektor
+# LOCALIZATION NOTE (css.selector.TryASelector):
+# Placeholder label for the Selectors side panel's input field for creating new selector trials
+css.selector.TryASelector=Vyskúšajte selektor...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Nájdi vyhovujúce elementy
+aria.labels.Selectors=Bočný panel "Selektory"
a11y.labels.press_enter_to_add_new_selector=Stlačením Enter pridáte nový selektor
\ No newline at end of file
diff --git a/locale/sl-SI/cookies.properties b/locale/sl-SI/cookies.properties
index 66695d4..ec60718 100644
--- a/locale/sl-SI/cookies.properties
+++ b/locale/sl-SI/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Session
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Accept Cookies From Sites
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Clear cookies when denying
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cut
-cookies.Copy=Copy
-cookies.CopyAll=Copy All
-cookies.Paste=Paste
-cookies.Delete=Delete
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Edit
-cookies.Accept=Accept
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reset Header
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
-cookies.ExceptionsTitle=Exceptions - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support for Cookie Monitoring
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=Disable Cookies panel for %S
-cookies.Permissions=Enable or Disable Cookies panel
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=System Pages
-cookies.LocalFiles=Local Files
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Do you want to remove all cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remove all cookies in the list.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Create a new cookie for %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Value
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Manage cookie permissions for %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=All cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejected:
-cookies.console.nocookiesreceived=No cookies received
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=deleted
-cookies.console.added=added
-cookies.console.changed=changed
-cookies.console.cleared=cleared
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domain
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Secure
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Value
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Default (Accept session cookies)
-cookies.default.thirdPartySession=Default (Accept session cookies)
-cookies.default.thirdParty=Default (Accept cookies)
-cookies.default.allow=Default (Accept cookies)
-cookies.default.deny=Default (Deny cookies)
-cookies.default.warn=Default (Warn before accepting cookie)
-cookies.host.session=Accept session cookies from %S
-cookies.host.accept=Accept cookies from %S
-cookies.host.reject=Deny cookies from %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie name is not valid.
-cookies.edit.invalidhost=Cookie host is not valid.
-cookies.edit.invalidpath=Cookie path is not valid.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Name
-cookies.header.value=Value
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domain
-cookies.header.size=Size
-cookies.header.path=Path
-cookies.header.expires=Expires
-cookies.header.security=Security
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Name of the cookie
-cookies.header.value.tooltip=Value stored for the cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domain that has stored the cookie
-cookies.header.size.tooltip=Size of the stored cookie
-cookies.header.path.tooltip=Directory where the cookie is active
-cookies.header.expires.tooltip=Expiration date for the cookie
-cookies.header.security.tooltip=Shows whether it is a secure cookie or not
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Received Cookies
-cookies.netinfo.Sent_Cookies=Sent Cookies
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Path Filter
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Export All Cookies
-cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
-cookies.export.Export_For_Site=Export Cookies For This Site
-cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Remove Cookies
-cookies.Create=Create Cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Tools
-cookies.ToolsTooltip=Tools
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Show All Cookies
-cookies.ViewAllTooltip=Open the built-in Cookie Manager
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Web Sites Permissions
-cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filter
-cookies.FilterTooltip=Use given options to filter the cookie list.
-cookies.filter.byPath=Filter Cookies By Current Path
-cookies.filter.byPathTooltip=Show only cookies that match the current path.
-cookies.filter.showRejectedCookies=Show Rejected Cookies
-cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Edit Cookie
-cookies.edit.name.label=Name:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Path:
-cookies.edit.expire.label=Expires:
-cookies.edit.value.label=Value:
-cookies.edit.secure.label=Secure Cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Session
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Accept Cookies From Sites
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Clear cookies when denying
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cut
+cookies.Copy=Copy
+cookies.CopyAll=Copy All
+cookies.Paste=Paste
+cookies.Delete=Delete
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Edit
+cookies.Accept=Accept
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reset Header
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
+cookies.ExceptionsTitle=Exceptions - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support for Cookie Monitoring
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=Disable Cookies panel for %S
+cookies.Permissions=Enable or Disable Cookies panel
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=System Pages
+cookies.LocalFiles=Local Files
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Do you want to remove all cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remove all cookies in the list.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Create a new cookie for %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Value
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Manage cookie permissions for %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=All cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejected:
+cookies.console.nocookiesreceived=No cookies received
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=deleted
+cookies.console.added=added
+cookies.console.changed=changed
+cookies.console.cleared=cleared
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domain
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Secure
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Value
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Default (Accept session cookies)
+cookies.default.thirdPartySession=Default (Accept session cookies)
+cookies.default.thirdParty=Default (Accept cookies)
+cookies.default.allow=Default (Accept cookies)
+cookies.default.deny=Default (Deny cookies)
+cookies.default.warn=Default (Warn before accepting cookie)
+cookies.host.session=Accept session cookies from %S
+cookies.host.accept=Accept cookies from %S
+cookies.host.reject=Deny cookies from %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie name is not valid.
+cookies.edit.invalidhost=Cookie host is not valid.
+cookies.edit.invalidpath=Cookie path is not valid.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Name
+cookies.header.value=Value
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domain
+cookies.header.size=Size
+cookies.header.path=Path
+cookies.header.expires=Expires
+cookies.header.security=Security
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Name of the cookie
+cookies.header.value.tooltip=Value stored for the cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domain that has stored the cookie
+cookies.header.size.tooltip=Size of the stored cookie
+cookies.header.path.tooltip=Directory where the cookie is active
+cookies.header.expires.tooltip=Expiration date for the cookie
+cookies.header.security.tooltip=Shows whether it is a secure cookie or not
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Received Cookies
+cookies.netinfo.Sent_Cookies=Sent Cookies
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Path Filter
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Export All Cookies
+cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
+cookies.export.Export_For_Site=Export Cookies For This Site
+cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Remove Cookies
+cookies.Create=Create Cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Tools
+cookies.ToolsTooltip=Tools
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Show All Cookies
+cookies.ViewAllTooltip=Open the built-in Cookie Manager
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Web Sites Permissions
+cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filter
+cookies.FilterTooltip=Use given options to filter the cookie list.
+cookies.filter.byPath=Filter Cookies By Current Path
+cookies.filter.byPathTooltip=Show only cookies that match the current path.
+cookies.filter.showRejectedCookies=Show Rejected Cookies
+cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Edit Cookie
+cookies.edit.name.label=Name:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Path:
+cookies.edit.expire.label=Expires:
+cookies.edit.value.label=Value:
+cookies.edit.secure.label=Secure Cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/sl-SI/firebug-amo.properties b/locale/sl-SI/firebug-amo.properties
index 4f0cc47..ca39cbc 100644
--- a/locale/sl-SI/firebug-amo.properties
+++ b/locale/sl-SI/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):n\n
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843n\n
-# They are not direct part of Firebug extension and so, you can\'t see them in Firebug\'s UI.n\n
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)n\n
-firebug.amo.summary1.6=Firebug je integriral v Firefox kopico razvojnih orodij. V živo lahko urejaš, razhroščuješ in nadziraš izvajanje CSS, HTML in JavaScript kode na katerikoli strani...\\n\\nFirebug 1.6 potrebuje Firefox verzije 3.6 ali novejši.
-firebug.amo.description=Firebug se vgradi v Firefox in s tem imaš na razpolago ogromno razvijalskih orodij, medtem ko brskaš po internetu. Lahko urejaš, razhroščuješ in nadziraš izvajanje CSS, HTML in Javascript kode v živo na strani...\\n\\nObiščite Firebug spletno stran za dokumentacijo, informacije o programu in obisk foruma: http://getfirebug.com
-firebug.amo.developer.comments=Če naletite na kakršnekoli težave, prosimo preberite Firebug pogosta vprašanja.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):n\n
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843n\n
+# They are not direct part of Firebug extension and so, you can\'t see them in Firebug\'s UI.n\n
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)n\n
+firebug.amo.summary1.6=Firebug je integriral v Firefox kopico razvojnih orodij. V živo lahko urejaš, razhroščuješ in nadziraš izvajanje CSS, HTML in JavaScript kode na katerikoli strani...\\n\\nFirebug 1.6 potrebuje Firefox verzije 3.6 ali novejši.
+firebug.amo.description=Firebug se vgradi v Firefox in s tem imaš na razpolago ogromno razvijalskih orodij, medtem ko brskaš po internetu. Lahko urejaš, razhroščuješ in nadziraš izvajanje CSS, HTML in Javascript kode v živo na strani...\\n\\nObiščite Firebug spletno stran za dokumentacijo, informacije o programu in obisk foruma: http://getfirebug.com
+firebug.amo.developer.comments=Če naletite na kakršnekoli težave, prosimo preberite Firebug pogosta vprašanja.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/sl-SI/firebug-tracing.properties b/locale/sl-SI/firebug-tracing.properties
index 0b76195..6133c51 100644
--- a/locale/sl-SI/firebug-tracing.properties
+++ b/locale/sl-SI/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Odpri Firebug Sledenje
-Always_Open_Firebug_Tracing=Vedno odpri Firebug Sledenje
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Sledenje
-tracing.Show_Scope_Variables=Prikaži spremenljivke obsega
-tracing.Show_Time=Prikaži uro
-tracing.tab.Stack=Sklad
-tracing.tab.Exception=Izjema
-tracing.tab.Properties=Lastnosti
-tracing.tab.Scope=Obseg
-tracing.tab.Response=Odgovor
-tracing.tab.Source=Izvor
-tracing.tab.Interfaces=Vmesniki
-tracing.tab.Object=Objekt
-tracing.tab.Event=Dogodek
-tracing.cmd.Clear=Počisti
-tracing.cmd.tip.Clear=Odstrani vsa sporočila
-tracing.cmd.Find=Najdi
-tracing.cmd.tip.Find=Najdi tekst
-tracing.cmd.Bookmark=Zaznamek
-tracing.cmd.tip.Bookmark=Vstavi zaznamek
-tracing.cmd.Restart=Ponovno zaženi Firefox
-tracing.cmd.tip.Restart=Ponovno zaženi Firefox
-tracing.cmd.Exit=Izhod iz Firefoxa
-tracing.cmd.tip.Exit=Izhod iz Firefoxa
-tracing.cmd.Save=Shrani kot datoteko
-tracing.cmd.tip.Save=Shrani dnevnike v datoteko
-tracing.cmd.Load=Naloži iz datoteke
-tracing.cmd.tip.Load=Naloži dnevnike iz datoteke
-tracing.cmd.Expand_All=Razširi vse
-tracing.cmd.Collapse_All=Zapri vse
-tracing.cmd.Tools=Orodja
-tracing.cmd.tip.Tools=Orodja
-tracing.cmd.Clear_Browser_Cache=Počisti medpomnilnik brskalnika
-tracing.cmd.tip.Clear_Browser_Cache=Počisti medpomnilnik brskalnika
-tracing.cmd.Force_Garbage_Collector=Vsili zbiralca smeti
-tracing.cmd.tip.Force_Garbage_Collector=Vsili zbiralca smeti
-tracing.cmd.Open_Profile_Directory=Odpri imenik profilov
-tracing.cmd.tip.Open_Profile_Directory=Odpri imenik profilov
-tracing.option.A11Y_Description=Dostopnost
-tracing.option.ACTIVATION_Description=Aktivacija Firebuga
-tracing.option.ACTIVITYOBSERVER_Description=Firebug spremljevalnik aktivnosti
-tracing.option.ANNOTATIONS_Description=Firebug zaznamek spletne strani
-tracing.option.BP_Description=Točke preloma
-tracing.option.CACHE_Description=Medpomnilnik izvorne kode
-tracing.option.COMMANDLINE_Description=Ukazna vrstica in pojavno okno ukazne vrstice
-tracing.option.COMPILATION_UNITS_Description=Kompilacijske enote skript
-tracing.option.CONSOLE_Description=Konzolni panel
-tracing.option.CSS_Description=CSS razčlenitev
-tracing.option.DISPATCH_Description=Odprema dogodkov
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Ustvari domplate
-tracing.option.EDITOR_Description=Inline urejevalnik in samodokončanje
-tracing.option.ERRORLOG_Description=Dnevnik napak JS, CSS, XM...
-tracing.option.ERRORS_Description=Interne Firebug napake
-tracing.option.EVAL_Description=Vrednotenje skripte
-tracing.option.FBS_BP_Description=Prelomne točke Firebug servisa
-tracing.option.FBS_CREATION_Description=Ustvari skripto za Firebug servis
-tracing.option.FBS_ERRORS_Description=Napake Firebug servisa
-tracing.option.FBS_FINDDEBUGGER_Description=Razhroščevalnik Firebug servisa za iskanje
-tracing.option.FBS_FUNCTION_Description=Funkcija Firebug servis
-tracing.option.FBS_JSDCONTEXT_Description=Firebug servis razhroščevalnik JavaScript kontekst
-tracing.option.FBS_SRCUNITS_Description=Firebug servis izvorne enote
-tracing.option.FBS_STEP_Description=Firebug servis razhroščevalnik JavaScript po korakih
-tracing.option.FBS_TRACKFILES_Description=Firebug servis opazovanih datotek
-tracing.option.FUNCTION_NAMES_Description=JavaScript funkcijska imena
-tracing.option.HISTORY_Description=Navigacijska zgodovina Firebuga
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=Opazovalnik HTTP zahtevkov
-tracing.option.INFOTIP_Description=Info namig
-tracing.option.INITIALIZE_Description=Inicializacija Firebuga
-tracing.option.INSPECT_Description=Preglednik
-tracing.option.JSONVIEWER_Description=JSON pregledovalnik
-tracing.option.LINETABLE_Description=Tabela skriptnih vrstic
-tracing.option.LOCALE_Description=Lokalizacija
-tracing.option.LOCATIONS_Description=Izvorne lokacije
-tracing.option.NET_Description=Mrežni panel
-tracing.option.NET_EVENTS_Description=Mrežni dogodki
-tracing.option.OPTIONS_Description=Firebug nastavitve
-tracing.option.PANELS_Description=Paneli
-tracing.option.SHORTCUTS_Description=Bližnjice na tipkovnici
-tracing.option.SOURCEFILES_Description=JavaScript izvorne datoteke
-tracing.option.SPY_Description=Opazovalnik XMLHttpRequest
-tracing.option.STACK_Description=JavaScript klic sklada
-tracing.option.STORAGE_Description=Skladišče nastavitev
-tracing.option.SVGVIEWER_Description=SVG oglednik
-tracing.option.FONTS_Description=Informacije o pisavah in pregledovalnik pisav
-tracing.option.TOOLTIP_Description=Namig za gumb Start
-tracing.option.TOPLEVEL_Description=Vrhnji JavaScript
-tracing.option.UI_LOOP_Description=Grafični vmesnik razhroščevalnika JavaScript
-tracing.option.WINDOWS_Description=Nadzornik Firebug oken in zavihkov
-tracing.option.XMLVIEWER_Description=XML oglednik
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Odpri Firebug Sledenje
+Always_Open_Firebug_Tracing=Vedno odpri Firebug Sledenje
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Sledenje
+tracing.Show_Scope_Variables=Prikaži spremenljivke obsega
+tracing.Show_Time=Prikaži uro
+tracing.tab.Stack=Sklad
+tracing.tab.Exception=Izjema
+tracing.tab.Properties=Lastnosti
+tracing.tab.Scope=Obseg
+tracing.tab.Response=Odgovor
+tracing.tab.Source=Izvor
+tracing.tab.Interfaces=Vmesniki
+tracing.tab.Object=Objekt
+tracing.tab.Event=Dogodek
+tracing.cmd.Clear=Počisti
+tracing.cmd.tip.Clear=Odstrani vsa sporočila
+tracing.cmd.Find=Najdi
+tracing.cmd.tip.Find=Najdi tekst
+tracing.cmd.Bookmark=Zaznamek
+tracing.cmd.tip.Bookmark=Vstavi zaznamek
+tracing.cmd.Restart=Ponovno zaženi Firefox
+tracing.cmd.tip.Restart=Ponovno zaženi Firefox
+tracing.cmd.Exit=Izhod iz Firefoxa
+tracing.cmd.tip.Exit=Izhod iz Firefoxa
+tracing.cmd.Save=Shrani kot datoteko
+tracing.cmd.tip.Save=Shrani dnevnike v datoteko
+tracing.cmd.Load=Naloži iz datoteke
+tracing.cmd.tip.Load=Naloži dnevnike iz datoteke
+tracing.cmd.Expand_All=Razširi vse
+tracing.cmd.Collapse_All=Zapri vse
+tracing.cmd.Tools=Orodja
+tracing.cmd.tip.Tools=Orodja
+tracing.cmd.Clear_Browser_Cache=Počisti medpomnilnik brskalnika
+tracing.cmd.tip.Clear_Browser_Cache=Počisti medpomnilnik brskalnika
+tracing.cmd.Force_Garbage_Collector=Vsili zbiralca smeti
+tracing.cmd.tip.Force_Garbage_Collector=Vsili zbiralca smeti
+tracing.cmd.Open_Profile_Directory=Odpri imenik profilov
+tracing.cmd.tip.Open_Profile_Directory=Odpri imenik profilov
+tracing.option.A11Y_Description=Dostopnost
+tracing.option.ACTIVATION_Description=Aktivacija Firebuga
+tracing.option.ACTIVITYOBSERVER_Description=Firebug spremljevalnik aktivnosti
+tracing.option.ANNOTATIONS_Description=Firebug zaznamek spletne strani
+tracing.option.BP_Description=Točke preloma
+tracing.option.CACHE_Description=Medpomnilnik izvorne kode
+tracing.option.COMMANDLINE_Description=Ukazna vrstica in pojavno okno ukazne vrstice
+tracing.option.COMPILATION_UNITS_Description=Kompilacijske enote skript
+tracing.option.CONSOLE_Description=Konzolni panel
+tracing.option.CSS_Description=CSS razčlenitev
+tracing.option.DISPATCH_Description=Odprema dogodkov
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Ustvari domplate
+tracing.option.EDITOR_Description=Inline urejevalnik in samodokončanje
+tracing.option.ERRORLOG_Description=Dnevnik napak JS, CSS, XM...
+tracing.option.ERRORS_Description=Interne Firebug napake
+tracing.option.EVAL_Description=Vrednotenje skripte
+tracing.option.FBS_BP_Description=Prelomne točke Firebug servisa
+tracing.option.FBS_CREATION_Description=Ustvari skripto za Firebug servis
+tracing.option.FBS_ERRORS_Description=Napake Firebug servisa
+tracing.option.FBS_FINDDEBUGGER_Description=Razhroščevalnik Firebug servisa za iskanje
+tracing.option.FBS_FUNCTION_Description=Funkcija Firebug servis
+tracing.option.FBS_JSDCONTEXT_Description=Firebug servis razhroščevalnik JavaScript kontekst
+tracing.option.FBS_SRCUNITS_Description=Firebug servis izvorne enote
+tracing.option.FBS_STEP_Description=Firebug servis razhroščevalnik JavaScript po korakih
+tracing.option.FBS_TRACKFILES_Description=Firebug servis opazovanih datotek
+tracing.option.FUNCTION_NAMES_Description=JavaScript funkcijska imena
+tracing.option.HISTORY_Description=Navigacijska zgodovina Firebuga
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=Opazovalnik HTTP zahtevkov
+tracing.option.INFOTIP_Description=Info namig
+tracing.option.INITIALIZE_Description=Inicializacija Firebuga
+tracing.option.INSPECT_Description=Preglednik
+tracing.option.JSONVIEWER_Description=JSON pregledovalnik
+tracing.option.LINETABLE_Description=Tabela skriptnih vrstic
+tracing.option.LOCALE_Description=Lokalizacija
+tracing.option.LOCATIONS_Description=Izvorne lokacije
+tracing.option.NET_Description=Mrežni panel
+tracing.option.NET_EVENTS_Description=Mrežni dogodki
+tracing.option.OPTIONS_Description=Firebug nastavitve
+tracing.option.PANELS_Description=Paneli
+tracing.option.SHORTCUTS_Description=Bližnjice na tipkovnici
+tracing.option.SOURCEFILES_Description=JavaScript izvorne datoteke
+tracing.option.SPY_Description=Opazovalnik XMLHttpRequest
+tracing.option.STACK_Description=JavaScript klic sklada
+tracing.option.STORAGE_Description=Skladišče nastavitev
+tracing.option.SVGVIEWER_Description=SVG oglednik
+tracing.option.FONTS_Description=Informacije o pisavah in pregledovalnik pisav
+tracing.option.TOOLTIP_Description=Namig za gumb Start
+tracing.option.TOPLEVEL_Description=Vrhnji JavaScript
+tracing.option.UI_LOOP_Description=Grafični vmesnik razhroščevalnika JavaScript
+tracing.option.WINDOWS_Description=Nadzornik Firebug oken in zavihkov
+tracing.option.XMLVIEWER_Description=XML oglednik
diff --git a/locale/sl-SI/firebug.properties b/locale/sl-SI/firebug.properties
index 9a21b77..935ffa6 100644
--- a/locale/sl-SI/firebug.properties
+++ b/locale/sl-SI/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.n\n
-# %S Title of the associated web page.n\n
-# examples: Firebug - Googlen\n
-WindowTitle=Firebug -%S
-# Panel titlesn\n
-Panel-console=Konzola
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Mreža
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Skript
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Slog
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Izračunano
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Postavitev
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Sledilnik
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Prekinitvene točke
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Sklad
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Obseg
-firebug.DetachFirebug=Odpri Firebug v novem oknu
-firebug.AttachFirebug=Pripni Firebug k oknu brskalnika
-# LOCALIZATION NOTE (Total_Firebugs): Used in a tooltip that is displayed for Firebugn\n
-# icon located within Firefox status bar. Displayes number of pages with activated Firebug.n\n
-# xxxHonza: this construct should be replaced by PluralFormn\n
-# See: https://developer.mozilla.org/en/Localization_and_Pluralsn\n
-pluralRule=1
-# Console panel options.n\n
-# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,n\n
-# message, etc. within a source of a web page.n\n
-# #1 File name, #2 Line numbern\n
-# examples: somePage.htm (line 64)n\n
-# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.n\n
-plural.Total_Firebugs2=%1$S Firebug Skupaj;%1$S Skupaj Firebugov
-# For example, right clicking on an element in the HTML panel offers an action to inspectn\n
-# clicked element in the DOM panel (tab).n\n
-# #1 Target panel titlen\n
-startbutton.tip.deactivated=Deactivated
-# examples: Inspect in DOM Tabn\n
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugn\n
-# do not translate.n\n
-# #1 jsdIScript.tagn\n
-# HTML panel context menu items.n\n
-panel.status=%S: %S
-inBrowser=V brskalniku
-minimized=Pomanjšan
-enablement.for_all_pages=za vse strani
-enablement.on=Vklop
-enablement.off=Izklop
-enablement.Panel_activation_status=Panel activation status:
-none=Zaprto
-Firebug_-_inactive_for_current_website=Firebug - neaktiven za obstoječo spletno stran
-Activate_Firebug_for_the_current_website=Aktiviraj Firebug za trenutno spletno stran
-Minimized=Pomanjšano
-Minimize_Firebug=Pomanjšaj Firebug
-On_for_all_web_pages=Vključi za vse strani
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Izbriši aktivacijski seznam
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI lokacija
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# Quick Info Boxn\n
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumen\n
-firebug_options=Firebug Možnosti
-# button that are used when the HTML panel is currently selected. The button allows stoppingn\n
-# JS execution when DOM of the current page is modified.n\n
-firebug.Show_All_Panels=Prikaži vse panele
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
-ShowJavaScriptErrors=Prikaži napake JavaScript-a
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Prikaži opozorila JavaScript-a
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Prikaži napake CSS
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Prikaži sklad napake
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Prikaži XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Prikaži chrome napake
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Prikaži chrome sporočila
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Prikaži zunanje napake
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Prikaži omrežne napake
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Stroga opozorila (počasnejše delovanje)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Zgodovina ukazov
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Prikaži pojavno okno seznama nedokončanih opravil
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Assert napaka
-# editing an existing HTML element attribute.n\n
-# #1 Name of the clicked attribute.n\n
-# examples: Edit Attribute \"onclick\"...n\n
-# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
-# deleting an existing HTML element attribute.n\n
-Line=%S (vrstica %S)
-LineAndCol=%S (vrstica %S, stolpec %S)
-InstanceLine=%S #%S (vrstica %S)
-StackItem=%S (%S vrstica %S)
-SystemItem=<Sistem>
-# #1 Name of the clicked attribute.n\n
-# examples: Delete Attribute \"onclick\"...n\n
-# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.n\n
-# that has been inherited. Used in the Style side panel (under HTML panel).n\n
-# examples: Inherited from table.tabViewn\n
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(brez imena)
-# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.n\n
-# Allows to edit an existing CSS rule property.n\n
-# %S Name of the clicked propertyn\n
-jsdIScript=jsdl skripta %S
-# examples: Edit \"background-color\"...n\n
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.n\n
-# Allows to disable an existing CSS rule property.n\n
-ShowFullText=Prikaži polni tekst
-html.option.tip.Show_Full_Text=Don't crop element contents
-# %S Name of the clicked propertyn\n
-# examples: Disable \"background-color\"n\n
-# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.n\n
-ShowWhitespace=Prikaži prazna mesta
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# Allows to delete an existing CSS rule property.n\n
-# %S Name of the clicked propertyn\n
-ShowComments=Prikaži opombe
-html.option.tip.Show_Comments=Show comment nodes
-# examples: Delete \"background-color\"n\n
-# Console context menu labels.n\n
-# LOCALIZATION NOTE do not translate, no longer used(?)n\n
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# Breakpoints side paneln\n
-# Script paneln\n
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutOffset, LayoutAdjacent):n\n
-HighlightMutations=Poudari spremembe
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# Labels used to describe layout properties a the selected HTML element.n\n
-# Used in the Layout side panel under HMTL panel.n\n
-# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side paneln\n
-ExpandMutations=Razširi spremembe
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# under HTML panel.n\n
-# LOCALIZATION NOTE http://www.w3.org/TR/cssom-view/#the-getclientrects-and-getboundingclientn\n
-# This is the default and may become the only choice.n\n
-ScrollToMutations=Zvrsti spremembe v vpogled
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (ShowAdjacentLayout): this is disabled, no translationn\n
-# Net paneln\n
-# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)n\n
-ShowQuickInfoBox=Prikaži hitre informacije
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,n\n
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,n\n
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):n\n
-ShadeBoxModel=Model zasenčenega okvirja
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Zvrsti v vpogled
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Nov atribut...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Odstrani element
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Odstrani node
-html.Delete_Node=Delete the node from the tree
-# Labels and tooltips for a headers displayed on top of the Net panel.n\n
-quickInfo=Hitre informacije
-computedStyle=Izračunan stil
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.n\n
-# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s contextn\n
-# menu for breaking on a XHR.n\n
-html.Break_On_Mutate=Prekini ob mutaciji
-html.Disable_Break_On_Mutate=Onemogoči prekinitev ob mutaciji
-html.label.Break_On_Text_Change=Prekini ob spremembi teksta
-html.label.HTML_Breakpoints=HTML prelomna točka
-html.label.Break_On_Attribute_Change=Prekini ob spremembi atributa
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Prekini ob dodajanju/odvzemanju dedovanega razreda
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Prekini ob odstranitvi elementa
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutn\n
-# a network request (displayed when a net panel entry is expanded). The content ofn\n
-# this tab displays sent data (related to a HTTP send method).n\n
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):n\n
-html.label.Expand/Contract_All=Razširi/Skrči vse
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# Label used in the Net panel for detailed info about a network request (displayedn\n
-# when a net panel entry is expanded)n\n
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net paneln\n
-dom.label.breakOnPropertyChange=Prekinitev ob spremembi lastnosti
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# (expand an entry in the panel and select Headers tab).n\n
-# LOCALIZATION NOTE (LimitExceeded): A message displayed in the Net panel when some entriesn\n
-dom.disableBreakOnPropertyChange=Onemogoči prekinitev ob spremembi lastnosti
-dom.label.DOM_Breakpoints=DOM prelomne točke
-# must be removed since maximum number of entries has been reached.n\n
-# %S Is the number of entries removed.n\n
-# examples: Firebug\'s log limit has been reached. 150 entries not shown.n\n
-# xxxHonza: this construct should be replaced by PluralFormn\n
-EditAttribute=Uredi atribut \"%S\"
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# See: https://developer.mozilla.org/en/Localization_and_Pluralsn\n
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitn\n
-# has been reached. Informing the user what preferencee should be changed to modify the limit.n\n
-# %S Name of a preference.n\n
-DeleteAttribute=Odstrani atribute \"%S\"
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# examples: In order to change the limit modify: firebug.extensions.console.logLimitn\n
-# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.n\n
-# (result of javascript profiler tool). Reprsents a verb.n\n
-InheritedFrom=Podedovano od
-SothinkWarning=Razširitev Sothink SWF Catcher onemogoča pravilno dlovanje Firebug-a.<br><br>Prosim preberite <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">podrobno razlago na Firebug FAQ</a> za pomoč.
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headern\n
-# (name of a report column). In order to see this, select the Console panel start profilingn\n
-css.fontFamilyPreview=V kožuščku hudobnega fanta stopiclja mizar. 0123456789
-# by clicking the Profile button and stop it by clicking again. The report is logged into then\n
-# console panel. Make sure Script panel is enabled.n\n
-# Support for clipboard actions.n\n
-css.EmptyStyleSheet=Ni pravil. Lahko <a>ustvariš pravilo</a>.
-# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptn\n
-# panel when clicking a function object.n\n
-# %S Name of the functionn\n
-css.EmptyElementCSS=Ta element nima pravil sloga. Lahko <a>ustvarite pravilo</a> za to.
-EditStyle=Uredi slog elementa...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Novo pravilo
-css.tip.New_Rule=Add a new rule
-# Log Calls to \"getData\"n\n
-# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console paneln\n
-# if specific method is not supported.n\n
-# %S Name of a not supported method.n\n
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console paneln\n
-# when a not supported method is used on the command line.n\n
-# %S Name of a not supported method.n\n
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Nova lastnost...
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):n\n
-# Tooltip for the \"Break on... \" button used when the Console panel is selected.n\n
-# Console strings used when JavaScript is not availablen\n
-# LOCALIZATION NOTE (net.file.SizeInfotip): A tool-tip text used for precise size of a networkn\n
-EditProp=Uredi \"%S\"
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# response in the Net panel.n\n
-# #1 is rounded size, #2 precise sizen\n
-# examples: Size: 2KB (2,362 bytes)n\n
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache): A label for Net panel\'s option.n\n
-DisableProp=Onemogoči \"%S\"
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.n\n
-# With: the scope inside of the with(obj) {} statementn\n
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };n\n
-# Window: the scope inside of a Javascript window object.n\n
-DeleteProp=Odstrani \"%S\"
-css.tip.Delete_Prop=Delete the property "%S"
-# Net panel timing info labelsn\n
-BreakOnThisError=Prekinitev ob tej napaki
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Prekinitev pri vseh napakah
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-#A11y Chrome Labels (not visible, spoken by screen readers)n\n
-#A11y panelNode labels (not visible, spoken by screen readers)n\n
-#A11y Domplate labels (not visible, spoken by screen readers)n\n
-TrackThrowCatch=Sledi Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Uporabi zadnjo izvorno vrstico za eval() imena
-UseMD5ForEvalName=Uporabi MD5 za eval() imena
-# LOCALIZATION NOTEn\n
-Breakpoints=Prekinitvene točke
-ErrorBreakpoints=prekinitvene točke ob napaki
-LoggedFunctions=zabeležene funkcije
-EnableAllBreakpoints=Omogoči vse prekinitvene točke
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Onemogoči vse prekinitvene točke
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Odstrani vse prekinitvene točke
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Ta prekinitvena točka bo zaustavila izvajanje, če je ta izraz resničen:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# Describe contents of inline editor fieldsn\n
-# LOCALIZATION NOTE (a11y.labels.overridden):n\n
-breakpoints.Remove_Breakpoint=Odstrani točko preloma
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Onemogoči točko preloma
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Omogoči točko preloma
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# indicates style property is overridden by selector with higher specificityn\n
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):n\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# Existence and state of a breakpointn\n
-script.balloon.Continue=Nadaljuj
-script.balloon.Disable=Onemogoči
-ScriptsFilterStatic=Prikaži statične skripte
-ScriptsFilterEval=Prikaži statične in eval skripte
-ScriptsFilterEvent=Prikaži statične in event skripte
-ScriptsFilterAll=Prikaži statične, eval in event skripte
-ScriptsFilterStaticShort=statične
-ScriptsFilterEvalShort=evals
-ScriptsFilterEventShort=events
-ScriptsFilterAllShort=vse
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# #1 Line number, #2 Function name, #3 File namen\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlyn\n
-callstack.Expand_All=Razširi vse
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Zapri vse
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a console panel search n\n
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# #1 %S String key the use is looking for. #2 number of rows that contain the matched textn\n
-# examples: \"Match found for test in 17 log rows\"n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-ShowUserProps=Prikaži uporabniško opredeljene lastnosti
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Prikaži uporabniško opredeljene funkcije
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Prikaži DOM lastnosti
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Prikaži DOM funkcije
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Prikaži DOM konstante
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Prikaži linijske Event handlerje
-ShowInlineEventHandlersTooltip=Prikaži inline event handlerje, ki so na voljo in niso povezani z nobeno funkcijo.
-ShowOwnProperties=Prikaži samo lastne lastnosti
-ShowOwnPropertiesTooltip=Ne prikaži verige lastnosti
-ShowEnumerableProperties=Prikaži samo števne lastnosti
-ShowEnumerablePropertiesTooltip=Ne prikaži ne-števnih lastnosti
-NoMembersWarning=Ta objekt nima lastnosti za prikaz.
-NewWatch=Nov sledilni izraz...
-# Describes the match found when performing a script panel search n\n
-# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found inn\n
-AddWatch=Dodaj sledenje
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# examples: \"Match found for window.alert on line 322 in utilities.js\"n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlyn\n
-CopySourceCode=Kopiraj izvorno kodo
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Uporabi #<number> za preskok v vrstico
-CopyValue=Kopiraj vrednost
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Kopiraj ime
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Kopiraj pot
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Nova lastnost...
-EditProperty=Uredi lastnost...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Uredi spremenljivko...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Uredi sledenje...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Odstrani lastnost
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Odstrani sledenje
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in an element node) n\n
-SetBreakpoint=Nastavi prekinitveno točko
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementn\n
-# examples: \"Match found for obj in object element at /html/body/object[2]\"n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlyn\n
-EditBreakpointCondition=Uredi pogoje prekinitvene točke
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=Na tej strani ni postavljenih prekinitvenih točk.
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node) n\n
-# #1 Search string that was matched. #2 Attribute name #3 attribute value n\n
-Only_Show_Applied_Styles=Prikaži samo uporabljene stile
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# #4 the HTML element name containing. #5 XPATH string specifying the matched elementn\n
-# examples: \"Match found for abindex in tabindex=\"0\" in span element at /html/body/span[2]\"n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlyn\n
-Show_User_Agent_CSS=Prikaži CSS
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) n\n
-# #1 Search string that was matched. #2 element\'s text content n\n
-# #3 the HTML element name containing. #4 XPATH string specifying the matched elementn\n
-# examples: \"Match found for Firebug Rocks! in h2 element at /html/body/h2[2]\"n\n
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a CSS panel search (if it is found in a selector) n\n
-# #1 Search string that was matched. #2 selector in which the match was found n\n
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# examples: \"Match found for main in #mainContent h2 {\"n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a CSS panel search (if it is found in a style property) n\n
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style property applies to n\n
-# examples: \"Match found for background in style property background-repeat: \"repeat-x\"; in selector #mainContent {\"n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# Describes the match found when performing a DOM panel search n\n
-# #1 Search string that was matched. #2 DOM property in which the match was found n\n
-# examples: \"Match found for time in _starttime : 1257324992232 (Number)\"n\n
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a Net panel search n\n
-# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
-Expand_Shorthand_Properties=Razširi kratkoročne lastnosti
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# #3 Column in which the match was found #4. Column value n\n
-# examples: \"Match found for 792 in GET loading_animation.gif, timeline: 792 ms\"n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-Sort_alphabetically=Razvrsti po abecedi
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
-# #1 Search string that was matched. #2 Column value in which the match was found n\n
-# examples: \"Match found for 05 in net summary row: 4.05sn\n
-Show_Mozilla_specific_styles=Prikaži Mozilla specifične stile
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Indicates that the searched string was not matched n\n
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Vnesite katerokoli tipko za filtriranje seznama
-# %S Search string that was matched. n\n
-# examples: \"No matched found for wefkhwefkgwekhjgjh\"n\n
-# Console messages.n\n
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=pozicija
-LayoutAdjacent=adjacent
-position=položaj
-# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
-# If Firebug is displayed in an external window (detached), but not active for then\n
-# currently selected Firefox tab, the following button label is used for ann\n
-# activation button.n\n
-ShowRulers=Prikaži merilo in vodila
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
-Loading=Nalagam...
-Headers=Glave
-# An error message displayed in the Script panel when a source can\'t be displayedn\n
-# for specific URL.n\n
-net.tip.Clear=Clear the request list
-# examples: Failed to load source for: http://www.example.com/script.jsn\n
-# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
-net.header.Reset_Header=Ponastavi glavo
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=Zahtevaj URL in uporabljeno HTTP metodo
-net.header.Status=Status
-net.header.Status_Tooltip=Status prejetega odgovora
-net.header.Domain=Domena
-net.header.Domain_Tooltip=Domena izvršene zahteve
-net.header.Size=Velikost
-net.header.Size_Tooltip=Velikost prejetega odgovora.
-net.header.Timeline=Časovni potek
-net.header.Timeline_Tooltip=Podroben časovni potek zahtev in odgovorov.
-net.header.Local_IP=Lokalni IP
-net.header.Local_IP_Tooltip=Lokalni IP naslov in vrata na katera se veže zahtevek.
-net.header.Remote_IP=Oddaljeni IP
-net.header.Remote_IP_Tooltip=Oddaljeni IP naslov in vrata na katera se veže zahtevek.
-net.header.Protocol=Protokol
-net.header.Protocol_Tooltip=URL protokol za lociranje vira na Internetu.
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=XHR prelomne točke
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Prekini ob XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=ogled izvorne kode
-net.headers.pretty_print=lepi tisk
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Mediji
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Poslano
-Put=Vtakni
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Odgovor
-URLParameters=Param.
-Cache=Pomnilnik
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Splošne informacije
-fontviewer.Meta_Data=Meta podatki
-fontviewer.view_source=ogled izvorne kode
-fontviewer.Preview=Predogled
-fontviewer.view_characters=ogled znakov
-fontviewer.pretty_print=lepši tisk
-fontviewer.view_sample=ogled vzorca
-fontviewer.uniqueid=Unikaten ID
-fontviewer.vendor=Prodajalec
-fontviewer.license=Licenca
-fontviewer.description=Opis
-fontviewer.copyright=Avtorske pravice
-fontviewer.credits=Avtorji
-fontviewer.trademark=Blagovna znamka
-fontviewer.licensee=Pridobitelj licence
-fontviewer.extension=Vtičnik
-fontviewer.pangram=V kožuščku hudobnega fanta stopiclja mizar
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Razvrščaj po ključu
-jsonviewer.do_not_sort=Ne razvrščaj
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Kopiraj \\\"%S\\\" kot JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Glave zahtevka
-ResponseHeaders=Glave odgovora
-CachedResponseHeaders=Glave odgovora iz pomnilnika
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Omejitev Firebug log dnevnika je bila dosežena. %1$S vnos ni prikazan.;Omejitev Firebug log dnevnika je bila dosežena. %1$S vnosov ni prikazanih.
-LimitPrefs=Nastavitve
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Za spremembo omejitve spremenite: %S
-Refresh=Osveži
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Odpri v novem zavihku
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Odpri odgovor v novem zavihku
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Profil
-ProfilerStarted=Profiler je zagnan. Klikni \'Profil\' ponovno za poročilo
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S klic);(%1$Sms, %2$S klici)
-NothingToProfile=Ni aktivnosti za profil.
-PercentTooltip=Procent časa porabljenega za to funkcijo.
-CallsHeaderTooltip=Število klicev te funkcije.
-OwnTimeHeaderTooltip=Časa porabljen za to funkcijo, brez ugnezdenih klicev.
-TimeHeaderTooltip=Časa porabljen za to funkcijo, vključno z ugnezdenimi klici.
-AvgHeaderTooltip=Povprečen čas, vključno z klici funkcij.
-MinHeaderTooltip=Minimalen čas, vključno z klici funkcij.
-MaxHeaderTooltip=Maksimalen čas, vključno z klici funkcij.
-ProfileButton.Enabled.Tooltip=Profil JavaScript čas izvrševanja.
-ProfileButton.Disabled.Tooltip=Profil JavaScript čas izvrševanja (skriptni panel mora biti omogočen).
-Function=Funkcija
-Percent=Procent
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Klici
-OwnTime=Lasten čas
-Time=Čas
-Avg=Povp.
-Min=Min
-Max=Maks
-File=Datoteka
-# Support for standard actions.
-Copy=Kopiraj
-Cut=Izreži
-Remove=Odstrani
-Delete=Delete
-Paste=Prilepi
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Kopiraj innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Kopiraj XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Kopiraj CSS pot
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Kopiraj mesto
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Kopiraj mesto z parametri
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Kopiraj glave zahtevka
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Kopiraj glave odgovora
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Kopiraj telo odgovora
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Kopiraj napako
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Kopiraj funkcijo
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Zabeleži klice v \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Zabeleži dogodek
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Omogočen
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Firebug konzola ne podpira \'%S\'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Firebuk ukazna vrstica ne podpira \'%S\'
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Onemogoči prekinitev ob vseh napakah
-console.Break_On_All_Errors=Prekini ob vseh napakah
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Prekini ob tej napaki
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=Izvajanje JavaScript kode je onemogočeno v Firefox nastavitvah. Če želite uporabljati konzolno okno, omogočite nastavitev pod \'Orodja\' -> \'Možnosti\' -> \'Vsebina\' -> \'Omogoči JavaScript\'
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=Obstaja preveč elementov v matriki da bi jih označili na strani (trenutna omejitev je %S).\\\\nPoglejte \\\'extensions.firebug.multiHighlightLimit\\\' nastavitve.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug ukazna vrstica je onemogočena za XML strani. Lahko <a>preklopite v HTML</a> za jo omogočit.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Vsebina odgovora
-net.sizeinfo.Post_Body=Post vsebina
-net.sizeinfo.Total_Sent=Skupaj poslano
-net.sizeinfo.Total_Received=Skupaj prejeto
-net.sizeinfo.Including_HTTP_Headers=Vključuje HTTP glave
-net.ActivationMessage=Omrežni panel aktiviran. Zahtevki poslani med neaktivnostjo panela niso prikazani.
-net.responseSizeLimitMessage=Firebug je dosegel omejitev za odgovore. Kliknite <a>tukaj</a>, če želite odpreti
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Post omejitev velikosti presežena - odstranjeno s strani Firebuga.
-net.Break_On_XHR=Prekinitev ob XHR
-net.label.Parameters=Parametri
-net.label.Parts=Deli
-net.label.Source=Izvor
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Ponovno pošlji
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Onemogoči predpomnenje v brskalniku
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Prikaži paint dogodke
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Prikaži BFCache odgovore
-net.option.tip.Show_BFCache_Responses=Prikazani bodo tudi odgovori iz nazaj-naprej medpomnilnika
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Prekini ob naslednji
-script.Disable_Break_On_Next=Onemogoči prelom ob naslednjem
-ShowHttpHeaders=Prikaži glave HTTP
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S zahteva;%1$S zahteve
-FromCache=iz predpomnilnika
-StopLoading=Prekini nalaganje
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(zelo veliko podatkov)
-ShowComputedStyle=Prikaži izračunan slog
-StyleGroup-text=Tekst
-StyleGroup-background=Ozadje
-StyleGroup-box=Box model
-StyleGroup-layout=ureditev
-StyleGroup-other=Drugo
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Kopiraj barvo
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Kopiraj mesto slike
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Odpri sliko v novem zavihku
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Prezri sklad orodne vrstice
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Naloži originalno izvorno kodo
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Kopiraj deklaracijo pravil
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Kopiraj deklaracijo stila
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Napaka;%1$S Napake
-moduleManager.title=%S panel je onemogočen
-moduleManager.desc3=Uporabi kontekstni menu Firebug ikone v statusni vrstici za o(ne)mogočanje vseh panelov. Nadzor posameznih panelov pa opravi v zavihkih panela:
-moduleManager.Enable=Omogoči
-Suspend_Firebug=Začasno prekini Firebug
-Resume_Firebug=Ponovno zaženi Firebug
-Reset_Panels_To_Disabled=Onemogoči panele
-Open_Console=Odpri konzolo
-Open_Console_Tooltip=Odpri sledilno konzolo za Firebug.
-Scope_Chain=Veriga obsega
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=Z
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Kliči
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Okno
-Logs=Log datoteke
-Options=Možnosti
-Copy_Stack=Kopiraj sklad
-Copy Exception=Kopiraj izjemo
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blokirano
-requestinfo.Resolving=DNS poizvedba
-requestinfo.Connecting=Povezujem
-requestinfo.Sending=Pošiljam
-requestinfo.Waiting=Čakam
-requestinfo.Receiving=Prejemam
-requestinfo.ContentLoad=\'DOMContentLoaded\' (dogodek)
-requestinfo.WindowLoad=\'load\' (dogodek)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Začetni čas zahtevka od začetka
-requestinfo.phases.label=Začetni in pretečeni čas faze zahtev, glede na začetek zahteve:
-requestinfo.timings.label=Časovnik dogodka glede na začetek zahteve:
-search.Firebug_Search=Firebug iskanje
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Naslednji
-search.tip.Next=Search for the next match
-search.Previous=Prejšnji
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Razlikuj velike/male črke
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Velike/male črke nepomembne
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Več datotek
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Uporabi splošno deklaracijo
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS selektor
-search.net.Headers=Glave
-search.net.Parameters=Parametri
-search.net.Response_Bodies=Vsebina odgovorov
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Vztrajaj
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Prikaži vse zapise v dnevniku
-firebug.console.Errors=Napake
-firebug.console.Filter_by_Errors=Filtriraj po napakah
-firebug.console.Warnings=Opozorila
-firebug.console.Filter_by_Warnings=Filtriraj po opozorilih
-firebug.console.Info=Podrobnosti
-firebug.console.Filter_by_Info=Filtriraj po podrobnostih
-firebug.console.Debug_Info=Info. razhroščevalnika
-firebug.console.Filter_by_Debug_Info=Filtriraj po info. razhroščevalnika
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Odpri Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Skrij Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Omogoči vse panele
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Onemogoči vse panele
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Uredi bližnjice
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Možnosti
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Omogoči izboljšave za slabovidne
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Ponastavi vse Firebug nastavitve
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug na spletu
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Prikaži števec napak
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Velikost pisave
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Povečaj pisavo
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Pomanjšaj pisavo
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Normalna pisava
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Firebugova spletna stran...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Dokumentacija...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Bližnice s tipkovnico...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Pogovorna skupina...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Sledilnik napak...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Prispevki...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=O razširitvi...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Išči
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Ponovno vnesi ukaz
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Preklopi preiskovanje
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Preklopi okno s hitrimi informacijami
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Preklopi profiliranje
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Fokusiraj ukazno vrstico
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Fokusiraj Firebug iskanje
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Fokusiraj nadzorni urejevalnik
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Fokusiraj lokacijo
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Naslednji objekt
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Prejšnji objekt
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Prilagodi Firebug bližnjice
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Odpri Firebug v novem oknu
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Preklopi na levi Firebug panel
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Preklopi na desni Firebug panel
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Odpri Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Prejšnji Firebug zavihek
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Počisti konzolo
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Odpri sledilno konzolo
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Nazaj
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Naprej
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Povečaj velikost pisave
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Pomanjšaj velikost pisave
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normalna velikost pisave
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Izbira panela
-customizeShortcuts=Tipke bližnjic
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=panelna orodja
-a11y.labels.firebug_panels=Firebug paneli
-a11y.labels.firebug_side_panels=Firebug drsni paneli
-a11y.labels.firebug_window=firebug okno
-a11y.labels.firebug_status=firebug status
-a11y.labels.reset=ponastavi
-a11y.labels.reset_shortcut=ponastavi bližnjico %S
-aria.labels.inactive_panel=neaktiven panel
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=zapiši vrstice v dnevnik
-a11y.labels.call_stack=prikliči sklad
-a11y.labels.document_structure=struktura dokumenta
-a11y.labels.title_panel=panel %S
-a11y.labels.title_side_panel=stranski panel %S
-a11y.labels.cached=predpomnjeno
-aria.labels.stack_trace=sledi skladu
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=rob
-a11y.layout.margin=razmik
-a11y.layout.position=položaj
-a11y.layout.position_top=zgornji položaj
-a11y.layout.position_right=desni položaj
-a11y.layout.position_bottom=spodnji položaj
-a11y.layout.position_left=levi položaj
-a11y.layout.margin_top=razmik zgoraj
-a11y.layout.margin_right=razmik desno
-a11y.layout.margin_bottom=razmik spodaj
-a11y.layout.margin_left=razmik levo
-a11y.layout.border_top=rob zgoraj
-a11y.layout.border_right=rob desno
-a11y.layout.border_bottom=rob spodaj
-a11y.layout.border_left=rob levo
-a11y.layout.padding_top=odmik zgoraj
-a11y.layout.padding_right=odmik desno
-a11y.layout.padding_bottom=odmik spodaj
-a11y.layout.padding_left=odmik levo
-a11y.layout.top=zgoraj
-a11y.layout.right=desno
-a11y.layout.bottom=spodaj
-a11y.layout.left=levo
-a11y.layout.width=širina
-a11y.layout.height=višina
-a11y.layout.size=velikost
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=mere-okna
-a11y.layout.clientBoundingRect=objemajoči okvir
-a11y.descriptions.press_enter_to_edit_values=pritisnite enter, ki mu sledi tabulator, za urejanje posametnih vrednosti
-a11y.labels.style_rules=stilska pravila
-aria.labels.inherited_style_rules=dedovana stilska pravila
-a11y.labels.computed_styles=izračunani stili
-a11y.labels.dom_properties=DOM lastnosti
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=linijski urejevalnik
-a11y.labels.value_for_attribute_in_element=vrednost %S atributa v %S elementu
-a11y.labels.attribute_for_element=atribut za element %S
-a11y.labels.text_contents_for_element=tekstovna vsebina za element %S
-a11y.labels.defined_in_file=določeno v %S
-a11y.labels.declarations_for_selector=stilska deklaracija za \"%S\" selektor
-a11y.labels.property_for_selector=CSS lastnost za selektor: %S
-a11y.labels.value_property_in_selector=%S vrednost za selektor %S
-a11y.labels.css_selector=CSS selektor
-a11y.labels.source_code_for_file=izvorna koda za datoteko %S
-a11y.labels.press_enter_to_add_new_watch_expression=pritisnite enter za dodajanje novega watch izraza
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=prepisano
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=vsebuje pogojno točko preloma
-a11y.updates.has_disabled_break_point=je onemogočil prelomne točke
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Skripta prekinjana v vrstici %S v %S, datoteka %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=našel sem ujemanje za %S v %S vrsticah dnevnika
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=našel sem ujemanje za %S v vrstici %S datoteke %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=našel sem ujemanje za %S v elementu %S pri poti %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=našel sem ujemanje za %S v atributu %S=%S elementa %S pri poti %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=našel sem ujemanje za %S v vsebini: %S elementa %S pri poti %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=našel sem ujemanje za %S v selektorju %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=najdeno ujemanje za \"%S\" v deklaraciji stila %S v selektorju %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=našel sem ujemanje za %S v DOM lastnosti %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=našel sem ujemanje za \"%S\" v %S, %S:%S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=našel sem ujemanje za %S v vrstici povzetka omrežja: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=nisem našel ujemanj za \"%S\"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Ste prepričani, da želite ponastaviti vse nastavitve na privzete?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Obstoječi CSS popravki bodo zavrženi.\\\\nSte prepričani, da želite urediti izvorno kodo?
-# Console messages
-warning.Console_must_be_enabled=Konzola mora biti omogočena
-warning.Command_line_blocked?=Ukazna vrstica blokirana?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Ponovno naloži za aktiviranje konzolnega okna
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Ponovno naloži stran za pridobitev izvorne kode za
-message.The_resource_from_this_URL_is_not_text=Vir na tem URL naslovu ni tekst
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Pojdi nazaj na ta panel
-firebug.history.Stay_on_this_panel=Ostani na tem panelu
-firebug.history.Go_forward_to_this_panel=Pojdi naprej na ta panel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Nazaj
-firebug.history.Go_forward=Naprej
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Skriptni panel ni bil aktiven med nalaganjem strani
-script.suggestion.inactive_during_page_load2=<a>Ponovno naloži</a> za ogled vseh virov
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript je onemogočen
-script.suggestion.javascript_not_enabled=Poglej Firefox > Orodja > Možnosti > Vsebina > Omogoči Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Omogoči Javascript in osveži
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Vse skripte so bile filtrirane
-script.suggestion.all_scripts_filtered=Poglej nastavitve filtriranja skript orodni vrstici ali \"Prikaži možnosti chrome izvorov\"
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=Ni Javascript kode na tej strani
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Razhroščevalnik je že aktiven
-script.suggestion.debugger_active=Razhroščevalnik je trenutno ustavljen na prelomni točki na drugi strani.
-script.button.Go_to_that_page=Pojdi na to stran
-script.warning.debugger_not_activated=Razhroščevalnik ni aktiviran
-script.suggestion.debugger_not_activated=Razhroščevalnik ni aktiviran
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Zapri
-firebug.View=Pogled
-firebug.Help=Pomoč
-firebug.Run=Zaženi
-firebug.Copy=Kopiraj
-firebug.History=Zgodovina
-firebug.Run_the_entered_command=Izvedi vnesen ukaz
-firebug.Clear_the_Command_Editor=Počisti urejevalec ukazov
-firebug.Copy_the_script_as_a_bookmarklet=Kopiraj skripto kot zaznamek
-firebug.Insert_a_previously_entered_command=Vstavi predhodno vnešen ukaz
-firebug.AlwaysOpenInWindow=Vedno odpri v novem oknu
-firebug.OpenWith=Odpri z urejevalnikom
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Strani...
-firebug.Configure_Editors=Nastavi urejevalnike
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Zaženi do te vrstice
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Preglej
-firebug.InspectElement=Preglej Element
-firebug.InspectElementWithFirebug=Preglej element z Firebugom
-firebug.BreakOnErrors=Prekini ob napaki
-firebug.InspectTooltip=Klikni element na strani za pregled
-firebug.EditHTMLTooltip=Uredi to HTML kodo
-firebug.Profile=Profil
-firebug.Clear=Počisti
-firebug.ClearConsole=Počisti konzolo
-firebug.ClearTooltip=Počisti konzolo
-firebug.All=Vse
-firebug.Images=Slike
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Nastavljeni Firebug urejevalniki
-editors.Editor=Urejevalnik
-editors.Executable=Izvršna datoteka
-editors.Launch_Arguments=Zaganjalna stikala
-editors.Add=Dodaj
-editors.Remove=Odstrani
-editors.Change=Spremeni
-editors.Move_Up=Premakni gor
-editors.Close=Zapri
-editors.Browse=Prebrskaj...
-changeEditor.Editor_Configuration=Nastavitve urejevalnika
-changeEditor.Name=Ime:
-changeEditor.Executable=Izvršilna datoteka:
-changeEditor.CmdLine=Argumenti:
-changeEditor.Supplied_arguments=Argumenti, ki jih je posredoval Firebug:
-changeEditor.URL_of_file=URL datoteke (če %url ni prisoten, bo datoteka %file privzeto dodana)
-changeEditor.Path_to_local_file=Pot do krajevne datoteke (ali začasne kopije)
-changeEditor.Line_number=Številka vrstice (če je na voljo)
-changeEditor.Invalid_Application_Path=Neveljavna pot do aplikacije
-changeEditor.Application_does_not_exist=Izbrana aplikacija ne obstaja!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Uredi
-firebug.css.sourceEdit=Uredi izvorno kodo
-firebug.css.sourceEdit.tooltip=Urejanje izvorne kode stilske datoteke, kot jo naloži brskalnik
-firebug.css.liveEdit=Urejanje v živo
-firebug.css.liveEdit.tooltip=Tekstovno polje za urejanje CSS pridobljeno iz brskalnika
-firebug.EditCSSTooltip=Uredi to slogovno predlogo
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Spletna mesta niso pomnjena v načinu Zasebno brskanje
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Prikaži opozorila ob prekinitvah
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=Omogoči/onemogoči opozorila o prelomu v <a>zavihku panelnega menuja</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=S klikom na gumb \"Onemogoči\" boste povozili nastavitve \'razhroščevalca\' z onemogočeno točko preloma.
-firebug.bon.tooltip.disableDebuggerKeyword2=Ustvari onemogočeno točko preloma
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(za uporabo sledeče možnosti mora biti omogočen skriptni panel)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=Ni podrejenih objektov
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=več
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S objekt v Shrambi;%1$S objektov v Shrambi
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Lastnosti objekta
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(brez zaključkov)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=URL je bil najverjetneje preklican z uporabo metode revokeObjectURL.
-firebug.failedToPreviewImageURL=Napaka pri nalaganju danega URLja.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Spominski profiler zagnan
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objekti dodani med profiliranjem
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Rezultati spominskega profilerja
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Celotna seja
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.n\n
+# %S Title of the associated web page.n\n
+# examples: Firebug - Googlen\n
+WindowTitle=Firebug -%S
+# Panel titlesn\n
+Panel-console=Konzola
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Mreža
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Skript
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Slog
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Izračunano
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Postavitev
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Sledilnik
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Prekinitvene točke
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Sklad
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Obseg
+firebug.DetachFirebug=Odpri Firebug v novem oknu
+firebug.AttachFirebug=Pripni Firebug k oknu brskalnika
+# LOCALIZATION NOTE (Total_Firebugs): Used in a tooltip that is displayed for Firebugn\n
+# icon located within Firefox status bar. Displayes number of pages with activated Firebug.n\n
+# xxxHonza: this construct should be replaced by PluralFormn\n
+# See: https://developer.mozilla.org/en/Localization_and_Pluralsn\n
+pluralRule=1
+# Console panel options.n\n
+# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,n\n
+# message, etc. within a source of a web page.n\n
+# #1 File name, #2 Line numbern\n
+# examples: somePage.htm (line 64)n\n
+# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.n\n
+plural.Total_Firebugs2=%1$S Firebug Skupaj;%1$S Skupaj Firebugov
+# For example, right clicking on an element in the HTML panel offers an action to inspectn\n
+# clicked element in the DOM panel (tab).n\n
+# #1 Target panel titlen\n
+startbutton.tip.deactivated=Deactivated
+# examples: Inspect in DOM Tabn\n
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugn\n
+# do not translate.n\n
+# #1 jsdIScript.tagn\n
+# HTML panel context menu items.n\n
+panel.status=%S: %S
+inBrowser=V brskalniku
+minimized=Pomanjšan
+enablement.for_all_pages=za vse strani
+enablement.on=Vklop
+enablement.off=Izklop
+enablement.Panel_activation_status=Panel activation status:
+none=Zaprto
+Firebug_-_inactive_for_current_website=Firebug - neaktiven za obstoječo spletno stran
+Activate_Firebug_for_the_current_website=Aktiviraj Firebug za trenutno spletno stran
+Minimized=Pomanjšano
+Minimize_Firebug=Pomanjšaj Firebug
+On_for_all_web_pages=Vključi za vse strani
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Izbriši aktivacijski seznam
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI lokacija
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# Quick Info Boxn\n
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumen\n
+firebug_options=Firebug Možnosti
+# button that are used when the HTML panel is currently selected. The button allows stoppingn\n
+# JS execution when DOM of the current page is modified.n\n
+firebug.Show_All_Panels=Prikaži vse panele
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
+ShowJavaScriptErrors=Prikaži napake JavaScript-a
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Prikaži opozorila JavaScript-a
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Prikaži napake CSS
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Prikaži sklad napake
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Prikaži XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Prikaži chrome napake
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Prikaži chrome sporočila
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Prikaži zunanje napake
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Prikaži omrežne napake
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Stroga opozorila (počasnejše delovanje)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Zgodovina ukazov
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Prikaži pojavno okno seznama nedokončanih opravil
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Assert napaka
+# editing an existing HTML element attribute.n\n
+# #1 Name of the clicked attribute.n\n
+# examples: Edit Attribute \"onclick\"...n\n
+# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
+# deleting an existing HTML element attribute.n\n
+Line=%S (vrstica %S)
+LineAndCol=%S (vrstica %S, stolpec %S)
+InstanceLine=%S #%S (vrstica %S)
+StackItem=%S (%S vrstica %S)
+SystemItem=<Sistem>
+# #1 Name of the clicked attribute.n\n
+# examples: Delete Attribute \"onclick\"...n\n
+# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.n\n
+# that has been inherited. Used in the Style side panel (under HTML panel).n\n
+# examples: Inherited from table.tabViewn\n
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(brez imena)
+# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.n\n
+# Allows to edit an existing CSS rule property.n\n
+# %S Name of the clicked propertyn\n
+jsdIScript=jsdl skripta %S
+# examples: Edit \"background-color\"...n\n
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.n\n
+# Allows to disable an existing CSS rule property.n\n
+ShowFullText=Prikaži polni tekst
+html.option.tip.Show_Full_Text=Don't crop element contents
+# %S Name of the clicked propertyn\n
+# examples: Disable \"background-color\"n\n
+# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.n\n
+ShowWhitespace=Prikaži prazna mesta
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# Allows to delete an existing CSS rule property.n\n
+# %S Name of the clicked propertyn\n
+ShowComments=Prikaži opombe
+html.option.tip.Show_Comments=Show comment nodes
+# examples: Delete \"background-color\"n\n
+# Console context menu labels.n\n
+# LOCALIZATION NOTE do not translate, no longer used(?)n\n
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# Breakpoints side paneln\n
+# Script paneln\n
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutOffset, LayoutAdjacent):n\n
+HighlightMutations=Poudari spremembe
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# Labels used to describe layout properties a the selected HTML element.n\n
+# Used in the Layout side panel under HMTL panel.n\n
+# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side paneln\n
+ExpandMutations=Razširi spremembe
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# under HTML panel.n\n
+# LOCALIZATION NOTE http://www.w3.org/TR/cssom-view/#the-getclientrects-and-getboundingclientn\n
+# This is the default and may become the only choice.n\n
+ScrollToMutations=Zvrsti spremembe v vpogled
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (ShowAdjacentLayout): this is disabled, no translationn\n
+# Net paneln\n
+# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)n\n
+ShowQuickInfoBox=Prikaži hitre informacije
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,n\n
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,n\n
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):n\n
+ShadeBoxModel=Model zasenčenega okvirja
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Zvrsti v vpogled
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Nov atribut...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Odstrani element
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Odstrani node
+html.Delete_Node=Delete the node from the tree
+# Labels and tooltips for a headers displayed on top of the Net panel.n\n
+quickInfo=Hitre informacije
+computedStyle=Izračunan stil
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.n\n
+# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s contextn\n
+# menu for breaking on a XHR.n\n
+html.Break_On_Mutate=Prekini ob mutaciji
+html.Disable_Break_On_Mutate=Onemogoči prekinitev ob mutaciji
+html.label.Break_On_Text_Change=Prekini ob spremembi teksta
+html.label.HTML_Breakpoints=HTML prelomna točka
+html.label.Break_On_Attribute_Change=Prekini ob spremembi atributa
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Prekini ob dodajanju/odvzemanju dedovanega razreda
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Prekini ob odstranitvi elementa
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutn\n
+# a network request (displayed when a net panel entry is expanded). The content ofn\n
+# this tab displays sent data (related to a HTTP send method).n\n
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):n\n
+html.label.Expand/Contract_All=Razširi/Skrči vse
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# Label used in the Net panel for detailed info about a network request (displayedn\n
+# when a net panel entry is expanded)n\n
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net paneln\n
+dom.label.breakOnPropertyChange=Prekinitev ob spremembi lastnosti
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# (expand an entry in the panel and select Headers tab).n\n
+# LOCALIZATION NOTE (LimitExceeded): A message displayed in the Net panel when some entriesn\n
+dom.disableBreakOnPropertyChange=Onemogoči prekinitev ob spremembi lastnosti
+dom.label.DOM_Breakpoints=DOM prelomne točke
+# must be removed since maximum number of entries has been reached.n\n
+# %S Is the number of entries removed.n\n
+# examples: Firebug\'s log limit has been reached. 150 entries not shown.n\n
+# xxxHonza: this construct should be replaced by PluralFormn\n
+EditAttribute=Uredi atribut \"%S\"
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# See: https://developer.mozilla.org/en/Localization_and_Pluralsn\n
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitn\n
+# has been reached. Informing the user what preferencee should be changed to modify the limit.n\n
+# %S Name of a preference.n\n
+DeleteAttribute=Odstrani atribute \"%S\"
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# examples: In order to change the limit modify: firebug.extensions.console.logLimitn\n
+# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.n\n
+# (result of javascript profiler tool). Reprsents a verb.n\n
+InheritedFrom=Podedovano od
+SothinkWarning=Razširitev Sothink SWF Catcher onemogoča pravilno dlovanje Firebug-a.<br><br>Prosim preberite <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">podrobno razlago na Firebug FAQ</a> za pomoč.
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headern\n
+# (name of a report column). In order to see this, select the Console panel start profilingn\n
+css.fontFamilyPreview=V kožuščku hudobnega fanta stopiclja mizar. 0123456789
+# by clicking the Profile button and stop it by clicking again. The report is logged into then\n
+# console panel. Make sure Script panel is enabled.n\n
+# Support for clipboard actions.n\n
+css.EmptyStyleSheet=Ni pravil. Lahko <a>ustvariš pravilo</a>.
+# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptn\n
+# panel when clicking a function object.n\n
+# %S Name of the functionn\n
+css.EmptyElementCSS=Ta element nima pravil sloga. Lahko <a>ustvarite pravilo</a> za to.
+EditStyle=Uredi slog elementa...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Novo pravilo
+css.tip.New_Rule=Add a new rule
+# Log Calls to \"getData\"n\n
+# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console paneln\n
+# if specific method is not supported.n\n
+# %S Name of a not supported method.n\n
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console paneln\n
+# when a not supported method is used on the command line.n\n
+# %S Name of a not supported method.n\n
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Nova lastnost...
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):n\n
+# Tooltip for the \"Break on... \" button used when the Console panel is selected.n\n
+# Console strings used when JavaScript is not availablen\n
+# LOCALIZATION NOTE (net.file.SizeInfotip): A tool-tip text used for precise size of a networkn\n
+EditProp=Uredi \"%S\"
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# response in the Net panel.n\n
+# #1 is rounded size, #2 precise sizen\n
+# examples: Size: 2KB (2,362 bytes)n\n
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache): A label for Net panel\'s option.n\n
+DisableProp=Onemogoči \"%S\"
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.n\n
+# With: the scope inside of the with(obj) {} statementn\n
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };n\n
+# Window: the scope inside of a Javascript window object.n\n
+DeleteProp=Odstrani \"%S\"
+css.tip.Delete_Prop=Delete the property "%S"
+# Net panel timing info labelsn\n
+BreakOnThisError=Prekinitev ob tej napaki
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Prekinitev pri vseh napakah
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+#A11y Chrome Labels (not visible, spoken by screen readers)n\n
+#A11y panelNode labels (not visible, spoken by screen readers)n\n
+#A11y Domplate labels (not visible, spoken by screen readers)n\n
+TrackThrowCatch=Sledi Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Uporabi zadnjo izvorno vrstico za eval() imena
+UseMD5ForEvalName=Uporabi MD5 za eval() imena
+# LOCALIZATION NOTEn\n
+Breakpoints=Prekinitvene točke
+ErrorBreakpoints=prekinitvene točke ob napaki
+LoggedFunctions=zabeležene funkcije
+EnableAllBreakpoints=Omogoči vse prekinitvene točke
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Onemogoči vse prekinitvene točke
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Odstrani vse prekinitvene točke
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Ta prekinitvena točka bo zaustavila izvajanje, če je ta izraz resničen:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# Describe contents of inline editor fieldsn\n
+# LOCALIZATION NOTE (a11y.labels.overridden):n\n
+breakpoints.Remove_Breakpoint=Odstrani točko preloma
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Onemogoči točko preloma
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Omogoči točko preloma
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# indicates style property is overridden by selector with higher specificityn\n
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):n\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# Existence and state of a breakpointn\n
+script.balloon.Continue=Nadaljuj
+script.balloon.Disable=Onemogoči
+ScriptsFilterStatic=Prikaži statične skripte
+ScriptsFilterEval=Prikaži statične in eval skripte
+ScriptsFilterEvent=Prikaži statične in event skripte
+ScriptsFilterAll=Prikaži statične, eval in event skripte
+ScriptsFilterStaticShort=statične
+ScriptsFilterEvalShort=evals
+ScriptsFilterEventShort=events
+ScriptsFilterAllShort=vse
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# #1 Line number, #2 Function name, #3 File namen\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlyn\n
+callstack.Expand_All=Razširi vse
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Zapri vse
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a console panel search n\n
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# #1 %S String key the use is looking for. #2 number of rows that contain the matched textn\n
+# examples: \"Match found for test in 17 log rows\"n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+ShowUserProps=Prikaži uporabniško opredeljene lastnosti
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Prikaži uporabniško opredeljene funkcije
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Prikaži DOM lastnosti
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Prikaži DOM funkcije
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Prikaži DOM konstante
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Prikaži linijske Event handlerje
+ShowInlineEventHandlersTooltip=Prikaži inline event handlerje, ki so na voljo in niso povezani z nobeno funkcijo.
+ShowOwnProperties=Prikaži samo lastne lastnosti
+ShowOwnPropertiesTooltip=Ne prikaži verige lastnosti
+ShowEnumerableProperties=Prikaži samo števne lastnosti
+ShowEnumerablePropertiesTooltip=Ne prikaži ne-števnih lastnosti
+NoMembersWarning=Ta objekt nima lastnosti za prikaz.
+NewWatch=Nov sledilni izraz...
+# Describes the match found when performing a script panel search n\n
+# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found inn\n
+AddWatch=Dodaj sledenje
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# examples: \"Match found for window.alert on line 322 in utilities.js\"n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlyn\n
+CopySourceCode=Kopiraj izvorno kodo
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Uporabi #<number> za preskok v vrstico
+CopyValue=Kopiraj vrednost
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Kopiraj ime
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Kopiraj pot
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Nova lastnost...
+EditProperty=Uredi lastnost...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Uredi spremenljivko...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Uredi sledenje...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Odstrani lastnost
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Odstrani sledenje
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in an element node) n\n
+SetBreakpoint=Nastavi prekinitveno točko
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementn\n
+# examples: \"Match found for obj in object element at /html/body/object[2]\"n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlyn\n
+EditBreakpointCondition=Uredi pogoje prekinitvene točke
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=Na tej strani ni postavljenih prekinitvenih točk.
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node) n\n
+# #1 Search string that was matched. #2 Attribute name #3 attribute value n\n
+Only_Show_Applied_Styles=Prikaži samo uporabljene stile
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# #4 the HTML element name containing. #5 XPATH string specifying the matched elementn\n
+# examples: \"Match found for abindex in tabindex=\"0\" in span element at /html/body/span[2]\"n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlyn\n
+Show_User_Agent_CSS=Prikaži CSS
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) n\n
+# #1 Search string that was matched. #2 element\'s text content n\n
+# #3 the HTML element name containing. #4 XPATH string specifying the matched elementn\n
+# examples: \"Match found for Firebug Rocks! in h2 element at /html/body/h2[2]\"n\n
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a CSS panel search (if it is found in a selector) n\n
+# #1 Search string that was matched. #2 selector in which the match was found n\n
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# examples: \"Match found for main in #mainContent h2 {\"n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a CSS panel search (if it is found in a style property) n\n
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style property applies to n\n
+# examples: \"Match found for background in style property background-repeat: \"repeat-x\"; in selector #mainContent {\"n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# Describes the match found when performing a DOM panel search n\n
+# #1 Search string that was matched. #2 DOM property in which the match was found n\n
+# examples: \"Match found for time in _starttime : 1257324992232 (Number)\"n\n
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a Net panel search n\n
+# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
+Expand_Shorthand_Properties=Razširi kratkoročne lastnosti
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# #3 Column in which the match was found #4. Column value n\n
+# examples: \"Match found for 792 in GET loading_animation.gif, timeline: 792 ms\"n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+Sort_alphabetically=Razvrsti po abecedi
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
+# #1 Search string that was matched. #2 Column value in which the match was found n\n
+# examples: \"Match found for 05 in net summary row: 4.05sn\n
+Show_Mozilla_specific_styles=Prikaži Mozilla specifične stile
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Indicates that the searched string was not matched n\n
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Vnesite katerokoli tipko za filtriranje seznama
+# %S Search string that was matched. n\n
+# examples: \"No matched found for wefkhwefkgwekhjgjh\"n\n
+# Console messages.n\n
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=pozicija
+LayoutAdjacent=adjacent
+position=položaj
+# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
+# If Firebug is displayed in an external window (detached), but not active for then\n
+# currently selected Firefox tab, the following button label is used for ann\n
+# activation button.n\n
+ShowRulers=Prikaži merilo in vodila
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
+Loading=Nalagam...
+Headers=Glave
+# An error message displayed in the Script panel when a source can\'t be displayedn\n
+# for specific URL.n\n
+net.tip.Clear=Clear the request list
+# examples: Failed to load source for: http://www.example.com/script.jsn\n
+# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
+net.header.Reset_Header=Ponastavi glavo
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=Zahtevaj URL in uporabljeno HTTP metodo
+net.header.Status=Status
+net.header.Status_Tooltip=Status prejetega odgovora
+net.header.Domain=Domena
+net.header.Domain_Tooltip=Domena izvršene zahteve
+net.header.Size=Velikost
+net.header.Size_Tooltip=Velikost prejetega odgovora.
+net.header.Timeline=Časovni potek
+net.header.Timeline_Tooltip=Podroben časovni potek zahtev in odgovorov.
+net.header.Local_IP=Lokalni IP
+net.header.Local_IP_Tooltip=Lokalni IP naslov in vrata na katera se veže zahtevek.
+net.header.Remote_IP=Oddaljeni IP
+net.header.Remote_IP_Tooltip=Oddaljeni IP naslov in vrata na katera se veže zahtevek.
+net.header.Protocol=Protokol
+net.header.Protocol_Tooltip=URL protokol za lociranje vira na Internetu.
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=XHR prelomne točke
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Prekini ob XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=ogled izvorne kode
+net.headers.pretty_print=lepi tisk
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Mediji
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Poslano
+Put=Vtakni
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Odgovor
+URLParameters=Param.
+Cache=Pomnilnik
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Splošne informacije
+fontviewer.Meta_Data=Meta podatki
+fontviewer.view_source=ogled izvorne kode
+fontviewer.Preview=Predogled
+fontviewer.view_characters=ogled znakov
+fontviewer.pretty_print=lepši tisk
+fontviewer.view_sample=ogled vzorca
+fontviewer.uniqueid=Unikaten ID
+fontviewer.vendor=Prodajalec
+fontviewer.license=Licenca
+fontviewer.description=Opis
+fontviewer.copyright=Avtorske pravice
+fontviewer.credits=Avtorji
+fontviewer.trademark=Blagovna znamka
+fontviewer.licensee=Pridobitelj licence
+fontviewer.extension=Vtičnik
+fontviewer.pangram=V kožuščku hudobnega fanta stopiclja mizar
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Razvrščaj po ključu
+jsonviewer.do_not_sort=Ne razvrščaj
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Kopiraj \\\"%S\\\" kot JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Glave zahtevka
+ResponseHeaders=Glave odgovora
+CachedResponseHeaders=Glave odgovora iz pomnilnika
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Omejitev Firebug log dnevnika je bila dosežena. %1$S vnos ni prikazan.;Omejitev Firebug log dnevnika je bila dosežena. %1$S vnosov ni prikazanih.
+LimitPrefs=Nastavitve
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Za spremembo omejitve spremenite: %S
+Refresh=Osveži
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Odpri v novem zavihku
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Odpri odgovor v novem zavihku
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Profil
+ProfilerStarted=Profiler je zagnan. Klikni \'Profil\' ponovno za poročilo
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S klic);(%1$Sms, %2$S klici)
+NothingToProfile=Ni aktivnosti za profil.
+PercentTooltip=Procent časa porabljenega za to funkcijo.
+CallsHeaderTooltip=Število klicev te funkcije.
+OwnTimeHeaderTooltip=Časa porabljen za to funkcijo, brez ugnezdenih klicev.
+TimeHeaderTooltip=Časa porabljen za to funkcijo, vključno z ugnezdenimi klici.
+AvgHeaderTooltip=Povprečen čas, vključno z klici funkcij.
+MinHeaderTooltip=Minimalen čas, vključno z klici funkcij.
+MaxHeaderTooltip=Maksimalen čas, vključno z klici funkcij.
+ProfileButton.Enabled.Tooltip=Profil JavaScript čas izvrševanja.
+ProfileButton.Disabled.Tooltip=Profil JavaScript čas izvrševanja (skriptni panel mora biti omogočen).
+Function=Funkcija
+Percent=Procent
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Klici
+OwnTime=Lasten čas
+Time=Čas
+Avg=Povp.
+Min=Min
+Max=Maks
+File=Datoteka
+# Support for standard actions.
+Copy=Kopiraj
+Cut=Izreži
+Remove=Odstrani
+Delete=Delete
+Paste=Prilepi
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Kopiraj innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Kopiraj XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Kopiraj CSS pot
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Kopiraj mesto
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Kopiraj mesto z parametri
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Kopiraj glave zahtevka
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Kopiraj glave odgovora
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Kopiraj telo odgovora
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Kopiraj napako
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Kopiraj funkcijo
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Zabeleži klice v \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Zabeleži dogodek
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Omogočen
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Firebug konzola ne podpira \'%S\'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Firebuk ukazna vrstica ne podpira \'%S\'
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Onemogoči prekinitev ob vseh napakah
+console.Break_On_All_Errors=Prekini ob vseh napakah
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Prekini ob tej napaki
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=Izvajanje JavaScript kode je onemogočeno v Firefox nastavitvah. Če želite uporabljati konzolno okno, omogočite nastavitev pod \'Orodja\' -> \'Možnosti\' -> \'Vsebina\' -> \'Omogoči JavaScript\'
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=Obstaja preveč elementov v matriki da bi jih označili na strani (trenutna omejitev je %S).\\\\nPoglejte \\\'extensions.firebug.multiHighlightLimit\\\' nastavitve.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug ukazna vrstica je onemogočena za XML strani. Lahko <a>preklopite v HTML</a> za jo omogočit.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Vsebina odgovora
+net.sizeinfo.Post_Body=Post vsebina
+net.sizeinfo.Total_Sent=Skupaj poslano
+net.sizeinfo.Total_Received=Skupaj prejeto
+net.sizeinfo.Including_HTTP_Headers=Vključuje HTTP glave
+net.ActivationMessage=Omrežni panel aktiviran. Zahtevki poslani med neaktivnostjo panela niso prikazani.
+net.responseSizeLimitMessage=Firebug je dosegel omejitev za odgovore. Kliknite <a>tukaj</a>, če želite odpreti
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Post omejitev velikosti presežena - odstranjeno s strani Firebuga.
+net.Break_On_XHR=Prekinitev ob XHR
+net.label.Parameters=Parametri
+net.label.Parts=Deli
+net.label.Source=Izvor
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Ponovno pošlji
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Onemogoči predpomnenje v brskalniku
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Prikaži paint dogodke
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Prikaži BFCache odgovore
+net.option.tip.Show_BFCache_Responses=Prikazani bodo tudi odgovori iz nazaj-naprej medpomnilnika
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Prekini ob naslednji
+script.Disable_Break_On_Next=Onemogoči prelom ob naslednjem
+ShowHttpHeaders=Prikaži glave HTTP
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S zahteva;%1$S zahteve
+FromCache=iz predpomnilnika
+StopLoading=Prekini nalaganje
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(zelo veliko podatkov)
+ShowComputedStyle=Prikaži izračunan slog
+StyleGroup-text=Tekst
+StyleGroup-background=Ozadje
+StyleGroup-box=Box model
+StyleGroup-layout=ureditev
+StyleGroup-other=Drugo
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Kopiraj barvo
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Kopiraj mesto slike
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Odpri sliko v novem zavihku
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Prezri sklad orodne vrstice
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Naloži originalno izvorno kodo
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Kopiraj deklaracijo pravil
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Kopiraj deklaracijo stila
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Napaka;%1$S Napake
+moduleManager.title=%S panel je onemogočen
+moduleManager.desc3=Uporabi kontekstni menu Firebug ikone v statusni vrstici za o(ne)mogočanje vseh panelov. Nadzor posameznih panelov pa opravi v zavihkih panela:
+moduleManager.Enable=Omogoči
+Suspend_Firebug=Začasno prekini Firebug
+Resume_Firebug=Ponovno zaženi Firebug
+Reset_Panels_To_Disabled=Onemogoči panele
+Open_Console=Odpri konzolo
+Open_Console_Tooltip=Odpri sledilno konzolo za Firebug.
+Scope_Chain=Veriga obsega
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=Z
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Kliči
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Okno
+Logs=Log datoteke
+Options=Možnosti
+Copy_Stack=Kopiraj sklad
+Copy Exception=Kopiraj izjemo
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blokirano
+requestinfo.Resolving=DNS poizvedba
+requestinfo.Connecting=Povezujem
+requestinfo.Sending=Pošiljam
+requestinfo.Waiting=Čakam
+requestinfo.Receiving=Prejemam
+requestinfo.ContentLoad=\'DOMContentLoaded\' (dogodek)
+requestinfo.WindowLoad=\'load\' (dogodek)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Začetni čas zahtevka od začetka
+requestinfo.phases.label=Začetni in pretečeni čas faze zahtev, glede na začetek zahteve:
+requestinfo.timings.label=Časovnik dogodka glede na začetek zahteve:
+search.Firebug_Search=Firebug iskanje
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Naslednji
+search.tip.Next=Search for the next match
+search.Previous=Prejšnji
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Razlikuj velike/male črke
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Velike/male črke nepomembne
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Več datotek
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Uporabi splošno deklaracijo
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS selektor
+search.net.Headers=Glave
+search.net.Parameters=Parametri
+search.net.Response_Bodies=Vsebina odgovorov
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Vztrajaj
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Prikaži vse zapise v dnevniku
+firebug.console.Errors=Napake
+firebug.console.Filter_by_Errors=Filtriraj po napakah
+firebug.console.Warnings=Opozorila
+firebug.console.Filter_by_Warnings=Filtriraj po opozorilih
+firebug.console.Info=Podrobnosti
+firebug.console.Filter_by_Info=Filtriraj po podrobnostih
+firebug.console.Debug_Info=Info. razhroščevalnika
+firebug.console.Filter_by_Debug_Info=Filtriraj po info. razhroščevalnika
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Odpri Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Skrij Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Omogoči vse panele
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Onemogoči vse panele
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Uredi bližnjice
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Možnosti
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Omogoči izboljšave za slabovidne
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Ponastavi vse Firebug nastavitve
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug na spletu
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Prikaži števec napak
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Velikost pisave
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Povečaj pisavo
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Pomanjšaj pisavo
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Normalna pisava
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Firebugova spletna stran...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Dokumentacija...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Bližnice s tipkovnico...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Pogovorna skupina...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Sledilnik napak...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Prispevki...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=O razširitvi...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Išči
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Ponovno vnesi ukaz
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Preklopi preiskovanje
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Preklopi okno s hitrimi informacijami
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Preklopi profiliranje
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Fokusiraj ukazno vrstico
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Fokusiraj Firebug iskanje
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Fokusiraj nadzorni urejevalnik
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Fokusiraj lokacijo
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Naslednji objekt
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Prejšnji objekt
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Prilagodi Firebug bližnjice
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Odpri Firebug v novem oknu
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Preklopi na levi Firebug panel
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Preklopi na desni Firebug panel
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Odpri Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Prejšnji Firebug zavihek
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Počisti konzolo
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Odpri sledilno konzolo
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Nazaj
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Naprej
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Povečaj velikost pisave
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Pomanjšaj velikost pisave
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normalna velikost pisave
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Izbira panela
+customizeShortcuts=Tipke bližnjic
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=panelna orodja
+a11y.labels.firebug_panels=Firebug paneli
+a11y.labels.firebug_side_panels=Firebug drsni paneli
+a11y.labels.firebug_window=firebug okno
+a11y.labels.firebug_status=firebug status
+a11y.labels.reset=ponastavi
+a11y.labels.reset_shortcut=ponastavi bližnjico %S
+aria.labels.inactive_panel=neaktiven panel
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=zapiši vrstice v dnevnik
+a11y.labels.call_stack=prikliči sklad
+a11y.labels.document_structure=struktura dokumenta
+a11y.labels.title_panel=panel %S
+a11y.labels.title_side_panel=stranski panel %S
+a11y.labels.cached=predpomnjeno
+aria.labels.stack_trace=sledi skladu
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=rob
+a11y.layout.margin=razmik
+a11y.layout.position=položaj
+a11y.layout.position_top=zgornji položaj
+a11y.layout.position_right=desni položaj
+a11y.layout.position_bottom=spodnji položaj
+a11y.layout.position_left=levi položaj
+a11y.layout.margin_top=razmik zgoraj
+a11y.layout.margin_right=razmik desno
+a11y.layout.margin_bottom=razmik spodaj
+a11y.layout.margin_left=razmik levo
+a11y.layout.border_top=rob zgoraj
+a11y.layout.border_right=rob desno
+a11y.layout.border_bottom=rob spodaj
+a11y.layout.border_left=rob levo
+a11y.layout.padding_top=odmik zgoraj
+a11y.layout.padding_right=odmik desno
+a11y.layout.padding_bottom=odmik spodaj
+a11y.layout.padding_left=odmik levo
+a11y.layout.top=zgoraj
+a11y.layout.right=desno
+a11y.layout.bottom=spodaj
+a11y.layout.left=levo
+a11y.layout.width=širina
+a11y.layout.height=višina
+a11y.layout.size=velikost
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=mere-okna
+a11y.layout.clientBoundingRect=objemajoči okvir
+a11y.descriptions.press_enter_to_edit_values=pritisnite enter, ki mu sledi tabulator, za urejanje posametnih vrednosti
+a11y.labels.style_rules=stilska pravila
+aria.labels.inherited_style_rules=dedovana stilska pravila
+a11y.labels.computed_styles=izračunani stili
+a11y.labels.dom_properties=DOM lastnosti
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=linijski urejevalnik
+a11y.labels.value_for_attribute_in_element=vrednost %S atributa v %S elementu
+a11y.labels.attribute_for_element=atribut za element %S
+a11y.labels.text_contents_for_element=tekstovna vsebina za element %S
+a11y.labels.defined_in_file=določeno v %S
+a11y.labels.declarations_for_selector=stilska deklaracija za \"%S\" selektor
+a11y.labels.property_for_selector=CSS lastnost za selektor: %S
+a11y.labels.value_property_in_selector=%S vrednost za selektor %S
+a11y.labels.css_selector=CSS selektor
+a11y.labels.source_code_for_file=izvorna koda za datoteko %S
+a11y.labels.press_enter_to_add_new_watch_expression=pritisnite enter za dodajanje novega watch izraza
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=prepisano
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=vsebuje pogojno točko preloma
+a11y.updates.has_disabled_break_point=je onemogočil prelomne točke
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Skripta prekinjana v vrstici %S v %S, datoteka %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=našel sem ujemanje za %S v %S vrsticah dnevnika
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=našel sem ujemanje za %S v vrstici %S datoteke %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=našel sem ujemanje za %S v elementu %S pri poti %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=našel sem ujemanje za %S v atributu %S=%S elementa %S pri poti %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=našel sem ujemanje za %S v vsebini: %S elementa %S pri poti %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=našel sem ujemanje za %S v selektorju %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=najdeno ujemanje za \"%S\" v deklaraciji stila %S v selektorju %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=našel sem ujemanje za %S v DOM lastnosti %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=našel sem ujemanje za \"%S\" v %S, %S:%S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=našel sem ujemanje za %S v vrstici povzetka omrežja: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=nisem našel ujemanj za \"%S\"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Ste prepričani, da želite ponastaviti vse nastavitve na privzete?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Obstoječi CSS popravki bodo zavrženi.\\\\nSte prepričani, da želite urediti izvorno kodo?
+# Console messages
+warning.Console_must_be_enabled=Konzola mora biti omogočena
+warning.Command_line_blocked?=Ukazna vrstica blokirana?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Ponovno naloži za aktiviranje konzolnega okna
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Ponovno naloži stran za pridobitev izvorne kode za
+message.The_resource_from_this_URL_is_not_text=Vir na tem URL naslovu ni tekst
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Pojdi nazaj na ta panel
+firebug.history.Stay_on_this_panel=Ostani na tem panelu
+firebug.history.Go_forward_to_this_panel=Pojdi naprej na ta panel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Nazaj
+firebug.history.Go_forward=Naprej
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Skriptni panel ni bil aktiven med nalaganjem strani
+script.suggestion.inactive_during_page_load2=<a>Ponovno naloži</a> za ogled vseh virov
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript je onemogočen
+script.suggestion.javascript_not_enabled=Poglej Firefox > Orodja > Možnosti > Vsebina > Omogoči Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Omogoči Javascript in osveži
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Vse skripte so bile filtrirane
+script.suggestion.all_scripts_filtered=Poglej nastavitve filtriranja skript orodni vrstici ali \"Prikaži možnosti chrome izvorov\"
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=Ni Javascript kode na tej strani
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Razhroščevalnik je že aktiven
+script.suggestion.debugger_active=Razhroščevalnik je trenutno ustavljen na prelomni točki na drugi strani.
+script.button.Go_to_that_page=Pojdi na to stran
+script.warning.debugger_not_activated=Razhroščevalnik ni aktiviran
+script.suggestion.debugger_not_activated=Razhroščevalnik ni aktiviran
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Zapri
+firebug.View=Pogled
+firebug.Help=Pomoč
+firebug.Run=Zaženi
+firebug.Copy=Kopiraj
+firebug.History=Zgodovina
+firebug.Run_the_entered_command=Izvedi vnesen ukaz
+firebug.Clear_the_Command_Editor=Počisti urejevalec ukazov
+firebug.Copy_the_script_as_a_bookmarklet=Kopiraj skripto kot zaznamek
+firebug.Insert_a_previously_entered_command=Vstavi predhodno vnešen ukaz
+firebug.AlwaysOpenInWindow=Vedno odpri v novem oknu
+firebug.OpenWith=Odpri z urejevalnikom
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Strani...
+firebug.Configure_Editors=Nastavi urejevalnike
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Zaženi do te vrstice
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Preglej
+firebug.InspectElement=Preglej Element
+firebug.InspectElementWithFirebug=Preglej element z Firebugom
+firebug.BreakOnErrors=Prekini ob napaki
+firebug.InspectTooltip=Klikni element na strani za pregled
+firebug.EditHTMLTooltip=Uredi to HTML kodo
+firebug.Profile=Profil
+firebug.Clear=Počisti
+firebug.ClearConsole=Počisti konzolo
+firebug.ClearTooltip=Počisti konzolo
+firebug.All=Vse
+firebug.Images=Slike
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Nastavljeni Firebug urejevalniki
+editors.Editor=Urejevalnik
+editors.Executable=Izvršna datoteka
+editors.Launch_Arguments=Zaganjalna stikala
+editors.Add=Dodaj
+editors.Remove=Odstrani
+editors.Change=Spremeni
+editors.Move_Up=Premakni gor
+editors.Close=Zapri
+editors.Browse=Prebrskaj...
+changeEditor.Editor_Configuration=Nastavitve urejevalnika
+changeEditor.Name=Ime:
+changeEditor.Executable=Izvršilna datoteka:
+changeEditor.CmdLine=Argumenti:
+changeEditor.Supplied_arguments=Argumenti, ki jih je posredoval Firebug:
+changeEditor.URL_of_file=URL datoteke (če %url ni prisoten, bo datoteka %file privzeto dodana)
+changeEditor.Path_to_local_file=Pot do krajevne datoteke (ali začasne kopije)
+changeEditor.Line_number=Številka vrstice (če je na voljo)
+changeEditor.Invalid_Application_Path=Neveljavna pot do aplikacije
+changeEditor.Application_does_not_exist=Izbrana aplikacija ne obstaja!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Uredi
+firebug.css.sourceEdit=Uredi izvorno kodo
+firebug.css.sourceEdit.tooltip=Urejanje izvorne kode stilske datoteke, kot jo naloži brskalnik
+firebug.css.liveEdit=Urejanje v živo
+firebug.css.liveEdit.tooltip=Tekstovno polje za urejanje CSS pridobljeno iz brskalnika
+firebug.EditCSSTooltip=Uredi to slogovno predlogo
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Spletna mesta niso pomnjena v načinu Zasebno brskanje
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Prikaži opozorila ob prekinitvah
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=Omogoči/onemogoči opozorila o prelomu v <a>zavihku panelnega menuja</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=S klikom na gumb \"Onemogoči\" boste povozili nastavitve \'razhroščevalca\' z onemogočeno točko preloma.
+firebug.bon.tooltip.disableDebuggerKeyword2=Ustvari onemogočeno točko preloma
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(za uporabo sledeče možnosti mora biti omogočen skriptni panel)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=Ni podrejenih objektov
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=več
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S objekt v Shrambi;%1$S objektov v Shrambi
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Lastnosti objekta
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(brez zaključkov)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=URL je bil najverjetneje preklican z uporabo metode revokeObjectURL.
+firebug.failedToPreviewImageURL=Napaka pri nalaganju danega URLja.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Spominski profiler zagnan
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objekti dodani med profiliranjem
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Rezultati spominskega profilerja
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Celotna seja
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/sr/cookies.properties b/locale/sr/cookies.properties
index 66695d4..ec60718 100644
--- a/locale/sr/cookies.properties
+++ b/locale/sr/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Session
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Accept Cookies From Sites
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Clear cookies when denying
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cut
-cookies.Copy=Copy
-cookies.CopyAll=Copy All
-cookies.Paste=Paste
-cookies.Delete=Delete
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Edit
-cookies.Accept=Accept
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reset Header
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
-cookies.ExceptionsTitle=Exceptions - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support for Cookie Monitoring
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=Disable Cookies panel for %S
-cookies.Permissions=Enable or Disable Cookies panel
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=System Pages
-cookies.LocalFiles=Local Files
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Do you want to remove all cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remove all cookies in the list.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Create a new cookie for %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Value
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Manage cookie permissions for %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=All cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejected:
-cookies.console.nocookiesreceived=No cookies received
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=deleted
-cookies.console.added=added
-cookies.console.changed=changed
-cookies.console.cleared=cleared
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domain
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Secure
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Value
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Default (Accept session cookies)
-cookies.default.thirdPartySession=Default (Accept session cookies)
-cookies.default.thirdParty=Default (Accept cookies)
-cookies.default.allow=Default (Accept cookies)
-cookies.default.deny=Default (Deny cookies)
-cookies.default.warn=Default (Warn before accepting cookie)
-cookies.host.session=Accept session cookies from %S
-cookies.host.accept=Accept cookies from %S
-cookies.host.reject=Deny cookies from %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie name is not valid.
-cookies.edit.invalidhost=Cookie host is not valid.
-cookies.edit.invalidpath=Cookie path is not valid.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Name
-cookies.header.value=Value
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domain
-cookies.header.size=Size
-cookies.header.path=Path
-cookies.header.expires=Expires
-cookies.header.security=Security
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Name of the cookie
-cookies.header.value.tooltip=Value stored for the cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domain that has stored the cookie
-cookies.header.size.tooltip=Size of the stored cookie
-cookies.header.path.tooltip=Directory where the cookie is active
-cookies.header.expires.tooltip=Expiration date for the cookie
-cookies.header.security.tooltip=Shows whether it is a secure cookie or not
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Received Cookies
-cookies.netinfo.Sent_Cookies=Sent Cookies
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Path Filter
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Export All Cookies
-cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
-cookies.export.Export_For_Site=Export Cookies For This Site
-cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Remove Cookies
-cookies.Create=Create Cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Tools
-cookies.ToolsTooltip=Tools
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Show All Cookies
-cookies.ViewAllTooltip=Open the built-in Cookie Manager
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Web Sites Permissions
-cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filter
-cookies.FilterTooltip=Use given options to filter the cookie list.
-cookies.filter.byPath=Filter Cookies By Current Path
-cookies.filter.byPathTooltip=Show only cookies that match the current path.
-cookies.filter.showRejectedCookies=Show Rejected Cookies
-cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Edit Cookie
-cookies.edit.name.label=Name:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Path:
-cookies.edit.expire.label=Expires:
-cookies.edit.value.label=Value:
-cookies.edit.secure.label=Secure Cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Session
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Accept Cookies From Sites
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Clear cookies when denying
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cut
+cookies.Copy=Copy
+cookies.CopyAll=Copy All
+cookies.Paste=Paste
+cookies.Delete=Delete
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Edit
+cookies.Accept=Accept
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reset Header
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
+cookies.ExceptionsTitle=Exceptions - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support for Cookie Monitoring
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=Disable Cookies panel for %S
+cookies.Permissions=Enable or Disable Cookies panel
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=System Pages
+cookies.LocalFiles=Local Files
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Do you want to remove all cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remove all cookies in the list.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Create a new cookie for %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Value
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Manage cookie permissions for %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=All cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejected:
+cookies.console.nocookiesreceived=No cookies received
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=deleted
+cookies.console.added=added
+cookies.console.changed=changed
+cookies.console.cleared=cleared
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domain
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Secure
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Value
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Default (Accept session cookies)
+cookies.default.thirdPartySession=Default (Accept session cookies)
+cookies.default.thirdParty=Default (Accept cookies)
+cookies.default.allow=Default (Accept cookies)
+cookies.default.deny=Default (Deny cookies)
+cookies.default.warn=Default (Warn before accepting cookie)
+cookies.host.session=Accept session cookies from %S
+cookies.host.accept=Accept cookies from %S
+cookies.host.reject=Deny cookies from %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie name is not valid.
+cookies.edit.invalidhost=Cookie host is not valid.
+cookies.edit.invalidpath=Cookie path is not valid.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Name
+cookies.header.value=Value
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domain
+cookies.header.size=Size
+cookies.header.path=Path
+cookies.header.expires=Expires
+cookies.header.security=Security
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Name of the cookie
+cookies.header.value.tooltip=Value stored for the cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domain that has stored the cookie
+cookies.header.size.tooltip=Size of the stored cookie
+cookies.header.path.tooltip=Directory where the cookie is active
+cookies.header.expires.tooltip=Expiration date for the cookie
+cookies.header.security.tooltip=Shows whether it is a secure cookie or not
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Received Cookies
+cookies.netinfo.Sent_Cookies=Sent Cookies
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Path Filter
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Export All Cookies
+cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
+cookies.export.Export_For_Site=Export Cookies For This Site
+cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Remove Cookies
+cookies.Create=Create Cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Tools
+cookies.ToolsTooltip=Tools
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Show All Cookies
+cookies.ViewAllTooltip=Open the built-in Cookie Manager
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Web Sites Permissions
+cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filter
+cookies.FilterTooltip=Use given options to filter the cookie list.
+cookies.filter.byPath=Filter Cookies By Current Path
+cookies.filter.byPathTooltip=Show only cookies that match the current path.
+cookies.filter.showRejectedCookies=Show Rejected Cookies
+cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Edit Cookie
+cookies.edit.name.label=Name:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Path:
+cookies.edit.expire.label=Expires:
+cookies.edit.value.label=Value:
+cookies.edit.secure.label=Secure Cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/sr/firebug-amo.properties b/locale/sr/firebug-amo.properties
index 961523a..2b6a088 100644
--- a/locale/sr/firebug-amo.properties
+++ b/locale/sr/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Фајербаг се интегрише у Фајерфокс, додајући богате алатке за програмирање, које су вам на дохват руке док прегледате. Можете да уређујете, испитујете грешке и нагледате CSS, HTML и JavaScript на било којој страници уживо...\\n\\nФајербаг 1.6 захтева Фајерфокс 3.6 или новији.
-firebug.amo.description=Фајербаг се интегрише у Фајерфокс, додајући богате алатке за програмирање, које су вам на дохват руке док прегледате. Можете да уређујете, испитујете грешке и нагледате CSS, HTML и JavaScript на било којој страници уживо...\\n\\nПосетите Фајербагову страницу да бисте видели документацију, снимке керана и форуме за распраљање: http://getfirebug.com
-firebug.amo.developer.comments=Ако наиђете на неке проблеме, прочитајте ЧПП о Фајербагу.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Фајербаг се интегрише у Фајерфокс, додајући богате алатке за програмирање, које су вам на дохват руке док прегледате. Можете да уређујете, испитујете грешке и нагледате CSS, HTML и JavaScript на било којој страници уживо...\\n\\nФајербаг 1.6 захтева Фајерфокс 3.6 или новији.
+firebug.amo.description=Фајербаг се интегрише у Фајерфокс, додајући богате алатке за програмирање, које су вам на дохват руке док прегледате. Можете да уређујете, испитујете грешке и нагледате CSS, HTML и JavaScript на било којој страници уживо...\\n\\nПосетите Фајербагову страницу да бисте видели документацију, снимке керана и форуме за распраљање: http://getfirebug.com
+firebug.amo.developer.comments=Ако наиђете на неке проблеме, прочитајте ЧПП о Фајербагу.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/sr/firebug-tracing.properties b/locale/sr/firebug-tracing.properties
index b98172c..66712e1 100644
--- a/locale/sr/firebug-tracing.properties
+++ b/locale/sr/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Отвори Фајербагово праћење
-Always_Open_Firebug_Tracing=Увек отвори Фајербагово праћење
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Праћење
-tracing.Show_Scope_Variables=Прикажи обим променљиве
-tracing.Show_Time=Прикажи време
-tracing.tab.Stack=Гомила
-tracing.tab.Exception=Изузетак
-tracing.tab.Properties=Својства
-tracing.tab.Scope=Обим
-tracing.tab.Response=Одговор
-tracing.tab.Source=Извор
-tracing.tab.Interfaces=Сучеља
-tracing.tab.Object=Објекат
-tracing.tab.Event=Догађај
-tracing.cmd.Clear=Очисти
-tracing.cmd.tip.Clear=Уклони све поруке
-tracing.cmd.Find=Пронађи
-tracing.cmd.tip.Find=Пронађи текст
-tracing.cmd.Bookmark=Забелешка
-tracing.cmd.tip.Bookmark=Уметни забелешку
-tracing.cmd.Restart=Поново покрени Фајерфокс
-tracing.cmd.tip.Restart=Поново покрени Фајерфокс
-tracing.cmd.Exit=Изађи из Фајерфокса
-tracing.cmd.tip.Exit=Изађи из Фајерфокса
-tracing.cmd.Save=Сачувај у датотеку
-tracing.cmd.tip.Save=Сачувај записе у датотеку
-tracing.cmd.Load=Учитај из датотеке
-tracing.cmd.tip.Load=Учитај запис из датотеке
-tracing.cmd.Expand_All=Рашири све
-tracing.cmd.Collapse_All=Скупи све
-tracing.cmd.Tools=Алатке
-tracing.cmd.tip.Tools=Алатке
-tracing.cmd.Clear_Browser_Cache=Очисти кеш прегледача
-tracing.cmd.tip.Clear_Browser_Cache=Очисти кеш прегледача
-tracing.cmd.Force_Garbage_Collector=Присили чистач смећа
-tracing.cmd.tip.Force_Garbage_Collector=Присили чистач смећа
-tracing.cmd.Open_Profile_Directory=Отвори директоријум профила
-tracing.cmd.tip.Open_Profile_Directory=Отвори директоријум профила
-tracing.option.A11Y_Description=Проблеми са приступачности
-tracing.option.ACTIVATION_Description=Активирање Фајербага
-tracing.option.ACTIVITYOBSERVER_Description=Фајербагов посматрач активности
-tracing.option.ANNOTATIONS_Description=Фајербагова прибелешка о страници
-tracing.option.BP_Description=Тачке прелома
-tracing.option.CACHE_Description=Кеш извора
-tracing.option.COMMANDLINE_Description=Командра трака и њен искачући прозор
-tracing.option.COMPILATION_UNITS_Description=Јединице састављања скрипте
-tracing.option.CONSOLE_Description=Табла конзоле
-tracing.option.CSS_Description=CSS рашчлањивање
-tracing.option.DISPATCH_Description=Event dispatching
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate creation
-tracing.option.EDITOR_Description=Inline Editor & Autocompleter
-tracing.option.ERRORLOG_Description=Евиденција грешака у JS, CSS, XML итд.
-tracing.option.ERRORS_Description=Унутрашње Фајербагове грешке
-tracing.option.EVAL_Description=Процена скрипте
-tracing.option.FBS_BP_Description=Преломне тачке Фајербагове услуге
-tracing.option.FBS_CREATION_Description=Прављење скрипте Фајербагове услуге
-tracing.option.FBS_ERRORS_Description=Грешке Фајербагове услуге
-tracing.option.FBS_FINDDEBUGGER_Description=Модул за проначажење и отклањање грешака у Фајербаговој услуги
-tracing.option.FBS_FUNCTION_Description=Функција Фајербагове услуге
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
-tracing.option.FBS_SRCUNITS_Description=Firebug service source units
-tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
-tracing.option.FUNCTION_NAMES_Description=JavaScript function names
-tracing.option.HISTORY_Description=Firebug Navigation History
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP request observer
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Покретање Фајербага
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON прегледач
-tracing.option.LINETABLE_Description=Script line table
-tracing.option.LOCALE_Description=Локализација
-tracing.option.LOCATIONS_Description=Локације извора
-tracing.option.NET_Description=Net табла
-tracing.option.NET_EVENTS_Description=Мрежни догађаји
-tracing.option.OPTIONS_Description=Подешавања Фајербага
-tracing.option.PANELS_Description=Табле
-tracing.option.SHORTCUTS_Description=Пречице на тастатури
-tracing.option.SOURCEFILES_Description=JavaScript изворне датотеке
-tracing.option.SPY_Description=XMLHttpRequests посматрач
-tracing.option.STACK_Description=JavaScript call stack
-tracing.option.STORAGE_Description=Складиште подешавања
-tracing.option.SVGVIEWER_Description=SVG прегледач
-tracing.option.FONTS_Description=Информације о фонту и прегледач фонта
-tracing.option.TOOLTIP_Description=Опис Старт дугмета
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging корисничко сучеље
-tracing.option.WINDOWS_Description=Посматрање прозора и језичака фајербага
-tracing.option.XMLVIEWER_Description=XML прегледач
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Отвори Фајербагово праћење
+Always_Open_Firebug_Tracing=Увек отвори Фајербагово праћење
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Праћење
+tracing.Show_Scope_Variables=Прикажи обим променљиве
+tracing.Show_Time=Прикажи време
+tracing.tab.Stack=Гомила
+tracing.tab.Exception=Изузетак
+tracing.tab.Properties=Својства
+tracing.tab.Scope=Обим
+tracing.tab.Response=Одговор
+tracing.tab.Source=Извор
+tracing.tab.Interfaces=Сучеља
+tracing.tab.Object=Објекат
+tracing.tab.Event=Догађај
+tracing.cmd.Clear=Очисти
+tracing.cmd.tip.Clear=Уклони све поруке
+tracing.cmd.Find=Пронађи
+tracing.cmd.tip.Find=Пронађи текст
+tracing.cmd.Bookmark=Забелешка
+tracing.cmd.tip.Bookmark=Уметни забелешку
+tracing.cmd.Restart=Поново покрени Фајерфокс
+tracing.cmd.tip.Restart=Поново покрени Фајерфокс
+tracing.cmd.Exit=Изађи из Фајерфокса
+tracing.cmd.tip.Exit=Изађи из Фајерфокса
+tracing.cmd.Save=Сачувај у датотеку
+tracing.cmd.tip.Save=Сачувај записе у датотеку
+tracing.cmd.Load=Учитај из датотеке
+tracing.cmd.tip.Load=Учитај запис из датотеке
+tracing.cmd.Expand_All=Рашири све
+tracing.cmd.Collapse_All=Скупи све
+tracing.cmd.Tools=Алатке
+tracing.cmd.tip.Tools=Алатке
+tracing.cmd.Clear_Browser_Cache=Очисти кеш прегледача
+tracing.cmd.tip.Clear_Browser_Cache=Очисти кеш прегледача
+tracing.cmd.Force_Garbage_Collector=Присили чистач смећа
+tracing.cmd.tip.Force_Garbage_Collector=Присили чистач смећа
+tracing.cmd.Open_Profile_Directory=Отвори директоријум профила
+tracing.cmd.tip.Open_Profile_Directory=Отвори директоријум профила
+tracing.option.A11Y_Description=Проблеми са приступачности
+tracing.option.ACTIVATION_Description=Активирање Фајербага
+tracing.option.ACTIVITYOBSERVER_Description=Фајербагов посматрач активности
+tracing.option.ANNOTATIONS_Description=Фајербагова прибелешка о страници
+tracing.option.BP_Description=Тачке прелома
+tracing.option.CACHE_Description=Кеш извора
+tracing.option.COMMANDLINE_Description=Командра трака и њен искачући прозор
+tracing.option.COMPILATION_UNITS_Description=Јединице састављања скрипте
+tracing.option.CONSOLE_Description=Табла конзоле
+tracing.option.CSS_Description=CSS рашчлањивање
+tracing.option.DISPATCH_Description=Event dispatching
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate creation
+tracing.option.EDITOR_Description=Inline Editor & Autocompleter
+tracing.option.ERRORLOG_Description=Евиденција грешака у JS, CSS, XML итд.
+tracing.option.ERRORS_Description=Унутрашње Фајербагове грешке
+tracing.option.EVAL_Description=Процена скрипте
+tracing.option.FBS_BP_Description=Преломне тачке Фајербагове услуге
+tracing.option.FBS_CREATION_Description=Прављење скрипте Фајербагове услуге
+tracing.option.FBS_ERRORS_Description=Грешке Фајербагове услуге
+tracing.option.FBS_FINDDEBUGGER_Description=Модул за проначажење и отклањање грешака у Фајербаговој услуги
+tracing.option.FBS_FUNCTION_Description=Функција Фајербагове услуге
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
+tracing.option.FBS_SRCUNITS_Description=Firebug service source units
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
+tracing.option.FUNCTION_NAMES_Description=JavaScript function names
+tracing.option.HISTORY_Description=Firebug Navigation History
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request observer
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Покретање Фајербага
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON прегледач
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Локализација
+tracing.option.LOCATIONS_Description=Локације извора
+tracing.option.NET_Description=Net табла
+tracing.option.NET_EVENTS_Description=Мрежни догађаји
+tracing.option.OPTIONS_Description=Подешавања Фајербага
+tracing.option.PANELS_Description=Табле
+tracing.option.SHORTCUTS_Description=Пречице на тастатури
+tracing.option.SOURCEFILES_Description=JavaScript изворне датотеке
+tracing.option.SPY_Description=XMLHttpRequests посматрач
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Складиште подешавања
+tracing.option.SVGVIEWER_Description=SVG прегледач
+tracing.option.FONTS_Description=Информације о фонту и прегледач фонта
+tracing.option.TOOLTIP_Description=Опис Старт дугмета
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging корисничко сучеље
+tracing.option.WINDOWS_Description=Посматрање прозора и језичака фајербага
+tracing.option.XMLVIEWER_Description=XML прегледач
diff --git a/locale/sr/firebug.properties b/locale/sr/firebug.properties
index abf0d8b..178d1ee 100644
--- a/locale/sr/firebug.properties
+++ b/locale/sr/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Фајербаг
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Фајербаг - %S
-# Panel titles
-Panel-console=Конзола
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Net
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Скрипта
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Стил
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Прорачун
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Распоред
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Watch
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Breakpoints
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Stack
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Scopes
-firebug.DetachFirebug=Отвори Фајербаг у новом прозору
-firebug.AttachFirebug=Закачи Фајербаг за прозор прегледача
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=7
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Фајербаг укупно;%1$S Фајербаг(ов)а укупно
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Deactivated
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=У прегледачу
-minimized=Умањено
-enablement.for_all_pages=за све странице
-enablement.on=укључено
-enablement.off=искључено
-enablement.Panel_activation_status=Panel activation status:
-none=Затвори
-Firebug_-_inactive_for_current_website=Фајербаг није активан на тренутној страници
-Activate_Firebug_for_the_current_website=Активирај Фајербаг на тренутној страници
-Minimized=Умањен
-Minimize_Firebug=Умањи Фајербаг
-On_for_all_web_pages=Укључи на свим страницама
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Очисти списак укључивања
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Положај Фајербага
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Опције Фајербага
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Прикажи све табле
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=Прикажи JavaScript грешке
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Прикажи JavaScript упозорења
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Прикажи CSS грешке
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Прикажи Stack Trace са грешкама
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Прикажи XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Прикажи грешке хрома
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Прикажи поруке хрома
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Прикажи спољне грешке
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Прикажи грешке са везом
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Строга упозорења (извођење казне)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Историја наредбе
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Прикажи искачући списак завршеног
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Грешка у наводу
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (линија %S)
-LineAndCol=%S (линија %S, кол %S)
-InstanceLine=%S #%S (линија %S)
-StackItem=%S (%S линија %S)
-SystemItem=<Систем>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(без имена)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Прикажи цео текст
-html.option.tip.Show_Full_Text=Don't crop element contents
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Прикажи размаке
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Прикажи коментаре
-html.option.tip.Show_Comments=Show comment nodes
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Осветли измене
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Рашири промене
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Спуштај промене у приказ
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Прикажи оквир са основним информацијама
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Модел оквира са сенком
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Спуштај у приказ
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Нови атрибут...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Избриши елемент
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Избриши чвор
-html.Delete_Node=Delete the node from the tree
-# Quick Info Box
-quickInfo=Брзе информације
-computedStyle=Израчунати стил
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Прекини приликом мењања
-html.Disable_Break_On_Mutate=Искључи прекидање приликом мењања
-html.label.Break_On_Text_Change=Прекини приликом измене текста
-html.label.HTML_Breakpoints=HTML преломне тачке
-html.label.Break_On_Attribute_Change=Прекини приликом измене атрибута
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Прекини приликом додавања или уклањања нижег нивоа
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Прекини приликом уклањања елемента
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Рашири/скупи све
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Прекидање приликом мењања својства
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Онемогући прекидање приликом мењања својства
-dom.label.DOM_Breakpoints=DOM преломне тачке
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Уреди атрибут „%S\"”...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Избриши атрибут „%S\"”
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Наслеђено од
-SothinkWarning=Додатак Sothink SWF Catcher не дозвољава Фајербагу да ради исправно.<br><br>Више о овоме можете да прочитате у <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">ЧПП о Фајербагу</a> for help.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=Фијуче ветар у шибљу, леди пасаже и куће иза њих и гунђа у оџацима. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=Нема правила. Можете да га <a>направите</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=Овај елемент нема правила стила. Можете да га <a>направите</a>.
-EditStyle=Уреди стил елемента...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Ново правило...
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Ново својство...
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=Уреди „%S”...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=Искључи „%S”
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=Обриши „%S”
-css.tip.Delete_Prop=Delete the property "%S"
-# Console context menu labels.
-BreakOnThisError=Прекини приликом ове грешке
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Прекини приликом свих грешака
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Прати Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Користи последњу линију извора за eval() називе
-UseMD5ForEvalName=Користи MD5 за eval() називе
-# Breakpoints side panel
-Breakpoints=Преломне тачке
-ErrorBreakpoints=Преломне тачке грешака
-LoggedFunctions=Устаљене функције
-EnableAllBreakpoints=Укључи све преломне тачке
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Искључи све преломне тачке
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Уклони све преломне тачке
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Ова преломна тачка ће стати само ако је следећи услов испуњен:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Уклони тачку прелома
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Онемогући тачку прелома
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Омогући тачку прелома
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Настави
-script.balloon.Disable=Онемогући
-ScriptsFilterStatic=Прикажи статичне скрипте
-ScriptsFilterEval=Прикажи статичне и евал скрипте
-ScriptsFilterEvent=Прикажи статичне и скрипте догађаја
-ScriptsFilterAll=Прикажи статичне, евал и скрипте догађаја
-ScriptsFilterStaticShort=статична
-ScriptsFilterEvalShort=евали
-ScriptsFilterEventShort=догађаји
-ScriptsFilterAllShort=све
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Развиј све
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Скупи све
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Прикажи својства које је одредио корисник
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Прикажи функције које је одредио корисник
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Прикажи DOM својства
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Прикажи DOM функције
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Прикажи DOM константе
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Прикажи Inline Event Handlers
-ShowInlineEventHandlersTooltip=Прикажи доступне Inline Event Handlers који нису повезани са овом функцијом.
-ShowOwnProperties=Прикажи само сопствена својства
-ShowOwnPropertiesTooltip=Не приказуј prototype chain
-ShowEnumerableProperties=Прикажи само бројива својства
-ShowEnumerablePropertiesTooltip=Не приказуј небројива својства
-NoMembersWarning=Овај објекат нема својстава.
-NewWatch=Нови watch израз...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Додај Watch
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Копирај извор
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Користи #<број> да би ишао на линију
-CopyValue=Копирај вредност
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Копирај назив
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Копирај путању
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Ново својство...
-EditProperty=Уреди својство...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Уреди променљиву...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Уреди Watch...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Обриши својство
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Обриши Watch
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Постави преломну тачку
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Уреди стање преломне тачке...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=Преломне тачке нису постављене.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Прикажи само примењене стилове
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Прикажи CSS агент корисника
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Прошири Shorthand својства
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Поређај по азбуци
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Прикажи стилове специфичне за Мозилу
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Притисните било које дугме да бисте филтрирали списак
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=размак
-LayoutBorder=ивица
-LayoutMargin=маргина
-LayoutPosition=положај
-LayoutAdjacent=суседно
-position=положај
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Прикажи лењир и линије
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Net panel
-Loading=Учитавање...
-Headers=Заглавља
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Поништи загавља
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=Адреса (URL)
-net.header.URL_Tooltip=Захтевана адреса (URL) и коришћени HTTP метод.
-net.header.Status=Статус
-net.header.Status_Tooltip=Статус примљеног одговора.
-net.header.Domain=Домен
-net.header.Domain_Tooltip=Домен извршеног захтева.
-net.header.Size=Величина
-net.header.Size_Tooltip=Величина примљеног одговора.
-net.header.Timeline=Хронологија
-net.header.Timeline_Tooltip=Информације о детаљној хронологији захтева одговора повратног путовања.
-net.header.Local_IP=Локални IP
-net.header.Local_IP_Tooltip=Локална IP адреса и број излаза на који је захтев послат
-net.header.Remote_IP=Даљински IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Протокол
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=XHR преломне тачке
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Прекини приликом XHR-а
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=погледај извор
-net.headers.pretty_print=лепа штампа
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=медији
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Post
-Put=Put
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Response
-URLParameters=Params
-Cache=Cache
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Поређај по кључу
-jsonviewer.do_not_sort=Не ређај
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Request Headers
-ResponseHeaders=Response Headers
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Достигнуто је Фајербагово ограничење у вођењу евиденције. %1$S унос(а) није приказано.
-LimitPrefs=Подешавања
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Да бисте променили ограничење, измените: %S
-Refresh=Освежи
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Отвори у новом језичку
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Отвори Response у новом језичку
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Профил
-ProfilerStarted=Профилер је покренут. Поново отворите „Профил” да бисте видели његов дневник.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sмс, %2$S позив);(%1$Sмс, %2$S позива)
-NothingToProfile=Профил нема активности.
-PercentTooltip=Постотак времена утрошеног на ову функцију.
-CallsHeaderTooltip=Број позивања ове фунције.
-OwnTimeHeaderTooltip=Време утрошено на функцију, без угнежђених позива.
-TimeHeaderTooltip=Време утрошено на функцију, укључујући угнежђене позиве.
-AvgHeaderTooltip=Просечно време, укључујући позивања функције.
-MinHeaderTooltip=Најмање време, укључујући позивања функције.
-MaxHeaderTooltip=Највише времена, бет позивања функције.
-ProfileButton.Enabled.Tooltip=Време извршења JavaScript профила.
-ProfileButton.Disabled.Tooltip=Време извршавања JavaScript профила (табла са скриптама мора да буде укључена).
-Function=Функција
-Percent=Постотак
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Позивања
-OwnTime=Сопствено време
-Time=Време
-Avg=просечно
-Min=Најмање
-Max=Највише
-File=Датотека
-# Support for standard actions.
-Copy=Копирај
-Cut=Исеци
-Remove=Уклони
-Delete=Delete
-Paste=Налепи
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Копирај innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Копирај XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Копирај CSS Path
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Копирај место
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Копирај место са параметрима
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Копирај Request Headers
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Копирај Response Headers
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Копирај Response Body
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Копирај грешку
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Копирај функцију
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Прикажи позивања на „%S”
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Дневник догађаја
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Укључено
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Фајербагова конзола не подржава „%S”
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Фајербагова линија за наредбе не подржава „%S”
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Искључи заустављање приликом свих грешака
-console.Break_On_All_Errors=Заустави приликом свих грешака
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Заустави приликом појаве ове грешке
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript је укључен у вашим подешавањима Фајерфокса. Ако желите да користите конзолу, омогућите је преко Алатке > Опције > Садржај> Укључи JavaScript
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Фајербагова линија наредби је онемогућена на XML страницама. Можете да <a>пређете наHTML</a> да бисте је омогућили.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Response Body
-net.sizeinfo.Post_Body=Post Body
-net.sizeinfo.Total_Sent=Укупно послато
-net.sizeinfo.Total_Received=Укупо примљено
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Net табла ја активирана. Сви захтеви који долазе док је трака неактивна неће бити приказани.
-net.responseSizeLimitMessage=Достигнуто је Фајербагово ограничење величине одговора. Кликните <a>овде</a> да бисте отворили све одговоре у новом Фајерфоксовом језичку.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Достигнуто је Фајербагово ограничење величине одговора.
-net.Break_On_XHR=Прекини приликом XHR
-net.label.Parameters=Параметри
-net.label.Parts=Делови
-net.label.Source=Изворни кôд
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Искључи кеш прегледача
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Прикажи Paint догађања
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Заустави на следећем
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Прикажи HTTP заглавља
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S захтев;%1$S захтев(а)
-FromCache=из кеша
-StopLoading=Заустави учитавање
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(огромни подаци)
-ShowComputedStyle=Прикажи израчунати стил
-StyleGroup-text=Текст
-StyleGroup-background=Позадина
-StyleGroup-box=Модел оквира
-StyleGroup-layout=Изглед
-StyleGroup-other=Остало
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Копирај боју
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Копирај локацију слике
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Отвори слику у новом језичку
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Изостави оквир са алаткама
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Копирај декларацију правила
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Копирај декларацију стила
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S грешка;%1$S грешака
-moduleManager.title=Табла %S је искључена
-moduleManager.desc3=Користите Фајербагову икону у статусној траци да бисте укљулили и искључили све табле. Користите мали мени језичка табле за одвојене табеле управљања:
-moduleManager.Enable=Омогући
-Suspend_Firebug=Паузирај Фајербаг
-Resume_Firebug=Настави Фајербаг
-Reset_Panels_To_Disabled=Искључи све табле
-Open_Console=Отвори конзолу
-Open_Console_Tooltip=Отвори траку за праћење у Фајербагу.
-Scope_Chain=Scope Chain
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=With
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Call
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Window
-Logs=Записи
-Options=Опције
-Copy_Stack=Копирај Stack
-Copy Exception=Копирај изузетак
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blocking
-requestinfo.Resolving=Претрага DNS-а
-requestinfo.Connecting=Повезивање
-requestinfo.Sending=Слање
-requestinfo.Waiting=Чекање
-requestinfo.Receiving=Примање
-requestinfo.ContentLoad=„DOMContentLoaded” (догађај)
-requestinfo.WindowLoad=„load” (догађај)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Претраживање Фајербага
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Даље
-search.tip.Next=Search for the next match
-search.Previous=Назад
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Разликуј мала и велика слова
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Више датотека
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Користи регуларне изразе
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS бирање
-search.net.Headers=Заглавља
-search.net.Parameters=Параметри
-search.net.Response_Bodies=Response Bodies
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persist
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Прикажи све записе
-firebug.console.Errors=Грешке
-firebug.console.Filter_by_Errors=Филтрирање по грешакама
-firebug.console.Warnings=Упозорења
-firebug.console.Filter_by_Warnings=Филтрирање по упозорењима
-firebug.console.Info=Информације
-firebug.console.Filter_by_Info=Филтрирање по информацијама
-firebug.console.Debug_Info=Информације о грешкама
-firebug.console.Filter_by_Debug_Info=Филтрирање по информацијама о грешкама
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Отвори Фајербаг
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Сакриј Фајербаг
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Укључи све табле
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Искључи све табле
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Прилагоди пречице
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Опције
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Укључи побољшања олакшаног приступа
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Врати сва подешавања Фајербага на почетна
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Фајербаг на мрежи
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Прикажи бројач грешака
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Величина текста
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Повећај величину текста
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Умањи величину текста
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Нормална величина текста
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Страница Фајербага...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Документација...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Пречице на тастатури...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Група за расправљање...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Праћење издања...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Доприноси...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=О додатку...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Претрага
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Поново уђи у наредбу
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Пребаци испитивање
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Пребаци оквир са брзим информацијама
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Пребаци Profiling
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Пребаци на траку наредби
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Пребаци на Фајербагову претрагу
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Пребаци на Watch уређивач
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Пребаци на место
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Следећи објекат
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Претходни објекат
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Прилагоди Фајербагове пречице
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Отвори Фајербаг у новом прозору
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Пребаци на леву Фајербагову таблу
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Пребаци на десну Фајербагову таблу
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Отвори Фајербаг
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Претходни језичак Фајербага
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=чисти конзолу
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Отвори конзолу за праћење
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Назад
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Напред
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Повећај величину текста
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Смањи величину текста
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Нормална величина текста
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Изабирач табли
-customizeShortcuts=Додељење пречице у Фајербагу
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=алатке табле
-a11y.labels.firebug_panels=Табле Фајербага
-a11y.labels.firebug_side_panels=Бочне траке Фајербага
-a11y.labels.firebug_window=Прозор Фајербага
-a11y.labels.firebug_status=Статус Фајербага
-a11y.labels.reset=врати почетно
-a11y.labels.reset_shortcut=врати пречицу %S
-aria.labels.inactive_panel=неактивна табла
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=log rows
-a11y.labels.call_stack=call stack
-a11y.labels.document_structure=структура документа
-a11y.labels.title_panel=табла %S
-a11y.labels.title_side_panel=Бочна трака %S
-a11y.labels.cached=кеширано
-aria.labels.stack_trace=stack trace
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=размак
-a11y.layout.border=ивица
-a11y.layout.margin=маргина
-a11y.layout.position=позиција
-a11y.layout.position_top=горња позиција
-a11y.layout.position_right=десна позиција
-a11y.layout.position_bottom=доња позиција
-a11y.layout.position_left=лева позиција
-a11y.layout.margin_top=горња маргина
-a11y.layout.margin_right=десна маргина
-a11y.layout.margin_bottom=доња маргина
-a11y.layout.margin_left=лева маргина
-a11y.layout.border_top=горња ивица
-a11y.layout.border_right=десна ивица
-a11y.layout.border_bottom=доња ивица
-a11y.layout.border_left=лева ивица
-a11y.layout.padding_top=размак горе
-a11y.layout.padding_right=размак десно
-a11y.layout.padding_bottom=размак доле
-a11y.layout.padding_left=размак лево
-a11y.layout.top=врх
-a11y.layout.right=десно
-a11y.layout.bottom=дно
-a11y.layout.left=лево
-a11y.layout.width=ширина
-a11y.layout.height=висина
-a11y.layout.size=величина
-a11y.layout.z-index=z-индекс
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=Притисните ентер, а потом таб да бисте уредили појединачне вредности
-a11y.labels.style_rules=правила стила
-aria.labels.inherited_style_rules=наслеђена правила стила
-a11y.labels.computed_styles=компјутеризовани стилови
-a11y.labels.dom_properties=DOM својства
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=уређивач уживо
-a11y.labels.value_for_attribute_in_element=вредност за атрибут %S у елементу %S
-a11y.labels.attribute_for_element=атрибут за елемент %S
-a11y.labels.text_contents_for_element=текстуални садржај за елемент атрибут %S
-a11y.labels.defined_in_file=одређен у %S
-a11y.labels.declarations_for_selector=објашњења стила одабирача за „%S”
-a11y.labels.property_for_selector=CSS својство за одабирач: %S
-a11y.labels.value_property_in_selector=%S вредност својства за одабирач %S
-a11y.labels.css_selector=CSS одабирач
-a11y.labels.source_code_for_file=изворни кôд за датотеку %S
-a11y.labels.press_enter_to_add_new_watch_expression=притисните ентер да бисте додали нови watch израз
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=занемарен
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=има условну преломну тачку
-a11y.updates.has_disabled_break_point=је искључио преломну тачку
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Скрипта је заустављена на линији %S у %S, датотека %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=пронађено је „%S” у %S редова
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=пронађено је „%S” у линији %S у %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=пронађено је „%S” у елементу %S на путањи %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=пронађено је „%S” у атрибуту %S=%S елемента %S на путањи %S``
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=пронађено је „%S” у текстуалном садржају %S од %S елементу %S на путањи %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=пронађено је „%S” у одабирачу %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=пронађено је „%S” у одредници „%S” у одабирачу стила %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=пронађен резултат за „%S” у DOM својству %S.
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=пронађен резултат за „%S” у %S, %S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=пронађен резултат за „%S” у net summary row: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=нема резултата за „%S”
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Да ли заиста желите да вратите почетна подешавања Фајербага?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=Конзола мора да буде укључена
-warning.Command_line_blocked?=Командна линија блокирана?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Поново учитајте да бисте активирали прозор са конзолом
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=Извор са ове адресе није текст
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Иди назад на ову таблу
-firebug.history.Stay_on_this_panel=Остани на овој табли
-firebug.history.Go_forward_to_this_panel=Иди напред на ову таблу
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Иди назад
-firebug.history.Go_forward=Иди напред
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Табла за скрипте је била неактивна за време учитавања станице
-script.suggestion.inactive_during_page_load2=<a>Поново учитајте</a> да бисте видели све изворе
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript није омогућен
-script.suggestion.javascript_not_enabled=Погледајте Фајерфокс > Опције > Садржај > Омогући Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Омогући Javascript и освежи
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Све скрипте су филтриране
-script.suggestion.all_scripts_filtered=Погледајте подешавања филтера скрипти на траци са алаткама или „Прикажи опцију за извор Chrome-а”
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=на овој страници нема Javascript-а
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Модул за отклањање грешака је већ активан
-script.suggestion.debugger_active=Модул за отклањање грешака је тренутно заустављен на тачки прекида на другој страници
-script.button.Go_to_that_page=Иди на ту страницу
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Фајербаг
-firebug.Close=Затвори
-firebug.View=Приказ
-firebug.Help=Помоћ
-firebug.Run=Покрени
-firebug.Copy=Копирај
-firebug.History=Историја
-firebug.Run_the_entered_command=Покрени унесену наредбу
-firebug.Clear_the_Command_Editor=Очисти уређивач наредби
-firebug.Copy_the_script_as_a_bookmarklet=Копирај скрипту као забелешку
-firebug.Insert_a_previously_entered_command=Уметни претходно унесену наредбу
-firebug.AlwaysOpenInWindow=Увек отварај у новом прозору
-firebug.OpenWith=Отвори помоћу уређивача
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Странице...
-firebug.Configure_Editors=Подеси уређиваче
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Испитај
-firebug.InspectElement=Испитај елемент
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Прекини приликом грешака
-firebug.InspectTooltip=Кликните на елемент на страници да бисте га испитали
-firebug.EditHTMLTooltip=Уреди овај HTML
-firebug.Profile=Профил
-firebug.Clear=Очисти
-firebug.ClearConsole=Очисти конзолу
-firebug.ClearTooltip=Очисти конзолу
-firebug.All=Све
-firebug.Images=Слике
-firebug.Flash=Флеш
-# editors.dtd
-editors.Configured_Firebug_Editors=Подешени уређивачи Фајербага
-editors.Editor=Уређивач
-editors.Executable=Извршна датотека
-editors.Launch_Arguments=Аргументи за покретање
-editors.Add=Додај
-editors.Remove=Уклони
-editors.Change=Промени
-editors.Move_Up=Помери нагоре
-editors.Close=Затвори
-editors.Browse=Потражи...
-changeEditor.Editor_Configuration=Подешавање уређивача
-changeEditor.Name=Назив:
-changeEditor.Executable=Извршна датотека:
-changeEditor.CmdLine=Аргументи:
-changeEditor.Supplied_arguments=Аргументи које пружа фајербаг:
-changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> URL датотеке (ако %url не постоји, %file ће бити додана по подразумеваном)
-changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> Путања до локалне датотеке (или привремене копије)
-changeEditor.Line_number=<label class=\'text-link\'>%line</label> Број линије (ако је доступан)
-changeEditor.Invalid_Application_Path=Неважећа путања апликације
-changeEditor.Application_does_not_exist=наведена апликација не постоји!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Уреди
-firebug.css.sourceEdit=Уређивање изворног кôда
-firebug.css.sourceEdit.tooltip=Поље са текстом уређује извор описа стила како га је прегледач учитао
-firebug.css.liveEdit=Уређивање уживо
-firebug.css.liveEdit.tooltip=Поље са текстом уређује извор описа стила издвојеног из прегледача
-firebug.EditCSSTooltip=Уреди овај стил
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Странице се не памте у поверљивом прегледању
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Прикажи обавештење о прекиду
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=Мпжете да онемогућите или омогућите обавештења прекида у <a>менију језичка табле</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Ако кликнете на дугме „Онемогући”, занемарићете „уклањање грешака” са онемогућеном тачком прелома.
-firebug.bon.tooltip.disableDebuggerKeyword2=Прави онемогућену тачку прелома
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=Нема подређених објеката
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=више
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S ставка у складишту;%1$S ставки у складишту(е)
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Својства објекта
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(нема завршетака)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=URL објекта је највероватније укинут коришћењем revokeObjectURL метода.
-firebug.failedToPreviewImageURL=Није успело учитавање датог URL-а.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Фајербаг
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Фајербаг - %S
+# Panel titles
+Panel-console=Конзола
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Net
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Скрипта
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Стил
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Прорачун
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Распоред
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Watch
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Breakpoints
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Stack
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Scopes
+firebug.DetachFirebug=Отвори Фајербаг у новом прозору
+firebug.AttachFirebug=Закачи Фајербаг за прозор прегледача
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=7
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Фајербаг укупно;%1$S Фајербаг(ов)а укупно
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Deactivated
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=У прегледачу
+minimized=Умањено
+enablement.for_all_pages=за све странице
+enablement.on=укључено
+enablement.off=искључено
+enablement.Panel_activation_status=Panel activation status:
+none=Затвори
+Firebug_-_inactive_for_current_website=Фајербаг није активан на тренутној страници
+Activate_Firebug_for_the_current_website=Активирај Фајербаг на тренутној страници
+Minimized=Умањен
+Minimize_Firebug=Умањи Фајербаг
+On_for_all_web_pages=Укључи на свим страницама
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Очисти списак укључивања
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Положај Фајербага
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Опције Фајербага
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Прикажи све табле
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=Прикажи JavaScript грешке
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Прикажи JavaScript упозорења
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Прикажи CSS грешке
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Прикажи Stack Trace са грешкама
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Прикажи XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Прикажи грешке хрома
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Прикажи поруке хрома
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Прикажи спољне грешке
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Прикажи грешке са везом
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Строга упозорења (извођење казне)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Историја наредбе
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Прикажи искачући списак завршеног
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Грешка у наводу
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (линија %S)
+LineAndCol=%S (линија %S, кол %S)
+InstanceLine=%S #%S (линија %S)
+StackItem=%S (%S линија %S)
+SystemItem=<Систем>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(без имена)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Прикажи цео текст
+html.option.tip.Show_Full_Text=Don't crop element contents
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Прикажи размаке
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Прикажи коментаре
+html.option.tip.Show_Comments=Show comment nodes
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Осветли измене
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Рашири промене
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Спуштај промене у приказ
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Прикажи оквир са основним информацијама
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Модел оквира са сенком
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Спуштај у приказ
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Нови атрибут...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Избриши елемент
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Избриши чвор
+html.Delete_Node=Delete the node from the tree
+# Quick Info Box
+quickInfo=Брзе информације
+computedStyle=Израчунати стил
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Прекини приликом мењања
+html.Disable_Break_On_Mutate=Искључи прекидање приликом мењања
+html.label.Break_On_Text_Change=Прекини приликом измене текста
+html.label.HTML_Breakpoints=HTML преломне тачке
+html.label.Break_On_Attribute_Change=Прекини приликом измене атрибута
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Прекини приликом додавања или уклањања нижег нивоа
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Прекини приликом уклањања елемента
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Рашири/скупи све
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Прекидање приликом мењања својства
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Онемогући прекидање приликом мењања својства
+dom.label.DOM_Breakpoints=DOM преломне тачке
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Уреди атрибут „%S\"”...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Избриши атрибут „%S\"”
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Наслеђено од
+SothinkWarning=Додатак Sothink SWF Catcher не дозвољава Фајербагу да ради исправно.<br><br>Више о овоме можете да прочитате у <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">ЧПП о Фајербагу</a> for help.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=Фијуче ветар у шибљу, леди пасаже и куће иза њих и гунђа у оџацима. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=Нема правила. Можете да га <a>направите</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=Овај елемент нема правила стила. Можете да га <a>направите</a>.
+EditStyle=Уреди стил елемента...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Ново правило...
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Ново својство...
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=Уреди „%S”...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=Искључи „%S”
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=Обриши „%S”
+css.tip.Delete_Prop=Delete the property "%S"
+# Console context menu labels.
+BreakOnThisError=Прекини приликом ове грешке
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Прекини приликом свих грешака
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Прати Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Користи последњу линију извора за eval() називе
+UseMD5ForEvalName=Користи MD5 за eval() називе
+# Breakpoints side panel
+Breakpoints=Преломне тачке
+ErrorBreakpoints=Преломне тачке грешака
+LoggedFunctions=Устаљене функције
+EnableAllBreakpoints=Укључи све преломне тачке
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Искључи све преломне тачке
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Уклони све преломне тачке
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Ова преломна тачка ће стати само ако је следећи услов испуњен:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Уклони тачку прелома
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Онемогући тачку прелома
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Омогући тачку прелома
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Настави
+script.balloon.Disable=Онемогући
+ScriptsFilterStatic=Прикажи статичне скрипте
+ScriptsFilterEval=Прикажи статичне и евал скрипте
+ScriptsFilterEvent=Прикажи статичне и скрипте догађаја
+ScriptsFilterAll=Прикажи статичне, евал и скрипте догађаја
+ScriptsFilterStaticShort=статична
+ScriptsFilterEvalShort=евали
+ScriptsFilterEventShort=догађаји
+ScriptsFilterAllShort=све
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Развиј све
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Скупи све
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Прикажи својства које је одредио корисник
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Прикажи функције које је одредио корисник
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Прикажи DOM својства
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Прикажи DOM функције
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Прикажи DOM константе
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Прикажи Inline Event Handlers
+ShowInlineEventHandlersTooltip=Прикажи доступне Inline Event Handlers који нису повезани са овом функцијом.
+ShowOwnProperties=Прикажи само сопствена својства
+ShowOwnPropertiesTooltip=Не приказуј prototype chain
+ShowEnumerableProperties=Прикажи само бројива својства
+ShowEnumerablePropertiesTooltip=Не приказуј небројива својства
+NoMembersWarning=Овај објекат нема својстава.
+NewWatch=Нови watch израз...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Додај Watch
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Копирај извор
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Користи #<број> да би ишао на линију
+CopyValue=Копирај вредност
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Копирај назив
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Копирај путању
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Ново својство...
+EditProperty=Уреди својство...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Уреди променљиву...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Уреди Watch...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Обриши својство
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Обриши Watch
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Постави преломну тачку
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Уреди стање преломне тачке...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=Преломне тачке нису постављене.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Прикажи само примењене стилове
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Прикажи CSS агент корисника
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Прошири Shorthand својства
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Поређај по азбуци
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Прикажи стилове специфичне за Мозилу
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Притисните било које дугме да бисте филтрирали списак
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=размак
+LayoutBorder=ивица
+LayoutMargin=маргина
+LayoutPosition=положај
+LayoutAdjacent=суседно
+position=положај
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Прикажи лењир и линије
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Net panel
+Loading=Учитавање...
+Headers=Заглавља
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Поништи загавља
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=Адреса (URL)
+net.header.URL_Tooltip=Захтевана адреса (URL) и коришћени HTTP метод.
+net.header.Status=Статус
+net.header.Status_Tooltip=Статус примљеног одговора.
+net.header.Domain=Домен
+net.header.Domain_Tooltip=Домен извршеног захтева.
+net.header.Size=Величина
+net.header.Size_Tooltip=Величина примљеног одговора.
+net.header.Timeline=Хронологија
+net.header.Timeline_Tooltip=Информације о детаљној хронологији захтева одговора повратног путовања.
+net.header.Local_IP=Локални IP
+net.header.Local_IP_Tooltip=Локална IP адреса и број излаза на који је захтев послат
+net.header.Remote_IP=Даљински IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Протокол
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=XHR преломне тачке
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Прекини приликом XHR-а
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=погледај извор
+net.headers.pretty_print=лепа штампа
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=медији
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Post
+Put=Put
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Response
+URLParameters=Params
+Cache=Cache
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Поређај по кључу
+jsonviewer.do_not_sort=Не ређај
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Request Headers
+ResponseHeaders=Response Headers
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Достигнуто је Фајербагово ограничење у вођењу евиденције. %1$S унос(а) није приказано.
+LimitPrefs=Подешавања
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Да бисте променили ограничење, измените: %S
+Refresh=Освежи
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Отвори у новом језичку
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Отвори Response у новом језичку
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Профил
+ProfilerStarted=Профилер је покренут. Поново отворите „Профил” да бисте видели његов дневник.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sмс, %2$S позив);(%1$Sмс, %2$S позива)
+NothingToProfile=Профил нема активности.
+PercentTooltip=Постотак времена утрошеног на ову функцију.
+CallsHeaderTooltip=Број позивања ове фунције.
+OwnTimeHeaderTooltip=Време утрошено на функцију, без угнежђених позива.
+TimeHeaderTooltip=Време утрошено на функцију, укључујући угнежђене позиве.
+AvgHeaderTooltip=Просечно време, укључујући позивања функције.
+MinHeaderTooltip=Најмање време, укључујући позивања функције.
+MaxHeaderTooltip=Највише времена, бет позивања функције.
+ProfileButton.Enabled.Tooltip=Време извршења JavaScript профила.
+ProfileButton.Disabled.Tooltip=Време извршавања JavaScript профила (табла са скриптама мора да буде укључена).
+Function=Функција
+Percent=Постотак
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Позивања
+OwnTime=Сопствено време
+Time=Време
+Avg=просечно
+Min=Најмање
+Max=Највише
+File=Датотека
+# Support for standard actions.
+Copy=Копирај
+Cut=Исеци
+Remove=Уклони
+Delete=Delete
+Paste=Налепи
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Копирај innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Копирај XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Копирај CSS Path
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Копирај место
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Копирај место са параметрима
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Копирај Request Headers
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Копирај Response Headers
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Копирај Response Body
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Копирај грешку
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Копирај функцију
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Прикажи позивања на „%S”
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Дневник догађаја
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Укључено
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Фајербагова конзола не подржава „%S”
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Фајербагова линија за наредбе не подржава „%S”
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Искључи заустављање приликом свих грешака
+console.Break_On_All_Errors=Заустави приликом свих грешака
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Заустави приликом појаве ове грешке
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript је укључен у вашим подешавањима Фајерфокса. Ако желите да користите конзолу, омогућите је преко Алатке > Опције > Садржај> Укључи JavaScript
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Фајербагова линија наредби је онемогућена на XML страницама. Можете да <a>пређете наHTML</a> да бисте је омогућили.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Response Body
+net.sizeinfo.Post_Body=Post Body
+net.sizeinfo.Total_Sent=Укупно послато
+net.sizeinfo.Total_Received=Укупо примљено
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Net табла ја активирана. Сви захтеви који долазе док је трака неактивна неће бити приказани.
+net.responseSizeLimitMessage=Достигнуто је Фајербагово ограничење величине одговора. Кликните <a>овде</a> да бисте отворили све одговоре у новом Фајерфоксовом језичку.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Достигнуто је Фајербагово ограничење величине одговора.
+net.Break_On_XHR=Прекини приликом XHR
+net.label.Parameters=Параметри
+net.label.Parts=Делови
+net.label.Source=Изворни кôд
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Искључи кеш прегледача
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Прикажи Paint догађања
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Заустави на следећем
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Прикажи HTTP заглавља
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S захтев;%1$S захтев(а)
+FromCache=из кеша
+StopLoading=Заустави учитавање
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(огромни подаци)
+ShowComputedStyle=Прикажи израчунати стил
+StyleGroup-text=Текст
+StyleGroup-background=Позадина
+StyleGroup-box=Модел оквира
+StyleGroup-layout=Изглед
+StyleGroup-other=Остало
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Копирај боју
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Копирај локацију слике
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Отвори слику у новом језичку
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Изостави оквир са алаткама
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Копирај декларацију правила
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Копирај декларацију стила
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S грешка;%1$S грешака
+moduleManager.title=Табла %S је искључена
+moduleManager.desc3=Користите Фајербагову икону у статусној траци да бисте укљулили и искључили све табле. Користите мали мени језичка табле за одвојене табеле управљања:
+moduleManager.Enable=Омогући
+Suspend_Firebug=Паузирај Фајербаг
+Resume_Firebug=Настави Фајербаг
+Reset_Panels_To_Disabled=Искључи све табле
+Open_Console=Отвори конзолу
+Open_Console_Tooltip=Отвори траку за праћење у Фајербагу.
+Scope_Chain=Scope Chain
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=With
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Call
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Window
+Logs=Записи
+Options=Опције
+Copy_Stack=Копирај Stack
+Copy Exception=Копирај изузетак
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blocking
+requestinfo.Resolving=Претрага DNS-а
+requestinfo.Connecting=Повезивање
+requestinfo.Sending=Слање
+requestinfo.Waiting=Чекање
+requestinfo.Receiving=Примање
+requestinfo.ContentLoad=„DOMContentLoaded” (догађај)
+requestinfo.WindowLoad=„load” (догађај)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Претраживање Фајербага
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Даље
+search.tip.Next=Search for the next match
+search.Previous=Назад
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Разликуј мала и велика слова
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Више датотека
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Користи регуларне изразе
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS бирање
+search.net.Headers=Заглавља
+search.net.Parameters=Параметри
+search.net.Response_Bodies=Response Bodies
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persist
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Прикажи све записе
+firebug.console.Errors=Грешке
+firebug.console.Filter_by_Errors=Филтрирање по грешакама
+firebug.console.Warnings=Упозорења
+firebug.console.Filter_by_Warnings=Филтрирање по упозорењима
+firebug.console.Info=Информације
+firebug.console.Filter_by_Info=Филтрирање по информацијама
+firebug.console.Debug_Info=Информације о грешкама
+firebug.console.Filter_by_Debug_Info=Филтрирање по информацијама о грешкама
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Отвори Фајербаг
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Сакриј Фајербаг
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Укључи све табле
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Искључи све табле
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Прилагоди пречице
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Опције
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Укључи побољшања олакшаног приступа
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Врати сва подешавања Фајербага на почетна
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Фајербаг на мрежи
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Прикажи бројач грешака
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Величина текста
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Повећај величину текста
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Умањи величину текста
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Нормална величина текста
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Страница Фајербага...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Документација...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Пречице на тастатури...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Група за расправљање...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Праћење издања...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Доприноси...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=О додатку...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Претрага
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Поново уђи у наредбу
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Пребаци испитивање
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Пребаци оквир са брзим информацијама
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Пребаци Profiling
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Пребаци на траку наредби
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Пребаци на Фајербагову претрагу
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Пребаци на Watch уређивач
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Пребаци на место
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Следећи објекат
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Претходни објекат
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Прилагоди Фајербагове пречице
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Отвори Фајербаг у новом прозору
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Пребаци на леву Фајербагову таблу
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Пребаци на десну Фајербагову таблу
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Отвори Фајербаг
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Претходни језичак Фајербага
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=чисти конзолу
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Отвори конзолу за праћење
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Назад
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Напред
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Повећај величину текста
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Смањи величину текста
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Нормална величина текста
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Изабирач табли
+customizeShortcuts=Додељење пречице у Фајербагу
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=алатке табле
+a11y.labels.firebug_panels=Табле Фајербага
+a11y.labels.firebug_side_panels=Бочне траке Фајербага
+a11y.labels.firebug_window=Прозор Фајербага
+a11y.labels.firebug_status=Статус Фајербага
+a11y.labels.reset=врати почетно
+a11y.labels.reset_shortcut=врати пречицу %S
+aria.labels.inactive_panel=неактивна табла
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=log rows
+a11y.labels.call_stack=call stack
+a11y.labels.document_structure=структура документа
+a11y.labels.title_panel=табла %S
+a11y.labels.title_side_panel=Бочна трака %S
+a11y.labels.cached=кеширано
+aria.labels.stack_trace=stack trace
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=размак
+a11y.layout.border=ивица
+a11y.layout.margin=маргина
+a11y.layout.position=позиција
+a11y.layout.position_top=горња позиција
+a11y.layout.position_right=десна позиција
+a11y.layout.position_bottom=доња позиција
+a11y.layout.position_left=лева позиција
+a11y.layout.margin_top=горња маргина
+a11y.layout.margin_right=десна маргина
+a11y.layout.margin_bottom=доња маргина
+a11y.layout.margin_left=лева маргина
+a11y.layout.border_top=горња ивица
+a11y.layout.border_right=десна ивица
+a11y.layout.border_bottom=доња ивица
+a11y.layout.border_left=лева ивица
+a11y.layout.padding_top=размак горе
+a11y.layout.padding_right=размак десно
+a11y.layout.padding_bottom=размак доле
+a11y.layout.padding_left=размак лево
+a11y.layout.top=врх
+a11y.layout.right=десно
+a11y.layout.bottom=дно
+a11y.layout.left=лево
+a11y.layout.width=ширина
+a11y.layout.height=висина
+a11y.layout.size=величина
+a11y.layout.z-index=z-индекс
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=Притисните ентер, а потом таб да бисте уредили појединачне вредности
+a11y.labels.style_rules=правила стила
+aria.labels.inherited_style_rules=наслеђена правила стила
+a11y.labels.computed_styles=компјутеризовани стилови
+a11y.labels.dom_properties=DOM својства
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=уређивач уживо
+a11y.labels.value_for_attribute_in_element=вредност за атрибут %S у елементу %S
+a11y.labels.attribute_for_element=атрибут за елемент %S
+a11y.labels.text_contents_for_element=текстуални садржај за елемент атрибут %S
+a11y.labels.defined_in_file=одређен у %S
+a11y.labels.declarations_for_selector=објашњења стила одабирача за „%S”
+a11y.labels.property_for_selector=CSS својство за одабирач: %S
+a11y.labels.value_property_in_selector=%S вредност својства за одабирач %S
+a11y.labels.css_selector=CSS одабирач
+a11y.labels.source_code_for_file=изворни кôд за датотеку %S
+a11y.labels.press_enter_to_add_new_watch_expression=притисните ентер да бисте додали нови watch израз
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=занемарен
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=има условну преломну тачку
+a11y.updates.has_disabled_break_point=је искључио преломну тачку
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Скрипта је заустављена на линији %S у %S, датотека %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=пронађено је „%S” у %S редова
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=пронађено је „%S” у линији %S у %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=пронађено је „%S” у елементу %S на путањи %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=пронађено је „%S” у атрибуту %S=%S елемента %S на путањи %S``
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=пронађено је „%S” у текстуалном садржају %S од %S елементу %S на путањи %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=пронађено је „%S” у одабирачу %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=пронађено је „%S” у одредници „%S” у одабирачу стила %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=пронађен резултат за „%S” у DOM својству %S.
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=пронађен резултат за „%S” у %S, %S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=пронађен резултат за „%S” у net summary row: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=нема резултата за „%S”
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Да ли заиста желите да вратите почетна подешавања Фајербага?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=Конзола мора да буде укључена
+warning.Command_line_blocked?=Командна линија блокирана?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Поново учитајте да бисте активирали прозор са конзолом
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=Извор са ове адресе није текст
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Иди назад на ову таблу
+firebug.history.Stay_on_this_panel=Остани на овој табли
+firebug.history.Go_forward_to_this_panel=Иди напред на ову таблу
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Иди назад
+firebug.history.Go_forward=Иди напред
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Табла за скрипте је била неактивна за време учитавања станице
+script.suggestion.inactive_during_page_load2=<a>Поново учитајте</a> да бисте видели све изворе
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript није омогућен
+script.suggestion.javascript_not_enabled=Погледајте Фајерфокс > Опције > Садржај > Омогући Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Омогући Javascript и освежи
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Све скрипте су филтриране
+script.suggestion.all_scripts_filtered=Погледајте подешавања филтера скрипти на траци са алаткама или „Прикажи опцију за извор Chrome-а”
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=на овој страници нема Javascript-а
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Модул за отклањање грешака је већ активан
+script.suggestion.debugger_active=Модул за отклањање грешака је тренутно заустављен на тачки прекида на другој страници
+script.button.Go_to_that_page=Иди на ту страницу
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Фајербаг
+firebug.Close=Затвори
+firebug.View=Приказ
+firebug.Help=Помоћ
+firebug.Run=Покрени
+firebug.Copy=Копирај
+firebug.History=Историја
+firebug.Run_the_entered_command=Покрени унесену наредбу
+firebug.Clear_the_Command_Editor=Очисти уређивач наредби
+firebug.Copy_the_script_as_a_bookmarklet=Копирај скрипту као забелешку
+firebug.Insert_a_previously_entered_command=Уметни претходно унесену наредбу
+firebug.AlwaysOpenInWindow=Увек отварај у новом прозору
+firebug.OpenWith=Отвори помоћу уређивача
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Странице...
+firebug.Configure_Editors=Подеси уређиваче
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Испитај
+firebug.InspectElement=Испитај елемент
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Прекини приликом грешака
+firebug.InspectTooltip=Кликните на елемент на страници да бисте га испитали
+firebug.EditHTMLTooltip=Уреди овај HTML
+firebug.Profile=Профил
+firebug.Clear=Очисти
+firebug.ClearConsole=Очисти конзолу
+firebug.ClearTooltip=Очисти конзолу
+firebug.All=Све
+firebug.Images=Слике
+firebug.Flash=Флеш
+# editors.dtd
+editors.Configured_Firebug_Editors=Подешени уређивачи Фајербага
+editors.Editor=Уређивач
+editors.Executable=Извршна датотека
+editors.Launch_Arguments=Аргументи за покретање
+editors.Add=Додај
+editors.Remove=Уклони
+editors.Change=Промени
+editors.Move_Up=Помери нагоре
+editors.Close=Затвори
+editors.Browse=Потражи...
+changeEditor.Editor_Configuration=Подешавање уређивача
+changeEditor.Name=Назив:
+changeEditor.Executable=Извршна датотека:
+changeEditor.CmdLine=Аргументи:
+changeEditor.Supplied_arguments=Аргументи које пружа фајербаг:
+changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> URL датотеке (ако %url не постоји, %file ће бити додана по подразумеваном)
+changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> Путања до локалне датотеке (или привремене копије)
+changeEditor.Line_number=<label class=\'text-link\'>%line</label> Број линије (ако је доступан)
+changeEditor.Invalid_Application_Path=Неважећа путања апликације
+changeEditor.Application_does_not_exist=наведена апликација не постоји!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Уреди
+firebug.css.sourceEdit=Уређивање изворног кôда
+firebug.css.sourceEdit.tooltip=Поље са текстом уређује извор описа стила како га је прегледач учитао
+firebug.css.liveEdit=Уређивање уживо
+firebug.css.liveEdit.tooltip=Поље са текстом уређује извор описа стила издвојеног из прегледача
+firebug.EditCSSTooltip=Уреди овај стил
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Странице се не памте у поверљивом прегледању
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Прикажи обавештење о прекиду
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=Мпжете да онемогућите или омогућите обавештења прекида у <a>менију језичка табле</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Ако кликнете на дугме „Онемогући”, занемарићете „уклањање грешака” са онемогућеном тачком прелома.
+firebug.bon.tooltip.disableDebuggerKeyword2=Прави онемогућену тачку прелома
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=Нема подређених објеката
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=више
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S ставка у складишту;%1$S ставки у складишту(е)
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Својства објекта
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(нема завршетака)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=URL објекта је највероватније укинут коришћењем revokeObjectURL метода.
+firebug.failedToPreviewImageURL=Није успело учитавање датог URL-а.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/sv-SE/cookies.properties b/locale/sv-SE/cookies.properties
index afae097..f821db1 100644
--- a/locale/sv-SE/cookies.properties
+++ b/locale/sv-SE/cookies.properties
@@ -1,138 +1,138 @@
-cookies.Panel=Kakor
-panel.tip.cookies=Inspektera och ändra kakor
-cookies.Session=Session
-cookies.AllowGlobally=Tillåt kakor från domäner
-cookies.tip.AllowGlobally=Acceptera eller blockera alla kakor som standard
-cookies.showCookieEvents=Visa ändringar av kakor
-cookies.tip.showCookieEvents=Logga ändringar/borttagningar av kakor till konsollen
-cookies.clearWhenDeny=Ta bort kakor vid avvisning
-cookies.Cut=Klipp ut
-cookies.Copy=Kopiera
-cookies.CopyAll=Kopiera alla
-cookies.Paste=Klistra in
-cookies.Delete=Ta bort
-cookies.Clear_Value=Rensa värde
-cookies.Edit=Redigera
-cookies.Accept=Tillåt
-cookies.header.Reset_Header=Återställ Header
-cookies.Intro=Du kan ange vilka webbplatser som alltid eller aldrig får använda kakor.\nSkriv in den exakta adressen till webbplatsen och klicka sedan på Blockera,\nTillåt för Session eller Tillåt
-cookies.ExceptionsTitle=Undantag - Kakor
-cookies.modulemanager.description=Stöd för kakövervakning
-cookies.HostEnable=Aktivera kakpanelen för %S
-cookies.HostDisable=Inaktivera kakpanelen för %S
-cookies.Permissions=Panel för att (in)aktivera kakor
-cookies.PermissionsIntro=Välj webbplatser där kakpanelen ska vara (in)aktiverad.
-cookies.SystemPages=Systemsidor
-cookies.LocalFiles=Lokala filer
-cookies.confirm.removeall=Vill du ta bort alla kakor i listan?
-cookies.confirm.removeallsession=Vill du ta bort alla sessionskakor från listan?
-cookies.confirm.Remove_All_From_Host=Vill du ta bort alla kakor från %S?
-cookies.Confirm_cookie_removal=Bekräfta borttagning av kakor
-cookies.tip.Confirm_cookie_removal=Visar konfirmationsdialog innan kakor tas bort från listan
-cookies.removeall.tooltip=Ta bort alla kakor i listan
-cookies.Remove_Session_Cookies=Ta bort sessionskakor
-cookies.removeallsession.tooltip=Ta bort alla sessionskakor i listan.
-cookies.createcookie.tooltip=Skapa ny kaka för %s
-cookies.createcookie.defaultvalue=Värde
-cookies.perm.manage.tooltip=Hantera kakinställningar för %S
-cookies.console.cookiescleared=Alla kakor har tagits bort.
-cookies.console.sessioncookiescleared=Alla sessionskakor har tagits bort från listan.
-cookies.console.cookiesrejected=Avvisade kakor:
-cookies.console.nocookiesreceived=Inga kakor mottagna
-cookies.console.cookie=Kaka
-cookies.console.deleted=borttagen
-cookies.console.added=tillagd
-cookies.console.changed=ändrad
-cookies.console.cleared=rensad
-cookies.domain.label=Domän
-cookies.secure.label=Säkra
-cookies.status.accepted=Accepterade
-cookies.status.downgraded=Nedgraderade
-cookies.status.flagged=Flaggade
-cookies.status.rejected=Avvisade
-cookies.info.valuetab.label=Värde
-cookies.info.rawdatatab.Raw_Data=Rådata
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-cookies.default.session=Standard (tillåt sessionskakor)
-cookies.default.thirdPartySession=Standard (tillåt sessionskakor)
-cookies.default.thirdParty=Standard (tillåt kakor)
-cookies.default.allow=Standard (tillåt kakor)
-cookies.default.deny=Standard (stoppa kakor)
-cookies.default.warn=Standard (varna innan kakor tillåts)
-cookies.default.limitThirdParty=Standard (begränsa tredjepartskakor)
-cookies.host.session=Tillåt sessionskakor från %S
-cookies.host.accept=Tillåt kakor från %S
-cookies.host.reject=Stoppa kakor från %S
-cookies.host.limitThirdParty=Begränsa tredjepartskakor från %S
-cookies.edit.invalidname=Kakans namn är inte giltigt.
-cookies.edit.invalidhost=Kakans värd är inte giltig.
-cookies.edit.invalidpath=Kakans sökväg är inte giltig.
-cookies.header.name=Namn
-cookies.header.value=Värde
-cookies.header.rawValue=Oformaterat värde
-cookies.header.domain=Domän
-cookies.header.size=Storlek
-cookies.header.rawSize=Lagrad storlek
-cookies.header.path=Sökväg
-cookies.header.expires=Förfaller
-cookies.header.security=Säkerhet
-cookies.header.httponly=HttpOnly
-cookies.header.maxAge=Max-Age
-cookies.header.name.tooltip=Namn på kaka
-cookies.header.value.tooltip=Värde lagrat i kaka
-cookies.header.rawValue.tooltip=Oformaterat värde som sparas för kakan
-cookies.header.domain.tooltip=Domän som sparat kakan
-cookies.header.rawSize.tooltip=Storleken i bytes av den lagrade kakan
-cookies.header.size.tooltip=Storlek på kakan
-cookies.header.path.tooltip=Katalog där kakan är aktiv
-cookies.header.expires.tooltip=Förfallodatum för kakan
-cookies.header.security.tooltip=Visar om kakan är säker eller inte
-cookies.header.httponly.tooltip=Visar om kakan är en HTTP kaka
-cookies.header.maxAge.tooltip=Begränsning på hur länge kakan får lagras
-cookies.netinfo.Received_Cookies=Mottagna kakor
-cookies.netinfo.Sent_Cookies=Skickade kakor
-cookies.netinfo.deleted.tooltip=Begäran fick kakan att förfalla
-cookies.Path_Filter=Sökvägsfilter
-cookies.menu.Cookies=Kakor
-cookies.export.Export_All_Cookies=Exportera alla kakor...
-cookies.export.Export_All_Cookies_Tooltip=Exportera alla kakor till cookies.txt
-cookies.export.Export_For_Site=Exportera kakor för denna webbplats...
-cookies.export.Export_For_Site_Tooltip=Exportera kakor för %S till cookies.txt
-cookies.message.There_is_no_active_page=Det finns ingen aktiv sida.
-cookies.Break_On_Cookie=Bryt när kakor ändras
-cookies.Disable_Break_On_Cookie=Inaktivera bryt när kakor ändras
-cookies.Cookie_Breakpoints=Brytpunkter för kakor
-cookies.menu.Break_On_Cookie=Bryt vid kaka '%S'
-cookies.menu.tooltip.Break_On_Cookie=Bryt när kaka '%S' tas bort eller ändras.
-cookies.menu.Edit_Breakpoint_Condition=Redigera brytpunktsegenskaper
-cookies.Breakpoint_condition_evaluation_fails=Utvärdering av brytpunksegenskaper misslyckades
-cookies.RemoveAll=Ta bort kakor
-cookies.Create=Skapa kaka
-cookies.Tools=Verktyg
-cookies.ToolsTooltip=Verktyg
-cookies.ViewAll=Visa alla kakor...
-cookies.ViewAllTooltip=Öppna kakhanteraren
-cookies.ViewExceptions=Tillstånd för webbplatser...
-cookies.ViewExceptionsTooltip=Visa lista med tillåtna och spärrade webbplatser
-cookies.Filter=Filter
-cookies.FilterTooltip=Använd inställningarna för att filtrera kaklistan.
-cookies.filter.byPath=Filtrera kakor efter aktuell sökväg
-cookies.filter.byPathTooltip=Visa bara kakor som matchar aktuell sökväg
-cookies.filter.showRejectedCookies=Visa avvisade kakor
-cookies.filter.showRejectedCookiesTooltip=Visa även avvisade kakor i listan.
-cookies.edit.title=Redigera kaka
-cookies.edit.name.label=Namn:
-cookies.edit.domain.label=Värd:
-cookies.edit.path.label=Sökväg:
-cookies.edit.expire.label=Utgår:
-cookies.edit.value.label=Värde:
-cookies.edit.secure.label=Säker kaka
-cookies.edit.httponly.label=Endast HTTP
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=URL kodat värde
-cookies.console.Cookies=Kakor
-cookies.console.Filter_By_Cookies=Filtrera på kakor
-firebug.shortcut.removeAllCookies.label=Ta bort alla kakor
-cookie.sizeinfo.Size=Storlek
-cookie.sizeinfo.Raw_Size=Kodad storlek
+cookies.Panel=Kakor
+panel.tip.cookies=Inspektera och ändra kakor
+cookies.Session=Session
+cookies.AllowGlobally=Tillåt kakor från domäner
+cookies.tip.AllowGlobally=Acceptera eller blockera alla kakor som standard
+cookies.showCookieEvents=Visa ändringar av kakor
+cookies.tip.showCookieEvents=Logga ändringar/borttagningar av kakor till konsollen
+cookies.clearWhenDeny=Ta bort kakor vid avvisning
+cookies.Cut=Klipp ut
+cookies.Copy=Kopiera
+cookies.CopyAll=Kopiera alla
+cookies.Paste=Klistra in
+cookies.Delete=Ta bort
+cookies.Clear_Value=Rensa värde
+cookies.Edit=Redigera
+cookies.Accept=Tillåt
+cookies.header.Reset_Header=Återställ Header
+cookies.Intro=Du kan ange vilka webbplatser som alltid eller aldrig får använda kakor.\nSkriv in den exakta adressen till webbplatsen och klicka sedan på Blockera,\nTillåt för Session eller Tillåt
+cookies.ExceptionsTitle=Undantag - Kakor
+cookies.modulemanager.description=Stöd för kakövervakning
+cookies.HostEnable=Aktivera kakpanelen för %S
+cookies.HostDisable=Inaktivera kakpanelen för %S
+cookies.Permissions=Panel för att (in)aktivera kakor
+cookies.PermissionsIntro=Välj webbplatser där kakpanelen ska vara (in)aktiverad.
+cookies.SystemPages=Systemsidor
+cookies.LocalFiles=Lokala filer
+cookies.confirm.removeall=Vill du ta bort alla kakor i listan?
+cookies.confirm.removeallsession=Vill du ta bort alla sessionskakor från listan?
+cookies.confirm.Remove_All_From_Host=Vill du ta bort alla kakor från %S?
+cookies.Confirm_cookie_removal=Bekräfta borttagning av kakor
+cookies.tip.Confirm_cookie_removal=Visar konfirmationsdialog innan kakor tas bort från listan
+cookies.removeall.tooltip=Ta bort alla kakor i listan
+cookies.Remove_Session_Cookies=Ta bort sessionskakor
+cookies.removeallsession.tooltip=Ta bort alla sessionskakor i listan.
+cookies.createcookie.tooltip=Skapa ny kaka för %s
+cookies.createcookie.defaultvalue=Värde
+cookies.perm.manage.tooltip=Hantera kakinställningar för %S
+cookies.console.cookiescleared=Alla kakor har tagits bort.
+cookies.console.sessioncookiescleared=Alla sessionskakor har tagits bort från listan.
+cookies.console.cookiesrejected=Avvisade kakor:
+cookies.console.nocookiesreceived=Inga kakor mottagna
+cookies.console.cookie=Kaka
+cookies.console.deleted=borttagen
+cookies.console.added=tillagd
+cookies.console.changed=ändrad
+cookies.console.cleared=rensad
+cookies.domain.label=Domän
+cookies.secure.label=Säkra
+cookies.status.accepted=Accepterade
+cookies.status.downgraded=Nedgraderade
+cookies.status.flagged=Flaggade
+cookies.status.rejected=Avvisade
+cookies.info.valuetab.label=Värde
+cookies.info.rawdatatab.Raw_Data=Rådata
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+cookies.default.session=Standard (tillåt sessionskakor)
+cookies.default.thirdPartySession=Standard (tillåt sessionskakor)
+cookies.default.thirdParty=Standard (tillåt kakor)
+cookies.default.allow=Standard (tillåt kakor)
+cookies.default.deny=Standard (stoppa kakor)
+cookies.default.warn=Standard (varna innan kakor tillåts)
+cookies.default.limitThirdParty=Standard (begränsa tredjepartskakor)
+cookies.host.session=Tillåt sessionskakor från %S
+cookies.host.accept=Tillåt kakor från %S
+cookies.host.reject=Stoppa kakor från %S
+cookies.host.limitThirdParty=Begränsa tredjepartskakor från %S
+cookies.edit.invalidname=Kakans namn är inte giltigt.
+cookies.edit.invalidhost=Kakans värd är inte giltig.
+cookies.edit.invalidpath=Kakans sökväg är inte giltig.
+cookies.header.name=Namn
+cookies.header.value=Värde
+cookies.header.rawValue=Oformaterat värde
+cookies.header.domain=Domän
+cookies.header.size=Storlek
+cookies.header.rawSize=Lagrad storlek
+cookies.header.path=Sökväg
+cookies.header.expires=Förfaller
+cookies.header.security=Säkerhet
+cookies.header.httponly=HttpOnly
+cookies.header.maxAge=Max-Age
+cookies.header.name.tooltip=Namn på kaka
+cookies.header.value.tooltip=Värde lagrat i kaka
+cookies.header.rawValue.tooltip=Oformaterat värde som sparas för kakan
+cookies.header.domain.tooltip=Domän som sparat kakan
+cookies.header.rawSize.tooltip=Storleken i bytes av den lagrade kakan
+cookies.header.size.tooltip=Storlek på kakan
+cookies.header.path.tooltip=Katalog där kakan är aktiv
+cookies.header.expires.tooltip=Förfallodatum för kakan
+cookies.header.security.tooltip=Visar om kakan är säker eller inte
+cookies.header.httponly.tooltip=Visar om kakan är en HTTP kaka
+cookies.header.maxAge.tooltip=Begränsning på hur länge kakan får lagras
+cookies.netinfo.Received_Cookies=Mottagna kakor
+cookies.netinfo.Sent_Cookies=Skickade kakor
+cookies.netinfo.deleted.tooltip=Begäran fick kakan att förfalla
+cookies.Path_Filter=Sökvägsfilter
+cookies.menu.Cookies=Kakor
+cookies.export.Export_All_Cookies=Exportera alla kakor...
+cookies.export.Export_All_Cookies_Tooltip=Exportera alla kakor till cookies.txt
+cookies.export.Export_For_Site=Exportera kakor för denna webbplats...
+cookies.export.Export_For_Site_Tooltip=Exportera kakor för %S till cookies.txt
+cookies.message.There_is_no_active_page=Det finns ingen aktiv sida.
+cookies.Break_On_Cookie=Bryt när kakor ändras
+cookies.Disable_Break_On_Cookie=Inaktivera bryt när kakor ändras
+cookies.Cookie_Breakpoints=Brytpunkter för kakor
+cookies.menu.Break_On_Cookie=Bryt vid kaka '%S'
+cookies.menu.tooltip.Break_On_Cookie=Bryt när kaka '%S' tas bort eller ändras.
+cookies.menu.Edit_Breakpoint_Condition=Redigera brytpunktsegenskaper
+cookies.Breakpoint_condition_evaluation_fails=Utvärdering av brytpunksegenskaper misslyckades
+cookies.RemoveAll=Ta bort kakor
+cookies.Create=Skapa kaka
+cookies.Tools=Verktyg
+cookies.ToolsTooltip=Verktyg
+cookies.ViewAll=Visa alla kakor...
+cookies.ViewAllTooltip=Öppna kakhanteraren
+cookies.ViewExceptions=Tillstånd för webbplatser...
+cookies.ViewExceptionsTooltip=Visa lista med tillåtna och spärrade webbplatser
+cookies.Filter=Filter
+cookies.FilterTooltip=Använd inställningarna för att filtrera kaklistan.
+cookies.filter.byPath=Filtrera kakor efter aktuell sökväg
+cookies.filter.byPathTooltip=Visa bara kakor som matchar aktuell sökväg
+cookies.filter.showRejectedCookies=Visa avvisade kakor
+cookies.filter.showRejectedCookiesTooltip=Visa även avvisade kakor i listan.
+cookies.edit.title=Redigera kaka
+cookies.edit.name.label=Namn:
+cookies.edit.domain.label=Värd:
+cookies.edit.path.label=Sökväg:
+cookies.edit.expire.label=Utgår:
+cookies.edit.value.label=Värde:
+cookies.edit.secure.label=Säker kaka
+cookies.edit.httponly.label=Endast HTTP
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=URL kodat värde
+cookies.console.Cookies=Kakor
+cookies.console.Filter_By_Cookies=Filtrera på kakor
+firebug.shortcut.removeAllCookies.label=Ta bort alla kakor
+cookie.sizeinfo.Size=Storlek
+cookie.sizeinfo.Raw_Size=Kodad storlek
diff --git a/locale/sv-SE/firebug-amo.properties b/locale/sv-SE/firebug-amo.properties
index fdee543..8532ea1 100644
--- a/locale/sv-SE/firebug-amo.properties
+++ b/locale/sv-SE/firebug-amo.properties
@@ -1,3 +1,3 @@
-firebug.amo.summary1.6=Firebug integrerar med Firefox och ger dig en uppsjö av utvecklingsverktyg direkt i webbläsaren. Du kan redigera, debugga och inspektera CSS, HTML och JavaScript live på alla webbsidor...\\n\\nFirebug 1.6 kräver Firefox 3.6 eller senare.
-firebug.amo.description=Firebug integrerar med Firefox och ger dig ett stort antal utvecklingsverktyg direkt i webbläsaren. Du kan redigera, debugga och inspektera CSS, HTML och JavaScript direkt på vilken sida som helst.\\n\\nBesök Firebugs hemsida för dokumentation, skärmbilder och diskussionsforum: http://getfirebug.com
-firebug.amo.developer.comments=Om du har några problem, läs Firebugs FAQ.\\n\\nhttp://getfirebug.com/faq.html
+firebug.amo.summary1.6=Firebug integrerar med Firefox och ger dig en uppsjö av utvecklingsverktyg direkt i webbläsaren. Du kan redigera, debugga och inspektera CSS, HTML och JavaScript live på alla webbsidor...\\n\\nFirebug 1.6 kräver Firefox 3.6 eller senare.
+firebug.amo.description=Firebug integrerar med Firefox och ger dig ett stort antal utvecklingsverktyg direkt i webbläsaren. Du kan redigera, debugga och inspektera CSS, HTML och JavaScript direkt på vilken sida som helst.\\n\\nBesök Firebugs hemsida för dokumentation, skärmbilder och diskussionsforum: http://getfirebug.com
+firebug.amo.developer.comments=Om du har några problem, läs Firebugs FAQ.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/sv-SE/firebug-tracing.properties b/locale/sv-SE/firebug-tracing.properties
index 49ee7ad..2b2da25 100644
--- a/locale/sv-SE/firebug-tracing.properties
+++ b/locale/sv-SE/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):n\n
-# Firebug tracing console menu items (located in Firebug\'s menu).n\n
-Open_Firebug_Tracing=Öppna Firebugs spårning
-Always_Open_Firebug_Tracing=Öppna alltid Firebugs spårning
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).n\n
-title.Tracing=Spårning
-tracing.Show_Scope_Variables=Visa scopevariabler
-tracing.Show_Time=Visa tid
-tracing.tab.Stack=Stack
-tracing.tab.Exception=Undantag
-tracing.tab.Properties=Egenskaper
-tracing.tab.Scope=Scope
-tracing.tab.Response=Svar
-tracing.tab.Source=Källa
-tracing.tab.Interfaces=Interfaces
-tracing.tab.Object=Objekt
-tracing.tab.Event=Händelse
-tracing.cmd.Clear=Rensa
-tracing.cmd.tip.Clear=Ta bort alla meddelanden
-tracing.cmd.Find=Sök
-tracing.cmd.tip.Find=Sök text
-tracing.cmd.Bookmark=Bokmärke
-tracing.cmd.tip.Bookmark=Infoga bokmärke
-tracing.cmd.Restart=Starta om Firefox
-tracing.cmd.tip.Restart=Starta om Firefox
-tracing.cmd.Exit=Avsluta Firefox
-tracing.cmd.tip.Exit=Avsluta Firefox
-tracing.cmd.Save=Spara till fil
-tracing.cmd.tip.Save=Spara loggar till fil
-tracing.cmd.Load=Läs in från fil
-tracing.cmd.tip.Load=Läs in loggar från fil
-tracing.cmd.Expand_All=Expandera alla
-tracing.cmd.Collapse_All=Slå ihop alla
-tracing.cmd.Tools=Verktyg
-tracing.cmd.tip.Tools=Verktyg
-tracing.cmd.Clear_Browser_Cache=Töm webbläsarcachen
-tracing.cmd.tip.Clear_Browser_Cache=Töm webbläsarcachen
-tracing.cmd.Force_Garbage_Collector=Tvinga minnes
-tracing.cmd.tip.Force_Garbage_Collector=Tvinga minnesrensning
-tracing.cmd.Open_Profile_Directory=Öppna profilkatalogen
-tracing.cmd.tip.Open_Profile_Directory=Öppna profilkatalogen
-tracing.option.A11Y_Description=Tillgänglighetsfrågor
-tracing.option.ACTIVATION_Description=Firebug aktivering
-tracing.option.ACTIVITYOBSERVER_Description=Firebug aktivitetsobservatör
-tracing.option.ANNOTATIONS_Description=Firebug webbplatsannotation
-tracing.option.BP_Description=Brytpunkter
-tracing.option.CACHE_Description=Källkodscache
-tracing.option.COMMANDLINE_Description=Kommandorad & Kommandoradspopup
-tracing.option.COMPILATION_UNITS_Description=Skript kompleringsenheter
-tracing.option.CONSOLE_Description=Konsol panelen
-tracing.option.CSS_Description=CSS parsning
-tracing.option.DISPATCH_Description=Händelseaktivitet
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate skapande
-tracing.option.EDITOR_Description=Inline Editor & Autocompleter
-tracing.option.ERRORLOG_Description=Fellogg av JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Interna Firebug fel
-tracing.option.EVAL_Description=Script utvärdering
-tracing.option.FBS_BP_Description=Firebug service - brytpunkter
-tracing.option.FBS_CREATION_Description=Firebug service - script skapande
-tracing.option.FBS_ERRORS_Description=Firebug - service fel
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug service - hitta debugger
-tracing.option.FBS_FUNCTION_Description=Firebug servicefunktion
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service - JavaScript Debugger kontext
-tracing.option.FBS_SRCUNITS_Description=Firebug service - källkodsfiler
-tracing.option.FBS_STEP_Description=Firebug service - JavaScript Debugger stegning
-tracing.option.FBS_TRACKFILES_Description=Firebug service - spårade filer
-tracing.option.FUNCTION_NAMES_Description=JavaScript funktionsnamn
-tracing.option.HISTORY_Description=Firebug Navigationshistorik
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=Observatör för HTTP-begäran
-tracing.option.INFOTIP_Description=InfoTip
-tracing.option.INITIALIZE_Description=Firebug initiering
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON viewer
-tracing.option.LINETABLE_Description=Scriptradstabell
-tracing.option.LOCALE_Description=Översättning
-tracing.option.LOCATIONS_Description=Källkodssökväg
-tracing.option.NET_Description=Netpanel
-tracing.option.NET_EVENTS_Description=Nätverkshändelser
-tracing.option.OPTIONS_Description=Firebuginställningar
-tracing.option.PANELS_Description=Paneler
-tracing.option.SHORTCUTS_Description=Kortkommandon
-tracing.option.SOURCEFILES_Description=JavaScript källfiler
-tracing.option.SPY_Description=Observatör för XMLHttpRequests
-tracing.option.STACK_Description=JavaScript anropsstack
-tracing.option.STORAGE_Description=Inställningslagring
-tracing.option.SVGVIEWER_Description=SVG viewer
-tracing.option.FONTS_Description=Typsnittsinformation och visarprogram
-tracing.option.TOOLTIP_Description=Startknapp tooltip
-tracing.option.TOPLEVEL_Description=Toppnivå JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging av användargränssnitt
-tracing.option.WINDOWS_Description=Firebug Windows & Tab Watcher
-tracing.option.XMLVIEWER_Description=XML Viewer
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):n\n
+# Firebug tracing console menu items (located in Firebug\'s menu).n\n
+Open_Firebug_Tracing=Öppna Firebugs spårning
+Always_Open_Firebug_Tracing=Öppna alltid Firebugs spårning
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).n\n
+title.Tracing=Spårning
+tracing.Show_Scope_Variables=Visa scopevariabler
+tracing.Show_Time=Visa tid
+tracing.tab.Stack=Stack
+tracing.tab.Exception=Undantag
+tracing.tab.Properties=Egenskaper
+tracing.tab.Scope=Scope
+tracing.tab.Response=Svar
+tracing.tab.Source=Källa
+tracing.tab.Interfaces=Interfaces
+tracing.tab.Object=Objekt
+tracing.tab.Event=Händelse
+tracing.cmd.Clear=Rensa
+tracing.cmd.tip.Clear=Ta bort alla meddelanden
+tracing.cmd.Find=Sök
+tracing.cmd.tip.Find=Sök text
+tracing.cmd.Bookmark=Bokmärke
+tracing.cmd.tip.Bookmark=Infoga bokmärke
+tracing.cmd.Restart=Starta om Firefox
+tracing.cmd.tip.Restart=Starta om Firefox
+tracing.cmd.Exit=Avsluta Firefox
+tracing.cmd.tip.Exit=Avsluta Firefox
+tracing.cmd.Save=Spara till fil
+tracing.cmd.tip.Save=Spara loggar till fil
+tracing.cmd.Load=Läs in från fil
+tracing.cmd.tip.Load=Läs in loggar från fil
+tracing.cmd.Expand_All=Expandera alla
+tracing.cmd.Collapse_All=Slå ihop alla
+tracing.cmd.Tools=Verktyg
+tracing.cmd.tip.Tools=Verktyg
+tracing.cmd.Clear_Browser_Cache=Töm webbläsarcachen
+tracing.cmd.tip.Clear_Browser_Cache=Töm webbläsarcachen
+tracing.cmd.Force_Garbage_Collector=Tvinga minnes
+tracing.cmd.tip.Force_Garbage_Collector=Tvinga minnesrensning
+tracing.cmd.Open_Profile_Directory=Öppna profilkatalogen
+tracing.cmd.tip.Open_Profile_Directory=Öppna profilkatalogen
+tracing.option.A11Y_Description=Tillgänglighetsfrågor
+tracing.option.ACTIVATION_Description=Firebug aktivering
+tracing.option.ACTIVITYOBSERVER_Description=Firebug aktivitetsobservatör
+tracing.option.ANNOTATIONS_Description=Firebug webbplatsannotation
+tracing.option.BP_Description=Brytpunkter
+tracing.option.CACHE_Description=Källkodscache
+tracing.option.COMMANDLINE_Description=Kommandorad & Kommandoradspopup
+tracing.option.COMPILATION_UNITS_Description=Skript kompleringsenheter
+tracing.option.CONSOLE_Description=Konsol panelen
+tracing.option.CSS_Description=CSS parsning
+tracing.option.DISPATCH_Description=Händelseaktivitet
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate skapande
+tracing.option.EDITOR_Description=Inline Editor & Autocompleter
+tracing.option.ERRORLOG_Description=Fellogg av JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Interna Firebug fel
+tracing.option.EVAL_Description=Script utvärdering
+tracing.option.FBS_BP_Description=Firebug service - brytpunkter
+tracing.option.FBS_CREATION_Description=Firebug service - script skapande
+tracing.option.FBS_ERRORS_Description=Firebug - service fel
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug service - hitta debugger
+tracing.option.FBS_FUNCTION_Description=Firebug servicefunktion
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service - JavaScript Debugger kontext
+tracing.option.FBS_SRCUNITS_Description=Firebug service - källkodsfiler
+tracing.option.FBS_STEP_Description=Firebug service - JavaScript Debugger stegning
+tracing.option.FBS_TRACKFILES_Description=Firebug service - spårade filer
+tracing.option.FUNCTION_NAMES_Description=JavaScript funktionsnamn
+tracing.option.HISTORY_Description=Firebug Navigationshistorik
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=Observatör för HTTP-begäran
+tracing.option.INFOTIP_Description=InfoTip
+tracing.option.INITIALIZE_Description=Firebug initiering
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON viewer
+tracing.option.LINETABLE_Description=Scriptradstabell
+tracing.option.LOCALE_Description=Översättning
+tracing.option.LOCATIONS_Description=Källkodssökväg
+tracing.option.NET_Description=Netpanel
+tracing.option.NET_EVENTS_Description=Nätverkshändelser
+tracing.option.OPTIONS_Description=Firebuginställningar
+tracing.option.PANELS_Description=Paneler
+tracing.option.SHORTCUTS_Description=Kortkommandon
+tracing.option.SOURCEFILES_Description=JavaScript källfiler
+tracing.option.SPY_Description=Observatör för XMLHttpRequests
+tracing.option.STACK_Description=JavaScript anropsstack
+tracing.option.STORAGE_Description=Inställningslagring
+tracing.option.SVGVIEWER_Description=SVG viewer
+tracing.option.FONTS_Description=Typsnittsinformation och visarprogram
+tracing.option.TOOLTIP_Description=Startknapp tooltip
+tracing.option.TOPLEVEL_Description=Toppnivå JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging av användargränssnitt
+tracing.option.WINDOWS_Description=Firebug Windows & Tab Watcher
+tracing.option.XMLVIEWER_Description=XML Viewer
diff --git a/locale/sv-SE/firebug.properties b/locale/sv-SE/firebug.properties
index b4f0f57..9683a0e 100644
--- a/locale/sv-SE/firebug.properties
+++ b/locale/sv-SE/firebug.properties
@@ -1,1096 +1,1096 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.n\n
-# %S Title of the associated web page.n\n
-# examples: Firebug - Googlen\n
-WindowTitle=Firebug - %S
-# Panel titlesn\n
-Panel-console=Konsol
-panel.tip.console=Låter dig titta på konsolmeddelanden och köra Javascript-kod
-Panel-net=Net
-panel.tip.net=Låter dig analysera nätverkstrafik
-Panel-html=HTML
-panel.tip.html=Låter dig inspektera och ändra DOM-strukturen
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Låter dig inspektera och ändra CSS-värden
-Panel-script=Skript
-panel.tip.script=Låter dig debugga JavaScript
-Panel-dom=DOM
-panel.tip.dom=Låter dig inspektera och ändra DOM-egenskaper
-Panel-css=Stil
-panel.tip.css=Låter dig inspektera och ändra CSS-regler för valt element
-Panel-computed=Beräknad
-panel.tip.computed=Låter dig inspektera det beräknade CSS värdet för valt element
-Panel-layout=Layout
-panel.tip.layout=Låter dig inspektera och ändra layout-data för valt element
-Panel-domSide=DOM
-panel.tip.domSide=Låter dig inspektera och ändra DOM-egenskaper för valt element
-Panel-watches=Bevaka
-panel.tip.watches=Låter dig inspektera JavaScript-variablerna i den nuvarande stackposten och definiera bevakningsuttryck
-Panel-breakpoints=Brytpunkter
-panel.tip.breakpoints=Låter dig manipulera de satta brytpunkterna
-Panel-callstack=Stack
-panel.tip.callstack=Låter dig kolla på den nuvarande anropsstacken
-Panel-scopes=Scopes
-firebug.DetachFirebug=Öppna Firebug i nytt fönster
-firebug.AttachFirebug=Docka Firebug till webbläsaren
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.n\n
-# If there is no Firebug translation for the current browser locale, this valuen\n
-# will be used instead of the one in chrome://global/locale/intl.propertiesn\n
-# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsn\n
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semi-colon list of plural forms.n\n
-# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsn\n
-# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.n\n
-# Displays number of pages with Firebug activated.n\n
-# #1 number of Firebug instances activatedn\n
-# example: 2 Total Firebugsn\n
-plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in \'list of all panels\'n\n
-# menu (available on Firebug\'s tab bar).n\n
-# Console panel options.n\n
-startbutton.tip.deactivated=Inaktiverad
-# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,n\n
-# message, etc. within a source of a web page.n\n
-# #1 File name, #2 Line numbern\n
-# examples: somePage.htm (line 64)n\n
-# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.n\n
-panel.status=%S: %S
-inBrowser=i webbläsare
-minimized=minimerad
-enablement.for_all_pages=för alla sidor
-enablement.on=På
-enablement.off=Av
-enablement.Panel_activation_status=Panelaktivering:
-none=stängd
-Firebug_-_inactive_for_current_website=Firebug - inaktiv för nuvarande webbplats
-Activate_Firebug_for_the_current_website=Aktivera Firebug för den aktuella webbplatsen
-Minimized=Minimerad
-Minimize_Firebug=Minimera Firebug
-On_for_all_web_pages=Aktiverad för alla webbsidor
-firebug.menu.tip.On_for_all_Web_Sites=Aktivera Firebug som standard för alla webbsidor
-firebug.menu.Clear_Activation_List=Töm aktiveringslistan
-firebug.menu.tip.Clear_Activation_List=Töm listan över sidor som Firebug är aktiverad för
-firebug.menu.Detached=I fönster
-firebug.menu.tip.Detached=Öppna Firebug i nytt fönster
-firebug.menu.Top=Topp
-firebug.menu.tip.Top=Placera Firebug vid toppen av webbläsarfönstret
-firebug.menu.Bottom=Botten
-firebug.menu.tip.Bottom=Placera Firebug vid botten av webbläsarfönstret
-firebug.menu.Left=Vänster
-firebug.menu.tip.Left=Placera Firebug vänster om webbläsarfönstret
-firebug.menu.Right=Höger
-firebug.menu.tip.Right=Placera Firebug höger om webbläsarfönstret
-firebug.uiLocation=UI-placering
-firebug.menu.tip.UI_Location=Placering av Firebugs användargränssnitt
-# For example, right clicking on an element in the HTML panel offers an action to inspectn\n
-# clicked element in the DOM panel (tab).n\n
-annotations.confirm.clear=Vill du tömma Firebugs ihågkomna data för alla webbsidor?
-# #1 Target panel titlen\n
-# examples: Inspect in DOM Tabn\n
-firebug_options=Inställningar för Firebug
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugn\n
-# do not translate.n\n
-firebug.Show_All_Panels=Visa alla paneler
-console.option.Show_Command_Line=Visa kommandorad
-console.option.tip.Show_Command_Line=Ge fokus till kommandoraden/visa kommandoradspopupen
-# #1 jsdIScript.tagn\n
-ShowJavaScriptErrors=Visa JavaScript-fel
-console.option.tip.Show_JavaScript_Errors=Logga JavaScript-felmeddelanden till konsollen
-ShowJavaScriptWarnings=Visa JavaScript-varningar
-console.option.tip.Show_JavaScript_Warnings=Logga JavaScript-varningar till konsollen
-ShowCSSErrors=Visa CSS-fel
-console.option.tip.Show_CSS_Errors=Logga CSS-felmeddelanden till konsollen
-ShowXMLHTMLErrors=Visa XML/HTML-fel
-console.option.tip.Show_XML_HTML_Errors=Logga XML- och HTML-felmeddelanden till konsollen
-ShowStackTrace=Visa stackspårning vid fel
-console.option.tip.Show_Stack_Trace=Visa stackspårningsinformation för felmeddelanden
-ShowXMLHttpRequests=Visa XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Logga XMLHttpRequests till konsollen
-ShowChromeErrors=Visa interna fel
-console.option.tip.Show_System_Errors=Logga program- och tilläggsrelaterade felmeddelanden till konsollen
-ShowChromeMessages=Visa interna meddelanden
-console.option.tip.Show_System_Messages=Logga program- och tilläggsrelaterade interna meddelanden till konsollen
-ShowNetworkErrors=Visa nätverksfel
-console.option.tip.Show_Network_Errors=Logga nätverksfel till konsollen
-JavascriptOptionsStrict=Strikta varningar (sämre prestanda)
-console.option.tip.Show_Strict_Warnings=Logga striktare varningar till konsollen (javascript.options.script)
-Command_History=Kommandohistorik
-console.option.Show_Command_Editor=Visa kommandoredigeraren
-console.option.tip.Show_Command_Editor=Byt till den stora kommandoredigeraren
-commandLineShowCompleterPopup=Visa popup för auto-komplettering
-console.option.tip.Show_Completion_List_Popup=Visa popupen för kommandoradens auto-komplettering
-Assertion=Assertion fel
-# HTML panel context menu items.n\n
-# Quick Info Boxn\n
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumen\n
-# button that are used when the HTML panel is currently selected. The button allows stoppingn\n
-# JS execution when DOM of the current page is modified.n\n
-Line=%S (rad %S)
-LineAndCol=%S (rad %S, kol %S)
-InstanceLine=%S #%S (rad %S)
-StackItem=%S (%S rad %S)
-SystemItem=<System>
-# LOCALIZATION NOTE (html.label.Expand/Contract_All): Used within the HTML for a context n\n
-# menu item. The user can expand/contract the element together with all its children to n\n
-# quickly see the entire hierarchical structure or collapse it.n\n
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange): Used within the DOM panel to createn\n
-# a \'property breakpoint\'. Right click on an property of an object. The label is alson\n
-panel.Inspect_In_Panel=Inspektera i %S-panelen
-panel.tip.Inspect_In_Panel=Byt till %S-panelen för att undersöka objektet där
-NoName=(inget namn)
-# used for the \'break on next button\' (available on the toolbar).n\n
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for then\n
-# \'break on next button\'n\n
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
-# editing an existing HTML element attribute.n\n
-# #1 Name of the clicked attribute.n\n
-ShowFullText=Visa hela texten
-html.option.tip.Show_Full_Text=Beskär inte elementens innehåll
-# examples: Edit Attribute \"onclick\"...n\n
-# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
-# deleting an existing HTML element attribute.n\n
-ShowWhitespace=Visa whitespace
-html.option.tip.Show_Whitespace=Visa whitespace inuti noder
-# #1 Name of the clicked attribute.n\n
-# examples: Delete Attribute \"onclick\"...n\n
-ShowComments=Visa kommentarer
-html.option.tip.Show_Comments=Visa kommentarsnoder
-# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.n\n
-# that has been inherited. Used in the Style side panel (under HTML panel).n\n
-# examples: Inherited from table.tabViewn\n
-html.option.Show_Entities_As_Symbols=Visa entiteter som symboler
-html.option.tip.Show_Entities_As_Symbols=Visa XML-entiteter som de är (t.ex. ©)
-html.option.Show_Entities_As_Names=Visa entiteter som namn
-html.option.tip.Show_Entities_As_Names=Visa XML-entiteter som förkortningsnamn (t.ex. ©)
-html.option.Show_Entities_As_Unicode=Visa entiteter som Unicode
-html.option.tip.Show_Entities_As_Unicode=Visa XML-entiteter som Unicode-siffror (t.ex. ©)
-# LOCALIZATION NOTE (css.EmptyStyleSheet): This description is displayed in the CSS paneln\n
-# in case there are no stylesheets attached to the current page.n\n
-# The text between <a> and </a> is displayed as a link.n\n
-HighlightMutations=Markera ändringar
-html.option.tip.Highlight_Mutations=Markera ändringar inuti noder
-# LOCALIZATION NOTE (css.EmptyElementCSS2): This description is displayed in the Style side paneln\n
-# (available within the HTML panel) in case there are no CSS rules for the selected element.n\n
-# The text between <a> and </a> is displayed as a link.n\n
-ExpandMutations=Expandera ändringar
-html.option.tip.Expand_Mutations=Expandera trädvyn för att visa ändrade noder
-# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.n\n
-# Allows to edit an existing CSS rule property.n\n
-# %S Name of the clicked propertyn\n
-ScrollToMutations=Bläddra fram ändringar automatiskt
-html.option.tip.Scroll_To_Mutations=Scrolla trädvyn för att få ändringar att synas
-# examples: Edit \"background-color\"...n\n
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.n\n
-# Allows to disable an existing CSS rule property.n\n
-ShowQuickInfoBox=Visa snabbinfoboxen
-inspect.option.tip.Show_Quick_Info_Box=Visa information om det inspekterade elementet i en ruta över sidan
-# %S Name of the clicked propertyn\n
-# examples: Disable \"background-color\"n\n
-# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.n\n
-ShadeBoxModel=Skugga box model
-inspect.option.tip.Shade_Box_Model=Skugga de olika delarna av CSS:s "box model"
-ScrollIntoView=Bläddra fram automatiskt
-html.tip.Scroll_Into_View=Scrolla sidan så att elementet blir synligt
-NewAttribute=Nytt attribut...
-html.tip.New_Attribute=Lägg till ett nytt attribut till det här elementet
-html.Edit_Node=Redigera %S...
-html.Node=nod
-html.tip.Edit_Node=Redigera %S-koden med hjälp av fulltext-editorn
-DeleteElement=Ta bort element
-html.Delete_Element=Ta bort elementet från DOM-trädet
-DeleteNode=Ta bort nod...
-html.Delete_Node=Ta bort noden från DOM-trädet
-# Allows to delete an existing CSS rule property.n\n
-quickInfo=Snabbinfo
-computedStyle=Beräknad stil
-# %S Name of the clicked propertyn\n
-# examples: Delete \"background-color\"n\n
-# Console context menu labels.n\n
-html.Break_On_Mutate=Bryt vid mutering
-html.Disable_Break_On_Mutate=Bryt inte vid mutering
-html.label.Break_On_Text_Change=Bryt vid textändring
-html.label.HTML_Breakpoints=HTML-brytpunkter
-html.label.Break_On_Attribute_Change=Bryt vid attributändringar
-html.tip.Break_On_Attribute_Change=Stoppa JavaScript-exekvering när ett attribut på det här elementet ändras
-html.label.Break_On_Child_Addition_or_Removal=Bryt när undernoder tas bort och läggs till
-html.tip.Break_On_Child_Addition_or_Removal=Stoppa JavaScript-exekvering när en barnnod läggs till/tas bort från det här elementet
-html.label.Break_On_Element_Removal=Bryt vid borttagning av element
-html.tip.Break_On_Element_Removal=Stoppa JavaScript-exekvering när det här elementet tas bort
-# LOCALIZATION NOTE do not translate, no longer used(?)n\n
-# Breakpoints side paneln\n
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttonsn\n
-# within balloon popup dialog. This dialog appears when debugger halts at a breakpoint or atn\n
-html.label.Expand/Contract_All=Expandera/slå ihop alla
-html.tip.Expand/Contract_All=Expandera eller slå ihop alla barnnoder, rekursivt
-# a \'debugger\' keyword.n\n
-# Continue: allows to resume the debuggern\n
-dom.scopeName=(closure)
-# Disable: allows to disable the current \'debugger;\' keyword used in the Javascript source.n\n
-# Script paneln\n
-dom.scopeParentName=(föräldra-scope)
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):n\n
-# Labels used to describe layout properties a the selected HTML element.n\n
-dom.tip.scopeName=Använd <funktion>.%closureVariabel för att använda i kommandoraden
-# Used in the Layout side panel under HMTL panel.n\n
-# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side paneln\n
-# under HTML panel.n\n
-dom.tip.scopeMemberName=Använd <funktion>.%S för att använda i kommandoraden
-# Net paneln\n
-# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)n\n
-firebug.reps.declarativeScope=[deklarativt scope]
-firebug.reps.objectScope=[objekts-scope]
-firebug.reps.withScope=[with-scope]
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,n\n
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,n\n
-firebug.reps.optimizedAway=(bortoptimerad)
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):n\n
-# Labels and tooltips for a headers displayed on top of the Net panel.n\n
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.n\n
-firebug.reps.element.attribute_value=attributvärde
-firebug.reps.element.property_value=egenskapsvärde
-# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s contextn\n
-# menu for breaking on a XHR.n\n
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in then\n
-dom.label.breakOnPropertyChange=Bryt vid egenskapsändring
-dom.tip.Break_On_Property_Change=Stoppa JavaScript-exekvering när den här egenskapen ändras
-# Net panel\'s Headers tab (displayed if you expand a network request). The label is usedn\n
-# for a button that switches the view between \"show raw source code\" and \"pretty formated headern\n
-dom.disableBreakOnPropertyChange=Bryt inte vid egenskapsändring
-dom.label.DOM_Breakpoints=DOM-brytpunkter
-# values\".n\n
-# LOCALIZATION NOTE (net.filter.Media): Label for net panel filter (used on the Net panel toolbar)n\n
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutn\n
-# a network request (displayed when a net panel entry is expanded). The content ofn\n
-EditAttribute=Ändra attribut \"%S\"...
-html.tip.Edit_Attribute=Ändra värdet av attributet "%S" på det här elementet
-# this tab displays sent data (related to a HTTP send method).n\n
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):n\n
-# Label used in the Net panel for detailed info about a network request (displayedn\n
-# when a net panel entry is expanded)n\n
-DeleteAttribute=Radera attribut \"%S\"
-html.tip.Delete_Attribute=Ta bort attributet "%S" från det här elementet
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in then\n
-# Net panel for JSON responses Allows to sort alphabetically.n\n
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net paneln\n
-InheritedFrom=Ärvd från
-SothinkWarning=Tillägget Sothink SWF Catcher hindrar Firebug från att fungera korrekt.<br><br>Var vänlig läs <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">detta inlägg i Firebugs FAQ</a> för hjälp.
-# (expand an entry in the panel and select Headers tab).n\n
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semi-colon list of plural forms.n\n
-css.fontFamilyPreview=Flygande bäckasiner söka hwila på mjuka tuvor. QXZ, 0123456789
-# A message displayed in the Net panel when some entries must be removed since maximum numbern\n
-# of entries has been reached.n\n
-# #1 the number of entries removedn\n
-css.EmptyStyleSheet=Det finns inga regler. Du kan <a>skapa en regel</a>.
-# example: Firebug\'s log limit has been reached. 150 entries not shown.n\n
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitn\n
-# has been reached. Informing the user what preferencee should be changed to modify the limit.n\n
-css.EmptyElementCSS=Detta element har inga stilregler. Du kan <a>skapa en regel för det</a>.
-EditStyle=Redigera elementets stil...
-style.tip.Edit_Style=Redigera elementets inline-stilar
-AddRule=Lägg till regel...
-css.tip.AddRule=Lägg till en generell regel för det här elementet
-NewRule=Ny regel...
-css.tip.New_Rule=Skapa en ny regel
-# %S Name of a preference.n\n
-# examples: In order to change the limit modify: firebug.extensions.console.logLimitn\n
-# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.n\n
-# (result of javascript profiler tool). Represents a verb.n\n
-css.Delete_Rule=Ta bort \"%S\"
-css.tip.Delete_Rule=Ta bort regeln \"%S\" och alla dess egenskaper
-# LOCALIZATION NOTE (plural.Profile_Time2): Semi-colon list of plural forms.n\n
-# Used as a caption for reported profile info (result of javascript profiler tool).n\n
-# #1 number of millisecondsn\n
-css.menu.Edit_Media_Query=Redigera media query...
-css.menu.tip.Edit_Media_Query=Redigera den här regelns media query
-NewProp=Ny egenskap...
-css.tip.New_Prop=Lägg till en ny egenskap till den nuvarande regeln
-# #2 number of calls (plural)n\n
-# example: (#1ms, #2 calls)n\n
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headern\n
-# (name of a report column). In order to see this, select the Console panel start profilingn\n
-EditProp=Redigera \"%S\"...
-css.tip.Edit_Prop=Redigera värdet av egenskapen \"%S\"
-# by clicking the Profile button and stop it by clicking again. The report is logged into then\n
-# console panel. Make sure Script panel is enabled.n\n
-# Support for clipboard actions.n\n
-# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptn\n
-DisableProp=Inaktivera \"%S\"
-css.tip.Disable_Prop=Inaktivera egenskapen \"%S\"
-# panel when clicking a function object.n\n
-# %S Name of the functionn\n
-# Log Calls to \"getData\"n\n
-# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): A tooltip used for a button on mainn\n
-DeleteProp=Radera \"%S\"
-css.tip.Delete_Prop=Radera egenskapen \"%S\"
-# Firebug toolbar. This button allows to open the command line even within other panels.n\n
-BreakOnThisError=Bryt vid detta fel
-console.menu.tip.Break_On_This_Error=Stoppa JavaScript-exekvering när det här felet uppträder igen
-BreakOnAllErrors=Bryt vid alla fel
-console.menu.tip.Break_On_All_Errors=Stoppa JavaScript-exekvering så fort ett fel uppstår
-# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console paneln\n
-# if specific method is not supported.n\n
-# %S Name of a not supported method.n\n
-TrackThrowCatch=Spåra Throw/Catch
-UseLastLineForEvalName=Använd senaste raden för eval() namn
-UseMD5ForEvalName=Använd MD5 för eval() namn
-# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console paneln\n
-Breakpoints=Brytpunkter
-ErrorBreakpoints=Brytpunkter för fel
-LoggedFunctions=Loggade funktioner
-EnableAllBreakpoints=Aktivera alla brytpunkter
-breakpoints.option.tip.Enable_All_Breakpoints=Aktivera alla listade brytpunkter
-DisableAllBreakpoints=Inaktivera alla brytpunkter
-breakpoints.option.tip.Disable_All_Breakpoints=Inaktivera alla listade brytpunkter
-ClearAllBreakpoints=Ta bort alla brytpunkter
-breakpoints.option.tip.Clear_All_Breakpoints=Ta bort alla listade brytpunkter
-ConditionInput=Denna brytpunkt kommer att stoppa exekvering enbart om detta uttryck är sant:
-# when a not supported method is used on the command line.n\n
-# %S Name of a not supported method.n\n
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):n\n
-breakpoints.Remove_Breakpoint=Ta bort brytpunkt
-breakpoints.tip.Remove_Breakpoint=Ta bort brytpunkten
-breakpoints.Disable_Breakpoint=Inaktivera brytpunkt
-breakpoints.tip.Disable_Breakpoint=Inaktivera brytpunkten
-breakpoints.Enable_Breakpoint=Aktivera brytpunkt
-breakpoints.tip.Enable_Breakpoint=Aktivera brytpunkten
-# Tooltip for the \"Break on... \" button used when the Console panel is selected.n\n
-# LOCALIZATION NOTE (console.Use_TAB_and_arrow_keys) n\n
-# Top of the completion popup in the command linen\n
-# Console strings used when JavaScript is not availablen\n
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the consolen\n
-script.balloon.Continue=Fortsätt
-script.balloon.Disable=Inaktivera
-ScriptsFilterStatic=Visa statiska skript
-ScriptsFilterEval=Visa skript: statiska och eval()
-ScriptsFilterEvent=Visa skript: statiska och händelser
-ScriptsFilterAll=Visa skript: statiska, eval() och händelser
-ScriptsFilterStaticShort=statiska
-ScriptsFilterEvalShort=eval()
-ScriptsFilterEventShort=händelser
-ScriptsFilterAllShort=alla
-# in cases when the current page is an XML document. The text between <a> and </a> is a link.n\n
-# that cause to switch into HTML rendering of the document.n\n
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,n\n
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):n\n
-callstack.Expand_All=Utvidga alla
-callstack.tip.Expand_All=Utvidga alla stackposter
-callstack.Collapse_All=Kollapsa alla
-callstack.tip.Collapse_All=Kollapsa alla stackposter
-# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mousen\n
-# over a Size displayed within the Net panel. \'Total Sent\' and \'Total Received\' info includesn\n
-callstack.Execution_not_stopped=Stackposter visas bara när skriptexekvering är stoppad.
-# even sent and received heades size.n\n
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Netn\n
-# panel (inside the Post tab of an expanded request entry). The message informs the user thatn\n
-# posted data reached Firebug\'s size limit and only part of it is displayed in the UI.n\n
-ShowUserProps=Visa användardefinierade egenskaper
-dom.option.tip.Show_User_Props=Visa användardefinierade egenskaper som är medlemmar av objektet
-ShowUserFuncs=Visa användardefinierade funktioner
-dom.option.tip.Show_User_Funcs=Visa användardefinierade funktioner som är medlemmar av objektet
-ShowDOMProps=Visa DOM-egenskaper
-dom.option.tip.Show_DOM_Props=Visa allmänna egenskaper från DOM:et
-ShowDOMFuncs=Visa DOM-funktioner
-dom.option.tip.Show_DOM_Funcs=Visa allmänna funktioner från DOM:et
-ShowDOMConstants=Visa DOM-konstanter
-dom.option.tip.Show_DOM_Constants=Visa allmänna konstanter från DOM:et
-ShowClosures=Visa closures
-dom.option.tip.Show_Closures=Visa vilka closures som är associerade med olika funktioner (aktiverar debuggern)
-ShowInlineEventHandlers=Visa inline-händelsehanterare
-ShowInlineEventHandlersTooltip=Visa tillgängliga inline-händelsehanterare som inte associerats med någon funktion (onclick, etc.)
-ShowOwnProperties=Visa bara egna egenskaper
-ShowOwnPropertiesTooltip=Göm egenskaper som kommer från prototypskedjan
-ShowEnumerableProperties=Visa bara uppräkningsbara egenskaper
-ShowEnumerablePropertiesTooltip=Visa bara egenskaper definierade som "enumerable"
-NoMembersWarning=Det finns inga egenskaper för detta objekt
-NewWatch=Nytt bevakningsuttryck...
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):n\n
-# Labels for Net panel\'s options.n\n
-AddWatch=Lägg till bevakning
-watch.tip.Add_Watch=Lägg till markeringen/objektet i Bevaka-panelen för observation
-# LOCALIZATION NOTE (net.option.Show_BF_Cache_Responses, net.option.tip.Show_BF_Cache_Responses):n\n
-# Net panels\'s option. If set to true, the net panel displays also response coming fromn\n
-CopySourceCode=Kopiera källkod
-script.tip.Copy_Source_Code=Kopiera den markerade källkoden till klippbordet
-Use_hash_plus_number_to_go_to_line=Använd <#nummer> för att gå till raden
-CopyValue=Kopiera värde
-dom.tip.Copy_Value=Kopiera egenskapens värde till klippbordet
-Copy_Name=Kopiera namn
-dom.tip.Copy_Name=Kopiera egenskapens namn till klippbordet
-Copy_Path=Kopiera sökväg
-dom.tip.Copy_Path=Kopiera egenskapens sökväg till klippbordet
-NewProperty=Ny egenskap...
-EditProperty=Redigera egenskap...
-dom.tip.Edit_Property=Redigera egenskapens värde
-EditVariable=Redigera variabel...
-stack.tip.Edit_Variable=Redigera variabelns värde
-EditWatch=Redigera bevakning...
-watch.tip.Edit_Watch=Redigera bevakningsuttryckets värde
-DeleteProperty=Ta bort egenskap
-dom.tip.Delete_Property=Ta bort egenskapen
-DeleteWatch=Ta bort watch
-DeleteAllWatches=Ta bort alla bevakningar
-watch.tip.Delete_Watch=Ta bort bevakningsuttrycket
-watch.tip.Delete_All_Watches=Ta bort alla bevakningsuttrycken
-# BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCachen\n
-# LOCALIZATION NOTE (plural.Request_Count2): Semi-colon list of plural forms.n\n
-SetBreakpoint=Sätt brytpunkt
-script.tip.Set_Breakpoint=Lägg till eller ta bort en brytpunkt på den nuvarande raden
-# A label used in the Net panel. Displays number of HTTP requests executed by the current page.n\n
-# #1 number of requestsn\n
-# example: 21 requestsn\n
-EditBreakpointCondition=Villkor för brytpunkt...
-breakpoints.tip.Edit_Breakpoint_Condition=Ändra villkoret under vilket brytpunkten stoppar JavaScript-exekvering
-NoBreakpointsWarning=Det finns inga brytpunkter för denna sida
-# LOCALIZATION NOTE (plural.Error_Count2): Semi-colon list of plural forms.n\n
-# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.n\n
-# #1 number of errorsn\n
-Only_Show_Applied_Styles=Visa endast använda formatmallar
-style.option.tip.Only_Show_Applied_Styles=Visa bara de stildeklarationer som applicerar på elementet
-# example: 111 Errorsn\n
-# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.n\n
-# With: the scope inside of the with(obj) {} statementn\n
-Show_User_Agent_CSS=Visa webbläsarens CSS
-style.option.tip.Show_User_Agent_CSS=Visa även den CSS som automatiskt definierats av webbläsaren
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };n\n
-# Window: the scope inside of a Javascript window object.n\n
-# Net panel timing info labelsn\n
-#A11y Chrome Labels (not visible, spoken by screen readers)n\n
-#A11y panelNode labels (not visible, spoken by screen readers)n\n
-computed.option.label.Colors_As_Hex=Färger som hex
-computed.option.tip.Colors_As_Hex=Visa färger i hexadecimalt format (t.ex. #FFFFFF)
-computed.option.label.Colors_As_RGB=Färger som RGB
-computed.option.tip.Colors_As_RGB=Visa färger i RGB-format (t.ex. rgb(255, 255, 255))
-computed.option.label.Colors_As_HSL=Färger som HSL
-computed.option.tip.Colors_As_HSL=Visa färger i HSL-format (t.ex. hsl(0, 0%, 100%))
-#A11y Domplate labels (not visible, spoken by screen readers)n\n
-# LOCALIZATION NOTEn\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# Describe contents of inline editor fieldsn\n
-style.option.label.active=:active
-style.option.tip.active=Visa stilar som matchar pseudo-klassen :active
-# LOCALIZATION NOTE (a11y.labels.overridden):n\n
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# indicates style property is overridden by selector with higher specificityn\n
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):n\n
-style.option.label.hover=:hover
-style.option.tip.hover=Visa stilar som matchar pseudo-klassen :hover
-# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
-# Existence and state of a breakpointn\n
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-style.option.label.focus=:focus
-style.option.tip.focus=Visa stilar som matchar pseudo-klassen :focus
-# #1 Line number, #2 Function name, #3 File namen\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-css.label.Inspect_Declaration=Gå till deklaration
-css.tip.Inspect_Declaration=Inspektera deklarationen av den här web-fonten
-# Describes the match found when performing a console panel search n\n
-# #1 %S String key the use is looking for. #2 number of rows that contain the matched textn\n
-# examples: Match found for \"test\" in 17 log rowsn\n
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlyn\n
-Expand_Shorthand_Properties=Expandera kortegenskaper
-css.option.tip.Expand_Shorthand_Properties=Expandera förkortade CSS-egenskaper (t.ex. margin) till sina beståndsdelar
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a script panel search n\n
-# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found inn\n
-# examples: Match found for \"window.alert\" on line 322 in utilities.jsn\n
-Sort_alphabetically=Sortera alfabetiskt
-computed.option.tip.Sort_Alphabetically=Sortera stilegenskaperna alfabetiskt/gruppera dem i kategorier
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in an element node) n\n
-Show_Mozilla_specific_styles=Visa Mozillaspecifika stilar
-computed.option.tip.Show_Mozilla_Specific_Styles=Visa stilar prefixade med -moz
-# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementn\n
-# examples: Match found for \"obj\" in object element at /html/body/object[2]n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlyn\n
-computed.No_User-Defined_Styles=Det här elementet har inga användardefinierade stilar.
-script.Type_any_key_to_filter_list=Tryck valfri tangent för att filtrera listan
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node) n\n
-# #1 Search string that was matched. #2 Attribute name #3 attribute value n\n
-# #4 the HTML element name containing. #5 XPATH string specifying the matched elementn\n
-# examples: Match found for \"abindex\" in tabindex=\"0\" in span element at /html/body/span[2]n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) n\n
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=position
-LayoutAdjacent=intilliggande
-position=position
-# #1 Search string that was matched. #2 element\'s text content n\n
-# #3 the HTML element name containing. #4 XPATH string specifying the matched elementn\n
-# examples: Match found for \"Firebug Rocks!\" in h2 element at /html/body/h2[2]n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlyn\n
-ShowRulers=Visa linjaler och guider
-layout.option.tip.Show_Rulers=Visa linjaler och guider när du för musen över olika delar av layout-boxen
-# visible in the UI, intended for screen readers.n\n
-Loading=Laddar...
-Headers=Headers
-# Describes the match found when performing a CSS panel search (if it is found in a selector) n\n
-# #1 Search string that was matched. #2 selector in which the match was found n\n
-net.tip.Clear=Töm begäranslistan
-# examples: Match found for \"main\" in #mainContent h2 {n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlyn\n
-net.header.Reset_Header=Återställ kolumner
-net.header.tip.Reset_Header=Återställ vilka kolumner som visas till standardvärdet
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration) n\n
-# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to n\n
-# examples: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {n\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-net.header.URL=URL
-net.header.URL_Tooltip=Begärd URL och HTTP-metod.
-net.header.Status=Status
-net.header.Status_Tooltip=Status för mottaget svar.
-net.header.Domain=Domän
-net.header.Domain_Tooltip=Domän för begäran.
-net.header.Size=Storlek
-net.header.Size_Tooltip=Storlek på svaret.
-net.header.Timeline=Tidslinje
-net.header.Timeline_Tooltip=Detaljerad timinginformation för begäran/svar.
-net.header.Local_IP=Lokal IP
-net.header.Local_IP_Tooltip=Lokal IP-adress och port som begäran görs till
-net.header.Remote_IP=Fjärr IP
-net.header.Remote_IP_Tooltip=Fjärr IP-adress och port som begäran görs till
-net.header.Protocol=Protokoll
-net.header.Protocol_Tooltip=URL-protokollet som används för att komma åt resursen på nätet
-# Describes the match found when performing a DOM panel search n\n
-net.label.XHR_Breakpoints=XHR-brytpunkter
-# #1 Search string that was matched. #2 DOM property in which the match was found n\n
-# examples: Match found for \"time\" in _starttime : 1257324992232 (Number)n\n
-net.label.Break_On_XHR=Bryt vid XHR
-net.tip.Break_On_XHR=Stoppa JavaScript-exekvering så fort en XMLHttpRequest skickas
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a Net panel search n\n
-net.headers.view_source=visa källkod
-net.headers.pretty_print=snygg utskrift
-# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
-# #3 Column in which the match was found #4. Column value n\n
-# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 msn\n
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
-# visible in the UI, intended for screen readers.n\n
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
-# #1 Search string that was matched. #2 Column value in which the match was found n\n
-# examples: Match found for \"05\" in net summary row: 4.05sn\n
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
-Post=Post
-Put=Put
-# visible in the UI, intended for screen readers.n\n
-# Indicates that the searched string was not matched n\n
-# %S Search string that was matched. n\n
-Response=Response
-URLParameters=Params
-Cache=Cache
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Allmän information
-fontviewer.Meta_Data=Metadata
-fontviewer.view_source=visa källa
-fontviewer.Preview=Förhandsvisning
-fontviewer.view_characters=visa tecken
-fontviewer.pretty_print=snygg utskrift
-fontviewer.view_sample=visa exempel
-fontviewer.uniqueid=Unikt ID
-fontviewer.vendor=Leverantör
-fontviewer.license=Licens
-fontviewer.description=Beskrivning
-fontviewer.copyright=Copyright
-fontviewer.credits=Erkännanden
-fontviewer.trademark=Varumärke
-fontviewer.licensee=Licensinnehavare
-fontviewer.extension=Tillägg
-# examples: No matched found for \"wefkhwefkgwekhjgjh\"n\n
-# Console messages.n\n
-jsonviewer.sort=Sortera efter nyckel
-jsonviewer.do_not_sort=Sortera inte
-# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
-# If Firebug is displayed in an external window (detached), but not active for then\n
-# currently selected Firefox tab, the following button label is used for ann\n
-# activation button.n\n
-net.jsonviewer.Copy_JSON=Kopiera \"%S\" som JSON
-# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
-# An error message displayed in the Script panel when a source can\'t be displayedn\n
-RequestHeaders=Request Headers
-ResponseHeaders=Response Headers
-# for specific URL.n\n
-# examples: Failed to load source for: http://www.example.com/script.jsn\n
-# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
-net.label.ResponseHeadersFromBFCache=Begäran besvarades direkt från cachen, så det finns ingen respons från servern. Se nedan för cachad respons.
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,n\n
-# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.n\n
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):n\n
-# Tooltips for back/forward buttons on the Script panel toolbar.n\n
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):n\n
-plural.Limit_Exceeded2=Firebugs loggräns har nåtts. %1$S post visas inte.;Firebugs loggräns har nåtts. %1$S poster visas inte.
-LimitPrefs=Inställningar
-# This message is displayed within the Script panel if debugger is inactive during page load.n\n
-# The suggestion message represents an advice how to solve the problem.n\n
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):n\n
-# This message is displayed within the Script panel if javascript is not enabled.n\n
-LimitPrefsTitle=För att modifiera gränsvärdet, ändra: %S
-Refresh=Uppdatera
-panel.tip.Refresh=Uppdatera panel-displayen
-# The suggestion message represents an advice how to solve the problem.n\n
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed onn\n
-OpenInTab=Öppna i ny flik
-firebug.tip.Open_In_Tab=Öppna URL:en i en ny webbläsarflik
-Open_Response_In_New_Tab=Öppna svar i ny flik
-net.tip.Open_Response_In_New_Tab=Öppna svaret i en ny webbläsarflik
-# the Script panel if Javascript is disabled. This button allows to enable it.n\n
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):n\n
-Profile=Profilera
-ProfilerStarted=Profileraren kör. Klicka \'Profilera\' igen för att se en rapport.
-# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
-# The suggestion message represents an advice how to solve the problem.n\n
-# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):n\n
-# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
-# The suggestion message represents an advice how to solve the problem.n\n
-plural.Profile_Time2=(%1$Sms, %2$S anrop);(%1$Sms, %2$S anrop)
-NothingToProfile=Ingen aktivitet att profilera.
-PercentTooltip=Procentuell andel av tid spenderad på denna funktion.
-CallsHeaderTooltip=Antal gånger denna funktion anropades.
-OwnTimeHeaderTooltip=Tid spenderad i funktion, exkluderat nästlade anrop.
-TimeHeaderTooltip=Tid spenderad i funktion, inkluderat nästlade anrop.
-AvgHeaderTooltip=Genomsnittstid, inklusive funktionsanrop.
-MinHeaderTooltip=Minimumtid, inklusive funktionsanrop.
-MaxHeaderTooltip=Maximumtid, inklusive funktionsanrop
-Function=Funktion
-Percent=Procent
-#firebug.dtdn\n
-# LOCALIZATION NOTE (firebug.Rerun, firebug.Continue, firebug.StepOver, firebug.StepInto, firebug.StepOut)n\n
-# Labels used for debugger \'stepping\' buttons that are available in the Script panel.n\n
-#editors.dtdn\n
-Calls=Anrop
-OwnTime=Egen tid
-Time=Tid
-Avg=Medel
-Min=Min
-Max=Max
-File=Fil
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,n\n
-Copy=Kopiera
-Cut=Klipp ut
-Remove=Ta bort
-Delete=Ta bort
-Paste=Klistra in
-SelectAll=Markera allt
-html.Copy_Node=Kopiera %S
-html.tip.Copy_Node=Kopiera %S-nodes och dess innehåll till klippbordet
-CopyInnerHTML=Kopiera innerHTML
-html.tip.Copy_innerHTML=Kopiera elementets innehåll till klippbordet
-CopyXPath=Kopiera XPath
-html.tip.Copy_XPath=Kopiera elementets XPath till klippbordet
-Copy_CSS_Path=Kopiera sökväg till CSS
-html.tip.Copy_CSS_Path=Kopiera elementets CSS-sökväg till klippbordet
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)n\n
-# Used in the CSS panel for the Edit button.n\n
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
-# in the Console panel when the private browsing mode is on (in Firefox 4 it\'s Startn\n
-# Private Browsing mode)n\n
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications): This label is used withinn\n
-# Script panel\'s tab menu. Represents an option that can be used to switch of thesen\n
-# notifications.n\n
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
-CopyLocation=Kopiera URL
-clipboard.tip.Copy_Location=Kopiera objektets URL till klippbordet
-CopyURLParameters=Kopiera URL-parametrar
-net.tip.Copy_URL_Parameters=Kopiera URL-parametrarna till klippbordet
-CopyPOSTParameters=Kopiera POST-parametrar
-net.tip.Copy_POST_Parameters=Kopiera POST-parametrarna till klippbordet
-CopyLocationParameters=Kopiera URL inkl. parametrar
-net.tip.Copy_Location_Parameters=Kopiera både URL och parametrar till klippbordet
-CopyRequestHeaders=Kopiera Request Headers
-CopyResponseHeaders=Kopiera Response Headers
-CopyResponse=Kopiera Response Body
-# in a break notification balloon popup next to a checkbox.n\n
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):n\n
-CopyError=Kopiera fel
-console.menu.tip.Copy_Error=Kopiera felinformationen till klippbordet
-# This message is displayed in a break notification popup when break on debugger; keyword happens.n\n
-# The keyword can be disabled by creating a disabled breakpoint on the same line.n\n
-CopySource=Kopiera funktion
-dom.tip.Copy_Source=Kopiera funktionens källkod till klippbordet
-# The other label is used for a tooltip on the action button.n\n
-# LOCALIZATION NOTE (firebug.dom.noChildren): This message is displayed in the DOM paneln\n
-# in cases where there are no children objects and so nothing to display.n\n
-# LOCALIZATION NOTE (firebug.reps.more): This label is when displayed array/list hasn\n
-# more elements then it\'s displayed on the screen. \"...\" is automatically appended.n\n
-ShowCallsInConsole=Logga anrop till \"%S\"
-dom.tip.Log_Calls_To_Function=Logga anrop till funktionen \"%S\" i konsollen
-# example: more...n\n
-# LOCALIZATION NOTE (firebug.storage.totalItems): This label is used in the DOM paneln\n
-# for local/session/global storage. It\'s informing the user about number of items in the storage.n\n
-ShowEventsInConsole=Logga händelser
-html.tip.Show_Events_In_Console=Logga händelseinformation till konsollen
-# #1 number of storage itemsn\n
-# example: 1 item in Storagen\n
-panel.Enabled=Aktiverad
-panel.tip.Enabled=Aktivera eller inaktivera panelen
-# example: 2 items in Storagen\n
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties): This label is used by console.tablen\n
-# method if an object is passed into it. Used in table header.n\n
-panel.tooltip.Show_Command_Line_Popup=Visa kommandoradspopupen
-# LOCALIZATION NOTE (firebug.completion.empty): This label is used in the command linen\n
-# by auto-complete function. Displayed if there are no possible completions.n\n
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):n\n
-# This label is used in an image preview infotip within the HTML panel (hover over an IMG element)n\n
-console.MethodNotSupported=Firebugs konsol stöder inte \'%S\'
-# when loading of given URL fails. The firebug.failedToPreviewObjectURL is specifically usedn\n
-# for moz-filedata (HTML5),n\n
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_imagesn\n
-commandline.MethodNotSupported=Firebugs kommandorad stöder inte \'%S\'
-commandline.CurrentWindow=Nu i fönster:
-console.Disable_Break_On_All_Errors=Inaktivera brytpunkter för alla fel
-console.Break_On_All_Errors=Bryt vid alla fel
-console.Break_On_This_Error=Stoppa exekvering när det här felet uppträder igen
-console.Use_Arrow_keys,_Tab_or_Enter=Använd piltangenter, tabb eller enter
-console.JSDisabledInFirefoxPrefs=JavaScript är inaktiverat i Firefox. Om du vill använda konsollen, måste du aktivera JavaScript i menyn \'Verktyg\'->\'Inställningar\'->\'Innehåll\'->\'Aktivera JavaScript\'
-console.multiHighlightLimitExceeded=Det finns för många element i listan för att kunna markera alla på samma gång (den nuvarande gränsen är %S).\nSe inställningen \'extensions.firebug.multiHighlightLimit\'.
-commandline.disabledForXMLDocs=Firebugs kommandorad är inaktiverad för XML-sidor. Du kan <a>växla till HTML</a> för att aktivera den.
-commandline.Use_in_Command_Line=Använd i kommandoraden
-net.sizeinfo.Response_Body=Response Body
-net.sizeinfo.Post_Body=Post Body
-net.sizeinfo.Total_Sent=Skickat totalt
-net.sizeinfo.Total_Received=Mottaget totalt
-net.sizeinfo.Including_HTTP_Headers=Inklusive HTTP-huvuden
-net.ActivationMessage=Net-panel aktiverad. Förfrågningar som skickats när panelen var inaktiverad visas inte.
-net.responseSizeLimitMessage=Firebugs storleksgräns för svar har nåtts. Klicka <a>här</a> för att öppna hela svaret i en ny flik.
-net.postDataSizeLimitMessage=POST svarsstorlek överskriden; Firebug visar endast en del av svaret.
-net.Break_On_XHR=Bryt vid XHR
-net.label.Parameters=Parametrar
-net.label.Parts=Delar
-net.label.Source=Källa
-net.label.Resend=Skicka igen
-net.tip.Resend=Skicka begäran igen
-net.option.Disable_Browser_Cache=Inaktivera webbläsarens cache
-net.option.tip.Disable_Browser_Cache=Inaktivera webbläsarens HTTP-cache
-net.option.Show_Paint_Events=Visa omritningshändelser
-net.option.tip.Show_Paint_Events=Visa omritningshändelser (MozAfterPaint) som gröna linjer i tidslinjen
-net.option.Show_BFCache_Responses=Visa BFCache-svar
-net.option.tip.Show_BFCache_Responses=Visa även svar från Bakåt-Framåt-cachen
-script.Break_On_Next=Bryt på nästa
-script.Disable_Break_On_Next=Inaktivera bryt på nästa
-ShowHttpHeaders=Visa HTTP Headers
-plural.Request_Count2=%1$S request;%1$S requests
-StopLoading=Stoppa hämtning
-net.tip.Stop_Loading=Avbryt skickandet eller hämtningen av svaret på en begäran
-LargeData=(Mycket stor data)
-ShowComputedStyle=Visa uträknad stil
-StyleGroup-text=Text
-StyleGroup-background=Bakgrund
-StyleGroup-box=Boxmodell
-StyleGroup-layout=Layout
-StyleGroup-other=Övrigt
-Dimensions=%S x %S
-CopyColor=Kopiera färg
-css.tip.Copy_Color=Kopiera färgen till klippbordet
-CopyImageLocation=Kopiera bildadress
-css.tip.Copy_Image_Location=Kopiera bildens URL till klippbordet
-OpenImageInNewTab=Öppna bild i ny flik
-css.tip.Open_Image_In_New_Tab=Öppna bilden i en ny webbläsarflik
-OmitObjectPathStack=Visa inte stack i verktygsraden
-callstack.option.tip.Omit_Object_Path_Stack=Visa inte anropsstacken i Skript-panelens verktygsrad
-Load_Original_Source=Ladda originalkälla
-css.tip.Load_Original_Source=Släng bort ändringarna och ladda den ursprungliga CSS-källkoden
-Copy_Rule_Declaration=Kopiera regeldeklaration
-css.tip.Copy_Rule_Declaration=Kopiera regeln och alla dess egenskaper till klippbordet
-Copy_Style_Declaration=Kopiera stildeklaration
-css.tip.Copy_Style_Declaration=Kopiera regels egenskaper till klippbordet
-plural.Error_Count2=%1$S Fel;%1$S Fel
-moduleManager.title=Panelen %S är inaktiverad
-moduleManager.desc3=Använd popupmenyn för Firebugs statusfältsikon för att aktivera/inaktivera alla paneler samtidigt. Använd panelflikarnas meny för att kontrollera enskilda paneler.
-moduleManager.Enable=Aktivera
-Suspend_Firebug=Pausa Firebug
-Resume_Firebug=Återta Firebug
-Reset_Panels_To_Disabled=Inaktivera alla paneler
-Open_Console=Öppna konsol
-Open_Console_Tooltip=Öppna Firebugs spårningskonsol.
-Scope_Chain=Scope Chain
-With_Scope=With
-Call_Scope=Anrop
-Window_Scope=Fönster
-requestinfo.Blocking=Blockering
-requestinfo.Resolving=DNS lookup
-requestinfo.Connecting=Ansluter
-requestinfo.Sending=Skickar
-requestinfo.Waiting=Väntar
-requestinfo.Receiving=Tar emot
-requestinfo.ContentLoad=\'DOMContentLoaded\' (händelse)
-requestinfo.WindowLoad=\'load\' (händelse)
-search.Firebug_Search=Firebug sök
-search.Next=Nästa
-search.tip.Next=Hitta nästa träff
-search.Previous=Föregående
-search.tip.Previous=Hitta föregående träff
-search.Case_Sensitive=Tvinga skiftlägeskänslighet
-search.tip.Case_Sensitive=Ta hänsyn till skiftläge (små och stora bokstäver) vid sökning
-search.Case_Insensitive=Tvinga ej skiftlägeskänslighet
-search.tip.Case_Insensitive=Strunta i skiftläge (små och stora bokstäver) vid sökning
-search.Multiple_Files=Flera filer
-search.tip.Multiple_Files=Sök i alla filer relaterade till den här panelen
-search.Use_Regular_Expression=Använd reguljära uttryck
-search.tip.Use_Regular_Expression=Tolka den inmatade strängen som ett reguljärt uttryck (regex) vid sökning
-search.html.CSS_Selector=CSS-selektor
-search.net.Headers=Headers
-search.net.Parameters=Parametrar
-search.net.Response_Bodies=Response Bodies
-firebug.console.Persist=Töm ej
-firebug.console.Do_Not_Clear_On_Reload2=Rensa inte konsollen när sidan laddas om
-firebug.console.Show_All_Log_Entries=Visa alla loggrader
-firebug.console.Errors=Fel
-firebug.console.Filter_by_Errors=Filtrera på fel
-firebug.console.Warnings=Varningar
-firebug.console.Filter_by_Warnings=Filtrera på varningar
-firebug.console.Info=Information
-firebug.console.Filter_by_Info=Filtrera på information
-firebug.console.Debug_Info=Debuginformation
-firebug.console.Filter_by_Debug_Info=Filtrera på debuginformation
-firebug.Deactivate_Firebug=Inaktivera Firebug
-firebug.tip.Deactivate_Firebug=Inaktivera Firebug för den nuvarande webbsidan
-firebug.ShowFirebug=Öppna Firebug
-firebug.menu.tip.Open_Firebug=Visa Firebugs användarinterface
-firebug.HideFirebug=Dölj Firebug
-firebug.menu.tip.Minimize_Firebug=Minimera Firebug, men håll den aktiv
-firebug.FocusFirebug=Fokusera Firebug-fönstret
-firebug.menu.tip.Focus_Firebug=Fokusera det externa Firebug-fönstret
-firebug.menu.Enable_All_Panels=Aktivera alla paneler
-firebug.menu.tip.Enable_All_Panels=Aktivera alla aktiverbara paneler
-firebug.menu.Disable_All_Panels=Inaktivera alla paneler
-firebug.menu.tip.Disable_All_Panels=Inaktivera alla aktiverbara paneler
-firebug.menu.Customize_shortcuts=Anpassa snabbtangenter
-firebug.menu.tip.Customize_Shortcuts=Anpassa tangentbindningar för Firebugs interface
-firebug.Options=Inställningar
-firebug.menu.tip.Options=Globala Firebug-inställningar
-firebug.menu.Enable_Accessibility_Enhancements=Aktivera tillgänglighetsförbättringar
-firebug.menu.tip.Enable_Accessibility_Enhancements=Gör det möjligt att kontrollera Firebug via tangentbord och andra tillgänglighetsverktyg
-firebug.menu.Activate_Same_Origin_URLs2=Aktivera enligt härkomst
-firebug.menu.tip.Activate_Same_Origin_URLs=Ge URLer som är "same-origin" med varandra samma aktiveringsstatus
-firebug.menu.Reset_All_Firebug_Options=Återställ alla inställningar
-firebug.menu.tip.Reset_All_Firebug_Options=Återställ alla inställningar till sina standardvärden
-firebug.menu.Firebug_Online=Firebug online
-firebug.menu.tip.Firebug_Online=Webbsidor relaterade till Firebug
-firebug.menu.Extensions=Firebug-tillägg...
-firebug.menu.tip.Extensions=Ladda ned och installera Firebug-tillägg
-firebug.menu.Vertical_Panels=Vertikala paneler
-firebug.menu.tip.Vertical_Panels=Ändra utseende på Firebugs huvud- och sidopaneler
-firebug.menu.Show_Info_Tips=Visa infotips
-firebug.menu.tip.Show_Info_Tips=Visa popuper med information om hovrade element
-firebug.Show_Error_Count=Visa felantal
-firebug.menu.tip.Show_Error_Count=Visa antalet fel som loggats i konsollen
-firebug.TextSize=Textstorlek
-firebug.menu.tip.Text_Size=Ändra textstorleken som används i Firebug
-firebug.IncreaseTextSize=Öka textstorlek
-firebug.menu.tip.Increase_Text_Size=Öka textstorleken som används i Firebug
-firebug.DecreaseTextSize=Minska textstorlek
-firebug.menu.tip.Decrease_Text_Size=Minska textstorleken som används i Firebug
-firebug.NormalTextSize=Normal textstorlek
-firebug.menu.tip.Normal_Text_Size=Återställ textstorleken som används i Firebug till standardvärdet
-firebug.Website=Firebugs webbsida...
-firebug.menu.tip.Website=Öppna Firebugs officiella webbsida
-firebug.help=Hjälp...
-firebug.menu.tip.help=Öppna sidan med länkar till sidor som beskriver Firebug
-firebug.Documentation=Dokumentation...
-firebug.menu.tip.Documentation=Öppna dokumentationen om Firebug
-firebug.KeyShortcuts=Tangentkombinationer...
-firebug.Forums=Diskussionsgrupp...
-firebug.Issues=Issue Tracker...
-firebug.Donate=Bidra...
-firebug.About=Om...
-ProfileJavaScript=Profilera JavaScript
-firebug.menu.tip.Profile_JavaScript=Profilera exekveringstiden av JavaScript
-firebug.Search=Sök
-firebug.menu.tip.Search=Sätt fokus i sökfältet
-firebug.shortcut.reenterCommand.label=Skriv kommando igen
-firebug.shortcut.tip.reenterCommand=Kör det sist körda kommandot från kommandoraden igen
-firebug.shortcut.toggleInspecting.label=(In)aktivera granskare
-firebug.shortcut.toggleQuickInfoBox.label=(In)aktivera Snabbinfobox
-firebug.shortcut.toggleProfiling.label=(In)aktivera profilering
-firebug.shortcut.focusCommandLine.label=Fokusera kommandorad
-firebug.shortcut.focusFirebugSearch.label=Fokusera Firebug sök
-firebug.shortcut.tip.focusFirebugSearch=Sätt fokus i sökfältet
-firebug.shortcut.focusWatchEditor.label=Fokusera watchredigeraren
-firebug.shortcut.focusLocation.label=Fokusera plats
-firebug.shortcut.nextObject.label=Nästa objekt
-firebug.shortcut.previousObject.label=Föregående objekt
-firebug.shortcut.customizeFBKeys.label=Anpassa Firebugs snabbtangenter
-firebug.shortcut.detachFirebug.label=Öppna Firebug i nytt fönster
-firebug.shortcut.leftFirebugTab.label=Växla till Firebugpanel till vänster
-firebug.shortcut.rightFirebugTab.label=Växla till Firebugpanel till höger
-firebug.shortcut.toggleFirebug.label=Öppna Firebug
-firebug.shortcut.previousFirebugTab.label=Föreqående Firebugflik
-firebug.shortcut.clearConsole.label=Rensa konsoll
-firebug.shortcut.openTraceConsole.label=Öppna spårningskonsoll
-firebug.shortcut.navBack.label=Gå tillbaka
-firebug.shortcut.navForward.label=Gå framåt
-firebug.shortcut.increaseTextSize.label=Öka textstorlek
-firebug.shortcut.decreaseTextSize.label=Minska textstorlek
-firebug.shortcut.normalTextSize.label=Normal Textstorlek
-firebug.panel_selector=Panelväljare
-customizeShortcuts=Firebug snabbtangentbindningar
-a11y.labels.panel_tools=panelverktyg
-a11y.labels.firebug_panels=Firebugpaneler
-a11y.labels.firebug_side_panels=Firebug sidopaneler
-a11y.labels.firebug_window=Firebug fönster
-a11y.labels.firebug_status=Firebug status
-a11y.labels.reset=återställ
-a11y.labels.reset_shortcut=återställ genväg %S
-aria.labels.inactive_panel=inaktiv panel
-a11y.labels.log_rows=loggrader
-a11y.labels.call_stack=anropsstack
-a11y.labels.document_structure=dokumentstruktur
-a11y.labels.title_panel=%S panel
-a11y.labels.title_side_panel=%S sidopanel
-a11y.labels.cached=cachad
-aria.labels.stack_trace=stackspårning
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=position
-a11y.layout.position_top=position topp
-a11y.layout.position_right=position höger
-a11y.layout.position_bottom=position nederkant
-a11y.layout.position_left=position vänster
-a11y.layout.margin_top=margin top
-a11y.layout.margin_right=margin right
-a11y.layout.margin_bottom=margin bottom
-a11y.layout.margin_left=margin left
-a11y.layout.border_top=border top
-a11y.layout.border_right=border right
-a11y.layout.border_bottom=border bottom
-a11y.layout.border_left=border left
-a11y.layout.padding_top=padding top
-a11y.layout.padding_right=padding right
-a11y.layout.padding_bottom=padding bottom
-a11y.layout.padding_left=padding left
-a11y.layout.top=top
-a11y.layout.right=right
-a11y.layout.bottom=bottom
-a11y.layout.left=left
-a11y.layout.width=width
-a11y.layout.height=height
-a11y.layout.size=size
-a11y.layout.z-index=z-index
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=Tryck RETUR och sedan TABB för att redigera värden
-a11y.labels.style_rules=stilregler
-aria.labels.inherited_style_rules=ärvda stilregler
-a11y.labels.computed_styles=beräknade stilar
-a11y.labels.dom_properties=DOM egenskaper
-a11y.labels.inline_editor=inline editor
-a11y.labels.value_for_attribute_in_element=värde för attribut %S i element %S
-a11y.labels.attribute_for_element=värde för attribut %S
-a11y.labels.text_contents_for_element=textinnehåll för element %S
-a11y.labels.defined_in_file=definierad i %S
-a11y.labels.declarations_for_selector=stildeklaration för \'%S\' selektor
-a11y.labels.property_for_selector=CSS egenskap för selektor: %S
-a11y.labels.value_property_in_selector=Egenskapsvärde %S i selektor %S
-a11y.labels.css_selector=CSS selektor
-a11y.labels.source_code_for_file=källkod för fil %S
-a11y.labels.press_enter_to_add_new_watch_expression=tryck RETUR för att lägga till bevakningsuttryck
-a11y.labels.overridden=overridden
-a11y.updates.has_conditional_break_point=har villkorlig brytpunkt
-a11y.updates.has_disabled_break_point=har inaktiverade brytpunkter
-a11y.updates.script_suspended_on_line_in_file=Skript pausat på rad %S i %S, i fil %S
-a11y.updates.match_found_in_logrows=matchande post funnen för %S i logg, rad %S
-a11y.updates.match_found_for_on_line=matchande post funnen för %S på rad %S i %S
-a11y.updates.match_found_in_element=matchande post funnen för %S i element %S, sökväg %S
-a11y.updates.match_found_in_attribute=matchande post funnen för %S i attribut %S=%S för element %S, sökväg %S
-a11y.updates.match_found_in_text_content=matchande post funnen för %S i textinnehåll: %S för element %S, sökväg %S
-a11y.updates.match_found_in_selector=matchande post funnen för %S i selektor %S
-a11y.updates.match_found_in_style_declaration=matchande element för \"%S\" funnet i stildeklaration %S i selektor %S
-a11y.updates.match_found_in_dom_property=matchande post funnen för %S i DOM egenskap %S
-a11y.updates.match_found_in_net_row=matchande post funnen för \"%S\" i %S, %S : %S;
-a11y.updates.match_found_in_net_summary_row=matchande post funnen för %S i net summeringsrad %S
-a11y.updates.no_matches_found=inga matchande poster för \'%S\' hittades
-confirmation.Reset_All_Firebug_Options=Är du säker på att du vill återställa alla Firebugs inställningar till standardvärden?
-warning.Console_must_be_enabled=Konsolen måste aktiveras
-warning.Command_line_blocked?=Är kommandoraden blockerad?
-message.Reload_to_activate_window_console=Ladda om sidan för att aktivera konsollen
-message.The_resource_from_this_URL_is_not_text=Resursen från denna URL är inte text
-firebug.history.Go_back_to_this_panel=Gå tillbaka till denna panel
-firebug.history.Stay_on_this_panel=Stanna på denna panel
-firebug.history.Go_forward_to_this_panel=Gå framåt till denna panel
-firebug.history.Go_back=Gå tillbaka
-firebug.history.Go_forward=Gå framåt
-script.warning.inactive_during_page_load=Skriptpanelen var inte aktiverad när sidan lästes in
-script.suggestion.inactive_during_page_load2=<a>Ladda om</a> för att se alla källor
-script.warning.javascript_not_enabled=Javascript är inaktiverat
-script.suggestion.javascript_not_enabled=Gå till Firefox>Verktyg>Inställningar>Innehåll>Aktivera Javascript
-script.button.enable_javascript=Aktivera Javascript och uppdatera
-script.warning.all_scripts_filtered=Alla skript filtrerades
-script.suggestion.all_scripts_filtered=Gå till skriptfilter på verktygsfältet eller \"Visa Chrome källkod\"
-script.warning.no_javascript=Ingen Javascript på denna sida
-script.warning.debugger_active=Debuggern är redan aktiverad
-script.suggestion.debugger_active=Debuggern har stannat på en brytpunkt på en annan sida.
-script.button.Go_to_that_page=Gå till sidan
-firebug.Firebug=Firebug
-firebug.Close=Stäng
-firebug.View=Visa
-firebug.Help=Hjälp
-firebug.Run=Kör
-firebug.Copy=Kopiera
-firebug.History=Historik
-firebug.Run_the_entered_command=Kör kommandot
-firebug.Clear_the_Command_Editor=Rensa Kommandoredigeraren
-firebug.Copy_the_script_as_a_bookmarklet=Kopiera skriptet som en bookmarklet
-firebug.Insert_a_previously_entered_command=Sätt in ett tidigare inmatade kommandot
-firebug.AlwaysOpenInWindow=Öppna alltid i nytt fönster
-firebug.OpenWith=Öppna med redigeringsprogram
-firebug.Permissions=Platser...
-firebug.Configure_Editors=Konfigurera redigerare
-firebug.Inspect=Granska
-firebug.InspectElement=Granska element
-firebug.BreakOnErrors=Stanna vid fel
-firebug.InspectTooltip=Klicka på ett element i sidan för att granska det
-firebug.EditHTMLTooltip=Redigera denna HTML
-firebug.Profile=Profilera
-firebug.Clear=Rensa
-firebug.ClearConsole=Rensa konsol
-firebug.ClearTooltip=Rensa konsolen
-editors.Configured_Firebug_Editors=Konfigurerade Firebug editorer
-editors.Editor=Redigerare
-editors.Executable=Körbar
-editors.Launch_Arguments=Startargument
-editors.Add=Lägg till
-editors.Remove=Ta bort
-editors.Change=Ändra
-editors.Move_Up=Flytta upp
-editors.Close=Stäng
-editors.Browse=Bläddra ...
-changeEditor.Editor_Configuration=Redigerarkonfiguration
-changeEditor.Name=Namn:
-changeEditor.Executable=Program:
-changeEditor.CmdLine=Argument:
-changeEditor.Supplied_arguments=Argument som tillhandahålls av Firebug:
-changeEditor.URL_of_file=Webbadressen till filen (om %url är tom, läggs %file till som standard)
-changeEditor.Path_to_local_file=Sökvägen till den lokala filen (eller till tillfällig kopia)
-changeEditor.Line_number=Radnummer (om tillgängligt)
-changeEditor.Invalid_Application_Path=Ogiltig programsökväg
-changeEditor.Application_does_not_exist=Programmet finns inte!
-firebug.Edit=Redigera
-firebug.css.sourceEdit=Redigera källa
-firebug.css.sourceEdit.tooltip=Text-area redigera Stylesheet så som den läses in av webbläsaren
-firebug.css.liveEdit=Live Edit
-firebug.css.liveEdit.tooltip=Text-area redigera CSS extraherat från webbläsaren
-firebug.EditCSSTooltip=Redigera denna stilmall
-firebug.activation.privateBrowsingMode=Kom inte ihåg webbplatser i privat surfning läge
-firebug.breakpoint.showBreakNotifications=Vis brytmeddelanden
-firebug.breakpoint.doNotShowBreakNotification2=Du kan aktivera / inaktivera brytpunktsnotifikation i <a>panelens flikmeny</a>.
-firebug.bon.cause.disableDebuggerKeyword2=Klick på \"Inaktivera\"-knappen åsidosätter \"debugger\" med en inaktiverad brytpunkt.
-firebug.bon.tooltip.disableDebuggerKeyword2=Skapar en inaktiverad brytpunkt
-firebug.dom.noChildren2=Det finns inga underordnade objekt
-firebug.reps.more=mer
-firebug.storage.totalItems=%1$S objekt i lager,%1$S objekt i lager
-firebug.reps.table.ObjectProperties=Objektegenskaper
-firebug.completion.empty=(Inga kompletteringar)
-firebug.failedToPreviewObjectURL=Webbadressen objektet har troligen återkallats med revokeObjectURL metod.
-firebug.failedToPreviewImageURL=Misslyckades med att läsa angiven URL.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.n\n
+# %S Title of the associated web page.n\n
+# examples: Firebug - Googlen\n
+WindowTitle=Firebug - %S
+# Panel titlesn\n
+Panel-console=Konsol
+panel.tip.console=Låter dig titta på konsolmeddelanden och köra Javascript-kod
+Panel-net=Net
+panel.tip.net=Låter dig analysera nätverkstrafik
+Panel-html=HTML
+panel.tip.html=Låter dig inspektera och ändra DOM-strukturen
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Låter dig inspektera och ändra CSS-värden
+Panel-script=Skript
+panel.tip.script=Låter dig debugga JavaScript
+Panel-dom=DOM
+panel.tip.dom=Låter dig inspektera och ändra DOM-egenskaper
+Panel-css=Stil
+panel.tip.css=Låter dig inspektera och ändra CSS-regler för valt element
+Panel-computed=Beräknad
+panel.tip.computed=Låter dig inspektera det beräknade CSS värdet för valt element
+Panel-layout=Layout
+panel.tip.layout=Låter dig inspektera och ändra layout-data för valt element
+Panel-domSide=DOM
+panel.tip.domSide=Låter dig inspektera och ändra DOM-egenskaper för valt element
+Panel-watches=Bevaka
+panel.tip.watches=Låter dig inspektera JavaScript-variablerna i den nuvarande stackposten och definiera bevakningsuttryck
+Panel-breakpoints=Brytpunkter
+panel.tip.breakpoints=Låter dig manipulera de satta brytpunkterna
+Panel-callstack=Stack
+panel.tip.callstack=Låter dig kolla på den nuvarande anropsstacken
+Panel-scopes=Scopes
+firebug.DetachFirebug=Öppna Firebug i nytt fönster
+firebug.AttachFirebug=Docka Firebug till webbläsaren
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.n\n
+# If there is no Firebug translation for the current browser locale, this valuen\n
+# will be used instead of the one in chrome://global/locale/intl.propertiesn\n
+# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsn\n
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semi-colon list of plural forms.n\n
+# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsn\n
+# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.n\n
+# Displays number of pages with Firebug activated.n\n
+# #1 number of Firebug instances activatedn\n
+# example: 2 Total Firebugsn\n
+plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in \'list of all panels\'n\n
+# menu (available on Firebug\'s tab bar).n\n
+# Console panel options.n\n
+startbutton.tip.deactivated=Inaktiverad
+# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,n\n
+# message, etc. within a source of a web page.n\n
+# #1 File name, #2 Line numbern\n
+# examples: somePage.htm (line 64)n\n
+# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.n\n
+panel.status=%S: %S
+inBrowser=i webbläsare
+minimized=minimerad
+enablement.for_all_pages=för alla sidor
+enablement.on=På
+enablement.off=Av
+enablement.Panel_activation_status=Panelaktivering:
+none=stängd
+Firebug_-_inactive_for_current_website=Firebug - inaktiv för nuvarande webbplats
+Activate_Firebug_for_the_current_website=Aktivera Firebug för den aktuella webbplatsen
+Minimized=Minimerad
+Minimize_Firebug=Minimera Firebug
+On_for_all_web_pages=Aktiverad för alla webbsidor
+firebug.menu.tip.On_for_all_Web_Sites=Aktivera Firebug som standard för alla webbsidor
+firebug.menu.Clear_Activation_List=Töm aktiveringslistan
+firebug.menu.tip.Clear_Activation_List=Töm listan över sidor som Firebug är aktiverad för
+firebug.menu.Detached=I fönster
+firebug.menu.tip.Detached=Öppna Firebug i nytt fönster
+firebug.menu.Top=Topp
+firebug.menu.tip.Top=Placera Firebug vid toppen av webbläsarfönstret
+firebug.menu.Bottom=Botten
+firebug.menu.tip.Bottom=Placera Firebug vid botten av webbläsarfönstret
+firebug.menu.Left=Vänster
+firebug.menu.tip.Left=Placera Firebug vänster om webbläsarfönstret
+firebug.menu.Right=Höger
+firebug.menu.tip.Right=Placera Firebug höger om webbläsarfönstret
+firebug.uiLocation=UI-placering
+firebug.menu.tip.UI_Location=Placering av Firebugs användargränssnitt
+# For example, right clicking on an element in the HTML panel offers an action to inspectn\n
+# clicked element in the DOM panel (tab).n\n
+annotations.confirm.clear=Vill du tömma Firebugs ihågkomna data för alla webbsidor?
+# #1 Target panel titlen\n
+# examples: Inspect in DOM Tabn\n
+firebug_options=Inställningar för Firebug
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugn\n
+# do not translate.n\n
+firebug.Show_All_Panels=Visa alla paneler
+console.option.Show_Command_Line=Visa kommandorad
+console.option.tip.Show_Command_Line=Ge fokus till kommandoraden/visa kommandoradspopupen
+# #1 jsdIScript.tagn\n
+ShowJavaScriptErrors=Visa JavaScript-fel
+console.option.tip.Show_JavaScript_Errors=Logga JavaScript-felmeddelanden till konsollen
+ShowJavaScriptWarnings=Visa JavaScript-varningar
+console.option.tip.Show_JavaScript_Warnings=Logga JavaScript-varningar till konsollen
+ShowCSSErrors=Visa CSS-fel
+console.option.tip.Show_CSS_Errors=Logga CSS-felmeddelanden till konsollen
+ShowXMLHTMLErrors=Visa XML/HTML-fel
+console.option.tip.Show_XML_HTML_Errors=Logga XML- och HTML-felmeddelanden till konsollen
+ShowStackTrace=Visa stackspårning vid fel
+console.option.tip.Show_Stack_Trace=Visa stackspårningsinformation för felmeddelanden
+ShowXMLHttpRequests=Visa XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Logga XMLHttpRequests till konsollen
+ShowChromeErrors=Visa interna fel
+console.option.tip.Show_System_Errors=Logga program- och tilläggsrelaterade felmeddelanden till konsollen
+ShowChromeMessages=Visa interna meddelanden
+console.option.tip.Show_System_Messages=Logga program- och tilläggsrelaterade interna meddelanden till konsollen
+ShowNetworkErrors=Visa nätverksfel
+console.option.tip.Show_Network_Errors=Logga nätverksfel till konsollen
+JavascriptOptionsStrict=Strikta varningar (sämre prestanda)
+console.option.tip.Show_Strict_Warnings=Logga striktare varningar till konsollen (javascript.options.script)
+Command_History=Kommandohistorik
+console.option.Show_Command_Editor=Visa kommandoredigeraren
+console.option.tip.Show_Command_Editor=Byt till den stora kommandoredigeraren
+commandLineShowCompleterPopup=Visa popup för auto-komplettering
+console.option.tip.Show_Completion_List_Popup=Visa popupen för kommandoradens auto-komplettering
+Assertion=Assertion fel
+# HTML panel context menu items.n\n
+# Quick Info Boxn\n
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumen\n
+# button that are used when the HTML panel is currently selected. The button allows stoppingn\n
+# JS execution when DOM of the current page is modified.n\n
+Line=%S (rad %S)
+LineAndCol=%S (rad %S, kol %S)
+InstanceLine=%S #%S (rad %S)
+StackItem=%S (%S rad %S)
+SystemItem=<System>
+# LOCALIZATION NOTE (html.label.Expand/Contract_All): Used within the HTML for a context n\n
+# menu item. The user can expand/contract the element together with all its children to n\n
+# quickly see the entire hierarchical structure or collapse it.n\n
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange): Used within the DOM panel to createn\n
+# a \'property breakpoint\'. Right click on an property of an object. The label is alson\n
+panel.Inspect_In_Panel=Inspektera i %S-panelen
+panel.tip.Inspect_In_Panel=Byt till %S-panelen för att undersöka objektet där
+NoName=(inget namn)
+# used for the \'break on next button\' (available on the toolbar).n\n
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for then\n
+# \'break on next button\'n\n
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
+# editing an existing HTML element attribute.n\n
+# #1 Name of the clicked attribute.n\n
+ShowFullText=Visa hela texten
+html.option.tip.Show_Full_Text=Beskär inte elementens innehåll
+# examples: Edit Attribute \"onclick\"...n\n
+# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsn\n
+# deleting an existing HTML element attribute.n\n
+ShowWhitespace=Visa whitespace
+html.option.tip.Show_Whitespace=Visa whitespace inuti noder
+# #1 Name of the clicked attribute.n\n
+# examples: Delete Attribute \"onclick\"...n\n
+ShowComments=Visa kommentarer
+html.option.tip.Show_Comments=Visa kommentarsnoder
+# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.n\n
+# that has been inherited. Used in the Style side panel (under HTML panel).n\n
+# examples: Inherited from table.tabViewn\n
+html.option.Show_Entities_As_Symbols=Visa entiteter som symboler
+html.option.tip.Show_Entities_As_Symbols=Visa XML-entiteter som de är (t.ex. ©)
+html.option.Show_Entities_As_Names=Visa entiteter som namn
+html.option.tip.Show_Entities_As_Names=Visa XML-entiteter som förkortningsnamn (t.ex. ©)
+html.option.Show_Entities_As_Unicode=Visa entiteter som Unicode
+html.option.tip.Show_Entities_As_Unicode=Visa XML-entiteter som Unicode-siffror (t.ex. ©)
+# LOCALIZATION NOTE (css.EmptyStyleSheet): This description is displayed in the CSS paneln\n
+# in case there are no stylesheets attached to the current page.n\n
+# The text between <a> and </a> is displayed as a link.n\n
+HighlightMutations=Markera ändringar
+html.option.tip.Highlight_Mutations=Markera ändringar inuti noder
+# LOCALIZATION NOTE (css.EmptyElementCSS2): This description is displayed in the Style side paneln\n
+# (available within the HTML panel) in case there are no CSS rules for the selected element.n\n
+# The text between <a> and </a> is displayed as a link.n\n
+ExpandMutations=Expandera ändringar
+html.option.tip.Expand_Mutations=Expandera trädvyn för att visa ändrade noder
+# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.n\n
+# Allows to edit an existing CSS rule property.n\n
+# %S Name of the clicked propertyn\n
+ScrollToMutations=Bläddra fram ändringar automatiskt
+html.option.tip.Scroll_To_Mutations=Scrolla trädvyn för att få ändringar att synas
+# examples: Edit \"background-color\"...n\n
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.n\n
+# Allows to disable an existing CSS rule property.n\n
+ShowQuickInfoBox=Visa snabbinfoboxen
+inspect.option.tip.Show_Quick_Info_Box=Visa information om det inspekterade elementet i en ruta över sidan
+# %S Name of the clicked propertyn\n
+# examples: Disable \"background-color\"n\n
+# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.n\n
+ShadeBoxModel=Skugga box model
+inspect.option.tip.Shade_Box_Model=Skugga de olika delarna av CSS:s "box model"
+ScrollIntoView=Bläddra fram automatiskt
+html.tip.Scroll_Into_View=Scrolla sidan så att elementet blir synligt
+NewAttribute=Nytt attribut...
+html.tip.New_Attribute=Lägg till ett nytt attribut till det här elementet
+html.Edit_Node=Redigera %S...
+html.Node=nod
+html.tip.Edit_Node=Redigera %S-koden med hjälp av fulltext-editorn
+DeleteElement=Ta bort element
+html.Delete_Element=Ta bort elementet från DOM-trädet
+DeleteNode=Ta bort nod...
+html.Delete_Node=Ta bort noden från DOM-trädet
+# Allows to delete an existing CSS rule property.n\n
+quickInfo=Snabbinfo
+computedStyle=Beräknad stil
+# %S Name of the clicked propertyn\n
+# examples: Delete \"background-color\"n\n
+# Console context menu labels.n\n
+html.Break_On_Mutate=Bryt vid mutering
+html.Disable_Break_On_Mutate=Bryt inte vid mutering
+html.label.Break_On_Text_Change=Bryt vid textändring
+html.label.HTML_Breakpoints=HTML-brytpunkter
+html.label.Break_On_Attribute_Change=Bryt vid attributändringar
+html.tip.Break_On_Attribute_Change=Stoppa JavaScript-exekvering när ett attribut på det här elementet ändras
+html.label.Break_On_Child_Addition_or_Removal=Bryt när undernoder tas bort och läggs till
+html.tip.Break_On_Child_Addition_or_Removal=Stoppa JavaScript-exekvering när en barnnod läggs till/tas bort från det här elementet
+html.label.Break_On_Element_Removal=Bryt vid borttagning av element
+html.tip.Break_On_Element_Removal=Stoppa JavaScript-exekvering när det här elementet tas bort
+# LOCALIZATION NOTE do not translate, no longer used(?)n\n
+# Breakpoints side paneln\n
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttonsn\n
+# within balloon popup dialog. This dialog appears when debugger halts at a breakpoint or atn\n
+html.label.Expand/Contract_All=Expandera/slå ihop alla
+html.tip.Expand/Contract_All=Expandera eller slå ihop alla barnnoder, rekursivt
+# a \'debugger\' keyword.n\n
+# Continue: allows to resume the debuggern\n
+dom.scopeName=(closure)
+# Disable: allows to disable the current \'debugger;\' keyword used in the Javascript source.n\n
+# Script paneln\n
+dom.scopeParentName=(föräldra-scope)
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):n\n
+# Labels used to describe layout properties a the selected HTML element.n\n
+dom.tip.scopeName=Använd <funktion>.%closureVariabel för att använda i kommandoraden
+# Used in the Layout side panel under HMTL panel.n\n
+# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side paneln\n
+# under HTML panel.n\n
+dom.tip.scopeMemberName=Använd <funktion>.%S för att använda i kommandoraden
+# Net paneln\n
+# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)n\n
+firebug.reps.declarativeScope=[deklarativt scope]
+firebug.reps.objectScope=[objekts-scope]
+firebug.reps.withScope=[with-scope]
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,n\n
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,n\n
+firebug.reps.optimizedAway=(bortoptimerad)
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):n\n
+# Labels and tooltips for a headers displayed on top of the Net panel.n\n
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.n\n
+firebug.reps.element.attribute_value=attributvärde
+firebug.reps.element.property_value=egenskapsvärde
+# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel\'s contextn\n
+# menu for breaking on a XHR.n\n
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in then\n
+dom.label.breakOnPropertyChange=Bryt vid egenskapsändring
+dom.tip.Break_On_Property_Change=Stoppa JavaScript-exekvering när den här egenskapen ändras
+# Net panel\'s Headers tab (displayed if you expand a network request). The label is usedn\n
+# for a button that switches the view between \"show raw source code\" and \"pretty formated headern\n
+dom.disableBreakOnPropertyChange=Bryt inte vid egenskapsändring
+dom.label.DOM_Breakpoints=DOM-brytpunkter
+# values\".n\n
+# LOCALIZATION NOTE (net.filter.Media): Label for net panel filter (used on the Net panel toolbar)n\n
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutn\n
+# a network request (displayed when a net panel entry is expanded). The content ofn\n
+EditAttribute=Ändra attribut \"%S\"...
+html.tip.Edit_Attribute=Ändra värdet av attributet "%S" på det här elementet
+# this tab displays sent data (related to a HTTP send method).n\n
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):n\n
+# Label used in the Net panel for detailed info about a network request (displayedn\n
+# when a net panel entry is expanded)n\n
+DeleteAttribute=Radera attribut \"%S\"
+html.tip.Delete_Attribute=Ta bort attributet "%S" från det här elementet
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in then\n
+# Net panel for JSON responses Allows to sort alphabetically.n\n
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net paneln\n
+InheritedFrom=Ärvd från
+SothinkWarning=Tillägget Sothink SWF Catcher hindrar Firebug från att fungera korrekt.<br><br>Var vänlig läs <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">detta inlägg i Firebugs FAQ</a> för hjälp.
+# (expand an entry in the panel and select Headers tab).n\n
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semi-colon list of plural forms.n\n
+css.fontFamilyPreview=Flygande bäckasiner söka hwila på mjuka tuvor. QXZ, 0123456789
+# A message displayed in the Net panel when some entries must be removed since maximum numbern\n
+# of entries has been reached.n\n
+# #1 the number of entries removedn\n
+css.EmptyStyleSheet=Det finns inga regler. Du kan <a>skapa en regel</a>.
+# example: Firebug\'s log limit has been reached. 150 entries not shown.n\n
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitn\n
+# has been reached. Informing the user what preferencee should be changed to modify the limit.n\n
+css.EmptyElementCSS=Detta element har inga stilregler. Du kan <a>skapa en regel för det</a>.
+EditStyle=Redigera elementets stil...
+style.tip.Edit_Style=Redigera elementets inline-stilar
+AddRule=Lägg till regel...
+css.tip.AddRule=Lägg till en generell regel för det här elementet
+NewRule=Ny regel...
+css.tip.New_Rule=Skapa en ny regel
+# %S Name of a preference.n\n
+# examples: In order to change the limit modify: firebug.extensions.console.logLimitn\n
+# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.n\n
+# (result of javascript profiler tool). Represents a verb.n\n
+css.Delete_Rule=Ta bort \"%S\"
+css.tip.Delete_Rule=Ta bort regeln \"%S\" och alla dess egenskaper
+# LOCALIZATION NOTE (plural.Profile_Time2): Semi-colon list of plural forms.n\n
+# Used as a caption for reported profile info (result of javascript profiler tool).n\n
+# #1 number of millisecondsn\n
+css.menu.Edit_Media_Query=Redigera media query...
+css.menu.tip.Edit_Media_Query=Redigera den här regelns media query
+NewProp=Ny egenskap...
+css.tip.New_Prop=Lägg till en ny egenskap till den nuvarande regeln
+# #2 number of calls (plural)n\n
+# example: (#1ms, #2 calls)n\n
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headern\n
+# (name of a report column). In order to see this, select the Console panel start profilingn\n
+EditProp=Redigera \"%S\"...
+css.tip.Edit_Prop=Redigera värdet av egenskapen \"%S\"
+# by clicking the Profile button and stop it by clicking again. The report is logged into then\n
+# console panel. Make sure Script panel is enabled.n\n
+# Support for clipboard actions.n\n
+# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptn\n
+DisableProp=Inaktivera \"%S\"
+css.tip.Disable_Prop=Inaktivera egenskapen \"%S\"
+# panel when clicking a function object.n\n
+# %S Name of the functionn\n
+# Log Calls to \"getData\"n\n
+# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): A tooltip used for a button on mainn\n
+DeleteProp=Radera \"%S\"
+css.tip.Delete_Prop=Radera egenskapen \"%S\"
+# Firebug toolbar. This button allows to open the command line even within other panels.n\n
+BreakOnThisError=Bryt vid detta fel
+console.menu.tip.Break_On_This_Error=Stoppa JavaScript-exekvering när det här felet uppträder igen
+BreakOnAllErrors=Bryt vid alla fel
+console.menu.tip.Break_On_All_Errors=Stoppa JavaScript-exekvering så fort ett fel uppstår
+# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console paneln\n
+# if specific method is not supported.n\n
+# %S Name of a not supported method.n\n
+TrackThrowCatch=Spåra Throw/Catch
+UseLastLineForEvalName=Använd senaste raden för eval() namn
+UseMD5ForEvalName=Använd MD5 för eval() namn
+# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console paneln\n
+Breakpoints=Brytpunkter
+ErrorBreakpoints=Brytpunkter för fel
+LoggedFunctions=Loggade funktioner
+EnableAllBreakpoints=Aktivera alla brytpunkter
+breakpoints.option.tip.Enable_All_Breakpoints=Aktivera alla listade brytpunkter
+DisableAllBreakpoints=Inaktivera alla brytpunkter
+breakpoints.option.tip.Disable_All_Breakpoints=Inaktivera alla listade brytpunkter
+ClearAllBreakpoints=Ta bort alla brytpunkter
+breakpoints.option.tip.Clear_All_Breakpoints=Ta bort alla listade brytpunkter
+ConditionInput=Denna brytpunkt kommer att stoppa exekvering enbart om detta uttryck är sant:
+# when a not supported method is used on the command line.n\n
+# %S Name of a not supported method.n\n
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):n\n
+breakpoints.Remove_Breakpoint=Ta bort brytpunkt
+breakpoints.tip.Remove_Breakpoint=Ta bort brytpunkten
+breakpoints.Disable_Breakpoint=Inaktivera brytpunkt
+breakpoints.tip.Disable_Breakpoint=Inaktivera brytpunkten
+breakpoints.Enable_Breakpoint=Aktivera brytpunkt
+breakpoints.tip.Enable_Breakpoint=Aktivera brytpunkten
+# Tooltip for the \"Break on... \" button used when the Console panel is selected.n\n
+# LOCALIZATION NOTE (console.Use_TAB_and_arrow_keys) n\n
+# Top of the completion popup in the command linen\n
+# Console strings used when JavaScript is not availablen\n
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the consolen\n
+script.balloon.Continue=Fortsätt
+script.balloon.Disable=Inaktivera
+ScriptsFilterStatic=Visa statiska skript
+ScriptsFilterEval=Visa skript: statiska och eval()
+ScriptsFilterEvent=Visa skript: statiska och händelser
+ScriptsFilterAll=Visa skript: statiska, eval() och händelser
+ScriptsFilterStaticShort=statiska
+ScriptsFilterEvalShort=eval()
+ScriptsFilterEventShort=händelser
+ScriptsFilterAllShort=alla
+# in cases when the current page is an XML document. The text between <a> and </a> is a link.n\n
+# that cause to switch into HTML rendering of the document.n\n
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,n\n
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):n\n
+callstack.Expand_All=Utvidga alla
+callstack.tip.Expand_All=Utvidga alla stackposter
+callstack.Collapse_All=Kollapsa alla
+callstack.tip.Collapse_All=Kollapsa alla stackposter
+# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mousen\n
+# over a Size displayed within the Net panel. \'Total Sent\' and \'Total Received\' info includesn\n
+callstack.Execution_not_stopped=Stackposter visas bara när skriptexekvering är stoppad.
+# even sent and received heades size.n\n
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Netn\n
+# panel (inside the Post tab of an expanded request entry). The message informs the user thatn\n
+# posted data reached Firebug\'s size limit and only part of it is displayed in the UI.n\n
+ShowUserProps=Visa användardefinierade egenskaper
+dom.option.tip.Show_User_Props=Visa användardefinierade egenskaper som är medlemmar av objektet
+ShowUserFuncs=Visa användardefinierade funktioner
+dom.option.tip.Show_User_Funcs=Visa användardefinierade funktioner som är medlemmar av objektet
+ShowDOMProps=Visa DOM-egenskaper
+dom.option.tip.Show_DOM_Props=Visa allmänna egenskaper från DOM:et
+ShowDOMFuncs=Visa DOM-funktioner
+dom.option.tip.Show_DOM_Funcs=Visa allmänna funktioner från DOM:et
+ShowDOMConstants=Visa DOM-konstanter
+dom.option.tip.Show_DOM_Constants=Visa allmänna konstanter från DOM:et
+ShowClosures=Visa closures
+dom.option.tip.Show_Closures=Visa vilka closures som är associerade med olika funktioner (aktiverar debuggern)
+ShowInlineEventHandlers=Visa inline-händelsehanterare
+ShowInlineEventHandlersTooltip=Visa tillgängliga inline-händelsehanterare som inte associerats med någon funktion (onclick, etc.)
+ShowOwnProperties=Visa bara egna egenskaper
+ShowOwnPropertiesTooltip=Göm egenskaper som kommer från prototypskedjan
+ShowEnumerableProperties=Visa bara uppräkningsbara egenskaper
+ShowEnumerablePropertiesTooltip=Visa bara egenskaper definierade som "enumerable"
+NoMembersWarning=Det finns inga egenskaper för detta objekt
+NewWatch=Nytt bevakningsuttryck...
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):n\n
+# Labels for Net panel\'s options.n\n
+AddWatch=Lägg till bevakning
+watch.tip.Add_Watch=Lägg till markeringen/objektet i Bevaka-panelen för observation
+# LOCALIZATION NOTE (net.option.Show_BF_Cache_Responses, net.option.tip.Show_BF_Cache_Responses):n\n
+# Net panels\'s option. If set to true, the net panel displays also response coming fromn\n
+CopySourceCode=Kopiera källkod
+script.tip.Copy_Source_Code=Kopiera den markerade källkoden till klippbordet
+Use_hash_plus_number_to_go_to_line=Använd <#nummer> för att gå till raden
+CopyValue=Kopiera värde
+dom.tip.Copy_Value=Kopiera egenskapens värde till klippbordet
+Copy_Name=Kopiera namn
+dom.tip.Copy_Name=Kopiera egenskapens namn till klippbordet
+Copy_Path=Kopiera sökväg
+dom.tip.Copy_Path=Kopiera egenskapens sökväg till klippbordet
+NewProperty=Ny egenskap...
+EditProperty=Redigera egenskap...
+dom.tip.Edit_Property=Redigera egenskapens värde
+EditVariable=Redigera variabel...
+stack.tip.Edit_Variable=Redigera variabelns värde
+EditWatch=Redigera bevakning...
+watch.tip.Edit_Watch=Redigera bevakningsuttryckets värde
+DeleteProperty=Ta bort egenskap
+dom.tip.Delete_Property=Ta bort egenskapen
+DeleteWatch=Ta bort watch
+DeleteAllWatches=Ta bort alla bevakningar
+watch.tip.Delete_Watch=Ta bort bevakningsuttrycket
+watch.tip.Delete_All_Watches=Ta bort alla bevakningsuttrycken
+# BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCachen\n
+# LOCALIZATION NOTE (plural.Request_Count2): Semi-colon list of plural forms.n\n
+SetBreakpoint=Sätt brytpunkt
+script.tip.Set_Breakpoint=Lägg till eller ta bort en brytpunkt på den nuvarande raden
+# A label used in the Net panel. Displays number of HTTP requests executed by the current page.n\n
+# #1 number of requestsn\n
+# example: 21 requestsn\n
+EditBreakpointCondition=Villkor för brytpunkt...
+breakpoints.tip.Edit_Breakpoint_Condition=Ändra villkoret under vilket brytpunkten stoppar JavaScript-exekvering
+NoBreakpointsWarning=Det finns inga brytpunkter för denna sida
+# LOCALIZATION NOTE (plural.Error_Count2): Semi-colon list of plural forms.n\n
+# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.n\n
+# #1 number of errorsn\n
+Only_Show_Applied_Styles=Visa endast använda formatmallar
+style.option.tip.Only_Show_Applied_Styles=Visa bara de stildeklarationer som applicerar på elementet
+# example: 111 Errorsn\n
+# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.n\n
+# With: the scope inside of the with(obj) {} statementn\n
+Show_User_Agent_CSS=Visa webbläsarens CSS
+style.option.tip.Show_User_Agent_CSS=Visa även den CSS som automatiskt definierats av webbläsaren
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };n\n
+# Window: the scope inside of a Javascript window object.n\n
+# Net panel timing info labelsn\n
+#A11y Chrome Labels (not visible, spoken by screen readers)n\n
+#A11y panelNode labels (not visible, spoken by screen readers)n\n
+computed.option.label.Colors_As_Hex=Färger som hex
+computed.option.tip.Colors_As_Hex=Visa färger i hexadecimalt format (t.ex. #FFFFFF)
+computed.option.label.Colors_As_RGB=Färger som RGB
+computed.option.tip.Colors_As_RGB=Visa färger i RGB-format (t.ex. rgb(255, 255, 255))
+computed.option.label.Colors_As_HSL=Färger som HSL
+computed.option.tip.Colors_As_HSL=Visa färger i HSL-format (t.ex. hsl(0, 0%, 100%))
+#A11y Domplate labels (not visible, spoken by screen readers)n\n
+# LOCALIZATION NOTEn\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# Describe contents of inline editor fieldsn\n
+style.option.label.active=:active
+style.option.tip.active=Visa stilar som matchar pseudo-klassen :active
+# LOCALIZATION NOTE (a11y.labels.overridden):n\n
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# indicates style property is overridden by selector with higher specificityn\n
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):n\n
+style.option.label.hover=:hover
+style.option.tip.hover=Visa stilar som matchar pseudo-klassen :hover
+# Used by a11y. Not directly visible in the UI, intended for screen readers.n\n
+# Existence and state of a breakpointn\n
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+style.option.label.focus=:focus
+style.option.tip.focus=Visa stilar som matchar pseudo-klassen :focus
+# #1 Line number, #2 Function name, #3 File namen\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+css.label.Inspect_Declaration=Gå till deklaration
+css.tip.Inspect_Declaration=Inspektera deklarationen av den här web-fonten
+# Describes the match found when performing a console panel search n\n
+# #1 %S String key the use is looking for. #2 number of rows that contain the matched textn\n
+# examples: Match found for \"test\" in 17 log rowsn\n
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlyn\n
+Expand_Shorthand_Properties=Expandera kortegenskaper
+css.option.tip.Expand_Shorthand_Properties=Expandera förkortade CSS-egenskaper (t.ex. margin) till sina beståndsdelar
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a script panel search n\n
+# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found inn\n
+# examples: Match found for \"window.alert\" on line 322 in utilities.jsn\n
+Sort_alphabetically=Sortera alfabetiskt
+computed.option.tip.Sort_Alphabetically=Sortera stilegenskaperna alfabetiskt/gruppera dem i kategorier
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in an element node) n\n
+Show_Mozilla_specific_styles=Visa Mozillaspecifika stilar
+computed.option.tip.Show_Mozilla_Specific_Styles=Visa stilar prefixade med -moz
+# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementn\n
+# examples: Match found for \"obj\" in object element at /html/body/object[2]n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlyn\n
+computed.No_User-Defined_Styles=Det här elementet har inga användardefinierade stilar.
+script.Type_any_key_to_filter_list=Tryck valfri tangent för att filtrera listan
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node) n\n
+# #1 Search string that was matched. #2 Attribute name #3 attribute value n\n
+# #4 the HTML element name containing. #5 XPATH string specifying the matched elementn\n
+# examples: Match found for \"abindex\" in tabindex=\"0\" in span element at /html/body/span[2]n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing an HTML panel search (if it is found in a text element\'s contents) n\n
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=position
+LayoutAdjacent=intilliggande
+position=position
+# #1 Search string that was matched. #2 element\'s text content n\n
+# #3 the HTML element name containing. #4 XPATH string specifying the matched elementn\n
+# examples: Match found for \"Firebug Rocks!\" in h2 element at /html/body/h2[2]n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlyn\n
+ShowRulers=Visa linjaler och guider
+layout.option.tip.Show_Rulers=Visa linjaler och guider när du för musen över olika delar av layout-boxen
+# visible in the UI, intended for screen readers.n\n
+Loading=Laddar...
+Headers=Headers
+# Describes the match found when performing a CSS panel search (if it is found in a selector) n\n
+# #1 Search string that was matched. #2 selector in which the match was found n\n
+net.tip.Clear=Töm begäranslistan
+# examples: Match found for \"main\" in #mainContent h2 {n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlyn\n
+net.header.Reset_Header=Återställ kolumner
+net.header.tip.Reset_Header=Återställ vilka kolumner som visas till standardvärdet
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration) n\n
+# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to n\n
+# examples: Match found for background in style declaration background-repeat: \"repeat-x\"; in selector #mainContent {n\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+net.header.URL=URL
+net.header.URL_Tooltip=Begärd URL och HTTP-metod.
+net.header.Status=Status
+net.header.Status_Tooltip=Status för mottaget svar.
+net.header.Domain=Domän
+net.header.Domain_Tooltip=Domän för begäran.
+net.header.Size=Storlek
+net.header.Size_Tooltip=Storlek på svaret.
+net.header.Timeline=Tidslinje
+net.header.Timeline_Tooltip=Detaljerad timinginformation för begäran/svar.
+net.header.Local_IP=Lokal IP
+net.header.Local_IP_Tooltip=Lokal IP-adress och port som begäran görs till
+net.header.Remote_IP=Fjärr IP
+net.header.Remote_IP_Tooltip=Fjärr IP-adress och port som begäran görs till
+net.header.Protocol=Protokoll
+net.header.Protocol_Tooltip=URL-protokollet som används för att komma åt resursen på nätet
+# Describes the match found when performing a DOM panel search n\n
+net.label.XHR_Breakpoints=XHR-brytpunkter
+# #1 Search string that was matched. #2 DOM property in which the match was found n\n
+# examples: Match found for \"time\" in _starttime : 1257324992232 (Number)n\n
+net.label.Break_On_XHR=Bryt vid XHR
+net.tip.Break_On_XHR=Stoppa JavaScript-exekvering så fort en XMLHttpRequest skickas
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a Net panel search n\n
+net.headers.view_source=visa källkod
+net.headers.pretty_print=snygg utskrift
+# #1 Search string that was matched. #2 File name associated to the row in which the match was found. n\n
+# #3 Column in which the match was found #4. Column value n\n
+# examples: Match found for \"792\" in GET loading_animation.gif, timeline: 792 msn\n
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlyn\n
+# visible in the UI, intended for screen readers.n\n
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)n\n
+# #1 Search string that was matched. #2 Column value in which the match was found n\n
+# examples: Match found for \"05\" in net summary row: 4.05sn\n
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlyn\n
+Post=Post
+Put=Put
+# visible in the UI, intended for screen readers.n\n
+# Indicates that the searched string was not matched n\n
+# %S Search string that was matched. n\n
+Response=Response
+URLParameters=Params
+Cache=Cache
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Allmän information
+fontviewer.Meta_Data=Metadata
+fontviewer.view_source=visa källa
+fontviewer.Preview=Förhandsvisning
+fontviewer.view_characters=visa tecken
+fontviewer.pretty_print=snygg utskrift
+fontviewer.view_sample=visa exempel
+fontviewer.uniqueid=Unikt ID
+fontviewer.vendor=Leverantör
+fontviewer.license=Licens
+fontviewer.description=Beskrivning
+fontviewer.copyright=Copyright
+fontviewer.credits=Erkännanden
+fontviewer.trademark=Varumärke
+fontviewer.licensee=Licensinnehavare
+fontviewer.extension=Tillägg
+# examples: No matched found for \"wefkhwefkgwekhjgjh\"n\n
+# Console messages.n\n
+jsonviewer.sort=Sortera efter nyckel
+jsonviewer.do_not_sort=Sortera inte
+# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):n\n
+# If Firebug is displayed in an external window (detached), but not active for then\n
+# currently selected Firefox tab, the following button label is used for ann\n
+# activation button.n\n
+net.jsonviewer.Copy_JSON=Kopiera \"%S\" som JSON
+# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):n\n
+# An error message displayed in the Script panel when a source can\'t be displayedn\n
+RequestHeaders=Request Headers
+ResponseHeaders=Response Headers
+# for specific URL.n\n
+# examples: Failed to load source for: http://www.example.com/script.jsn\n
+# examples: The resource from this URL is not text: http://www.example.com/script.jsn\n
+net.label.ResponseHeadersFromBFCache=Begäran besvarades direkt från cachen, så det finns ingen respons från servern. Se nedan för cachad respons.
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,n\n
+# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.n\n
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):n\n
+# Tooltips for back/forward buttons on the Script panel toolbar.n\n
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):n\n
+plural.Limit_Exceeded2=Firebugs loggräns har nåtts. %1$S post visas inte.;Firebugs loggräns har nåtts. %1$S poster visas inte.
+LimitPrefs=Inställningar
+# This message is displayed within the Script panel if debugger is inactive during page load.n\n
+# The suggestion message represents an advice how to solve the problem.n\n
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):n\n
+# This message is displayed within the Script panel if javascript is not enabled.n\n
+LimitPrefsTitle=För att modifiera gränsvärdet, ändra: %S
+Refresh=Uppdatera
+panel.tip.Refresh=Uppdatera panel-displayen
+# The suggestion message represents an advice how to solve the problem.n\n
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed onn\n
+OpenInTab=Öppna i ny flik
+firebug.tip.Open_In_Tab=Öppna URL:en i en ny webbläsarflik
+Open_Response_In_New_Tab=Öppna svar i ny flik
+net.tip.Open_Response_In_New_Tab=Öppna svaret i en ny webbläsarflik
+# the Script panel if Javascript is disabled. This button allows to enable it.n\n
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):n\n
+Profile=Profilera
+ProfilerStarted=Profileraren kör. Klicka \'Profilera\' igen för att se en rapport.
+# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
+# The suggestion message represents an advice how to solve the problem.n\n
+# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):n\n
+# This message is displayed within the Script panel if javascript is not enabled for the current page.n\n
+# The suggestion message represents an advice how to solve the problem.n\n
+plural.Profile_Time2=(%1$Sms, %2$S anrop);(%1$Sms, %2$S anrop)
+NothingToProfile=Ingen aktivitet att profilera.
+PercentTooltip=Procentuell andel av tid spenderad på denna funktion.
+CallsHeaderTooltip=Antal gånger denna funktion anropades.
+OwnTimeHeaderTooltip=Tid spenderad i funktion, exkluderat nästlade anrop.
+TimeHeaderTooltip=Tid spenderad i funktion, inkluderat nästlade anrop.
+AvgHeaderTooltip=Genomsnittstid, inklusive funktionsanrop.
+MinHeaderTooltip=Minimumtid, inklusive funktionsanrop.
+MaxHeaderTooltip=Maximumtid, inklusive funktionsanrop
+Function=Funktion
+Percent=Procent
+#firebug.dtdn\n
+# LOCALIZATION NOTE (firebug.Rerun, firebug.Continue, firebug.StepOver, firebug.StepInto, firebug.StepOut)n\n
+# Labels used for debugger \'stepping\' buttons that are available in the Script panel.n\n
+#editors.dtdn\n
+Calls=Anrop
+OwnTime=Egen tid
+Time=Tid
+Avg=Medel
+Min=Min
+Max=Max
+File=Fil
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,n\n
+Copy=Kopiera
+Cut=Klipp ut
+Remove=Ta bort
+Delete=Ta bort
+Paste=Klistra in
+SelectAll=Markera allt
+html.Copy_Node=Kopiera %S
+html.tip.Copy_Node=Kopiera %S-nodes och dess innehåll till klippbordet
+CopyInnerHTML=Kopiera innerHTML
+html.tip.Copy_innerHTML=Kopiera elementets innehåll till klippbordet
+CopyXPath=Kopiera XPath
+html.tip.Copy_XPath=Kopiera elementets XPath till klippbordet
+Copy_CSS_Path=Kopiera sökväg till CSS
+html.tip.Copy_CSS_Path=Kopiera elementets CSS-sökväg till klippbordet
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)n\n
+# Used in the CSS panel for the Edit button.n\n
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
+# in the Console panel when the private browsing mode is on (in Firefox 4 it\'s Startn\n
+# Private Browsing mode)n\n
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications): This label is used withinn\n
+# Script panel\'s tab menu. Represents an option that can be used to switch of thesen\n
+# notifications.n\n
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayedn\n
+CopyLocation=Kopiera URL
+clipboard.tip.Copy_Location=Kopiera objektets URL till klippbordet
+CopyURLParameters=Kopiera URL-parametrar
+net.tip.Copy_URL_Parameters=Kopiera URL-parametrarna till klippbordet
+CopyPOSTParameters=Kopiera POST-parametrar
+net.tip.Copy_POST_Parameters=Kopiera POST-parametrarna till klippbordet
+CopyLocationParameters=Kopiera URL inkl. parametrar
+net.tip.Copy_Location_Parameters=Kopiera både URL och parametrar till klippbordet
+CopyRequestHeaders=Kopiera Request Headers
+CopyResponseHeaders=Kopiera Response Headers
+CopyResponse=Kopiera Response Body
+# in a break notification balloon popup next to a checkbox.n\n
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):n\n
+CopyError=Kopiera fel
+console.menu.tip.Copy_Error=Kopiera felinformationen till klippbordet
+# This message is displayed in a break notification popup when break on debugger; keyword happens.n\n
+# The keyword can be disabled by creating a disabled breakpoint on the same line.n\n
+CopySource=Kopiera funktion
+dom.tip.Copy_Source=Kopiera funktionens källkod till klippbordet
+# The other label is used for a tooltip on the action button.n\n
+# LOCALIZATION NOTE (firebug.dom.noChildren): This message is displayed in the DOM paneln\n
+# in cases where there are no children objects and so nothing to display.n\n
+# LOCALIZATION NOTE (firebug.reps.more): This label is when displayed array/list hasn\n
+# more elements then it\'s displayed on the screen. \"...\" is automatically appended.n\n
+ShowCallsInConsole=Logga anrop till \"%S\"
+dom.tip.Log_Calls_To_Function=Logga anrop till funktionen \"%S\" i konsollen
+# example: more...n\n
+# LOCALIZATION NOTE (firebug.storage.totalItems): This label is used in the DOM paneln\n
+# for local/session/global storage. It\'s informing the user about number of items in the storage.n\n
+ShowEventsInConsole=Logga händelser
+html.tip.Show_Events_In_Console=Logga händelseinformation till konsollen
+# #1 number of storage itemsn\n
+# example: 1 item in Storagen\n
+panel.Enabled=Aktiverad
+panel.tip.Enabled=Aktivera eller inaktivera panelen
+# example: 2 items in Storagen\n
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties): This label is used by console.tablen\n
+# method if an object is passed into it. Used in table header.n\n
+panel.tooltip.Show_Command_Line_Popup=Visa kommandoradspopupen
+# LOCALIZATION NOTE (firebug.completion.empty): This label is used in the command linen\n
+# by auto-complete function. Displayed if there are no possible completions.n\n
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):n\n
+# This label is used in an image preview infotip within the HTML panel (hover over an IMG element)n\n
+console.MethodNotSupported=Firebugs konsol stöder inte \'%S\'
+# when loading of given URL fails. The firebug.failedToPreviewObjectURL is specifically usedn\n
+# for moz-filedata (HTML5),n\n
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_imagesn\n
+commandline.MethodNotSupported=Firebugs kommandorad stöder inte \'%S\'
+commandline.CurrentWindow=Nu i fönster:
+console.Disable_Break_On_All_Errors=Inaktivera brytpunkter för alla fel
+console.Break_On_All_Errors=Bryt vid alla fel
+console.Break_On_This_Error=Stoppa exekvering när det här felet uppträder igen
+console.Use_Arrow_keys,_Tab_or_Enter=Använd piltangenter, tabb eller enter
+console.JSDisabledInFirefoxPrefs=JavaScript är inaktiverat i Firefox. Om du vill använda konsollen, måste du aktivera JavaScript i menyn \'Verktyg\'->\'Inställningar\'->\'Innehåll\'->\'Aktivera JavaScript\'
+console.multiHighlightLimitExceeded=Det finns för många element i listan för att kunna markera alla på samma gång (den nuvarande gränsen är %S).\nSe inställningen \'extensions.firebug.multiHighlightLimit\'.
+commandline.disabledForXMLDocs=Firebugs kommandorad är inaktiverad för XML-sidor. Du kan <a>växla till HTML</a> för att aktivera den.
+commandline.Use_in_Command_Line=Använd i kommandoraden
+net.sizeinfo.Response_Body=Response Body
+net.sizeinfo.Post_Body=Post Body
+net.sizeinfo.Total_Sent=Skickat totalt
+net.sizeinfo.Total_Received=Mottaget totalt
+net.sizeinfo.Including_HTTP_Headers=Inklusive HTTP-huvuden
+net.ActivationMessage=Net-panel aktiverad. Förfrågningar som skickats när panelen var inaktiverad visas inte.
+net.responseSizeLimitMessage=Firebugs storleksgräns för svar har nåtts. Klicka <a>här</a> för att öppna hela svaret i en ny flik.
+net.postDataSizeLimitMessage=POST svarsstorlek överskriden; Firebug visar endast en del av svaret.
+net.Break_On_XHR=Bryt vid XHR
+net.label.Parameters=Parametrar
+net.label.Parts=Delar
+net.label.Source=Källa
+net.label.Resend=Skicka igen
+net.tip.Resend=Skicka begäran igen
+net.option.Disable_Browser_Cache=Inaktivera webbläsarens cache
+net.option.tip.Disable_Browser_Cache=Inaktivera webbläsarens HTTP-cache
+net.option.Show_Paint_Events=Visa omritningshändelser
+net.option.tip.Show_Paint_Events=Visa omritningshändelser (MozAfterPaint) som gröna linjer i tidslinjen
+net.option.Show_BFCache_Responses=Visa BFCache-svar
+net.option.tip.Show_BFCache_Responses=Visa även svar från Bakåt-Framåt-cachen
+script.Break_On_Next=Bryt på nästa
+script.Disable_Break_On_Next=Inaktivera bryt på nästa
+ShowHttpHeaders=Visa HTTP Headers
+plural.Request_Count2=%1$S request;%1$S requests
+StopLoading=Stoppa hämtning
+net.tip.Stop_Loading=Avbryt skickandet eller hämtningen av svaret på en begäran
+LargeData=(Mycket stor data)
+ShowComputedStyle=Visa uträknad stil
+StyleGroup-text=Text
+StyleGroup-background=Bakgrund
+StyleGroup-box=Boxmodell
+StyleGroup-layout=Layout
+StyleGroup-other=Övrigt
+Dimensions=%S x %S
+CopyColor=Kopiera färg
+css.tip.Copy_Color=Kopiera färgen till klippbordet
+CopyImageLocation=Kopiera bildadress
+css.tip.Copy_Image_Location=Kopiera bildens URL till klippbordet
+OpenImageInNewTab=Öppna bild i ny flik
+css.tip.Open_Image_In_New_Tab=Öppna bilden i en ny webbläsarflik
+OmitObjectPathStack=Visa inte stack i verktygsraden
+callstack.option.tip.Omit_Object_Path_Stack=Visa inte anropsstacken i Skript-panelens verktygsrad
+Load_Original_Source=Ladda originalkälla
+css.tip.Load_Original_Source=Släng bort ändringarna och ladda den ursprungliga CSS-källkoden
+Copy_Rule_Declaration=Kopiera regeldeklaration
+css.tip.Copy_Rule_Declaration=Kopiera regeln och alla dess egenskaper till klippbordet
+Copy_Style_Declaration=Kopiera stildeklaration
+css.tip.Copy_Style_Declaration=Kopiera regels egenskaper till klippbordet
+plural.Error_Count2=%1$S Fel;%1$S Fel
+moduleManager.title=Panelen %S är inaktiverad
+moduleManager.desc3=Använd popupmenyn för Firebugs statusfältsikon för att aktivera/inaktivera alla paneler samtidigt. Använd panelflikarnas meny för att kontrollera enskilda paneler.
+moduleManager.Enable=Aktivera
+Suspend_Firebug=Pausa Firebug
+Resume_Firebug=Återta Firebug
+Reset_Panels_To_Disabled=Inaktivera alla paneler
+Open_Console=Öppna konsol
+Open_Console_Tooltip=Öppna Firebugs spårningskonsol.
+Scope_Chain=Scope Chain
+With_Scope=With
+Call_Scope=Anrop
+Window_Scope=Fönster
+requestinfo.Blocking=Blockering
+requestinfo.Resolving=DNS lookup
+requestinfo.Connecting=Ansluter
+requestinfo.Sending=Skickar
+requestinfo.Waiting=Väntar
+requestinfo.Receiving=Tar emot
+requestinfo.ContentLoad=\'DOMContentLoaded\' (händelse)
+requestinfo.WindowLoad=\'load\' (händelse)
+search.Firebug_Search=Firebug sök
+search.Next=Nästa
+search.tip.Next=Hitta nästa träff
+search.Previous=Föregående
+search.tip.Previous=Hitta föregående träff
+search.Case_Sensitive=Tvinga skiftlägeskänslighet
+search.tip.Case_Sensitive=Ta hänsyn till skiftläge (små och stora bokstäver) vid sökning
+search.Case_Insensitive=Tvinga ej skiftlägeskänslighet
+search.tip.Case_Insensitive=Strunta i skiftläge (små och stora bokstäver) vid sökning
+search.Multiple_Files=Flera filer
+search.tip.Multiple_Files=Sök i alla filer relaterade till den här panelen
+search.Use_Regular_Expression=Använd reguljära uttryck
+search.tip.Use_Regular_Expression=Tolka den inmatade strängen som ett reguljärt uttryck (regex) vid sökning
+search.html.CSS_Selector=CSS-selektor
+search.net.Headers=Headers
+search.net.Parameters=Parametrar
+search.net.Response_Bodies=Response Bodies
+firebug.console.Persist=Töm ej
+firebug.console.Do_Not_Clear_On_Reload2=Rensa inte konsollen när sidan laddas om
+firebug.console.Show_All_Log_Entries=Visa alla loggrader
+firebug.console.Errors=Fel
+firebug.console.Filter_by_Errors=Filtrera på fel
+firebug.console.Warnings=Varningar
+firebug.console.Filter_by_Warnings=Filtrera på varningar
+firebug.console.Info=Information
+firebug.console.Filter_by_Info=Filtrera på information
+firebug.console.Debug_Info=Debuginformation
+firebug.console.Filter_by_Debug_Info=Filtrera på debuginformation
+firebug.Deactivate_Firebug=Inaktivera Firebug
+firebug.tip.Deactivate_Firebug=Inaktivera Firebug för den nuvarande webbsidan
+firebug.ShowFirebug=Öppna Firebug
+firebug.menu.tip.Open_Firebug=Visa Firebugs användarinterface
+firebug.HideFirebug=Dölj Firebug
+firebug.menu.tip.Minimize_Firebug=Minimera Firebug, men håll den aktiv
+firebug.FocusFirebug=Fokusera Firebug-fönstret
+firebug.menu.tip.Focus_Firebug=Fokusera det externa Firebug-fönstret
+firebug.menu.Enable_All_Panels=Aktivera alla paneler
+firebug.menu.tip.Enable_All_Panels=Aktivera alla aktiverbara paneler
+firebug.menu.Disable_All_Panels=Inaktivera alla paneler
+firebug.menu.tip.Disable_All_Panels=Inaktivera alla aktiverbara paneler
+firebug.menu.Customize_shortcuts=Anpassa snabbtangenter
+firebug.menu.tip.Customize_Shortcuts=Anpassa tangentbindningar för Firebugs interface
+firebug.Options=Inställningar
+firebug.menu.tip.Options=Globala Firebug-inställningar
+firebug.menu.Enable_Accessibility_Enhancements=Aktivera tillgänglighetsförbättringar
+firebug.menu.tip.Enable_Accessibility_Enhancements=Gör det möjligt att kontrollera Firebug via tangentbord och andra tillgänglighetsverktyg
+firebug.menu.Activate_Same_Origin_URLs2=Aktivera enligt härkomst
+firebug.menu.tip.Activate_Same_Origin_URLs=Ge URLer som är "same-origin" med varandra samma aktiveringsstatus
+firebug.menu.Reset_All_Firebug_Options=Återställ alla inställningar
+firebug.menu.tip.Reset_All_Firebug_Options=Återställ alla inställningar till sina standardvärden
+firebug.menu.Firebug_Online=Firebug online
+firebug.menu.tip.Firebug_Online=Webbsidor relaterade till Firebug
+firebug.menu.Extensions=Firebug-tillägg...
+firebug.menu.tip.Extensions=Ladda ned och installera Firebug-tillägg
+firebug.menu.Vertical_Panels=Vertikala paneler
+firebug.menu.tip.Vertical_Panels=Ändra utseende på Firebugs huvud- och sidopaneler
+firebug.menu.Show_Info_Tips=Visa infotips
+firebug.menu.tip.Show_Info_Tips=Visa popuper med information om hovrade element
+firebug.Show_Error_Count=Visa felantal
+firebug.menu.tip.Show_Error_Count=Visa antalet fel som loggats i konsollen
+firebug.TextSize=Textstorlek
+firebug.menu.tip.Text_Size=Ändra textstorleken som används i Firebug
+firebug.IncreaseTextSize=Öka textstorlek
+firebug.menu.tip.Increase_Text_Size=Öka textstorleken som används i Firebug
+firebug.DecreaseTextSize=Minska textstorlek
+firebug.menu.tip.Decrease_Text_Size=Minska textstorleken som används i Firebug
+firebug.NormalTextSize=Normal textstorlek
+firebug.menu.tip.Normal_Text_Size=Återställ textstorleken som används i Firebug till standardvärdet
+firebug.Website=Firebugs webbsida...
+firebug.menu.tip.Website=Öppna Firebugs officiella webbsida
+firebug.help=Hjälp...
+firebug.menu.tip.help=Öppna sidan med länkar till sidor som beskriver Firebug
+firebug.Documentation=Dokumentation...
+firebug.menu.tip.Documentation=Öppna dokumentationen om Firebug
+firebug.KeyShortcuts=Tangentkombinationer...
+firebug.Forums=Diskussionsgrupp...
+firebug.Issues=Issue Tracker...
+firebug.Donate=Bidra...
+firebug.About=Om...
+ProfileJavaScript=Profilera JavaScript
+firebug.menu.tip.Profile_JavaScript=Profilera exekveringstiden av JavaScript
+firebug.Search=Sök
+firebug.menu.tip.Search=Sätt fokus i sökfältet
+firebug.shortcut.reenterCommand.label=Skriv kommando igen
+firebug.shortcut.tip.reenterCommand=Kör det sist körda kommandot från kommandoraden igen
+firebug.shortcut.toggleInspecting.label=(In)aktivera granskare
+firebug.shortcut.toggleQuickInfoBox.label=(In)aktivera Snabbinfobox
+firebug.shortcut.toggleProfiling.label=(In)aktivera profilering
+firebug.shortcut.focusCommandLine.label=Fokusera kommandorad
+firebug.shortcut.focusFirebugSearch.label=Fokusera Firebug sök
+firebug.shortcut.tip.focusFirebugSearch=Sätt fokus i sökfältet
+firebug.shortcut.focusWatchEditor.label=Fokusera watchredigeraren
+firebug.shortcut.focusLocation.label=Fokusera plats
+firebug.shortcut.nextObject.label=Nästa objekt
+firebug.shortcut.previousObject.label=Föregående objekt
+firebug.shortcut.customizeFBKeys.label=Anpassa Firebugs snabbtangenter
+firebug.shortcut.detachFirebug.label=Öppna Firebug i nytt fönster
+firebug.shortcut.leftFirebugTab.label=Växla till Firebugpanel till vänster
+firebug.shortcut.rightFirebugTab.label=Växla till Firebugpanel till höger
+firebug.shortcut.toggleFirebug.label=Öppna Firebug
+firebug.shortcut.previousFirebugTab.label=Föreqående Firebugflik
+firebug.shortcut.clearConsole.label=Rensa konsoll
+firebug.shortcut.openTraceConsole.label=Öppna spårningskonsoll
+firebug.shortcut.navBack.label=Gå tillbaka
+firebug.shortcut.navForward.label=Gå framåt
+firebug.shortcut.increaseTextSize.label=Öka textstorlek
+firebug.shortcut.decreaseTextSize.label=Minska textstorlek
+firebug.shortcut.normalTextSize.label=Normal Textstorlek
+firebug.panel_selector=Panelväljare
+customizeShortcuts=Firebug snabbtangentbindningar
+a11y.labels.panel_tools=panelverktyg
+a11y.labels.firebug_panels=Firebugpaneler
+a11y.labels.firebug_side_panels=Firebug sidopaneler
+a11y.labels.firebug_window=Firebug fönster
+a11y.labels.firebug_status=Firebug status
+a11y.labels.reset=återställ
+a11y.labels.reset_shortcut=återställ genväg %S
+aria.labels.inactive_panel=inaktiv panel
+a11y.labels.log_rows=loggrader
+a11y.labels.call_stack=anropsstack
+a11y.labels.document_structure=dokumentstruktur
+a11y.labels.title_panel=%S panel
+a11y.labels.title_side_panel=%S sidopanel
+a11y.labels.cached=cachad
+aria.labels.stack_trace=stackspårning
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=position
+a11y.layout.position_top=position topp
+a11y.layout.position_right=position höger
+a11y.layout.position_bottom=position nederkant
+a11y.layout.position_left=position vänster
+a11y.layout.margin_top=margin top
+a11y.layout.margin_right=margin right
+a11y.layout.margin_bottom=margin bottom
+a11y.layout.margin_left=margin left
+a11y.layout.border_top=border top
+a11y.layout.border_right=border right
+a11y.layout.border_bottom=border bottom
+a11y.layout.border_left=border left
+a11y.layout.padding_top=padding top
+a11y.layout.padding_right=padding right
+a11y.layout.padding_bottom=padding bottom
+a11y.layout.padding_left=padding left
+a11y.layout.top=top
+a11y.layout.right=right
+a11y.layout.bottom=bottom
+a11y.layout.left=left
+a11y.layout.width=width
+a11y.layout.height=height
+a11y.layout.size=size
+a11y.layout.z-index=z-index
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=Tryck RETUR och sedan TABB för att redigera värden
+a11y.labels.style_rules=stilregler
+aria.labels.inherited_style_rules=ärvda stilregler
+a11y.labels.computed_styles=beräknade stilar
+a11y.labels.dom_properties=DOM egenskaper
+a11y.labels.inline_editor=inline editor
+a11y.labels.value_for_attribute_in_element=värde för attribut %S i element %S
+a11y.labels.attribute_for_element=värde för attribut %S
+a11y.labels.text_contents_for_element=textinnehåll för element %S
+a11y.labels.defined_in_file=definierad i %S
+a11y.labels.declarations_for_selector=stildeklaration för \'%S\' selektor
+a11y.labels.property_for_selector=CSS egenskap för selektor: %S
+a11y.labels.value_property_in_selector=Egenskapsvärde %S i selektor %S
+a11y.labels.css_selector=CSS selektor
+a11y.labels.source_code_for_file=källkod för fil %S
+a11y.labels.press_enter_to_add_new_watch_expression=tryck RETUR för att lägga till bevakningsuttryck
+a11y.labels.overridden=overridden
+a11y.updates.has_conditional_break_point=har villkorlig brytpunkt
+a11y.updates.has_disabled_break_point=har inaktiverade brytpunkter
+a11y.updates.script_suspended_on_line_in_file=Skript pausat på rad %S i %S, i fil %S
+a11y.updates.match_found_in_logrows=matchande post funnen för %S i logg, rad %S
+a11y.updates.match_found_for_on_line=matchande post funnen för %S på rad %S i %S
+a11y.updates.match_found_in_element=matchande post funnen för %S i element %S, sökväg %S
+a11y.updates.match_found_in_attribute=matchande post funnen för %S i attribut %S=%S för element %S, sökväg %S
+a11y.updates.match_found_in_text_content=matchande post funnen för %S i textinnehåll: %S för element %S, sökväg %S
+a11y.updates.match_found_in_selector=matchande post funnen för %S i selektor %S
+a11y.updates.match_found_in_style_declaration=matchande element för \"%S\" funnet i stildeklaration %S i selektor %S
+a11y.updates.match_found_in_dom_property=matchande post funnen för %S i DOM egenskap %S
+a11y.updates.match_found_in_net_row=matchande post funnen för \"%S\" i %S, %S : %S;
+a11y.updates.match_found_in_net_summary_row=matchande post funnen för %S i net summeringsrad %S
+a11y.updates.no_matches_found=inga matchande poster för \'%S\' hittades
+confirmation.Reset_All_Firebug_Options=Är du säker på att du vill återställa alla Firebugs inställningar till standardvärden?
+warning.Console_must_be_enabled=Konsolen måste aktiveras
+warning.Command_line_blocked?=Är kommandoraden blockerad?
+message.Reload_to_activate_window_console=Ladda om sidan för att aktivera konsollen
+message.The_resource_from_this_URL_is_not_text=Resursen från denna URL är inte text
+firebug.history.Go_back_to_this_panel=Gå tillbaka till denna panel
+firebug.history.Stay_on_this_panel=Stanna på denna panel
+firebug.history.Go_forward_to_this_panel=Gå framåt till denna panel
+firebug.history.Go_back=Gå tillbaka
+firebug.history.Go_forward=Gå framåt
+script.warning.inactive_during_page_load=Skriptpanelen var inte aktiverad när sidan lästes in
+script.suggestion.inactive_during_page_load2=<a>Ladda om</a> för att se alla källor
+script.warning.javascript_not_enabled=Javascript är inaktiverat
+script.suggestion.javascript_not_enabled=Gå till Firefox>Verktyg>Inställningar>Innehåll>Aktivera Javascript
+script.button.enable_javascript=Aktivera Javascript och uppdatera
+script.warning.all_scripts_filtered=Alla skript filtrerades
+script.suggestion.all_scripts_filtered=Gå till skriptfilter på verktygsfältet eller \"Visa Chrome källkod\"
+script.warning.no_javascript=Ingen Javascript på denna sida
+script.warning.debugger_active=Debuggern är redan aktiverad
+script.suggestion.debugger_active=Debuggern har stannat på en brytpunkt på en annan sida.
+script.button.Go_to_that_page=Gå till sidan
+firebug.Firebug=Firebug
+firebug.Close=Stäng
+firebug.View=Visa
+firebug.Help=Hjälp
+firebug.Run=Kör
+firebug.Copy=Kopiera
+firebug.History=Historik
+firebug.Run_the_entered_command=Kör kommandot
+firebug.Clear_the_Command_Editor=Rensa Kommandoredigeraren
+firebug.Copy_the_script_as_a_bookmarklet=Kopiera skriptet som en bookmarklet
+firebug.Insert_a_previously_entered_command=Sätt in ett tidigare inmatade kommandot
+firebug.AlwaysOpenInWindow=Öppna alltid i nytt fönster
+firebug.OpenWith=Öppna med redigeringsprogram
+firebug.Permissions=Platser...
+firebug.Configure_Editors=Konfigurera redigerare
+firebug.Inspect=Granska
+firebug.InspectElement=Granska element
+firebug.BreakOnErrors=Stanna vid fel
+firebug.InspectTooltip=Klicka på ett element i sidan för att granska det
+firebug.EditHTMLTooltip=Redigera denna HTML
+firebug.Profile=Profilera
+firebug.Clear=Rensa
+firebug.ClearConsole=Rensa konsol
+firebug.ClearTooltip=Rensa konsolen
+editors.Configured_Firebug_Editors=Konfigurerade Firebug editorer
+editors.Editor=Redigerare
+editors.Executable=Körbar
+editors.Launch_Arguments=Startargument
+editors.Add=Lägg till
+editors.Remove=Ta bort
+editors.Change=Ändra
+editors.Move_Up=Flytta upp
+editors.Close=Stäng
+editors.Browse=Bläddra ...
+changeEditor.Editor_Configuration=Redigerarkonfiguration
+changeEditor.Name=Namn:
+changeEditor.Executable=Program:
+changeEditor.CmdLine=Argument:
+changeEditor.Supplied_arguments=Argument som tillhandahålls av Firebug:
+changeEditor.URL_of_file=Webbadressen till filen (om %url är tom, läggs %file till som standard)
+changeEditor.Path_to_local_file=Sökvägen till den lokala filen (eller till tillfällig kopia)
+changeEditor.Line_number=Radnummer (om tillgängligt)
+changeEditor.Invalid_Application_Path=Ogiltig programsökväg
+changeEditor.Application_does_not_exist=Programmet finns inte!
+firebug.Edit=Redigera
+firebug.css.sourceEdit=Redigera källa
+firebug.css.sourceEdit.tooltip=Text-area redigera Stylesheet så som den läses in av webbläsaren
+firebug.css.liveEdit=Live Edit
+firebug.css.liveEdit.tooltip=Text-area redigera CSS extraherat från webbläsaren
+firebug.EditCSSTooltip=Redigera denna stilmall
+firebug.activation.privateBrowsingMode=Kom inte ihåg webbplatser i privat surfning läge
+firebug.breakpoint.showBreakNotifications=Vis brytmeddelanden
+firebug.breakpoint.doNotShowBreakNotification2=Du kan aktivera / inaktivera brytpunktsnotifikation i <a>panelens flikmeny</a>.
+firebug.bon.cause.disableDebuggerKeyword2=Klick på \"Inaktivera\"-knappen åsidosätter \"debugger\" med en inaktiverad brytpunkt.
+firebug.bon.tooltip.disableDebuggerKeyword2=Skapar en inaktiverad brytpunkt
+firebug.dom.noChildren2=Det finns inga underordnade objekt
+firebug.reps.more=mer
+firebug.storage.totalItems=%1$S objekt i lager,%1$S objekt i lager
+firebug.reps.table.ObjectProperties=Objektegenskaper
+firebug.completion.empty=(Inga kompletteringar)
+firebug.failedToPreviewObjectURL=Webbadressen objektet har troligen återkallats med revokeObjectURL metod.
+firebug.failedToPreviewImageURL=Misslyckades med att läsa angiven URL.
diff --git a/locale/sv-SE/selectors.properties b/locale/sv-SE/selectors.properties
index f5179e8..05ce654 100644
--- a/locale/sv-SE/selectors.properties
+++ b/locale/sv-SE/selectors.properties
@@ -1,10 +1,10 @@
-Panel-selectors=Selektorer
-panel.tip.selectors=Visar element som matchar en viss CSS-selektor
-css.selector.noSelection=Skriv in en selektor eller högerklicka på en CSS-regel och välj <b>Visa matchande element</b>.
-css.selector.noSelectionResults=Inga matchande element
-css.selector.readMore=Du kan <a>läsa mer</a> om hur man använder den här panelen.
-css.selector.invalidSelector=Ogiltig selektor.
-css.selector.TryASelector=Prova en selektor...
-css.selector.cmd.getMatchingElements=Visa matchande element
-aria.labels.Selectors=Selektorer sidopanel
-a11y.labels.press_enter_to_add_new_selector=Tryck Enter för att lägga till en ny selektor
+Panel-selectors=Selektorer
+panel.tip.selectors=Visar element som matchar en viss CSS-selektor
+css.selector.noSelection=Skriv in en selektor eller högerklicka på en CSS-regel och välj <b>Visa matchande element</b>.
+css.selector.noSelectionResults=Inga matchande element
+css.selector.readMore=Du kan <a>läsa mer</a> om hur man använder den här panelen.
+css.selector.invalidSelector=Ogiltig selektor.
+css.selector.TryASelector=Prova en selektor...
+css.selector.cmd.getMatchingElements=Visa matchande element
+aria.labels.Selectors=Selektorer sidopanel
+a11y.labels.press_enter_to_add_new_selector=Tryck Enter för att lägga till en ny selektor
diff --git a/locale/tr/cookies.properties b/locale/tr/cookies.properties
index ff2fe15..0f8af9d 100644
--- a/locale/tr/cookies.properties
+++ b/locale/tr/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Çerezler
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Oturum
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Sitelerden çerez kabul et
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Reddedildiğin çerezleri sil
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Kes
-cookies.Copy=Kopyala
-cookies.CopyAll=Tümünü Kopyala
-cookies.Paste=Yapıştır
-cookies.Delete=Sil
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Düzenle
-cookies.Accept=Kabul Et
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reset Header
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=Hangi web sitelerinin izinli hangilerinin yasaklı olduğunu belirtebilirsiniz.\nDüzenlemek istediğiniz websitesinin tam adresini yazarak Engelle'yi tıklayın,\ yada oturama izin vermek için İzin ver'i tıklayın.
-cookies.ExceptionsTitle=İstisnalar - Çerezler
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Çerez Görüntüleme Desteği
-cookies.HostEnable=%S için Çerez Bölmesini Göster
-cookies.HostDisable=%S için Çerez Bölmesini Gösterme
-cookies.Permissions=Çerez bölmesini gizler yada gösterir
-cookies.PermissionsIntro=Hangi sitelerde Çerez Bölmesinin aktif olacağını hangilerinde olmayacağını seçin.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=Sistem Sayfaları
-cookies.LocalFiles=Yerel Dosyalar
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Listedeki tüm çerezleri silmek istiyor musunuz?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Listedeki tüm çerezleri kaldır.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=%S için yeni çerez oluştur
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Değer
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=%S için çerez izinlerini düzenle
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=Tüm çerezler silindi.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Reddedilen çerezler:
-cookies.console.nocookiesreceived=Çerez alınmadı
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Çerez
-cookies.console.deleted=silindi
-cookies.console.added=eklendi
-cookies.console.changed=değiştirildi
-cookies.console.cleared=temizlendi
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Alan adı
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Güvenlik
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Kabul edildi
-cookies.status.downgraded=Geriletildi
-cookies.status.flagged=İşaretlendi
-cookies.status.rejected=İptal edildi
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Değer
-cookies.info.rawdatatab.Raw_Data=Raw Verisi
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Varsayılan (Oturum çerezlerini kabul et)
-cookies.default.thirdPartySession=Varsayılan (Oturum çerezlerini kabul et)
-cookies.default.thirdParty=Varsayılan (Çerezleri kabul et)
-cookies.default.allow=Varsayılan (Çerezleri kabul et)
-cookies.default.deny=Varsayılan (Çerezleri reddet)
-cookies.default.warn=Varsayılan (Çerezleri kabul etmeden önce uyar)
-cookies.host.session=%S'den gelen oturum çerezlerini kabul et
-cookies.host.accept=%S'den gelen çerezleri kabul et
-cookies.host.reject=%S'den gelen çerezleri reddet
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Çerez adı geçersiz.
-cookies.edit.invalidhost=Çerez sağlayıcısı geçersiz.
-cookies.edit.invalidpath=Çerez konumu geçersiz.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=İsim
-cookies.header.value=Değer
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Alanadı
-cookies.header.size=Boyut
-cookies.header.path=Konum
-cookies.header.expires=Süresi
-cookies.header.security=Güvenlik
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=İsim
-cookies.header.value.tooltip=Değer
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Alanadı
-cookies.header.size.tooltip=Boyut
-cookies.header.path.tooltip=Konum
-cookies.header.expires.tooltip=Süresi
-cookies.header.security.tooltip=Güvenlik
-cookies.header.httponly.tooltip=Çerezin sadece HTTP çerez olup olmadığını gösterir
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Alınan Çerezler
-cookies.netinfo.Sent_Cookies=Gönderilen Çerezler
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Konum Filtresi
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Çerezler
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Tüm Çerezler Dışa Aktar...
-cookies.export.Export_All_Cookies_Tooltip=Tüm tarayıcı çerezlerini cookies.txt dosyası olarak dışa aktar
-cookies.export.Export_For_Site=Bu sitenin çerezlerini dışa aktar...
-cookies.export.Export_For_Site_Tooltip=%S için alınan çerezleri cookies.txt dosyası olarak dışa aktar
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Siteninkileri Sil
-cookies.Create=Çerez Oluştur
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Araçlar
-cookies.ToolsTooltip=Araçlar
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Tüm Çerezleri Göster...
-cookies.ViewAllTooltip=Çerez Yöneticisini Aç
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Web Sitelerin İzinleri...
-cookies.ViewExceptionsTooltip=Yasaklanan yada izin verilen sitelerin listesini göster
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filtre
-cookies.FilterTooltip=Çerez listesi için belirtilen filtreyi kullan.
-cookies.filter.byPath=Çerezleri konuma göre filtrele
-cookies.filter.byPathTooltip=Sadece geçerli konumla eşleşen çerezleri göster
-cookies.filter.showRejectedCookies=Reddedilen çerezleri göster
-cookies.filter.showRejectedCookiesTooltip=Listede reddedilen çerezleride göster.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Çerezi Düzenle
-cookies.edit.name.label=İsim:
-cookies.edit.domain.label=Alanadı:
-cookies.edit.path.label=Konum:
-cookies.edit.expire.label=Süresi:
-cookies.edit.value.label=Değer:
-cookies.edit.secure.label=Çerezi Güvenceye Al
-cookies.edit.httponly.label=Sadece HTTP
-cookies.edit.session.label=Oturum
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Çerezler
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Oturum
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Sitelerden çerez kabul et
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Reddedildiğin çerezleri sil
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Kes
+cookies.Copy=Kopyala
+cookies.CopyAll=Tümünü Kopyala
+cookies.Paste=Yapıştır
+cookies.Delete=Sil
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Düzenle
+cookies.Accept=Kabul Et
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reset Header
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=Hangi web sitelerinin izinli hangilerinin yasaklı olduğunu belirtebilirsiniz.\nDüzenlemek istediğiniz websitesinin tam adresini yazarak Engelle'yi tıklayın,\ yada oturama izin vermek için İzin ver'i tıklayın.
+cookies.ExceptionsTitle=İstisnalar - Çerezler
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Çerez Görüntüleme Desteği
+cookies.HostEnable=%S için Çerez Bölmesini Göster
+cookies.HostDisable=%S için Çerez Bölmesini Gösterme
+cookies.Permissions=Çerez bölmesini gizler yada gösterir
+cookies.PermissionsIntro=Hangi sitelerde Çerez Bölmesinin aktif olacağını hangilerinde olmayacağını seçin.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=Sistem Sayfaları
+cookies.LocalFiles=Yerel Dosyalar
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Listedeki tüm çerezleri silmek istiyor musunuz?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Listedeki tüm çerezleri kaldır.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=%S için yeni çerez oluştur
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Değer
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=%S için çerez izinlerini düzenle
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=Tüm çerezler silindi.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Reddedilen çerezler:
+cookies.console.nocookiesreceived=Çerez alınmadı
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Çerez
+cookies.console.deleted=silindi
+cookies.console.added=eklendi
+cookies.console.changed=değiştirildi
+cookies.console.cleared=temizlendi
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Alan adı
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Güvenlik
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Kabul edildi
+cookies.status.downgraded=Geriletildi
+cookies.status.flagged=İşaretlendi
+cookies.status.rejected=İptal edildi
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Değer
+cookies.info.rawdatatab.Raw_Data=Raw Verisi
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Varsayılan (Oturum çerezlerini kabul et)
+cookies.default.thirdPartySession=Varsayılan (Oturum çerezlerini kabul et)
+cookies.default.thirdParty=Varsayılan (Çerezleri kabul et)
+cookies.default.allow=Varsayılan (Çerezleri kabul et)
+cookies.default.deny=Varsayılan (Çerezleri reddet)
+cookies.default.warn=Varsayılan (Çerezleri kabul etmeden önce uyar)
+cookies.host.session=%S'den gelen oturum çerezlerini kabul et
+cookies.host.accept=%S'den gelen çerezleri kabul et
+cookies.host.reject=%S'den gelen çerezleri reddet
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Çerez adı geçersiz.
+cookies.edit.invalidhost=Çerez sağlayıcısı geçersiz.
+cookies.edit.invalidpath=Çerez konumu geçersiz.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=İsim
+cookies.header.value=Değer
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Alanadı
+cookies.header.size=Boyut
+cookies.header.path=Konum
+cookies.header.expires=Süresi
+cookies.header.security=Güvenlik
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=İsim
+cookies.header.value.tooltip=Değer
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Alanadı
+cookies.header.size.tooltip=Boyut
+cookies.header.path.tooltip=Konum
+cookies.header.expires.tooltip=Süresi
+cookies.header.security.tooltip=Güvenlik
+cookies.header.httponly.tooltip=Çerezin sadece HTTP çerez olup olmadığını gösterir
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Alınan Çerezler
+cookies.netinfo.Sent_Cookies=Gönderilen Çerezler
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Konum Filtresi
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Çerezler
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Tüm Çerezler Dışa Aktar...
+cookies.export.Export_All_Cookies_Tooltip=Tüm tarayıcı çerezlerini cookies.txt dosyası olarak dışa aktar
+cookies.export.Export_For_Site=Bu sitenin çerezlerini dışa aktar...
+cookies.export.Export_For_Site_Tooltip=%S için alınan çerezleri cookies.txt dosyası olarak dışa aktar
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Siteninkileri Sil
+cookies.Create=Çerez Oluştur
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Araçlar
+cookies.ToolsTooltip=Araçlar
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Tüm Çerezleri Göster...
+cookies.ViewAllTooltip=Çerez Yöneticisini Aç
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Web Sitelerin İzinleri...
+cookies.ViewExceptionsTooltip=Yasaklanan yada izin verilen sitelerin listesini göster
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filtre
+cookies.FilterTooltip=Çerez listesi için belirtilen filtreyi kullan.
+cookies.filter.byPath=Çerezleri konuma göre filtrele
+cookies.filter.byPathTooltip=Sadece geçerli konumla eşleşen çerezleri göster
+cookies.filter.showRejectedCookies=Reddedilen çerezleri göster
+cookies.filter.showRejectedCookiesTooltip=Listede reddedilen çerezleride göster.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Çerezi Düzenle
+cookies.edit.name.label=İsim:
+cookies.edit.domain.label=Alanadı:
+cookies.edit.path.label=Konum:
+cookies.edit.expire.label=Süresi:
+cookies.edit.value.label=Değer:
+cookies.edit.secure.label=Çerezi Güvenceye Al
+cookies.edit.httponly.label=Sadece HTTP
+cookies.edit.session.label=Oturum
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/tr/firebug-amo.properties b/locale/tr/firebug-amo.properties
index 269024c..8e325c2 100644
--- a/locale/tr/firebug-amo.properties
+++ b/locale/tr/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
-firebug.amo.description=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.\n\nVisit the Firebug website for documentation, screen shots, and discussion forums: http://getfirebug.com
-firebug.amo.developer.comments=If you have any problems, please read the FireBug FAQ.\n\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
+firebug.amo.description=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.\n\nVisit the Firebug website for documentation, screen shots, and discussion forums: http://getfirebug.com
+firebug.amo.developer.comments=If you have any problems, please read the FireBug FAQ.\n\nhttp://getfirebug.com/faq.html
diff --git a/locale/tr/firebug-tracing.properties b/locale/tr/firebug-tracing.properties
index 3d7b5a7..a1c777a 100644
--- a/locale/tr/firebug-tracing.properties
+++ b/locale/tr/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Open Firebug Tracing
-Always_Open_Firebug_Tracing=Always Open Firebug Tracing
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Tracing
-tracing.Show_Scope_Variables=Show Scope Variables
-tracing.Show_Time=Show Time
-tracing.tab.Stack=Stack
-tracing.tab.Exception=Exception
-tracing.tab.Properties=Properties
-tracing.tab.Scope=Scope
-tracing.tab.Response=Response
-tracing.tab.Source=Source
-tracing.tab.Interfaces=Interfaces
-tracing.tab.Object=Object
-tracing.tab.Event=Event
-tracing.cmd.Clear=Clear
-tracing.cmd.tip.Clear=Remove All Messages
-tracing.cmd.Find=Find
-tracing.cmd.tip.Find=Find Text
-tracing.cmd.Bookmark=Bookmark
-tracing.cmd.tip.Bookmark=Insert Bookmark
-tracing.cmd.Restart=Restart Firefox
-tracing.cmd.tip.Restart=Restart Firefox
-tracing.cmd.Exit=Exit Firefox
-tracing.cmd.tip.Exit=Exit Firefox
-tracing.cmd.Save=Save to File
-tracing.cmd.tip.Save=Save logs into a file
-tracing.cmd.Load=Load from File
-tracing.cmd.tip.Load=Load logs from a file
-tracing.cmd.Expand_All=Expand All
-tracing.cmd.Collapse_All=Collapse All
-tracing.cmd.Tools=Tools
-tracing.cmd.tip.Tools=Tools
-tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.Open_Profile_Directory=Open Profile Directory
-tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
-tracing.option.A11Y_Description=Accessibility issues
-tracing.option.ACTIVATION_Description=Firebug activation
-tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
-tracing.option.ANNOTATIONS_Description=Firebug website annotation
-tracing.option.BP_Description=Breakpoints
-tracing.option.CACHE_Description=Source cache
-tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
-tracing.option.COMPILATION_UNITS_Description=Script compilation units
-tracing.option.CONSOLE_Description=Console Panel
-tracing.option.CSS_Description=CSS parsing
-tracing.option.DISPATCH_Description=Event dispatching
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate creation
-tracing.option.EDITOR_Description=Inline Editor & Autocompleter
-tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Internal Firebug errors
-tracing.option.EVAL_Description=Script evaluation
-tracing.option.FBS_BP_Description=Firebug service breakpoints
-tracing.option.FBS_CREATION_Description=Firebug service script creation
-tracing.option.FBS_ERRORS_Description=Firebug service errors
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
-tracing.option.FBS_FUNCTION_Description=Firebug service function
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
-tracing.option.FBS_SRCUNITS_Description=Firebug service source units
-tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
-tracing.option.FUNCTION_NAMES_Description=JavaScript function names
-tracing.option.HISTORY_Description=Firebug Navigation History
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP request observer
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug initialization
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON viewer
-tracing.option.LINETABLE_Description=Script line table
-tracing.option.LOCALE_Description=Localization
-tracing.option.LOCATIONS_Description=Source locations
-tracing.option.NET_Description=Net Panel
-tracing.option.NET_EVENTS_Description=Network events
-tracing.option.OPTIONS_Description=Firebug preferences
-tracing.option.PANELS_Description=Panels
-tracing.option.SHORTCUTS_Description=Keyboard shortcuts
-tracing.option.SOURCEFILES_Description=JavaScript source files
-tracing.option.SPY_Description=XMLHttpRequests observer
-tracing.option.STACK_Description=JavaScript call stack
-tracing.option.STORAGE_Description=Settings storage
-tracing.option.SVGVIEWER_Description=SVG viewer
-tracing.option.FONTS_Description=Fonts information and font viewer
-tracing.option.TOOLTIP_Description=Start Button tooltip
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging user interface
-tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
-tracing.option.XMLVIEWER_Description=XML viewer
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Open Firebug Tracing
+Always_Open_Firebug_Tracing=Always Open Firebug Tracing
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Tracing
+tracing.Show_Scope_Variables=Show Scope Variables
+tracing.Show_Time=Show Time
+tracing.tab.Stack=Stack
+tracing.tab.Exception=Exception
+tracing.tab.Properties=Properties
+tracing.tab.Scope=Scope
+tracing.tab.Response=Response
+tracing.tab.Source=Source
+tracing.tab.Interfaces=Interfaces
+tracing.tab.Object=Object
+tracing.tab.Event=Event
+tracing.cmd.Clear=Clear
+tracing.cmd.tip.Clear=Remove All Messages
+tracing.cmd.Find=Find
+tracing.cmd.tip.Find=Find Text
+tracing.cmd.Bookmark=Bookmark
+tracing.cmd.tip.Bookmark=Insert Bookmark
+tracing.cmd.Restart=Restart Firefox
+tracing.cmd.tip.Restart=Restart Firefox
+tracing.cmd.Exit=Exit Firefox
+tracing.cmd.tip.Exit=Exit Firefox
+tracing.cmd.Save=Save to File
+tracing.cmd.tip.Save=Save logs into a file
+tracing.cmd.Load=Load from File
+tracing.cmd.tip.Load=Load logs from a file
+tracing.cmd.Expand_All=Expand All
+tracing.cmd.Collapse_All=Collapse All
+tracing.cmd.Tools=Tools
+tracing.cmd.tip.Tools=Tools
+tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.Open_Profile_Directory=Open Profile Directory
+tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
+tracing.option.A11Y_Description=Accessibility issues
+tracing.option.ACTIVATION_Description=Firebug activation
+tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
+tracing.option.ANNOTATIONS_Description=Firebug website annotation
+tracing.option.BP_Description=Breakpoints
+tracing.option.CACHE_Description=Source cache
+tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
+tracing.option.COMPILATION_UNITS_Description=Script compilation units
+tracing.option.CONSOLE_Description=Console Panel
+tracing.option.CSS_Description=CSS parsing
+tracing.option.DISPATCH_Description=Event dispatching
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate creation
+tracing.option.EDITOR_Description=Inline Editor & Autocompleter
+tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Internal Firebug errors
+tracing.option.EVAL_Description=Script evaluation
+tracing.option.FBS_BP_Description=Firebug service breakpoints
+tracing.option.FBS_CREATION_Description=Firebug service script creation
+tracing.option.FBS_ERRORS_Description=Firebug service errors
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
+tracing.option.FBS_FUNCTION_Description=Firebug service function
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
+tracing.option.FBS_SRCUNITS_Description=Firebug service source units
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
+tracing.option.FUNCTION_NAMES_Description=JavaScript function names
+tracing.option.HISTORY_Description=Firebug Navigation History
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request observer
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug initialization
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON viewer
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Localization
+tracing.option.LOCATIONS_Description=Source locations
+tracing.option.NET_Description=Net Panel
+tracing.option.NET_EVENTS_Description=Network events
+tracing.option.OPTIONS_Description=Firebug preferences
+tracing.option.PANELS_Description=Panels
+tracing.option.SHORTCUTS_Description=Keyboard shortcuts
+tracing.option.SOURCEFILES_Description=JavaScript source files
+tracing.option.SPY_Description=XMLHttpRequests observer
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Settings storage
+tracing.option.SVGVIEWER_Description=SVG viewer
+tracing.option.FONTS_Description=Fonts information and font viewer
+tracing.option.TOOLTIP_Description=Start Button tooltip
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging user interface
+tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
+tracing.option.XMLVIEWER_Description=XML viewer
diff --git a/locale/tr/firebug.properties b/locale/tr/firebug.properties
index e026dac..6bb6f1b 100644
--- a/locale/tr/firebug.properties
+++ b/locale/tr/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Konsol
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Net
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Script
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Style
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Computed
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Yerleşim
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=İzle
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Karar noktaları
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Yığın
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Kapsamlar
-firebug.DetachFirebug=Firebug'ı Yeni Pencerede Aç
-firebug.AttachFirebug=Attach Firebug to Browser Window
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Deactivated
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=In Browser
-minimized=Minimized
-enablement.for_all_pages=for all pages
-enablement.on=On
-enablement.off=Off
-enablement.Panel_activation_status=Panel activation status:
-none=Closed
-Firebug_-_inactive_for_current_website=Firebug - inactive for current website
-Activate_Firebug_for_the_current_website=Activate Firebug for the current website
-Minimized=Minimized
-Minimize_Firebug=Minimize Firebug
-On_for_all_web_pages=On for All Web Pages
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Clear Activation List
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI Location
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Firebug Options
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Show All Panels
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=JavaScript Hatalarını Göster
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=JavaScript Uyarılarını Göster
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=CSS Hatalarını Göster
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Yığın Takibini Hatalarla Birlikte Göster
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=XMLHttpRequest\'leri Göster
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Chrome Hatalarını Göster
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Chrome İletilerini Göster
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Dışsal Hataları Göster
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Show Network Errors
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Sıkı Uyarılar (performans cezası)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Command History
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Show Completion List Popup
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Sav Başarısız
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (satır %S)
-LineAndCol=%S (line %S, col %S)
-InstanceLine=%S #%S (line %S)
-StackItem=%S (%S satır %S)
-SystemItem=<System>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(ad yok)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Tam Metin Göster
-html.option.tip.Show_Full_Text=Don't crop element contents
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Beyaz Boşlukları Göster
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Yorumları Göster
-html.option.tip.Show_Comments=Show comment nodes
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Değişiklikleri Vurgula
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Değişiklikleri Genişlet
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Değişiklikleri Kadraja Sok
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Show Quick Info Box
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Shade Box Model
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Kadraja Sok
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Yeni Öznitelik...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Elemanı Sil
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Düğümü Sil
-html.Delete_Node=Delete the node from the tree
-# Quick Info Box
-quickInfo=Quick Info
-computedStyle=Computed Style
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Break On Mutate
-html.Disable_Break_On_Mutate=Disable Break On Mutate
-html.label.Break_On_Text_Change=Break On Text Change
-html.label.HTML_Breakpoints=HTML Breakpoints
-html.label.Break_On_Attribute_Change=Break On Attribute Change
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Break On Child Addition or Removal
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Break On Element Removal
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Expand/Contract All
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Break On Property Change
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Disable Break On Property Change
-dom.label.DOM_Breakpoints=DOM Breakpoints
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=\"%S\" Özniteliğini Düzenle...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=\"%S\" Özniteliğini Sil
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Türetildigi sınıf:
-SothinkWarning=The Sothink SWF Catcher eklentisi Firebug\'ın düzgün çalışmasına engel olmaktadır.<br /><br />Yardım için <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">Firebug SSS\'deki bu madde</a>yi okuyunuz.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
-EditStyle=Eleman Stili Düzenle...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=New Rule...
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Yeni Özellik...
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=\"%S\"\'i düzenle...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=\"%S\"\'i etkisizleştir
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=\"%S\"\'i sil
-css.tip.Delete_Prop=Delete the property "%S"
-# Console context menu labels.
-BreakOnThisError=Bu Hatada Dur
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Tüm Hatalarda Dur
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Fırlatma/Yakalama\'yı İzle
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=eval() adları için Son Kaynak Satırını Kullan
-UseMD5ForEvalName=eval() adları için MD5 Kullan
-# Breakpoints side panel
-Breakpoints=Kesme Noktaları
-ErrorBreakpoints=Hata Kesmeleri
-LoggedFunctions=Günlüğe Yazılan Fonksiyonlar
-EnableAllBreakpoints=Tüm Kesme Noktalarını Etkinleştir
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Tüm Kesme Noktalarını Etkisizleştir
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Tüm Kesme Noktalarını Temizle
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Bu kesme noktasında yalnızca şu ifade doğru olduğunda durulacak:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Remove Breakpoint
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Disable Breakpoint
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Enable Breakpoint
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Continue
-script.balloon.Disable=Disable
-ScriptsFilterStatic=Statik Betikleri Göster
-ScriptsFilterEval=Statik ve eval Betikleri Göster
-ScriptsFilterEvent=Statik ve olay Betikleri Göster
-ScriptsFilterAll=Statik, eval, ve olayBetikleri Göster
-ScriptsFilterStaticShort=statil
-ScriptsFilterEvalShort=eval
-ScriptsFilterEventShort=olay
-ScriptsFilterAllShort=tümü
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Expand All
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Collapse All
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Kullanıcı-tanımlı Özellikleri Göster
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Kullanıcı-tanımlı Fonksiyonları Göster
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=DOM Özelliklerini Göster
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=DOM Fonksiyonlarini Göster
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=DOM Sabitlerini Göster
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=Bu nesneye dair gösterilecek bir özellik yok.
-NewWatch=Yeni bir izleme ifadesi...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=İzleme Ekle
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Copy Source
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
-CopyValue=Değeri Kopyala
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Copy Name
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Copy Path
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Yeni Özellik...
-EditProperty=Özelliği Düzenle...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Degişkeni Düzenle...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=İzlemeyi Düzenle...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Özelliği Sil
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=İzlemeyi Sil
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Kesme Noktası Ata
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Kesme Noktası Koşulunu Düzenle...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=Bu sayfada herhangi bir kesme noktası yok.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Only Show Applied Styles
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Kullanıcı Aracısı CSS\'sini Göster
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Expand Shorthand Properties
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Sort Alphabetically
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Show Mozilla Specific Styles
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Type any key to filter list
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=dolgu
-LayoutBorder=kenarlık
-LayoutMargin=kenar boşluğu
-LayoutPosition=position
-LayoutAdjacent=bitişik
-position=position
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Göstergeleri ve Kılavuzları Göster
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Net panel
-Loading=Yükleniyor...
-Headers=Başlıklar
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Reset Header
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=Requested URL and used HTTP method
-net.header.Status=Status
-net.header.Status_Tooltip=Status of the received response
-net.header.Domain=Domain
-net.header.Domain_Tooltip=Domain of the executed request
-net.header.Size=Size
-net.header.Size_Tooltip=Size of the received response (compressed size in case of compressed responses)
-net.header.Timeline=Timeline
-net.header.Timeline_Tooltip=Detailed timing info about request response round trip
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=XHR Breakpoints
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Break On XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=view source
-net.headers.pretty_print=pretty print
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Media
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Post
-Put=Put
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Yanıt
-URLParameters=Parametreler
-Cache=Önbellek
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Sort by key
-jsonviewer.do_not_sort=Do not sort
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=İstem Başlıkları
-ResponseHeaders=Yanıt Başlıkları
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
-LimitPrefs=Tercihler
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Limiti değiştirmek için şunda değişiklik yapınız: %S
-Refresh=Yenile
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Yeni Sekmede Aç
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Open Response in New Tab
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Takip
-ProfilerStarted=Takipçi şu an çalışmakta. Raporunu görmek için \'Takip\'e tekrar tıklayınız.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
-NothingToProfile=Takibe yakalanan bir hareket olmadı.
-PercentTooltip=Bu fonksiyona harcanan zamanın yüzdesi.
-CallsHeaderTooltip=Fonksiyona yapılan çağırma sayısı.
-OwnTimeHeaderTooltip=Fonksiyon içinde harcanan zaman, içiçe çağırmalar hariç.
-TimeHeaderTooltip=Fonksiyon içinde harcanan zaman, içiçe çağrılar dahil.
-AvgHeaderTooltip=Ortalama zaman, fonksiyon çağırmaları dahil.
-MinHeaderTooltip=En kısa süre, fonksiyon çağırmaları dahil.
-MaxHeaderTooltip=En uzun süre, fonksiyon çağırmaları dahil.
-ProfileButton.Enabled.Tooltip=JavaScript çalışma süresini takip et.
-ProfileButton.Disabled.Tooltip=JavaScript çalışma süresini takip et (Betik paneli etkinleştirilmiş olmalıdır).
-Function=Fonksiyon
-Percent=Yüzde
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Çağırmalar
-OwnTime=Kendi Süresi
-Time=Süre
-Avg=Ort
-Min=Min
-Max=Maks
-File=Dosya
-# Support for standard actions.
-Copy=Kopyala
-Cut=Kes
-Remove=Kaldır
-Delete=Delete
-Paste=Paste
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=innerHTML Kopyala
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=XPath Kopyala
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Copy CSS Path
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Konumu Kopyala
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Konumu Parametrelerle Birlikte Kopyala
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=İstem Başlıklarını Kopyala
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Yanıt Başlıklarını Kopyala
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Yanıt Bloğunu Kopyala
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Hatayı Kopyala
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Fonksiyonu Kopyala
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=\"%S\" Çağırmalarını Günlüğe Yaz
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Olayları Günlüğe Yaz
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Etkin
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Firebug konsolu \'%S\' için destek sunmuyor
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Firebug komut satırı \'%S\' için destek sunmuyor
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Disable Break On All Errors
-console.Break_On_All_Errors=Break On All Errors
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Break On This Error
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript is disabled in your Firefox preferences. If you want to use the Console panel, then please enable this option via Tools > Options > Content > Enable JavaScript
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Response Body
-net.sizeinfo.Post_Body=Post Body
-net.sizeinfo.Total_Sent=Total Sent
-net.sizeinfo.Total_Received=Total Received
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Net panel activated. Any requests while the net panel is inactive are not shown.
-net.responseSizeLimitMessage=Firebug response size limit has been reached. Click <a>here</a> to open the entire response in a new Firefox tab.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Firebug request size limit has been reached by Firebug.
-net.Break_On_XHR=Break On XHR
-net.label.Parameters=Parameters
-net.label.Parts=Parts
-net.label.Source=Source
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Disable Browser Cache
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Show Paint Events
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Break On Next
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=HTTP Başlıklarını Göster
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S request;%1$S requests
-FromCache=önbellekten
-StopLoading=Yüklemeyi Durdur
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Çok Büyük Veri)
-ShowComputedStyle=Hesaplanmış Stili Göster
-StyleGroup-text=Metin
-StyleGroup-background=Arkaplan
-StyleGroup-box=Kutu Modeli
-StyleGroup-layout=Yerleşim
-StyleGroup-other=Diğer
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Rengi Kopyala
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Resim Konumunu Kopyala
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Resmi Yeni Sekmede Aç
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Araç Çubuğu Yığınını Kaldır
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copy Rule Declaration
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Copy Style Declaration
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Error;%1$S Errors
-moduleManager.title=%S panel devredışı
-moduleManager.desc3=Use Firebug's toolbar button to enable/disable all panels at once. Use each panel's tab menu for individual control.
-moduleManager.Enable=Enable
-Suspend_Firebug=Firebug\'ı Askıya Al
-Resume_Firebug=Firebug\'ı Sürdür
-Reset_Panels_To_Disabled=Reset Panels To Disabled
-Open_Console=Konsolu Aç
-Open_Console_Tooltip=Firebug için Takip Konsolunu Aç
-Scope_Chain=Kapsam Zinciri
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=Birlikte
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Çağır
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Pencere
-Logs=Günlükler
-Options=Seçenekler
-Copy_Stack=Yığını Kopyala
-Copy Exception=İstisnayı Kopyala
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Blocking
-requestinfo.Resolving=DNS Lookup
-requestinfo.Connecting=Bağlanıyor
-requestinfo.Sending=Sending
-requestinfo.Waiting=Waiting
-requestinfo.Receiving=Receiving
-requestinfo.ContentLoad='DOMContentLoaded' (event)
-requestinfo.WindowLoad='load' (event)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Firebug Search
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Next
-search.tip.Next=Search for the next match
-search.Previous=Previous
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Case Sensitive
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Multiple Files
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Use Regular Expression
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS Selector
-search.net.Headers=Headers
-search.net.Parameters=Parameters
-search.net.Response_Bodies=Response Bodies
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Persist
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Show all log entries
-firebug.console.Errors=Errors
-firebug.console.Filter_by_Errors=Filter by errors
-firebug.console.Warnings=Warnings
-firebug.console.Filter_by_Warnings=Filter by warnings
-firebug.console.Info=Info
-firebug.console.Filter_by_Info=Filter by info
-firebug.console.Debug_Info=Debug Info
-firebug.console.Filter_by_Debug_Info=Filter by debug info
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Firebug'ı Aç
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Hide Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Enable All Panels
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Disable All Panels
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Customize Shortcuts
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Seçenekler
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Enable Accessibility Enhancements
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Reset All Firebug Options
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug Online
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Show Error Count
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Metin Boyutu
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Metin Boyutunu Artır
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Metin Boyutunu Küçült
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Normal Metin Boyutu
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Firebug Anasayfası...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Belgeler...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Klavye Kısayolları...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Tartışma Grubu...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Sorun Takipçisi...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Katkıda Bulun...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Hakkında...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Ara
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Re-enter Command
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Toggle Inspecting
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Toggle Quick Info Box
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Toggle Profiling
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Focus Command Line
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Focus Firebug Search
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Focus Watch Editor
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Focus Location
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Next Object
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Previous Object
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Customize Firebug Keys
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Open Firebug in New Window
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Switch to left Firebug panel
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Switch to right Firebug panel
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Open Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Previous Firebug panel
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Clear Console
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Open Trace Console
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Go Back
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Go Forward
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Increase Text Size
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Decrease Text Size
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normal Text Size
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Panel Selector
-customizeShortcuts=Firebug Shortcut Bindings
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=panel tools
-a11y.labels.firebug_panels=Firebug panels
-a11y.labels.firebug_side_panels=Firebug side panels
-a11y.labels.firebug_window=Firebug window
-a11y.labels.firebug_status=Firebug status
-a11y.labels.reset=reset
-a11y.labels.reset_shortcut=reset %S shortcut
-aria.labels.inactive_panel=inactive panel
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=log rows
-a11y.labels.call_stack=call stack
-a11y.labels.document_structure=document structure
-a11y.labels.title_panel= %S panel
-a11y.labels.title_side_panel= %S side panel
-a11y.labels.cached=cached
-aria.labels.stack_trace=stack trace
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=position
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=margin top
-a11y.layout.margin_right=margin right
-a11y.layout.margin_bottom=margin bottom
-a11y.layout.margin_left=margin left
-a11y.layout.border_top=border top
-a11y.layout.border_right=border right
-a11y.layout.border_bottom=border bottom
-a11y.layout.border_left=border left
-a11y.layout.padding_top=padding top
-a11y.layout.padding_right=padding right
-a11y.layout.padding_bottom=padding bottom
-a11y.layout.padding_left=padding left
-a11y.layout.top=top
-a11y.layout.right=right
-a11y.layout.bottom=bottom
-a11y.layout.left=left
-a11y.layout.width=width
-a11y.layout.height=height
-a11y.layout.size=size
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=Press Enter followed by Tab to edit individual values
-a11y.labels.style_rules=style rules
-aria.labels.inherited_style_rules=inherited style rules
-a11y.labels.computed_styles=computed styles
-a11y.labels.dom_properties=DOM properties
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=inline editor
-a11y.labels.value_for_attribute_in_element=value for %S attribute in %S element
-a11y.labels.attribute_for_element=attribute for %S element
-a11y.labels.text_contents_for_element=text contents for %S element
-a11y.labels.defined_in_file=defined in %S
-a11y.labels.declarations_for_selector=style declarations for "%S" selector
-a11y.labels.property_for_selector=CSS property for selector: %S
-a11y.labels.value_property_in_selector=%S property value for selector %S
-a11y.labels.css_selector=CSS selector
-a11y.labels.source_code_for_file=source code for file %S
-a11y.labels.press_enter_to_add_new_watch_expression=press enter to add a new watch expression
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=overridden
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=has conditional break point
-a11y.updates.has_disabled_break_point=has disabled break point
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script suspended on line %S in %S, file %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=Match found for "%S" in %S log rows
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=Match found for "%S" on line %S in %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=Match found for "%S" in %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=Match found for "%S" in attribute %S=%S of %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=Match found for "%S" in text content: %S of %S element at path %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=Match found for "%S" in selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=Match found for "%S" in style declaration %S in selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=Match found for "%S" in DOM property %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=Match found for "%S" in %S, %S: %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=Match found for "%S" in net summary row: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=no matches found for "%S"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Are you sure to reset all Firebug options to the default state?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=Console must be enabled
-warning.Command_line_blocked?=Command line blocked?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Reload to activate window console
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=The resource from this URL is not text
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Go back to this panel
-firebug.history.Stay_on_this_panel=Stay on this panel
-firebug.history.Go_forward_to_this_panel=Go forward to this panel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Go back
-firebug.history.Go_forward=Go forward
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Script Panel was inactive during page load
-script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript is not enabled
-script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Enable JavaScript and Refresh
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=All scripts were filtered
-script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=No Javascript on this page
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Debugger is already active
-script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
-script.button.Go_to_that_page=Go to that page
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Kapat
-firebug.View=Görünüm
-firebug.Help=Yardım
-firebug.Run=Çalıştır
-firebug.Copy=Kopyala
-firebug.History=History
-firebug.Run_the_entered_command=Run the entered command
-firebug.Clear_the_Command_Editor=Clear the Command Editor
-firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
-firebug.Insert_a_previously_entered_command=Insert a previously entered command
-firebug.AlwaysOpenInWindow=Her Zaman Yeni Pencerede Aç
-firebug.OpenWith=Düzenleyiciyle Aç
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Siteler...
-firebug.Configure_Editors=Configure Editors
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Teftiş Et
-firebug.InspectElement=Elemanı Teftiş Et
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Hatalarda Dur
-firebug.InspectTooltip=Teftiş edilecek elemana tıklayınız
-firebug.EditHTMLTooltip=Bu HTML'i Düzenle
-firebug.Profile=Takip
-firebug.Clear=Temizle
-firebug.ClearConsole=Konsolu Temizle
-firebug.ClearTooltip=Konsolu temizler
-firebug.All=Tümü
-firebug.Images=Resimler
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Configured Firebug Editors
-editors.Editor=Editor
-editors.Executable=Executable
-editors.Launch_Arguments=Launch Arguments
-editors.Add=Add
-editors.Remove=Remove
-editors.Change=Change
-editors.Move_Up=Move Up
-editors.Close=Close
-editors.Browse=Browse...
-changeEditor.Editor_Configuration=Editor Configuration
-changeEditor.Name=Ad:
-changeEditor.Executable=Uygulama:
-changeEditor.CmdLine=Parametreler:
-changeEditor.Supplied_arguments=Arguments supplied by Firebug:
-changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
-changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
-changeEditor.Line_number=Line number (if available)
-changeEditor.Invalid_Application_Path=Invalid Application Path
-changeEditor.Application_does_not_exist=The specified application doesn't exist!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Düzenle
-firebug.css.sourceEdit=Source Edit
-firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
-firebug.css.liveEdit=Live Edit
-firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
-firebug.EditCSSTooltip=Bu Stil Sayfasını Düzenle
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Show Break Notifications
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
-firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=There are no child objects
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=more
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Object Properties
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(no completions)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
-firebug.failedToPreviewImageURL=Failed to load the given URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Konsol
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Net
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Script
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Style
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Computed
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Yerleşim
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=İzle
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Karar noktaları
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Yığın
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Kapsamlar
+firebug.DetachFirebug=Firebug'ı Yeni Pencerede Aç
+firebug.AttachFirebug=Attach Firebug to Browser Window
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Deactivated
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=In Browser
+minimized=Minimized
+enablement.for_all_pages=for all pages
+enablement.on=On
+enablement.off=Off
+enablement.Panel_activation_status=Panel activation status:
+none=Closed
+Firebug_-_inactive_for_current_website=Firebug - inactive for current website
+Activate_Firebug_for_the_current_website=Activate Firebug for the current website
+Minimized=Minimized
+Minimize_Firebug=Minimize Firebug
+On_for_all_web_pages=On for All Web Pages
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Clear Activation List
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI Location
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Firebug Options
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Show All Panels
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=JavaScript Hatalarını Göster
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=JavaScript Uyarılarını Göster
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=CSS Hatalarını Göster
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Yığın Takibini Hatalarla Birlikte Göster
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=XMLHttpRequest\'leri Göster
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Chrome Hatalarını Göster
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Chrome İletilerini Göster
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Dışsal Hataları Göster
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Show Network Errors
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Sıkı Uyarılar (performans cezası)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Command History
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Show Completion List Popup
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Sav Başarısız
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (satır %S)
+LineAndCol=%S (line %S, col %S)
+InstanceLine=%S #%S (line %S)
+StackItem=%S (%S satır %S)
+SystemItem=<System>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(ad yok)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Tam Metin Göster
+html.option.tip.Show_Full_Text=Don't crop element contents
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Beyaz Boşlukları Göster
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Yorumları Göster
+html.option.tip.Show_Comments=Show comment nodes
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Değişiklikleri Vurgula
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Değişiklikleri Genişlet
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Değişiklikleri Kadraja Sok
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Show Quick Info Box
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Shade Box Model
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Kadraja Sok
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Yeni Öznitelik...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Elemanı Sil
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Düğümü Sil
+html.Delete_Node=Delete the node from the tree
+# Quick Info Box
+quickInfo=Quick Info
+computedStyle=Computed Style
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Break On Mutate
+html.Disable_Break_On_Mutate=Disable Break On Mutate
+html.label.Break_On_Text_Change=Break On Text Change
+html.label.HTML_Breakpoints=HTML Breakpoints
+html.label.Break_On_Attribute_Change=Break On Attribute Change
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Break On Child Addition or Removal
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Break On Element Removal
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Expand/Contract All
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Break On Property Change
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Disable Break On Property Change
+dom.label.DOM_Breakpoints=DOM Breakpoints
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=\"%S\" Özniteliğini Düzenle...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=\"%S\" Özniteliğini Sil
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Türetildigi sınıf:
+SothinkWarning=The Sothink SWF Catcher eklentisi Firebug\'ın düzgün çalışmasına engel olmaktadır.<br /><br />Yardım için <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">Firebug SSS\'deki bu madde</a>yi okuyunuz.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
+EditStyle=Eleman Stili Düzenle...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=New Rule...
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Yeni Özellik...
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=\"%S\"\'i düzenle...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=\"%S\"\'i etkisizleştir
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=\"%S\"\'i sil
+css.tip.Delete_Prop=Delete the property "%S"
+# Console context menu labels.
+BreakOnThisError=Bu Hatada Dur
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Tüm Hatalarda Dur
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Fırlatma/Yakalama\'yı İzle
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=eval() adları için Son Kaynak Satırını Kullan
+UseMD5ForEvalName=eval() adları için MD5 Kullan
+# Breakpoints side panel
+Breakpoints=Kesme Noktaları
+ErrorBreakpoints=Hata Kesmeleri
+LoggedFunctions=Günlüğe Yazılan Fonksiyonlar
+EnableAllBreakpoints=Tüm Kesme Noktalarını Etkinleştir
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Tüm Kesme Noktalarını Etkisizleştir
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Tüm Kesme Noktalarını Temizle
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Bu kesme noktasında yalnızca şu ifade doğru olduğunda durulacak:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Remove Breakpoint
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Disable Breakpoint
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Enable Breakpoint
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Continue
+script.balloon.Disable=Disable
+ScriptsFilterStatic=Statik Betikleri Göster
+ScriptsFilterEval=Statik ve eval Betikleri Göster
+ScriptsFilterEvent=Statik ve olay Betikleri Göster
+ScriptsFilterAll=Statik, eval, ve olayBetikleri Göster
+ScriptsFilterStaticShort=statil
+ScriptsFilterEvalShort=eval
+ScriptsFilterEventShort=olay
+ScriptsFilterAllShort=tümü
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Expand All
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Collapse All
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Kullanıcı-tanımlı Özellikleri Göster
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Kullanıcı-tanımlı Fonksiyonları Göster
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=DOM Özelliklerini Göster
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=DOM Fonksiyonlarini Göster
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=DOM Sabitlerini Göster
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=Bu nesneye dair gösterilecek bir özellik yok.
+NewWatch=Yeni bir izleme ifadesi...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=İzleme Ekle
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Copy Source
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
+CopyValue=Değeri Kopyala
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Copy Name
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Copy Path
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Yeni Özellik...
+EditProperty=Özelliği Düzenle...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Degişkeni Düzenle...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=İzlemeyi Düzenle...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Özelliği Sil
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=İzlemeyi Sil
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Kesme Noktası Ata
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Kesme Noktası Koşulunu Düzenle...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=Bu sayfada herhangi bir kesme noktası yok.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Only Show Applied Styles
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Kullanıcı Aracısı CSS\'sini Göster
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Expand Shorthand Properties
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Sort Alphabetically
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Show Mozilla Specific Styles
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Type any key to filter list
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=dolgu
+LayoutBorder=kenarlık
+LayoutMargin=kenar boşluğu
+LayoutPosition=position
+LayoutAdjacent=bitişik
+position=position
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Göstergeleri ve Kılavuzları Göster
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Net panel
+Loading=Yükleniyor...
+Headers=Başlıklar
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Reset Header
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=Requested URL and used HTTP method
+net.header.Status=Status
+net.header.Status_Tooltip=Status of the received response
+net.header.Domain=Domain
+net.header.Domain_Tooltip=Domain of the executed request
+net.header.Size=Size
+net.header.Size_Tooltip=Size of the received response (compressed size in case of compressed responses)
+net.header.Timeline=Timeline
+net.header.Timeline_Tooltip=Detailed timing info about request response round trip
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=XHR Breakpoints
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Break On XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=view source
+net.headers.pretty_print=pretty print
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Media
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Post
+Put=Put
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Yanıt
+URLParameters=Parametreler
+Cache=Önbellek
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Sort by key
+jsonviewer.do_not_sort=Do not sort
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=İstem Başlıkları
+ResponseHeaders=Yanıt Başlıkları
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
+LimitPrefs=Tercihler
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Limiti değiştirmek için şunda değişiklik yapınız: %S
+Refresh=Yenile
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Yeni Sekmede Aç
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Open Response in New Tab
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Takip
+ProfilerStarted=Takipçi şu an çalışmakta. Raporunu görmek için \'Takip\'e tekrar tıklayınız.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
+NothingToProfile=Takibe yakalanan bir hareket olmadı.
+PercentTooltip=Bu fonksiyona harcanan zamanın yüzdesi.
+CallsHeaderTooltip=Fonksiyona yapılan çağırma sayısı.
+OwnTimeHeaderTooltip=Fonksiyon içinde harcanan zaman, içiçe çağırmalar hariç.
+TimeHeaderTooltip=Fonksiyon içinde harcanan zaman, içiçe çağrılar dahil.
+AvgHeaderTooltip=Ortalama zaman, fonksiyon çağırmaları dahil.
+MinHeaderTooltip=En kısa süre, fonksiyon çağırmaları dahil.
+MaxHeaderTooltip=En uzun süre, fonksiyon çağırmaları dahil.
+ProfileButton.Enabled.Tooltip=JavaScript çalışma süresini takip et.
+ProfileButton.Disabled.Tooltip=JavaScript çalışma süresini takip et (Betik paneli etkinleştirilmiş olmalıdır).
+Function=Fonksiyon
+Percent=Yüzde
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Çağırmalar
+OwnTime=Kendi Süresi
+Time=Süre
+Avg=Ort
+Min=Min
+Max=Maks
+File=Dosya
+# Support for standard actions.
+Copy=Kopyala
+Cut=Kes
+Remove=Kaldır
+Delete=Delete
+Paste=Paste
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=innerHTML Kopyala
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=XPath Kopyala
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Copy CSS Path
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Konumu Kopyala
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Konumu Parametrelerle Birlikte Kopyala
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=İstem Başlıklarını Kopyala
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Yanıt Başlıklarını Kopyala
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Yanıt Bloğunu Kopyala
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Hatayı Kopyala
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Fonksiyonu Kopyala
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=\"%S\" Çağırmalarını Günlüğe Yaz
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Olayları Günlüğe Yaz
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Etkin
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Firebug konsolu \'%S\' için destek sunmuyor
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Firebug komut satırı \'%S\' için destek sunmuyor
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Disable Break On All Errors
+console.Break_On_All_Errors=Break On All Errors
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Break On This Error
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript is disabled in your Firefox preferences. If you want to use the Console panel, then please enable this option via Tools > Options > Content > Enable JavaScript
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Response Body
+net.sizeinfo.Post_Body=Post Body
+net.sizeinfo.Total_Sent=Total Sent
+net.sizeinfo.Total_Received=Total Received
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Net panel activated. Any requests while the net panel is inactive are not shown.
+net.responseSizeLimitMessage=Firebug response size limit has been reached. Click <a>here</a> to open the entire response in a new Firefox tab.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Firebug request size limit has been reached by Firebug.
+net.Break_On_XHR=Break On XHR
+net.label.Parameters=Parameters
+net.label.Parts=Parts
+net.label.Source=Source
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Disable Browser Cache
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Show Paint Events
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Break On Next
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=HTTP Başlıklarını Göster
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S request;%1$S requests
+FromCache=önbellekten
+StopLoading=Yüklemeyi Durdur
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Çok Büyük Veri)
+ShowComputedStyle=Hesaplanmış Stili Göster
+StyleGroup-text=Metin
+StyleGroup-background=Arkaplan
+StyleGroup-box=Kutu Modeli
+StyleGroup-layout=Yerleşim
+StyleGroup-other=Diğer
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Rengi Kopyala
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Resim Konumunu Kopyala
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Resmi Yeni Sekmede Aç
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Araç Çubuğu Yığınını Kaldır
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copy Rule Declaration
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Copy Style Declaration
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Error;%1$S Errors
+moduleManager.title=%S panel devredışı
+moduleManager.desc3=Use Firebug's toolbar button to enable/disable all panels at once. Use each panel's tab menu for individual control.
+moduleManager.Enable=Enable
+Suspend_Firebug=Firebug\'ı Askıya Al
+Resume_Firebug=Firebug\'ı Sürdür
+Reset_Panels_To_Disabled=Reset Panels To Disabled
+Open_Console=Konsolu Aç
+Open_Console_Tooltip=Firebug için Takip Konsolunu Aç
+Scope_Chain=Kapsam Zinciri
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=Birlikte
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Çağır
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Pencere
+Logs=Günlükler
+Options=Seçenekler
+Copy_Stack=Yığını Kopyala
+Copy Exception=İstisnayı Kopyala
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Blocking
+requestinfo.Resolving=DNS Lookup
+requestinfo.Connecting=Bağlanıyor
+requestinfo.Sending=Sending
+requestinfo.Waiting=Waiting
+requestinfo.Receiving=Receiving
+requestinfo.ContentLoad='DOMContentLoaded' (event)
+requestinfo.WindowLoad='load' (event)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Firebug Search
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Next
+search.tip.Next=Search for the next match
+search.Previous=Previous
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Case Sensitive
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Multiple Files
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Use Regular Expression
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS Selector
+search.net.Headers=Headers
+search.net.Parameters=Parameters
+search.net.Response_Bodies=Response Bodies
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Persist
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Show all log entries
+firebug.console.Errors=Errors
+firebug.console.Filter_by_Errors=Filter by errors
+firebug.console.Warnings=Warnings
+firebug.console.Filter_by_Warnings=Filter by warnings
+firebug.console.Info=Info
+firebug.console.Filter_by_Info=Filter by info
+firebug.console.Debug_Info=Debug Info
+firebug.console.Filter_by_Debug_Info=Filter by debug info
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Firebug'ı Aç
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Hide Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Enable All Panels
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Disable All Panels
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Customize Shortcuts
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Seçenekler
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Enable Accessibility Enhancements
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Reset All Firebug Options
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug Online
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Show Error Count
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Metin Boyutu
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Metin Boyutunu Artır
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Metin Boyutunu Küçült
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Normal Metin Boyutu
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Firebug Anasayfası...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Belgeler...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Klavye Kısayolları...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Tartışma Grubu...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Sorun Takipçisi...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Katkıda Bulun...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Hakkında...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Ara
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Re-enter Command
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Toggle Inspecting
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Toggle Quick Info Box
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Toggle Profiling
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Focus Command Line
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Focus Firebug Search
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Focus Watch Editor
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Focus Location
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Next Object
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Previous Object
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Customize Firebug Keys
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Open Firebug in New Window
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Switch to left Firebug panel
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Switch to right Firebug panel
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Open Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Previous Firebug panel
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Clear Console
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Open Trace Console
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Go Back
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Go Forward
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Increase Text Size
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Decrease Text Size
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normal Text Size
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Panel Selector
+customizeShortcuts=Firebug Shortcut Bindings
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=panel tools
+a11y.labels.firebug_panels=Firebug panels
+a11y.labels.firebug_side_panels=Firebug side panels
+a11y.labels.firebug_window=Firebug window
+a11y.labels.firebug_status=Firebug status
+a11y.labels.reset=reset
+a11y.labels.reset_shortcut=reset %S shortcut
+aria.labels.inactive_panel=inactive panel
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=log rows
+a11y.labels.call_stack=call stack
+a11y.labels.document_structure=document structure
+a11y.labels.title_panel= %S panel
+a11y.labels.title_side_panel= %S side panel
+a11y.labels.cached=cached
+aria.labels.stack_trace=stack trace
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=position
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=margin top
+a11y.layout.margin_right=margin right
+a11y.layout.margin_bottom=margin bottom
+a11y.layout.margin_left=margin left
+a11y.layout.border_top=border top
+a11y.layout.border_right=border right
+a11y.layout.border_bottom=border bottom
+a11y.layout.border_left=border left
+a11y.layout.padding_top=padding top
+a11y.layout.padding_right=padding right
+a11y.layout.padding_bottom=padding bottom
+a11y.layout.padding_left=padding left
+a11y.layout.top=top
+a11y.layout.right=right
+a11y.layout.bottom=bottom
+a11y.layout.left=left
+a11y.layout.width=width
+a11y.layout.height=height
+a11y.layout.size=size
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=Press Enter followed by Tab to edit individual values
+a11y.labels.style_rules=style rules
+aria.labels.inherited_style_rules=inherited style rules
+a11y.labels.computed_styles=computed styles
+a11y.labels.dom_properties=DOM properties
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=inline editor
+a11y.labels.value_for_attribute_in_element=value for %S attribute in %S element
+a11y.labels.attribute_for_element=attribute for %S element
+a11y.labels.text_contents_for_element=text contents for %S element
+a11y.labels.defined_in_file=defined in %S
+a11y.labels.declarations_for_selector=style declarations for "%S" selector
+a11y.labels.property_for_selector=CSS property for selector: %S
+a11y.labels.value_property_in_selector=%S property value for selector %S
+a11y.labels.css_selector=CSS selector
+a11y.labels.source_code_for_file=source code for file %S
+a11y.labels.press_enter_to_add_new_watch_expression=press enter to add a new watch expression
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=overridden
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=has conditional break point
+a11y.updates.has_disabled_break_point=has disabled break point
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script suspended on line %S in %S, file %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=Match found for "%S" in %S log rows
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=Match found for "%S" on line %S in %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=Match found for "%S" in %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=Match found for "%S" in attribute %S=%S of %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=Match found for "%S" in text content: %S of %S element at path %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=Match found for "%S" in selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=Match found for "%S" in style declaration %S in selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=Match found for "%S" in DOM property %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=Match found for "%S" in %S, %S: %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=Match found for "%S" in net summary row: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=no matches found for "%S"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Are you sure to reset all Firebug options to the default state?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=Console must be enabled
+warning.Command_line_blocked?=Command line blocked?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Reload to activate window console
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=The resource from this URL is not text
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Go back to this panel
+firebug.history.Stay_on_this_panel=Stay on this panel
+firebug.history.Go_forward_to_this_panel=Go forward to this panel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Go back
+firebug.history.Go_forward=Go forward
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Script Panel was inactive during page load
+script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript is not enabled
+script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Enable JavaScript and Refresh
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=All scripts were filtered
+script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=No Javascript on this page
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Debugger is already active
+script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
+script.button.Go_to_that_page=Go to that page
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Kapat
+firebug.View=Görünüm
+firebug.Help=Yardım
+firebug.Run=Çalıştır
+firebug.Copy=Kopyala
+firebug.History=History
+firebug.Run_the_entered_command=Run the entered command
+firebug.Clear_the_Command_Editor=Clear the Command Editor
+firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
+firebug.Insert_a_previously_entered_command=Insert a previously entered command
+firebug.AlwaysOpenInWindow=Her Zaman Yeni Pencerede Aç
+firebug.OpenWith=Düzenleyiciyle Aç
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Siteler...
+firebug.Configure_Editors=Configure Editors
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Teftiş Et
+firebug.InspectElement=Elemanı Teftiş Et
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Hatalarda Dur
+firebug.InspectTooltip=Teftiş edilecek elemana tıklayınız
+firebug.EditHTMLTooltip=Bu HTML'i Düzenle
+firebug.Profile=Takip
+firebug.Clear=Temizle
+firebug.ClearConsole=Konsolu Temizle
+firebug.ClearTooltip=Konsolu temizler
+firebug.All=Tümü
+firebug.Images=Resimler
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Configured Firebug Editors
+editors.Editor=Editor
+editors.Executable=Executable
+editors.Launch_Arguments=Launch Arguments
+editors.Add=Add
+editors.Remove=Remove
+editors.Change=Change
+editors.Move_Up=Move Up
+editors.Close=Close
+editors.Browse=Browse...
+changeEditor.Editor_Configuration=Editor Configuration
+changeEditor.Name=Ad:
+changeEditor.Executable=Uygulama:
+changeEditor.CmdLine=Parametreler:
+changeEditor.Supplied_arguments=Arguments supplied by Firebug:
+changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
+changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
+changeEditor.Line_number=Line number (if available)
+changeEditor.Invalid_Application_Path=Invalid Application Path
+changeEditor.Application_does_not_exist=The specified application doesn't exist!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Düzenle
+firebug.css.sourceEdit=Source Edit
+firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
+firebug.css.liveEdit=Live Edit
+firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
+firebug.EditCSSTooltip=Bu Stil Sayfasını Düzenle
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Show Break Notifications
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
+firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=There are no child objects
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=more
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Object Properties
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(no completions)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
+firebug.failedToPreviewImageURL=Failed to load the given URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/uk-UA/cookies.properties b/locale/uk-UA/cookies.properties
index b6e8963..c924645 100644
--- a/locale/uk-UA/cookies.properties
+++ b/locale/uk-UA/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Куки
-panel.tip.cookies=Дозволити інспектування та маніпуляцію куками
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Сеанс
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Дозволяти куки з сайтів
-cookies.tip.AllowGlobally=Типомо дозволити всі куки або блокувати всі куки
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Показати події кук
-cookies.tip.showCookieEvents=Виводити події кук (зміна, вилучення) до консолі
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Очищувати куки при забороні
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Вирізати
-cookies.Copy=Копіювати
-cookies.CopyAll=Копіювати все
-cookies.Paste=Вставити
-cookies.Delete=Вилучити
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Очистити значення
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Змінити
-cookies.Accept=Затвердити
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Скинути заголовки
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=Ви можете вказати які веб-сайти завжди чи ніколи не використовують куки.\nВведіть точну адресу сайту, яким хочете керувати та натисніть\nБлокувати, Дозволити на сеанс чи Дозволити
-cookies.ExceptionsTitle=Винятки - Куки
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Підтримка моніторингу кук
-cookies.HostEnable=Дозволити панель кук для %S
-cookies.HostDisable=Заборонити панель кук для %S
-cookies.Permissions=Дозволити чи заборонити панель кук
-cookies.PermissionsIntro=Оберіть веб-сайти, де Панель кук буде дозволена чи заборонена
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=Системні сторінки
-cookies.LocalFiles=Локальні файли
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Ви хочете вилучити всі куки зі списку?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Хочете стерти куки всіх сесій зі списку?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Не питати знову
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Підтвердження стирання кук
-cookies.tip.Confirm_cookie_removal=Якщо вибрано, діалог підтвердження показується перед вилученням всіх кук зі списку.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Вилучити всі куки зі списку
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Стерти куки сесії
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Стерти куки всіх сесій в списку
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Створити нову куку для %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Значення
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Керувати дозволами кук для %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=Всі куки було вилучено
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=Куки всіх сесій були стерті
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Відкинуті куки:
-cookies.console.nocookiesreceived=Жодної куки не отримано
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Кука
-cookies.console.deleted=вилучена
-cookies.console.added=додана
-cookies.console.changed=змінена
-cookies.console.cleared=очищена
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Домен
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Захист
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Дозволена
-cookies.status.downgraded=Понижена
-cookies.status.flagged=Позначена
-cookies.status.rejected=Відкинута
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Значення
-cookies.info.rawdatatab.Raw_Data=Сирі дані
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Типово (Дозволити куки сеансу)
-cookies.default.thirdPartySession=Типово (Дозволити куки сеансу)
-cookies.default.thirdParty=Типово (Дозволити куки)
-cookies.default.allow=Типово (Дозволити куки)
-cookies.default.deny=Типово (Заборонити куки)
-cookies.default.warn=Типово (Попереджувати перед затвердженням куки)
-cookies.host.session=Дозволяти куки сеансу з %S
-cookies.host.accept=Дозволяти куки з %S
-cookies.host.reject=Забороняти куки з %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Назва куки неправильна
-cookies.edit.invalidhost=Хост куки вказано неправильно
-cookies.edit.invalidpath=Шлях куки неправильний
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Назва
-cookies.header.value=Значення
-cookies.header.rawValue=Сире значення
-cookies.header.domain=Домен
-cookies.header.size=Розмір
-cookies.header.path=Шлях
-cookies.header.expires=Дійсна до
-cookies.header.security=Захист
-cookies.header.httponly=Лише http
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Назва куки
-cookies.header.value.tooltip=Значення, що зберігається для куки
-cookies.header.rawValue.tooltip=Сире значення, збережене для куки
-cookies.header.domain.tooltip=Домен, що зберігає куку
-cookies.header.size.tooltip=Розмір збереженої куки
-cookies.header.path.tooltip=Директорія, де кука є активною
-cookies.header.expires.tooltip=Дата, до якої кука є дійсною
-cookies.header.security.tooltip=Показувати захищеність куки
-cookies.header.httponly.tooltip=Показувати якщо кука є лише для HTTP
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Отримані куки
-cookies.netinfo.Sent_Cookies=Надіслані куки
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Фільтр шляхів
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Куки
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Експорт всіх кук...
-cookies.export.Export_All_Cookies_Tooltip=Експортувати всі куки переглядача до файлу cookies.txt
-cookies.export.Export_For_Site=Експорт кук цього сайту...
-cookies.export.Export_For_Site_Tooltip=Експортувати куки для %S до файлу cookies.txt
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=Це неактивна сторінка
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Перервати при зміні куки
-cookies.Disable_Break_On_Cookie=Вимкнути переривання при зміні куки
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Точки переривання куки
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Переривати на '%S'
-cookies.menu.tooltip.Break_On_Cookie=Переривати на '%S' коли стирається чи змінюється
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Змінити умову переривання
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Обчислення умова точки переривання провалилося
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Стерти куки
-cookies.Create=Створити куку
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Інструменти
-cookies.ToolsTooltip=Інструменти
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Показати всі куки...
-cookies.ViewAllTooltip=Відкрити менеджер кук
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Дозволи web-сайтів
-cookies.ViewExceptionsTooltip=Переглянути список дозволених та заборонених сайтів
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Фільтр
-cookies.FilterTooltip=Використати вказані налаштування для фільтрації списку кук.
-cookies.filter.byPath=Фільтрувати куки за поточним шляхом
-cookies.filter.byPathTooltip=Показувати куки що відповідають поточному шляху
-cookies.filter.showRejectedCookies=Показати відкинуті куки
-cookies.filter.showRejectedCookiesTooltip=Показувати лише відкинуті куки в списку
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Змінити куку
-cookies.edit.name.label=Назва:
-cookies.edit.domain.label=Хост:
-cookies.edit.path.label=Шлях:
-cookies.edit.expire.label=Придатна:
-cookies.edit.value.label=Значення
-cookies.edit.secure.label=Захищена кука
-cookies.edit.httponly.label=Лише HTTP
-cookies.edit.session.label=Сесія
-cookies.edit.urlEncode.label=URL-закодоване значення
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Куки
-cookies.console.Filter_By_Cookies=Фільтр по кукам
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Вилучити всі куки
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Куки
+panel.tip.cookies=Дозволити інспектування та маніпуляцію куками
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Сеанс
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Дозволяти куки з сайтів
+cookies.tip.AllowGlobally=Типомо дозволити всі куки або блокувати всі куки
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Показати події кук
+cookies.tip.showCookieEvents=Виводити події кук (зміна, вилучення) до консолі
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Очищувати куки при забороні
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Вирізати
+cookies.Copy=Копіювати
+cookies.CopyAll=Копіювати все
+cookies.Paste=Вставити
+cookies.Delete=Вилучити
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Очистити значення
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Змінити
+cookies.Accept=Затвердити
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Скинути заголовки
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=Ви можете вказати які веб-сайти завжди чи ніколи не використовують куки.\nВведіть точну адресу сайту, яким хочете керувати та натисніть\nБлокувати, Дозволити на сеанс чи Дозволити
+cookies.ExceptionsTitle=Винятки - Куки
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Підтримка моніторингу кук
+cookies.HostEnable=Дозволити панель кук для %S
+cookies.HostDisable=Заборонити панель кук для %S
+cookies.Permissions=Дозволити чи заборонити панель кук
+cookies.PermissionsIntro=Оберіть веб-сайти, де Панель кук буде дозволена чи заборонена
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=Системні сторінки
+cookies.LocalFiles=Локальні файли
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Ви хочете вилучити всі куки зі списку?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Хочете стерти куки всіх сесій зі списку?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Не питати знову
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Підтвердження стирання кук
+cookies.tip.Confirm_cookie_removal=Якщо вибрано, діалог підтвердження показується перед вилученням всіх кук зі списку.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Вилучити всі куки зі списку
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Стерти куки сесії
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Стерти куки всіх сесій в списку
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Створити нову куку для %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Значення
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Керувати дозволами кук для %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=Всі куки було вилучено
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=Куки всіх сесій були стерті
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Відкинуті куки:
+cookies.console.nocookiesreceived=Жодної куки не отримано
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Кука
+cookies.console.deleted=вилучена
+cookies.console.added=додана
+cookies.console.changed=змінена
+cookies.console.cleared=очищена
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Домен
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Захист
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Дозволена
+cookies.status.downgraded=Понижена
+cookies.status.flagged=Позначена
+cookies.status.rejected=Відкинута
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Значення
+cookies.info.rawdatatab.Raw_Data=Сирі дані
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Типово (Дозволити куки сеансу)
+cookies.default.thirdPartySession=Типово (Дозволити куки сеансу)
+cookies.default.thirdParty=Типово (Дозволити куки)
+cookies.default.allow=Типово (Дозволити куки)
+cookies.default.deny=Типово (Заборонити куки)
+cookies.default.warn=Типово (Попереджувати перед затвердженням куки)
+cookies.host.session=Дозволяти куки сеансу з %S
+cookies.host.accept=Дозволяти куки з %S
+cookies.host.reject=Забороняти куки з %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Назва куки неправильна
+cookies.edit.invalidhost=Хост куки вказано неправильно
+cookies.edit.invalidpath=Шлях куки неправильний
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Назва
+cookies.header.value=Значення
+cookies.header.rawValue=Сире значення
+cookies.header.domain=Домен
+cookies.header.size=Розмір
+cookies.header.path=Шлях
+cookies.header.expires=Дійсна до
+cookies.header.security=Захист
+cookies.header.httponly=Лише http
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Назва куки
+cookies.header.value.tooltip=Значення, що зберігається для куки
+cookies.header.rawValue.tooltip=Сире значення, збережене для куки
+cookies.header.domain.tooltip=Домен, що зберігає куку
+cookies.header.size.tooltip=Розмір збереженої куки
+cookies.header.path.tooltip=Директорія, де кука є активною
+cookies.header.expires.tooltip=Дата, до якої кука є дійсною
+cookies.header.security.tooltip=Показувати захищеність куки
+cookies.header.httponly.tooltip=Показувати якщо кука є лише для HTTP
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Отримані куки
+cookies.netinfo.Sent_Cookies=Надіслані куки
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Фільтр шляхів
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Куки
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Експорт всіх кук...
+cookies.export.Export_All_Cookies_Tooltip=Експортувати всі куки переглядача до файлу cookies.txt
+cookies.export.Export_For_Site=Експорт кук цього сайту...
+cookies.export.Export_For_Site_Tooltip=Експортувати куки для %S до файлу cookies.txt
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=Це неактивна сторінка
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Перервати при зміні куки
+cookies.Disable_Break_On_Cookie=Вимкнути переривання при зміні куки
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Точки переривання куки
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Переривати на '%S'
+cookies.menu.tooltip.Break_On_Cookie=Переривати на '%S' коли стирається чи змінюється
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Змінити умову переривання
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Обчислення умова точки переривання провалилося
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Стерти куки
+cookies.Create=Створити куку
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Інструменти
+cookies.ToolsTooltip=Інструменти
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Показати всі куки...
+cookies.ViewAllTooltip=Відкрити менеджер кук
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Дозволи web-сайтів
+cookies.ViewExceptionsTooltip=Переглянути список дозволених та заборонених сайтів
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Фільтр
+cookies.FilterTooltip=Використати вказані налаштування для фільтрації списку кук.
+cookies.filter.byPath=Фільтрувати куки за поточним шляхом
+cookies.filter.byPathTooltip=Показувати куки що відповідають поточному шляху
+cookies.filter.showRejectedCookies=Показати відкинуті куки
+cookies.filter.showRejectedCookiesTooltip=Показувати лише відкинуті куки в списку
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Змінити куку
+cookies.edit.name.label=Назва:
+cookies.edit.domain.label=Хост:
+cookies.edit.path.label=Шлях:
+cookies.edit.expire.label=Придатна:
+cookies.edit.value.label=Значення
+cookies.edit.secure.label=Захищена кука
+cookies.edit.httponly.label=Лише HTTP
+cookies.edit.session.label=Сесія
+cookies.edit.urlEncode.label=URL-закодоване значення
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Куки
+cookies.console.Filter_By_Cookies=Фільтр по кукам
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Вилучити всі куки
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/uk-UA/firebug-amo.properties b/locale/uk-UA/firebug-amo.properties
index d0b97f5..4ae5c1a 100644
--- a/locale/uk-UA/firebug-amo.properties
+++ b/locale/uk-UA/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug інтегрується з Firefox щоб надати всю силу інструментів розробника на кінчиках пальців під час серфінгу. Ви можете редугувати, відлагоджувати та спостерігати за CSS,HTML та JavaScript наживо на будь-якій web-сторінці...\\n Firebug 1.6 потребує Firefox 3.6 чи новіший
-firebug.amo.description=Firebug інтеґрується з Firefox і надає достатньо засобів розробки на кінчиках пальців при перегляді. Ви можете змінювати, зневаджувати та стежити CSS, HTML, та JavaScript безпосередньо на будь-якій веб-сторінці...\\n\\nВідвідайте веб-сторінку Firebug для отримання документації, образів екрану чи дискусійних форумів: http://getfirebug.com
-firebug.amo.developer.comments=Якщо у вас виникли будь-які проблеми, прочитайте ЧАПи FireBug\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug інтегрується з Firefox щоб надати всю силу інструментів розробника на кінчиках пальців під час серфінгу. Ви можете редугувати, відлагоджувати та спостерігати за CSS,HTML та JavaScript наживо на будь-якій web-сторінці...\\n Firebug 1.6 потребує Firefox 3.6 чи новіший
+firebug.amo.description=Firebug інтеґрується з Firefox і надає достатньо засобів розробки на кінчиках пальців при перегляді. Ви можете змінювати, зневаджувати та стежити CSS, HTML, та JavaScript безпосередньо на будь-якій веб-сторінці...\\n\\nВідвідайте веб-сторінку Firebug для отримання документації, образів екрану чи дискусійних форумів: http://getfirebug.com
+firebug.amo.developer.comments=Якщо у вас виникли будь-які проблеми, прочитайте ЧАПи FireBug\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/uk-UA/firebug-tracing.properties b/locale/uk-UA/firebug-tracing.properties
index 66c1bdb..ead6b22 100644
--- a/locale/uk-UA/firebug-tracing.properties
+++ b/locale/uk-UA/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Відкрити трасування Firebug
-Always_Open_Firebug_Tracing=Завжди відкривати трасування Firebug
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Трасування
-tracing.Show_Scope_Variables=Показати змінні в межах
-tracing.Show_Time=Показати час
-tracing.tab.Stack=Стек
-tracing.tab.Exception=Виняток
-tracing.tab.Properties=Властивості
-tracing.tab.Scope=Межі
-tracing.tab.Response=Відповідь
-tracing.tab.Source=Джерело
-tracing.tab.Interfaces=Інтерфейси
-tracing.tab.Object=Об\'єкт
-tracing.tab.Event=Подія
-tracing.cmd.Clear=Очистити
-tracing.cmd.tip.Clear=Вилучити всі повідомлення
-tracing.cmd.Find=Знайти
-tracing.cmd.tip.Find=Знайти текст
-tracing.cmd.Bookmark=Закладка
-tracing.cmd.tip.Bookmark=Додати закладку
-tracing.cmd.Restart=Перезапустити Firefox
-tracing.cmd.tip.Restart=Перезапустити Firefox
-tracing.cmd.Exit=Закрити Firefox
-tracing.cmd.tip.Exit=Закрити Firefox
-tracing.cmd.Save=Зберегти до файла
-tracing.cmd.tip.Save=Зберегти журнали до файла
-tracing.cmd.Load=Завантажити з файла
-tracing.cmd.tip.Load=Завантажити журнал з файла
-tracing.cmd.Expand_All=Розкрити все
-tracing.cmd.Collapse_All=Згорнути все
-tracing.cmd.Tools=Інструменти
-tracing.cmd.tip.Tools=Інструменти
-tracing.cmd.Clear_Browser_Cache=Очистити кеш браузера
-tracing.cmd.tip.Clear_Browser_Cache=Очистити кеш браузера
-tracing.cmd.Force_Garbage_Collector=Прискорити збирач сміття
-tracing.cmd.tip.Force_Garbage_Collector=Прискорити збирач сміття
-tracing.cmd.Open_Profile_Directory=Відкрити теку профілю
-tracing.cmd.tip.Open_Profile_Directory=Відкрити теку профілю
-tracing.option.A11Y_Description=Проблеми доступності
-tracing.option.ACTIVATION_Description=Активація Firebug
-tracing.option.ACTIVITYOBSERVER_Description=Спостерігач активності Firebug
-tracing.option.ANNOTATIONS_Description=Аннотація веб-сайту Firebug
-tracing.option.BP_Description=Точки переривань
-tracing.option.CACHE_Description=Кеш джерела
-tracing.option.COMMANDLINE_Description=Командний рядок і Меню командного рядка
-tracing.option.COMPILATION_UNITS_Description=Виміри сценарію компіляції
-tracing.option.CONSOLE_Description=Панель консолі
-tracing.option.CSS_Description=Розбір CSS
-tracing.option.DISPATCH_Description=Диспетчеризація подій
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Створення domplate
-tracing.option.EDITOR_Description=Вбудований редактор та Автодоповнювач
-tracing.option.ERRORLOG_Description=Журнал помилок JS, CSS, XML тощо.
-tracing.option.ERRORS_Description=Внутрішні помилки Firebug
-tracing.option.EVAL_Description=Обчислення сценарію
-tracing.option.FBS_BP_Description=Точки переривання сервісу Firebug
-tracing.option.FBS_CREATION_Description=Створення точок переривання сервісу Firebug
-tracing.option.FBS_ERRORS_Description=Помилки сервісу Firebug
-tracing.option.FBS_FINDDEBUGGER_Description=Знайти відлагоджувач сервісу Firebug
-tracing.option.FBS_FUNCTION_Description=Функція сервісу Firebug
-tracing.option.FBS_JSDCONTEXT_Description=Контекст відлагоджувача JavaScript сервісу Firebug
-tracing.option.FBS_SRCUNITS_Description=Джерело одиниць служби Firebug
-tracing.option.FBS_STEP_Description=Степпінг відлагоджувача JavaScript служби Firebug
-tracing.option.FBS_TRACKFILES_Description=Файли, за якими стежить сервіс Firebug
-tracing.option.FUNCTION_NAMES_Description=Назви функцій JavaScript
-tracing.option.HISTORY_Description=Історія переходів Firebug
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=Спостерігач запитів HTTP
-tracing.option.INFOTIP_Description=Інформаційна підказка
-tracing.option.INITIALIZE_Description=Ініціалізація Firebug
-tracing.option.INSPECT_Description=Інспектор
-tracing.option.JSONVIEWER_Description=Переглядач JSON
-tracing.option.LINETABLE_Description=Таблиця рядків сценарію
-tracing.option.LOCALE_Description=Локалізація
-tracing.option.LOCATIONS_Description=Розміщення джерела
-tracing.option.NET_Description=Панель мережі
-tracing.option.NET_EVENTS_Description=Події мережі
-tracing.option.OPTIONS_Description=Уподобання Firebug
-tracing.option.PANELS_Description=Панелі
-tracing.option.SHORTCUTS_Description=Клавіатурні скорочення
-tracing.option.SOURCEFILES_Description=Джерельна файли JavaScript
-tracing.option.SPY_Description=Спостерігач XMLHTTPRequest
-tracing.option.STACK_Description=Стек викликів JavaScript
-tracing.option.STORAGE_Description=Сховище налаштувань
-tracing.option.SVGVIEWER_Description=Переглядач SVG
-tracing.option.FONTS_Description=Інформація про шрифти та переглядач шрифтів
-tracing.option.TOOLTIP_Description=Підказка кнопки \"Старт\"
-tracing.option.TOPLEVEL_Description=JavaScript верхнього рівня
-tracing.option.UI_LOOP_Description=Інтерфейс відлагодження JavaScript
-tracing.option.WINDOWS_Description=Вікна Firebug та Вкладка переглядача
-tracing.option.XMLVIEWER_Description=Переглядач XML
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Відкрити трасування Firebug
+Always_Open_Firebug_Tracing=Завжди відкривати трасування Firebug
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Трасування
+tracing.Show_Scope_Variables=Показати змінні в межах
+tracing.Show_Time=Показати час
+tracing.tab.Stack=Стек
+tracing.tab.Exception=Виняток
+tracing.tab.Properties=Властивості
+tracing.tab.Scope=Межі
+tracing.tab.Response=Відповідь
+tracing.tab.Source=Джерело
+tracing.tab.Interfaces=Інтерфейси
+tracing.tab.Object=Об\'єкт
+tracing.tab.Event=Подія
+tracing.cmd.Clear=Очистити
+tracing.cmd.tip.Clear=Вилучити всі повідомлення
+tracing.cmd.Find=Знайти
+tracing.cmd.tip.Find=Знайти текст
+tracing.cmd.Bookmark=Закладка
+tracing.cmd.tip.Bookmark=Додати закладку
+tracing.cmd.Restart=Перезапустити Firefox
+tracing.cmd.tip.Restart=Перезапустити Firefox
+tracing.cmd.Exit=Закрити Firefox
+tracing.cmd.tip.Exit=Закрити Firefox
+tracing.cmd.Save=Зберегти до файла
+tracing.cmd.tip.Save=Зберегти журнали до файла
+tracing.cmd.Load=Завантажити з файла
+tracing.cmd.tip.Load=Завантажити журнал з файла
+tracing.cmd.Expand_All=Розкрити все
+tracing.cmd.Collapse_All=Згорнути все
+tracing.cmd.Tools=Інструменти
+tracing.cmd.tip.Tools=Інструменти
+tracing.cmd.Clear_Browser_Cache=Очистити кеш браузера
+tracing.cmd.tip.Clear_Browser_Cache=Очистити кеш браузера
+tracing.cmd.Force_Garbage_Collector=Прискорити збирач сміття
+tracing.cmd.tip.Force_Garbage_Collector=Прискорити збирач сміття
+tracing.cmd.Open_Profile_Directory=Відкрити теку профілю
+tracing.cmd.tip.Open_Profile_Directory=Відкрити теку профілю
+tracing.option.A11Y_Description=Проблеми доступності
+tracing.option.ACTIVATION_Description=Активація Firebug
+tracing.option.ACTIVITYOBSERVER_Description=Спостерігач активності Firebug
+tracing.option.ANNOTATIONS_Description=Аннотація веб-сайту Firebug
+tracing.option.BP_Description=Точки переривань
+tracing.option.CACHE_Description=Кеш джерела
+tracing.option.COMMANDLINE_Description=Командний рядок і Меню командного рядка
+tracing.option.COMPILATION_UNITS_Description=Виміри сценарію компіляції
+tracing.option.CONSOLE_Description=Панель консолі
+tracing.option.CSS_Description=Розбір CSS
+tracing.option.DISPATCH_Description=Диспетчеризація подій
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Створення domplate
+tracing.option.EDITOR_Description=Вбудований редактор та Автодоповнювач
+tracing.option.ERRORLOG_Description=Журнал помилок JS, CSS, XML тощо.
+tracing.option.ERRORS_Description=Внутрішні помилки Firebug
+tracing.option.EVAL_Description=Обчислення сценарію
+tracing.option.FBS_BP_Description=Точки переривання сервісу Firebug
+tracing.option.FBS_CREATION_Description=Створення точок переривання сервісу Firebug
+tracing.option.FBS_ERRORS_Description=Помилки сервісу Firebug
+tracing.option.FBS_FINDDEBUGGER_Description=Знайти відлагоджувач сервісу Firebug
+tracing.option.FBS_FUNCTION_Description=Функція сервісу Firebug
+tracing.option.FBS_JSDCONTEXT_Description=Контекст відлагоджувача JavaScript сервісу Firebug
+tracing.option.FBS_SRCUNITS_Description=Джерело одиниць служби Firebug
+tracing.option.FBS_STEP_Description=Степпінг відлагоджувача JavaScript служби Firebug
+tracing.option.FBS_TRACKFILES_Description=Файли, за якими стежить сервіс Firebug
+tracing.option.FUNCTION_NAMES_Description=Назви функцій JavaScript
+tracing.option.HISTORY_Description=Історія переходів Firebug
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=Спостерігач запитів HTTP
+tracing.option.INFOTIP_Description=Інформаційна підказка
+tracing.option.INITIALIZE_Description=Ініціалізація Firebug
+tracing.option.INSPECT_Description=Інспектор
+tracing.option.JSONVIEWER_Description=Переглядач JSON
+tracing.option.LINETABLE_Description=Таблиця рядків сценарію
+tracing.option.LOCALE_Description=Локалізація
+tracing.option.LOCATIONS_Description=Розміщення джерела
+tracing.option.NET_Description=Панель мережі
+tracing.option.NET_EVENTS_Description=Події мережі
+tracing.option.OPTIONS_Description=Уподобання Firebug
+tracing.option.PANELS_Description=Панелі
+tracing.option.SHORTCUTS_Description=Клавіатурні скорочення
+tracing.option.SOURCEFILES_Description=Джерельна файли JavaScript
+tracing.option.SPY_Description=Спостерігач XMLHTTPRequest
+tracing.option.STACK_Description=Стек викликів JavaScript
+tracing.option.STORAGE_Description=Сховище налаштувань
+tracing.option.SVGVIEWER_Description=Переглядач SVG
+tracing.option.FONTS_Description=Інформація про шрифти та переглядач шрифтів
+tracing.option.TOOLTIP_Description=Підказка кнопки \"Старт\"
+tracing.option.TOPLEVEL_Description=JavaScript верхнього рівня
+tracing.option.UI_LOOP_Description=Інтерфейс відлагодження JavaScript
+tracing.option.WINDOWS_Description=Вікна Firebug та Вкладка переглядача
+tracing.option.XMLVIEWER_Description=Переглядач XML
diff --git a/locale/uk-UA/firebug.properties b/locale/uk-UA/firebug.properties
index e722d66..9e9faf9 100644
--- a/locale/uk-UA/firebug.properties
+++ b/locale/uk-UA/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Консоль
-panel.tip.console=Дозволити спостереження повідомлень консолі та виконання команд Javascript
-Panel-net=Мережа
-panel.tip.net=Дозволяє аналіз мережевого трафіку
-Panel-html=HTML
-panel.tip.html=Дозволяє інспектування і маніпулювання вмісту DOM
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Дозволяє інспектування і маніпулювання стилями CSS
-Panel-script=Скрипти
-panel.tip.script=Дозволяє відлагодження JavaScript
-Panel-dom=DOM
-panel.tip.dom=Дозволити інспектування і маніпуляцію властивостей DOM
-Panel-css=Стилі
-panel.tip.css=Дозволити інспектування і маніпуляцію стилів CSS обраного вузла DOM
-Panel-computed=Обчислено
-panel.tip.computed=Дозволити інспектування обчислених значень CSS обраного вузла DOM
-Panel-layout=Зовнішній вигляд
-panel.tip.layout=Дозволити інспектування і маніпуляцію даними розміщення виділеного вузла DOM
-Panel-domSide=DOM
-panel.tip.domSide=Дозволити інспектування і маніпуляцію властивостями DOM виділеного вузла DOM
-Panel-watches=Стежити
-panel.tip.watches=Дозволити інспектування змінних Javascript, доступних в поточному фреймі стеку і визначення виразів стеження
-Panel-breakpoints=Точки зупинки
-panel.tip.breakpoints=Дозволити маніпулювання набором точок переривання
-Panel-callstack=Стек
-panel.tip.callstack=Дозволити стеження за поточним стеком викликів Javascript
-Panel-scopes=Границі
-firebug.DetachFirebug=Відкрити Firebug у Новому Вікні
-firebug.AttachFirebug=Приєднати Firebug до вікна бравзера
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Загалом Firebug;%1$S Загалом Firebug-ів
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Деактивовано
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=В переглядачу
-minimized=Мінімізовано
-enablement.for_all_pages=для всіх сторінок
-enablement.on=Увімк.
-enablement.off=Вимк.
-enablement.Panel_activation_status=Статус панелі активації:
-none=Зачинено
-Firebug_-_inactive_for_current_website=Firebug - вимкнуто на поточному вебсайті
-Activate_Firebug_for_the_current_website=Включіть Firebug для поточного вебсайта
-Minimized=Мінімізовано
-Minimize_Firebug=Мінімізувати Firebug
-On_for_all_web_pages=Увімкнено для всіх web-сторінок
-firebug.menu.tip.On_for_all_Web_Sites=Типово активувати Firebugдля всіх вебсайтів
-firebug.menu.Clear_Activation_List=Очистити список активації
-firebug.menu.tip.Clear_Activation_List=Очистити список вебсайтів, для яких активований Firebug
-firebug.menu.Detached=Від’єднано
-firebug.menu.tip.Detached=Від’єднати Firebug у власне вікно
-firebug.menu.Top=Згори
-firebug.menu.tip.Top=Вирівняти Firebug згори вікна користувацького агента
-firebug.menu.Bottom=Знизу
-firebug.menu.tip.Bottom=Вирівняти Firebug знизу вікна користувацького агента
-firebug.menu.Left=Зліва
-firebug.menu.tip.Left=Вирівняти Firebug зліва вікна користувацького агента
-firebug.menu.Right=Справа
-firebug.menu.tip.Right=Вирівняти Firebug справа вікна користувацького агента
-firebug.uiLocation=Розміщення інтерфейсу Firebug
-firebug.menu.tip.UI_Location=Розміщення користувацького інтерфейсу Firebug
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Налаштування Firebug
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Показати всі панелі
-console.option.Show_Command_Line=Показати командний рядок
-console.option.tip.Show_Command_Line=Фокус на Командному Рядку/Показати Командний Рядок
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=Показувати помилки JavaScript
-console.option.tip.Show_JavaScript_Errors=Писати повідомлення про помилки JavaScript в консоль
-ShowJavaScriptWarnings=Показувати попередження JavaScript
-console.option.tip.Show_JavaScript_Warnings=Виводити попередження Javascript до консолі
-ShowCSSErrors=Показувати помилки CSS
-console.option.tip.Show_CSS_Errors=Виводити помилки CSS до консолі
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Показувати структуру стеку при помилках
-console.option.tip.Show_Stack_Trace=Показувати стектрейс для повідомлень про помилки
-ShowXMLHttpRequests=Показувати XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Виводити XMLHttpRequests до консолі
-ShowChromeErrors=Показувати помилки Chrome
-console.option.tip.Show_System_Errors=Виводити внутрішні помилки програми додатків до консолі
-ShowChromeMessages=Показувати повідомлення Chrome
-console.option.tip.Show_System_Messages=Виводити внутрішні повідомлення програми додатків до консолі
-ShowExternalErrors=Показувати зовнішні помилки
-console.option.tip.Show_External_Errors=Виводити помилки, що прийшли із зовнішніх джерел, до консолі
-ShowNetworkErrors=Показати помилки мережs
-console.option.tip.Show_Network_Errors=Виводити помилки мережі до консолі
-JavascriptOptionsStrict=Суворі попередження (зниження продуктивності)
-console.option.tip.Show_Strict_Warnings=Також виводити строгі попередження до консолі
-Command_History=Історія команд
-console.option.Show_Command_Editor=Показати редактор команд
-console.option.tip.Show_Command_Editor=Переключитися до Редактора Команд
-commandLineShowCompleterPopup=Показати контекстне сптсок завершення
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Помилка оголошення
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (рядок %S)
-LineAndCol=%S (рядок %S, колонка %S)
-InstanceLine=%S #%S (рядок %S)
-StackItem=%S (%S рядок %S)
-SystemItem=<Система>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(без назви)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Показувати повний текст
-html.option.tip.Show_Full_Text=Не обрізати вміст елементу
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Розділяти пустим місцем
-html.option.tip.Show_Whitespace=Показувати пробіли в середині вузлів
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Показувати коментарі
-html.option.tip.Show_Comments=Показувати вузли коментарів
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Показувати сутності як символи
-html.option.tip.Show_Entities_As_Symbols=Показувати всі XML сутності за допомогою символьного представлення
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Підсвічувати зміни
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Розкривати зміни
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Прокручуватии зміни у вікні
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Показати вікно швидких даних
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Модель затіненого віна
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Прокручувати у вікні
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Новий атрибут...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Редагувати %S...
-html.Node=Вузол
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Видалити елемент
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Видалити вузол
-html.Delete_Node=Delete the node from the tree
-# Quick Info Box
-quickInfo=Швидка інформація
-computedStyle=Обчислені стилі
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Зупинка при зміні
-html.Disable_Break_On_Mutate=Вимкнути зупинку при зміні
-html.label.Break_On_Text_Change=Зупинка при зміні тексту
-html.label.HTML_Breakpoints=Точки зупинки HTML
-html.label.Break_On_Attribute_Change=Зупинка при зміні атрибуту
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Зупинка при додаванні чи вилученні дочірнього елемента
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Зупинка при вилученні елемента
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Розкрити/Згорнути все
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Переривати на зміні властивості
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Заборонити переривання на зміні властивості
-dom.label.DOM_Breakpoints=Точки зупинки DOM
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Редагувати атрибут \"%S\"...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Видалити атрибут \"%S\"
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Успадковано від
-SothinkWarning=Розширення Sothink SWF Catcher перешкоджає нормальній роботі Firebug.<br><br>Ознайомтесь з <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">цим розділом</a>ЧАПів Firebug для довідки.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=У ґазди є ж бо гевеї, які шиють прості килими, наче хащі фацелій. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=Немає правил. Ви можете <a>створити правило</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=Цей елемент не має правил стилю. Ви можете <a>створити правило</a> для нього.
-EditStyle=Редагувати стиль елемента...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Нове правило...
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Нова властивість...
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=Редагувати \"%S\"...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=Вимкнути \"%S\"
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=Видалити \"%S\"
-css.tip.Delete_Prop=Delete the property "%S"
-# Console context menu labels.
-BreakOnThisError=Перервати при цій помилці
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Перервати при будь яких помилках
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Слідкувати за Throw/Catch
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Використовувати останній рядок джерела для eval() назв
-UseMD5ForEvalName=Використовувати MD5 для eval() назв
-# Breakpoints side panel
-Breakpoints=Точки переривання
-ErrorBreakpoints=Переривання через помилку
-LoggedFunctions=Підзвітні функції
-EnableAllBreakpoints=Задіяти всі точки зупинки
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Відключити точки зупинки
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Видалити точки зупинки
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Ця точка перивання спрацює лише якшо значення цього виразу буде істинним:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Вилучити точку переривання
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Вимкнути точку переривання
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Увікнути точку переривання
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Продовжити
-script.balloon.Disable=Відключити
-ScriptsFilterStatic=Показувати статичні скрипти
-ScriptsFilterEval=Показувати статичні та обчислені скрипти
-ScriptsFilterEvent=Показувати статичні та подієві скрипти
-ScriptsFilterAll=Показувати статичні, подієві та обчислені скрипти
-ScriptsFilterStaticShort=статичні
-ScriptsFilterEvalShort=обчислені
-ScriptsFilterEventShort=подієві
-ScriptsFilterAllShort=всі
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Розгорнути все
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Згорнути все
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Показувати користувацькі властивості
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Показувати користувацькі функції
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Показувати властивості DOM
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Показувати функції DOM
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Показувати константи DOM
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=У цього об\'єкта немає властивостей.
-NewWatch=Новий вираз для стеження...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Додати вираз для стеження
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Копіювати джерело
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Використовуйте #<число> для переходу на рядок
-CopyValue=Скопіювати значення
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Копія назви
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Копія шляху
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Нова властивість...
-EditProperty=Редагувати властивість...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Редагувати змінну...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Редагувати вираз для стеження...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Видалити властивість
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Видалити вираз для стеження
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Встановити точку переривання
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Редагувати умову точки переривання...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=На цій сторінці немає точок переривання.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Показувати тільки застосовані стилі
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Показувати CSS користувацького агента
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Розгорнути умовно позначені властивості
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Сортувати за абеткою
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Показати специфічні стилі Mozilla
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Натисніть будь-яку клавішу для фільтрування списку
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=поле
-LayoutBorder=край
-LayoutMargin=запас
-LayoutPosition=позиція
-LayoutAdjacent=прилеглість
-position=позиція
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Показувати лінійку та напрямні лінії
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Net panel
-Loading=Завантаження...
-Headers=Заголовки (headers)
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Скинути заголовки
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=Запитаний URL та використаний метод HTTP
-net.header.Status=Статус
-net.header.Status_Tooltip=Статус отриманої відповіді
-net.header.Domain=Домен
-net.header.Domain_Tooltip=Домен виконаного запиту
-net.header.Size=Розмір
-net.header.Size_Tooltip=Розмір отриманої відповіді
-net.header.Timeline=Часова лінія
-net.header.Timeline_Tooltip=Детальна інформація про час відповіді на запит.
-net.header.Local_IP=Локальний IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Віддалений IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Протокол
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=Точки переривання XHR
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Зупинка на XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=перегляд джерела
-net.headers.pretty_print=гарний друк
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Медіа
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Посилка (post)
-Put=Покладення (put)
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Відповідь (response)
-URLParameters=Параметри адреси
-Cache=Кеш
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=Загальна інформація
-fontviewer.Meta_Data=Метадані
-fontviewer.view_source=переглянути джерело
-fontviewer.Preview=Попередній перегляд
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=дивитися зразок
-fontviewer.uniqueid=Унікальний ID
-fontviewer.vendor=Vendor
-fontviewer.license=Ліцензія
-fontviewer.description=Опис
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Торгова марка
-fontviewer.licensee=Licensee
-fontviewer.extension=Розширення
-fontviewer.pangram=У ґазди є ж бо гевеї, які шиють прості килими, наче хащі фацелій
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Сортувати за ключем
-jsonviewer.do_not_sort=Не сортувати
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Заголовки запиту
-ResponseHeaders=Заголовки відповіді
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Ліміт журналу Firebug вичерпано. . %1$S записів не показано.;Ліміт журналу Firebug вичерпано. . %1$S записів не показано.
-LimitPrefs=Налаштування
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Для зміни ліміту відредагуйте: %S
-Refresh=Оновити
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Відкрити у новій вкладці
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Відкрити відповідь у новій вкладці
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Профайлер
-ProfilerStarted=Профайлер запущено. Натисніть \'Профайлер\' знову для перегляду звіту.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S виклик);(%1$Sms, %2$S викликів)
-NothingToProfile=Немає активності для профілювання.
-PercentTooltip=Час виконання цієї функції у відсотках.
-CallsHeaderTooltip=Кількість викликів цієї функції.
-OwnTimeHeaderTooltip=Час виконання цієї функції без внутрішніх викликів.
-TimeHeaderTooltip=Час виконання цієї функції із внутрішніми викликами.
-AvgHeaderTooltip=Усереднений час, разом з викликами функцій.
-MinHeaderTooltip=Мінімальний час, разом з викликами функцій.
-MaxHeaderTooltip=Мінімальний час, разом з викликами функцій.
-ProfileButton.Enabled.Tooltip=Профілювати час виконання JavaScript
-ProfileButton.Disabled.Tooltip=Профілювати час виконання JavaScript (Панель скриптів має бути дозволеною)
-Function=Функція
-Percent=Відсоток
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Викликів
-OwnTime=Власний час
-Time=Час
-Avg=Сер
-Min=Мін
-Max=Макс
-File=Файл
-# Support for standard actions.
-Copy=Скопіювати
-Cut=Вирізати
-Remove=Вилучити
-Delete=Delete
-Paste=Вставити
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Скопіювати Внутрішній HTML (innerHTML)
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Скопіювати XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Копіювати шлях CSS
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Скопіювати адресу
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Скопіювати адресу з параметрами
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Скопіювати заголовки запитів
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Скопіювати заголовки відповідей
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Скопіювати тіло відповіді
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Скопіювати помилку
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Скопіювати функцію
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Звіт про виклики у \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Звіт про події
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Дозволено
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Консоль Firebug не підтримує \'%S\'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Командний рядок Firebug не підтримує \'%S\'
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Вимкнути зупинку при всіх помилках
-console.Break_On_All_Errors=Зупинки при всіх помилках
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Переривати на цій помилці
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript вимкнено у ваших налаштуваннях Firefox. Якщо ви хочете використовувати панель консолі, увімкніть цю опцію в Інутрументи->Налаштування->Зміст->Дозволити JavaScript
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Командний рядок Firebug вимкнено для XML сторінок. Ви маєте <a>переключити до HTML</a> для того, щоб увімкнути.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Тіло відповіді
-net.sizeinfo.Post_Body=Тіло посилки
-net.sizeinfo.Total_Sent=Загалом надіслано
-net.sizeinfo.Total_Received=Загалом отримано
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Панель мережі активовано. Будь-які запити за час неактивності не відображаються
-net.responseSizeLimitMessage=Ліміт Firebug щодо розміру відповіді було вичерпано. Натисніть <a>тут</a> для відкриття відповіді в новій вкладці Firefox
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Ліміт запиту Firebug було вичерпано самим Firebug
-net.Break_On_XHR=Переривати на XHR
-net.label.Parameters=Параметри
-net.label.Parts=Частини
-net.label.Source=Джерело
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Вимкнути кеш браузера
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Показувати події малювання
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Перервати на наступному
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Показати HTTP заголовки
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S запит;%1$S запитів
-FromCache=з кешу
-StopLoading=Припинити завантаження
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Розмір даних дуже великий)
-ShowComputedStyle=Показати обрахований стиль
-StyleGroup-text=Текст
-StyleGroup-background=Задній план
-StyleGroup-box=Вигляд редактора
-StyleGroup-layout=Зовнішній вигляд
-StyleGroup-other=Інше
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Скопіювати колір
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Скопіювати адресу картинки
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Відкрити картинку у новій вкладці
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Оминати стек панелі інструментів
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Копіювати Правило декларації
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Копіювати декларацію стилю
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Помилка;%1$S Помилок
-moduleManager.title=Панель %S вимкнена
-moduleManager.desc3=Використовуйте іконку меню рядка стану Firebug для дозволу/заборони всіх панелей. Використовуйте мале меню на закладках панелей для індивідуального контролю панелей:
-moduleManager.Enable=Включити
-Suspend_Firebug=Призупинити Firebug
-Resume_Firebug=Відновити Firebug
-Reset_Panels_To_Disabled=Зробити панелі забороненими
-Open_Console=Відкрити консоль
-Open_Console_Tooltip=Відкрити консоль трасування Firebug.
-Scope_Chain=Ланцюг доступності
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=З
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Виклики
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Вікно
-Logs=Записи
-Options=Налаштування
-Copy_Stack=Копіювати стек
-Copy Exception=Копіювати виняток
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Блокування
-requestinfo.Resolving=Пошук DNS
-requestinfo.Connecting=З\'єднання
-requestinfo.Sending=Надсилання
-requestinfo.Waiting=Очікування
-requestinfo.Receiving=Отримання
-requestinfo.ContentLoad=\'DOMContentLoaded\' (подія)
-requestinfo.WindowLoad=\'load\' (подія)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Пошук Firebug
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Наступний
-search.tip.Next=Search for the next match
-search.Previous=Попереднє
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Примусово Враховувати Реєстр
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Множинні файли
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Використовувати регулярні вирази
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=Селектор CSS
-search.net.Headers=Заголовки
-search.net.Parameters=Параметри
-search.net.Response_Bodies=Тіла відповідей
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Постійно
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Показати всі записи в журналі
-firebug.console.Errors=Помилки
-firebug.console.Filter_by_Errors=Фільтрувати за помилками
-firebug.console.Warnings=Попереджувати
-firebug.console.Filter_by_Warnings=Фільтрувати за попередженнями
-firebug.console.Info=Інформація
-firebug.console.Filter_by_Info=Фільтрувати за інформацією
-firebug.console.Debug_Info=Відлагоджувальна інформація
-firebug.console.Filter_by_Debug_Info=Фільтрувати за відлагоджувальною інформацією
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Відкрити Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Сховати Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Дозволити всі панелі
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Заборонити всі панелі
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Підлаштувати скорочення
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Налаштування
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Дозволити покращення доступності
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Скинути всі налаштування Firebug
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug на лінії
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Показати кількість помилок
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Розмір шрифту
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Збільшити розмір шрифту
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Зменшити розмір шрифту
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Стандартний розмір шрифту
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Домашня сторінка Firebug...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Документація...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts="Гарячі" клавіші...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Обговорити це розширення...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Трекер проблем...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Спонсорувати...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Про...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Шукати
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Переввести команду
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Перемкнути інспектування
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Перемкнути вікно швидкої інформації
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Перемкнути профілювання
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Фокус на командному рядку
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Фокус на пошук Firebug
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Фокус на редакторі стежень
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Розміщення фокусу
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Наступний об\'єкт
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Попередній об\'єкт
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Налаштувати ключі Firebug
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Відкрити Firebug в новому вікні
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Перемкнути до лівої панелі Firebug
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Переключити до правої панелі Firebug
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Відкрити Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=Попередня вкладка Firebug
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Очистити консоль
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Відкрити консоль трасування
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Назад
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Вперед
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Збільшити розмір тексту
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Зменшити розмір тексту
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Нормальний розмір тексту
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Панель селекторів
-customizeShortcuts=Налаштування скорочень Firebug
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=панель засобів
-a11y.labels.firebug_panels=Панелі Firebug
-a11y.labels.firebug_side_panels=Бічна панель Firebug
-a11y.labels.firebug_window=вікно firebug
-a11y.labels.firebug_status=статус firebug
-a11y.labels.reset=скинути
-a11y.labels.reset_shortcut=скинути скорочення %S
-aria.labels.inactive_panel=неактивна панель
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=записи журналу
-a11y.labels.call_stack=стек виклику
-a11y.labels.document_structure=структура документу
-a11y.labels.title_panel=%S панель
-a11y.labels.title_side_panel=%S бічна панель
-a11y.labels.cached=кешовано
-aria.labels.stack_trace=трасування стеку
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=поля
-a11y.layout.border=межа
-a11y.layout.margin=край
-a11y.layout.position=позиція
-a11y.layout.position_top=позиція згори
-a11y.layout.position_right=позиція праворуч
-a11y.layout.position_bottom=позиція знизу
-a11y.layout.position_left=позиція ліворуч
-a11y.layout.margin_top=верхній край
-a11y.layout.margin_right=правий край
-a11y.layout.margin_bottom=нижній край
-a11y.layout.margin_left=лівий край
-a11y.layout.border_top=верхня межа
-a11y.layout.border_right=межа праворуч
-a11y.layout.border_bottom=нижня межа
-a11y.layout.border_left=межа ліворуч
-a11y.layout.padding_top=поля зверху
-a11y.layout.padding_right=поля праворуч
-a11y.layout.padding_bottom=поля знизу
-a11y.layout.padding_left=поля ліворуч
-a11y.layout.top=зверху
-a11y.layout.right=праворуч
-a11y.layout.bottom=знизу
-a11y.layout.left=ліворуч
-a11y.layout.width=ширина
-a11y.layout.height=довжина
-a11y.layout.size=розмір
-a11y.layout.z-index=z-індекс
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=обмеження клієнтського вікна
-a11y.descriptions.press_enter_to_edit_values=Натисніть Enter для реагування індивідуальних значень
-a11y.labels.style_rules=правила стилів
-aria.labels.inherited_style_rules=успадковані правила стилів
-a11y.labels.computed_styles=обчислені стилі
-a11y.labels.dom_properties=Властивості DOM
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=вбудований редактор
-a11y.labels.value_for_attribute_in_element=значення для %S атрибуту в %S елементі
-a11y.labels.attribute_for_element=атрибут для %S елемента
-a11y.labels.text_contents_for_element=текстовий вміст %S елемента
-a11y.labels.defined_in_file=визначений в %S
-a11y.labels.declarations_for_selector=декларація стилю для селектора \"%S\"
-a11y.labels.property_for_selector=Властивість CSS для селектора: %S
-a11y.labels.value_property_in_selector=%S значення властивості для селектора %S
-a11y.labels.css_selector=Селектор CSS
-a11y.labels.source_code_for_file=джерельний код для файлу %S
-a11y.labels.press_enter_to_add_new_watch_expression=натисніть enter для додавання нового виразу для перегляду
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=перевизначено
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=містить умовні точки зупинки
-a11y.updates.has_disabled_break_point=містить вимкнені точки зупинки
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Скрипт зупинено на рядку %s з %s, файл %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=співпадіння знайдено для \"%S\" з %S рядків журналу
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=співпадіння знайдено для \"%S\" в рядку %S з %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=співпадіння знайдено для \"%S\" в елементі %S за шляхом %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=співпадіння знайдено для \"%S\" в атрибуті %S=%S елемента %S за шляхом %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=співпадіння знайдено для \"%S\" в текстовому вмісті: %S з %S елемента за шляхом %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=співпадіння знайдено для \"%S\" в селекторі %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=співпадіння знайдено для \"%S\" в декларації стилю %S в селекторі %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=співпадіння знайдено для \"%S\" у DOM властивості %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=співпадіння знайдено \"%S\" в %S,%S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=співпадіння знайдено для \"%S\" в рядку підсумку мережі:%S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=не знайдено співпадінь для \"%S\"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Ви впевнені, що хочете скинути всі налаштування Firebug до стандартних значень?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=Консоль має бути дозволеною
-warning.Command_line_blocked?=Командний рядок блоковано?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Перезавантажити для активації консолі вікна
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=Ресурс з цього URL не текстовий
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Повернутися до цієї панелі
-firebug.history.Stay_on_this_panel=Залишитися на цій панелі
-firebug.history.Go_forward_to_this_panel=Перейти до цієї панелі
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Повернутися
-firebug.history.Go_forward=Перейти
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Панель сценаріїв була неактивною під час завантаження сторінки
-script.suggestion.inactive_during_page_load2=<a>Перезавантажте</a> щоб побачити всі коди
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript не дозволено
-script.suggestion.javascript_not_enabled=Див Інструменти/Налаштування/Вміст/Увімкнути Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Включіть Javascript і оновіть
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=Всі скрипти було відфільтровано
-script.suggestion.all_scripts_filtered=Див налаштування Фільтра Сценаріїв на панелі задач або \"Опція показу джерел Chrome\"
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=Немає Javascript на цій сторінці
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Відлагоджувач наразі працює
-script.suggestion.debugger_active=Відлагоджувач наразі зупинено точкою переривання на іншій сторінці
-script.button.Go_to_that_page=Перейти до сторінки
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Закрити
-firebug.View=Вигляд
-firebug.Help=Довідка
-firebug.Run=Запустити
-firebug.Copy=Скопіювати
-firebug.History=Історія
-firebug.Run_the_entered_command=Запустити введену команду
-firebug.Clear_the_Command_Editor=Очистити редактор команд
-firebug.Copy_the_script_as_a_bookmarklet=Копіювати сценарій як букмарклет
-firebug.Insert_a_previously_entered_command=Вставити попередньо введену команду
-firebug.AlwaysOpenInWindow=Завжди відкривати у Новому Вікні
-firebug.OpenWith=Відкрити редактором
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Сайти...
-firebug.Configure_Editors=Налаштувати редактори
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Дослідити
-firebug.InspectElement=Дослідити елемент
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Припинити виконання при помилках
-firebug.InspectTooltip=Оберіть елемент сторінки для досліджень
-firebug.EditHTMLTooltip=Редагувати цей HTML
-firebug.Profile=Профайлер
-firebug.Clear=Почистити
-firebug.ClearConsole=Почистити консоль
-firebug.ClearTooltip=Почистити консоль
-firebug.All=Все
-firebug.Images=Зображення
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Налаштовані редактори Firebug
-editors.Editor=Редактор
-editors.Executable=Може виконуватися
-editors.Launch_Arguments=Аргументи запуску
-editors.Add=Додати
-editors.Remove=Вилучити
-editors.Change=Змінити
-editors.Move_Up=Вгору
-editors.Close=Закрити
-editors.Browse=Переглянути…
-changeEditor.Editor_Configuration=Налаштування редактора
-changeEditor.Name=Назва:
-changeEditor.Executable=Програма:
-changeEditor.CmdLine=Аргументи:
-changeEditor.Supplied_arguments=Аргументи, що підтримуються Firebug-ом:
-changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> URL файла (якщо %url немає, %file буде додано)
-changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> Шлях до локального файла (чи тимчасової копії)
-changeEditor.Line_number=<label class=\'text-link\'>%line</label> Номер рядка (якщо доступно)
-changeEditor.Invalid_Application_Path=Направильний шлях до програми
-changeEditor.Application_does_not_exist=Вказана програма не існує!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Редагувати
-firebug.css.sourceEdit=Редагування джерела
-firebug.css.sourceEdit.tooltip=Текстове поле редагування джерела стилю, який було завантажено в браузер
-firebug.css.liveEdit=Живе редагування
-firebug.css.liveEdit.tooltip=Текстове поле редагування CSS взятого з браузера
-firebug.EditCSSTooltip=Редагувати ці стилі
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Сайти не запам’ятовуються в Режимі Приватного Перегляду
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Показувати сповіщення переривань
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=Ви можете увімкнути/вимкнути сповіщення переривань в <a>меню панелі</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Кнопка \"Вимкнути\" перевизначає \'відлагоджувач\' з вимкненою точкою переривань.
-firebug.bon.tooltip.disableDebuggerKeyword2=Створює вимкнену точку переривань
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=Немає дочірніх об’єктів
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=більше
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S елемент у Сховищі;%1$S елементів у Сховищі
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Властівості об’єкта
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(Без поповнення)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=URL об’єкту було відкликано через метод revokeObjectURL.
-firebug.failedToPreviewImageURL=Не вдалося завантажити вказаний URL.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Консоль
+panel.tip.console=Дозволити спостереження повідомлень консолі та виконання команд Javascript
+Panel-net=Мережа
+panel.tip.net=Дозволяє аналіз мережевого трафіку
+Panel-html=HTML
+panel.tip.html=Дозволяє інспектування і маніпулювання вмісту DOM
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Дозволяє інспектування і маніпулювання стилями CSS
+Panel-script=Скрипти
+panel.tip.script=Дозволяє відлагодження JavaScript
+Panel-dom=DOM
+panel.tip.dom=Дозволити інспектування і маніпуляцію властивостей DOM
+Panel-css=Стилі
+panel.tip.css=Дозволити інспектування і маніпуляцію стилів CSS обраного вузла DOM
+Panel-computed=Обчислено
+panel.tip.computed=Дозволити інспектування обчислених значень CSS обраного вузла DOM
+Panel-layout=Зовнішній вигляд
+panel.tip.layout=Дозволити інспектування і маніпуляцію даними розміщення виділеного вузла DOM
+Panel-domSide=DOM
+panel.tip.domSide=Дозволити інспектування і маніпуляцію властивостями DOM виділеного вузла DOM
+Panel-watches=Стежити
+panel.tip.watches=Дозволити інспектування змінних Javascript, доступних в поточному фреймі стеку і визначення виразів стеження
+Panel-breakpoints=Точки зупинки
+panel.tip.breakpoints=Дозволити маніпулювання набором точок переривання
+Panel-callstack=Стек
+panel.tip.callstack=Дозволити стеження за поточним стеком викликів Javascript
+Panel-scopes=Границі
+firebug.DetachFirebug=Відкрити Firebug у Новому Вікні
+firebug.AttachFirebug=Приєднати Firebug до вікна бравзера
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Загалом Firebug;%1$S Загалом Firebug-ів
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Деактивовано
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=В переглядачу
+minimized=Мінімізовано
+enablement.for_all_pages=для всіх сторінок
+enablement.on=Увімк.
+enablement.off=Вимк.
+enablement.Panel_activation_status=Статус панелі активації:
+none=Зачинено
+Firebug_-_inactive_for_current_website=Firebug - вимкнуто на поточному вебсайті
+Activate_Firebug_for_the_current_website=Включіть Firebug для поточного вебсайта
+Minimized=Мінімізовано
+Minimize_Firebug=Мінімізувати Firebug
+On_for_all_web_pages=Увімкнено для всіх web-сторінок
+firebug.menu.tip.On_for_all_Web_Sites=Типово активувати Firebugдля всіх вебсайтів
+firebug.menu.Clear_Activation_List=Очистити список активації
+firebug.menu.tip.Clear_Activation_List=Очистити список вебсайтів, для яких активований Firebug
+firebug.menu.Detached=Від’єднано
+firebug.menu.tip.Detached=Від’єднати Firebug у власне вікно
+firebug.menu.Top=Згори
+firebug.menu.tip.Top=Вирівняти Firebug згори вікна користувацького агента
+firebug.menu.Bottom=Знизу
+firebug.menu.tip.Bottom=Вирівняти Firebug знизу вікна користувацького агента
+firebug.menu.Left=Зліва
+firebug.menu.tip.Left=Вирівняти Firebug зліва вікна користувацького агента
+firebug.menu.Right=Справа
+firebug.menu.tip.Right=Вирівняти Firebug справа вікна користувацького агента
+firebug.uiLocation=Розміщення інтерфейсу Firebug
+firebug.menu.tip.UI_Location=Розміщення користувацького інтерфейсу Firebug
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Налаштування Firebug
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Показати всі панелі
+console.option.Show_Command_Line=Показати командний рядок
+console.option.tip.Show_Command_Line=Фокус на Командному Рядку/Показати Командний Рядок
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=Показувати помилки JavaScript
+console.option.tip.Show_JavaScript_Errors=Писати повідомлення про помилки JavaScript в консоль
+ShowJavaScriptWarnings=Показувати попередження JavaScript
+console.option.tip.Show_JavaScript_Warnings=Виводити попередження Javascript до консолі
+ShowCSSErrors=Показувати помилки CSS
+console.option.tip.Show_CSS_Errors=Виводити помилки CSS до консолі
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Показувати структуру стеку при помилках
+console.option.tip.Show_Stack_Trace=Показувати стектрейс для повідомлень про помилки
+ShowXMLHttpRequests=Показувати XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Виводити XMLHttpRequests до консолі
+ShowChromeErrors=Показувати помилки Chrome
+console.option.tip.Show_System_Errors=Виводити внутрішні помилки програми додатків до консолі
+ShowChromeMessages=Показувати повідомлення Chrome
+console.option.tip.Show_System_Messages=Виводити внутрішні повідомлення програми додатків до консолі
+ShowExternalErrors=Показувати зовнішні помилки
+console.option.tip.Show_External_Errors=Виводити помилки, що прийшли із зовнішніх джерел, до консолі
+ShowNetworkErrors=Показати помилки мережs
+console.option.tip.Show_Network_Errors=Виводити помилки мережі до консолі
+JavascriptOptionsStrict=Суворі попередження (зниження продуктивності)
+console.option.tip.Show_Strict_Warnings=Також виводити строгі попередження до консолі
+Command_History=Історія команд
+console.option.Show_Command_Editor=Показати редактор команд
+console.option.tip.Show_Command_Editor=Переключитися до Редактора Команд
+commandLineShowCompleterPopup=Показати контекстне сптсок завершення
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Помилка оголошення
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (рядок %S)
+LineAndCol=%S (рядок %S, колонка %S)
+InstanceLine=%S #%S (рядок %S)
+StackItem=%S (%S рядок %S)
+SystemItem=<Система>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(без назви)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Показувати повний текст
+html.option.tip.Show_Full_Text=Не обрізати вміст елементу
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Розділяти пустим місцем
+html.option.tip.Show_Whitespace=Показувати пробіли в середині вузлів
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Показувати коментарі
+html.option.tip.Show_Comments=Показувати вузли коментарів
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Показувати сутності як символи
+html.option.tip.Show_Entities_As_Symbols=Показувати всі XML сутності за допомогою символьного представлення
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Підсвічувати зміни
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Розкривати зміни
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Прокручуватии зміни у вікні
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Показати вікно швидких даних
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Модель затіненого віна
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Прокручувати у вікні
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Новий атрибут...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Редагувати %S...
+html.Node=Вузол
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Видалити елемент
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Видалити вузол
+html.Delete_Node=Delete the node from the tree
+# Quick Info Box
+quickInfo=Швидка інформація
+computedStyle=Обчислені стилі
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Зупинка при зміні
+html.Disable_Break_On_Mutate=Вимкнути зупинку при зміні
+html.label.Break_On_Text_Change=Зупинка при зміні тексту
+html.label.HTML_Breakpoints=Точки зупинки HTML
+html.label.Break_On_Attribute_Change=Зупинка при зміні атрибуту
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Зупинка при додаванні чи вилученні дочірнього елемента
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Зупинка при вилученні елемента
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Розкрити/Згорнути все
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Переривати на зміні властивості
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Заборонити переривання на зміні властивості
+dom.label.DOM_Breakpoints=Точки зупинки DOM
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Редагувати атрибут \"%S\"...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Видалити атрибут \"%S\"
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Успадковано від
+SothinkWarning=Розширення Sothink SWF Catcher перешкоджає нормальній роботі Firebug.<br><br>Ознайомтесь з <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">цим розділом</a>ЧАПів Firebug для довідки.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=У ґазди є ж бо гевеї, які шиють прості килими, наче хащі фацелій. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=Немає правил. Ви можете <a>створити правило</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=Цей елемент не має правил стилю. Ви можете <a>створити правило</a> для нього.
+EditStyle=Редагувати стиль елемента...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Нове правило...
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Нова властивість...
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=Редагувати \"%S\"...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=Вимкнути \"%S\"
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=Видалити \"%S\"
+css.tip.Delete_Prop=Delete the property "%S"
+# Console context menu labels.
+BreakOnThisError=Перервати при цій помилці
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Перервати при будь яких помилках
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Слідкувати за Throw/Catch
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Використовувати останній рядок джерела для eval() назв
+UseMD5ForEvalName=Використовувати MD5 для eval() назв
+# Breakpoints side panel
+Breakpoints=Точки переривання
+ErrorBreakpoints=Переривання через помилку
+LoggedFunctions=Підзвітні функції
+EnableAllBreakpoints=Задіяти всі точки зупинки
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Відключити точки зупинки
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Видалити точки зупинки
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Ця точка перивання спрацює лише якшо значення цього виразу буде істинним:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Вилучити точку переривання
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Вимкнути точку переривання
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Увікнути точку переривання
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Продовжити
+script.balloon.Disable=Відключити
+ScriptsFilterStatic=Показувати статичні скрипти
+ScriptsFilterEval=Показувати статичні та обчислені скрипти
+ScriptsFilterEvent=Показувати статичні та подієві скрипти
+ScriptsFilterAll=Показувати статичні, подієві та обчислені скрипти
+ScriptsFilterStaticShort=статичні
+ScriptsFilterEvalShort=обчислені
+ScriptsFilterEventShort=подієві
+ScriptsFilterAllShort=всі
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Розгорнути все
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Згорнути все
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Показувати користувацькі властивості
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Показувати користувацькі функції
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Показувати властивості DOM
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Показувати функції DOM
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Показувати константи DOM
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=У цього об\'єкта немає властивостей.
+NewWatch=Новий вираз для стеження...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Додати вираз для стеження
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Копіювати джерело
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Використовуйте #<число> для переходу на рядок
+CopyValue=Скопіювати значення
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Копія назви
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Копія шляху
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Нова властивість...
+EditProperty=Редагувати властивість...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Редагувати змінну...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Редагувати вираз для стеження...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Видалити властивість
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Видалити вираз для стеження
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Встановити точку переривання
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Редагувати умову точки переривання...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=На цій сторінці немає точок переривання.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Показувати тільки застосовані стилі
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Показувати CSS користувацького агента
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Розгорнути умовно позначені властивості
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Сортувати за абеткою
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Показати специфічні стилі Mozilla
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Натисніть будь-яку клавішу для фільтрування списку
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=поле
+LayoutBorder=край
+LayoutMargin=запас
+LayoutPosition=позиція
+LayoutAdjacent=прилеглість
+position=позиція
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Показувати лінійку та напрямні лінії
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Net panel
+Loading=Завантаження...
+Headers=Заголовки (headers)
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Скинути заголовки
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=Запитаний URL та використаний метод HTTP
+net.header.Status=Статус
+net.header.Status_Tooltip=Статус отриманої відповіді
+net.header.Domain=Домен
+net.header.Domain_Tooltip=Домен виконаного запиту
+net.header.Size=Розмір
+net.header.Size_Tooltip=Розмір отриманої відповіді
+net.header.Timeline=Часова лінія
+net.header.Timeline_Tooltip=Детальна інформація про час відповіді на запит.
+net.header.Local_IP=Локальний IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Віддалений IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Протокол
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=Точки переривання XHR
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Зупинка на XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=перегляд джерела
+net.headers.pretty_print=гарний друк
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Медіа
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Посилка (post)
+Put=Покладення (put)
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Відповідь (response)
+URLParameters=Параметри адреси
+Cache=Кеш
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=Загальна інформація
+fontviewer.Meta_Data=Метадані
+fontviewer.view_source=переглянути джерело
+fontviewer.Preview=Попередній перегляд
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=дивитися зразок
+fontviewer.uniqueid=Унікальний ID
+fontviewer.vendor=Vendor
+fontviewer.license=Ліцензія
+fontviewer.description=Опис
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Торгова марка
+fontviewer.licensee=Licensee
+fontviewer.extension=Розширення
+fontviewer.pangram=У ґазди є ж бо гевеї, які шиють прості килими, наче хащі фацелій
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Сортувати за ключем
+jsonviewer.do_not_sort=Не сортувати
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Заголовки запиту
+ResponseHeaders=Заголовки відповіді
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Ліміт журналу Firebug вичерпано. . %1$S записів не показано.;Ліміт журналу Firebug вичерпано. . %1$S записів не показано.
+LimitPrefs=Налаштування
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Для зміни ліміту відредагуйте: %S
+Refresh=Оновити
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Відкрити у новій вкладці
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Відкрити відповідь у новій вкладці
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Профайлер
+ProfilerStarted=Профайлер запущено. Натисніть \'Профайлер\' знову для перегляду звіту.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S виклик);(%1$Sms, %2$S викликів)
+NothingToProfile=Немає активності для профілювання.
+PercentTooltip=Час виконання цієї функції у відсотках.
+CallsHeaderTooltip=Кількість викликів цієї функції.
+OwnTimeHeaderTooltip=Час виконання цієї функції без внутрішніх викликів.
+TimeHeaderTooltip=Час виконання цієї функції із внутрішніми викликами.
+AvgHeaderTooltip=Усереднений час, разом з викликами функцій.
+MinHeaderTooltip=Мінімальний час, разом з викликами функцій.
+MaxHeaderTooltip=Мінімальний час, разом з викликами функцій.
+ProfileButton.Enabled.Tooltip=Профілювати час виконання JavaScript
+ProfileButton.Disabled.Tooltip=Профілювати час виконання JavaScript (Панель скриптів має бути дозволеною)
+Function=Функція
+Percent=Відсоток
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Викликів
+OwnTime=Власний час
+Time=Час
+Avg=Сер
+Min=Мін
+Max=Макс
+File=Файл
+# Support for standard actions.
+Copy=Скопіювати
+Cut=Вирізати
+Remove=Вилучити
+Delete=Delete
+Paste=Вставити
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Скопіювати Внутрішній HTML (innerHTML)
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Скопіювати XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Копіювати шлях CSS
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Скопіювати адресу
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Скопіювати адресу з параметрами
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Скопіювати заголовки запитів
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Скопіювати заголовки відповідей
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Скопіювати тіло відповіді
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Скопіювати помилку
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Скопіювати функцію
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Звіт про виклики у \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Звіт про події
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Дозволено
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Консоль Firebug не підтримує \'%S\'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Командний рядок Firebug не підтримує \'%S\'
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Вимкнути зупинку при всіх помилках
+console.Break_On_All_Errors=Зупинки при всіх помилках
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Переривати на цій помилці
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript вимкнено у ваших налаштуваннях Firefox. Якщо ви хочете використовувати панель консолі, увімкніть цю опцію в Інутрументи->Налаштування->Зміст->Дозволити JavaScript
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Командний рядок Firebug вимкнено для XML сторінок. Ви маєте <a>переключити до HTML</a> для того, щоб увімкнути.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Тіло відповіді
+net.sizeinfo.Post_Body=Тіло посилки
+net.sizeinfo.Total_Sent=Загалом надіслано
+net.sizeinfo.Total_Received=Загалом отримано
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Панель мережі активовано. Будь-які запити за час неактивності не відображаються
+net.responseSizeLimitMessage=Ліміт Firebug щодо розміру відповіді було вичерпано. Натисніть <a>тут</a> для відкриття відповіді в новій вкладці Firefox
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Ліміт запиту Firebug було вичерпано самим Firebug
+net.Break_On_XHR=Переривати на XHR
+net.label.Parameters=Параметри
+net.label.Parts=Частини
+net.label.Source=Джерело
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Вимкнути кеш браузера
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Показувати події малювання
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Перервати на наступному
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Показати HTTP заголовки
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S запит;%1$S запитів
+FromCache=з кешу
+StopLoading=Припинити завантаження
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Розмір даних дуже великий)
+ShowComputedStyle=Показати обрахований стиль
+StyleGroup-text=Текст
+StyleGroup-background=Задній план
+StyleGroup-box=Вигляд редактора
+StyleGroup-layout=Зовнішній вигляд
+StyleGroup-other=Інше
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Скопіювати колір
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Скопіювати адресу картинки
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Відкрити картинку у новій вкладці
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Оминати стек панелі інструментів
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Копіювати Правило декларації
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Копіювати декларацію стилю
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Помилка;%1$S Помилок
+moduleManager.title=Панель %S вимкнена
+moduleManager.desc3=Використовуйте іконку меню рядка стану Firebug для дозволу/заборони всіх панелей. Використовуйте мале меню на закладках панелей для індивідуального контролю панелей:
+moduleManager.Enable=Включити
+Suspend_Firebug=Призупинити Firebug
+Resume_Firebug=Відновити Firebug
+Reset_Panels_To_Disabled=Зробити панелі забороненими
+Open_Console=Відкрити консоль
+Open_Console_Tooltip=Відкрити консоль трасування Firebug.
+Scope_Chain=Ланцюг доступності
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=З
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Виклики
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Вікно
+Logs=Записи
+Options=Налаштування
+Copy_Stack=Копіювати стек
+Copy Exception=Копіювати виняток
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Блокування
+requestinfo.Resolving=Пошук DNS
+requestinfo.Connecting=З\'єднання
+requestinfo.Sending=Надсилання
+requestinfo.Waiting=Очікування
+requestinfo.Receiving=Отримання
+requestinfo.ContentLoad=\'DOMContentLoaded\' (подія)
+requestinfo.WindowLoad=\'load\' (подія)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Пошук Firebug
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Наступний
+search.tip.Next=Search for the next match
+search.Previous=Попереднє
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Примусово Враховувати Реєстр
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Множинні файли
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Використовувати регулярні вирази
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=Селектор CSS
+search.net.Headers=Заголовки
+search.net.Parameters=Параметри
+search.net.Response_Bodies=Тіла відповідей
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Постійно
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Показати всі записи в журналі
+firebug.console.Errors=Помилки
+firebug.console.Filter_by_Errors=Фільтрувати за помилками
+firebug.console.Warnings=Попереджувати
+firebug.console.Filter_by_Warnings=Фільтрувати за попередженнями
+firebug.console.Info=Інформація
+firebug.console.Filter_by_Info=Фільтрувати за інформацією
+firebug.console.Debug_Info=Відлагоджувальна інформація
+firebug.console.Filter_by_Debug_Info=Фільтрувати за відлагоджувальною інформацією
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Відкрити Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Сховати Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Дозволити всі панелі
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Заборонити всі панелі
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Підлаштувати скорочення
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Налаштування
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Дозволити покращення доступності
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Скинути всі налаштування Firebug
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug на лінії
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Показати кількість помилок
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Розмір шрифту
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Збільшити розмір шрифту
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Зменшити розмір шрифту
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Стандартний розмір шрифту
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Домашня сторінка Firebug...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Документація...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts="Гарячі" клавіші...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Обговорити це розширення...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Трекер проблем...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Спонсорувати...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Про...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Шукати
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Переввести команду
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Перемкнути інспектування
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Перемкнути вікно швидкої інформації
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Перемкнути профілювання
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Фокус на командному рядку
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Фокус на пошук Firebug
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Фокус на редакторі стежень
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Розміщення фокусу
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Наступний об\'єкт
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Попередній об\'єкт
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Налаштувати ключі Firebug
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Відкрити Firebug в новому вікні
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Перемкнути до лівої панелі Firebug
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Переключити до правої панелі Firebug
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Відкрити Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=Попередня вкладка Firebug
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Очистити консоль
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Відкрити консоль трасування
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Назад
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Вперед
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Збільшити розмір тексту
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Зменшити розмір тексту
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Нормальний розмір тексту
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Панель селекторів
+customizeShortcuts=Налаштування скорочень Firebug
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=панель засобів
+a11y.labels.firebug_panels=Панелі Firebug
+a11y.labels.firebug_side_panels=Бічна панель Firebug
+a11y.labels.firebug_window=вікно firebug
+a11y.labels.firebug_status=статус firebug
+a11y.labels.reset=скинути
+a11y.labels.reset_shortcut=скинути скорочення %S
+aria.labels.inactive_panel=неактивна панель
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=записи журналу
+a11y.labels.call_stack=стек виклику
+a11y.labels.document_structure=структура документу
+a11y.labels.title_panel=%S панель
+a11y.labels.title_side_panel=%S бічна панель
+a11y.labels.cached=кешовано
+aria.labels.stack_trace=трасування стеку
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=поля
+a11y.layout.border=межа
+a11y.layout.margin=край
+a11y.layout.position=позиція
+a11y.layout.position_top=позиція згори
+a11y.layout.position_right=позиція праворуч
+a11y.layout.position_bottom=позиція знизу
+a11y.layout.position_left=позиція ліворуч
+a11y.layout.margin_top=верхній край
+a11y.layout.margin_right=правий край
+a11y.layout.margin_bottom=нижній край
+a11y.layout.margin_left=лівий край
+a11y.layout.border_top=верхня межа
+a11y.layout.border_right=межа праворуч
+a11y.layout.border_bottom=нижня межа
+a11y.layout.border_left=межа ліворуч
+a11y.layout.padding_top=поля зверху
+a11y.layout.padding_right=поля праворуч
+a11y.layout.padding_bottom=поля знизу
+a11y.layout.padding_left=поля ліворуч
+a11y.layout.top=зверху
+a11y.layout.right=праворуч
+a11y.layout.bottom=знизу
+a11y.layout.left=ліворуч
+a11y.layout.width=ширина
+a11y.layout.height=довжина
+a11y.layout.size=розмір
+a11y.layout.z-index=z-індекс
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=обмеження клієнтського вікна
+a11y.descriptions.press_enter_to_edit_values=Натисніть Enter для реагування індивідуальних значень
+a11y.labels.style_rules=правила стилів
+aria.labels.inherited_style_rules=успадковані правила стилів
+a11y.labels.computed_styles=обчислені стилі
+a11y.labels.dom_properties=Властивості DOM
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=вбудований редактор
+a11y.labels.value_for_attribute_in_element=значення для %S атрибуту в %S елементі
+a11y.labels.attribute_for_element=атрибут для %S елемента
+a11y.labels.text_contents_for_element=текстовий вміст %S елемента
+a11y.labels.defined_in_file=визначений в %S
+a11y.labels.declarations_for_selector=декларація стилю для селектора \"%S\"
+a11y.labels.property_for_selector=Властивість CSS для селектора: %S
+a11y.labels.value_property_in_selector=%S значення властивості для селектора %S
+a11y.labels.css_selector=Селектор CSS
+a11y.labels.source_code_for_file=джерельний код для файлу %S
+a11y.labels.press_enter_to_add_new_watch_expression=натисніть enter для додавання нового виразу для перегляду
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=перевизначено
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=містить умовні точки зупинки
+a11y.updates.has_disabled_break_point=містить вимкнені точки зупинки
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Скрипт зупинено на рядку %s з %s, файл %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=співпадіння знайдено для \"%S\" з %S рядків журналу
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=співпадіння знайдено для \"%S\" в рядку %S з %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=співпадіння знайдено для \"%S\" в елементі %S за шляхом %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=співпадіння знайдено для \"%S\" в атрибуті %S=%S елемента %S за шляхом %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=співпадіння знайдено для \"%S\" в текстовому вмісті: %S з %S елемента за шляхом %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=співпадіння знайдено для \"%S\" в селекторі %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=співпадіння знайдено для \"%S\" в декларації стилю %S в селекторі %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=співпадіння знайдено для \"%S\" у DOM властивості %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=співпадіння знайдено \"%S\" в %S,%S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=співпадіння знайдено для \"%S\" в рядку підсумку мережі:%S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=не знайдено співпадінь для \"%S\"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Ви впевнені, що хочете скинути всі налаштування Firebug до стандартних значень?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=Консоль має бути дозволеною
+warning.Command_line_blocked?=Командний рядок блоковано?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Перезавантажити для активації консолі вікна
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=Ресурс з цього URL не текстовий
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Повернутися до цієї панелі
+firebug.history.Stay_on_this_panel=Залишитися на цій панелі
+firebug.history.Go_forward_to_this_panel=Перейти до цієї панелі
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Повернутися
+firebug.history.Go_forward=Перейти
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Панель сценаріїв була неактивною під час завантаження сторінки
+script.suggestion.inactive_during_page_load2=<a>Перезавантажте</a> щоб побачити всі коди
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript не дозволено
+script.suggestion.javascript_not_enabled=Див Інструменти/Налаштування/Вміст/Увімкнути Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Включіть Javascript і оновіть
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=Всі скрипти було відфільтровано
+script.suggestion.all_scripts_filtered=Див налаштування Фільтра Сценаріїв на панелі задач або \"Опція показу джерел Chrome\"
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=Немає Javascript на цій сторінці
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Відлагоджувач наразі працює
+script.suggestion.debugger_active=Відлагоджувач наразі зупинено точкою переривання на іншій сторінці
+script.button.Go_to_that_page=Перейти до сторінки
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Закрити
+firebug.View=Вигляд
+firebug.Help=Довідка
+firebug.Run=Запустити
+firebug.Copy=Скопіювати
+firebug.History=Історія
+firebug.Run_the_entered_command=Запустити введену команду
+firebug.Clear_the_Command_Editor=Очистити редактор команд
+firebug.Copy_the_script_as_a_bookmarklet=Копіювати сценарій як букмарклет
+firebug.Insert_a_previously_entered_command=Вставити попередньо введену команду
+firebug.AlwaysOpenInWindow=Завжди відкривати у Новому Вікні
+firebug.OpenWith=Відкрити редактором
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Сайти...
+firebug.Configure_Editors=Налаштувати редактори
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Дослідити
+firebug.InspectElement=Дослідити елемент
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Припинити виконання при помилках
+firebug.InspectTooltip=Оберіть елемент сторінки для досліджень
+firebug.EditHTMLTooltip=Редагувати цей HTML
+firebug.Profile=Профайлер
+firebug.Clear=Почистити
+firebug.ClearConsole=Почистити консоль
+firebug.ClearTooltip=Почистити консоль
+firebug.All=Все
+firebug.Images=Зображення
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Налаштовані редактори Firebug
+editors.Editor=Редактор
+editors.Executable=Може виконуватися
+editors.Launch_Arguments=Аргументи запуску
+editors.Add=Додати
+editors.Remove=Вилучити
+editors.Change=Змінити
+editors.Move_Up=Вгору
+editors.Close=Закрити
+editors.Browse=Переглянути…
+changeEditor.Editor_Configuration=Налаштування редактора
+changeEditor.Name=Назва:
+changeEditor.Executable=Програма:
+changeEditor.CmdLine=Аргументи:
+changeEditor.Supplied_arguments=Аргументи, що підтримуються Firebug-ом:
+changeEditor.URL_of_file=<label class=\'text-link\'>%url</label> URL файла (якщо %url немає, %file буде додано)
+changeEditor.Path_to_local_file=<label class=\'text-link\'>%file</label> Шлях до локального файла (чи тимчасової копії)
+changeEditor.Line_number=<label class=\'text-link\'>%line</label> Номер рядка (якщо доступно)
+changeEditor.Invalid_Application_Path=Направильний шлях до програми
+changeEditor.Application_does_not_exist=Вказана програма не існує!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Редагувати
+firebug.css.sourceEdit=Редагування джерела
+firebug.css.sourceEdit.tooltip=Текстове поле редагування джерела стилю, який було завантажено в браузер
+firebug.css.liveEdit=Живе редагування
+firebug.css.liveEdit.tooltip=Текстове поле редагування CSS взятого з браузера
+firebug.EditCSSTooltip=Редагувати ці стилі
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Сайти не запам’ятовуються в Режимі Приватного Перегляду
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Показувати сповіщення переривань
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=Ви можете увімкнути/вимкнути сповіщення переривань в <a>меню панелі</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Кнопка \"Вимкнути\" перевизначає \'відлагоджувач\' з вимкненою точкою переривань.
+firebug.bon.tooltip.disableDebuggerKeyword2=Створює вимкнену точку переривань
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=Немає дочірніх об’єктів
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=більше
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S елемент у Сховищі;%1$S елементів у Сховищі
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Властівості об’єкта
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(Без поповнення)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=URL об’єкту було відкликано через метод revokeObjectURL.
+firebug.failedToPreviewImageURL=Не вдалося завантажити вказаний URL.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/vi/cookies.properties b/locale/vi/cookies.properties
index 66695d4..ec60718 100644
--- a/locale/vi/cookies.properties
+++ b/locale/vi/cookies.properties
@@ -1,272 +1,272 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=Allows inspecting and manipulating the cookies
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=Session
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=Accept Cookies From Sites
-cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=Show Cookie Events
-cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=Clear cookies when denying
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=Cut
-cookies.Copy=Copy
-cookies.CopyAll=Copy All
-cookies.Paste=Paste
-cookies.Delete=Delete
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=Clear Value
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=Edit
-cookies.Accept=Accept
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=Reset Header
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
-cookies.ExceptionsTitle=Exceptions - Cookies
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=Support for Cookie Monitoring
-cookies.HostEnable=Enable Cookies panel for %S
-cookies.HostDisable=Disable Cookies panel for %S
-cookies.Permissions=Enable or Disable Cookies panel
-cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=System Pages
-cookies.LocalFiles=Local Files
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=Do you want to remove all cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-cookies.msg.Do_not_show_this_message_again=Do not show this message again
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=Confirm Cookie Removal
-cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=Remove all cookies in the list.
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=Remove Session Cookies
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=Remove all session cookies in the list.
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=Create a new cookie for %S
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=Value
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=Manage cookie permissions for %S
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=All cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=All session cookies have been removed.
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=Cookies rejected:
-cookies.console.nocookiesreceived=No cookies received
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=deleted
-cookies.console.added=added
-cookies.console.changed=changed
-cookies.console.cleared=cleared
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=Domain
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=Secure
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=Value
-cookies.info.rawdatatab.Raw_Data=Raw Data
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=Default (Accept session cookies)
-cookies.default.thirdPartySession=Default (Accept session cookies)
-cookies.default.thirdParty=Default (Accept cookies)
-cookies.default.allow=Default (Accept cookies)
-cookies.default.deny=Default (Deny cookies)
-cookies.default.warn=Default (Warn before accepting cookie)
-cookies.host.session=Accept session cookies from %S
-cookies.host.accept=Accept cookies from %S
-cookies.host.reject=Deny cookies from %S
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie name is not valid.
-cookies.edit.invalidhost=Cookie host is not valid.
-cookies.edit.invalidpath=Cookie path is not valid.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-cookies.header.name=Name
-cookies.header.value=Value
-cookies.header.rawValue=Raw Value
-cookies.header.domain=Domain
-cookies.header.size=Size
-cookies.header.path=Path
-cookies.header.expires=Expires
-cookies.header.security=Security
-cookies.header.httponly=HttpOnly
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Name of the cookie
-cookies.header.value.tooltip=Value stored for the cookie
-cookies.header.rawValue.tooltip=Raw value stored for the cookie
-cookies.header.domain.tooltip=Domain that has stored the cookie
-cookies.header.size.tooltip=Size of the stored cookie
-cookies.header.path.tooltip=Directory where the cookie is active
-cookies.header.expires.tooltip=Expiration date for the cookie
-cookies.header.security.tooltip=Shows whether it is a secure cookie or not
-cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=Received Cookies
-cookies.netinfo.Sent_Cookies=Sent Cookies
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=Path Filter
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=Export All Cookies
-cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
-cookies.export.Export_For_Site=Export Cookies For This Site
-cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=There is no active page.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=Break On Cookie Change
-cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie Breakpoints
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=Break On '%S' cookie
-cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=Remove Cookies
-cookies.Create=Create Cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=Tools
-cookies.ToolsTooltip=Tools
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=Show All Cookies
-cookies.ViewAllTooltip=Open the built-in Cookie Manager
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=Web Sites Permissions
-cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=Filter
-cookies.FilterTooltip=Use given options to filter the cookie list.
-cookies.filter.byPath=Filter Cookies By Current Path
-cookies.filter.byPathTooltip=Show only cookies that match the current path.
-cookies.filter.showRejectedCookies=Show Rejected Cookies
-cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=Edit Cookie
-cookies.edit.name.label=Name:
-cookies.edit.domain.label=Host:
-cookies.edit.path.label=Path:
-cookies.edit.expire.label=Expires:
-cookies.edit.value.label=Value:
-cookies.edit.secure.label=Secure Cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=URL encode value
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=Filter By Cookies
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=Remove All Cookies
-cookie.sizeinfo.Size=Size
-cookie.sizeinfo.Raw_Size=Raw Size
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=Allows inspecting and manipulating the cookies
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=Session
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=Accept Cookies From Sites
+cookies.tip.AllowGlobally=Accept all cookies by default or block all cookies by default
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=Show Cookie Events
+cookies.tip.showCookieEvents=Log cookie events (changed, deleted) into the console
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=Clear cookies when denying
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=Cut
+cookies.Copy=Copy
+cookies.CopyAll=Copy All
+cookies.Paste=Paste
+cookies.Delete=Delete
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=Clear Value
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=Edit
+cookies.Accept=Accept
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=Reset Header
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=You can specify which web sites are always or never allowed to use cookies.\nType the exact address of the site you want to manage and then click Block,\nAllow for Session, or Allow.
+cookies.ExceptionsTitle=Exceptions - Cookies
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=Support for Cookie Monitoring
+cookies.HostEnable=Enable Cookies panel for %S
+cookies.HostDisable=Disable Cookies panel for %S
+cookies.Permissions=Enable or Disable Cookies panel
+cookies.PermissionsIntro=Choose web sites where Cookies panel will be enabled or disabled.
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=System Pages
+cookies.LocalFiles=Local Files
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=Do you want to remove all cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=Do you want to remove all session cookies in the list?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=Do you want to remove all cookies from %S?
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+cookies.msg.Do_not_show_this_message_again=Do not show this message again
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=Confirm Cookie Removal
+cookies.tip.Confirm_cookie_removal=If checked, there is a confirmation dialog displayed before deleting all cookies in the list.
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=Remove all cookies in the list.
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=Remove Session Cookies
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=Remove all session cookies in the list.
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=Create a new cookie for %S
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=Value
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=Manage cookie permissions for %S
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=All cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=All session cookies have been removed.
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=Cookies rejected:
+cookies.console.nocookiesreceived=No cookies received
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=deleted
+cookies.console.added=added
+cookies.console.changed=changed
+cookies.console.cleared=cleared
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=Domain
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=Secure
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=Value
+cookies.info.rawdatatab.Raw_Data=Raw Data
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=Default (Accept session cookies)
+cookies.default.thirdPartySession=Default (Accept session cookies)
+cookies.default.thirdParty=Default (Accept cookies)
+cookies.default.allow=Default (Accept cookies)
+cookies.default.deny=Default (Deny cookies)
+cookies.default.warn=Default (Warn before accepting cookie)
+cookies.host.session=Accept session cookies from %S
+cookies.host.accept=Accept cookies from %S
+cookies.host.reject=Deny cookies from %S
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie name is not valid.
+cookies.edit.invalidhost=Cookie host is not valid.
+cookies.edit.invalidpath=Cookie path is not valid.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+cookies.header.name=Name
+cookies.header.value=Value
+cookies.header.rawValue=Raw Value
+cookies.header.domain=Domain
+cookies.header.size=Size
+cookies.header.path=Path
+cookies.header.expires=Expires
+cookies.header.security=Security
+cookies.header.httponly=HttpOnly
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Name of the cookie
+cookies.header.value.tooltip=Value stored for the cookie
+cookies.header.rawValue.tooltip=Raw value stored for the cookie
+cookies.header.domain.tooltip=Domain that has stored the cookie
+cookies.header.size.tooltip=Size of the stored cookie
+cookies.header.path.tooltip=Directory where the cookie is active
+cookies.header.expires.tooltip=Expiration date for the cookie
+cookies.header.security.tooltip=Shows whether it is a secure cookie or not
+cookies.header.httponly.tooltip=Shows if the cookie is an HTTP only cookie
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=Received Cookies
+cookies.netinfo.Sent_Cookies=Sent Cookies
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=Path Filter
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=Export All Cookies
+cookies.export.Export_All_Cookies_Tooltip=Export all browser cookies to cookies.txt file
+cookies.export.Export_For_Site=Export Cookies For This Site
+cookies.export.Export_For_Site_Tooltip=Export cookies for %S into cookies.txt file
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=There is no active page.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=Break On Cookie Change
+cookies.Disable_Break_On_Cookie=Disable Break On Cookie Change
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie Breakpoints
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=Break On '%S' cookie
+cookies.menu.tooltip.Break_On_Cookie=Break on '%S' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=Edit Breakpoint Condition
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=Breakpoint condition evaluation fails
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=Remove Cookies
+cookies.Create=Create Cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=Tools
+cookies.ToolsTooltip=Tools
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=Show All Cookies
+cookies.ViewAllTooltip=Open the built-in Cookie Manager
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=Web Sites Permissions
+cookies.ViewExceptionsTooltip=View list of allowed or prohibited web sites
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=Filter
+cookies.FilterTooltip=Use given options to filter the cookie list.
+cookies.filter.byPath=Filter Cookies By Current Path
+cookies.filter.byPathTooltip=Show only cookies that match the current path.
+cookies.filter.showRejectedCookies=Show Rejected Cookies
+cookies.filter.showRejectedCookiesTooltip=Display even rejected cookies in the list.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=Edit Cookie
+cookies.edit.name.label=Name:
+cookies.edit.domain.label=Host:
+cookies.edit.path.label=Path:
+cookies.edit.expire.label=Expires:
+cookies.edit.value.label=Value:
+cookies.edit.secure.label=Secure Cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=URL encode value
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=Filter By Cookies
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=Remove All Cookies
+cookie.sizeinfo.Size=Size
+cookie.sizeinfo.Raw_Size=Raw Size
diff --git a/locale/vi/firebug-amo.properties b/locale/vi/firebug-amo.properties
index 310ddaf..f692a2a 100644
--- a/locale/vi/firebug-amo.properties
+++ b/locale/vi/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
-firebug.amo.description=Firebug tích hợp vào Firefox vô số công cụ phát triển ngay trước đầu ngón tay của bạn. Bạn có thể chỉnh sửa, gỡ lỗi, và theo dõi CSS, HTML và JavaScript trực tiếp trên bất kì trang web nào.\\n\\nVào trang web Firebug để xem tài liệu, ảnh chụp màn hình, và diễn đàn thảo luận: http://getfirebug.com
-firebug.amo.developer.comments=Nếu bạn gặp vấn đề gì, vui lòng đọc Firebug FAQ trước.\\n\\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page...\n\nFirebug 1.6 requires Firefox 3.6 or higher.
+firebug.amo.description=Firebug tích hợp vào Firefox vô số công cụ phát triển ngay trước đầu ngón tay của bạn. Bạn có thể chỉnh sửa, gỡ lỗi, và theo dõi CSS, HTML và JavaScript trực tiếp trên bất kì trang web nào.\\n\\nVào trang web Firebug để xem tài liệu, ảnh chụp màn hình, và diễn đàn thảo luận: http://getfirebug.com
+firebug.amo.developer.comments=Nếu bạn gặp vấn đề gì, vui lòng đọc Firebug FAQ trước.\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/vi/firebug-tracing.properties b/locale/vi/firebug-tracing.properties
index fc0d728..e42eb8c 100644
--- a/locale/vi/firebug-tracing.properties
+++ b/locale/vi/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=Mở trình truy dấu Firebug
-Always_Open_Firebug_Tracing=Luôn mở trình truy dấu Firebug
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=Truy dấu
-tracing.Show_Scope_Variables=Hiện biến phạm vi
-tracing.Show_Time=Hiện thời gian
-tracing.tab.Stack=Stack
-tracing.tab.Exception=Ngoại lệ
-tracing.tab.Properties=Thuộc tính
-tracing.tab.Scope=Phạm vi
-tracing.tab.Response=Phản hồi
-tracing.tab.Source=Nguồn
-tracing.tab.Interfaces=Giao diện
-tracing.tab.Object=Đối tượng
-tracing.tab.Event=Sự kiện
-tracing.cmd.Clear=Xóa trắng
-tracing.cmd.tip.Clear=Xóa tất cả thông điệp
-tracing.cmd.Find=Tìm
-tracing.cmd.tip.Find=Tìm văn bản
-tracing.cmd.Bookmark=Đánh dấu
-tracing.cmd.tip.Bookmark=Chèn đánh dấu
-tracing.cmd.Restart=Khởi động lại Firefox
-tracing.cmd.tip.Restart=Khởi động lại Firefox
-tracing.cmd.Exit=Thoát Firefox
-tracing.cmd.tip.Exit=Thoát Firefox
-tracing.cmd.Save=Lưu vào Tập tin
-tracing.cmd.tip.Save=Lưu log vào một tập tin
-tracing.cmd.Load=Load from File
-tracing.cmd.tip.Load=Load logs from a file
-tracing.cmd.Expand_All=Mở rộng Tất cả
-tracing.cmd.Collapse_All=Thu gọn Tất cả
-tracing.cmd.Tools=Tools
-tracing.cmd.tip.Tools=Tools
-tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
-tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
-tracing.cmd.Open_Profile_Directory=Open Profile Directory
-tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
-tracing.option.A11Y_Description=Accessibility issues
-tracing.option.ACTIVATION_Description=Firebug activation
-tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
-tracing.option.ANNOTATIONS_Description=Firebug website annotation
-tracing.option.BP_Description=Breakpoints
-tracing.option.CACHE_Description=Source cache
-tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
-tracing.option.COMPILATION_UNITS_Description=Script compilation units
-tracing.option.CONSOLE_Description=Console Panel
-tracing.option.CSS_Description=CSS parsing
-tracing.option.DISPATCH_Description=Event dispatching
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate creation
-tracing.option.EDITOR_Description=Inline Editor & Autocompleter
-tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
-tracing.option.ERRORS_Description=Internal Firebug errors
-tracing.option.EVAL_Description=Script evaluation
-tracing.option.FBS_BP_Description=Firebug service breakpoints
-tracing.option.FBS_CREATION_Description=Firebug service script creation
-tracing.option.FBS_ERRORS_Description=Firebug service errors
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
-tracing.option.FBS_FUNCTION_Description=Firebug service function
-tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
-tracing.option.FBS_SRCUNITS_Description=Firebug service source units
-tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
-tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
-tracing.option.FUNCTION_NAMES_Description=JavaScript function names
-tracing.option.HISTORY_Description=Firebug Navigation History
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP request observer
-tracing.option.INFOTIP_Description=Infotip
-tracing.option.INITIALIZE_Description=Firebug initialization
-tracing.option.INSPECT_Description=Inspector
-tracing.option.JSONVIEWER_Description=JSON viewer
-tracing.option.LINETABLE_Description=Script line table
-tracing.option.LOCALE_Description=Localization
-tracing.option.LOCATIONS_Description=Source locations
-tracing.option.NET_Description=Net Panel
-tracing.option.NET_EVENTS_Description=Network events
-tracing.option.OPTIONS_Description=Firebug preferences
-tracing.option.PANELS_Description=Panels
-tracing.option.SHORTCUTS_Description=Keyboard shortcuts
-tracing.option.SOURCEFILES_Description=JavaScript source files
-tracing.option.SPY_Description=XMLHttpRequests observer
-tracing.option.STACK_Description=JavaScript call stack
-tracing.option.STORAGE_Description=Settings storage
-tracing.option.SVGVIEWER_Description=SVG viewer
-tracing.option.FONTS_Description=Fonts information and font viewer
-tracing.option.TOOLTIP_Description=Start Button tooltip
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript debugging user interface
-tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
-tracing.option.XMLVIEWER_Description=XML viewer
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=Mở trình truy dấu Firebug
+Always_Open_Firebug_Tracing=Luôn mở trình truy dấu Firebug
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=Truy dấu
+tracing.Show_Scope_Variables=Hiện biến phạm vi
+tracing.Show_Time=Hiện thời gian
+tracing.tab.Stack=Stack
+tracing.tab.Exception=Ngoại lệ
+tracing.tab.Properties=Thuộc tính
+tracing.tab.Scope=Phạm vi
+tracing.tab.Response=Phản hồi
+tracing.tab.Source=Nguồn
+tracing.tab.Interfaces=Giao diện
+tracing.tab.Object=Đối tượng
+tracing.tab.Event=Sự kiện
+tracing.cmd.Clear=Xóa trắng
+tracing.cmd.tip.Clear=Xóa tất cả thông điệp
+tracing.cmd.Find=Tìm
+tracing.cmd.tip.Find=Tìm văn bản
+tracing.cmd.Bookmark=Đánh dấu
+tracing.cmd.tip.Bookmark=Chèn đánh dấu
+tracing.cmd.Restart=Khởi động lại Firefox
+tracing.cmd.tip.Restart=Khởi động lại Firefox
+tracing.cmd.Exit=Thoát Firefox
+tracing.cmd.tip.Exit=Thoát Firefox
+tracing.cmd.Save=Lưu vào Tập tin
+tracing.cmd.tip.Save=Lưu log vào một tập tin
+tracing.cmd.Load=Load from File
+tracing.cmd.tip.Load=Load logs from a file
+tracing.cmd.Expand_All=Mở rộng Tất cả
+tracing.cmd.Collapse_All=Thu gọn Tất cả
+tracing.cmd.Tools=Tools
+tracing.cmd.tip.Tools=Tools
+tracing.cmd.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.tip.Clear_Browser_Cache=Clear Browser Cache
+tracing.cmd.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.tip.Force_Garbage_Collector=Force Garbage Collector
+tracing.cmd.Open_Profile_Directory=Open Profile Directory
+tracing.cmd.tip.Open_Profile_Directory=Open Profile Directory
+tracing.option.A11Y_Description=Accessibility issues
+tracing.option.ACTIVATION_Description=Firebug activation
+tracing.option.ACTIVITYOBSERVER_Description=Firebug activity observer
+tracing.option.ANNOTATIONS_Description=Firebug website annotation
+tracing.option.BP_Description=Breakpoints
+tracing.option.CACHE_Description=Source cache
+tracing.option.COMMANDLINE_Description=Command Line & Command Line Popup
+tracing.option.COMPILATION_UNITS_Description=Script compilation units
+tracing.option.CONSOLE_Description=Console Panel
+tracing.option.CSS_Description=CSS parsing
+tracing.option.DISPATCH_Description=Event dispatching
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate creation
+tracing.option.EDITOR_Description=Inline Editor & Autocompleter
+tracing.option.ERRORLOG_Description=Error log of JS, CSS, XML etc.
+tracing.option.ERRORS_Description=Internal Firebug errors
+tracing.option.EVAL_Description=Script evaluation
+tracing.option.FBS_BP_Description=Firebug service breakpoints
+tracing.option.FBS_CREATION_Description=Firebug service script creation
+tracing.option.FBS_ERRORS_Description=Firebug service errors
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug service find debugger
+tracing.option.FBS_FUNCTION_Description=Firebug service function
+tracing.option.FBS_JSDCONTEXT_Description=Firebug service JavaScript Debugger context
+tracing.option.FBS_SRCUNITS_Description=Firebug service source units
+tracing.option.FBS_STEP_Description=Firebug service JavaScript Debugger stepping
+tracing.option.FBS_TRACKFILES_Description=Firebug service tracked files
+tracing.option.FUNCTION_NAMES_Description=JavaScript function names
+tracing.option.HISTORY_Description=Firebug Navigation History
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP request observer
+tracing.option.INFOTIP_Description=Infotip
+tracing.option.INITIALIZE_Description=Firebug initialization
+tracing.option.INSPECT_Description=Inspector
+tracing.option.JSONVIEWER_Description=JSON viewer
+tracing.option.LINETABLE_Description=Script line table
+tracing.option.LOCALE_Description=Localization
+tracing.option.LOCATIONS_Description=Source locations
+tracing.option.NET_Description=Net Panel
+tracing.option.NET_EVENTS_Description=Network events
+tracing.option.OPTIONS_Description=Firebug preferences
+tracing.option.PANELS_Description=Panels
+tracing.option.SHORTCUTS_Description=Keyboard shortcuts
+tracing.option.SOURCEFILES_Description=JavaScript source files
+tracing.option.SPY_Description=XMLHttpRequests observer
+tracing.option.STACK_Description=JavaScript call stack
+tracing.option.STORAGE_Description=Settings storage
+tracing.option.SVGVIEWER_Description=SVG viewer
+tracing.option.FONTS_Description=Fonts information and font viewer
+tracing.option.TOOLTIP_Description=Start Button tooltip
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript debugging user interface
+tracing.option.WINDOWS_Description=Firebug windows & Tab Watcher
+tracing.option.XMLVIEWER_Description=XML viewer
diff --git a/locale/vi/firebug.properties b/locale/vi/firebug.properties
index a503e5e..fa696db 100644
--- a/locale/vi/firebug.properties
+++ b/locale/vi/firebug.properties
@@ -1,1506 +1,1506 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=Bảng kiểm soát
-panel.tip.console=Allows observing console messages and executing JavaScript commands
-Panel-net=Net
-panel.tip.net=Allows analyzing the network traffic
-Panel-html=HTML
-panel.tip.html=Allows inspecting and manipulating the DOM nodes
-Panel-stylesheet=CSS
-panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
-Panel-script=Script
-panel.tip.script=Allows debugging of JavaScript
-Panel-dom=DOM
-panel.tip.dom=Allows inspecting and manipulating the DOM properties
-Panel-css=Style
-panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
-Panel-computed=Computed
-panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
-Panel-layout=Bố cục
-panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
-Panel-domSide=DOM
-panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
-Panel-watches=Theo dõi
-panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
-Panel-breakpoints=Điểm ngắt
-panel.tip.breakpoints=Allows manipulating the set breakpoints
-Panel-callstack=Stack
-panel.tip.callstack=Allows observing the current JavaScript call stack
-Panel-scopes=Scope
-firebug.DetachFirebug=Mở Firebug trong Cửa Sổ Mới
-firebug.AttachFirebug=Attach Firebug to Browser Window
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=1
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=Deactivated
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=Trong trình duyệt
-minimized=Thu nhỏ
-enablement.for_all_pages=cho tất cả các trang
-enablement.on=Bật
-enablement.off=Tắt
-enablement.Panel_activation_status=Panel activation status:
-none=Đóng
-Firebug_-_inactive_for_current_website=Firebug - inactive for current website
-Activate_Firebug_for_the_current_website=Activate Firebug for the current website
-Minimized=Thu nhỏ
-Minimize_Firebug=Thu nhỏ Firebug
-On_for_all_web_pages=Bật cho Tất cả Trang web
-firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
-firebug.menu.Clear_Activation_List=Xóa trắng Danh sách Kích hoạt
-firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
-firebug.menu.Detached=Detached
-firebug.menu.tip.Detached=Detach Firebug into its own window
-firebug.menu.Top=Top
-firebug.menu.tip.Top=Align Firebug to the top of the user agent window
-firebug.menu.Bottom=Bottom
-firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
-firebug.menu.Left=Left
-firebug.menu.tip.Left=Align Firebug to the left of the user agent window
-firebug.menu.Right=Right
-firebug.menu.tip.Right=Align Firebug to the right of the user agent window
-firebug.uiLocation=Firebug UI Location
-firebug.menu.tip.UI_Location=Position of the Firebug user interface
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Tùy chọn Firebug
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=Show All Panels
-console.option.Show_Command_Line=Show Command Line
-console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=Hiện lỗi JavaScript
-console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
-ShowJavaScriptWarnings=Hiện cảnh báo JavaScript
-console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
-ShowCSSErrors=Hiện lỗi CSS
-console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
-ShowXMLHTMLErrors=Show XML/HTML Errors
-console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
-ShowStackTrace=Hiện truy dấu Stack kèm lỗi
-console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
-ShowXMLHttpRequests=Hiện XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
-ShowChromeErrors=Hiện lỗi Chrome
-console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
-ShowChromeMessages=Hiện thông điệp Chrome
-console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
-ShowExternalErrors=Hiện lỗi ngoại trú
-console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
-ShowNetworkErrors=Hiện lỗi Mạng
-console.option.tip.Show_Network_Errors=Log network error messages into the console
-JavascriptOptionsStrict=Cảnh báo Nghiêm trọng (nguy hiểm tới hiệu năng)
-console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
-Command_History=Command History
-console.option.Show_Command_Editor=Show Command Editor
-console.option.tip.Show_Command_Editor=Switch to the Command Editor
-commandLineShowCompleterPopup=Show Completion List Popup
-console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
-Assertion=Thất bại khi Xác nhận
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (dòng %S)
-LineAndCol=%S (line %S, col %S)
-InstanceLine=%S #%S (dòng %S)
-StackItem=%S (%S dòng %S)
-SystemItem=<Hệ thống>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=Inspect in %S Panel
-panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
-NoName=(không tên)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=Hiện văn bản đầy đủ
-html.option.tip.Show_Full_Text=Don't crop element contents
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=Hiện khoảng trắng
-html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=Hiện bình luận
-html.option.tip.Show_Comments=Show comment nodes
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=Show Entities As Symbols
-html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
-html.option.Show_Entities_As_Names=Show Entities As Names
-html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
-html.option.Show_Entities_As_Unicode=Show Entities As Unicode
-html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=Tô sáng Thay đổi
-html.option.tip.Highlight_Mutations=Highlight changes inside nodes
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=Mở rộng Thay đổi
-html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=Cuộn các Thay đổi vào phần Hiển thị
-html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=Hiện hộp Thông tin Nhanh
-inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=Kiểu mẫu Hộp Mờ
-inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
-ScrollIntoView=Cuộn vào phần Hiển thị
-html.tip.Scroll_Into_View=Scroll the page to make the element visible
-NewAttribute=Thuộc tính Mới...
-html.tip.New_Attribute=Add a new attribute to this element
-html.Edit_Node=Edit %S...
-html.Node=Node
-html.tip.Edit_Node=Edit the %S using the full text editor
-DeleteElement=Xóa phần tử
-html.Delete_Element=Delete the element from the tree
-DeleteNode=Xóa điểm nút
-html.Delete_Node=Delete the node from the tree
-# Quick Info Box
-quickInfo=Thông tin Nhanh
-computedStyle=Computed Style
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=Ngắt khi Biến đổi
-html.Disable_Break_On_Mutate=Vô hiệu hóa việc Ngắt khi Biến đổi
-html.label.Break_On_Text_Change=Ngắt khi Thay đổi Văn bản
-html.label.HTML_Breakpoints=Điểm ngắt HTML
-html.label.Break_On_Attribute_Change=Ngắt khi Thay đổi Thuộc tính
-html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
-html.label.Break_On_Child_Addition_or_Removal=Ngắt khi Thêm hoặc Xóa Child
-html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
-html.label.Break_On_Element_Removal=Ngắt khi Xóa Phần tử
-html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=Expand/Contract All
-html.tip.Expand/Contract_All=Expand/collapse all the children recursively
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=Break On Property Change
-dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=Disable Break On Property Change
-dom.label.DOM_Breakpoints=Điểm ngắt DOM
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=Chỉnh sửa thuộc tính \"%S\"...
-html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=Xóa thuộc tính \"%S\"
-html.tip.Delete_Attribute=Delete the attribute "%S" from this element
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=Thừa hưởng từ
-SothinkWarning=Phần mở rộng Sothink SWF Catcher làm cho Firebug không hoạt động đúng.<br><br>Vui lòng đọc <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">mục này trên FAQ của Firebug</a> để được trợ giúp.
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
-EditStyle=Chỉnh sửa Style của Phần tử...
-style.tip.Edit_Style=Edit the element's inline style
-AddRule=Add Rule...
-css.tip.AddRule=Add a general rule for this element
-NewRule=Quy tắc Mới...
-css.tip.New_Rule=Add a new rule
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=Delete "%S"
-css.tip.Delete_Rule=Delete the rule "%S" and all its properties
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=Edit Media Query...
-css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
-NewProp=Thuộc tính Mới...
-css.tip.New_Prop=Add a new property to the current rule
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=Chỉnh sửa \"%S\"...
-css.tip.Edit_Prop=Edit the value of the property "%S"
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=Vô hiệu \"%S\"
-css.tip.Disable_Prop=Disable the property "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=Xóa \"%S\"
-css.tip.Delete_Prop=Delete the property "%S"
-# Console context menu labels.
-BreakOnThisError=Ngắt khi gặp Lỗi này
-console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
-BreakOnAllErrors=Ngắt khi gặp Tất cả Các lỗi
-console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=Theo dõi Ném/Bắt
-script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
-UseLastLineForEvalName=Sử dụng Dòng Mã Nguồn Cuối cho các tên eval()
-UseMD5ForEvalName=Sử dụng MD5 cho các tên eval()
-# Breakpoints side panel
-Breakpoints=Điểm ngắt
-ErrorBreakpoints=Điểm ngắt lỗi
-LoggedFunctions=Chức năng đã được log
-EnableAllBreakpoints=Kích hoạt Tất cả Điểm ngắt
-breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
-DisableAllBreakpoints=Vô hiệu Tất cả Điểm ngắt
-breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
-ClearAllBreakpoints=Xóa Tất cả Điểm ngắt
-breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
-ConditionInput=Điểm ngắt này chỉ dừng khi biểu thức đúng:
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=Remove Breakpoint
-breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
-breakpoints.Disable_Breakpoint=Disable Breakpoint
-breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
-breakpoints.Enable_Breakpoint=Enable Breakpoint
-breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=Continue
-script.balloon.Disable=Disable
-ScriptsFilterStatic=Hiện Script tĩnh
-ScriptsFilterEval=Hiện Script eval và tĩnh
-ScriptsFilterEvent=Hiện Script sự kiện và tĩnh
-ScriptsFilterAll=Hiện Script sự kiện, eval và tĩnh
-ScriptsFilterStaticShort=tĩnh
-ScriptsFilterEvalShort=eval
-ScriptsFilterEventShort=sự kiện
-ScriptsFilterAllShort=tất cả
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=Expand All
-callstack.tip.Expand_All=Expand all stack frame functions
-callstack.Collapse_All=Collapse All
-callstack.tip.Collapse_All=Collapse all stack frame functions
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=Hiện các Thuộc tính Người dùng Định nghĩa
-dom.option.tip.Show_User_Props=Show user-defined object properties
-ShowUserFuncs=Hiện các Chức năng Người dùng Định nghĩa
-dom.option.tip.Show_User_Funcs=Show user-defined object methods
-ShowDOMProps=Hiện các Thuộc tính DOM
-dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
-ShowDOMFuncs=Hiện các Chức năng DOM
-dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
-ShowDOMConstants=Hiện các Hằng số DOM
-dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
-ShowInlineEventHandlers=Show Inline Event Handlers
-ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
-ShowOwnProperties=Show Own Properties Only
-ShowOwnPropertiesTooltip=Don't show prototype chain
-ShowEnumerableProperties=Show Enumerable Properties Only
-ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
-NoMembersWarning=Không có thuộc tính nào cho đối tượng này.
-NewWatch=Biểu thức theo dõi mới...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=Thêm theo dõi
-watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=Chép nguồn
-script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
-Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
-CopyValue=Chép giá trị
-dom.tip.Copy_Value=Copy the property's value to the clipboard
-Copy_Name=Chép tên
-dom.tip.Copy_Name=Copy the property's name to the clipboard
-Copy_Path=Chép đường dẫn
-dom.tip.Copy_Path=Copy the property path
-NewProperty=Thuộc tính Mới...
-EditProperty=Chỉnh sửa Thuộc tính...
-dom.tip.Edit_Property=Edit the property's value
-EditVariable=Chỉnh sửa Giá trị...
-stack.tip.Edit_Variable=Edit the variable's value
-EditWatch=Chỉnh sửa Theo dõi...
-watch.tip.Edit_Watch=Edit the watch expression's value
-DeleteProperty=Xóa thuộc tính
-dom.tip.Delete_Property=Delete the property
-DeleteWatch=Xóa theo dõi
-DeleteAllWatches=Delete All Watches
-watch.tip.Delete_Watch=Delete the watch expression
-watch.tip.Delete_All_Watches=Delete all the watch expressions
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=Thiết lập Điểm ngắt
-script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=Chỉnh sửa Điều kiện Điểm ngắt...
-breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
-NoBreakpointsWarning=Không có điểm ngắt nào được thiết lập trong trang này.
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=Only Show Applied Styles
-style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=Hiện CSS User Agent
-style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=Colors As Hex
-computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
-computed.option.label.Colors_As_RGB=Colors As RGB
-computed.option.tip.Colors_As_RGB=Show colors in RGB format
-computed.option.label.Colors_As_HSL=Colors As HSL
-computed.option.tip.Colors_As_HSL=Show colors in HSL format
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=Display :active pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=Display :hover pseudo-class styles
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=Display :focus pseudo-class styles
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=Inspect Declaration
-css.tip.Inspect_Declaration= Inspect the declaration of this font
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=Expand Shorthand Properties
-css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=Sort Alphabetically
-computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=Show Mozilla Specific Styles
-computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=This element has no user-defined style rules.
-script.Type_any_key_to_filter_list=Type any key to filter list
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=khoảng đệm
-LayoutBorder=viền
-LayoutMargin=lề
-LayoutPosition=position
-LayoutAdjacent=kề cận
-position=vị trí
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=Hiện Thước và Hướng dẫn
-layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
-# Net panel
-Loading=Đang tải...
-Headers=Đầu đề
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=Clear the request list
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=Thiết lập lại Đầu đề
-net.header.tip.Reset_Header=Reset the header display
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=Phương thức HTTP được dùng và URL được yêu cầu.
-net.header.Status=Trạng thái
-net.header.Status_Tooltip=Trạng thái của phản hồi đã nhận.
-net.header.Domain=Tên miền
-net.header.Domain_Tooltip=Tên miền của yêu cầu được thực thi.
-net.header.Size=Dung lượng
-net.header.Size_Tooltip=Dung lượng của phản hồi đã nhận.
-net.header.Timeline=Biểu đồ thời gian
-net.header.Timeline_Tooltip=Thông tin thời gian chi tiết của chu kì phản hồi yêu cầu.
-net.header.Local_IP=Local IP
-net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
-net.header.Remote_IP=Remote IP
-net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
-net.header.Protocol=Protocol
-net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=Điểm ngắt XHR
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=Ngắt khi XHR
-net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=xem mã nguồn
-net.headers.pretty_print=in đẹp
-# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
-net.filter.Media=Media
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Đăng
-Put=Đặt
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=Phản hồi
-URLParameters=Tham số
-Cache=Bộ đệm
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=General Info
-fontviewer.Meta_Data=Meta Data
-fontviewer.view_source=view source
-fontviewer.Preview=Preview
-fontviewer.view_characters=view characters
-fontviewer.pretty_print=pretty print
-fontviewer.view_sample=view sample
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=Sort by key
-jsonviewer.do_not_sort=Do not sort
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=Copy "%S" as JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=Đầu đề Yêu cầu
-ResponseHeaders=Đầu đề Phản hồi
-CachedResponseHeaders=Response Headers From Cache
-PostRequestHeaders=Request Headers From Upload Stream
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
-LimitPrefs=Tùy chỉnh
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=Để thay đổi giới hạn, hãy sửa: %S
-Refresh=Làm tươi
-panel.tip.Refresh=Refresh the panel display
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=Mở trong Thẻ Mới
-firebug.tip.Open_In_Tab=Open the URL in a new browser tab
-Open_Response_In_New_Tab=Mở Phản Hồi trong Thẻ Mới
-net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=Hồ sơ
-ProfilerStarted=Hồ sơ đang chạy. Nhấn \'Hồ sơ\' lần nữa để xem báo cáo của nó.
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
-NothingToProfile=Không có hoạt động nào để ghi vào hồ sơ.
-PercentTooltip=Phần trăm thời gian đã bỏ ra cho chức năng này.
-CallsHeaderTooltip=Số lần chức năng này được gọi.
-OwnTimeHeaderTooltip=Thời gian đã bỏ ra cho chức năng này, không bao gồm các lần gọi tổng hợp.
-TimeHeaderTooltip=Thời gian đã bỏ ra cho chức năng này, bao gồm các lần gọi tổng hợp.
-AvgHeaderTooltip=Thời gian trung bình, bao gồm các lần gọi chức năng.
-MinHeaderTooltip=Thời gian tối thiểu, bao gồm các lần gọi chức năng.
-MaxHeaderTooltip=Thời gian tối đa, bao gồm các lần gọi chức năng.
-ProfileButton.Enabled.Tooltip=Lưu hồ sơ thời gian thực thi JavaScript.
-ProfileButton.Disabled.Tooltip=Lưu hồ sơ thời gian thực thi JavaScript (Bảng script phải được bật).
-Function=Chức năng
-Percent=Phần trăm
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=Lần gọi
-OwnTime=Thời gian riêng
-Time=Thời gian
-Avg=T/bình
-Min=T/thiểu
-Max=T/đa
-File=Tập tin
-# Support for standard actions.
-Copy=Chép
-Cut=Cắt
-Remove=Xóa
-Delete=Delete
-Paste=Paste
-SelectAll=Select All
-html.Copy_Node=Copy %S
-html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
-CopyInnerHTML=Chép innerHTML
-html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
-CopyXPath=Chép XPath
-html.tip.Copy_XPath=Copy the element's XPath to the clipboard
-Copy_CSS_Path=Copy CSS Path
-html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=Chép địa chỉ
-clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
-CopyURLParameters=Copy URL Parameters
-net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
-CopyPOSTParameters=Copy POST Parameters
-net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
-CopyLocationParameters=Chép địa chỉ cùng với tham số
-net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
-CopyRequestHeaders=Chép đầu đề yêu cầu
-net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
-CopyResponseHeaders=Chép đầu đề phản hồi
-net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
-CopyResponse=Chép nội dung phản hồi
-net.tip.Copy_Response=Copy the response body to the clipboard
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=Chép lỗi
-console.menu.tip.Copy_Error=Copy the error information to the clipboard
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=Chép chức năng
-dom.tip.Copy_Source=Copy the function's source code to the clipboard
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=Lưu kí Lần gọi tới \"%S\"
-dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=Lưu kí Sự kiện
-html.tip.Show_Events_In_Console=Log event information to the console
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=Đang bật
-panel.tip.Enabled=Toggle the panel activation
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Bảng kiểm soát Firebug không hỗ trợ \'%S\'
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Dòng lệnh Firebug không hỗ trợ \'%S\'
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=Current window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=Vô hiệu việc Ngắt trên Tất cả Các lỗi
-console.Break_On_All_Errors=Ngắt trên Tất cả Các lỗi
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=Break On This Error
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript đang bị tắt trong tùy chỉnh Firefox của bạn. Nếu muốn dùng cửa sổ bảng kiểm soát, vui lòng bật chức năng này trong \'Công cụ\' -> \'Tùy chọn\' -> \'Nội dung\' -> \'Bật JavaScript\'
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=Nội dung Phản hồi
-net.sizeinfo.Post_Body=Nội dung Đăng
-net.sizeinfo.Total_Sent=Tổng cộng Đã gửi
-net.sizeinfo.Total_Received=Tổng cộng Đã nhận
-net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
-net.ActivationMessage=Bảng mạng được kích hoạt. Các yêu cầu diễn ra trong quá trình bảng mạng không hoạt động sẽ không được hiện ra.
-net.responseSizeLimitMessage=Đã đạt tới giới hạn dung lượng phản hồi Firebug. Nhấn <a>vào đây</a> để mở toàn bộ phản hồi trong thẻ Firefox mới.
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Đã đạt tới giới hạn dung lượng nội dung bài đăng. Bị xóa bởi Firebug.
-net.Break_On_XHR=Ngắt trên XHR
-net.label.Parameters=Tham số
-net.label.Parts=Phần
-net.label.Source=Nguồn
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=Resend
-net.tip.Resend=Send the request again
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=Vô hiệu Bộ đệm Trình duyệt
-net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=Show Paint Events
-net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=Show BFCache Responses
-net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=Ngắt trên Tiếp theo
-script.Disable_Break_On_Next=Disable Break On Next
-ShowHttpHeaders=Hiện đầu đề HTTP
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%1$S request;%1$S requests
-FromCache=từ bộ đệm
-StopLoading=Dừng tải
-net.tip.Stop_Loading=Stop loading the request
-LargeData=(Dữ liệu rất lớn)
-ShowComputedStyle=Hiện Style Đã tính toán
-StyleGroup-text=Chữ
-StyleGroup-background=Nền
-StyleGroup-box=Kiểu mẫu Hộp
-StyleGroup-layout=Bố cục
-StyleGroup-other=Khác
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=Chép màu
-css.tip.Copy_Color=Copy the color to the clipboard
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=Chép địa chỉ hình ảnh
-css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
-OpenImageInNewTab=Mở hình ảnh trong Thẻ Mới
-css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
-# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=Bỏ qua Stack Thanh công cụ
-callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
-Load_Original_Source=Load Original Source
-css.tip.Load_Original_Source=Discard the changes and load the original CSS
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=Copy Rule Declaration
-css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=Copy Style Declaration
-css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%1$S Error;%1$S Errors
-moduleManager.title=Bảng %S đang bị tắt
-moduleManager.desc3=Dùng trình đơn ngữ cảnh trên biểu tượng Firebug ở thanh trạng thái để bật và tắt tất cả các bảng. Dùng trình đơn nhỏ của thẻ bảng cho từng bộ điều khiển bảng riêng:
-moduleManager.Enable=Enable
-Suspend_Firebug=Hoãn Firebug
-Resume_Firebug=Tiếp tục Firebug
-Reset_Panels_To_Disabled=Thiết lập lại Bảng về trạng thái Vô hiệu
-Open_Console=Mở bảng kiểm soát
-Open_Console_Tooltip=Mở Bảng kiểm soát Truy dấu cho Firebug.
-Scope_Chain=Mắt xích Scope
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=Với
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=Lần gọi
-# Window: the scope inside of a Javascript window object.
-Window_Scope=Cửa sổ
-Logs=Lưu kí
-Options=Tùy chọn
-Copy_Stack=Chép Stack
-Copy Exception=Chép ngoại lệ
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=Đang chặn
-requestinfo.Resolving=Tra cứu DNS
-requestinfo.Connecting=Kết nối
-requestinfo.Sending=Đang gửi
-requestinfo.Waiting=Đang đợi
-requestinfo.Receiving=Đang nhận
-requestinfo.ContentLoad=\'DOMContentLoaded\' (sự kiện)
-requestinfo.WindowLoad=\'nạp\' (sự kiện)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=Request start time since the beginning
-requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
-requestinfo.timings.label=Event timing relative to the request start:
-search.Firebug_Search=Tìm kiếm Firebug
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=Tiếp
-search.tip.Next=Search for the next match
-search.Previous=Trước
-search.tip.Previous=Search for the previous match
-search.Case_Sensitive=Bắt buộc Phân biệt HOA-thường
-search.tip.Case_Sensitive=Consider the case when searching
-search.Case_Insensitive=Case Insensitive
-search.tip.Case_Insensitive=Ignore the case when searching
-search.Multiple_Files=Nhiều tập tin
-search.tip.Multiple_Files=Search inside all files related to this panel
-search.Use_Regular_Expression=Use Regular Expression
-search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS Selector
-search.net.Headers=Đầu đề
-search.net.Parameters=Tham số
-search.net.Response_Bodies=Nội dung Phản hồi
-search.net.tip.Response_Bodies=Search also in response bodies
-firebug.console.Persist=Đeo bám
-firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
-firebug.console.Show_All_Log_Entries=Show all log entries
-firebug.console.Errors=Errors
-firebug.console.Filter_by_Errors=Filter by errors
-firebug.console.Warnings=Warnings
-firebug.console.Filter_by_Warnings=Filter by warnings
-firebug.console.Info=Info
-firebug.console.Filter_by_Info=Filter by info
-firebug.console.Debug_Info=Debug Info
-firebug.console.Filter_by_Debug_Info=Filter by debug info
-firebug.Deactivate_Firebug=Deactivate Firebug
-firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
-firebug.ShowFirebug=Mở Firebug
-firebug.menu.tip.Open_Firebug=Show the Firebug UI
-firebug.HideFirebug=Hide Firebug
-firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
-firebug.FocusFirebug=Focus Firebug Window
-firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
-firebug.menu.Enable_All_Panels=Bật Tất cả Các bảng
-firebug.menu.tip.Enable_All_Panels=Enable all activable panels
-firebug.menu.Disable_All_Panels=Vô hiệu Tất cả Các bảng
-firebug.menu.tip.Disable_All_Panels=Disable all activable panels
-firebug.menu.Customize_shortcuts=Tùy biến Phím tắt
-firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
-firebug.Options=Tùy chọn
-firebug.menu.tip.Options=Global Firebug preferences
-firebug.menu.Enable_Accessibility_Enhancements=Bật Cải tiến Truy cập
-firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
-firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
-firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
-firebug.menu.Reset_All_Firebug_Options=Thiết lập lại Tất cả Tùy chọn Firebug
-firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
-firebug.menu.Firebug_Online=Firebug Trực tuyến
-firebug.menu.tip.Firebug_Online=Websites related to Firebug
-firebug.menu.Extensions=Firebug Extensions...
-firebug.menu.tip.Extensions=Download and Install Firebug Extensions
-firebug.menu.Vertical_Panels=Vertical Panels
-firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
-firebug.menu.Show_Info_Tips=Show Info Tips
-firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
-firebug.Show_Error_Count=Show Error Count
-firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
-firebug.TextSize=Cỡ chữ
-firebug.menu.tip.Text_Size=Change the text size used in Firebug
-firebug.IncreaseTextSize=Tăng cỡ chữ
-firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
-firebug.DecreaseTextSize=Giảm cỡ chữ
-firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
-firebug.NormalTextSize=Cỡ chữ thông thường
-firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
-firebug.Website=Trang web Firebug...
-firebug.menu.tip.Website=Open the official Firebug website
-firebug.help=Help...
-firebug.menu.tip.help=Open the page with links to pages explaining Firebug
-firebug.Documentation=Tài liệu...
-firebug.menu.tip.Documentation=Open the documentation about Firebug
-firebug.KeyShortcuts=Phím tắt...
-firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
-firebug.Forums=Nhóm thảo luận...
-firebug.menu.tip.Forums=Open the discussion group site
-firebug.Issues=Trình theo dõi Vấn đề...
-firebug.menu.tip.Issues=Open the issue tracker site
-firebug.Donate=Đóng góp...
-firebug.menu.tip.Donate=Open the contribution site
-firebug.About=Giới thiệu...
-firebug.menu.tip.About=Information about Firebug
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
-firebug.Search=Tìm kiếm
-firebug.menu.tip.Search=Set focus to the search field
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=Nhập lại Lệnh
-firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
-firebug.shortcut.toggleInspecting.label=Bật tắt việc Thăm dò
-firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
-firebug.shortcut.toggleQuickInfoBox.label=Bật tắt Hộp thông tin nhanh
-firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
-firebug.shortcut.toggleProfiling.label=Bật tắt việc Ghi hồ sơ
-firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=Chú ý vào Dòng lệnh
-firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
-firebug.shortcut.focusFirebugSearch.label=Chú ý vào Tìm kiếm Firebug
-firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
-firebug.shortcut.focusWatchEditor.label=Chú ý vào Trình chỉnh sửa Watch
-firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
-firebug.shortcut.focusLocation.label=Chú ý vào Địa chỉ
-firebug.shortcut.tip.focusLocation=Open the Location Menu
-firebug.shortcut.nextObject.label=Đối tượng Tiếp
-firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
-firebug.shortcut.previousObject.label=Đối tượng Trước
-firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
-firebug.shortcut.customizeFBKeys.label=Tùy biến Phím Firebug
-firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
-firebug.shortcut.detachFirebug.label=Mở Firebug trong Cửa Sổ Mới
-firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
-firebug.shortcut.leftFirebugTab.label=Hoán chuyển sang bảng Firebug bên trái
-firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
-firebug.shortcut.rightFirebugTab.label=Hoán chuyển sang bảng Firebug bên phải
-firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
-firebug.shortcut.toggleFirebug.label=Mở Firebug
-firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
-firebug.shortcut.closeFirebug.label=Deactivate Firebug
-firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
-firebug.shortcut.previousFirebugTab.label=The Firebug Trước
-firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
-firebug.shortcut.clearConsole.label=Xóa trắng Bảng kiểm soát
-firebug.shortcut.tip.clearConsole=Remove all logs from the console
-firebug.shortcut.openTraceConsole.label=Mở Bảng kiểm soát Dấu vết
-firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
-firebug.shortcut.navBack.label=Go Back
-firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
-firebug.shortcut.navForward.label=Go Forward
-firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
-firebug.shortcut.increaseTextSize.label=Increase Text Size
-firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
-firebug.shortcut.decreaseTextSize.label=Decrease Text Size
-firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
-firebug.shortcut.normalTextSize.label=Normal Text Size
-firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
-firebug.shortcut.help.label=Open help
-firebug.shortcut.tip.help=Open the page answering the frequently asked questions
-firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
-firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
-firebug.panel_selector=Panel Selector
-customizeShortcuts=Kết hợp Phím tắt Firebug
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=công cụ bảng
-a11y.labels.firebug_panels=bảng Firebug
-a11y.labels.firebug_side_panels=bảng lề Firebug
-a11y.labels.firebug_window=cửa sổ firebug
-a11y.labels.firebug_status=trạng thái firebug
-a11y.labels.reset=thiết lập lại
-a11y.labels.reset_shortcut=thiết lập lại phím tắt %S
-aria.labels.inactive_panel=bảng không hoạt động
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=dòng log
-a11y.labels.call_stack=gọi stack
-a11y.labels.document_structure=document structure
-a11y.labels.title_panel=bảng %S
-a11y.labels.title_side_panel=bảng lề %S
-a11y.labels.cached=được đệm
-aria.labels.stack_trace=dấu stack
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=khoảng đệm
-a11y.layout.border=biên
-a11y.layout.margin=lề
-a11y.layout.position=vị trí
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=lề trên
-a11y.layout.margin_right=lề phải
-a11y.layout.margin_bottom=lề dưới
-a11y.layout.margin_left=lề trái
-a11y.layout.border_top=biên trên
-a11y.layout.border_right=biên phải
-a11y.layout.border_bottom=biên dưới
-a11y.layout.border_left=biên trái
-a11y.layout.padding_top=khoảng đệm trên
-a11y.layout.padding_right=khoảng đệm phải
-a11y.layout.padding_bottom=khoảng đệm dưới
-a11y.layout.padding_left=khoảng đệm trái
-a11y.layout.top=trên
-a11y.layout.right=phải
-a11y.layout.bottom=dưới
-a11y.layout.left=trái
-a11y.layout.width=rộng
-a11y.layout.height=cao
-a11y.layout.size=kích cỡ
-a11y.layout.z-index=chỉ mục z
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=ấn Enter rồi Tab để chỉnh sửa từng giá trị riêng biệt
-a11y.labels.style_rules=quy tắc style
-aria.labels.inherited_style_rules=quy tắc style được thừa hưởng
-a11y.labels.computed_styles=style được tính toán
-a11y.labels.dom_properties=thuộc tính DOM
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=trình soạn thảo nội trú
-a11y.labels.value_for_attribute_in_element=giá trị cho thuộc tính %S trong phần tử %S
-a11y.labels.attribute_for_element=thuộc tính cho phần tử %S
-a11y.labels.text_contents_for_element=nội dung văn bản cho phần tử %S
-a11y.labels.defined_in_file=định nghĩa trong %S
-a11y.labels.declarations_for_selector=khai báo style cho selector \"%S\"
-a11y.labels.property_for_selector=thuộc tính CSS cho selector: %S
-a11y.labels.value_property_in_selector=giá trị thuộc tính %S trong selector %S
-a11y.labels.css_selector=CSS selector
-a11y.labels.source_code_for_file=mã nguồn cho tập tin %S
-a11y.labels.press_enter_to_add_new_watch_expression=ấn Enter để thêm một biểu thức theo dõi mới
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=ghi đè
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=có điểm ngắt điều kiện
-a11y.updates.has_disabled_break_point=đã vô hiệu hóa điểm ngắt
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=Script bị hoãn trên dòng %S trong %S, tập tin %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=tìm thấy kết quả cho %S trong %S dòng log
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=tìm thấy kết quả cho %S trên dòng %S trong %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=tìm thấy kết quả cho %S trong phần tử %S tại đường dẫn %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=tìm thấy kết quả cho %S trong thuộc tính %S=%S của phần tử %S tại đường dẫn %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=tìm thấy kết quả cho %S trong nội dung văn bản: %S của phần tử %S tại đường dẫn %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=tìm thấy kết quả cho %S trong selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=kết quả khớp cho \"%S\" trong khai báo style %S trong selector %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=tìm thấy kết quả cho %S trong thuộc tính DOM %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=tìm thấy kết quả cho %S trong %S, %S : %S;
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=tìm thấy kết quả cho %S trong dòng tóm tắt mạng: %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=không tìm thấy kết quả cho \"%S\"
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=Bạn có chắc chắn là mình muốn thiết lập lại tất cả tùy chọn Firebug về tình trạng mặc định không?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
-# Console messages
-warning.Console_must_be_enabled=Bảng kiểm soát phải được bật
-warning.Command_line_blocked?=Dòng lệnh bị chặn?
-warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
-message.Reload_to_activate_window_console=Nạp lại để kích hoạt bảng kiểm soát cửa sổ
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=Reload the page to get source for
-message.The_resource_from_this_URL_is_not_text=Tài nguyên từ URL này không phải là văn bản
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=Go back to this panel
-firebug.history.Stay_on_this_panel=Stay on this panel
-firebug.history.Go_forward_to_this_panel=Go forward to this panel
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=Go back
-firebug.history.Go_forward=Go forward
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=Script Panel was inactive during page load
-script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript is not enabled
-script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=Enable JavaScript and Refresh
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=All scripts were filtered
-script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=No Javascript on this page
-script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Debugger is already active
-script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
-script.button.Go_to_that_page=Go to that page
-script.warning.debugger_not_activated=Debugger not activated
-script.suggestion.debugger_not_activated=Debugger not activated
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=Đóng
-firebug.View=Hiển thị
-firebug.Help=Trợ giúp
-firebug.Run=Chạy
-firebug.Copy=Chép
-firebug.History=History
-firebug.Run_the_entered_command=Run the entered command
-firebug.Clear_the_Command_Editor=Clear the Command Editor
-firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
-firebug.Insert_a_previously_entered_command=Insert a previously entered command
-firebug.AlwaysOpenInWindow=Luôn Mở trong Cửa Sổ Mới
-firebug.OpenWith=Mở bằng Trình soạn thảo
-firebug.menu.tip.Open_With=Open the content in an external editor
-firebug.Permissions=Trang...
-firebug.Configure_Editors=Configure Editors
-script.tip.Script_Type=Filter on script type
-script.tip.Script_Filter_Static=Just display scripts loaded together with the page
-script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
-script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=Rerun the current function call stack
-script.Continue=Continue
-script.tip.Continue=Continue the JavaScript execution
-script.Step_Over=Step Over
-script.tip.Step_Over=Execute the next command
-script.Step_Into=Step Into
-script.tip.Step_Into=Execute the next command and jump into functions
-script.Step_Out=Step Out
-script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=Execute the JavaScript until the specified line
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=Thăm dò
-firebug.InspectElement=Thăm dò Phần tử
-firebug.InspectElementWithFirebug=Inspect Element with Firebug
-firebug.BreakOnErrors=Ngắt khi Gặp lỗi
-firebug.InspectTooltip=Nhấn lên một phần tử trong trang để thăm dò
-firebug.EditHTMLTooltip=Chỉnh sửa HTML này
-firebug.Profile=Hồ sơ
-firebug.Clear=Xóa trắng
-firebug.ClearConsole=Xóa trắng Bảng kiểm soát
-firebug.ClearTooltip=Xóa trắng bảng kiểm soát
-firebug.All=Tất cả
-firebug.Images=Hình ảnh
-firebug.Flash=Flash
-# editors.dtd
-editors.Configured_Firebug_Editors=Configured Firebug Editors
-editors.Editor=Editor
-editors.Executable=Executable
-editors.Launch_Arguments=Launch Arguments
-editors.Add=Add
-editors.Remove=Remove
-editors.Change=Change
-editors.Move_Up=Move Up
-editors.Close=Close
-editors.Browse=Browse...
-changeEditor.Editor_Configuration=Editor Configuration
-changeEditor.Name=Tên:
-changeEditor.Executable=Thực thi:
-changeEditor.CmdLine=Tham số:
-changeEditor.Supplied_arguments=Arguments supplied by Firebug:
-changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
-changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
-changeEditor.Line_number=Line number (if available)
-changeEditor.Invalid_Application_Path=Invalid Application Path
-changeEditor.Application_does_not_exist=The specified application doesn't exist!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=Chỉnh sửa
-firebug.css.sourceEdit=Source Edit
-firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
-firebug.css.liveEdit=Live Edit
-firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
-firebug.EditCSSTooltip=Chỉnh sửa stylesheet này
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=Show Break Notifications
-firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
-firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=There are no child objects
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=more
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=Circular reference
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=Object Properties
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(no completions)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
-firebug.failedToPreviewImageURL=Failed to load the given URL
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler Started
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Objects Added While Profiling
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler Results
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=Entire Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(nothing to output)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(an empty string)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
-cookies.legacy.uninstall=Uninstall
-cookies.legacy.uninstall_and_restart=Uninstall && Restart
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-console.cmd.help_title=Command Line API
-console.cmd.help_title_desc=Press F1 to open online Firebug help
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=Returns a single element with the given id.
-console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
-console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
-console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
-console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
-console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
-console.cmd.help.clear=Clears the console.
-console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
-console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
-console.cmd.help.keys=Returns an array containing the names of all properties of the object.
-console.cmd.help.values=Returns an array containing the values of all properties of the object.
-console.cmd.help.debug=Adds a breakpoint on the first line of a function.
-console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
-console.cmd.help.monitor=Turns on logging for all calls to a function.
-console.cmd.help.unmonitor=Turns off logging for all calls to a function.
-console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
-console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
-console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
-console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
-console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
-console.cmd.help.$0=Represents the last element selected via the Inspector.
-console.cmd.help.$1=Represents the second last element selected via the Inspector.
-console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
-console.cmd.help.help=Displays help for all available commands.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=Help page for this command is not available.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
-css.selector.noSelectionResults=No matching elements
-css.selector.selectorError=Selection failed:
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-css.selector.Selection=Elements
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selector=Displays elements matching a CSS selector
-css.selector.TryASelector=Try a selector...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=Get Matching Elements
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-css.selector.unknownErrorMessage=Failed to execute specified selector string
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-perftiming.events.label=Event timing relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=Detailed timing
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=Time when server connection is finished.
-perftiming.connectStart=Time just before server connection begins.
-perftiming.domComplete=Time just before document readiness completes.
-perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
-perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
-perftiming.domInteractive=Time just before readiness set to interactive.
-perftiming.domLoading=Time just before readiness set to loading.
-perftiming.domainLookupEnd=Time after domain name lookup.
-perftiming.domainLookupStart=Time just before domain name lookup.
-perftiming.fetchStart=Time when the resource starts being fetched.
-perftiming.loadEventEnd=Time when the load event is complete.
-perftiming.loadEventStart=Time just before the load event is fired.
-perftiming.navigationStart=Time after the previous document begins unload.
-perftiming.redirectCount=Number of redirects since the last non-redirect.
-perftiming.redirectEnd=Time after last redirect response ends.
-perftiming.redirectStart=Time of fetch that initiated a redirect.
-perftiming.requestStart=Time just before a server request.
-perftiming.responseEnd=Time after the end of a response or connection.
-perftiming.responseStart=Time just before the start of a response.
-perftiming.unloadEventEnd=Time after the previous document is unloaded.
-perftiming.unloadEventStart=Time just before the unload event is fired.
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=Bảng kiểm soát
+panel.tip.console=Allows observing console messages and executing JavaScript commands
+Panel-net=Net
+panel.tip.net=Allows analyzing the network traffic
+Panel-html=HTML
+panel.tip.html=Allows inspecting and manipulating the DOM nodes
+Panel-stylesheet=CSS
+panel.tip.stylesheet=Allows inspecting and manipulating the CSS stylesheets
+Panel-script=Script
+panel.tip.script=Allows debugging of JavaScript
+Panel-dom=DOM
+panel.tip.dom=Allows inspecting and manipulating the DOM properties
+Panel-css=Style
+panel.tip.css=Allows inspecting and manipulating the CSS rules of the selected DOM node
+Panel-computed=Computed
+panel.tip.computed=Allows inspecting the computed CSS values of the selected DOM node
+Panel-layout=Bố cục
+panel.tip.layout=Allows inspecting and manipulating the layout data of the selected DOM node
+Panel-domSide=DOM
+panel.tip.domSide=Allows inspecting and manipulating the DOM properties of the selected DOM node
+Panel-watches=Theo dõi
+panel.tip.watches=Allows inspecting the JavaScript variables available in the current stack frame and defining watch expressions
+Panel-breakpoints=Điểm ngắt
+panel.tip.breakpoints=Allows manipulating the set breakpoints
+Panel-callstack=Stack
+panel.tip.callstack=Allows observing the current JavaScript call stack
+Panel-scopes=Scope
+firebug.DetachFirebug=Mở Firebug trong Cửa Sổ Mới
+firebug.AttachFirebug=Attach Firebug to Browser Window
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=1
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%1$S Total Firebug;%1$S Total Firebugs
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=Deactivated
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=Trong trình duyệt
+minimized=Thu nhỏ
+enablement.for_all_pages=cho tất cả các trang
+enablement.on=Bật
+enablement.off=Tắt
+enablement.Panel_activation_status=Panel activation status:
+none=Đóng
+Firebug_-_inactive_for_current_website=Firebug - inactive for current website
+Activate_Firebug_for_the_current_website=Activate Firebug for the current website
+Minimized=Thu nhỏ
+Minimize_Firebug=Thu nhỏ Firebug
+On_for_all_web_pages=Bật cho Tất cả Trang web
+firebug.menu.tip.On_for_all_Web_Sites=Activate Firebug by default for all websites
+firebug.menu.Clear_Activation_List=Xóa trắng Danh sách Kích hoạt
+firebug.menu.tip.Clear_Activation_List=Clear the list of websites Firebug is activated for
+firebug.menu.Detached=Detached
+firebug.menu.tip.Detached=Detach Firebug into its own window
+firebug.menu.Top=Top
+firebug.menu.tip.Top=Align Firebug to the top of the user agent window
+firebug.menu.Bottom=Bottom
+firebug.menu.tip.Bottom=Align Firebug to the bottom of the user agent window
+firebug.menu.Left=Left
+firebug.menu.tip.Left=Align Firebug to the left of the user agent window
+firebug.menu.Right=Right
+firebug.menu.tip.Right=Align Firebug to the right of the user agent window
+firebug.uiLocation=Firebug UI Location
+firebug.menu.tip.UI_Location=Position of the Firebug user interface
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Tùy chọn Firebug
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=Show All Panels
+console.option.Show_Command_Line=Show Command Line
+console.option.tip.Show_Command_Line=Focus the Command Line / Show the Command Line Popup
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=Hiện lỗi JavaScript
+console.option.tip.Show_JavaScript_Errors=Log JavaScript error messages into the console
+ShowJavaScriptWarnings=Hiện cảnh báo JavaScript
+console.option.tip.Show_JavaScript_Warnings=Log JavaScript warning messages into the console
+ShowCSSErrors=Hiện lỗi CSS
+console.option.tip.Show_CSS_Errors=Log CSS error messages into the console
+ShowXMLHTMLErrors=Show XML/HTML Errors
+console.option.tip.Show_XML_HTML_Errors=Log XML and HTML error messages into the console
+ShowStackTrace=Hiện truy dấu Stack kèm lỗi
+console.option.tip.Show_Stack_Trace=Show stack trace information for error messages
+ShowXMLHttpRequests=Hiện XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=Log XMLHttpRequests into the console
+ShowChromeErrors=Hiện lỗi Chrome
+console.option.tip.Show_System_Errors=Log program and add-on internal error messages into the console
+ShowChromeMessages=Hiện thông điệp Chrome
+console.option.tip.Show_System_Messages=Log program and add-on internal messages into the console
+ShowExternalErrors=Hiện lỗi ngoại trú
+console.option.tip.Show_External_Errors=Log error messages coming from external sources into the console
+ShowNetworkErrors=Hiện lỗi Mạng
+console.option.tip.Show_Network_Errors=Log network error messages into the console
+JavascriptOptionsStrict=Cảnh báo Nghiêm trọng (nguy hiểm tới hiệu năng)
+console.option.tip.Show_Strict_Warnings=Log also strict warnings into the console
+Command_History=Command History
+console.option.Show_Command_Editor=Show Command Editor
+console.option.tip.Show_Command_Editor=Switch to the Command Editor
+commandLineShowCompleterPopup=Show Completion List Popup
+console.option.tip.Show_Completion_List_Popup=Show the popup for command auto-completion
+Assertion=Thất bại khi Xác nhận
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (dòng %S)
+LineAndCol=%S (line %S, col %S)
+InstanceLine=%S #%S (dòng %S)
+StackItem=%S (%S dòng %S)
+SystemItem=<Hệ thống>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=Inspect in %S Panel
+panel.tip.Inspect_In_Panel=Switch to the %S panel to examine the object there
+NoName=(không tên)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=Hiện văn bản đầy đủ
+html.option.tip.Show_Full_Text=Don't crop element contents
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=Hiện khoảng trắng
+html.option.tip.Show_Whitespace=Show Whitespace inside of nodes
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=Hiện bình luận
+html.option.tip.Show_Comments=Show comment nodes
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=Show Entities As Symbols
+html.option.tip.Show_Entities_As_Symbols=Show all XML entities using their symbolic representation
+html.option.Show_Entities_As_Names=Show Entities As Names
+html.option.tip.Show_Entities_As_Names=Show all XML entities using their names
+html.option.Show_Entities_As_Unicode=Show Entities As Unicode
+html.option.tip.Show_Entities_As_Unicode=Show all XML entities in their Unicode representation
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=Tô sáng Thay đổi
+html.option.tip.Highlight_Mutations=Highlight changes inside nodes
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=Mở rộng Thay đổi
+html.option.tip.Expand_Mutations=Expand the tree view to display changed nodes
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=Cuộn các Thay đổi vào phần Hiển thị
+html.option.tip.Scroll_To_Mutations=Scroll the tree view to bring changed nodes into view
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=Hiện hộp Thông tin Nhanh
+inspect.option.tip.Show_Quick_Info_Box=Show information about the currently inspected element inside a panel overlaying the page
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=Kiểu mẫu Hộp Mờ
+inspect.option.tip.Shade_Box_Model=Shade the different parts of the box model
+ScrollIntoView=Cuộn vào phần Hiển thị
+html.tip.Scroll_Into_View=Scroll the page to make the element visible
+NewAttribute=Thuộc tính Mới...
+html.tip.New_Attribute=Add a new attribute to this element
+html.Edit_Node=Edit %S...
+html.Node=Node
+html.tip.Edit_Node=Edit the %S using the full text editor
+DeleteElement=Xóa phần tử
+html.Delete_Element=Delete the element from the tree
+DeleteNode=Xóa điểm nút
+html.Delete_Node=Delete the node from the tree
+# Quick Info Box
+quickInfo=Thông tin Nhanh
+computedStyle=Computed Style
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=Ngắt khi Biến đổi
+html.Disable_Break_On_Mutate=Vô hiệu hóa việc Ngắt khi Biến đổi
+html.label.Break_On_Text_Change=Ngắt khi Thay đổi Văn bản
+html.label.HTML_Breakpoints=Điểm ngắt HTML
+html.label.Break_On_Attribute_Change=Ngắt khi Thay đổi Thuộc tính
+html.tip.Break_On_Attribute_Change=Stop JavaScript execution when an attribute of this element changes
+html.label.Break_On_Child_Addition_or_Removal=Ngắt khi Thêm hoặc Xóa Child
+html.tip.Break_On_Child_Addition_or_Removal=Stop JavaScript execution when a child node is added to or removed from this element
+html.label.Break_On_Element_Removal=Ngắt khi Xóa Phần tử
+html.tip.Break_On_Element_Removal=Stop JavaScript execution when the element is removed
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=Expand/Contract All
+html.tip.Expand/Contract_All=Expand/collapse all the children recursively
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=Break On Property Change
+dom.tip.Break_On_Property_Change=Stop the JavaScript execution when this property changes
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=Disable Break On Property Change
+dom.label.DOM_Breakpoints=Điểm ngắt DOM
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=Chỉnh sửa thuộc tính \"%S\"...
+html.tip.Edit_Attribute=Edit the value of the attribute "%S" of this element
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=Xóa thuộc tính \"%S\"
+html.tip.Delete_Attribute=Delete the attribute "%S" from this element
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=Thừa hưởng từ
+SothinkWarning=Phần mở rộng Sothink SWF Catcher làm cho Firebug không hoạt động đúng.<br><br>Vui lòng đọc <a href=\"http://www.getfirebug.com/faq.html#Sothink\" target=\"_new\">mục này trên FAQ của Firebug</a> để được trợ giúp.
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=There are no rules. You can <a>create a rule</a>.
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=This element has no style rules. You can <a>create a rule</a> for it.
+EditStyle=Chỉnh sửa Style của Phần tử...
+style.tip.Edit_Style=Edit the element's inline style
+AddRule=Add Rule...
+css.tip.AddRule=Add a general rule for this element
+NewRule=Quy tắc Mới...
+css.tip.New_Rule=Add a new rule
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=Delete "%S"
+css.tip.Delete_Rule=Delete the rule "%S" and all its properties
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=Edit Media Query...
+css.menu.tip.Edit_Media_Query=Edit the media query assigned to this rule
+NewProp=Thuộc tính Mới...
+css.tip.New_Prop=Add a new property to the current rule
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=Chỉnh sửa \"%S\"...
+css.tip.Edit_Prop=Edit the value of the property "%S"
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=Vô hiệu \"%S\"
+css.tip.Disable_Prop=Disable the property "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=Xóa \"%S\"
+css.tip.Delete_Prop=Delete the property "%S"
+# Console context menu labels.
+BreakOnThisError=Ngắt khi gặp Lỗi này
+console.menu.tip.Break_On_This_Error=Stop the JavaScript execution as soon as this error occurs
+BreakOnAllErrors=Ngắt khi gặp Tất cả Các lỗi
+console.menu.tip.Break_On_All_Errors=Stop the JavaScript execution as soon as an error occurs
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=Theo dõi Ném/Bắt
+script.option.tip.Track_Throw_Catch=Track exceptions even when they are caught by try/catch blocks
+UseLastLineForEvalName=Sử dụng Dòng Mã Nguồn Cuối cho các tên eval()
+UseMD5ForEvalName=Sử dụng MD5 cho các tên eval()
+# Breakpoints side panel
+Breakpoints=Điểm ngắt
+ErrorBreakpoints=Điểm ngắt lỗi
+LoggedFunctions=Chức năng đã được log
+EnableAllBreakpoints=Kích hoạt Tất cả Điểm ngắt
+breakpoints.option.tip.Enable_All_Breakpoints=Enable all listed breakpoints
+DisableAllBreakpoints=Vô hiệu Tất cả Điểm ngắt
+breakpoints.option.tip.Disable_All_Breakpoints=Disable all listed breakpoints
+ClearAllBreakpoints=Xóa Tất cả Điểm ngắt
+breakpoints.option.tip.Clear_All_Breakpoints=Remove all listed breakpoints
+ConditionInput=Điểm ngắt này chỉ dừng khi biểu thức đúng:
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=Remove Breakpoint
+breakpoints.tip.Remove_Breakpoint=Remove the breakpoint
+breakpoints.Disable_Breakpoint=Disable Breakpoint
+breakpoints.tip.Disable_Breakpoint=Disable the breakpoint
+breakpoints.Enable_Breakpoint=Enable Breakpoint
+breakpoints.tip.Enable_Breakpoint=Enable the breakpoint
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=Continue
+script.balloon.Disable=Disable
+ScriptsFilterStatic=Hiện Script tĩnh
+ScriptsFilterEval=Hiện Script eval và tĩnh
+ScriptsFilterEvent=Hiện Script sự kiện và tĩnh
+ScriptsFilterAll=Hiện Script sự kiện, eval và tĩnh
+ScriptsFilterStaticShort=tĩnh
+ScriptsFilterEvalShort=eval
+ScriptsFilterEventShort=sự kiện
+ScriptsFilterAllShort=tất cả
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=Expand All
+callstack.tip.Expand_All=Expand all stack frame functions
+callstack.Collapse_All=Collapse All
+callstack.tip.Collapse_All=Collapse all stack frame functions
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=Stack frames are just shown when the script execution is stopped.
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=Hiện các Thuộc tính Người dùng Định nghĩa
+dom.option.tip.Show_User_Props=Show user-defined object properties
+ShowUserFuncs=Hiện các Chức năng Người dùng Định nghĩa
+dom.option.tip.Show_User_Funcs=Show user-defined object methods
+ShowDOMProps=Hiện các Thuộc tính DOM
+dom.option.tip.Show_DOM_Props=Show properties specified inside the DOM
+ShowDOMFuncs=Hiện các Chức năng DOM
+dom.option.tip.Show_DOM_Funcs=Show functions specified inside the DOM
+ShowDOMConstants=Hiện các Hằng số DOM
+dom.option.tip.Show_DOM_Constants=Show constants specified inside the DOM
+ShowInlineEventHandlers=Show Inline Event Handlers
+ShowInlineEventHandlersTooltip=Show available inline event handlers, that are not associated with a function
+ShowOwnProperties=Show Own Properties Only
+ShowOwnPropertiesTooltip=Don't show prototype chain
+ShowEnumerableProperties=Show Enumerable Properties Only
+ShowEnumerablePropertiesTooltip=Don't show non-enumerable properties
+NoMembersWarning=Không có thuộc tính nào cho đối tượng này.
+NewWatch=Biểu thức theo dõi mới...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=Thêm theo dõi
+watch.tip.Add_Watch=Add the selection/object to the Watch side panel for observation
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=Chép nguồn
+script.tip.Copy_Source_Code=Copy the selected source code to the clipboard
+Use_hash_plus_number_to_go_to_line=Use #<number> to go to line
+CopyValue=Chép giá trị
+dom.tip.Copy_Value=Copy the property's value to the clipboard
+Copy_Name=Chép tên
+dom.tip.Copy_Name=Copy the property's name to the clipboard
+Copy_Path=Chép đường dẫn
+dom.tip.Copy_Path=Copy the property path
+NewProperty=Thuộc tính Mới...
+EditProperty=Chỉnh sửa Thuộc tính...
+dom.tip.Edit_Property=Edit the property's value
+EditVariable=Chỉnh sửa Giá trị...
+stack.tip.Edit_Variable=Edit the variable's value
+EditWatch=Chỉnh sửa Theo dõi...
+watch.tip.Edit_Watch=Edit the watch expression's value
+DeleteProperty=Xóa thuộc tính
+dom.tip.Delete_Property=Delete the property
+DeleteWatch=Xóa theo dõi
+DeleteAllWatches=Delete All Watches
+watch.tip.Delete_Watch=Delete the watch expression
+watch.tip.Delete_All_Watches=Delete all the watch expressions
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=Thiết lập Điểm ngắt
+script.tip.Set_Breakpoint=Toggles setting of a breakpoint at the current line
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=Chỉnh sửa Điều kiện Điểm ngắt...
+breakpoints.tip.Edit_Breakpoint_Condition=Edit the condition, under which this breakpoint stops the JavaScript execution
+NoBreakpointsWarning=Không có điểm ngắt nào được thiết lập trong trang này.
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=Only Show Applied Styles
+style.option.tip.Only_Show_Applied_Styles=Just show styles applied to the element
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=Hiện CSS User Agent
+style.option.tip.Show_User_Agent_CSS=Also show the CSS defined by the user agent
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=Colors As Hex
+computed.option.tip.Colors_As_Hex=Show colors in hexadecimal format
+computed.option.label.Colors_As_RGB=Colors As RGB
+computed.option.tip.Colors_As_RGB=Show colors in RGB format
+computed.option.label.Colors_As_HSL=Colors As HSL
+computed.option.tip.Colors_As_HSL=Show colors in HSL format
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=Display :active pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=Display :hover pseudo-class styles
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=Display :focus pseudo-class styles
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=Inspect Declaration
+css.tip.Inspect_Declaration= Inspect the declaration of this font
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=Expand Shorthand Properties
+css.option.tip.Expand_Shorthand_Properties=Expand CSS shorthand properties into their components
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=Sort Alphabetically
+computed.option.tip.Sort_Alphabetically=Sort the styles by their name/group the styles into categories
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=Show Mozilla Specific Styles
+computed.option.tip.Show_Mozilla_Specific_Styles=Also show styles prefixed with -moz
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=This element has no user-defined style rules.
+script.Type_any_key_to_filter_list=Type any key to filter list
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=khoảng đệm
+LayoutBorder=viền
+LayoutMargin=lề
+LayoutPosition=position
+LayoutAdjacent=kề cận
+position=vị trí
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=Hiện Thước và Hướng dẫn
+layout.option.tip.Show_Rulers=Show rulers and guides on the page when hovering parts of the layout box
+# Net panel
+Loading=Đang tải...
+Headers=Đầu đề
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=Clear the request list
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=Thiết lập lại Đầu đề
+net.header.tip.Reset_Header=Reset the header display
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=Phương thức HTTP được dùng và URL được yêu cầu.
+net.header.Status=Trạng thái
+net.header.Status_Tooltip=Trạng thái của phản hồi đã nhận.
+net.header.Domain=Tên miền
+net.header.Domain_Tooltip=Tên miền của yêu cầu được thực thi.
+net.header.Size=Dung lượng
+net.header.Size_Tooltip=Dung lượng của phản hồi đã nhận.
+net.header.Timeline=Biểu đồ thời gian
+net.header.Timeline_Tooltip=Thông tin thời gian chi tiết của chu kì phản hồi yêu cầu.
+net.header.Local_IP=Local IP
+net.header.Local_IP_Tooltip=Local IP address and port number to which the request is bound
+net.header.Remote_IP=Remote IP
+net.header.Remote_IP_Tooltip=Remote IP address and port number to which the request is bound
+net.header.Protocol=Protocol
+net.header.Protocol_Tooltip=The URL protocol used to locate the resource on the web
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=Điểm ngắt XHR
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=Ngắt khi XHR
+net.tip.Break_On_XHR=Stop the JavaScript execution as soon as an XMLHttpRequest is made
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=xem mã nguồn
+net.headers.pretty_print=in đẹp
+# LOCALIZATION NOTE (net.filter.Media): Label for Net panel filter (used on the Net panel toolbar)
+net.filter.Media=Media
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Đăng
+Put=Đặt
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=Phản hồi
+URLParameters=Tham số
+Cache=Bộ đệm
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=General Info
+fontviewer.Meta_Data=Meta Data
+fontviewer.view_source=view source
+fontviewer.Preview=Preview
+fontviewer.view_characters=view characters
+fontviewer.pretty_print=pretty print
+fontviewer.view_sample=view sample
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=Sort by key
+jsonviewer.do_not_sort=Do not sort
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=Copy "%S" as JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=Đầu đề Yêu cầu
+ResponseHeaders=Đầu đề Phản hồi
+CachedResponseHeaders=Response Headers From Cache
+PostRequestHeaders=Request Headers From Upload Stream
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=The request was resolved directly from the cache, so we have no response from the server. See below for the cached response.
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebug's log limit has been reached. %1$S entry not shown.;Firebug's log limit has been reached. %1$S entries not shown.
+LimitPrefs=Tùy chỉnh
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=Để thay đổi giới hạn, hãy sửa: %S
+Refresh=Làm tươi
+panel.tip.Refresh=Refresh the panel display
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=Mở trong Thẻ Mới
+firebug.tip.Open_In_Tab=Open the URL in a new browser tab
+Open_Response_In_New_Tab=Mở Phản Hồi trong Thẻ Mới
+net.tip.Open_Response_In_New_Tab=Open the response in a new browser tab
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=Hồ sơ
+ProfilerStarted=Hồ sơ đang chạy. Nhấn \'Hồ sơ\' lần nữa để xem báo cáo của nó.
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%1$Sms, %2$S call);(%1$Sms, %2$S calls)
+NothingToProfile=Không có hoạt động nào để ghi vào hồ sơ.
+PercentTooltip=Phần trăm thời gian đã bỏ ra cho chức năng này.
+CallsHeaderTooltip=Số lần chức năng này được gọi.
+OwnTimeHeaderTooltip=Thời gian đã bỏ ra cho chức năng này, không bao gồm các lần gọi tổng hợp.
+TimeHeaderTooltip=Thời gian đã bỏ ra cho chức năng này, bao gồm các lần gọi tổng hợp.
+AvgHeaderTooltip=Thời gian trung bình, bao gồm các lần gọi chức năng.
+MinHeaderTooltip=Thời gian tối thiểu, bao gồm các lần gọi chức năng.
+MaxHeaderTooltip=Thời gian tối đa, bao gồm các lần gọi chức năng.
+ProfileButton.Enabled.Tooltip=Lưu hồ sơ thời gian thực thi JavaScript.
+ProfileButton.Disabled.Tooltip=Lưu hồ sơ thời gian thực thi JavaScript (Bảng script phải được bật).
+Function=Chức năng
+Percent=Phần trăm
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=Lần gọi
+OwnTime=Thời gian riêng
+Time=Thời gian
+Avg=T/bình
+Min=T/thiểu
+Max=T/đa
+File=Tập tin
+# Support for standard actions.
+Copy=Chép
+Cut=Cắt
+Remove=Xóa
+Delete=Delete
+Paste=Paste
+SelectAll=Select All
+html.Copy_Node=Copy %S
+html.tip.Copy_Node=Copy the %S node and all its contents to the clipboard
+CopyInnerHTML=Chép innerHTML
+html.tip.Copy_innerHTML=Copy the contents of the element to the clipboard
+CopyXPath=Chép XPath
+html.tip.Copy_XPath=Copy the element's XPath to the clipboard
+Copy_CSS_Path=Copy CSS Path
+html.tip.Copy_CSS_Path=Copy the element's CSS path to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=Chép địa chỉ
+clipboard.tip.Copy_Location=Copy the URL of the object's location to the clipboard
+CopyURLParameters=Copy URL Parameters
+net.tip.Copy_URL_Parameters=Copy URL parameters to the clipboard
+CopyPOSTParameters=Copy POST Parameters
+net.tip.Copy_POST_Parameters=Copy POST parameters to the clipboard
+CopyLocationParameters=Chép địa chỉ cùng với tham số
+net.tip.Copy_Location_Parameters=Copy the URL incl. the parameters to the clipboard
+CopyRequestHeaders=Chép đầu đề yêu cầu
+net.tip.Copy_Request_Headers=Copy the request headers to the clipboard
+CopyResponseHeaders=Chép đầu đề phản hồi
+net.tip.Copy_Response_Headers=Copy the response headers to the clipboard
+CopyResponse=Chép nội dung phản hồi
+net.tip.Copy_Response=Copy the response body to the clipboard
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=Chép lỗi
+console.menu.tip.Copy_Error=Copy the error information to the clipboard
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=Chép chức năng
+dom.tip.Copy_Source=Copy the function's source code to the clipboard
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=Lưu kí Lần gọi tới \"%S\"
+dom.tip.Log_Calls_To_Function=Log calls to the function "%S" inside the Console panel
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=Lưu kí Sự kiện
+html.tip.Show_Events_In_Console=Log event information to the console
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=Đang bật
+panel.tip.Enabled=Toggle the panel activation
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=Show Command Line Popup
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Bảng kiểm soát Firebug không hỗ trợ \'%S\'
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Dòng lệnh Firebug không hỗ trợ \'%S\'
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=Current window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=Vô hiệu việc Ngắt trên Tất cả Các lỗi
+console.Break_On_All_Errors=Ngắt trên Tất cả Các lỗi
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=Break On This Error
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=Use Arrow keys, Tab or Enter
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript đang bị tắt trong tùy chỉnh Firefox của bạn. Nếu muốn dùng cửa sổ bảng kiểm soát, vui lòng bật chức năng này trong \'Công cụ\' -> \'Tùy chọn\' -> \'Nội dung\' -> \'Bật JavaScript\'
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=There are too many elements in the array to highlight on the page (current limit is %S).\nSee 'extensions.firebug.multiHighlightLimit' preference.
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug command line is disabled for XML pages. You can <a>switch to HTML</a> to enable it.
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=Nội dung Phản hồi
+net.sizeinfo.Post_Body=Nội dung Đăng
+net.sizeinfo.Total_Sent=Tổng cộng Đã gửi
+net.sizeinfo.Total_Received=Tổng cộng Đã nhận
+net.sizeinfo.Including_HTTP_Headers=Including HTTP Headers
+net.ActivationMessage=Bảng mạng được kích hoạt. Các yêu cầu diễn ra trong quá trình bảng mạng không hoạt động sẽ không được hiện ra.
+net.responseSizeLimitMessage=Đã đạt tới giới hạn dung lượng phản hồi Firebug. Nhấn <a>vào đây</a> để mở toàn bộ phản hồi trong thẻ Firefox mới.
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Đã đạt tới giới hạn dung lượng nội dung bài đăng. Bị xóa bởi Firebug.
+net.Break_On_XHR=Ngắt trên XHR
+net.label.Parameters=Tham số
+net.label.Parts=Phần
+net.label.Source=Nguồn
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=Resend
+net.tip.Resend=Send the request again
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=Vô hiệu Bộ đệm Trình duyệt
+net.option.tip.Disable_Browser_Cache=Disable the browser's HTTP cache
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=Show Paint Events
+net.option.tip.Show_Paint_Events=Show MozAfterPaint events as green lines inside the timeline
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=Show BFCache Responses
+net.option.tip.Show_BFCache_Responses=Also show responses from Back-Forward Cache
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=Ngắt trên Tiếp theo
+script.Disable_Break_On_Next=Disable Break On Next
+ShowHttpHeaders=Hiện đầu đề HTTP
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%1$S request;%1$S requests
+FromCache=từ bộ đệm
+StopLoading=Dừng tải
+net.tip.Stop_Loading=Stop loading the request
+LargeData=(Dữ liệu rất lớn)
+ShowComputedStyle=Hiện Style Đã tính toán
+StyleGroup-text=Chữ
+StyleGroup-background=Nền
+StyleGroup-box=Kiểu mẫu Hộp
+StyleGroup-layout=Bố cục
+StyleGroup-other=Khác
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=Chép màu
+css.tip.Copy_Color=Copy the color to the clipboard
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=Chép địa chỉ hình ảnh
+css.tip.Copy_Image_Location=Copy the URL of the image to the clipboard
+OpenImageInNewTab=Mở hình ảnh trong Thẻ Mới
+css.tip.Open_Image_In_New_Tab=Open the image in a new browser tab
+# LOCALIZATION NOTE (callstack.option.Omit_Object_Path_Stack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=Bỏ qua Stack Thanh công cụ
+callstack.option.tip.Omit_Object_Path_Stack=Do not display the object path stack
+Load_Original_Source=Load Original Source
+css.tip.Load_Original_Source=Discard the changes and load the original CSS
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=Copy Rule Declaration
+css.tip.Copy_Rule_Declaration=Copy the rule including all its properties to the clipboard
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=Copy Style Declaration
+css.tip.Copy_Style_Declaration=Copy the rule's properties to the clipboard
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%1$S Error;%1$S Errors
+moduleManager.title=Bảng %S đang bị tắt
+moduleManager.desc3=Dùng trình đơn ngữ cảnh trên biểu tượng Firebug ở thanh trạng thái để bật và tắt tất cả các bảng. Dùng trình đơn nhỏ của thẻ bảng cho từng bộ điều khiển bảng riêng:
+moduleManager.Enable=Enable
+Suspend_Firebug=Hoãn Firebug
+Resume_Firebug=Tiếp tục Firebug
+Reset_Panels_To_Disabled=Thiết lập lại Bảng về trạng thái Vô hiệu
+Open_Console=Mở bảng kiểm soát
+Open_Console_Tooltip=Mở Bảng kiểm soát Truy dấu cho Firebug.
+Scope_Chain=Mắt xích Scope
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=Với
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=Lần gọi
+# Window: the scope inside of a Javascript window object.
+Window_Scope=Cửa sổ
+Logs=Lưu kí
+Options=Tùy chọn
+Copy_Stack=Chép Stack
+Copy Exception=Chép ngoại lệ
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=Đang chặn
+requestinfo.Resolving=Tra cứu DNS
+requestinfo.Connecting=Kết nối
+requestinfo.Sending=Đang gửi
+requestinfo.Waiting=Đang đợi
+requestinfo.Receiving=Đang nhận
+requestinfo.ContentLoad=\'DOMContentLoaded\' (sự kiện)
+requestinfo.WindowLoad=\'nạp\' (sự kiện)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=Request start time since the beginning
+requestinfo.phases.label=Request phases start and elapsed time relative to the request start:
+requestinfo.timings.label=Event timing relative to the request start:
+search.Firebug_Search=Tìm kiếm Firebug
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=Tiếp
+search.tip.Next=Search for the next match
+search.Previous=Trước
+search.tip.Previous=Search for the previous match
+search.Case_Sensitive=Bắt buộc Phân biệt HOA-thường
+search.tip.Case_Sensitive=Consider the case when searching
+search.Case_Insensitive=Case Insensitive
+search.tip.Case_Insensitive=Ignore the case when searching
+search.Multiple_Files=Nhiều tập tin
+search.tip.Multiple_Files=Search inside all files related to this panel
+search.Use_Regular_Expression=Use Regular Expression
+search.tip.Use_Regular_Expression=Interpret the entered string as a regular expression when searching
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS Selector
+search.net.Headers=Đầu đề
+search.net.Parameters=Tham số
+search.net.Response_Bodies=Nội dung Phản hồi
+search.net.tip.Response_Bodies=Search also in response bodies
+firebug.console.Persist=Đeo bám
+firebug.console.Do_Not_Clear_On_Reload2=Do not clear the panel on page reload
+firebug.console.Show_All_Log_Entries=Show all log entries
+firebug.console.Errors=Errors
+firebug.console.Filter_by_Errors=Filter by errors
+firebug.console.Warnings=Warnings
+firebug.console.Filter_by_Warnings=Filter by warnings
+firebug.console.Info=Info
+firebug.console.Filter_by_Info=Filter by info
+firebug.console.Debug_Info=Debug Info
+firebug.console.Filter_by_Debug_Info=Filter by debug info
+firebug.Deactivate_Firebug=Deactivate Firebug
+firebug.tip.Deactivate_Firebug=Deactivate Firebug for the current website
+firebug.ShowFirebug=Mở Firebug
+firebug.menu.tip.Open_Firebug=Show the Firebug UI
+firebug.HideFirebug=Hide Firebug
+firebug.menu.tip.Minimize_Firebug=Minimize Firebug, but keep it active
+firebug.FocusFirebug=Focus Firebug Window
+firebug.menu.tip.Focus_Firebug=Focus Detached Firebug Window
+firebug.menu.Enable_All_Panels=Bật Tất cả Các bảng
+firebug.menu.tip.Enable_All_Panels=Enable all activable panels
+firebug.menu.Disable_All_Panels=Vô hiệu Tất cả Các bảng
+firebug.menu.tip.Disable_All_Panels=Disable all activable panels
+firebug.menu.Customize_shortcuts=Tùy biến Phím tắt
+firebug.menu.tip.Customize_Shortcuts=Customize Firebug's internal key bindings
+firebug.Options=Tùy chọn
+firebug.menu.tip.Options=Global Firebug preferences
+firebug.menu.Enable_Accessibility_Enhancements=Bật Cải tiến Truy cập
+firebug.menu.tip.Enable_Accessibility_Enhancements=Enable full control via keyboard and other accessibility enhancements
+firebug.menu.Activate_Same_Origin_URLs2=Activate For Same Origin URLs
+firebug.menu.tip.Activate_Same_Origin_URLs=Activate Firebug for URLs matching the same origin policy
+firebug.menu.Reset_All_Firebug_Options=Thiết lập lại Tất cả Tùy chọn Firebug
+firebug.menu.tip.Reset_All_Firebug_Options=Reset all Firebug preferences to their default values
+firebug.menu.Firebug_Online=Firebug Trực tuyến
+firebug.menu.tip.Firebug_Online=Websites related to Firebug
+firebug.menu.Extensions=Firebug Extensions...
+firebug.menu.tip.Extensions=Download and Install Firebug Extensions
+firebug.menu.Vertical_Panels=Vertical Panels
+firebug.menu.tip.Vertical_Panels=Toggle the layout of the Firebug main and side panels
+firebug.menu.Show_Info_Tips=Show Info Tips
+firebug.menu.tip.Show_Info_Tips=Show popups with information about the hovered element
+firebug.Show_Error_Count=Show Error Count
+firebug.menu.tip.Show_Error_Count=Show the number of errors logged inside the console
+firebug.TextSize=Cỡ chữ
+firebug.menu.tip.Text_Size=Change the text size used in Firebug
+firebug.IncreaseTextSize=Tăng cỡ chữ
+firebug.menu.tip.Increase_Text_Size=Increase the text sizes used in Firebug
+firebug.DecreaseTextSize=Giảm cỡ chữ
+firebug.menu.tip.Decrease_Text_Size=Decrease the text sizes used in Firebug
+firebug.NormalTextSize=Cỡ chữ thông thường
+firebug.menu.tip.Normal_Text_Size=Reset the text size used in Firebug to the default
+firebug.Website=Trang web Firebug...
+firebug.menu.tip.Website=Open the official Firebug website
+firebug.help=Help...
+firebug.menu.tip.help=Open the page with links to pages explaining Firebug
+firebug.Documentation=Tài liệu...
+firebug.menu.tip.Documentation=Open the documentation about Firebug
+firebug.KeyShortcuts=Phím tắt...
+firebug.menu.tip.Key_Shortcuts=Open the list of mouse and keyboard shortcuts available in Firebug
+firebug.Forums=Nhóm thảo luận...
+firebug.menu.tip.Forums=Open the discussion group site
+firebug.Issues=Trình theo dõi Vấn đề...
+firebug.menu.tip.Issues=Open the issue tracker site
+firebug.Donate=Đóng góp...
+firebug.menu.tip.Donate=Open the contribution site
+firebug.About=Giới thiệu...
+firebug.menu.tip.About=Information about Firebug
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=Profile JavaScript execution time
+firebug.Search=Tìm kiếm
+firebug.menu.tip.Search=Set focus to the search field
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=Nhập lại Lệnh
+firebug.shortcut.tip.reenterCommand=Re-enter the last command into the Command Line
+firebug.shortcut.toggleInspecting.label=Bật tắt việc Thăm dò
+firebug.shortcut.tip.toggleInspecting=Enable/disable the Inspector
+firebug.shortcut.toggleQuickInfoBox.label=Bật tắt Hộp thông tin nhanh
+firebug.shortcut.tip.toggleQuickInfoBox=Enable/disable the display of a panel with information about the currently inspected element
+firebug.shortcut.toggleProfiling.label=Bật tắt việc Ghi hồ sơ
+firebug.shortcut.tip.toggleProfiling=Enable/disable the JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=Chú ý vào Dòng lệnh
+firebug.shortcut.tip.focusCommandLine=Open Firebug and set the focus to the Command Line / toggle the Command Line Popup
+firebug.shortcut.focusFirebugSearch.label=Chú ý vào Tìm kiếm Firebug
+firebug.shortcut.tip.focusFirebugSearch=Set the focus to the search field
+firebug.shortcut.focusWatchEditor.label=Chú ý vào Trình chỉnh sửa Watch
+firebug.shortcut.tip.focusWatchEditor=Switch to the Script panel and set the focus to the field for entering a new watch expression
+firebug.shortcut.focusLocation.label=Chú ý vào Địa chỉ
+firebug.shortcut.tip.focusLocation=Open the Location Menu
+firebug.shortcut.nextObject.label=Đối tượng Tiếp
+firebug.shortcut.tip.nextObject=Select the next object in the element path of a panel
+firebug.shortcut.previousObject.label=Đối tượng Trước
+firebug.shortcut.tip.previousObject=Select the previous object in the element path of a panel
+firebug.shortcut.customizeFBKeys.label=Tùy biến Phím Firebug
+firebug.shortcut.tip.customizeFBKeys=Open the Firebug Shortcut Bindings dialog
+firebug.shortcut.detachFirebug.label=Mở Firebug trong Cửa Sổ Mới
+firebug.shortcut.tip.detachFirebug=Detach Firebug into its own window
+firebug.shortcut.leftFirebugTab.label=Hoán chuyển sang bảng Firebug bên trái
+firebug.shortcut.tip.leftFirebugTab=Switch to the Firebug panel to the left
+firebug.shortcut.rightFirebugTab.label=Hoán chuyển sang bảng Firebug bên phải
+firebug.shortcut.tip.rightFirebugTab=Switch to the Firebug panel to the right
+firebug.shortcut.toggleFirebug.label=Mở Firebug
+firebug.shortcut.tip.toggleFirebug=Open/Minimize Firebug UI
+firebug.shortcut.closeFirebug.label=Deactivate Firebug
+firebug.shortcut.tip.closeFirebug=Deactivate Firebug for the current website
+firebug.shortcut.previousFirebugTab.label=The Firebug Trước
+firebug.shortcut.tip.previousFirebugTab=Switch to the previously selected Firebug panel
+firebug.shortcut.clearConsole.label=Xóa trắng Bảng kiểm soát
+firebug.shortcut.tip.clearConsole=Remove all logs from the console
+firebug.shortcut.openTraceConsole.label=Mở Bảng kiểm soát Dấu vết
+firebug.shortcut.tip.openTraceConsole=Open the FBTrace Console
+firebug.shortcut.navBack.label=Go Back
+firebug.shortcut.tip.navBack=Switch to the previous panel or location list item of the navigation history
+firebug.shortcut.navForward.label=Go Forward
+firebug.shortcut.tip.navForward=Switch to the next panel or location list item of the navigation history
+firebug.shortcut.increaseTextSize.label=Increase Text Size
+firebug.shortcut.tip.increaseTextSize=Increase the text sizes used in Firebug
+firebug.shortcut.decreaseTextSize.label=Decrease Text Size
+firebug.shortcut.tip.decreaseTextSize=Decrease the text sizes used in Firebug
+firebug.shortcut.normalTextSize.label=Normal Text Size
+firebug.shortcut.tip.normalTextSize=Reset the text sizes used in Firebug to the default
+firebug.shortcut.help.label=Open help
+firebug.shortcut.tip.help=Open the page answering the frequently asked questions
+firebug.shortcut.toggleBreakOn.label=Toggle Break On ...
+firebug.shortcut.tip.toggleBreakOn=Enable/disable stopping the script execution on specific events occurring inside a panel
+firebug.panel_selector=Panel Selector
+customizeShortcuts=Kết hợp Phím tắt Firebug
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=công cụ bảng
+a11y.labels.firebug_panels=bảng Firebug
+a11y.labels.firebug_side_panels=bảng lề Firebug
+a11y.labels.firebug_window=cửa sổ firebug
+a11y.labels.firebug_status=trạng thái firebug
+a11y.labels.reset=thiết lập lại
+a11y.labels.reset_shortcut=thiết lập lại phím tắt %S
+aria.labels.inactive_panel=bảng không hoạt động
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=dòng log
+a11y.labels.call_stack=gọi stack
+a11y.labels.document_structure=document structure
+a11y.labels.title_panel=bảng %S
+a11y.labels.title_side_panel=bảng lề %S
+a11y.labels.cached=được đệm
+aria.labels.stack_trace=dấu stack
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=khoảng đệm
+a11y.layout.border=biên
+a11y.layout.margin=lề
+a11y.layout.position=vị trí
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=lề trên
+a11y.layout.margin_right=lề phải
+a11y.layout.margin_bottom=lề dưới
+a11y.layout.margin_left=lề trái
+a11y.layout.border_top=biên trên
+a11y.layout.border_right=biên phải
+a11y.layout.border_bottom=biên dưới
+a11y.layout.border_left=biên trái
+a11y.layout.padding_top=khoảng đệm trên
+a11y.layout.padding_right=khoảng đệm phải
+a11y.layout.padding_bottom=khoảng đệm dưới
+a11y.layout.padding_left=khoảng đệm trái
+a11y.layout.top=trên
+a11y.layout.right=phải
+a11y.layout.bottom=dưới
+a11y.layout.left=trái
+a11y.layout.width=rộng
+a11y.layout.height=cao
+a11y.layout.size=kích cỡ
+a11y.layout.z-index=chỉ mục z
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=ấn Enter rồi Tab để chỉnh sửa từng giá trị riêng biệt
+a11y.labels.style_rules=quy tắc style
+aria.labels.inherited_style_rules=quy tắc style được thừa hưởng
+a11y.labels.computed_styles=style được tính toán
+a11y.labels.dom_properties=thuộc tính DOM
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=trình soạn thảo nội trú
+a11y.labels.value_for_attribute_in_element=giá trị cho thuộc tính %S trong phần tử %S
+a11y.labels.attribute_for_element=thuộc tính cho phần tử %S
+a11y.labels.text_contents_for_element=nội dung văn bản cho phần tử %S
+a11y.labels.defined_in_file=định nghĩa trong %S
+a11y.labels.declarations_for_selector=khai báo style cho selector \"%S\"
+a11y.labels.property_for_selector=thuộc tính CSS cho selector: %S
+a11y.labels.value_property_in_selector=giá trị thuộc tính %S trong selector %S
+a11y.labels.css_selector=CSS selector
+a11y.labels.source_code_for_file=mã nguồn cho tập tin %S
+a11y.labels.press_enter_to_add_new_watch_expression=ấn Enter để thêm một biểu thức theo dõi mới
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=ghi đè
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=có điểm ngắt điều kiện
+a11y.updates.has_disabled_break_point=đã vô hiệu hóa điểm ngắt
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=Script bị hoãn trên dòng %S trong %S, tập tin %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=tìm thấy kết quả cho %S trong %S dòng log
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=tìm thấy kết quả cho %S trên dòng %S trong %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=tìm thấy kết quả cho %S trong phần tử %S tại đường dẫn %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=tìm thấy kết quả cho %S trong thuộc tính %S=%S của phần tử %S tại đường dẫn %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=tìm thấy kết quả cho %S trong nội dung văn bản: %S của phần tử %S tại đường dẫn %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=tìm thấy kết quả cho %S trong selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=kết quả khớp cho \"%S\" trong khai báo style %S trong selector %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=tìm thấy kết quả cho %S trong thuộc tính DOM %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=tìm thấy kết quả cho %S trong %S, %S : %S;
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=tìm thấy kết quả cho %S trong dòng tóm tắt mạng: %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=không tìm thấy kết quả cho \"%S\"
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=Bạn có chắc chắn là mình muốn thiết lập lại tất cả tùy chọn Firebug về tình trạng mặc định không?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=Your existing CSS edits will be discarded.\nAre you sure you want to edit the source?
+# Console messages
+warning.Console_must_be_enabled=Bảng kiểm soát phải được bật
+warning.Command_line_blocked?=Dòng lệnh bị chặn?
+warning.dollar_change=The console command line function $() has changed meaning from $=getElementById(id) to $=querySelector(selector). You might try $("#%S") instead.
+message.Reload_to_activate_window_console=Nạp lại để kích hoạt bảng kiểm soát cửa sổ
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=Reload the page to get source for
+message.The_resource_from_this_URL_is_not_text=Tài nguyên từ URL này không phải là văn bản
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=Go back to this panel
+firebug.history.Stay_on_this_panel=Stay on this panel
+firebug.history.Go_forward_to_this_panel=Go forward to this panel
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=Go back
+firebug.history.Go_forward=Go forward
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=Script Panel was inactive during page load
+script.suggestion.inactive_during_page_load2=<a>Reload</a> to see all sources
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript is not enabled
+script.suggestion.javascript_not_enabled=See Firefox > Tools > Options > Content > Enable Javascript
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=Enable JavaScript and Refresh
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=All scripts were filtered
+script.suggestion.all_scripts_filtered=See the script filter setting in the panel toolbar
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug user agent internal files. See <a>issue 5110</a> for the reason.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=No Javascript on this page
+script.suggestion.no_javascript2=If <script> tags have a "type" attribute, it should equal "text/javascript" or "application/javascript". Also scripts must be parsable (syntactically correct).
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Debugger is already active
+script.suggestion.debugger_active=The debugger is currently halted at a breakpoint on another page.
+script.button.Go_to_that_page=Go to that page
+script.warning.debugger_not_activated=Debugger not activated
+script.suggestion.debugger_not_activated=Debugger not activated
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=Đóng
+firebug.View=Hiển thị
+firebug.Help=Trợ giúp
+firebug.Run=Chạy
+firebug.Copy=Chép
+firebug.History=History
+firebug.Run_the_entered_command=Run the entered command
+firebug.Clear_the_Command_Editor=Clear the Command Editor
+firebug.Copy_the_script_as_a_bookmarklet=Copy the script as a bookmarklet
+firebug.Insert_a_previously_entered_command=Insert a previously entered command
+firebug.AlwaysOpenInWindow=Luôn Mở trong Cửa Sổ Mới
+firebug.OpenWith=Mở bằng Trình soạn thảo
+firebug.menu.tip.Open_With=Open the content in an external editor
+firebug.Permissions=Trang...
+firebug.Configure_Editors=Configure Editors
+script.tip.Script_Type=Filter on script type
+script.tip.Script_Filter_Static=Just display scripts loaded together with the page
+script.tip.Script_Filter_Evals=Display scripts loaded together with the page and scripts created via eval()
+script.tip.Script_Filter_Events=Display scripts loaded together with the page, scripts created via eval() and event listeners
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=Rerun the current function call stack
+script.Continue=Continue
+script.tip.Continue=Continue the JavaScript execution
+script.Step_Over=Step Over
+script.tip.Step_Over=Execute the next command
+script.Step_Into=Step Into
+script.tip.Step_Into=Execute the next command and jump into functions
+script.Step_Out=Step Out
+script.tip.Step_Out=Execute the rest of the function's body and returns to its caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=Execute the JavaScript until the specified line
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=Thăm dò
+firebug.InspectElement=Thăm dò Phần tử
+firebug.InspectElementWithFirebug=Inspect Element with Firebug
+firebug.BreakOnErrors=Ngắt khi Gặp lỗi
+firebug.InspectTooltip=Nhấn lên một phần tử trong trang để thăm dò
+firebug.EditHTMLTooltip=Chỉnh sửa HTML này
+firebug.Profile=Hồ sơ
+firebug.Clear=Xóa trắng
+firebug.ClearConsole=Xóa trắng Bảng kiểm soát
+firebug.ClearTooltip=Xóa trắng bảng kiểm soát
+firebug.All=Tất cả
+firebug.Images=Hình ảnh
+firebug.Flash=Flash
+# editors.dtd
+editors.Configured_Firebug_Editors=Configured Firebug Editors
+editors.Editor=Editor
+editors.Executable=Executable
+editors.Launch_Arguments=Launch Arguments
+editors.Add=Add
+editors.Remove=Remove
+editors.Change=Change
+editors.Move_Up=Move Up
+editors.Close=Close
+editors.Browse=Browse...
+changeEditor.Editor_Configuration=Editor Configuration
+changeEditor.Name=Tên:
+changeEditor.Executable=Thực thi:
+changeEditor.CmdLine=Tham số:
+changeEditor.Supplied_arguments=Arguments supplied by Firebug:
+changeEditor.URL_of_file=URL of the file (if %url is not present, %file will be added by default)
+changeEditor.Path_to_local_file=Path to the local file (or to the temporary copy)
+changeEditor.Line_number=Line number (if available)
+changeEditor.Invalid_Application_Path=Invalid Application Path
+changeEditor.Application_does_not_exist=The specified application doesn't exist!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=Chỉnh sửa
+firebug.css.sourceEdit=Source Edit
+firebug.css.sourceEdit.tooltip=Edit stylesheet source as loaded by the browser
+firebug.css.liveEdit=Live Edit
+firebug.css.liveEdit.tooltip=Edit CSS extracted from the browser
+firebug.EditCSSTooltip=Chỉnh sửa stylesheet này
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=Sites are not remembered in Private Browsing Mode
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=Show Break Notifications
+firebug.breakpoint.tip.Show_Break_Notifications=Show a notification box, when a Break On ... feature or the debugger; keyword stopped the JavaScript execution
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=You can disable/enable break notifications in <a>panel's tab menu</a>.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=Clicking the 'Disable' button overrides 'debugger' with a disabled breakpoint.
+firebug.bon.tooltip.disableDebuggerKeyword2=Creates a disabled breakpoint
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(the Script panel must be enabled to use this feature)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=There are no child objects
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=more
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=Circular reference
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=%1$S item in Storage;%1$S items in Storage
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=Object Properties
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(no completions)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=The URL object has been most likely revoked using revokeObjectURL method.
+firebug.failedToPreviewImageURL=Failed to load the given URL
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler Started
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Objects Added While Profiling
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler Results
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=Entire Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(nothing to output)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(an empty string)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=Firecookie add-on is detected. This add-on has been integrated with Firebug 1.10 by default. To avoid a collision you need to uninstall Firecookie. \n\nYou must restart to finish uninstalling the add-on.
+cookies.legacy.uninstall=Uninstall
+cookies.legacy.uninstall_and_restart=Uninstall && Restart
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+console.cmd.help_title=Command Line API
+console.cmd.help_title_desc=Press F1 to open online Firebug help
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=Returns a single element with the given id.
+console.cmd.help.$$=Returns an array of elements that match the given CSS selector.
+console.cmd.help.$x=Returns an array of elements that match the given XPath expression.
+console.cmd.help.dir=Prints an interactive listing of all properties of the object. This looks identical to the view inside the DOM panel.
+console.cmd.help.dirxml=Prints the XML source tree of an HTML or XML element. This looks identical to the view inside the HTML panel. You can click on any node to inspect it in the HTML panel.
+console.cmd.help.cd=By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.
+console.cmd.help.clear=Clears the console.
+console.cmd.help.copy=Copies the given parameter to the clipboard. This can be a return value of a function or an object.
+console.cmd.help.inspect=Inspects an object in the most suitable panel, or the panel identified by the optional second argument. The available panel names are "html", "stylesheet", "script", and "dom".
+console.cmd.help.keys=Returns an array containing the names of all properties of the object.
+console.cmd.help.values=Returns an array containing the values of all properties of the object.
+console.cmd.help.debug=Adds a breakpoint on the first line of a function.
+console.cmd.help.undebug=Removes the breakpoint on the first line of a function.
+console.cmd.help.monitor=Turns on logging for all calls to a function.
+console.cmd.help.unmonitor=Turns off logging for all calls to a function.
+console.cmd.help.monitorEvents=Turns on logging for all events dispatched to an object. The optional second argument may define specific events or event types to log. The available event types are "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", and "clipboard".
+console.cmd.help.unmonitorEvents=Turns off logging for all events dispatched to an object. The optional second argument may define specific events or event families, for which to turn logging off.
+console.cmd.help.profile=Turns on the JavaScript profiler. The optional second argument contains the text to be printed in the header of the profile report.
+console.cmd.help.profileEnd=Turns off the JavaScript profiler and prints its report.
+console.cmd.help.table=Allows to log provided data using tabular layout. The method takes one required parameter that represents table-like data (array of arrays or list of objects). The optional second parameter can be used to specify columns and/or properties to be logged.
+console.cmd.help.$0=Represents the last element selected via the Inspector.
+console.cmd.help.$1=Represents the second last element selected via the Inspector.
+console.cmd.help.$n=Returns one of the 5 last elements selected via the Inspector. This method takes one required parameter, which represents the index of the element (starting at 0).
+console.cmd.help.help=Displays help for all available commands.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=Help page for this command is not available.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+css.selector.noSelection=Type custom selector or right click CSS rule and pick <b>Get Matching Elements</b>.
+css.selector.noSelectionResults=No matching elements
+css.selector.selectorError=Selection failed:
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+css.selector.Selection=Elements
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selector=Displays elements matching a CSS selector
+css.selector.TryASelector=Try a selector...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=Get Matching Elements
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+css.selector.unknownErrorMessage=Failed to execute specified selector string
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+perftiming.events.label=Event timing relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=Detailed timing
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=Time when server connection is finished.
+perftiming.connectStart=Time just before server connection begins.
+perftiming.domComplete=Time just before document readiness completes.
+perftiming.domContentLoadedEventEnd=Time after DOMContentLoaded event completes.
+perftiming.domContentLoadedEventStart=Time just before DOMContentLoaded starts.
+perftiming.domInteractive=Time just before readiness set to interactive.
+perftiming.domLoading=Time just before readiness set to loading.
+perftiming.domainLookupEnd=Time after domain name lookup.
+perftiming.domainLookupStart=Time just before domain name lookup.
+perftiming.fetchStart=Time when the resource starts being fetched.
+perftiming.loadEventEnd=Time when the load event is complete.
+perftiming.loadEventStart=Time just before the load event is fired.
+perftiming.navigationStart=Time after the previous document begins unload.
+perftiming.redirectCount=Number of redirects since the last non-redirect.
+perftiming.redirectEnd=Time after last redirect response ends.
+perftiming.redirectStart=Time of fetch that initiated a redirect.
+perftiming.requestStart=Time just before a server request.
+perftiming.responseEnd=Time after the end of a response or connection.
+perftiming.responseStart=Time just before the start of a response.
+perftiming.unloadEventEnd=Time after the previous document is unloaded.
+perftiming.unloadEventStart=Time just before the unload event is fired.
diff --git a/locale/zh-CN/cookies.properties b/locale/zh-CN/cookies.properties
index 469b886..5972fb6 100644
--- a/locale/zh-CN/cookies.properties
+++ b/locale/zh-CN/cookies.properties
@@ -1,276 +1,276 @@
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-cookies.Panel=Cookies
-panel.tip.cookies=用于查看和调整 cookie
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.Session=会话
-# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
-# Label used for cookies permission.
-cookies.AllowGlobally=接受所有站点的 cookie
-cookies.tip.AllowGlobally=默认接受或阻止所有站点的 cookie
-# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
-# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
-# If checked, various cookies events are displayed in Firebug's Console panel.
-cookies.showCookieEvents=显示 cookie 事件
-cookies.tip.showCookieEvents=在控制台中记录 cookie 的改变、删除等事件
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-# xxxHonza: currently not displayed in the UI
-cookies.clearWhenDeny=拒绝时清除 cookie
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-# (right click on a cookie in the Cookies panel).
-cookies.Cut=剪切
-cookies.Copy=复制
-cookies.CopyAll=复制所有 cookie
-cookies.Paste=粘贴
-cookies.Delete=删除
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-# Clears cookie value, but not removes the cookie itself.
-cookies.Clear_Value=清除内容
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-# a dialog for editing clicked cookie.
-cookies.Edit=编辑
-cookies.Accept=接受
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-# (visibility and size of all columns)
-cookies.header.Reset_Header=重置表头
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-cookies.Intro=你可以指定允许或不允许哪些站点使用 cookie。请输入站点的准确地址然后\n单击“阻止”、“会话中允许”或者“允许”。
-cookies.ExceptionsTitle=例外 - Cookie
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-# examples: Enable Cookies panel for www.softwareishard.com
-cookies.modulemanager.description=用于监测 cookie
-cookies.HostEnable=为 %S 启用 Cookies 面板
-cookies.HostDisable=为 %S 禁用 Cookies 面板
-cookies.Permissions=启用或禁用 Cookies 面板
-cookies.PermissionsIntro=选择为站点启用或者禁用 Cookies 面板。
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-cookies.SystemPages=系统页面
-cookies.LocalFiles=本地文件
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
-# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.removeall=你确定要移除列表中的所有 cookie?
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-# all session cookies are going to be deleted
-cookies.confirm.removeallsession=你确定要移除列表中的所有会话 cookie?
-# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
-# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
-cookies.confirm.Remove_All_From_Host=你确定要移除 %S 下的所有 cookie?
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Confirm_cookie_removal=移除 cookie 前确认
-cookies.tip.Confirm_cookie_removal=如果选中,在移除列表中所有的 cookie 前会显示确认对话框。
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeall.tooltip=移除列表中的所有 cookie。
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.Remove_Session_Cookies=移除会话 cookie
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.removeallsession.tooltip=移除列表中的所有会话 cookie。
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-cookies.createcookie.tooltip=为 %S 新建 cookie
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.createcookie.defaultvalue=内容
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-cookies.perm.manage.tooltip=管理 %S 的 cookie 设置
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiescleared=所有 cookie 已经被移除。
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.sessioncookiescleared=所有会话 cookie 已经被移除。
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookiesrejected=被拒绝的 cookie:
-cookies.console.nocookiesreceived=没有收到 cookie
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.console.cookie=Cookie
-cookies.console.deleted=已经被删除
-cookies.console.added=已经被添加
-cookies.console.changed=已经被改变
-cookies.console.cleared=已经被清除
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-# xxxHonza: not used in the UI now.
-cookies.domain.label=域
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.secure.label=安全
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.status.accepted=被接受的
-cookies.status.downgraded=被降级的
-cookies.status.flagged=被标记的
-cookies.status.rejected=被拒绝的
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-cookies.info.valuetab.label=内容
-cookies.info.rawdatatab.Raw_Data=源数据
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.default.session=默认(接受会话 cookie)
-cookies.default.thirdPartySession=默认(接受第三方会话 cookie)
-cookies.default.thirdParty=默认(接受第三方 cookie)
-cookies.default.allow=默认(接受 cookie)
-cookies.default.deny=默认(拒绝 cookie)
-cookies.default.warn=默认(在接受 cookie 前警告)
-cookies.default.limitThirdParty=默认 (限制第三方 cookie)
-cookies.host.session=接受来自 %S 的会话 cookie
-cookies.host.accept=接受来自 %S 的 cookie
-cookies.host.reject=拒绝来自 %S 的 cookie
-cookies.host.limitThirdParty=限制来自 %S 的第三方 cookie
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-cookies.edit.invalidname=Cookie 的名称无效。
-cookies.edit.invalidhost=Cookie 的主机无效。
-cookies.edit.invalidpath=Cookie 的路径无效。
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
-# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
-# cookies.header.security, cookies.header.status, cookies.header.httponly,
-# cookies.header.maxAge):
-# Column labels used in the cookie header.
-cookies.header.name=名称
-cookies.header.value=内容
-cookies.header.rawValue=原始内容
-cookies.header.domain=域
-cookies.header.size=大小
-cookies.header.rawSize=原始大小
-cookies.header.path=路径
-cookies.header.expires=过期时间
-cookies.header.security=安全
-cookies.header.httponly=仅 Http
-cookies.header.maxAge=最长有效期
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
-# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
-# cookies.header.httponly.tooltip, cookies.header.maxAge.tooltip):
-# Column tooltips used in the cookie header.
-cookies.header.name.tooltip=Cookie 名称
-cookies.header.value.tooltip=Cookie 保存的内容
-cookies.header.rawValue.tooltip=Cookie 保存的原始内容
-cookies.header.domain.tooltip=保存该 cookie 的域
-cookies.header.rawSize.tooltip=Cookie 原始大小
-cookies.header.size.tooltip=Cookie 大小
-cookies.header.path.tooltip=Cookie 活动的路径
-cookies.header.expires.tooltip=Cookie 的过期时间
-cookies.header.security.tooltip=显示是否为安全 cookie
-cookies.header.httponly.tooltip=显示是否为仅 HTTP 的 cookie
-cookies.header.maxAge.tooltip=保存该 cookie 的最长时间
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies,
-# cookies.netinfo.deleted.tooltip):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-# These labels are used within this tab.
-cookies.netinfo.Received_Cookies=已收到的 cookie
-cookies.netinfo.Sent_Cookies=已发送的 cookie
-cookies.netinfo.deleted.tooltip=Cookie 被该响应设置为过期
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-# xxxHonza: Not implemented yet.
-cookies.Path_Filter=路径过滤器
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-# tooltips for exporting menus available under Cookies menus.
-cookies.export.Export_All_Cookies=导出所有 cookie …
-cookies.export.Export_All_Cookies_Tooltip=导出浏览器的所有 cookie 至 cookie.txt 文件
-cookies.export.Export_For_Site=导出本站点的 cookie …
-cookies.export.Export_For_Site_Tooltip=导出 %S 的 cookie 至 cookie.txt 文件
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-# never happen.
-cookies.message.There_is_no_active_page=没有活动的页面
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-# added or removed.
-cookies.Break_On_Cookie=在 cookie 改变时中断
-cookies.Disable_Break_On_Cookie=停用在 cookie 改变时中断
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-# displayed in Breakpoints panel (in the Script panel)
-cookies.Cookie_Breakpoints=Cookie 断点
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-# examples: Break on 'MyCookie' when removed or changed.
-cookies.menu.Break_On_Cookie=在 cookie "%S" 处中断
-cookies.menu.tooltip.Break_On_Cookie=在 "%S" 被移除或改变时中断
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-# used when user right clicks on a cookie with existing breakpoint.
-cookies.menu.Edit_Breakpoint_Condition=编辑断点条件
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.Breakpoint_condition_evaluation_fails=评估断点条件失败
-# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
-cookies.RemoveAll=移除所有 cookie
-cookies.Create=新建 cookie
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-# menu on Cookies toolbar.
-cookies.Tools=工具
-cookies.ToolsTooltip=工具
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-cookies.ViewAll=显示所有 cookie…
-cookies.ViewAllTooltip=打开 cookie 管理器
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-# dialog for setting web site cookie permissions.
-cookies.ViewExceptions=例外…
-cookies.ViewExceptionsTooltip=查看例外网站列表
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-cookies.Filter=过滤器
-cookies.FilterTooltip=按给定选项过滤 cookie 列表。
-cookies.filter.byPath=按当前路径过滤 cookie
-cookies.filter.byPathTooltip=仅显示在当前路径活动的 cookie。
-cookies.filter.showRejectedCookies=显示被拒绝的 cookie
-cookies.filter.showRejectedCookiesTooltip=在列表中显示已经被拒绝的 cookie。
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
-cookies.edit.title=编辑 cookie
-cookies.edit.name.label=名称:
-cookies.edit.domain.label=域:
-cookies.edit.path.label=路径:
-cookies.edit.expire.label=过期时间:
-cookies.edit.value.label=内容:
-cookies.edit.secure.label=安全 cookie
-cookies.edit.httponly.label=仅 HTTP
-cookies.edit.session.label=会话
-cookies.edit.urlEncode.label=URL 编码的内容
-# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
-# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=只显示 cookie 事件
-# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=移除所有 cookie
-cookie.sizeinfo.Size=大小
-cookie.sizeinfo.Raw_Size=原始大小
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+cookies.Panel=Cookies
+panel.tip.cookies=用于查看和调整 cookie
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.Session=会话
+# LOCALIZATION NOTE (cookies.AllowGlobally, cookies.tip.AllowGlobally):
+# Label used for cookies permission.
+cookies.AllowGlobally=接受所有站点的 cookie
+cookies.tip.AllowGlobally=默认接受或阻止所有站点的 cookie
+# LOCALIZATION NOTE (cookies.showCookieEvents, cookies.tip.showCookieEvents):
+# Label used in Cookies panel options menu (the small arrow next to the Cookies panel label).
+# If checked, various cookies events are displayed in Firebug's Console panel.
+cookies.showCookieEvents=显示 cookie 事件
+cookies.tip.showCookieEvents=在控制台中记录 cookie 的改变、删除等事件
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+# xxxHonza: currently not displayed in the UI
+cookies.clearWhenDeny=拒绝时清除 cookie
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+# (right click on a cookie in the Cookies panel).
+cookies.Cut=剪切
+cookies.Copy=复制
+cookies.CopyAll=复制所有 cookie
+cookies.Paste=粘贴
+cookies.Delete=删除
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+# Clears cookie value, but not removes the cookie itself.
+cookies.Clear_Value=清除内容
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+# a dialog for editing clicked cookie.
+cookies.Edit=编辑
+cookies.Accept=接受
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+# (visibility and size of all columns)
+cookies.header.Reset_Header=重置表头
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+cookies.Intro=你可以指定允许或不允许哪些站点使用 cookie。请输入站点的准确地址然后\n单击“阻止”、“会话中允许”或者“允许”。
+cookies.ExceptionsTitle=例外 - Cookie
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+# examples: Enable Cookies panel for www.softwareishard.com
+cookies.modulemanager.description=用于监测 cookie
+cookies.HostEnable=为 %S 启用 Cookies 面板
+cookies.HostDisable=为 %S 禁用 Cookies 面板
+cookies.Permissions=启用或禁用 Cookies 面板
+cookies.PermissionsIntro=选择为站点启用或者禁用 Cookies 面板。
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+cookies.SystemPages=系统页面
+cookies.LocalFiles=本地文件
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when all cookies
+# of a website are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.removeall=你确定要移除列表中的所有 cookie?
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+# all session cookies are going to be deleted
+cookies.confirm.removeallsession=你确定要移除列表中的所有会话 cookie?
+# LOCALIZATION NOTE (cookies.confirm.Remove_All_From_Host): Used in a confirmation dialog when cookies
+# from a specific host are going to be deleted (or permission is set do deny and cookies should be deleted).
+cookies.confirm.Remove_All_From_Host=你确定要移除 %S 下的所有 cookie?
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Confirm_cookie_removal=移除 cookie 前确认
+cookies.tip.Confirm_cookie_removal=如果选中,在移除列表中所有的 cookie 前会显示确认对话框。
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeall.tooltip=移除列表中的所有 cookie。
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.Remove_Session_Cookies=移除会话 cookie
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.removeallsession.tooltip=移除列表中的所有会话 cookie。
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+cookies.createcookie.tooltip=为 %S 新建 cookie
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.createcookie.defaultvalue=内容
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+cookies.perm.manage.tooltip=管理 %S 的 cookie 设置
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiescleared=所有 cookie 已经被移除。
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.sessioncookiescleared=所有会话 cookie 已经被移除。
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookiesrejected=被拒绝的 cookie:
+cookies.console.nocookiesreceived=没有收到 cookie
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.console.cookie=Cookie
+cookies.console.deleted=已经被删除
+cookies.console.added=已经被添加
+cookies.console.changed=已经被改变
+cookies.console.cleared=已经被清除
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+# xxxHonza: not used in the UI now.
+cookies.domain.label=域
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.secure.label=安全
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.status.accepted=被接受的
+cookies.status.downgraded=被降级的
+cookies.status.flagged=被标记的
+cookies.status.rejected=被拒绝的
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+cookies.info.valuetab.label=内容
+cookies.info.rawdatatab.Raw_Data=源数据
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.default.session=默认(接受会话 cookie)
+cookies.default.thirdPartySession=默认(接受第三方会话 cookie)
+cookies.default.thirdParty=默认(接受第三方 cookie)
+cookies.default.allow=默认(接受 cookie)
+cookies.default.deny=默认(拒绝 cookie)
+cookies.default.warn=默认(在接受 cookie 前警告)
+cookies.default.limitThirdParty=默认 (限制第三方 cookie)
+cookies.host.session=接受来自 %S 的会话 cookie
+cookies.host.accept=接受来自 %S 的 cookie
+cookies.host.reject=拒绝来自 %S 的 cookie
+cookies.host.limitThirdParty=限制来自 %S 的第三方 cookie
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+cookies.edit.invalidname=Cookie 的名称无效。
+cookies.edit.invalidhost=Cookie 的主机无效。
+cookies.edit.invalidpath=Cookie 的路径无效。
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.rawValue,
+# cookies.header.domain, cookies.header.size, cookies.header.path, cookies.header.expires,
+# cookies.header.security, cookies.header.status, cookies.header.httponly,
+# cookies.header.maxAge):
+# Column labels used in the cookie header.
+cookies.header.name=名称
+cookies.header.value=内容
+cookies.header.rawValue=原始内容
+cookies.header.domain=域
+cookies.header.size=大小
+cookies.header.rawSize=原始大小
+cookies.header.path=路径
+cookies.header.expires=过期时间
+cookies.header.security=安全
+cookies.header.httponly=仅 Http
+cookies.header.maxAge=最长有效期
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.rawValue.tooltip, cookies.header.domain.tooltip, cookies.header.size.tooltip,
+# cookies.header.path.tooltip, cookies.header.expires.tooltip, cookies.header.security.tooltip,
+# cookies.header.httponly.tooltip, cookies.header.maxAge.tooltip):
+# Column tooltips used in the cookie header.
+cookies.header.name.tooltip=Cookie 名称
+cookies.header.value.tooltip=Cookie 保存的内容
+cookies.header.rawValue.tooltip=Cookie 保存的原始内容
+cookies.header.domain.tooltip=保存该 cookie 的域
+cookies.header.rawSize.tooltip=Cookie 原始大小
+cookies.header.size.tooltip=Cookie 大小
+cookies.header.path.tooltip=Cookie 活动的路径
+cookies.header.expires.tooltip=Cookie 的过期时间
+cookies.header.security.tooltip=显示是否为安全 cookie
+cookies.header.httponly.tooltip=显示是否为仅 HTTP 的 cookie
+cookies.header.maxAge.tooltip=保存该 cookie 的最长时间
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies,
+# cookies.netinfo.deleted.tooltip):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+# These labels are used within this tab.
+cookies.netinfo.Received_Cookies=已收到的 cookie
+cookies.netinfo.Sent_Cookies=已发送的 cookie
+cookies.netinfo.deleted.tooltip=Cookie 被该响应设置为过期
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+# xxxHonza: Not implemented yet.
+cookies.Path_Filter=路径过滤器
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+# tooltips for exporting menus available under Cookies menus.
+cookies.export.Export_All_Cookies=导出所有 cookie …
+cookies.export.Export_All_Cookies_Tooltip=导出浏览器的所有 cookie 至 cookie.txt 文件
+cookies.export.Export_For_Site=导出本站点的 cookie …
+cookies.export.Export_For_Site_Tooltip=导出 %S 的 cookie 至 cookie.txt 文件
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+# never happen.
+cookies.message.There_is_no_active_page=没有活动的页面
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+# added or removed.
+cookies.Break_On_Cookie=在 cookie 改变时中断
+cookies.Disable_Break_On_Cookie=停用在 cookie 改变时中断
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+# displayed in Breakpoints panel (in the Script panel)
+cookies.Cookie_Breakpoints=Cookie 断点
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+# examples: Break on 'MyCookie' when removed or changed.
+cookies.menu.Break_On_Cookie=在 cookie "%S" 处中断
+cookies.menu.tooltip.Break_On_Cookie=在 "%S" 被移除或改变时中断
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+# used when user right clicks on a cookie with existing breakpoint.
+cookies.menu.Edit_Breakpoint_Condition=编辑断点条件
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.Breakpoint_condition_evaluation_fails=评估断点条件失败
+# DTD strings converted (main Firecokie UI, see cookiePanel.xul)
+cookies.RemoveAll=移除所有 cookie
+cookies.Create=新建 cookie
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+# menu on Cookies toolbar.
+cookies.Tools=工具
+cookies.ToolsTooltip=工具
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+cookies.ViewAll=显示所有 cookie…
+cookies.ViewAllTooltip=打开 cookie 管理器
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+# dialog for setting web site cookie permissions.
+cookies.ViewExceptions=例外…
+cookies.ViewExceptionsTooltip=查看例外网站列表
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+cookies.Filter=过滤器
+cookies.FilterTooltip=按给定选项过滤 cookie 列表。
+cookies.filter.byPath=按当前路径过滤 cookie
+cookies.filter.byPathTooltip=仅显示在当前路径活动的 cookie。
+cookies.filter.showRejectedCookies=显示被拒绝的 cookie
+cookies.filter.showRejectedCookiesTooltip=在列表中显示已经被拒绝的 cookie。
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+# cookies.edit.session.label, cookies.edit.urlEncode.label): Edit Cookie dialog UI
+cookies.edit.title=编辑 cookie
+cookies.edit.name.label=名称:
+cookies.edit.domain.label=域:
+cookies.edit.path.label=路径:
+cookies.edit.expire.label=过期时间:
+cookies.edit.value.label=内容:
+cookies.edit.secure.label=安全 cookie
+cookies.edit.httponly.label=仅 HTTP
+cookies.edit.session.label=会话
+cookies.edit.urlEncode.label=URL 编码的内容
+# LOCALIZATION NOTE (cookies.console.Cookies, cookies.console.Filter_By_Cookies)
+# Label and tooltip for a toolbar button displayed on the Console panel. Used for filtering.
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=只显示 cookie 事件
+# LOCALIZATION NOTE (firebug.shortcut.removeAllCookies.label) Label used by the
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=移除所有 cookie
+cookie.sizeinfo.Size=大小
+cookie.sizeinfo.Raw_Size=原始大小
diff --git a/locale/zh-CN/firebug-amo.properties b/locale/zh-CN/firebug-amo.properties
index 3d56c17..d0a9410 100644
--- a/locale/zh-CN/firebug-amo.properties
+++ b/locale/zh-CN/firebug-amo.properties
@@ -1,7 +1,7 @@
-# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
-# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
-# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
-# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
-firebug.amo.summary1.6=Firebug 为你的 Firefox 集成了浏览网页的同时随手可得的丰富开发工具。你可以对任何网页的 CSS、HTML 和 JavaScript 进行实时编辑、调试和监控…\n\nFirebug 1.6 仅支持 Firefox 3.6 或更高版本。
-firebug.amo.description=Firebug 为你的 Firefox 集成了浏览网页的同时随手可得的丰富开发工具。你可以对任何网页的 CSS、HTML 和 JavaScript 进行实时编辑、调试和监控。\n\n访问 Firebug 网站来查看文档、截屏以及讨论组(英语):http://getfirebug.com
-firebug.amo.developer.comments=如果你有任何问题,请阅读 Firebug FAQ(英语)。\n\nhttp://getfirebug.com/faq.html
+# LOCALIZATION NOTE (firebug.amo.summary, firebug.amo.description, firebug.amo.developer.comments):
+# These texts are used on Mozilla Add-on site: https://addons.mozilla.org/en-US/firefox/addon/1843
+# They are not direct part of Firebug extension and so, you can't see them in Firebug's UI.
+# Note that firebug.amo.summary must not exceed 250 characters (limitation by AMO site)
+firebug.amo.summary1.6=Firebug 为你的 Firefox 集成了浏览网页的同时随手可得的丰富开发工具。你可以对任何网页的 CSS、HTML 和 JavaScript 进行实时编辑、调试和监控…\n\nFirebug 1.6 仅支持 Firefox 3.6 或更高版本。
+firebug.amo.description=Firebug 为你的 Firefox 集成了浏览网页的同时随手可得的丰富开发工具。你可以对任何网页的 CSS、HTML 和 JavaScript 进行实时编辑、调试和监控。\n\n访问 Firebug 网站来查看文档、截屏以及讨论组(英语):http://getfirebug.com
+firebug.amo.developer.comments=如果你有任何问题,请阅读 Firebug FAQ(英语)。\n\nhttp://getfirebug.com/faq.html
diff --git a/locale/zh-CN/firebug-tracing.properties b/locale/zh-CN/firebug-tracing.properties
index 83bddb2..23919f5 100644
--- a/locale/zh-CN/firebug-tracing.properties
+++ b/locale/zh-CN/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
-# Firebug tracing console menu items (located in Firebug's menu).
-Open_Firebug_Tracing=打开 Firebug 跟踪控制台
-Always_Open_Firebug_Tracing=总是打开 Firebug 跟踪控制台
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
-title.Tracing=跟踪
-tracing.Show_Scope_Variables=显示作用域变量
-tracing.Show_Time=显示时间
-tracing.tab.Stack=栈
-tracing.tab.Exception=异常
-tracing.tab.Properties=属性
-tracing.tab.Scope=作用域
-tracing.tab.Response=响应
-tracing.tab.Source=源
-tracing.tab.Interfaces=界面
-tracing.tab.Object=对象
-tracing.tab.Event=事件
-tracing.cmd.Clear=清除
-tracing.cmd.tip.Clear=清除所有信息
-tracing.cmd.Find=查找
-tracing.cmd.tip.Find=查找文本
-tracing.cmd.Bookmark=书签
-tracing.cmd.tip.Bookmark=插入书签
-tracing.cmd.Restart=重启 Firefox
-tracing.cmd.tip.Restart=重启 Firefox
-tracing.cmd.Exit=退出 Firefox
-tracing.cmd.tip.Exit=退出 Firefox
-tracing.cmd.Save=保存日志
-tracing.cmd.tip.Save=保存日志文件
-tracing.cmd.Load=加载日志
-tracing.cmd.tip.Load=加载保存的日志文件
-tracing.cmd.Expand_All=全部展开
-tracing.cmd.Collapse_All=全部折叠
-tracing.cmd.Tools=工具
-tracing.cmd.tip.Tools=工具
-tracing.cmd.Clear_Browser_Cache=清空浏览器缓存
-tracing.cmd.tip.Clear_Browser_Cache=清空浏览器缓存
-tracing.cmd.Force_Garbage_Collector=强制垃圾回收
-tracing.cmd.tip.Force_Garbage_Collector=强制进行内存垃圾回收
-tracing.cmd.Open_Profile_Directory=打开配置文件夹
-tracing.cmd.tip.Open_Profile_Directory=打开配置文件夹
-tracing.option.A11Y_Description=可访问性问题
-tracing.option.ACTIVATION_Description=Firebug 激活
-tracing.option.ACTIVITYOBSERVER_Description=Firebug 活动监视器
-tracing.option.ANNOTATIONS_Description=Firebug 网站标记
-tracing.option.BP_Description=断点
-tracing.option.CACHE_Description=源代码缓存
-tracing.option.COMMANDLINE_Description=命令行及自动补全
-tracing.option.COMPILATION_UNITS_Description=脚本编译单元
-tracing.option.CONSOLE_Description=控制台面板
-tracing.option.CSS_Description=CSS 解析
-tracing.option.DISPATCH_Description=事件分派
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=Domplate 创建
-tracing.option.EDITOR_Description=内置编辑器及自动补全
-tracing.option.ERRORLOG_Description=JS, CSS, XML 等的错误日志
-tracing.option.ERRORS_Description=Firebug 内部错误
-tracing.option.EVAL_Description=Script 执行
-tracing.option.FBS_BP_Description=Firebug 服务断点
-tracing.option.FBS_CREATION_Description=Firebug 服务脚本创建
-tracing.option.FBS_ERRORS_Description=Firebug 服务错误
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug 服务查找调试器
-tracing.option.FBS_FUNCTION_Description=Firebug 服务函数
-tracing.option.FBS_JSDCONTEXT_Description=Firebug 服务 JavaScript 调试上下文
-tracing.option.FBS_SRCUNITS_Description=Firebug 服务源代码单元
-tracing.option.FBS_STEP_Description=Firebug 服务 JavaScript 步进调试
-tracing.option.FBS_TRACKFILES_Description=Firebug 服务被跟踪的文件
-tracing.option.FUNCTION_NAMES_Description=JavaScript 函数名
-tracing.option.HISTORY_Description=Firebug 导航历史
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP 请求监视器
-tracing.option.INFOTIP_Description=信息提示
-tracing.option.INITIALIZE_Description=Firebug 初始化
-tracing.option.INSPECT_Description=页面元素查看器
-tracing.option.JSONVIEWER_Description=JSON 查看器
-tracing.option.LINETABLE_Description=脚本行号表格
-tracing.option.LOCALE_Description=本地化
-tracing.option.LOCATIONS_Description=源代码地址
-tracing.option.NET_Description=网络面板
-tracing.option.NET_EVENTS_Description=网络事件
-tracing.option.OPTIONS_Description=Firebug 首选项
-tracing.option.PANELS_Description=面板
-tracing.option.SHORTCUTS_Description=键盘快捷键
-tracing.option.SOURCEFILES_Description=JavaScript 源文件
-tracing.option.SPY_Description=XHR 监视器
-tracing.option.STACK_Description=JavaScript 调用栈
-tracing.option.STORAGE_Description=设置存储
-tracing.option.SVGVIEWER_Description=SVG 查看器
-tracing.option.FONTS_Description=字体信息及字体查看器
-tracing.option.TOOLTIP_Description=开始按钮提示
-tracing.option.TOPLEVEL_Description=顶级 JavaScript
-tracing.option.UI_LOOP_Description=JavaScript 调试用户界面
-tracing.option.WINDOWS_Description=Firebug 窗口及标签页监视器
-tracing.option.XMLVIEWER_Description=XML 查看器
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):
+# Firebug tracing console menu items (located in Firebug's menu).
+Open_Firebug_Tracing=打开 Firebug 跟踪控制台
+Always_Open_Firebug_Tracing=总是打开 Firebug 跟踪控制台
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).
+title.Tracing=跟踪
+tracing.Show_Scope_Variables=显示作用域变量
+tracing.Show_Time=显示时间
+tracing.tab.Stack=栈
+tracing.tab.Exception=异常
+tracing.tab.Properties=属性
+tracing.tab.Scope=作用域
+tracing.tab.Response=响应
+tracing.tab.Source=源
+tracing.tab.Interfaces=界面
+tracing.tab.Object=对象
+tracing.tab.Event=事件
+tracing.cmd.Clear=清除
+tracing.cmd.tip.Clear=清除所有信息
+tracing.cmd.Find=查找
+tracing.cmd.tip.Find=查找文本
+tracing.cmd.Bookmark=书签
+tracing.cmd.tip.Bookmark=插入书签
+tracing.cmd.Restart=重启 Firefox
+tracing.cmd.tip.Restart=重启 Firefox
+tracing.cmd.Exit=退出 Firefox
+tracing.cmd.tip.Exit=退出 Firefox
+tracing.cmd.Save=保存日志
+tracing.cmd.tip.Save=保存日志文件
+tracing.cmd.Load=加载日志
+tracing.cmd.tip.Load=加载保存的日志文件
+tracing.cmd.Expand_All=全部展开
+tracing.cmd.Collapse_All=全部折叠
+tracing.cmd.Tools=工具
+tracing.cmd.tip.Tools=工具
+tracing.cmd.Clear_Browser_Cache=清空浏览器缓存
+tracing.cmd.tip.Clear_Browser_Cache=清空浏览器缓存
+tracing.cmd.Force_Garbage_Collector=强制垃圾回收
+tracing.cmd.tip.Force_Garbage_Collector=强制进行内存垃圾回收
+tracing.cmd.Open_Profile_Directory=打开配置文件夹
+tracing.cmd.tip.Open_Profile_Directory=打开配置文件夹
+tracing.option.A11Y_Description=可访问性问题
+tracing.option.ACTIVATION_Description=Firebug 激活
+tracing.option.ACTIVITYOBSERVER_Description=Firebug 活动监视器
+tracing.option.ANNOTATIONS_Description=Firebug 网站标记
+tracing.option.BP_Description=断点
+tracing.option.CACHE_Description=源代码缓存
+tracing.option.COMMANDLINE_Description=命令行及自动补全
+tracing.option.COMPILATION_UNITS_Description=脚本编译单元
+tracing.option.CONSOLE_Description=控制台面板
+tracing.option.CSS_Description=CSS 解析
+tracing.option.DISPATCH_Description=事件分派
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=Domplate 创建
+tracing.option.EDITOR_Description=内置编辑器及自动补全
+tracing.option.ERRORLOG_Description=JS, CSS, XML 等的错误日志
+tracing.option.ERRORS_Description=Firebug 内部错误
+tracing.option.EVAL_Description=Script 执行
+tracing.option.FBS_BP_Description=Firebug 服务断点
+tracing.option.FBS_CREATION_Description=Firebug 服务脚本创建
+tracing.option.FBS_ERRORS_Description=Firebug 服务错误
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug 服务查找调试器
+tracing.option.FBS_FUNCTION_Description=Firebug 服务函数
+tracing.option.FBS_JSDCONTEXT_Description=Firebug 服务 JavaScript 调试上下文
+tracing.option.FBS_SRCUNITS_Description=Firebug 服务源代码单元
+tracing.option.FBS_STEP_Description=Firebug 服务 JavaScript 步进调试
+tracing.option.FBS_TRACKFILES_Description=Firebug 服务被跟踪的文件
+tracing.option.FUNCTION_NAMES_Description=JavaScript 函数名
+tracing.option.HISTORY_Description=Firebug 导航历史
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP 请求监视器
+tracing.option.INFOTIP_Description=信息提示
+tracing.option.INITIALIZE_Description=Firebug 初始化
+tracing.option.INSPECT_Description=页面元素查看器
+tracing.option.JSONVIEWER_Description=JSON 查看器
+tracing.option.LINETABLE_Description=脚本行号表格
+tracing.option.LOCALE_Description=本地化
+tracing.option.LOCATIONS_Description=源代码地址
+tracing.option.NET_Description=网络面板
+tracing.option.NET_EVENTS_Description=网络事件
+tracing.option.OPTIONS_Description=Firebug 首选项
+tracing.option.PANELS_Description=面板
+tracing.option.SHORTCUTS_Description=键盘快捷键
+tracing.option.SOURCEFILES_Description=JavaScript 源文件
+tracing.option.SPY_Description=XHR 监视器
+tracing.option.STACK_Description=JavaScript 调用栈
+tracing.option.STORAGE_Description=设置存储
+tracing.option.SVGVIEWER_Description=SVG 查看器
+tracing.option.FONTS_Description=字体信息及字体查看器
+tracing.option.TOOLTIP_Description=开始按钮提示
+tracing.option.TOPLEVEL_Description=顶级 JavaScript
+tracing.option.UI_LOOP_Description=JavaScript 调试用户界面
+tracing.option.WINDOWS_Description=Firebug 窗口及标签页监视器
+tracing.option.XMLVIEWER_Description=XML 查看器
diff --git a/locale/zh-CN/firebug.properties b/locale/zh-CN/firebug.properties
index 5bf61c3..d7b6e31 100644
--- a/locale/zh-CN/firebug.properties
+++ b/locale/zh-CN/firebug.properties
@@ -1,1702 +1,1702 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
-# %S = Title of the associated web page.
-# examples: Firebug - Google
-WindowTitle=Firebug - %S
-# Panel titles
-Panel-console=控制台
-panel.tip.console=用于观察控制台消息和执行 Javascript 命令
-Panel-net=网络
-panel.tip.net=用于分析网络流量
-Panel-html=HTML
-panel.tip.html=用于查看和调整 DOM 节点
-Panel-stylesheet=CSS
-panel.tip.stylesheet=用于查看和调整 CSS 样式表
-Panel-script=脚本
-panel.tip.script=用于 JavaScript 调试
-Panel-dom=DOM
-panel.tip.dom=用于查看和调整 DOM 属性
-Panel-css=样式
-panel.tip.css=用于查看和调整选中 DOM 节点的 CSS 规则
-Panel-computed=计算出的样式
-panel.tip.computed=用于查看选中 DOM 节点的 CSS 计算样式
-Panel-layout=布局
-panel.tip.layout=用于查看和调整选中 DOM 节点的布局
-Panel-domSide=DOM
-panel.tip.domSide=用于查看和调整选中 DOM 节点的 DOM 属性
-Panel-watches=监控
-panel.tip.watches=用于查看当前堆栈中可用的 Javascript 变量以及定义监控表达式
-Panel-breakpoints=断点
-panel.tip.breakpoints=用于调整设置的断点
-Panel-callstack=堆栈
-panel.tip.callstack=用于观察当前的 Javascript 调用堆栈
-Panel-scopes=作用域
-firebug.DetachFirebug=在新窗口中打开 Firebug
-firebug.AttachFirebug=将 Firebug 嵌入浏览器窗口
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
-# If there is no Firebug translation for the current browser locale, this value
-# will be used instead of the one in chrome://global/locale/intl.properties
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-pluralRule=0
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the number of pages with Firebug activated.
-# %1 = number of Firebug instances activated
-# example: 2 Total Firebugs
-plural.Total_Firebugs2=%S 个页面启用了 Firebug
-# LOCALIZATION NOTE (startbutton.tip.deactivated):
-# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
-# Displays the deactivated status of Firebug
-startbutton.tip.deactivated=停用状态
-# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
-# inside a tooltip when hovering the Start Button. Will be shown for each panel.
-# first %S = panel name
-# second %S = panel activation status
-# example: Console: On
-panel.status=%S: %S
-inBrowser=嵌入浏览器状态
-minimized=最小化状态
-enablement.for_all_pages=对所有页面
-enablement.on=启用
-enablement.off=禁用
-enablement.Panel_activation_status=面板激活状态:
-none=关闭状态
-Firebug_-_inactive_for_current_website=Firebug - 对当前网站未激活
-Activate_Firebug_for_the_current_website=为当前网站激活 Firebug
-Minimized=最小化状态
-Minimize_Firebug=最小化 Firebug
-On_for_all_web_pages=对所有网页启用
-firebug.menu.tip.On_for_all_Web_Sites=默认为所有网站激活 Firebug
-firebug.menu.Clear_Activation_List=清空激活列表
-firebug.menu.tip.Clear_Activation_List=清空激活了 Firebug 的网站列表
-firebug.menu.Detached=独立窗口状态
-firebug.menu.tip.Detached=在独立窗口中打开 Firebug
-firebug.menu.Top=上
-firebug.menu.tip.Top=在窗口上方打开 Firebug
-firebug.menu.Bottom=下
-firebug.menu.tip.Bottom=在窗口下方打开 Firebug
-firebug.menu.Left=左
-firebug.menu.tip.Left=在窗口左侧打开 Firebug
-firebug.menu.Right=右
-firebug.menu.tip.Right=在窗口右侧打开 Firebug
-firebug.uiLocation=Firebug 界面位置
-firebug.menu.tip.UI_Location=Firebug 界面的位置
-# LOCALIZATION NOTE (annotations.confirm.clear):
-# Used in a confirmation dialog when all Firebug annotations are going to be deleted
-annotations.confirm.clear=确定要清空激活了 Firebug 的网站列表吗?
-# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
-# most button on Firebug main toolbar)
-firebug_options=Firebug 选项
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
-# menu (available on Firebug's tab bar).
-firebug.Show_All_Panels=显示所有面板
-console.option.Show_Command_Line=显示命令行
-console.option.tip.Show_Command_Line=将焦点移动到命令行/显示命令行
-# Console panel options (located in tab's option menu)
-ShowJavaScriptErrors=显示 JavaScript 错误
-console.option.tip.Show_JavaScript_Errors=在控制台中记录 JavaScript 错误消息
-ShowJavaScriptWarnings=显示 JavaScript 警告
-console.option.tip.Show_JavaScript_Warnings=在控制台中记录 JavaScript 警告消息
-ShowCSSErrors=显示 CSS 错误
-console.option.tip.Show_CSS_Errors=在控制台中记录 CSS 错误消息
-ShowXMLHTMLErrors=显示 XML/HTML 错误
-console.option.tip.Show_XML_HTML_Errors=在控制台中记录 XML/HTML 错误消息
-ShowStackTrace=显示堆栈状态及其错误
-console.option.tip.Show_Stack_Trace=显示错误的堆栈跟踪信息
-ShowXMLHttpRequests=显示 XMLHttpRequests
-console.option.tip.Show_XMLHttpRequests=在控制台中记录 XMLHttpRequest 请求
-ShowChromeErrors=显示 Chrome 错误
-console.option.tip.Show_System_Errors=在控制台中记录浏览器和扩展内部错误消息
-ShowChromeMessages=显示 Chrome 信息
-console.option.tip.Show_System_Messages=在控制台中记录浏览器和扩展内部消息
-ShowNetworkErrors=显示网络错误
-console.option.tip.Show_Network_Errors=在控制台中记录网络错误消息
-JavascriptOptionsStrict=严格警告 (有损性能)
-console.option.tip.Show_Strict_Warnings=在控制台中记录严格警告
-Command_History=命令行历史
-console.option.Show_Command_Editor=显示命令行编辑器
-console.option.tip.Show_Command_Editor=切换到命令行编辑器
-commandLineShowCompleterPopup=弹出自动补全列表
-console.option.tip.Show_Completion_List_Popup=弹出显示命令行自动补全提示
-Assertion=断言失败
-# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
-# of an error, message, etc. within a source of a web page.
-# first %S = File name, second %S = Line number
-# examples: somePage.htm (line 64)
-# examples: somePage.htm (line 64, column 53)
-Line=%S (第 %S 行)
-LineAndCol=%S (第 %S 行,第 %S 列)
-InstanceLine=%S #%S (第 %S 行)
-StackItem=%S (%S 行 %S)
-SystemItem=<系统>
-# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
-# For example, right clicking on an element in the HTML panel offers an action to inspect
-# clicked element in the DOM panel.
-# %S = Target panel title
-# examples: Inspect in DOM Panel
-panel.Inspect_In_Panel=在 %S 面板中查看
-panel.tip.Inspect_In_Panel=切换到 %S 面板并查看该对象
-NoName=(未命名)
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
-# do not translate.
-# %S = jsdIScript.tag
-jsdIScript=jsdIScript %S
-# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
-# HTML panel option (located in tab's option menu). If set to true, contents
-# of an element will not be cropped
-ShowFullText=显示全文
-html.option.tip.Show_Full_Text=不要省略元素文本内容
-# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
-# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
-# nodes will be shown
-ShowWhitespace=显示空白符
-html.option.tip.Show_Whitespace=显示节点中的空白字符
-# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
-# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
-ShowComments=显示注释
-html.option.tip.Show_Comments=显示注释节点
-# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
-# HTML panel option (located in tab's option menu). If set to true, special characters will be
-# shown in their entity representation, e.g. " => ", & => &
-html.option.Show_Entities_As_Symbols=显示字符实体为符号
-html.option.tip.Show_Entities_As_Symbols=显示所有 XML 实体的符号表示
-html.option.Show_Entities_As_Names=显示字符实体为名称
-html.option.tip.Show_Entities_As_Names=显示所有 XML 实体的名称
-html.option.Show_Entities_As_Unicode=显示字符实体为 Unicode
-html.option.tip.Show_Entities_As_Unicode=显示所有 XML 实体的 Unicode 表示
-# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
-# will be highlighted
-HighlightMutations=高亮更改
-html.option.tip.Highlight_Mutations=高亮节点中的改变
-# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be expanded to display changed nodes
-ExpandMutations=展开更改
-html.option.tip.Expand_Mutations=展开树状视图以显示改变的节点
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# HTML panel option (located in tab's option menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ScrollToMutations=滚动到更改处
-html.option.tip.Scroll_To_Mutations=滚动树状视图使改变的节点可见
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
-# a panel will be shown including information about the currently inspected element
-ShowQuickInfoBox=显示快速信息框
-inspect.option.tip.Show_Quick_Info_Box=在页面中浮动显示当前查看元素的相关信息
-# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
-# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
-# will be scrolled to display changed nodes
-ShadeBoxModel=为盒模型填充阴影
-inspect.option.tip.Shade_Box_Model=为盒模型的不同部分填充阴影
-ScrollIntoView=滚动到此处
-html.tip.Scroll_Into_View=滚动页面使该元素可见
-NewAttribute=新建属性...
-html.tip.New_Attribute=为该元素添加新属性
-html.Edit_Node=编辑 %S...
-html.Node=节点
-html.tip.Edit_Node=在编辑器中编辑 %S
-DeleteElement=删除元素
-html.Delete_Element=从页面的树状结构中删除该元素
-DeleteNode=删除节点
-html.Delete_Node=从页面的树状结构中删除该节点
-# Quick Info Box
-quickInfo=快速信息
-computedStyle=计算出的样式
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
-# button that are used when the HTML panel is currently selected. The button allows stopping
-# JS execution when DOM of the current page is modified.
-html.Break_On_Mutate=在 DOM 改变时中断
-html.Disable_Break_On_Mutate=停用在 DOM 改变时中断
-html.label.Break_On_Text_Change=在文本改变时中断
-html.label.HTML_Breakpoints=HTML 断点
-html.label.Break_On_Attribute_Change=在属性改变时中断
-html.tip.Break_On_Attribute_Change=在该元素的属性改变时停止 Javascript 的执行
-html.label.Break_On_Child_Addition_or_Removal=在添加或删除子元素时中断
-html.tip.Break_On_Child_Addition_or_Removal=在该元素中添加或删除子元素时停止 Javascript 的执行
-html.label.Break_On_Element_Removal=在删除元素时中断
-html.tip.Break_On_Element_Removal=在该元素被删除时停止 Javascript 的执行
-# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
-# Used within the HTML for a context menu item. The user can expand/contract
-# the element and all its children to quickly see the entire hierarchical structure
-# or collapse it.
-html.label.Expand/Contract_All=全部展开/收起
-html.tip.Expand/Contract_All=递归的展开/收起所有子元素
-# LOCALIZATION NOTE (dom.scopeName): Used within the DOM panel to name the fake property that
-# contains the innermost closure scope of a function.
-dom.scopeName=(闭包)
-# LOCALIZATION NOTE (dom.scopeParentName): Used within the DOM panel to name the fake property
-# that contains the parent of a closure scope.
-dom.scopeParentName=(父作用域)
-# LOCALIZATION NOTE (dom.tip.scopeName): Used within the DOM panel as a tooltip when hovering
-# "(closure)".
-dom.tip.scopeName=在命令行中用 <函数名>.闭包变量名 来获得
-# LOCALIZATION NOTE (dom.tip.scopeMemberName): Used within the DOM panel as a tooltip when
-# hovering a variable in a closure.
-# %S: the variable name - starts with "%"
-dom.tip.scopeMemberName=在命令行中用 <函数名>.%S 来获得
-# LOCALIZATION NOTE (firebug.reps.declarativeScope, firebug.reps.objectScope, firebug.reps.withScope):
-# Labels shown to describe different types of closure scopes.
-firebug.reps.declarativeScope=[声明作用域]
-firebug.reps.objectScope=[对象作用域]
-firebug.reps.withScope=[with 作用域]
-# LOCALIZATION NOTE (firebug.reps.optimizedAway): Label shown to denote a closure variable that has
-# been optimized away.
-firebug.reps.optimizedAway=(被优化掉)
-# LOCALIZATION NOTE (firebug.reps.element.attribute_value, firebug.reps.element.property_value):
-# Used in the Console panel for elements. If an input element has two different values, one set
-# as "value" attribute and one set as 'value' property, these labels are used to distinguish it.
-firebug.reps.element.attribute_value=属性(attribute)值
-firebug.reps.element.property_value=属性(property)值
-# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
-# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
-# The label is also used for the 'Break On Property Change' button (available on the toolbar).
-dom.label.breakOnPropertyChange=在属性改变时中断
-dom.tip.Break_On_Property_Change=在该属性改变时停止 Javascript 的执行
-# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
-# 'break on next button' in the case the option is activated
-dom.disableBreakOnPropertyChange=停用在属性改变时中断
-dom.label.DOM_Breakpoints=DOM 断点
-# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
-# editing an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Edit Attribute "onclick"...
-EditAttribute=编辑属性 "%S"...
-html.tip.Edit_Attribute=编辑该元素 "%S" 属性的值
-# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
-# deleting an existing HTML element attribute.
-# %S = Name of the clicked attribute
-# examples: Delete Attribute "onclick"...
-DeleteAttribute=删除属性 "%S"
-html.tip.Delete_Attribute=删除该元素的 "%S" 属性
-# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
-# that has been inherited. Used in the Style side panel (under HTML panel).
-# examples: Inherited from table.tabView
-InheritedFrom=继承自
-SothinkWarning=Sothink SWF Catcher 扩展妨碍了 Firebug 的正常运行。<br><br>请查阅 <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">Firebug FAQ 中的相关条目</a>。
-# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
-# and Style side panel (within HTML panel) when the mouse hovers a font name
-css.fontFamilyPreview=中文字型范例 The quick brown fox jumps over the lazy dog. 0123456789
-# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
-# in case there are no stylesheets attached to the current page.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyStyleSheet=无任何样式规则。你可以<a>新建规则</a>。
-# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
-# (available within the HTML panel) in case there are no CSS rules for the selected element.
-# The text between <a> and </a> is displayed as a link.
-css.EmptyElementCSS=该元素无任何样式规则。你可以为它<a>新建规则</a>。
-EditStyle=编辑元素样式...
-style.tip.Edit_Style=编辑元素的行内样式
-AddRule=添加规则...
-css.tip.AddRule=为该元素添加规则
-NewRule=新建规则...
-css.tip.New_Rule=添加一条新规则
-# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule
-# %S = Selector of the clicked rule
-# examples: Delete "div > p"
-css.Delete_Rule=删除 "%S"
-css.tip.Delete_Rule=删除规则 "%S" 及其属性
-# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
-# Menu item label used in the CSS panel context menu.
-# Allows to add or edit the CSS media query of an import rule
-css.menu.Edit_Media_Query=编辑媒体查询...
-css.menu.tip.Edit_Media_Query=编辑指定给该规则的媒体查询
-NewProp=新建属性值...
-css.tip.New_Prop=向当前规则添加一条新属性
-# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
-# Allows to edit an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Edit "background-color"...
-EditProp=编辑 "%S"...
-css.tip.Edit_Prop=编辑属性 "%S" 的值
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
-# Allows to disable an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Disable "background-color"
-DisableProp=禁用 "%S"
-css.tip.Disable_Prop=禁用属性 "%S"
-# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
-# Allows to delete an existing CSS rule property.
-# %S = Name of the clicked property
-# examples: Delete "background-color"
-DeleteProp=删除 "%S"
-css.tip.Delete_Prop=删除属性 "%S"
-# Console context menu labels.
-BreakOnThisError=在此错误处中断
-console.menu.tip.Break_On_This_Error=一旦该错误发生就停止 Javascript 的执行
-BreakOnAllErrors=在所有错误处中断
-console.menu.tip.Break_On_All_Errors=一旦有错误发生就停止 Javascript 的执行
-# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
-# Script panel option (located in tab's option menu). If set to true, tracking of
-# throw/catch blocks is enabled.
-TrackThrowCatch=跟踪 Throw/Catch
-script.option.tip.Track_Throw_Catch=跟踪代码中用 try/catch 捕获的异常
-UseLastLineForEvalName=使用最后的源码行当作 eval() 的名称
-UseMD5ForEvalName=使用 MD5 当作 eval() 的名称
-# Breakpoints side panel
-Breakpoints=断点
-ErrorBreakpoints=错误断点
-LoggedFunctions=已记录的函数
-EnableAllBreakpoints=启用所有断点
-breakpoints.option.tip.Enable_All_Breakpoints=启用所有列出的断点
-DisableAllBreakpoints=禁用所有断点
-breakpoints.option.tip.Disable_All_Breakpoints=禁用所有列出的断点
-ClearAllBreakpoints=移除所有断点
-breakpoints.option.tip.Clear_All_Breakpoints=移除所有列出的断点
-ConditionInput=只当该表达式为真时才在该断点处停止
-# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
-# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
-# Context menu items in the Script panel and Breakpoints side panel.
-breakpoints.Remove_Breakpoint=移除断点
-breakpoints.tip.Remove_Breakpoint=移除该断点
-breakpoints.Disable_Breakpoint=禁用断点
-breakpoints.tip.Disable_Breakpoint=禁用该断点
-breakpoints.Enable_Breakpoint=启用断点
-breakpoints.tip.Enable_Breakpoint=启用该断点
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
-# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
-# a 'debugger;' keyword.
-# Continue: allows to resume the debugger
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
-script.balloon.Continue=继续
-script.balloon.Disable=停用
-ScriptsFilterStatic=显示静态脚本
-ScriptsFilterEval=显示静态脚本和 eval 的脚本
-ScriptsFilterEvent=显示静态脚本和事件脚本
-ScriptsFilterAll=显示所有脚本
-ScriptsFilterStaticShort=静态
-ScriptsFilterEvalShort=evals
-ScriptsFilterEventShort=事件
-ScriptsFilterAllShort=所有
-# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
-# callstack.Collapse_All, callstack.tip.Collapse_All):
-# Context menu item labels used in Stack side panel (within Script panel)
-# Firebug needs to be halted at a breakpoint to see these items.
-callstack.Expand_All=全部展开
-callstack.tip.Expand_All=展开所有的堆栈函数
-callstack.Collapse_All=全部收起
-callstack.tip.Collapse_All=收起所有的堆栈函数
-# LOCALIZATION NOTE (callstack.Execution_not_stopped):
-# Message displayed in the Stack side panel if the script execution is not stopped.
-callstack.Execution_not_stopped=只在脚本执行停止时显示堆栈
-# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
-# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
-# ShowInlineEventHandlers):
-# Labels for DOM panel options (located in tab's option menu)
-ShowUserProps=显示用户自定义的属性
-dom.option.tip.Show_User_Props=显示用户定义的对象属性
-ShowUserFuncs=显示用户自定义的函数
-dom.option.tip.Show_User_Funcs=显示用户定义的对象方法
-ShowDOMProps=显示 DOM 属性
-dom.option.tip.Show_DOM_Props=显示 DOM 中规定的属性
-ShowDOMFuncs=显示 DOM 函数
-dom.option.tip.Show_DOM_Funcs=显示 DOM 中规定的函数
-ShowDOMConstants=显示 DOM 常量
-dom.option.tip.Show_DOM_Constants=显示 DOM 中规定的常量
-ShowClosures=显示闭包
-dom.option.tip.Show_Closures=显示与各个函数关联的闭包(并启用调试器)
-ShowInlineEventHandlers=显示行内事件处理代码
-ShowInlineEventHandlersTooltip=显示可用的、未与函数关联的行内事件处理代码
-ShowOwnProperties=仅显示自有属性
-ShowOwnPropertiesTooltip=不显示继承自原型链的属性
-ShowEnumerableProperties=仅显示枚举属性
-ShowEnumerablePropertiesTooltip=不显示不可枚举的属性
-NoMembersWarning=该对象无任何可显示的属性。
-NewWatch=新建监控表达式...
-# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
-# Adds the selection or object to the Watch side panel to observe it
-AddWatch=添加监控
-watch.tip.Add_Watch=将(选中的)对象添加到监控侧面板
-# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
-# Copies the selected source code to the clipboard.
-CopySourceCode=复制源代码
-script.tip.Copy_Source_Code=复制选中源代码到剪贴板
-Use_hash_plus_number_to_go_to_line=输入 #<行号> 以前往指定行
-CopyValue=复制值
-dom.tip.Copy_Value=复制该属性的值到剪贴板
-Copy_Name=复制名称
-dom.tip.Copy_Name=复制该属性的名称到剪贴板
-Copy_Path=复制路径
-dom.tip.Copy_Path=复制属性路径
-NewProperty=新建属性值...
-EditProperty=编辑属性值...
-dom.tip.Edit_Property=编辑属性的值
-EditVariable=编辑变量...
-stack.tip.Edit_Variable=编辑变量的值
-EditWatch=编辑监控...
-watch.tip.Edit_Watch=编辑监控表达式的值
-DeleteProperty=删除属性值
-dom.tip.Delete_Property=删除该属性
-DeleteWatch=删除监控
-DeleteAllWatches=删除所有监控
-watch.tip.Delete_Watch=删除该监控表达式
-watch.tip.Delete_All_Watches=删除所有监控表达式
-# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
-# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
-SetBreakpoint=设置断点
-script.tip.Set_Breakpoint=切换当前行是否设置断点
-# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
-# Context menu item of the Script panel.
-# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
-EditBreakpointCondition=编辑断点条件...
-breakpoints.tip.Edit_Breakpoint_Condition=编辑在断点处停止 Javascript 执行的条件
-NoBreakpointsWarning=该页无任何已设置的断点。
-# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
-# Style side panel option (located in tab's option menu). If set to true,
-# just styles applied to an element will be displayed and overwritten ones will be hidden.
-Only_Show_Applied_Styles=仅显示应用的样式
-style.option.tip.Only_Show_Applied_Styles=仅显示应用到该元素的样式
-# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
-# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
-# also display styles defined by the user agent.
-Show_User_Agent_CSS=显示浏览器默认样式
-style.option.tip.Show_User_Agent_CSS=同时显示浏览器定义的 CSS
-# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
-# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
-# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
-# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
-# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
-computed.option.label.Colors_As_Hex=16 进制颜色
-computed.option.tip.Colors_As_Hex=显示颜色的 16 进制表示
-computed.option.label.Colors_As_RGB=RGB 颜色
-computed.option.tip.Colors_As_RGB=显示颜色的 RGB 表示
-computed.option.label.Colors_As_HSL=HSL 颜色
-computed.option.tip.Colors_As_HSL=显示颜色的 HSL 表示
-# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being activated and therefore display
-# :active pseudo-class styles
-style.option.label.active=:active
-style.option.tip.active=显示 :active 伪类的样式
-# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being hovered and therefore display
-# :hover pseudo-class styles
-style.option.label.hover=:hover
-style.option.tip.hover=显示 :hover 伪类的样式
-# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
-# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
-# the Style side panel will simulate the element being focused and therefore display
-# :focus pseudo-class styles
-style.option.label.focus=:focus
-style.option.tip.focus=显示 :focus 伪类的样式
-# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
-# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
-# declaration inside the CSS panel
-css.label.Inspect_Declaration=查看样式声明
-css.tip.Inspect_Declaration= 查看该字体的样式声明
-# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
-# CSS panel/Style side panel option (located in tab's option menu). If set to true,
-# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
-# 'margin-left', 'margin-bottom', 'margin-right'
-Expand_Shorthand_Properties=展开简写属性
-css.option.tip.Expand_Shorthand_Properties=将 CSS 简写属性展开为分项
-# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
-# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
-# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
-# into categories
-Sort_alphabetically=按字母表排序
-computed.option.tip.Sort_Alphabetically=切换将样式按名称排序/按类别分组
-# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
-# Computed side panel option (located in tab's option menu). If set to true,
-# also styles prefixed with -moz will be displayed
-Show_Mozilla_specific_styles=显示 Mozilla(-moz-*) 专有样式
-computed.option.tip.Show_Mozilla_Specific_Styles=同时显示带有 -moz 前缀的样式
-# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
-# Displayed in the Computed side panel (available within the HTML panel) in case there are no
-# user-defined CSS rules applying to the selected element.
-computed.No_User-Defined_Styles=该元素没有用户定义的样式规则
-script.Type_any_key_to_filter_list=输入任意字符以过滤列表
-# LOCALIZATION NOTE (location.inline):
-# Label used within the Location Menu for inline styles or scripts
-location.inline=行内
-# LOCALIZATION NOTE (location.no_domain):
-# Label used within the Location Menu for the group of scripts,
-# which don't have a domain specified like e.g. eval()'ed scripts
-location.no_domain=无域名
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
-# Labels used to describe layout properties a the selected HTML element.
-# Used in the Layout side panel (within HTML panel).
-LayoutPadding=内边距
-LayoutBorder=边框
-LayoutMargin=外边距
-LayoutPosition=定位
-LayoutAdjacent=邻接
-position=定位
-# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
-# Layout side panel option (located in tab's option menu). If set to true,
-# rulers and guides will be displayed for the element on the page
-# when hovering parts of the layout box
-ShowRulers=显示标尺和辅助线
-layout.option.tip.Show_Rulers=鼠标悬停在盒模型上时相应的在页面上显示标尺和辅助线
-# Net panel
-Loading=载入中...
-Headers=头信息
-# LOCALIZATION NOTE (net.tip.Clear)
-# Tooltip for the button inside the Net panel to clear the request list
-net.tip.Clear=清空请求列表
-# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
-# Label for header context menu within the Net panel
-net.header.Reset_Header=重置表头
-net.header.tip.Reset_Header=重置表头显示
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
-# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
-# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
-# Labels and tooltips for headers displayed on top of the Net panel.
-net.header.URL=URL
-net.header.URL_Tooltip=请求的 URL 和使用的 HTTP 方法
-net.header.Status=状态
-net.header.Status_Tooltip=接收到响应的状态
-net.header.Domain=域
-net.header.Domain_Tooltip=执行请求的域
-net.header.Size=大小
-net.header.Size_Tooltip=接收到响应的大小
-net.header.Timeline=时间线
-net.header.Timeline_Tooltip=关于请求响应的详细计时信息
-net.header.Local_IP=本地 IP
-net.header.Local_IP_Tooltip=请求所绑定的本地地址和端口
-net.header.Remote_IP=远程 IP
-net.header.Remote_IP_Tooltip=请求所绑定的远程地址和端口
-net.header.Protocol=协议
-net.header.Protocol_Tooltip=用以在网络上定位资源的 URL 协议
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
-net.label.XHR_Breakpoints=XHR 断点
-# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
-# Net panel context menu item for stopping the JavaScript execution on an XHR
-net.label.Break_On_XHR=在 XHR 时中断
-net.tip.Break_On_XHR=一旦有 XMLHttpRequest 请求发出就停止 Javascript 的执行
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
-# Net panel's Headers tab (displayed if you expand a network request). The label is used
-# for a link, that switches the view between raw source code and formated header values.
-net.headers.view_source=原始头信息
-net.headers.pretty_print=格式化头信息
-# LOCALIZATION NOTE (net.filter.label.All, net.filter.tooltip.All, net.filter.label.HTML,
-# net.filter.tooltip.HTML, net.filter.label.CSS, net.filter.tooltip.CSS, net.filter.label.JS,
-# net.filter.tooltip.JS, net.filter.label.XHR, net.filter.tooltip.XHR, net.filter.label.Images,
-# net.filter.tooltip.Images, net.filter.label.Plugins, net.filter.tooltip.Plugins,
-# net.filter.label.Media, net.filter.tooltip.Media):
-# Labels and tooltips for Net panel filter (used on the Net panel toolbar)
-net.filter.label.All=全部
-net.filter.tooltip.All=显示全部 MIME 类型
-net.filter.label.HTML=HTML
-net.filter.tooltip.HTML=只显示标记文件
-net.filter.label.CSS=CSS
-net.filter.tooltip.CSS=只显示 CSS 文件
-net.filter.label.JS=JavaScript
-net.filter.tooltip.JS=只显示 JavaScript 文件
-net.filter.label.XHR=XHR
-net.filter.tooltip.XHR=只显示 XMLHttpRequest
-net.filter.label.Images=图片
-net.filter.tooltip.Images=只显示图片
-net.filter.label.Plugins=插件
-net.filter.tooltip.Plugins=只显示 Flash 和 Silverlight 文件
-net.filter.label.Media=媒体
-net.filter.tooltip.Media=只显示音频和视频
-net.filter.label.Fonts=字体
-net.filter.tooltip.Fonts=只显示字体
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
-# a network request (displayed when a Net panel entry is expanded). The content of
-# this tab displays sent data (related to an HTTP send method).
-Post=Post
-Put=Put
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
-# Labels used in the Net panel for detailed info about a network request (displayed
-# when a Net panel entry is expanded)
-Response=响应
-URLParameters=参数
-Cache=缓存
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=常规信息
-fontviewer.Meta_Data=元数据
-fontviewer.view_source=原始元数据
-fontviewer.Preview=预览
-fontviewer.view_characters=查看字母和数字
-fontviewer.pretty_print=格式化元数据
-fontviewer.view_sample=查看例句
-fontviewer.uniqueid=唯一 ID
-fontviewer.vendor=供应商
-fontviewer.license=授权条款
-fontviewer.description=描述
-fontviewer.copyright=版权
-fontviewer.credits=致谢
-fontviewer.trademark=商标
-fontviewer.licensee=获授权者
-fontviewer.extension=扩展
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
-# Net panel for JSON responses. Allows to sort alphabetically.
-jsonviewer.sort=按 key 排序
-jsonviewer.do_not_sort=不排序
-# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
-# in the Net & Console panel when copying JSON replies.
-# %S = Part of the JSON, that was clicked
-# example: Copy "person" as JSON
-net.jsonviewer.Copy_JSON=复制 "%S" 为 JSON
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
-# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
-RequestHeaders=请求头信息
-ResponseHeaders=响应头信息
-CachedResponseHeaders=来自缓存的响应头信息
-PostRequestHeaders=来自上传流的请求头信息
-# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
-# Label (noun) used in the Net panel and displayed instead of Response Headers
-# if the response comes directly from the cache (BFCache).
-net.label.ResponseHeadersFromBFCache=该请求直接由缓存中解析,所以没有来自服务器的响应。下面可以查看缓存的响应。
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
-# A message displayed in the Net panel when some entries must be removed in the case the maximum number
-# of entries has been reached.
-# %1 = the number of entries removed
-# example: Firebug's log limit has been reached. 150 entries not shown.
-plural.Limit_Exceeded2=Firebug 的日志已达上限。 %S 条未显示。
-LimitPrefs=首选项
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
-# has been reached. Informing the user what preference should be changed to modify the limit.
-# %S = Name of a preference
-# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
-LimitPrefsTitle=修改 %S 可以改变上限
-Refresh=刷新
-panel.tip.Refresh=刷新面板显示
-# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
-# stylesheets and net requests to open the underlying URL in a new browser tab
-OpenInTab=在新标签中打开
-firebug.tip.Open_In_Tab=在新标签中打开 URL
-Open_Response_In_New_Tab=在新标签中打开响应
-net.tip.Open_Response_In_New_Tab=在新标签中打开响应
-# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
-# (result of JavaScript profiler tool).
-Profile=概况
-ProfilerStarted=概况收集中。再次点击“概况”查看结果。
-ProfilerRequiresTheScriptPanel=必须启用脚本面板才能使用概况功能
-# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
-# Caption for reported profile info (result of JavaScript profiler tool).
-# %1 = Number of milliseconds
-# %2 = Number of calls (plural)
-# example: (56ms, 15 calls)
-plural.Profile_Time2=(%S 毫秒, %S 次调用)
-NothingToProfile=无任何可记录的活动。
-PercentTooltip=函数耗时百分比
-CallsHeaderTooltip=函数被调用的次数
-OwnTimeHeaderTooltip=函数占用的时间,不包括嵌套调用。
-TimeHeaderTooltip=函数占用的时间,包括嵌套调用。
-AvgHeaderTooltip=平均占用时间,包括函数调用。
-MinHeaderTooltip=最小占用时间,包括函数调用。
-MaxHeaderTooltip=最大占用时间,包括函数调用。
-ProfileButton.Tooltip=获取 JavaScript 执行时间的概况
-Function=函数
-Percent=百分比
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
-# (name of a report column). In order to see this, select the Console panel, start profiling
-# by clicking the Profile button and stop it by clicking it again. The report is logged into the
-# Console panel. Make sure Script panel is enabled.
-Calls=调用
-OwnTime=占用时间
-Time=时间
-Avg=平均时间
-Min=最小时间
-Max=最大时间
-File=文件
-# Support for standard actions.
-Copy=复制
-Cut=剪切
-Remove=移除
-Delete=删除
-Paste=粘贴
-SelectAll=全选
-html.Copy_Node=复制 %S
-html.tip.Copy_Node=复制 %S 节点及其内容到剪贴板
-CopyInnerHTML=复制 innerHTML
-html.tip.Copy_innerHTML=复制该元素的内容到剪贴板
-CopyXPath=复制 XPath
-html.tip.Copy_XPath=复制该元素的 XPath 到剪贴板
-Copy_CSS_Path=复制 CSS 路径
-html.tip.Copy_CSS_Path=复制该元素的 CSS 路径到剪贴板
-# LOCALIZATION NOTE (html.menu.Paste, html.tip.Paste): Context menu item (with subitems).
-# Used in the HTML Panel to paste HTML/SVG/XML/XUL/MathML contents
-# %S = the type of the content to paste (HTML, SVG, XML, XUL or MathML)
-html.menu.Paste=粘贴 %S
-html.tip.Paste=粘贴为 %S 内容
-# LOCALIZATION NODE (html.menu.Paste_*, html.tip.Paste_*): Context menu items.
-# These items are paste options, and appears as subitems of html.menu.Paste in the context menu.
-html.menu.Paste_Replace_Content=替换内容
-html.tip.Paste_Replace_Content=替换该节点的内容
-html.menu.Paste_Replace_Node=替换节点
-html.tip.Paste_Replace_Node=替换该节点本身
-html.menu.Paste_AsFirstChild=作为第一子元素
-html.tip.Paste_AsFirstChild=粘贴为该节点的第一个子元素
-html.menu.Paste_AsLastChild=作为最后一个子元素
-html.tip.Paste_AsLastChild=粘贴为该节点的最后一个子元素
-html.menu.Paste_Before=之前
-html.tip.Paste_Before=粘贴在该节点之前
-html.menu.Paste_After=之后
-html.tip.Paste_After=粘贴在该节点之后
-# LOCALIZATION NOTE (html.menu.Reload_Frame, html.menu.tip.Reload_Frame):
-# Context menu item of HTML frames
-html.menu.Reload_Frame=重新加载该框架
-html.menu.tip.Reload_Frame=重新加载该框架的内容
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyLocation=复制地址
-clipboard.tip.Copy_Location=复制该对象地址的 URL 到剪贴板
-CopyURLParameters=复制 URL 参数
-net.tip.Copy_URL_Parameters=复制 URL 参数到剪贴板
-CopyPOSTParameters=复制 POST 参数
-net.tip.Copy_POST_Parameters=复制 POST 参数到剪贴板
-CopyLocationParameters=复制带参数的地址
-net.tip.Copy_Location_Parameters=复制包括参数在内的 URL 到剪贴板
-CopyRequestHeaders=复制请求头信息
-net.tip.Copy_Request_Headers=复制请求头信息到剪贴板
-CopyResponseHeaders=复制响应头信息
-net.tip.Copy_Response_Headers=复制响应头信息到剪贴板
-CopyResponse=复制响应正文
-net.tip.Copy_Response=复制响应正文到剪贴板
-# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
-# panel when clicking an error object.
-CopyError=复制错误
-console.menu.tip.Copy_Error=复制错误信息到剪贴板
-# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
-# panel when clicking an error object.
-CopySource=复制函数
-dom.tip.Copy_Source=复制函数的源代码到剪贴板
-# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
-# DOM panel and Watch side panel.
-# %S = Name of the function
-# example: Log Calls to "getData"
-# example: Log calls to the function "getData" inside the Console panel
-ShowCallsInConsole=记录对 "%S" 的调用
-dom.tip.Log_Calls_To_Function=在控制台中记录对函数 "%S" 的调用
-# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
-# Menu item label used in HTML elements context menu. Allows logging of event information
-# to the console.
-ShowEventsInConsole=记录事件
-html.tip.Show_Events_In_Console=在控制台中记录事件信息
-# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
-# Option inside the options menu of activatable panels. Enables/Disables the panel.
-panel.Enabled=启用
-panel.tip.Enabled=切换面板激活状态
-# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
-# Firebug toolbar. This button allows to open the Command Line within other panels
-# than the Console panel.
-panel.tooltip.Show_Command_Line_Popup=显示命令行
-# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
-# if a specific method is not supported.
-# %S = Name of the unsupported method
-# example: Firebug console does not support 'bind'
-console.MethodNotSupported=Firebug 控制台不支持 '%S'
-# LOCALIZATION NOTE (commandline.errorSourceHeader): Message displayed in the header of the
-# source code where an exception has occured.
-commandline.errorSourceHeader=通过 Firebug 命令行执行的表达式:
-# LOCALIZATION NOTE (commandline.MethodDisabled): Message displayed in the Console panel,
-# if a disabled method is entered via the Command Line.
-commandline.MethodDisabled=该命令行方法被暂时禁用了
-# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
-# if an unsupported method is entered via the Command Line.
-# %S = Name of the unsupported method
-commandline.MethodNotSupported=Firebug 命令行不支持 '%S'
-# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
-# cd(someWindow) is run. A space and a representation of the window object is appended
-# internally by Firebug.
-commandline.CurrentWindow=当前 window:
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
-# Tooltip for the "Break on... " button used when the Console panel is selected.
-console.Disable_Break_On_All_Errors=停用在所有错误处中断
-console.Break_On_All_Errors=在所有错误处中断
-# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
-# in the Console panel
-console.Break_On_This_Error=在此错误处中断
-# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
-# in the Command Line
-console.Use_Arrow_keys,_Tab_or_Enter=使用方向键、Tab 或回车
-# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
-# JavaScript is not available
-console.JSDisabledInFirefoxPrefs=JavaScript 在你的 Firefox 首选项中被禁用。如果你想使用控制台面板,请选中'工具'>'选项'>'内容'>'启用 JavaScript'
-# LOCALIZATION NOTE (console.tip.ScriptPanelMustBeEnabledForTraces): Message shown inside the Console
-# panel instead of a stack trace when it is missing because the script panel is disabled. The text
-# enclosed in <a></a> is a link which enables the Script panel.
-console.ScriptPanelMustBeEnabledForTraces=必须启用脚本面板才能获取堆栈跟踪信息 <a>启用脚本面板</a>
-# LOCALIZATION NOTE (tooltip.multipleFiltersHint):
-# Hint used for Console and Net panel filter button tooltips describing the shortcut for selecting
-# multiple filters
-tooltip.multipleFiltersHint=按住 Ctrl 并单击来同时选取多个过滤器
-# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
-# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
-# all elements in the array are highlighted on the page. If there are too many elements
-# in the array, this tooltip is displayed instead.
-# %S = Maximal number of elements to highlight
-# example: There are too many elements in the array to highlight on the page (current limit is 100).
-# See 'extensions.firebug.multiHighlightLimit' preference.
-console.multiHighlightLimitExceeded=该数组的元素过多,无法在页面上高亮显示(当前上限为 %S)\n参见选项'extensions.firebug.multiHighlightLimit'
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
-# in cases when the current page is an XML document. The text between <a> and </a> is a link,
-# that causes to switch to HTML rendering of the document.
-commandline.disabledForXMLDocs=Firebug 禁用了 XML 页面的命令行。你可以<a>切换到 HTML 面板</a>来启用命令行。
-# LOCALIZATION NOTE (commandline.Use_in_Command_Line): Right-click option for copying a JS value into the variable
-# $p and opening the Command Line.
-commandline.Use_in_Command_Line=在命令行中使用
-commandline.tip.Use_in_Command_Line=切换到命令行,使用 "$p" 可以获取该值
-# LOCALIZATION NOTE (commandline.include.includeSuccess): For the include() function. This message is displayed
-# in the Console panel when a remote script evaluation succeeded
-# %S = the filename
-commandline.include.includeSuccess=%S 已经正常加载
-# LOCALIZATION NOTE (commandline.include.aliasNotFound): For the include() function. This message is displayed
-# in the Console panel when a requested alias is not found
-# %S = the alias name
-commandline.include.aliasNotFound=未找到别名 "%S"
-# LOCALIZATION NOTE (commandline.include.loadFail): For the include() function. This message is displayed
-# in the Console panel when the remote script download failed
-# %S = the filename
-commandline.include.loadFail=以下脚本未能加载成功: %S
-# LOCALIZATION NOTE (commandline.include.invalidRequestProtocol): For the include() function. This message is displayed
-# in the Console panel when the user tries to download a script with another scheme than HTTP(S)
-# %S = the filename
-commandline.include.invalidRequestProtocol=仅支持 HTTP/HTTPS 协议
-# LOCALIZATION NOTE (commandline.include.invalidSyntax): For the include() function. This message is displayed
-# in the Console panel when the user tries to execute a non-Javascript file
-# or when the script contains syntax errors
-commandline.include.invalidSyntax=加载因语法错误而失败。确定是 JavaScript 文件吗?
-# LOCALIZATION NOTE (commandline.include.aliasCreated): For the include() function. This message is displayed
-# in the Console panel when a new alias is created successfully
-# %S = the alias name
-commandline.include.aliasCreated=已创建别名 "%S"
-# LOCALIZATION NOTE (commandline.include.aliasRemoved): For the include() function. This message is displayed
-# in the Console panel when a new alias is removed successfully
-# %S = the alias name
-commandline.include.aliasRemoved=已移除别名 "%S"
-# LOCALIZATION NOTE (commandline.include.invalidAliasName): For the include() function. This message is displayed
-# in the Console panel if an invalid alias name (which contains "/" or ".") is provided.
-# %S = the invalid alias name
-commandline.include.invalidAliasName=别名中不能包含 "." 或者 "/";无效的别名: "%S"
-# LOCALIZATION NOTE (commandline.include.tooLongAliasName): For the include() function. This message is displayed
-# in the Console panel if the provided alias name is too long (i.e. more than 30 characters)
-# %S = the invalid alias name
-commandline.include.tooLongAliasName=别名不能包含多于 30 个字符;无效的别名: "%S"
-# LOCALIZATION NOTE (commandline.include.wrongAliasArgument): For the include() function. This message is displayed
-# in the Console panel if the type of the alias name is invalid (a string is expected)
-commandline.include.invalidAliasArgumentType=无效的第二个参数;应该是别名
-# LOCALIZATION NOTE (commandline.include.wrongUrlArgument): For the include() function. This message is displayed
-# in the Console panel if the type of the url arguement is invalid (a string or null are expected)
-commandline.include.invalidUrlArgumentType=无效的 URL 参数
-# LOCALIZATION NOTE (commandline.include.confirmDelete): For the include() function. This message is displayed
-# in a confirmation dialog when the user wants to delete an alias
-# %S = the name of the alias to delete
-commandline.include.confirmDelete=确认要删除这个别名: "%S"?
-# LOCALIZATION NOTE (commandline.include.noDefinedAlias): For the include() function. This message is displayed
-# when the user wants to display the aliases table but there no alias is defined.
-commandline.include.noDefinedAlias=(尚未定义任何别名)
-commandline.tip.Delete_Alias=删除别名
-commandline.tip.Edit_Alias_Name=编辑别名
-commandline.tip.Edit_Alias_URL=编辑别名的 URL
-commandline.tip.Open_In_Scratchpad=在代码片段速记器中打开脚本内容
-commandline.tip.Include_Script=下载并执行脚本
-commandline.label.DeleteAlias=删除别名
-commandline.label.EditAliasName=编辑别名
-commandline.label.EditAliasURL=编辑别名 URL
-commandline.label.OpenInScratchpad=在代码片段速记器中打开
-commandline.label.IncludeScript=加载 "%S"
-# LOCALIZATION NOTE (Do_not_show_this_message_again):
-# Message within a confirmation dialog that is displayed when deleting things.
-# This message is displayed next to a check-box that can be used to disabled this
-# confirmation.
-#
-# NOTE to translators: this message was originally taken from cookies.msg.Do_not_show_this_message_again
-Do_not_show_this_message_again=不再显示该信息
-# LOCALIZATION NOTE (scratchpad.loading, scratchpad.failLoading)
-# Used when Firebug downloads a remote script and wants to display it in Scratchpad
-# The messages appears as Javascript Comments in Scratchpad
-scratchpad.loading=加载中,请稍候...
-scratchpad.failLoading=加载脚本时出错
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
-# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
-# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
-# sent and received headers size.
-net.sizeinfo.Response_Body=响应正文
-net.sizeinfo.Post_Body=Post 内容
-net.sizeinfo.Total_Sent=总计发送
-net.sizeinfo.Total_Received=总计接收
-net.sizeinfo.Including_HTTP_Headers=含 HTTP 头信息
-net.ActivationMessage=网络面板已激活。在面板未激活时的任何请求都不会被显示。
-net.responseSizeLimitMessage=Firebug 达到了响应大小限制。单击<a>此处</a>以在新 Firefox 标签页中打开完整的响应。
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
-# panel (inside the Post tab of an expanded request entry). The message informs the user that
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.
-net.postDataSizeLimitMessage=Firebug 达到了 Post 请求大小限制。
-net.Break_On_XHR=在 XHR 时中断
-net.label.Parameters=参数
-net.label.Parts=部分
-net.label.Source=源代码
-# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
-# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
-net.label.Resend=重新发送
-net.tip.Resend=重新发送请求
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
-# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
-net.option.Disable_Browser_Cache=禁用浏览器缓存
-net.option.tip.Disable_Browser_Cache=禁用浏览器的 HTTP 缓存
-# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
-# Net panel option (located in tab's option menu). If set to true, the Net panel displays
-# MozAfterPaint events.
-# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
-net.option.Show_Paint_Events=显示 Paint 事件
-net.option.tip.Show_Paint_Events=在时间线中以绿色线条显示 MozAfterPaint 事件
-# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
-# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
-# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
-net.option.Show_BFCache_Responses=显示 BFCache 响应
-net.option.tip.Show_BFCache_Responses=显示来自后退/前进缓存的响应
-# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
-# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
-# (breaking on next executed JavaScript statement)
-script.Break_On_Next=在下一语句处中断
-script.Disable_Break_On_Next=停用在下一语句处中断
-ShowHttpHeaders=显示 HTTP 头信息
-# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
-# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
-# %1 = Number of requests
-# example: 21 requests
-plural.Request_Count2=%S 个请求
-# LOCALIZATION NOTE (net.summary.from_cache):
-# Label used in the Net panel's request summary. Displays the summarized response size coming from cache for all HTTP requests.
-net.summary.from_cache=%S 来自缓存
-# LOCALIZATION NOTE (net.summary.tip.request_count, net.summary.tip.total_size,
-# net.summary.tip.total_cached_size, net.summary.tip.total_request_time):
-# Labels used for the tooltips in the Net panel's request summary
-net.summary.tip.request_count=请求总数
-net.summary.tip.total_size=所有响应的总大小
-net.summary.tip.total_cached_size=来自缓存的响应的总大小
-net.summary.tip.total_request_time=加载请求所需的全部时间和 'load' 事件发生的时间
-StopLoading=停止载入
-net.tip.Stop_Loading=停止载入该请求
-LargeData=(大数据)
-ShowComputedStyle=显示计算出的样式
-StyleGroup-text=文本
-StyleGroup-background=背景
-StyleGroup-box=盒模型
-StyleGroup-layout=布局
-StyleGroup-other=其它
-Dimensions=%S x %S
-# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
-# Context menu item for color values inside the CSS panel.
-# Copies the color value to the clipboard.
-CopyColor=复制颜色
-css.tip.Copy_Color=复制颜色到剪贴板
-# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
-# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
-# Context menu items for images inside the CSS panel.
-# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
-CopyImageLocation=复制图片路径
-css.tip.Copy_Image_Location=复制图片的 URL 到剪贴板
-OpenImageInNewTab=在新标签中打开图片
-css.tip.Open_Image_In_New_Tab=在新标签中打开图片
-# LOCALIZATION NOTE (OmitObjectPathStack, callstack.option.tip.Omit_Object_Path_Stack):
-# Stack side panel option (located in tab's option menu). If set to true,
-# the object path stack won't be displayed.
-OmitObjectPathStack=省略工具栏堆栈
-callstack.option.tip.Omit_Object_Path_Stack=不显示对象路径堆栈
-Load_Original_Source=载入原始源代码
-css.tip.Load_Original_Source=放弃改动并载入原始 CSS
-# LOCALIZATION NOTE (callstack.option.Show_Arguments, callstack.option.tip.Show_Arguments):
-# Stack side panel option (located in tab's option menu). If set to true,
-# function arguments are displayed
-callstack.option.Show_Arguments=显示参数
-callstack.option.tip.Show_Arguments=同时显示函数的参数
-# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule including all its properties to the clipboard.
-Copy_Rule_Declaration=复制规则(选择器+样式声明)
-css.tip.Copy_Rule_Declaration=复制规则(选择器+所有样式声明)到剪贴板
-# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
-# Menu item label and tooltip used in CSS panel/Style side panel context menu.
-# Allows copying the current CSS rule's properties to the clipboard.
-Copy_Style_Declaration=复制样式声明
-css.tip.Copy_Style_Declaration=复制所有样式声明到剪贴板
-# LOCALIZATION NOTE (css.label.Copy_Property_Declaration, css.tip.Copy_Property_Declaration,
-# css.label.Copy_Property_Name, css.tip.Copy_Property_Name, css.label.Copy_Property_Value,
-# css.tip.Copy_Property_Value):
-# Menu item labels and tooltips used in CSS panel/Style side panel context menu.
-# Allow copying the current CSS property's declaration/name/value to the clipboard.
-css.label.Copy_Property_Declaration=复制样式声明
-css.tip.Copy_Property_Declaration=复制该样式声明到剪贴板
-css.label.Copy_Property_Name=复制样式名称
-css.tip.Copy_Property_Name=复制该样式名称到剪贴板
-css.label.Copy_Property_Value=复制样式内容
-css.tip.Copy_Property_Value=复制该样式内容到剪贴板
-# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
-# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
-# %1 = Number of errors
-# example: 111 Errors
-plural.Error_Count2=%S 个错误
-moduleManager.title=%S 面板已被禁用
-moduleManager.desc3=使用 Firebug 的工具栏图标来同时启用或禁用所有面板。单独控制某一面板,请使用相应标签的菜单。
-moduleManager.Enable=启用
-Suspend_Firebug=挂起 Firebug
-Resume_Firebug=恢复 Firebug
-Reset_Panels_To_Disabled=重置各面板为禁用
-Open_Console=打开控制台
-Open_Console_Tooltip=为 Firebug 打开跟踪控制台
-Scope_Chain=作用域链
-# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
-# Names of kinds of scopes. Probably best left in English.
-# With: the scope inside of the with(obj) {} statement
-With_Scope=With
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
-Call_Scope=调用
-# Window: the scope inside of a Javascript window object.
-Window_Scope=窗口
-# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
-# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
-# requestinfo.WindowLoad):
-# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
-# waterfall graph in the Net panel.
-requestinfo.Blocking=阻挡
-requestinfo.Resolving=域名解析
-requestinfo.Connecting=建立连接
-requestinfo.Sending=发送请求
-requestinfo.Waiting=等待响应
-requestinfo.Receiving=接收数据
-requestinfo.ContentLoad='DOMContentLoaded' (事件)
-requestinfo.WindowLoad='load' (事件)
-# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
-# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
-requestinfo.started.label=该请求开始的时间
-requestinfo.phases.label=请求各阶段的开始时间和持续时间:
-requestinfo.timings.label=事件相对该请求开始的时间:
-search.Firebug_Search=Firebug 搜索
-# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
-# search.Multiple_Files, search.Use_Regular_Expression):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-search.Next=下一个
-search.tip.Next=搜索下一匹配
-search.Previous=上一个
-search.tip.Previous=搜索上一匹配
-search.Case_Sensitive=区分大小写
-search.tip.Case_Sensitive=搜索时区分大小写
-search.Case_Insensitive=不区分大小写
-search.tip.Case_Insensitive=搜索时不区分大小写
-search.Multiple_Files=多个文件
-search.tip.Multiple_Files=在与此面板相关的所有文件中搜索
-search.Use_Regular_Expression=使用正则表达式
-search.tip.Use_Regular_Expression=使用正则表达式进行搜索
-# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
-# search.script.Multiple_Files):
-# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
-# These labels are specific to a certain panel.
-search.html.CSS_Selector=CSS 选择器
-search.net.Headers=头信息
-search.net.Parameters=参数
-search.net.Response_Bodies=响应正文
-search.net.tip.Response_Bodies=同时在响应正文中搜索
-firebug.console.Persist=保持
-firebug.console.Do_Not_Clear_On_Reload2=页面重新载入时不清空面板
-firebug.console.Show_All_Log_Entries=显示所有日志
-firebug.console.Errors=错误
-firebug.console.Filter_by_Errors=只显示错误
-firebug.console.Warnings=警告
-firebug.console.Filter_by_Warnings=只显示警告
-firebug.console.Info=消息
-firebug.console.Filter_by_Info=只显示消息
-firebug.console.Debug_Info=调试信息
-firebug.console.Filter_by_Debug_Info=只显示调试信息
-firebug.Deactivate_Firebug=停用 Firebug
-firebug.tip.Deactivate_Firebug=对当前网站停用 Firebug
-# LOCALIZATION NOTE (firebug.tip.Toggle_Side_Panels): A tooltip used for side panels visibility
-# toggle button. The button is available on the right side of panel's toolbar (only for panels
-# that have a side panel).
-firebug.tip.Toggle_Side_Panels=切换侧面板是否可见
-firebug.ShowFirebug=打开 Firebug
-firebug.menu.tip.Open_Firebug=显示 Firebug 界面
-firebug.HideFirebug=隐藏 Firebug
-firebug.menu.tip.Minimize_Firebug=最小化 Firebug, 保持激活状态
-firebug.FocusFirebug=将焦点移动到 Firebug 窗口
-firebug.menu.tip.Focus_Firebug=将焦点移动到独立的 Firebug 窗口
-firebug.menu.Enable_All_Panels=启用所有面板
-firebug.menu.tip.Enable_All_Panels=启用所有按需激活面板
-firebug.menu.Disable_All_Panels=禁用所有面板
-firebug.menu.tip.Disable_All_Panels=禁用所有按需激活面板
-firebug.menu.Customize_shortcuts=自定义快捷键
-firebug.menu.tip.Customize_Shortcuts=自定义 Firebug 的快捷键
-firebug.Options=选项
-firebug.menu.tip.Options=Firebug 全局选项
-firebug.menu.Enable_Accessibility_Enhancements=启用辅助增强功能
-firebug.menu.tip.Enable_Accessibility_Enhancements=启用完全键盘控制及其它辅助增强功能
-firebug.menu.Activate_Same_Origin_URLs2=在同源 URL 上激活
-firebug.menu.tip.Activate_Same_Origin_URLs=为符合同源性限制的 URL 激活 Firebug
-firebug.menu.Reset_All_Firebug_Options=重置所有 Firebug 选项
-firebug.menu.tip.Reset_All_Firebug_Options=重置所有 Firebug 选项为默认值
-firebug.menu.Firebug_Online=Firebug 在线
-firebug.menu.tip.Firebug_Online=与 Firebug 相关的网站
-firebug.menu.Extensions=Firebug 扩展...
-firebug.menu.tip.Extensions=下载和安装 Firebug 扩展
-firebug.menu.Vertical_Panels=垂直面板
-firebug.menu.tip.Vertical_Panels=切换 Firebug 主/侧面板的布局
-firebug.menu.Show_Info_Tips=显示信息提示
-firebug.menu.tip.Show_Info_Tips=显示含有悬停元素信息的弹出提示
-firebug.Show_Error_Count=显示错误数
-firebug.menu.tip.Show_Error_Count=显示控制台中记录的错误数量
-firebug.TextSize=文本大小
-firebug.menu.tip.Text_Size=改变 Firebug 使用的文本大小
-firebug.IncreaseTextSize=放大
-firebug.menu.tip.Increase_Text_Size=增大 Firebug 使用的文本大小
-firebug.DecreaseTextSize=缩小
-firebug.menu.tip.Decrease_Text_Size=减小 Firebug 使用的文本大小
-firebug.NormalTextSize=重置
-firebug.menu.tip.Normal_Text_Size=重置 Firebug 使用的文本大小
-firebug.Website=Firebug 官网...
-firebug.menu.tip.Website=打开 Firebug 官方网站
-firebug.help=帮助...
-firebug.menu.tip.help=打开 Firebug 的帮助页面
-firebug.Documentation=文档...
-firebug.menu.tip.Documentation=打开 Firebug 文档
-firebug.KeyShortcuts=快捷键...
-firebug.menu.tip.Key_Shortcuts=打开 Firebug 中可用的鼠标和键盘快捷键列表
-firebug.Forums=讨论组...
-firebug.menu.tip.Forums=打开讨论组站点
-firebug.Issues=问题跟踪...
-firebug.menu.tip.Issues=打开问题跟踪站点
-firebug.Donate=贡献...
-firebug.menu.tip.Donate=打开贡献站点
-firebug.About=关于...
-firebug.menu.tip.About=关于 Firebug 的信息
-ProfileJavaScript=JavaScript 概况
-firebug.menu.tip.Profile_JavaScript=JavaScript 执行时间概况
-firebug.Search=搜索
-firebug.menu.tip.Search=将焦点移动到 Firebug 搜索
-# Firebug shortcuts
-firebug.shortcut.reenterCommand.label=重新输入命令
-firebug.shortcut.tip.reenterCommand=将最后一条命令重新输入命令行
-firebug.shortcut.toggleInspecting.label=切换查看
-firebug.shortcut.tip.toggleInspecting=启用/禁用页面查看器
-firebug.shortcut.toggleQuickInfoBox.label=切换快速信息框
-firebug.shortcut.tip.toggleQuickInfoBox=启用/禁用显示有当前查看元素信息的面板
-firebug.shortcut.toggleProfiling.label=切换概况
-firebug.shortcut.tip.toggleProfiling=启用/禁用 JavaScript 概况
-firebug.shortcut.focusCommandLine.label=将焦点移动到命令行
-firebug.shortcut.tip.focusCommandLine=打开 Firebug 并将焦点移动到命令行/切换命令行弹出
-firebug.shortcut.focusFirebugSearch.label=将焦点移动到 Firebug 搜索
-firebug.shortcut.tip.focusFirebugSearch=将焦点移动到 Firebug 搜索
-firebug.shortcut.focusWatchEditor.label=将焦点移动到监控编辑器
-firebug.shortcut.tip.focusWatchEditor=切换到脚本面板并将焦点移动到监控表达式编辑器
-firebug.shortcut.focusLocation.label=将焦点移动到地址列表
-firebug.shortcut.tip.focusLocation=打开地址列表菜单
-firebug.shortcut.nextObject.label=下一个对象
-firebug.shortcut.tip.nextObject=选中面板元素路径中的下一个对象
-firebug.shortcut.previousObject.label=上一个对象
-firebug.shortcut.tip.previousObject=选中面板元素路径中的上一个对象
-firebug.shortcut.customizeFBKeys.label=自定义 Firebug 快捷键
-firebug.shortcut.tip.customizeFBKeys=打开 Firebug 快捷键自定义对话框
-firebug.shortcut.detachFirebug.label=在新窗口中打开 Firebug
-firebug.shortcut.tip.detachFirebug=在独立窗口中打开 Firebug
-firebug.shortcut.leftFirebugTab.label=切换到 Firebug 左面板
-firebug.shortcut.tip.leftFirebugTab=切换到 Firebug 左侧的面板
-firebug.shortcut.rightFirebugTab.label=切换到 Firebug 右面板
-firebug.shortcut.tip.rightFirebugTab=切换到 Firebug 右侧的面板
-firebug.shortcut.toggleFirebug.label=打开 Firebug
-firebug.shortcut.tip.toggleFirebug=打开/最小化 Firebug 界面
-firebug.shortcut.closeFirebug.label=停用 Firebug
-firebug.shortcut.tip.closeFirebug=对当前网站停用 Firebug
-firebug.shortcut.previousFirebugTab.label=上一个 Firebug 面板
-firebug.shortcut.tip.previousFirebugTab=切换到上次选中的 Firebug 面板
-firebug.shortcut.clearConsole.label=清空控制台
-firebug.shortcut.tip.clearConsole=清空控制台中的所有日志
-firebug.shortcut.openTraceConsole.label=打开跟踪控制台
-firebug.shortcut.tip.openTraceConsole=打开 FBTrace 控制台
-firebug.shortcut.navBack.label=后退
-firebug.shortcut.tip.navBack=切换到上一个面板或地址列表项
-firebug.shortcut.navForward.label=前进
-firebug.shortcut.tip.navForward=切换到下一个面板或地址列表项
-firebug.shortcut.increaseTextSize.label=放大文本
-firebug.shortcut.tip.increaseTextSize=增大 Firebug 使用的文本大小
-firebug.shortcut.decreaseTextSize.label=缩小文本
-firebug.shortcut.tip.decreaseTextSize=减小 Firebug 使用的文本大小
-firebug.shortcut.normalTextSize.label=重置文本大小
-firebug.shortcut.tip.normalTextSize=重置 Firebug 使用的文本大小
-firebug.shortcut.help.label=打开帮助
-firebug.shortcut.tip.help=打开常见问题答案页面
-firebug.shortcut.toggleBreakOn.label=切换在...时中断
-firebug.shortcut.tip.toggleBreakOn=启用/禁用在面板中有特定事件发生时停止 Javascript 的执行
-firebug.panel_selector=面板选择器
-customizeShortcuts=Firebug 快捷键绑定
-# A11y Chrome Labels (not visible, spoken by screen readers)
-a11y.labels.panel_tools=面板工具
-a11y.labels.firebug_panels=Firebug 面板
-a11y.labels.firebug_side_panels=Firebug 侧面板
-a11y.labels.firebug_window=Firebug 窗口
-a11y.labels.firebug_status=Firebug 状态
-a11y.labels.reset=重置
-a11y.labels.reset_shortcut=重置 %S 快捷键
-aria.labels.inactive_panel=非活动面板
-# A11y panelNode labels (not visible, spoken by screen readers)
-a11y.labels.log_rows=日志行
-a11y.labels.call_stack=堆栈
-a11y.labels.document_structure=文档结构
-a11y.labels.title_panel= %S 面板
-a11y.labels.title_side_panel= %S 侧面板
-a11y.labels.cached=已缓存
-aria.labels.stack_trace=堆栈状态
-# A11y Domplate labels (not visible, spoken by screen readers)
-a11y.layout.padding=内边距
-a11y.layout.border=边框
-a11y.layout.margin=外边距
-a11y.layout.position=定位
-a11y.layout.position_top=上偏移量
-a11y.layout.position_right=右偏移量
-a11y.layout.position_bottom=下偏移量
-a11y.layout.position_left=左偏移量
-a11y.layout.margin_top=上外边距
-a11y.layout.margin_right=右外边距
-a11y.layout.margin_bottom=下外边距
-a11y.layout.margin_left=左外边距
-a11y.layout.border_top=上边框
-a11y.layout.border_right=右边框
-a11y.layout.border_bottom=下边框
-a11y.layout.border_left=左边框
-a11y.layout.padding_top=上内边距
-a11y.layout.padding_right=右内边距
-a11y.layout.padding_bottom=下内边距
-a11y.layout.padding_left=左内边距
-a11y.layout.top=上
-a11y.layout.right=右
-a11y.layout.bottom=下
-a11y.layout.left=左
-a11y.layout.width=宽度
-a11y.layout.height=高度
-a11y.layout.size=大小
-a11y.layout.z-index=z 指数
-a11y.layout.box-sizing=盒模型尺寸基准
-a11y.layout.clientBoundingRect=边界矩形
-a11y.descriptions.press_enter_to_edit_values=按回车和 TAB 键来编辑每一个值
-a11y.labels.style_rules=样式规则
-aria.labels.inherited_style_rules=继承来的样式
-a11y.labels.computed_styles=计算出的样式
-a11y.labels.dom_properties=DOM 属性
-# LOCALIZATION NOTE:
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Describe contents of inline editor fields
-a11y.labels.inline_editor=内置编辑器
-a11y.labels.value_for_attribute_in_element=%2$S 元素 %1$S 属性的值
-a11y.labels.attribute_for_element=%S 元素的属性
-a11y.labels.text_contents_for_element=%S 元素的文本内容
-a11y.labels.defined_in_file=在 %S 中定义
-a11y.labels.declarations_for_selector=%S 选择器的样式声明
-a11y.labels.property_for_selector=%S 选择器的 CSS 属性
-a11y.labels.value_property_in_selector=%2$S 选择器 %1$S 属性的值
-a11y.labels.css_selector=CSS 选择器
-a11y.labels.source_code_for_file=文件 %S 的源代码
-a11y.labels.press_enter_to_add_new_watch_expression=按回车以添加新的监控表达式
-# LOCALIZATION NOTE (a11y.labels.overridden):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Indicates, that a style property is overridden by selector with higher specificity
-a11y.labels.overridden=被覆盖
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
-# Used by a11y. Not directly visible in the UI, intended for screen readers.
-# Existence and state of a breakpoint
-a11y.updates.has_conditional_break_point=有条件断点
-a11y.updates.has_disabled_break_point=禁用了断点
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# first %S = Line number, second %S = Function name, third %S = File name
-a11y.updates.script_suspended_on_line_in_file=脚本在文件 %3$S 第 %1$S 行的 %2$S 函数中挂起
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a console panel search
-# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
-# examples: Match found for "test" in 17 log rows
-a11y.updates.match_found_in_logrows=在日志的第 %2$S 行找到了"%1$S"的匹配
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a script panel search
-# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
-# examples: Match found for "window.alert" on line 322 in utilities.js
-a11y.updates.match_found_for_on_line=在文件 %3$S 的第 %2$S 行找到了"%1$S"的匹配
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an element node)
-# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
-# example: Match found for "obj" in object element at /html/body/object[2]
-a11y.updates.match_found_in_element=在 XPath 为 %3$S 的 %2$S 元素中找到了"%1$S"的匹配
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-a11y.updates.match_found_in_attribute=在 XPath 为 %5$S 的 %4$S 元素中找到了与"%1$S"匹配的属性 %2$S=%3$S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-a11y.updates.match_found_in_text_content=在 XPath 为 %4$S 的 %3$S 元素中找到了与"%1$S"匹配的文本 %2$S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-a11y.updates.match_found_in_selector=找到了与"%S"匹配的选择器 %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-a11y.updates.match_found_in_style_declaration=在 %3$S 选择器中找到了与"%1$S"匹配的样式声明 %2$S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-a11y.updates.match_found_in_dom_property=找到了与"%S"匹配的 DOM 属性 %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-a11y.updates.match_found_in_net_row=在 %2$S 中找到了与"%1$S"匹配的 %3$S : %4$S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-a11y.updates.match_found_in_net_summary_row=在网络概要中找到了与"%S"匹配的 %S
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-a11y.updates.no_matches_found=没有找到"%S"的匹配
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-confirmation.Reset_All_Firebug_Options=你确认要重置所有 Firebug 选项为默认状态吗?
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-confirmation.Edit_CSS_Source=您对 CSS 的已有编辑将被放弃\n您确定要编辑 CSS 源代码吗?
-# Console messages
-warning.Console_must_be_enabled=必须启用控制台
-warning.Command_line_blocked?=命令行被阻止了?
-warning.dollar_change=控制台命令行函数 $() 已经由 getElementById(id) 改为 querySelector(selector)。你可能需要改用 $("#%S")。
-message.Reload_to_activate_window_console=重新载入以激活控制台
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-message.sourceNotAvailableFor=重新载入页面以获取源代码
-message.The_resource_from_this_URL_is_not_text=此 URL 的资源不是文本
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-firebug.history.Go_back_to_this_panel=后退到此面板
-firebug.history.Stay_on_this_panel=停留在此面板
-firebug.history.Go_forward_to_this_panel=前进到此面板
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-# Tooltips for back/forward buttons on the Script panel toolbar.
-firebug.history.Go_back=后退
-firebug.history.Go_forward=前进
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-# to reload the sources
-script.warning.inactive_during_page_load=脚本面板在页面载入时未激活
-script.suggestion.inactive_during_page_load2=<a>重新载入</a>以查看所有源代码
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.javascript_not_enabled=Javascript 未启用
-script.suggestion.javascript_not_enabled=请查看 Firefox > '工具' > '选项' > '内容' > '启用 JavaScript'
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-script.button.enable_javascript=启用 Javascript 并刷新
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.all_scripts_filtered=所有脚本均被过滤
-script.suggestion.all_scripts_filtered=请查看工具栏上的脚本过滤设置
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_system_source_debugging=无法调试系统源代码
-script.suggestion.no_system_source_debugging=Firebug 目前无法用于系统源代码的调试。查看 <a>issue 5110</a> 来了解原因。
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.no_javascript=本页面不包含 Javascript
-script.suggestion.no_javascript2=如果 <script> 标签有 "type" 属性, 其值应为 "text/javascript" 或者 "application/javascript". 另外脚本必须可解析(语法上正确)。
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=调试器已经激活
-script.suggestion.debugger_active=调试器当前停止在另一页面的断点上
-script.button.Go_to_that_page=切换到上述页面
-script.warning.debugger_not_activated=调试器未激活
-script.suggestion.debugger_not_activated=调试器未激活
-# LOCALIZATION NOTE (script.Script_panel_must_be_enabled): Adds a parenthetical note to a tooltip
-# about the Script panel having to be enabled.
-# %S = original message
-# example: "Profile JavaScript execution time (Script panel must be enabled)"
-script.Script_panel_must_be_enabled=%S (必须启用脚本面板)
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=关闭
-firebug.View=查看
-firebug.Help=帮助
-firebug.Run=运行
-firebug.Copy=复制
-firebug.History=历史
-firebug.Run_the_entered_command=运行输入的命令
-firebug.Clear_the_Command_Editor=清空命令行编辑器
-firebug.Copy_the_script_as_a_bookmarklet=复制脚本为书签
-firebug.Insert_a_previously_entered_command=插入早先输入的命令
-firebug.AlwaysOpenInWindow=总在新窗口中打开
-firebug.OpenWith=在编辑器中打开
-firebug.menu.tip.Open_With=在外部编辑器中打开内容
-firebug.Permissions=站点...
-firebug.Configure_Editors=配置编辑器
-script.tip.Script_Type=根据脚本类型过滤
-script.tip.Script_Filter_Static=仅显示与页面一起载入的脚本
-script.tip.Script_Filter_Evals=显示与页面一起载入的脚本和通过 eval() 产生的脚本
-script.tip.Script_Filter_Events=显示与页面一起载入的脚本、通过 eval() 产生的脚本和事件监听函数
-script.tip.Script_Filter_All=显示所有类型的脚本
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=重新运行
-script.tip.Rerun=重新运行当前的函数调用堆栈
-script.Continue=断续
-script.tip.Continue=继续执行 JavaScript
-script.Step_Over=单步跳过
-script.tip.Step_Over=执行下一命令
-script.Step_Into=单步进入
-script.tip.Step_Into=执行下一命令并进入函数
-script.Step_Out=单步退出
-script.tip.Step_Out=执行函数余下的部分并返回到其调用者
-firebug.RunUntil=运行到这一语句
-script.tip.Run_Until=执行 JavaScript 直到特定行
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=查看
-firebug.InspectElement=查看元素
-firebug.InspectElementWithFirebug=使用 Firebug 查看元素
-firebug.BreakOnErrors=在错误处中断
-firebug.InspectTooltip=点击查看页面中的元素
-firebug.EditHTMLTooltip=编辑 HTML
-firebug.Profile=概况
-firebug.Clear=清除
-firebug.ClearConsole=清空控制台
-firebug.ClearTooltip=清空控制台
-# editors.dtd
-editors.Configured_Firebug_Editors=已配置的 Firebug 编辑器
-editors.Editor=编辑器
-editors.Executable=可执行文件
-editors.Launch_Arguments=运行参数
-editors.Add=添加
-editors.Remove=删除
-editors.Change=更改
-editors.Move_Up=上移
-editors.Close=关闭
-editors.Browse=浏览...
-changeEditor.Editor_Configuration=编辑器配置
-changeEditor.Name=名字:
-changeEditor.Executable=可执行文件:
-changeEditor.CmdLine=参数:
-changeEditor.Supplied_arguments=Firebug 提供的参数:
-changeEditor.URL_of_file=文件的 URL (如果 %url 不存在,将默认使用 %file)
-changeEditor.Path_to_local_file=本地文件(或临时文件)的路径
-changeEditor.Line_number=行号(如果可用)
-changeEditor.Invalid_Application_Path=无效的应用程序路径
-changeEditor.Application_does_not_exist=指定的应用程序不存在!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=编辑
-firebug.css.sourceEdit=CSS 源代码编辑
-firebug.css.sourceEdit.tooltip=编辑 CSS 源代码 (放弃已有修改)
-firebug.css.liveEdit=CSS 实时编辑
-firebug.css.liveEdit.tooltip=编辑当前 CSS (保留已有修改)
-firebug.EditCSSTooltip=编辑样式表
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=隐私浏览模式下站点将不被记录
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=显示断点通知
-firebug.breakpoint.tip.Show_Break_Notifications=当"在...时中断"功能或者"debugger"关键词停止 Javascript 的执行时显示通知
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=你可以在<a>面板菜单</a>里禁用/启用断点通知
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=点击"禁用"将以一个禁用的断点覆盖"debugger"关键词
-firebug.bon.tooltip.disableDebuggerKeyword2=创建一个禁用的断点
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(要使用本功能,必须启用脚本面板)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=没有子对象
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=更多
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=检测到循环引用
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=存储中有 %S 个项目
-# LOCALIZATION NOTE (firebug.reps.historyEntries): Semicolon list of plural forms.
-# Displayed when evaluating "history" - informs the user about the number of entries in history.
-# %1 = Number of history entries
-firebug.reps.historyEntries=%1$S 条历史
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=对象属性
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(无自动补全)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=URL 对象很可能已经被 revokeObjectURL 方法撤销
-firebug.failedToPreviewImageURL=载入指定 URL 失败
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=内存概况开始
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=概况运行中添加的对象
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=内存概况结果
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=整个会话
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(无输出)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(空字符串)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=检测到了 Firecookie 扩展。该扩展已经默认集成到 Firebug 1.10 中。为避免冲突,请卸载 Firecookie。\n\n必须重启浏览器来完成扩展的卸载。
-cookies.legacy.uninstall=卸载
-cookies.legacy.uninstall_and_restart=卸载并重启
-# LOCALIZATION NOTE (console.cmd.help_title, console.cmd.help_title_desc):
-console.cmd.help_title=命令行 API
-console.cmd.help_title_desc=按 F1 打开在线 Firebug 帮助
-# LOCALIZATION NOTE (console.cmd.tip_title, console.cmd.tip_title_desc):
-console.cmd.tip_title=命令行小提示
-console.cmd.tip_title_desc=关于使用命令行的提示和技巧
-# LOCALIZATION NOTE (console.cmd.tip.javascript, console.cmd.tip.closures):
-# Description for Command Line tips that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.tip.javascript=命令行中可以执行任何有效 JavaScript 表达式。例如:
-console.cmd.tip.closures=使用 '.%' 语法(<a>了解更多</a>)来获取闭包中的变量。例如:
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=返回指定 id 的单个元素
-console.cmd.help.$$=返回与指定 CSS 选择器匹配的元素的数组
-console.cmd.help.$x=返回与指定 XPath 表达式匹配的元素的数组
-console.cmd.help.dir=打印指定对象所有属性的互动列表。与 DOM 面板中的视图一致
-console.cmd.help.dirxml=打印指定 HTML/XML 元素的 XML 源码树。与 HTML 面板中的视图一致。单击任意节点以在 HTML 面板中查看它
-console.cmd.help.cd=命令行表达式默认对应于页面的顶层窗口。cd() 可用来在页面顶层窗口和指定框架窗口间切换
-console.cmd.help.clear=清空控制台
-console.cmd.help.copy=复制函数的返回值或者对象到剪贴板
-console.cmd.help.inspect=在最合适的面板中查看对象。可以通过第二个参数来指定面板,包括 "html", "stylesheet", "script", 和 "dom"
-console.cmd.help.keys=返回包含指定对象所有属性名称的数组
-console.cmd.help.values=返回包含指定对象所有属性值的数组
-console.cmd.help.debug=在指定函数的第一行添加断点
-console.cmd.help.undebug=移除指定函数第一行的断点
-console.cmd.help.monitor=打开对指定函数所有调用的日志
-console.cmd.help.unmonitor=关闭对指定函数所有调用的日志
-console.cmd.help.monitorEvents=打开指定对象所有事件的日志。可以通过第二个参数来指定只记录特定的事件/事件类型,包括 "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", 和 "clipboard"
-console.cmd.help.unmonitorEvents=关闭指定对象所有事件的日志。可以通过第二个参数来指定只停止记录特定的事件/事件类型。
-console.cmd.help.profile=开始收集 Javascript 概况。可以通过第二个参数来指定概况报告表头的文本
-console.cmd.help.profileEnd=停止记录 Javascript 概况并打印报告
-console.cmd.help.table=可用于以表格布局记录数组/对象的数组。可以通过第二个参数来指定只记录特定的列/属性
-console.cmd.help.$0=代表使用查看器选中的最后一个元素
-console.cmd.help.$1=代表使用查看器选中的倒数第二个元素
-console.cmd.help.$2=代表使用查看器选中的倒数第三个元素
-console.cmd.help.$3=代表使用查看器选中的倒数第四个元素
-console.cmd.help.$4=代表使用查看器选中的倒数第五个元素
-console.cmd.help.$n=返回使用查看器选中的最后五个元素之一。参数为从 0 开始的序号
-console.cmd.help.$_=代表命令行中执行的最后一个表达式的结果
-console.cmd.help.help=显示所有可用命令的帮助
-console.cmd.help.include=载入一个远程脚本
-console.cmd.help.$p=在一个 JavaScript 对象/值的上下文菜单中点击“在命令行中使用”,该变量会指向这个对象/值
-console.cmd.help.getEventListeners=返回一个包括直接注册在一个元素(或其它事件目标)上的所有事件处理函数的对象
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=该命令的帮助页面不可用
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=相对于文档加载的各阶段开始和持续时间:
-perftiming.events.label=相对于文档加载的事件时间:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=性能计时
-perftiming.details_title_desc=详细计时
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=完成与服务器建立连接
-perftiming.connectStart=开始与服务器建立连接
-perftiming.domComplete=文档的 readyState 变为 complete
-perftiming.domContentLoadedEventEnd=文档的 DOMContentLoaded 事件完成
-perftiming.domContentLoadedEventStart=文档的 DOMContentLoaded 事件被触发
-perftiming.domInteractive=文档的 readyState 变为 interactive
-perftiming.domLoading=文档的 readyState 变为 loading
-perftiming.domainLookupEnd=域名解析完成
-perftiming.domainLookupStart=域名解析开始
-perftiming.fetchStart=开始获取服务器/应用缓存/缓存/本地文件的资源
-perftiming.loadEventEnd=文档的 load 事件完成
-perftiming.loadEventStart=文档的 load 事件被触发
-perftiming.navigationStart=开始 unload 前一文档
-perftiming.redirectCount=经历的重定向总数
-perftiming.redirectEnd=最后一次同源重定向结束
-perftiming.redirectStart=引起第一次同源重定向的 fetchStart
-perftiming.requestStart=开始请求当前文档
-perftiming.responseEnd=完成收到响应/与服务器的连接被关闭
-perftiming.responseStart=开始收到响应
-perftiming.unloadEventEnd=前一同源文档的 unload 事件完成
-perftiming.unloadEventStart=前一同源文档的 unload 事件被触发
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
+# %S = Title of the associated web page.
+# examples: Firebug - Google
+WindowTitle=Firebug - %S
+# Panel titles
+Panel-console=控制台
+panel.tip.console=用于观察控制台消息和执行 Javascript 命令
+Panel-net=网络
+panel.tip.net=用于分析网络流量
+Panel-html=HTML
+panel.tip.html=用于查看和调整 DOM 节点
+Panel-stylesheet=CSS
+panel.tip.stylesheet=用于查看和调整 CSS 样式表
+Panel-script=脚本
+panel.tip.script=用于 JavaScript 调试
+Panel-dom=DOM
+panel.tip.dom=用于查看和调整 DOM 属性
+Panel-css=样式
+panel.tip.css=用于查看和调整选中 DOM 节点的 CSS 规则
+Panel-computed=计算出的样式
+panel.tip.computed=用于查看选中 DOM 节点的 CSS 计算样式
+Panel-layout=布局
+panel.tip.layout=用于查看和调整选中 DOM 节点的布局
+Panel-domSide=DOM
+panel.tip.domSide=用于查看和调整选中 DOM 节点的 DOM 属性
+Panel-watches=监控
+panel.tip.watches=用于查看当前堆栈中可用的 Javascript 变量以及定义监控表达式
+Panel-breakpoints=断点
+panel.tip.breakpoints=用于调整设置的断点
+Panel-callstack=堆栈
+panel.tip.callstack=用于观察当前的 Javascript 调用堆栈
+Panel-scopes=作用域
+firebug.DetachFirebug=在新窗口中打开 Firebug
+firebug.AttachFirebug=将 Firebug 嵌入浏览器窗口
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
+# If there is no Firebug translation for the current browser locale, this value
+# will be used instead of the one in chrome://global/locale/intl.properties
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+pluralRule=0
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semicolon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the number of pages with Firebug activated.
+# %1 = number of Firebug instances activated
+# example: 2 Total Firebugs
+plural.Total_Firebugs2=%S 个页面启用了 Firebug
+# LOCALIZATION NOTE (startbutton.tip.deactivated):
+# Used in a tooltip that is displayed for the Firebug icon located within Firefox toolbar.
+# Displays the deactivated status of Firebug
+startbutton.tip.deactivated=停用状态
+# LOCALIZATION NOTE (panel.status): Label showing the status of an activable panel
+# inside a tooltip when hovering the Start Button. Will be shown for each panel.
+# first %S = panel name
+# second %S = panel activation status
+# example: Console: On
+panel.status=%S: %S
+inBrowser=嵌入浏览器状态
+minimized=最小化状态
+enablement.for_all_pages=对所有页面
+enablement.on=启用
+enablement.off=禁用
+enablement.Panel_activation_status=面板激活状态:
+none=关闭状态
+Firebug_-_inactive_for_current_website=Firebug - 对当前网站未激活
+Activate_Firebug_for_the_current_website=为当前网站激活 Firebug
+Minimized=最小化状态
+Minimize_Firebug=最小化 Firebug
+On_for_all_web_pages=对所有网页启用
+firebug.menu.tip.On_for_all_Web_Sites=默认为所有网站激活 Firebug
+firebug.menu.Clear_Activation_List=清空激活列表
+firebug.menu.tip.Clear_Activation_List=清空激活了 Firebug 的网站列表
+firebug.menu.Detached=独立窗口状态
+firebug.menu.tip.Detached=在独立窗口中打开 Firebug
+firebug.menu.Top=上
+firebug.menu.tip.Top=在窗口上方打开 Firebug
+firebug.menu.Bottom=下
+firebug.menu.tip.Bottom=在窗口下方打开 Firebug
+firebug.menu.Left=左
+firebug.menu.tip.Left=在窗口左侧打开 Firebug
+firebug.menu.Right=右
+firebug.menu.tip.Right=在窗口右侧打开 Firebug
+firebug.uiLocation=Firebug 界面位置
+firebug.menu.tip.UI_Location=Firebug 界面的位置
+# LOCALIZATION NOTE (annotations.confirm.clear):
+# Used in a confirmation dialog when all Firebug annotations are going to be deleted
+annotations.confirm.clear=确定要清空激活了 Firebug 的网站列表吗?
+# LOCALIZATION NOTE (firebug_options): Tooltip text used for Firebug icon menu (them left
+# most button on Firebug main toolbar)
+firebug_options=Firebug 选项
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
+# menu (available on Firebug's tab bar).
+firebug.Show_All_Panels=显示所有面板
+console.option.Show_Command_Line=显示命令行
+console.option.tip.Show_Command_Line=将焦点移动到命令行/显示命令行
+# Console panel options (located in tab's option menu)
+ShowJavaScriptErrors=显示 JavaScript 错误
+console.option.tip.Show_JavaScript_Errors=在控制台中记录 JavaScript 错误消息
+ShowJavaScriptWarnings=显示 JavaScript 警告
+console.option.tip.Show_JavaScript_Warnings=在控制台中记录 JavaScript 警告消息
+ShowCSSErrors=显示 CSS 错误
+console.option.tip.Show_CSS_Errors=在控制台中记录 CSS 错误消息
+ShowXMLHTMLErrors=显示 XML/HTML 错误
+console.option.tip.Show_XML_HTML_Errors=在控制台中记录 XML/HTML 错误消息
+ShowStackTrace=显示堆栈状态及其错误
+console.option.tip.Show_Stack_Trace=显示错误的堆栈跟踪信息
+ShowXMLHttpRequests=显示 XMLHttpRequests
+console.option.tip.Show_XMLHttpRequests=在控制台中记录 XMLHttpRequest 请求
+ShowChromeErrors=显示 Chrome 错误
+console.option.tip.Show_System_Errors=在控制台中记录浏览器和扩展内部错误消息
+ShowChromeMessages=显示 Chrome 信息
+console.option.tip.Show_System_Messages=在控制台中记录浏览器和扩展内部消息
+ShowNetworkErrors=显示网络错误
+console.option.tip.Show_Network_Errors=在控制台中记录网络错误消息
+JavascriptOptionsStrict=严格警告 (有损性能)
+console.option.tip.Show_Strict_Warnings=在控制台中记录严格警告
+Command_History=命令行历史
+console.option.Show_Command_Editor=显示命令行编辑器
+console.option.tip.Show_Command_Editor=切换到命令行编辑器
+commandLineShowCompleterPopup=弹出自动补全列表
+console.option.tip.Show_Completion_List_Popup=弹出显示命令行自动补全提示
+Assertion=断言失败
+# LOCALIZATION NOTE (Line, LineAndCol): Used at many places in the UI. Displays the location
+# of an error, message, etc. within a source of a web page.
+# first %S = File name, second %S = Line number
+# examples: somePage.htm (line 64)
+# examples: somePage.htm (line 64, column 53)
+Line=%S (第 %S 行)
+LineAndCol=%S (第 %S 行,第 %S 列)
+InstanceLine=%S #%S (第 %S 行)
+StackItem=%S (%S 行 %S)
+SystemItem=<系统>
+# LOCALIZATION NOTE (InspectInPanel): Menu item label used in a various context menus.
+# For example, right clicking on an element in the HTML panel offers an action to inspect
+# clicked element in the DOM panel.
+# %S = Target panel title
+# examples: Inspect in DOM Panel
+panel.Inspect_In_Panel=在 %S 面板中查看
+panel.tip.Inspect_In_Panel=切换到 %S 面板并查看该对象
+NoName=(未命名)
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
+# do not translate.
+# %S = jsdIScript.tag
+jsdIScript=jsdIScript %S
+# LOCALIZATION NOTE (html.option.Show_Full_Text, html.option.tip.Show_Full_Text):
+# HTML panel option (located in tab's option menu). If set to true, contents
+# of an element will not be cropped
+ShowFullText=显示全文
+html.option.tip.Show_Full_Text=不要省略元素文本内容
+# LOCALIZATION NOTE (html.option.Show_Whitespace, html.option.tip.Show_Whitespace):
+# HTML panel option (located in tab's option menu). If set to true, whitepace inside of
+# nodes will be shown
+ShowWhitespace=显示空白符
+html.option.tip.Show_Whitespace=显示节点中的空白字符
+# LOCALIZATION NOTE (html.option.Show_Comments, html.option.tip.Show_Comments):
+# HTML panel option (located in tab's option menu). If set to true, comment nodes are displayed
+ShowComments=显示注释
+html.option.tip.Show_Comments=显示注释节点
+# LOCALIZATION NOTE (html.option.Show_Text_Nodes_With_Entities, html.option.tip.Show_Text_Nodes_With_Entities):
+# HTML panel option (located in tab's option menu). If set to true, special characters will be
+# shown in their entity representation, e.g. " => ", & => &
+html.option.Show_Entities_As_Symbols=显示字符实体为符号
+html.option.tip.Show_Entities_As_Symbols=显示所有 XML 实体的符号表示
+html.option.Show_Entities_As_Names=显示字符实体为名称
+html.option.tip.Show_Entities_As_Names=显示所有 XML 实体的名称
+html.option.Show_Entities_As_Unicode=显示字符实体为 Unicode
+html.option.tip.Show_Entities_As_Unicode=显示所有 XML 实体的 Unicode 表示
+# LOCALIZATION NOTE (html.option.Highlight_Mutations, html.option.tip.Highlight_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, changes to the nodes
+# will be highlighted
+HighlightMutations=高亮更改
+html.option.tip.Highlight_Mutations=高亮节点中的改变
+# LOCALIZATION NOTE (html.option.Expand_Mutations, html.option.tip.Expand_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be expanded to display changed nodes
+ExpandMutations=展开更改
+html.option.tip.Expand_Mutations=展开树状视图以显示改变的节点
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# HTML panel option (located in tab's option menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ScrollToMutations=滚动到更改处
+html.option.tip.Scroll_To_Mutations=滚动树状视图使改变的节点可见
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true,
+# a panel will be shown including information about the currently inspected element
+ShowQuickInfoBox=显示快速信息框
+inspect.option.tip.Show_Quick_Info_Box=在页面中浮动显示当前查看元素的相关信息
+# LOCALIZATION NOTE (html.option.Scroll_To_Mutations, html.option.tip.Scroll_To_Mutations):
+# Inspector option (located in HTML tab's option menu and Firebug menu). If set to true, the tree view
+# will be scrolled to display changed nodes
+ShadeBoxModel=为盒模型填充阴影
+inspect.option.tip.Shade_Box_Model=为盒模型的不同部分填充阴影
+ScrollIntoView=滚动到此处
+html.tip.Scroll_Into_View=滚动页面使该元素可见
+NewAttribute=新建属性...
+html.tip.New_Attribute=为该元素添加新属性
+html.Edit_Node=编辑 %S...
+html.Node=节点
+html.tip.Edit_Node=在编辑器中编辑 %S
+DeleteElement=删除元素
+html.Delete_Element=从页面的树状结构中删除该元素
+DeleteNode=删除节点
+html.Delete_Node=从页面的树状结构中删除该节点
+# Quick Info Box
+quickInfo=快速信息
+computedStyle=计算出的样式
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
+# button that are used when the HTML panel is currently selected. The button allows stopping
+# JS execution when DOM of the current page is modified.
+html.Break_On_Mutate=在 DOM 改变时中断
+html.Disable_Break_On_Mutate=停用在 DOM 改变时中断
+html.label.Break_On_Text_Change=在文本改变时中断
+html.label.HTML_Breakpoints=HTML 断点
+html.label.Break_On_Attribute_Change=在属性改变时中断
+html.tip.Break_On_Attribute_Change=在该元素的属性改变时停止 Javascript 的执行
+html.label.Break_On_Child_Addition_or_Removal=在添加或删除子元素时中断
+html.tip.Break_On_Child_Addition_or_Removal=在该元素中添加或删除子元素时停止 Javascript 的执行
+html.label.Break_On_Element_Removal=在删除元素时中断
+html.tip.Break_On_Element_Removal=在该元素被删除时停止 Javascript 的执行
+# LOCALIZATION NOTE (html.label.Expand/Contract_All, html.tip.Expand/Contract_All):
+# Used within the HTML for a context menu item. The user can expand/contract
+# the element and all its children to quickly see the entire hierarchical structure
+# or collapse it.
+html.label.Expand/Contract_All=全部展开/收起
+html.tip.Expand/Contract_All=递归的展开/收起所有子元素
+# LOCALIZATION NOTE (dom.scopeName): Used within the DOM panel to name the fake property that
+# contains the innermost closure scope of a function.
+dom.scopeName=(闭包)
+# LOCALIZATION NOTE (dom.scopeParentName): Used within the DOM panel to name the fake property
+# that contains the parent of a closure scope.
+dom.scopeParentName=(父作用域)
+# LOCALIZATION NOTE (dom.tip.scopeName): Used within the DOM panel as a tooltip when hovering
+# "(closure)".
+dom.tip.scopeName=在命令行中用 <函数名>.闭包变量名 来获得
+# LOCALIZATION NOTE (dom.tip.scopeMemberName): Used within the DOM panel as a tooltip when
+# hovering a variable in a closure.
+# %S: the variable name - starts with "%"
+dom.tip.scopeMemberName=在命令行中用 <函数名>.%S 来获得
+# LOCALIZATION NOTE (firebug.reps.declarativeScope, firebug.reps.objectScope, firebug.reps.withScope):
+# Labels shown to describe different types of closure scopes.
+firebug.reps.declarativeScope=[声明作用域]
+firebug.reps.objectScope=[对象作用域]
+firebug.reps.withScope=[with 作用域]
+# LOCALIZATION NOTE (firebug.reps.optimizedAway): Label shown to denote a closure variable that has
+# been optimized away.
+firebug.reps.optimizedAway=(被优化掉)
+# LOCALIZATION NOTE (firebug.reps.element.attribute_value, firebug.reps.element.property_value):
+# Used in the Console panel for elements. If an input element has two different values, one set
+# as "value" attribute and one set as 'value' property, these labels are used to distinguish it.
+firebug.reps.element.attribute_value=属性(attribute)值
+firebug.reps.element.property_value=属性(property)值
+# LOCALIZATION NOTE (dom.label.breakOnPropertyChange, dom.tip.Break_On_Property_Change):
+# Used within the DOM panel to create a 'property breakpoint'. Right-click on an property of an object.
+# The label is also used for the 'Break On Property Change' button (available on the toolbar).
+dom.label.breakOnPropertyChange=在属性改变时中断
+dom.tip.Break_On_Property_Change=在该属性改变时停止 Javascript 的执行
+# LOCALIZATION NOTE (dom.disableBreakOnPropertyChange): Used within the DOM panel for the
+# 'break on next button' in the case the option is activated
+dom.disableBreakOnPropertyChange=停用在属性改变时中断
+dom.label.DOM_Breakpoints=DOM 断点
+# LOCALIZATION NOTE (EditAttribute, html.tip.Edit_Attribute): Menu item label used in HTML panel context menu. Allows
+# editing an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Edit Attribute "onclick"...
+EditAttribute=编辑属性 "%S"...
+html.tip.Edit_Attribute=编辑该元素 "%S" 属性的值
+# LOCALIZATION NOTE (DeleteAttribute, html.tip.Delete_Attribute): Menu item label used in HTML panel context menu. Allows
+# deleting an existing HTML element attribute.
+# %S = Name of the clicked attribute
+# examples: Delete Attribute "onclick"...
+DeleteAttribute=删除属性 "%S"
+html.tip.Delete_Attribute=删除该元素的 "%S" 属性
+# LOCALIZATION NOTE (InheritedFrom): Displaying an HTML element name + an applied CSS rule,
+# that has been inherited. Used in the Style side panel (under HTML panel).
+# examples: Inherited from table.tabView
+InheritedFrom=继承自
+SothinkWarning=Sothink SWF Catcher 扩展妨碍了 Firebug 的正常运行。<br><br>请查阅 <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">Firebug FAQ 中的相关条目</a>。
+# LOCALIZATION NOTE (css.fontFamilyPreview): Part of a tooltip in the CSS panel
+# and Style side panel (within HTML panel) when the mouse hovers a font name
+css.fontFamilyPreview=中文字型范例 The quick brown fox jumps over the lazy dog. 0123456789
+# LOCALIZATION NOTE (css.EmptyStyleSheet): Displayed in the CSS panel
+# in case there are no stylesheets attached to the current page.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyStyleSheet=无任何样式规则。你可以<a>新建规则</a>。
+# LOCALIZATION NOTE (css.EmptyElementCSS2): Displayed in the Style side panel
+# (available within the HTML panel) in case there are no CSS rules for the selected element.
+# The text between <a> and </a> is displayed as a link.
+css.EmptyElementCSS=该元素无任何样式规则。你可以为它<a>新建规则</a>。
+EditStyle=编辑元素样式...
+style.tip.Edit_Style=编辑元素的行内样式
+AddRule=添加规则...
+css.tip.AddRule=为该元素添加规则
+NewRule=新建规则...
+css.tip.New_Rule=添加一条新规则
+# LOCALIZATION NOTE (css.Delete_Rule, css.tip.Delete_Rule): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule
+# %S = Selector of the clicked rule
+# examples: Delete "div > p"
+css.Delete_Rule=删除 "%S"
+css.tip.Delete_Rule=删除规则 "%S" 及其属性
+# LOCALIZATION NOTE (css.menu.Edit_Media_Query, css.menu.tip.Edit_Media_Query):
+# Menu item label used in the CSS panel context menu.
+# Allows to add or edit the CSS media query of an import rule
+css.menu.Edit_Media_Query=编辑媒体查询...
+css.menu.tip.Edit_Media_Query=编辑指定给该规则的媒体查询
+NewProp=新建属性值...
+css.tip.New_Prop=向当前规则添加一条新属性
+# LOCALIZATION NOTE (EditProp, css.tip.Edit_Prop): Menu item label used in the CSS panel context menu.
+# Allows to edit an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Edit "background-color"...
+EditProp=编辑 "%S"...
+css.tip.Edit_Prop=编辑属性 "%S" 的值
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
+# Allows to disable an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Disable "background-color"
+DisableProp=禁用 "%S"
+css.tip.Disable_Prop=禁用属性 "%S"
+# LOCALIZATION NOTE (DeleteProp, css.tip.Delete_Prop): Menu item label used in the CSS panel context menu.
+# Allows to delete an existing CSS rule property.
+# %S = Name of the clicked property
+# examples: Delete "background-color"
+DeleteProp=删除 "%S"
+css.tip.Delete_Prop=删除属性 "%S"
+# Console context menu labels.
+BreakOnThisError=在此错误处中断
+console.menu.tip.Break_On_This_Error=一旦该错误发生就停止 Javascript 的执行
+BreakOnAllErrors=在所有错误处中断
+console.menu.tip.Break_On_All_Errors=一旦有错误发生就停止 Javascript 的执行
+# LOCALIZATION NOTE (script.option.Track_Throw_Catch):
+# Script panel option (located in tab's option menu). If set to true, tracking of
+# throw/catch blocks is enabled.
+TrackThrowCatch=跟踪 Throw/Catch
+script.option.tip.Track_Throw_Catch=跟踪代码中用 try/catch 捕获的异常
+UseLastLineForEvalName=使用最后的源码行当作 eval() 的名称
+UseMD5ForEvalName=使用 MD5 当作 eval() 的名称
+# Breakpoints side panel
+Breakpoints=断点
+ErrorBreakpoints=错误断点
+LoggedFunctions=已记录的函数
+EnableAllBreakpoints=启用所有断点
+breakpoints.option.tip.Enable_All_Breakpoints=启用所有列出的断点
+DisableAllBreakpoints=禁用所有断点
+breakpoints.option.tip.Disable_All_Breakpoints=禁用所有列出的断点
+ClearAllBreakpoints=移除所有断点
+breakpoints.option.tip.Clear_All_Breakpoints=移除所有列出的断点
+ConditionInput=只当该表达式为真时才在该断点处停止
+# LOCALIZATION NOTE (breakpoints.Remove_Breakpoint, breakpoints.tip.Remove_Breakpoint, breakpoints.Disable_Breakpoint,
+# breakpoints.tip.Disable_Breakpoint, breakpoints.Enable_Breakpoint, breakpoints.tip.Enable_Breakpoint):
+# Context menu items in the Script panel and Breakpoints side panel.
+breakpoints.Remove_Breakpoint=移除断点
+breakpoints.tip.Remove_Breakpoint=移除该断点
+breakpoints.Disable_Breakpoint=禁用断点
+breakpoints.tip.Disable_Breakpoint=禁用该断点
+breakpoints.Enable_Breakpoint=启用断点
+breakpoints.tip.Enable_Breakpoint=启用该断点
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
+# within balloon popup dialog. This dialog appears when the debugger halts at a breakpoint or at
+# a 'debugger;' keyword.
+# Continue: allows to resume the debugger
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source
+script.balloon.Continue=继续
+script.balloon.Disable=停用
+ScriptsFilterStatic=显示静态脚本
+ScriptsFilterEval=显示静态脚本和 eval 的脚本
+ScriptsFilterEvent=显示静态脚本和事件脚本
+ScriptsFilterAll=显示所有脚本
+ScriptsFilterStaticShort=静态
+ScriptsFilterEvalShort=evals
+ScriptsFilterEventShort=事件
+ScriptsFilterAllShort=所有
+# LOCALIZATION NOTE (callstack.Expand_All, callstack.tip.Expand_All,
+# callstack.Collapse_All, callstack.tip.Collapse_All):
+# Context menu item labels used in Stack side panel (within Script panel)
+# Firebug needs to be halted at a breakpoint to see these items.
+callstack.Expand_All=全部展开
+callstack.tip.Expand_All=展开所有的堆栈函数
+callstack.Collapse_All=全部收起
+callstack.tip.Collapse_All=收起所有的堆栈函数
+# LOCALIZATION NOTE (callstack.Execution_not_stopped):
+# Message displayed in the Stack side panel if the script execution is not stopped.
+callstack.Execution_not_stopped=只在脚本执行停止时显示堆栈
+# LOCALIZATION NOTE (ShowUserProps, ShowUserFuncs, ShowDOMProps, ShowDOMFuncs, ShowDOMConstants,
+# ShowOwnProperties, ShowOwnPropertiesTooltip, ShowEnumerableProperties, ShowEnumerablePropertiesTooltip,
+# ShowInlineEventHandlers):
+# Labels for DOM panel options (located in tab's option menu)
+ShowUserProps=显示用户自定义的属性
+dom.option.tip.Show_User_Props=显示用户定义的对象属性
+ShowUserFuncs=显示用户自定义的函数
+dom.option.tip.Show_User_Funcs=显示用户定义的对象方法
+ShowDOMProps=显示 DOM 属性
+dom.option.tip.Show_DOM_Props=显示 DOM 中规定的属性
+ShowDOMFuncs=显示 DOM 函数
+dom.option.tip.Show_DOM_Funcs=显示 DOM 中规定的函数
+ShowDOMConstants=显示 DOM 常量
+dom.option.tip.Show_DOM_Constants=显示 DOM 中规定的常量
+ShowClosures=显示闭包
+dom.option.tip.Show_Closures=显示与各个函数关联的闭包(并启用调试器)
+ShowInlineEventHandlers=显示行内事件处理代码
+ShowInlineEventHandlersTooltip=显示可用的、未与函数关联的行内事件处理代码
+ShowOwnProperties=仅显示自有属性
+ShowOwnPropertiesTooltip=不显示继承自原型链的属性
+ShowEnumerableProperties=仅显示枚举属性
+ShowEnumerablePropertiesTooltip=不显示不可枚举的属性
+NoMembersWarning=该对象无任何可显示的属性。
+NewWatch=新建监控表达式...
+# LOCALIZATION NOTE (AddWatch, watch.tip.Add_Watch): Context menu item in the DOM panel, Script panel and Watch side panel.
+# Adds the selection or object to the Watch side panel to observe it
+AddWatch=添加监控
+watch.tip.Add_Watch=将(选中的)对象添加到监控侧面板
+# LOCALIZATION NOTE (CopySourceCode, script.tip.Copy_Source_Code): Context menu item of the Script panel.
+# Copies the selected source code to the clipboard.
+CopySourceCode=复制源代码
+script.tip.Copy_Source_Code=复制选中源代码到剪贴板
+Use_hash_plus_number_to_go_to_line=输入 #<行号> 以前往指定行
+CopyValue=复制值
+dom.tip.Copy_Value=复制该属性的值到剪贴板
+Copy_Name=复制名称
+dom.tip.Copy_Name=复制该属性的名称到剪贴板
+Copy_Path=复制路径
+dom.tip.Copy_Path=复制属性路径
+NewProperty=新建属性值...
+EditProperty=编辑属性值...
+dom.tip.Edit_Property=编辑属性的值
+EditVariable=编辑变量...
+stack.tip.Edit_Variable=编辑变量的值
+EditWatch=编辑监控...
+watch.tip.Edit_Watch=编辑监控表达式的值
+DeleteProperty=删除属性值
+dom.tip.Delete_Property=删除该属性
+DeleteWatch=删除监控
+DeleteAllWatches=删除所有监控
+watch.tip.Delete_Watch=删除该监控表达式
+watch.tip.Delete_All_Watches=删除所有监控表达式
+# LOCALIZATION NOTE (SetBreakpoint, script.tip.Set_Breakpoint): Context menu item of the Script panel.
+# Toggles setting of a breakpoint at the current line of a script inside the Script panel.
+SetBreakpoint=设置断点
+script.tip.Set_Breakpoint=切换当前行是否设置断点
+# LOCALIZATION NOTE (EditBreakpointCondition, breakpoints.tip.Edit_Breakpoint_Condition):
+# Context menu item of the Script panel.
+# Allows to edit the condition, under which a breakpoint stops the JavaScript execution
+EditBreakpointCondition=编辑断点条件...
+breakpoints.tip.Edit_Breakpoint_Condition=编辑在断点处停止 Javascript 执行的条件
+NoBreakpointsWarning=该页无任何已设置的断点。
+# LOCALIZATION NOTE (style.option.Only_Show_Applied_Styles, style.option.tip.Only_Show_Applied_Styles):
+# Style side panel option (located in tab's option menu). If set to true,
+# just styles applied to an element will be displayed and overwritten ones will be hidden.
+Only_Show_Applied_Styles=仅显示应用的样式
+style.option.tip.Only_Show_Applied_Styles=仅显示应用到该元素的样式
+# LOCALIZATION NOTE (style.option.Show_User_Agent_CSS, style.option.tip.Show_User_Agent_CSS):
+# Style side panel option (located in tab's option menu). If set to true, the Style side panel will
+# also display styles defined by the user agent.
+Show_User_Agent_CSS=显示浏览器默认样式
+style.option.tip.Show_User_Agent_CSS=同时显示浏览器定义的 CSS
+# LOCALIZATION NOTE (computed.option.label.Colors_As_Hex, computed.option.tip.Colors_As_Hex,
+# computed.option.label.Colors_As_RGB, computed.option.tip.Colors_As_RGB,
+# computed.option.label.Colors_As_HSL, computed.option.tip.Colors_As_HSL):
+# CSS panel, Style side panel and Computed side panel option (located in tab's option menu).
+# Allows switching the display of CSS colors between hex, rgb(a) and hsl(a) format
+computed.option.label.Colors_As_Hex=16 进制颜色
+computed.option.tip.Colors_As_Hex=显示颜色的 16 进制表示
+computed.option.label.Colors_As_RGB=RGB 颜色
+computed.option.tip.Colors_As_RGB=显示颜色的 RGB 表示
+computed.option.label.Colors_As_HSL=HSL 颜色
+computed.option.tip.Colors_As_HSL=显示颜色的 HSL 表示
+# LOCALIZATION NOTE (style.option.label.active, style.option.tip.active):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being activated and therefore display
+# :active pseudo-class styles
+style.option.label.active=:active
+style.option.tip.active=显示 :active 伪类的样式
+# LOCALIZATION NOTE (style.option.label.hover, style.option.tip.hover):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being hovered and therefore display
+# :hover pseudo-class styles
+style.option.label.hover=:hover
+style.option.tip.hover=显示 :hover 伪类的样式
+# LOCALIZATION NOTE (style.option.label.focus, style.option.tip.focus):
+# Style side panel option tooltip (located in tab's option menu). If the option is set to true,
+# the Style side panel will simulate the element being focused and therefore display
+# :focus pseudo-class styles
+style.option.label.focus=:focus
+style.option.tip.focus=显示 :focus 伪类的样式
+# LOCALIZATION NOTE (css.label.Inspect_Declaration, css.tip.Inspect_Declaration):
+# CSS panel/Style side panel context menu option. Allows inspecting a font face of a web font
+# declaration inside the CSS panel
+css.label.Inspect_Declaration=查看样式声明
+css.tip.Inspect_Declaration= 查看该字体的样式声明
+# LOCALIZATION NOTE (css.option.Expand_Shorthand_Properties, css.option.tip.Expand_Shorthand_Properties):
+# CSS panel/Style side panel option (located in tab's option menu). If set to true,
+# CSS shorthand properties like 'margin' will be split into their components, e.g. 'margin-top',
+# 'margin-left', 'margin-bottom', 'margin-right'
+Expand_Shorthand_Properties=展开简写属性
+css.option.tip.Expand_Shorthand_Properties=将 CSS 简写属性展开为分项
+# LOCALIZATION NOTE (computed.option.Sort_Alphabetically, computed.option.tip.Sort_Alphabetically):
+# Computed side panel option (located in tab's option menu). If set to 'alphabetical',
+# the computed styles will be listed alphabetically by their name, otherwise they will be grouped
+# into categories
+Sort_alphabetically=按字母表排序
+computed.option.tip.Sort_Alphabetically=切换将样式按名称排序/按类别分组
+# LOCALIZATION NOTE (computed.option.Show_Mozilla_Specific_Styles, computed.option.tip.Show_Mozilla_Specific_Styles):
+# Computed side panel option (located in tab's option menu). If set to true,
+# also styles prefixed with -moz will be displayed
+Show_Mozilla_specific_styles=显示 Mozilla(-moz-*) 专有样式
+computed.option.tip.Show_Mozilla_Specific_Styles=同时显示带有 -moz 前缀的样式
+# LOCALIZATION NOTE (computed.No_User-Defined_Styles):
+# Displayed in the Computed side panel (available within the HTML panel) in case there are no
+# user-defined CSS rules applying to the selected element.
+computed.No_User-Defined_Styles=该元素没有用户定义的样式规则
+script.Type_any_key_to_filter_list=输入任意字符以过滤列表
+# LOCALIZATION NOTE (location.inline):
+# Label used within the Location Menu for inline styles or scripts
+location.inline=行内
+# LOCALIZATION NOTE (location.no_domain):
+# Label used within the Location Menu for the group of scripts,
+# which don't have a domain specified like e.g. eval()'ed scripts
+location.no_domain=无域名
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
+# Labels used to describe layout properties a the selected HTML element.
+# Used in the Layout side panel (within HTML panel).
+LayoutPadding=内边距
+LayoutBorder=边框
+LayoutMargin=外边距
+LayoutPosition=定位
+LayoutAdjacent=邻接
+position=定位
+# LOCALIZATION NOTE (layout.option.Show_Rulers, layout.option.tip.Show_Rulers):
+# Layout side panel option (located in tab's option menu). If set to true,
+# rulers and guides will be displayed for the element on the page
+# when hovering parts of the layout box
+ShowRulers=显示标尺和辅助线
+layout.option.tip.Show_Rulers=鼠标悬停在盒模型上时相应的在页面上显示标尺和辅助线
+# Net panel
+Loading=载入中...
+Headers=头信息
+# LOCALIZATION NOTE (net.tip.Clear)
+# Tooltip for the button inside the Net panel to clear the request list
+net.tip.Clear=清空请求列表
+# LOCALIZATION NOTE (net.header.Reset_Header, net.header.tip.Reset_Header)
+# Label for header context menu within the Net panel
+net.header.Reset_Header=重置表头
+net.header.tip.Reset_Header=重置表头显示
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip,
+# net.header.Local_IP, net.header.Local_IP_Tooltip, net.header.Remote_IP,
+# net.header.Remote_IP_Tooltip, net.header.Protocol, net.header.Protocol_Tooltip):
+# Labels and tooltips for headers displayed on top of the Net panel.
+net.header.URL=URL
+net.header.URL_Tooltip=请求的 URL 和使用的 HTTP 方法
+net.header.Status=状态
+net.header.Status_Tooltip=接收到响应的状态
+net.header.Domain=域
+net.header.Domain_Tooltip=执行请求的域
+net.header.Size=大小
+net.header.Size_Tooltip=接收到响应的大小
+net.header.Timeline=时间线
+net.header.Timeline_Tooltip=关于请求响应的详细计时信息
+net.header.Local_IP=本地 IP
+net.header.Local_IP_Tooltip=请求所绑定的本地地址和端口
+net.header.Remote_IP=远程 IP
+net.header.Remote_IP_Tooltip=请求所绑定的远程地址和端口
+net.header.Protocol=协议
+net.header.Protocol_Tooltip=用以在网络上定位资源的 URL 协议
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
+net.label.XHR_Breakpoints=XHR 断点
+# LOCALIZATION NOTE (net.label.Break_On_XHR, net.tip.Break_On_XHR):
+# Net panel context menu item for stopping the JavaScript execution on an XHR
+net.label.Break_On_XHR=在 XHR 时中断
+net.tip.Break_On_XHR=一旦有 XMLHttpRequest 请求发出就停止 Javascript 的执行
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
+# Net panel's Headers tab (displayed if you expand a network request). The label is used
+# for a link, that switches the view between raw source code and formated header values.
+net.headers.view_source=原始头信息
+net.headers.pretty_print=格式化头信息
+# LOCALIZATION NOTE (net.filter.label.All, net.filter.tooltip.All, net.filter.label.HTML,
+# net.filter.tooltip.HTML, net.filter.label.CSS, net.filter.tooltip.CSS, net.filter.label.JS,
+# net.filter.tooltip.JS, net.filter.label.XHR, net.filter.tooltip.XHR, net.filter.label.Images,
+# net.filter.tooltip.Images, net.filter.label.Plugins, net.filter.tooltip.Plugins,
+# net.filter.label.Media, net.filter.tooltip.Media):
+# Labels and tooltips for Net panel filter (used on the Net panel toolbar)
+net.filter.label.All=全部
+net.filter.tooltip.All=显示全部 MIME 类型
+net.filter.label.HTML=HTML
+net.filter.tooltip.HTML=只显示标记文件
+net.filter.label.CSS=CSS
+net.filter.tooltip.CSS=只显示 CSS 文件
+net.filter.label.JS=JavaScript
+net.filter.tooltip.JS=只显示 JavaScript 文件
+net.filter.label.XHR=XHR
+net.filter.tooltip.XHR=只显示 XMLHttpRequest
+net.filter.label.Images=图片
+net.filter.tooltip.Images=只显示图片
+net.filter.label.Plugins=插件
+net.filter.tooltip.Plugins=只显示 Flash 和 Silverlight 文件
+net.filter.label.Media=媒体
+net.filter.tooltip.Media=只显示音频和视频
+net.filter.label.Fonts=字体
+net.filter.tooltip.Fonts=只显示字体
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
+# a network request (displayed when a Net panel entry is expanded). The content of
+# this tab displays sent data (related to an HTTP send method).
+Post=Post
+Put=Put
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
+# Labels used in the Net panel for detailed info about a network request (displayed
+# when a Net panel entry is expanded)
+Response=响应
+URLParameters=参数
+Cache=缓存
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=常规信息
+fontviewer.Meta_Data=元数据
+fontviewer.view_source=原始元数据
+fontviewer.Preview=预览
+fontviewer.view_characters=查看字母和数字
+fontviewer.pretty_print=格式化元数据
+fontviewer.view_sample=查看例句
+fontviewer.uniqueid=唯一 ID
+fontviewer.vendor=供应商
+fontviewer.license=授权条款
+fontviewer.description=描述
+fontviewer.copyright=版权
+fontviewer.credits=致谢
+fontviewer.trademark=商标
+fontviewer.licensee=获授权者
+fontviewer.extension=扩展
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in the
+# Net panel for JSON responses. Allows to sort alphabetically.
+jsonviewer.sort=按 key 排序
+jsonviewer.do_not_sort=不排序
+# LOCALIZATION NOTE (net.jsonviewer.Copy_JSON): Label (verb) displayed in the JSON tab of a network request
+# in the Net & Console panel when copying JSON replies.
+# %S = Part of the JSON, that was clicked
+# example: Copy "person" as JSON
+net.jsonviewer.Copy_JSON=复制 "%S" 为 JSON
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders, CachedResponseHeaders, PostRequestHeaders):
+# Label (noun) used in the Net panel (displayed inside the Headers tab of a request).
+RequestHeaders=请求头信息
+ResponseHeaders=响应头信息
+CachedResponseHeaders=来自缓存的响应头信息
+PostRequestHeaders=来自上传流的请求头信息
+# LOCALIZATION NOTE (net.label.ResponseHeadersFromBFCache):
+# Label (noun) used in the Net panel and displayed instead of Response Headers
+# if the response comes directly from the cache (BFCache).
+net.label.ResponseHeadersFromBFCache=该请求直接由缓存中解析,所以没有来自服务器的响应。下面可以查看缓存的响应。
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semicolon list of plural forms.
+# A message displayed in the Net panel when some entries must be removed in the case the maximum number
+# of entries has been reached.
+# %1 = the number of entries removed
+# example: Firebug's log limit has been reached. 150 entries not shown.
+plural.Limit_Exceeded2=Firebug 的日志已达上限。 %S 条未显示。
+LimitPrefs=首选项
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
+# has been reached. Informing the user what preference should be changed to modify the limit.
+# %S = Name of a preference
+# examples: In order to change the limit modify 'firebug.extensions.console.logLimit'
+LimitPrefsTitle=修改 %S 可以改变上限
+Refresh=刷新
+panel.tip.Refresh=刷新面板显示
+# LOCALIZATION NOTE (OpenInTab, firebug.tip.Open_In_Tab): Context menu option of source links,
+# stylesheets and net requests to open the underlying URL in a new browser tab
+OpenInTab=在新标签中打开
+firebug.tip.Open_In_Tab=在新标签中打开 URL
+Open_Response_In_New_Tab=在新标签中打开响应
+net.tip.Open_Response_In_New_Tab=在新标签中打开响应
+# LOCALIZATION NOTE (Profile): Caption (verb) for reported profile info.
+# (result of JavaScript profiler tool).
+Profile=概况
+ProfilerStarted=概况收集中。再次点击“概况”查看结果。
+ProfilerRequiresTheScriptPanel=必须启用脚本面板才能使用概况功能
+# LOCALIZATION NOTE (plural.Profile_Time2): Semicolon list of plural forms.
+# Caption for reported profile info (result of JavaScript profiler tool).
+# %1 = Number of milliseconds
+# %2 = Number of calls (plural)
+# example: (56ms, 15 calls)
+plural.Profile_Time2=(%S 毫秒, %S 次调用)
+NothingToProfile=无任何可记录的活动。
+PercentTooltip=函数耗时百分比
+CallsHeaderTooltip=函数被调用的次数
+OwnTimeHeaderTooltip=函数占用的时间,不包括嵌套调用。
+TimeHeaderTooltip=函数占用的时间,包括嵌套调用。
+AvgHeaderTooltip=平均占用时间,包括函数调用。
+MinHeaderTooltip=最小占用时间,包括函数调用。
+MaxHeaderTooltip=最大占用时间,包括函数调用。
+ProfileButton.Tooltip=获取 JavaScript 执行时间的概况
+Function=函数
+Percent=百分比
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
+# (name of a report column). In order to see this, select the Console panel, start profiling
+# by clicking the Profile button and stop it by clicking it again. The report is logged into the
+# Console panel. Make sure Script panel is enabled.
+Calls=调用
+OwnTime=占用时间
+Time=时间
+Avg=平均时间
+Min=最小时间
+Max=最大时间
+File=文件
+# Support for standard actions.
+Copy=复制
+Cut=剪切
+Remove=移除
+Delete=删除
+Paste=粘贴
+SelectAll=全选
+html.Copy_Node=复制 %S
+html.tip.Copy_Node=复制 %S 节点及其内容到剪贴板
+CopyInnerHTML=复制 innerHTML
+html.tip.Copy_innerHTML=复制该元素的内容到剪贴板
+CopyXPath=复制 XPath
+html.tip.Copy_XPath=复制该元素的 XPath 到剪贴板
+Copy_CSS_Path=复制 CSS 路径
+html.tip.Copy_CSS_Path=复制该元素的 CSS 路径到剪贴板
+# LOCALIZATION NOTE (html.menu.Paste, html.tip.Paste): Context menu item (with subitems).
+# Used in the HTML Panel to paste HTML/SVG/XML/XUL/MathML contents
+# %S = the type of the content to paste (HTML, SVG, XML, XUL or MathML)
+html.menu.Paste=粘贴 %S
+html.tip.Paste=粘贴为 %S 内容
+# LOCALIZATION NODE (html.menu.Paste_*, html.tip.Paste_*): Context menu items.
+# These items are paste options, and appears as subitems of html.menu.Paste in the context menu.
+html.menu.Paste_Replace_Content=替换内容
+html.tip.Paste_Replace_Content=替换该节点的内容
+html.menu.Paste_Replace_Node=替换节点
+html.tip.Paste_Replace_Node=替换该节点本身
+html.menu.Paste_AsFirstChild=作为第一子元素
+html.tip.Paste_AsFirstChild=粘贴为该节点的第一个子元素
+html.menu.Paste_AsLastChild=作为最后一个子元素
+html.tip.Paste_AsLastChild=粘贴为该节点的最后一个子元素
+html.menu.Paste_Before=之前
+html.tip.Paste_Before=粘贴在该节点之前
+html.menu.Paste_After=之后
+html.tip.Paste_After=粘贴在该节点之后
+# LOCALIZATION NOTE (html.menu.Reload_Frame, html.menu.tip.Reload_Frame):
+# Context menu item of HTML frames
+html.menu.Reload_Frame=重新加载该框架
+html.menu.tip.Reload_Frame=重新加载该框架的内容
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyLocation=复制地址
+clipboard.tip.Copy_Location=复制该对象地址的 URL 到剪贴板
+CopyURLParameters=复制 URL 参数
+net.tip.Copy_URL_Parameters=复制 URL 参数到剪贴板
+CopyPOSTParameters=复制 POST 参数
+net.tip.Copy_POST_Parameters=复制 POST 参数到剪贴板
+CopyLocationParameters=复制带参数的地址
+net.tip.Copy_Location_Parameters=复制包括参数在内的 URL 到剪贴板
+CopyRequestHeaders=复制请求头信息
+net.tip.Copy_Request_Headers=复制请求头信息到剪贴板
+CopyResponseHeaders=复制响应头信息
+net.tip.Copy_Response_Headers=复制响应头信息到剪贴板
+CopyResponse=复制响应正文
+net.tip.Copy_Response=复制响应正文到剪贴板
+# LOCALIZATION NOTE (CopyError, console.menu.tip.Copy_Error): Context menu item. Used in the Console
+# panel when clicking an error object.
+CopyError=复制错误
+console.menu.tip.Copy_Error=复制错误信息到剪贴板
+# LOCALIZATION NOTE (CopySource, dom.tip.Copy_Source): Context menu item of. Used in the Console
+# panel when clicking an error object.
+CopySource=复制函数
+dom.tip.Copy_Source=复制函数的源代码到剪贴板
+# LOCALIZATION NOTE (ShowCallsInConsole): Context menu item of a function object inside the
+# DOM panel and Watch side panel.
+# %S = Name of the function
+# example: Log Calls to "getData"
+# example: Log calls to the function "getData" inside the Console panel
+ShowCallsInConsole=记录对 "%S" 的调用
+dom.tip.Log_Calls_To_Function=在控制台中记录对函数 "%S" 的调用
+# LOCALIZATION NOTE (ShowEventsInConsole, html.tip.Show_Events_In_Console):
+# Menu item label used in HTML elements context menu. Allows logging of event information
+# to the console.
+ShowEventsInConsole=记录事件
+html.tip.Show_Events_In_Console=在控制台中记录事件信息
+# LOCALIZATION NOTE (panel.Enabled, panel.tip.Enabled):
+# Option inside the options menu of activatable panels. Enables/Disables the panel.
+panel.Enabled=启用
+panel.tip.Enabled=切换面板激活状态
+# LOCALIZATION NOTE (panel.tooltip.Show_Command_Line_Popup): Tooltip used for a button on main
+# Firebug toolbar. This button allows to open the Command Line within other panels
+# than the Console panel.
+panel.tooltip.Show_Command_Line_Popup=显示命令行
+# LOCALIZATION NOTE (console.MethodNotSupported): Message displayed in the Console panel,
+# if a specific method is not supported.
+# %S = Name of the unsupported method
+# example: Firebug console does not support 'bind'
+console.MethodNotSupported=Firebug 控制台不支持 '%S'
+# LOCALIZATION NOTE (commandline.errorSourceHeader): Message displayed in the header of the
+# source code where an exception has occured.
+commandline.errorSourceHeader=通过 Firebug 命令行执行的表达式:
+# LOCALIZATION NOTE (commandline.MethodDisabled): Message displayed in the Console panel,
+# if a disabled method is entered via the Command Line.
+commandline.MethodDisabled=该命令行方法被暂时禁用了
+# LOCALIZATION NOTE (commandline.MethodNotSupported): Message displayed in the Console panel,
+# if an unsupported method is entered via the Command Line.
+# %S = Name of the unsupported method
+commandline.MethodNotSupported=Firebug 命令行不支持 '%S'
+# LOCALIZATION NOTE (commandline.CurrentWindow): Message displayed in the Console panel when
+# cd(someWindow) is run. A space and a representation of the window object is appended
+# internally by Firebug.
+commandline.CurrentWindow=当前 window:
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
+# Tooltip for the "Break on... " button used when the Console panel is selected.
+console.Disable_Break_On_All_Errors=停用在所有错误处中断
+console.Break_On_All_Errors=在所有错误处中断
+# LOCALIZATION NOTE (console.Break_On_This_Error): Tooltip for the breakpoint besides an error message
+# in the Console panel
+console.Break_On_This_Error=在此错误处中断
+# LOCALIZATION NOTE (console.Use_Arrow_keys,_Tab_or_Enter): Hint at the top of the Completion List Popup
+# in the Command Line
+console.Use_Arrow_keys,_Tab_or_Enter=使用方向键、Tab 或回车
+# LOCALIZATION NOTE (console.JSDisabledInFirefoxPrefs): Hint shown inside the Console panel in the case
+# JavaScript is not available
+console.JSDisabledInFirefoxPrefs=JavaScript 在你的 Firefox 首选项中被禁用。如果你想使用控制台面板,请选中'工具'>'选项'>'内容'>'启用 JavaScript'
+# LOCALIZATION NOTE (console.tip.ScriptPanelMustBeEnabledForTraces): Message shown inside the Console
+# panel instead of a stack trace when it is missing because the script panel is disabled. The text
+# enclosed in <a></a> is a link which enables the Script panel.
+console.ScriptPanelMustBeEnabledForTraces=必须启用脚本面板才能获取堆栈跟踪信息 <a>启用脚本面板</a>
+# LOCALIZATION NOTE (tooltip.multipleFiltersHint):
+# Hint used for Console and Net panel filter button tooltips describing the shortcut for selecting
+# multiple filters
+tooltip.multipleFiltersHint=按住 Ctrl 并单击来同时选取多个过滤器
+# LOCALIZATION NOTE (console.multiHighlightLimitExceeded):
+# Used by the Console panel for arrays. If the user moves the mouse over an array bracket,
+# all elements in the array are highlighted on the page. If there are too many elements
+# in the array, this tooltip is displayed instead.
+# %S = Maximal number of elements to highlight
+# example: There are too many elements in the array to highlight on the page (current limit is 100).
+# See 'extensions.firebug.multiHighlightLimit' preference.
+console.multiHighlightLimitExceeded=该数组的元素过多,无法在页面上高亮显示(当前上限为 %S)\n参见选项'extensions.firebug.multiHighlightLimit'
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the Console panel
+# in cases when the current page is an XML document. The text between <a> and </a> is a link,
+# that causes to switch to HTML rendering of the document.
+commandline.disabledForXMLDocs=Firebug 禁用了 XML 页面的命令行。你可以<a>切换到 HTML 面板</a>来启用命令行。
+# LOCALIZATION NOTE (commandline.Use_in_Command_Line): Right-click option for copying a JS value into the variable
+# $p and opening the Command Line.
+commandline.Use_in_Command_Line=在命令行中使用
+commandline.tip.Use_in_Command_Line=切换到命令行,使用 "$p" 可以获取该值
+# LOCALIZATION NOTE (commandline.include.includeSuccess): For the include() function. This message is displayed
+# in the Console panel when a remote script evaluation succeeded
+# %S = the filename
+commandline.include.includeSuccess=%S 已经正常加载
+# LOCALIZATION NOTE (commandline.include.aliasNotFound): For the include() function. This message is displayed
+# in the Console panel when a requested alias is not found
+# %S = the alias name
+commandline.include.aliasNotFound=未找到别名 "%S"
+# LOCALIZATION NOTE (commandline.include.loadFail): For the include() function. This message is displayed
+# in the Console panel when the remote script download failed
+# %S = the filename
+commandline.include.loadFail=以下脚本未能加载成功: %S
+# LOCALIZATION NOTE (commandline.include.invalidRequestProtocol): For the include() function. This message is displayed
+# in the Console panel when the user tries to download a script with another scheme than HTTP(S)
+# %S = the filename
+commandline.include.invalidRequestProtocol=仅支持 HTTP/HTTPS 协议
+# LOCALIZATION NOTE (commandline.include.invalidSyntax): For the include() function. This message is displayed
+# in the Console panel when the user tries to execute a non-Javascript file
+# or when the script contains syntax errors
+commandline.include.invalidSyntax=加载因语法错误而失败。确定是 JavaScript 文件吗?
+# LOCALIZATION NOTE (commandline.include.aliasCreated): For the include() function. This message is displayed
+# in the Console panel when a new alias is created successfully
+# %S = the alias name
+commandline.include.aliasCreated=已创建别名 "%S"
+# LOCALIZATION NOTE (commandline.include.aliasRemoved): For the include() function. This message is displayed
+# in the Console panel when a new alias is removed successfully
+# %S = the alias name
+commandline.include.aliasRemoved=已移除别名 "%S"
+# LOCALIZATION NOTE (commandline.include.invalidAliasName): For the include() function. This message is displayed
+# in the Console panel if an invalid alias name (which contains "/" or ".") is provided.
+# %S = the invalid alias name
+commandline.include.invalidAliasName=别名中不能包含 "." 或者 "/";无效的别名: "%S"
+# LOCALIZATION NOTE (commandline.include.tooLongAliasName): For the include() function. This message is displayed
+# in the Console panel if the provided alias name is too long (i.e. more than 30 characters)
+# %S = the invalid alias name
+commandline.include.tooLongAliasName=别名不能包含多于 30 个字符;无效的别名: "%S"
+# LOCALIZATION NOTE (commandline.include.wrongAliasArgument): For the include() function. This message is displayed
+# in the Console panel if the type of the alias name is invalid (a string is expected)
+commandline.include.invalidAliasArgumentType=无效的第二个参数;应该是别名
+# LOCALIZATION NOTE (commandline.include.wrongUrlArgument): For the include() function. This message is displayed
+# in the Console panel if the type of the url arguement is invalid (a string or null are expected)
+commandline.include.invalidUrlArgumentType=无效的 URL 参数
+# LOCALIZATION NOTE (commandline.include.confirmDelete): For the include() function. This message is displayed
+# in a confirmation dialog when the user wants to delete an alias
+# %S = the name of the alias to delete
+commandline.include.confirmDelete=确认要删除这个别名: "%S"?
+# LOCALIZATION NOTE (commandline.include.noDefinedAlias): For the include() function. This message is displayed
+# when the user wants to display the aliases table but there no alias is defined.
+commandline.include.noDefinedAlias=(尚未定义任何别名)
+commandline.tip.Delete_Alias=删除别名
+commandline.tip.Edit_Alias_Name=编辑别名
+commandline.tip.Edit_Alias_URL=编辑别名的 URL
+commandline.tip.Open_In_Scratchpad=在代码片段速记器中打开脚本内容
+commandline.tip.Include_Script=下载并执行脚本
+commandline.label.DeleteAlias=删除别名
+commandline.label.EditAliasName=编辑别名
+commandline.label.EditAliasURL=编辑别名 URL
+commandline.label.OpenInScratchpad=在代码片段速记器中打开
+commandline.label.IncludeScript=加载 "%S"
+# LOCALIZATION NOTE (Do_not_show_this_message_again):
+# Message within a confirmation dialog that is displayed when deleting things.
+# This message is displayed next to a check-box that can be used to disabled this
+# confirmation.
+#
+# NOTE to translators: this message was originally taken from cookies.msg.Do_not_show_this_message_again
+Do_not_show_this_message_again=不再显示该信息
+# LOCALIZATION NOTE (scratchpad.loading, scratchpad.failLoading)
+# Used when Firebug downloads a remote script and wants to display it in Scratchpad
+# The messages appears as Javascript Comments in Scratchpad
+scratchpad.loading=加载中,请稍候...
+scratchpad.failLoading=加载脚本时出错
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):
+# Labels used for a detailed size info tooltip. The tooltip is displayed, if the mouse hovers over
+# a request size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
+# sent and received headers size.
+net.sizeinfo.Response_Body=响应正文
+net.sizeinfo.Post_Body=Post 内容
+net.sizeinfo.Total_Sent=总计发送
+net.sizeinfo.Total_Received=总计接收
+net.sizeinfo.Including_HTTP_Headers=含 HTTP 头信息
+net.ActivationMessage=网络面板已激活。在面板未激活时的任何请求都不会被显示。
+net.responseSizeLimitMessage=Firebug 达到了响应大小限制。单击<a>此处</a>以在新 Firefox 标签页中打开完整的响应。
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
+# panel (inside the Post tab of an expanded request entry). The message informs the user that
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.
+net.postDataSizeLimitMessage=Firebug 达到了 Post 请求大小限制。
+net.Break_On_XHR=在 XHR 时中断
+net.label.Parameters=参数
+net.label.Parts=部分
+net.label.Source=源代码
+# LOCALIZATION NOTE (net.label.Resend): Label for context menu item. Used when clicking
+# on a HTTP request (in the Console or Net panel) to re-send it with the same arguments.
+net.label.Resend=重新发送
+net.tip.Resend=重新发送请求
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.tip.Disable_Browser_Cache):
+# Net panel option (located in tab's option menu). If set to true, the browser's HTTP cache is disabled
+net.option.Disable_Browser_Cache=禁用浏览器缓存
+net.option.tip.Disable_Browser_Cache=禁用浏览器的 HTTP 缓存
+# LOCALIZATION NOTE (net.option.Show_Paint_Events, net.option.tip.Show_Paint_Events):
+# Net panel option (located in tab's option menu). If set to true, the Net panel displays
+# MozAfterPaint events.
+# See also: http://www.softwareishard.com/blog/firebug/watching-mozafterpaint-in-firebug/
+net.option.Show_Paint_Events=显示 Paint 事件
+net.option.tip.Show_Paint_Events=在时间线中以绿色线条显示 MozAfterPaint 事件
+# LOCALIZATION NOTE (net.option.Show_BFCache_Responses, net.option.tip.Show_BFCache_Responses):
+# Net panel option (located in tab's option menu). If set to true, the Net panel also displays responses coming from
+# BFCache (back-forward cache). See also: https://developer.mozilla.org/En/Working_with_BFCache
+net.option.Show_BFCache_Responses=显示 BFCache 响应
+net.option.tip.Show_BFCache_Responses=显示来自后退/前进缓存的响应
+# LOCALIZATION NOTE (script.Break_On_Next, script.Disable_Break_On_Next):
+# Tooltip used for the Break On Next button inside panel toolbar of the Script panel.
+# (breaking on next executed JavaScript statement)
+script.Break_On_Next=在下一语句处中断
+script.Disable_Break_On_Next=停用在下一语句处中断
+ShowHttpHeaders=显示 HTTP 头信息
+# LOCALIZATION NOTE (plural.Request_Count2): Semicolon list of plural forms.
+# A label used in the Net panel. Displays the number of HTTP requests executed by the current page.
+# %1 = Number of requests
+# example: 21 requests
+plural.Request_Count2=%S 个请求
+# LOCALIZATION NOTE (net.summary.from_cache):
+# Label used in the Net panel's request summary. Displays the summarized response size coming from cache for all HTTP requests.
+net.summary.from_cache=%S 来自缓存
+# LOCALIZATION NOTE (net.summary.tip.request_count, net.summary.tip.total_size,
+# net.summary.tip.total_cached_size, net.summary.tip.total_request_time):
+# Labels used for the tooltips in the Net panel's request summary
+net.summary.tip.request_count=请求总数
+net.summary.tip.total_size=所有响应的总大小
+net.summary.tip.total_cached_size=来自缓存的响应的总大小
+net.summary.tip.total_request_time=加载请求所需的全部时间和 'load' 事件发生的时间
+StopLoading=停止载入
+net.tip.Stop_Loading=停止载入该请求
+LargeData=(大数据)
+ShowComputedStyle=显示计算出的样式
+StyleGroup-text=文本
+StyleGroup-background=背景
+StyleGroup-box=盒模型
+StyleGroup-layout=布局
+StyleGroup-other=其它
+Dimensions=%S x %S
+# LOCALIZATION NOTE (CopyColor, css.tip.Copy_Color):
+# Context menu item for color values inside the CSS panel.
+# Copies the color value to the clipboard.
+CopyColor=复制颜色
+css.tip.Copy_Color=复制颜色到剪贴板
+# LOCALIZATION NOTE (CopyImageLocation, css.tip.Copy_Image_Location,
+# OpenImageInNewTab, css.tip.Open_Image_In_New_Tab):
+# Context menu items for images inside the CSS panel.
+# Allow copying the URL of an image to the clipboard and opening it in a new browser tab
+CopyImageLocation=复制图片路径
+css.tip.Copy_Image_Location=复制图片的 URL 到剪贴板
+OpenImageInNewTab=在新标签中打开图片
+css.tip.Open_Image_In_New_Tab=在新标签中打开图片
+# LOCALIZATION NOTE (OmitObjectPathStack, callstack.option.tip.Omit_Object_Path_Stack):
+# Stack side panel option (located in tab's option menu). If set to true,
+# the object path stack won't be displayed.
+OmitObjectPathStack=省略工具栏堆栈
+callstack.option.tip.Omit_Object_Path_Stack=不显示对象路径堆栈
+Load_Original_Source=载入原始源代码
+css.tip.Load_Original_Source=放弃改动并载入原始 CSS
+# LOCALIZATION NOTE (callstack.option.Show_Arguments, callstack.option.tip.Show_Arguments):
+# Stack side panel option (located in tab's option menu). If set to true,
+# function arguments are displayed
+callstack.option.Show_Arguments=显示参数
+callstack.option.tip.Show_Arguments=同时显示函数的参数
+# LOCALIZATION NOTE (Copy_Rule_Declaration, css.tip.Copy_Rule_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule including all its properties to the clipboard.
+Copy_Rule_Declaration=复制规则(选择器+样式声明)
+css.tip.Copy_Rule_Declaration=复制规则(选择器+所有样式声明)到剪贴板
+# LOCALIZATION NOTE (Copy_Style_Declaration, css.tip.Copy_Style_Declaration):
+# Menu item label and tooltip used in CSS panel/Style side panel context menu.
+# Allows copying the current CSS rule's properties to the clipboard.
+Copy_Style_Declaration=复制样式声明
+css.tip.Copy_Style_Declaration=复制所有样式声明到剪贴板
+# LOCALIZATION NOTE (css.label.Copy_Property_Declaration, css.tip.Copy_Property_Declaration,
+# css.label.Copy_Property_Name, css.tip.Copy_Property_Name, css.label.Copy_Property_Value,
+# css.tip.Copy_Property_Value):
+# Menu item labels and tooltips used in CSS panel/Style side panel context menu.
+# Allow copying the current CSS property's declaration/name/value to the clipboard.
+css.label.Copy_Property_Declaration=复制样式声明
+css.tip.Copy_Property_Declaration=复制该样式声明到剪贴板
+css.label.Copy_Property_Name=复制样式名称
+css.tip.Copy_Property_Name=复制该样式名称到剪贴板
+css.label.Copy_Property_Value=复制样式内容
+css.tip.Copy_Property_Value=复制该样式内容到剪贴板
+# LOCALIZATION NOTE (plural.Error_Count2): Semicolon list of plural forms.
+# A label used in for Firebug Start Button. Displays the number of JavaScript errors found by Firebug.
+# %1 = Number of errors
+# example: 111 Errors
+plural.Error_Count2=%S 个错误
+moduleManager.title=%S 面板已被禁用
+moduleManager.desc3=使用 Firebug 的工具栏图标来同时启用或禁用所有面板。单独控制某一面板,请使用相应标签的菜单。
+moduleManager.Enable=启用
+Suspend_Firebug=挂起 Firebug
+Resume_Firebug=恢复 Firebug
+Reset_Panels_To_Disabled=重置各面板为禁用
+Open_Console=打开控制台
+Open_Console_Tooltip=为 Firebug 打开跟踪控制台
+Scope_Chain=作用域链
+# LOCALIZATION NOTE (With_Scope, Call_Scope, Window_Scope):
+# Names of kinds of scopes. Probably best left in English.
+# With: the scope inside of the with(obj) {} statement
+With_Scope=With
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
+Call_Scope=调用
+# Window: the scope inside of a Javascript window object.
+Window_Scope=窗口
+# LOCALIZATION NOTE (requestinfo.Blocking, requestinfo.Resolving, requestinfo.Connecting,
+# requestinfo.Sending, requestinfo.Waiting, requestinfo.Receiving, requestinfo.ContentLoad,
+# requestinfo.WindowLoad):
+# Net panel timing info labels. Displayed in a tooltip (aka time-info-tip) when hovering the
+# waterfall graph in the Net panel.
+requestinfo.Blocking=阻挡
+requestinfo.Resolving=域名解析
+requestinfo.Connecting=建立连接
+requestinfo.Sending=发送请求
+requestinfo.Waiting=等待响应
+requestinfo.Receiving=接收数据
+requestinfo.ContentLoad='DOMContentLoaded' (事件)
+requestinfo.WindowLoad='load' (事件)
+# LOCALIZATION NOTE (requestinfo.started.label, requestinfo.phases.label, requestinfo.timings.label):
+# Labels used within a tooltip (aka time-info-tip) for waterfall graph in the Net panel.
+requestinfo.started.label=该请求开始的时间
+requestinfo.phases.label=请求各阶段的开始时间和持续时间:
+requestinfo.timings.label=事件相对该请求开始的时间:
+search.Firebug_Search=Firebug 搜索
+# LOCALIZATION NOTE (search.Next, search.Previous, search.Case_Sensitive, search.Case_Insensitive,
+# search.Multiple_Files, search.Use_Regular_Expression):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+search.Next=下一个
+search.tip.Next=搜索下一匹配
+search.Previous=上一个
+search.tip.Previous=搜索上一匹配
+search.Case_Sensitive=区分大小写
+search.tip.Case_Sensitive=搜索时区分大小写
+search.Case_Insensitive=不区分大小写
+search.tip.Case_Insensitive=搜索时不区分大小写
+search.Multiple_Files=多个文件
+search.tip.Multiple_Files=在与此面板相关的所有文件中搜索
+search.Use_Regular_Expression=使用正则表达式
+search.tip.Use_Regular_Expression=使用正则表达式进行搜索
+# LOCALIZATION NOTE (search.html.CSS_Selector, search.net.Headers, search.net.Parameters, search.net.Response_Bodies,
+# search.script.Multiple_Files):
+# Labels used within an options menu for the search box. This menu is displayed if the search box is focused.
+# These labels are specific to a certain panel.
+search.html.CSS_Selector=CSS 选择器
+search.net.Headers=头信息
+search.net.Parameters=参数
+search.net.Response_Bodies=响应正文
+search.net.tip.Response_Bodies=同时在响应正文中搜索
+firebug.console.Persist=保持
+firebug.console.Do_Not_Clear_On_Reload2=页面重新载入时不清空面板
+firebug.console.Show_All_Log_Entries=显示所有日志
+firebug.console.Errors=错误
+firebug.console.Filter_by_Errors=只显示错误
+firebug.console.Warnings=警告
+firebug.console.Filter_by_Warnings=只显示警告
+firebug.console.Info=消息
+firebug.console.Filter_by_Info=只显示消息
+firebug.console.Debug_Info=调试信息
+firebug.console.Filter_by_Debug_Info=只显示调试信息
+firebug.Deactivate_Firebug=停用 Firebug
+firebug.tip.Deactivate_Firebug=对当前网站停用 Firebug
+# LOCALIZATION NOTE (firebug.tip.Toggle_Side_Panels): A tooltip used for side panels visibility
+# toggle button. The button is available on the right side of panel's toolbar (only for panels
+# that have a side panel).
+firebug.tip.Toggle_Side_Panels=切换侧面板是否可见
+firebug.ShowFirebug=打开 Firebug
+firebug.menu.tip.Open_Firebug=显示 Firebug 界面
+firebug.HideFirebug=隐藏 Firebug
+firebug.menu.tip.Minimize_Firebug=最小化 Firebug, 保持激活状态
+firebug.FocusFirebug=将焦点移动到 Firebug 窗口
+firebug.menu.tip.Focus_Firebug=将焦点移动到独立的 Firebug 窗口
+firebug.menu.Enable_All_Panels=启用所有面板
+firebug.menu.tip.Enable_All_Panels=启用所有按需激活面板
+firebug.menu.Disable_All_Panels=禁用所有面板
+firebug.menu.tip.Disable_All_Panels=禁用所有按需激活面板
+firebug.menu.Customize_shortcuts=自定义快捷键
+firebug.menu.tip.Customize_Shortcuts=自定义 Firebug 的快捷键
+firebug.Options=选项
+firebug.menu.tip.Options=Firebug 全局选项
+firebug.menu.Enable_Accessibility_Enhancements=启用辅助增强功能
+firebug.menu.tip.Enable_Accessibility_Enhancements=启用完全键盘控制及其它辅助增强功能
+firebug.menu.Activate_Same_Origin_URLs2=在同源 URL 上激活
+firebug.menu.tip.Activate_Same_Origin_URLs=为符合同源性限制的 URL 激活 Firebug
+firebug.menu.Reset_All_Firebug_Options=重置所有 Firebug 选项
+firebug.menu.tip.Reset_All_Firebug_Options=重置所有 Firebug 选项为默认值
+firebug.menu.Firebug_Online=Firebug 在线
+firebug.menu.tip.Firebug_Online=与 Firebug 相关的网站
+firebug.menu.Extensions=Firebug 扩展...
+firebug.menu.tip.Extensions=下载和安装 Firebug 扩展
+firebug.menu.Vertical_Panels=垂直面板
+firebug.menu.tip.Vertical_Panels=切换 Firebug 主/侧面板的布局
+firebug.menu.Show_Info_Tips=显示信息提示
+firebug.menu.tip.Show_Info_Tips=显示含有悬停元素信息的弹出提示
+firebug.Show_Error_Count=显示错误数
+firebug.menu.tip.Show_Error_Count=显示控制台中记录的错误数量
+firebug.TextSize=文本大小
+firebug.menu.tip.Text_Size=改变 Firebug 使用的文本大小
+firebug.IncreaseTextSize=放大
+firebug.menu.tip.Increase_Text_Size=增大 Firebug 使用的文本大小
+firebug.DecreaseTextSize=缩小
+firebug.menu.tip.Decrease_Text_Size=减小 Firebug 使用的文本大小
+firebug.NormalTextSize=重置
+firebug.menu.tip.Normal_Text_Size=重置 Firebug 使用的文本大小
+firebug.Website=Firebug 官网...
+firebug.menu.tip.Website=打开 Firebug 官方网站
+firebug.help=帮助...
+firebug.menu.tip.help=打开 Firebug 的帮助页面
+firebug.Documentation=文档...
+firebug.menu.tip.Documentation=打开 Firebug 文档
+firebug.KeyShortcuts=快捷键...
+firebug.menu.tip.Key_Shortcuts=打开 Firebug 中可用的鼠标和键盘快捷键列表
+firebug.Forums=讨论组...
+firebug.menu.tip.Forums=打开讨论组站点
+firebug.Issues=问题跟踪...
+firebug.menu.tip.Issues=打开问题跟踪站点
+firebug.Donate=贡献...
+firebug.menu.tip.Donate=打开贡献站点
+firebug.About=关于...
+firebug.menu.tip.About=关于 Firebug 的信息
+ProfileJavaScript=JavaScript 概况
+firebug.menu.tip.Profile_JavaScript=JavaScript 执行时间概况
+firebug.Search=搜索
+firebug.menu.tip.Search=将焦点移动到 Firebug 搜索
+# Firebug shortcuts
+firebug.shortcut.reenterCommand.label=重新输入命令
+firebug.shortcut.tip.reenterCommand=将最后一条命令重新输入命令行
+firebug.shortcut.toggleInspecting.label=切换查看
+firebug.shortcut.tip.toggleInspecting=启用/禁用页面查看器
+firebug.shortcut.toggleQuickInfoBox.label=切换快速信息框
+firebug.shortcut.tip.toggleQuickInfoBox=启用/禁用显示有当前查看元素信息的面板
+firebug.shortcut.toggleProfiling.label=切换概况
+firebug.shortcut.tip.toggleProfiling=启用/禁用 JavaScript 概况
+firebug.shortcut.focusCommandLine.label=将焦点移动到命令行
+firebug.shortcut.tip.focusCommandLine=打开 Firebug 并将焦点移动到命令行/切换命令行弹出
+firebug.shortcut.focusFirebugSearch.label=将焦点移动到 Firebug 搜索
+firebug.shortcut.tip.focusFirebugSearch=将焦点移动到 Firebug 搜索
+firebug.shortcut.focusWatchEditor.label=将焦点移动到监控编辑器
+firebug.shortcut.tip.focusWatchEditor=切换到脚本面板并将焦点移动到监控表达式编辑器
+firebug.shortcut.focusLocation.label=将焦点移动到地址列表
+firebug.shortcut.tip.focusLocation=打开地址列表菜单
+firebug.shortcut.nextObject.label=下一个对象
+firebug.shortcut.tip.nextObject=选中面板元素路径中的下一个对象
+firebug.shortcut.previousObject.label=上一个对象
+firebug.shortcut.tip.previousObject=选中面板元素路径中的上一个对象
+firebug.shortcut.customizeFBKeys.label=自定义 Firebug 快捷键
+firebug.shortcut.tip.customizeFBKeys=打开 Firebug 快捷键自定义对话框
+firebug.shortcut.detachFirebug.label=在新窗口中打开 Firebug
+firebug.shortcut.tip.detachFirebug=在独立窗口中打开 Firebug
+firebug.shortcut.leftFirebugTab.label=切换到 Firebug 左面板
+firebug.shortcut.tip.leftFirebugTab=切换到 Firebug 左侧的面板
+firebug.shortcut.rightFirebugTab.label=切换到 Firebug 右面板
+firebug.shortcut.tip.rightFirebugTab=切换到 Firebug 右侧的面板
+firebug.shortcut.toggleFirebug.label=打开 Firebug
+firebug.shortcut.tip.toggleFirebug=打开/最小化 Firebug 界面
+firebug.shortcut.closeFirebug.label=停用 Firebug
+firebug.shortcut.tip.closeFirebug=对当前网站停用 Firebug
+firebug.shortcut.previousFirebugTab.label=上一个 Firebug 面板
+firebug.shortcut.tip.previousFirebugTab=切换到上次选中的 Firebug 面板
+firebug.shortcut.clearConsole.label=清空控制台
+firebug.shortcut.tip.clearConsole=清空控制台中的所有日志
+firebug.shortcut.openTraceConsole.label=打开跟踪控制台
+firebug.shortcut.tip.openTraceConsole=打开 FBTrace 控制台
+firebug.shortcut.navBack.label=后退
+firebug.shortcut.tip.navBack=切换到上一个面板或地址列表项
+firebug.shortcut.navForward.label=前进
+firebug.shortcut.tip.navForward=切换到下一个面板或地址列表项
+firebug.shortcut.increaseTextSize.label=放大文本
+firebug.shortcut.tip.increaseTextSize=增大 Firebug 使用的文本大小
+firebug.shortcut.decreaseTextSize.label=缩小文本
+firebug.shortcut.tip.decreaseTextSize=减小 Firebug 使用的文本大小
+firebug.shortcut.normalTextSize.label=重置文本大小
+firebug.shortcut.tip.normalTextSize=重置 Firebug 使用的文本大小
+firebug.shortcut.help.label=打开帮助
+firebug.shortcut.tip.help=打开常见问题答案页面
+firebug.shortcut.toggleBreakOn.label=切换在...时中断
+firebug.shortcut.tip.toggleBreakOn=启用/禁用在面板中有特定事件发生时停止 Javascript 的执行
+firebug.panel_selector=面板选择器
+customizeShortcuts=Firebug 快捷键绑定
+# A11y Chrome Labels (not visible, spoken by screen readers)
+a11y.labels.panel_tools=面板工具
+a11y.labels.firebug_panels=Firebug 面板
+a11y.labels.firebug_side_panels=Firebug 侧面板
+a11y.labels.firebug_window=Firebug 窗口
+a11y.labels.firebug_status=Firebug 状态
+a11y.labels.reset=重置
+a11y.labels.reset_shortcut=重置 %S 快捷键
+aria.labels.inactive_panel=非活动面板
+# A11y panelNode labels (not visible, spoken by screen readers)
+a11y.labels.log_rows=日志行
+a11y.labels.call_stack=堆栈
+a11y.labels.document_structure=文档结构
+a11y.labels.title_panel= %S 面板
+a11y.labels.title_side_panel= %S 侧面板
+a11y.labels.cached=已缓存
+aria.labels.stack_trace=堆栈状态
+# A11y Domplate labels (not visible, spoken by screen readers)
+a11y.layout.padding=内边距
+a11y.layout.border=边框
+a11y.layout.margin=外边距
+a11y.layout.position=定位
+a11y.layout.position_top=上偏移量
+a11y.layout.position_right=右偏移量
+a11y.layout.position_bottom=下偏移量
+a11y.layout.position_left=左偏移量
+a11y.layout.margin_top=上外边距
+a11y.layout.margin_right=右外边距
+a11y.layout.margin_bottom=下外边距
+a11y.layout.margin_left=左外边距
+a11y.layout.border_top=上边框
+a11y.layout.border_right=右边框
+a11y.layout.border_bottom=下边框
+a11y.layout.border_left=左边框
+a11y.layout.padding_top=上内边距
+a11y.layout.padding_right=右内边距
+a11y.layout.padding_bottom=下内边距
+a11y.layout.padding_left=左内边距
+a11y.layout.top=上
+a11y.layout.right=右
+a11y.layout.bottom=下
+a11y.layout.left=左
+a11y.layout.width=宽度
+a11y.layout.height=高度
+a11y.layout.size=大小
+a11y.layout.z-index=z 指数
+a11y.layout.box-sizing=盒模型尺寸基准
+a11y.layout.clientBoundingRect=边界矩形
+a11y.descriptions.press_enter_to_edit_values=按回车和 TAB 键来编辑每一个值
+a11y.labels.style_rules=样式规则
+aria.labels.inherited_style_rules=继承来的样式
+a11y.labels.computed_styles=计算出的样式
+a11y.labels.dom_properties=DOM 属性
+# LOCALIZATION NOTE:
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Describe contents of inline editor fields
+a11y.labels.inline_editor=内置编辑器
+a11y.labels.value_for_attribute_in_element=%2$S 元素 %1$S 属性的值
+a11y.labels.attribute_for_element=%S 元素的属性
+a11y.labels.text_contents_for_element=%S 元素的文本内容
+a11y.labels.defined_in_file=在 %S 中定义
+a11y.labels.declarations_for_selector=%S 选择器的样式声明
+a11y.labels.property_for_selector=%S 选择器的 CSS 属性
+a11y.labels.value_property_in_selector=%2$S 选择器 %1$S 属性的值
+a11y.labels.css_selector=CSS 选择器
+a11y.labels.source_code_for_file=文件 %S 的源代码
+a11y.labels.press_enter_to_add_new_watch_expression=按回车以添加新的监控表达式
+# LOCALIZATION NOTE (a11y.labels.overridden):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Indicates, that a style property is overridden by selector with higher specificity
+a11y.labels.overridden=被覆盖
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
+# Used by a11y. Not directly visible in the UI, intended for screen readers.
+# Existence and state of a breakpoint
+a11y.updates.has_conditional_break_point=有条件断点
+a11y.updates.has_disabled_break_point=禁用了断点
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# first %S = Line number, second %S = Function name, third %S = File name
+a11y.updates.script_suspended_on_line_in_file=脚本在文件 %3$S 第 %1$S 行的 %2$S 函数中挂起
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a console panel search
+# first %S = String key the user is looking for, second %S = Number of rows that contain the matched text
+# examples: Match found for "test" in 17 log rows
+a11y.updates.match_found_in_logrows=在日志的第 %2$S 行找到了"%1$S"的匹配
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a script panel search
+# first %S = String key the user is looking for, second $S = Line number the match was found on, third %S = File name the match was found in
+# examples: Match found for "window.alert" on line 322 in utilities.js
+a11y.updates.match_found_for_on_line=在文件 %3$S 的第 %2$S 行找到了"%1$S"的匹配
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an element node)
+# first %S = Matched search string, second %S = HTML element name containing the matched string, third %S = XPATH string specifying the matched element
+# example: Match found for "obj" in object element at /html/body/object[2]
+a11y.updates.match_found_in_element=在 XPath 为 %3$S 的 %2$S 元素中找到了"%1$S"的匹配
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+a11y.updates.match_found_in_attribute=在 XPath 为 %5$S 的 %4$S 元素中找到了与"%1$S"匹配的属性 %2$S=%3$S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+a11y.updates.match_found_in_text_content=在 XPath 为 %4$S 的 %3$S 元素中找到了与"%1$S"匹配的文本 %2$S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+a11y.updates.match_found_in_selector=找到了与"%S"匹配的选择器 %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+a11y.updates.match_found_in_style_declaration=在 %3$S 选择器中找到了与"%1$S"匹配的样式声明 %2$S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+a11y.updates.match_found_in_dom_property=找到了与"%S"匹配的 DOM 属性 %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+a11y.updates.match_found_in_net_row=在 %2$S 中找到了与"%1$S"匹配的 %3$S : %4$S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+a11y.updates.match_found_in_net_summary_row=在网络概要中找到了与"%S"匹配的 %S
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+a11y.updates.no_matches_found=没有找到"%S"的匹配
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+confirmation.Reset_All_Firebug_Options=你确认要重置所有 Firebug 选项为默认状态吗?
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+confirmation.Edit_CSS_Source=您对 CSS 的已有编辑将被放弃\n您确定要编辑 CSS 源代码吗?
+# Console messages
+warning.Console_must_be_enabled=必须启用控制台
+warning.Command_line_blocked?=命令行被阻止了?
+warning.dollar_change=控制台命令行函数 $() 已经由 getElementById(id) 改为 querySelector(selector)。你可能需要改用 $("#%S")。
+message.Reload_to_activate_window_console=重新载入以激活控制台
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+message.sourceNotAvailableFor=重新载入页面以获取源代码
+message.The_resource_from_this_URL_is_not_text=此 URL 的资源不是文本
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+firebug.history.Go_back_to_this_panel=后退到此面板
+firebug.history.Stay_on_this_panel=停留在此面板
+firebug.history.Go_forward_to_this_panel=前进到此面板
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+# Tooltips for back/forward buttons on the Script panel toolbar.
+firebug.history.Go_back=后退
+firebug.history.Go_forward=前进
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+# to reload the sources
+script.warning.inactive_during_page_load=脚本面板在页面载入时未激活
+script.suggestion.inactive_during_page_load2=<a>重新载入</a>以查看所有源代码
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.javascript_not_enabled=Javascript 未启用
+script.suggestion.javascript_not_enabled=请查看 Firefox > '工具' > '选项' > '内容' > '启用 JavaScript'
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+script.button.enable_javascript=启用 Javascript 并刷新
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.all_scripts_filtered=所有脚本均被过滤
+script.suggestion.all_scripts_filtered=请查看工具栏上的脚本过滤设置
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_system_source_debugging=无法调试系统源代码
+script.suggestion.no_system_source_debugging=Firebug 目前无法用于系统源代码的调试。查看 <a>issue 5110</a> 来了解原因。
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.no_javascript=本页面不包含 Javascript
+script.suggestion.no_javascript2=如果 <script> 标签有 "type" 属性, 其值应为 "text/javascript" 或者 "application/javascript". 另外脚本必须可解析(语法上正确)。
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=调试器已经激活
+script.suggestion.debugger_active=调试器当前停止在另一页面的断点上
+script.button.Go_to_that_page=切换到上述页面
+script.warning.debugger_not_activated=调试器未激活
+script.suggestion.debugger_not_activated=调试器未激活
+# LOCALIZATION NOTE (script.Script_panel_must_be_enabled): Adds a parenthetical note to a tooltip
+# about the Script panel having to be enabled.
+# %S = original message
+# example: "Profile JavaScript execution time (Script panel must be enabled)"
+script.Script_panel_must_be_enabled=%S (必须启用脚本面板)
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=关闭
+firebug.View=查看
+firebug.Help=帮助
+firebug.Run=运行
+firebug.Copy=复制
+firebug.History=历史
+firebug.Run_the_entered_command=运行输入的命令
+firebug.Clear_the_Command_Editor=清空命令行编辑器
+firebug.Copy_the_script_as_a_bookmarklet=复制脚本为书签
+firebug.Insert_a_previously_entered_command=插入早先输入的命令
+firebug.AlwaysOpenInWindow=总在新窗口中打开
+firebug.OpenWith=在编辑器中打开
+firebug.menu.tip.Open_With=在外部编辑器中打开内容
+firebug.Permissions=站点...
+firebug.Configure_Editors=配置编辑器
+script.tip.Script_Type=根据脚本类型过滤
+script.tip.Script_Filter_Static=仅显示与页面一起载入的脚本
+script.tip.Script_Filter_Evals=显示与页面一起载入的脚本和通过 eval() 产生的脚本
+script.tip.Script_Filter_Events=显示与页面一起载入的脚本、通过 eval() 产生的脚本和事件监听函数
+script.tip.Script_Filter_All=显示所有类型的脚本
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=重新运行
+script.tip.Rerun=重新运行当前的函数调用堆栈
+script.Continue=断续
+script.tip.Continue=继续执行 JavaScript
+script.Step_Over=单步跳过
+script.tip.Step_Over=执行下一命令
+script.Step_Into=单步进入
+script.tip.Step_Into=执行下一命令并进入函数
+script.Step_Out=单步退出
+script.tip.Step_Out=执行函数余下的部分并返回到其调用者
+firebug.RunUntil=运行到这一语句
+script.tip.Run_Until=执行 JavaScript 直到特定行
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=查看
+firebug.InspectElement=查看元素
+firebug.InspectElementWithFirebug=使用 Firebug 查看元素
+firebug.BreakOnErrors=在错误处中断
+firebug.InspectTooltip=点击查看页面中的元素
+firebug.EditHTMLTooltip=编辑 HTML
+firebug.Profile=概况
+firebug.Clear=清除
+firebug.ClearConsole=清空控制台
+firebug.ClearTooltip=清空控制台
+# editors.dtd
+editors.Configured_Firebug_Editors=已配置的 Firebug 编辑器
+editors.Editor=编辑器
+editors.Executable=可执行文件
+editors.Launch_Arguments=运行参数
+editors.Add=添加
+editors.Remove=删除
+editors.Change=更改
+editors.Move_Up=上移
+editors.Close=关闭
+editors.Browse=浏览...
+changeEditor.Editor_Configuration=编辑器配置
+changeEditor.Name=名字:
+changeEditor.Executable=可执行文件:
+changeEditor.CmdLine=参数:
+changeEditor.Supplied_arguments=Firebug 提供的参数:
+changeEditor.URL_of_file=文件的 URL (如果 %url 不存在,将默认使用 %file)
+changeEditor.Path_to_local_file=本地文件(或临时文件)的路径
+changeEditor.Line_number=行号(如果可用)
+changeEditor.Invalid_Application_Path=无效的应用程序路径
+changeEditor.Application_does_not_exist=指定的应用程序不存在!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=编辑
+firebug.css.sourceEdit=CSS 源代码编辑
+firebug.css.sourceEdit.tooltip=编辑 CSS 源代码 (放弃已有修改)
+firebug.css.liveEdit=CSS 实时编辑
+firebug.css.liveEdit.tooltip=编辑当前 CSS (保留已有修改)
+firebug.EditCSSTooltip=编辑样式表
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=隐私浏览模式下站点将不被记录
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=显示断点通知
+firebug.breakpoint.tip.Show_Break_Notifications=当"在...时中断"功能或者"debugger"关键词停止 Javascript 的执行时显示通知
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=你可以在<a>面板菜单</a>里禁用/启用断点通知
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=点击"禁用"将以一个禁用的断点覆盖"debugger"关键词
+firebug.bon.tooltip.disableDebuggerKeyword2=创建一个禁用的断点
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(要使用本功能,必须启用脚本面板)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=没有子对象
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=更多
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=检测到循环引用
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=存储中有 %S 个项目
+# LOCALIZATION NOTE (firebug.reps.historyEntries): Semicolon list of plural forms.
+# Displayed when evaluating "history" - informs the user about the number of entries in history.
+# %1 = Number of history entries
+firebug.reps.historyEntries=%1$S 条历史
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=对象属性
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(无自动补全)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=URL 对象很可能已经被 revokeObjectURL 方法撤销
+firebug.failedToPreviewImageURL=载入指定 URL 失败
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=内存概况开始
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=概况运行中添加的对象
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=内存概况结果
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=整个会话
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(无输出)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(空字符串)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=检测到了 Firecookie 扩展。该扩展已经默认集成到 Firebug 1.10 中。为避免冲突,请卸载 Firecookie。\n\n必须重启浏览器来完成扩展的卸载。
+cookies.legacy.uninstall=卸载
+cookies.legacy.uninstall_and_restart=卸载并重启
+# LOCALIZATION NOTE (console.cmd.help_title, console.cmd.help_title_desc):
+console.cmd.help_title=命令行 API
+console.cmd.help_title_desc=按 F1 打开在线 Firebug 帮助
+# LOCALIZATION NOTE (console.cmd.tip_title, console.cmd.tip_title_desc):
+console.cmd.tip_title=命令行小提示
+console.cmd.tip_title_desc=关于使用命令行的提示和技巧
+# LOCALIZATION NOTE (console.cmd.tip.javascript, console.cmd.tip.closures):
+# Description for Command Line tips that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.tip.javascript=命令行中可以执行任何有效 JavaScript 表达式。例如:
+console.cmd.tip.closures=使用 '.%' 语法(<a>了解更多</a>)来获取闭包中的变量。例如:
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=返回指定 id 的单个元素
+console.cmd.help.$$=返回与指定 CSS 选择器匹配的元素的数组
+console.cmd.help.$x=返回与指定 XPath 表达式匹配的元素的数组
+console.cmd.help.dir=打印指定对象所有属性的互动列表。与 DOM 面板中的视图一致
+console.cmd.help.dirxml=打印指定 HTML/XML 元素的 XML 源码树。与 HTML 面板中的视图一致。单击任意节点以在 HTML 面板中查看它
+console.cmd.help.cd=命令行表达式默认对应于页面的顶层窗口。cd() 可用来在页面顶层窗口和指定框架窗口间切换
+console.cmd.help.clear=清空控制台
+console.cmd.help.copy=复制函数的返回值或者对象到剪贴板
+console.cmd.help.inspect=在最合适的面板中查看对象。可以通过第二个参数来指定面板,包括 "html", "stylesheet", "script", 和 "dom"
+console.cmd.help.keys=返回包含指定对象所有属性名称的数组
+console.cmd.help.values=返回包含指定对象所有属性值的数组
+console.cmd.help.debug=在指定函数的第一行添加断点
+console.cmd.help.undebug=移除指定函数第一行的断点
+console.cmd.help.monitor=打开对指定函数所有调用的日志
+console.cmd.help.unmonitor=关闭对指定函数所有调用的日志
+console.cmd.help.monitorEvents=打开指定对象所有事件的日志。可以通过第二个参数来指定只记录特定的事件/事件类型,包括 "composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul", 和 "clipboard"
+console.cmd.help.unmonitorEvents=关闭指定对象所有事件的日志。可以通过第二个参数来指定只停止记录特定的事件/事件类型。
+console.cmd.help.profile=开始收集 Javascript 概况。可以通过第二个参数来指定概况报告表头的文本
+console.cmd.help.profileEnd=停止记录 Javascript 概况并打印报告
+console.cmd.help.table=可用于以表格布局记录数组/对象的数组。可以通过第二个参数来指定只记录特定的列/属性
+console.cmd.help.$0=代表使用查看器选中的最后一个元素
+console.cmd.help.$1=代表使用查看器选中的倒数第二个元素
+console.cmd.help.$2=代表使用查看器选中的倒数第三个元素
+console.cmd.help.$3=代表使用查看器选中的倒数第四个元素
+console.cmd.help.$4=代表使用查看器选中的倒数第五个元素
+console.cmd.help.$n=返回使用查看器选中的最后五个元素之一。参数为从 0 开始的序号
+console.cmd.help.$_=代表命令行中执行的最后一个表达式的结果
+console.cmd.help.help=显示所有可用命令的帮助
+console.cmd.help.include=载入一个远程脚本
+console.cmd.help.$p=在一个 JavaScript 对象/值的上下文菜单中点击“在命令行中使用”,该变量会指向这个对象/值
+console.cmd.help.getEventListeners=返回一个包括直接注册在一个元素(或其它事件目标)上的所有事件处理函数的对象
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=该命令的帮助页面不可用
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=相对于文档加载的各阶段开始和持续时间:
+perftiming.events.label=相对于文档加载的事件时间:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=性能计时
+perftiming.details_title_desc=详细计时
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=完成与服务器建立连接
+perftiming.connectStart=开始与服务器建立连接
+perftiming.domComplete=文档的 readyState 变为 complete
+perftiming.domContentLoadedEventEnd=文档的 DOMContentLoaded 事件完成
+perftiming.domContentLoadedEventStart=文档的 DOMContentLoaded 事件被触发
+perftiming.domInteractive=文档的 readyState 变为 interactive
+perftiming.domLoading=文档的 readyState 变为 loading
+perftiming.domainLookupEnd=域名解析完成
+perftiming.domainLookupStart=域名解析开始
+perftiming.fetchStart=开始获取服务器/应用缓存/缓存/本地文件的资源
+perftiming.loadEventEnd=文档的 load 事件完成
+perftiming.loadEventStart=文档的 load 事件被触发
+perftiming.navigationStart=开始 unload 前一文档
+perftiming.redirectCount=经历的重定向总数
+perftiming.redirectEnd=最后一次同源重定向结束
+perftiming.redirectStart=引起第一次同源重定向的 fetchStart
+perftiming.requestStart=开始请求当前文档
+perftiming.responseEnd=完成收到响应/与服务器的连接被关闭
+perftiming.responseStart=开始收到响应
+perftiming.unloadEventEnd=前一同源文档的 unload 事件完成
+perftiming.unloadEventStart=前一同源文档的 unload 事件被触发
diff --git a/locale/zh-CN/selectors.properties b/locale/zh-CN/selectors.properties
index ead0187..ec86c52 100644
--- a/locale/zh-CN/selectors.properties
+++ b/locale/zh-CN/selectors.properties
@@ -1,26 +1,26 @@
-# LOCALIZATION NOTE (Panel-selectors): Title for Selectors side panel displayed
-# in the CSS panel
-Panel-selectors=选择器
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selectors=显示与特定选择器匹配的元素
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selectors side panel.
-css.selector.noSelection=输入一个自定义的选择器或者在某一 CSS 规则的上下文菜单中点击<b>获取匹配元素</b>.
-# LOCALIZATION NOTE (css.selector.noSelectionResults, css.selector.invalidSelector):
-# Info messages for selector trials in Selectors side panel
-css.selector.noSelectionResults=没有匹配的元素
-# LOCALIZATION NOTE (css.selector.readMore):
-# Helper text with a link to getfirebug.com/wiki for the Selectors panel.
-css.selector.readMore=您可以<a>更深入了解</a>本面板的使用方法
-# LOCALIZATION NOTE (css.selector.invalidSelector):
-css.selector.invalidSelector=输入了无效的选择器
-# LOCALIZATION NOTE (css.selector.TryASelector):
-# Placeholder label for the Selectors side panel's input field for creating new selector trials
-css.selector.TryASelector=尝试一个选择器...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=获取匹配元素
-aria.labels.Selectors=选择器侧面板
-a11y.labels.press_enter_to_add_new_selector=按回车键来添加一个新的选择器
+# LOCALIZATION NOTE (Panel-selectors): Title for Selectors side panel displayed
+# in the CSS panel
+Panel-selectors=选择器
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selectors=显示与特定选择器匹配的元素
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selectors side panel.
+css.selector.noSelection=输入一个自定义的选择器或者在某一 CSS 规则的上下文菜单中点击<b>获取匹配元素</b>.
+# LOCALIZATION NOTE (css.selector.noSelectionResults, css.selector.invalidSelector):
+# Info messages for selector trials in Selectors side panel
+css.selector.noSelectionResults=没有匹配的元素
+# LOCALIZATION NOTE (css.selector.readMore):
+# Helper text with a link to getfirebug.com/wiki for the Selectors panel.
+css.selector.readMore=您可以<a>更深入了解</a>本面板的使用方法
+# LOCALIZATION NOTE (css.selector.invalidSelector):
+css.selector.invalidSelector=输入了无效的选择器
+# LOCALIZATION NOTE (css.selector.TryASelector):
+# Placeholder label for the Selectors side panel's input field for creating new selector trials
+css.selector.TryASelector=尝试一个选择器...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=获取匹配元素
+aria.labels.Selectors=选择器侧面板
+a11y.labels.press_enter_to_add_new_selector=按回车键来添加一个新的选择器
diff --git a/locale/zh-TW/cookies.properties b/locale/zh-TW/cookies.properties
index 83d6bb1..89bb919 100644
--- a/locale/zh-TW/cookies.properties
+++ b/locale/zh-TW/cookies.properties
@@ -1,276 +1,276 @@
-# LOCALIZATION NOTE (extensions.firecookie at janodvarko.cz.description):
-cookies.Panel=Cookies
-panel.tip.cookies=檢測或調整 cookie
-# Description of this extension.
-cookies.Session=Session
-# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
-# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
-cookies.AllowGlobally=接受所有網站的 cookie
-cookies.tip.AllowGlobally=預設接受或拒絕所有 cookie
-# LOCALIZATION NOTE (cookies.AllowGlobally): Label used for cookies permission.
-# LOCALIZATION NOTE (cookies.LogEvents): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, various cookies events are
-cookies.showCookieEvents=顯示 Cookie 事件
-cookies.tip.showCookieEvents=在主控台記錄 cookie 事件(變更、刪除)
-# displayed in Firebug's Console panel.
-# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
-# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
-# if the permission is changed to deny.
-cookies.clearWhenDeny=拒絕時清除 cookie
-# xxxHonza: currently not displayed in the UI
-# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
-# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
-cookies.Cut=剪下
-cookies.Copy=複製
-cookies.CopyAll=全部複製
-cookies.Paste=貼上
-cookies.Delete=刪除
-# (right click on a cookie in the Cookies panel).
-# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
-cookies.Clear_Value=清除內容
-# Clears cookie value, but not removes the cookie itself.
-# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
-cookies.Edit=編輯
-cookies.Accept=接受
-# a dialog for editing clicked cookie.
-# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
-# click on a header in the Cookies panel). This action restores default state of the header
-cookies.header.Reset_Header=重設標頭
-# (visibility and size of all columns)
-# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
-cookies.Intro=你可以指定個別網站永久允許或拒絕 cookie,\n輸入完整網址並點選封鎖、允許或允許此次連線(Session)
-cookies.ExceptionsTitle=例外 - Cookies
-# enablement. Used only if Firebug 1.2 and 1.3 is installed
-# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
-# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
-# enablement. Used only if Firebug 1.2 and 1.3 is installed.
-cookies.modulemanager.description=Cookie 監視支援
-cookies.HostEnable=對 %S 啟用 Cookies 面板
-cookies.HostDisable=對 %S 停用 Cookies 面板
-cookies.Permissions=啟用或停用 Cookies 面板
-cookies.PermissionsIntro=選擇網站要啟用/停用 Cookies 面板
-# examples: Enable Cookies panel for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
-cookies.SystemPages=系統頁面
-cookies.LocalFiles=本地端檔案
-# panel if it's disabled (only for Firebug 1.2 and 1.3).
-# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when cookies
-cookies.confirm.removeall=你要清除清單中的所有 cookie 嗎?
-# are going to be deleted deleted (or permission is set do deny and cookies should be deleted).
-# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
-cookies.confirm.removeallsession=你要清除清單中的所有 session cookie 嗎?
-# all session cookies are going to be deleted
-# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
-cookies.confirm.Remove_All_From_Host=你要刪除所有來自 %S 的 cookies 嗎?
-# Message within a confirmation dialog that is displayed when deleting cookies.
-# This message is displayed next to a check-box that can be used to disabled this
-cookies.Confirm_cookie_removal=清除 cookie 前先詢問
-cookies.tip.Confirm_cookie_removal=勾選時,刪除清單中所有 cookie 前會先顯示確認對話框
-# confirmation.
-cookies.removeall.tooltip=清除清單中的所有 cookie
-# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
-# that says whether a confirmation dialog is displayed when removing cookies.
-cookies.Remove_Session_Cookies=清除 session cookie
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
-cookies.removeallsession.tooltip=清除清單中的所有 session cookie
-# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
-# Cookies->Remove Session Cookies menu
-cookies.createcookie.tooltip=在 %S 新增 cookie
-# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
-cookies.createcookie.defaultvalue=內容
-# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
-# examples: Create new cookie for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
-cookies.perm.manage.tooltip=管理 %S 的 cookie 權限
-# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
-# is located on a Cookis panel toolbar.
-# examples: Manage cookie permissions for www.softwareishard.com
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-cookies.console.cookiescleared=已清除所有 cookie。
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
-cookies.console.sessioncookiescleared=已清除所有 session cookie。
-# displayed in Firebug's Console panel when all cookie in Firefox are removed
-# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
-# Remove All Cookies in the dialog.
-cookies.console.cookiesrejected=已拒絕的 cookie:
-cookies.console.nocookiesreceived=沒有收到 cookie
-# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
-# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
-# rejected by the current site.
-cookies.console.cookie=Cookie
-cookies.console.deleted=刪除
-cookies.console.added=新增
-cookies.console.changed=變更
-cookies.console.cleared=清除
-# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
-# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
-# events displayed in Firebug's Console panel.
-cookies.domain.label=網域
-# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
-# Displayed in the Cookies panel for domain cookies.
-cookies.secure.label=Secure
-# xxxHonza: not used in the UI now.
-# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
-# Displayed in the Cookies panel for secure cookies.
-cookies.status.accepted=Accepted
-cookies.status.downgraded=Downgraded
-cookies.status.flagged=Flagged
-cookies.status.rejected=Rejected
-# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
-# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
-# displayed in Status column.
-cookies.info.valuetab.label=內容
-cookies.info.rawdatatab.Raw_Data=原始數值
-cookies.info.jsontab.JSON=JSON
-cookies.info.xmltab.XML=XML
-# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
-# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
-# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
-# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
-# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
-cookies.default.session=預設(接受 session cookie)
-cookies.default.thirdPartySession=預設(接受第三方 session cookie)
-cookies.default.thirdParty=預設(接受 cookie)
-cookies.default.allow=預設(接受 cookie)
-cookies.default.deny=預設(拒絕 cookie)
-cookies.default.warn=預設(接受 cookie 前先警告)
-cookies.default.limitThirdParty=預設(限制第三方 cookie)
-cookies.host.session=接受來自 %S 的 session cookie
-cookies.host.accept=接受來自 %S 的 cookie
-cookies.host.reject=拒絕來自 %S 的 cookie
-cookies.host.limitThirdParty=限制用於 %S 的第三方 cookie
-# cookies.default.warn, cookies.host.session, cookies.host.accept,
-# cookies.host.reject): Various labels for cookie permissions.
-# examples: Accept cookies from www.softwareishard.com
-cookies.edit.invalidname=無效的 cookie 名稱。
-cookies.edit.invalidhost=無效的 cookie 主機。
-cookies.edit.invalidpath=無效的 cookie 路徑。
-# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
-# cookies.edit.invalidpath): Various error messages used when a new cookie is created
-# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
-# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.domain,
-# cookies.header.size, cookies.header.path, cookies.header.expires,
-cookies.header.name=名稱
-cookies.header.value=內容
-cookies.header.rawValue=原始數值
-cookies.header.domain=網域
-cookies.header.size=大小
-cookies.header.rawSize=原始大小
-cookies.header.path=路徑
-cookies.header.expires=有效期限
-cookies.header.security=安全性
-cookies.header.httponly=HTTP 專用
-cookies.header.maxAge=Max-Age
-# cookies.header.security, cookies.header.status, cookies.header.httponly):
-# Column labels used in the cookie header.
-# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
-# cookies.header.domain.tooltip, cookies.header.size.tooltip, cookies.header.path.tooltip,
-# cookies.header.expires.tooltip, cookies.header.security.tooltip,
-cookies.header.name.tooltip=cookie 名稱
-cookies.header.value.tooltip=cookie 保存的值
-cookies.header.rawValue.tooltip=cookie 保存的原始值
-cookies.header.domain.tooltip=保存此 cookie 的網域
-cookies.header.rawSize.tooltip=cookie 的原始大小
-cookies.header.size.tooltip=cookie 的大小
-cookies.header.path.tooltip=cookie 的有效路徑
-cookies.header.expires.tooltip=cookie 的過期時間
-cookies.header.security.tooltip=顯示是否為 secure cookie
-cookies.header.httponly.tooltip=顯示 cookie 是否僅於 HTTP 有效
-cookies.header.maxAge.tooltip=cookie 可保存的最長時間
-# cookies.header.status.tooltip, cookies.header.httponly.tooltip):
-# Column tooltips used in the cookie header.
-# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
-# Labels used in the Firebug's net panel. If there are any cookies associated with a network
-# request, there is an additional Cookies tab displayed when the user expands the request.
-cookies.netinfo.Received_Cookies=已收到的 cookie
-cookies.netinfo.Sent_Cookies=已送出的 cookie
-cookies.netinfo.deleted.tooltip=刪除此 cookie 的請求
-# These labels are used within this tab.
-# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
-cookies.Path_Filter=路徑過濾器
-# xxxHonza: Not implemented yet.
-cookies.menu.Cookies=Cookies
-# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
-# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
-# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
-cookies.export.Export_All_Cookies=匯出所有 cookie…
-cookies.export.Export_All_Cookies_Tooltip=將所有瀏覽器 cookie 匯出到 cookies.txt 檔案
-cookies.export.Export_For_Site=匯出此網站的 cookie
-cookies.export.Export_For_Site_Tooltip=將此網站的 cookie 匯出到 cookies.txt 檔案
-# tooltips for exporting menus available under Cookies menus.
-# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
-# when the user is trying to create a cookie and there is no active page (site). This should
-cookies.message.There_is_no_active_page=沒有活動中的頁面。
-# never happen.
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
-# Tooltips for resume button that are used when the Cookies panel is currently selected.
-# The button allows stopping JS execution when a cookie on the current page is modified
-cookies.Break_On_Cookie=Cookie 改變時中斷
-cookies.Disable_Break_On_Cookie=停用在 cookie 改變時中斷
-# added or removed.
-# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
-cookies.Cookie_Breakpoints=Cookie 中斷點
-# displayed in Breakpoints panel (in the Script panel)
-# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
-# Label and tooltip for a context menu item used when the user right clicks on a cookie.
-# examples: Break on 'MyCookie' cookie
-cookies.menu.Break_On_Cookie=在 '%S' cookie 中斷
-cookies.menu.tooltip.Break_On_Cookie=在 '%S' 移除或變更時中斷
-# examples: Break on 'MyCookie' when removed or changed.
-# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
-cookies.menu.Edit_Breakpoint_Condition=編輯中斷點條件
-# used when user right clicks on a cookie with existing breakpoint.
-# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
-cookies.Breakpoint_condition_evaluation_fails=中斷點條件執行失敗
-# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
-cookies.RemoveAll=移除所有 cookie
-cookies.Create=建立 cookie
-# DTD strings converted (main Firecokie UI, see fireCookie.xul)
-# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
-cookies.Tools=工具
-cookies.ToolsTooltip=工具
-# menu on Cookies toolbar.
-# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
-cookies.ViewAll=顯示所有 cookie…
-cookies.ViewAllTooltip=開啟 Cookie 管理員
-# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
-# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
-# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
-cookies.ViewExceptions=網站權限…
-cookies.ViewExceptionsTooltip=檢視已設定權限的網站清單
-# dialog for setting web site cookie permissions.
-# LOCALIZATION NOTE (cookies.Help, cookies.HelpTooltip, cookies.About,
-# cookies.AboutTooltip) Labels and tooltips for additional menu items in Tools menu.
-# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
-cookies.Filter=過濾器
-cookies.FilterTooltip=按選項過濾 cookie 清單的顯示
-cookies.filter.byPath=按目前路徑過濾 cookie
-cookies.filter.byPathTooltip=只顯示符合目前路徑的 cookie
-cookies.filter.showRejectedCookies=顯示被拒絕的 cookie
-cookies.filter.showRejectedCookiesTooltip=已被拒絕的 cookie 也要顯示
-# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
-# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
-# presented on the Cookie toolbar.
-# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
-cookies.edit.title=編輯 cookie
-cookies.edit.name.label=名稱:
-cookies.edit.domain.label=主機:
-cookies.edit.path.label=路徑:
-cookies.edit.expire.label=有效期限:
-cookies.edit.value.label=內容:
-cookies.edit.secure.label=Secure Cookie
-cookies.edit.httponly.label=HTTP Only
-cookies.edit.session.label=Session
-cookies.edit.urlEncode.label=URL encode 值
-# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
-# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
-cookies.console.Cookies=Cookies
-cookies.console.Filter_By_Cookies=只顯示 Cookies
-# cookies.edit.session.label): Edit Cookie dialog UI
-# Customize Shortcuts dialog (Firebug menu)
-firebug.shortcut.removeAllCookies.label=移除所有 Cookie
-cookie.sizeinfo.Size=大小
-cookie.sizeinfo.Raw_Size=原始大小
+# LOCALIZATION NOTE (extensions.firecookie at janodvarko.cz.description):
+cookies.Panel=Cookies
+panel.tip.cookies=檢測或調整 cookie
+# Description of this extension.
+cookies.Session=Session
+# LOCALIZATION NOTE (cookies.Panel): Title of the panel in Firebug's UI.
+# LOCALIZATION NOTE (cookies.Session): Label used to mark session cookies.
+cookies.AllowGlobally=接受所有網站的 cookie
+cookies.tip.AllowGlobally=預設接受或拒絕所有 cookie
+# LOCALIZATION NOTE (cookies.AllowGlobally): Label used for cookies permission.
+# LOCALIZATION NOTE (cookies.LogEvents): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, various cookies events are
+cookies.showCookieEvents=顯示 Cookie 事件
+cookies.tip.showCookieEvents=在主控台記錄 cookie 事件(變更、刪除)
+# displayed in Firebug's Console panel.
+# LOCALIZATION NOTE (cookies.clearWhenDeny): Label used in Cookies panel options menu (the
+# small arrow next to the Cookies panel label). If checked, cookies are automatically removed
+# if the permission is changed to deny.
+cookies.clearWhenDeny=拒絕時清除 cookie
+# xxxHonza: currently not displayed in the UI
+# LOCALIZATION NOTE (cookies.Cut, cookies.Copy, cookies.CopyAll, cookies.Paste,
+# cookies.Delete): Support for clipboard actions. Used in a cookie context menu
+cookies.Cut=剪下
+cookies.Copy=複製
+cookies.CopyAll=全部複製
+cookies.Paste=貼上
+cookies.Delete=刪除
+# (right click on a cookie in the Cookies panel).
+# LOCALIZATION NOTE (cookies.Clear Value): Label for an item in the cookie context menu.
+cookies.Clear_Value=清除內容
+# Clears cookie value, but not removes the cookie itself.
+# LOCALIZATION NOTE (cookies.Edit): Label for an item in the cookie context menu. Displays
+cookies.Edit=編輯
+cookies.Accept=接受
+# a dialog for editing clicked cookie.
+# LOCALIZATION NOTE (cookies.header.Reset_Header): Used in cookie header context menu (right
+# click on a header in the Cookies panel). This action restores default state of the header
+cookies.header.Reset_Header=重設標頭
+# (visibility and size of all columns)
+# LOCALIZATION NOTE (cookies.Intro, cookies.ExceptionsTitle): Used for managing Cookie panel
+cookies.Intro=你可以指定個別網站永久允許或拒絕 cookie,\n輸入完整網址並點選封鎖、允許或允許此次連線(Session)
+cookies.ExceptionsTitle=例外 - Cookies
+# enablement. Used only if Firebug 1.2 and 1.3 is installed
+# LOCALIZATION NOTE (cookies.modulemanager.description, cookies.HostEnable, cookies.HostDisable,
+# cookies.Permissions, cookies.PermissionsIntro): Various labels used for mangaing Cookies panel
+# enablement. Used only if Firebug 1.2 and 1.3 is installed.
+cookies.modulemanager.description=Cookie 監視支援
+cookies.HostEnable=對 %S 啟用 Cookies 面板
+cookies.HostDisable=對 %S 停用 Cookies 面板
+cookies.Permissions=啟用或停用 Cookies 面板
+cookies.PermissionsIntro=選擇網站要啟用/停用 Cookies 面板
+# examples: Enable Cookies panel for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.SystemPages, cookies.LocalFiles): Labels used in the Cookies
+cookies.SystemPages=系統頁面
+cookies.LocalFiles=本地端檔案
+# panel if it's disabled (only for Firebug 1.2 and 1.3).
+# LOCALIZATION NOTE (cookies.confirm.removeall): Used in a confirmation dialog when cookies
+cookies.confirm.removeall=你要清除清單中的所有 cookie 嗎?
+# are going to be deleted deleted (or permission is set do deny and cookies should be deleted).
+# LOCALIZATION NOTE (cookies.confirm.removeallsession): Used in a confirmation dialog when
+cookies.confirm.removeallsession=你要清除清單中的所有 session cookie 嗎?
+# all session cookies are going to be deleted
+# LOCALIZATION NOTE (cookies.msg.Do_not_show_this_message_again):
+cookies.confirm.Remove_All_From_Host=你要刪除所有來自 %S 的 cookies 嗎?
+# Message within a confirmation dialog that is displayed when deleting cookies.
+# This message is displayed next to a check-box that can be used to disabled this
+cookies.Confirm_cookie_removal=清除 cookie 前先詢問
+cookies.tip.Confirm_cookie_removal=勾選時,刪除清單中所有 cookie 前會先顯示確認對話框
+# confirmation.
+cookies.removeall.tooltip=清除清單中的所有 cookie
+# LOCALIZATION NOTE (cookies.Confirm_cookie_removal): A label used for option (mini tab menu)
+# that says whether a confirmation dialog is displayed when removing cookies.
+cookies.Remove_Session_Cookies=清除 session cookie
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Cookies menu
+cookies.removeallsession.tooltip=清除清單中的所有 session cookie
+# LOCALIZATION NOTE (cookies.Remove_Session_Cookies): A label used for
+# Cookies->Remove Session Cookies menu
+cookies.createcookie.tooltip=在 %S 新增 cookie
+# LOCALIZATION NOTE (cookies.removeall.tooltip): A tooltip for Cookies->Remove Session Cookies menu
+cookies.createcookie.defaultvalue=內容
+# LOCALIZATION NOTE (cookies.createcookie.tooltip): A tooltip for Cookies->Create Cookie menu
+# examples: Create new cookie for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.createcookie.defaultvalue): Default value for newly created cookie.
+cookies.perm.manage.tooltip=管理 %S 的 cookie 權限
+# LOCALIZATION NOTE (cookies.perm.manage.tooltip): A tooltip for permissions button that
+# is located on a Cookis panel toolbar.
+# examples: Manage cookie permissions for www.softwareishard.com
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+cookies.console.cookiescleared=已清除所有 cookie。
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+# LOCALIZATION NOTE (cookies.console.cookiescleared): A label for a cookie event that is
+cookies.console.sessioncookiescleared=已清除所有 session cookie。
+# displayed in Firebug's Console panel when all cookie in Firefox are removed
+# To remove all cookies use menu on Cookis panel toolbar: Tools->Show All Cookies and click
+# Remove All Cookies in the dialog.
+cookies.console.cookiesrejected=已拒絕的 cookie:
+cookies.console.nocookiesreceived=沒有收到 cookie
+# LOCALIZATION NOTE (cookies.console.cookiesrejected, cookies.console.nocookiesreceived):
+# A label for a cookie event that is displayed in Firebug's Console panel when cookies are
+# rejected by the current site.
+cookies.console.cookie=Cookie
+cookies.console.deleted=刪除
+cookies.console.added=新增
+cookies.console.changed=變更
+cookies.console.cleared=清除
+# LOCALIZATION NOTE (cookies.console.cookie, cookies.console.deleted, cookies.console.added,
+# cookies.console.changed, cookies.console.cleared): Various labels that are used for cookie
+# events displayed in Firebug's Console panel.
+cookies.domain.label=網域
+# LOCALIZATION NOTE (cookies.domain.label): Label used for marking domain cookie.
+# Displayed in the Cookies panel for domain cookies.
+cookies.secure.label=Secure
+# xxxHonza: not used in the UI now.
+# LOCALIZATION NOTE (cookies.secure.label): Label used for marking secure cookie.
+# Displayed in the Cookies panel for secure cookies.
+cookies.status.accepted=Accepted
+cookies.status.downgraded=Downgraded
+cookies.status.flagged=Flagged
+cookies.status.rejected=Rejected
+# LOCALIZATION NOTE (cookies.status.accepted, cookies.status.downgraded,
+# cookies.status.flagged, cookies.status.rejected): Various statuses of a cookie
+# displayed in Status column.
+cookies.info.valuetab.label=內容
+cookies.info.rawdatatab.Raw_Data=原始數值
+cookies.info.jsontab.JSON=JSON
+cookies.info.xmltab.XML=XML
+# LOCALIZATION NOTE (cookies.info.valuetab.label, cookies.info.rawdatatab.Raw_Data,
+# cookies.info.jsontab.JSON, cookies.info.xmltab.XML): A label for tabs displayed
+# if a cookie entry is expanded. Tab are only available in the UI, if necessary.
+# LOCALIZATION NOTE (cookies.default.session, cookies.default.thirdPartySession,
+# cookies.default.thirdParty, cookies.default.allow, cookies.default.deny,
+cookies.default.session=預設(接受 session cookie)
+cookies.default.thirdPartySession=預設(接受第三方 session cookie)
+cookies.default.thirdParty=預設(接受 cookie)
+cookies.default.allow=預設(接受 cookie)
+cookies.default.deny=預設(拒絕 cookie)
+cookies.default.warn=預設(接受 cookie 前先警告)
+cookies.default.limitThirdParty=預設(限制第三方 cookie)
+cookies.host.session=接受來自 %S 的 session cookie
+cookies.host.accept=接受來自 %S 的 cookie
+cookies.host.reject=拒絕來自 %S 的 cookie
+cookies.host.limitThirdParty=限制用於 %S 的第三方 cookie
+# cookies.default.warn, cookies.host.session, cookies.host.accept,
+# cookies.host.reject): Various labels for cookie permissions.
+# examples: Accept cookies from www.softwareishard.com
+cookies.edit.invalidname=無效的 cookie 名稱。
+cookies.edit.invalidhost=無效的 cookie 主機。
+cookies.edit.invalidpath=無效的 cookie 路徑。
+# LOCALIZATION NOTE (cookies.edit.invalidname, cookies.edit.invalidhost,
+# cookies.edit.invalidpath): Various error messages used when a new cookie is created
+# using a cookie dialog. Use Cookies->Create Cookie menu to show the dialog.
+# LOCALIZATION NOTE (cookies.header.name, cookies.header.value, cookies.header.domain,
+# cookies.header.size, cookies.header.path, cookies.header.expires,
+cookies.header.name=名稱
+cookies.header.value=內容
+cookies.header.rawValue=原始數值
+cookies.header.domain=網域
+cookies.header.size=大小
+cookies.header.rawSize=原始大小
+cookies.header.path=路徑
+cookies.header.expires=有效期限
+cookies.header.security=安全性
+cookies.header.httponly=HTTP 專用
+cookies.header.maxAge=Max-Age
+# cookies.header.security, cookies.header.status, cookies.header.httponly):
+# Column labels used in the cookie header.
+# LOCALIZATION NOTE (cookies.header.name.tooltip, cookies.header.value.tooltip,
+# cookies.header.domain.tooltip, cookies.header.size.tooltip, cookies.header.path.tooltip,
+# cookies.header.expires.tooltip, cookies.header.security.tooltip,
+cookies.header.name.tooltip=cookie 名稱
+cookies.header.value.tooltip=cookie 保存的值
+cookies.header.rawValue.tooltip=cookie 保存的原始值
+cookies.header.domain.tooltip=保存此 cookie 的網域
+cookies.header.rawSize.tooltip=cookie 的原始大小
+cookies.header.size.tooltip=cookie 的大小
+cookies.header.path.tooltip=cookie 的有效路徑
+cookies.header.expires.tooltip=cookie 的過期時間
+cookies.header.security.tooltip=顯示是否為 secure cookie
+cookies.header.httponly.tooltip=顯示 cookie 是否僅於 HTTP 有效
+cookies.header.maxAge.tooltip=cookie 可保存的最長時間
+# cookies.header.status.tooltip, cookies.header.httponly.tooltip):
+# Column tooltips used in the cookie header.
+# LOCALIZATION NOTE (cookies.netinfo.Received_Cookies, cookies.netinfo.Sent_Cookies):
+# Labels used in the Firebug's net panel. If there are any cookies associated with a network
+# request, there is an additional Cookies tab displayed when the user expands the request.
+cookies.netinfo.Received_Cookies=已收到的 cookie
+cookies.netinfo.Sent_Cookies=已送出的 cookie
+cookies.netinfo.deleted.tooltip=刪除此 cookie 的請求
+# These labels are used within this tab.
+# LOCALIZATION NOTE (cookies.Path_Filter): Label for a Filter->Path Filter
+cookies.Path_Filter=路徑過濾器
+# xxxHonza: Not implemented yet.
+cookies.menu.Cookies=Cookies
+# LOCALIZATION NOTE (cookies.menu.Cookies): Label for menu Cookies, dislayed on the toolbar.
+# LOCALIZATION NOTE (cookies.export.Export_All_Cookies, cookies.export.Export_All_Cookies_Tooltip,
+# cookies.export.Export_For_Site, cookies.export.Export_For_Site_Tooltip): Labels and
+cookies.export.Export_All_Cookies=匯出所有 cookie…
+cookies.export.Export_All_Cookies_Tooltip=將所有瀏覽器 cookie 匯出到 cookies.txt 檔案
+cookies.export.Export_For_Site=匯出此網站的 cookie
+cookies.export.Export_For_Site_Tooltip=將此網站的 cookie 匯出到 cookies.txt 檔案
+# tooltips for exporting menus available under Cookies menus.
+# LOCALIZATION NOTE (cookies.message.There_is_no_active_page): An error message displayed
+# when the user is trying to create a cookie and there is no active page (site). This should
+cookies.message.There_is_no_active_page=沒有活動中的頁面。
+# never happen.
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.Disable_Break_On_Cookie):
+# Tooltips for resume button that are used when the Cookies panel is currently selected.
+# The button allows stopping JS execution when a cookie on the current page is modified
+cookies.Break_On_Cookie=Cookie 改變時中斷
+cookies.Disable_Break_On_Cookie=停用在 cookie 改變時中斷
+# added or removed.
+# LOCALIZATION NOTE (cookies.Cookie_Breakpoints): Name of Cookie breakpoint group
+cookies.Cookie_Breakpoints=Cookie 中斷點
+# displayed in Breakpoints panel (in the Script panel)
+# LOCALIZATION NOTE (cookies.Break_On_Cookie, cookies.menu.tooltip.Break_On_Cookie):
+# Label and tooltip for a context menu item used when the user right clicks on a cookie.
+# examples: Break on 'MyCookie' cookie
+cookies.menu.Break_On_Cookie=在 '%S' cookie 中斷
+cookies.menu.tooltip.Break_On_Cookie=在 '%S' 移除或變更時中斷
+# examples: Break on 'MyCookie' when removed or changed.
+# LOCALIZATION NOTE (cookies.menu.Edit_Breakpoint_Condition): Label for context menu item
+cookies.menu.Edit_Breakpoint_Condition=編輯中斷點條件
+# used when user right clicks on a cookie with existing breakpoint.
+# LOCALIZATION NOTE (cookies.Breakpoint_condition_evaluation_fails): Message displayed
+cookies.Breakpoint_condition_evaluation_fails=中斷點條件執行失敗
+# within the Firebug Console panel if a cookie breakpoint condition fails when evaluated.
+cookies.RemoveAll=移除所有 cookie
+cookies.Create=建立 cookie
+# DTD strings converted (main Firecokie UI, see fireCookie.xul)
+# LOCALIZATION NOTE (cookies.Tools, cookies.ToolsTooltip) Label and tooltip for Tools
+cookies.Tools=工具
+cookies.ToolsTooltip=工具
+# menu on Cookies toolbar.
+# LOCALIZATION NOTE (cookies.ViewAll, cookies.ViewAllTooltip) Label and tooltip for
+cookies.ViewAll=顯示所有 cookie…
+cookies.ViewAllTooltip=開啟 Cookie 管理員
+# view all cookies menu item (Tools menu). This action opens Firefox built-in cookie manager window.
+# LOCALIZATION NOTE (cookies.ViewExceptions, cookies.ViewExceptionsTooltip) Label and
+# tooltip for Site Permissions menu item (Tools menu). This action opens Firefox built-in
+cookies.ViewExceptions=網站權限…
+cookies.ViewExceptionsTooltip=檢視已設定權限的網站清單
+# dialog for setting web site cookie permissions.
+# LOCALIZATION NOTE (cookies.Help, cookies.HelpTooltip, cookies.About,
+# cookies.AboutTooltip) Labels and tooltips for additional menu items in Tools menu.
+# LOCALIZATION NOTE (cookies.Filter, cookies.FilterTooltip, cookies.filter.byPath,
+cookies.Filter=過濾器
+cookies.FilterTooltip=按選項過濾 cookie 清單的顯示
+cookies.filter.byPath=按目前路徑過濾 cookie
+cookies.filter.byPathTooltip=只顯示符合目前路徑的 cookie
+cookies.filter.showRejectedCookies=顯示被拒絕的 cookie
+cookies.filter.showRejectedCookiesTooltip=已被拒絕的 cookie 也要顯示
+# cookies.filter.byPathTooltip, cookies.filter.showRejectedCookies,
+# cookies.filter.showRejectedCookiesTooltip): Labels and tooltips for cookie Filter menu
+# presented on the Cookie toolbar.
+# LOCALIZATION NOTE (cookies.edit.title, cookies.edit.name.label,
+cookies.edit.title=編輯 cookie
+cookies.edit.name.label=名稱:
+cookies.edit.domain.label=主機:
+cookies.edit.path.label=路徑:
+cookies.edit.expire.label=有效期限:
+cookies.edit.value.label=內容:
+cookies.edit.secure.label=Secure Cookie
+cookies.edit.httponly.label=HTTP Only
+cookies.edit.session.label=Session
+cookies.edit.urlEncode.label=URL encode 值
+# cookies.edit.domain.label, cookies.edit.path.label, cookies.edit.expire.label,
+# cookies.edit.value.label, cookies.edit.secure.label, cookies.edit.httponly.label,
+cookies.console.Cookies=Cookies
+cookies.console.Filter_By_Cookies=只顯示 Cookies
+# cookies.edit.session.label): Edit Cookie dialog UI
+# Customize Shortcuts dialog (Firebug menu)
+firebug.shortcut.removeAllCookies.label=移除所有 Cookie
+cookie.sizeinfo.Size=大小
+cookie.sizeinfo.Raw_Size=原始大小
diff --git a/locale/zh-TW/firebug-amo.properties b/locale/zh-TW/firebug-amo.properties
index a344ea8..7cd1de6 100644
--- a/locale/zh-TW/firebug-amo.properties
+++ b/locale/zh-TW/firebug-amo.properties
@@ -1,3 +1,3 @@
-firebug.amo.summary1.6=Firebug 為 Firefox 整合了豐富的開發工具,您可以在瀏覽任何網頁時,即時編輯、除錯或監視 CSS、HTML 和 JavaScript。\\n\\nFirebug 1.6 需要 Firefox 3.6 以上的版本。
-firebug.amo.description=Firebug 為 Firefox 整合了豐富的開發工具,您可以在瀏覽任何網頁時,即時編輯、除錯或監視 CSS、HTML 和 JavaScript。\\n\\n造訪 Firebug 網站查看文件、畫面擷圖和討論區:http://getfirebug.com
-firebug.amo.developer.comments=如果您有任何問題,請閱讀 FireBug FAQ。\\n\\nhttp://getfirebug.com/faq.html
+firebug.amo.summary1.6=Firebug 為 Firefox 整合了豐富的開發工具,您可以在瀏覽任何網頁時,即時編輯、除錯或監視 CSS、HTML 和 JavaScript。\\n\\nFirebug 1.6 需要 Firefox 3.6 以上的版本。
+firebug.amo.description=Firebug 為 Firefox 整合了豐富的開發工具,您可以在瀏覽任何網頁時,即時編輯、除錯或監視 CSS、HTML 和 JavaScript。\\n\\n造訪 Firebug 網站查看文件、畫面擷圖和討論區:http://getfirebug.com
+firebug.amo.developer.comments=如果您有任何問題,請閱讀 FireBug FAQ。\\n\\nhttp://getfirebug.com/faq.html
diff --git a/locale/zh-TW/firebug-tracing.properties b/locale/zh-TW/firebug-tracing.properties
index 898eac5..9c1080b 100644
--- a/locale/zh-TW/firebug-tracing.properties
+++ b/locale/zh-TW/firebug-tracing.properties
@@ -1,94 +1,94 @@
-# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):n\n
-# Firebug tracing console menu items (located in Firebug\'s menu).n\n
-Open_Firebug_Tracing=開啟 Firebug 追溯 (Tracing)
-Always_Open_Firebug_Tracing=總是啟用 Firebug 追溯
-# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).n\n
-title.Tracing=追溯
-tracing.Show_Scope_Variables=顯示作用範圍中的變數
-tracing.Show_Time=顯示時間
-tracing.tab.Stack=堆疊
-tracing.tab.Exception=例外
-tracing.tab.Properties=屬性
-tracing.tab.Scope=作用範圍
-tracing.tab.Response=回應
-tracing.tab.Source=原始碼
-tracing.tab.Interfaces=介面
-tracing.tab.Object=物件
-tracing.tab.Event=事件
-tracing.cmd.Clear=清除
-tracing.cmd.tip.Clear=移除所有訊息
-tracing.cmd.Find=尋找
-tracing.cmd.tip.Find=尋找文字
-tracing.cmd.Bookmark=書籤
-tracing.cmd.tip.Bookmark=插入書籤
-tracing.cmd.Restart=重新啟動 Firefox
-tracing.cmd.tip.Restart=重新啟動 Firefox
-tracing.cmd.Exit=關閉 Firefox
-tracing.cmd.tip.Exit=關閉 Firefox
-tracing.cmd.Save=另存新檔
-tracing.cmd.tip.Save=將 log 存成檔案
-tracing.cmd.Load=從檔案讀取
-tracing.cmd.tip.Load=從檔案讀取 log
-tracing.cmd.Expand_All=全部展開
-tracing.cmd.Collapse_All=全部折疊
-tracing.cmd.Tools=工具
-tracing.cmd.tip.Tools=工具
-tracing.cmd.Clear_Browser_Cache=清除瀏覽器快取
-tracing.cmd.tip.Clear_Browser_Cache=清除瀏覽器快取
-tracing.cmd.Force_Garbage_Collector=強制執行垃圾回收
-tracing.cmd.tip.Force_Garbage_Collector=強制執行垃圾回收(Garbage Collector)
-tracing.cmd.Open_Profile_Directory=開啟 Profile 目錄
-tracing.cmd.tip.Open_Profile_Directory=開啟 Profile 目錄
-tracing.option.A11Y_Description=親和力問題
-tracing.option.ACTIVATION_Description=Firebug 活動狀態
-tracing.option.ACTIVITYOBSERVER_Description=Firebug 活動觀察器
-tracing.option.ANNOTATIONS_Description=Firebug 網站標註
-tracing.option.BP_Description=中斷點
-tracing.option.CACHE_Description=原始碼快取
-tracing.option.COMMANDLINE_Description=命令列&命令列彈出視窗
-tracing.option.COMPILATION_UNITS_Description=Script 編譯單位
-tracing.option.CONSOLE_Description=主控台面板
-tracing.option.CSS_Description=CSS 解析
-tracing.option.DISPATCH_Description=事件分派
-tracing.option.DOM_Description=DOM
-tracing.option.DOMPLATE_Description=建立 Domplate
-tracing.option.EDITOR_Description=即時編輯器&自動完成
-tracing.option.ERRORLOG_Description=JS、CSS、XML 和其他錯誤記錄
-tracing.option.ERRORS_Description=Firebug 內部錯誤
-tracing.option.EVAL_Description=Script 執行
-tracing.option.FBS_BP_Description=Firebug 服務 中斷點
-tracing.option.FBS_CREATION_Description=建立 Firebug 服務 指令碼
-tracing.option.FBS_ERRORS_Description=Firebug 服務 錯誤
-tracing.option.FBS_FINDDEBUGGER_Description=Firebug 服務 尋找 debugger
-tracing.option.FBS_FUNCTION_Description=Firebug 服務 函數
-tracing.option.FBS_JSDCONTEXT_Description=Firebug 服務 JavaScript Debugger 語境
-tracing.option.FBS_SRCUNITS_Description=Firebug 服務 原始碼單位
-tracing.option.FBS_STEP_Description=Firebug 服務 JavaScript 除錯
-tracing.option.FBS_TRACKFILES_Description=Firebug 服務 已追溯檔案
-tracing.option.FUNCTION_NAMES_Description=JavaScript 函數名稱
-tracing.option.HISTORY_Description=Firebug 導覽歷史
-tracing.option.HTML_Description=HTML
-tracing.option.HTTPOBSERVER_Description=HTTP 請求觀察器
-tracing.option.INFOTIP_Description=資訊提示
-tracing.option.INITIALIZE_Description=Firebug 初始化
-tracing.option.INSPECT_Description=元素觀察器
-tracing.option.JSONVIEWER_Description=JSON 檢視器
-tracing.option.LINETABLE_Description=Script 行表格
-tracing.option.LOCALE_Description=本地化
-tracing.option.LOCATIONS_Description=原始碼位置
-tracing.option.NET_Description=網路面板
-tracing.option.NET_EVENTS_Description=網路事件
-tracing.option.OPTIONS_Description=Firebug 設定
-tracing.option.PANELS_Description=面板
-tracing.option.SHORTCUTS_Description=鍵盤快速鍵
-tracing.option.SOURCEFILES_Description=JavaScript 原始碼
-tracing.option.SPY_Description=XMLHttpRequests 觀察器
-tracing.option.STACK_Description=JavaScript 呼叫堆疊
-tracing.option.STORAGE_Description=設定儲存
-tracing.option.SVGVIEWER_Description=SVG 檢視器
-tracing.option.FONTS_Description=字型資訊與檢視器
-tracing.option.TOOLTIP_Description=開始按鈕工具提示
-tracing.option.TOPLEVEL_Description=Top level JavaScript
-tracing.option.UI_LOOP_Description=JavaScript 除錯使用者介面
-tracing.option.WINDOWS_Description=Firebug 視窗&分頁監視器
-tracing.option.XMLVIEWER_Description=XML 檢視器
+# LOCALIZATION NOTE (Open_Firebug_Tracing, Always_Open_Firebug_Tracing):n\n
+# Firebug tracing console menu items (located in Firebug\'s menu).n\n
+Open_Firebug_Tracing=開啟 Firebug 追溯 (Tracing)
+Always_Open_Firebug_Tracing=總是啟用 Firebug 追溯
+# LOCALIZATION NOTE (title.Tracing): Title for Firebug tracing console window (verb).n\n
+title.Tracing=追溯
+tracing.Show_Scope_Variables=顯示作用範圍中的變數
+tracing.Show_Time=顯示時間
+tracing.tab.Stack=堆疊
+tracing.tab.Exception=例外
+tracing.tab.Properties=屬性
+tracing.tab.Scope=作用範圍
+tracing.tab.Response=回應
+tracing.tab.Source=原始碼
+tracing.tab.Interfaces=介面
+tracing.tab.Object=物件
+tracing.tab.Event=事件
+tracing.cmd.Clear=清除
+tracing.cmd.tip.Clear=移除所有訊息
+tracing.cmd.Find=尋找
+tracing.cmd.tip.Find=尋找文字
+tracing.cmd.Bookmark=書籤
+tracing.cmd.tip.Bookmark=插入書籤
+tracing.cmd.Restart=重新啟動 Firefox
+tracing.cmd.tip.Restart=重新啟動 Firefox
+tracing.cmd.Exit=關閉 Firefox
+tracing.cmd.tip.Exit=關閉 Firefox
+tracing.cmd.Save=另存新檔
+tracing.cmd.tip.Save=將 log 存成檔案
+tracing.cmd.Load=從檔案讀取
+tracing.cmd.tip.Load=從檔案讀取 log
+tracing.cmd.Expand_All=全部展開
+tracing.cmd.Collapse_All=全部折疊
+tracing.cmd.Tools=工具
+tracing.cmd.tip.Tools=工具
+tracing.cmd.Clear_Browser_Cache=清除瀏覽器快取
+tracing.cmd.tip.Clear_Browser_Cache=清除瀏覽器快取
+tracing.cmd.Force_Garbage_Collector=強制執行垃圾回收
+tracing.cmd.tip.Force_Garbage_Collector=強制執行垃圾回收(Garbage Collector)
+tracing.cmd.Open_Profile_Directory=開啟 Profile 目錄
+tracing.cmd.tip.Open_Profile_Directory=開啟 Profile 目錄
+tracing.option.A11Y_Description=親和力問題
+tracing.option.ACTIVATION_Description=Firebug 活動狀態
+tracing.option.ACTIVITYOBSERVER_Description=Firebug 活動觀察器
+tracing.option.ANNOTATIONS_Description=Firebug 網站標註
+tracing.option.BP_Description=中斷點
+tracing.option.CACHE_Description=原始碼快取
+tracing.option.COMMANDLINE_Description=命令列&命令列彈出視窗
+tracing.option.COMPILATION_UNITS_Description=Script 編譯單位
+tracing.option.CONSOLE_Description=主控台面板
+tracing.option.CSS_Description=CSS 解析
+tracing.option.DISPATCH_Description=事件分派
+tracing.option.DOM_Description=DOM
+tracing.option.DOMPLATE_Description=建立 Domplate
+tracing.option.EDITOR_Description=即時編輯器&自動完成
+tracing.option.ERRORLOG_Description=JS、CSS、XML 和其他錯誤記錄
+tracing.option.ERRORS_Description=Firebug 內部錯誤
+tracing.option.EVAL_Description=Script 執行
+tracing.option.FBS_BP_Description=Firebug 服務 中斷點
+tracing.option.FBS_CREATION_Description=建立 Firebug 服務 指令碼
+tracing.option.FBS_ERRORS_Description=Firebug 服務 錯誤
+tracing.option.FBS_FINDDEBUGGER_Description=Firebug 服務 尋找 debugger
+tracing.option.FBS_FUNCTION_Description=Firebug 服務 函數
+tracing.option.FBS_JSDCONTEXT_Description=Firebug 服務 JavaScript Debugger 語境
+tracing.option.FBS_SRCUNITS_Description=Firebug 服務 原始碼單位
+tracing.option.FBS_STEP_Description=Firebug 服務 JavaScript 除錯
+tracing.option.FBS_TRACKFILES_Description=Firebug 服務 已追溯檔案
+tracing.option.FUNCTION_NAMES_Description=JavaScript 函數名稱
+tracing.option.HISTORY_Description=Firebug 導覽歷史
+tracing.option.HTML_Description=HTML
+tracing.option.HTTPOBSERVER_Description=HTTP 請求觀察器
+tracing.option.INFOTIP_Description=資訊提示
+tracing.option.INITIALIZE_Description=Firebug 初始化
+tracing.option.INSPECT_Description=元素觀察器
+tracing.option.JSONVIEWER_Description=JSON 檢視器
+tracing.option.LINETABLE_Description=Script 行表格
+tracing.option.LOCALE_Description=本地化
+tracing.option.LOCATIONS_Description=原始碼位置
+tracing.option.NET_Description=網路面板
+tracing.option.NET_EVENTS_Description=網路事件
+tracing.option.OPTIONS_Description=Firebug 設定
+tracing.option.PANELS_Description=面板
+tracing.option.SHORTCUTS_Description=鍵盤快速鍵
+tracing.option.SOURCEFILES_Description=JavaScript 原始碼
+tracing.option.SPY_Description=XMLHttpRequests 觀察器
+tracing.option.STACK_Description=JavaScript 呼叫堆疊
+tracing.option.STORAGE_Description=設定儲存
+tracing.option.SVGVIEWER_Description=SVG 檢視器
+tracing.option.FONTS_Description=字型資訊與檢視器
+tracing.option.TOOLTIP_Description=開始按鈕工具提示
+tracing.option.TOPLEVEL_Description=Top level JavaScript
+tracing.option.UI_LOOP_Description=JavaScript 除錯使用者介面
+tracing.option.WINDOWS_Description=Firebug 視窗&分頁監視器
+tracing.option.XMLVIEWER_Description=XML 檢視器
diff --git a/locale/zh-TW/firebug.properties b/locale/zh-TW/firebug.properties
index f073a59..eda0a82 100644
--- a/locale/zh-TW/firebug.properties
+++ b/locale/zh-TW/firebug.properties
@@ -1,1702 +1,1702 @@
-Firebug=Firebug
-# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.nn
-# %S Title of the associated web page.nn
-# examples: Firebug - Googlenn
-WindowTitle=Firebug - %S
-# Panel titlesnn
-Panel-console=主控台
-panel.tip.console=檢視主控台訊息或執行 JavaScript 命令
-Panel-net=網路
-panel.tip.net=分析網路流量
-Panel-html=HTML
-panel.tip.html=檢測或調整 DOM 節點
-Panel-stylesheet=CSS
-panel.tip.stylesheet=檢測或調整 CSS 樣式表
-Panel-script=Script
-panel.tip.script=JavaScript 除錯
-Panel-dom=DOM
-panel.tip.dom=檢測或調整 DOM 屬性
-Panel-css=樣式
-panel.tip.css=檢測或調整所選 DOM 節點的 CSS 規則
-Panel-computed=計算樣式
-panel.tip.computed=檢測或調整所選 DOM 節點的 CSS 計算值
-Panel-layout=排版
-panel.tip.layout=檢測或調整所選 DOM 節點的排版資料
-Panel-domSide=DOM
-panel.tip.domSide=檢測或調整所選 DOM 節點的 DOM 屬性
-Panel-watches=監看
-panel.tip.watches=檢測目前堆疊或已定義監看中的 JavaScript 變數
-Panel-breakpoints=中斷點
-panel.tip.breakpoints=調整中斷點設定
-Panel-callstack=堆疊
-panel.tip.callstack=觀察目前的 JavaScript 呼叫堆疊
-Panel-scopes=範圍
-firebug.DetachFirebug=開啟 Firebug 到新視窗
-firebug.AttachFirebug=將 Firebug 嵌入瀏覽器視窗
-# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.nn
-# If there is no Firebug translation for the current browser locale, this valuenn
-# will be used instead of the one in chrome://global/locale/intl.propertiesnn
-# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsnn
-pluralRule=0
-# LOCALIZATION NOTE (plural.Total_Firebugs2): Semi-colon list of plural forms.nn
-# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsnn
-# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.nn
-# Displays number of pages with Firebug activated.nn
-# #1 number of Firebug instances activatednn
-# example: 2 Total Firebugsnn
-plural.Total_Firebugs2=共 %1$S 個 Firebug
-# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'nn
-# menu (available on Firebug's tab bar).nn
-# Console panel options.nn
-startbutton.tip.deactivated=未啟動
-# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,nn
-# message, etc. within a source of a web page.nn
-# #1 File name, #2 Line numbernn
-# examples: somePage.htm (line 64)nn
-# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.nn
-panel.status=%S: %S
-inBrowser=在瀏覽器中
-minimized=最小化的
-enablement.for_all_pages=對所有網頁
-enablement.on=啟用
-enablement.off=關閉
-enablement.Panel_activation_status=面板啟動狀態:
-none=關閉的
-Firebug_-_inactive_for_current_website=Firebug - 對目前網站未啟動
-Activate_Firebug_for_the_current_website=對目前網站啟動 Firebug
-Minimized=最小化的
-Minimize_Firebug=最小化 Firebug
-On_for_all_web_pages=對所有網頁啟用
-firebug.menu.tip.On_for_all_Web_Sites=對所有網站都預設啟動 Firebug
-firebug.menu.Clear_Activation_List=清除啟用條件列表
-firebug.menu.tip.Clear_Activation_List=清除可啟動 Firebug 的網站的列表
-firebug.menu.Detached=分離
-firebug.menu.tip.Detached=將 Firebug 分離至獨立視窗
-firebug.menu.Top=頂端
-firebug.menu.tip.Top=將 Firebug 置於使用者代理視窗頂端
-firebug.menu.Bottom=底端
-firebug.menu.tip.Bottom=將 Firebug 置於使用者代理視窗底端
-firebug.menu.Left=左邊
-firebug.menu.tip.Left=將 Firebug 置於使用者代理視窗左端
-firebug.menu.Right=右端
-firebug.menu.tip.Right=將 Firebug 置於使用者代理視窗右端
-firebug.uiLocation=Firebug UI 位置
-firebug.menu.tip.UI_Location=Firebug 使用者介面的位置
-# For example, right clicking on an element in the HTML panel offers an action to inspectnn
-# clicked element in the DOM panel (tab).nn
-annotations.confirm.clear=你要清除 Firebug 對所有網站的 annotation 清單嗎?
-# #1 Target panel titlenn
-# examples: Inspect in DOM Tabnn
-firebug_options=Firebug 選項
-# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugnn
-# do not translate.nn
-firebug.Show_All_Panels=顯示所有面板
-console.option.Show_Command_Line=顯示命令列
-console.option.tip.Show_Command_Line=焦點移至命令列/顯示命令列彈出視窗
-# #1 jsdIScript.tagnn
-ShowJavaScriptErrors=顯示 JavaScript 錯誤
-console.option.tip.Show_JavaScript_Errors=在主控台記錄 JavaScript 錯誤訊息
-ShowJavaScriptWarnings=顯示 JavaScript 警告
-console.option.tip.Show_JavaScript_Warnings=在主控台記錄 JavaScript 警告訊息
-ShowCSSErrors=顯示 CSS 錯誤
-console.option.tip.Show_CSS_Errors=在主控台記錄 CSS 錯誤訊息
-ShowXMLHTMLErrors=顯示 XML/HTML 錯誤
-console.option.tip.Show_XML_HTML_Errors=在主控台記錄 XML 與 HTML 錯誤訊息
-ShowStackTrace=發生錯誤時,顯示堆疊追溯
-console.option.tip.Show_Stack_Trace=顯示錯誤訊息的堆疊追溯資訊
-ShowXMLHttpRequests=顯示 XMLHttpRequest
-console.option.tip.Show_XMLHttpRequests=在主控台記錄 XMLHttpRequest
-ShowChromeErrors=顯示 Chrome 錯誤
-console.option.tip.Show_System_Errors=在主控台記錄程式或附加元件的內部錯誤訊息
-ShowChromeMessages=顯示 Chrome 訊息
-console.option.tip.Show_System_Messages=在主控台記錄程式或附加元件的內部訊息
-ShowNetworkErrors=顯示網路錯誤
-console.option.tip.Show_Network_Errors=在主控台記錄網路連線錯誤訊息
-JavascriptOptionsStrict=嚴格的警告(犧牲效能)
-console.option.tip.Show_Strict_Warnings=將嚴格的警告也記錄到主控台中
-Command_History=命令歷史
-console.option.Show_Command_Editor=顯示命令編輯器
-console.option.tip.Show_Command_Editor=切換至命令編輯器
-commandLineShowCompleterPopup=顯示自動完成彈出視窗
-console.option.tip.Show_Completion_List_Popup=顯示命令自動完成視窗
-Assertion=Assertion 失敗
-# HTML panel context menu items.nn
-# Quick Info Boxnn
-# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumenn
-# button that are used when the HTML panel is currently selected. The button allows stoppingnn
-# JS execution when DOM of the current page is modified.nn
-Line=%S(%S 行)
-LineAndCol=%S(第 %S 行、%S 列)
-InstanceLine=%S #%S(%S 行)
-StackItem=%S (%S 行 %S)
-SystemItem=<System>
-# LOCALIZATION NOTE (html.label.Expand/Contract_All): Used within the HTML for a context nn
-# menu item. The user can expand/contract the element together with all its children to nn
-# quickly see the entire hierarchical structure or collapse it.nn
-# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsnn
-# editing an existing HTML element attribute.nn
-panel.Inspect_In_Panel=在 %S 面板檢測
-panel.tip.Inspect_In_Panel=切換至 %S 面板審視該物件
-NoName=(沒有名稱)
-# #1 Name of the clicked attribute.nn
-# examples: Edit Attribute "onclick"...nn
-# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsnn
-jsdIScript=jsdIScript %S
-# deleting an existing HTML element attribute.nn
-# #1 Name of the clicked attribute.nn
-# examples: Delete Attribute "onclick"...nn
-ShowFullText=顯示完整文字
-html.option.tip.Show_Full_Text=不要省略元素內容
-# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.nn
-# that has been inherited. Used in the Style side panel (under HTML panel).nn
-# examples: Inherited from table.tabViewnn
-ShowWhitespace=顯示空白字元
-html.option.tip.Show_Whitespace=顯示節點中的空白字元
-# LOCALIZATION NOTE (css.EmptyStyleSheet): This description is displayed in the CSS panelnn
-# in case there are no stylesheets attached to the current page.nn
-ShowComments=顯示註解
-html.option.tip.Show_Comments=顯示註解節點
-# The text between <a> and </a> is displayed as a link.nn
-# LOCALIZATION NOTE (css.EmptyElementCSS2): This description is displayed in the Style side panelnn
-# (available within the HTML panel) in case there are no CSS rules for the selected element.nn
-html.option.Show_Entities_As_Symbols=將 Entity 顯示為特殊符號
-html.option.tip.Show_Entities_As_Symbols=將 XML entity 以符號型態顯示
-html.option.Show_Entities_As_Names=將 Entity 顯示為名稱
-html.option.tip.Show_Entities_As_Names=將 XML entity 以名稱顯示
-html.option.Show_Entities_As_Unicode=將 Entity 顯示為 Unicode
-html.option.tip.Show_Entities_As_Unicode=將 XML entity 以 Unicode 型態顯示
-# The text between <a> and </a> is displayed as a link.nn
-# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.nn
-# Allows to edit an existing CSS rule property.nn
-HighlightMutations=強調變更
-html.option.tip.Highlight_Mutations=上色顯示節點中的變更
-# %S Name of the clicked propertynn
-# examples: Edit "background-color"...nn
-# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.nn
-ExpandMutations=展開變更
-html.option.tip.Expand_Mutations=展開樹狀結構以顯示變更的節點
-# Allows to disable an existing CSS rule property.nn
-# %S Name of the clicked propertynn
-# examples: Disable "background-color"nn
-ScrollToMutations=捲動到顯示變更
-html.option.tip.Scroll_To_Mutations=捲動樹狀結構,直到可以看見變更部分
-# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.nn
-# Allows to delete an existing CSS rule property.nn
-# %S Name of the clicked propertynn
-ShowQuickInfoBox=顯示快速資訊框
-inspect.option.tip.Show_Quick_Info_Box=以浮動資訊面板顯示檢測中的元素
-# examples: Delete "background-color"nn
-# Console context menu labels.nn
-# LOCALIZATION NOTE do not translate, no longer used(?)nn
-ShadeBoxModel=Box Model 著色
-inspect.option.tip.Shade_Box_Model=將 box model 各個不同部分上色顯示
-ScrollIntoView=捲動到顯示
-html.tip.Scroll_Into_View=捲動頁面,直到可以看見元素
-NewAttribute=新屬性...
-html.tip.New_Attribute=在元素上增加一個新屬性
-html.Edit_Node=編輯 %S...
-html.Node=節點
-html.tip.Edit_Node=以全文編輯器編輯 %S
-DeleteElement=刪除元素
-html.Delete_Element=將元素由樹中刪除
-DeleteNode=刪除節點
-html.Delete_Node=將節點由樹中刪除
-# Breakpoints side panelnn
-quickInfo=快速資訊
-computedStyle=計算樣式
-# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttonsnn
-# within balloon popup dialog. This dialog appears when debugger halts at a breakpoint or atnn
-# a 'debugger' keyword.nn
-html.Break_On_Mutate=在 DOM 變更時中斷
-html.Disable_Break_On_Mutate=停用 在 DOM 變更時中斷
-html.label.Break_On_Text_Change=在文字變更時中斷
-html.label.HTML_Breakpoints=HTML 中斷點
-html.label.Break_On_Attribute_Change=在屬性變更時中斷
-html.tip.Break_On_Attribute_Change=元素中有任何屬性變更時,停止執行 JavaScript
-html.label.Break_On_Child_Addition_or_Removal=在新增或移除子節點時中斷
-html.tip.Break_On_Child_Addition_or_Removal=元素的子節點增加/移除時,停止執行 JavaScript
-html.label.Break_On_Element_Removal=在移除元素時中斷
-html.tip.Break_On_Element_Removal=元素被移除時,停止執行 JavaScript
-# Continue: allows to resume the debuggernn
-# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source.nn
-# Script panelnn
-# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):nn
-html.label.Expand/Contract_All=全部展開/關閉
-html.tip.Expand/Contract_All=遞迴展開/關閉所有子節點
-# Labels used to describe layout properties a the selected HTML element.nn
-# Used in the Layout side panel under HMTL panel.nn
-dom.scopeName=(closure)
-# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side panelnn
-# under HTML panel.nn
-dom.scopeParentName=(parent scope)
-# Net panelnn
-# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)nn
-dom.tip.scopeName=使用 <func>.%closureVariable 可以在命令列存取
-# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,nn
-# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,nn
-# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):nn
-dom.tip.scopeMemberName=使用 <func>.%S 可以在命令列存取
-# Labels and tooltips for a headers displayed on top of the Net panel.nn
-# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.nn
-firebug.reps.declarativeScope=[declarative scope]
-firebug.reps.objectScope=[object scope]
-firebug.reps.withScope=[with scope]
-# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel's contextnn
-# menu for breaking on a XHR.nn
-firebug.reps.optimizedAway=(optimized away)
-# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in thenn
-# Net panel's Headers tab (displayed if you expand a network request). The label is usednn
-# for a button that switches the view between "show raw source code" and "pretty formated headernn
-firebug.reps.element.attribute_value=attribute value
-firebug.reps.element.property_value=property value
-# values".nn
-# LOCALIZATION NOTE (net.filter.Media): Label for net panel filter (used on the Net panel toolbar)nn
-# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutnn
-dom.label.breakOnPropertyChange=在屬性變更時中斷
-dom.tip.Break_On_Property_Change=這個屬性變更時,停止執行 JavaScript
-# a network request (displayed when a net panel entry is expanded). The content ofnn
-# this tab displays sent data (related to a HTTP send method).nn
-dom.disableBreakOnPropertyChange=停用 在屬性變更時中斷
-dom.label.DOM_Breakpoints=DOM 中斷點
-# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):nn
-# Label used in the Net panel for detailed info about a network request (displayednn
-# when a net panel entry is expanded)nn
-# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in thenn
-EditAttribute=編輯屬性「%S」...
-html.tip.Edit_Attribute=編輯這個元素「%S」屬性的值
-# Net panel for JSON responses Allows to sort alphabetically.nn
-# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net panelnn
-# (expand an entry in the panel and select Headers tab).nn
-# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semi-colon list of plural forms.nn
-DeleteAttribute=刪除屬性「%S」
-html.tip.Delete_Attribute=刪除這個元素的「%S」屬性
-# A message displayed in the Net panel when some entries must be removed since maximum numbernn
-# of entries has been reached.nn
-# #1 the number of entries removednn
-InheritedFrom=繼承自
-SothinkWarning=Sothink SWF Catcher 附加元件造成 Firebug 無法正常運作。<br><br>請閱讀 <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">Firebug FAQ 的這個項目</a>。
-# example: Firebug's log limit has been reached. 150 entries not shown.nn
-# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitnn
-css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
-# has been reached. Informing the user what preferencee should be changed to modify the limit.nn
-# %S Name of a preference.nn
-# examples: In order to change the limit modify: firebug.extensions.console.logLimitnn
-css.EmptyStyleSheet=沒有樣式規則。您可以<a>新增規則</a>。
-# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.nn
-# (result of javascript profiler tool). Represents a verb.nn
-# LOCALIZATION NOTE (plural.Profile_Time2): Semi-colon list of plural forms.nn
-css.EmptyElementCSS=這個元素沒有任何樣式規則。您可以為它<a>新增規則</a>。
-EditStyle=編輯元素樣式...
-style.tip.Edit_Style=編輯元素的行內樣式
-AddRule=新增規則...
-css.tip.AddRule=為這個元素新增一條規則
-NewRule=新規則...
-css.tip.New_Rule=新增規則
-# Used as a caption for reported profile info (result of javascript profiler tool).nn
-# #1 number of millisecondsnn
-# #2 number of calls (plural)nn
-# example: (#1ms, #2 calls)nn
-css.Delete_Rule=刪除「%S」
-css.tip.Delete_Rule=刪除「%S」和它的所有屬性
-# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headernn
-# (name of a report column). In order to see this, select the Console panel start profilingnn
-# by clicking the Profile button and stop it by clicking again. The report is logged into thenn
-css.menu.Edit_Media_Query=編輯 Media Query...
-css.menu.tip.Edit_Media_Query=編輯指派給這條規則的 media query
-NewProp=新屬性...
-css.tip.New_Prop=增加新屬性至目前規則
-# console panel. Make sure Script panel is enabled.nn
-# Support for clipboard actions.nn
-# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptnn
-# panel when clicking a function object.nn
-EditProp=編輯「%S」...
-css.tip.Edit_Prop=編輯屬性「%S」的值
-# %S Name of the functionnn
-# Log Calls to "getData"nn
-# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): A tooltip used for a button on mainnn
-# Firebug toolbar. This button allows to open the command line even within other panels.nn
-DisableProp=停用「%S」
-css.tip.Disable_Prop=停用「%S」屬性
-# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console panelnn
-# if specific method is not supported.nn
-# %S Name of a not supported method.nn
-# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console panelnn
-DeleteProp=刪除「%S」
-css.tip.Delete_Prop=刪除「%S」屬性
-# when a not supported method is used on the command line.nn
-BreakOnThisError=發生此錯誤時中斷
-console.menu.tip.Break_On_This_Error=此錯誤發生時,立刻停止執行 JavaScript
-BreakOnAllErrors=發生任何錯誤時中斷
-console.menu.tip.Break_On_All_Errors=有任何錯誤發生時,立刻停止執行 JavaScript
-# %S Name of a not supported method.nn
-# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):nn
-# Tooltip for the "Break on... " button used when the Console panel is selected.nn
-TrackThrowCatch=追蹤 Throw/Catch
-script.option.tip.Track_Throw_Catch=即使已被 try/catch 捕捉,仍要追蹤例外
-UseLastLineForEvalName=以原始碼的最後一行作為 eval() 的名稱
-UseMD5ForEvalName=以 MD5 作為 eval() 的名稱
-# LOCALIZATION NOTE (console.Use_TAB_and_arrow_keys) nn
-Breakpoints=中斷點
-ErrorBreakpoints=錯誤中斷點
-LoggedFunctions=已記錄的函式
-EnableAllBreakpoints=啟用所有中斷點
-breakpoints.option.tip.Enable_All_Breakpoints=啟用所有列出的中斷點
-DisableAllBreakpoints=停用所有中斷點
-breakpoints.option.tip.Disable_All_Breakpoints=停用所有列出的中斷點
-ClearAllBreakpoints=移除所有中斷點
-breakpoints.option.tip.Clear_All_Breakpoints=移除所有列出的中斷點
-ConditionInput=此表達式為真 (true) 時才停在這個中斷點:
-# Top of the completion popup in the command linenn
-# Console strings used when JavaScript is not availablenn
-# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the consolenn
-breakpoints.Remove_Breakpoint=移除中斷點
-breakpoints.tip.Remove_Breakpoint=移除這個中斷點
-breakpoints.Disable_Breakpoint=停用中斷點
-breakpoints.tip.Disable_Breakpoint=停用這個中斷點
-breakpoints.Enable_Breakpoint=啟用中斷點
-breakpoints.tip.Enable_Breakpoint=啟用這個中斷點
-# in cases when the current page is an XML document. The text between <a> and </a> is a link.nn
-# that cause to switch into HTML rendering of the document.nn
-# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,nn
-# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):nn
-# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mousenn
-script.balloon.Continue=繼續
-script.balloon.Disable=停用
-ScriptsFilterStatic=顯示靜態 Script
-ScriptsFilterEval=顯示靜態與 eval Script
-ScriptsFilterEvent=顯示靜態與事件 Script
-ScriptsFilterAll=顯示靜態、事件與 eval Script
-ScriptsFilterStaticShort=靜態
-ScriptsFilterEvalShort=eval
-ScriptsFilterEventShort=事件
-ScriptsFilterAllShort=全部
-# over a Size displayed within the Net panel. 'Total Sent' and 'Total Received' info includesnn
-# even sent and received heades size.nn
-# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Netnn
-# panel (inside the Post tab of an expanded request entry). The message informs the user thatnn
-callstack.Expand_All=全部展開
-callstack.tip.Expand_All=展開所有堆疊框架函數
-callstack.Collapse_All=全部收合
-callstack.tip.Collapse_All=收合所有堆疊框架函數
-# posted data reached Firebug's size limit and only part of it is displayed in the UI.nn
-# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):nn
-callstack.Execution_not_stopped=堆疊框架將在指令停止執行時顯示
-# Labels for Net panel's options.nn
-# LOCALIZATION NOTE (net.option.Show_BF_Cache_Responses, net.option.tip.Show_BF_Cache_Responses):nn
-# Net panels's option. If set to true, the net panel displays also response coming fromnn
-# BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCachenn
-ShowUserProps=顯示使用者定義的屬性
-dom.option.tip.Show_User_Props=顯示使用者定義物件的屬性
-ShowUserFuncs=顯示使用者定義的函式
-dom.option.tip.Show_User_Funcs=顯示使用者定義物件的方法
-ShowDOMProps=顯示 DOM 屬性
-dom.option.tip.Show_DOM_Props=顯示 DOM 特有的屬性
-ShowDOMFuncs=顯示 DOM 函式
-dom.option.tip.Show_DOM_Funcs=顯示 DOM 特有的函數
-ShowDOMConstants=顯示 DOM 常數
-dom.option.tip.Show_DOM_Constants=顯示 DOM 特有的常數
-ShowClosures=顯示 Closure
-dom.option.tip.Show_Closures=顯示與各種函數有關的 closure(會開啟 debugger)
-ShowInlineEventHandlers=顯示 inline Event Handler
-ShowInlineEventHandlersTooltip=顯示沒有 function 關聯的 inline Event Handler
-ShowOwnProperties=只顯示自有屬性
-ShowOwnPropertiesTooltip=不顯示 prototype 繼承屬性
-ShowEnumerableProperties=只顯示 enumerable 屬性
-ShowEnumerablePropertiesTooltip=不顯示無法列舉的屬性
-NoMembersWarning=此物件沒有任何屬性可以顯示。
-NewWatch=新增監看表達式...
-# LOCALIZATION NOTE (plural.Request_Count2): Semi-colon list of plural forms.nn
-# A label used in the Net panel. Displays number of HTTP requests executed by the current page.nn
-AddWatch=新增監看
-watch.tip.Add_Watch=將選擇區域/物件加入側欄監看面板觀察
-# #1 number of requestsnn
-# example: 21 requestsnn
-CopySourceCode=複製原始碼
-script.tip.Copy_Source_Code=將選擇的原始碼複製到剪貼簿
-Use_hash_plus_number_to_go_to_line=輸入 #<行號> 跳到指定行
-CopyValue=複製值
-dom.tip.Copy_Value=將屬性的值複製到剪貼簿
-Copy_Name=複製名稱
-dom.tip.Copy_Name=將屬性的名稱複製到剪貼簿
-Copy_Path=複製路徑
-dom.tip.Copy_Path=複製屬性路徑
-NewProperty=新增屬性...
-EditProperty=編輯屬性...
-dom.tip.Edit_Property=編輯屬性的值
-EditVariable=編輯變數...
-stack.tip.Edit_Variable=編輯變數的值
-EditWatch=編輯監看...
-watch.tip.Edit_Watch=編輯監看表示式的值
-DeleteProperty=刪除屬性
-dom.tip.Delete_Property=刪除這個屬性
-DeleteWatch=刪除監看
-DeleteAllWatches=刪除所有監看
-watch.tip.Delete_Watch=刪除這個監看表示式
-watch.tip.Delete_All_Watches=刪除所有的監看表示式
-# LOCALIZATION NOTE (plural.Error_Count2): Semi-colon list of plural forms.nn
-# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.nn
-SetBreakpoint=設定中斷點
-script.tip.Set_Breakpoint=開關目前行上的中斷點設定
-# #1 number of errorsnn
-# example: 111 Errorsnn
-# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.nn
-EditBreakpointCondition=編輯中斷點條件...
-breakpoints.tip.Edit_Breakpoint_Condition=編輯條件指定什麼時候要在這個中斷點停止 JavaScript 執行
-NoBreakpointsWarning=此頁面沒有設定任何中斷點。
-# With: the scope inside of the with(obj) {} statementnn
-# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };nn
-# Window: the scope inside of a Javascript window object.nn
-Only_Show_Applied_Styles=只顯示已套用的樣式
-style.option.tip.Only_Show_Applied_Styles=只顯示套用在這個元素上的樣式
-# Net panel timing info labelsnn
-#A11y Chrome Labels (not visible, spoken by screen readers)nn
-#A11y panelNode labels (not visible, spoken by screen readers)nn
-Show_User_Agent_CSS=顯示 User Agent CSS
-style.option.tip.Show_User_Agent_CSS=也顯示由使用者代理定義的 CSS
-#A11y Domplate labels (not visible, spoken by screen readers)nn
-# LOCALIZATION NOTEnn
-# Used by a11y. Not directly visible in the UI, intended for screen readers.nn
-# Describe contents of inline editor fieldsnn
-# LOCALIZATION NOTE (a11y.labels.overridden):nn
-computed.option.label.Colors_As_Hex=Hex 顏色
-computed.option.tip.Colors_As_Hex=以十六進位格式顯示顏色
-computed.option.label.Colors_As_RGB=RGB 顏色
-computed.option.tip.Colors_As_RGB=以 RGB 格式顯示顏色
-computed.option.label.Colors_As_HSL=HSL 顏色
-computed.option.tip.Colors_As_HSL=以 HSL 格式顯示顏色
-# Used by a11y. Not directly visible in the UI, intended for screen readers.nn
-# indicates style property is overridden by selector with higher specificitynn
-# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):nn
-# Used by a11y. Not directly visible in the UI, intended for screen readers.nn
-style.option.label.active=:active
-style.option.tip.active=顯示 :active 虛擬類別樣式
-# Existence and state of a breakpointnn
-# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlynn
-# visible in the UI, intended for screen readers.nn
-# #1 Line number, #2 Function name, #3 File namenn
-style.option.label.hover=:hover
-style.option.tip.hover=顯示 :hover 虛擬類別樣式
-# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlynn
-# visible in the UI, intended for screen readers.nn
-# Describes the match found when performing a console panel search nn
-# #1 %S String key the use is looking for. #2 number of rows that contain the matched textnn
-style.option.label.focus=:focus
-style.option.tip.focus=顯示 :focus 虛擬類別樣式
-# examples: Match found for "test" in 17 log rowsnn
-# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlynn
-# visible in the UI, intended for screen readers.nn
-css.label.Inspect_Declaration=檢測宣告
-css.tip.Inspect_Declaration=檢測這個字型的宣告
-# Describes the match found when performing a script panel search nn
-# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found innn
-# examples: Match found for "window.alert" on line 322 in utilities.jsnn
-# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlynn
-Expand_Shorthand_Properties=展開簡寫的屬性
-css.option.tip.Expand_Shorthand_Properties=將簡寫的 CSS 屬性拆開為多項
-# visible in the UI, intended for screen readers.nn
-# Describes the match found when performing an HTML panel search (if it is found in an element node) nn
-# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementnn
-# examples: Match found for "obj" in object element at /html/body/object[2]nn
-Sort_alphabetically=依字母排序
-computed.option.tip.Sort_Alphabetically=依名稱排序樣式(而非將樣式依類型分組)
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlynn
-# visible in the UI, intended for screen readers.nn
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node) nn
-Show_Mozilla_specific_styles=顯示 Mozilla 特有樣式
-computed.option.tip.Show_Mozilla_Specific_Styles=也顯示帶 -moz 前綴的樣式
-# #1 Search string that was matched. #2 Attribute name #3 attribute value nn
-# #4 the HTML element name containing. #5 XPATH string specifying the matched elementnn
-# examples: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]nn
-computed.No_User-Defined_Styles=這個元素沒有使用者定義的樣式規則
-script.Type_any_key_to_filter_list=輸入任意字元以過濾列表
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlynn
-# visible in the UI, intended for screen readers.nn
-location.inline=Inline
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents) nn
-# #1 Search string that was matched. #2 element's text content nn
-# #3 the HTML element name containing. #4 XPATH string specifying the matched elementnn
-location.no_domain=No Domain
-# examples: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]nn
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlynn
-# visible in the UI, intended for screen readers.nn
-LayoutPadding=padding
-LayoutBorder=border
-LayoutMargin=margin
-LayoutPosition=position
-LayoutAdjacent=adjacent
-position=position
-# Describes the match found when performing a CSS panel search (if it is found in a selector) nn
-# #1 Search string that was matched. #2 selector in which the match was found nn
-# examples: Match found for "main" in #mainContent h2 {nn
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlynn
-ShowRulers=顯示尺規與參考線
-layout.option.tip.Show_Rulers=滑鼠移至 box 上時,顯示尺規和參考線
-# visible in the UI, intended for screen readers.nn
-Loading=載入中...
-Headers=標頭
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration) nn
-# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to nn
-net.tip.Clear=清除請求列表
-# examples: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {nn
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlynn
-net.header.Reset_Header=重設標頭
-net.header.tip.Reset_Header=重設標頭顯示
-# visible in the UI, intended for screen readers.nn
-# Describes the match found when performing a DOM panel search nn
-# #1 Search string that was matched. #2 DOM property in which the match was found nn
-# examples: Match found for "time" in _starttime : 1257324992232 (Number)nn
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlynn
-# visible in the UI, intended for screen readers.nn
-net.header.URL=URL
-net.header.URL_Tooltip=請求的 URL 與使用的 HTTP 方法。
-net.header.Status=狀態
-net.header.Status_Tooltip=收到回應的狀態。
-net.header.Domain=網域
-net.header.Domain_Tooltip=請求執行的網域。
-net.header.Size=大小
-net.header.Size_Tooltip=收到回應的大小。
-net.header.Timeline=Timeline
-net.header.Timeline_Tooltip=關於請求/回應往返的詳細計時。
-net.header.Local_IP=本地端 IP
-net.header.Local_IP_Tooltip=Request 所屬的本地端 IP 位址和連接埠。
-net.header.Remote_IP=遠端 IP
-net.header.Remote_IP_Tooltip=Request 所屬的遠端 IP 位址和連接埠。
-net.header.Protocol=通訊協定
-net.header.Protocol_Tooltip=用來定位網路資源的 URL 通訊協定。
-# Describes the match found when performing a Net panel search nn
-net.label.XHR_Breakpoints=XHR 中斷點
-# #1 Search string that was matched. #2 File name associated to the row in which the match was found. nn
-# #3 Column in which the match was found #4. Column value nn
-net.label.Break_On_XHR=在 XHR 中斷
-net.tip.Break_On_XHR=當任何 XMLHttpRequest 建立時,立刻停止執行 JavaScript
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 msnn
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlynn
-# visible in the UI, intended for screen readers.nn
-net.headers.view_source=原始碼顯示
-net.headers.pretty_print=格式化顯示
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)nn
-# #1 Search string that was matched. #2 Column value in which the match was found nn
-# examples: Match found for "05" in net summary row: 4.05snn
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlynn
-# visible in the UI, intended for screen readers.nn
-# Indicates that the searched string was not matched nn
-net.filter.label.All=全部
-net.filter.tooltip.All=顯示所有 MIME 類型
-net.filter.label.HTML=HTML
-net.filter.tooltip.HTML=只顯示 markup 檔案
-net.filter.label.CSS=CSS
-net.filter.tooltip.CSS=只顯示 CSS 檔案
-net.filter.label.JS=JavaScript
-net.filter.tooltip.JS=只顯示 JavaScript 檔案
-net.filter.label.XHR=XHR
-net.filter.tooltip.XHR=只顯示 XMLHttpRequest
-net.filter.label.Images=圖片
-net.filter.tooltip.Images=只顯示圖片
-net.filter.label.Plugins=外掛程式
-net.filter.tooltip.Plugins=只顯示 Flash 和 Silverlight 檔案
-net.filter.label.Media=媒體
-net.filter.tooltip.Media=只顯示聲音和影片
-net.filter.label.Fonts=字型
-net.filter.tooltip.Fonts=只顯示字型
-# %S Search string that was matched. nn
-# examples: No matched found for "wefkhwefkgwekhjgjh"nn
-# Console messages.nn
-Post=Post
-Put=Put
-# LOCALIZATION NOTE (message.knownIssues40): A message displayed for Firefox 40 users showingnn
-# a link to known issues (with Firefox 4.0) page.nn
-# examples: See Firefox 4.0 known issues page: http://getfirebug.com/knownissuesnn
-Response=回應
-URLParameters=參數
-Cache=快取
-HTML=HTML
-jsonviewer.tab.JSON=JSON
-xmlviewer.tab.XML=XML
-svgviewer.tab.SVG=SVG
-fontviewer.General_Info=一般資訊
-fontviewer.Meta_Data=Meta 資料
-fontviewer.view_source=檢視原始碼
-fontviewer.Preview=預覽
-fontviewer.view_characters=例字顯示
-fontviewer.pretty_print=格式化顯示
-fontviewer.view_sample=例句顯示
-fontviewer.uniqueid=Unique ID
-fontviewer.vendor=Vendor
-fontviewer.license=License
-fontviewer.description=Description
-fontviewer.copyright=Copyright
-fontviewer.credits=Credits
-fontviewer.trademark=Trademark
-fontviewer.licensee=Licensee
-fontviewer.extension=Extension
-fontviewer.pangram=The quick brown fox jumps over the lazy dog
-# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):nn
-# If Firebug is displayed in an external window (detached), but not active for thenn
-jsonviewer.sort=依 key 排序
-jsonviewer.do_not_sort=不排序
-# currently selected Firefox tab, the following button label is used for annn
-# activation button.nn
-# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):nn
-# An error message displayed in the Script panel when a source can't be displayednn
-net.jsonviewer.Copy_JSON=將「%S」複製為 JSON
-# for specific URL.nn
-# examples: Failed to load source for: http://www.example.com/script.jsnn
-RequestHeaders=請求標頭
-ResponseHeaders=回應標頭
-CachedResponseHeaders=回應標頭(來自快取)
-PostRequestHeaders=來自上傳串流的請求標頭
-# examples: The resource from this URL is not text: http://www.example.com/script.jsnn
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,nn
-# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.nn
-net.label.ResponseHeadersFromBFCache=這個請求是直接由快取解析的,所以沒有伺服器的回應。以下是來自快取的回應。
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):nn
-# Tooltips for back/forward buttons on the Script panel toolbar.nn
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):nn
-# This message is displayed within the Script panel if debugger is inactive during page load.nn
-# The suggestion message represents an advice how to solve the problem.nn
-plural.Limit_Exceeded2=超過 Firebug 的記錄上限,%1$S 個項目未顯示。
-LimitPrefs=選項
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):nn
-# This message is displayed within the Script panel if javascript is not enabled.nn
-# The suggestion message represents an advice how to solve the problem.nn
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed onnn
-LimitPrefsTitle=修改 %S 以調整上限
-Refresh=重新整理
-panel.tip.Refresh=更新面板顯示內容
-# the Script panel if Javascript is disabled. This button allows to enable it.nn
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):nn
-OpenInTab=開啟至新分頁
-firebug.tip.Open_In_Tab=在新的瀏覽器分頁開啟 URL
-Open_Response_In_New_Tab=在新分頁開啟回應
-net.tip.Open_Response_In_New_Tab=將回應內容開啟在新的瀏覽器分頁
-# This message is displayed within the Script panel if javascript is not enabled for the current page.nn
-# The suggestion message represents an advice how to solve the problem.nn
-Profile=Profile
-ProfilerStarted=Profiler 執行中。再按一次「Profile」以顯示報告。
-ProfilerRequiresTheScriptPanel=必須啟用 Script 面板才能使用 profile 功能。
-# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):nn
-# This message is displayed within the Script panel if javascript is not enabled for the current page.nn
-# The suggestion message represents an advice how to solve the problem.nn
-#firebug.dtdnn
-#editors.dtdnn
-plural.Profile_Time2=(%1$S 毫秒,%2$S 個呼叫)
-NothingToProfile=沒有可分析的活動
-PercentTooltip=這個函數消耗時間所佔的比率
-CallsHeaderTooltip=函數被呼叫的次數
-OwnTimeHeaderTooltip=函數消耗時間,不含巢狀呼叫
-TimeHeaderTooltip=函數消耗時間,包含巢狀呼叫
-AvgHeaderTooltip=平均時間,包含函數呼叫
-MinHeaderTooltip=最短時間,包含函數呼叫
-MaxHeaderTooltip=最長時間,包含函數呼叫
-ProfileButton.Tooltip=分析 JavaScript 執行時間
-Function=函數
-Percent=百分比
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,nn
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)nn
-# Used in the CSS panel for the Edit button.nn
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayednn
-Calls=呼叫
-OwnTime=本身時間
-Time=時間
-Avg=平均
-Min=最短
-Max=最長
-File=檔案
-# in the Console panel when the private browsing mode is on (in Firefox 4 it's Startnn
-Copy=複製
-Cut=剪下
-Remove=移除
-Delete=刪除
-Paste=貼上
-SelectAll=全選
-html.Copy_Node=複製 %S
-html.tip.Copy_Node=將 %S 節點和其內容複製到剪貼簿
-CopyInnerHTML=複製 innerHTML
-html.tip.Copy_innerHTML=將元素內容複製到剪貼簿
-CopyXPath=複製 XPath
-html.tip.Copy_XPath=將元素的 XPath 複製到剪貼簿
-Copy_CSS_Path=複製 CSS path
-html.tip.Copy_CSS_Path=將元素的 CSS path 複製到剪貼簿
-# Private Browsing mode)nn
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayednn
-# in a break notification balloon popup next to a checkbox.nn
-html.menu.Paste=貼上 %S
-html.tip.Paste=當作 %S 內容貼上
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):nn
-# This message is displayed in a break notification popup when break on debugger; keyword happens.nn
-html.menu.Paste_Replace_Content=取代內容
-html.tip.Paste_Replace_Content=取代節點的內容
-html.menu.Paste_Replace_Node=取代節點
-html.tip.Paste_Replace_Node=取代整個節點的 HTML
-html.menu.Paste_AsFirstChild=為 First Child
-html.tip.Paste_AsFirstChild=貼上為節點的第一個子節點
-html.menu.Paste_AsLastChild=為 Last Child
-html.tip.Paste_AsLastChild=貼上為節點的最後一個子節點
-html.menu.Paste_Before=在之前
-html.tip.Paste_Before=貼上到節點之前
-html.menu.Paste_After=在之後
-html.tip.Paste_After=貼上到節點之後
-# The keyword can be disabled by creating a disabled breakpoint on the same line.nn
-# The other label is used for a tooltip on the action button.nn
-html.menu.Reload_Frame=重新載入 frame
-html.menu.tip.Reload_Frame=重新載入 frame 的內容
-# LOCALIZATION NOTE (firebug.dom.noChildren): This message is displayed in the DOM panelnn
-# in cases where there are no children objects and so nothing to display.nn
-CopyLocation=複製網址
-clipboard.tip.Copy_Location=將物件位址的 URL 複製到剪貼簿
-CopyURLParameters=複製 URL 參數
-net.tip.Copy_URL_Parameters=將 URL 參數複製到剪貼簿
-CopyPOSTParameters=複製 POST 參數
-net.tip.Copy_POST_Parameters=將 POST 參數複製到剪貼簿
-CopyLocationParameters=複製網址,包含參數
-net.tip.Copy_Location_Parameters=將 URL(包括參數)一起複製到剪貼簿
-CopyRequestHeaders=複製請求標頭
-net.tip.Copy_Request_Headers=將請求標頭複製到剪貼簿
-CopyResponseHeaders=複製回應標頭
-net.tip.Copy_Response_Headers=將回應標頭複製到剪貼簿
-CopyResponse=複製回應內文
-net.tip.Copy_Response=將回應內文複製到剪貼簿
-# LOCALIZATION NOTE (firebug.reps.more): This label is when displayed array/list hasnn
-# more elements then it's displayed on the screen. "..." is automatically appended.nn
-CopyError=複製錯誤
-console.menu.tip.Copy_Error=將錯誤資訊複製到剪貼簿
-# example: more...nn
-# LOCALIZATION NOTE (firebug.storage.totalItems): This label is used in the DOM panelnn
-CopySource=複製函數
-dom.tip.Copy_Source=將函數原始碼複製到剪貼簿
-# for local/session/global storage. It's informing the user about number of items in the storage.nn
-# #1 number of storage itemsnn
-# example: 1 item in Storagenn
-# example: 2 items in Storagenn
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties): This label is used by console.tablenn
-ShowCallsInConsole=記錄對象為「%S」的呼叫
-dom.tip.Log_Calls_To_Function=在主控台記錄對「%S」函數的呼叫
-# method if an object is passed into it. Used in table header.nn
-# LOCALIZATION NOTE (firebug.completion.empty): This label is used in the command linenn
-# by auto-complete function. Displayed if there are no possible completions.nn
-ShowEventsInConsole=記錄事件
-html.tip.Show_Events_In_Console=在主控台記錄事件資訊
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):nn
-# This label is used in an image preview infotip within the HTML panel (hover over an IMG element)nn
-panel.Enabled=啟用
-panel.tip.Enabled=啟用/停用面板
-# when loading of given URL fails. The firebug.failedToPreviewObjectURL is specifically usednn
-# for moz-filedata (HTML5),nn
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_imagesnn
-panel.tooltip.Show_Command_Line_Popup=顯示命令列彈出視窗
-# LOCALIZATION NOTE (firebug.completion.empty): This label is used in the command linenn
-# by auto-complete function. Displayed if there are no possible completions.nn
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):nn
-# This label is used in an image preview infotip within the HTML panel (hover over an IMG element)nn
-console.MethodNotSupported=Firebug 主控台不支援「%S」
-# when loading of given URL fails. The firebug.failedToPreviewObjectURL is specifically usednn
-# for moz-filedata (HTML5),nn
-commandline.errorSourceHeader=EXPRESSION EVALUATED USING THE FIREBUG COMMAND LINE:
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_imagesnn
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-commandline.MethodDisabled=This command line method is temporarily disabled.
-# to reload the sources
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-commandline.MethodNotSupported=Firebug 命令列不支援「%S」
-# The suggestion message represents an advice how to solve the problem.
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-commandline.CurrentWindow=目前視窗:
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-console.Disable_Break_On_All_Errors=停用 在所有錯誤中斷
-console.Break_On_All_Errors=在所有錯誤中斷
-# The suggestion message represents an advice how to solve the problem.
-# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
-console.Break_On_This_Error=在這個錯誤中斷
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-console.Use_Arrow_keys,_Tab_or_Enter=使用方向鍵、Tab 或 Enter
-# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-console.JSDisabledInFirefoxPrefs=您的 Firefox 選項已停用 JavaScript。若要使用「主控台」面板,請在「工具」→「選項」→「內容」→「啟用 JavaScript」開啟它。
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-# firebug.dtd
-console.ScriptPanelMustBeEnabledForTraces=必須啟用 Script 面板才能取得堆疊追溯。 <a>啟用 Script 面板</a>
-# LOCALIZATION NOTE (firebug.Rerun, firebug.Continue, firebug.StepOver, firebug.StepInto,
-# firebug.StepOut, firebug.RunUntil)
-# Labels used for debugger options available in the Script panel.
-tooltip.multipleFiltersHint=使用 Ctrl+Click 可選擇多個過濾條件
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-# editors.dtd
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-console.multiHighlightLimitExceeded=頁面有太多要上色標示的元素(目前上限為 %S)。\n見 'extensions.firebug.multiHighlightLimit' 選項。
-# Used in the CSS panel for the Edit button.
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-commandline.disabledForXMLDocs=Firebug 命令列在 XML 頁面中是停用的。您可以<a>切換至 HTML</a> 以啟用它。
-# (in Firefox 4+ it's 'Start Private Browsing')
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-commandline.Use_in_Command_Line=在命令列中使用
-commandline.tip.Use_in_Command_Line=移至命令列,並將這個值表示為 "$p" 以供存取
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-commandline.include.includeSuccess=成功 include %S。
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-commandline.include.aliasNotFound=找不到 alias "%S"。
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-commandline.include.loadFail=無法載入這個 script:%S
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-commandline.include.invalidRequestProtocol=只支援 HTTP/HTTPS 通訊協定。
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-commandline.include.invalidSyntax=語法錯誤導致 include 失敗,檔案確實含有 JavaScript 嗎?
-# more elements then displayed on the screen. "..." is automatically appended.
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-commandline.include.aliasCreated=已建立 alias "%S"。
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-commandline.include.aliasRemoved=已移除 alias "%S"。
-# example: 2 items in Storage
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-commandline.include.invalidAliasName=Alias 名稱不能含有 "." 或 "/";不合法的 alias 名稱:"%S"。
-# if an object is passed into it.
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-commandline.include.tooLongAliasName=Alias 名稱不能超過 30 個字元;不合法的 alias 名稱:"%S"。
-# Displayed, if there are no possible completions.
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-commandline.include.invalidAliasArgumentType=第二個參數不正確; 預期為 alias 名稱。
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-commandline.include.invalidUrlArgumentType=URL 參數不正確。
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-commandline.include.confirmDelete=確定要刪除 alias:"%S" 嗎?
-# Message logged into the Console panel when memory profiler session starts.
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-commandline.include.noDefinedAlias=(尚未定義任何 alias)
-commandline.tip.Delete_Alias=刪除這個 alias
-commandline.tip.Edit_Alias_Name=編輯 alias 名稱
-commandline.tip.Edit_Alias_URL=編輯 alias 的 URL
-commandline.tip.Open_In_Scratchpad=在程式碼速記本開啟 script 內容
-commandline.tip.Include_Script=下載並執行 script
-commandline.label.DeleteAlias=刪除 alias
-commandline.label.EditAliasName=編輯 alias 名稱
-commandline.label.EditAliasURL=編輯 alias URL
-commandline.label.OpenInScratchpad=在程式碼速記本開啟
-commandline.label.IncludeScript=Include "%S"
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-Do_not_show_this_message_again=不要再顯示這個訊息
-# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
-scratchpad.loading=載入中,請稍候...
-scratchpad.failLoading=載入程式碼時發生錯誤。
-# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
-# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
-# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
-# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-net.sizeinfo.Response_Body=Response Body
-net.sizeinfo.Post_Body=Post Body
-net.sizeinfo.Total_Sent=總共送出
-net.sizeinfo.Total_Received=總共接收
-net.sizeinfo.Including_HTTP_Headers=包含 HTTP Header
-net.ActivationMessage=網路面板已啟用。停用面板時任何請求都不會顯示。
-net.responseSizeLimitMessage=超過 Firebug 的回應大小限制,按<a>這裡</a>在新的 Fireofx 分頁顯示全部回應。
-# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
-# first %S = Matched search string, second %S = Element's text content,
-# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
-net.postDataSizeLimitMessage=超過 Firebug 的請求大小限制。
-net.Break_On_XHR=在 XHR 中斷
-net.label.Parameters=參數
-net.label.Parts=部份
-net.label.Source=原始碼
-# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
-# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
-net.label.Resend=重送
-net.tip.Resend=再次送出請求
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a CSS panel search (if it is found in a selector)
-net.option.Disable_Browser_Cache=停用瀏覽器快取
-net.option.tip.Disable_Browser_Cache=停用瀏覽器的 HTTP 快取
-# first %S = Matched search string, second %S = Selector, in which the match was found
-# example: Match found for "main" in #mainContent h2 {
-# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-net.option.Show_Paint_Events=顯示 Paint 事件
-net.option.tip.Show_Paint_Events=在時間軸上以綠色顯示 MozAfterPaint 事件
-# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
-# first %S = Matched search string, second %S = Style property, in which the match was found
-# third %S = Selector the style declaration applies to
-net.option.Show_BFCache_Responses=顯示 BFCache 回應
-net.option.tip.Show_BFCache_Responses=也顯示來自 上一頁/下一頁 快取的回應
-# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
-# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-script.Break_On_Next=在下一步中斷
-script.Disable_Break_On_Next=停用 在下一步中斷
-ShowHttpHeaders=顯示 HTTP 標頭
-# Describes the match found when performing a DOM panel search
-# first %S = Matched search string, second %S = DOM property, in which the match was found
-# examples: Match found for "time" in DOM property _starttime
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
-plural.Request_Count2=%1$S 個請求
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search
-net.summary.from_cache=%S 來自快取
-# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
-# third %S = Column, in which the match was found, fourth %S = Column value
-# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
-net.summary.tip.request_count=請求數量
-net.summary.tip.total_size=所有請求的總計數
-net.summary.tip.total_cached_size=所有請求的快取大小總和
-net.summary.tip.total_request_time=載入所有請求所需的時間和 'onload' 事件發生的時間
-StopLoading=停止載入
-net.tip.Stop_Loading=停止載入請求
-LargeData=(大量資料)
-ShowComputedStyle=顯示計算樣式
-StyleGroup-text=文字
-StyleGroup-background=背景
-StyleGroup-box=Box Model
-StyleGroup-layout=Layout
-StyleGroup-other=其它
-Dimensions=%S x %S
-# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
-CopyColor=複製顏色
-css.tip.Copy_Color=將顏色複製到剪貼簿
-# first %S = Matched search string, second %S = Column value, in which the match was found
-# examples: Match found for "05" in net summary row: 4.05s
-# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
-# visible in the UI, intended for screen readers.
-CopyImageLocation=複製圖片網址
-css.tip.Copy_Image_Location=將圖片 URL 複製到剪貼簿
-OpenImageInNewTab=在新分頁開啟圖片
-css.tip.Open_Image_In_New_Tab=在新的瀏覽器分頁開啟圖片
-# Indicates that the searched string was not matched
-# %S = Search string
-# examples: No matched found for "wefkhwefkgwekhjgjh"
-OmitObjectPathStack=忽略工具列堆疊
-callstack.option.tip.Omit_Object_Path_Stack=不要顯示物件路徑堆疊
-Load_Original_Source=載入原版原始碼
-css.tip.Load_Original_Source=放棄所有變更並載入原來的 CSS
-# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
-# Text in the confirmation dialog shown when the options should be reset
-# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
-callstack.option.Show_Arguments=顯示參數
-callstack.option.tip.Show_Arguments=也顯示函數的參數
-# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
-# displayed containing the following message
-# Console messages
-Copy_Rule_Declaration=複製規則宣告
-css.tip.Copy_Rule_Declaration=將這個規則和它的所有屬性複製到剪貼簿
-# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
-# An error message displayed in the Script panel when a source can't be displayed
-# for specific URL.
-Copy_Style_Declaration=複製樣式宣告
-css.tip.Copy_Style_Declaration=將這個規則的屬性複製到剪貼簿
-# examples: Reload the page to get source for: http://www.example.com/script.js
-# examples: The resource from this URL is not text: http://www.example.com/script.js
-# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
-# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
-# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
-css.label.Copy_Property_Declaration=複製屬性宣告
-css.tip.Copy_Property_Declaration=將屬性宣告複製到剪貼簿
-css.label.Copy_Property_Name=複製屬性名稱
-css.tip.Copy_Property_Name=將屬性的名稱複製到剪貼簿
-css.label.Copy_Property_Value=複製屬性值
-css.tip.Copy_Property_Value=將屬性的值複製到剪貼簿
-# Tooltips for back/forward buttons on the Script panel toolbar.
-# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
-# Message displayed in the Script panel, if the debugger is inactive during page load.
-# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
-plural.Error_Count2=%1$S 個錯誤
-moduleManager.title=%S 面板已停用
-moduleManager.desc3=使用 Firebug 的狀態列圖示一次啟用/停用全部面板;使用各個面板的分頁選單各別控制。
-moduleManager.Enable=啟用
-Suspend_Firebug=暫停 Firebug
-Resume_Firebug=繼續 Firebug
-Reset_Panels_To_Disabled=重設各面板為停用
-Open_Console=開啟主控台
-Open_Console_Tooltip=開啟 Firebug 追溯主控台
-Scope_Chain=Scope Chain
-# to reload the sources
-# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
-# This message is displayed within the Script panel if javascript is not enabled.
-With_Scope=With
-# The suggestion message represents an advice how to solve the problem.
-Call_Scope=Call
-# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
-Window_Scope=Window
-# the Script panel, if Javascript is disabled. This link allows to enable it.
-# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
-# Message displayed in the Script panel, if no JavaScripts are available for the current page.
-# The suggestion message represents an advice how to solve the problem.
-# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
-requestinfo.Blocking=阻擋
-requestinfo.Resolving=DNS 查詢
-requestinfo.Connecting=連線中
-requestinfo.Sending=傳送中
-requestinfo.Waiting=等待中
-requestinfo.Receiving=接收中
-requestinfo.ContentLoad='DOMContentLoaded'(事件)
-requestinfo.WindowLoad='load'(事件)
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-requestinfo.started.label=計時後,開始請求的時間
-requestinfo.phases.label=請求後,各階段的開始與費時:
-requestinfo.timings.label=請求後,各事件的計時:
-search.Firebug_Search=Firebug 搜尋
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page doesn't include any JavaScript.
-# The suggestion message represents an advice how to solve the problem.
-search.Next=下一筆
-search.tip.Next=尋找下一個符合的位置
-search.Previous=上一筆
-search.tip.Previous=尋找上一個符合的位置
-search.Case_Sensitive=區別大小寫
-search.tip.Case_Sensitive=將大寫/小寫視為不同的字
-search.Case_Insensitive=忽略大小寫差異
-search.tip.Case_Insensitive=將大寫/小寫視為一樣的字
-search.Multiple_Files=多檔案
-search.tip.Multiple_Files=在與此面板相關的全部檔案中搜尋
-search.Use_Regular_Expression=使用正規表示式
-search.tip.Use_Regular_Expression=將輸入的搜尋字串視為 Regular Expression
-# LOCALIZATION NOTE (script.warning.no_chrome_debugging, script.suggestion.no_chrome_debugging):
-# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
-# The suggestion message represents an advice how to solve the problem.
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-search.html.CSS_Selector=CSS 選擇器
-search.net.Headers=標頭
-search.net.Parameters=參數
-search.net.Response_Bodies=回應本體
-search.net.tip.Response_Bodies=搜尋範圍包括回應 body
-firebug.console.Persist=持續
-firebug.console.Do_Not_Clear_On_Reload2=載入頁面時,不清除面板內容
-firebug.console.Show_All_Log_Entries=顯示全部 Log 項目
-firebug.console.Errors=錯誤
-firebug.console.Filter_by_Errors=只顯示錯誤
-firebug.console.Warnings=警告
-firebug.console.Filter_by_Warnings=只顯示警告
-firebug.console.Info=訊息
-firebug.console.Filter_by_Info=只顯示訊息
-firebug.console.Debug_Info=除錯訊息
-firebug.console.Filter_by_Debug_Info=只顯示除錯訊息
-firebug.Deactivate_Firebug=不啟動 Firebug
-firebug.tip.Deactivate_Firebug=在目前網頁不啟動 Firebug
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-firebug.tip.Toggle_Side_Panels=開關側邊欄顯示
-firebug.ShowFirebug=開啟 Firebug
-firebug.menu.tip.Open_Firebug=顯示 Firebug UI
-firebug.HideFirebug=隱藏 Firebug
-firebug.menu.tip.Minimize_Firebug=最小化 Firebug,但保持啟動
-firebug.FocusFirebug=焦點移至 Firebug 視窗
-firebug.menu.tip.Focus_Firebug=將焦點移至已分離的 Firebug 視窗
-firebug.menu.Enable_All_Panels=啟用所有面板
-firebug.menu.tip.Enable_All_Panels=啟用所有已啟動的面板
-firebug.menu.Disable_All_Panels=停用所有面板
-firebug.menu.tip.Disable_All_Panels=停用所有已啟動的面板
-firebug.menu.Customize_shortcuts=自訂快速鍵
-firebug.menu.tip.Customize_Shortcuts=自訂 Firebug 內部快速鍵設定
-firebug.Options=選項
-firebug.menu.tip.Options=Firebug 全域選項
-firebug.menu.Enable_Accessibility_Enhancements=啟用親和力增強功能
-firebug.menu.tip.Enable_Accessibility_Enhancements=啟用完整的鍵盤控制與其他親和力增強功能
-firebug.menu.Activate_Same_Origin_URLs2=對相同來源 URL 啟動
-firebug.menu.tip.Activate_Same_Origin_URLs=對符合 same origin policy 的 URL 啟動 Firebug
-firebug.menu.Reset_All_Firebug_Options=重設全部 Firebug 選項
-firebug.menu.tip.Reset_All_Firebug_Options=將 Firebug 全部選項重設為預設值
-firebug.menu.Firebug_Online=Firebug 線上
-firebug.menu.tip.Firebug_Online=Firebug 相關網站
-firebug.menu.Extensions=Firebug 擴充元件...
-firebug.menu.tip.Extensions=下載與安裝 Firebug 的擴充元件
-firebug.menu.Vertical_Panels=垂直面板配置
-firebug.menu.tip.Vertical_Panels=翻轉 Firebug 主面板/側面板配置
-firebug.menu.Show_Info_Tips=顯示資訊提示
-firebug.menu.tip.Show_Info_Tips=滑鼠移至元素時,顯示彈出資訊框
-firebug.Show_Error_Count=顯示錯誤計數
-firebug.menu.tip.Show_Error_Count=顯示主控台已記錄錯誤的數量
-firebug.TextSize=文字大小
-firebug.menu.tip.Text_Size=變更 Firebug 介面文字大小
-firebug.IncreaseTextSize=增加文字大小
-firebug.menu.tip.Increase_Text_Size=放大 Firebug 文字
-firebug.DecreaseTextSize=降低文字大小
-firebug.menu.tip.Decrease_Text_Size=縮小 Firebug 文字
-firebug.NormalTextSize=正常文字大小
-firebug.menu.tip.Normal_Text_Size=重設 Firebug 文字大小為預設值
-firebug.Website=Firebug 網站...
-firebug.menu.tip.Website=開啟 Firebug 官方網站
-firebug.help=說明...
-firebug.menu.tip.help=開啟 Firebug 說明網站
-firebug.Documentation=文件...
-firebug.menu.tip.Documentation=開啟 Firebug 文件說明
-firebug.KeyShortcuts=快速鍵...
-firebug.menu.tip.Key_Shortcuts=開啟 Firebug 滑鼠與鍵盤快速鍵列表
-firebug.Forums=討論群組...
-firebug.menu.tip.Forums=開啟討論群組網站
-firebug.Issues=問題追蹤...
-firebug.menu.tip.Issues=開啟問題追蹤網站
-firebug.Donate=捐款...
-firebug.menu.tip.Donate=開啟捐款或貢獻網頁
-firebug.About=關於...
-firebug.menu.tip.About=關於 Firebug 的資訊
-ProfileJavaScript=Profile JavaScript
-firebug.menu.tip.Profile_JavaScript=剖析 JavaScript 執行時間
-firebug.Search=搜尋
-firebug.menu.tip.Search=將焦點移至搜尋欄
-# firebug.dtd
-firebug.shortcut.reenterCommand.label=重覆輸入命令
-firebug.shortcut.tip.reenterCommand=再次將最後使用的命令輸入命令列
-firebug.shortcut.toggleInspecting.label=開關觀察
-firebug.shortcut.tip.toggleInspecting=啟用/停用檢測器
-firebug.shortcut.toggleQuickInfoBox.label=開關快速資訊框
-firebug.shortcut.tip.toggleQuickInfoBox=啟用/停用顯示目前檢測元素資訊的面板
-firebug.shortcut.toggleProfiling.label=開關 Profile
-firebug.shortcut.tip.toggleProfiling=啟用/停用 JavaScript Profiler
-firebug.shortcut.focusCommandLine.label=焦點移至命令列
-firebug.shortcut.tip.focusCommandLine=開啟 Firebug 並將焦點移至命令列/開啟命令列彈出框
-firebug.shortcut.focusFirebugSearch.label=焦點移至 Firebug 搜尋
-firebug.shortcut.tip.focusFirebugSearch=將焦點移至搜尋欄
-firebug.shortcut.focusWatchEditor.label=焦點移至監看編輯器
-firebug.shortcut.tip.focusWatchEditor=切換至 Script 面板並開始輸入新的監看式
-firebug.shortcut.focusLocation.label=焦點移至網址
-firebug.shortcut.tip.focusLocation=開啟位址選單
-firebug.shortcut.nextObject.label=下一個物件
-firebug.shortcut.tip.nextObject=選取面板中,下一個元素路徑中的物件
-firebug.shortcut.previousObject.label=上一個物件
-firebug.shortcut.tip.previousObject=選取面板中,上一個元素路徑中的物件
-firebug.shortcut.customizeFBKeys.label=自訂 Firebug 快速鍵
-firebug.shortcut.tip.customizeFBKeys=開啟 Firebug 快速鍵設定對話框
-firebug.shortcut.detachFirebug.label=在新視窗開啟 Firebug
-firebug.shortcut.tip.detachFirebug=將 Firebug 分離至獨立視窗
-firebug.shortcut.leftFirebugTab.label=切換至左邊的 Firebug 面板
-firebug.shortcut.tip.leftFirebugTab=切換至左邊的 Firebug 面板
-firebug.shortcut.rightFirebugTab.label=切換至右邊的 Firebug 面板
-firebug.shortcut.tip.rightFirebugTab=切換至右邊的 Firebug 面板
-firebug.shortcut.toggleFirebug.label=開啟 Firebug
-firebug.shortcut.tip.toggleFirebug=開啟/最小化 Firebug UI
-firebug.shortcut.closeFirebug.label=停止 Firebug 活動
-firebug.shortcut.tip.closeFirebug=在目前網站不允許 Firebug 活動
-firebug.shortcut.previousFirebugTab.label=上一個 Firebug 分頁
-firebug.shortcut.tip.previousFirebugTab=切換至上一個選取的 Firebug 面板
-firebug.shortcut.clearConsole.label=清空主控台
-firebug.shortcut.tip.clearConsole=移除主控台中的所有記錄
-firebug.shortcut.openTraceConsole.label=開啟追溯主控台
-firebug.shortcut.tip.openTraceConsole=開啟 FBTrace 主控台
-firebug.shortcut.navBack.label=上一步
-firebug.shortcut.tip.navBack=前往上一個面板,或瀏覽歷史的上一個位址
-firebug.shortcut.navForward.label=下一步
-firebug.shortcut.tip.navForward=前往下一個面板,或瀏覽歷史的下一個位址
-firebug.shortcut.increaseTextSize.label=增加文字大小
-firebug.shortcut.tip.increaseTextSize=放大 Firebug 用的文字
-firebug.shortcut.decreaseTextSize.label=縮小文字大小
-firebug.shortcut.tip.decreaseTextSize=縮小 Firebug 用的文字
-firebug.shortcut.normalTextSize.label=正常文字大小
-firebug.shortcut.tip.normalTextSize=重設 Firebug 文字大小為預設值
-firebug.shortcut.help.label=開啟說明
-firebug.shortcut.tip.help=開啟常見問題網頁
-firebug.shortcut.toggleBreakOn.label=開關在 ... 時中斷
-firebug.shortcut.tip.toggleBreakOn=啟用/停用在特定條件發生時,停止執行指令碼的功能
-firebug.panel_selector=面板選擇器
-customizeShortcuts=Firebug 快速鍵設定
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-a11y.labels.panel_tools=面板工具
-a11y.labels.firebug_panels=Firebug 面板
-a11y.labels.firebug_side_panels=Firebug 側邊面板
-a11y.labels.firebug_window=Firebug 視窗
-a11y.labels.firebug_status=Firebug 狀態
-a11y.labels.reset=重設
-a11y.labels.reset_shortcut=重設 %S 快捷鍵
-aria.labels.inactive_panel=未啟用的面板
-# Label for an item incl. assigned keyboard shortcut
-a11y.labels.log_rows=log 行
-a11y.labels.call_stack=呼叫堆疊
-a11y.labels.document_structure=文件結構
-a11y.labels.title_panel=%S 面板
-a11y.labels.title_side_panel=%S 側邊面板
-a11y.labels.cached=快取
-aria.labels.stack_trace=堆疊追溯
-# example: Continue (F8)
-a11y.layout.padding=padding
-a11y.layout.border=border
-a11y.layout.margin=margin
-a11y.layout.position=position
-a11y.layout.position_top=position top
-a11y.layout.position_right=position right
-a11y.layout.position_bottom=position bottom
-a11y.layout.position_left=position left
-a11y.layout.margin_top=margin top
-a11y.layout.margin_right=margin right
-a11y.layout.margin_bottom=margin bottom
-a11y.layout.margin_left=margin left
-a11y.layout.border_top=border top
-a11y.layout.border_right=border right
-a11y.layout.border_bottom=border bottom
-a11y.layout.border_left=border left
-a11y.layout.padding_top=padding top
-a11y.layout.padding_right=padding right
-a11y.layout.padding_bottom=padding bottom
-a11y.layout.padding_left=padding left
-a11y.layout.top=top
-a11y.layout.right=right
-a11y.layout.bottom=bottom
-a11y.layout.left=left
-a11y.layout.width=width
-a11y.layout.height=height
-a11y.layout.size=size
-a11y.layout.z-index=z-index
-a11y.layout.box-sizing=box-sizing
-a11y.layout.clientBoundingRect=bounding client rect
-a11y.descriptions.press_enter_to_edit_values=按 Enter 和 Tab 編輯各個元素的值
-a11y.labels.style_rules=樣式規則
-aria.labels.inherited_style_rules=繼承的樣式
-a11y.labels.computed_styles=計算樣式
-a11y.labels.dom_properties=DOM 屬性
-# example: Step Out (Shift+F11)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-a11y.labels.inline_editor=行內編輯器
-a11y.labels.value_for_attribute_in_element=%2$S 元素 %1$S 屬性的值
-a11y.labels.attribute_for_element=%S 元素的屬性
-a11y.labels.text_contents_for_element=%S 元素的文字內容
-a11y.labels.defined_in_file=定義於 %S
-a11y.labels.declarations_for_selector="%S" selector 的樣式定義
-a11y.labels.property_for_selector=%S selector 的 CSS 屬性
-a11y.labels.value_property_in_selector=%2$S selector %1$S 屬性的值
-a11y.labels.css_selector=CSS selector
-a11y.labels.source_code_for_file=檔案 %S 的原始碼
-a11y.labels.press_enter_to_add_new_watch_expression=按 Enter 新增監看表達式
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-a11y.labels.overridden=已被覆蓋
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-a11y.updates.has_conditional_break_point=具有條件判斷的中斷點
-a11y.updates.has_disabled_break_point=具有已停用的中斷點
-# editors.dtd
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-a11y.updates.script_suspended_on_line_in_file=Script 在 %3$S 第 %1$S 行的 %2$S 函數中止
-# Used in the CSS panel for the Edit button.
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-a11y.updates.match_found_in_logrows=在 Log 第 %2$S 行找到符合 "%1$S" 的結果
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-a11y.updates.match_found_for_on_line=在 %3$S 第 %2$S 行找到符合 "%1$S" 的結果
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-a11y.updates.match_found_in_element=在 XPath 為 %3$S 的 %2$S 元素中找到符合 "%1$S" 的結果
-# This feature needs the Script panel enabled in order to work.
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-a11y.updates.match_found_in_attribute=在 XPath 為 %5$S 的 %4$S 元素中找到符合 "%1$S" 的屬性 %2$S=%3$S
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-a11y.updates.match_found_in_text_content=在 XPath 為 %4$S 的 %3$S 元素中找到符合 "%1$S" 的文字 %2$S
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-a11y.updates.match_found_in_selector=找到符合 "%S" 的 selector %S
-# Displayed, if there are no possible completions.
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-a11y.updates.match_found_in_style_declaration=在 %3$S selector 中找到符合 "%1$S" 的樣式宣告 %2$S
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-a11y.updates.match_found_in_dom_property=找到符合 "%S" 的 DOM 屬性 %S
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-a11y.updates.match_found_in_net_row=在 %2$S 中找到符合 "%1$S" 的 %3$S : %4$S
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-a11y.updates.match_found_in_net_summary_row=在網路概要找到符合 "%S" 的結果,第 %S 行
-# Used by the console panel if a Console API is used without any argument.
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-a11y.updates.no_matches_found=沒有符合 "%S" 的項目
-# Firebu and should not be installed together with Firebug 1.10+
-# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
-confirmation.Reset_All_Firebug_Options=您確定要重設 Firebug 全部選項為預設值?
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-confirmation.Edit_CSS_Source=已編輯的 CSS 將被取消。\n確定要編輯原始碼?
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-warning.Console_must_be_enabled=必須啟用主控台
-warning.Command_line_blocked?=命令列被阻擋了嗎?
-warning.dollar_change=主控台命令列函式 $() 的定義已由 $=getElementById(id) 改為 $=querySelector(selector),您可嘗試以 $("#%S") 取代。
-message.Reload_to_activate_window_console=重新載入以啟用主控台
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selection side panel.
-# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
-# in the CSS panel.
-message.sourceNotAvailableFor=重新載入頁面以取得資源
-message.The_resource_from_this_URL_is_not_text=這個 URL 的 原始碼不是文字
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-firebug.history.Go_back_to_this_panel=返回到這個面板
-firebug.history.Stay_on_this_panel=停在這個面板
-firebug.history.Go_forward_to_this_panel=前進到這個面板
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-firebug.history.Go_back=返回
-firebug.history.Go_forward=前進
-# for the clicked rule selector. Elements are displayed in the side panel.
-# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
-# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
-# explanantion coming from the platform.
-script.warning.inactive_during_page_load=載入頁面時未啟用 Script 面板
-script.suggestion.inactive_during_page_load2=<a>重新載入</a>以查看所有資源
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-script.warning.javascript_not_enabled=Javascript 未啟用
-script.suggestion.javascript_not_enabled=見 Firefox > 工具 > 選項 > 內容 > 啟用 Javascript
-# perftiming.bars.label=Document phases start and elapsed time relative to the document load:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-script.button.enable_javascript=啟用 JavaScript 並重新載入
-# for detailed performance timing info table.
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-script.warning.all_scripts_filtered=所有 script 都被過濾了
-script.suggestion.all_scripts_filtered=檢查工具列的 Script 過濾設定,或選擇「顯示 Chrome 原始碼」
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-script.warning.no_system_source_debugging=System sources can't be debugged
-script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug system sources. See <a>issue 5110</a> for the reason.
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-script.warning.no_javascript=這個頁面沒有 Javascript
-script.suggestion.no_javascript2=若 <script> 標籤有「type」屬性,其值應該為 "text/javascript" 或 "application/javascript",且指令碼需要是可解析(語法正確)的。
-# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
-# Message displayed in the Script panel, if the page is opened in different tabs/windows and
-# the debugger is already halted at a breakpoint inside another tab/window.
-# The suggestion message represents an advice how to solve the problem.
-script.warning.debugger_active=Debugger 已啟用
-script.suggestion.debugger_active=Debugger 已於其他頁面的中斷點暫停。
-script.button.Go_to_that_page=前往該頁面
-script.warning.debugger_not_activated=Debugger 未啟動
-script.suggestion.debugger_not_activated=Debugger 未啟動
-# LOCALIZATION NOTE (script.Script_panel_must_be_enabled): Adds a parenthetical note to a tooltip
-# about the Script panel having to be enabled.
-# %S = original message
-# example: "Profile JavaScript execution time (Script panel must be enabled)"
-script.Script_panel_must_be_enabled=%S (必須啟用 Script 面板)
-# firebug.dtd
-firebug.Firebug=Firebug
-firebug.Close=關閉
-firebug.View=檢視
-firebug.Help=說明
-firebug.Run=執行
-firebug.Copy=複製
-firebug.History=歷史
-firebug.Run_the_entered_command=執行輸入的指令
-firebug.Clear_the_Command_Editor=清空指令編輯器
-firebug.Copy_the_script_as_a_bookmarklet=將 script 複製為 bookmarklet
-firebug.Insert_a_previously_entered_command=插入上一個輸入的指令
-firebug.AlwaysOpenInWindow=總是開啟於新視窗
-firebug.OpenWith=以編輯器開啟
-firebug.menu.tip.Open_With=使用外部編輯器開啟內容
-firebug.Permissions=網站...
-firebug.Configure_Editors=編輯器設定
-script.tip.Script_Type=依 script 類型過濾
-script.tip.Script_Filter_Static=只顯示和頁面一起載入的 script
-script.tip.Script_Filter_Evals=顯示和頁面一起載入的,或由 eval() 建立的 script
-script.tip.Script_Filter_Events=顯示和頁面一起載入、由 eval() 建立的 script,以及事件處理函數
-script.tip.Script_Filter_All=Display all kinds of scripts
-# LOCALIZATION NOTE (firebug.labelWithShortcut):
-# Label for an item incl. assigned keyboard shortcut
-# example: Continue (F8)
-# example: Step Out (Shift+F11)
-firebug.labelWithShortcut=%S (%S)
-# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
-# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
-# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
-# Labels used for debugger options available in the Script panel.
-script.Rerun=Rerun
-script.tip.Rerun=重新執行目前函數呼叫堆疊
-script.Continue=Continue
-script.tip.Continue=繼續執行 JavaScript
-script.Step_Over=Step Over
-script.tip.Step_Over=執行下一個命令
-script.Step_Into=Step Into
-script.tip.Step_Into=執行下一個命令並跳入函數內
-script.Step_Out=Step Out
-script.tip.Step_Out=執行整個函數內容並返回其 caller
-firebug.RunUntil=Run to This Line
-script.tip.Run_Until=執行到這一行為止的 JavaScript
-# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
-# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
-# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
-# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
-firebug.Inspect=觀察
-firebug.InspectElement=觀察元素
-firebug.InspectElementWithFirebug=使用 Firebug 觀察元素
-firebug.BreakOnErrors=發生錯誤時中斷
-firebug.InspectTooltip=點選頁面中的任何元素開始觀察
-firebug.EditHTMLTooltip=編輯 HTML
-firebug.Profile=Profile
-firebug.Clear=清除
-firebug.ClearConsole=清空主控台
-firebug.ClearTooltip=清空主控台
-# editors.dtd
-editors.Configured_Firebug_Editors=設定 Firebug 編輯器
-editors.Editor=編輯器
-editors.Executable=執行檔
-editors.Launch_Arguments=啟動參數
-editors.Add=新增
-editors.Remove=移除
-editors.Change=變更
-editors.Move_Up=向上移
-editors.Close=關閉
-editors.Browse=瀏覽...
-changeEditor.Editor_Configuration=編輯器設定
-changeEditor.Name=名稱:
-changeEditor.Executable=執行檔:
-changeEditor.CmdLine=參數:
-changeEditor.Supplied_arguments=Firebug 提供的參數:
-changeEditor.URL_of_file=檔案的 URL(若沒有 %url,預設會加上 %file)
-changeEditor.Path_to_local_file=本地端檔案的路徑(或暫存檔的路徑)
-changeEditor.Line_number=行號(若有的話)
-changeEditor.Invalid_Application_Path=不正確的應用程式路徑
-changeEditor.Application_does_not_exist=指定的應用程式不存在!
-# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
-# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
-# Used in the CSS panel for the Edit button.
-firebug.Edit=編輯
-firebug.css.sourceEdit=原始碼編輯
-firebug.css.sourceEdit.tooltip=文字區域編輯,使用瀏覽器載入的樣式表原始碼
-firebug.css.liveEdit=即時編輯
-firebug.css.liveEdit.tooltip=文字區域編輯,使用瀏覽器解析後的 CSS 結果
-firebug.EditCSSTooltip=編輯此樣式表
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in the Console panel when the private browsing mode is on.
-# (in Firefox 4+ it's 'Start Private Browsing')
-firebug.activation.privateBrowsingMode=在私密瀏覽模式中不會記錄任何網站
-# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
-# Label used within Script panel's options menu. Represents an option, that can be used
-# to switch of the break notifications.
-firebug.breakpoint.showBreakNotifications=顯示中斷點提示通知
-firebug.breakpoint.tip.Show_Break_Notifications=「在 ... 時中斷」功能或 debugger; 關鍵字造成 JavaScript 停止執行時,顯示通知框
-# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
-# Message displayed in a break notification popup next to a checkbox.
-# Includes a link enclosed in <a> and </a> to open the panel's options menu.
-firebug.breakpoint.doNotShowBreakNotification2=您可以在<a>面板的分頁選單</a>停用/啟用中斷點提示通知。
-# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
-# Message displayed in a break notification popup when break on debugger; keyword happens.
-# The keyword can be disabled by creating a disabled breakpoint on the same line.
-# The other label is used for a tooltip on the action button.
-firebug.bon.cause.disableDebuggerKeyword2=按下「停用」按鈕,以一個停用的中斷點覆蓋 'debugger' 關鍵字
-firebug.bon.tooltip.disableDebuggerKeyword2=新增已停用中斷點
-# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
-# This feature needs the Script panel enabled in order to work.
-firebug.bon.scriptPanelNeeded=(需要啟用 Script 面板才能使用此功能)
-# LOCALIZATION NOTE (firebug.dom.noChildren):
-# Message displayed in the DOM panel in cases, in which there are no children objects
-# and so nothing to display.
-firebug.dom.noChildren2=沒有子物件
-# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
-# more elements then displayed on the screen. "..." is automatically appended.
-firebug.reps.more=更多
-# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
-# a reference to itself (a cycle).
-firebug.reps.reference=循環參考
-# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
-# Label used in the DOM panel for local/session/global storage.
-# It's informing the user about the number of items in the storage.
-# %1 = Number of storage items
-# example: 1 item in Storage
-# example: 2 items in Storage
-firebug.storage.totalItems=Storage 中有 %S 個項目
-# LOCALIZATION NOTE (firebug.reps.historyEntries): Semicolon list of plural forms.
-# Displayed when evaluating "history" - informs the user about the number of entries in history.
-# %1 = Number of history entries
-firebug.reps.historyEntries=%1$S 個 history 項目;%1$S 個 history 項目
-# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
-# Label used in the header of the output of the console.table() method inside the Console panel,
-# if an object is passed into it.
-firebug.reps.table.ObjectProperties=物件屬性
-# LOCALIZATION NOTE (firebug.completion.empty):
-# Label used in the command line by the auto-complete function.
-# Displayed, if there are no possible completions.
-firebug.completion.empty=(沒有可用的自動完成項目)
-# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
-# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
-# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
-# for moz-filedata (HTML5),
-# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
-firebug.failedToPreviewObjectURL=URL 物件可能已被 revokeObjectURL 方法取消。
-firebug.failedToPreviewImageURL=讀取 URL 失敗。
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
-# Message logged into the Console panel when memory profiler session starts.
-firebug.Memory_Profiler_Started=Memory Profiler 已啟動
-# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
-# Title for a group (logged into the Console panel), that contains a list of new objects
-# allocated within memory profiler session.
-firebug.Objects_Added_While_Profiling=Profile 進行中,物件已加入
-# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
-# Message used within the Console panel when the memory profiler session is finished.
-firebug.Memory_Profiler_Results=Memory Profiler 結果
-# LOCALIZATION NOTE (firebug.Entire_Session):
-# Label used within memory profiler results to mark summary information for entire session.
-firebug.Entire_Session=整個 Session
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if a Console API is used without any argument.
-console.msg.nothing_to_output=(沒有結果可顯示)
-# LOCALIZATION NOTE (console.msg.nothing_to_output):
-# Used by the console panel if an empty string is passed into a Console API.
-console.msg.an_empty_string=(空字串)
-# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
-# A message and labels used when Firecookie is detected. This extension has been integrated with
-# Firebu and should not be installed together with Firebug 1.10+
-cookies.legacy.firecookie_detected=偵測到 Firecookie 附加元件,此元件已整合進 Firebug 1.10,請移除 Firecookie 以避免衝突。\n\n您必須重新啟動才能完成移除。
-cookies.legacy.uninstall=移除
-cookies.legacy.uninstall_and_restart=移除並重新啟動
-# LOCALIZATION NOTE (console.cmd.help_title, console.cmd.help_title_desc):
-console.cmd.help_title=命令列 API
-console.cmd.help_title_desc=按下 F1 開啟 Firebug 說明
-# LOCALIZATION NOTE (console.cmd.tip_title, console.cmd.tip_title_desc):
-console.cmd.tip_title=命令列 Tips
-console.cmd.tip_title_desc=學習命令列的技巧提示與竅門
-# LOCALIZATION NOTE (console.cmd.tip.javascript, console.cmd.tip.closures):
-# Description for Command Line tips that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.tip.javascript=命令列可執行任何合法的 JavaScript 敘述句,例如:
-console.cmd.tip.closures=要存取 closure 中的變數,使用 '.%' 語法(見<a>詳細</a>)。例如:
-# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
-# in the the Console panel if the user types "help" into the command line.
-console.cmd.help.$=傳回符合 id 的一個元素。
-console.cmd.help.$$=傳回符合 CSS 選擇器的元素陣列。
-console.cmd.help.$x=傳回符合 XPath 表達式的元素陣列。
-console.cmd.help.dir=顯示條列物件所有屬性的互動清單。 此功能與 DOM 面板中顯示的相同。
-console.cmd.help.dirxml=顯示 HTML 或 XML 元素的原始樹結構。 此功能與 HTML 面板中顯示的相同,可點選任意節點,前往 HTML 面板中檢測。
-console.cmd.help.cd=預設情形下,命令列表達式皆相對於頁面中的頂層 window 作用,cd() 讓您切換至頁面其他 frame 的 window。
-console.cmd.help.clear=清除主控台。
-console.cmd.help.copy=複製參數到剪貼簿,可以是函數的回傳值或物件。
-console.cmd.help.inspect=在適合的面板檢測物件。 可於第二個引數指定面板,可用的面板名稱為 "html"、"stylesheet"、"script" 和 "dom"。
-console.cmd.help.keys=傳回物件所有屬性「名稱」的陣列。
-console.cmd.help.values=傳回物件所有屬性「值」的陣列。
-console.cmd.help.debug=在函數的第一行增加一個中斷點。
-console.cmd.help.undebug=移除位於函數第一行的中斷點。
-console.cmd.help.monitor=開始記錄所有對此函數的呼叫。
-console.cmd.help.unmonitor=關閉對此函數所有呼叫的記錄。
-console.cmd.help.monitorEvents=開始記錄所有發送到此物件的事件。 第二個參數可指定特定事件或事件類型,可用的事件類型為 "composition"、"contextmenu"、"drag"、"focus"、"form"、"key"、"load"、"mouse"、"mutation"、"paint"、"scroll"、"text"、"ui"、"xul" 和 "clipboard"。
-console.cmd.help.unmonitorEvents=關閉對發送至此物件所有事件的記錄。 第二個參數可指定關閉哪些事件或事件類型的記錄。
-console.cmd.help.profile=開啟 JavaScript profiler。 第二個參數可指定顯示於 profile 報告上的標題文字。
-console.cmd.help.profileEnd=關閉 JavaScript profiler 並顯示其結果。
-console.cmd.help.table=以表格排版記錄資料。需要一個 table-like(陣列、多個陣列,或成列的物件)資料必要參數。 第二個參數可指定要列出的欄位或屬性。
-console.cmd.help.$0=表示檢測器最後選取的元素。
-console.cmd.help.$1=表示檢測器倒數第二個選取的元素。
-console.cmd.help.$2=表示檢測器倒數第三個選取的元素。
-console.cmd.help.$3=表示檢測器倒數第四個選取的元素。
-console.cmd.help.$4=表示檢測器倒數第四個選取的元素。
-console.cmd.help.$n=傳回最後 5 個檢測器選取的元素之一。此方法需要一個 index(由 0 開始)必要參數。
-console.cmd.help.$_=表示命令列最後運行式的結果。
-console.cmd.help.help=顯示所有可用指令的說明。
-console.cmd.help.include=引入遠端指令碼。
-console.cmd.help.$p=右鍵點選一個 JavaScript 物件/值,再點「在命令列中使用」,此命令列變數就會被設為該值。
-console.cmd.help.getEventListeners=傳回含所有直接註冊在元素(或其它 event target)上之 event listener 的物件。
-# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
-# if registered command doesn't have help URL associated and the user clicks on the command name.
-# List of command names is displayed if you type "help" (without quotes) into the command line.
-console.cmd.helpUrlNotAvailable=無法取得此命令的說明網頁。
-# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
-# for performance.timing graph.
-# The graph is displayed in the Console when the user executes "performance.timing" expression.
-perftiming.bars.label=文件載入各階段的開始與經過時間:
-perftiming.events.label=相對於文件載入的事件計時:
-# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
-# for detailed performance timing info table.
-perftiming.details_title=Perfomance Timing
-perftiming.details_title_desc=計時詳細
-# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
-# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
-# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
-# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
-# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
-# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
-# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
-# perftiming.unloadEventStart): Description for performance timing field. Displayed when
-# the user executes 'performance.timing' in the command line.
-perftiming.connectEnd=伺服器連線完成的時間。
-perftiming.connectStart=伺服器連線正要開始的時間。
-perftiming.domComplete=文件整備正要完成的時間。
-perftiming.domContentLoadedEventEnd=DOMContentLoaded 事件完成的時間。
-perftiming.domContentLoadedEventStart=DOMContentLoaded 正要開始的時間。
-perftiming.domInteractive=整備狀態(readiness)正要轉為 "interactive" 的時間。
-perftiming.domLoading=整備狀態正要轉為 "loading" 的時間。
-perftiming.domainLookupEnd=域名查詢完成的時間。
-perftiming.domainLookupStart=域名查詢正要開始的時間。
-perftiming.fetchStart=資源取得(fetch)正要開始的時間。
-perftiming.loadEventEnd=load 事件完成的時間。
-perftiming.loadEventStart=load 事件正要發動的時間。
-perftiming.navigationStart=前一個文件已開始 unload 的時間。
-perftiming.redirectCount=最後一個非重新導向後,重新導向的次數。
-perftiming.redirectEnd=最後一個重新導向回應完成的時間。
-perftiming.redirectStart=引起重新導向的取得動作(fetch)之開始時間。
-perftiming.requestStart=正要開始伺服器請求的時間。
-perftiming.responseEnd=回應或連線完成的時間。
-perftiming.responseStart=開始接收回應的時間。
-perftiming.unloadEventEnd=前一個文件完成 unload 的時間。
-perftiming.unloadEventStart=unload 事件正要發動的時間。
+Firebug=Firebug
+# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.nn
+# %S Title of the associated web page.nn
+# examples: Firebug - Googlenn
+WindowTitle=Firebug - %S
+# Panel titlesnn
+Panel-console=主控台
+panel.tip.console=檢視主控台訊息或執行 JavaScript 命令
+Panel-net=網路
+panel.tip.net=分析網路流量
+Panel-html=HTML
+panel.tip.html=檢測或調整 DOM 節點
+Panel-stylesheet=CSS
+panel.tip.stylesheet=檢測或調整 CSS 樣式表
+Panel-script=Script
+panel.tip.script=JavaScript 除錯
+Panel-dom=DOM
+panel.tip.dom=檢測或調整 DOM 屬性
+Panel-css=樣式
+panel.tip.css=檢測或調整所選 DOM 節點的 CSS 規則
+Panel-computed=計算樣式
+panel.tip.computed=檢測或調整所選 DOM 節點的 CSS 計算值
+Panel-layout=排版
+panel.tip.layout=檢測或調整所選 DOM 節點的排版資料
+Panel-domSide=DOM
+panel.tip.domSide=檢測或調整所選 DOM 節點的 DOM 屬性
+Panel-watches=監看
+panel.tip.watches=檢測目前堆疊或已定義監看中的 JavaScript 變數
+Panel-breakpoints=中斷點
+panel.tip.breakpoints=調整中斷點設定
+Panel-callstack=堆疊
+panel.tip.callstack=觀察目前的 JavaScript 呼叫堆疊
+Panel-scopes=範圍
+firebug.DetachFirebug=開啟 Firebug 到新視窗
+firebug.AttachFirebug=將 Firebug 嵌入瀏覽器視窗
+# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.nn
+# If there is no Firebug translation for the current browser locale, this valuenn
+# will be used instead of the one in chrome://global/locale/intl.propertiesnn
+# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsnn
+pluralRule=0
+# LOCALIZATION NOTE (plural.Total_Firebugs2): Semi-colon list of plural forms.nn
+# See: http://developer.mozilla.org/en/docs/Localization_and_Pluralsnn
+# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.nn
+# Displays number of pages with Firebug activated.nn
+# #1 number of Firebug instances activatednn
+# example: 2 Total Firebugsnn
+plural.Total_Firebugs2=共 %1$S 個 Firebug
+# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'nn
+# menu (available on Firebug's tab bar).nn
+# Console panel options.nn
+startbutton.tip.deactivated=未啟動
+# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,nn
+# message, etc. within a source of a web page.nn
+# #1 File name, #2 Line numbernn
+# examples: somePage.htm (line 64)nn
+# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.nn
+panel.status=%S: %S
+inBrowser=在瀏覽器中
+minimized=最小化的
+enablement.for_all_pages=對所有網頁
+enablement.on=啟用
+enablement.off=關閉
+enablement.Panel_activation_status=面板啟動狀態:
+none=關閉的
+Firebug_-_inactive_for_current_website=Firebug - 對目前網站未啟動
+Activate_Firebug_for_the_current_website=對目前網站啟動 Firebug
+Minimized=最小化的
+Minimize_Firebug=最小化 Firebug
+On_for_all_web_pages=對所有網頁啟用
+firebug.menu.tip.On_for_all_Web_Sites=對所有網站都預設啟動 Firebug
+firebug.menu.Clear_Activation_List=清除啟用條件列表
+firebug.menu.tip.Clear_Activation_List=清除可啟動 Firebug 的網站的列表
+firebug.menu.Detached=分離
+firebug.menu.tip.Detached=將 Firebug 分離至獨立視窗
+firebug.menu.Top=頂端
+firebug.menu.tip.Top=將 Firebug 置於使用者代理視窗頂端
+firebug.menu.Bottom=底端
+firebug.menu.tip.Bottom=將 Firebug 置於使用者代理視窗底端
+firebug.menu.Left=左邊
+firebug.menu.tip.Left=將 Firebug 置於使用者代理視窗左端
+firebug.menu.Right=右端
+firebug.menu.tip.Right=將 Firebug 置於使用者代理視窗右端
+firebug.uiLocation=Firebug UI 位置
+firebug.menu.tip.UI_Location=Firebug 使用者介面的位置
+# For example, right clicking on an element in the HTML panel offers an action to inspectnn
+# clicked element in the DOM panel (tab).nn
+annotations.confirm.clear=你要清除 Firebug 對所有網站的 annotation 清單嗎?
+# #1 Target panel titlenn
+# examples: Inspect in DOM Tabnn
+firebug_options=Firebug 選項
+# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebugnn
+# do not translate.nn
+firebug.Show_All_Panels=顯示所有面板
+console.option.Show_Command_Line=顯示命令列
+console.option.tip.Show_Command_Line=焦點移至命令列/顯示命令列彈出視窗
+# #1 jsdIScript.tagnn
+ShowJavaScriptErrors=顯示 JavaScript 錯誤
+console.option.tip.Show_JavaScript_Errors=在主控台記錄 JavaScript 錯誤訊息
+ShowJavaScriptWarnings=顯示 JavaScript 警告
+console.option.tip.Show_JavaScript_Warnings=在主控台記錄 JavaScript 警告訊息
+ShowCSSErrors=顯示 CSS 錯誤
+console.option.tip.Show_CSS_Errors=在主控台記錄 CSS 錯誤訊息
+ShowXMLHTMLErrors=顯示 XML/HTML 錯誤
+console.option.tip.Show_XML_HTML_Errors=在主控台記錄 XML 與 HTML 錯誤訊息
+ShowStackTrace=發生錯誤時,顯示堆疊追溯
+console.option.tip.Show_Stack_Trace=顯示錯誤訊息的堆疊追溯資訊
+ShowXMLHttpRequests=顯示 XMLHttpRequest
+console.option.tip.Show_XMLHttpRequests=在主控台記錄 XMLHttpRequest
+ShowChromeErrors=顯示 Chrome 錯誤
+console.option.tip.Show_System_Errors=在主控台記錄程式或附加元件的內部錯誤訊息
+ShowChromeMessages=顯示 Chrome 訊息
+console.option.tip.Show_System_Messages=在主控台記錄程式或附加元件的內部訊息
+ShowNetworkErrors=顯示網路錯誤
+console.option.tip.Show_Network_Errors=在主控台記錄網路連線錯誤訊息
+JavascriptOptionsStrict=嚴格的警告(犧牲效能)
+console.option.tip.Show_Strict_Warnings=將嚴格的警告也記錄到主控台中
+Command_History=命令歷史
+console.option.Show_Command_Editor=顯示命令編輯器
+console.option.tip.Show_Command_Editor=切換至命令編輯器
+commandLineShowCompleterPopup=顯示自動完成彈出視窗
+console.option.tip.Show_Completion_List_Popup=顯示命令自動完成視窗
+Assertion=Assertion 失敗
+# HTML panel context menu items.nn
+# Quick Info Boxnn
+# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resumenn
+# button that are used when the HTML panel is currently selected. The button allows stoppingnn
+# JS execution when DOM of the current page is modified.nn
+Line=%S(%S 行)
+LineAndCol=%S(第 %S 行、%S 列)
+InstanceLine=%S #%S(%S 行)
+StackItem=%S (%S 行 %S)
+SystemItem=<System>
+# LOCALIZATION NOTE (html.label.Expand/Contract_All): Used within the HTML for a context nn
+# menu item. The user can expand/contract the element together with all its children to nn
+# quickly see the entire hierarchical structure or collapse it.nn
+# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allowsnn
+# editing an existing HTML element attribute.nn
+panel.Inspect_In_Panel=在 %S 面板檢測
+panel.tip.Inspect_In_Panel=切換至 %S 面板審視該物件
+NoName=(沒有名稱)
+# #1 Name of the clicked attribute.nn
+# examples: Edit Attribute "onclick"...nn
+# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allowsnn
+jsdIScript=jsdIScript %S
+# deleting an existing HTML element attribute.nn
+# #1 Name of the clicked attribute.nn
+# examples: Delete Attribute "onclick"...nn
+ShowFullText=顯示完整文字
+html.option.tip.Show_Full_Text=不要省略元素內容
+# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.nn
+# that has been inherited. Used in the Style side panel (under HTML panel).nn
+# examples: Inherited from table.tabViewnn
+ShowWhitespace=顯示空白字元
+html.option.tip.Show_Whitespace=顯示節點中的空白字元
+# LOCALIZATION NOTE (css.EmptyStyleSheet): This description is displayed in the CSS panelnn
+# in case there are no stylesheets attached to the current page.nn
+ShowComments=顯示註解
+html.option.tip.Show_Comments=顯示註解節點
+# The text between <a> and </a> is displayed as a link.nn
+# LOCALIZATION NOTE (css.EmptyElementCSS2): This description is displayed in the Style side panelnn
+# (available within the HTML panel) in case there are no CSS rules for the selected element.nn
+html.option.Show_Entities_As_Symbols=將 Entity 顯示為特殊符號
+html.option.tip.Show_Entities_As_Symbols=將 XML entity 以符號型態顯示
+html.option.Show_Entities_As_Names=將 Entity 顯示為名稱
+html.option.tip.Show_Entities_As_Names=將 XML entity 以名稱顯示
+html.option.Show_Entities_As_Unicode=將 Entity 顯示為 Unicode
+html.option.tip.Show_Entities_As_Unicode=將 XML entity 以 Unicode 型態顯示
+# The text between <a> and </a> is displayed as a link.nn
+# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.nn
+# Allows to edit an existing CSS rule property.nn
+HighlightMutations=強調變更
+html.option.tip.Highlight_Mutations=上色顯示節點中的變更
+# %S Name of the clicked propertynn
+# examples: Edit "background-color"...nn
+# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.nn
+ExpandMutations=展開變更
+html.option.tip.Expand_Mutations=展開樹狀結構以顯示變更的節點
+# Allows to disable an existing CSS rule property.nn
+# %S Name of the clicked propertynn
+# examples: Disable "background-color"nn
+ScrollToMutations=捲動到顯示變更
+html.option.tip.Scroll_To_Mutations=捲動樹狀結構,直到可以看見變更部分
+# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.nn
+# Allows to delete an existing CSS rule property.nn
+# %S Name of the clicked propertynn
+ShowQuickInfoBox=顯示快速資訊框
+inspect.option.tip.Show_Quick_Info_Box=以浮動資訊面板顯示檢測中的元素
+# examples: Delete "background-color"nn
+# Console context menu labels.nn
+# LOCALIZATION NOTE do not translate, no longer used(?)nn
+ShadeBoxModel=Box Model 著色
+inspect.option.tip.Shade_Box_Model=將 box model 各個不同部分上色顯示
+ScrollIntoView=捲動到顯示
+html.tip.Scroll_Into_View=捲動頁面,直到可以看見元素
+NewAttribute=新屬性...
+html.tip.New_Attribute=在元素上增加一個新屬性
+html.Edit_Node=編輯 %S...
+html.Node=節點
+html.tip.Edit_Node=以全文編輯器編輯 %S
+DeleteElement=刪除元素
+html.Delete_Element=將元素由樹中刪除
+DeleteNode=刪除節點
+html.Delete_Node=將節點由樹中刪除
+# Breakpoints side panelnn
+quickInfo=快速資訊
+computedStyle=計算樣式
+# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttonsnn
+# within balloon popup dialog. This dialog appears when debugger halts at a breakpoint or atnn
+# a 'debugger' keyword.nn
+html.Break_On_Mutate=在 DOM 變更時中斷
+html.Disable_Break_On_Mutate=停用 在 DOM 變更時中斷
+html.label.Break_On_Text_Change=在文字變更時中斷
+html.label.HTML_Breakpoints=HTML 中斷點
+html.label.Break_On_Attribute_Change=在屬性變更時中斷
+html.tip.Break_On_Attribute_Change=元素中有任何屬性變更時,停止執行 JavaScript
+html.label.Break_On_Child_Addition_or_Removal=在新增或移除子節點時中斷
+html.tip.Break_On_Child_Addition_or_Removal=元素的子節點增加/移除時,停止執行 JavaScript
+html.label.Break_On_Element_Removal=在移除元素時中斷
+html.tip.Break_On_Element_Removal=元素被移除時,停止執行 JavaScript
+# Continue: allows to resume the debuggernn
+# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source.nn
+# Script panelnn
+# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):nn
+html.label.Expand/Contract_All=全部展開/關閉
+html.tip.Expand/Contract_All=遞迴展開/關閉所有子節點
+# Labels used to describe layout properties a the selected HTML element.nn
+# Used in the Layout side panel under HMTL panel.nn
+dom.scopeName=(closure)
+# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side panelnn
+# under HTML panel.nn
+dom.scopeParentName=(parent scope)
+# Net panelnn
+# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)nn
+dom.tip.scopeName=使用 <func>.%closureVariable 可以在命令列存取
+# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,nn
+# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,nn
+# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):nn
+dom.tip.scopeMemberName=使用 <func>.%S 可以在命令列存取
+# Labels and tooltips for a headers displayed on top of the Net panel.nn
+# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.nn
+firebug.reps.declarativeScope=[declarative scope]
+firebug.reps.objectScope=[object scope]
+firebug.reps.withScope=[with scope]
+# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel's contextnn
+# menu for breaking on a XHR.nn
+firebug.reps.optimizedAway=(optimized away)
+# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in thenn
+# Net panel's Headers tab (displayed if you expand a network request). The label is usednn
+# for a button that switches the view between "show raw source code" and "pretty formated headernn
+firebug.reps.element.attribute_value=attribute value
+firebug.reps.element.property_value=property value
+# values".nn
+# LOCALIZATION NOTE (net.filter.Media): Label for net panel filter (used on the Net panel toolbar)nn
+# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info aboutnn
+dom.label.breakOnPropertyChange=在屬性變更時中斷
+dom.tip.Break_On_Property_Change=這個屬性變更時,停止執行 JavaScript
+# a network request (displayed when a net panel entry is expanded). The content ofnn
+# this tab displays sent data (related to a HTTP send method).nn
+dom.disableBreakOnPropertyChange=停用 在屬性變更時中斷
+dom.label.DOM_Breakpoints=DOM 中斷點
+# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):nn
+# Label used in the Net panel for detailed info about a network request (displayednn
+# when a net panel entry is expanded)nn
+# LOCALIZATION NOTE (jsonviewer.sort, jsonviewer.do_not_sort): Label (verb) used in thenn
+EditAttribute=編輯屬性「%S」...
+html.tip.Edit_Attribute=編輯這個元素「%S」屬性的值
+# Net panel for JSON responses Allows to sort alphabetically.nn
+# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net panelnn
+# (expand an entry in the panel and select Headers tab).nn
+# LOCALIZATION NOTE (plural.Limit_Exceeded2): Semi-colon list of plural forms.nn
+DeleteAttribute=刪除屬性「%S」
+html.tip.Delete_Attribute=刪除這個元素的「%S」屬性
+# A message displayed in the Net panel when some entries must be removed since maximum numbernn
+# of entries has been reached.nn
+# #1 the number of entries removednn
+InheritedFrom=繼承自
+SothinkWarning=Sothink SWF Catcher 附加元件造成 Firebug 無法正常運作。<br><br>請閱讀 <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">Firebug FAQ 的這個項目</a>。
+# example: Firebug's log limit has been reached. 150 entries not shown.nn
+# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limitnn
+css.fontFamilyPreview=The quick brown fox jumps over the lazy dog. 0123456789
+# has been reached. Informing the user what preferencee should be changed to modify the limit.nn
+# %S Name of a preference.nn
+# examples: In order to change the limit modify: firebug.extensions.console.logLimitnn
+css.EmptyStyleSheet=沒有樣式規則。您可以<a>新增規則</a>。
+# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.nn
+# (result of javascript profiler tool). Represents a verb.nn
+# LOCALIZATION NOTE (plural.Profile_Time2): Semi-colon list of plural forms.nn
+css.EmptyElementCSS=這個元素沒有任何樣式規則。您可以為它<a>新增規則</a>。
+EditStyle=編輯元素樣式...
+style.tip.Edit_Style=編輯元素的行內樣式
+AddRule=新增規則...
+css.tip.AddRule=為這個元素新增一條規則
+NewRule=新規則...
+css.tip.New_Rule=新增規則
+# Used as a caption for reported profile info (result of javascript profiler tool).nn
+# #1 number of millisecondsnn
+# #2 number of calls (plural)nn
+# example: (#1ms, #2 calls)nn
+css.Delete_Rule=刪除「%S」
+css.tip.Delete_Rule=刪除「%S」和它的所有屬性
+# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report headernn
+# (name of a report column). In order to see this, select the Console panel start profilingnn
+# by clicking the Profile button and stop it by clicking again. The report is logged into thenn
+css.menu.Edit_Media_Query=編輯 Media Query...
+css.menu.tip.Edit_Media_Query=編輯指派給這條規則的 media query
+NewProp=新屬性...
+css.tip.New_Prop=增加新屬性至目前規則
+# console panel. Make sure Script panel is enabled.nn
+# Support for clipboard actions.nn
+# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Scriptnn
+# panel when clicking a function object.nn
+EditProp=編輯「%S」...
+css.tip.Edit_Prop=編輯屬性「%S」的值
+# %S Name of the functionnn
+# Log Calls to "getData"nn
+# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): A tooltip used for a button on mainnn
+# Firebug toolbar. This button allows to open the command line even within other panels.nn
+DisableProp=停用「%S」
+css.tip.Disable_Prop=停用「%S」屬性
+# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console panelnn
+# if specific method is not supported.nn
+# %S Name of a not supported method.nn
+# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console panelnn
+DeleteProp=刪除「%S」
+css.tip.Delete_Prop=刪除「%S」屬性
+# when a not supported method is used on the command line.nn
+BreakOnThisError=發生此錯誤時中斷
+console.menu.tip.Break_On_This_Error=此錯誤發生時,立刻停止執行 JavaScript
+BreakOnAllErrors=發生任何錯誤時中斷
+console.menu.tip.Break_On_All_Errors=有任何錯誤發生時,立刻停止執行 JavaScript
+# %S Name of a not supported method.nn
+# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):nn
+# Tooltip for the "Break on... " button used when the Console panel is selected.nn
+TrackThrowCatch=追蹤 Throw/Catch
+script.option.tip.Track_Throw_Catch=即使已被 try/catch 捕捉,仍要追蹤例外
+UseLastLineForEvalName=以原始碼的最後一行作為 eval() 的名稱
+UseMD5ForEvalName=以 MD5 作為 eval() 的名稱
+# LOCALIZATION NOTE (console.Use_TAB_and_arrow_keys) nn
+Breakpoints=中斷點
+ErrorBreakpoints=錯誤中斷點
+LoggedFunctions=已記錄的函式
+EnableAllBreakpoints=啟用所有中斷點
+breakpoints.option.tip.Enable_All_Breakpoints=啟用所有列出的中斷點
+DisableAllBreakpoints=停用所有中斷點
+breakpoints.option.tip.Disable_All_Breakpoints=停用所有列出的中斷點
+ClearAllBreakpoints=移除所有中斷點
+breakpoints.option.tip.Clear_All_Breakpoints=移除所有列出的中斷點
+ConditionInput=此表達式為真 (true) 時才停在這個中斷點:
+# Top of the completion popup in the command linenn
+# Console strings used when JavaScript is not availablenn
+# LOCALIZATION NOTE (commandline.disabledForXMLDocs): This message is displayed in the consolenn
+breakpoints.Remove_Breakpoint=移除中斷點
+breakpoints.tip.Remove_Breakpoint=移除這個中斷點
+breakpoints.Disable_Breakpoint=停用中斷點
+breakpoints.tip.Disable_Breakpoint=停用這個中斷點
+breakpoints.Enable_Breakpoint=啟用中斷點
+breakpoints.tip.Enable_Breakpoint=啟用這個中斷點
+# in cases when the current page is an XML document. The text between <a> and </a> is a link.nn
+# that cause to switch into HTML rendering of the document.nn
+# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,nn
+# net.sizeinfo.Total_Received, net.sizeinfo.Including_Headers):nn
+# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mousenn
+script.balloon.Continue=繼續
+script.balloon.Disable=停用
+ScriptsFilterStatic=顯示靜態 Script
+ScriptsFilterEval=顯示靜態與 eval Script
+ScriptsFilterEvent=顯示靜態與事件 Script
+ScriptsFilterAll=顯示靜態、事件與 eval Script
+ScriptsFilterStaticShort=靜態
+ScriptsFilterEvalShort=eval
+ScriptsFilterEventShort=事件
+ScriptsFilterAllShort=全部
+# over a Size displayed within the Net panel. 'Total Sent' and 'Total Received' info includesnn
+# even sent and received heades size.nn
+# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Netnn
+# panel (inside the Post tab of an expanded request entry). The message informs the user thatnn
+callstack.Expand_All=全部展開
+callstack.tip.Expand_All=展開所有堆疊框架函數
+callstack.Collapse_All=全部收合
+callstack.tip.Collapse_All=收合所有堆疊框架函數
+# posted data reached Firebug's size limit and only part of it is displayed in the UI.nn
+# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):nn
+callstack.Execution_not_stopped=堆疊框架將在指令停止執行時顯示
+# Labels for Net panel's options.nn
+# LOCALIZATION NOTE (net.option.Show_BF_Cache_Responses, net.option.tip.Show_BF_Cache_Responses):nn
+# Net panels's option. If set to true, the net panel displays also response coming fromnn
+# BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCachenn
+ShowUserProps=顯示使用者定義的屬性
+dom.option.tip.Show_User_Props=顯示使用者定義物件的屬性
+ShowUserFuncs=顯示使用者定義的函式
+dom.option.tip.Show_User_Funcs=顯示使用者定義物件的方法
+ShowDOMProps=顯示 DOM 屬性
+dom.option.tip.Show_DOM_Props=顯示 DOM 特有的屬性
+ShowDOMFuncs=顯示 DOM 函式
+dom.option.tip.Show_DOM_Funcs=顯示 DOM 特有的函數
+ShowDOMConstants=顯示 DOM 常數
+dom.option.tip.Show_DOM_Constants=顯示 DOM 特有的常數
+ShowClosures=顯示 Closure
+dom.option.tip.Show_Closures=顯示與各種函數有關的 closure(會開啟 debugger)
+ShowInlineEventHandlers=顯示 inline Event Handler
+ShowInlineEventHandlersTooltip=顯示沒有 function 關聯的 inline Event Handler
+ShowOwnProperties=只顯示自有屬性
+ShowOwnPropertiesTooltip=不顯示 prototype 繼承屬性
+ShowEnumerableProperties=只顯示 enumerable 屬性
+ShowEnumerablePropertiesTooltip=不顯示無法列舉的屬性
+NoMembersWarning=此物件沒有任何屬性可以顯示。
+NewWatch=新增監看表達式...
+# LOCALIZATION NOTE (plural.Request_Count2): Semi-colon list of plural forms.nn
+# A label used in the Net panel. Displays number of HTTP requests executed by the current page.nn
+AddWatch=新增監看
+watch.tip.Add_Watch=將選擇區域/物件加入側欄監看面板觀察
+# #1 number of requestsnn
+# example: 21 requestsnn
+CopySourceCode=複製原始碼
+script.tip.Copy_Source_Code=將選擇的原始碼複製到剪貼簿
+Use_hash_plus_number_to_go_to_line=輸入 #<行號> 跳到指定行
+CopyValue=複製值
+dom.tip.Copy_Value=將屬性的值複製到剪貼簿
+Copy_Name=複製名稱
+dom.tip.Copy_Name=將屬性的名稱複製到剪貼簿
+Copy_Path=複製路徑
+dom.tip.Copy_Path=複製屬性路徑
+NewProperty=新增屬性...
+EditProperty=編輯屬性...
+dom.tip.Edit_Property=編輯屬性的值
+EditVariable=編輯變數...
+stack.tip.Edit_Variable=編輯變數的值
+EditWatch=編輯監看...
+watch.tip.Edit_Watch=編輯監看表示式的值
+DeleteProperty=刪除屬性
+dom.tip.Delete_Property=刪除這個屬性
+DeleteWatch=刪除監看
+DeleteAllWatches=刪除所有監看
+watch.tip.Delete_Watch=刪除這個監看表示式
+watch.tip.Delete_All_Watches=刪除所有的監看表示式
+# LOCALIZATION NOTE (plural.Error_Count2): Semi-colon list of plural forms.nn
+# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.nn
+SetBreakpoint=設定中斷點
+script.tip.Set_Breakpoint=開關目前行上的中斷點設定
+# #1 number of errorsnn
+# example: 111 Errorsnn
+# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.nn
+EditBreakpointCondition=編輯中斷點條件...
+breakpoints.tip.Edit_Breakpoint_Condition=編輯條件指定什麼時候要在這個中斷點停止 JavaScript 執行
+NoBreakpointsWarning=此頁面沒有設定任何中斷點。
+# With: the scope inside of the with(obj) {} statementnn
+# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };nn
+# Window: the scope inside of a Javascript window object.nn
+Only_Show_Applied_Styles=只顯示已套用的樣式
+style.option.tip.Only_Show_Applied_Styles=只顯示套用在這個元素上的樣式
+# Net panel timing info labelsnn
+#A11y Chrome Labels (not visible, spoken by screen readers)nn
+#A11y panelNode labels (not visible, spoken by screen readers)nn
+Show_User_Agent_CSS=顯示 User Agent CSS
+style.option.tip.Show_User_Agent_CSS=也顯示由使用者代理定義的 CSS
+#A11y Domplate labels (not visible, spoken by screen readers)nn
+# LOCALIZATION NOTEnn
+# Used by a11y. Not directly visible in the UI, intended for screen readers.nn
+# Describe contents of inline editor fieldsnn
+# LOCALIZATION NOTE (a11y.labels.overridden):nn
+computed.option.label.Colors_As_Hex=Hex 顏色
+computed.option.tip.Colors_As_Hex=以十六進位格式顯示顏色
+computed.option.label.Colors_As_RGB=RGB 顏色
+computed.option.tip.Colors_As_RGB=以 RGB 格式顯示顏色
+computed.option.label.Colors_As_HSL=HSL 顏色
+computed.option.tip.Colors_As_HSL=以 HSL 格式顯示顏色
+# Used by a11y. Not directly visible in the UI, intended for screen readers.nn
+# indicates style property is overridden by selector with higher specificitynn
+# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):nn
+# Used by a11y. Not directly visible in the UI, intended for screen readers.nn
+style.option.label.active=:active
+style.option.tip.active=顯示 :active 虛擬類別樣式
+# Existence and state of a breakpointnn
+# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directlynn
+# visible in the UI, intended for screen readers.nn
+# #1 Line number, #2 Function name, #3 File namenn
+style.option.label.hover=:hover
+style.option.tip.hover=顯示 :hover 虛擬類別樣式
+# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directlynn
+# visible in the UI, intended for screen readers.nn
+# Describes the match found when performing a console panel search nn
+# #1 %S String key the use is looking for. #2 number of rows that contain the matched textnn
+style.option.label.focus=:focus
+style.option.tip.focus=顯示 :focus 虛擬類別樣式
+# examples: Match found for "test" in 17 log rowsnn
+# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directlynn
+# visible in the UI, intended for screen readers.nn
+css.label.Inspect_Declaration=檢測宣告
+css.tip.Inspect_Declaration=檢測這個字型的宣告
+# Describes the match found when performing a script panel search nn
+# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found innn
+# examples: Match found for "window.alert" on line 322 in utilities.jsnn
+# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directlynn
+Expand_Shorthand_Properties=展開簡寫的屬性
+css.option.tip.Expand_Shorthand_Properties=將簡寫的 CSS 屬性拆開為多項
+# visible in the UI, intended for screen readers.nn
+# Describes the match found when performing an HTML panel search (if it is found in an element node) nn
+# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched elementnn
+# examples: Match found for "obj" in object element at /html/body/object[2]nn
+Sort_alphabetically=依字母排序
+computed.option.tip.Sort_Alphabetically=依名稱排序樣式(而非將樣式依類型分組)
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directlynn
+# visible in the UI, intended for screen readers.nn
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node) nn
+Show_Mozilla_specific_styles=顯示 Mozilla 特有樣式
+computed.option.tip.Show_Mozilla_Specific_Styles=也顯示帶 -moz 前綴的樣式
+# #1 Search string that was matched. #2 Attribute name #3 attribute value nn
+# #4 the HTML element name containing. #5 XPATH string specifying the matched elementnn
+# examples: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]nn
+computed.No_User-Defined_Styles=這個元素沒有使用者定義的樣式規則
+script.Type_any_key_to_filter_list=輸入任意字元以過濾列表
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directlynn
+# visible in the UI, intended for screen readers.nn
+location.inline=Inline
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents) nn
+# #1 Search string that was matched. #2 element's text content nn
+# #3 the HTML element name containing. #4 XPATH string specifying the matched elementnn
+location.no_domain=No Domain
+# examples: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]nn
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directlynn
+# visible in the UI, intended for screen readers.nn
+LayoutPadding=padding
+LayoutBorder=border
+LayoutMargin=margin
+LayoutPosition=position
+LayoutAdjacent=adjacent
+position=position
+# Describes the match found when performing a CSS panel search (if it is found in a selector) nn
+# #1 Search string that was matched. #2 selector in which the match was found nn
+# examples: Match found for "main" in #mainContent h2 {nn
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directlynn
+ShowRulers=顯示尺規與參考線
+layout.option.tip.Show_Rulers=滑鼠移至 box 上時,顯示尺規和參考線
+# visible in the UI, intended for screen readers.nn
+Loading=載入中...
+Headers=標頭
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration) nn
+# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to nn
+net.tip.Clear=清除請求列表
+# examples: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {nn
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directlynn
+net.header.Reset_Header=重設標頭
+net.header.tip.Reset_Header=重設標頭顯示
+# visible in the UI, intended for screen readers.nn
+# Describes the match found when performing a DOM panel search nn
+# #1 Search string that was matched. #2 DOM property in which the match was found nn
+# examples: Match found for "time" in _starttime : 1257324992232 (Number)nn
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directlynn
+# visible in the UI, intended for screen readers.nn
+net.header.URL=URL
+net.header.URL_Tooltip=請求的 URL 與使用的 HTTP 方法。
+net.header.Status=狀態
+net.header.Status_Tooltip=收到回應的狀態。
+net.header.Domain=網域
+net.header.Domain_Tooltip=請求執行的網域。
+net.header.Size=大小
+net.header.Size_Tooltip=收到回應的大小。
+net.header.Timeline=Timeline
+net.header.Timeline_Tooltip=關於請求/回應往返的詳細計時。
+net.header.Local_IP=本地端 IP
+net.header.Local_IP_Tooltip=Request 所屬的本地端 IP 位址和連接埠。
+net.header.Remote_IP=遠端 IP
+net.header.Remote_IP_Tooltip=Request 所屬的遠端 IP 位址和連接埠。
+net.header.Protocol=通訊協定
+net.header.Protocol_Tooltip=用來定位網路資源的 URL 通訊協定。
+# Describes the match found when performing a Net panel search nn
+net.label.XHR_Breakpoints=XHR 中斷點
+# #1 Search string that was matched. #2 File name associated to the row in which the match was found. nn
+# #3 Column in which the match was found #4. Column value nn
+net.label.Break_On_XHR=在 XHR 中斷
+net.tip.Break_On_XHR=當任何 XMLHttpRequest 建立時,立刻停止執行 JavaScript
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 msnn
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directlynn
+# visible in the UI, intended for screen readers.nn
+net.headers.view_source=原始碼顯示
+net.headers.pretty_print=格式化顯示
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)nn
+# #1 Search string that was matched. #2 Column value in which the match was found nn
+# examples: Match found for "05" in net summary row: 4.05snn
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directlynn
+# visible in the UI, intended for screen readers.nn
+# Indicates that the searched string was not matched nn
+net.filter.label.All=全部
+net.filter.tooltip.All=顯示所有 MIME 類型
+net.filter.label.HTML=HTML
+net.filter.tooltip.HTML=只顯示 markup 檔案
+net.filter.label.CSS=CSS
+net.filter.tooltip.CSS=只顯示 CSS 檔案
+net.filter.label.JS=JavaScript
+net.filter.tooltip.JS=只顯示 JavaScript 檔案
+net.filter.label.XHR=XHR
+net.filter.tooltip.XHR=只顯示 XMLHttpRequest
+net.filter.label.Images=圖片
+net.filter.tooltip.Images=只顯示圖片
+net.filter.label.Plugins=外掛程式
+net.filter.tooltip.Plugins=只顯示 Flash 和 Silverlight 檔案
+net.filter.label.Media=媒體
+net.filter.tooltip.Media=只顯示聲音和影片
+net.filter.label.Fonts=字型
+net.filter.tooltip.Fonts=只顯示字型
+# %S Search string that was matched. nn
+# examples: No matched found for "wefkhwefkgwekhjgjh"nn
+# Console messages.nn
+Post=Post
+Put=Put
+# LOCALIZATION NOTE (message.knownIssues40): A message displayed for Firefox 40 users showingnn
+# a link to known issues (with Firefox 4.0) page.nn
+# examples: See Firefox 4.0 known issues page: http://getfirebug.com/knownissuesnn
+Response=回應
+URLParameters=參數
+Cache=快取
+HTML=HTML
+jsonviewer.tab.JSON=JSON
+xmlviewer.tab.XML=XML
+svgviewer.tab.SVG=SVG
+fontviewer.General_Info=一般資訊
+fontviewer.Meta_Data=Meta 資料
+fontviewer.view_source=檢視原始碼
+fontviewer.Preview=預覽
+fontviewer.view_characters=例字顯示
+fontviewer.pretty_print=格式化顯示
+fontviewer.view_sample=例句顯示
+fontviewer.uniqueid=Unique ID
+fontviewer.vendor=Vendor
+fontviewer.license=License
+fontviewer.description=Description
+fontviewer.copyright=Copyright
+fontviewer.credits=Credits
+fontviewer.trademark=Trademark
+fontviewer.licensee=Licensee
+fontviewer.extension=Extension
+fontviewer.pangram=The quick brown fox jumps over the lazy dog
+# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):nn
+# If Firebug is displayed in an external window (detached), but not active for thenn
+jsonviewer.sort=依 key 排序
+jsonviewer.do_not_sort=不排序
+# currently selected Firefox tab, the following button label is used for annn
+# activation button.nn
+# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):nn
+# An error message displayed in the Script panel when a source can't be displayednn
+net.jsonviewer.Copy_JSON=將「%S」複製為 JSON
+# for specific URL.nn
+# examples: Failed to load source for: http://www.example.com/script.jsnn
+RequestHeaders=請求標頭
+ResponseHeaders=回應標頭
+CachedResponseHeaders=回應標頭(來自快取)
+PostRequestHeaders=來自上傳串流的請求標頭
+# examples: The resource from this URL is not text: http://www.example.com/script.jsnn
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,nn
+# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.nn
+net.label.ResponseHeadersFromBFCache=這個請求是直接由快取解析的,所以沒有伺服器的回應。以下是來自快取的回應。
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):nn
+# Tooltips for back/forward buttons on the Script panel toolbar.nn
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):nn
+# This message is displayed within the Script panel if debugger is inactive during page load.nn
+# The suggestion message represents an advice how to solve the problem.nn
+plural.Limit_Exceeded2=超過 Firebug 的記錄上限,%1$S 個項目未顯示。
+LimitPrefs=選項
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):nn
+# This message is displayed within the Script panel if javascript is not enabled.nn
+# The suggestion message represents an advice how to solve the problem.nn
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed onnn
+LimitPrefsTitle=修改 %S 以調整上限
+Refresh=重新整理
+panel.tip.Refresh=更新面板顯示內容
+# the Script panel if Javascript is disabled. This button allows to enable it.nn
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):nn
+OpenInTab=開啟至新分頁
+firebug.tip.Open_In_Tab=在新的瀏覽器分頁開啟 URL
+Open_Response_In_New_Tab=在新分頁開啟回應
+net.tip.Open_Response_In_New_Tab=將回應內容開啟在新的瀏覽器分頁
+# This message is displayed within the Script panel if javascript is not enabled for the current page.nn
+# The suggestion message represents an advice how to solve the problem.nn
+Profile=Profile
+ProfilerStarted=Profiler 執行中。再按一次「Profile」以顯示報告。
+ProfilerRequiresTheScriptPanel=必須啟用 Script 面板才能使用 profile 功能。
+# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):nn
+# This message is displayed within the Script panel if javascript is not enabled for the current page.nn
+# The suggestion message represents an advice how to solve the problem.nn
+#firebug.dtdnn
+#editors.dtdnn
+plural.Profile_Time2=(%1$S 毫秒,%2$S 個呼叫)
+NothingToProfile=沒有可分析的活動
+PercentTooltip=這個函數消耗時間所佔的比率
+CallsHeaderTooltip=函數被呼叫的次數
+OwnTimeHeaderTooltip=函數消耗時間,不含巢狀呼叫
+TimeHeaderTooltip=函數消耗時間,包含巢狀呼叫
+AvgHeaderTooltip=平均時間,包含函數呼叫
+MinHeaderTooltip=最短時間,包含函數呼叫
+MaxHeaderTooltip=最長時間,包含函數呼叫
+ProfileButton.Tooltip=分析 JavaScript 執行時間
+Function=函數
+Percent=百分比
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,nn
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)nn
+# Used in the CSS panel for the Edit button.nn
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayednn
+Calls=呼叫
+OwnTime=本身時間
+Time=時間
+Avg=平均
+Min=最短
+Max=最長
+File=檔案
+# in the Console panel when the private browsing mode is on (in Firefox 4 it's Startnn
+Copy=複製
+Cut=剪下
+Remove=移除
+Delete=刪除
+Paste=貼上
+SelectAll=全選
+html.Copy_Node=複製 %S
+html.tip.Copy_Node=將 %S 節點和其內容複製到剪貼簿
+CopyInnerHTML=複製 innerHTML
+html.tip.Copy_innerHTML=將元素內容複製到剪貼簿
+CopyXPath=複製 XPath
+html.tip.Copy_XPath=將元素的 XPath 複製到剪貼簿
+Copy_CSS_Path=複製 CSS path
+html.tip.Copy_CSS_Path=將元素的 CSS path 複製到剪貼簿
+# Private Browsing mode)nn
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode): This message is displayednn
+# in a break notification balloon popup next to a checkbox.nn
+html.menu.Paste=貼上 %S
+html.tip.Paste=當作 %S 內容貼上
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):nn
+# This message is displayed in a break notification popup when break on debugger; keyword happens.nn
+html.menu.Paste_Replace_Content=取代內容
+html.tip.Paste_Replace_Content=取代節點的內容
+html.menu.Paste_Replace_Node=取代節點
+html.tip.Paste_Replace_Node=取代整個節點的 HTML
+html.menu.Paste_AsFirstChild=為 First Child
+html.tip.Paste_AsFirstChild=貼上為節點的第一個子節點
+html.menu.Paste_AsLastChild=為 Last Child
+html.tip.Paste_AsLastChild=貼上為節點的最後一個子節點
+html.menu.Paste_Before=在之前
+html.tip.Paste_Before=貼上到節點之前
+html.menu.Paste_After=在之後
+html.tip.Paste_After=貼上到節點之後
+# The keyword can be disabled by creating a disabled breakpoint on the same line.nn
+# The other label is used for a tooltip on the action button.nn
+html.menu.Reload_Frame=重新載入 frame
+html.menu.tip.Reload_Frame=重新載入 frame 的內容
+# LOCALIZATION NOTE (firebug.dom.noChildren): This message is displayed in the DOM panelnn
+# in cases where there are no children objects and so nothing to display.nn
+CopyLocation=複製網址
+clipboard.tip.Copy_Location=將物件位址的 URL 複製到剪貼簿
+CopyURLParameters=複製 URL 參數
+net.tip.Copy_URL_Parameters=將 URL 參數複製到剪貼簿
+CopyPOSTParameters=複製 POST 參數
+net.tip.Copy_POST_Parameters=將 POST 參數複製到剪貼簿
+CopyLocationParameters=複製網址,包含參數
+net.tip.Copy_Location_Parameters=將 URL(包括參數)一起複製到剪貼簿
+CopyRequestHeaders=複製請求標頭
+net.tip.Copy_Request_Headers=將請求標頭複製到剪貼簿
+CopyResponseHeaders=複製回應標頭
+net.tip.Copy_Response_Headers=將回應標頭複製到剪貼簿
+CopyResponse=複製回應內文
+net.tip.Copy_Response=將回應內文複製到剪貼簿
+# LOCALIZATION NOTE (firebug.reps.more): This label is when displayed array/list hasnn
+# more elements then it's displayed on the screen. "..." is automatically appended.nn
+CopyError=複製錯誤
+console.menu.tip.Copy_Error=將錯誤資訊複製到剪貼簿
+# example: more...nn
+# LOCALIZATION NOTE (firebug.storage.totalItems): This label is used in the DOM panelnn
+CopySource=複製函數
+dom.tip.Copy_Source=將函數原始碼複製到剪貼簿
+# for local/session/global storage. It's informing the user about number of items in the storage.nn
+# #1 number of storage itemsnn
+# example: 1 item in Storagenn
+# example: 2 items in Storagenn
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties): This label is used by console.tablenn
+ShowCallsInConsole=記錄對象為「%S」的呼叫
+dom.tip.Log_Calls_To_Function=在主控台記錄對「%S」函數的呼叫
+# method if an object is passed into it. Used in table header.nn
+# LOCALIZATION NOTE (firebug.completion.empty): This label is used in the command linenn
+# by auto-complete function. Displayed if there are no possible completions.nn
+ShowEventsInConsole=記錄事件
+html.tip.Show_Events_In_Console=在主控台記錄事件資訊
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):nn
+# This label is used in an image preview infotip within the HTML panel (hover over an IMG element)nn
+panel.Enabled=啟用
+panel.tip.Enabled=啟用/停用面板
+# when loading of given URL fails. The firebug.failedToPreviewObjectURL is specifically usednn
+# for moz-filedata (HTML5),nn
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_imagesnn
+panel.tooltip.Show_Command_Line_Popup=顯示命令列彈出視窗
+# LOCALIZATION NOTE (firebug.completion.empty): This label is used in the command linenn
+# by auto-complete function. Displayed if there are no possible completions.nn
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):nn
+# This label is used in an image preview infotip within the HTML panel (hover over an IMG element)nn
+console.MethodNotSupported=Firebug 主控台不支援「%S」
+# when loading of given URL fails. The firebug.failedToPreviewObjectURL is specifically usednn
+# for moz-filedata (HTML5),nn
+commandline.errorSourceHeader=EXPRESSION EVALUATED USING THE FIREBUG COMMAND LINE:
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_imagesnn
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+commandline.MethodDisabled=This command line method is temporarily disabled.
+# to reload the sources
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+commandline.MethodNotSupported=Firebug 命令列不支援「%S」
+# The suggestion message represents an advice how to solve the problem.
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+commandline.CurrentWindow=目前視窗:
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+console.Disable_Break_On_All_Errors=停用 在所有錯誤中斷
+console.Break_On_All_Errors=在所有錯誤中斷
+# The suggestion message represents an advice how to solve the problem.
+# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
+console.Break_On_This_Error=在這個錯誤中斷
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+console.Use_Arrow_keys,_Tab_or_Enter=使用方向鍵、Tab 或 Enter
+# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+console.JSDisabledInFirefoxPrefs=您的 Firefox 選項已停用 JavaScript。若要使用「主控台」面板,請在「工具」→「選項」→「內容」→「啟用 JavaScript」開啟它。
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+# firebug.dtd
+console.ScriptPanelMustBeEnabledForTraces=必須啟用 Script 面板才能取得堆疊追溯。 <a>啟用 Script 面板</a>
+# LOCALIZATION NOTE (firebug.Rerun, firebug.Continue, firebug.StepOver, firebug.StepInto,
+# firebug.StepOut, firebug.RunUntil)
+# Labels used for debugger options available in the Script panel.
+tooltip.multipleFiltersHint=使用 Ctrl+Click 可選擇多個過濾條件
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+# editors.dtd
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+console.multiHighlightLimitExceeded=頁面有太多要上色標示的元素(目前上限為 %S)。\n見 'extensions.firebug.multiHighlightLimit' 選項。
+# Used in the CSS panel for the Edit button.
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+commandline.disabledForXMLDocs=Firebug 命令列在 XML 頁面中是停用的。您可以<a>切換至 HTML</a> 以啟用它。
+# (in Firefox 4+ it's 'Start Private Browsing')
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+commandline.Use_in_Command_Line=在命令列中使用
+commandline.tip.Use_in_Command_Line=移至命令列,並將這個值表示為 "$p" 以供存取
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+commandline.include.includeSuccess=成功 include %S。
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+commandline.include.aliasNotFound=找不到 alias "%S"。
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+commandline.include.loadFail=無法載入這個 script:%S
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+commandline.include.invalidRequestProtocol=只支援 HTTP/HTTPS 通訊協定。
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+commandline.include.invalidSyntax=語法錯誤導致 include 失敗,檔案確實含有 JavaScript 嗎?
+# more elements then displayed on the screen. "..." is automatically appended.
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+commandline.include.aliasCreated=已建立 alias "%S"。
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+commandline.include.aliasRemoved=已移除 alias "%S"。
+# example: 2 items in Storage
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+commandline.include.invalidAliasName=Alias 名稱不能含有 "." 或 "/";不合法的 alias 名稱:"%S"。
+# if an object is passed into it.
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+commandline.include.tooLongAliasName=Alias 名稱不能超過 30 個字元;不合法的 alias 名稱:"%S"。
+# Displayed, if there are no possible completions.
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+commandline.include.invalidAliasArgumentType=第二個參數不正確; 預期為 alias 名稱。
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+commandline.include.invalidUrlArgumentType=URL 參數不正確。
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+commandline.include.confirmDelete=確定要刪除 alias:"%S" 嗎?
+# Message logged into the Console panel when memory profiler session starts.
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+commandline.include.noDefinedAlias=(尚未定義任何 alias)
+commandline.tip.Delete_Alias=刪除這個 alias
+commandline.tip.Edit_Alias_Name=編輯 alias 名稱
+commandline.tip.Edit_Alias_URL=編輯 alias 的 URL
+commandline.tip.Open_In_Scratchpad=在程式碼速記本開啟 script 內容
+commandline.tip.Include_Script=下載並執行 script
+commandline.label.DeleteAlias=刪除 alias
+commandline.label.EditAliasName=編輯 alias 名稱
+commandline.label.EditAliasURL=編輯 alias URL
+commandline.label.OpenInScratchpad=在程式碼速記本開啟
+commandline.label.IncludeScript=Include "%S"
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+Do_not_show_this_message_again=不要再顯示這個訊息
+# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing an HTML panel search (if it is found in an attribute node)
+scratchpad.loading=載入中,請稍候...
+scratchpad.failLoading=載入程式碼時發生錯誤。
+# first %S = Search string that was matched, second %S = Attribute name, third %S = Attribute value,
+# fourth %S = HTML element name containing, fifth %S = XPATH string specifying the matched element
+# example: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
+# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+net.sizeinfo.Response_Body=Response Body
+net.sizeinfo.Post_Body=Post Body
+net.sizeinfo.Total_Sent=總共送出
+net.sizeinfo.Total_Received=總共接收
+net.sizeinfo.Including_HTTP_Headers=包含 HTTP Header
+net.ActivationMessage=網路面板已啟用。停用面板時任何請求都不會顯示。
+net.responseSizeLimitMessage=超過 Firebug 的回應大小限制,按<a>這裡</a>在新的 Fireofx 分頁顯示全部回應。
+# Describes the match found when performing an HTML panel search (if it is found in a text element's contents)
+# first %S = Matched search string, second %S = Element's text content,
+# third %S = HTML element name containing, fourth %S = XPATH string specifying the matched element
+net.postDataSizeLimitMessage=超過 Firebug 的請求大小限制。
+net.Break_On_XHR=在 XHR 中斷
+net.label.Parameters=參數
+net.label.Parts=部份
+net.label.Source=原始碼
+# example: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
+# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
+net.label.Resend=重送
+net.tip.Resend=再次送出請求
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a CSS panel search (if it is found in a selector)
+net.option.Disable_Browser_Cache=停用瀏覽器快取
+net.option.tip.Disable_Browser_Cache=停用瀏覽器的 HTTP 快取
+# first %S = Matched search string, second %S = Selector, in which the match was found
+# example: Match found for "main" in #mainContent h2 {
+# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+net.option.Show_Paint_Events=顯示 Paint 事件
+net.option.tip.Show_Paint_Events=在時間軸上以綠色顯示 MozAfterPaint 事件
+# Describes the match found when performing a CSS panel search (if it is found in a style declaration)
+# first %S = Matched search string, second %S = Style property, in which the match was found
+# third %S = Selector the style declaration applies to
+net.option.Show_BFCache_Responses=顯示 BFCache 回應
+net.option.tip.Show_BFCache_Responses=也顯示來自 上一頁/下一頁 快取的回應
+# example: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
+# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+script.Break_On_Next=在下一步中斷
+script.Disable_Break_On_Next=停用 在下一步中斷
+ShowHttpHeaders=顯示 HTTP 標頭
+# Describes the match found when performing a DOM panel search
+# first %S = Matched search string, second %S = DOM property, in which the match was found
+# examples: Match found for "time" in DOM property _starttime
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
+plural.Request_Count2=%1$S 個請求
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search
+net.summary.from_cache=%S 來自快取
+# first %S = Matched search string, second %S = File name associated to the row, in which the match was found,
+# third %S = Column, in which the match was found, fourth %S = Column value
+# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
+net.summary.tip.request_count=請求數量
+net.summary.tip.total_size=所有請求的總計數
+net.summary.tip.total_cached_size=所有請求的快取大小總和
+net.summary.tip.total_request_time=載入所有請求所需的時間和 'onload' 事件發生的時間
+StopLoading=停止載入
+net.tip.Stop_Loading=停止載入請求
+LargeData=(大量資料)
+ShowComputedStyle=顯示計算樣式
+StyleGroup-text=文字
+StyleGroup-background=背景
+StyleGroup-box=Box Model
+StyleGroup-layout=Layout
+StyleGroup-other=其它
+Dimensions=%S x %S
+# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
+CopyColor=複製顏色
+css.tip.Copy_Color=將顏色複製到剪貼簿
+# first %S = Matched search string, second %S = Column value, in which the match was found
+# examples: Match found for "05" in net summary row: 4.05s
+# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
+# visible in the UI, intended for screen readers.
+CopyImageLocation=複製圖片網址
+css.tip.Copy_Image_Location=將圖片 URL 複製到剪貼簿
+OpenImageInNewTab=在新分頁開啟圖片
+css.tip.Open_Image_In_New_Tab=在新的瀏覽器分頁開啟圖片
+# Indicates that the searched string was not matched
+# %S = Search string
+# examples: No matched found for "wefkhwefkgwekhjgjh"
+OmitObjectPathStack=忽略工具列堆疊
+callstack.option.tip.Omit_Object_Path_Stack=不要顯示物件路徑堆疊
+Load_Original_Source=載入原版原始碼
+css.tip.Load_Original_Source=放棄所有變更並載入原來的 CSS
+# LOCALIZATION NOTE (confirmation.Reset_All_Firebug_Options):
+# Text in the confirmation dialog shown when the options should be reset
+# LOCALIZATION NOTE (confirmation.Edit_CSS_Source):
+callstack.option.Show_Arguments=顯示參數
+callstack.option.tip.Show_Arguments=也顯示函數的參數
+# If the user has changed the CSS and clicks on the Source Edit button, a confirmation dialog is
+# displayed containing the following message
+# Console messages
+Copy_Rule_Declaration=複製規則宣告
+css.tip.Copy_Rule_Declaration=將這個規則和它的所有屬性複製到剪貼簿
+# LOCALIZATION NOTE (message.sourceNotAvailableFor, message.The_resource_from_this_URL_is_not_text):
+# An error message displayed in the Script panel when a source can't be displayed
+# for specific URL.
+Copy_Style_Declaration=複製樣式宣告
+css.tip.Copy_Style_Declaration=將這個規則的屬性複製到剪貼簿
+# examples: Reload the page to get source for: http://www.example.com/script.js
+# examples: The resource from this URL is not text: http://www.example.com/script.js
+# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
+# firebug.history.Stay_on_this_page): Tooltips for menu items in the history popup menu.
+# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
+css.label.Copy_Property_Declaration=複製屬性宣告
+css.tip.Copy_Property_Declaration=將屬性宣告複製到剪貼簿
+css.label.Copy_Property_Name=複製屬性名稱
+css.tip.Copy_Property_Name=將屬性的名稱複製到剪貼簿
+css.label.Copy_Property_Value=複製屬性值
+css.tip.Copy_Property_Value=將屬性的值複製到剪貼簿
+# Tooltips for back/forward buttons on the Script panel toolbar.
+# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
+# Message displayed in the Script panel, if the debugger is inactive during page load.
+# The suggestion message represents an advice how to solve the problem. It contains a link enclosed in <a> and </a>
+plural.Error_Count2=%1$S 個錯誤
+moduleManager.title=%S 面板已停用
+moduleManager.desc3=使用 Firebug 的狀態列圖示一次啟用/停用全部面板;使用各個面板的分頁選單各別控制。
+moduleManager.Enable=啟用
+Suspend_Firebug=暫停 Firebug
+Resume_Firebug=繼續 Firebug
+Reset_Panels_To_Disabled=重設各面板為停用
+Open_Console=開啟主控台
+Open_Console_Tooltip=開啟 Firebug 追溯主控台
+Scope_Chain=Scope Chain
+# to reload the sources
+# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
+# This message is displayed within the Script panel if javascript is not enabled.
+With_Scope=With
+# The suggestion message represents an advice how to solve the problem.
+Call_Scope=Call
+# LOCALIZATION NOTE (script.button.enable_javascript): Title for a link, that is displayed on
+Window_Scope=Window
+# the Script panel, if Javascript is disabled. This link allows to enable it.
+# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
+# Message displayed in the Script panel, if no JavaScripts are available for the current page.
+# The suggestion message represents an advice how to solve the problem.
+# LOCALIZATION NOTE (script.warning.no_system_source_debugging, script.suggestion.no_system_source_debugging):
+requestinfo.Blocking=阻擋
+requestinfo.Resolving=DNS 查詢
+requestinfo.Connecting=連線中
+requestinfo.Sending=傳送中
+requestinfo.Waiting=等待中
+requestinfo.Receiving=接收中
+requestinfo.ContentLoad='DOMContentLoaded'(事件)
+requestinfo.WindowLoad='load'(事件)
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+requestinfo.started.label=計時後,開始請求的時間
+requestinfo.phases.label=請求後,各階段的開始與費時:
+requestinfo.timings.label=請求後,各事件的計時:
+search.Firebug_Search=Firebug 搜尋
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page doesn't include any JavaScript.
+# The suggestion message represents an advice how to solve the problem.
+search.Next=下一筆
+search.tip.Next=尋找下一個符合的位置
+search.Previous=上一筆
+search.tip.Previous=尋找上一個符合的位置
+search.Case_Sensitive=區別大小寫
+search.tip.Case_Sensitive=將大寫/小寫視為不同的字
+search.Case_Insensitive=忽略大小寫差異
+search.tip.Case_Insensitive=將大寫/小寫視為一樣的字
+search.Multiple_Files=多檔案
+search.tip.Multiple_Files=在與此面板相關的全部檔案中搜尋
+search.Use_Regular_Expression=使用正規表示式
+search.tip.Use_Regular_Expression=將輸入的搜尋字串視為 Regular Expression
+# LOCALIZATION NOTE (script.warning.no_chrome_debugging, script.suggestion.no_chrome_debugging):
+# Message displayed in the Script panel, if the page opened is accessed via a chrome URL.
+# The suggestion message represents an advice how to solve the problem.
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+search.html.CSS_Selector=CSS 選擇器
+search.net.Headers=標頭
+search.net.Parameters=參數
+search.net.Response_Bodies=回應本體
+search.net.tip.Response_Bodies=搜尋範圍包括回應 body
+firebug.console.Persist=持續
+firebug.console.Do_Not_Clear_On_Reload2=載入頁面時,不清除面板內容
+firebug.console.Show_All_Log_Entries=顯示全部 Log 項目
+firebug.console.Errors=錯誤
+firebug.console.Filter_by_Errors=只顯示錯誤
+firebug.console.Warnings=警告
+firebug.console.Filter_by_Warnings=只顯示警告
+firebug.console.Info=訊息
+firebug.console.Filter_by_Info=只顯示訊息
+firebug.console.Debug_Info=除錯訊息
+firebug.console.Filter_by_Debug_Info=只顯示除錯訊息
+firebug.Deactivate_Firebug=不啟動 Firebug
+firebug.tip.Deactivate_Firebug=在目前網頁不啟動 Firebug
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+firebug.tip.Toggle_Side_Panels=開關側邊欄顯示
+firebug.ShowFirebug=開啟 Firebug
+firebug.menu.tip.Open_Firebug=顯示 Firebug UI
+firebug.HideFirebug=隱藏 Firebug
+firebug.menu.tip.Minimize_Firebug=最小化 Firebug,但保持啟動
+firebug.FocusFirebug=焦點移至 Firebug 視窗
+firebug.menu.tip.Focus_Firebug=將焦點移至已分離的 Firebug 視窗
+firebug.menu.Enable_All_Panels=啟用所有面板
+firebug.menu.tip.Enable_All_Panels=啟用所有已啟動的面板
+firebug.menu.Disable_All_Panels=停用所有面板
+firebug.menu.tip.Disable_All_Panels=停用所有已啟動的面板
+firebug.menu.Customize_shortcuts=自訂快速鍵
+firebug.menu.tip.Customize_Shortcuts=自訂 Firebug 內部快速鍵設定
+firebug.Options=選項
+firebug.menu.tip.Options=Firebug 全域選項
+firebug.menu.Enable_Accessibility_Enhancements=啟用親和力增強功能
+firebug.menu.tip.Enable_Accessibility_Enhancements=啟用完整的鍵盤控制與其他親和力增強功能
+firebug.menu.Activate_Same_Origin_URLs2=對相同來源 URL 啟動
+firebug.menu.tip.Activate_Same_Origin_URLs=對符合 same origin policy 的 URL 啟動 Firebug
+firebug.menu.Reset_All_Firebug_Options=重設全部 Firebug 選項
+firebug.menu.tip.Reset_All_Firebug_Options=將 Firebug 全部選項重設為預設值
+firebug.menu.Firebug_Online=Firebug 線上
+firebug.menu.tip.Firebug_Online=Firebug 相關網站
+firebug.menu.Extensions=Firebug 擴充元件...
+firebug.menu.tip.Extensions=下載與安裝 Firebug 的擴充元件
+firebug.menu.Vertical_Panels=垂直面板配置
+firebug.menu.tip.Vertical_Panels=翻轉 Firebug 主面板/側面板配置
+firebug.menu.Show_Info_Tips=顯示資訊提示
+firebug.menu.tip.Show_Info_Tips=滑鼠移至元素時,顯示彈出資訊框
+firebug.Show_Error_Count=顯示錯誤計數
+firebug.menu.tip.Show_Error_Count=顯示主控台已記錄錯誤的數量
+firebug.TextSize=文字大小
+firebug.menu.tip.Text_Size=變更 Firebug 介面文字大小
+firebug.IncreaseTextSize=增加文字大小
+firebug.menu.tip.Increase_Text_Size=放大 Firebug 文字
+firebug.DecreaseTextSize=降低文字大小
+firebug.menu.tip.Decrease_Text_Size=縮小 Firebug 文字
+firebug.NormalTextSize=正常文字大小
+firebug.menu.tip.Normal_Text_Size=重設 Firebug 文字大小為預設值
+firebug.Website=Firebug 網站...
+firebug.menu.tip.Website=開啟 Firebug 官方網站
+firebug.help=說明...
+firebug.menu.tip.help=開啟 Firebug 說明網站
+firebug.Documentation=文件...
+firebug.menu.tip.Documentation=開啟 Firebug 文件說明
+firebug.KeyShortcuts=快速鍵...
+firebug.menu.tip.Key_Shortcuts=開啟 Firebug 滑鼠與鍵盤快速鍵列表
+firebug.Forums=討論群組...
+firebug.menu.tip.Forums=開啟討論群組網站
+firebug.Issues=問題追蹤...
+firebug.menu.tip.Issues=開啟問題追蹤網站
+firebug.Donate=捐款...
+firebug.menu.tip.Donate=開啟捐款或貢獻網頁
+firebug.About=關於...
+firebug.menu.tip.About=關於 Firebug 的資訊
+ProfileJavaScript=Profile JavaScript
+firebug.menu.tip.Profile_JavaScript=剖析 JavaScript 執行時間
+firebug.Search=搜尋
+firebug.menu.tip.Search=將焦點移至搜尋欄
+# firebug.dtd
+firebug.shortcut.reenterCommand.label=重覆輸入命令
+firebug.shortcut.tip.reenterCommand=再次將最後使用的命令輸入命令列
+firebug.shortcut.toggleInspecting.label=開關觀察
+firebug.shortcut.tip.toggleInspecting=啟用/停用檢測器
+firebug.shortcut.toggleQuickInfoBox.label=開關快速資訊框
+firebug.shortcut.tip.toggleQuickInfoBox=啟用/停用顯示目前檢測元素資訊的面板
+firebug.shortcut.toggleProfiling.label=開關 Profile
+firebug.shortcut.tip.toggleProfiling=啟用/停用 JavaScript Profiler
+firebug.shortcut.focusCommandLine.label=焦點移至命令列
+firebug.shortcut.tip.focusCommandLine=開啟 Firebug 並將焦點移至命令列/開啟命令列彈出框
+firebug.shortcut.focusFirebugSearch.label=焦點移至 Firebug 搜尋
+firebug.shortcut.tip.focusFirebugSearch=將焦點移至搜尋欄
+firebug.shortcut.focusWatchEditor.label=焦點移至監看編輯器
+firebug.shortcut.tip.focusWatchEditor=切換至 Script 面板並開始輸入新的監看式
+firebug.shortcut.focusLocation.label=焦點移至網址
+firebug.shortcut.tip.focusLocation=開啟位址選單
+firebug.shortcut.nextObject.label=下一個物件
+firebug.shortcut.tip.nextObject=選取面板中,下一個元素路徑中的物件
+firebug.shortcut.previousObject.label=上一個物件
+firebug.shortcut.tip.previousObject=選取面板中,上一個元素路徑中的物件
+firebug.shortcut.customizeFBKeys.label=自訂 Firebug 快速鍵
+firebug.shortcut.tip.customizeFBKeys=開啟 Firebug 快速鍵設定對話框
+firebug.shortcut.detachFirebug.label=在新視窗開啟 Firebug
+firebug.shortcut.tip.detachFirebug=將 Firebug 分離至獨立視窗
+firebug.shortcut.leftFirebugTab.label=切換至左邊的 Firebug 面板
+firebug.shortcut.tip.leftFirebugTab=切換至左邊的 Firebug 面板
+firebug.shortcut.rightFirebugTab.label=切換至右邊的 Firebug 面板
+firebug.shortcut.tip.rightFirebugTab=切換至右邊的 Firebug 面板
+firebug.shortcut.toggleFirebug.label=開啟 Firebug
+firebug.shortcut.tip.toggleFirebug=開啟/最小化 Firebug UI
+firebug.shortcut.closeFirebug.label=停止 Firebug 活動
+firebug.shortcut.tip.closeFirebug=在目前網站不允許 Firebug 活動
+firebug.shortcut.previousFirebugTab.label=上一個 Firebug 分頁
+firebug.shortcut.tip.previousFirebugTab=切換至上一個選取的 Firebug 面板
+firebug.shortcut.clearConsole.label=清空主控台
+firebug.shortcut.tip.clearConsole=移除主控台中的所有記錄
+firebug.shortcut.openTraceConsole.label=開啟追溯主控台
+firebug.shortcut.tip.openTraceConsole=開啟 FBTrace 主控台
+firebug.shortcut.navBack.label=上一步
+firebug.shortcut.tip.navBack=前往上一個面板,或瀏覽歷史的上一個位址
+firebug.shortcut.navForward.label=下一步
+firebug.shortcut.tip.navForward=前往下一個面板,或瀏覽歷史的下一個位址
+firebug.shortcut.increaseTextSize.label=增加文字大小
+firebug.shortcut.tip.increaseTextSize=放大 Firebug 用的文字
+firebug.shortcut.decreaseTextSize.label=縮小文字大小
+firebug.shortcut.tip.decreaseTextSize=縮小 Firebug 用的文字
+firebug.shortcut.normalTextSize.label=正常文字大小
+firebug.shortcut.tip.normalTextSize=重設 Firebug 文字大小為預設值
+firebug.shortcut.help.label=開啟說明
+firebug.shortcut.tip.help=開啟常見問題網頁
+firebug.shortcut.toggleBreakOn.label=開關在 ... 時中斷
+firebug.shortcut.tip.toggleBreakOn=啟用/停用在特定條件發生時,停止執行指令碼的功能
+firebug.panel_selector=面板選擇器
+customizeShortcuts=Firebug 快速鍵設定
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+a11y.labels.panel_tools=面板工具
+a11y.labels.firebug_panels=Firebug 面板
+a11y.labels.firebug_side_panels=Firebug 側邊面板
+a11y.labels.firebug_window=Firebug 視窗
+a11y.labels.firebug_status=Firebug 狀態
+a11y.labels.reset=重設
+a11y.labels.reset_shortcut=重設 %S 快捷鍵
+aria.labels.inactive_panel=未啟用的面板
+# Label for an item incl. assigned keyboard shortcut
+a11y.labels.log_rows=log 行
+a11y.labels.call_stack=呼叫堆疊
+a11y.labels.document_structure=文件結構
+a11y.labels.title_panel=%S 面板
+a11y.labels.title_side_panel=%S 側邊面板
+a11y.labels.cached=快取
+aria.labels.stack_trace=堆疊追溯
+# example: Continue (F8)
+a11y.layout.padding=padding
+a11y.layout.border=border
+a11y.layout.margin=margin
+a11y.layout.position=position
+a11y.layout.position_top=position top
+a11y.layout.position_right=position right
+a11y.layout.position_bottom=position bottom
+a11y.layout.position_left=position left
+a11y.layout.margin_top=margin top
+a11y.layout.margin_right=margin right
+a11y.layout.margin_bottom=margin bottom
+a11y.layout.margin_left=margin left
+a11y.layout.border_top=border top
+a11y.layout.border_right=border right
+a11y.layout.border_bottom=border bottom
+a11y.layout.border_left=border left
+a11y.layout.padding_top=padding top
+a11y.layout.padding_right=padding right
+a11y.layout.padding_bottom=padding bottom
+a11y.layout.padding_left=padding left
+a11y.layout.top=top
+a11y.layout.right=right
+a11y.layout.bottom=bottom
+a11y.layout.left=left
+a11y.layout.width=width
+a11y.layout.height=height
+a11y.layout.size=size
+a11y.layout.z-index=z-index
+a11y.layout.box-sizing=box-sizing
+a11y.layout.clientBoundingRect=bounding client rect
+a11y.descriptions.press_enter_to_edit_values=按 Enter 和 Tab 編輯各個元素的值
+a11y.labels.style_rules=樣式規則
+aria.labels.inherited_style_rules=繼承的樣式
+a11y.labels.computed_styles=計算樣式
+a11y.labels.dom_properties=DOM 屬性
+# example: Step Out (Shift+F11)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+a11y.labels.inline_editor=行內編輯器
+a11y.labels.value_for_attribute_in_element=%2$S 元素 %1$S 屬性的值
+a11y.labels.attribute_for_element=%S 元素的屬性
+a11y.labels.text_contents_for_element=%S 元素的文字內容
+a11y.labels.defined_in_file=定義於 %S
+a11y.labels.declarations_for_selector="%S" selector 的樣式定義
+a11y.labels.property_for_selector=%S selector 的 CSS 屬性
+a11y.labels.value_property_in_selector=%2$S selector %1$S 屬性的值
+a11y.labels.css_selector=CSS selector
+a11y.labels.source_code_for_file=檔案 %S 的原始碼
+a11y.labels.press_enter_to_add_new_watch_expression=按 Enter 新增監看表達式
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+a11y.labels.overridden=已被覆蓋
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+a11y.updates.has_conditional_break_point=具有條件判斷的中斷點
+a11y.updates.has_disabled_break_point=具有已停用的中斷點
+# editors.dtd
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+a11y.updates.script_suspended_on_line_in_file=Script 在 %3$S 第 %1$S 行的 %2$S 函數中止
+# Used in the CSS panel for the Edit button.
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+a11y.updates.match_found_in_logrows=在 Log 第 %2$S 行找到符合 "%1$S" 的結果
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+a11y.updates.match_found_for_on_line=在 %3$S 第 %2$S 行找到符合 "%1$S" 的結果
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+a11y.updates.match_found_in_element=在 XPath 為 %3$S 的 %2$S 元素中找到符合 "%1$S" 的結果
+# This feature needs the Script panel enabled in order to work.
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+a11y.updates.match_found_in_attribute=在 XPath 為 %5$S 的 %4$S 元素中找到符合 "%1$S" 的屬性 %2$S=%3$S
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+a11y.updates.match_found_in_text_content=在 XPath 為 %4$S 的 %3$S 元素中找到符合 "%1$S" 的文字 %2$S
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+a11y.updates.match_found_in_selector=找到符合 "%S" 的 selector %S
+# Displayed, if there are no possible completions.
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+a11y.updates.match_found_in_style_declaration=在 %3$S selector 中找到符合 "%1$S" 的樣式宣告 %2$S
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+a11y.updates.match_found_in_dom_property=找到符合 "%S" 的 DOM 屬性 %S
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+a11y.updates.match_found_in_net_row=在 %2$S 中找到符合 "%1$S" 的 %3$S : %4$S
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+a11y.updates.match_found_in_net_summary_row=在網路概要找到符合 "%S" 的結果,第 %S 行
+# Used by the console panel if a Console API is used without any argument.
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+a11y.updates.no_matches_found=沒有符合 "%S" 的項目
+# Firebu and should not be installed together with Firebug 1.10+
+# LOCALIZATION NOTE (firebug.cmd.help.values, console.cmd.help_title_desc):
+confirmation.Reset_All_Firebug_Options=您確定要重設 Firebug 全部選項為預設值?
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+confirmation.Edit_CSS_Source=已編輯的 CSS 將被取消。\n確定要編輯原始碼?
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+warning.Console_must_be_enabled=必須啟用主控台
+warning.Command_line_blocked?=命令列被阻擋了嗎?
+warning.dollar_change=主控台命令列函式 $() 的定義已由 $=getElementById(id) 改為 $=querySelector(selector),您可嘗試以 $("#%S") 取代。
+message.Reload_to_activate_window_console=重新載入以啟用主控台
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selection side panel.
+# LOCALIZATION NOTE (css.selector.Selection): Title for Selector side panel displayed
+# in the CSS panel.
+message.sourceNotAvailableFor=重新載入頁面以取得資源
+message.The_resource_from_this_URL_is_not_text=這個 URL 的 原始碼不是文字
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+firebug.history.Go_back_to_this_panel=返回到這個面板
+firebug.history.Stay_on_this_panel=停在這個面板
+firebug.history.Go_forward_to_this_panel=前進到這個面板
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+firebug.history.Go_back=返回
+firebug.history.Go_forward=前進
+# for the clicked rule selector. Elements are displayed in the side panel.
+# LOCALIZATION NOTE (css.selector.unknownErrorMessage): An error message displayed
+# to the user if querySelectorAll (used by the Selector side panel) fails and there is no
+# explanantion coming from the platform.
+script.warning.inactive_during_page_load=載入頁面時未啟用 Script 面板
+script.suggestion.inactive_during_page_load2=<a>重新載入</a>以查看所有資源
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+script.warning.javascript_not_enabled=Javascript 未啟用
+script.suggestion.javascript_not_enabled=見 Firefox > 工具 > 選項 > 內容 > 啟用 Javascript
+# perftiming.bars.label=Document phases start and elapsed time relative to the document load:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+script.button.enable_javascript=啟用 JavaScript 並重新載入
+# for detailed performance timing info table.
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+script.warning.all_scripts_filtered=所有 script 都被過濾了
+script.suggestion.all_scripts_filtered=檢查工具列的 Script 過濾設定,或選擇「顯示 Chrome 原始碼」
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+script.warning.no_system_source_debugging=System sources can't be debugged
+script.suggestion.no_system_source_debugging=Firebug currently can't be used to debug system sources. See <a>issue 5110</a> for the reason.
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+script.warning.no_javascript=這個頁面沒有 Javascript
+script.suggestion.no_javascript2=若 <script> 標籤有「type」屬性,其值應該為 "text/javascript" 或 "application/javascript",且指令碼需要是可解析(語法正確)的。
+# LOCALIZATION NOTE (script.warning.debugger_active, script.suggestion.debugger_active):
+# Message displayed in the Script panel, if the page is opened in different tabs/windows and
+# the debugger is already halted at a breakpoint inside another tab/window.
+# The suggestion message represents an advice how to solve the problem.
+script.warning.debugger_active=Debugger 已啟用
+script.suggestion.debugger_active=Debugger 已於其他頁面的中斷點暫停。
+script.button.Go_to_that_page=前往該頁面
+script.warning.debugger_not_activated=Debugger 未啟動
+script.suggestion.debugger_not_activated=Debugger 未啟動
+# LOCALIZATION NOTE (script.Script_panel_must_be_enabled): Adds a parenthetical note to a tooltip
+# about the Script panel having to be enabled.
+# %S = original message
+# example: "Profile JavaScript execution time (Script panel must be enabled)"
+script.Script_panel_must_be_enabled=%S (必須啟用 Script 面板)
+# firebug.dtd
+firebug.Firebug=Firebug
+firebug.Close=關閉
+firebug.View=檢視
+firebug.Help=說明
+firebug.Run=執行
+firebug.Copy=複製
+firebug.History=歷史
+firebug.Run_the_entered_command=執行輸入的指令
+firebug.Clear_the_Command_Editor=清空指令編輯器
+firebug.Copy_the_script_as_a_bookmarklet=將 script 複製為 bookmarklet
+firebug.Insert_a_previously_entered_command=插入上一個輸入的指令
+firebug.AlwaysOpenInWindow=總是開啟於新視窗
+firebug.OpenWith=以編輯器開啟
+firebug.menu.tip.Open_With=使用外部編輯器開啟內容
+firebug.Permissions=網站...
+firebug.Configure_Editors=編輯器設定
+script.tip.Script_Type=依 script 類型過濾
+script.tip.Script_Filter_Static=只顯示和頁面一起載入的 script
+script.tip.Script_Filter_Evals=顯示和頁面一起載入的,或由 eval() 建立的 script
+script.tip.Script_Filter_Events=顯示和頁面一起載入、由 eval() 建立的 script,以及事件處理函數
+script.tip.Script_Filter_All=Display all kinds of scripts
+# LOCALIZATION NOTE (firebug.labelWithShortcut):
+# Label for an item incl. assigned keyboard shortcut
+# example: Continue (F8)
+# example: Step Out (Shift+F11)
+firebug.labelWithShortcut=%S (%S)
+# LOCALIZATION NOTE (firebug.Rerun, script.tip.Rerun, firebug.Continue, script.tip.Continue,
+# firebug.StepOver, script.tip.Step_Over, firebug.StepInto, script.tip.Step_Into,
+# firebug.StepOut, script.tip.Step_Out, firebug.RunUntil, script.tip.Run_Until):
+# Labels used for debugger options available in the Script panel.
+script.Rerun=Rerun
+script.tip.Rerun=重新執行目前函數呼叫堆疊
+script.Continue=Continue
+script.tip.Continue=繼續執行 JavaScript
+script.Step_Over=Step Over
+script.tip.Step_Over=執行下一個命令
+script.Step_Into=Step Into
+script.tip.Step_Into=執行下一個命令並跳入函數內
+script.Step_Out=Step Out
+script.tip.Step_Out=執行整個函數內容並返回其 caller
+firebug.RunUntil=Run to This Line
+script.tip.Run_Until=執行到這一行為止的 JavaScript
+# LOCALIZATION NOTE (firebug.Inspect, firebug.InspectElement, firebug.InspectElementWithFirebug)
+# Labels for Firebug Inspector. Used by a button (available in Firefox Customize Toolbar dialog)
+# and also page context menu. As soon as built-in inspector is having its own "Inspect Element"
+# Firebug should start using "Inspect Element with Firebug" to distinguish itself.
+firebug.Inspect=觀察
+firebug.InspectElement=觀察元素
+firebug.InspectElementWithFirebug=使用 Firebug 觀察元素
+firebug.BreakOnErrors=發生錯誤時中斷
+firebug.InspectTooltip=點選頁面中的任何元素開始觀察
+firebug.EditHTMLTooltip=編輯 HTML
+firebug.Profile=Profile
+firebug.Clear=清除
+firebug.ClearConsole=清空主控台
+firebug.ClearTooltip=清空主控台
+# editors.dtd
+editors.Configured_Firebug_Editors=設定 Firebug 編輯器
+editors.Editor=編輯器
+editors.Executable=執行檔
+editors.Launch_Arguments=啟動參數
+editors.Add=新增
+editors.Remove=移除
+editors.Change=變更
+editors.Move_Up=向上移
+editors.Close=關閉
+editors.Browse=瀏覽...
+changeEditor.Editor_Configuration=編輯器設定
+changeEditor.Name=名稱:
+changeEditor.Executable=執行檔:
+changeEditor.CmdLine=參數:
+changeEditor.Supplied_arguments=Firebug 提供的參數:
+changeEditor.URL_of_file=檔案的 URL(若沒有 %url,預設會加上 %file)
+changeEditor.Path_to_local_file=本地端檔案的路徑(或暫存檔的路徑)
+changeEditor.Line_number=行號(若有的話)
+changeEditor.Invalid_Application_Path=不正確的應用程式路徑
+changeEditor.Application_does_not_exist=指定的應用程式不存在!
+# LOCALIZATION NOTE (firebug.Edit, firebug.css.sourceEdit, firebug.css.liveEdit,
+# firebug.EditCSSTooltip, firebug.css.sourceEdit.tooltip, firebug.css.liveEdit.tooltip)
+# Used in the CSS panel for the Edit button.
+firebug.Edit=編輯
+firebug.css.sourceEdit=原始碼編輯
+firebug.css.sourceEdit.tooltip=文字區域編輯,使用瀏覽器載入的樣式表原始碼
+firebug.css.liveEdit=即時編輯
+firebug.css.liveEdit.tooltip=文字區域編輯,使用瀏覽器解析後的 CSS 結果
+firebug.EditCSSTooltip=編輯此樣式表
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in the Console panel when the private browsing mode is on.
+# (in Firefox 4+ it's 'Start Private Browsing')
+firebug.activation.privateBrowsingMode=在私密瀏覽模式中不會記錄任何網站
+# LOCALIZATION NOTE (firebug.breakpoint.showBreakNotifications):
+# Label used within Script panel's options menu. Represents an option, that can be used
+# to switch of the break notifications.
+firebug.breakpoint.showBreakNotifications=顯示中斷點提示通知
+firebug.breakpoint.tip.Show_Break_Notifications=「在 ... 時中斷」功能或 debugger; 關鍵字造成 JavaScript 停止執行時,顯示通知框
+# LOCALIZATION NOTE (firebug.activation.privateBrowsingMode):
+# Message displayed in a break notification popup next to a checkbox.
+# Includes a link enclosed in <a> and </a> to open the panel's options menu.
+firebug.breakpoint.doNotShowBreakNotification2=您可以在<a>面板的分頁選單</a>停用/啟用中斷點提示通知。
+# LOCALIZATION NOTE (firebug.bon.cause.disableDebuggerKeyword2, firebug.bon.tooltip.disableDebuggerKeyword2):
+# Message displayed in a break notification popup when break on debugger; keyword happens.
+# The keyword can be disabled by creating a disabled breakpoint on the same line.
+# The other label is used for a tooltip on the action button.
+firebug.bon.cause.disableDebuggerKeyword2=按下「停用」按鈕,以一個停用的中斷點覆蓋 'debugger' 關鍵字
+firebug.bon.tooltip.disableDebuggerKeyword2=新增已停用中斷點
+# LOCALIZATION NOTE (firebug.bon.scriptPanelNeeded): A label used by 'Break On Next' button
+# This feature needs the Script panel enabled in order to work.
+firebug.bon.scriptPanelNeeded=(需要啟用 Script 面板才能使用此功能)
+# LOCALIZATION NOTE (firebug.dom.noChildren):
+# Message displayed in the DOM panel in cases, in which there are no children objects
+# and so nothing to display.
+firebug.dom.noChildren2=沒有子物件
+# LOCALIZATION NOTE (firebug.reps.more): Label shown when the displayed array/list has
+# more elements then displayed on the screen. "..." is automatically appended.
+firebug.reps.more=更多
+# LOCALIZATION NOTE (firebug.reps.reference): Label shown when the displayed array/list has
+# a reference to itself (a cycle).
+firebug.reps.reference=循環參考
+# LOCALIZATION NOTE (firebug.storage.totalItems): Semicolon list of plural forms.
+# Label used in the DOM panel for local/session/global storage.
+# It's informing the user about the number of items in the storage.
+# %1 = Number of storage items
+# example: 1 item in Storage
+# example: 2 items in Storage
+firebug.storage.totalItems=Storage 中有 %S 個項目
+# LOCALIZATION NOTE (firebug.reps.historyEntries): Semicolon list of plural forms.
+# Displayed when evaluating "history" - informs the user about the number of entries in history.
+# %1 = Number of history entries
+firebug.reps.historyEntries=%1$S 個 history 項目;%1$S 個 history 項目
+# LOCALIZATION NOTE (firebug.reps.table.ObjectProperties):
+# Label used in the header of the output of the console.table() method inside the Console panel,
+# if an object is passed into it.
+firebug.reps.table.ObjectProperties=物件屬性
+# LOCALIZATION NOTE (firebug.completion.empty):
+# Label used in the command line by the auto-complete function.
+# Displayed, if there are no possible completions.
+firebug.completion.empty=(沒有可用的自動完成項目)
+# LOCALIZATION NOTE (firebug.failedToPreviewObjectURL, firebug.failedToPreviewImageURL):
+# Label used in an image preview infotip in the HTML panel when hovering over an <img> element
+# when loading of the given URL fails. The firebug.failedToPreviewObjectURL is specifically used
+# for moz-filedata (HTML5),
+# see: https://developer.mozilla.org/en/Using_files_from_web_applications#Example.3a_Using_object_URLs_to_display_images
+firebug.failedToPreviewObjectURL=URL 物件可能已被 revokeObjectURL 方法取消。
+firebug.failedToPreviewImageURL=讀取 URL 失敗。
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Started):
+# Message logged into the Console panel when memory profiler session starts.
+firebug.Memory_Profiler_Started=Memory Profiler 已啟動
+# LOCALIZATION NOTE (firebug.Objects_Added_While_Profiling):
+# Title for a group (logged into the Console panel), that contains a list of new objects
+# allocated within memory profiler session.
+firebug.Objects_Added_While_Profiling=Profile 進行中,物件已加入
+# LOCALIZATION NOTE (firebug.Memory_Profiler_Results):
+# Message used within the Console panel when the memory profiler session is finished.
+firebug.Memory_Profiler_Results=Memory Profiler 結果
+# LOCALIZATION NOTE (firebug.Entire_Session):
+# Label used within memory profiler results to mark summary information for entire session.
+firebug.Entire_Session=整個 Session
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if a Console API is used without any argument.
+console.msg.nothing_to_output=(沒有結果可顯示)
+# LOCALIZATION NOTE (console.msg.nothing_to_output):
+# Used by the console panel if an empty string is passed into a Console API.
+console.msg.an_empty_string=(空字串)
+# LOCALIZATION NOTE (cookies.legacy.firecookie_detected, cookies.legacy.uninstall, cookies.legacy.uninstall_and_restart):
+# A message and labels used when Firecookie is detected. This extension has been integrated with
+# Firebu and should not be installed together with Firebug 1.10+
+cookies.legacy.firecookie_detected=偵測到 Firecookie 附加元件,此元件已整合進 Firebug 1.10,請移除 Firecookie 以避免衝突。\n\n您必須重新啟動才能完成移除。
+cookies.legacy.uninstall=移除
+cookies.legacy.uninstall_and_restart=移除並重新啟動
+# LOCALIZATION NOTE (console.cmd.help_title, console.cmd.help_title_desc):
+console.cmd.help_title=命令列 API
+console.cmd.help_title_desc=按下 F1 開啟 Firebug 說明
+# LOCALIZATION NOTE (console.cmd.tip_title, console.cmd.tip_title_desc):
+console.cmd.tip_title=命令列 Tips
+console.cmd.tip_title_desc=學習命令列的技巧提示與竅門
+# LOCALIZATION NOTE (console.cmd.tip.javascript, console.cmd.tip.closures):
+# Description for Command Line tips that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.tip.javascript=命令列可執行任何合法的 JavaScript 敘述句,例如:
+console.cmd.tip.closures=要存取 closure 中的變數,使用 '.%' 語法(見<a>詳細</a>)。例如:
+# LOCALIZATION NOTE (console.cmd.help.$): Description for Command Line API that is logged
+# in the the Console panel if the user types "help" into the command line.
+console.cmd.help.$=傳回符合 id 的一個元素。
+console.cmd.help.$$=傳回符合 CSS 選擇器的元素陣列。
+console.cmd.help.$x=傳回符合 XPath 表達式的元素陣列。
+console.cmd.help.dir=顯示條列物件所有屬性的互動清單。 此功能與 DOM 面板中顯示的相同。
+console.cmd.help.dirxml=顯示 HTML 或 XML 元素的原始樹結構。 此功能與 HTML 面板中顯示的相同,可點選任意節點,前往 HTML 面板中檢測。
+console.cmd.help.cd=預設情形下,命令列表達式皆相對於頁面中的頂層 window 作用,cd() 讓您切換至頁面其他 frame 的 window。
+console.cmd.help.clear=清除主控台。
+console.cmd.help.copy=複製參數到剪貼簿,可以是函數的回傳值或物件。
+console.cmd.help.inspect=在適合的面板檢測物件。 可於第二個引數指定面板,可用的面板名稱為 "html"、"stylesheet"、"script" 和 "dom"。
+console.cmd.help.keys=傳回物件所有屬性「名稱」的陣列。
+console.cmd.help.values=傳回物件所有屬性「值」的陣列。
+console.cmd.help.debug=在函數的第一行增加一個中斷點。
+console.cmd.help.undebug=移除位於函數第一行的中斷點。
+console.cmd.help.monitor=開始記錄所有對此函數的呼叫。
+console.cmd.help.unmonitor=關閉對此函數所有呼叫的記錄。
+console.cmd.help.monitorEvents=開始記錄所有發送到此物件的事件。 第二個參數可指定特定事件或事件類型,可用的事件類型為 "composition"、"contextmenu"、"drag"、"focus"、"form"、"key"、"load"、"mouse"、"mutation"、"paint"、"scroll"、"text"、"ui"、"xul" 和 "clipboard"。
+console.cmd.help.unmonitorEvents=關閉對發送至此物件所有事件的記錄。 第二個參數可指定關閉哪些事件或事件類型的記錄。
+console.cmd.help.profile=開啟 JavaScript profiler。 第二個參數可指定顯示於 profile 報告上的標題文字。
+console.cmd.help.profileEnd=關閉 JavaScript profiler 並顯示其結果。
+console.cmd.help.table=以表格排版記錄資料。需要一個 table-like(陣列、多個陣列,或成列的物件)資料必要參數。 第二個參數可指定要列出的欄位或屬性。
+console.cmd.help.$0=表示檢測器最後選取的元素。
+console.cmd.help.$1=表示檢測器倒數第二個選取的元素。
+console.cmd.help.$2=表示檢測器倒數第三個選取的元素。
+console.cmd.help.$3=表示檢測器倒數第四個選取的元素。
+console.cmd.help.$4=表示檢測器倒數第四個選取的元素。
+console.cmd.help.$n=傳回最後 5 個檢測器選取的元素之一。此方法需要一個 index(由 0 開始)必要參數。
+console.cmd.help.$_=表示命令列最後運行式的結果。
+console.cmd.help.help=顯示所有可用指令的說明。
+console.cmd.help.include=引入遠端指令碼。
+console.cmd.help.$p=右鍵點選一個 JavaScript 物件/值,再點「在命令列中使用」,此命令列變數就會被設為該值。
+console.cmd.help.getEventListeners=傳回含所有直接註冊在元素(或其它 event target)上之 event listener 的物件。
+# LOCALIZATION NOTE (console.cmd.helpUrlNotAvailable): A message used displayed to the user
+# if registered command doesn't have help URL associated and the user clicks on the command name.
+# List of command names is displayed if you type "help" (without quotes) into the command line.
+console.cmd.helpUrlNotAvailable=無法取得此命令的說明網頁。
+# LOCALIZATION NOTE (perftiming.bars.label, perftiming.events.label): A label used in a tooltip
+# for performance.timing graph.
+# The graph is displayed in the Console when the user executes "performance.timing" expression.
+perftiming.bars.label=文件載入各階段的開始與經過時間:
+perftiming.events.label=相對於文件載入的事件計時:
+# LOCALIZATION NOTE (perftiming.details_title, perftiming.details_title_desc): A label used
+# for detailed performance timing info table.
+perftiming.details_title=Perfomance Timing
+perftiming.details_title_desc=計時詳細
+# LOCALIZATION NOTE (perftiming.connectEnd, perftiming.connectStart,
+# perftiming.domContentLoadedEventEnd, perftiming.domContentLoadedEventStart,
+# perftiming.domInteractive, perftiming.domLoading, perftiming.domainLookupEnd,
+# perftiming.domainLookupStart, perftiming.fetchStart, perftiming.loadEventEnd,
+# perftiming.loadEventStart, perftiming.avigationStart, perftiming.redirectCount,
+# perftiming.redirectEnd, perftiming.redirectStart, perftiming.requestStart,
+# perftiming.responseEnd, perftiming.responseStart, perftiming.timing, perftiming.unloadEventEnd,
+# perftiming.unloadEventStart): Description for performance timing field. Displayed when
+# the user executes 'performance.timing' in the command line.
+perftiming.connectEnd=伺服器連線完成的時間。
+perftiming.connectStart=伺服器連線正要開始的時間。
+perftiming.domComplete=文件整備正要完成的時間。
+perftiming.domContentLoadedEventEnd=DOMContentLoaded 事件完成的時間。
+perftiming.domContentLoadedEventStart=DOMContentLoaded 正要開始的時間。
+perftiming.domInteractive=整備狀態(readiness)正要轉為 "interactive" 的時間。
+perftiming.domLoading=整備狀態正要轉為 "loading" 的時間。
+perftiming.domainLookupEnd=域名查詢完成的時間。
+perftiming.domainLookupStart=域名查詢正要開始的時間。
+perftiming.fetchStart=資源取得(fetch)正要開始的時間。
+perftiming.loadEventEnd=load 事件完成的時間。
+perftiming.loadEventStart=load 事件正要發動的時間。
+perftiming.navigationStart=前一個文件已開始 unload 的時間。
+perftiming.redirectCount=最後一個非重新導向後,重新導向的次數。
+perftiming.redirectEnd=最後一個重新導向回應完成的時間。
+perftiming.redirectStart=引起重新導向的取得動作(fetch)之開始時間。
+perftiming.requestStart=正要開始伺服器請求的時間。
+perftiming.responseEnd=回應或連線完成的時間。
+perftiming.responseStart=開始接收回應的時間。
+perftiming.unloadEventEnd=前一個文件完成 unload 的時間。
+perftiming.unloadEventStart=unload 事件正要發動的時間。
diff --git a/locale/zh-TW/selectors.properties b/locale/zh-TW/selectors.properties
index 2729e30..1fd142b 100644
--- a/locale/zh-TW/selectors.properties
+++ b/locale/zh-TW/selectors.properties
@@ -1,26 +1,26 @@
-# LOCALIZATION NOTE (Panel-selectors): Title for Selectors side panel displayed
-# in the CSS panel
-Panel-selectors=選擇器
-# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
-# Shown when hovering the Selection panel tab
-panel.tip.selectors=顯示符合特定 CSS 選擇器的元素
-# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
-# Selectors side panel.
-css.selector.noSelection=輸入自訂選擇器,或以右鍵點選 CSS 規則並選擇<b>取得符合元素</b>。
-# LOCALIZATION NOTE (css.selector.noSelectionResults, css.selector.invalidSelector):
-# Info messages for selector trials in Selectors side panel
-css.selector.noSelectionResults=沒有符合的元素
-# LOCALIZATION NOTE (css.selector.readMore):
-# Helper text with a link to getfirebug.com/wiki for the Selectors panel.
-css.selector.readMore=你可以<a>閱讀更多</a>關於此面板的使用方式。
-# LOCALIZATION NOTE (css.selector.invalidSelector):
-css.selector.invalidSelector=輸入的選擇器不合法
-# LOCALIZATION NOTE (css.selector.TryASelector):
-# Placeholder label for the Selectors side panel's input field for creating new selector trials
-css.selector.TryASelector=測試選擇器...
-# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
-# The menu-item is used in the CSS panel's context menu and allows to get matched elements
-# for the clicked rule selector. Elements are displayed in the side panel.
-css.selector.cmd.getMatchingElements=取得符合元素
-aria.labels.Selectors=選擇器側邊欄
-a11y.labels.press_enter_to_add_new_selector=按 Enter 增加新的選擇器
+# LOCALIZATION NOTE (Panel-selectors): Title for Selectors side panel displayed
+# in the CSS panel
+Panel-selectors=選擇器
+# LOCALIZATION NOTE (panel.tip.selector): Tooltip text for the Selection side panel
+# Shown when hovering the Selection panel tab
+panel.tip.selectors=顯示符合特定 CSS 選擇器的元素
+# LOCALIZATION NOTE (css.selector.noSelection): A help description used in empty
+# Selectors side panel.
+css.selector.noSelection=輸入自訂選擇器,或以右鍵點選 CSS 規則並選擇<b>取得符合元素</b>。
+# LOCALIZATION NOTE (css.selector.noSelectionResults, css.selector.invalidSelector):
+# Info messages for selector trials in Selectors side panel
+css.selector.noSelectionResults=沒有符合的元素
+# LOCALIZATION NOTE (css.selector.readMore):
+# Helper text with a link to getfirebug.com/wiki for the Selectors panel.
+css.selector.readMore=你可以<a>閱讀更多</a>關於此面板的使用方式。
+# LOCALIZATION NOTE (css.selector.invalidSelector):
+css.selector.invalidSelector=輸入的選擇器不合法
+# LOCALIZATION NOTE (css.selector.TryASelector):
+# Placeholder label for the Selectors side panel's input field for creating new selector trials
+css.selector.TryASelector=測試選擇器...
+# LOCALIZATION NOTE (css.selector.cmd.getMatchingElements): A label for context menu item.
+# The menu-item is used in the CSS panel's context menu and allows to get matched elements
+# for the clicked rule selector. Elements are displayed in the side panel.
+css.selector.cmd.getMatchingElements=取得符合元素
+aria.labels.Selectors=選擇器側邊欄
+a11y.labels.press_enter_to_add_new_selector=按 Enter 增加新的選擇器
diff --git a/modules/debuggerHalter.js b/modules/debuggerHalter.js
index b8c1ed1..2f2520a 100644
--- a/modules/debuggerHalter.js
+++ b/modules/debuggerHalter.js
@@ -1,8 +1,8 @@
-/* See license.txt for terms of usage */
-
-var EXPORTED_SYMBOLS=['debuggerHalter'];
-
-function debuggerHalter()
-{
- debugger;
+/* See license.txt for terms of usage */
+
+var EXPORTED_SYMBOLS=['debuggerHalter'];
+
+function debuggerHalter()
+{
+ debugger;
}
\ No newline at end of file
diff --git a/modules/fbtrace.js b/modules/fbtrace.js
index bc972c5..b216368 100644
--- a/modules/fbtrace.js
+++ b/modules/fbtrace.js
@@ -1,12 +1,12 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Our global trace object.
-
-var EXPORTED_SYMBOLS = ["FBTrace"];
-
-var scope = {};
-Components.utils["import"]("resource://firebug/firebug-trace-service.js", scope);
-var FBTrace = scope.traceConsoleService.getTracer("extensions.firebug");
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Our global trace object.
+
+var EXPORTED_SYMBOLS = ["FBTrace"];
+
+var scope = {};
+Components.utils["import"]("resource://firebug/firebug-trace-service.js", scope);
+var FBTrace = scope.traceConsoleService.getTracer("extensions.firebug");
+
+// ********************************************************************************************* //
diff --git a/modules/firebug-http-observer.js b/modules/firebug-http-observer.js
index 5f0f8d6..c524d8b 100644
--- a/modules/firebug-http-observer.js
+++ b/modules/firebug-http-observer.js
@@ -1,226 +1,226 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-const Cu = Components.utils;
-
-var EXPORTED_SYMBOLS = ["httpRequestObserver"];
-
-var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
-var categoryManager = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
-
-Cu["import"]("resource://firebug/fbtrace.js");
-
-// ********************************************************************************************* //
-// HTTP Request Observer implementation
-
-/**
- * @service This service is intended as the only HTTP observer registered by Firebug.
- * All FB extensions and Firebug itself should register a listener within this
- * service in order to listen for http-on-modify-request, http-on-examine-response and
- * http-on-examine-cached-response events.
- *
- * See also: <a href="http://developer.mozilla.org/en/Setting_HTTP_request_headers">
- * Setting_HTTP_request_headers</a>
- */
-var httpRequestObserver =
-/** lends HttpRequestObserver */
-{
- preInitialize: function()
- {
- this.observers = [];
- this.observing = 0;
- this.initialize();
- },
-
- initialize: function()
- {
- observerService.addObserver(this, "quit-application", false);
-
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.initialize OK");
- },
-
- shutdown: function()
- {
- observerService.removeObserver(this, "quit-application");
-
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.shutdown OK");
- },
-
- registerObservers: function()
- {
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.registerObservers; wasObserving: " +
- this.observing + " with observers "+this.observers.length, this.observers);
-
- if (!this.observing)
- {
- observerService.addObserver(this, "http-on-opening-request", false);
- observerService.addObserver(this, "http-on-modify-request", false);
- observerService.addObserver(this, "http-on-examine-response", false);
- observerService.addObserver(this, "http-on-examine-cached-response", false);
- }
-
- this.observing = true;
- },
-
- unregisterObservers: function()
- {
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.unregisterObservers; wasObserving: " +
- this.observing + " with observers "+this.observers.length, this.observers);
-
- if (this.observing)
- {
- observerService.removeObserver(this, "http-on-opening-request");
- observerService.removeObserver(this, "http-on-modify-request");
- observerService.removeObserver(this, "http-on-examine-response");
- observerService.removeObserver(this, "http-on-examine-cached-response");
- }
-
- this.observing = false;
- },
-
- /* nsIObserve */
- observe: function(subject, topic, data)
- {
- if (topic == "quit-application")
- {
- this.shutdown();
- return;
- }
-
- try
- {
- if (!(subject instanceof Ci.nsIHttpChannel))
- return;
-
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.observe " + (topic ? topic.toUpperCase() : topic) +
- ", " + safeGetName(subject));
-
- // Notify all registered observers.
- if (topic == "http-on-opening-request" ||
- topic == "http-on-modify-request" ||
- topic == "http-on-examine-response" ||
- topic == "http-on-examine-cached-response")
- {
- this.notifyObservers(subject, topic, data);
- }
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("httpObserver.observe EXCEPTION", err);
- }
- },
-
- /* nsIObserverService */
- addObserver: function(observer, topic, weak)
- {
- if (!topic)
- topic = "firebug-http-event";
-
- if (topic != "firebug-http-event")
- throw Cr.NS_ERROR_INVALID_ARG;
-
- this.observers.push(observer);
-
- if (this.observers.length > 0)
- this.registerObservers();
- },
-
- removeObserver: function(observer, topic)
- {
- if (!topic)
- topic = "firebug-http-event";
-
- if (topic != "firebug-http-event")
- throw Cr.NS_ERROR_INVALID_ARG;
-
- for (var i=0; i<this.observers.length; i++)
- {
- if (this.observers[i] == observer)
- {
- this.observers.splice(i, 1);
-
- if (this.observers.length == 0)
- this.unregisterObservers();
-
- return;
- }
- }
-
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.removeObserver FAILED (no such observer)");
- },
-
- notifyObservers: function(subject, topic, data)
- {
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.notifyObservers (" + this.observers.length + ") " + topic);
-
- for (var i=0; i<this.observers.length; i++)
- {
- var observer = this.observers[i];
- try
- {
- if (observer.observe)
- observer.observe(subject, topic, data);
- }
- catch (err)
- {
- if (FBTrace.DBG_HTTPOBSERVER)
- FBTrace.sysout("httpObserver.notifyObservers; EXCEPTION " + err, err);
- }
- }
- }
-};
-
-// ********************************************************************************************* //
-// Request helpers
-
-function safeGetName(request)
-{
- try
- {
- return request.name;
- }
- catch (exc)
- {
- }
-
- return null;
-}
-
-// ********************************************************************************************* //
-// Debugging Helpers
-
-function dumpStack(message)
-{
- dump(message + "\n");
-
- for (var frame = Components.stack, i = 0; frame; frame = frame.caller, i++)
- {
- if (i < 1)
- continue;
-
- var fileName = unescape(frame.filename ? frame.filename : "");
- var lineNumber = frame.lineNumber ? frame.lineNumber : "";
-
- dump(fileName + ":" + lineNumber + "\n");
- }
-}
-
-// ********************************************************************************************* //
-// Initialization
-
-httpRequestObserver.preInitialize();
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+const Cu = Components.utils;
+
+var EXPORTED_SYMBOLS = ["httpRequestObserver"];
+
+var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
+var categoryManager = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
+
+Cu["import"]("resource://firebug/fbtrace.js");
+
+// ********************************************************************************************* //
+// HTTP Request Observer implementation
+
+/**
+ * @service This service is intended as the only HTTP observer registered by Firebug.
+ * All FB extensions and Firebug itself should register a listener within this
+ * service in order to listen for http-on-modify-request, http-on-examine-response and
+ * http-on-examine-cached-response events.
+ *
+ * See also: <a href="http://developer.mozilla.org/en/Setting_HTTP_request_headers">
+ * Setting_HTTP_request_headers</a>
+ */
+var httpRequestObserver =
+/** lends HttpRequestObserver */
+{
+ preInitialize: function()
+ {
+ this.observers = [];
+ this.observing = 0;
+ this.initialize();
+ },
+
+ initialize: function()
+ {
+ observerService.addObserver(this, "quit-application", false);
+
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.initialize OK");
+ },
+
+ shutdown: function()
+ {
+ observerService.removeObserver(this, "quit-application");
+
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.shutdown OK");
+ },
+
+ registerObservers: function()
+ {
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.registerObservers; wasObserving: " +
+ this.observing + " with observers "+this.observers.length, this.observers);
+
+ if (!this.observing)
+ {
+ observerService.addObserver(this, "http-on-opening-request", false);
+ observerService.addObserver(this, "http-on-modify-request", false);
+ observerService.addObserver(this, "http-on-examine-response", false);
+ observerService.addObserver(this, "http-on-examine-cached-response", false);
+ }
+
+ this.observing = true;
+ },
+
+ unregisterObservers: function()
+ {
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.unregisterObservers; wasObserving: " +
+ this.observing + " with observers "+this.observers.length, this.observers);
+
+ if (this.observing)
+ {
+ observerService.removeObserver(this, "http-on-opening-request");
+ observerService.removeObserver(this, "http-on-modify-request");
+ observerService.removeObserver(this, "http-on-examine-response");
+ observerService.removeObserver(this, "http-on-examine-cached-response");
+ }
+
+ this.observing = false;
+ },
+
+ /* nsIObserve */
+ observe: function(subject, topic, data)
+ {
+ if (topic == "quit-application")
+ {
+ this.shutdown();
+ return;
+ }
+
+ try
+ {
+ if (!(subject instanceof Ci.nsIHttpChannel))
+ return;
+
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.observe " + (topic ? topic.toUpperCase() : topic) +
+ ", " + safeGetName(subject));
+
+ // Notify all registered observers.
+ if (topic == "http-on-opening-request" ||
+ topic == "http-on-modify-request" ||
+ topic == "http-on-examine-response" ||
+ topic == "http-on-examine-cached-response")
+ {
+ this.notifyObservers(subject, topic, data);
+ }
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("httpObserver.observe EXCEPTION", err);
+ }
+ },
+
+ /* nsIObserverService */
+ addObserver: function(observer, topic, weak)
+ {
+ if (!topic)
+ topic = "firebug-http-event";
+
+ if (topic != "firebug-http-event")
+ throw Cr.NS_ERROR_INVALID_ARG;
+
+ this.observers.push(observer);
+
+ if (this.observers.length > 0)
+ this.registerObservers();
+ },
+
+ removeObserver: function(observer, topic)
+ {
+ if (!topic)
+ topic = "firebug-http-event";
+
+ if (topic != "firebug-http-event")
+ throw Cr.NS_ERROR_INVALID_ARG;
+
+ for (var i=0; i<this.observers.length; i++)
+ {
+ if (this.observers[i] == observer)
+ {
+ this.observers.splice(i, 1);
+
+ if (this.observers.length == 0)
+ this.unregisterObservers();
+
+ return;
+ }
+ }
+
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.removeObserver FAILED (no such observer)");
+ },
+
+ notifyObservers: function(subject, topic, data)
+ {
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.notifyObservers (" + this.observers.length + ") " + topic);
+
+ for (var i=0; i<this.observers.length; i++)
+ {
+ var observer = this.observers[i];
+ try
+ {
+ if (observer.observe)
+ observer.observe(subject, topic, data);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_HTTPOBSERVER)
+ FBTrace.sysout("httpObserver.notifyObservers; EXCEPTION " + err, err);
+ }
+ }
+ }
+};
+
+// ********************************************************************************************* //
+// Request helpers
+
+function safeGetName(request)
+{
+ try
+ {
+ return request.name;
+ }
+ catch (exc)
+ {
+ }
+
+ return null;
+}
+
+// ********************************************************************************************* //
+// Debugging Helpers
+
+function dumpStack(message)
+{
+ dump(message + "\n");
+
+ for (var frame = Components.stack, i = 0; frame; frame = frame.caller, i++)
+ {
+ if (i < 1)
+ continue;
+
+ var fileName = unescape(frame.filename ? frame.filename : "");
+ var lineNumber = frame.lineNumber ? frame.lineNumber : "";
+
+ dump(fileName + ":" + lineNumber + "\n");
+ }
+}
+
+// ********************************************************************************************* //
+// Initialization
+
+httpRequestObserver.preInitialize();
+
+// ********************************************************************************************* //
diff --git a/modules/firebug-service.js b/modules/firebug-service.js
index 691607a..cbd9f4f 100644
--- a/modules/firebug-service.js
+++ b/modules/firebug-service.js
@@ -1,4698 +1,4698 @@
-/* See license.txt for terms of usage */
-
-// Debug lines are marked with at column 120
-// Use variable name "fileName" for href returned by JSD, file:/ not same as DOM
-// Use variable name "url" for normalizedURL, file:/// comparable to DOM
-// Convert from fileName to URL with normalizeURL
-// We probably don't need denormalizeURL since we don't send .fileName back to JSD
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-const PrefService = Cc["@mozilla.org/preferences-service;1"];
-const DebuggerService = Cc["@mozilla.org/js/jsd/debugger-service;1"];
-const ConsoleService = Cc["@mozilla.org/consoleservice;1"];
-const Timer = Cc["@mozilla.org/timer;1"];
-const ObserverServiceFactory = Cc["@mozilla.org/observer-service;1"];
-
-const jsdIDebuggerService = Ci.jsdIDebuggerService;
-const jsdIScript = Ci.jsdIScript;
-const jsdIStackFrame = Ci.jsdIStackFrame;
-const jsdICallHook = Ci.jsdICallHook;
-const jsdIExecutionHook = Ci.jsdIExecutionHook;
-const jsdIErrorHook = Ci.jsdIErrorHook;
-const jsdIFilter = Components.interfaces.jsdIFilter;
-const nsISupports = Ci.nsISupports;
-const nsIPrefBranch = Ci.nsIPrefBranch;
-const nsIComponentRegistrar = Ci.nsIComponentRegistrar;
-const nsIFactory = Ci.nsIFactory;
-const nsIConsoleService = Ci.nsIConsoleService;
-const nsITimer = Ci.nsITimer;
-const nsITimerCallback = Ci.nsITimerCallback;
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-const NS_ERROR_NO_INTERFACE = Components.results.NS_ERROR_NO_INTERFACE;
-const NS_ERROR_NOT_IMPLEMENTED = Components.results.NS_ERROR_NOT_IMPLEMENTED;
-const NS_ERROR_NO_AGGREGATION = Components.results.NS_ERROR_NO_AGGREGATION;
-
-const PCMAP_SOURCETEXT = jsdIScript.PCMAP_SOURCETEXT;
-const PCMAP_PRETTYPRINT = jsdIScript.PCMAP_PRETTYPRINT;
-
-const COLLECT_PROFILE_DATA = jsdIDebuggerService.COLLECT_PROFILE_DATA;
-const DISABLE_OBJECT_TRACE = jsdIDebuggerService.DISABLE_OBJECT_TRACE;
-const HIDE_DISABLED_FRAMES = jsdIDebuggerService.HIDE_DISABLED_FRAMES;
-const DEBUG_WHEN_SET = jsdIDebuggerService.DEBUG_WHEN_SET;
-const MASK_TOP_FRAME_ONLY = jsdIDebuggerService.MASK_TOP_FRAME_ONLY;
-
-const TYPE_FUNCTION_CALL = jsdICallHook.TYPE_FUNCTION_CALL;
-const TYPE_FUNCTION_RETURN = jsdICallHook.TYPE_FUNCTION_RETURN;
-const TYPE_TOPLEVEL_START = jsdICallHook.TYPE_TOPLEVEL_START;
-const TYPE_TOPLEVEL_END = jsdICallHook.TYPE_TOPLEVEL_END;
-
-const RETURN_CONTINUE = jsdIExecutionHook.RETURN_CONTINUE;
-const RETURN_VALUE = jsdIExecutionHook.RETURN_RET_WITH_VAL;
-const RETURN_THROW_WITH_VAL = jsdIExecutionHook.RETURN_THROW_WITH_VAL;
-const RETURN_CONTINUE_THROW = jsdIExecutionHook.RETURN_CONTINUE_THROW;
-
-const NS_OS_TEMP_DIR = "TmpD";
-
-const STEP_OVER = 1;
-const STEP_INTO = 2;
-const STEP_OUT = 3;
-const STEP_SUSPEND = 4;
-
-const TYPE_ONE_SHOT = nsITimer.TYPE_ONE_SHOT;
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-const BP_NORMAL = 1;
-const BP_MONITOR = 2;
-const BP_UNTIL = 4;
-const BP_ONRELOAD = 8; // XXXjjb: This is a mark for the UI to test
-const BP_ERROR = 16;
-const BP_TRACE = 32; // BP used to initiate traceCalls
-
-const LEVEL_TOP = 1;
-const LEVEL_EVAL = 2;
-const LEVEL_EVENT = 3;
-
-const COMPONENTS_FILTERS = [
- new RegExp("^(file:/.*/)extensions/%7B[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}%7D/components/.*\\.js$"),
- new RegExp("^(file:/.*/)extensions/firebug at software\\.joehewitt\\.com/modules/.*\\.js$"),
- new RegExp("^(file:/.*/extensions/)\\w+ at mozilla\\.org/components/.*\\.js$"),
- new RegExp("^(file:/.*/components/)ns[A-Z].*\\.js$"),
- new RegExp("^(file:/.*/modules/)firebug-[^\\.]*\\.js$"),
- new RegExp("^(file:/.*/Contents/MacOS/extensions/.*/components/).*\\.js$"),
- new RegExp("^(file:/.*/modules/).*\\.jsm$"),
-];
-
-const reDBG = /DBG_(.*)/;
-const reXUL = /\.xul$|\.xml$/;
-
-Cu.import("resource://firebug/prefLoader.js");
-
-var getPref = PrefLoader.getPref;
-
-// ********************************************************************************************* //
-// Globals
-
-//https://developer.mozilla.org/en/Using_JavaScript_code_modules
-var EXPORTED_SYMBOLS = ["fbs"];
-
-var jsd, prefs;
-var observerService;
-
-var contextCount = 0;
-
-var urlFilters = [
- 'chrome://',
- 'XStringBundle',
- 'x-jsd:ppbuffer?type=function', // internal script for pretty printing
-];
-
-var clients = [];
-var debuggers = [];
-var netDebuggers = [];
-var scriptListeners = [];
-
-var hookFrameCount = 0;
-
-var haltObject = null; // For reason unknown, fbs.haltDebugger will not work.
-
-var breakpointCount = 0;
-
-// These are an optimization I guess, marking whether we are using this feature anywhere.
-var disabledCount = 0;
-var monitorCount = 0;
-var conditionCount = 0;
-var runningUntil = null;
-
-var errorBreakpoints = [];
-
-var profileCount = 0;
-var profileStart;
-
-var enabledDebugger = false;
-var reportNextError = false;
-var errorInfo = null;
-
-var timer = Timer.createInstance(nsITimer);
-var waitingForTimer = false;
-
-Cu.import("resource://firebug/fbtrace.js");
-
-// ********************************************************************************************* //
-
-function frameId(frame, depth)
-{
- if (frame)
- return frame.script.tag+"@"+frame.line+"^"+depth;
- else
- return "noIdForNoframe";
-}
-
-// xxxHonza: duplicated in lib.js, there should be a shared module with this API.
-function extend(l,r)
-{
- var newOb = {};
- for (var n in l)
- newOb[n] = l[n];
- for (var n in r)
- newOb[n] = r[n];
- return newOb;
-}
-
-// ********************************************************************************************* //
-// jsdICallHook or jsdIExecutionHook.
-
-var jsdHandlers =
-{
- hooks: [],
-
- // Stage for activation when 'hook' is called
- add: function(aHook)
- {
- if (!aHook)
- ERROR("firebug-service.jsdHandlers.add: null hook");
-
- this.hooks.push(aHook);
-
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs.Hooks.add; " + aHook.mode + ", active hooks: " +
- this.hooks.length);
- },
-
- remove: function(aHook)
- {
- var i = this.hooks.indexOf(aHook);
- if (i != -1)
- {
- this.hooks.splice(i, 1);
-
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs.Hooks.remove; " + aHook.mode + ", active hooks: " +
- this.hooks.length);
- }
- else
- {
- ERROR("firebug-service.Hooks.unhook ERROR, no such hook " +
- aHook.name, {aHook: aHook, Hooks: this});
- }
- },
-
- // activate hooks
- hook: function(frame)
- {
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs.start hooks " + this.hooks.length + " hooks active " +
- frameToString(frame), this);
-
- for (var i = 0; i < this.hooks.length; i++)
- {
- var aHook = this.hooks[i];
-
- aHook.hook(frame);
-
- if ("onFunctionCall" in aHook || "onFunctionReturn" in aHook)
- fbs.hookFunctions();
-
- if ("onInterrupt" in aHook)
- fbs.hookInterrupts(frame);
- }
- },
-
- unhook: function(frame)
- {
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs.stop hooks "+this.hooks.length+" hooks active", this);
-
- this.checkForUnhookFunctions(frame);
- this.checkForUnhookInterrupts(frame);
- },
-
- checkForUnhookFunctions: function(frame)
- {
- for (var i = 0; i < this.hooks.length; i++)
- {
- var aHook = this.hooks[i];
-
- aHook.unhook(frame);
-
- if ("onFunctionCall" in aHook || "onFunctionReturn" in aHook)
- return;
- }
-
- fbs.unhookFunctions();
- },
-
- checkForUnhookInterrupts: function(frame)
- {
- for (var i = 0; i < this.hooks.length; i++)
- {
- var aHook = this.hooks[i];
-
- if ("onInterrupt" in aHook)
- return;
- }
-
- fbs.unhookInterrupts(); // none found
- },
-
- dispatch: function(methodName, frame, type, rv)
- {
- for (var i = 0; i < this.hooks.length; i++)
- {
- var aHook = this.hooks[i];
- if (methodName in aHook)
- {
- if (FBTrace.DBG_FBS_STEP && FBTrace.DBG_DISPATCH)
- FBTrace.sysout("fbs.jsdHandler.dispatch " + methodName +
- " to " + aHook + " " + getCallFromType(type) + " frame: " +
- frameToString(frame), this);
-
- var rc = aHook[methodName].apply(aHook, [frame, type, rv]);
- if (typeof(rc) != "undefined" || rc !== RETURN_CONTINUE)
- return rc;
- }
- }
-
- return RETURN_CONTINUE;
- }
-};
-
-// ********************************************************************************************* //
-// Break on Next
-
-function BreakOnNextCall(debuggr, context)
-{
- this.debuggr = debuggr;
- this.context = context;
-}
-
-BreakOnNextCall.prototype =
-{
- mode: "BON",
-
- hook: function(frame)
- {
- },
-
- unhook: function(frame)
- {
- },
-
- // the frame will be running the calling script
- hit: function(frame, type)
- {
- fbs.cancelBreakOnNextCall(this.debuggr, this.context);
-
- var rv = {};
- return fbs.routeBreakToDebuggr(frame, type, rv, this.debuggr);
- },
-
- onFunctionCall: function(frame, type)
- {
- if (!this.context || !this.context.sourceFileByTag)
- return ERROR("onFunctionCall ERROR invalid context ");
-
- var lucky = this.context.getSourceFileByTag(frame.script.tag);
- if (!lucky) // then function running the frame is not in this context
- {
- // then we could be running an outer function from a new compilation unit
- if (!frame.callingFrame)
- {
- var val = {};
-
- // then the function could have just been added to the context
- if (fbs.isTopLevelScript(frame, type, val))
- lucky = this.context.getSourceFileByTag(frame.script.tag);
- }
- }
-
- if (lucky) // then we hit in a function in our context
- {
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs.breakOnNextTopFunction hits at "+getCallFromType(type)+" at "+
- frame.script.fileName+" tag:"+(lucky?"LUCKY WINNER":frame.script.tag),
- framesToString(frame));
-
- return this.hit(frame, type);
- }
-
- // else maybe we hit on a event unrelated to our context
- },
-};
-
-// Stack segments
-// When frame.callingFrame is null then we are starting a new stack segment
-// FrameId track call stack
-// segment0.fnc1 !callingFrame !this.callingFrameId
-// segment0.fnc2 this.callingFrameId == segment0.fnc1
-// ...
-// segment1.fnc44 !callingFrame this.callingFrameId == fnc2.segment0
-// segment1.fnc45
-//
-
-// ********************************************************************************************* //
-// Stepper: Step Out Implementation
-
-/**
- * @class This object implements "step out" debugger feature. In other words run until
- * the current function returns, then stop in the caller.
- */
-function OutStepper(debuggr, context)
-{
- this.debuggr = debuggr;
- this.context = context;
-
- if (!this.debuggr)
- ERROR("firebug-service.OutStepper no debuggr");
-}
-
-OutStepper.prototype =
-/** @lends OutStepper */
-{
- mode: "STEP_OUT",
-
- getCallingFrameId: function(frame)
- {
- if (frame.callingFrame)
- return frameId(frame.callingFrame, this.depth);
-
- var debuggr = fbs.reFindDebugger(frame, this.debuggr);
- if (debuggr && debuggr.breakContext)
- return debuggr.breakContext.getName(); // TODO segments
- },
-
- hook: function(frame)
- {
- this.depth = 0;
-
- if (frame)
- {
- this.startFrameId = frameId(frame, 0);
- this.callingFrameId = this.getCallingFrameId(frame);
-
- if (!this.callingFrameId)
- ERROR("OutStepper.hook cannot find callingFrame ", this);
-
- this.startFrameTag = frame.script.tag;
- }
- else
- {
- ERROR("OutStepper.hook no frame ");
- }
-
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs." + this.mode+" hook with frame "+frameToString(frame)+
- " with callingFrameId "+this.callingFrameId, this);
-
- return true;
- },
-
- // the frame will be running the called script
- onFunctionCall: function stepFunctionCall(frame, type)
- {
- var callingFrameId = this.getCallingFrameId(frame);
-
- if (this.callingFrameId === callingFrameId) // then it is our caller
- {
- this.depth++;
- this.callingFrameId = callingFrameId; // push new id for stepFunctionReturn
-
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs." + this.mode+" stepFunctionCall new depth "+this.depth+
- " new callingFrameId "+this.callingFrameId);
- }
-
- // else someone else, ignore it
- },
-
- // the frame will be running the called script
- onFunctionReturn: function stepFunctionReturn(frame, type)
- {
- var callingFrameId = this.getCallingFrameId(frame);
- if (this.callingFrameId === callingFrameId) // then it is our caller
- {
- if (this.depth) // but we are not back to our caller
- {
- this.depth--;
- this.callingFrameId = callingFrameId; // recursion
- return;
- }
- else // then we are back to the frame we started on
- {
- if (frame.callingFrame)
- return this.hit(frame.callingFrame, type);
-
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs.OutStepper.onFunctionReturn no calling frame " +
- frameToString(frame) + ", " + getCallFromType(type), this);
-
- jsdHandlers.unhook(frame); // we are done here
- jsdHandlers.remove(this);
- return;
- }
- }
-
- // Then we are returning with out ever calling stepFunctionCall,
- // but on a frame we care about.
- if (!this.callingFrameId && callingFrameId)
- {
- // Then are returning from the frame we care about.
- if (frame.script.tag === this.startFrameTag)
- {
- if (frame.callingFrame)
- return this.hit(frame.callingFrame, type);
- else
- ERROR("Should be top level just exit", this);
- }
-
- ERROR("Returning from a frame we care about but not one we know " +
- frameToString(frame), this);
- }
-
- // else it's is not a frame we care about
- if (FBTrace.DBG_FBS_STEP)
- {
- FBTrace.sysout("fbs." + this.mode + ".onFunctionReturn callingFrameId " +
- callingFrameId + " called frame " + frameToString(frame), this);
- }
- },
-
- unhook: function(frame)
- {
- },
-
- hit: function(frame, type, rv)
- {
- if (FBTrace.DBG_FBS_STEP)
- {
- FBTrace.sysout("fbs." + this.mode + " hit " + getCallFromType(type) + " at " +
- frameToString(frame), this);
- }
-
- var debuggr = fbs.reFindDebugger(frame, this.debuggr);
- if (debuggr)
- {
- jsdHandlers.unhook(frame);
- jsdHandlers.remove(this);
-
- rv = {};
-
- return fbs.breakIntoDebugger(debuggr, frame, type);
- }
-
- return ERROR("Hit but debuggr did not match "+this.debuggr.debuggerName+" in frame "+
- frameToString(frame), this);
- },
-
- toString: function()
- {
- if (!this.context.getName)
- FBTrace.sysout("fbs.this.context.getName ", this.context);
-
- return this.mode + " for "+this.context.getName();
- },
-};
-
-// ********************************************************************************************* //
-// Stepper: Step Over Implementation
-
-/**
- * @class This oject implements "step over". I's like {@link OutStepper}, but run a single
- * line in this function.
- */
-function LineStepper(debuggr, context)
-{
- this.context = context;
- this.debuggr = debuggr;
-}
-
-LineStepper.prototype = extend(OutStepper.prototype,
-/** @lends LineStepper */
-{
- mode: "STEP_OVER",
-
- hook: function hookLineStepper(frame)
- {
- OutStepper.prototype.hook.apply(this, arguments); // hook functions
-
- this.lineFrameId = frameId(frame, this.depth);
- this.stepFrameTag = frame.script.tag;
-
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs." + this.mode + ".hook " + frameToString(frame) +
- " with lineFrameId " + this.lineFrameId, this);
- },
-
- unhook: function unhookLineStepper(frame)
- {
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs." + this.mode + ".hook; unhook " + frameToString(frame));
- },
-
- // jsdIExecutionHook, onExecute
- onInterrupt: function stepLine(frame, type, rv)
- {
- if (this.stepFrameTag !== frame.script.tag) // then we stepped into another function
- {
- // We'd have much bettter performance if we set a new OutStepper here then remove
- // interrupt hook until it hits.
- return RETURN_CONTINUE;
- }
-
- // Sometimes the same line will have multiple interrupts, so check
- // a unique id for the line and don't break until it changes
- var frameLineId = frameId(frame, this.depth);
-
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs." + this.mode + " interruptHook pc:" + frame.pc +
- " frameLineId: " + frameLineId + " vs " + this.lineFrameId + " running " +
- frame.script.tag + " of " + frame.script.fileName +
- " at " + frame.line + "." + frame.pc, this);
-
- if (frameLineId != this.lineFrameId)
- return this.hit(frame, type, rv);
- else
- return RETURN_CONTINUE;
- },
-
- toString: function()
- {
- if (!this.context.getName)
- FBTrace.sysout("fbs.this.context.getName ", this.context);
-
- return this.mode + " for "+this.context.getName();
- },
-});
-
-// ********************************************************************************************* //
-// Stepper: Step In Implementation
-
-/**
- * @class This oject implements "step in". I's like {@link OutStepper}, but if the line
- * calls a function, stop on its first line
- */
-function IntoStepper(debuggr, context)
-{
- this.context = context;
- this.debuggr = debuggr;
-}
-
-IntoStepper.prototype = extend(LineStepper.prototype,
-/** @lends IntoStepper */
-{
- mode: "STEP_INTO",
-
- hook: function(frame)
- {
- LineStepper.prototype.hook.apply(this, arguments); // hook functions and interrupts
- },
-
- // the frame will be running the called script
- onFunctionCall: function intoFunctionCall(frame, type)
- {
- var callingFrame = frame.callingFrame;
- if (callingFrame)
- {
- // Skip functions running in the frame that is not in this context (issue 3077)
- var lucky = this.context.getSourceFileByTag(frame.script.tag);
- if (!lucky)
- return;
-
- // then we stepped into from our caller
- if (this.stepFrameTag === callingFrame.script.tag)
- return this.hit(frame, type);
-
- // else someone else, ignore it
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs." + this.mode + ".intoFunctionCall no match " +
- this.stepFrameTag + " vs " + callingFrame.script.tag, this);
- }
-
- // else this would be a top level call, do we want to check for
- // another event from this context?
- },
-});
-
-// ********************************************************************************************* //
-// Function Stepper/Tracer
-
-/**
- * Tracer for learning about function stepping, not part of firebug
- */
-function LogFunctionStepper()
-{
- //xxxjjb: not defined this.initialize();
-}
-
-LogFunctionStepper.prototype =
-{
- hook: function()
- {
- fbs.inDebuggerSetupStack = true;
- },
-
- stop: function()
- {
- delete fbs.stackDescription;
- },
-
- // the frame will be running the called script
- onFunctionCall: function logFunctionCall(frame, type)
- {
- if (fbs.inDebuggerSetupStack) // then we are still in the debugger set up code
- return;
-
- if (!fbs.stackDescription)
- fbs.stackDescription = { oldestTag: frame.script.tag, depth: 1, entries: [] };
- else
- fbs.stackDescription.depth++;
-
- this.logFunction(frame, type);
- },
-
- // the frame will be running the called script
- onFunctionReturn: function logFunctionReturn(frame, type)
- {
- if (fbs.inDebuggerSetupStack) // then we are still in the debugger set up code
- {
- if (!frame.callingFrame) // then done with setup
- delete fbs.inDebuggerSetupStack;
-
- return;
- }
-
- if (!fbs.stackDescription)
- fbs.stackDescription = { oldestTag: "Return first!", depth: 0, entries: [] };
- fbs.stackDescription.depth--;
-
- this.logFunction(frame, type);
-
- if (!frame.callingFrame)
- {
- if (FBTrace.DBG_FBS_STEP)
- {
- var diff = (fbs.stackDescription.oldestTag !== frame.script.tag);
- FBTrace.sysout("fbs.Stack ends at depth "+fbs.stackDescription.depth +
- (diff ? " NO Match on tag " : " tags match"), fbs.stackDescription.entries);
- }
-
- fbs.stackDescription.entries = [];
- }
-
- if (!fbs.stackDescription.depth)
- delete fbs.stackDescription;
- },
-
- logFunction: function(frame, type)
- {
- var typeName = getCallFromType(type);
- var actualFrames = countFrames(frame);
- fbs.stackDescription.entries.push(""+fbs.stackDescription.depth+
- ": "+typeName +
- " (frameCount: "+actualFrames+") " +
- " oldestTag "+fbs.stackDescription.oldestTag+
- " running "+frame.script.tag+" of "+frame.script.fileName+" at "+
- frame.line+"."+frame.pc);
- },
-};
-
-// ********************************************************************************************* //
-// Firebug Service
-
-var fbs =
-{
- initialize: function()
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.FirebugService Starting");
-
- fbs = this;
-
- this.wrappedJSObject = this; // XXXjjb remove this and the one in debugger
- this.timeStamp = new Date(); /* explore */
-
- Components.utils.import("resource://firebug/debuggerHalter.js");
- fbs.debuggerHalter = debuggerHalter; // ref to a function in a file that passes the jsdIFilter
-
- fbs.restoreBreakpoints();
-
- this.onDebugRequests = 0; // the number of times we called onError but did not call onDebug
-
-
- if (FBTrace.DBG_FBS_ERRORS)
- this.osOut("FirebugService Starting, FBTrace should be up\n");
-
- this.profiling = false;
-
- prefs = PrefService.getService(nsIPrefBranch);
- fbs.prefDomain = "extensions.firebug";
- prefs.addObserver(fbs.prefDomain, fbs, false);
-
- observerService = ObserverServiceFactory.getService(Ci.nsIObserverService);
- observerService.addObserver(QuitApplicationGrantedObserver, "quit-application-granted", false);
- observerService.addObserver(QuitApplicationRequestedObserver, "quit-application-requested", false);
- observerService.addObserver(QuitApplicationObserver, "quit-application", false);
-
- this.scriptsFilter = "all";
- this.alwayFilterURLsStarting = ["chrome://chromebug", "x-jsd:ppbuffer"]; // TODO allow override
- this.onEvalScriptCreated.kind = "eval";
- this.onTopLevelScriptCreated.kind = "top-level";
- this.onEventScriptCreated.kind = "event";
- this.onXULScriptCreated.kind = "xul";
- this.pendingXULScripts = [];
-
- this.onXScriptCreatedByTag = {}; // fbs functions by script tag
- this.nestedScriptStack = []; // scripts contained in leveledScript that have not been drained
-
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.FirebugService Initialized");
- },
-
- osOut: function(str)
- {
- if (!this.outChannel)
- {
- try
- {
- var appShellService = Components.classes["@mozilla.org/appshell/appShellService;1"].
- getService(Components.interfaces.nsIAppShellService);
- this.hiddenWindow = appShellService.hiddenDOMWindow;
- this.outChannel = "hidden";
- }
- catch(exc)
- {
- consoleService = Cc["@mozilla.org/consoleservice;1"].getService(Ci.nsIConsoleService);
- consoleService.logStringMessage("Using consoleService because " +
- "nsIAppShellService.hiddenDOMWindow not available "+exc);
-
- this.outChannel = "service";
- }
- }
-
- if (this.outChannel === "hidden") // apparently can't call via JS function
- this.hiddenWindow.dump(str);
- else
- consoleService.logStringMessage(str);
- },
-
- shutdown: function() // call disableDebugger first
- {
- timer = null;
-
- try
- {
- prefs.removeObserver(fbs.prefDomain, fbs, false);
- }
- catch (exc)
- {
- FBTrace.sysout("fbs.prefs.removeObserver ERROR "+exc, exc);
- }
-
- try
- {
- observerService.removeObserver(QuitApplicationGrantedObserver, "quit-application-granted");
- observerService.removeObserver(QuitApplicationRequestedObserver, "quit-application-requested");
- observerService.removeObserver(QuitApplicationObserver, "quit-application");
- }
- catch (exc)
- {
- FBTrace.sysout("fbs.quit-application-observers removeObserver ERROR "+exc, exc);
- }
-
- if (!jsd)
- return;
-
- try
- {
- do
- {
- var depth = jsd.exitNestedEventLoop();
- }
- while(depth > 0);
- }
- catch (exc)
- {
- // Seems to be the normal path...
- // FBTrace.sysout("fbs.FirebugService, attempt to exitNestedEventLoop ERROR "+exc);
- }
-
- // make sure to unregister all the hooks
- var hookNames = ["error", "script", "breakpoint", "debugger", "debug", "interrupt",
- "throw", "topLevel", "function", "debug"];
- for (var i=0; i<hookNames.length; i++)
- {
- var hook = hookNames[i];
- try
- {
- jsd[hook + "Hook"] = null;
- }
- catch (exc)
- {
- FBTrace.sysout("fbs.quit-application-observers removeObserver ERROR "+exc, exc);
- }
- }
- jsd = null;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // nsISupports
-
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsISupports))
- throw NS_ERROR_NO_INTERFACE;
-
- return this;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // nsIObserver
-
- observe: function(subject, topic, data)
- {
- if(topic != "nsPref:changed") return;
- fbs.obeyPrefs();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- registerClient: function(client) // clients are essentially XUL windows
- {
- if (!client)
- throw new Error("firebug-service cannot register client: "+client);
-
- clients.push(client);
- return clients.length;
- },
-
- unregisterClient: function(client)
- {
- for (var i = 0; i < clients.length; ++i)
- {
- if (clients[i] == client)
- {
- clients.splice(i, 1);
- break;
- }
- }
- },
-
- // first one in will be last one called. Returns state enabledDebugger
- registerDebugger: function(debuggrWrapper)
- {
- var debuggr = debuggrWrapper.wrappedJSObject;
-
- if (debuggr)
- {
- var anyDebuggers = (debuggers.length === 1);
-
- var i = debuggers.indexOf(debuggr);
- if (i === -1)
- {
- debuggers.push(debuggr);
- if (!anyDebuggers)
- this.enableDebugger();
- }
-
- if (FBTrace.DBG_FBS_FINDDEBUGGER || FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("fbs.registerDebugger have "+debuggers.length+
- " after reg debuggr.debuggerName: "+debuggr.debuggerName+" we are "+
- (enabledDebugger?"enabled":"not enabled")+" " + "On:"+(jsd?jsd.isOn:"no jsd")+
- " jsd.pauseDepth:"+(jsd?jsd.pauseDepth:"off"));
- }
- else
- {
- var err = new Error("firebug-service debuggers must have wrappedJSObject ");
- err.debuggrWrapper = debuggrWrapper;
- throw err;
- }
-
- try
- {
- if (debuggr.suspendActivity)
- netDebuggers.push(debuggr);
- }
- catch(exc)
- {
- }
-
- try
- {
- if (debuggr.onScriptCreated) // TODO xxxjjb: I don't know who uses this, remove it?
- scriptListeners.push(debuggr);
- }
- catch(exc)
- {
- }
-
- return debuggers.length; // 1.3.1 return to allow Debugger to check progress
- },
-
- unregisterDebugger: function(debuggrWrapper)
- {
- var debuggr = debuggrWrapper.wrappedJSObject;
-
- for (var i = 0; i < debuggers.length; ++i)
- {
- if (debuggers[i] == debuggr)
- {
- debuggers.splice(i, 1);
- break;
- }
- }
-
- for (var i = 0; i < netDebuggers.length; ++i)
- {
- if (netDebuggers[i] == debuggr)
- {
- netDebuggers.splice(i, 1);
- break;
- }
- }
-
- for (var i = 0; i < scriptListeners.length; ++i)
- {
- if (scriptListeners[i] == debuggr)
- {
- scriptListeners.splice(i, 1);
- break;
- }
- }
-
- if (debuggers.length == 0)
- this.disableDebugger();
-
- if (FBTrace.DBG_FBS_FINDDEBUGGER || FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("fbs.unregisterDebugger have "+debuggers.length+
- " after unreg debuggr.debuggerName: "+debuggr.debuggerName+" we are "+
- (enabledDebugger?"enabled":"not enabled")+" jsd.isOn:"+(jsd?jsd.isOn:"no jsd"));
-
- return debuggers.length;
- },
-
- lockDebugger: function()
- {
- if (this.locked)
- return;
-
- this.locked = true;
-
- dispatch(debuggers, "onLock", [true]);
- },
-
- unlockDebugger: function()
- {
- if (!this.locked)
- return;
-
- this.locked = false;
-
- dispatch(debuggers, "onLock", [false]);
- },
-
- getDebuggerByName: function(name)
- {
- if (!name)
- return;
-
- for(var i = 0; i < debuggers.length; i++)
- if (debuggers[i].debuggerName === name)
- return debuggers[i];
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- forceGarbageCollection: function()
- {
- jsd.GC(); // Force the engine to perform garbage collection.
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- enterNestedEventLoop: function(callback)
- {
- try
- {
- dispatch(netDebuggers, "suspendActivity");
- this.activitySuspended = true;
-
- fbs.nestedEventLoopDepth = jsd.enterNestedEventLoop(
- {
- onNest: function()
- {
- dispatch(netDebuggers, "resumeActivity");
- callback.onNest();
- }
- });
- }
- catch(exc)
- {
- FBTrace.sysout("fbs.enterNestedEventLoop ERROR "+exc, exc);
- }
- finally
- {
- dispatch(netDebuggers, "resumeActivity");
- this.activitySuspended = false;
- }
-
- return fbs.nestedEventLoopDepth;
- },
-
- exitNestedEventLoop: function()
- {
- try
- {
- dispatch(netDebuggers, "suspendActivity");
- return jsd.exitNestedEventLoop();
- }
- catch (exc)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs: jsd.exitNestedEventLoop ERROR " + exc, exc);
- }
- },
-
- /**
- * We are running JS code for Firebug, but we want to break into the debugger with
- * a stack frame.
- *
- * @param debuggr Debugger object asking for break
- * @param fnOfFrame, function(frame) to run on break
- */
- halt: function(debuggr, fnOfFrame)
- {
- if (!debuggr || !fnOfFrame)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.halt call ERROR bad arguments", arguments);
-
- return null;
- }
-
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout('fbs.halt jsd.isOn:'+jsd.isOn+' jsd.pauseDepth:'+jsd.pauseDepth+
- " fbs.isChromeBlocked "+fbs.isChromeBlocked+" jsd.debuggerHook: "+
- jsd.debuggerHook, jsd.debuggerHook);
-
- // store for onDebugger
- haltObject = {haltDebugger: debuggr, haltCallBack: fnOfFrame};
-
- // call onDebugger via hook
- fbs.debuggerHalter();
- return fbs.haltReturnValue;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Break on Next
-
- // deprecated API
- // xxxjjb: BON should be entirely implemented by breakOnNextCall object, right?
- // xxxhonza: Debugger.suspend should be removed and replaced by breakOnNextCall
-
- suspend: function(debuggr, context)
- {
- fbs.breakOnNextCall(debuggr, context);
- },
-
- breakOnNextCall: function(debuggr, context)
- {
- dispatch(debuggers, "onBreakingNext", [debuggr, context]);
-
- if (context.breakOnNextHook)
- ERROR("firebug-service.breakOnNextCall already active ", context);
-
- context.breakOnNextHook = new BreakOnNextCall(debuggr, context);
-
- jsdHandlers.add(context.breakOnNextHook);
- jsdHandlers.hook(); // no frame arg
- },
-
- cancelBreakOnNextCall: function(debuggr, context)
- {
- jsdHandlers.unhook(/* no frame argument */);
- jsdHandlers.remove(context.breakOnNextHook);
- delete context.breakOnNextHook;
- },
-
- runUntil: function(sourceFile, lineNo, startFrame, debuggr)
- {
- // TODO per context
- runningUntil = this.addBreakpoint(BP_UNTIL, sourceFile, lineNo, null, debuggr);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- setBreakpoint: function(sourceFile, lineNo, props, debuggr)
- {
- var bp = this.addBreakpoint(BP_NORMAL, sourceFile, lineNo, props, debuggr);
- if (bp)
- {
- dispatch(debuggers, "onToggleBreakpoint", [sourceFile.href, lineNo, true, bp]);
- fbs.saveBreakpoints(sourceFile.href); // after every call to onToggleBreakpoint
- return true;
- }
- return false;
- },
-
- clearBreakpoint: function(url, lineNo)
- {
- var bp = this.removeBreakpoint(BP_NORMAL, url, lineNo);
- if (bp)
- {
- dispatch(debuggers, "onToggleBreakpoint", [url, lineNo, false, bp]);
- fbs.saveBreakpoints(url);
- }
- return bp;
- },
-
- enableBreakpoint: function(url, lineNo)
- {
- var bp = this.findBreakpoint(url, lineNo);
- if (bp && bp.type & BP_NORMAL)
- {
- bp.disabled &= ~BP_NORMAL;
- dispatch(debuggers, "onToggleBreakpoint", [url, lineNo, true, bp]);
- fbs.saveBreakpoints(url);
- --disabledCount;
- }
- else
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.enableBreakpoint no find for "+lineNo+"@"+url);
- }
- },
-
- disableBreakpoint: function(url, lineNo)
- {
- var bp = this.findBreakpoint(url, lineNo);
- if (bp && bp.type & BP_NORMAL)
- {
- bp.disabled |= BP_NORMAL;
- ++disabledCount;
- dispatch(debuggers, "onToggleBreakpoint", [url, lineNo, true, bp]);
- fbs.saveBreakpoints(url);
- }
- else
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.disableBreakpoint no find for "+lineNo+"@"+url);
- }
- },
-
- isBreakpointDisabled: function(url, lineNo)
- {
- var bp = this.findBreakpoint(url, lineNo);
- if (bp && bp.type & BP_NORMAL)
- return bp.disabled & BP_NORMAL;
- else
- return false;
- },
-
- setBreakpointCondition: function(sourceFile, lineNo, condition, debuggr)
- {
- var bp = this.findBreakpoint(sourceFile.href, lineNo);
- if (!bp)
- bp = this.addBreakpoint(BP_NORMAL, sourceFile, lineNo, null, debuggr);
-
- if (!bp)
- return;
-
- if (bp.hitCount <= 0 )
- {
- if (bp.condition && !condition)
- --conditionCount;
- else if (condition && !bp.condition)
- ++conditionCount;
- }
-
- bp.condition = condition;
- delete bp.transformedCondition;
-
- dispatch(debuggers, "onToggleBreakpoint", [sourceFile.href, lineNo, true, bp]);
-
- fbs.saveBreakpoints(sourceFile.href);
- return bp;
- },
-
- getBreakpointCondition: function(url, lineNo)
- {
- var bp = this.findBreakpoint(url, lineNo);
- return bp ? bp.condition : "";
- },
-
- clearAllBreakpoints: function(sourceFiles)
- {
- for (var i=0; i<sourceFiles.length; ++i)
- {
- var url = sourceFiles[i].href;
- if (!url)
- continue;
-
- var urlBreakpointsTemp = fbs.getBreakpoints(url);
-
- if (FBTrace.DBG_FBS_BP)
- {
- FBTrace.sysout("fbs.clearAllBreakpoints " + url + " urlBreakpoints: " +
- (urlBreakpointsTemp ? urlBreakpointsTemp.length : "null"));
- }
-
- if (!urlBreakpointsTemp)
- continue;
-
- // Clone before iteration the array is modified within the loop.
- var urlBreakpoints = [];
- urlBreakpoints.push.apply(urlBreakpoints, urlBreakpointsTemp);
-
- for (var ibp=0; ibp<urlBreakpoints.length; ibp++)
- {
- var bp = urlBreakpoints[ibp];
- this.clearBreakpoint(url, bp.lineNo);
- }
- }
- },
-
- // url is sourceFile.href, not jsd script.fileName
- enumerateBreakpoints: function(url, cb)
- {
- if (url)
- {
- var urlBreakpointsTemp = fbs.getBreakpoints(url);
- if (urlBreakpointsTemp)
- {
- // Clone before iteration (the array can be modified in the callback).
- var urlBreakpoints = [];
- urlBreakpoints.push.apply(urlBreakpoints, urlBreakpointsTemp);
-
- for (var i = 0; i < urlBreakpoints.length; ++i)
- {
- var bp = urlBreakpoints[i];
- if (bp.type & BP_NORMAL && !(bp.type & BP_ERROR) )
- {
- if (bp.scriptsWithBreakpoint && bp.scriptsWithBreakpoint.length > 0)
- {
- var rc = cb.call.apply(bp, [url, bp.lineNo, bp, bp.scriptsWithBreakpoint]);
- if (rc)
- return [bp];
- }
- else
- {
- var rc = cb.call.apply(bp, [url, bp.lineNo, bp]);
- if (rc)
- return [bp];
- }
- }
- }
- }
- }
- else
- {
- var bps = [];
- var urls = fbs.getBreakpointURLs();
- for (var i = 0; i < urls.length; i++)
- bps.push(this.enumerateBreakpoints(urls[i], cb));
-
- return bps;
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // error breakpoints are a way of selecting breakpoint from the Console
-
- setErrorBreakpoint: function(sourceFile, lineNo, debuggr)
- {
- var url = sourceFile.href;
- var index = this.findErrorBreakpoint(url, lineNo);
- if (index == -1)
- {
- try
- {
- var bp = this.addBreakpoint(BP_NORMAL | BP_ERROR, sourceFile, lineNo, null, debuggr);
- if (bp)
- {
- errorBreakpoints.push({href: url, lineNo: lineNo, type: BP_ERROR });
- dispatch(debuggers, "onToggleErrorBreakpoint", [url, lineNo, true, debuggr]);
- fbs.saveBreakpoints(sourceFile.href); // after every call to onToggleBreakpoint
- }
- }
- catch(exc)
- {
- FBTrace.sysout("fbs.setErrorBreakpoint ERROR "+exc, exc);
- }
- }
- },
-
- clearErrorBreakpoint: function(url, lineNo, debuggr)
- {
- var index = this.findErrorBreakpoint(url, lineNo);
- if (index != -1)
- {
- this.removeBreakpoint(BP_NORMAL | BP_ERROR, url, lineNo);
-
- errorBreakpoints.splice(index, 1);
- dispatch(debuggers, "onToggleErrorBreakpoint", [url, lineNo, false, debuggr]);
-
- // after every call to onToggleBreakpoint
- fbs.saveBreakpoints(url);
- }
- },
-
- clearErrorBreakpoints: function(sourceFiles, debuggr)
- {
- for (var i=0; i<sourceFiles.length; ++i)
- {
- var url = sourceFiles[i].href;
- if (!url)
- continue;
-
- fbs.enumerateErrorBreakpoints(url,
- {
- call: function(url, lineNo)
- {
- fbs.clearErrorBreakpoint(url, lineNo, debuggr);
- }
- });
- }
- },
-
- hasErrorBreakpoint: function(url, lineNo)
- {
- return this.findErrorBreakpoint(url, lineNo) != -1;
- },
-
- enumerateErrorBreakpoints: function(url, cb)
- {
- // Clone breakpoints array before iteration. The callback could modify it.
- var copyBreakpoints = [];
- copyBreakpoints.push.apply(copyBreakpoints, errorBreakpoints);
-
- if (url)
- {
- for (var i=0; i<copyBreakpoints.length; ++i)
- {
- var bp = copyBreakpoints[i];
- if (bp.href == url)
- cb.call(bp.href, bp.lineNo, bp);
- }
- }
- else
- {
- for (var i=0; i<copyBreakpoints.length; ++i)
- {
- var bp = copyBreakpoints[i];
- cb.call(bp.href, bp.lineNo, bp);
- }
- }
- },
-
- findErrorBreakpoint: function(url, lineNo)
- {
- for (var i = 0; i < errorBreakpoints.length; ++i)
- {
- var bp = errorBreakpoints[i];
- if (bp.lineNo === lineNo && bp.href == url)
- return i;
- }
-
- return -1;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // JSD Handlers
-
- addHandler: function(handler)
- {
- jsdHandlers.add(handler);
- jsdHandlers.hook();
- },
-
- removeHandler: function(handler)
- {
- // First remove the hook and then call unhook. The 'unhook' function
- // checks for registered handlers and removes various JSD hooks only, if there
- // are no corresponding handlers.
- jsdHandlers.remove(handler);
- jsdHandlers.unhook();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- traceAll: function(urls, debuggr)
- {
- this.hookCalls(debuggr.onFunctionCall, false); // call on all passed urls
- },
-
- untraceAll: function(debuggr)
- {
- this.unhookFunctions(); // undo hookCalls()
- },
-
- traceCalls: function(sourceFile, lineNo, debuggr)
- {
- // set a breakpoint on the starting point
- var bp = this.monitor(sourceFile, lineNo, debuggr);
- bp.type |= BP_TRACE;
-
- // when we hit the bp in onBreakPoint we being tracing.
- },
-
- untraceCalls: function(sourceFile, lineNo, debuggr)
- {
- var bp = lineNo != -1 ? this.findBreakpoint(url, lineNo) : null;
- if (bp)
- {
- bp.type &= ~BP_TRACE;
- this.unmonitor(sourceFile.href, lineNo);
- }
- },
-
- monitor: function(sourceFile, lineNo, debuggr)
- {
- if (lineNo == -1)
- return null;
-
- var bp = this.addBreakpoint(BP_MONITOR, sourceFile, lineNo, null, debuggr);
- if (bp)
- {
- ++monitorCount;
- dispatch(debuggers, "onToggleMonitor", [sourceFile.href, lineNo, true]);
- }
-
- return bp;
- },
-
- unmonitor: function(href, lineNo)
- {
- if (lineNo != -1 && this.removeBreakpoint(BP_MONITOR, href, lineNo))
- {
- --monitorCount;
- dispatch(debuggers, "onToggleMonitor", [ href, lineNo, false]);
- }
- },
-
- isMonitored: function(url, lineNo)
- {
- var bp = lineNo != -1 ? this.findBreakpoint(url, lineNo) : null;
- return bp && bp.type & BP_MONITOR;
- },
-
- enumerateMonitors: function(url, cb)
- {
- if (url)
- {
- var urlBreakpoints = fbs.getBreakpoints(url);
- if (urlBreakpoints)
- {
- for (var i = 0; i < urlBreakpoints.length; ++i)
- {
- var bp = urlBreakpoints[i];
- if (bp.type & BP_MONITOR)
- cb.call(url, bp.lineNo, bp);
- }
- }
- }
- else
- {
- for (var url in breakpoints)
- this.enumerateBreakpoints(url, cb);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- enumerateScripts: function(length)
- {
- var scripts = [];
- jsd.enumerateScripts( {
- enumerateScript: function(script) {
- var fileName = script.fileName;
- if ( !isFilteredURL(fileName) ) {
- scripts.push(script);
- }
- }
- });
-
- length.value = scripts.length;
- return scripts;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- startProfiling: function()
- {
- if (!this.profiling)
- {
- this.profiling = true;
- profileStart = new Date();
-
- jsd.flags |= COLLECT_PROFILE_DATA;
- }
-
- ++profileCount;
- },
-
- stopProfiling: function()
- {
- if (profileCount == 0)
- return -1;
- if (--profileCount == 0)
- {
- jsd.flags &= ~COLLECT_PROFILE_DATA;
-
- var t = profileStart.getTime();
-
- this.profiling = false;
- profileStart = null;
-
- return new Date().getTime() - t;
- }
- else
- return -1;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- enableDebugger: function()
- {
- if (waitingForTimer)
- {
- timer.cancel();
- waitingForTimer = false;
- }
-
- if (enabledDebugger)
- return;
-
- enabledDebugger = true;
-
- this.obeyPrefs();
-
- if (!jsd)
- {
- jsd = DebuggerService.getService(jsdIDebuggerService);
-
- if ( FBTrace.DBG_FBS_ERRORS )
- FBTrace.sysout("fbs.enableDebugger gets jsd service, isOn:" + jsd.isOn +
- " initAtStartup:" + jsd.initAtStartup + " now have " + debuggers.length +
- " debuggers in " + clients.length + " clients");
-
- // This property has been removed from Fx40
- if (jsd.initAtStartup)
- jsd.initAtStartup = false;
- }
-
- if (jsd.asyncOn) // then FF 4.0+
- {
- if (!jsd.isOn)
- {
- if (FBTrace.DBG_ACTIVATION)
- {
- var startAsyncOn = new Date().getTime();
- FBTrace.sysout("fbs.activation begin jsd.asyncOn " + startAsyncOn);
- }
-
- jsd.asyncOn( // turn on jsd for the next event
- {
- onDebuggerActivated: function doDebuggerActivated()
- {
- // now we are in the next event and jsd is on.
- if (FBTrace.DBG_ACTIVATION)
- {
- var nowAsyncOn = new Date().getTime();
- FBTrace.sysout("fbs.activation now we are in the " +
- "next event and JSD is ON " + nowAsyncOn + " delta: " +
- (nowAsyncOn - startAsyncOn) + "ms");
- }
-
- fbs.onDebuggerActivated();
- fbs.onJSDebuggingActive();
- }
- });
- }
- else
- {
- fbs.onJSDebuggingActive();
- }
- }
- else // FF 3.6-
- {
- if (!jsd.isOn)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.Firefox 3.6 or earlier");
-
- jsd.on(); // this should be the only call to jsd.on().
- fbs.onDebuggerActivated();
- }
- fbs.onJSDebuggingActive();
- }
- },
-
- onDebuggerActivated: function()
- {
- jsd.flags |= DISABLE_OBJECT_TRACE;
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("fbs.onDebuggerActivated");
-
- if (jsd.pauseDepth && FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.enableDebugger found non-zero jsd.pauseDepth !! " +
- jsd.pauseDepth);
- },
-
- onJSDebuggingActive: function()
- {
- if (!this.filterChrome)
- this.createChromeBlockingFilters();
-
- var active = fbs.isJSDActive();
-
- dispatch(clients, "onJSDActivate", [active, "fbs enableDebugger"]);
- this.hookScripts();
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("fbs.enableDebugger with active " + active);
- },
-
- obeyPrefs: function()
- {
- fbs.showStackTrace = getPref("showStackTrace");
- fbs.breakOnErrors = getPref("breakOnErrors");
- fbs.trackThrowCatch = getPref("trackThrowCatch");
-
- var pref = fbs.scriptsFilter;
- fbs.scriptsFilter = getPref("scriptsFilter");
- var mustReset = (pref !== fbs.scriptsFilter);
-
- if (FBTrace.DBG_OPTIONS)
- FBTrace.sysout("fbs.obeyPrefs mustReset = " + mustReset + " pref: " + pref +
- " fbs.scriptsFilter: " + fbs.scriptsFilter, fbs);
-
- pref = fbs.filterSystemURLs;
-
- // may not be exposed to users
- fbs.filterSystemURLs = getPref("filterSystemURLs");
- mustReset = mustReset || (pref !== fbs.filterSystemURLs);
-
- if (FBTrace.DBG_OPTIONS)
- FBTrace.sysout("fbs.obeyPrefs mustReset = " + mustReset + " pref: " + pref +
- " fbs.filterSystemURLs: " + fbs.filterSystemURLs);
-
- if (mustReset && jsd && jsd.scriptHook)
- {
- fbs.unhookScripts();
- fbs.hookScripts();
- }
-
- if (FBTrace.DBG_FBS_FUNCTION)
- {
- fbs.loggingFunctionCalls = new LogFunctionStepper();
- jsdHandlers.add(fbs.loggingFunctionCalls);
- jsdHandlers.hook(); // no frame argument
- }
- else if (fbs.loggingFunctionCalls)
- {
- jsdHandlers.unhook("no frame argument");
- fbs.jsdHandler.remove(fbs.loggingFunctionCalls);
- delete fbs.loggingFunctionCalls;
- }
-
- FirebugPrefsObserver.syncFilter();
-
- try
- {
- if (FBTrace.DBG_OPTIONS)
- FBTrace.sysout("fbs.obeyPrefs showStackTrace:"+fbs.showStackTrace+
- " breakOnErrors:"+fbs.breakOnErrors+" trackThrowCatch:"+fbs.trackThrowCatch+
- " scriptFilter:"+fbs.scriptsFilter+" filterSystemURLs:"+fbs.filterSystemURLs);
- }
- catch (exc)
- {
- FBTrace.sysout("fbs.constructor getBoolPrefs FAILED with exception=", exc);
- }
- },
-
- disableDebugger: function()
- {
- if (!enabledDebugger)
- return;
-
- if (!timer) // then we probably shutdown
- return;
-
- enabledDebugger = false;
-
- if (jsd.isOn)
- {
- jsd.pause();
- fbs.unhookScripts();
-
- while (jsd.pauseDepth > 0) // unwind completely
- jsd.unPause();
-
- jsd.off();
- }
-
- var active = fbs.isJSDActive();
- dispatch(clients, "onJSDDeactivate", [active, "fbs disableDebugger"]);
-
- fbs.onXScriptCreatedByTag = {}; // clear any uncleared top level scripts
-
- if (FBTrace.DBG_FBS_FINDDEBUGGER || FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("fbs.disableDebugger jsd.isOn:"+jsd.isOn+" for enabledDebugger: "+
- enabledDebugger);
- },
-
- // must support multiple calls
- pause: function(debuggerName)
- {
- if (!enabledDebugger || !jsd || !jsd.isOn)
- return "not enabled";
-
- var rejection = [];
- dispatch(clients, "onPauseJSDRequested", [rejection, debuggerName]);
-
- // Number of rejections:
- // 0 - then everyone wants to pause
- // 1 - then everyone wants to pause (including the current active tab)
- if (rejection.length < 1)
- {
- if (jsd.pauseDepth == 0) // don't pause if we are paused.
- {
- jsd.pause();
- fbs.unhookScripts();
- }
-
- var active = fbs.isJSDActive();
- dispatch(clients, "onJSDDeactivate", [active, "pause depth "+jsd.pauseDepth]);
- }
- else // we don't want to pause
- {
- fbs.unPause(true);
- }
-
- if (FBTrace.DBG_FBS_FINDDEBUGGER || FBTrace.DBG_ACTIVATION)
- {
- FBTrace.sysout("fbs.pause depth "+(jsd.isOn?jsd.pauseDepth:"jsd OFF")+" rejection "+
- rejection.length+" from "+clients.length+" clients ", rejection);
-
- // The next line gives NS_ERROR_NOT_AVAILABLE
- // FBTrace.sysout("fbs.pause depth "+(jsd.isOn?jsd.pauseDepth:"jsd OFF")+
- // " rejection "+rejection.length+" from clients "+clients, rejection);
- }
- return jsd.pauseDepth;
- },
-
- unPause: function(force)
- {
- if (!jsd)
- return;
-
- if (jsd.pauseDepth > 0 || force)
- {
- if (FBTrace.DBG_ACTIVATION && (!jsd.isOn || jsd.pauseDepth == 0) )
- FBTrace.sysout("fbs.unpause while jsd.isOn is "+jsd.isOn+
- " and hooked scripts pauseDepth:"+jsd.pauseDepth);
-
- fbs.hookScripts();
-
- if(jsd.pauseDepth)
- var depth = jsd.unPause();
-
- var active = fbs.isJSDActive();
-
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("fbs.unPause hooked scripts and unPaused, active:" + active +
- " depth " + depth + " jsd.isOn: " + jsd.isOn);
-
- dispatch(clients, "onJSDActivate", [active, "unpause depth"+jsd.pauseDepth]);
- }
- else // we were not paused.
- {
- if (FBTrace.DBG_ACTIVATION)
- {
- var noAction = "("+jsd.pauseDepth+" || "+ !jsd.isOn+")";
- FBTrace.sysout("fbs.unPause no action: (jsd.pauseDepth || !jsd.isOn) = " +
- noAction);
- }
- }
-
- return jsd.pauseDepth;
- },
-
- isJSDActive: function()
- {
- return (jsd && jsd.isOn && (jsd.pauseDepth === 0) );
- },
-
- // TODO delete once Chromebug works on BTI
- // re-transmit the message (string) with args [objs] to XUL windows.
- broadcast: function(message, args)
- {
- dispatch(clients, message, args);
- if (FBTrace.DBG_ACTIVATION)
- FBTrace.sysout("fbs.broadcast "+message+" to "+clients.length+" clients", clients);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- normalizeURL: function(url)
- {
- // For some reason, JSD reports file URLs like "file:/" instead of "file:///", so they
- // don't match up with the URLs we get back from the DOM
- return url ? url.replace(/file:\/([^\/])/, "file:///$1") : "";
- },
-
- denormalizeURL: function(url)
- {
- // This should not be called.
- return url ? url.replace(/file:\/\/\//, "file:/") : "";
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // jsd Hooks
-
- // When engine encounters debugger keyword (only)
- onDebugger: function(frame, type, rv)
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.onDebugger with haltDebugger="+
- (haltObject?haltObject.haltDebugger:"null")+" in "+frame.script.fileName,
- frame.script);
-
- try
- {
- if (FBTrace.DBG_FBS_SRCUNITS && fbs.isTopLevelScript(frame, type, rv))
- FBTrace.sysout("fbs.onDebugger found topLevelScript "+ frame.script.tag);
-
- if (FBTrace.DBG_FBS_SRCUNITS && fbs.isNestedScript(frame, type, rv))
- FBTrace.sysout("fbs.onDebugger found nestedScript "+ frame.script.tag);
-
- if (haltObject)
- {
- var peelOurselvesOff = frame;
- if (peelOurselvesOff.script.fileName.indexOf("debuggerHalter.js") > 0)
- peelOurselvesOff = frame.callingFrame; // remove debuggerHalter()
-
- while (peelOurselvesOff && (peelOurselvesOff.script.fileName.indexOf("firebug-service.js") > 0 ))
- peelOurselvesOff = peelOurselvesOff.callingFrame;
-
- while (peelOurselvesOff && (peelOurselvesOff.script.fileName.indexOf("/debugger.js") > 0 ))
- peelOurselvesOff = peelOurselvesOff.callingFrame;
-
- if (peelOurselvesOff)
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.onDebugger, " +
- (haltObject.haltCallBack ? "with" : "without") +
- " callback, adjusted newest frame: " + peelOurselvesOff.line +
- "@" + peelOurselvesOff.script.fileName + " frames: ",
- framesToString(frame));
-
- var debuggr = haltObject.haltDebugger;
- var callback = haltObject.haltCallBack;
- fbs.haltReturnValue = callback.apply(debuggr,[peelOurselvesOff]);
- }
- else
- {
- FBTrace.sysout("fbs.halt ERROR "+framesToString(frame));
- fbs.haltReturnValue = "firebug-service.halt ERROR, no stack frames left ";
- }
-
- return RETURN_CONTINUE;
- }
- else
- {
- var peelOurselvesOff = frame;
- if (peelOurselvesOff.script.fileName.indexOf("consoleExposed.js") > 0)
- peelOurselvesOff = frame.callingFrame;
-
- var bp = this.findBreakpointByScript(peelOurselvesOff.script, peelOurselvesOff.pc);
-
- // then breakpoints override debugger statements (to allow conditional
- // debugger statements);
- if (bp)
- return this.onBreakpoint(peelOurselvesOff, type, rv);
- else
- return fbs.routeBreakToDebuggr(peelOurselvesOff, type, rv);
- }
- }
- catch(exc)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.onDebugger failed: "+exc,exc);
-
- ERROR("onDebugger failed: "+exc, exc);
- return RETURN_CONTINUE;
- }
- finally
- {
- haltObject = null;
- }
- },
-
- // when the onError handler returns false
- onDebug: function(frame, type, rv)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- {
- fbs.onDebugRequests--;
- FBTrace.sysout("fbs.onDebug (" + fbs.onDebugRequests + ") fileName=" +
- frame.script.fileName + " reportNextError=" + reportNextError +
- " breakOnErrors:" + this.breakOnErrors + " fbs.breakOnDebugCall: " +
- fbs.breakOnDebugCall);
- }
-
- if (isFilteredURL(frame.script.fileName))
- {
- reportNextError = false;
- return RETURN_CONTINUE;
- }
-
- try
- {
- var breakOnNextError = this.needToBreakForError(reportNextError);
- var debuggr = (reportNextError || breakOnNextError) ? this.findDebugger(frame) : null;
-
- if (reportNextError)
- {
- reportNextError = false;
- if (debuggr)
- {
- var hookReturn = debuggr.onError(frame, errorInfo, fbs.breakOnDebugCall);
- if (hookReturn >=0)
- return hookReturn;
- else if (hookReturn==-1)
- breakOnNextError = true;
-
- if (breakOnNextError)
- debuggr = this.reFindDebugger(frame, debuggr);
- }
- }
-
- if (breakOnNextError)
- {
- if (fbs.isTopLevelScript(frame, type, rv) && FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.onDebug found topLevelScript "+ frame.script.tag);
-
- if (fbs.isNestedScript(frame, type, rv) && FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.onDebug found nestedScript "+ frame.script.tag);
-
- breakOnNextError = false;
- delete fbs.breakOnDebugCall;
-
- if (debuggr)
- return this.breakIntoDebugger(debuggr, frame, type);
- }
- }
- catch (exc)
- {
- ERROR("onDebug failed: "+exc);
- }
-
- return RETURN_CONTINUE;
- },
-
- onBreakpoint: function(frame, type, val)
- {
- if (fbs.isTopLevelScript(frame, type, val))
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.onBreakpoint isTopLevel returning " + RETURN_CONTINUE);
-
- return RETURN_CONTINUE;
- }
-
- var bp = this.findBreakpointByScript(frame.script, frame.pc);
- if (bp)
- {
- var theDebugger = fbs.getDebuggerByName(bp.debuggerName);
- if (!theDebugger)
- theDebugger = this.findDebugger(frame); // sets debuggr.breakContext
-
- var currFrameId = frameId(frame, 0);
-
- // See issue 1179, should not break if we resumed from a single
- // step and have not advanced.
- // Only break on a breakpoint if a single-step didn't start on
- // the current line (issue 1098)
- for (var i=0; i<jsdHandlers.hooks.length; i++)
- {
- var handler = jsdHandlers.hooks[i];
- if (handler.startFrameId == currFrameId)
- return RETURN_CONTINUE;
- }
-
- if (disabledCount || monitorCount || conditionCount || runningUntil)
- {
- if (FBTrace.DBG_FBS_BP)
- {
- FBTrace.sysout("fbs.onBreakpoint("+getExecutionStopNameFromType(type)+
- ") disabledCount:"+disabledCount+" monitorCount:"+monitorCount+
- " conditionCount:"+conditionCount+" runningUntil:"+runningUntil, bp);
- }
-
- if (bp.type & BP_ERROR)
- return RETURN_CONTINUE; // if onError gets called, then we will break
-
- if (bp.type & BP_MONITOR && !(bp.disabled & BP_MONITOR))
- {
- if (bp.type & BP_TRACE && !(bp.disabled & BP_TRACE) )
- this.hookCalls(theDebugger.onFunctionCall, true); // TODO
- else
- theDebugger.onMonitorScript(frame);
- }
-
- if (bp.type & BP_UNTIL) // then we hit the runningUntil breakpoint
- {
- if (runningUntil)
- {
- this.removeBreakpoint(BP_UNTIL, runningUntil.href, runningUntil.lineNo);
- runningUntil = null;
- }
- else
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.BP_UNTIL but not runningUntil!", bp);
- }
-
- if (theDebugger)
- return this.breakIntoDebugger(theDebugger, frame, type);
- }
- else if (!(bp.type & BP_NORMAL) || bp.disabled & BP_NORMAL)
- {
- return RETURN_CONTINUE;
- }
- else if (bp.type & BP_NORMAL)
- {
- var passed = testBreakpoint(frame, bp);
- if (!passed)
- return RETURN_CONTINUE;
- }
- // type was normal, but passed test
- }
- else
- {
- // not special, just break for sure
- return this.breakIntoDebugger(theDebugger, frame, type);
- }
- }
- else
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.onBreakpoint(" + getExecutionStopNameFromType(type) +
- ") NO bp match with frame.script.tag=" + frame.script.tag +
- " clearing and continuing");
-
- // We did not find a logical breakpoint to match the one set into JSD, so stop trying.
- frame.script.clearBreakpoint(frame.pc);
- return RETURN_CONTINUE;
- }
-
- if (runningUntil)
- return RETURN_CONTINUE;
- else
- return fbs.routeBreakToDebuggr(frame, type, val);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onThrow: function(frame, type, rv)
- {
- if (isFilteredURL(frame.script.fileName))
- return RETURN_CONTINUE_THROW;
-
- if (rv && rv.value && rv.value.isValid)
- {
- var value = rv.value;
- if (value.jsClassName == "Error" && value.stringValue.indexOf("too much recursion") !== -1)
- {
- if (fbs._lastErrorCaller)
- {
- // then are unwinding recursion
- if (fbs._lastErrorCaller == frame.script.tag)
- {
- fbs._lastErrorCaller =
- frame.callingFrame ? frame.callingFrame.script.tag : null;
-
- return RETURN_CONTINUE_THROW;
- }
- }
- else
- {
- fbs._lastErrorCaller = frame.callingFrame.script.tag;
- frame = fbs.discardRecursionFrames(frame);
- // go on to process the throw.
- }
- }
- else
- {
- delete fbs._lastErrorCaller; // throw is not recursion
- }
- }
- else
- {
- delete fbs._lastErrorCaller; // throw is not recursion either
- }
-
- if (fbs.showStackTrace)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.onThrow from tag:" + frame.script.tag + ":" +
- frame.script.fileName + "@" + frame.line + ": " + frame.pc);
-
- var debuggr = this.findDebugger(frame);
- if (debuggr)
- return debuggr.onThrow(frame, rv);
- }
-
- return RETURN_CONTINUE_THROW;
- },
-
- onError: function(message, fileName, lineNo, pos, flags, errnum, exc)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- {
- var messageKind;
- if (flags & jsdIErrorHook.REPORT_ERROR)
- messageKind = "Error";
- if (flags & jsdIErrorHook.REPORT_WARNING)
- messageKind = "Warning";
- if (flags & jsdIErrorHook.REPORT_EXCEPTION)
- messageKind = "Uncaught-Exception";
- if (flags & jsdIErrorHook.REPORT_STRICT)
- messageKind += "-Strict";
-
- FBTrace.sysout("fbs.onError ("+fbs.onDebugRequests+") with this.showStackTrace="+
- this.showStackTrace+" and this.breakOnErrors="+this.breakOnErrors+" kind="+
- messageKind+" msg="+message+"@"+fileName+":"+lineNo+"."+pos,
- (exc ? exc.getWrappedValue() : "No exc object"));
- }
-
- delete fbs.breakOnDebugCall;
-
- if (exc)
- {
- var exception = exc.getWrappedValue();
- fbs.enumerateErrorBreakpoints(exception.fileName, {call: function breakIfMatch(url, lineNo, bp)
- {
- // An error breakpoint is in this file
- if (exception.lineNumber == bp.lineNo)
- {
- fbs.breakOnDebugCall = true;
-
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.onError setting breakOnDebugCall for " + url + "@" +
- exception.lineNumber);
- }
- }});
- }
-
- // Global to pass info to onDebug. Some duplicate values to support different apis
- // Do not store the exception object itself |exc|, errofInfo is a global variable
- // and it would keep the page (that is producing the error) in the memory
- // (see bug 669730)
- errorInfo = { errorMessage: message, sourceName: fileName, lineNumber: lineNo,
- message: message, fileName: fileName, lineNo: lineNo,
- columnNumber: pos, flags: flags, category: "js", errnum: errnum };
-
- if (message == "out of memory") // bail
- {
- if (FBTrace.DBG_FBS_ERRORS)
- fbs.osOut("fbs.onError sees out of memory "+fileName+":"+lineNo+"\n");
- return true;
- }
-
- reportNextError = { fileName: fileName, lineNo: lineNo };
-
- if (FBTrace.DBG_FBS_ERRORS)
- fbs.onDebugRequests++;
-
- return false; // Drop into onDebug, sometimes only
- },
-
- onTopLevel: function(frame, type)
- {
- if (FBTrace.DBG_TOPLEVEL)
- FBTrace.sysout("fbs.onTopLevel " + getCallFromType(type) + " with delegate " +
- fbs.onTopLevelDelegate + " " + frame.script.tag + " " + frame.script.fileName);
-
- if (fbs.onTopLevelDelegate)
- fbs.onTopLevelDelegate(frame, type);
- },
-
- isTopLevelScript: function(frame, type, val)
- {
- var scriptTag = frame.script.tag;
-
- if (FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.isTopLevelScript frame.script.tag="+frame.script.tag );
-
- if (scriptTag in this.onXScriptCreatedByTag)
- {
- if (FBTrace.DBG_FBS_TRACKFILES)
- trackFiles.def(frame);
-
- var onXScriptCreated = this.onXScriptCreatedByTag[scriptTag];
-
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.isTopLevelScript(" + getExecutionStopNameFromType(type) +
- ") with frame.script.tag=" + frame.script.tag + " onXScriptCreated:" +
- onXScriptCreated.kind);
-
- delete this.onXScriptCreatedByTag[scriptTag];
- frame.script.clearBreakpoint(0);
-
- try
- {
- var sourceFile = onXScriptCreated(frame, type, val);
- }
- catch (e)
- {
- FBTrace.sysout("fbs.isTopLevelScript called onXScriptCreated and " +
- "it didn't end well:", e);
- }
-
- if (FBTrace.DBG_FBS_SRCUNITS)
- {
- var msg = "Top Scripts Uncleared:";
- for (var p in this.onXScriptCreatedByTag)
- msg += (p + "|");
- FBTrace.sysout(msg);
- }
-
- if (!sourceFile || !sourceFile.breakOnZero || sourceFile.breakOnZero != scriptTag)
- {
- return true;
- }
- else
- {
- // sourceFile.breakOnZero matches the script we have halted.
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.isTopLevelScript breakOnZero, continuing for " +
- "user breakpoint");
- }
- }
-
- return false;
- },
-
- /**
- * If true, emergency bailout: a frame is running a script which has not been
- * processed as source
- */
- isNestedScript: function(frame, type, val)
- {
- if (fbs.nestedScriptStack.length === 0 ||
- fbs.nestedScriptStack.indexOf(frame.script) === -1)
- {
- return false;
- }
-
- try
- {
- var sourceFile = fbs.onTopLevelScriptCreated(frame, type, val);
- }
- catch (e)
- {
- FBTrace.sysout("fbs.isNestedScript called onXScriptCreated and it didn't end well:", e);
- }
-
- return true;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- onXULScriptCreated: function(frame, type, val, noNestTest)
- {
- // A XUL script hit a breakpoint
- try
- {
- var outerScript = frame.script;
- var innerScripts = [];
- for (var i=0; i<fbs.pendingXULScripts.length; i++)
- {
- // Take all the pending script from the same file as part of this sourcefile
- if (fbs.pendingXULScripts[i].fileName === outerScript.fileName)
- {
- var innerScript = fbs.pendingXULScripts[i];
- innerScripts.push(innerScript);
- if (innerScript.isValid)
- innerScript.clearBreakpoint(0);
-
- fbs.pendingXULScripts.splice(i,1);
- }
- }
-
- var debuggr = fbs.findDebugger(frame); // sets debuggr.breakContext
- if (debuggr)
- {
- innerScripts.push(outerScript);
- var innerScriptEnumerator =
- {
- index: 0,
- max: innerScripts.length,
- hasMoreElements: function() { return this.index < this.max;},
- getNext: function() { return innerScripts[this.index++]; },
- };
-
- var sourceFile = debuggr.onXULScriptCreated(frame, outerScript,
- innerScriptEnumerator);
- fbs.resetBreakpoints(sourceFile, debuggr);
- }
- else
- {
- if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.onEventScriptCreated no debuggr for " + frame.script.tag +
- ":" + frame.script.fileName);
- }
- }
- catch(exc)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.onXULScriptCreated ERROR " + exc, exc);
- }
- },
-
- onEventScriptCreated: function(frame, type, val, noNestTest)
- {
- if (fbs.showEvents)
- {
- try
- {
- if (!noNestTest)
- {
- // In onScriptCreated we saw a script with baseLineNumber = 1.
- // We marked it as event and nested.
- // Now we know its event, not nested.
- if (fbs.nestedScriptStack.length > 0)
- {
- fbs.nestedScriptStack.splice(0,1);
- }
- else
- {
- if (FBTrace.DBG_FBS_SRCUNITS) // these seem to be harmless, but...
- {
- var script = frame.script;
- FBTrace.sysout("fbs.onEventScriptCreated no nestedScriptStack: " +
- script.tag + "@(" + script.baseLineNumber + "-" +
- (script.baseLineNumber+script.lineExtent) + ")" +
- script.fileName);
-
- try
- {
- FBTrace.sysout(script.functionSource);
- }
- catch (exc)
- {
- /*Bug 426692 */
- }
- }
- }
- }
-
- var debuggr = fbs.findDebugger(frame); // sets debuggr.breakContext
- if (debuggr)
- {
- var sourceFile = debuggr.onEventScriptCreated(frame, frame.script,
- fbs.getNestedScriptEnumerator());
- fbs.resetBreakpoints(sourceFile, debuggr);
- }
- else
- {
- if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.onEventScriptCreated no debuggr for " +
- frame.script.tag + ":" + frame.script.fileName);
- }
- }
- catch(exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("fbs.onEventScriptCreated failed: " + exc, exc);
- }
-
- if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.onEventScriptCreated frame.script.tag:" + frame.script.tag +
- " href: " + (sourceFile ? sourceFile.href : "no sourceFile"), sourceFile);
- }
-
- fbs.clearNestedScripts();
- return sourceFile;
- },
-
- onEvalScriptCreated: function(frame, type, val)
- {
- if (fbs.showEvals)
- {
- try
- {
- if (!frame.callingFrame)
- {
- if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.No calling Frame for eval frame.script.fileName:" +
- frame.script.fileName);
-
- // These are eval-like things called by native code. They come from .xml files
- // They should be marked as evals but we'll treat them like event handlers for now.
- return fbs.onEventScriptCreated(frame, type, val, true);
- }
-
- // In onScriptCreated we found a no-name script, set a bp in PC=0, and a flag.
- // onBreakpoint saw the flag, cleared the flag, and sent us here.
- // Start by undoing our damage
- var outerScript = frame.script;
-
- // sets debuggr.breakContext
- var debuggr = fbs.findDebugger(frame);
- if (debuggr)
- {
- var sourceFile = debuggr.onEvalScriptCreated(frame, outerScript,
- fbs.getNestedScriptEnumerator());
- fbs.resetBreakpoints(sourceFile, debuggr);
- }
- else
- {
- if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.onEvalScriptCreated no debuggr for " +
- outerScript.tag + ":" + outerScript.fileName);
- }
- }
- catch (exc)
- {
- ERROR("onEvalScriptCreated failed: "+exc);
-
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.onEvalScriptCreated failed:", exc);
- }
- }
-
- fbs.clearNestedScripts();
-
- if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.onEvalScriptCreated outerScript.tag:" + outerScript.tag +
- " href: " + (sourceFile ? sourceFile.href : "no sourceFile"));
-
- return sourceFile;
- },
-
- onTopLevelScriptCreated: function(frame, type, val)
- {
- try
- {
- // In onScriptCreated we may have found a script at baseLineNumber=1
- // Now we know its not an event
- if (fbs.nestedScriptStack.length > 0)
- {
- var firstScript = fbs.nestedScriptStack[0];
- if (firstScript.tag in fbs.onXScriptCreatedByTag)
- {
- delete fbs.onXScriptCreatedByTag[firstScript.tag];
- if (firstScript.isValid)
- firstScript.clearBreakpoint(0);
-
- if (FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.onTopLevelScriptCreated clear bp at 0 for " +
- "firstScript.tag: " + firstScript.tag);
- }
- }
-
- // On compilation of a top-level (global-appending) function.
- // After this top-level script executes we lose the jsdIScript so we can't
- // build its line table. Therefore we need to build it here.
-
- // sets debuggr.breakContext
- var debuggr = fbs.findDebugger(frame);
- if (debuggr)
- {
- var sourceFile = debuggr.onTopLevelScriptCreated(frame, frame.script,
- fbs.getNestedScriptEnumerator());
-
- if (FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.onTopLevelScriptCreated got sourceFile:" + sourceFile +
- " using " + fbs.nestedScriptStack.length + " nestedScripts");
-
- fbs.resetBreakpoints(sourceFile, debuggr);
- }
- else
- {
- // modules end up here?
- if (FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.onTopLevelScriptCreated no debuggr for " + frame.script.tag);
- }
- }
- catch (exc)
- {
- FBTrace.sysout("fbs.onTopLevelScriptCreated FAILED: " + exc, exc);
- ERROR("onTopLevelScriptCreated ERROR: " + exc);
- }
-
- fbs.clearNestedScripts();
-
- if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.onTopLevelScriptCreated script.tag:" + frame.script.tag +
- " href: " + (sourceFile ? sourceFile.href : "no sourceFile"));
-
- return sourceFile;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getNestedScriptEnumerator: function()
- {
- var enumer =
- {
- index: 0,
- hasMoreElements: function()
- {
- return (this.index < fbs.nestedScriptStack.length);
- },
- getNext: function()
- {
- var rv = fbs.nestedScriptStack[this.index];
- this.index++;
- return rv;
- }
- };
- return enumer;
- },
-
- clearNestedScripts: function()
- {
- var innerScripts = fbs.nestedScriptStack;
- for (var i=0; i<innerScripts.length; i++)
- {
- var script = innerScripts[i];
- if (script.isValid && script.baseLineNumber == 1)
- {
- // Clear helper breakpoints that are set automatically when a new script
- // is created. But avoid cases where the user has a breakpoint on the
- // first line in a function (issue 3985).
- if (!fbs.findBreakpointByScript(script, 0))
- script.clearBreakpoint(0);
-
- if (this.onXScriptCreatedByTag[script.tag])
- delete this.onXScriptCreatedByTag[script.tag];
- }
- }
-
- fbs.nestedScriptStack = [];
- },
-
- onScriptCreated: function(script)
- {
- if (!fbs)
- {
- if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS || FBTrace.DBG_FBS_TRACKFILES)
- FBTrace.sysout("fbs.onScriptCreated " + script.tag +
- ", but no fbs for script.fileName=" + script.fileName);
- return;
- }
-
- try
- {
- var fileName = script.fileName;
-
- if (FBTrace.DBG_FBS_TRACKFILES)
- trackFiles.add(fileName);
-
- if (isFilteredURL(fileName) || fbs.isChromebug(fileName))
- {
- try
- {
- if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.onScriptCreated " + script.tag +
- ": filename filtered:\'" +
- fileName + "\'" + (fbs.filterConsoleInjections ?
- " console injection" : ""));
- }
- catch (exc)
- {
- FBTrace.sysout("fbs.onScriptCreated " + script.tag + " filtered msg ERROR \'" +
- script.fileName+"\'"); /*? Bug 426692 */
- }
-
- if (FBTrace.DBG_FBS_TRACKFILES)
- trackFiles.drop(fileName);
-
- return;
- }
-
- if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.onScriptCreated: " + script.tag + "@(" + script.baseLineNumber +
- "-" + (script.baseLineNumber+script.lineExtent) + ")" + script.fileName);
-
- if (script.lineExtent > 80000 && FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.BOGUS line extent (" + script.lineExtent +
- ") for " + script.fileName);
-
- if (FBTrace.DBG_FBS_CREATION)
- {
- try
- {
- FBTrace.sysout("fbs.onScriptCreated: \'"+script.functionName+"\'",
- script.functionSource);
- }
- catch (exc)
- {
- FBTrace.sysout("fbs.onScriptCreated " + script.tag + " ERROR \'" +
- script.fileName + "\'"); /*? Bug 426692 */
- }
- }
-
- var functionName;
- try
- {
- // Accessing the 'functionName' property can throw an exception
- // if weird characters are used (see issue 6493)
- functionName = script.functionName;
- }
- catch (err)
- {
- FBTrace.sysout("fbs.onScriptCreated; ERROR failed to get functionName", err);
- functionName = "<unknown>";
- }
-
- if (reXUL.test(script.fileName))
- {
- fbs.onXScriptCreatedByTag[script.tag] = fbs.onXULScriptCreated;
- fbs.pendingXULScripts.push(script);
-
- // Stop in the first one called and assign all with this fileName to sourceFile.
- script.setBreakpoint(0);
- }
- else if (!functionName) // top or eval-level
- {
- // We need to detect eval() and grab its source.
- var hasCaller = fbs.createdScriptHasCaller();
- if (FBTrace.DBG_FBS_SRCUNITS)
- FBTrace.sysout("fbs.top or eval case createdScriptHasCaller " + hasCaller);
-
- if (hasCaller)
- {
- // components end up here
- fbs.onXScriptCreatedByTag[script.tag] = this.onEvalScriptCreated;
- }
- else
- {
- fbs.onXScriptCreatedByTag[script.tag] = this.onTopLevelScriptCreated;
- }
-
- script.setBreakpoint(0);
-
- if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS || FBTrace.DBG_FBS_BP)
- {
- FBTrace.sysout("fbs.onScriptCreated: set BP at PC 0 in " +
- (hasCaller ? "eval" : "top") + " level tag=" + script.tag + ":" +
- script.fileName + " jsd depth:" + (jsd.isOn ? jsd.pauseDepth +
- "" : "OFF"));
- }
- }
- else if (script.baseLineNumber == 1)
- {
- // could be a 1) Browser-generated event handler or
- // 2) a nested script at the top of a file
- // One way to tell is assume both then wait to see which we hit first:
- // 1) bp at pc=0 for this script or 2) for a top-level on at the same filename
-
- if (FBTrace.DBG_FBS_SRCUNITS)
- {
- var hasCaller = fbs.createdScriptHasCaller();
- FBTrace.sysout("fbs.browser generated createdScriptHasCaller " + hasCaller);
- }
-
- fbs.onXScriptCreatedByTag[script.tag] = this.onEventScriptCreated; // for case 1
- script.setBreakpoint(0);
-
- fbs.nestedScriptStack.push(script); // for case 2
-
- if (FBTrace.DBG_FBS_CREATION)
- FBTrace.sysout("fbs.onScriptCreated: set BP at PC 0 in event level tag=" +
- script.tag);
- }
- else
- {
- fbs.nestedScriptStack.push(script);
-
- if (FBTrace.DBG_FBS_CREATION)
- FBTrace.sysout("fbs.onScriptCreated: nested function named: " +
- functionName);
-
- dispatch(scriptListeners, "onScriptCreated", [script, fileName, script.baseLineNumber]);
- }
- }
- catch(exc)
- {
- ERROR("onScriptCreated failed: " + exc);
- FBTrace.sysout("fbs.onScriptCreated failed:", exc);
- }
- },
-
- createdScriptHasCaller: function()
- {
- if (FBTrace.DBG_FBS_SRCUNITS)
- dumpComponentsStack("createdScriptHasCaller ");
-
- // createdScriptHasCaller
- var frame = Components.stack;
-
- // onScriptCreated
- frame = frame.caller;
- if (!frame)
- return frame;
-
- // hook apply
- frame = frame.caller;
- if (!frame)
- return frame;
-
- // native interpret?
- frame = frame.caller;
- if (!frame)
- return frame;
-
- // our creator ... or null if we are top level
- frame = frame.caller;
- return frame;
- },
-
- onScriptDestroyed: function(script)
- {
- if (!fbs)
- return;
-
- if (script.tag in fbs.onXScriptCreatedByTag)
- delete fbs.onXScriptCreatedByTag[script.tag];
-
- try
- {
- var fileName = script.fileName;
- if (isFilteredURL(fileName))
- return;
-
- if (FBTrace.DBG_FBS_CREATION)
- FBTrace.sysout('fbs.onScriptDestroyed '+script.tag);
-
- dispatch(scriptListeners,"onScriptDestroyed",[script]);
- }
- catch(exc)
- {
- ERROR("onScriptDestroyed failed: "+exc);
- FBTrace.sysout("fbs.onScriptDestroyed failed: ", exc);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- createFilter: function(pattern, pass)
- {
- var filter = {
- globalObject: null,
- flags: pass ? (jsdIFilter.FLAG_ENABLED | jsdIFilter.FLAG_PASS) : jsdIFilter.FLAG_ENABLED,
- urlPattern: pattern,
- startLine: 0,
- endLine: 0
- };
- return filter;
- },
-
- setChromeBlockingFilters: function()
- {
- if (!fbs.isChromeBlocked)
- {
-
- jsd.appendFilter(this.noFilterHalter); // must be first
- jsd.appendFilter(this.noFilterTrace); // must be second
- jsd.appendFilter(this.filterChrome);
- jsd.appendFilter(this.filterComponents);
- jsd.appendFilter(this.filterFirebugComponents);
- jsd.appendFilter(this.filterModules);
- jsd.appendFilter(this.filterStringBundle);
- jsd.appendFilter(this.filterPrettyPrint);
- jsd.appendFilter(this.filterWrapper);
-
- for (var i = 0; i < this.componentFilters.length; i++)
- jsd.appendFilter(this.componentFilters[i]);
-
- fbs.isChromeBlocked = true;
-
- if (FBTrace.DBG_FBS_BP)
- this.traceFilters("setChromeBlockingFilters with " +
- this.componentFilters.length + " component filters");
- }
- },
-
- removeChromeBlockingFilters: function()
- {
- try
- {
- if (fbs.isChromeBlocked)
- {
- if (!this.filterChrome)
- FBTrace.sysout("fbs.removeChromeBlockingFilters is confused ", this);
-
- jsd.removeFilter(this.filterChrome);
- jsd.removeFilter(this.filterComponents);
- jsd.removeFilter(this.filterFirebugComponents);
- jsd.removeFilter(this.filterModules);
- jsd.removeFilter(this.filterStringBundle);
- jsd.removeFilter(this.filterPrettyPrint);
- jsd.removeFilter(this.filterWrapper);
- jsd.removeFilter(this.noFilterHalter);
- jsd.removeFilter(this.noFilterTrace);
-
- for (var i = 0; i < this.componentFilters.length; i++)
- jsd.removeFilter(this.componentFilters[i]);
-
- fbs.isChromeBlocked = false;
- }
- }
- catch (err)
- {
- FBTrace.sysout("fbs.removeChromeBlockingFilters; EXCEPTION " + err, err);
- }
-
- if (FBTrace.DBG_FBS_BP)
- this.traceFilters("removeChromeBlockingFilters");
- },
-
- // call after components are loaded.
- createChromeBlockingFilters: function()
- {
- try
- {
- this.filterModules = this.createFilter("*/firefox/modules/*");
- this.filterComponents = this.createFilter("*/firefox/components/*");
- this.filterFirebugComponents = this.createFilter("*/modules/firebug-*");
- this.filterStringBundle = this.createFilter("XStringBundle");
- this.filterChrome = this.createFilter("chrome://*");
- this.filterPrettyPrint = this.createFilter("x-jsd:ppbuffer*");
- this.filterWrapper = this.createFilter("XPCSafeJSObjectWrapper.cpp");
- this.noFilterHalter = this.createFilter("resource://firebug/debuggerHalter.js", true);
- this.noFilterTrace = this.createFilter("chrome://firebug/content/console/consoleExposed.js", true);
-
- // jsdIFilter does not allow full regexp matching.
- // So to filter components, we filter their directory names, which we obtain
- // by looking for scripts that match regexps
-
- var componentsUnfound = [];
- for (var i=0; i<COMPONENTS_FILTERS.length; ++i)
- componentsUnfound.push(COMPONENTS_FILTERS[i]);
-
- this.componentFilters = [];
-
- jsd.enumerateScripts( {
- enumerateScript: function(script)
- {
- var fileName = script.fileName;
- for (var i=0; i<componentsUnfound.length; ++i)
- {
- if (componentsUnfound[i].test(fileName))
- {
- var match = componentsUnfound[i].exec(fileName);
- fbs.componentFilters.push(fbs.createFilter(match[1]));
- componentsUnfound.splice(i, 1);
- return;
- }
- }
- }
- });
- }
- catch (exc)
- {
- FBTrace.sysout("fbs.createChromeblockingFilters ERROR >>>>>>>>>>>>>>>>> "+exc, exc);
- }
-
- if (FBTrace.DBG_FBS_BP)
- {
- FBTrace.sysout("fbs.createChromeBlockingFilters considered "+COMPONENTS_FILTERS.length+
- " regexps and created "+this.componentFilters.length+
- " filters with unfound: "+componentsUnfound.length, componentsUnfound);
- fbs.traceFilters("createChromeBlockingFilters");
- }
- },
-
- traceFilters: function(from)
- {
- FBTrace.sysout("fbs.traceFilters from "+from);
-
- jsd.enumerateFilters({ enumerateFilter: function(filter)
- {
- FBTrace.sysout("fbs.jsdIFilter "+filter.urlPattern, filter);
- }});
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- eachJSContext: function(callback)
- {
- var enumeratedContexts = [];
- jsd.enumerateContexts({ enumerateContext: function(jscontext)
- {
- try
- {
- if (!jscontext.isValid)
- return;
-
- var wrappedGlobal = jscontext.globalObject;
- if (!wrappedGlobal)
- return;
-
- var unwrappedGlobal = wrappedGlobal.getWrappedValue();
- if (!unwrappedGlobal)
- return;
-
- if (unwrappedGlobal instanceof Ci.nsISupports)
- var global = new XPCNativeWrapper(unwrappedGlobal);
- else
- var global = unwrappedGlobal;
-
- if (FBTrace.DBG_FBS_JSCONTEXTS)
- FBTrace.sysout("fbs.getJSContexts jsIContext tag:"+jscontext.tag+
- (jscontext.isValid?" - isValid\n":" - NOT valid\n"));
-
- if (global)
- {
- callback(global, jscontext.tag);
- }
- else
- {
- if (FBTrace.DBG_FBS_JSCONTEXTS)
- FBTrace.sysout("fbs.getJSContexts no global object tag:"+jscontext.tag);
- return; // skip this
- }
-
- enumeratedContexts.push(jscontext);
- }
- catch(e)
- {
- FBTrace.sysout("fbs.jscontext dump FAILED "+e, e);
- }
- }});
-
- return enumeratedContexts;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- getOutermostScope: function(frame)
- {
- var scope = frame.scope;
- if (scope)
- {
- while(scope.jsParent)
- scope = scope.jsParent;
-
- // These are just determined by trial and error.
- if (scope.jsClassName == "Window" || scope.jsClassName == "ChromeWindow" ||
- scope.jsClassName == "ModalContentWindow")
- {
- lastWindowScope = wrapIfNative(scope.getWrappedValue());
- return lastWindowScope;
- }
-
- /* if (scope.jsClassName == "DedicatedWorkerGlobalScope")
- {
- //var workerScope = new XPCNativeWrapper(scope.getWrappedValue());
-
- //if (FBTrace.DBG_FBS_FINDDEBUGGER)
- // FBTrace.sysout("fbs.getOutermostScope found WorkerGlobalScope: "+scope.jsClassName, workerScope);
- // https://bugzilla.mozilla.org/show_bug.cgi?id=507930 if (FBTrace.DBG_FBS_FINDDEBUGGER)
- // FBTrace.sysout("fbs.getOutermostScope found WorkerGlobalScope.location: "+workerScope.location, workerScope.location);
- return null; // https://bugzilla.mozilla.org/show_bug.cgi?id=507783
- }
- */
- if (scope.jsClassName == "Sandbox")
- {
- // Drop one frame see attachConsoleInjector
- var fileName = this.safeGetUrlFromFrame(frame);
- if (fileName && fileName.indexOf("console/consoleInjector.js") > 0)
- {
- if (frame.callingFrame)
- return fbs.getOutermostScope(frame.callingFrame);
- }
-
- var proto = scope.jsPrototype;
-
- // this is the path if we have web page in a sandbox
- if (proto.jsClassName == "XPCNativeWrapper")
- {
- proto = proto.jsParent;
- if (proto.jsClassName == "Window")
- return wrapIfNative(proto.getWrappedValue());
- }
- else
- {
- return wrapIfNative(scope.getWrappedValue());
- }
- }
-
- if (FBTrace.DBG_FBS_FINDDEBUGGER)
- FBTrace.sysout("fbs.getOutermostScope found scope chain bottom, not Window: " +
- scope.jsClassName, scope);
-
- return wrapIfNative(scope.getWrappedValue()); // not a window or a sandbox
- }
- else
- {
- return null;
- }
- },
-
- findDebugger: function(frame)
- {
- if (debuggers.length < 1)
- return;
-
- var checkFrame = frame;
- while (checkFrame) // We may stop in a component, but want the callers Window
- {
- // the outermost lexical scope of the function running the frame
- var frameScopeRoot = this.getOutermostScope(checkFrame);
- if (frameScopeRoot)
- break;
-
- if (FBTrace.DBG_FBS_FINDDEBUGGER)
- FBTrace.sysout("fbs.findDebugger no frame Window, looking to older stackframes",
- checkFrame);
-
- checkFrame = checkFrame.callingFrame;
- }
-
- if (!checkFrame && FBTrace.DBG_FBS_FINDDEBUGGER)
- FBTrace.sysout("fbs.findDebugger fell thru bottom of stack", frame);
-
- // frameScopeRoot should be the top window for the scope of the frame function
- // or null
- var the_debuggr = fbs.askDebuggersForSupport(frameScopeRoot, frame);
- if (the_debuggr)
- return the_debuggr;
-
- if (FBTrace.DBG_FBS_FINDDEBUGGER)
- FBTrace.sysout("fbs.findDebugger no debuggr on bottom frame", frame);
-
- return null;
- },
-
- isChromebug: function(location)
- {
- // TODO this is a kludge: isFilteredURL stops users from seeing firebug but
- // chromebug has to disable the filter
-
- if (location)
- {
- if (location.indexOf("chrome://chromebug/") >= 0 ||
- location.indexOf("chrome://fb4cb/") >= 0)
- {
- return true;
- }
- }
- return false;
- },
-
- getLocationSafe: function(global)
- {
- try
- {
- // then we have a window, it will be an nsIDOMWindow, right?
- if (global && global.location)
- return global.location.toString();
- else if (global && global.tag)
- return "global_tag_"+global.tag;
- }
- catch (exc)
- {
- // FF3 gives (NS_ERROR_INVALID_POINTER) [nsIDOMLocation.toString]
- }
-
- return null;
- },
-
- safeGetUrlFromFrame: function(frame)
- {
- try
- {
- if (frame)
- return frame.script.fileName;
- }
- catch (err)
- {
- }
- return "";
- },
-
- askDebuggersForSupport: function(global, frame)
- {
- if (FBTrace.DBG_FBS_FINDDEBUGGER)
- FBTrace.sysout("fbs.askDebuggersForSupport using global " + global + " for " +
- frame.script.fileName);
-
- if (global && fbs.isChromebug(fbs.getLocationSafe(global)))
- return false;
-
- if (FBTrace.DBG_FBS_FINDDEBUGGER)
- FBTrace.sysout("fbs.askDebuggersForSupport " + debuggers.length +
- " debuggers to check for " + frame.script.fileName, debuggers);
-
- for (var i=debuggers.length-1; i>=0; i--)
- {
- try
- {
- var debuggr = debuggers[i];
- if (debuggr.supportsGlobal(global, frame))
- {
- if (!debuggr.breakContext)
- FBTrace.sysout("fbs.Debugger with no breakContext:",debuggr.supportsGlobal);
-
- if (FBTrace.DBG_FBS_FINDDEBUGGER)
- FBTrace.sysout("fbs.findDebugger found debuggr (" + debuggr.debuggerName +
- ") at " + i + " with breakContext " + debuggr.breakContext.getName() +
- " for global " + fbs.getLocationSafe(global) + " while processing " +
- frame.script.fileName);
-
- return debuggr;
- }
- }
- catch (exc)
- {
- FBTrace.sysout("fbs.askDebuggersForSupport ERROR: " + exc,exc);
- }
- }
- return null;
- },
-
- dumpIValue: function(value)
- {
- var listValue = {value: null}, lengthValue = {value: 0};
- value.getProperties(listValue, lengthValue);
-
- for (var i=0; i<lengthValue.value; ++i)
- {
- var prop = listValue.value[i];
- try
- {
- var name = unwrapIValue(prop.name);
- FBTrace.sysout("fbs." + i + "]" + name + "=" + unwrapIValue(prop.value));
- }
- catch (e)
- {
- FBTrace.sysout("fbs." + i + "]" + e);
- }
- }
- },
-
- reFindDebugger: function(frame, debuggr)
- {
- var frameScopeRoot = this.getOutermostScope(frame);
- if (frameScopeRoot && debuggr.supportsGlobal(frameScopeRoot, frame))
- return debuggr;
-
- if (FBTrace.DBG_FBS_FINDDEBUGGER)
- FBTrace.sysout("fbs.reFindDebugger debuggr " + debuggr.debuggerName +
- " does not support frameScopeRoot " + frameScopeRoot, frameScopeRoot);
-
- return null;
- },
-
- discardRecursionFrames: function(frame)
- {
- var i = 0;
- var rest = 0;
- var mark = frame; // a in abcabcabcdef
- var point = frame;
-
- while (point = point.callingFrame)
- {
- i++;
-
- // then we found a repeating caller abcabcdef
- if (point.script.tag == mark.script.tag)
- {
- mark = point;
- rest = i;
- }
- }
-
- // here point is null and mark is the last repeater, abcdef
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.discardRecursionFrames dropped " + rest + " of " + i, mark);
-
- return mark;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Breakpoints
-
- // jsd breakpoints are on a PC in a jsdIScript
- // Users breakpoint on a line of source
- // Because test.js can be included multiple times, the URL+line number from the UI is not unique.
- // sourcefile.href != script.fileName, generally script.fileName cannot be used.
- // If the source is compiled, then we have zero, one, or more jsdIScripts on a line.
- // If zero, cannot break at that line
- // If one, set a jsd breakpoint
- // If more than one, set jsd breakpoint on each script
- // Else we know that the source will be compiled before it is run.
- // Save the sourceFile.href+line and set the jsd breakpoint when we compile
- // Venkman called these "future" breakpoints
- // We cannot prevent future breakpoints on lines that have no script.
- // Break onCreate with error?
- addBreakpoint: function(type, sourceFile, lineNo, props, debuggr)
- {
- var url = sourceFile.href;
- var bp = this.findBreakpoint(url, lineNo);
- if (bp && bp.type & type)
- return null;
-
- if (bp)
- {
- bp.type |= type;
-
- if (debuggr)
- {
- bp.debuggerName = debuggr.debuggerName;
- }
- else
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.addBreakpoint with no debuggr:");
- }
- }
- else
- {
- bp = this.recordBreakpoint(type, url, lineNo, debuggr, props, sourceFile);
- }
-
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.addBreakpoint for "+url, [bp, sourceFile]);
-
- return bp;
- },
-
- recordBreakpoint: function(type, url, lineNo, debuggr, props, sourceFile)
- {
- var urlBreakpoints = fbs.getBreakpoints(url);
- if (!urlBreakpoints)
- urlBreakpoints = [];
-
- if (typeof(lineNo) !== 'number')
- throw new Error("firebug-service line numbers must be numbers "+lineNo+"@"+url);
-
- var bp = {type: type, href: url, lineNo: lineNo, disabled: 0,
- debuggerName: debuggr.debuggerName,
- condition: "", onTrue: true, hitCount: -1, hit: 0};
-
- if (props)
- {
- bp.condition = props.condition;
- delete bp.transformedCondition;
- bp.onTrue = props.onTrue;
- bp.hitCount = props.hitCount;
- if (bp.condition || bp.hitCount > 0)
- ++conditionCount;
- if(props.disabled)
- {
- bp.disabled |= BP_NORMAL;
- ++disabledCount;
- }
- }
-
- urlBreakpoints.push(bp);
- fbs.setJSDBreakpoint(sourceFile, bp);
- fbs.setBreakpoints(url, urlBreakpoints);
- ++breakpointCount;
-
- return bp;
- },
-
- removeBreakpoint: function(type, url, lineNo)
- {
- var urlBreakpoints = fbs.getBreakpoints(url);
-
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.removeBreakpoint for "+url+", need to check bps="+
- (urlBreakpoints?urlBreakpoints.length:"none"));
-
- if (!urlBreakpoints)
- return false;
-
- for (var i=0; i<urlBreakpoints.length; ++i)
- {
- var bp = urlBreakpoints[i];
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.removeBreakpoint checking bp.lineNo vs lineNo=" + bp.lineNo +
- " vs " + lineNo);
-
- if (bp.lineNo === lineNo)
- {
- bp.type &= ~type;
- if (!bp.type)
- {
- if (bp.scriptsWithBreakpoint)
- {
- for (var j=0; j<bp.scriptsWithBreakpoint.length; j++)
- {
- var script = bp.scriptsWithBreakpoint[j];
- if (script && script.isValid)
- {
- try
- {
- script.clearBreakpoint(bp.pc[j]);
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.removeBreakpoint in tag=" + script.tag +
- " at " + lineNo + "@" + url);
- }
- catch (exc)
- {
- FBTrace.sysout("fbs.Firebug service failed to remove breakpoint in " +
- script.tag + " at lineNo=" + lineNo + " pcmap:" + bp.pcmap);
- }
- }
- }
- }
-
- // else this was a future breakpoint that never hit or a script that was GCed
-
- urlBreakpoints.splice(i, 1);
- --breakpointCount;
-
- if (bp.disabled)
- --disabledCount;
-
- if (bp.condition || bp.hitCount > 0)
- --conditionCount;
-
- fbs.setBreakpoints(url, urlBreakpoints);
- }
-
- return bp;
- }
- }
-
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.removeBreakpoint no find for " + lineNo + "@" + url + " in " +
- urlBreakpoints.length, urlBreakpoints);
-
- return false;
- },
-
- findBreakpoint: function(url, lineNo)
- {
- var urlBreakpoints = fbs.getBreakpoints(url);
- if (urlBreakpoints)
- {
- for (var i = 0; i < urlBreakpoints.length; ++i)
- {
- var bp = urlBreakpoints[i];
- if (bp.lineNo === lineNo)
- return bp;
- }
- }
-
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.findBreakpoint no find for "+lineNo+"@"+url, urlBreakpoints);
-
- return null;
- },
-
- // When we are called, scripts have been compiled so all relevant breakpoints are not "future"
- findBreakpointByScript: function(script, pc)
- {
- var urlsWithBreakpoints = fbs.getBreakpointURLs();
- for (var iURL = 0; iURL < urlsWithBreakpoints.length; iURL++)
- {
- var url = urlsWithBreakpoints[iURL];
- var urlBreakpoints = fbs.getBreakpoints(url);
- if (urlBreakpoints)
- {
- for (var iBreakpoint = 0; iBreakpoint < urlBreakpoints.length; ++iBreakpoint)
- {
- var bp = urlBreakpoints[iBreakpoint];
- if (bp.scriptsWithBreakpoint)
- {
- for (var iScript = 0; iScript < bp.scriptsWithBreakpoint.length; iScript++)
- {
- if (FBTrace.DBG_FBS_BP)
- {
- var vs = (bp.scriptsWithBreakpoint[iScript] ?
- bp.scriptsWithBreakpoint[iScript].tag + "@" + bp.pc[iScript] :
- "future") + " on " + url;
-
- FBTrace.sysout("fbs.findBreakpointByScript[" + iURL + "," + iBreakpoint +
- "," + iScript + "]" + " looking for " + script.tag + "@" + pc +
- " vs " + vs);
- }
-
- if (bp.scriptsWithBreakpoint[iScript] &&
- (bp.scriptsWithBreakpoint[iScript].tag == script.tag) &&
- (bp.pc[iScript] == pc))
- {
- return bp;
- }
- }
- }
- }
- }
- }
-
- return null;
- },
-
- // the sourcefile has just been created after compile
- resetBreakpoints: function(sourceFile, debuggr)
- {
- // If the new script is replacing an old script with a breakpoint still
- var url = sourceFile.href;
- var urlBreakpoints = fbs.getBreakpoints(url);
-
- if (FBTrace.DBG_FBS_BP)
- {
- try
- {
- var msg = "resetBreakpoints: breakpoints["+sourceFile.href;
- msg += "]="+(urlBreakpoints?urlBreakpoints.length:"NONE")+"\n";
- FBTrace.sysout(msg);
- }
- catch (exc)
- {
- FBTrace.sysout("fbs.Failed to give resetBreakpoints trace in url: " + url +
- " because " + exc + " for urlBreakpoints=", urlBreakpoints);
- }
- }
-
- if (urlBreakpoints)
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.resetBreakpoints total bp=" + urlBreakpoints.length +
- " for url=" + url);
-
- fbs.deleteBreakpoints(url);
-
- for (var i=0; i<urlBreakpoints.length; ++i)
- {
- var bp = urlBreakpoints[i];
- bp = fbs.recordBreakpoint(bp.type, url, bp.lineNo, debuggr, bp, sourceFile);
-
- if (bp.type & BP_ERROR)
- {
- var existingBP = null;
- fbs.enumerateErrorBreakpoints(url, {call: function checkExisting(url, lineNo, bp)
- {
- // An error breakpoint is in this file
- if (lineNo == bp.lineNo)
- existingBP = true;
- }});
-
- if (!existingBP)
- errorBreakpoints.push(bp); // TODO implement as hashtable errorBreakpoints[url at lineNo]
- }
-
- if (bp.disabled & BP_NORMAL)
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.resetBreakpoints: mark breakpoint disabled: " +
- bp.lineNo + "@" + sourceFile);
-
- fbs.disableBreakpoint(url, bp.lineNo);
- }
- else
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.resetBreakpoints: "+bp.lineNo+"@"+sourceFile);
- }
- }
- }
- else
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.resetBreakpoints no breakpoints for "+url);
- }
- },
-
- setJSDBreakpoint: function(sourceFile, bp)
- {
- var scripts = sourceFile.getScriptsAtLineNumber(bp.lineNo);
- if (!scripts)
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.setJSDBreakpoint: NO inner scripts: "+bp.lineNo+"@"+sourceFile);
-
- if (!sourceFile.outerScript || !sourceFile.outerScript.isValid)
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.setJSDBreakpoint: NO valid outerScript\n");
- return;
- }
-
- scripts = [sourceFile.outerScript];
- }
-
- if (!bp.scriptsWithBreakpoint)
- {
- bp.scriptsWithBreakpoint = [];
- bp.pc = [];
- }
-
- for (var i=0; i<scripts.length; i++)
- {
- var script = scripts[i];
- if (!script.isValid)
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.setJSDBreakpoint: tag " + script.tag + ", " + i + "/" +
- scripts.length + " is invalid");
- continue;
- }
-
- var haveScript = false;
- for (var j=0; j<bp.scriptsWithBreakpoint.length; j++)
- {
- if (bp.scriptsWithBreakpoint[j].tag === script.tag)
- {
- haveScript = true;
- break;
- }
- }
-
- if (haveScript)
- continue;
-
- var pcmap = sourceFile.pcmap_type;
- if (!pcmap)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.setJSDBreakpoint pcmap undefined " +
- sourceFile, sourceFile);
-
- pcmap = PCMAP_SOURCETEXT;
- }
-
- // we subtraced this offset when we showed the user so lineNo is a user line
- // number; now we need to talk
- // to jsd its line world
- var jsdLine = bp.lineNo + sourceFile.getBaseLineOffset();
- // test script.isLineExecutable(jsdLineNo, pcmap) ??
-
- var isExecutable = false;
- try
- {
- isExecutable = script.isLineExecutable(jsdLine, pcmap);
- }
- catch(e)
- {
- // guess not then...
- }
-
- if (isExecutable)
- {
- var pc = script.lineToPc(jsdLine, pcmap);
- var pcToLine = script.pcToLine(pc, pcmap); // avoid calling this unless we have to...
-
- if (pcToLine == jsdLine)
- {
- script.setBreakpoint(pc);
-
- bp.scriptsWithBreakpoint.push(script);
- bp.pc.push(pc);
- bp.pcmap = pcmap;
- bp.jsdLine = jsdLine;
-
- if (pc == 0) // signal the breakpoint handler to break for user
- sourceFile.breakOnZero = script.tag;
-
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.setJSDBreakpoint tag: " + script.tag + " line.pc at url=" +
- bp.lineNo + "." + pc + "@" + sourceFile.href + " using offset:" +
- sourceFile.getBaseLineOffset() + " jsdLine: " + jsdLine +
- " pcToLine: " + pcToLine +
- (isExecutable ? " isExecuable" : " notExecutable"),
- {sourceFile: sourceFile, script: script});
- }
- else
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.setJSDBreakpoint LINE MISMATCH for tag: " +
- script.tag + " line.pc at url=" + bp.lineNo + "." + pc + "@" +
- sourceFile.href + " using offset:" + sourceFile.getBaseLineOffset() +
- " jsdLine: " + jsdLine + " pcToLine: " + pcToLine +
- (isExecutable ? " isExecuable" : " notExecutable"), sourceFile);
- }
- }
- else
- {
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.setJSDBreakpoint NOT isExecutable tag: " + script.tag +
- " jsdLine at url=" + jsdLine + "@" + sourceFile.href + " pcmap:" +
- pcmap + " baselineOffset:" + sourceFile.getBaseLineOffset(), script);
- }
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- saveBreakpoints: function(url)
- {
- // Do not call fbs.setBreakpoints() it calls us.
- try
- {
- var urlBreakpoints = fbs.getBreakpoints(url);
-
- if (!urlBreakpoints || !urlBreakpoints.length)
- {
- fbs.breakpointStore.removeItem(url);
- fbs.deleteBreakpoints(url);
- return;
- }
-
- var cleanBPs = [];
- for(var i = 0; i < urlBreakpoints.length; i++)
- {
- var bp = urlBreakpoints[i];
-
- // Do not store breakpoins for "Run until this line". These are not
- // visible in Firebug UI and so, it is not possible to remove them.
- // Note that there can be cases where such breakpoint is not removed
- // by RunUntil (e.g. crash).
- if (bp.type == BP_UNTIL)
- continue;
-
- var cleanBP = {};
- for (var p in bp)
- cleanBP[p] = bp[p];
-
- delete cleanBP.scriptsWithBreakpoint; // not JSON-able
- delete cleanBP.pc; // co-indexed with scriptsWithBreakpoint
- delete cleanBP.debuggerName;
- cleanBPs.push(cleanBP);
- }
-
- fbs.breakpointStore.setItem(url, cleanBPs);
- }
- catch (exc)
- {
- FBTrace.sysout("fbs.saveBreakpoints ERROR " + exc, exc);
- }
- },
-
- setBreakpoints: function(url, urlBreakpoints)
- {
- fbs.breakpoints[url] = urlBreakpoints;
- fbs.saveBreakpoints(url);
- },
-
- getBreakpoints: function(url)
- {
- return fbs.breakpoints[url];
- },
-
- deleteBreakpoints: function(url)
- {
- delete fbs.breakpoints[url];
- },
-
- getBreakpointURLs: function()
- {
- var breakpointStore = this.getBreakpointStore();
- if (!breakpointStore)
- return [];
-
- return breakpointStore.getKeys();
- },
-
- getBreakpointStore: function()
- {
- if (this.breakpointStore)
- return this.breakpointStore;
-
- try
- {
- Components.utils.import("resource://firebug/storageService.js");
-
- if (typeof(StorageService) != "undefined")
- {
- this.breakpointStore = StorageService.getStorage("breakpoints.json");
- }
- else
- {
- ERROR("firebug-service breakpoint StorageService ERROR");
-
- this.breakpointStore =
- {
- setItem: function(){},
- removeItem: function(){},
- getKeys: function(){return [];},
- clear: function(){},
- };
- }
-
- return this.breakpointStore;
- }
- catch(exc)
- {
- // Throws another exception since fbs is null.
- //ERROR("firebug-service restoreBreakpoints ERROR "+exc);
-
- // xxxHonza: why I can't see this log in the Tracing Console?
- FBTrace.sysout("fbs.restoreBreakpoints ERROR " + exc, exc);
- }
- },
-
- restoreBreakpoints: function()
- {
- this.breakpoints = {};
-
- var breakpointStore = fbs.getBreakpointStore();
- if (!breakpointStore)
- return;
-
- var urls = fbs.getBreakpointURLs();
- for (var i=0; i<urls.length; i++)
- {
- var url = urls[i];
- var bps = breakpointStore.getItem(url);
-
- // Do not restore "Run unit this line" breakpoints. This should solve complaints
- // about Firebug breaking in the source even if there are no breakpoints in
- // Firebug UI.
- if (bps.type == BP_UNTIL)
- continue;
-
- this.breakpoints[url] = bps;
-
- for (var j=0; j<bps.length; j++)
- {
- var bp = bps[j];
- if (bp.condition)
- ++conditionCount;
- if (bp.disabled)
- ++disabledCount;
- if (bp.type & BP_MONITOR)
- ++monitorCount;
- }
- }
-
- if (FBTrace.DBG_FBS_BP)
- {
- FBTrace.sysout("fbs.restoreBreakpoints "+urls.length+", disabledCount:"+disabledCount+
- " monitorCount:"+monitorCount+" conditionCount:"+conditionCount+", restored ",
- this.breakpoints);
-
- for (var p in this.breakpoints)
- FBTrace.sysout("fbs.restoreBreakpoints restored "+p+" condition "+
- this.breakpoints[p].condition);
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // When (debugger keyword and not halt)||(bp and BP_UNTIL) || (onBreakPoint && no conditions)
- // || interuptHook (single stepping).
- // rv is ignored
- routeBreakToDebuggr: function(frame, type, rv, stepStayOnDebuggr)
- {
- try
- {
- // avoid step_out from web page to chrome
- if (stepStayOnDebuggr)
- {
- var debuggr = this.reFindDebugger(frame, stepStayOnDebuggr);
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs.routeBreakToDebuggr type="+getExecutionStopNameFromType(type)+
- " stepStayOnDebuggr "+stepStayOnDebuggr+" debuggr:"+(debuggr?debuggr:"null"));
-
- if (!debuggr) // then the frame is not for our debugger
- return RETURN_CONTINUE; // This means that we will continue to take interrupts until when?
- }
- else
- {
- var debuggr = this.findDebugger(frame);
-
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs.routeBreakToDebuggr type="+getExecutionStopNameFromType(type)+
- " debuggr:"+(debuggr?debuggr:"null"));
- }
-
- if (debuggr)
- return this.breakIntoDebugger(debuggr, frame, type);
- }
- catch(exc)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.routeBreakToDebuggr failed: "+exc,exc);
- ERROR("routeBreakToDebuggr failed: "+exc, exc);
- }
-
- return RETURN_CONTINUE;
- },
-
- breakIntoDebugger: function(debuggr, frame, type)
- {
- if (FBTrace.DBG_FBS_STEP || FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.breakIntoDebugger called "+debuggr.debuggerName+
- " fbs.isChromeBlocked:"+fbs.isChromeBlocked);
-
- // Before we break, clear information about previous stepping session
- this.stopStepping(frame);
-
- // Break into the debugger - execution will stop here until the user resumes
- var returned;
- try
- {
- var debuggr = this.reFindDebugger(frame, debuggr);
- returned = debuggr.onBreak(frame, type);
- }
- catch (exc)
- {
- ERROR("breakIntoDebugger ERROR "+exc, exc);
- returned = RETURN_CONTINUE;
- }
-
- // Execution resumes now. Check if the user requested stepping and if so
- // install the necessary hooks
- this.startStepping(frame);
-
- if (FBTrace.DBG_FBS_STEP || FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.breakIntoDebugger returning "+returned+" from "+
- debuggr.debuggerName+" with jsd.pauseDepth "+jsd.pauseDepth+" and functionHook "+
- jsd.functionHook);
-
- return returned;
- },
-
- needToBreakForError: function(reportNextError)
- {
- return this.breakOnErrors || fbs.breakOnDebugCall;
- },
-
- // debuggr calls us to stage stepping
- step: function(mode, context, debuggr)
- {
- var stepper;
-
- if (mode === STEP_INTO)
- stepper = new IntoStepper(debuggr, context);
- else if (mode === STEP_OVER)
- stepper = new LineStepper(debuggr, context);
- else if (mode === STEP_OUT)
- stepper = new OutStepper(debuggr, context);
-
- if (stepper)
- jsdHandlers.add(stepper);
- else
- ERROR("fbs.step ERROR unknown mode "+mode);
-
- // The actual stepping starts after we resume the debuggger. Stepping is always
- // done when the execution/debugger is paused, so we need to resume and break e.g.
- // on the next line.
- },
-
- startStepping: function(frame) // if needed
- {
- jsdHandlers.hook(frame);
- },
-
- stopStepping: function(frame, context)
- {
- jsdHandlers.unhook(frame);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Hook Interupts
-
- hookInterrupts: function(frame)
- {
- // TODO move the try code in hook() to dispatch
- jsd.interruptHook = { onExecute: hook(this.onInterrupt, RETURN_CONTINUE)};
-
- if (frame)
- ScriptInterrupter.enable(frame.script);
-
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs.set InterruptHook frame.script.tag: "+
- (frame?frame.script.tag:"<no frame>"), ScriptInterrupter);
- },
-
- onInterrupt: function(frame, type, rv)
- {
- return jsdHandlers.dispatch("onInterrupt", frame, type);
- },
-
- unhookInterrupts: function(frame)
- {
- jsd.interruptHook = null;
-
- ScriptInterrupter.disableAll();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Hook Functions
-
- hookFunctions: function()
- {
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs.set functionHook");
-
- jsd.functionHook = { onCall: hook(this.onFunction, true) };
- jsd.topLevelHook = { onCall: hook(this.onFunction, true) };
- },
-
- onFunction: function(frame, type) // called in try/catch block with this === fbs
- {
- switch (type)
- {
- case TYPE_TOPLEVEL_START: // fall through
- case TYPE_FUNCTION_CALL: // the frame will be running the called script
- {
- jsdHandlers.dispatch("onFunctionCall", frame, shiftCallType(type));
- break;
- }
- case TYPE_TOPLEVEL_END: // fall through
- case TYPE_FUNCTION_RETURN: // the frame will be running the called script
- {
- jsdHandlers.dispatch("onFunctionReturn", frame, shiftCallType(type));
- break;
- }
- }
- },
-
- unhookFunctions: function()
- {
- jsd.functionHook = null;
- jsd.topLevelHook = null;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Hook Scripts
-
- hookScripts: function()
- {
- if (FBTrace.DBG_FBS_STEP || FBTrace.DBG_FBS_TRACKFILES)
- FBTrace.sysout("fbs.set scriptHook\n");
-
- jsd.scriptHook = {
- onScriptCreated: hook(this.onScriptCreated),
- onScriptDestroyed: hook(this.onScriptDestroyed)
- };
-
- if (fbs.filterSystemURLs)
- fbs.removeChromeBlockingFilters();
-
- jsd.clearFilters();
-
- if (fbs.filterSystemURLs)
- fbs.setChromeBlockingFilters();
-
- jsd.debuggerHook = { onExecute: hook(this.onDebugger, RETURN_CONTINUE) };
- jsd.debugHook = { onExecute: hook(this.onDebug, RETURN_CONTINUE) };
- jsd.breakpointHook = { onExecute: hook(this.onBreakpoint, RETURN_CONTINUE) };
- jsd.throwHook = { onExecute: hook(this.onThrow, RETURN_CONTINUE_THROW) };
- jsd.errorHook = { onError: hook(this.onError, true) };
- },
-
- unhookScripts: function()
- {
- jsd.scriptHook = null;
- fbs.removeChromeBlockingFilters();
-
- if (FBTrace.DBG_FBS_STEP || FBTrace.DBG_FBS_TRACKFILES)
- FBTrace.sysout("fbs.unset scriptHook\n");
- },
-
- // TODO rewrite as a Stepper
- // xxxJJB: perhaps xxxHonza could implement the stepper, but what the code is responsible for?
- // xxxhonza: traceAll and trace a function. I don't think these work anyway, a good start is to remove the old code.
- hookCalls: function(callBack, unhookAtBottom)
- {
- var contextCached = null;
-
- function callHook(frame, type)
- {
- switch (type)
- {
- case TYPE_FUNCTION_CALL:
- {
- ++hookFrameCount;
-
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs.callHook TYPE_FUNCTION_CALL "+frame.script.fileName);
-
- contextCached = callBack(contextCached, frame, hookFrameCount, true);
-
- break;
- }
- case TYPE_FUNCTION_RETURN:
- {
- if (hookFrameCount <= 0) // ignore returns until we have started back in
- return;
-
- --hookFrameCount;
-
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs.functionHook TYPE_FUNCTION_RETURN " +
- frame.script.fileName);
-
- // stack empty
- if (unhookAtBottom && hookFrameCount == 0)
- fbs.unhookFunctions();
-
- contextCached = callBack(contextCached, frame, hookFrameCount, false);
- break;
- }
- }
- }
-
- if (jsd.functionHook)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.hookCalls cannot set functionHook, one is already set");
- return;
- }
-
- if (FBTrace.DBG_FBS_STEP)
- FBTrace.sysout("fbs.set callHook");
-
- hookFrameCount = 0;
- jsd.functionHook = { onCall: callHook };
- },
-
- getJSD: function()
- {
- return jsd; // for debugging fbs
- },
-
- dumpFileTrack: function(moreFiles)
- {
- if (moreFiles)
- trackFiles.merge(moreFiles);
- trackFiles.dump();
- },
-};
-
-// ********************************************************************************************* //
-// Script Interrupt Manager
-
-var ScriptInterrupter =
-{
- entries: {},
-
- enable: function(script)
- {
- if (!script.enableSingleStepInterrupts)
- return;
-
- if (this.entries[script.tag])
- return;
-
- try
- {
- script.enableSingleStepInterrupts(true);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("fbs.ScriptInterrupter.enable; EXCEPTION");
- }
-
- this.entries[script.tag] = {
- script: script
- };
- },
-
- disable: function(script)
- {
- if (!script.enableSingleStepInterrupts)
- return;
-
- var entry = this.entries[script.tag];
- if (!entry)
- return;
-
- try
- {
- script.enableSingleStepInterrupts(false);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("fbs.ScriptInterrupter.disable; EXCEPTION");
- }
-
- delete this.entries[script.tag];
- },
-
- disableAll: function()
- {
- for (var tag in this.entries)
- {
- var entry = this.entries[tag];
- if (!entry.script.enableSingleStepInterrupts)
- return;
-
- try
- {
- entry.script.enableSingleStepInterrupts(false);
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("fbs.ScriptInterrupter.disable; EXCEPTION");
- }
- }
-
- this.entries = {};
- }
-};
-
-// ********************************************************************************************* //
-// Local Helpers
-
-function getStepName(mode)
-{
- if (mode == STEP_OVER)
- return "STEP_OVER";
-
- if (mode == STEP_INTO)
- return "STEP_INTO";
-
- if (mode == STEP_OUT)
- return "STEP_OUT";
-
- if (mode == STEP_SUSPEND)
- return "STEP_SUSPEND";
-
- return "(not a step mode)";
-}
-
-// called by enumerateScripts, onThrow, onDebug, onScriptCreated/Destroyed.
-function isFilteredURL(rawJSD_script_filename)
-{
- if (!rawJSD_script_filename)
- return true;
- if (fbs.filterConsoleInjections)
- return true;
- if (rawJSD_script_filename[0] == 'h')
- return false;
- if (rawJSD_script_filename == "XPCSafeJSObjectWrapper.cpp")
- return true;
- if (rawJSD_script_filename === "debugger eval code")
- return true;
- if (fbs.filterSystemURLs)
- return systemURLStem(rawJSD_script_filename);
-
- for (var i=0; i<fbs.alwayFilterURLsStarting.length; i++)
- {
- if (rawJSD_script_filename.indexOf(fbs.alwayFilterURLsStarting[i]) != -1)
- return true;
- }
-
- return false;
-}
-
-function systemURLStem(rawJSD_script_filename)
-{
- // attempt to optimize stream of similar urls
- if (this.url_class)
- {
- if (rawJSD_script_filename.substr(0, this.url_class.length) == this.url_class)
- return this.url_class;
- }
-
- this.url_class = deepSystemURLStem(rawJSD_script_filename);
- return this.url_class;
-}
-
-function deepSystemURLStem(rawJSD_script_filename)
-{
- for (var i=0; i<urlFilters.length; ++i)
- {
- var filter = urlFilters[i];
- if ( rawJSD_script_filename.substr(0,filter.length) == filter )
- return filter;
- }
-
- for (var i=0; i<COMPONENTS_FILTERS.length; ++i)
- {
- if (COMPONENTS_FILTERS[i].test(rawJSD_script_filename))
- {
- var match = COMPONENTS_FILTERS[i].exec(rawJSD_script_filename);
- urlFilters.push(match[1]); // cache this for future calls
- return match[1];
- }
- }
-
- return false;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-function dispatch(listeners, name, args)
-{
- var totalListeners = listeners.length;
- for (var i=0; i<totalListeners; ++i)
- {
- var listener = listeners[i];
- if (listener.hasOwnProperty(name) && listener[name])
- listener[name].apply(listener, args);
- }
-
- //if (FBTrace.DBG_FBS_ERRORS)
- // FBTrace.sysout("fbs.dispatch "+name+" to "+listeners.length+" listeners");
-}
-
-function hook(fn, rv)
-{
- return function()
- {
- try
- {
- return fn.apply(fbs, arguments);
- }
- catch (exc)
- {
- var msg = "Error in hook: "+ exc;
- ERROR(msg, exc);
- return rv;
- }
- };
-}
-
-var lastWindowScope = null;
-function wrapIfNative(obj)
-{
- try
- {
- if (obj instanceof Ci.nsISupports)
- return XPCNativeWrapper(obj);
- else
- return obj;
- }
- catch(exc)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.wrapIfNative FAILED: "+exc, obj);
- }
-}
-
-function getRootWindow(win)
-{
- for (; win; win = win.parent)
- {
- if (!win.parent || win == win.parent || !(win.parent instanceof Window))
- return win;
- }
- return null;
-}
-
-function countFrames(frame)
-{
- var frameCount = 0;
- try
- {
- for (; frame; frame = frame.callingFrame)
- ++frameCount;
- }
- catch(exc)
- {
- }
-
- return frameCount;
-}
-
-function framesToString(frame)
-{
- var str = "";
- while (frame)
- {
- str += frameToString(frame)+"\n";
- frame = frame.callingFrame;
- }
-
- return str;
-}
-
-function frameToString(frame)
-{
- if (!frame)
- return "< no frame >";
-
- if (!frame.script)
- {
- ERROR("frameToString bad frame "+typeof(frame), frame);
- return "<bad frame>";
- }
-
- return frame.script.tag+" in "+frame.script.fileName+"@"+frame.line+"(pc="+frame.pc+")";
-}
-
-function dumpComponentsStack(from)
-{
- var msg = [];
- for (var frame = Components.stack; frame; frame = frame.caller)
- msg.push( {desc:frame.filename + "@" + frame.lineNumber +": "+
- frame.sourceLine,frame:frame} );
-
- FBTrace.sysout("fbs." + from + " has stack size:" + msg.length, msg);
-}
-
-function testBreakpoint(frame, bp)
-{
- if (FBTrace.DBG_FBS_BP)
- FBTrace.sysout("fbs.testBreakpoint "+bp.condition, bp);
-
- if (bp.condition && bp.condition != "")
- {
- var result = {};
- frame.scope.refresh();
-
- // ugly hack for closure getter syntax
- // (see also transformedCondition elsewhere in the code)
- var cond = bp.condition;
- if (cond.indexOf(".%") !== -1)
- {
- var frameScopeRoot = fbs.getOutermostScope(frame);
- if (frameScopeRoot)
- {
- if (bp.transformedCondition && "__fb_scopedVars" in frameScopeRoot.wrappedJSObject)
- {
- // Fast path: everything is already prepared for us.
- cond = bp.transformedCondition;
- }
- else
- {
- var debuggr = fbs.findDebugger(frame);
- var context = debuggr.breakContext;
- delete debuggr.breakContext;
-
- cond = debuggr._temporaryTransformSyntax(cond, frameScopeRoot, context);
- bp.transformedCondition = cond;
- }
- }
- }
-
- if (frame.eval(cond, "", 1, result))
- {
- if (bp.onTrue)
- {
- if (!result.value.booleanValue)
- return false;
- }
- else
- {
- var value = unwrapIValue(result.value);
- if (typeof bp.lastValue == "undefined")
- {
- bp.lastValue = value;
- return false;
- }
- else
- {
- if (bp.lastValue == value)
- return false;
- bp.lastValue = value;
- }
- }
- }
- }
-
- ++bp.hit;
-
- if (bp.hitCount > 0)
- {
- if (bp.hit < bp.hitCount)
- return false;
- }
-
- return true;
-}
-
-function remove(list, item)
-{
- var index = list.indexOf(item);
- if (index != -1)
- list.splice(index, 1);
-}
-
-function unwrapIValue(object)
-{
- var unwrapped = object.getWrappedValue();
- try
- {
- if (unwrapped)
- return XPCSafeJSObjectWrapper(unwrapped);
- }
- catch (exc)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("fbs.unwrapIValue ERROR for "+object,
- {exc: exc, object: object, unwrapped: unwrapped});
- }
-}
-
-// ********************************************************************************************* //
-// Preferences
-
-var FirebugPrefsObserver =
-{
- syncFilter: function()
- {
- var filter = fbs.scriptsFilter;
- fbs.showEvents = (filter == "all" || filter == "events");
- fbs.showEvals = (filter == "all" || filter == "evals");
-
- if (FBTrace.DBG_OPTIONS)
- FBTrace.sysout("fbs.showEvents "+fbs.showEvents+" fbs.showEvals "+fbs.showEvals);
- }
-};
-
-// ********************************************************************************************* //
-// Application Observers
-
-var QuitApplicationGrantedObserver =
-{
- observe: function(subject, topic, data)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.QuitApplicationGrantedObserver " + topic + " start");
- }
-};
-
-var QuitApplicationRequestedObserver =
-{
- observe: function(subject, topic, data)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.QuitApplicationRequestedObserver " + topic);
- }
-};
-
-var QuitApplicationObserver =
-{
- observe: function(subject, topic, data)
- {
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.QuitApplicationObserver " + topic);
-
- fbs.disableDebugger();
- fbs.shutdown();
- fbs = null;
-
- if (FBTrace.DBG_FBS_ERRORS)
- FBTrace.sysout("fbs.QuitApplicationObserver " + topic + " end");
- }
-};
-
-// ********************************************************************************************* //
-// Console Service
-
-// xxxJJB: Support for console logging could be moved into separate module, correct?
-
-var consoleService = null;
-
-function ERROR(text, exc)
-{
- if (!consoleService)
- consoleService = ConsoleService.getService(nsIConsoleService);
-
- try
- {
- fbs.unhookInterrupts(); // Stop and clear everything
- fbs.unhookFunctions();
- fbs.disableDebugger();
- jsdHandlers.list = [];
- consoleService.logStringMessage("ERROR: "+text);
-
- var frame = Components.stack;
- frame = frame.caller; // drop this frame we are in now.
- for ( ; frame; frame = frame.caller)
- consoleService.logStringMessage(frame.filename + "@" + frame.lineNumber + ";");
-
- FBTrace.sysout(text, exc);
- }
- catch(exc)
- {
- var msg = exc.toString() +" "+(exc.fileName || exc.sourceName) + "@" + exc.lineNumber;
- Cu.reportError("firebug-service ERROR in ERROR: "+msg);
- }
- finally
- {
- fbs.enableDebugger(); // we were enabled to get ERROR, so we hope all is cleared up now.
- }
-}
-
-function getExecutionStopNameFromType(type)
-{
- switch (type)
- {
- case jsdIExecutionHook.TYPE_INTERRUPTED: return "interrupted";
- case jsdIExecutionHook.TYPE_BREAKPOINT: return "breakpoint";
- case jsdIExecutionHook.TYPE_DEBUG_REQUESTED: return "debug requested";
- case jsdIExecutionHook.TYPE_DEBUGGER_KEYWORD: return "debugger_keyword";
- case jsdIExecutionHook.TYPE_THROW: return "interrupted";
- default: return "unknown("+type+")";
- }
-}
-
-function getCallFromType(type)
-{
- var typeName = type;
- switch(type)
- {
- case TYPE_FUNCTION_RETURN: { typeName = "FUNCTION_RETURN"; break; }
- case TYPE_FUNCTION_CALL: { typeName = "FUNCTION_CALL"; break; }
- case TYPE_TOPLEVEL_START: { typeName = "TOPLEVEL_START"; break; }
- case TYPE_TOPLEVEL_END: { typeName = "TOPLEVEL_END"; break; }
- }
- return typeName;
-}
-
-function shiftCallType(type)
-{
- return type + 10;
-}
-
-// ********************************************************************************************* //
-// Chromebug Tracing
-
-// xxxJJB, shouldn't the following code be part of Chromebug (could be done as part of splitting
-// this file into more modules?)
-// xxxhonza, yes
-
-function getTmpFile()
-{
- var file = Components.classes["@mozilla.org/file/directory_service;1"].
- getService(Components.interfaces.nsIProperties).
- get("TmpD", Components.interfaces.nsIFile);
- file.append("fbs.tmp");
- file.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0666);
-
- FBTrace.sysout("fbs.opened tmp file "+file.path);
-
- return file;
-}
-
-function getTmpStream(file)
-{
- // file is nsIFile, data is a string
- var foStream = Cc["@mozilla.org/network/file-output-stream;1"].
- createInstance(Ci.nsIFileOutputStream);
-
- // use 0x02 | 0x10 to open file for appending.
- foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0);
- // write, create, truncate
- // In a c file operation, we have no need to set file mode with or operation,
- // directly using "r" or "w" usually.
-
- return foStream;
-}
-
-var trackFiles =
-{
- allFiles: {},
-
- add: function(fileName)
- {
- var name = new String(fileName);
- this.allFiles[name] = [];
- },
-
- drop: function(fileName)
- {
- var name = new String(fileName);
- this.allFiles[name].push("dropped");
- },
-
- def: function(frame)
- {
- var frameGlobal = fbs.getOutermostScope(frame);
- var scope = frame.scope;
- if (scope)
- {
- while(scope.jsParent)
- scope = scope.jsParent;
- }
-
- var scopeName = fbs.getLocationSafe(frameGlobal);
- if (!scopeName)
- scopeName = frameGlobal + "";
-
- scopeName = scope.jsClassName + ": "+scopeName;
-
- var name = new String(frame.script.fileName);
- if (!(name in this.allFiles))
- this.allFiles[name]=["not added"];
-
- this.allFiles[name].push(scopeName);
- },
-
- merge: function(moreFiles)
- {
- for (var p in moreFiles)
- {
- if (p in this.allFiles)
- this.allFiles[p] = this.allFiles[p].concat(moreFiles[p]);
- else
- this.allFiles[p] = moreFiles[p];
- }
- },
-
- dump: function()
- {
- var n = 0;
- for (var p in this.allFiles)
- {
- tmpout( (++n) + ") "+p);
- var where = this.allFiles[p];
- if (where.length > 0)
- {
- for (var i = 0; i < where.length; i++)
- tmpout(", "+where[i]);
- tmpout("\n");
- }
- else
- {
- tmpout(" none\n");
- }
- }
- },
-};
-
-function tmpout(text)
-{
- if (!fbs.foStream)
- fbs.foStream = getTmpStream(getTmpFile());
-
- fbs.foStream.write(text, text.length);
-}
-
-// ********************************************************************************************* //
-// Initialization
-
-fbs.initialize();
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+// Debug lines are marked with at column 120
+// Use variable name "fileName" for href returned by JSD, file:/ not same as DOM
+// Use variable name "url" for normalizedURL, file:/// comparable to DOM
+// Convert from fileName to URL with normalizeURL
+// We probably don't need denormalizeURL since we don't send .fileName back to JSD
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+const PrefService = Cc["@mozilla.org/preferences-service;1"];
+const DebuggerService = Cc["@mozilla.org/js/jsd/debugger-service;1"];
+const ConsoleService = Cc["@mozilla.org/consoleservice;1"];
+const Timer = Cc["@mozilla.org/timer;1"];
+const ObserverServiceFactory = Cc["@mozilla.org/observer-service;1"];
+
+const jsdIDebuggerService = Ci.jsdIDebuggerService;
+const jsdIScript = Ci.jsdIScript;
+const jsdIStackFrame = Ci.jsdIStackFrame;
+const jsdICallHook = Ci.jsdICallHook;
+const jsdIExecutionHook = Ci.jsdIExecutionHook;
+const jsdIErrorHook = Ci.jsdIErrorHook;
+const jsdIFilter = Components.interfaces.jsdIFilter;
+const nsISupports = Ci.nsISupports;
+const nsIPrefBranch = Ci.nsIPrefBranch;
+const nsIComponentRegistrar = Ci.nsIComponentRegistrar;
+const nsIFactory = Ci.nsIFactory;
+const nsIConsoleService = Ci.nsIConsoleService;
+const nsITimer = Ci.nsITimer;
+const nsITimerCallback = Ci.nsITimerCallback;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+const NS_ERROR_NO_INTERFACE = Components.results.NS_ERROR_NO_INTERFACE;
+const NS_ERROR_NOT_IMPLEMENTED = Components.results.NS_ERROR_NOT_IMPLEMENTED;
+const NS_ERROR_NO_AGGREGATION = Components.results.NS_ERROR_NO_AGGREGATION;
+
+const PCMAP_SOURCETEXT = jsdIScript.PCMAP_SOURCETEXT;
+const PCMAP_PRETTYPRINT = jsdIScript.PCMAP_PRETTYPRINT;
+
+const COLLECT_PROFILE_DATA = jsdIDebuggerService.COLLECT_PROFILE_DATA;
+const DISABLE_OBJECT_TRACE = jsdIDebuggerService.DISABLE_OBJECT_TRACE;
+const HIDE_DISABLED_FRAMES = jsdIDebuggerService.HIDE_DISABLED_FRAMES;
+const DEBUG_WHEN_SET = jsdIDebuggerService.DEBUG_WHEN_SET;
+const MASK_TOP_FRAME_ONLY = jsdIDebuggerService.MASK_TOP_FRAME_ONLY;
+
+const TYPE_FUNCTION_CALL = jsdICallHook.TYPE_FUNCTION_CALL;
+const TYPE_FUNCTION_RETURN = jsdICallHook.TYPE_FUNCTION_RETURN;
+const TYPE_TOPLEVEL_START = jsdICallHook.TYPE_TOPLEVEL_START;
+const TYPE_TOPLEVEL_END = jsdICallHook.TYPE_TOPLEVEL_END;
+
+const RETURN_CONTINUE = jsdIExecutionHook.RETURN_CONTINUE;
+const RETURN_VALUE = jsdIExecutionHook.RETURN_RET_WITH_VAL;
+const RETURN_THROW_WITH_VAL = jsdIExecutionHook.RETURN_THROW_WITH_VAL;
+const RETURN_CONTINUE_THROW = jsdIExecutionHook.RETURN_CONTINUE_THROW;
+
+const NS_OS_TEMP_DIR = "TmpD";
+
+const STEP_OVER = 1;
+const STEP_INTO = 2;
+const STEP_OUT = 3;
+const STEP_SUSPEND = 4;
+
+const TYPE_ONE_SHOT = nsITimer.TYPE_ONE_SHOT;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+const BP_NORMAL = 1;
+const BP_MONITOR = 2;
+const BP_UNTIL = 4;
+const BP_ONRELOAD = 8; // XXXjjb: This is a mark for the UI to test
+const BP_ERROR = 16;
+const BP_TRACE = 32; // BP used to initiate traceCalls
+
+const LEVEL_TOP = 1;
+const LEVEL_EVAL = 2;
+const LEVEL_EVENT = 3;
+
+const COMPONENTS_FILTERS = [
+ new RegExp("^(file:/.*/)extensions/%7B[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}%7D/components/.*\\.js$"),
+ new RegExp("^(file:/.*/)extensions/firebug at software\\.joehewitt\\.com/modules/.*\\.js$"),
+ new RegExp("^(file:/.*/extensions/)\\w+ at mozilla\\.org/components/.*\\.js$"),
+ new RegExp("^(file:/.*/components/)ns[A-Z].*\\.js$"),
+ new RegExp("^(file:/.*/modules/)firebug-[^\\.]*\\.js$"),
+ new RegExp("^(file:/.*/Contents/MacOS/extensions/.*/components/).*\\.js$"),
+ new RegExp("^(file:/.*/modules/).*\\.jsm$"),
+];
+
+const reDBG = /DBG_(.*)/;
+const reXUL = /\.xul$|\.xml$/;
+
+Cu.import("resource://firebug/prefLoader.js");
+
+var getPref = PrefLoader.getPref;
+
+// ********************************************************************************************* //
+// Globals
+
+//https://developer.mozilla.org/en/Using_JavaScript_code_modules
+var EXPORTED_SYMBOLS = ["fbs"];
+
+var jsd, prefs;
+var observerService;
+
+var contextCount = 0;
+
+var urlFilters = [
+ 'chrome://',
+ 'XStringBundle',
+ 'x-jsd:ppbuffer?type=function', // internal script for pretty printing
+];
+
+var clients = [];
+var debuggers = [];
+var netDebuggers = [];
+var scriptListeners = [];
+
+var hookFrameCount = 0;
+
+var haltObject = null; // For reason unknown, fbs.haltDebugger will not work.
+
+var breakpointCount = 0;
+
+// These are an optimization I guess, marking whether we are using this feature anywhere.
+var disabledCount = 0;
+var monitorCount = 0;
+var conditionCount = 0;
+var runningUntil = null;
+
+var errorBreakpoints = [];
+
+var profileCount = 0;
+var profileStart;
+
+var enabledDebugger = false;
+var reportNextError = false;
+var errorInfo = null;
+
+var timer = Timer.createInstance(nsITimer);
+var waitingForTimer = false;
+
+Cu.import("resource://firebug/fbtrace.js");
+
+// ********************************************************************************************* //
+
+function frameId(frame, depth)
+{
+ if (frame)
+ return frame.script.tag+"@"+frame.line+"^"+depth;
+ else
+ return "noIdForNoframe";
+}
+
+// xxxHonza: duplicated in lib.js, there should be a shared module with this API.
+function extend(l,r)
+{
+ var newOb = {};
+ for (var n in l)
+ newOb[n] = l[n];
+ for (var n in r)
+ newOb[n] = r[n];
+ return newOb;
+}
+
+// ********************************************************************************************* //
+// jsdICallHook or jsdIExecutionHook.
+
+var jsdHandlers =
+{
+ hooks: [],
+
+ // Stage for activation when 'hook' is called
+ add: function(aHook)
+ {
+ if (!aHook)
+ ERROR("firebug-service.jsdHandlers.add: null hook");
+
+ this.hooks.push(aHook);
+
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs.Hooks.add; " + aHook.mode + ", active hooks: " +
+ this.hooks.length);
+ },
+
+ remove: function(aHook)
+ {
+ var i = this.hooks.indexOf(aHook);
+ if (i != -1)
+ {
+ this.hooks.splice(i, 1);
+
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs.Hooks.remove; " + aHook.mode + ", active hooks: " +
+ this.hooks.length);
+ }
+ else
+ {
+ ERROR("firebug-service.Hooks.unhook ERROR, no such hook " +
+ aHook.name, {aHook: aHook, Hooks: this});
+ }
+ },
+
+ // activate hooks
+ hook: function(frame)
+ {
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs.start hooks " + this.hooks.length + " hooks active " +
+ frameToString(frame), this);
+
+ for (var i = 0; i < this.hooks.length; i++)
+ {
+ var aHook = this.hooks[i];
+
+ aHook.hook(frame);
+
+ if ("onFunctionCall" in aHook || "onFunctionReturn" in aHook)
+ fbs.hookFunctions();
+
+ if ("onInterrupt" in aHook)
+ fbs.hookInterrupts(frame);
+ }
+ },
+
+ unhook: function(frame)
+ {
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs.stop hooks "+this.hooks.length+" hooks active", this);
+
+ this.checkForUnhookFunctions(frame);
+ this.checkForUnhookInterrupts(frame);
+ },
+
+ checkForUnhookFunctions: function(frame)
+ {
+ for (var i = 0; i < this.hooks.length; i++)
+ {
+ var aHook = this.hooks[i];
+
+ aHook.unhook(frame);
+
+ if ("onFunctionCall" in aHook || "onFunctionReturn" in aHook)
+ return;
+ }
+
+ fbs.unhookFunctions();
+ },
+
+ checkForUnhookInterrupts: function(frame)
+ {
+ for (var i = 0; i < this.hooks.length; i++)
+ {
+ var aHook = this.hooks[i];
+
+ if ("onInterrupt" in aHook)
+ return;
+ }
+
+ fbs.unhookInterrupts(); // none found
+ },
+
+ dispatch: function(methodName, frame, type, rv)
+ {
+ for (var i = 0; i < this.hooks.length; i++)
+ {
+ var aHook = this.hooks[i];
+ if (methodName in aHook)
+ {
+ if (FBTrace.DBG_FBS_STEP && FBTrace.DBG_DISPATCH)
+ FBTrace.sysout("fbs.jsdHandler.dispatch " + methodName +
+ " to " + aHook + " " + getCallFromType(type) + " frame: " +
+ frameToString(frame), this);
+
+ var rc = aHook[methodName].apply(aHook, [frame, type, rv]);
+ if (typeof(rc) != "undefined" || rc !== RETURN_CONTINUE)
+ return rc;
+ }
+ }
+
+ return RETURN_CONTINUE;
+ }
+};
+
+// ********************************************************************************************* //
+// Break on Next
+
+function BreakOnNextCall(debuggr, context)
+{
+ this.debuggr = debuggr;
+ this.context = context;
+}
+
+BreakOnNextCall.prototype =
+{
+ mode: "BON",
+
+ hook: function(frame)
+ {
+ },
+
+ unhook: function(frame)
+ {
+ },
+
+ // the frame will be running the calling script
+ hit: function(frame, type)
+ {
+ fbs.cancelBreakOnNextCall(this.debuggr, this.context);
+
+ var rv = {};
+ return fbs.routeBreakToDebuggr(frame, type, rv, this.debuggr);
+ },
+
+ onFunctionCall: function(frame, type)
+ {
+ if (!this.context || !this.context.sourceFileByTag)
+ return ERROR("onFunctionCall ERROR invalid context ");
+
+ var lucky = this.context.getSourceFileByTag(frame.script.tag);
+ if (!lucky) // then function running the frame is not in this context
+ {
+ // then we could be running an outer function from a new compilation unit
+ if (!frame.callingFrame)
+ {
+ var val = {};
+
+ // then the function could have just been added to the context
+ if (fbs.isTopLevelScript(frame, type, val))
+ lucky = this.context.getSourceFileByTag(frame.script.tag);
+ }
+ }
+
+ if (lucky) // then we hit in a function in our context
+ {
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs.breakOnNextTopFunction hits at "+getCallFromType(type)+" at "+
+ frame.script.fileName+" tag:"+(lucky?"LUCKY WINNER":frame.script.tag),
+ framesToString(frame));
+
+ return this.hit(frame, type);
+ }
+
+ // else maybe we hit on a event unrelated to our context
+ },
+};
+
+// Stack segments
+// When frame.callingFrame is null then we are starting a new stack segment
+// FrameId track call stack
+// segment0.fnc1 !callingFrame !this.callingFrameId
+// segment0.fnc2 this.callingFrameId == segment0.fnc1
+// ...
+// segment1.fnc44 !callingFrame this.callingFrameId == fnc2.segment0
+// segment1.fnc45
+//
+
+// ********************************************************************************************* //
+// Stepper: Step Out Implementation
+
+/**
+ * @class This object implements "step out" debugger feature. In other words run until
+ * the current function returns, then stop in the caller.
+ */
+function OutStepper(debuggr, context)
+{
+ this.debuggr = debuggr;
+ this.context = context;
+
+ if (!this.debuggr)
+ ERROR("firebug-service.OutStepper no debuggr");
+}
+
+OutStepper.prototype =
+/** @lends OutStepper */
+{
+ mode: "STEP_OUT",
+
+ getCallingFrameId: function(frame)
+ {
+ if (frame.callingFrame)
+ return frameId(frame.callingFrame, this.depth);
+
+ var debuggr = fbs.reFindDebugger(frame, this.debuggr);
+ if (debuggr && debuggr.breakContext)
+ return debuggr.breakContext.getName(); // TODO segments
+ },
+
+ hook: function(frame)
+ {
+ this.depth = 0;
+
+ if (frame)
+ {
+ this.startFrameId = frameId(frame, 0);
+ this.callingFrameId = this.getCallingFrameId(frame);
+
+ if (!this.callingFrameId)
+ ERROR("OutStepper.hook cannot find callingFrame ", this);
+
+ this.startFrameTag = frame.script.tag;
+ }
+ else
+ {
+ ERROR("OutStepper.hook no frame ");
+ }
+
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs." + this.mode+" hook with frame "+frameToString(frame)+
+ " with callingFrameId "+this.callingFrameId, this);
+
+ return true;
+ },
+
+ // the frame will be running the called script
+ onFunctionCall: function stepFunctionCall(frame, type)
+ {
+ var callingFrameId = this.getCallingFrameId(frame);
+
+ if (this.callingFrameId === callingFrameId) // then it is our caller
+ {
+ this.depth++;
+ this.callingFrameId = callingFrameId; // push new id for stepFunctionReturn
+
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs." + this.mode+" stepFunctionCall new depth "+this.depth+
+ " new callingFrameId "+this.callingFrameId);
+ }
+
+ // else someone else, ignore it
+ },
+
+ // the frame will be running the called script
+ onFunctionReturn: function stepFunctionReturn(frame, type)
+ {
+ var callingFrameId = this.getCallingFrameId(frame);
+ if (this.callingFrameId === callingFrameId) // then it is our caller
+ {
+ if (this.depth) // but we are not back to our caller
+ {
+ this.depth--;
+ this.callingFrameId = callingFrameId; // recursion
+ return;
+ }
+ else // then we are back to the frame we started on
+ {
+ if (frame.callingFrame)
+ return this.hit(frame.callingFrame, type);
+
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs.OutStepper.onFunctionReturn no calling frame " +
+ frameToString(frame) + ", " + getCallFromType(type), this);
+
+ jsdHandlers.unhook(frame); // we are done here
+ jsdHandlers.remove(this);
+ return;
+ }
+ }
+
+ // Then we are returning with out ever calling stepFunctionCall,
+ // but on a frame we care about.
+ if (!this.callingFrameId && callingFrameId)
+ {
+ // Then are returning from the frame we care about.
+ if (frame.script.tag === this.startFrameTag)
+ {
+ if (frame.callingFrame)
+ return this.hit(frame.callingFrame, type);
+ else
+ ERROR("Should be top level just exit", this);
+ }
+
+ ERROR("Returning from a frame we care about but not one we know " +
+ frameToString(frame), this);
+ }
+
+ // else it's is not a frame we care about
+ if (FBTrace.DBG_FBS_STEP)
+ {
+ FBTrace.sysout("fbs." + this.mode + ".onFunctionReturn callingFrameId " +
+ callingFrameId + " called frame " + frameToString(frame), this);
+ }
+ },
+
+ unhook: function(frame)
+ {
+ },
+
+ hit: function(frame, type, rv)
+ {
+ if (FBTrace.DBG_FBS_STEP)
+ {
+ FBTrace.sysout("fbs." + this.mode + " hit " + getCallFromType(type) + " at " +
+ frameToString(frame), this);
+ }
+
+ var debuggr = fbs.reFindDebugger(frame, this.debuggr);
+ if (debuggr)
+ {
+ jsdHandlers.unhook(frame);
+ jsdHandlers.remove(this);
+
+ rv = {};
+
+ return fbs.breakIntoDebugger(debuggr, frame, type);
+ }
+
+ return ERROR("Hit but debuggr did not match "+this.debuggr.debuggerName+" in frame "+
+ frameToString(frame), this);
+ },
+
+ toString: function()
+ {
+ if (!this.context.getName)
+ FBTrace.sysout("fbs.this.context.getName ", this.context);
+
+ return this.mode + " for "+this.context.getName();
+ },
+};
+
+// ********************************************************************************************* //
+// Stepper: Step Over Implementation
+
+/**
+ * @class This oject implements "step over". I's like {@link OutStepper}, but run a single
+ * line in this function.
+ */
+function LineStepper(debuggr, context)
+{
+ this.context = context;
+ this.debuggr = debuggr;
+}
+
+LineStepper.prototype = extend(OutStepper.prototype,
+/** @lends LineStepper */
+{
+ mode: "STEP_OVER",
+
+ hook: function hookLineStepper(frame)
+ {
+ OutStepper.prototype.hook.apply(this, arguments); // hook functions
+
+ this.lineFrameId = frameId(frame, this.depth);
+ this.stepFrameTag = frame.script.tag;
+
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs." + this.mode + ".hook " + frameToString(frame) +
+ " with lineFrameId " + this.lineFrameId, this);
+ },
+
+ unhook: function unhookLineStepper(frame)
+ {
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs." + this.mode + ".hook; unhook " + frameToString(frame));
+ },
+
+ // jsdIExecutionHook, onExecute
+ onInterrupt: function stepLine(frame, type, rv)
+ {
+ if (this.stepFrameTag !== frame.script.tag) // then we stepped into another function
+ {
+ // We'd have much bettter performance if we set a new OutStepper here then remove
+ // interrupt hook until it hits.
+ return RETURN_CONTINUE;
+ }
+
+ // Sometimes the same line will have multiple interrupts, so check
+ // a unique id for the line and don't break until it changes
+ var frameLineId = frameId(frame, this.depth);
+
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs." + this.mode + " interruptHook pc:" + frame.pc +
+ " frameLineId: " + frameLineId + " vs " + this.lineFrameId + " running " +
+ frame.script.tag + " of " + frame.script.fileName +
+ " at " + frame.line + "." + frame.pc, this);
+
+ if (frameLineId != this.lineFrameId)
+ return this.hit(frame, type, rv);
+ else
+ return RETURN_CONTINUE;
+ },
+
+ toString: function()
+ {
+ if (!this.context.getName)
+ FBTrace.sysout("fbs.this.context.getName ", this.context);
+
+ return this.mode + " for "+this.context.getName();
+ },
+});
+
+// ********************************************************************************************* //
+// Stepper: Step In Implementation
+
+/**
+ * @class This oject implements "step in". I's like {@link OutStepper}, but if the line
+ * calls a function, stop on its first line
+ */
+function IntoStepper(debuggr, context)
+{
+ this.context = context;
+ this.debuggr = debuggr;
+}
+
+IntoStepper.prototype = extend(LineStepper.prototype,
+/** @lends IntoStepper */
+{
+ mode: "STEP_INTO",
+
+ hook: function(frame)
+ {
+ LineStepper.prototype.hook.apply(this, arguments); // hook functions and interrupts
+ },
+
+ // the frame will be running the called script
+ onFunctionCall: function intoFunctionCall(frame, type)
+ {
+ var callingFrame = frame.callingFrame;
+ if (callingFrame)
+ {
+ // Skip functions running in the frame that is not in this context (issue 3077)
+ var lucky = this.context.getSourceFileByTag(frame.script.tag);
+ if (!lucky)
+ return;
+
+ // then we stepped into from our caller
+ if (this.stepFrameTag === callingFrame.script.tag)
+ return this.hit(frame, type);
+
+ // else someone else, ignore it
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs." + this.mode + ".intoFunctionCall no match " +
+ this.stepFrameTag + " vs " + callingFrame.script.tag, this);
+ }
+
+ // else this would be a top level call, do we want to check for
+ // another event from this context?
+ },
+});
+
+// ********************************************************************************************* //
+// Function Stepper/Tracer
+
+/**
+ * Tracer for learning about function stepping, not part of firebug
+ */
+function LogFunctionStepper()
+{
+ //xxxjjb: not defined this.initialize();
+}
+
+LogFunctionStepper.prototype =
+{
+ hook: function()
+ {
+ fbs.inDebuggerSetupStack = true;
+ },
+
+ stop: function()
+ {
+ delete fbs.stackDescription;
+ },
+
+ // the frame will be running the called script
+ onFunctionCall: function logFunctionCall(frame, type)
+ {
+ if (fbs.inDebuggerSetupStack) // then we are still in the debugger set up code
+ return;
+
+ if (!fbs.stackDescription)
+ fbs.stackDescription = { oldestTag: frame.script.tag, depth: 1, entries: [] };
+ else
+ fbs.stackDescription.depth++;
+
+ this.logFunction(frame, type);
+ },
+
+ // the frame will be running the called script
+ onFunctionReturn: function logFunctionReturn(frame, type)
+ {
+ if (fbs.inDebuggerSetupStack) // then we are still in the debugger set up code
+ {
+ if (!frame.callingFrame) // then done with setup
+ delete fbs.inDebuggerSetupStack;
+
+ return;
+ }
+
+ if (!fbs.stackDescription)
+ fbs.stackDescription = { oldestTag: "Return first!", depth: 0, entries: [] };
+ fbs.stackDescription.depth--;
+
+ this.logFunction(frame, type);
+
+ if (!frame.callingFrame)
+ {
+ if (FBTrace.DBG_FBS_STEP)
+ {
+ var diff = (fbs.stackDescription.oldestTag !== frame.script.tag);
+ FBTrace.sysout("fbs.Stack ends at depth "+fbs.stackDescription.depth +
+ (diff ? " NO Match on tag " : " tags match"), fbs.stackDescription.entries);
+ }
+
+ fbs.stackDescription.entries = [];
+ }
+
+ if (!fbs.stackDescription.depth)
+ delete fbs.stackDescription;
+ },
+
+ logFunction: function(frame, type)
+ {
+ var typeName = getCallFromType(type);
+ var actualFrames = countFrames(frame);
+ fbs.stackDescription.entries.push(""+fbs.stackDescription.depth+
+ ": "+typeName +
+ " (frameCount: "+actualFrames+") " +
+ " oldestTag "+fbs.stackDescription.oldestTag+
+ " running "+frame.script.tag+" of "+frame.script.fileName+" at "+
+ frame.line+"."+frame.pc);
+ },
+};
+
+// ********************************************************************************************* //
+// Firebug Service
+
+var fbs =
+{
+ initialize: function()
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.FirebugService Starting");
+
+ fbs = this;
+
+ this.wrappedJSObject = this; // XXXjjb remove this and the one in debugger
+ this.timeStamp = new Date(); /* explore */
+
+ Components.utils.import("resource://firebug/debuggerHalter.js");
+ fbs.debuggerHalter = debuggerHalter; // ref to a function in a file that passes the jsdIFilter
+
+ fbs.restoreBreakpoints();
+
+ this.onDebugRequests = 0; // the number of times we called onError but did not call onDebug
+
+
+ if (FBTrace.DBG_FBS_ERRORS)
+ this.osOut("FirebugService Starting, FBTrace should be up\n");
+
+ this.profiling = false;
+
+ prefs = PrefService.getService(nsIPrefBranch);
+ fbs.prefDomain = "extensions.firebug";
+ prefs.addObserver(fbs.prefDomain, fbs, false);
+
+ observerService = ObserverServiceFactory.getService(Ci.nsIObserverService);
+ observerService.addObserver(QuitApplicationGrantedObserver, "quit-application-granted", false);
+ observerService.addObserver(QuitApplicationRequestedObserver, "quit-application-requested", false);
+ observerService.addObserver(QuitApplicationObserver, "quit-application", false);
+
+ this.scriptsFilter = "all";
+ this.alwayFilterURLsStarting = ["chrome://chromebug", "x-jsd:ppbuffer"]; // TODO allow override
+ this.onEvalScriptCreated.kind = "eval";
+ this.onTopLevelScriptCreated.kind = "top-level";
+ this.onEventScriptCreated.kind = "event";
+ this.onXULScriptCreated.kind = "xul";
+ this.pendingXULScripts = [];
+
+ this.onXScriptCreatedByTag = {}; // fbs functions by script tag
+ this.nestedScriptStack = []; // scripts contained in leveledScript that have not been drained
+
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.FirebugService Initialized");
+ },
+
+ osOut: function(str)
+ {
+ if (!this.outChannel)
+ {
+ try
+ {
+ var appShellService = Components.classes["@mozilla.org/appshell/appShellService;1"].
+ getService(Components.interfaces.nsIAppShellService);
+ this.hiddenWindow = appShellService.hiddenDOMWindow;
+ this.outChannel = "hidden";
+ }
+ catch(exc)
+ {
+ consoleService = Cc["@mozilla.org/consoleservice;1"].getService(Ci.nsIConsoleService);
+ consoleService.logStringMessage("Using consoleService because " +
+ "nsIAppShellService.hiddenDOMWindow not available "+exc);
+
+ this.outChannel = "service";
+ }
+ }
+
+ if (this.outChannel === "hidden") // apparently can't call via JS function
+ this.hiddenWindow.dump(str);
+ else
+ consoleService.logStringMessage(str);
+ },
+
+ shutdown: function() // call disableDebugger first
+ {
+ timer = null;
+
+ try
+ {
+ prefs.removeObserver(fbs.prefDomain, fbs, false);
+ }
+ catch (exc)
+ {
+ FBTrace.sysout("fbs.prefs.removeObserver ERROR "+exc, exc);
+ }
+
+ try
+ {
+ observerService.removeObserver(QuitApplicationGrantedObserver, "quit-application-granted");
+ observerService.removeObserver(QuitApplicationRequestedObserver, "quit-application-requested");
+ observerService.removeObserver(QuitApplicationObserver, "quit-application");
+ }
+ catch (exc)
+ {
+ FBTrace.sysout("fbs.quit-application-observers removeObserver ERROR "+exc, exc);
+ }
+
+ if (!jsd)
+ return;
+
+ try
+ {
+ do
+ {
+ var depth = jsd.exitNestedEventLoop();
+ }
+ while(depth > 0);
+ }
+ catch (exc)
+ {
+ // Seems to be the normal path...
+ // FBTrace.sysout("fbs.FirebugService, attempt to exitNestedEventLoop ERROR "+exc);
+ }
+
+ // make sure to unregister all the hooks
+ var hookNames = ["error", "script", "breakpoint", "debugger", "debug", "interrupt",
+ "throw", "topLevel", "function", "debug"];
+ for (var i=0; i<hookNames.length; i++)
+ {
+ var hook = hookNames[i];
+ try
+ {
+ jsd[hook + "Hook"] = null;
+ }
+ catch (exc)
+ {
+ FBTrace.sysout("fbs.quit-application-observers removeObserver ERROR "+exc, exc);
+ }
+ }
+ jsd = null;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // nsISupports
+
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(nsISupports))
+ throw NS_ERROR_NO_INTERFACE;
+
+ return this;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // nsIObserver
+
+ observe: function(subject, topic, data)
+ {
+ if(topic != "nsPref:changed") return;
+ fbs.obeyPrefs();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ registerClient: function(client) // clients are essentially XUL windows
+ {
+ if (!client)
+ throw new Error("firebug-service cannot register client: "+client);
+
+ clients.push(client);
+ return clients.length;
+ },
+
+ unregisterClient: function(client)
+ {
+ for (var i = 0; i < clients.length; ++i)
+ {
+ if (clients[i] == client)
+ {
+ clients.splice(i, 1);
+ break;
+ }
+ }
+ },
+
+ // first one in will be last one called. Returns state enabledDebugger
+ registerDebugger: function(debuggrWrapper)
+ {
+ var debuggr = debuggrWrapper.wrappedJSObject;
+
+ if (debuggr)
+ {
+ var anyDebuggers = (debuggers.length === 1);
+
+ var i = debuggers.indexOf(debuggr);
+ if (i === -1)
+ {
+ debuggers.push(debuggr);
+ if (!anyDebuggers)
+ this.enableDebugger();
+ }
+
+ if (FBTrace.DBG_FBS_FINDDEBUGGER || FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("fbs.registerDebugger have "+debuggers.length+
+ " after reg debuggr.debuggerName: "+debuggr.debuggerName+" we are "+
+ (enabledDebugger?"enabled":"not enabled")+" " + "On:"+(jsd?jsd.isOn:"no jsd")+
+ " jsd.pauseDepth:"+(jsd?jsd.pauseDepth:"off"));
+ }
+ else
+ {
+ var err = new Error("firebug-service debuggers must have wrappedJSObject ");
+ err.debuggrWrapper = debuggrWrapper;
+ throw err;
+ }
+
+ try
+ {
+ if (debuggr.suspendActivity)
+ netDebuggers.push(debuggr);
+ }
+ catch(exc)
+ {
+ }
+
+ try
+ {
+ if (debuggr.onScriptCreated) // TODO xxxjjb: I don't know who uses this, remove it?
+ scriptListeners.push(debuggr);
+ }
+ catch(exc)
+ {
+ }
+
+ return debuggers.length; // 1.3.1 return to allow Debugger to check progress
+ },
+
+ unregisterDebugger: function(debuggrWrapper)
+ {
+ var debuggr = debuggrWrapper.wrappedJSObject;
+
+ for (var i = 0; i < debuggers.length; ++i)
+ {
+ if (debuggers[i] == debuggr)
+ {
+ debuggers.splice(i, 1);
+ break;
+ }
+ }
+
+ for (var i = 0; i < netDebuggers.length; ++i)
+ {
+ if (netDebuggers[i] == debuggr)
+ {
+ netDebuggers.splice(i, 1);
+ break;
+ }
+ }
+
+ for (var i = 0; i < scriptListeners.length; ++i)
+ {
+ if (scriptListeners[i] == debuggr)
+ {
+ scriptListeners.splice(i, 1);
+ break;
+ }
+ }
+
+ if (debuggers.length == 0)
+ this.disableDebugger();
+
+ if (FBTrace.DBG_FBS_FINDDEBUGGER || FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("fbs.unregisterDebugger have "+debuggers.length+
+ " after unreg debuggr.debuggerName: "+debuggr.debuggerName+" we are "+
+ (enabledDebugger?"enabled":"not enabled")+" jsd.isOn:"+(jsd?jsd.isOn:"no jsd"));
+
+ return debuggers.length;
+ },
+
+ lockDebugger: function()
+ {
+ if (this.locked)
+ return;
+
+ this.locked = true;
+
+ dispatch(debuggers, "onLock", [true]);
+ },
+
+ unlockDebugger: function()
+ {
+ if (!this.locked)
+ return;
+
+ this.locked = false;
+
+ dispatch(debuggers, "onLock", [false]);
+ },
+
+ getDebuggerByName: function(name)
+ {
+ if (!name)
+ return;
+
+ for(var i = 0; i < debuggers.length; i++)
+ if (debuggers[i].debuggerName === name)
+ return debuggers[i];
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ forceGarbageCollection: function()
+ {
+ jsd.GC(); // Force the engine to perform garbage collection.
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ enterNestedEventLoop: function(callback)
+ {
+ try
+ {
+ dispatch(netDebuggers, "suspendActivity");
+ this.activitySuspended = true;
+
+ fbs.nestedEventLoopDepth = jsd.enterNestedEventLoop(
+ {
+ onNest: function()
+ {
+ dispatch(netDebuggers, "resumeActivity");
+ callback.onNest();
+ }
+ });
+ }
+ catch(exc)
+ {
+ FBTrace.sysout("fbs.enterNestedEventLoop ERROR "+exc, exc);
+ }
+ finally
+ {
+ dispatch(netDebuggers, "resumeActivity");
+ this.activitySuspended = false;
+ }
+
+ return fbs.nestedEventLoopDepth;
+ },
+
+ exitNestedEventLoop: function()
+ {
+ try
+ {
+ dispatch(netDebuggers, "suspendActivity");
+ return jsd.exitNestedEventLoop();
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs: jsd.exitNestedEventLoop ERROR " + exc, exc);
+ }
+ },
+
+ /**
+ * We are running JS code for Firebug, but we want to break into the debugger with
+ * a stack frame.
+ *
+ * @param debuggr Debugger object asking for break
+ * @param fnOfFrame, function(frame) to run on break
+ */
+ halt: function(debuggr, fnOfFrame)
+ {
+ if (!debuggr || !fnOfFrame)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.halt call ERROR bad arguments", arguments);
+
+ return null;
+ }
+
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout('fbs.halt jsd.isOn:'+jsd.isOn+' jsd.pauseDepth:'+jsd.pauseDepth+
+ " fbs.isChromeBlocked "+fbs.isChromeBlocked+" jsd.debuggerHook: "+
+ jsd.debuggerHook, jsd.debuggerHook);
+
+ // store for onDebugger
+ haltObject = {haltDebugger: debuggr, haltCallBack: fnOfFrame};
+
+ // call onDebugger via hook
+ fbs.debuggerHalter();
+ return fbs.haltReturnValue;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Break on Next
+
+ // deprecated API
+ // xxxjjb: BON should be entirely implemented by breakOnNextCall object, right?
+ // xxxhonza: Debugger.suspend should be removed and replaced by breakOnNextCall
+
+ suspend: function(debuggr, context)
+ {
+ fbs.breakOnNextCall(debuggr, context);
+ },
+
+ breakOnNextCall: function(debuggr, context)
+ {
+ dispatch(debuggers, "onBreakingNext", [debuggr, context]);
+
+ if (context.breakOnNextHook)
+ ERROR("firebug-service.breakOnNextCall already active ", context);
+
+ context.breakOnNextHook = new BreakOnNextCall(debuggr, context);
+
+ jsdHandlers.add(context.breakOnNextHook);
+ jsdHandlers.hook(); // no frame arg
+ },
+
+ cancelBreakOnNextCall: function(debuggr, context)
+ {
+ jsdHandlers.unhook(/* no frame argument */);
+ jsdHandlers.remove(context.breakOnNextHook);
+ delete context.breakOnNextHook;
+ },
+
+ runUntil: function(sourceFile, lineNo, startFrame, debuggr)
+ {
+ // TODO per context
+ runningUntil = this.addBreakpoint(BP_UNTIL, sourceFile, lineNo, null, debuggr);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ setBreakpoint: function(sourceFile, lineNo, props, debuggr)
+ {
+ var bp = this.addBreakpoint(BP_NORMAL, sourceFile, lineNo, props, debuggr);
+ if (bp)
+ {
+ dispatch(debuggers, "onToggleBreakpoint", [sourceFile.href, lineNo, true, bp]);
+ fbs.saveBreakpoints(sourceFile.href); // after every call to onToggleBreakpoint
+ return true;
+ }
+ return false;
+ },
+
+ clearBreakpoint: function(url, lineNo)
+ {
+ var bp = this.removeBreakpoint(BP_NORMAL, url, lineNo);
+ if (bp)
+ {
+ dispatch(debuggers, "onToggleBreakpoint", [url, lineNo, false, bp]);
+ fbs.saveBreakpoints(url);
+ }
+ return bp;
+ },
+
+ enableBreakpoint: function(url, lineNo)
+ {
+ var bp = this.findBreakpoint(url, lineNo);
+ if (bp && bp.type & BP_NORMAL)
+ {
+ bp.disabled &= ~BP_NORMAL;
+ dispatch(debuggers, "onToggleBreakpoint", [url, lineNo, true, bp]);
+ fbs.saveBreakpoints(url);
+ --disabledCount;
+ }
+ else
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.enableBreakpoint no find for "+lineNo+"@"+url);
+ }
+ },
+
+ disableBreakpoint: function(url, lineNo)
+ {
+ var bp = this.findBreakpoint(url, lineNo);
+ if (bp && bp.type & BP_NORMAL)
+ {
+ bp.disabled |= BP_NORMAL;
+ ++disabledCount;
+ dispatch(debuggers, "onToggleBreakpoint", [url, lineNo, true, bp]);
+ fbs.saveBreakpoints(url);
+ }
+ else
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.disableBreakpoint no find for "+lineNo+"@"+url);
+ }
+ },
+
+ isBreakpointDisabled: function(url, lineNo)
+ {
+ var bp = this.findBreakpoint(url, lineNo);
+ if (bp && bp.type & BP_NORMAL)
+ return bp.disabled & BP_NORMAL;
+ else
+ return false;
+ },
+
+ setBreakpointCondition: function(sourceFile, lineNo, condition, debuggr)
+ {
+ var bp = this.findBreakpoint(sourceFile.href, lineNo);
+ if (!bp)
+ bp = this.addBreakpoint(BP_NORMAL, sourceFile, lineNo, null, debuggr);
+
+ if (!bp)
+ return;
+
+ if (bp.hitCount <= 0 )
+ {
+ if (bp.condition && !condition)
+ --conditionCount;
+ else if (condition && !bp.condition)
+ ++conditionCount;
+ }
+
+ bp.condition = condition;
+ delete bp.transformedCondition;
+
+ dispatch(debuggers, "onToggleBreakpoint", [sourceFile.href, lineNo, true, bp]);
+
+ fbs.saveBreakpoints(sourceFile.href);
+ return bp;
+ },
+
+ getBreakpointCondition: function(url, lineNo)
+ {
+ var bp = this.findBreakpoint(url, lineNo);
+ return bp ? bp.condition : "";
+ },
+
+ clearAllBreakpoints: function(sourceFiles)
+ {
+ for (var i=0; i<sourceFiles.length; ++i)
+ {
+ var url = sourceFiles[i].href;
+ if (!url)
+ continue;
+
+ var urlBreakpointsTemp = fbs.getBreakpoints(url);
+
+ if (FBTrace.DBG_FBS_BP)
+ {
+ FBTrace.sysout("fbs.clearAllBreakpoints " + url + " urlBreakpoints: " +
+ (urlBreakpointsTemp ? urlBreakpointsTemp.length : "null"));
+ }
+
+ if (!urlBreakpointsTemp)
+ continue;
+
+ // Clone before iteration the array is modified within the loop.
+ var urlBreakpoints = [];
+ urlBreakpoints.push.apply(urlBreakpoints, urlBreakpointsTemp);
+
+ for (var ibp=0; ibp<urlBreakpoints.length; ibp++)
+ {
+ var bp = urlBreakpoints[ibp];
+ this.clearBreakpoint(url, bp.lineNo);
+ }
+ }
+ },
+
+ // url is sourceFile.href, not jsd script.fileName
+ enumerateBreakpoints: function(url, cb)
+ {
+ if (url)
+ {
+ var urlBreakpointsTemp = fbs.getBreakpoints(url);
+ if (urlBreakpointsTemp)
+ {
+ // Clone before iteration (the array can be modified in the callback).
+ var urlBreakpoints = [];
+ urlBreakpoints.push.apply(urlBreakpoints, urlBreakpointsTemp);
+
+ for (var i = 0; i < urlBreakpoints.length; ++i)
+ {
+ var bp = urlBreakpoints[i];
+ if (bp.type & BP_NORMAL && !(bp.type & BP_ERROR) )
+ {
+ if (bp.scriptsWithBreakpoint && bp.scriptsWithBreakpoint.length > 0)
+ {
+ var rc = cb.call.apply(bp, [url, bp.lineNo, bp, bp.scriptsWithBreakpoint]);
+ if (rc)
+ return [bp];
+ }
+ else
+ {
+ var rc = cb.call.apply(bp, [url, bp.lineNo, bp]);
+ if (rc)
+ return [bp];
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ var bps = [];
+ var urls = fbs.getBreakpointURLs();
+ for (var i = 0; i < urls.length; i++)
+ bps.push(this.enumerateBreakpoints(urls[i], cb));
+
+ return bps;
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // error breakpoints are a way of selecting breakpoint from the Console
+
+ setErrorBreakpoint: function(sourceFile, lineNo, debuggr)
+ {
+ var url = sourceFile.href;
+ var index = this.findErrorBreakpoint(url, lineNo);
+ if (index == -1)
+ {
+ try
+ {
+ var bp = this.addBreakpoint(BP_NORMAL | BP_ERROR, sourceFile, lineNo, null, debuggr);
+ if (bp)
+ {
+ errorBreakpoints.push({href: url, lineNo: lineNo, type: BP_ERROR });
+ dispatch(debuggers, "onToggleErrorBreakpoint", [url, lineNo, true, debuggr]);
+ fbs.saveBreakpoints(sourceFile.href); // after every call to onToggleBreakpoint
+ }
+ }
+ catch(exc)
+ {
+ FBTrace.sysout("fbs.setErrorBreakpoint ERROR "+exc, exc);
+ }
+ }
+ },
+
+ clearErrorBreakpoint: function(url, lineNo, debuggr)
+ {
+ var index = this.findErrorBreakpoint(url, lineNo);
+ if (index != -1)
+ {
+ this.removeBreakpoint(BP_NORMAL | BP_ERROR, url, lineNo);
+
+ errorBreakpoints.splice(index, 1);
+ dispatch(debuggers, "onToggleErrorBreakpoint", [url, lineNo, false, debuggr]);
+
+ // after every call to onToggleBreakpoint
+ fbs.saveBreakpoints(url);
+ }
+ },
+
+ clearErrorBreakpoints: function(sourceFiles, debuggr)
+ {
+ for (var i=0; i<sourceFiles.length; ++i)
+ {
+ var url = sourceFiles[i].href;
+ if (!url)
+ continue;
+
+ fbs.enumerateErrorBreakpoints(url,
+ {
+ call: function(url, lineNo)
+ {
+ fbs.clearErrorBreakpoint(url, lineNo, debuggr);
+ }
+ });
+ }
+ },
+
+ hasErrorBreakpoint: function(url, lineNo)
+ {
+ return this.findErrorBreakpoint(url, lineNo) != -1;
+ },
+
+ enumerateErrorBreakpoints: function(url, cb)
+ {
+ // Clone breakpoints array before iteration. The callback could modify it.
+ var copyBreakpoints = [];
+ copyBreakpoints.push.apply(copyBreakpoints, errorBreakpoints);
+
+ if (url)
+ {
+ for (var i=0; i<copyBreakpoints.length; ++i)
+ {
+ var bp = copyBreakpoints[i];
+ if (bp.href == url)
+ cb.call(bp.href, bp.lineNo, bp);
+ }
+ }
+ else
+ {
+ for (var i=0; i<copyBreakpoints.length; ++i)
+ {
+ var bp = copyBreakpoints[i];
+ cb.call(bp.href, bp.lineNo, bp);
+ }
+ }
+ },
+
+ findErrorBreakpoint: function(url, lineNo)
+ {
+ for (var i = 0; i < errorBreakpoints.length; ++i)
+ {
+ var bp = errorBreakpoints[i];
+ if (bp.lineNo === lineNo && bp.href == url)
+ return i;
+ }
+
+ return -1;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // JSD Handlers
+
+ addHandler: function(handler)
+ {
+ jsdHandlers.add(handler);
+ jsdHandlers.hook();
+ },
+
+ removeHandler: function(handler)
+ {
+ // First remove the hook and then call unhook. The 'unhook' function
+ // checks for registered handlers and removes various JSD hooks only, if there
+ // are no corresponding handlers.
+ jsdHandlers.remove(handler);
+ jsdHandlers.unhook();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ traceAll: function(urls, debuggr)
+ {
+ this.hookCalls(debuggr.onFunctionCall, false); // call on all passed urls
+ },
+
+ untraceAll: function(debuggr)
+ {
+ this.unhookFunctions(); // undo hookCalls()
+ },
+
+ traceCalls: function(sourceFile, lineNo, debuggr)
+ {
+ // set a breakpoint on the starting point
+ var bp = this.monitor(sourceFile, lineNo, debuggr);
+ bp.type |= BP_TRACE;
+
+ // when we hit the bp in onBreakPoint we being tracing.
+ },
+
+ untraceCalls: function(sourceFile, lineNo, debuggr)
+ {
+ var bp = lineNo != -1 ? this.findBreakpoint(url, lineNo) : null;
+ if (bp)
+ {
+ bp.type &= ~BP_TRACE;
+ this.unmonitor(sourceFile.href, lineNo);
+ }
+ },
+
+ monitor: function(sourceFile, lineNo, debuggr)
+ {
+ if (lineNo == -1)
+ return null;
+
+ var bp = this.addBreakpoint(BP_MONITOR, sourceFile, lineNo, null, debuggr);
+ if (bp)
+ {
+ ++monitorCount;
+ dispatch(debuggers, "onToggleMonitor", [sourceFile.href, lineNo, true]);
+ }
+
+ return bp;
+ },
+
+ unmonitor: function(href, lineNo)
+ {
+ if (lineNo != -1 && this.removeBreakpoint(BP_MONITOR, href, lineNo))
+ {
+ --monitorCount;
+ dispatch(debuggers, "onToggleMonitor", [ href, lineNo, false]);
+ }
+ },
+
+ isMonitored: function(url, lineNo)
+ {
+ var bp = lineNo != -1 ? this.findBreakpoint(url, lineNo) : null;
+ return bp && bp.type & BP_MONITOR;
+ },
+
+ enumerateMonitors: function(url, cb)
+ {
+ if (url)
+ {
+ var urlBreakpoints = fbs.getBreakpoints(url);
+ if (urlBreakpoints)
+ {
+ for (var i = 0; i < urlBreakpoints.length; ++i)
+ {
+ var bp = urlBreakpoints[i];
+ if (bp.type & BP_MONITOR)
+ cb.call(url, bp.lineNo, bp);
+ }
+ }
+ }
+ else
+ {
+ for (var url in breakpoints)
+ this.enumerateBreakpoints(url, cb);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ enumerateScripts: function(length)
+ {
+ var scripts = [];
+ jsd.enumerateScripts( {
+ enumerateScript: function(script) {
+ var fileName = script.fileName;
+ if ( !isFilteredURL(fileName) ) {
+ scripts.push(script);
+ }
+ }
+ });
+
+ length.value = scripts.length;
+ return scripts;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ startProfiling: function()
+ {
+ if (!this.profiling)
+ {
+ this.profiling = true;
+ profileStart = new Date();
+
+ jsd.flags |= COLLECT_PROFILE_DATA;
+ }
+
+ ++profileCount;
+ },
+
+ stopProfiling: function()
+ {
+ if (profileCount == 0)
+ return -1;
+ if (--profileCount == 0)
+ {
+ jsd.flags &= ~COLLECT_PROFILE_DATA;
+
+ var t = profileStart.getTime();
+
+ this.profiling = false;
+ profileStart = null;
+
+ return new Date().getTime() - t;
+ }
+ else
+ return -1;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ enableDebugger: function()
+ {
+ if (waitingForTimer)
+ {
+ timer.cancel();
+ waitingForTimer = false;
+ }
+
+ if (enabledDebugger)
+ return;
+
+ enabledDebugger = true;
+
+ this.obeyPrefs();
+
+ if (!jsd)
+ {
+ jsd = DebuggerService.getService(jsdIDebuggerService);
+
+ if ( FBTrace.DBG_FBS_ERRORS )
+ FBTrace.sysout("fbs.enableDebugger gets jsd service, isOn:" + jsd.isOn +
+ " initAtStartup:" + jsd.initAtStartup + " now have " + debuggers.length +
+ " debuggers in " + clients.length + " clients");
+
+ // This property has been removed from Fx40
+ if (jsd.initAtStartup)
+ jsd.initAtStartup = false;
+ }
+
+ if (jsd.asyncOn) // then FF 4.0+
+ {
+ if (!jsd.isOn)
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ {
+ var startAsyncOn = new Date().getTime();
+ FBTrace.sysout("fbs.activation begin jsd.asyncOn " + startAsyncOn);
+ }
+
+ jsd.asyncOn( // turn on jsd for the next event
+ {
+ onDebuggerActivated: function doDebuggerActivated()
+ {
+ // now we are in the next event and jsd is on.
+ if (FBTrace.DBG_ACTIVATION)
+ {
+ var nowAsyncOn = new Date().getTime();
+ FBTrace.sysout("fbs.activation now we are in the " +
+ "next event and JSD is ON " + nowAsyncOn + " delta: " +
+ (nowAsyncOn - startAsyncOn) + "ms");
+ }
+
+ fbs.onDebuggerActivated();
+ fbs.onJSDebuggingActive();
+ }
+ });
+ }
+ else
+ {
+ fbs.onJSDebuggingActive();
+ }
+ }
+ else // FF 3.6-
+ {
+ if (!jsd.isOn)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.Firefox 3.6 or earlier");
+
+ jsd.on(); // this should be the only call to jsd.on().
+ fbs.onDebuggerActivated();
+ }
+ fbs.onJSDebuggingActive();
+ }
+ },
+
+ onDebuggerActivated: function()
+ {
+ jsd.flags |= DISABLE_OBJECT_TRACE;
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("fbs.onDebuggerActivated");
+
+ if (jsd.pauseDepth && FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.enableDebugger found non-zero jsd.pauseDepth !! " +
+ jsd.pauseDepth);
+ },
+
+ onJSDebuggingActive: function()
+ {
+ if (!this.filterChrome)
+ this.createChromeBlockingFilters();
+
+ var active = fbs.isJSDActive();
+
+ dispatch(clients, "onJSDActivate", [active, "fbs enableDebugger"]);
+ this.hookScripts();
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("fbs.enableDebugger with active " + active);
+ },
+
+ obeyPrefs: function()
+ {
+ fbs.showStackTrace = getPref("showStackTrace");
+ fbs.breakOnErrors = getPref("breakOnErrors");
+ fbs.trackThrowCatch = getPref("trackThrowCatch");
+
+ var pref = fbs.scriptsFilter;
+ fbs.scriptsFilter = getPref("scriptsFilter");
+ var mustReset = (pref !== fbs.scriptsFilter);
+
+ if (FBTrace.DBG_OPTIONS)
+ FBTrace.sysout("fbs.obeyPrefs mustReset = " + mustReset + " pref: " + pref +
+ " fbs.scriptsFilter: " + fbs.scriptsFilter, fbs);
+
+ pref = fbs.filterSystemURLs;
+
+ // may not be exposed to users
+ fbs.filterSystemURLs = getPref("filterSystemURLs");
+ mustReset = mustReset || (pref !== fbs.filterSystemURLs);
+
+ if (FBTrace.DBG_OPTIONS)
+ FBTrace.sysout("fbs.obeyPrefs mustReset = " + mustReset + " pref: " + pref +
+ " fbs.filterSystemURLs: " + fbs.filterSystemURLs);
+
+ if (mustReset && jsd && jsd.scriptHook)
+ {
+ fbs.unhookScripts();
+ fbs.hookScripts();
+ }
+
+ if (FBTrace.DBG_FBS_FUNCTION)
+ {
+ fbs.loggingFunctionCalls = new LogFunctionStepper();
+ jsdHandlers.add(fbs.loggingFunctionCalls);
+ jsdHandlers.hook(); // no frame argument
+ }
+ else if (fbs.loggingFunctionCalls)
+ {
+ jsdHandlers.unhook("no frame argument");
+ fbs.jsdHandler.remove(fbs.loggingFunctionCalls);
+ delete fbs.loggingFunctionCalls;
+ }
+
+ FirebugPrefsObserver.syncFilter();
+
+ try
+ {
+ if (FBTrace.DBG_OPTIONS)
+ FBTrace.sysout("fbs.obeyPrefs showStackTrace:"+fbs.showStackTrace+
+ " breakOnErrors:"+fbs.breakOnErrors+" trackThrowCatch:"+fbs.trackThrowCatch+
+ " scriptFilter:"+fbs.scriptsFilter+" filterSystemURLs:"+fbs.filterSystemURLs);
+ }
+ catch (exc)
+ {
+ FBTrace.sysout("fbs.constructor getBoolPrefs FAILED with exception=", exc);
+ }
+ },
+
+ disableDebugger: function()
+ {
+ if (!enabledDebugger)
+ return;
+
+ if (!timer) // then we probably shutdown
+ return;
+
+ enabledDebugger = false;
+
+ if (jsd.isOn)
+ {
+ jsd.pause();
+ fbs.unhookScripts();
+
+ while (jsd.pauseDepth > 0) // unwind completely
+ jsd.unPause();
+
+ jsd.off();
+ }
+
+ var active = fbs.isJSDActive();
+ dispatch(clients, "onJSDDeactivate", [active, "fbs disableDebugger"]);
+
+ fbs.onXScriptCreatedByTag = {}; // clear any uncleared top level scripts
+
+ if (FBTrace.DBG_FBS_FINDDEBUGGER || FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("fbs.disableDebugger jsd.isOn:"+jsd.isOn+" for enabledDebugger: "+
+ enabledDebugger);
+ },
+
+ // must support multiple calls
+ pause: function(debuggerName)
+ {
+ if (!enabledDebugger || !jsd || !jsd.isOn)
+ return "not enabled";
+
+ var rejection = [];
+ dispatch(clients, "onPauseJSDRequested", [rejection, debuggerName]);
+
+ // Number of rejections:
+ // 0 - then everyone wants to pause
+ // 1 - then everyone wants to pause (including the current active tab)
+ if (rejection.length < 1)
+ {
+ if (jsd.pauseDepth == 0) // don't pause if we are paused.
+ {
+ jsd.pause();
+ fbs.unhookScripts();
+ }
+
+ var active = fbs.isJSDActive();
+ dispatch(clients, "onJSDDeactivate", [active, "pause depth "+jsd.pauseDepth]);
+ }
+ else // we don't want to pause
+ {
+ fbs.unPause(true);
+ }
+
+ if (FBTrace.DBG_FBS_FINDDEBUGGER || FBTrace.DBG_ACTIVATION)
+ {
+ FBTrace.sysout("fbs.pause depth "+(jsd.isOn?jsd.pauseDepth:"jsd OFF")+" rejection "+
+ rejection.length+" from "+clients.length+" clients ", rejection);
+
+ // The next line gives NS_ERROR_NOT_AVAILABLE
+ // FBTrace.sysout("fbs.pause depth "+(jsd.isOn?jsd.pauseDepth:"jsd OFF")+
+ // " rejection "+rejection.length+" from clients "+clients, rejection);
+ }
+ return jsd.pauseDepth;
+ },
+
+ unPause: function(force)
+ {
+ if (!jsd)
+ return;
+
+ if (jsd.pauseDepth > 0 || force)
+ {
+ if (FBTrace.DBG_ACTIVATION && (!jsd.isOn || jsd.pauseDepth == 0) )
+ FBTrace.sysout("fbs.unpause while jsd.isOn is "+jsd.isOn+
+ " and hooked scripts pauseDepth:"+jsd.pauseDepth);
+
+ fbs.hookScripts();
+
+ if(jsd.pauseDepth)
+ var depth = jsd.unPause();
+
+ var active = fbs.isJSDActive();
+
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("fbs.unPause hooked scripts and unPaused, active:" + active +
+ " depth " + depth + " jsd.isOn: " + jsd.isOn);
+
+ dispatch(clients, "onJSDActivate", [active, "unpause depth"+jsd.pauseDepth]);
+ }
+ else // we were not paused.
+ {
+ if (FBTrace.DBG_ACTIVATION)
+ {
+ var noAction = "("+jsd.pauseDepth+" || "+ !jsd.isOn+")";
+ FBTrace.sysout("fbs.unPause no action: (jsd.pauseDepth || !jsd.isOn) = " +
+ noAction);
+ }
+ }
+
+ return jsd.pauseDepth;
+ },
+
+ isJSDActive: function()
+ {
+ return (jsd && jsd.isOn && (jsd.pauseDepth === 0) );
+ },
+
+ // TODO delete once Chromebug works on BTI
+ // re-transmit the message (string) with args [objs] to XUL windows.
+ broadcast: function(message, args)
+ {
+ dispatch(clients, message, args);
+ if (FBTrace.DBG_ACTIVATION)
+ FBTrace.sysout("fbs.broadcast "+message+" to "+clients.length+" clients", clients);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ normalizeURL: function(url)
+ {
+ // For some reason, JSD reports file URLs like "file:/" instead of "file:///", so they
+ // don't match up with the URLs we get back from the DOM
+ return url ? url.replace(/file:\/([^\/])/, "file:///$1") : "";
+ },
+
+ denormalizeURL: function(url)
+ {
+ // This should not be called.
+ return url ? url.replace(/file:\/\/\//, "file:/") : "";
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // jsd Hooks
+
+ // When engine encounters debugger keyword (only)
+ onDebugger: function(frame, type, rv)
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.onDebugger with haltDebugger="+
+ (haltObject?haltObject.haltDebugger:"null")+" in "+frame.script.fileName,
+ frame.script);
+
+ try
+ {
+ if (FBTrace.DBG_FBS_SRCUNITS && fbs.isTopLevelScript(frame, type, rv))
+ FBTrace.sysout("fbs.onDebugger found topLevelScript "+ frame.script.tag);
+
+ if (FBTrace.DBG_FBS_SRCUNITS && fbs.isNestedScript(frame, type, rv))
+ FBTrace.sysout("fbs.onDebugger found nestedScript "+ frame.script.tag);
+
+ if (haltObject)
+ {
+ var peelOurselvesOff = frame;
+ if (peelOurselvesOff.script.fileName.indexOf("debuggerHalter.js") > 0)
+ peelOurselvesOff = frame.callingFrame; // remove debuggerHalter()
+
+ while (peelOurselvesOff && (peelOurselvesOff.script.fileName.indexOf("firebug-service.js") > 0 ))
+ peelOurselvesOff = peelOurselvesOff.callingFrame;
+
+ while (peelOurselvesOff && (peelOurselvesOff.script.fileName.indexOf("/debugger.js") > 0 ))
+ peelOurselvesOff = peelOurselvesOff.callingFrame;
+
+ if (peelOurselvesOff)
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.onDebugger, " +
+ (haltObject.haltCallBack ? "with" : "without") +
+ " callback, adjusted newest frame: " + peelOurselvesOff.line +
+ "@" + peelOurselvesOff.script.fileName + " frames: ",
+ framesToString(frame));
+
+ var debuggr = haltObject.haltDebugger;
+ var callback = haltObject.haltCallBack;
+ fbs.haltReturnValue = callback.apply(debuggr,[peelOurselvesOff]);
+ }
+ else
+ {
+ FBTrace.sysout("fbs.halt ERROR "+framesToString(frame));
+ fbs.haltReturnValue = "firebug-service.halt ERROR, no stack frames left ";
+ }
+
+ return RETURN_CONTINUE;
+ }
+ else
+ {
+ var peelOurselvesOff = frame;
+ if (peelOurselvesOff.script.fileName.indexOf("consoleExposed.js") > 0)
+ peelOurselvesOff = frame.callingFrame;
+
+ var bp = this.findBreakpointByScript(peelOurselvesOff.script, peelOurselvesOff.pc);
+
+ // then breakpoints override debugger statements (to allow conditional
+ // debugger statements);
+ if (bp)
+ return this.onBreakpoint(peelOurselvesOff, type, rv);
+ else
+ return fbs.routeBreakToDebuggr(peelOurselvesOff, type, rv);
+ }
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.onDebugger failed: "+exc,exc);
+
+ ERROR("onDebugger failed: "+exc, exc);
+ return RETURN_CONTINUE;
+ }
+ finally
+ {
+ haltObject = null;
+ }
+ },
+
+ // when the onError handler returns false
+ onDebug: function(frame, type, rv)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ {
+ fbs.onDebugRequests--;
+ FBTrace.sysout("fbs.onDebug (" + fbs.onDebugRequests + ") fileName=" +
+ frame.script.fileName + " reportNextError=" + reportNextError +
+ " breakOnErrors:" + this.breakOnErrors + " fbs.breakOnDebugCall: " +
+ fbs.breakOnDebugCall);
+ }
+
+ if (isFilteredURL(frame.script.fileName))
+ {
+ reportNextError = false;
+ return RETURN_CONTINUE;
+ }
+
+ try
+ {
+ var breakOnNextError = this.needToBreakForError(reportNextError);
+ var debuggr = (reportNextError || breakOnNextError) ? this.findDebugger(frame) : null;
+
+ if (reportNextError)
+ {
+ reportNextError = false;
+ if (debuggr)
+ {
+ var hookReturn = debuggr.onError(frame, errorInfo, fbs.breakOnDebugCall);
+ if (hookReturn >=0)
+ return hookReturn;
+ else if (hookReturn==-1)
+ breakOnNextError = true;
+
+ if (breakOnNextError)
+ debuggr = this.reFindDebugger(frame, debuggr);
+ }
+ }
+
+ if (breakOnNextError)
+ {
+ if (fbs.isTopLevelScript(frame, type, rv) && FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.onDebug found topLevelScript "+ frame.script.tag);
+
+ if (fbs.isNestedScript(frame, type, rv) && FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.onDebug found nestedScript "+ frame.script.tag);
+
+ breakOnNextError = false;
+ delete fbs.breakOnDebugCall;
+
+ if (debuggr)
+ return this.breakIntoDebugger(debuggr, frame, type);
+ }
+ }
+ catch (exc)
+ {
+ ERROR("onDebug failed: "+exc);
+ }
+
+ return RETURN_CONTINUE;
+ },
+
+ onBreakpoint: function(frame, type, val)
+ {
+ if (fbs.isTopLevelScript(frame, type, val))
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.onBreakpoint isTopLevel returning " + RETURN_CONTINUE);
+
+ return RETURN_CONTINUE;
+ }
+
+ var bp = this.findBreakpointByScript(frame.script, frame.pc);
+ if (bp)
+ {
+ var theDebugger = fbs.getDebuggerByName(bp.debuggerName);
+ if (!theDebugger)
+ theDebugger = this.findDebugger(frame); // sets debuggr.breakContext
+
+ var currFrameId = frameId(frame, 0);
+
+ // See issue 1179, should not break if we resumed from a single
+ // step and have not advanced.
+ // Only break on a breakpoint if a single-step didn't start on
+ // the current line (issue 1098)
+ for (var i=0; i<jsdHandlers.hooks.length; i++)
+ {
+ var handler = jsdHandlers.hooks[i];
+ if (handler.startFrameId == currFrameId)
+ return RETURN_CONTINUE;
+ }
+
+ if (disabledCount || monitorCount || conditionCount || runningUntil)
+ {
+ if (FBTrace.DBG_FBS_BP)
+ {
+ FBTrace.sysout("fbs.onBreakpoint("+getExecutionStopNameFromType(type)+
+ ") disabledCount:"+disabledCount+" monitorCount:"+monitorCount+
+ " conditionCount:"+conditionCount+" runningUntil:"+runningUntil, bp);
+ }
+
+ if (bp.type & BP_ERROR)
+ return RETURN_CONTINUE; // if onError gets called, then we will break
+
+ if (bp.type & BP_MONITOR && !(bp.disabled & BP_MONITOR))
+ {
+ if (bp.type & BP_TRACE && !(bp.disabled & BP_TRACE) )
+ this.hookCalls(theDebugger.onFunctionCall, true); // TODO
+ else
+ theDebugger.onMonitorScript(frame);
+ }
+
+ if (bp.type & BP_UNTIL) // then we hit the runningUntil breakpoint
+ {
+ if (runningUntil)
+ {
+ this.removeBreakpoint(BP_UNTIL, runningUntil.href, runningUntil.lineNo);
+ runningUntil = null;
+ }
+ else
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.BP_UNTIL but not runningUntil!", bp);
+ }
+
+ if (theDebugger)
+ return this.breakIntoDebugger(theDebugger, frame, type);
+ }
+ else if (!(bp.type & BP_NORMAL) || bp.disabled & BP_NORMAL)
+ {
+ return RETURN_CONTINUE;
+ }
+ else if (bp.type & BP_NORMAL)
+ {
+ var passed = testBreakpoint(frame, bp);
+ if (!passed)
+ return RETURN_CONTINUE;
+ }
+ // type was normal, but passed test
+ }
+ else
+ {
+ // not special, just break for sure
+ return this.breakIntoDebugger(theDebugger, frame, type);
+ }
+ }
+ else
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.onBreakpoint(" + getExecutionStopNameFromType(type) +
+ ") NO bp match with frame.script.tag=" + frame.script.tag +
+ " clearing and continuing");
+
+ // We did not find a logical breakpoint to match the one set into JSD, so stop trying.
+ frame.script.clearBreakpoint(frame.pc);
+ return RETURN_CONTINUE;
+ }
+
+ if (runningUntil)
+ return RETURN_CONTINUE;
+ else
+ return fbs.routeBreakToDebuggr(frame, type, val);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onThrow: function(frame, type, rv)
+ {
+ if (isFilteredURL(frame.script.fileName))
+ return RETURN_CONTINUE_THROW;
+
+ if (rv && rv.value && rv.value.isValid)
+ {
+ var value = rv.value;
+ if (value.jsClassName == "Error" && value.stringValue.indexOf("too much recursion") !== -1)
+ {
+ if (fbs._lastErrorCaller)
+ {
+ // then are unwinding recursion
+ if (fbs._lastErrorCaller == frame.script.tag)
+ {
+ fbs._lastErrorCaller =
+ frame.callingFrame ? frame.callingFrame.script.tag : null;
+
+ return RETURN_CONTINUE_THROW;
+ }
+ }
+ else
+ {
+ fbs._lastErrorCaller = frame.callingFrame.script.tag;
+ frame = fbs.discardRecursionFrames(frame);
+ // go on to process the throw.
+ }
+ }
+ else
+ {
+ delete fbs._lastErrorCaller; // throw is not recursion
+ }
+ }
+ else
+ {
+ delete fbs._lastErrorCaller; // throw is not recursion either
+ }
+
+ if (fbs.showStackTrace)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.onThrow from tag:" + frame.script.tag + ":" +
+ frame.script.fileName + "@" + frame.line + ": " + frame.pc);
+
+ var debuggr = this.findDebugger(frame);
+ if (debuggr)
+ return debuggr.onThrow(frame, rv);
+ }
+
+ return RETURN_CONTINUE_THROW;
+ },
+
+ onError: function(message, fileName, lineNo, pos, flags, errnum, exc)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ {
+ var messageKind;
+ if (flags & jsdIErrorHook.REPORT_ERROR)
+ messageKind = "Error";
+ if (flags & jsdIErrorHook.REPORT_WARNING)
+ messageKind = "Warning";
+ if (flags & jsdIErrorHook.REPORT_EXCEPTION)
+ messageKind = "Uncaught-Exception";
+ if (flags & jsdIErrorHook.REPORT_STRICT)
+ messageKind += "-Strict";
+
+ FBTrace.sysout("fbs.onError ("+fbs.onDebugRequests+") with this.showStackTrace="+
+ this.showStackTrace+" and this.breakOnErrors="+this.breakOnErrors+" kind="+
+ messageKind+" msg="+message+"@"+fileName+":"+lineNo+"."+pos,
+ (exc ? exc.getWrappedValue() : "No exc object"));
+ }
+
+ delete fbs.breakOnDebugCall;
+
+ if (exc)
+ {
+ var exception = exc.getWrappedValue();
+ fbs.enumerateErrorBreakpoints(exception.fileName, {call: function breakIfMatch(url, lineNo, bp)
+ {
+ // An error breakpoint is in this file
+ if (exception.lineNumber == bp.lineNo)
+ {
+ fbs.breakOnDebugCall = true;
+
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.onError setting breakOnDebugCall for " + url + "@" +
+ exception.lineNumber);
+ }
+ }});
+ }
+
+ // Global to pass info to onDebug. Some duplicate values to support different apis
+ // Do not store the exception object itself |exc|, errofInfo is a global variable
+ // and it would keep the page (that is producing the error) in the memory
+ // (see bug 669730)
+ errorInfo = { errorMessage: message, sourceName: fileName, lineNumber: lineNo,
+ message: message, fileName: fileName, lineNo: lineNo,
+ columnNumber: pos, flags: flags, category: "js", errnum: errnum };
+
+ if (message == "out of memory") // bail
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ fbs.osOut("fbs.onError sees out of memory "+fileName+":"+lineNo+"\n");
+ return true;
+ }
+
+ reportNextError = { fileName: fileName, lineNo: lineNo };
+
+ if (FBTrace.DBG_FBS_ERRORS)
+ fbs.onDebugRequests++;
+
+ return false; // Drop into onDebug, sometimes only
+ },
+
+ onTopLevel: function(frame, type)
+ {
+ if (FBTrace.DBG_TOPLEVEL)
+ FBTrace.sysout("fbs.onTopLevel " + getCallFromType(type) + " with delegate " +
+ fbs.onTopLevelDelegate + " " + frame.script.tag + " " + frame.script.fileName);
+
+ if (fbs.onTopLevelDelegate)
+ fbs.onTopLevelDelegate(frame, type);
+ },
+
+ isTopLevelScript: function(frame, type, val)
+ {
+ var scriptTag = frame.script.tag;
+
+ if (FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.isTopLevelScript frame.script.tag="+frame.script.tag );
+
+ if (scriptTag in this.onXScriptCreatedByTag)
+ {
+ if (FBTrace.DBG_FBS_TRACKFILES)
+ trackFiles.def(frame);
+
+ var onXScriptCreated = this.onXScriptCreatedByTag[scriptTag];
+
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.isTopLevelScript(" + getExecutionStopNameFromType(type) +
+ ") with frame.script.tag=" + frame.script.tag + " onXScriptCreated:" +
+ onXScriptCreated.kind);
+
+ delete this.onXScriptCreatedByTag[scriptTag];
+ frame.script.clearBreakpoint(0);
+
+ try
+ {
+ var sourceFile = onXScriptCreated(frame, type, val);
+ }
+ catch (e)
+ {
+ FBTrace.sysout("fbs.isTopLevelScript called onXScriptCreated and " +
+ "it didn't end well:", e);
+ }
+
+ if (FBTrace.DBG_FBS_SRCUNITS)
+ {
+ var msg = "Top Scripts Uncleared:";
+ for (var p in this.onXScriptCreatedByTag)
+ msg += (p + "|");
+ FBTrace.sysout(msg);
+ }
+
+ if (!sourceFile || !sourceFile.breakOnZero || sourceFile.breakOnZero != scriptTag)
+ {
+ return true;
+ }
+ else
+ {
+ // sourceFile.breakOnZero matches the script we have halted.
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.isTopLevelScript breakOnZero, continuing for " +
+ "user breakpoint");
+ }
+ }
+
+ return false;
+ },
+
+ /**
+ * If true, emergency bailout: a frame is running a script which has not been
+ * processed as source
+ */
+ isNestedScript: function(frame, type, val)
+ {
+ if (fbs.nestedScriptStack.length === 0 ||
+ fbs.nestedScriptStack.indexOf(frame.script) === -1)
+ {
+ return false;
+ }
+
+ try
+ {
+ var sourceFile = fbs.onTopLevelScriptCreated(frame, type, val);
+ }
+ catch (e)
+ {
+ FBTrace.sysout("fbs.isNestedScript called onXScriptCreated and it didn't end well:", e);
+ }
+
+ return true;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ onXULScriptCreated: function(frame, type, val, noNestTest)
+ {
+ // A XUL script hit a breakpoint
+ try
+ {
+ var outerScript = frame.script;
+ var innerScripts = [];
+ for (var i=0; i<fbs.pendingXULScripts.length; i++)
+ {
+ // Take all the pending script from the same file as part of this sourcefile
+ if (fbs.pendingXULScripts[i].fileName === outerScript.fileName)
+ {
+ var innerScript = fbs.pendingXULScripts[i];
+ innerScripts.push(innerScript);
+ if (innerScript.isValid)
+ innerScript.clearBreakpoint(0);
+
+ fbs.pendingXULScripts.splice(i,1);
+ }
+ }
+
+ var debuggr = fbs.findDebugger(frame); // sets debuggr.breakContext
+ if (debuggr)
+ {
+ innerScripts.push(outerScript);
+ var innerScriptEnumerator =
+ {
+ index: 0,
+ max: innerScripts.length,
+ hasMoreElements: function() { return this.index < this.max;},
+ getNext: function() { return innerScripts[this.index++]; },
+ };
+
+ var sourceFile = debuggr.onXULScriptCreated(frame, outerScript,
+ innerScriptEnumerator);
+ fbs.resetBreakpoints(sourceFile, debuggr);
+ }
+ else
+ {
+ if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.onEventScriptCreated no debuggr for " + frame.script.tag +
+ ":" + frame.script.fileName);
+ }
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.onXULScriptCreated ERROR " + exc, exc);
+ }
+ },
+
+ onEventScriptCreated: function(frame, type, val, noNestTest)
+ {
+ if (fbs.showEvents)
+ {
+ try
+ {
+ if (!noNestTest)
+ {
+ // In onScriptCreated we saw a script with baseLineNumber = 1.
+ // We marked it as event and nested.
+ // Now we know its event, not nested.
+ if (fbs.nestedScriptStack.length > 0)
+ {
+ fbs.nestedScriptStack.splice(0,1);
+ }
+ else
+ {
+ if (FBTrace.DBG_FBS_SRCUNITS) // these seem to be harmless, but...
+ {
+ var script = frame.script;
+ FBTrace.sysout("fbs.onEventScriptCreated no nestedScriptStack: " +
+ script.tag + "@(" + script.baseLineNumber + "-" +
+ (script.baseLineNumber+script.lineExtent) + ")" +
+ script.fileName);
+
+ try
+ {
+ FBTrace.sysout(script.functionSource);
+ }
+ catch (exc)
+ {
+ /*Bug 426692 */
+ }
+ }
+ }
+ }
+
+ var debuggr = fbs.findDebugger(frame); // sets debuggr.breakContext
+ if (debuggr)
+ {
+ var sourceFile = debuggr.onEventScriptCreated(frame, frame.script,
+ fbs.getNestedScriptEnumerator());
+ fbs.resetBreakpoints(sourceFile, debuggr);
+ }
+ else
+ {
+ if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.onEventScriptCreated no debuggr for " +
+ frame.script.tag + ":" + frame.script.fileName);
+ }
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("fbs.onEventScriptCreated failed: " + exc, exc);
+ }
+
+ if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.onEventScriptCreated frame.script.tag:" + frame.script.tag +
+ " href: " + (sourceFile ? sourceFile.href : "no sourceFile"), sourceFile);
+ }
+
+ fbs.clearNestedScripts();
+ return sourceFile;
+ },
+
+ onEvalScriptCreated: function(frame, type, val)
+ {
+ if (fbs.showEvals)
+ {
+ try
+ {
+ if (!frame.callingFrame)
+ {
+ if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.No calling Frame for eval frame.script.fileName:" +
+ frame.script.fileName);
+
+ // These are eval-like things called by native code. They come from .xml files
+ // They should be marked as evals but we'll treat them like event handlers for now.
+ return fbs.onEventScriptCreated(frame, type, val, true);
+ }
+
+ // In onScriptCreated we found a no-name script, set a bp in PC=0, and a flag.
+ // onBreakpoint saw the flag, cleared the flag, and sent us here.
+ // Start by undoing our damage
+ var outerScript = frame.script;
+
+ // sets debuggr.breakContext
+ var debuggr = fbs.findDebugger(frame);
+ if (debuggr)
+ {
+ var sourceFile = debuggr.onEvalScriptCreated(frame, outerScript,
+ fbs.getNestedScriptEnumerator());
+ fbs.resetBreakpoints(sourceFile, debuggr);
+ }
+ else
+ {
+ if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.onEvalScriptCreated no debuggr for " +
+ outerScript.tag + ":" + outerScript.fileName);
+ }
+ }
+ catch (exc)
+ {
+ ERROR("onEvalScriptCreated failed: "+exc);
+
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.onEvalScriptCreated failed:", exc);
+ }
+ }
+
+ fbs.clearNestedScripts();
+
+ if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.onEvalScriptCreated outerScript.tag:" + outerScript.tag +
+ " href: " + (sourceFile ? sourceFile.href : "no sourceFile"));
+
+ return sourceFile;
+ },
+
+ onTopLevelScriptCreated: function(frame, type, val)
+ {
+ try
+ {
+ // In onScriptCreated we may have found a script at baseLineNumber=1
+ // Now we know its not an event
+ if (fbs.nestedScriptStack.length > 0)
+ {
+ var firstScript = fbs.nestedScriptStack[0];
+ if (firstScript.tag in fbs.onXScriptCreatedByTag)
+ {
+ delete fbs.onXScriptCreatedByTag[firstScript.tag];
+ if (firstScript.isValid)
+ firstScript.clearBreakpoint(0);
+
+ if (FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.onTopLevelScriptCreated clear bp at 0 for " +
+ "firstScript.tag: " + firstScript.tag);
+ }
+ }
+
+ // On compilation of a top-level (global-appending) function.
+ // After this top-level script executes we lose the jsdIScript so we can't
+ // build its line table. Therefore we need to build it here.
+
+ // sets debuggr.breakContext
+ var debuggr = fbs.findDebugger(frame);
+ if (debuggr)
+ {
+ var sourceFile = debuggr.onTopLevelScriptCreated(frame, frame.script,
+ fbs.getNestedScriptEnumerator());
+
+ if (FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.onTopLevelScriptCreated got sourceFile:" + sourceFile +
+ " using " + fbs.nestedScriptStack.length + " nestedScripts");
+
+ fbs.resetBreakpoints(sourceFile, debuggr);
+ }
+ else
+ {
+ // modules end up here?
+ if (FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.onTopLevelScriptCreated no debuggr for " + frame.script.tag);
+ }
+ }
+ catch (exc)
+ {
+ FBTrace.sysout("fbs.onTopLevelScriptCreated FAILED: " + exc, exc);
+ ERROR("onTopLevelScriptCreated ERROR: " + exc);
+ }
+
+ fbs.clearNestedScripts();
+
+ if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.onTopLevelScriptCreated script.tag:" + frame.script.tag +
+ " href: " + (sourceFile ? sourceFile.href : "no sourceFile"));
+
+ return sourceFile;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getNestedScriptEnumerator: function()
+ {
+ var enumer =
+ {
+ index: 0,
+ hasMoreElements: function()
+ {
+ return (this.index < fbs.nestedScriptStack.length);
+ },
+ getNext: function()
+ {
+ var rv = fbs.nestedScriptStack[this.index];
+ this.index++;
+ return rv;
+ }
+ };
+ return enumer;
+ },
+
+ clearNestedScripts: function()
+ {
+ var innerScripts = fbs.nestedScriptStack;
+ for (var i=0; i<innerScripts.length; i++)
+ {
+ var script = innerScripts[i];
+ if (script.isValid && script.baseLineNumber == 1)
+ {
+ // Clear helper breakpoints that are set automatically when a new script
+ // is created. But avoid cases where the user has a breakpoint on the
+ // first line in a function (issue 3985).
+ if (!fbs.findBreakpointByScript(script, 0))
+ script.clearBreakpoint(0);
+
+ if (this.onXScriptCreatedByTag[script.tag])
+ delete this.onXScriptCreatedByTag[script.tag];
+ }
+ }
+
+ fbs.nestedScriptStack = [];
+ },
+
+ onScriptCreated: function(script)
+ {
+ if (!fbs)
+ {
+ if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS || FBTrace.DBG_FBS_TRACKFILES)
+ FBTrace.sysout("fbs.onScriptCreated " + script.tag +
+ ", but no fbs for script.fileName=" + script.fileName);
+ return;
+ }
+
+ try
+ {
+ var fileName = script.fileName;
+
+ if (FBTrace.DBG_FBS_TRACKFILES)
+ trackFiles.add(fileName);
+
+ if (isFilteredURL(fileName) || fbs.isChromebug(fileName))
+ {
+ try
+ {
+ if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.onScriptCreated " + script.tag +
+ ": filename filtered:\'" +
+ fileName + "\'" + (fbs.filterConsoleInjections ?
+ " console injection" : ""));
+ }
+ catch (exc)
+ {
+ FBTrace.sysout("fbs.onScriptCreated " + script.tag + " filtered msg ERROR \'" +
+ script.fileName+"\'"); /*? Bug 426692 */
+ }
+
+ if (FBTrace.DBG_FBS_TRACKFILES)
+ trackFiles.drop(fileName);
+
+ return;
+ }
+
+ if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.onScriptCreated: " + script.tag + "@(" + script.baseLineNumber +
+ "-" + (script.baseLineNumber+script.lineExtent) + ")" + script.fileName);
+
+ if (script.lineExtent > 80000 && FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.BOGUS line extent (" + script.lineExtent +
+ ") for " + script.fileName);
+
+ if (FBTrace.DBG_FBS_CREATION)
+ {
+ try
+ {
+ FBTrace.sysout("fbs.onScriptCreated: \'"+script.functionName+"\'",
+ script.functionSource);
+ }
+ catch (exc)
+ {
+ FBTrace.sysout("fbs.onScriptCreated " + script.tag + " ERROR \'" +
+ script.fileName + "\'"); /*? Bug 426692 */
+ }
+ }
+
+ var functionName;
+ try
+ {
+ // Accessing the 'functionName' property can throw an exception
+ // if weird characters are used (see issue 6493)
+ functionName = script.functionName;
+ }
+ catch (err)
+ {
+ FBTrace.sysout("fbs.onScriptCreated; ERROR failed to get functionName", err);
+ functionName = "<unknown>";
+ }
+
+ if (reXUL.test(script.fileName))
+ {
+ fbs.onXScriptCreatedByTag[script.tag] = fbs.onXULScriptCreated;
+ fbs.pendingXULScripts.push(script);
+
+ // Stop in the first one called and assign all with this fileName to sourceFile.
+ script.setBreakpoint(0);
+ }
+ else if (!functionName) // top or eval-level
+ {
+ // We need to detect eval() and grab its source.
+ var hasCaller = fbs.createdScriptHasCaller();
+ if (FBTrace.DBG_FBS_SRCUNITS)
+ FBTrace.sysout("fbs.top or eval case createdScriptHasCaller " + hasCaller);
+
+ if (hasCaller)
+ {
+ // components end up here
+ fbs.onXScriptCreatedByTag[script.tag] = this.onEvalScriptCreated;
+ }
+ else
+ {
+ fbs.onXScriptCreatedByTag[script.tag] = this.onTopLevelScriptCreated;
+ }
+
+ script.setBreakpoint(0);
+
+ if (FBTrace.DBG_FBS_CREATION || FBTrace.DBG_FBS_SRCUNITS || FBTrace.DBG_FBS_BP)
+ {
+ FBTrace.sysout("fbs.onScriptCreated: set BP at PC 0 in " +
+ (hasCaller ? "eval" : "top") + " level tag=" + script.tag + ":" +
+ script.fileName + " jsd depth:" + (jsd.isOn ? jsd.pauseDepth +
+ "" : "OFF"));
+ }
+ }
+ else if (script.baseLineNumber == 1)
+ {
+ // could be a 1) Browser-generated event handler or
+ // 2) a nested script at the top of a file
+ // One way to tell is assume both then wait to see which we hit first:
+ // 1) bp at pc=0 for this script or 2) for a top-level on at the same filename
+
+ if (FBTrace.DBG_FBS_SRCUNITS)
+ {
+ var hasCaller = fbs.createdScriptHasCaller();
+ FBTrace.sysout("fbs.browser generated createdScriptHasCaller " + hasCaller);
+ }
+
+ fbs.onXScriptCreatedByTag[script.tag] = this.onEventScriptCreated; // for case 1
+ script.setBreakpoint(0);
+
+ fbs.nestedScriptStack.push(script); // for case 2
+
+ if (FBTrace.DBG_FBS_CREATION)
+ FBTrace.sysout("fbs.onScriptCreated: set BP at PC 0 in event level tag=" +
+ script.tag);
+ }
+ else
+ {
+ fbs.nestedScriptStack.push(script);
+
+ if (FBTrace.DBG_FBS_CREATION)
+ FBTrace.sysout("fbs.onScriptCreated: nested function named: " +
+ functionName);
+
+ dispatch(scriptListeners, "onScriptCreated", [script, fileName, script.baseLineNumber]);
+ }
+ }
+ catch(exc)
+ {
+ ERROR("onScriptCreated failed: " + exc);
+ FBTrace.sysout("fbs.onScriptCreated failed:", exc);
+ }
+ },
+
+ createdScriptHasCaller: function()
+ {
+ if (FBTrace.DBG_FBS_SRCUNITS)
+ dumpComponentsStack("createdScriptHasCaller ");
+
+ // createdScriptHasCaller
+ var frame = Components.stack;
+
+ // onScriptCreated
+ frame = frame.caller;
+ if (!frame)
+ return frame;
+
+ // hook apply
+ frame = frame.caller;
+ if (!frame)
+ return frame;
+
+ // native interpret?
+ frame = frame.caller;
+ if (!frame)
+ return frame;
+
+ // our creator ... or null if we are top level
+ frame = frame.caller;
+ return frame;
+ },
+
+ onScriptDestroyed: function(script)
+ {
+ if (!fbs)
+ return;
+
+ if (script.tag in fbs.onXScriptCreatedByTag)
+ delete fbs.onXScriptCreatedByTag[script.tag];
+
+ try
+ {
+ var fileName = script.fileName;
+ if (isFilteredURL(fileName))
+ return;
+
+ if (FBTrace.DBG_FBS_CREATION)
+ FBTrace.sysout('fbs.onScriptDestroyed '+script.tag);
+
+ dispatch(scriptListeners,"onScriptDestroyed",[script]);
+ }
+ catch(exc)
+ {
+ ERROR("onScriptDestroyed failed: "+exc);
+ FBTrace.sysout("fbs.onScriptDestroyed failed: ", exc);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ createFilter: function(pattern, pass)
+ {
+ var filter = {
+ globalObject: null,
+ flags: pass ? (jsdIFilter.FLAG_ENABLED | jsdIFilter.FLAG_PASS) : jsdIFilter.FLAG_ENABLED,
+ urlPattern: pattern,
+ startLine: 0,
+ endLine: 0
+ };
+ return filter;
+ },
+
+ setChromeBlockingFilters: function()
+ {
+ if (!fbs.isChromeBlocked)
+ {
+
+ jsd.appendFilter(this.noFilterHalter); // must be first
+ jsd.appendFilter(this.noFilterTrace); // must be second
+ jsd.appendFilter(this.filterChrome);
+ jsd.appendFilter(this.filterComponents);
+ jsd.appendFilter(this.filterFirebugComponents);
+ jsd.appendFilter(this.filterModules);
+ jsd.appendFilter(this.filterStringBundle);
+ jsd.appendFilter(this.filterPrettyPrint);
+ jsd.appendFilter(this.filterWrapper);
+
+ for (var i = 0; i < this.componentFilters.length; i++)
+ jsd.appendFilter(this.componentFilters[i]);
+
+ fbs.isChromeBlocked = true;
+
+ if (FBTrace.DBG_FBS_BP)
+ this.traceFilters("setChromeBlockingFilters with " +
+ this.componentFilters.length + " component filters");
+ }
+ },
+
+ removeChromeBlockingFilters: function()
+ {
+ try
+ {
+ if (fbs.isChromeBlocked)
+ {
+ if (!this.filterChrome)
+ FBTrace.sysout("fbs.removeChromeBlockingFilters is confused ", this);
+
+ jsd.removeFilter(this.filterChrome);
+ jsd.removeFilter(this.filterComponents);
+ jsd.removeFilter(this.filterFirebugComponents);
+ jsd.removeFilter(this.filterModules);
+ jsd.removeFilter(this.filterStringBundle);
+ jsd.removeFilter(this.filterPrettyPrint);
+ jsd.removeFilter(this.filterWrapper);
+ jsd.removeFilter(this.noFilterHalter);
+ jsd.removeFilter(this.noFilterTrace);
+
+ for (var i = 0; i < this.componentFilters.length; i++)
+ jsd.removeFilter(this.componentFilters[i]);
+
+ fbs.isChromeBlocked = false;
+ }
+ }
+ catch (err)
+ {
+ FBTrace.sysout("fbs.removeChromeBlockingFilters; EXCEPTION " + err, err);
+ }
+
+ if (FBTrace.DBG_FBS_BP)
+ this.traceFilters("removeChromeBlockingFilters");
+ },
+
+ // call after components are loaded.
+ createChromeBlockingFilters: function()
+ {
+ try
+ {
+ this.filterModules = this.createFilter("*/firefox/modules/*");
+ this.filterComponents = this.createFilter("*/firefox/components/*");
+ this.filterFirebugComponents = this.createFilter("*/modules/firebug-*");
+ this.filterStringBundle = this.createFilter("XStringBundle");
+ this.filterChrome = this.createFilter("chrome://*");
+ this.filterPrettyPrint = this.createFilter("x-jsd:ppbuffer*");
+ this.filterWrapper = this.createFilter("XPCSafeJSObjectWrapper.cpp");
+ this.noFilterHalter = this.createFilter("resource://firebug/debuggerHalter.js", true);
+ this.noFilterTrace = this.createFilter("chrome://firebug/content/console/consoleExposed.js", true);
+
+ // jsdIFilter does not allow full regexp matching.
+ // So to filter components, we filter their directory names, which we obtain
+ // by looking for scripts that match regexps
+
+ var componentsUnfound = [];
+ for (var i=0; i<COMPONENTS_FILTERS.length; ++i)
+ componentsUnfound.push(COMPONENTS_FILTERS[i]);
+
+ this.componentFilters = [];
+
+ jsd.enumerateScripts( {
+ enumerateScript: function(script)
+ {
+ var fileName = script.fileName;
+ for (var i=0; i<componentsUnfound.length; ++i)
+ {
+ if (componentsUnfound[i].test(fileName))
+ {
+ var match = componentsUnfound[i].exec(fileName);
+ fbs.componentFilters.push(fbs.createFilter(match[1]));
+ componentsUnfound.splice(i, 1);
+ return;
+ }
+ }
+ }
+ });
+ }
+ catch (exc)
+ {
+ FBTrace.sysout("fbs.createChromeblockingFilters ERROR >>>>>>>>>>>>>>>>> "+exc, exc);
+ }
+
+ if (FBTrace.DBG_FBS_BP)
+ {
+ FBTrace.sysout("fbs.createChromeBlockingFilters considered "+COMPONENTS_FILTERS.length+
+ " regexps and created "+this.componentFilters.length+
+ " filters with unfound: "+componentsUnfound.length, componentsUnfound);
+ fbs.traceFilters("createChromeBlockingFilters");
+ }
+ },
+
+ traceFilters: function(from)
+ {
+ FBTrace.sysout("fbs.traceFilters from "+from);
+
+ jsd.enumerateFilters({ enumerateFilter: function(filter)
+ {
+ FBTrace.sysout("fbs.jsdIFilter "+filter.urlPattern, filter);
+ }});
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ eachJSContext: function(callback)
+ {
+ var enumeratedContexts = [];
+ jsd.enumerateContexts({ enumerateContext: function(jscontext)
+ {
+ try
+ {
+ if (!jscontext.isValid)
+ return;
+
+ var wrappedGlobal = jscontext.globalObject;
+ if (!wrappedGlobal)
+ return;
+
+ var unwrappedGlobal = wrappedGlobal.getWrappedValue();
+ if (!unwrappedGlobal)
+ return;
+
+ if (unwrappedGlobal instanceof Ci.nsISupports)
+ var global = new XPCNativeWrapper(unwrappedGlobal);
+ else
+ var global = unwrappedGlobal;
+
+ if (FBTrace.DBG_FBS_JSCONTEXTS)
+ FBTrace.sysout("fbs.getJSContexts jsIContext tag:"+jscontext.tag+
+ (jscontext.isValid?" - isValid\n":" - NOT valid\n"));
+
+ if (global)
+ {
+ callback(global, jscontext.tag);
+ }
+ else
+ {
+ if (FBTrace.DBG_FBS_JSCONTEXTS)
+ FBTrace.sysout("fbs.getJSContexts no global object tag:"+jscontext.tag);
+ return; // skip this
+ }
+
+ enumeratedContexts.push(jscontext);
+ }
+ catch(e)
+ {
+ FBTrace.sysout("fbs.jscontext dump FAILED "+e, e);
+ }
+ }});
+
+ return enumeratedContexts;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ getOutermostScope: function(frame)
+ {
+ var scope = frame.scope;
+ if (scope)
+ {
+ while(scope.jsParent)
+ scope = scope.jsParent;
+
+ // These are just determined by trial and error.
+ if (scope.jsClassName == "Window" || scope.jsClassName == "ChromeWindow" ||
+ scope.jsClassName == "ModalContentWindow")
+ {
+ lastWindowScope = wrapIfNative(scope.getWrappedValue());
+ return lastWindowScope;
+ }
+
+ /* if (scope.jsClassName == "DedicatedWorkerGlobalScope")
+ {
+ //var workerScope = new XPCNativeWrapper(scope.getWrappedValue());
+
+ //if (FBTrace.DBG_FBS_FINDDEBUGGER)
+ // FBTrace.sysout("fbs.getOutermostScope found WorkerGlobalScope: "+scope.jsClassName, workerScope);
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=507930 if (FBTrace.DBG_FBS_FINDDEBUGGER)
+ // FBTrace.sysout("fbs.getOutermostScope found WorkerGlobalScope.location: "+workerScope.location, workerScope.location);
+ return null; // https://bugzilla.mozilla.org/show_bug.cgi?id=507783
+ }
+ */
+ if (scope.jsClassName == "Sandbox")
+ {
+ // Drop one frame see attachConsoleInjector
+ var fileName = this.safeGetUrlFromFrame(frame);
+ if (fileName && fileName.indexOf("console/consoleInjector.js") > 0)
+ {
+ if (frame.callingFrame)
+ return fbs.getOutermostScope(frame.callingFrame);
+ }
+
+ var proto = scope.jsPrototype;
+
+ // this is the path if we have web page in a sandbox
+ if (proto.jsClassName == "XPCNativeWrapper")
+ {
+ proto = proto.jsParent;
+ if (proto.jsClassName == "Window")
+ return wrapIfNative(proto.getWrappedValue());
+ }
+ else
+ {
+ return wrapIfNative(scope.getWrappedValue());
+ }
+ }
+
+ if (FBTrace.DBG_FBS_FINDDEBUGGER)
+ FBTrace.sysout("fbs.getOutermostScope found scope chain bottom, not Window: " +
+ scope.jsClassName, scope);
+
+ return wrapIfNative(scope.getWrappedValue()); // not a window or a sandbox
+ }
+ else
+ {
+ return null;
+ }
+ },
+
+ findDebugger: function(frame)
+ {
+ if (debuggers.length < 1)
+ return;
+
+ var checkFrame = frame;
+ while (checkFrame) // We may stop in a component, but want the callers Window
+ {
+ // the outermost lexical scope of the function running the frame
+ var frameScopeRoot = this.getOutermostScope(checkFrame);
+ if (frameScopeRoot)
+ break;
+
+ if (FBTrace.DBG_FBS_FINDDEBUGGER)
+ FBTrace.sysout("fbs.findDebugger no frame Window, looking to older stackframes",
+ checkFrame);
+
+ checkFrame = checkFrame.callingFrame;
+ }
+
+ if (!checkFrame && FBTrace.DBG_FBS_FINDDEBUGGER)
+ FBTrace.sysout("fbs.findDebugger fell thru bottom of stack", frame);
+
+ // frameScopeRoot should be the top window for the scope of the frame function
+ // or null
+ var the_debuggr = fbs.askDebuggersForSupport(frameScopeRoot, frame);
+ if (the_debuggr)
+ return the_debuggr;
+
+ if (FBTrace.DBG_FBS_FINDDEBUGGER)
+ FBTrace.sysout("fbs.findDebugger no debuggr on bottom frame", frame);
+
+ return null;
+ },
+
+ isChromebug: function(location)
+ {
+ // TODO this is a kludge: isFilteredURL stops users from seeing firebug but
+ // chromebug has to disable the filter
+
+ if (location)
+ {
+ if (location.indexOf("chrome://chromebug/") >= 0 ||
+ location.indexOf("chrome://fb4cb/") >= 0)
+ {
+ return true;
+ }
+ }
+ return false;
+ },
+
+ getLocationSafe: function(global)
+ {
+ try
+ {
+ // then we have a window, it will be an nsIDOMWindow, right?
+ if (global && global.location)
+ return global.location.toString();
+ else if (global && global.tag)
+ return "global_tag_"+global.tag;
+ }
+ catch (exc)
+ {
+ // FF3 gives (NS_ERROR_INVALID_POINTER) [nsIDOMLocation.toString]
+ }
+
+ return null;
+ },
+
+ safeGetUrlFromFrame: function(frame)
+ {
+ try
+ {
+ if (frame)
+ return frame.script.fileName;
+ }
+ catch (err)
+ {
+ }
+ return "";
+ },
+
+ askDebuggersForSupport: function(global, frame)
+ {
+ if (FBTrace.DBG_FBS_FINDDEBUGGER)
+ FBTrace.sysout("fbs.askDebuggersForSupport using global " + global + " for " +
+ frame.script.fileName);
+
+ if (global && fbs.isChromebug(fbs.getLocationSafe(global)))
+ return false;
+
+ if (FBTrace.DBG_FBS_FINDDEBUGGER)
+ FBTrace.sysout("fbs.askDebuggersForSupport " + debuggers.length +
+ " debuggers to check for " + frame.script.fileName, debuggers);
+
+ for (var i=debuggers.length-1; i>=0; i--)
+ {
+ try
+ {
+ var debuggr = debuggers[i];
+ if (debuggr.supportsGlobal(global, frame))
+ {
+ if (!debuggr.breakContext)
+ FBTrace.sysout("fbs.Debugger with no breakContext:",debuggr.supportsGlobal);
+
+ if (FBTrace.DBG_FBS_FINDDEBUGGER)
+ FBTrace.sysout("fbs.findDebugger found debuggr (" + debuggr.debuggerName +
+ ") at " + i + " with breakContext " + debuggr.breakContext.getName() +
+ " for global " + fbs.getLocationSafe(global) + " while processing " +
+ frame.script.fileName);
+
+ return debuggr;
+ }
+ }
+ catch (exc)
+ {
+ FBTrace.sysout("fbs.askDebuggersForSupport ERROR: " + exc,exc);
+ }
+ }
+ return null;
+ },
+
+ dumpIValue: function(value)
+ {
+ var listValue = {value: null}, lengthValue = {value: 0};
+ value.getProperties(listValue, lengthValue);
+
+ for (var i=0; i<lengthValue.value; ++i)
+ {
+ var prop = listValue.value[i];
+ try
+ {
+ var name = unwrapIValue(prop.name);
+ FBTrace.sysout("fbs." + i + "]" + name + "=" + unwrapIValue(prop.value));
+ }
+ catch (e)
+ {
+ FBTrace.sysout("fbs." + i + "]" + e);
+ }
+ }
+ },
+
+ reFindDebugger: function(frame, debuggr)
+ {
+ var frameScopeRoot = this.getOutermostScope(frame);
+ if (frameScopeRoot && debuggr.supportsGlobal(frameScopeRoot, frame))
+ return debuggr;
+
+ if (FBTrace.DBG_FBS_FINDDEBUGGER)
+ FBTrace.sysout("fbs.reFindDebugger debuggr " + debuggr.debuggerName +
+ " does not support frameScopeRoot " + frameScopeRoot, frameScopeRoot);
+
+ return null;
+ },
+
+ discardRecursionFrames: function(frame)
+ {
+ var i = 0;
+ var rest = 0;
+ var mark = frame; // a in abcabcabcdef
+ var point = frame;
+
+ while (point = point.callingFrame)
+ {
+ i++;
+
+ // then we found a repeating caller abcabcdef
+ if (point.script.tag == mark.script.tag)
+ {
+ mark = point;
+ rest = i;
+ }
+ }
+
+ // here point is null and mark is the last repeater, abcdef
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.discardRecursionFrames dropped " + rest + " of " + i, mark);
+
+ return mark;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Breakpoints
+
+ // jsd breakpoints are on a PC in a jsdIScript
+ // Users breakpoint on a line of source
+ // Because test.js can be included multiple times, the URL+line number from the UI is not unique.
+ // sourcefile.href != script.fileName, generally script.fileName cannot be used.
+ // If the source is compiled, then we have zero, one, or more jsdIScripts on a line.
+ // If zero, cannot break at that line
+ // If one, set a jsd breakpoint
+ // If more than one, set jsd breakpoint on each script
+ // Else we know that the source will be compiled before it is run.
+ // Save the sourceFile.href+line and set the jsd breakpoint when we compile
+ // Venkman called these "future" breakpoints
+ // We cannot prevent future breakpoints on lines that have no script.
+ // Break onCreate with error?
+ addBreakpoint: function(type, sourceFile, lineNo, props, debuggr)
+ {
+ var url = sourceFile.href;
+ var bp = this.findBreakpoint(url, lineNo);
+ if (bp && bp.type & type)
+ return null;
+
+ if (bp)
+ {
+ bp.type |= type;
+
+ if (debuggr)
+ {
+ bp.debuggerName = debuggr.debuggerName;
+ }
+ else
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.addBreakpoint with no debuggr:");
+ }
+ }
+ else
+ {
+ bp = this.recordBreakpoint(type, url, lineNo, debuggr, props, sourceFile);
+ }
+
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.addBreakpoint for "+url, [bp, sourceFile]);
+
+ return bp;
+ },
+
+ recordBreakpoint: function(type, url, lineNo, debuggr, props, sourceFile)
+ {
+ var urlBreakpoints = fbs.getBreakpoints(url);
+ if (!urlBreakpoints)
+ urlBreakpoints = [];
+
+ if (typeof(lineNo) !== 'number')
+ throw new Error("firebug-service line numbers must be numbers "+lineNo+"@"+url);
+
+ var bp = {type: type, href: url, lineNo: lineNo, disabled: 0,
+ debuggerName: debuggr.debuggerName,
+ condition: "", onTrue: true, hitCount: -1, hit: 0};
+
+ if (props)
+ {
+ bp.condition = props.condition;
+ delete bp.transformedCondition;
+ bp.onTrue = props.onTrue;
+ bp.hitCount = props.hitCount;
+ if (bp.condition || bp.hitCount > 0)
+ ++conditionCount;
+ if(props.disabled)
+ {
+ bp.disabled |= BP_NORMAL;
+ ++disabledCount;
+ }
+ }
+
+ urlBreakpoints.push(bp);
+ fbs.setJSDBreakpoint(sourceFile, bp);
+ fbs.setBreakpoints(url, urlBreakpoints);
+ ++breakpointCount;
+
+ return bp;
+ },
+
+ removeBreakpoint: function(type, url, lineNo)
+ {
+ var urlBreakpoints = fbs.getBreakpoints(url);
+
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.removeBreakpoint for "+url+", need to check bps="+
+ (urlBreakpoints?urlBreakpoints.length:"none"));
+
+ if (!urlBreakpoints)
+ return false;
+
+ for (var i=0; i<urlBreakpoints.length; ++i)
+ {
+ var bp = urlBreakpoints[i];
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.removeBreakpoint checking bp.lineNo vs lineNo=" + bp.lineNo +
+ " vs " + lineNo);
+
+ if (bp.lineNo === lineNo)
+ {
+ bp.type &= ~type;
+ if (!bp.type)
+ {
+ if (bp.scriptsWithBreakpoint)
+ {
+ for (var j=0; j<bp.scriptsWithBreakpoint.length; j++)
+ {
+ var script = bp.scriptsWithBreakpoint[j];
+ if (script && script.isValid)
+ {
+ try
+ {
+ script.clearBreakpoint(bp.pc[j]);
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.removeBreakpoint in tag=" + script.tag +
+ " at " + lineNo + "@" + url);
+ }
+ catch (exc)
+ {
+ FBTrace.sysout("fbs.Firebug service failed to remove breakpoint in " +
+ script.tag + " at lineNo=" + lineNo + " pcmap:" + bp.pcmap);
+ }
+ }
+ }
+ }
+
+ // else this was a future breakpoint that never hit or a script that was GCed
+
+ urlBreakpoints.splice(i, 1);
+ --breakpointCount;
+
+ if (bp.disabled)
+ --disabledCount;
+
+ if (bp.condition || bp.hitCount > 0)
+ --conditionCount;
+
+ fbs.setBreakpoints(url, urlBreakpoints);
+ }
+
+ return bp;
+ }
+ }
+
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.removeBreakpoint no find for " + lineNo + "@" + url + " in " +
+ urlBreakpoints.length, urlBreakpoints);
+
+ return false;
+ },
+
+ findBreakpoint: function(url, lineNo)
+ {
+ var urlBreakpoints = fbs.getBreakpoints(url);
+ if (urlBreakpoints)
+ {
+ for (var i = 0; i < urlBreakpoints.length; ++i)
+ {
+ var bp = urlBreakpoints[i];
+ if (bp.lineNo === lineNo)
+ return bp;
+ }
+ }
+
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.findBreakpoint no find for "+lineNo+"@"+url, urlBreakpoints);
+
+ return null;
+ },
+
+ // When we are called, scripts have been compiled so all relevant breakpoints are not "future"
+ findBreakpointByScript: function(script, pc)
+ {
+ var urlsWithBreakpoints = fbs.getBreakpointURLs();
+ for (var iURL = 0; iURL < urlsWithBreakpoints.length; iURL++)
+ {
+ var url = urlsWithBreakpoints[iURL];
+ var urlBreakpoints = fbs.getBreakpoints(url);
+ if (urlBreakpoints)
+ {
+ for (var iBreakpoint = 0; iBreakpoint < urlBreakpoints.length; ++iBreakpoint)
+ {
+ var bp = urlBreakpoints[iBreakpoint];
+ if (bp.scriptsWithBreakpoint)
+ {
+ for (var iScript = 0; iScript < bp.scriptsWithBreakpoint.length; iScript++)
+ {
+ if (FBTrace.DBG_FBS_BP)
+ {
+ var vs = (bp.scriptsWithBreakpoint[iScript] ?
+ bp.scriptsWithBreakpoint[iScript].tag + "@" + bp.pc[iScript] :
+ "future") + " on " + url;
+
+ FBTrace.sysout("fbs.findBreakpointByScript[" + iURL + "," + iBreakpoint +
+ "," + iScript + "]" + " looking for " + script.tag + "@" + pc +
+ " vs " + vs);
+ }
+
+ if (bp.scriptsWithBreakpoint[iScript] &&
+ (bp.scriptsWithBreakpoint[iScript].tag == script.tag) &&
+ (bp.pc[iScript] == pc))
+ {
+ return bp;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return null;
+ },
+
+ // the sourcefile has just been created after compile
+ resetBreakpoints: function(sourceFile, debuggr)
+ {
+ // If the new script is replacing an old script with a breakpoint still
+ var url = sourceFile.href;
+ var urlBreakpoints = fbs.getBreakpoints(url);
+
+ if (FBTrace.DBG_FBS_BP)
+ {
+ try
+ {
+ var msg = "resetBreakpoints: breakpoints["+sourceFile.href;
+ msg += "]="+(urlBreakpoints?urlBreakpoints.length:"NONE")+"\n";
+ FBTrace.sysout(msg);
+ }
+ catch (exc)
+ {
+ FBTrace.sysout("fbs.Failed to give resetBreakpoints trace in url: " + url +
+ " because " + exc + " for urlBreakpoints=", urlBreakpoints);
+ }
+ }
+
+ if (urlBreakpoints)
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.resetBreakpoints total bp=" + urlBreakpoints.length +
+ " for url=" + url);
+
+ fbs.deleteBreakpoints(url);
+
+ for (var i=0; i<urlBreakpoints.length; ++i)
+ {
+ var bp = urlBreakpoints[i];
+ bp = fbs.recordBreakpoint(bp.type, url, bp.lineNo, debuggr, bp, sourceFile);
+
+ if (bp.type & BP_ERROR)
+ {
+ var existingBP = null;
+ fbs.enumerateErrorBreakpoints(url, {call: function checkExisting(url, lineNo, bp)
+ {
+ // An error breakpoint is in this file
+ if (lineNo == bp.lineNo)
+ existingBP = true;
+ }});
+
+ if (!existingBP)
+ errorBreakpoints.push(bp); // TODO implement as hashtable errorBreakpoints[url at lineNo]
+ }
+
+ if (bp.disabled & BP_NORMAL)
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.resetBreakpoints: mark breakpoint disabled: " +
+ bp.lineNo + "@" + sourceFile);
+
+ fbs.disableBreakpoint(url, bp.lineNo);
+ }
+ else
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.resetBreakpoints: "+bp.lineNo+"@"+sourceFile);
+ }
+ }
+ }
+ else
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.resetBreakpoints no breakpoints for "+url);
+ }
+ },
+
+ setJSDBreakpoint: function(sourceFile, bp)
+ {
+ var scripts = sourceFile.getScriptsAtLineNumber(bp.lineNo);
+ if (!scripts)
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.setJSDBreakpoint: NO inner scripts: "+bp.lineNo+"@"+sourceFile);
+
+ if (!sourceFile.outerScript || !sourceFile.outerScript.isValid)
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.setJSDBreakpoint: NO valid outerScript\n");
+ return;
+ }
+
+ scripts = [sourceFile.outerScript];
+ }
+
+ if (!bp.scriptsWithBreakpoint)
+ {
+ bp.scriptsWithBreakpoint = [];
+ bp.pc = [];
+ }
+
+ for (var i=0; i<scripts.length; i++)
+ {
+ var script = scripts[i];
+ if (!script.isValid)
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.setJSDBreakpoint: tag " + script.tag + ", " + i + "/" +
+ scripts.length + " is invalid");
+ continue;
+ }
+
+ var haveScript = false;
+ for (var j=0; j<bp.scriptsWithBreakpoint.length; j++)
+ {
+ if (bp.scriptsWithBreakpoint[j].tag === script.tag)
+ {
+ haveScript = true;
+ break;
+ }
+ }
+
+ if (haveScript)
+ continue;
+
+ var pcmap = sourceFile.pcmap_type;
+ if (!pcmap)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.setJSDBreakpoint pcmap undefined " +
+ sourceFile, sourceFile);
+
+ pcmap = PCMAP_SOURCETEXT;
+ }
+
+ // we subtraced this offset when we showed the user so lineNo is a user line
+ // number; now we need to talk
+ // to jsd its line world
+ var jsdLine = bp.lineNo + sourceFile.getBaseLineOffset();
+ // test script.isLineExecutable(jsdLineNo, pcmap) ??
+
+ var isExecutable = false;
+ try
+ {
+ isExecutable = script.isLineExecutable(jsdLine, pcmap);
+ }
+ catch(e)
+ {
+ // guess not then...
+ }
+
+ if (isExecutable)
+ {
+ var pc = script.lineToPc(jsdLine, pcmap);
+ var pcToLine = script.pcToLine(pc, pcmap); // avoid calling this unless we have to...
+
+ if (pcToLine == jsdLine)
+ {
+ script.setBreakpoint(pc);
+
+ bp.scriptsWithBreakpoint.push(script);
+ bp.pc.push(pc);
+ bp.pcmap = pcmap;
+ bp.jsdLine = jsdLine;
+
+ if (pc == 0) // signal the breakpoint handler to break for user
+ sourceFile.breakOnZero = script.tag;
+
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.setJSDBreakpoint tag: " + script.tag + " line.pc at url=" +
+ bp.lineNo + "." + pc + "@" + sourceFile.href + " using offset:" +
+ sourceFile.getBaseLineOffset() + " jsdLine: " + jsdLine +
+ " pcToLine: " + pcToLine +
+ (isExecutable ? " isExecuable" : " notExecutable"),
+ {sourceFile: sourceFile, script: script});
+ }
+ else
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.setJSDBreakpoint LINE MISMATCH for tag: " +
+ script.tag + " line.pc at url=" + bp.lineNo + "." + pc + "@" +
+ sourceFile.href + " using offset:" + sourceFile.getBaseLineOffset() +
+ " jsdLine: " + jsdLine + " pcToLine: " + pcToLine +
+ (isExecutable ? " isExecuable" : " notExecutable"), sourceFile);
+ }
+ }
+ else
+ {
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.setJSDBreakpoint NOT isExecutable tag: " + script.tag +
+ " jsdLine at url=" + jsdLine + "@" + sourceFile.href + " pcmap:" +
+ pcmap + " baselineOffset:" + sourceFile.getBaseLineOffset(), script);
+ }
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ saveBreakpoints: function(url)
+ {
+ // Do not call fbs.setBreakpoints() it calls us.
+ try
+ {
+ var urlBreakpoints = fbs.getBreakpoints(url);
+
+ if (!urlBreakpoints || !urlBreakpoints.length)
+ {
+ fbs.breakpointStore.removeItem(url);
+ fbs.deleteBreakpoints(url);
+ return;
+ }
+
+ var cleanBPs = [];
+ for(var i = 0; i < urlBreakpoints.length; i++)
+ {
+ var bp = urlBreakpoints[i];
+
+ // Do not store breakpoins for "Run until this line". These are not
+ // visible in Firebug UI and so, it is not possible to remove them.
+ // Note that there can be cases where such breakpoint is not removed
+ // by RunUntil (e.g. crash).
+ if (bp.type == BP_UNTIL)
+ continue;
+
+ var cleanBP = {};
+ for (var p in bp)
+ cleanBP[p] = bp[p];
+
+ delete cleanBP.scriptsWithBreakpoint; // not JSON-able
+ delete cleanBP.pc; // co-indexed with scriptsWithBreakpoint
+ delete cleanBP.debuggerName;
+ cleanBPs.push(cleanBP);
+ }
+
+ fbs.breakpointStore.setItem(url, cleanBPs);
+ }
+ catch (exc)
+ {
+ FBTrace.sysout("fbs.saveBreakpoints ERROR " + exc, exc);
+ }
+ },
+
+ setBreakpoints: function(url, urlBreakpoints)
+ {
+ fbs.breakpoints[url] = urlBreakpoints;
+ fbs.saveBreakpoints(url);
+ },
+
+ getBreakpoints: function(url)
+ {
+ return fbs.breakpoints[url];
+ },
+
+ deleteBreakpoints: function(url)
+ {
+ delete fbs.breakpoints[url];
+ },
+
+ getBreakpointURLs: function()
+ {
+ var breakpointStore = this.getBreakpointStore();
+ if (!breakpointStore)
+ return [];
+
+ return breakpointStore.getKeys();
+ },
+
+ getBreakpointStore: function()
+ {
+ if (this.breakpointStore)
+ return this.breakpointStore;
+
+ try
+ {
+ Components.utils.import("resource://firebug/storageService.js");
+
+ if (typeof(StorageService) != "undefined")
+ {
+ this.breakpointStore = StorageService.getStorage("breakpoints.json");
+ }
+ else
+ {
+ ERROR("firebug-service breakpoint StorageService ERROR");
+
+ this.breakpointStore =
+ {
+ setItem: function(){},
+ removeItem: function(){},
+ getKeys: function(){return [];},
+ clear: function(){},
+ };
+ }
+
+ return this.breakpointStore;
+ }
+ catch(exc)
+ {
+ // Throws another exception since fbs is null.
+ //ERROR("firebug-service restoreBreakpoints ERROR "+exc);
+
+ // xxxHonza: why I can't see this log in the Tracing Console?
+ FBTrace.sysout("fbs.restoreBreakpoints ERROR " + exc, exc);
+ }
+ },
+
+ restoreBreakpoints: function()
+ {
+ this.breakpoints = {};
+
+ var breakpointStore = fbs.getBreakpointStore();
+ if (!breakpointStore)
+ return;
+
+ var urls = fbs.getBreakpointURLs();
+ for (var i=0; i<urls.length; i++)
+ {
+ var url = urls[i];
+ var bps = breakpointStore.getItem(url);
+
+ // Do not restore "Run unit this line" breakpoints. This should solve complaints
+ // about Firebug breaking in the source even if there are no breakpoints in
+ // Firebug UI.
+ if (bps.type == BP_UNTIL)
+ continue;
+
+ this.breakpoints[url] = bps;
+
+ for (var j=0; j<bps.length; j++)
+ {
+ var bp = bps[j];
+ if (bp.condition)
+ ++conditionCount;
+ if (bp.disabled)
+ ++disabledCount;
+ if (bp.type & BP_MONITOR)
+ ++monitorCount;
+ }
+ }
+
+ if (FBTrace.DBG_FBS_BP)
+ {
+ FBTrace.sysout("fbs.restoreBreakpoints "+urls.length+", disabledCount:"+disabledCount+
+ " monitorCount:"+monitorCount+" conditionCount:"+conditionCount+", restored ",
+ this.breakpoints);
+
+ for (var p in this.breakpoints)
+ FBTrace.sysout("fbs.restoreBreakpoints restored "+p+" condition "+
+ this.breakpoints[p].condition);
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // When (debugger keyword and not halt)||(bp and BP_UNTIL) || (onBreakPoint && no conditions)
+ // || interuptHook (single stepping).
+ // rv is ignored
+ routeBreakToDebuggr: function(frame, type, rv, stepStayOnDebuggr)
+ {
+ try
+ {
+ // avoid step_out from web page to chrome
+ if (stepStayOnDebuggr)
+ {
+ var debuggr = this.reFindDebugger(frame, stepStayOnDebuggr);
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs.routeBreakToDebuggr type="+getExecutionStopNameFromType(type)+
+ " stepStayOnDebuggr "+stepStayOnDebuggr+" debuggr:"+(debuggr?debuggr:"null"));
+
+ if (!debuggr) // then the frame is not for our debugger
+ return RETURN_CONTINUE; // This means that we will continue to take interrupts until when?
+ }
+ else
+ {
+ var debuggr = this.findDebugger(frame);
+
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs.routeBreakToDebuggr type="+getExecutionStopNameFromType(type)+
+ " debuggr:"+(debuggr?debuggr:"null"));
+ }
+
+ if (debuggr)
+ return this.breakIntoDebugger(debuggr, frame, type);
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.routeBreakToDebuggr failed: "+exc,exc);
+ ERROR("routeBreakToDebuggr failed: "+exc, exc);
+ }
+
+ return RETURN_CONTINUE;
+ },
+
+ breakIntoDebugger: function(debuggr, frame, type)
+ {
+ if (FBTrace.DBG_FBS_STEP || FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.breakIntoDebugger called "+debuggr.debuggerName+
+ " fbs.isChromeBlocked:"+fbs.isChromeBlocked);
+
+ // Before we break, clear information about previous stepping session
+ this.stopStepping(frame);
+
+ // Break into the debugger - execution will stop here until the user resumes
+ var returned;
+ try
+ {
+ var debuggr = this.reFindDebugger(frame, debuggr);
+ returned = debuggr.onBreak(frame, type);
+ }
+ catch (exc)
+ {
+ ERROR("breakIntoDebugger ERROR "+exc, exc);
+ returned = RETURN_CONTINUE;
+ }
+
+ // Execution resumes now. Check if the user requested stepping and if so
+ // install the necessary hooks
+ this.startStepping(frame);
+
+ if (FBTrace.DBG_FBS_STEP || FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.breakIntoDebugger returning "+returned+" from "+
+ debuggr.debuggerName+" with jsd.pauseDepth "+jsd.pauseDepth+" and functionHook "+
+ jsd.functionHook);
+
+ return returned;
+ },
+
+ needToBreakForError: function(reportNextError)
+ {
+ return this.breakOnErrors || fbs.breakOnDebugCall;
+ },
+
+ // debuggr calls us to stage stepping
+ step: function(mode, context, debuggr)
+ {
+ var stepper;
+
+ if (mode === STEP_INTO)
+ stepper = new IntoStepper(debuggr, context);
+ else if (mode === STEP_OVER)
+ stepper = new LineStepper(debuggr, context);
+ else if (mode === STEP_OUT)
+ stepper = new OutStepper(debuggr, context);
+
+ if (stepper)
+ jsdHandlers.add(stepper);
+ else
+ ERROR("fbs.step ERROR unknown mode "+mode);
+
+ // The actual stepping starts after we resume the debuggger. Stepping is always
+ // done when the execution/debugger is paused, so we need to resume and break e.g.
+ // on the next line.
+ },
+
+ startStepping: function(frame) // if needed
+ {
+ jsdHandlers.hook(frame);
+ },
+
+ stopStepping: function(frame, context)
+ {
+ jsdHandlers.unhook(frame);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Hook Interupts
+
+ hookInterrupts: function(frame)
+ {
+ // TODO move the try code in hook() to dispatch
+ jsd.interruptHook = { onExecute: hook(this.onInterrupt, RETURN_CONTINUE)};
+
+ if (frame)
+ ScriptInterrupter.enable(frame.script);
+
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs.set InterruptHook frame.script.tag: "+
+ (frame?frame.script.tag:"<no frame>"), ScriptInterrupter);
+ },
+
+ onInterrupt: function(frame, type, rv)
+ {
+ return jsdHandlers.dispatch("onInterrupt", frame, type);
+ },
+
+ unhookInterrupts: function(frame)
+ {
+ jsd.interruptHook = null;
+
+ ScriptInterrupter.disableAll();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Hook Functions
+
+ hookFunctions: function()
+ {
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs.set functionHook");
+
+ jsd.functionHook = { onCall: hook(this.onFunction, true) };
+ jsd.topLevelHook = { onCall: hook(this.onFunction, true) };
+ },
+
+ onFunction: function(frame, type) // called in try/catch block with this === fbs
+ {
+ switch (type)
+ {
+ case TYPE_TOPLEVEL_START: // fall through
+ case TYPE_FUNCTION_CALL: // the frame will be running the called script
+ {
+ jsdHandlers.dispatch("onFunctionCall", frame, shiftCallType(type));
+ break;
+ }
+ case TYPE_TOPLEVEL_END: // fall through
+ case TYPE_FUNCTION_RETURN: // the frame will be running the called script
+ {
+ jsdHandlers.dispatch("onFunctionReturn", frame, shiftCallType(type));
+ break;
+ }
+ }
+ },
+
+ unhookFunctions: function()
+ {
+ jsd.functionHook = null;
+ jsd.topLevelHook = null;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Hook Scripts
+
+ hookScripts: function()
+ {
+ if (FBTrace.DBG_FBS_STEP || FBTrace.DBG_FBS_TRACKFILES)
+ FBTrace.sysout("fbs.set scriptHook\n");
+
+ jsd.scriptHook = {
+ onScriptCreated: hook(this.onScriptCreated),
+ onScriptDestroyed: hook(this.onScriptDestroyed)
+ };
+
+ if (fbs.filterSystemURLs)
+ fbs.removeChromeBlockingFilters();
+
+ jsd.clearFilters();
+
+ if (fbs.filterSystemURLs)
+ fbs.setChromeBlockingFilters();
+
+ jsd.debuggerHook = { onExecute: hook(this.onDebugger, RETURN_CONTINUE) };
+ jsd.debugHook = { onExecute: hook(this.onDebug, RETURN_CONTINUE) };
+ jsd.breakpointHook = { onExecute: hook(this.onBreakpoint, RETURN_CONTINUE) };
+ jsd.throwHook = { onExecute: hook(this.onThrow, RETURN_CONTINUE_THROW) };
+ jsd.errorHook = { onError: hook(this.onError, true) };
+ },
+
+ unhookScripts: function()
+ {
+ jsd.scriptHook = null;
+ fbs.removeChromeBlockingFilters();
+
+ if (FBTrace.DBG_FBS_STEP || FBTrace.DBG_FBS_TRACKFILES)
+ FBTrace.sysout("fbs.unset scriptHook\n");
+ },
+
+ // TODO rewrite as a Stepper
+ // xxxJJB: perhaps xxxHonza could implement the stepper, but what the code is responsible for?
+ // xxxhonza: traceAll and trace a function. I don't think these work anyway, a good start is to remove the old code.
+ hookCalls: function(callBack, unhookAtBottom)
+ {
+ var contextCached = null;
+
+ function callHook(frame, type)
+ {
+ switch (type)
+ {
+ case TYPE_FUNCTION_CALL:
+ {
+ ++hookFrameCount;
+
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs.callHook TYPE_FUNCTION_CALL "+frame.script.fileName);
+
+ contextCached = callBack(contextCached, frame, hookFrameCount, true);
+
+ break;
+ }
+ case TYPE_FUNCTION_RETURN:
+ {
+ if (hookFrameCount <= 0) // ignore returns until we have started back in
+ return;
+
+ --hookFrameCount;
+
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs.functionHook TYPE_FUNCTION_RETURN " +
+ frame.script.fileName);
+
+ // stack empty
+ if (unhookAtBottom && hookFrameCount == 0)
+ fbs.unhookFunctions();
+
+ contextCached = callBack(contextCached, frame, hookFrameCount, false);
+ break;
+ }
+ }
+ }
+
+ if (jsd.functionHook)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.hookCalls cannot set functionHook, one is already set");
+ return;
+ }
+
+ if (FBTrace.DBG_FBS_STEP)
+ FBTrace.sysout("fbs.set callHook");
+
+ hookFrameCount = 0;
+ jsd.functionHook = { onCall: callHook };
+ },
+
+ getJSD: function()
+ {
+ return jsd; // for debugging fbs
+ },
+
+ dumpFileTrack: function(moreFiles)
+ {
+ if (moreFiles)
+ trackFiles.merge(moreFiles);
+ trackFiles.dump();
+ },
+};
+
+// ********************************************************************************************* //
+// Script Interrupt Manager
+
+var ScriptInterrupter =
+{
+ entries: {},
+
+ enable: function(script)
+ {
+ if (!script.enableSingleStepInterrupts)
+ return;
+
+ if (this.entries[script.tag])
+ return;
+
+ try
+ {
+ script.enableSingleStepInterrupts(true);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("fbs.ScriptInterrupter.enable; EXCEPTION");
+ }
+
+ this.entries[script.tag] = {
+ script: script
+ };
+ },
+
+ disable: function(script)
+ {
+ if (!script.enableSingleStepInterrupts)
+ return;
+
+ var entry = this.entries[script.tag];
+ if (!entry)
+ return;
+
+ try
+ {
+ script.enableSingleStepInterrupts(false);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("fbs.ScriptInterrupter.disable; EXCEPTION");
+ }
+
+ delete this.entries[script.tag];
+ },
+
+ disableAll: function()
+ {
+ for (var tag in this.entries)
+ {
+ var entry = this.entries[tag];
+ if (!entry.script.enableSingleStepInterrupts)
+ return;
+
+ try
+ {
+ entry.script.enableSingleStepInterrupts(false);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("fbs.ScriptInterrupter.disable; EXCEPTION");
+ }
+ }
+
+ this.entries = {};
+ }
+};
+
+// ********************************************************************************************* //
+// Local Helpers
+
+function getStepName(mode)
+{
+ if (mode == STEP_OVER)
+ return "STEP_OVER";
+
+ if (mode == STEP_INTO)
+ return "STEP_INTO";
+
+ if (mode == STEP_OUT)
+ return "STEP_OUT";
+
+ if (mode == STEP_SUSPEND)
+ return "STEP_SUSPEND";
+
+ return "(not a step mode)";
+}
+
+// called by enumerateScripts, onThrow, onDebug, onScriptCreated/Destroyed.
+function isFilteredURL(rawJSD_script_filename)
+{
+ if (!rawJSD_script_filename)
+ return true;
+ if (fbs.filterConsoleInjections)
+ return true;
+ if (rawJSD_script_filename[0] == 'h')
+ return false;
+ if (rawJSD_script_filename == "XPCSafeJSObjectWrapper.cpp")
+ return true;
+ if (rawJSD_script_filename === "debugger eval code")
+ return true;
+ if (fbs.filterSystemURLs)
+ return systemURLStem(rawJSD_script_filename);
+
+ for (var i=0; i<fbs.alwayFilterURLsStarting.length; i++)
+ {
+ if (rawJSD_script_filename.indexOf(fbs.alwayFilterURLsStarting[i]) != -1)
+ return true;
+ }
+
+ return false;
+}
+
+function systemURLStem(rawJSD_script_filename)
+{
+ // attempt to optimize stream of similar urls
+ if (this.url_class)
+ {
+ if (rawJSD_script_filename.substr(0, this.url_class.length) == this.url_class)
+ return this.url_class;
+ }
+
+ this.url_class = deepSystemURLStem(rawJSD_script_filename);
+ return this.url_class;
+}
+
+function deepSystemURLStem(rawJSD_script_filename)
+{
+ for (var i=0; i<urlFilters.length; ++i)
+ {
+ var filter = urlFilters[i];
+ if ( rawJSD_script_filename.substr(0,filter.length) == filter )
+ return filter;
+ }
+
+ for (var i=0; i<COMPONENTS_FILTERS.length; ++i)
+ {
+ if (COMPONENTS_FILTERS[i].test(rawJSD_script_filename))
+ {
+ var match = COMPONENTS_FILTERS[i].exec(rawJSD_script_filename);
+ urlFilters.push(match[1]); // cache this for future calls
+ return match[1];
+ }
+ }
+
+ return false;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+function dispatch(listeners, name, args)
+{
+ var totalListeners = listeners.length;
+ for (var i=0; i<totalListeners; ++i)
+ {
+ var listener = listeners[i];
+ if (listener.hasOwnProperty(name) && listener[name])
+ listener[name].apply(listener, args);
+ }
+
+ //if (FBTrace.DBG_FBS_ERRORS)
+ // FBTrace.sysout("fbs.dispatch "+name+" to "+listeners.length+" listeners");
+}
+
+function hook(fn, rv)
+{
+ return function()
+ {
+ try
+ {
+ return fn.apply(fbs, arguments);
+ }
+ catch (exc)
+ {
+ var msg = "Error in hook: "+ exc;
+ ERROR(msg, exc);
+ return rv;
+ }
+ };
+}
+
+var lastWindowScope = null;
+function wrapIfNative(obj)
+{
+ try
+ {
+ if (obj instanceof Ci.nsISupports)
+ return XPCNativeWrapper(obj);
+ else
+ return obj;
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.wrapIfNative FAILED: "+exc, obj);
+ }
+}
+
+function getRootWindow(win)
+{
+ for (; win; win = win.parent)
+ {
+ if (!win.parent || win == win.parent || !(win.parent instanceof Window))
+ return win;
+ }
+ return null;
+}
+
+function countFrames(frame)
+{
+ var frameCount = 0;
+ try
+ {
+ for (; frame; frame = frame.callingFrame)
+ ++frameCount;
+ }
+ catch(exc)
+ {
+ }
+
+ return frameCount;
+}
+
+function framesToString(frame)
+{
+ var str = "";
+ while (frame)
+ {
+ str += frameToString(frame)+"\n";
+ frame = frame.callingFrame;
+ }
+
+ return str;
+}
+
+function frameToString(frame)
+{
+ if (!frame)
+ return "< no frame >";
+
+ if (!frame.script)
+ {
+ ERROR("frameToString bad frame "+typeof(frame), frame);
+ return "<bad frame>";
+ }
+
+ return frame.script.tag+" in "+frame.script.fileName+"@"+frame.line+"(pc="+frame.pc+")";
+}
+
+function dumpComponentsStack(from)
+{
+ var msg = [];
+ for (var frame = Components.stack; frame; frame = frame.caller)
+ msg.push( {desc:frame.filename + "@" + frame.lineNumber +": "+
+ frame.sourceLine,frame:frame} );
+
+ FBTrace.sysout("fbs." + from + " has stack size:" + msg.length, msg);
+}
+
+function testBreakpoint(frame, bp)
+{
+ if (FBTrace.DBG_FBS_BP)
+ FBTrace.sysout("fbs.testBreakpoint "+bp.condition, bp);
+
+ if (bp.condition && bp.condition != "")
+ {
+ var result = {};
+ frame.scope.refresh();
+
+ // ugly hack for closure getter syntax
+ // (see also transformedCondition elsewhere in the code)
+ var cond = bp.condition;
+ if (cond.indexOf(".%") !== -1)
+ {
+ var frameScopeRoot = fbs.getOutermostScope(frame);
+ if (frameScopeRoot)
+ {
+ if (bp.transformedCondition && "__fb_scopedVars" in frameScopeRoot.wrappedJSObject)
+ {
+ // Fast path: everything is already prepared for us.
+ cond = bp.transformedCondition;
+ }
+ else
+ {
+ var debuggr = fbs.findDebugger(frame);
+ var context = debuggr.breakContext;
+ delete debuggr.breakContext;
+
+ cond = debuggr._temporaryTransformSyntax(cond, frameScopeRoot, context);
+ bp.transformedCondition = cond;
+ }
+ }
+ }
+
+ if (frame.eval(cond, "", 1, result))
+ {
+ if (bp.onTrue)
+ {
+ if (!result.value.booleanValue)
+ return false;
+ }
+ else
+ {
+ var value = unwrapIValue(result.value);
+ if (typeof bp.lastValue == "undefined")
+ {
+ bp.lastValue = value;
+ return false;
+ }
+ else
+ {
+ if (bp.lastValue == value)
+ return false;
+ bp.lastValue = value;
+ }
+ }
+ }
+ }
+
+ ++bp.hit;
+
+ if (bp.hitCount > 0)
+ {
+ if (bp.hit < bp.hitCount)
+ return false;
+ }
+
+ return true;
+}
+
+function remove(list, item)
+{
+ var index = list.indexOf(item);
+ if (index != -1)
+ list.splice(index, 1);
+}
+
+function unwrapIValue(object)
+{
+ var unwrapped = object.getWrappedValue();
+ try
+ {
+ if (unwrapped)
+ return XPCSafeJSObjectWrapper(unwrapped);
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("fbs.unwrapIValue ERROR for "+object,
+ {exc: exc, object: object, unwrapped: unwrapped});
+ }
+}
+
+// ********************************************************************************************* //
+// Preferences
+
+var FirebugPrefsObserver =
+{
+ syncFilter: function()
+ {
+ var filter = fbs.scriptsFilter;
+ fbs.showEvents = (filter == "all" || filter == "events");
+ fbs.showEvals = (filter == "all" || filter == "evals");
+
+ if (FBTrace.DBG_OPTIONS)
+ FBTrace.sysout("fbs.showEvents "+fbs.showEvents+" fbs.showEvals "+fbs.showEvals);
+ }
+};
+
+// ********************************************************************************************* //
+// Application Observers
+
+var QuitApplicationGrantedObserver =
+{
+ observe: function(subject, topic, data)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.QuitApplicationGrantedObserver " + topic + " start");
+ }
+};
+
+var QuitApplicationRequestedObserver =
+{
+ observe: function(subject, topic, data)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.QuitApplicationRequestedObserver " + topic);
+ }
+};
+
+var QuitApplicationObserver =
+{
+ observe: function(subject, topic, data)
+ {
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.QuitApplicationObserver " + topic);
+
+ fbs.disableDebugger();
+ fbs.shutdown();
+ fbs = null;
+
+ if (FBTrace.DBG_FBS_ERRORS)
+ FBTrace.sysout("fbs.QuitApplicationObserver " + topic + " end");
+ }
+};
+
+// ********************************************************************************************* //
+// Console Service
+
+// xxxJJB: Support for console logging could be moved into separate module, correct?
+
+var consoleService = null;
+
+function ERROR(text, exc)
+{
+ if (!consoleService)
+ consoleService = ConsoleService.getService(nsIConsoleService);
+
+ try
+ {
+ fbs.unhookInterrupts(); // Stop and clear everything
+ fbs.unhookFunctions();
+ fbs.disableDebugger();
+ jsdHandlers.list = [];
+ consoleService.logStringMessage("ERROR: "+text);
+
+ var frame = Components.stack;
+ frame = frame.caller; // drop this frame we are in now.
+ for ( ; frame; frame = frame.caller)
+ consoleService.logStringMessage(frame.filename + "@" + frame.lineNumber + ";");
+
+ FBTrace.sysout(text, exc);
+ }
+ catch(exc)
+ {
+ var msg = exc.toString() +" "+(exc.fileName || exc.sourceName) + "@" + exc.lineNumber;
+ Cu.reportError("firebug-service ERROR in ERROR: "+msg);
+ }
+ finally
+ {
+ fbs.enableDebugger(); // we were enabled to get ERROR, so we hope all is cleared up now.
+ }
+}
+
+function getExecutionStopNameFromType(type)
+{
+ switch (type)
+ {
+ case jsdIExecutionHook.TYPE_INTERRUPTED: return "interrupted";
+ case jsdIExecutionHook.TYPE_BREAKPOINT: return "breakpoint";
+ case jsdIExecutionHook.TYPE_DEBUG_REQUESTED: return "debug requested";
+ case jsdIExecutionHook.TYPE_DEBUGGER_KEYWORD: return "debugger_keyword";
+ case jsdIExecutionHook.TYPE_THROW: return "interrupted";
+ default: return "unknown("+type+")";
+ }
+}
+
+function getCallFromType(type)
+{
+ var typeName = type;
+ switch(type)
+ {
+ case TYPE_FUNCTION_RETURN: { typeName = "FUNCTION_RETURN"; break; }
+ case TYPE_FUNCTION_CALL: { typeName = "FUNCTION_CALL"; break; }
+ case TYPE_TOPLEVEL_START: { typeName = "TOPLEVEL_START"; break; }
+ case TYPE_TOPLEVEL_END: { typeName = "TOPLEVEL_END"; break; }
+ }
+ return typeName;
+}
+
+function shiftCallType(type)
+{
+ return type + 10;
+}
+
+// ********************************************************************************************* //
+// Chromebug Tracing
+
+// xxxJJB, shouldn't the following code be part of Chromebug (could be done as part of splitting
+// this file into more modules?)
+// xxxhonza, yes
+
+function getTmpFile()
+{
+ var file = Components.classes["@mozilla.org/file/directory_service;1"].
+ getService(Components.interfaces.nsIProperties).
+ get("TmpD", Components.interfaces.nsIFile);
+ file.append("fbs.tmp");
+ file.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0666);
+
+ FBTrace.sysout("fbs.opened tmp file "+file.path);
+
+ return file;
+}
+
+function getTmpStream(file)
+{
+ // file is nsIFile, data is a string
+ var foStream = Cc["@mozilla.org/network/file-output-stream;1"].
+ createInstance(Ci.nsIFileOutputStream);
+
+ // use 0x02 | 0x10 to open file for appending.
+ foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0);
+ // write, create, truncate
+ // In a c file operation, we have no need to set file mode with or operation,
+ // directly using "r" or "w" usually.
+
+ return foStream;
+}
+
+var trackFiles =
+{
+ allFiles: {},
+
+ add: function(fileName)
+ {
+ var name = new String(fileName);
+ this.allFiles[name] = [];
+ },
+
+ drop: function(fileName)
+ {
+ var name = new String(fileName);
+ this.allFiles[name].push("dropped");
+ },
+
+ def: function(frame)
+ {
+ var frameGlobal = fbs.getOutermostScope(frame);
+ var scope = frame.scope;
+ if (scope)
+ {
+ while(scope.jsParent)
+ scope = scope.jsParent;
+ }
+
+ var scopeName = fbs.getLocationSafe(frameGlobal);
+ if (!scopeName)
+ scopeName = frameGlobal + "";
+
+ scopeName = scope.jsClassName + ": "+scopeName;
+
+ var name = new String(frame.script.fileName);
+ if (!(name in this.allFiles))
+ this.allFiles[name]=["not added"];
+
+ this.allFiles[name].push(scopeName);
+ },
+
+ merge: function(moreFiles)
+ {
+ for (var p in moreFiles)
+ {
+ if (p in this.allFiles)
+ this.allFiles[p] = this.allFiles[p].concat(moreFiles[p]);
+ else
+ this.allFiles[p] = moreFiles[p];
+ }
+ },
+
+ dump: function()
+ {
+ var n = 0;
+ for (var p in this.allFiles)
+ {
+ tmpout( (++n) + ") "+p);
+ var where = this.allFiles[p];
+ if (where.length > 0)
+ {
+ for (var i = 0; i < where.length; i++)
+ tmpout(", "+where[i]);
+ tmpout("\n");
+ }
+ else
+ {
+ tmpout(" none\n");
+ }
+ }
+ },
+};
+
+function tmpout(text)
+{
+ if (!fbs.foStream)
+ fbs.foStream = getTmpStream(getTmpFile());
+
+ fbs.foStream.write(text, text.length);
+}
+
+// ********************************************************************************************* //
+// Initialization
+
+fbs.initialize();
+
+// ********************************************************************************************* //
diff --git a/modules/firebug-trace-service.js b/modules/firebug-trace-service.js
index 03944d8..fa0e026 100644
--- a/modules/firebug-trace-service.js
+++ b/modules/firebug-trace-service.js
@@ -1,289 +1,289 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-const Cu = Components.utils;
-
-var EXPORTED_SYMBOLS = ["traceConsoleService"];
-
-const PrefService = Cc["@mozilla.org/preferences-service;1"];
-const prefs = PrefService.getService(Ci.nsIPrefBranch);
-const prefService = PrefService.getService(Ci.nsIPrefService);
-
-Cu["import"]("resource://gre/modules/XPCOMUtils.jsm");
-Cu["import"]("resource://gre/modules/Services.jsm");
-Cu["import"]("resource://gre/modules/AddonManager.jsm");
-
-// xxxHonza: could we remove some of them?
-var TraceAPI = ["dump", "sysout", "matchesNode", "time", "timeEnd"];
-
-// ********************************************************************************************* //
-// Service Implementation
-
-try
-{
- Cu["import"]("resource://fbtrace/firebug-trace-service.js");
-}
-catch (err)
-{
- // Tracing Console is not available yet, let's use a fake one.
- var traceConsoleService =
- {
- tracers: {},
-
- getTracer: function(prefDomain)
- {
- var tracer = this.tracers[prefDomain];
- if (tracer)
- return tracer;
-
- var enabledAddons = decodeURIComponent(getCharPref("extensions", "enabledAddons"));
- if (enabledAddons.indexOf("fbtrace at getfirebug.com:") >= 0)
- {
- // Solution with built-in buffer for logs created before console is ready.
- var wrapper = new TracerWrapper(prefDomain);
- tracer = wrapper.createTracer();
- }
- else
- {
- // Simple empty implementation for cases where Firebug Tracing Console
- // is not even installed or 'alwaysOpenTraceConsole' is set to false.
- tracer = {};
- for (var i=0; i<TraceAPI.length; i++)
- tracer[TraceAPI[i]] = function() {};
- }
-
- this.tracers[prefDomain] = tracer;
- return tracer;
- }
- };
-}
-
-// ********************************************************************************************* //
-// Tracer Wrapper
-
-/**
- * Trace Wrapper represents a temporary Trace object that is used till the real Tracing
- * Console is opened and available to use. Trace Wrapper implements a buffer that
- * collects all logs and flushes them as intot the real console as soon as it's ready.
- *
- * In order to use this functionality, you need to set:
- * 'extensions.firebug.alwaysOpenTraceConsole' to true
- *
- * @param {Object} prefDomain Associated pref domain. Usually 'extensions.firebug'
- */
-function TracerWrapper(prefDomain)
-{
- this.prefDomain = prefDomain;
-}
-
-TracerWrapper.prototype =
-{
- // Temporary trace object
- tracer: null,
-
- // Buffer with logs used till the Tracing Console UI is available
- queue: [],
-
- // The real tracing console tracer object.
- FBTrace: null,
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Tracer
-
- createTracer: function()
- {
- var self = this;
-
- this.addObserver();
-
- // Default FBTrace implementation puts all calls in a buffer.
- // It'll be used as soon as the console is ready.
- function createHandler(method)
- {
- return function() {
- self.push(method, arguments);
- };
- };
-
- // Fake FBTrace object
- this.tracer = {};
-
- // Dynamically create APIs.
- for (var i=0; i<TraceAPI.length; i++)
- {
- var method = TraceAPI[i];
- this.tracer[method] = createHandler(method);
- }
-
- var branch = prefService.getBranch(this.prefDomain);
- var arrayDesc = {};
-
- // Set options from preferences.
- var children = branch.getChildList("", arrayDesc);
- for (var i=0; i<children.length; i++)
- {
- var name = children[i];
- var m = name.indexOf("DBG_");
- if (m != -1)
- {
- var optionName = name.substr(1); // drop leading .
- this.tracer[optionName] = getBoolPref(this.prefDomain, optionName);
- }
- }
-
- // Create FBTrace proxy. As soon as FBTrace console is available it'll forward
- // all calls to it.
- return Proxy.create(
- {
- get: function(target, name)
- {
- return self.FBTrace ? self.FBTrace[name] : self.tracer[name];
- },
-
- set: function(target, name, value)
- {
- if (self.FBTrace)
- self.FBTrace[name] = value;
- else
- self.tracer[name] = value;
-
- return true;
- },
- });
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Buffer
-
- push: function(method, args)
- {
- if (!this.queue)
- return;
-
- this.queue.push({
- method: method,
- args: args,
- });
-
- // Size of the buffer is limited.
- while (this.queue.length > 1000)
- this.queue.pop();
- },
-
- clearBuffer: function()
- {
- this.queue = null;
- },
-
- flush: function()
- {
- if (!this.FBTrace || !this.queue)
- return;
-
- if (this.queue.length > 0)
- this.FBTrace.sysout("FBTrace: flush " + this.queue.length + " buffered logs:");
-
- for (var i=0; i<this.queue.length; i++)
- {
- var call = this.queue[i];
- this.FBTrace[call.method].apply(this.FBTrace, call.args);
- }
-
- this.clearBuffer();
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // FBTrace Console Observer
-
- addObserver: function()
- {
- // Listen for new windows, Firebug must be loaded into them too.
- Services.obs.addObserver(this, "chrome-document-global-created", false);
- },
-
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
- observe: function windowWatcher(win, topic, data)
- {
- // xxxHonza: the window should be associated with the same prefDomain.
- if (win.location.href == "chrome://fbtrace/content/traceLogFrame.html")
- {
- var self = this;
-
- // https://bugzil.la/795961 ?
- win.addEventListener("load", function onLoad(evt)
- {
- // load listener not necessary once https://bugzil.la/800677 is fixed
- var win = evt.currentTarget;
- win.removeEventListener("load", onLoad, false);
-
- self.initFBTrace(self.prefDomain);
- }, false);
- }
- },
-
- initFBTrace: function()
- {
- if (this.FBTrace)
- return this.FBTrace;
-
- try
- {
- var scope = {};
- Cu.import("resource://fbtrace/firebug-trace-service.js", scope);
- this.FBTrace = scope.traceConsoleService.getTracer(this.prefDomain);
-
- // FBTrace Console is ready let's flush the log buffer.
- this.flush();
- }
- catch (err)
- {
- }
- }
-};
-
-// ********************************************************************************************* //
-// Helpers
-
-function getStackDump()
-{
- var lines = [];
- for (var frame = Components.stack; frame; frame = frame.caller)
- lines.push(frame.filename + " (" + frame.lineNumber + ")");
-
- return lines.join("\n");
-};
-
-function getBoolPref(prefDomain, name)
-{
- try
- {
- var prefName = prefDomain + "." + name;
- return prefs.getBoolPref(prefName);
- }
- catch (err)
- {
- }
-
- return false;
-}
-
-function getCharPref(prefDomain, name)
-{
- try
- {
- var prefName = prefDomain + "." + name;
- return prefs.getCharPref(prefName);
- }
- catch (err)
- {
- }
-
- return false;
-}
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+const Cu = Components.utils;
+
+var EXPORTED_SYMBOLS = ["traceConsoleService"];
+
+const PrefService = Cc["@mozilla.org/preferences-service;1"];
+const prefs = PrefService.getService(Ci.nsIPrefBranch);
+const prefService = PrefService.getService(Ci.nsIPrefService);
+
+Cu["import"]("resource://gre/modules/XPCOMUtils.jsm");
+Cu["import"]("resource://gre/modules/Services.jsm");
+Cu["import"]("resource://gre/modules/AddonManager.jsm");
+
+// xxxHonza: could we remove some of them?
+var TraceAPI = ["dump", "sysout", "matchesNode", "time", "timeEnd"];
+
+// ********************************************************************************************* //
+// Service Implementation
+
+try
+{
+ Cu["import"]("resource://fbtrace/firebug-trace-service.js");
+}
+catch (err)
+{
+ // Tracing Console is not available yet, let's use a fake one.
+ var traceConsoleService =
+ {
+ tracers: {},
+
+ getTracer: function(prefDomain)
+ {
+ var tracer = this.tracers[prefDomain];
+ if (tracer)
+ return tracer;
+
+ var enabledAddons = decodeURIComponent(getCharPref("extensions", "enabledAddons"));
+ if (enabledAddons.indexOf("fbtrace at getfirebug.com:") >= 0)
+ {
+ // Solution with built-in buffer for logs created before console is ready.
+ var wrapper = new TracerWrapper(prefDomain);
+ tracer = wrapper.createTracer();
+ }
+ else
+ {
+ // Simple empty implementation for cases where Firebug Tracing Console
+ // is not even installed or 'alwaysOpenTraceConsole' is set to false.
+ tracer = {};
+ for (var i=0; i<TraceAPI.length; i++)
+ tracer[TraceAPI[i]] = function() {};
+ }
+
+ this.tracers[prefDomain] = tracer;
+ return tracer;
+ }
+ };
+}
+
+// ********************************************************************************************* //
+// Tracer Wrapper
+
+/**
+ * Trace Wrapper represents a temporary Trace object that is used till the real Tracing
+ * Console is opened and available to use. Trace Wrapper implements a buffer that
+ * collects all logs and flushes them as intot the real console as soon as it's ready.
+ *
+ * In order to use this functionality, you need to set:
+ * 'extensions.firebug.alwaysOpenTraceConsole' to true
+ *
+ * @param {Object} prefDomain Associated pref domain. Usually 'extensions.firebug'
+ */
+function TracerWrapper(prefDomain)
+{
+ this.prefDomain = prefDomain;
+}
+
+TracerWrapper.prototype =
+{
+ // Temporary trace object
+ tracer: null,
+
+ // Buffer with logs used till the Tracing Console UI is available
+ queue: [],
+
+ // The real tracing console tracer object.
+ FBTrace: null,
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Tracer
+
+ createTracer: function()
+ {
+ var self = this;
+
+ this.addObserver();
+
+ // Default FBTrace implementation puts all calls in a buffer.
+ // It'll be used as soon as the console is ready.
+ function createHandler(method)
+ {
+ return function() {
+ self.push(method, arguments);
+ };
+ };
+
+ // Fake FBTrace object
+ this.tracer = {};
+
+ // Dynamically create APIs.
+ for (var i=0; i<TraceAPI.length; i++)
+ {
+ var method = TraceAPI[i];
+ this.tracer[method] = createHandler(method);
+ }
+
+ var branch = prefService.getBranch(this.prefDomain);
+ var arrayDesc = {};
+
+ // Set options from preferences.
+ var children = branch.getChildList("", arrayDesc);
+ for (var i=0; i<children.length; i++)
+ {
+ var name = children[i];
+ var m = name.indexOf("DBG_");
+ if (m != -1)
+ {
+ var optionName = name.substr(1); // drop leading .
+ this.tracer[optionName] = getBoolPref(this.prefDomain, optionName);
+ }
+ }
+
+ // Create FBTrace proxy. As soon as FBTrace console is available it'll forward
+ // all calls to it.
+ return Proxy.create(
+ {
+ get: function(target, name)
+ {
+ return self.FBTrace ? self.FBTrace[name] : self.tracer[name];
+ },
+
+ set: function(target, name, value)
+ {
+ if (self.FBTrace)
+ self.FBTrace[name] = value;
+ else
+ self.tracer[name] = value;
+
+ return true;
+ },
+ });
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Buffer
+
+ push: function(method, args)
+ {
+ if (!this.queue)
+ return;
+
+ this.queue.push({
+ method: method,
+ args: args,
+ });
+
+ // Size of the buffer is limited.
+ while (this.queue.length > 1000)
+ this.queue.pop();
+ },
+
+ clearBuffer: function()
+ {
+ this.queue = null;
+ },
+
+ flush: function()
+ {
+ if (!this.FBTrace || !this.queue)
+ return;
+
+ if (this.queue.length > 0)
+ this.FBTrace.sysout("FBTrace: flush " + this.queue.length + " buffered logs:");
+
+ for (var i=0; i<this.queue.length; i++)
+ {
+ var call = this.queue[i];
+ this.FBTrace[call.method].apply(this.FBTrace, call.args);
+ }
+
+ this.clearBuffer();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // FBTrace Console Observer
+
+ addObserver: function()
+ {
+ // Listen for new windows, Firebug must be loaded into them too.
+ Services.obs.addObserver(this, "chrome-document-global-created", false);
+ },
+
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
+ observe: function windowWatcher(win, topic, data)
+ {
+ // xxxHonza: the window should be associated with the same prefDomain.
+ if (win.location.href == "chrome://fbtrace/content/traceLogFrame.html")
+ {
+ var self = this;
+
+ // https://bugzil.la/795961 ?
+ win.addEventListener("load", function onLoad(evt)
+ {
+ // load listener not necessary once https://bugzil.la/800677 is fixed
+ var win = evt.currentTarget;
+ win.removeEventListener("load", onLoad, false);
+
+ self.initFBTrace(self.prefDomain);
+ }, false);
+ }
+ },
+
+ initFBTrace: function()
+ {
+ if (this.FBTrace)
+ return this.FBTrace;
+
+ try
+ {
+ var scope = {};
+ Cu.import("resource://fbtrace/firebug-trace-service.js", scope);
+ this.FBTrace = scope.traceConsoleService.getTracer(this.prefDomain);
+
+ // FBTrace Console is ready let's flush the log buffer.
+ this.flush();
+ }
+ catch (err)
+ {
+ }
+ }
+};
+
+// ********************************************************************************************* //
+// Helpers
+
+function getStackDump()
+{
+ var lines = [];
+ for (var frame = Components.stack; frame; frame = frame.caller)
+ lines.push(frame.filename + " (" + frame.lineNumber + ")");
+
+ return lines.join("\n");
+};
+
+function getBoolPref(prefDomain, name)
+{
+ try
+ {
+ var prefName = prefDomain + "." + name;
+ return prefs.getBoolPref(prefName);
+ }
+ catch (err)
+ {
+ }
+
+ return false;
+}
+
+function getCharPref(prefDomain, name)
+{
+ try
+ {
+ var prefName = prefDomain + "." + name;
+ return prefs.getCharPref(prefName);
+ }
+ catch (err)
+ {
+ }
+
+ return false;
+}
+
+// ********************************************************************************************* //
diff --git a/modules/gcli.js b/modules/gcli.js
index 48752f8..d9cb70b 100644
--- a/modules/gcli.js
+++ b/modules/gcli.js
@@ -1,173 +1,173 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-var Cu = Components.utils;
-
-var EXPORTED_SYMBOLS = ["FirebugGCLICommands"];
-
-// ********************************************************************************************* //
-// GCLI
-
-var scope = {};
-
-try
-{
- Cu.import("resource:///modules/devtools/gcli.jsm", scope);
-}
-catch (err)
-{
- if (FBTrace.DBG_ERROR)
- FBTrace.sysout("GCLI not available");
-}
-
-// Load the Locale module and make sure Firebug string bundle is registered
-// (GCLI commands needs to be localized)
-var Locale = Cu.import("resource://firebug/locale.js").Locale;
-Locale.registerStringBundle("chrome://firebug/locale/firebug.properties");
-
-if (scope.gcli) {
-
-// ********************************************************************************************* //
-// FirebugGCLICommands
-
-var FirebugGCLICommands =
-{
- startup: function()
- {
- registerCommands();
- },
-
- shutdown: function()
- {
- unregisterCommands();
- }
-};
-
-// ********************************************************************************************* //
-// Command Implementation
-
-/**
- * Read https://developer.mozilla.org/en/Tools/GCLI/Writing_GCLI_Commands
- * about how to implement GCLI commands.
- */
-var FirebugController =
-{
- openFirebug: function(args, context)
- {
- this.startFirebug(context, function(Firebug) {
- Firebug.toggleBar(true);
- });
- },
-
- hideFirebug: function(args, context)
- {
- this.startFirebug(context, function(Firebug) {
- Firebug.minimizeBar();
- });
- },
-
- closeFirebug: function(args, context)
- {
- var Firebug = context.environment.chromeDocument.defaultView.Firebug;
- if (!Firebug)
- return;
-
- if (!Firebug.isLoaded)
- return;
-
- this.startFirebug(context, function(Firebug) {
- Firebug.closeFirebug();
- });
- },
-
- detachFirebug: function(args, context)
- {
- this.startFirebug(context, function(Firebug) {
- Firebug.toggleDetachBar(true);
- });
- },
-
- attachFirebug: function(args, context)
- {
- this.startFirebug(context, function(Firebug) {
- if (Firebug.isDetached())
- Firebug.toggleDetachBar();
- Firebug.toggleBar(true);
- });
- },
-
- startFirebug: function(context, callback)
- {
- var Firebug = context.environment.chromeDocument.defaultView.Firebug;
- if (!Firebug)
- return;
-
- Firebug.browserOverlay.startFirebug(function(Firebug) {
- callback(Firebug);
- });
- }
-};
-
-// ********************************************************************************************* //
-// Registration
-
-var commands = [];
-
-function addCommand(command)
-{
- scope.gcli.addCommand(command);
- commands.push(command);
-}
-
-function registerCommands()
-{
- addCommand({
- name: "firebug",
- description: "Web Development Evolved"
- });
-
- addCommand({
- name: "firebug open",
- description: Locale.$STR("firebug.menu.tip.Open_Firebug"),
- exec: FirebugController.openFirebug.bind(FirebugController)
- });
-
- addCommand({
- name: "firebug hide",
- description: Locale.$STR("firebug.menu.tip.Minimize_Firebug"),
- exec: FirebugController.hideFirebug.bind(FirebugController)
- });
-
- addCommand({
- name: "firebug close",
- description: Locale.$STR("firebug.shortcut.tip.closeFirebug"),
- exec: FirebugController.closeFirebug.bind(FirebugController)
- });
-
- addCommand({
- name: "firebug detach",
- description: Locale.$STR("firebug.DetachFirebug"),
- exec: FirebugController.detachFirebug.bind(FirebugController)
- });
-
- addCommand({
- name: "firebug attach",
- description: Locale.$STR("firebug.AttachFirebug"),
- exec: FirebugController.attachFirebug.bind(FirebugController)
- });
-}
-
-function unregisterCommands()
-{
- for (var i=0; i<commands.length; i++)
- scope.gcli.removeCommand(commands[i]);
-
- commands = [];
-}
-
-// ********************************************************************************************* //
-}
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cu = Components.utils;
+
+var EXPORTED_SYMBOLS = ["FirebugGCLICommands"];
+
+// ********************************************************************************************* //
+// GCLI
+
+var scope = {};
+
+try
+{
+ Cu.import("resource:///modules/devtools/gcli.jsm", scope);
+}
+catch (err)
+{
+ if (FBTrace.DBG_ERROR)
+ FBTrace.sysout("GCLI not available");
+}
+
+// Load the Locale module and make sure Firebug string bundle is registered
+// (GCLI commands needs to be localized)
+var Locale = Cu.import("resource://firebug/locale.js").Locale;
+Locale.registerStringBundle("chrome://firebug/locale/firebug.properties");
+
+if (scope.gcli) {
+
+// ********************************************************************************************* //
+// FirebugGCLICommands
+
+var FirebugGCLICommands =
+{
+ startup: function()
+ {
+ registerCommands();
+ },
+
+ shutdown: function()
+ {
+ unregisterCommands();
+ }
+};
+
+// ********************************************************************************************* //
+// Command Implementation
+
+/**
+ * Read https://developer.mozilla.org/en/Tools/GCLI/Writing_GCLI_Commands
+ * about how to implement GCLI commands.
+ */
+var FirebugController =
+{
+ openFirebug: function(args, context)
+ {
+ this.startFirebug(context, function(Firebug) {
+ Firebug.toggleBar(true);
+ });
+ },
+
+ hideFirebug: function(args, context)
+ {
+ this.startFirebug(context, function(Firebug) {
+ Firebug.minimizeBar();
+ });
+ },
+
+ closeFirebug: function(args, context)
+ {
+ var Firebug = context.environment.chromeDocument.defaultView.Firebug;
+ if (!Firebug)
+ return;
+
+ if (!Firebug.isLoaded)
+ return;
+
+ this.startFirebug(context, function(Firebug) {
+ Firebug.closeFirebug();
+ });
+ },
+
+ detachFirebug: function(args, context)
+ {
+ this.startFirebug(context, function(Firebug) {
+ Firebug.toggleDetachBar(true);
+ });
+ },
+
+ attachFirebug: function(args, context)
+ {
+ this.startFirebug(context, function(Firebug) {
+ if (Firebug.isDetached())
+ Firebug.toggleDetachBar();
+ Firebug.toggleBar(true);
+ });
+ },
+
+ startFirebug: function(context, callback)
+ {
+ var Firebug = context.environment.chromeDocument.defaultView.Firebug;
+ if (!Firebug)
+ return;
+
+ Firebug.browserOverlay.startFirebug(function(Firebug) {
+ callback(Firebug);
+ });
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+var commands = [];
+
+function addCommand(command)
+{
+ scope.gcli.addCommand(command);
+ commands.push(command);
+}
+
+function registerCommands()
+{
+ addCommand({
+ name: "firebug",
+ description: "Web Development Evolved"
+ });
+
+ addCommand({
+ name: "firebug open",
+ description: Locale.$STR("firebug.menu.tip.Open_Firebug"),
+ exec: FirebugController.openFirebug.bind(FirebugController)
+ });
+
+ addCommand({
+ name: "firebug hide",
+ description: Locale.$STR("firebug.menu.tip.Minimize_Firebug"),
+ exec: FirebugController.hideFirebug.bind(FirebugController)
+ });
+
+ addCommand({
+ name: "firebug close",
+ description: Locale.$STR("firebug.shortcut.tip.closeFirebug"),
+ exec: FirebugController.closeFirebug.bind(FirebugController)
+ });
+
+ addCommand({
+ name: "firebug detach",
+ description: Locale.$STR("firebug.DetachFirebug"),
+ exec: FirebugController.detachFirebug.bind(FirebugController)
+ });
+
+ addCommand({
+ name: "firebug attach",
+ description: Locale.$STR("firebug.AttachFirebug"),
+ exec: FirebugController.attachFirebug.bind(FirebugController)
+ });
+}
+
+function unregisterCommands()
+{
+ for (var i=0; i<commands.length; i++)
+ scope.gcli.removeCommand(commands[i]);
+
+ commands = [];
+}
+
+// ********************************************************************************************* //
+}
diff --git a/modules/loader.js b/modules/loader.js
index e5b37b3..41c93b9 100644
--- a/modules/loader.js
+++ b/modules/loader.js
@@ -1,207 +1,207 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Constants
-
-var EXPORTED_SYMBOLS = ["FirebugLoader"];
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-var Cu = Components.utils;
-
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://firebug/fbtrace.js");
-
-// ********************************************************************************************* //
-
-function loadSubscript(src, win)
-{
- return Services.scriptloader.loadSubScript(src, win);
-}
-
-// ********************************************************************************************* //
-
-var FirebugLoader =
-{
- bootstrapScopes: [],
-
- registerBootstrapScope: function(e)
- {
- if (this.bootstrapScopes.indexOf(e) != -1)
- return;
-
- this.bootstrapScopes.push(e);
-
- this.forEachWindow(function(win)
- {
- e.topWindowLoad(win);
-
- if (!win.Firebug.isInitialized)
- return;
-
- e.firebugFrameLoad(win.Firebug);
- });
- },
-
- unregisterBootstrapScope: function(e)
- {
- var i = this.bootstrapScopes.indexOf(e);
- if (i >= 0)
- this.bootstrapScopes.splice(i, 1);
-
- if (e.topWindowUnload)
- {
- this.forEachWindow(function(win)
- {
- e.topWindowUnload(win);
- });
- }
-
- if (e.firebugFrameUnload)
- {
- this.forEachWindow(function(win)
- {
- e.firebugFrameUnload(win.Firebug);
- });
- }
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- startup: function()
- {
- // allow already started bootstrapped firebug extensions to register themselves
- var XPIProviderBP = Cu.import("resource://gre/modules/XPIProvider.jsm", {});
- var bootstrapScopes = XPIProviderBP.XPIProvider.bootstrapScopes;
-
- for (var id in bootstrapScopes)
- {
- var scope = bootstrapScopes[id];
- try
- {
- if (scope.firebugStartup)
- scope.firebugStartup(this);
- }
- catch(e)
- {
- Cu.reportError(e);
- }
- }
- },
-
- shutdown: function()
- {
- this.forEachWindow(function(win)
- {
- FirebugLoader.unloadFromWindow(win);
- });
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- unloadFromWindow: function(win)
- {
- var fbug = win.Firebug;
- this.dispatchToScopes("topWindowUnload", [win]);
-
- if (fbug.shutdown)
- {
- fbug.closeFirebug();
- fbug.shutdown();
- }
-
- function getRoots(el)
- {
- return Array.slice(el.querySelectorAll("[firebugRootNode]"));
- }
-
- [getRoots(win.document), getRoots(win.gNavToolbox.palette),
- fbug.browserOverlay.nodesToRemove].forEach(function(list)
- {
- for (var i=0; i<list.length; i++)
- {
- var el = list[i];
- if (el && el.parentNode)
- el.parentNode.removeChild(el);
- }
- });
-
- win.Firebug.browserOverlay.unloadContextMenuOverlay(win);
-
- delete win.Firebug;
- delete win.FBTrace;
- delete win.FBL;
- },
-
- loadIntoWindow: function(win, reason)
- {
- // This is the place where the global Firebug object is created. This object represents
- // the entire application and all consequently created namespaces and variables should be
- // injected into it.
- // In the future, there should *not* be any other globals except of the Firebug object.
- // xxxHonza: properties from this object are copied into the new Firebug obect that is
- // created within "firebug/firebug" module (a hack).
- win.Firebug = {};
-
- var requireScope = {};
- Cu.import("resource://firebug/mini-require.js", requireScope);
- var require = requireScope.require;
-
- var config = {
- baseUrl: "resource://",
- paths: {"firebug": "chrome://firebug/content"}
- };
-
- require(config, [
- "firebug/firefox/browserOverlay"
- ],
- function(BrowserOverlay)
- {
- var overlay = win.Firebug.browserOverlay = new BrowserOverlay(win);
- overlay.initialize(reason);
- });
-
- if (FBTrace.DBG_MODULES)
- FBTrace.sysout("Basic loader dependencies: " + require.Loader.getDepDesc());
-
- // Firebug extensions should initialize here.
- this.dispatchToScopes("topWindowLoad", [win]);
- },
-
- dispatchToScopes: function(name, arguments)
- {
- for (var id in this.bootstrapScopes)
- {
- var e = this.bootstrapScopes[id];
- try
- {
- if (name in e)
- e[name].apply(e, arguments);
- }
- catch(e)
- {
- Cu.reportError(e);
- }
- }
- },
-
- forEachWindow: function(func)
- {
- var enumerator = Services.wm.getEnumerator("navigator:browser");
- while (enumerator.hasMoreElements())
- {
- try
- {
- var win = enumerator.getNext();
- if (win.Firebug)
- func(win);
- }
- catch(e)
- {
- Cu.reportError(e);
- }
- }
- }
-};
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Constants
+
+var EXPORTED_SYMBOLS = ["FirebugLoader"];
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cu = Components.utils;
+
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://firebug/fbtrace.js");
+
+// ********************************************************************************************* //
+
+function loadSubscript(src, win)
+{
+ return Services.scriptloader.loadSubScript(src, win);
+}
+
+// ********************************************************************************************* //
+
+var FirebugLoader =
+{
+ bootstrapScopes: [],
+
+ registerBootstrapScope: function(e)
+ {
+ if (this.bootstrapScopes.indexOf(e) != -1)
+ return;
+
+ this.bootstrapScopes.push(e);
+
+ this.forEachWindow(function(win)
+ {
+ e.topWindowLoad(win);
+
+ if (!win.Firebug.isInitialized)
+ return;
+
+ e.firebugFrameLoad(win.Firebug);
+ });
+ },
+
+ unregisterBootstrapScope: function(e)
+ {
+ var i = this.bootstrapScopes.indexOf(e);
+ if (i >= 0)
+ this.bootstrapScopes.splice(i, 1);
+
+ if (e.topWindowUnload)
+ {
+ this.forEachWindow(function(win)
+ {
+ e.topWindowUnload(win);
+ });
+ }
+
+ if (e.firebugFrameUnload)
+ {
+ this.forEachWindow(function(win)
+ {
+ e.firebugFrameUnload(win.Firebug);
+ });
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ startup: function()
+ {
+ // allow already started bootstrapped firebug extensions to register themselves
+ var XPIProviderBP = Cu.import("resource://gre/modules/XPIProvider.jsm", {});
+ var bootstrapScopes = XPIProviderBP.XPIProvider.bootstrapScopes;
+
+ for (var id in bootstrapScopes)
+ {
+ var scope = bootstrapScopes[id];
+ try
+ {
+ if (scope.firebugStartup)
+ scope.firebugStartup(this);
+ }
+ catch(e)
+ {
+ Cu.reportError(e);
+ }
+ }
+ },
+
+ shutdown: function()
+ {
+ this.forEachWindow(function(win)
+ {
+ FirebugLoader.unloadFromWindow(win);
+ });
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ unloadFromWindow: function(win)
+ {
+ var fbug = win.Firebug;
+ this.dispatchToScopes("topWindowUnload", [win]);
+
+ if (fbug.shutdown)
+ {
+ fbug.closeFirebug();
+ fbug.shutdown();
+ }
+
+ function getRoots(el)
+ {
+ return Array.slice(el.querySelectorAll("[firebugRootNode]"));
+ }
+
+ [getRoots(win.document), getRoots(win.gNavToolbox.palette),
+ fbug.browserOverlay.nodesToRemove].forEach(function(list)
+ {
+ for (var i=0; i<list.length; i++)
+ {
+ var el = list[i];
+ if (el && el.parentNode)
+ el.parentNode.removeChild(el);
+ }
+ });
+
+ win.Firebug.browserOverlay.unloadContextMenuOverlay(win);
+
+ delete win.Firebug;
+ delete win.FBTrace;
+ delete win.FBL;
+ },
+
+ loadIntoWindow: function(win, reason)
+ {
+ // This is the place where the global Firebug object is created. This object represents
+ // the entire application and all consequently created namespaces and variables should be
+ // injected into it.
+ // In the future, there should *not* be any other globals except of the Firebug object.
+ // xxxHonza: properties from this object are copied into the new Firebug obect that is
+ // created within "firebug/firebug" module (a hack).
+ win.Firebug = {};
+
+ var requireScope = {};
+ Cu.import("resource://firebug/mini-require.js", requireScope);
+ var require = requireScope.require;
+
+ var config = {
+ baseUrl: "resource://",
+ paths: {"firebug": "chrome://firebug/content"}
+ };
+
+ require(config, [
+ "firebug/firefox/browserOverlay"
+ ],
+ function(BrowserOverlay)
+ {
+ var overlay = win.Firebug.browserOverlay = new BrowserOverlay(win);
+ overlay.initialize(reason);
+ });
+
+ if (FBTrace.DBG_MODULES)
+ FBTrace.sysout("Basic loader dependencies: " + require.Loader.getDepDesc());
+
+ // Firebug extensions should initialize here.
+ this.dispatchToScopes("topWindowLoad", [win]);
+ },
+
+ dispatchToScopes: function(name, arguments)
+ {
+ for (var id in this.bootstrapScopes)
+ {
+ var e = this.bootstrapScopes[id];
+ try
+ {
+ if (name in e)
+ e[name].apply(e, arguments);
+ }
+ catch(e)
+ {
+ Cu.reportError(e);
+ }
+ }
+ },
+
+ forEachWindow: function(func)
+ {
+ var enumerator = Services.wm.getEnumerator("navigator:browser");
+ while (enumerator.hasMoreElements())
+ {
+ try
+ {
+ var win = enumerator.getNext();
+ if (win.Firebug)
+ func(win);
+ }
+ catch(e)
+ {
+ Cu.reportError(e);
+ }
+ }
+ }
+};
+
+// ********************************************************************************************* //
diff --git a/modules/locale.js b/modules/locale.js
index ac345ff..b5dc32e 100644
--- a/modules/locale.js
+++ b/modules/locale.js
@@ -1,277 +1,277 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-const DEFAULT_LOCALE = "en-US";
-
-var EXPORTED_SYMBOLS = [];
-
-// ********************************************************************************************* //
-// Services
-
-Cu.import("resource://firebug/fbtrace.js");
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://firebug/prefLoader.js");
-Cu.import("resource://gre/modules/PluralForm.jsm");
-
-// ********************************************************************************************* //
-// Firebug UI Localization
-
-var stringBundleService = Services.strings;
-var categoryManager = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
-
-// This module
-var Locale = {};
-
-/*
- * $STR - intended for localization of a static string.
- * $STRF - intended for localization of a string with dynamically inserted values.
- * $STRP - intended for localization of a string with dynamically plural forms.
- *
- * Notes:
- * 1) Name with _ in place of spaces is the key in the firebug.properties file.
- * 2) If the specified key isn't localized for particular language, both methods use
- * the part after the last dot (in the specified name) as the return value.
- *
- * Examples:
- * $STR("Label"); - search for key "Label" within the firebug.properties file
- * and returns its value. If the key doesn't exist returns "Label".
- *
- * $STR("Button Label"); - search for key "Button_Label" withing the firebug.properties
- * file. If the key doesn't exist returns "Button Label".
- *
- * $STR("net.Response Header"); - search for key "net.Response_Header". If the key doesn't
- * exist returns "Response Header".
- *
- * firebug.properties:
- * net.timing.Request_Time=Request Time: %S [%S]
- *
- * var param1 = 10;
- * var param2 = "ms";
- * $STRF("net.timing.Request Time", param1, param2); -> "Request Time: 10 [ms]"
- *
- * - search for key "net.timing.Request_Time" within the firebug.properties file. Parameters
- * are inserted at specified places (%S) in the same order as they are passed. If the
- * key doesn't exist the method returns "Request Time".
- */
-Locale.$STR = function(name, bundle)
-{
- var strKey = name.replace(" ", "_", "g");
-
- if (!PrefLoader.getPref("useDefaultLocale"))
- {
- try
- {
- if (bundle)
- return validate(bundle.getString(strKey));
- else
- return validate(Locale.getStringBundle().GetStringFromName(strKey));
- }
- catch (err)
- {
- if (FBTrace.DBG_LOCALE)
- FBTrace.sysout("lib.getString FAILS '" + name + "'", err);
- }
- }
-
- try
- {
- // The en-US string should be always available.
- var defaultBundle = Locale.getDefaultStringBundle();
- if (defaultBundle)
- return validate(defaultBundle.GetStringFromName(strKey));
- }
- catch (err)
- {
- if (FBTrace.DBG_LOCALE)
- FBTrace.sysout("lib.getString (default) FAILS '" + name + "'", err);
- }
-
- // Don't panic now and use only the label after last dot.
- var index = name.lastIndexOf(".");
- if (index > 0 && name.charAt(index-1) != "\\")
- name = name.substr(index + 1);
- name = name.replace("_", " ", "g");
-
- return name;
-};
-
-Locale.$STRF = function(name, args, bundle)
-{
- var strKey = name.replace(" ", "_", "g");
-
- if (!PrefLoader.getPref("useDefaultLocale"))
- {
- try
- {
- if (bundle)
- return validate(bundle.getFormattedString(strKey, args));
- else
- return validate(Locale.getStringBundle().formatStringFromName(strKey, args, args.length));
- }
- catch (err)
- {
- if (FBTrace.DBG_LOCALE)
- FBTrace.sysout("lib.getString FAILS '" + name + "'", err);
- }
- }
-
- try
- {
- // The en-US string should be always available.
- var defaultBundle = Locale.getDefaultStringBundle();
- if (defaultBundle)
- return validate(defaultBundle.formatStringFromName(strKey, args, args.length));
- }
- catch (err)
- {
- if (FBTrace.DBG_LOCALE)
- FBTrace.sysout("lib.getString (default) FAILS '" + name + "'", err);
- }
-
- // Don't panic now and use only the label after last dot.
- var index = name.lastIndexOf(".");
- if (index > 0)
- name = name.substr(index + 1);
-
- return name;
-};
-
-Locale.$STRP = function(name, args, index, bundle)
-{
- // xxxHonza:
- // pluralRule from chrome://global/locale/intl.properties for Chinese is 1,
- // which is wrong, it should be 0.
-
- var getPluralForm = PluralForm.get;
- var getNumForms = PluralForm.numForms;
-
- // Get custom plural rule; otherwise the rule from chrome://global/locale/intl.properties
- // (depends on the current locale) is used.
- var pluralRule = Locale.getPluralRule();
- if (!isNaN(parseInt(pluralRule, 10)))
- [getPluralForm, getNumForms] = PluralForm.makeGetter(pluralRule);
-
- // Index of the argument with plural form (there must be only one arg that needs plural form).
- if (!index)
- index = 0;
-
- // Get proper plural form from the string (depends on the current Firefox locale).
- var translatedString = Locale.$STRF(name, args, bundle);
- if (translatedString.search(";") > 0)
- return validate(getPluralForm(args[index], translatedString));
-
- // translatedString contains no ";", either rule 0 or getString fails
- return validate(translatedString);
-};
-
-/*
- * Use the current value of the attribute as a key to look up the localized value.
- */
-Locale.internationalize = function(element, attr, args)
-{
- if (element)
- {
- var xulString = element.getAttribute(attr);
- if (xulString)
- {
- var localized = args ? Locale.$STRF(xulString, args) : Locale.$STR(xulString);
- // Set localized value of the attribute only if it exists.
- if (localized)
- element.setAttribute(attr, localized);
- }
- }
- else
- {
- if (FBTrace.DBG_LOCALE)
- FBTrace.sysout("Failed to internationalize element with attr "+attr+" args:"+args);
- }
-};
-
-Locale.internationalizeElements = function(doc, elements, attributes)
-{
- for (var i=0; i<elements.length; i++)
- {
- var element = elements[i];
-
- if (typeof(elements) == "string")
- element = doc.getElementById(elements[i]);
-
- if (!element)
- continue;
-
- // Remove fbInternational class, so that the label is not translated again later.
- element.classList.remove("fbInternational");
-
- for (var j=0; j<attributes.length; j++)
- {
- if (element.hasAttribute(attributes[j]))
- Locale.internationalize(element, attributes[j]);
- }
- }
-};
-
-Locale.registerStringBundle = function(bundleURI)
-{
- // Notice that this category entry must not be persistent in Fx 4.0
- categoryManager.addCategoryEntry("strings_firebug", bundleURI, "", false, true);
- this.stringBundle = null;
-
- bundleURI = getDefaultStringBundleURI(bundleURI);
- categoryManager.addCategoryEntry("default_strings_firebug", bundleURI, "", false, true);
- this.defaultStringBundle = null;
-};
-
-Locale.getStringBundle = function()
-{
- if (!this.stringBundle)
- this.stringBundle = stringBundleService.createExtensibleBundle("strings_firebug");
- return this.stringBundle;
-};
-
-Locale.getDefaultStringBundle = function()
-{
- if (!this.defaultStringBundle)
- this.defaultStringBundle = stringBundleService.createExtensibleBundle("default_strings_firebug");
- return this.defaultStringBundle;
-};
-
-Locale.getPluralRule = function()
-{
- try
- {
- return this.getStringBundle().GetStringFromName("pluralRule");
- }
- catch (err)
- {
- }
-};
-
-// ********************************************************************************************* //
-// Helpers
-
-// Replace forbidden characters(see bug 6630)
-function validate(str)
-{
- return String(str).replace(/"/g, '\'');
-}
-
-function getDefaultStringBundleURI(bundleURI)
-{
- var chromeRegistry = Cc["@mozilla.org/chrome/chrome-registry;1"].
- getService(Ci.nsIChromeRegistry);
-
- var uri = Services.io.newURI(bundleURI, "UTF-8", null);
- var fileURI = chromeRegistry.convertChromeURL(uri).spec;
- var parts = fileURI.split("/");
- parts[parts.length - 2] = DEFAULT_LOCALE;
-
- return parts.join("/");
-}
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+
+const DEFAULT_LOCALE = "en-US";
+
+var EXPORTED_SYMBOLS = [];
+
+// ********************************************************************************************* //
+// Services
+
+Cu.import("resource://firebug/fbtrace.js");
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://firebug/prefLoader.js");
+Cu.import("resource://gre/modules/PluralForm.jsm");
+
+// ********************************************************************************************* //
+// Firebug UI Localization
+
+var stringBundleService = Services.strings;
+var categoryManager = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
+
+// This module
+var Locale = {};
+
+/*
+ * $STR - intended for localization of a static string.
+ * $STRF - intended for localization of a string with dynamically inserted values.
+ * $STRP - intended for localization of a string with dynamically plural forms.
+ *
+ * Notes:
+ * 1) Name with _ in place of spaces is the key in the firebug.properties file.
+ * 2) If the specified key isn't localized for particular language, both methods use
+ * the part after the last dot (in the specified name) as the return value.
+ *
+ * Examples:
+ * $STR("Label"); - search for key "Label" within the firebug.properties file
+ * and returns its value. If the key doesn't exist returns "Label".
+ *
+ * $STR("Button Label"); - search for key "Button_Label" withing the firebug.properties
+ * file. If the key doesn't exist returns "Button Label".
+ *
+ * $STR("net.Response Header"); - search for key "net.Response_Header". If the key doesn't
+ * exist returns "Response Header".
+ *
+ * firebug.properties:
+ * net.timing.Request_Time=Request Time: %S [%S]
+ *
+ * var param1 = 10;
+ * var param2 = "ms";
+ * $STRF("net.timing.Request Time", param1, param2); -> "Request Time: 10 [ms]"
+ *
+ * - search for key "net.timing.Request_Time" within the firebug.properties file. Parameters
+ * are inserted at specified places (%S) in the same order as they are passed. If the
+ * key doesn't exist the method returns "Request Time".
+ */
+Locale.$STR = function(name, bundle)
+{
+ var strKey = name.replace(" ", "_", "g");
+
+ if (!PrefLoader.getPref("useDefaultLocale"))
+ {
+ try
+ {
+ if (bundle)
+ return validate(bundle.getString(strKey));
+ else
+ return validate(Locale.getStringBundle().GetStringFromName(strKey));
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_LOCALE)
+ FBTrace.sysout("lib.getString FAILS '" + name + "'", err);
+ }
+ }
+
+ try
+ {
+ // The en-US string should be always available.
+ var defaultBundle = Locale.getDefaultStringBundle();
+ if (defaultBundle)
+ return validate(defaultBundle.GetStringFromName(strKey));
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_LOCALE)
+ FBTrace.sysout("lib.getString (default) FAILS '" + name + "'", err);
+ }
+
+ // Don't panic now and use only the label after last dot.
+ var index = name.lastIndexOf(".");
+ if (index > 0 && name.charAt(index-1) != "\\")
+ name = name.substr(index + 1);
+ name = name.replace("_", " ", "g");
+
+ return name;
+};
+
+Locale.$STRF = function(name, args, bundle)
+{
+ var strKey = name.replace(" ", "_", "g");
+
+ if (!PrefLoader.getPref("useDefaultLocale"))
+ {
+ try
+ {
+ if (bundle)
+ return validate(bundle.getFormattedString(strKey, args));
+ else
+ return validate(Locale.getStringBundle().formatStringFromName(strKey, args, args.length));
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_LOCALE)
+ FBTrace.sysout("lib.getString FAILS '" + name + "'", err);
+ }
+ }
+
+ try
+ {
+ // The en-US string should be always available.
+ var defaultBundle = Locale.getDefaultStringBundle();
+ if (defaultBundle)
+ return validate(defaultBundle.formatStringFromName(strKey, args, args.length));
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_LOCALE)
+ FBTrace.sysout("lib.getString (default) FAILS '" + name + "'", err);
+ }
+
+ // Don't panic now and use only the label after last dot.
+ var index = name.lastIndexOf(".");
+ if (index > 0)
+ name = name.substr(index + 1);
+
+ return name;
+};
+
+Locale.$STRP = function(name, args, index, bundle)
+{
+ // xxxHonza:
+ // pluralRule from chrome://global/locale/intl.properties for Chinese is 1,
+ // which is wrong, it should be 0.
+
+ var getPluralForm = PluralForm.get;
+ var getNumForms = PluralForm.numForms;
+
+ // Get custom plural rule; otherwise the rule from chrome://global/locale/intl.properties
+ // (depends on the current locale) is used.
+ var pluralRule = Locale.getPluralRule();
+ if (!isNaN(parseInt(pluralRule, 10)))
+ [getPluralForm, getNumForms] = PluralForm.makeGetter(pluralRule);
+
+ // Index of the argument with plural form (there must be only one arg that needs plural form).
+ if (!index)
+ index = 0;
+
+ // Get proper plural form from the string (depends on the current Firefox locale).
+ var translatedString = Locale.$STRF(name, args, bundle);
+ if (translatedString.search(";") > 0)
+ return validate(getPluralForm(args[index], translatedString));
+
+ // translatedString contains no ";", either rule 0 or getString fails
+ return validate(translatedString);
+};
+
+/*
+ * Use the current value of the attribute as a key to look up the localized value.
+ */
+Locale.internationalize = function(element, attr, args)
+{
+ if (element)
+ {
+ var xulString = element.getAttribute(attr);
+ if (xulString)
+ {
+ var localized = args ? Locale.$STRF(xulString, args) : Locale.$STR(xulString);
+ // Set localized value of the attribute only if it exists.
+ if (localized)
+ element.setAttribute(attr, localized);
+ }
+ }
+ else
+ {
+ if (FBTrace.DBG_LOCALE)
+ FBTrace.sysout("Failed to internationalize element with attr "+attr+" args:"+args);
+ }
+};
+
+Locale.internationalizeElements = function(doc, elements, attributes)
+{
+ for (var i=0; i<elements.length; i++)
+ {
+ var element = elements[i];
+
+ if (typeof(elements) == "string")
+ element = doc.getElementById(elements[i]);
+
+ if (!element)
+ continue;
+
+ // Remove fbInternational class, so that the label is not translated again later.
+ element.classList.remove("fbInternational");
+
+ for (var j=0; j<attributes.length; j++)
+ {
+ if (element.hasAttribute(attributes[j]))
+ Locale.internationalize(element, attributes[j]);
+ }
+ }
+};
+
+Locale.registerStringBundle = function(bundleURI)
+{
+ // Notice that this category entry must not be persistent in Fx 4.0
+ categoryManager.addCategoryEntry("strings_firebug", bundleURI, "", false, true);
+ this.stringBundle = null;
+
+ bundleURI = getDefaultStringBundleURI(bundleURI);
+ categoryManager.addCategoryEntry("default_strings_firebug", bundleURI, "", false, true);
+ this.defaultStringBundle = null;
+};
+
+Locale.getStringBundle = function()
+{
+ if (!this.stringBundle)
+ this.stringBundle = stringBundleService.createExtensibleBundle("strings_firebug");
+ return this.stringBundle;
+};
+
+Locale.getDefaultStringBundle = function()
+{
+ if (!this.defaultStringBundle)
+ this.defaultStringBundle = stringBundleService.createExtensibleBundle("default_strings_firebug");
+ return this.defaultStringBundle;
+};
+
+Locale.getPluralRule = function()
+{
+ try
+ {
+ return this.getStringBundle().GetStringFromName("pluralRule");
+ }
+ catch (err)
+ {
+ }
+};
+
+// ********************************************************************************************* //
+// Helpers
+
+// Replace forbidden characters(see bug 6630)
+function validate(str)
+{
+ return String(str).replace(/"/g, '\'');
+}
+
+function getDefaultStringBundleURI(bundleURI)
+{
+ var chromeRegistry = Cc["@mozilla.org/chrome/chrome-registry;1"].
+ getService(Ci.nsIChromeRegistry);
+
+ var uri = Services.io.newURI(bundleURI, "UTF-8", null);
+ var fileURI = chromeRegistry.convertChromeURL(uri).spec;
+ var parts = fileURI.split("/");
+ parts[parts.length - 2] = DEFAULT_LOCALE;
+
+ return parts.join("/");
+}
+
+// ********************************************************************************************* //
diff --git a/modules/mini-require.js b/modules/mini-require.js
index ab0d9b0..8167c58 100644
--- a/modules/mini-require.js
+++ b/modules/mini-require.js
@@ -1,229 +1,229 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Module Loader Implementation
-
-var EXPORTED_SYMBOLS = ["require", "define"];
-
-var require, define;
-
-(function() {
-
-// ********************************************************************************************* //
-// Constants
-
-var Cu = Components.utils;
-
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://firebug/fbtrace.js");
-
-// ********************************************************************************************* //
-// Module Loader implementation
-
-var Loader =
-{
- config: {},
- modules: {},
- currentModule: [],
- payloads: {},
-
- require: function(config, modules, callback)
- {
- if (typeof config == "string" && !modules && !callback)
- return this.modules[config].exports;
-
- this.config = config ? config : this.config;
- this.currentModule = [];
-
- var main = this.modules["main"] = {
- scope: {}
- };
-
- this.currentModule.push(main);
- this.lookup(modules, callback);
- },
-
- define: function(moduleId, deps, payload)
- {
- if (!payload && FBTrace.DBG_ERRORS)
- FBTrace.sysout("loader.define; No payload? " + moduleId, moduleId);
-
- if (payload)
- payload.deps = deps;
-
- this.payloads[moduleId] = payload;
- },
-
- lookup: function(moduleId, deps, callback)
- {
- // Module name doesn't have to be specified.
- if (arguments.length == 2)
- {
- callback = deps;
- deps = moduleId;
- moduleId = undefined;
- }
-
- var self = this;
- var args = deps.map(function(dep)
- {
- var result = self.loadModule(dep);
- if (!result)
- {
- FBTrace.sysout("mini-require; ERROR Could be a cycle dependency or undefined " +
- "return value from a module: " + dep, self.getDeps());
- }
- return result;
- });
-
- try
- {
- var module = this.currentModule[this.currentModule.length - 1];
- module.deps = deps;
- module.args = args;
- module.exports = callback.apply(module.scope, args);
- }
- catch (err)
- {
- Cu.reportError(err);
-
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("mini-require; lookup " + err, err);
- }
- },
-
- loadModule: function(moduleId)
- {
- var module = this.modules[moduleId];
- if (module)
- return module.exports;
-
- module = this.modules[moduleId] = {};
- module.scope = {
- define: this.lookup.bind(this)
- };
-
- this.currentModule.push(module);
-
- // If the module is already registered, load all deps and execute.
- // Otherwise we need to load the script from URL.
- var payload = this.payloads[moduleId];
- if (payload)
- {
- this.lookup(moduleId, payload.deps, payload);
- }
- else
- {
- var moduleUrl = this.getModuleUrl(moduleId) + ".js";
- require.load(module.scope, moduleId, moduleUrl);
- }
-
- this.currentModule.pop();
-
- // Exports (the module return value in case of AMD) is set in define function.
- return module.exports;
- },
-
- load: function(context, fullName, url)
- {
- try
- {
- Services.scriptloader.loadSubScript(url, context);
-
- if (FBTrace.DBG_MODULES)
- FBTrace.sysout("mini-require; Module loaded " + fullName, url);
- }
- catch (err)
- {
- Cu.reportError(fullName + " -> " + url);
- Cu.reportError(err);
- }
- },
-
- getModuleUrl: function(moduleId)
- {
- var baseUrl = this.config.baseUrl;
- if (baseUrl.substr(-1) != "/")
- baseUrl += "/";
-
- // If there are no aliases just use baseUrl.
- if (!this.config.paths)
- return baseUrl + moduleId;
-
- // Get module id path parts (excluding the module name).
- var parts = moduleId.split("/");
- var moduleName = parts.pop();
-
- var self = this;
- var resolved = parts.map(function(part)
- {
- var alias = self.config.paths[part];
- return alias ? alias : part;
- });
-
- var moduleUrl = resolved.join("/");
- if (moduleUrl.substr(-1) != "/")
- moduleUrl += "/";
-
- moduleUrl += moduleName;
-
- var reProtocol = /^[^:]+(?=:\/\/)/;
- if (moduleUrl.match(reProtocol))
- return moduleUrl;
-
- // If there is no protocol, use baseUrl.
- return baseUrl + moduleUrl;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Debugging Dependencies
-
- getDeps: function()
- {
- var result = {};
- for (var p in this.modules)
- this.calculateDeps(p, result);
- return result;
- },
-
- calculateDeps: function(moduleId, result)
- {
- var deps = result[moduleId];
- if (deps)
- return deps;
-
- deps = result[moduleId] = {};
-
- var module = this.modules[moduleId];
- if (!module.deps)
- return deps;
-
- for (var i=0; i<module.deps.length; i++)
- {
- var id = module.deps[i];
- deps[id] = this.calculateDeps(id, result);
- }
-
- return deps;
- },
-
- getDepDesc: function()
- {
- var desc = "";
- var deps = this.getDeps();
- for (var p in deps)
- desc += p + "\n";
- return desc;
- }
-};
-
-// ********************************************************************************************* //
-// Public API
-
-require = Loader.require.bind(Loader);
-define = Loader.define.bind(Loader);
-require.load = Loader.load.bind(Loader);
-require.Loader = Loader;
-
-// ********************************************************************************************* //
-})();
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Module Loader Implementation
+
+var EXPORTED_SYMBOLS = ["require", "define"];
+
+var require, define;
+
+(function() {
+
+// ********************************************************************************************* //
+// Constants
+
+var Cu = Components.utils;
+
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://firebug/fbtrace.js");
+
+// ********************************************************************************************* //
+// Module Loader implementation
+
+var Loader =
+{
+ config: {},
+ modules: {},
+ currentModule: [],
+ payloads: {},
+
+ require: function(config, modules, callback)
+ {
+ if (typeof config == "string" && !modules && !callback)
+ return this.modules[config].exports;
+
+ this.config = config ? config : this.config;
+ this.currentModule = [];
+
+ var main = this.modules["main"] = {
+ scope: {}
+ };
+
+ this.currentModule.push(main);
+ this.lookup(modules, callback);
+ },
+
+ define: function(moduleId, deps, payload)
+ {
+ if (!payload && FBTrace.DBG_ERRORS)
+ FBTrace.sysout("loader.define; No payload? " + moduleId, moduleId);
+
+ if (payload)
+ payload.deps = deps;
+
+ this.payloads[moduleId] = payload;
+ },
+
+ lookup: function(moduleId, deps, callback)
+ {
+ // Module name doesn't have to be specified.
+ if (arguments.length == 2)
+ {
+ callback = deps;
+ deps = moduleId;
+ moduleId = undefined;
+ }
+
+ var self = this;
+ var args = deps.map(function(dep)
+ {
+ var result = self.loadModule(dep);
+ if (!result)
+ {
+ FBTrace.sysout("mini-require; ERROR Could be a cycle dependency or undefined " +
+ "return value from a module: " + dep, self.getDeps());
+ }
+ return result;
+ });
+
+ try
+ {
+ var module = this.currentModule[this.currentModule.length - 1];
+ module.deps = deps;
+ module.args = args;
+ module.exports = callback.apply(module.scope, args);
+ }
+ catch (err)
+ {
+ Cu.reportError(err);
+
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("mini-require; lookup " + err, err);
+ }
+ },
+
+ loadModule: function(moduleId)
+ {
+ var module = this.modules[moduleId];
+ if (module)
+ return module.exports;
+
+ module = this.modules[moduleId] = {};
+ module.scope = {
+ define: this.lookup.bind(this)
+ };
+
+ this.currentModule.push(module);
+
+ // If the module is already registered, load all deps and execute.
+ // Otherwise we need to load the script from URL.
+ var payload = this.payloads[moduleId];
+ if (payload)
+ {
+ this.lookup(moduleId, payload.deps, payload);
+ }
+ else
+ {
+ var moduleUrl = this.getModuleUrl(moduleId) + ".js";
+ require.load(module.scope, moduleId, moduleUrl);
+ }
+
+ this.currentModule.pop();
+
+ // Exports (the module return value in case of AMD) is set in define function.
+ return module.exports;
+ },
+
+ load: function(context, fullName, url)
+ {
+ try
+ {
+ Services.scriptloader.loadSubScript(url, context);
+
+ if (FBTrace.DBG_MODULES)
+ FBTrace.sysout("mini-require; Module loaded " + fullName, url);
+ }
+ catch (err)
+ {
+ Cu.reportError(fullName + " -> " + url);
+ Cu.reportError(err);
+ }
+ },
+
+ getModuleUrl: function(moduleId)
+ {
+ var baseUrl = this.config.baseUrl;
+ if (baseUrl.substr(-1) != "/")
+ baseUrl += "/";
+
+ // If there are no aliases just use baseUrl.
+ if (!this.config.paths)
+ return baseUrl + moduleId;
+
+ // Get module id path parts (excluding the module name).
+ var parts = moduleId.split("/");
+ var moduleName = parts.pop();
+
+ var self = this;
+ var resolved = parts.map(function(part)
+ {
+ var alias = self.config.paths[part];
+ return alias ? alias : part;
+ });
+
+ var moduleUrl = resolved.join("/");
+ if (moduleUrl.substr(-1) != "/")
+ moduleUrl += "/";
+
+ moduleUrl += moduleName;
+
+ var reProtocol = /^[^:]+(?=:\/\/)/;
+ if (moduleUrl.match(reProtocol))
+ return moduleUrl;
+
+ // If there is no protocol, use baseUrl.
+ return baseUrl + moduleUrl;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Debugging Dependencies
+
+ getDeps: function()
+ {
+ var result = {};
+ for (var p in this.modules)
+ this.calculateDeps(p, result);
+ return result;
+ },
+
+ calculateDeps: function(moduleId, result)
+ {
+ var deps = result[moduleId];
+ if (deps)
+ return deps;
+
+ deps = result[moduleId] = {};
+
+ var module = this.modules[moduleId];
+ if (!module.deps)
+ return deps;
+
+ for (var i=0; i<module.deps.length; i++)
+ {
+ var id = module.deps[i];
+ deps[id] = this.calculateDeps(id, result);
+ }
+
+ return deps;
+ },
+
+ getDepDesc: function()
+ {
+ var desc = "";
+ var deps = this.getDeps();
+ for (var p in deps)
+ desc += p + "\n";
+ return desc;
+ }
+};
+
+// ********************************************************************************************* //
+// Public API
+
+require = Loader.require.bind(Loader);
+define = Loader.define.bind(Loader);
+require.load = Loader.load.bind(Loader);
+require.Loader = Loader;
+
+// ********************************************************************************************* //
+})();
diff --git a/modules/observer-service.js b/modules/observer-service.js
index 64f8bad..36c4297 100644
--- a/modules/observer-service.js
+++ b/modules/observer-service.js
@@ -1,127 +1,127 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-const Cu = Components.utils;
-
-var EXPORTED_SYMBOLS = ["fbObserverService"];
-
-Cu.import("resource://firebug/fbtrace.js");
-
-// ********************************************************************************************* //
-// Observer implementation
-
-/**
- * @service meta service module for observers
- * See also: <a href="https://developer.mozilla.org/en/NsIObserverService">
- * nsIObserverService</a>
- */
-var fbObserverService =
-/** lends fbObserverService */
-{
- observersByTopic: {},
-
- /* nsIObserverService */
- addObserver: function(observer, topic, weak)
- {
- if (!this.observersByTopic[topic])
- this.observersByTopic[topic] = [];
-
- this.observersByTopic[topic].push(observer);
- },
-
- removeObserver: function(observer, topic)
- {
- var observers = this.observersByTopic[topic];
- if (!observers)
- throw new Error("observer-service.removeObserver FAILED no observers for topic "+topic);
-
- for (var i=0; i < observers.length; i++)
- {
- if (observers[i] == observer)
- {
- observers.splice(i, 1);
- return;
- }
- }
-
- throw new Error("observer-service.removeObserver FAILED (no such observer) for topic "+topic);
- },
-
- notifyObservers: function(subject, topic, data)
- {
- var observers = this.observersByTopic[topic];
- if (observers)
- {
- for (var i=0; i < observers.length; i++)
- observers[i].observe(subject, topic, data);
- }
- },
-
- enumerateObservers: function(topic, fnOfObserver)
- {
- var observers = this.observersByTopic[topic];
- if (fnOfObserver)
- {
- for (var i=0; i < observers.length; i++)
- fnOfObserver(observers[i]);
- }
- return observers; // may be null or array
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // For debugging observer registration
-
- stackForTrack: [],
-
- track: function(stack)
- {
- this.stackForTrack.push(stack.toString());
- return this.stackForTrack.length;
- },
-
- untrack: function(index)
- {
- if (this.stackForTrack[index - 1])
- {
- delete this.stackForTrack[index - 1];
- }
- else
- {
- Components.reportError("observer-service. ERROR attempt to untrack item not tracked at " +
- (index - 1));
- }
- },
-
- getStacksForTrack: function()
- {
- return this.stackForTrack;
- },
-
- traceStacksForTrack: function()
- {
- if (!FBTrace.DBG_OBSERVERS)
- return;
-
- var result = false;
- for (var i=0; i<this.stackForTrack.length; i++)
- {
- if (this.stackForTrack[i])
- {
- result = true;
- break;
- }
- }
-
- if (result)
- {
- FBTrace.sysout("fbObserverService getStacksForTrack ", this.stackForTrack);
- }
- }
-};
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+const Cu = Components.utils;
+
+var EXPORTED_SYMBOLS = ["fbObserverService"];
+
+Cu.import("resource://firebug/fbtrace.js");
+
+// ********************************************************************************************* //
+// Observer implementation
+
+/**
+ * @service meta service module for observers
+ * See also: <a href="https://developer.mozilla.org/en/NsIObserverService">
+ * nsIObserverService</a>
+ */
+var fbObserverService =
+/** lends fbObserverService */
+{
+ observersByTopic: {},
+
+ /* nsIObserverService */
+ addObserver: function(observer, topic, weak)
+ {
+ if (!this.observersByTopic[topic])
+ this.observersByTopic[topic] = [];
+
+ this.observersByTopic[topic].push(observer);
+ },
+
+ removeObserver: function(observer, topic)
+ {
+ var observers = this.observersByTopic[topic];
+ if (!observers)
+ throw new Error("observer-service.removeObserver FAILED no observers for topic "+topic);
+
+ for (var i=0; i < observers.length; i++)
+ {
+ if (observers[i] == observer)
+ {
+ observers.splice(i, 1);
+ return;
+ }
+ }
+
+ throw new Error("observer-service.removeObserver FAILED (no such observer) for topic "+topic);
+ },
+
+ notifyObservers: function(subject, topic, data)
+ {
+ var observers = this.observersByTopic[topic];
+ if (observers)
+ {
+ for (var i=0; i < observers.length; i++)
+ observers[i].observe(subject, topic, data);
+ }
+ },
+
+ enumerateObservers: function(topic, fnOfObserver)
+ {
+ var observers = this.observersByTopic[topic];
+ if (fnOfObserver)
+ {
+ for (var i=0; i < observers.length; i++)
+ fnOfObserver(observers[i]);
+ }
+ return observers; // may be null or array
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // For debugging observer registration
+
+ stackForTrack: [],
+
+ track: function(stack)
+ {
+ this.stackForTrack.push(stack.toString());
+ return this.stackForTrack.length;
+ },
+
+ untrack: function(index)
+ {
+ if (this.stackForTrack[index - 1])
+ {
+ delete this.stackForTrack[index - 1];
+ }
+ else
+ {
+ Components.reportError("observer-service. ERROR attempt to untrack item not tracked at " +
+ (index - 1));
+ }
+ },
+
+ getStacksForTrack: function()
+ {
+ return this.stackForTrack;
+ },
+
+ traceStacksForTrack: function()
+ {
+ if (!FBTrace.DBG_OBSERVERS)
+ return;
+
+ var result = false;
+ for (var i=0; i<this.stackForTrack.length; i++)
+ {
+ if (this.stackForTrack[i])
+ {
+ result = true;
+ break;
+ }
+ }
+
+ if (result)
+ {
+ FBTrace.sysout("fbObserverService getStacksForTrack ", this.stackForTrack);
+ }
+ }
+};
+
+// ********************************************************************************************* //
diff --git a/modules/prefLoader.js b/modules/prefLoader.js
index 7be47e3..b348d8f 100644
--- a/modules/prefLoader.js
+++ b/modules/prefLoader.js
@@ -1,155 +1,155 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Constants
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-var Cu = Components.utils;
-
-Cu.import("resource://gre/modules/Services.jsm");
-
-var EXPORTED_SYMBOLS = ["PrefLoader"];
-
-var PrefLoader = {};
-PrefLoader.prefDomain = "extensions.firebug.";
-
-// ********************************************************************************************* //
-// Implementation
-
-/**
- * Load file with default preferences
- *
- * @param {Object} path Extension installation path
- * @param {Object} fileName Preference file name
- */
-function loadDefaultPrefs(path, fileName)
-{
- try
- {
- var uri;
- var baseURI = Services.io.newFileURI(path);
-
- // Compute preference file name path.
- if (path.isDirectory())
- uri = Services.io.newURI("defaults/preferences/" + fileName, null, baseURI).spec;
- else
- uri = "jar:" + baseURI.spec + "!/defaults/preferences/" + fileName;
-
- // Load preference file and use 'pref' function to define all prefs.
- Services.scriptloader.loadSubScript(uri, {pref: pref});
- }
- catch (err)
- {
- Cu.reportError(err);
- }
-}
-
-// ********************************************************************************************* //
-
-/**
- * Clear preferences that are not modified by the user. This is requirement
- * (or recommendation?) from AMO reviewers.
- *
- * @param {Object} domain
- */
-function clearDefaultPrefs(domain)
-{
- domain = domain || PrefLoader.prefDomain;
- var pb = Services.prefs.getDefaultBranch(domain);
-
- var names = pb.getChildList("");
- for (var i=0; i<names.length; i++)
- {
- var name = names[i];
- if (!pb.prefHasUserValue(name))
- pb.deleteBranch(name);
- }
-}
-
-// ********************************************************************************************* //
-
-/**
- * Implement function that is used to define preferences in preference files. These
- * are usually stored within 'defaults/preferences' directory.
- *
- * @param {Object} name Preference name
- * @param {Object} value Preference value
- */
-function pref(name, value)
-{
- try
- {
- var branch = Services.prefs.getDefaultBranch("");
-
- switch (typeof value)
- {
- case "boolean":
- branch.setBoolPref(name, value);
- break;
-
- case "number":
- branch.setIntPref(name, value);
- break;
-
- case "string":
- var str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
- str.data = value;
- branch.setComplexValue(name, Ci.nsISupportsString, str);
- break;
- }
- }
- catch (e)
- {
- Cu.reportError("prefLoader.pref; Firebug can't set default pref value for: " + name);
- }
-}
-
-// ********************************************************************************************* //
-// Duplicates firebug/lib/options
-
-var prefTypeMap = (function()
-{
- var map = {}, br = Ci.nsIPrefBranch;
- map["string"] = map[br.PREF_STRING] = "CharPref";
- map["boolean"] = map[br.PREF_BOOL] = "BoolPref";
- map["number"] = map[br.PREF_INT] = "IntPref";
- return map;
-})();
-
-function getPref(prefDomain, name)
-{
- var prefName = (name == undefined) ?
- PrefLoader.prefDomain + prefDomain : prefDomain + "." + name;
- var prefs = Services.prefs;
- var type = prefTypeMap[prefs.getPrefType(prefName)];
- return type ? prefs["get" + type](prefName) : null;
-}
-
-function setPref(name, value)
-{
- var prefName = PrefLoader.prefDomain + name;
- var prefs = Services.prefs;
-
- var type = prefTypeMap[typeof value];
- if (type)
- value = prefs["set" + type](prefName, value);
-
- return value;
-}
-
-function forceSave()
-{
- Services.prefs.savePrefFile(null);
-}
-
-// ********************************************************************************************* //
-// Registration
-
-PrefLoader.loadDefaultPrefs = loadDefaultPrefs;
-PrefLoader.clearDefaultPrefs = clearDefaultPrefs;
-PrefLoader.getPref = getPref;
-PrefLoader.setPref = setPref;
-PrefLoader.forceSave = forceSave;
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cu = Components.utils;
+
+Cu.import("resource://gre/modules/Services.jsm");
+
+var EXPORTED_SYMBOLS = ["PrefLoader"];
+
+var PrefLoader = {};
+PrefLoader.prefDomain = "extensions.firebug.";
+
+// ********************************************************************************************* //
+// Implementation
+
+/**
+ * Load file with default preferences
+ *
+ * @param {Object} path Extension installation path
+ * @param {Object} fileName Preference file name
+ */
+function loadDefaultPrefs(path, fileName)
+{
+ try
+ {
+ var uri;
+ var baseURI = Services.io.newFileURI(path);
+
+ // Compute preference file name path.
+ if (path.isDirectory())
+ uri = Services.io.newURI("defaults/preferences/" + fileName, null, baseURI).spec;
+ else
+ uri = "jar:" + baseURI.spec + "!/defaults/preferences/" + fileName;
+
+ // Load preference file and use 'pref' function to define all prefs.
+ Services.scriptloader.loadSubScript(uri, {pref: pref});
+ }
+ catch (err)
+ {
+ Cu.reportError(err);
+ }
+}
+
+// ********************************************************************************************* //
+
+/**
+ * Clear preferences that are not modified by the user. This is requirement
+ * (or recommendation?) from AMO reviewers.
+ *
+ * @param {Object} domain
+ */
+function clearDefaultPrefs(domain)
+{
+ domain = domain || PrefLoader.prefDomain;
+ var pb = Services.prefs.getDefaultBranch(domain);
+
+ var names = pb.getChildList("");
+ for (var i=0; i<names.length; i++)
+ {
+ var name = names[i];
+ if (!pb.prefHasUserValue(name))
+ pb.deleteBranch(name);
+ }
+}
+
+// ********************************************************************************************* //
+
+/**
+ * Implement function that is used to define preferences in preference files. These
+ * are usually stored within 'defaults/preferences' directory.
+ *
+ * @param {Object} name Preference name
+ * @param {Object} value Preference value
+ */
+function pref(name, value)
+{
+ try
+ {
+ var branch = Services.prefs.getDefaultBranch("");
+
+ switch (typeof value)
+ {
+ case "boolean":
+ branch.setBoolPref(name, value);
+ break;
+
+ case "number":
+ branch.setIntPref(name, value);
+ break;
+
+ case "string":
+ var str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
+ str.data = value;
+ branch.setComplexValue(name, Ci.nsISupportsString, str);
+ break;
+ }
+ }
+ catch (e)
+ {
+ Cu.reportError("prefLoader.pref; Firebug can't set default pref value for: " + name);
+ }
+}
+
+// ********************************************************************************************* //
+// Duplicates firebug/lib/options
+
+var prefTypeMap = (function()
+{
+ var map = {}, br = Ci.nsIPrefBranch;
+ map["string"] = map[br.PREF_STRING] = "CharPref";
+ map["boolean"] = map[br.PREF_BOOL] = "BoolPref";
+ map["number"] = map[br.PREF_INT] = "IntPref";
+ return map;
+})();
+
+function getPref(prefDomain, name)
+{
+ var prefName = (name == undefined) ?
+ PrefLoader.prefDomain + prefDomain : prefDomain + "." + name;
+ var prefs = Services.prefs;
+ var type = prefTypeMap[prefs.getPrefType(prefName)];
+ return type ? prefs["get" + type](prefName) : null;
+}
+
+function setPref(name, value)
+{
+ var prefName = PrefLoader.prefDomain + name;
+ var prefs = Services.prefs;
+
+ var type = prefTypeMap[typeof value];
+ if (type)
+ value = prefs["set" + type](prefName, value);
+
+ return value;
+}
+
+function forceSave()
+{
+ Services.prefs.savePrefFile(null);
+}
+
+// ********************************************************************************************* //
+// Registration
+
+PrefLoader.loadDefaultPrefs = loadDefaultPrefs;
+PrefLoader.clearDefaultPrefs = clearDefaultPrefs;
+PrefLoader.getPref = getPref;
+PrefLoader.setPref = setPref;
+PrefLoader.forceSave = forceSave;
+
+// ********************************************************************************************* //
diff --git a/modules/require-debug.js b/modules/require-debug.js
index eecaab7..63101ff 100644
--- a/modules/require-debug.js
+++ b/modules/require-debug.js
@@ -1,186 +1,186 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// johnjbarton at johnjbarton.com May 2011 IBM Corp.
-// Extend require.js to add debugging information
-// Include this file immediately after require.js
-// ********************************************************************************************* //
-
-/*
- * Override this function to write output from the debug support for require.
- * @param see Firebug console.log
- */
-require.log = function()
-{
- try
- {
- FBTrace.sysout.apply(FBTrace, arguments);
- }
- catch(exc)
- {
- if (window.console)
- console.log.apply(console, arguments);
- else
- alert.apply(null, arguments);
- }
-};
-
-/*
- * Called by require for each completed module
- * @param fullName module name
- * @param deps array of module names that fullName depends upon
- */
-require.onDebugDAG = function(fullName, deps, url)
-{
- if (!require.depsNamesByName)
- {
- require.depsNamesByName = {};
- require.urlByFullName = {};
- }
-
-
- var arr = [];
- for (var p in deps)
- arr.push(p);
- require.depsNamesByName[fullName] = arr;
- require.urlByFullName[fullName] = url;
-};
-
-require.originalExecCb = require.execCb;
-require.execCbOFF = function (name)
-{
- var ret = require.originalExecCb.apply(require, arguments);
- var value = null;
- try
- {
- if (ret)
- {
- var basename = "requirejs("+name+")";
- for (var prop in ret)
- {
- try
- {
- if (ret.hasOwnProperty(prop))
- {
- value = ret[prop];
- if (value !== null &&
- (typeof value == "function"/* || typeof value == "object"*/))
- {
- var funcName = name + "_" + prop;
- funcName = funcName.replace("/", "_", "g");
- funcName = funcName.replace("-", "_", "g");
- var namedFunction = eval("(function(){ return function " + funcName +
- "(){return true;} })()");
- value.displayName = namedFunction;
- //value.displayName = basename+"/"+prop;
- }
- }
- }
- catch (e)
- {
- require.log("Could not displayName module "+name+" prop "+prop+": "+
- e.toString(), [ret, prop, value]);
- }
- }
- ret.displayName = basename;
- }
- }
- catch(e)
- {
- require.log("Could not displayName module "+name+": "+e.toString());
- }
-
- return ret;
-};
-
-/* Calls require.log to record dependency analysis.
- * Call this function from your main require.js callback function
- * @param none
- *
- */
-require.analyzeDependencyTree = function()
-{
- require.log("Firebug module list: ", require.depsNamesByName);
-
- // For each deps item create an object referencing dependencies
- function linkArrayItems(id, depNamesByName, path)
- {
- var deps = depNamesByName[id];
- var result = {};
- for (var i = 0; i < deps.length; i++)
- {
- var depID = deps[i];
- if (path.indexOf(":"+depID+":") == -1) // Then depId is not already an dependent
- result[depID] = linkArrayItems(depID, depNamesByName, path+":"+depID+":");
- else
- require.log("Circular dependency: "+path+":"+depID+":");
- }
- return result;
- }
-
- var linkedDependencies = {};
- var dependents = {}; // reversed list, dependents by name
- var depNamesByName = require.depsNamesByName;
-
- for (var name in depNamesByName)
- {
- var depArray = depNamesByName[name];
-
- if (name === "undefined")
- {
- linkedDependencies["__main__"] = linkArrayItems(name, depNamesByName, "");
- name = "__main__";
- }
-
- for (var i = 0; i < depArray.length; i++)
- {
- var dependent = depArray[i];
- if (!dependents[dependent])
- dependents[dependent] = [];
- dependents[dependent].push(name);
- }
- }
- var minimal = [];
- var mainDeps = depNamesByName["undefined"];
- for (var i = 0; i < mainDeps.length; i++)
- {
- var dependencyOfMain = mainDeps[i];
- var dependentsOfDependencyOfMain = dependents[dependencyOfMain];
- if (dependentsOfDependencyOfMain.length === 1)
- minimal.push(dependencyOfMain);
- }
-
- require.log("Firebug module dependency tree: ", linkedDependencies);
- require.log("Firebug dependents: ", dependents);
- require.log("Firebug minimal modules list: ", minimal);
- require.log("Firebug URLs: ", require.urlByFullName);
-};
-
-/*
- * Calls require.log for warning and debug of require.js.
- * Called by require.js diagnostic branch
- */
-require.onDebug = function()
-{
- try
- {
- require.log.apply(null,arguments);
- }
- catch(exc)
- {
- var msg = "";
- for (var i = 0; i < arguments.length; i++)
- msg += arguments[i]+", ";
- window.alert("Loader; onDebug:"+msg+"\n");
- }
-};
-
-/*
- * Calls require.log for errors, then throws exception
- * Called by require.js
- */
-require.onError = function(exc)
-{
- require.onDebug.apply(require, arguments);
- throw exc;
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// johnjbarton at johnjbarton.com May 2011 IBM Corp.
+// Extend require.js to add debugging information
+// Include this file immediately after require.js
+// ********************************************************************************************* //
+
+/*
+ * Override this function to write output from the debug support for require.
+ * @param see Firebug console.log
+ */
+require.log = function()
+{
+ try
+ {
+ FBTrace.sysout.apply(FBTrace, arguments);
+ }
+ catch(exc)
+ {
+ if (window.console)
+ console.log.apply(console, arguments);
+ else
+ alert.apply(null, arguments);
+ }
+};
+
+/*
+ * Called by require for each completed module
+ * @param fullName module name
+ * @param deps array of module names that fullName depends upon
+ */
+require.onDebugDAG = function(fullName, deps, url)
+{
+ if (!require.depsNamesByName)
+ {
+ require.depsNamesByName = {};
+ require.urlByFullName = {};
+ }
+
+
+ var arr = [];
+ for (var p in deps)
+ arr.push(p);
+ require.depsNamesByName[fullName] = arr;
+ require.urlByFullName[fullName] = url;
+};
+
+require.originalExecCb = require.execCb;
+require.execCbOFF = function (name)
+{
+ var ret = require.originalExecCb.apply(require, arguments);
+ var value = null;
+ try
+ {
+ if (ret)
+ {
+ var basename = "requirejs("+name+")";
+ for (var prop in ret)
+ {
+ try
+ {
+ if (ret.hasOwnProperty(prop))
+ {
+ value = ret[prop];
+ if (value !== null &&
+ (typeof value == "function"/* || typeof value == "object"*/))
+ {
+ var funcName = name + "_" + prop;
+ funcName = funcName.replace("/", "_", "g");
+ funcName = funcName.replace("-", "_", "g");
+ var namedFunction = eval("(function(){ return function " + funcName +
+ "(){return true;} })()");
+ value.displayName = namedFunction;
+ //value.displayName = basename+"/"+prop;
+ }
+ }
+ }
+ catch (e)
+ {
+ require.log("Could not displayName module "+name+" prop "+prop+": "+
+ e.toString(), [ret, prop, value]);
+ }
+ }
+ ret.displayName = basename;
+ }
+ }
+ catch(e)
+ {
+ require.log("Could not displayName module "+name+": "+e.toString());
+ }
+
+ return ret;
+};
+
+/* Calls require.log to record dependency analysis.
+ * Call this function from your main require.js callback function
+ * @param none
+ *
+ */
+require.analyzeDependencyTree = function()
+{
+ require.log("Firebug module list: ", require.depsNamesByName);
+
+ // For each deps item create an object referencing dependencies
+ function linkArrayItems(id, depNamesByName, path)
+ {
+ var deps = depNamesByName[id];
+ var result = {};
+ for (var i = 0; i < deps.length; i++)
+ {
+ var depID = deps[i];
+ if (path.indexOf(":"+depID+":") == -1) // Then depId is not already an dependent
+ result[depID] = linkArrayItems(depID, depNamesByName, path+":"+depID+":");
+ else
+ require.log("Circular dependency: "+path+":"+depID+":");
+ }
+ return result;
+ }
+
+ var linkedDependencies = {};
+ var dependents = {}; // reversed list, dependents by name
+ var depNamesByName = require.depsNamesByName;
+
+ for (var name in depNamesByName)
+ {
+ var depArray = depNamesByName[name];
+
+ if (name === "undefined")
+ {
+ linkedDependencies["__main__"] = linkArrayItems(name, depNamesByName, "");
+ name = "__main__";
+ }
+
+ for (var i = 0; i < depArray.length; i++)
+ {
+ var dependent = depArray[i];
+ if (!dependents[dependent])
+ dependents[dependent] = [];
+ dependents[dependent].push(name);
+ }
+ }
+ var minimal = [];
+ var mainDeps = depNamesByName["undefined"];
+ for (var i = 0; i < mainDeps.length; i++)
+ {
+ var dependencyOfMain = mainDeps[i];
+ var dependentsOfDependencyOfMain = dependents[dependencyOfMain];
+ if (dependentsOfDependencyOfMain.length === 1)
+ minimal.push(dependencyOfMain);
+ }
+
+ require.log("Firebug module dependency tree: ", linkedDependencies);
+ require.log("Firebug dependents: ", dependents);
+ require.log("Firebug minimal modules list: ", minimal);
+ require.log("Firebug URLs: ", require.urlByFullName);
+};
+
+/*
+ * Calls require.log for warning and debug of require.js.
+ * Called by require.js diagnostic branch
+ */
+require.onDebug = function()
+{
+ try
+ {
+ require.log.apply(null,arguments);
+ }
+ catch(exc)
+ {
+ var msg = "";
+ for (var i = 0; i < arguments.length; i++)
+ msg += arguments[i]+", ";
+ window.alert("Loader; onDebug:"+msg+"\n");
+ }
+};
+
+/*
+ * Calls require.log for errors, then throws exception
+ * Called by require.js
+ */
+require.onError = function(exc)
+{
+ require.onDebug.apply(require, arguments);
+ throw exc;
};
\ No newline at end of file
diff --git a/modules/require.js b/modules/require.js
index 9d010cb..1819be5 100644
--- a/modules/require.js
+++ b/modules/require.js
@@ -1,2053 +1,2053 @@
-/** vim: et:ts=4:sw=4:sts=4
- * @license RequireJS 1.0.7 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved.
- * Available via the MIT or new BSD license.
- * see: http://github.com/jrburke/requirejs for details
- */
-/*jslint strict: false, plusplus: false, sub: true */
-/*global window, navigator, document, importScripts, jQuery, setTimeout, opera */
-
-var requirejs, require, define;
-(function () {
- //Change this version number for each release.
- var version = "1.0.7",
- commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,
- cjsRequireRegExp = /require\(\s*["']([^'"\s]+)["']\s*\)/g,
- currDirRegExp = /^\.\//,
- jsSuffixRegExp = /\.js$/,
- ostring = Object.prototype.toString,
- ap = Array.prototype,
- aps = ap.slice,
- apsp = ap.splice,
- isBrowser = !!(typeof window !== "undefined" && navigator && document),
- isWebWorker = !isBrowser && typeof importScripts !== "undefined",
- //PS3 indicates loaded and complete, but need to wait for complete
- //specifically. Sequence is "loading", "loaded", execution,
- // then "complete". The UA check is unfortunate, but not sure how
- //to feature test w/o causing perf issues.
- readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ?
- /^complete$/ : /^(complete|loaded)$/,
- defContextName = "_",
- //Oh the tragedy, detecting opera. See the usage of isOpera for reason.
- isOpera = typeof opera !== "undefined" && opera.toString() === "[object Opera]",
- empty = {},
- contexts = {},
- globalDefQueue = [],
- interactiveScript = null,
- checkLoadedDepth = 0,
- useInteractive = false,
- reservedDependencies = {
- require: true,
- module: true,
- exports: true
- },
- req, cfg = {}, currentlyAddingScript, s, head, baseElement, scripts, script,
- src, subPath, mainScript, dataMain, globalI, ctx, jQueryCheck, checkLoadedTimeoutId;
-
- function isFunction(it) {
- return ostring.call(it) === "[object Function]";
- }
-
- function isArray(it) {
- return ostring.call(it) === "[object Array]";
- }
-
- /**
- * Simple function to mix in properties from source into target,
- * but only if target does not already have a property of the same name.
- * This is not robust in IE for transferring methods that match
- * Object.prototype names, but the uses of mixin here seem unlikely to
- * trigger a problem related to that.
- */
- function mixin(target, source, force) {
- for (var prop in source) {
- if (!(prop in empty) && (!(prop in target) || force)) {
- target[prop] = source[prop];
- }
- }
- return req;
- }
-
- /**
- * Constructs an error with a pointer to an URL with more information.
- * @param {String} id the error ID that maps to an ID on a web page.
- * @param {String} message human readable error.
- * @param {Error} [err] the original error, if there is one.
- *
- * @returns {Error}
- */
- function makeError(id, msg, err) {
- var e = new Error(msg + '\nhttp://requirejs.org/docs/errors.html#' + id);
- if (err) {
- e.originalError = err;
- }
- return e;
- }
-
- /**
- * Used to set up package paths from a packagePaths or packages config object.
- * @param {Object} pkgs the object to store the new package config
- * @param {Array} currentPackages an array of packages to configure
- * @param {String} [dir] a prefix dir to use.
- */
- function configurePackageDir(pkgs, currentPackages, dir) {
- var i, location, pkgObj;
-
- for (i = 0; (pkgObj = currentPackages[i]); i++) {
- pkgObj = typeof pkgObj === "string" ? { name: pkgObj } : pkgObj;
- location = pkgObj.location;
-
- //Add dir to the path, but avoid paths that start with a slash
- //or have a colon (indicates a protocol)
- if (dir && (!location || (location.indexOf("/") !== 0 && location.indexOf(":") === -1))) {
- location = dir + "/" + (location || pkgObj.name);
- }
-
- //Create a brand new object on pkgs, since currentPackages can
- //be passed in again, and config.pkgs is the internal transformed
- //state for all package configs.
- pkgs[pkgObj.name] = {
- name: pkgObj.name,
- location: location || pkgObj.name,
- //Remove leading dot in main, so main paths are normalized,
- //and remove any trailing .js, since different package
- //envs have different conventions: some use a module name,
- //some use a file name.
- main: (pkgObj.main || "main")
- .replace(currDirRegExp, '')
- .replace(jsSuffixRegExp, '')
- };
- }
- }
-
- /**
- * jQuery 1.4.3-1.5.x use a readyWait/ready() pairing to hold DOM
- * ready callbacks, but jQuery 1.6 supports a holdReady() API instead.
- * At some point remove the readyWait/ready() support and just stick
- * with using holdReady.
- */
- function jQueryHoldReady($, shouldHold) {
- if ($.holdReady) {
- $.holdReady(shouldHold);
- } else if (shouldHold) {
- $.readyWait += 1;
- } else {
- $.ready(true);
- }
- }
-
- if (typeof define !== "undefined") {
- //If a define is already in play via another AMD loader,
- //do not overwrite.
- return;
- }
-
- if (typeof requirejs !== "undefined") {
- if (isFunction(requirejs)) {
- //Do not overwrite and existing requirejs instance.
- return;
- } else {
- cfg = requirejs;
- requirejs = undefined;
- }
- }
-
- //Allow for a require config object
- if (typeof require !== "undefined" && !isFunction(require)) {
- //assume it is a config object.
- cfg = require;
- require = undefined;
- }
-
- /**
- * Creates a new context for use in require and define calls.
- * Handle most of the heavy lifting. Do not want to use an object
- * with prototype here to avoid using "this" in require, in case it
- * needs to be used in more super secure envs that do not want this.
- * Also there should not be that many contexts in the page. Usually just
- * one for the default context, but could be extra for multiversion cases
- * or if a package needs a special context for a dependency that conflicts
- * with the standard context.
- */
- function newContext(contextName) {
- var context, resume,
- config = {
- waitSeconds: 7,
- baseUrl: "./",
- paths: {},
- pkgs: {},
- catchError: {}
- },
- defQueue = [],
- specified = {
- "require": true,
- "exports": true,
- "module": true
- },
- urlMap = {},
- defined = {},
- loaded = {},
- waiting = {},
- waitAry = [],
- urlFetched = {},
- managerCounter = 0,
- managerCallbacks = {},
- plugins = {},
- //Used to indicate which modules in a build scenario
- //need to be full executed.
- needFullExec = {},
- fullExec = {},
- resumeDepth = 0;
-
- /**
- * Trims the . and .. from an array of path segments.
- * It will keep a leading path segment if a .. will become
- * the first path segment, to help with module name lookups,
- * which act like paths, but can be remapped. But the end result,
- * all paths that use this function should look normalized.
- * NOTE: this method MODIFIES the input array.
- * @param {Array} ary the array of path segments.
- */
- function trimDots(ary) {
- var i, part;
- for (i = 0; (part = ary[i]); i++) {
- if (part === ".") {
- ary.splice(i, 1);
- i -= 1;
- } else if (part === "..") {
- if (i === 1 && (ary[2] === '..' || ary[0] === '..')) {
- //End of the line. Keep at least one non-dot
- //path segment at the front so it can be mapped
- //correctly to disk. Otherwise, there is likely
- //no path mapping for a path starting with '..'.
- //This can still fail, but catches the most reasonable
- //uses of ..
- break;
- } else if (i > 0) {
- ary.splice(i - 1, 2);
- i -= 2;
- }
- }
- }
- }
-
- /**
- * Given a relative module name, like ./something, normalize it to
- * a real name that can be mapped to a path.
- * @param {String} name the relative name
- * @param {String} baseName a real name that the name arg is relative
- * to.
- * @returns {String} normalized name
- */
- function normalize(name, baseName) {
- var pkgName, pkgConfig;
-
- //Adjust any relative paths.
- if (name && name.charAt(0) === ".") {
- //If have a base name, try to normalize against it,
- //otherwise, assume it is a top-level require that will
- //be relative to baseUrl in the end.
- if (baseName) {
- if (config.pkgs[baseName]) {
- //If the baseName is a package name, then just treat it as one
- //name to concat the name with.
- baseName = [baseName];
- } else {
- //Convert baseName to array, and lop off the last part,
- //so that . matches that "directory" and not name of the baseName's
- //module. For instance, baseName of "one/two/three", maps to
- //"one/two/three.js", but we want the directory, "one/two" for
- //this normalization.
- baseName = baseName.split("/");
- baseName = baseName.slice(0, baseName.length - 1);
- }
-
- name = baseName.concat(name.split("/"));
- trimDots(name);
-
- //Some use of packages may use a . path to reference the
- //"main" module name, so normalize for that.
- pkgConfig = config.pkgs[(pkgName = name[0])];
- name = name.join("/");
- if (pkgConfig && name === pkgName + '/' + pkgConfig.main) {
- name = pkgName;
- }
- } else if (name.indexOf("./") === 0) {
- // No baseName, so this is ID is resolved relative
- // to baseUrl, pull off the leading dot.
- name = name.substring(2);
- }
- }
- return name;
- }
-
- /**
- * Creates a module mapping that includes plugin prefix, module
- * name, and path. If parentModuleMap is provided it will
- * also normalize the name via require.normalize()
- *
- * @param {String} name the module name
- * @param {String} [parentModuleMap] parent module map
- * for the module name, used to resolve relative names.
- *
- * @returns {Object}
- */
- function makeModuleMap(name, parentModuleMap) {
- var index = name ? name.indexOf("!") : -1,
- prefix = null,
- parentName = parentModuleMap ? parentModuleMap.name : null,
- originalName = name,
- normalizedName, url, pluginModule;
-
- if (index !== -1) {
- prefix = name.substring(0, index);
- name = name.substring(index + 1, name.length);
- }
-
- if (prefix) {
- prefix = normalize(prefix, parentName);
- }
-
- //Account for relative paths if there is a base name.
- if (name) {
- if (prefix) {
- pluginModule = defined[prefix];
- if (pluginModule && pluginModule.normalize) {
- //Plugin is loaded, use its normalize method.
- normalizedName = pluginModule.normalize(name, function (name) {
- return normalize(name, parentName);
- });
- } else {
- normalizedName = normalize(name, parentName);
- }
- } else {
- //A regular module.
- normalizedName = normalize(name, parentName);
-
- url = urlMap[normalizedName];
- if (!url) {
- //Calculate url for the module, if it has a name.
- //Use name here since nameToUrl also calls normalize,
- //and for relative names that are outside the baseUrl
- //this causes havoc. Was thinking of just removing
- //parentModuleMap to avoid extra normalization, but
- //normalize() still does a dot removal because of
- //issue #142, so just pass in name here and redo
- //the normalization. Paths outside baseUrl are just
- //messy to support.
- url = context.nameToUrl(name, null, parentModuleMap);
-
- //Store the URL mapping for later.
- urlMap[normalizedName] = url;
- }
- }
- }
-
- return {
- prefix: prefix,
- name: normalizedName,
- parentMap: parentModuleMap,
- url: url,
- originalName: originalName,
- fullName: prefix ? prefix + "!" + (normalizedName || '') : normalizedName
- };
- }
-
- /**
- * Determine if priority loading is done. If so clear the priorityWait
- */
- function isPriorityDone() {
- var priorityDone = true,
- priorityWait = config.priorityWait,
- priorityName, i;
- if (priorityWait) {
- for (i = 0; (priorityName = priorityWait[i]); i++) {
- if (!loaded[priorityName]) {
- priorityDone = false;
- break;
- }
- }
- if (priorityDone) {
- delete config.priorityWait;
- }
- }
- return priorityDone;
- }
-
- function makeContextModuleFunc(func, relModuleMap, enableBuildCallback) {
- return function () {
- //A version of a require function that passes a moduleName
- //value for items that may need to
- //look up paths relative to the moduleName
- var args = aps.call(arguments, 0), lastArg;
- if (enableBuildCallback &&
- isFunction((lastArg = args[args.length - 1]))) {
- lastArg.__requireJsBuild = true;
- }
- args.push(relModuleMap);
- return func.apply(null, args);
- };
- }
-
- /**
- * Helper function that creates a require function object to give to
- * modules that ask for it as a dependency. It needs to be specific
- * per module because of the implication of path mappings that may
- * need to be relative to the module name.
- */
- function makeRequire(relModuleMap, enableBuildCallback, altRequire) {
- var modRequire = makeContextModuleFunc(altRequire || context.require, relModuleMap, enableBuildCallback);
-
- mixin(modRequire, {
- nameToUrl: makeContextModuleFunc(context.nameToUrl, relModuleMap),
- toUrl: makeContextModuleFunc(context.toUrl, relModuleMap),
- defined: makeContextModuleFunc(context.requireDefined, relModuleMap),
- specified: makeContextModuleFunc(context.requireSpecified, relModuleMap),
- isBrowser: req.isBrowser
- });
- return modRequire;
- }
-
- /*
- * Queues a dependency for checking after the loader is out of a
- * "paused" state, for example while a script file is being loaded
- * in the browser, where it may have many modules defined in it.
- */
- function queueDependency(manager) {
- context.paused.push(manager);
- }
-
- function execManager(manager) {
- var i, ret, err, errFile, errModuleTree,
- cb = manager.callback,
- map = manager.map,
- fullName = map.fullName,
- args = manager.deps,
- listeners = manager.listeners,
- cjsModule;
-
- //Call the callback to define the module, if necessary.
- if (cb && isFunction(cb)) {
- if (config.catchError.define) {
- try {
- ret = req.execCb(fullName, manager.callback, args, defined[fullName]);
- } catch (e) {
- err = e;
- }
- } else {
- ret = req.execCb(fullName, manager.callback, args, defined[fullName]);
- }
-
- if (fullName) {
- //If setting exports via "module" is in play,
- //favor that over return value and exports. After that,
- //favor a non-undefined return value over exports use.
- cjsModule = manager.cjsModule;
- if (cjsModule &&
- cjsModule.exports !== undefined &&
- //Make sure it is not already the exports value
- cjsModule.exports !== defined[fullName]) {
- ret = defined[fullName] = manager.cjsModule.exports;
- } else if (ret === undefined && manager.usingExports) {
- //exports already set the defined value.
- ret = defined[fullName];
- } else {
- //Use the return value from the function.
- defined[fullName] = ret;
- //If this module needed full execution in a build
- //environment, mark that now.
- if (needFullExec[fullName]) {
- fullExec[fullName] = true;
- }
- }
- }
- } else if (fullName) {
- //May just be an object definition for the module. Only
- //worry about defining if have a module name.
- ret = defined[fullName] = cb;
-
- //If this module needed full execution in a build
- //environment, mark that now.
- if (needFullExec[fullName]) {
- fullExec[fullName] = true;
- }
- }
-
- //Clean up waiting. Do this before error calls, and before
- //calling back listeners, so that bookkeeping is correct
- //in the event of an error and error is reported in correct order,
- //since the listeners will likely have errors if the
- //onError function does not throw.
- if (waiting[manager.id]) {
- delete waiting[manager.id];
- manager.isDone = true;
- context.waitCount -= 1;
- if (context.waitCount === 0) {
- //Clear the wait array used for cycles.
- waitAry = [];
- }
- }
-
- //Do not need to track manager callback now that it is defined.
- delete managerCallbacks[fullName];
-
- //Allow instrumentation like the optimizer to know the order
- //of modules executed and their dependencies.
- if (req.onResourceLoad && !manager.placeholder) {
- req.onResourceLoad(context, map, manager.depArray);
- }
-
- if (err) {
- errFile = (fullName ? makeModuleMap(fullName).url : '') ||
- err.fileName || err.sourceURL;
- errModuleTree = err.moduleTree;
- err = makeError('defineerror', 'Error evaluating ' +
- 'module "' + fullName + '" at location "' +
- errFile + '":\n' +
- err + '\nfileName:' + errFile +
- '\nlineNumber: ' + (err.lineNumber || err.line), err);
- err.moduleName = fullName;
- err.moduleTree = errModuleTree;
- return req.onError(err);
- }
-
- //Let listeners know of this manager's value.
- for (i = 0; (cb = listeners[i]); i++) {
- cb(ret);
- }
-
- return undefined;
- }
-
- /**
- * Helper that creates a callack function that is called when a dependency
- * is ready, and sets the i-th dependency for the manager as the
- * value passed to the callback generated by this function.
- */
- function makeArgCallback(manager, i) {
- return function (value) {
- //Only do the work if it has not been done
- //already for a dependency. Cycle breaking
- //logic in forceExec could mean this function
- //is called more than once for a given dependency.
- if (!manager.depDone[i]) {
- manager.depDone[i] = true;
- manager.deps[i] = value;
- manager.depCount -= 1;
- if (!manager.depCount) {
- //All done, execute!
- execManager(manager);
- }
- }
- };
- }
-
- function callPlugin(pluginName, depManager) {
- var map = depManager.map,
- fullName = map.fullName,
- name = map.name,
- plugin = plugins[pluginName] ||
- (plugins[pluginName] = defined[pluginName]),
- load;
-
- //No need to continue if the manager is already
- //in the process of loading.
- if (depManager.loading) {
- return;
- }
- depManager.loading = true;
-
- load = function (ret) {
- depManager.callback = function () {
- return ret;
- };
- execManager(depManager);
-
- loaded[depManager.id] = true;
-
- //The loading of this plugin
- //might have placed other things
- //in the paused queue. In particular,
- //a loader plugin that depends on
- //a different plugin loaded resource.
- resume();
- };
-
- //Allow plugins to load other code without having to know the
- //context or how to "complete" the load.
- load.fromText = function (moduleName, text) {
- /*jslint evil: true */
- var hasInteractive = useInteractive;
-
- //Indicate a the module is in process of loading.
- loaded[moduleName] = false;
- context.scriptCount += 1;
-
- //Indicate this is not a "real" module, so do not track it
- //for builds, it does not map to a real file.
- context.fake[moduleName] = true;
-
- //Turn off interactive script matching for IE for any define
- //calls in the text, then turn it back on at the end.
- if (hasInteractive) {
- useInteractive = false;
- }
-
- req.exec(text);
-
- if (hasInteractive) {
- useInteractive = true;
- }
-
- //Support anonymous modules.
- context.completeLoad(moduleName);
- };
-
- //No need to continue if the plugin value has already been
- //defined by a build.
- if (fullName in defined) {
- load(defined[fullName]);
- } else {
- //Use parentName here since the plugin's name is not reliable,
- //could be some weird string with no path that actually wants to
- //reference the parentName's path.
- plugin.load(name, makeRequire(map.parentMap, true, function (deps, cb) {
- var moduleDeps = [],
- i, dep, depMap;
- //Convert deps to full names and hold on to them
- //for reference later, when figuring out if they
- //are blocked by a circular dependency.
- for (i = 0; (dep = deps[i]); i++) {
- depMap = makeModuleMap(dep, map.parentMap);
- deps[i] = depMap.fullName;
- if (!depMap.prefix) {
- moduleDeps.push(deps[i]);
- }
- }
- depManager.moduleDeps = (depManager.moduleDeps || []).concat(moduleDeps);
- return context.require(deps, cb);
- }), load, config);
- }
- }
-
- /**
- * Adds the manager to the waiting queue. Only fully
- * resolved items should be in the waiting queue.
- */
- function addWait(manager) {
- if (!waiting[manager.id]) {
- waiting[manager.id] = manager;
- waitAry.push(manager);
- context.waitCount += 1;
- }
- }
-
- /**
- * Function added to every manager object. Created out here
- * to avoid new function creation for each manager instance.
- */
- function managerAdd(cb) {
- this.listeners.push(cb);
- }
-
- function getManager(map, shouldQueue) {
- var fullName = map.fullName,
- prefix = map.prefix,
- plugin = prefix ? plugins[prefix] ||
- (plugins[prefix] = defined[prefix]) : null,
- manager, created, pluginManager, prefixMap;
-
- if (fullName) {
- manager = managerCallbacks[fullName];
- }
-
- if (!manager) {
- created = true;
- manager = {
- //ID is just the full name, but if it is a plugin resource
- //for a plugin that has not been loaded,
- //then add an ID counter to it.
- id: (prefix && !plugin ?
- (managerCounter++) + '__p@:' : '') +
- (fullName || '__r@' + (managerCounter++)),
- map: map,
- depCount: 0,
- depDone: [],
- depCallbacks: [],
- deps: [],
- listeners: [],
- add: managerAdd
- };
-
- specified[manager.id] = true;
-
- //Only track the manager/reuse it if this is a non-plugin
- //resource. Also only track plugin resources once
- //the plugin has been loaded, and so the fullName is the
- //true normalized value.
- if (fullName && (!prefix || plugins[prefix])) {
- managerCallbacks[fullName] = manager;
- }
- }
-
- //If there is a plugin needed, but it is not loaded,
- //first load the plugin, then continue on.
- if (prefix && !plugin) {
- prefixMap = makeModuleMap(prefix);
-
- //Clear out defined and urlFetched if the plugin was previously
- //loaded/defined, but not as full module (as in a build
- //situation). However, only do this work if the plugin is in
- //defined but does not have a module export value.
- if (prefix in defined && !defined[prefix]) {
- delete defined[prefix];
- delete urlFetched[prefixMap.url];
- }
-
- pluginManager = getManager(prefixMap, true);
- pluginManager.add(function (plugin) {
- //Create a new manager for the normalized
- //resource ID and have it call this manager when
- //done.
- var newMap = makeModuleMap(map.originalName, map.parentMap),
- normalizedManager = getManager(newMap, true);
-
- //Indicate this manager is a placeholder for the real,
- //normalized thing. Important for when trying to map
- //modules and dependencies, for instance, in a build.
- manager.placeholder = true;
-
- normalizedManager.add(function (resource) {
- manager.callback = function () {
- return resource;
- };
- execManager(manager);
- });
- });
- } else if (created && shouldQueue) {
- //Indicate the resource is not loaded yet if it is to be
- //queued.
- loaded[manager.id] = false;
- queueDependency(manager);
- addWait(manager);
- }
-
- return manager;
- }
-
- function main(inName, depArray, callback, relModuleMap) {
- var moduleMap = makeModuleMap(inName, relModuleMap),
- name = moduleMap.name,
- fullName = moduleMap.fullName,
- manager = getManager(moduleMap),
- id = manager.id,
- deps = manager.deps,
- i, depArg, depName, depPrefix, cjsMod;
-
- if (fullName) {
- //If module already defined for context, or already loaded,
- //then leave. Also leave if jQuery is registering but it does
- //not match the desired version number in the config.
- if (fullName in defined || loaded[id] === true ||
- (fullName === "jquery" && config.jQuery &&
- config.jQuery !== callback().fn.jquery)) {
- return;
- }
-
- //Set specified/loaded here for modules that are also loaded
- //as part of a layer, where onScriptLoad is not fired
- //for those cases. Do this after the inline define and
- //dependency tracing is done.
- specified[id] = true;
- loaded[id] = true;
-
- //If module is jQuery set up delaying its dom ready listeners.
- if (fullName === "jquery" && callback) {
- jQueryCheck(callback());
- }
- }
-
- //Attach real depArray and callback to the manager. Do this
- //only if the module has not been defined already, so do this after
- //the fullName checks above. IE can call main() more than once
- //for a module.
- manager.depArray = depArray;
- manager.callback = callback;
-
- //Add the dependencies to the deps field, and register for callbacks
- //on the dependencies.
- for (i = 0; i < depArray.length; i++) {
- depArg = depArray[i];
- //There could be cases like in IE, where a trailing comma will
- //introduce a null dependency, so only treat a real dependency
- //value as a dependency.
- if (depArg) {
- //Split the dependency name into plugin and name parts
- depArg = makeModuleMap(depArg, (name ? moduleMap : relModuleMap));
- depName = depArg.fullName;
- depPrefix = depArg.prefix;
-
- //Fix the name in depArray to be just the name, since
- //that is how it will be called back later.
- depArray[i] = depName;
-
- //Fast path CommonJS standard dependencies.
- if (depName === "require") {
- deps[i] = makeRequire(moduleMap);
- } else if (depName === "exports") {
- //CommonJS module spec 1.1
- deps[i] = defined[fullName] = {};
- manager.usingExports = true;
- } else if (depName === "module") {
- //CommonJS module spec 1.1
- manager.cjsModule = cjsMod = deps[i] = {
- id: name,
- uri: name ? context.nameToUrl(name, null, relModuleMap) : undefined,
- exports: defined[fullName]
- };
- } else if (depName in defined && !(depName in waiting) &&
- (!(fullName in needFullExec) ||
- (fullName in needFullExec && fullExec[depName]))) {
- //Module already defined, and not in a build situation
- //where the module is a something that needs full
- //execution and this dependency has not been fully
- //executed. See r.js's requirePatch.js for more info
- //on fullExec.
- deps[i] = defined[depName];
- } else {
- //Mark this dependency as needing full exec if
- //the current module needs full exec.
- if (fullName in needFullExec) {
- needFullExec[depName] = true;
- //Reset state so fully executed code will get
- //picked up correctly.
- delete defined[depName];
- urlFetched[depArg.url] = false;
- }
-
- //Either a resource that is not loaded yet, or a plugin
- //resource for either a plugin that has not
- //loaded yet.
- manager.depCount += 1;
- manager.depCallbacks[i] = makeArgCallback(manager, i);
- getManager(depArg, true).add(manager.depCallbacks[i]);
- }
- }
- }
-
- //Do not bother tracking the manager if it is all done.
- if (!manager.depCount) {
- //All done, execute!
- execManager(manager);
- } else {
- addWait(manager);
- }
- }
-
- /**
- * Convenience method to call main for a define call that was put on
- * hold in the defQueue.
- */
- function callDefMain(args) {
- main.apply(null, args);
- }
-
- /**
- * jQuery 1.4.3+ supports ways to hold off calling
- * calling jQuery ready callbacks until all scripts are loaded. Be sure
- * to track it if the capability exists.. Also, since jQuery 1.4.3 does
- * not register as a module, need to do some global inference checking.
- * Even if it does register as a module, not guaranteed to be the precise
- * name of the global. If a jQuery is tracked for this context, then go
- * ahead and register it as a module too, if not already in process.
- */
- jQueryCheck = function (jqCandidate) {
- if (!context.jQuery) {
- var $ = jqCandidate || (typeof jQuery !== "undefined" ? jQuery : null);
-
- if ($) {
- //If a specific version of jQuery is wanted, make sure to only
- //use this jQuery if it matches.
- if (config.jQuery && $.fn.jquery !== config.jQuery) {
- return;
- }
-
- if ("holdReady" in $ || "readyWait" in $) {
- context.jQuery = $;
-
- //Manually create a "jquery" module entry if not one already
- //or in process. Note this could trigger an attempt at
- //a second jQuery registration, but does no harm since
- //the first one wins, and it is the same value anyway.
- callDefMain(["jquery", [], function () {
- return jQuery;
- }]);
-
- //Ask jQuery to hold DOM ready callbacks.
- if (context.scriptCount) {
- jQueryHoldReady($, true);
- context.jQueryIncremented = true;
- }
- }
- }
- }
- };
-
- function findCycle(manager, traced) {
- var fullName = manager.map.fullName,
- depArray = manager.depArray,
- fullyLoaded = true,
- i, depName, depManager, result;
-
- if (manager.isDone || !fullName || !loaded[fullName]) {
- return result;
- }
-
- //Found the cycle.
- if (traced[fullName]) {
- return manager;
- }
-
- traced[fullName] = true;
-
- //Trace through the dependencies.
- if (depArray) {
- for (i = 0; i < depArray.length; i++) {
- //Some array members may be null, like if a trailing comma
- //IE, so do the explicit [i] access and check if it has a value.
- depName = depArray[i];
- if (!loaded[depName] && !reservedDependencies[depName]) {
- fullyLoaded = false;
- break;
- }
- depManager = waiting[depName];
- if (depManager && !depManager.isDone && loaded[depName]) {
- result = findCycle(depManager, traced);
- if (result) {
- break;
- }
- }
- }
- if (!fullyLoaded) {
- //Discard the cycle that was found, since it cannot
- //be forced yet. Also clear this module from traced.
- result = undefined;
- delete traced[fullName];
- }
- }
-
- return result;
- }
-
- function forceExec(manager, traced) {
- var fullName = manager.map.fullName,
- depArray = manager.depArray,
- i, depName, depManager, prefix, prefixManager, value;
-
-
- if (manager.isDone || !fullName || !loaded[fullName]) {
- return undefined;
- }
-
- if (fullName) {
- if (traced[fullName]) {
- return defined[fullName];
- }
-
- traced[fullName] = true;
- }
-
- //Trace through the dependencies.
- if (depArray) {
- for (i = 0; i < depArray.length; i++) {
- //Some array members may be null, like if a trailing comma
- //IE, so do the explicit [i] access and check if it has a value.
- depName = depArray[i];
- if (depName) {
- //First, make sure if it is a plugin resource that the
- //plugin is not blocked.
- prefix = makeModuleMap(depName).prefix;
- if (prefix && (prefixManager = waiting[prefix])) {
- forceExec(prefixManager, traced);
- }
- depManager = waiting[depName];
- if (depManager && !depManager.isDone && loaded[depName]) {
- value = forceExec(depManager, traced);
- manager.depCallbacks[i](value);
- }
- }
- }
- }
-
- return defined[fullName];
- }
-
- /**
- * Checks if all modules for a context are loaded, and if so, evaluates the
- * new ones in right dependency order.
- *
- * @private
- */
- function checkLoaded() {
- var waitInterval = config.waitSeconds * 1000,
- //It is possible to disable the wait interval by using waitSeconds of 0.
- expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(),
- noLoads = "", hasLoadedProp = false, stillLoading = false,
- cycleDeps = [],
- i, prop, err, manager, cycleManager, moduleDeps;
-
- //If there are items still in the paused queue processing wait.
- //This is particularly important in the sync case where each paused
- //item is processed right away but there may be more waiting.
- if (context.pausedCount > 0) {
- return undefined;
- }
-
- //Determine if priority loading is done. If so clear the priority. If
- //not, then do not check
- if (config.priorityWait) {
- if (isPriorityDone()) {
- //Call resume, since it could have
- //some waiting dependencies to trace.
- resume();
- } else {
- return undefined;
- }
- }
-
- //See if anything is still in flight.
- for (prop in loaded) {
- if (!(prop in empty)) {
- hasLoadedProp = true;
- if (!loaded[prop]) {
- if (expired) {
- noLoads += prop + " ";
- } else {
- stillLoading = true;
- if (prop.indexOf('!') === -1) {
- //No reason to keep looking for unfinished
- //loading. If the only stillLoading is a
- //plugin resource though, keep going,
- //because it may be that a plugin resource
- //is waiting on a non-plugin cycle.
- cycleDeps = [];
- break;
- } else {
- moduleDeps = managerCallbacks[prop] && managerCallbacks[prop].moduleDeps;
- if (moduleDeps) {
- cycleDeps.push.apply(cycleDeps, moduleDeps);
- }
- }
- }
- }
- }
- }
-
- //Check for exit conditions.
- if (!hasLoadedProp && !context.waitCount) {
- //If the loaded object had no items, then the rest of
- //the work below does not need to be done.
- return undefined;
- }
- if (expired && noLoads) {
- //If wait time expired, throw error of unloaded modules.
- err = makeError("timeout", "Load timeout for modules: " + noLoads);
- err.requireType = "timeout";
- err.requireModules = noLoads;
- err.contextName = context.contextName;
- return req.onError(err);
- }
-
- //If still loading but a plugin is waiting on a regular module cycle
- //break the cycle.
- if (stillLoading && cycleDeps.length) {
- for (i = 0; (manager = waiting[cycleDeps[i]]); i++) {
- if ((cycleManager = findCycle(manager, {}))) {
- forceExec(cycleManager, {});
- break;
- }
- }
-
- }
-
- //If still waiting on loads, and the waiting load is something
- //other than a plugin resource, or there are still outstanding
- //scripts, then just try back later.
- if (!expired && (stillLoading || context.scriptCount)) {
- //Something is still waiting to load. Wait for it, but only
- //if a timeout is not already in effect.
- if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) {
- checkLoadedTimeoutId = setTimeout(function () {
- checkLoadedTimeoutId = 0;
- checkLoaded();
- }, 50);
- }
- return undefined;
- }
-
- //If still have items in the waiting cue, but all modules have
- //been loaded, then it means there are some circular dependencies
- //that need to be broken.
- //However, as a waiting thing is fired, then it can add items to
- //the waiting cue, and those items should not be fired yet, so
- //make sure to redo the checkLoaded call after breaking a single
- //cycle, if nothing else loaded then this logic will pick it up
- //again.
- if (context.waitCount) {
- //Cycle through the waitAry, and call items in sequence.
- for (i = 0; (manager = waitAry[i]); i++) {
- forceExec(manager, {});
- }
-
- //If anything got placed in the paused queue, run it down.
- if (context.paused.length) {
- resume();
- }
-
- //Only allow this recursion to a certain depth. Only
- //triggered by errors in calling a module in which its
- //modules waiting on it cannot finish loading, or some circular
- //dependencies that then may add more dependencies.
- //The value of 5 is a bit arbitrary. Hopefully just one extra
- //pass, or two for the case of circular dependencies generating
- //more work that gets resolved in the sync node case.
- if (checkLoadedDepth < 5) {
- checkLoadedDepth += 1;
- checkLoaded();
- }
- }
-
- checkLoadedDepth = 0;
-
- //Check for DOM ready, and nothing is waiting across contexts.
- req.checkReadyState();
-
- return undefined;
- }
-
- /**
- * Resumes tracing of dependencies and then checks if everything is loaded.
- */
- resume = function () {
- var manager, map, url, i, p, args, fullName;
-
- //Any defined modules in the global queue, intake them now.
- context.takeGlobalQueue();
-
- resumeDepth += 1;
-
- if (context.scriptCount <= 0) {
- //Synchronous envs will push the number below zero with the
- //decrement above, be sure to set it back to zero for good measure.
- //require() calls that also do not end up loading scripts could
- //push the number negative too.
- context.scriptCount = 0;
- }
-
- //Make sure any remaining defQueue items get properly processed.
- while (defQueue.length) {
- args = defQueue.shift();
- if (args[0] === null) {
- return req.onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + args[args.length - 1]));
- } else {
- callDefMain(args);
- }
- }
-
- //Skip the resume of paused dependencies
- //if current context is in priority wait.
- if (!config.priorityWait || isPriorityDone()) {
- while (context.paused.length) {
- p = context.paused;
- context.pausedCount += p.length;
- //Reset paused list
- context.paused = [];
-
- for (i = 0; (manager = p[i]); i++) {
- map = manager.map;
- url = map.url;
- fullName = map.fullName;
-
- //If the manager is for a plugin managed resource,
- //ask the plugin to load it now.
- if (map.prefix) {
- callPlugin(map.prefix, manager);
- } else {
- //Regular dependency.
- if (!urlFetched[url] && !loaded[fullName]) {
- req.load(context, fullName, url);
-
- //Mark the URL as fetched, but only if it is
- //not an empty: URL, used by the optimizer.
- //In that case we need to be sure to call
- //load() for each module that is mapped to
- //empty: so that dependencies are satisfied
- //correctly.
- if (url.indexOf('empty:') !== 0) {
- urlFetched[url] = true;
- }
- }
- }
- }
-
- //Move the start time for timeout forward.
- context.startTime = (new Date()).getTime();
- context.pausedCount -= p.length;
- }
- }
-
- //Only check if loaded when resume depth is 1. It is likely that
- //it is only greater than 1 in sync environments where a factory
- //function also then calls the callback-style require. In those
- //cases, the checkLoaded should not occur until the resume
- //depth is back at the top level.
- if (resumeDepth === 1) {
- checkLoaded();
- }
-
- resumeDepth -= 1;
-
- return undefined;
- };
-
- //Define the context object. Many of these fields are on here
- //just to make debugging easier.
- context = {
- contextName: contextName,
- config: config,
- defQueue: defQueue,
- waiting: waiting,
- waitCount: 0,
- specified: specified,
- loaded: loaded,
- urlMap: urlMap,
- urlFetched: urlFetched,
- scriptCount: 0,
- defined: defined,
- paused: [],
- pausedCount: 0,
- plugins: plugins,
- needFullExec: needFullExec,
- fake: {},
- fullExec: fullExec,
- managerCallbacks: managerCallbacks,
- makeModuleMap: makeModuleMap,
- normalize: normalize,
- /**
- * Set a configuration for the context.
- * @param {Object} cfg config object to integrate.
- */
- configure: function (cfg) {
- var paths, prop, packages, pkgs, packagePaths, requireWait;
-
- //Make sure the baseUrl ends in a slash.
- if (cfg.baseUrl) {
- if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== "/") {
- cfg.baseUrl += "/";
- }
- }
-
- //Save off the paths and packages since they require special processing,
- //they are additive.
- paths = config.paths;
- packages = config.packages;
- pkgs = config.pkgs;
-
- //Mix in the config values, favoring the new values over
- //existing ones in context.config.
- mixin(config, cfg, true);
-
- //Adjust paths if necessary.
- if (cfg.paths) {
- for (prop in cfg.paths) {
- if (!(prop in empty)) {
- paths[prop] = cfg.paths[prop];
- }
- }
- config.paths = paths;
- }
-
- packagePaths = cfg.packagePaths;
- if (packagePaths || cfg.packages) {
- //Convert packagePaths into a packages config.
- if (packagePaths) {
- for (prop in packagePaths) {
- if (!(prop in empty)) {
- configurePackageDir(pkgs, packagePaths[prop], prop);
- }
- }
- }
-
- //Adjust packages if necessary.
- if (cfg.packages) {
- configurePackageDir(pkgs, cfg.packages);
- }
-
- //Done with modifications, assing packages back to context config
- config.pkgs = pkgs;
- }
-
- //If priority loading is in effect, trigger the loads now
- if (cfg.priority) {
- //Hold on to requireWait value, and reset it after done
- requireWait = context.requireWait;
-
- //Allow tracing some require calls to allow the fetching
- //of the priority config.
- context.requireWait = false;
- //But first, call resume to register any defined modules that may
- //be in a data-main built file before the priority config
- //call.
- resume();
-
- context.require(cfg.priority);
-
- //Trigger a resume right away, for the case when
- //the script with the priority load is done as part
- //of a data-main call. In that case the normal resume
- //call will not happen because the scriptCount will be
- //at 1, since the script for data-main is being processed.
- resume();
-
- //Restore previous state.
- context.requireWait = requireWait;
- config.priorityWait = cfg.priority;
- }
-
- //If a deps array or a config callback is specified, then call
- //require with those args. This is useful when require is defined as a
- //config object before require.js is loaded.
- if (cfg.deps || cfg.callback) {
- context.require(cfg.deps || [], cfg.callback);
- }
- },
-
- requireDefined: function (moduleName, relModuleMap) {
- return makeModuleMap(moduleName, relModuleMap).fullName in defined;
- },
-
- requireSpecified: function (moduleName, relModuleMap) {
- return makeModuleMap(moduleName, relModuleMap).fullName in specified;
- },
-
- require: function (deps, callback, relModuleMap) {
- var moduleName, fullName, moduleMap;
- if (typeof deps === "string") {
- if (isFunction(callback)) {
- //Invalid call
- return req.onError(makeError("requireargs", "Invalid require call"));
- }
-
- //Synchronous access to one module. If require.get is
- //available (as in the Node adapter), prefer that.
- //In this case deps is the moduleName and callback is
- //the relModuleMap
- if (req.get) {
- return req.get(context, deps, callback);
- }
-
- //Just return the module wanted. In this scenario, the
- //second arg (if passed) is just the relModuleMap.
- moduleName = deps;
- relModuleMap = callback;
-
- //Normalize module name, if it contains . or ..
- moduleMap = makeModuleMap(moduleName, relModuleMap);
- fullName = moduleMap.fullName;
-
- if (!(fullName in defined)) {
- return req.onError(makeError("notloaded", "Module name '" +
- moduleMap.fullName +
- "' has not been loaded yet for context: " +
- contextName));
- }
- return defined[fullName];
- }
-
- //Call main but only if there are dependencies or
- //a callback to call.
- if (deps && deps.length || callback) {
- main(null, deps, callback, relModuleMap);
- }
-
- //If the require call does not trigger anything new to load,
- //then resume the dependency processing.
- if (!context.requireWait) {
- while (!context.scriptCount && context.paused.length) {
- resume();
- }
- }
- return context.require;
- },
-
- /**
- * Internal method to transfer globalQueue items to this context's
- * defQueue.
- */
- takeGlobalQueue: function () {
- //Push all the globalDefQueue items into the context's defQueue
- if (globalDefQueue.length) {
- //Array splice in the values since the context code has a
- //local var ref to defQueue, so cannot just reassign the one
- //on context.
- apsp.apply(context.defQueue,
- [context.defQueue.length - 1, 0].concat(globalDefQueue));
- globalDefQueue = [];
- }
- },
-
- /**
- * Internal method used by environment adapters to complete a load event.
- * A load event could be a script load or just a load pass from a synchronous
- * load call.
- * @param {String} moduleName the name of the module to potentially complete.
- */
- completeLoad: function (moduleName) {
- var args;
-
- context.takeGlobalQueue();
-
- while (defQueue.length) {
- args = defQueue.shift();
-
- if (args[0] === null) {
- args[0] = moduleName;
- break;
- } else if (args[0] === moduleName) {
- //Found matching define call for this script!
- break;
- } else {
- //Some other named define call, most likely the result
- //of a build layer that included many define calls.
- callDefMain(args);
- args = null;
- }
- }
- if (args) {
- callDefMain(args);
- } else {
- //A script that does not call define(), so just simulate
- //the call for it. Special exception for jQuery dynamic load.
- callDefMain([moduleName, [],
- moduleName === "jquery" && typeof jQuery !== "undefined" ?
- function () {
- return jQuery;
- } : null]);
- }
-
- //Doing this scriptCount decrement branching because sync envs
- //need to decrement after resume, otherwise it looks like
- //loading is complete after the first dependency is fetched.
- //For browsers, it works fine to decrement after, but it means
- //the checkLoaded setTimeout 50 ms cost is taken. To avoid
- //that cost, decrement beforehand.
- if (req.isAsync) {
- context.scriptCount -= 1;
- }
- resume();
- if (!req.isAsync) {
- context.scriptCount -= 1;
- }
- },
-
- /**
- * Converts a module name + .extension into an URL path.
- * *Requires* the use of a module name. It does not support using
- * plain URLs like nameToUrl.
- */
- toUrl: function (moduleNamePlusExt, relModuleMap) {
- var index = moduleNamePlusExt.lastIndexOf("."),
- ext = null;
-
- if (index !== -1) {
- ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length);
- moduleNamePlusExt = moduleNamePlusExt.substring(0, index);
- }
-
- return context.nameToUrl(moduleNamePlusExt, ext, relModuleMap);
- },
-
- /**
- * Converts a module name to a file path. Supports cases where
- * moduleName may actually be just an URL.
- */
- nameToUrl: function (moduleName, ext, relModuleMap) {
- var paths, pkgs, pkg, pkgPath, syms, i, parentModule, url,
- config = context.config;
-
- //Normalize module name if have a base relative module name to work from.
- moduleName = normalize(moduleName, relModuleMap && relModuleMap.fullName);
-
- //If a colon is in the URL, it indicates a protocol is used and it is just
- //an URL to a file, or if it starts with a slash or ends with .js, it is just a plain file.
- //The slash is important for protocol-less URLs as well as full paths.
- if (req.jsExtRegExp.test(moduleName)) {
- //Just a plain path, not module name lookup, so just return it.
- //Add extension if it is included. This is a bit wonky, only non-.js things pass
- //an extension, this method probably needs to be reworked.
- url = moduleName + (ext ? ext : "");
- } else {
- //A module that needs to be converted to a path.
- paths = config.paths;
- pkgs = config.pkgs;
-
- syms = moduleName.split("/");
- //For each module name segment, see if there is a path
- //registered for it. Start with most specific name
- //and work up from it.
- for (i = syms.length; i > 0; i--) {
- parentModule = syms.slice(0, i).join("/");
- if (paths[parentModule]) {
- syms.splice(0, i, paths[parentModule]);
- break;
- } else if ((pkg = pkgs[parentModule])) {
- //If module name is just the package name, then looking
- //for the main module.
- if (moduleName === pkg.name) {
- pkgPath = pkg.location + '/' + pkg.main;
- } else {
- pkgPath = pkg.location;
- }
- syms.splice(0, i, pkgPath);
- break;
- }
- }
-
- //Join the path parts together, then figure out if baseUrl is needed.
- url = syms.join("/") + (ext || ".js");
- url = (url.charAt(0) === '/' || url.match(/^\w+:/) ? "" : config.baseUrl) + url;
- }
-
- return config.urlArgs ? url +
- ((url.indexOf('?') === -1 ? '?' : '&') +
- config.urlArgs) : url;
- }
- };
-
- //Make these visible on the context so can be called at the very
- //end of the file to bootstrap
- context.jQueryCheck = jQueryCheck;
- context.resume = resume;
-
- return context;
- }
-
- /**
- * Main entry point.
- *
- * If the only argument to require is a string, then the module that
- * is represented by that string is fetched for the appropriate context.
- *
- * If the first argument is an array, then it will be treated as an array
- * of dependency string names to fetch. An optional function callback can
- * be specified to execute when all of those dependencies are available.
- *
- * Make a local req variable to help Caja compliance (it assumes things
- * on a require that are not standardized), and to give a short
- * name for minification/local scope use.
- */
- req = requirejs = function (deps, callback) {
-
- //Find the right context, use default
- var contextName = defContextName,
- context, config;
-
- // Determine if have config object in the call.
- if (!isArray(deps) && typeof deps !== "string") {
- // deps is a config object
- config = deps;
- if (isArray(callback)) {
- // Adjust args if there are dependencies
- deps = callback;
- callback = arguments[2];
- } else {
- deps = [];
- }
- }
-
- if (config && config.context) {
- contextName = config.context;
- }
-
- context = contexts[contextName] ||
- (contexts[contextName] = newContext(contextName));
-
- if (config) {
- context.configure(config);
- }
-
- return context.require(deps, callback);
- };
-
- /**
- * Support require.config() to make it easier to cooperate with other
- * AMD loaders on globally agreed names.
- */
- req.config = function (config) {
- return req(config);
- };
-
- /**
- * Export require as a global, but only if it does not already exist.
- */
- if (!require) {
- require = req;
- }
-
- /**
- * Global require.toUrl(), to match global require, mostly useful
- * for debugging/work in the global space.
- */
- req.toUrl = function (moduleNamePlusExt) {
- return contexts[defContextName].toUrl(moduleNamePlusExt);
- };
-
- req.version = version;
-
- //Used to filter out dependencies that are already paths.
- req.jsExtRegExp = /^\/|:|\?|\.js$/;
- s = req.s = {
- contexts: contexts,
- //Stores a list of URLs that should not get async script tag treatment.
- skipAsync: {}
- };
-
- req.isAsync = req.isBrowser = isBrowser;
- if (isBrowser) {
- head = s.head = document.getElementsByTagName("head")[0];
- //If BASE tag is in play, using appendChild is a problem for IE6.
- //When that browser dies, this can be removed. Details in this jQuery bug:
- //http://dev.jquery.com/ticket/2709
- baseElement = document.getElementsByTagName("base")[0];
- if (baseElement) {
- head = s.head = baseElement.parentNode;
- }
- }
-
- /**
- * Any errors that require explicitly generates will be passed to this
- * function. Intercept/override it if you want custom error handling.
- * @param {Error} err the error object.
- */
- req.onError = function (err) {
- throw err;
- };
-
- /**
- * Does the request to load a module for the browser case.
- * Make this a separate function to allow other environments
- * to override it.
- *
- * @param {Object} context the require context to find state.
- * @param {String} moduleName the name of the module.
- * @param {Object} url the URL to the module.
- */
- req.load = function (context, moduleName, url) {
- req.resourcesReady(false);
-
- context.scriptCount += 1;
- req.attach(url, context, moduleName);
-
- //If tracking a jQuery, then make sure its ready callbacks
- //are put on hold to prevent its ready callbacks from
- //triggering too soon.
- if (context.jQuery && !context.jQueryIncremented) {
- jQueryHoldReady(context.jQuery, true);
- context.jQueryIncremented = true;
- }
- };
-
- function getInteractiveScript() {
- var scripts, i, script;
- if (interactiveScript && interactiveScript.readyState === 'interactive') {
- return interactiveScript;
- }
-
- scripts = document.getElementsByTagName('script');
- for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) {
- if (script.readyState === 'interactive') {
- return (interactiveScript = script);
- }
- }
-
- return null;
- }
-
- /**
- * The function that handles definitions of modules. Differs from
- * require() in that a string for the module should be the first argument,
- * and the function to execute after dependencies are loaded should
- * return a value to define the module corresponding to the first argument's
- * name.
- */
- define = function (name, deps, callback) {
- var node, context;
-
- //Allow for anonymous functions
- if (typeof name !== 'string') {
- //Adjust args appropriately
- callback = deps;
- deps = name;
- name = null;
- }
-
- //This module may not have dependencies
- if (!isArray(deps)) {
- callback = deps;
- deps = [];
- }
-
- //If no name, and callback is a function, then figure out if it a
- //CommonJS thing with dependencies.
- if (!deps.length && isFunction(callback)) {
- //Remove comments from the callback string,
- //look for require calls, and pull them into the dependencies,
- //but only if there are function args.
- if (callback.length) {
- callback
- .toString()
- .replace(commentRegExp, "")
- .replace(cjsRequireRegExp, function (match, dep) {
- deps.push(dep);
- });
-
- //May be a CommonJS thing even without require calls, but still
- //could use exports, and module. Avoid doing exports and module
- //work though if it just needs require.
- //REQUIRES the function to expect the CommonJS variables in the
- //order listed below.
- deps = (callback.length === 1 ? ["require"] : ["require", "exports", "module"]).concat(deps);
- }
- }
-
- //If in IE 6-8 and hit an anonymous define() call, do the interactive
- //work.
- if (useInteractive) {
- node = currentlyAddingScript || getInteractiveScript();
- if (node) {
- if (!name) {
- name = node.getAttribute("data-requiremodule");
- }
- context = contexts[node.getAttribute("data-requirecontext")];
- }
- }
-
- //Always save off evaluating the def call until the script onload handler.
- //This allows multiple modules to be in a file without prematurely
- //tracing dependencies, and allows for anonymous module support,
- //where the module name is not known until the script onload event
- //occurs. If no context, use the global queue, and get it processed
- //in the onscript load callback.
- (context ? context.defQueue : globalDefQueue).push([name, deps, callback]);
-
- return undefined;
- };
-
- define.amd = {
- multiversion: true,
- plugins: true,
- jQuery: true
- };
-
- /**
- * Executes the text. Normally just uses eval, but can be modified
- * to use a more environment specific call.
- * @param {String} text the text to execute/evaluate.
- */
- req.exec = function (text) {
- return eval(text);
- };
-
- /**
- * Executes a module callack function. Broken out as a separate function
- * solely to allow the build system to sequence the files in the built
- * layer in the right sequence.
- *
- * @private
- */
- req.execCb = function (name, callback, args, exports) {
- return callback.apply(exports, args);
- };
-
-
- /**
- * Adds a node to the DOM. Public function since used by the order plugin.
- * This method should not normally be called by outside code.
- */
- req.addScriptToDom = function (node) {
- //For some cache cases in IE 6-8, the script executes before the end
- //of the appendChild execution, so to tie an anonymous define
- //call to the module name (which is stored on the node), hold on
- //to a reference to this node, but clear after the DOM insertion.
- currentlyAddingScript = node;
- if (baseElement) {
- head.insertBefore(node, baseElement);
- } else {
- head.appendChild(node);
- }
- currentlyAddingScript = null;
- };
-
- /**
- * callback for script loads, used to check status of loading.
- *
- * @param {Event} evt the event from the browser for the script
- * that was loaded.
- *
- * @private
- */
- req.onScriptLoad = function (evt) {
- //Using currentTarget instead of target for Firefox 2.0's sake. Not
- //all old browsers will be supported, but this one was easy enough
- //to support and still makes sense.
- var node = evt.currentTarget || evt.srcElement, contextName, moduleName,
- context;
-
- if (evt.type === "load" || (node && readyRegExp.test(node.readyState))) {
- //Reset interactive script so a script node is not held onto for
- //to long.
- interactiveScript = null;
-
- //Pull out the name of the module and the context.
- contextName = node.getAttribute("data-requirecontext");
- moduleName = node.getAttribute("data-requiremodule");
- context = contexts[contextName];
-
- contexts[contextName].completeLoad(moduleName);
-
- //Clean up script binding. Favor detachEvent because of IE9
- //issue, see attachEvent/addEventListener comment elsewhere
- //in this file.
- if (node.detachEvent && !isOpera) {
- //Probably IE. If not it will throw an error, which will be
- //useful to know.
- node.detachEvent("onreadystatechange", req.onScriptLoad);
- } else {
- node.removeEventListener("load", req.onScriptLoad, false);
- }
- }
- };
-
- /**
- * Attaches the script represented by the URL to the current
- * environment. Right now only supports browser loading,
- * but can be redefined in other environments to do the right thing.
- * @param {String} url the url of the script to attach.
- * @param {Object} context the context that wants the script.
- * @param {moduleName} the name of the module that is associated with the script.
- * @param {Function} [callback] optional callback, defaults to require.onScriptLoad
- * @param {String} [type] optional type, defaults to text/javascript
- * @param {Function} [fetchOnlyFunction] optional function to indicate the script node
- * should be set up to fetch the script but do not attach it to the DOM
- * so that it can later be attached to execute it. This is a way for the
- * order plugin to support ordered loading in IE. Once the script is fetched,
- * but not executed, the fetchOnlyFunction will be called.
- */
- req.attach = function (url, context, moduleName, callback, type, fetchOnlyFunction) {
- var node;
- if (isBrowser) {
- //In the browser so use a script tag
- callback = callback || req.onScriptLoad;
- node = context && context.config && context.config.xhtml ?
- document.createElementNS("http://www.w3.org/1999/xhtml", "html:script") :
- document.createElement("script");
- node.type = type || (context && context.config.scriptType) ||
- "text/javascript";
- node.charset = "utf-8";
- //Use async so Gecko does not block on executing the script if something
- //like a long-polling comet tag is being run first. Gecko likes
- //to evaluate scripts in DOM order, even for dynamic scripts.
- //It will fetch them async, but only evaluate the contents in DOM
- //order, so a long-polling script tag can delay execution of scripts
- //after it. But telling Gecko we expect async gets us the behavior
- //we want -- execute it whenever it is finished downloading. Only
- //Helps Firefox 3.6+
- //Allow some URLs to not be fetched async. Mostly helps the order!
- //plugin
- node.async = !s.skipAsync[url];
-
- if (context) {
- node.setAttribute("data-requirecontext", context.contextName);
- }
- node.setAttribute("data-requiremodule", moduleName);
-
- //Set up load listener. Test attachEvent first because IE9 has
- //a subtle issue in its addEventListener and script onload firings
- //that do not match the behavior of all other browsers with
- //addEventListener support, which fire the onload event for a
- //script right after the script execution. See:
- //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution
- //UNFORTUNATELY Opera implements attachEvent but does not follow the script
- //script execution mode.
- if (node.attachEvent && !isOpera) {
- //Probably IE. IE (at least 6-8) do not fire
- //script onload right after executing the script, so
- //we cannot tie the anonymous define call to a name.
- //However, IE reports the script as being in "interactive"
- //readyState at the time of the define call.
- useInteractive = true;
-
-
- if (fetchOnlyFunction) {
- //Need to use old school onreadystate here since
- //when the event fires and the node is not attached
- //to the DOM, the evt.srcElement is null, so use
- //a closure to remember the node.
- node.onreadystatechange = function (evt) {
- //Script loaded but not executed.
- //Clear loaded handler, set the real one that
- //waits for script execution.
- if (node.readyState === 'loaded') {
- node.onreadystatechange = null;
- node.attachEvent("onreadystatechange", callback);
- fetchOnlyFunction(node);
- }
- };
- } else {
- node.attachEvent("onreadystatechange", callback);
- }
- } else {
- node.addEventListener("load", callback, false);
- }
- node.src = url;
-
- //Fetch only means waiting to attach to DOM after loaded.
- if (!fetchOnlyFunction) {
- req.addScriptToDom(node);
- }
-
- return node;
- } else if (isWebWorker) {
- //In a web worker, use importScripts. This is not a very
- //efficient use of importScripts, importScripts will block until
- //its script is downloaded and evaluated. However, if web workers
- //are in play, the expectation that a build has been done so that
- //only one script needs to be loaded anyway. This may need to be
- //reevaluated if other use cases become common.
- importScripts(url);
-
- //Account for anonymous modules
- context.completeLoad(moduleName);
- }
- return null;
- };
-
- //Look for a data-main script attribute, which could also adjust the baseUrl.
- if (isBrowser) {
- //Figure out baseUrl. Get it from the script tag with require.js in it.
- scripts = document.getElementsByTagName("script");
-
- for (globalI = scripts.length - 1; globalI > -1 && (script = scripts[globalI]); globalI--) {
- //Set the "head" where we can append children by
- //using the script's parent.
- if (!head) {
- head = script.parentNode;
- }
-
- //Look for a data-main attribute to set main script for the page
- //to load. If it is there, the path to data main becomes the
- //baseUrl, if it is not already set.
- if ((dataMain = script.getAttribute('data-main'))) {
- if (!cfg.baseUrl) {
- //Pull off the directory of data-main for use as the
- //baseUrl.
- src = dataMain.split('/');
- mainScript = src.pop();
- subPath = src.length ? src.join('/') + '/' : './';
-
- //Set final config.
- cfg.baseUrl = subPath;
- //Strip off any trailing .js since dataMain is now
- //like a module name.
- dataMain = mainScript.replace(jsSuffixRegExp, '');
- }
-
- //Put the data-main script in the files to load.
- cfg.deps = cfg.deps ? cfg.deps.concat(dataMain) : [dataMain];
-
- break;
- }
- }
- }
-
- //See if there is nothing waiting across contexts, and if not, trigger
- //resourcesReady.
- req.checkReadyState = function () {
- var contexts = s.contexts, prop;
- for (prop in contexts) {
- if (!(prop in empty)) {
- if (contexts[prop].waitCount) {
- return;
- }
- }
- }
- req.resourcesReady(true);
- };
-
- /**
- * Internal function that is triggered whenever all scripts/resources
- * have been loaded by the loader. Can be overridden by other, for
- * instance the domReady plugin, which wants to know when all resources
- * are loaded.
- */
- req.resourcesReady = function (isReady) {
- var contexts, context, prop;
-
- //First, set the public variable indicating that resources are loading.
- req.resourcesDone = isReady;
-
- if (req.resourcesDone) {
- //If jQuery with DOM ready delayed, release it now.
- contexts = s.contexts;
- for (prop in contexts) {
- if (!(prop in empty)) {
- context = contexts[prop];
- if (context.jQueryIncremented) {
- jQueryHoldReady(context.jQuery, false);
- context.jQueryIncremented = false;
- }
- }
- }
- }
- };
-
- //FF < 3.6 readyState fix. Needed so that domReady plugin
- //works well in that environment, since require.js is normally
- //loaded via an HTML script tag so it will be there before window load,
- //where the domReady plugin is more likely to be loaded after window load.
- req.pageLoaded = function () {
- if (document.readyState !== "complete") {
- document.readyState = "complete";
- }
- };
- if (isBrowser) {
- if (document.addEventListener) {
- if (!document.readyState) {
- document.readyState = "loading";
- window.addEventListener("load", req.pageLoaded, false);
- }
- }
- }
-
- //Set up default context. If require was a configuration object, use that as base config.
- req(cfg);
-
- //If modules are built into require.js, then need to make sure dependencies are
- //traced. Use a setTimeout in the browser world, to allow all the modules to register
- //themselves. In a non-browser env, assume that modules are not built into require.js,
- //which seems odd to do on the server.
- if (req.isAsync && typeof setTimeout !== "undefined") {
- ctx = s.contexts[(cfg.context || defContextName)];
- //Indicate that the script that includes require() is still loading,
- //so that require()'d dependencies are not traced until the end of the
- //file is parsed (approximated via the setTimeout call).
- ctx.requireWait = true;
- setTimeout(function () {
- ctx.requireWait = false;
-
- if (!ctx.scriptCount) {
- ctx.resume();
- }
- req.checkReadyState();
- }, 0);
- }
-}());
+/** vim: et:ts=4:sw=4:sts=4
+ * @license RequireJS 1.0.7 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved.
+ * Available via the MIT or new BSD license.
+ * see: http://github.com/jrburke/requirejs for details
+ */
+/*jslint strict: false, plusplus: false, sub: true */
+/*global window, navigator, document, importScripts, jQuery, setTimeout, opera */
+
+var requirejs, require, define;
+(function () {
+ //Change this version number for each release.
+ var version = "1.0.7",
+ commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,
+ cjsRequireRegExp = /require\(\s*["']([^'"\s]+)["']\s*\)/g,
+ currDirRegExp = /^\.\//,
+ jsSuffixRegExp = /\.js$/,
+ ostring = Object.prototype.toString,
+ ap = Array.prototype,
+ aps = ap.slice,
+ apsp = ap.splice,
+ isBrowser = !!(typeof window !== "undefined" && navigator && document),
+ isWebWorker = !isBrowser && typeof importScripts !== "undefined",
+ //PS3 indicates loaded and complete, but need to wait for complete
+ //specifically. Sequence is "loading", "loaded", execution,
+ // then "complete". The UA check is unfortunate, but not sure how
+ //to feature test w/o causing perf issues.
+ readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ?
+ /^complete$/ : /^(complete|loaded)$/,
+ defContextName = "_",
+ //Oh the tragedy, detecting opera. See the usage of isOpera for reason.
+ isOpera = typeof opera !== "undefined" && opera.toString() === "[object Opera]",
+ empty = {},
+ contexts = {},
+ globalDefQueue = [],
+ interactiveScript = null,
+ checkLoadedDepth = 0,
+ useInteractive = false,
+ reservedDependencies = {
+ require: true,
+ module: true,
+ exports: true
+ },
+ req, cfg = {}, currentlyAddingScript, s, head, baseElement, scripts, script,
+ src, subPath, mainScript, dataMain, globalI, ctx, jQueryCheck, checkLoadedTimeoutId;
+
+ function isFunction(it) {
+ return ostring.call(it) === "[object Function]";
+ }
+
+ function isArray(it) {
+ return ostring.call(it) === "[object Array]";
+ }
+
+ /**
+ * Simple function to mix in properties from source into target,
+ * but only if target does not already have a property of the same name.
+ * This is not robust in IE for transferring methods that match
+ * Object.prototype names, but the uses of mixin here seem unlikely to
+ * trigger a problem related to that.
+ */
+ function mixin(target, source, force) {
+ for (var prop in source) {
+ if (!(prop in empty) && (!(prop in target) || force)) {
+ target[prop] = source[prop];
+ }
+ }
+ return req;
+ }
+
+ /**
+ * Constructs an error with a pointer to an URL with more information.
+ * @param {String} id the error ID that maps to an ID on a web page.
+ * @param {String} message human readable error.
+ * @param {Error} [err] the original error, if there is one.
+ *
+ * @returns {Error}
+ */
+ function makeError(id, msg, err) {
+ var e = new Error(msg + '\nhttp://requirejs.org/docs/errors.html#' + id);
+ if (err) {
+ e.originalError = err;
+ }
+ return e;
+ }
+
+ /**
+ * Used to set up package paths from a packagePaths or packages config object.
+ * @param {Object} pkgs the object to store the new package config
+ * @param {Array} currentPackages an array of packages to configure
+ * @param {String} [dir] a prefix dir to use.
+ */
+ function configurePackageDir(pkgs, currentPackages, dir) {
+ var i, location, pkgObj;
+
+ for (i = 0; (pkgObj = currentPackages[i]); i++) {
+ pkgObj = typeof pkgObj === "string" ? { name: pkgObj } : pkgObj;
+ location = pkgObj.location;
+
+ //Add dir to the path, but avoid paths that start with a slash
+ //or have a colon (indicates a protocol)
+ if (dir && (!location || (location.indexOf("/") !== 0 && location.indexOf(":") === -1))) {
+ location = dir + "/" + (location || pkgObj.name);
+ }
+
+ //Create a brand new object on pkgs, since currentPackages can
+ //be passed in again, and config.pkgs is the internal transformed
+ //state for all package configs.
+ pkgs[pkgObj.name] = {
+ name: pkgObj.name,
+ location: location || pkgObj.name,
+ //Remove leading dot in main, so main paths are normalized,
+ //and remove any trailing .js, since different package
+ //envs have different conventions: some use a module name,
+ //some use a file name.
+ main: (pkgObj.main || "main")
+ .replace(currDirRegExp, '')
+ .replace(jsSuffixRegExp, '')
+ };
+ }
+ }
+
+ /**
+ * jQuery 1.4.3-1.5.x use a readyWait/ready() pairing to hold DOM
+ * ready callbacks, but jQuery 1.6 supports a holdReady() API instead.
+ * At some point remove the readyWait/ready() support and just stick
+ * with using holdReady.
+ */
+ function jQueryHoldReady($, shouldHold) {
+ if ($.holdReady) {
+ $.holdReady(shouldHold);
+ } else if (shouldHold) {
+ $.readyWait += 1;
+ } else {
+ $.ready(true);
+ }
+ }
+
+ if (typeof define !== "undefined") {
+ //If a define is already in play via another AMD loader,
+ //do not overwrite.
+ return;
+ }
+
+ if (typeof requirejs !== "undefined") {
+ if (isFunction(requirejs)) {
+ //Do not overwrite and existing requirejs instance.
+ return;
+ } else {
+ cfg = requirejs;
+ requirejs = undefined;
+ }
+ }
+
+ //Allow for a require config object
+ if (typeof require !== "undefined" && !isFunction(require)) {
+ //assume it is a config object.
+ cfg = require;
+ require = undefined;
+ }
+
+ /**
+ * Creates a new context for use in require and define calls.
+ * Handle most of the heavy lifting. Do not want to use an object
+ * with prototype here to avoid using "this" in require, in case it
+ * needs to be used in more super secure envs that do not want this.
+ * Also there should not be that many contexts in the page. Usually just
+ * one for the default context, but could be extra for multiversion cases
+ * or if a package needs a special context for a dependency that conflicts
+ * with the standard context.
+ */
+ function newContext(contextName) {
+ var context, resume,
+ config = {
+ waitSeconds: 7,
+ baseUrl: "./",
+ paths: {},
+ pkgs: {},
+ catchError: {}
+ },
+ defQueue = [],
+ specified = {
+ "require": true,
+ "exports": true,
+ "module": true
+ },
+ urlMap = {},
+ defined = {},
+ loaded = {},
+ waiting = {},
+ waitAry = [],
+ urlFetched = {},
+ managerCounter = 0,
+ managerCallbacks = {},
+ plugins = {},
+ //Used to indicate which modules in a build scenario
+ //need to be full executed.
+ needFullExec = {},
+ fullExec = {},
+ resumeDepth = 0;
+
+ /**
+ * Trims the . and .. from an array of path segments.
+ * It will keep a leading path segment if a .. will become
+ * the first path segment, to help with module name lookups,
+ * which act like paths, but can be remapped. But the end result,
+ * all paths that use this function should look normalized.
+ * NOTE: this method MODIFIES the input array.
+ * @param {Array} ary the array of path segments.
+ */
+ function trimDots(ary) {
+ var i, part;
+ for (i = 0; (part = ary[i]); i++) {
+ if (part === ".") {
+ ary.splice(i, 1);
+ i -= 1;
+ } else if (part === "..") {
+ if (i === 1 && (ary[2] === '..' || ary[0] === '..')) {
+ //End of the line. Keep at least one non-dot
+ //path segment at the front so it can be mapped
+ //correctly to disk. Otherwise, there is likely
+ //no path mapping for a path starting with '..'.
+ //This can still fail, but catches the most reasonable
+ //uses of ..
+ break;
+ } else if (i > 0) {
+ ary.splice(i - 1, 2);
+ i -= 2;
+ }
+ }
+ }
+ }
+
+ /**
+ * Given a relative module name, like ./something, normalize it to
+ * a real name that can be mapped to a path.
+ * @param {String} name the relative name
+ * @param {String} baseName a real name that the name arg is relative
+ * to.
+ * @returns {String} normalized name
+ */
+ function normalize(name, baseName) {
+ var pkgName, pkgConfig;
+
+ //Adjust any relative paths.
+ if (name && name.charAt(0) === ".") {
+ //If have a base name, try to normalize against it,
+ //otherwise, assume it is a top-level require that will
+ //be relative to baseUrl in the end.
+ if (baseName) {
+ if (config.pkgs[baseName]) {
+ //If the baseName is a package name, then just treat it as one
+ //name to concat the name with.
+ baseName = [baseName];
+ } else {
+ //Convert baseName to array, and lop off the last part,
+ //so that . matches that "directory" and not name of the baseName's
+ //module. For instance, baseName of "one/two/three", maps to
+ //"one/two/three.js", but we want the directory, "one/two" for
+ //this normalization.
+ baseName = baseName.split("/");
+ baseName = baseName.slice(0, baseName.length - 1);
+ }
+
+ name = baseName.concat(name.split("/"));
+ trimDots(name);
+
+ //Some use of packages may use a . path to reference the
+ //"main" module name, so normalize for that.
+ pkgConfig = config.pkgs[(pkgName = name[0])];
+ name = name.join("/");
+ if (pkgConfig && name === pkgName + '/' + pkgConfig.main) {
+ name = pkgName;
+ }
+ } else if (name.indexOf("./") === 0) {
+ // No baseName, so this is ID is resolved relative
+ // to baseUrl, pull off the leading dot.
+ name = name.substring(2);
+ }
+ }
+ return name;
+ }
+
+ /**
+ * Creates a module mapping that includes plugin prefix, module
+ * name, and path. If parentModuleMap is provided it will
+ * also normalize the name via require.normalize()
+ *
+ * @param {String} name the module name
+ * @param {String} [parentModuleMap] parent module map
+ * for the module name, used to resolve relative names.
+ *
+ * @returns {Object}
+ */
+ function makeModuleMap(name, parentModuleMap) {
+ var index = name ? name.indexOf("!") : -1,
+ prefix = null,
+ parentName = parentModuleMap ? parentModuleMap.name : null,
+ originalName = name,
+ normalizedName, url, pluginModule;
+
+ if (index !== -1) {
+ prefix = name.substring(0, index);
+ name = name.substring(index + 1, name.length);
+ }
+
+ if (prefix) {
+ prefix = normalize(prefix, parentName);
+ }
+
+ //Account for relative paths if there is a base name.
+ if (name) {
+ if (prefix) {
+ pluginModule = defined[prefix];
+ if (pluginModule && pluginModule.normalize) {
+ //Plugin is loaded, use its normalize method.
+ normalizedName = pluginModule.normalize(name, function (name) {
+ return normalize(name, parentName);
+ });
+ } else {
+ normalizedName = normalize(name, parentName);
+ }
+ } else {
+ //A regular module.
+ normalizedName = normalize(name, parentName);
+
+ url = urlMap[normalizedName];
+ if (!url) {
+ //Calculate url for the module, if it has a name.
+ //Use name here since nameToUrl also calls normalize,
+ //and for relative names that are outside the baseUrl
+ //this causes havoc. Was thinking of just removing
+ //parentModuleMap to avoid extra normalization, but
+ //normalize() still does a dot removal because of
+ //issue #142, so just pass in name here and redo
+ //the normalization. Paths outside baseUrl are just
+ //messy to support.
+ url = context.nameToUrl(name, null, parentModuleMap);
+
+ //Store the URL mapping for later.
+ urlMap[normalizedName] = url;
+ }
+ }
+ }
+
+ return {
+ prefix: prefix,
+ name: normalizedName,
+ parentMap: parentModuleMap,
+ url: url,
+ originalName: originalName,
+ fullName: prefix ? prefix + "!" + (normalizedName || '') : normalizedName
+ };
+ }
+
+ /**
+ * Determine if priority loading is done. If so clear the priorityWait
+ */
+ function isPriorityDone() {
+ var priorityDone = true,
+ priorityWait = config.priorityWait,
+ priorityName, i;
+ if (priorityWait) {
+ for (i = 0; (priorityName = priorityWait[i]); i++) {
+ if (!loaded[priorityName]) {
+ priorityDone = false;
+ break;
+ }
+ }
+ if (priorityDone) {
+ delete config.priorityWait;
+ }
+ }
+ return priorityDone;
+ }
+
+ function makeContextModuleFunc(func, relModuleMap, enableBuildCallback) {
+ return function () {
+ //A version of a require function that passes a moduleName
+ //value for items that may need to
+ //look up paths relative to the moduleName
+ var args = aps.call(arguments, 0), lastArg;
+ if (enableBuildCallback &&
+ isFunction((lastArg = args[args.length - 1]))) {
+ lastArg.__requireJsBuild = true;
+ }
+ args.push(relModuleMap);
+ return func.apply(null, args);
+ };
+ }
+
+ /**
+ * Helper function that creates a require function object to give to
+ * modules that ask for it as a dependency. It needs to be specific
+ * per module because of the implication of path mappings that may
+ * need to be relative to the module name.
+ */
+ function makeRequire(relModuleMap, enableBuildCallback, altRequire) {
+ var modRequire = makeContextModuleFunc(altRequire || context.require, relModuleMap, enableBuildCallback);
+
+ mixin(modRequire, {
+ nameToUrl: makeContextModuleFunc(context.nameToUrl, relModuleMap),
+ toUrl: makeContextModuleFunc(context.toUrl, relModuleMap),
+ defined: makeContextModuleFunc(context.requireDefined, relModuleMap),
+ specified: makeContextModuleFunc(context.requireSpecified, relModuleMap),
+ isBrowser: req.isBrowser
+ });
+ return modRequire;
+ }
+
+ /*
+ * Queues a dependency for checking after the loader is out of a
+ * "paused" state, for example while a script file is being loaded
+ * in the browser, where it may have many modules defined in it.
+ */
+ function queueDependency(manager) {
+ context.paused.push(manager);
+ }
+
+ function execManager(manager) {
+ var i, ret, err, errFile, errModuleTree,
+ cb = manager.callback,
+ map = manager.map,
+ fullName = map.fullName,
+ args = manager.deps,
+ listeners = manager.listeners,
+ cjsModule;
+
+ //Call the callback to define the module, if necessary.
+ if (cb && isFunction(cb)) {
+ if (config.catchError.define) {
+ try {
+ ret = req.execCb(fullName, manager.callback, args, defined[fullName]);
+ } catch (e) {
+ err = e;
+ }
+ } else {
+ ret = req.execCb(fullName, manager.callback, args, defined[fullName]);
+ }
+
+ if (fullName) {
+ //If setting exports via "module" is in play,
+ //favor that over return value and exports. After that,
+ //favor a non-undefined return value over exports use.
+ cjsModule = manager.cjsModule;
+ if (cjsModule &&
+ cjsModule.exports !== undefined &&
+ //Make sure it is not already the exports value
+ cjsModule.exports !== defined[fullName]) {
+ ret = defined[fullName] = manager.cjsModule.exports;
+ } else if (ret === undefined && manager.usingExports) {
+ //exports already set the defined value.
+ ret = defined[fullName];
+ } else {
+ //Use the return value from the function.
+ defined[fullName] = ret;
+ //If this module needed full execution in a build
+ //environment, mark that now.
+ if (needFullExec[fullName]) {
+ fullExec[fullName] = true;
+ }
+ }
+ }
+ } else if (fullName) {
+ //May just be an object definition for the module. Only
+ //worry about defining if have a module name.
+ ret = defined[fullName] = cb;
+
+ //If this module needed full execution in a build
+ //environment, mark that now.
+ if (needFullExec[fullName]) {
+ fullExec[fullName] = true;
+ }
+ }
+
+ //Clean up waiting. Do this before error calls, and before
+ //calling back listeners, so that bookkeeping is correct
+ //in the event of an error and error is reported in correct order,
+ //since the listeners will likely have errors if the
+ //onError function does not throw.
+ if (waiting[manager.id]) {
+ delete waiting[manager.id];
+ manager.isDone = true;
+ context.waitCount -= 1;
+ if (context.waitCount === 0) {
+ //Clear the wait array used for cycles.
+ waitAry = [];
+ }
+ }
+
+ //Do not need to track manager callback now that it is defined.
+ delete managerCallbacks[fullName];
+
+ //Allow instrumentation like the optimizer to know the order
+ //of modules executed and their dependencies.
+ if (req.onResourceLoad && !manager.placeholder) {
+ req.onResourceLoad(context, map, manager.depArray);
+ }
+
+ if (err) {
+ errFile = (fullName ? makeModuleMap(fullName).url : '') ||
+ err.fileName || err.sourceURL;
+ errModuleTree = err.moduleTree;
+ err = makeError('defineerror', 'Error evaluating ' +
+ 'module "' + fullName + '" at location "' +
+ errFile + '":\n' +
+ err + '\nfileName:' + errFile +
+ '\nlineNumber: ' + (err.lineNumber || err.line), err);
+ err.moduleName = fullName;
+ err.moduleTree = errModuleTree;
+ return req.onError(err);
+ }
+
+ //Let listeners know of this manager's value.
+ for (i = 0; (cb = listeners[i]); i++) {
+ cb(ret);
+ }
+
+ return undefined;
+ }
+
+ /**
+ * Helper that creates a callack function that is called when a dependency
+ * is ready, and sets the i-th dependency for the manager as the
+ * value passed to the callback generated by this function.
+ */
+ function makeArgCallback(manager, i) {
+ return function (value) {
+ //Only do the work if it has not been done
+ //already for a dependency. Cycle breaking
+ //logic in forceExec could mean this function
+ //is called more than once for a given dependency.
+ if (!manager.depDone[i]) {
+ manager.depDone[i] = true;
+ manager.deps[i] = value;
+ manager.depCount -= 1;
+ if (!manager.depCount) {
+ //All done, execute!
+ execManager(manager);
+ }
+ }
+ };
+ }
+
+ function callPlugin(pluginName, depManager) {
+ var map = depManager.map,
+ fullName = map.fullName,
+ name = map.name,
+ plugin = plugins[pluginName] ||
+ (plugins[pluginName] = defined[pluginName]),
+ load;
+
+ //No need to continue if the manager is already
+ //in the process of loading.
+ if (depManager.loading) {
+ return;
+ }
+ depManager.loading = true;
+
+ load = function (ret) {
+ depManager.callback = function () {
+ return ret;
+ };
+ execManager(depManager);
+
+ loaded[depManager.id] = true;
+
+ //The loading of this plugin
+ //might have placed other things
+ //in the paused queue. In particular,
+ //a loader plugin that depends on
+ //a different plugin loaded resource.
+ resume();
+ };
+
+ //Allow plugins to load other code without having to know the
+ //context or how to "complete" the load.
+ load.fromText = function (moduleName, text) {
+ /*jslint evil: true */
+ var hasInteractive = useInteractive;
+
+ //Indicate a the module is in process of loading.
+ loaded[moduleName] = false;
+ context.scriptCount += 1;
+
+ //Indicate this is not a "real" module, so do not track it
+ //for builds, it does not map to a real file.
+ context.fake[moduleName] = true;
+
+ //Turn off interactive script matching for IE for any define
+ //calls in the text, then turn it back on at the end.
+ if (hasInteractive) {
+ useInteractive = false;
+ }
+
+ req.exec(text);
+
+ if (hasInteractive) {
+ useInteractive = true;
+ }
+
+ //Support anonymous modules.
+ context.completeLoad(moduleName);
+ };
+
+ //No need to continue if the plugin value has already been
+ //defined by a build.
+ if (fullName in defined) {
+ load(defined[fullName]);
+ } else {
+ //Use parentName here since the plugin's name is not reliable,
+ //could be some weird string with no path that actually wants to
+ //reference the parentName's path.
+ plugin.load(name, makeRequire(map.parentMap, true, function (deps, cb) {
+ var moduleDeps = [],
+ i, dep, depMap;
+ //Convert deps to full names and hold on to them
+ //for reference later, when figuring out if they
+ //are blocked by a circular dependency.
+ for (i = 0; (dep = deps[i]); i++) {
+ depMap = makeModuleMap(dep, map.parentMap);
+ deps[i] = depMap.fullName;
+ if (!depMap.prefix) {
+ moduleDeps.push(deps[i]);
+ }
+ }
+ depManager.moduleDeps = (depManager.moduleDeps || []).concat(moduleDeps);
+ return context.require(deps, cb);
+ }), load, config);
+ }
+ }
+
+ /**
+ * Adds the manager to the waiting queue. Only fully
+ * resolved items should be in the waiting queue.
+ */
+ function addWait(manager) {
+ if (!waiting[manager.id]) {
+ waiting[manager.id] = manager;
+ waitAry.push(manager);
+ context.waitCount += 1;
+ }
+ }
+
+ /**
+ * Function added to every manager object. Created out here
+ * to avoid new function creation for each manager instance.
+ */
+ function managerAdd(cb) {
+ this.listeners.push(cb);
+ }
+
+ function getManager(map, shouldQueue) {
+ var fullName = map.fullName,
+ prefix = map.prefix,
+ plugin = prefix ? plugins[prefix] ||
+ (plugins[prefix] = defined[prefix]) : null,
+ manager, created, pluginManager, prefixMap;
+
+ if (fullName) {
+ manager = managerCallbacks[fullName];
+ }
+
+ if (!manager) {
+ created = true;
+ manager = {
+ //ID is just the full name, but if it is a plugin resource
+ //for a plugin that has not been loaded,
+ //then add an ID counter to it.
+ id: (prefix && !plugin ?
+ (managerCounter++) + '__p@:' : '') +
+ (fullName || '__r@' + (managerCounter++)),
+ map: map,
+ depCount: 0,
+ depDone: [],
+ depCallbacks: [],
+ deps: [],
+ listeners: [],
+ add: managerAdd
+ };
+
+ specified[manager.id] = true;
+
+ //Only track the manager/reuse it if this is a non-plugin
+ //resource. Also only track plugin resources once
+ //the plugin has been loaded, and so the fullName is the
+ //true normalized value.
+ if (fullName && (!prefix || plugins[prefix])) {
+ managerCallbacks[fullName] = manager;
+ }
+ }
+
+ //If there is a plugin needed, but it is not loaded,
+ //first load the plugin, then continue on.
+ if (prefix && !plugin) {
+ prefixMap = makeModuleMap(prefix);
+
+ //Clear out defined and urlFetched if the plugin was previously
+ //loaded/defined, but not as full module (as in a build
+ //situation). However, only do this work if the plugin is in
+ //defined but does not have a module export value.
+ if (prefix in defined && !defined[prefix]) {
+ delete defined[prefix];
+ delete urlFetched[prefixMap.url];
+ }
+
+ pluginManager = getManager(prefixMap, true);
+ pluginManager.add(function (plugin) {
+ //Create a new manager for the normalized
+ //resource ID and have it call this manager when
+ //done.
+ var newMap = makeModuleMap(map.originalName, map.parentMap),
+ normalizedManager = getManager(newMap, true);
+
+ //Indicate this manager is a placeholder for the real,
+ //normalized thing. Important for when trying to map
+ //modules and dependencies, for instance, in a build.
+ manager.placeholder = true;
+
+ normalizedManager.add(function (resource) {
+ manager.callback = function () {
+ return resource;
+ };
+ execManager(manager);
+ });
+ });
+ } else if (created && shouldQueue) {
+ //Indicate the resource is not loaded yet if it is to be
+ //queued.
+ loaded[manager.id] = false;
+ queueDependency(manager);
+ addWait(manager);
+ }
+
+ return manager;
+ }
+
+ function main(inName, depArray, callback, relModuleMap) {
+ var moduleMap = makeModuleMap(inName, relModuleMap),
+ name = moduleMap.name,
+ fullName = moduleMap.fullName,
+ manager = getManager(moduleMap),
+ id = manager.id,
+ deps = manager.deps,
+ i, depArg, depName, depPrefix, cjsMod;
+
+ if (fullName) {
+ //If module already defined for context, or already loaded,
+ //then leave. Also leave if jQuery is registering but it does
+ //not match the desired version number in the config.
+ if (fullName in defined || loaded[id] === true ||
+ (fullName === "jquery" && config.jQuery &&
+ config.jQuery !== callback().fn.jquery)) {
+ return;
+ }
+
+ //Set specified/loaded here for modules that are also loaded
+ //as part of a layer, where onScriptLoad is not fired
+ //for those cases. Do this after the inline define and
+ //dependency tracing is done.
+ specified[id] = true;
+ loaded[id] = true;
+
+ //If module is jQuery set up delaying its dom ready listeners.
+ if (fullName === "jquery" && callback) {
+ jQueryCheck(callback());
+ }
+ }
+
+ //Attach real depArray and callback to the manager. Do this
+ //only if the module has not been defined already, so do this after
+ //the fullName checks above. IE can call main() more than once
+ //for a module.
+ manager.depArray = depArray;
+ manager.callback = callback;
+
+ //Add the dependencies to the deps field, and register for callbacks
+ //on the dependencies.
+ for (i = 0; i < depArray.length; i++) {
+ depArg = depArray[i];
+ //There could be cases like in IE, where a trailing comma will
+ //introduce a null dependency, so only treat a real dependency
+ //value as a dependency.
+ if (depArg) {
+ //Split the dependency name into plugin and name parts
+ depArg = makeModuleMap(depArg, (name ? moduleMap : relModuleMap));
+ depName = depArg.fullName;
+ depPrefix = depArg.prefix;
+
+ //Fix the name in depArray to be just the name, since
+ //that is how it will be called back later.
+ depArray[i] = depName;
+
+ //Fast path CommonJS standard dependencies.
+ if (depName === "require") {
+ deps[i] = makeRequire(moduleMap);
+ } else if (depName === "exports") {
+ //CommonJS module spec 1.1
+ deps[i] = defined[fullName] = {};
+ manager.usingExports = true;
+ } else if (depName === "module") {
+ //CommonJS module spec 1.1
+ manager.cjsModule = cjsMod = deps[i] = {
+ id: name,
+ uri: name ? context.nameToUrl(name, null, relModuleMap) : undefined,
+ exports: defined[fullName]
+ };
+ } else if (depName in defined && !(depName in waiting) &&
+ (!(fullName in needFullExec) ||
+ (fullName in needFullExec && fullExec[depName]))) {
+ //Module already defined, and not in a build situation
+ //where the module is a something that needs full
+ //execution and this dependency has not been fully
+ //executed. See r.js's requirePatch.js for more info
+ //on fullExec.
+ deps[i] = defined[depName];
+ } else {
+ //Mark this dependency as needing full exec if
+ //the current module needs full exec.
+ if (fullName in needFullExec) {
+ needFullExec[depName] = true;
+ //Reset state so fully executed code will get
+ //picked up correctly.
+ delete defined[depName];
+ urlFetched[depArg.url] = false;
+ }
+
+ //Either a resource that is not loaded yet, or a plugin
+ //resource for either a plugin that has not
+ //loaded yet.
+ manager.depCount += 1;
+ manager.depCallbacks[i] = makeArgCallback(manager, i);
+ getManager(depArg, true).add(manager.depCallbacks[i]);
+ }
+ }
+ }
+
+ //Do not bother tracking the manager if it is all done.
+ if (!manager.depCount) {
+ //All done, execute!
+ execManager(manager);
+ } else {
+ addWait(manager);
+ }
+ }
+
+ /**
+ * Convenience method to call main for a define call that was put on
+ * hold in the defQueue.
+ */
+ function callDefMain(args) {
+ main.apply(null, args);
+ }
+
+ /**
+ * jQuery 1.4.3+ supports ways to hold off calling
+ * calling jQuery ready callbacks until all scripts are loaded. Be sure
+ * to track it if the capability exists.. Also, since jQuery 1.4.3 does
+ * not register as a module, need to do some global inference checking.
+ * Even if it does register as a module, not guaranteed to be the precise
+ * name of the global. If a jQuery is tracked for this context, then go
+ * ahead and register it as a module too, if not already in process.
+ */
+ jQueryCheck = function (jqCandidate) {
+ if (!context.jQuery) {
+ var $ = jqCandidate || (typeof jQuery !== "undefined" ? jQuery : null);
+
+ if ($) {
+ //If a specific version of jQuery is wanted, make sure to only
+ //use this jQuery if it matches.
+ if (config.jQuery && $.fn.jquery !== config.jQuery) {
+ return;
+ }
+
+ if ("holdReady" in $ || "readyWait" in $) {
+ context.jQuery = $;
+
+ //Manually create a "jquery" module entry if not one already
+ //or in process. Note this could trigger an attempt at
+ //a second jQuery registration, but does no harm since
+ //the first one wins, and it is the same value anyway.
+ callDefMain(["jquery", [], function () {
+ return jQuery;
+ }]);
+
+ //Ask jQuery to hold DOM ready callbacks.
+ if (context.scriptCount) {
+ jQueryHoldReady($, true);
+ context.jQueryIncremented = true;
+ }
+ }
+ }
+ }
+ };
+
+ function findCycle(manager, traced) {
+ var fullName = manager.map.fullName,
+ depArray = manager.depArray,
+ fullyLoaded = true,
+ i, depName, depManager, result;
+
+ if (manager.isDone || !fullName || !loaded[fullName]) {
+ return result;
+ }
+
+ //Found the cycle.
+ if (traced[fullName]) {
+ return manager;
+ }
+
+ traced[fullName] = true;
+
+ //Trace through the dependencies.
+ if (depArray) {
+ for (i = 0; i < depArray.length; i++) {
+ //Some array members may be null, like if a trailing comma
+ //IE, so do the explicit [i] access and check if it has a value.
+ depName = depArray[i];
+ if (!loaded[depName] && !reservedDependencies[depName]) {
+ fullyLoaded = false;
+ break;
+ }
+ depManager = waiting[depName];
+ if (depManager && !depManager.isDone && loaded[depName]) {
+ result = findCycle(depManager, traced);
+ if (result) {
+ break;
+ }
+ }
+ }
+ if (!fullyLoaded) {
+ //Discard the cycle that was found, since it cannot
+ //be forced yet. Also clear this module from traced.
+ result = undefined;
+ delete traced[fullName];
+ }
+ }
+
+ return result;
+ }
+
+ function forceExec(manager, traced) {
+ var fullName = manager.map.fullName,
+ depArray = manager.depArray,
+ i, depName, depManager, prefix, prefixManager, value;
+
+
+ if (manager.isDone || !fullName || !loaded[fullName]) {
+ return undefined;
+ }
+
+ if (fullName) {
+ if (traced[fullName]) {
+ return defined[fullName];
+ }
+
+ traced[fullName] = true;
+ }
+
+ //Trace through the dependencies.
+ if (depArray) {
+ for (i = 0; i < depArray.length; i++) {
+ //Some array members may be null, like if a trailing comma
+ //IE, so do the explicit [i] access and check if it has a value.
+ depName = depArray[i];
+ if (depName) {
+ //First, make sure if it is a plugin resource that the
+ //plugin is not blocked.
+ prefix = makeModuleMap(depName).prefix;
+ if (prefix && (prefixManager = waiting[prefix])) {
+ forceExec(prefixManager, traced);
+ }
+ depManager = waiting[depName];
+ if (depManager && !depManager.isDone && loaded[depName]) {
+ value = forceExec(depManager, traced);
+ manager.depCallbacks[i](value);
+ }
+ }
+ }
+ }
+
+ return defined[fullName];
+ }
+
+ /**
+ * Checks if all modules for a context are loaded, and if so, evaluates the
+ * new ones in right dependency order.
+ *
+ * @private
+ */
+ function checkLoaded() {
+ var waitInterval = config.waitSeconds * 1000,
+ //It is possible to disable the wait interval by using waitSeconds of 0.
+ expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(),
+ noLoads = "", hasLoadedProp = false, stillLoading = false,
+ cycleDeps = [],
+ i, prop, err, manager, cycleManager, moduleDeps;
+
+ //If there are items still in the paused queue processing wait.
+ //This is particularly important in the sync case where each paused
+ //item is processed right away but there may be more waiting.
+ if (context.pausedCount > 0) {
+ return undefined;
+ }
+
+ //Determine if priority loading is done. If so clear the priority. If
+ //not, then do not check
+ if (config.priorityWait) {
+ if (isPriorityDone()) {
+ //Call resume, since it could have
+ //some waiting dependencies to trace.
+ resume();
+ } else {
+ return undefined;
+ }
+ }
+
+ //See if anything is still in flight.
+ for (prop in loaded) {
+ if (!(prop in empty)) {
+ hasLoadedProp = true;
+ if (!loaded[prop]) {
+ if (expired) {
+ noLoads += prop + " ";
+ } else {
+ stillLoading = true;
+ if (prop.indexOf('!') === -1) {
+ //No reason to keep looking for unfinished
+ //loading. If the only stillLoading is a
+ //plugin resource though, keep going,
+ //because it may be that a plugin resource
+ //is waiting on a non-plugin cycle.
+ cycleDeps = [];
+ break;
+ } else {
+ moduleDeps = managerCallbacks[prop] && managerCallbacks[prop].moduleDeps;
+ if (moduleDeps) {
+ cycleDeps.push.apply(cycleDeps, moduleDeps);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ //Check for exit conditions.
+ if (!hasLoadedProp && !context.waitCount) {
+ //If the loaded object had no items, then the rest of
+ //the work below does not need to be done.
+ return undefined;
+ }
+ if (expired && noLoads) {
+ //If wait time expired, throw error of unloaded modules.
+ err = makeError("timeout", "Load timeout for modules: " + noLoads);
+ err.requireType = "timeout";
+ err.requireModules = noLoads;
+ err.contextName = context.contextName;
+ return req.onError(err);
+ }
+
+ //If still loading but a plugin is waiting on a regular module cycle
+ //break the cycle.
+ if (stillLoading && cycleDeps.length) {
+ for (i = 0; (manager = waiting[cycleDeps[i]]); i++) {
+ if ((cycleManager = findCycle(manager, {}))) {
+ forceExec(cycleManager, {});
+ break;
+ }
+ }
+
+ }
+
+ //If still waiting on loads, and the waiting load is something
+ //other than a plugin resource, or there are still outstanding
+ //scripts, then just try back later.
+ if (!expired && (stillLoading || context.scriptCount)) {
+ //Something is still waiting to load. Wait for it, but only
+ //if a timeout is not already in effect.
+ if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) {
+ checkLoadedTimeoutId = setTimeout(function () {
+ checkLoadedTimeoutId = 0;
+ checkLoaded();
+ }, 50);
+ }
+ return undefined;
+ }
+
+ //If still have items in the waiting cue, but all modules have
+ //been loaded, then it means there are some circular dependencies
+ //that need to be broken.
+ //However, as a waiting thing is fired, then it can add items to
+ //the waiting cue, and those items should not be fired yet, so
+ //make sure to redo the checkLoaded call after breaking a single
+ //cycle, if nothing else loaded then this logic will pick it up
+ //again.
+ if (context.waitCount) {
+ //Cycle through the waitAry, and call items in sequence.
+ for (i = 0; (manager = waitAry[i]); i++) {
+ forceExec(manager, {});
+ }
+
+ //If anything got placed in the paused queue, run it down.
+ if (context.paused.length) {
+ resume();
+ }
+
+ //Only allow this recursion to a certain depth. Only
+ //triggered by errors in calling a module in which its
+ //modules waiting on it cannot finish loading, or some circular
+ //dependencies that then may add more dependencies.
+ //The value of 5 is a bit arbitrary. Hopefully just one extra
+ //pass, or two for the case of circular dependencies generating
+ //more work that gets resolved in the sync node case.
+ if (checkLoadedDepth < 5) {
+ checkLoadedDepth += 1;
+ checkLoaded();
+ }
+ }
+
+ checkLoadedDepth = 0;
+
+ //Check for DOM ready, and nothing is waiting across contexts.
+ req.checkReadyState();
+
+ return undefined;
+ }
+
+ /**
+ * Resumes tracing of dependencies and then checks if everything is loaded.
+ */
+ resume = function () {
+ var manager, map, url, i, p, args, fullName;
+
+ //Any defined modules in the global queue, intake them now.
+ context.takeGlobalQueue();
+
+ resumeDepth += 1;
+
+ if (context.scriptCount <= 0) {
+ //Synchronous envs will push the number below zero with the
+ //decrement above, be sure to set it back to zero for good measure.
+ //require() calls that also do not end up loading scripts could
+ //push the number negative too.
+ context.scriptCount = 0;
+ }
+
+ //Make sure any remaining defQueue items get properly processed.
+ while (defQueue.length) {
+ args = defQueue.shift();
+ if (args[0] === null) {
+ return req.onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + args[args.length - 1]));
+ } else {
+ callDefMain(args);
+ }
+ }
+
+ //Skip the resume of paused dependencies
+ //if current context is in priority wait.
+ if (!config.priorityWait || isPriorityDone()) {
+ while (context.paused.length) {
+ p = context.paused;
+ context.pausedCount += p.length;
+ //Reset paused list
+ context.paused = [];
+
+ for (i = 0; (manager = p[i]); i++) {
+ map = manager.map;
+ url = map.url;
+ fullName = map.fullName;
+
+ //If the manager is for a plugin managed resource,
+ //ask the plugin to load it now.
+ if (map.prefix) {
+ callPlugin(map.prefix, manager);
+ } else {
+ //Regular dependency.
+ if (!urlFetched[url] && !loaded[fullName]) {
+ req.load(context, fullName, url);
+
+ //Mark the URL as fetched, but only if it is
+ //not an empty: URL, used by the optimizer.
+ //In that case we need to be sure to call
+ //load() for each module that is mapped to
+ //empty: so that dependencies are satisfied
+ //correctly.
+ if (url.indexOf('empty:') !== 0) {
+ urlFetched[url] = true;
+ }
+ }
+ }
+ }
+
+ //Move the start time for timeout forward.
+ context.startTime = (new Date()).getTime();
+ context.pausedCount -= p.length;
+ }
+ }
+
+ //Only check if loaded when resume depth is 1. It is likely that
+ //it is only greater than 1 in sync environments where a factory
+ //function also then calls the callback-style require. In those
+ //cases, the checkLoaded should not occur until the resume
+ //depth is back at the top level.
+ if (resumeDepth === 1) {
+ checkLoaded();
+ }
+
+ resumeDepth -= 1;
+
+ return undefined;
+ };
+
+ //Define the context object. Many of these fields are on here
+ //just to make debugging easier.
+ context = {
+ contextName: contextName,
+ config: config,
+ defQueue: defQueue,
+ waiting: waiting,
+ waitCount: 0,
+ specified: specified,
+ loaded: loaded,
+ urlMap: urlMap,
+ urlFetched: urlFetched,
+ scriptCount: 0,
+ defined: defined,
+ paused: [],
+ pausedCount: 0,
+ plugins: plugins,
+ needFullExec: needFullExec,
+ fake: {},
+ fullExec: fullExec,
+ managerCallbacks: managerCallbacks,
+ makeModuleMap: makeModuleMap,
+ normalize: normalize,
+ /**
+ * Set a configuration for the context.
+ * @param {Object} cfg config object to integrate.
+ */
+ configure: function (cfg) {
+ var paths, prop, packages, pkgs, packagePaths, requireWait;
+
+ //Make sure the baseUrl ends in a slash.
+ if (cfg.baseUrl) {
+ if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== "/") {
+ cfg.baseUrl += "/";
+ }
+ }
+
+ //Save off the paths and packages since they require special processing,
+ //they are additive.
+ paths = config.paths;
+ packages = config.packages;
+ pkgs = config.pkgs;
+
+ //Mix in the config values, favoring the new values over
+ //existing ones in context.config.
+ mixin(config, cfg, true);
+
+ //Adjust paths if necessary.
+ if (cfg.paths) {
+ for (prop in cfg.paths) {
+ if (!(prop in empty)) {
+ paths[prop] = cfg.paths[prop];
+ }
+ }
+ config.paths = paths;
+ }
+
+ packagePaths = cfg.packagePaths;
+ if (packagePaths || cfg.packages) {
+ //Convert packagePaths into a packages config.
+ if (packagePaths) {
+ for (prop in packagePaths) {
+ if (!(prop in empty)) {
+ configurePackageDir(pkgs, packagePaths[prop], prop);
+ }
+ }
+ }
+
+ //Adjust packages if necessary.
+ if (cfg.packages) {
+ configurePackageDir(pkgs, cfg.packages);
+ }
+
+ //Done with modifications, assing packages back to context config
+ config.pkgs = pkgs;
+ }
+
+ //If priority loading is in effect, trigger the loads now
+ if (cfg.priority) {
+ //Hold on to requireWait value, and reset it after done
+ requireWait = context.requireWait;
+
+ //Allow tracing some require calls to allow the fetching
+ //of the priority config.
+ context.requireWait = false;
+ //But first, call resume to register any defined modules that may
+ //be in a data-main built file before the priority config
+ //call.
+ resume();
+
+ context.require(cfg.priority);
+
+ //Trigger a resume right away, for the case when
+ //the script with the priority load is done as part
+ //of a data-main call. In that case the normal resume
+ //call will not happen because the scriptCount will be
+ //at 1, since the script for data-main is being processed.
+ resume();
+
+ //Restore previous state.
+ context.requireWait = requireWait;
+ config.priorityWait = cfg.priority;
+ }
+
+ //If a deps array or a config callback is specified, then call
+ //require with those args. This is useful when require is defined as a
+ //config object before require.js is loaded.
+ if (cfg.deps || cfg.callback) {
+ context.require(cfg.deps || [], cfg.callback);
+ }
+ },
+
+ requireDefined: function (moduleName, relModuleMap) {
+ return makeModuleMap(moduleName, relModuleMap).fullName in defined;
+ },
+
+ requireSpecified: function (moduleName, relModuleMap) {
+ return makeModuleMap(moduleName, relModuleMap).fullName in specified;
+ },
+
+ require: function (deps, callback, relModuleMap) {
+ var moduleName, fullName, moduleMap;
+ if (typeof deps === "string") {
+ if (isFunction(callback)) {
+ //Invalid call
+ return req.onError(makeError("requireargs", "Invalid require call"));
+ }
+
+ //Synchronous access to one module. If require.get is
+ //available (as in the Node adapter), prefer that.
+ //In this case deps is the moduleName and callback is
+ //the relModuleMap
+ if (req.get) {
+ return req.get(context, deps, callback);
+ }
+
+ //Just return the module wanted. In this scenario, the
+ //second arg (if passed) is just the relModuleMap.
+ moduleName = deps;
+ relModuleMap = callback;
+
+ //Normalize module name, if it contains . or ..
+ moduleMap = makeModuleMap(moduleName, relModuleMap);
+ fullName = moduleMap.fullName;
+
+ if (!(fullName in defined)) {
+ return req.onError(makeError("notloaded", "Module name '" +
+ moduleMap.fullName +
+ "' has not been loaded yet for context: " +
+ contextName));
+ }
+ return defined[fullName];
+ }
+
+ //Call main but only if there are dependencies or
+ //a callback to call.
+ if (deps && deps.length || callback) {
+ main(null, deps, callback, relModuleMap);
+ }
+
+ //If the require call does not trigger anything new to load,
+ //then resume the dependency processing.
+ if (!context.requireWait) {
+ while (!context.scriptCount && context.paused.length) {
+ resume();
+ }
+ }
+ return context.require;
+ },
+
+ /**
+ * Internal method to transfer globalQueue items to this context's
+ * defQueue.
+ */
+ takeGlobalQueue: function () {
+ //Push all the globalDefQueue items into the context's defQueue
+ if (globalDefQueue.length) {
+ //Array splice in the values since the context code has a
+ //local var ref to defQueue, so cannot just reassign the one
+ //on context.
+ apsp.apply(context.defQueue,
+ [context.defQueue.length - 1, 0].concat(globalDefQueue));
+ globalDefQueue = [];
+ }
+ },
+
+ /**
+ * Internal method used by environment adapters to complete a load event.
+ * A load event could be a script load or just a load pass from a synchronous
+ * load call.
+ * @param {String} moduleName the name of the module to potentially complete.
+ */
+ completeLoad: function (moduleName) {
+ var args;
+
+ context.takeGlobalQueue();
+
+ while (defQueue.length) {
+ args = defQueue.shift();
+
+ if (args[0] === null) {
+ args[0] = moduleName;
+ break;
+ } else if (args[0] === moduleName) {
+ //Found matching define call for this script!
+ break;
+ } else {
+ //Some other named define call, most likely the result
+ //of a build layer that included many define calls.
+ callDefMain(args);
+ args = null;
+ }
+ }
+ if (args) {
+ callDefMain(args);
+ } else {
+ //A script that does not call define(), so just simulate
+ //the call for it. Special exception for jQuery dynamic load.
+ callDefMain([moduleName, [],
+ moduleName === "jquery" && typeof jQuery !== "undefined" ?
+ function () {
+ return jQuery;
+ } : null]);
+ }
+
+ //Doing this scriptCount decrement branching because sync envs
+ //need to decrement after resume, otherwise it looks like
+ //loading is complete after the first dependency is fetched.
+ //For browsers, it works fine to decrement after, but it means
+ //the checkLoaded setTimeout 50 ms cost is taken. To avoid
+ //that cost, decrement beforehand.
+ if (req.isAsync) {
+ context.scriptCount -= 1;
+ }
+ resume();
+ if (!req.isAsync) {
+ context.scriptCount -= 1;
+ }
+ },
+
+ /**
+ * Converts a module name + .extension into an URL path.
+ * *Requires* the use of a module name. It does not support using
+ * plain URLs like nameToUrl.
+ */
+ toUrl: function (moduleNamePlusExt, relModuleMap) {
+ var index = moduleNamePlusExt.lastIndexOf("."),
+ ext = null;
+
+ if (index !== -1) {
+ ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length);
+ moduleNamePlusExt = moduleNamePlusExt.substring(0, index);
+ }
+
+ return context.nameToUrl(moduleNamePlusExt, ext, relModuleMap);
+ },
+
+ /**
+ * Converts a module name to a file path. Supports cases where
+ * moduleName may actually be just an URL.
+ */
+ nameToUrl: function (moduleName, ext, relModuleMap) {
+ var paths, pkgs, pkg, pkgPath, syms, i, parentModule, url,
+ config = context.config;
+
+ //Normalize module name if have a base relative module name to work from.
+ moduleName = normalize(moduleName, relModuleMap && relModuleMap.fullName);
+
+ //If a colon is in the URL, it indicates a protocol is used and it is just
+ //an URL to a file, or if it starts with a slash or ends with .js, it is just a plain file.
+ //The slash is important for protocol-less URLs as well as full paths.
+ if (req.jsExtRegExp.test(moduleName)) {
+ //Just a plain path, not module name lookup, so just return it.
+ //Add extension if it is included. This is a bit wonky, only non-.js things pass
+ //an extension, this method probably needs to be reworked.
+ url = moduleName + (ext ? ext : "");
+ } else {
+ //A module that needs to be converted to a path.
+ paths = config.paths;
+ pkgs = config.pkgs;
+
+ syms = moduleName.split("/");
+ //For each module name segment, see if there is a path
+ //registered for it. Start with most specific name
+ //and work up from it.
+ for (i = syms.length; i > 0; i--) {
+ parentModule = syms.slice(0, i).join("/");
+ if (paths[parentModule]) {
+ syms.splice(0, i, paths[parentModule]);
+ break;
+ } else if ((pkg = pkgs[parentModule])) {
+ //If module name is just the package name, then looking
+ //for the main module.
+ if (moduleName === pkg.name) {
+ pkgPath = pkg.location + '/' + pkg.main;
+ } else {
+ pkgPath = pkg.location;
+ }
+ syms.splice(0, i, pkgPath);
+ break;
+ }
+ }
+
+ //Join the path parts together, then figure out if baseUrl is needed.
+ url = syms.join("/") + (ext || ".js");
+ url = (url.charAt(0) === '/' || url.match(/^\w+:/) ? "" : config.baseUrl) + url;
+ }
+
+ return config.urlArgs ? url +
+ ((url.indexOf('?') === -1 ? '?' : '&') +
+ config.urlArgs) : url;
+ }
+ };
+
+ //Make these visible on the context so can be called at the very
+ //end of the file to bootstrap
+ context.jQueryCheck = jQueryCheck;
+ context.resume = resume;
+
+ return context;
+ }
+
+ /**
+ * Main entry point.
+ *
+ * If the only argument to require is a string, then the module that
+ * is represented by that string is fetched for the appropriate context.
+ *
+ * If the first argument is an array, then it will be treated as an array
+ * of dependency string names to fetch. An optional function callback can
+ * be specified to execute when all of those dependencies are available.
+ *
+ * Make a local req variable to help Caja compliance (it assumes things
+ * on a require that are not standardized), and to give a short
+ * name for minification/local scope use.
+ */
+ req = requirejs = function (deps, callback) {
+
+ //Find the right context, use default
+ var contextName = defContextName,
+ context, config;
+
+ // Determine if have config object in the call.
+ if (!isArray(deps) && typeof deps !== "string") {
+ // deps is a config object
+ config = deps;
+ if (isArray(callback)) {
+ // Adjust args if there are dependencies
+ deps = callback;
+ callback = arguments[2];
+ } else {
+ deps = [];
+ }
+ }
+
+ if (config && config.context) {
+ contextName = config.context;
+ }
+
+ context = contexts[contextName] ||
+ (contexts[contextName] = newContext(contextName));
+
+ if (config) {
+ context.configure(config);
+ }
+
+ return context.require(deps, callback);
+ };
+
+ /**
+ * Support require.config() to make it easier to cooperate with other
+ * AMD loaders on globally agreed names.
+ */
+ req.config = function (config) {
+ return req(config);
+ };
+
+ /**
+ * Export require as a global, but only if it does not already exist.
+ */
+ if (!require) {
+ require = req;
+ }
+
+ /**
+ * Global require.toUrl(), to match global require, mostly useful
+ * for debugging/work in the global space.
+ */
+ req.toUrl = function (moduleNamePlusExt) {
+ return contexts[defContextName].toUrl(moduleNamePlusExt);
+ };
+
+ req.version = version;
+
+ //Used to filter out dependencies that are already paths.
+ req.jsExtRegExp = /^\/|:|\?|\.js$/;
+ s = req.s = {
+ contexts: contexts,
+ //Stores a list of URLs that should not get async script tag treatment.
+ skipAsync: {}
+ };
+
+ req.isAsync = req.isBrowser = isBrowser;
+ if (isBrowser) {
+ head = s.head = document.getElementsByTagName("head")[0];
+ //If BASE tag is in play, using appendChild is a problem for IE6.
+ //When that browser dies, this can be removed. Details in this jQuery bug:
+ //http://dev.jquery.com/ticket/2709
+ baseElement = document.getElementsByTagName("base")[0];
+ if (baseElement) {
+ head = s.head = baseElement.parentNode;
+ }
+ }
+
+ /**
+ * Any errors that require explicitly generates will be passed to this
+ * function. Intercept/override it if you want custom error handling.
+ * @param {Error} err the error object.
+ */
+ req.onError = function (err) {
+ throw err;
+ };
+
+ /**
+ * Does the request to load a module for the browser case.
+ * Make this a separate function to allow other environments
+ * to override it.
+ *
+ * @param {Object} context the require context to find state.
+ * @param {String} moduleName the name of the module.
+ * @param {Object} url the URL to the module.
+ */
+ req.load = function (context, moduleName, url) {
+ req.resourcesReady(false);
+
+ context.scriptCount += 1;
+ req.attach(url, context, moduleName);
+
+ //If tracking a jQuery, then make sure its ready callbacks
+ //are put on hold to prevent its ready callbacks from
+ //triggering too soon.
+ if (context.jQuery && !context.jQueryIncremented) {
+ jQueryHoldReady(context.jQuery, true);
+ context.jQueryIncremented = true;
+ }
+ };
+
+ function getInteractiveScript() {
+ var scripts, i, script;
+ if (interactiveScript && interactiveScript.readyState === 'interactive') {
+ return interactiveScript;
+ }
+
+ scripts = document.getElementsByTagName('script');
+ for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) {
+ if (script.readyState === 'interactive') {
+ return (interactiveScript = script);
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * The function that handles definitions of modules. Differs from
+ * require() in that a string for the module should be the first argument,
+ * and the function to execute after dependencies are loaded should
+ * return a value to define the module corresponding to the first argument's
+ * name.
+ */
+ define = function (name, deps, callback) {
+ var node, context;
+
+ //Allow for anonymous functions
+ if (typeof name !== 'string') {
+ //Adjust args appropriately
+ callback = deps;
+ deps = name;
+ name = null;
+ }
+
+ //This module may not have dependencies
+ if (!isArray(deps)) {
+ callback = deps;
+ deps = [];
+ }
+
+ //If no name, and callback is a function, then figure out if it a
+ //CommonJS thing with dependencies.
+ if (!deps.length && isFunction(callback)) {
+ //Remove comments from the callback string,
+ //look for require calls, and pull them into the dependencies,
+ //but only if there are function args.
+ if (callback.length) {
+ callback
+ .toString()
+ .replace(commentRegExp, "")
+ .replace(cjsRequireRegExp, function (match, dep) {
+ deps.push(dep);
+ });
+
+ //May be a CommonJS thing even without require calls, but still
+ //could use exports, and module. Avoid doing exports and module
+ //work though if it just needs require.
+ //REQUIRES the function to expect the CommonJS variables in the
+ //order listed below.
+ deps = (callback.length === 1 ? ["require"] : ["require", "exports", "module"]).concat(deps);
+ }
+ }
+
+ //If in IE 6-8 and hit an anonymous define() call, do the interactive
+ //work.
+ if (useInteractive) {
+ node = currentlyAddingScript || getInteractiveScript();
+ if (node) {
+ if (!name) {
+ name = node.getAttribute("data-requiremodule");
+ }
+ context = contexts[node.getAttribute("data-requirecontext")];
+ }
+ }
+
+ //Always save off evaluating the def call until the script onload handler.
+ //This allows multiple modules to be in a file without prematurely
+ //tracing dependencies, and allows for anonymous module support,
+ //where the module name is not known until the script onload event
+ //occurs. If no context, use the global queue, and get it processed
+ //in the onscript load callback.
+ (context ? context.defQueue : globalDefQueue).push([name, deps, callback]);
+
+ return undefined;
+ };
+
+ define.amd = {
+ multiversion: true,
+ plugins: true,
+ jQuery: true
+ };
+
+ /**
+ * Executes the text. Normally just uses eval, but can be modified
+ * to use a more environment specific call.
+ * @param {String} text the text to execute/evaluate.
+ */
+ req.exec = function (text) {
+ return eval(text);
+ };
+
+ /**
+ * Executes a module callack function. Broken out as a separate function
+ * solely to allow the build system to sequence the files in the built
+ * layer in the right sequence.
+ *
+ * @private
+ */
+ req.execCb = function (name, callback, args, exports) {
+ return callback.apply(exports, args);
+ };
+
+
+ /**
+ * Adds a node to the DOM. Public function since used by the order plugin.
+ * This method should not normally be called by outside code.
+ */
+ req.addScriptToDom = function (node) {
+ //For some cache cases in IE 6-8, the script executes before the end
+ //of the appendChild execution, so to tie an anonymous define
+ //call to the module name (which is stored on the node), hold on
+ //to a reference to this node, but clear after the DOM insertion.
+ currentlyAddingScript = node;
+ if (baseElement) {
+ head.insertBefore(node, baseElement);
+ } else {
+ head.appendChild(node);
+ }
+ currentlyAddingScript = null;
+ };
+
+ /**
+ * callback for script loads, used to check status of loading.
+ *
+ * @param {Event} evt the event from the browser for the script
+ * that was loaded.
+ *
+ * @private
+ */
+ req.onScriptLoad = function (evt) {
+ //Using currentTarget instead of target for Firefox 2.0's sake. Not
+ //all old browsers will be supported, but this one was easy enough
+ //to support and still makes sense.
+ var node = evt.currentTarget || evt.srcElement, contextName, moduleName,
+ context;
+
+ if (evt.type === "load" || (node && readyRegExp.test(node.readyState))) {
+ //Reset interactive script so a script node is not held onto for
+ //to long.
+ interactiveScript = null;
+
+ //Pull out the name of the module and the context.
+ contextName = node.getAttribute("data-requirecontext");
+ moduleName = node.getAttribute("data-requiremodule");
+ context = contexts[contextName];
+
+ contexts[contextName].completeLoad(moduleName);
+
+ //Clean up script binding. Favor detachEvent because of IE9
+ //issue, see attachEvent/addEventListener comment elsewhere
+ //in this file.
+ if (node.detachEvent && !isOpera) {
+ //Probably IE. If not it will throw an error, which will be
+ //useful to know.
+ node.detachEvent("onreadystatechange", req.onScriptLoad);
+ } else {
+ node.removeEventListener("load", req.onScriptLoad, false);
+ }
+ }
+ };
+
+ /**
+ * Attaches the script represented by the URL to the current
+ * environment. Right now only supports browser loading,
+ * but can be redefined in other environments to do the right thing.
+ * @param {String} url the url of the script to attach.
+ * @param {Object} context the context that wants the script.
+ * @param {moduleName} the name of the module that is associated with the script.
+ * @param {Function} [callback] optional callback, defaults to require.onScriptLoad
+ * @param {String} [type] optional type, defaults to text/javascript
+ * @param {Function} [fetchOnlyFunction] optional function to indicate the script node
+ * should be set up to fetch the script but do not attach it to the DOM
+ * so that it can later be attached to execute it. This is a way for the
+ * order plugin to support ordered loading in IE. Once the script is fetched,
+ * but not executed, the fetchOnlyFunction will be called.
+ */
+ req.attach = function (url, context, moduleName, callback, type, fetchOnlyFunction) {
+ var node;
+ if (isBrowser) {
+ //In the browser so use a script tag
+ callback = callback || req.onScriptLoad;
+ node = context && context.config && context.config.xhtml ?
+ document.createElementNS("http://www.w3.org/1999/xhtml", "html:script") :
+ document.createElement("script");
+ node.type = type || (context && context.config.scriptType) ||
+ "text/javascript";
+ node.charset = "utf-8";
+ //Use async so Gecko does not block on executing the script if something
+ //like a long-polling comet tag is being run first. Gecko likes
+ //to evaluate scripts in DOM order, even for dynamic scripts.
+ //It will fetch them async, but only evaluate the contents in DOM
+ //order, so a long-polling script tag can delay execution of scripts
+ //after it. But telling Gecko we expect async gets us the behavior
+ //we want -- execute it whenever it is finished downloading. Only
+ //Helps Firefox 3.6+
+ //Allow some URLs to not be fetched async. Mostly helps the order!
+ //plugin
+ node.async = !s.skipAsync[url];
+
+ if (context) {
+ node.setAttribute("data-requirecontext", context.contextName);
+ }
+ node.setAttribute("data-requiremodule", moduleName);
+
+ //Set up load listener. Test attachEvent first because IE9 has
+ //a subtle issue in its addEventListener and script onload firings
+ //that do not match the behavior of all other browsers with
+ //addEventListener support, which fire the onload event for a
+ //script right after the script execution. See:
+ //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution
+ //UNFORTUNATELY Opera implements attachEvent but does not follow the script
+ //script execution mode.
+ if (node.attachEvent && !isOpera) {
+ //Probably IE. IE (at least 6-8) do not fire
+ //script onload right after executing the script, so
+ //we cannot tie the anonymous define call to a name.
+ //However, IE reports the script as being in "interactive"
+ //readyState at the time of the define call.
+ useInteractive = true;
+
+
+ if (fetchOnlyFunction) {
+ //Need to use old school onreadystate here since
+ //when the event fires and the node is not attached
+ //to the DOM, the evt.srcElement is null, so use
+ //a closure to remember the node.
+ node.onreadystatechange = function (evt) {
+ //Script loaded but not executed.
+ //Clear loaded handler, set the real one that
+ //waits for script execution.
+ if (node.readyState === 'loaded') {
+ node.onreadystatechange = null;
+ node.attachEvent("onreadystatechange", callback);
+ fetchOnlyFunction(node);
+ }
+ };
+ } else {
+ node.attachEvent("onreadystatechange", callback);
+ }
+ } else {
+ node.addEventListener("load", callback, false);
+ }
+ node.src = url;
+
+ //Fetch only means waiting to attach to DOM after loaded.
+ if (!fetchOnlyFunction) {
+ req.addScriptToDom(node);
+ }
+
+ return node;
+ } else if (isWebWorker) {
+ //In a web worker, use importScripts. This is not a very
+ //efficient use of importScripts, importScripts will block until
+ //its script is downloaded and evaluated. However, if web workers
+ //are in play, the expectation that a build has been done so that
+ //only one script needs to be loaded anyway. This may need to be
+ //reevaluated if other use cases become common.
+ importScripts(url);
+
+ //Account for anonymous modules
+ context.completeLoad(moduleName);
+ }
+ return null;
+ };
+
+ //Look for a data-main script attribute, which could also adjust the baseUrl.
+ if (isBrowser) {
+ //Figure out baseUrl. Get it from the script tag with require.js in it.
+ scripts = document.getElementsByTagName("script");
+
+ for (globalI = scripts.length - 1; globalI > -1 && (script = scripts[globalI]); globalI--) {
+ //Set the "head" where we can append children by
+ //using the script's parent.
+ if (!head) {
+ head = script.parentNode;
+ }
+
+ //Look for a data-main attribute to set main script for the page
+ //to load. If it is there, the path to data main becomes the
+ //baseUrl, if it is not already set.
+ if ((dataMain = script.getAttribute('data-main'))) {
+ if (!cfg.baseUrl) {
+ //Pull off the directory of data-main for use as the
+ //baseUrl.
+ src = dataMain.split('/');
+ mainScript = src.pop();
+ subPath = src.length ? src.join('/') + '/' : './';
+
+ //Set final config.
+ cfg.baseUrl = subPath;
+ //Strip off any trailing .js since dataMain is now
+ //like a module name.
+ dataMain = mainScript.replace(jsSuffixRegExp, '');
+ }
+
+ //Put the data-main script in the files to load.
+ cfg.deps = cfg.deps ? cfg.deps.concat(dataMain) : [dataMain];
+
+ break;
+ }
+ }
+ }
+
+ //See if there is nothing waiting across contexts, and if not, trigger
+ //resourcesReady.
+ req.checkReadyState = function () {
+ var contexts = s.contexts, prop;
+ for (prop in contexts) {
+ if (!(prop in empty)) {
+ if (contexts[prop].waitCount) {
+ return;
+ }
+ }
+ }
+ req.resourcesReady(true);
+ };
+
+ /**
+ * Internal function that is triggered whenever all scripts/resources
+ * have been loaded by the loader. Can be overridden by other, for
+ * instance the domReady plugin, which wants to know when all resources
+ * are loaded.
+ */
+ req.resourcesReady = function (isReady) {
+ var contexts, context, prop;
+
+ //First, set the public variable indicating that resources are loading.
+ req.resourcesDone = isReady;
+
+ if (req.resourcesDone) {
+ //If jQuery with DOM ready delayed, release it now.
+ contexts = s.contexts;
+ for (prop in contexts) {
+ if (!(prop in empty)) {
+ context = contexts[prop];
+ if (context.jQueryIncremented) {
+ jQueryHoldReady(context.jQuery, false);
+ context.jQueryIncremented = false;
+ }
+ }
+ }
+ }
+ };
+
+ //FF < 3.6 readyState fix. Needed so that domReady plugin
+ //works well in that environment, since require.js is normally
+ //loaded via an HTML script tag so it will be there before window load,
+ //where the domReady plugin is more likely to be loaded after window load.
+ req.pageLoaded = function () {
+ if (document.readyState !== "complete") {
+ document.readyState = "complete";
+ }
+ };
+ if (isBrowser) {
+ if (document.addEventListener) {
+ if (!document.readyState) {
+ document.readyState = "loading";
+ window.addEventListener("load", req.pageLoaded, false);
+ }
+ }
+ }
+
+ //Set up default context. If require was a configuration object, use that as base config.
+ req(cfg);
+
+ //If modules are built into require.js, then need to make sure dependencies are
+ //traced. Use a setTimeout in the browser world, to allow all the modules to register
+ //themselves. In a non-browser env, assume that modules are not built into require.js,
+ //which seems odd to do on the server.
+ if (req.isAsync && typeof setTimeout !== "undefined") {
+ ctx = s.contexts[(cfg.context || defContextName)];
+ //Indicate that the script that includes require() is still loading,
+ //so that require()'d dependencies are not traced until the end of the
+ //file is parsed (approximated via the setTimeout call).
+ ctx.requireWait = true;
+ setTimeout(function () {
+ ctx.requireWait = false;
+
+ if (!ctx.scriptCount) {
+ ctx.resume();
+ }
+ req.checkReadyState();
+ }, 0);
+ }
+}());
diff --git a/modules/storageService.js b/modules/storageService.js
index 10ac1c6..141603e 100644
--- a/modules/storageService.js
+++ b/modules/storageService.js
@@ -1,388 +1,388 @@
-/* See license.txt for terms of usage */
-
-// ********************************************************************************************* //
-// Constants
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-const Cu = Components.utils;
-
-const dirService = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties);
-
-// https://developer.mozilla.org/en/Using_JavaScript_code_modules
-var EXPORTED_SYMBOLS = ["Storage", "StorageService", "TextService"];
-
-Cu.import("resource://firebug/fbtrace.js");
-Cu.import("resource://gre/modules/FileUtils.jsm");
-
-var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
-
-try
-{
- Cu["import"]("resource://gre/modules/PrivateBrowsingUtils.jsm");
-}
-catch (err)
-{
-}
-
-// ********************************************************************************************* //
-// Implementation
-
-// xxxHonza: the entire JSM should be converted into AMD.
-// But there could be extensions
-// see: https://groups.google.com/d/msg/firebug/C5dlQ2S1e0U/ZJ76nxtUAAMJ
-
-/**
- * http://dev.w3.org/html5/webstorage/#storage-0
- * interface Storage {
- * readonly attribute unsigned long length;
- * getter DOMString key(in unsigned long index);
- * getter any getItem(in DOMString key);
- * setter creator void setItem(in DOMString key, in any data);
- * deleter void removeItem(in DOMString key);
- * void clear();
- * };
- */
-function Storage(leafName, win)
-{
- this.leafName = leafName;
- this.win = win;
-
- this.objectTable = {};
-}
-
-Storage.prototype =
-{
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Read
-
- get length()
- {
- return this.key(-1);
- },
-
- key: function(index)
- {
- var i = 0;
- for (var p in this.objectTable)
- {
- if (i === index)
- return p;
- i++;
- }
- return (index < 0 ? i : null);
- },
-
- getItem: function(key)
- {
- return this.objectTable[key];
- },
-
- getKeys: function()
- {
- var keys = [];
-
- for (var p in this.objectTable)
- if (this.objectTable.hasOwnProperty(p))
- keys.push(p);
-
- return keys;
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
- // Write
-
- setItem: function(key, data)
- {
- this.objectTable[key] = data;
- StorageService.setStorage(this);
- },
-
- removeItem: function(key)
- {
- delete this.objectTable[key];
- StorageService.setStorage(this);
- },
-
- clear: function(now)
- {
- this.objectTable = {};
- StorageService.setStorage(this, now);
- }
-};
-
-// ********************************************************************************************* //
-
-/**
- * var store = StorageService.getStorage(leafName);
- * store.setItem("foo", bar); // writes to disk
- */
-var StorageService =
-{
- getStorage: function(leafName, win)
- {
- var store = new Storage(leafName, win);
-
- try
- {
- var obj = ObjectPersister.readObject(leafName);
- if (obj)
- store.objectTable = obj;
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS || FBTrace.DBG_STORAGE)
- {
- FBTrace.sysout("StorageService.getStorage; EXCEPTION for " + leafName +
- ": " + err, err);
- }
- }
-
- return store;
- },
-
- setStorage: function(store, now)
- {
- if (!store || !store.leafName || !store.objectTable)
- throw new Error("StorageService.setStorage requires Storage Object argument");
-
- // xxxHonza: writeNow() doesn't check private browsing mode, which is not safe.
- // But |now| is currently set to true only in clear() method, which works
- // (and should work I guess) even in private browsing mode.
- if (now)
- ObjectPersister.writeNow(store.leafName, store.objectTable);
- else
- ObjectPersister.writeObject(store.leafName, store.objectTable, store.win);
- },
-
- removeStorage: function(leafName)
- {
- ObjectPersister.deleteObject(leafName);
- },
-
- hasStorage: function(leafName)
- {
- var file = ObjectPersister.getFile(leafName);
- return file.exists();
- }
-};
-
-// ********************************************************************************************* //
-// Implementation
-
-/**
- * @class Represents an internal Firebug persistence service.
- */
-var ObjectPersister =
-{
- readObject: function(leafName)
- {
- if (FBTrace.DBG_STORAGE)
- FBTrace.sysout("ObjectPersister read from leafName "+leafName);
-
- var file = this.getFile(leafName);
-
- if (!file.exists())
- {
- file.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
- if (FBTrace.DBG_STORAGE)
- FBTrace.sysout("ObjectPersister.readTextFromFile file created " + file.path);
- return;
- }
-
- var obj = this.readObjectFromFile(file);
- return obj;
- },
-
- readObjectFromFile: function(file)
- {
- var text = ObjectPersister.readTextFromFile(file);
- if (!text)
- return null;
-
- var obj = JSON.parse(text);
- if (!obj)
- return;
-
- if (FBTrace.DBG_STORAGE)
- FBTrace.sysout("PersistedObject loaded from " + file.path+" got text "+text, obj);
-
- return obj;
- },
-
- readTextFromFile: function(file)
- {
- try
- {
- var inputStream = Cc["@mozilla.org/network/file-input-stream;1"]
- .createInstance(Ci.nsIFileInputStream);
- var cstream = Cc["@mozilla.org/intl/converter-input-stream;1"]
- .createInstance(Ci.nsIConverterInputStream);
-
- // Initialize input stream.
- inputStream.init(file, 0x01 | 0x08, 0666, 0); // read, create
- cstream.init(inputStream, "UTF-8", 0, 0);
-
- // Load json.
- var json = "";
- var data = {};
- while (cstream.readString(-1, data) != 0)
- json += data.value;
-
- inputStream.close();
-
- return json;
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS || FBTrace.DBG_STORAGE)
- FBTrace.sysout("ObjectPersister.initialize; EXCEPTION", err);
- }
- },
-
- getFile: function(leafName)
- {
- return FileUtils.getFile("ProfD", ["firebug", leafName]);
- },
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
- // Batch the writes for each event loop
- writeDelay: 250,
-
- writeObject: function(leafName, obj, win)
- {
- if (this.isPrivateBrowsing(win))
- throw new Error("No storage is written while in private browsing mode");
-
- if (ObjectPersister.flushTimeout)
- return;
-
- ObjectPersister.flushTimeout = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
-
- var writeOnTimeout = ObjectPersister.getWriteOnTimeout(leafName, obj);
- ObjectPersister.flushTimeout.init(writeOnTimeout, ObjectPersister.writeDelay,
- Ci.nsITimer.TYPE_ONE_SHOT);
- },
-
- getWriteOnTimeout: function(leafName, obj)
- {
- var writerClosure =
- {
- leafName: leafName,
- obj: obj,
- observe: function(timer, topic, data)
- {
- ObjectPersister.writeNow(writerClosure.leafName, writerClosure.obj);
- delete ObjectPersister.flushTimeout;
- }
- };
- return writerClosure;
- },
-
- writeNow: function(leafName, obj)
- {
- try
- {
- // Convert data to JSON.
- var jsonString = JSON.stringify(obj);
- var file = this.getFile(leafName);
- ObjectPersister.writeTextToFile(file, jsonString);
- }
- catch(exc)
- {
- if (FBTrace.DBG_ERRORS || FBTrace.DBG_STORAGE)
- FBTrace.sysout("ObjectPersister.writeNow; EXCEPTION for " + leafName + ": " +
- exc, {exception: exc, obj: obj});
- }
- },
-
- writeTextToFile: function(file, string)
- {
- try
- {
- // Initialize output stream.
- var outputStream = Cc["@mozilla.org/network/file-output-stream;1"]
- .createInstance(Ci.nsIFileOutputStream);
- outputStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0); // write, create, truncate
-
- // Store JSON
- outputStream.write(string, string.length);
- outputStream.close();
-
- if (FBTrace.DBG_STORAGE)
- FBTrace.sysout("ObjectPersister.writeNow to " + file.path, string);
-
- return file.path;
- }
- catch (err)
- {
- if (FBTrace.DBG_ERRORS || FBTrace.DBG_STORAGE)
- FBTrace.sysout("ObjectPersister.writeTextToFile; EXCEPTION for " + file.path +
- ": "+err, {exception: err, string: string});
- }
- },
-
- deleteObject: function(leafName)
- {
- var file = this.getFile(leafName);
- return file.remove(false);
- },
-
- // xxxHonza: this entire method is duplicated from firebug/lib/privacy module
- // As soon as this JSM is AMD we should just use firebug/lib/privacy.
- isPrivateBrowsing: function(win)
- {
- try
- {
- // If |win| is null, the top most window is used to figure out
- // whether the private mode is on or off.
- if (!win)
- win = wm.getMostRecentWindow("navigator:browser");
- }
- catch (e)
- {
- if (FBTrace.DBG_ERRORS)
- FBTrace.sysout("storageService.isPrivateBrowsing; EXCEPTION " + e, e);
- }
-
- try
- {
- // Get firebugFrame.xul and check privaate mode (it's the same as
- // for the top parent window).
- if (typeof PrivateBrowsingUtils != "undefined")
- return PrivateBrowsingUtils.isWindowPrivate(win);
- }
- catch (e)
- {
- }
-
- try
- {
- // Unfortunatelly the "firebug/chrome/privacy" module can't be used
- // since this scope is JavaScript code module.
- // xxxHonza: storageService should be converted into AMD (but it's used
- // in firebug-service.js, which is also JS code module).
- // firebug-service.js is gone in JSD2 branch
- var pbs = Components.classes["@mozilla.org/privatebrowsing;1"]
- .getService(Components.interfaces.nsIPrivateBrowsingService);
- return pbs.privateBrowsingEnabled;
- }
- catch (e)
- {
- }
-
- return false;
- }
-};
-
-// ********************************************************************************************* //
-
-var TextService =
-{
- readText: ObjectPersister.readTextFromFile,
- writeText: ObjectPersister.writeTextToFile
-};
-
-// ********************************************************************************************* //
+/* See license.txt for terms of usage */
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+const Cu = Components.utils;
+
+const dirService = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties);
+
+// https://developer.mozilla.org/en/Using_JavaScript_code_modules
+var EXPORTED_SYMBOLS = ["Storage", "StorageService", "TextService"];
+
+Cu.import("resource://firebug/fbtrace.js");
+Cu.import("resource://gre/modules/FileUtils.jsm");
+
+var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
+
+try
+{
+ Cu["import"]("resource://gre/modules/PrivateBrowsingUtils.jsm");
+}
+catch (err)
+{
+}
+
+// ********************************************************************************************* //
+// Implementation
+
+// xxxHonza: the entire JSM should be converted into AMD.
+// But there could be extensions
+// see: https://groups.google.com/d/msg/firebug/C5dlQ2S1e0U/ZJ76nxtUAAMJ
+
+/**
+ * http://dev.w3.org/html5/webstorage/#storage-0
+ * interface Storage {
+ * readonly attribute unsigned long length;
+ * getter DOMString key(in unsigned long index);
+ * getter any getItem(in DOMString key);
+ * setter creator void setItem(in DOMString key, in any data);
+ * deleter void removeItem(in DOMString key);
+ * void clear();
+ * };
+ */
+function Storage(leafName, win)
+{
+ this.leafName = leafName;
+ this.win = win;
+
+ this.objectTable = {};
+}
+
+Storage.prototype =
+{
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Read
+
+ get length()
+ {
+ return this.key(-1);
+ },
+
+ key: function(index)
+ {
+ var i = 0;
+ for (var p in this.objectTable)
+ {
+ if (i === index)
+ return p;
+ i++;
+ }
+ return (index < 0 ? i : null);
+ },
+
+ getItem: function(key)
+ {
+ return this.objectTable[key];
+ },
+
+ getKeys: function()
+ {
+ var keys = [];
+
+ for (var p in this.objectTable)
+ if (this.objectTable.hasOwnProperty(p))
+ keys.push(p);
+
+ return keys;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Write
+
+ setItem: function(key, data)
+ {
+ this.objectTable[key] = data;
+ StorageService.setStorage(this);
+ },
+
+ removeItem: function(key)
+ {
+ delete this.objectTable[key];
+ StorageService.setStorage(this);
+ },
+
+ clear: function(now)
+ {
+ this.objectTable = {};
+ StorageService.setStorage(this, now);
+ }
+};
+
+// ********************************************************************************************* //
+
+/**
+ * var store = StorageService.getStorage(leafName);
+ * store.setItem("foo", bar); // writes to disk
+ */
+var StorageService =
+{
+ getStorage: function(leafName, win)
+ {
+ var store = new Storage(leafName, win);
+
+ try
+ {
+ var obj = ObjectPersister.readObject(leafName);
+ if (obj)
+ store.objectTable = obj;
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_STORAGE)
+ {
+ FBTrace.sysout("StorageService.getStorage; EXCEPTION for " + leafName +
+ ": " + err, err);
+ }
+ }
+
+ return store;
+ },
+
+ setStorage: function(store, now)
+ {
+ if (!store || !store.leafName || !store.objectTable)
+ throw new Error("StorageService.setStorage requires Storage Object argument");
+
+ // xxxHonza: writeNow() doesn't check private browsing mode, which is not safe.
+ // But |now| is currently set to true only in clear() method, which works
+ // (and should work I guess) even in private browsing mode.
+ if (now)
+ ObjectPersister.writeNow(store.leafName, store.objectTable);
+ else
+ ObjectPersister.writeObject(store.leafName, store.objectTable, store.win);
+ },
+
+ removeStorage: function(leafName)
+ {
+ ObjectPersister.deleteObject(leafName);
+ },
+
+ hasStorage: function(leafName)
+ {
+ var file = ObjectPersister.getFile(leafName);
+ return file.exists();
+ }
+};
+
+// ********************************************************************************************* //
+// Implementation
+
+/**
+ * @class Represents an internal Firebug persistence service.
+ */
+var ObjectPersister =
+{
+ readObject: function(leafName)
+ {
+ if (FBTrace.DBG_STORAGE)
+ FBTrace.sysout("ObjectPersister read from leafName "+leafName);
+
+ var file = this.getFile(leafName);
+
+ if (!file.exists())
+ {
+ file.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+ if (FBTrace.DBG_STORAGE)
+ FBTrace.sysout("ObjectPersister.readTextFromFile file created " + file.path);
+ return;
+ }
+
+ var obj = this.readObjectFromFile(file);
+ return obj;
+ },
+
+ readObjectFromFile: function(file)
+ {
+ var text = ObjectPersister.readTextFromFile(file);
+ if (!text)
+ return null;
+
+ var obj = JSON.parse(text);
+ if (!obj)
+ return;
+
+ if (FBTrace.DBG_STORAGE)
+ FBTrace.sysout("PersistedObject loaded from " + file.path+" got text "+text, obj);
+
+ return obj;
+ },
+
+ readTextFromFile: function(file)
+ {
+ try
+ {
+ var inputStream = Cc["@mozilla.org/network/file-input-stream;1"]
+ .createInstance(Ci.nsIFileInputStream);
+ var cstream = Cc["@mozilla.org/intl/converter-input-stream;1"]
+ .createInstance(Ci.nsIConverterInputStream);
+
+ // Initialize input stream.
+ inputStream.init(file, 0x01 | 0x08, 0666, 0); // read, create
+ cstream.init(inputStream, "UTF-8", 0, 0);
+
+ // Load json.
+ var json = "";
+ var data = {};
+ while (cstream.readString(-1, data) != 0)
+ json += data.value;
+
+ inputStream.close();
+
+ return json;
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_STORAGE)
+ FBTrace.sysout("ObjectPersister.initialize; EXCEPTION", err);
+ }
+ },
+
+ getFile: function(leafName)
+ {
+ return FileUtils.getFile("ProfD", ["firebug", leafName]);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ // Batch the writes for each event loop
+ writeDelay: 250,
+
+ writeObject: function(leafName, obj, win)
+ {
+ if (this.isPrivateBrowsing(win))
+ throw new Error("No storage is written while in private browsing mode");
+
+ if (ObjectPersister.flushTimeout)
+ return;
+
+ ObjectPersister.flushTimeout = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
+
+ var writeOnTimeout = ObjectPersister.getWriteOnTimeout(leafName, obj);
+ ObjectPersister.flushTimeout.init(writeOnTimeout, ObjectPersister.writeDelay,
+ Ci.nsITimer.TYPE_ONE_SHOT);
+ },
+
+ getWriteOnTimeout: function(leafName, obj)
+ {
+ var writerClosure =
+ {
+ leafName: leafName,
+ obj: obj,
+ observe: function(timer, topic, data)
+ {
+ ObjectPersister.writeNow(writerClosure.leafName, writerClosure.obj);
+ delete ObjectPersister.flushTimeout;
+ }
+ };
+ return writerClosure;
+ },
+
+ writeNow: function(leafName, obj)
+ {
+ try
+ {
+ // Convert data to JSON.
+ var jsonString = JSON.stringify(obj);
+ var file = this.getFile(leafName);
+ ObjectPersister.writeTextToFile(file, jsonString);
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_STORAGE)
+ FBTrace.sysout("ObjectPersister.writeNow; EXCEPTION for " + leafName + ": " +
+ exc, {exception: exc, obj: obj});
+ }
+ },
+
+ writeTextToFile: function(file, string)
+ {
+ try
+ {
+ // Initialize output stream.
+ var outputStream = Cc["@mozilla.org/network/file-output-stream;1"]
+ .createInstance(Ci.nsIFileOutputStream);
+ outputStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0); // write, create, truncate
+
+ // Store JSON
+ outputStream.write(string, string.length);
+ outputStream.close();
+
+ if (FBTrace.DBG_STORAGE)
+ FBTrace.sysout("ObjectPersister.writeNow to " + file.path, string);
+
+ return file.path;
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_STORAGE)
+ FBTrace.sysout("ObjectPersister.writeTextToFile; EXCEPTION for " + file.path +
+ ": "+err, {exception: err, string: string});
+ }
+ },
+
+ deleteObject: function(leafName)
+ {
+ var file = this.getFile(leafName);
+ return file.remove(false);
+ },
+
+ // xxxHonza: this entire method is duplicated from firebug/lib/privacy module
+ // As soon as this JSM is AMD we should just use firebug/lib/privacy.
+ isPrivateBrowsing: function(win)
+ {
+ try
+ {
+ // If |win| is null, the top most window is used to figure out
+ // whether the private mode is on or off.
+ if (!win)
+ win = wm.getMostRecentWindow("navigator:browser");
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("storageService.isPrivateBrowsing; EXCEPTION " + e, e);
+ }
+
+ try
+ {
+ // Get firebugFrame.xul and check privaate mode (it's the same as
+ // for the top parent window).
+ if (typeof PrivateBrowsingUtils != "undefined")
+ return PrivateBrowsingUtils.isWindowPrivate(win);
+ }
+ catch (e)
+ {
+ }
+
+ try
+ {
+ // Unfortunatelly the "firebug/chrome/privacy" module can't be used
+ // since this scope is JavaScript code module.
+ // xxxHonza: storageService should be converted into AMD (but it's used
+ // in firebug-service.js, which is also JS code module).
+ // firebug-service.js is gone in JSD2 branch
+ var pbs = Components.classes["@mozilla.org/privatebrowsing;1"]
+ .getService(Components.interfaces.nsIPrivateBrowsingService);
+ return pbs.privateBrowsingEnabled;
+ }
+ catch (e)
+ {
+ }
+
+ return false;
+ }
+};
+
+// ********************************************************************************************* //
+
+var TextService =
+{
+ readText: ObjectPersister.readTextFromFile,
+ writeText: ObjectPersister.writeTextToFile
+};
+
+// ********************************************************************************************* //
diff --git a/skin/classic/balloonNote.css b/skin/classic/balloonNote.css
index 24d80b9..226ea6b 100644
--- a/skin/classic/balloonNote.css
+++ b/skin/classic/balloonNote.css
@@ -1,132 +1,132 @@
-/* See license.txt for terms of usage */
-
-/************************************************************************************************/
-
-.balloon {
- z-index: 2147483647;
- position: absolute;
- margin-top: 0;
- left: 2px;
- width: 90%;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.balloonContent {
- font-family: Lucida Grande, sans-serif;
- font-size: 11px;
- color: #226679;
-}
-
-.balloonCloseButton {
- float: right;
- vertical-align: top;
- position: relative;
- top: -13px;
- right: -8px;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.balloonTop1 {
- background: url(noteCorners.png) no-repeat 100% 0;
- margin-left: 37px;
- height: 35px;
-}
-
-.balloonTop2 {
- position: relative;
- left: -37px;
- width: 37px;
- height: 35px;
- background: url(noteCorners.png) no-repeat;
-}
-
-.balloonInner1 {
- padding-left: 37px;
- background: url(noteBorders.png) repeat-y;
-}
-
-.balloonInner2 {
- padding-right: 25px;
- background: url(noteBorders.png) repeat-y 100% 0;
-}
-
-.balloonInner3 {
- background: url(noteContent.png) repeat-y;
-}
-
-.balloonInner4 {
- position: relative;
- top: -8px;
-}
-
-.balloonBottom1 {
- background: url(noteCorners.png) no-repeat 100% 100%;
- margin-left: 37px;
- height: 33px;
-}
-
-.balloonBottom2 {
- position: relative;
- left: -37px;
- width: 37px;
- height: 33px;
- background: url(noteCorners.png) no-repeat 0 100%;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.upsideDown {
- margin-top: 2px;
-}
-
-.upsideDown .balloonTop1 {
- background: url(noteCornersUps.png) no-repeat 100% 0;
- margin-left: 33px;
- height: 25px;
-}
-
-.upsideDown .balloonTop2 {
- position: relative;
- left: -33px;
- width: 33px;
- height: 25px;
- background: url(noteCornersUps.png) no-repeat;
-}
-
-.upsideDown .balloonInner1 {
- padding-left: 33px;
- background: url(noteBordersUps.png) repeat-y;
-}
-
-.upsideDown .balloonInner2 {
- padding-right: 25px;
- background: url(noteBordersUps.png) repeat-y 100% 0;
-}
-
-.upsideDown .balloonInner3 {
- background: url(noteContentUps.png) repeat-y;
-}
-
-.upsideDown .balloonInner4 {
- top: 8px;
-}
-
-.upsideDown .balloonBottom1 {
- background: url(noteCornersUps.png) no-repeat 100% 100%;
- margin-left: 33px;
- height: 43px;
- z-index: 500;
-}
-
-.upsideDown .balloonBottom2 {
- position: relative;
- left: -33px;
- width: 33px;
- height: 43px;
- background: url(noteCornersUps.png) no-repeat 0 100%;
- z-index: 500;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/* See license.txt for terms of usage */
+
+/************************************************************************************************/
+
+.balloon {
+ z-index: 2147483647;
+ position: absolute;
+ margin-top: 0;
+ left: 2px;
+ width: 90%;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.balloonContent {
+ font-family: Lucida Grande, sans-serif;
+ font-size: 11px;
+ color: #226679;
+}
+
+.balloonCloseButton {
+ float: right;
+ vertical-align: top;
+ position: relative;
+ top: -13px;
+ right: -8px;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.balloonTop1 {
+ background: url(noteCorners.png) no-repeat 100% 0;
+ margin-left: 37px;
+ height: 35px;
+}
+
+.balloonTop2 {
+ position: relative;
+ left: -37px;
+ width: 37px;
+ height: 35px;
+ background: url(noteCorners.png) no-repeat;
+}
+
+.balloonInner1 {
+ padding-left: 37px;
+ background: url(noteBorders.png) repeat-y;
+}
+
+.balloonInner2 {
+ padding-right: 25px;
+ background: url(noteBorders.png) repeat-y 100% 0;
+}
+
+.balloonInner3 {
+ background: url(noteContent.png) repeat-y;
+}
+
+.balloonInner4 {
+ position: relative;
+ top: -8px;
+}
+
+.balloonBottom1 {
+ background: url(noteCorners.png) no-repeat 100% 100%;
+ margin-left: 37px;
+ height: 33px;
+}
+
+.balloonBottom2 {
+ position: relative;
+ left: -37px;
+ width: 37px;
+ height: 33px;
+ background: url(noteCorners.png) no-repeat 0 100%;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.upsideDown {
+ margin-top: 2px;
+}
+
+.upsideDown .balloonTop1 {
+ background: url(noteCornersUps.png) no-repeat 100% 0;
+ margin-left: 33px;
+ height: 25px;
+}
+
+.upsideDown .balloonTop2 {
+ position: relative;
+ left: -33px;
+ width: 33px;
+ height: 25px;
+ background: url(noteCornersUps.png) no-repeat;
+}
+
+.upsideDown .balloonInner1 {
+ padding-left: 33px;
+ background: url(noteBordersUps.png) repeat-y;
+}
+
+.upsideDown .balloonInner2 {
+ padding-right: 25px;
+ background: url(noteBordersUps.png) repeat-y 100% 0;
+}
+
+.upsideDown .balloonInner3 {
+ background: url(noteContentUps.png) repeat-y;
+}
+
+.upsideDown .balloonInner4 {
+ top: 8px;
+}
+
+.upsideDown .balloonBottom1 {
+ background: url(noteCornersUps.png) no-repeat 100% 100%;
+ margin-left: 33px;
+ height: 43px;
+ z-index: 500;
+}
+
+.upsideDown .balloonBottom2 {
+ position: relative;
+ left: -33px;
+ width: 33px;
+ height: 43px;
+ background: url(noteCornersUps.png) no-repeat 0 100%;
+ z-index: 500;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
diff --git a/skin/classic/bindings.xml b/skin/classic/bindings.xml
index 9b6f322..3d1bdf2 100644
--- a/skin/classic/bindings.xml
+++ b/skin/classic/bindings.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0"?>
-
-<bindings id="bindings"
- xmlns="http://www.mozilla.org/xbl"
- xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- xmlns:xbl="http://www.mozilla.org/xbl">
-
- <binding id="tab" display="xul:button"
- extends="chrome://global/content/bindings/button.xml#button-base">
- <content>
- <xul:hbox class="tab-image-left" xbl:inherits="selected"/>
- <xul:hbox flex="1" class="tab-image-middle" align="center" xbl:inherits="selected">
- <xul:label flex="1" xbl:inherits="value=label,crop,accesskey" crop="right" class="tab-text"/>
- </xul:hbox>
- <xul:hbox class="tab-image-right" xbl:inherits="selected"/>
- </content>
- </binding>
-
-</bindings>
+<?xml version="1.0"?>
+
+<bindings id="bindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <binding id="tab" display="xul:button"
+ extends="chrome://global/content/bindings/button.xml#button-base">
+ <content>
+ <xul:hbox class="tab-image-left" xbl:inherits="selected"/>
+ <xul:hbox flex="1" class="tab-image-middle" align="center" xbl:inherits="selected">
+ <xul:label flex="1" xbl:inherits="value=label,crop,accesskey" crop="right" class="tab-text"/>
+ </xul:hbox>
+ <xul:hbox class="tab-image-right" xbl:inherits="selected"/>
+ </content>
+ </binding>
+
+</bindings>
diff --git a/skin/classic/breakpoint.css b/skin/classic/breakpoint.css
index c96f5f9..dd5a8ea 100644
--- a/skin/classic/breakpoint.css
+++ b/skin/classic/breakpoint.css
@@ -1,125 +1,125 @@
-/* See license.txt for terms of usage */
-
-.breakpointBlock > .breakpointHeader {
- position: relative;
- cursor: pointer;
- -moz-user-select: none;
- margin: 0;
- border-top: none;
-}
-
-.breakpointsHeaderLabel {
- margin-left: 14px;
-}
-
-.breakpointBlock > .breakpointsGroupListBox {
- display: none;
-}
-
-.breakpointBlock.opened > .breakpointsGroupListBox {
- display: block;
-}
-
-.breakpointsGroupListBox {
- overflow: hidden;
-}
-
-.breakpointBlockHead {
- position: relative;
- padding-top: 4px;
-}
-
-.breakpointBlockHead > .checkbox {
- margin-right: 4px;
-}
-
-.breakpointBlockHead > .objectLink-sourceLink {
- top: 4px;
- right: 20px;
- background-color: #FFFFFF; /* issue 3308 */
-}
-
-.breakpointBlockHead > .closeButton {
- position: absolute;
- top: 2px;
- right: 2px;
-}
-
-.breakpointCheckbox {
- margin-top: 0;
- vertical-align: top;
-}
-
-.breakpointName {
- margin-left: 4px;
- font-weight: bold;
-}
-
-.breakpointRow.disabled > .breakpointBlockHead > *,
-.breakpointRow.disabled > .breakpointCode {
- opacity: 0.5;
-}
-
-.breakpointRow.disabled > .breakpointBlockHead > .breakpointCheckbox,
-.breakpointRow.disabled > .breakpointBlockHead > .objectLink-sourceLink,
-.breakpointRow.disabled > .breakpointBlockHead > .breakpointMutationType,
-.breakpointRow.disabled > .breakpointBlockHead > .closeButton {
- opacity: 1.0;
-}
-
-.breakpointCode {
- overflow: hidden;
- white-space: nowrap;
- padding-left: 24px;
- padding-bottom: 2px;
- border-bottom: 1px solid #D7D7D7;
- font-family: monospace;
- color: DarkGreen;
-}
-
-.breakpointCondition {
- white-space: nowrap;
- padding-left: 24px;
- padding-bottom: 2px;
- border-bottom: 1px solid #D7D7D7;
- font-family: monospace;
- color: Gray;
-}
-
-.breakpointBlock-breakpoints > .groupHeader {
- display: none;
-}
-
-.breakpointBlock-monitors > .breakpointCode {
- padding: 0;
-}
-
-.breakpointBlock-errorBreakpoints .breakpointCheckbox,
-.breakpointBlock-monitors .breakpointCheckbox {
- display: none;
-}
-
-/************************************************************************************************/
-/* Breakpoint notifications */
-
-.notationCaption {
- padding-top: 5px;
-}
-
-.notationTitle {
- font-weight: bold;
-}
-
-.notationTitle.diff {
- font-weight: normal;
-}
-
-.notationButton {
- float: right;
-}
-
-.breakNotification .doNotShowBreakNotification {
- vertical-align: middle;
-}
-
-/************************************************************************************************/
+/* See license.txt for terms of usage */
+
+.breakpointBlock > .breakpointHeader {
+ position: relative;
+ cursor: pointer;
+ -moz-user-select: none;
+ margin: 0;
+ border-top: none;
+}
+
+.breakpointsHeaderLabel {
+ margin-left: 14px;
+}
+
+.breakpointBlock > .breakpointsGroupListBox {
+ display: none;
+}
+
+.breakpointBlock.opened > .breakpointsGroupListBox {
+ display: block;
+}
+
+.breakpointsGroupListBox {
+ overflow: hidden;
+}
+
+.breakpointBlockHead {
+ position: relative;
+ padding-top: 4px;
+}
+
+.breakpointBlockHead > .checkbox {
+ margin-right: 4px;
+}
+
+.breakpointBlockHead > .objectLink-sourceLink {
+ top: 4px;
+ right: 20px;
+ background-color: #FFFFFF; /* issue 3308 */
+}
+
+.breakpointBlockHead > .closeButton {
+ position: absolute;
+ top: 2px;
+ right: 2px;
+}
+
+.breakpointCheckbox {
+ margin-top: 0;
+ vertical-align: top;
+}
+
+.breakpointName {
+ margin-left: 4px;
+ font-weight: bold;
+}
+
+.breakpointRow.disabled > .breakpointBlockHead > *,
+.breakpointRow.disabled > .breakpointCode {
+ opacity: 0.5;
+}
+
+.breakpointRow.disabled > .breakpointBlockHead > .breakpointCheckbox,
+.breakpointRow.disabled > .breakpointBlockHead > .objectLink-sourceLink,
+.breakpointRow.disabled > .breakpointBlockHead > .breakpointMutationType,
+.breakpointRow.disabled > .breakpointBlockHead > .closeButton {
+ opacity: 1.0;
+}
+
+.breakpointCode {
+ overflow: hidden;
+ white-space: nowrap;
+ padding-left: 24px;
+ padding-bottom: 2px;
+ border-bottom: 1px solid #D7D7D7;
+ font-family: monospace;
+ color: DarkGreen;
+}
+
+.breakpointCondition {
+ white-space: nowrap;
+ padding-left: 24px;
+ padding-bottom: 2px;
+ border-bottom: 1px solid #D7D7D7;
+ font-family: monospace;
+ color: Gray;
+}
+
+.breakpointBlock-breakpoints > .groupHeader {
+ display: none;
+}
+
+.breakpointBlock-monitors > .breakpointCode {
+ padding: 0;
+}
+
+.breakpointBlock-errorBreakpoints .breakpointCheckbox,
+.breakpointBlock-monitors .breakpointCheckbox {
+ display: none;
+}
+
+/************************************************************************************************/
+/* Breakpoint notifications */
+
+.notationCaption {
+ padding-top: 5px;
+}
+
+.notationTitle {
+ font-weight: bold;
+}
+
+.notationTitle.diff {
+ font-weight: normal;
+}
+
+.notationButton {
+ float: right;
+}
+
+.breakNotification .doNotShowBreakNotification {
+ vertical-align: middle;
+}
+
+/************************************************************************************************/
diff --git a/skin/classic/callstack.css b/skin/classic/callstack.css
index cae52dd..5257605 100644
--- a/skin/classic/callstack.css
+++ b/skin/classic/callstack.css
@@ -1,82 +1,82 @@
-/* See license.txt for terms of usage */
-
-.panelNode-callstack {
- overflow: auto;
-}
-
-/**
- * This objectLink-stackFrame should be consistent with panelStatusLabel so the
- * call stack looks the same in toolbar and panel.
- */
-.objectLink-stackFrame {
- cursor: pointer;
- margin: 0;
- padding: 0 4px;
-}
-
-.objectBox-stackFrame {
- padding-left: 17px;
- cursor: default;
- position: relative;
- padding-bottom: 2px;
- border-top: 1px solid transparent;
- border-bottom: 1px solid transparent;
-}
-
-.objectBox-stackFrame,
-.objectBox-stackFrame .objectLink,
-.objectBox-stackFrame .objectBox {
- white-space: nowrap !important;
-}
-
-.objectBox-stackFrame[selected="true"] {
- border-top: 1px solid #D9D9B6;
- border-bottom: 1px solid #D9D9B6;
- background-color: lightgoldenrodyellow;
-}
-
-.objectLink-stackFrame:hover {
- color: blue;
-}
-
-.objectLink-stackFrame[selected="true"] {
- font-weight: bold;
-}
-
-/* The source links are always displayed at the end of the frame line. */
-.panelNode-callstack .objectLink-sourceLink {
- position: relative;
- top: 0;
-}
-
-/*************************************************************************************************/
-/* Expandable Argument List */
-
-.objectBox-stackFrame .argList {
- display: none;
- margin-bottom: 5px;
-}
-
-.objectBox-stackFrame.opened .argList {
- display: block;
-}
-
-/**
- * The one-line list of arguments is hidden if the frame is expanded. So, the source
- * link is nicely visible.
- * There is also an option that allows to hide the argument list by default
- * (see extensions.firebug.showStackFrameArguments).
- */
-.objectBox-stackFrame.opened .arguments,
-.panelNode-callstack.hideArguments .objectBox-stackFrame .arguments {
- display: none;
-}
-
-/*************************************************************************************************/
-/* FunctionCall log */
-
-.objectBox-functionCall {
- padding-left: 17px;
- cursor: default;
- position: relative;
-}
+/* See license.txt for terms of usage */
+
+.panelNode-callstack {
+ overflow: auto;
+}
+
+/**
+ * This objectLink-stackFrame should be consistent with panelStatusLabel so the
+ * call stack looks the same in toolbar and panel.
+ */
+.objectLink-stackFrame {
+ cursor: pointer;
+ margin: 0;
+ padding: 0 4px;
+}
+
+.objectBox-stackFrame {
+ padding-left: 17px;
+ cursor: default;
+ position: relative;
+ padding-bottom: 2px;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+}
+
+.objectBox-stackFrame,
+.objectBox-stackFrame .objectLink,
+.objectBox-stackFrame .objectBox {
+ white-space: nowrap !important;
+}
+
+.objectBox-stackFrame[selected="true"] {
+ border-top: 1px solid #D9D9B6;
+ border-bottom: 1px solid #D9D9B6;
+ background-color: lightgoldenrodyellow;
+}
+
+.objectLink-stackFrame:hover {
+ color: blue;
+}
+
+.objectLink-stackFrame[selected="true"] {
+ font-weight: bold;
+}
+
+/* The source links are always displayed at the end of the frame line. */
+.panelNode-callstack .objectLink-sourceLink {
+ position: relative;
+ top: 0;
+}
+
+/*************************************************************************************************/
+/* Expandable Argument List */
+
+.objectBox-stackFrame .argList {
+ display: none;
+ margin-bottom: 5px;
+}
+
+.objectBox-stackFrame.opened .argList {
+ display: block;
+}
+
+/**
+ * The one-line list of arguments is hidden if the frame is expanded. So, the source
+ * link is nicely visible.
+ * There is also an option that allows to hide the argument list by default
+ * (see extensions.firebug.showStackFrameArguments).
+ */
+.objectBox-stackFrame.opened .arguments,
+.panelNode-callstack.hideArguments .objectBox-stackFrame .arguments {
+ display: none;
+}
+
+/*************************************************************************************************/
+/* FunctionCall log */
+
+.objectBox-functionCall {
+ padding-left: 17px;
+ cursor: default;
+ position: relative;
+}
diff --git a/skin/classic/commandLinePopup.png b/skin/classic/commandLinePopup.png
new file mode 100644
index 0000000..afb0fc4
Binary files /dev/null and b/skin/classic/commandLinePopup.png differ
diff --git a/skin/classic/commandLinePopup.svg b/skin/classic/commandLinePopup.svg
deleted file mode 100644
index 4e0fe4a..0000000
--- a/skin/classic/commandLinePopup.svg
+++ /dev/null
@@ -1,237 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- See license.txt for terms of usage -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.1"
- width="16"
- height="16"
- id="svg2">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3766">
- <stop
- id="stop3768"
- style="stop-color:#101010;stop-opacity:1"
- offset="0" />
- <stop
- id="stop3774"
- style="stop-color:#1a1a1a;stop-opacity:0.95294118"
- offset="0.40000001" />
- <stop
- id="stop3776"
- style="stop-color:#ffffff;stop-opacity:0.40000001"
- offset="0.60000002" />
- <stop
- id="stop3770"
- style="stop-color:#ffffff;stop-opacity:0.40000001"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="7.5844154"
- y1="1039.396"
- x2="7.5844154"
- y2="1041.3105"
- id="linearGradient3772"
- xlink:href="#linearGradient3766"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0.00259736,-0.00778177)" />
- <linearGradient
- x1="7.5844154"
- y1="1039.396"
- x2="7.5844154"
- y2="1041.3105"
- id="linearGradient3772-1"
- xlink:href="#linearGradient3766-7"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- id="linearGradient3766-7">
- <stop
- id="stop3768-4"
- style="stop-color:#101010;stop-opacity:1"
- offset="0" />
- <stop
- id="stop3774-0"
- style="stop-color:#1a1a1a;stop-opacity:0.95294118"
- offset="0.40000001" />
- <stop
- id="stop3776-9"
- style="stop-color:#ffffff;stop-opacity:0.40000001"
- offset="0.60000002" />
- <stop
- id="stop3770-4"
- style="stop-color:#ffffff;stop-opacity:0.40000001"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="7.5844154"
- y1="1039.396"
- x2="7.5844154"
- y2="1041.3105"
- id="linearGradient3795"
- xlink:href="#linearGradient3766-7"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0.0025973,2.9922538)" />
- <linearGradient
- x1="7.5844154"
- y1="1039.396"
- x2="7.5844154"
- y2="1041.3105"
- id="linearGradient3772-8"
- xlink:href="#linearGradient3766-2"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- id="linearGradient3766-2">
- <stop
- id="stop3768-45"
- style="stop-color:#101010;stop-opacity:1"
- offset="0" />
- <stop
- id="stop3774-5"
- style="stop-color:#1a1a1a;stop-opacity:0.95294118"
- offset="0.40000001" />
- <stop
- id="stop3776-1"
- style="stop-color:#ffffff;stop-opacity:0.40000001"
- offset="0.60000002" />
- <stop
- id="stop3770-7"
- style="stop-color:#ffffff;stop-opacity:0.40000001"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="7.5844154"
- y1="1039.396"
- x2="7.5844154"
- y2="1041.3105"
- id="linearGradient3795-1"
- xlink:href="#linearGradient3766-2"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0.00259736,5.9921828)" />
- <linearGradient
- x1="7.5844154"
- y1="1039.396"
- x2="7.5844154"
- y2="1041.3105"
- id="linearGradient3772-5"
- xlink:href="#linearGradient3766-27"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- id="linearGradient3766-27">
- <stop
- id="stop3768-6"
- style="stop-color:#101010;stop-opacity:1"
- offset="0" />
- <stop
- id="stop3774-1"
- style="stop-color:#1a1a1a;stop-opacity:0.95294118"
- offset="0.40000001" />
- <stop
- id="stop3776-4"
- style="stop-color:#ffffff;stop-opacity:0.40000001"
- offset="0.60000002" />
- <stop
- id="stop3770-2"
- style="stop-color:#ffffff;stop-opacity:0.40000001"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="7.5844154"
- y1="1039.396"
- x2="7.5844154"
- y2="1041.3105"
- id="linearGradient3795-3"
- xlink:href="#linearGradient3766-27"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0.00259716,8.9923222)" />
- <linearGradient
- x1="7.5844154"
- y1="1039.396"
- x2="7.5844154"
- y2="1041.3105"
- id="linearGradient3868"
- xlink:href="#linearGradient3766"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0.00259736,-0.00778177)" />
- <linearGradient
- x1="7.5844154"
- y1="1039.396"
- x2="7.5844154"
- y2="1041.3105"
- id="linearGradient3870"
- xlink:href="#linearGradient3766-7"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0.0025973,2.9922538)" />
- <linearGradient
- x1="7.5844154"
- y1="1039.396"
- x2="7.5844154"
- y2="1041.3105"
- id="linearGradient3872"
- xlink:href="#linearGradient3766-2"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0.00259736,5.9921828)" />
- <linearGradient
- x1="7.5844154"
- y1="1039.396"
- x2="7.5844154"
- y2="1041.3105"
- id="linearGradient3874"
- xlink:href="#linearGradient3766-27"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0.00259716,8.9923222)" />
- </defs>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1">
- <g
- transform="translate(0.49610376,-0.48178746)"
- id="g3862">
- <rect
- width="13.007792"
- height="2.0363636"
- x="1"
- y="1039.3258"
- id="rect2996"
- style="fill:url(#linearGradient3868);fill-opacity:1;stroke:none" />
- <rect
- width="13.007792"
- height="2.0363636"
- x="1"
- y="1042.3258"
- id="rect2996-8"
- style="fill:url(#linearGradient3870);fill-opacity:1;stroke:none" />
- <rect
- width="13.007792"
- height="2.0363636"
- x="1"
- y="1045.3258"
- id="rect2996-1"
- style="fill:url(#linearGradient3872);fill-opacity:1;stroke:none" />
- <rect
- width="13.007792"
- height="2.0363636"
- x="1"
- y="1048.3258"
- id="rect2996-2"
- style="fill:url(#linearGradient3874);fill-opacity:1;stroke:none" />
- </g>
- </g>
-</svg>
diff --git a/skin/classic/console.css b/skin/classic/console.css
index 950f776..de5071b 100644
--- a/skin/classic/console.css
+++ b/skin/classic/console.css
@@ -1,924 +1,928 @@
-/* See license.txt for terms of usage */
-
-.panelNode-console {
- overflow-x: hidden;
-}
-
-.objectLink:hover {
- cursor: pointer;
- text-decoration: underline;
-}
-
-.logRow {
- display: table;
- position: relative;
- width: 100%;
- border-bottom: 1px solid #D7D7D7;
- background-color: #FFFFFF;
-}
-
-.logGroup {
- background: #FFFFFF linear-gradient(to bottom, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1) 18px, transparent 51px) repeat-x;
- padding: 0;
- border: none;
-}
-
-.logGroupLabel {
- border: none;
-}
-
-.logGroupBody {
- display: none;
- margin-left: 16px;
- border-left: 1px solid #D7D7D7;
- border-top: 1px solid #D7D7D7;
- background: #FFFFFF;
-}
-
-.logGroup > .logRow {
- background-color: transparent !important;
- font-weight: bold;
-}
-
-.logGroup.opened > .logRow {
- border-bottom: none;
-}
-
-.logGroup.opened > .logGroupBody {
- display: block;
-}
-
-.logRow > div {
- display: table-row;
-}
-
-.logContent {
- display: table-cell;
- padding: 2px 0 2px 4px;
-}
-
-.logContent:empty {
- display: none;
-}
-
-.logCounter {
- display: none;
- padding: 2px 0 2px 5px;
- width: 20px;
-}
-
-.logCounter[count] {
- display: table-cell;
-}
-
-.logCounterValue:empty {
- display: none;
-}
-
-.logCounterValue {
- border: 0.1em solid rgba(0, 0, 0, 0.4);
- border-radius: 40px 40px 40px 40px;
- background-color: #ffffff;
- font-weight: bold;
- padding: 0 4px;
- background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.6) 30%, rgba(255, 255, 255, 0.4) 30%, transparent);
-}
-
-/*****************************************************************************************/
-
-.logRow-command > div > .logContent > .objectBox-text {
- font-family: monospace;
- color: #0000FF;
- white-space: pre-wrap;
-}
-
-.logRow-info,
-.logRow-warn,
-.logRow-error,
-.logRow-assert,
-.logRow-warningMessage,
-.logRow-loading,
-.logRow-errorMessage {
- background-repeat: no-repeat;
- background-position: 4px 2px;
-}
-
-.logRow-info > div > .logContent,
-.logRow-warn > div > .logContent,
-.logRow-error > div > .logContent,
-.logRow-assert > div > .logContent,
-.logRow-warningMessage > div > .logContent,
-.logRow-loading > div > .logContent,
-.logRow-errorMessage > div > .logContent {
- padding-left: 22px;
-}
-
-.logRow-assert,
-.logRow-warningMessage,
-.logRow-errorMessage {
- padding-top: 0;
- padding-bottom: 0;
-}
-
-.logRow-info,
-.logRow-info .objectLink-sourceLink {
- background-color: #EBF5FF;
-}
-
-.logRow-warn,
-.logRow-warningMessage,
-.logRow-warn .objectLink-sourceLink,
-.logRow-warningMessage .objectLink-sourceLink {
- background-color: #FFFFC8;
-}
-
-.logRow-error,
-.logRow-assert,
-.logRow-errorMessage,
-.logRow-error .objectLink-sourceLink,
-.logRow-errorMessage .objectLink-sourceLink {
- background-color: #FFEBEB;
-}
-
-.logRow-error,
-.logRow-assert,
-.logRow-errorMessage {
- color: #FF0000;
-}
-
-.logRow-info {
- background-image: url(chrome://firebug/skin/info.png);
-}
-
-.logRow-loading {
- background-image: url(chrome://firebug/skin/loading.png);
-}
-
-.logRow-warn,
-.logRow-warningMessage {
- background-image: url(chrome://firebug/skin/warning.png);
-}
-
-.logRow-error,
-.logRow-assert,
-.logRow-errorMessage {
- background-image: url(chrome://firebug/skin/error.png);
-}
-
-/*************************************************************************************************/
-
-.inline {
- display: inline;
- white-space: normal;
-}
-
-.objectBox-string,
-.objectBox-text,
-.objectBox-number,
-.objectLink-element,
-.objectLink-textNode,
-.objectLink-function,
-.objectBox-stackTrace,
-.objectLink-profile,
-.objectBox-table {
- font-family: monospace;
-}
-
-.objectBox-string,
-.objectBox-text,
-.objectLink-textNode,
-.objectBox-table {
- white-space: pre-wrap;
-}
-
-.objectBox-number,
-.objectLink-styleRule,
-.objectLink-element,
-.objectLink-textNode {
- color: #000088;
-}
-
-.objectBox-string {
- color: #FF0000;
-}
-
-.objectLink-function,
-.objectBox-stackTrace,
-.objectLink-profile {
- color: DarkGreen;
-}
-
-.objectBox-null,
-.objectBox-undefined,
-.objectBox-hint,
-.logRowHint {
- font-style: italic;
- color: #787878;
-}
-
-.objectBox-scope {
- color: #707070;
-}
-.objectBox-optimizedAway {
- color: #909090;
-}
-
-.objectLink-sourceLink {
- position: absolute;
- right: 4px;
- top: 2px;
- padding-left: 8px;
- font-family: Lucida Grande, sans-serif;
- font-weight: bold;
- color: #0000FF;
-}
-
-.objectLink-sourceLink > .systemLink {
- float: right;
- color: #FF0000;
-}
-
-
-.logRow:not(.logRow-group) > div > .objectLink-sourceLink {
- position: relative;
- display: table-cell;
- padding: 0 4px;
- text-align: right;
- width: 0;
- white-space: nowrap;
-}
-
-.logRow > .objectLink-sourceLink > div,
-.errorSourceBox > .objectLink-sourceLink > div {
- float: left;
- padding-left: 5px;
-}
-
-/************************************************************************************************/
-
-.errorTitle {
- margin-top: 0px;
- margin-bottom: 1px;
- padding-top: 2px;
- padding-bottom: 2px;
-}
-
-.errorTrace {
- color: black;
- margin-left: 17px;
-}
-
-.errorTrace .objectBox-stackFrame {
- color: blue;
-}
-
-/* Used for a message explaining missing stack trace for an error log */
-.errorTrace .descriptionBox {
- background-image: url(chrome://firebug/skin/info.svg);
- background-repeat: no-repeat;
- padding: 0 0 2px 20px;
-}
-
-.errorDuplication {
- margin-right: 5px;
- font-weight: bold;
-}
-
-.errorSourceBox {
- margin: 2px 0;
-}
-
-.errorSource-none {
- display: none;
-}
-
-.errorSource-syntax > .errorBreak {
- visibility: hidden;
-}
-
-.errorSource {
- cursor: pointer;
- font-family: monospace;
- color: DarkGreen;
-}
-
-.errorSource:hover {
- text-decoration: underline;
-}
-
-.errorColPosition {
- -moz-user-select: none;
- font-family: monospace;
- color: DarkGreen;
- display: inline-block;
-}
-
-.errorColCaret {
- width: 7px;
- height: 9px;
- background: url(chrome://firebug/skin/errorColumnIndicator.svg) no-repeat 100% 100%;
- display: inline-block;
- vertical-align: top;
- margin-left: 1px;
-}
-
-.errorBreak {
- cursor: pointer;
- display: none;
- margin: 0 6px 0 0;
- width: 12px;
- height: 12px;
- vertical-align: baseline;
- background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
- opacity: 0.1;
-}
-
-.errorUnbreakable {
- display: none;
-}
-
-.hasBreakSwitch .errorBreak {
- display: inline-block;
-}
-
-.breakForError .errorBreak {
- opacity: 1;
-}
-
-.assertDescription {
- margin: 0;
-}
-
-/*************************************************************************************************/
-/* Profiler */
-
-.logRow-profile > .logRow > .objectBox-text {
- font-family: Lucida Grande, Tahoma, sans-serif;
- color: #000000;
-}
-
-.logRow-profile > .logRow > .objectBox-text:last-child {
- color: #555555;
- font-style: italic;
-}
-
-.logRow-profile.opened > .logRow {
- padding-bottom: 4px;
-}
-
-.profilerRunning .logRow {
- background: transparent url(chrome://firebug/skin/loading.png) no-repeat 2px 0 !important;
- padding-left: 22px !important;
-}
-
-/* Remove left border for the log body. It will be applied to the profile table, so there
- can be a little padding at the bottom when the profile-log is expanded */
-.logRow-profile .logGroupBody {
- border-left: 0;
-}
-
-.logGroup .profileTable {
- border: 1px solid #D7D7D7;
- border-right: none;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.logRow-table {
- padding: 0;
-}
-
-.profileSizer {
- width: 100%;
- padding-bottom: 5px;
-}
-
-.profileSizer:focus {
- outline: none;
-}
-
-.profileTable TBODY {
- overflow-x: hidden;
- overflow-y: scroll;
-}
-
-.profileTable tr:nth-child(even) {
- background-color: #EFEFEF;
-}
-
-.profileTable tr:nth-child(even) {
- background-color: #EFEFEF;
-}
-
-.profileTable .profileSummaryRow {
- height: 30px;
- background: #BBBBBB !important;
- font-weight: bold;
-}
-
-.profileTable a {
- vertical-align:middle;
-}
-
-.profileTable td {
- padding: 1px 4px 0 4px;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-/* Profiler Header */
-
-.headerCell {
- cursor: pointer;
- -moz-user-select: none;
- border-bottom: 1px solid #9C9C9C;
- padding: 0 !important;
- font-weight: bold;
- background: #C8C8C8 linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2));
-}
-
-.headerCellBox {
- padding: 2px 13px 2px 4px;
- border-left: 1px solid #D9D9D9;
- border-right: 1px solid #9C9C9C;
- white-space: nowrap;
-}
-
-.headerCell:hover:active {
- background-color: #B4B4B4;
-}
-
-.headerSorted {
- background-color: #8CA0BE;
-}
-
-.headerSorted > .headerCellBox {
- border-right-color: #6B7C93;
- background: url(chrome://firebug/skin/arrowDown.png) no-repeat calc(100% - 4px);
-}
-
-.headerSorted.sortedAscending > .headerCellBox {
- background-image: url(chrome://firebug/skin/arrowUp.png);
-}
-
-.headerSorted:hover:active {
- background-color: #6E87AA;
-}
-
-.linkCell {
- text-align: right;
-}
-
-.linkCell > .objectLink-sourceLink {
- position: static;
-}
-
-.useA11y .profileTable *:focus {
- outline-offset: -2px;
-}
-
-/*************************************************************************************************/
-/* Command Line Help */
-
-.logRow-help .logGroupBody {
- border-bottom: 1px solid #D7D7D7;
-}
-
-.logRow-help .logGroupLabel {
- text-decoration: none !important;
-}
-
-.logRow-help > .logRow {
- background-position: 2px 3px !important;
-}
-
-.logRow-help .helpCaptionDesc {
- color: gray;
- font-weight: normal;
- padding-left: 10px;
-}
-
-.logRow-help .helpTable {
- margin-bottom: 4px;
-}
-
-.logRow-help .helpCell {
- padding: 2px 4px 2px 4px;
-}
-
-.logRow-help .helpTable tr:nth-child(even) {
- background-color: #EFEFEF;
-}
-
-.logRow-help .commandName .objectLink {
- color: green;
- font-family: monospace;
-}
-
-.logRow-help .commandDesc {
- color: gray;
-}
-
-.logRow-help .logGroupBody > DIV > .logContent {
- padding: 0;
-}
-
-.logRow-help .tipsList {
- padding-left: 2em;
-}
-
-.logRow-help .tipsList > .tip {
- margin-bottom: 5px;
-}
-
-.logRow-help .tipsList > .tip > .example {
- color: green;
- font-family: monospace;
-}
-
-/*************************************************************************************************/
-
-.logRow-stackTrace {
- padding-top: 0;
- background: #F8F8F8;
-}
-
-.errorSourceBox {
- position: relative;
- padding-top: 2px;
-}
-
-/*************************************************************************************************/
-
-.objectLink-event,
-.objectLink-eventLog,
-.objectLink-regexp,
-.objectLink-object,
-.objectLink-Date {
- font-family: Lucida Grande, sans-serif;
- font-weight: bold;
- color: DarkGreen;
- white-space: pre-wrap;
-}
-
-.objectPropValue {
- font-weight: normal;
- font-style: italic;
- color: #555555;
-}
-
-.storageTitle {
- font-weight: normal;
-}
-
-.objectLink-regexp > .regexpSource {
- padding-right: 4px;
- font-weight: normal;
- font-family: Monaco, monospace;
-}
-
-
-/************************************************************************************************/
-
-.objectLink-NamedNodeMap .nodeName,
-.objectLink-NamedNodeMap .objectEqual,
-.objectLink-NamedNodeMap .arrayLeftBracket,
-.objectLink-NamedNodeMap .arrayRightBracket,
-.objectLink-Attr .attrEqual,
-.objectLink-Attr .attrTitle {
- color: rgb(0, 0, 136)
-}
-
-/************************************************************************************************/
-
-.selectorTag,
-.selectorId,
-.selectorClass {
- font-family: monospace;
- font-weight: normal;
-}
-
-.selectorTag {
- color: #0000FF;
-}
-
-.selectorId {
- color: DarkBlue;
-}
-
-.selectorClass {
- color: red;
-}
-
-.selectorHidden > .selectorTag {
- color: #5F82D9;
-}
-
-.selectorHidden > .selectorId {
- color: #888888;
-}
-
-.selectorHidden > .selectorClass {
- color: #D86060;
-}
-
-.selectorValue {
- font-family: Lucida Grande, sans-serif;
- font-style: italic;
- color: #555555;
-}
-
-/*****************************************************************************************/
-
-.panelNode.searching .logRow:not(.logGroupLabel),
-.panelNode.searching .logRow-group > .objectLink {
- display: none;
-}
-
-.panelNode.hideType-error .logRow-error,
-.panelNode.hideType-error .logRow-errorMessage,
-.panelNode.hideType-warning .logRow-warn,
-.panelNode.hideType-warning .logRow-warningMessage,
-.panelNode.hideType-info .logRow-info,
-.panelNode.hideType-debug .logRow-debug,
-.panelNode.hideType-profile .logRow-profile,
-.panelNode.hideType-table .logRow-table,
-.panelNode.hideType-group .logRow-group:not(.contentMatchesFilter),
-.panelNode.hideType-command .logRow-command,
-.panelNode.hideType-stackTrace .logRow-stackTrace,
-.panelNode.hideType-log .logRow-log,
-.panelNode.hideType-dir .logRow-dir,
-.panelNode.hideType-assert .logRow-assert,
-.panelNode.hideType-spy .logRow-spy {
- display: none;
-}
-
-.logRow.matched {
- display: table !important;
-}
-
-.logRow.matching {
- position: absolute;
- left: -1000px;
- top: -1000px;
- max-width: 0;
- max-height: 0;
- overflow: hidden;
-}
-
-/*****************************************************************************************/
-
-.objectLeftBrace,
-.objectRightBrace,
-.objectEqual,
-.objectComma,
-.arrayLeftBracket,
-.arrayRightBracket,
-.arrayComma {
- font-family: monospace;
-}
-
-.objectLeftBrace,
-.objectRightBrace,
-.arrayLeftBracket,
-.arrayRightBracket {
- font-weight: bold;
-}
-
-.objectLeftBrace,
-.arrayLeftBracket {
- margin-right: 4px;
-}
-
-.objectRightBrace,
-.arrayRightBracket {
- margin-left: 4px;
-}
-
-/*************************************************************************************************/
-/* Cycle reference*/
-
-.objectLink-Reference {
- font-family: monospace;
- font-weight: bold;
- color: rgb(102, 102, 255);
-}
-
-/*************************************************************************************************/
-
-.logRow-dir {
- padding: 0;
-}
-
-/*************************************************************************************************/
-
-.logRow-errorMessage .hasTwisty > .errorTitle,
-.logRow-spy .spyHead .spyTitle,
-.logGroup > .logRow {
- cursor: pointer;
- padding-left: 18px;
- background-repeat: no-repeat;
- background-position: 3px 3px;
-}
-
-.logRow-errorMessage .hasTwisty > .errorTitle {
- background-position: 2px 3px;
-}
-
-.logRow-errorMessage .hasTwisty > .errorTitle:hover,
-.logRow-spy .spyHead .spyTitle:hover,
-.logGroup > .logRow:hover {
- text-decoration: underline;
-}
-
-.logRow-errorMessage .errorTitle > .errorMessage {
- white-space: pre-wrap;
-}
-
-/*****************************************************************************************/
-
-.logRow-log .objectBox-array.hasTwisty {
- padding-left: 18px;
-}
-
-.logRow-log .objectBox-array > .arrayProperties:not(:empty) {
- padding-left: 18px;
-}
-
-.objectBox-array > .objectTitle {
- font-weight: bold;
- color: DarkGreen;
-}
-
-/*****************************************************************************************/
-
-.logRow-spy,
-.logRow-spy .objectLink-sourceLink {
- background: #FFFFFF linear-gradient(to bottom, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1) 18px, transparent 51px) repeat-x;
- padding-right: 4px;
- right: 0;
-}
-
-/* padding-right should be zero for .logRow-spy, so declare after the previous selector */
-.logRow-spy {
- padding: 0px 0 1px 0;
-}
-
-.logRow-spy.opened {
- padding-bottom: 4px;
- border-bottom: none;
-}
-
-.logRow-spy .objectLink-sourceLink {
- top: 4px;
-}
-
-.spyTitle {
- color: #000000;
- font-weight: bold;
- -moz-box-sizing: padding-box;
- overflow: hidden;
- z-index: 100;
- padding-left: 18px;
-}
-
-.spyCol {
- padding: 0;
- white-space: nowrap;
-}
-
-.spyTitleCol:hover > .objectLink-sourceLink,
-.spyTitleCol:hover > .spyTime,
-.spyTitleCol:hover > .spyStatus,
-.spyTitleCol:hover > .spyTitle {
- display: none;
-}
-
-.spyFullTitle {
- display: none;
- -moz-user-select: none;
- max-width: 100%;
- background-color: Transparent;
-}
-
-.spyTitleCol:hover > .spyFullTitle {
- display: block;
-}
-
-.spyStatus {
- padding-left: 10px;
- color: rgb(128, 128, 128);
-}
-
-.spyTime {
- margin-left:4px;
- margin-right:4px;
- color: rgb(128, 128, 128);
-}
-
-.spyIcon {
- display: inline-block;
- margin-right: 4px;
- margin-left: 4px;
- width: 16px;
- height: 16px;
- vertical-align: middle;
- background: transparent no-repeat 0 0;
-}
-
-.logRow-spy.loading .spyHead .spyRow .spyIcon {
- background-image: url(chrome://firebug/skin/loading.png);
-}
-
-.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
- width: 0;
- margin: 0;
-}
-
-.logRow-spy.error .spyHead .spyRow .spyIcon {
- background-image: url(chrome://firebug/skin/errorIcon-sm.png);
- background-position: 2px 2px;
-}
-
-.logRow-spy .spyHead .netInfoBody {
- display: none;
-}
-
-.logRow-spy.opened .spyHead .netInfoBody {
- margin-top: 10px;
- display: block;
-}
-
-.logRow-spy.error .spyTitle,
-.logRow-spy.error .spyStatus,
-.logRow-spy.error .spyTime {
- color: red;
-}
-
-.logRow-spy.loading .spyResponseText {
- font-style: italic;
- color: #888888;
-}
-
-/************************************************************************************************/
-
-.caption {
- font-family: Lucida Grande, Tahoma, sans-serif;
- font-weight: bold;
- color: #444444;
-}
-
-.warning {
- padding: 10px;
- font-family: Lucida Grande, Tahoma, sans-serif;
- font-weight: bold;
- color: #888888;
-}
-
-/************************************************************************************************/
-
-/* The panel content is always visible within the command popup on other panels */
-.commandPopup .panelNode-console {
- display: block;
-}
-
-/************************************************************************************************/
-/* console.timeStamp */
-
-.logRow-timeStamp {
- color: Olive;
- font-family: Lucida Grande, Tahoma, sans-serif;
-}
-
-.logRow-timeStamp SPAN:last-child {
- font-style: italic;
- color: gray;
- padding-left: 5px;
-}
-
-
-/************************************************************************************************/
-/* include() command */
-.tableCommandLineInclude td {
- height: 17px;
-}
-.tableCommandLineInclude .closeButton {
- display: none;
-}
-
-.tableCommandLineInclude tr:hover .closeButton {
- display: block;
-}
-
-.tableCommandLineInclude .url {
- float: left;
-}
-
-.tableCommandLineInclude .commands {
- float: right;
- height: 100%;
-}
-
-.tableCommandLineInclude td:last-child {
- width: 75%;
- padding-right: 0 !important;
-}
+/* See license.txt for terms of usage */
+
+.panelNode-console {
+ overflow-x: hidden;
+}
+
+.objectLink:hover {
+ cursor: pointer;
+ text-decoration: underline;
+}
+
+.logRow {
+ display: table;
+ position: relative;
+ width: 100%;
+ border-bottom: 1px solid #D7D7D7;
+ background-color: #FFFFFF;
+}
+
+.logGroup {
+ background: #FFFFFF linear-gradient(to bottom, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1) 18px, transparent 51px) repeat-x;
+ padding: 0;
+ border: none;
+}
+
+.logGroupLabel {
+ border: none;
+}
+
+.logGroupBody {
+ display: none;
+ margin-left: 16px;
+ border-left: 1px solid #D7D7D7;
+ border-top: 1px solid #D7D7D7;
+ background: #FFFFFF;
+}
+
+.logGroup > .logRow {
+ background-color: transparent !important;
+ font-weight: bold;
+
+ /* Override the value from panel.css, so the twisty button is
+ vertically centered with the group label row */
+ background-position: 2px calc(0.5em - 5px) !important;
+}
+
+.logGroup.opened > .logRow {
+ border-bottom: none;
+}
+
+.logGroup.opened > .logGroupBody {
+ display: block;
+}
+
+.logRow > div {
+ display: table-row;
+}
+
+.logContent {
+ display: table-cell;
+ padding: 2px 0 2px 4px;
+}
+
+.logContent:empty {
+ display: none;
+}
+
+.logCounter {
+ display: none;
+ padding: 2px 0 2px 5px;
+ width: 20px;
+}
+
+.logCounter[count] {
+ display: table-cell;
+}
+
+.logCounterValue:empty {
+ display: none;
+}
+
+.logCounterValue {
+ border: 0.1em solid rgba(0, 0, 0, 0.4);
+ border-radius: 40px 40px 40px 40px;
+ background-color: #ffffff;
+ font-weight: bold;
+ padding: 0 4px;
+ background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.6) 30%, rgba(255, 255, 255, 0.4) 30%, transparent);
+}
+
+/*****************************************************************************************/
+
+.logRow-command > div > .logContent > .objectBox-text {
+ font-family: monospace;
+ color: #0000FF;
+ white-space: pre-wrap;
+}
+
+.logRow-info,
+.logRow-warn,
+.logRow-error,
+.logRow-assert,
+.logRow-warningMessage,
+.logRow-loading,
+.logRow-errorMessage {
+ background-repeat: no-repeat;
+ background-position: 4px 2px;
+}
+
+.logRow-info > div > .logContent,
+.logRow-warn > div > .logContent,
+.logRow-error > div > .logContent,
+.logRow-assert > div > .logContent,
+.logRow-warningMessage > div > .logContent,
+.logRow-loading > div > .logContent,
+.logRow-errorMessage > div > .logContent {
+ padding-left: 22px;
+}
+
+.logRow-assert,
+.logRow-warningMessage,
+.logRow-errorMessage {
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+.logRow-info,
+.logRow-info .objectLink-sourceLink {
+ background-color: #EBF5FF;
+}
+
+.logRow-warn,
+.logRow-warningMessage,
+.logRow-warn .objectLink-sourceLink,
+.logRow-warningMessage .objectLink-sourceLink {
+ background-color: #FFFFC8;
+}
+
+.logRow-error,
+.logRow-assert,
+.logRow-errorMessage,
+.logRow-error .objectLink-sourceLink,
+.logRow-errorMessage .objectLink-sourceLink {
+ background-color: #FFEBEB;
+}
+
+.logRow-error,
+.logRow-assert,
+.logRow-errorMessage {
+ color: #FF0000;
+}
+
+.logRow-info {
+ background-image: url(chrome://firebug/skin/info.png);
+}
+
+.logRow-loading {
+ background-image: url(chrome://firebug/skin/loading.png);
+}
+
+.logRow-warn,
+.logRow-warningMessage {
+ background-image: url(chrome://firebug/skin/warning.png);
+}
+
+.logRow-error,
+.logRow-assert,
+.logRow-errorMessage {
+ background-image: url(chrome://firebug/skin/error.png);
+}
+
+/*************************************************************************************************/
+
+.inline {
+ display: inline;
+ white-space: normal;
+}
+
+.objectBox-string,
+.objectBox-text,
+.objectBox-number,
+.objectLink-element,
+.objectLink-textNode,
+.objectLink-function,
+.objectBox-stackTrace,
+.objectLink-profile,
+.objectBox-table {
+ font-family: monospace;
+}
+
+.objectBox-string,
+.objectBox-text,
+.objectLink-textNode,
+.objectBox-table {
+ white-space: pre-wrap;
+}
+
+.objectBox-number,
+.objectLink-styleRule,
+.objectLink-element,
+.objectLink-textNode {
+ color: #000088;
+}
+
+.objectBox-string {
+ color: #FF0000;
+}
+
+.objectLink-function,
+.objectBox-stackTrace,
+.objectLink-profile {
+ color: DarkGreen;
+}
+
+.objectBox-null,
+.objectBox-undefined,
+.objectBox-hint,
+.logRowHint {
+ font-style: italic;
+ color: #787878;
+}
+
+.objectBox-scope {
+ color: #707070;
+}
+.objectBox-optimizedAway {
+ color: #909090;
+}
+
+.objectLink-sourceLink {
+ position: absolute;
+ right: 4px;
+ top: 2px;
+ padding-left: 8px;
+ font-family: Lucida Grande, sans-serif;
+ font-weight: bold;
+ color: #0000FF;
+}
+
+.objectLink-sourceLink > .systemLink {
+ float: right;
+ color: #FF0000;
+}
+
+
+.logRow:not(.logRow-group) > div > .objectLink-sourceLink {
+ position: relative;
+ display: table-cell;
+ padding: 0 4px;
+ text-align: right;
+ width: 0;
+ white-space: nowrap;
+}
+
+.logRow > .objectLink-sourceLink > div,
+.errorSourceBox > .objectLink-sourceLink > div {
+ float: left;
+ padding-left: 5px;
+}
+
+/************************************************************************************************/
+
+.errorTitle {
+ margin-top: 0px;
+ margin-bottom: 1px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+}
+
+.errorTrace {
+ color: black;
+ margin-left: 17px;
+}
+
+.errorTrace .objectBox-stackFrame {
+ color: blue;
+}
+
+/* Used for a message explaining missing stack trace for an error log */
+.errorTrace .descriptionBox {
+ background-image: url(chrome://firebug/skin/info.png);
+ background-repeat: no-repeat;
+ padding: 0 0 2px 20px;
+}
+
+.errorDuplication {
+ margin-right: 5px;
+ font-weight: bold;
+}
+
+.errorSourceBox {
+ margin: 2px 0;
+}
+
+.errorSource-none {
+ display: none;
+}
+
+.errorSource-syntax > .errorBreak {
+ visibility: hidden;
+}
+
+.errorSource {
+ cursor: pointer;
+ font-family: monospace;
+ color: DarkGreen;
+}
+
+.errorSource:hover {
+ text-decoration: underline;
+}
+
+.errorColPosition {
+ -moz-user-select: none;
+ font-family: monospace;
+ color: DarkGreen;
+ display: inline-block;
+}
+
+.errorColCaret {
+ width: 7px;
+ height: 9px;
+ background: url(chrome://firebug/skin/errorColumnIndicator.png) no-repeat 100% 100%;
+ display: inline-block;
+ vertical-align: top;
+ margin-left: 1px;
+}
+
+.errorBreak {
+ cursor: pointer;
+ display: none;
+ margin: 0 6px 0 0;
+ width: 12px;
+ height: 12px;
+ vertical-align: baseline;
+ background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
+ opacity: 0.1;
+}
+
+.errorUnbreakable {
+ display: none;
+}
+
+.hasBreakSwitch .errorBreak {
+ display: inline-block;
+}
+
+.breakForError .errorBreak {
+ opacity: 1;
+}
+
+.assertDescription {
+ margin: 0;
+}
+
+/*************************************************************************************************/
+/* Profiler */
+
+.logRow-profile > .logRow > .objectBox-text {
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ color: #000000;
+}
+
+.logRow-profile > .logRow > .objectBox-text:last-child {
+ color: #555555;
+ font-style: italic;
+}
+
+.logRow-profile.opened > .logRow {
+ padding-bottom: 4px;
+}
+
+.profilerRunning .logRow {
+ background: transparent url(chrome://firebug/skin/loading.png) no-repeat 2px 0 !important;
+ padding-left: 22px !important;
+}
+
+/* Remove left border for the log body. It will be applied to the profile table, so there
+ can be a little padding at the bottom when the profile-log is expanded */
+.logRow-profile .logGroupBody {
+ border-left: 0;
+}
+
+.logGroup .profileTable {
+ border: 1px solid #D7D7D7;
+ border-right: none;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.logRow-table {
+ padding: 0;
+}
+
+.profileSizer {
+ width: 100%;
+ padding-bottom: 5px;
+}
+
+.profileSizer:focus {
+ outline: none;
+}
+
+.profileTable TBODY {
+ overflow-x: hidden;
+ overflow-y: scroll;
+}
+
+.profileTable tr:nth-child(even) {
+ background-color: #EFEFEF;
+}
+
+.profileTable tr:nth-child(even) {
+ background-color: #EFEFEF;
+}
+
+.profileTable .profileSummaryRow {
+ height: 30px;
+ background: #BBBBBB !important;
+ font-weight: bold;
+}
+
+.profileTable a {
+ vertical-align:middle;
+}
+
+.profileTable td {
+ padding: 1px 4px 0 4px;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/* Profiler Header */
+
+.headerCell {
+ cursor: pointer;
+ -moz-user-select: none;
+ border-bottom: 1px solid #9C9C9C;
+ padding: 0 !important;
+ font-weight: bold;
+ background: #C8C8C8 linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2));
+}
+
+.headerCellBox {
+ padding: 2px 13px 2px 4px;
+ border-left: 1px solid #D9D9D9;
+ border-right: 1px solid #9C9C9C;
+ white-space: nowrap;
+}
+
+.headerCell:hover:active {
+ background-color: #B4B4B4;
+}
+
+.headerSorted {
+ background-color: #8CA0BE;
+}
+
+.headerSorted > .headerCellBox {
+ border-right-color: #6B7C93;
+ background: url(chrome://firebug/skin/arrowDown.png) no-repeat calc(100% - 4px);
+}
+
+.headerSorted.sortedAscending > .headerCellBox {
+ background-image: url(chrome://firebug/skin/arrowUp.png);
+}
+
+.headerSorted:hover:active {
+ background-color: #6E87AA;
+}
+
+.linkCell {
+ text-align: right;
+}
+
+.linkCell > .objectLink-sourceLink {
+ position: static;
+}
+
+.useA11y .profileTable *:focus {
+ outline-offset: -2px;
+}
+
+/*************************************************************************************************/
+/* Command Line Help */
+
+.logRow-help .logGroupBody {
+ border-bottom: 1px solid #D7D7D7;
+}
+
+.logRow-help .logGroupLabel {
+ text-decoration: none !important;
+}
+
+.logRow-help > .logRow {
+ background-position: 2px 3px !important;
+}
+
+.logRow-help .helpCaptionDesc {
+ color: gray;
+ font-weight: normal;
+ padding-left: 10px;
+}
+
+.logRow-help .helpTable {
+ margin-bottom: 4px;
+}
+
+.logRow-help .helpCell {
+ padding: 2px 4px 2px 4px;
+}
+
+.logRow-help .helpTable tr:nth-child(even) {
+ background-color: #EFEFEF;
+}
+
+.logRow-help .commandName .objectLink {
+ color: green;
+ font-family: monospace;
+}
+
+.logRow-help .commandDesc {
+ color: gray;
+}
+
+.logRow-help .logGroupBody > DIV > .logContent {
+ padding: 0;
+}
+
+.logRow-help .tipsList {
+ padding-left: 2em;
+}
+
+.logRow-help .tipsList > .tip {
+ margin-bottom: 5px;
+}
+
+.logRow-help .tipsList > .tip > .example {
+ color: green;
+ font-family: monospace;
+}
+
+/*************************************************************************************************/
+
+.logRow-stackTrace {
+ padding-top: 0;
+ background: #F8F8F8;
+}
+
+.errorSourceBox {
+ position: relative;
+ padding-top: 2px;
+}
+
+/*************************************************************************************************/
+
+.objectLink-event,
+.objectLink-eventLog,
+.objectLink-regexp,
+.objectLink-object,
+.objectLink-Date {
+ font-family: Lucida Grande, sans-serif;
+ font-weight: bold;
+ color: DarkGreen;
+ white-space: pre-wrap;
+}
+
+.objectPropValue {
+ font-weight: normal;
+ font-style: italic;
+ color: #555555;
+}
+
+.storageTitle {
+ font-weight: normal;
+}
+
+.objectLink-regexp > .regexpSource {
+ padding-right: 4px;
+ font-weight: normal;
+ font-family: Monaco, monospace;
+}
+
+
+/************************************************************************************************/
+
+.objectLink-NamedNodeMap .nodeName,
+.objectLink-NamedNodeMap .objectEqual,
+.objectLink-NamedNodeMap .arrayLeftBracket,
+.objectLink-NamedNodeMap .arrayRightBracket,
+.objectLink-Attr .attrEqual,
+.objectLink-Attr .attrTitle {
+ color: rgb(0, 0, 136)
+}
+
+/************************************************************************************************/
+
+.selectorTag,
+.selectorId,
+.selectorClass {
+ font-family: monospace;
+ font-weight: normal;
+}
+
+.selectorTag {
+ color: #0000FF;
+}
+
+.selectorId {
+ color: DarkBlue;
+}
+
+.selectorClass {
+ color: red;
+}
+
+.selectorHidden > .selectorTag {
+ color: #5F82D9;
+}
+
+.selectorHidden > .selectorId {
+ color: #888888;
+}
+
+.selectorHidden > .selectorClass {
+ color: #D86060;
+}
+
+.selectorValue {
+ font-family: Lucida Grande, sans-serif;
+ font-style: italic;
+ color: #555555;
+}
+
+/*****************************************************************************************/
+
+.panelNode.searching .logRow:not(.logGroupLabel),
+.panelNode.searching .logRow-group > .objectLink {
+ display: none;
+}
+
+.panelNode.hideType-error .logRow-error,
+.panelNode.hideType-error .logRow-errorMessage,
+.panelNode.hideType-warning .logRow-warn,
+.panelNode.hideType-warning .logRow-warningMessage,
+.panelNode.hideType-info .logRow-info,
+.panelNode.hideType-debug .logRow-debug,
+.panelNode.hideType-profile .logRow-profile,
+.panelNode.hideType-table .logRow-table,
+.panelNode.hideType-group .logRow-group:not(.contentMatchesFilter),
+.panelNode.hideType-command .logRow-command,
+.panelNode.hideType-stackTrace .logRow-stackTrace,
+.panelNode.hideType-log .logRow-log,
+.panelNode.hideType-dir .logRow-dir,
+.panelNode.hideType-assert .logRow-assert,
+.panelNode.hideType-spy .logRow-spy {
+ display: none;
+}
+
+.logRow.matched {
+ display: table !important;
+}
+
+.logRow.matching {
+ position: absolute;
+ left: -1000px;
+ top: -1000px;
+ max-width: 0;
+ max-height: 0;
+ overflow: hidden;
+}
+
+/*****************************************************************************************/
+
+.objectLeftBrace,
+.objectRightBrace,
+.objectEqual,
+.objectComma,
+.arrayLeftBracket,
+.arrayRightBracket,
+.arrayComma {
+ font-family: monospace;
+}
+
+.objectLeftBrace,
+.objectRightBrace,
+.arrayLeftBracket,
+.arrayRightBracket {
+ font-weight: bold;
+}
+
+.objectLeftBrace,
+.arrayLeftBracket {
+ margin-right: 4px;
+}
+
+.objectRightBrace,
+.arrayRightBracket {
+ margin-left: 4px;
+}
+
+/*************************************************************************************************/
+/* Cycle reference*/
+
+.objectLink-Reference {
+ font-family: monospace;
+ font-weight: bold;
+ color: rgb(102, 102, 255);
+}
+
+/*************************************************************************************************/
+
+.logRow-dir {
+ padding: 0;
+}
+
+/*************************************************************************************************/
+
+.logRow-errorMessage .hasTwisty > .errorTitle,
+.logRow-spy .spyHead .spyTitle,
+.logGroup > .logRow {
+ cursor: pointer;
+ padding-left: 18px;
+ background-repeat: no-repeat;
+ background-position: 3px 3px;
+}
+
+.logRow-errorMessage .hasTwisty > .errorTitle {
+ background-position: 2px 3px;
+}
+
+.logRow-errorMessage .hasTwisty > .errorTitle:hover,
+.logRow-spy .spyHead .spyTitle:hover,
+.logGroup > .logRow:hover {
+ text-decoration: underline;
+}
+
+.logRow-errorMessage .errorTitle > .errorMessage {
+ white-space: pre-wrap;
+}
+
+/*****************************************************************************************/
+
+.logRow-log .objectBox-array.hasTwisty {
+ padding-left: 18px;
+}
+
+.logRow-log .objectBox-array > .arrayProperties:not(:empty) {
+ padding-left: 18px;
+}
+
+.objectBox-array > .objectTitle {
+ font-weight: bold;
+ color: DarkGreen;
+}
+
+/*****************************************************************************************/
+
+.logRow-spy,
+.logRow-spy .objectLink-sourceLink {
+ background: #FFFFFF linear-gradient(to bottom, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1) 18px, transparent 51px) repeat-x;
+ padding-right: 4px;
+ right: 0;
+}
+
+/* padding-right should be zero for .logRow-spy, so declare after the previous selector */
+.logRow-spy {
+ padding: 0px 0 1px 0;
+}
+
+.logRow-spy.opened {
+ padding-bottom: 4px;
+ border-bottom: none;
+}
+
+.logRow-spy .objectLink-sourceLink {
+ top: 4px;
+}
+
+.spyTitle {
+ color: #000000;
+ font-weight: bold;
+ -moz-box-sizing: padding-box;
+ overflow: hidden;
+ z-index: 100;
+ padding-left: 18px;
+}
+
+.spyCol {
+ padding: 0;
+ white-space: nowrap;
+}
+
+.spyTitleCol:hover > .objectLink-sourceLink,
+.spyTitleCol:hover > .spyTime,
+.spyTitleCol:hover > .spyStatus,
+.spyTitleCol:hover > .spyTitle {
+ display: none;
+}
+
+.spyFullTitle {
+ display: none;
+ -moz-user-select: none;
+ max-width: 100%;
+ background-color: Transparent;
+}
+
+.spyTitleCol:hover > .spyFullTitle {
+ display: block;
+}
+
+.spyStatus {
+ padding-left: 10px;
+ color: rgb(128, 128, 128);
+}
+
+.spyTime {
+ margin-left:4px;
+ margin-right:4px;
+ color: rgb(128, 128, 128);
+}
+
+.spyIcon {
+ display: inline-block;
+ margin-right: 4px;
+ margin-left: 4px;
+ width: 16px;
+ height: 16px;
+ vertical-align: middle;
+ background: transparent no-repeat 0 0;
+}
+
+.logRow-spy.loading .spyHead .spyRow .spyIcon {
+ background-image: url(chrome://firebug/skin/loading.png);
+}
+
+.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
+ width: 0;
+ margin: 0;
+}
+
+.logRow-spy.error .spyHead .spyRow .spyIcon {
+ background-image: url(chrome://firebug/skin/errorIcon-sm.png);
+ background-position: 2px 2px;
+}
+
+.logRow-spy .spyHead .netInfoBody {
+ display: none;
+}
+
+.logRow-spy.opened .spyHead .netInfoBody {
+ margin-top: 10px;
+ display: block;
+}
+
+.logRow-spy.error .spyTitle,
+.logRow-spy.error .spyStatus,
+.logRow-spy.error .spyTime {
+ color: red;
+}
+
+.logRow-spy.loading .spyResponseText {
+ font-style: italic;
+ color: #888888;
+}
+
+/************************************************************************************************/
+
+.caption {
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ font-weight: bold;
+ color: #444444;
+}
+
+.warning {
+ padding: 10px;
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ font-weight: bold;
+ color: #888888;
+}
+
+/************************************************************************************************/
+
+/* The panel content is always visible within the command popup on other panels */
+.commandPopup .panelNode-console {
+ display: block;
+}
+
+/************************************************************************************************/
+/* console.timeStamp */
+
+.logRow-timeStamp {
+ color: Olive;
+ font-family: Lucida Grande, Tahoma, sans-serif;
+}
+
+.logRow-timeStamp SPAN:last-child {
+ font-style: italic;
+ color: gray;
+ padding-left: 5px;
+}
+
+
+/************************************************************************************************/
+/* include() command */
+.tableCommandLineInclude td {
+ height: 17px;
+}
+.tableCommandLineInclude .closeButton {
+ display: none;
+}
+
+.tableCommandLineInclude tr:hover .closeButton {
+ display: block;
+}
+
+.tableCommandLineInclude .url {
+ float: left;
+}
+
+.tableCommandLineInclude .commands {
+ float: right;
+ height: 100%;
+}
+
+.tableCommandLineInclude td:last-child {
+ width: 75%;
+ padding-right: 0 !important;
+}
diff --git a/skin/classic/cookies/cookies.css b/skin/classic/cookies/cookies.css
index ec42751..eb81ba8 100644
--- a/skin/classic/cookies/cookies.css
+++ b/skin/classic/cookies/cookies.css
@@ -1,490 +1,490 @@
-/* See license.txt for terms of usage */
-
-.panelNode-cookies {
- overflow-x: hidden;
-}
-
-.cookieTable {
- width: 100%;
-}
-
-/************************************************************************************************/
-/* Support for console */
-
-.cookieEvent {
- position: relative;
- width: 100%;
-}
-
-.cookieEvent .cookieDomainLabel {
- position: absolute;
- top: 0;
- right: 0;
- font-family: Lucida Grande, sans-serif;
- font-weight: bold;
- color: #0000FF;
-}
-
-.logRow-cookie,
-.logRow-cookiesCleared,
-.logRow-cookiesRejected,
-.logRow-cookie:hover {
- background-image: url(chrome://firebug/skin/cookies/cookie.png);
- background-repeat: no-repeat;
- background-position: 3px 2px;
-}
-
-.logRow-cookiesRejected .cookieRejectedList {
- font-weight: bold;
-}
-
-.logRow-cookiesRejected .cookieList {
- color: rgb(128, 128, 128);
-}
-
-.logRow-cookiesRejected {
- border-bottom: 1px solid #D7D7D7;
-}
-
-.logRow-cookiesRejected .cookieCol,
-.logRow-cookiesRejected > .logRow {
- border-bottom: 0;
- font-weight: normal;
- padding-top: 0px;
-}
-
-.logRow-cookiesRejected > .logRow:hover {
- text-decoration: none;
-}
-
-.logRow-cookiesRejected > .logGroupBody {
- margin-top: 3px;
-}
-
-.logRow-cookiesRejected > .cookieEvent {
- text-decoration: none;
-}
-
-.logRow-cookiesCleared > DIV {
- padding: 1px 0 2px 0 !important;
-}
-
-.logRow-cookie > div > .logContent {
- padding-left: 22px;
-}
-
-/* Container for document.cookie log within the Console panel */
-.logRow-documentCookie {
- padding: 0;
-}
-
-/************************************************************************************************/
-/* Console filtering */
-
-.panelNode.hideType-cookies .logRow-cookie {
- display: none !important;
-}
-
-/************************************************************************************************/
-/* Header for cookie list */
-
-.cookieHeaderRow {
- height: 16px;
-}
-
-.cookieHeaderCell {
- cursor: pointer;
- -moz-user-select: none;
- border-bottom: 1px solid #9C9C9C;
- padding: 0 !important;
- font-weight: bold;
- background: #C8C8C8 linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2)) repeat-x;
- white-space: nowrap;
-}
-
-.cookieHeaderRow > .cookieHeaderCell:first-child > .cookieHeaderCellBox {
- padding: 2px 14px 2px 18px;
-}
-
-.cookieHeaderCellBox {
- padding: 2px 14px 2px 10px;
- border-left: 1px solid #D9D9D9;
- border-right: 1px solid #9C9C9C;
-}
-
-.cookieHeaderCell:hover:active {
- background-color: #B4B4B4;
-}
-
-.cookieHeaderSorted {
- background-color: #8CA0BE;
-}
-
-.cookieHeaderSorted > .cookieHeaderCellBox {
- border-right-color: #6B7C93;
- background: url(chrome://firebug/skin/arrowDown.png) no-repeat calc(100% - 4px);
-}
-
-.cookieHeaderSorted.sortedAscending > .cookieHeaderCellBox {
- background-image: url(chrome://firebug/skin/arrowUp.png);
-}
-
-.cookieHeaderSorted:hover:active {
- background-color: #6E87AA;
-}
-
-/************************************************************************************************/
-/* Column visibility */
-
-/*
- * Every row is for one column, the first selector hides column in the header
- * (e.g. id=colName) and the second selector in all rows (e.g. class=cookieNameCol)
- *
- * If a column is hidden, it's presented in a 'hiddenCols' attribute of the .cookieTable
- * element. Value of the attribute is a whitespace separated list of columns IDs.
- */
-.cookieTable[hiddenCols~=colName] #colName,
-.cookieTable[hiddenCols~=colName] .cookieNameCol,
-.cookieTable[hiddenCols~=colValue] #colValue,
-.cookieTable[hiddenCols~=colValue] .cookieValueCol,
-.cookieTable[hiddenCols~=colRawValue] #colRawValue,
-.cookieTable[hiddenCols~=colRawValue] .cookieRawValueCol,
-.cookieTable[hiddenCols~=colDomain] #colDomain,
-.cookieTable[hiddenCols~=colDomain] .cookieDomainCol,
-.cookieTable[hiddenCols~=colSize] #colSize,
-.cookieTable[hiddenCols~=colSize] .cookieSizeCol,
-.cookieTable[hiddenCols~=colRawSize] #colRawSize,
-.cookieTable[hiddenCols~=colRawSize] .cookieRawSizeCol,
-.cookieTable[hiddenCols~=colPath] #colPath,
-.cookieTable[hiddenCols~=colPath] .cookiePathCol,
-.cookieTable[hiddenCols~=colExpires] #colExpires,
-.cookieTable[hiddenCols~=colExpires] .cookieExpiresCol,
-.cookieTable[hiddenCols~=colMaxAge] #colMaxAge,
-.cookieTable[hiddenCols~=colMaxAge] .cookieMaxAgeCol,
-.cookieTable[hiddenCols~=colHttpOnly] #colHttpOnly,
-.cookieTable[hiddenCols~=colHttpOnly] .cookieHttpOnlyCol,
-.cookieTable[hiddenCols~=colSecurity] #colSecurity,
-.cookieTable[hiddenCols~=colSecurity] .cookieSecurityCol,
-.cookieTable[hiddenCols~=colStatus] #colStatus,
-.cookieTable[hiddenCols~=colStatus] .cookieStatusCol {
- display: none;
-}
-
-/************************************************************************************************/
-/* Breakpoints */
-
-.panelNode-cookies .cookieRowHeader {
- display: block;
-}
-
-/* This is the breakpoint column */
-.cookieDebugCol {
- border-right: 1px solid #CCCCCC;
- background-color: #EEEEEE;
- cursor: pointer;
-}
-
-.cookieDebugCol .sourceLine {
- border-right: none;
-}
-
-/* When mouse is hovering over a cookie row, the breakpoint/debug column is highlighted. */
-.cookieRow:hover > .cookieDebugCol,
-.cookieRow:hover > .cookieDebugCol > .cookieRowHeader {
- background-color: #F6F6F6;
-}
-
-.cookieRowHeader {
- position: relative;
- height: 15px;
- margin-right: 0 !important;
-}
-
-/* Display breakpoint disc */
-.cookieRow .cookieRowHeader {
- background-position: 5px 3px;
-}
-
-.cookieRow[breakpoint="true"] .cookieRowHeader {
- background-image: url(chrome://firebug/skin/breakpoint.png);
-}
-
-.cookieRow[breakpoint="true"][disabledBreakpoint="true"] .cookieRowHeader {
- background-image: none;
-}
-
-.cookieRow[breakpoint="true"][disabledBreakpoint="true"] .cookieRowHeader::before {
- content: "";
- position: absolute;
- top: 3px;
- left: 5px;
- width: 12px;
- height: 12px;
- background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
- opacity: 0.5;
-}
-
-#cookieBreakpointBar {
- max-width: 38px;
-}
-
-#colName > .cookieHeaderCellBox {
- border-left: 0px;
-}
-
-/************************************************************************************************/
-/* Break on Next*/
-
-/* panel badges */
-#fbBreakOnNextButton[panelName="cookies"] #fbBreakOnImageCookies {
- visibility: visible;
- padding-right: 2px;
-}
-
-/************************************************************************************************/
-
-.cookieNameLabel:hover {
- cursor: pointer;
- color: blue;
- text-decoration: underline;
-}
-
-/* Session cookies */
-.panelNode-cookies .sessionCookie > .cookieExpiresCol {
- color: green;
-}
-
-/* Rejected cookies are red in the Cookies tab */
-.panelNode-cookies .rejectedCookie .cookieLabel {
- color: red !important;
-}
-
-/************************************************************************************************/
-
-.cookieRow {
- background: white;
-}
-
-.cookieRow:hover {
- background: #EFEFEF;
-}
-
-.cookieCol {
- padding: 0;
- vertical-align: top;
- border-bottom: 1px solid #EFEFEF;
- white-space: nowrap;
-}
-
-.cookieLabel {
-}
-
-/* Support for search box */
-.panelNode.searching .cookieRow {
- display: none;
-}
-
-.cookieRow.matched {
- display: table-row !important;
-}
-
-/************************************************************************************************/
-
-.cookieNameLabel {
- -moz-box-sizing: padding-box;
- overflow: hidden;
- padding-top: 1px;
- font-weight: bold;
- min-width: 70px;
- margin-left: 5px;
-}
-
-.cookieNameCol > .cookieNameLabel {
- padding-left: 18px;
-}
-
-.cookieDomainLabel,
-.cookieSizeLabel,
-.cookiePathLabel,
-.cookieExpiresLabel,
-.cookieMaxAgeLabel,
-.cookieValueLabel {
- padding: 1px 0 2px 0 !important;
- /*width: 100%; See issue 63*/
-}
-
-.cookieDomainLabel {
- color: rgb(0, 0, 255);
-}
-
-.cookieDomainLabel:hover {
- text-decoration:underline;
- cursor:pointer;
-}
-
-.cookieValueLabel {
- color: rgb(128, 128, 128);
-}
-
-/* This style makes sure that only portion of text is visible
- depending on current size (width) of the parent column */
-.cookiePathLabel,
-.cookieValueLabel {
- overflow: hidden;
- display: -moz-box;
-}
-
-/* This style is to avoid warning: XUL box for div element contained
- an inline span child, forcing all its children to be wrapped in a block,
- which is caused by the previous style.
-
- Related to following message:
- nsIScriptError: XUL box for div element contained an inline #text child,
- forcing all its children to be wrapped in a block. [JavaScript Warning:
- "XUL box for div element contained an inline #text child, forcing all
- its children to be wrapped in a block."
- {file: "chrome://firebug/content/panel.html" line: 0}]
- */
-.cookiePathLabel span,
-.cookieValueLabel span {
- display: inline-block;
-}
-
-.cookieDomainCol,
-.cookieSizeCol,
-.cookiePathCol,
-.cookieExpiresCol,
-.cookieMaxAgeCol,
-.cookieValueCol,
-.cookieSecurityCol,
-.cookieStatusCol,
-.cookieHttpOnlyCol {
- padding-left: 10px;
-}
-
-.cookieHttpOnlyCol {
- color: green;
-}
-
-.cookieSizeCol {
- text-align :right;
- padding-right: 10px;
-}
-
-/************************************************************************************************/
-
-.cookieInfoCol {
- border-top: 1px solid #EEEEEE;
- background: #FFFFFF linear-gradient(to bottom, rgba(0, 0, 0, 0.1), transparent 33px) repeat-x;
-}
-
-.cookieInfoBody {
- margin: 10px 0 4px 10px;
-}
-
-.cookieInfoTabs {
- position: relative;
- padding-left: 14px;
-}
-
-.cookieInfoTab {
- position: relative;
- top: -3px;
- margin-top: 10px;
- padding: 4px 6px;
- border: 1px solid transparent;
- border-bottom: none;
- font-weight: bold;
- color: #565656;
-}
-
-.cookieInfoTab:hover {
- cursor: pointer;
-}
-
-.cookieInfoTab[selected="true"] {
- cursor: default !important;
- border-color: #D7D7D7;
- border-radius: 4px 4px 0 0;
- background-color: #FFFFFF;
-}
-
-.cookieInfoText {
- display: none;
- margin: 0;
- border: 1px solid #D7D7D7;
- border-right: none;
- padding: 8px;
- background-color: #FFFFFF;
- font-family: monospace;
- overflow-x: auto;
-}
-
-.cookieInfoText[selected="true"] {
- display: block;
-}
-
-/************************************************************************************************/
-
-/* Support for Net panel */
-.netInfoCookiesText {
- padding-top: 0;
- font-family: inherit;
-}
-
-.netInfoCookies {
- margin: 5px 0;
- color: inherit;
-}
-
-.netInfoCookies > .cookieTable {
- border-left: solid 1px rgb(239, 239, 239);
-}
-
-.netInfoCookies .cookieInfoRow:last-child > .cookieInfoCol {
- border-bottom: 1px solid #EEEEEE;
-}
-
-.netInfoCookies .deletedCookie > .cookieExpiresCol,
-.netInfoCookies .deletedCookie > .cookieMaxAgeCol {
- color: red;
-}
-
-.cookieInfoRow .cookieRowHeader {
- display: table-cell;
-}
-
-/************************************************************************************************/
-
-/* Hide breakpoint column + proper header field (ie the cookieBreakpointBar) within the net
- panel info body */
-.netInfoCookiesText .cookieInfoRow .cookieRowHeader,
-.netInfoCookiesText #cookieBreakpointBar,
-.netInfoCookiesText .cookieDebugCol {
- display: none;
-}
-
-/* Hide breakpoint column + proper header field (ie the cookieBreakpointBar) within the
- console panel (when logging document.cookie) */
-.documentCookieBody .cookieInfoRow .cookieRowHeader,
-.documentCookieBody #cookieBreakpointBar,
-.documentCookieBody .cookieDebugCol {
- display: none;
-}
-
-/************************************************************************************************/
-
-.disabledPanelBox .descImage-cookies {
- background-image: url(chrome://firebug/skin/cookies/activation-menu-cookies.png);
-}
-
-/************************************************************************************************/
-
-/* Firefox folds max-age into expires internally, so for the Cookies panel we
- * hide the corresponding rows & header.
- * N.B.: This is not, in fact, redundant: there are several elements with the
- * id "colMaxAge"... */
-.panelNode-cookies #colMaxAge,
-.panelNode-cookies .cookieMaxAgeCol {
- display: none;
-}
+/* See license.txt for terms of usage */
+
+.panelNode-cookies {
+ overflow-x: hidden;
+}
+
+.cookieTable {
+ width: 100%;
+}
+
+/************************************************************************************************/
+/* Support for console */
+
+.cookieEvent {
+ position: relative;
+ width: 100%;
+}
+
+.cookieEvent .cookieDomainLabel {
+ position: absolute;
+ top: 0;
+ right: 0;
+ font-family: Lucida Grande, sans-serif;
+ font-weight: bold;
+ color: #0000FF;
+}
+
+.logRow-cookie,
+.logRow-cookiesCleared,
+.logRow-cookiesRejected,
+.logRow-cookie:hover {
+ background-image: url(chrome://firebug/skin/cookies/cookie.png);
+ background-repeat: no-repeat;
+ background-position: 3px 2px;
+}
+
+.logRow-cookiesRejected .cookieRejectedList {
+ font-weight: bold;
+}
+
+.logRow-cookiesRejected .cookieList {
+ color: rgb(128, 128, 128);
+}
+
+.logRow-cookiesRejected {
+ border-bottom: 1px solid #D7D7D7;
+}
+
+.logRow-cookiesRejected .cookieCol,
+.logRow-cookiesRejected > .logRow {
+ border-bottom: 0;
+ font-weight: normal;
+ padding-top: 0px;
+}
+
+.logRow-cookiesRejected > .logRow:hover {
+ text-decoration: none;
+}
+
+.logRow-cookiesRejected > .logGroupBody {
+ margin-top: 3px;
+}
+
+.logRow-cookiesRejected > .cookieEvent {
+ text-decoration: none;
+}
+
+.logRow-cookiesCleared > DIV {
+ padding: 1px 0 2px 0 !important;
+}
+
+.logRow-cookie > div > .logContent {
+ padding-left: 22px;
+}
+
+/* Container for document.cookie log within the Console panel */
+.logRow-documentCookie {
+ padding: 0;
+}
+
+/************************************************************************************************/
+/* Console filtering */
+
+.panelNode.hideType-cookies .logRow-cookie {
+ display: none !important;
+}
+
+/************************************************************************************************/
+/* Header for cookie list */
+
+.cookieHeaderRow {
+ height: 16px;
+}
+
+.cookieHeaderCell {
+ cursor: pointer;
+ -moz-user-select: none;
+ border-bottom: 1px solid #9C9C9C;
+ padding: 0 !important;
+ font-weight: bold;
+ background: #C8C8C8 linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2)) repeat-x;
+ white-space: nowrap;
+}
+
+.cookieHeaderRow > .cookieHeaderCell:first-child > .cookieHeaderCellBox {
+ padding: 2px 14px 2px 18px;
+}
+
+.cookieHeaderCellBox {
+ padding: 2px 14px 2px 10px;
+ border-left: 1px solid #D9D9D9;
+ border-right: 1px solid #9C9C9C;
+}
+
+.cookieHeaderCell:hover:active {
+ background-color: #B4B4B4;
+}
+
+.cookieHeaderSorted {
+ background-color: #8CA0BE;
+}
+
+.cookieHeaderSorted > .cookieHeaderCellBox {
+ border-right-color: #6B7C93;
+ background: url(chrome://firebug/skin/arrowDown.png) no-repeat calc(100% - 4px);
+}
+
+.cookieHeaderSorted.sortedAscending > .cookieHeaderCellBox {
+ background-image: url(chrome://firebug/skin/arrowUp.png);
+}
+
+.cookieHeaderSorted:hover:active {
+ background-color: #6E87AA;
+}
+
+/************************************************************************************************/
+/* Column visibility */
+
+/*
+ * Every row is for one column, the first selector hides column in the header
+ * (e.g. id=colName) and the second selector in all rows (e.g. class=cookieNameCol)
+ *
+ * If a column is hidden, it's presented in a 'hiddenCols' attribute of the .cookieTable
+ * element. Value of the attribute is a whitespace separated list of columns IDs.
+ */
+.cookieTable[hiddenCols~=colName] #colName,
+.cookieTable[hiddenCols~=colName] .cookieNameCol,
+.cookieTable[hiddenCols~=colValue] #colValue,
+.cookieTable[hiddenCols~=colValue] .cookieValueCol,
+.cookieTable[hiddenCols~=colRawValue] #colRawValue,
+.cookieTable[hiddenCols~=colRawValue] .cookieRawValueCol,
+.cookieTable[hiddenCols~=colDomain] #colDomain,
+.cookieTable[hiddenCols~=colDomain] .cookieDomainCol,
+.cookieTable[hiddenCols~=colSize] #colSize,
+.cookieTable[hiddenCols~=colSize] .cookieSizeCol,
+.cookieTable[hiddenCols~=colRawSize] #colRawSize,
+.cookieTable[hiddenCols~=colRawSize] .cookieRawSizeCol,
+.cookieTable[hiddenCols~=colPath] #colPath,
+.cookieTable[hiddenCols~=colPath] .cookiePathCol,
+.cookieTable[hiddenCols~=colExpires] #colExpires,
+.cookieTable[hiddenCols~=colExpires] .cookieExpiresCol,
+.cookieTable[hiddenCols~=colMaxAge] #colMaxAge,
+.cookieTable[hiddenCols~=colMaxAge] .cookieMaxAgeCol,
+.cookieTable[hiddenCols~=colHttpOnly] #colHttpOnly,
+.cookieTable[hiddenCols~=colHttpOnly] .cookieHttpOnlyCol,
+.cookieTable[hiddenCols~=colSecurity] #colSecurity,
+.cookieTable[hiddenCols~=colSecurity] .cookieSecurityCol,
+.cookieTable[hiddenCols~=colStatus] #colStatus,
+.cookieTable[hiddenCols~=colStatus] .cookieStatusCol {
+ display: none;
+}
+
+/************************************************************************************************/
+/* Breakpoints */
+
+.panelNode-cookies .cookieRowHeader {
+ display: block;
+}
+
+/* This is the breakpoint column */
+.cookieDebugCol {
+ border-right: 1px solid #CCCCCC;
+ background-color: #EEEEEE;
+ cursor: pointer;
+}
+
+.cookieDebugCol .sourceLine {
+ border-right: none;
+}
+
+/* When mouse is hovering over a cookie row, the breakpoint/debug column is highlighted. */
+.cookieRow:hover > .cookieDebugCol,
+.cookieRow:hover > .cookieDebugCol > .cookieRowHeader {
+ background-color: #F6F6F6;
+}
+
+.cookieRowHeader {
+ position: relative;
+ height: 15px;
+ margin-right: 0 !important;
+}
+
+/* Display breakpoint disc */
+.cookieRow .cookieRowHeader {
+ background-position: 5px 3px;
+}
+
+.cookieRow[breakpoint="true"] .cookieRowHeader {
+ background-image: url(chrome://firebug/skin/breakpoint.png);
+}
+
+.cookieRow[breakpoint="true"][disabledBreakpoint="true"] .cookieRowHeader {
+ background-image: none;
+}
+
+.cookieRow[breakpoint="true"][disabledBreakpoint="true"] .cookieRowHeader::before {
+ content: "";
+ position: absolute;
+ top: 3px;
+ left: 5px;
+ width: 12px;
+ height: 12px;
+ background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
+ opacity: 0.5;
+}
+
+#cookieBreakpointBar {
+ max-width: 38px;
+}
+
+#colName > .cookieHeaderCellBox {
+ border-left: 0px;
+}
+
+/************************************************************************************************/
+/* Break on Next*/
+
+/* panel badges */
+#fbBreakOnNextButton[panelName="cookies"] #fbBreakOnImageCookies {
+ visibility: visible;
+ padding-right: 2px;
+}
+
+/************************************************************************************************/
+
+.cookieNameLabel:hover {
+ cursor: pointer;
+ color: blue;
+ text-decoration: underline;
+}
+
+/* Session cookies */
+.panelNode-cookies .sessionCookie > .cookieExpiresCol {
+ color: green;
+}
+
+/* Rejected cookies are red in the Cookies tab */
+.panelNode-cookies .rejectedCookie .cookieLabel {
+ color: red !important;
+}
+
+/************************************************************************************************/
+
+.cookieRow {
+ background: white;
+}
+
+.cookieRow:hover {
+ background: #EFEFEF;
+}
+
+.cookieCol {
+ padding: 0;
+ vertical-align: top;
+ border-bottom: 1px solid #EFEFEF;
+ white-space: nowrap;
+}
+
+.cookieLabel {
+}
+
+/* Support for search box */
+.panelNode.searching .cookieRow {
+ display: none;
+}
+
+.cookieRow.matched {
+ display: table-row !important;
+}
+
+/************************************************************************************************/
+
+.cookieNameLabel {
+ -moz-box-sizing: padding-box;
+ overflow: hidden;
+ padding-top: 1px;
+ font-weight: bold;
+ min-width: 70px;
+ margin-left: 5px;
+}
+
+.cookieNameCol > .cookieNameLabel {
+ padding-left: 18px;
+}
+
+.cookieDomainLabel,
+.cookieSizeLabel,
+.cookiePathLabel,
+.cookieExpiresLabel,
+.cookieMaxAgeLabel,
+.cookieValueLabel {
+ padding: 1px 0 2px 0 !important;
+ /*width: 100%; See issue 63*/
+}
+
+.cookieDomainLabel {
+ color: rgb(0, 0, 255);
+}
+
+.cookieDomainLabel:hover {
+ text-decoration:underline;
+ cursor:pointer;
+}
+
+.cookieValueLabel {
+ color: rgb(128, 128, 128);
+}
+
+/* This style makes sure that only portion of text is visible
+ depending on current size (width) of the parent column */
+.cookiePathLabel,
+.cookieValueLabel {
+ overflow: hidden;
+ display: -moz-box;
+}
+
+/* This style is to avoid warning: XUL box for div element contained
+ an inline span child, forcing all its children to be wrapped in a block,
+ which is caused by the previous style.
+
+ Related to following message:
+ nsIScriptError: XUL box for div element contained an inline #text child,
+ forcing all its children to be wrapped in a block. [JavaScript Warning:
+ "XUL box for div element contained an inline #text child, forcing all
+ its children to be wrapped in a block."
+ {file: "chrome://firebug/content/panel.html" line: 0}]
+ */
+.cookiePathLabel span,
+.cookieValueLabel span {
+ display: inline-block;
+}
+
+.cookieDomainCol,
+.cookieSizeCol,
+.cookiePathCol,
+.cookieExpiresCol,
+.cookieMaxAgeCol,
+.cookieValueCol,
+.cookieSecurityCol,
+.cookieStatusCol,
+.cookieHttpOnlyCol {
+ padding-left: 10px;
+}
+
+.cookieHttpOnlyCol {
+ color: green;
+}
+
+.cookieSizeCol {
+ text-align :right;
+ padding-right: 10px;
+}
+
+/************************************************************************************************/
+
+.cookieInfoCol {
+ border-top: 1px solid #EEEEEE;
+ background: #FFFFFF linear-gradient(to bottom, rgba(0, 0, 0, 0.1), transparent 33px) repeat-x;
+}
+
+.cookieInfoBody {
+ margin: 10px 0 4px 10px;
+}
+
+.cookieInfoTabs {
+ position: relative;
+ padding-left: 14px;
+}
+
+.cookieInfoTab {
+ position: relative;
+ top: -3px;
+ margin-top: 10px;
+ padding: 4px 6px;
+ border: 1px solid transparent;
+ border-bottom: none;
+ font-weight: bold;
+ color: #565656;
+}
+
+.cookieInfoTab:hover {
+ cursor: pointer;
+}
+
+.cookieInfoTab[selected="true"] {
+ cursor: default !important;
+ border-color: #D7D7D7;
+ border-radius: 4px 4px 0 0;
+ background-color: #FFFFFF;
+}
+
+.cookieInfoText {
+ display: none;
+ margin: 0;
+ border: 1px solid #D7D7D7;
+ border-right: none;
+ padding: 8px;
+ background-color: #FFFFFF;
+ font-family: monospace;
+ overflow-x: auto;
+}
+
+.cookieInfoText[selected="true"] {
+ display: block;
+}
+
+/************************************************************************************************/
+
+/* Support for Net panel */
+.netInfoCookiesText {
+ padding-top: 0;
+ font-family: inherit;
+}
+
+.netInfoCookies {
+ margin: 5px 0;
+ color: inherit;
+}
+
+.netInfoCookies > .cookieTable {
+ border-left: solid 1px rgb(239, 239, 239);
+}
+
+.netInfoCookies .cookieInfoRow:last-child > .cookieInfoCol {
+ border-bottom: 1px solid #EEEEEE;
+}
+
+.netInfoCookies .deletedCookie > .cookieExpiresCol,
+.netInfoCookies .deletedCookie > .cookieMaxAgeCol {
+ color: red;
+}
+
+.cookieInfoRow .cookieRowHeader {
+ display: table-cell;
+}
+
+/************************************************************************************************/
+
+/* Hide breakpoint column + proper header field (ie the cookieBreakpointBar) within the net
+ panel info body */
+.netInfoCookiesText .cookieInfoRow .cookieRowHeader,
+.netInfoCookiesText #cookieBreakpointBar,
+.netInfoCookiesText .cookieDebugCol {
+ display: none;
+}
+
+/* Hide breakpoint column + proper header field (ie the cookieBreakpointBar) within the
+ console panel (when logging document.cookie) */
+.documentCookieBody .cookieInfoRow .cookieRowHeader,
+.documentCookieBody #cookieBreakpointBar,
+.documentCookieBody .cookieDebugCol {
+ display: none;
+}
+
+/************************************************************************************************/
+
+.disabledPanelBox .descImage-cookies {
+ background-image: url(chrome://firebug/skin/cookies/activation-menu-cookies.png);
+}
+
+/************************************************************************************************/
+
+/* Firefox folds max-age into expires internally, so for the Cookies panel we
+ * hide the corresponding rows & header.
+ * N.B.: This is not, in fact, redundant: there are several elements with the
+ * id "colMaxAge"... */
+.panelNode-cookies #colMaxAge,
+.panelNode-cookies .cookieMaxAgeCol {
+ display: none;
+}
diff --git a/skin/classic/cookies/editCookie.css b/skin/classic/cookies/editCookie.css
index 1a2ac9f..1749b4d 100644
--- a/skin/classic/cookies/editCookie.css
+++ b/skin/classic/cookies/editCookie.css
@@ -1,5 +1,5 @@
-/* See license.txt for terms of usage */
-
-#clientBox {
- padding:10px;
-}
+/* See license.txt for terms of usage */
+
+#clientBox {
+ padding:10px;
+}
diff --git a/skin/classic/cookies/trace.css b/skin/classic/cookies/trace.css
index fa2dcde..bc72916 100644
--- a/skin/classic/cookies/trace.css
+++ b/skin/classic/cookies/trace.css
@@ -1,6 +1,6 @@
-/* See license.txt for terms of usage */
-
-/* Support for FBTraceConsole */
-.DBG_COOKIES {
- color: green;
-}
+/* See license.txt for terms of usage */
+
+/* Support for FBTraceConsole */
+.DBG_COOKIES {
+ color: green;
+}
diff --git a/skin/classic/css.css b/skin/classic/css.css
index a265cd0..81e9e90 100644
--- a/skin/classic/css.css
+++ b/skin/classic/css.css
@@ -1,229 +1,229 @@
-/* See license.txt for terms of usage */
-
-.panelNode-css {
- overflow-x: hidden;
-}
-
-.cssSheet > .insertBefore {
- height: 1.5em;
-}
-
-.cssRule {
- position: relative;
- margin: 1em 0 0 6px;
- font-family: monospace;
- color: #000000;
-}
-
-.cssRulesListBox > .cssRule {
- padding-left: 2em;
-}
-
-.cssRule:first-child {
- margin-top: 6px;
-}
-
-.cssElementRuleContainer {
- position: relative;
-}
-
-.cssElementRuleContainer > .objectLink {
- -moz-user-select: none;
-}
-
-.cssHead {
- padding-right: 150px;
-}
-
-.cssProp {
- padding-left: 3em;
- line-height: 1.4em;
-}
-
-.cssProp > span:first-child {
- margin-left: -3em;
-}
-
-.cssPropName {
- color: darkgreen;
-}
-
-.cssPropValue,
-.cssFontPropValue {
- color: darkblue;
-}
-
-.cssPropValueUnused,
-.cssFontPropSeparator,
-.cssParentMatch {
- color: #787878;
-}
-
-.cssOverridden > .cssPropName,
-.cssOverridden > .cssPropValue,
-.cssOverridden > .selectorName,
-.cssOverridden > td > .stylePropValue {
- text-decoration: line-through;
-}
-
-.computedStyleTable,
-.matchedSelectorsTable {
- width: 100%;
- border-spacing: 0;
-}
-
-.computedStylesGroup > .computedStyleTable {
- display: none;
-}
-
-.computedStylesGroup.opened > .computedStyleTable {
- display: table;
-}
-
-.cssInheritHeader, .cssComputedHeader {
- position: relative;
- -moz-user-select: none;
-}
-
-.cssComputedHeader,
-.computedStyle.hasSelectors {
- cursor: pointer;
-}
-
-.computedStyle.hasSelectors > .stylePropName {
- background-position: 4px 4px !important;
-}
-
-.computedStylesGroup > .computedStyleTable > tbody > .computedStyle.hasSelectors > .stylePropName {
- background-position: 10px 4px !important;
-}
-
-.computedStylesGroup > .cssComputedHeader {
- margin: 0;
-}
-
-.computedStylesGroup.hidden {
- display: none;
-}
-
-.cssInheritLabel,
-.cssComputedLabel {
- margin-right: 0.25em;
- font-weight: bold;
-}
-
-.cssComputedLabel {
- margin-left: 14px;
-}
-
-.computedStyle:not(:nth-last-child(2)) > td,
-.computedStyle:nth-last-child(2).opened > td,
-.computedStyle:not(:nth-last-child(2)) + .matchedSelectors .styleSelector > td,
-.computedStyle:nth-last-child(2) + .matchedSelectors .styleSelector:not(:last-child) > td {
- border-bottom: 1px solid #EFEFEF;
-}
-
-.computedStyleRow > td {
- padding-top: 2px;
- padding-bottom: 2px;
-}
-
-.selectorName {
- width: 160px;
- -moz-padding-start: 24px;
-}
-
-.stylePropName {
- width: 160px;
- vertical-align: top;
- font-weight: bold;
- padding: 0 4px 0 24px;
-}
-
-.styleSelector > td > .stylePropValue {
- padding-left: 3px;
-}
-
-.propValue {
- width: 140px;
-}
-
-.matchedSelectors {
- display: none;
-}
-
-.computedStyle.opened + .matchedSelectors {
- display: table-row;
-}
-
-.styleSourceLink > .objectLink-sourceLink {
- position: relative;
- top: 0;
- left: 0;
- padding: 0;
- text-align: right;
-}
-
-.cssElementRuleContainer > .objectLink-sourceLink {
- top: 0;
-}
-
-.cssProp.editGroup:hover > .cssPropIndent {
- background: transparent url(chrome://firebug/skin/disable.png) no-repeat 2px 1px;
- filter: none;
-}
-
-.cssProp.editGroup > span:first-child {
- cursor: pointer;
-}
-
-.cssProp.disabledStyle > .cssPropIndent {
- background: transparent url(chrome://firebug/skin/disableInactive.png) no-repeat 2px 1px;
-}
-
-.cssProp.disabledStyle {
- color: #CCCCCC;
-}
-
-.cssProp.disabledStyle > .cssPropName,
-.cssProp.disabledStyle > .cssPropValue,
-.cssProp.disabledStyle > .cssPropValue span {
- color: inherit;
-}
-
-.cssPropValue.editing + .cssSemi,
-.inlineExpander + .cssSemi {
- display: none;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.useA11y .a11yCSSView .focusRow:focus {
- outline: none;
- background-color: transparent
- }
-
- .useA11y .a11yCSSView .focusRow:focus .cssSelector,
- .useA11y .a11yCSSView .focusRow:focus .cssPropName,
- .useA11y .a11yCSSView .focusRow:focus .cssPropValue,
- .useA11y .a11yCSSView .computedStyleRow:focus,
- .useA11y .a11yCSSView .groupHeader:focus {
- outline: 2px solid #FF9933;
- outline-offset: -2px;
- background-color: #FFFFD6;
- }
-
- .useA11y .a11yCSSView .groupHeader:focus {
- outline-offset: -2px;
- }
-
-.infoTipColorBox {
- background-color: #C8C8C8;
- background-image:
- linear-gradient(45deg, #A0A0A0 25%, transparent 25%),
- linear-gradient(135deg, #A0A0A0 25%, transparent 25%),
- linear-gradient(45deg, transparent 75%, #A0A0A0 75%),
- linear-gradient(135deg, transparent 75%, #A0A0A0 75%);
- background-size: 16px 16px;
- background-position:0 0, 8px 0, 8px -8px, 0px 8px;
-}
+/* See license.txt for terms of usage */
+
+.panelNode-css {
+ overflow-x: hidden;
+}
+
+.cssSheet > .insertBefore {
+ height: 1.5em;
+}
+
+.cssRule {
+ position: relative;
+ margin: 1em 0 0 6px;
+ font-family: monospace;
+ color: #000000;
+}
+
+.cssRulesListBox > .cssRule {
+ padding-left: 2em;
+}
+
+.cssRule:first-child {
+ margin-top: 6px;
+}
+
+.cssElementRuleContainer {
+ position: relative;
+}
+
+.cssElementRuleContainer > .objectLink {
+ -moz-user-select: none;
+}
+
+.cssHead {
+ padding-right: 150px;
+}
+
+.cssProp {
+ padding-left: 3em;
+ line-height: 1.4em;
+}
+
+.cssProp > span:first-child {
+ margin-left: -3em;
+}
+
+.cssPropName {
+ color: darkgreen;
+}
+
+.cssPropValue,
+.cssFontPropValue {
+ color: darkblue;
+}
+
+.cssPropValueUnused,
+.cssFontPropSeparator,
+.cssParentMatch {
+ color: #787878;
+}
+
+.cssOverridden > .cssPropName,
+.cssOverridden > .cssPropValue,
+.cssOverridden > .selectorName,
+.cssOverridden > td > .stylePropValue {
+ text-decoration: line-through;
+}
+
+.computedStyleTable,
+.matchedSelectorsTable {
+ width: 100%;
+ border-spacing: 0;
+}
+
+.computedStylesGroup > .computedStyleTable {
+ display: none;
+}
+
+.computedStylesGroup.opened > .computedStyleTable {
+ display: table;
+}
+
+.cssInheritHeader, .cssComputedHeader {
+ position: relative;
+ -moz-user-select: none;
+}
+
+.cssComputedHeader,
+.computedStyle.hasSelectors {
+ cursor: pointer;
+}
+
+.computedStyle.hasSelectors > .stylePropName {
+ background-position: 4px 4px !important;
+}
+
+.computedStylesGroup > .computedStyleTable > tbody > .computedStyle.hasSelectors > .stylePropName {
+ background-position: 10px 4px !important;
+}
+
+.computedStylesGroup > .cssComputedHeader {
+ margin: 0;
+}
+
+.computedStylesGroup.hidden {
+ display: none;
+}
+
+.cssInheritLabel,
+.cssComputedLabel {
+ margin-right: 0.25em;
+ font-weight: bold;
+}
+
+.cssComputedLabel {
+ margin-left: 14px;
+}
+
+.computedStyle:not(:nth-last-child(2)) > td,
+.computedStyle:nth-last-child(2).opened > td,
+.computedStyle:not(:nth-last-child(2)) + .matchedSelectors .styleSelector > td,
+.computedStyle:nth-last-child(2) + .matchedSelectors .styleSelector:not(:last-child) > td {
+ border-bottom: 1px solid #EFEFEF;
+}
+
+.computedStyleRow > td {
+ padding-top: 2px;
+ padding-bottom: 2px;
+}
+
+.selectorName {
+ width: 160px;
+ -moz-padding-start: 24px;
+}
+
+.stylePropName {
+ width: 160px;
+ vertical-align: top;
+ font-weight: bold;
+ padding: 0 4px 0 24px;
+}
+
+.styleSelector > td > .stylePropValue {
+ padding-left: 3px;
+}
+
+.propValue {
+ width: 140px;
+}
+
+.matchedSelectors {
+ display: none;
+}
+
+.computedStyle.opened + .matchedSelectors {
+ display: table-row;
+}
+
+.styleSourceLink > .objectLink-sourceLink {
+ position: relative;
+ top: 0;
+ left: 0;
+ padding: 0;
+ text-align: right;
+}
+
+.cssElementRuleContainer > .objectLink-sourceLink {
+ top: 0;
+}
+
+.cssProp.editGroup:hover > .cssPropIndent {
+ background: transparent url(chrome://firebug/skin/disable.png) no-repeat 2px 1px;
+ filter: none;
+}
+
+.cssProp.editGroup > span:first-child {
+ cursor: pointer;
+}
+
+.cssProp.disabledStyle > .cssPropIndent {
+ background: transparent url(chrome://firebug/skin/disableInactive.png) no-repeat 2px 1px;
+}
+
+.cssProp.disabledStyle {
+ color: #CCCCCC;
+}
+
+.cssProp.disabledStyle > .cssPropName,
+.cssProp.disabledStyle > .cssPropValue,
+.cssProp.disabledStyle > .cssPropValue span {
+ color: inherit;
+}
+
+.cssPropValue.editing + .cssSemi,
+.inlineExpander + .cssSemi {
+ display: none;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.useA11y .a11yCSSView .focusRow:focus {
+ outline: none;
+ background-color: transparent
+ }
+
+ .useA11y .a11yCSSView .focusRow:focus .cssSelector,
+ .useA11y .a11yCSSView .focusRow:focus .cssPropName,
+ .useA11y .a11yCSSView .focusRow:focus .cssPropValue,
+ .useA11y .a11yCSSView .computedStyleRow:focus,
+ .useA11y .a11yCSSView .groupHeader:focus {
+ outline: 2px solid #FF9933;
+ outline-offset: -2px;
+ background-color: #FFFFD6;
+ }
+
+ .useA11y .a11yCSSView .groupHeader:focus {
+ outline-offset: -2px;
+ }
+
+.infoTipColorBox {
+ background-color: #C8C8C8;
+ background-image:
+ linear-gradient(45deg, #A0A0A0 25%, transparent 25%),
+ linear-gradient(135deg, #A0A0A0 25%, transparent 25%),
+ linear-gradient(45deg, transparent 75%, #A0A0A0 75%),
+ linear-gradient(135deg, transparent 75%, #A0A0A0 75%);
+ background-size: 16px 16px;
+ background-position:0 0, 8px 0, 8px -8px, 0px 8px;
+}
diff --git a/skin/classic/customizeShortcuts.css b/skin/classic/customizeShortcuts.css
index 6c9dce2..644377b 100644
--- a/skin/classic/customizeShortcuts.css
+++ b/skin/classic/customizeShortcuts.css
@@ -1,10 +1,10 @@
-/* See license.txt for terms of usage */
-
-/************************************************************************************************/
-/* Customize Shortcuts Dialog */
-
-#shortcutGrid {
- background-color: white;
- overflow: auto;
- border: 1px gray solid;
-}
+/* See license.txt for terms of usage */
+
+/************************************************************************************************/
+/* Customize Shortcuts Dialog */
+
+#shortcutGrid {
+ background-color: white;
+ overflow: auto;
+ border: 1px gray solid;
+}
diff --git a/skin/classic/debugger.css b/skin/classic/debugger.css
index e181eeb..b9a2d8c 100644
--- a/skin/classic/debugger.css
+++ b/skin/classic/debugger.css
@@ -1,289 +1,289 @@
-/* See license.txt for terms of usage */
-
- at import "chrome://firebug-os/skin/debugger.css";
-
-.panelNode-script {
- overflow: hidden;
- font-family: monospace;
-}
-
-/************************************************************************************************/
-
-.scriptTooltip {
- position: fixed;
- z-index: 2147483647;
- padding: 2px 3px;
- border: 1px solid #CBE087;
- background: LightYellow;
- font-family: monospace;
- color: #000000;
-}
-
-/************************************************************************************************/
-
-.sourceBox {
- overflow: scroll; /* see issue 1479 */
- position: absolute;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
-}
-
-.sourceRow {
- white-space: nowrap;
- -moz-user-select: text;
-}
-
-.sourceRow.hovered {
- background-color: #EEEEEE;
-}
-
-/************************************************************************************************/
-
-.sourceLine {
- position: relative;
- -moz-user-select: none;
- margin-right: 10px;
- border-right: 1px solid #CCCCCC;
- padding: 0px 4px 0 20px;
- background: #EEEEEE no-repeat 5px 1px;
- color: #888888;
- white-space: pre;
- font-family: monospace; /* see issue 2953 */
-}
-
-.noteInToolTip { /* below sourceLine, so it overrides it */
- background-color: #FFD472;
-}
-
-.useA11y .sourceBox .sourceViewport:focus .sourceLine {
- background-color: #FFFFC0;
- color: navy;
- border-right: 1px solid black;
-}
-
-.useA11y .sourceBox .sourceViewport:focus {
- outline: none;
-}
-
-.a11y1emSize {
- width: 1em;
- height: 1em;
- position: absolute;
-}
-
-.useA11y .panelStatusLabel:focus {
- outline-offset: -2px !important;
- }
-
-.sourceBox > .sourceRow > .sourceLine {
- cursor: pointer;
-}
-
-.sourceLine:hover {
- text-decoration: none;
-}
-
-.sourceRowText {
- white-space: pre;
-}
-
-.sourceRow[exe_line="true"] {
- outline: 1px solid #D9D9B6;
- margin-right: 1px;
- background-color: lightgoldenrodyellow;
-}
-
-.sourceRow[executable="true"] > .sourceLine {
- content: "-";
- color: #4AA02C; /* Spring Green */
- font-weight: bold;
-}
-
-.sourceRow[exe_line="true"] > .sourceLine {
- background-image: url(chrome://firebug/skin/executionPointer.png);
- background-position: 7px 1px;
- color: #000000;
-}
-
-.sourceRow[breakpoint="true"] > .sourceLine {
- background-image: url(chrome://firebug/skin/breakpoint.png);
-}
-
-.sourceRow[breakpoint="true"][condition="true"] > .sourceLine {
- background-image: url(chrome://firebug/skin/breakpointCondition.png), url(chrome://firebug/skin/breakpoint.png);
- background-position: 9px 3px, 5px 1px;
-}
-
-.sourceRow[breakpoint="true"][disabledBreakpoint="true"] > .sourceLine {
- background-image: none;
-}
-
-.sourceRow[breakpoint="true"][disabledBreakpoint="true"]:not([condition="true"]) > .sourceLine::before {
- content: "";
- position: absolute;
- top: 1px;
- left: 5px;
- width: 12px;
- height: 12px;
- background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
- opacity: 0.5;
-}
-
-.sourceRow[breakpoint="true"][disabledBreakpoint="true"][condition="true"] > .sourceLine::before {
- content: "";
- position: absolute;
- top: 1px;
- left: 5px;
- width: 12px;
- height: 12px;
- background: url(chrome://firebug/skin/breakpointCondition.png) no-repeat;
- opacity: 0.5;
-}
-
-.sourceRow[breakpoint="true"][exe_line="true"] > .sourceLine {
- background-image: url(chrome://firebug/skin/executionPointer.png), url(chrome://firebug/skin/breakpoint.png);
- background-position: 7px 1px, 5px 1px;
-}
-
-.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine {
- background-image: none;
-}
-
-.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine::before {
- content: "";
- position: absolute;
- top: 1px;
- left: 5px;
- width: 12px;
- height: 12px;
- background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
- opacity: 0.5;
-}
-
-.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine::after {
- content: "";
- position: absolute;
- top: 1px;
- left: 7px;
- width: 11px;
- height: 12px;
- background: url(chrome://firebug/skin/executionPointer.png) no-repeat;
-}
-
-.sourceLine.editing {
- background-image: url(chrome://firebug/skin/breakpoint.png);
-}
-
-/************************************************************************************************/
-/* Breakpoint condition */
-
-.conditionEditor {
- z-index: 2147483647;
- position: absolute;
- margin-top: 0;
- left: 5px;
- width: 90%;
-}
-
-.conditionInput {
- width: 100%;
- font-size: inherit;
-}
-
-.conditionInput.completionInput {
- position: relative;
-}
-
-/*************************************************************************************************/
-/* Notification */
-
-.notificationBox {
- position: fixed;
- z-index: 2147483647;
- padding: 0 50px;
- left: 0;
- right: 0;
- top: 0;
- pointer-events: none;
-}
-
-.notificationTable {
- border: 1px solid lightgray;
- border-top: none;
- background: rgb(255, 255, 225);
- font-family: Segoe UI;
- font-size: 12px;
- color: #000000;
- width: 100%;
- box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.4);
- border-radius: 0 0 3px 3px;
- padding: 2px 0;
- pointer-events: auto;
-}
-
-.notificationBox TD {
- vertical-align: middle;
-}
-
-.notificationImage {
- vertical-align: middle;
- margin: 0 5px;
-}
-
-.notificationDesc {
- padding-left: 1px;
-}
-
-.noNotificationDesc {
- color: gray;
-}
-
-.noNotificationDesc a {
- font-weight: bold;
- color: gray;
-}
-
-.noNotificationDesc a:hover {
- text-decoration: underline;
-}
-
-.notificationBox .descCol {
- width: 100%;
- line-height: 17px;
-}
-
-.notificationBox .buttonsCol {
- white-space: nowrap;
-}
-
-.notificationBox .hideCol {
- color: gray;
- padding-top: 7px;
-}
-
-.notificationBox .hideNotification {
- vertical-align: middle;
-}
-
-.notificationButton {
- margin-right: 4px;
-}
-
-.notificationClose {
- background: url(chrome://firebug/skin/notificationClose.png) no-repeat scroll 0 0 transparent;
- width: 16px;
- height: 16px;
- border: none;
- margin-right: 6px;
- cursor: pointer;
-}
-
-.notificationClose:hover {
- background: url(chrome://firebug/skin/notificationClose.png) no-repeat scroll -32px 0 transparent;
-}
-
-.notificationClose:hover:active {
- background: url(chrome://firebug/skin/notificationClose.png) no-repeat scroll -16px 0 transparent;
-}
+/* See license.txt for terms of usage */
+
+ at import "chrome://firebug-os/skin/debugger.css";
+
+.panelNode-script {
+ overflow: hidden;
+ font-family: monospace;
+}
+
+/************************************************************************************************/
+
+.scriptTooltip {
+ position: fixed;
+ z-index: 2147483647;
+ padding: 2px 3px;
+ border: 1px solid #CBE087;
+ background: LightYellow;
+ font-family: monospace;
+ color: #000000;
+}
+
+/************************************************************************************************/
+
+.sourceBox {
+ overflow: scroll; /* see issue 1479 */
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.sourceRow {
+ white-space: nowrap;
+ -moz-user-select: text;
+}
+
+.sourceRow.hovered {
+ background-color: #EEEEEE;
+}
+
+/************************************************************************************************/
+
+.sourceLine {
+ position: relative;
+ -moz-user-select: none;
+ margin-right: 10px;
+ border-right: 1px solid #CCCCCC;
+ padding: 0px 4px 0 20px;
+ background: #EEEEEE no-repeat 5px 1px;
+ color: #888888;
+ white-space: pre;
+ font-family: monospace; /* see issue 2953 */
+}
+
+.noteInToolTip { /* below sourceLine, so it overrides it */
+ background-color: #FFD472;
+}
+
+.useA11y .sourceBox .sourceViewport:focus .sourceLine {
+ background-color: #FFFFC0;
+ color: navy;
+ border-right: 1px solid black;
+}
+
+.useA11y .sourceBox .sourceViewport:focus {
+ outline: none;
+}
+
+.a11y1emSize {
+ width: 1em;
+ height: 1em;
+ position: absolute;
+}
+
+.useA11y .panelStatusLabel:focus {
+ outline-offset: -2px !important;
+ }
+
+.sourceBox > .sourceRow > .sourceLine {
+ cursor: pointer;
+}
+
+.sourceLine:hover {
+ text-decoration: none;
+}
+
+.sourceRowText {
+ white-space: pre;
+}
+
+.sourceRow[exe_line="true"] {
+ outline: 1px solid #D9D9B6;
+ margin-right: 1px;
+ background-color: lightgoldenrodyellow;
+}
+
+.sourceRow[executable="true"] > .sourceLine {
+ content: "-";
+ color: #4AA02C; /* Spring Green */
+ font-weight: bold;
+}
+
+.sourceRow[exe_line="true"] > .sourceLine {
+ background-image: url(chrome://firebug/skin/executionPointer.png);
+ background-position: 7px 1px;
+ color: #000000;
+}
+
+.sourceRow[breakpoint="true"] > .sourceLine {
+ background-image: url(chrome://firebug/skin/breakpoint.png);
+}
+
+.sourceRow[breakpoint="true"][condition="true"] > .sourceLine {
+ background-image: url(chrome://firebug/skin/breakpointCondition.png), url(chrome://firebug/skin/breakpoint.png);
+ background-position: 9px 3px, 5px 1px;
+}
+
+.sourceRow[breakpoint="true"][disabledBreakpoint="true"] > .sourceLine {
+ background-image: none;
+}
+
+.sourceRow[breakpoint="true"][disabledBreakpoint="true"]:not([condition="true"]) > .sourceLine::before {
+ content: "";
+ position: absolute;
+ top: 1px;
+ left: 5px;
+ width: 12px;
+ height: 12px;
+ background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
+ opacity: 0.5;
+}
+
+.sourceRow[breakpoint="true"][disabledBreakpoint="true"][condition="true"] > .sourceLine::before {
+ content: "";
+ position: absolute;
+ top: 1px;
+ left: 5px;
+ width: 12px;
+ height: 12px;
+ background: url(chrome://firebug/skin/breakpointCondition.png) no-repeat;
+ opacity: 0.5;
+}
+
+.sourceRow[breakpoint="true"][exe_line="true"] > .sourceLine {
+ background-image: url(chrome://firebug/skin/executionPointer.png), url(chrome://firebug/skin/breakpoint.png);
+ background-position: 7px 1px, 5px 1px;
+}
+
+.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine {
+ background-image: none;
+}
+
+.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine::before {
+ content: "";
+ position: absolute;
+ top: 1px;
+ left: 5px;
+ width: 12px;
+ height: 12px;
+ background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
+ opacity: 0.5;
+}
+
+.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine::after {
+ content: "";
+ position: absolute;
+ top: 1px;
+ left: 7px;
+ width: 11px;
+ height: 12px;
+ background: url(chrome://firebug/skin/executionPointer.png) no-repeat;
+}
+
+.sourceLine.editing {
+ background-image: url(chrome://firebug/skin/breakpoint.png);
+}
+
+/************************************************************************************************/
+/* Breakpoint condition */
+
+.conditionEditor {
+ z-index: 2147483647;
+ position: absolute;
+ margin-top: 0;
+ left: 5px;
+ width: 90%;
+}
+
+.conditionInput {
+ width: 100%;
+ font-size: inherit;
+}
+
+.conditionInput.completionInput {
+ position: relative;
+}
+
+/*************************************************************************************************/
+/* Notification */
+
+.notificationBox {
+ position: fixed;
+ z-index: 2147483647;
+ padding: 0 50px;
+ left: 0;
+ right: 0;
+ top: 0;
+ pointer-events: none;
+}
+
+.notificationTable {
+ border: 1px solid lightgray;
+ border-top: none;
+ background: rgb(255, 255, 225);
+ font-family: Segoe UI;
+ font-size: 12px;
+ color: #000000;
+ width: 100%;
+ box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.4);
+ border-radius: 0 0 3px 3px;
+ padding: 2px 0;
+ pointer-events: auto;
+}
+
+.notificationBox TD {
+ vertical-align: middle;
+}
+
+.notificationImage {
+ vertical-align: middle;
+ margin: 0 5px;
+}
+
+.notificationDesc {
+ padding-left: 1px;
+}
+
+.noNotificationDesc {
+ color: gray;
+}
+
+.noNotificationDesc a {
+ font-weight: bold;
+ color: gray;
+}
+
+.noNotificationDesc a:hover {
+ text-decoration: underline;
+}
+
+.notificationBox .descCol {
+ width: 100%;
+ line-height: 17px;
+}
+
+.notificationBox .buttonsCol {
+ white-space: nowrap;
+}
+
+.notificationBox .hideCol {
+ color: gray;
+ padding-top: 7px;
+}
+
+.notificationBox .hideNotification {
+ vertical-align: middle;
+}
+
+.notificationButton {
+ margin-right: 4px;
+}
+
+.notificationClose {
+ background: url(chrome://firebug/skin/notificationClose.png) no-repeat scroll 0 0 transparent;
+ width: 16px;
+ height: 16px;
+ border: none;
+ margin-right: 6px;
+ cursor: pointer;
+}
+
+.notificationClose:hover {
+ background: url(chrome://firebug/skin/notificationClose.png) no-repeat scroll -32px 0 transparent;
+}
+
+.notificationClose:hover:active {
+ background: url(chrome://firebug/skin/notificationClose.png) no-repeat scroll -16px 0 transparent;
+}
diff --git a/skin/classic/dom.css b/skin/classic/dom.css
index 984cef1..16a06c1 100644
--- a/skin/classic/dom.css
+++ b/skin/classic/dom.css
@@ -1,225 +1,225 @@
-/* See license.txt for terms of usage */
-
-.domTable {
- width: 100%;
-}
-
-.memberLabelCell {
- padding: 2px 0 2px 0px;
- vertical-align: top;
-}
-
-.memberValueCell {
- padding: 2px 0 2px 5px;
- display: block;
- overflow: hidden;
-}
-
-.memberValueCell.readOnly > SPAN {
- opacity: 0.5;
-}
-
-.memberLabel {
- cursor: default;
- overflow: hidden;
- padding-left: 18px;
- white-space: nowrap;
-}
-
-.memberLabelPrefix {
- color: gray;
- margin-right: 3px;
- font-weight: normal;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-/* Breakpoints */
-
-/* In order to set memberRowHeader's height to 100%, memberRow and
- * memberHeaderCell (parents) has to also be set to height: 100%,
- * otherwise it wouldn't work */
-.memberHeaderCell {
- height: 100%;
-}
-
-.memberRow {
- height: 100%;
- border: 1px solid transparent; /* see issue 5769 */
-}
-
-.memberRowHeader {
- position: relative;
- cursor: pointer;
- display: none;
- height: 100%;
-}
-
-/* Show breakpoints bar only in the DOM panel (and DOM side panel) so far */
-.panelNode-dom .memberRowHeader,
-.panelNode-domSide .memberRowHeader {
- display: block;
-}
-
-/* Display brekpoint disc */
-.memberRow .memberRowHeader {
- background-position: 5px 4px;
-}
-
-.memberRow[breakpoint="true"] .memberRowHeader {
- background-image: url(chrome://firebug/skin/breakpoint.png);
-}
-
-.memberRow[breakpoint="true"][disabledBreakpoint="true"] .memberRowHeader {
- background-image: none;
-}
-
-.memberRow[breakpoint="true"][disabledBreakpoint="true"] .memberRowHeader::before {
- content: "";
- position: absolute;
- top: 4px;
- left: 5px;
- width: 12px;
- height: 12px;
- background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
- opacity: 0.5;
-}
-
-.memberRow[breakable="true"]:hover .memberRowHeader {
- background-color: #F6F6F6;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.memberRow.hasChildren > .memberLabelCell > .memberLabel:hover,
-.memberRow.cropped > .memberLabelCell > .memberLabel:hover {
- cursor: pointer;
- color: blue;
- text-decoration: underline;
-}
-
-.panelNode-dom .memberRow:hover {
- background-color: #EFEFEF;
-}
-
-.panelNode-dom .memberRow td {
- border-bottom: 1px solid #EFEFEF;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.userLabel,
-.userClassLabel,
-.userFunctionLabel {
- font-weight: bold;
-}
-
-.userLabel {
- color: #000000;
-}
-
-.userClassLabel {
- color: #E90000;
-}
-
-.userFunctionLabel {
- color: #025E2A;
-}
-
-.domLabel {
- color: #000000;
-}
-
-.domClassLabel {
- color: #E90000;
-}
-
-.domFunctionLabel {
- color: #025E2A;
-}
-
-.ordinalLabel {
- color: SlateBlue;
- font-weight: bold;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.scopesRow {
- padding: 2px 18px;
- background-color: LightYellow;
- color: #666666;
-}
-
-.scopesRow td {
- border-top: 1px solid #BEBEBE;
-}
-
-.scopesLabel {
- background-color: LightYellow;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.watchEditCell {
- padding: 2px 18px;
- background-color: LightYellow;
- border-bottom: 1px solid #BEBEBE;
- color: #666666;
- line-height: 14px;
- cursor: text;
-}
-
-.editor-watchNewRow,
-.editor-memberRow {
- font-family: monospace !important;
-}
-
-.editor-memberRow {
- padding: 1px 0 !important;
-}
-
-.editor-watchRow {
- padding-bottom: 0 !important;
-}
-
-.watchRow > .memberLabelCell {
- font-family: monospace;
- padding-top: 1px;
- padding-bottom: 1px;
-}
-
-.watchRow > .memberLabelCell > .memberLabel {
- background-color: transparent;
-}
-
-.watchRow > .memberValueCell {
- padding-top: 2px;
- padding-bottom: 2px;
-}
-
-.watchRow > .memberLabelCell,
-.watchRow > .memberValueCell {
- background-color: #F5F5F5;
- border-bottom: 1px solid #BEBEBE;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.watchToolbox {
- z-index: 2147483647;
- position: absolute;
- right: 0;
- padding: 1px 2px;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.domTable .objectBox-errorMessage {
- padding: 0 0 0 18px;
- background: url(chrome://firebug/skin/errorSmall.png) no-repeat 0 0;
- color: red;
-}
-
-.domTable .objectBox-errorMessage .errorTitle {
- display: inline;
-}
+/* See license.txt for terms of usage */
+
+.domTable {
+ width: 100%;
+}
+
+.memberLabelCell {
+ padding: 2px 0 2px 0px;
+ vertical-align: top;
+}
+
+.memberValueCell {
+ padding: 2px 0 2px 5px;
+ display: block;
+ overflow: hidden;
+}
+
+.memberValueCell.readOnly > SPAN {
+ opacity: 0.5;
+}
+
+.memberLabel {
+ cursor: default;
+ overflow: hidden;
+ padding-left: 18px;
+ white-space: nowrap;
+}
+
+.memberLabelPrefix {
+ color: gray;
+ margin-right: 3px;
+ font-weight: normal;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/* Breakpoints */
+
+/* In order to set memberRowHeader's height to 100%, memberRow and
+ * memberHeaderCell (parents) has to also be set to height: 100%,
+ * otherwise it wouldn't work */
+.memberHeaderCell {
+ height: 100%;
+}
+
+.memberRow {
+ height: 100%;
+ border: 1px solid transparent; /* see issue 5769 */
+}
+
+.memberRowHeader {
+ position: relative;
+ cursor: pointer;
+ display: none;
+ height: 100%;
+}
+
+/* Show breakpoints bar only in the DOM panel (and DOM side panel) so far */
+.panelNode-dom .memberRowHeader,
+.panelNode-domSide .memberRowHeader {
+ display: block;
+}
+
+/* Display brekpoint disc */
+.memberRow .memberRowHeader {
+ background-position: 5px 4px;
+}
+
+.memberRow[breakpoint="true"] .memberRowHeader {
+ background-image: url(chrome://firebug/skin/breakpoint.png);
+}
+
+.memberRow[breakpoint="true"][disabledBreakpoint="true"] .memberRowHeader {
+ background-image: none;
+}
+
+.memberRow[breakpoint="true"][disabledBreakpoint="true"] .memberRowHeader::before {
+ content: "";
+ position: absolute;
+ top: 4px;
+ left: 5px;
+ width: 12px;
+ height: 12px;
+ background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
+ opacity: 0.5;
+}
+
+.memberRow[breakable="true"]:hover .memberRowHeader {
+ background-color: #F6F6F6;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.memberRow.hasChildren > .memberLabelCell > .memberLabel:hover,
+.memberRow.cropped > .memberLabelCell > .memberLabel:hover {
+ cursor: pointer;
+ color: blue;
+ text-decoration: underline;
+}
+
+.panelNode-dom .memberRow:hover {
+ background-color: #EFEFEF;
+}
+
+.panelNode-dom .memberRow td {
+ border-bottom: 1px solid #EFEFEF;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.userLabel,
+.userClassLabel,
+.userFunctionLabel {
+ font-weight: bold;
+}
+
+.userLabel {
+ color: #000000;
+}
+
+.userClassLabel {
+ color: #E90000;
+}
+
+.userFunctionLabel {
+ color: #025E2A;
+}
+
+.domLabel {
+ color: #000000;
+}
+
+.domClassLabel {
+ color: #E90000;
+}
+
+.domFunctionLabel {
+ color: #025E2A;
+}
+
+.ordinalLabel {
+ color: SlateBlue;
+ font-weight: bold;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.scopesRow {
+ padding: 2px 18px;
+ background-color: LightYellow;
+ color: #666666;
+}
+
+.scopesRow td {
+ border-top: 1px solid #BEBEBE;
+}
+
+.scopesLabel {
+ background-color: LightYellow;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.watchEditCell {
+ padding: 2px 18px;
+ background-color: LightYellow;
+ border-bottom: 1px solid #BEBEBE;
+ color: #666666;
+ line-height: 14px;
+ cursor: text;
+}
+
+.editor-watchNewRow,
+.editor-memberRow {
+ font-family: monospace !important;
+}
+
+.editor-memberRow {
+ padding: 1px 0 !important;
+}
+
+.editor-watchRow {
+ padding-bottom: 0 !important;
+}
+
+.watchRow > .memberLabelCell {
+ font-family: monospace;
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+.watchRow > .memberLabelCell > .memberLabel {
+ background-color: transparent;
+}
+
+.watchRow > .memberValueCell {
+ padding-top: 2px;
+ padding-bottom: 2px;
+}
+
+.watchRow > .memberLabelCell,
+.watchRow > .memberValueCell {
+ background-color: #F5F5F5;
+ border-bottom: 1px solid #BEBEBE;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.watchToolbox {
+ z-index: 2147483647;
+ position: absolute;
+ right: 0;
+ padding: 1px 2px;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.domTable .objectBox-errorMessage {
+ padding: 0 0 0 18px;
+ background: url(chrome://firebug/skin/errorSmall.png) no-repeat 0 0;
+ color: red;
+}
+
+.domTable .objectBox-errorMessage .errorTitle {
+ display: inline;
+}
diff --git a/skin/classic/firebug.css b/skin/classic/firebug.css
index ae5dc76..e6d75c5 100644
--- a/skin/classic/firebug.css
+++ b/skin/classic/firebug.css
@@ -1,572 +1,577 @@
-/* See license.txt for terms of usage */
-
-/*************************************************************************************************/
-/* overrides to revert personas. see http://code.google.com/p/fbug/issues/detail?id=2704 */
-/* TODO is this still needed ? /
-#fbContentBox:-moz-lwtheme {
- background-color: -moz-dialog;
- color: -moz-dialogtext;
-}
-
-#fbContentBox:-moz-lwtheme toolbox {
- -moz-appearance: toolbox;
-}
-
-#fbContentBox:-moz-lwtheme toolbar {
- -moz-appearance: toolbar;
-}
-
-/* end overrides */
-
-/*************************************************************************************************/
-
-#fbInspectButton {
- margin-bottom: 1px;
- padding: 0px;
- opacity: 0.8;
-
- /* The default styling does not always keep button size content or image
- position constant, e.g. when [checked="true"]. These numbers were
- chosen to keep them constant against the default winstripe styling. */
- padding-top: 4px;
- padding-bottom: 2px;
- -moz-padding-start: 4px;
- -moz-padding-end: 2px;
-}
-
-#fbBreakOnNextButton {
- margin-bottom: 1px;
- opacity: 0.8;
- padding-right: 2px;
- padding-left: 2px;
- /* The default styling does not always keep button size contant or image
- position constant, e.g. when [checked="true"]. These numbers were
- chosen to keep them constant against the default winstripe styling. */
- padding-top: 4px;
- padding-bottom: 2px;
- -moz-padding-start: 4px;
- -moz-padding-end: 2px;
-}
-
-/*************************************************************************************************/
-/* Command Line */
-
-#fbCommandArrow {
- margin: 2px 0 2px 7px;
- font-family: monospace;
- color: #0000FF;
-}
-
-.fbCommandLine {
- -moz-appearance: none;
- margin: 2px 0 0 0;
- padding: 0 4px;
- border: none;
- font-family: monospace;
- font-size: 12px;
- direction: ltr;
- width: 100%;
- background: none repeat scroll 0% 0% transparent;
- position: relative;
- z-index: 3;
-}
-
-#fbCommandLineMeasurer {
- margin: 0;
- padding: 0;
- border: none;
- position: absolute;
- z-index: -1;
- visibility: hidden;
- width: auto;
-}
-
-#fbCommandEditor {
- margin: 0;
- font-family: monospace;
- direction: ltr;
-}
-
-#fbCommandLine > .textbox-input-box > .textbox-textarea {
- overflow: hidden;
-}
-
-.fbCommandHtmlBox {
- position: relative;
- margin-right: 7px;
-}
-
-.fbCommandHtmlBox .background {
- position: relative;
- background: none repeat scroll 0% 0% transparent;
-}
-
-#fbCommandLineCompletion {
- position: absolute;
- z-index: 1;
- color: #A0A0A0;
- bottom: 0;
- pointer-events: none;
-}
-
-.fbCommandHtmlBox .offScreen {
- position: absolute;
- top: -900px;
- left: -9000px;
- max-width: 3000px;
- overflow: hidden;
- width: auto;
-}
-
-/*************************************************************************************************/
-/* Toolbar */
-
-#fbToolbar {
- padding-left: 4px;
-}
-
-#fbToolbarInner {
- overflow: hidden;
-}
-
-/*************************************************************************************************/
-/* Search Box */
-
-#fbSearchBox {
- margin-left: 0;
- margin-right: 6px;
- min-width: 100px;
-}
-
-.fbsearch-textbox[status="notfound"] {
- background-color: #FF6666 !important;
- color: #FFFFFF;
-}
-
-.fbsearch-textbox[status="wraparound"] {
- background-image: url(chrome://global/skin/icons/wrap.png);
- background-position: calc(100% - 5px) center;
- background-repeat: no-repeat;
-}
-
-.fbsearch-textbox {
- -moz-appearance: none;
- margin: 0 0px 1px 2px;
- border: 1px solid;
- border-radius: 5px; /* Matched to the a11y outline impl */
- -moz-border-top-colors: #96969D;
- -moz-border-right-colors: #96969D;
- -moz-border-bottom-colors: #96969D;
- -moz-border-left-colors: #96969D;
- font: message-box;
- font-size: 11px;
- font-size-adjust: inherit;
- direction: ltr;
-}
-
-.fbsearch-icon {
- cursor: default!important;
- background: url(chrome://firebug/skin/search.png) no-repeat 0 0;
- width: 16px;
- height: 16px;
-}
-
-/* Need to use images instead of filters due to https://bugzil.la/891777 */
-.fbsearch-icon:hover {
- background-image: url(chrome://firebug/skin/searchHovered.png);
-}
-
-.fbsearch-textbox[active-search="true"] > .fbsearch-icon {
- background-image: url(chrome://firebug/skin/searchClose.png);
-}
-
-.fbsearch-textbox[active-search="true"] > .fbsearch-icon:hover {
- background-position: 0 -16px;
-}
-
-.fbsearch-textbox[active-search="true"] > .fbsearch-icon:active {
- background-position: 0 -32px;
-}
-
-#fbSearchOptionsPanel {
-
-}
-
-.fbsearch-options-label {
-
-}
-
-.fbsearch-options-buttons {
-
-}
-
-textbox[type="fbSearchBox"] > panel {
- /* This prevents the drop shadow from appearing See nsLayoutUtils::GetFrameTransparency*/
- border-radius: 1px;
-}
-
-.fbSearchBox-attention textbox {
- color: red;
- font-weight: bold;
-}
-
-.fbsearch-splitter {
- min-width: 6px;
- -moz-margin-start: -3px;
- border: medium none;
- background: none repeat scroll 0% 0% transparent;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-/* Case sensitive/insensitive search */
-
-#fbSearchBoxIsSensitive {
- display: none;
-}
-
-.fbSearchBox-autoSensitive #fbSearchBoxIsSensitive {
- display: block;
-}
-
-.fbSearchBox-autoSensitive #fbSearchBoxIsNotSensitive {
- display: none;
-}
-
-/*************************************************************************************************/
-
-#fbCommandBox {
- border-top: 1px solid #CCCCCC;
- background-color: -moz-field;
- color: -moz-fieldtext;
-}
-
-/*************************************************************************************************/
-
-.toolbar-image-button {
-}
-
-.toolbar-image-button > .toolbarbutton-icon {
-}
-
-.toolbar-image-button > .toolbarbutton-text {
-}
-
-.fbURLMenuItem { /* let file names be as long as need be */
- max-width: none;
-}
-
-.fbNoDomain,
-.fbInlineItem {
- font-style: italic;
-}
-
-/************************************************************************************************/
-/* Firebug toolbar buttons */
-
-#fbInspectButton {
- list-style-image: url(chrome://firebug/skin/inspect.png);
- -moz-image-region: rect(0, 16px, 16px, 0);
-}
-
-#fbInspectButton:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0);
-}
-
-/*************************************************************************************************/
-/* Debugger buttons */
-
-#fbDebuggerButtons {
- margin-right: 2px;
-}
-
-#fbRerunButton {
- list-style-image: url(chrome://firebug/skin/rerun.png);
- -moz-image-region: rect(0px, 16px, 16px, 0px);
-}
-
-/* Need to use images instead of filters due to https://bugzil.la/886883 */
-#fbRerunButton:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0px);
-}
-
-#fbRerunButton[disabled=true] {
- -moz-image-region: rect(32px, 16px, 48px, 0px);
-}
-
-#fbContinueButton {
- list-style-image: url(chrome://firebug/skin/continue.png);
- -moz-image-region: rect(0px, 16px, 16px, 0px);
-}
-
-#fbContinueButton:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0px);
-}
-
-#fbContinueButton[disabled=true] {
- -moz-image-region: rect(32px, 16px, 48px, 0px);
-}
-
-#fbStepOverButton {
- list-style-image: url(chrome://firebug/skin/stepOver.png);
- -moz-image-region: rect(0px, 16px, 16px, 0px);
-}
-
-#fbStepOverButton:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0px);
-}
-
-#fbStepOverButton[disabled=true] {
- -moz-image-region: rect(32px, 16px, 48px, 0px);
-}
-
-#fbStepIntoButton {
- list-style-image: url(chrome://firebug/skin/stepInto.png);
- -moz-image-region: rect(0px, 16px, 16px, 0px);
-}
-
-#fbStepIntoButton:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0px);
-}
-
-#fbStepIntoButton[disabled=true] {
- -moz-image-region: rect(32px, 16px, 48px, 0px);
-}
-
-#fbStepOutButton {
- list-style-image: url(chrome://firebug/skin/stepOut.png);
- -moz-image-region: rect(0px, 16px, 16px, 0px);
-}
-
-#fbStepOutButton:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0px);
-}
-
-#fbStepOutButton[disabled=true] {
- -moz-image-region: rect(32px, 16px, 48px, 0px);
-}
-
-/*************************************************************************************************/
-/* Script history buttons */
-
-#fbNavigateBackButton,
-#fbNavigateForwardButton,
-.navigationHistoryMenuItemForward,
-.navigationHistoryMenuItemBack {
- -moz-image-region: rect(0, 16px, 16px, 0);
-}
-
-#fbNavigateBackButton:-moz-locale-dir(ltr),
-#fbNavigateForwardButton:-moz-locale-dir(rtl),
-.navigationHistoryMenuItemBack:-moz-locale-dir(ltr),
-.navigationHistoryMenuItemForward:-moz-locale-dir(rtl) {
- list-style-image: url(chrome://firebug/skin/navigationBack.png);
- -moz-image-region: rect(0px, 16px, 16px, 0px);
-}
-
-#fbNavigateForwardButton:-moz-locale-dir(ltr),
-#fbNavigateBackButton:-moz-locale-dir(rtl),
-.navigationHistoryMenuItemForward:-moz-locale-dir(ltr),
-.navigationHistoryMenuItemBack:-moz-locale-dir(rtl) {
- list-style-image: url(chrome://firebug/skin/navigationForward.png);
- -moz-image-region: rect(0px, 16px, 16px, 0px);
-}
-
-#fbNavigateBackButton:hover,
-#fbNavigateForwardButton:hover,
-.navigationHistoryMenuItemBack:hover,
-.navigationHistoryMenuItemForward:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0px);
-}
-
-#fbNavigateBackButton[disabled="true"],
-#fbNavigateForwardButton[disabled="true"] {
- -moz-image-region: rect(32px, 16px, 48px, 0px);
-}
-
-.navigationHistoryMenuItemCurrent {
- font-weight: bold;
-}
-
-/*************************************************************************************************/
-
-#fbCommandPopupButton {
- list-style-image: url(chrome://firebug/skin/commandLinePopup.svg);
-}
-
-#fbCommandPopupButton[disabled="true"] {
- filter: url(resource://firebugui/filters.svg#brightenedGrayscale);
-}
-
-/************************************************************************************************/
-/* Command History panel */
-
-#fbCommandHistory {
- min-width: 200px;
- max-height: 400px;
- cursor: default;
- font-family: monospace;
- white-space: pre;
- -moz-appearance: none;
- background-color: -moz-dialog;
-}
-
-.commandHistoryItem.selected {
- background-color: highlight;
- color: highlighttext;
-}
-
-/*************************************************************************************************/
-
-#fbBreakOnErrors {
- list-style-image: url(chrome://firebug/skin/breakErrors.png);
-}
-
-#fbBreakOnErrors[checked="true"] {
- list-style-image: url(chrome://firebug/skin/breakErrorsOn.png);
-}
-
-/*************************************************************************************************/
-
-/* default is disabled */
-.fbBreakOnImage {
- visibility: hidden;
- padding-right: 2px;
-}
-
-/* images */
-#fbBreakOnNextButton #fbBreakOnImage {
- list-style-image: url(chrome://firebug/skin/breakOn.png);
- -moz-image-region: rect(0px, 16px, 16px, 0px);
- visibility: visible;
-}
-
-#fbBreakOnNextButton[breakable="true"]:hover #fbBreakOnImage {
- -moz-image-region: rect(16px, 16px, 32px, 0px);
-}
-
-#fbBreakOnNextButton #fbBreakOnImageArmed {
- list-style-image: url(chrome://firebug/skin/breakOnArmed.png);
-}
-
-/* disabled */
-#fbBreakOnNextButton[breakable="disabled"] #fbBreakOnImage {
- -moz-image-region: rect(32px, 16px, 48px, 0px);
-}
-
-/* enabled */
-#fbBreakOnNextButton[breakable="true"] #fbBreakOnImage {
- visibility: visible;
-}
-
-/* enabled, armed */
-#fbBreakOnNextButton[breakable="false"] #fbBreakOnImageArmed {
- visibility: visible;
-}
-
-/* panel badges */
-#fbBreakOnNextButton[panelName="script"] #fbBreakOnImageNext {
- visibility: visible;
- list-style-image: url(chrome://firebug/skin/breakOn/breakOnNext.png);
-}
-
-#fbBreakOnNextButton[panelName="net"] #fbBreakOnImageXHR {
- visibility: visible;
- list-style-image: url(chrome://firebug/skin/breakOn/breakOnXHR.png);
-}
-
-#fbBreakOnNextButton[panelName="console"] #fbBreakOnImageError {
- visibility: visible;
- list-style-image: url(chrome://firebug/skin/breakOn/breakOnError.png);
-}
-
-#fbBreakOnNextButton[panelName="html"] #fbBreakOnImageMutate {
- visibility: visible;
- list-style-image: url(chrome://firebug/skin/breakOn/breakOnMutate.png);
-}
-
-/*************************************************************************************************/
-
-#fbMigrator {
- border: 2px solid #FF9933;
- -moz-border-top-colors: #FF9933;
- -moz-border-bottom-colors: #FF9933;
- -moz-border-left-colors: #FF9933;
- -moz-border-right-colors: #FF9933;
- background-color: transparent;
- opacity: 1.0;
- padding-bottom: 5px;
-}
-
-#fbMigrationOk {
- font-family: monospace;
- font-size: 14px;
- color: #FF9933;
- font-weight: bold;
-}
-
-/*************************************************************************************************/
-/* Scrollable TabBar + TabList */
-
-/* Collision with CuteButtons - Crystal SVG 0.2.5, see 3374 */
-#fbNetPersist {
- -moz-image-region: rect(0, 1px, 1px, 0);
-}
-
-/*************************************************************************************************/
-/* Toggle Side Panels */
-
-#fbToggleSidePanels {
- list-style-image: url(chrome://firebug/skin/collapseSidePanels.png);
- -moz-image-region: rect(0, 16px, 16px, 0);
-}
-
-#fbToggleSidePanels:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0);
-}
-
-#fbToggleSidePanels:active {
- -moz-image-region: rect(32px, 16px, 48px, 0);
-}
-
-#fbToggleSidePanels.closed {
- list-style-image: url(chrome://firebug/skin/expandSidePanels.png);
- -moz-image-region: rect(0, 16px, 16px, 0);
-}
-
-#fbToggleSidePanels.closed:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0);
-}
-
-#fbToggleSidePanels.closed:active {
- -moz-image-region: rect(32px, 16px, 48px, 0);
-}
-
-#fbPanelPane:not([orient="vertical"]) #fbToggleSidePanels {
- margin-right: 2px;
-}
-
-#fbPanelPane[orient="vertical"] #fbToggleSidePanels {
- list-style-image: url(chrome://firebug/skin/collapseSidePanelsVertical.png);
- -moz-image-region: rect(0, 16px, 16px, 0);
-}
-
-#fbPanelPane[orient="vertical"] #fbToggleSidePanels:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0);
-}
-
-#fbPanelPane[orient="vertical"] #fbToggleSidePanels:active {
- -moz-image-region: rect(32px, 16px, 48px, 0);
-}
-
-#fbPanelPane[orient="vertical"] #fbToggleSidePanels.closed {
- list-style-image: url(chrome://firebug/skin/expandSidePanelsVertical.png);
- -moz-image-region: rect(0, 16px, 16px, 0);
-}
-
-#fbPanelPane[orient="vertical"] #fbToggleSidePanels.closed:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0);
-}
-
-#fbPanelPane[orient="vertical"] #fbToggleSidePanels.closed:active {
- -moz-image-region: rect(32px, 16px, 48px, 0);
-}
+/* See license.txt for terms of usage */
+
+/*************************************************************************************************/
+/* overrides to revert personas. see http://code.google.com/p/fbug/issues/detail?id=2704 */
+/* TODO is this still needed ? /
+#fbContentBox:-moz-lwtheme {
+ background-color: -moz-dialog;
+ color: -moz-dialogtext;
+}
+
+#fbContentBox:-moz-lwtheme toolbox {
+ -moz-appearance: toolbox;
+}
+
+#fbContentBox:-moz-lwtheme toolbar {
+ -moz-appearance: toolbar;
+}
+
+/* end overrides */
+
+/*************************************************************************************************/
+
+#fbInspectButton {
+ margin-bottom: 1px;
+ padding: 0px;
+ opacity: 0.8;
+
+ /* The default styling does not always keep button size content or image
+ position constant, e.g. when [checked="true"]. These numbers were
+ chosen to keep them constant against the default winstripe styling. */
+ padding-top: 4px;
+ padding-bottom: 2px;
+ -moz-padding-start: 4px;
+ -moz-padding-end: 2px;
+}
+
+#fbBreakOnNextButton {
+ margin-bottom: 1px;
+ opacity: 0.8;
+ padding-right: 2px;
+ padding-left: 2px;
+ /* The default styling does not always keep button size contant or image
+ position constant, e.g. when [checked="true"]. These numbers were
+ chosen to keep them constant against the default winstripe styling. */
+ padding-top: 4px;
+ padding-bottom: 2px;
+ -moz-padding-start: 4px;
+ -moz-padding-end: 2px;
+}
+
+/*************************************************************************************************/
+/* Command Line */
+
+#fbCommandArrow {
+ margin: 2px 0 2px 7px;
+ font-family: monospace;
+ color: #0000FF;
+}
+
+.fbCommandLine {
+ -moz-appearance: none;
+ margin: 2px 0 0 0;
+ padding: 0 4px;
+ border: none;
+ font-family: monospace;
+ font-size: 12px;
+ direction: ltr;
+ width: 100%;
+ background: none repeat scroll 0% 0% transparent;
+ position: relative;
+ z-index: 3;
+}
+
+#fbCommandLineMeasurer {
+ margin: 0;
+ padding: 0;
+ border: none;
+ position: absolute;
+ z-index: -1;
+ visibility: hidden;
+ width: auto;
+}
+
+#fbCommandEditor {
+ margin: 0;
+ font-family: monospace;
+ direction: ltr;
+}
+
+#fbCommandLine > .textbox-input-box > .textbox-textarea {
+ overflow: hidden;
+}
+
+.fbCommandHtmlBox {
+ position: relative;
+ margin-right: 7px;
+}
+
+.fbCommandHtmlBox .background {
+ position: relative;
+ background: none repeat scroll 0% 0% transparent;
+}
+
+#fbCommandLineCompletion {
+ position: absolute;
+ z-index: 1;
+ color: #A0A0A0;
+ bottom: 0;
+ pointer-events: none;
+}
+
+.fbCommandHtmlBox .offScreen {
+ position: absolute;
+ top: -900px;
+ left: -9000px;
+ max-width: 3000px;
+ overflow: hidden;
+ width: auto;
+}
+
+/*************************************************************************************************/
+/* Toolbar */
+
+#fbToolbar {
+ padding-left: 4px;
+}
+
+#fbToolbarInner {
+ overflow: hidden;
+}
+
+/*************************************************************************************************/
+/* Search Box */
+
+#fbSearchBox {
+ margin-left: 0;
+ margin-right: 6px;
+ min-width: 100px;
+}
+
+.fbsearch-textbox[status="notfound"] {
+ background-color: #FF6666 !important;
+ color: #FFFFFF;
+}
+
+.fbsearch-textbox[status="wraparound"] {
+ background-image: url(chrome://global/skin/icons/wrap.png);
+ background-position: calc(100% - 5px) center;
+ background-repeat: no-repeat;
+}
+
+.fbsearch-textbox {
+ -moz-appearance: none;
+ margin: 0 0px 1px 2px;
+ border: 1px solid;
+ border-radius: 5px; /* Matched to the a11y outline impl */
+ -moz-border-top-colors: #96969D;
+ -moz-border-right-colors: #96969D;
+ -moz-border-bottom-colors: #96969D;
+ -moz-border-left-colors: #96969D;
+ font: message-box;
+ font-size: 11px;
+ font-size-adjust: inherit;
+ direction: ltr;
+}
+
+.fbsearch-icon {
+ cursor: default!important;
+ background: url(chrome://firebug/skin/search.png) no-repeat 0 0;
+ width: 16px;
+ height: 16px;
+}
+
+/* Need to use images instead of filters due to https://bugzil.la/891777 */
+.fbsearch-icon:hover {
+ background-image: url(chrome://firebug/skin/searchHovered.png);
+}
+
+.fbsearch-textbox[active-search="true"] > .fbsearch-icon {
+ background-image: url(chrome://firebug/skin/searchClose.png);
+}
+
+.fbsearch-textbox[active-search="true"] > .fbsearch-icon:hover {
+ background-position: 0 -16px;
+}
+
+.fbsearch-textbox[active-search="true"] > .fbsearch-icon:active {
+ background-position: 0 -32px;
+}
+
+#fbSearchOptionsPanel {
+
+}
+
+.fbsearch-options-label {
+
+}
+
+.fbsearch-options-buttons {
+
+}
+
+textbox[type="fbSearchBox"] > panel {
+ /* This prevents the drop shadow from appearing See nsLayoutUtils::GetFrameTransparency*/
+ border-radius: 1px;
+}
+
+.fbSearchBox-attention textbox {
+ color: red;
+ font-weight: bold;
+}
+
+.fbsearch-splitter {
+ min-width: 6px;
+ -moz-margin-start: -3px;
+ border: medium none;
+ background: none repeat scroll 0% 0% transparent;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/* Case sensitive/insensitive search */
+
+#fbSearchBoxIsSensitive {
+ display: none;
+}
+
+.fbSearchBox-autoSensitive #fbSearchBoxIsSensitive {
+ display: block;
+}
+
+.fbSearchBox-autoSensitive #fbSearchBoxIsNotSensitive {
+ display: none;
+}
+
+/*************************************************************************************************/
+
+#fbCommandBox {
+ border-top: 1px solid #CCCCCC;
+ background-color: -moz-field;
+ color: -moz-fieldtext;
+}
+
+/*************************************************************************************************/
+
+.toolbar-image-button {
+}
+
+.toolbar-image-button > .toolbarbutton-icon {
+}
+
+.toolbar-image-button > .toolbarbutton-text {
+}
+
+.fbURLMenuItem { /* let file names be as long as need be */
+ max-width: none;
+}
+
+.fbNoDomain,
+.fbInlineItem {
+ font-style: italic;
+}
+
+/************************************************************************************************/
+/* Firebug toolbar buttons */
+
+#fbInspectButton {
+ list-style-image: url(chrome://firebug/skin/inspect.png);
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#fbInspectButton:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0);
+}
+
+/*************************************************************************************************/
+/* Debugger buttons */
+
+#fbDebuggerButtons {
+ margin-right: 2px;
+}
+
+#fbRerunButton {
+ list-style-image: url(chrome://firebug/skin/rerun.png);
+ -moz-image-region: rect(0px, 16px, 16px, 0px);
+}
+
+/* Need to use images instead of filters due to https://bugzil.la/886883 */
+#fbRerunButton:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0px);
+}
+
+#fbRerunButton[disabled=true] {
+ -moz-image-region: rect(32px, 16px, 48px, 0px);
+}
+
+#fbContinueButton {
+ list-style-image: url(chrome://firebug/skin/continue.png);
+ -moz-image-region: rect(0px, 16px, 16px, 0px);
+}
+
+#fbContinueButton:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0px);
+}
+
+#fbContinueButton[disabled=true] {
+ -moz-image-region: rect(32px, 16px, 48px, 0px);
+}
+
+#fbStepOverButton {
+ list-style-image: url(chrome://firebug/skin/stepOver.png);
+ -moz-image-region: rect(0px, 16px, 16px, 0px);
+}
+
+#fbStepOverButton:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0px);
+}
+
+#fbStepOverButton[disabled=true] {
+ -moz-image-region: rect(32px, 16px, 48px, 0px);
+}
+
+#fbStepIntoButton {
+ list-style-image: url(chrome://firebug/skin/stepInto.png);
+ -moz-image-region: rect(0px, 16px, 16px, 0px);
+}
+
+#fbStepIntoButton:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0px);
+}
+
+#fbStepIntoButton[disabled=true] {
+ -moz-image-region: rect(32px, 16px, 48px, 0px);
+}
+
+#fbStepOutButton {
+ list-style-image: url(chrome://firebug/skin/stepOut.png);
+ -moz-image-region: rect(0px, 16px, 16px, 0px);
+}
+
+#fbStepOutButton:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0px);
+}
+
+#fbStepOutButton[disabled=true] {
+ -moz-image-region: rect(32px, 16px, 48px, 0px);
+}
+
+/*************************************************************************************************/
+/* Script history buttons */
+
+#fbNavigateBackButton,
+#fbNavigateForwardButton,
+.navigationHistoryMenuItemForward,
+.navigationHistoryMenuItemBack {
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#fbNavigateBackButton:-moz-locale-dir(ltr),
+#fbNavigateForwardButton:-moz-locale-dir(rtl),
+.navigationHistoryMenuItemBack:-moz-locale-dir(ltr),
+.navigationHistoryMenuItemForward:-moz-locale-dir(rtl) {
+ list-style-image: url(chrome://firebug/skin/navigationBack.png);
+ -moz-image-region: rect(0px, 16px, 16px, 0px);
+}
+
+#fbNavigateForwardButton:-moz-locale-dir(ltr),
+#fbNavigateBackButton:-moz-locale-dir(rtl),
+.navigationHistoryMenuItemForward:-moz-locale-dir(ltr),
+.navigationHistoryMenuItemBack:-moz-locale-dir(rtl) {
+ list-style-image: url(chrome://firebug/skin/navigationForward.png);
+ -moz-image-region: rect(0px, 16px, 16px, 0px);
+}
+
+#fbNavigateBackButton:hover,
+#fbNavigateForwardButton:hover,
+.navigationHistoryMenuItemBack:hover,
+.navigationHistoryMenuItemForward:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0px);
+}
+
+#fbNavigateBackButton[disabled="true"],
+#fbNavigateForwardButton[disabled="true"] {
+ -moz-image-region: rect(32px, 16px, 48px, 0px);
+}
+
+.navigationHistoryMenuItemCurrent {
+ font-weight: bold;
+}
+
+/*************************************************************************************************/
+
+#fbCommandPopupButton {
+ list-style-image: url(chrome://firebug/skin/commandLinePopup.png);
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#fbCommandPopupButton:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0);
+}
+
+#fbCommandPopupButton[disabled="true"] {
+ -moz-image-region: rect(32px, 16px, 48px, 0);
+}
+
+/************************************************************************************************/
+/* Command History panel */
+
+#fbCommandHistory {
+ min-width: 200px;
+ max-height: 400px;
+ cursor: default;
+ font-family: monospace;
+ white-space: pre;
+ -moz-appearance: none;
+ background-color: -moz-dialog;
+}
+
+.commandHistoryItem.selected {
+ background-color: highlight;
+ color: highlighttext;
+}
+
+/*************************************************************************************************/
+
+#fbBreakOnErrors {
+ list-style-image: url(chrome://firebug/skin/breakErrors.png);
+}
+
+#fbBreakOnErrors[checked="true"] {
+ list-style-image: url(chrome://firebug/skin/breakErrorsOn.png);
+}
+
+/*************************************************************************************************/
+
+/* default is disabled */
+.fbBreakOnImage {
+ visibility: hidden;
+ padding-right: 2px;
+}
+
+/* images */
+#fbBreakOnNextButton #fbBreakOnImage {
+ list-style-image: url(chrome://firebug/skin/breakOn.png);
+ -moz-image-region: rect(0px, 16px, 16px, 0px);
+ visibility: visible;
+}
+
+#fbBreakOnNextButton[breakable="true"]:hover #fbBreakOnImage {
+ -moz-image-region: rect(16px, 16px, 32px, 0px);
+}
+
+#fbBreakOnNextButton #fbBreakOnImageArmed {
+ list-style-image: url(chrome://firebug/skin/breakOnArmed.png);
+}
+
+/* disabled */
+#fbBreakOnNextButton[breakable="disabled"] #fbBreakOnImage {
+ -moz-image-region: rect(32px, 16px, 48px, 0px);
+}
+
+/* enabled */
+#fbBreakOnNextButton[breakable="true"] #fbBreakOnImage {
+ visibility: visible;
+}
+
+/* enabled, armed */
+#fbBreakOnNextButton[breakable="false"] #fbBreakOnImageArmed {
+ visibility: visible;
+}
+
+/* panel badges */
+#fbBreakOnNextButton[panelName="script"] #fbBreakOnImageNext {
+ visibility: visible;
+ list-style-image: url(chrome://firebug/skin/breakOn/breakOnNext.png);
+}
+
+#fbBreakOnNextButton[panelName="net"] #fbBreakOnImageXHR {
+ visibility: visible;
+ list-style-image: url(chrome://firebug/skin/breakOn/breakOnXHR.png);
+}
+
+#fbBreakOnNextButton[panelName="console"] #fbBreakOnImageError {
+ visibility: visible;
+ list-style-image: url(chrome://firebug/skin/breakOn/breakOnError.png);
+}
+
+#fbBreakOnNextButton[panelName="html"] #fbBreakOnImageMutate {
+ visibility: visible;
+ list-style-image: url(chrome://firebug/skin/breakOn/breakOnMutate.png);
+}
+
+/*************************************************************************************************/
+
+#fbMigrator {
+ border: 2px solid #FF9933;
+ -moz-border-top-colors: #FF9933;
+ -moz-border-bottom-colors: #FF9933;
+ -moz-border-left-colors: #FF9933;
+ -moz-border-right-colors: #FF9933;
+ background-color: transparent;
+ opacity: 1.0;
+ padding-bottom: 5px;
+}
+
+#fbMigrationOk {
+ font-family: monospace;
+ font-size: 14px;
+ color: #FF9933;
+ font-weight: bold;
+}
+
+/*************************************************************************************************/
+/* Scrollable TabBar + TabList */
+
+/* Collision with CuteButtons - Crystal SVG 0.2.5, see 3374 */
+#fbNetPersist {
+ -moz-image-region: rect(0, 1px, 1px, 0);
+}
+
+/*************************************************************************************************/
+/* Toggle Side Panels */
+
+#fbToggleSidePanels {
+ list-style-image: url(chrome://firebug/skin/collapseSidePanels.png);
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#fbToggleSidePanels:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0);
+}
+
+#fbToggleSidePanels:active {
+ -moz-image-region: rect(32px, 16px, 48px, 0);
+}
+
+#fbToggleSidePanels.closed {
+ list-style-image: url(chrome://firebug/skin/expandSidePanels.png);
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#fbToggleSidePanels.closed:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0);
+}
+
+#fbToggleSidePanels.closed:active {
+ -moz-image-region: rect(32px, 16px, 48px, 0);
+}
+
+#fbPanelPane:not([orient="vertical"]) #fbToggleSidePanels {
+ margin-right: 2px;
+}
+
+#fbPanelPane[orient="vertical"] #fbToggleSidePanels {
+ list-style-image: url(chrome://firebug/skin/collapseSidePanelsVertical.png);
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#fbPanelPane[orient="vertical"] #fbToggleSidePanels:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0);
+}
+
+#fbPanelPane[orient="vertical"] #fbToggleSidePanels:active {
+ -moz-image-region: rect(32px, 16px, 48px, 0);
+}
+
+#fbPanelPane[orient="vertical"] #fbToggleSidePanels.closed {
+ list-style-image: url(chrome://firebug/skin/expandSidePanelsVertical.png);
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#fbPanelPane[orient="vertical"] #fbToggleSidePanels.closed:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0);
+}
+
+#fbPanelPane[orient="vertical"] #fbToggleSidePanels.closed:active {
+ -moz-image-region: rect(32px, 16px, 48px, 0);
+}
diff --git a/skin/classic/fontViewer.css b/skin/classic/fontViewer.css
index 132c512..60f1b73 100644
--- a/skin/classic/fontViewer.css
+++ b/skin/classic/fontViewer.css
@@ -1,90 +1,90 @@
-.fontInfoGroup {
- margin-bottom: 4px;
- border-bottom: 1px solid #D7D7D7;
- padding-top: 8px;
- padding-bottom: 2px;
- font-family: Lucida Grande, Tahoma, sans-serif;
- font-weight: bold;
- color: #565656;
-}
-
-.fontInfoGroup:first-child {
- padding-top: 0;
-}
-
-.fontInfoToggleView {
- color: #bdbdbd;
- margin-left: 100px;
- font-weight: normal;
-}
-
-.fontInfoToggleView:hover {
- color: blue;
- cursor: pointer;
-}
-
-.fontInfoPropName {
- padding: 0 10px 0 0;
- font-family: Lucida Grande, Tahoma, sans-serif;
- font-weight: bold;
- vertical-align: top;
- text-align: right;
- white-space: nowrap;
-}
-
-.fontInfoPropValue {
- width: 100%;
-}
-
-.fontInfoLink {
- display: block;
-}
-
-.fontInfoCredits {
- margin: 0;
- padding: 0;
- list-style-type: none;
-}
-
-.fontInfoCreditsRole {
- color: #bdbdbd;
-}
-
-.fontInfoTranslatedInfo {
- margin-top: 3px;
-}
-
-.fontInfoLangTab {
- margin: 2px 1px;
- padding: 0 4px;
- font-family: Lucida Grande, Tahoma, sans-serif;
-}
-
-.fontInfoLangTab.selected {
- margin: 2px 0;
- border: 1px solid #bdbdbd;
- border-top-left-radius: 5px;
- border-top-right-radius: 5px;
- border-bottom-width: 0;
- background: #ffffff;
- color: #000000;
-}
-
-.fontViewerFontSize {
- font-family: Lucida Grande, Tahoma, sans-serif;
- font-weight: bold;
- font-size: 11px;
- margin-right: 5px;
-}
-
-.fontInfoPreview {
- font-size: 24pt;
-}
-
-.fontInfoPreview > div > p {
- margin: 3px;
-}
-
-.fontInfoPreviewCharacters {
- display: none;
+.fontInfoGroup {
+ margin-bottom: 4px;
+ border-bottom: 1px solid #D7D7D7;
+ padding-top: 8px;
+ padding-bottom: 2px;
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ font-weight: bold;
+ color: #565656;
+}
+
+.fontInfoGroup:first-child {
+ padding-top: 0;
+}
+
+.fontInfoToggleView {
+ color: #bdbdbd;
+ margin-left: 100px;
+ font-weight: normal;
+}
+
+.fontInfoToggleView:hover {
+ color: blue;
+ cursor: pointer;
+}
+
+.fontInfoPropName {
+ padding: 0 10px 0 0;
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ font-weight: bold;
+ vertical-align: top;
+ text-align: right;
+ white-space: nowrap;
+}
+
+.fontInfoPropValue {
+ width: 100%;
+}
+
+.fontInfoLink {
+ display: block;
+}
+
+.fontInfoCredits {
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+}
+
+.fontInfoCreditsRole {
+ color: #bdbdbd;
+}
+
+.fontInfoTranslatedInfo {
+ margin-top: 3px;
+}
+
+.fontInfoLangTab {
+ margin: 2px 1px;
+ padding: 0 4px;
+ font-family: Lucida Grande, Tahoma, sans-serif;
+}
+
+.fontInfoLangTab.selected {
+ margin: 2px 0;
+ border: 1px solid #bdbdbd;
+ border-top-left-radius: 5px;
+ border-top-right-radius: 5px;
+ border-bottom-width: 0;
+ background: #ffffff;
+ color: #000000;
+}
+
+.fontViewerFontSize {
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ font-weight: bold;
+ font-size: 11px;
+ margin-right: 5px;
+}
+
+.fontInfoPreview {
+ font-size: 24pt;
+}
+
+.fontInfoPreview > div > p {
+ margin: 3px;
+}
+
+.fontInfoPreviewCharacters {
+ display: none;
}
\ No newline at end of file
diff --git a/skin/classic/html.css b/skin/classic/html.css
index 003d2e7..56d732c 100644
--- a/skin/classic/html.css
+++ b/skin/classic/html.css
@@ -1,245 +1,245 @@
-/* See license.txt for terms of usage */
-
-.panelNode-html {
- -moz-box-sizing: padding-box;
- padding: 4px 0 0 2px;
- word-wrap: break-word;
-}
-
-.nodeBox {
- position: relative;
- font-family: monospace;
- padding-left: 13px;
- min-width: 42ch;
-}
-
-.nodeBox.search-selection {
- -moz-user-select: text;
-}
-
-.twisty {
- position: absolute;
- left: 0px;
- top: 0px;
- width: 14px;
- height: 1em;
- padding: 4px 0;
-}
-
-.nodeChildBox {
- margin-left: 12px;
- display: none;
-}
-
-.nodeLabel,
-.nodeCloseLabel {
- margin: -2px 2px 0 2px;
- border: 2px solid transparent;
- border-radius: 3px;
- padding: 0 2px;
- color: #000088;
-}
-
-.nodeCloseLabel {
- display: none;
-}
-
-.nodeTag {
- cursor: pointer;
- color: blue;
- word-wrap: normal;
-}
-
-.nodeValue {
- color: #FF0000;
- font-weight: normal;
-}
-
-.nodeText,
-.nodeComment {
- margin: 0 2px;
- vertical-align: top;
- unicode-bidi: embed;
-}
-
-.nodeText {
- color: #333333;
-}
-
-.documentNodeBox {
- padding-left: 0;
-}
-
-.documentNodeBox > .nodeChildBox {
- margin-left: 0;
-}
-
-.docType {
- font-family: monospace;
- padding-left: 5px;
- color: #787878;
- white-space: nowrap;
- font-style: italic;
-}
-
-.nodeWhiteSpace {
- border: 1px solid LightGray;
- white-space: pre; /* otherwise the border will be collapsed around zero pixels */
- margin-left: 1px;
- color: gray;
-}
-
-.nodeWhiteSpace_Space {
- border: 1px solid #ddd;
-}
-
-.nodeTextEntity {
- border: 1px solid gray;
- white-space: pre; /* otherwise the border will be collapsed around zero pixels */
- margin-left: 1px;
-}
-
-.nodeComment {
- color: DarkGreen;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.nodeBox.highlightOpen > .nodeLabel {
- background-color: #EEEEEE;
-}
-
-.nodeBox.highlightOpen > .nodeCloseLabel,
-.nodeBox.highlightOpen > .nodeChildBox,
-.nodeBox.open > .nodeCloseLabel,
-.nodeBox.open > .nodeChildBox {
- display: block;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.nodeBox.selected > .nodeLabel > .nodeLabelBox,
-.nodeBox.selected > .nodeLabel {
- background-color: Highlight;
- color: HighlightText !important;
-}
-
-.nodeBox.selected > .nodeLabel > .nodeLabelBox,
-.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeTag,
-.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
-.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText {
- color: inherit !important;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.nodeBox.highlighted > .nodeLabel {
- border-color: Highlight !important;
- background-color: #c4f4ff !important;
- color: #000000 !important;
-}
-
-.nodeBox.highlighted > .nodeLabel > .nodeLabelBox,
-.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeTag,
-.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
-.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeText {
- color: #000000 !important;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox,
-.nodeBox.nodeHidden .nodeCloseLabel,
-.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeText,
-.nodeBox.nodeHidden .nodeText {
- color: #888888;
-}
-
-.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeTag,
-.nodeBox.nodeHidden .nodeCloseLabel > .nodeCloseLabelBox > .nodeTag {
- color: #5F82D9;
-}
-
-.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue {
- color: #D86060;
-}
-
-.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox,
-.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeTag,
-.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
-.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeText,
-.nodeBox.nodeHidden .nodeBox.selected > .nodeLabel > .nodeLabelBox,
-.nodeBox.nodeHidden .nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeTag,
-.nodeBox.nodeHidden .nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
-.nodeBox.nodeHidden .nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText {
- color: SkyBlue !important;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.nodeBox.mutated > .nodeLabel,
-.nodeAttr.mutated,
-.nodeValue.mutated,
-.nodeText.mutated,
-.nodeBox.mutated > .nodeText {
- background-color: #EFFF79;
- color: #FF0000 !important;
-}
-
-.nodeBox.selected.mutated > .nodeLabel,
-.nodeBox.selected.mutated > .nodeLabel > .nodeLabelBox,
-.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr.mutated > .nodeValue,
-.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue.mutated,
-.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText.mutated {
- background-color: #EFFF79;
- border-color: #EFFF79;
- color: #FF0000 !important;
-}
-
-/************************************************************************************************/
-
-.logRow-dirxml {
- padding-left: 0;
-}
-
-.soloElement > .nodeBox {
- padding-left: 0;
-}
-
-.useA11y .nodeLabel.focused {
- outline: 2px solid #FF9933;
- -moz-outline-radius: 3px;
- outline-offset: -2px;
-}
-
-.useA11y .nodeLabelBox:focus {
- outline: none;
-}
-
-/************************************************************************************************/
-
-.breakpointCode .twisty {
- display: none;
-}
-
-.breakpointCode .nodeBox.containerNodeBox,
-.breakpointCode .nodeLabel {
- padding-left: 0px;
- margin-left: 0px;
- font-family: monospace !important;
-}
-
-.breakpointCode .nodeTag,
-.breakpointCode .nodeAttr,
-.breakpointCode .nodeText,
-.breakpointCode .nodeValue,
-.breakpointCode .nodeLabel {
- color: DarkGreen !important;
-}
-
-.breakpointMutationType {
- position: absolute;
- top: 4px;
- right: 20px;
- color: gray;
-}
+/* See license.txt for terms of usage */
+
+.panelNode-html {
+ -moz-box-sizing: padding-box;
+ padding: 4px 0 0 2px;
+ word-wrap: break-word;
+}
+
+.nodeBox {
+ position: relative;
+ font-family: monospace;
+ padding-left: 13px;
+ min-width: 42ch;
+}
+
+.nodeBox.search-selection {
+ -moz-user-select: text;
+}
+
+.twisty {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ width: 14px;
+ height: 1em;
+ padding: 4px 0;
+}
+
+.nodeChildBox {
+ margin-left: 12px;
+ display: none;
+}
+
+.nodeLabel,
+.nodeCloseLabel {
+ margin: -2px 2px 0 2px;
+ border: 2px solid transparent;
+ border-radius: 3px;
+ padding: 0 2px;
+ color: #000088;
+}
+
+.nodeCloseLabel {
+ display: none;
+}
+
+.nodeTag {
+ cursor: pointer;
+ color: blue;
+ word-wrap: normal;
+}
+
+.nodeValue {
+ color: #FF0000;
+ font-weight: normal;
+}
+
+.nodeText,
+.nodeComment {
+ margin: 0 2px;
+ vertical-align: top;
+ unicode-bidi: embed;
+}
+
+.nodeText {
+ color: #333333;
+}
+
+.documentNodeBox {
+ padding-left: 0;
+}
+
+.documentNodeBox > .nodeChildBox {
+ margin-left: 0;
+}
+
+.docType {
+ font-family: monospace;
+ padding-left: 5px;
+ color: #787878;
+ white-space: nowrap;
+ font-style: italic;
+}
+
+.nodeWhiteSpace {
+ border: 1px solid LightGray;
+ white-space: pre; /* otherwise the border will be collapsed around zero pixels */
+ margin-left: 1px;
+ color: gray;
+}
+
+.nodeWhiteSpace_Space {
+ border: 1px solid #ddd;
+}
+
+.nodeTextEntity {
+ border: 1px solid gray;
+ white-space: pre; /* otherwise the border will be collapsed around zero pixels */
+ margin-left: 1px;
+}
+
+.nodeComment {
+ color: DarkGreen;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.nodeBox.highlightOpen > .nodeLabel {
+ background-color: #EEEEEE;
+}
+
+.nodeBox.highlightOpen > .nodeCloseLabel,
+.nodeBox.highlightOpen > .nodeChildBox,
+.nodeBox.open > .nodeCloseLabel,
+.nodeBox.open > .nodeChildBox {
+ display: block;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.nodeBox.selected > .nodeLabel > .nodeLabelBox,
+.nodeBox.selected > .nodeLabel {
+ background-color: Highlight;
+ color: HighlightText !important;
+}
+
+.nodeBox.selected > .nodeLabel > .nodeLabelBox,
+.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeTag,
+.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
+.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText {
+ color: inherit !important;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.nodeBox.highlighted > .nodeLabel {
+ border-color: Highlight !important;
+ background-color: #c4f4ff !important;
+ color: #000000 !important;
+}
+
+.nodeBox.highlighted > .nodeLabel > .nodeLabelBox,
+.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeTag,
+.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
+.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeText {
+ color: #000000 !important;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox,
+.nodeBox.nodeHidden .nodeCloseLabel,
+.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeText,
+.nodeBox.nodeHidden .nodeText {
+ color: #888888;
+}
+
+.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeTag,
+.nodeBox.nodeHidden .nodeCloseLabel > .nodeCloseLabelBox > .nodeTag {
+ color: #5F82D9;
+}
+
+.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue {
+ color: #D86060;
+}
+
+.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox,
+.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeTag,
+.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
+.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeText,
+.nodeBox.nodeHidden .nodeBox.selected > .nodeLabel > .nodeLabelBox,
+.nodeBox.nodeHidden .nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeTag,
+.nodeBox.nodeHidden .nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
+.nodeBox.nodeHidden .nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText {
+ color: SkyBlue !important;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.nodeBox.mutated > .nodeLabel,
+.nodeAttr.mutated,
+.nodeValue.mutated,
+.nodeText.mutated,
+.nodeBox.mutated > .nodeText {
+ background-color: #EFFF79;
+ color: #FF0000 !important;
+}
+
+.nodeBox.selected.mutated > .nodeLabel,
+.nodeBox.selected.mutated > .nodeLabel > .nodeLabelBox,
+.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr.mutated > .nodeValue,
+.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue.mutated,
+.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText.mutated {
+ background-color: #EFFF79;
+ border-color: #EFFF79;
+ color: #FF0000 !important;
+}
+
+/************************************************************************************************/
+
+.logRow-dirxml {
+ padding-left: 0;
+}
+
+.soloElement > .nodeBox {
+ padding-left: 0;
+}
+
+.useA11y .nodeLabel.focused {
+ outline: 2px solid #FF9933;
+ -moz-outline-radius: 3px;
+ outline-offset: -2px;
+}
+
+.useA11y .nodeLabelBox:focus {
+ outline: none;
+}
+
+/************************************************************************************************/
+
+.breakpointCode .twisty {
+ display: none;
+}
+
+.breakpointCode .nodeBox.containerNodeBox,
+.breakpointCode .nodeLabel {
+ padding-left: 0px;
+ margin-left: 0px;
+ font-family: monospace !important;
+}
+
+.breakpointCode .nodeTag,
+.breakpointCode .nodeAttr,
+.breakpointCode .nodeText,
+.breakpointCode .nodeValue,
+.breakpointCode .nodeLabel {
+ color: DarkGreen !important;
+}
+
+.breakpointMutationType {
+ position: absolute;
+ top: 4px;
+ right: 20px;
+ color: gray;
+}
diff --git a/skin/classic/jsonViewer.css b/skin/classic/jsonViewer.css
index 78f5729..06669ef 100644
--- a/skin/classic/jsonViewer.css
+++ b/skin/classic/jsonViewer.css
@@ -1,43 +1,43 @@
-/* See license.txt for terms of usage */
-
-/************************************************************************************************/
-/* JSON viewer */
-
-.jsonPreview .title {
- margin-bottom: 4px;
- border-bottom: 1px solid #D7D7D7;
- padding-bottom: 2px;
- font-family: Lucida Grande, Tahoma, sans-serif;
- font-weight: bold;
- color: #565656;
-}
-
-.jsonPreview .sortLink {
- color: #bdbdbd;
- font-weight: normal;
- padding-left: 1px;
-}
-
-.jsonPreview .sortLink:hover {
- color: blue;
- cursor: pointer;
-}
-
-/************************************************************************************************/
-/* sort link label */
-
-.sortLink .doSort {
- display: inline;
-}
-
-.sortLink .doNotSort {
- display: none;
-}
-
-.sortLink.sorted .doSort {
- display: none;
-}
-
-.sortLink.sorted .doNotSort {
- display: inline;
-}
+/* See license.txt for terms of usage */
+
+/************************************************************************************************/
+/* JSON viewer */
+
+.jsonPreview .title {
+ margin-bottom: 4px;
+ border-bottom: 1px solid #D7D7D7;
+ padding-bottom: 2px;
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ font-weight: bold;
+ color: #565656;
+}
+
+.jsonPreview .sortLink {
+ color: #bdbdbd;
+ font-weight: normal;
+ padding-left: 1px;
+}
+
+.jsonPreview .sortLink:hover {
+ color: blue;
+ cursor: pointer;
+}
+
+/************************************************************************************************/
+/* sort link label */
+
+.sortLink .doSort {
+ display: inline;
+}
+
+.sortLink .doNotSort {
+ display: none;
+}
+
+.sortLink.sorted .doSort {
+ display: none;
+}
+
+.sortLink.sorted .doNotSort {
+ display: inline;
+}
diff --git a/skin/classic/layout.css b/skin/classic/layout.css
index 4a4a3d2..a5953b2 100644
--- a/skin/classic/layout.css
+++ b/skin/classic/layout.css
@@ -1,241 +1,241 @@
-/* See license.txt for terms of usage */
-
-.panelNode-layout {
- overflow: hidden !important;
-}
-
-.outerLayoutBox {
- overflow: hidden !important;
- position: relative;
- margin: 0 auto;
- width: 300px;
- height: 100%;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.layoutBox {
- position: absolute;
- border: 1px solid #888888;
- top: 20px;
- right: 20px;
- bottom: 20px;
- left: 20px;
- color: #333333;
-}
-
-.positionLayoutBox {
- position: absolute;
- top: 12px;
- bottom: 12px;
- left: 15px;
- right: 25px;
- max-height: 260px;
- min-height: 180px;
-}
-
-.marginLayoutBox {
- border: 1px dashed #BBBBBB;
- background: #FFFFFF;
-}
-
-.borderLayoutBox {
- background-color: #BBBBBB;
-}
-
-.paddingLayoutBox {
- background-color: #DDDDDD;
-}
-
-.contentLayoutBox {
- background: #DDDDDD;
-}
-
-.layoutBox.editing,
-.layoutBox.highlighted {
- background-color: Highlight;
-}
-
-.layoutBox.editing,
-.layoutBox.editing > .layoutCaption,
-.layoutBox.editing > .layoutLabel,
-.layoutBox.highlighted,
-.layoutBox.highlighted > .layoutCaption,
-.layoutBox.highlighted > .layoutLabel {
- color: HighlightText;
- opacity: 1.0;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.layoutCaption {
- position: absolute;
- left: 2px;
- top: 2px;
- font-size: 9px;
- color: #555555;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.layoutLabel {
- position: absolute;
-}
-
-.layoutLabel.invisible {
- opacity: 0.2;
-}
-
-.layoutLabelTop {
- left: 0;
- top: 2px;
- width: 100%;
- text-align: center;
-}
-
-.layoutLabelBottom {
- left: 0;
- bottom: 2px;
- width: 100%;
- text-align: center;
-}
-
-.layoutLabelPosition,
-.layoutBoxSizing,
-.layoutZIndex {
- display: block;
-}
-
-.layoutLabelPosition {
- bottom: 2px;
- float: left;
-}
-
-.layoutBoxSizing {
- top: 14px;
- left: 90px;
-}
-
-.layoutZIndex {
- float: right;
-}
-
-.layoutLabelLeft {
- top: 50%;
- left: 0;
- width: 20px;
- margin-top: -0.5em;
- text-align: center;
-}
-
-.layoutLabelRight {
- top: 50%;
- right: 0;
- width: 20px;
- margin-top: -0.5em;
- text-align: center;
-}
-
-.layoutLabelCenter {
- left: 0;
- top: 50%;
- width: 100%;
- margin-top: -0.5em;
- text-align: center;
-}
-
-.layoutLabelWidth,
-.layoutLabelHeight {
- position: static;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.layoutEdge {
- position: absolute;
-}
-
-.parentLeft > .layoutEdgeLeft,
-.parentRight > .layoutEdgeRight,
-.parentTop > .layoutEdgeTop,
-.parentBottom > .layoutEdgeBottom {
- background: #EEEEEE;
-}
-
-.siblingLeft > .layoutEdgeLeft {
- border-left: 1px dashed #BBBBBB;
-}
-
-.siblingRight > .layoutEdgeRight {
- border-right: 1px dashed #BBBBBB;
-}
-
-.siblingTop > .layoutEdgeTop {
- border-top: 1px dashed #BBBBBB;
-}
-
-.siblingBottom > .layoutEdgeBottom {
- border-bottom: 1px dashed #BBBBBB;
-}
-
-.siblingLeft > .layoutEdgeTop,
-.siblingLeft > .layoutEdgeBottom {
- left: 0;
-}
-
-.siblingRight > .layoutEdgeTop,
-.siblingRight > .layoutEdgeBottom {
- right: 0;
-}
-
-.siblingTop > .layoutEdgeLeft,
-.siblingTop > .layoutEdgeRight {
- top: 0;
-}
-
-.siblingBottom > .layoutEdgeLeft,
-.siblingBottom > .layoutEdgeRight {
- bottom: 0;
-}
-
-.parentLeft.parentTop > .layoutEdgeLeft,
-.parentRight.parentTop > .layoutEdgeRight {
- top: 0;
-}
-
-.parentLeft.parentBottom > .layoutEdgeLeft,
-.parentRight.parentBottom > .layoutEdgeRight {
- bottom: 0;
-}
-
-.layoutEdgeTop {
- left: 20px;
- right: 20px;
- top: 0;
- height: 20px;
-}
-
-.layoutEdgeBottom {
- left: 20px;
- right: 20px;
- bottom: 0;
- height: 20px;
-}
-
-.layoutEdgeLeft {
- left: 0;
- top: 20px;
- bottom: 20px;
- width: 20px;
-}
-
-.layoutEdgeRight {
- right: 0;
- top: 20px;
- bottom: 20px;
- width: 20px;
-}
-
-.useA11y .focusGroup:focus {
- outline: 2px solid #FF9933;
-}
+/* See license.txt for terms of usage */
+
+.panelNode-layout {
+ overflow: hidden !important;
+}
+
+.outerLayoutBox {
+ overflow: hidden !important;
+ position: relative;
+ margin: 0 auto;
+ width: 300px;
+ height: 100%;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.layoutBox {
+ position: absolute;
+ border: 1px solid #888888;
+ top: 20px;
+ right: 20px;
+ bottom: 20px;
+ left: 20px;
+ color: #333333;
+}
+
+.positionLayoutBox {
+ position: absolute;
+ top: 12px;
+ bottom: 12px;
+ left: 15px;
+ right: 25px;
+ max-height: 260px;
+ min-height: 180px;
+}
+
+.marginLayoutBox {
+ border: 1px dashed #BBBBBB;
+ background: #FFFFFF;
+}
+
+.borderLayoutBox {
+ background-color: #BBBBBB;
+}
+
+.paddingLayoutBox {
+ background-color: #DDDDDD;
+}
+
+.contentLayoutBox {
+ background: #DDDDDD;
+}
+
+.layoutBox.editing,
+.layoutBox.highlighted {
+ background-color: Highlight;
+}
+
+.layoutBox.editing,
+.layoutBox.editing > .layoutCaption,
+.layoutBox.editing > .layoutLabel,
+.layoutBox.highlighted,
+.layoutBox.highlighted > .layoutCaption,
+.layoutBox.highlighted > .layoutLabel {
+ color: HighlightText;
+ opacity: 1.0;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.layoutCaption {
+ position: absolute;
+ left: 2px;
+ top: 2px;
+ font-size: 9px;
+ color: #555555;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.layoutLabel {
+ position: absolute;
+}
+
+.layoutLabel.invisible {
+ opacity: 0.2;
+}
+
+.layoutLabelTop {
+ left: 0;
+ top: 2px;
+ width: 100%;
+ text-align: center;
+}
+
+.layoutLabelBottom {
+ left: 0;
+ bottom: 2px;
+ width: 100%;
+ text-align: center;
+}
+
+.layoutLabelPosition,
+.layoutBoxSizing,
+.layoutZIndex {
+ display: block;
+}
+
+.layoutLabelPosition {
+ bottom: 2px;
+ float: left;
+}
+
+.layoutBoxSizing {
+ top: 14px;
+ left: 90px;
+}
+
+.layoutZIndex {
+ float: right;
+}
+
+.layoutLabelLeft {
+ top: 50%;
+ left: 0;
+ width: 20px;
+ margin-top: -0.5em;
+ text-align: center;
+}
+
+.layoutLabelRight {
+ top: 50%;
+ right: 0;
+ width: 20px;
+ margin-top: -0.5em;
+ text-align: center;
+}
+
+.layoutLabelCenter {
+ left: 0;
+ top: 50%;
+ width: 100%;
+ margin-top: -0.5em;
+ text-align: center;
+}
+
+.layoutLabelWidth,
+.layoutLabelHeight {
+ position: static;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.layoutEdge {
+ position: absolute;
+}
+
+.parentLeft > .layoutEdgeLeft,
+.parentRight > .layoutEdgeRight,
+.parentTop > .layoutEdgeTop,
+.parentBottom > .layoutEdgeBottom {
+ background: #EEEEEE;
+}
+
+.siblingLeft > .layoutEdgeLeft {
+ border-left: 1px dashed #BBBBBB;
+}
+
+.siblingRight > .layoutEdgeRight {
+ border-right: 1px dashed #BBBBBB;
+}
+
+.siblingTop > .layoutEdgeTop {
+ border-top: 1px dashed #BBBBBB;
+}
+
+.siblingBottom > .layoutEdgeBottom {
+ border-bottom: 1px dashed #BBBBBB;
+}
+
+.siblingLeft > .layoutEdgeTop,
+.siblingLeft > .layoutEdgeBottom {
+ left: 0;
+}
+
+.siblingRight > .layoutEdgeTop,
+.siblingRight > .layoutEdgeBottom {
+ right: 0;
+}
+
+.siblingTop > .layoutEdgeLeft,
+.siblingTop > .layoutEdgeRight {
+ top: 0;
+}
+
+.siblingBottom > .layoutEdgeLeft,
+.siblingBottom > .layoutEdgeRight {
+ bottom: 0;
+}
+
+.parentLeft.parentTop > .layoutEdgeLeft,
+.parentRight.parentTop > .layoutEdgeRight {
+ top: 0;
+}
+
+.parentLeft.parentBottom > .layoutEdgeLeft,
+.parentRight.parentBottom > .layoutEdgeRight {
+ bottom: 0;
+}
+
+.layoutEdgeTop {
+ left: 20px;
+ right: 20px;
+ top: 0;
+ height: 20px;
+}
+
+.layoutEdgeBottom {
+ left: 20px;
+ right: 20px;
+ bottom: 0;
+ height: 20px;
+}
+
+.layoutEdgeLeft {
+ left: 0;
+ top: 20px;
+ bottom: 20px;
+ width: 20px;
+}
+
+.layoutEdgeRight {
+ right: 0;
+ top: 20px;
+ bottom: 20px;
+ width: 20px;
+}
+
+.useA11y .focusGroup:focus {
+ outline: 2px solid #FF9933;
+}
diff --git a/skin/classic/linux/firebug.css b/skin/classic/linux/firebug.css
index 1b30596..d8e3784 100644
--- a/skin/classic/linux/firebug.css
+++ b/skin/classic/linux/firebug.css
@@ -1,6 +1,6 @@
- at import "chrome://firebug/skin/win/firebug.css";
-
-/* Add some basic padding to the completion popup (missing on Linux). */
-.userTypedText {
- margin-left: 1px;
-}
+ at import "chrome://firebug/skin/win/firebug.css";
+
+/* Add some basic padding to the completion popup (missing on Linux). */
+.userTypedText {
+ margin-left: 1px;
+}
diff --git a/skin/classic/mac/debugger.css b/skin/classic/mac/debugger.css
index 283a826..1294d80 100644
--- a/skin/classic/mac/debugger.css
+++ b/skin/classic/mac/debugger.css
@@ -1,389 +1,389 @@
-/* See license.txt for terms of usage */
-
-.panelNode-script {
- overflow: hidden;
-
- /* Do not use Monaco, otherwise the Script panel's viewport doesn't work*/
- font-family: monospace;
- font-size: 12px; /* Issue 5060 */
-}
-
-/************************************************************************************************/
-
-.scriptTooltip {
- position: fixed;
- z-index: 2147483647;
- padding: 2px 3px;
- border: 1px solid #CBE087;
- background: LightYellow;
- font-family: Monaco, monospace;
- color: #000000;
-}
-
-/************************************************************************************************/
-
-.sourceBox {
- overflow: scroll; /* see issue 1479 */
- position: absolute;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
-}
-
-.sourceRow {
- white-space: nowrap;
-}
-
-.sourceRow.hovered {
- background-color: #EEEEEE;
-}
-
-/************************************************************************************************/
-
-.sourceLine {
- position: relative;
- -moz-user-select: none;
- margin-right: 10px;
- border-bottom: 1px solid #EEEEEE;
- border-right: 1px solid #CCCCCC;
- padding: 0px 4px 0 20px;
- background: #EEEEEE no-repeat 5px 1px;
- color: #A0A0A0;
- white-space: pre;
- font-family: monospace; /* see issue 2953 */
-}
-
-
-.useA11y .sourceBox .sourceViewport:focus .sourceLine {
- background-color: #FFFFC0;
- color: navy;
- border-right: 1px solid black;
-}
-
-.useA11y .sourceBox .sourceViewport:focus {
- outline: none;
-}
-
-.a11y1emSize {
- width: 1em;
- height: 1em;
- position: absolute;
-}
-
-.useA11y .panelStatusLabel:focus {
- outline-offset: -2px !important;
- }
-
-.sourceBox > .sourceRow > .sourceLine {
- cursor: pointer;
-}
-
-.sourceLine:hover {
- text-decoration: none;
-}
-
-.sourceRowText {
- white-space: pre;
-}
-
-.sourceRow[exe_line="true"] {
- outline: 1px solid #D9D9B6;
- margin-right: 1px;
- background-color: lightgoldenrodyellow;
-}
-
-.sourceRow[executable="true"] > .sourceLine {
- content: "-";
- color: #565656; /* Dark Grey */
-}
-
-.sourceRow[exe_line="true"] > .sourceLine {
- background-image: url(chrome://firebug/skin/executionPointer.png);
- background-position: 7px 1px;
- color: #000000;
-}
-
-.sourceRow[breakpoint="true"] > .sourceLine {
- background-image: url(chrome://firebug/skin/breakpoint.png);
-}
-
-.sourceRow[breakpoint="true"][condition="true"] > .sourceLine {
- background-image: url(chrome://firebug/skin/breakpointCondition.png);
- background-position: 9px 3px, 5px 1px;
-}
-
-.sourceRow[breakpoint="true"][disabledbreakpoint="true"] > .sourceLine {
- background-image: none;
-}
-
-.sourceRow[breakpoint="true"][disabledBreakpoint="true"]:not([condition="true"]) > .sourceLine::before {
- content: "";
- position: absolute;
- top: 1px;
- left: 5px;
- width: 12px;
- height: 12px;
- background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
- opacity: 0.5;
-}
-
-.sourceRow[breakpoint="true"][disabledBreakpoint="true"][condition="true"] > .sourceLine::before {
- content: "";
- position: absolute;
- top: 1px;
- left: 5px;
- width: 12px;
- height: 12px;
- background: url(chrome://firebug/skin/breakpointCondition.png) no-repeat 4px 2px, url(chrome://firebug/skin/breakpoint.png) no-repeat;
- opacity: 0.5;
-}
-
-.sourceRow[breakpoint="true"][exe_line="true"] > .sourceLine {
- background-image: url(chrome://firebug/skin/executionPointer.png), url(chrome://firebug/skin/breakpoint.png);
- background-position: 7px 1px, 5px 1px;
-}
-
-.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine {
- background-image: none;
-}
-
-.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine::before {
- content: "";
- position: absolute;
- top: 1px;
- left: 5px;
- width: 12px;
- height: 12px;
- background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
- opacity: 0.5;
-}
-
-.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine::after {
- content: "";
- position: absolute;
- left: 7px;
- width: 11px;
- height: 12px;
- background: url(chrome://firebug/skin/executionPointer.png) no-repeat;
-}
-
-.sourceLine.editing {
- background-image: url(chrome://firebug/skin/breakpoint.png);
-}
-
-/************************************************************************************************/
-/* Breakpoint condition */
-
-/* xxxsz: Use PNG images for condition editor, because using SVGs as border images is broken
- up to Firefox 22.0. Use SVGs as soon as Firefox 23.0 is the min. supported version.
- (see issue 6607) */
-.conditionEditor {
- border-style: solid;
- border-width: 19px 25px 33px 33px;
- border-image: url(chrome://firebug/skin/mac/breakpointConditionEditor.png) 19 25 33 33 fill
- stretch;
-}
-
-.conditionCaption {
- margin-bottom: 2px;
- font-family: Lucida Grande, sans-serif;
- font-weight: bold;
- font-size: 11px;
- color: #FFFFFF;
-}
-
-.conditionInput {
- border: 1px solid #96969D;
- border-radius: 10px !important;
- box-shadow: 0 2px 2px -2px #000000 inset;
- padding: 2px 12px;
- font-family: Monaco, monospace;
- -moz-box-sizing: border-box;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.upsideDown {
- border-width: 28px 25px 19px 33px;
- border-image: url(chrome://firebug/skin/mac/breakpointConditionEditorDown.png) 28 25 19 33 fill
- stretch;
-}
-
-/************************************************************************************************/
-
-.breakpointBlockHead {
- position: relative;
- padding-top: 4px;
-}
-
-.breakpointBlockHead > .checkbox {
- margin-right: 4px;
-}
-
-.breakpointBlockHead > .objectLink-sourceLink {
- top: 2px;
- right: 20px;
- background-color: #FFFFFF; /* issue 3308 */
-}
-
-.breakpointBlockHead > .closeButton {
- position: absolute;
- top: 2px;
- right: 2px;
-}
-
-.breakpointCheckbox {
- margin-top: 0;
- vertical-align: top;
-}
-
-.breakpointName {
- margin-left: 4px;
- font-weight: bold;
-}
-
-.breakpointCode {
- overflow: hidden;
- white-space: nowrap;
- padding-left: 24px;
- padding-bottom: 2px;
- border-bottom: 1px solid #D7D7D7;
- font-family: Monaco, monospace;
- color: DarkGreen;
-}
-
-.breakpointBlock-breakpoints > .groupHeader {
- display: none;
-}
-
-.breakpointBlock-monitors > .breakpointCode {
- padding: 0;
-}
-
-.breakpointBlock-errorBreakpoints .breakpointCheckbox,
-.breakpointBlock-monitors .breakpointCheckbox {
- display: none;
-}
-
-.breakpointHeader {
- margin: 0 !important;
- border-top: none !important;
-}
-
-
-/* ************************************************************************** */
-.panelNode-callstack .objectLink-sourceLink {
- display: none;
-}
-
-.panelNode-callstack {
- margin-left: 4px;
- overflow: auto;
-}
-/* This objectLink-stackFrame should be consistent with panelStatusLabel so the call stack looks the same in toolbar and panel */
-.objectLink-stackFrame {
- cursor: pointer;
- margin: 0;
- padding: 0 4px;
-}
-
-.objectLink-stackFrame:hover {
- color: blue;
-}
-
-.objectLink-stackFrame[selected="true"] {
- font-weight: bold;
-}
-
-/*************************************************************************************************/
-/* Notification */
-
-.notificationBox {
- position: fixed;
- z-index: 2147483647;
- padding: 0 50px;
- left: 0;
- right: 0;
- top: 0;
- pointer-events: none;
-}
-
-.notificationTable {
- border: 1px solid lightgray;
- border-top: none;
- background: rgb(255, 255, 225);
- font-family: Segoe UI;
- font-size: 12px;
- color: #000000;
- width: 100%;
- box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.4);
- border-radius: 0 0 3px 3px;
- padding: 2px 0;
- pointer-events: auto;
-}
-
-.notificationBox TD {
- vertical-align: middle;
-}
-
-.notificationImage {
- vertical-align: middle;
- margin: 0 5px;
-}
-
-.notificationDesc {
- padding-left: 1px;
-}
-
-.noNotificationDesc {
- color: gray;
-}
-
-.noNotificationDesc a {
- font-weight: bold;
- color: gray;
-}
-
-.noNotificationDesc a:hover {
- text-decoration: underline;
-}
-
-.notificationBox .descCol {
- width: 100%;
- line-height: 17px;
-}
-
-.notificationBox .buttonsCol {
- white-space: nowrap;
-}
-
-.notificationBox .hideCol {
- color: gray;
- padding-top: 7px;
-}
-
-.notificationBox .hideNotification {
- vertical-align: middle;
-}
-
-.notificationButton {
- margin-right: 4px;
-}
-
-.notificationClose {
- background: url(chrome://firebug/skin/notificationClose.png) no-repeat scroll 0 0 transparent;
- width: 16px;
- height: 16px;
- border: none;
- margin-right: 6px;
- cursor: pointer;
-}
-
-.notificationClose:hover {
- background: url(chrome://firebug/skin/notificationClose.png) no-repeat scroll -32px 0 transparent;
-}
-
-.notificationClose:hover:active {
- background: url(chrome://firebug/skin/notificationClose.png) no-repeat scroll -16px 0 transparent;
-}
+/* See license.txt for terms of usage */
+
+.panelNode-script {
+ overflow: hidden;
+
+ /* Do not use Monaco, otherwise the Script panel's viewport doesn't work*/
+ font-family: monospace;
+ font-size: 12px; /* Issue 5060 */
+}
+
+/************************************************************************************************/
+
+.scriptTooltip {
+ position: fixed;
+ z-index: 2147483647;
+ padding: 2px 3px;
+ border: 1px solid #CBE087;
+ background: LightYellow;
+ font-family: Monaco, monospace;
+ color: #000000;
+}
+
+/************************************************************************************************/
+
+.sourceBox {
+ overflow: scroll; /* see issue 1479 */
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.sourceRow {
+ white-space: nowrap;
+}
+
+.sourceRow.hovered {
+ background-color: #EEEEEE;
+}
+
+/************************************************************************************************/
+
+.sourceLine {
+ position: relative;
+ -moz-user-select: none;
+ margin-right: 10px;
+ border-bottom: 1px solid #EEEEEE;
+ border-right: 1px solid #CCCCCC;
+ padding: 0px 4px 0 20px;
+ background: #EEEEEE no-repeat 5px 1px;
+ color: #A0A0A0;
+ white-space: pre;
+ font-family: monospace; /* see issue 2953 */
+}
+
+
+.useA11y .sourceBox .sourceViewport:focus .sourceLine {
+ background-color: #FFFFC0;
+ color: navy;
+ border-right: 1px solid black;
+}
+
+.useA11y .sourceBox .sourceViewport:focus {
+ outline: none;
+}
+
+.a11y1emSize {
+ width: 1em;
+ height: 1em;
+ position: absolute;
+}
+
+.useA11y .panelStatusLabel:focus {
+ outline-offset: -2px !important;
+ }
+
+.sourceBox > .sourceRow > .sourceLine {
+ cursor: pointer;
+}
+
+.sourceLine:hover {
+ text-decoration: none;
+}
+
+.sourceRowText {
+ white-space: pre;
+}
+
+.sourceRow[exe_line="true"] {
+ outline: 1px solid #D9D9B6;
+ margin-right: 1px;
+ background-color: lightgoldenrodyellow;
+}
+
+.sourceRow[executable="true"] > .sourceLine {
+ content: "-";
+ color: #565656; /* Dark Grey */
+}
+
+.sourceRow[exe_line="true"] > .sourceLine {
+ background-image: url(chrome://firebug/skin/executionPointer.png);
+ background-position: 7px 1px;
+ color: #000000;
+}
+
+.sourceRow[breakpoint="true"] > .sourceLine {
+ background-image: url(chrome://firebug/skin/breakpoint.png);
+}
+
+.sourceRow[breakpoint="true"][condition="true"] > .sourceLine {
+ background-image: url(chrome://firebug/skin/breakpointCondition.png);
+ background-position: 9px 3px, 5px 1px;
+}
+
+.sourceRow[breakpoint="true"][disabledbreakpoint="true"] > .sourceLine {
+ background-image: none;
+}
+
+.sourceRow[breakpoint="true"][disabledBreakpoint="true"]:not([condition="true"]) > .sourceLine::before {
+ content: "";
+ position: absolute;
+ top: 1px;
+ left: 5px;
+ width: 12px;
+ height: 12px;
+ background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
+ opacity: 0.5;
+}
+
+.sourceRow[breakpoint="true"][disabledBreakpoint="true"][condition="true"] > .sourceLine::before {
+ content: "";
+ position: absolute;
+ top: 1px;
+ left: 5px;
+ width: 12px;
+ height: 12px;
+ background: url(chrome://firebug/skin/breakpointCondition.png) no-repeat 4px 2px, url(chrome://firebug/skin/breakpoint.png) no-repeat;
+ opacity: 0.5;
+}
+
+.sourceRow[breakpoint="true"][exe_line="true"] > .sourceLine {
+ background-image: url(chrome://firebug/skin/executionPointer.png), url(chrome://firebug/skin/breakpoint.png);
+ background-position: 7px 1px, 5px 1px;
+}
+
+.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine {
+ background-image: none;
+}
+
+.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine::before {
+ content: "";
+ position: absolute;
+ top: 1px;
+ left: 5px;
+ width: 12px;
+ height: 12px;
+ background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
+ opacity: 0.5;
+}
+
+.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine::after {
+ content: "";
+ position: absolute;
+ left: 7px;
+ width: 11px;
+ height: 12px;
+ background: url(chrome://firebug/skin/executionPointer.png) no-repeat;
+}
+
+.sourceLine.editing {
+ background-image: url(chrome://firebug/skin/breakpoint.png);
+}
+
+/************************************************************************************************/
+/* Breakpoint condition */
+
+/* xxxsz: Use PNG images for condition editor, because using SVGs as border images is broken
+ up to Firefox 22.0. Use SVGs as soon as Firefox 23.0 is the min. supported version.
+ (see issue 6607) */
+.conditionEditor {
+ border-style: solid;
+ border-width: 19px 25px 33px 33px;
+ border-image: url(chrome://firebug/skin/mac/breakpointConditionEditor.png) 19 25 33 33 fill
+ stretch;
+}
+
+.conditionCaption {
+ margin-bottom: 2px;
+ font-family: Lucida Grande, sans-serif;
+ font-weight: bold;
+ font-size: 11px;
+ color: #FFFFFF;
+}
+
+.conditionInput {
+ border: 1px solid #96969D;
+ border-radius: 10px !important;
+ box-shadow: 0 2px 2px -2px #000000 inset;
+ padding: 2px 12px;
+ font-family: Monaco, monospace;
+ -moz-box-sizing: border-box;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.upsideDown {
+ border-width: 28px 25px 19px 33px;
+ border-image: url(chrome://firebug/skin/mac/breakpointConditionEditorDown.png) 28 25 19 33 fill
+ stretch;
+}
+
+/************************************************************************************************/
+
+.breakpointBlockHead {
+ position: relative;
+ padding-top: 4px;
+}
+
+.breakpointBlockHead > .checkbox {
+ margin-right: 4px;
+}
+
+.breakpointBlockHead > .objectLink-sourceLink {
+ top: 2px;
+ right: 20px;
+ background-color: #FFFFFF; /* issue 3308 */
+}
+
+.breakpointBlockHead > .closeButton {
+ position: absolute;
+ top: 2px;
+ right: 2px;
+}
+
+.breakpointCheckbox {
+ margin-top: 0;
+ vertical-align: top;
+}
+
+.breakpointName {
+ margin-left: 4px;
+ font-weight: bold;
+}
+
+.breakpointCode {
+ overflow: hidden;
+ white-space: nowrap;
+ padding-left: 24px;
+ padding-bottom: 2px;
+ border-bottom: 1px solid #D7D7D7;
+ font-family: Monaco, monospace;
+ color: DarkGreen;
+}
+
+.breakpointBlock-breakpoints > .groupHeader {
+ display: none;
+}
+
+.breakpointBlock-monitors > .breakpointCode {
+ padding: 0;
+}
+
+.breakpointBlock-errorBreakpoints .breakpointCheckbox,
+.breakpointBlock-monitors .breakpointCheckbox {
+ display: none;
+}
+
+.breakpointHeader {
+ margin: 0 !important;
+ border-top: none !important;
+}
+
+
+/* ************************************************************************** */
+.panelNode-callstack .objectLink-sourceLink {
+ display: none;
+}
+
+.panelNode-callstack {
+ margin-left: 4px;
+ overflow: auto;
+}
+/* This objectLink-stackFrame should be consistent with panelStatusLabel so the call stack looks the same in toolbar and panel */
+.objectLink-stackFrame {
+ cursor: pointer;
+ margin: 0;
+ padding: 0 4px;
+}
+
+.objectLink-stackFrame:hover {
+ color: blue;
+}
+
+.objectLink-stackFrame[selected="true"] {
+ font-weight: bold;
+}
+
+/*************************************************************************************************/
+/* Notification */
+
+.notificationBox {
+ position: fixed;
+ z-index: 2147483647;
+ padding: 0 50px;
+ left: 0;
+ right: 0;
+ top: 0;
+ pointer-events: none;
+}
+
+.notificationTable {
+ border: 1px solid lightgray;
+ border-top: none;
+ background: rgb(255, 255, 225);
+ font-family: Segoe UI;
+ font-size: 12px;
+ color: #000000;
+ width: 100%;
+ box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.4);
+ border-radius: 0 0 3px 3px;
+ padding: 2px 0;
+ pointer-events: auto;
+}
+
+.notificationBox TD {
+ vertical-align: middle;
+}
+
+.notificationImage {
+ vertical-align: middle;
+ margin: 0 5px;
+}
+
+.notificationDesc {
+ padding-left: 1px;
+}
+
+.noNotificationDesc {
+ color: gray;
+}
+
+.noNotificationDesc a {
+ font-weight: bold;
+ color: gray;
+}
+
+.noNotificationDesc a:hover {
+ text-decoration: underline;
+}
+
+.notificationBox .descCol {
+ width: 100%;
+ line-height: 17px;
+}
+
+.notificationBox .buttonsCol {
+ white-space: nowrap;
+}
+
+.notificationBox .hideCol {
+ color: gray;
+ padding-top: 7px;
+}
+
+.notificationBox .hideNotification {
+ vertical-align: middle;
+}
+
+.notificationButton {
+ margin-right: 4px;
+}
+
+.notificationClose {
+ background: url(chrome://firebug/skin/notificationClose.png) no-repeat scroll 0 0 transparent;
+ width: 16px;
+ height: 16px;
+ border: none;
+ margin-right: 6px;
+ cursor: pointer;
+}
+
+.notificationClose:hover {
+ background: url(chrome://firebug/skin/notificationClose.png) no-repeat scroll -32px 0 transparent;
+}
+
+.notificationClose:hover:active {
+ background: url(chrome://firebug/skin/notificationClose.png) no-repeat scroll -16px 0 transparent;
+}
diff --git a/skin/classic/mac/firebug.css b/skin/classic/mac/firebug.css
index be3a9f0..ebb1071 100644
--- a/skin/classic/mac/firebug.css
+++ b/skin/classic/mac/firebug.css
@@ -1,557 +1,557 @@
-/* See license.txt for terms of usage */
-
-#fbFirebugMenu > .toolbarbutton-text,
-#fbFirebugMenu > .toolbarbutton-menu-dropmarker {
- display: none;
-}
-
-/************************************************************************************************/
-
-#fbCommandToolbar {
- border-top: 1px solid #BBB9BA;
- border-bottom: 1px solid #BBB9BA;
- background: #F6F6F6 linear-gradient(to top, #FFFFFF, #E9E9E9 55%, #F2F2F2 55%, #FAFAFA) repeat-x;
-}
-
-#fbCommandArrow,
-#fbCommandLine,
-#fbCommandEditor,
-#fbCommandLineCompletion,
-#fbCommandLineMeasurer,
-.fbCommandLineCompletions {
- font-family: Monaco, monospace;
-}
-
-/* Add some more padding to the completion popup */
-.userTypedText {
- margin-left: 1px;
-}
-
-#fbCommandEditor {
- -moz-appearance: none;
- border: none;
- border-top: 1px solid;
- -moz-border-top-colors: #BBB9BA;
- padding: 2px;
-}
-
-#fbContentSplitter {
- border-color: #BBB9BA;
- background: #f3f3f3 !important;
-}
-
-#fbPanelSplitter {
- background: #f3f3f3 !important;
- border-left: 1px solid #BBB9BA;
- border-right: 1px solid #BBB9BA;
- min-width: 8px;
- max-width: 8px;
-}
-
-#fbPanelSplitter[orient="vertical"] {
- border: none;
- border-top: 1px solid #BBB9BA;
- min-height: 8px;
- max-height: 8px;
- min-width: 0;
- max-width: none;
-}
-
-#fbToolbar {
- padding-left: 4px;
- border-bottom: none;
-}
-
-.innerToolbar {
- margin-right: 5px; /* add some space between last button and first tab */
-}
-
-#fbWindowButtons.innerToolbar {
- padding: 7px 0 7px 0; /* Set proper height of window buttons (close, min, detach) */
-}
-
-.fbsearch-textbox {
- border-radius: 10px !important;
- margin-top: 1px;
-}
-
-.fbsearch-icon {
- width: 22px;
-}
-
-.fbsearch-icon,
-.fbsearch-icon:hover {
- background-position: 5px 50%;
-}
-
-/* xxxsz: Use PNG images for condition editor, because using SVGs as border images is broken
- up to Firefox 22.0. Use SVGs as soon as Firefox 23.0 is the min. supported version.
- (see issue 6607) */
-#fbSearchOptionsPanel {
- -moz-appearance: none;
- -moz-window-shadow: none;
- background-color: transparent;
- margin-bottom: 2px;
- margin-right: -12px;
- border-image: url(chrome://firebug/skin/mac/searchPanel.png) 16 50 24 12 stretch;
- border-image-slice: 16 50 24 12 fill;
- border-width: 16px 50px 24px 12px;
- border-style: solid;
- color: #ffffff;
-}
-
-#fbSearchOptionsPanel[position="after_end"] {
- border-image: url(chrome://firebug/skin/mac/searchPanelDown.png) 25 50 18 12 stretch;
- border-image-slice: 25 50 18 12 fill;
- border-width: 25px 50px 18px 12px;
-}
-
-#fbSearchOptionsPanel > vbox {
- margin-right: -38px;
-}
-
-#fbSearchOptionsPanel > description {
- margin: 0;
-}
-
-.fbsearch-options-label {
- color: #ffffff;
-}
-
-.fbsearch-options-buttons {
- -moz-appearance: none;
- background: #464646 linear-gradient(
- to top,
- rgba(255, 255, 255, 0.3),
- rgba(255, 255, 255, 0) 55%,
- rgba(255, 255, 255, 0.1) 55%,
- rgba(255, 255, 255, 0.2)) repeat-x center center;
- border: 3px solid;
- -moz-border-top-colors: rgba(0,0,0,0.35) rgba(26,26,26,0.5) rgba(255,255,255,0.4);
- -moz-border-right-colors: rgba(53,53,53,1) rgba(53,53,53,1) rgba(162,162,162,1);
- -moz-border-bottom-colors: rgba(128,128,128,0.35) rgba(0,0,0,0.5) rgba(255,255,255,0.15);
- -moz-border-left-colors: rgba(0,0,0,0.35) rgba(26,26,26,0.5) rgba(255,255,255,0.4);
- border-radius: 20px;
- padding: 1px 9px;
- margin: 10px 0 0;
- min-height: 0px;
- color: #ffffff;
-}
-
-.fbsearch-options-buttons > .button-box > .button-text {
- margin: 0 !important;
-}
-
-.fbsearch-options-buttons:hover {
- background-color: #666666 !important;
-}
-
-.fbsearch-options-buttons:active {
- background-color: #86888B !important;
-}
-
-/* Don't display label and remove padding for all the following toolbar buttons */
-#fbFirebugMenu,
-#fbInspectButton,
-#fbNavigateBackButton,
-#fbNavigateForwardButton,
-#fbCommandPopupButton {
- margin: 0 1px 0 1px;
- padding: 0 1px 0 1px;
-}
-
-#fbFirebugMenu > .toolbarbutton-text,
-#fbInspectButton > .toolbarbutton-text,
-#fbNavigateBackButton > .toolbarbutton-text,
-#fbNavigateForwardButton > .toolbarbutton-text,
-#fbCommandPopupButton > .toolbarbutton-text {
- display: none;
-}
-
-.toolbarbutton-iconic {
- margin: 1px 1px 0 1px !important;
- padding: 0 !important;
-}
-
-.toolbarbutton-iconic > .toolbarbutton-icon {
- padding: 0;
-}
-
-.toolbarbutton-iconic > .toolbarbutton-text {
- display: none;
-}
-
-#fbMinimizeButton,
-#fbToggleCommandEditor {
- list-style-image: url(chrome://firebug/skin/mac/minimize.png);
- -moz-image-region: rect(0px, 13px, 13px, 0px);
-}
-
-/* Need to use images instead of filters due to https://bugzil.la/886883 */
-#fbMinimizeButton:hover,
-#fbToggleCommandEditor:hover {
- -moz-image-region: rect(13px, 13px, 26px, 0px);
-}
-
-#fbMinimizeButton:hover:active,
-#fbToggleCommandEditor:hover:active {
- -moz-image-region: rect(26px, 13px, 39px, 0px);
-}
-
-#fbDetachButton,
-#fbToggleCommandLine {
- list-style-image: url(chrome://firebug/skin/mac/detach.png);
- -moz-image-region: rect(0px, 13px, 13px, 0px);
-}
-
-#fbDetachButton:hover,
-#fbToggleCommandLine:hover {
- -moz-image-region: rect(13px, 13px, 26px, 0px);
-}
-
-#fbDetachButton:hover:active,
-#fbToggleCommandLine:hover:active {
- -moz-image-region: rect(26px, 13px, 39px, 0px);
-}
-
-#fbToggleCommandLine,
-#fbToggleCommandEditor {
- margin-right: 20px !important;
-}
-
-#fbCloseButton {
- list-style-image: url(chrome://firebug/skin/mac/close.png);
- -moz-image-region: rect(0px, 13px, 13px, 0px);
-}
-
-#fbCloseButton:hover {
- -moz-image-region: rect(13px, 13px, 26px, 0px);
-}
-
-#fbCloseButton:hover:active {
- -moz-image-region: rect(26px, 13px, 39px, 0px);
-}
-
-#fbCommandLineHistoryButton {
- list-style-image: url(chrome://firebug/skin/mac/commandHistory.png);
- -moz-image-region: rect(0px, 13px, 13px, 0px);
-}
-
-#fbCommandLineHistoryButton:hover {
- -moz-image-region: rect(13px, 13px, 26px, 0px);
-}
-
-#fbCommandLineHistoryButton:hover:active {
- -moz-image-region: rect(26px, 13px, 39px, 0px);
-}
-
-#fbCommandLineHistoryButton[disabled] {
- -moz-image-region: rect(39px, 13px, 52px, 0px);
-}
-
-#fbToggleCommandEditor {
- list-style-image: url(chrome://firebug/skin/mac/minimize.png);
- -moz-image-region: rect(0px, 13px, 13px, 0px);
-}
-
-#fbToggleCommandEditor:hover {
- -moz-image-region: rect(13px, 13px, 26px, 0px);
-}
-
-#fbToggleCommandEditor:hover:active {
- -moz-image-region: rect(26px, 13px, 39px, 0px);
-}
-
-/********************************************************************************************/
-/* Quick Info Box */
-
-#fbQuickInfoPanel {
- font-family: Monaco, monospace;
-}
-
-/************************************************************************************************/
-/* Command History panel */
-
-#fbCommandHistory {
- font-family: Monaco, monospace;
-}
-
-/********************************************************************************************/
-
-.panelTabBox {
- background: linear-gradient(to bottom, #f1f1f1, #d2d2d2) no-repeat 0 0;
- border-bottom: 1px solid #bebebe;
- padding: 0;
- overflow: hidden;
-}
-
-.panelTabs {
- padding: 0 2px 0 2px;
- -moz-box-align: end;
-}
-
-panelTab {
- margin: 4px 1px 0 3px;
- border: 1px solid transparent;
- border-bottom: none;
- border-radius: 4px 4px 0 0;
- padding: 5px 8px 7px 8px;
- font-size: 11px;
- font-weight: bold;
- color: #3a3a3a;
- direction: ltr;
-}
-
-panelTab[aria-disabled="true"] .panelTab-text {
- -moz-appearance: none;
- color: #7c7c7c !important;
-}
-
-panelTab[selected="true"] {
- border: 1px solid #A0A0A0;
- border-bottom: none;
- background: linear-gradient(to bottom, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.6)) no-repeat 0 0;
- color: inherit;
-}
-
-panelTab:not([selected="true"]):hover {
- border: 1px solid #C8C8C8;
- border-bottom: none;
- background: linear-gradient(to bottom, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.2)) no-repeat 0 0;
-}
-
-.panelTab-text {
- margin: 0;
-}
-
-panelTab[selected="true"] > panelTabMenu {
- margin-left: 3px;
-}
-
-/************************************************************************************************/
-
-#fbPanelStatus {
- margin: 2px 5px 3px 0;
- padding: 0 5px;
- overflow: hidden;
-}
-
-.panelStatusSeparator {
- margin: 0;
- color: #999999;
-}
-
-.panelStatusLabel {
- margin: 0;
- padding: 0 4px;
- cursor: pointer;
- color: #565656;
-}
-
-.panelStatusLabel:hover {
- color: blue;
-}
-
-.panelStatusLabel[selected="true"] {
- font-weight: bold;
-}
-
-.menuHeader {
- margin: 2px 16px;
- color: #565656;
-}
-
-/************************************************************************************************/
-
-.toolbar-text-button,
-.toolbar-text-menubutton {
- -moz-appearance: none;
- margin-top: 7px;
- margin-bottom: 6px;
- padding: 0 8px;
- min-width: 0;
- max-width: 13em;
- font-weight: bold;
- color: #3a3a3a;
- border: none !important;
- border-radius: 9px;
-}
-
-.toolbar-text-button > .toolbarbutton-text {
- margin-left: 7px;
-}
-
-.toolbar-text-button > .toolbarbutton-icon {
- display: none !important;
-}
-
-.toolbar-text-button:hover:not([disabled="true"]),
-.toolbar-text-menubutton:hover:not([disabled="true"]) ,
-.toolbar-text-button[checked="true"]:hover:not([disabled="true"]),
-.toolbar-text-menubutton[open="true"]:hover:not([disabled="true"]) {
- box-shadow: 0 1px 2px rgba(0, 0, 0, .5) inset;
- background: rgba(0, 0, 0, 0.2);
-}
-
-.toolbar-text-button:hover:active:not([disabled="true"]),
-.toolbar-text-menubutton:hover:active:not([disabled="true"]) {
- background: rgba(0, 0, 0, 0.5);
-}
-
-.toolbar-text-button:hover:not([disabled="true"]) > .toolbarbutton-text,
-.toolbar-text-menubutton:hover:not([disabled="true"]) > .toolbarbutton-menu-dropmarker,
-.toolbar-text-menubutton:hover:not([disabled="true"]) > .toolbarbutton-text {
- color: #fff;
- text-shadow: 0 1px rgba(120, 120, 120, 1);
-}
-
-.toolbar-text-button[checked="true"]:not([disabled="true"]),
-.toolbar-text-menubutton[open="true"]:not([disabled="true"]) {
- text-shadow: 0 1px rgba(120, 120, 120, 1);
- box-shadow: 0 1px 2px rgba(0, 0, 0, .5) inset;
- background: rgba(0, 0, 0, 0.3);
-}
-
-.toolbar-text-menubutton:hover:active:not([disabled="true"]) > .toolbarbutton-text,
-.toolbar-text-menubutton[open="true"]:not([disabled="true"]) > .toolbarbutton-text {
- color: #fff;
-}
-
-.toolbar-text-button > .toolbarbutton-text {
- color: #3a3a3a;
-}
-
-.toolbar-text-button[checked="true"] > .toolbarbutton-text {
- color: #fff;
-}
-
-.toolbar-text-button .toolbarbutton-text,
-.toolbar-text-menubutton .toolbarbutton-text {
- font-size: 100% !important;
- margin: 0 !important;
-}
-
-.toolbar-text-button > .toolbarbutton-text,
-.toolbar-text-menubutton > .toolbarbutton-text {
- display: -moz-box !important;
- height: 16px !important;
- padding-top: 1px;
-}
-
-.toolbar-text-button > .toolbarbutton-menu-dropmarker,
-.toolbar-text-menubutton > .toolbarbutton-menu-dropmarker {
- list-style-image: url("chrome://browser/skin/bookmarks/folderarrow.png");
- width: 16px !important;
- height: 16px !important;
- padding: 5px 5px 4px 3px;
-}
-
-.toolbar-text-menubutton:hover:not([disabled="true"]) > .toolbarbutton-menu-dropmarker,
-.toolbar-text-menubutton[open="true"]:not([disabled="true"]) > .toolbarbutton-menu-dropmarker {
- list-style-image: url("chrome://browser/skin/bookmarks/folderarrow-hover.png");
-}
-
-.toolbar-text-button[disabled="true"] > .toolbarbutton-menu-dropmarker,
-.toolbar-text-menubutton[disabled="true"] > .toolbarbutton-menu-dropmarker {
- list-style-image: none;
-}
-
-/********************************************************************************************/
-
-.toolbar-text-menulist {
- margin-top: 0;
- margin-bottom: 0;
- -moz-appearance: none;
- color: #565656;
-}
-
-.toolbar-text-menulist > .menulist-label-box {
- -moz-appearance: none;
- border: none;
- padding-left: 8px;
- background: url(chrome://firebug/skin/menulistLeft.png) no-repeat left center;
-}
-
-.toolbar-text-menulist > .menulist-dropmarker {
- -moz-appearance: none;
- width: 20px;
- background: url(chrome://firebug/skin/menulistRight.png) no-repeat left center;
-}
-
-.toolbar-text-menulist > .menulist-dropmarker > .dropmarker-icon {
-}
-
-.toolbar-label {
- color: #565656;
-}
-
-/* ensure the inner toolbar background looks the same as the other toolbars */
-#fbToolbarInner.innerToolbar {
- border-top: 1px solid #fff;
- margin-left: -5px;
- margin-right: 0;
- background: linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.6)) no-repeat 0 0;
-}
-
-.useA11y #fbPanelBar1 textbox[focused],
-.searchOptionsMenu button:focus {
- -moz-outline-radius: 10px !important;
-}
-
-/* issue 2780, moved from upper level firebug.css, RMC */
-
-.toolbar-image-button {
- -moz-appearance: none;
- margin: 0 2px;
- border: none;
- padding: 0 !important;
- background: transparent !important;
-}
-
-.toolbar-image-button > .toolbarbutton-icon {
- padding: 0 !important;
-}
-
-.toolbar-image-button > .toolbarbutton-text {
- display: none;
-}
-
-
-/************************************************************************************************/
-/* Scrollable TabBar + TabList */
-
-#fbPanelBar1-innerToolbar {
- margin-right: 0;
-}
-
-#fbPanelBar1-tabBox > panelBarArrowscrollbox > .scrollbutton-up {
- border-right: 2px solid !important;
- -moz-border-right-colors: rgba(0,0,0,0.25) rgba(255,255,255,0.15) !important;
- border-left: 2px solid transparent !important;
-}
-
-#fbPanelBar1-tabBox > panelBarArrowscrollbox > .scrollbutton-down {
- border-left: 2px solid !important;
- border-right: 2px solid !important;
- -moz-border-left-colors: rgba(0,0,0,0.25) rgba(255,255,255,0.15) !important;
- -moz-border-right-colors: rgba(0,0,0,0.25) rgba(255,255,255,0.15) !important;
-}
-
-.fb-tabs-alltabs-button > .toolbarbutton-text {
- display: none;
-}
-
-.fb-tabs-alltabs-button {
- margin-right: 0;
- padding: 0 4px 0 3px !important;
- border-left: 2px solid !important;
- border-right: 2px solid !important;
- -moz-border-left-colors: rgba(0,0,0,0.25) rgba(255,255,255,0.15) !important;
- -moz-border-right-colors: rgba(0,0,0,0.25) rgba(255,255,255,0.15) !important;
-}
-
-/************************************************************************************************/
-
-#fbMigrationOk {
- font-family: Monaco, monospace;
-}
+/* See license.txt for terms of usage */
+
+#fbFirebugMenu > .toolbarbutton-text,
+#fbFirebugMenu > .toolbarbutton-menu-dropmarker {
+ display: none;
+}
+
+/************************************************************************************************/
+
+#fbCommandToolbar {
+ border-top: 1px solid #BBB9BA;
+ border-bottom: 1px solid #BBB9BA;
+ background: #F6F6F6 linear-gradient(to top, #FFFFFF, #E9E9E9 55%, #F2F2F2 55%, #FAFAFA) repeat-x;
+}
+
+#fbCommandArrow,
+#fbCommandLine,
+#fbCommandEditor,
+#fbCommandLineCompletion,
+#fbCommandLineMeasurer,
+.fbCommandLineCompletions {
+ font-family: Monaco, monospace;
+}
+
+/* Add some more padding to the completion popup */
+.userTypedText {
+ margin-left: 1px;
+}
+
+#fbCommandEditor {
+ -moz-appearance: none;
+ border: none;
+ border-top: 1px solid;
+ -moz-border-top-colors: #BBB9BA;
+ padding: 2px;
+}
+
+#fbContentSplitter {
+ border-color: #BBB9BA;
+ background: #f3f3f3 !important;
+}
+
+#fbPanelSplitter {
+ background: #f3f3f3 !important;
+ border-left: 1px solid #BBB9BA;
+ border-right: 1px solid #BBB9BA;
+ min-width: 8px;
+ max-width: 8px;
+}
+
+#fbPanelSplitter[orient="vertical"] {
+ border: none;
+ border-top: 1px solid #BBB9BA;
+ min-height: 8px;
+ max-height: 8px;
+ min-width: 0;
+ max-width: none;
+}
+
+#fbToolbar {
+ padding-left: 4px;
+ border-bottom: none;
+}
+
+.innerToolbar {
+ margin-right: 5px; /* add some space between last button and first tab */
+}
+
+#fbWindowButtons.innerToolbar {
+ padding: 7px 0 7px 0; /* Set proper height of window buttons (close, min, detach) */
+}
+
+.fbsearch-textbox {
+ border-radius: 10px !important;
+ margin-top: 1px;
+}
+
+.fbsearch-icon {
+ width: 22px;
+}
+
+.fbsearch-icon,
+.fbsearch-icon:hover {
+ background-position: 5px 50%;
+}
+
+/* xxxsz: Use PNG images for condition editor, because using SVGs as border images is broken
+ up to Firefox 22.0. Use SVGs as soon as Firefox 23.0 is the min. supported version.
+ (see issue 6607) */
+#fbSearchOptionsPanel {
+ -moz-appearance: none;
+ -moz-window-shadow: none;
+ background-color: transparent;
+ margin-bottom: 2px;
+ margin-right: -12px;
+ border-image: url(chrome://firebug/skin/mac/searchPanel.png) 16 50 24 12 stretch;
+ border-image-slice: 16 50 24 12 fill;
+ border-width: 16px 50px 24px 12px;
+ border-style: solid;
+ color: #ffffff;
+}
+
+#fbSearchOptionsPanel[position="after_end"] {
+ border-image: url(chrome://firebug/skin/mac/searchPanelDown.png) 25 50 18 12 stretch;
+ border-image-slice: 25 50 18 12 fill;
+ border-width: 25px 50px 18px 12px;
+}
+
+#fbSearchOptionsPanel > vbox {
+ margin-right: -38px;
+}
+
+#fbSearchOptionsPanel > description {
+ margin: 0;
+}
+
+.fbsearch-options-label {
+ color: #ffffff;
+}
+
+.fbsearch-options-buttons {
+ -moz-appearance: none;
+ background: #464646 linear-gradient(
+ to top,
+ rgba(255, 255, 255, 0.3),
+ rgba(255, 255, 255, 0) 55%,
+ rgba(255, 255, 255, 0.1) 55%,
+ rgba(255, 255, 255, 0.2)) repeat-x center center;
+ border: 3px solid;
+ -moz-border-top-colors: rgba(0,0,0,0.35) rgba(26,26,26,0.5) rgba(255,255,255,0.4);
+ -moz-border-right-colors: rgba(53,53,53,1) rgba(53,53,53,1) rgba(162,162,162,1);
+ -moz-border-bottom-colors: rgba(128,128,128,0.35) rgba(0,0,0,0.5) rgba(255,255,255,0.15);
+ -moz-border-left-colors: rgba(0,0,0,0.35) rgba(26,26,26,0.5) rgba(255,255,255,0.4);
+ border-radius: 20px;
+ padding: 1px 9px;
+ margin: 10px 0 0;
+ min-height: 0px;
+ color: #ffffff;
+}
+
+.fbsearch-options-buttons > .button-box > .button-text {
+ margin: 0 !important;
+}
+
+.fbsearch-options-buttons:hover {
+ background-color: #666666 !important;
+}
+
+.fbsearch-options-buttons:active {
+ background-color: #86888B !important;
+}
+
+/* Don't display label and remove padding for all the following toolbar buttons */
+#fbFirebugMenu,
+#fbInspectButton,
+#fbNavigateBackButton,
+#fbNavigateForwardButton,
+#fbCommandPopupButton {
+ margin: 0 1px 0 1px;
+ padding: 0 1px 0 1px;
+}
+
+#fbFirebugMenu > .toolbarbutton-text,
+#fbInspectButton > .toolbarbutton-text,
+#fbNavigateBackButton > .toolbarbutton-text,
+#fbNavigateForwardButton > .toolbarbutton-text,
+#fbCommandPopupButton > .toolbarbutton-text {
+ display: none;
+}
+
+.toolbarbutton-iconic {
+ margin: 1px 1px 0 1px !important;
+ padding: 0 !important;
+}
+
+.toolbarbutton-iconic > .toolbarbutton-icon {
+ padding: 0;
+}
+
+.toolbarbutton-iconic > .toolbarbutton-text {
+ display: none;
+}
+
+#fbMinimizeButton,
+#fbToggleCommandEditor {
+ list-style-image: url(chrome://firebug/skin/mac/minimize.png);
+ -moz-image-region: rect(0px, 13px, 13px, 0px);
+}
+
+/* Need to use images instead of filters due to https://bugzil.la/886883 */
+#fbMinimizeButton:hover,
+#fbToggleCommandEditor:hover {
+ -moz-image-region: rect(13px, 13px, 26px, 0px);
+}
+
+#fbMinimizeButton:hover:active,
+#fbToggleCommandEditor:hover:active {
+ -moz-image-region: rect(26px, 13px, 39px, 0px);
+}
+
+#fbDetachButton,
+#fbToggleCommandLine {
+ list-style-image: url(chrome://firebug/skin/mac/detach.png);
+ -moz-image-region: rect(0px, 13px, 13px, 0px);
+}
+
+#fbDetachButton:hover,
+#fbToggleCommandLine:hover {
+ -moz-image-region: rect(13px, 13px, 26px, 0px);
+}
+
+#fbDetachButton:hover:active,
+#fbToggleCommandLine:hover:active {
+ -moz-image-region: rect(26px, 13px, 39px, 0px);
+}
+
+#fbToggleCommandLine,
+#fbToggleCommandEditor {
+ margin-right: 20px !important;
+}
+
+#fbCloseButton {
+ list-style-image: url(chrome://firebug/skin/mac/close.png);
+ -moz-image-region: rect(0px, 13px, 13px, 0px);
+}
+
+#fbCloseButton:hover {
+ -moz-image-region: rect(13px, 13px, 26px, 0px);
+}
+
+#fbCloseButton:hover:active {
+ -moz-image-region: rect(26px, 13px, 39px, 0px);
+}
+
+#fbCommandLineHistoryButton {
+ list-style-image: url(chrome://firebug/skin/mac/commandHistory.png);
+ -moz-image-region: rect(0px, 13px, 13px, 0px);
+}
+
+#fbCommandLineHistoryButton:hover {
+ -moz-image-region: rect(13px, 13px, 26px, 0px);
+}
+
+#fbCommandLineHistoryButton:hover:active {
+ -moz-image-region: rect(26px, 13px, 39px, 0px);
+}
+
+#fbCommandLineHistoryButton[disabled] {
+ -moz-image-region: rect(39px, 13px, 52px, 0px);
+}
+
+#fbToggleCommandEditor {
+ list-style-image: url(chrome://firebug/skin/mac/minimize.png);
+ -moz-image-region: rect(0px, 13px, 13px, 0px);
+}
+
+#fbToggleCommandEditor:hover {
+ -moz-image-region: rect(13px, 13px, 26px, 0px);
+}
+
+#fbToggleCommandEditor:hover:active {
+ -moz-image-region: rect(26px, 13px, 39px, 0px);
+}
+
+/********************************************************************************************/
+/* Quick Info Box */
+
+#fbQuickInfoPanel {
+ font-family: Monaco, monospace;
+}
+
+/************************************************************************************************/
+/* Command History panel */
+
+#fbCommandHistory {
+ font-family: Monaco, monospace;
+}
+
+/********************************************************************************************/
+
+.panelTabBox {
+ background: linear-gradient(to bottom, #f1f1f1, #d2d2d2) no-repeat 0 0;
+ border-bottom: 1px solid #bebebe;
+ padding: 0;
+ overflow: hidden;
+}
+
+.panelTabs {
+ padding: 0 2px 0 2px;
+ -moz-box-align: end;
+}
+
+panelTab {
+ margin: 4px 1px 0 3px;
+ border: 1px solid transparent;
+ border-bottom: none;
+ border-radius: 4px 4px 0 0;
+ padding: 5px 8px 7px 8px;
+ font-size: 11px;
+ font-weight: bold;
+ color: #3a3a3a;
+ direction: ltr;
+}
+
+panelTab[aria-disabled="true"] .panelTab-text {
+ -moz-appearance: none;
+ color: #7c7c7c !important;
+}
+
+panelTab[selected="true"] {
+ border: 1px solid #A0A0A0;
+ border-bottom: none;
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.6)) no-repeat 0 0;
+ color: inherit;
+}
+
+panelTab:not([selected="true"]):hover {
+ border: 1px solid #C8C8C8;
+ border-bottom: none;
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.2)) no-repeat 0 0;
+}
+
+.panelTab-text {
+ margin: 0;
+}
+
+panelTab[selected="true"] > panelTabMenu {
+ margin-left: 3px;
+}
+
+/************************************************************************************************/
+
+#fbPanelStatus {
+ margin: 2px 5px 3px 0;
+ padding: 0 5px;
+ overflow: hidden;
+}
+
+.panelStatusSeparator {
+ margin: 0;
+ color: #999999;
+}
+
+.panelStatusLabel {
+ margin: 0;
+ padding: 0 4px;
+ cursor: pointer;
+ color: #565656;
+}
+
+.panelStatusLabel:hover {
+ color: blue;
+}
+
+.panelStatusLabel[selected="true"] {
+ font-weight: bold;
+}
+
+.menuHeader {
+ margin: 2px 16px;
+ color: #565656;
+}
+
+/************************************************************************************************/
+
+.toolbar-text-button,
+.toolbar-text-menubutton {
+ -moz-appearance: none;
+ margin-top: 7px;
+ margin-bottom: 6px;
+ padding: 0 8px;
+ min-width: 0;
+ max-width: 13em;
+ font-weight: bold;
+ color: #3a3a3a;
+ border: none !important;
+ border-radius: 9px;
+}
+
+.toolbar-text-button > .toolbarbutton-text {
+ margin-left: 7px;
+}
+
+.toolbar-text-button > .toolbarbutton-icon {
+ display: none !important;
+}
+
+.toolbar-text-button:hover:not([disabled="true"]),
+.toolbar-text-menubutton:hover:not([disabled="true"]) ,
+.toolbar-text-button[checked="true"]:hover:not([disabled="true"]),
+.toolbar-text-menubutton[open="true"]:hover:not([disabled="true"]) {
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .5) inset;
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.toolbar-text-button:hover:active:not([disabled="true"]),
+.toolbar-text-menubutton:hover:active:not([disabled="true"]) {
+ background: rgba(0, 0, 0, 0.5);
+}
+
+.toolbar-text-button:hover:not([disabled="true"]) > .toolbarbutton-text,
+.toolbar-text-menubutton:hover:not([disabled="true"]) > .toolbarbutton-menu-dropmarker,
+.toolbar-text-menubutton:hover:not([disabled="true"]) > .toolbarbutton-text {
+ color: #fff;
+ text-shadow: 0 1px rgba(120, 120, 120, 1);
+}
+
+.toolbar-text-button[checked="true"]:not([disabled="true"]),
+.toolbar-text-menubutton[open="true"]:not([disabled="true"]) {
+ text-shadow: 0 1px rgba(120, 120, 120, 1);
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .5) inset;
+ background: rgba(0, 0, 0, 0.3);
+}
+
+.toolbar-text-menubutton:hover:active:not([disabled="true"]) > .toolbarbutton-text,
+.toolbar-text-menubutton[open="true"]:not([disabled="true"]) > .toolbarbutton-text {
+ color: #fff;
+}
+
+.toolbar-text-button > .toolbarbutton-text {
+ color: #3a3a3a;
+}
+
+.toolbar-text-button[checked="true"] > .toolbarbutton-text {
+ color: #fff;
+}
+
+.toolbar-text-button .toolbarbutton-text,
+.toolbar-text-menubutton .toolbarbutton-text {
+ font-size: 100% !important;
+ margin: 0 !important;
+}
+
+.toolbar-text-button > .toolbarbutton-text,
+.toolbar-text-menubutton > .toolbarbutton-text {
+ display: -moz-box !important;
+ height: 16px !important;
+ padding-top: 1px;
+}
+
+.toolbar-text-button > .toolbarbutton-menu-dropmarker,
+.toolbar-text-menubutton > .toolbarbutton-menu-dropmarker {
+ list-style-image: url("chrome://browser/skin/bookmarks/folderarrow.png");
+ width: 16px !important;
+ height: 16px !important;
+ padding: 5px 5px 4px 3px;
+}
+
+.toolbar-text-menubutton:hover:not([disabled="true"]) > .toolbarbutton-menu-dropmarker,
+.toolbar-text-menubutton[open="true"]:not([disabled="true"]) > .toolbarbutton-menu-dropmarker {
+ list-style-image: url("chrome://browser/skin/bookmarks/folderarrow-hover.png");
+}
+
+.toolbar-text-button[disabled="true"] > .toolbarbutton-menu-dropmarker,
+.toolbar-text-menubutton[disabled="true"] > .toolbarbutton-menu-dropmarker {
+ list-style-image: none;
+}
+
+/********************************************************************************************/
+
+.toolbar-text-menulist {
+ margin-top: 0;
+ margin-bottom: 0;
+ -moz-appearance: none;
+ color: #565656;
+}
+
+.toolbar-text-menulist > .menulist-label-box {
+ -moz-appearance: none;
+ border: none;
+ padding-left: 8px;
+ background: url(chrome://firebug/skin/menulistLeft.png) no-repeat left center;
+}
+
+.toolbar-text-menulist > .menulist-dropmarker {
+ -moz-appearance: none;
+ width: 20px;
+ background: url(chrome://firebug/skin/menulistRight.png) no-repeat left center;
+}
+
+.toolbar-text-menulist > .menulist-dropmarker > .dropmarker-icon {
+}
+
+.toolbar-label {
+ color: #565656;
+}
+
+/* ensure the inner toolbar background looks the same as the other toolbars */
+#fbToolbarInner.innerToolbar {
+ border-top: 1px solid #fff;
+ margin-left: -5px;
+ margin-right: 0;
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.6)) no-repeat 0 0;
+}
+
+.useA11y #fbPanelBar1 textbox[focused],
+.searchOptionsMenu button:focus {
+ -moz-outline-radius: 10px !important;
+}
+
+/* issue 2780, moved from upper level firebug.css, RMC */
+
+.toolbar-image-button {
+ -moz-appearance: none;
+ margin: 0 2px;
+ border: none;
+ padding: 0 !important;
+ background: transparent !important;
+}
+
+.toolbar-image-button > .toolbarbutton-icon {
+ padding: 0 !important;
+}
+
+.toolbar-image-button > .toolbarbutton-text {
+ display: none;
+}
+
+
+/************************************************************************************************/
+/* Scrollable TabBar + TabList */
+
+#fbPanelBar1-innerToolbar {
+ margin-right: 0;
+}
+
+#fbPanelBar1-tabBox > panelBarArrowscrollbox > .scrollbutton-up {
+ border-right: 2px solid !important;
+ -moz-border-right-colors: rgba(0,0,0,0.25) rgba(255,255,255,0.15) !important;
+ border-left: 2px solid transparent !important;
+}
+
+#fbPanelBar1-tabBox > panelBarArrowscrollbox > .scrollbutton-down {
+ border-left: 2px solid !important;
+ border-right: 2px solid !important;
+ -moz-border-left-colors: rgba(0,0,0,0.25) rgba(255,255,255,0.15) !important;
+ -moz-border-right-colors: rgba(0,0,0,0.25) rgba(255,255,255,0.15) !important;
+}
+
+.fb-tabs-alltabs-button > .toolbarbutton-text {
+ display: none;
+}
+
+.fb-tabs-alltabs-button {
+ margin-right: 0;
+ padding: 0 4px 0 3px !important;
+ border-left: 2px solid !important;
+ border-right: 2px solid !important;
+ -moz-border-left-colors: rgba(0,0,0,0.25) rgba(255,255,255,0.15) !important;
+ -moz-border-right-colors: rgba(0,0,0,0.25) rgba(255,255,255,0.15) !important;
+}
+
+/************************************************************************************************/
+
+#fbMigrationOk {
+ font-family: Monaco, monospace;
+}
diff --git a/skin/classic/mac/left.svg b/skin/classic/mac/left.svg
deleted file mode 100644
index 42e3fde..0000000
--- a/skin/classic/mac/left.svg
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- See license.txt for terms of usage -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.1"
- width="13"
- height="13"
- id="svg2">
- <metadata
- id="metadata8">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs6">
- <filter
- x="-0.18970588"
- y="-0.32658228"
- width="1.3794118"
- height="1.6531646"
- color-interpolation-filters="sRGB"
- id="filter3773">
- <feGaussianBlur
- id="feGaussianBlur3775"
- stdDeviation="0.671875" />
- </filter>
- </defs>
- <path
- d="m 11.564935,6.0103898 a 5.638961,5.638961 0 1 1 -11.27792195,0 5.638961,5.638961 0 1 1 11.27792195,0 z"
- transform="matrix(1.0640258,0,0,1.0640258,-0.30538929,-0.39520964)"
- id="path2987"
- style="fill:#7f7f7f;fill-opacity:0.70196078;stroke:none" />
- <path
- d="M 2.46875,9 1.75,8.3125 6,4.0625 10.25,8.3125 9.53125,9 6,5.46875 z"
- transform="matrix(0,-1,1,0,-1.031,12.9315)"
- id="rect2998-1"
- style="opacity:0.25;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter3773)" />
- <path
- d="m 7.969,9.46275 -0.6875,0.71875 -4.25,-4.25 4.25,-4.25 L 7.969,2.40025 4.43775,5.9315 z"
- id="rect2998"
- style="fill:#ffffff;fill-opacity:1;stroke:none" />
-</svg>
diff --git a/skin/classic/mac/panel.css b/skin/classic/mac/panel.css
index 63b3b4d..88cf5f3 100644
--- a/skin/classic/mac/panel.css
+++ b/skin/classic/mac/panel.css
@@ -1,166 +1,166 @@
-/* See license.txt for terms of usage */
-
-html {
- background-color: #f3f3f3;
-}
-
-body {
- border-top: 1px solid #BBB9BA;
-}
-
-/************************************************************************************************/
-/* Twisties */
-
-.twisty,
-.foldableGroup > .groupHeader > .twisty,
-.logRow-errorMessage .hasTwisty > .errorTitle,
-.logRow-log .objectBox-array.hasTwisty,
-.logRow-spy .spyHead .spyTitle,
-.logGroup > .logRow,
-.memberRow.hasChildren > .memberLabelCell > .memberLabel,
-.memberRow.cropped > .memberLabelCell > .memberLabel,
-.hasHeaders .netHrefLabel,
-.objectBox-stackFrame.hasTwisty,
-.objectBox-functionCall.hasTwisty,
-.netPageRow > .netCol > .netPageTitle,
-.computedStyle.hasSelectors > .stylePropName,
-.cookieRow > .cookieNameCol > .cookieNameLabel {
- background-image: url(chrome://firebug/skin/mac/twistyClosed.png);
- background-repeat: no-repeat;
- background-position: 2px calc(0.5em - 3px);
-}
-
-.foldableGroup.opened > .groupHeader > .twisty,
-.logRow-errorMessage .hasTwisty.opened > .errorTitle,
-.logRow-log .objectBox-array.hasTwisty.opened,
-.logRow-spy.opened .spyHead .spyTitle,
-.logGroup.opened > .logRow,
-.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,
-.memberRow.cropped.opened > .memberLabelCell > .memberLabel,
-.nodeBox.highlightOpen > .nodeLabel > .twisty,
-.nodeBox.open > .nodeLabel > .twisty,
-.netRow.opened > .netCol > .netHrefLabel,
-.netPageRow.opened > .netCol > .netPageTitle,
-.objectBox-stackFrame.hasTwisty.opened,
-.objectBox-functionCall.hasTwisty.opened,
-.computedStylesGroup.opened > .cssComputedHeader > .twisty,
-.breakpointBlock.opened > .breakpointHeader > .twisty,
-.computedStyle.hasSelectors.opened > .stylePropName,
-.cookieRow.opened > .cookieNameCol > .cookieNameLabel {
- background-image: url(chrome://firebug/skin/mac/twistyOpen.png);
-}
-
-/************************************************************************************************/
-/* Panel base */
-
-.infoTip,
-.fullPanelEditor {
- font-family: Monaco, monospace;
-}
-
-/************************************************************************************************/
-/* Console panel */
-
-.logRow-command > .objectBox-text,
-.objectBox-string,
-.objectBox-text,
-.objectBox-number,
-.objectLink-element,
-.objectLink-textNode,
-.objectLink-function,
-.objectBox-stackTrace,
-.objectLink-profile,
-.objectBox-table,
-.errorSource,
-.selectorTag,
-.selectorId,
-.selectorClass,
-.objectLeftBrace,
-.objectRightBrace,
-.objectEqual,
-.objectComma,
-.arrayLeftBracket,
-.arrayRightBracket,
-.arrayComma {
- font-family: Monaco, monospace;
-}
-
-/************************************************************************************************/
-/* HTML panel */
-
-.nodeBox,
-.docType,
-.breakpointCode .nodeBox.containerNodeBox,
-.breakpointCode .nodeLabel {
- font-family: Monaco, monospace;
-}
-
-.nodeBox.selected > .nodeLabel > .nodeLabelBox,
-.nodeBox.selected > .nodeLabel {
- border-color: #3875d7;
- background-color: #3875d7;
- color: #FFFFFF !important;
-}
-
-.nodeBox.highlighted > .nodeLabel {
- border-color: #3875d7 !important;
-}
-
-/************************************************************************************************/
-/* Layout panel */
-
-.layoutBox.editing,
-.layoutBox.highlighted {
- background-color: #3875d7;
-}
-
-.layoutBox.editing,
-.layoutBox.editing > .layoutCaption,
-.layoutBox.editing > .layoutLabel,
-.layoutBox.highlighted,
-.layoutBox.highlighted > .layoutCaption,
-.layoutBox.highlighted > .layoutLabel {
- color: #FFFFFF;
-}
-
-/************************************************************************************************/
-/* CSS panel */
-
-.cssRule {
- font-family: Monaco, monospace;
-}
-
-/************************************************************************************************/
-/* DOM panel */
-
-.editor-watchNewRow,
-.editor-memberRow {
- font-family: Monaco, monospace !important;
-}
-
-.watchRow > .memberLabelCell {
- font-family: Monaco, monospace;
-}
-
-.closeButton {
- display: inline-block;
- width: 13px;
- height: 13px;
- background: url(chrome://firebug/skin/mac/close.png) no-repeat 0 0;
-}
-
-.closeButton:hover {
- background-position: 0 -13px;
-}
-
-.closeButton:hover:active {
- background-position: 0 -26px;
-}
-
-/************************************************************************************************/
-/* Net panel */
-
-.useA11y .a11yShowFullLabel,
-.netInfoText {
- font-family: Monaco, monospace;
-}
+/* See license.txt for terms of usage */
+
+html {
+ background-color: #f3f3f3;
+}
+
+body {
+ border-top: 1px solid #BBB9BA;
+}
+
+/************************************************************************************************/
+/* Twisties */
+
+.twisty,
+.foldableGroup > .groupHeader > .twisty,
+.logRow-errorMessage .hasTwisty > .errorTitle,
+.logRow-log .objectBox-array.hasTwisty,
+.logRow-spy .spyHead .spyTitle,
+.logGroup > .logRow,
+.memberRow.hasChildren > .memberLabelCell > .memberLabel,
+.memberRow.cropped > .memberLabelCell > .memberLabel,
+.hasHeaders .netHrefLabel,
+.objectBox-stackFrame.hasTwisty,
+.objectBox-functionCall.hasTwisty,
+.netPageRow > .netCol > .netPageTitle,
+.computedStyle.hasSelectors > .stylePropName,
+.cookieRow > .cookieNameCol > .cookieNameLabel {
+ background-image: url(chrome://firebug/skin/mac/twistyClosed.png);
+ background-repeat: no-repeat;
+ background-position: 2px calc(0.5em - 3px);
+}
+
+.foldableGroup.opened > .groupHeader > .twisty,
+.logRow-errorMessage .hasTwisty.opened > .errorTitle,
+.logRow-log .objectBox-array.hasTwisty.opened,
+.logRow-spy.opened .spyHead .spyTitle,
+.logGroup.opened > .logRow,
+.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,
+.memberRow.cropped.opened > .memberLabelCell > .memberLabel,
+.nodeBox.highlightOpen > .nodeLabel > .twisty,
+.nodeBox.open > .nodeLabel > .twisty,
+.netRow.opened > .netCol > .netHrefLabel,
+.netPageRow.opened > .netCol > .netPageTitle,
+.objectBox-stackFrame.hasTwisty.opened,
+.objectBox-functionCall.hasTwisty.opened,
+.computedStylesGroup.opened > .cssComputedHeader > .twisty,
+.breakpointBlock.opened > .breakpointHeader > .twisty,
+.computedStyle.hasSelectors.opened > .stylePropName,
+.cookieRow.opened > .cookieNameCol > .cookieNameLabel {
+ background-image: url(chrome://firebug/skin/mac/twistyOpen.png);
+}
+
+/************************************************************************************************/
+/* Panel base */
+
+.infoTip,
+.fullPanelEditor {
+ font-family: Monaco, monospace;
+}
+
+/************************************************************************************************/
+/* Console panel */
+
+.logRow-command > .objectBox-text,
+.objectBox-string,
+.objectBox-text,
+.objectBox-number,
+.objectLink-element,
+.objectLink-textNode,
+.objectLink-function,
+.objectBox-stackTrace,
+.objectLink-profile,
+.objectBox-table,
+.errorSource,
+.selectorTag,
+.selectorId,
+.selectorClass,
+.objectLeftBrace,
+.objectRightBrace,
+.objectEqual,
+.objectComma,
+.arrayLeftBracket,
+.arrayRightBracket,
+.arrayComma {
+ font-family: Monaco, monospace;
+}
+
+/************************************************************************************************/
+/* HTML panel */
+
+.nodeBox,
+.docType,
+.breakpointCode .nodeBox.containerNodeBox,
+.breakpointCode .nodeLabel {
+ font-family: Monaco, monospace;
+}
+
+.nodeBox.selected > .nodeLabel > .nodeLabelBox,
+.nodeBox.selected > .nodeLabel {
+ border-color: #3875d7;
+ background-color: #3875d7;
+ color: #FFFFFF !important;
+}
+
+.nodeBox.highlighted > .nodeLabel {
+ border-color: #3875d7 !important;
+}
+
+/************************************************************************************************/
+/* Layout panel */
+
+.layoutBox.editing,
+.layoutBox.highlighted {
+ background-color: #3875d7;
+}
+
+.layoutBox.editing,
+.layoutBox.editing > .layoutCaption,
+.layoutBox.editing > .layoutLabel,
+.layoutBox.highlighted,
+.layoutBox.highlighted > .layoutCaption,
+.layoutBox.highlighted > .layoutLabel {
+ color: #FFFFFF;
+}
+
+/************************************************************************************************/
+/* CSS panel */
+
+.cssRule {
+ font-family: Monaco, monospace;
+}
+
+/************************************************************************************************/
+/* DOM panel */
+
+.editor-watchNewRow,
+.editor-memberRow {
+ font-family: Monaco, monospace !important;
+}
+
+.watchRow > .memberLabelCell {
+ font-family: Monaco, monospace;
+}
+
+.closeButton {
+ display: inline-block;
+ width: 13px;
+ height: 13px;
+ background: url(chrome://firebug/skin/mac/close.png) no-repeat 0 0;
+}
+
+.closeButton:hover {
+ background-position: 0 -13px;
+}
+
+.closeButton:hover:active {
+ background-position: 0 -26px;
+}
+
+/************************************************************************************************/
+/* Net panel */
+
+.useA11y .a11yShowFullLabel,
+.netInfoText {
+ font-family: Monaco, monospace;
+}
diff --git a/skin/classic/mac/right.svg b/skin/classic/mac/right.svg
deleted file mode 100644
index 7b43866..0000000
--- a/skin/classic/mac/right.svg
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- See license.txt for terms of usage -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.1"
- width="13"
- height="13"
- id="svg2">
- <metadata
- id="metadata8">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs6">
- <filter
- x="-0.18970588"
- y="-0.32658228"
- width="1.3794118"
- height="1.6531646"
- color-interpolation-filters="sRGB"
- id="filter3809">
- <feGaussianBlur
- stdDeviation="0.671875"
- id="feGaussianBlur3811" />
- </filter>
- </defs>
- <path
- d="m 11.564935,6.0103898 a 5.638961,5.638961 0 1 1 -11.27792195,0 5.638961,5.638961 0 1 1 11.27792195,0 z"
- transform="matrix(1.0640258,0,0,1.0640258,-0.30538929,-0.39520964)"
- id="path2987"
- style="fill:#7f7f7f;fill-opacity:0.70196078;stroke:none" />
- <path
- d="M 2.46875,5.0625 1.75,5.75 6,10 10.25,5.75 9.53125,5.0625 6,8.5937499 z"
- transform="matrix(0,-1,1,0,-1.031,12.9315)"
- id="rect2998-7"
- style="opacity:0.25;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter3809)" />
- <path
- d="M 4.0315,9.46275 4.719,10.1815 8.969,5.9315 4.719,1.6815 4.0315,2.40025 7.56275,5.9315 z"
- id="rect2998"
- style="fill:#ffffff;fill-opacity:1;stroke:none" />
-</svg>
diff --git a/skin/classic/mac/window.css b/skin/classic/mac/window.css
index 9c347ca..1f5f80f 100644
--- a/skin/classic/mac/window.css
+++ b/skin/classic/mac/window.css
@@ -1,11 +1,11 @@
-/* See license.txt for terms of usage */
-
-#fbToolbar {
- padding-top: 0;
- padding-bottom: 1px;
-}
-
-#fbToggleCommandLine,
-#fbToggleCommandEditor {
- width: 48px;
-}
+/* See license.txt for terms of usage */
+
+#fbToolbar {
+ padding-top: 0;
+ padding-bottom: 1px;
+}
+
+#fbToggleCommandLine,
+#fbToggleCommandEditor {
+ width: 48px;
+}
diff --git a/skin/classic/migrationArrow.svg b/skin/classic/migrationArrow.svg
deleted file mode 100644
index 3d7db59..0000000
--- a/skin/classic/migrationArrow.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" >
-<!-- See license.txt for terms of usage -->
- <defs>
- <marker id="Triangle"
- viewBox="0 0 10 10" refX="3" refY="5"
- markerUnits="strokeWidth"
- markerWidth="3" markerHeight="3"
- style="stroke:#FF9933;"
- orient="auto">
- <path d="M 0 0 L 10 5 L 0 10 z" />
- </marker>
- </defs>
- <line id="migrationPath" x1="0" x2="80" y1="0" y2="80" style="background-color:transparent;z-index:2;fill:none;stroke:#FF9933;stroke-width:4;" marker-end="url(#Triangle)"/>
-
-</svg>
\ No newline at end of file
diff --git a/skin/classic/net.css b/skin/classic/net.css
index b3c63d6..5198e5e 100644
--- a/skin/classic/net.css
+++ b/skin/classic/net.css
@@ -1,788 +1,788 @@
-/* See license.txt for terms of usage */
-
-.panelNode-net {
- overflow-x: hidden;
-}
-
-.netTable {
- width: 100%;
-}
-
-/*************************************************************************************************/
-
-.hideCategory-undefined .category-undefined,
-.hideCategory-html .category-html,
-.hideCategory-css .category-css,
-.hideCategory-js .category-js,
-.hideCategory-image .category-image,
-.hideCategory-xhr .category-xhr,
-.hideCategory-plugin .category-plugin,
-.hideCategory-media .category-media,
-.hideCategory-font .category-font,
-.hideCategory-txt .category-txt,
-.hideCategory-bin .category-bin {
- display: none!important;
-}
-
-/*************************************************************************************************/
-/* Header for Net panel table */
-
-.netHeaderRow {
- height: 16px;
-}
-
-.netHeaderCell {
- cursor: pointer;
- -moz-user-select: none;
- border-bottom: 1px solid #9C9C9C;
- padding: 0 !important;
- font-weight: bold;
- background: #C4C4C4 linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2));
- color: #000000;
- white-space: nowrap;
-}
-
-.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox {
- padding: 2px 14px 2px 18px;
-}
-
-.netHeaderCellBox {
- padding: 2px 14px 2px 10px;
- border-left: 1px solid #D9D9D9;
- border-right: 1px solid #9C9C9C;
-}
-
-.netHeaderCell:hover:active {
- background-color: #B4B4B4;
-}
-
-.netHeaderSorted {
- background-color: #8CA0BE;
-}
-
-.netHeaderSorted > .netHeaderCellBox {
- border-right-color: #6B7C93;
- background: url(chrome://firebug/skin/arrowDown.png) no-repeat calc(100% - 4px);
-}
-
-.netHeaderSorted.sortedAscending > .netHeaderCellBox {
- background-image: url(chrome://firebug/skin/arrowUp.png);
-}
-
-.netHeaderSorted:hover:active {
- background-color: #6E87AA;
-}
-
-/*************************************************************************************************/
-/* Breakpoints */
-
-.panelNode-net .netRowHeader {
- display: block;
-}
-
-.netRowHeader {
- position: relative;
- display: none;
- height: 15px;
- margin-right: 0 !important;
-}
-
-.category-xhr .netRowHeader {
- cursor: pointer;
-}
-
-/* Display breakpoint disc */
-.netRow .netRowHeader {
- width: 3px;
- height: 100%;
- background-position: 5px 4px;
-}
-
-.netRow[breakpoint="true"] .netRowHeader {
- background-image: url(chrome://firebug/skin/breakpoint.png);
-}
-
-.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader {
- background-image: none;
-}
-
-.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader::before {
- content: "";
- position: absolute;
- top: 4px;
- left: 5px;
- width: 12px;
- height: 12px;
- background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
- opacity: 0.5;
-}
-
-.netRow.category-xhr:hover .netRowHeader {
- background-color: #F6F6F6;
-}
-
-#netBreakpointBar,
-.netDebugCol {
- max-width: 30px;
-}
-
-#netHrefCol > .netHeaderCellBox {
- border-left: 0px;
-}
-
-.netInfoRow .netRowHeader {
- display: table-cell;
-}
-
-.netDebugCol {
- border-right: 1px solid #CCCCCC;
- background-color: #EEEEEE;
-}
-
-.netDebugCol .sourceLine {
- border-right: none;
-}
-
-/*************************************************************************************************/
-/* Column visibility */
-
-.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],
-.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,
-.netTable[hiddenCols~=netProtocolCol] TD[id="netProtocolCol"],
-.netTable[hiddenCols~=netProtocolCol] TD.netProtocolCol,
-.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],
-.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,
-.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],
-.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,
-.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],
-.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,
-.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],
-.netTable[hiddenCols~=netTimeCol] TD.netTimeCol,
-.netTable[hiddenCols~=netLocalAddressCol] TD[id="netLocalAddressCol"],
-.netTable[hiddenCols~=netLocalAddressCol] TD.netLocalAddressCol,
-.netTable[hiddenCols~=netRemoteAddressCol] TD[id="netRemoteAddressCol"],
-.netTable[hiddenCols~=netRemoteAddressCol] TD.netRemoteAddressCol {
- display: none;
-}
-
-/*************************************************************************************************/
-
-.netRow {
- background: LightYellow;
-}
-
-.netRow.loaded {
- background: #FFFFFF;
-}
-
-.netRow.loaded:hover {
- background: #EFEFEF;
-}
-
-/* Visual separator between phases */
-.netRow[breakLayout="true"] .netCol {
- border-top: 1px solid rgb(207,207,207);
-}
-
-.netRow[breakLayout="true"] .netCol.netDebugCol {
- border-top: none;
-}
-
-.netCol {
- padding: 0;
- vertical-align: top;
- border-bottom: 1px solid #EFEFEF;
- white-space: nowrap;
- height: 17px;
-}
-
-.netLabel {
- width: 100%;
-}
-
-.netStatusCol {
- padding-left: 10px;
- color: rgb(128, 128, 128);
-}
-
-.responseError > .netStatusCol {
- color: red;
-}
-
-.netDomainCol {
- padding-left: 5px;
-}
-
-.netSizeCol {
- text-align: right;
- padding-right: 10px;
-}
-
-.netProtocolCol,
-.netLocalAddressCol,
-.netRemoteAddressCol {
- padding-left: 5px;
- padding-right: 5px;
-}
-
-.netHrefLabel {
- -moz-box-sizing: padding-box;
- overflow: hidden;
- z-index: 10;
- position: absolute;
- padding-left: 18px;
- padding-top: 1px;
- padding-bottom: 3px;
- max-width: 15%;
- font-weight: bold;
-}
-
-.netFullHrefLabel {
- display: none;
- -moz-user-select: none;
- padding-right: 10px;
- max-width: 100%;
- background: #FFFFFF;
- z-index: 200;
-}
-
-.netHrefCol:hover > .netFullHrefLabel {
- display: block;
-}
-
-.netRow.loaded:hover .netCol > .netFullHrefLabel {
- background-color: #EFEFEF;
-}
-
-.useA11y .a11yShowFullLabel {
- display: block;
- background-image: none !important;
- border: 1px solid #CBE087;
- background-color: LightYellow;
- font-family: monospace;
- color: #000000;
- font-size: 10px;
- z-index: 2147483647;
-}
-
-.netSizeLabel {
- padding-left: 6px;
-}
-
-.netProtocolLabel,
-.netStatusLabel,
-.netDomainLabel,
-.netSizeLabel,
-.netAddressLabel,
-.netBar {
- padding: 1px 0 2px 0 !important;
-}
-
-.responseError {
- color: red;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.hasHeaders .netHrefLabel:hover {
- cursor: pointer;
- color: blue;
- text-decoration: underline;
-}
-
-/*************************************************************************************************/
-
-.netLoadingIcon {
- position: absolute;
- border: 0;
- margin-left: 14px;
- width: 16px;
- height: 16px;
- background: transparent no-repeat 0 0;
- background-image: url(chrome://firebug/skin/loading.png);
- display:inline-block;
-}
-
-.loaded .netLoadingIcon {
- display: none;
-}
-
-/*************************************************************************************************/
-/* Timeline */
-
-.netBar {
- position: relative;
- border-right: 50px solid transparent;
-}
-
-.netResolvingBar,
-.netConnectingBar,
-.netBlockingBar,
-.netSendingBar,
-.netWaitingBar,
-.netReceivingBar {
- position: absolute;
- left: 0;
- top: 1px;
- bottom: 1px;
- background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2));
-}
-
-.netBlockingBar {
- background-color: #EBE1D2;
- z-index: 60;
-}
-
-.netResolvingBar {
- background-color: #91D2DC;
- z-index: 50;
-}
-
-.netConnectingBar {
- background-color: #B9E164;
- z-index: 40;
-}
-
-.netSendingBar {
- background-color: #E1826E;
- z-index: 30;
-}
-
-.netWaitingBar {
- background-color: #B4A5D2;
- z-index: 20;
- min-width: 1px;
-}
-
-.netReceivingBar {
- background-color: #78E17D;
- z-index: 10;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-/* Vertical lines - time stamps */
-
-.netPageTimingBar {
- position: absolute;
- left: 0;
- top: 0;
- bottom: 0;
- width: 1px;
- z-index: 70;
- opacity: 0.5;
- display: none;
- margin-bottom:-1px;
-}
-
-.netWindowLoadBar {
- background-color: red;
-}
-
-.netContentLoadBar {
- background-color: blue;
-}
-
-.netPaintBar {
- background-color: green;
-}
-
-.netTimeStampBar {
- background-color: #A0A000;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.netTimeLabel {
- -moz-box-sizing: padding-box;
- position: absolute;
- top: 1px;
- left: 100%;
- padding-left: 6px;
- color: #808080;
- min-width: 16px;
-}
-
-/*
- * Timing info tip is reusing net timeline styles to display the same
- * colors for individual request phases. Notice that the info tip must
- * respect also 'loaded' and 'fromCache' styles that also modify the
- * actual color. These are used both on the same element in case
- * of the tooltip.
- */
-.fromCache .netReceivingBar,
-.fromCache.netReceivingBar {
- background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.1));
-}
-
-.netSummaryRow .netTimeLabel,
-.loaded .netTimeLabel {
- background: transparent;
-}
-
-/*************************************************************************************************/
-/* If coming from BF cache (no network activity) */
-
-.netTable .netRow.fromBFCache {
- display: none;
-}
-
-.netTable.showBFCacheResponses .netRow.fromBFCache {
- display: table-row;
- background-image: repeating-linear-gradient(135deg, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 5px, transparent 5px, transparent 10px);
- background-repeat: repeat;
-}
-
-.netRow.fromCache .netLabel,
-.netRow.fromBFCache .netBlockingBar,
-.netRow.fromBFCache .netResolvingBar,
-.netRow.fromBFCache .netConnectingBar,
-.netRow.fromBFCache .netSendingBar,
-.netRow.fromBFCache .netWaitingBar,
-.netRow.fromBFCache .netReceivingBar {
- opacity: 0.5;
-}
-
-.netRow.fromCache:not(.responseError) .netHrefLabel {
- opacity: 1.0;
- color: gray;
-}
-
-.netInfoResponseHeadersBody .headerFromBFCache {
- color: gray;
-}
-
-/*************************************************************************************************/
-/* Size Info tip */
-
-.sizeInfoLabelCol {
- font-weight: bold;
- padding-right: 10px;
- font-family: Lucida Grande, Tahoma, sans-serif;
- font-size: 11px;
-}
-
-.sizeInfoDetailCol {
- color: gray;
- text-align: right;
-}
-
-.sizeInfoDescCol {
- color: gray;
-}
-
-/*************************************************************************************************/
-/* Summary */
-
-.netSummaryLabel {
- color: #222222;
- padding-top: 2px;
-}
-
-.netSummaryRow {
- background: #BBBBBB !important;
- font-weight: bold;
-}
-
-.netSummaryRow .netBar {
- border-right-color: #BBBBBB;
-}
-
-.netSummaryRow > .netCol {
- border-top: 1px solid #999999;
- border-bottom: 2px solid;
- -moz-border-bottom-colors: #EFEFEF #999999;
-}
-
-.netSummaryRow > .netHrefCol:hover {
- background: transparent !important;
-}
-
-.netCountLabel {
- padding-left: 18px;
-}
-
-.netTotalSizeCol {
- text-align: right;
-}
-
-.netTotalTimeCol {
- text-align: right;
-}
-
-.netCacheSizeLabel {
- display: inline-block;
- float: left;
-}
-
-.netCacheSizeLabel[collapsed="true"] {
- display: none !important;
-}
-
-.netTotalTimeLabel {
- padding-right: 6px;
-}
-
-/*************************************************************************************************/
-
-.netLimitRow {
- background: rgb(255, 255, 225) !important;
- font-weight:normal;
- color: black;
- font-weight:normal;
-}
-
-.netLimitLabel {
- padding-left: 18px;
-}
-
-.netLimitRow > .netCol {
- border-bottom: 2px solid;
- -moz-border-bottom-colors: #EFEFEF #999999;
- vertical-align: middle !important;
- padding-top: 2px;
- padding-bottom: 2px;
-}
-
-.netLimitButton {
- font-size: 11px;
- padding-top: 1px;
- padding-bottom: 1px;
-}
-
-/*************************************************************************************************/
-
-.netInfoCol {
- border-top: 1px solid #EEEEEE;
- background: #FFFFFF linear-gradient(to bottom, rgba(0, 0, 0, 0.1), transparent 33px) repeat-x;
-}
-
-.netInfoBody {
- margin: 10px 0 4px 10px;
-}
-
-.netInfoTabs {
- position: relative;
- padding-left: 17px;
-}
-
-.netInfoTab {
- position: relative;
- top: -3px;
- margin-top: 10px;
- padding: 4px 6px;
- border: 1px solid transparent;
- border-bottom: none;
- font-weight: bold;
- color: #000000;
-}
-
-.netInfoTab:hover {
- cursor: pointer;
-}
-
-.netInfoTab[selected="true"] {
- cursor: default !important;
- border-color: #D7D7D7;
- border-radius: 4px 4px 0 0;
- background-color: #FFFFFF;
-}
-
-.logRow-netInfo.error .netInfoTitle {
- color: red;
-}
-
-.logRow-netInfo.loading .netInfoResponseText {
- font-style: italic;
- color: #888888;
-}
-
-.loading .netInfoResponseHeadersTitle {
- display: none;
-}
-
-.netInfoResponseSizeLimit {
- font-family: Lucida Grande, Tahoma, sans-serif;
- padding-top: 10px;
- font-size: 11px;
-}
-
-.netInfoText {
- display: none;
- margin: 0;
- border: 1px solid #D7D7D7;
- border-right: none;
- padding: 8px;
- background-color: #FFFFFF;
- font-family: monospace;
- /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */
-}
-
-.netInfoText[selected="true"] {
- display: block;
-}
-
-.netInfoParamName {
- padding: 0 10px 0 0;
- font-family: Lucida Grande, Tahoma, sans-serif;
- font-weight: bold;
- vertical-align: top;
- text-align: right;
- white-space: nowrap;
-}
-
-.netInfoParamValue {
- width: 100%;
-}
-
-.netInfoHeadersText,
-.netInfoPostText,
-.netInfoPutText,
-.netInfoPatchText {
- padding-top: 0;
-}
-
-.netInfoHeadersGroup,
-.netInfoPostParams,
-.netInfoPostSource {
- margin-bottom: 4px;
- border-bottom: 1px solid #D7D7D7;
- padding-top: 8px;
- padding-bottom: 2px;
- font-family: Lucida Grande, Tahoma, sans-serif;
- font-weight: bold;
- color: #565656;
-}
-
-.netInfoCachedResponseHeadersBody {
- color: gray;
-}
-
-.netInfoPostParamsTable,
-.netInfoPostPartsTable,
-.netInfoPostJSONTable,
-.netInfoPostXMLTable,
-.netInfoPostSVGTable,
-.netInfoPostSourceTable {
- margin-bottom: 10px;
- width: 100%;
-}
-
-.netInfoPostContentType {
- color: #bdbdbd;
- padding-left: 50px;
- font-weight: normal;
-}
-
-/*************************************************************************************************/
-/* HTML Preview & Resizer */
-
-.netInfoHtmlPreview {
- border: 0;
- width: 100%;
- height: 100%;
-}
-
-.netInfoHtmlText {
- padding: 0;
-}
-
-.htmlPreviewResizer {
- width: 100%;
- height: 5px;
- background-color: lightgrey;
- cursor: s-resize;
-}
-
-/* When HTML preview resizing is in progress set the cursor for all elements
- since the mouse doesn't have to be always just over the resizer and this
- avoids cursor flashing. */
-body[resizingHtmlPreview="true"] * {
- cursor: s-resize !important;
-}
-
-/* When HTML preview resizing is in progress mouse messages are not sent to
- the iframe document. */
-body[resizingHtmlPreview="true"] .netInfoHtmlPreview {
- pointer-events: none !important;
-}
-
-/*************************************************************************************************/
-/* Request & Response Headers */
-
-.netHeadersViewSource {
- color: #bdbdbd;
- margin-left: 200px;
- font-weight: normal;
-}
-
-.netHeadersViewSource:hover {
- color: blue;
- cursor: pointer;
-}
-
-/*************************************************************************************************/
-
-.netActivationRow {
- background: rgb(229, 229, 229) !important;
- font-weight: normal;
- color: black;
-}
-
-.netActivationLabel {
- background: url(chrome://firebug/skin/info.svg) no-repeat 3px 2px;
- padding-left: 22px;
-}
-
-/*************************************************************************************************/
-
-.netPageCol {
- cursor: pointer;
-}
-
-.netPageSeparatorRow {
- height: 5px !important;
- background-color: rgb(238, 238, 238);
-}
-
-.netPageSeparatorLabel {
- padding-left: 22px;
- height: 5px !important;
-}
-
-.netPageRow {
- background-color: rgb(255, 255, 255);
-}
-
-.netPageRow:hover {
- background: #EFEFEF;
-}
-
-.netPageLabel {
- padding: 1px 0 2px 18px !important;
- font-weight: bold;
-}
-
-/*************************************************************************************************/
-
-.netActivationRow > .netCol {
- border-bottom: 2px solid;
- -moz-border-bottom-colors: #EFEFEF #999999;
- padding-top: 2px;
- padding-bottom: 3px;
-}
-
-.useA11y .panelNode-net .a11yFocus:focus,
-.useA11y .panelNode-net .focusRow:focus {
- outline-offset: -2px;
- background-color: #FFFFD6 !important;
-}
-
-.useA11y .panelNode-net .netHeaderCell:focus,
-.useA11y .panelNode-net :focus .netHeaderCell,
-.useA11y .panelNode-net :focus .netReceivingBar,
-.useA11y .netSummaryRow :focus .netBar,
-.useA11y .netSummaryRow:focus .netBar {
- background-color: #FFFFD6;
- background-image: none;
- border-color: #FFFFD6;
-}
+/* See license.txt for terms of usage */
+
+.panelNode-net {
+ overflow-x: hidden;
+}
+
+.netTable {
+ width: 100%;
+}
+
+/*************************************************************************************************/
+
+.hideCategory-undefined .category-undefined,
+.hideCategory-html .category-html,
+.hideCategory-css .category-css,
+.hideCategory-js .category-js,
+.hideCategory-image .category-image,
+.hideCategory-xhr .category-xhr,
+.hideCategory-plugin .category-plugin,
+.hideCategory-media .category-media,
+.hideCategory-font .category-font,
+.hideCategory-txt .category-txt,
+.hideCategory-bin .category-bin {
+ display: none!important;
+}
+
+/*************************************************************************************************/
+/* Header for Net panel table */
+
+.netHeaderRow {
+ height: 16px;
+}
+
+.netHeaderCell {
+ cursor: pointer;
+ -moz-user-select: none;
+ border-bottom: 1px solid #9C9C9C;
+ padding: 0 !important;
+ font-weight: bold;
+ background: #C4C4C4 linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2));
+ color: #000000;
+ white-space: nowrap;
+}
+
+.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox {
+ padding: 2px 14px 2px 18px;
+}
+
+.netHeaderCellBox {
+ padding: 2px 14px 2px 10px;
+ border-left: 1px solid #D9D9D9;
+ border-right: 1px solid #9C9C9C;
+}
+
+.netHeaderCell:hover:active {
+ background-color: #B4B4B4;
+}
+
+.netHeaderSorted {
+ background-color: #8CA0BE;
+}
+
+.netHeaderSorted > .netHeaderCellBox {
+ border-right-color: #6B7C93;
+ background: url(chrome://firebug/skin/arrowDown.png) no-repeat calc(100% - 4px);
+}
+
+.netHeaderSorted.sortedAscending > .netHeaderCellBox {
+ background-image: url(chrome://firebug/skin/arrowUp.png);
+}
+
+.netHeaderSorted:hover:active {
+ background-color: #6E87AA;
+}
+
+/*************************************************************************************************/
+/* Breakpoints */
+
+.panelNode-net .netRowHeader {
+ display: block;
+}
+
+.netRowHeader {
+ position: relative;
+ display: none;
+ height: 15px;
+ margin-right: 0 !important;
+}
+
+.category-xhr .netRowHeader {
+ cursor: pointer;
+}
+
+/* Display breakpoint disc */
+.netRow .netRowHeader {
+ width: 3px;
+ height: 100%;
+ background-position: 5px 4px;
+}
+
+.netRow[breakpoint="true"] .netRowHeader {
+ background-image: url(chrome://firebug/skin/breakpoint.png);
+}
+
+.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader {
+ background-image: none;
+}
+
+.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader::before {
+ content: "";
+ position: absolute;
+ top: 4px;
+ left: 5px;
+ width: 12px;
+ height: 12px;
+ background: url(chrome://firebug/skin/breakpoint.png) no-repeat;
+ opacity: 0.5;
+}
+
+.netRow.category-xhr:hover .netRowHeader {
+ background-color: #F6F6F6;
+}
+
+#netBreakpointBar,
+.netDebugCol {
+ max-width: 30px;
+}
+
+#netHrefCol > .netHeaderCellBox {
+ border-left: 0px;
+}
+
+.netInfoRow .netRowHeader {
+ display: table-cell;
+}
+
+.netDebugCol {
+ border-right: 1px solid #CCCCCC;
+ background-color: #EEEEEE;
+}
+
+.netDebugCol .sourceLine {
+ border-right: none;
+}
+
+/*************************************************************************************************/
+/* Column visibility */
+
+.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],
+.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,
+.netTable[hiddenCols~=netProtocolCol] TD[id="netProtocolCol"],
+.netTable[hiddenCols~=netProtocolCol] TD.netProtocolCol,
+.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],
+.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,
+.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],
+.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,
+.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],
+.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,
+.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],
+.netTable[hiddenCols~=netTimeCol] TD.netTimeCol,
+.netTable[hiddenCols~=netLocalAddressCol] TD[id="netLocalAddressCol"],
+.netTable[hiddenCols~=netLocalAddressCol] TD.netLocalAddressCol,
+.netTable[hiddenCols~=netRemoteAddressCol] TD[id="netRemoteAddressCol"],
+.netTable[hiddenCols~=netRemoteAddressCol] TD.netRemoteAddressCol {
+ display: none;
+}
+
+/*************************************************************************************************/
+
+.netRow {
+ background: LightYellow;
+}
+
+.netRow.loaded {
+ background: #FFFFFF;
+}
+
+.netRow.loaded:hover {
+ background: #EFEFEF;
+}
+
+/* Visual separator between phases */
+.netRow[breakLayout="true"] .netCol {
+ border-top: 1px solid rgb(207,207,207);
+}
+
+.netRow[breakLayout="true"] .netCol.netDebugCol {
+ border-top: none;
+}
+
+.netCol {
+ padding: 0;
+ vertical-align: top;
+ border-bottom: 1px solid #EFEFEF;
+ white-space: nowrap;
+ height: 17px;
+}
+
+.netLabel {
+ width: 100%;
+}
+
+.netStatusCol {
+ padding-left: 10px;
+ color: rgb(128, 128, 128);
+}
+
+.responseError > .netStatusCol {
+ color: red;
+}
+
+.netDomainCol {
+ padding-left: 5px;
+}
+
+.netSizeCol {
+ text-align: right;
+ padding-right: 10px;
+}
+
+.netProtocolCol,
+.netLocalAddressCol,
+.netRemoteAddressCol {
+ padding-left: 5px;
+ padding-right: 5px;
+}
+
+.netHrefLabel {
+ -moz-box-sizing: padding-box;
+ overflow: hidden;
+ z-index: 10;
+ position: absolute;
+ padding-left: 18px;
+ padding-top: 1px;
+ padding-bottom: 3px;
+ max-width: 15%;
+ font-weight: bold;
+}
+
+.netFullHrefLabel {
+ display: none;
+ -moz-user-select: none;
+ padding-right: 10px;
+ max-width: 100%;
+ background: #FFFFFF;
+ z-index: 200;
+}
+
+.netHrefCol:hover > .netFullHrefLabel {
+ display: block;
+}
+
+.netRow.loaded:hover .netCol > .netFullHrefLabel {
+ background-color: #EFEFEF;
+}
+
+.useA11y .a11yShowFullLabel {
+ display: block;
+ background-image: none !important;
+ border: 1px solid #CBE087;
+ background-color: LightYellow;
+ font-family: monospace;
+ color: #000000;
+ font-size: 10px;
+ z-index: 2147483647;
+}
+
+.netSizeLabel {
+ padding-left: 6px;
+}
+
+.netProtocolLabel,
+.netStatusLabel,
+.netDomainLabel,
+.netSizeLabel,
+.netAddressLabel,
+.netBar {
+ padding: 1px 0 2px 0 !important;
+}
+
+.responseError {
+ color: red;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.hasHeaders .netHrefLabel:hover {
+ cursor: pointer;
+ color: blue;
+ text-decoration: underline;
+}
+
+/*************************************************************************************************/
+
+.netLoadingIcon {
+ position: absolute;
+ border: 0;
+ margin-left: 14px;
+ width: 16px;
+ height: 16px;
+ background: transparent no-repeat 0 0;
+ background-image: url(chrome://firebug/skin/loading.png);
+ display:inline-block;
+}
+
+.loaded .netLoadingIcon {
+ display: none;
+}
+
+/*************************************************************************************************/
+/* Timeline */
+
+.netBar {
+ position: relative;
+ border-right: 50px solid transparent;
+}
+
+.netResolvingBar,
+.netConnectingBar,
+.netBlockingBar,
+.netSendingBar,
+.netWaitingBar,
+.netReceivingBar {
+ position: absolute;
+ left: 0;
+ top: 1px;
+ bottom: 1px;
+ background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2));
+}
+
+.netBlockingBar {
+ background-color: #EBE1D2;
+ z-index: 60;
+}
+
+.netResolvingBar {
+ background-color: #91D2DC;
+ z-index: 50;
+}
+
+.netConnectingBar {
+ background-color: #B9E164;
+ z-index: 40;
+}
+
+.netSendingBar {
+ background-color: #E1826E;
+ z-index: 30;
+}
+
+.netWaitingBar {
+ background-color: #B4A5D2;
+ z-index: 20;
+ min-width: 1px;
+}
+
+.netReceivingBar {
+ background-color: #78E17D;
+ z-index: 10;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/* Vertical lines - time stamps */
+
+.netPageTimingBar {
+ position: absolute;
+ left: 0;
+ top: 0;
+ bottom: 0;
+ width: 1px;
+ z-index: 70;
+ opacity: 0.5;
+ display: none;
+ margin-bottom:-1px;
+}
+
+.netWindowLoadBar {
+ background-color: red;
+}
+
+.netContentLoadBar {
+ background-color: blue;
+}
+
+.netPaintBar {
+ background-color: green;
+}
+
+.netTimeStampBar {
+ background-color: #A0A000;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.netTimeLabel {
+ -moz-box-sizing: padding-box;
+ position: absolute;
+ top: 1px;
+ left: 100%;
+ padding-left: 6px;
+ color: #808080;
+ min-width: 16px;
+}
+
+/*
+ * Timing info tip is reusing net timeline styles to display the same
+ * colors for individual request phases. Notice that the info tip must
+ * respect also 'loaded' and 'fromCache' styles that also modify the
+ * actual color. These are used both on the same element in case
+ * of the tooltip.
+ */
+.fromCache .netReceivingBar,
+.fromCache.netReceivingBar {
+ background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.1));
+}
+
+.netSummaryRow .netTimeLabel,
+.loaded .netTimeLabel {
+ background: transparent;
+}
+
+/*************************************************************************************************/
+/* If coming from BF cache (no network activity) */
+
+.netTable .netRow.fromBFCache {
+ display: none;
+}
+
+.netTable.showBFCacheResponses .netRow.fromBFCache {
+ display: table-row;
+ background-image: repeating-linear-gradient(135deg, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 5px, transparent 5px, transparent 10px);
+ background-repeat: repeat;
+}
+
+.netRow.fromCache .netLabel,
+.netRow.fromBFCache .netBlockingBar,
+.netRow.fromBFCache .netResolvingBar,
+.netRow.fromBFCache .netConnectingBar,
+.netRow.fromBFCache .netSendingBar,
+.netRow.fromBFCache .netWaitingBar,
+.netRow.fromBFCache .netReceivingBar {
+ opacity: 0.5;
+}
+
+.netRow.fromCache:not(.responseError) .netHrefLabel {
+ opacity: 1.0;
+ color: gray;
+}
+
+.netInfoResponseHeadersBody .headerFromBFCache {
+ color: gray;
+}
+
+/*************************************************************************************************/
+/* Size Info tip */
+
+.sizeInfoLabelCol {
+ font-weight: bold;
+ padding-right: 10px;
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ font-size: 11px;
+}
+
+.sizeInfoDetailCol {
+ color: gray;
+ text-align: right;
+}
+
+.sizeInfoDescCol {
+ color: gray;
+}
+
+/*************************************************************************************************/
+/* Summary */
+
+.netSummaryLabel {
+ color: #222222;
+ padding-top: 2px;
+}
+
+.netSummaryRow {
+ background: #BBBBBB !important;
+ font-weight: bold;
+}
+
+.netSummaryRow .netBar {
+ border-right-color: #BBBBBB;
+}
+
+.netSummaryRow > .netCol {
+ border-top: 1px solid #999999;
+ border-bottom: 2px solid;
+ -moz-border-bottom-colors: #EFEFEF #999999;
+}
+
+.netSummaryRow > .netHrefCol:hover {
+ background: transparent !important;
+}
+
+.netCountLabel {
+ padding-left: 18px;
+}
+
+.netTotalSizeCol {
+ text-align: right;
+}
+
+.netTotalTimeCol {
+ text-align: right;
+}
+
+.netCacheSizeLabel {
+ display: inline-block;
+ float: left;
+}
+
+.netCacheSizeLabel[collapsed="true"] {
+ display: none !important;
+}
+
+.netTotalTimeLabel {
+ padding-right: 6px;
+}
+
+/*************************************************************************************************/
+
+.netLimitRow {
+ background: rgb(255, 255, 225) !important;
+ font-weight:normal;
+ color: black;
+ font-weight:normal;
+}
+
+.netLimitLabel {
+ padding-left: 18px;
+}
+
+.netLimitRow > .netCol {
+ border-bottom: 2px solid;
+ -moz-border-bottom-colors: #EFEFEF #999999;
+ vertical-align: middle !important;
+ padding-top: 2px;
+ padding-bottom: 2px;
+}
+
+.netLimitButton {
+ font-size: 11px;
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+/*************************************************************************************************/
+
+.netInfoCol {
+ border-top: 1px solid #EEEEEE;
+ background: #FFFFFF linear-gradient(to bottom, rgba(0, 0, 0, 0.1), transparent 33px) repeat-x;
+}
+
+.netInfoBody {
+ margin: 10px 0 4px 10px;
+}
+
+.netInfoTabs {
+ position: relative;
+ padding-left: 17px;
+}
+
+.netInfoTab {
+ position: relative;
+ top: -3px;
+ margin-top: 10px;
+ padding: 4px 6px;
+ border: 1px solid transparent;
+ border-bottom: none;
+ font-weight: bold;
+ color: #000000;
+}
+
+.netInfoTab:hover {
+ cursor: pointer;
+}
+
+.netInfoTab[selected="true"] {
+ cursor: default !important;
+ border-color: #D7D7D7;
+ border-radius: 4px 4px 0 0;
+ background-color: #FFFFFF;
+}
+
+.logRow-netInfo.error .netInfoTitle {
+ color: red;
+}
+
+.logRow-netInfo.loading .netInfoResponseText {
+ font-style: italic;
+ color: #888888;
+}
+
+.loading .netInfoResponseHeadersTitle {
+ display: none;
+}
+
+.netInfoResponseSizeLimit {
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ padding-top: 10px;
+ font-size: 11px;
+}
+
+.netInfoText {
+ display: none;
+ margin: 0;
+ border: 1px solid #D7D7D7;
+ border-right: none;
+ padding: 8px;
+ background-color: #FFFFFF;
+ font-family: monospace;
+ /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */
+}
+
+.netInfoText[selected="true"] {
+ display: block;
+}
+
+.netInfoParamName {
+ padding: 0 10px 0 0;
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ font-weight: bold;
+ vertical-align: top;
+ text-align: right;
+ white-space: nowrap;
+}
+
+.netInfoParamValue {
+ width: 100%;
+}
+
+.netInfoHeadersText,
+.netInfoPostText,
+.netInfoPutText,
+.netInfoPatchText {
+ padding-top: 0;
+}
+
+.netInfoHeadersGroup,
+.netInfoPostParams,
+.netInfoPostSource {
+ margin-bottom: 4px;
+ border-bottom: 1px solid #D7D7D7;
+ padding-top: 8px;
+ padding-bottom: 2px;
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ font-weight: bold;
+ color: #565656;
+}
+
+.netInfoCachedResponseHeadersBody {
+ color: gray;
+}
+
+.netInfoPostParamsTable,
+.netInfoPostPartsTable,
+.netInfoPostJSONTable,
+.netInfoPostXMLTable,
+.netInfoPostSVGTable,
+.netInfoPostSourceTable {
+ margin-bottom: 10px;
+ width: 100%;
+}
+
+.netInfoPostContentType {
+ color: #bdbdbd;
+ padding-left: 50px;
+ font-weight: normal;
+}
+
+/*************************************************************************************************/
+/* HTML Preview & Resizer */
+
+.netInfoHtmlPreview {
+ border: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.netInfoHtmlText {
+ padding: 0;
+}
+
+.htmlPreviewResizer {
+ width: 100%;
+ height: 5px;
+ background-color: lightgrey;
+ cursor: s-resize;
+}
+
+/* When HTML preview resizing is in progress set the cursor for all elements
+ since the mouse doesn't have to be always just over the resizer and this
+ avoids cursor flashing. */
+body[resizingHtmlPreview="true"] * {
+ cursor: s-resize !important;
+}
+
+/* When HTML preview resizing is in progress mouse messages are not sent to
+ the iframe document. */
+body[resizingHtmlPreview="true"] .netInfoHtmlPreview {
+ pointer-events: none !important;
+}
+
+/*************************************************************************************************/
+/* Request & Response Headers */
+
+.netHeadersViewSource {
+ color: #bdbdbd;
+ margin-left: 200px;
+ font-weight: normal;
+}
+
+.netHeadersViewSource:hover {
+ color: blue;
+ cursor: pointer;
+}
+
+/*************************************************************************************************/
+
+.netActivationRow {
+ background: rgb(229, 229, 229) !important;
+ font-weight: normal;
+ color: black;
+}
+
+.netActivationLabel {
+ background: url(chrome://firebug/skin/info.svg) no-repeat 3px 2px;
+ padding-left: 22px;
+}
+
+/*************************************************************************************************/
+
+.netPageCol {
+ cursor: pointer;
+}
+
+.netPageSeparatorRow {
+ height: 5px !important;
+ background-color: rgb(238, 238, 238);
+}
+
+.netPageSeparatorLabel {
+ padding-left: 22px;
+ height: 5px !important;
+}
+
+.netPageRow {
+ background-color: rgb(255, 255, 255);
+}
+
+.netPageRow:hover {
+ background: #EFEFEF;
+}
+
+.netPageLabel {
+ padding: 1px 0 2px 18px !important;
+ font-weight: bold;
+}
+
+/*************************************************************************************************/
+
+.netActivationRow > .netCol {
+ border-bottom: 2px solid;
+ -moz-border-bottom-colors: #EFEFEF #999999;
+ padding-top: 2px;
+ padding-bottom: 3px;
+}
+
+.useA11y .panelNode-net .a11yFocus:focus,
+.useA11y .panelNode-net .focusRow:focus {
+ outline-offset: -2px;
+ background-color: #FFFFD6 !important;
+}
+
+.useA11y .panelNode-net .netHeaderCell:focus,
+.useA11y .panelNode-net :focus .netHeaderCell,
+.useA11y .panelNode-net :focus .netReceivingBar,
+.useA11y .netSummaryRow :focus .netBar,
+.useA11y .netSummaryRow:focus .netBar {
+ background-color: #FFFFD6;
+ background-image: none;
+ border-color: #FFFFD6;
+}
diff --git a/skin/classic/orion-firebug.css b/skin/classic/orion-firebug.css
index c329d45..9b1f6ab 100644
--- a/skin/classic/orion-firebug.css
+++ b/skin/classic/orion-firebug.css
@@ -1,29 +1,29 @@
-/* See license.txt for terms of usage */
-
-/************************************************************************************************/
-/* The Default Mozilla Orion Theme */
-
-/* From some reason, importing the default theme this way causes issue 5488 */
- at import "chrome://browser/skin/devtools/orion.css";
-
-/************************************************************************************************/
-/* Custom Styles for Command Editor (Orion) */
-
-.viewContainer {
- /*font-size: 11px; see issue 5488*/
-}
-
-.view {
- background: white;
-}
-
-.token_string {
- color: red;
- font-style: normal;
-}
-
-.token_keyword {
- color: blue;
-}
-
-/************************************************************************************************/
+/* See license.txt for terms of usage */
+
+/************************************************************************************************/
+/* The Default Mozilla Orion Theme */
+
+/* From some reason, importing the default theme this way causes issue 5488 */
+ at import "chrome://browser/skin/devtools/orion.css";
+
+/************************************************************************************************/
+/* Custom Styles for Command Editor (Orion) */
+
+.viewContainer {
+ /*font-size: 11px; see issue 5488*/
+}
+
+.view {
+ background: white;
+}
+
+.token_string {
+ color: red;
+ font-style: normal;
+}
+
+.token_keyword {
+ color: blue;
+}
+
+/************************************************************************************************/
diff --git a/skin/classic/panel.css b/skin/classic/panel.css
index 9f83fcb..bcbcfc3 100644
--- a/skin/classic/panel.css
+++ b/skin/classic/panel.css
@@ -1,20 +1,20 @@
-/* See license.txt for terms of usage */
-
- at import "chrome://firebug/skin/panelbase.css";
- at import "chrome://firebug/skin/breakpoint.css";
- at import "chrome://firebug/skin/console.css";
- at import "chrome://firebug/skin/net.css";
- at import "chrome://firebug/skin/jsonViewer.css";
- at import "chrome://firebug/skin/fontViewer.css";
- at import "chrome://firebug/skin/html.css";
- at import "chrome://firebug/skin/css.css";
- at import "chrome://firebug/skin/debugger.css";
- at import "chrome://firebug/skin/balloonNote.css";
- at import "chrome://firebug/skin/callstack.css";
- at import "chrome://firebug/skin/layout.css";
- at import "chrome://firebug/skin/dom.css";
- at import "chrome://firebug/skin/selectors.css";
- at import "chrome://firebug/skin/performanceTiming.css";
- at import "chrome://firebug/skin/tableRep.css";
- at import "chrome://firebug-os/skin/panel.css";
- at import "chrome://firebug/skin/timeInfoTip.css";
+/* See license.txt for terms of usage */
+
+ at import "chrome://firebug/skin/panelbase.css";
+ at import "chrome://firebug/skin/breakpoint.css";
+ at import "chrome://firebug/skin/console.css";
+ at import "chrome://firebug/skin/net.css";
+ at import "chrome://firebug/skin/jsonViewer.css";
+ at import "chrome://firebug/skin/fontViewer.css";
+ at import "chrome://firebug/skin/html.css";
+ at import "chrome://firebug/skin/css.css";
+ at import "chrome://firebug/skin/debugger.css";
+ at import "chrome://firebug/skin/balloonNote.css";
+ at import "chrome://firebug/skin/callstack.css";
+ at import "chrome://firebug/skin/layout.css";
+ at import "chrome://firebug/skin/dom.css";
+ at import "chrome://firebug/skin/selectors.css";
+ at import "chrome://firebug/skin/performanceTiming.css";
+ at import "chrome://firebug/skin/tableRep.css";
+ at import "chrome://firebug-os/skin/panel.css";
+ at import "chrome://firebug/skin/timeInfoTip.css";
diff --git a/skin/classic/panelbase.css b/skin/classic/panelbase.css
index bb8d7a5..c0458c9 100644
--- a/skin/classic/panelbase.css
+++ b/skin/classic/panelbase.css
@@ -1,418 +1,418 @@
-/* See license.txt for terms of usage */
-
-html {
- background-color: -moz-dialog;
-}
-
-body {
- margin: 0;
- overflow: hidden;
- /* Aspect 0.547 0.547 0.547 */
- font-family: Lucida Grande, Tahoma, sans-serif;
- font-size: 11px;
-}
-
-h1 {
- font-size: 17px;
- border-bottom: 1px solid #CCCCCC;
-}
-
-a {
- color: #0000ff;
- cursor: pointer;
-}
-
-pre {
- margin: 0;
- font: inherit;
-}
-
-code {
- display:block;
- white-space:pre;
-}
-
-/************************************************************************************************/
-
-.jumpHighlight {
- background-color: #C4F4FF !important;
-}
-
-/************************************************************************************************/
-
-.collapsed,
-[collapsed="true"] {
- display: none;
-}
-
-.obscured {
- left: -999999px !important;
-}
-
-.measureBox {
- position: absolute;
- visibility: hidden;
- top: 0;
- left: 0;
- white-space: nowrap;
-}
-
-/************************************************************************************************/
-
-.panelNode {
- display: none;
- overflow: auto;
- position: absolute;
- width: 100%;
- height: 100%;
- left: 0;
- top: 0;
- background-color: #FFFFFF;
- color: #000000;
-}
-
-.panelNode[active="true"] {
- display: block;
-}
-
-.pluginBrowser {
- position: absolute;
- width: 100%;
- height: 100%;
- left: 0;
- top: 0;
- margin: 0;
- border: none;
-}
-
-/************************************************************************************************/
-
-.dialogBox {
- position: relative;
- margin: 4em auto;
- border: 1px solid threedshadow;
- border-radius: 10px;
- padding: 20px 30px 30px 90px;
- background: #ffffff url(chrome://firebug/skin/firebug32.png) no-repeat 30px 30px;
- color: #000000;
- font: message-box;
- min-width: 13em;
- max-width: 48em;
-}
-
-.dialogCaption {
- font-size: 130%;
-}
-
-.dialogRow {
- margin: 8px 0;
- font-size: 13px;
-}
-
-.dialogLink:hover {
- text-decoration: underline;
-}
-
-.disabledCaption {
- display: none;
-}
-
-.cantDisplayPage > .dialogCaption {
- display: block;
-}
-
-.cantDisplayPage > .dialogRow {
- display: none;
-}
-
-/************************************************************************************************/
-
-#trialBox {
- z-index: 2147483647;
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background-color: -moz-dialog;
-}
-
-/************************************************************************************************/
-.inlineEditor {
- pointer-events: none;
-}
-
-.textEditorInner {
- pointer-events: auto;
-}
-
-.inlineEditor,
-.fixedWidthEditor {
- z-index: 2147483647;
- position: absolute;
-}
-
-.inlineEditor {
- margin-left: -3px;
- margin-top: -2px;
- box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5);
-}
-
-.textEditorInner,
-.fixedWidthEditor {
- margin: 0 !important;
- font: inherit;
- text-decoration: inherit;
- background-color: window;
- border: 1px solid #a0a0a0 !important;
-}
-
-.inlineEditor[saveSuccess='true'],
-.fixedWidthEditor[saveSuccess='true'] {
- box-shadow: 0 2px 6px rgba(0, 250, 0, 0.5);
-}
-
-.inlineEditor[saveSuccess='false'],
-.fixedWidthEditor[saveSuccess='false'] {
- box-shadow: 0 2px 6px rgba(250, 0, 0, 0.5);
-}
-
-.inlineEditor[saveSuccess='almost'],
-.fixedWidthEditor[saveSuccess='almost'] {
- box-shadow: 0 2px 6px rgba(250, 250, 0, 0.8);
-}
-
-.fixedWidthEditor {
- border-left: none !important;
- border-right: none !important;
- text-indent: 3px;
- box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5);
-}
-
-.textEditorInner {
- position: relative;
- padding: 1px;
-}
-
-.completionBox {
- position: absolute;
- color: #A0A0A0;
-}
-
-.completionInput {
- background-color: transparent;
-}
-
-.fixedWidthEditor.completionBox {
- box-shadow: none;
-}
-
-/************************************************************************************************/
-
-.infoTip {
- z-index: 2147483647;
- position: fixed;
- padding: 2px 3px;
- border: 1px solid rgb(126, 171, 205);
- background: LightYellow;
- font-family: Lucida Grande, Tahoma, sans-serif;
- color: #000000;
- display: none;
- white-space: nowrap;
- pointer-events: none;
- border-radius: 3px;
- box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.4);
-}
-
-.infoTip[active="true"] {
- display: block;
-}
-
-.infoTipLoading {
- width: 16px;
- height: 16px;
- background: url(chrome://firebug/skin/loading.png) no-repeat;
-}
-
-.infoTipImageBox {
- min-width: 100px;
- text-align: center;
-}
-
-.infoTipCaption {
- font: message-box;
-}
-
-.infoTipLoading > .infoTipImage,
-.infoTipLoading > .infoTipCaption {
- display: none;
-}
-
-/************************************************************************************************/
-/* Groups */
-
-.groupHeader {
- position: relative;
- padding: 2px 4px;
- margin: 0 0 4px 0;
- border-top: 1px solid #CCCCCC;
- border-bottom: 1px solid #CCCCCC;
- background: #FFFFFF linear-gradient(to top, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.1) 60%, rgba(0, 0, 0, 0.05) 60%, transparent) repeat-x;
- font-size: inherit;
-}
-
-.foldableGroup {
- border-spacing: 0;
-}
-
-.foldableGroup > .groupHeader {
- cursor: pointer;
- -moz-user-select: none;
-}
-
-.foldableGroup > .groupHeader > .groupLabel {
- margin-left: 14px;
-}
-
-.foldableGroup > .groupContent {
- display: none;
-}
-
-.foldableGroup.opened > .groupContent {
- display: table;
-}
-
-/************************************************************************************************/
-
-.fullPanelEditor {
- z-index: 2147483647;
- position: fixed;
- left: 0 !important;
- top: 0 !important;
- right: 0 !important;
- bottom: 0 !important;
- width: 100% !important;
- height: 100% !important;
- margin: 0;
- border: none;
- /* padding-left: 8px; XXXjjb issue 1317 Causes the scrollbar on long sources to be hidden under the divider */
- font-family: monospace;
- font-size: Inherit;
-}
-
-/************************************************************************************************/
-/* Default content for disabled panels */
-
-.disabledPanelBox {
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- position: absolute;
- padding: 10px 10px 0px 90px;
- background: #FFFFFF url(chrome://firebug/skin/firebug32.png) no-repeat 30px 30px;
- color: #000000;
- font: message-box;
-}
-
-.disabledPanelLink:hover {
- text-decoration: underline;
- cursor: pointer;
-}
-
-.disabledPanelDescription {
- margin: 8px 0;
- font-size: 13px;
-}
-
-.disabledPanelDescription.applyDesc{
- font-size: 11px;
- color: gray;
-}
-
-.disabledPanelApplyButton .host {
- color: blue;
-}
-
-.disabledPanelBox .descImage {
- margin-top: 5px;
- margin-left: 0;
- margin-bottom: 5px;
- vertical-align: middle;
- height: 20px;
- width: 100px;
- display: inline-block;
- background-repeat: no-repeat;
-}
-
-.disabledPanelHead:first-letter {
- text-transform: capitalize;
-}
-
-.disabledPanelBox .descImage-console {
- background-image: url(chrome://firebug/skin/activation-menu-console.png);
-}
-
-.disabledPanelBox .descImage-script {
- background-image: url(chrome://firebug/skin/activation-menu-script.png);
-}
-
-.disabledPanelBox .descImage-net {
- background-image: url(chrome://firebug/skin/activation-menu-net.png);
-}
-
-.disabledPanelBox .descImage-net {
- background-image: url(chrome://firebug/skin/activation-menu-net.png);
-}
-
-/************************************************************************************************/
-
-.useA11y .textEditorInner:focus {
- outline: 2px solid #FF9933;
-}
-
-.useA11y .a11yFocus:focus,
-.useA11y .a11yFocusNoTab:focus,
-.useA11y .focusRow:focus{
- outline: 2px solid #FF9933;
- background-color: #FFFFD6;
- z-index: 10000;
-}
-
-.useA11y :focus .objectLink-sourceLink {
- background-color: transparent;
-}
-
-.useA11y .objectBox-null:focus,
-.useA11y .objectBox-undefined:focus{
- background-color: #888888 !important;
-}
-
-.offScreen {
- position: fixed;
- left: -10000px;
- width: 1px;
- height: 1px;
- overflow: hidden;
-}
-
-/************************************************************************************************/
-/* These are copies of the classes from debugger.css that start .condition */
-
-.notationCaption {
- padding-top: 5px;
-}
-
-.notationTitle {
- font-weight: bold;
-}
-
-.notationTitle.diff {
- font-weight: normal;
-}
-
-.notationButton {
- float: right;
-}
-
-/************************************************************************************************/
+/* See license.txt for terms of usage */
+
+html {
+ background-color: -moz-dialog;
+}
+
+body {
+ margin: 0;
+ overflow: hidden;
+ /* Aspect 0.547 0.547 0.547 */
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ font-size: 11px;
+}
+
+h1 {
+ font-size: 17px;
+ border-bottom: 1px solid #CCCCCC;
+}
+
+a {
+ color: #0000ff;
+ cursor: pointer;
+}
+
+pre {
+ margin: 0;
+ font: inherit;
+}
+
+code {
+ display:block;
+ white-space:pre;
+}
+
+/************************************************************************************************/
+
+.jumpHighlight {
+ background-color: #C4F4FF !important;
+}
+
+/************************************************************************************************/
+
+.collapsed,
+[collapsed="true"] {
+ display: none;
+}
+
+.obscured {
+ left: -999999px !important;
+}
+
+.measureBox {
+ position: absolute;
+ visibility: hidden;
+ top: 0;
+ left: 0;
+ white-space: nowrap;
+}
+
+/************************************************************************************************/
+
+.panelNode {
+ display: none;
+ overflow: auto;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ background-color: #FFFFFF;
+ color: #000000;
+}
+
+.panelNode[active="true"] {
+ display: block;
+}
+
+.pluginBrowser {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ margin: 0;
+ border: none;
+}
+
+/************************************************************************************************/
+
+.dialogBox {
+ position: relative;
+ margin: 4em auto;
+ border: 1px solid threedshadow;
+ border-radius: 10px;
+ padding: 20px 30px 30px 90px;
+ background: #ffffff url(chrome://firebug/skin/firebug32.png) no-repeat 30px 30px;
+ color: #000000;
+ font: message-box;
+ min-width: 13em;
+ max-width: 48em;
+}
+
+.dialogCaption {
+ font-size: 130%;
+}
+
+.dialogRow {
+ margin: 8px 0;
+ font-size: 13px;
+}
+
+.dialogLink:hover {
+ text-decoration: underline;
+}
+
+.disabledCaption {
+ display: none;
+}
+
+.cantDisplayPage > .dialogCaption {
+ display: block;
+}
+
+.cantDisplayPage > .dialogRow {
+ display: none;
+}
+
+/************************************************************************************************/
+
+#trialBox {
+ z-index: 2147483647;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: -moz-dialog;
+}
+
+/************************************************************************************************/
+.inlineEditor {
+ pointer-events: none;
+}
+
+.textEditorInner {
+ pointer-events: auto;
+}
+
+.inlineEditor,
+.fixedWidthEditor {
+ z-index: 2147483647;
+ position: absolute;
+}
+
+.inlineEditor {
+ margin-left: -3px;
+ margin-top: -2px;
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5);
+}
+
+.textEditorInner,
+.fixedWidthEditor {
+ margin: 0 !important;
+ font: inherit;
+ text-decoration: inherit;
+ background-color: window;
+ border: 1px solid #a0a0a0 !important;
+}
+
+.inlineEditor[saveSuccess='true'],
+.fixedWidthEditor[saveSuccess='true'] {
+ box-shadow: 0 2px 6px rgba(0, 250, 0, 0.5);
+}
+
+.inlineEditor[saveSuccess='false'],
+.fixedWidthEditor[saveSuccess='false'] {
+ box-shadow: 0 2px 6px rgba(250, 0, 0, 0.5);
+}
+
+.inlineEditor[saveSuccess='almost'],
+.fixedWidthEditor[saveSuccess='almost'] {
+ box-shadow: 0 2px 6px rgba(250, 250, 0, 0.8);
+}
+
+.fixedWidthEditor {
+ border-left: none !important;
+ border-right: none !important;
+ text-indent: 3px;
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5);
+}
+
+.textEditorInner {
+ position: relative;
+ padding: 1px;
+}
+
+.completionBox {
+ position: absolute;
+ color: #A0A0A0;
+}
+
+.completionInput {
+ background-color: transparent;
+}
+
+.fixedWidthEditor.completionBox {
+ box-shadow: none;
+}
+
+/************************************************************************************************/
+
+.infoTip {
+ z-index: 2147483647;
+ position: fixed;
+ padding: 2px 3px;
+ border: 1px solid rgb(126, 171, 205);
+ background: LightYellow;
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ color: #000000;
+ display: none;
+ white-space: nowrap;
+ pointer-events: none;
+ border-radius: 3px;
+ box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.4);
+}
+
+.infoTip[active="true"] {
+ display: block;
+}
+
+.infoTipLoading {
+ width: 16px;
+ height: 16px;
+ background: url(chrome://firebug/skin/loading.png) no-repeat;
+}
+
+.infoTipImageBox {
+ min-width: 100px;
+ text-align: center;
+}
+
+.infoTipCaption {
+ font: message-box;
+}
+
+.infoTipLoading > .infoTipImage,
+.infoTipLoading > .infoTipCaption {
+ display: none;
+}
+
+/************************************************************************************************/
+/* Groups */
+
+.groupHeader {
+ position: relative;
+ padding: 2px 4px;
+ margin: 0 0 4px 0;
+ border-top: 1px solid #CCCCCC;
+ border-bottom: 1px solid #CCCCCC;
+ background: #FFFFFF linear-gradient(to top, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.1) 60%, rgba(0, 0, 0, 0.05) 60%, transparent) repeat-x;
+ font-size: inherit;
+}
+
+.foldableGroup {
+ border-spacing: 0;
+}
+
+.foldableGroup > .groupHeader {
+ cursor: pointer;
+ -moz-user-select: none;
+}
+
+.foldableGroup > .groupHeader > .groupLabel {
+ margin-left: 14px;
+}
+
+.foldableGroup > .groupContent {
+ display: none;
+}
+
+.foldableGroup.opened > .groupContent {
+ display: table;
+}
+
+/************************************************************************************************/
+
+.fullPanelEditor {
+ z-index: 2147483647;
+ position: fixed;
+ left: 0 !important;
+ top: 0 !important;
+ right: 0 !important;
+ bottom: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ margin: 0;
+ border: none;
+ /* padding-left: 8px; XXXjjb issue 1317 Causes the scrollbar on long sources to be hidden under the divider */
+ font-family: monospace;
+ font-size: Inherit;
+}
+
+/************************************************************************************************/
+/* Default content for disabled panels */
+
+.disabledPanelBox {
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ position: absolute;
+ padding: 10px 10px 0px 90px;
+ background: #FFFFFF url(chrome://firebug/skin/firebug32.png) no-repeat 30px 30px;
+ color: #000000;
+ font: message-box;
+}
+
+.disabledPanelLink:hover {
+ text-decoration: underline;
+ cursor: pointer;
+}
+
+.disabledPanelDescription {
+ margin: 8px 0;
+ font-size: 13px;
+}
+
+.disabledPanelDescription.applyDesc{
+ font-size: 11px;
+ color: gray;
+}
+
+.disabledPanelApplyButton .host {
+ color: blue;
+}
+
+.disabledPanelBox .descImage {
+ margin-top: 5px;
+ margin-left: 0;
+ margin-bottom: 5px;
+ vertical-align: middle;
+ height: 20px;
+ width: 100px;
+ display: inline-block;
+ background-repeat: no-repeat;
+}
+
+.disabledPanelHead:first-letter {
+ text-transform: capitalize;
+}
+
+.disabledPanelBox .descImage-console {
+ background-image: url(chrome://firebug/skin/activation-menu-console.png);
+}
+
+.disabledPanelBox .descImage-script {
+ background-image: url(chrome://firebug/skin/activation-menu-script.png);
+}
+
+.disabledPanelBox .descImage-net {
+ background-image: url(chrome://firebug/skin/activation-menu-net.png);
+}
+
+.disabledPanelBox .descImage-net {
+ background-image: url(chrome://firebug/skin/activation-menu-net.png);
+}
+
+/************************************************************************************************/
+
+.useA11y .textEditorInner:focus {
+ outline: 2px solid #FF9933;
+}
+
+.useA11y .a11yFocus:focus,
+.useA11y .a11yFocusNoTab:focus,
+.useA11y .focusRow:focus{
+ outline: 2px solid #FF9933;
+ background-color: #FFFFD6;
+ z-index: 10000;
+}
+
+.useA11y :focus .objectLink-sourceLink {
+ background-color: transparent;
+}
+
+.useA11y .objectBox-null:focus,
+.useA11y .objectBox-undefined:focus{
+ background-color: #888888 !important;
+}
+
+.offScreen {
+ position: fixed;
+ left: -10000px;
+ width: 1px;
+ height: 1px;
+ overflow: hidden;
+}
+
+/************************************************************************************************/
+/* These are copies of the classes from debugger.css that start .condition */
+
+.notationCaption {
+ padding-top: 5px;
+}
+
+.notationTitle {
+ font-weight: bold;
+}
+
+.notationTitle.diff {
+ font-weight: normal;
+}
+
+.notationButton {
+ float: right;
+}
+
+/************************************************************************************************/
diff --git a/skin/classic/performanceTiming.css b/skin/classic/performanceTiming.css
index 8ccf0d3..142443e 100644
--- a/skin/classic/performanceTiming.css
+++ b/skin/classic/performanceTiming.css
@@ -1,192 +1,192 @@
-/* See license.txt for terms of usage */
-
-/*************************************************************************************************/
-
-.logRow-perfTiming {
-}
-
-/*************************************************************************************************/
-
-.perfTimingBox {
- position: relative;
- height: 17px;
- border-right: 130px solid transparent;
-}
-
-.perfTimingBar {
- position: absolute;
- top: 1px;
- bottom: 1px;
- background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2));
- min-width: 2px;
- z-index: 10;
-}
-
-.perfTimingBarLabel {
- -moz-box-sizing: padding-box;
- position: absolute;
- top: 1px;
- left: 100%;
- padding-left: 6px;
- color: #808080;
- min-width: 16px;
- white-space: nowrap;
- z-index: 30;
-}
-
-/*************************************************************************************************/
-/* Info Tip */
-
-.timeInfoTipRow .timeInfoTipBar {
- background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2));
-}
-
-/*************************************************************************************************/
-/* Bars */
-
-.perfTimingBar.pageLoad,
-.timeInfoTipBar.pageLoad {
- background-color: rgb(217, 179, 147);
-}
-
-.perfTimingBar.redirect,
-.timeInfoTipBar.redirect {
- background-color: rgb(0, 148, 87);
-}
-
-.perfTimingBar.dns,
-.timeInfoTipBar.dns {
- background-color: #91D2DC;
-}
-
-.perfTimingBar.connecting,
-.timeInfoTipBar.connecting {
- background-color: #B9E164;
-}
-
-.perfTimingBar.waiting,
-.timeInfoTipBar.waiting {
- background-color: #B4A5D2;
-}
-
-.perfTimingBar.response,
-.timeInfoTipBar.response {
- background-color: #78E17D;
-}
-
-.perfTimingBar.processing,
-.timeInfoTipBar.processing {
- background-color: rgb(202, 206, 168);
-}
-
-.perfTimingBar.DOMContentLoaded,
-.timeInfoTipBar.DOMContentLoaded {
- background-color: rgb(179, 184, 118);
-}
-
-.perfTimingBar.onLoad,
-.timeInfoTipBar.onLoad {
- background-color: rgb(168, 194, 196);
-}
-
-/*************************************************************************************************/
-/* DOM Events */
-
-.perfTimingBar.event {
- width: 1px;
-}
-
-.perfTimingEvent {
- position: absolute;
- width: 1px;
- z-index: 20;
- top: 0;
- bottom: 0;
-}
-
-.perfTimingTable TR:first-child .perfTimingEvent {
- top: 1px;
-}
-
-.perfTimingTable TR:last-child .perfTimingEvent {
- bottom: 1px;
-}
-
-.perfTimingEvent.domInteractive,
-.timeInfoTipEventBar.domInteractive {
- background-color: rgb(126, 146, 126);
-}
-
-.perfTimingEvent.domLoading,
-.timeInfoTipEventBar.domLoading {
- background-color: rgb(155, 133, 155);
-}
-
-.perfTimingEvent.domContentLoaded,
-.timeInfoTipEventBar.domContentLoaded {
- background-color: rgb(152, 152, 255);
-}
-
-.perfTimingEvent.onLoad,
-.timeInfoTipEventBar.onLoad {
- background-color: rgb(255, 152, 152);
-}
-
-/*************************************************************************************************/
-/* Details */
-
-.logRow-perfTimingDetails .logGroupBody {
- border-bottom: 1px solid #D7D7D7;
- overflow-y: auto;
- height: 200px;
-}
-
-.logRow-perfTimingDetails .logGroupLabel {
- text-decoration: none !important;
-}
-
-.logRow-perfTimingDetails > .logRow {
- background-position: 2px 3px !important;
-}
-
-.logRow-perfTimingDetails .timingCaptionDesc {
- color: gray;
- font-weight: normal;
- padding-left: 10px;
-}
-
-.logRow-perfTimingDetails .timingTable {
- margin-bottom: 4px;
- cursor: pointer;
-}
-
-.logRow-perfTimingDetails .timingCell {
- padding: 2px 4px 2px 4px;
-}
-
-.logRow-perfTimingDetails .timingTable tr:nth-child(even) {
- background-color: #EFEFEF;
-}
-
-.logRow-perfTimingDetails .timingName {
- color: green;
- font-family: monospace;
-}
-
-.logRow-perfTimingDetails .timingRow:hover .timingName {
- text-decoration: underline;
-}
-
-.logRow-perfTimingDetails .timingDesc {
- color: gray
-}
-
-/*************************************************************************************************/
-/* Cursor */
-
-.perfTimingEvent.cursor {
- background-color: gray;
- visibility: hidden;
- width: 2px;
- z-index: 40;
-}
+/* See license.txt for terms of usage */
+
+/*************************************************************************************************/
+
+.logRow-perfTiming {
+}
+
+/*************************************************************************************************/
+
+.perfTimingBox {
+ position: relative;
+ height: 17px;
+ border-right: 130px solid transparent;
+}
+
+.perfTimingBar {
+ position: absolute;
+ top: 1px;
+ bottom: 1px;
+ background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2));
+ min-width: 2px;
+ z-index: 10;
+}
+
+.perfTimingBarLabel {
+ -moz-box-sizing: padding-box;
+ position: absolute;
+ top: 1px;
+ left: 100%;
+ padding-left: 6px;
+ color: #808080;
+ min-width: 16px;
+ white-space: nowrap;
+ z-index: 30;
+}
+
+/*************************************************************************************************/
+/* Info Tip */
+
+.timeInfoTipRow .timeInfoTipBar {
+ background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2));
+}
+
+/*************************************************************************************************/
+/* Bars */
+
+.perfTimingBar.pageLoad,
+.timeInfoTipBar.pageLoad {
+ background-color: rgb(217, 179, 147);
+}
+
+.perfTimingBar.redirect,
+.timeInfoTipBar.redirect {
+ background-color: rgb(0, 148, 87);
+}
+
+.perfTimingBar.dns,
+.timeInfoTipBar.dns {
+ background-color: #91D2DC;
+}
+
+.perfTimingBar.connecting,
+.timeInfoTipBar.connecting {
+ background-color: #B9E164;
+}
+
+.perfTimingBar.waiting,
+.timeInfoTipBar.waiting {
+ background-color: #B4A5D2;
+}
+
+.perfTimingBar.response,
+.timeInfoTipBar.response {
+ background-color: #78E17D;
+}
+
+.perfTimingBar.processing,
+.timeInfoTipBar.processing {
+ background-color: rgb(202, 206, 168);
+}
+
+.perfTimingBar.DOMContentLoaded,
+.timeInfoTipBar.DOMContentLoaded {
+ background-color: rgb(179, 184, 118);
+}
+
+.perfTimingBar.onLoad,
+.timeInfoTipBar.onLoad {
+ background-color: rgb(168, 194, 196);
+}
+
+/*************************************************************************************************/
+/* DOM Events */
+
+.perfTimingBar.event {
+ width: 1px;
+}
+
+.perfTimingEvent {
+ position: absolute;
+ width: 1px;
+ z-index: 20;
+ top: 0;
+ bottom: 0;
+}
+
+.perfTimingTable TR:first-child .perfTimingEvent {
+ top: 1px;
+}
+
+.perfTimingTable TR:last-child .perfTimingEvent {
+ bottom: 1px;
+}
+
+.perfTimingEvent.domInteractive,
+.timeInfoTipEventBar.domInteractive {
+ background-color: rgb(126, 146, 126);
+}
+
+.perfTimingEvent.domLoading,
+.timeInfoTipEventBar.domLoading {
+ background-color: rgb(155, 133, 155);
+}
+
+.perfTimingEvent.domContentLoaded,
+.timeInfoTipEventBar.domContentLoaded {
+ background-color: rgb(152, 152, 255);
+}
+
+.perfTimingEvent.onLoad,
+.timeInfoTipEventBar.onLoad {
+ background-color: rgb(255, 152, 152);
+}
+
+/*************************************************************************************************/
+/* Details */
+
+.logRow-perfTimingDetails .logGroupBody {
+ border-bottom: 1px solid #D7D7D7;
+ overflow-y: auto;
+ height: 200px;
+}
+
+.logRow-perfTimingDetails .logGroupLabel {
+ text-decoration: none !important;
+}
+
+.logRow-perfTimingDetails > .logRow {
+ background-position: 2px 3px !important;
+}
+
+.logRow-perfTimingDetails .timingCaptionDesc {
+ color: gray;
+ font-weight: normal;
+ padding-left: 10px;
+}
+
+.logRow-perfTimingDetails .timingTable {
+ margin-bottom: 4px;
+ cursor: pointer;
+}
+
+.logRow-perfTimingDetails .timingCell {
+ padding: 2px 4px 2px 4px;
+}
+
+.logRow-perfTimingDetails .timingTable tr:nth-child(even) {
+ background-color: #EFEFEF;
+}
+
+.logRow-perfTimingDetails .timingName {
+ color: green;
+ font-family: monospace;
+}
+
+.logRow-perfTimingDetails .timingRow:hover .timingName {
+ text-decoration: underline;
+}
+
+.logRow-perfTimingDetails .timingDesc {
+ color: gray
+}
+
+/*************************************************************************************************/
+/* Cursor */
+
+.perfTimingEvent.cursor {
+ background-color: gray;
+ visibility: hidden;
+ width: 2px;
+ z-index: 40;
+}
diff --git a/skin/classic/quickInfoBox.css b/skin/classic/quickInfoBox.css
index e319e7f..9f67a08 100644
--- a/skin/classic/quickInfoBox.css
+++ b/skin/classic/quickInfoBox.css
@@ -1,89 +1,89 @@
-/* See license.txt for terms of usage */
-
-/*************************************************************************************************/
-/* Quick Info Box */
-
-#fbQuickInfoPanel {
- border: 0;
- opacity: 0.9;
-}
-
-.fbQuickInfoPanelBody {
- background-color: white;
- font-family: monospace;
- font-size: 9px;
- padding: 0;
- cursor: move;
- margin: 0;
-}
-
-.fbQuickInfoTable {
- border: 1px solid threedshadow;
- width: 100%;
- padding: 4px;
-}
-
-.fbQuickInfoBoxTitle {
- font-family: Lucida Grande, Tahoma, sans-serif;
- font-size: 11px;
- font-weight: bold;
- padding-top: 8px;
- margin-bottom: 0;
-}
-
-.fbQuickInfoBoxTitle > SPAN {
- cursor: text;
-}
-
-.fbQuickInfoName, .fbQuickInfoValue {
- font-family: monospace;
- font-size: 11px;
-}
-
-.fbQuickInfoName {
- color: DarkGreen;
- margin-bottom: 0;
- -moz-margin-end: 0;
- cursor: text;
-}
-
-.fbQuickInfoValue {
- color: DarkBlue;
- margin-bottom: 0;
- -moz-margin-start: 0;
- cursor: text;
-}
-
-.fbQuickInfoPin {
- background: url(chrome://firebug-os/skin/pin.png) no-repeat;
- width: 16px;
- height: 16px;
- border: none;
- cursor: pointer;
- position: absolute;
- right: 22px;
-}
-
-.fbQuickInfoClose {
- background: url(chrome://firebug-os/skin/close.png) no-repeat;
- width: 16px;
- height: 16px;
- border: none;
- cursor: pointer;
- position: absolute;
- right: 5px;
-}
-
-.fbQuickInfoPin:hover,
-.fbQuickInfoClose:hover {
- background-position: 0 -16px;
-}
-
-.fbQuickInfoPin.pin,
-.fbQuickInfoPin:active {
- background: url(chrome://firebug-os/skin/pinned.png) no-repeat;
-}
-
-.fbQuickInfoClose:active {
- background-position: 0 -32px;
+/* See license.txt for terms of usage */
+
+/*************************************************************************************************/
+/* Quick Info Box */
+
+#fbQuickInfoPanel {
+ border: 0;
+ opacity: 0.9;
+}
+
+.fbQuickInfoPanelBody {
+ background-color: white;
+ font-family: monospace;
+ font-size: 9px;
+ padding: 0;
+ cursor: move;
+ margin: 0;
+}
+
+.fbQuickInfoTable {
+ border: 1px solid threedshadow;
+ width: 100%;
+ padding: 4px;
+}
+
+.fbQuickInfoBoxTitle {
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ padding-top: 8px;
+ margin-bottom: 0;
+}
+
+.fbQuickInfoBoxTitle > SPAN {
+ cursor: text;
+}
+
+.fbQuickInfoName, .fbQuickInfoValue {
+ font-family: monospace;
+ font-size: 11px;
+}
+
+.fbQuickInfoName {
+ color: DarkGreen;
+ margin-bottom: 0;
+ -moz-margin-end: 0;
+ cursor: text;
+}
+
+.fbQuickInfoValue {
+ color: DarkBlue;
+ margin-bottom: 0;
+ -moz-margin-start: 0;
+ cursor: text;
+}
+
+.fbQuickInfoPin {
+ background: url(chrome://firebug-os/skin/pin.png) no-repeat;
+ width: 16px;
+ height: 16px;
+ border: none;
+ cursor: pointer;
+ position: absolute;
+ right: 22px;
+}
+
+.fbQuickInfoClose {
+ background: url(chrome://firebug-os/skin/close.png) no-repeat;
+ width: 16px;
+ height: 16px;
+ border: none;
+ cursor: pointer;
+ position: absolute;
+ right: 5px;
+}
+
+.fbQuickInfoPin:hover,
+.fbQuickInfoClose:hover {
+ background-position: 0 -16px;
+}
+
+.fbQuickInfoPin.pin,
+.fbQuickInfoPin:active {
+ background: url(chrome://firebug-os/skin/pinned.png) no-repeat;
+}
+
+.fbQuickInfoClose:active {
+ background-position: 0 -32px;
}
\ No newline at end of file
diff --git a/skin/classic/selectors.css b/skin/classic/selectors.css
index ec78cb5..51dd17e 100644
--- a/skin/classic/selectors.css
+++ b/skin/classic/selectors.css
@@ -1,51 +1,51 @@
-/* See license.txt for terms of usage */
-
-.panelNode-selectors {
- overflow: hidden;
-}
-
-.selectorTrials {
- height: 100%;
-}
-
-.editorContainer {
- padding: 2px 18px;
- background-color: LightYellow;
- border-bottom: 1px solid #BEBEBE;
- color: #666666;
- line-height: 14px;
- cursor: text;
-}
-
-.selectorsPanelEditor {
- font-family: monospace !important;
-}
-
-.elementsGroups {
- position: relative;
- height: calc(100% - 18px);
- overflow-y: scroll;
-}
-
-.selectorWarning {
- font-size: 11px;
- color: gray;
- padding: 2px 1ex;
-}
-
-.selectorWarning.invalidSelector {
- color: red;
- background-color: #FFEBEB;
-}
-
-.cssElementsHeader {
- margin: 0;
-}
-
-.selectorGroupRemoveButton
-{
- position: absolute;
- right: 3px;
- top: 2px;
- cursor: auto;
+/* See license.txt for terms of usage */
+
+.panelNode-selectors {
+ overflow: hidden;
+}
+
+.selectorTrials {
+ height: 100%;
+}
+
+.editorContainer {
+ padding: 2px 18px;
+ background-color: LightYellow;
+ border-bottom: 1px solid #BEBEBE;
+ color: #666666;
+ line-height: 14px;
+ cursor: text;
+}
+
+.selectorsPanelEditor {
+ font-family: monospace !important;
+}
+
+.elementsGroups {
+ position: relative;
+ height: calc(100% - 18px);
+ overflow-y: scroll;
+}
+
+.selectorWarning {
+ font-size: 11px;
+ color: gray;
+ padding: 2px 1ex;
+}
+
+.selectorWarning.invalidSelector {
+ color: red;
+ background-color: #FFEBEB;
+}
+
+.cssElementsHeader {
+ margin: 0;
+}
+
+.selectorGroupRemoveButton
+{
+ position: absolute;
+ right: 3px;
+ top: 2px;
+ cursor: auto;
}
\ No newline at end of file
diff --git a/skin/classic/tableRep.css b/skin/classic/tableRep.css
index 719097e..657da7c 100644
--- a/skin/classic/tableRep.css
+++ b/skin/classic/tableRep.css
@@ -1,64 +1,73 @@
-/* See license.txt for terms of usage */
-
-.objectBox-table {
- font-family: monospace;
- white-space: pre-wrap;
-}
-
-/************************************************************************************************/
-/* Console Panel */
-
-.logRow-table {
- padding: 0;
-}
-
-.dataTableSizer {
- width: 100%;
- overflow-x: auto;
-}
-
-.dataTableSizer:focus {
- outline: none;
-}
-
-.dataTable {
-}
-
-/* If the table is displayed within a group the border is provided by that group. */
-.logGroup .dataTable {
- border: none;
-}
-
-.dataTable TBODY {
- overflow-x: hidden;
- overflow-y: scroll;
-}
-
-.dataTable tr:nth-child(even) {
- background-color: #EFEFEF;
-}
-
-.dataTable a {
- vertical-align:middle;
-}
-
-.dataTable td {
- padding: 1px 4px 0 4px;
-}
-
-/* The last column needs more horizontal space since part of it is overlapped by
- the vertical scroll bar */
-.dataTable td:last-child {
- padding-right: 20px;
-}
-
-.useA11y .dataTable *:focus {
- outline-offset: -2px;
-}
-
-/*****************************************************************************************/
-/* Console panel filter */
-
-.panelNode.hideType-table .logRow-table {
- display: none !important;
-}
+/* See license.txt for terms of usage */
+
+.objectBox-table {
+ font-family: monospace;
+ white-space: pre-wrap;
+}
+
+/************************************************************************************************/
+/* Console Panel */
+
+.logRow-table {
+ display: block;
+ padding: 0;
+}
+
+.logRow-table > div {
+ display: block;
+}
+
+.logRow-table > div > .logContent {
+ display: block;
+}
+
+.dataTableSizer {
+ width: 100%;
+ overflow-x: auto;
+}
+
+.dataTableSizer:focus {
+ outline: none;
+}
+
+.dataTable {
+}
+
+/* If the table is displayed within a group the border is provided by that group. */
+.logGroup .dataTable {
+ border: none;
+}
+
+.dataTable TBODY {
+ overflow-x: hidden;
+ overflow-y: scroll;
+}
+
+.dataTable tr:nth-child(even) {
+ background-color: #EFEFEF;
+}
+
+.dataTable a {
+ vertical-align:middle;
+}
+
+.dataTable td {
+ padding: 1px 4px 0 4px;
+}
+
+/* The last column needs more horizontal space since part of it is overlapped by
+ the vertical scroll bar */
+.dataTable td:last-child {
+ padding-right: 20px;
+}
+
+.useA11y .dataTable *:focus {
+ outline-offset: -2px;
+}
+
+/*****************************************************************************************/
+/* Console panel filter */
+
+.panelNode.hideType-table .logRow-table {
+ display: none !important;
+}
diff --git a/skin/classic/timeInfoTip.css b/skin/classic/timeInfoTip.css
index 3745b4c..2bbfb2a 100644
--- a/skin/classic/timeInfoTip.css
+++ b/skin/classic/timeInfoTip.css
@@ -1,58 +1,58 @@
-/* See license.txt for terms of usage */
-
-/*************************************************************************************************/
-/* Time Info tip */
-
-.timeInfoTip {
- width: 100%;
- padding: 5px;
-}
-
-.timeInfoTipStartLabel {
- padding-left: 5px;
- color: gray;
-}
-
-.timeInfoTipDesc {
- padding: 5px 10px 0px 5px;
- color: gray;
- white-space: pre-wrap;
- word-wrap: break-word;
- width: 200px;
-}
-
-.timeInfoTipBox {
- position: relative;
- height: 17px;
- border-right: 6ch solid transparent;
-}
-
-.timeInfoTipBar,
-.timeInfoTipEventBar {
- position: relative;
- display: block;
- margin: 0;
- opacity: 1;
- height: 15px;
- min-width: 2px;
-}
-
-.timeInfoTipEventBar {
- width: 1px !important;
-}
-
-.timeInfoTipCell.startTime {
- padding-right: 8px;
- padding-left: 8px;
-}
-
-.timeInfoTipCell.elapsedTime {
- text-align: right;
- padding-right: 8px;
-}
-
-.perfTimingBarLabel {
- color: black;
-}
-
-/*************************************************************************************************/
+/* See license.txt for terms of usage */
+
+/*************************************************************************************************/
+/* Time Info tip */
+
+.timeInfoTip {
+ width: 100%;
+ padding: 5px;
+}
+
+.timeInfoTipStartLabel {
+ padding-left: 5px;
+ color: gray;
+}
+
+.timeInfoTipDesc {
+ padding: 5px 10px 0px 5px;
+ color: gray;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ width: 200px;
+}
+
+.timeInfoTipBox {
+ position: relative;
+ height: 17px;
+ border-right: 6ch solid transparent;
+}
+
+.timeInfoTipBar,
+.timeInfoTipEventBar {
+ position: relative;
+ display: block;
+ margin: 0;
+ opacity: 1;
+ height: 15px;
+ min-width: 2px;
+}
+
+.timeInfoTipEventBar {
+ width: 1px !important;
+}
+
+.timeInfoTipCell.startTime {
+ padding-right: 8px;
+ padding-left: 8px;
+}
+
+.timeInfoTipCell.elapsedTime {
+ text-align: right;
+ padding-right: 8px;
+}
+
+.perfTimingBarLabel {
+ color: black;
+}
+
+/*************************************************************************************************/
diff --git a/skin/classic/warning.svg b/skin/classic/warning.svg
deleted file mode 100644
index 9736c58..0000000
--- a/skin/classic/warning.svg
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- See license.txt for terms of usage -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.1"
- width="14"
- height="14"
- id="svg2">
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1038.3622)"
- id="layer1">
- <path
- d="m 9.5089285,6.0200891 a 2.4441965,2.4441965 0 1 1 -4.8883929,0 2.4441965,2.4441965 0 1 1 4.8883929,0 z"
- transform="matrix(2.7634691,0,0,2.7634692,-12.52317,1028.7259)"
- id="path2989"
- style="fill:#ffff00;fill-opacity:1;stroke:#a0a000;stroke-width:0.17770305;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <g
- transform="translate(-9.9989433e-8,-0.20315)"
- id="g3802">
- <path
- d="m 5.3600206,1049.4025 c -2e-6,-0.3548 0.1419377,-0.6425 0.4258191,-0.8628 0.283877,-0.2202 0.6790061,-0.3305 1.1853888,-0.3305 0.4987032,0 0.9015047,0.1066 1.208406,0.3214 0.3068917,0.2142 0.4603399,0.5017 0.4603451,0.8628 -5.2e-6,0.3795 -0.1419448,0.6731 -0.4258193,0.8812 -0.283884,0.202 -0.6790131,0.303 -1.1853887,0.303 -0.5293999,0 -0.9398739,-0.098 -1.2314232,-0.2938 -0.291554,-0.1958 -0.4373298,-0.4896 -0.4373278,-0.8813 z"
- id="path3798"
- style="font-size:17.0612011px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;" />
- <path
- d="m 7.7883411,1047.3892 -1.5766821,0 c -0.038365,-0.2202 -0.084399,-0.4725 -0.1381036,-0.7572 -0.046036,-0.2845 -0.092071,-0.552 -0.1381036,-0.8025 -0.1150881,-0.645 -0.2109938,-1.3565 -0.2877157,-2.1345 -0.069055,-0.7779 -0.1035804,-1.4248 -0.1035777,-1.9409 l 0,-0.2903 c -2e-6,-0.3377 0.088231,-0.573 0.2646985,-0.7059 0.1841355,-0.1366 0.5600837,-0.2048 1.1278455,-0.2048 0.6521515,0 1.0664618,0.068 1.2429319,0.2048 0.1841332,0.1329 0.2762021,0.3454 0.276207,0.6375 l 0,0.3587 [...]
- id="path3772"
- style="font-size:17.0612011px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;" />
- </g>
- </g>
-</svg>
diff --git a/skin/classic/win/debugger.css b/skin/classic/win/debugger.css
index d59c6ab..b6d7f4f 100644
--- a/skin/classic/win/debugger.css
+++ b/skin/classic/win/debugger.css
@@ -1,33 +1,33 @@
-/* See license.txt for terms of usage */
-
-/************************************************************************************************/
-/* Breakpoint condition */
-
-/* xxxsz: Use PNG images for condition editor, because using SVGs as border images is broken
- up to Firefox 22.0. Use SVGs as soon as Firefox 23.0 is the min. supported version.
- (see issue 6607) */
-.conditionEditor {
- border-style: solid;
- border-width: 19px 25px 33px 33px;
- border-image: url(chrome://firebug/skin/win/breakpointConditionEditor.png) 19 25 33 33 fill stretch;
-}
-
-.conditionCaption {
- margin-bottom: 2px;
- font-family: Lucida Grande, sans-serif;
- font-weight: bold;
- font-size: 11px;
- color: #226679;
-}
-
-.conditionInput {
- border: 1px solid #0096C0;
- font-family: monospace;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.upsideDown {
- border-width: 28px 25px 19px 33px;
- border-image: url(chrome://firebug/skin/win/breakpointConditionEditorDown.png) 28 25 19 33 fill stretch;
+/* See license.txt for terms of usage */
+
+/************************************************************************************************/
+/* Breakpoint condition */
+
+/* xxxsz: Use PNG images for condition editor, because using SVGs as border images is broken
+ up to Firefox 22.0. Use SVGs as soon as Firefox 23.0 is the min. supported version.
+ (see issue 6607) */
+.conditionEditor {
+ border-style: solid;
+ border-width: 19px 25px 33px 33px;
+ border-image: url(chrome://firebug/skin/win/breakpointConditionEditor.png) 19 25 33 33 fill stretch;
+}
+
+.conditionCaption {
+ margin-bottom: 2px;
+ font-family: Lucida Grande, sans-serif;
+ font-weight: bold;
+ font-size: 11px;
+ color: #226679;
+}
+
+.conditionInput {
+ border: 1px solid #0096C0;
+ font-family: monospace;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.upsideDown {
+ border-width: 28px 25px 19px 33px;
+ border-image: url(chrome://firebug/skin/win/breakpointConditionEditorDown.png) 28 25 19 33 fill stretch;
}
\ No newline at end of file
diff --git a/skin/classic/win/firebug.css b/skin/classic/win/firebug.css
index aeb58a8..22dfda5 100644
--- a/skin/classic/win/firebug.css
+++ b/skin/classic/win/firebug.css
@@ -1,453 +1,453 @@
-/* See license.txt for terms of usage */
-
-/* overrides to revert personas. see http://code.google.com/p/fbug/issues/detail?id=2704 */
-#fbContentBox:-moz-lwtheme .tabs-alltabs-button,
-#fbContentBox:-moz-lwtheme .scrollbutton-up,
-#fbContentBox:-moz-lwtheme .scrollbutton-down {
- background: url("chrome://firebug/skin/tabbar/tab-bkgnd.png") repeat-x;
- -moz-border-top-colors: ThreeDShadow rgba(255,255,255,.3);
- -moz-border-left-colors: ThreeDShadow rgba(255,255,255,.3);
- -moz-border-right-colors: ThreeDShadow;
- background-color: rgba(255,255,255,.5);
-}
-
-#fbContentBox:-moz-lwtheme .tabs-alltabs-button:hover,
-#fbContentBox:-moz-lwtheme .scrollbutton-up:hover,
-#fbContentBox:-moz-lwtheme .scrollbutton-down:hover
-{
- background-image: url("chrome://firebug/skin/tabbar/tab-hover-bkgnd.png");
-}
-/* end overrides */
-
-#fbFirebugMenu {
- margin-bottom: 1px;
- opacity: 0.8;
-}
-
-
-#fbFirebugMenu:hover,
-#fbFirebugMenu[open="true"] {
- opacity: 1.0;
-}
-
-#fbFirebugMenu > .toolbarbutton-text,
-#fbFirebugMenu > .toolbarbutton-menu-dropmarker {
- display: none;
-}
-
-.toolbar-text-button,
-.toolbar-text-menubutton {
- padding: 3px 6px;
- color: #000000;
-}
-
-.toolbar-text-button[disabled="true"],
-.toolbar-text-menubutton[disabled="true"] {
- color: graytext;
-}
-
-.toolbar-text-button[checked="true"] {
- padding: 3px 6px !important;
-}
-
-.toolbar-text-button > .toolbarbutton-icon,
-.toolbar-text-menubutton > .toolbarbutton-icon {
- /*display: none;*/
-}
-
-.toolbar-text-menubutton:hover:active,
-.toolbar-text-menubutton[open="true"] {
- padding: 4px 5px 2px 7px;
-}
-
-#fbToolbox .toolbarbutton-menu-dropmarker {
- margin-left: 3px;
-}
-
-/************************************************************************************************/
-
-.toolbarbutton-iconic {
- -moz-appearance: none;
- padding: 0 !important;
- border: none !important;
- background: transparent !important;
-}
-
-.toolbarbutton-iconic > .toolbarbutton-icon {
- padding: 0;
-}
-
-#fbDebuggerButtons {
- margin-top: 1px;
-}
-
-#fbSearchButtons {
- margin-bottom: 2px;
-}
-
-#fbMinimizeButton {
- list-style-image: url(chrome://firebug/skin/win/minimize.png);
- -moz-image-region: rect(0, 16px, 16px, 0);
-}
-
-#fbMinimizeButton:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0);
-}
-
-#fbMinimizeButton:hover:active {
- -moz-image-region: rect(32px, 16px, 48px, 0);
-}
-
-#fbDetachButton {
- list-style-image: url(chrome://firebug/skin/win/detach.png);
- -moz-image-region: rect(0, 16px, 16px, 0);
-}
-
-#fbDetachButton:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0);
-}
-
-#fbDetachButton:hover:active {
- -moz-image-region: rect(32px, 16px, 48px, 0);
-}
-
-#fbCloseButton {
- list-style-image: url(chrome://firebug/skin/win/deactivate.png);
- -moz-image-region: rect(0, 16px, 16px, 0);
-}
-
-#fbCloseButton:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0);
-}
-
-#fbCloseButton:hover:active {
- -moz-image-region: rect(32px, 16px, 48px, 0);
-}
-
-#fbCommandLineHistoryButton {
- list-style-image: url(chrome://firebug/skin/win/commandHistory.png);
- -moz-image-region: rect(0, 16px, 16px, 0);
-}
-
-#fbCommandLineHistoryButton:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0);
-}
-
-#fbCommandLineHistoryButton:active,
-#fbCommandLineHistoryButton[checked="true"] {
- -moz-image-region: rect(32px, 16px, 48px, 0);
-}
-
-#fbCommandLineHistoryButton[disabled] {
- -moz-image-region: rect(48px, 16px, 64px, 0);
-}
-
-#fbToggleCommandLine {
- list-style-image: url(chrome://firebug/skin/win/up.png);
- -moz-image-region: rect(0, 16px, 16px, 0);
-}
-
-#fbToggleCommandLine:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0);
-}
-
-#fbToggleCommandLine:active {
- -moz-image-region: rect(32px, 16px, 48px, 0);
-}
-
-#fbToggleCommandEditor {
- list-style-image: url(chrome://firebug/skin/win/down.png);
- -moz-image-region: rect(0, 16px, 16px, 0);
-}
-
-#fbToggleCommandEditor:hover {
- -moz-image-region: rect(16px, 16px, 32px, 0);
-}
-
-#fbToggleCommandEditor:active {
- -moz-image-region: rect(32px, 16px, 48px, 0);
-}
-
-/************************************************************************************************/
-
-#fbCommandEditor {
- -moz-appearance: none;
- border: none;
- /*border-top: 1px solid;*/
- -moz-border-top-colors: threedshadow;
- /*padding: 2px 0 0 2px;*/
-}
-
-#fbCommandToolbar {
- border-top: 1px solid threedshadow;
-}
-
-#fbToolbar {
- padding-bottom: 1px;
- border-bottom: none;
-}
-
-/* Set proper height of window buttons (close, min, detach) */
-#fbWindowButtons.innerToolbar {
- margin-right: 4px;
- padding: 5px 0 6px 0;
-}
-
-/************************************************************************************************/
-
-.panelTabBox {
- background: linear-gradient(
- to top,
- rgba(0, 0, 0, 0.25) 1px,
- rgba(0, 0, 0, 0.15) 1px,
- rgba(0, 0, 0, 0));
- border-bottom: 1px solid threedshadow;
- padding: 0;
- overflow: hidden;
-}
-
-.panelTabs {
- -moz-box-align: end;
-}
-
-panelTab {
- margin: 1px 0 0 0;
- border: 1px solid transparent;
- border-bottom: none;
- border-radius: 4px 4px 0 0;
- padding: 4px 7px;
- font-size: 11px;
- font-weight: bold;
- color: #565656;
- direction: ltr;
-}
-
-panelTab[selected="true"] {
- border: 1px solid #A0A0A0;
- border-bottom: none;
- background: linear-gradient(
- to bottom,
- rgba(255, 255, 255, 0.7),
- rgba(255, 255, 255, 0.9) 40%,
- rgba(255, 255, 255, 0.4) 40%,
- rgba(255, 255, 255, 0.6)) no-repeat 0 0;
- color: inherit;
-}
-
-panelTab:not([selected="true"]):hover {
- border: 1px solid #C8C8C8;
- border-bottom: none;
- background: linear-gradient(
- to bottom,
- rgba(255, 255, 255, 0.2),
- rgba(255, 255, 255, 0.4) 40%,
- rgba(255, 255, 255, 0) 40%,
- rgba(255, 255, 255, 0.1)) no-repeat 0 0;
-}
-
-.panelTab-text {
- margin: 0;
-}
-
-.panelTab-text[disabled="true"] {
- color: gray;
-}
-
-panelTab[selected="true"] > panelTabMenu {
- margin-left: 3px;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.panelOptionsButton {
- -moz-appearance: none;
- border: none;
-}
-
-.panelOptionsButton,
-.panelOptionsButton:hover:active,
-.panelOptionsButton[open="true"] {
- margin: 2px;
- padding: 0 6px;
-}
-
-.panelOptionsButton:hover {
- cursor: pointer;
-}
-
-.panelOptionsButton:hover > .toolbarbutton-text {
- color: blue;
- text-decoration: underline;
-}
-
-.panelOptionsButton[open="true"] > .toolbarbutton-text {
- color: red;
- text-decoration: underline;
-}
-
-.panelOptionsButton[disabled="true"] > .toolbarbutton-text {
- color: graytext;
- text-decoration: none;
-}
-
-/************************************************************************************************/
-
-#fbPanelStatus {
- margin: 0 5px 0 0;
- overflow: hidden;
-}
-
-.panelStatusSeparator {
- margin: 0;
- color: graytext;
-}
-
-.panelStatusLabel {
- cursor: pointer;
- margin: 0;
- padding: 0 4px;
- color: #000000;
-}
-
-.panelStatusLabel > .toolbarbutton-icon {
- margin: 0 !important;
-}
-
-.panelStatusLabel:hover {
- color: blue;
-}
-
-.panelStatusLabel[selected="true"] {
- font-weight: bold;
-}
-
-/************************************************************************************************/
-/* Location list */
-
-.menuHeader {
- margin: 2px 6px;
- font-weight: bold;
-}
-
-
-/************************************************************************************************/
-/* Scrollable TabBar + TabList */
-
-panelBarArrowscrollbox > .scrollbutton-up,
-panelBarArrowscrollbox > .scrollbutton-down,
-panelBarTabList > .fb-tabs-alltabs-button {
- margin: 0 !important;
-}
-
-#fbPanelBar1-tabBox > panelBarArrowscrollbox > .scrollbutton-up
-{
- border-left: 1px solid ThreeDShadow !important;
- border-top-left-radius: 2px !important;
-}
-
-#fbPanelBar1-tabBox > panelBarArrowscrollbox > .scrollbutton-down
-{
- border-right: 1px solid ThreeDShadow !important;
- border-top-right-radius: 2px !important;
-}
-
-#fbPanelBar1-tabBox > panelBarArrowscrollbox {
- margin-right: 4px;
-}
-
-#fbPanelBar2-tabBox > panelBarArrowscrollbox > .scrollbutton-up,
-#fbPanelBar2-tabBox > panelBarArrowscrollbox > .scrollbutton-down,
-#fbPanelBar2-tabBox > panelBarTabList > .fb-tabs-alltabs-button {
- border-top: none !important;
- border-radius: 0px !important;
-}
-
-#fbPanelBar1-buttons {
- margin: 0 4px 0 4px;
-}
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-.fb-tabs-alltabs-button {
- /*list-style-image: url("chrome://firebug/skin/tabbar/alltabs-box-bkgnd-icon.png");*/
- -moz-border-start: 2px solid;
- -moz-border-left-colors: rgba(0,0,0,0.25) rgba(255,255,255,0.15);
- -moz-border-right-colors: rgba(0,0,0,0.25) rgba(255,255,255,0.15);
- margin: 0;
- padding-left: 0;
- padding-right: 0;
-
- border-right: 1px solid ThreeDShadow !important;
- border-top-right-radius: 2px !important;
-}
-
-.fb-tabs-alltabs-button > .toolbarbutton-text {
- display: none;
-}
-
-/* Tab scrollbox arrow and all-tabs buttons */
-panelBarArrowscrollbox > .scrollbutton-up,
-panelBarArrowscrollbox > .scrollbutton-down,
-.fb-tabs-alltabs-button {
- -moz-appearance: none;
- width: 18px;
- margin: 3px 0px 4px;
- padding: 0px;
- border: 2px solid;
- border-right-width: 1px;
- border-bottom: none;
- -moz-border-top-colors: ThreeDShadow rgba(255,255,255,.3);
- -moz-border-right-colors: ThreeDShadow;
- -moz-border-left-colors: ThreeDShadow rgba(255,255,255,.3);
- background: url("chrome://firebug/skin/tabbar/tab-bkgnd.png") repeat-x;
-}
-
-panelBarArrowscrollbox > .scrollbutton-up:not([disabled="true"]):hover,
-panelBarArrowscrollbox > .scrollbutton-down:not([disabled="true"]):hover,
-.fb-tabs-alltabs-button:hover {
- border-top-width: 1px;
- padding-top: 1px;
- -moz-border-top-colors: ThreeDShadow;
- -moz-border-right-colors: ThreeDShadow;
- -moz-border-left-colors: ThreeDShadow transparent;
- background-image: url("chrome://firebug/skin/tabbar/tab-hover-bkgnd.png");
-}
-
-panelBarArrowscrollbox > .scrollbutton-up[disabled="true"],
-panelBarArrowscrollbox > .scrollbutton-down[disabled="true"] {
- opacity: 0.4;
-}
-
-panelBarArrowscrollbox > .scrollbutton-up {
- border-left-style: none;
- border-top-right-radius: 2px;
-}
-
-panelBarArrowscrollbox > .scrollbutton-up:-moz-locale-dir(rtl) {
- border-left-style: solid;
- border-right-style: none;
- border-top-left-radius: 2px;
- border-top-right-radius: 0px;
-}
-
-panelBarArrowscrollbox > .scrollbutton-down,
-.fb-tabs-alltabs-button {
- border-right-style: none;
- border-top-left-radius: 2px;
-}
-
-panelBarArrowscrollbox > .scrollbutton-down:-moz-locale-dir(rtl) {
- border-left-style: none;
- border-right-style: solid;
- border-top-left-radius: 0px;
- border-top-right-radius: 2px;
-}
-
-.fb-tabs-alltabs-button > .toolbarbutton-text,
-.fb-tabs-alltabs-button > .toolbarbutton-icon {
- display: none;
-}
-
-.fb-tabs-alltabs-button > .toolbarbutton-menu-dropmarker {
- margin: 2px 1px 2px 0px;
-}
+/* See license.txt for terms of usage */
+
+/* overrides to revert personas. see http://code.google.com/p/fbug/issues/detail?id=2704 */
+#fbContentBox:-moz-lwtheme .tabs-alltabs-button,
+#fbContentBox:-moz-lwtheme .scrollbutton-up,
+#fbContentBox:-moz-lwtheme .scrollbutton-down {
+ background: url("chrome://firebug/skin/tabbar/tab-bkgnd.png") repeat-x;
+ -moz-border-top-colors: ThreeDShadow rgba(255,255,255,.3);
+ -moz-border-left-colors: ThreeDShadow rgba(255,255,255,.3);
+ -moz-border-right-colors: ThreeDShadow;
+ background-color: rgba(255,255,255,.5);
+}
+
+#fbContentBox:-moz-lwtheme .tabs-alltabs-button:hover,
+#fbContentBox:-moz-lwtheme .scrollbutton-up:hover,
+#fbContentBox:-moz-lwtheme .scrollbutton-down:hover
+{
+ background-image: url("chrome://firebug/skin/tabbar/tab-hover-bkgnd.png");
+}
+/* end overrides */
+
+#fbFirebugMenu {
+ margin-bottom: 1px;
+ opacity: 0.8;
+}
+
+
+#fbFirebugMenu:hover,
+#fbFirebugMenu[open="true"] {
+ opacity: 1.0;
+}
+
+#fbFirebugMenu > .toolbarbutton-text,
+#fbFirebugMenu > .toolbarbutton-menu-dropmarker {
+ display: none;
+}
+
+.toolbar-text-button,
+.toolbar-text-menubutton {
+ padding: 3px 6px;
+ color: #000000;
+}
+
+.toolbar-text-button[disabled="true"],
+.toolbar-text-menubutton[disabled="true"] {
+ color: graytext;
+}
+
+.toolbar-text-button[checked="true"] {
+ padding: 3px 6px !important;
+}
+
+.toolbar-text-button > .toolbarbutton-icon,
+.toolbar-text-menubutton > .toolbarbutton-icon {
+ /*display: none;*/
+}
+
+.toolbar-text-menubutton:hover:active,
+.toolbar-text-menubutton[open="true"] {
+ padding: 4px 5px 2px 7px;
+}
+
+#fbToolbox .toolbarbutton-menu-dropmarker {
+ margin-left: 3px;
+}
+
+/************************************************************************************************/
+
+.toolbarbutton-iconic {
+ -moz-appearance: none;
+ padding: 0 !important;
+ border: none !important;
+ background: transparent !important;
+}
+
+.toolbarbutton-iconic > .toolbarbutton-icon {
+ padding: 0;
+}
+
+#fbDebuggerButtons {
+ margin-top: 1px;
+}
+
+#fbSearchButtons {
+ margin-bottom: 2px;
+}
+
+#fbMinimizeButton {
+ list-style-image: url(chrome://firebug/skin/win/minimize.png);
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#fbMinimizeButton:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0);
+}
+
+#fbMinimizeButton:hover:active {
+ -moz-image-region: rect(32px, 16px, 48px, 0);
+}
+
+#fbDetachButton {
+ list-style-image: url(chrome://firebug/skin/win/detach.png);
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#fbDetachButton:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0);
+}
+
+#fbDetachButton:hover:active {
+ -moz-image-region: rect(32px, 16px, 48px, 0);
+}
+
+#fbCloseButton {
+ list-style-image: url(chrome://firebug/skin/win/deactivate.png);
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#fbCloseButton:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0);
+}
+
+#fbCloseButton:hover:active {
+ -moz-image-region: rect(32px, 16px, 48px, 0);
+}
+
+#fbCommandLineHistoryButton {
+ list-style-image: url(chrome://firebug/skin/win/commandHistory.png);
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#fbCommandLineHistoryButton:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0);
+}
+
+#fbCommandLineHistoryButton:active,
+#fbCommandLineHistoryButton[checked="true"] {
+ -moz-image-region: rect(32px, 16px, 48px, 0);
+}
+
+#fbCommandLineHistoryButton[disabled] {
+ -moz-image-region: rect(48px, 16px, 64px, 0);
+}
+
+#fbToggleCommandLine {
+ list-style-image: url(chrome://firebug/skin/win/up.png);
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#fbToggleCommandLine:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0);
+}
+
+#fbToggleCommandLine:active {
+ -moz-image-region: rect(32px, 16px, 48px, 0);
+}
+
+#fbToggleCommandEditor {
+ list-style-image: url(chrome://firebug/skin/win/down.png);
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+#fbToggleCommandEditor:hover {
+ -moz-image-region: rect(16px, 16px, 32px, 0);
+}
+
+#fbToggleCommandEditor:active {
+ -moz-image-region: rect(32px, 16px, 48px, 0);
+}
+
+/************************************************************************************************/
+
+#fbCommandEditor {
+ -moz-appearance: none;
+ border: none;
+ /*border-top: 1px solid;*/
+ -moz-border-top-colors: threedshadow;
+ /*padding: 2px 0 0 2px;*/
+}
+
+#fbCommandToolbar {
+ border-top: 1px solid threedshadow;
+}
+
+#fbToolbar {
+ padding-bottom: 1px;
+ border-bottom: none;
+}
+
+/* Set proper height of window buttons (close, min, detach) */
+#fbWindowButtons.innerToolbar {
+ margin-right: 4px;
+ padding: 5px 0 6px 0;
+}
+
+/************************************************************************************************/
+
+.panelTabBox {
+ background: linear-gradient(
+ to top,
+ rgba(0, 0, 0, 0.25) 1px,
+ rgba(0, 0, 0, 0.15) 1px,
+ rgba(0, 0, 0, 0));
+ border-bottom: 1px solid threedshadow;
+ padding: 0;
+ overflow: hidden;
+}
+
+.panelTabs {
+ -moz-box-align: end;
+}
+
+panelTab {
+ margin: 1px 0 0 0;
+ border: 1px solid transparent;
+ border-bottom: none;
+ border-radius: 4px 4px 0 0;
+ padding: 4px 7px;
+ font-size: 11px;
+ font-weight: bold;
+ color: #565656;
+ direction: ltr;
+}
+
+panelTab[selected="true"] {
+ border: 1px solid #A0A0A0;
+ border-bottom: none;
+ background: linear-gradient(
+ to bottom,
+ rgba(255, 255, 255, 0.7),
+ rgba(255, 255, 255, 0.9) 40%,
+ rgba(255, 255, 255, 0.4) 40%,
+ rgba(255, 255, 255, 0.6)) no-repeat 0 0;
+ color: inherit;
+}
+
+panelTab:not([selected="true"]):hover {
+ border: 1px solid #C8C8C8;
+ border-bottom: none;
+ background: linear-gradient(
+ to bottom,
+ rgba(255, 255, 255, 0.2),
+ rgba(255, 255, 255, 0.4) 40%,
+ rgba(255, 255, 255, 0) 40%,
+ rgba(255, 255, 255, 0.1)) no-repeat 0 0;
+}
+
+.panelTab-text {
+ margin: 0;
+}
+
+.panelTab-text[disabled="true"] {
+ color: gray;
+}
+
+panelTab[selected="true"] > panelTabMenu {
+ margin-left: 3px;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.panelOptionsButton {
+ -moz-appearance: none;
+ border: none;
+}
+
+.panelOptionsButton,
+.panelOptionsButton:hover:active,
+.panelOptionsButton[open="true"] {
+ margin: 2px;
+ padding: 0 6px;
+}
+
+.panelOptionsButton:hover {
+ cursor: pointer;
+}
+
+.panelOptionsButton:hover > .toolbarbutton-text {
+ color: blue;
+ text-decoration: underline;
+}
+
+.panelOptionsButton[open="true"] > .toolbarbutton-text {
+ color: red;
+ text-decoration: underline;
+}
+
+.panelOptionsButton[disabled="true"] > .toolbarbutton-text {
+ color: graytext;
+ text-decoration: none;
+}
+
+/************************************************************************************************/
+
+#fbPanelStatus {
+ margin: 0 5px 0 0;
+ overflow: hidden;
+}
+
+.panelStatusSeparator {
+ margin: 0;
+ color: graytext;
+}
+
+.panelStatusLabel {
+ cursor: pointer;
+ margin: 0;
+ padding: 0 4px;
+ color: #000000;
+}
+
+.panelStatusLabel > .toolbarbutton-icon {
+ margin: 0 !important;
+}
+
+.panelStatusLabel:hover {
+ color: blue;
+}
+
+.panelStatusLabel[selected="true"] {
+ font-weight: bold;
+}
+
+/************************************************************************************************/
+/* Location list */
+
+.menuHeader {
+ margin: 2px 6px;
+ font-weight: bold;
+}
+
+
+/************************************************************************************************/
+/* Scrollable TabBar + TabList */
+
+panelBarArrowscrollbox > .scrollbutton-up,
+panelBarArrowscrollbox > .scrollbutton-down,
+panelBarTabList > .fb-tabs-alltabs-button {
+ margin: 0 !important;
+}
+
+#fbPanelBar1-tabBox > panelBarArrowscrollbox > .scrollbutton-up
+{
+ border-left: 1px solid ThreeDShadow !important;
+ border-top-left-radius: 2px !important;
+}
+
+#fbPanelBar1-tabBox > panelBarArrowscrollbox > .scrollbutton-down
+{
+ border-right: 1px solid ThreeDShadow !important;
+ border-top-right-radius: 2px !important;
+}
+
+#fbPanelBar1-tabBox > panelBarArrowscrollbox {
+ margin-right: 4px;
+}
+
+#fbPanelBar2-tabBox > panelBarArrowscrollbox > .scrollbutton-up,
+#fbPanelBar2-tabBox > panelBarArrowscrollbox > .scrollbutton-down,
+#fbPanelBar2-tabBox > panelBarTabList > .fb-tabs-alltabs-button {
+ border-top: none !important;
+ border-radius: 0px !important;
+}
+
+#fbPanelBar1-buttons {
+ margin: 0 4px 0 4px;
+}
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+.fb-tabs-alltabs-button {
+ /*list-style-image: url("chrome://firebug/skin/tabbar/alltabs-box-bkgnd-icon.png");*/
+ -moz-border-start: 2px solid;
+ -moz-border-left-colors: rgba(0,0,0,0.25) rgba(255,255,255,0.15);
+ -moz-border-right-colors: rgba(0,0,0,0.25) rgba(255,255,255,0.15);
+ margin: 0;
+ padding-left: 0;
+ padding-right: 0;
+
+ border-right: 1px solid ThreeDShadow !important;
+ border-top-right-radius: 2px !important;
+}
+
+.fb-tabs-alltabs-button > .toolbarbutton-text {
+ display: none;
+}
+
+/* Tab scrollbox arrow and all-tabs buttons */
+panelBarArrowscrollbox > .scrollbutton-up,
+panelBarArrowscrollbox > .scrollbutton-down,
+.fb-tabs-alltabs-button {
+ -moz-appearance: none;
+ width: 18px;
+ margin: 3px 0px 4px;
+ padding: 0px;
+ border: 2px solid;
+ border-right-width: 1px;
+ border-bottom: none;
+ -moz-border-top-colors: ThreeDShadow rgba(255,255,255,.3);
+ -moz-border-right-colors: ThreeDShadow;
+ -moz-border-left-colors: ThreeDShadow rgba(255,255,255,.3);
+ background: url("chrome://firebug/skin/tabbar/tab-bkgnd.png") repeat-x;
+}
+
+panelBarArrowscrollbox > .scrollbutton-up:not([disabled="true"]):hover,
+panelBarArrowscrollbox > .scrollbutton-down:not([disabled="true"]):hover,
+.fb-tabs-alltabs-button:hover {
+ border-top-width: 1px;
+ padding-top: 1px;
+ -moz-border-top-colors: ThreeDShadow;
+ -moz-border-right-colors: ThreeDShadow;
+ -moz-border-left-colors: ThreeDShadow transparent;
+ background-image: url("chrome://firebug/skin/tabbar/tab-hover-bkgnd.png");
+}
+
+panelBarArrowscrollbox > .scrollbutton-up[disabled="true"],
+panelBarArrowscrollbox > .scrollbutton-down[disabled="true"] {
+ opacity: 0.4;
+}
+
+panelBarArrowscrollbox > .scrollbutton-up {
+ border-left-style: none;
+ border-top-right-radius: 2px;
+}
+
+panelBarArrowscrollbox > .scrollbutton-up:-moz-locale-dir(rtl) {
+ border-left-style: solid;
+ border-right-style: none;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0px;
+}
+
+panelBarArrowscrollbox > .scrollbutton-down,
+.fb-tabs-alltabs-button {
+ border-right-style: none;
+ border-top-left-radius: 2px;
+}
+
+panelBarArrowscrollbox > .scrollbutton-down:-moz-locale-dir(rtl) {
+ border-left-style: none;
+ border-right-style: solid;
+ border-top-left-radius: 0px;
+ border-top-right-radius: 2px;
+}
+
+.fb-tabs-alltabs-button > .toolbarbutton-text,
+.fb-tabs-alltabs-button > .toolbarbutton-icon {
+ display: none;
+}
+
+.fb-tabs-alltabs-button > .toolbarbutton-menu-dropmarker {
+ margin: 2px 1px 2px 0px;
+}
diff --git a/skin/classic/win/left.svg b/skin/classic/win/left.svg
deleted file mode 100644
index 9b36cb6..0000000
--- a/skin/classic/win/left.svg
+++ /dev/null
@@ -1,166 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- See license.txt for terms of usage -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.1"
- width="16"
- height="16"
- id="svg2">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3786">
- <stop
- id="stop3788"
- style="stop-color:#f2451d;stop-opacity:1"
- offset="0" />
- <stop
- id="stop3794"
- style="stop-color:#f01428;stop-opacity:0.80000001"
- offset="0.10147162" />
- <stop
- id="stop3796"
- style="stop-color:#de8493;stop-opacity:1"
- offset="0.89664072" />
- <stop
- id="stop3790"
- style="stop-color:#efc3cc;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient3770">
- <stop
- id="stop3772"
- style="stop-color:#520e0d;stop-opacity:1"
- offset="0" />
- <stop
- id="stop3774"
- style="stop-color:#c4181d;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="7.2311687"
- y1="1051.3232"
- x2="7.2311687"
- y2="1037.4011"
- id="linearGradient3776"
- xlink:href="#linearGradient3770"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="8.7688313"
- y1="1049.931"
- x2="8.7688313"
- y2="1038.6682"
- id="linearGradient3792"
- xlink:href="#linearGradient3786"
- gradientUnits="userSpaceOnUse" />
- <filter
- x="-0.23999999"
- y="-0.23999999"
- width="1.48"
- height="1.48"
- color-interpolation-filters="sRGB"
- id="filter3841">
- <feGaussianBlur
- id="feGaussianBlur3843"
- stdDeviation="0.7125" />
- </filter>
- <filter
- x="-0.23999999"
- y="-0.23999999"
- width="1.48"
- height="1.48"
- color-interpolation-filters="sRGB"
- id="filter3901">
- <feGaussianBlur
- id="feGaussianBlur3903"
- stdDeviation="0.8" />
- </filter>
- <filter
- x="-0.19499999"
- y="-0.31200001"
- width="1.39"
- height="1.624"
- color-interpolation-filters="sRGB"
- id="filter3963">
- <feGaussianBlur
- id="feGaussianBlur3965"
- stdDeviation="0.65" />
- </filter>
- <linearGradient
- x1="8.7688313"
- y1="1049.931"
- x2="8.7688313"
- y2="1038.6682"
- id="linearGradient3017"
- xlink:href="#linearGradient3786"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0,-1036.3622)" />
- <linearGradient
- x1="7.2311687"
- y1="1051.3232"
- x2="7.2311687"
- y2="1037.4011"
- id="linearGradient3019"
- xlink:href="#linearGradient3770"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0,-1036.3622)" />
- <filter
- x="-0.15000001"
- y="-0.60000002"
- width="1.3"
- height="2.2"
- color-interpolation-filters="sRGB"
- id="filter3820">
- <feGaussianBlur
- stdDeviation="0.5"
- id="feGaussianBlur3822" />
- </filter>
- <filter
- x="-0.19499999"
- y="-0.31200001"
- width="1.39"
- height="1.624"
- color-interpolation-filters="sRGB"
- id="filter3845">
- <feGaussianBlur
- id="feGaussianBlur3847"
- stdDeviation="0.65" />
- </filter>
- </defs>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <rect
- width="13"
- height="13"
- rx="2"
- ry="2"
- x="1.5"
- y="1.4999826"
- id="rect3768"
- style="fill:url(#linearGradient3017);fill-opacity:1;stroke:url(#linearGradient3019);stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="M 4.5,7 6.5,9.5 8.5000004,12 10.5,9.5 12.5,7 8.5000004,7 4.5,7 z M 6.5,8 8.5000004,8 10.5,8 9.5,9.25 8.5000004,10.5 7.5,9.25 6.5,8 z"
- transform="matrix(0,1,-1,0,17.5,0.50000006)"
- id="path3806-4"
- style="opacity:0.4;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter3845)" />
- <path
- d="M 10,4 7.5,6 5,8 7.5,10 10,12 10,8 10,4 z M 9,6 9,8 9,10 7.75,9 6.5,8 7.75,7 9,6 z"
- id="path3806"
- style="fill:#ffffff;fill-opacity:1;stroke:none" />
-</svg>
diff --git a/skin/classic/win/panel.css b/skin/classic/win/panel.css
index 6bd2fa8..3e23a39 100644
--- a/skin/classic/win/panel.css
+++ b/skin/classic/win/panel.css
@@ -1,69 +1,69 @@
-/* See license.txt for terms of usage */
-
-/************************************************************************************************/
-/* Twisties */
-
-.twisty,
-.foldableGroup > .groupHeader > .twisty,
-.logRow-errorMessage .hasTwisty > .errorTitle,
-.logRow-log .objectBox-array.hasTwisty,
-.logRow-spy .spyHead .spyTitle,
-.logGroup > .logRow,
-.memberRow.hasChildren > .memberLabelCell > .memberLabel,
-.memberRow.cropped > .memberLabelCell > .memberLabel,
-.hasHeaders .netHrefLabel,
-.objectBox-stackFrame.hasTwisty,
-.objectBox-functionCall.hasTwisty,
-.netPageRow > .netCol > .netPageTitle,
-.cssComputedHeader > .twisty,
-.breakpointHeader > .twisty,
-.computedStyle.hasSelectors > .stylePropName,
-.cookieRow > .cookieNameCol > .cookieNameLabel {
- background-image: url(chrome://firebug/skin/win/twistyClosed.png);
- background-repeat: no-repeat;
- background-position: 2px calc(0.5em - 3px);
- min-height: 12px;
-}
-
-.foldableGroup.opened > .groupHeader > .twisty,
-.logRow-errorMessage .hasTwisty.opened > .errorTitle,
-.logRow-log .objectBox-array.hasTwisty.opened,
-.logRow-spy.opened .spyHead .spyTitle,
-.logGroup.opened > .logRow,
-.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,
-.memberRow.cropped.opened > .memberLabelCell > .memberLabel,
-.nodeBox.highlightOpen > .nodeLabel > .twisty,
-.nodeBox.open > .nodeLabel > .twisty,
-.netRow.opened > .netCol > .netHrefLabel,
-.netPageRow.opened > .netCol > .netPageTitle,
-.objectBox-stackFrame.hasTwisty.opened,
-.objectBox-functionCall.hasTwisty.opened,
-.computedStylesGroup.opened > .cssComputedHeader > .twisty,
-.breakpointBlock.opened > .breakpointHeader > .twisty,
-.computedStyle.hasSelectors.opened > .stylePropName,
-.cookieRow.opened > .cookieNameCol > .cookieNameLabel {
- background-image: url(chrome://firebug/skin/win/twistyOpen.png);
-}
-
-.hasHeaders .netHrefLabel,
-.cookieRow > .cookieNameCol > .cookieNameLabel {
- background-position: 2px 50%;
-}
-
-/************************************************************************************************/
-/* DOM panel */
-
-.closeButton {
- display: inline-block;
- width: 16px;
- height: 16px;
- background: url(chrome://firebug/skin/win/close.png) no-repeat 0 0;
-}
-
-.closeButton:hover {
- background-position: 0 -16px;
-}
-
-.closeButton:hover:active {
- background-position: 0 -32px;
-}
+/* See license.txt for terms of usage */
+
+/************************************************************************************************/
+/* Twisties */
+
+.twisty,
+.foldableGroup > .groupHeader > .twisty,
+.logRow-errorMessage .hasTwisty > .errorTitle,
+.logRow-log .objectBox-array.hasTwisty,
+.logRow-spy .spyHead .spyTitle,
+.logGroup > .logRow,
+.memberRow.hasChildren > .memberLabelCell > .memberLabel,
+.memberRow.cropped > .memberLabelCell > .memberLabel,
+.hasHeaders .netHrefLabel,
+.objectBox-stackFrame.hasTwisty,
+.objectBox-functionCall.hasTwisty,
+.netPageRow > .netCol > .netPageTitle,
+.cssComputedHeader > .twisty,
+.breakpointHeader > .twisty,
+.computedStyle.hasSelectors > .stylePropName,
+.cookieRow > .cookieNameCol > .cookieNameLabel {
+ background-image: url(chrome://firebug/skin/win/twistyClosed.png);
+ background-repeat: no-repeat;
+ background-position: 2px calc(0.5em - 3px);
+ min-height: 12px;
+}
+
+.foldableGroup.opened > .groupHeader > .twisty,
+.logRow-errorMessage .hasTwisty.opened > .errorTitle,
+.logRow-log .objectBox-array.hasTwisty.opened,
+.logRow-spy.opened .spyHead .spyTitle,
+.logGroup.opened > .logRow,
+.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,
+.memberRow.cropped.opened > .memberLabelCell > .memberLabel,
+.nodeBox.highlightOpen > .nodeLabel > .twisty,
+.nodeBox.open > .nodeLabel > .twisty,
+.netRow.opened > .netCol > .netHrefLabel,
+.netPageRow.opened > .netCol > .netPageTitle,
+.objectBox-stackFrame.hasTwisty.opened,
+.objectBox-functionCall.hasTwisty.opened,
+.computedStylesGroup.opened > .cssComputedHeader > .twisty,
+.breakpointBlock.opened > .breakpointHeader > .twisty,
+.computedStyle.hasSelectors.opened > .stylePropName,
+.cookieRow.opened > .cookieNameCol > .cookieNameLabel {
+ background-image: url(chrome://firebug/skin/win/twistyOpen.png);
+}
+
+.hasHeaders .netHrefLabel,
+.cookieRow > .cookieNameCol > .cookieNameLabel {
+ background-position: 2px 50%;
+}
+
+/************************************************************************************************/
+/* DOM panel */
+
+.closeButton {
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ background: url(chrome://firebug/skin/win/close.png) no-repeat 0 0;
+}
+
+.closeButton:hover {
+ background-position: 0 -16px;
+}
+
+.closeButton:hover:active {
+ background-position: 0 -32px;
+}
diff --git a/skin/classic/win/right.svg b/skin/classic/win/right.svg
deleted file mode 100644
index 2d7d9e2..0000000
--- a/skin/classic/win/right.svg
+++ /dev/null
@@ -1,188 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- See license.txt for terms of usage -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.1"
- width="16"
- height="16"
- id="svg2">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3786">
- <stop
- id="stop3788"
- style="stop-color:#f2451d;stop-opacity:1"
- offset="0" />
- <stop
- id="stop3794"
- style="stop-color:#f01428;stop-opacity:0.80000001"
- offset="0.10147162" />
- <stop
- id="stop3796"
- style="stop-color:#de8493;stop-opacity:1"
- offset="0.89664072" />
- <stop
- id="stop3790"
- style="stop-color:#efc3cc;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient3770">
- <stop
- id="stop3772"
- style="stop-color:#520e0d;stop-opacity:1"
- offset="0" />
- <stop
- id="stop3774"
- style="stop-color:#c4181d;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="7.2311687"
- y1="1051.3232"
- x2="7.2311687"
- y2="1037.4011"
- id="linearGradient3776"
- xlink:href="#linearGradient3770"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="8.7688313"
- y1="1049.931"
- x2="8.7688313"
- y2="1038.6682"
- id="linearGradient3792"
- xlink:href="#linearGradient3786"
- gradientUnits="userSpaceOnUse" />
- <filter
- x="-0.23999999"
- y="-0.23999999"
- width="1.48"
- height="1.48"
- color-interpolation-filters="sRGB"
- id="filter3841">
- <feGaussianBlur
- id="feGaussianBlur3843"
- stdDeviation="0.7125" />
- </filter>
- <filter
- x="-0.23999999"
- y="-0.23999999"
- width="1.48"
- height="1.48"
- color-interpolation-filters="sRGB"
- id="filter3901">
- <feGaussianBlur
- id="feGaussianBlur3903"
- stdDeviation="0.8" />
- </filter>
- <filter
- x="-0.19499999"
- y="-0.31200001"
- width="1.39"
- height="1.624"
- color-interpolation-filters="sRGB"
- id="filter3963">
- <feGaussianBlur
- id="feGaussianBlur3965"
- stdDeviation="0.65" />
- </filter>
- <linearGradient
- x1="8.7688313"
- y1="1049.931"
- x2="8.7688313"
- y2="1038.6682"
- id="linearGradient3017"
- xlink:href="#linearGradient3786"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0,-1036.3622)" />
- <linearGradient
- x1="7.2311687"
- y1="1051.3232"
- x2="7.2311687"
- y2="1037.4011"
- id="linearGradient3019"
- xlink:href="#linearGradient3770"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0,-1036.3622)" />
- <filter
- x="-0.15000001"
- y="-0.60000002"
- width="1.3"
- height="2.2"
- color-interpolation-filters="sRGB"
- id="filter3820">
- <feGaussianBlur
- stdDeviation="0.5"
- id="feGaussianBlur3822" />
- </filter>
- <filter
- x="-0.16"
- y="-0.47999999"
- width="1.3200001"
- height="1.96"
- color-interpolation-filters="sRGB"
- id="filter3791">
- <feGaussianBlur
- id="feGaussianBlur3793"
- stdDeviation="0.4" />
- </filter>
- <filter
- x="-0.19499999"
- y="-0.31200001"
- width="1.39"
- height="1.624"
- color-interpolation-filters="sRGB"
- id="filter3845">
- <feGaussianBlur
- id="feGaussianBlur3847"
- stdDeviation="0.65" />
- </filter>
- <filter
- x="-0.19499999"
- y="-0.31200001"
- width="1.39"
- height="1.624"
- color-interpolation-filters="sRGB"
- id="filter3867">
- <feGaussianBlur
- id="feGaussianBlur3869"
- stdDeviation="0.65" />
- </filter>
- </defs>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <rect
- width="13"
- height="13"
- rx="2"
- ry="2"
- x="1.5"
- y="1.4999826"
- id="rect3768"
- style="fill:url(#linearGradient3017);fill-opacity:1;stroke:url(#linearGradient3019);stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 4.5,11 2,-2.5 2,-2.5 2,2.5 2,2.5 -4,0 -4,0 z m 2,-1 2,0 2,0 -1,-1.25 -1,-1.25 -1,1.25 -1,1.25 z"
- transform="matrix(0,1,-1,0,17.5,0.50000006)"
- id="path3806-0"
- style="opacity:0.4;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter3867)" />
- <path
- d="M 6,4 8.5,6 11,8 8.5,10 6,12 6,8 6,4 z M 7,6 7,8 7,10 8.25,9 9.5,8 8.25,7 7,6 z"
- id="path3806"
- style="fill:#ffffff;fill-opacity:1;stroke:none" />
-</svg>
diff --git a/skin/classic/win/window.css b/skin/classic/win/window.css
index 144b66a..c3833ff 100644
--- a/skin/classic/win/window.css
+++ b/skin/classic/win/window.css
@@ -1,2 +1,2 @@
-/* See license.txt for terms of usage */
-
+/* See license.txt for terms of usage */
+
diff --git a/skin/classic/window.css b/skin/classic/window.css
index fdda69d..d4c4ca2 100644
--- a/skin/classic/window.css
+++ b/skin/classic/window.css
@@ -1,4 +1,4 @@
-/* See license.txt for terms of usage */
-
- at import "chrome://firebug-os/skin/window.css";
-
+/* See license.txt for terms of usage */
+
+ at import "chrome://firebug-os/skin/window.css";
+
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/firebug.git
More information about the Pkg-mozext-commits
mailing list